@witnet/sdk 1.0.4 → 1.0.5
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/.env_witnet +6 -6
- package/LICENSE +21 -21
- package/README.md +103 -103
- package/dist/package.json +3 -4
- package/dist/src/bin/helpers.js +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/lib/crypto/account.d.ts +3 -1
- package/dist/src/lib/crypto/account.d.ts.map +1 -1
- package/dist/src/lib/crypto/account.js +7 -1
- package/dist/src/lib/crypto/coinbase.js +1 -1
- package/dist/src/lib/crypto/index.js +1 -1
- package/dist/src/lib/crypto/interfaces.d.ts +2 -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.js +1 -1
- package/dist/src/lib/crypto/payloads/StakePayload.js +1 -1
- package/dist/src/lib/crypto/payloads/UnstakePayload.js +1 -1
- package/dist/src/lib/crypto/payloads/ValueTransferPayload.js +1 -1
- package/dist/src/lib/crypto/payloads.d.ts.map +1 -1
- package/dist/src/lib/crypto/payloads.js +12 -1
- package/dist/src/lib/crypto/signer.d.ts +1 -0
- package/dist/src/lib/crypto/signer.d.ts.map +1 -1
- package/dist/src/lib/crypto/signer.js +18 -1
- package/dist/src/lib/crypto/transmitters/DataRequests.js +1 -1
- package/dist/src/lib/crypto/transmitters/StakeDeposits.js +1 -1
- package/dist/src/lib/crypto/transmitters/StakeWithdrawals.js +1 -1
- package/dist/src/lib/crypto/transmitters/ValueTransfers.js +1 -1
- package/dist/src/lib/crypto/transmitters.js +4 -4
- package/dist/src/lib/crypto/types.d.ts.map +1 -1
- package/dist/src/lib/crypto/types.js +2 -1
- package/dist/src/lib/crypto/utils.js +1 -1
- package/dist/src/lib/crypto/wallet.d.ts +3 -1
- package/dist/src/lib/crypto/wallet.d.ts.map +1 -1
- package/dist/src/lib/crypto/wallet.js +10 -1
- package/dist/src/lib/index.js +1 -1
- package/dist/src/lib/radon/ccdr/eth.js +1 -1
- package/dist/src/lib/radon/ccdr/index.js +1 -1
- package/dist/src/lib/radon/ccdr/wit.js +1 -1
- package/dist/src/lib/radon/filters.js +1 -1
- package/dist/src/lib/radon/index.js +1 -1
- package/dist/src/lib/radon/reducers.js +1 -1
- package/dist/src/lib/radon/types.js +1 -1
- package/dist/src/lib/radon/utils.js +1 -1
- package/dist/src/lib/rpc/index.js +1 -1
- package/dist/src/lib/rpc/nodes.js +1 -1
- package/dist/src/lib/rpc/provider.js +1 -1
- package/dist/src/lib/rpc/types.d.ts +6 -4
- package/dist/src/lib/rpc/types.d.ts.map +1 -1
- package/dist/src/lib/rpc/types.js +1 -1
- package/dist/src/lib/types.d.ts +0 -1
- package/dist/src/lib/types.d.ts.map +1 -1
- package/dist/src/lib/types.js +1 -1
- package/dist/src/lib/utils.js +1 -1
- package/dist/witnet/assets/index.js +1 -1
- package/dist/witnet/assets/modals/index.js +1 -1
- package/dist/witnet/assets/modals/web3/eth.js +1 -1
- package/dist/witnet/assets/modals/web3/ipfs.js +1 -1
- package/dist/witnet/assets/modals/web3/wit.js +1 -1
- package/dist/witnet/assets/requests.js +1 -1
- package/package.json +3 -4
- package/src/bin/cli/history.js +31 -31
- package/src/bin/cli/inspect.js +405 -405
- package/src/bin/cli/network.js +594 -594
- package/src/bin/cli/nodes.js +364 -364
- package/src/bin/cli/radon.js +817 -815
- package/src/bin/cli/wallet.js +1121 -1117
- package/src/bin/helpers.js +840 -840
- package/src/bin/postinstall.js +9 -9
- package/src/bin/toolkit.js +295 -295
- package/witnet/assets/_index.js +8 -8
- package/witnet/assets/_requests.js +25 -25
- package/witnet/assets/_sources.js +36 -36
- package/witnet/assets/_templates.js +36 -36
- package/witnet/assets/index.js +4 -4
- package/witnet/assets/modals/index.js +9 -9
- package/witnet/assets/modals/web3/eth.js +29 -29
- package/witnet/assets/modals/web3/ipfs.js +19 -19
- package/witnet/assets/modals/web3/wit.js +21 -21
- package/witnet/assets/requests.js +95 -95
- package/dist/bin/helpers.d.ts +0 -88
- package/dist/bin/helpers.d.ts.map +0 -1
- package/dist/bin/helpers.js +0 -866
- package/dist/index.d.ts +0 -4
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -42
- package/dist/lib/crypto/account.d.ts +0 -18
- package/dist/lib/crypto/account.d.ts.map +0 -1
- package/dist/lib/crypto/account.js +0 -152
- package/dist/lib/crypto/coinbase.d.ts +0 -9
- package/dist/lib/crypto/coinbase.d.ts.map +0 -1
- package/dist/lib/crypto/coinbase.js +0 -39
- package/dist/lib/crypto/index.d.ts +0 -7
- package/dist/lib/crypto/index.d.ts.map +0 -1
- package/dist/lib/crypto/index.js +0 -28
- package/dist/lib/crypto/interfaces.d.ts +0 -80
- package/dist/lib/crypto/interfaces.d.ts.map +0 -1
- package/dist/lib/crypto/interfaces.js +0 -3
- package/dist/lib/crypto/payloads/DataRequestPayload.d.ts +0 -47
- package/dist/lib/crypto/payloads/DataRequestPayload.d.ts.map +0 -1
- package/dist/lib/crypto/payloads/DataRequestPayload.js +0 -384
- package/dist/lib/crypto/payloads/StakePayload.d.ts +0 -27
- package/dist/lib/crypto/payloads/StakePayload.d.ts.map +0 -1
- package/dist/lib/crypto/payloads/StakePayload.js +0 -184
- package/dist/lib/crypto/payloads/UnstakePayload.d.ts +0 -35
- package/dist/lib/crypto/payloads/UnstakePayload.d.ts.map +0 -1
- package/dist/lib/crypto/payloads/UnstakePayload.js +0 -244
- package/dist/lib/crypto/payloads/ValueTransferPayload.d.ts +0 -24
- package/dist/lib/crypto/payloads/ValueTransferPayload.d.ts.map +0 -1
- package/dist/lib/crypto/payloads/ValueTransferPayload.js +0 -182
- package/dist/lib/crypto/payloads.d.ts +0 -54
- package/dist/lib/crypto/payloads.d.ts.map +0 -1
- package/dist/lib/crypto/payloads.js +0 -224
- package/dist/lib/crypto/signer.d.ts +0 -26
- package/dist/lib/crypto/signer.d.ts.map +0 -1
- package/dist/lib/crypto/signer.js +0 -299
- package/dist/lib/crypto/transmitters/DataRequests.d.ts +0 -14
- package/dist/lib/crypto/transmitters/DataRequests.d.ts.map +0 -1
- package/dist/lib/crypto/transmitters/DataRequests.js +0 -62
- package/dist/lib/crypto/transmitters/StakeDeposits.d.ts +0 -11
- package/dist/lib/crypto/transmitters/StakeDeposits.d.ts.map +0 -1
- package/dist/lib/crypto/transmitters/StakeDeposits.js +0 -48
- package/dist/lib/crypto/transmitters/StakeWithdrawals.d.ts +0 -17
- package/dist/lib/crypto/transmitters/StakeWithdrawals.d.ts.map +0 -1
- package/dist/lib/crypto/transmitters/StakeWithdrawals.js +0 -115
- package/dist/lib/crypto/transmitters/ValueTransfers.d.ts +0 -10
- package/dist/lib/crypto/transmitters/ValueTransfers.d.ts.map +0 -1
- package/dist/lib/crypto/transmitters/ValueTransfers.js +0 -47
- package/dist/lib/crypto/transmitters.d.ts +0 -46
- package/dist/lib/crypto/transmitters.d.ts.map +0 -1
- package/dist/lib/crypto/transmitters.js +0 -506
- package/dist/lib/crypto/types.d.ts +0 -127
- package/dist/lib/crypto/types.d.ts.map +0 -1
- package/dist/lib/crypto/types.js +0 -261
- package/dist/lib/crypto/utils.d.ts +0 -10
- package/dist/lib/crypto/utils.d.ts.map +0 -1
- package/dist/lib/crypto/utils.js +0 -97
- package/dist/lib/crypto/wallet.d.ts +0 -26
- package/dist/lib/crypto/wallet.d.ts.map +0 -1
- package/dist/lib/crypto/wallet.js +0 -327
- package/dist/lib/helpers.d.ts +0 -90
- package/dist/lib/helpers.d.ts.map +0 -1
- package/dist/lib/helpers.js +0 -1031
- package/dist/lib/index.d.ts +0 -5
- package/dist/lib/index.d.ts.map +0 -1
- package/dist/lib/index.js +0 -21
- package/dist/lib/radon/artifacts.d.ts +0 -55
- package/dist/lib/radon/artifacts.d.ts.map +0 -1
- package/dist/lib/radon/artifacts.js +0 -347
- package/dist/lib/radon/ccdr/eth.d.ts +0 -100
- package/dist/lib/radon/ccdr/eth.d.ts.map +0 -1
- package/dist/lib/radon/ccdr/eth.js +0 -237
- package/dist/lib/radon/ccdr/index.d.ts +0 -34
- package/dist/lib/radon/ccdr/index.d.ts.map +0 -1
- package/dist/lib/radon/ccdr/index.js +0 -63
- package/dist/lib/radon/ccdr/wit.d.ts +0 -29
- package/dist/lib/radon/ccdr/wit.d.ts.map +0 -1
- package/dist/lib/radon/ccdr/wit.js +0 -60
- package/dist/lib/radon/filters.d.ts +0 -14
- package/dist/lib/radon/filters.d.ts.map +0 -1
- package/dist/lib/radon/filters.js +0 -47
- package/dist/lib/radon/index.d.ts +0 -36
- package/dist/lib/radon/index.d.ts.map +0 -1
- package/dist/lib/radon/index.js +0 -154
- package/dist/lib/radon/reducers.d.ts +0 -29
- package/dist/lib/radon/reducers.d.ts.map +0 -1
- package/dist/lib/radon/reducers.js +0 -101
- package/dist/lib/radon/retrievals.d.ts +0 -120
- package/dist/lib/radon/retrievals.d.ts.map +0 -1
- package/dist/lib/radon/retrievals.js +0 -358
- package/dist/lib/radon/sources.d.ts +0 -102
- package/dist/lib/radon/sources.d.ts.map +0 -1
- package/dist/lib/radon/sources.js +0 -294
- package/dist/lib/radon/types.d.ts +0 -521
- package/dist/lib/radon/types.d.ts.map +0 -1
- package/dist/lib/radon/types.js +0 -1066
- package/dist/lib/radon/utils.d.ts +0 -55
- package/dist/lib/radon/utils.d.ts.map +0 -1
- package/dist/lib/radon/utils.js +0 -181
- package/dist/lib/rpc/farm.d.ts +0 -66
- package/dist/lib/rpc/farm.d.ts.map +0 -1
- package/dist/lib/rpc/farm.js +0 -808
- package/dist/lib/rpc/index.d.ts +0 -3
- package/dist/lib/rpc/index.d.ts.map +0 -1
- package/dist/lib/rpc/index.js +0 -19
- package/dist/lib/rpc/node.d.ts +0 -38
- package/dist/lib/rpc/node.d.ts.map +0 -1
- package/dist/lib/rpc/node.js +0 -335
- package/dist/lib/rpc/nodes.d.ts +0 -40
- package/dist/lib/rpc/nodes.d.ts.map +0 -1
- package/dist/lib/rpc/nodes.js +0 -531
- package/dist/lib/rpc/provider.d.ts +0 -72
- package/dist/lib/rpc/provider.d.ts.map +0 -1
- package/dist/lib/rpc/provider.js +0 -402
- package/dist/lib/rpc/reporter.d.ts +0 -18
- package/dist/lib/rpc/reporter.d.ts.map +0 -1
- package/dist/lib/rpc/reporter.js +0 -99
- package/dist/lib/rpc/types.d.ts +0 -396
- package/dist/lib/rpc/types.d.ts.map +0 -1
- package/dist/lib/rpc/types.js +0 -81
- package/dist/lib/rpc/wallet.d.ts +0 -72
- package/dist/lib/rpc/wallet.d.ts.map +0 -1
- package/dist/lib/rpc/wallet.js +0 -41
- package/dist/lib/types.d.ts +0 -19
- package/dist/lib/types.d.ts.map +0 -1
- package/dist/lib/types.js +0 -7
- package/dist/lib/utils.d.ts +0 -5
- package/dist/lib/utils.d.ts.map +0 -1
- package/dist/lib/utils.js +0 -51
- package/dist/src/lib/rpc/reporter.d.ts +0 -17
- package/dist/src/lib/rpc/reporter.d.ts.map +0 -1
- package/dist/src/lib/rpc/reporter.js +0 -27
|
@@ -194,7 +194,7 @@ class Transmitter {
|
|
|
194
194
|
receipt.status = (report.confirmed
|
|
195
195
|
? "finalized"
|
|
196
196
|
: (report?.confirmations >= confirmations ? "confirmed" : "mined"));
|
|
197
|
-
if (report
|
|
197
|
+
if (report?.confirmations !== receipt.confirmations) {
|
|
198
198
|
receipt.confirmations = report.confirmations;
|
|
199
199
|
if (receipt.status === "mined" && options?.onCheckpoint)
|
|
200
200
|
try {
|
|
@@ -256,7 +256,7 @@ class Transmitter {
|
|
|
256
256
|
output_pointer: `${receipt.hash}:0`,
|
|
257
257
|
timelock: vto.time_lock,
|
|
258
258
|
utxo_mature: true,
|
|
259
|
-
value: vto.value,
|
|
259
|
+
value: BigInt(vto.value),
|
|
260
260
|
signer: vto.pkh,
|
|
261
261
|
});
|
|
262
262
|
}
|
|
@@ -267,7 +267,7 @@ class Transmitter {
|
|
|
267
267
|
output_pointer: `${receipt.hash}:${index}`,
|
|
268
268
|
timelock: vto.time_lock,
|
|
269
269
|
utxo_mature: true,
|
|
270
|
-
value: vto.value,
|
|
270
|
+
value: BigInt(vto.value),
|
|
271
271
|
signer: vto.pkh,
|
|
272
272
|
}));
|
|
273
273
|
}
|
|
@@ -413,4 +413,4 @@ class TransmitterMultiSig extends Transmitter {
|
|
|
413
413
|
}
|
|
414
414
|
}
|
|
415
415
|
exports.TransmitterMultiSig = TransmitterMultiSig;
|
|
416
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNtaXR0ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jcnlwdG8vdHJhbnNtaXR0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUV4RCwyQ0FBaUU7QUFDakUsTUFBTSxTQUFTLEdBQUcsaUJBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLG1DQUFtQyxDQUFDLENBQUMsQ0FBQTtBQUdsRixnQ0FBd0M7QUFFeEMsb0NBQXVDO0FBVXZDLG1DQVlnQjtBQUVoQixNQUFzQixXQUFXO0lBVTdCLFlBQWEsYUFBcUIsRUFBRSxPQUFnQixFQUFFLE1BQWUsRUFBRSxTQUErQjtRQUg1RixnQkFBVyxHQUEwQixFQUFFLENBQUE7UUFDdkMsa0JBQWEsR0FBZ0IsRUFBRSxDQUFBO1FBR3JDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUNwRCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtRQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMzQixNQUFNLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSx5Q0FBeUMsQ0FBQyxDQUFBO1FBQ3RGLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFBO1FBQzlDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLCtDQUErQyxJQUFJLENBQUMsU0FBUyxH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dkksQ0FBQztxQkFBTSxDQUFDO29CQUNMLGlFQUFpRTtvQkFDakUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO2dCQUNoRCxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUE7WUFDRixPQUFPLElBQUksQ0FBQTtRQUNmLENBQUM7SUFDTCxDQUFDO0lBRVMsT0FBTyxDQUFDLFFBQWlCO1FBQy9CLE9BQU87WUFDSCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDVCxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQ2xELFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVzthQUMvQjtTQUNKLENBQUE7SUFDTCxDQUFDO0lBRVMsV0FBVztRQUNqQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQ3ZDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMzQixPQUFPO2dCQUNILElBQUk7Z0JBQ0osVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXO2FBQy9CLENBQUE7UUFDTCxDQUFDO0lBQ0wsQ0FBQztDQUNKO0FBckVELGtEQXFFQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHByb21pc2VQb2xsZXIgPSByZXF1aXJlKCdwcm9taXNlLXBvbGxlcicpLmRlZmF1bHQ7XG5cbmltcG9ydCB7IFJvb3QgYXMgUHJvdG9Sb290LCBUeXBlIGFzIFByb3RvVHlwZSB9IGZyb20gXCJwcm90b2J1ZmpzXCJcbmNvbnN0IHByb3RvUm9vdCA9IFByb3RvUm9vdC5mcm9tSlNPTihyZXF1aXJlKFwiLi4vLi4vLi4vd2l0bmV0L3dpdG5ldC5wcm90by5qc29uXCIpKSBcblxuaW1wb3J0IHsgVHJhbnNhY3Rpb25SZXBvcnQsIFV0eG9NZXRhZGF0YSwgVmFsdWVUcmFuc2Zlck91dHB1dCB9IGZyb20gXCIuLi9ycGMvdHlwZXNcIlxuaW1wb3J0IHsgSnNvblJwY1Byb3ZpZGVyIH0gZnJvbSBcIi4uL3JwY1wiXG5pbXBvcnQgeyBIYXNoLCBOZXR3b3JrIH0gZnJvbSBcIi4uL3R5cGVzXCJcbmltcG9ydCB7IGlzSGV4U3RyaW5nIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbmltcG9ydCB7IFxuICAgIElMZWRnZXIsXG4gICAgSUpzb25ScGNQcm92aWRlciwgXG4gICAgSVRyYW5zbWl0dGVyLCBcbiAgICBJVHJhbnNhY3Rpb25QYXlsb2FkLCBcbiAgICBJVHJhbnNhY3Rpb25QYXlsb2FkTXVsdGlTaWcsIFxufSBmcm9tIFwiLi9pbnRlcmZhY2VzXCJcblxuaW1wb3J0IHsgXG4gICAgS2V5ZWRTaWduYXR1cmUsIFxuICAgIFB1YmxpY0tleSwgXG4gICAgUHVibGljS2V5SGFzaFN0cmluZywgXG4gICAgTWVtcG9vbEVycm9yLFxuICAgIFRyYW5zYWN0aW9uQ2FsbGJhY2ssIFxuICAgIFRyYW5zYWN0aW9uUmVjZWlwdCwgXG4gICAgVHJhbnNhY3Rpb25TdGF0dXMsIFxuICAgIFRpbWVvdXRFcnJvcixcbiAgICBUcmFuc21pc3Npb24sXG4gICAgVHJhbnNtaXNzaW9uRXJyb3IsXG4gICAgVXR4byxcbn0gZnJvbSBcIi4vdHlwZXNcIlxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJhbnNtaXR0ZXI8U3BlY3MsIFBheWxvYWQgZXh0ZW5kcyBJVHJhbnNhY3Rpb25QYXlsb2FkPFNwZWNzPj4gaW1wbGVtZW50cyBJVHJhbnNtaXR0ZXIge1xuICAgIFxuICAgIHB1YmxpYyByZWFkb25seSBsZWRnZXI6IElMZWRnZXI7XG4gICAgcHVibGljIHJlYWRvbmx5IGNoYW5nZVBraDogUHVibGljS2V5SGFzaFN0cmluZztcbiAgICBcbiAgICBwcm90ZWN0ZWQgX3BheWxvYWQ6IFBheWxvYWQ7XG4gICAgcHJvdGVjdGVkIF9wcm90b0J1ZjogUHJvdG9UeXBlO1xuICAgIHByb3RlY3RlZCBfc2lnbmF0dXJlczogQXJyYXk8S2V5ZWRTaWduYXR1cmU+ID0gW11cbiAgICBwcm90ZWN0ZWQgX3RyYW5zYWN0aW9uczogQXJyYXk8SGFzaD4gPSBbXVxuXG4gICAgY29uc3RydWN0b3IgKHByb3RvVHlwZU5hbWU6IHN0cmluZywgcGF5bG9hZDogUGF5bG9hZCwgbGVkZ2VyOiBJTGVkZ2VyLCBjaGFuZ2VQa2g/OiBQdWJsaWNLZXlIYXNoU3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3Byb3RvQnVmID0gcHJvdG9Sb290Lmxvb2t1cFR5cGUocHJvdG9UeXBlTmFtZSlcbiAgICAgICAgdGhpcy5fcGF5bG9hZCA9IHBheWxvYWQ7XG4gICAgICAgIHRoaXMubGVkZ2VyID0gbGVkZ2VyXG4gICAgICAgIGlmICghbGVkZ2VyLnByb3ZpZGVyLm5ldHdvcmspIHtcbiAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBsZWRnZXIncyBwcm92aWRlciBpcyBub3QgaW5pdGlhbGl6ZWQuYClcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNoYW5nZVBraCA9IGNoYW5nZVBraCB8fCBsZWRnZXIuY2hhbmdlUGtoXG4gICAgICAgIGlmICghbGVkZ2VyLmdldFNpZ25lcih0aGlzLmNoYW5nZVBraCkpIHtcbiAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBsZWRnZXIgaG9sZHMgbm8gU2lnbmVyIGZvciBjaGFuZ2UgYWRkcmVzcyAke3RoaXMuY2hhbmdlUGtofS5gKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwYXlsb2FkKCk6IFBheWxvYWQgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGF5bG9hZC5wcmVwYXJlZCA/IHRoaXMuX3BheWxvYWQgOiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHByb3ZpZGVyKCk6IElKc29uUnBjUHJvdmlkZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5sZWRnZXIucHJvdmlkZXJcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG5ldHdvcmsoKTogTmV0d29yayB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3ZpZGVyLm5ldHdvcmsgfHwgXCJtYWlubmV0XCJcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRyYW5zYWN0aW9ucygpOiBBcnJheTxIYXNoPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbnNcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHR5cGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BheWxvYWQuY29uc3RydWN0b3IubmFtZS5zcGxpdCgvKFthLXpdKD89W0EtWl0pKS9nKS5zbGljZSgwLCAtMSkuam9pbihcIlwiKVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgX2Zyb20oKTogQXJyYXk8UHVibGljS2V5SGFzaFN0cmluZz4gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodGhpcy5fc2lnbmF0dXJlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fc2lnbmF0dXJlc1xuICAgICAgICAgICAgICAgIC5tYXAoa3MgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwa2ggPSBQdWJsaWNLZXkuZnJvbVByb3RvYnVmKGtzLnB1YmxpY19rZXkpLmhhc2goKS50b0JlY2gzMih0aGlzLm5ldHdvcmspXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxlZGdlci5nZXRTaWduZXIocGtoKT8ucGtoIHx8IHRoaXMubGVkZ2VyLnBraFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLy8gYXZvaWQgcmVwZXRpdGlvbnNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChwa2gsIGluZGV4LCBhcnJheSkgPT4gaW5kZXggPT09IGFycmF5LmluZGV4T2YocGtoKSlcbiAgICAgICAgXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IF9wcmVwYXJlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuX3BheWxvYWQucHJlcGFyZWRcbiAgICAgICAgICAgICAgICAmJiAhIXRoaXMuX3NpZ25hdHVyZXNcbiAgICAgICAgICAgICAgICAmJiB0aGlzLl9zaWduYXR1cmVzLmxlbmd0aCA+IDBcbiAgICAgICAgKVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZW5kVHJhbnNhY3Rpb24odGFyZ2V0PzogYW55KTogUHJvbWlzZTxUcmFuc2FjdGlvblJlY2VpcHQ+IHtcbiAgICAgICAgbGV0IHJlY2VpcHQgPSB0aGlzLl9nZXRJbmZsaWdodFJlY2VpcHQoKVxuICAgICAgICBpZiAoIXJlY2VpcHQgfHwgdGFyZ2V0KSB7XG4gICAgICAgICAgICAvLyBpZiBpbmZsaWdodCBub3QgeWV0IHByZXBhcmVkLCBvciBwcmVwYXJlZCBidXQgbm90IHlldCB0cmFuc21pdHRlZCxcbiAgICAgICAgICAgIC8vIHByZXBhcmUgYSBuZXcgaW5mbGlnaHQgZWl0aGVyIHdpdGggc3BlY2lmaWVkIHBhcmFtcyAoaWYgYW55KSxcbiAgICAgICAgICAgIC8vIG9yIHByZXZpb3VzbHkgcHJlcGFyZWQgaW5mbGlnaHQgKGlmIGtub3duKS5cbiAgICAgICAgICAgIHJlY2VpcHQgPSBhd2FpdCB0aGlzLnNpZ25UcmFuc2FjdGlvbih0YXJnZXQgfHwgcmVjZWlwdClcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVjZWlwdD8uc3RhdHVzICYmIHJlY2VpcHQuc3RhdHVzICE9PSBcInNpZ25lZFwiICYmICFyZWNlaXB0Py5lcnJvcikge1xuICAgICAgICAgICAgLy8gaWYgY3VycmVudCBpbmZsaWdodCB3YXMgYWxyZWFkeSB0cmFuc21pdHRlZCBhbmQgaXQncyBub3QgeWV0IGtub3duIHRvIGZhaWwgLi4uXG4gICAgICAgICAgICByZXR1cm4gcmVjZWlwdFxuICAgICAgICB9XG4gICAgICAgIC8vIGlmIHdlIHJlYWNoIHRoaXMgcG9pbnQgaXMgYmVjYXVzZSBhbiBpbmZsaWdodCB0cmFuc2FjdGlvbiBpcyBcbiAgICAgICAgLy8gcmVhZHkgdG8gYmUgdHJhbnNtaXR0ZWRcbiAgICAgICAgSnNvblJwY1Byb3ZpZGVyLnJlY2VpcHRzW3JlY2VpcHQuaGFzaF0uc3RhdHVzID0gXCJwZW5kaW5nXCJcbiAgICAgICAgZGVsZXRlIEpzb25ScGNQcm92aWRlci5yZWNlaXB0c1tyZWNlaXB0Lmhhc2hdLmVycm9yXG4gICAgICAgIHJldHVybiB0aGlzLnByb3ZpZGVyXG4gICAgICAgICAgICAuc2VuZFJhd1RyYW5zYWN0aW9uKHRoaXMuX3RvSlNPTihmYWxzZSkpXG4gICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBUcmFuc21pc3Npb25FcnJvcih0aGlzLl9nZXRJbmZsaWdodFRyYW5zbWlzc2lvbigpLCBlcnIpXG4gICAgICAgICAgICAgICAgSnNvblJwY1Byb3ZpZGVyLnJlY2VpcHRzW3JlY2VpcHQuaGFzaF0uZXJyb3IgPSBlcnJvclxuICAgICAgICAgICAgICAgIHRocm93IGVycm9yXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnRoZW4oYWNjZXB0ZWQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChhY2NlcHRlZCkge1xuICAgICAgICAgICAgICAgICAgICBKc29uUnBjUHJvdmlkZXIucmVjZWlwdHNbcmVjZWlwdC5oYXNoXS5zdGF0dXMgPSBcInJlbGF5ZWRcIlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gSnNvblJwY1Byb3ZpZGVyLnJlY2VpcHRzW3JlY2VpcHQuaGFzaF1cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgVHJhbnNtaXNzaW9uRXJyb3IodGhpcy5fZ2V0SW5mbGlnaHRUcmFuc21pc3Npb24oKSwgRXJyb3IoYFJlamVjdGVkIGZvciB1bmtub3duIHJlYXNvbnNgKSlcbiAgICAgICAgICAgICAgICAgICAgSnNvblJwY1Byb3ZpZGVyLnJlY2VpcHRzW3JlY2VpcHQuaGFzaF0uZXJyb3IgPSBlcnJvclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNpZ25UcmFuc2FjdGlvbih0YXJnZXQ/OiBTcGVjcywgcmVsb2FkVXR4b3MgPSBmYWxzZSk6IFByb21pc2U8VHJhbnNhY3Rpb25SZWNlaXB0PiB7XG4gICAgICAgIHRhcmdldCA9IGF3YWl0IHRoaXMuX3BheWxvYWQudmFsaWRhdGVUYXJnZXQodGFyZ2V0KVxuICAgICAgICBpZiAoIXRhcmdldCkge1xuICAgICAgICAgICAgLy8gZS5nLiBpZiBjYWxsZWQgZnJvbSB0aGlzLnNlbmQoKSB3aXRoIG5vIHBhcmFtc1xuICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IGNhbm5vdCBzaWduIGEgdHJhbnNhY3Rpb24gaWYgbm8gcGFyYW1zIHdlcmUgcHJldmlvdXNseSBzcGVjaWZpZWQuYClcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgY29uc3QgaW5mbGlnaHQgPSB0aGlzLl9nZXRJbmZsaWdodFJlY2VpcHQoKVxuICAgICAgICBpZiAoaW5mbGlnaHQpIHtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwic2lnbi5wZW5kaW5nUmVjZWlwdCA9PlwiLCBpbmZsaWdodClcbiAgICAgICAgICAgIGlmICghaW5mbGlnaHQ/LnN0YXR1cyB8fCBpbmZsaWdodC5zdGF0dXMgPT09IFwic2lnbmVkXCIpIHtcbiAgICAgICAgICAgICAgICAvLyByZWNvdmVyIGlucHV0IHV0eG9zIGlmIHByZXZpb3VzbHkgc2lnbmVkIHBhcmFtcyB3ZXJlIG5vdCBldmVuIGF0dGVtcHRlZCB0byBiZSBzZW50XG4gICAgICAgICAgICAgICAgaWYgKCFyZWxvYWRVdHhvcykgdGhpcy5fcmVjb3ZlcklucHV0VXR4b3MoKVxuICAgICAgICAgICAgXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGluZmxpZ2h0LnN0YXR1cyA9PT0gXCJwZW5kaW5nXCIgJiYgIWluZmxpZ2h0LmVycm9yKSB7XG4gICAgICAgICAgICAgICAgLy8gdGhyb3cgZXhjZXB0aW9uIGlmIGEgZm9ybWVybHkgc2lnbmVkIHRyYW5zYWN0aW9uIGlzIHN0aWxsIHdhaXRpbmcgdG8gYmUgcmVsYXllZCBieSBhIHByb3ZpZGVyXG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogaW4tZmxpZ2h0IHR4IGJlaW5nIHJlbGF5ZWQ6ICR7aW5mbGlnaHQuaGFzaH1gKVxuICAgICAgICAgICAgfVxuICAgICAgICB9IFxuICAgICAgICBcbiAgICAgICAgLy8gY2xlYW4gY3VycmVudCBzaWduYXR1cmVzLCBzbyBuZXcgVVRYT3MgY2FuIGJlIGNvbnN1bWVkIGFuZCB0aGVyZWZvcmUgYSBuZXcgdHJhbnNhY3Rpb24gaGFzaCBiZSBpbmNlcHRlZFxuICAgICAgICB0aGlzLl9jbGVhblNpZ25hdHVyZXModGFyZ2V0KVxuICAgICAgICBcbiAgICAgICAgLy8gaWYgbm90IHlldCBwcmVwYXJlZCwgdHJ5IHRvIGNvdmVyIHRyYW5zYWN0aW9uIGV4cGVuc2VzIHdpdGggZXhpc3RpbmcgdXR4b3Mgb24gc2lnbmVyczpcbiAgICAgICAgaWYgKCF0aGlzLl9wYXlsb2FkLnByZXBhcmVkKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9wYXlsb2FkLmNvbnN1bWVVdHhvcyh0aGlzLmxlZGdlciwgcmVsb2FkVXR4b3MpXG4gICAgICAgICAgICAuY2F0Y2goKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IGNhbm5vdCBjb25zdW1lIFVUWE9zIGZyb20gJHt0aGlzLmxlZGdlci5jb25zdHJ1Y3Rvci5uYW1lfSAke3RoaXMubGVkZ2VyLnBraH06ICR7ZXJyfS5gXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSkgIFxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoIXRoaXMuX3BheWxvYWQucHJlcGFyZWQpIHtcbiAgICAgICAgICAgIC8vIHRocm93cyBleGVjZXB0aW9uIGlmIG5vdCBlbm91Z2ggdXR4b3Mgd2VyZSBmb3VuZCB0byBjb3ZlciB0cmFuc2FjdGlvbiBleHBlbnNlczpcbiAgICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IGluc3VmZmljaWVudCBmdW5kcyBvbiAke3RoaXMubGVkZ2VyLmNvbnN0cnVjdG9yLm5hbWV9ICR7dGhpcy5sZWRnZXIucGtofS5gXG4gICAgICAgICAgICApXG4gICAgICAgIH0gXG5cbiAgICAgICAgLy8gZG91YmxlLWNoZWNrIHdlaWdodCBkb2VzIG5vdCBleGNlZWRzIGJsb2NrIGxpbWl0Li4uXG4gICAgICAgIGlmICh0aGlzLl9wYXlsb2FkLndlaWdodCA+IHRoaXMuX3BheWxvYWQubWF4V2VpZ2h0KSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiB0cmFuc2FjdGlvbiB3ZWlnaHQgZXhjZWVkZWQgYmxvY2sgbGltaXQ6ICR7dGhpcy5fcGF5bG9hZC53ZWlnaHR9ID4gJHt0aGlzLl9wYXlsb2FkLm1heFdlaWdodH0uYFxuICAgICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gc2lnbmluZyB0aGUgdHJhbnNhY3Rpb24gcGF5bG9hZCBnZW5lcmF0ZXMgdGhlIHRyYW5zYWN0aW9uIGhhc2gsIGFuZCB0aGUgcmVjZWlwdFxuICAgICAgICByZXR1cm4gdGhpcy5fdXBzZXJ0VHJhbnNhY3Rpb25SZWNlaXB0KHRoaXMuX3NpZ25UcmFuc2FjdGlvblBheWxvYWQoKSwgdGFyZ2V0LCBcInNpZ25lZFwiKSAgICBcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY29uZmlybVRyYW5zYWN0aW9uKFxuICAgICAgICBoYXNoOiBIYXNoLCBcbiAgICAgICAgb3B0aW9ucz86IHtcbiAgICAgICAgICAgIGNvbmZpcm1hdGlvbnM/OiBudW1iZXIsXG4gICAgICAgICAgICB0aW1lb3V0U2Vjcz86IG51bWJlcixcbiAgICAgICAgICAgIG9uQ2hlY2twb2ludD86IFRyYW5zYWN0aW9uQ2FsbGJhY2ssXG4gICAgICAgICAgICBvblN0YXR1c0NoYW5nZT86IFRyYW5zYWN0aW9uQ2FsbGJhY2ssXG4gICAgICAgIH1cbiAgICApOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVjZWlwdD4ge1xuXG4gICAgICAgIGxldCByZWNlaXB0ID0gSnNvblJwY1Byb3ZpZGVyLnJlY2VpcHRzW2hhc2hdXG4gICAgICAgIGlmICghcmVjZWlwdCB8fCByZWNlaXB0Lmhhc2ggIT09IGhhc2gpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiB0cmFuc2FjdGlvbiBub3QgZm91bmQ6ICR7aGFzaH1gKVxuICAgICAgICBcbiAgICAgICAgfSBlbHNlIGlmIChbXCJzaWduZWRcIiwgXCJwZW5kaW5nXCJdLmluY2x1ZGVzKHJlY2VpcHQuc3RhdHVzKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IHRyYW5zYWN0aW9uIHN0YXR1cyBcIiR7cmVjZWlwdC5zdGF0dXN9XCI6ICR7aGFzaH1gKVxuICAgICAgICBcbiAgICAgICAgfSBlbHNlIGlmIChyZWNlaXB0LnN0YXR1cyA9PT0gXCJyZW1vdmVkXCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBNZW1wb29sRXJyb3IocmVjZWlwdCwgYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogdHJhbnNhY3Rpb24gcmVtb3ZlZCBmcm9tIG1lbXBvb2w6ICR7aGFzaH1gKVxuICAgICAgICBcbiAgICAgICAgfSBlbHNlIGlmIChyZWNlaXB0LnN0YXR1cyA9PT0gXCJyZWxheWVkXCIgJiYgb3B0aW9ucz8ub25TdGF0dXNDaGFuZ2UpIHRyeSB7XG4gICAgICAgICAgICBvcHRpb25zLm9uU3RhdHVzQ2hhbmdlKHJlY2VpcHQpXG4gICAgICAgIH0gY2F0Y2gge307XG5cbiAgICAgICAgY29uc3QgZ2xvYmFsVGltZXIgPSAoc3RhcnQ6IG51bWJlciwgbXM6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChfLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KFxuICAgICAgICAgICAgICAgICAgICAoKSA9PiByZWplY3QoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogcG9sbGluZyB0aW1lb3V0IGFmdGVyICR7TWF0aC5mbG9vcigoRGF0ZS5ub3coKSAtIHN0YXJ0KSAvIDEwMDApfSBzZWNzKS5gKSwgXG4gICAgICAgICAgICAgICAgICAgIG1zXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgW2NvbmZpcm1hdGlvbnMsIGludGVydmFsLCB0aW1lb3V0LCBnbG9iYWxUaW1lb3V0XSA9IFtcbiAgICAgICAgICAgIG9wdGlvbnM/LmNvbmZpcm1hdGlvbnMgfHwgMCxcbiAgICAgICAgICAgIDEwMDAwLFxuICAgICAgICAgICAgNTAwMCxcbiAgICAgICAgICAgIChvcHRpb25zPy50aW1lb3V0U2VjcyB8fCA2MDApICogMTAwMCxcbiAgICAgICAgXTtcblxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgICAgIGdsb2JhbFRpbWVyKERhdGUubm93KCksIGdsb2JhbFRpbWVvdXQpXG4gICAgICAgICAgICAgICAgLmNhdGNoKChyZWFzb246IGFueSkgPT4geyB0aHJvdyBuZXcgVGltZW91dEVycm9yKGdsb2JhbFRpbWVvdXQsIHJlY2VpcHQsIHJlYXNvbikgfSksXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHByb21pc2VQb2xsZXIoe1xuICAgICAgICAgICAgICAgIHRhc2tGbjogKCkgPT4gdGhpcy5wcm92aWRlci5nZXRUcmFuc2FjdGlvbihoYXNoKSxcbiAgICAgICAgICAgICAgICBzaG91bGRDb250aW51ZTogKGVycm9yOiBhbnksIHJlcG9ydDogVHJhbnNhY3Rpb25SZXBvcnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhdHVzID0gcmVjZWlwdC5zdGF0dXNcbiAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC5lcnJvciA9IGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmIGVycm9yLm1lc3NhZ2UuaW5kZXhPZihcIm5vdCBmb3VuZFwiKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWNlaXB0LnN0YXR1cyA9IFwicmVtb3ZlZFwiXG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugc3dpdGNoIChyZWNlaXB0LnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcInJlbGF5ZWRcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVwb3J0Py5ibG9ja0hhc2ggJiYgaXNIZXhTdHJpbmcocmVwb3J0LmJsb2NrSGFzaCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC5jb25maXJtYXRpb25zID0gcmVwb3J0LmNvbmZpcm1hdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC5ibG9ja0hhc2ggPSByZXBvcnQuYmxvY2tIYXNoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXB0LmJsb2NrRXBvY2ggPSByZXBvcnQuYmxvY2tFcG9jaCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC5ibG9ja1RpbWVzdGFtcCA9IHJlcG9ydC5ibG9ja1RpbWVzdGFtcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXB0LnN0YXR1cyA9IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydC5jb25maXJtZWQgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcImZpbmFsaXplZFwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKHJlcG9ydD8uY29uZmlybWF0aW9ucyA+PSBjb25maXJtYXRpb25zID8gXCJjb25maXJtZWRcIiA6IFwibWluZWRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJtaW5lZFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVwb3J0Py5ibG9ja0hhc2ggfHwgcmVwb3J0LmJsb2NrSGFzaCAhPT0gcmVjZWlwdC5ibG9ja0hhc2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJlY2VpcHQuYmxvY2tIYXNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByZWNlaXB0LmJsb2NrRXBvY2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJlY2VpcHQuYmxvY2tNaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgcmVjZWlwdC5ibG9ja1RpbWVzdGFtcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXB0LnN0YXR1cyA9IFwicmVsYXllZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC5zdGF0dXMgPSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvcnQuY29uZmlybWVkIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJmaW5hbGl6ZWRcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChyZXBvcnQ/LmNvbmZpcm1hdGlvbnMgPj0gY29uZmlybWF0aW9ucyA/IFwiY29uZmlybWVkXCIgOiBcIm1pbmVkXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXBvcnQuY29uZmlybWF0aW9ucyAhPT0gcmVjZWlwdC5jb25maXJtYXRpb25zKSB7ICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC5jb25maXJtYXRpb25zID0gcmVwb3J0LmNvbmZpcm1hdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWNlaXB0LnN0YXR1cyA9PT0gXCJtaW5lZFwiICYmIG9wdGlvbnM/Lm9uQ2hlY2twb2ludCkgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLm9uQ2hlY2twb2ludChyZWNlaXB0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9PSByZWNlaXB0LnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC50aW1lc3RhbXAgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSBcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghW1wiY29uZmlybWVkXCIsIFwiZmluYWxpemVkXCJdLmluY2x1ZGVzKHJlY2VpcHQuc3RhdHVzKSAmJiBvcHRpb25zPy5vblN0YXR1c0NoYW5nZSkgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLm9uU3RhdHVzQ2hhbmdlKHJlY2VpcHQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIHt9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEpzb25ScGNQcm92aWRlci5yZWNlaXB0c1toYXNoXSA9IHJlY2VpcHRcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcInJlbGF5ZWRcIiwgXCJtaW5lZFwiXS5pbmNsdWRlcyhyZWNlaXB0LnN0YXR1cylcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGludGVydmFsLCB0aW1lb3V0LCBcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgfSkudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlY2VpcHQuc3RhdHVzID09PSBcInJlbW92ZWRcIiAmJiByZWNlaXB0LnR5cGUgIT09IFwiVW5zdGFrZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRSQU5TQUNUSU9OIFJFTU9WRUQgRlJPTSBNRU1QT09MIC8vXG4gICAgICAgICAgICAgICAgICAgIC8vIDEuIFRyeSB0byByZWNvdmVyIGlucHV0IHV0eG9zIGJlbG9uZ2luZyB0byBsZWRnZXIncyBhZGRyZXNzZXM6XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dHM6IEFycmF5PFV0eG9NZXRhZGF0YT4gPSByZWNlaXB0LnR4W3JlY2VpcHQudHlwZV0uYm9keS5pbnB1dHNcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpZ25hdHVyZXM6IEFycmF5PEtleWVkU2lnbmF0dXJlPiA9IHJlY2VpcHQudHhbcmVjZWlwdC50eXBlXS5zaWduYXR1cmVzXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1dHhvczogQXJyYXk8VXR4bz4gPSBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0cy5sZW5ndGggPT09IHNpZ25hdHVyZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRzLmZvckVhY2goKG1ldGFkYXRhLCBpbmRleCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ubWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lcjogUHVibGljS2V5LmZyb21Qcm90b2J1ZihzaWduYXR1cmVzW2luZGV4XS5wdWJsaWNfa2V5KS5oYXNoKCkudG9CZWNoMzIodGhpcy5uZXR3b3JrKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGVkZ2VyLmFkZFV0eG9zKC4uLnV0eG9zKVxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogd2FybmluZzogY2Fubm90IHJlY292ZXIgaW5wdXQgVVRYT1MgZnJvbSB0eCAke2hhc2h9OiAke2Vycn1gKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIDIuIFRocm93IE1lbXBvb2xFcnJvclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTWVtcG9vbEVycm9yKHJlY2VpcHQsIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IHRyYW5zYWN0aW9uIHJlbW92ZWQgZnJvbSBtZW1wb29sOiAke2hhc2h9YCk7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVFJBTlNBQ1RJT04gRUlUSEVSIENPTkZJUk1FRCBPUiBGSU5BTElaRUQgLy9cbiAgICAgICAgICAgICAgICAgICAgLy8gMS4gVHJ5IHRvIGxvYWQgdmFsdWUgdHJhbnNmZXIgb3V0cHV0cyBpbnRvIHRoZSBsZWRnZXIncyBsb2NhbCBjYWNoZTogXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1dHhvczogQXJyYXk8VXR4bz4gPSBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFtcIlN0YWtlXCIsIFwiVW5zdGFrZVwiXS5pbmNsdWRlcyhyZWNlaXB0LnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZ0bzogVmFsdWVUcmFuc2Zlck91dHB1dCA9IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC50eXBlID09PSBcIlN0YWtlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcmVjZWlwdC50eFtyZWNlaXB0LnR5cGVdLmJvZHk/Lm91dHB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiByZWNlaXB0LnR4W3JlY2VpcHQudHlwZV0uYm9keT8ud2l0aGRyYXdhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZ0bykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dHhvcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9wb2ludGVyOiBgJHtyZWNlaXB0Lmhhc2h9OjBgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZWxvY2s6IHZ0by50aW1lX2xvY2ssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dHhvX21hdHVyZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2dG8udmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduZXI6IHZ0by5wa2gsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvdXRwdXRzOiBBcnJheTxWYWx1ZVRyYW5zZmVyT3V0cHV0PiA9IHJlY2VpcHQudHhbcmVjZWlwdC50eXBlXS5ib2R5Py5vdXRwdXRzIHx8IFtdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0cy5mb3JFYWNoKCh2dG8sIGluZGV4KSA9PiB1dHhvcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X3BvaW50ZXI6IGAke3JlY2VpcHQuaGFzaH06JHtpbmRleH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lbG9jazogdnRvLnRpbWVfbG9jayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXR4b19tYXR1cmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2dG8udmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lcjogdnRvLnBraCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwib3V0cHV0IHV0eG9zIGJlZm9yZSA9PlwiLCB1dHhvcylcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwib3V0cHV0IHV0eG9zIGFmdGVyICA9PlwiLCB0aGlzLmxlZGdlci5hZGRVdHhvcyguLi51dHhvcykpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxlZGdlci5hZGRVdHhvcyguLi51dHhvcylcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IHdhcm5pbmc6IGNhbm5vdCByZWNvdmVyIG91dHB1dCBVVFhPcyBmcm9tICR7aGFzaH06ICR7ZXJyfWApXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gMi4gQWRkIGJsb2NrTWluZXIgYWRkcmVzcyB0byB0aGUgdHJhbnNhY3Rpb24gcmVjZWlwdDogXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZWNlaXB0Py5ibG9ja0hhc2ggJiYgaXNIZXhTdHJpbmcocmVjZWlwdC5ibG9ja0hhc2gpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9jayA9IGF3YWl0IHRoaXMucHJvdmlkZXIuZ2V0QmxvY2socmVjZWlwdC5ibG9ja0hhc2ggfHwgXCJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIEpzb25ScGNQcm92aWRlci5yZWNlaXB0c1toYXNoXS5ibG9ja01pbmVyID0gUHVibGljS2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZyb21Qcm90b2J1ZihibG9jay5ibG9ja19zaWcucHVibGljX2tleSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaGFzaCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRvQmVjaDMyKHRoaXMubmV0d29yayk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnM/Lm9uU3RhdHVzQ2hhbmdlKSB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5vblN0YXR1c0NoYW5nZShyZWNlaXB0KVxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIHt9O1xuICAgICAgICAgICAgICAgICAgICAvLyAzLiBSZXR1cm4gdHJhbnNhY3Rpb24gcmVjZWlwdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpzb25ScGNQcm92aWRlci5yZWNlaXB0c1toYXNoXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIF0pXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9jbGVhblNpZ25hdHVyZXMobmV3VGFyZ2V0OiBTcGVjcyk6IGFueSB7XG4gICAgICAgIHRoaXMuX3BheWxvYWQucmVzZXRUYXJnZXQobmV3VGFyZ2V0KVxuICAgICAgICB0aGlzLl9zaWduYXR1cmVzID0gW11cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2dldEluZmxpZ2h0Qnl0ZWNvZGUoKTogVWludDhBcnJheSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IG9iaiA9IHRoaXMuX3RvUHJvdG9idWYoKVxuICAgICAgICBjb25zdCBlcnIgPSB0aGlzLl9wcm90b0J1Zi52ZXJpZnkob2JqKVxuICAgICAgICBpZiAoIWVycikge1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMuX3Byb3RvQnVmLmZyb21PYmplY3Qob2JqKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3RvQnVmLmVuY29kZShtZXNzYWdlKS5maW5pc2goKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9nZXRJbmZsaWdodFJlY2VpcHQoKTogVHJhbnNhY3Rpb25SZWNlaXB0IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgaGFzaCA9IHRoaXMuX3BheWxvYWQuaGFzaFxuICAgICAgICBpZiAoaGFzaCkge1xuICAgICAgICAgICAgcmV0dXJuIEpzb25ScGNQcm92aWRlci5yZWNlaXB0c1toYXNoXVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9nZXRJbmZsaWdodFRyYW5zbWlzc2lvbigpOiBUcmFuc21pc3Npb24ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnl0ZWNvZGU6IHRoaXMuX2dldEluZmxpZ2h0Qnl0ZWNvZGUoKSxcbiAgICAgICAgICAgIGhhc2g6IHRoaXMuX3BheWxvYWQuaGFzaCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMuX3RvSlNPTih0cnVlKSxcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcmVjb3ZlcklucHV0VXR4b3MoKTogYW55IHt9XG4gICAgcHJvdGVjdGVkIF9yZWNvdmVyT3V0cHV0VXR4b3MoKTogYW55IHt9XG5cbiAgICBwcm90ZWN0ZWQgX3Vwc2VydFRyYW5zYWN0aW9uUmVjZWlwdChoYXNoOiBIYXNoLCB0YXJnZXQ6IFNwZWNzLCBzdGF0dXM6IFRyYW5zYWN0aW9uU3RhdHVzKTogVHJhbnNhY3Rpb25SZWNlaXB0IHtcbiAgICAgICAgSnNvblJwY1Byb3ZpZGVyLnJlY2VpcHRzW2hhc2hdID0ge1xuICAgICAgICAgICAgLi4udGhpcy5fcGF5bG9hZC5pbnRvUmVjZWlwdCh0YXJnZXQsIHRoaXMubmV0d29yayksXG4gICAgICAgICAgICBoYXNoLFxuICAgICAgICAgICAgY2hhbmdlOiB0aGlzLl9wYXlsb2FkLmNoYW5nZSxcbiAgICAgICAgICAgIGZlZXM6IHRoaXMuX3BheWxvYWQuZmVlcyxcbiAgICAgICAgICAgIGZyb206IHRoaXMuX2Zyb20sXG4gICAgICAgICAgICBzdGF0dXMsXG4gICAgICAgICAgICB0aW1lc3RhbXA6IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApLFxuICAgICAgICAgICAgdHg6IHRoaXMuX3RvSlNPTih0cnVlKSxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLl9wYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgd2VpZ2h0OiB0aGlzLl9wYXlsb2FkLndlaWdodCxcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSnNvblJwY1Byb3ZpZGVyLnJlY2VpcHRzW2hhc2hdXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IF9zaWduVHJhbnNhY3Rpb25QYXlsb2FkKCk6IEhhc2g7XG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IF90b0pTT04oX2h1bWFuaXplOiBib29sZWFuKTogYW55O1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBfdG9Qcm90b2J1ZigpOiBhbnk7XG59XG5cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zbWl0dGVyTXVsdGlTaWc8U3BlY3MsIFBheWxvYWQgZXh0ZW5kcyBJVHJhbnNhY3Rpb25QYXlsb2FkTXVsdGlTaWc8U3BlY3M+PiBcbiAgICBleHRlbmRzIFRyYW5zbWl0dGVyPFNwZWNzLCBQYXlsb2FkPiBcbntcbiAgICBjb25zdHJ1Y3RvciAocHJvdG9UeXBlTmFtZTogc3RyaW5nLCBwYXlsb2FkOiBQYXlsb2FkLCBsZWRnZXI6IElMZWRnZXIsIGNoYW5nZVBraD86IFB1YmxpY0tleUhhc2hTdHJpbmcpIHtcbiAgICAgICAgc3VwZXIocHJvdG9UeXBlTmFtZSwgcGF5bG9hZCwgbGVkZ2VyLCBjaGFuZ2VQa2gpXG4gICAgICAgIHRoaXMuX3BheWxvYWQgPSBwYXlsb2FkO1xuICAgIH1cblxuICAgIC8vLyBSZWNvdmVyIGZvcm1lcmx5IGNvbnN1bWVkIFVUWE9zIGJ5IGEgZmFpbGluZyB0cmFuc2FjdGlvbiBiYWNrIHRvIHRoZWlyIHJlc3BlY3RpdmUgc2lnbmVyJ3MgVVRYTyBwb29sXG4gICAgcHJvdGVjdGVkIF9yZWNvdmVySW5wdXRVdHhvcygpOiBhbnkge1xuICAgICAgICBpZiAodGhpcy5fcGF5bG9hZC5pbnB1dHMpIHsgICAgXG4gICAgICAgICAgICB0aGlzLmxlZGdlci5hZGRVdHhvcyguLi50aGlzLl9wYXlsb2FkLmlucHV0cylcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vLyBSZWNvdmVyIHNlbGYtdGFyZ2V0ZWQgb3V0cHV0cyBhcyBleHBlbmRhYmxlIHV0eG9zIG9uIHRoZWlyIHJlc3BlY3RpdmUgc2lnbmVyJ3MgbWVtb2l6ZWQgY2FjaGVcbiAgICBwcm90ZWN0ZWQgX3JlY292ZXJPdXRwdXRVdHhvcygpOiBhbnkge1xuICAgICAgICBpZiAodGhpcy5fcGF5bG9hZC5oYXNoICYmIHRoaXMuX3BheWxvYWQub3V0cHV0cykge1xuICAgICAgICAgICAgY29uc3QgdXR4b3M6IEFycmF5PFV0eG8+ID0gW11cbiAgICAgICAgICAgIHRoaXMuX3BheWxvYWQub3V0cHV0cy5mb3JFYWNoKCh2dG8sIGluZGV4KSA9PiB7ICAgIFxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxlZGdlci5nZXRTaWduZXIodnRvLnBraCkpIHV0eG9zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBzaWduZXI6IHZ0by5wa2gsXG4gICAgICAgICAgICAgICAgICAgIG91dHB1dF9wb2ludGVyOiBgJHt0aGlzLl9wYXlsb2FkLmhhc2h9OiR7aW5kZXh9YCxcbiAgICAgICAgICAgICAgICAgICAgdGltZWxvY2s6IHZ0by50aW1lX2xvY2ssXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2dG8udmFsdWUsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB0aGlzLmxlZGdlci5hZGRVdHhvcyguLi51dHhvcylcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBfc2lnblRyYW5zYWN0aW9uUGF5bG9hZCgpOiBIYXNoIHtcbiAgICAgICAgY29uc3QgaGFzaCA9IHRoaXMuX3BheWxvYWQuaGFzaFxuICAgICAgICBpZiAoIWhhc2gpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IGludGVybmFsIGVycm9yOiB1bmFibGUgdG8gaGFzaGlmeSBwYXlsb2FkOiAke3RoaXMuX3BheWxvYWQudG9KU09OKHRydWUsIHRoaXMubmV0d29yayl9fS5gXG4gICAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9wYXlsb2FkLmlucHV0cy5mb3JFYWNoKHV0eG8gPT4geyBcbiAgICAgICAgICAgICAgICBjb25zdCBzaWduZXIgPSB0aGlzLmxlZGdlci5nZXRTaWduZXIodXR4by5zaWduZXIpXG4gICAgICAgICAgICAgICAgaWYgKCFzaWduZXIpIHRocm93IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBpbnRlcm5hbCBlcnJvcjogY2Fubm90IGZpbmQgU2lnbmVyICR7dXR4by5zaWduZXJ9IGluICR7dGhpcy5sZWRnZXIuY29uc3RydWN0b3IubmFtZX0gJHt0aGlzLmxlZGdlci5wa2h9LmAgICAgXG4gICAgICAgICAgICAgICAgKTsgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGAuLi5zaWduZXIgJHtzaWduZXIucGtofSBzaWduaW5nIGhhc2ggJHtoYXNofS4uLmApXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaChzaWduZXIuc2lnbkhhc2goaGFzaCkpIFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICByZXR1cm4gaGFzaFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF90b0pTT04oaHVtYW5pemU6IGJvb2xlYW4pOiBhbnkge1xuICAgICAgICByZXR1cm4geyBcbiAgICAgICAgICAgIFt0aGlzLnR5cGVdOiB7IFxuICAgICAgICAgICAgICAgIGJvZHk6IHRoaXMuX3BheWxvYWQudG9KU09OKGh1bWFuaXplLCB0aGlzLm5ldHdvcmspLFxuICAgICAgICAgICAgICAgIHNpZ25hdHVyZXM6IHRoaXMuX3NpZ25hdHVyZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF90b1Byb3RvYnVmKCk6IGFueSB7XG4gICAgICAgIGNvbnN0IGJvZHkgPSB0aGlzLl9wYXlsb2FkLnRvUHJvdG9idWYoKVxuICAgICAgICBpZiAoYm9keSAmJiB0aGlzLl9zaWduYXR1cmVzKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGJvZHksXG4gICAgICAgICAgICAgICAgc2lnbmF0dXJlczogdGhpcy5fc2lnbmF0dXJlcyxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
416
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNtaXR0ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jcnlwdG8vdHJhbnNtaXR0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUV4RCwyQ0FBaUU7QUFDakUsTUFBTSxTQUFTLEdBQUcsaUJBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLG1DQUFtQyxDQUFDLENBQUMsQ0FBQTtBQUdsRixnQ0FBd0M7QUFFeEMsb0NBQXVDO0FBVXZDLG1DQVlnQjtBQUVoQixNQUFzQixXQUFXO0lBVTdCLFlBQWEsYUFBcUIsRUFBRSxPQUFnQixFQUFFLE1BQWUsRUFBRSxTQUErQjtRQUg1RixnQkFBVyxHQUEwQixFQUFFLENBQUE7UUFDdkMsa0JBQWEsR0FBZ0IsRUFBRSxDQUFBO1FBR3JDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUNwRCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtRQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMzQixNQUFNLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSx5Q0FBeUMsQ0FBQyxDQUFBO1FBQ3RGLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFBO1FBQzlDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLCtDQUErQyxJQUFJLENBQUMsU0FBUyxH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SSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FDdkksQ0FBQztxQkFBTSxDQUFDO29CQUNMLGlFQUFpRTtvQkFDakUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO2dCQUNoRCxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUE7WUFDRixPQUFPLElBQUksQ0FBQTtRQUNmLENBQUM7SUFDTCxDQUFDO0lBRVMsT0FBTyxDQUFDLFFBQWlCO1FBQy9CLE9BQU87WUFDSCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDVCxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQ2xELFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVzthQUMvQjtTQUNKLENBQUE7SUFDTCxDQUFDO0lBRVMsV0FBVztRQUNqQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQ3ZDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMzQixPQUFPO2dCQUNILElBQUk7Z0JBQ0osVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXO2FBQy9CLENBQUE7UUFDTCxDQUFDO0lBQ0wsQ0FBQztDQUNKO0FBckVELGtEQXFFQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHByb21pc2VQb2xsZXIgPSByZXF1aXJlKCdwcm9taXNlLXBvbGxlcicpLmRlZmF1bHQ7XHJcblxyXG5pbXBvcnQgeyBSb290IGFzIFByb3RvUm9vdCwgVHlwZSBhcyBQcm90b1R5cGUgfSBmcm9tIFwicHJvdG9idWZqc1wiXHJcbmNvbnN0IHByb3RvUm9vdCA9IFByb3RvUm9vdC5mcm9tSlNPTihyZXF1aXJlKFwiLi4vLi4vLi4vd2l0bmV0L3dpdG5ldC5wcm90by5qc29uXCIpKSBcclxuXHJcbmltcG9ydCB7IFRyYW5zYWN0aW9uUmVwb3J0LCBVdHhvTWV0YWRhdGEsIFZhbHVlVHJhbnNmZXJPdXRwdXQgfSBmcm9tIFwiLi4vcnBjL3R5cGVzXCJcclxuaW1wb3J0IHsgSnNvblJwY1Byb3ZpZGVyIH0gZnJvbSBcIi4uL3JwY1wiXHJcbmltcG9ydCB7IEhhc2gsIE5ldHdvcmsgfSBmcm9tIFwiLi4vdHlwZXNcIlxyXG5pbXBvcnQgeyBpc0hleFN0cmluZyB9IGZyb20gXCIuLi91dGlsc1wiO1xyXG5cclxuaW1wb3J0IHsgXHJcbiAgICBJTGVkZ2VyLFxyXG4gICAgSUpzb25ScGNQcm92aWRlciwgXHJcbiAgICBJVHJhbnNtaXR0ZXIsIFxyXG4gICAgSVRyYW5zYWN0aW9uUGF5bG9hZCwgXHJcbiAgICBJVHJhbnNhY3Rpb25QYXlsb2FkTXVsdGlTaWcsIFxyXG59IGZyb20gXCIuL2ludGVyZmFjZXNcIlxyXG5cclxuaW1wb3J0IHsgXHJcbiAgICBLZXllZFNpZ25hdHVyZSwgXHJcbiAgICBQdWJsaWNLZXksIFxyXG4gICAgUHVibGljS2V5SGFzaFN0cmluZywgXHJcbiAgICBNZW1wb29sRXJyb3IsXHJcbiAgICBUcmFuc2FjdGlvbkNhbGxiYWNrLCBcclxuICAgIFRyYW5zYWN0aW9uUmVjZWlwdCwgXHJcbiAgICBUcmFuc2FjdGlvblN0YXR1cywgXHJcbiAgICBUaW1lb3V0RXJyb3IsXHJcbiAgICBUcmFuc21pc3Npb24sXHJcbiAgICBUcmFuc21pc3Npb25FcnJvcixcclxuICAgIFV0eG8sXHJcbn0gZnJvbSBcIi4vdHlwZXNcIlxyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zbWl0dGVyPFNwZWNzLCBQYXlsb2FkIGV4dGVuZHMgSVRyYW5zYWN0aW9uUGF5bG9hZDxTcGVjcz4+IGltcGxlbWVudHMgSVRyYW5zbWl0dGVyIHtcclxuICAgIFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGxlZGdlcjogSUxlZGdlcjtcclxuICAgIHB1YmxpYyByZWFkb25seSBjaGFuZ2VQa2g6IFB1YmxpY0tleUhhc2hTdHJpbmc7XHJcbiAgICBcclxuICAgIHByb3RlY3RlZCBfcGF5bG9hZDogUGF5bG9hZDtcclxuICAgIHByb3RlY3RlZCBfcHJvdG9CdWY6IFByb3RvVHlwZTtcclxuICAgIHByb3RlY3RlZCBfc2lnbmF0dXJlczogQXJyYXk8S2V5ZWRTaWduYXR1cmU+ID0gW11cclxuICAgIHByb3RlY3RlZCBfdHJhbnNhY3Rpb25zOiBBcnJheTxIYXNoPiA9IFtdXHJcblxyXG4gICAgY29uc3RydWN0b3IgKHByb3RvVHlwZU5hbWU6IHN0cmluZywgcGF5bG9hZDogUGF5bG9hZCwgbGVkZ2VyOiBJTGVkZ2VyLCBjaGFuZ2VQa2g/OiBQdWJsaWNLZXlIYXNoU3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5fcHJvdG9CdWYgPSBwcm90b1Jvb3QubG9va3VwVHlwZShwcm90b1R5cGVOYW1lKVxyXG4gICAgICAgIHRoaXMuX3BheWxvYWQgPSBwYXlsb2FkO1xyXG4gICAgICAgIHRoaXMubGVkZ2VyID0gbGVkZ2VyXHJcbiAgICAgICAgaWYgKCFsZWRnZXIucHJvdmlkZXIubmV0d29yaykge1xyXG4gICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogbGVkZ2VyJ3MgcHJvdmlkZXIgaXMgbm90IGluaXRpYWxpemVkLmApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2hhbmdlUGtoID0gY2hhbmdlUGtoIHx8IGxlZGdlci5jaGFuZ2VQa2hcclxuICAgICAgICBpZiAoIWxlZGdlci5nZXRTaWduZXIodGhpcy5jaGFuZ2VQa2gpKSB7XHJcbiAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBsZWRnZXIgaG9sZHMgbm8gU2lnbmVyIGZvciBjaGFuZ2UgYWRkcmVzcyAke3RoaXMuY2hhbmdlUGtofS5gKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHBheWxvYWQoKTogUGF5bG9hZCB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BheWxvYWQucHJlcGFyZWQgPyB0aGlzLl9wYXlsb2FkIDogdW5kZWZpbmVkXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBwcm92aWRlcigpOiBJSnNvblJwY1Byb3ZpZGVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5sZWRnZXIucHJvdmlkZXJcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IG5ldHdvcmsoKTogTmV0d29yayB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIubmV0d29yayB8fCBcIm1haW5uZXRcIlxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgdHJhbnNhY3Rpb25zKCk6IEFycmF5PEhhc2g+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb25zXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCB0eXBlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BheWxvYWQuY29uc3RydWN0b3IubmFtZS5zcGxpdCgvKFthLXpdKD89W0EtWl0pKS9nKS5zbGljZSgwLCAtMSkuam9pbihcIlwiKVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXQgX2Zyb20oKTogQXJyYXk8UHVibGljS2V5SGFzaFN0cmluZz4gfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGlmICh0aGlzLl9zaWduYXR1cmVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NpZ25hdHVyZXNcclxuICAgICAgICAgICAgICAgIC5tYXAoa3MgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBraCA9IFB1YmxpY0tleS5mcm9tUHJvdG9idWYoa3MucHVibGljX2tleSkuaGFzaCgpLnRvQmVjaDMyKHRoaXMubmV0d29yaylcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sZWRnZXIuZ2V0U2lnbmVyKHBraCk/LnBraCB8fCB0aGlzLmxlZGdlci5wa2hcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAvLyBhdm9pZCByZXBldGl0aW9uc1xyXG4gICAgICAgICAgICAgICAgLmZpbHRlcigocGtoLCBpbmRleCwgYXJyYXkpID0+IGluZGV4ID09PSBhcnJheS5pbmRleE9mKHBraCkpXHJcbiAgICAgICAgXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IF9wcmVwYXJlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICB0aGlzLl9wYXlsb2FkLnByZXBhcmVkXHJcbiAgICAgICAgICAgICAgICAmJiAhIXRoaXMuX3NpZ25hdHVyZXNcclxuICAgICAgICAgICAgICAgICYmIHRoaXMuX3NpZ25hdHVyZXMubGVuZ3RoID4gMFxyXG4gICAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgc2VuZFRyYW5zYWN0aW9uKHRhcmdldD86IGFueSk6IFByb21pc2U8VHJhbnNhY3Rpb25SZWNlaXB0PiB7XHJcbiAgICAgICAgbGV0IHJlY2VpcHQgPSB0aGlzLl9nZXRJbmZsaWdodFJlY2VpcHQoKVxyXG4gICAgICAgIGlmICghcmVjZWlwdCB8fCB0YXJnZXQpIHtcclxuICAgICAgICAgICAgLy8gaWYgaW5mbGlnaHQgbm90IHlldCBwcmVwYXJlZCwgb3IgcHJlcGFyZWQgYnV0IG5vdCB5ZXQgdHJhbnNtaXR0ZWQsXHJcbiAgICAgICAgICAgIC8vIHByZXBhcmUgYSBuZXcgaW5mbGlnaHQgZWl0aGVyIHdpdGggc3BlY2lmaWVkIHBhcmFtcyAoaWYgYW55KSxcclxuICAgICAgICAgICAgLy8gb3IgcHJldmlvdXNseSBwcmVwYXJlZCBpbmZsaWdodCAoaWYga25vd24pLlxyXG4gICAgICAgICAgICByZWNlaXB0ID0gYXdhaXQgdGhpcy5zaWduVHJhbnNhY3Rpb24odGFyZ2V0IHx8IHJlY2VpcHQpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyZWNlaXB0Py5zdGF0dXMgJiYgcmVjZWlwdC5zdGF0dXMgIT09IFwic2lnbmVkXCIgJiYgIXJlY2VpcHQ/LmVycm9yKSB7XHJcbiAgICAgICAgICAgIC8vIGlmIGN1cnJlbnQgaW5mbGlnaHQgd2FzIGFscmVhZHkgdHJhbnNtaXR0ZWQgYW5kIGl0J3Mgbm90IHlldCBrbm93biB0byBmYWlsIC4uLlxyXG4gICAgICAgICAgICByZXR1cm4gcmVjZWlwdFxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpZiB3ZSByZWFjaCB0aGlzIHBvaW50IGlzIGJlY2F1c2UgYW4gaW5mbGlnaHQgdHJhbnNhY3Rpb24gaXMgXHJcbiAgICAgICAgLy8gcmVhZHkgdG8gYmUgdHJhbnNtaXR0ZWRcclxuICAgICAgICBKc29uUnBjUHJvdmlkZXIucmVjZWlwdHNbcmVjZWlwdC5oYXNoXS5zdGF0dXMgPSBcInBlbmRpbmdcIlxyXG4gICAgICAgIGRlbGV0ZSBKc29uUnBjUHJvdmlkZXIucmVjZWlwdHNbcmVjZWlwdC5oYXNoXS5lcnJvclxyXG4gICAgICAgIHJldHVybiB0aGlzLnByb3ZpZGVyXHJcbiAgICAgICAgICAgIC5zZW5kUmF3VHJhbnNhY3Rpb24odGhpcy5fdG9KU09OKGZhbHNlKSlcclxuICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBUcmFuc21pc3Npb25FcnJvcih0aGlzLl9nZXRJbmZsaWdodFRyYW5zbWlzc2lvbigpLCBlcnIpXHJcbiAgICAgICAgICAgICAgICBKc29uUnBjUHJvdmlkZXIucmVjZWlwdHNbcmVjZWlwdC5oYXNoXS5lcnJvciA9IGVycm9yXHJcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnJvclxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAudGhlbihhY2NlcHRlZCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYWNjZXB0ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBKc29uUnBjUHJvdmlkZXIucmVjZWlwdHNbcmVjZWlwdC5oYXNoXS5zdGF0dXMgPSBcInJlbGF5ZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBKc29uUnBjUHJvdmlkZXIucmVjZWlwdHNbcmVjZWlwdC5oYXNoXVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBUcmFuc21pc3Npb25FcnJvcih0aGlzLl9nZXRJbmZsaWdodFRyYW5zbWlzc2lvbigpLCBFcnJvcihgUmVqZWN0ZWQgZm9yIHVua25vd24gcmVhc29uc2ApKVxyXG4gICAgICAgICAgICAgICAgICAgIEpzb25ScGNQcm92aWRlci5yZWNlaXB0c1tyZWNlaXB0Lmhhc2hdLmVycm9yID0gZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvclxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBzaWduVHJhbnNhY3Rpb24odGFyZ2V0PzogU3BlY3MsIHJlbG9hZFV0eG9zID0gZmFsc2UpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVjZWlwdD4ge1xyXG4gICAgICAgIHRhcmdldCA9IGF3YWl0IHRoaXMuX3BheWxvYWQudmFsaWRhdGVUYXJnZXQodGFyZ2V0KVxyXG4gICAgICAgIGlmICghdGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIC8vIGUuZy4gaWYgY2FsbGVkIGZyb20gdGhpcy5zZW5kKCkgd2l0aCBubyBwYXJhbXNcclxuICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IGNhbm5vdCBzaWduIGEgdHJhbnNhY3Rpb24gaWYgbm8gcGFyYW1zIHdlcmUgcHJldmlvdXNseSBzcGVjaWZpZWQuYClcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgaW5mbGlnaHQgPSB0aGlzLl9nZXRJbmZsaWdodFJlY2VpcHQoKVxyXG4gICAgICAgIGlmIChpbmZsaWdodCkge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcInNpZ24ucGVuZGluZ1JlY2VpcHQgPT5cIiwgaW5mbGlnaHQpXHJcbiAgICAgICAgICAgIGlmICghaW5mbGlnaHQ/LnN0YXR1cyB8fCBpbmZsaWdodC5zdGF0dXMgPT09IFwic2lnbmVkXCIpIHtcclxuICAgICAgICAgICAgICAgIC8vIHJlY292ZXIgaW5wdXQgdXR4b3MgaWYgcHJldmlvdXNseSBzaWduZWQgcGFyYW1zIHdlcmUgbm90IGV2ZW4gYXR0ZW1wdGVkIHRvIGJlIHNlbnRcclxuICAgICAgICAgICAgICAgIGlmICghcmVsb2FkVXR4b3MpIHRoaXMuX3JlY292ZXJJbnB1dFV0eG9zKClcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5mbGlnaHQuc3RhdHVzID09PSBcInBlbmRpbmdcIiAmJiAhaW5mbGlnaHQuZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgIC8vIHRocm93IGV4Y2VwdGlvbiBpZiBhIGZvcm1lcmx5IHNpZ25lZCB0cmFuc2FjdGlvbiBpcyBzdGlsbCB3YWl0aW5nIHRvIGJlIHJlbGF5ZWQgYnkgYSBwcm92aWRlclxyXG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogaW4tZmxpZ2h0IHR4IGJlaW5nIHJlbGF5ZWQ6ICR7aW5mbGlnaHQuaGFzaH1gKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBcclxuICAgICAgICBcclxuICAgICAgICAvLyBjbGVhbiBjdXJyZW50IHNpZ25hdHVyZXMsIHNvIG5ldyBVVFhPcyBjYW4gYmUgY29uc3VtZWQgYW5kIHRoZXJlZm9yZSBhIG5ldyB0cmFuc2FjdGlvbiBoYXNoIGJlIGluY2VwdGVkXHJcbiAgICAgICAgdGhpcy5fY2xlYW5TaWduYXR1cmVzKHRhcmdldClcclxuICAgICAgICBcclxuICAgICAgICAvLyBpZiBub3QgeWV0IHByZXBhcmVkLCB0cnkgdG8gY292ZXIgdHJhbnNhY3Rpb24gZXhwZW5zZXMgd2l0aCBleGlzdGluZyB1dHhvcyBvbiBzaWduZXJzOlxyXG4gICAgICAgIGlmICghdGhpcy5fcGF5bG9hZC5wcmVwYXJlZCkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9wYXlsb2FkLmNvbnN1bWVVdHhvcyh0aGlzLmxlZGdlciwgcmVsb2FkVXR4b3MpXHJcbiAgICAgICAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFxyXG4gICAgICAgICAgICAgICAgICAgIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IGNhbm5vdCBjb25zdW1lIFVUWE9zIGZyb20gJHt0aGlzLmxlZGdlci5jb25zdHJ1Y3Rvci5uYW1lfSAke3RoaXMubGVkZ2VyLnBraH06ICR7ZXJyfS5gXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIH0pICBcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKCF0aGlzLl9wYXlsb2FkLnByZXBhcmVkKSB7XHJcbiAgICAgICAgICAgIC8vIHRocm93cyBleGVjZXB0aW9uIGlmIG5vdCBlbm91Z2ggdXR4b3Mgd2VyZSBmb3VuZCB0byBjb3ZlciB0cmFuc2FjdGlvbiBleHBlbnNlczpcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBpbnN1ZmZpY2llbnQgZnVuZHMgb24gJHt0aGlzLmxlZGdlci5jb25zdHJ1Y3Rvci5uYW1lfSAke3RoaXMubGVkZ2VyLnBraH0uYFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgfSBcclxuXHJcbiAgICAgICAgLy8gZG91YmxlLWNoZWNrIHdlaWdodCBkb2VzIG5vdCBleGNlZWRzIGJsb2NrIGxpbWl0Li4uXHJcbiAgICAgICAgaWYgKHRoaXMuX3BheWxvYWQud2VpZ2h0ID4gdGhpcy5fcGF5bG9hZC5tYXhXZWlnaHQpIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiB0cmFuc2FjdGlvbiB3ZWlnaHQgZXhjZWVkZWQgYmxvY2sgbGltaXQ6ICR7dGhpcy5fcGF5bG9hZC53ZWlnaHR9ID4gJHt0aGlzLl9wYXlsb2FkLm1heFdlaWdodH0uYFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBzaWduaW5nIHRoZSB0cmFuc2FjdGlvbiBwYXlsb2FkIGdlbmVyYXRlcyB0aGUgdHJhbnNhY3Rpb24gaGFzaCwgYW5kIHRoZSByZWNlaXB0XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Vwc2VydFRyYW5zYWN0aW9uUmVjZWlwdCh0aGlzLl9zaWduVHJhbnNhY3Rpb25QYXlsb2FkKCksIHRhcmdldCwgXCJzaWduZWRcIikgICAgXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGNvbmZpcm1UcmFuc2FjdGlvbihcclxuICAgICAgICBoYXNoOiBIYXNoLCBcclxuICAgICAgICBvcHRpb25zPzoge1xyXG4gICAgICAgICAgICBjb25maXJtYXRpb25zPzogbnVtYmVyLFxyXG4gICAgICAgICAgICB0aW1lb3V0U2Vjcz86IG51bWJlcixcclxuICAgICAgICAgICAgb25DaGVja3BvaW50PzogVHJhbnNhY3Rpb25DYWxsYmFjayxcclxuICAgICAgICAgICAgb25TdGF0dXNDaGFuZ2U/OiBUcmFuc2FjdGlvbkNhbGxiYWNrLFxyXG4gICAgICAgIH1cclxuICAgICk6IFByb21pc2U8VHJhbnNhY3Rpb25SZWNlaXB0PiB7XHJcblxyXG4gICAgICAgIGxldCByZWNlaXB0ID0gSnNvblJwY1Byb3ZpZGVyLnJlY2VpcHRzW2hhc2hdXHJcbiAgICAgICAgaWYgKCFyZWNlaXB0IHx8IHJlY2VpcHQuaGFzaCAhPT0gaGFzaCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogdHJhbnNhY3Rpb24gbm90IGZvdW5kOiAke2hhc2h9YClcclxuICAgICAgICBcclxuICAgICAgICB9IGVsc2UgaWYgKFtcInNpZ25lZFwiLCBcInBlbmRpbmdcIl0uaW5jbHVkZXMocmVjZWlwdC5zdGF0dXMpKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiB0cmFuc2FjdGlvbiBzdGF0dXMgXCIke3JlY2VpcHQuc3RhdHVzfVwiOiAke2hhc2h9YClcclxuICAgICAgICBcclxuICAgICAgICB9IGVsc2UgaWYgKHJlY2VpcHQuc3RhdHVzID09PSBcInJlbW92ZWRcIikge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgTWVtcG9vbEVycm9yKHJlY2VpcHQsIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IHRyYW5zYWN0aW9uIHJlbW92ZWQgZnJvbSBtZW1wb29sOiAke2hhc2h9YClcclxuICAgICAgICBcclxuICAgICAgICB9IGVsc2UgaWYgKHJlY2VpcHQuc3RhdHVzID09PSBcInJlbGF5ZWRcIiAmJiBvcHRpb25zPy5vblN0YXR1c0NoYW5nZSkgdHJ5IHtcclxuICAgICAgICAgICAgb3B0aW9ucy5vblN0YXR1c0NoYW5nZShyZWNlaXB0KVxyXG4gICAgICAgIH0gY2F0Y2gge307XHJcblxyXG4gICAgICAgIGNvbnN0IGdsb2JhbFRpbWVyID0gKHN0YXJ0OiBudW1iZXIsIG1zOiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChfLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoXHJcbiAgICAgICAgICAgICAgICAgICAgKCkgPT4gcmVqZWN0KGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IHBvbGxpbmcgdGltZW91dCBhZnRlciAke01hdGguZmxvb3IoKERhdGUubm93KCkgLSBzdGFydCkgLyAxMDAwKX0gc2VjcykuYCksIFxyXG4gICAgICAgICAgICAgICAgICAgIG1zXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IFtjb25maXJtYXRpb25zLCBpbnRlcnZhbCwgdGltZW91dCwgZ2xvYmFsVGltZW91dF0gPSBbXHJcbiAgICAgICAgICAgIG9wdGlvbnM/LmNvbmZpcm1hdGlvbnMgfHwgMCxcclxuICAgICAgICAgICAgMTAwMDAsXHJcbiAgICAgICAgICAgIDUwMDAsXHJcbiAgICAgICAgICAgIChvcHRpb25zPy50aW1lb3V0U2VjcyB8fCA2MDApICogMTAwMCxcclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yYWNlKFtcclxuICAgICAgICAgICAgZ2xvYmFsVGltZXIoRGF0ZS5ub3coKSwgZ2xvYmFsVGltZW91dClcclxuICAgICAgICAgICAgICAgIC5jYXRjaCgocmVhc29uOiBhbnkpID0+IHsgdGhyb3cgbmV3IFRpbWVvdXRFcnJvcihnbG9iYWxUaW1lb3V0LCByZWNlaXB0LCByZWFzb24pIH0pLFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgcHJvbWlzZVBvbGxlcih7XHJcbiAgICAgICAgICAgICAgICB0YXNrRm46ICgpID0+IHRoaXMucHJvdmlkZXIuZ2V0VHJhbnNhY3Rpb24oaGFzaCksXHJcbiAgICAgICAgICAgICAgICBzaG91bGRDb250aW51ZTogKGVycm9yOiBhbnksIHJlcG9ydDogVHJhbnNhY3Rpb25SZXBvcnQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGF0dXMgPSByZWNlaXB0LnN0YXR1c1xyXG4gICAgICAgICAgICAgICAgICAgIHJlY2VpcHQuZXJyb3IgPSBlcnJvclxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmIGVycm9yLm1lc3NhZ2UuaW5kZXhPZihcIm5vdCBmb3VuZFwiKSA+PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpcHQuc3RhdHVzID0gXCJyZW1vdmVkXCJcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugc3dpdGNoIChyZWNlaXB0LnN0YXR1cykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwicmVsYXllZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcG9ydD8uYmxvY2tIYXNoICYmIGlzSGV4U3RyaW5nKHJlcG9ydC5ibG9ja0hhc2gpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC5jb25maXJtYXRpb25zID0gcmVwb3J0LmNvbmZpcm1hdGlvbnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXB0LmJsb2NrSGFzaCA9IHJlcG9ydC5ibG9ja0hhc2gsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC5ibG9ja0Vwb2NoID0gcmVwb3J0LmJsb2NrRXBvY2gsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC5ibG9ja1RpbWVzdGFtcCA9IHJlcG9ydC5ibG9ja1RpbWVzdGFtcFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpcHQuc3RhdHVzID0gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvcnQuY29uZmlybWVkIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcImZpbmFsaXplZFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAocmVwb3J0Py5jb25maXJtYXRpb25zID49IGNvbmZpcm1hdGlvbnMgPyBcImNvbmZpcm1lZFwiIDogXCJtaW5lZFwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJtaW5lZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXBvcnQ/LmJsb2NrSGFzaCB8fCByZXBvcnQuYmxvY2tIYXNoICE9PSByZWNlaXB0LmJsb2NrSGFzaCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByZWNlaXB0LmJsb2NrSGFzaFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByZWNlaXB0LmJsb2NrRXBvY2hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgcmVjZWlwdC5ibG9ja01pbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJlY2VpcHQuYmxvY2tUaW1lc3RhbXBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXB0LnN0YXR1cyA9IFwicmVsYXllZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC5zdGF0dXMgPSAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydC5jb25maXJtZWQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwiZmluYWxpemVkXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChyZXBvcnQ/LmNvbmZpcm1hdGlvbnMgPj0gY29uZmlybWF0aW9ucyA/IFwiY29uZmlybWVkXCIgOiBcIm1pbmVkXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVwb3J0Py5jb25maXJtYXRpb25zICE9PSByZWNlaXB0LmNvbmZpcm1hdGlvbnMpIHsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpcHQuY29uZmlybWF0aW9ucyA9IHJlcG9ydC5jb25maXJtYXRpb25zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWNlaXB0LnN0YXR1cyA9PT0gXCJtaW5lZFwiICYmIG9wdGlvbnM/Lm9uQ2hlY2twb2ludCkgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMub25DaGVja3BvaW50KHJlY2VpcHQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gge307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAhPT0gcmVjZWlwdC5zdGF0dXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC50aW1lc3RhbXAgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFbXCJjb25maXJtZWRcIiwgXCJmaW5hbGl6ZWRcIl0uaW5jbHVkZXMocmVjZWlwdC5zdGF0dXMpICYmIG9wdGlvbnM/Lm9uU3RhdHVzQ2hhbmdlKSB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5vblN0YXR1c0NoYW5nZShyZWNlaXB0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIHt9O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBKc29uUnBjUHJvdmlkZXIucmVjZWlwdHNbaGFzaF0gPSByZWNlaXB0XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcInJlbGF5ZWRcIiwgXCJtaW5lZFwiXS5pbmNsdWRlcyhyZWNlaXB0LnN0YXR1cylcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBpbnRlcnZhbCwgdGltZW91dCwgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9KS50aGVuKGFzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZWNlaXB0LnN0YXR1cyA9PT0gXCJyZW1vdmVkXCIgJiYgcmVjZWlwdC50eXBlICE9PSBcIlVuc3Rha2VcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFRSQU5TQUNUSU9OIFJFTU9WRUQgRlJPTSBNRU1QT09MIC8vXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gMS4gVHJ5IHRvIHJlY292ZXIgaW5wdXQgdXR4b3MgYmVsb25naW5nIHRvIGxlZGdlcidzIGFkZHJlc3NlczpcclxuICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dHM6IEFycmF5PFV0eG9NZXRhZGF0YT4gPSByZWNlaXB0LnR4W3JlY2VpcHQudHlwZV0uYm9keS5pbnB1dHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2lnbmF0dXJlczogQXJyYXk8S2V5ZWRTaWduYXR1cmU+ID0gcmVjZWlwdC50eFtyZWNlaXB0LnR5cGVdLnNpZ25hdHVyZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXR4b3M6IEFycmF5PFV0eG8+ID0gW11cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0cy5sZW5ndGggPT09IHNpZ25hdHVyZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dHMuZm9yRWFjaCgobWV0YWRhdGEsIGluZGV4KSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLm1ldGFkYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lcjogUHVibGljS2V5LmZyb21Qcm90b2J1ZihzaWduYXR1cmVzW2luZGV4XS5wdWJsaWNfa2V5KS5oYXNoKCkudG9CZWNoMzIodGhpcy5uZXR3b3JrKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGVkZ2VyLmFkZFV0eG9zKC4uLnV0eG9zKVxyXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IHdhcm5pbmc6IGNhbm5vdCByZWNvdmVyIGlucHV0IFVUWE9TIGZyb20gdHggJHtoYXNofTogJHtlcnJ9YClcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gMi4gVGhyb3cgTWVtcG9vbEVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE1lbXBvb2xFcnJvcihyZWNlaXB0LCBgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiB0cmFuc2FjdGlvbiByZW1vdmVkIGZyb20gbWVtcG9vbDogJHtoYXNofWApO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFRSQU5TQUNUSU9OIEVJVEhFUiBDT05GSVJNRUQgT1IgRklOQUxJWkVEIC8vXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gMS4gVHJ5IHRvIGxvYWQgdmFsdWUgdHJhbnNmZXIgb3V0cHV0cyBpbnRvIHRoZSBsZWRnZXIncyBsb2NhbCBjYWNoZTogXHJcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXR4b3M6IEFycmF5PFV0eG8+ID0gW11cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFtcIlN0YWtlXCIsIFwiVW5zdGFrZVwiXS5pbmNsdWRlcyhyZWNlaXB0LnR5cGUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdnRvOiBWYWx1ZVRyYW5zZmVyT3V0cHV0ID0gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpcHQudHlwZSA9PT0gXCJTdGFrZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcmVjZWlwdC50eFtyZWNlaXB0LnR5cGVdLmJvZHk/Lm91dHB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHJlY2VpcHQudHhbcmVjZWlwdC50eXBlXS5ib2R5Py53aXRoZHJhd2FsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZ0bykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0eG9zLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfcG9pbnRlcjogYCR7cmVjZWlwdC5oYXNofTowYCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZWxvY2s6IHZ0by50aW1lX2xvY2ssXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0eG9fbWF0dXJlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogQmlnSW50KHZ0by52YWx1ZSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lcjogdnRvLnBraCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3V0cHV0czogQXJyYXk8VmFsdWVUcmFuc2Zlck91dHB1dD4gPSByZWNlaXB0LnR4W3JlY2VpcHQudHlwZV0uYm9keT8ub3V0cHV0cyB8fCBbXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0cy5mb3JFYWNoKCh2dG8sIGluZGV4KSA9PiB1dHhvcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfcG9pbnRlcjogYCR7cmVjZWlwdC5oYXNofToke2luZGV4fWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZWxvY2s6IHZ0by50aW1lX2xvY2ssXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXR4b19tYXR1cmU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEJpZ0ludCh2dG8udmFsdWUpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lcjogdnRvLnBraCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwib3V0cHV0IHV0eG9zIGJlZm9yZSA9PlwiLCB1dHhvcylcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJvdXRwdXQgdXR4b3MgYWZ0ZXIgID0+XCIsIHRoaXMubGVkZ2VyLmFkZFV0eG9zKC4uLnV0eG9zKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sZWRnZXIuYWRkVXR4b3MoLi4udXR4b3MpXHJcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogd2FybmluZzogY2Fubm90IHJlY292ZXIgb3V0cHV0IFVUWE9zIGZyb20gJHtoYXNofTogJHtlcnJ9YClcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gMi4gQWRkIGJsb2NrTWluZXIgYWRkcmVzcyB0byB0aGUgdHJhbnNhY3Rpb24gcmVjZWlwdDogXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlY2VpcHQ/LmJsb2NrSGFzaCAmJiBpc0hleFN0cmluZyhyZWNlaXB0LmJsb2NrSGFzaCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2sgPSBhd2FpdCB0aGlzLnByb3ZpZGVyLmdldEJsb2NrKHJlY2VpcHQuYmxvY2tIYXNoIHx8IFwiXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEpzb25ScGNQcm92aWRlci5yZWNlaXB0c1toYXNoXS5ibG9ja01pbmVyID0gUHVibGljS2V5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZnJvbVByb3RvYnVmKGJsb2NrLmJsb2NrX3NpZy5wdWJsaWNfa2V5KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmhhc2goKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRvQmVjaDMyKHRoaXMubmV0d29yayk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zPy5vblN0YXR1c0NoYW5nZSkgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5vblN0YXR1c0NoYW5nZShyZWNlaXB0KVxyXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gge307XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gMy4gUmV0dXJuIHRyYW5zYWN0aW9uIHJlY2VpcHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpzb25ScGNQcm92aWRlci5yZWNlaXB0c1toYXNoXVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIF0pXHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF9jbGVhblNpZ25hdHVyZXMobmV3VGFyZ2V0OiBTcGVjcyk6IGFueSB7XHJcbiAgICAgICAgdGhpcy5fcGF5bG9hZC5yZXNldFRhcmdldChuZXdUYXJnZXQpXHJcbiAgICAgICAgdGhpcy5fc2lnbmF0dXJlcyA9IFtdXHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF9nZXRJbmZsaWdodEJ5dGVjb2RlKCk6IFVpbnQ4QXJyYXkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IG9iaiA9IHRoaXMuX3RvUHJvdG9idWYoKVxyXG4gICAgICAgIGNvbnN0IGVyciA9IHRoaXMuX3Byb3RvQnVmLnZlcmlmeShvYmopXHJcbiAgICAgICAgaWYgKCFlcnIpIHtcclxuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMuX3Byb3RvQnVmLmZyb21PYmplY3Qob2JqKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcHJvdG9CdWYuZW5jb2RlKG1lc3NhZ2UpLmZpbmlzaCgpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX2dldEluZmxpZ2h0UmVjZWlwdCgpOiBUcmFuc2FjdGlvblJlY2VpcHQgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IGhhc2ggPSB0aGlzLl9wYXlsb2FkLmhhc2hcclxuICAgICAgICBpZiAoaGFzaCkge1xyXG4gICAgICAgICAgICByZXR1cm4gSnNvblJwY1Byb3ZpZGVyLnJlY2VpcHRzW2hhc2hdXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX2dldEluZmxpZ2h0VHJhbnNtaXNzaW9uKCk6IFRyYW5zbWlzc2lvbiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgYnl0ZWNvZGU6IHRoaXMuX2dldEluZmxpZ2h0Qnl0ZWNvZGUoKSxcclxuICAgICAgICAgICAgaGFzaDogdGhpcy5fcGF5bG9hZC5oYXNoLFxyXG4gICAgICAgICAgICBtZXNzYWdlOiB0aGlzLl90b0pTT04odHJ1ZSksXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfcmVjb3ZlcklucHV0VXR4b3MoKTogYW55IHt9XHJcbiAgICBwcm90ZWN0ZWQgX3JlY292ZXJPdXRwdXRVdHhvcygpOiBhbnkge31cclxuXHJcbiAgICBwcm90ZWN0ZWQgX3Vwc2VydFRyYW5zYWN0aW9uUmVjZWlwdChoYXNoOiBIYXNoLCB0YXJnZXQ6IFNwZWNzLCBzdGF0dXM6IFRyYW5zYWN0aW9uU3RhdHVzKTogVHJhbnNhY3Rpb25SZWNlaXB0IHtcclxuICAgICAgICBKc29uUnBjUHJvdmlkZXIucmVjZWlwdHNbaGFzaF0gPSB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuX3BheWxvYWQuaW50b1JlY2VpcHQodGFyZ2V0LCB0aGlzLm5ldHdvcmspLFxyXG4gICAgICAgICAgICBoYXNoLFxyXG4gICAgICAgICAgICBjaGFuZ2U6IHRoaXMuX3BheWxvYWQuY2hhbmdlLFxyXG4gICAgICAgICAgICBmZWVzOiB0aGlzLl9wYXlsb2FkLmZlZXMsXHJcbiAgICAgICAgICAgIGZyb206IHRoaXMuX2Zyb20sXHJcbiAgICAgICAgICAgIHN0YXR1cyxcclxuICAgICAgICAgICAgdGltZXN0YW1wOiBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSxcclxuICAgICAgICAgICAgdHg6IHRoaXMuX3RvSlNPTih0cnVlKSxcclxuICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlLFxyXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5fcGF5bG9hZC52YWx1ZSxcclxuICAgICAgICAgICAgd2VpZ2h0OiB0aGlzLl9wYXlsb2FkLndlaWdodCxcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIEpzb25ScGNQcm92aWRlci5yZWNlaXB0c1toYXNoXVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBfc2lnblRyYW5zYWN0aW9uUGF5bG9hZCgpOiBIYXNoO1xyXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IF90b0pTT04oX2h1bWFuaXplOiBib29sZWFuKTogYW55O1xyXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IF90b1Byb3RvYnVmKCk6IGFueTtcclxufVxyXG5cclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUcmFuc21pdHRlck11bHRpU2lnPFNwZWNzLCBQYXlsb2FkIGV4dGVuZHMgSVRyYW5zYWN0aW9uUGF5bG9hZE11bHRpU2lnPFNwZWNzPj4gXHJcbiAgICBleHRlbmRzIFRyYW5zbWl0dGVyPFNwZWNzLCBQYXlsb2FkPiBcclxue1xyXG4gICAgY29uc3RydWN0b3IgKHByb3RvVHlwZU5hbWU6IHN0cmluZywgcGF5bG9hZDogUGF5bG9hZCwgbGVkZ2VyOiBJTGVkZ2VyLCBjaGFuZ2VQa2g/OiBQdWJsaWNLZXlIYXNoU3RyaW5nKSB7XHJcbiAgICAgICAgc3VwZXIocHJvdG9UeXBlTmFtZSwgcGF5bG9hZCwgbGVkZ2VyLCBjaGFuZ2VQa2gpXHJcbiAgICAgICAgdGhpcy5fcGF5bG9hZCA9IHBheWxvYWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLy8vIFJlY292ZXIgZm9ybWVybHkgY29uc3VtZWQgVVRYT3MgYnkgYSBmYWlsaW5nIHRyYW5zYWN0aW9uIGJhY2sgdG8gdGhlaXIgcmVzcGVjdGl2ZSBzaWduZXIncyBVVFhPIHBvb2xcclxuICAgIHByb3RlY3RlZCBfcmVjb3ZlcklucHV0VXR4b3MoKTogYW55IHtcclxuICAgICAgICBpZiAodGhpcy5fcGF5bG9hZC5pbnB1dHMpIHsgICAgXHJcbiAgICAgICAgICAgIHRoaXMubGVkZ2VyLmFkZFV0eG9zKC4uLnRoaXMuX3BheWxvYWQuaW5wdXRzKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLy8gUmVjb3ZlciBzZWxmLXRhcmdldGVkIG91dHB1dHMgYXMgZXhwZW5kYWJsZSB1dHhvcyBvbiB0aGVpciByZXNwZWN0aXZlIHNpZ25lcidzIG1lbW9pemVkIGNhY2hlXHJcbiAgICBwcm90ZWN0ZWQgX3JlY292ZXJPdXRwdXRVdHhvcygpOiBhbnkge1xyXG4gICAgICAgIGlmICh0aGlzLl9wYXlsb2FkLmhhc2ggJiYgdGhpcy5fcGF5bG9hZC5vdXRwdXRzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHV0eG9zOiBBcnJheTxVdHhvPiA9IFtdXHJcbiAgICAgICAgICAgIHRoaXMuX3BheWxvYWQub3V0cHV0cy5mb3JFYWNoKCh2dG8sIGluZGV4KSA9PiB7ICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubGVkZ2VyLmdldFNpZ25lcih2dG8ucGtoKSkgdXR4b3MucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgc2lnbmVyOiB2dG8ucGtoLFxyXG4gICAgICAgICAgICAgICAgICAgIG91dHB1dF9wb2ludGVyOiBgJHt0aGlzLl9wYXlsb2FkLmhhc2h9OiR7aW5kZXh9YCxcclxuICAgICAgICAgICAgICAgICAgICB0aW1lbG9jazogdnRvLnRpbWVfbG9jayxcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdnRvLnZhbHVlLFxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGhpcy5sZWRnZXIuYWRkVXR4b3MoLi4udXR4b3MpXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfc2lnblRyYW5zYWN0aW9uUGF5bG9hZCgpOiBIYXNoIHtcclxuICAgICAgICBjb25zdCBoYXNoID0gdGhpcy5fcGF5bG9hZC5oYXNoXHJcbiAgICAgICAgaWYgKCFoYXNoKSB7XHJcbiAgICAgICAgICAgIHRocm93IEVycm9yKFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogaW50ZXJuYWwgZXJyb3I6IHVuYWJsZSB0byBoYXNoaWZ5IHBheWxvYWQ6ICR7dGhpcy5fcGF5bG9hZC50b0pTT04odHJ1ZSwgdGhpcy5uZXR3b3JrKX19LmBcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3BheWxvYWQuaW5wdXRzLmZvckVhY2godXR4byA9PiB7IFxyXG4gICAgICAgICAgICAgICAgY29uc3Qgc2lnbmVyID0gdGhpcy5sZWRnZXIuZ2V0U2lnbmVyKHV0eG8uc2lnbmVyKVxyXG4gICAgICAgICAgICAgICAgaWYgKCFzaWduZXIpIHRocm93IEVycm9yKFxyXG4gICAgICAgICAgICAgICAgICAgIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IGludGVybmFsIGVycm9yOiBjYW5ub3QgZmluZCBTaWduZXIgJHt1dHhvLnNpZ25lcn0gaW4gJHt0aGlzLmxlZGdlci5jb25zdHJ1Y3Rvci5uYW1lfSAke3RoaXMubGVkZ2VyLnBraH0uYCAgICBcclxuICAgICAgICAgICAgICAgICk7IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGAuLi5zaWduZXIgJHtzaWduZXIucGtofSBzaWduaW5nIGhhc2ggJHtoYXNofS4uLmApXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2lnbmF0dXJlcy5wdXNoKHNpZ25lci5zaWduSGFzaChoYXNoKSkgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHJldHVybiBoYXNoXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfdG9KU09OKGh1bWFuaXplOiBib29sZWFuKTogYW55IHtcclxuICAgICAgICByZXR1cm4geyBcclxuICAgICAgICAgICAgW3RoaXMudHlwZV06IHsgXHJcbiAgICAgICAgICAgICAgICBib2R5OiB0aGlzLl9wYXlsb2FkLnRvSlNPTihodW1hbml6ZSwgdGhpcy5uZXR3b3JrKSxcclxuICAgICAgICAgICAgICAgIHNpZ25hdHVyZXM6IHRoaXMuX3NpZ25hdHVyZXMsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfdG9Qcm90b2J1ZigpOiBhbnkge1xyXG4gICAgICAgIGNvbnN0IGJvZHkgPSB0aGlzLl9wYXlsb2FkLnRvUHJvdG9idWYoKVxyXG4gICAgICAgIGlmIChib2R5ICYmIHRoaXMuX3NpZ25hdHVyZXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGJvZHksXHJcbiAgICAgICAgICAgICAgICBzaWduYXR1cmVzOiB0aGlzLl9zaWduYXR1cmVzLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/crypto/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAKxE,qBAAa,KAAK;IACd,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;WACV,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK;WAOpC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK;WAGrC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK;WAGjC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;WAW7B,IAAI,IAAI,KAAK;gBAGd,MAAM,EAAE,MAAM;IAG3B,IAAW,MAAM,IAAI,MAAM,CAE1B;IACD,IAAW,QAAQ,IAAI,MAAM,CAE5B;IACD,IAAW,IAAI,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/crypto/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,6 +42,7 @@ class Coins {
|
|
|
42
42
|
throw new TypeError(`${this.constructor.name}: internal error: too many coins: ${quotient.toString()} > ${Number.MAX_SAFE_INTEGER}`);
|
|
43
43
|
}
|
|
44
44
|
const rest = Number(BigInt(this.coins) - quotient * 1000000000n) / 1000000000;
|
|
45
|
+
// console.log("wits() =>", this.coins.toString(), quotient.toString(), rest, Number(quotient) + rest)
|
|
45
46
|
return Number(quotient) + rest;
|
|
46
47
|
}
|
|
47
48
|
toString(decimals = 9) {
|
|
@@ -269,4 +270,4 @@ exports.TransmissionError = TransmissionError;
|
|
|
269
270
|
function matchingUint8Arrays(a, b) {
|
|
270
271
|
return a.length === b.length && a.every((value, index) => value === b[index]);
|
|
271
272
|
}
|
|
272
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NyeXB0by90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUE7QUFDdEMsbUNBQStCO0FBRy9CLCtDQUF1RjtBQUN2RixtQ0FBZ0M7QUFFaEMsTUFBYSxLQUFLO0lBRVAsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFnQjtRQUN0QyxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQ25CLE9BQU8sQ0FBQyxNQUFNO2NBQ1IsT0FBTyxDQUFDLE1BQU07Y0FDZCxPQUFPLENBQUMsUUFBUSxDQUN6QixDQUFBO0lBQ0wsQ0FBQztJQUNNLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBZ0I7UUFDdkMsT0FBTyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUM5QixDQUFDO0lBQ00sTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFjO1FBQ25DLE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDNUIsQ0FBQztJQUNNLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBWTtRQUMvQixJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNqQyxNQUFNLElBQUksU0FBUyxDQUNmLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLG9DQUFvQyxJQUFJLE1BQU0sTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQ2xHLENBQUE7UUFDTCxDQUFDO1FBQ0QsT0FBTyxJQUFJLEtBQUssQ0FDWixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxFQUFFO2NBQzlCLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FB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O1FBQ2QsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUE7SUFDMUIsQ0FBQztDQUNKO0FBQ0QsTUFBYSxZQUFhLFNBQVEsZ0JBQWdCO0lBQzlDLFlBQVksT0FBMkIsRUFBRSxPQUFnQjtRQUNyRCxLQUFLLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQzNCLENBQUM7Q0FDSjtBQUpELG9DQUlDO0FBRUQsTUFBYSxZQUFhLFNBQVEsZ0JBQWdCO0lBRTlDLFlBQWEsS0FBYSxFQUFFLE9BQTJCLEVBQUUsT0FBZ0I7UUFDckUsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtJQUN0QixDQUFDO0NBQ0o7QUFORCxvQ0FNQztBQUdELE1BQWEsaUJBQWtCLFNBQVEsS0FBSztJQUd4QyxZQUFZLFFBQXNCLEVBQUUsS0FBVztRQUMzQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO1FBQzVCLE9BQU8sS0FBSyxFQUFFLEtBQUssQ0FBQTtRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtRQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtJQUM1QixDQUFDO0NBQ0o7QUFURCw4Q0FTQztBQUdELHVIQUF1SDtBQUN2SCwyQkFBMkI7QUFFM0IsU0FBUyxtQkFBbUIsQ0FBQyxDQUFhLEVBQUUsQ0FBYTtJQUNyRCxPQUFPLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0FBQ2pGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBzZWNwMjU2azEgPSByZXF1aXJlKCdzZWNwMjU2azEnKVxuaW1wb3J0IHsgYmVjaDMyIH0gZnJvbSAnYmVjaDMyJ1xuaW1wb3J0IHsgQmFsYW5jZSwgRXBvY2gsIEhhc2gsIEhleFN0cmluZywgVXR4b01ldGFkYXRhIH0gZnJvbSBcIi4uL3R5cGVzXCJcblxuaW1wb3J0IHsgZnJvbUhleFN0cmluZywgaXNIZXhTdHJpbmcsIHRvSGV4U3RyaW5nLCB3aG9sZV93aXRzIH0gZnJvbSBcIi4uLy4uL2Jpbi9oZWxwZXJzXCJcbmltcG9ydCB7IHNoYTI1NiB9IGZyb20gXCIuL3V0aWxzXCJcblxuZXhwb3J0IGNsYXNzIENvaW5zIHtcbiAgICBwcm90ZWN0ZWQgY29pbnM6IGJpZ2ludDtcbiAgICBwdWJsaWMgc3RhdGljIGZyb21CYWxhbmNlKGJhbGFuY2U6IEJhbGFuY2UpOiBDb2lucyB7XG4gICAgICAgIHJldHVybiBDb2lucy5mcm9tUGVkcm9zKFxuICAgICAgICAgICAgYmFsYW5jZS5sb2NrZWRcbiAgICAgICAgICAgICAgICArIGJhbGFuY2Uuc3Rha2VkXG4gICAgICAgICAgICAgICAgKyBiYWxhbmNlLnVubG9ja2VkXG4gICAgICAgIClcbiAgICB9XG4gICAgcHVibGljIHN0YXRpYyBmcm9tTmFub3dpdHMobmFub3dpdHM6IGJpZ2ludCk6IENvaW5zIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb2lucyhuYW5vd2l0cylcbiAgICB9XG4gICAgcHVibGljIHN0YXRpYyBmcm9tUGVkcm9zKHBlZHJvczogYmlnaW50KTogQ29pbnMge1xuICAgICAgICByZXR1cm4gbmV3IENvaW5zKHBlZHJvcylcbiAgICB9XG4gICAgcHVibGljIHN0YXRpYyBmcm9tV2l0cyh3aXRzOiBudW1iZXIpOiBDb2lucyB7XG4gICAgICAgIGlmICh3aXRzID4gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogaW50ZXJuYWwgZXJyb3I6IHRvbyBtYW55IHdpdHM6ICR7d2l0c30gPiAke051bWJlci5NQVhfU0FGRV9JTlRFR0VSfWBcbiAgICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IENvaW5zKFxuICAgICAgICAgICAgQmlnSW50KE1hdGguZmxvb3Iod2l0cykpICogMTBuICoqIDluXG4gICAgICAgICAgICAgICAgKyBCaWdJbnQoTWF0aC5mbG9vcigod2l0cyAtIE1hdGguZmxvb3Iod2l0cykpICogMTAwMDAwMDAwMCkpXG4gICAgICAgIClcbiAgICB9XG4gICAgcHVibGljIHN0YXRpYyB6ZXJvKCk6IENvaW5zIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb2lucygwbilcbiAgICB9XG4gICAgY29uc3RydWN0b3IgKHBlZHJvczogYmlnaW50KSB7XG4gICAgICAgIHRoaXMuY29pbnMgPSBwZWRyb3NcbiAgICB9XG4gICAgcHVibGljIGdldCBwZWRyb3MoKTogYmlnaW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29pbnNcbiAgICB9XG4gICAgcHVibGljIGdldCBuYW5vd2l0cygpOiBiaWdpbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2luc1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IHdpdHMoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgcXVvdGllbnQgPSBCaWdJbnQodGhpcy5jb2lucykgLyAxMDAwMDAwMDAwblxuICAgICAgICBpZiAoTnVtYmVyKHF1b3RpZW50KSA+IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IGludGVybmFsIGVycm9yOiB0b28gbWFueSBjb2luczogJHtxdW90aWVudC50b1N0cmluZygpfSA+ICR7TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJ9YFxuICAgICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3QgPSBOdW1iZXIoQmlnSW50KHRoaXMuY29pbnMpIC0gcXVvdGllbnQgKiAxMDAwMDAwMDAwbikgLyAxMDAwMDAwMDAwXG4gICAgICAgIHJldHVybiBOdW1iZXIocXVvdGllbnQpICsgcmVzdFxuICAgIH1cbiAgICBwdWJsaWMgdG9TdHJpbmcoZGVjaW1hbHMgPSA5KTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHdob2xlX3dpdHModGhpcy5jb2lucywgZGVjaW1hbHMpXG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBLZXlQYXRoID0gQXJyYXk8bnVtYmVyPlxuXG5leHBvcnQgdHlwZSBLZXllZFNpZ25hdHVyZSA9IHtcbiAgICBzaWduYXR1cmU6IHsgU2VjcDI1NmsxOiB7IGRlcjogQXJyYXk8bnVtYmVyPiB9fSxcbiAgICBwdWJsaWNfa2V5OiB7XG4gICAgICAgIGJ5dGVzOiBBcnJheTxudW1iZXI+O1xuICAgICAgICBjb21wcmVzc2VkOiBudW1iZXIsXG4gICAgfSxcbn07XG5cbmV4cG9ydCB0eXBlIFB1YmxpY0tleUhhc2hTdHJpbmcgPSBIZXhTdHJpbmdcblxuaW50ZXJmYWNlIEtleSB7XG4gICAgYnl0ZXM6IFVpbnQ4QXJyYXk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJpdmF0ZUtleSBleHRlbmRzIEtleSB7XG4gICAgdHlwZTogXCJwcml2YXRlXCI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGljS2V5IGV4dGVuZHMgS2V5IHtcbiAgICB0eXBlOiBcInB1YmxpY1wiO1xufVxuXG5leHBvcnQgdHlwZSBUcmFuc2FjdGlvbkNhbGxiYWNrID0gKHJlY2VpcHQ6IFRyYW5zYWN0aW9uUmVjZWlwdCwgZXJyb3I/OiBhbnkpID0+IGFueVxuXG5leHBvcnQgdHlwZSBUcmFuc2FjdGlvblBhcmFtcyA9IHtcbiAgICBkZWFkbGluZT86IEVwb2NoLFxuICAgIGZlZXM/OiBUcmFuc2FjdGlvblByaW9yaXR5IHwgQ29pbnMsXG59XG5cbmV4cG9ydCBlbnVtIFRyYW5zYWN0aW9uUHJpb3JpdHkge1xuICAgIFN0aW5reSA9IFwic3Rpbmt5XCIsXG4gICAgTG93ID0gXCJsb3dcIixcbiAgICBNZWRpdW0gPSBcIm1lZGl1bVwiLFxuICAgIEhpZ2ggPSBcImhpZ2hcIixcbiAgICBPcHVsZW50ID0gXCJvcHVsZW50XCIsXG59XG5cbmV4cG9ydCB0eXBlIFRyYW5zYWN0aW9uUmVjZWlwdCA9IHtcbiAgICBhdXRob3JpemF0aW9uPzogSGV4U3RyaW5nO1xuICAgIGJsb2NrRXBvY2g/OiBFcG9jaCxcbiAgICBibG9ja0hhc2g/OiBIYXNoLFxuICAgIGJsb2NrTWluZXI/OiBQdWJsaWNLZXlIYXNoU3RyaW5nLFxuICAgIGJsb2NrVGltZXN0YW1wPzogbnVtYmVyLFxuICAgIGNvbmZpcm1hdGlvbnM/OiBudW1iZXI7XG4gICAgY2hhbmdlPzogQ29pbnM7XG4gICAgZHJvSGFzaD86IEhhc2g7XG4gICAgZXJyb3I/OiBFcnJvcixcbiAgICBmZWVzOiBDb2lucztcbiAgICBmcm9tPzogQXJyYXk8UHVibGljS2V5SGFzaFN0cmluZz4gfCBQdWJsaWNLZXlIYXNoU3RyaW5nO1xuICAgIGhhc2g6IEhhc2g7XG4gICAgb3V0cHV0TG9jaz86IG51bWJlcjtcbiAgICByYWRBcmdzPzogYW55O1xuICAgIHJhZEhhc2g/OiBIZXhTdHJpbmc7XG4gICAgcmVjaXBpZW50cz86IEFycmF5PFtQdWJsaWNLZXlIYXNoU3RyaW5nLCBDb2luc10+O1xuICAgIHN0YXR1czogc3RyaW5nO1xuICAgIHRpbWVzdGFtcDogbnVtYmVyO1xuICAgIHR5cGU6IHN0cmluZztcbiAgICB0eD86IGFueTtcbiAgICB2YWxpZGF0b3I/OiBQdWJsaWNLZXlIYXNoU3RyaW5nO1xuICAgIHZhbHVlPzogQ29pbnM7XG4gICAgd2VpZ2h0OiBudW1iZXI7XG4gICAgd2l0aGRyYXdlcj86IFB1YmxpY0tleUhhc2hTdHJpbmc7XG4gICAgd2l0bmVzc2VzPzogbnVtYmVyIHwgUmVjb3JkPFB1YmxpY0tleUhhc2hTdHJpbmcsIENvaW5zPjtcbn1cblxuZXhwb3J0IHR5cGUgVHJhbnNhY3Rpb25TdGF0dXMgPSBcInNpZ25lZFwiIHwgXCJwZW5kaW5nXCIgfCBcInJlbGF5ZWRcIiB8IFwicmVtb3ZlZFwiIHwgXCJtaW5lZFwiIHwgXCJjb25maXJtZWRcIiB8IFwiZmluYWxpemVkXCI7XG5cbmV4cG9ydCB0eXBlIFRyYW5zbWlzc2lvbiA9IHtcbiAgICBieXRlY29kZT86IFVpbnQ4QXJyYXksXG4gICAgaGFzaD86IEhhc2g7XG4gICAgbWVzc2FnZTogYW55O1xufVxuXG5leHBvcnQgdHlwZSBVdHhvID0gVXR4b01ldGFkYXRhICYgeyBzaWduZXI6IFB1YmxpY0tleUhhc2hTdHJpbmcgfVxuXG5leHBvcnQgdHlwZSBVdHhvQ2FjaGVJbmZvID0ge1xuICAgIC8vIHRvdGFsIGFtb3VudCBvZiBleHBlbmRhYmxlIGZ1bmRzIHdpdGggY3VycmVudGx5IGNhY2hlZCBVVFhPc1xuICAgIGV4cGVuZGFibGU6IGJpZ2ludCwgXG4gICAgLy8gbnVtYmVyIG9mIGNhY2hlZCBVVFhPc1xuICAgIHNpemU6IG51bWJlciwgXG4gICAgLy8gZWFybGllc3Qgb2YgYWxsIHRpbWVsb2NrcyBpbiB0aGUgY2FjaMOpXG4gICAgdGltZWxvY2s6IG51bWJlcixcbn1cblxuZXhwb3J0IHR5cGUgVXR4b1BvaW50ZXIgPSB7XG4gICAgLy8gdHJhbnNhY3Rpb24gaWRlbnRpZmllclxuICAgIHRyYW5zYWN0aW9uX2lkOiBIYXNoO1xuICAgIC8vIG91dHB1dCBpbmRleCB3aXRoaW4gcmVmZXJyZWQgdHJhbnNhY3Rpb25cbiAgICBvdXRwdXRfaW5kZXg6IG51bWJlcjtcbn07XG5cbmV4cG9ydCBlbnVtIFV0eG9TZWxlY3Rpb25TdHJhdGVneSB7XG4gICAgQmlnRmlyc3QgPSBcImJpZy1maXJzdFwiLFxuICAgIFJhbmRvbSA9IFwicmFuZG9tXCIsXG4gICAgU2xpbUZpdCA9IFwic2xpbS1maXRcIixcbiAgICBTbWFsbEZpcnN0ID0gXCJzbWFsbC1maXJzdFwiLFxufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8gRVhQT1JURUQgQ0xBU1NFUyBcblxuLy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmV4cG9ydCBjbGFzcyBQdWJsaWNLZXkgaW1wbGVtZW50cyBLZXkge1xuICAgIFxuICAgIHB1YmxpYyByZWFkb25seSBjb21wcmVzc2VkOiBudW1iZXI7XG4gICAgcHVibGljIHJlYWRvbmx5IGJ5dGVzOiBVaW50OEFycmF5O1xuXG4gICAgc3RhdGljIGZyb21Qcm90b2J1Zihwcm90b2J1ZjogeyBjb21wcmVzc2VkOiBudW1iZXIsIGJ5dGVzOiBBcnJheTxudW1iZXI+IH0pOiBQdWJsaWNLZXkge1xuICAgICAgICByZXR1cm4gbmV3IFB1YmxpY0tleShwcm90b2J1Zi5jb21wcmVzc2VkLCBVaW50OEFycmF5LmZyb20ocHJvdG9idWYuYnl0ZXMpKVxuICAgIH1cblxuICAgIHN0YXRpYyBmcm9tVWludDhBcnJheSh1aW50OEFycmF5OiBVaW50OEFycmF5KTogUHVibGljS2V5IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQdWJsaWNLZXkoXG4gICAgICAgICAgICB1aW50OEFycmF5WzBdLFxuICAgICAgICAgICAgdWludDhBcnJheS5zbGljZSgxKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgcmVjb3ZlckZyb20ocmVjb3ZlcmFibGU6IGFueSwgbXNnOiBVaW50OEFycmF5KTogUHVibGljS2V5IHtcbiAgICAgICAgbGV0IGJ5dGVzXG4gICAgICAgIGlmIChpc0hleFN0cmluZyhyZWNvdmVyYWJsZSkpIHtcbiAgICAgICAgICAgIGJ5dGVzID0gZnJvbUhleFN0cmluZyhyZWNvdmVyYWJsZSlcbiAgICAgICAgfSBlbHNlIGlmIChyZWNvdmVyYWJsZSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgICAgICAgYnl0ZXMgPSBVaW50OEFycmF5LmZyb20ocmVjb3ZlcmFibGUuYnVmZmVyKVxuICAgICAgICB9IGVsc2UgaWYgKHJlY292ZXJhYmxlIGluc3RhbmNlb2YgVWludDhBcnJheSkge1xuICAgICAgICAgICAgYnl0ZXMgPSByZWNvdmVyYWJsZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUHVibGljS2V5OiB1bnN1cHBvcnRlZCByZWNvdmVyYWJsZSBzaWduYXR1cmUgZm9ybWF0OiAke3JlY292ZXJhYmxlfWApXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGJ5dGVzLmxlbmd0aCAhPT0gNjUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFB1YmxpY0tleTogZXhwZWN0ZWQgcmVjb3ZlcmFibGUgc2lnbmF0dXJlIHdpdGggbGVuZ3RoIDY1OiAke3RvSGV4U3RyaW5nKGJ5dGVzKX1gKVxuICAgICAgICB9IFxuICAgICAgICBjb25zdCBbIHJlY292ZXJ5SWQsIHNpZ25hdHVyZSBdID0gWyBieXRlc1swXSwgYnl0ZXMuc2xpY2UoMSkgXVxuICAgICAgICByZXR1cm4gUHVibGljS2V5LmZyb21VaW50OEFycmF5KHNlY3AyNTZrMS5lY2RzYVJlY292ZXIoc2lnbmF0dXJlLCByZWNvdmVyeUlkLCBtc2cpKVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGNvbXByZXNzZWQ6IG51bWJlciwgYnl0ZXM6IFVpbnQ4QXJyYXkpIHtcbiAgICAgICAgdGhpcy5jb21wcmVzc2VkID0gY29tcHJlc3NlZFxuICAgICAgICB0aGlzLmJ5dGVzID0gYnl0ZXNcbiAgICB9XG5cbiAgICBwdWJsaWMgZXF1YWxzKHB1YktleTogUHVibGljS2V5KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBwdWJLZXkuY29tcHJlc3NlZCA9PT0gdGhpcy5jb21wcmVzc2VkICYmIG1hdGNoaW5nVWludDhBcnJheXMocHViS2V5LmJ5dGVzLCBwdWJLZXkuYnl0ZXMpXG4gICAgfVxuXG4gICAgcHVibGljIGhhc2goKTogUHVibGljS2V5SGFzaCB7XG4gICAgICAgIHJldHVybiBQdWJsaWNLZXlIYXNoLmZyb21QdWJsaWNLZXkodGhpcylcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9IZXhTdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRvSGV4U3RyaW5nKFt0aGlzLmNvbXByZXNzZWQsIC4uLnRoaXMuYnl0ZXNdKVxuICAgIH1cblxuICAgIHB1YmxpYyB0b1VpbnQ4QXJyYXkoKTogVWludDhBcnJheSB7XG4gICAgICAgIHJldHVybiBVaW50OEFycmF5LmZyb20oW3RoaXMuY29tcHJlc3NlZCwgLi4udGhpcy5ieXRlc10pXG4gICAgfVxufTtcblxuXG4vLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IGNsYXNzIFB1YmxpY0tleUhhc2gge1xuXG4gICAgc3RhdGljIGZyb21IYXNoKGhhc2g6IFVpbnQ4QXJyYXkpOiBQdWJsaWNLZXlIYXNoIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQdWJsaWNLZXlIYXNoKGJlY2gzMi50b1dvcmRzKGhhc2gpKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZnJvbUhleFN0cmluZyhoYXNoOiBIZXhTdHJpbmcpOiBQdWJsaWNLZXlIYXNoIHtcbiAgICAgICAgcmV0dXJuIFB1YmxpY0tleUhhc2guZnJvbUhhc2goZnJvbUhleFN0cmluZyhoYXNoKSlcbiAgICB9XG4gICAgXG4gICAgc3RhdGljIGZyb21QdWJsaWNLZXkocGs6IFB1YmxpY0tleSk6IFB1YmxpY0tleUhhc2gge1xuICAgICAgICByZXR1cm4gUHVibGljS2V5SGFzaC5mcm9tSGFzaChcbiAgICAgICAgICAgIHNoYTI1NihcbiAgICAgICAgICAgICAgICBCdWZmZXIuZnJvbShbcGsuY29tcHJlc3NlZCwgLi4ucGsuYnl0ZXNdKVxuICAgICAgICAgICAgKS5zdWJhcnJheSgwLCAyMClcbiAgICAgICAgKTtcbiAgICB9XG4gICAgXG4gICAgc3RhdGljIGZyb21CZWNoMzIocGtoOiBzdHJpbmcpOiBQdWJsaWNLZXlIYXNoIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHBraCA9IHBraC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICBpZiAocGtoLnN0YXJ0c1dpdGgoJ3dpdCcpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQdWJsaWNLZXlIYXNoKGJlY2gzMi5kZWNvZGUocGtoLCA2Nikud29yZHMpXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBraC5zdGFydHNXaXRoKCd0d2l0JykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFB1YmxpY0tleUhhc2goYmVjaDMyLmRlY29kZShwa2gsIDY3KS53b3JkcylcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUHVibGljS2V5SGFzaDogaW52YWxpZCBiZWNoMzIgc3RyaW5nOiAke3BraH1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBQdWJsaWNLZXlIYXNoOiBpbnZhbGlkIGJlY2gzMiBzdHJpbmc6ICR7cGtofWApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHdvcmRzOiBudW1iZXJbXTtcbiAgICBcbiAgICBjb25zdHJ1Y3Rvcih3b3JkczogbnVtYmVyW10pIHtcbiAgICAgICAgdGhpcy53b3JkcyA9IHdvcmRzXG4gICAgfVxuXG4gICAgcHVibGljIHRvQmVjaDMyKG5ldHdvcmsgPSBcIm1haW5uZXRcIik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBuZXR3b3JrID09PSBcIm1haW5uZXRcIiA/IGJlY2gzMi5lbmNvZGUoJ3dpdCcsIHRoaXMud29yZHMsIDY2KSA6IGJlY2gzMi5lbmNvZGUoJ3R3aXQnLCB0aGlzLndvcmRzLCA2Nyk7XG4gICAgfVxuXG4gICAgcHVibGljIHRvQnl0ZXMyMCgpOiBVaW50OEFycmF5IHtcbiAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkuZnJvbShiZWNoMzIuZnJvbVdvcmRzKHRoaXMud29yZHMpLnNsaWNlKDAsIDIwKSlcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9CeXRlczMyKCk6IFVpbnQ4QXJyYXkge1xuICAgICAgICByZXR1cm4gVWludDhBcnJheS5mcm9tKFtcbiAgICAgICAgICAgIC4uLmJlY2gzMi5mcm9tV29yZHModGhpcy53b3Jkcykuc2xpY2UoMCwgMjApLFxuICAgICAgICAgICAgLi4ubmV3IEFycmF5KDEyKS5maWxsKDApLFxuICAgICAgICBdKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9IZXhTdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRvSGV4U3RyaW5nKHRoaXMudG9CeXRlczIwKCkpXG4gICAgfVxufVxuXG5cbi8vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgY2xhc3MgU2lnbmF0dXJlIHtcblxuICAgIHN0YXRpYyBmcm9tSGV4U3RyaW5nKGhleDogc3RyaW5nKTogU2lnbmF0dXJlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTaWduYXR1cmUoZnJvbUhleFN0cmluZyhoZXgpKVxuICAgIH1cblxuICAgIHB1YmxpYyByZWFkb25seSBieXRlczogVWludDhBcnJheTtcblxuICAgIGNvbnN0cnVjdG9yIChieXRlczogVWludDhBcnJheSkge1xuICAgICAgICB0aGlzLmJ5dGVzID0gYnl0ZXNcbiAgICB9XG4gICAgXG4gICAgcHVibGljIHRvSGV4U3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0b0hleFN0cmluZyh0aGlzLmJ5dGVzKVxuICAgIH1cbn1cblxuXG4vLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IGNsYXNzIFJlY292ZXJhYmxlU2lnbmF0dXJlIGV4dGVuZHMgU2lnbmF0dXJlIHtcblxuICAgIHN0YXRpYyBmcm9tKHJlY292ZXJhYmxlOiBhbnksIG1zZzogVWludDhBcnJheSk6IFJlY292ZXJhYmxlU2lnbmF0dXJlIHtcbiAgICAgICAgbGV0IGJ5dGVzXG4gICAgICAgIGlmIChpc0hleFN0cmluZyhyZWNvdmVyYWJsZSkpIHtcbiAgICAgICAgICAgIGJ5dGVzID0gZnJvbUhleFN0cmluZyhyZWNvdmVyYWJsZSkuc2xpY2UoMSlcbiAgICAgICAgfSBlbHNlIGlmIChyZWNvdmVyYWJsZSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgICAgICAgYnl0ZXMgPSBVaW50OEFycmF5LmZyb20ocmVjb3ZlcmFibGUuYnVmZmVyKS5zbGljZSgxKVxuICAgICAgICB9IGVsc2UgaWYgKHJlY292ZXJhYmxlIGluc3RhbmNlb2YgVWludDhBcnJheSkge1xuICAgICAgICAgICAgYnl0ZXMgPSByZWNvdmVyYWJsZS5zbGljZSgxKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUmVjb3ZlcmFibGVTaWduYXR1cmU6IHVuc3VwcG9ydGVkIHJlY292ZXJhYmxlIHNpZ25hdHVyZSBmb3JtYXQ6ICR7cmVjb3ZlcmFibGV9YClcbiAgICAgICAgfVxuICAgICAgICBpZiAoYnl0ZXMubGVuZ3RoICE9PSA2NCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUmVjb3ZlcmFibGVTaWduYXRyZTogZXhwZWN0ZWQgcmVjb3ZlcmFibGUgc2lnbmF0dXJlIHdpdGggbGVuZ3RoIDY1OiAke3RvSGV4U3RyaW5nKGJ5dGVzKX1gKVxuICAgICAgICB9IFxuICAgICAgICByZXR1cm4gbmV3IFJlY292ZXJhYmxlU2lnbmF0dXJlKFB1YmxpY0tleS5yZWNvdmVyRnJvbShyZWNvdmVyYWJsZSwgbXNnKSwgYnl0ZXMsIG1zZylcbiAgICB9XG5cbiAgICBzdGF0aWMgZnJvbUtleWVkU2lnbmF0dXJlKGtzOiBLZXllZFNpZ25hdHVyZSwgbXNnOiBVaW50OEFycmF5KTogUmVjb3ZlcmFibGVTaWduYXR1cmUge1xuICAgICAgICByZXR1cm4gbmV3IFJlY292ZXJhYmxlU2lnbmF0dXJlKFxuICAgICAgICAgICAgUHVibGljS2V5LmZyb21Qcm90b2J1Zihrcy5wdWJsaWNfa2V5KSxcbiAgICAgICAgICAgIHNlY3AyNTZrMS5zaWduYXR1cmVJbXBvcnQoVWludDhBcnJheS5mcm9tKGtzLnNpZ25hdHVyZS5TZWNwMjU2azEuZGVyKSksXG4gICAgICAgICAgICBtc2dcbiAgICAgICAgKSAgIFxuICAgIH1cblxuICAgIHB1YmxpYyByZWFkb25seSBtZXNzYWdlOiBVaW50OEFycmF5XG4gICAgcHVibGljIHJlYWRvbmx5IHB1YktleTogUHVibGljS2V5XG4gICAgcHVibGljIHJlYWRvbmx5IHJlY292ZXJ5SWQ6IG51bWJlclxuICAgIFxuICAgIGNvbnN0cnVjdG9yIChwdWJLZXk6IFB1YmxpY0tleSwgYnl0ZXM6IFVpbnQ4QXJyYXksIG1zZzogVWludDhBcnJheSkge1xuICAgICAgICBzdXBlcihieXRlcylcbiAgICAgICAgY29uc3QgcHViS2V5UmF3ID0gcHViS2V5LnRvVWludDhBcnJheSgpXG4gICAgICAgIGxldCByZWNvdmVyeUlkOiBudW1iZXI7XG4gICAgICAgIGZvciAocmVjb3ZlcnlJZCA9IDA7IHJlY292ZXJ5SWQgPCA0OyByZWNvdmVyeUlkICsrKSB7XG4gICAgICAgICAgICBsZXQgcmVjb3ZlcmVkIFxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgcmVjb3ZlcmVkID0gc2VjcDI1NmsxLmVjZHNhUmVjb3ZlcihieXRlcywgcmVjb3ZlcnlJZCwgbXNnKVxuICAgICAgICAgICAgICBpZiAobWF0Y2hpbmdVaW50OEFycmF5cyhyZWNvdmVyZWQsIHB1YktleVJhdykpIGJyZWFrO1xuICAgICAgICAgICAgfSBjYXRjaCB7fVxuICAgICAgICB9XG4gICAgICAgIHRoaXMubWVzc2FnZSA9IG1zZ1xuICAgICAgICB0aGlzLnB1YktleSA9IHB1YktleVxuICAgICAgICB0aGlzLnJlY292ZXJ5SWQgPSByZWNvdmVyeUlkXG4gICAgfVxuXG4gICAgcHVibGljIHRvSGV4U3RyaW5nKHByZWZpeDB4ID0gZmFsc2UpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdG9IZXhTdHJpbmcoW3RoaXMucmVjb3ZlcnlJZCwgLi4udGhpcy5ieXRlc10sIHByZWZpeDB4KVxuICAgIH1cblxuICAgIHB1YmxpYyB0b0tleWVkU2lnbmF0dXJlKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzaWduYXR1cmU6IHsgU2VjcDI1NmsxOiB7IGRlcjogQXJyYXkuZnJvbShzZWNwMjU2azEuc2lnbmF0dXJlRXhwb3J0KHRoaXMuYnl0ZXMpKSB9fSxcbiAgICAgICAgICAgIHB1YmxpY19rZXk6IHtcbiAgICAgICAgICAgICAgICBieXRlczogQXJyYXkuZnJvbSh0aGlzLnB1YktleS5ieXRlcyksXG4gICAgICAgICAgICAgICAgY29tcHJlc3NlZDogdGhpcy5wdWJLZXkuY29tcHJlc3NlZCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB0b1Byb3RvYnVmKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzaWduYXR1cmU6IHsgU2VjcDI1NmsxOiB7IGRlcjogQXJyYXkuZnJvbShzZWNwMjU2azEuc2lnbmF0dXJlRXhwb3J0KHRoaXMuYnl0ZXMpKSB9fSxcbiAgICAgICAgICAgIHB1YmxpY0tleTogeyBwdWJsaWNLZXk6IEFycmF5LmZyb20oWyB0aGlzLnB1YktleS5jb21wcmVzc2VkLCAuLi50aGlzLnB1YktleS5ieXRlcyBdKSB9LFxuICAgICAgICB9XG4gICAgfVxufVxuXG5cbi8vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgcmVhZG9ubHkgcmVjZWlwdDogVHJhbnNhY3Rpb25SZWNlaXB0XG4gICAgY29uc3RydWN0b3IocmVjZWlwdDogVHJhbnNhY3Rpb25SZWNlaXB0LCBtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpXG4gICAgICAgIHRoaXMucmVjZWlwdCA9IHJlY2VpcHRcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgTWVtcG9vbEVycm9yIGV4dGVuZHMgVHJhbnNhY3Rpb25FcnJvciB7XG4gICAgY29uc3RydWN0b3IocmVjZWlwdDogVHJhbnNhY3Rpb25SZWNlaXB0LCBtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHJlY2VpcHQsIG1lc3NhZ2UpXG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGltZW91dEVycm9yIGV4dGVuZHMgVHJhbnNhY3Rpb25FcnJvciB7XG4gICAgcmVhZG9ubHkgbXNlY3M6IG51bWJlcjtcbiAgICBjb25zdHJ1Y3RvciAobXNlY3M6IG51bWJlciwgcmVjZWlwdDogVHJhbnNhY3Rpb25SZWNlaXB0LCBtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHJlY2VpcHQsIG1lc3NhZ2UpXG4gICAgICAgIHRoaXMubXNlY3MgPSBtc2Vjc1xuICAgIH1cbn1cbiAgICBcblxuZXhwb3J0IGNsYXNzIFRyYW5zbWlzc2lvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIHJlYWRvbmx5IGVycm9yPzogYW55O1xuICAgIHJlYWRvbmx5IGluRmxpZ2h0OiBUcmFuc21pc3Npb247XG4gICAgY29uc3RydWN0b3IoaW5GbGlnaHQ6IFRyYW5zbWlzc2lvbiwgZXJyb3I/OiBhbnkpIHtcbiAgICAgICAgc3VwZXIoSlNPTi5zdHJpbmdpZnkoZXJyb3IpKVxuICAgICAgICBkZWxldGUgZXJyb3I/LnN0YWNrXG4gICAgICAgIHRoaXMuZXJyb3IgPSBlcnJvclxuICAgICAgICB0aGlzLmluRmxpZ2h0ID0gaW5GbGlnaHRcbiAgICB9XG59XG5cblxuLy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vLyAtLS0gSW50ZXJuYWwgZnVuY3Rpb25zIFxuXG5mdW5jdGlvbiBtYXRjaGluZ1VpbnQ4QXJyYXlzKGE6IFVpbnQ4QXJyYXksIGI6IFVpbnQ4QXJyYXkpIHtcbiAgICByZXR1cm4gYS5sZW5ndGggPT09IGIubGVuZ3RoICYmIGEuZXZlcnkoKHZhbHVlLCBpbmRleCkgPT4gdmFsdWUgPT09IGJbaW5kZXhdKVxufVxuIl19
|
|
273
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NyeXB0by90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUE7QUFDdEMsbUNBQStCO0FBRy9CLCtDQUF1RjtBQUN2RixtQ0FBZ0M7QUFFaEMsTUFBYSxLQUFLO0lBRVAsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFnQjtRQUN0QyxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQ25CLE9BQU8sQ0FBQyxNQUFNO2NBQ1IsT0FBTyxDQUFDLE1BQU07Y0FDZCxPQUFPLENBQUMsUUFBUSxDQUN6QixDQUFBO0lBQ0wsQ0FBQztJQUNNLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBZ0I7UUFDdkMsT0FBTyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUM5QixDQUFDO0lBQ00sTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFjO1FBQ25DLE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDNUIsQ0FBQztJQUNNLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBWTtRQUMvQixJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNqQyxNQUFNLElBQUksU0FBUyxDQUNmLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLG9DQUFvQyxJQUFJLE1BQU0sTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQ2xHLENBQUE7UUFDTCxDQUFDO1FBQ0QsT0FBTyxJQUFJLEtBQUssQ0FDWixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxFQUFFO2NBQzlCLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FB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QUFPLENBQUMsQ0FBQTtRQUNkLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO0lBQzFCLENBQUM7Q0FDSjtBQUNELE1BQWEsWUFBYSxTQUFRLGdCQUFnQjtJQUM5QyxZQUFZLE9BQTJCLEVBQUUsT0FBZ0I7UUFDckQsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUMzQixDQUFDO0NBQ0o7QUFKRCxvQ0FJQztBQUVELE1BQWEsWUFBYSxTQUFRLGdCQUFnQjtJQUU5QyxZQUFhLEtBQWEsRUFBRSxPQUEyQixFQUFFLE9BQWdCO1FBQ3JFLEtBQUssQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7SUFDdEIsQ0FBQztDQUNKO0FBTkQsb0NBTUM7QUFHRCxNQUFhLGlCQUFrQixTQUFRLEtBQUs7SUFHeEMsWUFBWSxRQUFzQixFQUFFLEtBQVc7UUFDM0MsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtRQUM1QixPQUFPLEtBQUssRUFBRSxLQUFLLENBQUE7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7UUFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7SUFDNUIsQ0FBQztDQUNKO0FBVEQsOENBU0M7QUFHRCx1SEFBdUg7QUFDdkgsMkJBQTJCO0FBRTNCLFNBQVMsbUJBQW1CLENBQUMsQ0FBYSxFQUFFLENBQWE7SUFDckQsT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtBQUNqRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgc2VjcDI1NmsxID0gcmVxdWlyZSgnc2VjcDI1NmsxJylcclxuaW1wb3J0IHsgYmVjaDMyIH0gZnJvbSAnYmVjaDMyJ1xyXG5pbXBvcnQgeyBCYWxhbmNlLCBFcG9jaCwgSGFzaCwgSGV4U3RyaW5nLCBVdHhvTWV0YWRhdGEgfSBmcm9tIFwiLi4vdHlwZXNcIlxyXG5cclxuaW1wb3J0IHsgZnJvbUhleFN0cmluZywgaXNIZXhTdHJpbmcsIHRvSGV4U3RyaW5nLCB3aG9sZV93aXRzIH0gZnJvbSBcIi4uLy4uL2Jpbi9oZWxwZXJzXCJcclxuaW1wb3J0IHsgc2hhMjU2IH0gZnJvbSBcIi4vdXRpbHNcIlxyXG5cclxuZXhwb3J0IGNsYXNzIENvaW5zIHtcclxuICAgIHByb3RlY3RlZCBjb2luczogYmlnaW50O1xyXG4gICAgcHVibGljIHN0YXRpYyBmcm9tQmFsYW5jZShiYWxhbmNlOiBCYWxhbmNlKTogQ29pbnMge1xyXG4gICAgICAgIHJldHVybiBDb2lucy5mcm9tUGVkcm9zKFxyXG4gICAgICAgICAgICBiYWxhbmNlLmxvY2tlZFxyXG4gICAgICAgICAgICAgICAgKyBiYWxhbmNlLnN0YWtlZFxyXG4gICAgICAgICAgICAgICAgKyBiYWxhbmNlLnVubG9ja2VkXHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG4gICAgcHVibGljIHN0YXRpYyBmcm9tTmFub3dpdHMobmFub3dpdHM6IGJpZ2ludCk6IENvaW5zIHtcclxuICAgICAgICByZXR1cm4gbmV3IENvaW5zKG5hbm93aXRzKVxyXG4gICAgfVxyXG4gICAgcHVibGljIHN0YXRpYyBmcm9tUGVkcm9zKHBlZHJvczogYmlnaW50KTogQ29pbnMge1xyXG4gICAgICAgIHJldHVybiBuZXcgQ29pbnMocGVkcm9zKVxyXG4gICAgfVxyXG4gICAgcHVibGljIHN0YXRpYyBmcm9tV2l0cyh3aXRzOiBudW1iZXIpOiBDb2lucyB7XHJcbiAgICAgICAgaWYgKHdpdHMgPiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogaW50ZXJuYWwgZXJyb3I6IHRvbyBtYW55IHdpdHM6ICR7d2l0c30gPiAke051bWJlci5NQVhfU0FGRV9JTlRFR0VSfWBcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmV3IENvaW5zKFxyXG4gICAgICAgICAgICBCaWdJbnQoTWF0aC5mbG9vcih3aXRzKSkgKiAxMG4gKiogOW5cclxuICAgICAgICAgICAgICAgICsgQmlnSW50KE1hdGguZmxvb3IoKHdpdHMgLSBNYXRoLmZsb29yKHdpdHMpKSAqIDEwMDAwMDAwMDApKVxyXG4gICAgICAgIClcclxuICAgIH1cclxuICAgIHB1YmxpYyBzdGF0aWMgemVybygpOiBDb2lucyB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDb2lucygwbilcclxuICAgIH1cclxuICAgIGNvbnN0cnVjdG9yIChwZWRyb3M6IGJpZ2ludCkge1xyXG4gICAgICAgIHRoaXMuY29pbnMgPSBwZWRyb3NcclxuICAgIH1cclxuICAgIHB1YmxpYyBnZXQgcGVkcm9zKCk6IGJpZ2ludCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29pbnNcclxuICAgIH1cclxuICAgIHB1YmxpYyBnZXQgbmFub3dpdHMoKTogYmlnaW50IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb2luc1xyXG4gICAgfVxyXG4gICAgcHVibGljIGdldCB3aXRzKCk6IG51bWJlciB7XHJcbiAgICAgICAgY29uc3QgcXVvdGllbnQgPSBCaWdJbnQodGhpcy5jb2lucykgLyAxMDAwMDAwMDAwblxyXG4gICAgICAgIGlmIChOdW1iZXIocXVvdGllbnQpID4gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IGludGVybmFsIGVycm9yOiB0b28gbWFueSBjb2luczogJHtxdW90aWVudC50b1N0cmluZygpfSA+ICR7TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJ9YFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJlc3QgPSBOdW1iZXIoQmlnSW50KHRoaXMuY29pbnMpIC0gcXVvdGllbnQgKiAxMDAwMDAwMDAwbikgLyAxMDAwMDAwMDAwXHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJ3aXRzKCkgPT5cIiwgdGhpcy5jb2lucy50b1N0cmluZygpLCBxdW90aWVudC50b1N0cmluZygpLCByZXN0LCBOdW1iZXIocXVvdGllbnQpICsgcmVzdClcclxuICAgICAgICByZXR1cm4gTnVtYmVyKHF1b3RpZW50KSArIHJlc3RcclxuICAgIH1cclxuICAgIHB1YmxpYyB0b1N0cmluZyhkZWNpbWFscyA9IDkpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB3aG9sZV93aXRzKHRoaXMuY29pbnMsIGRlY2ltYWxzKVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBLZXlQYXRoID0gQXJyYXk8bnVtYmVyPlxyXG5cclxuZXhwb3J0IHR5cGUgS2V5ZWRTaWduYXR1cmUgPSB7XHJcbiAgICBzaWduYXR1cmU6IHsgU2VjcDI1NmsxOiB7IGRlcjogQXJyYXk8bnVtYmVyPiB9fSxcclxuICAgIHB1YmxpY19rZXk6IHtcclxuICAgICAgICBieXRlczogQXJyYXk8bnVtYmVyPjtcclxuICAgICAgICBjb21wcmVzc2VkOiBudW1iZXIsXHJcbiAgICB9LFxyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgUHVibGljS2V5SGFzaFN0cmluZyA9IEhleFN0cmluZ1xyXG5cclxuaW50ZXJmYWNlIEtleSB7XHJcbiAgICBieXRlczogVWludDhBcnJheTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQcml2YXRlS2V5IGV4dGVuZHMgS2V5IHtcclxuICAgIHR5cGU6IFwicHJpdmF0ZVwiO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFB1YmxpY0tleSBleHRlbmRzIEtleSB7XHJcbiAgICB0eXBlOiBcInB1YmxpY1wiO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBUcmFuc2FjdGlvbkNhbGxiYWNrID0gKHJlY2VpcHQ6IFRyYW5zYWN0aW9uUmVjZWlwdCwgZXJyb3I/OiBhbnkpID0+IGFueVxyXG5cclxuZXhwb3J0IHR5cGUgVHJhbnNhY3Rpb25QYXJhbXMgPSB7XHJcbiAgICBkZWFkbGluZT86IEVwb2NoLFxyXG4gICAgZmVlcz86IFRyYW5zYWN0aW9uUHJpb3JpdHkgfCBDb2lucyxcclxufVxyXG5cclxuZXhwb3J0IGVudW0gVHJhbnNhY3Rpb25Qcmlvcml0eSB7XHJcbiAgICBTdGlua3kgPSBcInN0aW5reVwiLFxyXG4gICAgTG93ID0gXCJsb3dcIixcclxuICAgIE1lZGl1bSA9IFwibWVkaXVtXCIsXHJcbiAgICBIaWdoID0gXCJoaWdoXCIsXHJcbiAgICBPcHVsZW50ID0gXCJvcHVsZW50XCIsXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFRyYW5zYWN0aW9uUmVjZWlwdCA9IHtcclxuICAgIGF1dGhvcml6YXRpb24/OiBIZXhTdHJpbmc7XHJcbiAgICBibG9ja0Vwb2NoPzogRXBvY2gsXHJcbiAgICBibG9ja0hhc2g/OiBIYXNoLFxyXG4gICAgYmxvY2tNaW5lcj86IFB1YmxpY0tleUhhc2hTdHJpbmcsXHJcbiAgICBibG9ja1RpbWVzdGFtcD86IG51bWJlcixcclxuICAgIGNvbmZpcm1hdGlvbnM/OiBudW1iZXI7XHJcbiAgICBjaGFuZ2U/OiBDb2lucztcclxuICAgIGRyb0hhc2g/OiBIYXNoO1xyXG4gICAgZXJyb3I/OiBFcnJvcixcclxuICAgIGZlZXM6IENvaW5zO1xyXG4gICAgZnJvbT86IEFycmF5PFB1YmxpY0tleUhhc2hTdHJpbmc+IHwgUHVibGljS2V5SGFzaFN0cmluZztcclxuICAgIGhhc2g6IEhhc2g7XHJcbiAgICBvdXRwdXRMb2NrPzogbnVtYmVyO1xyXG4gICAgcmFkQXJncz86IGFueTtcclxuICAgIHJhZEhhc2g/OiBIZXhTdHJpbmc7XHJcbiAgICByZWNpcGllbnRzPzogQXJyYXk8W1B1YmxpY0tleUhhc2hTdHJpbmcsIENvaW5zXT47XHJcbiAgICBzdGF0dXM6IHN0cmluZztcclxuICAgIHRpbWVzdGFtcDogbnVtYmVyO1xyXG4gICAgdHlwZTogc3RyaW5nO1xyXG4gICAgdHg/OiBhbnk7XHJcbiAgICB2YWxpZGF0b3I/OiBQdWJsaWNLZXlIYXNoU3RyaW5nO1xyXG4gICAgdmFsdWU/OiBDb2lucztcclxuICAgIHdlaWdodDogbnVtYmVyO1xyXG4gICAgd2l0aGRyYXdlcj86IFB1YmxpY0tleUhhc2hTdHJpbmc7XHJcbiAgICB3aXRuZXNzZXM/OiBudW1iZXIgfCBSZWNvcmQ8UHVibGljS2V5SGFzaFN0cmluZywgQ29pbnM+O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBUcmFuc2FjdGlvblN0YXR1cyA9IFwic2lnbmVkXCIgfCBcInBlbmRpbmdcIiB8IFwicmVsYXllZFwiIHwgXCJyZW1vdmVkXCIgfCBcIm1pbmVkXCIgfCBcImNvbmZpcm1lZFwiIHwgXCJmaW5hbGl6ZWRcIjtcclxuXHJcbmV4cG9ydCB0eXBlIFRyYW5zbWlzc2lvbiA9IHtcclxuICAgIGJ5dGVjb2RlPzogVWludDhBcnJheSxcclxuICAgIGhhc2g/OiBIYXNoO1xyXG4gICAgbWVzc2FnZTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBVdHhvID0gVXR4b01ldGFkYXRhICYgeyBzaWduZXI6IFB1YmxpY0tleUhhc2hTdHJpbmcgfVxyXG5cclxuZXhwb3J0IHR5cGUgVXR4b0NhY2hlSW5mbyA9IHtcclxuICAgIC8vIHRvdGFsIGFtb3VudCBvZiBleHBlbmRhYmxlIGZ1bmRzIHdpdGggY3VycmVudGx5IGNhY2hlZCBVVFhPc1xyXG4gICAgZXhwZW5kYWJsZTogYmlnaW50LCBcclxuICAgIC8vIG51bWJlciBvZiBjYWNoZWQgVVRYT3NcclxuICAgIHNpemU6IG51bWJlciwgXHJcbiAgICAvLyBlYXJsaWVzdCBvZiBhbGwgdGltZWxvY2tzIGluIHRoZSBjYWNow6lcclxuICAgIHRpbWVsb2NrOiBudW1iZXIsXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFV0eG9Qb2ludGVyID0ge1xyXG4gICAgLy8gdHJhbnNhY3Rpb24gaWRlbnRpZmllclxyXG4gICAgdHJhbnNhY3Rpb25faWQ6IEhhc2g7XHJcbiAgICAvLyBvdXRwdXQgaW5kZXggd2l0aGluIHJlZmVycmVkIHRyYW5zYWN0aW9uXHJcbiAgICBvdXRwdXRfaW5kZXg6IG51bWJlcjtcclxufTtcclxuXHJcbmV4cG9ydCBlbnVtIFV0eG9TZWxlY3Rpb25TdHJhdGVneSB7XHJcbiAgICBCaWdGaXJzdCA9IFwiYmlnLWZpcnN0XCIsXHJcbiAgICBSYW5kb20gPSBcInJhbmRvbVwiLFxyXG4gICAgU2xpbUZpdCA9IFwic2xpbS1maXRcIixcclxuICAgIFNtYWxsRmlyc3QgPSBcInNtYWxsLWZpcnN0XCIsXHJcbn1cclxuXHJcblxyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4vLy8gRVhQT1JURUQgQ0xBU1NFUyBcclxuXHJcbi8vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbmV4cG9ydCBjbGFzcyBQdWJsaWNLZXkgaW1wbGVtZW50cyBLZXkge1xyXG4gICAgXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29tcHJlc3NlZDogbnVtYmVyO1xyXG4gICAgcHVibGljIHJlYWRvbmx5IGJ5dGVzOiBVaW50OEFycmF5O1xyXG5cclxuICAgIHN0YXRpYyBmcm9tUHJvdG9idWYocHJvdG9idWY6IHsgY29tcHJlc3NlZDogbnVtYmVyLCBieXRlczogQXJyYXk8bnVtYmVyPiB9KTogUHVibGljS2V5IHtcclxuICAgICAgICByZXR1cm4gbmV3IFB1YmxpY0tleShwcm90b2J1Zi5jb21wcmVzc2VkLCBVaW50OEFycmF5LmZyb20ocHJvdG9idWYuYnl0ZXMpKVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBmcm9tVWludDhBcnJheSh1aW50OEFycmF5OiBVaW50OEFycmF5KTogUHVibGljS2V5IHtcclxuICAgICAgICByZXR1cm4gbmV3IFB1YmxpY0tleShcclxuICAgICAgICAgICAgdWludDhBcnJheVswXSxcclxuICAgICAgICAgICAgdWludDhBcnJheS5zbGljZSgxKSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyByZWNvdmVyRnJvbShyZWNvdmVyYWJsZTogYW55LCBtc2c6IFVpbnQ4QXJyYXkpOiBQdWJsaWNLZXkge1xyXG4gICAgICAgIGxldCBieXRlc1xyXG4gICAgICAgIGlmIChpc0hleFN0cmluZyhyZWNvdmVyYWJsZSkpIHtcclxuICAgICAgICAgICAgYnl0ZXMgPSBmcm9tSGV4U3RyaW5nKHJlY292ZXJhYmxlKVxyXG4gICAgICAgIH0gZWxzZSBpZiAocmVjb3ZlcmFibGUgaW5zdGFuY2VvZiBCdWZmZXIpIHtcclxuICAgICAgICAgICAgYnl0ZXMgPSBVaW50OEFycmF5LmZyb20ocmVjb3ZlcmFibGUuYnVmZmVyKVxyXG4gICAgICAgIH0gZWxzZSBpZiAocmVjb3ZlcmFibGUgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XHJcbiAgICAgICAgICAgIGJ5dGVzID0gcmVjb3ZlcmFibGVcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBQdWJsaWNLZXk6IHVuc3VwcG9ydGVkIHJlY292ZXJhYmxlIHNpZ25hdHVyZSBmb3JtYXQ6ICR7cmVjb3ZlcmFibGV9YClcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGJ5dGVzLmxlbmd0aCAhPT0gNjUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUHVibGljS2V5OiBleHBlY3RlZCByZWNvdmVyYWJsZSBzaWduYXR1cmUgd2l0aCBsZW5ndGggNjU6ICR7dG9IZXhTdHJpbmcoYnl0ZXMpfWApXHJcbiAgICAgICAgfSBcclxuICAgICAgICBjb25zdCBbIHJlY292ZXJ5SWQsIHNpZ25hdHVyZSBdID0gWyBieXRlc1swXSwgYnl0ZXMuc2xpY2UoMSkgXVxyXG4gICAgICAgIHJldHVybiBQdWJsaWNLZXkuZnJvbVVpbnQ4QXJyYXkoc2VjcDI1NmsxLmVjZHNhUmVjb3ZlcihzaWduYXR1cmUsIHJlY292ZXJ5SWQsIG1zZykpXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IoY29tcHJlc3NlZDogbnVtYmVyLCBieXRlczogVWludDhBcnJheSkge1xyXG4gICAgICAgIHRoaXMuY29tcHJlc3NlZCA9IGNvbXByZXNzZWRcclxuICAgICAgICB0aGlzLmJ5dGVzID0gYnl0ZXNcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZXF1YWxzKHB1YktleTogUHVibGljS2V5KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHB1YktleS5jb21wcmVzc2VkID09PSB0aGlzLmNvbXByZXNzZWQgJiYgbWF0Y2hpbmdVaW50OEFycmF5cyhwdWJLZXkuYnl0ZXMsIHB1YktleS5ieXRlcylcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFzaCgpOiBQdWJsaWNLZXlIYXNoIHtcclxuICAgICAgICByZXR1cm4gUHVibGljS2V5SGFzaC5mcm9tUHVibGljS2V5KHRoaXMpXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHRvSGV4U3RyaW5nKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRvSGV4U3RyaW5nKFt0aGlzLmNvbXByZXNzZWQsIC4uLnRoaXMuYnl0ZXNdKVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0b1VpbnQ4QXJyYXkoKTogVWludDhBcnJheSB7XHJcbiAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkuZnJvbShbdGhpcy5jb21wcmVzc2VkLCAuLi50aGlzLmJ5dGVzXSlcclxuICAgIH1cclxufTtcclxuXHJcblxyXG4vLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG5leHBvcnQgY2xhc3MgUHVibGljS2V5SGFzaCB7XHJcblxyXG4gICAgc3RhdGljIGZyb21IYXNoKGhhc2g6IFVpbnQ4QXJyYXkpOiBQdWJsaWNLZXlIYXNoIHtcclxuICAgICAgICByZXR1cm4gbmV3IFB1YmxpY0tleUhhc2goYmVjaDMyLnRvV29yZHMoaGFzaCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBmcm9tSGV4U3RyaW5nKGhhc2g6IEhleFN0cmluZyk6IFB1YmxpY0tleUhhc2gge1xyXG4gICAgICAgIHJldHVybiBQdWJsaWNLZXlIYXNoLmZyb21IYXNoKGZyb21IZXhTdHJpbmcoaGFzaCkpXHJcbiAgICB9XHJcbiAgICBcclxuICAgIHN0YXRpYyBmcm9tUHVibGljS2V5KHBrOiBQdWJsaWNLZXkpOiBQdWJsaWNLZXlIYXNoIHtcclxuICAgICAgICByZXR1cm4gUHVibGljS2V5SGFzaC5mcm9tSGFzaChcclxuICAgICAgICAgICAgc2hhMjU2KFxyXG4gICAgICAgICAgICAgICAgQnVmZmVyLmZyb20oW3BrLmNvbXByZXNzZWQsIC4uLnBrLmJ5dGVzXSlcclxuICAgICAgICAgICAgKS5zdWJhcnJheSgwLCAyMClcclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBzdGF0aWMgZnJvbUJlY2gzMihwa2g6IHN0cmluZyk6IFB1YmxpY0tleUhhc2gge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHBraCA9IHBraC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgICAgIGlmIChwa2guc3RhcnRzV2l0aCgnd2l0JykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHVibGljS2V5SGFzaChiZWNoMzIuZGVjb2RlKHBraCwgNjYpLndvcmRzKVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBraC5zdGFydHNXaXRoKCd0d2l0JykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHVibGljS2V5SGFzaChiZWNoMzIuZGVjb2RlKHBraCwgNjcpLndvcmRzKVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUHVibGljS2V5SGFzaDogaW52YWxpZCBiZWNoMzIgc3RyaW5nOiAke3BraH1gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBQdWJsaWNLZXlIYXNoOiBpbnZhbGlkIGJlY2gzMiBzdHJpbmc6ICR7cGtofWApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgd29yZHM6IG51bWJlcltdO1xyXG4gICAgXHJcbiAgICBjb25zdHJ1Y3Rvcih3b3JkczogbnVtYmVyW10pIHtcclxuICAgICAgICB0aGlzLndvcmRzID0gd29yZHNcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdG9CZWNoMzIobmV0d29yayA9IFwibWFpbm5ldFwiKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gbmV0d29yayA9PT0gXCJtYWlubmV0XCIgPyBiZWNoMzIuZW5jb2RlKCd3aXQnLCB0aGlzLndvcmRzLCA2NikgOiBiZWNoMzIuZW5jb2RlKCd0d2l0JywgdGhpcy53b3JkcywgNjcpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0b0J5dGVzMjAoKTogVWludDhBcnJheSB7XHJcbiAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkuZnJvbShiZWNoMzIuZnJvbVdvcmRzKHRoaXMud29yZHMpLnNsaWNlKDAsIDIwKSlcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdG9CeXRlczMyKCk6IFVpbnQ4QXJyYXkge1xyXG4gICAgICAgIHJldHVybiBVaW50OEFycmF5LmZyb20oW1xyXG4gICAgICAgICAgICAuLi5iZWNoMzIuZnJvbVdvcmRzKHRoaXMud29yZHMpLnNsaWNlKDAsIDIwKSxcclxuICAgICAgICAgICAgLi4ubmV3IEFycmF5KDEyKS5maWxsKDApLFxyXG4gICAgICAgIF0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0b0hleFN0cmluZygpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0b0hleFN0cmluZyh0aGlzLnRvQnl0ZXMyMCgpKVxyXG4gICAgfVxyXG59XHJcblxyXG5cclxuLy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuZXhwb3J0IGNsYXNzIFNpZ25hdHVyZSB7XHJcblxyXG4gICAgc3RhdGljIGZyb21IZXhTdHJpbmcoaGV4OiBzdHJpbmcpOiBTaWduYXR1cmUge1xyXG4gICAgICAgIHJldHVybiBuZXcgU2lnbmF0dXJlKGZyb21IZXhTdHJpbmcoaGV4KSlcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgYnl0ZXM6IFVpbnQ4QXJyYXk7XHJcblxyXG4gICAgY29uc3RydWN0b3IgKGJ5dGVzOiBVaW50OEFycmF5KSB7XHJcbiAgICAgICAgdGhpcy5ieXRlcyA9IGJ5dGVzXHJcbiAgICB9XHJcbiAgICBcclxuICAgIHB1YmxpYyB0b0hleFN0cmluZygpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0b0hleFN0cmluZyh0aGlzLmJ5dGVzKVxyXG4gICAgfVxyXG59XHJcblxyXG5cclxuLy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuZXhwb3J0IGNsYXNzIFJlY292ZXJhYmxlU2lnbmF0dXJlIGV4dGVuZHMgU2lnbmF0dXJlIHtcclxuXHJcbiAgICBzdGF0aWMgZnJvbShyZWNvdmVyYWJsZTogYW55LCBtc2c6IFVpbnQ4QXJyYXkpOiBSZWNvdmVyYWJsZVNpZ25hdHVyZSB7XHJcbiAgICAgICAgbGV0IGJ5dGVzXHJcbiAgICAgICAgaWYgKGlzSGV4U3RyaW5nKHJlY292ZXJhYmxlKSkge1xyXG4gICAgICAgICAgICBieXRlcyA9IGZyb21IZXhTdHJpbmcocmVjb3ZlcmFibGUpLnNsaWNlKDEpXHJcbiAgICAgICAgfSBlbHNlIGlmIChyZWNvdmVyYWJsZSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xyXG4gICAgICAgICAgICBieXRlcyA9IFVpbnQ4QXJyYXkuZnJvbShyZWNvdmVyYWJsZS5idWZmZXIpLnNsaWNlKDEpXHJcbiAgICAgICAgfSBlbHNlIGlmIChyZWNvdmVyYWJsZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcclxuICAgICAgICAgICAgYnl0ZXMgPSByZWNvdmVyYWJsZS5zbGljZSgxKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFJlY292ZXJhYmxlU2lnbmF0dXJlOiB1bnN1cHBvcnRlZCByZWNvdmVyYWJsZSBzaWduYXR1cmUgZm9ybWF0OiAke3JlY292ZXJhYmxlfWApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChieXRlcy5sZW5ndGggIT09IDY0KSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFJlY292ZXJhYmxlU2lnbmF0cmU6IGV4cGVjdGVkIHJlY292ZXJhYmxlIHNpZ25hdHVyZSB3aXRoIGxlbmd0aCA2NTogJHt0b0hleFN0cmluZyhieXRlcyl9YClcclxuICAgICAgICB9IFxyXG4gICAgICAgIHJldHVybiBuZXcgUmVjb3ZlcmFibGVTaWduYXR1cmUoUHVibGljS2V5LnJlY292ZXJGcm9tKHJlY292ZXJhYmxlLCBtc2cpLCBieXRlcywgbXNnKVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBmcm9tS2V5ZWRTaWduYXR1cmUoa3M6IEtleWVkU2lnbmF0dXJlLCBtc2c6IFVpbnQ4QXJyYXkpOiBSZWNvdmVyYWJsZVNpZ25hdHVyZSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBSZWNvdmVyYWJsZVNpZ25hdHVyZShcclxuICAgICAgICAgICAgUHVibGljS2V5LmZyb21Qcm90b2J1Zihrcy5wdWJsaWNfa2V5KSxcclxuICAgICAgICAgICAgc2VjcDI1NmsxLnNpZ25hdHVyZUltcG9ydChVaW50OEFycmF5LmZyb20oa3Muc2lnbmF0dXJlLlNlY3AyNTZrMS5kZXIpKSxcclxuICAgICAgICAgICAgbXNnXHJcbiAgICAgICAgKSAgIFxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZWFkb25seSBtZXNzYWdlOiBVaW50OEFycmF5XHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgcHViS2V5OiBQdWJsaWNLZXlcclxuICAgIHB1YmxpYyByZWFkb25seSByZWNvdmVyeUlkOiBudW1iZXJcclxuICAgIFxyXG4gICAgY29uc3RydWN0b3IgKHB1YktleTogUHVibGljS2V5LCBieXRlczogVWludDhBcnJheSwgbXNnOiBVaW50OEFycmF5KSB7XHJcbiAgICAgICAgc3VwZXIoYnl0ZXMpXHJcbiAgICAgICAgY29uc3QgcHViS2V5UmF3ID0gcHViS2V5LnRvVWludDhBcnJheSgpXHJcbiAgICAgICAgbGV0IHJlY292ZXJ5SWQ6IG51bWJlcjtcclxuICAgICAgICBmb3IgKHJlY292ZXJ5SWQgPSAwOyByZWNvdmVyeUlkIDwgNDsgcmVjb3ZlcnlJZCArKykge1xyXG4gICAgICAgICAgICBsZXQgcmVjb3ZlcmVkIFxyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIHJlY292ZXJlZCA9IHNlY3AyNTZrMS5lY2RzYVJlY292ZXIoYnl0ZXMsIHJlY292ZXJ5SWQsIG1zZylcclxuICAgICAgICAgICAgICBpZiAobWF0Y2hpbmdVaW50OEFycmF5cyhyZWNvdmVyZWQsIHB1YktleVJhdykpIGJyZWFrO1xyXG4gICAgICAgICAgICB9IGNhdGNoIHt9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubWVzc2FnZSA9IG1zZ1xyXG4gICAgICAgIHRoaXMucHViS2V5ID0gcHViS2V5XHJcbiAgICAgICAgdGhpcy5yZWNvdmVyeUlkID0gcmVjb3ZlcnlJZFxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0b0hleFN0cmluZyhwcmVmaXgweCA9IGZhbHNlKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdG9IZXhTdHJpbmcoW3RoaXMucmVjb3ZlcnlJZCwgLi4udGhpcy5ieXRlc10sIHByZWZpeDB4KVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0b0tleWVkU2lnbmF0dXJlKCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgc2lnbmF0dXJlOiB7IFNlY3AyNTZrMTogeyBkZXI6IEFycmF5LmZyb20oc2VjcDI1NmsxLnNpZ25hdHVyZUV4cG9ydCh0aGlzLmJ5dGVzKSkgfX0sXHJcbiAgICAgICAgICAgIHB1YmxpY19rZXk6IHtcclxuICAgICAgICAgICAgICAgIGJ5dGVzOiBBcnJheS5mcm9tKHRoaXMucHViS2V5LmJ5dGVzKSxcclxuICAgICAgICAgICAgICAgIGNvbXByZXNzZWQ6IHRoaXMucHViS2V5LmNvbXByZXNzZWQsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHRvUHJvdG9idWYoKTogYW55IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBzaWduYXR1cmU6IHsgU2VjcDI1NmsxOiB7IGRlcjogQXJyYXkuZnJvbShzZWNwMjU2azEuc2lnbmF0dXJlRXhwb3J0KHRoaXMuYnl0ZXMpKSB9fSxcclxuICAgICAgICAgICAgcHVibGljS2V5OiB7IHB1YmxpY0tleTogQXJyYXkuZnJvbShbIHRoaXMucHViS2V5LmNvbXByZXNzZWQsIC4uLnRoaXMucHViS2V5LmJ5dGVzIF0pIH0sXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5cclxuLy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuXHJcbmFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XHJcbiAgICByZWFkb25seSByZWNlaXB0OiBUcmFuc2FjdGlvblJlY2VpcHRcclxuICAgIGNvbnN0cnVjdG9yKHJlY2VpcHQ6IFRyYW5zYWN0aW9uUmVjZWlwdCwgbWVzc2FnZT86IHN0cmluZykge1xyXG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpXHJcbiAgICAgICAgdGhpcy5yZWNlaXB0ID0gcmVjZWlwdFxyXG4gICAgfVxyXG59XHJcbmV4cG9ydCBjbGFzcyBNZW1wb29sRXJyb3IgZXh0ZW5kcyBUcmFuc2FjdGlvbkVycm9yIHtcclxuICAgIGNvbnN0cnVjdG9yKHJlY2VpcHQ6IFRyYW5zYWN0aW9uUmVjZWlwdCwgbWVzc2FnZT86IHN0cmluZykge1xyXG4gICAgICAgIHN1cGVyKHJlY2VpcHQsIG1lc3NhZ2UpXHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUaW1lb3V0RXJyb3IgZXh0ZW5kcyBUcmFuc2FjdGlvbkVycm9yIHtcclxuICAgIHJlYWRvbmx5IG1zZWNzOiBudW1iZXI7XHJcbiAgICBjb25zdHJ1Y3RvciAobXNlY3M6IG51bWJlciwgcmVjZWlwdDogVHJhbnNhY3Rpb25SZWNlaXB0LCBtZXNzYWdlPzogc3RyaW5nKSB7XHJcbiAgICAgICAgc3VwZXIocmVjZWlwdCwgbWVzc2FnZSlcclxuICAgICAgICB0aGlzLm1zZWNzID0gbXNlY3NcclxuICAgIH1cclxufVxyXG4gICAgXHJcblxyXG5leHBvcnQgY2xhc3MgVHJhbnNtaXNzaW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XHJcbiAgICByZWFkb25seSBlcnJvcj86IGFueTtcclxuICAgIHJlYWRvbmx5IGluRmxpZ2h0OiBUcmFuc21pc3Npb247XHJcbiAgICBjb25zdHJ1Y3RvcihpbkZsaWdodDogVHJhbnNtaXNzaW9uLCBlcnJvcj86IGFueSkge1xyXG4gICAgICAgIHN1cGVyKEpTT04uc3RyaW5naWZ5KGVycm9yKSlcclxuICAgICAgICBkZWxldGUgZXJyb3I/LnN0YWNrXHJcbiAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yXHJcbiAgICAgICAgdGhpcy5pbkZsaWdodCA9IGluRmxpZ2h0XHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG4vLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4vLy8gLS0tIEludGVybmFsIGZ1bmN0aW9ucyBcclxuXHJcbmZ1bmN0aW9uIG1hdGNoaW5nVWludDhBcnJheXMoYTogVWludDhBcnJheSwgYjogVWludDhBcnJheSkge1xyXG4gICAgcmV0dXJuIGEubGVuZ3RoID09PSBiLmxlbmd0aCAmJiBhLmV2ZXJ5KCh2YWx1ZSwgaW5kZXgpID0+IHZhbHVlID09PSBiW2luZGV4XSlcclxufVxyXG4iXX0=
|
|
@@ -158,4 +158,4 @@ function totalCoins(balance) {
|
|
|
158
158
|
+ BigInt(balance.staked)
|
|
159
159
|
+ BigInt(balance.unlocked));
|
|
160
160
|
}
|
|
161
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NyeXB0by91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUF1Q0Esb0NBY0M7QUFFRCxrQ0FXQztBQWdFRCxrQ0FpREM7QUFFRCx3QkFJQztBQUVELGdDQU1DO0FBak1ELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQTtBQUV0QyxtQ0FBK0I7QUFDL0IsbUNBQWlFO0FBRWpFLG1DQUE0RDtBQUM1RCxvQ0FBd0M7QUFFeEMsaUNBQStCO0FBQXRCLGdHQUFBLE1BQU0sT0FBQTtBQUVmLGlDQUErRztBQUExRixrR0FBQSxTQUFTLE9BQUE7QUFBRSxzR0FBQSxhQUFhLE9BQUE7QUFBa0IsNkdBQUEsb0JBQW9CLE9BQUE7QUFBRSxrR0FBQSxTQUFTLE9BQUE7QUFFakYsUUFBQSxPQUFPLEdBQUc7SUFDbkIsR0FBRyxDQUFDLEtBQWEsRUFBRSxHQUFHLE1BQWdCO1FBQ2xDLEtBQUssTUFBTSxDQUFDLElBQUksTUFBTTtZQUNsQixJQUFJLENBQUMsR0FBRyxLQUFLO2dCQUFFLEtBQUssR0FBRyxDQUFDLENBQUE7UUFDcEIsT0FBTyxLQUFLLENBQUE7SUFDeEIsQ0FBQztDQUNKLENBQUE7QUFFRCxNQUFNLGlCQUFpQixHQUFHLEVBQUUsQ0FBQTtBQUM1QixNQUFNLFlBQVksR0FBRyxDQUFDLENBQUE7QUFDdEIsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFBO0FBQ3JCLE1BQU0sZUFBZSxHQUFHLENBQUMsQ0FBQTtBQUV6QixNQUFNLFlBQVksR0FBRyxDQUNqQixZQUFZO01BQ04sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLGVBQWUsQ0FBQztNQUNyRCxpQkFBaUI7TUFDakIsVUFBVSxDQUNuQixDQUFDO0FBRUYsTUFBTSxxQkFBcUIsR0FBRyxDQUFD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QyxNQUFNLENBQUMsQ0FBQTtJQUNuQixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQTtBQUN4QixDQUFDO0FBRUQsU0FBZ0IsVUFBVSxDQUFDLE9BQWdCO0lBQ3ZDLE9BQU8sYUFBSyxDQUFDLFVBQVUsQ0FDbkIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7VUFDaEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7VUFDdEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FDakMsQ0FBQTtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBzZWNwMjU2azEgPSByZXF1aXJlKFwic2VjcDI1NmsxXCIpXG5cbmltcG9ydCB7IGJlY2gzMiB9IGZyb20gJ2JlY2gzMidcbmltcG9ydCB7IGNyZWF0ZURlY2lwaGVyaXYsIGNyZWF0ZUhhc2gsIHBia2RmMlN5bmMgfSBmcm9tICdjcnlwdG8nXG5pbXBvcnQgeyBCYWxhbmNlLCBIZXhTdHJpbmcgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB7IENvaW5zLCBVdHhvLCBVdHhvU2VsZWN0aW9uU3RyYXRlZ3kgfSBmcm9tICcuL3R5cGVzJ1xuaW1wb3J0IHsgZnJvbUhleFN0cmluZyB9IGZyb20gJy4uL3V0aWxzJ1xuXG5leHBvcnQgeyBiZWNoMzIgfSBmcm9tICdiZWNoMzInXG5cbmV4cG9ydCB7IFByaXZhdGVLZXksIFB1YmxpY0tleSwgUHVibGljS2V5SGFzaCwgS2V5ZWRTaWduYXR1cmUsIFJlY292ZXJhYmxlU2lnbmF0dXJlLCBTaWduYXR1cmUgfSBmcm9tIFwiLi90eXBlc1wiXG5cbmV4cG9ydCBjb25zdCBCaWdNYXRoID0ge1xuICAgIG1heCh2YWx1ZTogYmlnaW50LCAuLi52YWx1ZXM6IGJpZ2ludFtdKTogYmlnaW50IHtcbiAgICAgICAgZm9yIChjb25zdCB2IG9mIHZhbHVlcylcbiAgICAgICAgICAgIGlmICh2ID4gdmFsdWUpIHZhbHVlID0gdlxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVxuICAgIH0sXG59XG5cbmNvbnN0IENIQUlOX0NPREVfTEVOR1RIID0gMzJcbmNvbnN0IERFUFRIX0xFTkdUSCA9IDFcbmNvbnN0IEtFWV9MRU5HVEggPSAzM1xuY29uc3QgS0VZX1BBVEhfTEVOR1RIID0gNFxuXG5jb25zdCBCRUNIMzJfTElNSVQgPSAoXG4gICAgREVQVEhfTEVOR1RIIFxuICAgICAgICArICgoTWF0aC5wb3coMjU2LCBERVBUSF9MRU5HVEgpIC0gMSkgKiBLRVlfUEFUSF9MRU5HVEgpIFxuICAgICAgICArIENIQUlOX0NPREVfTEVOR1RIIFxuICAgICAgICArIEtFWV9MRU5HVEhcbik7XG5cbmNvbnN0IGdldEV4cGVjdGVkRGF0YUxlbmd0aCA9IChkZXB0aDogbnVtYmVyKSA9PiAoXG4gICAgREVQVEhfTEVOR1RIXG4gICAgICAgICsgZGVwdGggKiBLRVlfUEFUSF9MRU5HVEhcbiAgICAgICAgKyBDSEFJTl9DT0RFX0xFTkdUSFxuICAgICAgICArIEtFWV9MRU5HVEhcbik7XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNpcGhlclhwcnYoc2xpcDMyOiBzdHJpbmcsIHBhc3N3ZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB7IHByZWZpeCwgd29yZHMgfSA9IGJlY2gzMi5kZWNvZGUoc2xpcDMyLCBCRUNIMzJfTElNSVQpXG4gICAgaWYgKHByZWZpeCAhPT0gXCJ4cHJ2XCIpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgWFBSViBoZWFkZXI6IFwiJHtwcmVmaXh9XCIgIT0gXCJ4cHJ2XCJgKVxuICAgIH1cbiAgICBjb25zdCBidWZmZXIgPSBuZXcgVWludDhBcnJheShiZWNoMzIuZnJvbVdvcmRzKHdvcmRzKSkuYnVmZmVyXG4gICAgY29uc3QgaXYgPSBidWZmZXIuc2xpY2UoMCwgMTYpXG4gICAgY29uc3Qgc2FsdCA9IGJ1ZmZlci5zbGljZSgxNiwgNDgpXG4gICAgY29uc3QgZGF0YSA9IGJ1ZmZlci5zbGljZSg0OClcbiAgICBjb25zdCBrZXkgPSBwYmtkZjJTeW5jKHBhc3N3ZCwgQnVmZmVyLmZyb20oc2FsdCksIDEwMDAwLCAzMiwgJ3NoYTI1NicpICAgIFxuICAgIGNvbnN0IGRlY2lwaGVyID0gY3JlYXRlRGVjaXBoZXJpdihcImFlcy0yNTYtY2JjXCIsIGtleSwgQnVmZmVyLmZyb20oaXYpKVxuICAgIGxldCBkZWNyeXB0ZWQgPSBkZWNpcGhlci51cGRhdGUoQnVmZmVyLmZyb20oZGF0YSksIHVuZGVmaW5lZCwgJ3V0Zi04JylcbiAgICBkZWNyeXB0ZWQgKz0gZGVjaXBoZXIuZmluYWwoJ3V0Zi04JylcbiAgICByZXR1cm4gZGVjcnlwdGVkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlY2RzYVZlcmlmeShcbiAgICBtc2c6IEJ1ZmZlcjxBcnJheUJ1ZmZlckxpa2U+LCBcbiAgICBwdWJLZXk6IEhleFN0cmluZyxcbiAgICBzaWduYXR1cmU6IEhleFN0cmluZywgXG4pOiBib29sZWFuIHtcbiAgICBcbiAgICByZXR1cm4gc2VjcDI1NmsxLmVjZHNhVmVyaWZ5KFxuICAgICAgICBmcm9tSGV4U3RyaW5nKHNpZ25hdHVyZSksIFxuICAgICAgICBtc2csIFxuICAgICAgICBmcm9tSGV4U3RyaW5nKHB1YktleSlcbiAgICApXG59XG5cbmV4cG9ydCBjb25zdCBwYXJzZVhwcnYgPSAoc2xpcDMyOiBzdHJpbmcpOiB7XG4gICAgY2hhaW5Db2RlOiBVaW50OEFycmF5LFxuICAgIGtleVBhdGg6IEFycmF5PG51bWJlcj4sXG4gICAgcHJpdmF0ZUtleTogVWludDhBcnJheSxcbn0gPT4ge1xuICAgIC8vIGRlY29kZSBzbGlwMzIgc3RyaW5nXG4gICAgY29uc3QgeyBwcmVmaXgsIHdvcmRzIH0gPSBiZWNoMzIuZGVjb2RlKHNsaXAzMiwgQkVDSDMyX0xJTUlUKVxuICAgIGNvbnN0IGJ5dGVzID0gYmVjaDMyLmZyb21Xb3Jkcyh3b3JkcylcblxuICAgIC8vIGNoZWNrIHByZWZpeFxuICAgIGlmIChwcmVmaXggIT09IFwieHBydlwiKSB7XG4gICAgICAgIHRocm93IEVycm9yKGBJbnZhbGlkIFhQUlY6IGJhZCBoZWFkZXI6IFwiJHtwcmVmaXh9XCIgIT0gXCJ4cHJ2XCJgKVxuICAgIH1cblxuICAgIC8vIGNoZWNrIGV4cGVjdGVkIGRhdGEgbGVuZ3RoXG4gICAgY29uc3QgZGVwdGggPSBieXRlc1swXVxuICAgIGlmIChkZXB0aCAhPT0gMCkge1xuICAgICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBYUFJWOiBub3QgYSBtYXN0ZXIgcHJpdmF0ZSBrZXkgKGRlcHRoOiAke2RlcHRofSlgKVxuICAgIH1cbiAgICBjb25zdCBleHBlY3RlZExlbmd0aCA9IGdldEV4cGVjdGVkRGF0YUxlbmd0aChkZXB0aClcbiAgICBpZiAoYnl0ZXMubGVuZ3RoICE9PSBleHBlY3RlZExlbmd0aCkge1xuICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgIFwiSW52YWxpZCBYUFJWOiBiYWQgZGF0YSBsZW5ndGhcIlxuICAgICAgICAgICAgICAgICsgYChleHBlY3RlZDogJHtleHBlY3RlZExlbmd0aH0sIHdhczogJHtieXRlcy5sZW5ndGh9YFxuICAgICAgICApXG4gICAgfVxuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KGJ5dGVzKS5idWZmZXJcblxuICAgIC8vIGV4dHJhY3Qga2V5IHBhdGggKDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VycywgYmlnIGVuZGlhbilcbiAgICBjb25zdCBrZXlQYXRoOiBBcnJheTxudW1iZXI+ID0gW11cbiAgICBjb25zdCBrZXlQYXRoVmlldyA9IG5ldyBEYXRhVmlldyhidWZmZXIsIERFUFRIX0xFTkdUSCwgZGVwdGggKiBLRVlfUEFUSF9MRU5HVEgpXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZXB0aDsgaSsrKSB7XG4gICAgICAgIGtleVBhdGgucHVzaCgoa2V5UGF0aFZpZXcuZ2V0VWludDMyKGkgKiBLRVlfUEFUSF9MRU5HVEgsIGZhbHNlKSkpXG4gICAgfVxuXG4gICAgLy8gZXh0cmFjdCBjaGFpbiBjb2RlXG4gICAgY29uc3QgY2hhaW5Db2RlOiBVaW50OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoQ0hBSU5fQ09ERV9MRU5HVEgpXG4gICAgY29uc3QgY2hhaW5Db2RlT2Zmc2V0ID0gREVQVEhfTEVOR1RIICsgZGVwdGggKiBLRVlfUEFUSF9MRU5HVEhcbiAgICBjb25zdCBjaGFpbkNvZGVWaWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlciwgY2hhaW5Db2RlT2Zmc2V0LCBDSEFJTl9DT0RFX0xFTkdUSClcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoYWluQ29kZS5sZW5ndGg7IGkrKykge1xuICAgICAgICBjaGFpbkNvZGVbaV0gPSAoY2hhaW5Db2RlVmlldy5nZXRVaW50OChpKSlcbiAgICB9XG5cbiAgICAvLyBleHRyYWN0IGtleSBieXRlc1xuICAgIGNvbnN0IHByaXZhdGVLZXk6IFVpbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheShLRVlfTEVOR1RIKVxuICAgIGNvbnN0IHByaXZhdGVLZXlWaWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlciwgY2hhaW5Db2RlT2Zmc2V0ICsgQ0hBSU5fQ09ERV9MRU5HVEgpXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcml2YXRlS2V5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHByaXZhdGVLZXlbaV0gPSAocHJpdmF0ZUtleVZpZXcuZ2V0VWludDgoaSkpXG4gICAgfVxuXG4gICAgLy8gY2hlY2sgaWYgcHJpdmF0ZSBvciBwdWJsaWMga2V5IGFyZSB2YWxpZFxuICAgIGlmIChwcml2YXRlS2V5WzBdICE9PSAwIHx8ICFzZWNwMjU2azEucHJpdmF0ZUtleVZlcmlmeShwcml2YXRlS2V5LnNsaWNlKDEpKSkge1xuICAgICAgICB0aHJvdyBFcnJvcihgTWFsZm9ybWVkIHNsaXAzMjogbm90IGEgcHJpdmF0ZSBrZXlgKVxuICAgIH0gXG5cbiAgICByZXR1cm4ge1xuICAgICAgICBjaGFpbkNvZGUsXG4gICAgICAgIGtleVBhdGgsXG4gICAgICAgIHByaXZhdGVLZXk6IHByaXZhdGVLZXkuc2xpY2UoMSksXG4gICAgfVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHNlbGVjdFV0eG9zKHNwZWNzOiB7IFxuICAgIHV0eG9zOiBBcnJheTxVdHhvPiwgXG4gICAgdmFsdWU/OiBDb2lucywgXG4gICAgc3RyYXRlZ3k/OiBVdHhvU2VsZWN0aW9uU3RyYXRlZ3ksIFxufSk6IEFycmF5PFV0eG8+IHtcbiAgICBjb25zdCBzdHJhdGVneSA9IHNwZWNzLnN0cmF0ZWd5IHx8IFV0eG9TZWxlY3Rpb25TdHJhdGVneS5TbGltRml0XG4gICAgc3dpdGNoIChzdHJhdGVneSkge1xuICAgICAgICBjYXNlIFV0eG9TZWxlY3Rpb25TdHJhdGVneS5CaWdGaXJzdDpcbiAgICAgICAgY2FzZSBVdHhvU2VsZWN0aW9uU3RyYXRlZ3kuU2xpbUZpdDpcbiAgICAgICAgICAgIHNwZWNzLnV0eG9zID0gc3BlY3MudXR4b3Muc29ydCgoYSwgYikgPT4gKGEudmFsdWUgPiBiLnZhbHVlKSA/IC0xIDogKChhLnZhbHVlIDwgYi52YWx1ZSkgPyAxIDogMCkpXG4gICAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgVXR4b1NlbGVjdGlvblN0cmF0ZWd5LlJhbmRvbTpcbiAgICAgICAgICAgIGNvbnN0IGxlbiA9IHNwZWNzLnV0eG9zLmxlbmd0aFxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkgKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChsZW4gLSBpKSlcbiAgICAgICAgICAgICAgICBjb25zdCB0bXAgPSBzcGVjcy51dHhvc1tpbmRleF1cbiAgICAgICAgICAgICAgICBzcGVjcy51dHhvc1tpbmRleF0gPSBzcGVjcy51dHhvc1tsZW4gLSBpIC0gMV1cbiAgICAgICAgICAgICAgICBzcGVjcy51dHhvc1tsZW4gLSBpIC0gMV0gPSB0bXBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSBVdHhvU2VsZWN0aW9uU3RyYXRlZ3kuU21hbGxGaXJzdDpcbiAgICAgICAgICAgIHNwZWNzLnV0eG9zID0gc3BlY3MudXR4b3Muc29ydCgoYSwgYikgPT4gKGEudmFsdWUgPCBiLnZhbHVlKSA/IC0xIDogKChhLnZhbHVlID4gYi52YWx1ZSkgPyAxIDogMCkpXG4gICAgICAgICAgICBicmVha1xuICAgIH1cbiAgICBcbiAgICAvLyBmaWx0ZXIgbG9ja2VkIFVUWE9zOlxuICAgIGNvbnN0IG5vdyA9IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApXG4gICAgc3BlY3MudXR4b3MgPSBzcGVjcy51dHhvcy5maWx0ZXIodXR4byA9PiB1dHhvLnRpbWVsb2NrIDw9IG5vdylcblxuICAgIC8vIGlmIHRhcmdldCB2YWx1ZSBpcyBzcGVjaWZpZWQsIGZpbHRlciBzcGFyZSBVVFhPc1xuICAgIGNvbnN0IHBlZHJvcyA9IHNwZWNzPy52YWx1ZT8ucGVkcm9zXG4gICAgaWYgKHBlZHJvcykge1xuICAgICAgICBpZiAoc3RyYXRlZ3kgPT09IFV0eG9TZWxlY3Rpb25TdHJhdGVneS5TbGltRml0KSB7XG4gICAgICAgICAgICBjb25zdCBzbGltRml0SW5kZXggPSBzcGVjcy51dHhvcy5maW5kSW5kZXgodXR4byA9PiB1dHhvLnZhbHVlIDw9IHBlZHJvcylcbiAgICAgICAgICAgIGlmIChzbGltRml0SW5kZXggPj0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzcGVjcy51dHhvcy5zbGljZShzbGltRml0SW5kZXggLSAxLCBzbGltRml0SW5kZXgpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNvdmVyZWQ6IGJpZ2ludCA9IDBuIFxuICAgICAgICByZXR1cm4gc3BlY3MudXR4b3MuZmlsdGVyKHV0eG8gPT4ge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyID0gY292ZXJlZCA8PSBwZWRyb3NcbiAgICAgICAgICAgIGNvdmVyZWQgKz0gQmlnSW50KHV0eG8udmFsdWUpXG4gICAgICAgICAgICByZXR1cm4gZmlsdGVyXG4gICAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHNwZWNzLnV0eG9zXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2hhMjU2KGJ1ZmZlcjogYW55KSB7XG4gICAgY29uc3QgaGFzaCA9IGNyZWF0ZUhhc2goJ3NoYTI1NicpXG4gICAgaGFzaC51cGRhdGUoYnVmZmVyKVxuICAgIHJldHVybiBoYXNoLmRpZ2VzdCgpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b3RhbENvaW5zKGJhbGFuY2U6IEJhbGFuY2UpOiBDb2lucyB7XG4gICAgcmV0dXJuIENvaW5zLmZyb21QZWRyb3MoXG4gICAgICAgIEJpZ0ludChiYWxhbmNlLmxvY2tlZClcbiAgICAgICAgICAgICsgQmlnSW50KGJhbGFuY2Uuc3Rha2VkKVxuICAgICAgICAgICAgKyBCaWdJbnQoYmFsYW5jZS51bmxvY2tlZClcbiAgICApXG59XG5cbiJdfQ==
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NyeXB0by91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUF1Q0Esb0NBY0M7QUFFRCxrQ0FXQztBQWdFRCxrQ0FpREM7QUFFRCx3QkFJQztBQUVELGdDQU1DO0FBak1ELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQTtBQUV0QyxtQ0FBK0I7QUFDL0IsbUNBQWlFO0FBRWpFLG1DQUE0RDtBQUM1RCxvQ0FBd0M7QUFFeEMsaUNBQStCO0FBQXRCLGdHQUFBLE1BQU0sT0FBQTtBQUVmLGlDQUErRztBQUExRixrR0FBQSxTQUFTLE9BQUE7QUFBRSxzR0FBQSxhQUFhLE9BQUE7QUFBa0IsNkdBQUEsb0JBQW9CLE9BQUE7QUFBRSxrR0FBQSxTQUFTLE9BQUE7QUFFakYsUUFBQSxPQUFPLEdBQUc7SUFDbkIsR0FBRyxDQUFDLEtBQWEsRUFBRSxHQUFHLE1BQWdCO1FBQ2xDLEtBQUssTUFBTSxDQUFDLElBQUksTUFBTTtZQUNsQixJQUFJLENBQUMsR0FBRyxLQUFLO2dCQUFFLEtBQUssR0FBRyxDQUFDLENBQUE7UUFDcEIsT0FBTyxLQUFLLENBQUE7SUFDeEIsQ0FBQztDQUNKLENBQUE7QUFFRCxNQUFNLGlCQUFpQixHQUFHLEVBQUUsQ0FBQTtBQUM1QixNQUFNLFlBQVksR0FBRyxDQUFDLENBQUE7QUFDdEIsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFBO0FBQ3JCLE1BQU0sZUFBZSxHQUFHLENBQUMsQ0FBQTtBQUV6QixNQUFNLFlBQVksR0FBRyxDQUNqQixZQUFZO01BQ04sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLGVBQWUsQ0FBQztNQUNyRCxpQkFBaUI7TUFDakIsVUFBVSxDQUNuQixDQUFDO0FBRUYsTUFBTSxxQkFBcUIsR0FBRyxDQUFD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QyxNQUFNLENBQUMsQ0FBQTtJQUNuQixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQTtBQUN4QixDQUFDO0FBRUQsU0FBZ0IsVUFBVSxDQUFDLE9BQWdCO0lBQ3ZDLE9BQU8sYUFBSyxDQUFDLFVBQVUsQ0FDbkIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7VUFDaEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7VUFDdEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FDakMsQ0FBQTtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBzZWNwMjU2azEgPSByZXF1aXJlKFwic2VjcDI1NmsxXCIpXHJcblxyXG5pbXBvcnQgeyBiZWNoMzIgfSBmcm9tICdiZWNoMzInXHJcbmltcG9ydCB7IGNyZWF0ZURlY2lwaGVyaXYsIGNyZWF0ZUhhc2gsIHBia2RmMlN5bmMgfSBmcm9tICdjcnlwdG8nXHJcbmltcG9ydCB7IEJhbGFuY2UsIEhleFN0cmluZyB9IGZyb20gJy4uL3R5cGVzJ1xyXG5pbXBvcnQgeyBDb2lucywgVXR4bywgVXR4b1NlbGVjdGlvblN0cmF0ZWd5IH0gZnJvbSAnLi90eXBlcydcclxuaW1wb3J0IHsgZnJvbUhleFN0cmluZyB9IGZyb20gJy4uL3V0aWxzJ1xyXG5cclxuZXhwb3J0IHsgYmVjaDMyIH0gZnJvbSAnYmVjaDMyJ1xyXG5cclxuZXhwb3J0IHsgUHJpdmF0ZUtleSwgUHVibGljS2V5LCBQdWJsaWNLZXlIYXNoLCBLZXllZFNpZ25hdHVyZSwgUmVjb3ZlcmFibGVTaWduYXR1cmUsIFNpZ25hdHVyZSB9IGZyb20gXCIuL3R5cGVzXCJcclxuXHJcbmV4cG9ydCBjb25zdCBCaWdNYXRoID0ge1xyXG4gICAgbWF4KHZhbHVlOiBiaWdpbnQsIC4uLnZhbHVlczogYmlnaW50W10pOiBiaWdpbnQge1xyXG4gICAgICAgIGZvciAoY29uc3QgdiBvZiB2YWx1ZXMpXHJcbiAgICAgICAgICAgIGlmICh2ID4gdmFsdWUpIHZhbHVlID0gdlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlXHJcbiAgICB9LFxyXG59XHJcblxyXG5jb25zdCBDSEFJTl9DT0RFX0xFTkdUSCA9IDMyXHJcbmNvbnN0IERFUFRIX0xFTkdUSCA9IDFcclxuY29uc3QgS0VZX0xFTkdUSCA9IDMzXHJcbmNvbnN0IEtFWV9QQVRIX0xFTkdUSCA9IDRcclxuXHJcbmNvbnN0IEJFQ0gzMl9MSU1JVCA9IChcclxuICAgIERFUFRIX0xFTkdUSCBcclxuICAgICAgICArICgoTWF0aC5wb3coMjU2LCBERVBUSF9MRU5HVEgpIC0gMSkgKiBLRVlfUEFUSF9MRU5HVEgpIFxyXG4gICAgICAgICsgQ0hBSU5fQ09ERV9MRU5HVEggXHJcbiAgICAgICAgKyBLRVlfTEVOR1RIXHJcbik7XHJcblxyXG5jb25zdCBnZXRFeHBlY3RlZERhdGFMZW5ndGggPSAoZGVwdGg6IG51bWJlcikgPT4gKFxyXG4gICAgREVQVEhfTEVOR1RIXHJcbiAgICAgICAgKyBkZXB0aCAqIEtFWV9QQVRIX0xFTkdUSFxyXG4gICAgICAgICsgQ0hBSU5fQ09ERV9MRU5HVEhcclxuICAgICAgICArIEtFWV9MRU5HVEhcclxuKTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBkZWNpcGhlclhwcnYoc2xpcDMyOiBzdHJpbmcsIHBhc3N3ZDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHsgcHJlZml4LCB3b3JkcyB9ID0gYmVjaDMyLmRlY29kZShzbGlwMzIsIEJFQ0gzMl9MSU1JVClcclxuICAgIGlmIChwcmVmaXggIT09IFwieHBydlwiKSB7XHJcbiAgICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgWFBSViBoZWFkZXI6IFwiJHtwcmVmaXh9XCIgIT0gXCJ4cHJ2XCJgKVxyXG4gICAgfVxyXG4gICAgY29uc3QgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoYmVjaDMyLmZyb21Xb3Jkcyh3b3JkcykpLmJ1ZmZlclxyXG4gICAgY29uc3QgaXYgPSBidWZmZXIuc2xpY2UoMCwgMTYpXHJcbiAgICBjb25zdCBzYWx0ID0gYnVmZmVyLnNsaWNlKDE2LCA0OClcclxuICAgIGNvbnN0IGRhdGEgPSBidWZmZXIuc2xpY2UoNDgpXHJcbiAgICBjb25zdCBrZXkgPSBwYmtkZjJTeW5jKHBhc3N3ZCwgQnVmZmVyLmZyb20oc2FsdCksIDEwMDAwLCAzMiwgJ3NoYTI1NicpICAgIFxyXG4gICAgY29uc3QgZGVjaXBoZXIgPSBjcmVhdGVEZWNpcGhlcml2KFwiYWVzLTI1Ni1jYmNcIiwga2V5LCBCdWZmZXIuZnJvbShpdikpXHJcbiAgICBsZXQgZGVjcnlwdGVkID0gZGVjaXBoZXIudXBkYXRlKEJ1ZmZlci5mcm9tKGRhdGEpLCB1bmRlZmluZWQsICd1dGYtOCcpXHJcbiAgICBkZWNyeXB0ZWQgKz0gZGVjaXBoZXIuZmluYWwoJ3V0Zi04JylcclxuICAgIHJldHVybiBkZWNyeXB0ZWRcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGVjZHNhVmVyaWZ5KFxyXG4gICAgbXNnOiBCdWZmZXI8QXJyYXlCdWZmZXJMaWtlPiwgXHJcbiAgICBwdWJLZXk6IEhleFN0cmluZyxcclxuICAgIHNpZ25hdHVyZTogSGV4U3RyaW5nLCBcclxuKTogYm9vbGVhbiB7XHJcbiAgICBcclxuICAgIHJldHVybiBzZWNwMjU2azEuZWNkc2FWZXJpZnkoXHJcbiAgICAgICAgZnJvbUhleFN0cmluZyhzaWduYXR1cmUpLCBcclxuICAgICAgICBtc2csIFxyXG4gICAgICAgIGZyb21IZXhTdHJpbmcocHViS2V5KVxyXG4gICAgKVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgcGFyc2VYcHJ2ID0gKHNsaXAzMjogc3RyaW5nKToge1xyXG4gICAgY2hhaW5Db2RlOiBVaW50OEFycmF5LFxyXG4gICAga2V5UGF0aDogQXJyYXk8bnVtYmVyPixcclxuICAgIHByaXZhdGVLZXk6IFVpbnQ4QXJyYXksXHJcbn0gPT4ge1xyXG4gICAgLy8gZGVjb2RlIHNsaXAzMiBzdHJpbmdcclxuICAgIGNvbnN0IHsgcHJlZml4LCB3b3JkcyB9ID0gYmVjaDMyLmRlY29kZShzbGlwMzIsIEJFQ0gzMl9MSU1JVClcclxuICAgIGNvbnN0IGJ5dGVzID0gYmVjaDMyLmZyb21Xb3Jkcyh3b3JkcylcclxuXHJcbiAgICAvLyBjaGVjayBwcmVmaXhcclxuICAgIGlmIChwcmVmaXggIT09IFwieHBydlwiKSB7XHJcbiAgICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgWFBSVjogYmFkIGhlYWRlcjogXCIke3ByZWZpeH1cIiAhPSBcInhwcnZcImApXHJcbiAgICB9XHJcblxyXG4gICAgLy8gY2hlY2sgZXhwZWN0ZWQgZGF0YSBsZW5ndGhcclxuICAgIGNvbnN0IGRlcHRoID0gYnl0ZXNbMF1cclxuICAgIGlmIChkZXB0aCAhPT0gMCkge1xyXG4gICAgICAgIHRocm93IEVycm9yKGBJbnZhbGlkIFhQUlY6IG5vdCBhIG1hc3RlciBwcml2YXRlIGtleSAoZGVwdGg6ICR7ZGVwdGh9KWApXHJcbiAgICB9XHJcbiAgICBjb25zdCBleHBlY3RlZExlbmd0aCA9IGdldEV4cGVjdGVkRGF0YUxlbmd0aChkZXB0aClcclxuICAgIGlmIChieXRlcy5sZW5ndGggIT09IGV4cGVjdGVkTGVuZ3RoKSB7XHJcbiAgICAgICAgdGhyb3cgRXJyb3IoXHJcbiAgICAgICAgICAgIFwiSW52YWxpZCBYUFJWOiBiYWQgZGF0YSBsZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgKyBgKGV4cGVjdGVkOiAke2V4cGVjdGVkTGVuZ3RofSwgd2FzOiAke2J5dGVzLmxlbmd0aH1gXHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG4gICAgY29uc3QgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZXMpLmJ1ZmZlclxyXG5cclxuICAgIC8vIGV4dHJhY3Qga2V5IHBhdGggKDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VycywgYmlnIGVuZGlhbilcclxuICAgIGNvbnN0IGtleVBhdGg6IEFycmF5PG51bWJlcj4gPSBbXVxyXG4gICAgY29uc3Qga2V5UGF0aFZpZXcgPSBuZXcgRGF0YVZpZXcoYnVmZmVyLCBERVBUSF9MRU5HVEgsIGRlcHRoICogS0VZX1BBVEhfTEVOR1RIKVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZXB0aDsgaSsrKSB7XHJcbiAgICAgICAga2V5UGF0aC5wdXNoKChrZXlQYXRoVmlldy5nZXRVaW50MzIoaSAqIEtFWV9QQVRIX0xFTkdUSCwgZmFsc2UpKSlcclxuICAgIH1cclxuXHJcbiAgICAvLyBleHRyYWN0IGNoYWluIGNvZGVcclxuICAgIGNvbnN0IGNoYWluQ29kZTogVWludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KENIQUlOX0NPREVfTEVOR1RIKVxyXG4gICAgY29uc3QgY2hhaW5Db2RlT2Zmc2V0ID0gREVQVEhfTEVOR1RIICsgZGVwdGggKiBLRVlfUEFUSF9MRU5HVEhcclxuICAgIGNvbnN0IGNoYWluQ29kZVZpZXcgPSBuZXcgRGF0YVZpZXcoYnVmZmVyLCBjaGFpbkNvZGVPZmZzZXQsIENIQUlOX0NPREVfTEVOR1RIKVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGFpbkNvZGUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjaGFpbkNvZGVbaV0gPSAoY2hhaW5Db2RlVmlldy5nZXRVaW50OChpKSlcclxuICAgIH1cclxuXHJcbiAgICAvLyBleHRyYWN0IGtleSBieXRlc1xyXG4gICAgY29uc3QgcHJpdmF0ZUtleTogVWludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KEtFWV9MRU5HVEgpXHJcbiAgICBjb25zdCBwcml2YXRlS2V5VmlldyA9IG5ldyBEYXRhVmlldyhidWZmZXIsIGNoYWluQ29kZU9mZnNldCArIENIQUlOX0NPREVfTEVOR1RIKVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcml2YXRlS2V5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgcHJpdmF0ZUtleVtpXSA9IChwcml2YXRlS2V5Vmlldy5nZXRVaW50OChpKSlcclxuICAgIH1cclxuXHJcbiAgICAvLyBjaGVjayBpZiBwcml2YXRlIG9yIHB1YmxpYyBrZXkgYXJlIHZhbGlkXHJcbiAgICBpZiAocHJpdmF0ZUtleVswXSAhPT0gMCB8fCAhc2VjcDI1NmsxLnByaXZhdGVLZXlWZXJpZnkocHJpdmF0ZUtleS5zbGljZSgxKSkpIHtcclxuICAgICAgICB0aHJvdyBFcnJvcihgTWFsZm9ybWVkIHNsaXAzMjogbm90IGEgcHJpdmF0ZSBrZXlgKVxyXG4gICAgfSBcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIGNoYWluQ29kZSxcclxuICAgICAgICBrZXlQYXRoLFxyXG4gICAgICAgIHByaXZhdGVLZXk6IHByaXZhdGVLZXkuc2xpY2UoMSksXHJcbiAgICB9XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2VsZWN0VXR4b3Moc3BlY3M6IHsgXHJcbiAgICB1dHhvczogQXJyYXk8VXR4bz4sIFxyXG4gICAgdmFsdWU/OiBDb2lucywgXHJcbiAgICBzdHJhdGVneT86IFV0eG9TZWxlY3Rpb25TdHJhdGVneSwgXHJcbn0pOiBBcnJheTxVdHhvPiB7XHJcbiAgICBjb25zdCBzdHJhdGVneSA9IHNwZWNzLnN0cmF0ZWd5IHx8IFV0eG9TZWxlY3Rpb25TdHJhdGVneS5TbGltRml0XHJcbiAgICBzd2l0Y2ggKHN0cmF0ZWd5KSB7XHJcbiAgICAgICAgY2FzZSBVdHhvU2VsZWN0aW9uU3RyYXRlZ3kuQmlnRmlyc3Q6XHJcbiAgICAgICAgY2FzZSBVdHhvU2VsZWN0aW9uU3RyYXRlZ3kuU2xpbUZpdDpcclxuICAgICAgICAgICAgc3BlY3MudXR4b3MgPSBzcGVjcy51dHhvcy5zb3J0KChhLCBiKSA9PiAoYS52YWx1ZSA+IGIudmFsdWUpID8gLTEgOiAoKGEudmFsdWUgPCBiLnZhbHVlKSA/IDEgOiAwKSlcclxuICAgICAgICAgICAgYnJlYWtcclxuXHJcbiAgICAgICAgY2FzZSBVdHhvU2VsZWN0aW9uU3RyYXRlZ3kuUmFuZG9tOlxyXG4gICAgICAgICAgICBjb25zdCBsZW4gPSBzcGVjcy51dHhvcy5sZW5ndGhcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkgKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKGxlbiAtIGkpKVxyXG4gICAgICAgICAgICAgICAgY29uc3QgdG1wID0gc3BlY3MudXR4b3NbaW5kZXhdXHJcbiAgICAgICAgICAgICAgICBzcGVjcy51dHhvc1tpbmRleF0gPSBzcGVjcy51dHhvc1tsZW4gLSBpIC0gMV1cclxuICAgICAgICAgICAgICAgIHNwZWNzLnV0eG9zW2xlbiAtIGkgLSAxXSA9IHRtcFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrXHJcblxyXG4gICAgICAgIGNhc2UgVXR4b1NlbGVjdGlvblN0cmF0ZWd5LlNtYWxsRmlyc3Q6XHJcbiAgICAgICAgICAgIHNwZWNzLnV0eG9zID0gc3BlY3MudXR4b3Muc29ydCgoYSwgYikgPT4gKGEudmFsdWUgPCBiLnZhbHVlKSA/IC0xIDogKChhLnZhbHVlID4gYi52YWx1ZSkgPyAxIDogMCkpXHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vIGZpbHRlciBsb2NrZWQgVVRYT3M6XHJcbiAgICBjb25zdCBub3cgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKVxyXG4gICAgc3BlY3MudXR4b3MgPSBzcGVjcy51dHhvcy5maWx0ZXIodXR4byA9PiB1dHhvLnRpbWVsb2NrIDw9IG5vdylcclxuXHJcbiAgICAvLyBpZiB0YXJnZXQgdmFsdWUgaXMgc3BlY2lmaWVkLCBmaWx0ZXIgc3BhcmUgVVRYT3NcclxuICAgIGNvbnN0IHBlZHJvcyA9IHNwZWNzPy52YWx1ZT8ucGVkcm9zXHJcbiAgICBpZiAocGVkcm9zKSB7XHJcbiAgICAgICAgaWYgKHN0cmF0ZWd5ID09PSBVdHhvU2VsZWN0aW9uU3RyYXRlZ3kuU2xpbUZpdCkge1xyXG4gICAgICAgICAgICBjb25zdCBzbGltRml0SW5kZXggPSBzcGVjcy51dHhvcy5maW5kSW5kZXgodXR4byA9PiB1dHhvLnZhbHVlIDw9IHBlZHJvcylcclxuICAgICAgICAgICAgaWYgKHNsaW1GaXRJbmRleCA+PSAxKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gc3BlY3MudXR4b3Muc2xpY2Uoc2xpbUZpdEluZGV4IC0gMSwgc2xpbUZpdEluZGV4KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBjb3ZlcmVkOiBiaWdpbnQgPSAwbiBcclxuICAgICAgICByZXR1cm4gc3BlY3MudXR4b3MuZmlsdGVyKHV0eG8gPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXIgPSBjb3ZlcmVkIDw9IHBlZHJvc1xyXG4gICAgICAgICAgICBjb3ZlcmVkICs9IEJpZ0ludCh1dHhvLnZhbHVlKVxyXG4gICAgICAgICAgICByZXR1cm4gZmlsdGVyXHJcbiAgICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHNwZWNzLnV0eG9zXHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzaGEyNTYoYnVmZmVyOiBhbnkpIHtcclxuICAgIGNvbnN0IGhhc2ggPSBjcmVhdGVIYXNoKCdzaGEyNTYnKVxyXG4gICAgaGFzaC51cGRhdGUoYnVmZmVyKVxyXG4gICAgcmV0dXJuIGhhc2guZGlnZXN0KClcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHRvdGFsQ29pbnMoYmFsYW5jZTogQmFsYW5jZSk6IENvaW5zIHtcclxuICAgIHJldHVybiBDb2lucy5mcm9tUGVkcm9zKFxyXG4gICAgICAgIEJpZ0ludChiYWxhbmNlLmxvY2tlZClcclxuICAgICAgICAgICAgKyBCaWdJbnQoYmFsYW5jZS5zdGFrZWQpXHJcbiAgICAgICAgICAgICsgQmlnSW50KGJhbGFuY2UudW5sb2NrZWQpXHJcbiAgICApXHJcbn1cclxuXHJcbiJdfQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Balance, Network, QueryStakesOrder, StakeEntry } from "../types";
|
|
1
|
+
import { Balance, HexString, Network, QueryStakesOrder, StakeEntry } from "../types";
|
|
2
2
|
import { IAccount, IBIP32, ICoinbase, IJsonRpcProvider, ISigner, IWallet } from "./interfaces";
|
|
3
3
|
import { Coins, PublicKey, PublicKeyHashString, Utxo, UtxoCacheInfo, UtxoSelectionStrategy } from "./types";
|
|
4
4
|
export declare class Wallet implements IWallet {
|
|
@@ -99,6 +99,8 @@ export declare class Wallet implements IWallet {
|
|
|
99
99
|
get network(): Network | undefined;
|
|
100
100
|
get pkh(): PublicKeyHashString;
|
|
101
101
|
get publicKey(): PublicKey;
|
|
102
|
+
get privateKey(): HexString;
|
|
103
|
+
authorizeEvmAddress(evmAddress: HexString): any;
|
|
102
104
|
addUtxos(...utxos: Array<Utxo>): {
|
|
103
105
|
excluded: Array<Utxo>;
|
|
104
106
|
included: Array<Utxo>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../../../src/lib/crypto/wallet.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAiB,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../../../src/lib/crypto/wallet.ts"],"names":[],"mappings":"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"}
|