@witnet/sdk 1.0.0-beta.5 → 1.0.3
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/dist/package.json +3 -1
- package/dist/src/bin/helpers.d.ts +1 -0
- package/dist/src/bin/helpers.d.ts.map +1 -1
- package/dist/src/bin/helpers.js +12 -2
- package/dist/src/lib/crypto/interfaces.d.ts +7 -0
- package/dist/src/lib/crypto/interfaces.d.ts.map +1 -1
- package/dist/src/lib/crypto/interfaces.js +1 -1
- package/dist/src/lib/crypto/payloads/DataRequestPayload.d.ts +2 -2
- package/dist/src/lib/crypto/payloads/DataRequestPayload.d.ts.map +1 -1
- package/dist/src/lib/crypto/payloads/DataRequestPayload.js +8 -8
- package/dist/src/lib/crypto/payloads.d.ts.map +1 -1
- package/dist/src/lib/crypto/payloads.js +1 -12
- package/dist/src/lib/crypto/signer.d.ts +8 -1
- package/dist/src/lib/crypto/signer.d.ts.map +1 -1
- package/dist/src/lib/crypto/signer.js +23 -2
- package/dist/src/lib/crypto/transmitters/DataRequests.d.ts +0 -1
- package/dist/src/lib/crypto/transmitters/DataRequests.d.ts.map +1 -1
- package/dist/src/lib/crypto/transmitters/DataRequests.js +1 -2
- package/dist/src/lib/crypto/types.d.ts +2 -2
- package/dist/src/lib/crypto/types.d.ts.map +1 -1
- package/dist/src/lib/crypto/types.js +4 -5
- package/dist/src/lib/crypto/utils.d.ts +2 -1
- package/dist/src/lib/crypto/utils.d.ts.map +1 -1
- package/dist/src/lib/crypto/utils.js +6 -1
- package/dist/src/lib/crypto/wallet.d.ts.map +1 -1
- package/dist/src/lib/crypto/wallet.js +1 -4
- package/dist/src/lib/radon/ccdr/wit.d.ts +11 -0
- package/dist/src/lib/radon/ccdr/wit.d.ts.map +1 -1
- package/dist/src/lib/radon/ccdr/wit.js +17 -2
- package/dist/src/lib/radon/index.d.ts +1 -1
- package/dist/src/lib/radon/index.d.ts.map +1 -1
- package/dist/src/lib/radon/index.js +9 -3
- package/dist/src/lib/rpc/provider.d.ts +5 -3
- package/dist/src/lib/rpc/provider.d.ts.map +1 -1
- package/dist/src/lib/rpc/provider.js +14 -3
- package/dist/src/lib/rpc/reporter.d.ts +2 -3
- package/dist/src/lib/rpc/reporter.d.ts.map +1 -1
- package/dist/src/lib/rpc/reporter.js +1 -4
- package/dist/src/lib/rpc/types.d.ts +49 -24
- package/dist/src/lib/rpc/types.d.ts.map +1 -1
- package/dist/src/lib/rpc/types.js +3 -1
- package/dist/src/lib/types.d.ts +1 -1
- package/dist/src/lib/types.d.ts.map +1 -1
- package/dist/src/lib/types.js +1 -1
- package/dist/src/lib/utils.d.ts +3 -2
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +16 -9
- package/dist/witnet/assets/index.d.ts +6 -6
- package/dist/witnet/assets/modals/index.d.ts +10 -11
- package/dist/witnet/assets/modals/index.js +2 -12
- package/dist/witnet/assets/modals/web3/ipfs.d.ts +5 -0
- package/dist/witnet/assets/modals/web3/ipfs.d.ts.map +1 -0
- package/dist/witnet/assets/modals/web3/ipfs.js +16 -0
- package/dist/witnet/assets/modals/web3/wit.d.ts +1 -1
- package/dist/witnet/assets/modals/web3/wit.js +6 -9
- package/dist/witnet/assets/requests.js +1 -1
- package/package.json +3 -1
- package/src/bin/cli/inspect.js +49 -3
- package/src/bin/cli/network.js +9 -7
- package/src/bin/cli/radon.js +3 -3
- package/src/bin/cli/wallet.js +164 -47
- package/src/bin/helpers.js +13 -2
- package/witnet/assets/modals/index.js +1 -17
- package/witnet/assets/modals/web3/ipfs.js +19 -0
- package/witnet/assets/modals/web3/wit.js +4 -6
- package/witnet/assets/requests.js +1 -0
|
@@ -52,13 +52,13 @@ class DataRequestPayload extends payloads_1.TransactionPayloadMultiSig {
|
|
|
52
52
|
}
|
|
53
53
|
get droSLA() {
|
|
54
54
|
if (this._target && this._fees) {
|
|
55
|
-
const minConsensusPercentage =
|
|
55
|
+
const minConsensusPercentage = DataRequestPayload.MIN_CONSENSUS_PERCENTAGE;
|
|
56
56
|
const witnesses = (typeof this._target.witnesses === 'object'
|
|
57
57
|
? Object.keys(this._target.witnesses).length
|
|
58
58
|
: this._target.witnesses || 0);
|
|
59
59
|
const commitAndRevealFee = this._fees2UnitaryCommitRevealReward(this._fees, witnesses);
|
|
60
|
-
const witnessReward = this._fees2UnitaryReward(this._fees);
|
|
61
|
-
const collateral = witnessReward * BigInt(
|
|
60
|
+
const witnessReward = this._fees2UnitaryReward(this._fees, witnesses);
|
|
61
|
+
const collateral = witnessReward * BigInt(witnesses);
|
|
62
62
|
if (collateral > Number.MAX_SAFE_INTEGER)
|
|
63
63
|
throw new TypeError(`${this.constructor.name}: too much witness collateral: ${collateral.toString()} > ${Number.MAX_SAFE_INTEGER}`);
|
|
64
64
|
else if (witnessReward > Number.MAX_SAFE_INTEGER)
|
|
@@ -315,11 +315,11 @@ class DataRequestPayload extends payloads_1.TransactionPayloadMultiSig {
|
|
|
315
315
|
_fees2UnitaryCommitRevealReward(fees, witnesses) {
|
|
316
316
|
return fees / BigInt(witnesses) || 1n;
|
|
317
317
|
}
|
|
318
|
-
_fees2UnitaryReward(fees) {
|
|
319
|
-
return utils_1.BigMath.max(fees, 1n + DataRequestPayload.MIN_COLLATERAL / BigInt(
|
|
318
|
+
_fees2UnitaryReward(fees, witnesses) {
|
|
319
|
+
return utils_1.BigMath.max(fees, 1n + DataRequestPayload.MIN_COLLATERAL / BigInt(witnesses));
|
|
320
320
|
}
|
|
321
321
|
_fees2Value(fees, witnesses) {
|
|
322
|
-
return (BigInt(witnesses) * (this._fees2UnitaryReward(fees)
|
|
322
|
+
return (BigInt(witnesses) * (this._fees2UnitaryReward(fees, witnesses)
|
|
323
323
|
+ 2n * this._fees2UnitaryCommitRevealReward(fees, witnesses)));
|
|
324
324
|
}
|
|
325
325
|
_toDrOutputProtobuf() {
|
|
@@ -332,8 +332,8 @@ class DataRequestPayload extends payloads_1.TransactionPayloadMultiSig {
|
|
|
332
332
|
}
|
|
333
333
|
}
|
|
334
334
|
exports.DataRequestPayload = DataRequestPayload;
|
|
335
|
-
DataRequestPayload.COLLATERAL_RATIO = 125;
|
|
336
335
|
DataRequestPayload.DEFAULT_WITNESSES = 12;
|
|
337
336
|
DataRequestPayload.MAX_WEIGHT = 80000;
|
|
338
337
|
DataRequestPayload.MIN_COLLATERAL = 20000000000n;
|
|
339
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YVJlcXVlc3RQYXlsb2FkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jcnlwdG8vcGF5bG9hZHMvRGF0YVJlcXVlc3RQYXlsb2FkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUU1QiwyQ0FBOEM7QUFDOUMsTUFBTSxTQUFTLEdBQUcsaUJBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLHNDQUFzQyxDQUFDLENBQUMsQ0FBQTtBQUVyRixrREFBaUU7QUFFakUsdUNBQXlEO0FBSXpELDBDQUF3RDtBQUN4RCxvQ0FBdUY7QUFDdkYsb0NBQTBDO0FBa0IxQyxNQUFNLG1CQUFtQixHQUFHLEdBQUcsQ0FBQTtBQUMvQixNQUFNLG1CQUFtQixHQUFHLEdBQUcsQ0FBQTtBQUMvQixNQUFNLGtCQUFrQixHQUFHLEdBQUcsQ0FBQTtBQUU5QixNQUFNLGtCQUFrQixHQUFHLENBQUMsQ0FBQTtBQUM1QixNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQTtBQUUzQixNQUFNLG9CQUFvQixHQUFHLEdBQUcsQ0FBQTtBQUNoQyxNQUFNLHFCQUFxQixHQUFHLEVBQUUsQ0FBQTtBQUVoQyxNQUFhLGtCQUFtQixTQUFRLHFDQUE2QztJQVVqRixZQUFhLGFBQXFCLEVBQUUsS0FBbUMsRUFBRSxhQUFpQztRQUN0RyxLQUFLLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFBO1FBQ25DLElBQUksS0FBSyxZQUFZLG9CQUFZLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQTtRQUN6QixDQUFDO2FBQU0sSUFBSSxLQUFLLFlBQVkscUJBQWEsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFBO1FBQ3pCLENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxJQUFJLFNBQVMsQ0FB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LGdEQW9YQztBQWxYaUIsbUNBQWdCLEdBQUcsR0FBRyxDQUFBO0FBQ3RCLG9DQUFpQixHQUFHLEVBQUUsQ0FBQTtBQUN0Qiw2QkFBVSxHQUFHLEtBQU0sQ0FBQTtBQUNuQixpQ0FBYyxHQUFHLFlBQWUsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IExvbmcgPSByZXF1aXJlKFwibG9uZ1wiKVxyXG5cclxuaW1wb3J0IHsgUm9vdCBhcyBQcm90b1Jvb3QgfSBmcm9tIFwicHJvdG9idWZqc1wiXHJcbmNvbnN0IHByb3RvUm9vdCA9IFByb3RvUm9vdC5mcm9tSlNPTihyZXF1aXJlKFwiLi4vLi4vLi4vLi4vd2l0bmV0L3dpdG5ldC5wcm90by5qc29uXCIpKVxyXG5cclxuaW1wb3J0IHsgZnJvbUhleFN0cmluZywgdG9IZXhTdHJpbmcgfSBmcm9tIFwiLi4vLi4vLi4vYmluL2hlbHBlcnNcIlxyXG5cclxuaW1wb3J0IHsgUmFkb25SZXF1ZXN0LCBSYWRvblRlbXBsYXRlIH0gZnJvbSBcIi4uLy4uL3JhZG9uXCJcclxuaW1wb3J0IHsgSGFzaCwgSGV4U3RyaW5nLCBJSnNvblJwY1Byb3ZpZGVyIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCJcclxuXHJcbmltcG9ydCB7IElMZWRnZXIgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiXHJcbmltcG9ydCB7IFRyYW5zYWN0aW9uUGF5bG9hZE11bHRpU2lnIH0gZnJvbSBcIi4uL3BheWxvYWRzXCJcclxuaW1wb3J0IHsgQ29pbnMsIFB1YmxpY0tleUhhc2gsIFRyYW5zYWN0aW9uUGFyYW1zLCBUcmFuc2FjdGlvblByaW9yaXR5IH0gZnJvbSBcIi4uL3R5cGVzXCJcclxuaW1wb3J0IHsgQmlnTWF0aCwgc2hhMjU2IH0gZnJvbSBcIi4uL3V0aWxzXCJcclxuXHJcbmV4cG9ydCB0eXBlIERhdGFSZXF1ZXN0VGVtcGxhdGVBcmdzID0gYW55IHwgc3RyaW5nIHwgc3RyaW5nW10gfCBzdHJpbmdbXVtdXHJcbiAgICBcclxuZXhwb3J0IHR5cGUgRGF0YVJlcXVlc3RQYXJhbXMgPSBUcmFuc2FjdGlvblBhcmFtcyAmIHtcclxuICAgIGFyZ3M/OiBEYXRhUmVxdWVzdFRlbXBsYXRlQXJncyxcclxuICAgIG1heFJlc3VsdFNpemU/OiBudW1iZXIsXHJcbiAgICB3aXRuZXNzZXM/OiBudW1iZXIsXHJcbn1cclxuXHJcbnR5cGUgRGF0YVJlcXVlc3RPdXRwdXRTTEEgPSB7XHJcbiAgICBjb2xsYXRlcmFsOiBudW1iZXIsXHJcbiAgICBjb21taXRBbmRSZXZlYWxGZWU6IG51bWJlcixcclxuICAgIG1pbkNvbnNlbnN1c1BlcmNlbnRhZ2U6IG51bWJlcixcclxuICAgIHdpdG5lc3NlczogbnVtYmVyLFxyXG4gICAgd2l0bmVzc1Jld2FyZD86IG51bWJlcixcclxufVxyXG5cclxuY29uc3QgRFJfQ09NTUlUX1RYX1dFSUdIVCA9IDQwMFxyXG5jb25zdCBEUl9SRVZFQUxfVFhfV0VJR0hUID0gMjAwXHJcbmNvbnN0IERSX1RBTExZX1RYX1dFSUdIVCA9IDEwMFxyXG5cclxuY29uc3QgRFJfVFhfV0VJR0hUX0FMUEhBID0gMVxyXG5jb25zdCBEUl9UWF9XRUlHSFRfQkVUQSA9IDFcclxuXHJcbmNvbnN0IFRYX1dFSUdIVF9JTlBVVF9TSVpFID0gMTMzXHJcbmNvbnN0IFRYX1dFSUdIVF9PVVRQVVRfU0laRSA9IDM2XHJcblxyXG5leHBvcnQgY2xhc3MgRGF0YVJlcXVlc3RQYXlsb2FkIGV4dGVuZHMgVHJhbnNhY3Rpb25QYXlsb2FkTXVsdGlTaWc8RGF0YVJlcXVlc3RQYXJhbXM+IHtcclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIENPTExBVEVSQUxfUkFUSU8gPSAxMjVcclxuICAgIHB1YmxpYyBzdGF0aWMgREVGQVVMVF9XSVRORVNTRVMgPSAxMlxyXG4gICAgcHVibGljIHN0YXRpYyBNQVhfV0VJR0hUID0gODBfMDAwXHJcbiAgICBwdWJsaWMgc3RhdGljIE1JTl9DT0xMQVRFUkFMID0gMjBfMDAwXzAwMF8wMDBuXHJcblxyXG4gICAgcHJvdGVjdGVkIF9yZXF1ZXN0PzogUmFkb25SZXF1ZXN0IFxyXG4gICAgcHVibGljIHJlYWRvbmx5IHRlbXBsYXRlPzogUmFkb25UZW1wbGF0ZVxyXG4gICAgXHJcbiAgICBjb25zdHJ1Y3RvciAocHJvdG9UeXBlTmFtZTogc3RyaW5nLCByYWRvbjogUmFkb25SZXF1ZXN0IHwgUmFkb25UZW1wbGF0ZSwgaW5pdGlhbFRhcmdldD86IERhdGFSZXF1ZXN0UGFyYW1zKSB7XHJcbiAgICAgICAgc3VwZXIocHJvdG9UeXBlTmFtZSwgaW5pdGlhbFRhcmdldClcclxuICAgICAgICBpZiAocmFkb24gaW5zdGFuY2VvZiBSYWRvblJlcXVlc3QpIHtcclxuICAgICAgICAgICAgdGhpcy5fcmVxdWVzdCA9IHJhZG9uXHJcbiAgICAgICAgfSBlbHNlIGlmIChyYWRvbiBpbnN0YW5jZW9mIFJhZG9uVGVtcGxhdGUpIHtcclxuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZSA9IHJhZG9uXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgRGF0YVJlcXVlc3RQYXlsb2FkOiB1bnN1cHBvcnRlZCBSYWRvbiBhc3NldCB0eXBlOiAkeyhyYWRvbiBhcyBhbnkpPy5jb25zdHJ1Y3Rvci5uYW1lfWApXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgZHJvSGFzaCgpOiBIYXNoIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCBvYmogPSB0aGlzLl90b0RyT3V0cHV0UHJvdG9idWYoKVxyXG4gICAgICAgIGlmIChvYmopIHtcclxuICAgICAgICAgICAgY29uc3QgRGF0YVJlcXVlc3RPdXRwdXQgPSBwcm90b1Jvb3QubG9va3VwVHlwZShcIkRhdGFSZXF1ZXN0T3V0cHV0XCIpXHJcbiAgICAgICAgICAgIGNvbnN0IGVyciA9IERhdGFSZXF1ZXN0T3V0cHV0LnZlcmlmeShvYmopXHJcbiAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihlcnIpXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIlxcbmRyb0hhc2gub2JqID0+XCIsIEpTT04uc3RyaW5naWZ5KG9iaikpXHJcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gRGF0YVJlcXVlc3RPdXRwdXQuZnJvbU9iamVjdChvYmopXHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIlxcbmRyb0hhc2gubWVzc2FnZSA9PlwiLCBKU09OLnN0cmluZ2lmeShtZXNzYWdlKSlcclxuICAgICAgICAgICAgICAgIGNvbnN0IGJ5dGVjb2RlID0gRGF0YVJlcXVlc3RPdXRwdXQuZW5jb2RlKG1lc3NhZ2UpLmZpbmlzaCgpXHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIlxcbmRyb0hhc2guYnl0ZWNvZGUgPT5cIiwgYnl0ZWNvZGUpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9IZXhTdHJpbmcoc2hhMjU2KGJ5dGVjb2RlKSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBkcm9TTEEoKTogRGF0YVJlcXVlc3RPdXRwdXRTTEEgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGlmICh0aGlzLl90YXJnZXQgJiYgdGhpcy5fZmVlcykge1xyXG4gICAgICAgICAgICBjb25zdCBtaW5Db25zZW5zdXNQZXJjZW50YWdlID0gNTFcclxuICAgICAgICAgICAgY29uc3Qgd2l0bmVzc2VzID0gKFxyXG4gICAgICAgICAgICAgICAgdHlwZW9mIHRoaXMuX3RhcmdldC53aXRuZXNzZXMgPT09ICdvYmplY3QnXHJcbiAgICAgICAgICAgICAgICAgICAgPyBPYmplY3Qua2V5cyh0aGlzLl90YXJnZXQud2l0bmVzc2VzKS5sZW5ndGggXHJcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl90YXJnZXQud2l0bmVzc2VzIHx8IDBcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgY29uc3QgY29tbWl0QW5kUmV2ZWFsRmVlID0gdGhpcy5fZmVlczJVbml0YXJ5Q29tbWl0UmV2ZWFsUmV3YXJkKHRoaXMuX2ZlZXMsIHdpdG5lc3NlcylcclxuICAgICAgICAgICAgY29uc3Qgd2l0bmVzc1Jld2FyZCA9IHRoaXMuX2ZlZXMyVW5pdGFyeVJld2FyZCh0aGlzLl9mZWVzKSBcclxuICAgICAgICAgICAgY29uc3QgY29sbGF0ZXJhbCA9IHdpdG5lc3NSZXdhcmQgKiBCaWdJbnQoRGF0YVJlcXVlc3RQYXlsb2FkLkNPTExBVEVSQUxfUkFUSU8pXHJcbiAgICAgICAgICAgIGlmIChjb2xsYXRlcmFsID4gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpIFxyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiB0b28gbXVjaCB3aXRuZXNzIGNvbGxhdGVyYWw6ICR7Y29sbGF0ZXJhbC50b1N0cmluZygpfSA+ICR7TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJ9YCk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHdpdG5lc3NSZXdhcmQgPiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUilcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogdG9vIG11Y2ggd2l0bmVzcyByZXdhcmQ6ICR7d2l0bmVzc1Jld2FyZC50b1N0cmluZygpfSA+ICR7TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJ9YCk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGNvbW1pdEFuZFJldmVhbEZlZSA+IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKVxyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiB0b28gbXVjaCBjb21taXQvcmV2ZWFsIGZlZTogJHtjb21taXRBbmRSZXZlYWxGZWUudG9TdHJpbmcoKX0gPiAke051bWJlci5NQVhfU0FGRV9JTlRFR0VSfWApO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgY29sbGF0ZXJhbDogTnVtYmVyKGNvbGxhdGVyYWwpLFxyXG4gICAgICAgICAgICAgICAgY29tbWl0QW5kUmV2ZWFsRmVlOiBOdW1iZXIoY29tbWl0QW5kUmV2ZWFsRmVlKSxcclxuICAgICAgICAgICAgICAgIG1pbkNvbnNlbnN1c1BlcmNlbnRhZ2UsXHJcbiAgICAgICAgICAgICAgICB3aXRuZXNzZXMsXHJcbiAgICAgICAgICAgICAgICB3aXRuZXNzUmV3YXJkOiBOdW1iZXIod2l0bmVzc1Jld2FyZCksXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGhhc2goKTogSGFzaCB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgY29uc3QgX2J5dGVjb2RlID0gdGhpcy5ieXRlY29kZVxyXG4gICAgICAgIGlmIChfYnl0ZWNvZGUgJiYgdGhpcy5kcm9IYXNoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0b0hleFN0cmluZyhzaGEyNTYoQnVmZmVyLmNvbmNhdChbXHJcbiAgICAgICAgICAgICAgICBmcm9tSGV4U3RyaW5nKHRoaXMuZHJvSGFzaCksXHJcbiAgICAgICAgICAgICAgICBzaGEyNTYoX2J5dGVjb2RlKSxcclxuICAgICAgICAgICAgXSkpKSBhcyBIYXNoXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IG1heFdlaWdodCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiBEYXRhUmVxdWVzdFBheWxvYWQuTUFYX1dFSUdIVFxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgcGFyYW1ldGVyaXplZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gISF0aGlzLnRlbXBsYXRlXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBwcmVwYXJlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICB0aGlzLmNvdmVyZWRcclxuICAgICAgICAgICAgICAgICYmIHRoaXMuX2lucHV0cy5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgICAgICAmJiAhIXRoaXMuX3JlcXVlc3RcclxuICAgICAgICAgICAgICAgICYmICEhdGhpcy5fdGFyZ2V0XHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgcmFkQXJncygpOiBEYXRhUmVxdWVzdFRlbXBsYXRlQXJncyB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudGVtcGxhdGUgPyB0aGlzLl90YXJnZXQ/LmFyZ3MgOiB1bmRlZmluZWRcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHJhZEhhc2goKTogSGV4U3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0Py5yYWRIYXNoXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCByZXF1ZXN0KCk6IFJhZG9uUmVxdWVzdCB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVlc3RcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHZhbHVlKCk6IENvaW5zIHtcclxuICAgICAgICBpZiAodGhpcy5fdGFyZ2V0ICYmIHRoaXMuX2ZlZXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIENvaW5zLmZyb21QZWRyb3ModGhpcy5fZmVlczJWYWx1ZSh0aGlzLl9mZWVzLCB0aGlzLl90YXJnZXQud2l0bmVzc2VzIHx8IDApKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBDb2lucy56ZXJvKClcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCB3ZWlnaHQoKTogbnVtYmVyIHtcclxuICAgICAgICBpZiAodGhpcy5fcmVxdWVzdCAmJiB0aGlzLl90YXJnZXQpIHtcclxuICAgICAgICAgICAgY29uc3Qgd2l0bmVzc2VzID0gdHlwZW9mIHRoaXMuX3RhcmdldC53aXRuZXNzZXMgPT09ICdvYmplY3QnID8gT2JqZWN0LmtleXModGhpcy5fdGFyZ2V0LndpdG5lc3NlcykubGVuZ3RoIDogdGhpcy5fdGFyZ2V0LndpdG5lc3NlcyB8fCAwXHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICBEUl9UWF9XRUlHSFRfQUxQSEEgKiAodGhpcy5fcmVxdWVzdC53ZWlnaHQoKSArIDggKyAyICsgOCArIDQgKyA4KSxcclxuICAgICAgICAgICAgICAgICAgICArIHRoaXMuX2lucHV0cy5sZW5ndGggKiBUWF9XRUlHSFRfSU5QVVRfU0laRSBcclxuICAgICAgICAgICAgICAgICAgICArIHRoaXMuX291dHB1dHMubGVuZ3RoICogVFhfV0VJR0hUX09VVFBVVF9TSVpFIFxyXG4gICAgICAgICAgICAgICAgICAgICsgd2l0bmVzc2VzICogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRFJfQ09NTUlUX1RYX1dFSUdIVFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgRFJfUkVWRUFMX1RYX1dFSUdIVCAqIERSX1RYX1dFSUdIVF9CRVRBICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIFRYX1dFSUdIVF9PVVRQVVRfU0laRSAvLyBUT0RPIFYyLjE6IHR5cGVvZiB0aGlzLl90YXJnZXQud2l0bmVzc2VzID09PSAnb2JqZWN0JyA/IFRYX1dFSUdIVF9PVVRQVVRfU0laRSA6IDBcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgKyBNYXRoLm1heChEUl9UQUxMWV9UWF9XRUlHSFQsIHRoaXMuX3RhcmdldD8ubWF4UmVzdWx0U2l6ZSB8fCAwKSAqIERSX1RYX1dFSUdIVF9CRVRBXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIDBcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGNvbnN1bWVVdHhvcyhsZWRnZXI6IElMZWRnZXIsIHJlbG9hZD86IGJvb2xlYW4pOiBQcm9taXNlPGJpZ2ludD4ge1xyXG4gICAgICAgIGlmICghdGhpcy5fdGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBpbnRlcm5hbCBlcnJvcjogbm8gaW4tZmxpZ2h0IHBhcmFtcy5gKVxyXG4gICAgICAgIFxyXG4gICAgICAgIH0gZWxzZSBpZiAoKHRoaXMuX3RhcmdldCBhcyBhbnkpPy5mZWVzIGluc3RhbmNlb2YgQ29pbnMpIHtcclxuICAgICAgICAgICAgdGhpcy5fZmVlcyA9ICh0aGlzLl90YXJnZXQgYXMgYW55KS5mZWVzLnBlZHJvcztcclxuICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmNvbnN1bWVVdHhvcyhsZWRnZXIsIHJlbG9hZClcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5jb3ZlcmVkKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5fdGFyZ2V0LndpdG5lc3Nlcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdGFyZ2V0LndpdG5lc3NlcyA9IE1hdGgubWluKFxyXG4gICAgICAgICAgICAgICAgICAgIERhdGFSZXF1ZXN0UGF5bG9hZC5ERUZBVUxUX1dJVE5FU1NFUywgXHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgbGVkZ2VyLnByb3ZpZGVyLndpdG5lc3NlcygpXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdGFyZ2V0LndpdG5lc3NlcyA8IDMpIHtcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5fdGFyZ2V0LndpdG5lc3Nlc1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBjYW5ub3QgZXN0aW1hdGUgd2l0bmVzc2VzOiBuZXR3b3JrIG5vdCByZWFkeSBmb3Igd2l0bmVzc2luZy5gKSAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLndlaWdodCA+IERhdGFSZXF1ZXN0UGF5bG9hZC5NQVhfV0VJR0hUICogMC44KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVsdGEgPSB0aGlzLndlaWdodCAtIERhdGFSZXF1ZXN0UGF5bG9hZC5NQVhfV0VJR0hUICogMC44XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGFyZ2V0LndpdG5lc3NlcyAtPSBNYXRoLmNlaWwoZGVsdGEgLyAoRFJfQ09NTUlUX1RYX1dFSUdIVCArIERSX1JFVkVBTF9UWF9XRUlHSFQgKiBUWF9XRUlHSFRfT1VUUFVUX1NJWkUpKVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl90YXJnZXQud2l0bmVzc2VzIDwgMykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5fdGFyZ2V0LndpdG5lc3Nlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogY2Fubm90IGVzdGltYXRlIHdpdG5lc3NlczogcmFkb24gcmVxdWVzdCB0b28gY29tcGxleDogJHt0aGlzLndlaWdodH0gd2VpZ2h0IHVuaXRzYClcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgcHJpb3JpdHkgPSAodGhpcy5fdGFyZ2V0IGFzIGFueSk/LmZlZXMgYXMgVHJhbnNhY3Rpb25Qcmlvcml0eSB8fCBUcmFuc2FjdGlvblByaW9yaXR5Lk9wdWxlbnRcclxuICAgICAgICAgICAgbGV0IGVzdGltYXRlZEZlZXMgPSBhd2FpdCB0aGlzLl9lc3RpbWF0ZU5ldHdvcmtGZWVzKGxlZGdlci5wcm92aWRlciwgcHJpb3JpdHkpO1xyXG4gICAgICAgICAgICB3aGlsZSAodGhpcy5fZmVlcyA8IGVzdGltYXRlZEZlZXMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2ZlZXMgPSBlc3RpbWF0ZWRGZWVzXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9vdXRwdXRzID0gW11cclxuICAgICAgICAgICAgICAgIHRoaXMuX2lucHV0cyA9IFtdXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jb3ZlcmVkID0gMG5cclxuICAgICAgICAgICAgICAgIC8vIGNvbnN1bWUgdXR4b3MgYXMgdG8gY292ZXIgZm9yIGVzdGltYXRlZCB2YWx1ZSBhbmQgZXN0aW1hdGVkIGZlZXMgXHJcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX2ZlZXMyVmFsdWUodGhpcy5fZmVlcywgdGhpcy5fdGFyZ2V0LndpdG5lc3NlcylcclxuICAgICAgICAgICAgICAgIGNvbnN0IHV0eG9zID0gYXdhaXQgbGVkZ2VyLnNlbGVjdFV0eG9zKHsgXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IENvaW5zLmZyb21QZWRyb3ModmFsdWUgKyB0aGlzLl9mZWVzIC0gdGhpcy5fY292ZXJlZCksIFxyXG4gICAgICAgICAgICAgICAgICAgIHJlbG9hZCxcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jb3ZlcmVkICs9IHV0eG9zLm1hcCh1dHhvID0+IEJpZ0ludCh1dHhvLnZhbHVlKSkucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBwcmV2ICsgY3VyciwgMG4pXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnB1dHMucHVzaCguLi51dHhvcylcclxuICAgICAgICAgICAgICAgIGxlZGdlci5jb25zdW1lVXR4b3MoLi4udXR4b3MpXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2UgPSB0aGlzLl9jb3ZlcmVkIC0gKHZhbHVlICsgdGhpcy5fZmVlcylcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jaGFuZ2UgPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJlcGFyZU91dHB1dHMoeyB2YWx1ZTogdGhpcy5fY2hhbmdlIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgZXN0aW1hdGVkRmVlcyA9IGF3YWl0IHRoaXMuX2VzdGltYXRlTmV0d29ya0ZlZXMobGVkZ2VyLnByb3ZpZGVyLCBwcmlvcml0eSlcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaW5zdWZmaWNpZW50IGZ1bmRzIC4uLlxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NoYW5nZVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpbnRvUmVjZWlwdCh0YXJnZXQ6IERhdGFSZXF1ZXN0UGFyYW1zKTogYW55IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBkcm9IYXNoOiB0aGlzLmRyb0hhc2gsXHJcbiAgICAgICAgICAgIHJhZEFyZ3M6IHRoaXMucmFkQXJncyxcclxuICAgICAgICAgICAgcmFkSGFzaDogdGhpcy5yYWRIYXNoLFxyXG4gICAgICAgICAgICB3aXRuZXNzZXM6IHRhcmdldC53aXRuZXNzZXMsXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBwcmVwYXJlT3V0cHV0cyhjaGFuZ2U/OiB7IHZhbHVlOiBiaWdpbnQgfSk6IGFueSB7XHJcbiAgICAgICAgaWYgKGNoYW5nZT8udmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5fb3V0cHV0cy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHBraDogdGhpcy5faW5wdXRzWzBdLnNpZ25lcixcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBjaGFuZ2UudmFsdWUsXHJcbiAgICAgICAgICAgICAgICB0aW1lX2xvY2s6IDAsXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZXNldFRhcmdldCh0YXJnZXQ6IERhdGFSZXF1ZXN0UGFyYW1zKTogYW55IHtcclxuICAgICAgICB0aGlzLl9jaGFuZ2UgPSAwblxyXG4gICAgICAgIHRoaXMuX2NvdmVyZWQgPSAwblxyXG4gICAgICAgIHRoaXMuX2ZlZXMgPSAwblxyXG4gICAgICAgIHRoaXMuX2lucHV0cyA9IFtdXHJcbiAgICAgICAgdGhpcy5fb3V0cHV0cyA9IFtdXHJcbiAgICAgICAgdGhpcy5fdGFyZ2V0ID0gdGFyZ2V0XHJcbiAgICAgICAgaWYgKHRoaXMuZHJvU0xBPy5jb2xsYXRlcmFsICYmIHRoaXMuZHJvU0xBLmNvbGxhdGVyYWwgPCBEYXRhUmVxdWVzdFBheWxvYWQuTUlOX0NPTExBVEVSQUwpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IHdpdG5lc3NpbmcgY29sbGF0ZXJhbCBiZWxvdyBtaW5pbXVtOiAke1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJvU0xBLmNvbGxhdGVyYWxcclxuICAgICAgICAgICAgICAgIH0gPCAke1xyXG4gICAgICAgICAgICAgICAgICAgIERhdGFSZXF1ZXN0UGF5bG9hZC5NSU5fQ09MTEFURVJBTFxyXG4gICAgICAgICAgICAgICAgfWBcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMudGVtcGxhdGUpIHtcclxuICAgICAgICAgICAgY29uc3QgYXJncyA9IHRhcmdldD8uYXJnc1xyXG4gICAgICAgICAgICBpZiAoYXJncyA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IG5vIHRlbXBsYXRlIGFyZ3Mgd2VyZSBwYXNzZWQuYClcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgYXJncyA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3JlcXVlc3QgPSB0aGlzLnRlbXBsYXRlLmJ1aWxkUmFkb25SZXF1ZXN0KFthcmdzXSlcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3JlcXVlc3QgPSB0aGlzLnRlbXBsYXRlLmJ1aWxkUmFkb25SZXF1ZXN0KGFyZ3MpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZGVsZXRlIHRoaXMuX3ByaW9yaXRpZXNcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdG9KU09OKGh1bWFuaXplID0gZmFsc2UpOiBhbnkge1xyXG4gICAgICAgIGNvbnN0IGRyb1NMQSA9IHRoaXMuZHJvU0xBICAgICAgICBcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBpbnB1dHM6IHRoaXMuaW5wdXRzXHJcbiAgICAgICAgICAgICAgICAubWFwKHV0eG8gPT4gKHsgb3V0cHV0X3BvaW50ZXI6IHV0eG8ub3V0cHV0X3BvaW50ZXIgfSkpLFxyXG4gICAgICAgICAgICBvdXRwdXRzOiB0aGlzLm91dHB1dHMubWFwKHZ0byA9PiAoeyBcclxuICAgICAgICAgICAgICAgIHBraDogdnRvLnBraCxcclxuICAgICAgICAgICAgICAgIHRpbWVfbG9jazogdnRvLnRpbWVfbG9jayxcclxuICAgICAgICAgICAgICAgIHZhbHVlOiB2dG8udmFsdWUudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICBkcl9vdXRwdXQ6IHtcclxuICAgICAgICAgICAgICAgIC4uLih0aGlzLl9yZXF1ZXN0ID8geyBkYXRhX3JlcXVlc3Q6IHRoaXMuX3JlcXVlc3QudG9KU09OKGh1bWFuaXplKSB9IDoge30pLFxyXG4gICAgICAgICAgICAgICAgY29tbWl0X2FuZF9yZXZlYWxfZmVlOiBkcm9TTEE/LmNvbW1pdEFuZFJldmVhbEZlZSxcclxuICAgICAgICAgICAgICAgIG1pbl9jb25zZW5zdXNfcGVyY2VudGFnZTogZHJvU0xBPy5taW5Db25zZW5zdXNQZXJjZW50YWdlLFxyXG4gICAgICAgICAgICAgICAgd2l0bmVzc2VzOiBkcm9TTEE/LndpdG5lc3NlcyxcclxuICAgICAgICAgICAgICAgIHdpdG5lc3NfcmV3YXJkOiBkcm9TTEE/LndpdG5lc3NSZXdhcmQsXHJcbiAgICAgICAgICAgICAgICBjb2xsYXRlcmFsOiBkcm9TTEE/LmNvbGxhdGVyYWxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0gICBcclxuXHJcbiAgICBwdWJsaWMgdG9Qcm90b2J1ZigpOiBhbnkge1xyXG4gICAgICAgIGlmICh0aGlzLnByZXBhcmVkICYmIHRoaXMuX3RhcmdldCAmJiB0aGlzLl9yZXF1ZXN0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7ICAgIFxyXG4gICAgICAgICAgICAgICAgaW5wdXRzOiB0aGlzLmlucHV0c1xyXG4gICAgICAgICAgICAgICAgICAgIC5tYXAodXR4byA9PiB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2FjdGlvbklkID0gdXR4by5vdXRwdXRfcG9pbnRlci5zcGxpdCgnOicpWzBdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG91dHB1dEluZGV4ID0gcGFyc2VJbnQodXR4by5vdXRwdXRfcG9pbnRlci5zcGxpdCgnOicpWzFdKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0UG9pbnRlcjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uSWQ6IHsgU0hBMjU2OiBBcnJheS5mcm9tKGZyb21IZXhTdHJpbmcodHJhbnNhY3Rpb25JZCkpIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKG91dHB1dEluZGV4ID4gMCA/IHsgb3V0cHV0SW5kZXggfSA6IHt9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIG91dHB1dHM6IHRoaXMub3V0cHV0cy5tYXAodnRvID0+ICh7IFxyXG4gICAgICAgICAgICAgICAgICAgIHBraDogeyBoYXNoOiBBcnJheS5mcm9tKFB1YmxpY0tleUhhc2guZnJvbUJlY2gzMih2dG8ucGtoKS50b0J5dGVzMjAoKSksIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IExvbmcuZnJvbVZhbHVlKHZ0by52YWx1ZSksXHJcbiAgICAgICAgICAgICAgICAgICAgLi4uKHZ0by50aW1lX2xvY2sgPiAwID8geyB0aW1lTG9jazogdnRvLnRpbWVfbG9jayB9IDoge30pLFxyXG4gICAgICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICAgICAgZHJPdXRwdXQ6IHRoaXMuX3RvRHJPdXRwdXRQcm90b2J1ZigpLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB2YWxpZGF0ZVRhcmdldCh0YXJnZXQ/OiBhbnkpOiBEYXRhUmVxdWVzdFBhcmFtcyB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgdGFyZ2V0ID0gdGhpcy5fY2xlYW5UYXJnZXRFeHRyYXModGFyZ2V0KVxyXG4gICAgICAgIGlmICh0YXJnZXQgJiYgT2JqZWN0LmtleXModGFyZ2V0KS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGlmICghKFxyXG4gICAgICAgICAgICAgICAgdGFyZ2V0XHJcbiAgICAgICAgICAgICAgICAgICAgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAhdGFyZ2V0Py5mZWVzIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuZmVlcyBpbnN0YW5jZW9mIENvaW5zICYmICh0YXJnZXQuZmVlcyBhcyBDb2lucykucGVkcm9zID4gMCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IE9iamVjdC52YWx1ZXMoVHJhbnNhY3Rpb25Qcmlvcml0eSkuaW5jbHVkZXModGFyZ2V0LmZlZXMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgJiYgKHRhcmdldD8ud2l0bmVzc2VzIHx8IHRhcmdldD8ud2l0bmVzc2VzID09PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgJiYgKCF0aGlzLnRlbXBsYXRlIHx8IHRhcmdldD8uYXJncylcclxuICAgICAgICAgICAgKSkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBpbnZhbGlkIG9wdGlvbnM6ICR7SlNPTi5zdHJpbmdpZnkodGFyZ2V0KX1gKVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRhcmdldD8ud2l0bmVzc2VzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRhcmdldC53aXRuZXNzZXMgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBleHBsaWNpdCB3aXRuZXNzaW5nIGNvbW1pdHRlZXMgbm90IHlldCBzdXBwb3J0ZWQ6ICR7dGFyZ2V0LndpdG5lc3Nlc31gKVxyXG4gICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgIHRhcmdldC53aXRuZXNzZXMgPSBwYXJzZUludCh0YXJnZXQud2l0bmVzc2VzIGFzIHN0cmluZylcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0IGFzIERhdGFSZXF1ZXN0UGFyYW1zXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX2NsZWFuVGFyZ2V0RXh0cmFzKHRhcmdldD86IGFueSk6IGFueSB7XHJcbiAgICAgICAgaWYgKHRhcmdldCkge1xyXG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxyXG4gICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXModGFyZ2V0KS5maWx0ZXIoKFtrZXksXSkgPT4gW1xyXG4gICAgICAgICAgICAgICAgICAgICdhcmdzJyxcclxuICAgICAgICAgICAgICAgICAgICAnZmVlcycsXHJcbiAgICAgICAgICAgICAgICAgICAgJ21heFJlc3VsdFNpemUnLFxyXG4gICAgICAgICAgICAgICAgICAgICd3aXRuZXNzZXMnLFxyXG4gICAgICAgICAgICAgICAgXS5pbmNsdWRlcyhrZXkpKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBhc3luYyBfZXN0aW1hdGVOZXR3b3JrRmVlcyhwcm92aWRlcjogSUpzb25ScGNQcm92aWRlciwgcHJpb3JpdHkgPSBUcmFuc2FjdGlvblByaW9yaXR5Lk1lZGl1bSk6IFByb21pc2U8YmlnaW50PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9wcmlvcml0aWVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3ByaW9yaXRpZXMgPSBhd2FpdCBwcm92aWRlci5wcmlvcml0aWVzKClcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIEJpZ0ludChNYXRoLmZsb29yKFxyXG4gICAgICAgICAgICB0aGlzLl9wcmlvcml0aWVzW2BkcnRfJHtwcmlvcml0eX1gXS5wcmlvcml0eSAqIChcclxuICAgICAgICAgICAgICAgIHRoaXMuY292ZXJlZCA/IHRoaXMud2VpZ2h0IDogKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMud2VpZ2h0XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZXN0aW1hdGUgd2VpZ2h0IG9mIG9uZSBzaW5nbGUgb3V0cHV0IGluIGNhc2UgdGhlcmUgd2FzIGNoYW5nZSB0byBwYXkgYmFja1xyXG4gICAgICAgICAgICAgICAgICAgICsgVFhfV0VJR0hUX09VVFBVVF9TSVpFIFxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF9mZWVzMlVuaXRhcnlDb21taXRSZXZlYWxSZXdhcmQoZmVlczogYmlnaW50LCB3aXRuZXNzZXM6IG51bWJlcik6IGJpZ2ludCB7XHJcbiAgICAgICAgcmV0dXJuIGZlZXMgLyBCaWdJbnQod2l0bmVzc2VzKSB8fCAxblxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfZmVlczJVbml0YXJ5UmV3YXJkKGZlZXM6IGJpZ2ludCk6IGJpZ2ludCB7XHJcbiAgICAgICAgcmV0dXJuIEJpZ01hdGgubWF4KFxyXG4gICAgICAgICAgICBmZWVzLFxyXG4gICAgICAgICAgICAxbiArIERhdGFSZXF1ZXN0UGF5bG9hZC5NSU5fQ09MTEFURVJBTCAvIEJpZ0ludChEYXRhUmVxdWVzdFBheWxvYWQuQ09MTEFURVJBTF9SQVRJTylcclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9mZWVzMlZhbHVlKGZlZXM6IGJpZ2ludCwgd2l0bmVzc2VzOiBudW1iZXIpOiBiaWdpbnQge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIEJpZ0ludCh3aXRuZXNzZXMpICogKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fZmVlczJVbml0YXJ5UmV3YXJkKGZlZXMpXHJcbiAgICAgICAgICAgICAgICArIDJuICogdGhpcy5fZmVlczJVbml0YXJ5Q29tbWl0UmV2ZWFsUmV3YXJkKGZlZXMsIHdpdG5lc3NlcylcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF90b0RyT3V0cHV0UHJvdG9idWYoKTogYW55IHtcclxuICAgICAgICBpZiAodGhpcy5fcmVxdWVzdCkge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4udGhpcy5kcm9TTEEsXHJcbiAgICAgICAgICAgICAgICBkYXRhUmVxdWVzdDogdGhpcy5fcmVxdWVzdC50b1Byb3RvYnVmKClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuIl19
|
|
338
|
+
DataRequestPayload.MIN_CONSENSUS_PERCENTAGE = 51;
|
|
339
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YVJlcXVlc3RQYXlsb2FkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jcnlwdG8vcGF5bG9hZHMvRGF0YVJlcXVlc3RQYXlsb2FkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUU1QiwyQ0FBOEM7QUFDOUMsTUFBTSxTQUFTLEdBQUcsaUJBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLHNDQUFzQyxDQUFDLENBQUMsQ0FBQTtBQUVyRixrREFBaUU7QUFFakUsdUNBQXlEO0FBSXpELDBDQUF3RDtBQUN4RCxvQ0FBdUY7QUFDdkYsb0NBQTBDO0FBa0IxQyxNQUFNLG1CQUFtQixHQUFHLEdBQUcsQ0FBQTtBQUMvQixNQUFNLG1CQUFtQixHQUFHLEdBQUcsQ0FBQTtBQUMvQixNQUFNLGtCQUFrQixHQUFHLEdBQUcsQ0FBQTtBQUU5QixNQUFNLGtCQUFrQixHQUFHLENBQUMsQ0FBQTtBQUM1QixNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQTtBQUUzQixNQUFNLG9CQUFvQixHQUFHLEdBQUcsQ0FBQTtBQUNoQyxNQUFNLHFCQUFxQixHQUFHLEVBQUUsQ0FBQTtBQUVoQyxNQUFhLGtCQUFtQixTQUFRLHFDQUE2QztJQVVqRixZQUFhLGFBQXFCLEVBQUUsS0FBbUMsRUFBRSxhQUFpQztRQUN0RyxLQUFLLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFBO1FBQ25DLElBQUksS0FBSyxZQUFZLG9CQUFZLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQTtRQUN6QixDQUFDO2FBQU0sSUFBSSxLQUFLLFlBQVkscUJBQWEsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFBO1FBQ3pCLENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxJQUFJLFNBQVMsQ0FB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O0lBQ0wsQ0FBQzs7QUFuWEwsZ0RBb1hDO0FBbFhpQixvQ0FBaUIsR0FBRyxFQUFFLENBQUE7QUFDdEIsNkJBQVUsR0FBRyxLQUFNLENBQUE7QUFDbkIsaUNBQWMsR0FBRyxZQUFlLENBQUE7QUFDaEMsMkNBQXdCLEdBQUcsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgTG9uZyA9IHJlcXVpcmUoXCJsb25nXCIpXHJcblxyXG5pbXBvcnQgeyBSb290IGFzIFByb3RvUm9vdCB9IGZyb20gXCJwcm90b2J1ZmpzXCJcclxuY29uc3QgcHJvdG9Sb290ID0gUHJvdG9Sb290LmZyb21KU09OKHJlcXVpcmUoXCIuLi8uLi8uLi8uLi93aXRuZXQvd2l0bmV0LnByb3RvLmpzb25cIikpXHJcblxyXG5pbXBvcnQgeyBmcm9tSGV4U3RyaW5nLCB0b0hleFN0cmluZyB9IGZyb20gXCIuLi8uLi8uLi9iaW4vaGVscGVyc1wiXHJcblxyXG5pbXBvcnQgeyBSYWRvblJlcXVlc3QsIFJhZG9uVGVtcGxhdGUgfSBmcm9tIFwiLi4vLi4vcmFkb25cIlxyXG5pbXBvcnQgeyBIYXNoLCBIZXhTdHJpbmcsIElKc29uUnBjUHJvdmlkZXIgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIlxyXG5cclxuaW1wb3J0IHsgSUxlZGdlciB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCJcclxuaW1wb3J0IHsgVHJhbnNhY3Rpb25QYXlsb2FkTXVsdGlTaWcgfSBmcm9tIFwiLi4vcGF5bG9hZHNcIlxyXG5pbXBvcnQgeyBDb2lucywgUHVibGljS2V5SGFzaCwgVHJhbnNhY3Rpb25QYXJhbXMsIFRyYW5zYWN0aW9uUHJpb3JpdHkgfSBmcm9tIFwiLi4vdHlwZXNcIlxyXG5pbXBvcnQgeyBCaWdNYXRoLCBzaGEyNTYgfSBmcm9tIFwiLi4vdXRpbHNcIlxyXG5cclxuZXhwb3J0IHR5cGUgRGF0YVJlcXVlc3RUZW1wbGF0ZUFyZ3MgPSBhbnkgfCBzdHJpbmcgfCBzdHJpbmdbXSB8IHN0cmluZ1tdW11cclxuICAgIFxyXG5leHBvcnQgdHlwZSBEYXRhUmVxdWVzdFBhcmFtcyA9IFRyYW5zYWN0aW9uUGFyYW1zICYge1xyXG4gICAgYXJncz86IERhdGFSZXF1ZXN0VGVtcGxhdGVBcmdzLFxyXG4gICAgbWF4UmVzdWx0U2l6ZT86IG51bWJlcixcclxuICAgIHdpdG5lc3Nlcz86IG51bWJlcixcclxufVxyXG5cclxudHlwZSBEYXRhUmVxdWVzdE91dHB1dFNMQSA9IHtcclxuICAgIGNvbGxhdGVyYWw6IG51bWJlcixcclxuICAgIGNvbW1pdEFuZFJldmVhbEZlZTogbnVtYmVyLFxyXG4gICAgbWluQ29uc2Vuc3VzUGVyY2VudGFnZTogbnVtYmVyLFxyXG4gICAgd2l0bmVzc2VzOiBudW1iZXIsXHJcbiAgICB3aXRuZXNzUmV3YXJkPzogbnVtYmVyLFxyXG59XHJcblxyXG5jb25zdCBEUl9DT01NSVRfVFhfV0VJR0hUID0gNDAwXHJcbmNvbnN0IERSX1JFVkVBTF9UWF9XRUlHSFQgPSAyMDBcclxuY29uc3QgRFJfVEFMTFlfVFhfV0VJR0hUID0gMTAwXHJcblxyXG5jb25zdCBEUl9UWF9XRUlHSFRfQUxQSEEgPSAxXHJcbmNvbnN0IERSX1RYX1dFSUdIVF9CRVRBID0gMVxyXG5cclxuY29uc3QgVFhfV0VJR0hUX0lOUFVUX1NJWkUgPSAxMzNcclxuY29uc3QgVFhfV0VJR0hUX09VVFBVVF9TSVpFID0gMzZcclxuXHJcbmV4cG9ydCBjbGFzcyBEYXRhUmVxdWVzdFBheWxvYWQgZXh0ZW5kcyBUcmFuc2FjdGlvblBheWxvYWRNdWx0aVNpZzxEYXRhUmVxdWVzdFBhcmFtcz4ge1xyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgREVGQVVMVF9XSVRORVNTRVMgPSAxMlxyXG4gICAgcHVibGljIHN0YXRpYyBNQVhfV0VJR0hUID0gODBfMDAwXHJcbiAgICBwdWJsaWMgc3RhdGljIE1JTl9DT0xMQVRFUkFMID0gMjBfMDAwXzAwMF8wMDBuXHJcbiAgICBwdWJsaWMgc3RhdGljIE1JTl9DT05TRU5TVVNfUEVSQ0VOVEFHRSA9IDUxO1xyXG5cclxuICAgIHByb3RlY3RlZCBfcmVxdWVzdD86IFJhZG9uUmVxdWVzdCBcclxuICAgIHB1YmxpYyByZWFkb25seSB0ZW1wbGF0ZT86IFJhZG9uVGVtcGxhdGVcclxuICAgIFxyXG4gICAgY29uc3RydWN0b3IgKHByb3RvVHlwZU5hbWU6IHN0cmluZywgcmFkb246IFJhZG9uUmVxdWVzdCB8IFJhZG9uVGVtcGxhdGUsIGluaXRpYWxUYXJnZXQ/OiBEYXRhUmVxdWVzdFBhcmFtcykge1xyXG4gICAgICAgIHN1cGVyKHByb3RvVHlwZU5hbWUsIGluaXRpYWxUYXJnZXQpXHJcbiAgICAgICAgaWYgKHJhZG9uIGluc3RhbmNlb2YgUmFkb25SZXF1ZXN0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3JlcXVlc3QgPSByYWRvblxyXG4gICAgICAgIH0gZWxzZSBpZiAocmFkb24gaW5zdGFuY2VvZiBSYWRvblRlbXBsYXRlKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGUgPSByYWRvblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYERhdGFSZXF1ZXN0UGF5bG9hZDogdW5zdXBwb3J0ZWQgUmFkb24gYXNzZXQgdHlwZTogJHsocmFkb24gYXMgYW55KT8uY29uc3RydWN0b3IubmFtZX1gKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGRyb0hhc2goKTogSGFzaCB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgY29uc3Qgb2JqID0gdGhpcy5fdG9Eck91dHB1dFByb3RvYnVmKClcclxuICAgICAgICBpZiAob2JqKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IERhdGFSZXF1ZXN0T3V0cHV0ID0gcHJvdG9Sb290Lmxvb2t1cFR5cGUoXCJEYXRhUmVxdWVzdE91dHB1dFwiKVxyXG4gICAgICAgICAgICBjb25zdCBlcnIgPSBEYXRhUmVxdWVzdE91dHB1dC52ZXJpZnkob2JqKVxyXG4gICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoZXJyKVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJcXG5kcm9IYXNoLm9iaiA9PlwiLCBKU09OLnN0cmluZ2lmeShvYmopKVxyXG4gICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IERhdGFSZXF1ZXN0T3V0cHV0LmZyb21PYmplY3Qob2JqKVxyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJcXG5kcm9IYXNoLm1lc3NhZ2UgPT5cIiwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpXHJcbiAgICAgICAgICAgICAgICBjb25zdCBieXRlY29kZSA9IERhdGFSZXF1ZXN0T3V0cHV0LmVuY29kZShtZXNzYWdlKS5maW5pc2goKVxyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJcXG5kcm9IYXNoLmJ5dGVjb2RlID0+XCIsIGJ5dGVjb2RlKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvSGV4U3RyaW5nKHNoYTI1NihieXRlY29kZSkpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgZHJvU0xBKCk6IERhdGFSZXF1ZXN0T3V0cHV0U0xBIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBpZiAodGhpcy5fdGFyZ2V0ICYmIHRoaXMuX2ZlZXMpIHtcclxuICAgICAgICAgICAgY29uc3QgbWluQ29uc2Vuc3VzUGVyY2VudGFnZSA9IERhdGFSZXF1ZXN0UGF5bG9hZC5NSU5fQ09OU0VOU1VTX1BFUkNFTlRBR0VcclxuICAgICAgICAgICAgY29uc3Qgd2l0bmVzc2VzID0gKFxyXG4gICAgICAgICAgICAgICAgdHlwZW9mIHRoaXMuX3RhcmdldC53aXRuZXNzZXMgPT09ICdvYmplY3QnXHJcbiAgICAgICAgICAgICAgICAgICAgPyBPYmplY3Qua2V5cyh0aGlzLl90YXJnZXQud2l0bmVzc2VzKS5sZW5ndGggXHJcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl90YXJnZXQud2l0bmVzc2VzIHx8IDBcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgY29uc3QgY29tbWl0QW5kUmV2ZWFsRmVlID0gdGhpcy5fZmVlczJVbml0YXJ5Q29tbWl0UmV2ZWFsUmV3YXJkKHRoaXMuX2ZlZXMsIHdpdG5lc3NlcylcclxuICAgICAgICAgICAgY29uc3Qgd2l0bmVzc1Jld2FyZCA9IHRoaXMuX2ZlZXMyVW5pdGFyeVJld2FyZCh0aGlzLl9mZWVzLCB3aXRuZXNzZXMpIFxyXG4gICAgICAgICAgICBjb25zdCBjb2xsYXRlcmFsID0gd2l0bmVzc1Jld2FyZCAqIEJpZ0ludCh3aXRuZXNzZXMpXHJcbiAgICAgICAgICAgIGlmIChjb2xsYXRlcmFsID4gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpIFxyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiB0b28gbXVjaCB3aXRuZXNzIGNvbGxhdGVyYWw6ICR7Y29sbGF0ZXJhbC50b1N0cmluZygpfSA+ICR7TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJ9YCk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHdpdG5lc3NSZXdhcmQgPiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUilcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogdG9vIG11Y2ggd2l0bmVzcyByZXdhcmQ6ICR7d2l0bmVzc1Jld2FyZC50b1N0cmluZygpfSA+ICR7TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJ9YCk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGNvbW1pdEFuZFJldmVhbEZlZSA+IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKVxyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiB0b28gbXVjaCBjb21taXQvcmV2ZWFsIGZlZTogJHtjb21taXRBbmRSZXZlYWxGZWUudG9TdHJpbmcoKX0gPiAke051bWJlci5NQVhfU0FGRV9JTlRFR0VSfWApO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgY29sbGF0ZXJhbDogTnVtYmVyKGNvbGxhdGVyYWwpLFxyXG4gICAgICAgICAgICAgICAgY29tbWl0QW5kUmV2ZWFsRmVlOiBOdW1iZXIoY29tbWl0QW5kUmV2ZWFsRmVlKSxcclxuICAgICAgICAgICAgICAgIG1pbkNvbnNlbnN1c1BlcmNlbnRhZ2UsXHJcbiAgICAgICAgICAgICAgICB3aXRuZXNzZXMsXHJcbiAgICAgICAgICAgICAgICB3aXRuZXNzUmV3YXJkOiBOdW1iZXIod2l0bmVzc1Jld2FyZCksXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGhhc2goKTogSGFzaCB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgY29uc3QgX2J5dGVjb2RlID0gdGhpcy5ieXRlY29kZVxyXG4gICAgICAgIGlmIChfYnl0ZWNvZGUgJiYgdGhpcy5kcm9IYXNoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0b0hleFN0cmluZyhzaGEyNTYoQnVmZmVyLmNvbmNhdChbXHJcbiAgICAgICAgICAgICAgICBmcm9tSGV4U3RyaW5nKHRoaXMuZHJvSGFzaCksXHJcbiAgICAgICAgICAgICAgICBzaGEyNTYoX2J5dGVjb2RlKSxcclxuICAgICAgICAgICAgXSkpKSBhcyBIYXNoXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IG1heFdlaWdodCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiBEYXRhUmVxdWVzdFBheWxvYWQuTUFYX1dFSUdIVFxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgcGFyYW1ldGVyaXplZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gISF0aGlzLnRlbXBsYXRlXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBwcmVwYXJlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICB0aGlzLmNvdmVyZWRcclxuICAgICAgICAgICAgICAgICYmIHRoaXMuX2lucHV0cy5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgICAgICAmJiAhIXRoaXMuX3JlcXVlc3RcclxuICAgICAgICAgICAgICAgICYmICEhdGhpcy5fdGFyZ2V0XHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgcmFkQXJncygpOiBEYXRhUmVxdWVzdFRlbXBsYXRlQXJncyB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudGVtcGxhdGUgPyB0aGlzLl90YXJnZXQ/LmFyZ3MgOiB1bmRlZmluZWRcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHJhZEhhc2goKTogSGV4U3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0Py5yYWRIYXNoXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCByZXF1ZXN0KCk6IFJhZG9uUmVxdWVzdCB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVlc3RcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHZhbHVlKCk6IENvaW5zIHtcclxuICAgICAgICBpZiAodGhpcy5fdGFyZ2V0ICYmIHRoaXMuX2ZlZXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIENvaW5zLmZyb21QZWRyb3ModGhpcy5fZmVlczJWYWx1ZSh0aGlzLl9mZWVzLCB0aGlzLl90YXJnZXQud2l0bmVzc2VzIHx8IDApKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBDb2lucy56ZXJvKClcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCB3ZWlnaHQoKTogbnVtYmVyIHtcclxuICAgICAgICBpZiAodGhpcy5fcmVxdWVzdCAmJiB0aGlzLl90YXJnZXQpIHtcclxuICAgICAgICAgICAgY29uc3Qgd2l0bmVzc2VzID0gdHlwZW9mIHRoaXMuX3RhcmdldC53aXRuZXNzZXMgPT09ICdvYmplY3QnID8gT2JqZWN0LmtleXModGhpcy5fdGFyZ2V0LndpdG5lc3NlcykubGVuZ3RoIDogdGhpcy5fdGFyZ2V0LndpdG5lc3NlcyB8fCAwXHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICBEUl9UWF9XRUlHSFRfQUxQSEEgKiAodGhpcy5fcmVxdWVzdC53ZWlnaHQoKSArIDggKyAyICsgOCArIDQgKyA4KSxcclxuICAgICAgICAgICAgICAgICAgICArIHRoaXMuX2lucHV0cy5sZW5ndGggKiBUWF9XRUlHSFRfSU5QVVRfU0laRSBcclxuICAgICAgICAgICAgICAgICAgICArIHRoaXMuX291dHB1dHMubGVuZ3RoICogVFhfV0VJR0hUX09VVFBVVF9TSVpFIFxyXG4gICAgICAgICAgICAgICAgICAgICsgd2l0bmVzc2VzICogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRFJfQ09NTUlUX1RYX1dFSUdIVFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgRFJfUkVWRUFMX1RYX1dFSUdIVCAqIERSX1RYX1dFSUdIVF9CRVRBICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIFRYX1dFSUdIVF9PVVRQVVRfU0laRSAvLyBUT0RPIFYyLjE6IHR5cGVvZiB0aGlzLl90YXJnZXQud2l0bmVzc2VzID09PSAnb2JqZWN0JyA/IFRYX1dFSUdIVF9PVVRQVVRfU0laRSA6IDBcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgKyBNYXRoLm1heChEUl9UQUxMWV9UWF9XRUlHSFQsIHRoaXMuX3RhcmdldD8ubWF4UmVzdWx0U2l6ZSB8fCAwKSAqIERSX1RYX1dFSUdIVF9CRVRBXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIDBcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGNvbnN1bWVVdHhvcyhsZWRnZXI6IElMZWRnZXIsIHJlbG9hZD86IGJvb2xlYW4pOiBQcm9taXNlPGJpZ2ludD4ge1xyXG4gICAgICAgIGlmICghdGhpcy5fdGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBpbnRlcm5hbCBlcnJvcjogbm8gaW4tZmxpZ2h0IHBhcmFtcy5gKVxyXG4gICAgICAgIFxyXG4gICAgICAgIH0gZWxzZSBpZiAoKHRoaXMuX3RhcmdldCBhcyBhbnkpPy5mZWVzIGluc3RhbmNlb2YgQ29pbnMpIHtcclxuICAgICAgICAgICAgdGhpcy5fZmVlcyA9ICh0aGlzLl90YXJnZXQgYXMgYW55KS5mZWVzLnBlZHJvcztcclxuICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmNvbnN1bWVVdHhvcyhsZWRnZXIsIHJlbG9hZClcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5jb3ZlcmVkKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5fdGFyZ2V0LndpdG5lc3Nlcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdGFyZ2V0LndpdG5lc3NlcyA9IE1hdGgubWluKFxyXG4gICAgICAgICAgICAgICAgICAgIERhdGFSZXF1ZXN0UGF5bG9hZC5ERUZBVUxUX1dJVE5FU1NFUywgXHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgbGVkZ2VyLnByb3ZpZGVyLndpdG5lc3NlcygpXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdGFyZ2V0LndpdG5lc3NlcyA8IDMpIHtcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5fdGFyZ2V0LndpdG5lc3Nlc1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBjYW5ub3QgZXN0aW1hdGUgd2l0bmVzc2VzOiBuZXR3b3JrIG5vdCByZWFkeSBmb3Igd2l0bmVzc2luZy5gKSAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLndlaWdodCA+IERhdGFSZXF1ZXN0UGF5bG9hZC5NQVhfV0VJR0hUICogMC44KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVsdGEgPSB0aGlzLndlaWdodCAtIERhdGFSZXF1ZXN0UGF5bG9hZC5NQVhfV0VJR0hUICogMC44XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGFyZ2V0LndpdG5lc3NlcyAtPSBNYXRoLmNlaWwoZGVsdGEgLyAoRFJfQ09NTUlUX1RYX1dFSUdIVCArIERSX1JFVkVBTF9UWF9XRUlHSFQgKiBUWF9XRUlHSFRfT1VUUFVUX1NJWkUpKVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl90YXJnZXQud2l0bmVzc2VzIDwgMykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5fdGFyZ2V0LndpdG5lc3Nlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogY2Fubm90IGVzdGltYXRlIHdpdG5lc3NlczogcmFkb24gcmVxdWVzdCB0b28gY29tcGxleDogJHt0aGlzLndlaWdodH0gd2VpZ2h0IHVuaXRzYClcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgcHJpb3JpdHkgPSAodGhpcy5fdGFyZ2V0IGFzIGFueSk/LmZlZXMgYXMgVHJhbnNhY3Rpb25Qcmlvcml0eSB8fCBUcmFuc2FjdGlvblByaW9yaXR5Lk9wdWxlbnRcclxuICAgICAgICAgICAgbGV0IGVzdGltYXRlZEZlZXMgPSBhd2FpdCB0aGlzLl9lc3RpbWF0ZU5ldHdvcmtGZWVzKGxlZGdlci5wcm92aWRlciwgcHJpb3JpdHkpO1xyXG4gICAgICAgICAgICB3aGlsZSAodGhpcy5fZmVlcyA8IGVzdGltYXRlZEZlZXMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2ZlZXMgPSBlc3RpbWF0ZWRGZWVzXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9vdXRwdXRzID0gW11cclxuICAgICAgICAgICAgICAgIHRoaXMuX2lucHV0cyA9IFtdXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jb3ZlcmVkID0gMG5cclxuICAgICAgICAgICAgICAgIC8vIGNvbnN1bWUgdXR4b3MgYXMgdG8gY292ZXIgZm9yIGVzdGltYXRlZCB2YWx1ZSBhbmQgZXN0aW1hdGVkIGZlZXMgXHJcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX2ZlZXMyVmFsdWUodGhpcy5fZmVlcywgdGhpcy5fdGFyZ2V0LndpdG5lc3NlcylcclxuICAgICAgICAgICAgICAgIGNvbnN0IHV0eG9zID0gYXdhaXQgbGVkZ2VyLnNlbGVjdFV0eG9zKHsgXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IENvaW5zLmZyb21QZWRyb3ModmFsdWUgKyB0aGlzLl9mZWVzIC0gdGhpcy5fY292ZXJlZCksIFxyXG4gICAgICAgICAgICAgICAgICAgIHJlbG9hZCxcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jb3ZlcmVkICs9IHV0eG9zLm1hcCh1dHhvID0+IEJpZ0ludCh1dHhvLnZhbHVlKSkucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBwcmV2ICsgY3VyciwgMG4pXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnB1dHMucHVzaCguLi51dHhvcylcclxuICAgICAgICAgICAgICAgIGxlZGdlci5jb25zdW1lVXR4b3MoLi4udXR4b3MpXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2UgPSB0aGlzLl9jb3ZlcmVkIC0gKHZhbHVlICsgdGhpcy5fZmVlcylcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jaGFuZ2UgPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJlcGFyZU91dHB1dHMoeyB2YWx1ZTogdGhpcy5fY2hhbmdlIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgZXN0aW1hdGVkRmVlcyA9IGF3YWl0IHRoaXMuX2VzdGltYXRlTmV0d29ya0ZlZXMobGVkZ2VyLnByb3ZpZGVyLCBwcmlvcml0eSlcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaW5zdWZmaWNpZW50IGZ1bmRzIC4uLlxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NoYW5nZVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpbnRvUmVjZWlwdCh0YXJnZXQ6IERhdGFSZXF1ZXN0UGFyYW1zKTogYW55IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBkcm9IYXNoOiB0aGlzLmRyb0hhc2gsXHJcbiAgICAgICAgICAgIHJhZEFyZ3M6IHRoaXMucmFkQXJncyxcclxuICAgICAgICAgICAgcmFkSGFzaDogdGhpcy5yYWRIYXNoLFxyXG4gICAgICAgICAgICB3aXRuZXNzZXM6IHRhcmdldC53aXRuZXNzZXMsXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBwcmVwYXJlT3V0cHV0cyhjaGFuZ2U/OiB7IHZhbHVlOiBiaWdpbnQgfSk6IGFueSB7XHJcbiAgICAgICAgaWYgKGNoYW5nZT8udmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5fb3V0cHV0cy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHBraDogdGhpcy5faW5wdXRzWzBdLnNpZ25lcixcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBjaGFuZ2UudmFsdWUsXHJcbiAgICAgICAgICAgICAgICB0aW1lX2xvY2s6IDAsXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZXNldFRhcmdldCh0YXJnZXQ6IERhdGFSZXF1ZXN0UGFyYW1zKTogYW55IHtcclxuICAgICAgICB0aGlzLl9jaGFuZ2UgPSAwblxyXG4gICAgICAgIHRoaXMuX2NvdmVyZWQgPSAwblxyXG4gICAgICAgIHRoaXMuX2ZlZXMgPSAwblxyXG4gICAgICAgIHRoaXMuX2lucHV0cyA9IFtdXHJcbiAgICAgICAgdGhpcy5fb3V0cHV0cyA9IFtdXHJcbiAgICAgICAgdGhpcy5fdGFyZ2V0ID0gdGFyZ2V0XHJcbiAgICAgICAgaWYgKHRoaXMuZHJvU0xBPy5jb2xsYXRlcmFsICYmIHRoaXMuZHJvU0xBLmNvbGxhdGVyYWwgPCBEYXRhUmVxdWVzdFBheWxvYWQuTUlOX0NPTExBVEVSQUwpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IHdpdG5lc3NpbmcgY29sbGF0ZXJhbCBiZWxvdyBtaW5pbXVtOiAke1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJvU0xBLmNvbGxhdGVyYWxcclxuICAgICAgICAgICAgICAgIH0gPCAke1xyXG4gICAgICAgICAgICAgICAgICAgIERhdGFSZXF1ZXN0UGF5bG9hZC5NSU5fQ09MTEFURVJBTFxyXG4gICAgICAgICAgICAgICAgfWBcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMudGVtcGxhdGUpIHtcclxuICAgICAgICAgICAgY29uc3QgYXJncyA9IHRhcmdldD8uYXJnc1xyXG4gICAgICAgICAgICBpZiAoYXJncyA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IG5vIHRlbXBsYXRlIGFyZ3Mgd2VyZSBwYXNzZWQuYClcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgYXJncyA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3JlcXVlc3QgPSB0aGlzLnRlbXBsYXRlLmJ1aWxkUmFkb25SZXF1ZXN0KFthcmdzXSlcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3JlcXVlc3QgPSB0aGlzLnRlbXBsYXRlLmJ1aWxkUmFkb25SZXF1ZXN0KGFyZ3MpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZGVsZXRlIHRoaXMuX3ByaW9yaXRpZXNcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdG9KU09OKGh1bWFuaXplID0gZmFsc2UpOiBhbnkge1xyXG4gICAgICAgIGNvbnN0IGRyb1NMQSA9IHRoaXMuZHJvU0xBICAgICAgICBcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBpbnB1dHM6IHRoaXMuaW5wdXRzXHJcbiAgICAgICAgICAgICAgICAubWFwKHV0eG8gPT4gKHsgb3V0cHV0X3BvaW50ZXI6IHV0eG8ub3V0cHV0X3BvaW50ZXIgfSkpLFxyXG4gICAgICAgICAgICBvdXRwdXRzOiB0aGlzLm91dHB1dHMubWFwKHZ0byA9PiAoeyBcclxuICAgICAgICAgICAgICAgIHBraDogdnRvLnBraCxcclxuICAgICAgICAgICAgICAgIHRpbWVfbG9jazogdnRvLnRpbWVfbG9jayxcclxuICAgICAgICAgICAgICAgIHZhbHVlOiB2dG8udmFsdWUudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICBkcl9vdXRwdXQ6IHtcclxuICAgICAgICAgICAgICAgIC4uLih0aGlzLl9yZXF1ZXN0ID8geyBkYXRhX3JlcXVlc3Q6IHRoaXMuX3JlcXVlc3QudG9KU09OKGh1bWFuaXplKSB9IDoge30pLFxyXG4gICAgICAgICAgICAgICAgY29tbWl0X2FuZF9yZXZlYWxfZmVlOiBkcm9TTEE/LmNvbW1pdEFuZFJldmVhbEZlZSxcclxuICAgICAgICAgICAgICAgIG1pbl9jb25zZW5zdXNfcGVyY2VudGFnZTogZHJvU0xBPy5taW5Db25zZW5zdXNQZXJjZW50YWdlLFxyXG4gICAgICAgICAgICAgICAgd2l0bmVzc2VzOiBkcm9TTEE/LndpdG5lc3NlcyxcclxuICAgICAgICAgICAgICAgIHdpdG5lc3NfcmV3YXJkOiBkcm9TTEE/LndpdG5lc3NSZXdhcmQsXHJcbiAgICAgICAgICAgICAgICBjb2xsYXRlcmFsOiBkcm9TTEE/LmNvbGxhdGVyYWxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0gICBcclxuXHJcbiAgICBwdWJsaWMgdG9Qcm90b2J1ZigpOiBhbnkge1xyXG4gICAgICAgIGlmICh0aGlzLnByZXBhcmVkICYmIHRoaXMuX3RhcmdldCAmJiB0aGlzLl9yZXF1ZXN0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7ICAgIFxyXG4gICAgICAgICAgICAgICAgaW5wdXRzOiB0aGlzLmlucHV0c1xyXG4gICAgICAgICAgICAgICAgICAgIC5tYXAodXR4byA9PiB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2FjdGlvbklkID0gdXR4by5vdXRwdXRfcG9pbnRlci5zcGxpdCgnOicpWzBdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG91dHB1dEluZGV4ID0gcGFyc2VJbnQodXR4by5vdXRwdXRfcG9pbnRlci5zcGxpdCgnOicpWzFdKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0UG9pbnRlcjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uSWQ6IHsgU0hBMjU2OiBBcnJheS5mcm9tKGZyb21IZXhTdHJpbmcodHJhbnNhY3Rpb25JZCkpIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKG91dHB1dEluZGV4ID4gMCA/IHsgb3V0cHV0SW5kZXggfSA6IHt9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIG91dHB1dHM6IHRoaXMub3V0cHV0cy5tYXAodnRvID0+ICh7IFxyXG4gICAgICAgICAgICAgICAgICAgIHBraDogeyBoYXNoOiBBcnJheS5mcm9tKFB1YmxpY0tleUhhc2guZnJvbUJlY2gzMih2dG8ucGtoKS50b0J5dGVzMjAoKSksIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IExvbmcuZnJvbVZhbHVlKHZ0by52YWx1ZSksXHJcbiAgICAgICAgICAgICAgICAgICAgLi4uKHZ0by50aW1lX2xvY2sgPiAwID8geyB0aW1lTG9jazogdnRvLnRpbWVfbG9jayB9IDoge30pLFxyXG4gICAgICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICAgICAgZHJPdXRwdXQ6IHRoaXMuX3RvRHJPdXRwdXRQcm90b2J1ZigpLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB2YWxpZGF0ZVRhcmdldCh0YXJnZXQ/OiBhbnkpOiBEYXRhUmVxdWVzdFBhcmFtcyB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgdGFyZ2V0ID0gdGhpcy5fY2xlYW5UYXJnZXRFeHRyYXModGFyZ2V0KVxyXG4gICAgICAgIGlmICh0YXJnZXQgJiYgT2JqZWN0LmtleXModGFyZ2V0KS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGlmICghKFxyXG4gICAgICAgICAgICAgICAgdGFyZ2V0XHJcbiAgICAgICAgICAgICAgICAgICAgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAhdGFyZ2V0Py5mZWVzIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuZmVlcyBpbnN0YW5jZW9mIENvaW5zICYmICh0YXJnZXQuZmVlcyBhcyBDb2lucykucGVkcm9zID4gMCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IE9iamVjdC52YWx1ZXMoVHJhbnNhY3Rpb25Qcmlvcml0eSkuaW5jbHVkZXModGFyZ2V0LmZlZXMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgJiYgKHRhcmdldD8ud2l0bmVzc2VzIHx8IHRhcmdldD8ud2l0bmVzc2VzID09PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgJiYgKCF0aGlzLnRlbXBsYXRlIHx8IHRhcmdldD8uYXJncylcclxuICAgICAgICAgICAgKSkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBpbnZhbGlkIG9wdGlvbnM6ICR7SlNPTi5zdHJpbmdpZnkodGFyZ2V0KX1gKVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRhcmdldD8ud2l0bmVzc2VzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRhcmdldC53aXRuZXNzZXMgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBleHBsaWNpdCB3aXRuZXNzaW5nIGNvbW1pdHRlZXMgbm90IHlldCBzdXBwb3J0ZWQ6ICR7dGFyZ2V0LndpdG5lc3Nlc31gKVxyXG4gICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgIHRhcmdldC53aXRuZXNzZXMgPSBwYXJzZUludCh0YXJnZXQud2l0bmVzc2VzIGFzIHN0cmluZylcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0IGFzIERhdGFSZXF1ZXN0UGFyYW1zXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX2NsZWFuVGFyZ2V0RXh0cmFzKHRhcmdldD86IGFueSk6IGFueSB7XHJcbiAgICAgICAgaWYgKHRhcmdldCkge1xyXG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxyXG4gICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXModGFyZ2V0KS5maWx0ZXIoKFtrZXksXSkgPT4gW1xyXG4gICAgICAgICAgICAgICAgICAgICdhcmdzJyxcclxuICAgICAgICAgICAgICAgICAgICAnZmVlcycsXHJcbiAgICAgICAgICAgICAgICAgICAgJ21heFJlc3VsdFNpemUnLFxyXG4gICAgICAgICAgICAgICAgICAgICd3aXRuZXNzZXMnLFxyXG4gICAgICAgICAgICAgICAgXS5pbmNsdWRlcyhrZXkpKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBhc3luYyBfZXN0aW1hdGVOZXR3b3JrRmVlcyhwcm92aWRlcjogSUpzb25ScGNQcm92aWRlciwgcHJpb3JpdHkgPSBUcmFuc2FjdGlvblByaW9yaXR5Lk1lZGl1bSk6IFByb21pc2U8YmlnaW50PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9wcmlvcml0aWVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3ByaW9yaXRpZXMgPSBhd2FpdCBwcm92aWRlci5wcmlvcml0aWVzKClcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIEJpZ0ludChNYXRoLmZsb29yKFxyXG4gICAgICAgICAgICB0aGlzLl9wcmlvcml0aWVzW2BkcnRfJHtwcmlvcml0eX1gXS5wcmlvcml0eSAqIChcclxuICAgICAgICAgICAgICAgIHRoaXMuY292ZXJlZCA/IHRoaXMud2VpZ2h0IDogKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMud2VpZ2h0XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZXN0aW1hdGUgd2VpZ2h0IG9mIG9uZSBzaW5nbGUgb3V0cHV0IGluIGNhc2UgdGhlcmUgd2FzIGNoYW5nZSB0byBwYXkgYmFja1xyXG4gICAgICAgICAgICAgICAgICAgICsgVFhfV0VJR0hUX09VVFBVVF9TSVpFIFxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF9mZWVzMlVuaXRhcnlDb21taXRSZXZlYWxSZXdhcmQoZmVlczogYmlnaW50LCB3aXRuZXNzZXM6IG51bWJlcik6IGJpZ2ludCB7XHJcbiAgICAgICAgcmV0dXJuIGZlZXMgLyBCaWdJbnQod2l0bmVzc2VzKSB8fCAxblxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfZmVlczJVbml0YXJ5UmV3YXJkKGZlZXM6IGJpZ2ludCwgd2l0bmVzc2VzOiBudW1iZXIpOiBiaWdpbnQge1xyXG4gICAgICAgIHJldHVybiBCaWdNYXRoLm1heChcclxuICAgICAgICAgICAgZmVlcyxcclxuICAgICAgICAgICAgMW4gKyBEYXRhUmVxdWVzdFBheWxvYWQuTUlOX0NPTExBVEVSQUwgLyBCaWdJbnQod2l0bmVzc2VzKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2ZlZXMyVmFsdWUoZmVlczogYmlnaW50LCB3aXRuZXNzZXM6IG51bWJlcik6IGJpZ2ludCB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgQmlnSW50KHdpdG5lc3NlcykgKiAoXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9mZWVzMlVuaXRhcnlSZXdhcmQoZmVlcywgd2l0bmVzc2VzKVxyXG4gICAgICAgICAgICAgICAgKyAybiAqIHRoaXMuX2ZlZXMyVW5pdGFyeUNvbW1pdFJldmVhbFJld2FyZChmZWVzLCB3aXRuZXNzZXMpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfdG9Eck91dHB1dFByb3RvYnVmKCk6IGFueSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3QpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnRoaXMuZHJvU0xBLFxyXG4gICAgICAgICAgICAgICAgZGF0YVJlcXVlc3Q6IHRoaXMuX3JlcXVlc3QudG9Qcm90b2J1ZigpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payloads.d.ts","sourceRoot":"","sources":["../../../../src/lib/crypto/payloads.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"payloads.d.ts","sourceRoot":"","sources":["../../../../src/lib/crypto/payloads.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,6 @@ class TransactionPayload {
|
|
|
17
17
|
get bytecode() {
|
|
18
18
|
// make toProtobuf return Protobuf's deserialized message
|
|
19
19
|
const obj = this.toProtobuf();
|
|
20
|
-
// console.log("TransactionPayload<Specs>.bytecode() =>", obj)
|
|
21
20
|
if (!obj)
|
|
22
21
|
return undefined;
|
|
23
22
|
const err = this._protoType.verify(obj);
|
|
@@ -81,8 +80,6 @@ class TransactionPayloadMultiSig extends TransactionPayload {
|
|
|
81
80
|
}
|
|
82
81
|
const prepared = this.prepared;
|
|
83
82
|
if (!this.covered) {
|
|
84
|
-
// console.log(ledger.constructor.name, "cacheInfo =>", ledger.pkh, ledger.cacheInfo)
|
|
85
|
-
// console.log(await ledger.getUtxos())
|
|
86
83
|
// consume utxos as to cover this.value, at least
|
|
87
84
|
const utxos = await ledger.selectUtxos({
|
|
88
85
|
value: types_1.Coins.fromPedros(this.value.pedros - this._covered),
|
|
@@ -93,22 +90,16 @@ class TransactionPayloadMultiSig extends TransactionPayload {
|
|
|
93
90
|
ledger.consumeUtxos(...utxos);
|
|
94
91
|
// try to cover fees only if this.value is covered first
|
|
95
92
|
if (this._covered >= this.value.pedros) {
|
|
96
|
-
// console.log(this._inputs)
|
|
97
|
-
// console.log("remaining utxos =>", await ledger.getUtxos())
|
|
98
93
|
if (this._target?.fees instanceof types_1.Coins) {
|
|
99
94
|
this._fees = this._target.fees.pedros;
|
|
100
|
-
// console.log(this._covered, this.value.pedros, this._fees, this._covered < this.value.pedros + this._fees)
|
|
101
95
|
if (this._covered < this.value.pedros + this._fees) {
|
|
102
|
-
// console.log("more utxos required...")
|
|
103
96
|
const extras = await ledger.selectUtxos({
|
|
104
97
|
value: types_1.Coins.fromPedros(this.value.pedros + this._fees - this._covered),
|
|
105
98
|
});
|
|
106
99
|
ledger.consumeUtxos(...extras);
|
|
107
|
-
this._covered += extras.map(utxo => utxo.value).reduce((prev, curr) => prev + curr);
|
|
108
100
|
this._inputs.push(...extras);
|
|
109
101
|
}
|
|
110
102
|
this._change = this._covered - (this.value.pedros + this._fees);
|
|
111
|
-
// console.log(this._change)
|
|
112
103
|
}
|
|
113
104
|
else {
|
|
114
105
|
const priority = this._target?.fees || types_1.TransactionPriority.Opulent;
|
|
@@ -141,8 +132,6 @@ class TransactionPayloadMultiSig extends TransactionPayload {
|
|
|
141
132
|
}
|
|
142
133
|
// prepare outputs, only if value and fees got fully covered for the first time:
|
|
143
134
|
if (this._change >= 0 && !prepared) {
|
|
144
|
-
// console.log('-'.repeat(80))
|
|
145
|
-
// console.log(this._inputs)
|
|
146
135
|
this.prepareOutputs({ value: this._change, pkh: ledger.changePkh });
|
|
147
136
|
}
|
|
148
137
|
return this._change;
|
|
@@ -167,4 +156,4 @@ class TransactionPayloadMultiSig extends TransactionPayload {
|
|
|
167
156
|
}
|
|
168
157
|
}
|
|
169
158
|
exports.TransactionPayloadMultiSig = TransactionPayloadMultiSig;
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bG9hZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NyeXB0by9wYXlsb2Fkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBaUU7QUFDakUsTUFBTSxTQUFTLEdBQUcsaUJBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLG1DQUFtQyxDQUFDLENBQUMsQ0FBQTtBQUdsRixvQ0FBc0M7QUFHdEMsbUNBQWdDO0FBQ2hDLG1DQUFnRjtBQUVoRixNQUFzQixrQkFBa0I7SUFTcEMsWUFBWSxhQUFxQixFQUFFLGFBQXFCO1FBQ3BELElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUNyRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDakQsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUE7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUE7UUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUE7SUFDbkIsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNmLHlEQUF5RDtRQUN6RCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7UUFDN0IsOERBQThEO1FBQzlELElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTyxTQUFTLENBQUE7UUFFMUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDdkMsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNOLE1BQU0sU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ3hCLENBQUM7YUFBTSxDQUFDO1lBQ0osK0NBQStDO1lBQy9DLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQy9D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QyxNQUFvRDtRQUN0RSxJQUFJLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDZixHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUc7Z0JBQ2YsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO2dCQUNuQixTQUFTLEVBQUUsQ0FBQzthQUNmLENBQUMsQ0FBQTtRQUNOLENBQUM7SUFDTCxDQUFDO0lBRU0sV0FBVyxDQUFDLE1BQWE7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUE7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUE7UUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUE7UUFDZixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQTtRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQTtRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQTtRQUNyQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUE7SUFDM0IsQ0FBQztDQVdKO0FBbElELGdFQWtJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgYXMgUHJvdG9UeXBlLCBSb290IGFzIFByb3RvUm9vdCB9IGZyb20gXCJwcm90b2J1ZmpzXCJcclxuY29uc3QgcHJvdG9Sb290ID0gUHJvdG9Sb290LmZyb21KU09OKHJlcXVpcmUoXCIuLi8uLi8uLi93aXRuZXQvd2l0bmV0LnByb3RvLmpzb25cIikpXHJcblxyXG5pbXBvcnQgeyBIYXNoLCBOZXR3b3JrUHJpb3JpdGllcywgVmFsdWVUcmFuc2Zlck91dHB1dCB9IGZyb20gXCIuLi90eXBlc1wiXHJcbmltcG9ydCB7IHRvSGV4U3RyaW5nIH0gZnJvbSBcIi4uL3V0aWxzXCJcclxuXHJcbmltcG9ydCB7IElMZWRnZXIsIElKc29uUnBjUHJvdmlkZXIsIElUcmFuc2FjdGlvblBheWxvYWQsIElUcmFuc2FjdGlvblBheWxvYWRNdWx0aVNpZyB9IGZyb20gXCIuL2ludGVyZmFjZXNcIlxyXG5pbXBvcnQgeyBzaGEyNTYgfSBmcm9tIFwiLi91dGlsc1wiXHJcbmltcG9ydCB7IENvaW5zLCBQdWJsaWNLZXlIYXNoU3RyaW5nLCBUcmFuc2FjdGlvblByaW9yaXR5LCBVdHhvIH0gZnJvbSBcIi4vdHlwZXNcIjtcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUcmFuc2FjdGlvblBheWxvYWQ8U3BlY3M+IGltcGxlbWVudHMgSVRyYW5zYWN0aW9uUGF5bG9hZDxTcGVjcz4ge1xyXG4gXHJcbiAgICBwcm90ZWN0ZWQgX2NoYW5nZTogYmlnaW50O1xyXG4gICAgcHJvdGVjdGVkIF9jb3ZlcmVkOiBiaWdpbnQ7XHJcbiAgICBwcm90ZWN0ZWQgX2ZlZXM6IGJpZ2ludDtcclxuICAgIHByb3RlY3RlZCBfcHJpb3JpdGllcz86IE5ldHdvcmtQcmlvcml0aWVzO1xyXG4gICAgcHJvdGVjdGVkIF9wcm90b1R5cGU6IFByb3RvVHlwZTtcclxuICAgIHByb3RlY3RlZCBfdGFyZ2V0PzogU3BlY3M7XHJcbiAgICBcclxuICAgIGNvbnN0cnVjdG9yKHByb3RvVHlwZU5hbWU6IHN0cmluZywgaW5pdGlhbFRhcmdldD86IFNwZWNzKSB7XHJcbiAgICAgICAgdGhpcy5fcHJvdG9UeXBlID0gcHJvdG9Sb290Lmxvb2t1cFR5cGUocHJvdG9UeXBlTmFtZSlcclxuICAgICAgICB0aGlzLl90YXJnZXQgPSB0aGlzLnZhbGlkYXRlVGFyZ2V0KGluaXRpYWxUYXJnZXQpXHJcbiAgICAgICAgdGhpcy5fY2hhbmdlID0gMG5cclxuICAgICAgICB0aGlzLl9jb3ZlcmVkID0gMG5cclxuICAgICAgICB0aGlzLl9mZWVzID0gMG5cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGJ5dGVjb2RlKCk6IFVpbnQ4QXJyYXkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIC8vIG1ha2UgdG9Qcm90b2J1ZiByZXR1cm4gUHJvdG9idWYncyBkZXNlcmlhbGl6ZWQgbWVzc2FnZVxyXG4gICAgICAgIGNvbnN0IG9iaiA9IHRoaXMudG9Qcm90b2J1ZigpXHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJUcmFuc2FjdGlvblBheWxvYWQ8U3BlY3M+LmJ5dGVjb2RlKCkgPT5cIiwgb2JqKVxyXG4gICAgICAgIGlmICghb2JqKSByZXR1cm4gdW5kZWZpbmVkXHJcblxyXG4gICAgICAgIGNvbnN0IGVyciA9IHRoaXMuX3Byb3RvVHlwZS52ZXJpZnkob2JqKVxyXG4gICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKGVycilcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIlxcbm9iaiA9PlwiLCBKU09OLnN0cmluZ2lmeShvYmopKVxyXG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5fcHJvdG9UeXBlLmZyb21PYmplY3Qob2JqKVxyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIlxcbm1lc3NhZ2UgPT5cIiwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpXHJcbiAgICAgICAgICAgIGNvbnN0IGJ5dGVjb2RlID0gdGhpcy5fcHJvdG9UeXBlLmVuY29kZShtZXNzYWdlKS5maW5pc2goKVxyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIlxcbmJ5dGVjb2RlID0+XCIsIHRvSGV4U3RyaW5nKGJ5dGVjb2RlKSlcclxuICAgICAgICAgICAgcmV0dXJuIGJ5dGVjb2RlXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgY2hhbmdlKCk6IENvaW5zIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fY2hhbmdlID4gMCA/IENvaW5zLmZyb21QZWRyb3ModGhpcy5fY2hhbmdlKSA6IHVuZGVmaW5lZFxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgY292ZXJlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAhIXRoaXMuZmVlc1xyXG4gICAgICAgICAgICAgICAgJiYgdGhpcy5fY292ZXJlZCA+PSB0aGlzLnZhbHVlLnBlZHJvcyArIHRoaXMuZmVlcy5wZWRyb3NcclxuICAgICAgICApXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBmZWVzKCk6IENvaW5zIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZmVlcyA+IDAgPyBDb2lucy5mcm9tUGVkcm9zKHRoaXMuX2ZlZXMpIDogdW5kZWZpbmVkXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBoYXNoKCk6IEhhc2ggfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IF9ieXRlY29kZSA9IHRoaXMuYnl0ZWNvZGVcclxuICAgICAgICBpZiAoX2J5dGVjb2RlIGluc3RhbmNlb2YgVWludDhBcnJheSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdG9IZXhTdHJpbmcoc2hhMjU2KF9ieXRlY29kZSkpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaW50b1JlY2VpcHQodGFyZ2V0OiBTcGVjcyk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgLi4udGFyZ2V0XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFic3RyYWN0IGNvbnN1bWVVdHhvcyhsZWRnZXI6IElMZWRnZXIpOiBQcm9taXNlPGJpZ2ludD47XHJcbiAgICBhYnN0cmFjdCBwcmVwYXJlT3V0cHV0cyhjaGFuZ2U/OiB7IHZhbHVlOiBiaWdpbnQsIHBraDogUHVibGljS2V5SGFzaFN0cmluZyB9LCBwYXJhbXM/OiBhbnkpOiBhbnk7XHJcbiAgICBhYnN0cmFjdCByZXNldFRhcmdldCh0YXJnZXQ6IFNwZWNzKTogYW55O1xyXG4gICAgYWJzdHJhY3QgdG9KU09OKGh1bWFuaXplOiBib29sZWFuKTogYW55O1xyXG4gICAgYWJzdHJhY3QgdG9Qcm90b2J1ZigpOiBhbnk7XHJcbiAgICBhYnN0cmFjdCB2YWxpZGF0ZVRhcmdldCh0YXJnZXQ/OiBhbnkpOiBTcGVjcyB8IHVuZGVmaW5lZDtcclxuXHJcbiAgICBhYnN0cmFjdCBnZXQgb3V0cHV0cygpOiBBcnJheTxWYWx1ZVRyYW5zZmVyT3V0cHV0PjtcclxuICAgIGFic3RyYWN0IGdldCBtYXhXZWlnaHQoKTogbnVtYmVyO1xyXG4gICAgYWJzdHJhY3QgZ2V0IHByZXBhcmVkKCk6IGJvb2xlYW47XHJcbiAgICBhYnN0cmFjdCBnZXQgdmFsdWUoKTogQ29pbnM7XHJcbiAgICBhYnN0cmFjdCBnZXQgd2VpZ2h0KCk6IG51bWJlcjtcclxuXHJcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgX2NsZWFuVGFyZ2V0RXh0cmFzKHBhcmFtcz86IGFueSk6IGFueTtcclxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBfZXN0aW1hdGVOZXR3b3JrRmVlcyhwcm92aWRlcjogSUpzb25ScGNQcm92aWRlciwgcHJpb3JpdHk/OiBUcmFuc2FjdGlvblByaW9yaXR5KTogUHJvbWlzZTxiaWdpbnQ+O1xyXG59XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJhbnNhY3Rpb25QYXlsb2FkTXVsdGlTaWc8U3BlY3M+IFxyXG4gICAgZXh0ZW5kcyBUcmFuc2FjdGlvblBheWxvYWQ8U3BlY3M+XHJcbiAgICBpbXBsZW1lbnRzIElUcmFuc2FjdGlvblBheWxvYWRNdWx0aVNpZzxTcGVjcz5cclxue1xyXG4gICAgcHJvdGVjdGVkIF9pbnB1dHM6IEFycmF5PFV0eG8+XHJcbiAgICBwcm90ZWN0ZWQgX291dHB1dHM6IEFycmF5PFZhbHVlVHJhbnNmZXJPdXRwdXQ+XHJcbiAgICBcclxuICAgIGNvbnN0cnVjdG9yKHByb3RvVHlwZU5hbWU6IHN0cmluZywgaW5pdGlhbFRhcmdldD86IFNwZWNzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvdG9UeXBlTmFtZSwgaW5pdGlhbFRhcmdldClcclxuICAgICAgICB0aGlzLl9pbnB1dHMgPSBbXVxyXG4gICAgICAgIHRoaXMuX291dHB1dHMgPSBbXVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgaW5wdXRzKCk6IEFycmF5PFV0eG8+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faW5wdXRzXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBvdXRwdXRzKCk6IEFycmF5PFZhbHVlVHJhbnNmZXJPdXRwdXQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fb3V0cHV0c1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgcHJlcGFyZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgdGhpcy5faW5wdXRzLmxlbmd0aCA+IDAgXHJcbiAgICAgICAgICAgICAgICAmJiB0aGlzLl9vdXRwdXRzLmxlbmd0aCA+IDBcclxuICAgICAgICApXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGNvbnN1bWVVdHhvcyhsZWRnZXI6IElMZWRnZXIsIHJlbG9hZD86IGJvb2xlYW4pOiBQcm9taXNlPGJpZ2ludD4ge1xyXG4gICAgICAgIGlmICghdGhpcy5fdGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBpbnRlcm5hbCBlcnJvcjogbm8gaW4tZmxpZ2h0IHBhcmFtcy5gKVxyXG4gICAgICAgIH0gXHJcbiAgICAgICAgY29uc3QgcHJlcGFyZWQgPSB0aGlzLnByZXBhcmVkXHJcbiAgICAgICAgaWYgKCF0aGlzLmNvdmVyZWQpIHtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2cobGVkZ2VyLmNvbnN0cnVjdG9yLm5hbWUsIFwiY2FjaGVJbmZvID0+XCIsIGxlZGdlci5wa2gsIGxlZGdlci5jYWNoZUluZm8pXHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGF3YWl0IGxlZGdlci5nZXRVdHhvcygpKVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgLy8gY29uc3VtZSB1dHhvcyBhcyB0byBjb3ZlciB0aGlzLnZhbHVlLCBhdCBsZWFzdFxyXG4gICAgICAgICAgICBjb25zdCB1dHhvcyA9IGF3YWl0IGxlZGdlci5zZWxlY3RVdHhvcyh7IFxyXG4gICAgICAgICAgICAgICAgdmFsdWU6IENvaW5zLmZyb21QZWRyb3ModGhpcy52YWx1ZS5wZWRyb3MgLSB0aGlzLl9jb3ZlcmVkKSwgXHJcbiAgICAgICAgICAgICAgICByZWxvYWQsXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHRoaXMuX2NvdmVyZWQgKz0gdXR4b3MubWFwKHV0eG8gPT4gdXR4by52YWx1ZSkucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBwcmV2ICsgY3VyciwgMG4pXHJcbiAgICAgICAgICAgIHRoaXMuX2lucHV0cy5wdXNoKC4uLnV0eG9zKVxyXG4gICAgICAgICAgICBsZWRnZXIuY29uc3VtZVV0eG9zKC4uLnV0eG9zKVxyXG5cclxuICAgICAgICAgICAgLy8gdHJ5IHRvIGNvdmVyIGZlZXMgb25seSBpZiB0aGlzLnZhbHVlIGlzIGNvdmVyZWQgZmlyc3RcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2NvdmVyZWQgPj0gdGhpcy52YWx1ZS5wZWRyb3MpIHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuX2lucHV0cylcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwicmVtYWluaW5nIHV0eG9zID0+XCIsIGF3YWl0IGxlZGdlci5nZXRVdHhvcygpKVxyXG4gICAgICAgICAgICAgICAgaWYgKCh0aGlzLl90YXJnZXQgYXMgYW55KT8uZmVlcyBpbnN0YW5jZW9mIENvaW5zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZmVlcyA9ICh0aGlzLl90YXJnZXQgYXMgYW55KS5mZWVzLnBlZHJvcztcclxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLl9jb3ZlcmVkLCB0aGlzLnZhbHVlLnBlZHJvcywgdGhpcy5fZmVlcywgdGhpcy5fY292ZXJlZCA8IHRoaXMudmFsdWUucGVkcm9zICsgdGhpcy5fZmVlcylcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY292ZXJlZCA8IHRoaXMudmFsdWUucGVkcm9zICsgdGhpcy5fZmVlcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIm1vcmUgdXR4b3MgcmVxdWlyZWQuLi5cIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXh0cmFzID0gYXdhaXQgbGVkZ2VyLnNlbGVjdFV0eG9zKHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogQ29pbnMuZnJvbVBlZHJvcyh0aGlzLnZhbHVlLnBlZHJvcyArIHRoaXMuX2ZlZXMgIC0gdGhpcy5fY292ZXJlZCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlZGdlci5jb25zdW1lVXR4b3MoLi4uZXh0cmFzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jb3ZlcmVkICs9IGV4dHJhcy5tYXAodXR4byA9PiB1dHhvLnZhbHVlKS5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHByZXYgKyBjdXJyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbnB1dHMucHVzaCguLi5leHRyYXMpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZSA9IHRoaXMuX2NvdmVyZWQgLSAodGhpcy52YWx1ZS5wZWRyb3MgKyB0aGlzLl9mZWVzKVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuX2NoYW5nZSlcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJpb3JpdHkgPSAodGhpcy5fdGFyZ2V0IGFzIGFueSk/LmZlZXMgYXMgVHJhbnNhY3Rpb25Qcmlvcml0eSB8fCBUcmFuc2FjdGlvblByaW9yaXR5Lk9wdWxlbnRcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZXN0aW1hdGVkRmVlcyA9IGF3YWl0IHRoaXMuX2VzdGltYXRlTmV0d29ya0ZlZXMobGVkZ2VyLnByb3ZpZGVyLCBwcmlvcml0eSk7XHJcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRoaXMuX2ZlZXMgPCBlc3RpbWF0ZWRGZWVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZlZXMgPSBlc3RpbWF0ZWRGZWVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX291dHB1dHMgPSBbXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhZGQgbW9yZSB1dHhvcyBvbmx5IGlmIHRoZSBvbmVzIHNlbGVjdGVkIGZvciBjb3ZlcmluZyB0aGUgdmFsdWUgYW5kIHRoZSBlc3RpbWF0ZSBmZWVzIGRvbid0IHN1ZmZpY2U6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jb3ZlcmVkIDwgdGhpcy52YWx1ZS5wZWRyb3MgKyB0aGlzLl9mZWVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBleHRyYXMgPSBhd2FpdCBsZWRnZXIuc2VsZWN0VXR4b3MoeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogQ29pbnMuZnJvbVBlZHJvcyh0aGlzLnZhbHVlLnBlZHJvcyArIHRoaXMuX2ZlZXMgLSB0aGlzLl9jb3ZlcmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZGdlci5jb25zdW1lVXR4b3MoLi4uZXh0cmFzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY292ZXJlZCArPSBleHRyYXMubWFwKHV0eG8gPT4gdXR4by52YWx1ZSkucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBwcmV2ICsgY3VycilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2lucHV0cy5wdXNoKC4uLmV4dHJhcylcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2UgPSB0aGlzLl9jb3ZlcmVkIC0gKHRoaXMudmFsdWUucGVkcm9zICsgdGhpcy5fZmVlcylcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5nZSA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluc3VmZmljaWVudCBmdW5kcyAuLi5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXBhcmVPdXRwdXRzKHsgdmFsdWU6IHRoaXMuX2NoYW5nZSwgcGtoOiBsZWRnZXIuY2hhbmdlUGtoIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpdGVyYXRlIHVudGlsIGFjdHVhbCBmZWVzIG1hdGNoIGVzdGltYXRlZCBmZWVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlc3RpbWF0ZWRGZWVzID0gYXdhaXQgdGhpcy5fZXN0aW1hdGVOZXR3b3JrRmVlcyhsZWRnZXIucHJvdmlkZXIsIHByaW9yaXR5KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHByZXBhcmUgb3V0cHV0cywgb25seSBpZiB2YWx1ZSBhbmQgZmVlcyBnb3QgZnVsbHkgY292ZXJlZCBmb3IgdGhlIGZpcnN0IHRpbWU6XHJcbiAgICAgICAgaWYgKHRoaXMuX2NoYW5nZSA+PSAwICYmICFwcmVwYXJlZCkge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnLScucmVwZWF0KDgwKSlcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5faW5wdXRzKVxyXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVPdXRwdXRzKHsgdmFsdWU6IHRoaXMuX2NoYW5nZSwgcGtoOiBsZWRnZXIuY2hhbmdlUGtoIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLl9jaGFuZ2VcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcHJlcGFyZU91dHB1dHMoY2hhbmdlPzogeyB2YWx1ZTogYmlnaW50LCBwa2g6IFB1YmxpY0tleUhhc2hTdHJpbmcgfSk6IGFueSB7XHJcbiAgICAgICAgaWYgKGNoYW5nZT8udmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5fb3V0cHV0cy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHBraDogY2hhbmdlLnBraCxcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBjaGFuZ2UudmFsdWUsXHJcbiAgICAgICAgICAgICAgICB0aW1lX2xvY2s6IDAsXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZXNldFRhcmdldCh0YXJnZXQ6IFNwZWNzKTogYW55IHtcclxuICAgICAgICB0aGlzLl9jaGFuZ2UgPSAwblxyXG4gICAgICAgIHRoaXMuX2NvdmVyZWQgPSAwblxyXG4gICAgICAgIHRoaXMuX2ZlZXMgPSAwblxyXG4gICAgICAgIHRoaXMuX2lucHV0cyA9IFtdXHJcbiAgICAgICAgdGhpcy5fb3V0cHV0cyA9IFtdXHJcbiAgICAgICAgdGhpcy5fdGFyZ2V0ID0gdGFyZ2V0XHJcbiAgICAgICAgZGVsZXRlIHRoaXMuX3ByaW9yaXRpZXNcclxuICAgIH1cclxuXHJcbiAgICBhYnN0cmFjdCB0b0pTT04oaHVtYW5pemU6IGJvb2xlYW4pOiBhbnk7XHJcbiAgICBhYnN0cmFjdCB0b1Byb3RvYnVmKCk6IGFueTtcclxuICAgIGFic3RyYWN0IHZhbGlkYXRlVGFyZ2V0KHRhcmdldD86IGFueSk6IFNwZWNzIHwgdW5kZWZpbmVkO1xyXG5cclxuICAgIGFic3RyYWN0IGdldCBtYXhXZWlnaHQoKTogbnVtYmVyO1xyXG4gICAgYWJzdHJhY3QgZ2V0IHZhbHVlKCk6IENvaW5zO1xyXG4gICAgYWJzdHJhY3QgZ2V0IHdlaWdodCgpOiBudW1iZXI7XHJcbiAgICBcclxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBfY2xlYW5UYXJnZXRFeHRyYXMocGFyYW1zPzogYW55KTogYW55O1xyXG59XHJcbiJdfQ==
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bG9hZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NyeXB0by9wYXlsb2Fkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBaUU7QUFDakUsTUFBTSxTQUFTLEdBQUcsaUJBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLG1DQUFtQyxDQUFDLENBQUMsQ0FBQTtBQUdsRixvQ0FBc0M7QUFHdEMsbUNBQWdDO0FBQ2hDLG1DQUFnRjtBQUVoRixNQUFzQixrQkFBa0I7SUFTcEMsWUFBWSxhQUFxQixFQUFFLGFBQXFCO1FBQ3BELElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUNyRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDakQsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUE7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUE7UUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUE7SUFDbkIsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNmLHlEQUF5RDtRQUN6RCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7UUFFN0IsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLFNBQVMsQ0FBQTtRQUUxQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN2QyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ04sTUFBTSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDeEIsQ0FBQzthQUFNLENBQUM7WUFDSiwrQ0FBK0M7WUFDL0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDL0MsdURBQXVEO1lBQ3ZE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SUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUE7UUFDZixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQTtRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQTtRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQTtRQUNyQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUE7SUFDM0IsQ0FBQztDQVdKO0FBeEhELGdFQXdIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgYXMgUHJvdG9UeXBlLCBSb290IGFzIFByb3RvUm9vdCB9IGZyb20gXCJwcm90b2J1ZmpzXCJcclxuY29uc3QgcHJvdG9Sb290ID0gUHJvdG9Sb290LmZyb21KU09OKHJlcXVpcmUoXCIuLi8uLi8uLi93aXRuZXQvd2l0bmV0LnByb3RvLmpzb25cIikpXHJcblxyXG5pbXBvcnQgeyBIYXNoLCBOZXR3b3JrUHJpb3JpdGllcywgVmFsdWVUcmFuc2Zlck91dHB1dCB9IGZyb20gXCIuLi90eXBlc1wiXHJcbmltcG9ydCB7IHRvSGV4U3RyaW5nIH0gZnJvbSBcIi4uL3V0aWxzXCJcclxuXHJcbmltcG9ydCB7IElMZWRnZXIsIElKc29uUnBjUHJvdmlkZXIsIElUcmFuc2FjdGlvblBheWxvYWQsIElUcmFuc2FjdGlvblBheWxvYWRNdWx0aVNpZyB9IGZyb20gXCIuL2ludGVyZmFjZXNcIlxyXG5pbXBvcnQgeyBzaGEyNTYgfSBmcm9tIFwiLi91dGlsc1wiXHJcbmltcG9ydCB7IENvaW5zLCBQdWJsaWNLZXlIYXNoU3RyaW5nLCBUcmFuc2FjdGlvblByaW9yaXR5LCBVdHhvIH0gZnJvbSBcIi4vdHlwZXNcIjtcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUcmFuc2FjdGlvblBheWxvYWQ8U3BlY3M+IGltcGxlbWVudHMgSVRyYW5zYWN0aW9uUGF5bG9hZDxTcGVjcz4ge1xyXG4gXHJcbiAgICBwcm90ZWN0ZWQgX2NoYW5nZTogYmlnaW50O1xyXG4gICAgcHJvdGVjdGVkIF9jb3ZlcmVkOiBiaWdpbnQ7XHJcbiAgICBwcm90ZWN0ZWQgX2ZlZXM6IGJpZ2ludDtcclxuICAgIHByb3RlY3RlZCBfcHJpb3JpdGllcz86IE5ldHdvcmtQcmlvcml0aWVzO1xyXG4gICAgcHJvdGVjdGVkIF9wcm90b1R5cGU6IFByb3RvVHlwZTtcclxuICAgIHByb3RlY3RlZCBfdGFyZ2V0PzogU3BlY3M7XHJcbiAgICBcclxuICAgIGNvbnN0cnVjdG9yKHByb3RvVHlwZU5hbWU6IHN0cmluZywgaW5pdGlhbFRhcmdldD86IFNwZWNzKSB7XHJcbiAgICAgICAgdGhpcy5fcHJvdG9UeXBlID0gcHJvdG9Sb290Lmxvb2t1cFR5cGUocHJvdG9UeXBlTmFtZSlcclxuICAgICAgICB0aGlzLl90YXJnZXQgPSB0aGlzLnZhbGlkYXRlVGFyZ2V0KGluaXRpYWxUYXJnZXQpXHJcbiAgICAgICAgdGhpcy5fY2hhbmdlID0gMG5cclxuICAgICAgICB0aGlzLl9jb3ZlcmVkID0gMG5cclxuICAgICAgICB0aGlzLl9mZWVzID0gMG5cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGJ5dGVjb2RlKCk6IFVpbnQ4QXJyYXkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIC8vIG1ha2UgdG9Qcm90b2J1ZiByZXR1cm4gUHJvdG9idWYncyBkZXNlcmlhbGl6ZWQgbWVzc2FnZVxyXG4gICAgICAgIGNvbnN0IG9iaiA9IHRoaXMudG9Qcm90b2J1ZigpXHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKCFvYmopIHJldHVybiB1bmRlZmluZWRcclxuICAgICAgICBcclxuICAgICAgICBjb25zdCBlcnIgPSB0aGlzLl9wcm90b1R5cGUudmVyaWZ5KG9iailcclxuICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihlcnIpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJcXG5vYmogPT5cIiwgSlNPTi5zdHJpbmdpZnkob2JqKSlcclxuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMuX3Byb3RvVHlwZS5mcm9tT2JqZWN0KG9iailcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJcXG5tZXNzYWdlID0+XCIsIEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpKVxyXG4gICAgICAgICAgICBjb25zdCBieXRlY29kZSA9IHRoaXMuX3Byb3RvVHlwZS5lbmNvZGUobWVzc2FnZSkuZmluaXNoKClcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJcXG5ieXRlY29kZSA9PlwiLCB0b0hleFN0cmluZyhieXRlY29kZSkpXHJcbiAgICAgICAgICAgIHJldHVybiBieXRlY29kZVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGNoYW5nZSgpOiBDb2lucyB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NoYW5nZSA+IDAgPyBDb2lucy5mcm9tUGVkcm9zKHRoaXMuX2NoYW5nZSkgOiB1bmRlZmluZWRcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGNvdmVyZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgISF0aGlzLmZlZXNcclxuICAgICAgICAgICAgICAgICYmIHRoaXMuX2NvdmVyZWQgPj0gdGhpcy52YWx1ZS5wZWRyb3MgKyB0aGlzLmZlZXMucGVkcm9zXHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgZmVlcygpOiBDb2lucyB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZlZXMgPiAwID8gQ29pbnMuZnJvbVBlZHJvcyh0aGlzLl9mZWVzKSA6IHVuZGVmaW5lZFxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgaGFzaCgpOiBIYXNoIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCBfYnl0ZWNvZGUgPSB0aGlzLmJ5dGVjb2RlXHJcbiAgICAgICAgaWYgKF9ieXRlY29kZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRvSGV4U3RyaW5nKHNoYTI1NihfYnl0ZWNvZGUpKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGludG9SZWNlaXB0KHRhcmdldDogU3BlY3MpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC4uLnRhcmdldFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhYnN0cmFjdCBjb25zdW1lVXR4b3MobGVkZ2VyOiBJTGVkZ2VyKTogUHJvbWlzZTxiaWdpbnQ+O1xyXG4gICAgYWJzdHJhY3QgcHJlcGFyZU91dHB1dHMoY2hhbmdlPzogeyB2YWx1ZTogYmlnaW50LCBwa2g6IFB1YmxpY0tleUhhc2hTdHJpbmcgfSwgcGFyYW1zPzogYW55KTogYW55O1xyXG4gICAgYWJzdHJhY3QgcmVzZXRUYXJnZXQodGFyZ2V0OiBTcGVjcyk6IGFueTtcclxuICAgIGFic3RyYWN0IHRvSlNPTihodW1hbml6ZTogYm9vbGVhbik6IGFueTtcclxuICAgIGFic3RyYWN0IHRvUHJvdG9idWYoKTogYW55O1xyXG4gICAgYWJzdHJhY3QgdmFsaWRhdGVUYXJnZXQodGFyZ2V0PzogYW55KTogU3BlY3MgfCB1bmRlZmluZWQ7XHJcblxyXG4gICAgYWJzdHJhY3QgZ2V0IG91dHB1dHMoKTogQXJyYXk8VmFsdWVUcmFuc2Zlck91dHB1dD47XHJcbiAgICBhYnN0cmFjdCBnZXQgbWF4V2VpZ2h0KCk6IG51bWJlcjtcclxuICAgIGFic3RyYWN0IGdldCBwcmVwYXJlZCgpOiBib29sZWFuO1xyXG4gICAgYWJzdHJhY3QgZ2V0IHZhbHVlKCk6IENvaW5zO1xyXG4gICAgYWJzdHJhY3QgZ2V0IHdlaWdodCgpOiBudW1iZXI7XHJcblxyXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IF9jbGVhblRhcmdldEV4dHJhcyhwYXJhbXM/OiBhbnkpOiBhbnk7XHJcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgX2VzdGltYXRlTmV0d29ya0ZlZXMocHJvdmlkZXI6IElKc29uUnBjUHJvdmlkZXIsIHByaW9yaXR5PzogVHJhbnNhY3Rpb25Qcmlvcml0eSk6IFByb21pc2U8YmlnaW50PjtcclxufVxyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uUGF5bG9hZE11bHRpU2lnPFNwZWNzPiBcclxuICAgIGV4dGVuZHMgVHJhbnNhY3Rpb25QYXlsb2FkPFNwZWNzPlxyXG4gICAgaW1wbGVtZW50cyBJVHJhbnNhY3Rpb25QYXlsb2FkTXVsdGlTaWc8U3BlY3M+XHJcbntcclxuICAgIHByb3RlY3RlZCBfaW5wdXRzOiBBcnJheTxVdHhvPlxyXG4gICAgcHJvdGVjdGVkIF9vdXRwdXRzOiBBcnJheTxWYWx1ZVRyYW5zZmVyT3V0cHV0PlxyXG4gICAgXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm90b1R5cGVOYW1lOiBzdHJpbmcsIGluaXRpYWxUYXJnZXQ/OiBTcGVjcykge1xyXG4gICAgICAgIHN1cGVyKHByb3RvVHlwZU5hbWUsIGluaXRpYWxUYXJnZXQpXHJcbiAgICAgICAgdGhpcy5faW5wdXRzID0gW11cclxuICAgICAgICB0aGlzLl9vdXRwdXRzID0gW11cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGlucHV0cygpOiBBcnJheTxVdHhvPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lucHV0c1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBBcnJheTxWYWx1ZVRyYW5zZmVyT3V0cHV0PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX291dHB1dHNcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHByZXBhcmVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIHRoaXMuX2lucHV0cy5sZW5ndGggPiAwIFxyXG4gICAgICAgICAgICAgICAgJiYgdGhpcy5fb3V0cHV0cy5sZW5ndGggPiAwXHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBjb25zdW1lVXR4b3MobGVkZ2VyOiBJTGVkZ2VyLCByZWxvYWQ/OiBib29sZWFuKTogUHJvbWlzZTxiaWdpbnQ+IHtcclxuICAgICAgICBpZiAoIXRoaXMuX3RhcmdldCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogaW50ZXJuYWwgZXJyb3I6IG5vIGluLWZsaWdodCBwYXJhbXMuYClcclxuICAgICAgICB9IFxyXG4gICAgICAgIGNvbnN0IHByZXBhcmVkID0gdGhpcy5wcmVwYXJlZFxyXG4gICAgICAgIGlmICghdGhpcy5jb3ZlcmVkKSB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvLyBjb25zdW1lIHV0eG9zIGFzIHRvIGNvdmVyIHRoaXMudmFsdWUsIGF0IGxlYXN0XHJcbiAgICAgICAgICAgIGNvbnN0IHV0eG9zID0gYXdhaXQgbGVkZ2VyLnNlbGVjdFV0eG9zKHsgXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogQ29pbnMuZnJvbVBlZHJvcyh0aGlzLnZhbHVlLnBlZHJvcyAtIHRoaXMuX2NvdmVyZWQpLCBcclxuICAgICAgICAgICAgICAgIHJlbG9hZCxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGhpcy5fY292ZXJlZCArPSB1dHhvcy5tYXAodXR4byA9PiB1dHhvLnZhbHVlKS5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHByZXYgKyBjdXJyLCAwbilcclxuICAgICAgICAgICAgdGhpcy5faW5wdXRzLnB1c2goLi4udXR4b3MpXHJcbiAgICAgICAgICAgIGxlZGdlci5jb25zdW1lVXR4b3MoLi4udXR4b3MpXHJcblxyXG4gICAgICAgICAgICAvLyB0cnkgdG8gY292ZXIgZmVlcyBvbmx5IGlmIHRoaXMudmFsdWUgaXMgY292ZXJlZCBmaXJzdFxyXG4gICAgICAgICAgICBpZiAodGhpcy5fY292ZXJlZCA+PSB0aGlzLnZhbHVlLnBlZHJvcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCh0aGlzLl90YXJnZXQgYXMgYW55KT8uZmVlcyBpbnN0YW5jZW9mIENvaW5zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZmVlcyA9ICh0aGlzLl90YXJnZXQgYXMgYW55KS5mZWVzLnBlZHJvcztcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY292ZXJlZCA8IHRoaXMudmFsdWUucGVkcm9zICsgdGhpcy5fZmVlcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBleHRyYXMgPSBhd2FpdCBsZWRnZXIuc2VsZWN0VXR4b3MoeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBDb2lucy5mcm9tUGVkcm9zKHRoaXMudmFsdWUucGVkcm9zICsgdGhpcy5fZmVlcyAgLSB0aGlzLl9jb3ZlcmVkKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGVkZ2VyLmNvbnN1bWVVdHhvcyguLi5leHRyYXMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2lucHV0cy5wdXNoKC4uLmV4dHJhcylcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlID0gdGhpcy5fY292ZXJlZCAtICh0aGlzLnZhbHVlLnBlZHJvcyArIHRoaXMuX2ZlZXMpXHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByaW9yaXR5ID0gKHRoaXMuX3RhcmdldCBhcyBhbnkpPy5mZWVzIGFzIFRyYW5zYWN0aW9uUHJpb3JpdHkgfHwgVHJhbnNhY3Rpb25Qcmlvcml0eS5PcHVsZW50XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVzdGltYXRlZEZlZXMgPSBhd2FpdCB0aGlzLl9lc3RpbWF0ZU5ldHdvcmtGZWVzKGxlZGdlci5wcm92aWRlciwgcHJpb3JpdHkpO1xyXG4gICAgICAgICAgICAgICAgICAgIHdoaWxlICh0aGlzLl9mZWVzIDwgZXN0aW1hdGVkRmVlcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9mZWVzID0gZXN0aW1hdGVkRmVlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vdXRwdXRzID0gW11cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWRkIG1vcmUgdXR4b3Mgb25seSBpZiB0aGUgb25lcyBzZWxlY3RlZCBmb3IgY292ZXJpbmcgdGhlIHZhbHVlIGFuZCB0aGUgZXN0aW1hdGUgZmVlcyBkb24ndCBzdWZmaWNlOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY292ZXJlZCA8IHRoaXMudmFsdWUucGVkcm9zICsgdGhpcy5fZmVlcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXh0cmFzID0gYXdhaXQgbGVkZ2VyLnNlbGVjdFV0eG9zKHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IENvaW5zLmZyb21QZWRyb3ModGhpcy52YWx1ZS5wZWRyb3MgKyB0aGlzLl9mZWVzIC0gdGhpcy5fY292ZXJlZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWRnZXIuY29uc3VtZVV0eG9zKC4uLmV4dHJhcylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvdmVyZWQgKz0gZXh0cmFzLm1hcCh1dHhvID0+IHV0eG8udmFsdWUpLnJlZHVjZSgocHJldiwgY3VycikgPT4gcHJldiArIGN1cnIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbnB1dHMucHVzaCguLi5leHRyYXMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlID0gdGhpcy5fY292ZXJlZCAtICh0aGlzLnZhbHVlLnBlZHJvcyArIHRoaXMuX2ZlZXMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jaGFuZ2UgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnN1ZmZpY2llbnQgZnVuZHMgLi4uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmVwYXJlT3V0cHV0cyh7IHZhbHVlOiB0aGlzLl9jaGFuZ2UsIHBraDogbGVkZ2VyLmNoYW5nZVBraCB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXRlcmF0ZSB1bnRpbCBhY3R1YWwgZmVlcyBtYXRjaCBlc3RpbWF0ZWQgZmVlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXN0aW1hdGVkRmVlcyA9IGF3YWl0IHRoaXMuX2VzdGltYXRlTmV0d29ya0ZlZXMobGVkZ2VyLnByb3ZpZGVyLCBwcmlvcml0eSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBwcmVwYXJlIG91dHB1dHMsIG9ubHkgaWYgdmFsdWUgYW5kIGZlZXMgZ290IGZ1bGx5IGNvdmVyZWQgZm9yIHRoZSBmaXJzdCB0aW1lOlxyXG4gICAgICAgIGlmICh0aGlzLl9jaGFuZ2UgPj0gMCAmJiAhcHJlcGFyZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlT3V0cHV0cyh7IHZhbHVlOiB0aGlzLl9jaGFuZ2UsIHBraDogbGVkZ2VyLmNoYW5nZVBraCB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5fY2hhbmdlXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHByZXBhcmVPdXRwdXRzKGNoYW5nZT86IHsgdmFsdWU6IGJpZ2ludCwgcGtoOiBQdWJsaWNLZXlIYXNoU3RyaW5nIH0pOiBhbnkge1xyXG4gICAgICAgIGlmIChjaGFuZ2U/LnZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX291dHB1dHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBwa2g6IGNoYW5nZS5wa2gsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogY2hhbmdlLnZhbHVlLFxyXG4gICAgICAgICAgICAgICAgdGltZV9sb2NrOiAwLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVzZXRUYXJnZXQodGFyZ2V0OiBTcGVjcyk6IGFueSB7XHJcbiAgICAgICAgdGhpcy5fY2hhbmdlID0gMG5cclxuICAgICAgICB0aGlzLl9jb3ZlcmVkID0gMG5cclxuICAgICAgICB0aGlzLl9mZWVzID0gMG5cclxuICAgICAgICB0aGlzLl9pbnB1dHMgPSBbXVxyXG4gICAgICAgIHRoaXMuX291dHB1dHMgPSBbXVxyXG4gICAgICAgIHRoaXMuX3RhcmdldCA9IHRhcmdldFxyXG4gICAgICAgIGRlbGV0ZSB0aGlzLl9wcmlvcml0aWVzXHJcbiAgICB9XHJcblxyXG4gICAgYWJzdHJhY3QgdG9KU09OKGh1bWFuaXplOiBib29sZWFuKTogYW55O1xyXG4gICAgYWJzdHJhY3QgdG9Qcm90b2J1ZigpOiBhbnk7XHJcbiAgICBhYnN0cmFjdCB2YWxpZGF0ZVRhcmdldCh0YXJnZXQ/OiBhbnkpOiBTcGVjcyB8IHVuZGVmaW5lZDtcclxuXHJcbiAgICBhYnN0cmFjdCBnZXQgbWF4V2VpZ2h0KCk6IG51bWJlcjtcclxuICAgIGFic3RyYWN0IGdldCB2YWx1ZSgpOiBDb2lucztcclxuICAgIGFic3RyYWN0IGdldCB3ZWlnaHQoKTogbnVtYmVyO1xyXG4gICAgXHJcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgX2NsZWFuVGFyZ2V0RXh0cmFzKHBhcmFtcz86IGFueSk6IGFueTtcclxufVxyXG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Balance, Network, QueryStakesOrder, StakeEntry } from "../types";
|
|
1
|
+
import { Balance, HexString, Network, QueryStakesOrder, StakeEntry } from "../types";
|
|
2
2
|
import { IBIP32, IJsonRpcProvider, ISigner } from "./interfaces";
|
|
3
3
|
import { Coins, KeyedSignature, PublicKey, PublicKeyHashString, Utxo, UtxoCacheInfo, UtxoSelectionStrategy } from "./types";
|
|
4
4
|
export declare class Signer implements ISigner {
|
|
@@ -27,7 +27,14 @@ export declare class Signer implements ISigner {
|
|
|
27
27
|
reload?: boolean;
|
|
28
28
|
strategy?: UtxoSelectionStrategy;
|
|
29
29
|
}): Promise<Array<Utxo>>;
|
|
30
|
+
authorizeEvmAddress(evmAddress: HexString): any;
|
|
30
31
|
getStakeEntryNonce(validator: PublicKeyHashString): Promise<number>;
|
|
31
32
|
signHash(hash: any): KeyedSignature;
|
|
33
|
+
signMessage(text: string): {
|
|
34
|
+
address: string;
|
|
35
|
+
message: string;
|
|
36
|
+
publicKey: HexString;
|
|
37
|
+
signature: HexString;
|
|
38
|
+
};
|
|
32
39
|
}
|
|
33
40
|
//# sourceMappingURL=signer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../../../src/lib/crypto/signer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../../../src/lib/crypto/signer.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACpF,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAChE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,mBAAmB,EAAwB,IAAI,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAGjJ,qBAAa,MAAO,YAAW,OAAO;IAElC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAK;IACjC,OAAO,CAAC,YAAY,CAAU;IAE9B,SAAgB,QAAQ,EAAE,gBAAgB,CAAA;IACnC,QAAQ,EAAE,qBAAqB,CAAA;gBAGlC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,CAAC,EAAE,qBAAqB;IAcpC,IAAW,SAAS,IAAI,aAAa,CAepC;IAED,IAAW,SAAS,IAAI,mBAAmB,CAE1C;IAED,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED,IAAW,GAAG,IAAI,mBAAmB,CAEpC;IAED,IAAW,SAAS,IAAI,SAAS,CAEhC;IAEM,QAAQ,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG;QAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;KAAE;IAqBjF,YAAY,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;IAa1C,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAI9B,aAAa,CAAC,KAAK,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAOzE,SAAS,CAAC,GAAG,CAAC,EAAE,mBAAmB,GAAG,OAAO,GAAG,SAAS;IAInD,QAAQ,CAAC,MAAM,UAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAS9C,WAAW,CAAC,KAAK,CAAC,EAAE;QAC7B,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE,qBAAqB,CAAA;KACnC,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IASjB,mBAAmB,CAAC,UAAU,EAAE,SAAS,GAAG,GAAG;IAWzC,kBAAkB,CAAC,SAAS,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC;IAQzE,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,cAAc;IAkCnC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG;QAC9B,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,SAAS,CAAC;QACrB,SAAS,EAAE,SAAS,CAAA;KACvB;CAUJ"}
|
|
@@ -34,6 +34,8 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.Signer = void 0;
|
|
37
|
+
const ethers = require('ethers');
|
|
38
|
+
const keccak256 = require('keccak256');
|
|
37
39
|
const secp256k1 = require('secp256k1');
|
|
38
40
|
const utils = __importStar(require("../utils"));
|
|
39
41
|
const types_1 = require("./types");
|
|
@@ -114,7 +116,6 @@ class Signer {
|
|
|
114
116
|
return true;
|
|
115
117
|
}
|
|
116
118
|
});
|
|
117
|
-
// console.log("Signer.consumeUtxos: remaining:", utxos)
|
|
118
119
|
return utxos;
|
|
119
120
|
}
|
|
120
121
|
async getBalance() {
|
|
@@ -144,6 +145,16 @@ class Signer {
|
|
|
144
145
|
}
|
|
145
146
|
// ================================================================================================================
|
|
146
147
|
// --- ISigner ----------------------------------------------------------------------------------------------------
|
|
148
|
+
authorizeEvmAddress(evmAddress) {
|
|
149
|
+
const addr = utils.fromHexString(evmAddress);
|
|
150
|
+
const hash = keccak256(Buffer.from(addr));
|
|
151
|
+
if (this.node.privateKey) {
|
|
152
|
+
const signingKey = new ethers.utils.SigningKey(this.node.privateKey);
|
|
153
|
+
const signature = signingKey.signDigest(hash);
|
|
154
|
+
const sig = `0x${signature.r.slice(2)}${signature.s.slice(2)}${signature.v.toString(16)}`;
|
|
155
|
+
return sig;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
147
158
|
async getStakeEntryNonce(validator) {
|
|
148
159
|
return this.provider
|
|
149
160
|
.stakes({ filter: {
|
|
@@ -189,6 +200,16 @@ class Signer {
|
|
|
189
200
|
throw Error(`Signer: invalid BIP32 node: no private key`);
|
|
190
201
|
}
|
|
191
202
|
}
|
|
203
|
+
signMessage(text) {
|
|
204
|
+
const digest = utils.digestMessage(text);
|
|
205
|
+
const keyedSignature = this.signHash(digest);
|
|
206
|
+
return {
|
|
207
|
+
address: this.pkh,
|
|
208
|
+
message: text,
|
|
209
|
+
publicKey: types_1.PublicKey.fromProtobuf(keyedSignature.public_key).toHexString(),
|
|
210
|
+
signature: types_1.RecoverableSignature.fromKeyedSignature(keyedSignature, digest).toHexString(),
|
|
211
|
+
};
|
|
212
|
+
}
|
|
192
213
|
}
|
|
193
214
|
exports.Signer = Signer;
|
|
194
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jcnlwdG8vc2lnbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQTtBQUN0QyxnREFBaUM7QUFJakMsbUNBQTJIO0FBQzNILG1DQUFxQztBQUVyQyxNQUFhLE1BQU07SUFTZixZQUNJLElBQVksRUFDWixRQUEwQixFQUMxQixRQUFnQztRQVQxQixVQUFLLEdBQWdCLEVBQUUsQ0FBQTtRQVc3QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtRQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsSUFBSSw2QkFBcUIsQ0FBQyxPQUFPLENBQUE7UUFDekQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwQixNQUFNLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFBO1FBQ2pFLENBQUM7UUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQTtJQUM3QixDQUFDO0lBRUQsbUhBQW1IO0lBQ25ILG1IQUFtSDtJQUVuSCxJQUFXLFNBQVM7UUFDaEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUE7UUFDekMsSUFBSSxVQUFVLEdBQVcsRUFBRSxDQUFBO1FBQzNCLElBQUksUUFBUSxHQUFXLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQTtRQUM5QyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNsQixJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUM7Z0JBQ3RCLElBQUksSUFBSSxD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QU0sS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLDBCQUEwQixNQUFNLENBQUMsTUFBTSxRQUFRLENBQUMsQ0FBQTtRQUM1RixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzlCLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDbkMsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQTtZQUNyRSxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUE7WUFDaEUsTUFBTSxHQUFHLEdBQUcsU0FBUyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQTtZQUNoRCxPQUFPO2dCQUNILFVBQVUsRUFBRTtvQkFDUixVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVO29CQUNyQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztpQkFDMUM7Z0JBQ0QsU0FBUyxFQUFFO29CQUNQLFNBQVMsRUFBRTt3QkFDUCxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7cUJBQ3ZCO2lCQUNKO2FBQ0osQ0FBQTtRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQTtRQUM3RCxDQUFDO0lBQ0wsQ0FBQztDQUNKO0FBNUtELHdCQTRLQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHNlY3AyNTZrMSA9IHJlcXVpcmUoJ3NlY3AyNTZrMScpXHJcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gXCIuLi91dGlsc1wiXHJcblxyXG5pbXBvcnQgeyBCYWxhbmNlLCBOZXR3b3JrLCBRdWVyeVN0YWtlc09yZGVyLCBTdGFrZUVudHJ5IH0gZnJvbSBcIi4uL3R5cGVzXCJcclxuaW1wb3J0IHsgSUJJUDMyLCBJSnNvblJwY1Byb3ZpZGVyLCBJU2lnbmVyIH0gZnJvbSBcIi4vaW50ZXJmYWNlc1wiXHJcbmltcG9ydCB7IENvaW5zLCBLZXllZFNpZ25hdHVyZSwgUHVibGljS2V5LCBQdWJsaWNLZXlIYXNoU3RyaW5nLCBVdHhvLCBVdHhvQ2FjaGVJbmZvLCBVdHhvU2VsZWN0aW9uU3RyYXRlZ3kgfSBmcm9tIFwiLi90eXBlc1wiXHJcbmltcG9ydCB7IHNlbGVjdFV0eG9zIH0gZnJvbSBcIi4vdXRpbHNcIlxyXG5cclxuZXhwb3J0IGNsYXNzIFNpZ25lciBpbXBsZW1lbnRzIElTaWduZXIge1xyXG4gICAgXHJcbiAgICBwcm90ZWN0ZWQgbm9kZTogSUJJUDMyO1xyXG4gICAgcHJvdGVjdGVkIHV0eG9zOiBBcnJheTxVdHhvPiA9IFtdXHJcbiAgICBwcml2YXRlIF9pbml0aWFsaXplZDogYm9vbGVhbjtcclxuICAgIFxyXG4gICAgcHVibGljIHJlYWRvbmx5IHByb3ZpZGVyOiBJSnNvblJwY1Byb3ZpZGVyXHJcbiAgICBwdWJsaWMgc3RyYXRlZ3k6IFV0eG9TZWxlY3Rpb25TdHJhdGVneVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIG5vZGU6IElCSVAzMiwgXHJcbiAgICAgICAgcHJvdmlkZXI6IElKc29uUnBjUHJvdmlkZXIsIFxyXG4gICAgICAgIHN0cmF0ZWd5PzogVXR4b1NlbGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5ub2RlID0gbm9kZVxyXG4gICAgICAgIHRoaXMucHJvdmlkZXIgPSBwcm92aWRlclxyXG4gICAgICAgIHRoaXMuc3RyYXRlZ3kgPSBzdHJhdGVneSB8fCBVdHhvU2VsZWN0aW9uU3RyYXRlZ3kuU2xpbUZpdFxyXG4gICAgICAgIGlmICghcHJvdmlkZXIubmV0d29yaykge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgU2lnbmVyOiBpbnRlcm5hbCBlcnJvcjogdW5pbnRpYWxpemVkIHByb3ZpZGVyLmApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVkID0gZmFsc2VcclxuICAgIH1cclxuXHJcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAvLyAtLS0gSUxlZGdlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4gICAgcHVibGljIGdldCBjYWNoZUluZm8oKTogVXR4b0NhY2hlSW5mbyB7XHJcbiAgICAgICAgY29uc3Qgbm93ID0gTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMClcclxuICAgICAgICBsZXQgZXhwZW5kYWJsZTogYmlnaW50ID0gMG5cclxuICAgICAgICBsZXQgdGltZWxvY2s6IG51bWJlciA9IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSXHJcbiAgICAgICAgdGhpcy51dHhvcy5tYXAodXR4byA9PiB7XHJcbiAgICAgICAgICAgIGlmICh1dHhvLnRpbWVsb2NrID4gbm93KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodXR4by50aW1lbG9jayA8IHRpbWVsb2NrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGltZWxvY2sgPSB1dHhvLnRpbWVsb2NrXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBleHBlbmRhYmxlICs9IHV0eG8udmFsdWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgaWYgKHRpbWVsb2NrID09PSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikgdGltZWxvY2sgPSAwO1xyXG4gICAgICAgIHJldHVybiB7IGV4cGVuZGFibGUsIHRpbWVsb2NrLCBzaXplOiB0aGlzLnV0eG9zLmxlbmd0aCB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBjaGFuZ2VQa2goKTogUHVibGljS2V5SGFzaFN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGtoXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBuZXR3b3JrKCk6IE5ldHdvcmsge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb3ZpZGVyLm5ldHdvcmsgfHwgXCJtYWlubmV0XCJcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHBraCgpOiBQdWJsaWNLZXlIYXNoU3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wdWJsaWNLZXkuaGFzaCgpLnRvQmVjaDMyKHRoaXMubmV0d29yaylcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHB1YmxpY0tleSgpOiBQdWJsaWNLZXkge1xyXG4gICAgICAgIHJldHVybiBQdWJsaWNLZXkuZnJvbVVpbnQ4QXJyYXkodGhpcy5ub2RlLnB1YmxpY0tleSlcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYWRkVXR4b3MoLi4udXR4b3M6IEFycmF5PFV0eG8+KTogeyBleGNsdWRlZDogQXJyYXk8VXR4bz4sIGluY2x1ZGVkOiBBcnJheTxVdHhvPiB9IHtcclxuICAgICAgICBjb25zdCBleGNsdWRlZDogQXJyYXk8VXR4bz4gPSBbXVxyXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nUG9pbnRlcnMgPSBuZXcgU2V0KHRoaXMudXR4b3MubWFwKGNhY2hlZCA9PiBjYWNoZWQub3V0cHV0X3BvaW50ZXIpKTtcclxuICAgICAgICBjb25zdCBpbmNsdWRlZDogQXJyYXk8VXR4bz4gPSB1dHhvcy5maWx0ZXIodXR4byA9PiB7XHJcbiAgICAgICAgICAgIGlmICh1dHhvLnNpZ25lciA9PT0gdGhpcy5wa2gpIHtcclxuICAgICAgICAgICAgICAgIC8vIGF2b2lkIGFkZGluZyBkdXBsaWNhdGVzXHJcbiAgICAgICAgICAgICAgICBpZiAoIWV4aXN0aW5nUG9pbnRlcnMuaGFzKHV0eG8ub3V0cHV0X3BvaW50ZXIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdQb2ludGVycy5hZGQodXR4by5vdXRwdXRfcG9pbnRlcilcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2VcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGV4Y2x1ZGVkLnB1c2godXR4bylcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy51dHhvcy5wdXNoKC4uLmluY2x1ZGVkKVxyXG4gICAgICAgIHJldHVybiB7IGV4Y2x1ZGVkLCBpbmNsdWRlZCB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNvbnN1bWVVdHhvcyguLi51dHhvczogQXJyYXk8VXR4bz4pOiBBcnJheTxVdHhvPiB7XHJcbiAgICAgICAgdGhpcy51dHhvcyA9IHRoaXMudXR4b3MuZmlsdGVyKGNhY2hlZCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluY29taW5nSW5kZXggPSB1dHhvcy5maW5kSW5kZXgoaW5jb21pbmcgPT4gY2FjaGVkLm91dHB1dF9wb2ludGVyID09PSBpbmNvbWluZy5vdXRwdXRfcG9pbnRlcik7XHJcbiAgICAgICAgICAgIGlmIChpbmNvbWluZ0luZGV4ID49IDApIHtcclxuICAgICAgICAgICAgICAgIHV0eG9zLnNwbGljZShpbmNvbWluZ0luZGV4LCAxKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIlNpZ25lci5jb25zdW1lVXR4b3M6IHJlbWFpbmluZzpcIiwgdXR4b3MpXHJcbiAgICAgICAgcmV0dXJuIHV0eG9zXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldEJhbGFuY2UoKTogUHJvbWlzZTxCYWxhbmNlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIuZ2V0QmFsYW5jZSh0aGlzLnBraClcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0RGVsZWdhdGVlcyhvcmRlcj86IFF1ZXJ5U3Rha2VzT3JkZXIpOiBQcm9taXNlPEFycmF5PFN0YWtlRW50cnk+PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIuc3Rha2VzKHtcclxuICAgICAgICAgICAgZmlsdGVyOiB7IHdpdGhkcmF3ZXI6IHRoaXMucGtoIH0sXHJcbiAgICAgICAgICAgIHBhcmFtczogeyBvcmRlciB9LFxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFNpZ25lcihwa2g/OiBQdWJsaWNLZXlIYXNoU3RyaW5nKTogSVNpZ25lciB8IHVuZGVmaW5lZCB7IFxyXG4gICAgICAgIHJldHVybiAoIXBraCB8fCBwa2ggPT09IHRoaXMucGtoKSA/IHRoaXMgOiB1bmRlZmluZWRcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0VXR4b3MocmVsb2FkID0gZmFsc2UpOiBQcm9taXNlPEFycmF5PFV0eG8+PiB7XHJcbiAgICAgICAgaWYgKHJlbG9hZCB8fCAhdGhpcy5faW5pdGlhbGl6ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZWQgPSB0cnVlXHJcbiAgICAgICAgICAgIHRoaXMudXR4b3MgPSAoYXdhaXQgdGhpcy5wcm92aWRlci5nZXRVdHhvcyh0aGlzLnBraCkpXHJcbiAgICAgICAgICAgICAgICAubWFwKHV0eG8gPT4gKHsgLi4udXR4bywgc2lnbmVyOiB0aGlzLnBraCB9KSlcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudXR4b3NcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgc2VsZWN0VXR4b3Moc3BlY3M/OiB7XHJcbiAgICAgICAgdmFsdWU/OiBDb2lucyxcclxuICAgICAgICByZWxvYWQ/OiBib29sZWFuLFxyXG4gICAgICAgIHN0cmF0ZWd5PzogVXR4b1NlbGVjdGlvblN0cmF0ZWd5XHJcbiAgICB9KTogUHJvbWlzZTxBcnJheTxVdHhvPj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzXHJcbiAgICAgICAgICAgIC5nZXRVdHhvcyhzcGVjcz8ucmVsb2FkKVxyXG4gICAgICAgICAgICAudGhlbih1dHhvcyA9PiBzZWxlY3RVdHhvcyh7IHV0eG9zLCB2YWx1ZTogc3BlY3M/LnZhbHVlLCBzdHJhdGVneTogc3BlY3M/LnN0cmF0ZWd5IHx8IHRoaXMuc3RyYXRlZ3kgfSkpXHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgIC8vIC0tLSBJU2lnbmVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgIFxyXG4gICAgcHVibGljIGFzeW5jIGdldFN0YWtlRW50cnlOb25jZSh2YWxpZGF0b3I6IFB1YmxpY0tleUhhc2hTdHJpbmcpOiBQcm9taXNlPG51bWJlcj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb3ZpZGVyXHJcbiAgICAgICAgICAgIC5zdGFrZXMoeyBmaWx0ZXI6IHtcclxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcixcclxuICAgICAgICAgICAgICAgIHdpdGhkcmF3ZXI6IHRoaXMucGtoXHJcbiAgICAgICAgICAgIH19KS50aGVuKChbZW50cnldKSA9PiBlbnRyeS52YWx1ZS5ub25jZSlcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2lnbkhhc2goaGFzaDogYW55KTogS2V5ZWRTaWduYXR1cmUge1xyXG4gICAgICAgIGxldCBidWZmZXI6IEJ1ZmZlcjtcclxuICAgICAgICBpZiAoaGFzaCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcclxuICAgICAgICAgICAgYnVmZmVyID0gQnVmZmVyLmZyb20oaGFzaClcclxuICAgICAgICB9IGVsc2UgaWYgKGhhc2ggaW5zdGFuY2VvZiBCdWZmZXIpIHtcclxuICAgICAgICAgICAgYnVmZmVyID0gaGFzaFxyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGhhc2ggPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHV0aWxzLmZyb21IZXhTdHJpbmcoaGFzaCkpICAgICAgICAgICBcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogdW5zdXBwb3J0ZWQgaGFzaCB2YWx1ZTogJHtoYXNofWApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci5sZW5ndGggIT09IDMyKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBpbnZhbGlkIGhhc2ggbGVuZ3RoOiAke2J1ZmZlci5sZW5ndGh9ICE9IDMyYClcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubm9kZS5wcml2YXRlS2V5KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IFVpbnQ4QXJyYXkuZnJvbShidWZmZXIpXHJcbiAgICAgICAgICAgIGNvbnN0IHByaXZhdGVLZXkgPSBVaW50OEFycmF5LmZyb20oQnVmZmVyLmZyb20odGhpcy5ub2RlLnByaXZhdGVLZXkpKVxyXG4gICAgICAgICAgICBjb25zdCBzaWduYXR1cmUgPSBzZWNwMjU2azEuZWNkc2FTaWduKG1zZywgcHJpdmF0ZUtleSkuc2lnbmF0dXJlXHJcbiAgICAgICAgICAgIGNvbnN0IGRlciA9IHNlY3AyNTZrMS5zaWduYXR1cmVFeHBvcnQoc2lnbmF0dXJlKVxyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgcHVibGljX2tleToge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbXByZXNzZWQ6IHRoaXMucHVibGljS2V5LmNvbXByZXNzZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgYnl0ZXM6IEFycmF5LmZyb20odGhpcy5wdWJsaWNLZXkuYnl0ZXMpLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHNpZ25hdHVyZToge1xyXG4gICAgICAgICAgICAgICAgICAgIFNlY3AyNTZrMToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXI6IEFycmF5LmZyb20oZGVyKSxcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgU2lnbmVyOiBpbnZhbGlkIEJJUDMyIG5vZGU6IG5vIHByaXZhdGUga2V5YClcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
215
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jcnlwdG8vc2lnbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQTtBQUNoQyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUE7QUFDdEMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0FBRXRDLGdEQUFpQztBQUlqQyxtQ0FBaUo7QUFDakosbUNBQXFDO0FBRXJDLE1BQWEsTUFBTTtJQVNmLFlBQ0ksSUFBWSxFQUNaLFFBQTBCLEVBQzFCLFFBQWdDO1FBVDFCLFVBQUssR0FBZ0IsRUFBRSxDQUFBO1FBVzdCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO1FBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLDZCQUFxQixDQUFDLE9BQU8sQ0FBQTtRQUN6RCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3BCLE1BQU0sS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUE7UUFDakUsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFBO0lBQzdCLENBQUM7SUFFRCxtSEFBbUg7SUFDbkgsbUhBQW1IO0lBRW5ILElBQVcsU0FBUztRQUNoQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQTtRQUN6QyxJQUFJLFVBQVUsR0FBVyxFQUFFLENBQUE7UUFDM0IsSUFBSSxRQUFRLEdBQVcsTUFBTSxDQUFDLGdCQUFnQixDQUFBO1FBQzlDLElBQUksQ0FBQyxLQUFLLENB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b250ZW50IjpbImNvbnN0IGV0aGVycyA9IHJlcXVpcmUoJ2V0aGVycycpXHJcbmNvbnN0IGtlY2NhazI1NiA9IHJlcXVpcmUoJ2tlY2NhazI1NicpXHJcbmNvbnN0IHNlY3AyNTZrMSA9IHJlcXVpcmUoJ3NlY3AyNTZrMScpXHJcblxyXG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi4vdXRpbHNcIlxyXG5cclxuaW1wb3J0IHsgQmFsYW5jZSwgSGV4U3RyaW5nLCBOZXR3b3JrLCBRdWVyeVN0YWtlc09yZGVyLCBTdGFrZUVudHJ5IH0gZnJvbSBcIi4uL3R5cGVzXCJcclxuaW1wb3J0IHsgSUJJUDMyLCBJSnNvblJwY1Byb3ZpZGVyLCBJU2lnbmVyIH0gZnJvbSBcIi4vaW50ZXJmYWNlc1wiXHJcbmltcG9ydCB7IENvaW5zLCBLZXllZFNpZ25hdHVyZSwgUHVibGljS2V5LCBQdWJsaWNLZXlIYXNoU3RyaW5nLCBSZWNvdmVyYWJsZVNpZ25hdHVyZSwgVXR4bywgVXR4b0NhY2hlSW5mbywgVXR4b1NlbGVjdGlvblN0cmF0ZWd5IH0gZnJvbSBcIi4vdHlwZXNcIlxyXG5pbXBvcnQgeyBzZWxlY3RVdHhvcyB9IGZyb20gXCIuL3V0aWxzXCJcclxuXHJcbmV4cG9ydCBjbGFzcyBTaWduZXIgaW1wbGVtZW50cyBJU2lnbmVyIHtcclxuICAgIFxyXG4gICAgcHJvdGVjdGVkIG5vZGU6IElCSVAzMjtcclxuICAgIHByb3RlY3RlZCB1dHhvczogQXJyYXk8VXR4bz4gPSBbXVxyXG4gICAgcHJpdmF0ZSBfaW5pdGlhbGl6ZWQ6IGJvb2xlYW47XHJcbiAgICBcclxuICAgIHB1YmxpYyByZWFkb25seSBwcm92aWRlcjogSUpzb25ScGNQcm92aWRlclxyXG4gICAgcHVibGljIHN0cmF0ZWd5OiBVdHhvU2VsZWN0aW9uU3RyYXRlZ3lcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBub2RlOiBJQklQMzIsIFxyXG4gICAgICAgIHByb3ZpZGVyOiBJSnNvblJwY1Byb3ZpZGVyLCBcclxuICAgICAgICBzdHJhdGVneT86IFV0eG9TZWxlY3Rpb25TdHJhdGVneSxcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMubm9kZSA9IG5vZGVcclxuICAgICAgICB0aGlzLnByb3ZpZGVyID0gcHJvdmlkZXJcclxuICAgICAgICB0aGlzLnN0cmF0ZWd5ID0gc3RyYXRlZ3kgfHwgVXR4b1NlbGVjdGlvblN0cmF0ZWd5LlNsaW1GaXRcclxuICAgICAgICBpZiAoIXByb3ZpZGVyLm5ldHdvcmspIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYFNpZ25lcjogaW50ZXJuYWwgZXJyb3I6IHVuaW50aWFsaXplZCBwcm92aWRlci5gKVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9pbml0aWFsaXplZCA9IGZhbHNlXHJcbiAgICB9XHJcblxyXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgLy8gLS0tIElMZWRnZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuICAgIHB1YmxpYyBnZXQgY2FjaGVJbmZvKCk6IFV0eG9DYWNoZUluZm8ge1xyXG4gICAgICAgIGNvbnN0IG5vdyA9IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApXHJcbiAgICAgICAgbGV0IGV4cGVuZGFibGU6IGJpZ2ludCA9IDBuXHJcbiAgICAgICAgbGV0IHRpbWVsb2NrOiBudW1iZXIgPSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUlxyXG4gICAgICAgIHRoaXMudXR4b3MubWFwKHV0eG8gPT4ge1xyXG4gICAgICAgICAgICBpZiAodXR4by50aW1lbG9jayA+IG5vdykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHV0eG8udGltZWxvY2sgPCB0aW1lbG9jaykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRpbWVsb2NrID0gdXR4by50aW1lbG9ja1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZXhwZW5kYWJsZSArPSB1dHhvLnZhbHVlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIGlmICh0aW1lbG9jayA9PT0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpIHRpbWVsb2NrID0gMDtcclxuICAgICAgICByZXR1cm4geyBleHBlbmRhYmxlLCB0aW1lbG9jaywgc2l6ZTogdGhpcy51dHhvcy5sZW5ndGggfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgY2hhbmdlUGtoKCk6IFB1YmxpY0tleUhhc2hTdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBraFxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgbmV0d29yaygpOiBOZXR3b3JrIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm92aWRlci5uZXR3b3JrIHx8IFwibWFpbm5ldFwiXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBwa2goKTogUHVibGljS2V5SGFzaFN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHVibGljS2V5Lmhhc2goKS50b0JlY2gzMih0aGlzLm5ldHdvcmspXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBwdWJsaWNLZXkoKTogUHVibGljS2V5IHtcclxuICAgICAgICByZXR1cm4gUHVibGljS2V5LmZyb21VaW50OEFycmF5KHRoaXMubm9kZS5wdWJsaWNLZXkpXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFkZFV0eG9zKC4uLnV0eG9zOiBBcnJheTxVdHhvPik6IHsgZXhjbHVkZWQ6IEFycmF5PFV0eG8+LCBpbmNsdWRlZDogQXJyYXk8VXR4bz4gfSB7XHJcbiAgICAgICAgY29uc3QgZXhjbHVkZWQ6IEFycmF5PFV0eG8+ID0gW11cclxuICAgICAgICBjb25zdCBleGlzdGluZ1BvaW50ZXJzID0gbmV3IFNldCh0aGlzLnV0eG9zLm1hcChjYWNoZWQgPT4gY2FjaGVkLm91dHB1dF9wb2ludGVyKSk7XHJcbiAgICAgICAgY29uc3QgaW5jbHVkZWQ6IEFycmF5PFV0eG8+ID0gdXR4b3MuZmlsdGVyKHV0eG8gPT4ge1xyXG4gICAgICAgICAgICBpZiAodXR4by5zaWduZXIgPT09IHRoaXMucGtoKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBhdm9pZCBhZGRpbmcgZHVwbGljYXRlc1xyXG4gICAgICAgICAgICAgICAgaWYgKCFleGlzdGluZ1BvaW50ZXJzLmhhcyh1dHhvLm91dHB1dF9wb2ludGVyKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nUG9pbnRlcnMuYWRkKHV0eG8ub3V0cHV0X3BvaW50ZXIpXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWVcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBleGNsdWRlZC5wdXNoKHV0eG8pXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMudXR4b3MucHVzaCguLi5pbmNsdWRlZClcclxuICAgICAgICByZXR1cm4geyBleGNsdWRlZCwgaW5jbHVkZWQgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjb25zdW1lVXR4b3MoLi4udXR4b3M6IEFycmF5PFV0eG8+KTogQXJyYXk8VXR4bz4ge1xyXG4gICAgICAgIHRoaXMudXR4b3MgPSB0aGlzLnV0eG9zLmZpbHRlcihjYWNoZWQgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbmNvbWluZ0luZGV4ID0gdXR4b3MuZmluZEluZGV4KGluY29taW5nID0+IGNhY2hlZC5vdXRwdXRfcG9pbnRlciA9PT0gaW5jb21pbmcub3V0cHV0X3BvaW50ZXIpO1xyXG4gICAgICAgICAgICBpZiAoaW5jb21pbmdJbmRleCA+PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB1dHhvcy5zcGxpY2UoaW5jb21pbmdJbmRleCwgMSlcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgcmV0dXJuIHV0eG9zXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldEJhbGFuY2UoKTogUHJvbWlzZTxCYWxhbmNlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIuZ2V0QmFsYW5jZSh0aGlzLnBraClcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0RGVsZWdhdGVlcyhvcmRlcj86IFF1ZXJ5U3Rha2VzT3JkZXIpOiBQcm9taXNlPEFycmF5PFN0YWtlRW50cnk+PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIuc3Rha2VzKHtcclxuICAgICAgICAgICAgZmlsdGVyOiB7IHdpdGhkcmF3ZXI6IHRoaXMucGtoIH0sXHJcbiAgICAgICAgICAgIHBhcmFtczogeyBvcmRlciB9LFxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFNpZ25lcihwa2g/OiBQdWJsaWNLZXlIYXNoU3RyaW5nKTogSVNpZ25lciB8IHVuZGVmaW5lZCB7IFxyXG4gICAgICAgIHJldHVybiAoIXBraCB8fCBwa2ggPT09IHRoaXMucGtoKSA/IHRoaXMgOiB1bmRlZmluZWRcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0VXR4b3MocmVsb2FkID0gZmFsc2UpOiBQcm9taXNlPEFycmF5PFV0eG8+PiB7XHJcbiAgICAgICAgaWYgKHJlbG9hZCB8fCAhdGhpcy5faW5pdGlhbGl6ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZWQgPSB0cnVlXHJcbiAgICAgICAgICAgIHRoaXMudXR4b3MgPSAoYXdhaXQgdGhpcy5wcm92aWRlci5nZXRVdHhvcyh0aGlzLnBraCkpXHJcbiAgICAgICAgICAgICAgICAubWFwKHV0eG8gPT4gKHsgLi4udXR4bywgc2lnbmVyOiB0aGlzLnBraCB9KSlcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudXR4b3NcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgc2VsZWN0VXR4b3Moc3BlY3M/OiB7XHJcbiAgICAgICAgdmFsdWU/OiBDb2lucyxcclxuICAgICAgICByZWxvYWQ/OiBib29sZWFuLFxyXG4gICAgICAgIHN0cmF0ZWd5PzogVXR4b1NlbGVjdGlvblN0cmF0ZWd5XHJcbiAgICB9KTogUHJvbWlzZTxBcnJheTxVdHhvPj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzXHJcbiAgICAgICAgICAgIC5nZXRVdHhvcyhzcGVjcz8ucmVsb2FkKVxyXG4gICAgICAgICAgICAudGhlbih1dHhvcyA9PiBzZWxlY3RVdHhvcyh7IHV0eG9zLCB2YWx1ZTogc3BlY3M/LnZhbHVlLCBzdHJhdGVneTogc3BlY3M/LnN0cmF0ZWd5IHx8IHRoaXMuc3RyYXRlZ3kgfSkpXHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgIC8vIC0tLSBJU2lnbmVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiAgICBwdWJsaWMgYXV0aG9yaXplRXZtQWRkcmVzcyhldm1BZGRyZXNzOiBIZXhTdHJpbmcpOiBhbnkge1xyXG4gICAgICAgIGNvbnN0IGFkZHIgPSB1dGlscy5mcm9tSGV4U3RyaW5nKGV2bUFkZHJlc3MpXHJcbiAgICAgICAgY29uc3QgaGFzaCA9IGtlY2NhazI1NihCdWZmZXIuZnJvbShhZGRyKSlcclxuICAgICAgICBpZiAodGhpcy5ub2RlLnByaXZhdGVLZXkpIHtcclxuICAgICAgICAgICAgY29uc3Qgc2lnbmluZ0tleSA9IG5ldyBldGhlcnMudXRpbHMuU2lnbmluZ0tleSh0aGlzLm5vZGUucHJpdmF0ZUtleSlcclxuICAgICAgICAgICAgY29uc3Qgc2lnbmF0dXJlID0gc2lnbmluZ0tleS5zaWduRGlnZXN0KGhhc2gpXHJcbiAgICAgICAgICAgIGNvbnN0IHNpZyA9IGAweCR7c2lnbmF0dXJlLnIuc2xpY2UoMil9JHtzaWduYXR1cmUucy5zbGljZSgyKX0ke3NpZ25hdHVyZS52LnRvU3RyaW5nKDE2KX1gXHJcbiAgICAgICAgICAgIHJldHVybiBzaWdcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHB1YmxpYyBhc3luYyBnZXRTdGFrZUVudHJ5Tm9uY2UodmFsaWRhdG9yOiBQdWJsaWNLZXlIYXNoU3RyaW5nKTogUHJvbWlzZTxudW1iZXI+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm92aWRlclxyXG4gICAgICAgICAgICAuc3Rha2VzKHsgZmlsdGVyOiB7XHJcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3IsXHJcbiAgICAgICAgICAgICAgICB3aXRoZHJhd2VyOiB0aGlzLnBraFxyXG4gICAgICAgICAgICB9fSkudGhlbigoW2VudHJ5XSkgPT4gZW50cnkudmFsdWUubm9uY2UpXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNpZ25IYXNoKGhhc2g6IGFueSk6IEtleWVkU2lnbmF0dXJlIHtcclxuICAgICAgICBsZXQgYnVmZmVyOiBCdWZmZXI7XHJcbiAgICAgICAgaWYgKGhhc2ggaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XHJcbiAgICAgICAgICAgIGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGhhc2gpXHJcbiAgICAgICAgfSBlbHNlIGlmIChoYXNoIGluc3RhbmNlb2YgQnVmZmVyKSB7XHJcbiAgICAgICAgICAgIGJ1ZmZlciA9IGhhc2hcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBoYXNoID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICBidWZmZXIgPSBCdWZmZXIuZnJvbSh1dGlscy5mcm9tSGV4U3RyaW5nKGhhc2gpKSAgICAgICAgICAgXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IHVuc3VwcG9ydGVkIGhhc2ggdmFsdWU6ICR7aGFzaH1gKVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXIubGVuZ3RoICE9PSAzMikge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogaW52YWxpZCBoYXNoIGxlbmd0aDogJHtidWZmZXIubGVuZ3RofSAhPSAzMmApXHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLm5vZGUucHJpdmF0ZUtleSkge1xyXG4gICAgICAgICAgICBjb25zdCBtc2cgPSBVaW50OEFycmF5LmZyb20oYnVmZmVyKVxyXG4gICAgICAgICAgICBjb25zdCBwcml2YXRlS2V5ID0gVWludDhBcnJheS5mcm9tKEJ1ZmZlci5mcm9tKHRoaXMubm9kZS5wcml2YXRlS2V5KSlcclxuICAgICAgICAgICAgY29uc3Qgc2lnbmF0dXJlID0gc2VjcDI1NmsxLmVjZHNhU2lnbihtc2csIHByaXZhdGVLZXkpLnNpZ25hdHVyZVxyXG4gICAgICAgICAgICBjb25zdCBkZXIgPSBzZWNwMjU2azEuc2lnbmF0dXJlRXhwb3J0KHNpZ25hdHVyZSlcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHB1YmxpY19rZXk6IHtcclxuICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2VkOiB0aGlzLnB1YmxpY0tleS5jb21wcmVzc2VkLFxyXG4gICAgICAgICAgICAgICAgICAgIGJ5dGVzOiBBcnJheS5mcm9tKHRoaXMucHVibGljS2V5LmJ5dGVzKSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzaWduYXR1cmU6IHtcclxuICAgICAgICAgICAgICAgICAgICBTZWNwMjU2azE6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVyOiBBcnJheS5mcm9tKGRlciksXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYFNpZ25lcjogaW52YWxpZCBCSVAzMiBub2RlOiBubyBwcml2YXRlIGtleWApXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzaWduTWVzc2FnZSh0ZXh0OiBzdHJpbmcpOiB7XHJcbiAgICAgICAgYWRkcmVzczogc3RyaW5nLFxyXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZyxcclxuICAgICAgICBwdWJsaWNLZXk6IEhleFN0cmluZyxcclxuICAgICAgICBzaWduYXR1cmU6IEhleFN0cmluZ1xyXG4gICAgfSB7XHJcbiAgICAgICAgY29uc3QgZGlnZXN0ID0gdXRpbHMuZGlnZXN0TWVzc2FnZSh0ZXh0KVxyXG4gICAgICAgIGNvbnN0IGtleWVkU2lnbmF0dXJlID0gdGhpcy5zaWduSGFzaChkaWdlc3QpXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgYWRkcmVzczogdGhpcy5wa2gsXHJcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRleHQsXHJcbiAgICAgICAgICAgIHB1YmxpY0tleTogUHVibGljS2V5LmZyb21Qcm90b2J1ZihrZXllZFNpZ25hdHVyZS5wdWJsaWNfa2V5KS50b0hleFN0cmluZygpLFxyXG4gICAgICAgICAgICBzaWduYXR1cmU6IFJlY292ZXJhYmxlU2lnbmF0dXJlLmZyb21LZXllZFNpZ25hdHVyZShrZXllZFNpZ25hdHVyZSwgZGlnZXN0KS50b0hleFN0cmluZygpLFxyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==
|
|
@@ -5,7 +5,6 @@ import { TransmitterMultiSig } from "../transmitters";
|
|
|
5
5
|
import { PublicKeyHashString } from "../types";
|
|
6
6
|
export { DataRequestParams } from "../payloads/DataRequestPayload";
|
|
7
7
|
export declare class DataRequests extends TransmitterMultiSig<DataRequestParams, DataRequestPayload> {
|
|
8
|
-
static COLLATERAL_RATIO: number;
|
|
9
8
|
static MAX_WEIGHT: number;
|
|
10
9
|
static from(ledger: ILedger, artifact: RadonRequest | RadonTemplate): DataRequests;
|
|
11
10
|
constructor(artifact: RadonRequest | RadonTemplate, ledger: ILedger, changePkh?: PublicKeyHashString);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataRequests.d.ts","sourceRoot":"","sources":["../../../../../src/lib/crypto/transmitters/DataRequests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEzD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AACtF,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAE9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAElE,qBAAa,YAAa,SAAQ,mBAAmB,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;IAExF,OAAc,
|
|
1
|
+
{"version":3,"file":"DataRequests.d.ts","sourceRoot":"","sources":["../../../../../src/lib/crypto/transmitters/DataRequests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEzD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AACtF,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAE9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAElE,qBAAa,YAAa,SAAQ,mBAAmB,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;IAExF,OAAc,UAAU,SAAiC;WAE3C,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,GAAG,aAAa,GAAI,YAAY;gBAI7E,QAAQ,EAAE,YAAY,GAAG,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,mBAAmB;IAIrG,IAAW,OAAO,IAAI,YAAY,GAAG,SAAS,CAE7C;IAED,IAAW,QAAQ,IAAI,aAAa,GAAG,SAAS,CAE/C;CACJ"}
|
|
@@ -18,6 +18,5 @@ class DataRequests extends transmitters_1.TransmitterMultiSig {
|
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
exports.DataRequests = DataRequests;
|
|
21
|
-
DataRequests.COLLATERAL_RATIO = DataRequestPayload_1.DataRequestPayload.COLLATERAL_RATIO;
|
|
22
21
|
DataRequests.MAX_WEIGHT = DataRequestPayload_1.DataRequestPayload.MAX_WEIGHT;
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YVJlcXVlc3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jcnlwdG8vdHJhbnNtaXR0ZXJzL0RhdGFSZXF1ZXN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSx1RUFBc0Y7QUFFdEYsa0RBQXFEO0FBS3JELE1BQWEsWUFBYSxTQUFRLGtDQUEwRDtJQUlqRixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQWUsRUFBRSxRQUFzQztRQUN0RSxPQUFPLElBQUksWUFBWSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBRUQsWUFBYSxRQUFzQyxFQUFFLE1BQWUsRUFBRSxTQUErQjtRQUNqRyxLQUFLLENBQUMsZUFBZSxFQUFFLElBQUksdUNBQWtCLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQ3BHLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFBO0lBQ2hDLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFBO0lBQ2pDLENBQUM7O0FBbEJMLG9DQW1CQztBQWpCaUIsdUJBQVUsR0FBRyx1Q0FBa0IsQ0FBQyxVQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSYWRvblJlcXVlc3QsIFJhZG9uVGVtcGxhdGUgfSBmcm9tIFwiLi4vLi4vcmFkb25cIlxyXG5cclxuaW1wb3J0IHsgRGF0YVJlcXVlc3RQYXlsb2FkLCBEYXRhUmVxdWVzdFBhcmFtcyB9IGZyb20gXCIuLi9wYXlsb2Fkcy9EYXRhUmVxdWVzdFBheWxvYWRcIlxyXG5pbXBvcnQgeyBJTGVkZ2VyIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIlxyXG5pbXBvcnQgeyBUcmFuc21pdHRlck11bHRpU2lnIH0gZnJvbSBcIi4uL3RyYW5zbWl0dGVyc1wiXHJcbmltcG9ydCB7IFB1YmxpY0tleUhhc2hTdHJpbmcgfSBmcm9tIFwiLi4vdHlwZXNcIlxyXG5cclxuZXhwb3J0IHsgRGF0YVJlcXVlc3RQYXJhbXMgfSBmcm9tIFwiLi4vcGF5bG9hZHMvRGF0YVJlcXVlc3RQYXlsb2FkXCJcclxuXHJcbmV4cG9ydCBjbGFzcyBEYXRhUmVxdWVzdHMgZXh0ZW5kcyBUcmFuc21pdHRlck11bHRpU2lnPERhdGFSZXF1ZXN0UGFyYW1zLCBEYXRhUmVxdWVzdFBheWxvYWQ+IHtcclxuICAgIFxyXG4gICAgcHVibGljIHN0YXRpYyBNQVhfV0VJR0hUID0gRGF0YVJlcXVlc3RQYXlsb2FkLk1BWF9XRUlHSFQ7XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBmcm9tKGxlZGdlcjogSUxlZGdlciwgYXJ0aWZhY3Q6IFJhZG9uUmVxdWVzdCB8IFJhZG9uVGVtcGxhdGUpIDogRGF0YVJlcXVlc3RzIHtcclxuICAgICAgICByZXR1cm4gbmV3IERhdGFSZXF1ZXN0cyhhcnRpZmFjdCwgbGVkZ2VyKVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yIChhcnRpZmFjdDogUmFkb25SZXF1ZXN0IHwgUmFkb25UZW1wbGF0ZSwgbGVkZ2VyOiBJTGVkZ2VyLCBjaGFuZ2VQa2g/OiBQdWJsaWNLZXlIYXNoU3RyaW5nKSB7XHJcbiAgICAgICAgc3VwZXIoXCJEUlRyYW5zYWN0aW9uXCIsIG5ldyBEYXRhUmVxdWVzdFBheWxvYWQoXCJEUlRyYW5zYWN0aW9uQm9keVwiLCBhcnRpZmFjdCksIGxlZGdlciwgY2hhbmdlUGtoKVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgcmVxdWVzdCgpOiBSYWRvblJlcXVlc3QgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9wYXlsb2FkLnJlcXVlc3RcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHRlbXBsYXRlKCk6IFJhZG9uVGVtcGxhdGUgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9wYXlsb2FkLnRlbXBsYXRlXHJcbiAgICB9XHJcbn1cclxuIl19
|