@bitgo/sdk-coin-celo 1.14.3 → 2.0.0
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.
- package/CHANGELOG.md +15 -0
- package/dist/src/index.js +6 -2
- package/dist/src/lib/index.js +6 -2
- package/dist/src/lib/stakingBuilder.js +20 -16
- package/dist/src/lib/transaction.js +6 -2
- package/dist/src/lib/transactionBuilder.js +3 -3
- package/dist/src/lib/types.js +43 -43
- package/dist/src/lib/utils.js +7 -3
- package/package.json +9 -10
- package/LICENSE +0 -191
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,21 @@
|
|
|
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.0.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-celo@1.14.4...@bitgo/sdk-coin-celo@2.0.0) (2024-03-28)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
- **root:** deprecate node 16 ([d3ec624](https://github.com/BitGo/BitGoJS/commit/d3ec6240bddae2a4ab7fa80c4a16efecc36210bd))
|
|
11
|
+
|
|
12
|
+
### BREAKING CHANGES
|
|
13
|
+
|
|
14
|
+
- **root:** Node 16 is no longer supported in bitgojs.
|
|
15
|
+
TICKET: WP-1100
|
|
16
|
+
|
|
17
|
+
## [1.14.4](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-celo@1.14.3...@bitgo/sdk-coin-celo@1.14.4) (2024-03-19)
|
|
18
|
+
|
|
19
|
+
**Note:** Version bump only for package @bitgo/sdk-coin-celo
|
|
20
|
+
|
|
6
21
|
## [1.14.3](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-celo@1.14.2...@bitgo/sdk-coin-celo@1.14.3) (2024-03-11)
|
|
7
22
|
|
|
8
23
|
**Note:** Version bump only for package @bitgo/sdk-coin-celo
|
package/dist/src/index.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -15,4 +19,4 @@ __exportStar(require("./tcelo"), exports);
|
|
|
15
19
|
__exportStar(require("./celoToken"), exports);
|
|
16
20
|
__exportStar(require("./lib"), exports);
|
|
17
21
|
__exportStar(require("./register"), exports);
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHlDQUF1QjtBQUN2QiwwQ0FBd0I7QUFDeEIsOENBQTRCO0FBQzVCLHdDQUFzQjtBQUN0Qiw2Q0FBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NlbG8nO1xuZXhwb3J0ICogZnJvbSAnLi90Y2Vsbyc7XG5leHBvcnQgKiBmcm9tICcuL2NlbG9Ub2tlbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYic7XG5leHBvcnQgKiBmcm9tICcuL3JlZ2lzdGVyJztcbiJdfQ==
|
package/dist/src/lib/index.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -31,4 +35,4 @@ var transferBuilder_1 = require("./transferBuilder");
|
|
|
31
35
|
Object.defineProperty(exports, "TransferBuilder", { enumerable: true, get: function () { return transferBuilder_1.TransferBuilder; } });
|
|
32
36
|
const Utils = __importStar(require("./utils"));
|
|
33
37
|
exports.Utils = Utils;
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQXlEO0FBQWhELHVHQUFBLE9BQU8sT0FBQTtBQUFFLHlHQUFBLFNBQVMsT0FBQTtBQUMzQiw2Q0FBNEM7QUFBbkMsMEdBQUEsV0FBVyxPQUFBO0FBQ3BCLDJEQUEwRDtBQUFqRCx3SEFBQSxrQkFBa0IsT0FBQTtBQUMzQixxREFBb0Q7QUFBM0Msa0hBQUEsZUFBZSxPQUFBO0FBRXhCLCtDQUFpQztBQUV4QixzQkFBSyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEtleVBhaXIsIEludGVyZmFjZSB9IGZyb20gJ0BiaXRnby9zZGstY29pbi1ldGgnO1xuZXhwb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmV4cG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmV4cG9ydCB7IFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdHJhbnNmZXJCdWlsZGVyJztcblxuaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCB7IFV0aWxzIH07XG4iXX0=
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -40,28 +44,28 @@ class StakingBuilder {
|
|
|
40
44
|
return this;
|
|
41
45
|
}
|
|
42
46
|
amount(value) {
|
|
43
|
-
if (!sdk_coin_eth_1.isValidAmount(value)) {
|
|
47
|
+
if (!(0, sdk_coin_eth_1.isValidAmount)(value)) {
|
|
44
48
|
throw new sdk_core_1.InvalidParameterValueError('Invalid value for stake transaction');
|
|
45
49
|
}
|
|
46
50
|
this._amount = value;
|
|
47
51
|
return this;
|
|
48
52
|
}
|
|
49
53
|
group(validatorGroup) {
|
|
50
|
-
if (!sdk_coin_eth_1.isValidEthAddress(validatorGroup)) {
|
|
54
|
+
if (!(0, sdk_coin_eth_1.isValidEthAddress)(validatorGroup)) {
|
|
51
55
|
throw new sdk_core_1.InvalidParameterValueError('Invalid validator group address');
|
|
52
56
|
}
|
|
53
57
|
this._validatorGroup = validatorGroup;
|
|
54
58
|
return this;
|
|
55
59
|
}
|
|
56
60
|
lesser(lesser) {
|
|
57
|
-
if (!sdk_coin_eth_1.isValidEthAddress(lesser)) {
|
|
61
|
+
if (!(0, sdk_coin_eth_1.isValidEthAddress)(lesser)) {
|
|
58
62
|
throw new sdk_core_1.InvalidParameterValueError('Invalid address for lesser');
|
|
59
63
|
}
|
|
60
64
|
this._lesser = lesser;
|
|
61
65
|
return this;
|
|
62
66
|
}
|
|
63
67
|
greater(greater) {
|
|
64
|
-
if (!sdk_coin_eth_1.isValidEthAddress(greater)) {
|
|
68
|
+
if (!(0, sdk_coin_eth_1.isValidEthAddress)(greater)) {
|
|
65
69
|
throw new sdk_core_1.InvalidParameterValueError('Invalid address for greater');
|
|
66
70
|
}
|
|
67
71
|
this._greater = greater;
|
|
@@ -107,7 +111,7 @@ class StakingBuilder {
|
|
|
107
111
|
* @returns {StakingCall} a lock gold operation using the LockedGold contract
|
|
108
112
|
*/
|
|
109
113
|
buildLockStaking() {
|
|
110
|
-
const operation = sdk_core_1.getOperationConfig(this._type, this._coinConfig.network.type);
|
|
114
|
+
const operation = (0, sdk_core_1.getOperationConfig)(this._type, this._coinConfig.network.type);
|
|
111
115
|
return new stakingCall_1.StakingCall(this._amount, operation.contractAddress, operation.methodId, operation.types, []);
|
|
112
116
|
}
|
|
113
117
|
/**
|
|
@@ -119,7 +123,7 @@ class StakingBuilder {
|
|
|
119
123
|
* @returns {StakingCall} an unlock gold operation using the LockedGold contract
|
|
120
124
|
*/
|
|
121
125
|
buildUnlockStaking() {
|
|
122
|
-
const operation = sdk_core_1.getOperationConfig(this._type, this._coinConfig.network.type);
|
|
126
|
+
const operation = (0, sdk_core_1.getOperationConfig)(this._type, this._coinConfig.network.type);
|
|
123
127
|
const params = [this._amount];
|
|
124
128
|
return new stakingCall_1.StakingCall('0', operation.contractAddress, operation.methodId, operation.types, params);
|
|
125
129
|
}
|
|
@@ -135,7 +139,7 @@ class StakingBuilder {
|
|
|
135
139
|
* @returns {StakingCall} an vote operation using the Election contract
|
|
136
140
|
*/
|
|
137
141
|
buildVoteStaking() {
|
|
138
|
-
const operation = sdk_core_1.getOperationConfig(this._type, this._coinConfig.network.type);
|
|
142
|
+
const operation = (0, sdk_core_1.getOperationConfig)(this._type, this._coinConfig.network.type);
|
|
139
143
|
const params = [this._validatorGroup, this._amount, this._lesser, this._greater];
|
|
140
144
|
return new stakingCall_1.StakingCall('0', operation.contractAddress, operation.methodId, operation.types, params);
|
|
141
145
|
}
|
|
@@ -152,7 +156,7 @@ class StakingBuilder {
|
|
|
152
156
|
* @returns {StakingCall} an vote operation using the Election contract
|
|
153
157
|
*/
|
|
154
158
|
buildUnvoteStaking() {
|
|
155
|
-
const operation = sdk_core_1.getOperationConfig(this._type, this._coinConfig.network.type);
|
|
159
|
+
const operation = (0, sdk_core_1.getOperationConfig)(this._type, this._coinConfig.network.type);
|
|
156
160
|
const params = [this._validatorGroup, this._amount, this._lesser, this._greater, this._index.toString()];
|
|
157
161
|
return new stakingCall_1.StakingCall('0', operation.contractAddress, operation.methodId, operation.types, params);
|
|
158
162
|
}
|
|
@@ -166,7 +170,7 @@ class StakingBuilder {
|
|
|
166
170
|
* @returns {StakingCall} an activate votes operation
|
|
167
171
|
*/
|
|
168
172
|
buildActivateStaking() {
|
|
169
|
-
const operation = sdk_core_1.getOperationConfig(this._type, this._coinConfig.network.type);
|
|
173
|
+
const operation = (0, sdk_core_1.getOperationConfig)(this._type, this._coinConfig.network.type);
|
|
170
174
|
const params = [this._validatorGroup];
|
|
171
175
|
return new stakingCall_1.StakingCall('0', operation.contractAddress, operation.methodId, operation.types, params);
|
|
172
176
|
}
|
|
@@ -180,7 +184,7 @@ class StakingBuilder {
|
|
|
180
184
|
* @returns {StakingCall} an activate votes operation
|
|
181
185
|
*/
|
|
182
186
|
buildWithdrawStaking() {
|
|
183
|
-
const operation = sdk_core_1.getOperationConfig(this._type, this._coinConfig.network.type);
|
|
187
|
+
const operation = (0, sdk_core_1.getOperationConfig)(this._type, this._coinConfig.network.type);
|
|
184
188
|
const params = [this._index.toString()];
|
|
185
189
|
return new stakingCall_1.StakingCall('0', operation.contractAddress, operation.methodId, operation.types, params);
|
|
186
190
|
}
|
|
@@ -221,8 +225,8 @@ class StakingBuilder {
|
|
|
221
225
|
// region Deserialization methods
|
|
222
226
|
decodeStakingData(data) {
|
|
223
227
|
this.classifyStakingType(data);
|
|
224
|
-
const operation = sdk_core_1.getOperationConfig(this._type, this._coinConfig.network.type);
|
|
225
|
-
const decoded = sdk_coin_eth_1.getRawDecoded(operation.types, sdk_coin_eth_1.getBufferedByteCode(operation.methodId, data));
|
|
228
|
+
const operation = (0, sdk_core_1.getOperationConfig)(this._type, this._coinConfig.network.type);
|
|
229
|
+
const decoded = (0, sdk_coin_eth_1.getRawDecoded)(operation.types, (0, sdk_coin_eth_1.getBufferedByteCode)(operation.methodId, data));
|
|
226
230
|
switch (this._type) {
|
|
227
231
|
case sdk_core_1.StakingOperationTypes.VOTE:
|
|
228
232
|
this.validateDecodedDataLength(decoded.length, 4, data);
|
|
@@ -239,7 +243,7 @@ class StakingBuilder {
|
|
|
239
243
|
this._amount = ethUtil.bufferToHex(amountUnvote);
|
|
240
244
|
this._lesser = ethUtil.addHexPrefix(lesserUnvote);
|
|
241
245
|
this._greater = ethUtil.addHexPrefix(greaterUnvote);
|
|
242
|
-
this._index = sdk_coin_eth_1.hexStringToNumber(ethUtil.bufferToHex(indexUnvote));
|
|
246
|
+
this._index = (0, sdk_coin_eth_1.hexStringToNumber)(ethUtil.bufferToHex(indexUnvote));
|
|
243
247
|
break;
|
|
244
248
|
case sdk_core_1.StakingOperationTypes.ACTIVATE:
|
|
245
249
|
this.validateDecodedDataLength(decoded.length, 1, data);
|
|
@@ -256,7 +260,7 @@ class StakingBuilder {
|
|
|
256
260
|
case sdk_core_1.StakingOperationTypes.WITHDRAW:
|
|
257
261
|
this.validateDecodedDataLength(decoded.length, 1, data);
|
|
258
262
|
const [index] = decoded;
|
|
259
|
-
this._index = sdk_coin_eth_1.hexStringToNumber(ethUtil.bufferToHex(index));
|
|
263
|
+
this._index = (0, sdk_coin_eth_1.hexStringToNumber)(ethUtil.bufferToHex(index));
|
|
260
264
|
break;
|
|
261
265
|
default:
|
|
262
266
|
throw new sdk_core_1.BuildTransactionError(`Invalid staking data: ${this._type}`);
|
|
@@ -289,4 +293,4 @@ class StakingBuilder {
|
|
|
289
293
|
}
|
|
290
294
|
}
|
|
291
295
|
exports.StakingBuilder = StakingBuilder;
|
|
292
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ0J1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3N0YWtpbmdCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5REFBMkM7QUFFM0Msc0RBTTZCO0FBQzdCLDhDQVd5QjtBQUN6QiwrQ0FBNEM7QUFFNUMsTUFBYSxjQUFjO0lBVXpCLFlBQVksVUFBZ0MsRUFBRSxjQUF1QjtRQVRwRCxvQkFBZSxHQUFHLDRDQUE0QyxDQUFDO1FBR3hFLFlBQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQy9CLGFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBTXRDLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBQzlCLElBQUksY0FBYyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUN4QztJQUNILENBQUM7SUFFRCw0QkFBNEI7SUFFNUIsSUFBSSxDQUFDLElBQTJCO1FBQzlCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFhO1FBQ2xCLElBQUksQ0FBQyw0QkFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3pCLE1BQU0sSUFBSSxxQ0FBMEIsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1NBQzdFO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQXNCO1FBQzFCLElBQUksQ0FBQyxnQ0FBaUIsQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUN0QyxNQUFNLElBQUkscUNBQTBCLENBQUMsaUNBQWlDLENBQUMsQ0FBQztTQUN6RTtRQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsY0FBYyxDQUFDO1FBQ3RDLE9B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QyxVQUFVLENBQUMsdUJBQVksQ0FBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsZ0NBQXFCLENBQUMsSUFBSSxDQUFDO1NBQ3pDO2FBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLHlCQUFjLENBQUMsRUFBRTtZQUMxQyxJQUFJLENBQUMsS0FBSyxHQUFHLGdDQUFxQixDQUFDLE1BQU0sQ0FBQztTQUMzQzthQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQywyQkFBZ0IsQ0FBQyxFQUFFO1lBQzVDLElBQUksQ0FBQyxLQUFLLEdBQUcsZ0NBQXFCLENBQUMsUUFBUSxDQUFDO1NBQzdDO2FBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLHlCQUFjLENBQUMsRUFBRTtZQUMxQyxJQUFJLENBQUMsS0FBSyxHQUFHLGdDQUFxQixDQUFDLE1BQU0sQ0FBQztTQUMzQzthQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQywyQkFBZ0IsQ0FBQyxFQUFFO1lBQzVDLElBQUksQ0FBQyxLQUFLLEdBQUcsZ0NBQXFCLENBQUMsUUFBUSxDQUFDO1NBQzdDO2FBQU07WUFDTCxNQUFNLElBQUksZ0NBQXFCLENBQUMsNkJBQTZCLElBQUksRUFBRSxDQUFDLENBQUM7U0FDdEU7SUFDSCxDQUFDO0NBR0Y7QUF2U0Qsd0NBdVNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZXRoVXRpbCBmcm9tICdldGhlcmV1bWpzLXV0aWwnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7XG4gIGlzVmFsaWRBbW91bnQsXG4gIGlzVmFsaWRFdGhBZGRyZXNzLFxuICBnZXRSYXdEZWNvZGVkLFxuICBnZXRCdWZmZXJlZEJ5dGVDb2RlLFxuICBoZXhTdHJpbmdUb051bWJlcixcbn0gZnJvbSAnQGJpdGdvL3Nkay1jb2luLWV0aCc7XG5pbXBvcnQge1xuICBBY3RpdmF0ZU1ldGhvZElkLFxuICBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsXG4gIGdldE9wZXJhdGlvbkNvbmZpZyxcbiAgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IsXG4gIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICBTdGFraW5nT3BlcmF0aW9uVHlwZXMsXG4gIFVubG9ja01ldGhvZElkLFxuICBVbnZvdGVNZXRob2RJZCxcbiAgVm90ZU1ldGhvZElkLFxuICBXaXRoZHJhd01ldGhvZElkLFxufSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgU3Rha2luZ0NhbGwgfSBmcm9tICcuL3N0YWtpbmdDYWxsJztcblxuZXhwb3J0IGNsYXNzIFN0YWtpbmdCdWlsZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0FERFJFU1MgPSAnMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJztcbiAgcHJpdmF0ZSBfYW1vdW50OiBzdHJpbmc7XG4gIHByaXZhdGUgX3ZhbGlkYXRvckdyb3VwOiBzdHJpbmc7XG4gIHByaXZhdGUgX2xlc3NlciA9IHRoaXMuREVGQVVMVF9BRERSRVNTO1xuICBwcml2YXRlIF9ncmVhdGVyID0gdGhpcy5ERUZBVUxUX0FERFJFU1M7XG4gIHByaXZhdGUgX2luZGV4OiBudW1iZXI7XG4gIHByaXZhdGUgX3R5cGU6IFN0YWtpbmdPcGVyYXRpb25UeXBlcztcbiAgcHJpdmF0ZSBfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz47XG5cbiAgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4sIHNlcmlhbGl6ZWREYXRhPzogc3RyaW5nKSB7XG4gICAgdGhpcy5fY29pbkNvbmZpZyA9IGNvaW5Db25maWc7XG4gICAgaWYgKHNlcmlhbGl6ZWREYXRhKSB7XG4gICAgICB0aGlzLmRlY29kZVN0YWtpbmdEYXRhKHNlcmlhbGl6ZWREYXRhKTtcbiAgICB9XG4gIH1cblxuICAvLyByZWdpb24gU3Rha2luZyBwcm9wZXJ0aWVzXG5cbiAgdHlwZSh0eXBlOiBTdGFraW5nT3BlcmF0aW9uVHlwZXMpOiB0aGlzIHtcbiAgICB0aGlzLl90eXBlID0gdHlwZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFtb3VudCh2YWx1ZTogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpc1ZhbGlkQW1vdW50KHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdJbnZhbGlkIHZhbHVlIGZvciBzdGFrZSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICB0aGlzLl9hbW91bnQgPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdyb3VwKHZhbGlkYXRvckdyb3VwOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlzVmFsaWRFdGhBZGRyZXNzKHZhbGlkYXRvckdyb3VwKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdJbnZhbGlkIHZhbGlkYXRvciBncm91cCBhZGRyZXNzJyk7XG4gICAgfVxuICAgIHRoaXMuX3ZhbGlkYXRvckdyb3VwID0gdmFsaWRhdG9yR3JvdXA7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBsZXNzZXIobGVzc2VyOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlzVmFsaWRFdGhBZGRyZXNzKGxlc3NlcikpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcignSW52YWxpZCBhZGRyZXNzIGZvciBsZXNzZXInKTtcbiAgICB9XG4gICAgdGhpcy5fbGVzc2VyID0gbGVzc2VyO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ3JlYXRlcihncmVhdGVyOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlzVmFsaWRFdGhBZGRyZXNzKGdyZWF0ZXIpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgYWRkcmVzcyBmb3IgZ3JlYXRlcicpO1xuICAgIH1cbiAgICB0aGlzLl9ncmVhdGVyID0gZ3JlYXRlcjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGluZGV4KGluZGV4OiBudW1iZXIpOiB0aGlzIHtcbiAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgaW5kZXggZm9yIHN0YWtpbmcgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgdGhpcy5faW5kZXggPSBpbmRleDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8vIHJlZ2lvbiBTdGFraW5nIGJ1aWxkaW5nXG5cbiAgYnVpbGQoKTogU3Rha2luZ0NhbGwge1xuICAgIHRoaXMudmFsaWRhdGVNYW5kYXRvcnlGaWVsZHMoKTtcbiAgICBzd2l0Y2ggKHRoaXMuX3R5cGUpIHtcbiAgICAgIGNhc2UgU3Rha2luZ09wZXJhdGlvblR5cGVzLkxPQ0s6XG4gICAgICAgIHRoaXMudmFsaWRhdGVBbW91bnQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRMb2NrU3Rha2luZygpO1xuICAgICAgY2FzZSBTdGFraW5nT3BlcmF0aW9uVHlwZXMuVk9URTpcbiAgICAgICAgdGhpcy52YWxpZGF0ZUVsZWN0aW9uRmllbGRzKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkVm90ZVN0YWtpbmcoKTtcbiAgICAgIGNhc2UgU3Rha2luZ09wZXJhdGlvblR5cGVzLkFDVElWQVRFOlxuICAgICAgICB0aGlzLnZhbGlkYXRlR3JvdXAoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRBY3RpdmF0ZVN0YWtpbmcoKTtcbiAgICAgIGNhc2UgU3Rha2luZ09wZXJhdGlvblR5cGVzLlVOVk9URTpcbiAgICAgICAgdGhpcy52YWxpZGF0ZVVudm90ZUZpZWxkcygpO1xuICAgICAgICByZXR1cm4gdGhpcy5idWlsZFVudm90ZVN0YWtpbmcoKTtcbiAgICAgIGNhc2UgU3Rha2luZ09wZXJhdGlvblR5cGVzLlVOTE9DSzpcbiAgICAgICAgdGhpcy52YWxpZGF0ZUFtb3VudCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5idWlsZFVubG9ja1N0YWtpbmcoKTtcbiAgICAgIGNhc2UgU3Rha2luZ09wZXJhdGlvblR5cGVzLldJVEhEUkFXOlxuICAgICAgICB0aGlzLnZhbGlkYXRlSW5kZXgoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRXaXRoZHJhd1N0YWtpbmcoKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBzdGFraW5nIG9wZXJhdGlvbjogJyArIHRoaXMuX3R5cGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgYSBsb2NrIGdvbGQgb3BlcmF0aW9uIHNlbmRpbmcgdGhlIGFtb3VudCBvbiB0aGUgdHJhbnNhY3Rpb24gdmFsdWUgZmllbGRcbiAgICpcbiAgICogQHJldHVybnMge1N0YWtpbmdDYWxsfSBhIGxvY2sgZ29sZCBvcGVyYXRpb24gdXNpbmcgdGhlIExvY2tlZEdvbGQgY29udHJhY3RcbiAgICovXG4gIHByaXZhdGUgYnVpbGRMb2NrU3Rha2luZygpOiBTdGFraW5nQ2FsbCB7XG4gICAgY29uc3Qgb3BlcmF0aW9uID0gZ2V0T3BlcmF0aW9uQ29uZmlnKHRoaXMuX3R5cGUsIHRoaXMuX2NvaW5Db25maWcubmV0d29yay50eXBlKTtcbiAgICByZXR1cm4gbmV3IFN0YWtpbmdDYWxsKHRoaXMuX2Ftb3VudCwgb3BlcmF0aW9uLmNvbnRyYWN0QWRkcmVzcywgb3BlcmF0aW9uLm1ldGhvZElkLCBvcGVyYXRpb24udHlwZXMsIFtdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgYW4gdW5sb2NrIGdvbGQgb3BlcmF0aW9uIHNlbmRpbmcgdGhlIGFtb3VudCBlbmNvZGVkIG9uIHRoZSBkYXRhIGZpZWxkXG4gICAqXG4gICAqIHBhcmFtc1xuICAgKiBhbW91bnQ6IGFtb3VudCBvZiBsb2NrZWQgZ29sZCB0byBiZSB1bmxvY2tlZFxuICAgKlxuICAgKiBAcmV0dXJucyB7U3Rha2luZ0NhbGx9IGFuIHVubG9jayBnb2xkIG9wZXJhdGlvbiB1c2luZyB0aGUgTG9ja2VkR29sZCBjb250cmFjdFxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZFVubG9ja1N0YWtpbmcoKTogU3Rha2luZ0NhbGwge1xuICAgIGNvbnN0IG9wZXJhdGlvbiA9IGdldE9wZXJhdGlvbkNvbmZpZyh0aGlzLl90eXBlLCB0aGlzLl9jb2luQ29uZmlnLm5ldHdvcmsudHlwZSk7XG4gICAgY29uc3QgcGFyYW1zID0gW3RoaXMuX2Ftb3VudF07XG4gICAgcmV0dXJuIG5ldyBTdGFraW5nQ2FsbCgnMCcsIG9wZXJhdGlvbi5jb250cmFjdEFkZHJlc3MsIG9wZXJhdGlvbi5tZXRob2RJZCwgb3BlcmF0aW9uLnR5cGVzLCBwYXJhbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBhIHZvdGUgb3BlcmF0aW9uIHRoYXQgdXNlcyBsb2NrZWQgZ29sZCB0byBhZGQgcGVuZGluZyB2b3RlcyBmb3IgYSB2YWxpZGF0b3IgZ3JvdXAuXG4gICAqXG4gICAqIHBhcmFtc1xuICAgKiB2YWxpZGF0b3JHcm91cDogZ3JvdXAgdG8gdm90ZSBmb3JcbiAgICogYW1vdW50OiBhbW91bnQgb2Ygdm90ZXMgKGxvY2tlZCBnb2xkKSBmb3IgdGhlIGdyb3VwXG4gICAqIGxlc3NlcjogdmFsaWRhdG9yIGdyb3VwIHRoYXQgaGFzIGxlc3Mgdm90ZXMgdGhhbiB0aGUgdmFsaWRhdG9yR3JvdXBcbiAgICogZ3JlYXRlcjogdmFsaWRhdG9yIGdyb3VwIHRoYXQgaGFzIG1vcmUgdm90cyB0aGFuIHRoZSB2YWxpZGF0b3JHcm91cFxuICAgKlxuICAgKiBAcmV0dXJucyB7U3Rha2luZ0NhbGx9IGFuIHZvdGUgb3BlcmF0aW9uIHVzaW5nIHRoZSBFbGVjdGlvbiBjb250cmFjdFxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZFZvdGVTdGFraW5nKCk6IFN0YWtpbmdDYWxsIHtcbiAgICBjb25zdCBvcGVyYXRpb24gPSBnZXRPcGVyYXRpb25Db25maWcodGhpcy5fdHlwZSwgdGhpcy5fY29pbkNvbmZpZy5uZXR3b3JrLnR5cGUpO1xuICAgIGNvbnN0IHBhcmFtcyA9IFt0aGlzLl92YWxpZGF0b3JHcm91cCwgdGhpcy5fYW1vdW50LCB0aGlzLl9sZXNzZXIsIHRoaXMuX2dyZWF0ZXJdO1xuICAgIHJldHVybiBuZXcgU3Rha2luZ0NhbGwoJzAnLCBvcGVyYXRpb24uY29udHJhY3RBZGRyZXNzLCBvcGVyYXRpb24ubWV0aG9kSWQsIG9wZXJhdGlvbi50eXBlcywgcGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgYW4gdW52b3RlIG9wZXJhdGlvbiB0byByZXZva2UgYWN0aXZlIHZvdGVzIGZvciBhIHZhbGlkYXRvciBncm91cC5cbiAgICpcbiAgICogcGFyYW1zXG4gICAqIHZhbGlkYXRvckdyb3VwOiBncm91cCB3aG9zZSB2b3RlcyB3aWxsIGJlIHJldm9rZWRcbiAgICogYW1vdW50OiBhbW91bnQgb2Ygdm90ZXMgKGxvY2tlZCBnb2xkKSB0aGF0IHdpbGwgYmUgcmV2b2tlZFxuICAgKiBsZXNzZXI6IHZhbGlkYXRvciBncm91cCB0aGF0IGhhcyBsZXNzIHZvdGVzIHRoYW4gdGhlIHZhbGlkYXRvckdyb3VwXG4gICAqIGdyZWF0ZXI6IHZhbGlkYXRvciBncm91cCB0aGF0IGhhcyBtb3JlIHZvdHMgdGhhbiB0aGUgdmFsaWRhdG9yR3JvdXBcbiAgICogaW5kZXg6IGluZGV4IG9mIHRoZSB2YWxpZGF0b3JHcm91cCBvbiB0aGUgbGlzdCBvZiBncm91cHMgdGhlIGFkZHJlc3MgaGFzIHZvdGVkIGZvclxuICAgKlxuICAgKiBAcmV0dXJucyB7U3Rha2luZ0NhbGx9IGFuIHZvdGUgb3BlcmF0aW9uIHVzaW5nIHRoZSBFbGVjdGlvbiBjb250cmFjdFxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZFVudm90ZVN0YWtpbmcoKTogU3Rha2luZ0NhbGwge1xuICAgIGNvbnN0IG9wZXJhdGlvbiA9IGdldE9wZXJhdGlvbkNvbmZpZyh0aGlzLl90eXBlLCB0aGlzLl9jb2luQ29uZmlnLm5ldHdvcmsudHlwZSk7XG4gICAgY29uc3QgcGFyYW1zID0gW3RoaXMuX3ZhbGlkYXRvckdyb3VwLCB0aGlzLl9hbW91bnQsIHRoaXMuX2xlc3NlciwgdGhpcy5fZ3JlYXRlciwgdGhpcy5faW5kZXgudG9TdHJpbmcoKV07XG4gICAgcmV0dXJuIG5ldyBTdGFraW5nQ2FsbCgnMCcsIG9wZXJhdGlvbi5jb250cmFjdEFkZHJlc3MsIG9wZXJhdGlvbi5tZXRob2RJZCwgb3BlcmF0aW9uLnR5cGVzLCBwYXJhbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBhbiBhY3RpdmF0ZSB2b3RlIG9wZXJhdGlvbiB0byBjaGFuZ2UgYWxsIHRoZSB2b3RlcyBjYXN0ZWQgZm9yIGEgdmFsaWRhdG9yXG4gICAqIGZyb20gJ3BlbmRpbmcnIHRvICdhY3RpdmUnXG4gICAqXG4gICAqIHBhcmFtc1xuICAgKiB2YWxpZGF0b3JHcm91cDogZ3JvdXAgd2hvc2Ugdm90ZXMgd2lsbCBiZSBhY3RpdmF0ZWRcbiAgICpcbiAgICogQHJldHVybnMge1N0YWtpbmdDYWxsfSBhbiBhY3RpdmF0ZSB2b3RlcyBvcGVyYXRpb25cbiAgICovXG4gIHByaXZhdGUgYnVpbGRBY3RpdmF0ZVN0YWtpbmcoKTogU3Rha2luZ0NhbGwge1xuICAgIGNvbnN0IG9wZXJhdGlvbiA9IGdldE9wZXJhdGlvbkNvbmZpZyh0aGlzLl90eXBlLCB0aGlzLl9jb2luQ29uZmlnLm5ldHdvcmsudHlwZSk7XG4gICAgY29uc3QgcGFyYW1zID0gW3RoaXMuX3ZhbGlkYXRvckdyb3VwXTtcbiAgICByZXR1cm4gbmV3IFN0YWtpbmdDYWxsKCcwJywgb3BlcmF0aW9uLmNvbnRyYWN0QWRkcmVzcywgb3BlcmF0aW9uLm1ldGhvZElkLCBvcGVyYXRpb24udHlwZXMsIHBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGEgd2l0aGRyYXcgb3BlcmF0aW9uIGZvciBsb2NrZWQgZ29sZCB0aGF0IGhhcyBiZWVuIHVubG9ja2VkXG4gICAqIGFmdGVyIHRoZSB1bmxvY2tpbmcgcGVyaW9kIGhhcyBwYXNzZWQuXG4gICAqXG4gICAqIHBhcmFtc1xuICAgKiBpbmRleDogaW5kZXggb2YgdGhlIHVubG9jayBvcGVyYXRpb24gd2hvc2UgdW5sb2NraW5nIHBlcmlvZCBoYXMgcGFzc2VkLlxuICAgKlxuICAgKiBAcmV0dXJucyB7U3Rha2luZ0NhbGx9IGFuIGFjdGl2YXRlIHZvdGVzIG9wZXJhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZFdpdGhkcmF3U3Rha2luZygpOiBTdGFraW5nQ2FsbCB7XG4gICAgY29uc3Qgb3BlcmF0aW9uID0gZ2V0T3BlcmF0aW9uQ29uZmlnKHRoaXMuX3R5cGUsIHRoaXMuX2NvaW5Db25maWcubmV0d29yay50eXBlKTtcbiAgICBjb25zdCBwYXJhbXMgPSBbdGhpcy5faW5kZXgudG9TdHJpbmcoKV07XG4gICAgcmV0dXJuIG5ldyBTdGFraW5nQ2FsbCgnMCcsIG9wZXJhdGlvbi5jb250cmFjdEFkZHJlc3MsIG9wZXJhdGlvbi5tZXRob2RJZCwgb3BlcmF0aW9uLnR5cGVzLCBwYXJhbXMpO1xuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIFZhbGlkYXRpb24gbWV0aG9kc1xuXG4gIHByaXZhdGUgdmFsaWRhdGVNYW5kYXRvcnlGaWVsZHMoKTogdm9pZCB7XG4gICAgaWYgKCEodGhpcy5fdHlwZSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuX2NvaW5Db25maWcpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdNaXNzaW5nIHN0YWtpbmcgbWFuZGF0b3J5IGZpZWxkcy4gVHlwZSBhbmQgY29pbiBhcmUgcmVxdWlyZWQnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlRWxlY3Rpb25GaWVsZHMoKTogdm9pZCB7XG4gICAgdGhpcy52YWxpZGF0ZUdyb3VwKCk7XG4gICAgdGhpcy52YWxpZGF0ZUFtb3VudCgpO1xuICAgIGlmICh0aGlzLl9sZXNzZXIgPT09IHRoaXMuX2dyZWF0ZXIpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0dyZWF0ZXIgYW5kIGxlc3NlciB2YWx1ZXMgc2hvdWxkIG5vdCBiZSB0aGUgc2FtZScpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVJbmRleCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignTWlzc2luZyBpbmRleCBmb3Igc3Rha2luZyB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVBbW91bnQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2Ftb3VudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdNaXNzaW5nIGFtb3VudCBmb3Igc3Rha2luZyB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVVbnZvdGVGaWVsZHMoKTogdm9pZCB7XG4gICAgdGhpcy52YWxpZGF0ZUVsZWN0aW9uRmllbGRzKCk7XG4gICAgdGhpcy52YWxpZGF0ZUluZGV4KCk7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlR3JvdXAoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl92YWxpZGF0b3JHcm91cCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignTWlzc2luZyB2YWxpZGF0b3IgZ3JvdXAgZm9yIHN0YWtpbmcgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gIH1cblxuICAvLyBlbmRyZWdpb25cblxuICAvLyByZWdpb24gRGVzZXJpYWxpemF0aW9uIG1ldGhvZHNcbiAgcHJpdmF0ZSBkZWNvZGVTdGFraW5nRGF0YShkYXRhOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNsYXNzaWZ5U3Rha2luZ1R5cGUoZGF0YSk7XG5cbiAgICBjb25zdCBvcGVyYXRpb24gPSBnZXRPcGVyYXRpb25Db25maWcodGhpcy5fdHlwZSwgdGhpcy5fY29pbkNvbmZpZy5uZXR3b3JrLnR5cGUpO1xuICAgIGNvbnN0IGRlY29kZWQgPSBnZXRSYXdEZWNvZGVkKG9wZXJhdGlvbi50eXBlcywgZ2V0QnVmZmVyZWRCeXRlQ29kZShvcGVyYXRpb24ubWV0aG9kSWQsIGRhdGEpKTtcbiAgICBzd2l0Y2ggKHRoaXMuX3R5cGUpIHtcbiAgICAgIGNhc2UgU3Rha2luZ09wZXJhdGlvblR5cGVzLlZPVEU6XG4gICAgICAgIHRoaXMudmFsaWRhdGVEZWNvZGVkRGF0YUxlbmd0aChkZWNvZGVkLmxlbmd0aCwgNCwgZGF0YSk7XG4gICAgICAgIGNvbnN0IFtncm91cFRvVm90ZSwgYW1vdW50LCBsZXNzZXIsIGdyZWF0ZXJdID0gZGVjb2RlZDtcbiAgICAgICAgdGhpcy5fYW1vdW50ID0gZXRoVXRpbC5idWZmZXJUb0hleChhbW91bnQgYXMgQnVmZmVyKTtcbiAgICAgICAgdGhpcy5fdmFsaWRhdG9yR3JvdXAgPSBldGhVdGlsLmFkZEhleFByZWZpeChncm91cFRvVm90ZSBhcyBzdHJpbmcpO1xuICAgICAgICB0aGlzLl9sZXNzZXIgPSBldGhVdGlsLmFkZEhleFByZWZpeChsZXNzZXIgYXMgc3RyaW5nKTtcbiAgICAgICAgdGhpcy5fZ3JlYXRlciA9IGV0aFV0aWwuYWRkSGV4UHJlZml4KGdyZWF0ZXIgYXMgc3RyaW5nKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFN0YWtpbmdPcGVyYXRpb25UeXBlcy5VTlZPVEU6XG4gICAgICAgIHRoaXMudmFsaWRhdGVEZWNvZGVkRGF0YUxlbmd0aChkZWNvZGVkLmxlbmd0aCwgNSwgZGF0YSk7XG4gICAgICAgIGNvbnN0IFtncm91cFRvVW52b3RlLCBhbW91bnRVbnZvdGUsIGxlc3NlclVudm90ZSwgZ3JlYXRlclVudm90ZSwgaW5kZXhVbnZvdGVdID0gZGVjb2RlZDtcbiAgICAgICAgdGhpcy5fdmFsaWRhdG9yR3JvdXAgPSBldGhVdGlsLmFkZEhleFByZWZpeChncm91cFRvVW52b3RlIGFzIHN0cmluZyk7XG4gICAgICAgIHRoaXMuX2Ftb3VudCA9IGV0aFV0aWwuYnVmZmVyVG9IZXgoYW1vdW50VW52b3RlIGFzIEJ1ZmZlcik7XG4gICAgICAgIHRoaXMuX2xlc3NlciA9IGV0aFV0aWwuYWRkSGV4UHJlZml4KGxlc3NlclVudm90ZSBhcyBzdHJpbmcpO1xuICAgICAgICB0aGlzLl9ncmVhdGVyID0gZXRoVXRpbC5hZGRIZXhQcmVmaXgoZ3JlYXRlclVudm90ZSBhcyBzdHJpbmcpO1xuICAgICAgICB0aGlzLl9pbmRleCA9IGhleFN0cmluZ1RvTnVtYmVyKGV0aFV0aWwuYnVmZmVyVG9IZXgoaW5kZXhVbnZvdGUgYXMgQnVmZmVyKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTdGFraW5nT3BlcmF0aW9uVHlwZXMuQUNUSVZBVEU6XG4gICAgICAgIHRoaXMudmFsaWRhdGVEZWNvZGVkRGF0YUxlbmd0aChkZWNvZGVkLmxlbmd0aCwgMSwgZGF0YSk7XG4gICAgICAgIGNvbnN0IFtncm91cFRvQWN0aXZhdGVdID0gZGVjb2RlZDtcbiAgICAgICAgdGhpcy5fdmFsaWRhdG9yR3JvdXAgPSBldGhVdGlsLmFkZEhleFByZWZpeChncm91cFRvQWN0aXZhdGUgYXMgc3RyaW5nKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFN0YWtpbmdPcGVyYXRpb25UeXBlcy5VTkxPQ0s6XG4gICAgICAgIGlmIChkZWNvZGVkLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgdW5sb2NrIGRlY29kZWQgZGF0YTogJHtkYXRhfWApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IFtkZWNvZGVkQW1vdW50XSA9IGRlY29kZWQ7XG4gICAgICAgIHRoaXMuX2Ftb3VudCA9IGV0aFV0aWwuYnVmZmVyVG9IZXgoZGVjb2RlZEFtb3VudCBhcyBCdWZmZXIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU3Rha2luZ09wZXJhdGlvblR5cGVzLldJVEhEUkFXOlxuICAgICAgICB0aGlzLnZhbGlkYXRlRGVjb2RlZERhdGFMZW5ndGgoZGVjb2RlZC5sZW5ndGgsIDEsIGRhdGEpO1xuICAgICAgICBjb25zdCBbaW5kZXhdID0gZGVjb2RlZDtcbiAgICAgICAgdGhpcy5faW5kZXggPSBoZXhTdHJpbmdUb051bWJlcihldGhVdGlsLmJ1ZmZlclRvSGV4KGluZGV4IGFzIEJ1ZmZlcikpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgc3Rha2luZyBkYXRhOiAke3RoaXMuX3R5cGV9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZURlY29kZWREYXRhTGVuZ3RoKGFjdHVhbDogbnVtYmVyLCBleHBlY3RlZDogbnVtYmVyLCBkYXRhOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCBzdGFraW5nIGRlY29kZWQgZGF0YTogJHtkYXRhfWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2xhc3NpZnlTdGFraW5nVHlwZShkYXRhOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoZGF0YS5zdGFydHNXaXRoKFZvdGVNZXRob2RJZCkpIHtcbiAgICAgIHRoaXMuX3R5cGUgPSBTdGFraW5nT3BlcmF0aW9uVHlwZXMuVk9URTtcbiAgICB9IGVsc2UgaWYgKGRhdGEuc3RhcnRzV2l0aChVbnZvdGVNZXRob2RJZCkpIHtcbiAgICAgIHRoaXMuX3R5cGUgPSBTdGFraW5nT3BlcmF0aW9uVHlwZXMuVU5WT1RFO1xuICAgIH0gZWxzZSBpZiAoZGF0YS5zdGFydHNXaXRoKEFjdGl2YXRlTWV0aG9kSWQpKSB7XG4gICAgICB0aGlzLl90eXBlID0gU3Rha2luZ09wZXJhdGlvblR5cGVzLkFDVElWQVRFO1xuICAgIH0gZWxzZSBpZiAoZGF0YS5zdGFydHNXaXRoKFVubG9ja01ldGhvZElkKSkge1xuICAgICAgdGhpcy5fdHlwZSA9IFN0YWtpbmdPcGVyYXRpb25UeXBlcy5VTkxPQ0s7XG4gICAgfSBlbHNlIGlmIChkYXRhLnN0YXJ0c1dpdGgoV2l0aGRyYXdNZXRob2RJZCkpIHtcbiAgICAgIHRoaXMuX3R5cGUgPSBTdGFraW5nT3BlcmF0aW9uVHlwZXMuV0lUSERSQVc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgc3Rha2luZyBieXRlY29kZTogJHtkYXRhfWApO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVuZHJlZ2lvblxufVxuIl19
|
|
296
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ0J1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3N0YWtpbmdCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseURBQTJDO0FBRTNDLHNEQU02QjtBQUM3Qiw4Q0FXeUI7QUFDekIsK0NBQTRDO0FBRTVDLE1BQWEsY0FBYztJQVV6QixZQUFZLFVBQWdDLEVBQUUsY0FBdUI7UUFUcEQsb0JBQWUsR0FBRyw0Q0FBNEMsQ0FBQztRQUd4RSxZQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUMvQixhQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQU10QyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUM5QixJQUFJLGNBQWMsRUFBRTtZQUNsQixJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDO0lBRUQsNEJBQTRCO0lBRTVCLElBQUksQ0FBQyxJQUEyQjtRQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBYTtRQUNsQixJQUFJLENBQUMsSUFBQSw0QkFBYSxFQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3pCLE1BQU0sSUFBSSxxQ0FBMEIsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1NBQzdFO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQXNCO1FBQzFCLElBQUksQ0FBQyxJQUFBLGdDQUFpQixFQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQ3RDLE1BQU0sSUFBSSxxQ0FBMEIsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1NBQ3pFO1FBQ0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxjQUFj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QyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQzFFO0lBQ0gsQ0FBQztJQUVPLG1CQUFtQixDQUFDLElBQVk7UUFDdEMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLHVCQUFZLENBQUMsRUFBRTtZQUNqQyxJQUFJLENBQUMsS0FBSyxHQUFHLGdDQUFxQixDQUFDLElBQUksQ0FBQztTQUN6QzthQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyx5QkFBYyxDQUFDLEVBQUU7WUFDMUMsSUFBSSxDQUFDLEtBQUssR0FBRyxnQ0FBcUIsQ0FBQyxNQUFNLENBQUM7U0FDM0M7YUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsMkJBQWdCLENBQUMsRUFBRTtZQUM1QyxJQUFJLENBQUMsS0FBSyxHQUFHLGdDQUFxQixDQUFDLFFBQVEsQ0FBQztTQUM3QzthQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyx5QkFBYyxDQUFDLEVBQUU7WUFDMUMsSUFBSSxDQUFDLEtBQUssR0FBRyxnQ0FBcUIsQ0FBQyxNQUFNLENBQUM7U0FDM0M7YUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsMkJBQWdCLENBQUMsRUFBRTtZQUM1QyxJQUFJLENBQUMsS0FBSyxHQUFHLGdDQUFxQixDQUFDLFFBQVEsQ0FBQztTQUM3QzthQUFNO1lBQ0wsTUFBTSxJQUFJLGdDQUFxQixDQUFDLDZCQUE2QixJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ3RFO0lBQ0gsQ0FBQztDQUdGO0FBdlNELHdDQXVTQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGV0aFV0aWwgZnJvbSAnZXRoZXJldW1qcy11dGlsJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQge1xuICBpc1ZhbGlkQW1vdW50LFxuICBpc1ZhbGlkRXRoQWRkcmVzcyxcbiAgZ2V0UmF3RGVjb2RlZCxcbiAgZ2V0QnVmZmVyZWRCeXRlQ29kZSxcbiAgaGV4U3RyaW5nVG9OdW1iZXIsXG59IGZyb20gJ0BiaXRnby9zZGstY29pbi1ldGgnO1xuaW1wb3J0IHtcbiAgQWN0aXZhdGVNZXRob2RJZCxcbiAgQnVpbGRUcmFuc2FjdGlvbkVycm9yLFxuICBnZXRPcGVyYXRpb25Db25maWcsXG4gIEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yLFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgU3Rha2luZ09wZXJhdGlvblR5cGVzLFxuICBVbmxvY2tNZXRob2RJZCxcbiAgVW52b3RlTWV0aG9kSWQsXG4gIFZvdGVNZXRob2RJZCxcbiAgV2l0aGRyYXdNZXRob2RJZCxcbn0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IFN0YWtpbmdDYWxsIH0gZnJvbSAnLi9zdGFraW5nQ2FsbCc7XG5cbmV4cG9ydCBjbGFzcyBTdGFraW5nQnVpbGRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9BRERSRVNTID0gJzB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCc7XG4gIHByaXZhdGUgX2Ftb3VudDogc3RyaW5nO1xuICBwcml2YXRlIF92YWxpZGF0b3JHcm91cDogc3RyaW5nO1xuICBwcml2YXRlIF9sZXNzZXIgPSB0aGlzLkRFRkFVTFRfQUREUkVTUztcbiAgcHJpdmF0ZSBfZ3JlYXRlciA9IHRoaXMuREVGQVVMVF9BRERSRVNTO1xuICBwcml2YXRlIF9pbmRleDogbnVtYmVyO1xuICBwcml2YXRlIF90eXBlOiBTdGFraW5nT3BlcmF0aW9uVHlwZXM7XG4gIHByaXZhdGUgX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+O1xuXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+LCBzZXJpYWxpemVkRGF0YT86IHN0cmluZykge1xuICAgIHRoaXMuX2NvaW5Db25maWcgPSBjb2luQ29uZmlnO1xuICAgIGlmIChzZXJpYWxpemVkRGF0YSkge1xuICAgICAgdGhpcy5kZWNvZGVTdGFraW5nRGF0YShzZXJpYWxpemVkRGF0YSk7XG4gICAgfVxuICB9XG5cbiAgLy8gcmVnaW9uIFN0YWtpbmcgcHJvcGVydGllc1xuXG4gIHR5cGUodHlwZTogU3Rha2luZ09wZXJhdGlvblR5cGVzKTogdGhpcyB7XG4gICAgdGhpcy5fdHlwZSA9IHR5cGU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBhbW91bnQodmFsdWU6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghaXNWYWxpZEFtb3VudCh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcignSW52YWxpZCB2YWx1ZSBmb3Igc3Rha2UgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgdGhpcy5fYW1vdW50ID0gdmFsdWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBncm91cCh2YWxpZGF0b3JHcm91cDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpc1ZhbGlkRXRoQWRkcmVzcyh2YWxpZGF0b3JHcm91cCkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcignSW52YWxpZCB2YWxpZGF0b3IgZ3JvdXAgYWRkcmVzcycpO1xuICAgIH1cbiAgICB0aGlzLl92YWxpZGF0b3JHcm91cCA9IHZhbGlkYXRvckdyb3VwO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbGVzc2VyKGxlc3Nlcjogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpc1ZhbGlkRXRoQWRkcmVzcyhsZXNzZXIpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgYWRkcmVzcyBmb3IgbGVzc2VyJyk7XG4gICAgfVxuICAgIHRoaXMuX2xlc3NlciA9IGxlc3NlcjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdyZWF0ZXIoZ3JlYXRlcjogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpc1ZhbGlkRXRoQWRkcmVzcyhncmVhdGVyKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdJbnZhbGlkIGFkZHJlc3MgZm9yIGdyZWF0ZXInKTtcbiAgICB9XG4gICAgdGhpcy5fZ3JlYXRlciA9IGdyZWF0ZXI7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBpbmRleChpbmRleDogbnVtYmVyKTogdGhpcyB7XG4gICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdJbnZhbGlkIGluZGV4IGZvciBzdGFraW5nIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIHRoaXMuX2luZGV4ID0gaW5kZXg7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBlbmRyZWdpb25cblxuICAvLyByZWdpb24gU3Rha2luZyBidWlsZGluZ1xuXG4gIGJ1aWxkKCk6IFN0YWtpbmdDYWxsIHtcbiAgICB0aGlzLnZhbGlkYXRlTWFuZGF0b3J5RmllbGRzKCk7XG4gICAgc3dpdGNoICh0aGlzLl90eXBlKSB7XG4gICAgICBjYXNlIFN0YWtpbmdPcGVyYXRpb25UeXBlcy5MT0NLOlxuICAgICAgICB0aGlzLnZhbGlkYXRlQW1vdW50KCk7XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkTG9ja1N0YWtpbmcoKTtcbiAgICAgIGNhc2UgU3Rha2luZ09wZXJhdGlvblR5cGVzLlZPVEU6XG4gICAgICAgIHRoaXMudmFsaWRhdGVFbGVjdGlvbkZpZWxkcygpO1xuICAgICAgICByZXR1cm4gdGhpcy5idWlsZFZvdGVTdGFraW5nKCk7XG4gICAgICBjYXNlIFN0YWtpbmdPcGVyYXRpb25UeXBlcy5BQ1RJVkFURTpcbiAgICAgICAgdGhpcy52YWxpZGF0ZUdyb3VwKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkQWN0aXZhdGVTdGFraW5nKCk7XG4gICAgICBjYXNlIFN0YWtpbmdPcGVyYXRpb25UeXBlcy5VTlZPVEU6XG4gICAgICAgIHRoaXMudmFsaWRhdGVVbnZvdGVGaWVsZHMoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRVbnZvdGVTdGFraW5nKCk7XG4gICAgICBjYXNlIFN0YWtpbmdPcGVyYXRpb25UeXBlcy5VTkxPQ0s6XG4gICAgICAgIHRoaXMudmFsaWRhdGVBbW91bnQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRVbmxvY2tTdGFraW5nKCk7XG4gICAgICBjYXNlIFN0YWtpbmdPcGVyYXRpb25UeXBlcy5XSVRIRFJBVzpcbiAgICAgICAgdGhpcy52YWxpZGF0ZUluZGV4KCk7XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkV2l0aGRyYXdTdGFraW5nKCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgc3Rha2luZyBvcGVyYXRpb246ICcgKyB0aGlzLl90eXBlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGEgbG9jayBnb2xkIG9wZXJhdGlvbiBzZW5kaW5nIHRoZSBhbW91bnQgb24gdGhlIHRyYW5zYWN0aW9uIHZhbHVlIGZpZWxkXG4gICAqXG4gICAqIEByZXR1cm5zIHtTdGFraW5nQ2FsbH0gYSBsb2NrIGdvbGQgb3BlcmF0aW9uIHVzaW5nIHRoZSBMb2NrZWRHb2xkIGNvbnRyYWN0XG4gICAqL1xuICBwcml2YXRlIGJ1aWxkTG9ja1N0YWtpbmcoKTogU3Rha2luZ0NhbGwge1xuICAgIGNvbnN0IG9wZXJhdGlvbiA9IGdldE9wZXJhdGlvbkNvbmZpZyh0aGlzLl90eXBlLCB0aGlzLl9jb2luQ29uZmlnLm5ldHdvcmsudHlwZSk7XG4gICAgcmV0dXJuIG5ldyBTdGFraW5nQ2FsbCh0aGlzLl9hbW91bnQsIG9wZXJhdGlvbi5jb250cmFjdEFkZHJlc3MsIG9wZXJhdGlvbi5tZXRob2RJZCwgb3BlcmF0aW9uLnR5cGVzLCBbXSk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGFuIHVubG9jayBnb2xkIG9wZXJhdGlvbiBzZW5kaW5nIHRoZSBhbW91bnQgZW5jb2RlZCBvbiB0aGUgZGF0YSBmaWVsZFxuICAgKlxuICAgKiBwYXJhbXNcbiAgICogYW1vdW50OiBhbW91bnQgb2YgbG9ja2VkIGdvbGQgdG8gYmUgdW5sb2NrZWRcbiAgICpcbiAgICogQHJldHVybnMge1N0YWtpbmdDYWxsfSBhbiB1bmxvY2sgZ29sZCBvcGVyYXRpb24gdXNpbmcgdGhlIExvY2tlZEdvbGQgY29udHJhY3RcbiAgICovXG4gIHByaXZhdGUgYnVpbGRVbmxvY2tTdGFraW5nKCk6IFN0YWtpbmdDYWxsIHtcbiAgICBjb25zdCBvcGVyYXRpb24gPSBnZXRPcGVyYXRpb25Db25maWcodGhpcy5fdHlwZSwgdGhpcy5fY29pbkNvbmZpZy5uZXR3b3JrLnR5cGUpO1xuICAgIGNvbnN0IHBhcmFtcyA9IFt0aGlzLl9hbW91bnRdO1xuICAgIHJldHVybiBuZXcgU3Rha2luZ0NhbGwoJzAnLCBvcGVyYXRpb24uY29udHJhY3RBZGRyZXNzLCBvcGVyYXRpb24ubWV0aG9kSWQsIG9wZXJhdGlvbi50eXBlcywgcGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgYSB2b3RlIG9wZXJhdGlvbiB0aGF0IHVzZXMgbG9ja2VkIGdvbGQgdG8gYWRkIHBlbmRpbmcgdm90ZXMgZm9yIGEgdmFsaWRhdG9yIGdyb3VwLlxuICAgKlxuICAgKiBwYXJhbXNcbiAgICogdmFsaWRhdG9yR3JvdXA6IGdyb3VwIHRvIHZvdGUgZm9yXG4gICAqIGFtb3VudDogYW1vdW50IG9mIHZvdGVzIChsb2NrZWQgZ29sZCkgZm9yIHRoZSBncm91cFxuICAgKiBsZXNzZXI6IHZhbGlkYXRvciBncm91cCB0aGF0IGhhcyBsZXNzIHZvdGVzIHRoYW4gdGhlIHZhbGlkYXRvckdyb3VwXG4gICAqIGdyZWF0ZXI6IHZhbGlkYXRvciBncm91cCB0aGF0IGhhcyBtb3JlIHZvdHMgdGhhbiB0aGUgdmFsaWRhdG9yR3JvdXBcbiAgICpcbiAgICogQHJldHVybnMge1N0YWtpbmdDYWxsfSBhbiB2b3RlIG9wZXJhdGlvbiB1c2luZyB0aGUgRWxlY3Rpb24gY29udHJhY3RcbiAgICovXG4gIHByaXZhdGUgYnVpbGRWb3RlU3Rha2luZygpOiBTdGFraW5nQ2FsbCB7XG4gICAgY29uc3Qgb3BlcmF0aW9uID0gZ2V0T3BlcmF0aW9uQ29uZmlnKHRoaXMuX3R5cGUsIHRoaXMuX2NvaW5Db25maWcubmV0d29yay50eXBlKTtcbiAgICBjb25zdCBwYXJhbXMgPSBbdGhpcy5fdmFsaWRhdG9yR3JvdXAsIHRoaXMuX2Ftb3VudCwgdGhpcy5fbGVzc2VyLCB0aGlzLl9ncmVhdGVyXTtcbiAgICByZXR1cm4gbmV3IFN0YWtpbmdDYWxsKCcwJywgb3BlcmF0aW9uLmNvbnRyYWN0QWRkcmVzcywgb3BlcmF0aW9uLm1ldGhvZElkLCBvcGVyYXRpb24udHlwZXMsIHBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGFuIHVudm90ZSBvcGVyYXRpb24gdG8gcmV2b2tlIGFjdGl2ZSB2b3RlcyBmb3IgYSB2YWxpZGF0b3IgZ3JvdXAuXG4gICAqXG4gICAqIHBhcmFtc1xuICAgKiB2YWxpZGF0b3JHcm91cDogZ3JvdXAgd2hvc2Ugdm90ZXMgd2lsbCBiZSByZXZva2VkXG4gICAqIGFtb3VudDogYW1vdW50IG9mIHZvdGVzIChsb2NrZWQgZ29sZCkgdGhhdCB3aWxsIGJlIHJldm9rZWRcbiAgICogbGVzc2VyOiB2YWxpZGF0b3IgZ3JvdXAgdGhhdCBoYXMgbGVzcyB2b3RlcyB0aGFuIHRoZSB2YWxpZGF0b3JHcm91cFxuICAgKiBncmVhdGVyOiB2YWxpZGF0b3IgZ3JvdXAgdGhhdCBoYXMgbW9yZSB2b3RzIHRoYW4gdGhlIHZhbGlkYXRvckdyb3VwXG4gICAqIGluZGV4OiBpbmRleCBvZiB0aGUgdmFsaWRhdG9yR3JvdXAgb24gdGhlIGxpc3Qgb2YgZ3JvdXBzIHRoZSBhZGRyZXNzIGhhcyB2b3RlZCBmb3JcbiAgICpcbiAgICogQHJldHVybnMge1N0YWtpbmdDYWxsfSBhbiB2b3RlIG9wZXJhdGlvbiB1c2luZyB0aGUgRWxlY3Rpb24gY29udHJhY3RcbiAgICovXG4gIHByaXZhdGUgYnVpbGRVbnZvdGVTdGFraW5nKCk6IFN0YWtpbmdDYWxsIHtcbiAgICBjb25zdCBvcGVyYXRpb24gPSBnZXRPcGVyYXRpb25Db25maWcodGhpcy5fdHlwZSwgdGhpcy5fY29pbkNvbmZpZy5uZXR3b3JrLnR5cGUpO1xuICAgIGNvbnN0IHBhcmFtcyA9IFt0aGlzLl92YWxpZGF0b3JHcm91cCwgdGhpcy5fYW1vdW50LCB0aGlzLl9sZXNzZXIsIHRoaXMuX2dyZWF0ZXIsIHRoaXMuX2luZGV4LnRvU3RyaW5nKCldO1xuICAgIHJldHVybiBuZXcgU3Rha2luZ0NhbGwoJzAnLCBvcGVyYXRpb24uY29udHJhY3RBZGRyZXNzLCBvcGVyYXRpb24ubWV0aG9kSWQsIG9wZXJhdGlvbi50eXBlcywgcGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgYW4gYWN0aXZhdGUgdm90ZSBvcGVyYXRpb24gdG8gY2hhbmdlIGFsbCB0aGUgdm90ZXMgY2FzdGVkIGZvciBhIHZhbGlkYXRvclxuICAgKiBmcm9tICdwZW5kaW5nJyB0byAnYWN0aXZlJ1xuICAgKlxuICAgKiBwYXJhbXNcbiAgICogdmFsaWRhdG9yR3JvdXA6IGdyb3VwIHdob3NlIHZvdGVzIHdpbGwgYmUgYWN0aXZhdGVkXG4gICAqXG4gICAqIEByZXR1cm5zIHtTdGFraW5nQ2FsbH0gYW4gYWN0aXZhdGUgdm90ZXMgb3BlcmF0aW9uXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkQWN0aXZhdGVTdGFraW5nKCk6IFN0YWtpbmdDYWxsIHtcbiAgICBjb25zdCBvcGVyYXRpb24gPSBnZXRPcGVyYXRpb25Db25maWcodGhpcy5fdHlwZSwgdGhpcy5fY29pbkNvbmZpZy5uZXR3b3JrLnR5cGUpO1xuICAgIGNvbnN0IHBhcmFtcyA9IFt0aGlzLl92YWxpZGF0b3JHcm91cF07XG4gICAgcmV0dXJuIG5ldyBTdGFraW5nQ2FsbCgnMCcsIG9wZXJhdGlvbi5jb250cmFjdEFkZHJlc3MsIG9wZXJhdGlvbi5tZXRob2RJZCwgb3BlcmF0aW9uLnR5cGVzLCBwYXJhbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBhIHdpdGhkcmF3IG9wZXJhdGlvbiBmb3IgbG9ja2VkIGdvbGQgdGhhdCBoYXMgYmVlbiB1bmxvY2tlZFxuICAgKiBhZnRlciB0aGUgdW5sb2NraW5nIHBlcmlvZCBoYXMgcGFzc2VkLlxuICAgKlxuICAgKiBwYXJhbXNcbiAgICogaW5kZXg6IGluZGV4IG9mIHRoZSB1bmxvY2sgb3BlcmF0aW9uIHdob3NlIHVubG9ja2luZyBwZXJpb2QgaGFzIHBhc3NlZC5cbiAgICpcbiAgICogQHJldHVybnMge1N0YWtpbmdDYWxsfSBhbiBhY3RpdmF0ZSB2b3RlcyBvcGVyYXRpb25cbiAgICovXG4gIHByaXZhdGUgYnVpbGRXaXRoZHJhd1N0YWtpbmcoKTogU3Rha2luZ0NhbGwge1xuICAgIGNvbnN0IG9wZXJhdGlvbiA9IGdldE9wZXJhdGlvbkNvbmZpZyh0aGlzLl90eXBlLCB0aGlzLl9jb2luQ29uZmlnLm5ldHdvcmsudHlwZSk7XG4gICAgY29uc3QgcGFyYW1zID0gW3RoaXMuX2luZGV4LnRvU3RyaW5nKCldO1xuICAgIHJldHVybiBuZXcgU3Rha2luZ0NhbGwoJzAnLCBvcGVyYXRpb24uY29udHJhY3RBZGRyZXNzLCBvcGVyYXRpb24ubWV0aG9kSWQsIG9wZXJhdGlvbi50eXBlcywgcGFyYW1zKTtcbiAgfVxuXG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8vIHJlZ2lvbiBWYWxpZGF0aW9uIG1ldGhvZHNcblxuICBwcml2YXRlIHZhbGlkYXRlTWFuZGF0b3J5RmllbGRzKCk6IHZvaWQge1xuICAgIGlmICghKHRoaXMuX3R5cGUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLl9jb2luQ29uZmlnKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignTWlzc2luZyBzdGFraW5nIG1hbmRhdG9yeSBmaWVsZHMuIFR5cGUgYW5kIGNvaW4gYXJlIHJlcXVpcmVkJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUVsZWN0aW9uRmllbGRzKCk6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdGVHcm91cCgpO1xuICAgIHRoaXMudmFsaWRhdGVBbW91bnQoKTtcbiAgICBpZiAodGhpcy5fbGVzc2VyID09PSB0aGlzLl9ncmVhdGVyKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdHcmVhdGVyIGFuZCBsZXNzZXIgdmFsdWVzIHNob3VsZCBub3QgYmUgdGhlIHNhbWUnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlSW5kZXgoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2luZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ01pc3NpbmcgaW5kZXggZm9yIHN0YWtpbmcgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlQW1vdW50KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9hbW91bnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignTWlzc2luZyBhbW91bnQgZm9yIHN0YWtpbmcgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlVW52b3RlRmllbGRzKCk6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdGVFbGVjdGlvbkZpZWxkcygpO1xuICAgIHRoaXMudmFsaWRhdGVJbmRleCgpO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUdyb3VwKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdmFsaWRhdG9yR3JvdXApIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ01pc3NpbmcgdmFsaWRhdG9yIGdyb3VwIGZvciBzdGFraW5nIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIERlc2VyaWFsaXphdGlvbiBtZXRob2RzXG4gIHByaXZhdGUgZGVjb2RlU3Rha2luZ0RhdGEoZGF0YTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jbGFzc2lmeVN0YWtpbmdUeXBlKGRhdGEpO1xuXG4gICAgY29uc3Qgb3BlcmF0aW9uID0gZ2V0T3BlcmF0aW9uQ29uZmlnKHRoaXMuX3R5cGUsIHRoaXMuX2NvaW5Db25maWcubmV0d29yay50eXBlKTtcbiAgICBjb25zdCBkZWNvZGVkID0gZ2V0UmF3RGVjb2RlZChvcGVyYXRpb24udHlwZXMsIGdldEJ1ZmZlcmVkQnl0ZUNvZGUob3BlcmF0aW9uLm1ldGhvZElkLCBkYXRhKSk7XG4gICAgc3dpdGNoICh0aGlzLl90eXBlKSB7XG4gICAgICBjYXNlIFN0YWtpbmdPcGVyYXRpb25UeXBlcy5WT1RFOlxuICAgICAgICB0aGlzLnZhbGlkYXRlRGVjb2RlZERhdGFMZW5ndGgoZGVjb2RlZC5sZW5ndGgsIDQsIGRhdGEpO1xuICAgICAgICBjb25zdCBbZ3JvdXBUb1ZvdGUsIGFtb3VudCwgbGVzc2VyLCBncmVhdGVyXSA9IGRlY29kZWQ7XG4gICAgICAgIHRoaXMuX2Ftb3VudCA9IGV0aFV0aWwuYnVmZmVyVG9IZXgoYW1vdW50IGFzIEJ1ZmZlcik7XG4gICAgICAgIHRoaXMuX3ZhbGlkYXRvckdyb3VwID0gZXRoVXRpbC5hZGRIZXhQcmVmaXgoZ3JvdXBUb1ZvdGUgYXMgc3RyaW5nKTtcbiAgICAgICAgdGhpcy5fbGVzc2VyID0gZXRoVXRpbC5hZGRIZXhQcmVmaXgobGVzc2VyIGFzIHN0cmluZyk7XG4gICAgICAgIHRoaXMuX2dyZWF0ZXIgPSBldGhVdGlsLmFkZEhleFByZWZpeChncmVhdGVyIGFzIHN0cmluZyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTdGFraW5nT3BlcmF0aW9uVHlwZXMuVU5WT1RFOlxuICAgICAgICB0aGlzLnZhbGlkYXRlRGVjb2RlZERhdGFMZW5ndGgoZGVjb2RlZC5sZW5ndGgsIDUsIGRhdGEpO1xuICAgICAgICBjb25zdCBbZ3JvdXBUb1Vudm90ZSwgYW1vdW50VW52b3RlLCBsZXNzZXJVbnZvdGUsIGdyZWF0ZXJVbnZvdGUsIGluZGV4VW52b3RlXSA9IGRlY29kZWQ7XG4gICAgICAgIHRoaXMuX3ZhbGlkYXRvckdyb3VwID0gZXRoVXRpbC5hZGRIZXhQcmVmaXgoZ3JvdXBUb1Vudm90ZSBhcyBzdHJpbmcpO1xuICAgICAgICB0aGlzLl9hbW91bnQgPSBldGhVdGlsLmJ1ZmZlclRvSGV4KGFtb3VudFVudm90ZSBhcyBCdWZmZXIpO1xuICAgICAgICB0aGlzLl9sZXNzZXIgPSBldGhVdGlsLmFkZEhleFByZWZpeChsZXNzZXJVbnZvdGUgYXMgc3RyaW5nKTtcbiAgICAgICAgdGhpcy5fZ3JlYXRlciA9IGV0aFV0aWwuYWRkSGV4UHJlZml4KGdyZWF0ZXJVbnZvdGUgYXMgc3RyaW5nKTtcbiAgICAgICAgdGhpcy5faW5kZXggPSBoZXhTdHJpbmdUb051bWJlcihldGhVdGlsLmJ1ZmZlclRvSGV4KGluZGV4VW52b3RlIGFzIEJ1ZmZlcikpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU3Rha2luZ09wZXJhdGlvblR5cGVzLkFDVElWQVRFOlxuICAgICAgICB0aGlzLnZhbGlkYXRlRGVjb2RlZERhdGFMZW5ndGgoZGVjb2RlZC5sZW5ndGgsIDEsIGRhdGEpO1xuICAgICAgICBjb25zdCBbZ3JvdXBUb0FjdGl2YXRlXSA9IGRlY29kZWQ7XG4gICAgICAgIHRoaXMuX3ZhbGlkYXRvckdyb3VwID0gZXRoVXRpbC5hZGRIZXhQcmVmaXgoZ3JvdXBUb0FjdGl2YXRlIGFzIHN0cmluZyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTdGFraW5nT3BlcmF0aW9uVHlwZXMuVU5MT0NLOlxuICAgICAgICBpZiAoZGVjb2RlZC5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkIHVubG9jayBkZWNvZGVkIGRhdGE6ICR7ZGF0YX1gKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBbZGVjb2RlZEFtb3VudF0gPSBkZWNvZGVkO1xuICAgICAgICB0aGlzLl9hbW91bnQgPSBldGhVdGlsLmJ1ZmZlclRvSGV4KGRlY29kZWRBbW91bnQgYXMgQnVmZmVyKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFN0YWtpbmdPcGVyYXRpb25UeXBlcy5XSVRIRFJBVzpcbiAgICAgICAgdGhpcy52YWxpZGF0ZURlY29kZWREYXRhTGVuZ3RoKGRlY29kZWQubGVuZ3RoLCAxLCBkYXRhKTtcbiAgICAgICAgY29uc3QgW2luZGV4XSA9IGRlY29kZWQ7XG4gICAgICAgIHRoaXMuX2luZGV4ID0gaGV4U3RyaW5nVG9OdW1iZXIoZXRoVXRpbC5idWZmZXJUb0hleChpbmRleCBhcyBCdWZmZXIpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkIHN0YWtpbmcgZGF0YTogJHt0aGlzLl90eXBlfWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVEZWNvZGVkRGF0YUxlbmd0aChhY3R1YWw6IG51bWJlciwgZXhwZWN0ZWQ6IG51bWJlciwgZGF0YTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgc3Rha2luZyBkZWNvZGVkIGRhdGE6ICR7ZGF0YX1gKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsYXNzaWZ5U3Rha2luZ1R5cGUoZGF0YTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGRhdGEuc3RhcnRzV2l0aChWb3RlTWV0aG9kSWQpKSB7XG4gICAgICB0aGlzLl90eXBlID0gU3Rha2luZ09wZXJhdGlvblR5cGVzLlZPVEU7XG4gICAgfSBlbHNlIGlmIChkYXRhLnN0YXJ0c1dpdGgoVW52b3RlTWV0aG9kSWQpKSB7XG4gICAgICB0aGlzLl90eXBlID0gU3Rha2luZ09wZXJhdGlvblR5cGVzLlVOVk9URTtcbiAgICB9IGVsc2UgaWYgKGRhdGEuc3RhcnRzV2l0aChBY3RpdmF0ZU1ldGhvZElkKSkge1xuICAgICAgdGhpcy5fdHlwZSA9IFN0YWtpbmdPcGVyYXRpb25UeXBlcy5BQ1RJVkFURTtcbiAgICB9IGVsc2UgaWYgKGRhdGEuc3RhcnRzV2l0aChVbmxvY2tNZXRob2RJZCkpIHtcbiAgICAgIHRoaXMuX3R5cGUgPSBTdGFraW5nT3BlcmF0aW9uVHlwZXMuVU5MT0NLO1xuICAgIH0gZWxzZSBpZiAoZGF0YS5zdGFydHNXaXRoKFdpdGhkcmF3TWV0aG9kSWQpKSB7XG4gICAgICB0aGlzLl90eXBlID0gU3Rha2luZ09wZXJhdGlvblR5cGVzLldJVEhEUkFXO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkIHN0YWtpbmcgYnl0ZWNvZGU6ICR7ZGF0YX1gKTtcbiAgICB9XG4gIH1cblxuICAvLyBlbmRyZWdpb25cbn1cbiJdfQ==
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -34,4 +38,4 @@ class Transaction extends sdk_coin_eth_1.Transaction {
|
|
|
34
38
|
}
|
|
35
39
|
}
|
|
36
40
|
exports.Transaction = Transaction;
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsc0RBQWtGO0FBQ2xGLG1DQUE4QztBQUM5QywrQ0FBaUM7QUFFakMsTUFBYSxXQUFZLFNBQVEsMEJBQWM7SUFDN0Msa0JBQWtCLENBQUMsTUFBb0I7UUFDckMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLDJCQUFtQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGtCQUFrQjtJQUNYLE1BQU0sQ0FBQyxjQUFjLENBQzFCLFVBQWdDLEVBQ2hDLE1BQXNCLEVBQ3RCLFlBQW9CO1FBRXBCLE9BQU8sSUFBSSxXQUFXLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQztDQUNGO0FBZEQsa0NBY0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IEV0aGVyZXVtQ29tbW9uIGZyb20gJ0BldGhlcmV1bWpzL2NvbW1vbic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiBhcyBFdGhUcmFuc2FjdGlvbiwgTGVnYWN5VHhEYXRhIH0gZnJvbSAnQGJpdGdvL3Nkay1jb2luLWV0aCc7XG5pbXBvcnQgeyBDZWxvVHJhbnNhY3Rpb25EYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgKiBhcyBVdGlscyBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uIGV4dGVuZHMgRXRoVHJhbnNhY3Rpb24ge1xuICBzZXRUcmFuc2FjdGlvbkRhdGEodHhEYXRhOiBMZWdhY3lUeERhdGEpOiB2b2lkIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbkRhdGEgPSBDZWxvVHJhbnNhY3Rpb25EYXRhLmZyb21Kc29uKHR4RGF0YSk7XG4gICAgdGhpcy51cGRhdGVGaWVsZHMoKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21TZXJpYWxpemVkKFxuICAgIGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+LFxuICAgIGNvbW1vbjogRXRoZXJldW1Db21tb24sXG4gICAgc2VyaWFsaXplZFR4OiBzdHJpbmdcbiAgKTogVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiBuZXcgVHJhbnNhY3Rpb24oY29pbkNvbmZpZywgY29tbW9uLCBVdGlscy5kZXNlcmlhbGl6ZShzZXJpYWxpemVkVHgpKTtcbiAgfVxufVxuIl19
|
|
@@ -16,7 +16,7 @@ const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
|
16
16
|
class TransactionBuilder extends sdk_coin_eth_1.TransactionBuilder {
|
|
17
17
|
constructor(_coinConfig) {
|
|
18
18
|
super(_coinConfig);
|
|
19
|
-
this._common = utils_1.getCommon(this._coinConfig.network.type);
|
|
19
|
+
this._common = (0, utils_1.getCommon)(this._coinConfig.network.type);
|
|
20
20
|
this.transaction = new transaction_1.Transaction(this._coinConfig, this._common);
|
|
21
21
|
}
|
|
22
22
|
/** @inheritdoc */
|
|
@@ -202,7 +202,7 @@ class TransactionBuilder extends sdk_coin_eth_1.TransactionBuilder {
|
|
|
202
202
|
* @protected for internal use when the enableFinalVField flag is true.
|
|
203
203
|
*/
|
|
204
204
|
getFinalV() {
|
|
205
|
-
return ethereumjs_util_1.addHexPrefix(this._common.chainIdBN().toString(16));
|
|
205
|
+
return (0, ethereumjs_util_1.addHexPrefix)(this._common.chainIdBN().toString(16));
|
|
206
206
|
}
|
|
207
207
|
/**
|
|
208
208
|
* The value to send along with this transaction. 0 by default
|
|
@@ -228,4 +228,4 @@ class TransactionBuilder extends sdk_coin_eth_1.TransactionBuilder {
|
|
|
228
228
|
}
|
|
229
229
|
}
|
|
230
230
|
exports.TransactionBuilder = TransactionBuilder;
|
|
231
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0Esb0VBQXlDO0FBQ3pDLHNEQUFtSDtBQUNuSCw4Q0FBZ0c7QUFDaEcsK0NBQTRDO0FBQzVDLHFEQUFrRDtBQUVsRCxtQ0FBMEQ7QUFDMUQsdURBQW9EO0FBQ3BELHFEQUErQztBQUMvQyxnRUFBcUM7QUFFckMsTUFBYSxrQkFBbUIsU0FBUSxpQ0FBcUI7SUFLM0QsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxpQkFBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSx5QkFBVyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsSUFBSSxDQUFDLElBQXFCO1FBQ3hCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUM7SUFDbkMsQ0FBQztJQUVTLGtCQUFrQjtRQUMxQixRQUFRLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDbEIsS0FBSywwQkFBZSxDQUFDLFdBQVc7Z0JBQzlCLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7WUFDMUMsS0FBSywwQkFBZSxDQUFDLGFBQWEsQ0FBQztZQUNuQyxLQUFLLDBCQUFlLENBQUMsV0FBVyxDQUFDO1lBQ2pDLEtBQUssMEJBQWUsQ0FBQyxhQUFhLENBQUM7WUFDbkMsS0FBSywwQkFBZSxDQUFDLGVBQWUsQ0FBQztZQUNyQyxLQUFLLDBCQUFlLENBQUMsZUFB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Z28vc3RhdGljcyc7XG5pbXBvcnQgRXRoZXJldW1BYmkgZnJvbSAnZXRoZXJldW1qcy1hYmknO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIGFzIEV0aFRyYW5zYWN0aW9uQnVpbGRlciwgVHhEYXRhLCB3YWxsZXRTaW1wbGVDb25zdHJ1Y3RvciB9IGZyb20gJ0BiaXRnby9zZGstY29pbi1ldGgnO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCBUcmFuc2FjdGlvblR5cGUsIFN0YWtpbmdPcGVyYXRpb25UeXBlcyB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgU3Rha2luZ0J1aWxkZXIgfSBmcm9tICcuL3N0YWtpbmdCdWlsZGVyJztcbmltcG9ydCB7IFN0YWtpbmdDYWxsIH0gZnJvbSAnLi9zdGFraW5nQ2FsbCc7XG5pbXBvcnQgeyBnZXRDb21tb24sIHdhbGxldFNpbXBsZUJ5dGVDb2RlIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBUcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zZmVyQnVpbGRlcic7XG5pbXBvcnQgeyBhZGRIZXhQcmVmaXggfSBmcm9tICdldGhlcmV1bWpzLXV0aWwnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyIGV4dGVuZHMgRXRoVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgLy8gU3Rha2luZyBzcGVjaWZpYyBwYXJhbWV0ZXJzXG4gIHByaXZhdGUgX3N0YWtpbmdCdWlsZGVyPzogU3Rha2luZ0J1aWxkZXI7XG4gIHByb3RlY3RlZCBfdHJhbnNmZXI6IFRyYW5zZmVyQnVpbGRlcjtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fY29tbW9uID0gZ2V0Q29tbW9uKHRoaXMuX2NvaW5Db25maWcubmV0d29yay50eXBlKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcsIHRoaXMuX2NvbW1vbik7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdHlwZSh0eXBlOiBUcmFuc2FjdGlvblR5cGUpOiB2b2lkIHtcbiAgICBzdXBlci50eXBlKHR5cGUpO1xuICAgIHRoaXMuX3N0YWtpbmdCdWlsZGVyID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFRyYW5zYWN0aW9uRGF0YSgpOiBUeERhdGEge1xuICAgIHN3aXRjaCAodGhpcy5fdHlwZSkge1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0xvY2s6XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkTG9ja1N0YWtlVHJhbnNhY3Rpb24oKTtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdVbmxvY2s6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nVm90ZTpcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdVbnZvdGU6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGU6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nV2l0aGRyYXc6XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkU3Rha2luZ1RyYW5zYWN0aW9uKCk7XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5nZXRUcmFuc2FjdGlvbkRhdGEoKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBUcmFuc2FjdGlvbiB7XG4gICAgbGV0IHR4OiBUcmFuc2FjdGlvbjtcbiAgICBpZiAoL14weD9bMC05YS1mXXsxLH0kLy50ZXN0KHJhd1RyYW5zYWN0aW9uLnRvTG93ZXJDYXNlKCkpKSB7XG4gICAgICB0eCA9IFRyYW5zYWN0aW9uLmZyb21TZXJpYWxpemVkKHRoaXMuX2NvaW5Db25maWcsIHRoaXMuX2NvbW1vbiwgcmF3VHJhbnNhY3Rpb24pO1xuICAgICAgc3VwZXIubG9hZEJ1aWxkZXJJbnB1dCh0eC50b0pzb24oKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHR4RGF0YSA9IEpTT04ucGFyc2UocmF3VHJhbnNhY3Rpb24pO1xuICAgICAgdHggPSBuZXcgVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZywgdGhpcy5fY29tbW9uLCB0eERhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gdHg7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0VHJhbnNhY3Rpb25UeXBlRmllbGRzKGRlY29kZWRUeXBlOiBUcmFuc2FjdGlvblR5cGUsIHRyYW5zYWN0aW9uSnNvbjogVHhEYXRhKTogdm9pZCB7XG4gICAgc3dpdGNoIChkZWNvZGVkVHlwZSkge1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0xvY2s6XG4gICAgICAgIHRoaXMuX3N0YWtpbmdCdWlsZGVyID0gbmV3IFN0YWtpbmdCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpXG4gICAgICAgICAgLnR5cGUoU3Rha2luZ09wZXJhdGlvblR5cGVzLkxPQ0spXG4gICAgICAgICAgLmFtb3VudCh0cmFuc2FjdGlvbkpzb24udmFsdWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdVbmxvY2s6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nVm90ZTpcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdVbnZvdGU6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGU6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nV2l0aGRyYXc6XG4gICAgICAgIHRoaXMuX3N0YWtpbmdCdWlsZGVyID0gbmV3IFN0YWtpbmdCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcsIHRyYW5zYWN0aW9uSnNvbi5kYXRhKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBzdXBlci5zZXRUcmFuc2FjdGlvblR5cGVGaWVsZHMoZGVjb2RlZFR5cGUsIHRyYW5zYWN0aW9uSnNvbik7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBzbWFydCBjb250cmFjdCBlbmNvZGVkIGRhdGFcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gYWRkcmVzc2VzIC0gdGhlIGNvbnRyYWN0IHNpZ25lcnNcbiAgICogQHJldHVybnMge3N0cmluZ30gLSB0aGUgc21hcnQgY29udHJhY3QgZW5jb2RlZCBkYXRhXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0Q29udHJhY3REYXRhKGFkZHJlc3Nlczogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIGNvbnN0IHBhcmFtcyA9IFthZGRyZXNzZXNdO1xuICAgIGNvbnN0IHJlc3VsdEVuY29kZWRQYXJhbWV0ZXJzID0gRXRoZXJldW1BYmkucmF3RW5jb2RlKHdhbGxldFNpbXBsZUNvbnN0cnVjdG9yLCBwYXJhbXMpXG4gICAgICAudG9TdHJpbmcoJ2hleCcpXG4gICAgICAucmVwbGFjZSgnMHgnLCAnJyk7XG4gICAgcmV0dXJuIHdhbGxldFNpbXBsZUJ5dGVDb2RlICsgcmVzdWx0RW5jb2RlZFBhcmFtZXRlcnM7XG4gIH1cblxuICAvLyByZWdpb24gU3Rha2UgbWV0aG9kc1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBzdGFraW5nIGxvY2sgYnVpbGRlciBpZiBleGlzdCwgb3IgY3JlYXRlcyBhIG5ldyBvbmUgZm9yIHRoaXMgdHJhbnNhY3Rpb24gYW5kIHJldHVybnMgaXRcbiAgICogcmVxdWlyZXM6IGFtb3VudFxuICAgKlxuICAgKiBAcmV0dXJucyB7U3Rha2luZ0J1aWxkZXJ9IHRoZSBzdGFraW5nIGJ1aWxkZXJcbiAgICovXG4gIGxvY2soKTogU3Rha2luZ0J1aWxkZXIge1xuICAgIGlmICh0aGlzLl90eXBlICE9PSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0xvY2spIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0xvY2sgY2FuIG9ubHkgYmUgc2V0IGZvciBTdGFraW5nIExvY2sgdHJhbnNhY3Rpb25zIHR5cGUnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5nZXRCdWlsZGVyKFN0YWtpbmdPcGVyYXRpb25UeXBlcy5MT0NLKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBzdGFraW5nIHZvdGUgYnVpbGRlciBpZiBleGlzdCwgb3IgY3JlYXRlcyBhIG5ldyBvbmUgZm9yIHRoaXMgdHJhbnNhY3Rpb24gYW5kIHJldHVybnMgaXRcbiAgICogcmVxdWlyZXM6IGdyb3VwLCBsZXNzZXIsIGdyZWF0ZXIsIGFtb3VudFxuICAgKlxuICAgKiBAcmV0dXJucyB7U3Rha2luZ0J1aWxkZXJ9IHRoZSBzdGFraW5nIGJ1aWxkZXJcbiAgICovXG4gIHZvdGUoKTogU3Rha2luZ0J1aWxkZXIge1xuICAgIGlmICh0aGlzLl90eXBlICE9PSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1ZvdGUpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1ZvdGVzIGNhbiBvbmx5IGJlIHNldCBmb3IgYSBzdGFraW5nIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZ2V0QnVpbGRlcihTdGFraW5nT3BlcmF0aW9uVHlwZXMuVk9URSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgc3Rha2luZyBhY3RpdmF0ZSBidWlsZGVyIGlmIGV4aXN0LCBvciBjcmVhdGVzIGEgbmV3IG9uZSBmb3IgdGhpcyB0cmFuc2FjdGlvbiBhbmQgcmV0dXJucyBpdFxuICAgKiByZXF1aXJlczogZ3JvdXBcbiAgICpcbiAgICogQHJldHVybnMge1N0YWtpbmdCdWlsZGVyfSB0aGUgc3Rha2luZyBidWlsZGVyXG4gICAqL1xuICBhY3RpdmF0ZSgpOiBTdGFraW5nQnVpbGRlciB7XG4gICAgaWYgKHRoaXMuX3R5cGUgIT09IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGUpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0FjdGl2YXRpb24gY2FuIG9ubHkgYmUgc2V0IGZvciBhIHN0YWtpbmcgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5nZXRCdWlsZGVyKFN0YWtpbmdPcGVyYXRpb25UeXBlcy5BQ1RJVkFURSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgc3Rha2luZyB1bmxvY2sgYnVpbGRlciBpZiBleGlzdCwgb3IgY3JlYXRlcyBhIG5ldyBvbmUgZm9yIHRoaXMgdHJhbnNhY3Rpb24gYW5kIHJldHVybnMgaXRcbiAgICogcmVxdWlyZXM6IGFtb3VudFxuICAgKlxuICAgKiBAcmV0dXJucyB7U3Rha2luZ0J1aWxkZXJ9IHRoZSBzdGFraW5nIGJ1aWxkZXJcbiAgICovXG4gIHVubG9jaygpOiBTdGFraW5nQnVpbGRlciB7XG4gICAgaWYgKHRoaXMuX3R5cGUgIT09IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nVW5sb2NrKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdVbmxvY2sgY2FuIG9ubHkgYmUgc2V0IGZvciBTdGFraW5nIFVubG9jayB0cmFuc2FjdGlvbnMgdHlwZScpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldEJ1aWxkZXIoU3Rha2luZ09wZXJhdGlvblR5cGVzLlVOTE9DSyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgc3Rha2luZyB1bnZvdGUgYnVpbGRlciBpZiBleGlzdCwgb3IgY3JlYXRlcyBhIG5ldyBvbmUgZm9yIHRoaXMgdHJhbnNhY3Rpb24gYW5kIHJldHVybnMgaXRcbiAgICogcmVxdWlyZXM6IGdyb3VwLCBsZXNzZXIsIGdyZWF0ZXIsIGFtb3VudCwgaW5kZXhcbiAgICpcbiAgICogQHJldHVybnMge1N0YWtpbmdCdWlsZGVyfSB0aGUgc3Rha2luZyBidWlsZGVyXG4gICAqL1xuICB1bnZvdGUoKTogU3Rha2luZ0J1aWxkZXIge1xuICAgIGlmICh0aGlzLl90eXBlICE9PSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1Vudm90ZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVW52b3RlIGNhbiBvbmx5IGJlIHNldCBmb3IgYSBzdGFraW5nIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZ2V0QnVpbGRlcihTdGFraW5nT3BlcmF0aW9uVHlwZXMuVU5WT1RFKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBzdGFraW5nIHdpdGhkcmF3IGJ1aWxkZXIgaWYgZXhpc3QsIG9yIGNyZWF0ZXMgYSBuZXcgb25lIGZvciB0aGlzIHRyYW5zYWN0aW9uIGFuZCByZXR1cm5zIGl0XG4gICAqIHJlcXVpcmVzOiBpbmRleCAodW5sb2NrIGxpc3QpXG4gICAqXG4gICAqIEByZXR1cm5zIHtTdGFraW5nQnVpbGRlcn0gdGhlIHN0YWtpbmcgYnVpbGRlclxuICAgKi9cbiAgd2l0aGRyYXcoKTogU3Rha2luZ0J1aWxkZXIge1xuICAgIGlmICh0aGlzLl90eXBlICE9PSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1dpdGhkcmF3KSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdXaXRoZHJhdyBjYW4gb25seSBiZSBzZXQgZm9yIGEgc3Rha2luZyB0cmFuc2FjdGlvbicpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldEJ1aWxkZXIoU3Rha2luZ09wZXJhdGlvblR5cGVzLldJVEhEUkFXKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0cmFuc2ZlcihkYXRhPzogc3RyaW5nKTogVHJhbnNmZXJCdWlsZGVyIHtcbiAgICBpZiAodGhpcy5fdHlwZSAhPT0gVHJhbnNhY3Rpb25UeXBlLlNlbmQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zZmVycyBjYW4gb25seSBiZSBzZXQgZm9yIHNlbmQgdHJhbnNhY3Rpb25zJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5fdHJhbnNmZXIpIHtcbiAgICAgIHRoaXMuX3RyYW5zZmVyID0gbmV3IFRyYW5zZmVyQnVpbGRlcihkYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zZmVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgYXBwcm9wcmlhdGUgYnVpbGRlciBmb3IgdGhlIHNlbGVjdGVkIHR5cGVcbiAgICpcbiAgICogQHBhcmFtIHtTdGFraW5nT3BlcmF0aW9uVHlwZXN9IHR5cGUgdGhlIHNlbGVjdGVkIHR5cGUgZm9yIHRoZSBzdGFraW5nIGJ1aWxkZXJcbiAgICogQHJldHVybnMge1N0YWtpbmdCdWlsZGVyfSB0aGUgc3Rha2luZyBidWlsZGVyIGZvciB0aGUgc2VsZWN0ZWQgdHlwZVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRCdWlsZGVyKHR5cGU6IFN0YWtpbmdPcGVyYXRpb25UeXBlcyk6IFN0YWtpbmdCdWlsZGVyIHtcbiAgICBpZiAoIXRoaXMuX3N0YWtpbmdCdWlsZGVyKSB7XG4gICAgICB0aGlzLl9zdGFraW5nQnVpbGRlciA9IG5ldyBTdGFraW5nQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKS50eXBlKHR5cGUpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zdGFraW5nQnVpbGRlcjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3Rha2luZygpOiBTdGFraW5nQ2FsbCB7XG4gICAgaWYgKCF0aGlzLl9zdGFraW5nQnVpbGRlcikge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignTm8gc3Rha2luZyBpbmZvcm1hdGlvbiBzZXQnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3N0YWtpbmdCdWlsZGVyLmJ1aWxkKCk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkTG9ja1N0YWtlVHJhbnNhY3Rpb24oKTogVHhEYXRhIHtcbiAgICBjb25zdCBzdGFrZSA9IHRoaXMuZ2V0U3Rha2luZygpO1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJ1aWxkQmFzZShzdGFrZS5zZXJpYWxpemUoKSk7XG4gICAgZGF0YS50byA9IHN0YWtlLmFkZHJlc3M7XG4gICAgZGF0YS52YWx1ZSA9IHN0YWtlLmFtb3VudDtcblxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFN0YWtpbmdUcmFuc2FjdGlvbigpOiBUeERhdGEge1xuICAgIGNvbnN0IHN0YWtlID0gdGhpcy5nZXRTdGFraW5nKCk7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuYnVpbGRCYXNlKHN0YWtlLnNlcmlhbGl6ZSgpKTtcbiAgICBkYXRhLnRvID0gc3Rha2UuYWRkcmVzcztcblxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZmluYWwgdiB2YWx1ZS4gRmluYWwgdiBpcyBkZXNjcmliZWQgaW4gRUlQLTE1NS5cbiAgICpcbiAgICogQHByb3RlY3RlZCBmb3IgaW50ZXJuYWwgdXNlIHdoZW4gdGhlIGVuYWJsZUZpbmFsVkZpZWxkIGZsYWcgaXMgdHJ1ZS5cbiAgICovXG4gIHByb3RlY3RlZCBnZXRGaW5hbFYoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYWRkSGV4UHJlZml4KHRoaXMuX2NvbW1vbi5jaGFpbklkQk4oKS50b1N0cmluZygxNikpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSB0byBzZW5kIGFsb25nIHdpdGggdGhpcyB0cmFuc2FjdGlvbi4gMCBieSBkZWZhdWx0XG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VuZCBhbG9uZyB3aXRoIHRoaXMgdHJhbnNhY3Rpb25cbiAgICovXG4gIHZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRlUHJlY2lzaW9uKHZhbHVlLCAnVmFsdWUnKTtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgdmFsaWRhdGVQcmVjaXNpb24odmFsdWU6IHN0cmluZywgY29udGV4dD86IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnRleHQgPSBjb250ZXh0ID8gY29udGV4dCArICcgJyA6ICcnO1xuICAgIGNvbnN0IHZhbHVlTnVtYmVyID0gTnVtYmVyKHZhbHVlKTtcbiAgICAvLyB0aGUgQ2VsbyBsaWJyYXJ5IGludGVybmFsbHkgY29udmVydHMgdGhlIHN0cmluZyB2YWx1ZSB0byBhIG51bWJlciBhbmQgY29udmVydHMgdG8gaGV4LCB3aGljaCBjYW4gcmVzdWx0IGluIGEgbG9zcyBvZiBwcmVjaXNpb24gZm9yIG51bWJlcnMgd2l0aCA+PSAxNSBzaWduaWZpY2FudCBkaWdpdHNcbiAgICBjb25zdCB2YWx1ZUJpZ051bWJlciA9IG5ldyBCaWdOdW1iZXIodmFsdWVOdW1iZXIudG9TdHJpbmcoMTYpLCAxNik7XG4gICAgaWYgKGlzTmFOKHZhbHVlTnVtYmVyKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgJHtjb250ZXh0fSR7dmFsdWV9IGlzIG5vdCBhIHZhbGlkIG51bWJlcmApO1xuICAgIH0gZWxzZSBpZiAoIXZhbHVlQmlnTnVtYmVyLmlzRXF1YWxUbyh2YWx1ZU51bWJlcikpIHtcbiAgICAgIC8vIFRPRE8oQkctNjI3MTQpOiByZW1vdmUgdGhpcyBjaGVjayBvbmNlIHRoZSBjZWxvIGxpYnJhcnkgaXMgZml4ZWRcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgIGAke2NvbnRleHR9JHt2YWx1ZX0gY2Fubm90IGJlIHJlcHJlc2VudGVkIGJ5IGEgSlMgbnVtYmVyLCBwbGVhc2UgdHJ5IHVzaW5nIGZld2VyIHNpZ25pZmljYW50IGRpZ2l0cy4gV2UgYXJlIHdvcmtpbmcgdG8gc3VwcG9ydCBhbGwgdmFsdWVzIGluIHRoZSBmdXR1cmUuYFxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgLy8gZW5kcmVnaW9uXG59XG4iXX0=
|
|
231
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0Esb0VBQXlDO0FBQ3pDLHNEQUFtSDtBQUNuSCw4Q0FBZ0c7QUFDaEcsK0NBQTRDO0FBQzVDLHFEQUFrRDtBQUVsRCxtQ0FBMEQ7QUFDMUQsdURBQW9EO0FBQ3BELHFEQUErQztBQUMvQyxnRUFBcUM7QUFFckMsTUFBYSxrQkFBbUIsU0FBUSxpQ0FBcUI7SUFLM0QsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFBLGlCQUFTLEVBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLHlCQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixJQUFJLENBQUMsSUFBcUI7UUFDeEIsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQztJQUNuQyxDQUFDO0lBRVMsa0JBQWtCO1FBQzFCLFFBQVEsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNsQixLQUFLLDBCQUFlLENBQUMsV0FBVztnQkFDOUIsT0FBTyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztZQUMxQyxLQUFLLDBCQUFlLENBQUMsYUFBYSxDQUFDO1lBQ25DLEtBQUssMEJBQWUsQ0FBQyxXQUFXLENBQUM7WUFDakMsS0FBSywwQkFBZSxDQUFDLGFBQWEsQ0FBQztZQUNuQyxLQUFLLDBCQUFlLENBQUMsZUFBZSxDQUFDO1lBQ3JDLEtBQUssMEJBQWUsQ0FB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ZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IEV0aGVyZXVtQWJpIGZyb20gJ2V0aGVyZXVtanMtYWJpJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciBhcyBFdGhUcmFuc2FjdGlvbkJ1aWxkZXIsIFR4RGF0YSwgd2FsbGV0U2ltcGxlQ29uc3RydWN0b3IgfSBmcm9tICdAYml0Z28vc2RrLWNvaW4tZXRoJztcbmltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlLCBTdGFraW5nT3BlcmF0aW9uVHlwZXMgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFN0YWtpbmdCdWlsZGVyIH0gZnJvbSAnLi9zdGFraW5nQnVpbGRlcic7XG5pbXBvcnQgeyBTdGFraW5nQ2FsbCB9IGZyb20gJy4vc3Rha2luZ0NhbGwnO1xuaW1wb3J0IHsgZ2V0Q29tbW9uLCB3YWxsZXRTaW1wbGVCeXRlQ29kZSB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2ZlckJ1aWxkZXInO1xuaW1wb3J0IHsgYWRkSGV4UHJlZml4IH0gZnJvbSAnZXRoZXJldW1qcy11dGlsJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIEV0aFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIC8vIFN0YWtpbmcgc3BlY2lmaWMgcGFyYW1ldGVyc1xuICBwcml2YXRlIF9zdGFraW5nQnVpbGRlcj86IFN0YWtpbmdCdWlsZGVyO1xuICBwcm90ZWN0ZWQgX3RyYW5zZmVyOiBUcmFuc2ZlckJ1aWxkZXI7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX2NvbW1vbiA9IGdldENvbW1vbih0aGlzLl9jb2luQ29uZmlnLm5ldHdvcmsudHlwZSk7XG4gICAgdGhpcy50cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnLCB0aGlzLl9jb21tb24pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHR5cGUodHlwZTogVHJhbnNhY3Rpb25UeXBlKTogdm9pZCB7XG4gICAgc3VwZXIudHlwZSh0eXBlKTtcbiAgICB0aGlzLl9zdGFraW5nQnVpbGRlciA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRUcmFuc2FjdGlvbkRhdGEoKTogVHhEYXRhIHtcbiAgICBzd2l0Y2ggKHRoaXMuX3R5cGUpIHtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdMb2NrOlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZExvY2tTdGFrZVRyYW5zYWN0aW9uKCk7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nVW5sb2NrOlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1ZvdGU6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nVW52b3RlOlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0FjdGl2YXRlOlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1dpdGhkcmF3OlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZFN0YWtpbmdUcmFuc2FjdGlvbigpO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuZ2V0VHJhbnNhY3Rpb25EYXRhKCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogVHJhbnNhY3Rpb24ge1xuICAgIGxldCB0eDogVHJhbnNhY3Rpb247XG4gICAgaWYgKC9eMHg/WzAtOWEtZl17MSx9JC8udGVzdChyYXdUcmFuc2FjdGlvbi50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgdHggPSBUcmFuc2FjdGlvbi5mcm9tU2VyaWFsaXplZCh0aGlzLl9jb2luQ29uZmlnLCB0aGlzLl9jb21tb24sIHJhd1RyYW5zYWN0aW9uKTtcbiAgICAgIHN1cGVyLmxvYWRCdWlsZGVySW5wdXQodHgudG9Kc29uKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0eERhdGEgPSBKU09OLnBhcnNlKHJhd1RyYW5zYWN0aW9uKTtcbiAgICAgIHR4ID0gbmV3IFRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcsIHRoaXMuX2NvbW1vbiwgdHhEYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIHR4O1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldFRyYW5zYWN0aW9uVHlwZUZpZWxkcyhkZWNvZGVkVHlwZTogVHJhbnNhY3Rpb25UeXBlLCB0cmFuc2FjdGlvbkpzb246IFR4RGF0YSk6IHZvaWQge1xuICAgIHN3aXRjaCAoZGVjb2RlZFR5cGUpIHtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdMb2NrOlxuICAgICAgICB0aGlzLl9zdGFraW5nQnVpbGRlciA9IG5ldyBTdGFraW5nQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKVxuICAgICAgICAgIC50eXBlKFN0YWtpbmdPcGVyYXRpb25UeXBlcy5MT0NLKVxuICAgICAgICAgIC5hbW91bnQodHJhbnNhY3Rpb25Kc29uLnZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nVW5sb2NrOlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1ZvdGU6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nVW52b3RlOlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0FjdGl2YXRlOlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1dpdGhkcmF3OlxuICAgICAgICB0aGlzLl9zdGFraW5nQnVpbGRlciA9IG5ldyBTdGFraW5nQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnLCB0cmFuc2FjdGlvbkpzb24uZGF0YSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgc3VwZXIuc2V0VHJhbnNhY3Rpb25UeXBlRmllbGRzKGRlY29kZWRUeXBlLCB0cmFuc2FjdGlvbkpzb24pO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgc21hcnQgY29udHJhY3QgZW5jb2RlZCBkYXRhXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGFkZHJlc3NlcyAtIHRoZSBjb250cmFjdCBzaWduZXJzXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gdGhlIHNtYXJ0IGNvbnRyYWN0IGVuY29kZWQgZGF0YVxuICAgKi9cbiAgcHJvdGVjdGVkIGdldENvbnRyYWN0RGF0YShhZGRyZXNzZXM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYXJhbXMgPSBbYWRkcmVzc2VzXTtcbiAgICBjb25zdCByZXN1bHRFbmNvZGVkUGFyYW1ldGVycyA9IEV0aGVyZXVtQWJpLnJhd0VuY29kZSh3YWxsZXRTaW1wbGVDb25zdHJ1Y3RvciwgcGFyYW1zKVxuICAgICAgLnRvU3RyaW5nKCdoZXgnKVxuICAgICAgLnJlcGxhY2UoJzB4JywgJycpO1xuICAgIHJldHVybiB3YWxsZXRTaW1wbGVCeXRlQ29kZSArIHJlc3VsdEVuY29kZWRQYXJhbWV0ZXJzO1xuICB9XG5cbiAgLy8gcmVnaW9uIFN0YWtlIG1ldGhvZHNcblxuICAvKipcbiAgICogR2V0cyB0aGUgc3Rha2luZyBsb2NrIGJ1aWxkZXIgaWYgZXhpc3QsIG9yIGNyZWF0ZXMgYSBuZXcgb25lIGZvciB0aGlzIHRyYW5zYWN0aW9uIGFuZCByZXR1cm5zIGl0XG4gICAqIHJlcXVpcmVzOiBhbW91bnRcbiAgICpcbiAgICogQHJldHVybnMge1N0YWtpbmdCdWlsZGVyfSB0aGUgc3Rha2luZyBidWlsZGVyXG4gICAqL1xuICBsb2NrKCk6IFN0YWtpbmdCdWlsZGVyIHtcbiAgICBpZiAodGhpcy5fdHlwZSAhPT0gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdMb2NrKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdMb2NrIGNhbiBvbmx5IGJlIHNldCBmb3IgU3Rha2luZyBMb2NrIHRyYW5zYWN0aW9ucyB0eXBlJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZ2V0QnVpbGRlcihTdGFraW5nT3BlcmF0aW9uVHlwZXMuTE9DSyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgc3Rha2luZyB2b3RlIGJ1aWxkZXIgaWYgZXhpc3QsIG9yIGNyZWF0ZXMgYSBuZXcgb25lIGZvciB0aGlzIHRyYW5zYWN0aW9uIGFuZCByZXR1cm5zIGl0XG4gICAqIHJlcXVpcmVzOiBncm91cCwgbGVzc2VyLCBncmVhdGVyLCBhbW91bnRcbiAgICpcbiAgICogQHJldHVybnMge1N0YWtpbmdCdWlsZGVyfSB0aGUgc3Rha2luZyBidWlsZGVyXG4gICAqL1xuICB2b3RlKCk6IFN0YWtpbmdCdWlsZGVyIHtcbiAgICBpZiAodGhpcy5fdHlwZSAhPT0gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdWb3RlKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdWb3RlcyBjYW4gb25seSBiZSBzZXQgZm9yIGEgc3Rha2luZyB0cmFuc2FjdGlvbicpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldEJ1aWxkZXIoU3Rha2luZ09wZXJhdGlvblR5cGVzLlZPVEUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHN0YWtpbmcgYWN0aXZhdGUgYnVpbGRlciBpZiBleGlzdCwgb3IgY3JlYXRlcyBhIG5ldyBvbmUgZm9yIHRoaXMgdHJhbnNhY3Rpb24gYW5kIHJldHVybnMgaXRcbiAgICogcmVxdWlyZXM6IGdyb3VwXG4gICAqXG4gICAqIEByZXR1cm5zIHtTdGFraW5nQnVpbGRlcn0gdGhlIHN0YWtpbmcgYnVpbGRlclxuICAgKi9cbiAgYWN0aXZhdGUoKTogU3Rha2luZ0J1aWxkZXIge1xuICAgIGlmICh0aGlzLl90eXBlICE9PSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0FjdGl2YXRlKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdBY3RpdmF0aW9uIGNhbiBvbmx5IGJlIHNldCBmb3IgYSBzdGFraW5nIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZ2V0QnVpbGRlcihTdGFraW5nT3BlcmF0aW9uVHlwZXMuQUNUSVZBVEUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHN0YWtpbmcgdW5sb2NrIGJ1aWxkZXIgaWYgZXhpc3QsIG9yIGNyZWF0ZXMgYSBuZXcgb25lIGZvciB0aGlzIHRyYW5zYWN0aW9uIGFuZCByZXR1cm5zIGl0XG4gICAqIHJlcXVpcmVzOiBhbW91bnRcbiAgICpcbiAgICogQHJldHVybnMge1N0YWtpbmdCdWlsZGVyfSB0aGUgc3Rha2luZyBidWlsZGVyXG4gICAqL1xuICB1bmxvY2soKTogU3Rha2luZ0J1aWxkZXIge1xuICAgIGlmICh0aGlzLl90eXBlICE9PSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1VubG9jaykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVW5sb2NrIGNhbiBvbmx5IGJlIHNldCBmb3IgU3Rha2luZyBVbmxvY2sgdHJhbnNhY3Rpb25zIHR5cGUnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5nZXRCdWlsZGVyKFN0YWtpbmdPcGVyYXRpb25UeXBlcy5VTkxPQ0spO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHN0YWtpbmcgdW52b3RlIGJ1aWxkZXIgaWYgZXhpc3QsIG9yIGNyZWF0ZXMgYSBuZXcgb25lIGZvciB0aGlzIHRyYW5zYWN0aW9uIGFuZCByZXR1cm5zIGl0XG4gICAqIHJlcXVpcmVzOiBncm91cCwgbGVzc2VyLCBncmVhdGVyLCBhbW91bnQsIGluZGV4XG4gICAqXG4gICAqIEByZXR1cm5zIHtTdGFraW5nQnVpbGRlcn0gdGhlIHN0YWtpbmcgYnVpbGRlclxuICAgKi9cbiAgdW52b3RlKCk6IFN0YWtpbmdCdWlsZGVyIHtcbiAgICBpZiAodGhpcy5fdHlwZSAhPT0gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdVbnZvdGUpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1Vudm90ZSBjYW4gb25seSBiZSBzZXQgZm9yIGEgc3Rha2luZyB0cmFuc2FjdGlvbicpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldEJ1aWxkZXIoU3Rha2luZ09wZXJhdGlvblR5cGVzLlVOVk9URSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgc3Rha2luZyB3aXRoZHJhdyBidWlsZGVyIGlmIGV4aXN0LCBvciBjcmVhdGVzIGEgbmV3IG9uZSBmb3IgdGhpcyB0cmFuc2FjdGlvbiBhbmQgcmV0dXJucyBpdFxuICAgKiByZXF1aXJlczogaW5kZXggKHVubG9jayBsaXN0KVxuICAgKlxuICAgKiBAcmV0dXJucyB7U3Rha2luZ0J1aWxkZXJ9IHRoZSBzdGFraW5nIGJ1aWxkZXJcbiAgICovXG4gIHdpdGhkcmF3KCk6IFN0YWtpbmdCdWlsZGVyIHtcbiAgICBpZiAodGhpcy5fdHlwZSAhPT0gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdXaXRoZHJhdykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignV2l0aGRyYXcgY2FuIG9ubHkgYmUgc2V0IGZvciBhIHN0YWtpbmcgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5nZXRCdWlsZGVyKFN0YWtpbmdPcGVyYXRpb25UeXBlcy5XSVRIRFJBVyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdHJhbnNmZXIoZGF0YT86IHN0cmluZyk6IFRyYW5zZmVyQnVpbGRlciB7XG4gICAgaWYgKHRoaXMuX3R5cGUgIT09IFRyYW5zYWN0aW9uVHlwZS5TZW5kKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2ZlcnMgY2FuIG9ubHkgYmUgc2V0IGZvciBzZW5kIHRyYW5zYWN0aW9ucycpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX3RyYW5zZmVyKSB7XG4gICAgICB0aGlzLl90cmFuc2ZlciA9IG5ldyBUcmFuc2ZlckJ1aWxkZXIoZGF0YSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl90cmFuc2ZlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGFwcHJvcHJpYXRlIGJ1aWxkZXIgZm9yIHRoZSBzZWxlY3RlZCB0eXBlXG4gICAqXG4gICAqIEBwYXJhbSB7U3Rha2luZ09wZXJhdGlvblR5cGVzfSB0eXBlIHRoZSBzZWxlY3RlZCB0eXBlIGZvciB0aGUgc3Rha2luZyBidWlsZGVyXG4gICAqIEByZXR1cm5zIHtTdGFraW5nQnVpbGRlcn0gdGhlIHN0YWtpbmcgYnVpbGRlciBmb3IgdGhlIHNlbGVjdGVkIHR5cGVcbiAgICovXG4gIHByaXZhdGUgZ2V0QnVpbGRlcih0eXBlOiBTdGFraW5nT3BlcmF0aW9uVHlwZXMpOiBTdGFraW5nQnVpbGRlciB7XG4gICAgaWYgKCF0aGlzLl9zdGFraW5nQnVpbGRlcikge1xuICAgICAgdGhpcy5fc3Rha2luZ0J1aWxkZXIgPSBuZXcgU3Rha2luZ0J1aWxkZXIodGhpcy5fY29pbkNvbmZpZykudHlwZSh0eXBlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc3Rha2luZ0J1aWxkZXI7XG4gIH1cblxuICBwcml2YXRlIGdldFN0YWtpbmcoKTogU3Rha2luZ0NhbGwge1xuICAgIGlmICghdGhpcy5fc3Rha2luZ0J1aWxkZXIpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ05vIHN0YWtpbmcgaW5mb3JtYXRpb24gc2V0Jyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9zdGFraW5nQnVpbGRlci5idWlsZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZExvY2tTdGFrZVRyYW5zYWN0aW9uKCk6IFR4RGF0YSB7XG4gICAgY29uc3Qgc3Rha2UgPSB0aGlzLmdldFN0YWtpbmcoKTtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5idWlsZEJhc2Uoc3Rha2Uuc2VyaWFsaXplKCkpO1xuICAgIGRhdGEudG8gPSBzdGFrZS5hZGRyZXNzO1xuICAgIGRhdGEudmFsdWUgPSBzdGFrZS5hbW91bnQ7XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRTdGFraW5nVHJhbnNhY3Rpb24oKTogVHhEYXRhIHtcbiAgICBjb25zdCBzdGFrZSA9IHRoaXMuZ2V0U3Rha2luZygpO1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJ1aWxkQmFzZShzdGFrZS5zZXJpYWxpemUoKSk7XG4gICAgZGF0YS50byA9IHN0YWtlLmFkZHJlc3M7XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGZpbmFsIHYgdmFsdWUuIEZpbmFsIHYgaXMgZGVzY3JpYmVkIGluIEVJUC0xNTUuXG4gICAqXG4gICAqIEBwcm90ZWN0ZWQgZm9yIGludGVybmFsIHVzZSB3aGVuIHRoZSBlbmFibGVGaW5hbFZGaWVsZCBmbGFnIGlzIHRydWUuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0RmluYWxWKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGFkZEhleFByZWZpeCh0aGlzLl9jb21tb24uY2hhaW5JZEJOKCkudG9TdHJpbmcoMTYpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgdG8gc2VuZCBhbG9uZyB3aXRoIHRoaXMgdHJhbnNhY3Rpb24uIDAgYnkgZGVmYXVsdFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgVGhlIHZhbHVlIHRvIHNlbmQgYWxvbmcgd2l0aCB0aGlzIHRyYW5zYWN0aW9uXG4gICAqL1xuICB2YWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy52YWxpZGF0ZVByZWNpc2lvbih2YWx1ZSwgJ1ZhbHVlJyk7XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHZhbGlkYXRlUHJlY2lzaW9uKHZhbHVlOiBzdHJpbmcsIGNvbnRleHQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb250ZXh0ID0gY29udGV4dCA/IGNvbnRleHQgKyAnICcgOiAnJztcbiAgICBjb25zdCB2YWx1ZU51bWJlciA9IE51bWJlcih2YWx1ZSk7XG4gICAgLy8gdGhlIENlbG8gbGlicmFyeSBpbnRlcm5hbGx5IGNvbnZlcnRzIHRoZSBzdHJpbmcgdmFsdWUgdG8gYSBudW1iZXIgYW5kIGNvbnZlcnRzIHRvIGhleCwgd2hpY2ggY2FuIHJlc3VsdCBpbiBhIGxvc3Mgb2YgcHJlY2lzaW9uIGZvciBudW1iZXJzIHdpdGggPj0gMTUgc2lnbmlmaWNhbnQgZGlnaXRzXG4gICAgY29uc3QgdmFsdWVCaWdOdW1iZXIgPSBuZXcgQmlnTnVtYmVyKHZhbHVlTnVtYmVyLnRvU3RyaW5nKDE2KSwgMTYpO1xuICAgIGlmIChpc05hTih2YWx1ZU51bWJlcikpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYCR7Y29udGV4dH0ke3ZhbHVlfSBpcyBub3QgYSB2YWxpZCBudW1iZXJgKTtcbiAgICB9IGVsc2UgaWYgKCF2YWx1ZUJpZ051bWJlci5pc0VxdWFsVG8odmFsdWVOdW1iZXIpKSB7XG4gICAgICAvLyBUT0RPKEJHLTYyNzE0KTogcmVtb3ZlIHRoaXMgY2hlY2sgb25jZSB0aGUgY2VsbyBsaWJyYXJ5IGlzIGZpeGVkXG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICBgJHtjb250ZXh0fSR7dmFsdWV9IGNhbm5vdCBiZSByZXByZXNlbnRlZCBieSBhIEpTIG51bWJlciwgcGxlYXNlIHRyeSB1c2luZyBmZXdlciBzaWduaWZpY2FudCBkaWdpdHMuIFdlIGFyZSB3b3JraW5nIHRvIHN1cHBvcnQgYWxsIHZhbHVlcyBpbiB0aGUgZnV0dXJlLmBcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIC8vIGVuZHJlZ2lvblxufVxuIl19
|
package/dist/src/lib/types.js
CHANGED
|
@@ -10,32 +10,32 @@ const ethereumjs_util_1 = require("ethereumjs-util");
|
|
|
10
10
|
const sdk_coin_eth_1 = require("@bitgo/sdk-coin-eth");
|
|
11
11
|
class CeloTransaction {
|
|
12
12
|
constructor(tx) {
|
|
13
|
-
this._feeCurrency = ethereumjs_util_1.toBuffer('0x');
|
|
14
|
-
this._gatewayFeeRecipient = ethereumjs_util_1.toBuffer('0x');
|
|
15
|
-
this._gatewayFee = ethereumjs_util_1.toBuffer('0x');
|
|
16
|
-
this.to = ethereumjs_util_1.toBuffer([]);
|
|
17
|
-
this.v = ethereumjs_util_1.toBuffer([]);
|
|
18
|
-
this.r = ethereumjs_util_1.toBuffer([]);
|
|
19
|
-
this.s = ethereumjs_util_1.toBuffer([]);
|
|
20
|
-
this.nonce = ethereumjs_util_1.unpadBuffer(ethereumjs_util_1.toBuffer(tx.nonce));
|
|
21
|
-
this.gasLimit = ethereumjs_util_1.toBuffer(this.sanitizeHexString(tx.gasLimit));
|
|
22
|
-
this.gasPrice = ethereumjs_util_1.toBuffer(this.sanitizeHexString(tx.gasPrice));
|
|
23
|
-
this.data = ethereumjs_util_1.toBuffer(this.sanitizeHexString(tx.data));
|
|
24
|
-
this.value = ethereumjs_util_1.toBuffer(this.sanitizeHexString(tx.value));
|
|
13
|
+
this._feeCurrency = (0, ethereumjs_util_1.toBuffer)('0x');
|
|
14
|
+
this._gatewayFeeRecipient = (0, ethereumjs_util_1.toBuffer)('0x');
|
|
15
|
+
this._gatewayFee = (0, ethereumjs_util_1.toBuffer)('0x');
|
|
16
|
+
this.to = (0, ethereumjs_util_1.toBuffer)([]);
|
|
17
|
+
this.v = (0, ethereumjs_util_1.toBuffer)([]);
|
|
18
|
+
this.r = (0, ethereumjs_util_1.toBuffer)([]);
|
|
19
|
+
this.s = (0, ethereumjs_util_1.toBuffer)([]);
|
|
20
|
+
this.nonce = (0, ethereumjs_util_1.unpadBuffer)((0, ethereumjs_util_1.toBuffer)(tx.nonce));
|
|
21
|
+
this.gasLimit = (0, ethereumjs_util_1.toBuffer)(this.sanitizeHexString(tx.gasLimit));
|
|
22
|
+
this.gasPrice = (0, ethereumjs_util_1.toBuffer)(this.sanitizeHexString(tx.gasPrice));
|
|
23
|
+
this.data = (0, ethereumjs_util_1.toBuffer)(this.sanitizeHexString(tx.data));
|
|
24
|
+
this.value = (0, ethereumjs_util_1.toBuffer)(this.sanitizeHexString(tx.value));
|
|
25
25
|
if (tx.to) {
|
|
26
|
-
this.to = ethereumjs_util_1.toBuffer(tx.to);
|
|
26
|
+
this.to = (0, ethereumjs_util_1.toBuffer)(tx.to);
|
|
27
27
|
}
|
|
28
28
|
if (tx.v) {
|
|
29
|
-
this.v = ethereumjs_util_1.toBuffer(tx.v);
|
|
29
|
+
this.v = (0, ethereumjs_util_1.toBuffer)(tx.v);
|
|
30
30
|
}
|
|
31
31
|
if (tx.r) {
|
|
32
|
-
this.r = ethereumjs_util_1.toBuffer(tx.r);
|
|
32
|
+
this.r = (0, ethereumjs_util_1.toBuffer)(tx.r);
|
|
33
33
|
}
|
|
34
34
|
if (tx.s) {
|
|
35
|
-
this.s = ethereumjs_util_1.toBuffer(tx.s);
|
|
35
|
+
this.s = (0, ethereumjs_util_1.toBuffer)(tx.s);
|
|
36
36
|
}
|
|
37
37
|
if (tx.from) {
|
|
38
|
-
this._from = ethereumjs_util_1.toBuffer(tx.from);
|
|
38
|
+
this._from = (0, ethereumjs_util_1.toBuffer)(tx.from);
|
|
39
39
|
}
|
|
40
40
|
this.initRaw();
|
|
41
41
|
}
|
|
@@ -79,16 +79,16 @@ class CeloTransaction {
|
|
|
79
79
|
else {
|
|
80
80
|
items = this.raw
|
|
81
81
|
.slice(0, 9)
|
|
82
|
-
.concat([ethereumjs_util_1.toBuffer(this.getChainId()), ethereumjs_util_1.unpadBuffer(ethereumjs_util_1.toBuffer(0)), ethereumjs_util_1.unpadBuffer(ethereumjs_util_1.toBuffer(0))]);
|
|
82
|
+
.concat([(0, ethereumjs_util_1.toBuffer)(this.getChainId()), (0, ethereumjs_util_1.unpadBuffer)((0, ethereumjs_util_1.toBuffer)(0)), (0, ethereumjs_util_1.unpadBuffer)((0, ethereumjs_util_1.toBuffer)(0))]);
|
|
83
83
|
}
|
|
84
|
-
return ethereumjs_util_1.rlphash(items);
|
|
84
|
+
return (0, ethereumjs_util_1.rlphash)(items);
|
|
85
85
|
}
|
|
86
86
|
getSenderAddress() {
|
|
87
87
|
if (this._from) {
|
|
88
88
|
return this._from;
|
|
89
89
|
}
|
|
90
90
|
const pubKey = this.getSenderPublicKey();
|
|
91
|
-
this._from = ethereumjs_util_1.publicToAddress(pubKey);
|
|
91
|
+
this._from = (0, ethereumjs_util_1.publicToAddress)(pubKey);
|
|
92
92
|
return this._from;
|
|
93
93
|
}
|
|
94
94
|
getSenderPublicKey() {
|
|
@@ -108,8 +108,8 @@ class CeloTransaction {
|
|
|
108
108
|
const msgHash = this.hash(false);
|
|
109
109
|
try {
|
|
110
110
|
const chainId = this.getChainId();
|
|
111
|
-
const v = ethereumjs_util_1.bufferToInt(this.v) - (2 * chainId + 35);
|
|
112
|
-
this._senderPubKey = ethereumjs_util_1.ecrecover(msgHash, v + 27, this.r, this.s);
|
|
111
|
+
const v = (0, ethereumjs_util_1.bufferToInt)(this.v) - (2 * chainId + 35);
|
|
112
|
+
this._senderPubKey = (0, ethereumjs_util_1.ecrecover)(msgHash, v + 27, this.r, this.s);
|
|
113
113
|
}
|
|
114
114
|
catch (e) {
|
|
115
115
|
return false;
|
|
@@ -117,7 +117,7 @@ class CeloTransaction {
|
|
|
117
117
|
return !!this._senderPubKey;
|
|
118
118
|
}
|
|
119
119
|
getChainId() {
|
|
120
|
-
let chainId = ethereumjs_util_1.bufferToInt(this.v);
|
|
120
|
+
let chainId = (0, ethereumjs_util_1.bufferToInt)(this.v);
|
|
121
121
|
if (this.r.length && this.s.length) {
|
|
122
122
|
chainId = (chainId - 35) >> 1;
|
|
123
123
|
}
|
|
@@ -131,14 +131,14 @@ class CeloTransactionData {
|
|
|
131
131
|
this.deployedAddress = deployedAddress;
|
|
132
132
|
}
|
|
133
133
|
static fromJson(tx) {
|
|
134
|
-
const chainId = ethereumjs_util_1.addHexPrefix(new bignumber_js_1.default(Number(tx.chainId)).toString(16));
|
|
134
|
+
const chainId = (0, ethereumjs_util_1.addHexPrefix)(new bignumber_js_1.default(Number(tx.chainId)).toString(16));
|
|
135
135
|
return new CeloTransactionData(new CeloTransaction({
|
|
136
136
|
_type: sdk_coin_eth_1.ETHTransactionType.LEGACY,
|
|
137
137
|
nonce: tx.nonce,
|
|
138
138
|
to: tx.to,
|
|
139
|
-
gasPrice: ethereumjs_util_1.addHexPrefix(new bignumber_js_1.default(tx.gasPrice).toString(16)),
|
|
140
|
-
gasLimit: ethereumjs_util_1.addHexPrefix(new bignumber_js_1.default(tx.gasLimit).toString(16)),
|
|
141
|
-
value: ethereumjs_util_1.addHexPrefix(new bignumber_js_1.default(tx.value).toString(16)),
|
|
139
|
+
gasPrice: (0, ethereumjs_util_1.addHexPrefix)(new bignumber_js_1.default(tx.gasPrice).toString(16)),
|
|
140
|
+
gasLimit: (0, ethereumjs_util_1.addHexPrefix)(new bignumber_js_1.default(tx.gasLimit).toString(16)),
|
|
141
|
+
value: (0, ethereumjs_util_1.addHexPrefix)(new bignumber_js_1.default(tx.value).toString(16)),
|
|
142
142
|
data: tx.data === '0x' ? '' : tx.data,
|
|
143
143
|
from: tx.from,
|
|
144
144
|
s: tx.s,
|
|
@@ -147,34 +147,34 @@ class CeloTransactionData {
|
|
|
147
147
|
}), tx.deployedAddress);
|
|
148
148
|
}
|
|
149
149
|
async sign(keyPair) {
|
|
150
|
-
const privateKey = ethereumjs_util_1.addHexPrefix(keyPair.getKeys().prv);
|
|
150
|
+
const privateKey = (0, ethereumjs_util_1.addHexPrefix)(keyPair.getKeys().prv);
|
|
151
151
|
const data = CeloTransactionData.txJsonToCeloTx(this.toJson(), keyPair.getAddress());
|
|
152
152
|
const celoLocalWallet = new wallet_local_1.LocalWallet();
|
|
153
153
|
celoLocalWallet.addAccount(privateKey);
|
|
154
154
|
const rawTransaction = await celoLocalWallet.signTransaction(data);
|
|
155
155
|
const nonceBigNumber = new bignumber_js_1.default(rawTransaction.tx.nonce);
|
|
156
|
-
rawTransaction.tx.nonce = ethereumjs_util_1.addHexPrefix(nonceBigNumber.toString(16));
|
|
156
|
+
rawTransaction.tx.nonce = (0, ethereumjs_util_1.addHexPrefix)(nonceBigNumber.toString(16));
|
|
157
157
|
rawTransaction.raw = data.data === undefined ? '' : data.data;
|
|
158
158
|
rawTransaction.tx.gas = rawTransaction.tx.gas;
|
|
159
159
|
this.tx = new CeloTransaction(CeloTransactionData.encodedTxToJson(rawTransaction));
|
|
160
|
-
this.tx.sign(ethereumjs_util_1.toBuffer(privateKey));
|
|
160
|
+
this.tx.sign((0, ethereumjs_util_1.toBuffer)(privateKey));
|
|
161
161
|
}
|
|
162
162
|
/** @inheritdoc */
|
|
163
163
|
toJson() {
|
|
164
164
|
const result = {
|
|
165
165
|
_type: sdk_coin_eth_1.ETHTransactionType.LEGACY,
|
|
166
|
-
nonce: ethereumjs_util_1.bufferToInt(this.tx.nonce),
|
|
167
|
-
gasPrice: new bignumber_js_1.default(ethereumjs_util_1.bufferToHex(this.tx.gasPrice), 16).toString(10),
|
|
168
|
-
gasLimit: new bignumber_js_1.default(ethereumjs_util_1.bufferToHex(this.tx.gasLimit), 16).toString(10),
|
|
169
|
-
value: this.tx.value.length === 0 ? '0' : new bignumber_js_1.default(ethereumjs_util_1.bufferToHex(this.tx.value), 16).toString(10),
|
|
170
|
-
data: ethereumjs_util_1.bufferToHex(this.tx.data),
|
|
171
|
-
id: ethereumjs_util_1.addHexPrefix(ethereumjs_util_1.bufferToHex(this.tx.hash(true))),
|
|
166
|
+
nonce: (0, ethereumjs_util_1.bufferToInt)(this.tx.nonce),
|
|
167
|
+
gasPrice: new bignumber_js_1.default((0, ethereumjs_util_1.bufferToHex)(this.tx.gasPrice), 16).toString(10),
|
|
168
|
+
gasLimit: new bignumber_js_1.default((0, ethereumjs_util_1.bufferToHex)(this.tx.gasLimit), 16).toString(10),
|
|
169
|
+
value: this.tx.value.length === 0 ? '0' : new bignumber_js_1.default((0, ethereumjs_util_1.bufferToHex)(this.tx.value), 16).toString(10),
|
|
170
|
+
data: (0, ethereumjs_util_1.bufferToHex)(this.tx.data),
|
|
171
|
+
id: (0, ethereumjs_util_1.addHexPrefix)((0, ethereumjs_util_1.bufferToHex)(this.tx.hash(true))),
|
|
172
172
|
};
|
|
173
173
|
if (this.tx.to && this.tx.to.length) {
|
|
174
|
-
result.to = ethereumjs_util_1.bufferToHex(this.tx.to);
|
|
174
|
+
result.to = (0, ethereumjs_util_1.bufferToHex)(this.tx.to);
|
|
175
175
|
}
|
|
176
176
|
if (this.tx.verifySignature()) {
|
|
177
|
-
result.from = ethereumjs_util_1.bufferToHex(this.tx.getSenderAddress());
|
|
177
|
+
result.from = (0, ethereumjs_util_1.bufferToHex)(this.tx.getSenderAddress());
|
|
178
178
|
}
|
|
179
179
|
const chainId = this.tx.getChainId();
|
|
180
180
|
if (chainId) {
|
|
@@ -188,18 +188,18 @@ class CeloTransactionData {
|
|
|
188
188
|
}
|
|
189
189
|
setSignatureFields(result) {
|
|
190
190
|
if (this.tx.v && this.tx.v.length) {
|
|
191
|
-
result.v = ethereumjs_util_1.bufferToHex(this.tx.v);
|
|
191
|
+
result.v = (0, ethereumjs_util_1.bufferToHex)(this.tx.v);
|
|
192
192
|
}
|
|
193
193
|
if (this.tx.r && this.tx.r.length) {
|
|
194
|
-
result.r = ethereumjs_util_1.bufferToHex(this.tx.r);
|
|
194
|
+
result.r = (0, ethereumjs_util_1.bufferToHex)(this.tx.r);
|
|
195
195
|
}
|
|
196
196
|
if (this.tx.s && this.tx.s.length) {
|
|
197
|
-
result.s = ethereumjs_util_1.bufferToHex(this.tx.s);
|
|
197
|
+
result.s = (0, ethereumjs_util_1.bufferToHex)(this.tx.s);
|
|
198
198
|
}
|
|
199
199
|
}
|
|
200
200
|
/** @inheritdoc */
|
|
201
201
|
toSerialized() {
|
|
202
|
-
return ethereumjs_util_1.addHexPrefix(this.tx.serialize().toString('hex'));
|
|
202
|
+
return (0, ethereumjs_util_1.addHexPrefix)(this.tx.serialize().toString('hex'));
|
|
203
203
|
}
|
|
204
204
|
static txJsonToCeloTx(txJson, signer) {
|
|
205
205
|
// the celo library requires you to specify the signer address with the from field
|
|
@@ -220,4 +220,4 @@ class CeloTransactionData {
|
|
|
220
220
|
}
|
|
221
221
|
}
|
|
222
222
|
exports.CeloTransactionData = CeloTransactionData;
|
|
223
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGdFQUFxQztBQUNyQyxxREFBaUQ7QUFDakQscURBVXlCO0FBRXpCLHNEQUF3RztBQUV4RyxNQUFhLGVBQWU7SUFrQzFCLFlBQVksRUFBZ0I7UUE3QnBCLGlCQUFZLEdBQVcsMEJBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0Qyx5QkFBb0IsR0FBVywwQkFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLGdCQUFXLEdBQVcsMEJBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQU03QyxPQUFFLEdBQVcsMEJBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQixNQUFDLEdBQVcsMEJBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QixNQUFDLEdBQVcsMEJBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QixNQUFDLEdBQVcsMEJBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQW1CdkIsSUFBSSxDQUFDLEtBQUssR0FBRyw2QkFBVyxDQUFDLDBCQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFFBQVEsR0FBRywwQkFBUSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsUUFBUSxHQUFHLDBCQUFRLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxJQUFJLEdBQUcsMEJBQVEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLEtBQUssR0FBRywwQkFBUSxDQUFDLElBQUksQ0FBQyxpQkFBaUIs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QUFNLENBQUMsQ0FBQyxHQUFHLDZCQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNuQztJQUNILENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsWUFBWTtRQUNWLE9BQU8sOEJBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFTyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQW9CLEVBQUUsTUFBYztRQUNoRSxrRkFBa0Y7UUFDbEYsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUU7WUFDL0IsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUN4RSxHQUFHLEVBQUUsTUFBTSxDQUFDLFFBQVE7WUFDcEIsSUFBSSxFQUFFLE1BQU07U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sTUFBTSxDQUFDLGVBQWUsQ0FBQyxTQUE2QjtRQUMxRCxPQUFPO1lBQ0wsR0FBRyxTQUFTLENBQUMsRUFBRTtZQUNmLEtBQUssRUFBRSxpQ0FBa0IsQ0FBQyxNQUFNO1lBQ2hDLEtBQUssRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3ZDLFFBQVEsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUc7WUFDMUIsSUFBSSxFQUFFLFNBQVMsQ0FBQyxHQUFHO1NBQ3BCLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFuSEQsa0RBbUhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgTG9jYWxXYWxsZXQgfSBmcm9tICdAY2Vsby93YWxsZXQtbG9jYWwnO1xuaW1wb3J0IHtcbiAgYWRkSGV4UHJlZml4LFxuICB0b0J1ZmZlcixcbiAgYnVmZmVyVG9IZXgsXG4gIGJ1ZmZlclRvSW50LFxuICBybHAsXG4gIHJscGhhc2gsXG4gIGVjcmVjb3ZlcixcbiAgcHVibGljVG9BZGRyZXNzLFxuICB1bnBhZEJ1ZmZlcixcbn0gZnJvbSAnZXRoZXJldW1qcy11dGlsJztcbmltcG9ydCB7IENlbG9UeCwgRW5jb2RlZFRyYW5zYWN0aW9uIH0gZnJvbSAnQGNlbG8vY29ubmVjdCc7XG5pbXBvcnQgeyBFdGhMaWtlVHJhbnNhY3Rpb25EYXRhLCBFVEhUcmFuc2FjdGlvblR5cGUsIEtleVBhaXIsIExlZ2FjeVR4RGF0YSB9IGZyb20gJ0BiaXRnby9zZGstY29pbi1ldGgnO1xuXG5leHBvcnQgY2xhc3MgQ2Vsb1RyYW5zYWN0aW9uIHtcbiAgcHJpdmF0ZSByYXc6IEJ1ZmZlcltdO1xuICBwcml2YXRlIF9mcm9tOiBCdWZmZXI7XG4gIHByaXZhdGUgX3NlbmRlclB1YktleT87XG4gIHByaXZhdGUgX3NpZ25hdHVyZXM6IEJ1ZmZlcltdO1xuICBwcml2YXRlIF9mZWVDdXJyZW5jeTogQnVmZmVyID0gdG9CdWZmZXIoJzB4Jyk7XG4gIHByaXZhdGUgX2dhdGV3YXlGZWVSZWNpcGllbnQ6IEJ1ZmZlciA9IHRvQnVmZmVyKCcweCcpO1xuICBwcml2YXRlIF9nYXRld2F5RmVlOiBCdWZmZXIgPSB0b0J1ZmZlcignMHgnKTtcbiAgbm9uY2U6IEJ1ZmZlcjtcbiAgZ2FzTGltaXQ6IEJ1ZmZlcjtcbiAgZ2FzUHJpY2U6IEJ1ZmZlcjtcbiAgZGF0YTogQnVmZmVyO1xuICB2YWx1ZTogQnVmZmVyO1xuICB0bzogQnVmZmVyID0gdG9CdWZmZXIoW10pO1xuICB2OiBCdWZmZXIgPSB0b0J1ZmZlcihbXSk7XG4gIHI6IEJ1ZmZlciA9IHRvQnVmZmVyKFtdKTtcbiAgczogQnVmZmVyID0gdG9CdWZmZXIoW10pO1xuXG4gIC8vIFRPRE86IHZhbGlkYXRlIGlmIHRoaXMgbmVlZHMgdG8gYmUgbW92ZWQgdG8gVXRpbHMgY2xhc3NcbiAgLyoqXG4gICAqIENsZWFuIGhleCBmb3JtYXR0ZWQgdmFsdWVzIGVuc3VyaW5nIHRoZXkgaGF2ZSBhbiBldmVuIGxlbmd0aFxuICAgKlxuICAgKiBAcGFyYW0gbnVtYmVyVmFsdWUgSGV4IGZvcm1hdHRlZCBudW1iZXIgdmFsdWUuIEV4YW1wbGUgJzB4MDEnXG4gICAqIEByZXR1cm5zIHNhbml0aXplZCB2YWx1ZVxuICAgKi9cbiAgcHJpdmF0ZSBzYW5pdGl6ZUhleFN0cmluZyhudW1iZXJWYWx1ZSkge1xuICAgIGlmIChudW1iZXJWYWx1ZSA9PT0gJzB4MCcgfHwgbnVtYmVyVmFsdWUgPT0gJycpIHtcbiAgICAgIHJldHVybiAnMHgnO1xuICAgIH0gZWxzZSBpZiAobnVtYmVyVmFsdWUubGVuZ3RoICUgMiA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bWJlclZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gJzB4MCcgKyBudW1iZXJWYWx1ZS5zbGljZSgyKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHR4OiBMZWdhY3lUeERhdGEpIHtcbiAgICB0aGlzLm5vbmNlID0gdW5wYWRCdWZmZXIodG9CdWZmZXIodHgubm9uY2UpKTtcbiAgICB0aGlzLmdhc0xpbWl0ID0gdG9CdWZmZXIodGhpcy5zYW5pdGl6ZUhleFN0cmluZyh0eC5nYXNMaW1pdCkpO1xuICAgIHRoaXMuZ2FzUHJpY2UgPSB0b0J1ZmZlcih0aGlzLnNhbml0aXplSGV4U3RyaW5nKHR4Lmdhc1ByaWNlKSk7XG4gICAgdGhpcy5kYXRhID0gdG9CdWZmZXIodGhpcy5zYW5pdGl6ZUhleFN0cmluZyh0eC5kYXRhKSk7XG4gICAgdGhpcy52YWx1ZSA9IHRvQnVmZmVyKHRoaXMuc2FuaXRpemVIZXhTdHJpbmcodHgudmFsdWUpKTtcbiAgICBpZiAodHgudG8pIHtcbiAgICAgIHRoaXMudG8gPSB0b0J1ZmZlcih0eC50byk7XG4gICAgfVxuICAgIGlmICh0eC52KSB7XG4gICAgICB0aGlzLnYgPSB0b0J1ZmZlcih0eC52KTtcbiAgICB9XG4gICAgaWYgKHR4LnIpIHtcbiAgICAgIHRoaXMuciA9IHRvQnVmZmVyKHR4LnIpO1xuICAgIH1cbiAgICBpZiAodHgucykge1xuICAgICAgdGhpcy5zID0gdG9CdWZmZXIodHgucyk7XG4gICAgfVxuICAgIGlmICh0eC5mcm9tKSB7XG4gICAgICB0aGlzLl9mcm9tID0gdG9CdWZmZXIodHguZnJvbSk7XG4gICAgfVxuICAgIHRoaXMuaW5pdFJhdygpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0UmF3KCkge1xuICAgIHRoaXMucmF3ID0gW1xuICAgICAgdGhpcy5ub25jZSxcbiAgICAgIHRoaXMuZ2FzUHJpY2UsXG4gICAgICB0aGlzLmdhc0xpbWl0LFxuICAgICAgdGhpcy5fZmVlQ3VycmVuY3ksXG4gICAgICB0aGlzLl9nYXRld2F5RmVlUmVjaXBpZW50LFxuICAgICAgdGhpcy5fZ2F0ZXdheUZlZSxcbiAgICAgIHRoaXMudG8sXG4gICAgICB0aGlzLnZhbHVlLFxuICAgICAgdGhpcy5kYXRhLFxuICAgICAgdGhpcy52LFxuICAgICAgdGhpcy5yLFxuICAgICAgdGhpcy5zLFxuICAgIF07XG4gIH1cblxuICBoYXNoKGluY2x1ZGVTaWduYXR1cmU/OiBib29sZWFuKTogQnVmZmVyIHtcbiAgICBsZXQgaXRlbXM7XG4gICAgaWYgKGluY2x1ZGVTaWduYXR1cmUpIHtcbiAgICAgIGl0ZW1zID0gdGhpcy5yYXc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZW1zID0gdGhpcy5yYXdcbiAgICAgICAgLnNsaWNlKDAsIDkpXG4gICAgICAgIC5jb25jYXQoW3RvQnVmZmVyKHRoaXMuZ2V0Q2hhaW5JZCgpKSwgdW5wYWRCdWZmZXIodG9CdWZmZXIoMCkpLCB1bnBhZEJ1ZmZlcih0b0J1ZmZlcigwKSldKTtcbiAgICB9XG4gICAgcmV0dXJuIHJscGhhc2goaXRlbXMpO1xuICB9XG5cbiAgZ2V0U2VuZGVyQWRkcmVzcygpOiBCdWZmZXIge1xuICAgIGlmICh0aGlzLl9mcm9tKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZnJvbTtcbiAgICB9XG4gICAgY29uc3QgcHViS2V5ID0gdGhpcy5nZXRTZW5kZXJQdWJsaWNLZXkoKTtcbiAgICB0aGlzLl9mcm9tID0gcHVibGljVG9BZGRyZXNzKHB1YktleSk7XG4gICAgcmV0dXJuIHRoaXMuX2Zyb207XG4gIH1cblxuICBnZXRTZW5kZXJQdWJsaWNLZXkoKSB7XG4gICAgaWYgKHRoaXMudmVyaWZ5U2lnbmF0dXJlKCkpIHtcbiAgICAgIC8vIElmIHRoZSBzaWduYXR1cmUgd2FzIHZlcmlmaWVkIHN1Y2Nlc3NmdWxseSB0aGUgX3NlbmRlclB1YktleSBmaWVsZCBpcyBkZWZpbmVkXG4gICAgICByZXR1cm4gdGhpcy5fc2VuZGVyUHViS2V5O1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgU2lnbmF0dXJlJyk7XG4gIH1cblxuICBzZXJpYWxpemUoKTogQnVmZmVyIHtcbiAgICByZXR1cm4gcmxwLmVuY29kZSh0aGlzLnJhdyk7XG4gIH1cblxuICBzaWduKHByaXZhdGVLZXk6IEJ1ZmZlcik6IHZvaWQge1xuICAgIHRoaXMuX3NpZ25hdHVyZXMgPSBbdGhpcy52LCB0aGlzLnIsIHRoaXMucywgcHJpdmF0ZUtleV07XG4gIH1cblxuICB2ZXJpZnlTaWduYXR1cmUoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbXNnSGFzaCA9IHRoaXMuaGFzaChmYWxzZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNoYWluSWQgPSB0aGlzLmdldENoYWluSWQoKTtcbiAgICAgIGNvbnN0IHYgPSBidWZmZXJUb0ludCh0aGlzLnYpIC0gKDIgKiBjaGFpbklkICsgMzUpO1xuICAgICAgdGhpcy5fc2VuZGVyUHViS2V5ID0gZWNyZWNvdmVyKG1zZ0hhc2gsIHYgKyAyNywgdGhpcy5yLCB0aGlzLnMpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuICEhdGhpcy5fc2VuZGVyUHViS2V5O1xuICB9XG5cbiAgZ2V0Q2hhaW5JZCgpOiBudW1iZXIge1xuICAgIGxldCBjaGFpbklkID0gYnVmZmVyVG9JbnQodGhpcy52KTtcbiAgICBpZiAodGhpcy5yLmxlbmd0aCAmJiB0aGlzLnMubGVuZ3RoKSB7XG4gICAgICBjaGFpbklkID0gKGNoYWluSWQgLSAzNSkgPj4gMTtcbiAgICB9XG4gICAgcmV0dXJuIGNoYWluSWQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENlbG9UcmFuc2FjdGlvbkRhdGEgaW1wbGVtZW50cyBFdGhMaWtlVHJhbnNhY3Rpb25EYXRhIHtcbiAgcHJpdmF0ZSB0eDogQ2Vsb1RyYW5zYWN0aW9uO1xuICBwcml2YXRlIGRlcGxveWVkQWRkcmVzcz86IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcih0eDogQ2Vsb1RyYW5zYWN0aW9uLCBkZXBsb3llZEFkZHJlc3M/OiBzdHJpbmcpIHtcbiAgICB0aGlzLnR4ID0gdHg7XG4gICAgdGhpcy5kZXBsb3llZEFkZHJlc3MgPSBkZXBsb3llZEFkZHJlc3M7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZyb21Kc29uKHR4OiBMZWdhY3lUeERhdGEpOiBDZWxvVHJhbnNhY3Rpb25EYXRhIHtcbiAgICBjb25zdCBjaGFpbklkID0gYWRkSGV4UHJlZml4KG5ldyBCaWdOdW1iZXIoTnVtYmVyKHR4LmNoYWluSWQpKS50b1N0cmluZygxNikpO1xuICAgIHJldHVybiBuZXcgQ2Vsb1RyYW5zYWN0aW9uRGF0YShcbiAgICAgIG5ldyBDZWxvVHJhbnNhY3Rpb24oe1xuICAgICAgICBfdHlwZTogRVRIVHJhbnNhY3Rpb25UeXBlLkxFR0FDWSxcbiAgICAgICAgbm9uY2U6IHR4Lm5vbmNlLFxuICAgICAgICB0bzogdHgudG8sXG4gICAgICAgIGdhc1ByaWNlOiBhZGRIZXhQcmVmaXgobmV3IEJpZ051bWJlcih0eC5nYXNQcmljZSkudG9TdHJpbmcoMTYpKSxcbiAgICAgICAgZ2FzTGltaXQ6IGFkZEhleFByZWZpeChuZXcgQmlnTnVtYmVyKHR4Lmdhc0xpbWl0KS50b1N0cmluZygxNikpLFxuICAgICAgICB2YWx1ZTogYWRkSGV4UHJlZml4KG5ldyBCaWdOdW1iZXIodHgudmFsdWUpLnRvU3RyaW5nKDE2KSksXG4gICAgICAgIGRhdGE6IHR4LmRhdGEgPT09ICcweCcgPyAnJyA6IHR4LmRhdGEsXG4gICAgICAgIGZyb206IHR4LmZyb20sXG4gICAgICAgIHM6IHR4LnMsXG4gICAgICAgIHI6IHR4LnIsXG4gICAgICAgIHY6IHR4LnYgfHwgY2hhaW5JZCxcbiAgICAgIH0pLFxuICAgICAgdHguZGVwbG95ZWRBZGRyZXNzXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHNpZ24oa2V5UGFpcjogS2V5UGFpcikge1xuICAgIGNvbnN0IHByaXZhdGVLZXkgPSBhZGRIZXhQcmVmaXgoa2V5UGFpci5nZXRLZXlzKCkucHJ2IGFzIHN0cmluZyk7XG4gICAgY29uc3QgZGF0YSA9IENlbG9UcmFuc2FjdGlvbkRhdGEudHhKc29uVG9DZWxvVHgodGhpcy50b0pzb24oKSwga2V5UGFpci5nZXRBZGRyZXNzKCkpO1xuICAgIGNvbnN0IGNlbG9Mb2NhbFdhbGxldCA9IG5ldyBMb2NhbFdhbGxldCgpO1xuICAgIGNlbG9Mb2NhbFdhbGxldC5hZGRBY2NvdW50KHByaXZhdGVLZXkpO1xuICAgIGNvbnN0IHJhd1RyYW5zYWN0aW9uID0gYXdhaXQgY2Vsb0xvY2FsV2FsbGV0LnNpZ25UcmFuc2FjdGlvbihkYXRhKTtcblxuICAgIGNvbnN0IG5vbmNlQmlnTnVtYmVyID0gbmV3IEJpZ051bWJlcihyYXdUcmFuc2FjdGlvbi50eC5ub25jZSk7XG4gICAgcmF3VHJhbnNhY3Rpb24udHgubm9uY2UgPSBhZGRIZXhQcmVmaXgobm9uY2VCaWdOdW1iZXIudG9TdHJpbmcoMTYpKTtcbiAgICByYXdUcmFuc2FjdGlvbi5yYXcgPSBkYXRhLmRhdGEgPT09IHVuZGVmaW5lZCA/ICcnIDogZGF0YS5kYXRhO1xuICAgIHJhd1RyYW5zYWN0aW9uLnR4LmdhcyA9IHJhd1RyYW5zYWN0aW9uLnR4LmdhcztcbiAgICB0aGlzLnR4ID0gbmV3IENlbG9UcmFuc2FjdGlvbihDZWxvVHJhbnNhY3Rpb25EYXRhLmVuY29kZWRUeFRvSnNvbihyYXdUcmFuc2FjdGlvbikpO1xuICAgIHRoaXMudHguc2lnbih0b0J1ZmZlcihwcml2YXRlS2V5KSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Kc29uKCk6IExlZ2FjeVR4RGF0YSB7XG4gICAgY29uc3QgcmVzdWx0OiBMZWdhY3lUeERhdGEgPSB7XG4gICAgICBfdHlwZTogRVRIVHJhbnNhY3Rpb25UeXBlLkxFR0FDWSxcbiAgICAgIG5vbmNlOiBidWZmZXJUb0ludCh0aGlzLnR4Lm5vbmNlKSxcbiAgICAgIGdhc1ByaWNlOiBuZXcgQmlnTnVtYmVyKGJ1ZmZlclRvSGV4KHRoaXMudHguZ2FzUHJpY2UpLCAxNikudG9TdHJpbmcoMTApLFxuICAgICAgZ2FzTGltaXQ6IG5ldyBCaWdOdW1iZXIoYnVmZmVyVG9IZXgodGhpcy50eC5nYXNMaW1pdCksIDE2KS50b1N0cmluZygxMCksXG4gICAgICB2YWx1ZTogdGhpcy50eC52YWx1ZS5sZW5ndGggPT09IDAgPyAnMCcgOiBuZXcgQmlnTnVtYmVyKGJ1ZmZlclRvSGV4KHRoaXMudHgudmFsdWUpLCAxNikudG9TdHJpbmcoMTApLFxuICAgICAgZGF0YTogYnVmZmVyVG9IZXgodGhpcy50eC5kYXRhKSxcbiAgICAgIGlkOiBhZGRIZXhQcmVmaXgoYnVmZmVyVG9IZXgodGhpcy50eC5oYXNoKHRydWUpKSksXG4gICAgfTtcblxuICAgIGlmICh0aGlzLnR4LnRvICYmIHRoaXMudHgudG8ubGVuZ3RoKSB7XG4gICAgICByZXN1bHQudG8gPSBidWZmZXJUb0hleCh0aGlzLnR4LnRvKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50eC52ZXJpZnlTaWduYXR1cmUoKSkge1xuICAgICAgcmVzdWx0LmZyb20gPSBidWZmZXJUb0hleCh0aGlzLnR4LmdldFNlbmRlckFkZHJlc3MoKSk7XG4gICAgfVxuXG4gICAgY29uc3QgY2hhaW5JZCA9IHRoaXMudHguZ2V0Q2hhaW5JZCgpO1xuICAgIGlmIChjaGFpbklkKSB7XG4gICAgICByZXN1bHQuY2hhaW5JZCA9IGNoYWluSWQudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kZXBsb3llZEFkZHJlc3MpIHtcbiAgICAgIHJlc3VsdC5kZXBsb3llZEFkZHJlc3MgPSB0aGlzLmRlcGxveWVkQWRkcmVzcztcbiAgICB9XG5cbiAgICB0aGlzLnNldFNpZ25hdHVyZUZpZWxkcyhyZXN1bHQpO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0U2lnbmF0dXJlRmllbGRzKHJlc3VsdDogTGVnYWN5VHhEYXRhKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudHgudiAmJiB0aGlzLnR4LnYubGVuZ3RoKSB7XG4gICAgICByZXN1bHQudiA9IGJ1ZmZlclRvSGV4KHRoaXMudHgudik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHguciAmJiB0aGlzLnR4LnIubGVuZ3RoKSB7XG4gICAgICByZXN1bHQuciA9IGJ1ZmZlclRvSGV4KHRoaXMudHgucik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHgucyAmJiB0aGlzLnR4LnMubGVuZ3RoKSB7XG4gICAgICByZXN1bHQucyA9IGJ1ZmZlclRvSGV4KHRoaXMudHgucyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvU2VyaWFsaXplZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBhZGRIZXhQcmVmaXgodGhpcy50eC5zZXJpYWxpemUoKS50b1N0cmluZygnaGV4JykpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgdHhKc29uVG9DZWxvVHgodHhKc29uOiBMZWdhY3lUeERhdGEsIHNpZ25lcjogc3RyaW5nKTogQ2Vsb1R4IHtcbiAgICAvLyB0aGUgY2VsbyBsaWJyYXJ5IHJlcXVpcmVzIHlvdSB0byBzcGVjaWZ5IHRoZSBzaWduZXIgYWRkcmVzcyB3aXRoIHRoZSBmcm9tIGZpZWxkXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHR4SnNvbiwge1xuICAgICAgY2hhaW5JZDogdHhKc29uLmNoYWluSWQgPT09IHVuZGVmaW5lZCA/IDAgOiBwYXJzZUludCh0eEpzb24uY2hhaW5JZCwgMTApLFxuICAgICAgZ2FzOiB0eEpzb24uZ2FzTGltaXQsXG4gICAgICBmcm9tOiBzaWduZXIsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBlbmNvZGVkVHhUb0pzb24oZW5jb2RlZFR4OiBFbmNvZGVkVHJhbnNhY3Rpb24pOiBMZWdhY3lUeERhdGEge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5lbmNvZGVkVHgudHgsXG4gICAgICBfdHlwZTogRVRIVHJhbnNhY3Rpb25UeXBlLkxFR0FDWSxcbiAgICAgIG5vbmNlOiBwYXJzZUludChlbmNvZGVkVHgudHgubm9uY2UsIDE2KSxcbiAgICAgIGdhc0xpbWl0OiBlbmNvZGVkVHgudHguZ2FzLFxuICAgICAgZGF0YTogZW5jb2RlZFR4LnJhdyxcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
223
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGdFQUFxQztBQUNyQyxxREFBaUQ7QUFDakQscURBVXlCO0FBRXpCLHNEQUF3RztBQUV4RyxNQUFhLGVBQWU7SUFrQzFCLFlBQVksRUFBZ0I7UUE3QnBCLGlCQUFZLEdBQVcsSUFBQSwwQkFBUSxFQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLHlCQUFvQixHQUFXLElBQUEsMEJBQVEsRUFBQyxJQUFJLENBQUMsQ0FBQztRQUM5QyxnQkFBVyxHQUFXLElBQUEsMEJBQVEsRUFBQyxJQUFJLENBQUMsQ0FBQztRQU03QyxPQUFFLEdBQVcsSUFBQSwwQkFBUSxFQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLE1BQUMsR0FBVyxJQUFBLDBCQUFRLEVBQUMsRUFBRSxDQUFDLENBQUM7UUFDekIsTUFBQyxHQUFXLElBQUEsMEJBQVEsRUFBQyxFQUFFLENBQUMsQ0FBQztRQUN6QixNQUFDLEdBQVcsSUFBQSwwQkFBUSxFQUFDLEVBQUUsQ0FBQyxDQUFDO1FBbUJ2QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUEsNkJBQVcsRUFBQyxJQUFBLDBCQUFRLEVBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFBLDBCQUFRLEVBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBQSwwQkFBUSxFQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUEsMEJBQVEsRUFBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFD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QUFDO1lBQ3ZDLFFBQVEsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUc7WUFDMUIsSUFBSSxFQUFFLFNBQVMsQ0FBQyxHQUFHO1NBQ3BCLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFuSEQsa0RBbUhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgTG9jYWxXYWxsZXQgfSBmcm9tICdAY2Vsby93YWxsZXQtbG9jYWwnO1xuaW1wb3J0IHtcbiAgYWRkSGV4UHJlZml4LFxuICB0b0J1ZmZlcixcbiAgYnVmZmVyVG9IZXgsXG4gIGJ1ZmZlclRvSW50LFxuICBybHAsXG4gIHJscGhhc2gsXG4gIGVjcmVjb3ZlcixcbiAgcHVibGljVG9BZGRyZXNzLFxuICB1bnBhZEJ1ZmZlcixcbn0gZnJvbSAnZXRoZXJldW1qcy11dGlsJztcbmltcG9ydCB7IENlbG9UeCwgRW5jb2RlZFRyYW5zYWN0aW9uIH0gZnJvbSAnQGNlbG8vY29ubmVjdCc7XG5pbXBvcnQgeyBFdGhMaWtlVHJhbnNhY3Rpb25EYXRhLCBFVEhUcmFuc2FjdGlvblR5cGUsIEtleVBhaXIsIExlZ2FjeVR4RGF0YSB9IGZyb20gJ0BiaXRnby9zZGstY29pbi1ldGgnO1xuXG5leHBvcnQgY2xhc3MgQ2Vsb1RyYW5zYWN0aW9uIHtcbiAgcHJpdmF0ZSByYXc6IEJ1ZmZlcltdO1xuICBwcml2YXRlIF9mcm9tOiBCdWZmZXI7XG4gIHByaXZhdGUgX3NlbmRlclB1YktleT87XG4gIHByaXZhdGUgX3NpZ25hdHVyZXM6IEJ1ZmZlcltdO1xuICBwcml2YXRlIF9mZWVDdXJyZW5jeTogQnVmZmVyID0gdG9CdWZmZXIoJzB4Jyk7XG4gIHByaXZhdGUgX2dhdGV3YXlGZWVSZWNpcGllbnQ6IEJ1ZmZlciA9IHRvQnVmZmVyKCcweCcpO1xuICBwcml2YXRlIF9nYXRld2F5RmVlOiBCdWZmZXIgPSB0b0J1ZmZlcignMHgnKTtcbiAgbm9uY2U6IEJ1ZmZlcjtcbiAgZ2FzTGltaXQ6IEJ1ZmZlcjtcbiAgZ2FzUHJpY2U6IEJ1ZmZlcjtcbiAgZGF0YTogQnVmZmVyO1xuICB2YWx1ZTogQnVmZmVyO1xuICB0bzogQnVmZmVyID0gdG9CdWZmZXIoW10pO1xuICB2OiBCdWZmZXIgPSB0b0J1ZmZlcihbXSk7XG4gIHI6IEJ1ZmZlciA9IHRvQnVmZmVyKFtdKTtcbiAgczogQnVmZmVyID0gdG9CdWZmZXIoW10pO1xuXG4gIC8vIFRPRE86IHZhbGlkYXRlIGlmIHRoaXMgbmVlZHMgdG8gYmUgbW92ZWQgdG8gVXRpbHMgY2xhc3NcbiAgLyoqXG4gICAqIENsZWFuIGhleCBmb3JtYXR0ZWQgdmFsdWVzIGVuc3VyaW5nIHRoZXkgaGF2ZSBhbiBldmVuIGxlbmd0aFxuICAgKlxuICAgKiBAcGFyYW0gbnVtYmVyVmFsdWUgSGV4IGZvcm1hdHRlZCBudW1iZXIgdmFsdWUuIEV4YW1wbGUgJzB4MDEnXG4gICAqIEByZXR1cm5zIHNhbml0aXplZCB2YWx1ZVxuICAgKi9cbiAgcHJpdmF0ZSBzYW5pdGl6ZUhleFN0cmluZyhudW1iZXJWYWx1ZSkge1xuICAgIGlmIChudW1iZXJWYWx1ZSA9PT0gJzB4MCcgfHwgbnVtYmVyVmFsdWUgPT0gJycpIHtcbiAgICAgIHJldHVybiAnMHgnO1xuICAgIH0gZWxzZSBpZiAobnVtYmVyVmFsdWUubGVuZ3RoICUgMiA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bWJlclZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gJzB4MCcgKyBudW1iZXJWYWx1ZS5zbGljZSgyKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHR4OiBMZWdhY3lUeERhdGEpIHtcbiAgICB0aGlzLm5vbmNlID0gdW5wYWRCdWZmZXIodG9CdWZmZXIodHgubm9uY2UpKTtcbiAgICB0aGlzLmdhc0xpbWl0ID0gdG9CdWZmZXIodGhpcy5zYW5pdGl6ZUhleFN0cmluZyh0eC5nYXNMaW1pdCkpO1xuICAgIHRoaXMuZ2FzUHJpY2UgPSB0b0J1ZmZlcih0aGlzLnNhbml0aXplSGV4U3RyaW5nKHR4Lmdhc1ByaWNlKSk7XG4gICAgdGhpcy5kYXRhID0gdG9CdWZmZXIodGhpcy5zYW5pdGl6ZUhleFN0cmluZyh0eC5kYXRhKSk7XG4gICAgdGhpcy52YWx1ZSA9IHRvQnVmZmVyKHRoaXMuc2FuaXRpemVIZXhTdHJpbmcodHgudmFsdWUpKTtcbiAgICBpZiAodHgudG8pIHtcbiAgICAgIHRoaXMudG8gPSB0b0J1ZmZlcih0eC50byk7XG4gICAgfVxuICAgIGlmICh0eC52KSB7XG4gICAgICB0aGlzLnYgPSB0b0J1ZmZlcih0eC52KTtcbiAgICB9XG4gICAgaWYgKHR4LnIpIHtcbiAgICAgIHRoaXMuciA9IHRvQnVmZmVyKHR4LnIpO1xuICAgIH1cbiAgICBpZiAodHgucykge1xuICAgICAgdGhpcy5zID0gdG9CdWZmZXIodHgucyk7XG4gICAgfVxuICAgIGlmICh0eC5mcm9tKSB7XG4gICAgICB0aGlzLl9mcm9tID0gdG9CdWZmZXIodHguZnJvbSk7XG4gICAgfVxuICAgIHRoaXMuaW5pdFJhdygpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0UmF3KCkge1xuICAgIHRoaXMucmF3ID0gW1xuICAgICAgdGhpcy5ub25jZSxcbiAgICAgIHRoaXMuZ2FzUHJpY2UsXG4gICAgICB0aGlzLmdhc0xpbWl0LFxuICAgICAgdGhpcy5fZmVlQ3VycmVuY3ksXG4gICAgICB0aGlzLl9nYXRld2F5RmVlUmVjaXBpZW50LFxuICAgICAgdGhpcy5fZ2F0ZXdheUZlZSxcbiAgICAgIHRoaXMudG8sXG4gICAgICB0aGlzLnZhbHVlLFxuICAgICAgdGhpcy5kYXRhLFxuICAgICAgdGhpcy52LFxuICAgICAgdGhpcy5yLFxuICAgICAgdGhpcy5zLFxuICAgIF07XG4gIH1cblxuICBoYXNoKGluY2x1ZGVTaWduYXR1cmU/OiBib29sZWFuKTogQnVmZmVyIHtcbiAgICBsZXQgaXRlbXM7XG4gICAgaWYgKGluY2x1ZGVTaWduYXR1cmUpIHtcbiAgICAgIGl0ZW1zID0gdGhpcy5yYXc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZW1zID0gdGhpcy5yYXdcbiAgICAgICAgLnNsaWNlKDAsIDkpXG4gICAgICAgIC5jb25jYXQoW3RvQnVmZmVyKHRoaXMuZ2V0Q2hhaW5JZCgpKSwgdW5wYWRCdWZmZXIodG9CdWZmZXIoMCkpLCB1bnBhZEJ1ZmZlcih0b0J1ZmZlcigwKSldKTtcbiAgICB9XG4gICAgcmV0dXJuIHJscGhhc2goaXRlbXMpO1xuICB9XG5cbiAgZ2V0U2VuZGVyQWRkcmVzcygpOiBCdWZmZXIge1xuICAgIGlmICh0aGlzLl9mcm9tKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZnJvbTtcbiAgICB9XG4gICAgY29uc3QgcHViS2V5ID0gdGhpcy5nZXRTZW5kZXJQdWJsaWNLZXkoKTtcbiAgICB0aGlzLl9mcm9tID0gcHVibGljVG9BZGRyZXNzKHB1YktleSk7XG4gICAgcmV0dXJuIHRoaXMuX2Zyb207XG4gIH1cblxuICBnZXRTZW5kZXJQdWJsaWNLZXkoKSB7XG4gICAgaWYgKHRoaXMudmVyaWZ5U2lnbmF0dXJlKCkpIHtcbiAgICAgIC8vIElmIHRoZSBzaWduYXR1cmUgd2FzIHZlcmlmaWVkIHN1Y2Nlc3NmdWxseSB0aGUgX3NlbmRlclB1YktleSBmaWVsZCBpcyBkZWZpbmVkXG4gICAgICByZXR1cm4gdGhpcy5fc2VuZGVyUHViS2V5O1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgU2lnbmF0dXJlJyk7XG4gIH1cblxuICBzZXJpYWxpemUoKTogQnVmZmVyIHtcbiAgICByZXR1cm4gcmxwLmVuY29kZSh0aGlzLnJhdyk7XG4gIH1cblxuICBzaWduKHByaXZhdGVLZXk6IEJ1ZmZlcik6IHZvaWQge1xuICAgIHRoaXMuX3NpZ25hdHVyZXMgPSBbdGhpcy52LCB0aGlzLnIsIHRoaXMucywgcHJpdmF0ZUtleV07XG4gIH1cblxuICB2ZXJpZnlTaWduYXR1cmUoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbXNnSGFzaCA9IHRoaXMuaGFzaChmYWxzZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNoYWluSWQgPSB0aGlzLmdldENoYWluSWQoKTtcbiAgICAgIGNvbnN0IHYgPSBidWZmZXJUb0ludCh0aGlzLnYpIC0gKDIgKiBjaGFpbklkICsgMzUpO1xuICAgICAgdGhpcy5fc2VuZGVyUHViS2V5ID0gZWNyZWNvdmVyKG1zZ0hhc2gsIHYgKyAyNywgdGhpcy5yLCB0aGlzLnMpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuICEhdGhpcy5fc2VuZGVyUHViS2V5O1xuICB9XG5cbiAgZ2V0Q2hhaW5JZCgpOiBudW1iZXIge1xuICAgIGxldCBjaGFpbklkID0gYnVmZmVyVG9JbnQodGhpcy52KTtcbiAgICBpZiAodGhpcy5yLmxlbmd0aCAmJiB0aGlzLnMubGVuZ3RoKSB7XG4gICAgICBjaGFpbklkID0gKGNoYWluSWQgLSAzNSkgPj4gMTtcbiAgICB9XG4gICAgcmV0dXJuIGNoYWluSWQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENlbG9UcmFuc2FjdGlvbkRhdGEgaW1wbGVtZW50cyBFdGhMaWtlVHJhbnNhY3Rpb25EYXRhIHtcbiAgcHJpdmF0ZSB0eDogQ2Vsb1RyYW5zYWN0aW9uO1xuICBwcml2YXRlIGRlcGxveWVkQWRkcmVzcz86IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcih0eDogQ2Vsb1RyYW5zYWN0aW9uLCBkZXBsb3llZEFkZHJlc3M/OiBzdHJpbmcpIHtcbiAgICB0aGlzLnR4ID0gdHg7XG4gICAgdGhpcy5kZXBsb3llZEFkZHJlc3MgPSBkZXBsb3llZEFkZHJlc3M7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZyb21Kc29uKHR4OiBMZWdhY3lUeERhdGEpOiBDZWxvVHJhbnNhY3Rpb25EYXRhIHtcbiAgICBjb25zdCBjaGFpbklkID0gYWRkSGV4UHJlZml4KG5ldyBCaWdOdW1iZXIoTnVtYmVyKHR4LmNoYWluSWQpKS50b1N0cmluZygxNikpO1xuICAgIHJldHVybiBuZXcgQ2Vsb1RyYW5zYWN0aW9uRGF0YShcbiAgICAgIG5ldyBDZWxvVHJhbnNhY3Rpb24oe1xuICAgICAgICBfdHlwZTogRVRIVHJhbnNhY3Rpb25UeXBlLkxFR0FDWSxcbiAgICAgICAgbm9uY2U6IHR4Lm5vbmNlLFxuICAgICAgICB0bzogdHgudG8sXG4gICAgICAgIGdhc1ByaWNlOiBhZGRIZXhQcmVmaXgobmV3IEJpZ051bWJlcih0eC5nYXNQcmljZSkudG9TdHJpbmcoMTYpKSxcbiAgICAgICAgZ2FzTGltaXQ6IGFkZEhleFByZWZpeChuZXcgQmlnTnVtYmVyKHR4Lmdhc0xpbWl0KS50b1N0cmluZygxNikpLFxuICAgICAgICB2YWx1ZTogYWRkSGV4UHJlZml4KG5ldyBCaWdOdW1iZXIodHgudmFsdWUpLnRvU3RyaW5nKDE2KSksXG4gICAgICAgIGRhdGE6IHR4LmRhdGEgPT09ICcweCcgPyAnJyA6IHR4LmRhdGEsXG4gICAgICAgIGZyb206IHR4LmZyb20sXG4gICAgICAgIHM6IHR4LnMsXG4gICAgICAgIHI6IHR4LnIsXG4gICAgICAgIHY6IHR4LnYgfHwgY2hhaW5JZCxcbiAgICAgIH0pLFxuICAgICAgdHguZGVwbG95ZWRBZGRyZXNzXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHNpZ24oa2V5UGFpcjogS2V5UGFpcikge1xuICAgIGNvbnN0IHByaXZhdGVLZXkgPSBhZGRIZXhQcmVmaXgoa2V5UGFpci5nZXRLZXlzKCkucHJ2IGFzIHN0cmluZyk7XG4gICAgY29uc3QgZGF0YSA9IENlbG9UcmFuc2FjdGlvbkRhdGEudHhKc29uVG9DZWxvVHgodGhpcy50b0pzb24oKSwga2V5UGFpci5nZXRBZGRyZXNzKCkpO1xuICAgIGNvbnN0IGNlbG9Mb2NhbFdhbGxldCA9IG5ldyBMb2NhbFdhbGxldCgpO1xuICAgIGNlbG9Mb2NhbFdhbGxldC5hZGRBY2NvdW50KHByaXZhdGVLZXkpO1xuICAgIGNvbnN0IHJhd1RyYW5zYWN0aW9uID0gYXdhaXQgY2Vsb0xvY2FsV2FsbGV0LnNpZ25UcmFuc2FjdGlvbihkYXRhKTtcblxuICAgIGNvbnN0IG5vbmNlQmlnTnVtYmVyID0gbmV3IEJpZ051bWJlcihyYXdUcmFuc2FjdGlvbi50eC5ub25jZSk7XG4gICAgcmF3VHJhbnNhY3Rpb24udHgubm9uY2UgPSBhZGRIZXhQcmVmaXgobm9uY2VCaWdOdW1iZXIudG9TdHJpbmcoMTYpKTtcbiAgICByYXdUcmFuc2FjdGlvbi5yYXcgPSBkYXRhLmRhdGEgPT09IHVuZGVmaW5lZCA/ICcnIDogZGF0YS5kYXRhO1xuICAgIHJhd1RyYW5zYWN0aW9uLnR4LmdhcyA9IHJhd1RyYW5zYWN0aW9uLnR4LmdhcztcbiAgICB0aGlzLnR4ID0gbmV3IENlbG9UcmFuc2FjdGlvbihDZWxvVHJhbnNhY3Rpb25EYXRhLmVuY29kZWRUeFRvSnNvbihyYXdUcmFuc2FjdGlvbikpO1xuICAgIHRoaXMudHguc2lnbih0b0J1ZmZlcihwcml2YXRlS2V5KSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Kc29uKCk6IExlZ2FjeVR4RGF0YSB7XG4gICAgY29uc3QgcmVzdWx0OiBMZWdhY3lUeERhdGEgPSB7XG4gICAgICBfdHlwZTogRVRIVHJhbnNhY3Rpb25UeXBlLkxFR0FDWSxcbiAgICAgIG5vbmNlOiBidWZmZXJUb0ludCh0aGlzLnR4Lm5vbmNlKSxcbiAgICAgIGdhc1ByaWNlOiBuZXcgQmlnTnVtYmVyKGJ1ZmZlclRvSGV4KHRoaXMudHguZ2FzUHJpY2UpLCAxNikudG9TdHJpbmcoMTApLFxuICAgICAgZ2FzTGltaXQ6IG5ldyBCaWdOdW1iZXIoYnVmZmVyVG9IZXgodGhpcy50eC5nYXNMaW1pdCksIDE2KS50b1N0cmluZygxMCksXG4gICAgICB2YWx1ZTogdGhpcy50eC52YWx1ZS5sZW5ndGggPT09IDAgPyAnMCcgOiBuZXcgQmlnTnVtYmVyKGJ1ZmZlclRvSGV4KHRoaXMudHgudmFsdWUpLCAxNikudG9TdHJpbmcoMTApLFxuICAgICAgZGF0YTogYnVmZmVyVG9IZXgodGhpcy50eC5kYXRhKSxcbiAgICAgIGlkOiBhZGRIZXhQcmVmaXgoYnVmZmVyVG9IZXgodGhpcy50eC5oYXNoKHRydWUpKSksXG4gICAgfTtcblxuICAgIGlmICh0aGlzLnR4LnRvICYmIHRoaXMudHgudG8ubGVuZ3RoKSB7XG4gICAgICByZXN1bHQudG8gPSBidWZmZXJUb0hleCh0aGlzLnR4LnRvKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50eC52ZXJpZnlTaWduYXR1cmUoKSkge1xuICAgICAgcmVzdWx0LmZyb20gPSBidWZmZXJUb0hleCh0aGlzLnR4LmdldFNlbmRlckFkZHJlc3MoKSk7XG4gICAgfVxuXG4gICAgY29uc3QgY2hhaW5JZCA9IHRoaXMudHguZ2V0Q2hhaW5JZCgpO1xuICAgIGlmIChjaGFpbklkKSB7XG4gICAgICByZXN1bHQuY2hhaW5JZCA9IGNoYWluSWQudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kZXBsb3llZEFkZHJlc3MpIHtcbiAgICAgIHJlc3VsdC5kZXBsb3llZEFkZHJlc3MgPSB0aGlzLmRlcGxveWVkQWRkcmVzcztcbiAgICB9XG5cbiAgICB0aGlzLnNldFNpZ25hdHVyZUZpZWxkcyhyZXN1bHQpO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0U2lnbmF0dXJlRmllbGRzKHJlc3VsdDogTGVnYWN5VHhEYXRhKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudHgudiAmJiB0aGlzLnR4LnYubGVuZ3RoKSB7XG4gICAgICByZXN1bHQudiA9IGJ1ZmZlclRvSGV4KHRoaXMudHgudik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHguciAmJiB0aGlzLnR4LnIubGVuZ3RoKSB7XG4gICAgICByZXN1bHQuciA9IGJ1ZmZlclRvSGV4KHRoaXMudHgucik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHgucyAmJiB0aGlzLnR4LnMubGVuZ3RoKSB7XG4gICAgICByZXN1bHQucyA9IGJ1ZmZlclRvSGV4KHRoaXMudHgucyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvU2VyaWFsaXplZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBhZGRIZXhQcmVmaXgodGhpcy50eC5zZXJpYWxpemUoKS50b1N0cmluZygnaGV4JykpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgdHhKc29uVG9DZWxvVHgodHhKc29uOiBMZWdhY3lUeERhdGEsIHNpZ25lcjogc3RyaW5nKTogQ2Vsb1R4IHtcbiAgICAvLyB0aGUgY2VsbyBsaWJyYXJ5IHJlcXVpcmVzIHlvdSB0byBzcGVjaWZ5IHRoZSBzaWduZXIgYWRkcmVzcyB3aXRoIHRoZSBmcm9tIGZpZWxkXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHR4SnNvbiwge1xuICAgICAgY2hhaW5JZDogdHhKc29uLmNoYWluSWQgPT09IHVuZGVmaW5lZCA/IDAgOiBwYXJzZUludCh0eEpzb24uY2hhaW5JZCwgMTApLFxuICAgICAgZ2FzOiB0eEpzb24uZ2FzTGltaXQsXG4gICAgICBmcm9tOiBzaWduZXIsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBlbmNvZGVkVHhUb0pzb24oZW5jb2RlZFR4OiBFbmNvZGVkVHJhbnNhY3Rpb24pOiBMZWdhY3lUeERhdGEge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5lbmNvZGVkVHgudHgsXG4gICAgICBfdHlwZTogRVRIVHJhbnNhY3Rpb25UeXBlLkxFR0FDWSxcbiAgICAgIG5vbmNlOiBwYXJzZUludChlbmNvZGVkVHgudHgubm9uY2UsIDE2KSxcbiAgICAgIGdhc0xpbWl0OiBlbmNvZGVkVHgudHguZ2FzLFxuICAgICAgZGF0YTogZW5jb2RlZFR4LnJhdyxcbiAgICB9O1xuICB9XG59XG4iXX0=
|
package/dist/src/lib/utils.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -46,7 +50,7 @@ function deserialize(serializedTx) {
|
|
|
46
50
|
let chainId = v;
|
|
47
51
|
let from;
|
|
48
52
|
if (r !== '0x' && s !== '0x') {
|
|
49
|
-
const [tx, sender] = wallet_base_1.recoverTransaction(serializedTx);
|
|
53
|
+
const [tx, sender] = (0, wallet_base_1.recoverTransaction)(serializedTx);
|
|
50
54
|
from = sender;
|
|
51
55
|
chainId = tx.chainId;
|
|
52
56
|
}
|
|
@@ -96,4 +100,4 @@ exports.getCommon = getCommon;
|
|
|
96
100
|
cat CeloWalletSimple.bin
|
|
97
101
|
*/
|
|
98
102
|
exports.walletSimpleByteCode = '0x60606040526000600160006101000a81548160ff021916908315150217905550341561002a57600080fd5b60405161155b38038061155b833981016040528080518201919050506003815114151561005657600080fd5b806000908051906020019061006c929190610073565b5050610140565b8280548282559060005260206000209081019282156100ec579160200282015b828111156100eb5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190610093565b5b5090506100f991906100fd565b5090565b61013d91905b8082111561013957600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101610103565b5090565b90565b61140c8061014f6000396000f300606060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630dcd7a6c146101335780632079fb9a146101e95780632da034091461024c57806339125215146102a45780637df73e271461037e578063a0b7967b146103cf578063a68a76cc146103f8578063abe3219c1461044d578063fc0f392d1461047a575b6000341115610131577f6e89d517057028190560dd200cf6bf792842861353d1173761dfa362e1c133f03334600036604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001828103825284848281815260200192508082843782019150509550505050505060405180910390a15b005b341561013e57600080fd5b6101e7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061048f565b005b34156101f457600080fd5b61020a6004808035906020019091905050610668565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561025757600080fd5b6102a2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506106a7565b005b34156102af57600080fd5b61037c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610773565b005b341561038957600080fd5b6103b5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610a72565b604051808215151515815260200191505060405180910390f35b34156103da57600080fd5b6103e2610b16565b6040518082815260200191505060405180910390f35b341561040357600080fd5b61040b610b70565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561045857600080fd5b610460610b95565b604051808215151515815260200191505060405180910390f35b341561048557600080fd5b61048d610ba8565b005b60008061049b33610a72565b15156104a657600080fd5b878787878760405180807f43454c4f2d455243323000000000000000000000000000000000000000000000815250600a018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140183815260200182815260200195505050505050604051809103902091506105898883858888610c3b565b508590508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb89896000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561063857600080fd5b6102c65a03f1151561064957600080fd5b50505060405180519050151561065e57600080fd5b5050505050505050565b60008181548110151561067757fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006106b233610a72565b15156106bd57600080fd5b8290508073ffffffffffffffffffffffffffffffffffffffff16633ef13367836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b151561075a57600080fd5b6102c65a03f1151561076b57600080fd5b505050505050565b60008061077f33610a72565b151561078a57600080fd5b878787878760405180807f43454c4f000000000000000000000000000000000000000000000000000000008152506004018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515610833578051825260208201915060208101905060208303925061080e565b6001836020036101000a038019825116818451168082178552505050505050905001838152602001828152602001955050505050506040518091039020915061087f8883858888610c3b565b90508773ffffffffffffffffffffffffffffffffffffffff16878760405180828051906020019080838360005b838110156108c75780820151818401526020810190506108ac565b50505050905090810190601f1680156108f45780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876187965a03f192505050151561091857600080fd5b7f59bed9ab5d78073465dd642a9e3e76dfdb7d53bcae9d09df7d0b8f5234d5a8063382848b8b8b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185600019166000191681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610a29578082015181840152602081019050610a0e565b50505050905090810190601f168015610a565780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15050505050505050565b600080600090505b600080549050811015610b0b578273ffffffffffffffffffffffffffffffffffffffff16600082815481101515610aad57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610afe5760019150610b10565b8080600101915050610a7a565b600091505b50919050565b6000806000809150600090505b600a811015610b655781600282600a81101515610b3c57fe5b01541115610b5857600281600a81101515610b5357fe5b015491505b8080600101915050610b23565b600182019250505090565b6000610b7a610e90565b604051809103906000f0801515610b9057600080fd5b905090565b600160009054906101000a900460ff1681565b610bb133610a72565b1515610bbc57600080fd5b60018060006101000a81548160ff0219169083151502179055507f0909e8f76a4fd3e970f2eaef56c0ee6dfaf8b87c5b8d3f56ffce78e825a9115733604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600080610c488686610ce6565b9050600160009054906101000a900460ff168015610c6c5750610c6a87610a72565b155b15610c7657600080fd5b42841015610c8357600080fd5b610c8c83610db9565b610c9581610a72565b1515610ca057600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610cd957600080fd5b8091505095945050505050565b60008060008060418551141515610cfc57600080fd5b602085015192506040850151915060ff6041860151169050601b8160ff161015610d2757601b810190505b600186828585604051600081526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f11515610da557600080fd5b505060206040510351935050505092915050565b600080610dc533610a72565b1515610dd057600080fd5b60009150600090505b600a811015610e385782600282600a81101515610df257fe5b01541415610dff57600080fd5b600282600a81101515610e0e57fe5b0154600282600a81101515610e1f57fe5b01541015610e2b578091505b8080600101915050610dd9565b600282600a81101515610e4757fe5b0154831015610e5557600080fd5b612710600283600a81101515610e6757fe5b015401831115610e7657600080fd5b82600283600a81101515610e8657fe5b0181905550505050565b60405161054080610ea18339019056006060604052341561000f57600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506104e28061005e6000396000f300606060405260043610610056576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062821de3146101475780633ef133671461019c5780636b9f96ea146101d5575b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015156100b757600080fd5b7f69b31548dea9b3b707b4dff357d326e3e9348b24e7a6080a218a6edeeec48f9b3334600036604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001828103825284848281815260200192508082843782019150509550505050505060405180910390a1005b341561015257600080fd5b61015a6101ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101a757600080fd5b6101d3600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061020f565b005b34156101e057600080fd5b6101e861043c565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561026f57600080fd5b8392503091508273ffffffffffffffffffffffffffffffffffffffff166370a08231836000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561031857600080fd5b6102c65a03f1151561032957600080fd5b505050604051805190509050600081141561034357610436565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561040f57600080fd5b6102c65a03f1151561042057600080fd5b50505060405180519050151561043557600080fd5b5b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015156104b457600080fd5b5600a165627a7a7230582042193b8fa36bb211143819a525fe07f597a57ac51bda735499ecebe2eda648870029a165627a7a7230582011b3e786820bbf974fbf8802c6bfd0fb44ab2ec30ed9018b91aad7503cd214aa0029';
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw0Q0FBNkM7QUFFN0MsbURBQXVEO0FBQ3ZELCtDQUFpQztBQUNqQyxnRUFBcUM7QUFDckMsc0RBQXVFO0FBQ3ZFLDhDQUFpRjtBQUNqRiwyQ0FBMkQ7QUFFM0Q7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLFdBQVcsQ0FBQyxZQUFvQjtJQUM5QyxJQUFJO1FBQ0YsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3hELFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0VBQWdFO1FBQ3hGLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztRQUN4RSxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUM7UUFDaEIsSUFBSSxJQUFJLENBQUM7UUFDVCxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRTtZQUM1QixNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxHQUFHLGdDQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3RELElBQUksR0FBRyxNQUFNLENBQUM7WUFDZCxPQUFPLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQztTQUN0QjtRQUNELE1BQU0sTUFBTSxHQUFpQjtZQUMzQixLQUFLLEVBQUUsaUNBQWtCLENBQUMsTUFBTTtZQUNoQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUM3RCxRQUFRLEVBQUUsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLHNCQUFTLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRTtZQUN4RixRQUFRLEVBQUUsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLHNCQUFTLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRTtZQUN4RixLQUFLLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLHNCQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRTtZQUMvRSxJQUFJO1lBQ0osT0FBTztZQUNQLElBQUk7WUFDSixDQUFDO1lBQ0QsQ0FBQztZQUNELENBQUM7U0FDRixDQUFDO1FBRUYsSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ2YsTUFBTSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7U0FDaEI7UUFFRCxPQUFPLE1BQU0sQ0FBQztLQUNmO0lBQUMsTUFBTTtRQUNOLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0tBQ25FO0FBQ0gsQ0FBQztBQWxDRCxrQ0FrQ0M7QUFFRCxNQUFNLE9BQU8sR0FBcUMsSUFBSSxHQUFHLENBQThCO0lBQ3JGLENBQUMscUJBQVcsQ0FBQyxPQUFPLEVBQUUseUJBQWEsQ0FBQztJQUNwQyxDQUFDLHFCQUFXLENBQUMsT0FBTyxFQUFFLHlCQUFhLENBQUM7Q0FDckMsQ0FBQyxDQUFDO0FBRUg7O0dBRUc7QUFDSCxTQUFnQixTQUFTLENBQUMsT0FBb0I7SUFDNUMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwQyxJQUFJLENBQUMsTUFBTSxFQUFFO1FBQ1gsTUFBTSxJQUFJLGtDQUF1QixDQUFDLHNDQUFzQyxDQUFDLENBQUM7S0FDM0U7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBTkQsOEJBTUM7QUFFRDs7Ozs7O0VBTUU7QUFDVyxRQUFBLG9CQUFvQixHQUMvQiwwclZBQTByVixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmV0d29ya1R5cGUgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgRXRoZXJldW1Db21tb24gZnJvbSAnQGV0aGVyZXVtanMvY29tbW9uJztcbmltcG9ydCB7IHJlY292ZXJUcmFuc2FjdGlvbiB9IGZyb20gJ0BjZWxvL3dhbGxldC1iYXNlJztcbmltcG9ydCAqIGFzIGV0aGVycyBmcm9tICdldGhlcnMnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgRVRIVHJhbnNhY3Rpb25UeXBlLCBMZWdhY3lUeERhdGEgfSBmcm9tICdAYml0Z28vc2RrLWNvaW4tZXRoJztcbmltcG9ydCB7IEludmFsaWRUcmFuc2FjdGlvbkVycm9yLCBQYXJzZVRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgbWFpbm5ldENvbW1vbiwgdGVzdG5ldENvbW1vbiB9IGZyb20gJy4vcmVzb3VyY2VzJztcblxuLyoqXG4gKiBDZWxvIHRyYW5zYWN0aW9uIGRlc2VyaWFsaXphdGlvbiBiYXNlZCBvbiBjb2RlXG4gKiBmcm9tIEBjZWxvL2NvbnRyYWN0a2l0L2xpYi91dGlscy9zaWduaW5nLXV0aWxzXG4gKiBnaXRodWI6IGh0dHBzOi8vZ2l0aHViLmNvbS9jZWxvLW9yZy9jZWxvLW1vbm9yZXBvL3RyZWUvbWFzdGVyL3BhY2thZ2VzL2NvbnRyYWN0a2l0XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHNlcmlhbGl6ZWRUeCB0aGUgc2VyaWFsaXplZCB0cmFuc2FjdGlvblxuICogQHJldHVybnMge0xlZ2FjeVR4RGF0YX0gdGhlIGRlc2VyaWFsaXplZCB0cmFuc2FjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUoc2VyaWFsaXplZFR4OiBzdHJpbmcpOiBMZWdhY3lUeERhdGEge1xuICB0cnkge1xuICAgIGNvbnN0IGRlY29kZWRUeCA9IGV0aGVycy51dGlscy5STFAuZGVjb2RlKHNlcmlhbGl6ZWRUeCk7XG4gICAgZGVjb2RlZFR4LnNwbGljZSgzLCAzKTsgLy8gcmVtb3ZlIHVudXNlZCBmZWVDdXJyZW5jeSwgZ2F0ZXdheUZlZVJlY2lwaWVudCBhbmQgZ2F0ZXdheUZlZVxuICAgIGNvbnN0IFtub25jZSwgZ2FzUHJpY2UsIGdhc0xpbWl0LCB0bywgdmFsdWUsIGRhdGEsIHYsIHIsIHNdID0gZGVjb2RlZFR4O1xuICAgIGxldCBjaGFpbklkID0gdjtcbiAgICBsZXQgZnJvbTtcbiAgICBpZiAociAhPT0gJzB4JyAmJiBzICE9PSAnMHgnKSB7XG4gICAgICBjb25zdCBbdHgsIHNlbmRlcl0gPSByZWNvdmVyVHJhbnNhY3Rpb24oc2VyaWFsaXplZFR4KTtcbiAgICAgIGZyb20gPSBzZW5kZXI7XG4gICAgICBjaGFpbklkID0gdHguY2hhaW5JZDtcbiAgICB9XG4gICAgY29uc3QgY2Vsb1R4OiBMZWdhY3lUeERhdGEgPSB7XG4gICAgICBfdHlwZTogRVRIVHJhbnNhY3Rpb25UeXBlLkxFR0FDWSxcbiAgICAgIG5vbmNlOiBub25jZS50b0xvd2VyQ2FzZSgpID09PSAnMHgnID8gMCA6IHBhcnNlSW50KG5vbmNlLCAxNiksXG4gICAgICBnYXNQcmljZTogZ2FzUHJpY2UudG9Mb3dlckNhc2UoKSA9PT0gJzB4JyA/ICcwJyA6IG5ldyBCaWdOdW1iZXIoZ2FzUHJpY2UsIDE2KS50b1N0cmluZygpLFxuICAgICAgZ2FzTGltaXQ6IGdhc0xpbWl0LnRvTG93ZXJDYXNlKCkgPT09ICcweCcgPyAnMCcgOiBuZXcgQmlnTnVtYmVyKGdhc0xpbWl0LCAxNikudG9TdHJpbmcoKSxcbiAgICAgIHZhbHVlOiB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnMHgnID8gJzAnIDogbmV3IEJpZ051bWJlcih2YWx1ZSwgMTYpLnRvU3RyaW5nKCksXG4gICAgICBkYXRhLFxuICAgICAgY2hhaW5JZCxcbiAgICAgIGZyb20sXG4gICAgICB2LFxuICAgICAgcixcbiAgICAgIHMsXG4gICAgfTtcblxuICAgIGlmICh0byAhPT0gJzB4Jykge1xuICAgICAgY2Vsb1R4LnRvID0gdG87XG4gICAgfVxuXG4gICAgcmV0dXJuIGNlbG9UeDtcbiAgfSBjYXRjaCB7XG4gICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBzZXJpYWxpemVkIHRyYW5zYWN0aW9uJyk7XG4gIH1cbn1cblxuY29uc3QgY29tbW9uczogTWFwPE5ldHdvcmtUeXBlLCBFdGhlcmV1bUNvbW1vbj4gPSBuZXcgTWFwPE5ldHdvcmtUeXBlLCBFdGhlcmV1bUNvbW1vbj4oW1xuICBbTmV0d29ya1R5cGUuTUFJTk5FVCwgbWFpbm5ldENvbW1vbl0sXG4gIFtOZXR3b3JrVHlwZS5URVNUTkVULCB0ZXN0bmV0Q29tbW9uXSxcbl0pO1xuXG4vKipcbiAqIEBwYXJhbSBuZXR3b3JrXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb21tb24obmV0d29yazogTmV0d29ya1R5cGUpOiBFdGhlcmV1bUNvbW1vbiB7XG4gIGNvbnN0IGNvbW1vbiA9IGNvbW1vbnMuZ2V0KG5ldHdvcmspO1xuICBpZiAoIWNvbW1vbikge1xuICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignTWlzc2luZyBuZXR3b3JrIGNvbW1vbiBjb25maWd1cmF0aW9uJyk7XG4gIH1cbiAgcmV0dXJuIGNvbW1vbjtcbn1cblxuLypcbiAgU3RlcHMgdG8gcmVwcm9kdWNlOlxuICBDaGVja291dCBodHRwczovL2dpdGh1Yi5jb20vYml0Z28vZXRoLW11bHRpc2lnLXYyXG4gIG5wbSBpbnN0YWxsIC1nIHNvbGNAMC40LjE4XG4gIHNvbGNqcyAtLWJpbiAuL2NvbnRyYWN0cy9jb2lucy9DZWxvV2FsbGV0U2ltcGxlLnNvbCAuL2NvbnRyYWN0cy9Gb3J3YXJkZXIuc29sIC4vY29udHJhY3RzL0VSQzIwSW50ZXJmYWNlLnNvbFxuICBjYXQgQ2Vsb1dhbGxldFNpbXBsZS5iaW5cbiovXG5leHBvcnQgY29uc3Qgd2FsbGV0U2ltcGxlQnl0ZUNvZGUgPVxuICAnMHg2MDYwNjA0MDUyNjAwMDYwMDE2MDAwNjEwMTAwMGE4MTU0ODE2MGZmMDIxOTE2OTA4MzE1MTUwMjE3OTA1NTUwMzQxNTYxMDAyYTU3NjAwMDgwZmQ1YjYwNDA1MTYxMTU1YjM4MDM4MDYxMTU1YjgzMzk4MTAxNjA0MDUyODA4MDUxODIwMTkxOTA1MDUwNjAwMzgxNTExNDE1MTU2MTAwNTY1NzYwMDA4MGZkNWI4MDYwMDA5MDgwNTE5MDYwMjAwMTkwNjEwMDZjOTI5MTkwNjEwMDczNTY1YjUwNTA2MTAxNDA1NjViODI4MDU0ODI4MjU1OTA2MDAwNTI2MDIwNjAwMDIwOTA4MTAxOTI4MjE1NjEwMGVjNTc5MTYwMjAwMjgyMDE1YjgyODExMTE1NjEwMGViNTc4MjUxODI2MDAwNjEwMTAwMGE4MTU0ODE3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYwMjE5MTY5MDgzNzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTYwMjE3OTA1NTUwOTE2MDIwMDE5MTkwNjAwMTAxOTA2MTAwOTM1NjViNWI1MDkwNTA2MTAwZjk5MTkwNjEwMGZkNTY1YjUwOTA1NjViNjEwMTNkOTE5MDViODA4MjExMTU2MTAxMzk1NzYwMDA4MTgxNjEwMTAwMGE4MTU0OTA3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYwMjE5MTY5MDU1NTA2MDAxMDE2MTAxMDM1NjViNTA5MDU2NWI5MDU2NWI2MTE0MGM4MDYxMDE0ZjYwMDAzOTYwMDBmMzAwNjA2MDYwNDA1MjYwMDQzNjEwNjEwMDk5NTc2MDAwMzU3YzAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA5MDA0NjNmZmZmZmZmZjE2ODA2MzBkY2Q3YTZjMTQ2MTAxMzM1NzgwNjMyMDc5ZmI5YTE0NjEwMWU5NTc4MDYzMmRhMDM0MDkxNDYxMDI0YzU3ODA2MzM5MTI1MjE1MTQ2MTAyYTQ1NzgwNjM3ZGY3M2UyNzE0NjEwMzdlNTc4MDYzYTBiNzk2N2IxNDYxMDNjZjU3ODA2M2E2OGE3NmNjMTQ2MTAzZjg1NzgwNjNhYmUzMjE5YzE0NjEwNDRkNTc4MDYzZmMwZjM5MmQxNDYxMDQ3YTU3NWI2MDAwMzQxMTE1NjEwMTMxNTc3ZjZlODlkNTE3MDU3MDI4MTkwNTYwZGQyMDBjZjZiZjc5Mjg0Mjg2MTM1M2QxMTczNzYxZGZhMzYyZTFjMTMzZjAzMzM0NjAwMDM2NjA0MDUxODA4NTczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2NzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY4MTUyNjAyMDAxODQ4MTUyNjAyMDAxODA2MDIwMDE4MjgxMDM4MjUyODQ4NDgyODE4MTUyNjAyMDAxOTI1MDgwODI4NDM3ODIwMTkxNTA1MDk1NTA1MDUwNTA1MDUwNjA0MDUxODA5MTAzOTBhMTViMDA1YjM0MTU2MTAxM2U1NzYwMDA4MGZkNWI2MTAxZTc2MDA0ODA4MDM1NzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY5MDYwMjAwMTkwOTE5MDgwMzU5MDYwMjAwMTkwOTE5MDgwMzU3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjkwNjAyMDAxOTA5MTkwODAzNTkwNjAyMDAxOTA5MTkwODAzNTkwNjAyMDAxOTA5MTkwODAzNTkwNjAyMDAxOTA4MjAxODAzNTkwNjAyMDAxOTA4MDgwNjAxZjAxNjAyMDgwOTEwNDAyNjAyMDAxNjA0MDUxOTA4MTAxNjA0MDUyODA5MzkyOTE5MDgxODE1MjYwMjAwMTgzODM4MDgyODQzNzgyMDE5MTUwNTA1MDUwNTA1MDkxOTA1MDUwNjEwNDhmNTY1YjAwNWIzNDE1NjEwMWY0NTc2MDAwODBmZDViNjEwMjBhNjAwNDgwODAzNTkwNjAyMDAxOTA5MTkwNTA1MDYxMDY2ODU2NWI2MDQwNTE4MDgyNzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjgxNTI2MDIwMDE5MTUwNTA2MDQwNTE4MDkxMDM5MGYzNWIzNDE1NjEwMjU3NTc2MDAwODBmZDViNjEwMmEyNjAwNDgwODAzNTczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2OTA2MDIwMDE5MDkxOTA4MDM1NzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY5MDYwMjAwMTkwOTE5MDUwNTA2MTA2YTc1NjViMDA1YjM0MTU2MTAyYWY1NzYwMDA4MGZkNWI2MTAzN2M2MDA0ODA4MDM1NzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY5MDYwMjAwMTkwOTE5MDgwMzU5MDYwMjAwMTkwOTE5MDgwMzU5MDYwMjAwMTkwODIwMTgwMzU5MDYwMjAwMTkwODA4MDYwMWYwMTYwMjA4MDkxMDQwMjYwMjAwMTYwNDA1MTkwODEwMTYwNDA1MjgwOTM5MjkxOTA4MTgxNTI2MDIwMDE4MzgzODA4Mjg0Mzc4MjAxOTE1MDUwNTA1MDUwNTA5MTkwODAzNTkwNjAyMDAxOTA5MTkwODAzNTkwNjAyMDAxOTA5MTkwODAzNTkwNjAyMDAxOTA4MjAxODAzNTkwNjAyMDAxOTA4MDgwNjAxZjAxNjAyMDgwOTEwNDAyNjAyMDAxNjA0MDUxOTA4MTAxNjA0MDUyODA5MzkyOTE5MDgxODE1MjYwMjAwMTgzODM4MDgyODQzNzgyMDE5MTUwNTA1MDUwNTA1MDkxOTA1MDUwNjEwNzczNTY1YjAwNWIzNDE1NjEwMzg5NTc2MDAwODBmZDViNjEwM2I1NjAwNDgwODAzNTczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2OTA2MDIwMDE5MDkxOTA1MDUwNjEwYTcyNTY1YjYwNDA1MTgwODIxNTE1MTUxNTgxNTI2MDIwMDE5MTUwNTA2MDQwNTE4MDkxMDM5MGYzNWIzNDE1NjEwM2RhNTc2MDAwODBmZDViNjEwM2UyNjEwYjE2NTY1YjYwNDA1MTgwODI4MTUyNjAyMDAxOTE1MDUwNjA0MDUxODA5MTAzOTBmMzViMzQxNTYxMDQwMzU3NjAwMDgwZmQ1YjYxMDQwYjYxMGI3MDU2NWI2MDQwNTE4MDgyNzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjgxNTI2MDIwMDE5MTUwNTA2MDQwNTE4MDkxMDM5MGYzNWIzNDE1NjEwNDU4NTc2MDAwODBmZDViNjEwNDYwNjEwYjk1NTY1YjYwNDA1MTgwODIxNTE1MTUxNTgxNTI2MDIwMDE5MTUwNTA2MDQwNTE4MDkxMDM5MGYzNWIzNDE1NjEwNDg1NTc2MDAwODBmZDViNjEwNDhkNjEwYmE4NTY1YjAwNWI2MDAwODA2MTA0OWIzMzYxMGE3MjU2NWIxNTE1NjEwNGE2NTc2MDAwODBmZDViODc4Nzg3ODc4NzYwNDA1MTgwODA3ZjQzNDU0YzRmMmQ0NTUyNDMzMjMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4MTUyNTA2MDBhMDE4NjczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2NzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY2YzAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDI4MTUyNjAxNDAxODU4MTUyNjAyMDAxODQ3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2NmMwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyODE1MjYwMTQwMTgzODE1MjYwMjAwMTgyODE1MjYwMjAwMTk1NTA1MDUwNTA1MDUwNjA0MDUxODA5MTAzOTAyMDkxNTA2MTA1ODk4ODgzODU4ODg4NjEwYzNiNTY1YjUwODU5MDUwODA3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjYzYTkwNTljYmI4OTg5NjAwMDYwNDA1MTYwMjAwMTUyNjA0MDUxODM2M2ZmZmZmZmZmMTY3YzAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjgxNTI2MDA0MDE4MDgzNzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjgxNTI2MDIwMDE4MjgxNTI2MDIwMDE5MjUwNTA1MDYwMjA2MDQwNTE4MDgzMDM4MTYwMDA4NzgwM2IxNTE1NjEwNjM4NTc2MDAwODBmZDViNjEwMmM2NWEwM2YxMTUxNTYxMDY0OTU3NjAwMDgwZmQ1YjUwNTA1MDYwNDA1MTgwNTE5MDUwMTUxNTYxMDY1ZTU3NjAwMDgwZmQ1YjUwNTA1MDUwNTA1MDUwNTA1NjViNjAwMDgxODE1NDgxMTAxNTE1NjEwNjc3NTdmZTViOTA2MDAwNTI2MDIwNjAwMDIwOTAwMTYwMDA5MTUwNTQ5MDYxMDEwMDBhOTAwNDczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2ODE1NjViNjAwMDYxMDZiMjMzNjEwYTcyNTY1YjE1MTU2MTA2YmQ1NzYwMDA4MGZkNWI4MjkwNTA4MDczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2NjMzZWYxMzM2NzgzNjA0MDUxODI2M2ZmZmZmZmZmMTY3YzAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjgxNTI2MDA0MDE4MDgyNzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjgxNTI2MDIwMDE5MTUwNTA2MDAwNjA0MDUxODA4MzAzODE2MDAwODc4MDNiMTUxNTYxMDc1YTU3NjAwMDgwZmQ1YjYxMDJjNjVhMDNmMTE1MTU2MTA3NmI1NzYwMDA4MGZkNWI1MDUwNTA1MDUwNTA1NjViNjAwMDgwNjEwNzdmMzM2MTBhNzI1NjViMTUxNTYxMDc4YTU3NjAwMDgwZmQ1Yjg3ODc4Nzg3ODc2MDQwNTE4MDgwN2Y0MzQ1NGM0ZjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODE1MjUwNjAwNDAxODY3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2NmMwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyODE1MjYwMTQwMTg1ODE1MjYwMjAwMTg0ODA1MTkwNjAyMDAxOTA4MDgzODM1YjYwMjA4MzEwMTUxNTYxMDgzMzU3ODA1MTgyNTI2MDIwODIwMTkxNTA2MDIwODEwMTkwNTA2MDIwODMwMzkyNTA2MTA4MGU1NjViNjAwMTgzNjAyMDAzNjEwMTAwMGEwMzgwMTk4MjUxMTY4MTg0NTExNjgwODIxNzg1NTI1MDUwNTA1MDUwNTA5MDUwMDE4MzgxNTI2MDIwMDE4MjgxNTI2MDIwMDE5NTUwNTA1MDUwNTA1MDYwNDA1MTgwOTEwMzkwMjA5MTUwNjEwODdmODg4Mzg1ODg4ODYxMGMzYjU2NWI5MDUwODc3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjg3ODc2MDQwNTE4MDgyODA1MTkwNjAyMDAxOTA4MDgzODM2MDAwNWI4MzgxMTAxNTYxMDhjNzU3ODA4MjAxNTE4MTg0MDE1MjYwMjA4MTAxOTA1MDYxMDhhYzU2NWI1MDUwNTA1MDkwNTA5MDgxMDE5MDYwMWYxNjgwMTU2MTA4ZjQ1NzgwODIwMzgwNTE2MDAxODM2MDIwMDM2MTAxMDAwYTAzMTkxNjgxNTI2MDIwMDE5MTUwNWI1MDkxNTA1MDYwMDA2MDQwNTE4MDgzMDM4MTg1ODc2MTg3OTY1YTAzZjE5MjUwNTA1MDE1MTU2MTA5MTg1NzYwMDA4MGZkNWI3ZjU5YmVkOWFiNWQ3ODA3MzQ2NWRkNjQyYTllM2U3NmRmZGI3ZDUzYmNhZTlkMDlkZjdkMGI4ZjUyMzRkNWE4MDYzMzgyODQ4YjhiOGI2MDQwNTE4MDg3NzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjgxNTI2MDIwMDE4NjczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2NzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY4MTUyNjAyMDAxODU2MDAwMTkxNjYwMDAxOTE2ODE1MjYwMjAwMTg0NzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjgxNTI2MDIwMDE4MzgxNTI2MDIwMDE4MDYwMjAwMTgyODEwMzgyNTI4MzgxODE1MTgxNTI2MDIwMDE5MTUwODA1MTkwNjAyMDAxOTA4MDgzODM2MDAwNWI4MzgxMTAxNTYxMGEyOTU3ODA4MjAxNTE4MTg0MDE1MjYwMjA4MTAxOTA1MDYxMGEwZTU2NWI1MDUwNTA1MDkwNTA5MDgxMDE5MDYwMWYxNjgwMTU2MTBhNTY1NzgwODIwMzgwNTE2MDAxODM2MDIwMDM2MTAxMDAwYTAzMTkxNjgxNTI2MDIwMDE5MTUwNWI1MDk3NTA1MDUwNTA1MDUwNTA1MDYwNDA1MTgwOTEwMzkwYTE1MDUwNTA1MDUwNTA1MDUwNTY1YjYwMDA4MDYwMDA5MDUwNWI2MDAwODA1NDkwNTA4MTEwMTU2MTBiMGI1NzgyNzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY2MDAwODI4MTU0ODExMDE1MTU2MTBhYWQ1N2ZlNWI5MDYwMDA1MjYwMjA2MDAwMjA5MDAxNjAwMDkwNTQ5MDYxMDEwMDBhOTAwNDczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2NzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTYxNDE1NjEwYWZlNTc2MDAxOTE1MDYxMGIxMDU2NWI4MDgwNjAwMTAxOTE1MDUwNjEwYTdhNTY1YjYwMDA5MTUwNWI1MDkxOTA1MDU2NWI2MDAwODA2MDAwODA5MTUwNjAwMDkwNTA1YjYwMGE4MTEwMTU2MTBiNjU1NzgxNjAwMjgyNjAwYTgxMTAxNTE1NjEwYjNjNTdmZTViMDE1NDExMTU2MTBiNTg1NzYwMDI4MTYwMGE4MTEwMTUxNTYxMGI1MzU3ZmU1YjAxNTQ5MTUwNWI4MDgwNjAwMTAxOTE1MDUwNjEwYjIzNTY1YjYwMDE4MjAxOTI1MDUwNTA5MDU2NWI2MDAwNjEwYjdhNjEwZTkwNTY1YjYwNDA1MTgwOTEwMzkwNjAwMGYwODAxNTE1NjEwYjkwNTc2MDAwODBmZDViOTA1MDkwNTY1YjYwMDE2MDAwOTA1NDkwNjEwMTAwMGE5MDA0NjBmZjE2ODE1NjViNjEwYmIxMzM2MTBhNzI1NjViMTUxNTYxMGJiYzU3NjAwMDgwZmQ1YjYwMDE4MDYwMDA2MTAxMDAwYTgxNTQ4MTYwZmYwMjE5MTY5MDgzMTUxNTAyMTc5MDU1NTA3ZjA5MDllOGY3NmE0ZmQzZTk3MGYyZWFlZjU2YzBlZTZkZmFmOGI4N2M1YjhkM2Y1NmZmY2U3OGU4MjVhOTExNTczMzYwNDA1MTgwODI3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2ODE1MjYwMjAwMTkxNTA1MDYwNDA1MTgwOTEwMzkwYTE1NjViNjAwMDgwNjEwYzQ4ODY4NjYxMGNlNjU2NWI5MDUwNjAwMTYwMDA5MDU0OTA2MTAxMDAwYTkwMDQ2MGZmMTY4MDE1NjEwYzZjNTc1MDYxMGM2YTg3NjEwYTcyNTY1YjE1NWIxNTYxMGM3NjU3NjAwMDgwZmQ1YjQyODQxMDE1NjEwYzgzNTc2MDAwODBmZDViNjEwYzhjODM2MTBkYjk1NjViNjEwYzk1ODE2MTBhNzI1NjViMTUxNTYxMGNhMDU3NjAwMDgwZmQ1YjMzNzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY4MTczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2MTQxNTYxMGNkOTU3NjAwMDgwZmQ1YjgwOTE1MDUwOTU5NDUwNTA1MDUwNTA1NjViNjAwMDgwNjAwMDgwNjA0MTg1NTExNDE1MTU2MTBjZmM1NzYwMDA4MGZkNWI2MDIwODUwMTUxOTI1MDYwNDA4NTAxNTE5MTUwNjBmZjYwNDE4NjAxNTExNjkwNTA2MDFiODE2MGZmMTYxMDE1NjEwZDI3NTc2MDFiODEwMTkwNTA1YjYwMDE4NjgyODU4NTYwNDA1MTYwMDA4MTUyNjAyMDAxNjA0MDUyNjAwMDYwNDA1MTYwMjAwMTUyNjA0MDUxODA4NTYwMDAxOTE2NjAwMDE5MTY4MTUyNjAyMDAxODQ2MGZmMTY2MGZmMTY4MTUyNjAyMDAxODM2MDAwMTkxNjYwMDAxOTE2ODE1MjYwMjAwMTgyNjAwMDE5MTY2MDAwMTkxNjgxNTI2MDIwMDE5NDUwNTA1MDUwNTA2MDIwNjA0MDUxNjAyMDgxMDM5MDgwODQwMzkwNjAwMDg2NjE2NDZlNWEwM2YxMTUxNTYxMGRhNTU3NjAwMDgwZmQ1YjUwNTA2MDIwNjA0MDUxMDM1MTkzNTA1MDUwNTA5MjkxNTA1MDU2NWI2MDAwODA2MTBkYzUzMzYxMGE3MjU2NWIxNTE1NjEwZGQwNTc2MDAwODBmZDViNjAwMDkxNTA2MDAwOTA1MDViNjAwYTgxMTAxNTYxMGUzODU3ODI2MDAyODI2MDBhODExMDE1MTU2MTBkZjI1N2ZlNWIwMTU0MTQxNTYxMGRmZjU3NjAwMDgwZmQ1YjYwMDI4MjYwMGE4MTEwMTUxNTYxMGUwZTU3ZmU1YjAxNTQ2MDAyODI2MDBhODExMDE1MTU2MTBlMWY1N2ZlNWIwMTU0MTAxNTYxMGUyYjU3ODA5MTUwNWI4MDgwNjAwMTAxOTE1MDUwNjEwZGQ5NTY1YjYwMDI4MjYwMGE4MTEwMTUxNTYxMGU0NzU3ZmU1YjAxNTQ4MzEwMTU2MTBlNTU1NzYwMDA4MGZkNWI2MTI3MTA2MDAyODM2MDBhODExMDE1MTU2MTBlNjc1N2ZlNWIwMTU0MDE4MzExMTU2MTBlNzY1NzYwMDA4MGZkNWI4MjYwMDI4MzYwMGE4MTEwMTUxNTYxMGU4NjU3ZmU1YjAxODE5MDU1NTA1MDUwNTA1NjViNjA0MDUxNjEwNTQwODA2MTBlYTE4MzM5MDE5MDU2MDA2MDYwNjA0MDUyMzQxNTYxMDAwZjU3NjAwMDgwZmQ1YjMzNjAwMDgwNjEwMTAwMGE4MTU0ODE3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYwMjE5MTY5MDgzNzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTYwMjE3OTA1NTUwNjEwNGUyODA2MTAwNWU2MDAwMzk2MDAwZjMwMDYwNjA2MDQwNTI2MDA0MzYxMDYxMDA1NjU3NjAwMDM1N2MwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTAwNDYzZmZmZmZmZmYxNjgwNjI4MjFkZTMxNDYxMDE0NzU3ODA2MzNlZjEzMzY3MTQ2MTAxOWM1NzgwNjM2YjlmOTZlYTE0NjEwMWQ1NTc1YjYwMDA4MDkwNTQ5MDYxMDEwMDBhOTAwNDczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2NzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY2MTA4ZmMzNDkwODExNTAyOTA2MDQwNTE2MDAwNjA0MDUxODA4MzAzODE4NTg4ODhmMTkzNTA1MDUwNTAxNTE1NjEwMGI3NTc2MDAwODBmZDViN2Y2OWIzMTU0OGRlYTliM2I3MDdiNGRmZjM1N2QzMjZlM2U5MzQ4YjI0ZTdhNjA4MGEyMThhNmVkZWVlYzQ4ZjliMzMzNDYwMDAzNjYwNDA1MTgwODU3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2ODE1MjYwMjAwMTg0ODE1MjYwMjAwMTgwNjAyMDAxODI4MTAzODI1Mjg0ODQ4MjgxODE1MjYwMjAwMTkyNTA4MDgyODQzNzgyMDE5MTUwNTA5NTUwNTA1MDUwNTA1MDYwNDA1MTgwOTEwMzkwYTEwMDViMzQxNTYxMDE1MjU3NjAwMDgwZmQ1YjYxMDE1YTYxMDFlYTU2NWI2MDQwNTE4MDgyNzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjgxNTI2MDIwMDE5MTUwNTA2MDQwNTE4MDkxMDM5MGYzNWIzNDE1NjEwMWE3NTc2MDAwODBmZDViNjEwMWQzNjAwNDgwODAzNTczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2OTA2MDIwMDE5MDkxOTA1MDUwNjEwMjBmNTY1YjAwNWIzNDE1NjEwMWUwNTc2MDAwODBmZDViNjEwMWU4NjEwNDNjNTY1YjAwNWI2MDAwODA5MDU0OTA2MTAxMDAwYTkwMDQ3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjgxNTY1YjYwMDA4MDYwMDA4MDYwMDA5MDU0OTA2MTAxMDAwYTkwMDQ3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2MzM3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjE0MTUxNTYxMDI2ZjU3NjAwMDgwZmQ1YjgzOTI1MDMwOTE1MDgyNzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY2MzcwYTA4MjMxODM2MDAwNjA0MDUxNjAyMDAxNTI2MDQwNTE4MjYzZmZmZmZmZmYxNjdjMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyODE1MjYwMDQwMTgwODI3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2ODE1MjYwMjAwMTkxNTA1MDYwMjA2MDQwNTE4MDgzMDM4MTYwMDA4NzgwM2IxNTE1NjEwMzE4NTc2MDAwODBmZDViNjEwMmM2NWEwM2YxMTUxNTYxMDMyOTU3NjAwMDgwZmQ1YjUwNTA1MDYwNDA1MTgwNTE5MDUwOTA1MDYwMDA4MTE0MTU2MTAzNDM1NzYxMDQzNjU2NWI4MjczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2NjNhOTA1OWNiYjYwMDA4MDkwNTQ5MDYxMDEwMDBhOTAwNDczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2ODM2MDAwNjA0MDUxNjAyMDAxNTI2MDQwNTE4MzYzZmZmZmZmZmYxNjdjMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyODE1MjYwMDQwMTgwODM3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2ODE1MjYwMjAwMTgyODE1MjYwMjAwMTkyNTA1MDUwNjAyMDYwNDA1MTgwODMwMzgxNjAwMDg3ODAzYjE1MTU2MTA0MGY1NzYwMDA4MGZkNWI2MTAyYzY1YTAzZjExNTE1NjEwNDIwNTc2MDAwODBmZDViNTA1MDUwNjA0MDUxODA1MTkwNTAxNTE1NjEwNDM1NTc2MDAwODBmZDViNWI1MDUwNTA1MDU2NWI2MDAwODA5MDU0OTA2MTAxMDAwYTkwMDQ3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2NjEwOGZjMzA3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjMxOTA4MTE1MDI5MDYwNDA1MTYwMDA2MDQwNTE4MDgzMDM4MTg1ODg4OGYxOTM1MDUwNTA1MDE1MTU2MTA0YjQ1NzYwMDA4MGZkNWI1NjAwYTE2NTYyN2E3YTcyMzA1ODIwNDIxOTNiOGZhMzZiYjIxMTE0MzgxOWE1MjVmZTA3ZjU5N2E1N2FjNTFiZGE3MzU0OTllY2ViZTJlZGE2NDg4NzAwMjlhMTY1NjI3YTdhNzIzMDU4MjAxMWIzZTc4NjgyMGJiZjk3NGZiZjg4MDJjNmJmZDBmYjQ0YWIyZWMzMGVkOTAxOGI5MWFhZDc1MDNjZDIxNGFhMDAyOSc7XG4iXX0=
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNENBQTZDO0FBRTdDLG1EQUF1RDtBQUN2RCwrQ0FBaUM7QUFDakMsZ0VBQXFDO0FBQ3JDLHNEQUF1RTtBQUN2RSw4Q0FBaUY7QUFDakYsMkNBQTJEO0FBRTNEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixXQUFXLENBQUMsWUFBb0I7SUFDOUMsSUFBSTtRQUNGLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN4RCxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdFQUFnRTtRQUN4RixNQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUM7UUFDeEUsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLElBQUksSUFBSSxDQUFDO1FBQ1QsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDNUIsTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsR0FBRyxJQUFBLGdDQUFrQixFQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3RELElBQUksR0FBRyxNQUFNLENBQUM7WUFDZCxPQUFPLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQztTQUN0QjtRQUNELE1BQU0sTUFBTSxHQUFpQjtZQUMzQixLQUFLLEVBQUUsaUNBQWtCLENBQUMsTUFBTTtZQUNoQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUM3RCxRQUFRLEVBQUUsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLHNCQUFTLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRTtZQUN4RixRQUFRLEVBQUUsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLHNCQUFTLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRTtZQUN4RixLQUFLLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLHNCQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRTtZQUMvRSxJQUFJO1lBQ0osT0FBTztZQUNQLElBQUk7WUFDSixDQUFDO1lBQ0QsQ0FBQztZQUNELENBQUM7U0FDRixDQUFDO1FBRUYsSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ2YsTUFBTSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7U0FDaEI7UUFFRCxPQUFPLE1BQU0sQ0FBQztLQUNmO0lBQUMsTUFBTTtRQUNOLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0tBQ25FO0FBQ0gsQ0FBQztBQWxDRCxrQ0FrQ0M7QUFFRCxNQUFNLE9BQU8sR0FBcUMsSUFBSSxHQUFHLENBQThCO0lBQ3JGLENBQUMscUJBQVcsQ0FBQyxPQUFPLEVBQUUseUJBQWEsQ0FBQztJQUNwQyxDQUFDLHFCQUFXLENBQUMsT0FBTyxFQUFFLHlCQUFhLENBQUM7Q0FDckMsQ0FBQyxDQUFDO0FBRUg7O0dBRUc7QUFDSCxTQUFnQixTQUFTLENBQUMsT0FBb0I7SUFDNUMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwQyxJQUFJLENBQUMsTUFBTSxFQUFFO1FBQ1gsTUFBTSxJQUFJLGtDQUF1QixDQUFDLHNDQUFzQyxDQUFDLENBQUM7S0FDM0U7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBTkQsOEJBTUM7QUFFRDs7Ozs7O0VBTUU7QUFDVyxRQUFBLG9CQUFvQixHQUMvQiwwclZBQTByVixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmV0d29ya1R5cGUgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgRXRoZXJldW1Db21tb24gZnJvbSAnQGV0aGVyZXVtanMvY29tbW9uJztcbmltcG9ydCB7IHJlY292ZXJUcmFuc2FjdGlvbiB9IGZyb20gJ0BjZWxvL3dhbGxldC1iYXNlJztcbmltcG9ydCAqIGFzIGV0aGVycyBmcm9tICdldGhlcnMnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgRVRIVHJhbnNhY3Rpb25UeXBlLCBMZWdhY3lUeERhdGEgfSBmcm9tICdAYml0Z28vc2RrLWNvaW4tZXRoJztcbmltcG9ydCB7IEludmFsaWRUcmFuc2FjdGlvbkVycm9yLCBQYXJzZVRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgbWFpbm5ldENvbW1vbiwgdGVzdG5ldENvbW1vbiB9IGZyb20gJy4vcmVzb3VyY2VzJztcblxuLyoqXG4gKiBDZWxvIHRyYW5zYWN0aW9uIGRlc2VyaWFsaXphdGlvbiBiYXNlZCBvbiBjb2RlXG4gKiBmcm9tIEBjZWxvL2NvbnRyYWN0a2l0L2xpYi91dGlscy9zaWduaW5nLXV0aWxzXG4gKiBnaXRodWI6IGh0dHBzOi8vZ2l0aHViLmNvbS9jZWxvLW9yZy9jZWxvLW1vbm9yZXBvL3RyZWUvbWFzdGVyL3BhY2thZ2VzL2NvbnRyYWN0a2l0XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHNlcmlhbGl6ZWRUeCB0aGUgc2VyaWFsaXplZCB0cmFuc2FjdGlvblxuICogQHJldHVybnMge0xlZ2FjeVR4RGF0YX0gdGhlIGRlc2VyaWFsaXplZCB0cmFuc2FjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUoc2VyaWFsaXplZFR4OiBzdHJpbmcpOiBMZWdhY3lUeERhdGEge1xuICB0cnkge1xuICAgIGNvbnN0IGRlY29kZWRUeCA9IGV0aGVycy51dGlscy5STFAuZGVjb2RlKHNlcmlhbGl6ZWRUeCk7XG4gICAgZGVjb2RlZFR4LnNwbGljZSgzLCAzKTsgLy8gcmVtb3ZlIHVudXNlZCBmZWVDdXJyZW5jeSwgZ2F0ZXdheUZlZVJlY2lwaWVudCBhbmQgZ2F0ZXdheUZlZVxuICAgIGNvbnN0IFtub25jZSwgZ2FzUHJpY2UsIGdhc0xpbWl0LCB0bywgdmFsdWUsIGRhdGEsIHYsIHIsIHNdID0gZGVjb2RlZFR4O1xuICAgIGxldCBjaGFpbklkID0gdjtcbiAgICBsZXQgZnJvbTtcbiAgICBpZiAociAhPT0gJzB4JyAmJiBzICE9PSAnMHgnKSB7XG4gICAgICBjb25zdCBbdHgsIHNlbmRlcl0gPSByZWNvdmVyVHJhbnNhY3Rpb24oc2VyaWFsaXplZFR4KTtcbiAgICAgIGZyb20gPSBzZW5kZXI7XG4gICAgICBjaGFpbklkID0gdHguY2hhaW5JZDtcbiAgICB9XG4gICAgY29uc3QgY2Vsb1R4OiBMZWdhY3lUeERhdGEgPSB7XG4gICAgICBfdHlwZTogRVRIVHJhbnNhY3Rpb25UeXBlLkxFR0FDWSxcbiAgICAgIG5vbmNlOiBub25jZS50b0xvd2VyQ2FzZSgpID09PSAnMHgnID8gMCA6IHBhcnNlSW50KG5vbmNlLCAxNiksXG4gICAgICBnYXNQcmljZTogZ2FzUHJpY2UudG9Mb3dlckNhc2UoKSA9PT0gJzB4JyA/ICcwJyA6IG5ldyBCaWdOdW1iZXIoZ2FzUHJpY2UsIDE2KS50b1N0cmluZygpLFxuICAgICAgZ2FzTGltaXQ6IGdhc0xpbWl0LnRvTG93ZXJDYXNlKCkgPT09ICcweCcgPyAnMCcgOiBuZXcgQmlnTnVtYmVyKGdhc0xpbWl0LCAxNikudG9TdHJpbmcoKSxcbiAgICAgIHZhbHVlOiB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnMHgnID8gJzAnIDogbmV3IEJpZ051bWJlcih2YWx1ZSwgMTYpLnRvU3RyaW5nKCksXG4gICAgICBkYXRhLFxuICAgICAgY2hhaW5JZCxcbiAgICAgIGZyb20sXG4gICAgICB2LFxuICAgICAgcixcbiAgICAgIHMsXG4gICAgfTtcblxuICAgIGlmICh0byAhPT0gJzB4Jykge1xuICAgICAgY2Vsb1R4LnRvID0gdG87XG4gICAgfVxuXG4gICAgcmV0dXJuIGNlbG9UeDtcbiAgfSBjYXRjaCB7XG4gICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBzZXJpYWxpemVkIHRyYW5zYWN0aW9uJyk7XG4gIH1cbn1cblxuY29uc3QgY29tbW9uczogTWFwPE5ldHdvcmtUeXBlLCBFdGhlcmV1bUNvbW1vbj4gPSBuZXcgTWFwPE5ldHdvcmtUeXBlLCBFdGhlcmV1bUNvbW1vbj4oW1xuICBbTmV0d29ya1R5cGUuTUFJTk5FVCwgbWFpbm5ldENvbW1vbl0sXG4gIFtOZXR3b3JrVHlwZS5URVNUTkVULCB0ZXN0bmV0Q29tbW9uXSxcbl0pO1xuXG4vKipcbiAqIEBwYXJhbSBuZXR3b3JrXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb21tb24obmV0d29yazogTmV0d29ya1R5cGUpOiBFdGhlcmV1bUNvbW1vbiB7XG4gIGNvbnN0IGNvbW1vbiA9IGNvbW1vbnMuZ2V0KG5ldHdvcmspO1xuICBpZiAoIWNvbW1vbikge1xuICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignTWlzc2luZyBuZXR3b3JrIGNvbW1vbiBjb25maWd1cmF0aW9uJyk7XG4gIH1cbiAgcmV0dXJuIGNvbW1vbjtcbn1cblxuLypcbiAgU3RlcHMgdG8gcmVwcm9kdWNlOlxuICBDaGVja291dCBodHRwczovL2dpdGh1Yi5jb20vYml0Z28vZXRoLW11bHRpc2lnLXYyXG4gIG5wbSBpbnN0YWxsIC1nIHNvbGNAMC40LjE4XG4gIHNvbGNqcyAtLWJpbiAuL2NvbnRyYWN0cy9jb2lucy9DZWxvV2FsbGV0U2ltcGxlLnNvbCAuL2NvbnRyYWN0cy9Gb3J3YXJkZXIuc29sIC4vY29udHJhY3RzL0VSQzIwSW50ZXJmYWNlLnNvbFxuICBjYXQgQ2Vsb1dhbGxldFNpbXBsZS5iaW5cbiovXG5leHBvcnQgY29uc3Qgd2FsbGV0U2ltcGxlQnl0ZUNvZGUgPVxuICAnMHg2MDYwNjA0MDUyNjAwMDYwMDE2MDAwNjEwMTAwMGE4MTU0ODE2MGZmMDIxOTE2OTA4MzE1MTUwMjE3OTA1NTUwMzQxNTYxMDAyYTU3NjAwMDgwZmQ1YjYwNDA1MTYxMTU1YjM4MDM4MDYxMTU1YjgzMzk4MTAxNjA0MDUyODA4MDUxODIwMTkxOTA1MDUwNjAwMzgxNTExNDE1MTU2MTAwNTY1NzYwMDA4MGZkNWI4MDYwMDA5MDgwNTE5MDYwMjAwMTkwNjEwMDZjOTI5MTkwNjEwMDczNTY1YjUwNTA2MTAxNDA1NjViODI4MDU0ODI4MjU1OTA2MDAwNTI2MDIwNjAwMDIwOTA4MTAxOTI4MjE1NjEwMGVjNTc5MTYwMjAwMjgyMDE1YjgyODExMTE1NjEwMGViNTc4MjUxODI2MDAwNjEwMTAwMGE4MTU0ODE3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYwMjE5MTY5MDgzNzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTYwMjE3OTA1NTUwOTE2MDIwMDE5MTkwNjAwMTAxOTA2MTAwOTM1NjViNWI1MDkwNTA2MTAwZjk5MTkwNjEwMGZkNTY1YjUwOTA1NjViNjEwMTNkOTE5MDViODA4MjExMTU2MTAxMzk1NzYwMDA4MTgxNjEwMTAwMGE4MTU0OTA3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYwMjE5MTY5MDU1NTA2MDAxMDE2MTAxMDM1NjViNTA5MDU2NWI5MDU2NWI2MTE0MGM4MDYxMDE0ZjYwMDAzOTYwMDBmMzAwNjA2MDYwNDA1MjYwMDQzNjEwNjEwMDk5NTc2MDAwMzU3YzAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA5MDA0NjNmZmZmZmZmZjE2ODA2MzBkY2Q3YTZjMTQ2MTAxMzM1NzgwNjMyMDc5ZmI5YTE0NjEwMWU5NTc4MDYzMmRhMDM0MDkxNDYxMDI0YzU3ODA2MzM5MTI1MjE1MTQ2MTAyYTQ1NzgwNjM3ZGY3M2UyNzE0NjEwMzdlNTc4MDYzYTBiNzk2N2IxNDYxMDNjZjU3ODA2M2E2OGE3NmNjMTQ2MTAzZjg1NzgwNjNhYmUzMjE5YzE0NjEwNDRkNTc4MDYzZmMwZjM5MmQxNDYxMDQ3YTU3NWI2MDAwMzQxMTE1NjEwMTMxNTc3ZjZlODlkNTE3MDU3MDI4MTkwNTYwZGQyMDBjZjZiZjc5Mjg0Mjg2MTM1M2QxMTczNzYxZGZhMzYyZTFjMTMzZjAzMzM0NjAwMDM2NjA0MDUxODA4NTczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2NzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY4MTUyNjAyMDAxODQ4MTUyNjAyMDAxODA2MDIwMDE4MjgxMDM4MjUyODQ4NDgyODE4MTUyNjAyMDAxOTI1MDgwODI4NDM3ODIwMTkxNTA1MDk1NTA1MDUwNTA1MDUwNjA0MDUxODA5MTAzOTBhMTViMDA1YjM0MTU2MTAxM2U1NzYwMDA4MGZkNWI2MTAxZTc2MDA0ODA4MDM1NzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY5MDYwMjAwMTkwOTE5MDgwMzU5MDYwMjAwMTkwOTE5MDgwMzU3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjkwNjAyMDAxOTA5MTkwODAzNTkwNjAyMDAxOTA5MTkwODAzNTkwNjAyMDAxOTA5MTkwODAzNTkwNjAyMDAxOTA4MjAxODAzNTkwNjAyMDAxOTA4MDgwNjAxZjAxNjAyMDgwOTEwNDAyNjAyMDAxNjA0MDUxOTA4MTAxNjA0MDUyODA5MzkyOTE5MDgxODE1MjYwMjAwMTgzODM4MDgyODQzNzgyMDE5MTUwNTA1MDUwNTA1MDkxOTA1MDUwNjEwNDhmNTY1YjAwNWIzNDE1NjEwMWY0NTc2MDAwODBmZDViNjEwMjBhNjAwNDgwODAzNTkwNjAyMDAxOTA5MTkwNTA1MDYxMDY2ODU2NWI2MDQwNTE4MDgyNzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjgxNTI2MDIwMDE5MTUwNTA2MDQwNTE4MDkxMDM5MGYzNWIzNDE1NjEwMjU3NTc2MDAwODBmZDViNjEwMmEyNjAwNDgwODAzNTczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2OTA2MDIwMDE5MDkxOTA4MDM1NzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY5MDYwMjAwMTkwOTE5MDUwNTA2MTA2YTc1NjViMDA1YjM0MTU2MTAyYWY1NzYwMDA4MGZkNWI2MTAzN2M2MDA0ODA4MDM1NzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY5MDYwMjAwMTkwOTE5MDgwMzU5MDYwMjAwMTkwOTE5MDgwMzU5MDYwMjAwMTkwODIwMTgwMzU5MDYwMjAwMTkwODA4MDYwMWYwMTYwMjA4MDkxMDQwMjYwMjAwMTYwNDA1MTkwODEwMTYwNDA1MjgwOTM5MjkxOTA4MTgxNTI2MDIwMDE4MzgzODA4Mjg0Mzc4MjAxOTE1MDUwNTA1MDUwNTA5MTkwODAzNTkwNjAyMDAxOTA5MTkwODAzNTkwNjAyMDAxOTA5MTkwODAzNTkwNjAyMDAxOTA4MjAxODAzNTkwNjAyMDAxOTA4MDgwNjAxZjAxNjAyMDgwOTEwNDAyNjAyMDAxNjA0MDUxOTA4MTAxNjA0MDUyODA5MzkyOTE5MDgxODE1MjYwMjAwMTgzODM4MDgyODQzNzgyMDE5MTUwNTA1MDUwNTA1MDkxOTA1MDUwNjEwNzczNTY1YjAwNWIzNDE1NjEwMzg5NTc2MDAwODBmZDViNjEwM2I1NjAwNDgwODAzNTczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2OTA2MDIwMDE5MDkxOTA1MDUwNjEwYTcyNTY1YjYwNDA1MTgwODIxNTE1MTUxNTgxNTI2MDIwMDE5MTUwNTA2MDQwNTE4MDkxMDM5MGYzNWIzNDE1NjEwM2RhNTc2MDAwODBmZDViNjEwM2UyNjEwYjE2NTY1YjYwNDA1MTgwODI4MTUyNjAyMDAxOTE1MDUwNjA0MDUxODA5MTAzOTBmMzViMzQxNTYxMDQwMzU3NjAwMDgwZmQ1YjYxMDQwYjYxMGI3MDU2NWI2MDQwNTE4MDgyNzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjgxNTI2MDIwMDE5MTUwNTA2MDQwNTE4MDkxMDM5MGYzNWIzNDE1NjEwNDU4NTc2MDAwODBmZDViNjEwNDYwNjEwYjk1NTY1YjYwNDA1MTgwODIxNTE1MTUxNTgxNTI2MDIwMDE5MTUwNTA2MDQwNTE4MDkxMDM5MGYzNWIzNDE1NjEwNDg1NTc2MDAwODBmZDViNjEwNDhkNjEwYmE4NTY1YjAwNWI2MDAwODA2MTA0OWIzMzYxMGE3MjU2NWIxNTE1NjEwNGE2NTc2MDAwODBmZDViODc4Nzg3ODc4NzYwNDA1MTgwODA3ZjQzNDU0YzRmMmQ0NTUyNDMzMjMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4MTUyNTA2MDBhMDE4NjczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2NzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY2YzAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDI4MTUyNjAxNDAxODU4MTUyNjAyMDAxODQ3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2NmMwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyODE1MjYwMTQwMTgzODE1MjYwMjAwMTgyODE1MjYwMjAwMTk1NTA1MDUwNTA1MDUwNjA0MDUxODA5MTAzOTAyMDkxNTA2MTA1ODk4ODgzODU4ODg4NjEwYzNiNTY1YjUwODU5MDUwODA3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjYzYTkwNTljYmI4OTg5NjAwMDYwNDA1MTYwMjAwMTUyNjA0MDUxODM2M2ZmZmZmZmZmMTY3YzAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjgxNTI2MDA0MDE4MDgzNzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjgxNTI2MDIwMDE4MjgxNTI2MDIwMDE5MjUwNTA1MDYwMjA2MDQwNTE4MDgzMDM4MTYwMDA4NzgwM2IxNTE1NjEwNjM4NTc2MDAwODBmZDViNjEwMmM2NWEwM2YxMTUxNTYxMDY0OTU3NjAwMDgwZmQ1YjUwNTA1MDYwNDA1MTgwNTE5MDUwMTUxNTYxMDY1ZTU3NjAwMDgwZmQ1YjUwNTA1MDUwNTA1MDUwNTA1NjViNjAwMDgxODE1NDgxMTAxNTE1NjEwNjc3NTdmZTViOTA2MDAwNTI2MDIwNjAwMDIwOTAwMTYwMDA5MTUwNTQ5MDYxMDEwMDBhOTAwNDczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2ODE1NjViNjAwMDYxMDZiMjMzNjEwYTcyNTY1YjE1MTU2MTA2YmQ1NzYwMDA4MGZkNWI4MjkwNTA4MDczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2NjMzZWYxMzM2NzgzNjA0MDUxODI2M2ZmZmZmZmZmMTY3YzAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjgxNTI2MDA0MDE4MDgyNzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjgxNTI2MDIwMDE5MTUwNTA2MDAwNjA0MDUxODA4MzAzODE2MDAwODc4MDNiMTUxNTYxMDc1YTU3NjAwMDgwZmQ1YjYxMDJjNjVhMDNmMTE1MTU2MTA3NmI1NzYwMDA4MGZkNWI1MDUwNTA1MDUwNTA1NjViNjAwMDgwNjEwNzdmMzM2MTBhNzI1NjViMTUxNTYxMDc4YTU3NjAwMDgwZmQ1Yjg3ODc4Nzg3ODc2MDQwNTE4MDgwN2Y0MzQ1NGM0ZjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODE1MjUwNjAwNDAxODY3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2NmMwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyODE1MjYwMTQwMTg1ODE1MjYwMjAwMTg0ODA1MTkwNjAyMDAxOTA4MDgzODM1YjYwMjA4MzEwMTUxNTYxMDgzMzU3ODA1MTgyNTI2MDIwODIwMTkxNTA2MDIwODEwMTkwNTA2MDIwODMwMzkyNTA2MTA4MGU1NjViNjAwMTgzNjAyMDAzNjEwMTAwMGEwMzgwMTk4MjUxMTY4MTg0NTExNjgwODIxNzg1NTI1MDUwNTA1MDUwNTA5MDUwMDE4MzgxNTI2MDIwMDE4MjgxNTI2MDIwMDE5NTUwNTA1MDUwNTA1MDYwNDA1MTgwOTEwMzkwMjA5MTUwNjEwODdmODg4Mzg1ODg4ODYxMGMzYjU2NWI5MDUwODc3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjg3ODc2MDQwNTE4MDgyODA1MTkwNjAyMDAxOTA4MDgzODM2MDAwNWI4MzgxMTAxNTYxMDhjNzU3ODA4MjAxNTE4MTg0MDE1MjYwMjA4MTAxOTA1MDYxMDhhYzU2NWI1MDUwNTA1MDkwNTA5MDgxMDE5MDYwMWYxNjgwMTU2MTA4ZjQ1NzgwODIwMzgwNTE2MDAxODM2MDIwMDM2MTAxMDAwYTAzMTkxNjgxNTI2MDIwMDE5MTUwNWI1MDkxNTA1MDYwMDA2MDQwNTE4MDgzMDM4MTg1ODc2MTg3OTY1YTAzZjE5MjUwNTA1MDE1MTU2MTA5MTg1NzYwMDA4MGZkNWI3ZjU5YmVkOWFiNWQ3ODA3MzQ2NWRkNjQyYTllM2U3NmRmZGI3ZDUzYmNhZTlkMDlkZjdkMGI4ZjUyMzRkNWE4MDYzMzgyODQ4YjhiOGI2MDQwNTE4MDg3NzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjgxNTI2MDIwMDE4NjczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2NzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY4MTUyNjAyMDAxODU2MDAwMTkxNjYwMDAxOTE2ODE1MjYwMjAwMTg0NzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjgxNTI2MDIwMDE4MzgxNTI2MDIwMDE4MDYwMjAwMTgyODEwMzgyNTI4MzgxODE1MTgxNTI2MDIwMDE5MTUwODA1MTkwNjAyMDAxOTA4MDgzODM2MDAwNWI4MzgxMTAxNTYxMGEyOTU3ODA4MjAxNTE4MTg0MDE1MjYwMjA4MTAxOTA1MDYxMGEwZTU2NWI1MDUwNTA1MDkwNTA5MDgxMDE5MDYwMWYxNjgwMTU2MTBhNTY1NzgwODIwMzgwNTE2MDAxODM2MDIwMDM2MTAxMDAwYTAzMTkxNjgxNTI2MDIwMDE5MTUwNWI1MDk3NTA1MDUwNTA1MDUwNTA1MDYwNDA1MTgwOTEwMzkwYTE1MDUwNTA1MDUwNTA1MDUwNTY1YjYwMDA4MDYwMDA5MDUwNWI2MDAwODA1NDkwNTA4MTEwMTU2MTBiMGI1NzgyNzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY2MDAwODI4MTU0ODExMDE1MTU2MTBhYWQ1N2ZlNWI5MDYwMDA1MjYwMjA2MDAwMjA5MDAxNjAwMDkwNTQ5MDYxMDEwMDBhOTAwNDczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2NzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTYxNDE1NjEwYWZlNTc2MDAxOTE1MDYxMGIxMDU2NWI4MDgwNjAwMTAxOTE1MDUwNjEwYTdhNTY1YjYwMDA5MTUwNWI1MDkxOTA1MDU2NWI2MDAwODA2MDAwODA5MTUwNjAwMDkwNTA1YjYwMGE4MTEwMTU2MTBiNjU1NzgxNjAwMjgyNjAwYTgxMTAxNTE1NjEwYjNjNTdmZTViMDE1NDExMTU2MTBiNTg1NzYwMDI4MTYwMGE4MTEwMTUxNTYxMGI1MzU3ZmU1YjAxNTQ5MTUwNWI4MDgwNjAwMTAxOTE1MDUwNjEwYjIzNTY1YjYwMDE4MjAxOTI1MDUwNTA5MDU2NWI2MDAwNjEwYjdhNjEwZTkwNTY1YjYwNDA1MTgwOTEwMzkwNjAwMGYwODAxNTE1NjEwYjkwNTc2MDAwODBmZDViOTA1MDkwNTY1YjYwMDE2MDAwOTA1NDkwNjEwMTAwMGE5MDA0NjBmZjE2ODE1NjViNjEwYmIxMzM2MTBhNzI1NjViMTUxNTYxMGJiYzU3NjAwMDgwZmQ1YjYwMDE4MDYwMDA2MTAxMDAwYTgxNTQ4MTYwZmYwMjE5MTY5MDgzMTUxNTAyMTc5MDU1NTA3ZjA5MDllOGY3NmE0ZmQzZTk3MGYyZWFlZjU2YzBlZTZkZmFmOGI4N2M1YjhkM2Y1NmZmY2U3OGU4MjVhOTExNTczMzYwNDA1MTgwODI3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2ODE1MjYwMjAwMTkxNTA1MDYwNDA1MTgwOTEwMzkwYTE1NjViNjAwMDgwNjEwYzQ4ODY4NjYxMGNlNjU2NWI5MDUwNjAwMTYwMDA5MDU0OTA2MTAxMDAwYTkwMDQ2MGZmMTY4MDE1NjEwYzZjNTc1MDYxMGM2YTg3NjEwYTcyNTY1YjE1NWIxNTYxMGM3NjU3NjAwMDgwZmQ1YjQyODQxMDE1NjEwYzgzNTc2MDAwODBmZDViNjEwYzhjODM2MTBkYjk1NjViNjEwYzk1ODE2MTBhNzI1NjViMTUxNTYxMGNhMDU3NjAwMDgwZmQ1YjMzNzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY4MTczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2MTQxNTYxMGNkOTU3NjAwMDgwZmQ1YjgwOTE1MDUwOTU5NDUwNTA1MDUwNTA1NjViNjAwMDgwNjAwMDgwNjA0MTg1NTExNDE1MTU2MTBjZmM1NzYwMDA4MGZkNWI2MDIwODUwMTUxOTI1MDYwNDA4NTAxNTE5MTUwNjBmZjYwNDE4NjAxNTExNjkwNTA2MDFiODE2MGZmMTYxMDE1NjEwZDI3NTc2MDFiODEwMTkwNTA1YjYwMDE4NjgyODU4NTYwNDA1MTYwMDA4MTUyNjAyMDAxNjA0MDUyNjAwMDYwNDA1MTYwMjAwMTUyNjA0MDUxODA4NTYwMDAxOTE2NjAwMDE5MTY4MTUyNjAyMDAxODQ2MGZmMTY2MGZmMTY4MTUyNjAyMDAxODM2MDAwMTkxNjYwMDAxOTE2ODE1MjYwMjAwMTgyNjAwMDE5MTY2MDAwMTkxNjgxNTI2MDIwMDE5NDUwNTA1MDUwNTA2MDIwNjA0MDUxNjAyMDgxMDM5MDgwODQwMzkwNjAwMDg2NjE2NDZlNWEwM2YxMTUxNTYxMGRhNTU3NjAwMDgwZmQ1YjUwNTA2MDIwNjA0MDUxMDM1MTkzNTA1MDUwNTA5MjkxNTA1MDU2NWI2MDAwODA2MTBkYzUzMzYxMGE3MjU2NWIxNTE1NjEwZGQwNTc2MDAwODBmZDViNjAwMDkxNTA2MDAwOTA1MDViNjAwYTgxMTAxNTYxMGUzODU3ODI2MDAyODI2MDBhODExMDE1MTU2MTBkZjI1N2ZlNWIwMTU0MTQxNTYxMGRmZjU3NjAwMDgwZmQ1YjYwMDI4MjYwMGE4MTEwMTUxNTYxMGUwZTU3ZmU1YjAxNTQ2MDAyODI2MDBhODExMDE1MTU2MTBlMWY1N2ZlNWIwMTU0MTAxNTYxMGUyYjU3ODA5MTUwNWI4MDgwNjAwMTAxOTE1MDUwNjEwZGQ5NTY1YjYwMDI4MjYwMGE4MTEwMTUxNTYxMGU0NzU3ZmU1YjAxNTQ4MzEwMTU2MTBlNTU1NzYwMDA4MGZkNWI2MTI3MTA2MDAyODM2MDBhODExMDE1MTU2MTBlNjc1N2ZlNWIwMTU0MDE4MzExMTU2MTBlNzY1NzYwMDA4MGZkNWI4MjYwMDI4MzYwMGE4MTEwMTUxNTYxMGU4NjU3ZmU1YjAxODE5MDU1NTA1MDUwNTA1NjViNjA0MDUxNjEwNTQwODA2MTBlYTE4MzM5MDE5MDU2MDA2MDYwNjA0MDUyMzQxNTYxMDAwZjU3NjAwMDgwZmQ1YjMzNjAwMDgwNjEwMTAwMGE4MTU0ODE3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYwMjE5MTY5MDgzNzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTYwMjE3OTA1NTUwNjEwNGUyODA2MTAwNWU2MDAwMzk2MDAwZjMwMDYwNjA2MDQwNTI2MDA0MzYxMDYxMDA1NjU3NjAwMDM1N2MwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTAwNDYzZmZmZmZmZmYxNjgwNjI4MjFkZTMxNDYxMDE0NzU3ODA2MzNlZjEzMzY3MTQ2MTAxOWM1NzgwNjM2YjlmOTZlYTE0NjEwMWQ1NTc1YjYwMDA4MDkwNTQ5MDYxMDEwMDBhOTAwNDczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2NzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY2MTA4ZmMzNDkwODExNTAyOTA2MDQwNTE2MDAwNjA0MDUxODA4MzAzODE4NTg4ODhmMTkzNTA1MDUwNTAxNTE1NjEwMGI3NTc2MDAwODBmZDViN2Y2OWIzMTU0OGRlYTliM2I3MDdiNGRmZjM1N2QzMjZlM2U5MzQ4YjI0ZTdhNjA4MGEyMThhNmVkZWVlYzQ4ZjliMzMzNDYwMDAzNjYwNDA1MTgwODU3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2ODE1MjYwMjAwMTg0ODE1MjYwMjAwMTgwNjAyMDAxODI4MTAzODI1Mjg0ODQ4MjgxODE1MjYwMjAwMTkyNTA4MDgyODQzNzgyMDE5MTUwNTA5NTUwNTA1MDUwNTA1MDYwNDA1MTgwOTEwMzkwYTEwMDViMzQxNTYxMDE1MjU3NjAwMDgwZmQ1YjYxMDE1YTYxMDFlYTU2NWI2MDQwNTE4MDgyNzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjgxNTI2MDIwMDE5MTUwNTA2MDQwNTE4MDkxMDM5MGYzNWIzNDE1NjEwMWE3NTc2MDAwODBmZDViNjEwMWQzNjAwNDgwODAzNTczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2OTA2MDIwMDE5MDkxOTA1MDUwNjEwMjBmNTY1YjAwNWIzNDE1NjEwMWUwNTc2MDAwODBmZDViNjEwMWU4NjEwNDNjNTY1YjAwNWI2MDAwODA5MDU0OTA2MTAxMDAwYTkwMDQ3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjgxNTY1YjYwMDA4MDYwMDA4MDYwMDA5MDU0OTA2MTAxMDAwYTkwMDQ3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2MzM3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjE0MTUxNTYxMDI2ZjU3NjAwMDgwZmQ1YjgzOTI1MDMwOTE1MDgyNzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY2MzcwYTA4MjMxODM2MDAwNjA0MDUxNjAyMDAxNTI2MDQwNTE4MjYzZmZmZmZmZmYxNjdjMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyODE1MjYwMDQwMTgwODI3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2ODE1MjYwMjAwMTkxNTA1MDYwMjA2MDQwNTE4MDgzMDM4MTYwMDA4NzgwM2IxNTE1NjEwMzE4NTc2MDAwODBmZDViNjEwMmM2NWEwM2YxMTUxNTYxMDMyOTU3NjAwMDgwZmQ1YjUwNTA1MDYwNDA1MTgwNTE5MDUwOTA1MDYwMDA4MTE0MTU2MTAzNDM1NzYxMDQzNjU2NWI4MjczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2NjNhOTA1OWNiYjYwMDA4MDkwNTQ5MDYxMDEwMDBhOTAwNDczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2ODM2MDAwNjA0MDUxNjAyMDAxNTI2MDQwNTE4MzYzZmZmZmZmZmYxNjdjMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyODE1MjYwMDQwMTgwODM3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2ODE1MjYwMjAwMTgyODE1MjYwMjAwMTkyNTA1MDUwNjAyMDYwNDA1MTgwODMwMzgxNjAwMDg3ODAzYjE1MTU2MTA0MGY1NzYwMDA4MGZkNWI2MTAyYzY1YTAzZjExNTE1NjEwNDIwNTc2MDAwODBmZDViNTA1MDUwNjA0MDUxODA1MTkwNTAxNTE1NjEwNDM1NTc2MDAwODBmZDViNWI1MDUwNTA1MDU2NWI2MDAwODA5MDU0OTA2MTAxMDAwYTkwMDQ3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2NjEwOGZjMzA3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjMxOTA4MTE1MDI5MDYwNDA1MTYwMDA2MDQwNTE4MDgzMDM4MTg1ODg4OGYxOTM1MDUwNTA1MDE1MTU2MTA0YjQ1NzYwMDA4MGZkNWI1NjAwYTE2NTYyN2E3YTcyMzA1ODIwNDIxOTNiOGZhMzZiYjIxMTE0MzgxOWE1MjVmZTA3ZjU5N2E1N2FjNTFiZGE3MzU0OTllY2ViZTJlZGE2NDg4NzAwMjlhMTY1NjI3YTdhNzIzMDU4MjAxMWIzZTc4NjgyMGJiZjk3NGZiZjg4MDJjNmJmZDBmYjQ0YWIyZWMzMGVkOTAxOGI5MWFhZDc1MDNjZDIxNGFhMDAyOSc7XG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitgo/sdk-coin-celo",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "BitGo SDK coin library for Celo",
|
|
5
5
|
"main": "./dist/src/index.js",
|
|
6
6
|
"types": "./dist/src/index.d.ts",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"author": "BitGo SDK Team <sdkteam@bitgo.com>",
|
|
19
19
|
"license": "MIT",
|
|
20
20
|
"engines": {
|
|
21
|
-
"node": ">=
|
|
21
|
+
"node": ">=18 <21"
|
|
22
22
|
},
|
|
23
23
|
"repository": {
|
|
24
24
|
"type": "git",
|
|
@@ -40,10 +40,10 @@
|
|
|
40
40
|
]
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@bitgo/abstract-eth": "^
|
|
44
|
-
"@bitgo/sdk-coin-eth": "^
|
|
45
|
-
"@bitgo/sdk-core": "^26.
|
|
46
|
-
"@bitgo/statics": "^48.
|
|
43
|
+
"@bitgo/abstract-eth": "^20.0.0",
|
|
44
|
+
"@bitgo/sdk-coin-eth": "^23.0.0",
|
|
45
|
+
"@bitgo/sdk-core": "^26.4.0",
|
|
46
|
+
"@bitgo/statics": "^48.2.0",
|
|
47
47
|
"@celo/connect": "^2.0.0",
|
|
48
48
|
"@celo/contractkit": "^2.0.0",
|
|
49
49
|
"@celo/wallet-base": "^2.0.0",
|
|
@@ -55,8 +55,7 @@
|
|
|
55
55
|
"ethers": "^5.1.3"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
|
-
"@bitgo/sdk-api": "^1.43.
|
|
59
|
-
"@bitgo/sdk-test": "^8.0.
|
|
60
|
-
}
|
|
61
|
-
"gitHead": "160c34f86c0819bfa0dbe8bc996c0745a34f222a"
|
|
58
|
+
"@bitgo/sdk-api": "^1.43.5",
|
|
59
|
+
"@bitgo/sdk-test": "^8.0.5"
|
|
60
|
+
}
|
|
62
61
|
}
|
package/LICENSE
DELETED
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
Apache License
|
|
3
|
-
Version 2.0, January 2004
|
|
4
|
-
http://www.apache.org/licenses/
|
|
5
|
-
|
|
6
|
-
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
7
|
-
|
|
8
|
-
1. Definitions.
|
|
9
|
-
|
|
10
|
-
"License" shall mean the terms and conditions for use, reproduction,
|
|
11
|
-
and distribution as defined by Sections 1 through 9 of this document.
|
|
12
|
-
|
|
13
|
-
"Licensor" shall mean the copyright owner or entity authorized by
|
|
14
|
-
the copyright owner that is granting the License.
|
|
15
|
-
|
|
16
|
-
"Legal Entity" shall mean the union of the acting entity and all
|
|
17
|
-
other entities that control, are controlled by, or are under common
|
|
18
|
-
control with that entity. For the purposes of this definition,
|
|
19
|
-
"control" means (i) the power, direct or indirect, to cause the
|
|
20
|
-
direction or management of such entity, whether by contract or
|
|
21
|
-
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
22
|
-
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
23
|
-
|
|
24
|
-
"You" (or "Your") shall mean an individual or Legal Entity
|
|
25
|
-
exercising permissions granted by this License.
|
|
26
|
-
|
|
27
|
-
"Source" form shall mean the preferred form for making modifications,
|
|
28
|
-
including but not limited to software source code, documentation
|
|
29
|
-
source, and configuration files.
|
|
30
|
-
|
|
31
|
-
"Object" form shall mean any form resulting from mechanical
|
|
32
|
-
transformation or translation of a Source form, including but
|
|
33
|
-
not limited to compiled object code, generated documentation,
|
|
34
|
-
and conversions to other media types.
|
|
35
|
-
|
|
36
|
-
"Work" shall mean the work of authorship, whether in Source or
|
|
37
|
-
Object form, made available under the License, as indicated by a
|
|
38
|
-
copyright notice that is included in or attached to the work
|
|
39
|
-
(an example is provided in the Appendix below).
|
|
40
|
-
|
|
41
|
-
"Derivative Works" shall mean any work, whether in Source or Object
|
|
42
|
-
form, that is based on (or derived from) the Work and for which the
|
|
43
|
-
editorial revisions, annotations, elaborations, or other modifications
|
|
44
|
-
represent, as a whole, an original work of authorship. For the purposes
|
|
45
|
-
of this License, Derivative Works shall not include works that remain
|
|
46
|
-
separable from, or merely link (or bind by name) to the interfaces of,
|
|
47
|
-
the Work and Derivative Works thereof.
|
|
48
|
-
|
|
49
|
-
"Contribution" shall mean any work of authorship, including
|
|
50
|
-
the original version of the Work and any modifications or additions
|
|
51
|
-
to that Work or Derivative Works thereof, that is intentionally
|
|
52
|
-
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
53
|
-
or by an individual or Legal Entity authorized to submit on behalf of
|
|
54
|
-
the copyright owner. For the purposes of this definition, "submitted"
|
|
55
|
-
means any form of electronic, verbal, or written communication sent
|
|
56
|
-
to the Licensor or its representatives, including but not limited to
|
|
57
|
-
communication on electronic mailing lists, source code control systems,
|
|
58
|
-
and issue tracking systems that are managed by, or on behalf of, the
|
|
59
|
-
Licensor for the purpose of discussing and improving the Work, but
|
|
60
|
-
excluding communication that is conspicuously marked or otherwise
|
|
61
|
-
designated in writing by the copyright owner as "Not a Contribution."
|
|
62
|
-
|
|
63
|
-
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
64
|
-
on behalf of whom a Contribution has been received by Licensor and
|
|
65
|
-
subsequently incorporated within the Work.
|
|
66
|
-
|
|
67
|
-
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
68
|
-
this License, each Contributor hereby grants to You a perpetual,
|
|
69
|
-
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
70
|
-
copyright license to reproduce, prepare Derivative Works of,
|
|
71
|
-
publicly display, publicly perform, sublicense, and distribute the
|
|
72
|
-
Work and such Derivative Works in Source or Object form.
|
|
73
|
-
|
|
74
|
-
3. Grant of Patent License. Subject to the terms and conditions of
|
|
75
|
-
this License, each Contributor hereby grants to You a perpetual,
|
|
76
|
-
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
77
|
-
(except as stated in this section) patent license to make, have made,
|
|
78
|
-
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
79
|
-
where such license applies only to those patent claims licensable
|
|
80
|
-
by such Contributor that are necessarily infringed by their
|
|
81
|
-
Contribution(s) alone or by combination of their Contribution(s)
|
|
82
|
-
with the Work to which such Contribution(s) was submitted. If You
|
|
83
|
-
institute patent litigation against any entity (including a
|
|
84
|
-
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
85
|
-
or a Contribution incorporated within the Work constitutes direct
|
|
86
|
-
or contributory patent infringement, then any patent licenses
|
|
87
|
-
granted to You under this License for that Work shall terminate
|
|
88
|
-
as of the date such litigation is filed.
|
|
89
|
-
|
|
90
|
-
4. Redistribution. You may reproduce and distribute copies of the
|
|
91
|
-
Work or Derivative Works thereof in any medium, with or without
|
|
92
|
-
modifications, and in Source or Object form, provided that You
|
|
93
|
-
meet the following conditions:
|
|
94
|
-
|
|
95
|
-
(a) You must give any other recipients of the Work or
|
|
96
|
-
Derivative Works a copy of this License; and
|
|
97
|
-
|
|
98
|
-
(b) You must cause any modified files to carry prominent notices
|
|
99
|
-
stating that You changed the files; and
|
|
100
|
-
|
|
101
|
-
(c) You must retain, in the Source form of any Derivative Works
|
|
102
|
-
that You distribute, all copyright, patent, trademark, and
|
|
103
|
-
attribution notices from the Source form of the Work,
|
|
104
|
-
excluding those notices that do not pertain to any part of
|
|
105
|
-
the Derivative Works; and
|
|
106
|
-
|
|
107
|
-
(d) If the Work includes a "NOTICE" text file as part of its
|
|
108
|
-
distribution, then any Derivative Works that You distribute must
|
|
109
|
-
include a readable copy of the attribution notices contained
|
|
110
|
-
within such NOTICE file, excluding those notices that do not
|
|
111
|
-
pertain to any part of the Derivative Works, in at least one
|
|
112
|
-
of the following places: within a NOTICE text file distributed
|
|
113
|
-
as part of the Derivative Works; within the Source form or
|
|
114
|
-
documentation, if provided along with the Derivative Works; or,
|
|
115
|
-
within a display generated by the Derivative Works, if and
|
|
116
|
-
wherever such third-party notices normally appear. The contents
|
|
117
|
-
of the NOTICE file are for informational purposes only and
|
|
118
|
-
do not modify the License. You may add Your own attribution
|
|
119
|
-
notices within Derivative Works that You distribute, alongside
|
|
120
|
-
or as an addendum to the NOTICE text from the Work, provided
|
|
121
|
-
that such additional attribution notices cannot be construed
|
|
122
|
-
as modifying the License.
|
|
123
|
-
|
|
124
|
-
You may add Your own copyright statement to Your modifications and
|
|
125
|
-
may provide additional or different license terms and conditions
|
|
126
|
-
for use, reproduction, or distribution of Your modifications, or
|
|
127
|
-
for any such Derivative Works as a whole, provided Your use,
|
|
128
|
-
reproduction, and distribution of the Work otherwise complies with
|
|
129
|
-
the conditions stated in this License.
|
|
130
|
-
|
|
131
|
-
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
132
|
-
any Contribution intentionally submitted for inclusion in the Work
|
|
133
|
-
by You to the Licensor shall be under the terms and conditions of
|
|
134
|
-
this License, without any additional terms or conditions.
|
|
135
|
-
Notwithstanding the above, nothing herein shall supersede or modify
|
|
136
|
-
the terms of any separate license agreement you may have executed
|
|
137
|
-
with Licensor regarding such Contributions.
|
|
138
|
-
|
|
139
|
-
6. Trademarks. This License does not grant permission to use the trade
|
|
140
|
-
names, trademarks, service marks, or product names of the Licensor,
|
|
141
|
-
except as required for reasonable and customary use in describing the
|
|
142
|
-
origin of the Work and reproducing the content of the NOTICE file.
|
|
143
|
-
|
|
144
|
-
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
145
|
-
agreed to in writing, Licensor provides the Work (and each
|
|
146
|
-
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
147
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
148
|
-
implied, including, without limitation, any warranties or conditions
|
|
149
|
-
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
150
|
-
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
151
|
-
appropriateness of using or redistributing the Work and assume any
|
|
152
|
-
risks associated with Your exercise of permissions under this License.
|
|
153
|
-
|
|
154
|
-
8. Limitation of Liability. In no event and under no legal theory,
|
|
155
|
-
whether in tort (including negligence), contract, or otherwise,
|
|
156
|
-
unless required by applicable law (such as deliberate and grossly
|
|
157
|
-
negligent acts) or agreed to in writing, shall any Contributor be
|
|
158
|
-
liable to You for damages, including any direct, indirect, special,
|
|
159
|
-
incidental, or consequential damages of any character arising as a
|
|
160
|
-
result of this License or out of the use or inability to use the
|
|
161
|
-
Work (including but not limited to damages for loss of goodwill,
|
|
162
|
-
work stoppage, computer failure or malfunction, or any and all
|
|
163
|
-
other commercial damages or losses), even if such Contributor
|
|
164
|
-
has been advised of the possibility of such damages.
|
|
165
|
-
|
|
166
|
-
9. Accepting Warranty or Additional Liability. While redistributing
|
|
167
|
-
the Work or Derivative Works thereof, You may choose to offer,
|
|
168
|
-
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
169
|
-
or other liability obligations and/or rights consistent with this
|
|
170
|
-
License. However, in accepting such obligations, You may act only
|
|
171
|
-
on Your own behalf and on Your sole responsibility, not on behalf
|
|
172
|
-
of any other Contributor, and only if You agree to indemnify,
|
|
173
|
-
defend, and hold each Contributor harmless for any liability
|
|
174
|
-
incurred by, or claims asserted against, such Contributor by reason
|
|
175
|
-
of your accepting any such warranty or additional liability.
|
|
176
|
-
|
|
177
|
-
END OF TERMS AND CONDITIONS
|
|
178
|
-
|
|
179
|
-
Copyright 2022 BitGo
|
|
180
|
-
|
|
181
|
-
Licensed under the Apache License, Version 2.0 (the "License");
|
|
182
|
-
you may not use this file except in compliance with the License.
|
|
183
|
-
You may obtain a copy of the License at
|
|
184
|
-
|
|
185
|
-
http://www.apache.org/licenses/LICENSE-2.0
|
|
186
|
-
|
|
187
|
-
Unless required by applicable law or agreed to in writing, software
|
|
188
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
|
189
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
190
|
-
See the License for the specific language governing permissions and
|
|
191
|
-
limitations under the License.
|