Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

slopes

Package Overview
Dependencies
Maintainers
1
Versions
62
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

slopes - npm Package Compare versions

Comparing version 1.3.19 to 1.4.0

dist/slopes.js.LICENSE.txt

26

package.json
{
"name": "slopes",
"version": "1.3.19",
"version": "1.4.0",
"description": "AVA Platform JS Library",

@@ -31,5 +31,5 @@ "main": "typings/src/index.js",

"@types/create-hash": "^1.2.2",
"@types/jest": "^24.0.25",
"@types/jest": "^24.9.1",
"@types/libsodium-wrappers": "^0.7.7",
"@types/node": "^12.12.24",
"@types/node": "^12.12.34",
"clean-webpack-plugin": "^3.0.0",

@@ -41,12 +41,12 @@ "expose-loader": "^0.7.5",

"jest-mock-axios": "^3.2.0",
"terser-webpack-plugin": "^2.3.1",
"terser-webpack-plugin": "^2.3.5",
"ts-jest": "^24.2.0",
"ts-loader": "^6.2.1",
"ts-loader": "^6.2.2",
"typedoc": "^0.15.6",
"typedoc-plugin-external-module-name": "^2.2.1",
"typedoc-plugin-markdown": "^2.2.14",
"typescript": "^3.7.4",
"webpack": "^4.41.5",
"webpack-cli": "^3.3.10",
"webpack-dev-server": "^3.10.1"
"typedoc-plugin-markdown": "^2.2.17",
"typescript": "^3.8.3",
"webpack": "^4.42.1",
"webpack-cli": "^3.3.11",
"webpack-dev-server": "^3.10.3"
},

@@ -58,5 +58,5 @@ "engines": {

"dependencies": {
"axios": "^0.19.1",
"axios": "^0.19.2",
"bn.js": "^4.11.8",
"buffer": "^5.4.3",
"buffer": "^5.5.0",
"create-hash": "^1.2.0",

@@ -66,4 +66,4 @@ "elliptic": "^6.5.2",

"secp256k1": "^4.0.0",
"store2": "^2.10.0"
"store2": "^2.11.0"
}
}

@@ -29,3 +29,3 @@ # Slopes - The AVA Platform JavaScript Library

The entirety of the Slopes documentation can be found on our [XXX Fix Link XXX Slopes documentation page](https://avalabs.org/docs/slopes).
The entirety of the Slopes documentation can be found on our [Slopes documentation page](https://docs.ava.network/v1.0/en/tools/slopes/).

@@ -355,2 +355,2 @@

}
```
```

@@ -183,7 +183,7 @@ /**

export class AVMConstants {
static SECPOUTPUTID:number = 4;
static SECPINPUTID:number = 6;
static SECPOUTPUTID:number = 7;
static SECPINPUTID:number = 5;
static CREATEASSETTX:number = 1;
static BASETX:number = 0;
static SECPCREDENTIAL:number = 7;
static SECPCREDENTIAL:number = 9;
static ASSETIDLEN:number = 32;

@@ -190,0 +190,0 @@ static BLOCKCHAINIDLEN:number = 32;

@@ -473,3 +473,3 @@ /**

let n2_avm:object = {
"blockchainID": "m383Jyn4z9kYmyMamjHwoExocRRV7ondsci862bbv1FSrqvH9",
"blockchainID": "4ktRjsAKxgMr2aEzv9SWmrU7Xk5FniHUrVCX4P1TZSfTLZWFM",
"alias": "X",

@@ -480,3 +480,3 @@ "vm": "avm"

let n2_platform:object = {
"blockchainID": "",
"blockchainID": "11111111111111111111111111111111LpoYY",
"alias": "P",

@@ -487,3 +487,3 @@ "vm": "platform"

let n2_contracts:object = {
"blockchainID": "",
"blockchainID": "2mUYSXfLrDtigwbzj1LxKVsHwELghc5sisoXrzJwLqAAQHF4i",
"alias": "C",

@@ -494,7 +494,7 @@ "vm": "contracts"

let n12345_avm:object = Object.assign({}, n2_avm);
n12345_avm["blockchainID"] = "i8KtK2KwLi1o7WaVBbEKpRLPtAEYayfoptqAFYxfQgrus1g6m";
n12345_avm["blockchainID"] = "4R5p2RXDGLqaifZE4hHWH9owe34pfoBULn1DrQTWivjg8o4aH";
let n12345_platform = Object.assign({}, n2_platform);
n12345_platform["blockchainID"] = "11111111111111111111111111111111LpoYY";
let n12345_contracts = Object.assign({}, n2_contracts);
n12345_platform["blockchainID"] = "MTHoZAP3gGHB4cAUpFB1CuYnh3uDoMkte6FjLb9Sn5Hx8Bkvb";
n12345_platform["blockchainID"] = "tZGm6RCkeGpVETUTp11DW3UYFZmm69zfqxchpHrSF7wgy8rmw";

@@ -504,20 +504,17 @@ export class Defaults {

"1": {}, //update before mainnet
/*
This will be set on test network.
"2": {
"avm": n2_avm,
"X": n2_avm,
"m383Jyn4z9kYmyMamjHwoExocRRV7ondsci862bbv1FSrqvH9": n2_avm,
"4ktRjsAKxgMr2aEzv9SWmrU7Xk5FniHUrVCX4P1TZSfTLZWFM": n2_avm,
"platform": n2_platform,
"P": n2_platform,
"BCID1": n2_platform,
"11111111111111111111111111111111LpoYY": n2_platform,
"contracts": n2_contracts,
"C": n2_contracts,
"BCID2": n2_contracts
}
*/
"2mUYSXfLrDtigwbzj1LxKVsHwELghc5sisoXrzJwLqAAQHF4i": n2_contracts
},
"12345": {
"avm": n12345_avm,
"X": n12345_avm,
"i8KtK2KwLi1o7WaVBbEKpRLPtAEYayfoptqAFYxfQgrus1g6m": n12345_avm,
"4R5p2RXDGLqaifZE4hHWH9owe34pfoBULn1DrQTWivjg8o4aH": n12345_avm,
"platform": n12345_platform,

@@ -528,5 +525,5 @@ "P": n12345_platform,

"C": n12345_contracts,
"MTHoZAP3gGHB4cAUpFB1CuYnh3uDoMkte6FjLb9Sn5Hx8Bkvb": n12345_contracts
"tZGm6RCkeGpVETUTp11DW3UYFZmm69zfqxchpHrSF7wgy8rmw": n12345_contracts
}
};
}

@@ -23,3 +23,3 @@ import mockAxios from 'jest-mock-axios';

const networkid:number = 12345;
const blockchainid:string = "i8KtK2KwLi1o7WaVBbEKpRLPtAEYayfoptqAFYxfQgrus1g6m";
const blockchainid:string = "4R5p2RXDGLqaifZE4hHWH9owe34pfoBULn1DrQTWivjg8o4aH";
const ip:string = '127.0.0.1';

@@ -362,5 +362,5 @@ const port:number = 9650;

//Payment
let OPUTXOstr1:string = "8snom9a21FvVHqyasGGAZKSDjQXJg7CvTvA53is6uyhBxvGbc5WVACRoyscZZ1TGpqiGHTbmMBfMq6qE8fqTBFQTsMGJhQw68T1A9WBcazbMvGv6s6DtKV66sKPXLemTK6miMYWvjcvRCH6rihj7vpDa3Ffp2Jq2QZtJ";
let OPUTXOstr2:string = "U9rFgK5jjdXmV8k5tpqeXkimzrN3o9eCCcXesyhMBBZu9MQJCDTDo5Wn5psKvzJVMJpiMbdkfDXkp7sKZddfCZdxpuDmyNy7VFka19zMW4jcz6DRQvNfA2kvJYKk96zc7uizgp3i2FYWrB8mr1sPJ8oP9Th64GQ5yHd8";
let OPUTXOstr3:string = "adUbkxszkX9FbvnyKu6UA4g7XhAmPVj6PgPhLS6dTtUfCCr7oDEEXNYqWD2q5MuKPGgEhX16V451kAEUyYhiFMPYCjsAiCM1oWKnLmeA9joFr9jDYD5AoLAsVEyM13FZPf8vuKmF6JTZdCbMCgzHYrMjnb9i3iDPN4Qg";
let OPUTXOstr1:string = bintools.avaSerialize(Buffer.from("38d1b9f1138672da6fb6c35125539276a9acc2a668d63bea6ba3c795e2edb0f5000000013e07e38e2f23121be8756412c18db7246a16d26ee9936f3cba28be149cfd3558000000070000000000004dd500000000000000000000000100000001a36fd0c2dbcab311731dde7ef1514bd26fcdc74d", "hex"));
let OPUTXOstr2:string = bintools.avaSerialize(Buffer.from("c3e4823571587fe2bdfc502689f5a8238b9d0ea7f3277124d16af9de0d2d9911000000003e07e38e2f23121be8756412c18db7246a16d26ee9936f3cba28be149cfd355800000007000000000000001900000000000000000000000100000001e1b6b6a4bad94d2e3f20730379b9bcd6f176318e", "hex"));
let OPUTXOstr3:string = bintools.avaSerialize(Buffer.from("f29dba61fda8d57a911e7f8810f935bde810d3f8d495404685bdb8d9d8545e86000000003e07e38e2f23121be8756412c18db7246a16d26ee9936f3cba28be149cfd355800000007000000000000001900000000000000000000000100000001e1b6b6a4bad94d2e3f20730379b9bcd6f176318e", "hex"));

@@ -367,0 +367,0 @@ let set:UTXOSet = new UTXOSet();

@@ -46,3 +46,3 @@ import BN from "bn.js";

let out:SecpOutput = new SecpOutput(assetIDBuff, new BN(10000), addrs, locktime, 3);
expect(out.getOutputID()).toBe(4);
expect(out.getOutputID()).toBe(7);
expect(JSON.stringify(out.getAddresses().sort())).toStrictEqual(JSON.stringify(addrs.sort()));

@@ -49,0 +49,0 @@

@@ -10,4 +10,4 @@ import BN from "bn.js";

describe('SecpUTXO', () => {
let utxohex:string = "38d1b9f1138672da6fb6c35125539276a9acc2a668d63bea6ba3c795e2edb0f5000000013e07e38e2f23121be8756412c18db7246a16d26ee9936f3cba28be149cfd3558000000040000000000004dd500000000000000000000000100000001a36fd0c2dbcab311731dde7ef1514bd26fcdc74d";
let outputhex:string = "3e07e38e2f23121be8756412c18db7246a16d26ee9936f3cba28be149cfd3558000000040000000000004dd500000000000000000000000100000001a36fd0c2dbcab311731dde7ef1514bd26fcdc74d"
let utxohex:string = "38d1b9f1138672da6fb6c35125539276a9acc2a668d63bea6ba3c795e2edb0f5000000013e07e38e2f23121be8756412c18db7246a16d26ee9936f3cba28be149cfd3558000000070000000000004dd500000000000000000000000100000001a36fd0c2dbcab311731dde7ef1514bd26fcdc74d";
let outputhex:string = "3e07e38e2f23121be8756412c18db7246a16d26ee9936f3cba28be149cfd3558000000070000000000004dd500000000000000000000000100000001a36fd0c2dbcab311731dde7ef1514bd26fcdc74d"
let outputidx:string = "00000001";

@@ -24,3 +24,4 @@ let outtxid:string = "38d1b9f1138672da6fb6c35125539276a9acc2a668d63bea6ba3c795e2edb0f5";

//Payment
let OPUTXOstr:string = "U9rFgK5jjdXmV8k5tpqeXkimzrN3o9eCCcXesyhMBBZu9MQJCDTDo5Wn5psKvzJVMJpiMbdkfDXkp7sKZddfCZdxpuDmyNy7VFka19zMW4jcz6DRQvNfA2kvJYKk96zc7uizgp3i2FYWrB8mr1sPJ8oP9Th64GQ5yHd8";
let OPUTXOstr:string = bintools.avaSerialize(utxobuff);
//"U9rFgK5jjdXmV8k5tpqeXkimzrN3o9eCCcXesyhMBBZu9MQJCDTDo5Wn5psKvzJVMJpiMbdkfDXkp7sKZddfCZdxpuDmyNy7VFka19zMW4jcz6DRQvNfA2kvJYKk96zc7uizgp3i2FYWrB8mr1sPJ8oP9Th64GQ5yHd8";

@@ -45,3 +46,3 @@ //implies fromString and fromBuffer

op.fromString(OPUTXOstr);
expect(op.getOuputID()).toBe(4);
expect(op.getOuputID()).toBe(7);
});

@@ -136,5 +137,5 @@

let utxostrs:Array<string> = [
"8snom9a21FvVHqyasGGAZKSDjQXJg7CvTvA53is6uyhBxvGbc5WVACRoyscZZ1TGpqiGHTbmMBfMq6qE8fqTBFQTsMGJhQw68T1A9WBcazbMvGv6s6DtKV66sKPXLemTK6miMYWvjcvRCH6rihj7vpDa3Ffp2Jq2QZtJ",
"U9rFgK5jjdXmV8k5tpqeXkimzrN3o9eCCcXesyhMBBZu9MQJCDTDo5Wn5psKvzJVMJpiMbdkfDXkp7sKZddfCZdxpuDmyNy7VFka19zMW4jcz6DRQvNfA2kvJYKk96zc7uizgp3i2FYWrB8mr1sPJ8oP9Th64GQ5yHd8",
"adUbkxszkX9FbvnyKu6UA4g7XhAmPVj6PgPhLS6dTtUfCCr7oDEEXNYqWD2q5MuKPGgEhX16V451kAEUyYhiFMPYCjsAiCM1oWKnLmeA9joFr9jDYD5AoLAsVEyM13FZPf8vuKmF6JTZdCbMCgzHYrMjnb9i3iDPN4Qg"
bintools.avaSerialize(Buffer.from("38d1b9f1138672da6fb6c35125539276a9acc2a668d63bea6ba3c795e2edb0f5000000013e07e38e2f23121be8756412c18db7246a16d26ee9936f3cba28be149cfd3558000000070000000000004dd500000000000000000000000100000001a36fd0c2dbcab311731dde7ef1514bd26fcdc74d", "hex")),
bintools.avaSerialize(Buffer.from("c3e4823571587fe2bdfc502689f5a8238b9d0ea7f3277124d16af9de0d2d9911000000003e07e38e2f23121be8756412c18db7246a16d26ee9936f3cba28be149cfd355800000007000000000000001900000000000000000000000100000001e1b6b6a4bad94d2e3f20730379b9bcd6f176318e", "hex")),
bintools.avaSerialize(Buffer.from("f29dba61fda8d57a911e7f8810f935bde810d3f8d495404685bdb8d9d8545e86000000003e07e38e2f23121be8756412c18db7246a16d26ee9936f3cba28be149cfd355800000007000000000000001900000000000000000000000100000001e1b6b6a4bad94d2e3f20730379b9bcd6f176318e", "hex"))
];

@@ -324,3 +325,3 @@ let addrs:Array<Buffer> = [

//Take-or-Leave
let newutxo:string = "QyaDeF2yYxzQuatMEgijoYerFBVTwomhaTGraUrCngZomXtxPT2AHaKPVGh8rwtTGKMEYS1YN3CmdZitZKL9ENHRY99uNdQHogV36v8iFCjMsD7Ygm8WWY3xVu19VzJj1anktNPL8xNEN538PFcBv5eTz87jQCsWj4i7";
let newutxo:string = bintools.avaSerialize(Buffer.from("acf88647b3fbaa9fdf4378f3a0df6a5d15d8efb018ad78f12690390e79e1687600000003acf88647b3fbaa9fdf4378f3a0df6a5d15d8efb018ad78f12690390e79e168760000000700000000000186a000000000000000000000000100000001fceda8f90fcb5d30614b99d79fc4baa293077626", "hex"));

@@ -327,0 +328,0 @@ beforeEach(() => {

@@ -182,7 +182,7 @@ "use strict";

exports.AVMConstants = AVMConstants;
AVMConstants.SECPOUTPUTID = 4;
AVMConstants.SECPINPUTID = 6;
AVMConstants.SECPOUTPUTID = 7;
AVMConstants.SECPINPUTID = 5;
AVMConstants.CREATEASSETTX = 1;
AVMConstants.BASETX = 0;
AVMConstants.SECPCREDENTIAL = 7;
AVMConstants.SECPCREDENTIAL = 9;
AVMConstants.ASSETIDLEN = 32;

@@ -202,2 +202,2 @@ AVMConstants.BLOCKCHAINIDLEN = 32;

;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpcy9hdm0vdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7R0FFRztBQUNILG9DQUErQjtBQUMvQiw2Q0FBMkM7QUFDM0Msa0RBQXVCO0FBQ3ZCLG9FQUE0QztBQUM1Qyx1Q0FBbUU7QUFFbkU7O0dBRUc7QUFDSCxJQUFJLFFBQVEsR0FBWSxrQkFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBRS9DOztHQUVHO0FBQ0gsTUFBYSxNQUFPLFNBQVEsY0FBTTtJQWlCOUI7O09BRUc7SUFDSDtRQUNJLEtBQUssRUFBRSxDQUFDO1FBbEJaOztXQUVHO1FBQ0gsY0FBUyxHQUFHLENBQUMsT0FBYyxFQUFFLEVBQUU7WUFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUM7UUFDMUIsQ0FBQyxDQUFBO1FBRUQ7O1dBRUc7UUFDSCxjQUFTLEdBQUcsR0FBVSxFQUFFO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN2QixDQUFDLENBQUE7UUFPRyxJQUFJLENBQUMsS0FBSyxHQUFHLGVBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDbkIsQ0FBQztDQUNKO0FBekJELHdCQXlCQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxTQUFVLFNBQVEsY0FBTTtJQUVqQzs7T0FFRztJQUNIO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsS0FBSyxHQUFHLGVBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDcEIsQ0FBQztDQUNKO0FBVkQsOEJBVUM7QUFFRDs7R0FFRztBQUNILE1BQWEsT0FBUSxTQUFRLGNBQU07SUF5Qy9COztPQUVHO0lBQ0g7UUFDSSxLQUFLLEVB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QWEsWUFBWTs7QUFBekIsb0NBWUM7QUFYVSx5QkFBWSxHQUFVLENBQUMsQ0FBQztBQUN4Qix3QkFBVyxHQUFVLENBQUMsQ0FBQztBQUN2QiwwQkFBYSxHQUFVLENBQUMsQ0FBQztBQUN6QixtQkFBTSxHQUFVLENBQUMsQ0FBQztBQUNsQiwyQkFBYyxHQUFVLENBQUMsQ0FBQztBQUMxQix1QkFBVSxHQUFVLEVBQUUsQ0FBQztBQUN2Qiw0QkFBZSxHQUFVLEVBQUUsQ0FBQztBQUM1Qix5QkFBWSxHQUFVLENBQUMsQ0FBQztBQUN4Qix5QkFBWSxHQUFVLEdBQUcsQ0FBQztBQUMxQiwwQkFBYSxHQUFVLEVBQUUsQ0FBQztBQUMxQixxQkFBUSxHQUFVLENBQUMsQ0FBQztBQWUvQjs7R0FFRztBQUNILFNBQWdCLE9BQU87SUFDbkIsT0FBTyxJQUFJLGVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUZELDBCQUVDO0FBQUEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBBVk1BUElcbiAqL1xuaW1wb3J0IHtCdWZmZXJ9IGZyb20gXCJidWZmZXIvXCI7XG5pbXBvcnQgeyBOQnl0ZXMgfSBmcm9tICcuLi8uLi91dGlscy90eXBlcyc7XG5pbXBvcnQgQk4gZnJvbSBcImJuLmpzXCI7XG5pbXBvcnQgQmluVG9vbHMgZnJvbSAnLi4vLi4vdXRpbHMvYmludG9vbHMnO1xuaW1wb3J0IHsgT3V0cHV0LCBTZWxlY3RPdXRwdXRDbGFzcywgU2VjcE91dEJhc2UgfSBmcm9tICcuL291dHB1dHMnO1xuXG4vKipcbiAqIEBpZ25vcmVcbiAqL1xubGV0IGJpbnRvb2xzOkJpblRvb2xzID0gQmluVG9vbHMuZ2V0SW5zdGFuY2UoKTtcblxuLyoqXG4gKiBUeXBlIHJlcHJlc2VudGluZyBhIFtbU2lnbmF0dXJlXV0gaW5kZXggdXNlZCBpbiBbW0lucHV0XV1cbiAqL1xuZXhwb3J0IGNsYXNzIFNpZ0lkeCBleHRlbmRzIE5CeXRlcyB7XG4gICAgc291cmNlOkJ1ZmZlcjtcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHNvdXJjZSBhZGRyZXNzIGZvciB0aGUgc2lnbmF0dXJlXG4gICAgICovXG4gICAgc2V0U291cmNlID0gKGFkZHJlc3M6QnVmZmVyKSA9PiB7XG4gICAgICAgIHRoaXMuc291cmNlID0gYWRkcmVzcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIHNvdXJjZSBhZGRyZXNzIGZvciB0aGUgc2lnbmF0dXJlXG4gICAgICovXG4gICAgZ2V0U291cmNlID0gKCk6QnVmZmVyID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc291cmNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFR5cGUgcmVwcmVzZW50aW5nIGEgW1tTaWduYXR1cmVdXSBpbmRleCB1c2VkIGluIFtbSW5wdXRdXVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKCl7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuYnl0ZXMgPSBCdWZmZXIuYWxsb2MoNCk7XG4gICAgICAgIHRoaXMuYnNpemUgPSA0O1xuICAgIH1cbn1cblxuLyoqXG4gKiBTaWduYXR1cmUgZm9yIGEgW1tUeF1dXG4gKi9cbmV4cG9ydCBjbGFzcyBTaWduYXR1cmUgZXh0ZW5kcyBOQnl0ZXMge1xuXG4gICAgLyoqXG4gICAgICogU2lnbmF0dXJlIGZvciBhIFtbVHhdXVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKCl7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuYnl0ZXMgPSBCdWZmZXIuYWxsb2MoNjUpO1xuICAgICAgICB0aGlzLmJzaXplID0gNjU7XG4gICAgfVxufVxuXG4vKipcbiAqIENsYXNzIGZvciByZXByZXNlbnRpbmcgYW4gYWRkcmVzcyB1c2VkIGluIFtbT3V0cHV0XV0gdHlwZXNcbiAqL1xuZXhwb3J0IGNsYXNzIEFkZHJlc3MgZXh0ZW5kcyBOQnl0ZXMge1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIGZ1bmN0aW9uIHVzZWQgdG8gc29ydCBhbiBhcnJheSBvZiBbW0FkZHJlc3NdXWVzXG4gICAgICovXG4gICAgc3RhdGljIGNvbXBhcml0b3IgPSAoKTooYTpBZGRyZXNzLCBiOkFkZHJlc3MpID0+ICgxfC0xfDApID0+IHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGE6QWRkcmVzcywgYjpBZGRyZXNzKTooMXwtMXwwKSB7IFxuICAgICAgICAgICAgcmV0dXJuIEJ1ZmZlci5jb21wYXJlKGEudG9CdWZmZXIoKSwgYi50b0J1ZmZlcigpKSBhcyAoMXwtMXwwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgYmFzZS01OCByZXByZXNlbnRhdGlvbiBvZiB0aGUgW1tBZGRyZXNzXV0uXG4gICAgICovXG4gICAgdG9TdHJpbmcoKTpzdHJpbmcge1xuICAgICAgICByZXR1cm4gYmludG9vbHMuYXZhU2VyaWFsaXplKHRoaXMudG9CdWZmZXIoKSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRha2VzIGEgYmFzZS01OCBzdHJpbmcgY29udGFpbmluZyBhbiBbW0FkZHJlc3NdXSwgcGFyc2VzIGl0LCBwb3B1bGF0ZXMgdGhlIGNsYXNzLCBhbmQgcmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSBBZGRyZXNzIGluIGJ5dGVzLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBieXRlcyBBIGJhc2UtNTggc3RyaW5nIGNvbnRhaW5pbmcgYSByYXcgW1tBZGRyZXNzXV1cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBUaGUgbGVuZ3RoIG9mIHRoZSByYXcgW1tBZGRyZXNzXV1cbiAgICAgKi9cbiAgICBmcm9tU3RyaW5nKGFkZHI6c3RyaW5nKTpudW1iZXIge1xuICAgICAgICBsZXQgYWRkcmJ1ZmY6QnVmZmVyID0gYmludG9vbHMuYjU4VG9CdWZmZXIoYWRkcik7XG4gICAgICAgIGlmKGFkZHJidWZmLmxlbmd0aCA9PSAyNCAmJiBiaW50b29scy52YWxpZGF0ZUNoZWNrc3VtKGFkZHJidWZmKSkge1xuICAgICAgICAgICAgbGV0IG5ld2J1ZmY6QnVmZmVyID0gYmludG9vbHMuY29weUZyb20oYWRkcmJ1ZmYsIDAsYWRkcmJ1ZmYubGVuZ3RoIC0gNCk7XG4gICAgICAgICAgICBpZihuZXdidWZmLmxlbmd0aCA9PSAyMCl7XG4gICAgICAgICAgICAgICAgdGhpcy5ieXRlcyA9IG5ld2J1ZmY7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZihhZGRyYnVmZi5sZW5ndGggPT0gMjQpe1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXJyb3IgLSBBZGRyZXNzLmZyb21TdHJpbmc6IGludmFsaWQgY2hlY2tzdW0gb24gYWRkcmVzc1wiKTtcbiAgICAgICAgfSBlbHNlIGlmKGFkZHJidWZmLmxlbmd0aCA9PSAyMCl7XG4gICAgICAgICAgICB0aGlzLmJ5dGVzID0gYWRkcmJ1ZmY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXJyb3IgLSBBZGRyZXNzLmZyb21TdHJpbmc6IGludmFsaWQgYWRkcmVzc1wiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5nZXRTaXplKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xhc3MgZm9yIHJlcHJlc2VudGluZyBhbiBhZGRyZXNzIHVzZWQgaW4gW1tPdXRwdXRdXSB0eXBlc1xuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKCl7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuYnl0ZXMgPSBCdWZmZXIuYWxsb2MoMjApO1xuICAgICAgICB0aGlzLmJzaXplID0gMjA7XG4gICAgfVxufVxuXG4vKipcbiAqIENsYXNzIGZvciBjcmVhdGluZyBpbml0aWFsIG91dHB1dCBzdGF0ZXMgdXNlZCBpbiBhc3NldCBjcmVhdGlvblxuICovXG5leHBvcnQgY2xhc3MgSW5pdGlhbFN0YXRlcyB7XG4gICAgcHJvdGVjdGVkIGZ4czp7W2Z4aWQ6bnVtYmVyXTpBcnJheTxPdXRwdXQ+fSA9IHt9O1xuXG4gICAgLyoqXG4gICAgICogXG4gICAgICogQHBhcmFtIG91dCBUaGUgb3V0cHV0IHN0YXRlIHRvIGFkZCB0byB0aGUgY29sbGVjdGlvblxuICAgICAqIEBwYXJhbSBmeGlkIFRoZSBGeElEIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB0aGlzIG91dHB1dCwgZGVmYXVsdCBBVk1Db25zdGFudHMuU0VDUEZYSURcbiAgICAgKi9cbiAgICBhZGRPdXRwdXQob3V0Ok91dHB1dCwgZnhpZDpudW1iZXIgPSBBVk1Db25zdGFudHMuU0VDUEZYSUQpOnZvaWQge1xuICAgICAgICBpZighKGZ4aWQgaW4gdGhpcy5meHMpKXtcbiAgICAgICAgICAgIHRoaXMuZnhzW2Z4aWRdID0gW107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5meHNbZnhpZF0ucHVzaChvdXQpO1xuICAgIH1cblxuICAgIGZyb21CdWZmZXIoYnl0ZXM6QnVmZmVyLCBvZmZzZXQ6bnVtYmVyKTpudW1iZXIge1xuICAgICAgICBsZXQgcmVzdWx0OntbZnhpZDpudW1iZXJdOkFycmF5PE91dHB1dD59ID0ge307XG4gICAgICAgIGxldCBrbGVuOkJ1ZmZlciA9IGJpbnRvb2xzLmNvcHlGcm9tKGJ5dGVzLCBvZmZzZXQsIG9mZnNldCArIDQpO1xuICAgICAgICBvZmZzZXQgKz0gNDtcbiAgICAgICAgbGV0IGtsZW5udW06bnVtYmVyID0ga2xlbi5yZWFkVUludDMyQkUoMCk7XG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBrbGVubnVtOyBpKyspe1xuICAgICAgICAgICAgbGV0IGZ4aWRidWZmOkJ1ZmZlciA9IGJpbnRvb2xzLmNvcHlGcm9tKGJ5dGVzLCBvZmZzZXQsIG9mZnNldCArIDQpO1xuICAgICAgICAgICAgb2Zmc2V0ICs9IDQ7XG4gICAgICAgICAgICBsZXQgZnhpZDpudW1iZXIgPSBmeGlkYnVmZi5yZWFkVUludDMyQkUoMCk7XG4gICAgICAgICAgICByZXN1bHRbZnhpZF0gPSBbXTtcbiAgICAgICAgICAgIGxldCBzdGF0ZWxlbmJ1ZmY6QnVmZmVyID0gYmludG9vbHMuY29weUZyb20oYnl0ZXMsIG9mZnNldCwgb2Zmc2V0ICsgNCk7XG4gICAgICAgICAgICBvZmZzZXQgKz0gNDtcbiAgICAgICAgICAgIGxldCBzdGF0ZWxlbjpudW1iZXIgPSBzdGF0ZWxlbmJ1ZmYucmVhZFVJbnQzMkJFKDApO1xuICAgICAgICAgICAgZm9yKGxldCBqID0gMDsgaiA8IHN0YXRlbGVuOyBqKyspe1xuICAgICAgICAgICAgICAgIGxldCBhYnVmZjpCdWZmZXIgPSBiaW50b29scy5jb3B5RnJvbShieXRlcywgb2Zmc2V0KTtcbiAgICAgICAgICAgICAgICBsZXQgb3V0Ok91dHB1dCA9IG5ldyBTZWNwT3V0QmFzZSgpO1xuICAgICAgICAgICAgICAgIG91dC5mcm9tQnVmZmVyKGFidWZmKVxuICAgICAgICAgICAgICAgIGxldCBvdXRidWZmOkJ1ZmZlciA9IG91dC50b0J1ZmZlcigpO1xuICAgICAgICAgICAgICAgIG9mZnNldCArPSBvdXRidWZmLmxlbmd0aDtcbiAgICAgICAgICAgICAgICByZXN1bHRbZnhpZF0ucHVzaChvdXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZnhzID0gcmVzdWx0O1xuICAgICAgICByZXR1cm4gb2Zmc2V0XG4gICAgfVxuXG4gICAgdG9CdWZmZXIoKTpCdWZmZXIge1xuICAgICAgICBsZXQgYnVmZjpBcnJheTxCdWZmZXI+ID0gW107XG4gICAgICAgIGxldCBrZXlzOkFycmF5PG51bWJlcj4gPSBPYmplY3Qua2V5cyh0aGlzLmZ4cykubWFwKGsgPT4gcGFyc2VJbnQoaykpLnNvcnQoKTtcbiAgICAgICAgbGV0IGtsZW46QnVmZmVyID0gQnVmZmVyLmFsbG9jKDQpO1xuICAgICAgICBrbGVuLndyaXRlVUludDMyQkUoa2V5cy5sZW5ndGgsIDApO1xuICAgICAgICBidWZmLnB1c2goa2xlbik7XG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgIGxldCBmeGlkOm51bWJlciA9IGtleXNbaV07XG4gICAgICAgICAgICBsZXQgZnhpZGJ1ZmY6QnVmZmVyID0gQnVmZmVyLmFsbG9jKDQpO1xuICAgICAgICAgICAgZnhpZGJ1ZmYud3JpdGVVSW50MzJCRShmeGlkLCAwKTtcbiAgICAgICAgICAgIGJ1ZmYucHVzaChmeGlkYnVmZik7XG4gICAgICAgICAgICBsZXQgaW5pdGlhbFN0YXRlID0gdGhpcy5meHNbZnhpZF0uc29ydChPdXRwdXQuY29tcGFyYXRvcigpKTtcbiAgICAgICAgICAgIGxldCBzdGF0ZWxlbjpCdWZmZXIgPSBCdWZmZXIuYWxsb2MoNCk7XG4gICAgICAgICAgICBzdGF0ZWxlbi53cml0ZVVJbnQzMkJFKGluaXRpYWxTdGF0ZS5sZW5ndGgsIDApO1xuICAgICAgICAgICAgYnVmZi5wdXNoKHN0YXRlbGVuKTtcbiAgICAgICAgICAgIGZvcihsZXQgaiA9IDA7IGogPCBpbml0aWFsU3RhdGUubGVuZ3RoOyBqKyspe1xuICAgICAgICAgICAgICAgIGJ1ZmYucHVzaChpbml0aWFsU3RhdGVbal0udG9CdWZmZXIoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoYnVmZik7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKCl7fVxufVxuXG5leHBvcnQgY2xhc3MgQVZNQ29uc3RhbnRzIHtcbiAgICBzdGF0aWMgU0VDUE9VVFBVVElEOm51bWJlciA9IDQ7XG4gICAgc3RhdGljIFNFQ1BJTlBVVElEOm51bWJlciA9IDY7XG4gICAgc3RhdGljIENSRUFURUFTU0VUVFg6bnVtYmVyID0gMTtcbiAgICBzdGF0aWMgQkFTRVRYOm51bWJlciA9IDA7XG4gICAgc3RhdGljIFNFQ1BDUkVERU5USUFMOm51bWJlciA9IDc7XG4gICAgc3RhdGljIEFTU0VUSURMRU46bnVtYmVyID0gMzI7XG4gICAgc3RhdGljIEJMT0NLQ0hBSU5JRExFTjpudW1iZXIgPSAzMjtcbiAgICBzdGF0aWMgU1lNQk9MTUFYTEVOOm51bWJlciA9IDQ7XG4gICAgc3RhdGljIEFTU0VUTkFNRUxFTjpudW1iZXIgPSAxMjg7XG4gICAgc3RhdGljIEFERFJFU1NMRU5HVEg6bnVtYmVyID0gMjA7XG4gICAgc3RhdGljIFNFQ1BGWElEOm51bWJlciA9IDA7XG59XG5cbi8qKlxuICogUnVsZXMgdXNlZCB3aGVuIG1lcmdpbmcgc2V0c1xuICovXG5leHBvcnQgdHlwZSBNZXJnZVJ1bGUgPSBcImludGVyc2VjdGlvblwiIC8vU2VsZiBJTlRFUlNFQ1QgTmV3IFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBcImRpZmZlcmVuY2VTZWxmXCIgLy9TZWxmIE1JTlVTIE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBcImRpZmZlcmVuY2VOZXdcIiAvL05ldyBNSU5VUyBTZWxmXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFwic3ltRGlmZmVyZW5jZVwiIC8vZGlmZmVyZW5jZVNlbGYgVU5JT04gZGlmZmVyZW5jZU5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBcInVuaW9uXCIgLy9TZWxmIFVOSU9OIE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBcInVuaW9uTWludXNOZXdcIiAvL3VuaW9uIE1JTlVTIGRpZmZlcmVuY2VOZXdcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXCJ1bmlvbk1pbnVzU2VsZlwiIC8vdW5pb24gTUlOVVMgZGlmZmVyZW5jZVNlbGZcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXCJFUlJPUlwiOyAvL2dlbmVyYXRlIGVycm9yIGZvciB0ZXN0aW5nXG5cbi8qKlxuICogRnVuY3Rpb24gcHJvdmlkaW5nIHRoZSBjdXJyZW50IFVOSVggdGltZSB1c2luZyBhIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vaW5kdXRueS9ibi5qcy98Qk59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBVbml4Tm93KCk6Qk4ge1xuICAgIHJldHVybiBuZXcgQk4oTWF0aC5yb3VuZCgobmV3IERhdGUoKSkuZ2V0VGltZSgpIC8gMTAwMCkpO1xufTsiXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpcy9hdm0vdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7R0FFRztBQUNILG9DQUErQjtBQUMvQiw2Q0FBMkM7QUFDM0Msa0RBQXVCO0FBQ3ZCLG9FQUE0QztBQUM1Qyx1Q0FBbUU7QUFFbkU7O0dBRUc7QUFDSCxJQUFJLFFBQVEsR0FBWSxrQkFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBRS9DOztHQUVHO0FBQ0gsTUFBYSxNQUFPLFNBQVEsY0FBTTtJQWlCOUI7O09BRUc7SUFDSDtRQUNJLEtBQUssRUFBRSxDQUFDO1FBbEJaOztXQUVHO1FBQ0gsY0FBUyxHQUFHLENBQUMsT0FBYyxFQUFFLEVBQUU7WUFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUM7UUFDMUIsQ0FBQyxDQUFBO1FBRUQ7O1dBRUc7UUFDSCxjQUFTLEdBQUcsR0FBVSxFQUFFO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN2QixDQUFDLENBQUE7UUFPRyxJQUFJLENBQUMsS0FBSyxHQUFHLGVBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDbkIsQ0FBQztDQUNKO0FBekJELHdCQXlCQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxTQUFVLFNBQVEsY0FBTTtJQUVqQzs7T0FFRztJQUNIO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsS0FBSyxHQUFHLGVBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDcEIsQ0FBQztDQUNKO0FBVkQsOEJBVUM7QUFFRDs7R0FFRztBQUNILE1BQWEsT0FBUSxTQUFRLGNBQU07SUF5Qy9COztPQUVHO0lBQ0g7UUFDSSxLQUFLLEVB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QWEsWUFBWTs7QUFBekIsb0NBWUM7QUFYVSx5QkFBWSxHQUFVLENBQUMsQ0FBQztBQUN4Qix3QkFBVyxHQUFVLENBQUMsQ0FBQztBQUN2QiwwQkFBYSxHQUFVLENBQUMsQ0FBQztBQUN6QixtQkFBTSxHQUFVLENBQUMsQ0FBQztBQUNsQiwyQkFBYyxHQUFVLENBQUMsQ0FBQztBQUMxQix1QkFBVSxHQUFVLEVBQUUsQ0FBQztBQUN2Qiw0QkFBZSxHQUFVLEVBQUUsQ0FBQztBQUM1Qix5QkFBWSxHQUFVLENBQUMsQ0FBQztBQUN4Qix5QkFBWSxHQUFVLEdBQUcsQ0FBQztBQUMxQiwwQkFBYSxHQUFVLEVBQUUsQ0FBQztBQUMxQixxQkFBUSxHQUFVLENBQUMsQ0FBQztBQWUvQjs7R0FFRztBQUNILFNBQWdCLE9BQU87SUFDbkIsT0FBTyxJQUFJLGVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUZELDBCQUVDO0FBQUEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBBVk1BUElcbiAqL1xuaW1wb3J0IHtCdWZmZXJ9IGZyb20gXCJidWZmZXIvXCI7XG5pbXBvcnQgeyBOQnl0ZXMgfSBmcm9tICcuLi8uLi91dGlscy90eXBlcyc7XG5pbXBvcnQgQk4gZnJvbSBcImJuLmpzXCI7XG5pbXBvcnQgQmluVG9vbHMgZnJvbSAnLi4vLi4vdXRpbHMvYmludG9vbHMnO1xuaW1wb3J0IHsgT3V0cHV0LCBTZWxlY3RPdXRwdXRDbGFzcywgU2VjcE91dEJhc2UgfSBmcm9tICcuL291dHB1dHMnO1xuXG4vKipcbiAqIEBpZ25vcmVcbiAqL1xubGV0IGJpbnRvb2xzOkJpblRvb2xzID0gQmluVG9vbHMuZ2V0SW5zdGFuY2UoKTtcblxuLyoqXG4gKiBUeXBlIHJlcHJlc2VudGluZyBhIFtbU2lnbmF0dXJlXV0gaW5kZXggdXNlZCBpbiBbW0lucHV0XV1cbiAqL1xuZXhwb3J0IGNsYXNzIFNpZ0lkeCBleHRlbmRzIE5CeXRlcyB7XG4gICAgc291cmNlOkJ1ZmZlcjtcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHNvdXJjZSBhZGRyZXNzIGZvciB0aGUgc2lnbmF0dXJlXG4gICAgICovXG4gICAgc2V0U291cmNlID0gKGFkZHJlc3M6QnVmZmVyKSA9PiB7XG4gICAgICAgIHRoaXMuc291cmNlID0gYWRkcmVzcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIHNvdXJjZSBhZGRyZXNzIGZvciB0aGUgc2lnbmF0dXJlXG4gICAgICovXG4gICAgZ2V0U291cmNlID0gKCk6QnVmZmVyID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc291cmNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFR5cGUgcmVwcmVzZW50aW5nIGEgW1tTaWduYXR1cmVdXSBpbmRleCB1c2VkIGluIFtbSW5wdXRdXVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKCl7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuYnl0ZXMgPSBCdWZmZXIuYWxsb2MoNCk7XG4gICAgICAgIHRoaXMuYnNpemUgPSA0O1xuICAgIH1cbn1cblxuLyoqXG4gKiBTaWduYXR1cmUgZm9yIGEgW1tUeF1dXG4gKi9cbmV4cG9ydCBjbGFzcyBTaWduYXR1cmUgZXh0ZW5kcyBOQnl0ZXMge1xuXG4gICAgLyoqXG4gICAgICogU2lnbmF0dXJlIGZvciBhIFtbVHhdXVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKCl7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuYnl0ZXMgPSBCdWZmZXIuYWxsb2MoNjUpO1xuICAgICAgICB0aGlzLmJzaXplID0gNjU7XG4gICAgfVxufVxuXG4vKipcbiAqIENsYXNzIGZvciByZXByZXNlbnRpbmcgYW4gYWRkcmVzcyB1c2VkIGluIFtbT3V0cHV0XV0gdHlwZXNcbiAqL1xuZXhwb3J0IGNsYXNzIEFkZHJlc3MgZXh0ZW5kcyBOQnl0ZXMge1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIGZ1bmN0aW9uIHVzZWQgdG8gc29ydCBhbiBhcnJheSBvZiBbW0FkZHJlc3NdXWVzXG4gICAgICovXG4gICAgc3RhdGljIGNvbXBhcml0b3IgPSAoKTooYTpBZGRyZXNzLCBiOkFkZHJlc3MpID0+ICgxfC0xfDApID0+IHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGE6QWRkcmVzcywgYjpBZGRyZXNzKTooMXwtMXwwKSB7IFxuICAgICAgICAgICAgcmV0dXJuIEJ1ZmZlci5jb21wYXJlKGEudG9CdWZmZXIoKSwgYi50b0J1ZmZlcigpKSBhcyAoMXwtMXwwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgYmFzZS01OCByZXByZXNlbnRhdGlvbiBvZiB0aGUgW1tBZGRyZXNzXV0uXG4gICAgICovXG4gICAgdG9TdHJpbmcoKTpzdHJpbmcge1xuICAgICAgICByZXR1cm4gYmludG9vbHMuYXZhU2VyaWFsaXplKHRoaXMudG9CdWZmZXIoKSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRha2VzIGEgYmFzZS01OCBzdHJpbmcgY29udGFpbmluZyBhbiBbW0FkZHJlc3NdXSwgcGFyc2VzIGl0LCBwb3B1bGF0ZXMgdGhlIGNsYXNzLCBhbmQgcmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSBBZGRyZXNzIGluIGJ5dGVzLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBieXRlcyBBIGJhc2UtNTggc3RyaW5nIGNvbnRhaW5pbmcgYSByYXcgW1tBZGRyZXNzXV1cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBUaGUgbGVuZ3RoIG9mIHRoZSByYXcgW1tBZGRyZXNzXV1cbiAgICAgKi9cbiAgICBmcm9tU3RyaW5nKGFkZHI6c3RyaW5nKTpudW1iZXIge1xuICAgICAgICBsZXQgYWRkcmJ1ZmY6QnVmZmVyID0gYmludG9vbHMuYjU4VG9CdWZmZXIoYWRkcik7XG4gICAgICAgIGlmKGFkZHJidWZmLmxlbmd0aCA9PSAyNCAmJiBiaW50b29scy52YWxpZGF0ZUNoZWNrc3VtKGFkZHJidWZmKSkge1xuICAgICAgICAgICAgbGV0IG5ld2J1ZmY6QnVmZmVyID0gYmludG9vbHMuY29weUZyb20oYWRkcmJ1ZmYsIDAsYWRkcmJ1ZmYubGVuZ3RoIC0gNCk7XG4gICAgICAgICAgICBpZihuZXdidWZmLmxlbmd0aCA9PSAyMCl7XG4gICAgICAgICAgICAgICAgdGhpcy5ieXRlcyA9IG5ld2J1ZmY7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZihhZGRyYnVmZi5sZW5ndGggPT0gMjQpe1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXJyb3IgLSBBZGRyZXNzLmZyb21TdHJpbmc6IGludmFsaWQgY2hlY2tzdW0gb24gYWRkcmVzc1wiKTtcbiAgICAgICAgfSBlbHNlIGlmKGFkZHJidWZmLmxlbmd0aCA9PSAyMCl7XG4gICAgICAgICAgICB0aGlzLmJ5dGVzID0gYWRkcmJ1ZmY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXJyb3IgLSBBZGRyZXNzLmZyb21TdHJpbmc6IGludmFsaWQgYWRkcmVzc1wiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5nZXRTaXplKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xhc3MgZm9yIHJlcHJlc2VudGluZyBhbiBhZGRyZXNzIHVzZWQgaW4gW1tPdXRwdXRdXSB0eXBlc1xuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKCl7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuYnl0ZXMgPSBCdWZmZXIuYWxsb2MoMjApO1xuICAgICAgICB0aGlzLmJzaXplID0gMjA7XG4gICAgfVxufVxuXG4vKipcbiAqIENsYXNzIGZvciBjcmVhdGluZyBpbml0aWFsIG91dHB1dCBzdGF0ZXMgdXNlZCBpbiBhc3NldCBjcmVhdGlvblxuICovXG5leHBvcnQgY2xhc3MgSW5pdGlhbFN0YXRlcyB7XG4gICAgcHJvdGVjdGVkIGZ4czp7W2Z4aWQ6bnVtYmVyXTpBcnJheTxPdXRwdXQ+fSA9IHt9O1xuXG4gICAgLyoqXG4gICAgICogXG4gICAgICogQHBhcmFtIG91dCBUaGUgb3V0cHV0IHN0YXRlIHRvIGFkZCB0byB0aGUgY29sbGVjdGlvblxuICAgICAqIEBwYXJhbSBmeGlkIFRoZSBGeElEIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB0aGlzIG91dHB1dCwgZGVmYXVsdCBBVk1Db25zdGFudHMuU0VDUEZYSURcbiAgICAgKi9cbiAgICBhZGRPdXRwdXQob3V0Ok91dHB1dCwgZnhpZDpudW1iZXIgPSBBVk1Db25zdGFudHMuU0VDUEZYSUQpOnZvaWQge1xuICAgICAgICBpZighKGZ4aWQgaW4gdGhpcy5meHMpKXtcbiAgICAgICAgICAgIHRoaXMuZnhzW2Z4aWRdID0gW107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5meHNbZnhpZF0ucHVzaChvdXQpO1xuICAgIH1cblxuICAgIGZyb21CdWZmZXIoYnl0ZXM6QnVmZmVyLCBvZmZzZXQ6bnVtYmVyKTpudW1iZXIge1xuICAgICAgICBsZXQgcmVzdWx0OntbZnhpZDpudW1iZXJdOkFycmF5PE91dHB1dD59ID0ge307XG4gICAgICAgIGxldCBrbGVuOkJ1ZmZlciA9IGJpbnRvb2xzLmNvcHlGcm9tKGJ5dGVzLCBvZmZzZXQsIG9mZnNldCArIDQpO1xuICAgICAgICBvZmZzZXQgKz0gNDtcbiAgICAgICAgbGV0IGtsZW5udW06bnVtYmVyID0ga2xlbi5yZWFkVUludDMyQkUoMCk7XG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBrbGVubnVtOyBpKyspe1xuICAgICAgICAgICAgbGV0IGZ4aWRidWZmOkJ1ZmZlciA9IGJpbnRvb2xzLmNvcHlGcm9tKGJ5dGVzLCBvZmZzZXQsIG9mZnNldCArIDQpO1xuICAgICAgICAgICAgb2Zmc2V0ICs9IDQ7XG4gICAgICAgICAgICBsZXQgZnhpZDpudW1iZXIgPSBmeGlkYnVmZi5yZWFkVUludDMyQkUoMCk7XG4gICAgICAgICAgICByZXN1bHRbZnhpZF0gPSBbXTtcbiAgICAgICAgICAgIGxldCBzdGF0ZWxlbmJ1ZmY6QnVmZmVyID0gYmludG9vbHMuY29weUZyb20oYnl0ZXMsIG9mZnNldCwgb2Zmc2V0ICsgNCk7XG4gICAgICAgICAgICBvZmZzZXQgKz0gNDtcbiAgICAgICAgICAgIGxldCBzdGF0ZWxlbjpudW1iZXIgPSBzdGF0ZWxlbmJ1ZmYucmVhZFVJbnQzMkJFKDApO1xuICAgICAgICAgICAgZm9yKGxldCBqID0gMDsgaiA8IHN0YXRlbGVuOyBqKyspe1xuICAgICAgICAgICAgICAgIGxldCBhYnVmZjpCdWZmZXIgPSBiaW50b29scy5jb3B5RnJvbShieXRlcywgb2Zmc2V0KTtcbiAgICAgICAgICAgICAgICBsZXQgb3V0Ok91dHB1dCA9IG5ldyBTZWNwT3V0QmFzZSgpO1xuICAgICAgICAgICAgICAgIG91dC5mcm9tQnVmZmVyKGFidWZmKVxuICAgICAgICAgICAgICAgIGxldCBvdXRidWZmOkJ1ZmZlciA9IG91dC50b0J1ZmZlcigpO1xuICAgICAgICAgICAgICAgIG9mZnNldCArPSBvdXRidWZmLmxlbmd0aDtcbiAgICAgICAgICAgICAgICByZXN1bHRbZnhpZF0ucHVzaChvdXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZnhzID0gcmVzdWx0O1xuICAgICAgICByZXR1cm4gb2Zmc2V0XG4gICAgfVxuXG4gICAgdG9CdWZmZXIoKTpCdWZmZXIge1xuICAgICAgICBsZXQgYnVmZjpBcnJheTxCdWZmZXI+ID0gW107XG4gICAgICAgIGxldCBrZXlzOkFycmF5PG51bWJlcj4gPSBPYmplY3Qua2V5cyh0aGlzLmZ4cykubWFwKGsgPT4gcGFyc2VJbnQoaykpLnNvcnQoKTtcbiAgICAgICAgbGV0IGtsZW46QnVmZmVyID0gQnVmZmVyLmFsbG9jKDQpO1xuICAgICAgICBrbGVuLndyaXRlVUludDMyQkUoa2V5cy5sZW5ndGgsIDApO1xuICAgICAgICBidWZmLnB1c2goa2xlbik7XG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgIGxldCBmeGlkOm51bWJlciA9IGtleXNbaV07XG4gICAgICAgICAgICBsZXQgZnhpZGJ1ZmY6QnVmZmVyID0gQnVmZmVyLmFsbG9jKDQpO1xuICAgICAgICAgICAgZnhpZGJ1ZmYud3JpdGVVSW50MzJCRShmeGlkLCAwKTtcbiAgICAgICAgICAgIGJ1ZmYucHVzaChmeGlkYnVmZik7XG4gICAgICAgICAgICBsZXQgaW5pdGlhbFN0YXRlID0gdGhpcy5meHNbZnhpZF0uc29ydChPdXRwdXQuY29tcGFyYXRvcigpKTtcbiAgICAgICAgICAgIGxldCBzdGF0ZWxlbjpCdWZmZXIgPSBCdWZmZXIuYWxsb2MoNCk7XG4gICAgICAgICAgICBzdGF0ZWxlbi53cml0ZVVJbnQzMkJFKGluaXRpYWxTdGF0ZS5sZW5ndGgsIDApO1xuICAgICAgICAgICAgYnVmZi5wdXNoKHN0YXRlbGVuKTtcbiAgICAgICAgICAgIGZvcihsZXQgaiA9IDA7IGogPCBpbml0aWFsU3RhdGUubGVuZ3RoOyBqKyspe1xuICAgICAgICAgICAgICAgIGJ1ZmYucHVzaChpbml0aWFsU3RhdGVbal0udG9CdWZmZXIoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoYnVmZik7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKCl7fVxufVxuXG5leHBvcnQgY2xhc3MgQVZNQ29uc3RhbnRzIHtcbiAgICBzdGF0aWMgU0VDUE9VVFBVVElEOm51bWJlciA9IDc7XG4gICAgc3RhdGljIFNFQ1BJTlBVVElEOm51bWJlciA9IDU7XG4gICAgc3RhdGljIENSRUFURUFTU0VUVFg6bnVtYmVyID0gMTtcbiAgICBzdGF0aWMgQkFTRVRYOm51bWJlciA9IDA7XG4gICAgc3RhdGljIFNFQ1BDUkVERU5USUFMOm51bWJlciA9IDk7XG4gICAgc3RhdGljIEFTU0VUSURMRU46bnVtYmVyID0gMzI7XG4gICAgc3RhdGljIEJMT0NLQ0hBSU5JRExFTjpudW1iZXIgPSAzMjtcbiAgICBzdGF0aWMgU1lNQk9MTUFYTEVOOm51bWJlciA9IDQ7XG4gICAgc3RhdGljIEFTU0VUTkFNRUxFTjpudW1iZXIgPSAxMjg7XG4gICAgc3RhdGljIEFERFJFU1NMRU5HVEg6bnVtYmVyID0gMjA7XG4gICAgc3RhdGljIFNFQ1BGWElEOm51bWJlciA9IDA7XG59XG5cbi8qKlxuICogUnVsZXMgdXNlZCB3aGVuIG1lcmdpbmcgc2V0c1xuICovXG5leHBvcnQgdHlwZSBNZXJnZVJ1bGUgPSBcImludGVyc2VjdGlvblwiIC8vU2VsZiBJTlRFUlNFQ1QgTmV3IFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBcImRpZmZlcmVuY2VTZWxmXCIgLy9TZWxmIE1JTlVTIE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBcImRpZmZlcmVuY2VOZXdcIiAvL05ldyBNSU5VUyBTZWxmXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFwic3ltRGlmZmVyZW5jZVwiIC8vZGlmZmVyZW5jZVNlbGYgVU5JT04gZGlmZmVyZW5jZU5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBcInVuaW9uXCIgLy9TZWxmIFVOSU9OIE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBcInVuaW9uTWludXNOZXdcIiAvL3VuaW9uIE1JTlVTIGRpZmZlcmVuY2VOZXdcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXCJ1bmlvbk1pbnVzU2VsZlwiIC8vdW5pb24gTUlOVVMgZGlmZmVyZW5jZVNlbGZcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXCJFUlJPUlwiOyAvL2dlbmVyYXRlIGVycm9yIGZvciB0ZXN0aW5nXG5cbi8qKlxuICogRnVuY3Rpb24gcHJvdmlkaW5nIHRoZSBjdXJyZW50IFVOSVggdGltZSB1c2luZyBhIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vaW5kdXRueS9ibi5qcy98Qk59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBVbml4Tm93KCk6Qk4ge1xuICAgIHJldHVybiBuZXcgQk4oTWF0aC5yb3VuZCgobmV3IERhdGUoKSkuZ2V0VGltZSgpIC8gMTAwMCkpO1xufTsiXX0=

@@ -22,4 +22,3 @@ "use strict";

class DB {
constructor() {
}
constructor() { }
/**

@@ -45,2 +44,2 @@ * Retrieves the database singleton.

DB.store = store2_1.default;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvZGIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7R0FFRztBQUNILG9EQUEyQjtBQUczQjs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBcUIsRUFBRTtJQUduQjtJQUF1QixDQUFDO0lBRXhCOztPQUVHO0lBQ0gsTUFBTSxDQUFDLFdBQVc7UUFDZCxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRTtZQUNkLEVBQUUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxFQUFFLEVBQUUsQ0FBQztTQUMxQjtRQUNELE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBUztRQUN6QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7O0FBdEJMLHFCQXdCQztBQXRCa0IsUUFBSyxHQUFHLGdCQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgVXRpbHNcbiAqL1xuaW1wb3J0IHN0b3JlIGZyb20gXCJzdG9yZTJcIjtcbmltcG9ydCB7IFN0b3JlQVBJIH0gZnJvbSBcInN0b3JlMlwiO1xuXG4vKipcbiAqIEEgY2xhc3MgZm9yIGludGVyYWN0aW5nIHdpdGggdGhlIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vbmJ1Ym5hL3N0b3JlfCBzdG9yZTIgbW9kdWxlfVxuICogXG4gKiBUaGlzIGNsYXNzIHNob3VsZCBuZXZlciBiZSBpbnN0YW50aWF0ZWQgZGlyZWN0bHkuIEluc3RlYWQsIGludm9rZSB0aGUgXCJEQi5nZXRJbnN0YW5jZSgpXCIgc3RhdGljXG4gKiBmdW5jdGlvbiB0byBncmFiIHRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIGRhdGFiYXNlLlxuICogXG4gKiBgYGBqc1xuICogY29uc3QgZGIgPSBEQi5nZXRJbnN0YW5jZSgpO1xuICogY29uc3QgYmxvY2tjaGFpbmRiID0gZGIuZ2V0TmFtZXNwYWNlKFwibXljaGFpblwiKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEQiB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgIGluc3RhbmNlOkRCO1xuICAgIHByaXZhdGUgc3RhdGljIHN0b3JlID0gc3RvcmU7XG4gICAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIGRhdGFiYXNlIHNpbmdsZXRvbi4gXG4gICAgICovXG4gICAgc3RhdGljIGdldEluc3RhbmNlKCk6IERCIHtcbiAgICAgICAgaWYgKCFEQi5pbnN0YW5jZSkge1xuICAgICAgICAgICAgREIuaW5zdGFuY2UgPSBuZXcgREIoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gREIuaW5zdGFuY2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIG5hbWVzcGFjZSBmcm9tIHRoZSBkYXRhYmFzZSBzaW5nbGV0b24uXG4gICAgICogXG4gICAgICogQHBhcmFtIG5zIE5hbWVzcGFjZSB0byByZXRyaWV2ZS5cbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0TmFtZXNwYWNlKG5zOnN0cmluZyk6IFN0b3JlQVBJe1xuICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5uYW1lc3BhY2UobnMpO1xuICAgIH1cblxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvZGIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7R0FFRztBQUNILG9EQUEyQjtBQUczQjs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBcUIsRUFBRTtJQUduQixnQkFBdUIsQ0FBQztJQUV4Qjs7T0FFRztJQUNILE1BQU0sQ0FBQyxXQUFXO1FBQ2QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUU7WUFDZCxFQUFFLENBQUMsUUFBUSxHQUFHLElBQUksRUFBRSxFQUFFLENBQUM7U0FDMUI7UUFDRCxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQVM7UUFDekIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwQyxDQUFDOztBQXRCTCxxQkF3QkM7QUF0QmtCLFFBQUssR0FBRyxnQkFBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIFV0aWxzXG4gKi9cbmltcG9ydCBzdG9yZSBmcm9tIFwic3RvcmUyXCI7XG5pbXBvcnQgeyBTdG9yZUFQSSB9IGZyb20gXCJzdG9yZTJcIjtcblxuLyoqXG4gKiBBIGNsYXNzIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL25idWJuYS9zdG9yZXwgc3RvcmUyIG1vZHVsZX1cbiAqIFxuICogVGhpcyBjbGFzcyBzaG91bGQgbmV2ZXIgYmUgaW5zdGFudGlhdGVkIGRpcmVjdGx5LiBJbnN0ZWFkLCBpbnZva2UgdGhlIFwiREIuZ2V0SW5zdGFuY2UoKVwiIHN0YXRpY1xuICogZnVuY3Rpb24gdG8gZ3JhYiB0aGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBkYXRhYmFzZS5cbiAqIFxuICogYGBganNcbiAqIGNvbnN0IGRiID0gREIuZ2V0SW5zdGFuY2UoKTtcbiAqIGNvbnN0IGJsb2NrY2hhaW5kYiA9IGRiLmdldE5hbWVzcGFjZShcIm15Y2hhaW5cIik7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgREIge1xuICAgIHByaXZhdGUgc3RhdGljICBpbnN0YW5jZTpEQjtcbiAgICBwcml2YXRlIHN0YXRpYyBzdG9yZSA9IHN0b3JlO1xuICAgIHByaXZhdGUgY29uc3RydWN0b3IoKSB7fVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBkYXRhYmFzZSBzaW5nbGV0b24uIFxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRJbnN0YW5jZSgpOiBEQiB7XG4gICAgICAgIGlmICghREIuaW5zdGFuY2UpIHtcbiAgICAgICAgICAgIERCLmluc3RhbmNlID0gbmV3IERCKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIERCLmluc3RhbmNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBuYW1lc3BhY2UgZnJvbSB0aGUgZGF0YWJhc2Ugc2luZ2xldG9uLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBucyBOYW1lc3BhY2UgdG8gcmV0cmlldmUuXG4gICAgICovXG4gICAgc3RhdGljIGdldE5hbWVzcGFjZShuczpzdHJpbmcpOiBTdG9yZUFQSXtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUubmFtZXNwYWNlKG5zKTtcbiAgICB9XG5cbn1cbiJdfQ==

@@ -293,13 +293,24 @@ /// <reference types="node" />

static network: {
"1": {};
"12345": {
"avm": object;
"X": object;
"i8KtK2KwLi1o7WaVBbEKpRLPtAEYayfoptqAFYxfQgrus1g6m": object;
"platform": {} & object;
"P": {} & object;
1: {};
2: {
avm: object;
X: object;
"4ktRjsAKxgMr2aEzv9SWmrU7Xk5FniHUrVCX4P1TZSfTLZWFM": object;
platform: object;
P: object;
"11111111111111111111111111111111LpoYY": object;
contracts: object;
C: object;
"2mUYSXfLrDtigwbzj1LxKVsHwELghc5sisoXrzJwLqAAQHF4i": object;
};
12345: {
avm: object;
X: object;
"4R5p2RXDGLqaifZE4hHWH9owe34pfoBULn1DrQTWivjg8o4aH": object;
platform: {} & object;
P: {} & object;
"11111111111111111111111111111111LpoYY": {} & object;
"contracts": {} & object;
"C": {} & object;
"MTHoZAP3gGHB4cAUpFB1CuYnh3uDoMkte6FjLb9Sn5Hx8Bkvb": {} & object;
contracts: {} & object;
C: {} & object;
tZGm6RCkeGpVETUTp11DW3UYFZmm69zfqxchpHrSF7wgy8rmw: {} & object;
};

@@ -306,0 +317,0 @@ };

@@ -351,3 +351,3 @@ "use strict";

let n2_avm = {
"blockchainID": "m383Jyn4z9kYmyMamjHwoExocRRV7ondsci862bbv1FSrqvH9",
"blockchainID": "4ktRjsAKxgMr2aEzv9SWmrU7Xk5FniHUrVCX4P1TZSfTLZWFM",
"alias": "X",

@@ -357,3 +357,3 @@ "vm": "avm"

let n2_platform = {
"blockchainID": "",
"blockchainID": "11111111111111111111111111111111LpoYY",
"alias": "P",

@@ -363,3 +363,3 @@ "vm": "platform"

let n2_contracts = {
"blockchainID": "",
"blockchainID": "2mUYSXfLrDtigwbzj1LxKVsHwELghc5sisoXrzJwLqAAQHF4i",
"alias": "C",

@@ -369,7 +369,7 @@ "vm": "contracts"

let n12345_avm = Object.assign({}, n2_avm);
n12345_avm["blockchainID"] = "i8KtK2KwLi1o7WaVBbEKpRLPtAEYayfoptqAFYxfQgrus1g6m";
n12345_avm["blockchainID"] = "4R5p2RXDGLqaifZE4hHWH9owe34pfoBULn1DrQTWivjg8o4aH";
let n12345_platform = Object.assign({}, n2_platform);
n12345_platform["blockchainID"] = "11111111111111111111111111111111LpoYY";
let n12345_contracts = Object.assign({}, n2_contracts);
n12345_platform["blockchainID"] = "MTHoZAP3gGHB4cAUpFB1CuYnh3uDoMkte6FjLb9Sn5Hx8Bkvb";
n12345_platform["blockchainID"] = "tZGm6RCkeGpVETUTp11DW3UYFZmm69zfqxchpHrSF7wgy8rmw";
class Defaults {

@@ -380,20 +380,17 @@ }

"1": {},
/*
This will be set on test network.
"2": {
"avm": n2_avm,
"X": n2_avm,
"m383Jyn4z9kYmyMamjHwoExocRRV7ondsci862bbv1FSrqvH9": n2_avm,
"4ktRjsAKxgMr2aEzv9SWmrU7Xk5FniHUrVCX4P1TZSfTLZWFM": n2_avm,
"platform": n2_platform,
"P": n2_platform,
"BCID1": n2_platform,
"11111111111111111111111111111111LpoYY": n2_platform,
"contracts": n2_contracts,
"C": n2_contracts,
"BCID2": n2_contracts
}
*/
"2mUYSXfLrDtigwbzj1LxKVsHwELghc5sisoXrzJwLqAAQHF4i": n2_contracts
},
"12345": {
"avm": n12345_avm,
"X": n12345_avm,
"i8KtK2KwLi1o7WaVBbEKpRLPtAEYayfoptqAFYxfQgrus1g6m": n12345_avm,
"4R5p2RXDGLqaifZE4hHWH9owe34pfoBULn1DrQTWivjg8o4aH": n12345_avm,
"platform": n12345_platform,

@@ -404,5 +401,5 @@ "P": n12345_platform,

"C": n12345_contracts,
"MTHoZAP3gGHB4cAUpFB1CuYnh3uDoMkte6FjLb9Sn5Hx8Bkvb": n12345_contracts
"tZGm6RCkeGpVETUTp11DW3UYFZmm69zfqxchpHrSF7wgy8rmw": n12345_contracts
}
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFJQSxvQ0FBaUM7QUFDakMsOENBQXNCO0FBRXRCLDBEQUFtQztBQUluQzs7R0FFRztBQUNILE1BQU0sUUFBUSxHQUFHLGtCQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7QUFFeEM7O0dBRUc7QUFDSCxNQUFhLG1CQUFtQjtDQU0vQjtBQU5ELGtEQU1DO0FBRUQ7O0dBRUc7QUFDSCxNQUFzQixPQUFPO0lBcUN6Qjs7OztPQUlHO0lBQ0gsWUFBWSxJQUFlLEVBQUUsT0FBYztRQXJDM0M7Ozs7V0FJRztRQUNILGVBQVUsR0FBRyxDQUFDLE9BQWMsRUFBRSxFQUFFO1lBQzVCLElBQUcsSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLE9BQU8sRUFBQztnQkFDbkMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxFQUFFLEdBQUcsWUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ2hDO2lCQUFNO2dCQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO2dCQUN2QixJQUFJLENBQUMsRUFBRSxHQUFHLFlBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDdEM7UUFDTCxDQUFDLENBQUE7UUFFRDs7V0FFRztRQUNILGVBQVUsR0FBRyxHQUFZLEVBQUU7WUFDdkIsT0FBTyxJQUFJLENBQUMsT0FBTyxD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QUM7QUFFRixJQUFJLFlBQVksR0FBVTtJQUN0QixjQUFjLEVBQUUsRUFBRTtJQUNsQixPQUFPLEVBQUUsR0FBRztJQUNaLElBQUksRUFBRSxXQUFXO0NBQ3BCLENBQUE7QUFFRCxJQUFJLFVBQVUsR0FBVSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNsRCxVQUFVLENBQUMsY0FBYyxDQUFDLEdBQUcsbURBQW1ELENBQUM7QUFDakYsSUFBSSxlQUFlLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDckQsZUFBZSxDQUFDLGNBQWMsQ0FBQyxHQUFHLHVDQUF1QyxDQUFDO0FBQzFFLElBQUksZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFDdkQsZUFBZSxDQUFDLGNBQWMsQ0FBQyxHQUFHLG1EQUFtRCxDQUFDO0FBRXRGLE1BQWEsUUFBUTs7QUFBckIsNEJBNkJDO0FBNUJVLGdCQUFPLEdBQUc7SUFDYixHQUFHLEVBQUUsRUFBRTtJQUNQOzs7Ozs7Ozs7Ozs7O01BYUU7SUFDRixPQUFPLEVBQUU7UUFDTCxLQUFLLEVBQUUsVUFBVTtRQUNqQixHQUFHLEVBQUUsVUFBVTtRQUNmLG1EQUFtRCxFQUFFLFVBQVU7UUFDL0QsVUFBVSxFQUFFLGVBQWU7UUFDM0IsR0FBRyxFQUFFLGVBQWU7UUFDcEIsdUNBQXVDLEVBQUUsZUFBZTtRQUN4RCxXQUFXLEVBQUUsZ0JBQWdCO1FBQzdCLEdBQUcsRUFBRSxnQkFBZ0I7UUFDckIsbURBQW1ELEVBQUUsZ0JBQWdCO0tBQ3hFO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBVdGlsc1xuICovXG5pbXBvcnQgU2xvcGVzQ29yZSBmcm9tICcuLi9zbG9wZXMnO1xuaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSBcImJ1ZmZlci9cIjtcbmltcG9ydCBEQiBmcm9tIFwiLi9kYlwiO1xuaW1wb3J0IHsgU3RvcmVBUEkgfSBmcm9tICdzdG9yZTInO1xuaW1wb3J0IEJpblRvb2xzICBmcm9tICcuL2JpbnRvb2xzJztcbmltcG9ydCB7IENsaWVudFJlcXVlc3QgfSBmcm9tIFwiaHR0cFwiO1xuaW1wb3J0IHsgQXhpb3NSZXF1ZXN0Q29uZmlnIH0gZnJvbSAnYXhpb3MnO1xuXG4vKipcbiAqIEBpZ25vcmVcbiAqL1xuY29uc3QgYmludG9vbHMgPSBCaW5Ub29scy5nZXRJbnN0YW5jZSgpO1xuXG4vKipcbiAqIFJlc3BvbnNlIGRhdGEgZm9yIEhUVFAgcmVxdWVzdHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXF1ZXN0UmVzcG9uc2VEYXRhIHtcbiAgICBkYXRhOiBzdHJpbmcgfCBvYmplY3QgfCBBcnJheTxvYmplY3Q+O1xuICAgIGhlYWRlcnM6b2JqZWN0O1xuICAgIHN0YXR1czogbnVtYmVyO1xuICAgIHN0YXR1c1RleHQ6IHN0cmluZztcbiAgICByZXF1ZXN0OkNsaWVudFJlcXVlc3QgfCBYTUxIdHRwUmVxdWVzdDtcbn1cblxuLyoqXG4gKiBBYnN0cmFjdCBjbGFzcyBkZWZpbmluZyBhIGdlbmVyaWMgZW5kcG9pbnQgdGhhdCBhbGwgZW5kcG9pbnRzIG11c3QgaW1wbGVtZW50IChleHRlbmQpLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVBJQmFzZSB7XG4gICAgcHJvdGVjdGVkIGNvcmU6U2xvcGVzQ29yZTtcbiAgICBwcm90ZWN0ZWQgYmFzZXVybDpzdHJpbmc7XG4gICAgcHJvdGVjdGVkIGRiOlN0b3JlQVBJO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgcGF0aCBvZiB0aGUgQVBJcyBiYXNldXJsLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBiYXNldXJsIFBhdGggb2YgdGhlIEFQSXMgYmFzZXVybCAtIGV4OiBcIi9leHQvYmMvYXZtXCJcbiAgICAgKi9cbiAgICBzZXRCYXNlVVJMID0gKGJhc2V1cmw6c3RyaW5nKSA9PiB7XG4gICAgICAgIGlmKHRoaXMuZGIgJiYgdGhpcy5iYXNldXJsICE9PSBiYXNldXJsKXtcbiAgICAgICAgICAgIGxldCBiYWNrdXAgPSB0aGlzLmRiLmdldEFsbCgpO1xuICAgICAgICAgICAgdGhpcy5kYi5jbGVhckFsbCgpO1xuICAgICAgICAgICAgdGhpcy5iYXNldXJsID0gYmFzZXVybDtcbiAgICAgICAgICAgIHRoaXMuZGIgPSBEQi5nZXROYW1lc3BhY2UoYmFzZXVybCk7XG4gICAgICAgICAgICB0aGlzLmRiLnNldEFsbChiYWNrdXAsIHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5iYXNldXJsID0gYmFzZXVybDtcbiAgICAgICAgICAgIHRoaXMuZGIgPSBEQi5nZXROYW1lc3BhY2UoYmFzZXVybCk7XG4gICAgICAgIH1cbiAgICB9IFxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYmFzZXVybCdzIHBhdGguIFxuICAgICAqL1xuICAgIGdldEJhc2VVUkwgPSAoKSA6IHN0cmluZyA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2V1cmw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYmFzZXVybCdzIGRhdGFiYXNlLlxuICAgICAqL1xuICAgIGdldERCID0gKCk6U3RvcmVBUEkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kYjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gY29yZSBSZWZlcmVuY2UgdG8gdGhlIFNsb3BlcyBpbnN0YW5jZSB1c2luZyB0aGlzIGJhc2V1cmxcbiAgICAgKiBAcGFyYW0gYmFzZXVybCBQYXRoIHRvIHRoZSBiYXNldXJsIC0gZXg6IFwiL2V4dC9iYy9hdm1cIlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGNvcmU6U2xvcGVzQ29yZSwgYmFzZXVybDpzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jb3JlID0gY29yZTtcbiAgICAgICAgdGhpcy5zZXRCYXNlVVJMKGJhc2V1cmwpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEpSUENBUEkgZXh0ZW5kcyBBUElCYXNlIHtcbiAgICBwcm90ZWN0ZWQganJwY1ZlcnNpb246c3RyaW5nID0gXCIyLjBcIjtcbiAgICBwcm90ZWN0ZWQgcnBjaWQgPSAxO1xuICAgIGNhbGxNZXRob2QgPSBhc3luYyAobWV0aG9kOnN0cmluZywgcGFyYW1zPzpBcnJheTxvYmplY3Q+IHwgb2JqZWN0LCBiYXNldXJsPzpzdHJpbmcpOlByb21pc2U8UmVxdWVzdFJlc3BvbnNlRGF0YT4gPT4ge1xuICAgICAgICBsZXQgZXAgPSBiYXNldXJsID8gYmFzZXVybCA6IHRoaXMuYmFzZXVybDtcbiAgICAgICAgbGV0IHJwYzpvYmplY3QgPSB7fTtcbiAgICAgICAgcnBjW1wiaWRcIl0gPSB0aGlzLnJwY2lkO1xuICAgICAgICBycGNbXCJtZXRob2RcIl0gPSBtZXRob2Q7XG5cbiAgICAgICAgLy8gU2V0IHBhcmFtZXRlcnMgaWYgZXhpc3RzXG4gICAgICAgIGlmKHBhcmFtcyl7XG4gICAgICAgICAgICBycGNbJ3BhcmFtcyddID0gcGFyYW1zO1xuICAgICAgICB9IGVsc2UgaWYodGhpcy5qcnBjVmVyc2lvbiA9PSBcIjEuMFwiKXtcbiAgICAgICAgICAgIHJwY1tcInBhcmFtc1wiXSA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYodGhpcy5qcnBjVmVyc2lvbiAhPSBcIjEuMFwiKSB7XG4gICAgICAgICAgICBycGNbXCJqc29ucnBjXCJdID0gdGhpcy5qcnBjVmVyc2lvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBoZWFkZXJzOm9iamVjdCA9IHtcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD1VVEYtOFwifTtcblxuICAgICAgICBsZXQgYXhDb25mOkF4aW9zUmVxdWVzdENvbmZpZyA9IHtcbiAgICAgICAgICAgIGJhc2VVUkw6dGhpcy5jb3JlLmdldFByb3RvY29sKCkrXCI6Ly9cIit0aGlzLmNvcmUuZ2V0SVAoKStcIjpcIit0aGlzLmNvcmUuZ2V0UG9ydCgpLFxuICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbidcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gdGhpcy5jb3JlLnBvc3QoZXAsIHt9LCBKU09OLnN0cmluZ2lmeShycGMpLCBoZWFkZXJzLCBheENvbmYpLnRoZW4oIChyZXNwOlJlcXVlc3RSZXNwb25zZURhdGEpID0+IHtcbiAgICAgICAgICAgIGlmKHJlc3Auc3RhdHVzID49IDIwMCAmJiByZXNwLnN0YXR1cyA8IDMwMCl7XG4gICAgICAgICAgICAgICAgdGhpcy5ycGNpZCArPSAxO1xuICAgICAgICAgICAgICAgIGlmKHR5cGVvZiByZXNwLmRhdGEgPT09IFwic3RyaW5nXCIpe1xuICAgICAgICAgICAgICAgICAgICByZXNwLmRhdGEgPSBKU09OLnBhcnNlKHJlc3AuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZih0eXBlb2YgcmVzcC5kYXRhID09PSAnb2JqZWN0JyAmJiAnZXJyb3InIGluIHJlc3AuZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFcnJvciByZXR1cm5lZDogXCIgKyBKU09OLnN0cmluZ2lmeShyZXNwLmRhdGEpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3A7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gICBcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHJwY2lkLCBhIHN0cmljdGx5LWluY3JlYXNpbmcgbnVtYmVyLCBzdGFydGluZyBmcm9tIDEsIGluZGljYXRpbmcgdGhlIG5leHQgcmVxdWVzdCBJRCB0aGF0IHdpbGwgYmUgc2VudC5cbiAgICAgKi9cbiAgICBnZXRSUENJRCA9ICgpOm51bWJlciA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJwY2lkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBjb3JlIFJlZmVyZW5jZSB0byB0aGUgU2xvcGVzIGluc3RhbmNlIHVzaW5nIHRoaXMgZW5kcG9pbnRcbiAgICAgKiBAcGFyYW0gYmFzZXVybCBQYXRoIG9mIHRoZSBBUElzIGJhc2V1cmwgLSBleDogXCIvZXh0L2JjL2F2bVwiXG4gICAgICogQHBhcmFtIGpycGNWZXJzaW9uIFRoZSBqcnBjIHZlcnNpb24gdG8gdXNlLCBkZWZhdWx0IFwiMi4wXCIuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoY29yZTpTbG9wZXNDb3JlLCBiYXNldXJsOnN0cmluZywganJwY1ZlcnNpb246c3RyaW5nID0gXCIyLjBcIikge1xuICAgICAgICBzdXBlcihjb3JlLCBiYXNldXJsKTtcbiAgICAgICAgdGhpcy5qcnBjVmVyc2lvbiA9IGpycGNWZXJzaW9uO1xuICAgICAgICB0aGlzLnJwY2lkID0gMTtcbiAgICB9XG59XG5cbi8qKlxuICogQ2xhc3MgZm9yIHJlcHJlc2VudGluZyBhIHByaXZhdGUgYW5kIHB1YmxpYyBrZXlwYWlyIGluIFNsb3Blcy4gXG4gKiBBbGwgQVBJcyB0aGF0IG5lZWQga2V5IHBhaXJzIHNob3VsZCBleHRlbmQgb24gdGhpcyBjbGFzcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEtleVBhaXIge1xuICAgIHByb3RlY3RlZCBwdWJrOkJ1ZmZlcjtcbiAgICBwcm90ZWN0ZWQgcHJpdms6QnVmZmVyO1xuICAgIHByb3RlY3RlZCBjaGFpbmlkOnN0cmluZyA9IFwiXCI7XG5cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZXMgYSBuZXcga2V5cGFpci5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gZW50cm9weSBPcHRpb25hbCBwYXJhbWV0ZXIgdGhhdCBtYXkgYmUgbmVjZXNzYXJ5IHRvIHByb2R1Y2Ugc2VjdXJlIGtleXNcbiAgICAgKi9cbiAgICBnZW5lcmF0ZUtleTooZW50cm9weT86QnVmZmVyKSA9PiB2b2lkO1xuICAgIC8qKlxuICAgICAqIEltcG9ydHMgYSBwcml2YXRlIGtleSBhbmQgZ2VuZXJhdGVzIHRoZSBhcHByb3ByaWF0ZSBwdWJsaWMga2V5LlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBwcml2ayBBIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9IHJlcHJlc2VudGluZyB0aGUgcHJpdmF0ZSBrZXkgXG4gICAgICogXG4gICAgICogQHJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWlsdXJlXG4gICAgICovXG4gICAgaW1wb3J0S2V5Oihwcml2azpCdWZmZXIpID0+IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBUYWtlcyBhIG1lc3NhZ2UsIHNpZ25zIGl0LCBhbmQgcmV0dXJucyB0aGUgc2lnbmF0dXJlLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBtc2cgVGhlIG1lc3NhZ2UgdG8gc2lnblxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0gY29udGFpbmluZyB0aGUgc2lnbmF0dXJlXG4gICAgICovXG4gICAgc2lnbjoobXNnOkJ1ZmZlcikgPT4gQnVmZmVyO1xuXG4gICAgLyoqXG4gICAgICogUmVjb3ZlcnMgdGhlIHB1YmxpYyBrZXkgb2YgYSBtZXNzYWdlIHNpZ25lciBmcm9tIGEgbWVzc2FnZSBhbmQgaXRzIGFzc29jaWF0ZWQgc2lnbmF0dXJlLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBtc2cgVGhlIG1lc3NhZ2UgdGhhdCdzIHNpZ25lZFxuICAgICAqIEBwYXJhbSBzaWcgVGhlIHNpZ25hdHVyZSB0aGF0J3Mgc2lnbmVkIG9uIHRoZSBtZXNzYWdlXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfSBjb250YWluaW5nIHRoZSBwdWJsaWMga2V5IG9mIHRoZSBzaWduZXJcbiAgICAgKi9cbiAgICByZWNvdmVyOihtc2c6QnVmZmVyLCBzaWc6QnVmZmVyKSA9PiBCdWZmZXI7XG5cbiAgICAvKipcbiAgICAgKiBWZXJpZmllcyB0aGF0IHRoZSBwcml2YXRlIGtleSBhc3NvY2lhdGVkIHdpdGggdGhlIHByb3ZpZGVkIHB1YmxpYyBrZXkgcHJvZHVjZXMgdGhlIHNpZ25hdHVyZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UuXG4gICAgICogXG4gICAgICogQHBhcmFtIG1zZyBUaGUgbWVzc2FnZSBhc3NvY2lhdGVkIHdpdGggdGhlIHNpZ25hdHVyZVxuICAgICAqIEBwYXJhbSBzaWcgVGhlIHNpZ25hdHVyZSBvZiB0aGUgc2lnbmVkIG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcHViayBUaGUgcHVibGljIGtleSBhc3NvY2lhdGVkIHdpdGggdGhlIG1lc3NhZ2Ugc2lnbmF0dXJlXG4gICAgICogXG4gICAgICogQHJldHVybnMgVHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWlsdXJlXG4gICAgICovXG4gICAgdmVyaWZ5Oihtc2c6QnVmZmVyLCBzaWc6QnVmZmVyLCBwdWJrOkJ1ZmZlcikgPT4gYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIHByaXZhdGUga2V5LlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0gY29udGFpbmluZyB0aGUgcHJpdmF0ZSBrZXlcbiAgICAgKi9cbiAgICBnZXRQcml2YXRlS2V5ID0gKCk6QnVmZmVyID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJpdms7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgcHVibGljIGtleS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9IGNvbnRhaW5pbmcgdGhlIHB1YmxpYyBrZXlcbiAgICAgKi9cbiAgICBnZXRQdWJsaWNLZXkgPSAoKTpCdWZmZXIgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wdWJrO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHByaXZhdGUga2V5LlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwdWJsaWMga2V5XG4gICAgICovXG4gICAgZ2V0UHJpdmF0ZUtleVN0cmluZzooKSA9PiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBwdWJsaWMga2V5LlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwdWJsaWMga2V5XG4gICAgICovXG4gICAgZ2V0UHVibGljS2V5U3RyaW5nOigpID0+IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGFkZHJlc3MuXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfSAgcmVwcmVzZW50YXRpb24gb2YgdGhlIGFkZHJlc3NcbiAgICAgKi9cbiAgICBnZXRBZGRyZXNzOigpID0+IEJ1ZmZlcjtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGFkZHJlc3MncyBzdHJpbmcgcmVwcmVzZW50YXRpb24uXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGFkZHJlc3NcbiAgICAgKi9cbiAgICBnZXRBZGRyZXNzU3RyaW5nOigpID0+IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGNoYWluSUQgYXNzb2NpYXRlZCB3aXRoIHRoaXMga2V5LlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIFRoZSBbW0tleVBhaXJdXSdzIGNoYWluSURcbiAgICAgKi9cbiAgICBnZXRDaGFpbklEID0gKCk6c3RyaW5nID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hhaW5pZFxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHRoZSBjaGFpbklEIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGtleS5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gY2hhaW5pZCBTdHJpbmcgZm9yIHRoZSBjaGFpbklEXG4gICAgICovXG4gICAgc2V0Q2hhaW5JRCA9IChjaGFpbmlkOnN0cmluZyk6dm9pZCA9PiB7XG4gICAgICAgIHRoaXMuY2hhaW5pZCA9IGNoYWluaWQ7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoY2hhaW5pZDpzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jaGFpbmlkID0gY2hhaW5pZFxuICAgIH1cbn1cblxuLyoqXG4gKiBDbGFzcyBmb3IgcmVwcmVzZW50aW5nIGEga2V5IGNoYWluIGluIFNsb3Blcy4gXG4gKiBBbGwgZW5kcG9pbnRzIHRoYXQgbmVlZCBrZXkgY2hhaW5zIHNob3VsZCBleHRlbmQgb24gdGhpcyBjbGFzcy5cbiAqIFxuICogQHR5cGVwYXJhbSBLUENsYXNzIGV4dGVuZGluZyBbW0tleVBhaXJdXSB3aGljaCBpcyB1c2VkIGFzIHRoZSBrZXkgaW4gW1tLZXlDaGFpbl1dXG4gKi9cbmV4cG9ydCBjbGFzcyBLZXlDaGFpbjxLUENsYXNzIGV4dGVuZHMgS2V5UGFpcj4ge1xuICAgIHByb3RlY3RlZCBrZXlzOntbYWRkcmVzczogc3RyaW5nXTogS1BDbGFzc30gPSB7fTtcbiAgICBwcm90ZWN0ZWQgY2hhaW5pZDpzdHJpbmcgPSBcIlwiO1xuXG4gICAgLyoqXG4gICAgICogTWFrZXMgYSBuZXcgW1tLZXlQYWlyXV0sIHJldHVybnMgdGhlIGFkZHJlc3MuXG4gICAgICogXG4gICAgICogQHBhcmFtIGVudHJvcHkgT3B0aW9uYWwgcGFyYW1ldGVyIHRoYXQgbWF5IGJlIG5lY2Vzc2FyeSB0byBwcm9kdWNlIHNlY3VyZSBrZXlzXG4gICAgICogXG4gICAgICogQHJldHVybnMgQWRkcmVzcyBvZiB0aGUgbmV3IFtbS2V5UGFpcl1dXG4gICAgICovXG4gICAgbWFrZUtleTooZW50cm9weT86QnVmZmVyKSA9PiBCdWZmZXI7XG5cbiAgICAvKipcbiAgICAgKiBHaXZlbiBhIHByaXZhdGUga2V5LCBtYWtlcyBhIG5ldyBbW0tleVBhaXJdXSwgcmV0dXJucyB0aGUgYWRkcmVzcy5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gcHJpdmsgQSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfSByZXByZXNlbnRpbmcgdGhlIHByaXZhdGUga2V5IFxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEFkZHJlc3Mgb2YgdGhlIG5ldyBbW0tleVBhaXJdXVxuICAgICAqL1xuICAgIGltcG9ydEtleToocHJpdms6QnVmZmVyKSA9PiBCdWZmZXI7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFuIGFycmF5IG9mIGFkZHJlc3NlcyBzdG9yZWQgaW4gdGhlIFtbS2V5Q2hhaW5dXS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfSAgcmVwcmVzZW50YXRpb25zIG9mIHRoZSBhZGRyZXNzZXNcbiAgICAgKi9cbiAgICBnZXRBZGRyZXNzZXMgPSAoKTpBcnJheTxCdWZmZXI+ID0+IHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5rZXlzKS5tYXAoa3AgPT4ga3AuZ2V0QWRkcmVzcygpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFuIGFycmF5IG9mIGFkZHJlc3NlcyBzdG9yZWQgaW4gdGhlIFtbS2V5Q2hhaW5dXS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBzdHJpbmcgcmVwcmVzZW50YXRpb25zIG9mIHRoZSBhZGRyZXNzZXNcbiAgICAgKi9cbiAgICBnZXRBZGRyZXNzU3RyaW5ncyA9ICgpOkFycmF5PHN0cmluZz4gPT4ge1xuICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLmtleXMpLm1hcChrcCA9PiBrcC5nZXRBZGRyZXNzU3RyaW5nKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgdGhlIGtleSBwYWlyIHRvIHRoZSBsaXN0IG9mIHRoZSBrZXlzIG1hbmFnZWQgaW4gdGhlIFtbS2V5Q2hhaW5dXS5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gbmV3S2V5IEEga2V5IHBhaXIgb2YgdGhlIGFwcHJvcHJpYXRlIGNsYXNzIHRvIGJlIGFkZGVkIHRvIHRoZSBbW0tleUNoYWluXV1cbiAgICAgKi9cbiAgICBhZGRLZXkgPSAobmV3S2V5OktQQ2xhc3MpID0+IHtcbiAgICAgICAgbmV3S2V5LnNldENoYWluSUQodGhpcy5jaGFpbmlkKTtcbiAgICAgICAgdGhpcy5rZXlzW25ld0tleS5nZXRBZGRyZXNzKCkudG9TdHJpbmcoXCJoZXhcIildID0gbmV3S2V5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgdGhlIGtleSBwYWlyIGZyb20gdGhlIGxpc3Qgb2YgdGhleSBrZXlzIG1hbmFnZWQgaW4gdGhlIFtbS2V5Q2hhaW5dXS5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0ga2V5IEEge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0gZm9yIHRoZSBhZGRyZXNzIG9yIEtQQ2xhc3MgdG8gcmVtb3ZlXG4gICAgICogXG4gICAgICogQHJldHVybnMgVGhlIGJvb2xlYW4gdHJ1ZSBpZiBhIGtleSB3YXMgcmVtb3ZlZC5cbiAgICAgKi9cbiAgICByZW1vdmVLZXkgPSAoa2V5OktQQ2xhc3MgfCBCdWZmZXIpID0+IHtcbiAgICAgICAgbGV0IGthZGRyOnN0cmluZztcbiAgICAgICAgaWYoa2V5IGluc3RhbmNlb2YgQnVmZmVyKXtcbiAgICAgICAgICAgIGthZGRyID0ga2V5LnRvU3RyaW5nKFwiaGV4XCIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAga2FkZHIgPSBrZXkuZ2V0QWRkcmVzcygpLnRvU3RyaW5nKFwiaGV4XCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmKGthZGRyIGluIHRoaXMua2V5cyl7XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5rZXlzW2thZGRyXTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZXJlIGlzIGEga2V5IGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJvdmlkZWQgYWRkcmVzcy5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gYWRkcmVzcyBUaGUgYWRkcmVzcyB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIHRoZSBrZXlzIGRhdGFiYXNlXG4gICAgICogXG4gICAgICogQHJldHVybnMgVHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBpZiBub3QgZm91bmRcbiAgICAgKi9cbiAgICBoYXNLZXkgPSAoYWRkcmVzczpCdWZmZXIpOmJvb2xlYW4gPT4ge1xuICAgICAgICByZXR1cm4gKGFkZHJlc3MudG9TdHJpbmcoXCJoZXhcIikgaW4gdGhpcy5rZXlzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBbW0tleVBhaXJdXSBsaXN0ZWQgdW5kZXIgdGhlIHByb3ZpZGVkIGFkZHJlc3NcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gYWRkcmVzcyBUaGUge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0gb2YgdGhlIGFkZHJlc3MgdG8gcmV0cmlldmUgZnJvbSB0aGUga2V5cyBkYXRhYmFzZVxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEgcmVmZXJlbmNlIHRvIHRoZSBbW0tleVBhaXJdXSBpbiB0aGUga2V5cyBkYXRhYmFzZVxuICAgICAqL1xuICAgIGdldEtleSA9IChhZGRyZXNzOkJ1ZmZlcik6IEtQQ2xhc3MgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5rZXlzW2FkZHJlc3MudG9TdHJpbmcoXCJoZXhcIildO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGNoYWluSUQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgW1tLZXlDaGFpbl1dLlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIFRoZSBbW0tleUNoYWluXV0ncyBjaGFpbklEXG4gICAgICovXG4gICAgZ2V0Q2hhaW5JRCA9ICgpOnN0cmluZyA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNoYWluaWRcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB0aGUgY2hhaW5JRCBhc3NvY2lhdGVkIHdpdGggdGhpcyBbW0tleUNoYWluXV0gYW5kIGFsbCBhc3NvY2lhdGVkIGtleXBhaXJzLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBjaGFpbmlkIFN0cmluZyBmb3IgdGhlIGNoYWluSURcbiAgICAgKi9cbiAgICBzZXRDaGFpbklEID0gKGNoYWluaWQ6c3RyaW5nKTp2b2lkID0+IHtcbiAgICAgICAgdGhpcy5jaGFpbmlkID0gY2hhaW5pZDtcbiAgICAgICAgZm9yKGxldCBhZGRyZXNzIGluIHRoaXMua2V5cyl7XG4gICAgICAgICAgICB0aGlzLmtleXNbYWRkcmVzc10uc2V0Q2hhaW5JRChjaGFpbmlkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgaW5zdGFuY2Ugb2YgW1tLZXlDaGFpbl1dLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGNoYWluaWQ6c3RyaW5nKSB7XG4gICAgICAgIHRoaXMuY2hhaW5pZCA9IGNoYWluaWQ7XG4gICAgfVxufVxuXG4vKipcbiAqIEFic3RyYWN0IGNsYXNzIHRoYXQgaW1wbGVtZW50cyBiYXNpYyBmdW5jdGlvbmFsaXR5IGZvciBtYW5hZ2luZyBhIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9IG9mIGFuIGV4YWN0IGxlbmd0aC5cbiAqIFxuICogQ3JlYXRlIGEgY2xhc3MgdGhhdCBleHRlbmRzIHRoaXMgb25lIGFuZCBvdmVycmlkZSBic2l6ZSB0byBtYWtlIGl0IHZhbGlkYXRlIGZvciBleGFjdGx5IHRoZSBjb3JyZWN0IGxlbmd0aC5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5CeXRlcyB7XG4gICAgcHJvdGVjdGVkIGJ5dGVzOkJ1ZmZlcjtcbiAgICBwcm90ZWN0ZWQgYnNpemU6bnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBUaGUgZXhhY3QgbGVuZ3RoIHJlcXVpcmVtZW50IG9mIHRoaXMgY2xhc3NcbiAgICAgKi9cbiAgICBnZXRTaXplID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ic2l6ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUYWtlcyBhIGJhc2UtNTggZW5jb2RlZCBzdHJpbmcsIHZlcmlmaWVzIGl0cyBsZW5ndGgsIGFuZCBzdG9yZXMgaXQuXG4gICAgICogXG4gICAgICogQHJldHVybnMgVGhlIHNpemUgb2YgdGhlIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9XG4gICAgICovXG4gICAgZnJvbVN0cmluZyhiNThzdHI6c3RyaW5nKTpudW1iZXIge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5mcm9tQnVmZmVyKGJpbnRvb2xzLmI1OFRvQnVmZmVyKGI1OHN0cikpO1xuICAgICAgICB9IGNhdGNoKGUpe1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICAgIGxldCBlbXNnOnN0cmluZyA9IFwiRXJyb3IgLSBOQnl0ZXMuZnJvbVN0cmluZzogXCIgKyBlO1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlbXNnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5ic2l6ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUYWtlcyBhIFtbQnVmZmVyXV0sIHZlcmlmaWVzIGl0cyBsZW5ndGgsIGFuZCBzdG9yZXMgaXQuIFxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIFRoZSBzaXplIG9mIHRoZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfVxuICAgICAqL1xuICAgIGZyb21CdWZmZXIoYnVmZjpCdWZmZXIpOm51bWJlciB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZihidWZmLmxlbmd0aCAhPSB0aGlzLmJzaXplKXtcbiAgICAgICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkJ1ZmZlciBsZW5ndGggbXVzdCBiZSBleGFjdGx5IFwiICsgdGhpcy5ic2l6ZSArIFwiIGJ5dGVzLlwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuYnl0ZXMgPSBCdWZmZXIuZnJvbShidWZmKTtcbiAgICAgICAgfSBjYXRjaChlKSB7XG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgICAgbGV0IGVtc2c6c3RyaW5nID0gXCJFcnJvciAtIE5CeXRlcy5mcm9tQnVmZmVyOiBcIiArIGU7XG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVtc2cpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmJzaXplO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHN0b3JlZCB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBIHJlZmVyZW5jZSB0byB0aGUgc3RvcmVkIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9XG4gICAgICovXG4gICAgdG9CdWZmZXIoKTpCdWZmZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5ieXRlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgYmFzZS01OCBzdHJpbmcgb2YgdGhlIHN0b3JlZCB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBIGJhc2UtNTggc3RyaW5nIG9mIHRoZSBzdG9yZWQge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn1cbiAgICAgKi9cbiAgICB0b1N0cmluZygpOnN0cmluZyB7XG4gICAgICAgIHJldHVybiBiaW50b29scy5idWZmZXJUb0I1OCh0aGlzLnRvQnVmZmVyKCkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGluc3RhbmNlIG9mIFtbTkJ5dGVzXV0uXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoKSB7fVxufVxuXG5sZXQgbjJfYXZtOm9iamVjdCA9IHtcbiAgICBcImJsb2NrY2hhaW5JRFwiOiBcIm0zODNKeW40ejlrWW15TWFtakh3b0V4b2NSUlY3b25kc2NpODYyYmJ2MUZTcnF2SDlcIixcbiAgICBcImFsaWFzXCI6IFwiWFwiLFxuICAgIFwidm1cIjogXCJhdm1cIlxufTtcblxubGV0IG4yX3BsYXRmb3JtOm9iamVjdCA9ICB7XG4gICAgXCJibG9ja2NoYWluSURcIjogXCJcIixcbiAgICBcImFsaWFzXCI6IFwiUFwiLFxuICAgIFwidm1cIjogXCJwbGF0Zm9ybVwiXG59O1xuXG5sZXQgbjJfY29udHJhY3RzOm9iamVjdCA9IHtcbiAgICBcImJsb2NrY2hhaW5JRFwiOiBcIlwiLFxuICAgIFwiYWxpYXNcIjogXCJDXCIsXG4gICAgXCJ2bVwiOiBcImNvbnRyYWN0c1wiXG59XG5cbmxldCBuMTIzNDVfYXZtOm9iamVjdCA9IE9iamVjdC5hc3NpZ24oe30sIG4yX2F2bSk7XG5uMTIzNDVfYXZtW1wiYmxvY2tjaGFpbklEXCJdID0gXCJpOEt0SzJLd0xpMW83V2FWQmJFS3BSTFB0QUVZYXlmb3B0cUFGWXhmUWdydXMxZzZtXCI7XG5sZXQgbjEyMzQ1X3BsYXRmb3JtID0gT2JqZWN0LmFzc2lnbih7fSwgbjJfcGxhdGZvcm0pO1xubjEyMzQ1X3BsYXRmb3JtW1wiYmxvY2tjaGFpbklEXCJdID0gXCIxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMUxwb1lZXCI7XG5sZXQgbjEyMzQ1X2NvbnRyYWN0cyA9IE9iamVjdC5hc3NpZ24oe30sIG4yX2NvbnRyYWN0cyk7XG5uMTIzNDVfcGxhdGZvcm1bXCJibG9ja2NoYWluSURcIl0gPSBcIk1USG9aQVAzZ0dIQjRjQVVwRkIxQ3VZbmgzdURvTWt0ZTZGakxiOVNuNUh4OEJrdmJcIjtcblxuZXhwb3J0IGNsYXNzIERlZmF1bHRzIHtcbiAgICBzdGF0aWMgbmV0d29yayA9IHtcbiAgICAgICAgXCIxXCI6IHt9LCAvL3VwZGF0ZSBiZWZvcmUgbWFpbm5ldFxuICAgICAgICAvKiBcbiAgICAgICAgVGhpcyB3aWxsIGJlIHNldCBvbiB0ZXN0IG5ldHdvcmsuXG4gICAgICAgIFwiMlwiOiB7XG4gICAgICAgICAgICBcImF2bVwiOiBuMl9hdm0sXG4gICAgICAgICAgICBcIlhcIjogbjJfYXZtLFxuICAgICAgICAgICAgXCJtMzgzSnluNHo5a1lteU1hbWpId29FeG9jUlJWN29uZHNjaTg2MmJidjFGU3Jxdkg5XCI6IG4yX2F2bSxcbiAgICAgICAgICAgIFwicGxhdGZvcm1cIjogbjJfcGxhdGZvcm0sXG4gICAgICAgICAgICBcIlBcIjogbjJfcGxhdGZvcm0sXG4gICAgICAgICAgICBcIkJDSUQxXCI6IG4yX3BsYXRmb3JtLFxuICAgICAgICAgICAgXCJjb250cmFjdHNcIjogbjJfY29udHJhY3RzLFxuICAgICAgICAgICAgXCJDXCI6IG4yX2NvbnRyYWN0cyxcbiAgICAgICAgICAgIFwiQkNJRDJcIjogbjJfY29udHJhY3RzXG4gICAgICAgIH1cbiAgICAgICAgKi9cbiAgICAgICAgXCIxMjM0NVwiOiB7XG4gICAgICAgICAgICBcImF2bVwiOiBuMTIzNDVfYXZtLFxuICAgICAgICAgICAgXCJYXCI6IG4xMjM0NV9hdm0sXG4gICAgICAgICAgICBcImk4S3RLMkt3TGkxbzdXYVZCYkVLcFJMUHRBRVlheWZvcHRxQUZZeGZRZ3J1czFnNm1cIjogbjEyMzQ1X2F2bSxcbiAgICAgICAgICAgIFwicGxhdGZvcm1cIjogbjEyMzQ1X3BsYXRmb3JtLFxuICAgICAgICAgICAgXCJQXCI6IG4xMjM0NV9wbGF0Zm9ybSxcbiAgICAgICAgICAgIFwiMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTFMcG9ZWVwiOiBuMTIzNDVfcGxhdGZvcm0sXG4gICAgICAgICAgICBcImNvbnRyYWN0c1wiOiBuMTIzNDVfY29udHJhY3RzLFxuICAgICAgICAgICAgXCJDXCI6IG4xMjM0NV9jb250cmFjdHMsXG4gICAgICAgICAgICBcIk1USG9aQVAzZ0dIQjRjQVVwRkIxQ3VZbmgzdURvTWt0ZTZGakxiOVNuNUh4OEJrdmJcIjogbjEyMzQ1X2NvbnRyYWN0c1xuICAgICAgICB9XG4gICAgfTtcbn0iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFJQSxvQ0FBaUM7QUFDakMsOENBQXNCO0FBRXRCLDBEQUFtQztBQUluQzs7R0FFRztBQUNILE1BQU0sUUFBUSxHQUFHLGtCQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7QUFFeEM7O0dBRUc7QUFDSCxNQUFhLG1CQUFtQjtDQU0vQjtBQU5ELGtEQU1DO0FBRUQ7O0dBRUc7QUFDSCxNQUFzQixPQUFPO0lBcUN6Qjs7OztPQUlHO0lBQ0gsWUFBWSxJQUFlLEVBQUUsT0FBYztRQXJDM0M7Ozs7V0FJRztRQUNILGVBQVUsR0FBRyxDQUFDLE9BQWMsRUFBRSxFQUFFO1lBQzVCLElBQUcsSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLE9BQU8sRUFBQztnQkFDbkMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxFQUFFLEdBQUcsWUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ2hDO2lCQUFNO2dCQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO2dCQUN2QixJQUFJLENBQUMsRUFBRSxHQUFHLFlBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDdEM7UUFDTCxDQUFDLENBQUE7UUFFRDs7V0FFRztRQUNILGVBQVUsR0FBRyxHQUFZLEVBQUU7WUFDdkIsT0FBTyxJQUFJLENBQUMsT0FBTyxD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ckIsbURBQW1ELEVBQUUsZ0JBQWdCO0tBQ3hFO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBVdGlsc1xuICovXG5pbXBvcnQgU2xvcGVzQ29yZSBmcm9tICcuLi9zbG9wZXMnO1xuaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSBcImJ1ZmZlci9cIjtcbmltcG9ydCBEQiBmcm9tIFwiLi9kYlwiO1xuaW1wb3J0IHsgU3RvcmVBUEkgfSBmcm9tICdzdG9yZTInO1xuaW1wb3J0IEJpblRvb2xzICBmcm9tICcuL2JpbnRvb2xzJztcbmltcG9ydCB7IENsaWVudFJlcXVlc3QgfSBmcm9tIFwiaHR0cFwiO1xuaW1wb3J0IHsgQXhpb3NSZXF1ZXN0Q29uZmlnIH0gZnJvbSAnYXhpb3MnO1xuXG4vKipcbiAqIEBpZ25vcmVcbiAqL1xuY29uc3QgYmludG9vbHMgPSBCaW5Ub29scy5nZXRJbnN0YW5jZSgpO1xuXG4vKipcbiAqIFJlc3BvbnNlIGRhdGEgZm9yIEhUVFAgcmVxdWVzdHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXF1ZXN0UmVzcG9uc2VEYXRhIHtcbiAgICBkYXRhOiBzdHJpbmcgfCBvYmplY3QgfCBBcnJheTxvYmplY3Q+O1xuICAgIGhlYWRlcnM6b2JqZWN0O1xuICAgIHN0YXR1czogbnVtYmVyO1xuICAgIHN0YXR1c1RleHQ6IHN0cmluZztcbiAgICByZXF1ZXN0OkNsaWVudFJlcXVlc3QgfCBYTUxIdHRwUmVxdWVzdDtcbn1cblxuLyoqXG4gKiBBYnN0cmFjdCBjbGFzcyBkZWZpbmluZyBhIGdlbmVyaWMgZW5kcG9pbnQgdGhhdCBhbGwgZW5kcG9pbnRzIG11c3QgaW1wbGVtZW50IChleHRlbmQpLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVBJQmFzZSB7XG4gICAgcHJvdGVjdGVkIGNvcmU6U2xvcGVzQ29yZTtcbiAgICBwcm90ZWN0ZWQgYmFzZXVybDpzdHJpbmc7XG4gICAgcHJvdGVjdGVkIGRiOlN0b3JlQVBJO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgcGF0aCBvZiB0aGUgQVBJcyBiYXNldXJsLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBiYXNldXJsIFBhdGggb2YgdGhlIEFQSXMgYmFzZXVybCAtIGV4OiBcIi9leHQvYmMvYXZtXCJcbiAgICAgKi9cbiAgICBzZXRCYXNlVVJMID0gKGJhc2V1cmw6c3RyaW5nKSA9PiB7XG4gICAgICAgIGlmKHRoaXMuZGIgJiYgdGhpcy5iYXNldXJsICE9PSBiYXNldXJsKXtcbiAgICAgICAgICAgIGxldCBiYWNrdXAgPSB0aGlzLmRiLmdldEFsbCgpO1xuICAgICAgICAgICAgdGhpcy5kYi5jbGVhckFsbCgpO1xuICAgICAgICAgICAgdGhpcy5iYXNldXJsID0gYmFzZXVybDtcbiAgICAgICAgICAgIHRoaXMuZGIgPSBEQi5nZXROYW1lc3BhY2UoYmFzZXVybCk7XG4gICAgICAgICAgICB0aGlzLmRiLnNldEFsbChiYWNrdXAsIHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5iYXNldXJsID0gYmFzZXVybDtcbiAgICAgICAgICAgIHRoaXMuZGIgPSBEQi5nZXROYW1lc3BhY2UoYmFzZXVybCk7XG4gICAgICAgIH1cbiAgICB9IFxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYmFzZXVybCdzIHBhdGguIFxuICAgICAqL1xuICAgIGdldEJhc2VVUkwgPSAoKSA6IHN0cmluZyA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2V1cmw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYmFzZXVybCdzIGRhdGFiYXNlLlxuICAgICAqL1xuICAgIGdldERCID0gKCk6U3RvcmVBUEkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kYjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gY29yZSBSZWZlcmVuY2UgdG8gdGhlIFNsb3BlcyBpbnN0YW5jZSB1c2luZyB0aGlzIGJhc2V1cmxcbiAgICAgKiBAcGFyYW0gYmFzZXVybCBQYXRoIHRvIHRoZSBiYXNldXJsIC0gZXg6IFwiL2V4dC9iYy9hdm1cIlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGNvcmU6U2xvcGVzQ29yZSwgYmFzZXVybDpzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jb3JlID0gY29yZTtcbiAgICAgICAgdGhpcy5zZXRCYXNlVVJMKGJhc2V1cmwpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEpSUENBUEkgZXh0ZW5kcyBBUElCYXNlIHtcbiAgICBwcm90ZWN0ZWQganJwY1ZlcnNpb246c3RyaW5nID0gXCIyLjBcIjtcbiAgICBwcm90ZWN0ZWQgcnBjaWQgPSAxO1xuICAgIGNhbGxNZXRob2QgPSBhc3luYyAobWV0aG9kOnN0cmluZywgcGFyYW1zPzpBcnJheTxvYmplY3Q+IHwgb2JqZWN0LCBiYXNldXJsPzpzdHJpbmcpOlByb21pc2U8UmVxdWVzdFJlc3BvbnNlRGF0YT4gPT4ge1xuICAgICAgICBsZXQgZXAgPSBiYXNldXJsID8gYmFzZXVybCA6IHRoaXMuYmFzZXVybDtcbiAgICAgICAgbGV0IHJwYzpvYmplY3QgPSB7fTtcbiAgICAgICAgcnBjW1wiaWRcIl0gPSB0aGlzLnJwY2lkO1xuICAgICAgICBycGNbXCJtZXRob2RcIl0gPSBtZXRob2Q7XG5cbiAgICAgICAgLy8gU2V0IHBhcmFtZXRlcnMgaWYgZXhpc3RzXG4gICAgICAgIGlmKHBhcmFtcyl7XG4gICAgICAgICAgICBycGNbJ3BhcmFtcyddID0gcGFyYW1zO1xuICAgICAgICB9IGVsc2UgaWYodGhpcy5qcnBjVmVyc2lvbiA9PSBcIjEuMFwiKXtcbiAgICAgICAgICAgIHJwY1tcInBhcmFtc1wiXSA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYodGhpcy5qcnBjVmVyc2lvbiAhPSBcIjEuMFwiKSB7XG4gICAgICAgICAgICBycGNbXCJqc29ucnBjXCJdID0gdGhpcy5qcnBjVmVyc2lvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBoZWFkZXJzOm9iamVjdCA9IHtcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD1VVEYtOFwifTtcblxuICAgICAgICBsZXQgYXhDb25mOkF4aW9zUmVxdWVzdENvbmZpZyA9IHtcbiAgICAgICAgICAgIGJhc2VVUkw6dGhpcy5jb3JlLmdldFByb3RvY29sKCkrXCI6Ly9cIit0aGlzLmNvcmUuZ2V0SVAoKStcIjpcIit0aGlzLmNvcmUuZ2V0UG9ydCgpLFxuICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbidcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gdGhpcy5jb3JlLnBvc3QoZXAsIHt9LCBKU09OLnN0cmluZ2lmeShycGMpLCBoZWFkZXJzLCBheENvbmYpLnRoZW4oIChyZXNwOlJlcXVlc3RSZXNwb25zZURhdGEpID0+IHtcbiAgICAgICAgICAgIGlmKHJlc3Auc3RhdHVzID49IDIwMCAmJiByZXNwLnN0YXR1cyA8IDMwMCl7XG4gICAgICAgICAgICAgICAgdGhpcy5ycGNpZCArPSAxO1xuICAgICAgICAgICAgICAgIGlmKHR5cGVvZiByZXNwLmRhdGEgPT09IFwic3RyaW5nXCIpe1xuICAgICAgICAgICAgICAgICAgICByZXNwLmRhdGEgPSBKU09OLnBhcnNlKHJlc3AuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZih0eXBlb2YgcmVzcC5kYXRhID09PSAnb2JqZWN0JyAmJiAnZXJyb3InIGluIHJlc3AuZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFcnJvciByZXR1cm5lZDogXCIgKyBKU09OLnN0cmluZ2lmeShyZXNwLmRhdGEpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3A7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gICBcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHJwY2lkLCBhIHN0cmljdGx5LWluY3JlYXNpbmcgbnVtYmVyLCBzdGFydGluZyBmcm9tIDEsIGluZGljYXRpbmcgdGhlIG5leHQgcmVxdWVzdCBJRCB0aGF0IHdpbGwgYmUgc2VudC5cbiAgICAgKi9cbiAgICBnZXRSUENJRCA9ICgpOm51bWJlciA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJwY2lkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBjb3JlIFJlZmVyZW5jZSB0byB0aGUgU2xvcGVzIGluc3RhbmNlIHVzaW5nIHRoaXMgZW5kcG9pbnRcbiAgICAgKiBAcGFyYW0gYmFzZXVybCBQYXRoIG9mIHRoZSBBUElzIGJhc2V1cmwgLSBleDogXCIvZXh0L2JjL2F2bVwiXG4gICAgICogQHBhcmFtIGpycGNWZXJzaW9uIFRoZSBqcnBjIHZlcnNpb24gdG8gdXNlLCBkZWZhdWx0IFwiMi4wXCIuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoY29yZTpTbG9wZXNDb3JlLCBiYXNldXJsOnN0cmluZywganJwY1ZlcnNpb246c3RyaW5nID0gXCIyLjBcIikge1xuICAgICAgICBzdXBlcihjb3JlLCBiYXNldXJsKTtcbiAgICAgICAgdGhpcy5qcnBjVmVyc2lvbiA9IGpycGNWZXJzaW9uO1xuICAgICAgICB0aGlzLnJwY2lkID0gMTtcbiAgICB9XG59XG5cbi8qKlxuICogQ2xhc3MgZm9yIHJlcHJlc2VudGluZyBhIHByaXZhdGUgYW5kIHB1YmxpYyBrZXlwYWlyIGluIFNsb3Blcy4gXG4gKiBBbGwgQVBJcyB0aGF0IG5lZWQga2V5IHBhaXJzIHNob3VsZCBleHRlbmQgb24gdGhpcyBjbGFzcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEtleVBhaXIge1xuICAgIHByb3RlY3RlZCBwdWJrOkJ1ZmZlcjtcbiAgICBwcm90ZWN0ZWQgcHJpdms6QnVmZmVyO1xuICAgIHByb3RlY3RlZCBjaGFpbmlkOnN0cmluZyA9IFwiXCI7XG5cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZXMgYSBuZXcga2V5cGFpci5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gZW50cm9weSBPcHRpb25hbCBwYXJhbWV0ZXIgdGhhdCBtYXkgYmUgbmVjZXNzYXJ5IHRvIHByb2R1Y2Ugc2VjdXJlIGtleXNcbiAgICAgKi9cbiAgICBnZW5lcmF0ZUtleTooZW50cm9weT86QnVmZmVyKSA9PiB2b2lkO1xuICAgIC8qKlxuICAgICAqIEltcG9ydHMgYSBwcml2YXRlIGtleSBhbmQgZ2VuZXJhdGVzIHRoZSBhcHByb3ByaWF0ZSBwdWJsaWMga2V5LlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBwcml2ayBBIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9IHJlcHJlc2VudGluZyB0aGUgcHJpdmF0ZSBrZXkgXG4gICAgICogXG4gICAgICogQHJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWlsdXJlXG4gICAgICovXG4gICAgaW1wb3J0S2V5Oihwcml2azpCdWZmZXIpID0+IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBUYWtlcyBhIG1lc3NhZ2UsIHNpZ25zIGl0LCBhbmQgcmV0dXJucyB0aGUgc2lnbmF0dXJlLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBtc2cgVGhlIG1lc3NhZ2UgdG8gc2lnblxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0gY29udGFpbmluZyB0aGUgc2lnbmF0dXJlXG4gICAgICovXG4gICAgc2lnbjoobXNnOkJ1ZmZlcikgPT4gQnVmZmVyO1xuXG4gICAgLyoqXG4gICAgICogUmVjb3ZlcnMgdGhlIHB1YmxpYyBrZXkgb2YgYSBtZXNzYWdlIHNpZ25lciBmcm9tIGEgbWVzc2FnZSBhbmQgaXRzIGFzc29jaWF0ZWQgc2lnbmF0dXJlLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBtc2cgVGhlIG1lc3NhZ2UgdGhhdCdzIHNpZ25lZFxuICAgICAqIEBwYXJhbSBzaWcgVGhlIHNpZ25hdHVyZSB0aGF0J3Mgc2lnbmVkIG9uIHRoZSBtZXNzYWdlXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfSBjb250YWluaW5nIHRoZSBwdWJsaWMga2V5IG9mIHRoZSBzaWduZXJcbiAgICAgKi9cbiAgICByZWNvdmVyOihtc2c6QnVmZmVyLCBzaWc6QnVmZmVyKSA9PiBCdWZmZXI7XG5cbiAgICAvKipcbiAgICAgKiBWZXJpZmllcyB0aGF0IHRoZSBwcml2YXRlIGtleSBhc3NvY2lhdGVkIHdpdGggdGhlIHByb3ZpZGVkIHB1YmxpYyBrZXkgcHJvZHVjZXMgdGhlIHNpZ25hdHVyZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UuXG4gICAgICogXG4gICAgICogQHBhcmFtIG1zZyBUaGUgbWVzc2FnZSBhc3NvY2lhdGVkIHdpdGggdGhlIHNpZ25hdHVyZVxuICAgICAqIEBwYXJhbSBzaWcgVGhlIHNpZ25hdHVyZSBvZiB0aGUgc2lnbmVkIG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcHViayBUaGUgcHVibGljIGtleSBhc3NvY2lhdGVkIHdpdGggdGhlIG1lc3NhZ2Ugc2lnbmF0dXJlXG4gICAgICogXG4gICAgICogQHJldHVybnMgVHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWlsdXJlXG4gICAgICovXG4gICAgdmVyaWZ5Oihtc2c6QnVmZmVyLCBzaWc6QnVmZmVyLCBwdWJrOkJ1ZmZlcikgPT4gYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIHByaXZhdGUga2V5LlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0gY29udGFpbmluZyB0aGUgcHJpdmF0ZSBrZXlcbiAgICAgKi9cbiAgICBnZXRQcml2YXRlS2V5ID0gKCk6QnVmZmVyID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJpdms7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgcHVibGljIGtleS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9IGNvbnRhaW5pbmcgdGhlIHB1YmxpYyBrZXlcbiAgICAgKi9cbiAgICBnZXRQdWJsaWNLZXkgPSAoKTpCdWZmZXIgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wdWJrO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHByaXZhdGUga2V5LlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwdWJsaWMga2V5XG4gICAgICovXG4gICAgZ2V0UHJpdmF0ZUtleVN0cmluZzooKSA9PiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBwdWJsaWMga2V5LlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwdWJsaWMga2V5XG4gICAgICovXG4gICAgZ2V0UHVibGljS2V5U3RyaW5nOigpID0+IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGFkZHJlc3MuXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfSAgcmVwcmVzZW50YXRpb24gb2YgdGhlIGFkZHJlc3NcbiAgICAgKi9cbiAgICBnZXRBZGRyZXNzOigpID0+IEJ1ZmZlcjtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGFkZHJlc3MncyBzdHJpbmcgcmVwcmVzZW50YXRpb24uXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGFkZHJlc3NcbiAgICAgKi9cbiAgICBnZXRBZGRyZXNzU3RyaW5nOigpID0+IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGNoYWluSUQgYXNzb2NpYXRlZCB3aXRoIHRoaXMga2V5LlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIFRoZSBbW0tleVBhaXJdXSdzIGNoYWluSURcbiAgICAgKi9cbiAgICBnZXRDaGFpbklEID0gKCk6c3RyaW5nID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hhaW5pZFxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHRoZSBjaGFpbklEIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGtleS5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gY2hhaW5pZCBTdHJpbmcgZm9yIHRoZSBjaGFpbklEXG4gICAgICovXG4gICAgc2V0Q2hhaW5JRCA9IChjaGFpbmlkOnN0cmluZyk6dm9pZCA9PiB7XG4gICAgICAgIHRoaXMuY2hhaW5pZCA9IGNoYWluaWQ7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoY2hhaW5pZDpzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jaGFpbmlkID0gY2hhaW5pZFxuICAgIH1cbn1cblxuLyoqXG4gKiBDbGFzcyBmb3IgcmVwcmVzZW50aW5nIGEga2V5IGNoYWluIGluIFNsb3Blcy4gXG4gKiBBbGwgZW5kcG9pbnRzIHRoYXQgbmVlZCBrZXkgY2hhaW5zIHNob3VsZCBleHRlbmQgb24gdGhpcyBjbGFzcy5cbiAqIFxuICogQHR5cGVwYXJhbSBLUENsYXNzIGV4dGVuZGluZyBbW0tleVBhaXJdXSB3aGljaCBpcyB1c2VkIGFzIHRoZSBrZXkgaW4gW1tLZXlDaGFpbl1dXG4gKi9cbmV4cG9ydCBjbGFzcyBLZXlDaGFpbjxLUENsYXNzIGV4dGVuZHMgS2V5UGFpcj4ge1xuICAgIHByb3RlY3RlZCBrZXlzOntbYWRkcmVzczogc3RyaW5nXTogS1BDbGFzc30gPSB7fTtcbiAgICBwcm90ZWN0ZWQgY2hhaW5pZDpzdHJpbmcgPSBcIlwiO1xuXG4gICAgLyoqXG4gICAgICogTWFrZXMgYSBuZXcgW1tLZXlQYWlyXV0sIHJldHVybnMgdGhlIGFkZHJlc3MuXG4gICAgICogXG4gICAgICogQHBhcmFtIGVudHJvcHkgT3B0aW9uYWwgcGFyYW1ldGVyIHRoYXQgbWF5IGJlIG5lY2Vzc2FyeSB0byBwcm9kdWNlIHNlY3VyZSBrZXlzXG4gICAgICogXG4gICAgICogQHJldHVybnMgQWRkcmVzcyBvZiB0aGUgbmV3IFtbS2V5UGFpcl1dXG4gICAgICovXG4gICAgbWFrZUtleTooZW50cm9weT86QnVmZmVyKSA9PiBCdWZmZXI7XG5cbiAgICAvKipcbiAgICAgKiBHaXZlbiBhIHByaXZhdGUga2V5LCBtYWtlcyBhIG5ldyBbW0tleVBhaXJdXSwgcmV0dXJucyB0aGUgYWRkcmVzcy5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gcHJpdmsgQSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfSByZXByZXNlbnRpbmcgdGhlIHByaXZhdGUga2V5IFxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEFkZHJlc3Mgb2YgdGhlIG5ldyBbW0tleVBhaXJdXVxuICAgICAqL1xuICAgIGltcG9ydEtleToocHJpdms6QnVmZmVyKSA9PiBCdWZmZXI7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFuIGFycmF5IG9mIGFkZHJlc3NlcyBzdG9yZWQgaW4gdGhlIFtbS2V5Q2hhaW5dXS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfSAgcmVwcmVzZW50YXRpb25zIG9mIHRoZSBhZGRyZXNzZXNcbiAgICAgKi9cbiAgICBnZXRBZGRyZXNzZXMgPSAoKTpBcnJheTxCdWZmZXI+ID0+IHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5rZXlzKS5tYXAoa3AgPT4ga3AuZ2V0QWRkcmVzcygpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFuIGFycmF5IG9mIGFkZHJlc3NlcyBzdG9yZWQgaW4gdGhlIFtbS2V5Q2hhaW5dXS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBzdHJpbmcgcmVwcmVzZW50YXRpb25zIG9mIHRoZSBhZGRyZXNzZXNcbiAgICAgKi9cbiAgICBnZXRBZGRyZXNzU3RyaW5ncyA9ICgpOkFycmF5PHN0cmluZz4gPT4ge1xuICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLmtleXMpLm1hcChrcCA9PiBrcC5nZXRBZGRyZXNzU3RyaW5nKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgdGhlIGtleSBwYWlyIHRvIHRoZSBsaXN0IG9mIHRoZSBrZXlzIG1hbmFnZWQgaW4gdGhlIFtbS2V5Q2hhaW5dXS5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gbmV3S2V5IEEga2V5IHBhaXIgb2YgdGhlIGFwcHJvcHJpYXRlIGNsYXNzIHRvIGJlIGFkZGVkIHRvIHRoZSBbW0tleUNoYWluXV1cbiAgICAgKi9cbiAgICBhZGRLZXkgPSAobmV3S2V5OktQQ2xhc3MpID0+IHtcbiAgICAgICAgbmV3S2V5LnNldENoYWluSUQodGhpcy5jaGFpbmlkKTtcbiAgICAgICAgdGhpcy5rZXlzW25ld0tleS5nZXRBZGRyZXNzKCkudG9TdHJpbmcoXCJoZXhcIildID0gbmV3S2V5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgdGhlIGtleSBwYWlyIGZyb20gdGhlIGxpc3Qgb2YgdGhleSBrZXlzIG1hbmFnZWQgaW4gdGhlIFtbS2V5Q2hhaW5dXS5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0ga2V5IEEge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0gZm9yIHRoZSBhZGRyZXNzIG9yIEtQQ2xhc3MgdG8gcmVtb3ZlXG4gICAgICogXG4gICAgICogQHJldHVybnMgVGhlIGJvb2xlYW4gdHJ1ZSBpZiBhIGtleSB3YXMgcmVtb3ZlZC5cbiAgICAgKi9cbiAgICByZW1vdmVLZXkgPSAoa2V5OktQQ2xhc3MgfCBCdWZmZXIpID0+IHtcbiAgICAgICAgbGV0IGthZGRyOnN0cmluZztcbiAgICAgICAgaWYoa2V5IGluc3RhbmNlb2YgQnVmZmVyKXtcbiAgICAgICAgICAgIGthZGRyID0ga2V5LnRvU3RyaW5nKFwiaGV4XCIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAga2FkZHIgPSBrZXkuZ2V0QWRkcmVzcygpLnRvU3RyaW5nKFwiaGV4XCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmKGthZGRyIGluIHRoaXMua2V5cyl7XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5rZXlzW2thZGRyXTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZXJlIGlzIGEga2V5IGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJvdmlkZWQgYWRkcmVzcy5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gYWRkcmVzcyBUaGUgYWRkcmVzcyB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIHRoZSBrZXlzIGRhdGFiYXNlXG4gICAgICogXG4gICAgICogQHJldHVybnMgVHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBpZiBub3QgZm91bmRcbiAgICAgKi9cbiAgICBoYXNLZXkgPSAoYWRkcmVzczpCdWZmZXIpOmJvb2xlYW4gPT4ge1xuICAgICAgICByZXR1cm4gKGFkZHJlc3MudG9TdHJpbmcoXCJoZXhcIikgaW4gdGhpcy5rZXlzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBbW0tleVBhaXJdXSBsaXN0ZWQgdW5kZXIgdGhlIHByb3ZpZGVkIGFkZHJlc3NcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gYWRkcmVzcyBUaGUge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0gb2YgdGhlIGFkZHJlc3MgdG8gcmV0cmlldmUgZnJvbSB0aGUga2V5cyBkYXRhYmFzZVxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEgcmVmZXJlbmNlIHRvIHRoZSBbW0tleVBhaXJdXSBpbiB0aGUga2V5cyBkYXRhYmFzZVxuICAgICAqL1xuICAgIGdldEtleSA9IChhZGRyZXNzOkJ1ZmZlcik6IEtQQ2xhc3MgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5rZXlzW2FkZHJlc3MudG9TdHJpbmcoXCJoZXhcIildO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGNoYWluSUQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgW1tLZXlDaGFpbl1dLlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIFRoZSBbW0tleUNoYWluXV0ncyBjaGFpbklEXG4gICAgICovXG4gICAgZ2V0Q2hhaW5JRCA9ICgpOnN0cmluZyA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNoYWluaWRcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB0aGUgY2hhaW5JRCBhc3NvY2lhdGVkIHdpdGggdGhpcyBbW0tleUNoYWluXV0gYW5kIGFsbCBhc3NvY2lhdGVkIGtleXBhaXJzLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBjaGFpbmlkIFN0cmluZyBmb3IgdGhlIGNoYWluSURcbiAgICAgKi9cbiAgICBzZXRDaGFpbklEID0gKGNoYWluaWQ6c3RyaW5nKTp2b2lkID0+IHtcbiAgICAgICAgdGhpcy5jaGFpbmlkID0gY2hhaW5pZDtcbiAgICAgICAgZm9yKGxldCBhZGRyZXNzIGluIHRoaXMua2V5cyl7XG4gICAgICAgICAgICB0aGlzLmtleXNbYWRkcmVzc10uc2V0Q2hhaW5JRChjaGFpbmlkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgaW5zdGFuY2Ugb2YgW1tLZXlDaGFpbl1dLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGNoYWluaWQ6c3RyaW5nKSB7XG4gICAgICAgIHRoaXMuY2hhaW5pZCA9IGNoYWluaWQ7XG4gICAgfVxufVxuXG4vKipcbiAqIEFic3RyYWN0IGNsYXNzIHRoYXQgaW1wbGVtZW50cyBiYXNpYyBmdW5jdGlvbmFsaXR5IGZvciBtYW5hZ2luZyBhIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9IG9mIGFuIGV4YWN0IGxlbmd0aC5cbiAqIFxuICogQ3JlYXRlIGEgY2xhc3MgdGhhdCBleHRlbmRzIHRoaXMgb25lIGFuZCBvdmVycmlkZSBic2l6ZSB0byBtYWtlIGl0IHZhbGlkYXRlIGZvciBleGFjdGx5IHRoZSBjb3JyZWN0IGxlbmd0aC5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5CeXRlcyB7XG4gICAgcHJvdGVjdGVkIGJ5dGVzOkJ1ZmZlcjtcbiAgICBwcm90ZWN0ZWQgYnNpemU6bnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBUaGUgZXhhY3QgbGVuZ3RoIHJlcXVpcmVtZW50IG9mIHRoaXMgY2xhc3NcbiAgICAgKi9cbiAgICBnZXRTaXplID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ic2l6ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUYWtlcyBhIGJhc2UtNTggZW5jb2RlZCBzdHJpbmcsIHZlcmlmaWVzIGl0cyBsZW5ndGgsIGFuZCBzdG9yZXMgaXQuXG4gICAgICogXG4gICAgICogQHJldHVybnMgVGhlIHNpemUgb2YgdGhlIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9XG4gICAgICovXG4gICAgZnJvbVN0cmluZyhiNThzdHI6c3RyaW5nKTpudW1iZXIge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5mcm9tQnVmZmVyKGJpbnRvb2xzLmI1OFRvQnVmZmVyKGI1OHN0cikpO1xuICAgICAgICB9IGNhdGNoKGUpe1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICAgIGxldCBlbXNnOnN0cmluZyA9IFwiRXJyb3IgLSBOQnl0ZXMuZnJvbVN0cmluZzogXCIgKyBlO1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlbXNnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5ic2l6ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUYWtlcyBhIFtbQnVmZmVyXV0sIHZlcmlmaWVzIGl0cyBsZW5ndGgsIGFuZCBzdG9yZXMgaXQuIFxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIFRoZSBzaXplIG9mIHRoZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfVxuICAgICAqL1xuICAgIGZyb21CdWZmZXIoYnVmZjpCdWZmZXIpOm51bWJlciB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZihidWZmLmxlbmd0aCAhPSB0aGlzLmJzaXplKXtcbiAgICAgICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkJ1ZmZlciBsZW5ndGggbXVzdCBiZSBleGFjdGx5IFwiICsgdGhpcy5ic2l6ZSArIFwiIGJ5dGVzLlwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuYnl0ZXMgPSBCdWZmZXIuZnJvbShidWZmKTtcbiAgICAgICAgfSBjYXRjaChlKSB7XG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgICAgbGV0IGVtc2c6c3RyaW5nID0gXCJFcnJvciAtIE5CeXRlcy5mcm9tQnVmZmVyOiBcIiArIGU7XG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVtc2cpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmJzaXplO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHN0b3JlZCB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBIHJlZmVyZW5jZSB0byB0aGUgc3RvcmVkIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9XG4gICAgICovXG4gICAgdG9CdWZmZXIoKTpCdWZmZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5ieXRlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgYmFzZS01OCBzdHJpbmcgb2YgdGhlIHN0b3JlZCB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBIGJhc2UtNTggc3RyaW5nIG9mIHRoZSBzdG9yZWQge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn1cbiAgICAgKi9cbiAgICB0b1N0cmluZygpOnN0cmluZyB7XG4gICAgICAgIHJldHVybiBiaW50b29scy5idWZmZXJUb0I1OCh0aGlzLnRvQnVmZmVyKCkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGluc3RhbmNlIG9mIFtbTkJ5dGVzXV0uXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoKSB7fVxufVxuXG5sZXQgbjJfYXZtOm9iamVjdCA9IHtcbiAgICBcImJsb2NrY2hhaW5JRFwiOiBcIjRrdFJqc0FLeGdNcjJhRXp2OVNXbXJVN1hrNUZuaUhVclZDWDRQMVRaU2ZUTFpXRk1cIixcbiAgICBcImFsaWFzXCI6IFwiWFwiLFxuICAgIFwidm1cIjogXCJhdm1cIlxufTtcblxubGV0IG4yX3BsYXRmb3JtOm9iamVjdCA9ICB7XG4gICAgXCJibG9ja2NoYWluSURcIjogXCIxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMUxwb1lZXCIsXG4gICAgXCJhbGlhc1wiOiBcIlBcIixcbiAgICBcInZtXCI6IFwicGxhdGZvcm1cIlxufTtcblxubGV0IG4yX2NvbnRyYWN0czpvYmplY3QgPSB7XG4gICAgXCJibG9ja2NoYWluSURcIjogXCIybVVZU1hmTHJEdGlnd2J6ajFMeEtWc0h3RUxnaGM1c2lzb1hyekp3THFBQVFIRjRpXCIsXG4gICAgXCJhbGlhc1wiOiBcIkNcIixcbiAgICBcInZtXCI6IFwiY29udHJhY3RzXCJcbn1cblxubGV0IG4xMjM0NV9hdm06b2JqZWN0ID0gT2JqZWN0LmFzc2lnbih7fSwgbjJfYXZtKTtcbm4xMjM0NV9hdm1bXCJibG9ja2NoYWluSURcIl0gPSBcIjRSNXAyUlhER0xxYWlmWkU0aEhXSDlvd2UzNHBmb0JVTG4xRHJRVFdpdmpnOG80YUhcIjtcbmxldCBuMTIzNDVfcGxhdGZvcm0gPSBPYmplY3QuYXNzaWduKHt9LCBuMl9wbGF0Zm9ybSk7XG5uMTIzNDVfcGxhdGZvcm1bXCJibG9ja2NoYWluSURcIl0gPSBcIjExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExTHBvWVlcIjtcbmxldCBuMTIzNDVfY29udHJhY3RzID0gT2JqZWN0LmFzc2lnbih7fSwgbjJfY29udHJhY3RzKTtcbm4xMjM0NV9wbGF0Zm9ybVtcImJsb2NrY2hhaW5JRFwiXSA9IFwidFpHbTZSQ2tlR3BWRVRVVHAxMURXM1VZRlptbTY5emZxeGNocEhyU0Y3d2d5OHJtd1wiO1xuXG5leHBvcnQgY2xhc3MgRGVmYXVsdHMge1xuICAgIHN0YXRpYyBuZXR3b3JrID0ge1xuICAgICAgICBcIjFcIjoge30sIC8vdXBkYXRlIGJlZm9yZSBtYWlubmV0XG4gICAgICAgIFwiMlwiOiB7XG4gICAgICAgICAgICBcImF2bVwiOiBuMl9hdm0sXG4gICAgICAgICAgICBcIlhcIjogbjJfYXZtLFxuICAgICAgICAgICAgXCI0a3RSanNBS3hnTXIyYUV6djlTV21yVTdYazVGbmlIVXJWQ1g0UDFUWlNmVExaV0ZNXCI6IG4yX2F2bSxcbiAgICAgICAgICAgIFwicGxhdGZvcm1cIjogbjJfcGxhdGZvcm0sXG4gICAgICAgICAgICBcIlBcIjogbjJfcGxhdGZvcm0sXG4gICAgICAgICAgICBcIjExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExTHBvWVlcIjogbjJfcGxhdGZvcm0sXG4gICAgICAgICAgICBcImNvbnRyYWN0c1wiOiBuMl9jb250cmFjdHMsXG4gICAgICAgICAgICBcIkNcIjogbjJfY29udHJhY3RzLFxuICAgICAgICAgICAgXCIybVVZU1hmTHJEdGlnd2J6ajFMeEtWc0h3RUxnaGM1c2lzb1hyekp3THFBQVFIRjRpXCI6IG4yX2NvbnRyYWN0c1xuICAgICAgICB9LFxuICAgICAgICBcIjEyMzQ1XCI6IHtcbiAgICAgICAgICAgIFwiYXZtXCI6IG4xMjM0NV9hdm0sXG4gICAgICAgICAgICBcIlhcIjogbjEyMzQ1X2F2bSxcbiAgICAgICAgICAgIFwiNFI1cDJSWERHTHFhaWZaRTRoSFdIOW93ZTM0cGZvQlVMbjFEclFUV2l2amc4bzRhSFwiOiBuMTIzNDVfYXZtLFxuICAgICAgICAgICAgXCJwbGF0Zm9ybVwiOiBuMTIzNDVfcGxhdGZvcm0sXG4gICAgICAgICAgICBcIlBcIjogbjEyMzQ1X3BsYXRmb3JtLFxuICAgICAgICAgICAgXCIxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMUxwb1lZXCI6IG4xMjM0NV9wbGF0Zm9ybSxcbiAgICAgICAgICAgIFwiY29udHJhY3RzXCI6IG4xMjM0NV9jb250cmFjdHMsXG4gICAgICAgICAgICBcIkNcIjogbjEyMzQ1X2NvbnRyYWN0cyxcbiAgICAgICAgICAgIFwidFpHbTZSQ2tlR3BWRVRVVHAxMURXM1VZRlptbTY5emZxeGNocEhyU0Y3d2d5OHJtd1wiOiBuMTIzNDVfY29udHJhY3RzXG4gICAgICAgIH1cbiAgICB9O1xufSJdfQ==

@@ -46,3 +46,3 @@ "use strict";

let out = new outputs_1.SecpOutput(assetIDBuff, new bn_js_1.default(10000), addrs, locktime, 3);
expect(out.getOutputID()).toBe(4);
expect(out.getOutputID()).toBe(7);
expect(JSON.stringify(out.getAddresses().sort())).toStrictEqual(JSON.stringify(addrs.sort()));

@@ -72,2 +72,2 @@ expect(out.getThreshold()).toBe(3);

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0cHV0cy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdHMvYXBpcy9hdm0vb3V0cHV0cy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0RBQXVCO0FBQ3ZCLG9DQUErQjtBQUMvQixrRUFBMEM7QUFDMUMsa0RBQTZFO0FBRTdFLE1BQU0sUUFBUSxHQUFHLGtCQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7QUFFeEMsUUFBUSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUU7SUFDckIsSUFBSSxPQUFPLEdBQVUsa0VBQWtFLENBQUM7SUFDeEYsSUFBSSxXQUFXLEdBQVUsZUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckQsSUFBSSxLQUFLLEdBQWlCO1FBQ3RCLFFBQVEsQ0FBQyxjQUFjLENBQUMsbUNBQW1DLENBQUM7UUFDNUQsUUFBUSxDQUFDLGNBQWMsQ0FBQyxtQ0FBbUMsQ0FBQztRQUM1RCxRQUFRLENBQUMsY0FBYyxDQUFDLG1DQUFtQyxDQUFDO0tBQy9ELENBQUMsSUFBSSxFQUFFLENBQUM7SUFFVCxJQUFJLFFBQVEsR0FBTSxJQUFJLGVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxJQUFJLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQyxJQUFJLFFBQVEsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQyxJQUFJLFlBQVksR0FBTSxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksZUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFL0MsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsRUFBRTtRQUMzQixJQUFJLE9BQU8sR0FBYyxJQUFJLG9CQUFVLENBQUMsV0FB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LENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFL0QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFdkQsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1IsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN2QixDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUViLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFL0MsSUFBSSxDQUFDLEdBQVUsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXJELElBQUksQ0FBQyxHQUFpQixHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVwRSxJQUFJLEVBQUUsR0FBVyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRCxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLElBQUksRUFBRSxHQUFXLEdBQUcsQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLElBQUksZUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDeEQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixJQUFJLEVBQUUsR0FBVyxHQUFHLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsSUFBSSxFQUFFLEdBQVcsR0FBRyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLGVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJOIGZyb20gXCJibi5qc1wiO1xuaW1wb3J0IHtCdWZmZXJ9IGZyb20gXCJidWZmZXIvXCI7XG5pbXBvcnQgQmluVG9vbHMgZnJvbSAnc3JjL3V0aWxzL2JpbnRvb2xzJztcbmltcG9ydCB7IE91dHB1dCwgU2VjcE91dHB1dCwgU2VsZWN0T3V0cHV0Q2xhc3MgfSBmcm9tICdzcmMvYXBpcy9hdm0vb3V0cHV0cyc7XG5cbmNvbnN0IGJpbnRvb2xzID0gQmluVG9vbHMuZ2V0SW5zdGFuY2UoKTtcblxuZGVzY3JpYmUoJ091dHB1dHMnLCAoKSA9PiB7XG4gICAgbGV0IGFzc2V0SUQ6c3RyaW5nID0gXCI4YTVkMmQzMmU2OGJjNTAwMzZlNGQwODYwNDQ2MTdmZTRhMGEwMjk2YjI3NDk5OWJhNTY4ZWE5MmRhNDZkNTMzXCI7XG4gICAgbGV0IGFzc2V0SURCdWZmOkJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGFzc2V0SUQsIFwiaGV4XCIpO1xuICAgIGxldCBhZGRyczpBcnJheTxCdWZmZXI+ID0gW1xuICAgICAgICBiaW50b29scy5hdmFEZXNlcmlhbGl6ZShcIkI2RDR2MVZ0UFlMYmlVdllYdFc0UHg4b0U5aW1DMnZHV1wiKSxcbiAgICAgICAgYmludG9vbHMuYXZhRGVzZXJpYWxpemUoXCJQNXdkUnVaZWFEdDI4ZUhNUDVTM3c5WmRvQmZvN3d1ekZcIiksXG4gICAgICAgIGJpbnRvb2xzLmF2YURlc2VyaWFsaXplKFwiNlkza3lzakY5am5IbllrZFM5eUdBdW9IeWFlMmVObWVWXCIpXG4gICAgXS5zb3J0KCk7XG5cbiAgICBsZXQgbG9ja3RpbWU6Qk4gPSBuZXcgQk4oNTQzMjEpO1xuICAgIGxldCBhZGRycGF5ID0gW2FkZHJzWzBdLCBhZGRyc1sxXV07XG4gICAgbGV0IGFkZHJmYWxsID0gW2FkZHJzWzFdLCBhZGRyc1syXV07XG4gICAgbGV0IGZhbGxMb2NrdGltZTpCTiA9IGxvY2t0aW1lLmFkZChuZXcgQk4oNTApKTtcblxuICAgIHRlc3QoJ1NlbGVjdE91dHB1dENsYXNzJywgKCkgPT4ge1xuICAgICAgICBsZXQgZ29vZG91dDpTZWNwT3V0cHV0ID0gbmV3IFNlY3BPdXRwdXQoYXNzZXRJREJ1ZmYsIG5ldyBCTigyNjAwKSwgYWRkcnBheSwgbG9ja3RpbWUsIDEpO1xuICAgICAgICBsZXQgYmFkb3V0YnVmZjpCdWZmZXIgPSBiaW50b29scy5jb3B5RnJvbShnb29kb3V0LnRvQnVmZmVyKCkpO1xuICAgICAgICBiYWRvdXRidWZmLndyaXRlKFwiMDAwMDAwOTlcIiwgMzIsIDQsIFwiaGV4XCIpO1xuICAgICAgICBsZXQgb3V0cGF5bWVudDpPdXRwdXQgPSBTZWxlY3RPdXRwdXRDbGFzcyhnb29kb3V0LnRvQnVmZmVyKCkpO1xuICAgICAgICBleHBlY3Qob3V0cGF5bWVudCkudG9CZUluc3RhbmNlT2YoU2VjcE91dHB1dCk7XG4gICAgICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICAgICAgICBTZWxlY3RPdXRwdXRDbGFzcyhiYWRvdXRidWZmKTtcbiAgICAgICAgfSkudG9UaHJvdyhcIkVycm9yIC0gU2VsZWN0T3V0cHV0Q2xhc3M6IHVua25vd24gb3V0cHV0aWRcIik7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdjb21wYXJhdG9yJywgKCkgPT4ge1xuICAgICAgICBsZXQgb3V0cGF5bWVudDE6T3V0cHV0ID0gbmV3IFNlY3BPdXRwdXQoYXNzZXRJREJ1ZmYsIG5ldyBCTigxMDAwMCksIGFkZHJzLCBsb2NrdGltZSwgMyk7XG4gICAgICAgIGxldCBvdXRwYXltZW50MjpPdXRwdXQgPSBuZXcgU2VjcE91dHB1dChhc3NldElEQnVmZiwgbmV3IEJOKDEwMDAxKSwgYWRkcnMsIGxvY2t0aW1lLCAzKTtcbiAgICAgICAgbGV0IG91dHBheW1lbnQzOk91dHB1dCA9IG5ldyBTZWNwT3V0cHV0KGFzc2V0SURCdWZmLCBuZXcgQk4oOTk5OSksIGFkZHJzLCBsb2NrdGltZSwgMyk7XG4gICAgICAgIGxldCBjbXAgPSBPdXRwdXQuY29tcGFyYXRvcigpO1xuICAgICAgICBleHBlY3QoY21wKG91dHBheW1lbnQxLCBvdXRwYXltZW50MSkpLnRvQmUoMCk7XG4gICAgICAgIGV4cGVjdChjbXAob3V0cGF5bWVudDIsIG91dHBheW1lbnQyKSkudG9CZSgwKTtcbiAgICAgICAgZXhwZWN0KGNtcChvdXRwYXltZW50Mywgb3V0cGF5bWVudDMpKS50b0JlKDApO1xuICAgICAgICBleHBlY3QoY21wKG91dHBheW1lbnQxLCBvdXRwYXltZW50MikpLnRvQmUoLTEpO1xuICAgICAgICBleHBlY3QoY21wKG91dHBheW1lbnQxLCBvdXRwYXltZW50MykpLnRvQmUoMSk7XG4gICAgfSk7XG4gICAgdGVzdCgnT3V0UGF5bWVudCcsICgpID0+IHtcbiAgICAgICAgbGV0IG91dDpTZWNwT3V0cHV0ID0gbmV3IFNlY3BPdXRwdXQoYXNzZXRJREJ1ZmYsIG5ldyBCTigxMDAwMCksIGFkZHJzLCBsb2NrdGltZSwgMyk7XG4gICAgICAgIGV4cGVjdChvdXQuZ2V0T3V0cHV0SUQoKSkudG9CZSg0KTtcbiAgICAgICAgZXhwZWN0KEpTT04uc3RyaW5naWZ5KG91dC5nZXRBZGRyZXNzZXMoKS5zb3J0KCkpKS50b1N0cmljdEVxdWFsKEpTT04uc3RyaW5naWZ5KGFkZHJzLnNvcnQoKSkpO1xuXG4gICAgICAgIGV4cGVjdChvdXQuZ2V0VGhyZXNob2xkKCkpLnRvQmUoMyk7XG4gICAgICAgIGV4cGVjdChvdXQuZ2V0TG9ja3RpbWUoKS50b051bWJlcigpKS50b0JlKGxvY2t0aW1lLnRvTnVtYmVyKCkpO1xuXG4gICAgICAgIGV4cGVjdChvdXQuZ2V0QXNzZXRJRCgpLnRvU3RyaW5nKFwiaGV4XCIpKS50b0JlKGFzc2V0SUQpO1xuXG4gICAgICAgIGxldCByID0gb3V0LmdldEFkZHJlc3NJZHgoYWRkcnNbMl0pO1xuICAgICAgICBleHBlY3Qob3V0LmdldEFkZHJlc3MocikpLnRvU3RyaWN0RXF1YWwoYWRkcnNbMl0pO1xuICAgICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICAgICAgb3V0LmdldEFkZHJlc3MoNDAwKVxuICAgICAgICB9KS50b1Rocm93KCk7XG5cbiAgICAgICAgZXhwZWN0KG91dC5nZXRBbW91bnQoKS50b051bWJlcigpKS50b0JlKDEwMDAwKTtcblxuICAgICAgICBsZXQgYjpCdWZmZXIgPSBvdXQudG9CdWZmZXIoKTtcbiAgICAgICAgZXhwZWN0KG91dC50b1N0cmluZygpKS50b0JlKGJpbnRvb2xzLmJ1ZmZlclRvQjU4KGIpKTtcblxuICAgICAgICBsZXQgczpBcnJheTxCdWZmZXI+ID0gb3V0LmdldFNwZW5kZXJzKGFkZHJzKTtcbiAgICAgICAgZXhwZWN0KEpTT04uc3RyaW5naWZ5KHMuc29ydCgpKSkudG9CZShKU09OLnN0cmluZ2lmeShhZGRycy5zb3J0KCkpKTtcblxuICAgICAgICBsZXQgbTE6Ym9vbGVhbiA9IG91dC5tZWV0c1RocmVzaG9sZChbYWRkcnNbMF1dKTtcbiAgICAgICAgZXhwZWN0KG0xKS50b0JlKGZhbHNlKTtcbiAgICAgICAgbGV0IG0yOmJvb2xlYW4gPSBvdXQubWVldHNUaHJlc2hvbGQoYWRkcnMsIG5ldyBCTigxMDApKTtcbiAgICAgICAgZXhwZWN0KG0yKS50b0JlKGZhbHNlKTtcbiAgICAgICAgbGV0IG0zOmJvb2xlYW4gPSBvdXQubWVldHNUaHJlc2hvbGQoYWRkcnMpO1xuICAgICAgICBleHBlY3QobTMpLnRvQmUodHJ1ZSk7XG4gICAgICAgIGxldCBtNDpib29sZWFuID0gb3V0Lm1lZXRzVGhyZXNob2xkKGFkZHJzLCBsb2NrdGltZS5hZGQobmV3IEJOKDEwMCkpKTtcbiAgICAgICAgZXhwZWN0KG00KS50b0JlKHRydWUpO1xuICAgIH0pO1xufSk7Il19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0cHV0cy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdHMvYXBpcy9hdm0vb3V0cHV0cy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0RBQXVCO0FBQ3ZCLG9DQUErQjtBQUMvQixrRUFBMEM7QUFDMUMsa0RBQTZFO0FBRTdFLE1BQU0sUUFBUSxHQUFHLGtCQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7QUFFeEMsUUFBUSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUU7SUFDckIsSUFBSSxPQUFPLEdBQVUsa0VBQWtFLENBQUM7SUFDeEYsSUFBSSxXQUFXLEdBQVUsZUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckQsSUFBSSxLQUFLLEdBQWlCO1FBQ3RCLFFBQVEsQ0FBQyxjQUFjLENBQUMsbUNBQW1DLENBQUM7UUFDNUQsUUFBUSxDQUFDLGNBQWMsQ0FBQyxtQ0FBbUMsQ0FBQztRQUM1RCxRQUFRLENBQUMsY0FBYyxDQUFDLG1DQUFtQyxDQUFDO0tBQy9ELENBQUMsSUFBSSxFQUFFLENBQUM7SUFFVCxJQUFJLFFBQVEsR0FBTSxJQUFJLGVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxJQUFJLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQyxJQUFJLFFBQVEsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQyxJQUFJLFlBQVksR0FBTSxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksZUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFL0MsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsRUFBRTtRQUMzQixJQUFJLE9BQU8sR0FBYyxJQUFJLG9CQUFVLENBQUMsV0FB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LENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFL0QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFdkQsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1IsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN2QixDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUViLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFL0MsSUFBSSxDQUFDLEdBQVUsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXJELElBQUksQ0FBQyxHQUFpQixHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVwRSxJQUFJLEVBQUUsR0FBVyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRCxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLElBQUksRUFBRSxHQUFXLEdBQUcsQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLElBQUksZUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDeEQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixJQUFJLEVBQUUsR0FBVyxHQUFHLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsSUFBSSxFQUFFLEdBQVcsR0FBRyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLGVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJOIGZyb20gXCJibi5qc1wiO1xuaW1wb3J0IHtCdWZmZXJ9IGZyb20gXCJidWZmZXIvXCI7XG5pbXBvcnQgQmluVG9vbHMgZnJvbSAnc3JjL3V0aWxzL2JpbnRvb2xzJztcbmltcG9ydCB7IE91dHB1dCwgU2VjcE91dHB1dCwgU2VsZWN0T3V0cHV0Q2xhc3MgfSBmcm9tICdzcmMvYXBpcy9hdm0vb3V0cHV0cyc7XG5cbmNvbnN0IGJpbnRvb2xzID0gQmluVG9vbHMuZ2V0SW5zdGFuY2UoKTtcblxuZGVzY3JpYmUoJ091dHB1dHMnLCAoKSA9PiB7XG4gICAgbGV0IGFzc2V0SUQ6c3RyaW5nID0gXCI4YTVkMmQzMmU2OGJjNTAwMzZlNGQwODYwNDQ2MTdmZTRhMGEwMjk2YjI3NDk5OWJhNTY4ZWE5MmRhNDZkNTMzXCI7XG4gICAgbGV0IGFzc2V0SURCdWZmOkJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGFzc2V0SUQsIFwiaGV4XCIpO1xuICAgIGxldCBhZGRyczpBcnJheTxCdWZmZXI+ID0gW1xuICAgICAgICBiaW50b29scy5hdmFEZXNlcmlhbGl6ZShcIkI2RDR2MVZ0UFlMYmlVdllYdFc0UHg4b0U5aW1DMnZHV1wiKSxcbiAgICAgICAgYmludG9vbHMuYXZhRGVzZXJpYWxpemUoXCJQNXdkUnVaZWFEdDI4ZUhNUDVTM3c5WmRvQmZvN3d1ekZcIiksXG4gICAgICAgIGJpbnRvb2xzLmF2YURlc2VyaWFsaXplKFwiNlkza3lzakY5am5IbllrZFM5eUdBdW9IeWFlMmVObWVWXCIpXG4gICAgXS5zb3J0KCk7XG5cbiAgICBsZXQgbG9ja3RpbWU6Qk4gPSBuZXcgQk4oNTQzMjEpO1xuICAgIGxldCBhZGRycGF5ID0gW2FkZHJzWzBdLCBhZGRyc1sxXV07XG4gICAgbGV0IGFkZHJmYWxsID0gW2FkZHJzWzFdLCBhZGRyc1syXV07XG4gICAgbGV0IGZhbGxMb2NrdGltZTpCTiA9IGxvY2t0aW1lLmFkZChuZXcgQk4oNTApKTtcblxuICAgIHRlc3QoJ1NlbGVjdE91dHB1dENsYXNzJywgKCkgPT4ge1xuICAgICAgICBsZXQgZ29vZG91dDpTZWNwT3V0cHV0ID0gbmV3IFNlY3BPdXRwdXQoYXNzZXRJREJ1ZmYsIG5ldyBCTigyNjAwKSwgYWRkcnBheSwgbG9ja3RpbWUsIDEpO1xuICAgICAgICBsZXQgYmFkb3V0YnVmZjpCdWZmZXIgPSBiaW50b29scy5jb3B5RnJvbShnb29kb3V0LnRvQnVmZmVyKCkpO1xuICAgICAgICBiYWRvdXRidWZmLndyaXRlKFwiMDAwMDAwOTlcIiwgMzIsIDQsIFwiaGV4XCIpO1xuICAgICAgICBsZXQgb3V0cGF5bWVudDpPdXRwdXQgPSBTZWxlY3RPdXRwdXRDbGFzcyhnb29kb3V0LnRvQnVmZmVyKCkpO1xuICAgICAgICBleHBlY3Qob3V0cGF5bWVudCkudG9CZUluc3RhbmNlT2YoU2VjcE91dHB1dCk7XG4gICAgICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICAgICAgICBTZWxlY3RPdXRwdXRDbGFzcyhiYWRvdXRidWZmKTtcbiAgICAgICAgfSkudG9UaHJvdyhcIkVycm9yIC0gU2VsZWN0T3V0cHV0Q2xhc3M6IHVua25vd24gb3V0cHV0aWRcIik7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdjb21wYXJhdG9yJywgKCkgPT4ge1xuICAgICAgICBsZXQgb3V0cGF5bWVudDE6T3V0cHV0ID0gbmV3IFNlY3BPdXRwdXQoYXNzZXRJREJ1ZmYsIG5ldyBCTigxMDAwMCksIGFkZHJzLCBsb2NrdGltZSwgMyk7XG4gICAgICAgIGxldCBvdXRwYXltZW50MjpPdXRwdXQgPSBuZXcgU2VjcE91dHB1dChhc3NldElEQnVmZiwgbmV3IEJOKDEwMDAxKSwgYWRkcnMsIGxvY2t0aW1lLCAzKTtcbiAgICAgICAgbGV0IG91dHBheW1lbnQzOk91dHB1dCA9IG5ldyBTZWNwT3V0cHV0KGFzc2V0SURCdWZmLCBuZXcgQk4oOTk5OSksIGFkZHJzLCBsb2NrdGltZSwgMyk7XG4gICAgICAgIGxldCBjbXAgPSBPdXRwdXQuY29tcGFyYXRvcigpO1xuICAgICAgICBleHBlY3QoY21wKG91dHBheW1lbnQxLCBvdXRwYXltZW50MSkpLnRvQmUoMCk7XG4gICAgICAgIGV4cGVjdChjbXAob3V0cGF5bWVudDIsIG91dHBheW1lbnQyKSkudG9CZSgwKTtcbiAgICAgICAgZXhwZWN0KGNtcChvdXRwYXltZW50Mywgb3V0cGF5bWVudDMpKS50b0JlKDApO1xuICAgICAgICBleHBlY3QoY21wKG91dHBheW1lbnQxLCBvdXRwYXltZW50MikpLnRvQmUoLTEpO1xuICAgICAgICBleHBlY3QoY21wKG91dHBheW1lbnQxLCBvdXRwYXltZW50MykpLnRvQmUoMSk7XG4gICAgfSk7XG4gICAgdGVzdCgnT3V0UGF5bWVudCcsICgpID0+IHtcbiAgICAgICAgbGV0IG91dDpTZWNwT3V0cHV0ID0gbmV3IFNlY3BPdXRwdXQoYXNzZXRJREJ1ZmYsIG5ldyBCTigxMDAwMCksIGFkZHJzLCBsb2NrdGltZSwgMyk7XG4gICAgICAgIGV4cGVjdChvdXQuZ2V0T3V0cHV0SUQoKSkudG9CZSg3KTtcbiAgICAgICAgZXhwZWN0KEpTT04uc3RyaW5naWZ5KG91dC5nZXRBZGRyZXNzZXMoKS5zb3J0KCkpKS50b1N0cmljdEVxdWFsKEpTT04uc3RyaW5naWZ5KGFkZHJzLnNvcnQoKSkpO1xuXG4gICAgICAgIGV4cGVjdChvdXQuZ2V0VGhyZXNob2xkKCkpLnRvQmUoMyk7XG4gICAgICAgIGV4cGVjdChvdXQuZ2V0TG9ja3RpbWUoKS50b051bWJlcigpKS50b0JlKGxvY2t0aW1lLnRvTnVtYmVyKCkpO1xuXG4gICAgICAgIGV4cGVjdChvdXQuZ2V0QXNzZXRJRCgpLnRvU3RyaW5nKFwiaGV4XCIpKS50b0JlKGFzc2V0SUQpO1xuXG4gICAgICAgIGxldCByID0gb3V0LmdldEFkZHJlc3NJZHgoYWRkcnNbMl0pO1xuICAgICAgICBleHBlY3Qob3V0LmdldEFkZHJlc3MocikpLnRvU3RyaWN0RXF1YWwoYWRkcnNbMl0pO1xuICAgICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICAgICAgb3V0LmdldEFkZHJlc3MoNDAwKVxuICAgICAgICB9KS50b1Rocm93KCk7XG5cbiAgICAgICAgZXhwZWN0KG91dC5nZXRBbW91bnQoKS50b051bWJlcigpKS50b0JlKDEwMDAwKTtcblxuICAgICAgICBsZXQgYjpCdWZmZXIgPSBvdXQudG9CdWZmZXIoKTtcbiAgICAgICAgZXhwZWN0KG91dC50b1N0cmluZygpKS50b0JlKGJpbnRvb2xzLmJ1ZmZlclRvQjU4KGIpKTtcblxuICAgICAgICBsZXQgczpBcnJheTxCdWZmZXI+ID0gb3V0LmdldFNwZW5kZXJzKGFkZHJzKTtcbiAgICAgICAgZXhwZWN0KEpTT04uc3RyaW5naWZ5KHMuc29ydCgpKSkudG9CZShKU09OLnN0cmluZ2lmeShhZGRycy5zb3J0KCkpKTtcblxuICAgICAgICBsZXQgbTE6Ym9vbGVhbiA9IG91dC5tZWV0c1RocmVzaG9sZChbYWRkcnNbMF1dKTtcbiAgICAgICAgZXhwZWN0KG0xKS50b0JlKGZhbHNlKTtcbiAgICAgICAgbGV0IG0yOmJvb2xlYW4gPSBvdXQubWVldHNUaHJlc2hvbGQoYWRkcnMsIG5ldyBCTigxMDApKTtcbiAgICAgICAgZXhwZWN0KG0yKS50b0JlKGZhbHNlKTtcbiAgICAgICAgbGV0IG0zOmJvb2xlYW4gPSBvdXQubWVldHNUaHJlc2hvbGQoYWRkcnMpO1xuICAgICAgICBleHBlY3QobTMpLnRvQmUodHJ1ZSk7XG4gICAgICAgIGxldCBtNDpib29sZWFuID0gb3V0Lm1lZXRzVGhyZXNob2xkKGFkZHJzLCBsb2NrdGltZS5hZGQobmV3IEJOKDEwMCkpKTtcbiAgICAgICAgZXhwZWN0KG00KS50b0JlKHRydWUpO1xuICAgIH0pO1xufSk7Il19

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc