@bitgo-beta/sdk-coin-sol 7.6.4-beta.700 → 7.6.4-beta.702

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -43,6 +43,8 @@ const should = __importStar(require("should"));
43
43
  const sinon = __importStar(require("sinon"));
44
44
  const spl_token_1 = require("@solana/spl-token");
45
45
  const web3_js_1 = require("@solana/web3.js");
46
+ const base58 = __importStar(require("bs58"));
47
+ const nacl = __importStar(require("tweetnacl"));
46
48
  const sdk_api_1 = require("@bitgo-beta/sdk-api");
47
49
  const sdk_core_1 = require("@bitgo-beta/sdk-core");
48
50
  const sdk_lib_mpc_1 = require("@bitgo-beta/sdk-lib-mpc");
@@ -1915,12 +1917,73 @@ describe('SOL:', function () {
1915
1917
  .toString('base64')
1916
1918
  .should.equal('s+7d/8aW/twfM/0wLSKOGxd9+LhDIiz/g0FfJ39ylJhQIkjK0RYPm/Y+gdeJ5DIy6K6h6gCXXESDomlv12DBBQ==');
1917
1919
  });
1920
+ it('should sign string as its UTF-8 bytes', async function () {
1921
+ const message = 'hello from solana';
1922
+ const signed = await basecoin.signMessage(keypair, message);
1923
+ const pub = new web3_js_1.PublicKey(keypair.pub).toBytes();
1924
+ nacl.sign.detached
1925
+ .verify(new Uint8Array(Buffer.from(message, 'utf8')), new Uint8Array(signed), pub)
1926
+ .should.be.true();
1927
+ });
1928
+ it('should sign buffer bytes exactly, never their base58 rendering', async function () {
1929
+ const message = Buffer.from('hello from solana', 'utf8');
1930
+ const signed = await basecoin.signMessage(keypair, message);
1931
+ const pub = new web3_js_1.PublicKey(keypair.pub).toBytes();
1932
+ nacl.sign.detached.verify(new Uint8Array(message), new Uint8Array(signed), pub).should.be.true();
1933
+ const base58StringBytes = Buffer.from(base58.encode(message), 'utf8');
1934
+ nacl.sign.detached.verify(new Uint8Array(base58StringBytes), new Uint8Array(signed), pub).should.be.false();
1935
+ });
1918
1936
  it('shouldnt sign message when message is undefined', async function () {
1919
1937
  await basecoin
1920
1938
  .signMessage(keypair, undefined)
1921
1939
  .should.be.rejectedWith('The first argument must be of type string or an instance of Buffer, ArrayBuffer, or Array or an Array-like Object. Received undefined');
1922
1940
  });
1923
1941
  });
1942
+ describe('Validate signable message', () => {
1943
+ const validMessage = {
1944
+ messageRaw: 'hello from solana',
1945
+ messageStandardType: sdk_core_1.MessageStandardType.SIMPLE,
1946
+ signerAddress: keypair.pub,
1947
+ };
1948
+ it('should accept a valid SIMPLE message', function () {
1949
+ (() => basecoin.validateSignableMessage(validMessage)).should.not.throw();
1950
+ });
1951
+ it('should accept messageRaw of exactly MAX_SOL_MESSAGE_BYTES', function () {
1952
+ (() => basecoin.validateSignableMessage({
1953
+ ...validMessage,
1954
+ messageRaw: 'a'.repeat(sdk_core_1.MAX_SOL_MESSAGE_BYTES),
1955
+ })).should.not.throw();
1956
+ });
1957
+ it('should reject empty messageRaw', function () {
1958
+ (() => basecoin.validateSignableMessage({ ...validMessage, messageRaw: '' })).should.throw(/messageRaw is required to sign a SOL message/);
1959
+ });
1960
+ it('should reject messageRaw over MAX_SOL_MESSAGE_BYTES', function () {
1961
+ (() => basecoin.validateSignableMessage({
1962
+ ...validMessage,
1963
+ messageRaw: 'a'.repeat(sdk_core_1.MAX_SOL_MESSAGE_BYTES + 1),
1964
+ })).should.throw(/SOL message exceeds maximum size/);
1965
+ });
1966
+ it('should measure messageRaw in UTF-8 bytes, not characters', function () {
1967
+ const twoByteChars = 'é';
1968
+ (() => basecoin.validateSignableMessage({
1969
+ ...validMessage,
1970
+ messageRaw: twoByteChars.repeat(sdk_core_1.MAX_SOL_MESSAGE_BYTES),
1971
+ })).should.throw(/SOL message exceeds maximum size/);
1972
+ (() => basecoin.validateSignableMessage({
1973
+ ...validMessage,
1974
+ messageRaw: twoByteChars.repeat(sdk_core_1.MAX_SOL_MESSAGE_BYTES / 2),
1975
+ })).should.not.throw();
1976
+ });
1977
+ it('should reject non-SIMPLE message standards', function () {
1978
+ (() => basecoin.validateSignableMessage({
1979
+ ...validMessage,
1980
+ messageStandardType: sdk_core_1.MessageStandardType.EIP191,
1981
+ })).should.throw(/SOL message signing supports only the SIMPLE standard/);
1982
+ });
1983
+ it('should reject missing signerAddress', function () {
1984
+ (() => basecoin.validateSignableMessage({ ...validMessage, signerAddress: undefined })).should.throw(/signerAddress is required to sign a SOL message/);
1985
+ });
1986
+ });
1924
1987
  describe('Get Signing Payload', () => {
1925
1988
  it('should return a valid signing payload', async function () {
1926
1989
  const factory = (0, getBuilderFactory_1.getBuilderFactory)(basecoin.getChain());
@@ -4896,4 +4959,4 @@ describe('SOL:', function () {
4896
4959
  });
4897
4960
  });
4898
4961
  });
4899
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3NvbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QiwwQ0FBNEI7QUFDNUIsZ0RBQXdCO0FBQ3hCLCtDQUFpQztBQUNqQyw2Q0FBK0I7QUFFL0IsaURBQXdHO0FBQ3hHLDZDQUEyRDtBQUUzRCxpREFBd0Q7QUFDeEQsbURBaUI4QjtBQUM5Qix5REFBa0Q7QUFDbEQsbURBQStEO0FBQy9ELGlEQUE0QztBQUM1QyxtQ0FRbUI7QUFDbkIsdUNBQTRDO0FBRTVDLHVEQUtpQztBQUNqQywrQ0FBdUU7QUFDdkUsMERBQTRDO0FBQzVDLDREQUE4QztBQUM5QywwREFBdUQ7QUFDdkQsMkRBQXdEO0FBRXhELFFBQVEsQ0FBQyxNQUFNLEVBQUU7SUFDZixJQUFJLEtBQW1CLENBQUM7SUFDeEIsSUFBSSxRQUFhLENBQUM7SUFDbEIsSUFBSSxPQUFPLENBQUM7SUFDWixJQUFJLGFBQWEsQ0FBQztJQUNsQixJQUFJLDBCQUEwQixDQUFDO0lBQy9CLElBQUksV0FBVyxDQUFDO0lBQ2hCLElBQUksb0JBQW9CLENBQUM7SUFDekIsSUFBSSx3QkFBd0IsQ0FBQztJQUM3QixJQUFJLHdCQUF3QixDQUFDO0lBQzdCLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUM7SUFDMUQsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUM7SUFFekQsTUFBTSxPQUFPLEdBQUc7UUFDZCxHQUFHLEVBQUUsU0FBUyxDQUFDLGVBQWUsQ0FBQyxTQUFTO1FBQ3hDLEdBQUcsRUFBRSxTQUFTLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxNQUFNO0tBQ2pELENBQUM7SUFDRixNQUFNLFVBQVUsR0FBRztRQUNqQixVQUFVLEVBQUU7WUFDVjtnQkFDRSxPQUFPLEVBQUUsY0FBYztnQkFDdkIsTUFBTSxFQUFFLE1BQU07YUFDZjtTQUNGO1FBQ0QsUUFBUSxFQUFFLFNBQVMsQ0FBQyxnREFBZ0Q7UUFDcEUsTUFBTSxFQUFFO1lBQ04sUUFBUSxFQUFFLDhDQUE4QztZQUN4RCxLQUFLLEVBQUUsOENBQThDO1NBQ3REO1FBQ0QsSUFBSSxFQUFFLGtFQUFrRTtRQUN4RSxtQkFBbUIsRUFBRSxLQUFLO1FBQzFCLElBQUksRUFBRSxNQUFNO0tBQ2IsQ0FBQztJQUNGLE1BQU0sUUFBUSxHQUFHO1FBQ2YsVUFBVTtRQUNWLFVBQVUsRUFBRTtZQUNWO2dCQUNFLE9BQU8sRUFBRSw4Q0FBOEM7Z0JBQ3ZELE1BQU0sRUFBRSxRQUFRO2FBQ2pCO1NBQ0Y7S0FDRixDQUFDO0lBQ0YsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDcEMsTUFBTSxZQUFZLEdBQUc7UUFDbkIsa0JBQWtCLEVBQUUsOENBQThDO1FBQ2xFLGlCQUFpQixFQUFFLDhDQUE4QztLQUNsRSxDQUFDO0lBQ0YsTUFBTSxpQkFBaUIsR0FBRztRQUN4QixrQkFBa0IsRUFBRSw0Q0FBNEM7UUFDaEUsaUJBQWlCLEVBQUUsOENBQThDO0tBQ2xFLENBQUM7SUFDRixNQUFNLGlCQUFpQixHQUFHO1FBQ3hCLFVBQVU7UUFDVixVQUFVLEVBQUU7WUFDVjtnQkFDRSxPQUFPLEVBQUUsMkNBQTJDO2dCQUNwRCxNQUFNLEVBQUUsUUFBUTthQUNqQjtTQUNGO0tBQ0YsQ0FBQztJQUNGLE1BQU0scUJBQXFCLEdBQUc7UUFDNUIsVUFBVTtRQUNWLFVBQVUsRUFBRTtZQUNWO2dCQUNFLE9BQU8sRUFBRSw4Q0FBOEM7Z0JBQ3ZELE1BQU0sRUFBRSxRQUFRO2dCQUNoQixJQUFJLEVBQUUsU0FBUzthQUNoQjtTQUNGO0tBQ0YsQ0FBQztJQUNGLE1BQU0sdUJBQXVCLEdBQUc7UUFDOUIsVUFBVSxFQUFFO1lBQ1Y7Z0JBQ0UsT0FBTyxFQUFFLDhDQUE4QztnQkFDdkQsTUFBTSxFQUFFLEdBQUc7YUFDWjtTQUNGO1FBQ0QsS0FBSyxFQUFFLFNBQVMsQ0FBQyx3Q0FBd0M7UUFDekQsTUFBTSxFQUFFO1lBQ04sUUFBUSxFQUFFLDhDQUE4QztZQUN4RCxLQUFLLEVBQUUsOENBQThDO1NBQ3REO1FBQ0QsSUFBSSxFQUFFLGtFQUFrRTtRQUN4RSxtQkFBbUIsRUFBRSxLQUFLO1FBQzFCLElBQUksRUFBRSxNQUFNO0tBQ2IsQ0FBQztJQUNGLE1BQU0scUJBQXFCLEdBQUc7UUFDNUIsVUFBVTtRQUNWLFVBQVUsRUFBRTtZQUNWO2dCQUNFLE9BQU8sRUFBRSw4Q0FBOEM7Z0JBQ3ZELE1BQU0sRUFBRSxHQUFHO2FBQ1o7U0FDRjtLQUNGLENBQUM7SUFDRixNQUFNLFNBQVMsR0FBRyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO0lBQzlDLE1BQU0sYUFBYSxHQUFHLDhDQUE4QyxDQUFDO0lBQ3JFLE1BQU0sT0FBTyxHQUFHLElBQUEscUNBQWlCLEVBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxhQUFPLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzVELE1BQU0sWUFBWSxHQUFHLElBQUksYUFBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuRSxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQztJQUN2QixNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDO0lBRXRDLE1BQU0sQ0FBQztRQUNMLEtBQUssR0FBRyxvQkFBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDdEQsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsVUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQy9DLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFVBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNoRCxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMzQixRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQVMsQ0FBQztRQUN0QyxPQUFPLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25FLGFBQWEsR0FBRyxHQUFHLEVBQUU7WUFDbkIsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQztRQUNGLDBCQUEwQixHQUFHLEdBQUcsRUFBRTtZQUNoQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUM7UUFDRixXQUFXLEdBQUcsR0FBRyxFQUFFO1lBQ2pCLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUM7UUFDRixvQkFBb0IsR0FBRyxHQUFHLEVBQUU7WUFDMUIsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFDO1FBQ0Ysd0JBQXdCLEdBQUcsR0FBRyxFQUFFO1lBQzlCLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQztRQUNGLHdCQUF3QixHQUFHLEdBQUcsRUFBRTtZQUM5QixPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw2QkFBNkIsRUFBRSxLQUFLO1FBQ3JDLElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFJLENBQUMsQ0FBQztRQUU1QyxhQUFhLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQUcsQ0FBQyxDQUFDO0lBQzdDLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLGdCQUFnQixFQUFFO1FBQ3pCLE1BQU0sa0JBQWtCLEdBQ3RCLDRGQUE0RixDQUFDO1FBRS9GLEVBQUUsQ0FBQyxrQ0FBa0MsRUFBRTtZQUNyQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7Z0JBQ2pCLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ2xFLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGtEQUFrRCxFQUFFO1lBQ3JELGdCQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRTtnQkFDdkIsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDN0YsQ0FBQyxDQUFDLENBQUM7WUFDSCxnQkFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUU7Z0JBQ3ZCLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzNGLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsNERBQTRELEVBQUU7WUFDL0QsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO2dCQUNqQixRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUM5RixDQUFDLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxxQkFBcUIsRUFBRTtZQUN4QixnQkFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUU7Z0JBQ3ZCLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ3BFLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw2QkFBNkIsRUFBRTtRQUNoQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3RELFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BELENBQUMsQ0FBQyxDQUFDO0lBQ0gsUUFBUSxDQUFDLHFCQUFxQixFQUFFLEdBQUcsRUFBRTtRQUNuQyxNQUFNLFVBQVUsR0FBRztZQUNqQixFQUFFLEVBQUUsa0NBQWtDO1lBQ3RDLElBQUksRUFBRSxNQUFNO1lBQ1osSUFBSSxFQUFFO2dCQUNKLGtDQUFrQztnQkFDbEMsa0NBQWtDO2dCQUNsQyxrQ0FBa0M7YUFDbkM7WUFDRCxZQUFZLEVBQUU7Z0JBQ1osV0FBVyxFQUFFLE1BQU0sQ0FBQyxHQUFHO2FBQ3hCO1lBQ0QsWUFBWSxFQUFFLEtBQUs7U0FDcEIsQ0FBQztRQUNGLE1BQU0sU0FBUyxHQUFHLElBQUksaUJBQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRTFELEVBQUUsQ0FBQyw0QkFBNEIsRUFBRSxLQUFLO1lBQ3BDLE1BQU0sUUFBUSxHQUFHLFdBQVcsRUFBRSxDQUFDO1lBQy9CLE1BQU0sVUFBVSxHQUFHLGFBQWEsRUFBRSxDQUFDO1lBQ25DLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxRQUFRLENBQUMsaUJBQWlCLENBQUM7Z0JBQ3hELFFBQVE7Z0JBQ1IsVUFBVTtnQkFDVixJQUFJO2dCQUNKLFlBQVk7Z0JBQ1osTUFBTSxFQUFFLFNBQVM7YUFDWCxDQUFDLENBQUM7WUFDVixnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHVDQUF1QyxFQUFFLEtBQUs7WUFDL0MsTUFBTSxRQUFRLEdBQUcsV0FBVyxFQUFFLENBQUM7WUFDL0IsTUFBTSxVQUFVLEdBQUcsYUFBYSxFQUFFLENBQUM7WUFDbkMsVUFBVSxDQUFDLGFBQWEsR0FBRyxlQUFlLENBQUM7WUFFM0MsTUFBTSxVQUFVLEdBQUc7Z0JBQ2pCLEVBQUUsRUFBRSxrQ0FBa0M7Z0JBQ3RDLElBQUksRUFBRSxNQUFNO2dCQUNaLElBQUksRUFBRTtvQkFDSixrQ0FBa0M7b0JBQ2xDLGtDQUFrQztvQkFDbEMsa0NBQWtDO2lCQUNuQztnQkFDRCxZQUFZLEVBQUU7b0JBQ1osV0FBVyxFQUFFLFlBQVksQ0FBQyxHQUFHO2lCQUM5QjtnQkFDRCxZQUFZLEVBQUUsS0FBSzthQUNwQixDQUFDO1lBQ0YsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLGlCQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUUzRSxNQUFNLGdCQUFnQixHQUFHLE1BQU0sUUFBUSxDQUFDLGlCQUFpQixDQUFDO2dCQUN4RCxRQUFRO2dCQUNSLFVBQVU7Z0JBQ1YsSUFBSTtnQkFDSixZQUFZO2dCQUNaLE1BQU0sRUFBRSwwQkFBMEI7YUFDNUIsQ0FBQyxDQUFDO1lBQ1YsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxrREFBa0QsRUFBRSxLQUFLO1lBQzFELE1BQU0sUUFBUSxHQUFHLFdBQVcsRUFBRSxDQUFDO1lBQy9CLE1BQU0sVUFBVSxHQUFHLGFBQWEsRUFBRSxDQUFDO1lBQ25DLFVBQVUsQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUN2QyxVQUFVLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztZQUNoQyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sUUFBUSxDQUFDLGlCQUFpQixDQUFDO2dCQUN4RCxRQUFRO2dCQUNSLFVBQVU7Z0JBQ1YsSUFBSTtnQkFDSixZQUFZO2dCQUNaLE1BQU0sRUFBRSxTQUFTO2FBQ1gsQ0FBQyxDQUFDO1lBQ1YsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxnREFBZ0QsRUFBRSxLQUFLO1lBQ3hELE1BQU0sUUFBUSxHQUFHLFdBQVcsRUFBRSxDQUFDO1lBQy9CLE1BQU0sVUFBVSxHQUFHLGFBQWEsRUFBRSxDQUFDO1lBQ25DLFVBQVUsQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqRixNQUFNLGdCQUFnQixHQUFHLE1BQU0sUUFBUSxDQUFDLGlCQUFpQixDQUFDO2dCQUN4RCxRQUFRO2dCQUNSLFVBQVU7Z0JBQ1YsSUFBSTtnQkFDSixZQUFZO2dCQUNaLE1BQU0sRUFBRSxTQUFTO2FBQ1gsQ0FBQyxDQUFDO1lBQ1YsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxpREFBaUQsRUFBRSxLQUFLO1lBQ3pELE1BQU0sUUFBUSxHQUFHLFdBQVcsRUFBRSxDQUFDO1lBQy9CLFFBQVEsQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1lBQ2hDLE1BQU0sVUFBVSxHQUFHLGFBQWEsRUFBRSxDQUFDO1lBQ25DLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxRQUFRLENBQUMsaUJBQWlCLENBQUM7Z0JBQ3hELFFBQVE7Z0JBQ1IsVUFBVTtnQkFDVixJQUFJO2dCQUNKLFlBQVk7Z0JBQ1osTUFBTSxFQUFFLFNBQVM7YUFDWCxDQUFDLENBQUM7WUFDVixnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDZGQUE2RixFQUFFLEtBQUs7WUFDckcsTUFBTSxXQUFXLEdBQUcsSUFBSSxhQUFPLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxhQUFPLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3ZFLE1BQU0sWUFBWSxHQUFHLElBQUksYUFBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNuRSxNQUFNLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUM7WUFDekMsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQztZQUVyQyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQztZQUM3RCxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzNCLFNBQVMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEYsU0FBUyxDQUFDLHNCQUFzQixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoRixNQUFNLEtBQUssR0FBRyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0QyxNQUFNLFVBQVUsR0FBRztnQkFDakIsUUFBUSxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsRUFBRTtnQkFDbkMsTUFBTSxFQUFFO29CQUNOLFFBQVEsRUFBRSxXQUFXLENBQUMsR0FBRztvQkFDekIsS0FBSyxFQUFFLFNBQVM7aUJBQ2pCO2dCQUNELElBQUksRUFBRSxNQUFNO2FBQ2IsQ0FBQztZQUVGLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxRQUFRLENBQUMsaUJBQWlCLENBQUM7Z0JBQ3hELFFBQVEsRUFBRTtvQkFDUixVQUFVLEVBQUU7d0JBQ1YsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUU7d0JBQ3JDLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFO3FCQUN0QztpQkFDRjtnQkFDRCxVQUFVO2dCQUNWLE1BQU0sRUFBRSxTQUFTO2FBQ1gsQ0FBQyxDQUFDO1lBQ1YsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw0RkFBNEYsRUFBRSxLQUFLO1lBQ3BHLE1BQU0sV0FBVyxHQUFHLElBQUksYUFBTyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqRSxNQUFNLGdCQUFnQixHQUFHLElBQUksYUFBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN2RSxNQUFNLFlBQVksR0FBRyxJQUFJLGFBQU8sQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbkUsTUFBTSxRQUFRLEdBQUcsSUFBSSxhQUFPLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQztZQUNuRSxNQUFNLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUM7WUFDekMsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQztZQUVyQyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQztZQUM3RCxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzNCLFNBQVMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEYsU0FBUyxDQUFDLHNCQUFzQixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoRixNQUFNLEtBQUssR0FBRyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0QyxNQUFNLFVBQVUsR0FBRztnQkFDakIsUUFBUSxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsRUFBRTtnQkFDbkMsTUFBTSxFQUFFO29CQUNOLFFBQVEsRUFBRSxXQUFXLENBQUMsR0FBRztvQkFDekIsS0FBSyxFQUFFLFNBQVM7aUJBQ2pCO2dCQUNELElBQUksRUFBRSxNQUFNO2FBQ2IsQ0FBQztZQUVGLE1BQU0sUUFBUTtpQkFDWCxpQkFBaUIsQ0FBQztnQkFDakIsUUFBUSxFQUFFO29CQUNSLFVBQVUsRUFBRTt3QkFDVixFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRTt3QkFDckMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUU7cUJBQ25DO2lCQUNGO2dCQUNELFVBQVU7Z0JBQ1YsTUFBTSxFQUFFLFNBQVM7YUFDWCxDQUFDO2lCQUNSLE1BQU0sQ0FBQyxZQUFZLENBQ2xCLDhHQUE4RyxDQUMvRyxDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsdUVBQXVFLEVBQUUsS0FBSztZQUMvRSxNQUFNLFdBQVcsR0FBRyxJQUFJLGFBQU8sQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGFBQU8sQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkUsTUFBTSxZQUFZLEdBQUcsSUFBSSxhQUFPLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25FLE1BQU0sV0FBVyxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQztZQUN6QyxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDO1lBRXJDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO1lBQzdELFNBQVMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDM0IsU0FBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbEMsU0FBUyxDQUFDLHNCQUFzQixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoRixTQUFTLENBQUMsc0JBQXNCLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2hGLE1BQU0sS0FBSyxHQUFHLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3RDLE1BQU0sVUFBVSxHQUFHO2dCQUNqQixRQUFRLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixFQUFFO2dCQUNuQyxNQUFNLEVBQUU7b0JBQ04sUUFBUSxFQUFFLFdBQVcsQ0FBQyxHQUFHO29CQUN6QixLQUFLLEVBQUUsU0FBUztpQkFDakI7Z0JBQ0QsSUFBSSxFQUFFLE1BQU07YUFDYixDQUFDO1lBRUYsTUFBTSxRQUFRO2lCQUNYLGlCQUFpQixDQUFDO2dCQUNqQixRQUFRLEVBQUU7b0JBQ1IsVUFBVSxFQUFFO3dCQUNWLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFO3dCQUNyQyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRTtxQkFDdEM7aUJBQ0Y7Z0JBQ0QsVUFBVTtnQkFDVixNQUFNLEVBQUUsU0FBUzthQUNYLENBQUM7aUJBQ1IsTUFBTSxDQUFDLFlBQVksQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1FBQ3ZFLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGlFQUFpRSxFQUFFLEtBQUs7WUFDekUsTUFBTSxXQUFXLEdBQUcsSUFBSSxhQUFPLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxhQUFPLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3ZFLE1BQU0sWUFBWSxHQUFHLElBQUksYUFBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNuRSxNQUFNLElBQUksR0FBRyw4Q0FBOEMsQ0FBQztZQUU1RCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztZQUN2RCxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzNCLFNBQVMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xDLFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3BDLFNBQVMsQ0FBQywwQkFBMEIsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNoRCxTQUFTLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckQsU0FBUyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xDLFNBQVMsQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEQsU0FBUyxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoRCxTQUFTLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFekMsTUFBTSxLQUFLLEdBQUcsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdEMsTUFBTSxVQUFVLEdBQUc7Z0JBQ2pCLFFBQVEsRUFBRSxLQUFLLENBQUMsaUJBQWlCLEVBQUU7Z0JBQ25DLE1BQU0sRUFBRTtvQkFDTixRQUFRLEVBQUUsV0FBVyxDQUFDLEdBQUc7b0JBQ3pCLEtBQUssRUFBRSxTQUFTO2lCQUNqQjtnQkFDRCxJQUFJLEVBQUUsTUFBTTthQUNiLENBQUM7WUFFRixNQUFNLGdCQUFnQixHQUFHLE1BQU0sUUFBUSxDQUFDLGlCQUFpQixDQUFDO2dCQUN4RCxRQUFRLEVBQUUsRUFBRTtnQkFDWixVQUFVO2dCQUNWLE1BQU0sRUFBRSxTQUFTO2FBQ1gsQ0FBQyxDQUFDO1lBQ1YsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxnR0FBZ0csRUFBRSxLQUFLO1lBQ3hHLE1BQU0sV0FBVyxHQUFHLElBQUksYUFBTyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqRSxNQUFNLGdCQUFnQixHQUFHLElBQUksYUFBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN2RSxNQUFNLFlBQVksR0FBRyxJQUFJLGFBQU8sQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbkUsTUFBTSxJQUFJLEdBQUcsOENBQThDLENBQUM7WUFFNUQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDdkQsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMzQixTQUFTLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNsQyxTQUFTLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNwQyxTQUFTLENBQUMsMEJBQTBCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDaEQsU0FBUyxDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3JELFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQyxTQUFTLENBQUMseUJBQXlCLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3RELFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEQsU0FBUyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pDLFNBQVMsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRXpDLE1BQU0sS0FBSyxHQUFHLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3RDLE1BQU0sVUFBVSxHQUFHO2dCQUNqQixRQUFRLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixFQUFFO2dCQUNuQyxNQUFNLEVBQUU7b0JBQ04sUUFBUSxFQUFFLFdBQVcsQ0FBQyxHQUFHO29CQUN6QixLQUFLLEVBQUUsU0FBUztpQkFDakI7Z0JBQ0QsSUFBSSxFQUFFLE1BQU07YUFDYixDQUFDO1lBRUYsTUFBTSxtQkFBbUIsR0FBRztnQkFDMUIsRUFBRSxFQUFFLGtDQUFrQztnQkFDdEMsSUFBSSxFQUFFLE1BQU07Z0JBQ1osSUFBSSxFQUFFO29CQUNKLGtDQUFrQztvQkFDbEMsa0NBQWtDO29CQUNsQyxrQ0FBa0M7aUJBQ25DO2dCQUNELFlBQVksRUFBRTtvQkFDWixXQUFXLEVBQUUsWUFBWSxDQUFDLEdBQUc7aUJBQzlCO2dCQUNELFlBQVksRUFBRSxLQUFLO2FBQ3BCLENBQUM7WUFDRixNQUFNLGVBQWUsR0FBRyxJQUFJLGlCQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1lBRXpFLE1BQU0sUUFBUTtpQkFDWCxpQkFBaUIsQ0FBQztnQkFDakIsUUFBUSxFQUFFLEVBQUU7Z0JBQ1osVUFBVTtnQkFDVixNQUFNLEVBQUUsZUFBZTthQUNqQixDQUFDO2lCQUNSLE1BQU0sQ0FBQyxZQUFZLENBQUMsMkRBQTJELENBQUMsQ0FBQztRQUN0RixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQywwREFBMEQsRUFBRSxLQUFLO1lBQ2xFLE1BQU0sUUFBUSxHQUFHLFdBQVcsRUFBRSxDQUFDO1lBQy9CLE1BQU0sVUFBVSxHQUFHLGFBQWEsRUFBRSxDQUFDO1lBQ25DLE1BQU0sUUFBUTtpQkFDWCxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFTLENBQUM7aUJBQ3RGLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLDhEQUE4RCxDQUFDLENBQUM7UUFDNUYsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsb0NBQW9DLEVBQUUsS0FBSztZQUM1QyxNQUFNLFVBQVUsR0FBRztnQkFDakIsRUFBRSxFQUFFLGtDQUFrQztnQkFDdEMsSUFBSSxFQUFFLE1BQU07Z0JBQ1osSUFBSSxFQUFFO29CQUNKLGtDQUFrQztvQkFDbEMsa0NBQWtDO29CQUNsQyxrQ0FBa0M7aUJBQ25DO2dCQUNELFlBQVksRUFBRTtvQkFDWixXQUFXLEVBQUUsOENBQThDO2lCQUM1RDtnQkFDRCxZQUFZLEVBQUUsS0FBSzthQUNwQixDQUFDO1lBQ0YsTUFBTSxTQUFTLEdBQUcsSUFBSSxpQkFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDMUQsTUFBTSxVQUFVLEdBQUc7Z0JBQ2pCLFVBQVUsRUFBRTtvQkFDVjt3QkFDRSxPQUFPLEVBQUUsa0NBQWtDO3dCQUMzQyxNQUFNLEVBQUUsWUFBWTt3QkFDcEIsU0FBUyxFQUFFLFdBQVc7cUJBQ3ZCO2lCQUNGO2dCQUNELFFBQVEsRUFDTix3cENBQXdwQztnQkFDMXBDLE1BQU0sRUFBRTtvQkFDTixRQUFRLEVBQUUsOENBQThDO29CQUN4RCxLQUFLLEVBQUUsOENBQThDO2lCQUN0RDtnQkFDRCxJQUFJLEVBQUUsa0VBQWtFO2dCQUN4RSxtQkFBbUIsRUFBRSxLQUFLO2dCQUMxQixJQUFJLEVBQUUsTUFBTTthQUNiLENBQUM7WUFDRixNQUFNLFFBQVEsR0FBRztnQkFDZixVQUFVO2dCQUNWLFVBQVUsRUFBRTtvQkFDVjt3QkFDRSxPQUFPLEVBQUUsa0NBQWtDO3dCQUMzQyxNQUFNLEVBQUUsWUFBWTt3QkFDcEIsU0FBUyxFQUFFLFdBQVc7cUJBQ3ZCO2lCQUNGO2FBQ0YsQ0FBQztZQUNGLE1BQU0sSUFBSSxHQUFHO2dCQUNYLEtBQUssRUFBRSxTQUFTO2FBQ2pCLENBQUM7WUFDRixNQUFNLGlCQUFpQixHQUFHLE1BQU0sUUFBUSxDQUFDLGlCQUFpQixDQUFDO2dCQUN6RCxRQUFRO2dCQUNSLFVBQVU7Z0JBQ1YsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsTUFBTSxFQUFFLFNBQVM7YUFDWCxDQUFDLENBQUM7WUFDVixpQkFBaUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGtFQUFrRSxFQUFFLEtBQUs7WUFDMUUsTUFBTSxRQUFRLEdBQUcsV0FBVyxFQUFFLENBQUM7WUFDL0IsTUFBTSxVQUFVLEdBQUcsYUFBYSxFQUFFLENBQUM7WUFDbkMsTUFBTSxRQUFRO2lCQUNYLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQVMsQ0FBQztpQkFDNUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsd0RBQXdELENBQUMsQ0FBQztRQUN0RixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw4REFBOEQsRUFBRSxLQUFLO1lBQ3RFLE1BQU0sUUFBUSxHQUFHLFdBQVcsRUFBRSxDQUFDO1lBQy9CLE1BQU0sVUFBVSxHQUFHLGFBQWEsRUFBRSxDQUFDO1lBQ25DLE1BQU0sVUFBVSxHQUFHO2dCQUNqQixFQUFFLEVBQUUsa0NBQWtDO2dCQUN0QyxJQUFJLEVBQUUsTUFBTTtnQkFDWixJQUFJLEVBQUU7b0JBQ0osa0NBQWtDO29CQUNsQyxrQ0FBa0M7b0JBQ2xDLGtDQUFrQztpQkFDbkM7Z0JBQ0QsWUFBWSxFQUFFO29CQUNaLFdBQVcsRUFBRSxZQUFZLENBQUMsR0FBRztpQkFDOUI7Z0JBQ0QsWUFBWSxFQUFFLEtBQUs7YUFDcEIsQ0FBQztZQUNGLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxpQkFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFFM0UsTUFBTSxRQUFRO2lCQUNYLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLDBCQUEwQixFQUFTLENBQUM7aUJBQzVGLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLDZDQUE2QyxDQUFDLENBQUM7UUFDM0UsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsZ0VBQWdFLEVBQUUsS0FBSztZQUN4RSxNQUFNLFFBQVEsR0FBRyxvQkFBb0IsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sVUFBVSxHQUFHLGFBQWEsRUFBRSxDQUFDO1lBQ25DLE1BQU0sUUFBUTtpQkFDWCxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFTLENBQUM7aUJBQzFGLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLDZEQUE2RCxDQUFDLENBQUM7UUFDM0YsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsMEVBQTBFLEVBQUUsS0FBSztZQUNsRixNQUFNLFFBQVEsR0FBRyx3QkFBd0IsRUFBRSxDQUFDO1lBQzVDLE1BQU0sT0FBTyxHQUFHLDhDQUE4QyxDQUFDLENBQUMscUJBQXFCO1lBQ3JGLFFBQVEsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ3pFLE1BQU0sVUFBVSxHQUFHLDBCQUEwQixFQUFFLENBQUM7WUFDaEQsTUFBTSxrQkFBa0IsR0FBRztnQkFDekIsRUFBRSxFQUFFLGtDQUFrQztnQkFDdEMsSUFBSSxFQUFFLE1BQU07Z0JBQ1osSUFBSSxFQUFFO29CQUNKLGtDQUFrQztvQkFDbEMsa0NBQWtDO29CQUNsQyxrQ0FBa0M7aUJBQ25DO2dCQUNELFlBQVksRUFBRTtvQkFDWixXQUFXLEVBQUUsOENBQThDO2lCQUM1RDtnQkFDRCxZQUFZLEVBQUUsS0FBSzthQUNwQixDQUFDO1lBQ0YsTUFBTSxjQUFjLEdBQUcsSUFBSSxpQkFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztZQUN2RSxNQUFNLGdCQUFnQixHQUFHLE1BQU0sUUFBUSxDQUFDLGlCQUFpQixDQUFDO2dCQUN4RCxRQUFRO2dCQUNSLFVBQVU7Z0JBQ1YsTUFBTSxFQUFFLGNBQWM7YUFDaEIsQ0FBQyxDQUFDO1lBQ1YsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQywrRUFBK0UsRUFBRSxLQUFLO1lBQ3ZGLE1BQU0sUUFBUSxHQUFHLHdCQUF3QixFQUFFLENBQUM7WUFDNUMsTUFBTSxPQUFPLEdBQUcsOENBQThDLENBQUMsQ0FBQyxxQkFBcUI7WUFDckYsUUFBUSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDNUUsTUFBTSxVQUFVLEdBQUcsMEJBQTBCLEVBQUUsQ0FBQztZQUNoRCxNQUFNLGtCQUFrQixHQUFHO2dCQUN6QixFQUFFLEVBQUUsa0NBQWtDO2dCQUN0QyxJQUFJLEVBQUUsTUFBTTtnQkFDWixJQUFJLEVBQUU7b0JBQ0osa0NBQWtDO29CQUNsQyxrQ0FBa0M7b0JBQ2xDLGtDQUFrQztpQkFDbkM7Z0JBQ0QsWUFBWSxFQUFFO29CQUNaLFdBQVcsRUFBRSw4Q0FBOEM7aUJBQzVEO2dCQUNELFlBQVksRUFBRSxLQUFLO2FBQ3BCLENBQUM7WUFDRixNQUFNLGNBQWMsR0FBRyxJQUFJLGlCQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3ZFLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxRQUFRLENBQUMsaUJBQWlCLENBQUM7Z0JBQ3hELFFBQVE7Z0JBQ1IsVUFBVTtnQkFDVixNQUFNLEVBQUUsY0FBYzthQUNoQixDQUFDLENBQUM7WUFDVixnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDRFQUE0RSxFQUFFLEtBQUs7WUFDcEYsTUFBTSxRQUFRLEdBQUcsd0JBQXdCLEVBQUUsQ0FBQztZQUM1QyxNQUFNLE9BQU8sR0FBRyw4Q0FBOEMsQ0FBQyxDQUFDLHFCQUFxQjtZQUNyRixRQUFRLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLGdEQUFnRDtZQUMxSCxNQUFNLFVBQVUsR0FBRywwQkFBMEIsRUFBRSxDQUFDO1lBQ2hELE1BQU0sUUFBUTtpQkFDWCxpQkFBaUIsQ0FBQztnQkFDakIsUUFBUTtnQkFDUixVQUFVO2dCQUNWLE1BQU0sRUFBRSxTQUFTO2FBQ1gsQ0FBQztpQkFDUixNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyw2REFBNkQsQ0FBQyxDQUFDO1FBQzNGLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDBFQUEwRSxFQUFFLEtBQUs7WUFDbEYsTUFBTSxRQUFRLEdBQUcsd0JBQXdCLEVBQUUsQ0FBQztZQUM1QyxNQUFNLE9BQU8sR0FBRyw4Q0FBOEMsQ0FBQyxDQUFDLHFCQUFxQjtZQUNyRixRQUFRLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUN6RSxNQUFNLFVBQVUsR0FBRywwQkFBMEIsRUFBRSxDQUFDO1lBQ2hELE1BQU0sUUFBUTtpQkFDWCxpQkFBaUIsQ0FBQztnQkFDakIsUUFBUTtnQkFDUixVQUFVO2dCQUNWLE1BQU0sRUFBRSxTQUFTO2FBQ1gsQ0FBQztpQkFDUixNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyw2REFBNkQsQ0FBQyxDQUFDO1FBQzNGLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHVFQUF1RSxFQUFFLEtBQUs7WUFDL0UsTUFBTSxRQUFRLEdBQUcsd0JBQXdCLEVBQUUsQ0FBQztZQUM1QyxNQUFNLE9BQU8sR0FBRyw4Q0FBOEMsQ0FBQyxDQUFDLG1EQUFtRDtZQUNuSCxRQUFRLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUN6RSxNQUFNLFVBQVUsR0FBRywwQkFBMEIsRUFBRSxDQUFDO1lBQ2hELE1BQU0sUUFBUTtpQkFDWCxpQkFBaUIsQ0FBQztnQkFDakIsUUFBUTtnQkFDUixVQUFVO2dCQUNWLE1BQU0sRUFBRSxTQUFTO2FBQ1gsQ0FBQztpQkFDUixNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyw2REFBNkQsQ0FBQyxDQUFDO1FBQzNGLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLCtHQUErRyxFQUFFLEtBQUs7WUFDdkgsNkVBQTZFO1lBQzdFLE1BQU0sc0JBQXNCLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxpREFBaUQ7WUFDNUcsTUFBTSxzQkFBc0IsR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQztZQUMxRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUM7WUFFdEIsMEdBQTBHO1lBQzFHLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBQSx3Q0FBZ0MsRUFDdkQsc0JBQXNCLEVBQ3RCLHNCQUFzQixFQUN0QixJQUFJLEVBQ0osNEJBQWdCLENBQUMsUUFBUSxFQUFFLENBQzVCLENBQUM7WUFFRixNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUNwRCxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM3QixTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzNCLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNoQyxTQUFTLENBQUMsSUFBSSxDQUFDO2dCQUNiLE9BQU8sRUFBRSxVQUFVLEVBQUUseUNBQXlDO2dCQUM5RCxNQUFNO2dCQUNOLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxzRUFBc0U7Z0JBQ3pHLFlBQVksRUFBRSxzQkFBc0I7Z0JBQ3BDLFNBQVMsRUFBRSw0QkFBZ0IsQ0FBQyxRQUFRLEVBQUU7Z0JBQ3RDLGFBQWEsRUFBRSxDQUFDO2FBQ2pCLENBQUMsQ0FBQztZQUNILE1BQU0sRUFBRSxHQUFHLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBRW5DLE1BQU0sVUFBVSxHQUFHO2dCQUNqQixRQUFRLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixFQUFFO2dCQUNoQyxNQUFNLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO2dCQUNsRCxJQUFJLEVBQUUsTUFBTTthQUNiLENBQUM7WUFDRixNQUFNLFFBQVEsR0FBRztnQkFDZixVQUFVLEVBQUU7b0JBQ1Y7d0JBQ0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHlEQUF5RDt3QkFDMUYsTUFBTTt3QkFDTixTQUFTLEVBQUUsc0JBQXNCLEVBQUUsMkRBQTJEO3dCQUM5RixZQUFZLEVBQUUsc0JBQXNCO3dCQUNwQyxTQUFTLEVBQUUsNEJBQWdCLENBQUMsUUFBUSxFQUFFO3FCQUN2QztpQkFDRjthQUNGLENBQUM7WUFFRixNQUFNLE1BQU0sR0FBRyxNQUFNLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBUyxDQUFDLENBQUM7WUFDcEcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsZ0hBQWdILEVBQUUsS0FBSztZQUN4SCxNQUFNLHNCQUFzQixHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDO1lBQzFELE1BQU0sc0JBQXNCLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUM7WUFDMUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDO1lBRXRCLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBQSx3Q0FBZ0MsRUFDdkQsc0JBQXNCLEVBQ3RCLHNCQUFzQixFQUN0QixJQUFJLEVBQ0osNEJBQWdCLENBQUMsUUFBUSxFQUFFLENBQzVCLENBQUM7WUFFRixNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUNwRCxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM3QixTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzNCLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNoQyxTQUFTLENBQUMsSUFBSSxDQUFDO2dCQUNiLE9BQU8sRUFBRSxVQUFVO2dCQUNuQixNQUFNO2dCQUNOLFNBQVMsRUFBRSxzQkFBc0I7Z0JBQ2pDLFlBQVksRUFBRSxzQkFBc0I7Z0JBQ3BDLFNBQVMsRUFBRSw0QkFBZ0IsQ0FBQyxRQUFRLEVBQUU7Z0JBQ3RDLGFBQWEsRUFBRSxDQUFDO2FBQ2pCLENBQUMsQ0FBQztZQUNILE1BQU0sRUFBRSxHQUFHLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBRW5DLE1BQU0sVUFBVSxHQUFHO2dCQUNqQixRQUFRLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixFQUFFO2dCQUNoQyxNQUFNLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO2dCQUNsRCxJQUFJLEVBQUUsTUFBTTthQUNiLENBQUM7WUFDRixtRkFBbUY7WUFDbkYsTUFBTSxRQUFRLEdBQUc7Z0JBQ2YsVUFBVSxFQUFFO29CQUNWO3dCQUNFLE9BQU8sRUFBRSxzQkFBc0I7d0JBQy9CLE1BQU07d0JBQ04sU0FBUyxFQUFFLHNCQUFzQjtxQkFDbEM7aUJBQ0Y7YUFDRixDQUFDO1lBRUYsTUFBTSxRQUFRO2lCQUNYLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFTLENBQUM7aUJBQ3JFLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLDZEQUE2RCxDQUFDLENBQUM7UUFDM0YsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsMEhBQTBILEVBQUUsS0FBSztZQUNsSSxNQUFNLHNCQUFzQixHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDO1lBQzFELE1BQU0sc0JBQXNCLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUM7WUFDMUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDO1lBRXRCLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBQSx3Q0FBZ0MsRUFDdkQsc0JBQXNCLEVBQ3RCLHNCQUFzQixFQUN0QixJQUFJLEVBQ0osaUNBQXFCLENBQUMsUUFBUSxFQUFFLENBQ2pDLENBQUM7WUFFRixNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUNwRCxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM3QixTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzNCLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNoQyxTQUFTLENBQUMsSUFBSSxDQUFDO2dCQUNiLE9BQU8sRUFBRSxVQUFVO2dCQUNuQixNQUFNO2dCQUNOLFNBQVMsRUFBRSxzQkFBc0I7Z0JBQ2pDLFlBQVksRUFBRSxzQkFBc0I7Z0JBQ3BDLFNBQVMsRUFBRSxpQ0FBcUIsQ0FBQyxRQUFRLEVBQUU7Z0JBQzNDLGFBQWEsRUFBRSxDQUFDO2FBQ2pCLENBQUMsQ0FBQztZQUNILE1BQU0sRUFBRSxHQUFHLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBRW5DLE1BQU0sVUFBVSxHQUFHO2dCQUNqQixRQUFRLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixFQUFFO2dCQUNoQyxNQUFNLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO2dCQUNsRCxJQUFJLEVBQUUsTUFBTTthQUNiLENBQUM7WUFDRixNQUFNLFFBQVEsR0FBRztnQkFDZixVQUFVLEVBQUU7b0JBQ1Y7d0JBQ0UsT0FBTyxFQUFFLHNCQUFzQjt3QkFDL0IsTUFBTTt3QkFDTixTQUFTLEVBQUUsc0JBQXNCO3dCQUNqQyxZQUFZLEVBQUUsc0JBQXNCO3dCQUNwQyxTQUFTLEVBQUUsaUNBQXFCLENBQUMsUUFBUSxFQUFFO3FCQUM1QztpQkFDRjthQUNGLENBQUM7WUFFRixNQUFNLE1BQU0sR0FBRyxNQUFNLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBUyxDQUFDLENBQUM7WUFDcEcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsMkdBQTJHLEVBQUUsS0FBSztZQUNuSCxNQUFNLHNCQUFzQixHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDO1lBQzFELE1BQU0sc0JBQXNCLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUM7WUFDMUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDO1lBRXRCLDZFQUE2RTtZQUM3RSxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUEsd0NBQWdDLEVBQ3ZELHNCQUFzQixFQUN0QixzQkFBc0IsRUFDdEIsSUFBSSxFQUNKLGlDQUFxQixDQUFDLFFBQVEsRUFBRSxDQUNqQyxDQUFDO1lBRUYsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDcEQsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDN0IsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDaEMsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDYixPQUFPLEVBQUUsVUFBVTtnQkFDbkIsTUFBTTtnQkFDTixTQUFTLEVBQUUsc0JBQXNCO2dCQUNqQyxZQUFZLEVBQUUsc0JBQXNCO2dCQUNwQyxTQUFTLEVBQUUsaUNBQXFCLENBQUMsUUFBUSxFQUFFO2dCQUMzQyxhQUFhLEVBQUUsQ0FBQzthQUNqQixDQUFDLENBQUM7WUFDSCxNQUFNLEVBQUUsR0FBRyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUVuQyxNQUFNLFVBQVUsR0FBRztnQkFDakIsUUFBUSxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRTtnQkFDaEMsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtnQkFDbEQsSUFBSSxFQUFFLE1BQU07YUFDYixDQUFDO1lBQ0Ysc0ZBQXNGO1lBQ3RGLHlFQUF5RTtZQUN6RSxNQUFNLFFBQVEsR0FBRztnQkFDZixVQUFVLEVBQUU7b0JBQ1Y7d0JBQ0UsT0FBTyxFQUFFLHNCQUFzQjt3QkFDL0IsTUFBTTt3QkFDTixTQUFTLEVBQUUsc0JBQXNCO3dCQUNqQyxZQUFZLEVBQUUsc0JBQXNCO3dCQUNwQyxTQUFTLEVBQUUsNEJBQWdCLENBQUMsUUFBUSxFQUFFO3FCQUN2QztpQkFDRjthQUNGLENBQUM7WUFFRixNQUFNLFFBQVE7aUJBQ1gsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQVMsQ0FBQztpQkFDckUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsNkRBQTZELENBQUMsQ0FBQztRQUMzRixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxzRUFBc0UsRUFBRSxLQUFLO1lBQzlFLE1BQU0sUUFBUSxHQUFHLHdCQUF3QixFQUFFLENBQUM7WUFDNUMsTUFBTSxVQUFVLEdBQUcsYUFBYSxFQUFFLENBQUM7WUFDbkMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztnQkFDeEQsUUFBUTtnQkFDUixVQUFVO2dCQUNWLElBQUk7Z0JBQ0osWUFBWTtnQkFDWixNQUFNLEVBQUUsU0FBUzthQUNYLENBQUMsQ0FBQztZQUNWLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsNENBQTRDLEVBQUUsS0FBSztZQUNwRCxNQUFNLEVBQUUsR0FBRyxNQUFNLE9BQU87aUJBQ3JCLHlCQUF5QixFQUFFO2lCQUMzQixjQUFjLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQztpQkFDaEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7aUJBQ2xCLEtBQUssQ0FBQyxTQUFTLENBQUM7aUJBQ2hCLE1BQU0sQ0FBQyxNQUFNLENBQUM7aUJBQ2QsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7aUJBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUM7aUJBQ2pCLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztpQkFDckIsS0FBSyxFQUFFLENBQUM7WUFDWCxNQUFNLG1CQUFtQixHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ25ELE1BQU0sUUFBUSxHQUFHLFdBQVcsRUFBRSxDQUFDO1lBQy9CLE1BQU0sVUFBVSxHQUFHLGFBQWEsRUFBRSxDQUFDO1lBQ25DLFVBQVUsQ0FBQyxRQUFRLEdBQUcsbUJBQW1CLENBQUM7WUFDMUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsOENBQThDLENBQUM7WUFDekUsUUFBUSxDQUFDLFVBQVUsR0FBRztnQkFDcEI7b0JBQ0UsT0FBTyxFQUFFLDhDQUE4QztvQkFDdkQsTUFBTSxFQUFFLE1BQU07aUJBQ2Y7YUFDRixDQUFDO1lBQ0YsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztnQkFDeEQsUUFBUTtnQkFDUixVQUFVO2dCQUNWLElBQUk7Z0JBQ0osTUFBTSxFQUFFLFNBQVM7YUFDWCxDQUFDLENBQUM7WUFDVixnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDRDQUE0QyxFQUFFLEtBQUs7WUFDcEQsTUFBTSxFQUFFLEdBQUcsTUFBTSxPQUFPO2lCQUNyQix5QkFBeUIsRUFBRTtpQkFDM0IsY0FBYyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUM7aUJBQ2hDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO2lCQUNsQixLQUFLLENBQUMsU0FBUyxDQUFDO2lCQUNoQixNQUFNLENBQUMsTUFBTSxDQUFDO2lCQUNkLElBQUksQ0FBQyxXQUFXLENBQUM7aUJBQ2pCLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztpQkFDckIsS0FBSyxFQUFFLENBQUM7WUFDWCxNQUFNLG1CQUFtQixHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ25ELE1BQU0sUUFBUSxHQUFHLFdBQVcsRUFBRSxDQUFDO1lBQy9CLE1BQU0sVUFBVSxHQUFHLGFBQWEsRUFBRSxDQUFDO1lBQ25DLFVBQVUsQ0FBQyxRQUFRLEdBQUcsbUJBQW1CLENBQUM7WUFDMUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsOENBQThDLENBQUM7WUFDekUsUUFBUSxDQUFDLFVBQVUsR0FBRztnQkFDcEI7b0JBQ0UsT0FBTyxFQUFFLDhDQUE4QztvQkFDdkQsTUFBTSxFQUFFLE1BQU07aUJBQ2Y7YUFDRixDQUFDO1lBQ0YsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztnQkFDeEQsUUFBUTtnQkFDUixVQUFVO2dCQUNWLElBQUk7Z0JBQ0osTUFBTSxFQUFFLFNBQVM7YUFDWCxDQUFDLENBQUM7WUFDVixnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDhDQUE4QyxFQUFFLEtBQUs7WUFDdEQsTUFBTSxFQUFFLEdBQUcsTUFBTSxPQUFPO2lCQUNyQiwyQkFBMkIsRUFBRTtpQkFDN0IsY0FBYyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUM7aUJBQ2hDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO2lCQUNsQixLQUFLLENBQUMsU0FBUyxDQUFDO2lCQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDO2lCQUNqQixHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7aUJBQ3JCLEtBQUssRUFBRSxDQUFDO1lBQ1gsTUFBTSxtQkFBbUIsR0FBRyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNuRCxNQUFNLFFBQVEsR0FBRyxXQUFXLEVBQUUsQ0FBQztZQUMvQixNQUFNLFVBQVUsR0FBRyxhQUFhLEVBQUUsQ0FBQztZQUNuQyxVQUFVLENBQUMsUUFBUSxHQUFHLG1CQUFtQixDQUFDO1lBQzFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLDhDQUE4QyxDQUFDO1lBQ3pFLFFBQVEsQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxRQUFRLENBQUMsaUJBQWlCLENBQUM7Z0JBQ3hELFFBQVE7Z0JBQ1IsVUFBVTtnQkFDVixJQUFJO2dCQUNKLE1BQU0sRUFBRSxTQUFTO2FBQ1gsQ0FBQyxDQUFDO1lBQ1YsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQywyREFBMkQsRUFBRSxLQUFLO1lBQ25FLE1BQU0sRUFBRSxHQUFHLE1BQU0sT0FBTztpQkFDckIsMkJBQTJCLEVBQUU7aUJBQzdCLElBQUksQ0FBQyxXQUFXLENBQUM7aUJBQ2pCLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO2lCQUNsQixLQUFLLENBQUMsU0FBUyxDQUFDO2lCQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDO2lCQUNqQixHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7aUJBQ3JCLEtBQUssRUFBRSxDQUFDO1lBQ1gsTUFBTSxtQkFBbUIsR0FBRyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNuRCxNQUFNLFFBQVEsR0FBRyxXQUFXLEVBQUUsQ0FBQztZQUMvQixNQUFNLFVBQVUsR0FBRyxhQUFhLEVBQUUsQ0FBQztZQUNuQyxVQUFVLENBQUMsUUFBUSxHQUFHLG1CQUFtQixDQUFDO1lBQzFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztZQUNwQyxRQUFRLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUN6QixNQUFNLGdCQUFnQixHQUFHLE1BQU0sUUFBUSxDQUFDLGlCQUFpQixDQUFDO2dCQUN4RCxRQUFRO2dCQUNSLFVBQVU7Z0JBQ1YsSUFBSTtnQkFDSixNQUFNLEVBQUUsU0FBUzthQUNYLENBQUMsQ0FBQztZQUNWLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyw0QkFBNEIsRUFBRSxHQUFHLEVBQUU7UUFDMUMsSUFBSSxZQUFvQixDQUFDO1FBRXpCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxZQUFZLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztRQUVILFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDYixNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUU7Z0JBQ3JDLEtBQUssRUFBRSxZQUFZO2dCQUNuQixRQUFRLEVBQUUsSUFBSTtnQkFDZCxZQUFZLEVBQUUsSUFBSTthQUNuQixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQywyREFBMkQsRUFBRTtZQUM5RCxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUU7Z0JBQ3JDLEtBQUssRUFBRSxLQUFLO2dCQUNaLFFBQVEsRUFBRSxJQUFJO2dCQUNkLFlBQVksRUFBRSxJQUFJO2FBQ25CLENBQUMsQ0FBQztZQUVILElBQUEsZ0NBQTBCLEVBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM1RCxJQUFBLGdDQUEwQixFQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDMUQsSUFBQSxnQ0FBMEIsRUFBQyxvQkFBb0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN0RixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw4REFBOEQsRUFBRTtZQUNqRSxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUU7Z0JBQ3JDLEtBQUssRUFBRSxPQUFPO2dCQUNkLFFBQVEsRUFBRSxJQUFJO2dCQUNkLFlBQVksRUFBRSxJQUFJO2FBQ25CLENBQUMsQ0FBQztZQUVILGtFQUFrRTtZQUNsRSxJQUFBLGdDQUEwQixFQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUMxRSxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw4REFBOEQsRUFBRTtZQUNqRSxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUU7Z0JBQ3JDLEtBQUssRUFBRSxPQUFPO2dCQUNkLFFBQVEsRUFBRSxJQUFJO2dCQUNkLFlBQVksRUFBRSxJQUFJO2FBQ25CLENBQUMsQ0FBQztZQUVILHVFQUF1RTtZQUN2RSxJQUFBLGdDQUEwQixFQUFDLG9CQUFvQixDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyRSxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw2QkFBNkIsRUFBRTtZQUNoQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUU7Z0JBQ3JDLEtBQUssRUFBRSxPQUFPO2dCQUNkLFFBQVEsRUFBRSxJQUFJO2dCQUNkLFlBQVksRUFBRSxJQUFJO2FBQ25CLENBQUMsQ0FBQztZQUVILDZDQUE2QztZQUM3QyxJQUFBLGdDQUEwQixFQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN4RSxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxxREFBcUQsRUFBRTtZQUN4RCxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUU7Z0JBQ3JDLEtBQUssRUFBRSxPQUFPO2dCQUNkLFFBQVEsRUFBRSxJQUFJO2dCQUNkLFlBQVksRUFBRSxJQUFJO2FBQ25CLENBQUMsQ0FBQztZQUVILHlEQUF5RDtZQUN6RCxNQUFNLE1BQU0sR0FBRyxJQUFBLGdDQUEwQixFQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3BELGtDQUFrQztZQUNsQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbEMsc0NBQXNDO1lBQ3RDLElBQUEsZ0NBQTBCLEVBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1RCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyx3Q0FBd0MsRUFBRTtZQUMzQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUU7Z0JBQ3JDLEtBQUssRUFBRSxPQUFPO2dCQUNkLFFBQVEsRUFBRSxJQUFJO2dCQUNkLFlBQVksRUFBRSxJQUFJO2FBQ25CLENBQUMsQ0FBQztZQUVILHFEQUFxRDtZQUNyRCxJQUFBLGdDQUEwQixFQUFDLGNBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDMUUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw2QkFBNkIsRUFBRTtRQUNoQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDN0IsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsK0JBQStCLEVBQUU7UUFDbEMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzVCLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDZCQUE2QixFQUFFO1FBQ2hDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxRQUFRLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGtDQUFrQyxFQUFFO1FBQ3JDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDckUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDZCQUE2QixFQUFFO1FBQ2hDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxRQUFRLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGtDQUFrQyxFQUFFO1FBQ3JDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUMvRixRQUFRLENBQUMsVUFBVSxDQUFDLFNBQW1CLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9ELENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLHFCQUFxQixFQUFFLEdBQUcsRUFBRTtRQUNuQyxFQUFFLENBQUMsK0NBQStDLEVBQUUsS0FBSztZQUN2RCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sUUFBUSxDQUFDLGdCQUFnQixDQUFDO2dCQUN4RCxRQUFRLEVBQUUsUUFBUSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsUUFBUTtnQkFDcEQsT0FBTyxFQUFFO29CQUNQLEdBQUcsRUFBRSxNQUFNO2lCQUNaO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsaUJBQWlCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztnQkFDakMsTUFBTSxFQUFFO29CQUNOO3dCQUNFLE9BQU8sRUFBRSw4Q0FBOEM7d0JBQ3ZELE1BQU0sRUFBRSxNQUFNO3FCQUNmO2lCQUNGO2dCQUNELE9BQU8sRUFBRTtvQkFDUDt3QkFDRSxPQUFPLEVBQUUsOENBQThDO3dCQUN2RCxNQUFNLEVBQUUsUUFBUTtxQkFDakI7aUJBQ0Y7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw0Q0FBNEMsRUFBRSxLQUFLO1lBQ3BELE1BQU0saUJBQWlCLEdBQUcsTUFBTSxRQUFRLENBQUMsZ0JBQWdCLENBQUM7Z0JBQ3hELFFBQVEsRUFBRSxRQUFRLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxNQUFNO2dCQUNsRCxPQUFPLEVBQUU7b0JBQ1AsR0FBRyxFQUFFLE1BQU07aUJBQ1o7YUFDRixDQUFDLENBQUM7WUFFSCxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO2dCQUNqQyxNQUFNLEVBQUU7b0JBQ047d0JBQ0UsT0FBTyxFQUFFLDhDQUE4Qzt3QkFDdkQsTUFBTSxFQUFFLE1BQU07cUJBQ2Y7aUJBQ0Y7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQO3dCQUNFLE9BQU8sRUFBRSw4Q0FBOEM7d0JBQ3ZELE1BQU0sRUFBRSxRQUFRO3FCQUNqQjtpQkFDRjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGtEQUFrRCxFQUFFLEtBQUs7WUFDMUQsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDeEQsUUFBUSxFQUFFLFFBQVEsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLFFBQVE7Z0JBQ3RELE9BQU8sRUFBRTtvQkFDUCxHQUFHLEVBQUUsTUFBTTtpQkFDWjthQUNGLENBQUMsQ0FBQztZQUVILGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7Z0JBQ2pDLE1BQU0sRUFBRTtvQkFDTjt3QkFDRSxPQUFPLEVBQUUsOENBQThDO3dCQUN2RCxNQUFNLEVBQUUsTUFBTTtxQkFDZjtpQkFDRjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1A7d0JBQ0UsT0FBTyxFQUFFLDhDQUE4Qzt3QkFDdkQsTUFBTSxFQUFFLFFBQVE7cUJBQ2pCO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsK0NBQStDLEVBQUUsS0FBSztZQUN2RCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sUUFBUSxDQUFDLGdCQUFnQixDQUFDO2dCQUN4RCxRQUFRLEVBQUUsUUFBUSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsTUFBTTtnQkFDcEQsT0FBTyxFQUFFO29CQUNQLEdBQUcsRUFBRSxNQUFNO2lCQUNaO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsaUJBQWlCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztnQkFDakMsTUFBTSxFQUFFO29CQUNOO3dCQUNFLE9BQU8sRUFBRSw4Q0FBOEM7d0JBQ3ZELE1BQU0sRUFBRSxNQUFNO3FCQUNmO2lCQUNGO2dCQUNELE9BQU8sRUFBRTtvQkFDUDt3QkFDRSxPQUFPLEVBQUUsOENBQThDO3dCQUN2RCxNQUFNLEVBQUUsUUFBUTtxQkFDakI7aUJBQ0Y7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxxREFBcUQsRUFBRSxLQUFLO1lBQzdELE1BQU0saUJBQWlCLEdBQUcsTUFBTSxRQUFRLENBQUMsZ0JBQWdCLENBQUM7Z0JBQ3hELFFBQVEsRUFBRSxRQUFRLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxRQUFRO2dCQUN6RCxPQUFPLEVBQUU7b0JBQ1AsR0FBRyxFQUFFLE1BQU07aUJBQ1o7YUFDRixDQUFDLENBQUM7WUFFSCxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO2dCQUNqQyxNQUFNLEVBQUU7b0JBQ047d0JBQ0UsT0FBTyxFQUFFLDhDQUE4Qzt3QkFDdkQsTUFBTSxFQUFFLElBQUk7cUJBQ2I7aUJBQ0Y7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQO3dCQUNFLE9BQU8sRUFBRSw4Q0FBOEM7d0JBQ3ZELE1BQU0sRUFBRSxRQUFRO3dCQUNoQixTQUFTLEVBQUUsV0FBVztxQkFDdkI7aUJBQ0Y7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxrREFBa0QsRUFBRSxLQUFLO1lBQzFELE1BQU0saUJBQWlCLEdBQUcsTUFBTSxRQUFRLENBQUMsZ0JBQWdCLENBQUM7Z0JBQ3hELFFBQVEsRUFBRSxRQUFRLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxNQUFNO2dCQUN2RCxPQUFPLEVBQUU7b0JBQ1AsR0FBRyxFQUFFLE1BQU07aUJBQ1o7YUFDRixDQUFDLENBQUM7WUFFSCxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO2dCQUNqQyxNQUFNLEVBQUU7b0JBQ047d0JBQ0UsT0FBTyxFQUFFLDhDQUE4Qzt3QkFDdkQsTUFBTSxFQUFFLElBQUk7cUJBQ2I7aUJBQ0Y7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQO3dCQUNFLE9BQU8sRUFBRSw4Q0FBOEM7d0JBQ3ZELE1BQU0sRUFBRSxRQUFRO3dCQUNoQixTQUFTLEVBQUUsV0FBVztxQkFDdkI7aUJBQ0Y7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLHVCQUF1QixFQUFFLEdBQUcsRUFBRTtRQUNyQyxFQUFFLENBQUMsaURBQWlELEVBQUUsS0FBSztZQUN6RCxNQUFNLG9CQUFvQixHQUFHLE1BQU0sUUFBUSxDQUFDLGtCQUFrQixDQUFDO2dCQUM3RCxRQUFRLEVBQUUsUUFBUSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsUUFBUTtnQkFDcEQsT0FBTyxFQUFFO29CQUNQLEdBQUcsRUFBRSxNQUFNO2lCQUNaO2FBQ0YsQ0FBQyxDQUFDO1lBQ0gsb0JBQW9CLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztnQkFDcEMsWUFBWSxFQUFFO29CQUNaLElBQUk7b0JBQ0osTUFBTTtvQkFDTixXQUFXO29CQUNYLGNBQWM7b0JBQ2QsY0FBYztvQkFDZCxjQUFjO29CQUNkLFNBQVM7b0JBQ1QsZUFBZTtvQkFDZixrQkFBa0I7b0JBQ2xCLEtBQUs7b0JBQ0wsTUFBTTtpQkFDUDtnQkFDRCxFQUFFLEVBQUUsYUFBYTtnQkFDakIsSUFBSSxFQUFFLE1BQU07Z0JBQ1osYUFBYSxFQUFFLEVBQUU7Z0JBQ2pCLFlBQVksRUFBRSxHQUFHO2dCQUNqQixZQUFZLEVBQUUsUUFBUTtnQkFDdEIsT0FBTyxFQUFFO29CQUNQO3dCQUNFLE9BQU8sRUFBRSw4Q0FBOEM7d0JBQ3ZELE1BQU0sRUFBRSxRQUFRO3FCQUNqQjtpQkFDRjtnQkFDRCxNQUFNLEVBQUU7b0JBQ047d0JBQ0UsT0FBTyxFQUFFLDhDQUE4Qzt3QkFDdkQsS0FBSyxFQUFFLFFBQVE7cUJBQ2hCO2lCQUNGO2dCQUNELFFBQVEsRUFBRSw4Q0FBOEM7Z0JBQ3hELEdBQUcsRUFBRTtvQkFDSCxHQUFHLEVBQUUsTUFBTTtvQkFDWCxPQUFPLEVBQUUsSUFBSTtpQkFDZDtnQkFDRCxJQUFJLEVBQUUsV0FBVztnQkFDakIsU0FBUyxFQUFFLDhDQUE4QztnQkFDekQsWUFBWSxFQUFFO29CQUNaLGlCQUFpQixFQUFFLDhDQUE4QztvQkFDakUsa0JBQWtCLEVBQUUsOENBQThDO2lCQUNuRTtnQkFDRCxnQkFBZ0IsRUFBRSxFQUFFO2dCQUNwQixXQUFXLEVBQUUsRUFBRTthQUNoQixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw4Q0FBOEMsRUFBRSxLQUFLO1lBQ3RELE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxRQUFRLENBQUMsa0JBQWtCLENBQUM7Z0JBQzdELFFBQVEsRUFBRSxRQUFRLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxNQUFNO2dCQUNsRCxPQUFPLEVBQUU7b0JBQ1AsR0FBRyxFQUFFLE1BQU07aUJBQ1o7YUFDRixDQUFDLENBQUM7WUFDSCxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO2dCQUNwQyxZQUFZLEVBQUU7b0JBQ1osSUFBSTtvQkFDSixNQUFNO29CQUNOLFdBQVc7b0JBQ1gsY0FBYztvQkFDZCxjQUFjO29CQUNkLGNBQWM7b0JBQ2QsU0FBUztvQkFDVCxlQUFlO29CQUNmLGtCQUFrQjtvQkFDbEIsS0FBSztvQkFDTCxNQUFNO2lCQUNQO2dCQUNELEVBQUUsRUFBRSwwRkFBMEY7Z0JBQzlGLElBQUksRUFBRSxNQUFNO2dCQUNaLGFBQWEsRUFBRSxFQUFFO2dCQUNqQixZQUFZLEVBQUUsR0FBRztnQkFDakIsWUFBWSxFQUFFLFFBQVE7Z0JBQ3RCLE9BQU8sRUFBRTtvQkFDUDt3QkFDRSxPQUFPLEVBQUUsOENBQThDO3dCQUN2RCxNQUFNLEVBQUUsUUFBUTtxQkFDakI7aUJBQ0Y7Z0JBQ0QsTUFBTSxFQUFFO29CQUNOO3dCQUNFLE9BQU8sRUFBRSw4Q0FBOEM7d0JBQ3ZELEtBQUssRUFBRSxRQUFRO3FCQUNoQjtpQkFDRjtnQkFDRCxRQUFRLEVBQUUsOENBQThDO2dCQUN4RCxHQUFHLEVBQUU7b0JBQ0gsR0FBRyxFQUFFLE1BQU07b0JBQ1gsT0FBTyxFQUFFLElBQUk7aUJBQ2Q7Z0JBQ0QsSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLFNBQVMsRUFBRSw4Q0FBOEM7Z0JBQ3pELFlBQVksRUFBRTtvQkFDWixpQkFBaUIsRUFBRSw4Q0FBOEM7b0JBQ2pFLGtCQUFrQixFQUFFLDhDQUE4QztpQkFDbkU7Z0JBQ0QsZ0JBQWdCLEVBQUUsRUFBRTtnQkFDcEIsV0FBVyxFQUFFLEVBQUU7YUFDaEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsb0RBQW9ELEVBQUUsS0FBSztZQUM1RCxNQUFNLG9CQUFvQixHQUFHLE1BQU0sUUFBUSxDQUFDLGtCQUFrQixDQUFDO2dCQUM3RCxRQUFRLEVBQUUsUUFBUSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsUUFBUTtnQkFDdEQsT0FBTyxFQUFFO29CQUNQLEdBQUcsRUFBRSxNQUFNO2lCQUNaO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsb0JBQW9CLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztnQkFDcEMsWUFBWSxFQUFFO29CQUNaLElBQUk7b0JBQ0osTUFBTTtvQkFDTixXQUFXO29CQUNYLGNBQWM7b0JBQ2QsY0FBYztvQkFDZCxjQUFjO29CQUNkLFNBQVM7b0JBQ1QsZUFBZTtvQkFDZixrQkFBa0I7b0JBQ2xCLEtBQUs7b0JBQ0wsTUFBTTtpQkFDUDtnQkFDRCxFQUFFLEVBQUUsYUFBYTtnQkFDakIsSUFBSSxFQUFFLHNCQUFzQjtnQkFDNUIsYUFBYSxFQUFFLEVBQUU7Z0JBQ2pCLFlBQVksRUFBRSxHQUFHO2dCQUNqQixZQUFZLEVBQUUsUUFBUTtnQkFDdEIsT0FBTyxFQUFFO29CQUNQO3dCQUNFLE9BQU8sRUFBRSw4Q0FBOEM7d0JBQ3ZELE1BQU0sRUFBRSxRQUFRO3FCQUNqQjtpQkFDRjtnQkFDRCxNQUFNLEVBQUU7b0JBQ047d0JBQ0UsT0FBTyxFQUFFLDhDQUE4Qzt3QkFDdkQsS0FBSyxFQUFFLFFBQVE7cUJBQ2hCO2lCQUNGO2dCQUNELFFBQVEsRUFBRSw4Q0FBOEM7Z0JBQ3hELEdBQUcsRUFBRTtvQkFDSCxHQUFHLEVBQUUsT0FBTztvQkFDWixPQUFPLEVBQUUsSUFBSTtpQkFDZDtnQkFDRCxTQUFTLEVBQUUsOENBQThDO2dCQUN6RCxZQUFZLEVBQUUsU0FBUztnQkFDdkIsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsZ0JBQWdCLEVBQUUsRUFBRTtnQkFDcEIsV0FBVyxFQUFFLEVBQUU7YUFDaEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsaURBQWlELEVBQUUsS0FBSztZQUN6RCxNQUFNLG9CQUFvQixHQUFHLE1BQU0sUUFBUSxDQUFDLGtCQUFrQixDQUFDO2dCQUM3RCxRQUFRLEVBQUUsUUFBUSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsTUFBTTtnQkFDcEQsT0FBTyxFQUFFO29CQUNQLEdBQUcsRUFBRSxNQUFNO2lCQUNaO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsb0JBQW9CLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztnQkFDcEMsWUFBWSxFQUFFO29CQUNaLElBQUk7b0JBQ0osTUFBTTtvQkFDTixXQUFXO29CQUNYLGNBQWM7b0JBQ2QsY0FBYztvQkFDZCxjQUFjO29CQUNkLFNBQVM7b0JBQ1QsZUFBZTtvQkFDZixrQkFBa0I7b0JBQ2xCLEtBQUs7b0JBQ0wsTUFBTTtpQkFDUDtnQkFDRCxFQUFFLEVBQUUseUZBQXlGO2dCQUM3RixJQUFJLEVBQUUsc0JBQXNCO2dCQUM1QixhQUFhLEVBQUUsRUFBRTtnQkFDakIsWUFBWSxFQUFFLEdBQUc7Z0JBQ2pCLFlBQVksRUFBRSxRQUFRO2dCQUN0QixPQUFPLEVBQUU7b0JBQ1A7d0JBQ0UsT0FBTyxFQUFFLDhDQUE4Qzt3QkFDdkQsTUFBTSxFQUFFLFFBQVE7cUJBQ2pCO2lCQUNGO2dCQUNELE1BQU0sRUFBRTtvQkFDTjt3QkFDRSxPQUFPLEVBQUUsOENBQThDO3dCQUN2RCxLQUFLLEVBQUUsUUFBUTtxQkFDaEI7aUJBQ0Y7Z0JBQ0QsUUFBUSxFQUFFLDhDQUE4QztnQkFDeEQsR0FBRyxFQUFFO29CQUNILEdBQUcsRUFBRSxPQUFPO29CQUNaLE9BQU8sRUFBRSxJQUFJO2lCQUNkO2dCQUNELFNBQVMsRUFBRSw4Q0FBOEM7Z0JBQ3pELFlBQVksRUFBRSxTQUFTO2dCQUN2QixJQUFJLEVBQUUsU0FBUztnQkFDZixnQkFBZ0IsRUFBRSxFQUFFO2dCQUNwQixXQUFXLEVBQUUsRUFBRTthQUNoQixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyx1REFBdUQsRUFBRSxLQUFLO1lBQy9ELE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxRQUFRLENBQUMsa0JBQWtCLENBQUM7Z0JBQzdELFFBQVEsRUFBRSxRQUFRLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxRQUFRO2dCQUN6RCxPQUFPLEVBQUU7b0JBQ1AsR0FBRyxFQUFFLE1BQU07aUJBQ1o7YUFDRixDQUFDLENBQUM7WUFDSCxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO2dCQUNwQyxZQUFZLEVBQUU7b0JBQ1osSUFBSTtvQkFDSixNQUFNO29CQUNOLFdBQVc7b0JBQ1gsY0FBYztvQkFDZCxjQUFjO29CQUNkLGNBQWM7b0JBQ2QsU0FBUztvQkFDVCxlQUFlO29CQUNmLGtCQUFrQjtvQkFDbEIsS0FBSztvQkFDTCxNQUFNO2lCQUNQO2dCQUNELEVBQUUsRUFBRSxhQUFhO2dCQUNqQixJQUFJLEVBQUUsTUFBTTtnQkFDWixhQUFhLEVBQUUsRUFBRTtnQkFDakIsWUFBWSxFQUFFLEdBQUc7Z0JBQ2pCLFlBQVksRUFBRSxHQUFHO2dCQUNqQixPQUFPLEVBQUU7b0JBQ1A7d0JBQ0UsT0FBTyxFQUFFLDhDQUE4Qzt3QkFDdkQsTUFBTSxFQUFFLFFBQVE7d0JBQ2hCLFNBQVMsRUFBRSxXQUFXO3FCQUN2QjtpQkFDRjtnQkFDRCxNQUFNLEVBQUU7b0JBQ047d0JBQ0UsT0FBTyxFQUFFLDhDQUE4Qzt3QkFDdkQsS0FBSyxFQUFFLFFBQVE7cUJBQ2hCO2lCQUNGO2dCQUNELFFBQVEsRUFBRSw4Q0FBOEM7Z0JBQ3hELEdBQUcsRUFBRTtvQkFDSCxHQUFHLEVBQUUsTUFBTTtvQkFDWCxPQUFPLEVBQUUsSUFBSTtpQkFDZDtnQkFDRCxJQUFJLEVBQUUsV0FBVztnQkFDakIsU0FBUyxFQUFFLDhDQUE4QztnQkFDekQsWUFBWSxFQUFFO29CQUNaLGlCQUFpQixFQUFFLDhDQUE4QztvQkFDakUsa0JBQWtCLEVBQUUsOENBQThDO2lCQUNuRTtnQkFDRCxnQkFBZ0IsRUFBRSxFQUFFO2dCQUNwQixXQUFXLEVBQUUsRUFBRTthQUNoQixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxvREFBb0QsRUFBRSxLQUFLO1lBQzVELE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxRQUFRLENBQUMsa0JBQWtCLENBQUM7Z0JBQzdELFFBQVEsRUFBRSxRQUFRLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxNQUFNO2dCQUN2RCxPQUFPLEVBQUU7b0JBQ1AsR0FBRyxFQUFFLE1BQU07aUJBQ1o7YUFDRixDQUFDLENBQUM7WUFDSCxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO2dCQUNwQyxZQUFZLEVBQUU7b0JBQ1osSUFBSTtvQkFDSixNQUFNO29CQUNOLFdBQVc7b0JBQ1gsY0FBYztvQkFDZCxjQUFjO29CQUNkLGNBQWM7b0JBQ2QsU0FBUztvQkFDVCxlQUFlO29CQUNmLGtCQUFrQjtvQkFDbEIsS0FBSztvQkFDTCxNQUFNO2lCQUNQO2dCQUNELEVBQUUsRUFBRSwwRkFBMEY7Z0JBQzlGLElBQUksRUFBRSxNQUFNO2dCQUNaLGFBQWEsRUFBRSxFQUFFO2dCQUNqQixZQUFZLEVBQUUsR0FBRztnQkFDakIsWUFBWSxFQUFFLEdBQUc7Z0JBQ2pCLE9BQU8sRUFBRTtvQkFDUDt3QkFDRSxPQUFPLEVBQUUsOENBQThDO3dCQUN2RCxNQUFNLEVBQUUsUUFBUTt3QkFDaEIsU0FBUyxFQUFFLFdBQVc7cUJBQ3ZCO2lCQUNGO2dCQUNELE1BQU0sRUFBRTtvQkFDTjt3QkFDRSxPQUFPLEVBQUUsOENBQThDO3dCQUN2RCxLQUFLLEVBQUUsUUFBUTtxQkFDaEI7aUJBQ0Y7Z0JBQ0QsUUFBUSxFQUFFLDhDQUE4QztnQkFDeEQsR0FBRyxFQUFFO29CQUNILEdBQUcsRUFBRSxNQUFNO29CQUNYLE9BQU8sRUFBRSxJQUFJO2lCQUNkO2dCQUNELElBQUksRUFBRSxXQUFXO2dCQUNqQixTQUFTLEVBQUUsOENBQThDO2dCQUN6RCxZQUFZLEVBQUU7b0JBQ1osaUJBQWlCLEVBQUUsOENBQThDO29CQUNqRSxrQkFBa0IsRUFBRSw4Q0FBOEM7aUJBQ25FO2dCQUNELGdCQUFnQixFQUFFLEVBQUU7Z0JBQ3BCLFdBQVcsRUFBRSxFQUFFO2FBQ2hCLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDZDQUE2QyxFQUFFLEtBQUs7WUFDckQsTUFBTSxFQUFFLEdBQUcsTUFBTSxPQUFPO2lCQUNyQix5QkFBeUIsRUFBRTtpQkFDM0IsY0FBYyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUM7aUJBQ2hDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO2lCQUNsQixLQUFLLENBQUMsU0FBUyxDQUFDO2lCQUNoQixNQUFNLENBQUMsTUFBTSxDQUFDO2lCQUNkLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO2lCQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDO2lCQUNqQixHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7aUJBQ3JCLEtBQUssRUFBRSxDQUFDO1lBQ1gsTUFBTSxtQkFBbUIsR0FBRyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNuRCxNQUFNLG9CQUFvQixHQUFHLE1BQU0sUUFBUSxDQUFDLGtCQUFrQixDQUFDO2dCQUM3RCxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3QixPQUFPLEVBQUU7b0JBQ1AsR0FBRyxFQUFFLE1BQU07aUJBQ1o7YUFDRixDQUFDLENBQUM7WUFDSCxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO2dCQUNwQyxZQUFZLEVBQUU7b0JBQ1osSUFBSTtvQkFDSixNQUFNO29CQUNOLFdBQVc7b0JBQ1gsY0FBYztvQkFDZCxjQUFjO29CQUNkLGNBQWM7b0JBQ2QsU0FBUztvQkFDVCxlQUFlO29CQUNmLGtCQUFrQjtvQkFDbEIsS0FBSztvQkFDTCxNQUFNO2lCQUNQO2dCQUNELEVBQUUsRUFBRSxhQUFhO2dCQUNqQixJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixhQUFhLEVBQUUsRUFBRTtnQkFDakIsWUFBWSxFQUFFLEdBQUc7Z0JBQ2pCLFlBQVksRUFBRSxPQUFPO2dCQUNyQixPQUFPLEVBQUU7b0JBQ1A7d0JBQ0UsT0FBTyxFQUFFLDhDQUE4Qzt3QkFDdkQsTUFBTSxFQUFFLE9BQU87cUJBQ2hCO2lCQUNGO2dCQUNELE1BQU0sRUFBRTtvQkFDTjt3QkFDRSxPQUFPLEVBQUUsOENBQThDO3dCQUN2RCxLQUFLLEVBQUUsT0FBTztxQkFDZjtpQkFDRjtnQkFDRCxRQUFRLEVBQUUsOENBQThDO2dCQUN4RCxHQUFHLEVBQUU7b0JBQ0gsR0FBRyxFQUFFLE9BQU87b0JBQ1osT0FBTyxFQUFFLElBQUk7aUJBQ2Q7Z0JBQ0QsSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLFNBQVMsRUFBRSw4Q0FBOEM7Z0JBQ3pELFlBQVksRUFBRSxTQUFTO2dCQUN2QixnQkFBZ0IsRUFBRSxFQUFFO2dCQUNwQixXQUFXLEVBQUUsRUFBRTthQUNoQixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQywrQ0FBK0MsRUFBRSxLQUFLO1lBQ3ZELE1BQU0sRUFBRSxHQUFHLE1BQU0sT0FBTztpQkFDckIsMkJBQTJCLEVBQUU7aUJBQzdCLGNBQWMsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDO2lCQUNoQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztpQkFDbEIsS0FBSyxDQUFDLFNBQVMsQ0FBQztpQkFDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQztpQkFDakIsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDO2lCQUNyQixLQUFLLEVBQUUsQ0FBQztZQUNYLE1BQU0sbUJBQW1CLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDbkQsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQztnQkFDN0QsUUFBUSxFQUFFLG1CQUFtQjtnQkFDN0IsT0FBTyxFQUFFO29CQUNQLEdBQUcsRUFBRSxNQUFNO2lCQUNaO2FBQ0YsQ0FBQyxDQUFDO1lBQ0gsb0JBQW9CLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztnQkFDcEMsWUFBWSxFQUFFO29CQUNaLElBQUk7b0JBQ0osTUFBTTtvQkFDTixXQUFXO29CQUNYLGNBQWM7b0JBQ2QsY0FBYztvQkFDZCxjQUFjO29CQUNkLFNBQVM7b0JBQ1QsZUFBZTtvQkFDZixrQkFBa0I7b0JBQ2xCLEtBQUs7b0JBQ0wsTUFBTTtpQkFDUDtnQkFDRCxFQUFFLEVBQUUsYUFBYTtnQkFDakIsSUFBSSxFQUFFLG1CQUFtQjtnQkFDekIsYUFBYSxFQUFFLEVBQUU7Z0JBQ2pCLFlBQVksRUFBRSxHQUFHO2dCQUNqQixZQUFZLEVBQUUsR0FBRztnQkFDakIsT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsUUFBUSxFQUFFLDhDQUE4QztnQkFDeEQsR0FBRyxFQUFFO29CQUNILEdBQUcsRUFBRSxNQUFNO29CQUNYLE9BQU8sRUFBRSxJQUFJO2lCQUNkO2dCQUNELElBQUksRUFBRSxXQUFXO2dCQUNqQixTQUFTLEVBQUUsOENBQThDO2dCQUN6RCxZQUFZLEVBQUUsU0FBUztnQkFDdkIsZ0JBQWdCLEVBQUUsRUFBRTtnQkFDcEIsV0FBVyxFQUFFLEVBQUU7YUFDaEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsNkNBQTZDLEVBQUUsS0FBSztZQUNyRCxNQUFNLEVBQUUsR0FBRyxNQUFNLE9BQU87aUJBQ3JCLHlCQUF5QixFQUFFO2lCQUMzQixjQUFjLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQztpQkFDaEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7aUJBQ2xCLEtBQUssQ0FBQyxTQUFTLENBQUM7aUJBQ2hCLE1BQU0sQ0FBQyxNQUFNLENBQUM7aUJBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FBQztpQkFDakIsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDO2lCQUNyQixLQUFLLEVBQUUsQ0FBQztZQUNYLE1BQU0sbUJBQW1CLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDbkQsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQztnQkFDN0QsUUFBUSxFQUFFLG1CQUFtQjtnQkFDN0IsT0FBTyxFQUFFO29CQUNQLEdBQUcsRUFBRSxNQUFNO2lCQUNaO2FBQ0YsQ0FBQyxDQUFDO1lBQ0gsb0JBQW9CLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztnQkFDcEMsWUFBWSxFQUFFO29CQUNaLElBQUk7b0JBQ0osTUFBTTtvQkFDTixXQUFXO29CQUNYLGNBQWM7b0JBQ2QsY0FBYztvQkFDZCxjQUFjO29CQUNkLFNBQVM7b0JBQ1QsZUFBZTtvQkFDZixrQkFBa0I7b0JBQ2xCLEtBQUs7b0JBQ0wsTUFBTTtpQkFDUDtnQkFDRCxFQUFFLEVBQUUsYUFBYTtnQkFDakIsSUFBSSxFQUFFLGlCQUFpQjtnQkFDdkIsYUFBYSxFQUFFLEVBQUU7Z0JBQ2pCLFlBQVksRUFBRSxHQUFHO2dCQUNqQixZQUFZLEVBQUUsT0FBTztnQkFDckIsT0FBTyxFQUFFO29CQUNQO3dCQUNFLE9BQU8sRUFBRSw4Q0FBOEM7d0JBQ3ZELE1BQU0sRUFBRSxPQUFPO3FCQUNoQjtpQkFDRjtnQkFDRCxNQUFNLEVBQUU7b0JBQ047d0JBQ0UsT0FBTyxFQUFFLDhDQUE4Qzt3QkFDdkQsS0FBSyxFQUFFLE9BQU87cUJBQ2Y7aUJBQ0Y7Z0JBQ0QsUUFBUSxFQUFFLDhDQUE4QztnQkFDeEQsR0FBRyxFQUFFO29CQUNILEdBQUcsRUFBRSxNQUFNO29CQUNYLE9BQU8sRUFBRSxJQUFJO2lCQUNkO2dCQUNELElBQUksRUFBRSxXQUFXO2dCQUNqQixTQUFTLEVBQUUsOENBQThDO2dCQUN6RCxZQUFZLEVBQUUsU0FBUztnQkFDdkIsZ0JBQWdCLEVBQUUsRUFBRTtnQkFDcEIsV0FBVyxFQUFFLEVBQUU7YUFDaEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsdUNBQXVDLEVBQUUsS0FBSztZQUMvQyxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUM7WUFDOUIsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7WUFDbkMsTUFBTSxFQUFFLEdBQUcsTUFBTSxPQUFPO2lCQUNyQiwyQkFBMkIsRUFBRTtpQkFDN0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7aUJBQ2xCLEtBQUssQ0FBQyxTQUFTLENBQUM7aUJBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUM7aUJBQ2YsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUM7aUJBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUM7aUJBQ2pCLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztpQkFDckIsS0FBSyxFQUFFLENBQUM7WUFDWCxNQUFNLG1CQUFtQixHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ25ELE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxRQUFRLENBQUMsa0JBQWtCLENBQUM7Z0JBQzdELFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLE9BQU8sRUFBRTtvQkFDUCxHQUFHLEVBQUUsTUFBTTtpQkFDWjtnQkFDRCw0QkFBNEIsRUFBRSxnQkFBZ0I7YUFDL0MsQ0FBQyxDQUFDO1lBQ0gsb0JBQW9CLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztnQkFDcEMsWUFBWSxFQUFFO29CQUNaLElBQUk7b0JBQ0osTUFBTTtvQkFDTixXQUFXO29CQUNYLGNBQWM7b0JBQ2QsY0FBYztvQkFDZCxjQUFjO29CQUNkLFNBQVM7b0JBQ1QsZUFBZTtvQkFDZixrQkFBa0I7b0JBQ2xCLEtBQUs7b0JBQ0wsTUFBTTtpQkFDUDtnQkFDRCxFQUFFLEVBQUUsYUFBYTtnQkFDakIsSUFBSSxFQUFFLHNDQUFzQztnQkFDNUMsYUFBYSxFQUFFLEVBQUU7Z0JBQ2pCLFlBQVksRUFBRSxHQUFHO2dCQUNqQixZQUFZLEVBQUUsR0FBRztnQkFDakIsT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsUUFBUSxFQUFFLDhDQUE4QztnQkFDeEQsR0FBRyxFQUFFO29CQUNILEdBQUcsRUFBRSxTQUFTO29CQUNkLE9BQU8sRUFBRSxJQUFJO2lCQUNkO2dCQUNELElBQUksRUFBRSxXQUFXO2dCQUNqQixTQUFTLEVBQUUsOENBQThDO2dCQUN6RCxZQUFZLEVBQUUsU0FBUztnQkFDdkIsZ0JBQWdCLEVBQUU7b0JBQ2hCO3dCQUNFLE9BQU8sRUFBRSw4Q0FBOEM7d0JBQ3ZELFlBQVksRUFBRSw4Q0FBOEM7d0JBQzVELFNBQVMsRUFBRSxXQUFXO3FCQUN2QjtpQkFDRjtnQkFDRCxXQUFXLEVBQUU7b0JBQ1gsOENBQThDLEVBQUUsOENBQThDO2lCQUMvRjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDZDQUE2QyxFQUFFLEtBQUs7WUFDckQsTUFBTSxVQUFVLEdBQUc7Z0JBQ2pCO29CQUNFLFlBQVksRUFBRSxNQUFNLENBQUMsR0FBRztvQkFDeEIsU0FBUyxFQUFFLFdBQVc7aUJBQ3ZCO2dCQUNEO29CQUNFLFlBQVksRUFBRSxZQUFZLENBQUMsa0JBQWtCO29CQUM3QyxTQUFTLEVBQUUsVUFBVTtpQkFDdEI7YUFDRixDQUFDO1lBQ0YsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7WUFDbkMsTUFBTSxFQUFFLEdBQUcsTUFBTSxPQUFPO2lCQUNyQiwyQkFBMkIsRUFBRTtpQkFDN0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7aUJBQ2xCLEtBQUssQ0FBQyxTQUFTLENBQUM7aUJBQ2hCLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzFCLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzFCLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDO2lCQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDO2lCQUNqQixHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7aUJBQ3JCLEtBQUssRUFBRSxDQUFDO1lBQ1gsTUFBTSxtQkFBbUIsR0FBRyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNuRCxNQUFNLG9CQUFvQixHQUFHLE1BQU0sUUFBUSxDQUFDLGtCQUFrQixDQUFDO2dCQUM3RCxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3QixPQUFPLEVBQUU7b0JBQ1AsR0FBRyxFQUFFLE1BQU07aUJBQ1o7Z0JBQ0QsNEJBQTRCLEVBQUUsZ0JBQWdCO2FBQy9DLENBQUMsQ0FBQztZQUNILG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7Z0JBQ3BDLFlBQVksRUFBRTtvQkFDWixJQUFJO29CQUNKLE1BQU07b0JBQ04sV0FBVztvQkFDWCxjQUFjO29CQUNkLGNBQWM7b0JBQ2QsY0FBYztvQkFDZCxTQUFTO29CQUNULGVBQWU7b0JBQ2Ysa0JBQWtCO29CQUNsQixLQUFLO29CQUNMLE1BQU07aUJBQ1A7Z0JBQ0QsRUFBRSxFQUFFLGFBQWE7Z0JBQ2pCLElBQUksRUFBRSxzQ0FBc0M7Z0JBQzVDLGFBQWEsRUFBRSxFQUFFO2dCQUNqQixZQUFZLEVBQUUsR0FBRztnQkFDakIsWUFBWSxFQUFFLEdBQUc7Z0JBQ2pCLE9BQU8sRUFBRSxFQUFFO2dCQUNYLE1BQU0sRUFBRSxFQUFFO2dCQUNWLFFBQVEsRUFBRSw4Q0FBOEM7Z0JBQ3hELEdBQUcsRUFBRTtvQkFDSCxHQUFHLEVBQUUsU0FBUztvQkFDZCxPQUFPLEVBQUUsSUFBSTtpQkFDZDtnQkFDRCxJQUFJLEVBQUUsV0FBVztnQkFDakIsU0FBUyxFQUFFLDhDQUE4QztnQkFDekQsWUFBWSxFQUFFLFNBQVM7Z0JBQ3ZCLGdCQUFnQixFQUFFO29CQUNoQjt3QkFDRSxPQUFPLEVBQUUsOENBQThDO3dCQUN2RCxZQUFZLEVBQUUsOENBQThDO3dCQUM1RCxTQUFTLEVBQUUsV0FBVztxQkFDdkI7b0JBQ0Q7d0JBQ0UsT0FBTyxFQUFFLDhDQUE4Qzt3QkFDdkQsWUFBWSxFQUFFLDhDQUE4Qzt3QkFDNUQsU0FBUyxFQUFFLFVBQVU7cUJBQ3RCO2lCQUNGO2dCQUNELFdBQVcsRUFBRTtvQkFDWCw4Q0FBOEMsRUFBRSw4Q0FBOEM7b0JBQzlGLDhDQUE4QyxFQUFFLDhDQUE4QztpQkFDL0Y7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyx5RUFBeUUsRUFBRSxLQUFLO1lBQ2pGLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxRQUFRLENBQUMsa0JBQWtCLENBQUM7Z0JBQzdELFFBQVEsRUFBRSxRQUFRLENBQUMsZUFBZSxDQUFDLDRCQUE0QixDQUFDLFFBQVE7Z0JBQ3hFLE9BQU8sRUFBRTtvQkFDUCxHQUFHLEVBQUUsTUFBTTtpQkFDWjtnQkFDRCw0QkFBNEIsRUFBRSxTQUFTO2FBQ3hDLENBQUMsQ0FBQztZQUNILG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7Z0JBQ3BDLFlBQVksRUFBRTtvQkFDWixJQUFJO29CQUNKLE1BQU07b0JBQ04sV0FBVztvQkFDWCxjQUFjO29CQUNkLGNBQWM7b0JBQ2QsY0FBYztvQkFDZCxTQUFTO29CQUNULGVBQWU7b0JBQ2Ysa0JBQWtCO29CQUNsQixLQUFLO29CQUNMLE1BQU07aUJBQ1A7Z0JBQ0QsRUFBRSxFQUFFLGFBQWE7Z0JBQ2pCLElBQUksRUFBRSxNQUFNO2dCQUNaLGFBQWEsRUFBRSxFQUFFO2dCQUNqQixZQUFZLEVBQUUsR0FBRztnQkFDakIsWUFBWSxFQUFFLEdBQUc7Z0JBQ2pCLE9BQU8sRUFBRTtvQkFDUDt3QkFDRSxPQUFPLEVBQUUsOENBQThDO3dCQUN2RCxNQUFNLEVBQUUsT0FBTzt3QkFDZixTQUFTLEVBQUUsV0FBVztxQkFDdkI7aUJBQ0Y7Z0JBQ0QsTUFBTSxFQUFFO29CQUNOO3dCQUNFLE9BQU8sRUFBRSw4Q0FBOEM7d0JBQ3ZELEtBQUssRUFBRSxPQUFPO3FCQUNmO2lCQUNGO2dCQUNELFFBQVEsRUFBRSw4Q0FBOEM7Z0JBQ3hELEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRTtnQkFDdEMsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsU0FBUyxFQUFFLDhDQUE4QztnQkFDekQsWUFBWSxFQUFFLFNBQVM7Z0JBQ3ZCLGdCQUFnQixFQUFFO29CQUNoQjt3QkFDRSxPQUFPLEVBQUUsOENBQThDO3dCQUN2RCxZQUFZLEVBQUUsOENBQThDO3dCQUM1RCxTQUFTLEVBQUUsV0FBVztxQkFDdkI7aUJBQ0Y7Z0JBQ0QsV0FBVyxFQUFFO29CQUNYLDhDQUE4QyxFQUFFLDhDQUE4QztpQkFDL0Y7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUU7UUFDeEIsRUFBRSxDQUFDLDRDQUE0QyxFQUFFO1lBQy9DLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxhQUFvQixDQUFDLEVBQUUsd0NBQXdDLENBQUMsQ0FBQztRQUNoSCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyx1Q0FBdUMsRUFBRTtZQUMxQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsYUFBb0IsQ0FBQyxFQUFFLHdDQUF3QyxDQUFDLENBQUM7UUFDaEgsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUU7UUFDakMsRUFBRSxDQUFDLHlCQUF5QixFQUFFLEtBQUs7WUFDakMsTUFBTSxNQUFNLEdBQVEsTUFBTSxRQUFRLENBQUMsZUFBZSxDQUFDO2dCQUNqRCxVQUFVLEVBQUU7b0JBQ1YsUUFBUSxFQUFFLFNBQVMsQ0FBQyxlQUFlO29CQUNuQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztpQkFDdkQ7Z0JBQ0QsR0FBRyxFQUFFLFNBQVMsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLE1BQU07YUFDMUMsQ0FBQyxDQUFDO1lBQ1YsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxrREFBa0QsRUFBRSxLQUFLO1lBQzFELE1BQU0sTUFBTSxHQUFRLE1BQU0sUUFBUSxDQUFDLGVBQWUsQ0FBQztnQkFDakQsVUFBVSxFQUFFO29CQUNWLEtBQUssRUFBRSxTQUFTLENBQUMsZUFBZTtvQkFDaEMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7aUJBQ3ZEO2dCQUNELEdBQUcsRUFBRSxTQUFTLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxNQUFNO2FBQzFDLENBQUMsQ0FBQztZQUNWLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsNERBQTRELEVBQUUsS0FBSztZQUNwRSxNQUFNLFFBQVE7aUJBQ1gsZUFBZSxDQUFDO2dCQUNmLFVBQVUsRUFBRTtvQkFDVixRQUFRLEVBQUUsU0FBUyxDQUFDLGVBQWU7b0JBQ25DLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO2lCQUN2RDtnQkFDRCxHQUFHLEVBQUUsU0FBUyxDQUFDLGVBQWUsQ0FBQyxTQUFTO2FBQ2xDLENBQUM7aUJBQ1IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxjQUFjLEVBQUUsR0FBRyxFQUFFO1FBQzVCLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxLQUFLO1lBQzdCLE1BQU0sTUFBTSxHQUFHLE1BQU0sUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUNyRSxNQUFNO2lCQUNILFFBQVEsQ0FBQyxRQUFRLENBQUM7aUJBQ2xCLE1BQU0sQ0FBQyxLQUFLLENBQUMsMEZBQTBGLENBQUMsQ0FBQztRQUM5RyxDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyxpREFBaUQsRUFBRSxLQUFLO1lBQ3pELE1BQU0sUUFBUTtpQkFDWCxXQUFXLENBQUMsT0FBTyxFQUFFLFNBQWdCLENBQUM7aUJBQ3RDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUNyQix1SUFBdUksQ0FDeEksQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMscUJBQXFCLEVBQUUsR0FBRyxFQUFFO1FBQ25DLEVBQUUsQ0FBQyx1Q0FBdUMsRUFBRSxLQUFLO1lBQy9DLE1BQU0sT0FBTyxHQUFHLElBQUEscUNBQWlCLEVBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDdkQsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsOEJBQThCLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztpQkFDbEcsZUFBZSxDQUFDO1lBQ25CLE1BQU0sY0FBYyxHQUFHLE1BQU0sUUFBUSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1lBQ25HLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLG1FQUFtRSxFQUFFLEtBQUs7WUFDM0UsTUFBTSxPQUFPLEdBQUcsSUFBQSxxQ0FBaUIsRUFBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUN2RCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1lBQzFFLGdCQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMscUJBQXFCLEVBQUUsR0FBRyxFQUFFO1FBQ25DLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQztRQUNsQyxJQUFJLE9BQTJCLENBQUM7UUFFaEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLE9BQU8sR0FBRyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2IsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsMkNBQTJDLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDekQsTUFBTSxTQUFTLEdBQWM7Z0JBQzNCLFdBQVc7Z0JBQ1gsV0FBVyxFQUFFO29CQUNYO3dCQUNFLGVBQWUsRUFBRSxVQUFVO3dCQUMzQixXQUFXLEVBQUUsaUJBQWlCO3dCQUM5QixjQUFjLEVBQUUsS0FBSztxQkFDdEI7aUJBQ0Y7Z0JBQ0QsWUFBWSxFQUFFLEVBQUU7Z0JBQ2hCLElBQUksRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtnQkFDOUIsTUFBTSxFQUFFO29CQUNOLFVBQVUsRUFBRSxTQUFTO2lCQUN0QjtnQkFDRCxNQUFNLEVBQUUsSUFBSTtnQkFDWixLQUFLLEVBQUUsc0JBQXNCO2dCQUM3QixVQUFVLEVBQUUsS0FBSztnQkFDakIsUUFBUSxFQUFFLFVBQVU7Z0JBQ3BCLGVBQWUsRUFBRSxJQUFJO2dCQUNyQixPQUFPLEVBQUUsQ0FBQztnQkFDVixNQUFNLEVBQUUsUUFBUTthQUNqQixDQUFDO1lBRUYsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLG1CQUFRLENBQUMsQ0FBQztZQUMxRCxZQUFZLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hELFlBQVksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRTlDLE1BQU0sU0FBUyxHQUFHO2dCQUNoQixJQUFJLEVBQUUsS0FBSzthQUNaLENBQUM7WUFDRixNQUFNLG9CQUFvQixHQUFRLE1BQU0sUUFBUSxDQUFDLGtCQUFrQixDQUFDO2dCQUNsRSxVQUFVLEVBQUUsU0FBUztnQkFDckIsUUFBUSxFQUFFLFlBQVk7Z0JBQ3RCLFVBQVUsRUFBRTtvQkFDVixXQUFXO2lCQUNaO2FBQ0ssQ0FBQyxDQUFDO1lBRVYsb0JBQW9CLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDNUQsb0JBQW9CLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDNUQsb0JBQW9CLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNwRixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyx1Q0FBdUMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNyRCxNQUFNLFVBQVUsR0FBRztnQkFDakIsSUFBSSxFQUFFLE1BQU07YUFDYixDQUFDO1lBRUYsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQztnQkFDN0QsVUFBVSxFQUFFLFVBQVU7YUFDaEIsQ0FBQyxDQUFDO1lBQ1Ysb0JBQW9CLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztnQkFDcEMsVUFBVSxFQUFFLFVBQVU7YUFDdkIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsd0NBQXdDLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDdEQsTUFBTSxTQUFTLEdBQUc7Z0JBQ2hCLElBQUksRUFBRSxLQUFLO2FBQ1osQ0FBQztZQUNGLE1BQU0sUUFBUTtpQkFDWCxrQkFBa0IsQ0FBQztnQkFDbEIsVUFBVSxFQUFFLFNBQVM7Z0JBQ3JCLFVBQVUsRUFBRSxFQUFFO2FBQ1IsQ0FBQztpQkFDUixNQUFNLENBQUMsWUFBWSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLEVBQUU7UUFDbEMsNENBQTRDO1FBQzVDLEVBQUUsQ0FBQyxnREFBZ0QsRUFBRTtZQUNuRCxpREFBaUQ7WUFDakQsTUFBTSxHQUFHLEdBQUksUUFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ25FLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsdUJBQVksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLG1CQUFtQixDQUFDLENBQUM7UUFDOUUsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMseURBQXlELEVBQUU7WUFDNUQsaURBQWlEO1lBQ2pELE1BQU0sR0FBRyxHQUFJLFFBQWdCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNqRCxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyx1QkFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLHVCQUF1QixFQUFFLEdBQUcsRUFBRTtRQUNyQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdEMsTUFBTSxJQUFJLEdBQUcsZUFBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQixNQUFNLGVBQWUsR0FBRyw4Q0FBOEMsQ0FBQztRQUN2RSxNQUFNLGNBQWMsR0FBRyw4Q0FBOEMsQ0FBQztRQUN0RSxJQUFJLFFBQXlCLENBQUM7UUFFOUIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLFFBQVEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQUcsQ0FBQyxTQUFTLEVBQUUsaUJBQThCLENBQUMsQ0FBQztZQUV2RSxRQUFRO2lCQUNMLFFBQVEsQ0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsRUFBRSxFQUFFLEdBQUc7b0JBQ1AsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLG9CQUFvQjtvQkFDNUIsTUFBTSxFQUFFO3dCQUNOOzRCQUNFLFVBQVUsRUFBRSxXQUFXO3lCQUN4QjtxQkFDRjtpQkFDRjthQUNGLENBQUM7aUJBQ0QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUN4RCxRQUFRO2lCQUNMLFFBQVEsQ0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsRUFBRSxFQUFFLEdBQUc7b0JBQ1AsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLGtCQUFrQjtvQkFDMUIsTUFBTSxFQUFFO3dCQUNOLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTTt3QkFDbEI7NEJBQ0UsVUFBVSxFQUFFLFdBQVc7eUJBQ3hCO3FCQUNGO2lCQUNGO2FBQ0YsQ0FBQztpQkFDRCxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1lBQzdELFFBQVE7aUJBQ0wsUUFBUSxDQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxFQUFFLEVBQUUsR0FBRztvQkFDUCxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUsbUNBQW1DO29CQUMzQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUM7aUJBQ2Q7YUFDRixDQUFDO2lCQUNELFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLHlDQUF5QyxDQUFDLENBQUM7WUFDN0UsUUFBUTtpQkFDTCxRQUFRLENBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLEVBQUUsRUFBRSxHQUFHO29CQUNQLE9BQU8sRUFBRSxLQUFLO29CQUNkLE1BQU0sRUFBRSxZQUFZO29CQUNwQixNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDO2lCQUNwRDthQUNGLENBQUM7aUJBQ0QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMseUJBQXlCLENBQUMsQ0FBQztZQUM3RCxRQUFRO2lCQUNMLFFBQVEsQ0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsRUFBRSxFQUFFLEdBQUc7b0JBQ1AsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLFlBQVk7b0JBQ3BCLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsMkJBQTJCLENBQUM7aUJBQzNEO2FBQ0YsQ0FBQztpQkFDRCxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1lBQ3BFLFFBQVE7aUJBQ0wsUUFBUSxDQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxFQUFFLEVBQUUsR0FBRztvQkFDUCxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUsWUFBWTtvQkFDcEIsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxnQ0FBZ0MsQ0FBQztpQkFDaEU7YUFDRixDQUFDO2lCQUNELFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLHFDQUFxQyxDQUFDLENBQUM7WUFDekUsUUFBUTtpQkFDTCxRQUFRLENBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLEVBQUUsRUFBRSxHQUFHO29CQUNQLE9BQU8sRUFBRSxLQUFLO29CQUNkLE1BQU0sRUFBRSxZQUFZO29CQUNwQixNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLGdDQUFnQyxDQUFDO2lCQUNoRTthQUNGLENBQUM7aUJBQ0QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMscUNBQXFDLENBQUMsQ0FBQztZQUN6RSxRQUFRO2lCQUNMLFFBQVEsQ0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsRUFBRSxFQUFFLEdBQUc7b0JBQ1AsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLFlBQVk7b0JBQ3BCLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsa0NBQWtDLENBQUM7aUJBQ2xFO2FBQ0YsQ0FBQztpQkFDRCxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1lBQ3pFLFFBQVE7aUJBQ0wsUUFBUSxDQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxFQUFFLEVBQUUsR0FBRztvQkFDUCxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUsWUFBWTtvQkFDcEIsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUM7aUJBQ2hEO2FBQ0YsQ0FBQztpQkFDRCxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1lBQ3pFLFFBQVE7aUJBQ0wsUUFBUSxDQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxFQUFFLEVBQUUsR0FBRztvQkFDUCxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUsWUFBWTtvQkFDcEIsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQztpQkFDckQ7YUFDRixDQUFDO2lCQUNELFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLHFDQUFxQyxDQUFDLENBQUM7WUFDekUsUUFBUTtpQkFDTCxRQUFRLENBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLEVBQUUsRUFBRSxHQUFHO29CQUNQLE9BQU8sRUFBRSxLQUFLO29CQUNkLE1BQU0sRUFBRSxnQkFBZ0I7b0JBQ3hCLE1BQU0sRUFBRTt3QkFDTixRQUFRLENBQUMsWUFBWSxDQUFDLGVBQWU7d0JBQ3JDOzRCQUNFLFFBQVEsRUFBRSxZQUFZO3lCQUN2QjtxQkFDRjtpQkFDRjthQUNGLENBQUM7aUJBQ0QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUN4RCxRQUFRO2lCQUNMLFFBQVEsQ0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsRUFBRSxFQUFFLEdBQUc7b0JBQ1AsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLGdCQUFnQjtvQkFDeEIsTUFBTSxFQUFFO3dCQUNOLFFBQVEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCO3dCQUNoQzs0QkFDRSxRQUFRLEVBQUUsWUFBWTt5QkFDdkI7cUJBQ0Y7aUJBQ0Y7YUFDRixDQUFDO2lCQUNELFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLENBQUM7WUFDMUQsUUFBUTtpQkFDTCxRQUFRLENBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLEVBQUUsRUFBRSxHQUFHO29CQUNQLE9BQU8sRUFBRSxLQUFLO29CQUNkLE1BQU0sRUFBRSx5QkFBeUI7b0JBQ2pDLE1BQU0sRUFBRTt3QkFDTixRQUFRLENBQUMsSUFBSSxDQUFDLGlCQUFpQjt3QkFDL0I7NEJBQ0UsU0FBUyxFQUFFLDZDQUE2Qzt5QkFDekQ7d0JBQ0Q7NEJBQ0UsUUFBUSxFQUFFLFlBQVk7eUJBQ3ZCO3FCQUNGO2lCQUNGO2FBQ0YsQ0FBQztpQkFDRCxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1lBQzdFLFFBQVE7aUJBQ0wsUUFBUSxDQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxFQUFFLEVBQUUsR0FBRztvQkFDUCxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUseUJBQXlCO29CQUNqQyxNQUFNLEVBQUU7d0JBQ04sUUFBUSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0I7d0JBQ3pDOzRCQUNFLFNBQVMsRUFBRSw2Q0FBNkM7eUJBQ3pEO3dCQUNEOzRCQUNFLFFBQVEsRUFBRSxZQUFZO3lCQUN2QjtxQkFDRjtpQkFDRjthQUNGLENBQUM7aUJBQ0QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMseUNBQXlDLENBQUMsQ0FBQztZQUM3RSxRQUFRO2lCQUNMLFFBQVEsQ0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsRUFBRSxFQUFFLEdBQUc7b0JBQ1AsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLHlCQUF5QjtvQkFDakMsTUFBTSxFQUFFO3dCQUNOLFFBQVEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCO3dCQUNoQzs0QkFDRSxTQUFTLEVBQUUsNkNBQTZDO3lCQUN6RDt3QkFDRDs0QkFDRSxRQUFRLEVBQUUsWUFBWTt5QkFDdkI7cUJBQ0Y7aUJBQ0Y7YUFDRixDQUFDO2lCQUNELFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLCtCQUErQixDQUFDLENBQUM7WUFDbkUsUUFBUTtpQkFDTCxRQUFRLENBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLEVBQUUsRUFBRSxHQUFHO29CQUNQLE9BQU8sRUFBRSxLQUFLO29CQUNkLE1BQU0sRUFBRSx5QkFBeUI7b0JBQ2pDLE1BQU0sRUFBRTt3QkFDTixRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQjt3QkFDaEM7NEJBQ0UsU0FBUyxFQUFFLDZDQUE2Qzt5QkFDekQ7d0JBQ0Q7NEJBQ0UsUUFBUSxFQUFFLFlBQVk7eUJBQ3ZCO3FCQUNGO2lCQUNGO2FBQ0YsQ0FBQztpQkFDRCxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1lBQzlFLFFBQVE7aUJBQ0wsUUFBUSxDQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxFQUFFLEVBQUUsR0FBRztvQkFDUCxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUseUJBQXlCO29CQUNqQyxNQUFNLEVBQUU7d0JBQ04sUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjO3dCQUMvQjs0QkFDRSxTQUFTLEVBQUUsNkNBQTZDO3lCQUN6RDt3QkFDRDs0QkFDRSxRQUFRLEVBQUUsWUFBWTt5QkFDdkI7cUJBQ0Y7aUJBQ0Y7YUFDRixDQUFDO2lCQUNELFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLHlDQUF5QyxDQUFDLENBQUM7WUFDN0UsUUFBUTtpQkFDTCxRQUFRLENBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLEVBQUUsRUFBRSxHQUFHO29CQUNQLE9BQU8sRUFBRSxLQUFLO29CQUNkLE1BQU0sRUFBRSx5QkFBeUI7b0JBQ2pDLE1BQU0sRUFBRTt3QkFDTixRQUFRLENBQUMsT0FBTyxDQUFDLGNBQWM7d0JBQy9COzRCQUNFLFNBQVMsRUFBRSw2Q0FBNkM7eUJBQ3pEO3dCQUNEOzRCQUNFLFFBQVEsRUFBRSxZQUFZO3lCQUN2QjtxQkFDRjtpQkFDRjthQUNGLENBQUM7aUJBQ0QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztZQUNwRSxRQUFRO2lCQUNMLFFBQVEsQ0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsRUFBRSxFQUFFLEdBQUc7b0JBQ1AsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLHlCQUF5QjtvQkFDakMsTUFBTSxFQUFFO3dCQUNOLFFBQVEsQ0FBQyxPQUFPLENBQUMsY0FBYzt3QkFDL0I7NEJBQ0UsU0FBUyxFQUFFLDZDQUE2Qzt5QkFDekQ7d0JBQ0Q7NEJBQ0UsUUFBUSxFQUFFLFlBQVk7eUJBQ3ZCO3FCQUNGO2lCQUNGO2FBQ0YsQ0FBQztpQkFDRCxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1lBQ3BFLFFBQVE7aUJBQ0wsUUFBUSxDQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxFQUFFLEVBQUUsR0FBRztvQkFDUCxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUsWUFBWTtvQkFDcEIsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7aUJBQzFDO2FBQ0YsQ0FBQztpQkFDRCxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1lBQzdELFFBQVE7aUJBQ0wsUUFBUSxDQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxFQUFFLEVBQUUsR0FBRztvQkFDUCxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUseUJBQXlCO29CQUNqQyxNQUFNLEVBQUU7d0JBQ04sUUFBUSxDQUFDLElBQUksQ0FBQyxpQkFBaUI7d0JBQy9COzRCQUNFLFNBQVMsRUFBRSw2Q0FBNkM7eUJBQ3pEO3dCQUNEOzRCQUNFLFFBQVEsRUFBRSxZQUFZO3lCQUN2QjtxQkFDRjtpQkFDRjthQUNGLENBQUM7aUJBQ0QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMseUNBQXlDLENBQUMsQ0FBQztZQUM3RSxRQUFRO2lCQUNMLFFBQVEsQ0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsRUFBRSxFQUFFLEdBQUc7b0JBQ1AsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLGlCQUFpQjtvQkFDekIsTUFBTSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSztpQkFDMUI7YUFDRixDQUFDO2lCQUNELE1BQU0sQ0FBQyxDQUFDLENBQUM7aUJBQ1QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsNEJBQTRCLENBQUM7aUJBQzVELE1BQU0sQ0FBQyxDQUFDLENBQUM7aUJBQ1QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUNuRSxDQUFDLENBQUMsQ0FBQztRQUVILFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDYixPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsZ0VBQWdFLEVBQUUsS0FBSztZQUN4RSxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDO1lBQ3BDLE1BQU0sV0FBVyxHQUFHLE1BQU0sUUFBUSxDQUFDLG1DQUFtQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQy9FLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ25ELHNnQkFBc2dCLENBQ3ZnQixDQUFDO1lBQ0YsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdELENBQUMsV0FBVyxDQUFDLGFBQWEsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLCtFQUErRSxFQUFFLEtBQUs7WUFDdkYsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQztZQUNwQyxNQUFNLFdBQVcsR0FBRyxNQUFNLFFBQVEsQ0FBQyxtQ0FBbUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMvRSxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNuRCxzZ0JBQXNnQixDQUN2Z0IsQ0FBQztZQUNGLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3RCxDQUFDLFdBQVcsQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxzRkFBc0YsRUFBRSxLQUFLO1lBQzlGLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUM7WUFDckMsTUFBTSxXQUFXLEdBQUcsTUFBTSxRQUFRLENBQUMsbUNBQW1DLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDL0UsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDbkQsc2dCQUFzZ0IsQ0FDdmdCLENBQUM7WUFDRixDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0QsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDbkQsc2dCQUFzZ0IsQ0FDdmdCLENBQUM7WUFDRixDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0QsQ0FBQyxXQUFXLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsa0VBQWtFLEVBQUUsS0FBSztZQUMxRSxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQVksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1lBRXhFLHlDQUF5QztZQUN6QyxNQUFNLGtCQUFrQixHQUFHLE1BQU0sUUFBUSxDQUFDLE9BQU8sQ0FBQztnQkFDaEQsT0FBTyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTztnQkFDOUIsU0FBUyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUztnQkFDbEMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUTtnQkFDaEMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxpQkFBaUI7Z0JBQ3BELGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYzthQUMvQyxDQUFDLENBQUM7WUFDSCxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN6QyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3pELGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDdEQsTUFBTSxDQUFDLEtBQUssQ0FBRSxrQkFBNEIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFekQsTUFBTSw2QkFBNkIsR0FBRyxJQUFJLGlCQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUQsNkJBQTZCLENBQUMsa0JBQWtCLENBQUUsa0JBQTRCLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDN0YsTUFBTSxzQkFBc0IsR0FBRyw2QkFBNkIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUV0RSxNQUFNLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzVFLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUN6RixNQUFNLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLHlCQUF5QixDQUFDLENBQUM7WUFDcEcsTUFBTSxPQUFPLEdBQUcsUUFBZSxDQUFDO1lBQ2hDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckQsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQywrREFBK0QsRUFBRSxLQUFLO1lBQ3ZFLE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBWSxFQUFFLGlCQUFpQixDQUFDLENBQUM7WUFFeEUsc0NBQXNDO1lBQ3RDLE1BQU0sZUFBZSxHQUFHLE1BQU0sUUFBUSxDQUFDLE9BQU8sQ0FBQztnQkFDN0MsT0FBTyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTztnQkFDOUIsU0FBUyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUztnQkFDbEMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUTtnQkFDaEMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxpQkFBaUI7Z0JBQ3BELGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYztnQkFDOUMsWUFBWSxFQUFFO29CQUNaLFNBQVMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQjtvQkFDM0MsU0FBUyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CO2lCQUM3QzthQUNGLENBQUMsQ0FBQztZQUVILGVBQWUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0QyxlQUFlLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUN0RCxlQUFlLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNuRCxNQUFNLENBQUMsS0FBSyxDQUFFLGVBQXlCLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRXRELE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxpQkFBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pELDBCQUEwQixDQUFDLGtCQUFrQixDQUFFLGVBQXlCLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDdkYsTUFBTSxtQkFBbUIsR0FBRywwQkFBMEIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUVoRSxNQUFNLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDckYsTUFBTSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ3RGLE1BQU0sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUM5RixNQUFNLE9BQU8sR0FBRyxRQUFlLENBQUM7WUFDaEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNyRCxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLG9EQUFvRCxFQUFFLEtBQUs7WUFDNUQsMEJBQTBCO1lBQzFCLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUM7Z0JBQy9DLFFBQVEsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVE7Z0JBQ2hDLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCO2dCQUNwRCxZQUFZLEVBQUU7b0JBQ1osU0FBUyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCO29CQUMzQyxTQUFTLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxtQkFBbUI7aUJBQzdDO2FBQ0YsQ0FBQyxDQUFnQixDQUFDO1lBRW5CLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3ZDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDaEcsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM3RixNQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUVyRixNQUFNLDJCQUEyQixHQUFHLElBQUksaUJBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxRCwyQkFBMkIsQ0FBQyxrQkFBa0IsQ0FDNUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUN2RSxDQUFDO1lBQ0YsTUFBTSxvQkFBb0IsR0FBRywyQkFBMkIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUVsRSxNQUFNLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDdEYsTUFBTSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ3ZGLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsdUJBQXVCLENBQUMsQ0FBQztZQUNoRyxNQUFNLE9BQU8sR0FBRyxRQUFlLENBQUM7WUFDaEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw2RkFBNkYsRUFBRSxLQUFLO1lBQ3JHLHlGQUF5RjtZQUN6Rix1RkFBdUY7WUFDdkYscUZBQXFGO1lBQ3JGLG9FQUFvRTtZQUNwRSxNQUFNLGdCQUFnQixHQUFHLENBQUMsTUFBTSxRQUFRLENBQUMsT0FBTyxDQUFDO2dCQUMvQyxPQUFPLEVBQUUsRUFBRTtnQkFDWCxTQUFTLEVBQUUsRUFBRTtnQkFDYixRQUFRLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRO2dCQUNoQyxtQkFBbUIsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLGlCQUFpQjtnQkFDcEQsWUFBWSxFQUFFO29CQUNaLFNBQVMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQjtvQkFDM0MsU0FBUyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CO2lCQUM3QzthQUNGLENBQUMsQ0FBZ0IsQ0FBQztZQUVuQixnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN2QyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ2hHLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRXJGLE1BQU0sMkJBQTJCLEdBQUcsSUFBSSxpQkFBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFELDJCQUEyQixDQUFDLGtCQUFrQixDQUM1QyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQ3ZFLENBQUM7WUFDRixNQUFNLG9CQUFvQixHQUFHLDJCQUEyQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBRWxFLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUN0RixNQUFNLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDdkYsTUFBTSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ2xHLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGtGQUFrRixFQUFFLEtBQUs7WUFDMUYsa0JBQWtCO1lBQ2xCLE1BQU0sUUFBUTtpQkFDWCxPQUFPLENBQUM7Z0JBQ1AsU0FBUyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUztnQkFDbEMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUTtnQkFDaEMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxpQkFBaUI7Z0JBQ3BELGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYzthQUMvQyxDQUFDO2lCQUNELE1BQU0sQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUUxQyxvQkFBb0I7WUFDcEIsTUFBTSxRQUFRO2lCQUNYLE9BQU8sQ0FBQztnQkFDUCxPQUFPLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPO2dCQUM5QixRQUFRLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRO2dCQUNoQyxtQkFBbUIsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLGlCQUFpQjtnQkFDcEQsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjO2FBQy9DLENBQUM7aUJBQ0QsTUFBTSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBRTVDLGdFQUFnRTtZQUNoRSxNQUFNLFFBQVE7aUJBQ1gsT0FBTyxDQUFDO2dCQUNQLE9BQU8sRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU87Z0JBQzlCLFNBQVMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVM7Z0JBQ2xDLFFBQVEsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVE7Z0JBQ2hDLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCO2dCQUNwRCxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxXQUFXO2FBQzdELENBQUM7aUJBQ0QsTUFBTSxDQUFDLFlBQVksQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1lBRTdFLGtDQUFrQztZQUNsQyxNQUFNLFFBQVE7aUJBQ1gsT0FBTyxDQUFDO2dCQUNQLE9BQU8sRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU87Z0JBQzlCLFNBQVMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVM7Z0JBQ2xDLFFBQVEsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWU7Z0JBQ3ZDLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCO2dCQUNwRCxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWM7YUFDL0MsQ0FBQztpQkFDRCxNQUFNLENBQUMsWUFBWSxDQUFDLDRDQUE0QyxDQUFDLENBQUM7UUFDdkUsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsbUZBQW1GLEVBQUUsS0FBSztZQUMzRixNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQVksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1lBRXhFLE1BQU0sUUFBUSxHQUFHLE1BQU0sUUFBUSxDQUFDLE9BQU8sQ0FBQztnQkFDdEMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTztnQkFDakMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUztnQkFDckMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUTtnQkFDbkMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxpQkFBaUI7Z0JBQ3BELG9CQUFvQixFQUFFLGVBQWU7Z0JBQ3JDLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCO2dCQUNuRCxZQUFZLEVBQUU7b0JBQ1osU0FBUyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCO29CQUMzQyxTQUFTLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxtQkFBbUI7aUJBQzdDO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQy9CLFFBQVEsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQy9DLFFBQVEsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzVDLE1BQU0sQ0FBQyxLQUFLLENBQUUsUUFBa0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFL0MsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGlCQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEQsbUJBQW1CLENBQUMsa0JBQWtCLENBQUUsUUFBa0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN6RSxNQUFNLFlBQVksR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUVsRCxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQzlFLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3JFLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLENBQUM7WUFFdkYsTUFBTSxnQkFBZ0IsR0FBRyxZQUFZLENBQUMsZ0JBQXVDLENBQUM7WUFDOUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDekMsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFFdkQsTUFBTSwyQkFBMkIsR0FBRyxNQUFNLElBQUEsd0NBQWdDLEVBQ3hFLGVBQWUsRUFDZixRQUFRLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUNoQyxDQUFDO1lBQ0YsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsOEJBQThCLENBQUMsQ0FBQztZQUN2RSxNQUFNLENBQUMsS0FBSyxDQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBYSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsZUFBZSxDQUFDLENBQUM7WUFDbkYsTUFBTSxDQUFDLEtBQUssQ0FBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQWEsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLDJCQUEyQixDQUFDLENBQUM7WUFDOUYsTUFBTSxDQUFDLEtBQUssQ0FBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQWEsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUNwRyxNQUFNLENBQUMsS0FBSyxDQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBYSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDN0UsTUFBTSxDQUFDLEtBQUssQ0FBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQWEsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7WUFFcEcsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLElBQUEsd0NBQWdDLEVBQ25FLGVBQWUsRUFDZixRQUFRLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FDaEMsQ0FBQztZQUNGLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBQ3hELE1BQU0sQ0FBQyxLQUFLLENBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFtQixDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUN6RyxNQUFNLENBQUMsS0FBSyxDQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBbUIsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLDJCQUEyQixDQUFDLENBQUM7WUFDbkcsTUFBTSxDQUFDLEtBQUssQ0FBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQW1CLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztZQUNqRixNQUFNLENBQUMsS0FBSyxDQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBbUIsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQ25GLE1BQU0sQ0FBQyxLQUFLLENBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFtQixDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztZQUVsRyxNQUFNLE9BQU8sR0FBRyxRQUFlLENBQUM7WUFDaEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNyRCxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHdGQUF3RixFQUFFLEtBQUs7WUFDaEcsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUFZLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztZQUV4RSxNQUFNLFFBQVEsR0FBRyxNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUM7Z0JBQ3RDLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU87Z0JBQ2pDLFNBQVMsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLFNBQVM7Z0JBQ3JDLFFBQVEsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVE7Z0JBQ25DLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCO2dCQUNwRCxvQkFBb0IsRUFBRSxjQUFjO2dCQUNwQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLGdCQUFnQjtnQkFDbkQsWUFBWSxFQUFFO29CQUNaLFNBQVMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQjtvQkFDM0MsU0FBUyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CO2lCQUM3QztnQkFDRCxTQUFTLEVBQUUsNkNBQTZDO2FBQ3pELENBQUMsQ0FBQztZQUVILFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMvQixRQUFRLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMvQyxRQUFRLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM1QyxNQUFNLENBQUMsS0FBSyxDQUFFLFFBQWtCLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRS9DLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxpQkFBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xELG1CQUFtQixDQUFDLGtCQUFrQixDQUFFLFFBQWtCLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDekUsTUFBTSxZQUFZLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxFQUFFLENBQUM7WUFFbEQsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUM5RSxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNyRSxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBRXZGLE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLGdCQUF1QyxDQUFDO1lBQzlFLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBRXZELE1BQU0sdUJBQXVCLEdBQUcsTUFBTSxJQUFBLHdDQUFnQyxFQUNwRSxjQUFjLEVBQ2QsUUFBUSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FDaEMsQ0FBQztZQUNGLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLDhCQUE4QixDQUFDLENBQUM7WUFDdkUsTUFBTSxDQUFDLEtBQUssQ0FBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQWEsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBQ2xGLE1BQU0sQ0FBQyxLQUFLLENBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFhLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1lBQzFGLE1BQU0sQ0FBQyxLQUFLLENBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFhLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDcEcsTUFBTSxDQUFDLEtBQUssQ0FBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQWEsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBQ2hGLE1BQU0sQ0FBQyxLQUFLLENBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFhLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBRXBHLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxJQUFBLHdDQUFnQyxFQUMvRCxjQUFjLEVBQ2QsUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQ2hDLENBQUM7WUFDRixNQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQztZQUN4RCxNQUFNLENBQUMsS0FBSyxDQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBbUIsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDekcsTUFBTSxDQUFDLEtBQUssQ0FBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQW1CLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1lBQy9GLE1BQU0sQ0FBQyxLQUFLLENBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFtQixDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDakYsTUFBTSxDQUFDLEtBQUssQ0FBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQW1CLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztZQUN0RixNQUFNLENBQUMsS0FBSyxDQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBbUIsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLGtCQUFrQixDQUFDLENBQUM7WUFDOUYsTUFBTSxDQUFDLEtBQUssQ0FDVCxnQkFBZ0IsQ0FBQyxDQUFDLENBQW1CLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFDdkQsNkNBQTZDLENBQzlDLENBQUM7WUFFRixNQUFNLE9BQU8sR0FBRyxRQUFlLENBQUM7WUFDaEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNyRCxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGdGQUFnRixFQUFFLEtBQUs7WUFDeEYsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUFZLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztZQUV4RSxNQUFNLFFBQVEsR0FBRyxNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUM7Z0JBQ3RDLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU87Z0JBQ2pDLFNBQVMsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLFNBQVM7Z0JBQ3JDLFFBQVEsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVE7Z0JBQ25DLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCO2dCQUNyRCxvQkFBb0IsRUFBRSxlQUFlO2dCQUNyQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLGdCQUFnQjtnQkFDbkQsWUFBWSxFQUFFO29CQUNaLFNBQVMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQjtvQkFDM0MsU0FBUyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CO2lCQUM3QzthQUNGLENBQUMsQ0FBQztZQUVILFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMvQixRQUFRLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMvQyxRQUFRLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM1QyxNQUFNLENBQUMsS0FBSyxDQUFFLFFBQWtCLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRS9DLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxpQkFBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xELG1CQUFtQixDQUFDLGtCQUFrQixDQUFFLFFBQWtCLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDekUsTUFBTSxZQUFZLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxFQUFFLENBQUM7WUFFbEQsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUM5RSxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNyRSxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBRXZGLE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLGdCQUFtQyxDQUFDO1lBQzFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBRXZELE1BQU0sc0JBQXNCLEdBQUcsTUFBTSxJQUFBLHdDQUFnQyxFQUNuRSxlQUFlLEVBQ2YsUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQ2hDLENBQUM7WUFDRixNQUFNLDJCQUEyQixHQUFHLE1BQU0sSUFBQSx3Q0FBZ0MsRUFDeEUsZUFBZSxFQUNmLFFBQVEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQ2pDLENBQUM7WUFDRixNQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQztZQUN4RCxNQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUN0RixNQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsMkJBQTJCLENBQUMsQ0FBQztZQUNoRixNQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDOUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQ2hFLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1lBRS9FLE1BQU0sT0FBTyxHQUFHLFFBQWUsQ0FBQztZQUNoQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JELE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMscUZBQXFGLEVBQUUsS0FBSztZQUM3RixNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQVksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1lBRXhFLE1BQU0sUUFBUSxHQUFHLE1BQU0sUUFBUSxDQUFDLE9BQU8sQ0FBQztnQkFDdEMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTztnQkFDakMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUztnQkFDckMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUTtnQkFDbkMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxrQkFBa0I7Z0JBQ3JELG9CQUFvQixFQUFFLGNBQWM7Z0JBQ3BDLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCO2dCQUNuRCxZQUFZLEVBQUU7b0JBQ1osU0FBUyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCO29CQUMzQyxTQUFTLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxtQkFBbUI7aUJBQzdDO2dCQUNELFNBQVMsRUFBRSxpQ0FBcUIsQ0FBQyxRQUFRLEVBQUU7YUFDNUMsQ0FBQyxDQUFDO1lBRUgsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQy9CLFFBQVEsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQy9DLFFBQVEsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzVDLE1BQU0sQ0FBQyxLQUFLLENBQUUsUUFBa0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFL0MsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGlCQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEQsbUJBQW1CLENBQUMsa0JBQWtCLENBQUUsUUFBa0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN6RSxNQUFNLFlBQVksR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsRCxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzFCLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDOUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDckUsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUV2RixNQUFNLGdCQUFnQixHQUFHLFlBQVksQ0FBQyxnQkFBbUMsQ0FBQztZQUMxRSxNQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN6QyxNQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztZQUV2RCxNQUFNLHNCQUFzQixHQUFHLE1BQU0sSUFBQSx3Q0FBZ0MsRUFDbkUsY0FBYyxFQUNkLFFBQVEsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUMvQixLQUFLLEVBQ0wsaUNBQXFCLENBQUMsUUFBUSxFQUFFLENBQ2pDLENBQUM7WUFDRixNQUFNLDJCQUEyQixHQUFHLE1BQU0sSUFBQSx3Q0FBZ0MsRUFDeEUsY0FBYyxFQUNkLFFBQVEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQ2hDLEtBQUssRUFDTCxpQ0FBcUIsQ0FBQyxRQUFRLEVBQUUsQ0FDakMsQ0FBQztZQUNGLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBQ3hELE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3RGLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSwyQkFBMkIsQ0FBQyxDQUFDO1lBQ2hGLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztZQUM5RCxNQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFDbkUsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLHNCQUFzQixDQUFDLENBQUM7WUFDL0UsTUFBTSxPQUFPLEdBQUcsUUFBZSxDQUFDO1lBQ2hDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckQsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw4R0FBOEcsRUFBRSxLQUFLO1lBQ3RILE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMseUJBQXlCLENBQUM7WUFDcEUsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUN0QyxRQUFRO2lCQUNMLFFBQVEsQ0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsRUFBRSxFQUFFLEdBQUc7b0JBQ1AsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLGtCQUFrQjtvQkFDMUIsTUFBTSxFQUFFO3dCQUNOLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTTt3QkFDbEI7NEJBQ0UsVUFBVSxFQUFFLFdBQVc7eUJBQ3hCO3FCQUNGO2lCQUNGO2FBQ0YsQ0FBQztpQkFDRCxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFekIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUM7Z0JBQ3ZDLFFBQVEsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVE7Z0JBQ25DLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCO2dCQUNyRCxZQUFZLEVBQUU7b0JBQ1osU0FBUyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCO29CQUMzQyxTQUFTLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxtQkFBbUI7aUJBQzdDO2dCQUNELG9CQUFvQixFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsUUFBUTthQUNyRCxDQUFDLENBQWdCLENBQUM7WUFFbkIsMEZBQTBGO1lBQzFGLE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7WUFFaEMsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztZQUN6RyxnQkFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN4QixnQkFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDakMsZ0JBQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbkIsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUM5RCxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQzdDLGdCQUFNLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3BCLGdCQUFNLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLFlBQVksS0FBSyxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzVFLGdCQUFNLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLFlBQVksS0FBSyxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBRTlFLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxpQkFBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xELG1CQUFtQixDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN2RyxNQUFNLFlBQVksR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUVsRCxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUNwRixnQkFBTSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDM0UsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLHVCQUF1QixDQUFDLENBQUM7WUFDOUYsTUFBTSxPQUFPLEdBQUcsUUFBZSxDQUFDO1lBQ2hDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsb0VBQW9FLEVBQUUsS0FBSztZQUM1RSxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQVksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1lBRXhFLE1BQU0sWUFBWSxHQUFHLE1BQU0sUUFBUSxDQUFDLGVBQWUsQ0FBQztnQkFDbEQsT0FBTyxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsT0FBTztnQkFDdEMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsU0FBUztnQkFDMUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsUUFBUTtnQkFDeEMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxpQkFBaUI7Z0JBQzVELGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsY0FBYztnQkFDdEQsZUFBZSxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsZUFBZTtnQkFDdEQsNkJBQTZCLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyw2QkFBNkI7YUFDbkYsQ0FBQyxDQUFDO1lBQ0gsWUFBWSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25DLE1BQU0sQ0FBQyxLQUFLLENBQ1YsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFDcEIsMEZBQTBGLENBQzNGLENBQUM7WUFDRixNQUFNLENBQUMsS0FBSyxDQUNWLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQ3BCLDBGQUEwRixDQUMzRixDQUFDO1lBQ0YsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyx5RkFBeUYsRUFBRSxLQUFLO1lBQ2pHLE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBWSxFQUFFLGlCQUFpQixDQUFDLENBQUM7WUFDeEUsTUFBTSxPQUFPLEdBQUksUUFBZ0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUMvQyxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztZQUN6RixNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQztZQUM3RCxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzNCLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQzdELFNBQVMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNoRSxTQUFTLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ3RFLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDdkUsU0FBUyxDQUFDLDBCQUEwQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRWhELE1BQU0sTUFBTSxHQUFHLE1BQU0sUUFBUSxDQUFDLHVDQUF1QyxDQUNuRTtnQkFDRSxPQUFPLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxPQUFPO2dCQUN0QyxTQUFTLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxTQUFTO2dCQUMxQyxRQUFRLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxRQUFRO2dCQUN4QyxtQkFBbUIsRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLGlCQUFpQjtnQkFDNUQsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxjQUFjO2dCQUN0RCxlQUFlLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxlQUFlO2FBQ3ZELEVBQ0QsU0FBUyxFQUNULFFBQVEsQ0FBQyxZQUFZLENBQUMsb0JBQW9CLEVBQzFDLEtBQUssQ0FDTixDQUFDO1lBRUYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDN0MsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDMUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsMEVBQTBFLEVBQUUsS0FBSztZQUNsRixNQUFNLE1BQU0sR0FBRyxNQUFNLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDN0MsT0FBTyxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsT0FBTztnQkFDdEMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsU0FBUztnQkFDMUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsUUFBUTtnQkFDeEMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxpQkFBaUI7Z0JBQzVELGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsY0FBYztnQkFDdEQsZ0JBQWdCLEVBQUUsOENBQThDO2dCQUNoRSxlQUFlLEVBQUUsNkNBQTZDO2dCQUM5RCxnQkFBZ0IsRUFBRSw2Q0FBNkM7YUFDaEUsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzdCLE1BQU0sQ0FBQyxLQUFLLENBQ1YsTUFBTSxDQUFDLElBQUksRUFDWCwwRkFBMEYsQ0FDM0YsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLG9FQUFvRSxFQUFFLEtBQUs7WUFDNUUsTUFBTSxRQUFRO2lCQUNYLGdCQUFnQixDQUFDO2dCQUNoQixPQUFPLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxPQUFPO2dCQUN0QyxTQUFTLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxTQUFTO2dCQUMxQyxRQUFRLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxRQUFRO2dCQUN4QyxtQkFBbUIsRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLGlCQUFpQjtnQkFDNUQsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxjQUFjO2dCQUN0RCxlQUFlLEVBQUUsNkNBQTZDO2dCQUM5RCxnQkFBZ0IsRUFBRSw2Q0FBNkM7YUFDaEUsQ0FBQztpQkFDRCxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQ3hELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLG1FQUFtRSxFQUFFLEtBQUs7WUFDM0UsTUFBTSxRQUFRO2lCQUNYLGdCQUFnQixDQUFDO2dCQUNoQixPQUFPLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxPQUFPO2dCQUN0QyxTQUFTLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxTQUFTO2dCQUMxQyxRQUFRLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxRQUFRO2dCQUN4QyxtQkFBbUIsRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLGlCQUFpQjtnQkFDNUQsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxjQUFjO2dCQUN0RCxnQkFBZ0IsRUFBRSw4Q0FBOEM7Z0JBQ2hFLGdCQUFnQixFQUFFLDZDQUE2QzthQUNoRSxDQUFDO2lCQUNELE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsb0VBQW9FLEVBQUUsS0FBSztZQUM1RSxNQUFNLFFBQVE7aUJBQ1gsZ0JBQWdCLENBQUM7Z0JBQ2hCLE9BQU8sRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLE9BQU87Z0JBQ3RDLFNBQVMsRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLFNBQVM7Z0JBQzFDLFFBQVEsRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLFFBQVE7Z0JBQ3hDLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsaUJBQWlCO2dCQUM1RCxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLGNBQWM7Z0JBQ3RELGdCQUFnQixFQUFFLDhDQUE4QztnQkFDaEUsZUFBZSxFQUFFLDZDQUE2QzthQUMvRCxDQUFDO2lCQUNELE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDeEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQywrQkFBK0IsRUFBRSxHQUFHLEVBQUU7UUFDN0MsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNDLE1BQU0sZUFBZSxHQUFHLDhDQUE4QyxDQUFDO1FBQ3ZFLE1BQU0sY0FBYyxHQUFHLDhDQUE4QyxDQUFDO1FBQ3RFLE1BQU0sZ0JBQWdCLEdBQUcsNkNBQTZDLENBQUM7UUFDdkUsSUFBSSxRQUF5QixDQUFDO1FBQzlCLElBQUksWUFBb0IsQ0FBQztRQUN6QixJQUFJLGNBQXNCLENBQUM7UUFDM0IsSUFBSSxtQkFBMkIsQ0FBQztRQUNoQyxJQUFJLGtCQUEwQixDQUFDO1FBQy9CLElBQUksaUJBQXlCLENBQUM7UUFDOUIsSUFBSSxtQkFBMkIsQ0FBQztRQUNoQyxJQUFJLHdCQUFnQyxDQUFDO1FBQ3JDLElBQUksdUJBQStCLENBQUM7UUFDcEMsSUFBSSxrQkFBMEIsQ0FBQztRQUMvQixJQUFJLHVCQUErQixDQUFDO1FBQ3BDLElBQUksa0JBQXNDLENBQUM7UUFDM0MsSUFBSSx1QkFBMkMsQ0FBQztRQUNoRCxJQUFJLG1CQUF1QyxDQUFDO1FBRTVDLE1BQU0sQ0FBQyxLQUFLO1lBQ1YsTUFBTSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsR0FBRyxNQUFNLHFCQUFPLENBQUMseUJBQXlCLEVBQUUsQ0FBQztZQUN2RSxNQUFNLENBQUMsWUFBWSxFQUFFLGNBQWMsQ0FBQyxHQUFHLE1BQU0scUJBQU8sQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1lBQ2pGLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxNQUFNLHFCQUFPLENBQUMseUJBQXlCLEVBQUUsQ0FBQztZQUNqRSxNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO1lBRXRELFlBQVksR0FBRyxNQUFNLElBQUEsaUJBQU8sRUFBQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNoRyxjQUFjLEdBQUcsTUFBTSxJQUFBLGlCQUFPLEVBQUMsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDcEcsbUJBQW1CLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDbEQsTUFBTSxHQUFHLEdBQUcsTUFBTSx1QkFBWSxDQUFDLHlCQUF5QixFQUFFLENBQUM7WUFDM0Qsa0JBQWtCLEdBQUcsSUFBSSxhQUFPLENBQUM7Z0JBQy9CLEdBQUcsRUFBRSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7YUFDbkUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLGtCQUFrQixHQUFHLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3RELHVCQUF1QixHQUFHLElBQUksYUFBTyxDQUFDO2dCQUNwQyxHQUFHLEVBQUUsR0FBRyxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO2FBQ2xFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUVoQixpQkFBaUIsR0FBRyxNQUFNLElBQUEsaUJBQU8sRUFBQyxnQkFBZ0IsRUFBRSxZQUFZLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUMxRyxtQkFBbUIsR0FBRyxNQUFNLElBQUEsaUJBQU8sRUFBQyxnQkFBZ0IsRUFBRSxjQUFjLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUM5Ryx3QkFBd0IsR0FBRyxZQUFZLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUM1RCx1QkFBdUIsR0FBRyxJQUFJLGFBQU8sQ0FBQztnQkFDcEMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyx3QkFBd0IsRUFBRSxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQzthQUN4RSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7WUFFaEIsa0JBQWtCLEdBQUc7Z0JBQ25CLE9BQU8sRUFBRSxZQUFZO2dCQUNyQixTQUFTLEVBQUUsY0FBYztnQkFDekIsUUFBUSxFQUFFLG1CQUFtQjtnQkFDN0IsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxpQkFBaUI7Z0JBQ3BELGdCQUFnQjthQUNqQixDQUFDO1lBQ0YsdUJBQXVCLEdBQUc7Z0JBQ3hCLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFNBQVMsRUFBRSxtQkFBbUI7Z0JBQzlCLFFBQVEsRUFBRSx3QkFBd0I7Z0JBQ2xDLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCO2dCQUNwRCxnQkFBZ0I7Z0JBQ2hCLG9CQUFvQixFQUFFLGVBQWU7Z0JBQ3JDLFlBQVksRUFBRTtvQkFDWixTQUFTLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxrQkFBa0I7b0JBQzNDLFNBQVMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLG1CQUFtQjtpQkFDN0M7YUFDRixDQUFDO1lBQ0YsbUJBQW1CLEdBQUc7Z0JBQ3BCLE9BQU8sRUFBRSxZQUFZO2dCQUNyQixTQUFTLEVBQUUsY0FBYztnQkFDekIsUUFBUSxFQUFFLG1CQUFtQjtnQkFDN0IsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxpQkFBaUI7Z0JBQzVELGdCQUFnQjtnQkFDaEIsZUFBZSxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsZUFBZTtnQkFDdEQsNkJBQTZCLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyw2QkFBNkI7YUFDbkYsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLFFBQVEsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQUcsQ0FBQyxTQUFTLEVBQUUsaUJBQThCLENBQUMsQ0FBQztZQUU1RSxRQUFRO2lCQUNMLFFBQVEsQ0FBQztnQkFDUixPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUU7YUFDMUcsQ0FBQztpQkFDRCxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBRXhELFFBQVE7aUJBQ0wsUUFBUSxDQUFDO2dCQUNSLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLGtCQUFrQixDQUFDLEVBQUU7YUFDekYsQ0FBQztpQkFDRCxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1lBRTdELFFBQVE7aUJBQ0wsUUFBUSxDQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxFQUFFLEVBQUUsR0FBRztvQkFDUCxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUsa0JBQWtCO29CQUMxQixNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsQ0FBQztpQkFDMUQ7YUFDRixDQUFDO2lCQUNELFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLHlCQUF5QixDQUFDLENBQUM7WUFFN0QsUUFBUTtpQkFDTCxRQUFRLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQztpQkFDOUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMseUNBQXlDLENBQUMsQ0FBQztZQUU3RSxZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFXLENBQUMsU0FBUyxFQUFFLG1CQUFtQixDQUFDLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDOUYsQ0FBQyxDQUFDLENBQUM7UUFFSCxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2IsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDBFQUEwRSxFQUFFLEtBQUs7WUFDbEYsTUFBTSxrQkFBa0IsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLHVCQUFZLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztZQUU3RSxNQUFNLE1BQU0sR0FBRyxNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUUxRCxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDN0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDN0MsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDMUMsTUFBTSxDQUFDLEtBQUssQ0FBRSxNQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM3QyxNQUFNLENBQUMsS0FBSyxDQUNWLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sS0FBSyxZQUFZLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFDN0csa0JBQWtCLENBQ25CLENBQUM7WUFDRixZQUFZLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGdFQUFnRSxFQUFFLEtBQUs7WUFDeEUsUUFBUTtpQkFDTCxRQUFRLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQztpQkFDM0csUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMseUJBQXlCLENBQUMsQ0FBQztZQUU3RCxNQUFNLFFBQVE7aUJBQ1gsT0FBTyxDQUFDLEVBQUUsR0FBRyxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztpQkFDaEUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsMkVBQTJFLENBQUMsQ0FBQztRQUN6RyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyx5RUFBeUUsRUFBRSxLQUFLO1lBQ2pGLFFBQVE7aUJBQ0wsUUFBUSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsdUJBQXVCLENBQUMsRUFBRSxFQUFFLENBQUM7aUJBQzNHLFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLHlCQUF5QixDQUFDLENBQUM7WUFDN0QsUUFBUTtpQkFDTCxRQUFRLENBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLEVBQUUsRUFBRSxHQUFHO29CQUNQLE9BQU8sRUFBRSxLQUFLO29CQUNkLE1BQU0sRUFBRSx5QkFBeUI7b0JBQ2pDLE1BQU0sRUFBRTt3QkFDTix1QkFBdUI7d0JBQ3ZCLEVBQUUsU0FBUyxFQUFFLDZDQUE2QyxFQUFFO3dCQUM1RCxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUU7cUJBQzNCO2lCQUNGO2FBQ0YsQ0FBQztpQkFDRCxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1lBQ25FLFFBQVE7aUJBQ0wsUUFBUSxDQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxFQUFFLEVBQUUsR0FBRztvQkFDUCxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUseUJBQXlCO29CQUNqQyxNQUFNLEVBQUU7d0JBQ04sUUFBUSxDQUFDLElBQUksQ0FBQyxpQkFBaUI7d0JBQy9CLEVBQUUsU0FBUyxFQUFFLDZDQUE2QyxFQUFFO3dCQUM1RCxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUU7cUJBQzNCO2lCQUNGO2FBQ0YsQ0FBQztpQkFDRCxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1lBQzdFLFFBQVE7aUJBQ0wsUUFBUSxDQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxFQUFFLEVBQUUsR0FBRztvQkFDUCxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUsZ0JBQWdCO29CQUN4QixNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxDQUFDO2lCQUN2RTthQUNGLENBQUM7aUJBQ0QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUUxRCxNQUFNLGtCQUFrQixHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsdUJBQVksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1lBRTdFLE1BQU0sTUFBTSxHQUFHLE1BQU0sUUFBUSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBRS9ELE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM3QixNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUM3QyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMxQyxNQUFNLENBQUMsS0FBSyxDQUFFLE1BQWdCLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzdDLFlBQVksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDcEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsMkVBQTJFLEVBQUUsS0FBSztZQUNuRixRQUFRO2lCQUNMLFFBQVEsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsRUFBRSxDQUFDO2lCQUMzRyxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1lBQzdELFFBQVE7aUJBQ0wsUUFBUSxDQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxFQUFFLEVBQUUsR0FBRztvQkFDUCxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUseUJBQXlCO29CQUNqQyxNQUFNLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxDQUFDO2lCQUMvRjthQUNGLENBQUM7aUJBQ0QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMseUNBQXlDLENBQUMsQ0FBQztZQUM3RSxRQUFRO2lCQUNMLFFBQVEsQ0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsRUFBRSxFQUFFLEdBQUc7b0JBQ1AsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLHlCQUF5QjtvQkFDakMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxDQUFDO2lCQUN2RzthQUNGLENBQUM7aUJBQ0QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMseUNBQXlDLENBQUMsQ0FBQztZQUM3RSxRQUFRO2lCQUNMLFFBQVEsQ0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsRUFBRSxFQUFFLEdBQUc7b0JBQ1AsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLGdCQUFnQjtvQkFDeEIsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsQ0FBQztpQkFDdkU7YUFDRixDQUFDO2lCQUNELFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLENBQUM7WUFFMUQsTUFBTSxrQkFBa0IsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLHVCQUFZLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztZQUU3RSxNQUFNLE1BQU0sR0FBRyxNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUM7Z0JBQ3BDLEdBQUcsdUJBQXVCO2dCQUMxQixvQkFBb0IsRUFBRSxjQUFjO2dCQUNwQyxTQUFTLEVBQUUsZ0JBQWdCO2FBQzVCLENBQUMsQ0FBQztZQUVILE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM3QixNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUM3QyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMxQyxNQUFNLENBQUMsS0FBSyxDQUFFLE1BQWdCLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzdDLFlBQVksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDcEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsb0VBQW9FLEVBQUUsS0FBSztZQUM1RSxRQUFRO2lCQUNMLFFBQVEsQ0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsRUFBRSxFQUFFLEdBQUc7b0JBQ1AsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLGdCQUFnQjtvQkFDeEIsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsQ0FBQztpQkFDdkU7YUFDRixDQUFDO2lCQUNELFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLENBQUM7WUFFMUQsTUFBTSxrQkFBa0IsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLHVCQUFZLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztZQUU3RSxNQUFNLE1BQU0sR0FBRyxNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUM7Z0JBQ3BDLEdBQUcsa0JBQWtCO2dCQUNyQixZQUFZLEVBQUU7b0JBQ1osU0FBUyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCO29CQUMzQyxTQUFTLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxtQkFBbUI7aUJBQzdDO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzdCLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzdDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzFDLE1BQU0sQ0FBQyxLQUFLLENBQUUsTUFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDN0MsWUFBWSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FBQztRQUVILFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLEVBQUU7WUFDL0IsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUN0RixxQkFBcUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztZQUVsRixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLFFBQVE7cUJBQ0wsUUFBUSxDQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxFQUFFLEVBQUUsR0FBRzt3QkFDUCxPQUFPLEVBQUUsS0FBSzt3QkFDZCxNQUFNLEVBQUUsWUFBWTt3QkFDcEIsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUM7cUJBQ2hEO2lCQUNGLENBQUM7cUJBQ0QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMscUNBQXFDLENBQUMsQ0FBQztnQkFFekUsUUFBUTtxQkFDTCxRQUFRLENBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLEVBQUUsRUFBRSxHQUFHO3dCQUNQLE9BQU8sRUFBRSxLQUFLO3dCQUNkLE1BQU0sRUFBRSxZQUFZO3dCQUNwQixNQUFNLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQWUsRUFBRSxFQUFFLENBQUMsT0FBTyxLQUFLLFFBQVEsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDO3FCQUM1RjtpQkFDRixDQUFDO3FCQUNELFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLHlCQUF5QixDQUFDLENBQUM7Z0JBRTdELFFBQVE7cUJBQ0wsUUFBUSxDQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxFQUFFLEVBQUUsR0FBRzt3QkFDUCxPQUFPLEVBQUUsS0FBSzt3QkFDZCxNQUFNLEVBQUUsZ0JBQWdCO3dCQUN4QixNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsQ0FBQztxQkFDNUU7aUJBQ0YsQ0FBQztxQkFDRCxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2dCQUV4RCxRQUFRO3FCQUNMLFFBQVEsQ0FBQztvQkFDUixPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRTtpQkFDM0YsQ0FBQztxQkFDRCxNQUFNLENBQUMsQ0FBQyxDQUFDO3FCQUNULFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLDRCQUE0QixDQUFDO3FCQUM1RCxNQUFNLENBQUMsQ0FBQyxDQUFDO3FCQUNULFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLDZCQUE2QixDQUFDLENBQUM7Z0JBRWpFLElBQUksa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO2dCQUMzQixZQUFZLENBQUMsSUFBSSxDQUFDLFNBQUcsQ0FBQyxTQUFTLEVBQUUsc0JBQW1DLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLEVBQUU7b0JBQ3pGLGtCQUFrQixFQUFFLENBQUM7b0JBQ3JCLE9BQU87d0JBQ0wsSUFBSSxFQUNGLGtCQUFrQixLQUFLLENBQUM7NEJBQ3RCLENBQUMsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxNQUFNOzRCQUNoRSxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsTUFBTTtxQkFDdEUsQ0FBQztnQkFDSixDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1lBRUgsRUFBRSxDQUFDLDJFQUEyRSxFQUFFLEtBQUs7Z0JBQ25GLFFBQVE7cUJBQ0wsUUFBUSxDQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxFQUFFLEVBQUUsR0FBRzt3QkFDUCxPQUFPLEVBQUUsS0FBSzt3QkFDZCxNQUFNLEVBQUUsZ0JBQWdCO3dCQUN4QixNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsQ0FBQztxQkFDNUU7aUJBQ0YsQ0FBQztxQkFDRCxRQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQztnQkFFbkMsTUFBTSxrQkFBa0IsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLHVCQUFZLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztnQkFFN0UsTUFBTSxPQUFPLEdBQUcsTUFBTSxRQUFRLENBQUMsZUFBZSxDQUFDLG1CQUFtQixDQUFDLENBQUM7Z0JBRXBFLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDOUIsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM5RixNQUFNLENBQUMsS0FBSyxDQUNWLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sS0FBSyxZQUFZLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFDN0csa0JBQWtCLENBQ25CLENBQUM7Z0JBQ0YsWUFBWSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUNwRCxDQUFDLENBQUMsQ0FBQztZQUVILEVBQUUsQ0FBQyx3RUFBd0UsRUFBRSxLQUFLO2dCQUNoRixNQUFNLGtCQUFrQixHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsdUJBQVksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO2dCQUU3RSxNQUFNLE9BQU8sR0FBRyxNQUFNLFFBQVEsQ0FBQyxlQUFlLENBQUMsbUJBQW1CLENBQUMsQ0FBQztnQkFFcEUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM5QixNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzlGLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDL0YsTUFBTSxDQUFDLEtBQUssQ0FDVixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLEtBQUssWUFBWSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQzdHLGtCQUFrQixDQUNuQixDQUFDO2dCQUNGLFlBQVksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDcEQsQ0FBQyxDQUFDLENBQUM7WUFFSCxFQUFFLENBQUMsd0ZBQXdGLEVBQUUsS0FBSztnQkFDaEcsUUFBUTtxQkFDTCxRQUFRLENBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLEVBQUUsRUFBRSxHQUFHO3dCQUNQLE9BQU8sRUFBRSxLQUFLO3dCQUNkLE1BQU0sRUFBRSxnQkFBZ0I7d0JBQ3hCLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsZUFBZSxFQUFFLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxDQUFDO3FCQUM1RTtpQkFDRixDQUFDO3FCQUNELFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO2dCQUVuQyxNQUFNLFFBQVE7cUJBQ1gsZUFBZSxDQUFDLEVBQUUsR0FBRyxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztxQkFDekUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsMkVBQTJFLENBQUMsQ0FBQztZQUN6RyxDQUFDLENBQUMsQ0FBQztZQUVILEVBQUUsQ0FBQyx5RkFBeUYsRUFBRSxLQUFLO2dCQUNqRyxNQUFNLGtCQUFrQixHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsdUJBQVksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO2dCQUM3RSxNQUFNLE9BQU8sR0FBSSxRQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUMvQyxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztnQkFDekYsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLGdDQUFnQyxFQUFFLENBQUM7Z0JBQzdELFNBQVMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzNCLFNBQVMsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztnQkFDckMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUNoRSxTQUFTLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUN0RSxTQUFTLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztnQkFDL0MsU0FBUyxDQUFDLDBCQUEwQixDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNoRCxNQUFNLGVBQWUsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztnQkFFcEUsTUFBTSxNQUFNLEdBQUcsTUFBTSxRQUFRLENBQUMsdUNBQXVDLENBQ25FLG1CQUFtQixFQUNuQixTQUFTLEVBQ1Qsa0JBQWtCLEVBQ2xCLElBQUksQ0FDTCxDQUFDO2dCQUVGLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUM3QyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDMUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNsQyxZQUFZLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2dCQUNsRCxZQUFZLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDaEQsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztZQUMxRSxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsUUFBUSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsRUFBRTtZQUNoQyxJQUFJLG9CQUF3QyxDQUFDO1lBRTdDLE1BQU0sQ0FBQztnQkFDTCxvQkFBb0IsR0FBRztvQkFDckIsT0FBTyxFQUFFLFlBQVk7b0JBQ3JCLFNBQVMsRUFBRSxjQUFjO29CQUN6QixRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixtQkFBbUIsRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLGlCQUFpQjtvQkFDNUQsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjO29CQUM5QyxnQkFBZ0IsRUFBRSw4Q0FBOEM7b0JBQ2hFLGVBQWUsRUFBRSw2Q0FBNkM7b0JBQzlELGdCQUFnQixFQUFFLDZDQUE2QztpQkFDaEUsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1lBRUgsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQUcsQ0FBQyxTQUFTLEVBQUUsc0JBQW1DLENBQUMsQ0FBQyxRQUFRLENBQUM7b0JBQzdFLElBQUksRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxNQUFNO2lCQUNyRSxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztZQUVILEVBQUUsQ0FBQywrRUFBK0UsRUFBRSxLQUFLO2dCQUN2RixNQUFNLGtCQUFrQixHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsdUJBQVksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO2dCQUU3RSxNQUFNLE1BQU0sR0FBRyxNQUFNLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2dCQUVyRSxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDMUYsTUFBTSxDQUFDLEtBQUssQ0FDVixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLEtBQUssb0JBQW9CLENBQUMsS0FBSyxTQUFTLEVBQ3hHLElBQUksQ0FDTCxDQUFDO2dCQUNGLFlBQVksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDcEQsQ0FBQyxDQUFDLENBQUM7WUFFSCxFQUFFLENBQUMsc0ZBQXNGLEVBQUUsS0FBSztnQkFDOUYsTUFBTSxrQkFBa0IsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLHVCQUFZLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztnQkFFN0UsTUFBTSxNQUFNLEdBQUcsTUFBTSxRQUFRLENBQUMsZ0JBQWdCLENBQUM7b0JBQzdDLE9BQU8sRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLE9BQU87b0JBQ3RDLFNBQVMsRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLFNBQVM7b0JBQzFDLFFBQVEsRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLFFBQVE7b0JBQ3hDLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsaUJBQWlCO29CQUM1RCxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLGNBQWM7b0JBQ3RELGdCQUFnQixFQUFFLDhDQUE4QztvQkFDaEUsZUFBZSxFQUFFLDZDQUE2QztvQkFDOUQsZ0JBQWdCLEVBQUUsNkNBQTZDO2lCQUNoRSxDQUFDLENBQUM7Z0JBRUgsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUM3QixNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzFGLFlBQVksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDckQsQ0FBQyxDQUFDLENBQUM7WUFFSCxFQUFFLENBQUMseUZBQXlGLEVBQUUsS0FBSztnQkFDakcsTUFBTSxRQUFRO3FCQUNYLGdCQUFnQixDQUFDLEVBQUUsR0FBRyxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztxQkFDM0UsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsMkVBQTJFLENBQUMsQ0FBQztZQUN6RyxDQUFDLENBQUMsQ0FBQztZQUVILEVBQUUsQ0FBQywwRUFBMEUsRUFBRSxLQUFLO2dCQUNsRixNQUFNLFFBQVE7cUJBQ1gsZ0JBQWdCLENBQUM7b0JBQ2hCLEdBQUcsb0JBQW9CO29CQUN2QixnQkFBZ0IsRUFBRSxTQUFTO2lCQUM1QixDQUFDO3FCQUNELE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLDBCQUEwQixDQUFDLENBQUM7WUFDeEQsQ0FBQyxDQUFDLENBQUM7WUFFSCxFQUFFLENBQUMseUVBQXlFLEVBQUUsS0FBSztnQkFDakYsTUFBTSxRQUFRO3FCQUNYLGdCQUFnQixDQUFDO29CQUNoQixHQUFHLG9CQUFvQjtvQkFDdkIsZUFBZSxFQUFFLFNBQVM7aUJBQzNCLENBQUM7cUJBQ0QsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMseUJBQXlCLENBQUMsQ0FBQztZQUN2RCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsOENBQThDLEVBQUUsR0FBRyxFQUFFO1FBQzVELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN0QyxJQUFJLFlBQW9CLENBQUM7UUFDekIsSUFBSSxjQUFzQixDQUFDO1FBQzNCLElBQUksY0FBc0IsQ0FBQztRQUMzQixJQUFJLG1CQUF3QixDQUFDO1FBQzdCLElBQUksaUJBQXlCLENBQUM7UUFFOUIsTUFBTSxDQUFDLEtBQUs7WUFDVixNQUFNLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxHQUFHLE1BQU0scUJBQU8sQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1lBQ3ZFLGNBQWMsR0FBRyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUM3QyxZQUFZLEdBQUcsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JDLGNBQWMsR0FBRyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFekMsTUFBTSxHQUFHLEdBQUcsTUFBTSx1QkFBWSxDQUFDLHlCQUF5QixFQUFFLENBQUM7WUFDM0QsTUFBTSxhQUFhLEdBQUcsSUFBSSxhQUFPLENBQUM7Z0JBQ2hDLEdBQUcsRUFBRSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO2FBQzlELENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUVoQixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQUcsQ0FBQyxTQUFTLEVBQUUsaUJBQThCLENBQUMsQ0FBQztZQUM3RSxRQUFRO2lCQUNMLFFBQVEsQ0FBQztnQkFDUixPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUU7YUFDMUcsQ0FBQztpQkFDRCxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ3hELFFBQVE7aUJBQ0wsUUFBUSxDQUFDO2dCQUNSLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFO2FBQ3BGLENBQUM7aUJBQ0QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMseUJBQXlCLENBQUMsQ0FBQztZQUM3RCxRQUFRO2lCQUNMLFFBQVEsQ0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsRUFBRSxFQUFFLEdBQUc7b0JBQ1AsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLGtCQUFrQjtvQkFDMUIsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUM7aUJBQzFEO2FBQ0YsQ0FBQztpQkFDRCxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1lBRTdELGlFQUFpRTtZQUNqRSxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sUUFBUSxDQUFDLE9BQU8sQ0FBQztnQkFDcEMsT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsU0FBUyxFQUFFLEVBQUU7Z0JBQ2IsUUFBUSxFQUFFLGNBQWM7Z0JBQ3hCLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCO2FBQ3JELENBQUMsQ0FBZ0IsQ0FBQztZQUNuQixPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFFbEIsbUJBQW1CLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQyxNQUFNLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1lBQ2xFLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBQSxpQ0FBc0IsRUFDNUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxFQUMxQyxVQUFVLENBQUMsY0FBYyxFQUN6QixZQUFZLEVBQ1osY0FBYyxFQUNkLGNBQWMsQ0FDZixDQUFDO1lBQ0YsaUJBQWlCLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQztRQUVILFNBQVMsV0FBVyxDQUFDLEdBQVE7WUFDM0IsT0FBTztnQkFDTCxlQUFlLEVBQUU7b0JBQ2Y7d0JBQ0UsU0FBUyxFQUFFLG1CQUFtQjt3QkFDOUIsVUFBVSxFQUFFLE9BQU87d0JBQ25CLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQztxQkFDWDtpQkFDRjthQUN5QixDQUFDO1FBQy9CLENBQUM7UUFFRCxFQUFFLENBQUMsc0VBQXNFLEVBQUUsS0FBSztZQUM5RSxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7WUFDdkUsTUFBTSxXQUFXLEdBQUcsTUFBTSxRQUFRLENBQUMsbUNBQW1DLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFL0UsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQ3ZELG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUM1RCxDQUFDO1lBQ0YsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDL0QsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdELENBQUMsV0FBVyxDQUFDLGFBQWEsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDBDQUEwQyxFQUFFLEtBQUs7WUFDbEQsTUFBTSxVQUFVLEdBQUcsbUJBQW1CLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztZQUNsRSxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5RyxNQUFNLGlCQUFpQixHQUFHLE1BQU0sSUFBQSxpQ0FBc0IsRUFDcEQsZUFBZSxFQUNmLFVBQVUsQ0FBQyxjQUFjLEVBQ3pCLFlBQVksRUFDWixjQUFjLEVBQ2QsY0FBYyxDQUNmLENBQUM7WUFFRixNQUFNLFFBQVE7aUJBQ1gsbUNBQW1DLENBQUMsV0FBVyxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDNUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxxREFBcUQsRUFBRSxLQUFLO1lBQzdELE1BQU0sUUFBUTtpQkFDWCxtQ0FBbUMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQ3BELE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDcEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxpQ0FBaUMsRUFBRSxHQUFHLEVBQUU7UUFDL0MsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sSUFBSSxHQUFHLGVBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0IsTUFBTSxlQUFlLEdBQUcsOENBQThDLENBQUM7UUFDdkUsTUFBTSxhQUFhLEdBQUc7WUFDcEIsVUFBVSxFQUFFO2dCQUNWLFFBQVEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCO2dCQUNoQyxRQUFRLENBQUMsSUFBSSxDQUFDLG1CQUFtQjtnQkFDakMsUUFBUSxDQUFDLElBQUksQ0FBQyxtQkFBbUI7YUFDbEM7WUFDRCxTQUFTLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxtQkFBbUI7U0FDN0MsQ0FBQztRQUVGLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQUcsQ0FBQyxTQUFTLEVBQUUsaUJBQThCLENBQUMsQ0FBQztZQUU3RSxRQUFRO2lCQUNMLFFBQVEsQ0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsRUFBRSxFQUFFLEdBQUc7b0JBQ1AsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLG9CQUFvQjtvQkFDNUIsTUFBTSxFQUFFO3dCQUNOOzRCQUNFLFVBQVUsRUFBRSxXQUFXO3lCQUN4QjtxQkFDRjtpQkFDRjthQUNGLENBQUM7aUJBQ0QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUN4RCxRQUFRO2lCQUNMLFFBQVEsQ0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsRUFBRSxFQUFFLEdBQUc7b0JBQ1AsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLGtCQUFrQjtvQkFDMUIsTUFBTSxFQUFFO3dCQUNOLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTTt3QkFDbEI7NEJBQ0UsVUFBVSxFQUFFLFdBQVc7eUJBQ3hCO3FCQUNGO2lCQUNGO2FBQ0YsQ0FBQztpQkFDRCxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1lBQzdELFFBQVE7aUJBQ0wsUUFBUSxDQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxFQUFFLEVBQUUsR0FBRztvQkFDUCxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUsWUFBWTtvQkFDcEIsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7aUJBQzFDO2FBQ0YsQ0FBQztpQkFDRCxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1lBQ3BFLFFBQVE7aUJBQ0wsUUFBUSxDQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxFQUFFLEVBQUUsR0FBRztvQkFDUCxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUsWUFBWTtvQkFDcEIsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7aUJBQzFDO2FBQ0YsQ0FBQztpQkFDRCxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1lBQzdELFFBQVE7aUJBQ0wsUUFBUSxDQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxFQUFFLEVBQUUsR0FBRztvQkFDUCxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUsWUFBWTtvQkFDcEIsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7aUJBQzFDO2FBQ0YsQ0FBQztpQkFDRCxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1lBQzdELFFBQVE7aUJBQ0wsUUFBUSxDQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxFQUFFLEVBQUUsR0FBRztvQkFDUCxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUsWUFBWTtvQkFDcEIsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7aUJBQzFDO2FBQ0YsQ0FBQztpQkFDRCxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1lBQzdELFFBQVE7aUJBQ0wsUUFBUSxDQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxFQUFFLEVBQUUsR0FBRztvQkFDUCxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUsbUNBQW1DO29CQUMzQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUM7aUJBQ2Q7YUFDRixDQUFDO2lCQUNELFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLHlDQUF5QyxDQUFDLENBQUM7WUFDN0UsUUFBUTtpQkFDTCxRQUFRLENBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLEVBQUUsRUFBRSxHQUFHO29CQUNQLE9BQU8sRUFBRSxLQUFLO29CQUNkLE1BQU0sRUFBRSxnQkFBZ0I7b0JBQ3hCLE1BQU0sRUFBRTt3QkFDTixRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQjt3QkFDaEM7NEJBQ0UsUUFBUSxFQUFFLFlBQVk7eUJBQ3ZCO3FCQUNGO2lCQUNGO2FBQ0YsQ0FBQztpQkFDRCxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBQzFELFFBQVE7aUJBQ0wsUUFBUSxDQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxFQUFFLEVBQUUsR0FBRztvQkFDUCxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUsZ0JBQWdCO29CQUN4QixNQUFNLEVBQUU7d0JBQ04sUUFBUSxDQUFDLElBQUksQ0FBQyxtQkFBbUI7d0JBQ2pDOzRCQUNFLFFBQVEsRUFBRSxZQUFZO3lCQUN2QjtxQkFDRjtpQkFDRjthQUNGLENBQUM7aUJBQ0QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsdUJBQXVCLENBQUMsQ0FBQztZQUMzRCxRQUFRO2lCQUNMLFFBQVEsQ0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsRUFBRSxFQUFFLEdBQUc7b0JBQ1AsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLHlCQUF5QjtvQkFDakMsTUFBTSxFQUFFO3dCQUNOLFFBQVEsQ0FBQyxPQUFPLENBQUMsY0FBYzt3QkFDL0I7NEJBQ0UsU0FBUyxFQUFFLDZDQUE2Qzt5QkFDekQ7d0JBQ0Q7NEJBQ0UsUUFBUSxFQUFFLFlBQVk7eUJBQ3ZCO3FCQUNGO2lCQUNGO2FBQ0YsQ0FBQztpQkFDRCxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1lBQzdFLFFBQVE7aUJBQ0wsUUFBUSxDQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxFQUFFLEVBQUUsR0FBRztvQkFDUCxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUseUJBQXlCO29CQUNqQyxNQUFNLEVBQUU7d0JBQ04sUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjO3dCQUMvQjs0QkFDRSxTQUFTLEVBQUUsNkNBQTZDO3lCQUN6RDt3QkFDRDs0QkFDRSxRQUFRLEVBQUUsWUFBWTt5QkFDdkI7cUJBQ0Y7aUJBQ0Y7YUFDRixDQUFDO2lCQUNELFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLHlDQUF5QyxDQUFDLENBQUM7WUFDN0UsUUFBUTtpQkFDTCxRQUFRLENBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLEVBQUUsRUFBRSxHQUFHO29CQUNQLE9BQU8sRUFBRSxLQUFLO29CQUNkLE1BQU0sRUFBRSx5QkFBeUI7b0JBQ2pDLE1BQU0sRUFBRTt3QkFDTixRQUFRLENBQUMsT0FBTyxDQUFDLGNBQWM7d0JBQy9COzRCQUNFLFNBQVMsRUFBRSw2Q0FBNkM7eUJBQ3pEO3dCQUNEOzRCQUNFLFFBQVEsRUFBRSxZQUFZO3lCQUN2QjtxQkFDRjtpQkFDRjthQUNGLENBQUM7aUJBQ0QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMseUNBQXlDLENBQUMsQ0FBQztZQUM3RSxRQUFRO2lCQUNMLFFBQVEsQ0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsRUFBRSxFQUFFLEdBQUc7b0JBQ1AsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLHlCQUF5QjtvQkFDakMsTUFBTSxFQUFFO3dCQUNOLFFBQVEsQ0FBQyxPQUFPLENBQUMsY0FBYzt3QkFDL0I7NEJBQ0UsU0FBUyxFQUFFLDZDQUE2Qzt5QkFDekQ7d0JBQ0Q7NEJBQ0UsUUFBUSxFQUFFLFlBQVk7eUJBQ3ZCO3FCQUNGO2lCQUNGO2FBQ0YsQ0FBQztpQkFDRCxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1lBQ25FLFFBQVE7aUJBQ0wsUUFBUSxDQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxFQUFFLEVBQUUsR0FBRztvQkFDUCxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUseUJBQXlCO29CQUNqQyxNQUFNLEVBQUU7d0JBQ04sUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjO3dCQUMvQjs0QkFDRSxTQUFTLEVBQUUsNkNBQTZDO3lCQUN6RDt3QkFDRDs0QkFDRSxRQUFRLEVBQUUsWUFBWTt5QkFDdkI7cUJBQ0Y7aUJBQ0Y7YUFDRixDQUFDO2lCQUNELFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDckUsQ0FBQyxDQUFDLENBQUM7UUFFSCxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2IsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDhDQUE4QyxFQUFFLEtBQUs7WUFDdEQsTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQztnQkFDaEQsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTztnQkFDakMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUztnQkFDckMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUTtnQkFDbkMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0I7Z0JBQ25ELGlCQUFpQixFQUFFLENBQUM7Z0JBQ3BCLGVBQWUsRUFBRSxDQUFDO2dCQUNsQixhQUFhLEVBQUUsYUFBYTthQUM3QixDQUFDLENBQVcsQ0FBQztZQUNkLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMxQixHQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLENBQUMsR0FBRyxDQUFDLGFBQWEsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXpDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakMsTUFBTSw4QkFBOEIsR0FBRyxJQUFJLGlCQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0QsOEJBQThCLENBQUMsa0JBQWtCLENBQUUsSUFBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ2hGLE1BQU0sdUJBQXVCLEdBQUcsOEJBQThCLENBQUMsTUFBTSxFQUFFLENBQUM7WUFFeEUsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDekcsTUFBTSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDcEQsTUFBTSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNoRixNQUFNLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLENBQUM7WUFFbEcsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQyxNQUFNLDhCQUE4QixHQUFHLElBQUksaUJBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3RCw4QkFBOEIsQ0FBQyxrQkFBa0IsQ0FBRSxJQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDaEYsTUFBTSx1QkFBdUIsR0FBRyw4QkFBOEIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUV4RSxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUMxRyxNQUFNLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNwRCxNQUFNLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ2hGLE1BQU0sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUNwRyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxnREFBZ0QsRUFBRSxLQUFLO1lBQ3hELE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxRQUFRLENBQUMscUJBQXFCLENBQUM7Z0JBQ2hELFFBQVEsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVE7Z0JBQ25DLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3BCLGVBQWUsRUFBRSxDQUFDO2dCQUNsQixhQUFhLEVBQUUsYUFBYTthQUM3QixDQUFDLENBQWdCLENBQUM7WUFDbkIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzFCLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFdEMsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1lBQzFELElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3hDLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUV6QyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMzQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQ3hDLGFBQWEsRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFFdkQsTUFBTSw4QkFBOEIsR0FBRyxJQUFJLGlCQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0QsOEJBQThCLENBQUMsa0JBQWtCLENBQUUsSUFBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ2hGLE1BQU0sdUJBQXVCLEdBQUcsOEJBQThCLENBQUMsTUFBTSxFQUFFLENBQUM7WUFFeEUsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDekcsTUFBTSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDcEQsTUFBTSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNoRixNQUFNLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLHVCQUF1QixDQUFDLENBQUM7WUFFbkcsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1lBQzFELElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3hDLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUV6QyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMzQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQ3hDLGFBQWEsRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDdkQsYUFBYSxFQUFFLE1BQU0sQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDdEQsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTlDLE1BQU0sOEJBQThCLEdBQUcsSUFBSSxpQkFBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdELDhCQUE4QixDQUFDLGtCQUFrQixDQUFFLElBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNoRixNQUFNLHVCQUF1QixHQUFHLDhCQUE4QixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBRXhFLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQzFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3BELE1BQU0sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDaEYsTUFBTSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3JHLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHNEQUFzRCxFQUFFLEtBQUs7WUFDOUQsTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQztnQkFDaEQsUUFBUSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUTtnQkFDbkMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDcEIsZUFBZSxFQUFFLENBQUM7Z0JBQ2xCLG9CQUFvQixFQUFFLGVBQWU7Z0JBQ3JDLGFBQWEsRUFBRSxhQUFhO2FBQzdCLENBQUMsQ0FBZ0IsQ0FBQztZQUNuQixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDMUIsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUV0QyxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7WUFDMUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDeEMsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbkMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRXpDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzNDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDeEMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUV2RCxNQUFNLDhCQUE4QixHQUFHLElBQUksaUJBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3RCw4QkFBOEIsQ0FBQyxrQkFBa0IsQ0FBRSxJQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDaEYsTUFBTSx1QkFBdUIsR0FBRyw4QkFBOEIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUV4RSxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUN6RyxNQUFNLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNwRCxNQUFNLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ2hGLE1BQU0sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUNyRyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxpRUFBaUUsRUFBRSxLQUFLO1lBQ3pFLDBGQUEwRjtZQUMxRiwwRkFBMEY7WUFDMUYsTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQztnQkFDaEQsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTztnQkFDakMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUztnQkFDckMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUTtnQkFDbkMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0I7Z0JBQ25ELGlCQUFpQixFQUFFLENBQUM7Z0JBQ3BCLGVBQWUsRUFBRSxDQUFDO2dCQUNsQixvQkFBb0IsRUFBRSxlQUFlO2dCQUNyQyxhQUFhLEVBQUUsYUFBYTthQUM3QixDQUFDLENBQVcsQ0FBQztZQUVkLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMxQixHQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXhDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFVLENBQUM7WUFDMUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDeEMsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFdEMsTUFBTSxnQ0FBZ0MsR0FBRyxJQUFJLGlCQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDL0QsZ0NBQWdDLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3ZFLE1BQU0seUJBQXlCLEdBQUcsZ0NBQWdDLENBQUMsTUFBTSxFQUFFLENBQUM7WUFFNUUsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDekcsTUFBTSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDdEQsTUFBTSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNsRiwrRkFBK0Y7WUFDL0Ysd0ZBQXdGO1lBQ3hGLE1BQU0sQ0FBQyxLQUFLLENBQUMseUJBQXlCLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUNwRyx5QkFBeUIsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3pHLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDBFQUEwRSxFQUFFLEtBQUs7WUFDbEYsTUFBTSxRQUFRO2lCQUNYLHFCQUFxQixDQUFDO2dCQUNyQixPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPO2dCQUNqQyxTQUFTLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxTQUFTO2dCQUNyQyxRQUFRLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRO2dCQUNuQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLGdCQUFnQjtnQkFDbkQsaUJBQWlCLEVBQUUsQ0FBQztnQkFDcEIsZUFBZSxFQUFFLENBQUM7Z0JBQ2xCLGFBQWEsRUFBRSxhQUFhO2FBQzdCLENBQUM7aUJBQ0QsTUFBTSxDQUFDLFlBQVksQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1FBQzFFLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHFDQUFxQyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ25ELE1BQU0sUUFBUTtpQkFDWCxxQkFBcUIsQ0FBQztnQkFDckIsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTztnQkFDakMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUztnQkFDckMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDcEIsZUFBZSxFQUFFLENBQUM7Z0JBQ2xCLGFBQWEsRUFBRSxhQUFhO2FBQ00sQ0FBQztpQkFDcEMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxrREFBa0QsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNoRSxNQUFNLFFBQVE7aUJBQ1gscUJBQXFCLENBQUM7Z0JBQ3JCLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU87Z0JBQ2pDLFNBQVMsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLFNBQVM7Z0JBQ3JDLFFBQVEsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVE7Z0JBQ25DLGlCQUFpQixFQUFFLENBQUMsQ0FBQztnQkFDckIsYUFBYSxFQUFFLGFBQWE7YUFDN0IsQ0FBQztpQkFDRCxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FDckIscUdBQXFHLENBQ3RHLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyx5Q0FBeUMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUN2RCxNQUFNLFFBQVE7aUJBQ1gscUJBQXFCLENBQUM7Z0JBQ3JCLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU87Z0JBQ2pDLFNBQVMsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLFNBQVM7Z0JBQ3JDLFFBQVEsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVE7Z0JBQ25DLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3BCLGVBQWUsRUFBRSxHQUFHO2dCQUNwQixhQUFhLEVBQUUsYUFBYTthQUM3QixDQUFDO2lCQUNELE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUNyQixxR0FBcUcsQ0FDdEcsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMseUNBQXlDLEVBQUUsR0FBRyxFQUFFO1FBQ3ZELE1BQU0seUJBQXlCLEdBQUcsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3hELE1BQU0sZUFBZSxHQUFHLDhDQUE4QyxDQUFDO1FBQ3ZFLE1BQU0sYUFBYSxHQUFHO1lBQ3BCLFVBQVUsRUFBRTtnQkFDVixRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQjtnQkFDaEMsUUFBUSxDQUFDLElBQUksQ0FBQyxtQkFBbUI7Z0JBQ2pDLFFBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CO2FBQ2xDO1lBQ0QsU0FBUyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CO1NBQzdDLENBQUM7UUFFRixJQUFJLFFBQXlCLENBQUM7UUFDOUIsSUFBSSxZQUFvQixDQUFDO1FBQ3pCLElBQUksY0FBc0IsQ0FBQztRQUMzQixJQUFJLG1CQUEyQixDQUFDO1FBQ2hDLElBQUksYUFBcUIsQ0FBQztRQUMxQixJQUFJLGFBQXFCLENBQUM7UUFDMUIsSUFBSSxhQUFxQixDQUFDO1FBQzFCLElBQUksaUJBQXlCLENBQUM7UUFDOUIsSUFBSSxtQkFBMkIsQ0FBQztRQUNoQyxJQUFJLHdCQUFnQyxDQUFDO1FBQ3JDLElBQUkscUJBQTZCLENBQUM7UUFDbEMsSUFBSSxrQkFBMEIsQ0FBQztRQUMvQixJQUFJLGdCQUF3QixDQUFDO1FBRTdCLE1BQU0sQ0FBQyxLQUFLO1lBQ1YsTUFBTSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsR0FBRyxNQUFNLHFCQUFPLENBQUMseUJBQXlCLEVBQUUsQ0FBQztZQUN2RSxNQUFNLENBQUMsWUFBWSxFQUFFLGNBQWMsQ0FBQyxHQUFHLE1BQU0scUJBQU8sQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1lBQ2pGLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO1lBRWhELFlBQVksR0FBRyxNQUFNLElBQUEsaUJBQU8sRUFBQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNoRyxjQUFjLEdBQUcsTUFBTSxJQUFBLGlCQUFPLEVBQUMsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDcEcsbUJBQW1CLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDbEQsTUFBTSxHQUFHLEdBQUcsTUFBTSx1QkFBWSxDQUFDLHlCQUF5QixFQUFFLENBQUM7WUFFM0QsYUFBYSxHQUFHLElBQUksYUFBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNqSCxhQUFhLEdBQUcsSUFBSSxhQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2pILGFBQWEsR0FBRyxJQUFJLGFBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7WUFFakgsaUJBQWlCLEdBQUcsTUFBTSxJQUFBLGlCQUFPLEVBQUMsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDMUcsbUJBQW1CLEdBQUcsTUFBTSxJQUFBLGlCQUFPLEVBQUMsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDOUcsd0JBQXdCLEdBQUcsWUFBWSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFFNUQscUJBQXFCLEdBQUcsSUFBSSxhQUFPLENBQUM7Z0JBQ2xDLEdBQUcsRUFBRSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7YUFDeEUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLGtCQUFrQixHQUFHLElBQUksYUFBTyxDQUFDO2dCQUMvQixHQUFHLEVBQUUsR0FBRyxDQUFDLGdCQUFnQixDQUFDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO2FBQ3hFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQztRQUVILFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxRQUFRLEdBQUcseUJBQXlCLENBQUMsSUFBSSxDQUFDLFNBQUcsQ0FBQyxTQUFTLEVBQUUsaUJBQThCLENBQUMsQ0FBQztZQUV6RixRQUFRO2lCQUNMLFFBQVEsQ0FBQztnQkFDUixPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUU7YUFDMUcsQ0FBQztpQkFDRCxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBRXhELFFBQVE7aUJBQ0wsUUFBUSxDQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxFQUFFLEVBQUUsR0FBRztvQkFDUCxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUsa0JBQWtCO29CQUMxQixNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsQ0FBQztpQkFDMUQ7YUFDRixDQUFDO2lCQUNELFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLHlCQUF5QixDQUFDLENBQUM7WUFFN0QsUUFBUTtpQkFDTCxRQUFRLENBQUM7Z0JBQ1IsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRTthQUNqRyxDQUFDO2lCQUNELFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLHlDQUF5QyxDQUFDLENBQUM7WUFFN0UseUJBQXlCLENBQUMsSUFBSSxDQUFDLGlCQUFXLENBQUMsU0FBUyxFQUFFLG1CQUFtQixDQUFDLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDM0csQ0FBQyxDQUFDLENBQUM7UUFFSCxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2IseUJBQXlCLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsd0ZBQXdGLEVBQUUsS0FBSztZQUNoRyxzRkFBc0Y7WUFDdEYsTUFBTSxVQUFVLEdBQUcseUJBQXlCLENBQUMsR0FBRyxDQUFDLFNBQUcsQ0FBQyxTQUFTLEVBQUUsd0JBQXFDLENBQUMsQ0FBQztZQUV2RyxRQUFRO2lCQUNMLFFBQVEsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztpQkFDakcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztZQUNwRSxRQUFRO2lCQUNMLFFBQVEsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztpQkFDakcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMseUJBQXlCLENBQUMsQ0FBQztZQUM3RCxRQUFRO2lCQUNMLFFBQVEsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztpQkFDakcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMseUJBQXlCLENBQUMsQ0FBQztZQUM3RCxRQUFRO2lCQUNMLFFBQVEsQ0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsRUFBRSxFQUFFLEdBQUc7b0JBQ1AsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLHlCQUF5QjtvQkFDakMsTUFBTSxFQUFFO3dCQUNOLGFBQWE7d0JBQ2IsRUFBRSxTQUFTLEVBQUUsNkNBQTZDLEVBQUU7d0JBQzVELEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRTtxQkFDM0I7aUJBQ0Y7YUFDRixDQUFDO2lCQUNELFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLHlDQUF5QyxDQUFDLENBQUM7WUFDN0UsUUFBUTtpQkFDTCxRQUFRLENBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLEVBQUUsRUFBRSxHQUFHO29CQUNQLE9BQU8sRUFBRSxLQUFLO29CQUNkLE1BQU0sRUFBRSx5QkFBeUI7b0JBQ2pDLE1BQU0sRUFBRTt3QkFDTixhQUFhO3dCQUNiLEVBQUUsU0FBUyxFQUFFLDZDQUE2QyxFQUFFO3dCQUM1RCxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUU7cUJBQzNCO2lCQUNGO2FBQ0YsQ0FBQztpQkFDRCxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1lBQzdFLFFBQVE7aUJBQ0wsUUFBUSxDQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxFQUFFLEVBQUUsR0FBRztvQkFDUCxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUsZ0JBQWdCO29CQUN4QixNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxDQUFDO2lCQUN2RTthQUNGLENBQUM7aUJBQ0QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUMxRCxRQUFRO2lCQUNMLFFBQVEsQ0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsRUFBRSxFQUFFLEdBQUc7b0JBQ1AsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLGdCQUFnQjtvQkFDeEIsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsQ0FBQztpQkFDeEU7YUFDRixDQUFDO2lCQUNELFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLHVCQUF1QixDQUFDLENBQUM7WUFFM0QsTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQztnQkFDaEQsT0FBTyxFQUFFLFlBQVk7Z0JBQ3JCLFNBQVMsRUFBRSxjQUFjO2dCQUN6QixRQUFRLEVBQUUsbUJBQW1CO2dCQUM3QixnQkFBZ0I7Z0JBQ2hCLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3BCLGVBQWUsRUFBRSxDQUFDO2dCQUNsQixhQUFhO2FBQ2QsQ0FBQyxDQUFXLENBQUM7WUFFZCxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDMUIsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4QyxDQUFDLEdBQUcsQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUV6QyxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBVSxDQUFDO1lBQzFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBRXJELDRGQUE0RjtZQUM1RixnRkFBZ0Y7WUFDaEYseUJBQXlCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6RCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw2R0FBNkcsRUFBRSxLQUFLO1lBQ3JILHdGQUF3RjtZQUN4RixnRUFBZ0U7WUFDaEUsTUFBTSxVQUFVLEdBQUcseUJBQXlCLENBQUMsR0FBRyxDQUFDLFNBQUcsQ0FBQyxTQUFTLEVBQUUsd0JBQXFDLENBQUMsQ0FBQztZQUV2RyxpRUFBaUU7WUFDakUsS0FBSyxNQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQztnQkFDakUsUUFBUTtxQkFDTCxRQUFRLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7cUJBQ3hGLFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLGdDQUFnQyxDQUFDLENBQUM7WUFDdEUsQ0FBQztZQUNELE1BQU0sYUFBYSxHQUFHLElBQUksYUFBTyxDQUFDO2dCQUNoQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLHVCQUFZLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO2FBQ2hILENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQixRQUFRO2lCQUNMLFFBQVEsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztpQkFDakcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMseUJBQXlCLENBQUMsQ0FBQztZQUM3RCxRQUFRO2lCQUNMLFFBQVEsQ0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsRUFBRSxFQUFFLEdBQUc7b0JBQ1AsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLHlCQUF5QjtvQkFDakMsTUFBTSxFQUFFO3dCQUNOLGFBQWE7d0JBQ2IsRUFBRSxTQUFTLEVBQUUsNkNBQTZDLEVBQUU7d0JBQzVELEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRTtxQkFDM0I7aUJBQ0Y7YUFDRixDQUFDO2lCQUNELFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLHlDQUF5QyxDQUFDLENBQUM7WUFDN0UsUUFBUTtpQkFDTCxRQUFRLENBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLEVBQUUsRUFBRSxHQUFHO29CQUNQLE9BQU8sRUFBRSxLQUFLO29CQUNkLE1BQU0sRUFBRSxnQkFBZ0I7b0JBQ3hCLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLENBQUM7aUJBQ3ZFO2FBQ0YsQ0FBQztpQkFDRCxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBRTFELE1BQU0sUUFBUSxDQUFDLHFCQUFxQixDQUFDO2dCQUNuQyxPQUFPLEVBQUUsWUFBWTtnQkFDckIsU0FBUyxFQUFFLGNBQWM7Z0JBQ3pCLFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLGdCQUFnQjtnQkFDaEIsaUJBQWlCLEVBQUUsQ0FBQztnQkFDcEIsZUFBZSxFQUFFLENBQUM7Z0JBQ2xCLGFBQWE7YUFDZCxDQUFDLENBQUM7WUFFSCx5RkFBeUY7WUFDekYseUJBQXlCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6RCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw4REFBOEQsRUFBRSxLQUFLO1lBQ3RFLFFBQVE7aUJBQ0wsUUFBUSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsa0JBQWtCLENBQUMsRUFBRSxFQUFFLENBQUM7aUJBQ3RHLFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLHlCQUF5QixDQUFDLENBQUM7WUFDN0QsUUFBUTtpQkFDTCxRQUFRLENBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLEVBQUUsRUFBRSxHQUFHO29CQUNQLE9BQU8sRUFBRSxLQUFLO29CQUNkLE1BQU0sRUFBRSx5QkFBeUI7b0JBQ2pDLE1BQU0sRUFBRTt3QkFDTixrQkFBa0I7d0JBQ2xCLEVBQUUsU0FBUyxFQUFFLDZDQUE2QyxFQUFFO3dCQUM1RCxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUU7cUJBQzNCO2lCQUNGO2FBQ0YsQ0FBQztpQkFDRCxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1lBQ25FLFFBQVE7aUJBQ0wsUUFBUSxDQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxFQUFFLEVBQUUsR0FBRztvQkFDUCxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUseUJBQXlCO29CQUNqQyxNQUFNLEVBQUU7d0JBQ04scUJBQXFCO3dCQUNyQixFQUFFLFNBQVMsRUFBRSw2Q0FBNkMsRUFBRTt3QkFDNUQsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFO3FCQUMzQjtpQkFDRjthQUNGLENBQUM7aUJBQ0QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMseUNBQXlDLENBQUMsQ0FBQztZQUM3RSxRQUFRO2lCQUNMLFFBQVEsQ0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsRUFBRSxFQUFFLEdBQUc7b0JBQ1AsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLGdCQUFnQjtvQkFDeEIsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsQ0FBQztpQkFDdkU7YUFDRixDQUFDO2lCQUNELFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLENBQUM7WUFFMUQsTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQztnQkFDaEQsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsU0FBUyxFQUFFLG1CQUFtQjtnQkFDOUIsUUFBUSxFQUFFLHdCQUF3QjtnQkFDbEMsZ0JBQWdCO2dCQUNoQixpQkFBaUIsRUFBRSxDQUFDO2dCQUNwQixlQUFlLEVBQUUsQ0FBQztnQkFDbEIsb0JBQW9CLEVBQUUsZUFBZTtnQkFDckMsYUFBYTthQUNkLENBQUMsQ0FBVyxDQUFDO1lBRWQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzFCLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEMsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQVUsQ0FBQztZQUN6QyxHQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxxR0FBcUcsRUFBRSxLQUFLO1lBQzdHLDBGQUEwRjtZQUMxRixRQUFRO2lCQUNMLFFBQVEsQ0FBQztnQkFDUixPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFO2FBQ3RHLENBQUM7aUJBQ0QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztZQUNwRSxRQUFRO2lCQUNMLFFBQVEsQ0FBQztnQkFDUixPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFO2FBQ3RHLENBQUM7aUJBQ0QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMseUJBQXlCLENBQUMsQ0FBQztZQUM3RCxRQUFRO2lCQUNMLFFBQVEsQ0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsRUFBRSxFQUFFLEdBQUc7b0JBQ1AsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLHlCQUF5QjtvQkFDakMsTUFBTSxFQUFFO3dCQUNOLFFBQVEsQ0FBQyxPQUFPLENBQUMsY0FBYzt3QkFDL0IsRUFBRSxTQUFTLEVBQUUsNkNBQTZDLEVBQUU7d0JBQzVELEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRTtxQkFDM0I7aUJBQ0Y7YUFDRixDQUFDO2lCQUNELFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLHlDQUF5QyxDQUFDLENBQUM7WUFDN0UsUUFBUTtpQkFDTCxRQUFRLENBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLEVBQUUsRUFBRSxHQUFHO29CQUNQLE9BQU8sRUFBRSxLQUFLO29CQUNkLE1BQU0sRUFBRSxnQkFBZ0I7b0JBQ3hCLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLENBQUM7aUJBQ3ZFO2FBQ0YsQ0FBQztpQkFDRCxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBRTFELE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxRQUFRLENBQUMscUJBQXFCLENBQUM7Z0JBQ2hELFFBQVEsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVE7Z0JBQ25DLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3BCLGVBQWUsRUFBRSxDQUFDO2dCQUNsQixhQUFhO2FBQ2QsQ0FBQyxDQUFnQixDQUFDO1lBRW5CLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMxQixHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztZQUMxRCx1REFBdUQ7WUFDdkQsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLGNBQWMsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEcsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxzQkFBc0IsRUFBRTtRQUMvQixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFdEMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNiLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw0Q0FBNEMsRUFBRSxLQUFLO1lBQ3BELE1BQU0sMkJBQTJCLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQzdFLE1BQU0sYUFBYSxHQUFHLE9BQU87aUJBQzFCLElBQUksQ0FBQyxTQUFHLENBQUMsU0FBUyxFQUFFLGlCQUE4QixDQUFDO2lCQUNuRCxRQUFRLENBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLEVBQUUsRUFBRSxHQUFHO29CQUNQLE9BQU8sRUFBRSxLQUFLO29CQUNkLE1BQU0sRUFBRSxpQkFBaUI7b0JBQ3pCLE1BQU0sRUFBRTt3QkFDTiwyQkFBMkI7d0JBQzNCOzRCQUNFLFFBQVEsRUFBRSxRQUFRO3lCQUNuQjtxQkFDRjtpQkFDRjthQUNGLENBQUM7aUJBQ0QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsNEJBQTRCLENBQUMsQ0FBQztZQUVoRSxNQUFNLFlBQVksR0FBRyxNQUFNLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLDJCQUEyQixFQUFFLENBQUMsQ0FBQztZQUMxRixnQkFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN4QixnQkFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0IsZ0JBQU0sQ0FBQyxXQUFXLENBQ2hCLFlBQVksQ0FBQyxJQUFJLEVBQ2pCLDBGQUEwRixDQUMzRixDQUFDO1lBQ0YsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw0Q0FBNEMsRUFBRSxLQUFLO1lBQ3BELE1BQU0sMkJBQTJCLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQzdFLE1BQU0sYUFBYSxHQUFHLE9BQU87aUJBQzFCLElBQUksQ0FBQyxTQUFHLENBQUMsU0FBUyxFQUFFLGlCQUE4QixDQUFDO2lCQUNuRCxRQUFRLENBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLEVBQUUsRUFBRSxHQUFHO29CQUNQLE9BQU8sRUFBRSxLQUFLO29CQUNkLE1BQU0sRUFBRSxpQkFBaUI7b0JBQ3pCLE1BQU0sRUFBRTt3QkFDTiwyQkFBMkI7d0JBQzNCOzRCQUNFLFFBQVEsRUFBRSxRQUFRO3lCQUNuQjtxQkFDRjtpQkFDRjthQUNGLENBQUM7aUJBQ0QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsaUNBQWlDLENBQUMsQ0FBQztZQUVyRSxNQUFNLGdCQUFNLENBQUMsT0FBTyxDQUNsQixLQUFLLElBQUksRUFBRTtnQkFDVCxNQUFNLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLDJCQUEyQixFQUFFLENBQUMsQ0FBQztZQUN2RSxDQUFDLEVBQ0QsRUFBRSxPQUFPLEVBQUUsb0ZBQW9GLEVBQUUsQ0FDbEcsQ0FBQztZQUNGLGdCQUFNLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsNENBQTRDLEVBQUUsS0FBSztZQUNwRCxNQUFNLDJCQUEyQixHQUFHLGNBQWMsQ0FBQztZQUVuRCxNQUFNLGdCQUFNLENBQUMsT0FBTyxDQUNsQixLQUFLLElBQUksRUFBRTtnQkFDVCxNQUFNLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLDJCQUEyQixFQUFFLENBQUMsQ0FBQztZQUN2RSxDQUFDLEVBQ0QsRUFBRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsQ0FDdkMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDZDQUE2QyxFQUFFLEtBQUs7WUFDckQsTUFBTSwyQkFBMkIsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7WUFFL0UsTUFBTSxnQkFBTSxDQUFDLE9BQU8sQ0FDbEIsS0FBSyxJQUFJLEVBQUU7Z0JBQ1QsTUFBTSxRQUFRLENBQUMsb0JBQW9CLENBQUMsRUFBRSwyQkFBMkIsRUFBRSxDQUFDLENBQUM7WUFDdkUsQ0FBQyxFQUNELEVBQUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLENBQ3ZDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUU7UUFDeEIsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLEdBQUcsMkJBQVksQ0FBQztRQUN4RCxNQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN6QyxNQUFNLGdCQUFnQixHQUFHLHNCQUFzQixDQUFDO1FBQ2hELE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQztRQUUzQixFQUFFLENBQUMsZ0NBQWdDLEVBQUUsR0FBRyxFQUFFO1lBQ3hDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDeEIsWUFBWSxFQUFFLEdBQUc7Z0JBQ2pCLFNBQVMsRUFBRSxjQUFjO2dCQUN6QixnQkFBZ0I7Z0JBQ2hCLFlBQVk7YUFDYixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxxREFBcUQsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNuRSxNQUFNLHFCQUFxQixHQUFHLElBQUEsaUNBQXNCLEVBQUMsRUFBRSxDQUFDLENBQUM7WUFDekQsTUFBTSxnQkFBTSxDQUFDLE9BQU8sQ0FDbEIsR0FBRyxFQUFFLENBQ0gsUUFBUSxDQUFDLGdCQUFnQixDQUFDO2dCQUN4QixZQUFZLEVBQUUsR0FBRztnQkFDakIsU0FBUyxFQUFFLHFCQUFxQjtnQkFDaEMsZ0JBQWdCO2dCQUNoQixZQUFZO2FBQ2IsQ0FBQyxFQUNKO2dCQUNFLE9BQU8sRUFBRSx5QkFBeUI7YUFDbkMsQ0FDRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMseURBQXlELEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDdkUsTUFBTSxtQkFBbUIsR0FBRyxLQUFLLENBQUM7WUFDbEMsTUFBTSxnQkFBTSxDQUFDLE9BQU8sQ0FDbEIsR0FBRyxFQUFFLENBQ0gsUUFBUSxDQUFDLGdCQUFnQixDQUFDO2dCQUN4QixZQUFZLEVBQUUsR0FBRztnQkFDakIsU0FBUyxFQUFFLGNBQWM7Z0JBQ3pCLGdCQUFnQixFQUFFLG1CQUFtQjtnQkFDckMsWUFBWTthQUNiLENBQUMsRUFDSjtnQkFDRSxPQUFPLEVBQUUsMkNBQTJDO2FBQ3JELENBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDBDQUEwQyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3hELE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzlDLE1BQU0sZ0JBQU0sQ0FBQyxPQUFPLENBQ2xCLEdBQUcsRUFBRSxDQUNILFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDeEIsWUFBWSxFQUFFLFVBQVU7Z0JBQ3hCLFNBQVMsRUFBRSxjQUFjO2dCQUN6QixnQkFBZ0I7Z0JBQ2hCLFlBQVk7YUFDYixDQUFDLEVBQ0o7Z0JBQ0UsT0FBTyxFQUFFLDhEQUE4RDthQUN4RSxDQUNGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyx5Q0FBeUMsRUFBRSxLQUFLO1lBQ2pELHFCQUFxQjtZQUNyQixNQUFNLFVBQVUsR0FBRztnQkFDakIsRUFBRSxFQUFFLGtDQUFrQztnQkFDdEMsSUFBSSxFQUFFLE1BQU07Z0JBQ1osSUFBSSxFQUFFO29CQUNKLGtDQUFrQztvQkFDbEMsa0NBQWtDO29CQUNsQyxrQ0FBa0M7aUJBQ25DO2dCQUNELFlBQVksRUFBRTtvQkFDWixXQUFXLEVBQUUsTUFBTSxDQUFDLEdBQUc7aUJBQ3hCO2dCQUNELFlBQVksRUFBRSxLQUFLO2FBQ3BCLENBQUM7WUFDRixNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUEsaUJBQU8sRUFBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFakQsTUFBTSxTQUFTLEdBQUcsSUFBSSxpQkFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDMUQsTUFBTSxLQUFLLEdBQUcsaUJBQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDO1lBRTlDLElBQUEsY0FBSSxFQUFDLEtBQUssQ0FBQztpQkFDUixHQUFHLENBQUMsbURBQW1ELENBQUM7aUJBQ3hELEtBQUssQ0FBQyxHQUFHLEVBQUU7Z0JBQ1Y7b0JBQ0UsWUFBWSxFQUFFLE9BQU87aUJBQ3RCO2FBQ0YsQ0FBQyxDQUFDO1lBRUwsdURBQXVEO1lBQ3ZELElBQUEsY0FBSSxFQUFDLEtBQUssQ0FBQztpQkFDUixJQUFJLENBQUMsK0VBQStFLENBQUM7aUJBQ3JGLEtBQUssQ0FBQyxHQUFHLEVBQUU7Z0JBQ1Y7b0JBQ0UsV0FBVyxFQUFFLHNDQUFzQztvQkFDbkQsUUFBUSxFQUFFLGtDQUFrQztvQkFDNUMsS0FBSyxFQUNILG93QkFBb3dCO29CQUN0d0IsT0FBTyxFQUFFO3dCQUNQLEdBQUcsRUFBRSxLQUFLO3dCQUNWLFNBQVMsRUFBRSxPQUFPO3FCQUNuQjtvQkFDRCxNQUFNLEVBQUU7d0JBQ04sUUFBUSxFQUFFLE9BQU87d0JBQ2pCLFdBQVcsRUFBRSxTQUFTO3dCQUN0QixZQUFZLEVBQUU7NEJBQ1o7Z0NBQ0UsUUFBUSxFQUFFLE1BQU07Z0NBQ2hCLFlBQVksRUFBRSxTQUFTOzZCQUN4Qjt5QkFDRjt3QkFDRCxRQUFRLEVBQUUsR0FBRzt3QkFDYixPQUFPLEVBQUU7NEJBQ1A7Z0NBQ0UsT0FBTyxFQUFFLDhDQUE4QztnQ0FDdkQsS0FBSyxFQUFFLE9BQU87Z0NBQ2QsTUFBTSxFQUFFLDBCQUEwQjtnQ0FDbEMsT0FBTyxFQUFFLENBQUMsMEJBQTBCLENBQUM7Z0NBQ3JDLFVBQVUsRUFBRSwwQkFBMEI7Z0NBQ3RDLFdBQVcsRUFBRSxDQUFDLDBCQUEwQixDQUFDO2dDQUN6QyxXQUFXLEVBQUUsU0FBUztnQ0FDdEIsUUFBUSxFQUFFLE1BQU07Z0NBQ2hCLFVBQVUsRUFBRSxLQUFLO2dDQUNqQixXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUM7NkJBQ3JCO3lCQUNGO3dCQUNELE1BQU0sRUFBRTs0QkFDTjtnQ0FDRSxLQUFLLEVBQUUsT0FBTztnQ0FDZCxPQUFPLEVBQUUsOENBQThDO2dDQUN2RCxXQUFXLEVBQUUsU0FBUzs2QkFDdkI7NEJBQ0Q7Z0NBQ0UsS0FBSyxFQUFFLEtBQUs7Z0NBQ1osT0FBTyxFQUFFLDhDQUE4QztnQ0FDdkQsV0FBVyxFQUFFLE9BQU87NkJBQ3JCO3lCQUNGO3dCQUNELElBQUksRUFBRSxNQUFNO3FCQUNiO29CQUNELGFBQWEsRUFBRSxrQ0FBa0M7b0JBQ2pELElBQUksRUFBRSxNQUFNO2lCQUNiO2FBQ0YsQ0FBQyxDQUFDO1lBRUwsNEJBQTRCO1lBQzVCLE1BQU0sZ0JBQU0sQ0FBQyxPQUFPLENBQ2xCLEtBQUssSUFBSSxFQUFFO2dCQUNULE1BQU0sU0FBUyxDQUFDLHlCQUF5QixDQUFDO29CQUN4QyxnQkFBZ0IsRUFBRSxVQUFVO2lCQUM3QixDQUFDLENBQUM7WUFDTCxDQUFDLEVBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLGlEQUFpRDthQUMzRCxDQUNGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxpREFBaUQsRUFBRSxLQUFLLElBQUksRUFBRTtZQUMvRCxNQUFNLGVBQWUsR0FBRztnQkFDdEIsV0FBVyxFQUFFLHNDQUFzQztnQkFDbkQsUUFBUSxFQUFFLGtDQUFrQztnQkFDNUMsS0FBSyxFQUNILG93QkFBb3dCO2dCQUN0d0IsT0FBTyxFQUFFO29CQUNQLEdBQUcsRUFBRSxLQUFLO29CQUNWLFNBQVMsRUFBRSxPQUFPO2lCQUNuQjtnQkFDRCxNQUFNLEVBQUU7b0JBQ04sUUFBUSxFQUFFLE9BQU87b0JBQ2pCLFdBQVcsRUFBRSxTQUFTO29CQUN0QixZQUFZLEVBQUU7d0JBQ1o7NEJBQ0UsUUFBUSxFQUFFLE1BQU07NEJBQ2hCLFlBQVksRUFBRSxTQUFTO3lCQUN4QjtxQkFDRjtvQkFDRCxRQUFRLEVBQUUsR0FBRztvQkFDYixPQUFPLEVBQUU7d0JBQ1A7NEJBQ0UsT0FBTyxFQUFFLDhDQUE4Qzs0QkFDdkQsS0FBSyxFQUFFLE9BQU87NEJBQ2QsTUFBTSxFQUFFLDBCQUEwQjs0QkFDbEMsT0FBTyxFQUFFLENBQUMsMEJBQTBCLENBQUM7NEJBQ3JDLFVBQVUsRUFBRSwwQkFBMEI7NEJBQ3RDLFdBQVcsRUFBRSxDQUFDLDBCQUEwQixDQUFDOzRCQUN6QyxXQUFXLEVBQUUsU0FBUzs0QkFDdEIsUUFBUSxFQUFFLE1BQU07NEJBQ2hCLFVBQVUsRUFBRSxLQUFLOzRCQUNqQixXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUM7eUJBQ3JCO3FCQUNGO29CQUNELE1BQU0sRUFBRTt3QkFDTjs0QkFDRSxLQUFLLEVBQUUsT0FBTzs0QkFDZCxPQUFPLEVBQUUsOENBQThDOzRCQUN2RCxXQUFXLEVBQUUsU0FBUzt5QkFDdkI7d0JBQ0Q7NEJBQ0UsS0FBSyxFQUFFLEtBQUs7NEJBQ1osT0FBTyxFQUFFLDhDQUE4Qzs0QkFDdkQsV0FBVyxFQUFFLE9BQU87eUJBQ3JCO3FCQUNGO29CQUNELElBQUksRUFBRSxNQUFNO2lCQUNiO2dCQUNELGFBQWEsRUFBRSxrQ0FBa0M7Z0JBQ2pELElBQUksRUFBRSxNQUFNO2FBQ2IsQ0FBQztZQUVGLE1BQU0sWUFBWSxHQUFxQjtnQkFDckMsWUFBWSxFQUFFLEdBQUcsRUFBRTtvQkFDakIsTUFBTSxFQUFFLEdBQUc7d0JBQ1QsV0FBVyxFQUFFLDhDQUE4QztxQkFDdEMsQ0FBQztvQkFDeEIsT0FBTyxFQUFFLENBQUM7Z0JBQ1osQ0FBQzthQUNGLENBQUM7WUFFRixJQUFJLENBQUM7Z0JBQ0gsSUFDRSxDQUFDLENBQUMsTUFBTSxRQUFRLENBQUMsaUJBQWlCLENBQUM7b0JBQ2pDLFNBQVMsRUFBRSxFQUFFO29CQUNiLFFBQVEsRUFBRSxFQUFFO29CQUNaLFFBQVEsRUFBRSxFQUFFO29CQUNaLFVBQVUsRUFBRSxlQUFpRDtvQkFDN0QsVUFBVSxFQUFFLEtBQUs7b0JBQ2pCLE1BQU0sRUFBRSxZQUF1QjtvQkFDL0IsWUFBWSxFQUFFO3dCQUNaLDBCQUEwQixFQUFFLElBQUk7cUJBQ2pDO2lCQUNGLENBQUMsQ0FBQyxFQUNILENBQUM7b0JBQ0QsZ0JBQU0sQ0FBQyxJQUFJLENBQUMsc0NBQXNDLENBQUMsQ0FBQztnQkFDdEQsQ0FBQztZQUNILENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLGdCQUFNLENBQUMsSUFBSSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7WUFDdEQsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGlEQUFpRCxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQy9ELE1BQU0sZUFBZSxHQUFHO2dCQUN0QixXQUFXLEVBQUUsc0NBQXNDO2dCQUNuRCxRQUFRLEVBQUUsa0NBQWtDO2dCQUM1QyxLQUFLLEVBQ0gsbzhCQUFvOEI7Z0JBQ3Q4QixPQUFPLEVBQUU7b0JBQ1AsR0FBRyxFQUFFLEtBQUs7b0JBQ1YsU0FBUyxFQUFFLE9BQU87aUJBQ25CO2dCQUNELE1BQU0sRUFBRTtvQkFDTixNQUFNLEVBQUU7d0JBQ047NEJBQ0UsT0FBTyxFQUFFLDhDQUE4Qzs0QkFDdkQsS0FBSyxFQUFFLFlBQVk7NEJBQ25CLFdBQVcsRUFBRSxhQUFhO3lCQUMzQjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsOENBQThDOzRCQUN2RCxLQUFLLEVBQUUsS0FBSzs0QkFDWixXQUFXLEVBQUUsT0FBTzt5QkFDckI7cUJBQ0Y7b0JBQ0QsUUFBUSxFQUFFLE9BQU87b0JBQ2pCLE9BQU8sRUFBRTt3QkFDUDs0QkFDRSxPQUFPLEVBQUUsOENBQThDOzRCQUN2RCxRQUFRLEVBQUUsU0FBUzs0QkFDbkIsVUFBVSxFQUFFO2dDQUNWLElBQUksRUFBRSwwQkFBMEI7NkJBQ2pDOzRCQUNELFdBQVcsRUFBRTtnQ0FDWDtvQ0FDRSxJQUFJLEVBQUUsMEJBQTBCO2lDQUNqQzs2QkFDRjs0QkFDRCxLQUFLLEVBQUUsWUFBWTs0QkFDbkIsV0FBVyxFQUFFLGFBQWE7NEJBQzFCLE1BQU0sRUFBRTtnQ0FDTixJQUFJLEVBQUUsMEJBQTBCOzZCQUNqQzs0QkFDRCxVQUFVLEVBQUUsS0FBSzs0QkFDakIsT0FBTyxFQUFFO2dDQUNQO29DQUNFLElBQUksRUFBRSwwQkFBMEI7aUNBQ2pDOzZCQUNGO3lCQUNGO3FCQUNGO29CQUNELFFBQVEsRUFBRSxHQUFHO29CQUNiLFdBQVcsRUFBRSxhQUFhO29CQUMxQixZQUFZLEVBQUU7d0JBQ1o7NEJBQ0UsWUFBWSxFQUFFLGFBQWE7NEJBQzNCLFFBQVEsRUFBRSxTQUFTO3lCQUNwQjtxQkFDRjtvQkFDRCxJQUFJLEVBQUUsTUFBTTtpQkFDYjtnQkFDRCxhQUFhLEVBQUUsa0NBQWtDO2dCQUNqRCxJQUFJLEVBQUUsTUFBTTthQUNiLENBQUM7WUFFRixNQUFNLFlBQVksR0FBcUI7Z0JBQ3JDLFlBQVksRUFBRSxHQUFHLEVBQUU7b0JBQ2pCLE1BQU0sRUFBRSxHQUFHO3dCQUNULFdBQVcsRUFBRSw4Q0FBOEM7cUJBQ3RDLENBQUM7b0JBQ3hCLE9BQU8sRUFBRSxDQUFDO2dCQUNaLENBQUM7YUFDRixDQUFDO1lBRUYsSUFBSSxDQUFDO2dCQUNILElBQ0UsQ0FBQyxDQUFDLE1BQU0sUUFBUSxDQUFDLGlCQUFpQixDQUFDO29CQUNqQyxTQUFTLEVBQUUsRUFBRTtvQkFDYixRQUFRLEVBQUUsRUFBRTtvQkFDWixRQUFRLEVBQUUsRUFBRTtvQkFDWixVQUFVLEVBQUUsZUFBaUQ7b0JBQzdELFVBQVUsRUFBRSxLQUFLO29CQUNqQixNQUFNLEVBQUUsWUFBdUI7b0JBQy9CLFlBQVksRUFBRTt3QkFDWiwwQkFBMEIsRUFBRSxJQUFJO3FCQUNqQztpQkFDRixDQUFDLENBQUMsRUFDSCxDQUFDO29CQUNELGdCQUFNLENBQUMsSUFBSSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7Z0JBQ3RELENBQUM7WUFDSCxDQUFDO1lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDWCxnQkFBTSxDQUFDLElBQUksQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1lBQ3RELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyx5REFBeUQsRUFBRSxLQUFLLElBQUksRUFBRTtZQUN2RSxNQUFNLGVBQWUsR0FBRztnQkFDdEIsV0FBVyxFQUFFLHNDQUFzQztnQkFDbkQsUUFBUSxFQUFFLGtDQUFrQztnQkFDNUMsS0FBSyxFQUNILG84QkFBbzhCO2dCQUN0OEIsT0FBTyxFQUFFO29CQUNQLEdBQUcsRUFBRSxLQUFLO29CQUNWLFNBQVMsRUFBRSxPQUFPO2lCQUNuQjtnQkFDRCxNQUFNLEVBQUU7b0JBQ04sTUFBTSxFQUFFO3dCQUNOOzRCQUNFLE9BQU8sRUFBRSw4Q0FBOEM7NEJBQ3ZELEtBQUssRUFBRSxZQUFZOzRCQUNuQixXQUFXLEVBQUUsYUFBYTt5QkFDM0I7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLDhDQUE4Qzs0QkFDdkQsS0FBSyxFQUFFLEtBQUs7NEJBQ1osV0FBVyxFQUFFLE9BQU87eUJBQ3JCO3FCQUNGO29CQUNELFFBQVEsRUFBRSxPQUFPO29CQUNqQixPQUFPLEVBQUU7d0JBQ1A7NEJBQ0UsT0FBTyxFQUFFLDhDQUE4Qzs0QkFDdkQsUUFBUSxFQUFFLFNBQVM7NEJBQ25CLFVBQVUsRUFBRTtnQ0FDVixJQUFJLEVBQUUsMEJBQTBCOzZCQUNqQzs0QkFDRCxXQUFXLEVBQUU7Z0NBQ1g7b0NBQ0UsSUFBSSxFQUFFLDBCQUEwQjtpQ0FDakM7NkJBQ0Y7NEJBQ0QsS0FBSyxFQUFFLFlBQVk7NEJBQ25CLFdBQVcsRUFBRSxhQUFhOzRCQUMxQixNQUFNLEVBQUU7Z0NBQ04sSUFBSSxFQUFFLDBCQUEwQjs2QkFDakM7NEJBQ0QsVUFBVSxFQUFFLEtBQUs7NEJBQ2pCLE9BQU8sRUFBRTtnQ0FDUDtvQ0FDRSxJQUFJLEVBQUUsMEJBQTBCO2lDQUNqQzs2QkFDRjt5QkFDRjtxQkFDRjtvQkFDRCxRQUFRLEVBQUUsR0FBRztvQkFDYixXQUFXLEVBQUUsYUFBYTtvQkFDMUIsWUFBWSxFQUFFO3dCQUNaOzRCQUNFLFlBQVksRUFBRSxhQUFhOzRCQUMzQixRQUFRLEVBQUUsU0FBUzt5QkFDcEI7cUJBQ0Y7b0JBQ0QsSUFBSSxFQUFFLE1BQU07aUJBQ2I7Z0JBQ0QsYUFBYSxFQUFFLGtDQUFrQztnQkFDakQsSUFBSSxFQUFFLE1BQU07YUFDYixDQUFDO1lBRUYsTUFBTSxZQUFZLEdBQXFCO2dCQUNyQyxZQUFZLEVBQUUsR0FBRyxFQUFFO29CQUNqQixNQUFNLEVBQUUsR0FBRzt3QkFDVCxXQUFXLEVBQUUsOENBQThDO3FCQUN0QyxDQUFDO29CQUN4QixPQUFPLEVBQUUsQ0FBQztnQkFDWixDQUFDO2FBQ0YsQ0FBQztZQUVGLE1BQU0sZ0JBQU0sQ0FBQyxPQUFPLENBQ2xCLEtBQUssSUFBSSxFQUFFLENBQ1QsUUFBUSxDQUFDLGlCQUFpQixDQUFDO2dCQUN6QixTQUFTLEVBQUUsRUFBRTtnQkFDYixRQUFRLEVBQUUsRUFBRTtnQkFDWixRQUFRLEVBQUUsRUFBRTtnQkFDWixVQUFVLEVBQUUsZUFBaUQ7Z0JBQzdELFVBQVUsRUFBRSxLQUFLO2dCQUNqQixNQUFNLEVBQUUsWUFBdUI7Z0JBQy9CLFlBQVksRUFBRTtvQkFDWiwwQkFBMEIsRUFBRSxJQUFJO2lCQUNqQzthQUNGLENBQUMsRUFDSjtnQkFDRSxPQUFPLEVBQUUsaURBQWlEO2FBQzNELENBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsMkNBQTJDLEVBQUUsR0FBRyxFQUFFO1FBQ3pELEVBQUUsQ0FBQyxvRkFBb0YsRUFBRSxLQUFLO1lBQzVGLE1BQU0sRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxHQUFHLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQztZQUM3RSxNQUFNLE1BQU0sR0FBRyxJQUFJLGlCQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUN2RCxNQUFNLFlBQVksR0FBRyxNQUFNLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztnQkFDcEQsUUFBUTtnQkFDUixVQUFVLEVBQUUsYUFBYTtnQkFDekIsTUFBTTtnQkFDTixZQUFZLEVBQUUsRUFBRSxxQkFBcUIsRUFBRSxJQUFJLEVBQUU7YUFDSixDQUFDLENBQUM7WUFFN0MsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsd0RBQXdELEVBQUUsS0FBSztZQUNoRSxNQUFNLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEdBQUcsUUFBUSxDQUFDLG1CQUFtQixDQUFDO1lBQ3hGLE1BQU0sa0JBQWtCLEdBQUcsRUFBRSxHQUFHLGFBQWEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFFbEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxpQkFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFFdkQsTUFBTSxnQkFBTSxDQUFDLE9BQU8sQ0FDbEIsS0FBSyxJQUFJLEVBQUUsQ0FDVCxNQUFNLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztnQkFDL0IsUUFBUTtnQkFDUixVQUFVLEVBQUUsa0JBQWtCO2dCQUM5QixNQUFNO2dCQUNOLFlBQVksRUFBRSxFQUFFLHFCQUFxQixFQUFFLElBQUksRUFBRTthQUNKLENBQUMsRUFDOUM7Z0JBQ0UsT0FBTyxFQUNMLDRHQUE0RzthQUMvRyxDQUNGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxrRUFBa0UsRUFBRSxLQUFLO1lBQzFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxHQUFHLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQztZQUNsRyxNQUFNLGtCQUFrQixHQUFHLEVBQUUsR0FBRyxhQUFhLEVBQUUsS0FBSyxFQUFFLG1CQUFtQixFQUFFLENBQUM7WUFDNUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxpQkFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFFdkQsTUFBTSxnQkFBTSxDQUFDLE9BQU8sQ0FDbEIsS0FBSyxJQUFJLEVBQUUsQ0FDVCxRQUFRLENBQUMsaUJBQWlCLENBQUM7Z0JBQ3pCLFFBQVE7Z0JBQ1IsVUFBVSxFQUFFLGtCQUFrQjtnQkFDOUIsTUFBTTtnQkFDTixZQUFZLEVBQUUsRUFBRSxxQkFBcUIsRUFBRSxJQUFJLEVBQUU7YUFDSixDQUFDLEVBQzlDLEVBQUUsT0FBTyxFQUFFLGdGQUFnRixFQUFFLENBQzlGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxrRUFBa0UsRUFBRSxLQUFLO1lBQzFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsR0FBRyxRQUFRLENBQUMsbUJBQW1CLENBQUM7WUFDN0YsTUFBTSxrQkFBa0IsR0FBRyxFQUFFLEdBQUcsYUFBYSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsQ0FBQztZQUV2RSxNQUFNLE1BQU0sR0FBRyxJQUFJLGlCQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUN2RCxNQUFNLGdCQUFNLENBQUMsT0FBTyxDQUNsQixLQUFLLElBQUksRUFBRSxDQUNULFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztnQkFDekIsUUFBUTtnQkFDUixVQUFVLEVBQUUsa0JBQWtCO2dCQUM5QixNQUFNO2dCQUNOLFlBQVksRUFBRSxFQUFFLHFCQUFxQixFQUFFLElBQUksRUFBRTthQUNKLENBQUMsRUFDOUM7Z0JBQ0UsT0FBTyxFQUNMLHVKQUF1SjthQUMxSixDQUNGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxzREFBc0QsRUFBRSxLQUFLO1lBQzlELE1BQU0sRUFBRSwwQkFBMEIsRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxRQUFRLENBQUMsbUJBQW1CLENBQUM7WUFDckcsTUFBTSxNQUFNLEdBQUcsSUFBSSxpQkFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDdkQsSUFBQSxjQUFJLEVBQUMsdUJBQXVCLENBQUMsQ0FBQyxHQUFHLENBQUMsbURBQW1ELENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RHLE1BQU0sZ0JBQU0sQ0FBQyxPQUFPLENBQ2xCLEtBQUssSUFBSSxFQUFFLENBQ1QsTUFBTSxDQUFDLG1CQUFtQixDQUFDO2dCQUN6QixZQUFZLEVBQUUsRUFBRSxxQkFBcUIsRUFBRSxJQUFJLEVBQUU7Z0JBQzdDLEdBQUcsMEJBQTBCO2dCQUM3QixVQUFVLEVBQUUsRUFBRSxHQUFHLDBCQUEwQixDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsbUJBQW1CLEVBQUU7YUFDckMsQ0FBQyxFQUNwRDtnQkFDRSxPQUFPLEVBQUUsZ0ZBQWdGO2FBQzFGLENBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO1FBQy9CLEVBQUUsQ0FBQyxvRUFBb0UsRUFBRSxLQUFLO1lBQzVFLE1BQU0sT0FBTyxHQUFHLDhDQUE4QyxDQUFDO1lBQy9ELE1BQU0sY0FBYyxHQUNsQixrSUFBa0ksQ0FBQztZQUNySSxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUM7WUFDbEIsTUFBTSxTQUFTLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQWMsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO1lBRXRFLE1BQU0sTUFBTSxHQUFHLE1BQU0sUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUM3RSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyx3REFBd0QsRUFBRSxLQUFLO1lBQ2hFLE1BQU0sT0FBTyxHQUFHLDhDQUE4QyxDQUFDO1lBQy9ELE1BQU0sYUFBYSxHQUNqQixpSUFBaUksQ0FBQztZQUNwSSxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUM7WUFDbEIsTUFBTSxTQUFTLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQWMsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztZQUVyRixNQUFNLGdCQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsTUFBTSxRQUFRLENBQUMsZUFBZSxDQUFDLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO2dCQUM5RixPQUFPLEVBQUUsK0JBQStCLE9BQU8sMEJBQTBCO2FBQzFFLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHFEQUFxRCxFQUFFLEtBQUs7WUFDN0QsTUFBTSxPQUFPLEdBQUcsOENBQThDLENBQUM7WUFDL0QsTUFBTSxjQUFjLEdBQ2xCLGtJQUFrSSxDQUFDO1lBQ3JJLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQztZQUN6QixNQUFNLFNBQVMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBYyxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7WUFFdEUsTUFBTSxnQkFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLE1BQU0sUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUU7Z0JBQzFHLE9BQU8sRUFBRSwrQkFBK0IsT0FBTywwQkFBMEI7YUFDMUUsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsd0NBQXdDLEVBQUUsS0FBSztZQUNoRCxNQUFNLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQztZQUN4QyxNQUFNLGNBQWMsR0FDbEIsa0lBQWtJLENBQUM7WUFDckksTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDO1lBQ2xCLE1BQU0sU0FBUyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFjLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztZQUV0RSxNQUFNLGdCQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsTUFBTSxRQUFRLENBQUMsZUFBZSxDQUFDLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtnQkFDOUcsT0FBTyxFQUFFLG9CQUFvQixjQUFjLEVBQUU7YUFDOUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsOERBQThELEVBQUUsS0FBSztZQUN0RSx3RUFBd0U7WUFDeEUsTUFBTSxPQUFPLEdBQUcsOENBQThDLENBQUM7WUFDL0QsTUFBTSxjQUFjLEdBQ2xCLGtJQUFrSSxDQUFDO1lBQ3JJLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQztZQUNsQixNQUFNLHlCQUF5QixHQUFHLG1CQUFtQixDQUFDO1lBQ3RELE1BQU0sU0FBUyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFjLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztZQUV0RSwrRUFBK0U7WUFDL0Usb0ZBQW9GO1lBQ3BGLE1BQU0sTUFBTSxHQUFHLE1BQU0sUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLHlCQUF5QixFQUFFLENBQUMsQ0FBQztZQUN4RyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLGVBQWUsRUFBRSxHQUFHLEVBQUU7UUFDN0IsdUZBQXVGO1FBQ3ZGLE1BQU0sT0FBTyxHQUFHLDhDQUE4QyxDQUFDO1FBQy9ELE1BQU0sY0FBYyxHQUNsQixrSUFBa0ksQ0FBQztRQUNySSxNQUFNLFNBQVMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBYyxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFFdEUsRUFBRSxDQUFDLHlFQUF5RSxFQUFFLEtBQUs7WUFDakYsTUFBTSxNQUFNLEdBQUcsTUFBTSxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNyQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0IsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyx5REFBeUQsRUFBRSxLQUFLO1lBQ2pFLE1BQU0sTUFBTSxHQUFHLE1BQU0sUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNyRSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHFFQUFxRSxFQUFFLEtBQUs7WUFDN0UsTUFBTSxPQUFPLEdBQUcsTUFBTSxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3RFLE1BQU0sUUFBUSxHQUFHLE1BQU0sUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNuRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxzRUFBc0UsRUFBRSxLQUFLO1lBQzlFLE1BQU0seUJBQXlCLEdBQUcsbUJBQW1CLENBQUM7WUFDdEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUseUJBQXlCLEVBQUUsQ0FBQyxDQUFDO1lBQ2pHLDBDQUEwQztZQUMxQyxNQUFNLFFBQVEsR0FBRyxNQUFNLFFBQVEsQ0FBQyxlQUFlLENBQUM7Z0JBQzlDLFNBQVM7Z0JBQ1QsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO2dCQUN4QixLQUFLLEVBQUUsQ0FBQztnQkFDUix5QkFBeUI7YUFDMUIsQ0FBQyxDQUFDO1lBQ0gsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsdUNBQXVDLEVBQUUsS0FBSztZQUMvQyxNQUFNLGdCQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsTUFBTSxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUMzRyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxtRUFBbUUsRUFBRSxLQUFLO1lBQzNFLGlFQUFpRTtZQUNqRSxNQUFNLE1BQU0sR0FBRyxNQUFNLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUM1RixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztZQUM1RSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMseUJBQXlCO1lBQ25FLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxtRkFBbUYsRUFBRSxLQUFLO1lBQzNGLE1BQU0sTUFBTSxHQUFHLE1BQU0sUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNyRSxNQUFNLEtBQUssR0FBRyxNQUFNLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUMzRixNQUFNLElBQUksR0FBSSxlQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBeUMsQ0FBQyxZQUFZLENBQUM7WUFDekYsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFBLHdDQUFnQyxFQUFDLElBQUksRUFBRSxNQUFNLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3ZGLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyx3Q0FBd0MsRUFBRSxLQUFLO1lBQ2hELE1BQU0sZ0JBQU0sQ0FBQyxPQUFPLENBQ2xCLEtBQUssSUFBSSxFQUFFLENBQUMsTUFBTSxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLHNCQUFzQixFQUFFLENBQUMsRUFDcEcsa0NBQWtDLENBQ25DLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLHlCQUF5QixFQUFFLEdBQUcsRUFBRTtRQUN2QyxFQUFFLENBQUMsNkNBQTZDLEVBQUU7WUFDaEQsTUFBTSxTQUFTLEdBQUcsa0VBQWtFLENBQUM7WUFDckYsTUFBTSxlQUFlLEdBQUcsOENBQThDLENBQUM7WUFFdkUsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzVELE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsNkJBQTZCLEVBQUUsR0FBRyxFQUFFO1FBQzNDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN0QyxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDO1FBQ3pELE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxpQ0FBaUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ2xGLE1BQU0sa0JBQWtCLEdBQUcsU0FBUyxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDN0UsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUM7UUFDL0MsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDO1FBQ3hCLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNuQiw4REFBOEQ7UUFDOUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxtQkFBUyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7UUFDcEYsTUFBTSxVQUFVLEdBQXVCO1lBQ3JDLEVBQUUsTUFBTSxFQUFFLDhDQUE4QyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtZQUM3RixFQUFFLE1BQU0sRUFBRSw4Q0FBOEMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUU7WUFDOUYsRUFBRSxNQUFNLEVBQUUsOENBQThDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFO1NBQy9GLENBQUM7UUFFRix5RUFBeUU7UUFDekUsNkVBQTZFO1FBQzdFLGdGQUFnRjtRQUNoRixNQUFNLHlCQUF5QixHQUFHLENBQUMsWUFBb0IsRUFBRSxXQUFzQixFQUFVLEVBQUU7WUFDekYsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLHNCQUFzQjtZQUN6RCxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLDJCQUEyQjtZQUNuRCxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLG1CQUFtQjtZQUM1QyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLCtCQUErQjtZQUM1RCxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLG1CQUFtQjtZQUNoRCwrREFBK0Q7WUFDL0QsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDdkMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7UUFFRix1RUFBdUU7UUFDdkUsTUFBTSxhQUFhLEdBQUcsQ0FBQyxZQUFvQixFQUFVLEVBQUU7WUFDckQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN2QixPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQztRQUVGLDRFQUE0RTtRQUM1RSwyRUFBMkU7UUFDM0UsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLEtBQXlCLEVBQVUsRUFBRTtZQUN0RSxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFDdEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQztZQUMxRCxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDdkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUTtZQUM5QyxJQUFJLE1BQU0sR0FBRyxVQUFVLENBQUM7WUFDeEIsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQywrQkFBK0I7Z0JBQzNELElBQUksbUJBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0I7Z0JBQzlFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDdEQsTUFBTSxJQUFJLEVBQUUsQ0FBQztZQUNmLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQztRQUVGLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxJQUFtQixFQUFFLEtBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNuRSxNQUFNLEVBQUUsR0FBRztZQUNYLElBQUksRUFBRTtnQkFDSixNQUFNLEVBQUU7b0JBQ04sS0FBSyxFQUNILElBQUksS0FBSyxJQUFJO3dCQUNYLENBQUMsQ0FBQyxJQUFJO3dCQUNOLENBQUMsQ0FBQzs0QkFDRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFFBQVEsQ0FBQzs0QkFDekMsVUFBVSxFQUFFLEtBQUs7NEJBQ2pCLEtBQUs7NEJBQ0wsUUFBUSxFQUFFLENBQUM7NEJBQ1gsU0FBUyxFQUFFLENBQUM7eUJBQ2I7aUJBQ1I7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sUUFBUSxHQUFHLENBQUMsUUFBZ0UsRUFBUSxFQUFFO1lBQzFGLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBRyxDQUFDLFNBQVMsRUFBRSxpQkFBOEIsQ0FBQyxDQUFDO1lBQzdFLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsSUFBZSxFQUFFLEVBQUU7Z0JBQzlDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQXlDLENBQUM7Z0JBQy9ELE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFXLENBQUM7Z0JBQzlELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDMUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNiLE9BQU8sbUJBQW1CLENBQUMsSUFBSSxFQUFFLGlDQUFxQixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQ3JFLENBQUM7Z0JBQ0QsT0FBTyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxRCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQztRQUVGLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDYixPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMscUVBQXFFLEVBQUUsS0FBSztZQUM3RSxNQUFNLHFCQUFxQixHQUFHLElBQUEsc0NBQTBCLEVBQUMsSUFBSSxtQkFBUyxDQUFDLFdBQVcsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQ3BHLFFBQVEsQ0FBQztnQkFDUCxDQUFDLFdBQVcsQ0FBQyxFQUFFO29CQUNiLElBQUksRUFBRSx5QkFBeUIsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDO29CQUN4RCxLQUFLLEVBQUUsaUNBQXFCLENBQUMsUUFBUSxFQUFFO2lCQUN4QztnQkFDRCxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUU7b0JBQ2xDLElBQUksRUFBRSx5QkFBeUIsQ0FBQyxVQUFVLENBQUM7b0JBQzNDLEtBQUssRUFBRSxhQUFhLENBQUMsUUFBUSxFQUFFO2lCQUNoQzthQUNGLENBQUMsQ0FBQztZQUVILE1BQU0sTUFBTSxHQUFHLE1BQU0sUUFBUSxDQUFDLDJCQUEyQixDQUN2RCxXQUFXLEVBQ1gsYUFBYSxFQUNiLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osTUFBTSxDQUNQLENBQUM7WUFFRiwyRUFBMkU7WUFDM0UsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDakQsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDaEUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO2dCQUN6QyxNQUFNLEVBQUUsYUFBYSxDQUFDLFFBQVEsRUFBRTtnQkFDaEMsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsVUFBVSxFQUFFLEtBQUs7YUFDbEIsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztnQkFDN0MsTUFBTSxFQUFFLHFCQUFxQixDQUFDLFFBQVEsRUFBRTtnQkFDeEMsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsVUFBVSxFQUFFLEtBQUs7YUFDbEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsMkRBQTJELEVBQUUsS0FBSztZQUNuRSxRQUFRLENBQUM7Z0JBQ1AsQ0FBQyxXQUFXLENBQUMsRUFBRTtvQkFDYixJQUFJLEVBQUUsYUFBYSxDQUFDLFFBQVEsQ0FBQztvQkFDN0IsS0FBSyxFQUFFLGlDQUFxQixDQUFDLFFBQVEsRUFBRTtpQkFDeEM7YUFDRixDQUFDLENBQUM7WUFFSCxNQUFNLE1BQU0sR0FBRyxNQUFNLFFBQVEsQ0FBQywyQkFBMkIsQ0FDdkQsV0FBVyxFQUNYLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIsWUFBWSxFQUNaLE1BQU0sQ0FDUCxDQUFDO1lBQ0YsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsMkRBQTJELEVBQUUsS0FBSztZQUNuRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFYixNQUFNLE1BQU0sR0FBRyxNQUFNLFFBQVEsQ0FBQywyQkFBMkIsQ0FDdkQsV0FBVyxFQUNYLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIsWUFBWSxFQUNaLE1BQU0sQ0FDUCxDQUFDO1lBQ0YsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQywyQkFBMkIsRUFBRSxHQUFHLEVBQUU7UUFDekMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUM7UUFDekQsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLGlDQUFpQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDakYsTUFBTSxpQkFBaUIsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQztRQUNwRCxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQztRQUM3QywrRUFBK0U7UUFDL0UsTUFBTSxhQUFhLEdBQUcsSUFBSSxtQkFBUyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7UUFDcEYsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLG1CQUFTLENBQUMsZ0NBQW9CLENBQUMsQ0FBQztRQUU5RCwyRkFBMkY7UUFDM0YsTUFBTSxVQUFVLEdBQXVCO1lBQ3JDLEVBQUUsTUFBTSxFQUFFLDhDQUE4QyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtZQUM3RixFQUFFLE1BQU0sRUFBRSw4Q0FBOEMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUU7U0FDL0YsQ0FBQztRQUVGLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxtQkFBUyxDQUFDLHNCQUFzQixDQUN0RCxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0NBQTBCLENBQUMsRUFBRSxJQUFJLG1CQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsRUFDaEYsaUJBQWlCLENBQ2xCLENBQUM7UUFDRixNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsbUJBQVMsQ0FBQyxzQkFBc0IsQ0FDdkQsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHVDQUEyQixDQUFDLEVBQUUsSUFBSSxtQkFBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQ2xGLGlCQUFpQixDQUNsQixDQUFDO1FBQ0YsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsbUJBQVMsQ0FBQyxzQkFBc0IsQ0FDMUQsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDJDQUErQixDQUFDLEVBQUUsSUFBSSxtQkFBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQ3JGLGFBQWEsQ0FDZCxDQUFDO1FBRUYseUZBQXlGO1FBQ3pGLHlFQUF5RTtRQUN6RSxNQUFNLGVBQWUsR0FBRyxDQUFDLHdCQUFpQyxFQUFFLFdBQXNCLEVBQVUsRUFBRTtZQUM1RixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCO1lBQ3ZDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTztZQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLDZCQUE2QjtZQUNwRCxJQUFJLG1CQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNwRCxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsa0JBQWtCO1lBQy9ELFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDO1FBRUYseUZBQXlGO1FBQ3pGLDhEQUE4RDtRQUM5RCxNQUFNLHlCQUF5QixHQUFHLENBQUMsS0FBeUIsRUFBVSxFQUFFO1lBQ3RFLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzFELElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztZQUN2RCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRO1lBQzlDLElBQUksTUFBTSxHQUFHLFVBQVUsQ0FBQztZQUN4QixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLCtCQUErQjtnQkFDM0QsSUFBSSxtQkFBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDN0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUN0RCxNQUFNLElBQUksRUFBRSxDQUFDO1lBQ2YsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDO1FBRUYsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLElBQW1CLEVBQUUsS0FBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ25FLE1BQU0sRUFBRSxHQUFHO1lBQ1gsSUFBSSxFQUFFO2dCQUNKLE1BQU0sRUFBRTtvQkFDTixLQUFLLEVBQ0gsSUFBSSxLQUFLLElBQUk7d0JBQ1gsQ0FBQyxDQUFDLElBQUk7d0JBQ04sQ0FBQyxDQUFDOzRCQUNFLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsUUFBUSxDQUFDOzRCQUN6QyxVQUFVLEVBQUUsS0FBSzs0QkFDakIsS0FBSzs0QkFDTCxRQUFRLEVBQUUsQ0FBQzs0QkFDWCxTQUFTLEVBQUUsQ0FBQzt5QkFDYjtpQkFDUjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsTUFBTSxRQUFRLEdBQUcsQ0FBQyxRQUFnRSxFQUFRLEVBQUU7WUFDMUYsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFHLENBQUMsU0FBUyxFQUFFLGlCQUE4QixDQUFDLENBQUM7WUFDN0UsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFlLEVBQUUsRUFBRTtnQkFDOUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBeUMsQ0FBQztnQkFDL0QsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQVcsQ0FBQztnQkFDOUQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUMxQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ2IsT0FBTyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsaUNBQXFCLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDckUsQ0FBQztnQkFDRCxPQUFPLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO1FBRUYsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNiLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxnRkFBZ0YsRUFBRSxLQUFLO1lBQ3hGLFFBQVEsQ0FBQztnQkFDUCxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFO29CQUMxQixJQUFJLEVBQUUsZUFBZSxDQUFDLElBQUksRUFBRSxhQUFhLENBQUM7b0JBQzFDLEtBQUssRUFBRSxnQ0FBb0I7aUJBQzVCO2dCQUNELENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRTtvQkFDOUIsSUFBSSxFQUFFLHlCQUF5QixDQUFDLFVBQVUsQ0FBQztvQkFDM0MsS0FBSyxFQUFFLGFBQWEsQ0FBQyxRQUFRLEVBQUU7aUJBQ2hDO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsTUFBTSxNQUFNLEdBQUcsTUFBTSxRQUFRLENBQUMseUJBQXlCLENBQUMsV0FBVyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUVqSCxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkMsTUFBTSxDQUFDLGFBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQzdELE1BQU0sQ0FBQyxXQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUM1RCxNQUFNLENBQUMsVUFBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDMUQsTUFBTSxDQUFDLFlBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGlDQUFxQixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDcEUsTUFBTSxDQUFDLGFBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHVCQUFhLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDdkUsc0VBQXNFO1lBQ3RFLE1BQU0sQ0FBQyxhQUFjLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztnQkFDckMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLENBQUMsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFO2dCQUM1RSxHQUFHLFVBQVU7YUFDZCxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxrRUFBa0UsRUFBRSxLQUFLO1lBQzFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUViLE1BQU0sTUFBTSxHQUFHLE1BQU0sUUFBUSxDQUFDLHlCQUF5QixDQUFDLFdBQVcsRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDakgsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQywrREFBK0QsRUFBRSxLQUFLO1lBQ3ZFLFFBQVEsQ0FBQztnQkFDUCxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFO29CQUMxQixJQUFJLEVBQUUsZUFBZSxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUM7b0JBQzNDLEtBQUssRUFBRSxnQ0FBb0I7aUJBQzVCO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsTUFBTSxNQUFNLEdBQUcsTUFBTSxRQUFRLENBQUMseUJBQXlCLENBQUMsV0FBVyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNqSCxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBub2NrIGZyb20gJ25vY2snO1xuaW1wb3J0ICogYXMgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgKiBhcyBzaW5vbiBmcm9tICdzaW5vbic7XG5cbmltcG9ydCB7IGdldEV4dHJhQWNjb3VudE1ldGFBZGRyZXNzLCBUT0tFTl8yMDIyX1BST0dSQU1fSUQsIFRPS0VOX1BST0dSQU1fSUQgfSBmcm9tICdAc29sYW5hL3NwbC10b2tlbic7XG5pbXBvcnQgeyBQdWJsaWNLZXksIFN5c3RlbVByb2dyYW0gfSBmcm9tICdAc29sYW5hL3dlYjMuanMnO1xuXG5pbXBvcnQgeyBCaXRHb0FQSSwgZW5jcnlwdCB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1hcGknO1xuaW1wb3J0IHtcbiAgY29tbW9uLFxuICBFRERTQU1ldGhvZHMsXG4gIEVudmlyb25tZW50cyxcbiAgZ2VuZXJhdGVSYW5kb21QYXNzd29yZCxcbiAgSVdhbGxldCxcbiAgTVBDU3dlZXBSZWNvdmVyeU9wdGlvbnMsXG4gIE1QQ1N3ZWVwVHhzLFxuICBNUENUeCxcbiAgTVBDVHhzLFxuICBzaWduUmVjb3ZlcnlFZGRzYU1QQ3YyLFxuICBQcmVidWlsZEFuZFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFRyYW5zYWN0aW9uUHJlYnVpbGQsXG4gIFRzc1V0aWxzLFxuICBUeFJlcXVlc3QsXG4gIFdhbGxldCxcbiAgV2FsbGV0Q29pblNwZWNpZmljLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBNUFNVdGlsIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWxpYi1tcGMnO1xuaW1wb3J0IHsgVGVzdEJpdEdvLCBUZXN0Qml0R29BUEkgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstdGVzdCc7XG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHtcbiAgZ2V0QW1vdW50QmFzZWRPbkVuZGlhbm5lc3MsXG4gIEtleVBhaXIsXG4gIFNvbCxcbiAgU29sQ29uc29saWRhdGlvblJlY292ZXJ5T3B0aW9ucyxcbiAgU29sUmVjb3ZlcnlPcHRpb25zLFxuICBTb2xWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFRzb2wsXG59IGZyb20gJy4uLy4uL3NyYyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uL3NyYy9saWInO1xuaW1wb3J0IHsgQXRhSW5pdCwgRXh0cmFBY2NvdW50TWV0YSwgSW5zdHJ1Y3Rpb25QYXJhbXMsIFRva2VuVHJhbnNmZXIgfSBmcm9tICcuLi8uLi9zcmMvbGliL2lmYWNlJztcbmltcG9ydCB7XG4gIFRPS0VOX0FDTF9GTEFHX0FDQ09VTlRfU0VFRCxcbiAgVE9LRU5fQUNMX01JTlRfQ09ORklHX1NFRUQsXG4gIFRPS0VOX0FDTF9QUk9HUkFNX0lELFxuICBUT0tFTl9BQ0xfVEhBV19FWFRSQV9NRVRBU19TRUVELFxufSBmcm9tICcuLi8uLi9zcmMvbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyB9IGZyb20gJy4uLy4uL3NyYy9saWIvdXRpbHMnO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vZml4dHVyZXMvc29sJztcbmltcG9ydCAqIGFzIHJlc291cmNlcyBmcm9tICcuLi9yZXNvdXJjZXMvc29sJztcbmltcG9ydCB7IHNvbEJhY2t1cEtleSB9IGZyb20gJy4vZml4dHVyZXMvc29sQmFja3VwS2V5JztcbmltcG9ydCB7IGdldEJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi9nZXRCdWlsZGVyRmFjdG9yeSc7XG5cbmRlc2NyaWJlKCdTT0w6JywgZnVuY3Rpb24gKCkge1xuICBsZXQgYml0Z286IFRlc3RCaXRHb0FQSTtcbiAgbGV0IGJhc2Vjb2luOiBTb2w7XG4gIGxldCBrZXlQYWlyO1xuICBsZXQgbmV3VHhQcmVidWlsZDtcbiAgbGV0IG5ld1R4UHJlYnVpbGRUb2tlblRyYW5zZmVyO1xuICBsZXQgbmV3VHhQYXJhbXM7XG4gIGxldCBuZXdUeFBhcmFtc1dpdGhFcnJvcjtcbiAgbGV0IG5ld1R4UGFyYW1zV2l0aEV4dHJhRGF0YTtcbiAgbGV0IG5ld1R4UGFyYW1zVG9rZW5UcmFuc2ZlcjtcbiAgY29uc3QgYmFkQWRkcmVzc2VzID0gcmVzb3VyY2VzLmFkZHJlc3Nlcy5pbnZhbGlkQWRkcmVzc2VzO1xuICBjb25zdCBnb29kQWRkcmVzc2VzID0gcmVzb3VyY2VzLmFkZHJlc3Nlcy52YWxpZEFkZHJlc3NlcztcblxuICBjb25zdCBrZXlwYWlyID0ge1xuICAgIHB1YjogcmVzb3VyY2VzLmFjY291bnRXaXRoU2VlZC5wdWJsaWNLZXksXG4gICAgcHJ2OiByZXNvdXJjZXMuYWNjb3VudFdpdGhTZWVkLnByaXZhdGVLZXkuYmFzZTU4LFxuICB9O1xuICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgIHJlY2lwaWVudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzczogJ2xpb250ZXN0ZTIxMicsXG4gICAgICAgIGFtb3VudDogJzEwMDAnLFxuICAgICAgfSxcbiAgICBdLFxuICAgIHR4QmFzZTY0OiByZXNvdXJjZXMuVFJBTlNGRVJfVU5TSUdORURfVFhfV0lUSF9NRU1PX0FORF9EVVJBQkxFX05PTkNFLFxuICAgIHR4SW5mbzoge1xuICAgICAgZmVlUGF5ZXI6ICc1aHI1ZmlzUGk2RFhOdXVScG01WFVienBpRW5tZHl4WHVCRFR3endaajVQZScsXG4gICAgICBub25jZTogJ0dIdFhRQnNvWkhWbk5GYTlZZXZBekZyMTdESmpnSFhrM3ljVEtENXhEM1ppJyxcbiAgICB9LFxuICAgIHR4aWQ6ICc1ODZjNWI1OWIxMGIxMzRkMDRjMTZhYzFiMjczZmUzYzU1MjlmMzRhZWY3NWRiNDQ1NmNkNDY5YzVjZGFjN2UyJyxcbiAgICBpc1ZvdGluZ1RyYW5zYWN0aW9uOiBmYWxzZSxcbiAgICBjb2luOiAndHNvbCcsXG4gIH07XG4gIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgIHR4UHJlYnVpbGQsXG4gICAgcmVjaXBpZW50czogW1xuICAgICAge1xuICAgICAgICBhZGRyZXNzOiAnQ1A1RHBhYTQyUnRKbU11S3FDUXNMd21hNVloM2tudXZLc1lERlg4NUY0MVMnLFxuICAgICAgICBhbW91bnQ6ICczMDAwMDAnLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuICBjb25zdCBtZW1vID0geyB2YWx1ZTogJ3Rlc3QgbWVtbycgfTtcbiAgY29uc3QgZHVyYWJsZU5vbmNlID0ge1xuICAgIHdhbGxldE5vbmNlQWRkcmVzczogJzhZN1JNNkpmY1g0QVNTTkJrcmtybVNiUnU0MzFZVmk5WTNvTEZuekMyZENoJyxcbiAgICBhdXRoV2FsbGV0QWRkcmVzczogJzVocjVmaXNQaTZEWE51dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJyxcbiAgfTtcbiAgY29uc3QgZXJyb3JEdXJhYmxlTm9uY2UgPSB7XG4gICAgd2FsbGV0Tm9uY2VBZGRyZXNzOiAnOFlNNkpmY1g0QVNTTkJrcmtybVNiUnU0MzFZVmk5WTNvTEZuekMyZENoJyxcbiAgICBhdXRoV2FsbGV0QWRkcmVzczogJzVocjVmaXNQaTZEWE51dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJyxcbiAgfTtcbiAgY29uc3QgdHhQYXJhbXNXaXRoRXJyb3IgPSB7XG4gICAgdHhQcmVidWlsZCxcbiAgICByZWNpcGllbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGFkZHJlc3M6ICdDUDVEcGFhNDJtTXVLcUNRc0x3bWE1WWgza251dktzWURGWDg1RjQxUycsXG4gICAgICAgIGFtb3VudDogJzMwMDAwMCcsXG4gICAgICB9LFxuICAgIF0sXG4gIH07XG4gIGNvbnN0IHR4UGFyYW1zV2l0aEV4dHJhRGF0YSA9IHtcbiAgICB0eFByZWJ1aWxkLFxuICAgIHJlY2lwaWVudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzczogJ0NQNURwYWE0MlJ0Sm1NdUtxQ1FzTHdtYTVZaDNrbnV2S3NZREZYODVGNDFTJyxcbiAgICAgICAgYW1vdW50OiAnMzAwMDAwJyxcbiAgICAgICAgZGF0YTogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuICBjb25zdCB0eFByZWJ1aWxkVG9rZW5UcmFuc2ZlciA9IHtcbiAgICByZWNpcGllbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGFkZHJlc3M6ICdBRjVINnZCa0ZuSnVWcUNoUlBnUFE0SlJjUTVHazI1SEJGaFFRa3lvam12ZycsXG4gICAgICAgIGFtb3VudDogJzEnLFxuICAgICAgfSxcbiAgICBdLFxuICAgIHR4SGV4OiByZXNvdXJjZXMuVE9LRU5fVFJBTlNGRVJfVE9fTkFUSVZFX1VOU0lHTkVEX1RYX0hFWCxcbiAgICB0eEluZm86IHtcbiAgICAgIGZlZVBheWVyOiAnNER1anltVUZiUThHQkt0QXdBWnJRNlFxcHZ0QkVpdkw0OGg0dGEyb0pHZDInLFxuICAgICAgbm9uY2U6ICdHSHRYUUJzb1pIVm5ORmE5WWV2QXpGcjE3REpqZ0hYazN5Y1RLRDV4RDNaaScsXG4gICAgfSxcbiAgICB0eGlkOiAnNTg2YzViNTliMTBiMTM0ZDA0YzE2YWMxYjI3M2ZlM2M1NTI5ZjM0YWVmNzVkYjQ0NTZjZDQ2OWM1Y2RhYzdlMicsXG4gICAgaXNWb3RpbmdUcmFuc2FjdGlvbjogZmFsc2UsXG4gICAgY29pbjogJ3Rzb2wnLFxuICB9O1xuICBjb25zdCB0eFBhcmFtc1Rva2VuVHJhbnNmZXIgPSB7XG4gICAgdHhQcmVidWlsZCxcbiAgICByZWNpcGllbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGFkZHJlc3M6ICdBRjVINnZCa0ZuSnVWcUNoUlBnUFE0SlJjUTVHazI1SEJGaFFRa3lvam12ZycsXG4gICAgICAgIGFtb3VudDogJzEnLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuICBjb25zdCBlcnJvck1lbW8gPSB7IHZhbHVlOiAnZGlmZmVyZW50IG1lbW8nIH07XG4gIGNvbnN0IGVycm9yRmVlUGF5ZXIgPSAnNWhyNWZpc1BpNkRYQ3V1UnBtNVhVYnpwaUVubWR5eFh1QkRUd3p3Wmo1UGUnO1xuICBjb25zdCBmYWN0b3J5ID0gZ2V0QnVpbGRlckZhY3RvcnkoJ3Rzb2wnKTtcbiAgY29uc3Qgd2FsbGV0ID0gbmV3IEtleVBhaXIocmVzb3VyY2VzLmF1dGhBY2NvdW50KS5nZXRLZXlzKCk7XG4gIGNvbnN0IHN0YWtlQWNjb3VudCA9IG5ldyBLZXlQYWlyKHJlc291cmNlcy5zdGFrZUFjY291bnQpLmdldEtleXMoKTtcbiAgY29uc3QgYmxvY2tIYXNoID0gcmVzb3VyY2VzLmJsb2NrSGFzaGVzLnZhbGlkQmxvY2tIYXNoZXNbMF07XG4gIGNvbnN0IGFtb3VudCA9ICcxMDAwMCc7XG4gIGNvbnN0IHZhbGlkYXRvciA9IHJlc291cmNlcy52YWxpZGF0b3I7XG5cbiAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICBiaXRnbyA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHb0FQSSwgeyBlbnY6ICdtb2NrJyB9KTtcbiAgICBiaXRnby5zYWZlUmVnaXN0ZXIoJ3NvbCcsIFRzb2wuY3JlYXRlSW5zdGFuY2UpO1xuICAgIGJpdGdvLnNhZmVSZWdpc3RlcigndHNvbCcsIFRzb2wuY3JlYXRlSW5zdGFuY2UpO1xuICAgIGJpdGdvLmluaXRpYWxpemVUZXN0VmFycygpO1xuICAgIGJhc2Vjb2luID0gYml0Z28uY29pbigndHNvbCcpIGFzIFRzb2w7XG4gICAga2V5UGFpciA9IGJhc2Vjb2luLmdlbmVyYXRlS2V5UGFpcihyZXNvdXJjZXMuYWNjb3VudFdpdGhTZWVkLnNlZWQpO1xuICAgIG5ld1R4UHJlYnVpbGQgPSAoKSA9PiB7XG4gICAgICByZXR1cm4gXy5jbG9uZURlZXAodHhQcmVidWlsZCk7XG4gICAgfTtcbiAgICBuZXdUeFByZWJ1aWxkVG9rZW5UcmFuc2ZlciA9ICgpID0+IHtcbiAgICAgIHJldHVybiBfLmNsb25lRGVlcCh0eFByZWJ1aWxkVG9rZW5UcmFuc2Zlcik7XG4gICAgfTtcbiAgICBuZXdUeFBhcmFtcyA9ICgpID0+IHtcbiAgICAgIHJldHVybiBfLmNsb25lRGVlcCh0eFBhcmFtcyk7XG4gICAgfTtcbiAgICBuZXdUeFBhcmFtc1dpdGhFcnJvciA9ICgpID0+IHtcbiAgICAgIHJldHVybiBfLmNsb25lRGVlcCh0eFBhcmFtc1dpdGhFcnJvcik7XG4gICAgfTtcbiAgICBuZXdUeFBhcmFtc1dpdGhFeHRyYURhdGEgPSAoKSA9PiB7XG4gICAgICByZXR1cm4gXy5jbG9uZURlZXAodHhQYXJhbXNXaXRoRXh0cmFEYXRhKTtcbiAgICB9O1xuICAgIG5ld1R4UGFyYW1zVG9rZW5UcmFuc2ZlciA9ICgpID0+IHtcbiAgICAgIHJldHVybiBfLmNsb25lRGVlcCh0eFBhcmFtc1Rva2VuVHJhbnNmZXIpO1xuICAgIH07XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaW5zdGFudGlhdGUgdGhlIGNvaW4nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IGxvY2FsQmFzZWNvaW4gPSBiaXRnby5jb2luKCd0c29sJyk7XG4gICAgbG9jYWxCYXNlY29pbi5zaG91bGQuYmUuYW4uaW5zdGFuY2VvZihUc29sKTtcblxuICAgIGxvY2FsQmFzZWNvaW4gPSBiaXRnby5jb2luKCdzb2wnKTtcbiAgICBsb2NhbEJhc2Vjb2luLnNob3VsZC5iZS5hbi5pbnN0YW5jZW9mKFNvbCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdjaGVja1JlY2lwaWVudCcsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbnZhbGlkQW1vdW50RXJyb3IgPVxuICAgICAgL2ludmFsaWQgYXJndW1lbnQgZm9yIGFtb3VudCAtIHBvc2l0aXZlIG51bWJlciBncmVhdGVyIHRoYW4gemVybyBvciBudW1lcmljIHN0cmluZyBleHBlY3RlZC87XG5cbiAgICBpdCgncmVqZWN0cyBhIHplcm8gYW1vdW50IGJ5IGRlZmF1bHQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHtcbiAgICAgICAgYmFzZWNvaW4uY2hlY2tSZWNpcGllbnQoeyBhZGRyZXNzOiAnYXRhQWRkcmVzcycsIGFtb3VudDogJzAnIH0pO1xuICAgICAgfSwgaW52YWxpZEFtb3VudEVycm9yKTtcbiAgICB9KTtcblxuICAgIGl0KCdhbGxvd3MgYSB6ZXJvIGFtb3VudCB3aGVuIGFsbG93WmVyb0Ftb3VudCBpcyBzZXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IHtcbiAgICAgICAgYmFzZWNvaW4uY2hlY2tSZWNpcGllbnQoeyBhZGRyZXNzOiAnYXRhQWRkcmVzcycsIGFtb3VudDogJzAnIH0sIHsgYWxsb3daZXJvQW1vdW50OiB0cnVlIH0pO1xuICAgICAgfSk7XG4gICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IHtcbiAgICAgICAgYmFzZWNvaW4uY2hlY2tSZWNpcGllbnQoeyBhZGRyZXNzOiAnYXRhQWRkcmVzcycsIGFtb3VudDogMCB9LCB7IGFsbG93WmVyb0Ftb3VudDogdHJ1ZSB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3N0aWxsIHJlamVjdHMgbmVnYXRpdmUgYW1vdW50cyB3aGVuIGFsbG93WmVyb0Ftb3VudCBpcyBzZXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHtcbiAgICAgICAgYmFzZWNvaW4uY2hlY2tSZWNpcGllbnQoeyBhZGRyZXNzOiAnYXRhQWRkcmVzcycsIGFtb3VudDogJy0xJyB9LCB7IGFsbG93WmVyb0Ftb3VudDogdHJ1ZSB9KTtcbiAgICAgIH0sIGludmFsaWRBbW91bnRFcnJvcik7XG4gICAgfSk7XG5cbiAgICBpdCgnYWxsb3dzIGFtb3VudCBcIm1heFwiJywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiB7XG4gICAgICAgIGJhc2Vjb2luLmNoZWNrUmVjaXBpZW50KHsgYWRkcmVzczogJ2F0YUFkZHJlc3MnLCBhbW91bnQ6ICdtYXgnIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dW4gdGhlIHJpZ2h0IGluZm8nLCBmdW5jdGlvbiAoKSB7XG4gICAgYmFzZWNvaW4uZ2V0Q2hhaW4oKS5zaG91bGQuZXF1YWwoJ3Rzb2wnKTtcbiAgICBiYXNlY29pbi5nZXRGYW1pbHkoKS5zaG91bGQuZXF1YWwoJ3NvbCcpO1xuICAgIGJhc2Vjb2luLmdldEZ1bGxOYW1lKCkuc2hvdWxkLmVxdWFsKCdUZXN0bmV0IFNvbGFuYScpO1xuICAgIGJhc2Vjb2luLmdldEJhc2VGYWN0b3IoKS5zaG91bGQuZXF1YWwoMTAwMDAwMDAwMCk7XG4gIH0pO1xuICBkZXNjcmliZSgndmVyaWZ5IHRyYW5zYWN0aW9ucycsICgpID0+IHtcbiAgICBjb25zdCB3YWxsZXREYXRhID0ge1xuICAgICAgaWQ6ICc1YjM0MjUyZjFiZjM0OTkzMGUzNDAyMGEwMDAwMDAwMCcsXG4gICAgICBjb2luOiAndHNvbCcsXG4gICAgICBrZXlzOiBbXG4gICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzUwMDAwMDAwMCcsXG4gICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzYwMDAwMDAwMCcsXG4gICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzcwMDAwMDAwMCcsXG4gICAgICBdLFxuICAgICAgY29pblNwZWNpZmljOiB7XG4gICAgICAgIHJvb3RBZGRyZXNzOiB3YWxsZXQucHViLFxuICAgICAgfSxcbiAgICAgIG11bHRpc2lnVHlwZTogJ3RzcycsXG4gICAgfTtcbiAgICBjb25zdCB3YWxsZXRPYmogPSBuZXcgV2FsbGV0KGJpdGdvLCBiYXNlY29pbiwgd2FsbGV0RGF0YSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSB0cmFuc2FjdGlvbnMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zKCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZCgpO1xuICAgICAgY29uc3QgdmFsaWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIG1lbW8sXG4gICAgICAgIGR1cmFibGVOb25jZSxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXRPYmosXG4gICAgICB9IGFzIGFueSk7XG4gICAgICB2YWxpZFRyYW5zYWN0aW9uLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IGNvbnNvbGlkYXRlIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSBuZXdUeFBhcmFtcygpO1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IG5ld1R4UHJlYnVpbGQoKTtcbiAgICAgIHR4UHJlYnVpbGQuY29uc29saWRhdGVJZCA9ICdjb25zb2xpZGF0ZUlkJztcblxuICAgICAgY29uc3Qgd2FsbGV0RGF0YSA9IHtcbiAgICAgICAgaWQ6ICc1YjM0MjUyZjFiZjM0OTkzMGUzNDAyMGEwMDAwMDAwMCcsXG4gICAgICAgIGNvaW46ICd0c29sJyxcbiAgICAgICAga2V5czogW1xuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzUwMDAwMDAwMCcsXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NjAwMDAwMDAwJyxcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc3MDAwMDAwMDAnLFxuICAgICAgICBdLFxuICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICByb290QWRkcmVzczogc3Rha2VBY2NvdW50LnB1YixcbiAgICAgICAgfSxcbiAgICAgICAgbXVsdGlzaWdUeXBlOiAndHNzJyxcbiAgICAgIH07XG4gICAgICBjb25zdCB3YWxsZXRXaXRoRGlmZmVyZW50QWRkcmVzcyA9IG5ldyBXYWxsZXQoYml0Z28sIGJhc2Vjb2luLCB3YWxsZXREYXRhKTtcblxuICAgICAgY29uc3QgdmFsaWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIG1lbW8sXG4gICAgICAgIGR1cmFibGVOb25jZSxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXRXaXRoRGlmZmVyZW50QWRkcmVzcyxcbiAgICAgIH0gYXMgYW55KTtcbiAgICAgIHZhbGlkVHJhbnNhY3Rpb24uc2hvdWxkLmJlLnRydWUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIHR4QmFzZTY0IGFuZCB0eEhleCBpbnRlcmNoYW5nZWFibHknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zKCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZCgpO1xuICAgICAgdHhQcmVidWlsZC50eEhleCA9IHR4UHJlYnVpbGQudHhCYXNlNjQ7XG4gICAgICB0eFByZWJ1aWxkLnR4QmFzZTY0ID0gdW5kZWZpbmVkO1xuICAgICAgY29uc3QgdmFsaWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIG1lbW8sXG4gICAgICAgIGR1cmFibGVOb25jZSxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXRPYmosXG4gICAgICB9IGFzIGFueSk7XG4gICAgICB2YWxpZFRyYW5zYWN0aW9uLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgY29udmVydCBzZXJpYWxpemVkIGhleCBzdHJpbmcgdG8gYmFzZTY0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSBuZXdUeFBhcmFtcygpO1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IG5ld1R4UHJlYnVpbGQoKTtcbiAgICAgIHR4UHJlYnVpbGQudHhCYXNlNjQgPSBCdWZmZXIuZnJvbSh0eFByZWJ1aWxkLnR4QmFzZTY0LCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgY29uc3QgdmFsaWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIG1lbW8sXG4gICAgICAgIGR1cmFibGVOb25jZSxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXRPYmosXG4gICAgICB9IGFzIGFueSk7XG4gICAgICB2YWxpZFRyYW5zYWN0aW9uLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IHdoZW4gaW5wdXQgYHJlY2lwaWVudHNgIGlzIGFic2VudCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0gbmV3VHhQYXJhbXMoKTtcbiAgICAgIHR4UGFyYW1zLnJlY2lwaWVudHMgPSB1bmRlZmluZWQ7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZCgpO1xuICAgICAgY29uc3QgdmFsaWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIG1lbW8sXG4gICAgICAgIGR1cmFibGVOb25jZSxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXRPYmosXG4gICAgICB9IGFzIGFueSk7XG4gICAgICB2YWxpZFRyYW5zYWN0aW9uLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IGJ1bGsgY2xvc2UtQVRBIHR4IHdoZW4gdHhQYXJhbXMucmVjaXBpZW50cyBpcyBwcmVzZW50IChvdXRwdXRzIG5vdCBwb3B1bGF0ZWQpJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYWNjb3VudEtleXMgPSBuZXcgS2V5UGFpcihyZXNvdXJjZXMuYXV0aEFjY291bnQpLmdldEtleXMoKTtcbiAgICAgIGNvbnN0IG5vbmNlQWNjb3VudEtleXMgPSBuZXcgS2V5UGFpcihyZXNvdXJjZXMubm9uY2VBY2NvdW50KS5nZXRLZXlzKCk7XG4gICAgICBjb25zdCBhY2NvdW50MktleXMgPSBuZXcgS2V5UGFpcihyZXNvdXJjZXMuYXV0aEFjY291bnQyKS5nZXRLZXlzKCk7XG4gICAgICBjb25zdCBhdGFBZGRyZXNzMSA9IG5vbmNlQWNjb3VudEtleXMucHViO1xuICAgICAgY29uc3QgYXRhQWRkcmVzczIgPSBhY2NvdW50MktleXMucHViO1xuXG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldENsb3NlQXRhSW5pdGlhbGl6YXRpb25CdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIubm9uY2UoYmxvY2tIYXNoKTtcbiAgICAgIHR4QnVpbGRlci5zZW5kZXIoYWNjb3VudEtleXMucHViKTtcbiAgICAgIHR4QnVpbGRlci5hZGRDbG9zZUF0YUluc3RydWN0aW9uKGF0YUFkZHJlc3MxLCBhY2NvdW50S2V5cy5wdWIsIGFjY291bnRLZXlzLnB1Yik7XG4gICAgICB0eEJ1aWxkZXIuYWRkQ2xvc2VBdGFJbnN0cnVjdGlvbihhdGFBZGRyZXNzMiwgYWNjb3VudEtleXMucHViLCBhY2NvdW50S2V5cy5wdWIpO1xuICAgICAgY29uc3QgYnVpbHQgPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHR4QmFzZTY0OiBidWlsdC50b0Jyb2FkY2FzdEZvcm1hdCgpLFxuICAgICAgICB0eEluZm86IHtcbiAgICAgICAgICBmZWVQYXllcjogYWNjb3VudEtleXMucHViLFxuICAgICAgICAgIG5vbmNlOiBibG9ja0hhc2gsXG4gICAgICAgIH0sXG4gICAgICAgIGNvaW46ICd0c29sJyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHZhbGlkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UGFyYW1zOiB7XG4gICAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgICAgeyBhZGRyZXNzOiBhdGFBZGRyZXNzMSwgYW1vdW50OiAnMCcgfSxcbiAgICAgICAgICAgIHsgYWRkcmVzczogYXRhQWRkcmVzczIsIGFtb3VudDogJzAnIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXRPYmosXG4gICAgICB9IGFzIGFueSk7XG4gICAgICB2YWxpZFRyYW5zYWN0aW9uLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB2ZXJpZnkgYnVsayBjbG9zZS1BVEEgd2hlbiB0eFBhcmFtcy5yZWNpcGllbnRzIGRvIG5vdCBtYXRjaCBjbG9zZSBpbnN0cnVjdGlvbnMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBhY2NvdW50S2V5cyA9IG5ldyBLZXlQYWlyKHJlc291cmNlcy5hdXRoQWNjb3VudCkuZ2V0S2V5cygpO1xuICAgICAgY29uc3Qgbm9uY2VBY2NvdW50S2V5cyA9IG5ldyBLZXlQYWlyKHJlc291cmNlcy5ub25jZUFjY291bnQpLmdldEtleXMoKTtcbiAgICAgIGNvbnN0IGFjY291bnQyS2V5cyA9IG5ldyBLZXlQYWlyKHJlc291cmNlcy5hdXRoQWNjb3VudDIpLmdldEtleXMoKTtcbiAgICAgIGNvbnN0IHdyb25nQXRhID0gbmV3IEtleVBhaXIocmVzb3VyY2VzLnN0YWtlQWNjb3VudCkuZ2V0S2V5cygpLnB1YjtcbiAgICAgIGNvbnN0IGF0YUFkZHJlc3MxID0gbm9uY2VBY2NvdW50S2V5cy5wdWI7XG4gICAgICBjb25zdCBhdGFBZGRyZXNzMiA9IGFjY291bnQyS2V5cy5wdWI7XG5cbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0Q2xvc2VBdGFJbml0aWFsaXphdGlvbkJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5ub25jZShibG9ja0hhc2gpO1xuICAgICAgdHhCdWlsZGVyLnNlbmRlcihhY2NvdW50S2V5cy5wdWIpO1xuICAgICAgdHhCdWlsZGVyLmFkZENsb3NlQXRhSW5zdHJ1Y3Rpb24oYXRhQWRkcmVzczEsIGFjY291bnRLZXlzLnB1YiwgYWNjb3VudEtleXMucHViKTtcbiAgICAgIHR4QnVpbGRlci5hZGRDbG9zZUF0YUluc3RydWN0aW9uKGF0YUFkZHJlc3MyLCBhY2NvdW50S2V5cy5wdWIsIGFjY291bnRLZXlzLnB1Yik7XG4gICAgICBjb25zdCBidWlsdCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHtcbiAgICAgICAgdHhCYXNlNjQ6IGJ1aWx0LnRvQnJvYWRjYXN0Rm9ybWF0KCksXG4gICAgICAgIHR4SW5mbzoge1xuICAgICAgICAgIGZlZVBheWVyOiBhY2NvdW50S2V5cy5wdWIsXG4gICAgICAgICAgbm9uY2U6IGJsb2NrSGFzaCxcbiAgICAgICAgfSxcbiAgICAgICAgY29pbjogJ3Rzb2wnLFxuICAgICAgfTtcblxuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICB0eFBhcmFtczoge1xuICAgICAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgICAgICB7IGFkZHJlc3M6IGF0YUFkZHJlc3MxLCBhbW91bnQ6ICcwJyB9LFxuICAgICAgICAgICAgICB7IGFkZHJlc3M6IHdyb25nQXRhLCBhbW91bnQ6ICcwJyB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgICAgd2FsbGV0OiB3YWxsZXRPYmosXG4gICAgICAgIH0gYXMgYW55KVxuICAgICAgICAuc2hvdWxkLnJlamVjdGVkV2l0aChcbiAgICAgICAgICAnQ2xvc2UgQVRBIHR4UGFyYW1zLnJlY2lwaWVudHMgYWRkcmVzc2VzIG11c3QgbWF0Y2ggdGhlIEFUQSBhY2NvdW50IGFkZHJlc3NlcyBpbiB0aGUgdHJhbnNhY3Rpb24gaW5zdHJ1Y3Rpb25zJ1xuICAgICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHZlcmlmeSBidWxrIGNsb3NlLUFUQSB3aGVuIGEgcmVjaXBpZW50IGFtb3VudCBpcyBub24temVybycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFjY291bnRLZXlzID0gbmV3IEtleVBhaXIocmVzb3VyY2VzLmF1dGhBY2NvdW50KS5nZXRLZXlzKCk7XG4gICAgICBjb25zdCBub25jZUFjY291bnRLZXlzID0gbmV3IEtleVBhaXIocmVzb3VyY2VzLm5vbmNlQWNjb3VudCkuZ2V0S2V5cygpO1xuICAgICAgY29uc3QgYWNjb3VudDJLZXlzID0gbmV3IEtleVBhaXIocmVzb3VyY2VzLmF1dGhBY2NvdW50MikuZ2V0S2V5cygpO1xuICAgICAgY29uc3QgYXRhQWRkcmVzczEgPSBub25jZUFjY291bnRLZXlzLnB1YjtcbiAgICAgIGNvbnN0IGF0YUFkZHJlc3MyID0gYWNjb3VudDJLZXlzLnB1YjtcblxuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRDbG9zZUF0YUluaXRpYWxpemF0aW9uQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLm5vbmNlKGJsb2NrSGFzaCk7XG4gICAgICB0eEJ1aWxkZXIuc2VuZGVyKGFjY291bnRLZXlzLnB1Yik7XG4gICAgICB0eEJ1aWxkZXIuYWRkQ2xvc2VBdGFJbnN0cnVjdGlvbihhdGFBZGRyZXNzMSwgYWNjb3VudEtleXMucHViLCBhY2NvdW50S2V5cy5wdWIpO1xuICAgICAgdHhCdWlsZGVyLmFkZENsb3NlQXRhSW5zdHJ1Y3Rpb24oYXRhQWRkcmVzczIsIGFjY291bnRLZXlzLnB1YiwgYWNjb3VudEtleXMucHViKTtcbiAgICAgIGNvbnN0IGJ1aWx0ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICB0eEJhc2U2NDogYnVpbHQudG9Ccm9hZGNhc3RGb3JtYXQoKSxcbiAgICAgICAgdHhJbmZvOiB7XG4gICAgICAgICAgZmVlUGF5ZXI6IGFjY291bnRLZXlzLnB1YixcbiAgICAgICAgICBub25jZTogYmxvY2tIYXNoLFxuICAgICAgICB9LFxuICAgICAgICBjb2luOiAndHNvbCcsXG4gICAgICB9O1xuXG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAudmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHR4UGFyYW1zOiB7XG4gICAgICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAgICAgIHsgYWRkcmVzczogYXRhQWRkcmVzczEsIGFtb3VudDogJzEnIH0sXG4gICAgICAgICAgICAgIHsgYWRkcmVzczogYXRhQWRkcmVzczIsIGFtb3VudDogJzAnIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgICB3YWxsZXQ6IHdhbGxldE9iaixcbiAgICAgICAgfSBhcyBhbnkpXG4gICAgICAgIC5zaG91bGQucmVqZWN0ZWRXaXRoKCdDbG9zZSBBVEEgcmVjaXBpZW50cyBtdXN0IGhhdmUgemVybyBhbW91bnQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IHJlY292ZXItbmVzdGVkIHR4IHdoZW4gd2FsbGV0QWRkcmVzcyBtYXRjaGVzIHJvb3QnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBhY2NvdW50S2V5cyA9IG5ldyBLZXlQYWlyKHJlc291cmNlcy5hdXRoQWNjb3VudCkuZ2V0S2V5cygpO1xuICAgICAgY29uc3Qgbm9uY2VBY2NvdW50S2V5cyA9IG5ldyBLZXlQYWlyKHJlc291cmNlcy5ub25jZUFjY291bnQpLmdldEtleXMoKTtcbiAgICAgIGNvbnN0IGFjY291bnQyS2V5cyA9IG5ldyBLZXlQYWlyKHJlc291cmNlcy5hdXRoQWNjb3VudDIpLmdldEtleXMoKTtcbiAgICAgIGNvbnN0IG1pbnQgPSAnRVBqRldkZDVBdWZxU1NxZU0ycU4xeHp5YmFwQzhHNHdFR0drWnd5VER0MXYnO1xuXG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFJlY292ZXJOZXN0ZWRBdGFCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIubm9uY2UoYmxvY2tIYXNoKTtcbiAgICAgIHR4QnVpbGRlci5zZW5kZXIoYWNjb3VudEtleXMucHViKTtcbiAgICAgIHR4QnVpbGRlci5mZWVQYXllcihhY2NvdW50S2V5cy5wdWIpO1xuICAgICAgdHhCdWlsZGVyLmFzc29jaWF0ZWRUb2tlbkFjY291bnRSZW50KCcyMDM5MjgwJyk7XG4gICAgICB0eEJ1aWxkZXIubmVzdGVkQWNjb3VudEFkZHJlc3Mobm9uY2VBY2NvdW50S2V5cy5wdWIpO1xuICAgICAgdHhCdWlsZGVyLm5lc3RlZE1pbnRBZGRyZXNzKG1pbnQpO1xuICAgICAgdHhCdWlsZGVyLmRlc3RpbmF0aW9uQWNjb3VudEFkZHJlc3MoYWNjb3VudDJLZXlzLnB1Yik7XG4gICAgICB0eEJ1aWxkZXIub3duZXJBY2NvdW50QWRkcmVzcyhhY2NvdW50MktleXMucHViKTtcbiAgICAgIHR4QnVpbGRlci5vd25lck1pbnRBZGRyZXNzKG1pbnQpO1xuICAgICAgdHhCdWlsZGVyLndhbGxldEFkZHJlc3MoYWNjb3VudEtleXMucHViKTtcblxuICAgICAgY29uc3QgYnVpbHQgPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHR4QmFzZTY0OiBidWlsdC50b0Jyb2FkY2FzdEZvcm1hdCgpLFxuICAgICAgICB0eEluZm86IHtcbiAgICAgICAgICBmZWVQYXllcjogYWNjb3VudEtleXMucHViLFxuICAgICAgICAgIG5vbmNlOiBibG9ja0hhc2gsXG4gICAgICAgIH0sXG4gICAgICAgIGNvaW46ICd0c29sJyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHZhbGlkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UGFyYW1zOiB7fSxcbiAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXRPYmosXG4gICAgICB9IGFzIGFueSk7XG4gICAgICB2YWxpZFRyYW5zYWN0aW9uLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB2ZXJpZnkgcmVjb3Zlci1uZXN0ZWQgdHggd2hlbiB3YWxsZXQgcm9vdCBkb2VzIG5vdCBtYXRjaCBpbnN0cnVjdGlvbiB3YWxsZXRBZGRyZXNzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYWNjb3VudEtleXMgPSBuZXcgS2V5UGFpcihyZXNvdXJjZXMuYXV0aEFjY291bnQpLmdldEtleXMoKTtcbiAgICAgIGNvbnN0IG5vbmNlQWNjb3VudEtleXMgPSBuZXcgS2V5UGFpcihyZXNvdXJjZXMubm9uY2VBY2NvdW50KS5nZXRLZXlzKCk7XG4gICAgICBjb25zdCBhY2NvdW50MktleXMgPSBuZXcgS2V5UGFpcihyZXNvdXJjZXMuYXV0aEFjY291bnQyKS5nZXRLZXlzKCk7XG4gICAgICBjb25zdCBtaW50ID0gJ0VQakZXZGQ1QXVmcVNTcWVNMnFOMXh6eWJhcEM4RzR3RUdHa1p3eVREdDF2JztcblxuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRSZWNvdmVyTmVzdGVkQXRhQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLm5vbmNlKGJsb2NrSGFzaCk7XG4gICAgICB0eEJ1aWxkZXIuc2VuZGVyKGFjY291bnRLZXlzLnB1Yik7XG4gICAgICB0eEJ1aWxkZXIuZmVlUGF5ZXIoYWNjb3VudEtleXMucHViKTtcbiAgICAgIHR4QnVpbGRlci5hc3NvY2lhdGVkVG9rZW5BY2NvdW50UmVudCgnMjAzOTI4MCcpO1xuICAgICAgdHhCdWlsZGVyLm5lc3RlZEFjY291bnRBZGRyZXNzKG5vbmNlQWNjb3VudEtleXMucHViKTtcbiAgICAgIHR4QnVpbGRlci5uZXN0ZWRNaW50QWRkcmVzcyhtaW50KTtcbiAgICAgIHR4QnVpbGRlci5kZXN0aW5hdGlvbkFjY291bnRBZGRyZXNzKGFjY291bnQyS2V5cy5wdWIpO1xuICAgICAgdHhCdWlsZGVyLm93bmVyQWNjb3VudEFkZHJlc3MoYWNjb3VudDJLZXlzLnB1Yik7XG4gICAgICB0eEJ1aWxkZXIub3duZXJNaW50QWRkcmVzcyhtaW50KTtcbiAgICAgIHR4QnVpbGRlci53YWxsZXRBZGRyZXNzKGFjY291bnRLZXlzLnB1Yik7XG5cbiAgICAgIGNvbnN0IGJ1aWx0ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICB0eEJhc2U2NDogYnVpbHQudG9Ccm9hZGNhc3RGb3JtYXQoKSxcbiAgICAgICAgdHhJbmZvOiB7XG4gICAgICAgICAgZmVlUGF5ZXI6IGFjY291bnRLZXlzLnB1YixcbiAgICAgICAgICBub25jZTogYmxvY2tIYXNoLFxuICAgICAgICB9LFxuICAgICAgICBjb2luOiAndHNvbCcsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCB3YWxsZXREYXRhV3JvbmdSb290ID0ge1xuICAgICAgICBpZDogJzViMzQyNTJmMWJmMzQ5OTMwZTM0MDIwYTAwMDAwMDAwJyxcbiAgICAgICAgY29pbjogJ3Rzb2wnLFxuICAgICAgICBrZXlzOiBbXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NTAwMDAwMDAwJyxcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc2MDAwMDAwMDAnLFxuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzcwMDAwMDAwMCcsXG4gICAgICAgIF0sXG4gICAgICAgIGNvaW5TcGVjaWZpYzoge1xuICAgICAgICAgIHJvb3RBZGRyZXNzOiBzdGFrZUFjY291bnQucHViLFxuICAgICAgICB9LFxuICAgICAgICBtdWx0aXNpZ1R5cGU6ICd0c3MnLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHdyb25nUm9vdFdhbGxldCA9IG5ldyBXYWxsZXQoYml0Z28sIGJhc2Vjb2luLCB3YWxsZXREYXRhV3JvbmdSb290KTtcblxuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICB0eFBhcmFtczoge30sXG4gICAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgICB3YWxsZXQ6IHdyb25nUm9vdFdhbGxldCxcbiAgICAgICAgfSBhcyBhbnkpXG4gICAgICAgIC5zaG91bGQucmVqZWN0ZWRXaXRoKC9SZWNvdmVyIG5lc3RlZCB3YWxsZXQgYWRkcmVzcyBtdXN0IGJlIHdhbGxldCByb290IGFkZHJlc3MvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB2ZXJpZnkgdHJhbnNhY3Rpb25zIHdoZW4gaGF2ZSBkaWZmZXJlbnQgbWVtbycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0gbmV3VHhQYXJhbXMoKTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkKCk7XG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAudmVyaWZ5VHJhbnNhY3Rpb24oeyB0eFBhcmFtcywgdHhQcmVidWlsZCwgbWVtbzogZXJyb3JNZW1vLCB3YWxsZXQ6IHdhbGxldE9iaiB9IGFzIGFueSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ1R4IG1lbW8gZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcyByZWNpcGllbnQgbWVtbycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXNzIGlmIHdlIHBhc3MgUERBIGFkZHJlc3MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB3YWxsZXREYXRhID0ge1xuICAgICAgICBpZDogJzY3ZjhkZGZmNGM5YjhiNTdhMmUxNmFjZmZhYzlhM2I1JyxcbiAgICAgICAgY29pbjogJ3Rzb2wnLFxuICAgICAgICBrZXlzOiBbXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NTAwMDAwMDAwJyxcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc2MDAwMDAwMDAnLFxuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzcwMDAwMDAwMCcsXG4gICAgICAgIF0sXG4gICAgICAgIGNvaW5TcGVjaWZpYzoge1xuICAgICAgICAgIHJvb3RBZGRyZXNzOiAnOHpic0pBNWM4SFBSN0JQalprclNWcnVzMnVNdVhxQ2Z6a3NHd0IzVXNjamInLFxuICAgICAgICB9LFxuICAgICAgICBtdWx0aXNpZ1R5cGU6ICd0c3MnLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHdhbGxldE9iaiA9IG5ldyBXYWxsZXQoYml0Z28sIGJhc2Vjb2luLCB3YWxsZXREYXRhKTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTInLFxuICAgICAgICAgICAgYW1vdW50OiAnMTAwMDAwMDAwMCcsXG4gICAgICAgICAgICB0b2tlbk5hbWU6ICd0c29sOnVzZGMnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHR4QmFzZTY0OlxuICAgICAgICAgICcwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNmVjMWFkY2M4OWJiNTY0ZjFmODIyNTgyMTE0MGE5NzIzZWZhODBlOGQ1MDY3NjU3NzBiN2UyMDFkNjZkODIwMGQ0ZjY5MGU5YTgxNjMyOTFiNjlmOGMzODI3YWFkOTZjZmQyMTA1ZWVlM2FhZTc2Y2JjYTM4ZmNhZDJiZjdmMGEwMjAxMDcwYzc2YzM1NmNiMDY5YjY2YzJiMzVhODYzOGI0ZDRhZmNhNzViMzAzZjI5ZjBkZWViNGJmZjg1MjgyOTlhOWM5ZDIxYzk2MTcyMDQ0ZjEyMTdjMzc4NGU4ZjAyZjQ5ZTJjOGZjMzU5MWU4MTI5NGFiNTQzOTRmOWQyMmZkN2I3YThmNjAxMjllNmVjYjIwMzA5YzI3ZGNiYTVmYzZjNDQxNDM4ZDMzYTE1NjgwMDRhMTg2MGUyMmMxNmYwNzE5NzZhN2QyZTIwMDhiZDM0YjUzYTA4YWE5YzhlYzA0ZWIyMTk2NzQ1ZmM2MDI5MjI0NDQ3NDE3ZTJmYjBmY2VkNjAxMjQwY2FiYmE0Y2U1MzRjMDJmYzE1NGJhNTU5ZWQyYTAyYWM5NzFlMzM4NWFjYjQyNmZmNjNiYjEwNDBlMmMyNDM1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDE4Yzk3MjU4ZjRlMjQ4OWYxYmIzZDEwMjkxNDhlMGQ4MzBiNWExMzk5ZGFmZjEwODQwNDhlN2JkOGRiZTlmODU5ZDEwMzg5ZmJjZWU1MjhmMjA4NjExZGNjYzczNGIzMTA5MjU0MGNiMmI4ZDU4ZDEwMGYyZWFhMmNlZGI0ZGE1ZTA2YTdkNTE3MTkyYzU2OGVlMDhhODQ1ZjczZDI5Nzg4Y2YwMzVjMzE0NWIyMWFiMzQ0ZDgwNjJlYTk0MDAwMDAwNmE3ZDUxNzE5MmM1YzUxMjE4Y2M5NGMzZDRhZjE3ZjU4ZGFlZTA4OWJhMWZkNDRlM2RiZDk4YTAwMDAwMDAwMDZkZGY2ZTFkNzY1YTE5M2Q5Y2JlMTQ2Y2VlYjc5YWMxY2I0ODVlZDVmNWIzNzkxM2E4Y2Y1ODU3ZWZmMDBhOWU2ODA2MzQ1MzM4ODJmODgwYTNlN2RmYTk5OWRmYjg2NGI4ODk2OGQyNDJhMGM5YTkwYjVkZjE0OWU0MmRhMDUwMzA1MDMwMjA5MDEwNDA0MDAwMDAwMDcwNzAwMDMwNjA4MDUwYjBhMDAwYjA0MDQwODAzMDAwYTBjMDBjYTlhM2IwMDAwMDAwMDA5JyxcbiAgICAgICAgdHhJbmZvOiB7XG4gICAgICAgICAgZmVlUGF5ZXI6ICc4emJzSkE1YzhIUFI3QlBqWmtyU1ZydXMydU11WHFDZnprc0d3QjNVc2NqYicsXG4gICAgICAgICAgbm9uY2U6ICdHSHRYUUJzb1pIVm5ORmE5WWV2QXpGcjE3REpqZ0hYazN5Y1RLRDV4RDNaaScsXG4gICAgICAgIH0sXG4gICAgICAgIHR4aWQ6ICc1ODZjNWI1OWIxMGIxMzRkMDRjMTZhYzFiMjczZmUzYzU1MjlmMzRhZWY3NWRiNDQ1NmNkNDY5YzVjZGFjN2UyJyxcbiAgICAgICAgaXNWb3RpbmdUcmFuc2FjdGlvbjogZmFsc2UsXG4gICAgICAgIGNvaW46ICd0c29sJyxcbiAgICAgIH07XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICcxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMicsXG4gICAgICAgICAgICBhbW91bnQ6ICcxMDAwMDAwMDAwJyxcbiAgICAgICAgICAgIHRva2VuTmFtZTogJ3Rzb2w6dXNkYycsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG4gICAgICBjb25zdCBtZW1vID0ge1xuICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHZlcmlmeVRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgbWVtbzogbWVtbyxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXRPYmosXG4gICAgICB9IGFzIGFueSk7XG4gICAgICB2ZXJpZnlUcmFuc2FjdGlvbi5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdmVyaWZ5IHRyYW5zYWN0aW9ucyB3aGVuIGhhdmUgZGlmZmVyZW50IGR1cmFibGVOb25jZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0gbmV3VHhQYXJhbXMoKTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkKCk7XG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAudmVyaWZ5VHJhbnNhY3Rpb24oeyB0eFBhcmFtcywgdHhQcmVidWlsZCwgbWVtbywgZHVyYWJsZU5vbmNlOiBlcnJvckR1cmFibGVOb25jZSwgd2FsbGV0OiB3YWxsZXRPYmogfSBhcyBhbnkpXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdUeCBkdXJhYmxlTm9uY2UgZG9lcyBub3QgbWF0Y2ggd2l0aCBwYXJhbSBkdXJhYmxlTm9uY2UnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB2ZXJpZnkgdHJhbnNhY3Rpb25zIHdoZW4gaGF2ZSBkaWZmZXJlbnQgZmVlUGF5ZXInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zKCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZCgpO1xuICAgICAgY29uc3Qgd2FsbGV0RGF0YSA9IHtcbiAgICAgICAgaWQ6ICc1YjM0MjUyZjFiZjM0OTkzMGUzNDAyMGEwMDAwMDAwMCcsXG4gICAgICAgIGNvaW46ICd0c29sJyxcbiAgICAgICAga2V5czogW1xuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzUwMDAwMDAwMCcsXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NjAwMDAwMDAwJyxcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc3MDAwMDAwMDAnLFxuICAgICAgICBdLFxuICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICByb290QWRkcmVzczogc3Rha2VBY2NvdW50LnB1YixcbiAgICAgICAgfSxcbiAgICAgICAgbXVsdGlzaWdUeXBlOiAndHNzJyxcbiAgICAgIH07XG4gICAgICBjb25zdCB3YWxsZXRXaXRoRGlmZmVyZW50QWRkcmVzcyA9IG5ldyBXYWxsZXQoYml0Z28sIGJhc2Vjb2luLCB3YWxsZXREYXRhKTtcblxuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQsIG1lbW8sIHdhbGxldDogd2FsbGV0V2l0aERpZmZlcmVudEFkZHJlc3MgfSBhcyBhbnkpXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdUeCBmZWUgcGF5ZXIgaXMgbm90IHRoZSB3YWxsZXQgcm9vdCBhZGRyZXNzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdmVyaWZ5IHRyYW5zYWN0aW9ucyB3aGVuIGhhdmUgZGlmZmVyZW50IHJlY2lwaWVudHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zV2l0aEVycm9yKCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZCgpO1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQsIG1lbW8sIGVycm9yRmVlUGF5ZXIsIHdhbGxldDogd2FsbGV0T2JqIH0gYXMgYW55KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnVHggb3V0cHV0cyBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHR4UGFyYW1zIHJlY2lwaWVudHMnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc3VjY2VlZCB0byB2ZXJpZnkgdG9rZW4gdHJhbnNhY3Rpb24gd2l0aCBuYXRpdmUgYWRkcmVzcyByZWNpcGllbnQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zVG9rZW5UcmFuc2ZlcigpO1xuICAgICAgY29uc3QgYWRkcmVzcyA9ICdBRjVINnZCa0ZuSnVWcUNoUlBnUFE0SlJjUTVHazI1SEJGaFFRa3lvam12Zyc7IC8vIE5hdGl2ZSBTT0wgYWRkcmVzc1xuICAgICAgdHhQYXJhbXMucmVjaXBpZW50cyA9IFt7IGFkZHJlc3MsIGFtb3VudDogJzEnLCB0b2tlbk5hbWU6ICd0c29sOnVzZGMnIH1dO1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IG5ld1R4UHJlYnVpbGRUb2tlblRyYW5zZmVyKCk7XG4gICAgICBjb25zdCBmZWVQYXllcldhbGxldERhdGEgPSB7XG4gICAgICAgIGlkOiAnNWIzNDI1MmYxYmYzNDk5MzBlMzQwMjBhMDAwMDAwMDAnLFxuICAgICAgICBjb2luOiAndHNvbCcsXG4gICAgICAgIGtleXM6IFtcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc1MDAwMDAwMDAnLFxuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzYwMDAwMDAwMCcsXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NzAwMDAwMDAwJyxcbiAgICAgICAgXSxcbiAgICAgICAgY29pblNwZWNpZmljOiB7XG4gICAgICAgICAgcm9vdEFkZHJlc3M6ICc0RHVqeW1VRmJROEdCS3RBd0FaclE2UXFwdnRCRWl2TDQ4aDR0YTJvSkdkMicsXG4gICAgICAgIH0sXG4gICAgICAgIG11bHRpc2lnVHlwZTogJ3RzcycsXG4gICAgICB9O1xuICAgICAgY29uc3QgZmVlUGF5ZXJXYWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCBiYXNlY29pbiwgZmVlUGF5ZXJXYWxsZXREYXRhKTtcbiAgICAgIGNvbnN0IHZhbGlkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UGFyYW1zLFxuICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICB3YWxsZXQ6IGZlZVBheWVyV2FsbGV0LFxuICAgICAgfSBhcyBhbnkpO1xuICAgICAgdmFsaWRUcmFuc2FjdGlvbi5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHN1Y2NlZWQgdG8gdmVyaWZ5IHRva2VuIHRyYW5zYWN0aW9uIHdpdGggbGVhZGluZyB6ZXJvIHJlY2lwaWVudCBhbW91bnQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zVG9rZW5UcmFuc2ZlcigpO1xuICAgICAgY29uc3QgYWRkcmVzcyA9ICdBRjVINnZCa0ZuSnVWcUNoUlBnUFE0SlJjUTVHazI1SEJGaFFRa3lvam12Zyc7IC8vIE5hdGl2ZSBTT0wgYWRkcmVzc1xuICAgICAgdHhQYXJhbXMucmVjaXBpZW50cyA9IFt7IGFkZHJlc3MsIGFtb3VudDogJzAwMDEnLCB0b2tlbk5hbWU6ICd0c29sOnVzZGMnIH1dO1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IG5ld1R4UHJlYnVpbGRUb2tlblRyYW5zZmVyKCk7XG4gICAgICBjb25zdCBmZWVQYXllcldhbGxldERhdGEgPSB7XG4gICAgICAgIGlkOiAnNWIzNDI1MmYxYmYzNDk5MzBlMzQwMjBhMDAwMDAwMDAnLFxuICAgICAgICBjb2luOiAndHNvbCcsXG4gICAgICAgIGtleXM6IFtcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc1MDAwMDAwMDAnLFxuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzYwMDAwMDAwMCcsXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NzAwMDAwMDAwJyxcbiAgICAgICAgXSxcbiAgICAgICAgY29pblNwZWNpZmljOiB7XG4gICAgICAgICAgcm9vdEFkZHJlc3M6ICc0RHVqeW1VRmJROEdCS3RBd0FaclE2UXFwdnRCRWl2TDQ4aDR0YTJvSkdkMicsXG4gICAgICAgIH0sXG4gICAgICAgIG11bHRpc2lnVHlwZTogJ3RzcycsXG4gICAgICB9O1xuICAgICAgY29uc3QgZmVlUGF5ZXJXYWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCBiYXNlY29pbiwgZmVlUGF5ZXJXYWxsZXREYXRhKTtcbiAgICAgIGNvbnN0IHZhbGlkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UGFyYW1zLFxuICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICB3YWxsZXQ6IGZlZVBheWVyV2FsbGV0LFxuICAgICAgfSBhcyBhbnkpO1xuICAgICAgdmFsaWRUcmFuc2FjdGlvbi5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gdmVyaWZ5IHRva2VuIHRyYW5zYWN0aW9uIHdpdGggZGlmZmVyZW50IHJlY2lwaWVudCB0b2tlbk5hbWUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zVG9rZW5UcmFuc2ZlcigpO1xuICAgICAgY29uc3QgYWRkcmVzcyA9ICdBRjVINnZCa0ZuSnVWcUNoUlBnUFE0SlJjUTVHazI1SEJGaFFRa3lvam12Zyc7IC8vIE5hdGl2ZSBTT0wgYWRkcmVzc1xuICAgICAgdHhQYXJhbXMucmVjaXBpZW50cyA9IFt7IGFkZHJlc3MsIGFtb3VudDogJzEnLCB0b2tlbk5hbWU6ICd0c29sOnVzZHQnIH1dOyAvLyBEaWZmZXJlbnQgdG9rZW5OYW1lLCBzaG91bGQgZmFpbCB0byB2ZXJpZnkgdHhcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkVG9rZW5UcmFuc2ZlcigpO1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICAgIHdhbGxldDogd2FsbGV0T2JqLFxuICAgICAgICB9IGFzIGFueSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ1R4IG91dHB1dHMgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcyByZWNpcGllbnRzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gdmVyaWZ5IHRva2VuIHRyYW5zYWN0aW9uIHdpdGggZGlmZmVyZW50IHJlY2lwaWVudCBhbW91bnRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSBuZXdUeFBhcmFtc1Rva2VuVHJhbnNmZXIoKTtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSAnQUY1SDZ2QmtGbkp1VnFDaFJQZ1BRNEpSY1E1R2syNUhCRmhRUWt5b2ptdmcnOyAvLyBOYXRpdmUgU09MIGFkZHJlc3NcbiAgICAgIHR4UGFyYW1zLnJlY2lwaWVudHMgPSBbeyBhZGRyZXNzLCBhbW91bnQ6ICcyJywgdG9rZW5OYW1lOiAndHNvbDp1c2R0JyB9XTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkVG9rZW5UcmFuc2ZlcigpO1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICAgIHdhbGxldDogd2FsbGV0T2JqLFxuICAgICAgICB9IGFzIGFueSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ1R4IG91dHB1dHMgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcyByZWNpcGllbnRzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gdmVyaWZ5IHRva2VuIHRyYW5zYWN0aW9uIHdpdGggZGlmZmVyZW50IG5hdGl2ZSBhZGRyZXNzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSBuZXdUeFBhcmFtc1Rva2VuVHJhbnNmZXIoKTtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSAnQUY1SDZ2QmtGbkp1VnFDaFJQZ1BRNEpSY1E1R2syNUhCRmhRUWt5b2ptdlgnOyAvLyBOYXRpdmUgU09MIGFkZHJlc3MsIGRpZmZlcmVudCB0aGFuIHR4IHJlY2lwaWVudHNcbiAgICAgIHR4UGFyYW1zLnJlY2lwaWVudHMgPSBbeyBhZGRyZXNzLCBhbW91bnQ6ICcxJywgdG9rZW5OYW1lOiAndHNvbDp1c2RjJyB9XTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkVG9rZW5UcmFuc2ZlcigpO1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICAgIHdhbGxldDogd2FsbGV0T2JqLFxuICAgICAgICB9IGFzIGFueSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ1R4IG91dHB1dHMgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcyByZWNpcGllbnRzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHN1Y2NlZWQgdG8gdmVyaWZ5IHRva2VuIHRyYW5zYWN0aW9uIGZvciB1bnN1cHBvcnRlZCB0b2tlbiB3aGVuIHRva2VuQWRkcmVzcyBhbmQgcHJvZ3JhbUlkIGFyZSBwcm92aWRlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFVzZSBhbiBhZGRyZXNzIHRoYXQgaXMgTk9UIGluIHRoZSBzdGF0aWMgdG9rZW4gbWFwIGFzIHRoZSB1bnN1cHBvcnRlZCBtaW50XG4gICAgICBjb25zdCB1bnN1cHBvcnRlZE1pbnRBZGRyZXNzID0gcmVzb3VyY2VzLnN0YWtlQWNjb3VudC5wdWI7IC8vICczYzVlbVVXalZpRnFUNzJMeFFZZWM4Z2tVOFp0bWZLS1hIdkdnSk5VQmRZeCdcbiAgICAgIGNvbnN0IHJlY2lwaWVudE5hdGl2ZUFkZHJlc3MgPSByZXNvdXJjZXMuYXV0aEFjY291bnQyLnB1YjtcbiAgICAgIGNvbnN0IGFtb3VudCA9ICcxMDAwJztcblxuICAgICAgLy8gUHJlLWRlcml2ZSB0aGUgQVRBIHNvIHRoZSBidWlsZGVyJ3MgaW5zdHJ1Y3Rpb24gZGVzdGluYXRpb24gbWF0Y2hlcyB3aGF0IHZlcmlmeVRyYW5zYWN0aW9uIHdpbGwgY29tcHV0ZVxuICAgICAgY29uc3QgYXRhQWRkcmVzcyA9IGF3YWl0IGdldEFzc29jaWF0ZWRUb2tlbkFjY291bnRBZGRyZXNzKFxuICAgICAgICB1bnN1cHBvcnRlZE1pbnRBZGRyZXNzLFxuICAgICAgICByZWNpcGllbnROYXRpdmVBZGRyZXNzLFxuICAgICAgICB0cnVlLFxuICAgICAgICBUT0tFTl9QUk9HUkFNX0lELnRvU3RyaW5nKClcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0VG9rZW5UcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5zZW5kZXIod2FsbGV0LnB1Yik7XG4gICAgICB0eEJ1aWxkZXIubm9uY2UoYmxvY2tIYXNoKTtcbiAgICAgIHR4QnVpbGRlci5mZWUoeyBhbW91bnQ6IDUwMDAgfSk7XG4gICAgICB0eEJ1aWxkZXIuc2VuZCh7XG4gICAgICAgIGFkZHJlc3M6IGF0YUFkZHJlc3MsIC8vIHBhc3MgdGhlIEFUQSBhcyB0aGUgZGlyZWN0IGRlc3RpbmF0aW9uXG4gICAgICAgIGFtb3VudCxcbiAgICAgICAgdG9rZW5OYW1lOiB1bnN1cHBvcnRlZE1pbnRBZGRyZXNzLCAvLyB0b2tlbk5hbWUgZXF1YWxzIG1pbnQgYWRkcmVzcyAobWF0Y2hlcyBleHBsYWluVHJhbnNhY3Rpb24gZmFsbGJhY2spXG4gICAgICAgIHRva2VuQWRkcmVzczogdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyxcbiAgICAgICAgcHJvZ3JhbUlkOiBUT0tFTl9QUk9HUkFNX0lELnRvU3RyaW5nKCksXG4gICAgICAgIGRlY2ltYWxQbGFjZXM6IDYsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHR4QmFzZTY0OiB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpLFxuICAgICAgICB0eEluZm86IHsgZmVlUGF5ZXI6IHdhbGxldC5wdWIsIG5vbmNlOiBibG9ja0hhc2ggfSxcbiAgICAgICAgY29pbjogJ3Rzb2wnLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogcmVjaXBpZW50TmF0aXZlQWRkcmVzcywgLy8gbmF0aXZlIGFkZHJlc3Mg4oCUIHZlcmlmeVRyYW5zYWN0aW9uIHdpbGwgZGVyaXZlIHRoZSBBVEFcbiAgICAgICAgICAgIGFtb3VudCxcbiAgICAgICAgICAgIHRva2VuTmFtZTogdW5zdXBwb3J0ZWRNaW50QWRkcmVzcywgLy8gbXVzdCBtYXRjaCBvdXRwdXQncyB0b2tlbk5hbWUgKG1pbnQgYWRkcmVzcyBhcyBmYWxsYmFjaylcbiAgICAgICAgICAgIHRva2VuQWRkcmVzczogdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyxcbiAgICAgICAgICAgIHByb2dyYW1JZDogVE9LRU5fUFJPR1JBTV9JRC50b1N0cmluZygpLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UGFyYW1zLCB0eFByZWJ1aWxkLCB3YWxsZXQ6IHdhbGxldE9iaiB9IGFzIGFueSk7XG4gICAgICByZXN1bHQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIHZlcmlmeSB0b2tlbiB0cmFuc2FjdGlvbiBmb3IgdW5zdXBwb3J0ZWQgdG9rZW4gd2hlbiB0b2tlbkFkZHJlc3MgYW5kIHByb2dyYW1JZCBhcmUgbm90IHByb3ZpZGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyA9IHJlc291cmNlcy5zdGFrZUFjY291bnQucHViO1xuICAgICAgY29uc3QgcmVjaXBpZW50TmF0aXZlQWRkcmVzcyA9IHJlc291cmNlcy5hdXRoQWNjb3VudDIucHViO1xuICAgICAgY29uc3QgYW1vdW50ID0gJzEwMDAnO1xuXG4gICAgICBjb25zdCBhdGFBZGRyZXNzID0gYXdhaXQgZ2V0QXNzb2NpYXRlZFRva2VuQWNjb3VudEFkZHJlc3MoXG4gICAgICAgIHVuc3VwcG9ydGVkTWludEFkZHJlc3MsXG4gICAgICAgIHJlY2lwaWVudE5hdGl2ZUFkZHJlc3MsXG4gICAgICAgIHRydWUsXG4gICAgICAgIFRPS0VOX1BST0dSQU1fSUQudG9TdHJpbmcoKVxuICAgICAgKTtcblxuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRUb2tlblRyYW5zZmVyQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnNlbmRlcih3YWxsZXQucHViKTtcbiAgICAgIHR4QnVpbGRlci5ub25jZShibG9ja0hhc2gpO1xuICAgICAgdHhCdWlsZGVyLmZlZSh7IGFtb3VudDogNTAwMCB9KTtcbiAgICAgIHR4QnVpbGRlci5zZW5kKHtcbiAgICAgICAgYWRkcmVzczogYXRhQWRkcmVzcyxcbiAgICAgICAgYW1vdW50LFxuICAgICAgICB0b2tlbk5hbWU6IHVuc3VwcG9ydGVkTWludEFkZHJlc3MsXG4gICAgICAgIHRva2VuQWRkcmVzczogdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyxcbiAgICAgICAgcHJvZ3JhbUlkOiBUT0tFTl9QUk9HUkFNX0lELnRvU3RyaW5nKCksXG4gICAgICAgIGRlY2ltYWxQbGFjZXM6IDYsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHR4QmFzZTY0OiB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpLFxuICAgICAgICB0eEluZm86IHsgZmVlUGF5ZXI6IHdhbGxldC5wdWIsIG5vbmNlOiBibG9ja0hhc2ggfSxcbiAgICAgICAgY29pbjogJ3Rzb2wnLFxuICAgICAgfTtcbiAgICAgIC8vIE5vIHRva2VuQWRkcmVzcyBvciBwcm9ncmFtSWQg4oCUIHN0YXRpYyBtYXAgbG9va3VwIHdpbGwgZmFpbCBmb3IgdW5zdXBwb3J0ZWQgdG9rZW5cbiAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogcmVjaXBpZW50TmF0aXZlQWRkcmVzcyxcbiAgICAgICAgICAgIGFtb3VudCxcbiAgICAgICAgICAgIHRva2VuTmFtZTogdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfTtcblxuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQsIHdhbGxldDogd2FsbGV0T2JqIH0gYXMgYW55KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnVHggb3V0cHV0cyBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHR4UGFyYW1zIHJlY2lwaWVudHMnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc3VjY2VlZCB0byB2ZXJpZnkgdG9rZW4gdHJhbnNhY3Rpb24gZm9yIHVuc3VwcG9ydGVkIFRva2VuLTIwMjIgdG9rZW4gd2hlbiB0b2tlbkFkZHJlc3MgYW5kIHByb2dyYW1JZCBhcmUgcHJvdmlkZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB1bnN1cHBvcnRlZE1pbnRBZGRyZXNzID0gcmVzb3VyY2VzLnN0YWtlQWNjb3VudC5wdWI7XG4gICAgICBjb25zdCByZWNpcGllbnROYXRpdmVBZGRyZXNzID0gcmVzb3VyY2VzLmF1dGhBY2NvdW50Mi5wdWI7XG4gICAgICBjb25zdCBhbW91bnQgPSAnMTAwMCc7XG5cbiAgICAgIGNvbnN0IGF0YUFkZHJlc3MgPSBhd2FpdCBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyhcbiAgICAgICAgdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyxcbiAgICAgICAgcmVjaXBpZW50TmF0aXZlQWRkcmVzcyxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgVE9LRU5fMjAyMl9QUk9HUkFNX0lELnRvU3RyaW5nKClcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0VG9rZW5UcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5zZW5kZXIod2FsbGV0LnB1Yik7XG4gICAgICB0eEJ1aWxkZXIubm9uY2UoYmxvY2tIYXNoKTtcbiAgICAgIHR4QnVpbGRlci5mZWUoeyBhbW91bnQ6IDUwMDAgfSk7XG4gICAgICB0eEJ1aWxkZXIuc2VuZCh7XG4gICAgICAgIGFkZHJlc3M6IGF0YUFkZHJlc3MsXG4gICAgICAgIGFtb3VudCxcbiAgICAgICAgdG9rZW5OYW1lOiB1bnN1cHBvcnRlZE1pbnRBZGRyZXNzLFxuICAgICAgICB0b2tlbkFkZHJlc3M6IHVuc3VwcG9ydGVkTWludEFkZHJlc3MsXG4gICAgICAgIHByb2dyYW1JZDogVE9LRU5fMjAyMl9QUk9HUkFNX0lELnRvU3RyaW5nKCksXG4gICAgICAgIGRlY2ltYWxQbGFjZXM6IDYsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHR4QmFzZTY0OiB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpLFxuICAgICAgICB0eEluZm86IHsgZmVlUGF5ZXI6IHdhbGxldC5wdWIsIG5vbmNlOiBibG9ja0hhc2ggfSxcbiAgICAgICAgY29pbjogJ3Rzb2wnLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogcmVjaXBpZW50TmF0aXZlQWRkcmVzcyxcbiAgICAgICAgICAgIGFtb3VudCxcbiAgICAgICAgICAgIHRva2VuTmFtZTogdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyxcbiAgICAgICAgICAgIHRva2VuQWRkcmVzczogdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyxcbiAgICAgICAgICAgIHByb2dyYW1JZDogVE9LRU5fMjAyMl9QUk9HUkFNX0lELnRvU3RyaW5nKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQsIHdhbGxldDogd2FsbGV0T2JqIH0gYXMgYW55KTtcbiAgICAgIHJlc3VsdC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gdmVyaWZ5IHRva2VuIHRyYW5zYWN0aW9uIGZvciB1bnN1cHBvcnRlZCBUb2tlbi0yMDIyIHRva2VuIHdoZW4gd3JvbmcgcHJvZ3JhbUlkIGlzIHByb3ZpZGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyA9IHJlc291cmNlcy5zdGFrZUFjY291bnQucHViO1xuICAgICAgY29uc3QgcmVjaXBpZW50TmF0aXZlQWRkcmVzcyA9IHJlc291cmNlcy5hdXRoQWNjb3VudDIucHViO1xuICAgICAgY29uc3QgYW1vdW50ID0gJzEwMDAnO1xuXG4gICAgICAvLyBCdWlsZCB3aXRoIFRva2VuLTIwMjIgcHJvZ3JhbSBJRCAoQVRBIGRlcml2ZWQgdXNpbmcgVE9LRU5fMjAyMl9QUk9HUkFNX0lEKVxuICAgICAgY29uc3QgYXRhQWRkcmVzcyA9IGF3YWl0IGdldEFzc29jaWF0ZWRUb2tlbkFjY291bnRBZGRyZXNzKFxuICAgICAgICB1bnN1cHBvcnRlZE1pbnRBZGRyZXNzLFxuICAgICAgICByZWNpcGllbnROYXRpdmVBZGRyZXNzLFxuICAgICAgICB0cnVlLFxuICAgICAgICBUT0tFTl8yMDIyX1BST0dSQU1fSUQudG9TdHJpbmcoKVxuICAgICAgKTtcblxuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRUb2tlblRyYW5zZmVyQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnNlbmRlcih3YWxsZXQucHViKTtcbiAgICAgIHR4QnVpbGRlci5ub25jZShibG9ja0hhc2gpO1xuICAgICAgdHhCdWlsZGVyLmZlZSh7IGFtb3VudDogNTAwMCB9KTtcbiAgICAgIHR4QnVpbGRlci5zZW5kKHtcbiAgICAgICAgYWRkcmVzczogYXRhQWRkcmVzcyxcbiAgICAgICAgYW1vdW50LFxuICAgICAgICB0b2tlbk5hbWU6IHVuc3VwcG9ydGVkTWludEFkZHJlc3MsXG4gICAgICAgIHRva2VuQWRkcmVzczogdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyxcbiAgICAgICAgcHJvZ3JhbUlkOiBUT0tFTl8yMDIyX1BST0dSQU1fSUQudG9TdHJpbmcoKSxcbiAgICAgICAgZGVjaW1hbFBsYWNlczogNixcbiAgICAgIH0pO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHtcbiAgICAgICAgdHhCYXNlNjQ6IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCksXG4gICAgICAgIHR4SW5mbzogeyBmZWVQYXllcjogd2FsbGV0LnB1Yiwgbm9uY2U6IGJsb2NrSGFzaCB9LFxuICAgICAgICBjb2luOiAndHNvbCcsXG4gICAgICB9O1xuICAgICAgLy8gVmVyaWZ5IHdpdGggdGhlIHdyb25nIHByb2dyYW1JZCAoVE9LRU5fUFJPR1JBTV9JRCBpbnN0ZWFkIG9mIFRPS0VOXzIwMjJfUFJPR1JBTV9JRClcbiAgICAgIC8vIEFUQSBkZXJpdmF0aW9uIHdpbGwgcHJvZHVjZSBhIGRpZmZlcmVudCBhZGRyZXNzIOKGkiBtaXNtYXRjaCDihpIgcmVqZWN0aW9uXG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6IHJlY2lwaWVudE5hdGl2ZUFkZHJlc3MsXG4gICAgICAgICAgICBhbW91bnQsXG4gICAgICAgICAgICB0b2tlbk5hbWU6IHVuc3VwcG9ydGVkTWludEFkZHJlc3MsXG4gICAgICAgICAgICB0b2tlbkFkZHJlc3M6IHVuc3VwcG9ydGVkTWludEFkZHJlc3MsXG4gICAgICAgICAgICBwcm9ncmFtSWQ6IFRPS0VOX1BST0dSQU1fSUQudG9TdHJpbmcoKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfTtcblxuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQsIHdhbGxldDogd2FsbGV0T2JqIH0gYXMgYW55KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnVHggb3V0cHV0cyBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHR4UGFyYW1zIHJlY2lwaWVudHMnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc3VjY2VlZCB0byB2ZXJpZnkgdHJhbnNhY3Rpb25zIHdoZW4gcmVjaXBpZW50cyBoYXMgZXh0cmEgZGF0YScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0gbmV3VHhQYXJhbXNXaXRoRXh0cmFEYXRhKCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZCgpO1xuICAgICAgY29uc3QgdmFsaWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIG1lbW8sXG4gICAgICAgIGR1cmFibGVOb25jZSxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXRPYmosXG4gICAgICB9IGFzIGFueSk7XG4gICAgICB2YWxpZFRyYW5zYWN0aW9uLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IGFjdGl2YXRlIHN0YWtpbmcgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGZhY3RvcnlcbiAgICAgICAgLmdldFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIoKVxuICAgICAgICAuc3Rha2luZ0FkZHJlc3Moc3Rha2VBY2NvdW50LnB1YilcbiAgICAgICAgLnNlbmRlcih3YWxsZXQucHViKVxuICAgICAgICAubm9uY2UoYmxvY2tIYXNoKVxuICAgICAgICAuYW1vdW50KGFtb3VudClcbiAgICAgICAgLnZhbGlkYXRvcih2YWxpZGF0b3IucHViKVxuICAgICAgICAubWVtbygndGVzdCBtZW1vJylcbiAgICAgICAgLmZlZSh7IGFtb3VudDogNTAwMCB9KVxuICAgICAgICAuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4VG9Ccm9hZGNhc3RGb3JtYXQgPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSBuZXdUeFBhcmFtcygpO1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IG5ld1R4UHJlYnVpbGQoKTtcbiAgICAgIHR4UHJlYnVpbGQudHhCYXNlNjQgPSB0eFRvQnJvYWRjYXN0Rm9ybWF0O1xuICAgICAgdHhQcmVidWlsZC50eEluZm8ubm9uY2UgPSAnNW5lN3BoQTQ4SnJ2cG4zOUF0dXBCOFprQ0NBeThnTFRmcEdpaFpQdURxZW4nO1xuICAgICAgdHhQYXJhbXMucmVjaXBpZW50cyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6ICc3ZFJ1R0ZiVTJ5MmtpalA2bzFMWU56Vnl6NHlmMTNNb29xb2lvbkN6djVaYScsXG4gICAgICAgICAgYW1vdW50OiBhbW91bnQsXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgICAgY29uc3QgdmFsaWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIG1lbW8sXG4gICAgICAgIHdhbGxldDogd2FsbGV0T2JqLFxuICAgICAgfSBhcyBhbnkpO1xuICAgICAgdmFsaWRUcmFuc2FjdGlvbi5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSB3aXRoZHJhdyBzdGFraW5nIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBmYWN0b3J5XG4gICAgICAgIC5nZXRTdGFraW5nV2l0aGRyYXdCdWlsZGVyKClcbiAgICAgICAgLnN0YWtpbmdBZGRyZXNzKHN0YWtlQWNjb3VudC5wdWIpXG4gICAgICAgIC5zZW5kZXIod2FsbGV0LnB1YilcbiAgICAgICAgLm5vbmNlKGJsb2NrSGFzaClcbiAgICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAgIC5tZW1vKCd0ZXN0IG1lbW8nKVxuICAgICAgICAuZmVlKHsgYW1vdW50OiA1MDAwIH0pXG4gICAgICAgIC5idWlsZCgpO1xuICAgICAgY29uc3QgdHhUb0Jyb2FkY2FzdEZvcm1hdCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zKCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZCgpO1xuICAgICAgdHhQcmVidWlsZC50eEJhc2U2NCA9IHR4VG9Ccm9hZGNhc3RGb3JtYXQ7XG4gICAgICB0eFByZWJ1aWxkLnR4SW5mby5ub25jZSA9ICc1bmU3cGhBNDhKcnZwbjM5QXR1cEI4WmtDQ0F5OGdMVGZwR2loWlB1RHFlbic7XG4gICAgICB0eFBhcmFtcy5yZWNpcGllbnRzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgYWRkcmVzczogJzVocjVmaXNQaTZEWE51dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJyxcbiAgICAgICAgICBhbW91bnQ6IGFtb3VudCxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgICBjb25zdCB2YWxpZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgbWVtbyxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXRPYmosXG4gICAgICB9IGFzIGFueSk7XG4gICAgICB2YWxpZFRyYW5zYWN0aW9uLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IGRlYWN0aXZhdGUgc3Rha2luZyB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgZmFjdG9yeVxuICAgICAgICAuZ2V0U3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyKClcbiAgICAgICAgLnN0YWtpbmdBZGRyZXNzKHN0YWtlQWNjb3VudC5wdWIpXG4gICAgICAgIC5zZW5kZXIod2FsbGV0LnB1YilcbiAgICAgICAgLm5vbmNlKGJsb2NrSGFzaClcbiAgICAgICAgLm1lbW8oJ3Rlc3QgbWVtbycpXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDUwMDAgfSlcbiAgICAgICAgLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eFRvQnJvYWRjYXN0Rm9ybWF0ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0gbmV3VHhQYXJhbXMoKTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkKCk7XG4gICAgICB0eFByZWJ1aWxkLnR4QmFzZTY0ID0gdHhUb0Jyb2FkY2FzdEZvcm1hdDtcbiAgICAgIHR4UHJlYnVpbGQudHhJbmZvLm5vbmNlID0gJzVuZTdwaEE0OEpydnBuMzlBdHVwQjhaa0NDQXk4Z0xUZnBHaWhaUHVEcWVuJztcbiAgICAgIHR4UGFyYW1zLnJlY2lwaWVudHMgPSBbXTtcbiAgICAgIGNvbnN0IHZhbGlkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UGFyYW1zLFxuICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICBtZW1vLFxuICAgICAgICB3YWxsZXQ6IHdhbGxldE9iaixcbiAgICAgIH0gYXMgYW55KTtcbiAgICAgIHZhbGlkVHJhbnNhY3Rpb24uc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgY3JlYXRlIGFzc29jaWF0ZWQgdG9rZW4gYWNjb3VudCB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgZmFjdG9yeVxuICAgICAgICAuZ2V0QXRhSW5pdGlhbGl6YXRpb25CdWlsZGVyKClcbiAgICAgICAgLm1pbnQoJ3Rzb2w6dXNkYycpXG4gICAgICAgIC5zZW5kZXIod2FsbGV0LnB1YilcbiAgICAgICAgLm5vbmNlKGJsb2NrSGFzaClcbiAgICAgICAgLm1lbW8oJ3Rlc3QgbWVtbycpXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDUwMDAgfSlcbiAgICAgICAgLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eFRvQnJvYWRjYXN0Rm9ybWF0ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0gbmV3VHhQYXJhbXMoKTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkKCk7XG4gICAgICB0eFByZWJ1aWxkLnR4QmFzZTY0ID0gdHhUb0Jyb2FkY2FzdEZvcm1hdDtcbiAgICAgIHR4UHJlYnVpbGQudHhJbmZvLm5vbmNlID0gYmxvY2tIYXNoO1xuICAgICAgdHhQYXJhbXMucmVjaXBpZW50cyA9IFtdO1xuICAgICAgY29uc3QgdmFsaWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIG1lbW8sXG4gICAgICAgIHdhbGxldDogd2FsbGV0T2JqLFxuICAgICAgfSBhcyBhbnkpO1xuICAgICAgdmFsaWRUcmFuc2FjdGlvbi5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZXRBbW91bnRCYXNlZE9uRW5kaWFubmVzcycsICgpID0+IHtcbiAgICBsZXQgb3JpZ2luYWxBcmNoOiBzdHJpbmc7XG5cbiAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgIG9yaWdpbmFsQXJjaCA9IHByb2Nlc3MuYXJjaDtcbiAgICB9KTtcblxuICAgIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvY2VzcywgJ2FyY2gnLCB7XG4gICAgICAgIHZhbHVlOiBvcmlnaW5hbEFyY2gsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGFtb3VudCB1bmNoYW5nZWQgb24gbm9uLXMzOTB4IGFyY2hpdGVjdHVyZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvY2VzcywgJ2FyY2gnLCB7XG4gICAgICAgIHZhbHVlOiAneDY0JyxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIH0pO1xuXG4gICAgICBnZXRBbW91bnRCYXNlZE9uRW5kaWFubmVzcygnMzAwMDAwJykuc2hvdWxkLmVxdWFsKCczMDAwMDAnKTtcbiAgICAgIGdldEFtb3VudEJhc2VkT25FbmRpYW5uZXNzKCcxMDAwMCcpLnNob3VsZC5lcXVhbCgnMTAwMDAnKTtcbiAgICAgIGdldEFtb3VudEJhc2VkT25FbmRpYW5uZXNzKCc1MDQ0MDMxNTgyNjU0OTU1NTInKS5zaG91bGQuZXF1YWwoJzUwNDQwMzE1ODI2NTQ5NTU1MicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBieXRlLXN3YXAgc21hbGwgYW1vdW50cyBvbiBzMzkweCAoc21hbGwgYmVjb21lcyBodWdlKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnYXJjaCcsIHtcbiAgICAgICAgdmFsdWU6ICdzMzkweCcsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB9KTtcblxuICAgICAgLy8gU21hbGwgYW1vdW50IDEwLDAwMCAoMHgyNzEwKSBzd2FwcyB0byAxLDE2Myw4OTksMDI4LDY5OCw1NjIsNTYwXG4gICAgICBnZXRBbW91bnRCYXNlZE9uRW5kaWFubmVzcygnMTAwMDAnKS5zaG91bGQuZXF1YWwoJzExNjM4OTkwMjg2OTg1NjI1NjAnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnl0ZS1zd2FwIGxhcmdlIGFtb3VudHMgb24gczM5MHggKGxhcmdlIGJlY29tZXMgdGlueSknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvY2VzcywgJ2FyY2gnLCB7XG4gICAgICAgIHZhbHVlOiAnczM5MHgnLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIExhcmdlIGFtb3VudCA1MDQsNDAzLDE1OCwyNjUsNDk1LDU1MiAoMHgwNzAwMDAwMDAwMDAwMDAwKSBzd2FwcyB0byA3XG4gICAgICBnZXRBbW91bnRCYXNlZE9uRW5kaWFubmVzcygnNTA0NDAzMTU4MjY1NDk1NTUyJykuc2hvdWxkLmVxdWFsKCc3Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBudW1lcmljIGlucHV0JywgZnVuY3Rpb24gKCkge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb2Nlc3MsICdhcmNoJywge1xuICAgICAgICB2YWx1ZTogJ3MzOTB4JyxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBTaG91bGQgd29yayB3aXRoIG51bWJlcnMsIG5vdCBqdXN0IHN0cmluZ3NcbiAgICAgIGdldEFtb3VudEJhc2VkT25FbmRpYW5uZXNzKDEwMDAwKS5zaG91bGQuZXF1YWwoJzExNjM4OTkwMjg2OTg1NjI1NjAnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIHN0YW5kYXJkIHRyYW5zYWN0aW9uIGFtb3VudHMgb24gczM5MHgnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvY2VzcywgJ2FyY2gnLCB7XG4gICAgICAgIHZhbHVlOiAnczM5MHgnLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFN0YW5kYXJkIGFtb3VudCAzMDAsMDAwICgweDQ5M0UwKSBzd2FwcyB0byBsYXJnZSB2YWx1ZVxuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0QW1vdW50QmFzZWRPbkVuZGlhbm5lc3MoJzMwMDAwMCcpO1xuICAgICAgLy8gVmVyaWZ5IGl0J3MgZGlmZmVyZW50IChzd2FwcGVkKVxuICAgICAgcmVzdWx0LnNob3VsZC5ub3QuZXF1YWwoJzMwMDAwMCcpO1xuICAgICAgLy8gVmVyaWZ5IHN3YXBwaW5nIGJhY2sgZ2l2ZXMgb3JpZ2luYWxcbiAgICAgIGdldEFtb3VudEJhc2VkT25FbmRpYW5uZXNzKHJlc3VsdCkuc2hvdWxkLmVxdWFsKCczMDAwMDAnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGludmFsaWQgaW5wdXQgZ3JhY2VmdWxseScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnYXJjaCcsIHtcbiAgICAgICAgdmFsdWU6ICdzMzkweCcsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB9KTtcblxuICAgICAgLy8gSW52YWxpZCBCaWdJbnQgaW5wdXQgc2hvdWxkIHJldHVybiBvcmlnaW5hbCBzdHJpbmdcbiAgICAgIGdldEFtb3VudEJhc2VkT25FbmRpYW5uZXNzKCdub3QtYS1udW1iZXInKS5zaG91bGQuZXF1YWwoJ25vdC1hLW51bWJlcicpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGFjY2VwdCB2YWxpZCBhZGRyZXNzJywgZnVuY3Rpb24gKCkge1xuICAgIGdvb2RBZGRyZXNzZXMuZm9yRWFjaCgoYWRkcikgPT4ge1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZEFkZHJlc3MoYWRkcikuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlamVjdCBpbnZhbGlkIGFkZHJlc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgYmFkQWRkcmVzc2VzLmZvckVhY2goKGFkZHIpID0+IHtcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRBZGRyZXNzKGFkZHIpLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY2hlY2sgdmFsaWQgcHViIGtleXMnLCBmdW5jdGlvbiAoKSB7XG4gICAga2V5UGFpci5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgncHViJyk7XG4gICAgYmFzZWNvaW4uaXNWYWxpZFB1YihrZXlQYWlyLnB1Yikuc2hvdWxkLmVxdWFsKHRydWUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNoZWNrIGFuIGludmFsaWQgcHViIGtleXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgYmFkUHViS2V5ID0ga2V5UGFpci5wdWIuc2xpY2UoMCwga2V5UGFpci5wdWIubGVuZ3RoIC0gMSkgKyAnLSc7XG4gICAgYmFzZWNvaW4uaXNWYWxpZFB1YihiYWRQdWJLZXkpLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY2hlY2sgdmFsaWQgcHJ2IGtleXMnLCBmdW5jdGlvbiAoKSB7XG4gICAga2V5UGFpci5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgncHJ2Jyk7XG4gICAgYmFzZWNvaW4uaXNWYWxpZFBydihrZXlQYWlyLnBydikuc2hvdWxkLmVxdWFsKHRydWUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNoZWNrIGFuIGludmFsaWQgcHJ2IGtleXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgYmFkUHJ2S2V5ID0ga2V5UGFpci5wcnYgPyBrZXlQYWlyLnBydi5zbGljZSgwLCBrZXlQYWlyLnBydi5sZW5ndGggLSAxKSArICctJyA6IHVuZGVmaW5lZDtcbiAgICBiYXNlY29pbi5pc1ZhbGlkUHJ2KGJhZFBydktleSBhcyBzdHJpbmcpLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdQYXJzZSBUcmFuc2FjdGlvbnM6JywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcGFyc2UgYW4gdW5zaWduZWQgdHJhbnNmZXIgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBwYXJzZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnBhcnNlVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eEJhc2U2NDogdGVzdERhdGEucmF3VHJhbnNhY3Rpb25zLnRyYW5zZmVyLnVuc2lnbmVkLFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgcGFyc2VkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGlucHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICdDUDVEcGFhNDJSdEptTXVLcUNRc0x3bWE1WWgza251dktzWURGWDg1RjQxUycsXG4gICAgICAgICAgICBhbW91bnQ6IDMwNTAwMCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJ0NQNURwYWE0MlJ0Sm1NdUtxQ1FzTHdtYTVZaDNrbnV2S3NZREZYODVGNDFTJyxcbiAgICAgICAgICAgIGFtb3VudDogJzMwMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXJzZSBhIHNpZ25lZCB0cmFuc2ZlciB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHBhcnNlZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0ZXN0RGF0YS5yYXdUcmFuc2FjdGlvbnMudHJhbnNmZXIuc2lnbmVkLFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgcGFyc2VkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGlucHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICdDUDVEcGFhNDJSdEptTXVLcUNRc0x3bWE1WWgza251dktzWURGWDg1RjQxUycsXG4gICAgICAgICAgICBhbW91bnQ6IDMwNTAwMCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJ0NQNURwYWE0MlJ0Sm1NdUtxQ1FzTHdtYTVZaDNrbnV2S3NZREZYODVGNDFTJyxcbiAgICAgICAgICAgIGFtb3VudDogJzMwMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXJzZSBhbiB1bnNpZ25lZCB3YWxsZXQgaW5pdCB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHBhcnNlZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0ZXN0RGF0YS5yYXdUcmFuc2FjdGlvbnMud2FsbGV0SW5pdC51bnNpZ25lZCxcbiAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgIGZlZTogJzUwMDAnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHBhcnNlZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnOFk3Uk02SmZjWDRBU1NOQmtya3JtU2JSdTQzMVlWaTlZM29MRm56QzJkQ2gnLFxuICAgICAgICAgICAgYW1vdW50OiAzMTAwMDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICc4WTdSTTZKZmNYNEFTU05Ca3Jrcm1TYlJ1NDMxWVZpOVkzb0xGbnpDMmRDaCcsXG4gICAgICAgICAgICBhbW91bnQ6ICczMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcGFyc2UgYSBzaWduZWQgd2FsbGV0IGluaXQgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBwYXJzZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnBhcnNlVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eEJhc2U2NDogdGVzdERhdGEucmF3VHJhbnNhY3Rpb25zLndhbGxldEluaXQuc2lnbmVkLFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgcGFyc2VkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGlucHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICc4WTdSTTZKZmNYNEFTU05Ca3Jrcm1TYlJ1NDMxWVZpOVkzb0xGbnpDMmRDaCcsXG4gICAgICAgICAgICBhbW91bnQ6IDMxMDAwMCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzhZN1JNNkpmY1g0QVNTTkJrcmtybVNiUnU0MzFZVmk5WTNvTEZuekMyZENoJyxcbiAgICAgICAgICAgIGFtb3VudDogJzMwMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXJzZSBhbiB1bnNpZ25lZCB0cmFuc2ZlciB0b2tlbiB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHBhcnNlZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0ZXN0RGF0YS5yYXdUcmFuc2FjdGlvbnMudHJhbnNmZXJUb2tlbi51bnNpZ25lZCxcbiAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgIGZlZTogJzUwMDAnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHBhcnNlZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnQ1A1RHBhYTQyUnRKbU11S3FDUXNMd21hNVloM2tudXZLc1lERlg4NUY0MVMnLFxuICAgICAgICAgICAgYW1vdW50OiA1MDAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnQ1A1RHBhYTQyUnRKbU11S3FDUXNMd21hNVloM2tudXZLc1lERlg4NUY0MVMnLFxuICAgICAgICAgICAgYW1vdW50OiAnMzAwMDAwJyxcbiAgICAgICAgICAgIHRva2VuTmFtZTogJ3Rzb2w6dXNkYycsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXJzZSBhIHNpZ25lZCB0cmFuc2ZlciB0b2tlbiB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHBhcnNlZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0ZXN0RGF0YS5yYXdUcmFuc2FjdGlvbnMudHJhbnNmZXJUb2tlbi5zaWduZWQsXG4gICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICBmZWU6ICc1MDAwJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBwYXJzZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJ0NQNURwYWE0MlJ0Sm1NdUtxQ1FzTHdtYTVZaDNrbnV2S3NZREZYODVGNDFTJyxcbiAgICAgICAgICAgIGFtb3VudDogNTAwMCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJ0NQNURwYWE0MlJ0Sm1NdUtxQ1FzTHdtYTVZaDNrbnV2S3NZREZYODVGNDFTJyxcbiAgICAgICAgICAgIGFtb3VudDogJzMwMDAwMCcsXG4gICAgICAgICAgICB0b2tlbk5hbWU6ICd0c29sOnVzZGMnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0V4cGxhaW4gVHJhbnNhY3Rpb25zOicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gYW4gdW5zaWduZWQgdHJhbnNmZXIgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0ZXN0RGF0YS5yYXdUcmFuc2FjdGlvbnMudHJhbnNmZXIudW5zaWduZWQsXG4gICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICBmZWU6ICc1MDAwJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgZXhwbGFpbmVkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGRpc3BsYXlPcmRlcjogW1xuICAgICAgICAgICdpZCcsXG4gICAgICAgICAgJ3R5cGUnLFxuICAgICAgICAgICdibG9ja2hhc2gnLFxuICAgICAgICAgICdkdXJhYmxlTm9uY2UnLFxuICAgICAgICAgICdvdXRwdXRBbW91bnQnLFxuICAgICAgICAgICdjaGFuZ2VBbW91bnQnLFxuICAgICAgICAgICdvdXRwdXRzJyxcbiAgICAgICAgICAnY2hhbmdlT3V0cHV0cycsXG4gICAgICAgICAgJ3Rva2VuRW5hYmxlbWVudHMnLFxuICAgICAgICAgICdmZWUnLFxuICAgICAgICAgICdtZW1vJyxcbiAgICAgICAgXSxcbiAgICAgICAgaWQ6ICdVTkFWQUlMQUJMRScsXG4gICAgICAgIHR5cGU6ICdTZW5kJyxcbiAgICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgICBvdXRwdXRBbW91bnQ6ICczMDAwMDAnLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJ0NQNURwYWE0MlJ0Sm1NdUtxQ1FzTHdtYTVZaDNrbnV2S3NZREZYODVGNDFTJyxcbiAgICAgICAgICAgIGFtb3VudDogJzMwMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzVocjVmaXNQaTZEWE51dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJyxcbiAgICAgICAgICAgIHZhbHVlOiAnMzAwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBmZWVQYXllcjogJzVocjVmaXNQaTZEWE51dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJyxcbiAgICAgICAgZmVlOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgICAgZmVlUmF0ZTogNTAwMCxcbiAgICAgICAgfSxcbiAgICAgICAgbWVtbzogJ3Rlc3QgbWVtbycsXG4gICAgICAgIGJsb2NraGFzaDogJ0dIdFhRQnNvWkhWbk5GYTlZZXZBekZyMTdESmpnSFhrM3ljVEtENXhEM1ppJyxcbiAgICAgICAgZHVyYWJsZU5vbmNlOiB7XG4gICAgICAgICAgYXV0aFdhbGxldEFkZHJlc3M6ICc1aHI1ZmlzUGk2RFhOdXVScG01WFVienBpRW5tZHl4WHVCRFR3endaajVQZScsXG4gICAgICAgICAgd2FsbGV0Tm9uY2VBZGRyZXNzOiAnOFk3Uk02SmZjWDRBU1NOQmtya3JtU2JSdTQzMVlWaTlZM29MRm56QzJkQ2gnLFxuICAgICAgICB9LFxuICAgICAgICB0b2tlbkVuYWJsZW1lbnRzOiBbXSxcbiAgICAgICAgYXRhT3duZXJNYXA6IHt9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gYSBzaWduZWQgdHJhbnNmZXIgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0ZXN0RGF0YS5yYXdUcmFuc2FjdGlvbnMudHJhbnNmZXIuc2lnbmVkLFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIGV4cGxhaW5lZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBkaXNwbGF5T3JkZXI6IFtcbiAgICAgICAgICAnaWQnLFxuICAgICAgICAgICd0eXBlJyxcbiAgICAgICAgICAnYmxvY2toYXNoJyxcbiAgICAgICAgICAnZHVyYWJsZU5vbmNlJyxcbiAgICAgICAgICAnb3V0cHV0QW1vdW50JyxcbiAgICAgICAgICAnY2hhbmdlQW1vdW50JyxcbiAgICAgICAgICAnb3V0cHV0cycsXG4gICAgICAgICAgJ2NoYW5nZU91dHB1dHMnLFxuICAgICAgICAgICd0b2tlbkVuYWJsZW1lbnRzJyxcbiAgICAgICAgICAnZmVlJyxcbiAgICAgICAgICAnbWVtbycsXG4gICAgICAgIF0sXG4gICAgICAgIGlkOiAnMlhGeEdmWGRkS1ducUdhTUFzZk5MOEhnWHFEdmpCTDJBZTI4S1dyUnZnOWJRQm1DcnBIWVZEYWN1WkZlQVV5WXdqWEc2ZXkyalRBUlg1VlFDbmo3U0Y0TCcsXG4gICAgICAgIHR5cGU6ICdTZW5kJyxcbiAgICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgICBvdXRwdXRBbW91bnQ6ICczMDAwMDAnLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJ0NQNURwYWE0MlJ0Sm1NdUtxQ1FzTHdtYTVZaDNrbnV2S3NZREZYODVGNDFTJyxcbiAgICAgICAgICAgIGFtb3VudDogJzMwMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzVocjVmaXNQaTZEWE51dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJyxcbiAgICAgICAgICAgIHZhbHVlOiAnMzAwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBmZWVQYXllcjogJzVocjVmaXNQaTZEWE51dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJyxcbiAgICAgICAgZmVlOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgICAgZmVlUmF0ZTogNTAwMCxcbiAgICAgICAgfSxcbiAgICAgICAgbWVtbzogJ3Rlc3QgbWVtbycsXG4gICAgICAgIGJsb2NraGFzaDogJ0dIdFhRQnNvWkhWbk5GYTlZZXZBekZyMTdESmpnSFhrM3ljVEtENXhEM1ppJyxcbiAgICAgICAgZHVyYWJsZU5vbmNlOiB7XG4gICAgICAgICAgYXV0aFdhbGxldEFkZHJlc3M6ICc1aHI1ZmlzUGk2RFhOdXVScG01WFVienBpRW5tZHl4WHVCRFR3endaajVQZScsXG4gICAgICAgICAgd2FsbGV0Tm9uY2VBZGRyZXNzOiAnOFk3Uk02SmZjWDRBU1NOQmtya3JtU2JSdTQzMVlWaTlZM29MRm56QzJkQ2gnLFxuICAgICAgICB9LFxuICAgICAgICB0b2tlbkVuYWJsZW1lbnRzOiBbXSxcbiAgICAgICAgYXRhT3duZXJNYXA6IHt9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gYW4gdW5zaWduZWQgd2FsbGV0IGluaXQgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0ZXN0RGF0YS5yYXdUcmFuc2FjdGlvbnMud2FsbGV0SW5pdC51bnNpZ25lZCxcbiAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgIGZlZTogJzUwMDAnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGxhaW5lZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBkaXNwbGF5T3JkZXI6IFtcbiAgICAgICAgICAnaWQnLFxuICAgICAgICAgICd0eXBlJyxcbiAgICAgICAgICAnYmxvY2toYXNoJyxcbiAgICAgICAgICAnZHVyYWJsZU5vbmNlJyxcbiAgICAgICAgICAnb3V0cHV0QW1vdW50JyxcbiAgICAgICAgICAnY2hhbmdlQW1vdW50JyxcbiAgICAgICAgICAnb3V0cHV0cycsXG4gICAgICAgICAgJ2NoYW5nZU91dHB1dHMnLFxuICAgICAgICAgICd0b2tlbkVuYWJsZW1lbnRzJyxcbiAgICAgICAgICAnZmVlJyxcbiAgICAgICAgICAnbWVtbycsXG4gICAgICAgIF0sXG4gICAgICAgIGlkOiAnVU5BVkFJTEFCTEUnLFxuICAgICAgICB0eXBlOiAnV2FsbGV0SW5pdGlhbGl6YXRpb24nLFxuICAgICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICAgIG91dHB1dEFtb3VudDogJzMwMDAwMCcsXG4gICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnOFk3Uk02SmZjWDRBU1NOQmtya3JtU2JSdTQzMVlWaTlZM29MRm56QzJkQ2gnLFxuICAgICAgICAgICAgYW1vdW50OiAnMzAwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnNWhyNWZpc1BpNkRYTnV1UnBtNVhVYnpwaUVubWR5eFh1QkRUd3p3Wmo1UGUnLFxuICAgICAgICAgICAgdmFsdWU6ICczMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGZlZVBheWVyOiAnNWhyNWZpc1BpNkRYTnV1UnBtNVhVYnpwaUVubWR5eFh1QkRUd3p3Wmo1UGUnLFxuICAgICAgICBmZWU6IHtcbiAgICAgICAgICBmZWU6ICcxMDAwMCcsXG4gICAgICAgICAgZmVlUmF0ZTogNTAwMCxcbiAgICAgICAgfSxcbiAgICAgICAgYmxvY2toYXNoOiAnR0h0WFFCc29aSFZuTkZhOVlldkF6RnIxN0RKamdIWGszeWNUS0Q1eEQzWmknLFxuICAgICAgICBkdXJhYmxlTm9uY2U6IHVuZGVmaW5lZCxcbiAgICAgICAgbWVtbzogdW5kZWZpbmVkLFxuICAgICAgICB0b2tlbkVuYWJsZW1lbnRzOiBbXSxcbiAgICAgICAgYXRhT3duZXJNYXA6IHt9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gYSBzaWduZWQgd2FsbGV0IGluaXQgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0ZXN0RGF0YS5yYXdUcmFuc2FjdGlvbnMud2FsbGV0SW5pdC5zaWduZWQsXG4gICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICBmZWU6ICc1MDAwJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBsYWluZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgZGlzcGxheU9yZGVyOiBbXG4gICAgICAgICAgJ2lkJyxcbiAgICAgICAgICAndHlwZScsXG4gICAgICAgICAgJ2Jsb2NraGFzaCcsXG4gICAgICAgICAgJ2R1cmFibGVOb25jZScsXG4gICAgICAgICAgJ291dHB1dEFtb3VudCcsXG4gICAgICAgICAgJ2NoYW5nZUFtb3VudCcsXG4gICAgICAgICAgJ291dHB1dHMnLFxuICAgICAgICAgICdjaGFuZ2VPdXRwdXRzJyxcbiAgICAgICAgICAndG9rZW5FbmFibGVtZW50cycsXG4gICAgICAgICAgJ2ZlZScsXG4gICAgICAgICAgJ21lbW8nLFxuICAgICAgICBdLFxuICAgICAgICBpZDogJzdUa1U4d0xnWERlTEZiVnlkdGc2bXFNc3A5R2F0c2V0aXRTbmd5c2dqeEZob2ZLU1VjTFBCb0tQSGNpTGVHRWZKRk1zcWV6cFptR1JTRlFUQnk3WkRzZycsXG4gICAgICAgIHR5cGU6ICdXYWxsZXRJbml0aWFsaXphdGlvbicsXG4gICAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgICAgb3V0cHV0QW1vdW50OiAnMzAwMDAwJyxcbiAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICc4WTdSTTZKZmNYNEFTU05Ca3Jrcm1TYlJ1NDMxWVZpOVkzb0xGbnpDMmRDaCcsXG4gICAgICAgICAgICBhbW91bnQ6ICczMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGlucHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICc1aHI1ZmlzUGk2RFhOdXVScG01WFVienBpRW5tZHl4WHVCRFR3endaajVQZScsXG4gICAgICAgICAgICB2YWx1ZTogJzMwMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZmVlUGF5ZXI6ICc1aHI1ZmlzUGk2RFhOdXVScG01WFVienBpRW5tZHl4WHVCRFR3endaajVQZScsXG4gICAgICAgIGZlZToge1xuICAgICAgICAgIGZlZTogJzEwMDAwJyxcbiAgICAgICAgICBmZWVSYXRlOiA1MDAwLFxuICAgICAgICB9LFxuICAgICAgICBibG9ja2hhc2g6ICdHSHRYUUJzb1pIVm5ORmE5WWV2QXpGcjE3REpqZ0hYazN5Y1RLRDV4RDNaaScsXG4gICAgICAgIGR1cmFibGVOb25jZTogdW5kZWZpbmVkLFxuICAgICAgICBtZW1vOiB1bmRlZmluZWQsXG4gICAgICAgIHRva2VuRW5hYmxlbWVudHM6IFtdLFxuICAgICAgICBhdGFPd25lck1hcDoge30sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZXhwbGFpbiBhbiB1bnNpZ25lZCB0b2tlbiB0cmFuc2ZlciB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGV4cGxhaW5lZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhCYXNlNjQ6IHRlc3REYXRhLnJhd1RyYW5zYWN0aW9ucy50cmFuc2ZlclRva2VuLnVuc2lnbmVkLFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIGV4cGxhaW5lZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBkaXNwbGF5T3JkZXI6IFtcbiAgICAgICAgICAnaWQnLFxuICAgICAgICAgICd0eXBlJyxcbiAgICAgICAgICAnYmxvY2toYXNoJyxcbiAgICAgICAgICAnZHVyYWJsZU5vbmNlJyxcbiAgICAgICAgICAnb3V0cHV0QW1vdW50JyxcbiAgICAgICAgICAnY2hhbmdlQW1vdW50JyxcbiAgICAgICAgICAnb3V0cHV0cycsXG4gICAgICAgICAgJ2NoYW5nZU91dHB1dHMnLFxuICAgICAgICAgICd0b2tlbkVuYWJsZW1lbnRzJyxcbiAgICAgICAgICAnZmVlJyxcbiAgICAgICAgICAnbWVtbycsXG4gICAgICAgIF0sXG4gICAgICAgIGlkOiAnVU5BVkFJTEFCTEUnLFxuICAgICAgICB0eXBlOiAnU2VuZCcsXG4gICAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgICAgb3V0cHV0QW1vdW50OiAnMCcsXG4gICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnQ1A1RHBhYTQyUnRKbU11S3FDUXNMd21hNVloM2tudXZLc1lERlg4NUY0MVMnLFxuICAgICAgICAgICAgYW1vdW50OiAnMzAwMDAwJyxcbiAgICAgICAgICAgIHRva2VuTmFtZTogJ3Rzb2w6dXNkYycsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzEyZjZEM1d1YkdWZVFvSDJtOGtUdnZjcmFzV2RYV3d0VnpVQ3lSTkRaeEEyJyxcbiAgICAgICAgICAgIHZhbHVlOiAnMzAwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBmZWVQYXllcjogJzEyZjZEM1d1YkdWZVFvSDJtOGtUdnZjcmFzV2RYV3d0VnpVQ3lSTkRaeEEyJyxcbiAgICAgICAgZmVlOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgICAgZmVlUmF0ZTogNTAwMCxcbiAgICAgICAgfSxcbiAgICAgICAgbWVtbzogJ3Rlc3QgbWVtbycsXG4gICAgICAgIGJsb2NraGFzaDogJ0dIdFhRQnNvWkhWbk5GYTlZZXZBekZyMTdESmpnSFhrM3ljVEtENXhEM1ppJyxcbiAgICAgICAgZHVyYWJsZU5vbmNlOiB7XG4gICAgICAgICAgYXV0aFdhbGxldEFkZHJlc3M6ICcxMmY2RDNXdWJHVmVRb0gybThrVHZ2Y3Jhc1dkWFd3dFZ6VUN5Uk5EWnhBMicsXG4gICAgICAgICAgd2FsbGV0Tm9uY2VBZGRyZXNzOiAnOFk3Uk02SmZjWDRBU1NOQmtya3JtU2JSdTQzMVlWaTlZM29MRm56QzJkQ2gnLFxuICAgICAgICB9LFxuICAgICAgICB0b2tlbkVuYWJsZW1lbnRzOiBbXSxcbiAgICAgICAgYXRhT3duZXJNYXA6IHt9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gYSBzaWduZWQgdG9rZW4gdHJhbnNmZXIgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0ZXN0RGF0YS5yYXdUcmFuc2FjdGlvbnMudHJhbnNmZXJUb2tlbi5zaWduZWQsXG4gICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICBmZWU6ICc1MDAwJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgZXhwbGFpbmVkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGRpc3BsYXlPcmRlcjogW1xuICAgICAgICAgICdpZCcsXG4gICAgICAgICAgJ3R5cGUnLFxuICAgICAgICAgICdibG9ja2hhc2gnLFxuICAgICAgICAgICdkdXJhYmxlTm9uY2UnLFxuICAgICAgICAgICdvdXRwdXRBbW91bnQnLFxuICAgICAgICAgICdjaGFuZ2VBbW91bnQnLFxuICAgICAgICAgICdvdXRwdXRzJyxcbiAgICAgICAgICAnY2hhbmdlT3V0cHV0cycsXG4gICAgICAgICAgJ3Rva2VuRW5hYmxlbWVudHMnLFxuICAgICAgICAgICdmZWUnLFxuICAgICAgICAgICdtZW1vJyxcbiAgICAgICAgXSxcbiAgICAgICAgaWQ6ICcydGljVTRaa0VxZFRIVUxyNkxvYlRnV0JoaW02RTd3U3NjRGhNNGd6eXVHVW1ReVV3TFlob3FhaWZ1dndtTnp6RWYxVDVhZWZWY2dNUWtTSGRKNW5zcmZaJyxcbiAgICAgICAgdHlwZTogJ1NlbmQnLFxuICAgICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICAgIG91dHB1dEFtb3VudDogJzAnLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJ0NQNURwYWE0MlJ0Sm1NdUtxQ1FzTHdtYTVZaDNrbnV2S3NZREZYODVGNDFTJyxcbiAgICAgICAgICAgIGFtb3VudDogJzMwMDAwMCcsXG4gICAgICAgICAgICB0b2tlbk5hbWU6ICd0c29sOnVzZGMnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGlucHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICcxMmY2RDNXdWJHVmVRb0gybThrVHZ2Y3Jhc1dkWFd3dFZ6VUN5Uk5EWnhBMicsXG4gICAgICAgICAgICB2YWx1ZTogJzMwMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZmVlUGF5ZXI6ICcxMmY2RDNXdWJHVmVRb0gybThrVHZ2Y3Jhc1dkWFd3dFZ6VUN5Uk5EWnhBMicsXG4gICAgICAgIGZlZToge1xuICAgICAgICAgIGZlZTogJzUwMDAnLFxuICAgICAgICAgIGZlZVJhdGU6IDUwMDAsXG4gICAgICAgIH0sXG4gICAgICAgIG1lbW86ICd0ZXN0IG1lbW8nLFxuICAgICAgICBibG9ja2hhc2g6ICdHSHRYUUJzb1pIVm5ORmE5WWV2QXpGcjE3REpqZ0hYazN5Y1RLRDV4RDNaaScsXG4gICAgICAgIGR1cmFibGVOb25jZToge1xuICAgICAgICAgIGF1dGhXYWxsZXRBZGRyZXNzOiAnMTJmNkQzV3ViR1ZlUW9IMm04a1R2dmNyYXNXZFhXd3RWelVDeVJORFp4QTInLFxuICAgICAgICAgIHdhbGxldE5vbmNlQWRkcmVzczogJzhZN1JNNkpmY1g0QVNTTkJrcmtybVNiUnU0MzFZVmk5WTNvTEZuekMyZENoJyxcbiAgICAgICAgfSxcbiAgICAgICAgdG9rZW5FbmFibGVtZW50czogW10sXG4gICAgICAgIGF0YU93bmVyTWFwOiB7fSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIGFjdGl2YXRlIHN0YWtpbmcgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGZhY3RvcnlcbiAgICAgICAgLmdldFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIoKVxuICAgICAgICAuc3Rha2luZ0FkZHJlc3Moc3Rha2VBY2NvdW50LnB1YilcbiAgICAgICAgLnNlbmRlcih3YWxsZXQucHViKVxuICAgICAgICAubm9uY2UoYmxvY2tIYXNoKVxuICAgICAgICAuYW1vdW50KGFtb3VudClcbiAgICAgICAgLnZhbGlkYXRvcih2YWxpZGF0b3IucHViKVxuICAgICAgICAubWVtbygndGVzdCBtZW1vJylcbiAgICAgICAgLmZlZSh7IGFtb3VudDogNTAwMCB9KVxuICAgICAgICAuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4VG9Ccm9hZGNhc3RGb3JtYXQgPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgY29uc3QgZXhwbGFpbmVkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi5leHBsYWluVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eEJhc2U2NDogdHhUb0Jyb2FkY2FzdEZvcm1hdCxcbiAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgIGZlZTogJzUwMDAnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICBleHBsYWluZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgZGlzcGxheU9yZGVyOiBbXG4gICAgICAgICAgJ2lkJyxcbiAgICAgICAgICAndHlwZScsXG4gICAgICAgICAgJ2Jsb2NraGFzaCcsXG4gICAgICAgICAgJ2R1cmFibGVOb25jZScsXG4gICAgICAgICAgJ291dHB1dEFtb3VudCcsXG4gICAgICAgICAgJ2NoYW5nZUFtb3VudCcsXG4gICAgICAgICAgJ291dHB1dHMnLFxuICAgICAgICAgICdjaGFuZ2VPdXRwdXRzJyxcbiAgICAgICAgICAndG9rZW5FbmFibGVtZW50cycsXG4gICAgICAgICAgJ2ZlZScsXG4gICAgICAgICAgJ21lbW8nLFxuICAgICAgICBdLFxuICAgICAgICBpZDogJ1VOQVZBSUxBQkxFJyxcbiAgICAgICAgdHlwZTogJ1N0YWtpbmdBY3RpdmF0ZScsXG4gICAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgICAgb3V0cHV0QW1vdW50OiAnMTAwMDAnLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzdkUnVHRmJVMnkya2lqUDZvMUxZTnpWeXo0eWYxM01vb3FvaW9uQ3p2NVphJyxcbiAgICAgICAgICAgIGFtb3VudDogJzEwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnNWhyNWZpc1BpNkRYTnV1UnBtNVhVYnpwaUVubWR5eFh1QkRUd3p3Wmo1UGUnLFxuICAgICAgICAgICAgdmFsdWU6ICcxMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZmVlUGF5ZXI6ICc1aHI1ZmlzUGk2RFhOdXVScG01WFVienBpRW5tZHl4WHVCRFR3endaajVQZScsXG4gICAgICAgIGZlZToge1xuICAgICAgICAgIGZlZTogJzEwMDAwJyxcbiAgICAgICAgICBmZWVSYXRlOiA1MDAwLFxuICAgICAgICB9LFxuICAgICAgICBtZW1vOiAndGVzdCBtZW1vJyxcbiAgICAgICAgYmxvY2toYXNoOiAnNW5lN3BoQTQ4SnJ2cG4zOUF0dXBCOFprQ0NBeThnTFRmcEdpaFpQdURxZW4nLFxuICAgICAgICBkdXJhYmxlTm9uY2U6IHVuZGVmaW5lZCxcbiAgICAgICAgdG9rZW5FbmFibGVtZW50czogW10sXG4gICAgICAgIGF0YU93bmVyTWFwOiB7fSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIGRlYWN0aXZhdGUgc3Rha2luZyB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgZmFjdG9yeVxuICAgICAgICAuZ2V0U3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyKClcbiAgICAgICAgLnN0YWtpbmdBZGRyZXNzKHN0YWtlQWNjb3VudC5wdWIpXG4gICAgICAgIC5zZW5kZXIod2FsbGV0LnB1YilcbiAgICAgICAgLm5vbmNlKGJsb2NrSGFzaClcbiAgICAgICAgLm1lbW8oJ3Rlc3QgbWVtbycpXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDUwMDAgfSlcbiAgICAgICAgLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eFRvQnJvYWRjYXN0Rm9ybWF0ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIGNvbnN0IGV4cGxhaW5lZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhCYXNlNjQ6IHR4VG9Ccm9hZGNhc3RGb3JtYXQsXG4gICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICBmZWU6ICc1MDAwJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgZXhwbGFpbmVkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGRpc3BsYXlPcmRlcjogW1xuICAgICAgICAgICdpZCcsXG4gICAgICAgICAgJ3R5cGUnLFxuICAgICAgICAgICdibG9ja2hhc2gnLFxuICAgICAgICAgICdkdXJhYmxlTm9uY2UnLFxuICAgICAgICAgICdvdXRwdXRBbW91bnQnLFxuICAgICAgICAgICdjaGFuZ2VBbW91bnQnLFxuICAgICAgICAgICdvdXRwdXRzJyxcbiAgICAgICAgICAnY2hhbmdlT3V0cHV0cycsXG4gICAgICAgICAgJ3Rva2VuRW5hYmxlbWVudHMnLFxuICAgICAgICAgICdmZWUnLFxuICAgICAgICAgICdtZW1vJyxcbiAgICAgICAgXSxcbiAgICAgICAgaWQ6ICdVTkFWQUlMQUJMRScsXG4gICAgICAgIHR5cGU6ICdTdGFraW5nRGVhY3RpdmF0ZScsXG4gICAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgICAgb3V0cHV0QW1vdW50OiAnMCcsXG4gICAgICAgIG91dHB1dHM6IFtdLFxuICAgICAgICBpbnB1dHM6IFtdLFxuICAgICAgICBmZWVQYXllcjogJzVocjVmaXNQaTZEWE51dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJyxcbiAgICAgICAgZmVlOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgICAgZmVlUmF0ZTogNTAwMCxcbiAgICAgICAgfSxcbiAgICAgICAgbWVtbzogJ3Rlc3QgbWVtbycsXG4gICAgICAgIGJsb2NraGFzaDogJzVuZTdwaEE0OEpydnBuMzlBdHVwQjhaa0NDQXk4Z0xUZnBHaWhaUHVEcWVuJyxcbiAgICAgICAgZHVyYWJsZU5vbmNlOiB1bmRlZmluZWQsXG4gICAgICAgIHRva2VuRW5hYmxlbWVudHM6IFtdLFxuICAgICAgICBhdGFPd25lck1hcDoge30sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZXhwbGFpbiB3aXRoZHJhdyBzdGFraW5nIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBmYWN0b3J5XG4gICAgICAgIC5nZXRTdGFraW5nV2l0aGRyYXdCdWlsZGVyKClcbiAgICAgICAgLnN0YWtpbmdBZGRyZXNzKHN0YWtlQWNjb3VudC5wdWIpXG4gICAgICAgIC5zZW5kZXIod2FsbGV0LnB1YilcbiAgICAgICAgLm5vbmNlKGJsb2NrSGFzaClcbiAgICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAgIC5tZW1vKCd0ZXN0IG1lbW8nKVxuICAgICAgICAuZmVlKHsgYW1vdW50OiA1MDAwIH0pXG4gICAgICAgIC5idWlsZCgpO1xuICAgICAgY29uc3QgdHhUb0Jyb2FkY2FzdEZvcm1hdCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0eFRvQnJvYWRjYXN0Rm9ybWF0LFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIGV4cGxhaW5lZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBkaXNwbGF5T3JkZXI6IFtcbiAgICAgICAgICAnaWQnLFxuICAgICAgICAgICd0eXBlJyxcbiAgICAgICAgICAnYmxvY2toYXNoJyxcbiAgICAgICAgICAnZHVyYWJsZU5vbmNlJyxcbiAgICAgICAgICAnb3V0cHV0QW1vdW50JyxcbiAgICAgICAgICAnY2hhbmdlQW1vdW50JyxcbiAgICAgICAgICAnb3V0cHV0cycsXG4gICAgICAgICAgJ2NoYW5nZU91dHB1dHMnLFxuICAgICAgICAgICd0b2tlbkVuYWJsZW1lbnRzJyxcbiAgICAgICAgICAnZmVlJyxcbiAgICAgICAgICAnbWVtbycsXG4gICAgICAgIF0sXG4gICAgICAgIGlkOiAnVU5BVkFJTEFCTEUnLFxuICAgICAgICB0eXBlOiAnU3Rha2luZ1dpdGhkcmF3JyxcbiAgICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgICBvdXRwdXRBbW91bnQ6ICcxMDAwMCcsXG4gICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnNWhyNWZpc1BpNkRYTnV1UnBtNVhVYnpwaUVubWR5eFh1QkRUd3p3Wmo1UGUnLFxuICAgICAgICAgICAgYW1vdW50OiAnMTAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGlucHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICc3ZFJ1R0ZiVTJ5MmtpalA2bzFMWU56Vnl6NHlmMTNNb29xb2lvbkN6djVaYScsXG4gICAgICAgICAgICB2YWx1ZTogJzEwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBmZWVQYXllcjogJzVocjVmaXNQaTZEWE51dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJyxcbiAgICAgICAgZmVlOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgICAgZmVlUmF0ZTogNTAwMCxcbiAgICAgICAgfSxcbiAgICAgICAgbWVtbzogJ3Rlc3QgbWVtbycsXG4gICAgICAgIGJsb2NraGFzaDogJzVuZTdwaEE0OEpydnBuMzlBdHVwQjhaa0NDQXk4Z0xUZnBHaWhaUHVEcWVuJyxcbiAgICAgICAgZHVyYWJsZU5vbmNlOiB1bmRlZmluZWQsXG4gICAgICAgIHRva2VuRW5hYmxlbWVudHM6IFtdLFxuICAgICAgICBhdGFPd25lck1hcDoge30sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZXhwbGFpbiBjcmVhdGUgQVRBIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdG9rZW5OYW1lID0gJ3Rzb2w6dXNkYyc7XG4gICAgICBjb25zdCByZW50RXhlbXB0QW1vdW50ID0gJzMwMDAwMDAnO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBmYWN0b3J5XG4gICAgICAgIC5nZXRBdGFJbml0aWFsaXphdGlvbkJ1aWxkZXIoKVxuICAgICAgICAuc2VuZGVyKHdhbGxldC5wdWIpXG4gICAgICAgIC5ub25jZShibG9ja0hhc2gpXG4gICAgICAgIC5taW50KHRva2VuTmFtZSlcbiAgICAgICAgLnJlbnRFeGVtcHRBbW91bnQocmVudEV4ZW1wdEFtb3VudClcbiAgICAgICAgLm1lbW8oJ3Rlc3QgbWVtbycpXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDUwMDAgfSlcbiAgICAgICAgLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eFRvQnJvYWRjYXN0Rm9ybWF0ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIGNvbnN0IGV4cGxhaW5lZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhCYXNlNjQ6IHR4VG9Ccm9hZGNhc3RGb3JtYXQsXG4gICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICBmZWU6ICc1MDAwJyxcbiAgICAgICAgfSxcbiAgICAgICAgdG9rZW5BY2NvdW50UmVudEV4ZW1wdEFtb3VudDogcmVudEV4ZW1wdEFtb3VudCxcbiAgICAgIH0pO1xuICAgICAgZXhwbGFpbmVkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGRpc3BsYXlPcmRlcjogW1xuICAgICAgICAgICdpZCcsXG4gICAgICAgICAgJ3R5cGUnLFxuICAgICAgICAgICdibG9ja2hhc2gnLFxuICAgICAgICAgICdkdXJhYmxlTm9uY2UnLFxuICAgICAgICAgICdvdXRwdXRBbW91bnQnLFxuICAgICAgICAgICdjaGFuZ2VBbW91bnQnLFxuICAgICAgICAgICdvdXRwdXRzJyxcbiAgICAgICAgICAnY2hhbmdlT3V0cHV0cycsXG4gICAgICAgICAgJ3Rva2VuRW5hYmxlbWVudHMnLFxuICAgICAgICAgICdmZWUnLFxuICAgICAgICAgICdtZW1vJyxcbiAgICAgICAgXSxcbiAgICAgICAgaWQ6ICdVTkFWQUlMQUJMRScsXG4gICAgICAgIHR5cGU6ICdBc3NvY2lhdGVkVG9rZW5BY2NvdW50SW5pdGlhbGl6YXRpb24nLFxuICAgICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICAgIG91dHB1dEFtb3VudDogJzAnLFxuICAgICAgICBvdXRwdXRzOiBbXSxcbiAgICAgICAgaW5wdXRzOiBbXSxcbiAgICAgICAgZmVlUGF5ZXI6ICc1aHI1ZmlzUGk2RFhOdXVScG01WFVienBpRW5tZHl4WHVCRFR3endaajVQZScsXG4gICAgICAgIGZlZToge1xuICAgICAgICAgIGZlZTogJzMwMDUwMDAnLFxuICAgICAgICAgIGZlZVJhdGU6IDUwMDAsXG4gICAgICAgIH0sXG4gICAgICAgIG1lbW86ICd0ZXN0IG1lbW8nLFxuICAgICAgICBibG9ja2hhc2g6ICc1bmU3cGhBNDhKcnZwbjM5QXR1cEI4WmtDQ0F5OGdMVGZwR2loWlB1RHFlbicsXG4gICAgICAgIGR1cmFibGVOb25jZTogdW5kZWZpbmVkLFxuICAgICAgICB0b2tlbkVuYWJsZW1lbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzE0MUJGTmVtM3BrbmM4Q3pQVkx2MVJpM2J0Z0tkQ3NhZllQNW5Yd21YZnhVJyxcbiAgICAgICAgICAgIHRva2VuQWRkcmVzczogJ0Y0dUxlWEpvRnozaHcxM01wb3N1d2FRYk1jWmJDanF2RUdQUGVSUkIxQnlmJyxcbiAgICAgICAgICAgIHRva2VuTmFtZTogJ3Rzb2w6dXNkYycsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXRhT3duZXJNYXA6IHtcbiAgICAgICAgICAnMTQxQkZOZW0zcGtuYzhDelBWTHYxUmkzYnRnS2RDc2FmWVA1blh3bVhmeFUnOiAnNWhyNWZpc1BpNkRYTnV1UnBtNVhVYnpwaUVubWR5eFh1QkRUd3p3Wmo1UGUnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gY3JlYXRlIG11bHRpIEFUQSB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlY2lwaWVudHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBvd25lckFkZHJlc3M6IHdhbGxldC5wdWIsXG4gICAgICAgICAgdG9rZW5OYW1lOiAndHNvbDp1c2RjJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG93bmVyQWRkcmVzczogZHVyYWJsZU5vbmNlLndhbGxldE5vbmNlQWRkcmVzcyxcbiAgICAgICAgICB0b2tlbk5hbWU6ICd0c29sOnJheScsXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgICAgY29uc3QgcmVudEV4ZW1wdEFtb3VudCA9ICczMDAwMDAwJztcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgZmFjdG9yeVxuICAgICAgICAuZ2V0QXRhSW5pdGlhbGl6YXRpb25CdWlsZGVyKClcbiAgICAgICAgLnNlbmRlcih3YWxsZXQucHViKVxuICAgICAgICAubm9uY2UoYmxvY2tIYXNoKVxuICAgICAgICAuZW5hYmxlVG9rZW4ocmVjaXBpZW50c1swXSlcbiAgICAgICAgLmVuYWJsZVRva2VuKHJlY2lwaWVudHNbMV0pXG4gICAgICAgIC5yZW50RXhlbXB0QW1vdW50KHJlbnRFeGVtcHRBbW91bnQpXG4gICAgICAgIC5tZW1vKCd0ZXN0IG1lbW8nKVxuICAgICAgICAuZmVlKHsgYW1vdW50OiA1MDAwIH0pXG4gICAgICAgIC5idWlsZCgpO1xuICAgICAgY29uc3QgdHhUb0Jyb2FkY2FzdEZvcm1hdCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0eFRvQnJvYWRjYXN0Rm9ybWF0LFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgIH0sXG4gICAgICAgIHRva2VuQWNjb3VudFJlbnRFeGVtcHRBbW91bnQ6IHJlbnRFeGVtcHRBbW91bnQsXG4gICAgICB9KTtcbiAgICAgIGV4cGxhaW5lZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBkaXNwbGF5T3JkZXI6IFtcbiAgICAgICAgICAnaWQnLFxuICAgICAgICAgICd0eXBlJyxcbiAgICAgICAgICAnYmxvY2toYXNoJyxcbiAgICAgICAgICAnZHVyYWJsZU5vbmNlJyxcbiAgICAgICAgICAnb3V0cHV0QW1vdW50JyxcbiAgICAgICAgICAnY2hhbmdlQW1vdW50JyxcbiAgICAgICAgICAnb3V0cHV0cycsXG4gICAgICAgICAgJ2NoYW5nZU91dHB1dHMnLFxuICAgICAgICAgICd0b2tlbkVuYWJsZW1lbnRzJyxcbiAgICAgICAgICAnZmVlJyxcbiAgICAgICAgICAnbWVtbycsXG4gICAgICAgIF0sXG4gICAgICAgIGlkOiAnVU5BVkFJTEFCTEUnLFxuICAgICAgICB0eXBlOiAnQXNzb2NpYXRlZFRva2VuQWNjb3VudEluaXRpYWxpemF0aW9uJyxcbiAgICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgICBvdXRwdXRBbW91bnQ6ICcwJyxcbiAgICAgICAgb3V0cHV0czogW10sXG4gICAgICAgIGlucHV0czogW10sXG4gICAgICAgIGZlZVBheWVyOiAnNWhyNWZpc1BpNkRYTnV1UnBtNVhVYnpwaUVubWR5eFh1QkRUd3p3Wmo1UGUnLFxuICAgICAgICBmZWU6IHtcbiAgICAgICAgICBmZWU6ICc2MDA1MDAwJyxcbiAgICAgICAgICBmZWVSYXRlOiA1MDAwLFxuICAgICAgICB9LFxuICAgICAgICBtZW1vOiAndGVzdCBtZW1vJyxcbiAgICAgICAgYmxvY2toYXNoOiAnNW5lN3BoQTQ4SnJ2cG4zOUF0dXBCOFprQ0NBeThnTFRmcEdpaFpQdURxZW4nLFxuICAgICAgICBkdXJhYmxlTm9uY2U6IHVuZGVmaW5lZCxcbiAgICAgICAgdG9rZW5FbmFibGVtZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICcxNDFCRk5lbTNwa25jOEN6UFZMdjFSaTNidGdLZENzYWZZUDVuWHdtWGZ4VScsXG4gICAgICAgICAgICB0b2tlbkFkZHJlc3M6ICdGNHVMZVhKb0Z6M2h3MTNNcG9zdXdhUWJNY1piQ2pxdkVHUFBlUlJCMUJ5ZicsXG4gICAgICAgICAgICB0b2tlbk5hbWU6ICd0c29sOnVzZGMnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzlLYUxpblpGTlc1Y2hMNEo4VW9LblRFQ3BwV1ZNejNld2d4NEZBa3hVRGNmJyxcbiAgICAgICAgICAgIHRva2VuQWRkcmVzczogJzlrTEpvR2JNZ1N0ZXB0a2hLS3VoN2tlbjRKRXZIclQ4MzE1N2V6RUdyWjdSJyxcbiAgICAgICAgICAgIHRva2VuTmFtZTogJ3Rzb2w6cmF5JyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBhdGFPd25lck1hcDoge1xuICAgICAgICAgICcxNDFCRk5lbTNwa25jOEN6UFZMdjFSaTNidGdLZENzYWZZUDVuWHdtWGZ4VSc6ICc1aHI1ZmlzUGk2RFhOdXVScG01WFVienBpRW5tZHl4WHVCRFR3endaajVQZScsXG4gICAgICAgICAgJzlLYUxpblpGTlc1Y2hMNEo4VW9LblRFQ3BwV1ZNejNld2d4NEZBa3hVRGNmJzogJzhZN1JNNkpmY1g0QVNTTkJrcmtybVNiUnU0MzFZVmk5WTNvTEZuekMyZENoJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIGFuIHVuc2lnbmVkIHRva2VuIHRyYW5zZmVyIHdpdGggQVRBIGNyZWF0aW9uIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZXhwbGFpbmVkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi5leHBsYWluVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eEJhc2U2NDogdGVzdERhdGEucmF3VHJhbnNhY3Rpb25zLnRva2VuVHJhbnNmZXJXaXRoQXRhQ3JlYXRpb24udW5zaWduZWQsXG4gICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICBmZWU6ICc1MDAwJyxcbiAgICAgICAgfSxcbiAgICAgICAgdG9rZW5BY2NvdW50UmVudEV4ZW1wdEFtb3VudDogJzMwMDAwMDAnLFxuICAgICAgfSk7XG4gICAgICBleHBsYWluZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgZGlzcGxheU9yZGVyOiBbXG4gICAgICAgICAgJ2lkJyxcbiAgICAgICAgICAndHlwZScsXG4gICAgICAgICAgJ2Jsb2NraGFzaCcsXG4gICAgICAgICAgJ2R1cmFibGVOb25jZScsXG4gICAgICAgICAgJ291dHB1dEFtb3VudCcsXG4gICAgICAgICAgJ2NoYW5nZUFtb3VudCcsXG4gICAgICAgICAgJ291dHB1dHMnLFxuICAgICAgICAgICdjaGFuZ2VPdXRwdXRzJyxcbiAgICAgICAgICAndG9rZW5FbmFibGVtZW50cycsXG4gICAgICAgICAgJ2ZlZScsXG4gICAgICAgICAgJ21lbW8nLFxuICAgICAgICBdLFxuICAgICAgICBpZDogJ1VOQVZBSUxBQkxFJyxcbiAgICAgICAgdHlwZTogJ1NlbmQnLFxuICAgICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICAgIG91dHB1dEFtb3VudDogJzAnLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzJlS2pWdHpWM29QVFhGZHRSU0RqM0VtOWsxTVY3azhXaktrQnN6UVV3aXpTJyxcbiAgICAgICAgICAgIGFtb3VudDogJzEwMDAwJyxcbiAgICAgICAgICAgIHRva2VuTmFtZTogJ3Rzb2w6dXNkYycsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzVVM2JINWI2WHRHOTlhVldMcXdWellQVnBRaUZIeXRCRDY4UnoyZUZQWmQ3JyxcbiAgICAgICAgICAgIHZhbHVlOiAnMTAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGZlZVBheWVyOiAnNVUzYkg1YjZYdEc5OWFWV0xxd1Z6WVBWcFFpRkh5dEJENjhSejJlRlBaZDcnLFxuICAgICAgICBmZWU6IHsgZmVlOiAnMzAwNTAwMCcsIGZlZVJhdGU6IDUwMDAgfSxcbiAgICAgICAgbWVtbzogdW5kZWZpbmVkLFxuICAgICAgICBibG9ja2hhc2g6ICcyN0UzTVhGdlhNVU5ZZU1KZVgxcEFiRVJHc0pmVWJrYVpUZmdNZ3BtTk41ZycsXG4gICAgICAgIGR1cmFibGVOb25jZTogdW5kZWZpbmVkLFxuICAgICAgICB0b2tlbkVuYWJsZW1lbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzJlS2pWdHpWM29QVFhGZHRSU0RqM0VtOWsxTVY3azhXaktrQnN6UVV3aXpTJyxcbiAgICAgICAgICAgIHRva2VuQWRkcmVzczogJ0Y0dUxlWEpvRnozaHcxM01wb3N1d2FRYk1jWmJDanF2RUdQUGVSUkIxQnlmJyxcbiAgICAgICAgICAgIHRva2VuTmFtZTogJ3Rzb2w6dXNkYycsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXRhT3duZXJNYXA6IHtcbiAgICAgICAgICAnMmVLalZ0elYzb1BUWEZkdFJTRGozRW05azFNVjdrOFdqS2tCc3pRVXdpelMnOiAnQzR6Q3FDYURtNEQ3OHpnYUgzQ2VCRUVCRUFvTU5oelNDajIzcUU5Mm5kaVAnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdLZXlwYWlyOicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGdlbmVyYXRlIGEga2V5cGFpciBmcm9tIHJhbmRvbSBzZWVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiBiYXNlY29pbi5nZW5lcmF0ZUtleVBhaXIoJ3BsYWNlaG9sZGVyJyBhcyBhbnkpLCAnZ2VuZXJhdGVLZXlQYWlyIG1ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUgYSBrZXlwYWlyIGZyb20gYSBzZWVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiBiYXNlY29pbi5nZW5lcmF0ZUtleVBhaXIoJ3BsYWNlaG9sZGVyJyBhcyBhbnkpLCAnZ2VuZXJhdGVLZXlQYWlyIG1ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1NpZ24gdHJhbnNhY3Rpb246JywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgc2lnbiB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHNpZ25lZDogYW55ID0gYXdhaXQgYmFzZWNvaW4uc2lnblRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQcmVidWlsZDoge1xuICAgICAgICAgIHR4QmFzZTY0OiByZXNvdXJjZXMuUkFXX1RYX1VOU0lHTkVELFxuICAgICAgICAgIGtleXM6IFtyZXNvdXJjZXMuYWNjb3VudFdpdGhTZWVkLnB1YmxpY0tleS50b1N0cmluZygpXSxcbiAgICAgICAgfSxcbiAgICAgICAgcHJ2OiByZXNvdXJjZXMuYWNjb3VudFdpdGhTZWVkLnByaXZhdGVLZXkuYmFzZTU4LFxuICAgICAgfSBhcyBhbnkpO1xuICAgICAgc2lnbmVkLnR4SGV4LnNob3VsZC5lcXVhbChyZXNvdXJjZXMuUkFXX1RYX1NJR05FRCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSB0eEhleCBhbmQgdHhCYXNlNjQgaW50ZXJjaGFuZ2VhYmx5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgc2lnbmVkOiBhbnkgPSBhd2FpdCBiYXNlY29pbi5zaWduVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eFByZWJ1aWxkOiB7XG4gICAgICAgICAgdHhIZXg6IHJlc291cmNlcy5SQVdfVFhfVU5TSUdORUQsXG4gICAgICAgICAga2V5czogW3Jlc291cmNlcy5hY2NvdW50V2l0aFNlZWQucHVibGljS2V5LnRvU3RyaW5nKCldLFxuICAgICAgICB9LFxuICAgICAgICBwcnY6IHJlc291cmNlcy5hY2NvdW50V2l0aFNlZWQucHJpdmF0ZUtleS5iYXNlNTgsXG4gICAgICB9IGFzIGFueSk7XG4gICAgICBzaWduZWQudHhIZXguc2hvdWxkLmVxdWFsKHJlc291cmNlcy5SQVdfVFhfU0lHTkVEKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgaW52YWxpZCB0cmFuc2FjdGlvbiB3aGVuIHNpZ24gd2l0aCBwdWJsaWMga2V5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnNpZ25UcmFuc2FjdGlvbih7XG4gICAgICAgICAgdHhQcmVidWlsZDoge1xuICAgICAgICAgICAgdHhCYXNlNjQ6IHJlc291cmNlcy5SQVdfVFhfVU5TSUdORUQsXG4gICAgICAgICAgICBrZXlzOiBbcmVzb3VyY2VzLmFjY291bnRXaXRoU2VlZC5wdWJsaWNLZXkudG9TdHJpbmcoKV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwcnY6IHJlc291cmNlcy5hY2NvdW50V2l0aFNlZWQucHVibGljS2V5LFxuICAgICAgICB9IGFzIGFueSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ0ludmFsaWQga2V5Jyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdTaWduIG1lc3NhZ2UnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBzaWduIG1lc3NhZ2UnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBzaWduZWQgPSBhd2FpdCBiYXNlY29pbi5zaWduTWVzc2FnZShrZXlwYWlyLCAnc2lnbmVkIG1lc3NhZ2UnKTtcbiAgICAgIHNpZ25lZFxuICAgICAgICAudG9TdHJpbmcoJ2Jhc2U2NCcpXG4gICAgICAgIC5zaG91bGQuZXF1YWwoJ3MrN2QvOGFXL3R3Zk0vMHdMU0tPR3hkOStMaERJaXovZzBGZkozOXlsSmhRSWtqSzBSWVBtL1krZ2RlSjVESXk2SzZoNmdDWFhFU0RvbWx2MTJEQkJRPT0nKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkbnQgc2lnbiBtZXNzYWdlIHdoZW4gbWVzc2FnZSBpcyB1bmRlZmluZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAuc2lnbk1lc3NhZ2Uoa2V5cGFpciwgdW5kZWZpbmVkIGFzIGFueSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoXG4gICAgICAgICAgJ1RoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nIG9yIGFuIGluc3RhbmNlIG9mIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIG9yIEFycmF5IG9yIGFuIEFycmF5LWxpa2UgT2JqZWN0LiBSZWNlaXZlZCB1bmRlZmluZWQnXG4gICAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdHZXQgU2lnbmluZyBQYXlsb2FkJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGEgdmFsaWQgc2lnbmluZyBwYXlsb2FkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZmFjdG9yeSA9IGdldEJ1aWxkZXJGYWN0b3J5KGJhc2Vjb2luLmdldENoYWluKCkpO1xuICAgICAgY29uc3QgcmVidWlsdFNpZ25hYmxlUGF5bG9hZCA9IChhd2FpdCBmYWN0b3J5LmZyb20ocmVzb3VyY2VzLlRSQU5TRkVSX1VOU0lHTkVEX1RYX1dJVEhfTUVNTykuYnVpbGQoKSlcbiAgICAgICAgLnNpZ25hYmxlUGF5bG9hZDtcbiAgICAgIGNvbnN0IHNpZ25pbmdQYXlsb2FkID0gYXdhaXQgYmFzZWNvaW4uZ2V0U2lnbmFibGVQYXlsb2FkKHJlc291cmNlcy5UUkFOU0ZFUl9VTlNJR05FRF9UWF9XSVRIX01FTU8pO1xuICAgICAgc2lnbmluZ1BheWxvYWQuc2hvdWxkLmJlLmRlZXBFcXVhbChyZWJ1aWx0U2lnbmFibGVQYXlsb2FkKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgQ2xvc2VBc3NvY2lhdGVkVG9rZW5BY2NvdW50IHR4biBidWlsZGVyIGZyb20gcmF3IHR4bicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGZhY3RvcnkgPSBnZXRCdWlsZGVyRmFjdG9yeShiYXNlY29pbi5nZXRDaGFpbigpKTtcbiAgICAgIGNvbnN0IHR4bkJ1aWxkZXIgPSBmYWN0b3J5LmZyb20ocmVzb3VyY2VzLlRSQU5TRkVSX1VOU0lHTkVEX1RYX0NMT1NFX0FUQSk7XG4gICAgICBhc3NlcnQub2sodHhuQnVpbGRlcik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdQcmVzaWduIHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgIGNvbnN0IHR4UmVxdWVzdElkID0gJ3R4UmVxdWVzdElkJztcbiAgICBsZXQgc2FuZGJveDogc2lub24uU2lub25TYW5kYm94O1xuXG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICBzYW5kYm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICAgIHNhbmRib3gudmVyaWZ5QW5kUmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWJ1aWxkIHR4IHJlcXVlc3QgZm9yIGhvdCB3YWxsZXRzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVidWlsdFR4OiBUeFJlcXVlc3QgPSB7XG4gICAgICAgIHR4UmVxdWVzdElkLFxuICAgICAgICB1bnNpZ25lZFR4czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNlcmlhbGl6ZWRUeEhleDogJ2RlYWRiZWVmJyxcbiAgICAgICAgICAgIHNpZ25hYmxlSGV4OiAnc2VyaWFsaXplZFR4SGV4JyxcbiAgICAgICAgICAgIGRlcml2YXRpb25QYXRoOiAnbS8wJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICB0cmFuc2FjdGlvbnM6IFtdLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGludGVudDoge1xuICAgICAgICAgIGludGVudFR5cGU6ICdwYXltZW50JyxcbiAgICAgICAgfSxcbiAgICAgICAgbGF0ZXN0OiB0cnVlLFxuICAgICAgICBzdGF0ZTogJ3BlbmRpbmdVc2VyU2lnbmF0dXJlJyxcbiAgICAgICAgd2FsbGV0VHlwZTogJ2hvdCcsXG4gICAgICAgIHdhbGxldElkOiAnd2FsbGV0SWQnLFxuICAgICAgICBwb2xpY2llc0NoZWNrZWQ6IHRydWUsXG4gICAgICAgIHZlcnNpb246IDEsXG4gICAgICAgIHVzZXJJZDogJ3VzZXJJZCcsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBzdHViVHNzVXRpbHMgPSBzYW5kYm94LmNyZWF0ZVN0dWJJbnN0YW5jZShUc3NVdGlscyk7XG4gICAgICBzdHViVHNzVXRpbHMuZGVsZXRlU2lnbmF0dXJlU2hhcmVzLnJlc29sdmVzKFtdKTtcbiAgICAgIHN0dWJUc3NVdGlscy5nZXRUeFJlcXVlc3QucmVzb2x2ZXMocmVidWlsdFR4KTtcblxuICAgICAgY29uc3QgaG90V2FsbGV0ID0ge1xuICAgICAgICB0eXBlOiAnaG90JyxcbiAgICAgIH07XG4gICAgICBjb25zdCBwcmVzaWduZWRUcmFuc2FjdGlvbjogYW55ID0gYXdhaXQgYmFzZWNvaW4ucHJlc2lnblRyYW5zYWN0aW9uKHtcbiAgICAgICAgd2FsbGV0RGF0YTogaG90V2FsbGV0LFxuICAgICAgICB0c3NVdGlsczogc3R1YlRzc1V0aWxzLFxuICAgICAgICB0eFByZWJ1aWxkOiB7XG4gICAgICAgICAgdHhSZXF1ZXN0SWQsXG4gICAgICAgIH0sXG4gICAgICB9IGFzIGFueSk7XG5cbiAgICAgIHByZXNpZ25lZFRyYW5zYWN0aW9uLndhbGxldERhdGEuc2hvdWxkLmRlZXBFcXVhbChob3RXYWxsZXQpO1xuICAgICAgcHJlc2lnbmVkVHJhbnNhY3Rpb24udHhQcmVidWlsZC5zaG91bGQuZGVlcEVxdWFsKHJlYnVpbHRUeCk7XG4gICAgICBwcmVzaWduZWRUcmFuc2FjdGlvbi50eEhleC5zaG91bGQuZXF1YWwocmVidWlsdFR4LnVuc2lnbmVkVHhzWzBdLnNlcmlhbGl6ZWRUeEhleCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGRvIG5vdGhpbmcgZm9yIG5vbi1ob3Qgd2FsbGV0cycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbGRXYWxsZXQgPSB7XG4gICAgICAgIHR5cGU6ICdjb2xkJyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHByZXNpZ25lZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4ucHJlc2lnblRyYW5zYWN0aW9uKHtcbiAgICAgICAgd2FsbGV0RGF0YTogY29sZFdhbGxldCxcbiAgICAgIH0gYXMgYW55KTtcbiAgICAgIHByZXNpZ25lZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICB3YWxsZXREYXRhOiBjb2xkV2FsbGV0LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGVycm9yIGlmIHR4UmVxdWVzdElkIGlzIG1pc3NpbmcnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBob3RXYWxsZXQgPSB7XG4gICAgICAgIHR5cGU6ICdob3QnLFxuICAgICAgfTtcbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC5wcmVzaWduVHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHdhbGxldERhdGE6IGhvdFdhbGxldCxcbiAgICAgICAgICB0eFByZWJ1aWxkOiB7fSxcbiAgICAgICAgfSBhcyBhbnkpXG4gICAgICAgIC5zaG91bGQucmVqZWN0ZWRXaXRoKCdNaXNzaW5nIHR4UmVxdWVzdElkJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdBUEkgS2V5IHBhcmFtZXRlcjonLCAoKSA9PiB7XG4gICAgLy8gVGVzdCB0aGUgZ2V0UHVibGljTm9kZVVybCBtZXRob2QgZGlyZWN0bHlcbiAgICBpdCgnc2hvdWxkIGFwcGVuZCBhcGlLZXkgdG8gbm9kZSBVUkwgd2hlbiBwcm92aWRlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIEFjY2VzcyB0aGUgcHJvdGVjdGVkIG1ldGhvZCB1c2luZyB0eXBlIGNhc3RpbmdcbiAgICAgIGNvbnN0IHVybCA9IChiYXNlY29pbiBhcyBhbnkpLmdldFB1YmxpY05vZGVVcmwoJ3Rlc3QtYXBpLWtleS0xMjMnKTtcbiAgICAgIHVybC5zaG91bGQuZXF1YWwoYCR7RW52aXJvbm1lbnRzLnRlc3Quc29sQWxjaGVteU5vZGVVcmx9L3Rlc3QtYXBpLWtleS0xMjNgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdXNlIHJlZ3VsYXIgbm9kZSBVUkwgd2hlbiBhcGlLZXkgaXMgbm90IHByb3ZpZGVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gQWNjZXNzIHRoZSBwcm90ZWN0ZWQgbWV0aG9kIHVzaW5nIHR5cGUgY2FzdGluZ1xuICAgICAgY29uc3QgdXJsID0gKGJhc2Vjb2luIGFzIGFueSkuZ2V0UHVibGljTm9kZVVybCgpO1xuICAgICAgdXJsLnNob3VsZC5lcXVhbChFbnZpcm9ubWVudHMudGVzdC5zb2xOb2RlVXJsKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1JlY292ZXIgVHJhbnNhY3Rpb25zOicsICgpID0+IHtcbiAgICBjb25zdCBzYW5kQm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuICAgIGNvbnN0IGNvaW4gPSBjb2lucy5nZXQoJ3Rzb2wnKTtcbiAgICBjb25zdCB1c2R0TWludEFkZHJlc3MgPSAnOWNncEJlTloySG5MZGE3TldhYVUxaTNOeVRzdGsyYzR6Q01VY29BR3NpOUMnO1xuICAgIGNvbnN0IHQyMm1pbnRBZGRyZXNzID0gJzVOUjFiUXdMV3FqYmtoYlExaHg3MkhLSnliYnV2d2tEblVaTm9BWjJWaFc2JztcbiAgICBsZXQgY2FsbEJhY2s6IHNpbm9uLlNpbm9uU3R1YjtcblxuICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgY2FsbEJhY2sgPSBzYW5kQm94LnN0dWIoU29sLnByb3RvdHlwZSwgJ2dldERhdGFGcm9tTm9kZScgYXMga2V5b2YgU29sKTtcblxuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRMYXRlc3RCbG9ja2hhc2gnLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb21taXRtZW50OiAnZmluYWxpemVkJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRCbG9ja2hhc2hSZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEZlZUZvck1lc3NhZ2UnLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHNpbm9uLm1hdGNoLnN0cmluZyxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbW1pdG1lbnQ6ICdmaW5hbGl6ZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEZlZXNGb3JNZXNzYWdlUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRNaW5pbXVtQmFsYW5jZUZvclJlbnRFeGVtcHRpb24nLFxuICAgICAgICAgICAgcGFyYW1zOiBbMTY1XSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldE1pbmltdW1CYWxhbmNlRm9yUmVudEV4ZW1wdGlvblJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QmFsYW5jZScsXG4gICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS5hY2NvdW50SW5mby5iczU4RW5jb2RlZFB1YmxpY0tleV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50QmFsYW5jZVJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QmFsYW5jZScsXG4gICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS5hY2NvdW50SW5mby5iczU4RW5jb2RlZFB1YmxpY0tleU5vRnVuZHNdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEJhbGFuY2VSZXNwb25zZU5vRnVuZHMpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRCYWxhbmNlJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Rlc3REYXRhLmFjY291bnRJbmZvLmJzNThFbmNvZGVkUHVibGljS2V5TTFEZXJpdmF0aW9uXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2VNMURlcml2YXRpb24pO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRCYWxhbmNlJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Rlc3REYXRhLmFjY291bnRJbmZvLmJzNThFbmNvZGVkUHVibGljS2V5TTJEZXJpdmF0aW9uXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2VNMkRlcml2YXRpb24pO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRCYWxhbmNlJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Rlc3REYXRhLmFjY291bnRJbmZvLmJzNThFbmNvZGVkUHVibGljS2V5V2l0aE1hbnlUb2tlbnNdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEJhbGFuY2VSZXNwb25zZU0yRGVyaXZhdGlvbik7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEJhbGFuY2UnLFxuICAgICAgICAgICAgcGFyYW1zOiBbdGVzdERhdGEuY2xvc2VBVEFrZXlzLmNsb3NlQXRhQWRkcmVzc10sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50QmFsYW5jZVJlc3BvbnNlTTJEZXJpdmF0aW9uKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QmFsYW5jZScsXG4gICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS5jbG9zZUFUQWtleXMuYnM1OEVuY29kZWRQdWJsaWNLZXldLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEJhbGFuY2VSZXNwb25zZU0yRGVyaXZhdGlvbik7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEFjY291bnRJbmZvJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuY2xvc2VBdGFBZGRyZXNzLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkluZm9SZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEFjY291bnRJbmZvJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVB1YktleSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiAnanNvblBhcnNlZCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEluZm9SZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldFRva2VuQWNjb3VudHNCeU93bmVyJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICB0ZXN0RGF0YS5rZXlzLmRlc3RpbmF0aW9uUHViS2V5LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogJ2pzb25QYXJzZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyUmVzcG9uc2VOb0FjY291bnRzKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHRlc3REYXRhLmFjY291bnRJbmZvLmJzNThFbmNvZGVkUHVibGljS2V5LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogJ2pzb25QYXJzZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyUmVzcG9uc2VOb0FjY291bnRzKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXkyLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogJ2pzb25QYXJzZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRUb2tlbkFjY291bnRzQnlPd25lcicsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleTIsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcm9ncmFtSWQ6ICdUb2tlbnpRZEJOYkxxUDVWRWhka0FTNkVQRkxDMVBIbkJxQ1hFcFB4dUViJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiAnanNvblBhcnNlZCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0VG9rZW5BY2NvdW50c0J5T3duZXJGb3JTb2wyMDIyUmVzcG9uc2UyKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczAsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcm9ncmFtSWQ6ICdUb2tlbnpRZEJOYkxxUDVWRWhka0FTNkVQRkxDMVBIbkJxQ1hFcFB4dUViJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiAnanNvblBhcnNlZCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0VG9rZW5BY2NvdW50c0J5T3duZXJGb3JTb2wyMDIyUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRUb2tlbkFjY291bnRzQnlPd25lcicsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHByb2dyYW1JZDogJ1Rva2Vua2VnUWZlWnlpTndBSmJOYkdLUEZYQ1d1QnZmOVNzNjIzVlE1REEnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lclJlc3BvbnNlMik7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldFRva2VuQWNjb3VudHNCeU93bmVyJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3M0LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogJ2pzb25QYXJzZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyUmVzcG9uc2UzKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QmFsYW5jZScsXG4gICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MwXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRUb2tlbkFjY291bnRzQnlPd25lcicsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHByb2dyYW1JZDogJ1Rva2VuelFkQk5iTHFQNVZFaGRrQVM2RVBGTEMxUEhuQnFDWEVwUHh1RWInLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lclJlc3BvbnNlTm9BY2NvdW50cyk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ3NlbmRUcmFuc2FjdGlvbicsXG4gICAgICAgICAgICBwYXJhbXM6IHNpbm9uLm1hdGNoLmFycmF5LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5vbkNhbGwoMClcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5icm9hZGNhc3RUcmFuc2FjdGlvblJlc3BvbnNlKVxuICAgICAgICAub25DYWxsKDEpXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuYnJvYWRjYXN0VHJhbnNhY3Rpb25SZXNwb25zZTEpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICAgIHNhbmRCb3gucmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0YWtlIE9WQyBvdXRwdXQgYW5kIGdlbmVyYXRlIGEgc2lnbmVkIHN3ZWVwIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcGFyYW1zID0gdGVzdERhdGEub3ZjUmVzcG9uc2U7XG4gICAgICBjb25zdCByZWNvdmVyeVR4biA9IGF3YWl0IGJhc2Vjb2luLmNyZWF0ZUJyb2FkY2FzdGFibGVTd2VlcFRyYW5zYWN0aW9uKHBhcmFtcyk7XG4gICAgICByZWNvdmVyeVR4bi50cmFuc2FjdGlvbnNbMF0uc2VyaWFsaXplZFR4LnNob3VsZC5lcXVhbChcbiAgICAgICAgJ0F2UitMOTA5a3pScTZOdWFVZTlGNkp0OTdNT2lGczdqcFc4TXVPcnd6NEViS0Y0MGQzMWRjaS9iZ0xUcTRncGsvSGgzczVjQThGdGJMa0RRcjE1UHFBRTd5ZDhMT1h2c0x0TzJSRXFNTS9PQ1o4d0l0ZnNxZlRmaWEyeElmaWJSVzN3SGd3NjNqaWFvamJYZVNxYVlhakovQ2E3WXdCVXo1Ymx5ZEkzZllMZ1BBZ0VDQnNMVnRmVDdtcHZOaWk4d1BrMEc5NDJON1RBSEUvUlcyaXEvOExQcUFZV3FCUm8wdklyTlE0ZGpsMitXaDJFVkJROXpnb1ZUVm0wUkhYckl2LzYvV0h4UFgxbUh2K0pxcG1BVDc5bHROallQSzBNMnlSK1pNbG43VmdVVEJXRk5RdkxxRS9qL25YbFkyL0pweHVOci9mWExYRVBlUzA0ZFB2dDlxejFkQW9ZRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHcDlVWEdTeFdqdUNLaEY5ejBwZUl6d05jTVVXeUdyTkUyQVl1cVVBQUFEcGlIMjBjeExqN0tuT2FvSTVBTk5vUHhZanM0NzJGZGpEZU1QZnQza1hkQWdRREFnVUJCQVFBQUFBRUFnQUREQUlBQUFEd29wbzdBQUFBQUE9PSdcbiAgICAgICk7XG4gICAgICAocmVjb3ZlcnlUeG4udHJhbnNhY3Rpb25zWzBdLnNjYW5JbmRleCA/PyAwKS5zaG91bGQuZXF1YWwoMCk7XG4gICAgICAocmVjb3ZlcnlUeG4ubGFzdFNjYW5JbmRleCA/PyAwKS5zaG91bGQuZXF1YWwoMCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRha2Ugc29sIDIwMjIgdG9rZW4gT1ZDIG91dHB1dCBhbmQgZ2VuZXJhdGUgYSBzaWduZWQgc3dlZXAgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBwYXJhbXMgPSB0ZXN0RGF0YS5vdmNSZXNwb25zZTtcbiAgICAgIGNvbnN0IHJlY292ZXJ5VHhuID0gYXdhaXQgYmFzZWNvaW4uY3JlYXRlQnJvYWRjYXN0YWJsZVN3ZWVwVHJhbnNhY3Rpb24ocGFyYW1zKTtcbiAgICAgIHJlY292ZXJ5VHhuLnRyYW5zYWN0aW9uc1swXS5zZXJpYWxpemVkVHguc2hvdWxkLmVxdWFsKFxuICAgICAgICAnQXZSK0w5MDlrelJxNk51YVVlOUY2SnQ5N01PaUZzN2pwVzhNdU9yd3o0RWJLRjQwZDMxZGNpL2JnTFRxNGdway9IaDNzNWNBOEZ0YkxrRFFyMTVQcUFFN3lkOExPWHZzTHRPMlJFcU1NL09DWjh3SXRmc3FmVGZpYTJ4SWZpYlJXM3dIZ3c2M2ppYW9qYlhlU3FhWWFqSi9DYTdZd0JVejVibHlkSTNmWUxnUEFnRUNCc0xWdGZUN21wdk5paTh3UGswRzk0Mk43VEFIRS9SVzJpcS84TFBxQVlXcUJSbzB2SXJOUTRkamwyK1doMkVWQlE5emdvVlRWbTBSSFhySXYvNi9XSHhQWDFtSHYrSnFwbUFUNzlsdE5qWVBLME0yeVIrWk1sbjdWZ1VUQldGTlF2THFFL2ovblhsWTIvSnB4dU5yL2ZYTFhFUGVTMDRkUHZ0OXF6MWRBb1lFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUdwOVVYR1N4V2p1Q0toRjl6MHBlSXp3TmNNVVd5R3JORTJBWXVxVUFBQURwaUgyMGN4TGo3S25PYW9JNUFOTm9QeFlqczQ3MkZkakRlTVBmdDNrWGRBZ1FEQWdVQkJBUUFBQUFFQWdBRERBSUFBQUR3b3BvN0FBQUFBQT09J1xuICAgICAgKTtcbiAgICAgIChyZWNvdmVyeVR4bi50cmFuc2FjdGlvbnNbMF0uc2NhbkluZGV4ID8/IDApLnNob3VsZC5lcXVhbCgwKTtcbiAgICAgIChyZWNvdmVyeVR4bi5sYXN0U2NhbkluZGV4ID8/IDApLnNob3VsZC5lcXVhbCgwKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGFrZSBjb25zb2xpZGF0aW9uIE9WQyBvdXRwdXQgYW5kIGdlbmVyYXRlIG11bHRpcGxlIHNpZ25lZCBzd2VlcCB0cmFuc2FjdGlvbnMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBwYXJhbXMgPSB0ZXN0RGF0YS5vdmNSZXNwb25zZTI7XG4gICAgICBjb25zdCByZWNvdmVyeVR4biA9IGF3YWl0IGJhc2Vjb2luLmNyZWF0ZUJyb2FkY2FzdGFibGVTd2VlcFRyYW5zYWN0aW9uKHBhcmFtcyk7XG4gICAgICByZWNvdmVyeVR4bi50cmFuc2FjdGlvbnNbMF0uc2VyaWFsaXplZFR4LnNob3VsZC5lcXVhbChcbiAgICAgICAgJ0F0UVBMek9tTHVLd0hZNk41WG9KSVpLL1Q3VzEwdVlXbS9NUnRlM0dGVWRsK3czZ0hMalNhOUg2NldTZkZOdWJReElQY2t4SkR5bHRrUDdrc0xEZjlRZ0JOSk0yVVdiQlVINXdUMEpKSElMbGhDczMzSFg4RGVFLzhUZHN3NnRHZlpvTWhDblNLdjZUUFd0Qnh5N1NiNnNXOGtzQ1VQbkFXdUhHR0ttZ2pFTUJBZ0VDQm1McnF4SnJZMmtiTi90Y3JRdzNQOFAxNU9sakZHYWJGSkFLQnJVTzFnck5CUm8wdklyTlE0ZGpsMitXaDJFVkJROXpnb1ZUVm0wUkhYckl2LzYvV0h4UFgxbUh2K0pxcG1BVDc5bHROallQSzBNMnlSK1pNbG43VmdVVEJXRk5Rc0xWdGZUN21wdk5paTh3UGswRzk0Mk43VEFIRS9SVzJpcS84TFBxQVlXcUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHcDlVWEdTeFdqdUNLaEY5ejBwZUl6d05jTVVXeUdyTkUyQVl1cVVBQUFJWlFuaWlTNzNENm13ZnBuZmhWTUM0bHlZSnRSU3Jtb1pwRjd5SWxVZElEQWdRREFnVUJCQVFBQUFBRUFnQUREQUlBQUFEd1BjMGRBQUFBQUE9PSdcbiAgICAgICk7XG4gICAgICAocmVjb3ZlcnlUeG4udHJhbnNhY3Rpb25zWzBdLnNjYW5JbmRleCA/PyAwKS5zaG91bGQuZXF1YWwoMSk7XG4gICAgICByZWNvdmVyeVR4bi50cmFuc2FjdGlvbnNbMV0uc2VyaWFsaXplZFR4LnNob3VsZC5lcXVhbChcbiAgICAgICAgJ0F1TGhPQTV6bU9CWlI4NWxvK25LZFRvcFZ3SkFNck1wNk5XKzhVbkdOc1NCU3BCa3FmV1pRcVNnOXMrN2FUbFhlem01dnhvbCtQbDZ0N1BwVk5UT0h3TGNwOXhKcDNURkhkaXZFYmh3SktsZFI0TnkrcGFzb0Z4K0JnazhxNmcxaU5pcTdYU2kxT3YzYnM3ZXVNa1RqN25EUkZxUDhsdjd4TFRjdnJCbTlPUUpBZ0VDQnAxNEltQkNkbVZST2x3MFV2ZVlTMU12Ry9sakNSSTNNSlRGbXN4dVhFb1dCUm8wdklyTlE0ZGpsMitXaDJFVkJROXpnb1ZUVm0wUkhYckl2LzYvV0h3MGh5eHZwVnd0SXg5L3plWDJPMTZlVHJZK2FLSWgxbWRLZzRNTWcwZXl4TUxWdGZUN21wdk5paTh3UGswRzk0Mk43VEFIRS9SVzJpcS84TFBxQVlXcUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHcDlVWEdTeFdqdUNLaEY5ejBwZUl6d05jTVVXeUdyTkUyQVl1cVVBQUFDN3dzMVhGc2xpbndndHBJU1VWaVZXSVZUSHlEMlEwcWoyNFlqS21yQW1YQWdRREFnVUJCQVFBQUFBRUFnQUREQUlBQUFEd1BjMGRBQUFBQUE9PSdcbiAgICAgICk7XG4gICAgICAocmVjb3ZlcnlUeG4udHJhbnNhY3Rpb25zWzFdLnNjYW5JbmRleCA/PyAwKS5zaG91bGQuZXF1YWwoMik7XG4gICAgICAocmVjb3ZlcnlUeG4ubGFzdFNjYW5JbmRleCA/PyAwKS5zaG91bGQuZXF1YWwoMjApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIGEgdHhuIGZvciBub24tYml0Z28gcmVjb3ZlcmllcyAobGF0ZXN0IGJsb2NraGFzaCknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBnZXRUU1NTaWduYXR1cmVTcHkgPSBzYW5kQm94LnNweShFRERTQU1ldGhvZHMsICdnZXRUU1NTaWduYXR1cmUnKTtcblxuICAgICAgLy8gTGF0ZXN0IEJsb2NraGFzaCBSZWNvdmVyeSAoQml0R28tbGVzcylcbiAgICAgIGNvbnN0IGxhdGVzdEJsb2NrSGFzaFR4biA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXIoe1xuICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS5rZXlzLnVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEua2V5cy5iYWNrdXBLZXksXG4gICAgICAgIGJpdGdvS2V5OiB0ZXN0RGF0YS5rZXlzLmJpdGdvS2V5LFxuICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5rZXlzLmRlc3RpbmF0aW9uUHViS2V5LFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS5rZXlzLndhbGxldFBhc3N3b3JkLFxuICAgICAgfSk7XG4gICAgICBsYXRlc3RCbG9ja0hhc2hUeG4uc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgbGF0ZXN0QmxvY2tIYXNoVHhuLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2VyaWFsaXplZFR4Jyk7XG4gICAgICBsYXRlc3RCbG9ja0hhc2hUeG4uc2hvdWxkLmhhc093blByb3BlcnR5KCdzY2FuSW5kZXgnKTtcbiAgICAgIHNob3VsZC5lcXVhbCgobGF0ZXN0QmxvY2tIYXNoVHhuIGFzIE1QQ1R4KS5zY2FuSW5kZXgsIDApO1xuXG4gICAgICBjb25zdCBsYXRlc3RCbG9ja2hhc2hUeG5EZXNlcmlhbGl6ZSA9IG5ldyBUcmFuc2FjdGlvbihjb2luKTtcbiAgICAgIGxhdGVzdEJsb2NraGFzaFR4bkRlc2VyaWFsaXplLmZyb21SYXdUcmFuc2FjdGlvbigobGF0ZXN0QmxvY2tIYXNoVHhuIGFzIE1QQ1R4KS5zZXJpYWxpemVkVHgpO1xuICAgICAgY29uc3QgbGF0ZXN0QmxvY2toYXNoVHhuSnNvbiA9IGxhdGVzdEJsb2NraGFzaFR4bkRlc2VyaWFsaXplLnRvSnNvbigpO1xuXG4gICAgICBzaG91bGQuZXF1YWwobGF0ZXN0QmxvY2toYXNoVHhuSnNvbi5ub25jZSwgdGVzdERhdGEuU29sSW5wdXREYXRhLmJsb2NraGFzaCk7XG4gICAgICBzaG91bGQuZXF1YWwobGF0ZXN0QmxvY2toYXNoVHhuSnNvbi5mZWVQYXllciwgdGVzdERhdGEuYWNjb3VudEluZm8uYnM1OEVuY29kZWRQdWJsaWNLZXkpO1xuICAgICAgc2hvdWxkLmVxdWFsKGxhdGVzdEJsb2NraGFzaFR4bkpzb24ubnVtU2lnbmF0dXJlcywgdGVzdERhdGEuU29sSW5wdXREYXRhLmxhdGVzdEJsb2NraGFzaFNpZ25hdHVyZXMpO1xuICAgICAgY29uc3Qgc29sQ29pbiA9IGJhc2Vjb2luIGFzIGFueTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChzb2xDb2luLmdldERhdGFGcm9tTm9kZSwgMyk7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsZWRPbmNlKGdldFRTU1NpZ25hdHVyZVNweSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlY292ZXIgYSB0eG4gZm9yIG5vbi1iaXRnbyByZWNvdmVyaWVzIChkdXJhYmxlIG5vbmNlKScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGdldFRTU1NpZ25hdHVyZVNweSA9IHNhbmRCb3guc3B5KEVERFNBTWV0aG9kcywgJ2dldFRTU1NpZ25hdHVyZScpO1xuXG4gICAgICAvLyBEdXJhYmxlIE5vbmNlIFJlY292ZXJ5IChCaXRHby1sZXNzKVxuICAgICAgY29uc3QgZHVyYWJsZU5vbmNlVHhuID0gYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIHVzZXJLZXk6IHRlc3REYXRhLmtleXMudXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiB0ZXN0RGF0YS5rZXlzLmJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLmtleXMuYml0Z29LZXksXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2U6IHRlc3REYXRhLmtleXMud2FsbGV0UGFzc3dvcmQsXG4gICAgICAgIGR1cmFibGVOb25jZToge1xuICAgICAgICAgIHB1YmxpY0tleTogdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQdWJLZXksXG4gICAgICAgICAgc2VjcmV0S2V5OiB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVByaXZLZXksXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgZHVyYWJsZU5vbmNlVHhuLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIGR1cmFibGVOb25jZVR4bi5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpO1xuICAgICAgZHVyYWJsZU5vbmNlVHhuLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2NhbkluZGV4Jyk7XG4gICAgICBzaG91bGQuZXF1YWwoKGR1cmFibGVOb25jZVR4biBhcyBNUENUeCkuc2NhbkluZGV4LCAwKTtcblxuICAgICAgY29uc3QgZHVyYWJsZU5vbmNlVHhuRGVzZXJpYWxpemUgPSBuZXcgVHJhbnNhY3Rpb24oY29pbik7XG4gICAgICBkdXJhYmxlTm9uY2VUeG5EZXNlcmlhbGl6ZS5mcm9tUmF3VHJhbnNhY3Rpb24oKGR1cmFibGVOb25jZVR4biBhcyBNUENUeCkuc2VyaWFsaXplZFR4KTtcbiAgICAgIGNvbnN0IGR1cmFibGVOb25jZVR4bkpzb24gPSBkdXJhYmxlTm9uY2VUeG5EZXNlcmlhbGl6ZS50b0pzb24oKTtcblxuICAgICAgc2hvdWxkLmVxdWFsKGR1cmFibGVOb25jZVR4bkpzb24ubm9uY2UsIHRlc3REYXRhLlNvbElucHV0RGF0YS5kdXJhYmxlTm9uY2VCbG9ja2hhc2gpO1xuICAgICAgc2hvdWxkLmVxdWFsKGR1cmFibGVOb25jZVR4bkpzb24uZmVlUGF5ZXIsIHRlc3REYXRhLmFjY291bnRJbmZvLmJzNThFbmNvZGVkUHVibGljS2V5KTtcbiAgICAgIHNob3VsZC5lcXVhbChkdXJhYmxlTm9uY2VUeG5Kc29uLm51bVNpZ25hdHVyZXMsIHRlc3REYXRhLlNvbElucHV0RGF0YS5kdXJhYmxlTm9uY2VTaWduYXR1cmVzKTtcbiAgICAgIGNvbnN0IHNvbENvaW4gPSBiYXNlY29pbiBhcyBhbnk7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoc29sQ29pbi5nZXREYXRhRnJvbU5vZGUsIDQpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbGVkT25jZShnZXRUU1NTaWduYXR1cmVTcHkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIGEgdHhuIGZvciB1bnNpZ25lZCBzd2VlcCByZWNvdmVyaWVzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gVW5zaWduZWQgU3dlZXAgUmVjb3ZlcnlcbiAgICAgIGNvbnN0IHVuc2lnbmVkU3dlZXBUeG4gPSAoYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIGJpdGdvS2V5OiB0ZXN0RGF0YS5rZXlzLmJpdGdvS2V5LFxuICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5rZXlzLmRlc3RpbmF0aW9uUHViS2V5LFxuICAgICAgICBkdXJhYmxlTm9uY2U6IHtcbiAgICAgICAgICBwdWJsaWNLZXk6IHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LFxuICAgICAgICAgIHNlY3JldEtleTogdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQcml2S2V5LFxuICAgICAgICB9LFxuICAgICAgfSkpIGFzIE1QQ1N3ZWVwVHhzO1xuXG4gICAgICB1bnNpZ25lZFN3ZWVwVHhuLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIHVuc2lnbmVkU3dlZXBUeG4udHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpO1xuICAgICAgdW5zaWduZWRTd2VlcFR4bi50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2NhbkluZGV4Jyk7XG4gICAgICBzaG91bGQuZXF1YWwodW5zaWduZWRTd2VlcFR4bi50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnNjYW5JbmRleCwgMCk7XG5cbiAgICAgIGNvbnN0IHVuc2lnbmVkU3dlZXBUeG5EZXNlcmlhbGl6ZSA9IG5ldyBUcmFuc2FjdGlvbihjb2luKTtcbiAgICAgIHVuc2lnbmVkU3dlZXBUeG5EZXNlcmlhbGl6ZS5mcm9tUmF3VHJhbnNhY3Rpb24oXG4gICAgICAgIHVuc2lnbmVkU3dlZXBUeG4udHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5zZXJpYWxpemVkVHhcbiAgICAgICk7XG4gICAgICBjb25zdCB1bnNpZ25lZFN3ZWVwVHhuSnNvbiA9IHVuc2lnbmVkU3dlZXBUeG5EZXNlcmlhbGl6ZS50b0pzb24oKTtcblxuICAgICAgc2hvdWxkLmVxdWFsKHVuc2lnbmVkU3dlZXBUeG5Kc29uLm5vbmNlLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEuZHVyYWJsZU5vbmNlQmxvY2toYXNoKTtcbiAgICAgIHNob3VsZC5lcXVhbCh1bnNpZ25lZFN3ZWVwVHhuSnNvbi5mZWVQYXllciwgdGVzdERhdGEuYWNjb3VudEluZm8uYnM1OEVuY29kZWRQdWJsaWNLZXkpO1xuICAgICAgc2hvdWxkLmVxdWFsKHVuc2lnbmVkU3dlZXBUeG5Kc29uLm51bVNpZ25hdHVyZXMsIHRlc3REYXRhLlNvbElucHV0RGF0YS51bnNpZ25lZFN3ZWVwU2lnbmF0dXJlcyk7XG4gICAgICBjb25zdCBzb2xDb2luID0gYmFzZWNvaW4gYXMgYW55O1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KHNvbENvaW4uZ2V0RGF0YUZyb21Ob2RlLCA0KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVjb3ZlciBhIHR4biBmb3IgdW5zaWduZWQgc3dlZXAgcmVjb3ZlcmllcyB3aGVuIHVzZXJLZXkvYmFja3VwS2V5IGFyZSBlbXB0eSBzdHJpbmdzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gUmVncmVzc2lvbiB0ZXN0OiBXUlcncyBjb2xkLXdhbGxldCBzd2VlcCBmb3JtIHNlbmRzIHVzZXJLZXkvYmFja3VwS2V5IGFzIGVtcHR5IHN0cmluZ3NcbiAgICAgIC8vIChyYXRoZXIgdGhhbiBvbWl0dGluZyB0aGVtKSB0byBzYXRpc2Z5IFRTIHR5cGluZy4gRW1wdHkgc3RyaW5nIGFuZCB1bmRlZmluZWQgbXVzdCBiZVxuICAgICAgLy8gaGFuZGxlZCBpZGVudGljYWxseSBieSB0aGUgdW5zaWduZWQtc3dlZXAgZ2F0ZSAoYCFwYXJhbXMud2FsbGV0UGFzc3BocmFzZWApIGFuZCBieVxuICAgICAgLy8gaXNNcGN2MlNpZ25pbmdNYXRlcmlhbCdzIGVhcmx5IGAhd2FsbGV0UGFzc3BocmFzZWAgc2hvcnQtY2lyY3VpdC5cbiAgICAgIGNvbnN0IHVuc2lnbmVkU3dlZXBUeG4gPSAoYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIHVzZXJLZXk6ICcnLFxuICAgICAgICBiYWNrdXBLZXk6ICcnLFxuICAgICAgICBiaXRnb0tleTogdGVzdERhdGEua2V5cy5iaXRnb0tleSxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleSxcbiAgICAgICAgZHVyYWJsZU5vbmNlOiB7XG4gICAgICAgICAgcHVibGljS2V5OiB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVB1YktleSxcbiAgICAgICAgICBzZWNyZXRLZXk6IHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHJpdktleSxcbiAgICAgICAgfSxcbiAgICAgIH0pKSBhcyBNUENTd2VlcFR4cztcblxuICAgICAgdW5zaWduZWRTd2VlcFR4bi5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICB1bnNpZ25lZFN3ZWVwVHhuLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguc2hvdWxkLmhhc093blByb3BlcnR5KCdzZXJpYWxpemVkVHgnKTtcbiAgICAgIHNob3VsZC5lcXVhbCh1bnNpZ25lZFN3ZWVwVHhuLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguc2NhbkluZGV4LCAwKTtcblxuICAgICAgY29uc3QgdW5zaWduZWRTd2VlcFR4bkRlc2VyaWFsaXplID0gbmV3IFRyYW5zYWN0aW9uKGNvaW4pO1xuICAgICAgdW5zaWduZWRTd2VlcFR4bkRlc2VyaWFsaXplLmZyb21SYXdUcmFuc2FjdGlvbihcbiAgICAgICAgdW5zaWduZWRTd2VlcFR4bi50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnNlcmlhbGl6ZWRUeFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHVuc2lnbmVkU3dlZXBUeG5Kc29uID0gdW5zaWduZWRTd2VlcFR4bkRlc2VyaWFsaXplLnRvSnNvbigpO1xuXG4gICAgICBzaG91bGQuZXF1YWwodW5zaWduZWRTd2VlcFR4bkpzb24ubm9uY2UsIHRlc3REYXRhLlNvbElucHV0RGF0YS5kdXJhYmxlTm9uY2VCbG9ja2hhc2gpO1xuICAgICAgc2hvdWxkLmVxdWFsKHVuc2lnbmVkU3dlZXBUeG5Kc29uLmZlZVBheWVyLCB0ZXN0RGF0YS5hY2NvdW50SW5mby5iczU4RW5jb2RlZFB1YmxpY0tleSk7XG4gICAgICBzaG91bGQuZXF1YWwodW5zaWduZWRTd2VlcFR4bkpzb24ubnVtU2lnbmF0dXJlcywgdGVzdERhdGEuU29sSW5wdXREYXRhLnVuc2lnbmVkU3dlZXBTaWduYXR1cmVzKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGVycm9yIGluIHJlY292ZXIgZnVuY3Rpb24gaWYgYSByZXF1aXJlZCBmaWVsZCBpcyBtaXNzaW5nL2luY29ycmVjdCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIG1pc3NpbmcgdXNlcmtleVxuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnJlY292ZXIoe1xuICAgICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEua2V5cy5iYWNrdXBLZXksXG4gICAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLmtleXMuYml0Z29LZXksXG4gICAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleSxcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS5rZXlzLndhbGxldFBhc3N3b3JkLFxuICAgICAgICB9KVxuICAgICAgICAuc2hvdWxkLnJlamVjdGVkV2l0aCgnbWlzc2luZyB1c2VyS2V5Jyk7XG5cbiAgICAgIC8vIG1pc3NpbmcgYmFja3Vwa2V5XG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAucmVjb3Zlcih7XG4gICAgICAgICAgdXNlcktleTogdGVzdERhdGEua2V5cy51c2VyS2V5LFxuICAgICAgICAgIGJpdGdvS2V5OiB0ZXN0RGF0YS5rZXlzLmJpdGdvS2V5LFxuICAgICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEua2V5cy53YWxsZXRQYXNzd29yZCxcbiAgICAgICAgfSlcbiAgICAgICAgLnNob3VsZC5yZWplY3RlZFdpdGgoJ21pc3NpbmcgYmFja3VwS2V5Jyk7XG5cbiAgICAgIC8vIGluY29ycmVjdCB3YWxsZXQgcGFzc3BocmFzZSwgdXNlciBrZXksIGJhY2t1cCBrZXkgY29tYmluYXRpb25cbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC5yZWNvdmVyKHtcbiAgICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS5rZXlzLnVzZXJLZXksXG4gICAgICAgICAgYmFja3VwS2V5OiB0ZXN0RGF0YS5rZXlzLmJhY2t1cEtleSxcbiAgICAgICAgICBiaXRnb0tleTogdGVzdERhdGEua2V5cy5iaXRnb0tleSxcbiAgICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5rZXlzLmRlc3RpbmF0aW9uUHViS2V5LFxuICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2U6IHRlc3REYXRhLmtleXMud2FsbGV0UGFzc3dvcmQgKyAnaW5jb3JyZWN0JyxcbiAgICAgICAgfSlcbiAgICAgICAgLnNob3VsZC5yZWplY3RlZFdpdGgoJ0Vycm9yIGRlY3J5cHRpbmcgdXNlciBrZXljaGFpbjogaW5jb3JyZWN0IHBhc3N3b3JkJyk7XG5cbiAgICAgIC8vIG5vIHdhbGxldCB3aXRoIHN1ZmZpY2llbnQgZnVuZHNcbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC5yZWNvdmVyKHtcbiAgICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS5rZXlzLnVzZXJLZXksXG4gICAgICAgICAgYmFja3VwS2V5OiB0ZXN0RGF0YS5rZXlzLmJhY2t1cEtleSxcbiAgICAgICAgICBiaXRnb0tleTogdGVzdERhdGEua2V5cy5iaXRnb0tleU5vRnVuZHMsXG4gICAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleSxcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS5rZXlzLndhbGxldFBhc3N3b3JkLFxuICAgICAgICB9KVxuICAgICAgICAuc2hvdWxkLnJlamVjdGVkV2l0aCgnRGlkIG5vdCBmaW5kIGFkZHJlc3Mgd2l0aCBmdW5kcyB0byByZWNvdmVyJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlY292ZXIgc29sIHRva2VucyB0byByZWNvdmVyeSBkZXN0aW5hdGlvbiB3aXRoIG5vIGV4aXN0aW5nIHRva2VuIGFjY291bnRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZ2V0VFNTU2lnbmF0dXJlU3B5ID0gc2FuZEJveC5zcHkoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJyk7XG5cbiAgICAgIGNvbnN0IHRva2VuVHhuID0gYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIHVzZXJLZXk6IHRlc3REYXRhLndyd1VzZXIudXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLndyd1VzZXIuYml0Z29LZXksXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiB1c2R0TWludEFkZHJlc3MsXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2U6IHRlc3REYXRhLndyd1VzZXIud2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgZHVyYWJsZU5vbmNlOiB7XG4gICAgICAgICAgcHVibGljS2V5OiB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVB1YktleSxcbiAgICAgICAgICBzZWNyZXRLZXk6IHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHJpdktleSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICB0b2tlblR4bi5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICB0b2tlblR4bi5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpO1xuICAgICAgdG9rZW5UeG4uc2hvdWxkLmhhc093blByb3BlcnR5KCdzY2FuSW5kZXgnKTtcbiAgICAgIHNob3VsZC5lcXVhbCgodG9rZW5UeG4gYXMgTVBDVHgpLnNjYW5JbmRleCwgMCk7XG5cbiAgICAgIGNvbnN0IHRva2VuVHhuRGVzZXJpYWxpemUgPSBuZXcgVHJhbnNhY3Rpb24oY29pbik7XG4gICAgICB0b2tlblR4bkRlc2VyaWFsaXplLmZyb21SYXdUcmFuc2FjdGlvbigodG9rZW5UeG4gYXMgTVBDVHgpLnNlcmlhbGl6ZWRUeCk7XG4gICAgICBjb25zdCB0b2tlblR4bkpzb24gPSB0b2tlblR4bkRlc2VyaWFsaXplLnRvSnNvbigpO1xuXG4gICAgICBzaG91bGQuZXF1YWwodG9rZW5UeG5Kc29uLm5vbmNlLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEuZHVyYWJsZU5vbmNlQmxvY2toYXNoKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0b2tlblR4bkpzb24uZmVlUGF5ZXIsIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczApO1xuICAgICAgc2hvdWxkLmVxdWFsKHRva2VuVHhuSnNvbi5udW1TaWduYXR1cmVzLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEuZHVyYWJsZU5vbmNlU2lnbmF0dXJlcyk7XG5cbiAgICAgIGNvbnN0IGluc3RydWN0aW9uc0RhdGEgPSB0b2tlblR4bkpzb24uaW5zdHJ1Y3Rpb25zRGF0YSBhcyBJbnN0cnVjdGlvblBhcmFtc1tdO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGEubGVuZ3RoLCAzKTtcbiAgICAgIHNob3VsZC5lcXVhbChpbnN0cnVjdGlvbnNEYXRhWzBdLnR5cGUsICdOb25jZUFkdmFuY2UnKTtcblxuICAgICAgY29uc3QgZGVzdGluYXRpb25VU0RUVG9rZW5BY2NvdW50ID0gYXdhaXQgZ2V0QXNzb2NpYXRlZFRva2VuQWNjb3VudEFkZHJlc3MoXG4gICAgICAgIHVzZHRNaW50QWRkcmVzcyxcbiAgICAgICAgdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleVxuICAgICAgKTtcbiAgICAgIHNob3VsZC5lcXVhbChpbnN0cnVjdGlvbnNEYXRhWzFdLnR5cGUsICdDcmVhdGVBc3NvY2lhdGVkVG9rZW5BY2NvdW50Jyk7XG4gICAgICBzaG91bGQuZXF1YWwoKGluc3RydWN0aW9uc0RhdGFbMV0gYXMgQXRhSW5pdCkucGFyYW1zLm1pbnRBZGRyZXNzLCB1c2R0TWludEFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzFdIGFzIEF0YUluaXQpLnBhcmFtcy5hdGFBZGRyZXNzLCBkZXN0aW5hdGlvblVTRFRUb2tlbkFjY291bnQpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzFdIGFzIEF0YUluaXQpLnBhcmFtcy5vd25lckFkZHJlc3MsIHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXkpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzFdIGFzIEF0YUluaXQpLnBhcmFtcy50b2tlbk5hbWUsICd0c29sOnVzZHQnKTtcbiAgICAgIHNob3VsZC5lcXVhbCgoaW5zdHJ1Y3Rpb25zRGF0YVsxXSBhcyBBdGFJbml0KS5wYXJhbXMucGF5ZXJBZGRyZXNzLCB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MwKTtcblxuICAgICAgY29uc3Qgc291cmNlVVNEVFRva2VuQWNjb3VudCA9IGF3YWl0IGdldEFzc29jaWF0ZWRUb2tlbkFjY291bnRBZGRyZXNzKFxuICAgICAgICB1c2R0TWludEFkZHJlc3MsXG4gICAgICAgIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczBcbiAgICAgICk7XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YVsyXS50eXBlLCAnVG9rZW5UcmFuc2ZlcicpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzJdIGFzIFRva2VuVHJhbnNmZXIpLnBhcmFtcy5mcm9tQWRkcmVzcywgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMCk7XG4gICAgICBzaG91bGQuZXF1YWwoKGluc3RydWN0aW9uc0RhdGFbMl0gYXMgVG9rZW5UcmFuc2ZlcikucGFyYW1zLnRvQWRkcmVzcywgZGVzdGluYXRpb25VU0RUVG9rZW5BY2NvdW50KTtcbiAgICAgIHNob3VsZC5lcXVhbCgoaW5zdHJ1Y3Rpb25zRGF0YVsyXSBhcyBUb2tlblRyYW5zZmVyKS5wYXJhbXMuYW1vdW50LCAnMjAwMDAwMDAwMCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzJdIGFzIFRva2VuVHJhbnNmZXIpLnBhcmFtcy50b2tlbk5hbWUsICd0c29sOnVzZHQnKTtcbiAgICAgIHNob3VsZC5lcXVhbCgoaW5zdHJ1Y3Rpb25zRGF0YVsyXSBhcyBUb2tlblRyYW5zZmVyKS5wYXJhbXMuc291cmNlQWRkcmVzcywgc291cmNlVVNEVFRva2VuQWNjb3VudCk7XG5cbiAgICAgIGNvbnN0IHNvbENvaW4gPSBiYXNlY29pbiBhcyBhbnk7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoc29sQ29pbi5nZXREYXRhRnJvbU5vZGUsIDcpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbGVkT25jZShnZXRUU1NTaWduYXR1cmVTcHkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIHNvbCAyMDIyIHRva2VucyB0byByZWNvdmVyeSBkZXN0aW5hdGlvbiB3aXRoIG5vIGV4aXN0aW5nIHRva2VuIGFjY291bnRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZ2V0VFNTU2lnbmF0dXJlU3B5ID0gc2FuZEJveC5zcHkoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJyk7XG5cbiAgICAgIGNvbnN0IHRva2VuVHhuID0gYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIHVzZXJLZXk6IHRlc3REYXRhLndyd1VzZXIudXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLndyd1VzZXIuYml0Z29LZXksXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiB0MjJtaW50QWRkcmVzcyxcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEud3J3VXNlci53YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICBkdXJhYmxlTm9uY2U6IHtcbiAgICAgICAgICBwdWJsaWNLZXk6IHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LFxuICAgICAgICAgIHNlY3JldEtleTogdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQcml2S2V5LFxuICAgICAgICB9LFxuICAgICAgICBwcm9ncmFtSWQ6ICdUb2tlbnpRZEJOYkxxUDVWRWhka0FTNkVQRkxDMVBIbkJxQ1hFcFB4dUViJyxcbiAgICAgIH0pO1xuXG4gICAgICB0b2tlblR4bi5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICB0b2tlblR4bi5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpO1xuICAgICAgdG9rZW5UeG4uc2hvdWxkLmhhc093blByb3BlcnR5KCdzY2FuSW5kZXgnKTtcbiAgICAgIHNob3VsZC5lcXVhbCgodG9rZW5UeG4gYXMgTVBDVHgpLnNjYW5JbmRleCwgMCk7XG5cbiAgICAgIGNvbnN0IHRva2VuVHhuRGVzZXJpYWxpemUgPSBuZXcgVHJhbnNhY3Rpb24oY29pbik7XG4gICAgICB0b2tlblR4bkRlc2VyaWFsaXplLmZyb21SYXdUcmFuc2FjdGlvbigodG9rZW5UeG4gYXMgTVBDVHgpLnNlcmlhbGl6ZWRUeCk7XG4gICAgICBjb25zdCB0b2tlblR4bkpzb24gPSB0b2tlblR4bkRlc2VyaWFsaXplLnRvSnNvbigpO1xuXG4gICAgICBzaG91bGQuZXF1YWwodG9rZW5UeG5Kc29uLm5vbmNlLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEuZHVyYWJsZU5vbmNlQmxvY2toYXNoKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0b2tlblR4bkpzb24uZmVlUGF5ZXIsIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczApO1xuICAgICAgc2hvdWxkLmVxdWFsKHRva2VuVHhuSnNvbi5udW1TaWduYXR1cmVzLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEuZHVyYWJsZU5vbmNlU2lnbmF0dXJlcyk7XG5cbiAgICAgIGNvbnN0IGluc3RydWN0aW9uc0RhdGEgPSB0b2tlblR4bkpzb24uaW5zdHJ1Y3Rpb25zRGF0YSBhcyBJbnN0cnVjdGlvblBhcmFtc1tdO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGEubGVuZ3RoLCAzKTtcbiAgICAgIHNob3VsZC5lcXVhbChpbnN0cnVjdGlvbnNEYXRhWzBdLnR5cGUsICdOb25jZUFkdmFuY2UnKTtcblxuICAgICAgY29uc3QgZGVzdGluYXRpb25Ub2tlbkFjY291bnQgPSBhd2FpdCBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyhcbiAgICAgICAgdDIybWludEFkZHJlc3MsXG4gICAgICAgIHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXlcbiAgICAgICk7XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YVsxXS50eXBlLCAnQ3JlYXRlQXNzb2NpYXRlZFRva2VuQWNjb3VudCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzFdIGFzIEF0YUluaXQpLnBhcmFtcy5taW50QWRkcmVzcywgdDIybWludEFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzFdIGFzIEF0YUluaXQpLnBhcmFtcy5hdGFBZGRyZXNzLCBkZXN0aW5hdGlvblRva2VuQWNjb3VudCk7XG4gICAgICBzaG91bGQuZXF1YWwoKGluc3RydWN0aW9uc0RhdGFbMV0gYXMgQXRhSW5pdCkucGFyYW1zLm93bmVyQWRkcmVzcywgdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleSk7XG4gICAgICBzaG91bGQuZXF1YWwoKGluc3RydWN0aW9uc0RhdGFbMV0gYXMgQXRhSW5pdCkucGFyYW1zLnRva2VuTmFtZSwgJ3Rzb2w6dDIybWludCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzFdIGFzIEF0YUluaXQpLnBhcmFtcy5wYXllckFkZHJlc3MsIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczApO1xuXG4gICAgICBjb25zdCBzb3VyY2VUb2tlbkFjY291bnQgPSBhd2FpdCBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyhcbiAgICAgICAgdDIybWludEFkZHJlc3MsXG4gICAgICAgIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczBcbiAgICAgICk7XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YVsyXS50eXBlLCAnVG9rZW5UcmFuc2ZlcicpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzJdIGFzIFRva2VuVHJhbnNmZXIpLnBhcmFtcy5mcm9tQWRkcmVzcywgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMCk7XG4gICAgICBzaG91bGQuZXF1YWwoKGluc3RydWN0aW9uc0RhdGFbMl0gYXMgVG9rZW5UcmFuc2ZlcikucGFyYW1zLnRvQWRkcmVzcywgZGVzdGluYXRpb25Ub2tlbkFjY291bnQpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzJdIGFzIFRva2VuVHJhbnNmZXIpLnBhcmFtcy5hbW91bnQsICcyMDAwMDAwMDAwJyk7XG4gICAgICBzaG91bGQuZXF1YWwoKGluc3RydWN0aW9uc0RhdGFbMl0gYXMgVG9rZW5UcmFuc2ZlcikucGFyYW1zLnRva2VuTmFtZSwgJ3Rzb2w6dDIybWludCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzJdIGFzIFRva2VuVHJhbnNmZXIpLnBhcmFtcy5zb3VyY2VBZGRyZXNzLCBzb3VyY2VUb2tlbkFjY291bnQpO1xuICAgICAgc2hvdWxkLmVxdWFsKFxuICAgICAgICAoaW5zdHJ1Y3Rpb25zRGF0YVsyXSBhcyBUb2tlblRyYW5zZmVyKS5wYXJhbXMucHJvZ3JhbUlkLFxuICAgICAgICAnVG9rZW56UWRCTmJMcVA1VkVoZGtBUzZFUEZMQzFQSG5CcUNYRXBQeHVFYidcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHNvbENvaW4gPSBiYXNlY29pbiBhcyBhbnk7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoc29sQ29pbi5nZXREYXRhRnJvbU5vZGUsIDcpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbGVkT25jZShnZXRUU1NTaWduYXR1cmVTcHkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIHNvbCB0b2tlbnMgdG8gcmVjb3ZlcnkgZGVzdGluYXRpb24gd2l0aCBleGlzdGluZyB0b2tlbiBhY2NvdW50cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGdldFRTU1NpZ25hdHVyZVNweSA9IHNhbmRCb3guc3B5KEVERFNBTWV0aG9kcywgJ2dldFRTU1NpZ25hdHVyZScpO1xuXG4gICAgICBjb25zdCB0b2tlblR4biA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXIoe1xuICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS53cndVc2VyLnVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEud3J3VXNlci5iYWNrdXBLZXksXG4gICAgICAgIGJpdGdvS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJpdGdvS2V5LFxuICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5rZXlzLmRlc3RpbmF0aW9uUHViS2V5MixcbiAgICAgICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IHVzZHRNaW50QWRkcmVzcyxcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEud3J3VXNlci53YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICBkdXJhYmxlTm9uY2U6IHtcbiAgICAgICAgICBwdWJsaWNLZXk6IHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LFxuICAgICAgICAgIHNlY3JldEtleTogdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQcml2S2V5LFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHRva2VuVHhuLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIHRva2VuVHhuLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2VyaWFsaXplZFR4Jyk7XG4gICAgICB0b2tlblR4bi5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NjYW5JbmRleCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKCh0b2tlblR4biBhcyBNUENUeCkuc2NhbkluZGV4LCAwKTtcblxuICAgICAgY29uc3QgdG9rZW5UeG5EZXNlcmlhbGl6ZSA9IG5ldyBUcmFuc2FjdGlvbihjb2luKTtcbiAgICAgIHRva2VuVHhuRGVzZXJpYWxpemUuZnJvbVJhd1RyYW5zYWN0aW9uKCh0b2tlblR4biBhcyBNUENUeCkuc2VyaWFsaXplZFR4KTtcbiAgICAgIGNvbnN0IHRva2VuVHhuSnNvbiA9IHRva2VuVHhuRGVzZXJpYWxpemUudG9Kc29uKCk7XG5cbiAgICAgIHNob3VsZC5lcXVhbCh0b2tlblR4bkpzb24ubm9uY2UsIHRlc3REYXRhLlNvbElucHV0RGF0YS5kdXJhYmxlTm9uY2VCbG9ja2hhc2gpO1xuICAgICAgc2hvdWxkLmVxdWFsKHRva2VuVHhuSnNvbi5mZWVQYXllciwgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMCk7XG4gICAgICBzaG91bGQuZXF1YWwodG9rZW5UeG5Kc29uLm51bVNpZ25hdHVyZXMsIHRlc3REYXRhLlNvbElucHV0RGF0YS5kdXJhYmxlTm9uY2VTaWduYXR1cmVzKTtcblxuICAgICAgY29uc3QgaW5zdHJ1Y3Rpb25zRGF0YSA9IHRva2VuVHhuSnNvbi5pbnN0cnVjdGlvbnNEYXRhIGFzIFRva2VuVHJhbnNmZXJbXTtcbiAgICAgIHNob3VsZC5lcXVhbChpbnN0cnVjdGlvbnNEYXRhLmxlbmd0aCwgMik7XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YVswXS50eXBlLCAnTm9uY2VBZHZhbmNlJyk7XG5cbiAgICAgIGNvbnN0IHNvdXJjZVVTRFRUb2tlbkFjY291bnQgPSBhd2FpdCBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyhcbiAgICAgICAgdXNkdE1pbnRBZGRyZXNzLFxuICAgICAgICB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MwXG4gICAgICApO1xuICAgICAgY29uc3QgZGVzdGluYXRpb25VU0RUVG9rZW5BY2NvdW50ID0gYXdhaXQgZ2V0QXNzb2NpYXRlZFRva2VuQWNjb3VudEFkZHJlc3MoXG4gICAgICAgIHVzZHRNaW50QWRkcmVzcyxcbiAgICAgICAgdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleTJcbiAgICAgICk7XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YVsxXS50eXBlLCAnVG9rZW5UcmFuc2ZlcicpO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGFbMV0ucGFyYW1zLmZyb21BZGRyZXNzLCB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MwKTtcbiAgICAgIHNob3VsZC5lcXVhbChpbnN0cnVjdGlvbnNEYXRhWzFdLnBhcmFtcy50b0FkZHJlc3MsIGRlc3RpbmF0aW9uVVNEVFRva2VuQWNjb3VudCk7XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YVsxXS5wYXJhbXMuYW1vdW50LCAnMjAwMDAwMDAwMCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGFbMV0ucGFyYW1zLnRva2VuTmFtZSwgJ3Rzb2w6dXNkdCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGFbMV0ucGFyYW1zLnNvdXJjZUFkZHJlc3MsIHNvdXJjZVVTRFRUb2tlbkFjY291bnQpO1xuXG4gICAgICBjb25zdCBzb2xDb2luID0gYmFzZWNvaW4gYXMgYW55O1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KHNvbENvaW4uZ2V0RGF0YUZyb21Ob2RlLCA3KTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxlZE9uY2UoZ2V0VFNTU2lnbmF0dXJlU3B5KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVjb3ZlciBzb2wgMjAyMiB0b2tlbnMgdG8gcmVjb3ZlcnkgZGVzdGluYXRpb24gd2l0aCBleGlzdGluZyB0b2tlbiBhY2NvdW50cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGdldFRTU1NpZ25hdHVyZVNweSA9IHNhbmRCb3guc3B5KEVERFNBTWV0aG9kcywgJ2dldFRTU1NpZ25hdHVyZScpO1xuXG4gICAgICBjb25zdCB0b2tlblR4biA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXIoe1xuICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS53cndVc2VyLnVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEud3J3VXNlci5iYWNrdXBLZXksXG4gICAgICAgIGJpdGdvS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJpdGdvS2V5LFxuICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5rZXlzLmRlc3RpbmF0aW9uUHViS2V5MixcbiAgICAgICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IHQyMm1pbnRBZGRyZXNzLFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS53cndVc2VyLndhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIGR1cmFibGVOb25jZToge1xuICAgICAgICAgIHB1YmxpY0tleTogdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQdWJLZXksXG4gICAgICAgICAgc2VjcmV0S2V5OiB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVByaXZLZXksXG4gICAgICAgIH0sXG4gICAgICAgIHByb2dyYW1JZDogVE9LRU5fMjAyMl9QUk9HUkFNX0lELnRvU3RyaW5nKCksXG4gICAgICB9KTtcblxuICAgICAgdG9rZW5UeG4uc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgdG9rZW5UeG4uc2hvdWxkLmhhc093blByb3BlcnR5KCdzZXJpYWxpemVkVHgnKTtcbiAgICAgIHRva2VuVHhuLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2NhbkluZGV4Jyk7XG4gICAgICBzaG91bGQuZXF1YWwoKHRva2VuVHhuIGFzIE1QQ1R4KS5zY2FuSW5kZXgsIDApO1xuXG4gICAgICBjb25zdCB0b2tlblR4bkRlc2VyaWFsaXplID0gbmV3IFRyYW5zYWN0aW9uKGNvaW4pO1xuICAgICAgdG9rZW5UeG5EZXNlcmlhbGl6ZS5mcm9tUmF3VHJhbnNhY3Rpb24oKHRva2VuVHhuIGFzIE1QQ1R4KS5zZXJpYWxpemVkVHgpO1xuICAgICAgY29uc3QgdG9rZW5UeG5Kc29uID0gdG9rZW5UeG5EZXNlcmlhbGl6ZS50b0pzb24oKTtcbiAgICAgIGNvbnNvbGUubG9nKHRva2VuVHhuSnNvbik7XG4gICAgICBzaG91bGQuZXF1YWwodG9rZW5UeG5Kc29uLm5vbmNlLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEuZHVyYWJsZU5vbmNlQmxvY2toYXNoKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0b2tlblR4bkpzb24uZmVlUGF5ZXIsIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczApO1xuICAgICAgc2hvdWxkLmVxdWFsKHRva2VuVHhuSnNvbi5udW1TaWduYXR1cmVzLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEuZHVyYWJsZU5vbmNlU2lnbmF0dXJlcyk7XG5cbiAgICAgIGNvbnN0IGluc3RydWN0aW9uc0RhdGEgPSB0b2tlblR4bkpzb24uaW5zdHJ1Y3Rpb25zRGF0YSBhcyBUb2tlblRyYW5zZmVyW107XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YS5sZW5ndGgsIDIpO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGFbMF0udHlwZSwgJ05vbmNlQWR2YW5jZScpO1xuXG4gICAgICBjb25zdCBzb3VyY2UyMDIyVG9rZW5BY2NvdW50ID0gYXdhaXQgZ2V0QXNzb2NpYXRlZFRva2VuQWNjb3VudEFkZHJlc3MoXG4gICAgICAgIHQyMm1pbnRBZGRyZXNzLFxuICAgICAgICB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MwLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgVE9LRU5fMjAyMl9QUk9HUkFNX0lELnRvU3RyaW5nKClcbiAgICAgICk7XG4gICAgICBjb25zdCBkZXN0aW5hdGlvbjIwMjJUb2tlbkFjY291bnQgPSBhd2FpdCBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyhcbiAgICAgICAgdDIybWludEFkZHJlc3MsXG4gICAgICAgIHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXkyLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgVE9LRU5fMjAyMl9QUk9HUkFNX0lELnRvU3RyaW5nKClcbiAgICAgICk7XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YVsxXS50eXBlLCAnVG9rZW5UcmFuc2ZlcicpO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGFbMV0ucGFyYW1zLmZyb21BZGRyZXNzLCB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MwKTtcbiAgICAgIHNob3VsZC5lcXVhbChpbnN0cnVjdGlvbnNEYXRhWzFdLnBhcmFtcy50b0FkZHJlc3MsIGRlc3RpbmF0aW9uMjAyMlRva2VuQWNjb3VudCk7XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YVsxXS5wYXJhbXMuYW1vdW50LCAnMjAwMDAwMDAwMCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGFbMV0ucGFyYW1zLnRva2VuTmFtZSwgJ3Rzb2w6dDIybWludCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGFbMV0ucGFyYW1zLnNvdXJjZUFkZHJlc3MsIHNvdXJjZTIwMjJUb2tlbkFjY291bnQpO1xuICAgICAgY29uc3Qgc29sQ29pbiA9IGJhc2Vjb2luIGFzIGFueTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChzb2xDb2luLmdldERhdGFGcm9tTm9kZSwgNyk7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsZWRPbmNlKGdldFRTU1NpZ25hdHVyZVNweSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlY292ZXIgc29sIHRva2VucyB0byByZWNvdmVyeSBkZXN0aW5hdGlvbiB3aXRoIGV4aXN0aW5nIHRva2VuIGFjY291bnRzIGZvciB1bnNpZ25lZCBzd2VlcCByZWNvdmVyaWVzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZmVlUmVzcG9uc2UgPSB0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0RmVlc0Zvck1lc3NhZ2VSZXNwb25zZTtcbiAgICAgIGZlZVJlc3BvbnNlLmJvZHkucmVzdWx0LnZhbHVlID0gMTAwMDA7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEZlZUZvck1lc3NhZ2UnLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHNpbm9uLm1hdGNoLnN0cmluZyxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbW1pdG1lbnQ6ICdmaW5hbGl6ZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXMoZmVlUmVzcG9uc2UpO1xuXG4gICAgICBjb25zdCB0b2tlblR4biA9IChhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHtcbiAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLndyd1VzZXIuYml0Z29LZXksXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXkyLFxuICAgICAgICBkdXJhYmxlTm9uY2U6IHtcbiAgICAgICAgICBwdWJsaWNLZXk6IHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LFxuICAgICAgICAgIHNlY3JldEtleTogdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQcml2S2V5LFxuICAgICAgICB9LFxuICAgICAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogdGVzdERhdGEudG9rZW5BZGRyZXNzLlRlc3RVU0RDLFxuICAgICAgfSkpIGFzIE1QQ1N3ZWVwVHhzO1xuXG4gICAgICAvLyAyIHNpZ25hdHVyZXMgYW5kIG5vIHJlbnQgZXhlbXB0aW9uIGZlZSBzaW5jZSB0aGUgZGVzdGluYXRpb24gYWxyZWFkeSBoYXMgdG9rZW4gYWNjb3VudHNcbiAgICAgIGNvbnN0IGV4cGVjdGVkRmVlID0gNTAwMCArIDUwMDA7XG5cbiAgICAgIGNvbnN0IHsgc2VyaWFsaXplZFR4LCBzY2FuSW5kZXgsIGZlZUluZm8sIHBhcnNlZFR4IH0gPSB0b2tlblR4bi50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4O1xuICAgICAgYXNzZXJ0Lm9rKHNlcmlhbGl6ZWRUeCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2NhbkluZGV4LCAwKTtcbiAgICAgIGFzc2VydC5vayhmZWVJbmZvKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChmZWVJbmZvLmZlZVN0cmluZywgZXhwZWN0ZWRGZWUudG9TdHJpbmcoKSk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZmVlSW5mby5mZWUsIGV4cGVjdGVkRmVlKTtcbiAgICAgIGFzc2VydC5vayhwYXJzZWRUeCk7XG4gICAgICBhc3NlcnQub2socGFyc2VkVHguaW5wdXRzIGluc3RhbmNlb2YgQXJyYXkgJiYgcGFyc2VkVHguaW5wdXRzLmxlbmd0aCA9PT0gMSk7XG4gICAgICBhc3NlcnQub2socGFyc2VkVHgub3V0cHV0cyBpbnN0YW5jZW9mIEFycmF5ICYmIHBhcnNlZFR4Lm91dHB1dHMubGVuZ3RoID09PSAxKTtcblxuICAgICAgY29uc3QgdG9rZW5UeG5EZXNlcmlhbGl6ZSA9IG5ldyBUcmFuc2FjdGlvbihjb2luKTtcbiAgICAgIHRva2VuVHhuRGVzZXJpYWxpemUuZnJvbVJhd1RyYW5zYWN0aW9uKHRva2VuVHhuLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguc2VyaWFsaXplZFR4KTtcbiAgICAgIGNvbnN0IHRva2VuVHhuSnNvbiA9IHRva2VuVHhuRGVzZXJpYWxpemUudG9Kc29uKCk7XG5cbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0b2tlblR4bkpzb24ubm9uY2UsIHRlc3REYXRhLlNvbElucHV0RGF0YS5kdXJhYmxlTm9uY2VCbG9ja2hhc2gpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRva2VuVHhuSnNvbi5mZWVQYXllciwgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodG9rZW5UeG5Kc29uLm51bVNpZ25hdHVyZXMsIHRlc3REYXRhLlNvbElucHV0RGF0YS51bnNpZ25lZFN3ZWVwU2lnbmF0dXJlcyk7XG4gICAgICBjb25zdCBzb2xDb2luID0gYmFzZWNvaW4gYXMgYW55O1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KHNvbENvaW4uZ2V0RGF0YUZyb21Ob2RlLCA3KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVjb3ZlciBzb2wgZnVuZHMgZnJvbSBBVEEgYWRkcmVzcyBmb3Igbm9uLWJpdGdvIHJlY292ZXJpZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBnZXRUU1NTaWduYXR1cmVTcHkgPSBzYW5kQm94LnNweShFRERTQU1ldGhvZHMsICdnZXRUU1NTaWduYXR1cmUnKTtcblxuICAgICAgY29uc3QgY2xvc2VBVEFUeG5zID0gYXdhaXQgYmFzZWNvaW4ucmVjb3ZlckNsb3NlQVRBKHtcbiAgICAgICAgdXNlcktleTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLnVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iaXRnb0tleSxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmRlc3RpbmF0aW9uUHViS2V5LFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMud2FsbGV0UGFzc3dvcmQsXG4gICAgICAgIGNsb3NlQXRhQWRkcmVzczogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmNsb3NlQXRhQWRkcmVzcyxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbkF0YUFkZHJlc3M6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5yZWNvdmVyeURlc3RpbmF0aW9uQXRhQWRkcmVzcyxcbiAgICAgIH0pO1xuICAgICAgY2xvc2VBVEFUeG5zLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIHNob3VsZC5lcXVhbChcbiAgICAgICAgY2xvc2VBVEFUeG5zWzBdLnR4SWQsXG4gICAgICAgICcyaWQzWUMyaks5RzVXbzJwaER4NGdKVkFldzhEY1k1TkFvam5WdWFvOHJreHdQWVBlOGNTd0U1R3poRWdKQTJ5OGZWakRFbzZpUjZ5a0J2RHhyVFFydHBiJ1xuICAgICAgKTtcbiAgICAgIHNob3VsZC5lcXVhbChcbiAgICAgICAgY2xvc2VBVEFUeG5zWzFdLnR4SWQsXG4gICAgICAgICc1b1VCZ1hYNGVuR21GRXNwRzY0Z295M1BSeXNqZnJla1pHZzNyWk5rQkhVQ1FGZDQ4MnZyVldiZkRjUllNQkVKdDY1Slh5bWZFUG04TTZkODlYNHhWNzluJ1xuICAgICAgKTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxlZFR3aWNlKGdldFRTU1NpZ25hdHVyZVNweSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHNpZ24gcmVjb3ZlckNsb3NlQVRBIHZpYSBzaWduQW5kR2VuZXJhdGVCcm9hZGNhc3RhYmxlVHJhbnNhY3Rpb24gd2l0aCBNUEN2MSBrZXlzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZ2V0VFNTU2lnbmF0dXJlU3B5ID0gc2FuZEJveC5zcHkoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJyk7XG4gICAgICBjb25zdCBmYWN0b3J5ID0gKGJhc2Vjb2luIGFzIGFueSkuZ2V0QnVpbGRlcigpO1xuICAgICAgY29uc3QgYmxvY2toYXNoID0gdGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEJsb2NraGFzaFJlc3BvbnNlLmJvZHkucmVzdWx0LnZhbHVlLmJsb2NraGFzaDtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0Q2xvc2VBdGFJbml0aWFsaXphdGlvbkJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5ub25jZShibG9ja2hhc2gpO1xuICAgICAgdHhCdWlsZGVyLnNlbmRlcih0ZXN0RGF0YS5jbG9zZUFUQWtleXMuYnM1OEVuY29kZWRQdWJsaWNLZXkpO1xuICAgICAgdHhCdWlsZGVyLmFjY291bnRBZGRyZXNzKHRlc3REYXRhLmNsb3NlQVRBa2V5cy5jbG9zZUF0YUFkZHJlc3MpO1xuICAgICAgdHhCdWlsZGVyLmRlc3RpbmF0aW9uQWRkcmVzcyh0ZXN0RGF0YS5jbG9zZUFUQWtleXMuZGVzdGluYXRpb25QdWJLZXkpO1xuICAgICAgdHhCdWlsZGVyLmF1dGhvcml0eUFkZHJlc3ModGVzdERhdGEuY2xvc2VBVEFrZXlzLmJzNThFbmNvZGVkUHVibGljS2V5KTtcbiAgICAgIHR4QnVpbGRlci5hc3NvY2lhdGVkVG9rZW5BY2NvdW50UmVudCgnMjAzOTI4MCcpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi5zaWduQW5kR2VuZXJhdGVCcm9hZGNhc3RhYmxlVHJhbnNhY3Rpb24oXG4gICAgICAgIHtcbiAgICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMudXNlcktleSxcbiAgICAgICAgICBiYWNrdXBLZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iYWNrdXBLZXksXG4gICAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iaXRnb0tleSxcbiAgICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLndhbGxldFBhc3N3b3JkLFxuICAgICAgICAgIGNsb3NlQXRhQWRkcmVzczogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmNsb3NlQXRhQWRkcmVzcyxcbiAgICAgICAgfSxcbiAgICAgICAgdHhCdWlsZGVyLFxuICAgICAgICB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuYnM1OEVuY29kZWRQdWJsaWNLZXksXG4gICAgICAgIGZhbHNlXG4gICAgICApO1xuXG4gICAgICByZXN1bHQuc2hvdWxkLmhhc093blByb3BlcnR5KCdzZXJpYWxpemVkVHgnKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NjYW5JbmRleCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKHJlc3VsdC5zY2FuSW5kZXgsIDApO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbGVkT25jZShnZXRUU1NTaWduYXR1cmVTcHkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIHRva2VucyBmcm9tIGEgbmVzdGVkIEFUQSAoQVRBIHdob3NlIG93bmVyIGlzIGFub3RoZXIgQVRBKScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXJOZXN0ZWRBdGEoe1xuICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMudXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuYmFja3VwS2V5LFxuICAgICAgICBiaXRnb0tleTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmJpdGdvS2V5LFxuICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2U6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy53YWxsZXRQYXNzd29yZCxcbiAgICAgICAgbmVzdGVkQXRhQWRkcmVzczogJ0ZHdVpTQmh0cmVxU1VzRTg2eG9reWpLejJpOFZCdEp6eTZ1TVhYS3lHSHVnJyxcbiAgICAgICAgb3duZXJBdGFBZGRyZXNzOiAnWmZtOThacFZhZnlkaEZUWWNzWTZiSGd1YmhCNGNGZ1dGdmJkRUp4WWhUQScsXG4gICAgICAgIHRva2VuTWludEFkZHJlc3M6ICdaQkNOcHVEN1lNWHpUSEIyZmhHa0dpNzhNTnNIR0xSWFVoUmV3TlJtOVJVJyxcbiAgICAgIH0pO1xuXG4gICAgICByZXN1bHQuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgc2hvdWxkLmVxdWFsKFxuICAgICAgICByZXN1bHQudHhJZCxcbiAgICAgICAgJzJpZDNZQzJqSzlHNVdvMnBoRHg0Z0pWQWV3OERjWTVOQW9qblZ1YW84cmt4d1BZUGU4Y1N3RTVHemhFZ0pBMnk4ZlZqREVvNmlSNnlrQnZEeHJUUXJ0cGInXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIG5lc3RlZEF0YUFkZHJlc3MgaXMgbWlzc2luZyBmb3IgcmVjb3Zlck5lc3RlZEF0YScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC5yZWNvdmVyTmVzdGVkQXRhKHtcbiAgICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMudXNlcktleSxcbiAgICAgICAgICBiYWNrdXBLZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iYWNrdXBLZXksXG4gICAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iaXRnb0tleSxcbiAgICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLndhbGxldFBhc3N3b3JkLFxuICAgICAgICAgIG93bmVyQXRhQWRkcmVzczogJ1pmbTk4WnBWYWZ5ZGhGVFljc1k2YkhndWJoQjRjRmdXRnZiZEVKeFloVEEnLFxuICAgICAgICAgIHRva2VuTWludEFkZHJlc3M6ICdaQkNOcHVEN1lNWHpUSEIyZmhHa0dpNzhNTnNIR0xSWFVoUmV3TlJtOVJVJyxcbiAgICAgICAgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ2ludmFsaWQgbmVzdGVkQXRhQWRkcmVzcycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIG93bmVyQXRhQWRkcmVzcyBpcyBtaXNzaW5nIGZvciByZWNvdmVyTmVzdGVkQXRhJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnJlY292ZXJOZXN0ZWRBdGEoe1xuICAgICAgICAgIHVzZXJLZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy51c2VyS2V5LFxuICAgICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmJhY2t1cEtleSxcbiAgICAgICAgICBiaXRnb0tleTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmJpdGdvS2V5LFxuICAgICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5kZXN0aW5hdGlvblB1YktleSxcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMud2FsbGV0UGFzc3dvcmQsXG4gICAgICAgICAgbmVzdGVkQXRhQWRkcmVzczogJ0ZHdVpTQmh0cmVxU1VzRTg2eG9reWpLejJpOFZCdEp6eTZ1TVhYS3lHSHVnJyxcbiAgICAgICAgICB0b2tlbk1pbnRBZGRyZXNzOiAnWkJDTnB1RDdZTVh6VEhCMmZoR2tHaTc4TU5zSEdMUlhVaFJld05SbTlSVScsXG4gICAgICAgIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdpbnZhbGlkIG93bmVyQXRhQWRkcmVzcycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIHRva2VuTWludEFkZHJlc3MgaXMgbWlzc2luZyBmb3IgcmVjb3Zlck5lc3RlZEF0YScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC5yZWNvdmVyTmVzdGVkQXRhKHtcbiAgICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMudXNlcktleSxcbiAgICAgICAgICBiYWNrdXBLZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iYWNrdXBLZXksXG4gICAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iaXRnb0tleSxcbiAgICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLndhbGxldFBhc3N3b3JkLFxuICAgICAgICAgIG5lc3RlZEF0YUFkZHJlc3M6ICdGR3VaU0JodHJlcVNVc0U4Nnhva3lqS3oyaThWQnRKenk2dU1YWEt5R0h1ZycsXG4gICAgICAgICAgb3duZXJBdGFBZGRyZXNzOiAnWmZtOThacFZhZnlkaEZUWWNzWTZiSGd1YmhCNGNGZ1dGdmJkRUp4WWhUQScsXG4gICAgICAgIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdpbnZhbGlkIHRva2VuTWludEFkZHJlc3MnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1JlY292ZXIgVHJhbnNhY3Rpb25zIChNUEN2Mik6JywgKCkgPT4ge1xuICAgIGNvbnN0IG1wY1YyU2FuZEJveCA9IHNpbm9uLmNyZWF0ZVNhbmRib3goKTtcbiAgICBjb25zdCB1c2R0TWludEFkZHJlc3MgPSAnOWNncEJlTloySG5MZGE3TldhYVUxaTNOeVRzdGsyYzR6Q01VY29BR3NpOUMnO1xuICAgIGNvbnN0IHQyMm1pbnRBZGRyZXNzID0gJzVOUjFiUXdMV3FqYmtoYlExaHg3MkhLSnliYnV2d2tEblVaTm9BWjJWaFc2JztcbiAgICBjb25zdCB0b2tlbjIyUHJvZ3JhbUlkID0gJ1Rva2VuelFkQk5iTHFQNVZFaGRrQVM2RVBGTEMxUEhuQnFDWEVwUHh1RWInO1xuICAgIGxldCBjYWxsQmFjazogc2lub24uU2lub25TdHViO1xuICAgIGxldCBtcGNWMlVzZXJLZXk6IHN0cmluZztcbiAgICBsZXQgbXBjVjJCYWNrdXBLZXk6IHN0cmluZztcbiAgICBsZXQgbXBjVjJDb21tb25LZXlDaGFpbjogc3RyaW5nO1xuICAgIGxldCBtcGNWMldhbGxldEFkZHJlc3M6IHN0cmluZztcbiAgICBsZXQgbXBjVjJUb2tlblVzZXJLZXk6IHN0cmluZztcbiAgICBsZXQgbXBjVjJUb2tlbkJhY2t1cEtleTogc3RyaW5nO1xuICAgIGxldCBtcGNWMlRva2VuQ29tbW9uS2V5Q2hhaW46IHN0cmluZztcbiAgICBsZXQgbXBjVjJUb2tlbldhbGxldEFkZHJlc3M6IHN0cmluZztcbiAgICBsZXQgbWlzbWF0Y2hlZEJpdGdvS2V5OiBzdHJpbmc7XG4gICAgbGV0IG1pc21hdGNoZWRXYWxsZXRBZGRyZXNzOiBzdHJpbmc7XG4gICAgbGV0IG1wY1YyUmVjb3ZlclBhcmFtczogU29sUmVjb3ZlcnlPcHRpb25zO1xuICAgIGxldCBtcGNWMlRva2VuUmVjb3ZlclBhcmFtczogU29sUmVjb3ZlcnlPcHRpb25zO1xuICAgIGxldCBjbG9zZUF0YU1wY1YyUGFyYW1zOiBTb2xSZWNvdmVyeU9wdGlvbnM7XG5cbiAgICBiZWZvcmUoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgW3VzZXJEa2csIGJhY2t1cERrZ10gPSBhd2FpdCBNUFNVdGlsLmdlbmVyYXRlRWREc2FES0dLZXlTaGFyZXMoKTtcbiAgICAgIGNvbnN0IFt0b2tlblVzZXJEa2csIHRva2VuQmFja3VwRGtnXSA9IGF3YWl0IE1QU1V0aWwuZ2VuZXJhdGVFZERzYURLR0tleVNoYXJlcygpO1xuICAgICAgY29uc3QgW290aGVyVXNlckRrZ10gPSBhd2FpdCBNUFNVdGlsLmdlbmVyYXRlRWREc2FES0dLZXlTaGFyZXMoKTtcbiAgICAgIGNvbnN0IHdhbGxldFBhc3NwaHJhc2UgPSB0ZXN0RGF0YS5rZXlzLndhbGxldFBhc3N3b3JkO1xuXG4gICAgICBtcGNWMlVzZXJLZXkgPSBhd2FpdCBlbmNyeXB0KHdhbGxldFBhc3NwaHJhc2UsIHVzZXJEa2cuZ2V0UmVkdWNlZEtleVNoYXJlKCkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgICAgIG1wY1YyQmFja3VwS2V5ID0gYXdhaXQgZW5jcnlwdCh3YWxsZXRQYXNzcGhyYXNlLCBiYWNrdXBEa2cuZ2V0UmVkdWNlZEtleVNoYXJlKCkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgICAgIG1wY1YyQ29tbW9uS2V5Q2hhaW4gPSB1c2VyRGtnLmdldENvbW1vbktleWNoYWluKCk7XG4gICAgICBjb25zdCBtcGMgPSBhd2FpdCBFRERTQU1ldGhvZHMuZ2V0SW5pdGlhbGl6ZWRNcGNJbnN0YW5jZSgpO1xuICAgICAgbXBjVjJXYWxsZXRBZGRyZXNzID0gbmV3IEtleVBhaXIoe1xuICAgICAgICBwdWI6IG1wYy5kZXJpdmVVbmhhcmRlbmVkKG1wY1YyQ29tbW9uS2V5Q2hhaW4sICdtLzAnKS5zbGljZSgwLCA2NCksXG4gICAgICB9KS5nZXRBZGRyZXNzKCk7XG4gICAgICBtaXNtYXRjaGVkQml0Z29LZXkgPSBvdGhlclVzZXJEa2cuZ2V0Q29tbW9uS2V5Y2hhaW4oKTtcbiAgICAgIG1pc21hdGNoZWRXYWxsZXRBZGRyZXNzID0gbmV3IEtleVBhaXIoe1xuICAgICAgICBwdWI6IG1wYy5kZXJpdmVVbmhhcmRlbmVkKG1pc21hdGNoZWRCaXRnb0tleSwgJ20vMCcpLnNsaWNlKDAsIDY0KSxcbiAgICAgIH0pLmdldEFkZHJlc3MoKTtcblxuICAgICAgbXBjVjJUb2tlblVzZXJLZXkgPSBhd2FpdCBlbmNyeXB0KHdhbGxldFBhc3NwaHJhc2UsIHRva2VuVXNlckRrZy5nZXRSZWR1Y2VkS2V5U2hhcmUoKS50b1N0cmluZygnYmFzZTY0JykpO1xuICAgICAgbXBjVjJUb2tlbkJhY2t1cEtleSA9IGF3YWl0IGVuY3J5cHQod2FsbGV0UGFzc3BocmFzZSwgdG9rZW5CYWNrdXBEa2cuZ2V0UmVkdWNlZEtleVNoYXJlKCkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgICAgIG1wY1YyVG9rZW5Db21tb25LZXlDaGFpbiA9IHRva2VuVXNlckRrZy5nZXRDb21tb25LZXljaGFpbigpO1xuICAgICAgbXBjVjJUb2tlbldhbGxldEFkZHJlc3MgPSBuZXcgS2V5UGFpcih7XG4gICAgICAgIHB1YjogbXBjLmRlcml2ZVVuaGFyZGVuZWQobXBjVjJUb2tlbkNvbW1vbktleUNoYWluLCAnbS8wJykuc2xpY2UoMCwgNjQpLFxuICAgICAgfSkuZ2V0QWRkcmVzcygpO1xuXG4gICAgICBtcGNWMlJlY292ZXJQYXJhbXMgPSB7XG4gICAgICAgIHVzZXJLZXk6IG1wY1YyVXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiBtcGNWMkJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IG1wY1YyQ29tbW9uS2V5Q2hhaW4sXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICB9O1xuICAgICAgbXBjVjJUb2tlblJlY292ZXJQYXJhbXMgPSB7XG4gICAgICAgIHVzZXJLZXk6IG1wY1YyVG9rZW5Vc2VyS2V5LFxuICAgICAgICBiYWNrdXBLZXk6IG1wY1YyVG9rZW5CYWNrdXBLZXksXG4gICAgICAgIGJpdGdvS2V5OiBtcGNWMlRva2VuQ29tbW9uS2V5Q2hhaW4sXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiB1c2R0TWludEFkZHJlc3MsXG4gICAgICAgIGR1cmFibGVOb25jZToge1xuICAgICAgICAgIHB1YmxpY0tleTogdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQdWJLZXksXG4gICAgICAgICAgc2VjcmV0S2V5OiB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVByaXZLZXksXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgY2xvc2VBdGFNcGNWMlBhcmFtcyA9IHtcbiAgICAgICAgdXNlcktleTogbXBjVjJVc2VyS2V5LFxuICAgICAgICBiYWNrdXBLZXk6IG1wY1YyQmFja3VwS2V5LFxuICAgICAgICBiaXRnb0tleTogbXBjVjJDb21tb25LZXlDaGFpbixcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmRlc3RpbmF0aW9uUHViS2V5LFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICBjbG9zZUF0YUFkZHJlc3M6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5jbG9zZUF0YUFkZHJlc3MsXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb25BdGFBZGRyZXNzOiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMucmVjb3ZlcnlEZXN0aW5hdGlvbkF0YUFkZHJlc3MsXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICBjYWxsQmFjayA9IG1wY1YyU2FuZEJveC5zdHViKFNvbC5wcm90b3R5cGUsICdnZXREYXRhRnJvbU5vZGUnIGFzIGtleW9mIFNvbCk7XG5cbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDogeyBpZDogJzEnLCBqc29ucnBjOiAnMi4wJywgbWV0aG9kOiAnZ2V0TGF0ZXN0QmxvY2toYXNoJywgcGFyYW1zOiBbeyBjb21taXRtZW50OiAnZmluYWxpemVkJyB9XSB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEJsb2NraGFzaFJlc3BvbnNlKTtcblxuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7IGlkOiAnMScsIGpzb25ycGM6ICcyLjAnLCBtZXRob2Q6ICdnZXRCYWxhbmNlJywgcGFyYW1zOiBbbXBjVjJXYWxsZXRBZGRyZXNzXSB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2UpO1xuXG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEZlZUZvck1lc3NhZ2UnLFxuICAgICAgICAgICAgcGFyYW1zOiBbc2lub24ubWF0Y2guc3RyaW5nLCB7IGNvbW1pdG1lbnQ6ICdmaW5hbGl6ZWQnIH1dLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0RmVlc0Zvck1lc3NhZ2VSZXNwb25zZSk7XG5cbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7IHBheWxvYWQ6IHsgaWQ6ICcxJywganNvbnJwYzogJzIuMCcsIG1ldGhvZDogJ2dldE1pbmltdW1CYWxhbmNlRm9yUmVudEV4ZW1wdGlvbicsIHBhcmFtczogWzE2NV0gfSB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldE1pbmltdW1CYWxhbmNlRm9yUmVudEV4ZW1wdGlvblJlc3BvbnNlKTtcblxuICAgICAgbXBjVjJTYW5kQm94LnN0dWIoVHJhbnNhY3Rpb24ucHJvdG90eXBlLCAndG9Ccm9hZGNhc3RGb3JtYXQnKS5yZXR1cm5zKCdzdHViLXNlcmlhbGl6ZWQtdHgnKTtcbiAgICB9KTtcblxuICAgIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgICBtcGNWMlNhbmRCb3gucmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByb3V0ZSB0byBNUEN2MiBwYXRoIGZvciBuYXRpdmUgU09MIHJlY292ZXJ5IHdoZW4ga2V5Y2FyZCBpcyBNUEN2MicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGdldFRTU1NpZ25hdHVyZVNweSA9IG1wY1YyU2FuZEJveC5zcHkoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJyk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXIobXBjVjJSZWNvdmVyUGFyYW1zKTtcblxuICAgICAgcmVzdWx0LnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpO1xuICAgICAgcmVzdWx0LnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2NhbkluZGV4Jyk7XG4gICAgICBzaG91bGQuZXF1YWwoKHJlc3VsdCBhcyBNUENUeCkuc2NhbkluZGV4LCAwKTtcbiAgICAgIHNob3VsZC5lcXVhbChcbiAgICAgICAgY2FsbEJhY2suZ2V0Q2FsbHMoKS5maW5kKChjYWxsKSA9PiBjYWxsLmFyZ3NbMF0/LnBheWxvYWQ/Lm1ldGhvZCA9PT0gJ2dldEJhbGFuY2UnKT8uYXJnc1swXS5wYXlsb2FkLnBhcmFtc1swXSxcbiAgICAgICAgbXBjVjJXYWxsZXRBZGRyZXNzXG4gICAgICApO1xuICAgICAgbXBjVjJTYW5kQm94LmFzc2VydC5ub3RDYWxsZWQoZ2V0VFNTU2lnbmF0dXJlU3B5KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgd2hlbiBNUEN2MiBjb21tb25LZXlDaGFpbiBkb2VzIG5vdCBtYXRjaCBiaXRnb0tleScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7IHBheWxvYWQ6IHsgaWQ6ICcxJywganNvbnJwYzogJzIuMCcsIG1ldGhvZDogJ2dldEJhbGFuY2UnLCBwYXJhbXM6IFttaXNtYXRjaGVkV2FsbGV0QWRkcmVzc10gfSB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2UpO1xuXG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAucmVjb3Zlcih7IC4uLm1wY1YyUmVjb3ZlclBhcmFtcywgYml0Z29LZXk6IG1pc21hdGNoZWRCaXRnb0tleSB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnRWREU0EgTVBDdjIgcmVjb3Zlcnk6IGNvbW1vbktleUNoYWluIGZyb20ga2V5Y2FyZCBkb2VzIG5vdCBtYXRjaCBiaXRnb0tleScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByb3V0ZSB0byBNUEN2MiBwYXRoIGZvciBTUEwgdG9rZW4gcmVjb3Zlcnkgd2hlbiBrZXljYXJkIGlzIE1QQ3YyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHsgcGF5bG9hZDogeyBpZDogJzEnLCBqc29ucnBjOiAnMi4wJywgbWV0aG9kOiAnZ2V0QmFsYW5jZScsIHBhcmFtczogW21wY1YyVG9rZW5XYWxsZXRBZGRyZXNzXSB9IH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEJhbGFuY2VSZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldFRva2VuQWNjb3VudHNCeU93bmVyJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICBtcGNWMlRva2VuV2FsbGV0QWRkcmVzcyxcbiAgICAgICAgICAgICAgeyBwcm9ncmFtSWQ6ICdUb2tlbmtlZ1FmZVp5aU53QUpiTmJHS1BGWENXdUJ2ZjlTczYyM1ZRNURBJyB9LFxuICAgICAgICAgICAgICB7IGVuY29kaW5nOiAnanNvblBhcnNlZCcgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lclJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgICAgICAgIHsgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScgfSxcbiAgICAgICAgICAgICAgeyBlbmNvZGluZzogJ2pzb25QYXJzZWQnIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0VG9rZW5BY2NvdW50c0J5T3duZXJSZXNwb25zZU5vQWNjb3VudHMpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRBY2NvdW50SW5mbycsXG4gICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVB1YktleSwgeyBlbmNvZGluZzogJ2pzb25QYXJzZWQnIH1dLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEluZm9SZXNwb25zZSk7XG5cbiAgICAgIGNvbnN0IGdldFRTU1NpZ25hdHVyZVNweSA9IG1wY1YyU2FuZEJveC5zcHkoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJyk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXIobXBjVjJUb2tlblJlY292ZXJQYXJhbXMpO1xuXG4gICAgICByZXN1bHQuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgcmVzdWx0LnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2VyaWFsaXplZFR4Jyk7XG4gICAgICByZXN1bHQuc2hvdWxkLmhhc093blByb3BlcnR5KCdzY2FuSW5kZXgnKTtcbiAgICAgIHNob3VsZC5lcXVhbCgocmVzdWx0IGFzIE1QQ1R4KS5zY2FuSW5kZXgsIDApO1xuICAgICAgbXBjVjJTYW5kQm94LmFzc2VydC5ub3RDYWxsZWQoZ2V0VFNTU2lnbmF0dXJlU3B5KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcm91dGUgdG8gTVBDdjIgcGF0aCBmb3IgVG9rZW4tMjAyMiByZWNvdmVyeSBhbmQgcHJlc2VydmUgcHJvZ3JhbUlkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHsgcGF5bG9hZDogeyBpZDogJzEnLCBqc29ucnBjOiAnMi4wJywgbWV0aG9kOiAnZ2V0QmFsYW5jZScsIHBhcmFtczogW21wY1YyVG9rZW5XYWxsZXRBZGRyZXNzXSB9IH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEJhbGFuY2VSZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldFRva2VuQWNjb3VudHNCeU93bmVyJyxcbiAgICAgICAgICAgIHBhcmFtczogW21wY1YyVG9rZW5XYWxsZXRBZGRyZXNzLCB7IHByb2dyYW1JZDogdG9rZW4yMlByb2dyYW1JZCB9LCB7IGVuY29kaW5nOiAnanNvblBhcnNlZCcgfV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lckZvclNvbDIwMjJSZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldFRva2VuQWNjb3VudHNCeU93bmVyJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Rlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXksIHsgcHJvZ3JhbUlkOiB0b2tlbjIyUHJvZ3JhbUlkIH0sIHsgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyB9XSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyUmVzcG9uc2VOb0FjY291bnRzKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QWNjb3VudEluZm8nLFxuICAgICAgICAgICAgcGFyYW1zOiBbdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQdWJLZXksIHsgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyB9XSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRJbmZvUmVzcG9uc2UpO1xuXG4gICAgICBjb25zdCBnZXRUU1NTaWduYXR1cmVTcHkgPSBtcGNWMlNhbmRCb3guc3B5KEVERFNBTWV0aG9kcywgJ2dldFRTU1NpZ25hdHVyZScpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHtcbiAgICAgICAgLi4ubXBjVjJUb2tlblJlY292ZXJQYXJhbXMsXG4gICAgICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiB0MjJtaW50QWRkcmVzcyxcbiAgICAgICAgcHJvZ3JhbUlkOiB0b2tlbjIyUHJvZ3JhbUlkLFxuICAgICAgfSk7XG5cbiAgICAgIHJlc3VsdC5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICByZXN1bHQuc2hvdWxkLmhhc093blByb3BlcnR5KCdzZXJpYWxpemVkVHgnKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NjYW5JbmRleCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKChyZXN1bHQgYXMgTVBDVHgpLnNjYW5JbmRleCwgMCk7XG4gICAgICBtcGNWMlNhbmRCb3guYXNzZXJ0Lm5vdENhbGxlZChnZXRUU1NTaWduYXR1cmVTcHkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBhcHBseSBkdXJhYmxlIG5vbmNlIGFjY291bnQgc2lnbmF0dXJlIHdoZW4ga2V5Y2FyZCBpcyBNUEN2MicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QWNjb3VudEluZm8nLFxuICAgICAgICAgICAgcGFyYW1zOiBbdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQdWJLZXksIHsgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyB9XSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRJbmZvUmVzcG9uc2UpO1xuXG4gICAgICBjb25zdCBnZXRUU1NTaWduYXR1cmVTcHkgPSBtcGNWMlNhbmRCb3guc3B5KEVERFNBTWV0aG9kcywgJ2dldFRTU1NpZ25hdHVyZScpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHtcbiAgICAgICAgLi4ubXBjVjJSZWNvdmVyUGFyYW1zLFxuICAgICAgICBkdXJhYmxlTm9uY2U6IHtcbiAgICAgICAgICBwdWJsaWNLZXk6IHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LFxuICAgICAgICAgIHNlY3JldEtleTogdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQcml2S2V5LFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHJlc3VsdC5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICByZXN1bHQuc2hvdWxkLmhhc093blByb3BlcnR5KCdzZXJpYWxpemVkVHgnKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NjYW5JbmRleCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKChyZXN1bHQgYXMgTVBDVHgpLnNjYW5JbmRleCwgMCk7XG4gICAgICBtcGNWMlNhbmRCb3guYXNzZXJ0Lm5vdENhbGxlZChnZXRUU1NTaWduYXR1cmVTcHkpO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3JlY292ZXJDbG9zZUFUQScsICgpID0+IHtcbiAgICAgIGNvbnN0IHplcm9Ub2tlbkluZm9SZXNwb25zZSA9IF8uY2xvbmVEZWVwKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkluZm9SZXNwb25zZSk7XG4gICAgICB6ZXJvVG9rZW5JbmZvUmVzcG9uc2UuYm9keS5yZXN1bHQudmFsdWUuZGF0YS5wYXJzZWQuaW5mby50b2tlbkFtb3VudC5hbW91bnQgPSAnMCc7XG5cbiAgICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgICBjYWxsQmFja1xuICAgICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgICBtZXRob2Q6ICdnZXRCYWxhbmNlJyxcbiAgICAgICAgICAgICAgcGFyYW1zOiBbdGVzdERhdGEuY2xvc2VBVEFrZXlzLmNsb3NlQXRhQWRkcmVzc10sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50QmFsYW5jZVJlc3BvbnNlTTJEZXJpdmF0aW9uKTtcblxuICAgICAgICBjYWxsQmFja1xuICAgICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgICBtZXRob2Q6ICdnZXRCYWxhbmNlJyxcbiAgICAgICAgICAgICAgcGFyYW1zOiBzaW5vbi5tYXRjaCgoYWRkcmVzczogc3RyaW5nKSA9PiBhZGRyZXNzICE9PSB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuY2xvc2VBdGFBZGRyZXNzKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2UpO1xuXG4gICAgICAgIGNhbGxCYWNrXG4gICAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICAgIG1ldGhvZDogJ2dldEFjY291bnRJbmZvJyxcbiAgICAgICAgICAgICAgcGFyYW1zOiBbdGVzdERhdGEuY2xvc2VBVEFrZXlzLmNsb3NlQXRhQWRkcmVzcywgeyBlbmNvZGluZzogJ2pzb25QYXJzZWQnIH1dLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0VG9rZW5JbmZvUmVzcG9uc2UpO1xuXG4gICAgICAgIGNhbGxCYWNrXG4gICAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICAgIHBheWxvYWQ6IHsgaWQ6ICcxJywganNvbnJwYzogJzIuMCcsIG1ldGhvZDogJ3NlbmRUcmFuc2FjdGlvbicsIHBhcmFtczogc2lub24ubWF0Y2guYXJyYXkgfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5vbkNhbGwoMClcbiAgICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmJyb2FkY2FzdFRyYW5zYWN0aW9uUmVzcG9uc2UpXG4gICAgICAgICAgLm9uQ2FsbCgxKVxuICAgICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuYnJvYWRjYXN0VHJhbnNhY3Rpb25SZXNwb25zZTEpO1xuXG4gICAgICAgIGxldCBicm9hZGNhc3RDYWxsSW5kZXggPSAwO1xuICAgICAgICBtcGNWMlNhbmRCb3guc3R1YihTb2wucHJvdG90eXBlLCAnYnJvYWRjYXN0VHJhbnNhY3Rpb24nIGFzIGtleW9mIFNvbCkuY2FsbHNGYWtlKGFzeW5jICgpID0+IHtcbiAgICAgICAgICBicm9hZGNhc3RDYWxsSW5kZXgrKztcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHhJZDpcbiAgICAgICAgICAgICAgYnJvYWRjYXN0Q2FsbEluZGV4ID09PSAxXG4gICAgICAgICAgICAgICAgPyB0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuYnJvYWRjYXN0VHJhbnNhY3Rpb25SZXNwb25zZS5ib2R5LnJlc3VsdFxuICAgICAgICAgICAgICAgIDogdGVzdERhdGEuU29sUmVzcG9uc2VzLmJyb2FkY2FzdFRyYW5zYWN0aW9uUmVzcG9uc2UxLmJvZHkucmVzdWx0LFxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgcmVjb3ZlciBjbG9zZSBBVEEgd2l0aCBNUEN2MiBrZXlzIHdoZW4gbm8gdG9rZW4gYmFsYW5jZSBpcyBwcmVzZW50JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjYWxsQmFja1xuICAgICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgICBtZXRob2Q6ICdnZXRBY2NvdW50SW5mbycsXG4gICAgICAgICAgICAgIHBhcmFtczogW3Rlc3REYXRhLmNsb3NlQVRBa2V5cy5jbG9zZUF0YUFkZHJlc3MsIHsgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyB9XSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgICAucmVzb2x2ZXMoemVyb1Rva2VuSW5mb1Jlc3BvbnNlKTtcblxuICAgICAgICBjb25zdCBnZXRUU1NTaWduYXR1cmVTcHkgPSBtcGNWMlNhbmRCb3guc3B5KEVERFNBTWV0aG9kcywgJ2dldFRTU1NpZ25hdHVyZScpO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyQ2xvc2VBVEEoY2xvc2VBdGFNcGNWMlBhcmFtcyk7XG5cbiAgICAgICAgcmVzdWx0cy5zaG91bGQuaGF2ZS5sZW5ndGgoMSk7XG4gICAgICAgIHNob3VsZC5lcXVhbChyZXN1bHRzWzBdLnR4SWQsIHRlc3REYXRhLlNvbFJlc3BvbnNlcy5icm9hZGNhc3RUcmFuc2FjdGlvblJlc3BvbnNlLmJvZHkucmVzdWx0KTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKFxuICAgICAgICAgIGNhbGxCYWNrLmdldENhbGxzKCkuZmluZCgoY2FsbCkgPT4gY2FsbC5hcmdzWzBdPy5wYXlsb2FkPy5tZXRob2QgPT09ICdnZXRCYWxhbmNlJyk/LmFyZ3NbMF0ucGF5bG9hZC5wYXJhbXNbMF0sXG4gICAgICAgICAgbXBjVjJXYWxsZXRBZGRyZXNzXG4gICAgICAgICk7XG4gICAgICAgIG1wY1YyU2FuZEJveC5hc3NlcnQubm90Q2FsbGVkKGdldFRTU1NpZ25hdHVyZVNweSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCByZWNvdmVyIGNsb3NlIEFUQSB3aXRoIE1QQ3YyIGtleXMgd2hlbiB0b2tlbiBiYWxhbmNlIGlzIHByZXNlbnQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGdldFRTU1NpZ25hdHVyZVNweSA9IG1wY1YyU2FuZEJveC5zcHkoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJyk7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXJDbG9zZUFUQShjbG9zZUF0YU1wY1YyUGFyYW1zKTtcblxuICAgICAgICByZXN1bHRzLnNob3VsZC5oYXZlLmxlbmd0aCgyKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHJlc3VsdHNbMF0udHhJZCwgdGVzdERhdGEuU29sUmVzcG9uc2VzLmJyb2FkY2FzdFRyYW5zYWN0aW9uUmVzcG9uc2UuYm9keS5yZXN1bHQpO1xuICAgICAgICBzaG91bGQuZXF1YWwocmVzdWx0c1sxXS50eElkLCB0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuYnJvYWRjYXN0VHJhbnNhY3Rpb25SZXNwb25zZTEuYm9keS5yZXN1bHQpO1xuICAgICAgICBzaG91bGQuZXF1YWwoXG4gICAgICAgICAgY2FsbEJhY2suZ2V0Q2FsbHMoKS5maW5kKChjYWxsKSA9PiBjYWxsLmFyZ3NbMF0/LnBheWxvYWQ/Lm1ldGhvZCA9PT0gJ2dldEJhbGFuY2UnKT8uYXJnc1swXS5wYXlsb2FkLnBhcmFtc1swXSxcbiAgICAgICAgICBtcGNWMldhbGxldEFkZHJlc3NcbiAgICAgICAgKTtcbiAgICAgICAgbXBjVjJTYW5kQm94LmFzc2VydC5ub3RDYWxsZWQoZ2V0VFNTU2lnbmF0dXJlU3B5KTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHRocm93IHdoZW4gTVBDdjIgcmVjb3ZlckNsb3NlQVRBIGJpdGdvS2V5IGRvZXMgbm90IG1hdGNoIGtleWNhcmQgY29tbW9uS2V5Q2hhaW4nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNhbGxCYWNrXG4gICAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICAgIG1ldGhvZDogJ2dldEFjY291bnRJbmZvJyxcbiAgICAgICAgICAgICAgcGFyYW1zOiBbdGVzdERhdGEuY2xvc2VBVEFrZXlzLmNsb3NlQXRhQWRkcmVzcywgeyBlbmNvZGluZzogJ2pzb25QYXJzZWQnIH1dLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5yZXNvbHZlcyh6ZXJvVG9rZW5JbmZvUmVzcG9uc2UpO1xuXG4gICAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgICAgLnJlY292ZXJDbG9zZUFUQSh7IC4uLmNsb3NlQXRhTXBjVjJQYXJhbXMsIGJpdGdvS2V5OiBtaXNtYXRjaGVkQml0Z29LZXkgfSlcbiAgICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnRWREU0EgTVBDdjIgcmVjb3Zlcnk6IGNvbW1vbktleUNoYWluIGZyb20ga2V5Y2FyZCBkb2VzIG5vdCBtYXRjaCBiaXRnb0tleScpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgc2lnbiByZWNvdmVyQ2xvc2VBVEEgdmlhIHNpZ25BbmRHZW5lcmF0ZUJyb2FkY2FzdGFibGVUcmFuc2FjdGlvbiB3aXRoIE1QQ3YyIGtleXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGdldFRTU1NpZ25hdHVyZVNweSA9IG1wY1YyU2FuZEJveC5zcHkoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJyk7XG4gICAgICAgIGNvbnN0IGZhY3RvcnkgPSAoYmFzZWNvaW4gYXMgYW55KS5nZXRCdWlsZGVyKCk7XG4gICAgICAgIGNvbnN0IGJsb2NraGFzaCA9IHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRCbG9ja2hhc2hSZXNwb25zZS5ib2R5LnJlc3VsdC52YWx1ZS5ibG9ja2hhc2g7XG4gICAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0Q2xvc2VBdGFJbml0aWFsaXphdGlvbkJ1aWxkZXIoKTtcbiAgICAgICAgdHhCdWlsZGVyLm5vbmNlKGJsb2NraGFzaCk7XG4gICAgICAgIHR4QnVpbGRlci5zZW5kZXIobXBjVjJXYWxsZXRBZGRyZXNzKTtcbiAgICAgICAgdHhCdWlsZGVyLmFjY291bnRBZGRyZXNzKHRlc3REYXRhLmNsb3NlQVRBa2V5cy5jbG9zZUF0YUFkZHJlc3MpO1xuICAgICAgICB0eEJ1aWxkZXIuZGVzdGluYXRpb25BZGRyZXNzKHRlc3REYXRhLmNsb3NlQVRBa2V5cy5kZXN0aW5hdGlvblB1YktleSk7XG4gICAgICAgIHR4QnVpbGRlci5hdXRob3JpdHlBZGRyZXNzKG1wY1YyV2FsbGV0QWRkcmVzcyk7XG4gICAgICAgIHR4QnVpbGRlci5hc3NvY2lhdGVkVG9rZW5BY2NvdW50UmVudCgnMjAzOTI4MCcpO1xuICAgICAgICBjb25zdCBhZGRTaWduYXR1cmVTcHkgPSBtcGNWMlNhbmRCb3guc3B5KHR4QnVpbGRlciwgJ2FkZFNpZ25hdHVyZScpO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLnNpZ25BbmRHZW5lcmF0ZUJyb2FkY2FzdGFibGVUcmFuc2FjdGlvbihcbiAgICAgICAgICBjbG9zZUF0YU1wY1YyUGFyYW1zLFxuICAgICAgICAgIHR4QnVpbGRlcixcbiAgICAgICAgICBtcGNWMldhbGxldEFkZHJlc3MsXG4gICAgICAgICAgdHJ1ZVxuICAgICAgICApO1xuXG4gICAgICAgIHJlc3VsdC5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpO1xuICAgICAgICByZXN1bHQuc2hvdWxkLmhhc093blByb3BlcnR5KCdzY2FuSW5kZXgnKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHJlc3VsdC5zY2FuSW5kZXgsIDApO1xuICAgICAgICBtcGNWMlNhbmRCb3guYXNzZXJ0Lm5vdENhbGxlZChnZXRUU1NTaWduYXR1cmVTcHkpO1xuICAgICAgICBtcGNWMlNhbmRCb3guYXNzZXJ0LmNhbGxlZE9uY2UoYWRkU2lnbmF0dXJlU3B5KTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKGFkZFNpZ25hdHVyZVNweS5maXJzdENhbGwuYXJnc1swXS5wdWIsIG1wY1YyV2FsbGV0QWRkcmVzcyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdyZWNvdmVyTmVzdGVkQXRhJywgKCkgPT4ge1xuICAgICAgbGV0IG5lc3RlZEF0YU1wY1YyUGFyYW1zOiBTb2xSZWNvdmVyeU9wdGlvbnM7XG5cbiAgICAgIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIG5lc3RlZEF0YU1wY1YyUGFyYW1zID0ge1xuICAgICAgICAgIHVzZXJLZXk6IG1wY1YyVXNlcktleSxcbiAgICAgICAgICBiYWNrdXBLZXk6IG1wY1YyQmFja3VwS2V5LFxuICAgICAgICAgIGJpdGdvS2V5OiBtcGNWMkNvbW1vbktleUNoYWluLFxuICAgICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5kZXN0aW5hdGlvblB1YktleSxcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS5rZXlzLndhbGxldFBhc3N3b3JkLFxuICAgICAgICAgIG5lc3RlZEF0YUFkZHJlc3M6ICdGR3VaU0JodHJlcVNVc0U4Nnhva3lqS3oyaThWQnRKenk2dU1YWEt5R0h1ZycsXG4gICAgICAgICAgb3duZXJBdGFBZGRyZXNzOiAnWmZtOThacFZhZnlkaEZUWWNzWTZiSGd1YmhCNGNGZ1dGdmJkRUp4WWhUQScsXG4gICAgICAgICAgdG9rZW5NaW50QWRkcmVzczogJ1pCQ05wdUQ3WU1YelRIQjJmaEdrR2k3OE1Oc0hHTFJYVWhSZXdOUm05UlUnLFxuICAgICAgICB9O1xuICAgICAgfSk7XG5cbiAgICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgICBtcGNWMlNhbmRCb3guc3R1YihTb2wucHJvdG90eXBlLCAnYnJvYWRjYXN0VHJhbnNhY3Rpb24nIGFzIGtleW9mIFNvbCkucmVzb2x2ZXMoe1xuICAgICAgICAgIHR4SWQ6IHRlc3REYXRhLlNvbFJlc3BvbnNlcy5icm9hZGNhc3RUcmFuc2FjdGlvblJlc3BvbnNlLmJvZHkucmVzdWx0LFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHJlY292ZXIgbmVzdGVkIEFUQSB3aXRoIE1QQ3YyIGtleWNhcmQgdXNpbmcgTVBTLWRlcml2ZWQgd2FsbGV0IGFkZHJlc3MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGdldFRTU1NpZ25hdHVyZVNweSA9IG1wY1YyU2FuZEJveC5zcHkoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJyk7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYmFzZWNvaW4ucmVjb3Zlck5lc3RlZEF0YShuZXN0ZWRBdGFNcGNWMlBhcmFtcyk7XG5cbiAgICAgICAgcmVzdWx0LnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHJlc3VsdC50eElkLCB0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuYnJvYWRjYXN0VHJhbnNhY3Rpb25SZXNwb25zZS5ib2R5LnJlc3VsdCk7XG4gICAgICAgIHNob3VsZC5lcXVhbChcbiAgICAgICAgICBjYWxsQmFjay5nZXRDYWxscygpLmZpbmQoKGNhbGwpID0+IGNhbGwuYXJnc1swXT8ucGF5bG9hZD8ubWV0aG9kID09PSAnZ2V0TGF0ZXN0QmxvY2toYXNoJykgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG4gICAgICAgIG1wY1YyU2FuZEJveC5hc3NlcnQubm90Q2FsbGVkKGdldFRTU1NpZ25hdHVyZVNweSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCByZWNvdmVyIG5lc3RlZCBBVEEgd2l0aCBNUEN2MSBrZXljYXJkIHVzaW5nIE1QQy5kZXJpdmVVbmhhcmRlbmVkIChyZWdyZXNzaW9uKScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgZ2V0VFNTU2lnbmF0dXJlU3B5ID0gbXBjVjJTYW5kQm94LnNweShFRERTQU1ldGhvZHMsICdnZXRUU1NTaWduYXR1cmUnKTtcblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyTmVzdGVkQXRhKHtcbiAgICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMudXNlcktleSxcbiAgICAgICAgICBiYWNrdXBLZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iYWNrdXBLZXksXG4gICAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iaXRnb0tleSxcbiAgICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLndhbGxldFBhc3N3b3JkLFxuICAgICAgICAgIG5lc3RlZEF0YUFkZHJlc3M6ICdGR3VaU0JodHJlcVNVc0U4Nnhva3lqS3oyaThWQnRKenk2dU1YWEt5R0h1ZycsXG4gICAgICAgICAgb3duZXJBdGFBZGRyZXNzOiAnWmZtOThacFZhZnlkaEZUWWNzWTZiSGd1YmhCNGNGZ1dGdmJkRUp4WWhUQScsXG4gICAgICAgICAgdG9rZW5NaW50QWRkcmVzczogJ1pCQ05wdUQ3WU1YelRIQjJmaEdrR2k3OE1Oc0hHTFJYVWhSZXdOUm05UlUnLFxuICAgICAgICB9KTtcblxuICAgICAgICByZXN1bHQuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgICBzaG91bGQuZXF1YWwocmVzdWx0LnR4SWQsIHRlc3REYXRhLlNvbFJlc3BvbnNlcy5icm9hZGNhc3RUcmFuc2FjdGlvblJlc3BvbnNlLmJvZHkucmVzdWx0KTtcbiAgICAgICAgbXBjVjJTYW5kQm94LmFzc2VydC5jYWxsZWRPbmNlKGdldFRTU1NpZ25hdHVyZVNweSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIE1QQ3YyIHJlY292ZXJOZXN0ZWRBdGEgYml0Z29LZXkgZG9lcyBub3QgbWF0Y2gga2V5Y2FyZCBjb21tb25LZXlDaGFpbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgICAucmVjb3Zlck5lc3RlZEF0YSh7IC4uLm5lc3RlZEF0YU1wY1YyUGFyYW1zLCBiaXRnb0tleTogbWlzbWF0Y2hlZEJpdGdvS2V5IH0pXG4gICAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ0VkRFNBIE1QQ3YyIHJlY292ZXJ5OiBjb21tb25LZXlDaGFpbiBmcm9tIGtleWNhcmQgZG9lcyBub3QgbWF0Y2ggYml0Z29LZXknKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHRocm93IHdoZW4gbmVzdGVkQXRhQWRkcmVzcyBpcyBtaXNzaW5nIGZvciByZWNvdmVyTmVzdGVkQXRhIE1QQ3YyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAgIC5yZWNvdmVyTmVzdGVkQXRhKHtcbiAgICAgICAgICAgIC4uLm5lc3RlZEF0YU1wY1YyUGFyYW1zLFxuICAgICAgICAgICAgbmVzdGVkQXRhQWRkcmVzczogdW5kZWZpbmVkLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ2ludmFsaWQgbmVzdGVkQXRhQWRkcmVzcycpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdGhyb3cgd2hlbiBvd25lckF0YUFkZHJlc3MgaXMgbWlzc2luZyBmb3IgcmVjb3Zlck5lc3RlZEF0YSBNUEN2MicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgICAucmVjb3Zlck5lc3RlZEF0YSh7XG4gICAgICAgICAgICAuLi5uZXN0ZWRBdGFNcGNWMlBhcmFtcyxcbiAgICAgICAgICAgIG93bmVyQXRhQWRkcmVzczogdW5kZWZpbmVkLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ2ludmFsaWQgb3duZXJBdGFBZGRyZXNzJyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2NyZWF0ZUJyb2FkY2FzdGFibGVTd2VlcFRyYW5zYWN0aW9uIChNUEN2Mik6JywgKCkgPT4ge1xuICAgIGNvbnN0IHNhbmRCb3ggPSBzaW5vbi5jcmVhdGVTYW5kYm94KCk7XG4gICAgbGV0IHVzZXJLZXlTaGFyZTogQnVmZmVyO1xuICAgIGxldCBiYWNrdXBLZXlTaGFyZTogQnVmZmVyO1xuICAgIGxldCBjb21tb25LZXljaGFpbjogc3RyaW5nO1xuICAgIGxldCBtcGN2MlN3ZWVwVHhSZXF1ZXN0OiBhbnk7XG4gICAgbGV0IG1wY3YyU2lnbmF0dXJlSGV4OiBzdHJpbmc7XG5cbiAgICBiZWZvcmUoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgW3VzZXJEa2csIGJhY2t1cERrZ10gPSBhd2FpdCBNUFNVdGlsLmdlbmVyYXRlRWREc2FES0dLZXlTaGFyZXMoKTtcbiAgICAgIGNvbW1vbktleWNoYWluID0gdXNlckRrZy5nZXRDb21tb25LZXljaGFpbigpO1xuICAgICAgdXNlcktleVNoYXJlID0gdXNlckRrZy5nZXRLZXlTaGFyZSgpO1xuICAgICAgYmFja3VwS2V5U2hhcmUgPSBiYWNrdXBEa2cuZ2V0S2V5U2hhcmUoKTtcblxuICAgICAgY29uc3QgbXBjID0gYXdhaXQgRUREU0FNZXRob2RzLmdldEluaXRpYWxpemVkTXBjSW5zdGFuY2UoKTtcbiAgICAgIGNvbnN0IHdhbGxldEFkZHJlc3MgPSBuZXcgS2V5UGFpcih7XG4gICAgICAgIHB1YjogbXBjLmRlcml2ZVVuaGFyZGVuZWQoY29tbW9uS2V5Y2hhaW4sICdtLzAnKS5zbGljZSgwLCA2NCksXG4gICAgICB9KS5nZXRBZGRyZXNzKCk7XG5cbiAgICAgIGNvbnN0IGNhbGxCYWNrID0gc2FuZEJveC5zdHViKFNvbC5wcm90b3R5cGUsICdnZXREYXRhRnJvbU5vZGUnIGFzIGtleW9mIFNvbCk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHsgaWQ6ICcxJywganNvbnJwYzogJzIuMCcsIG1ldGhvZDogJ2dldExhdGVzdEJsb2NraGFzaCcsIHBhcmFtczogW3sgY29tbWl0bWVudDogJ2ZpbmFsaXplZCcgfV0gfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRCbG9ja2hhc2hSZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHsgaWQ6ICcxJywganNvbnJwYzogJzIuMCcsIG1ldGhvZDogJ2dldEJhbGFuY2UnLCBwYXJhbXM6IFt3YWxsZXRBZGRyZXNzXSB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRGZWVGb3JNZXNzYWdlJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Npbm9uLm1hdGNoLnN0cmluZywgeyBjb21taXRtZW50OiAnZmluYWxpemVkJyB9XSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEZlZXNGb3JNZXNzYWdlUmVzcG9uc2UpO1xuXG4gICAgICAvLyBubyB3YWxsZXRQYXNzcGhyYXNlIC0+IHVuc2lnbmVkIHN3ZWVwIHBhdGggcmV0dXJucyBNUENTd2VlcFR4c1xuICAgICAgY29uc3Qgc3dlZXAgPSAoYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIHVzZXJLZXk6ICcnLFxuICAgICAgICBiYWNrdXBLZXk6ICcnLFxuICAgICAgICBiaXRnb0tleTogY29tbW9uS2V5Y2hhaW4sXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICB9KSkgYXMgTVBDU3dlZXBUeHM7XG4gICAgICBzYW5kQm94LnJlc3RvcmUoKTtcblxuICAgICAgbXBjdjJTd2VlcFR4UmVxdWVzdCA9IHN3ZWVwLnR4UmVxdWVzdHNbMF07XG4gICAgICBjb25zdCB1bnNpZ25lZFR4ID0gbXBjdjJTd2VlcFR4UmVxdWVzdC50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeDtcbiAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IGF3YWl0IHNpZ25SZWNvdmVyeUVkZHNhTVBDdjIoXG4gICAgICAgIEJ1ZmZlci5mcm9tKHVuc2lnbmVkVHguc2lnbmFibGVIZXgsICdoZXgnKSxcbiAgICAgICAgdW5zaWduZWRUeC5kZXJpdmF0aW9uUGF0aCxcbiAgICAgICAgdXNlcktleVNoYXJlLFxuICAgICAgICBiYWNrdXBLZXlTaGFyZSxcbiAgICAgICAgY29tbW9uS2V5Y2hhaW5cbiAgICAgICk7XG4gICAgICBtcGN2MlNpZ25hdHVyZUhleCA9IHNpZ25hdHVyZS50b1N0cmluZygnaGV4Jyk7XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBidWlsZFBhcmFtcyhvdmM6IGFueSk6IE1QQ1N3ZWVwUmVjb3ZlcnlPcHRpb25zIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNpZ25hdHVyZVNoYXJlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR4UmVxdWVzdDogbXBjdjJTd2VlcFR4UmVxdWVzdCxcbiAgICAgICAgICAgIHRzc1ZlcnNpb246ICcwLjAuMScsXG4gICAgICAgICAgICBvdmM6IFtvdmNdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9IGFzIE1QQ1N3ZWVwUmVjb3ZlcnlPcHRpb25zO1xuICAgIH1cblxuICAgIGl0KCdzaG91bGQgdGFrZSBNUEN2MiBPVkMgb3V0cHV0IGFuZCBnZW5lcmF0ZSBhIHNpZ25lZCBzd2VlcCB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IGJ1aWxkUGFyYW1zKHsgZWRkc2FNcGN2MlNpZ25hdHVyZTogbXBjdjJTaWduYXR1cmVIZXggfSk7XG4gICAgICBjb25zdCByZWNvdmVyeVR4biA9IGF3YWl0IGJhc2Vjb2luLmNyZWF0ZUJyb2FkY2FzdGFibGVTd2VlcFRyYW5zYWN0aW9uKHBhcmFtcyk7XG5cbiAgICAgIHJlY292ZXJ5VHhuLnRyYW5zYWN0aW9uc1swXS5zZXJpYWxpemVkVHguc2hvdWxkLm5vdC5lcXVhbChcbiAgICAgICAgbXBjdjJTd2VlcFR4UmVxdWVzdC50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5zZXJpYWxpemVkVHhcbiAgICAgICk7XG4gICAgICByZWNvdmVyeVR4bi50cmFuc2FjdGlvbnNbMF0uc2VyaWFsaXplZFR4LnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIChyZWNvdmVyeVR4bi50cmFuc2FjdGlvbnNbMF0uc2NhbkluZGV4ID8/IDApLnNob3VsZC5lcXVhbCgwKTtcbiAgICAgIChyZWNvdmVyeVR4bi5sYXN0U2NhbkluZGV4ID8/IDApLnNob3VsZC5lcXVhbCgwKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVqZWN0IGEgdGFtcGVyZWQgTVBDdjIgc2lnbmF0dXJlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdW5zaWduZWRUeCA9IG1wY3YyU3dlZXBUeFJlcXVlc3QudHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHg7XG4gICAgICBjb25zdCB0YW1wZXJlZE1lc3NhZ2UgPSBCdWZmZXIuY29uY2F0KFtCdWZmZXIuZnJvbSh1bnNpZ25lZFR4LnNpZ25hYmxlSGV4LCAnaGV4JyksIEJ1ZmZlci5mcm9tKCcwMCcsICdoZXgnKV0pO1xuICAgICAgY29uc3QgdGFtcGVyZWRTaWduYXR1cmUgPSBhd2FpdCBzaWduUmVjb3ZlcnlFZGRzYU1QQ3YyKFxuICAgICAgICB0YW1wZXJlZE1lc3NhZ2UsXG4gICAgICAgIHVuc2lnbmVkVHguZGVyaXZhdGlvblBhdGgsXG4gICAgICAgIHVzZXJLZXlTaGFyZSxcbiAgICAgICAgYmFja3VwS2V5U2hhcmUsXG4gICAgICAgIGNvbW1vbktleWNoYWluXG4gICAgICApO1xuXG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAuY3JlYXRlQnJvYWRjYXN0YWJsZVN3ZWVwVHJhbnNhY3Rpb24oYnVpbGRQYXJhbXMoeyBlZGRzYU1wY3YyU2lnbmF0dXJlOiB0YW1wZXJlZFNpZ25hdHVyZS50b1N0cmluZygnaGV4JykgfSkpXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdJbnZhbGlkIHNpZ25hdHVyZScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIE1QQ3YyIE9WQyBpcyBtaXNzaW5nIHNpZ25hdHVyZShzKScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC5jcmVhdGVCcm9hZGNhc3RhYmxlU3dlZXBUcmFuc2FjdGlvbihidWlsZFBhcmFtcyh7fSkpXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdNaXNzaW5nIHNpZ25hdHVyZShzKScpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnQnVpbGQgQ29uc29saWRhdGlvbiBSZWNvdmVyaWVzOicsICgpID0+IHtcbiAgICBjb25zdCBzYW5kQm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuICAgIGNvbnN0IGNvaW4gPSBjb2lucy5nZXQoJ3Rzb2wnKTtcbiAgICBjb25zdCB1c2R0TWludEFkZHJlc3MgPSAnOWNncEJlTloySG5MZGE3TldhYVUxaTNOeVRzdGsyYzR6Q01VY29BR3NpOUMnO1xuICAgIGNvbnN0IGR1cmFibGVOb25jZXMgPSB7XG4gICAgICBwdWJsaWNLZXlzOiBbXG4gICAgICAgIHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LFxuICAgICAgICB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVB1YktleTIsXG4gICAgICAgIHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5MyxcbiAgICAgIF0sXG4gICAgICBzZWNyZXRLZXk6IHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHJpdktleSxcbiAgICB9O1xuXG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICBjb25zdCBjYWxsQmFjayA9IHNhbmRCb3guc3R1YihTb2wucHJvdG90eXBlLCAnZ2V0RGF0YUZyb21Ob2RlJyBhcyBrZXlvZiBTb2wpO1xuXG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldExhdGVzdEJsb2NraGFzaCcsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbW1pdG1lbnQ6ICdmaW5hbGl6ZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEJsb2NraGFzaFJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0RmVlRm9yTWVzc2FnZScsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgc2lub24ubWF0Y2guc3RyaW5nLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29tbWl0bWVudDogJ2ZpbmFsaXplZCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0RmVlc0Zvck1lc3NhZ2VSZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEJhbGFuY2UnLFxuICAgICAgICAgICAgcGFyYW1zOiBbdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50QmFsYW5jZVJlc3BvbnNlTm9GdW5kcyk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEJhbGFuY2UnLFxuICAgICAgICAgICAgcGFyYW1zOiBbdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50QmFsYW5jZVJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QmFsYW5jZScsXG4gICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MzXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRCYWxhbmNlJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Rlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczVdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEJhbGFuY2VSZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldE1pbmltdW1CYWxhbmNlRm9yUmVudEV4ZW1wdGlvbicsXG4gICAgICAgICAgICBwYXJhbXM6IFsxNjVdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0TWluaW11bUJhbGFuY2VGb3JSZW50RXhlbXB0aW9uUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRBY2NvdW50SW5mbycsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQdWJLZXksXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogJ2pzb25QYXJzZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRJbmZvUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRBY2NvdW50SW5mbycsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQdWJLZXkyLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50SW5mb1Jlc3BvbnNlMik7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldFRva2VuQWNjb3VudHNCeU93bmVyJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MxLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogJ2pzb25QYXJzZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyUmVzcG9uc2VOb0FjY291bnRzKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczIsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcm9ncmFtSWQ6ICdUb2tlbmtlZ1FmZVp5aU53QUpiTmJHS1BGWENXdUJ2ZjlTczYyM1ZRNURBJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiAnanNvblBhcnNlZCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0VG9rZW5BY2NvdW50c0J5T3duZXJSZXNwb25zZU5vQWNjb3VudHMpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRUb2tlbkFjY291bnRzQnlPd25lcicsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMyxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHByb2dyYW1JZDogJ1Rva2Vua2VnUWZlWnlpTndBSmJOYkdLUEZYQ1d1QnZmOVNzNjIzVlE1REEnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lclJlc3BvbnNlTm9BY2NvdW50cyk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldFRva2VuQWNjb3VudHNCeU93bmVyJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3M1LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogJ2pzb25QYXJzZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRUb2tlbkFjY291bnRzQnlPd25lcicsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHByb2dyYW1JZDogJ1Rva2Vua2VnUWZlWnlpTndBSmJOYkdLUEZYQ1d1QnZmOVNzNjIzVlE1REEnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lclJlc3BvbnNlKTtcbiAgICB9KTtcblxuICAgIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgICBzYW5kQm94LnJlc3RvcmUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgc2lnbmVkIGNvbnNvbGlkYXRpb24gcmVjb3ZlcmllcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlcyA9IChhd2FpdCBiYXNlY29pbi5yZWNvdmVyQ29uc29saWRhdGlvbnMoe1xuICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS53cndVc2VyLnVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEud3J3VXNlci5iYWNrdXBLZXksXG4gICAgICAgIGJpdGdvS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJpdGdvS2V5LFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS53cndVc2VyLndhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIHN0YXJ0aW5nU2NhbkluZGV4OiAxLFxuICAgICAgICBlbmRpbmdTY2FuSW5kZXg6IDQsXG4gICAgICAgIGR1cmFibGVOb25jZXM6IGR1cmFibGVOb25jZXMsXG4gICAgICB9KSkgYXMgTVBDVHhzO1xuICAgICAgcmVzLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIHJlcy50cmFuc2FjdGlvbnMubGVuZ3RoLnNob3VsZC5lcXVhbCgyKTtcbiAgICAgIChyZXMubGFzdFNjYW5JbmRleCA/PyAwKS5zaG91bGQuZXF1YWwoMyk7XG5cbiAgICAgIGNvbnN0IHR4bjEgPSByZXMudHJhbnNhY3Rpb25zWzBdO1xuICAgICAgY29uc3QgbGF0ZXN0QmxvY2toYXNoVHhuRGVzZXJpYWxpemUxID0gbmV3IFRyYW5zYWN0aW9uKGNvaW4pO1xuICAgICAgbGF0ZXN0QmxvY2toYXNoVHhuRGVzZXJpYWxpemUxLmZyb21SYXdUcmFuc2FjdGlvbigodHhuMSBhcyBNUENUeCkuc2VyaWFsaXplZFR4KTtcbiAgICAgIGNvbnN0IGxhdGVzdEJsb2NraGFzaFR4bkpzb24xID0gbGF0ZXN0QmxvY2toYXNoVHhuRGVzZXJpYWxpemUxLnRvSnNvbigpO1xuXG4gICAgICBjb25zdCBub25jZTEgPSB0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEluZm9SZXNwb25zZS5ib2R5LnJlc3VsdC52YWx1ZS5kYXRhLnBhcnNlZC5pbmZvLmJsb2NraGFzaDtcbiAgICAgIHNob3VsZC5lcXVhbChsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMS5ub25jZSwgbm9uY2UxKTtcbiAgICAgIHNob3VsZC5lcXVhbChsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMS5mZWVQYXllciwgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMik7XG4gICAgICBzaG91bGQuZXF1YWwobGF0ZXN0QmxvY2toYXNoVHhuSnNvbjEubnVtU2lnbmF0dXJlcywgdGVzdERhdGEuU29sSW5wdXREYXRhLmR1cmFibGVOb25jZVNpZ25hdHVyZXMpO1xuXG4gICAgICBjb25zdCB0eG4yID0gcmVzLnRyYW5zYWN0aW9uc1sxXTtcbiAgICAgIGNvbnN0IGxhdGVzdEJsb2NraGFzaFR4bkRlc2VyaWFsaXplMiA9IG5ldyBUcmFuc2FjdGlvbihjb2luKTtcbiAgICAgIGxhdGVzdEJsb2NraGFzaFR4bkRlc2VyaWFsaXplMi5mcm9tUmF3VHJhbnNhY3Rpb24oKHR4bjIgYXMgTVBDVHgpLnNlcmlhbGl6ZWRUeCk7XG4gICAgICBjb25zdCBsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMiA9IGxhdGVzdEJsb2NraGFzaFR4bkRlc2VyaWFsaXplMi50b0pzb24oKTtcblxuICAgICAgY29uc3Qgbm9uY2UyID0gdGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRJbmZvUmVzcG9uc2UyLmJvZHkucmVzdWx0LnZhbHVlLmRhdGEucGFyc2VkLmluZm8uYmxvY2toYXNoO1xuICAgICAgc2hvdWxkLmVxdWFsKGxhdGVzdEJsb2NraGFzaFR4bkpzb24yLm5vbmNlLCBub25jZTIpO1xuICAgICAgc2hvdWxkLmVxdWFsKGxhdGVzdEJsb2NraGFzaFR4bkpzb24yLmZlZVBheWVyLCB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MzKTtcbiAgICAgIHNob3VsZC5lcXVhbChsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMi5udW1TaWduYXR1cmVzLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEuZHVyYWJsZU5vbmNlU2lnbmF0dXJlcyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIHVuc2lnbmVkIGNvbnNvbGlkYXRpb24gcmVjb3ZlcmllcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlcyA9IChhd2FpdCBiYXNlY29pbi5yZWNvdmVyQ29uc29saWRhdGlvbnMoe1xuICAgICAgICBiaXRnb0tleTogdGVzdERhdGEud3J3VXNlci5iaXRnb0tleSxcbiAgICAgICAgc3RhcnRpbmdTY2FuSW5kZXg6IDEsXG4gICAgICAgIGVuZGluZ1NjYW5JbmRleDogNCxcbiAgICAgICAgZHVyYWJsZU5vbmNlczogZHVyYWJsZU5vbmNlcyxcbiAgICAgIH0pKSBhcyBNUENTd2VlcFR4cztcbiAgICAgIHJlcy5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICByZXMudHhSZXF1ZXN0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDIpO1xuXG4gICAgICBjb25zdCB0eG4xID0gcmVzLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHg7XG4gICAgICB0eG4xLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2VyaWFsaXplZFR4Jyk7XG4gICAgICB0eG4xLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2lnbmFibGVIZXgnKTtcbiAgICAgIHR4bjEuc2hvdWxkLmhhc093blByb3BlcnR5KCdzY2FuSW5kZXgnKTtcbiAgICAgICh0eG4xLnNjYW5JbmRleCA/PyAwKS5zaG91bGQuZXF1YWwoMik7XG4gICAgICB0eG4xLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnY29pbicpO1xuICAgICAgdHhuMS5jb2luPy5zaG91bGQuZXF1YWwoJ3Rzb2wnKTtcbiAgICAgIHR4bjEuc2hvdWxkLmhhc093blByb3BlcnR5KCdkZXJpdmF0aW9uUGF0aCcpO1xuICAgICAgdHhuMS5kZXJpdmF0aW9uUGF0aD8uc2hvdWxkLmVxdWFsKCdtLzInKTtcblxuICAgICAgdHhuMS5zaG91bGQuaGFzT3duUHJvcGVydHkoJ2NvaW5TcGVjaWZpYycpO1xuICAgICAgY29uc3QgY29pblNwZWNpZmljMSA9IHR4bjEuY29pblNwZWNpZmljO1xuICAgICAgY29pblNwZWNpZmljMT8uc2hvdWxkLmhhc093blByb3BlcnR5KCdjb21tb25LZXljaGFpbicpO1xuXG4gICAgICBjb25zdCBsYXRlc3RCbG9ja2hhc2hUeG5EZXNlcmlhbGl6ZTEgPSBuZXcgVHJhbnNhY3Rpb24oY29pbik7XG4gICAgICBsYXRlc3RCbG9ja2hhc2hUeG5EZXNlcmlhbGl6ZTEuZnJvbVJhd1RyYW5zYWN0aW9uKCh0eG4xIGFzIE1QQ1R4KS5zZXJpYWxpemVkVHgpO1xuICAgICAgY29uc3QgbGF0ZXN0QmxvY2toYXNoVHhuSnNvbjEgPSBsYXRlc3RCbG9ja2hhc2hUeG5EZXNlcmlhbGl6ZTEudG9Kc29uKCk7XG5cbiAgICAgIGNvbnN0IG5vbmNlMSA9IHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50SW5mb1Jlc3BvbnNlLmJvZHkucmVzdWx0LnZhbHVlLmRhdGEucGFyc2VkLmluZm8uYmxvY2toYXNoO1xuICAgICAgc2hvdWxkLmVxdWFsKGxhdGVzdEJsb2NraGFzaFR4bkpzb24xLm5vbmNlLCBub25jZTEpO1xuICAgICAgc2hvdWxkLmVxdWFsKGxhdGVzdEJsb2NraGFzaFR4bkpzb24xLmZlZVBheWVyLCB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MyKTtcbiAgICAgIHNob3VsZC5lcXVhbChsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMS5udW1TaWduYXR1cmVzLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEudW5zaWduZWRTd2VlcFNpZ25hdHVyZXMpO1xuXG4gICAgICBjb25zdCB0eG4yID0gcmVzLnR4UmVxdWVzdHNbMV0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHg7XG4gICAgICB0eG4yLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2VyaWFsaXplZFR4Jyk7XG4gICAgICB0eG4yLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2lnbmFibGVIZXgnKTtcbiAgICAgIHR4bjIuc2hvdWxkLmhhc093blByb3BlcnR5KCdzY2FuSW5kZXgnKTtcbiAgICAgICh0eG4yLnNjYW5JbmRleCA/PyAwKS5zaG91bGQuZXF1YWwoMyk7XG4gICAgICB0eG4yLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnY29pbicpO1xuICAgICAgdHhuMi5jb2luPy5zaG91bGQuZXF1YWwoJ3Rzb2wnKTtcbiAgICAgIHR4bjIuc2hvdWxkLmhhc093blByb3BlcnR5KCdkZXJpdmF0aW9uUGF0aCcpO1xuICAgICAgdHhuMi5kZXJpdmF0aW9uUGF0aD8uc2hvdWxkLmVxdWFsKCdtLzMnKTtcblxuICAgICAgdHhuMi5zaG91bGQuaGFzT3duUHJvcGVydHkoJ2NvaW5TcGVjaWZpYycpO1xuICAgICAgY29uc3QgY29pblNwZWNpZmljMiA9IHR4bjIuY29pblNwZWNpZmljO1xuICAgICAgY29pblNwZWNpZmljMj8uc2hvdWxkLmhhc093blByb3BlcnR5KCdjb21tb25LZXljaGFpbicpO1xuICAgICAgY29pblNwZWNpZmljMj8uc2hvdWxkLmhhc093blByb3BlcnR5KCdsYXN0U2NhbkluZGV4Jyk7XG4gICAgICBjb2luU3BlY2lmaWMyPy5sYXN0U2NhbkluZGV4Py5zaG91bGQuZXF1YWwoMyk7XG5cbiAgICAgIGNvbnN0IGxhdGVzdEJsb2NraGFzaFR4bkRlc2VyaWFsaXplMiA9IG5ldyBUcmFuc2FjdGlvbihjb2luKTtcbiAgICAgIGxhdGVzdEJsb2NraGFzaFR4bkRlc2VyaWFsaXplMi5mcm9tUmF3VHJhbnNhY3Rpb24oKHR4bjIgYXMgTVBDVHgpLnNlcmlhbGl6ZWRUeCk7XG4gICAgICBjb25zdCBsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMiA9IGxhdGVzdEJsb2NraGFzaFR4bkRlc2VyaWFsaXplMi50b0pzb24oKTtcblxuICAgICAgY29uc3Qgbm9uY2UyID0gdGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRJbmZvUmVzcG9uc2UyLmJvZHkucmVzdWx0LnZhbHVlLmRhdGEucGFyc2VkLmluZm8uYmxvY2toYXNoO1xuICAgICAgc2hvdWxkLmVxdWFsKGxhdGVzdEJsb2NraGFzaFR4bkpzb24yLm5vbmNlLCBub25jZTIpO1xuICAgICAgc2hvdWxkLmVxdWFsKGxhdGVzdEJsb2NraGFzaFR4bkpzb24yLmZlZVBheWVyLCB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MzKTtcbiAgICAgIHNob3VsZC5lcXVhbChsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMi5udW1TaWduYXR1cmVzLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEudW5zaWduZWRTd2VlcFNpZ25hdHVyZXMpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCB1bnNpZ25lZCB0b2tlbiBjb25zb2xpZGF0aW9uIHJlY292ZXJpZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXMgPSAoYXdhaXQgYmFzZWNvaW4ucmVjb3ZlckNvbnNvbGlkYXRpb25zKHtcbiAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLndyd1VzZXIuYml0Z29LZXksXG4gICAgICAgIHN0YXJ0aW5nU2NhbkluZGV4OiAzLFxuICAgICAgICBlbmRpbmdTY2FuSW5kZXg6IDUsXG4gICAgICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiB1c2R0TWludEFkZHJlc3MsXG4gICAgICAgIGR1cmFibGVOb25jZXM6IGR1cmFibGVOb25jZXMsXG4gICAgICB9KSkgYXMgTVBDU3dlZXBUeHM7XG4gICAgICByZXMuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgcmVzLnR4UmVxdWVzdHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcblxuICAgICAgY29uc3QgdHhuMSA9IHJlcy50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4O1xuICAgICAgdHhuMS5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpO1xuICAgICAgdHhuMS5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NpZ25hYmxlSGV4Jyk7XG4gICAgICB0eG4xLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2NhbkluZGV4Jyk7XG4gICAgICAodHhuMS5zY2FuSW5kZXggPz8gMCkuc2hvdWxkLmVxdWFsKDQpO1xuICAgICAgdHhuMS5zaG91bGQuaGFzT3duUHJvcGVydHkoJ2NvaW4nKTtcbiAgICAgIHR4bjEuY29pbj8uc2hvdWxkLmVxdWFsKCd0c29sJyk7XG4gICAgICB0eG4xLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnZGVyaXZhdGlvblBhdGgnKTtcbiAgICAgIHR4bjEuZGVyaXZhdGlvblBhdGg/LnNob3VsZC5lcXVhbCgnbS80Jyk7XG5cbiAgICAgIHR4bjEuc2hvdWxkLmhhc093blByb3BlcnR5KCdjb2luU3BlY2lmaWMnKTtcbiAgICAgIGNvbnN0IGNvaW5TcGVjaWZpYzEgPSB0eG4xLmNvaW5TcGVjaWZpYztcbiAgICAgIGNvaW5TcGVjaWZpYzE/LnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnY29tbW9uS2V5Y2hhaW4nKTtcblxuICAgICAgY29uc3QgbGF0ZXN0QmxvY2toYXNoVHhuRGVzZXJpYWxpemUxID0gbmV3IFRyYW5zYWN0aW9uKGNvaW4pO1xuICAgICAgbGF0ZXN0QmxvY2toYXNoVHhuRGVzZXJpYWxpemUxLmZyb21SYXdUcmFuc2FjdGlvbigodHhuMSBhcyBNUENUeCkuc2VyaWFsaXplZFR4KTtcbiAgICAgIGNvbnN0IGxhdGVzdEJsb2NraGFzaFR4bkpzb24xID0gbGF0ZXN0QmxvY2toYXNoVHhuRGVzZXJpYWxpemUxLnRvSnNvbigpO1xuXG4gICAgICBjb25zdCBub25jZTEgPSB0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEluZm9SZXNwb25zZS5ib2R5LnJlc3VsdC52YWx1ZS5kYXRhLnBhcnNlZC5pbmZvLmJsb2NraGFzaDtcbiAgICAgIHNob3VsZC5lcXVhbChsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMS5ub25jZSwgbm9uY2UxKTtcbiAgICAgIHNob3VsZC5lcXVhbChsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMS5mZWVQYXllciwgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzNSk7XG4gICAgICBzaG91bGQuZXF1YWwobGF0ZXN0QmxvY2toYXNoVHhuSnNvbjEubnVtU2lnbmF0dXJlcywgdGVzdERhdGEuU29sSW5wdXREYXRhLnVuc2lnbmVkU3dlZXBTaWduYXR1cmVzKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgc2lnbmVkIHRva2VuIGNvbnNvbGlkYXRpb24gcmVjb3ZlcmllcyAoaG90IHdhbGxldCknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBSZWdyZXNzaW9uIHRlc3Q6IGhvdC13YWxsZXQgU1BMLXRva2VuIGNvbnNvbGlkYXRpb24gbXVzdCBwcm9kdWNlIGEgKnNpZ25lZCogdHJhbnNhY3Rpb25cbiAgICAgIC8vIHdoZW4gdXNlcktleS9iYWNrdXBLZXkvd2FsbGV0UGFzc3BocmFzZSBhcmUgc3VwcGxpZWQg4oCUIG1pcnJvcnMgdGhlIFdSVyBob3Qtd2FsbGV0IGZsb3cuXG4gICAgICBjb25zdCByZXMgPSAoYXdhaXQgYmFzZWNvaW4ucmVjb3ZlckNvbnNvbGlkYXRpb25zKHtcbiAgICAgICAgdXNlcktleTogdGVzdERhdGEud3J3VXNlci51c2VyS2V5LFxuICAgICAgICBiYWNrdXBLZXk6IHRlc3REYXRhLndyd1VzZXIuYmFja3VwS2V5LFxuICAgICAgICBiaXRnb0tleTogdGVzdERhdGEud3J3VXNlci5iaXRnb0tleSxcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEud3J3VXNlci53YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICBzdGFydGluZ1NjYW5JbmRleDogMyxcbiAgICAgICAgZW5kaW5nU2NhbkluZGV4OiA1LFxuICAgICAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogdXNkdE1pbnRBZGRyZXNzLFxuICAgICAgICBkdXJhYmxlTm9uY2VzOiBkdXJhYmxlTm9uY2VzLFxuICAgICAgfSkpIGFzIE1QQ1R4cztcblxuICAgICAgcmVzLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIHJlcy50cmFuc2FjdGlvbnMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcblxuICAgICAgY29uc3QgdHhuMSA9IHJlcy50cmFuc2FjdGlvbnNbMF0gYXMgTVBDVHg7XG4gICAgICB0eG4xLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2VyaWFsaXplZFR4Jyk7XG4gICAgICB0eG4xLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2NhbkluZGV4Jyk7XG4gICAgICAodHhuMS5zY2FuSW5kZXggPz8gMCkuc2hvdWxkLmVxdWFsKDQpO1xuXG4gICAgICBjb25zdCB0b2tlbkNvbnNvbGlkYXRpb25UeG5EZXNlcmlhbGl6ZSA9IG5ldyBUcmFuc2FjdGlvbihjb2luKTtcbiAgICAgIHRva2VuQ29uc29saWRhdGlvblR4bkRlc2VyaWFsaXplLmZyb21SYXdUcmFuc2FjdGlvbih0eG4xLnNlcmlhbGl6ZWRUeCk7XG4gICAgICBjb25zdCB0b2tlbkNvbnNvbGlkYXRpb25UeG5Kc29uID0gdG9rZW5Db25zb2xpZGF0aW9uVHhuRGVzZXJpYWxpemUudG9Kc29uKCk7XG5cbiAgICAgIGNvbnN0IG5vbmNlMSA9IHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50SW5mb1Jlc3BvbnNlLmJvZHkucmVzdWx0LnZhbHVlLmRhdGEucGFyc2VkLmluZm8uYmxvY2toYXNoO1xuICAgICAgc2hvdWxkLmVxdWFsKHRva2VuQ29uc29saWRhdGlvblR4bkpzb24ubm9uY2UsIG5vbmNlMSk7XG4gICAgICBzaG91bGQuZXF1YWwodG9rZW5Db25zb2xpZGF0aW9uVHhuSnNvbi5mZWVQYXllciwgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzNSk7XG4gICAgICAvLyBTaWduZWQgKGR1cmFibGUgbm9uY2UgKyByZWNvdmVyeSBzaWduYXR1cmUpIG11c3QgaGF2ZSBNT1JFIHNpZ25hdHVyZXMgdGhhbiBhbiB1bnNpZ25lZCBzd2VlcFxuICAgICAgLy8gb2YgdGhlIHNhbWUgdHJhbnNhY3Rpb24gc2hhcGUg4oCUIHByb3ZlcyB3YWxsZXRQYXNzcGhyYXNlIGFjdHVhbGx5IGRyb3ZlIGEgc2lnbmVkIHBhdGguXG4gICAgICBzaG91bGQuZXF1YWwodG9rZW5Db25zb2xpZGF0aW9uVHhuSnNvbi5udW1TaWduYXR1cmVzLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEuZHVyYWJsZU5vbmNlU2lnbmF0dXJlcyk7XG4gICAgICB0b2tlbkNvbnNvbGlkYXRpb25UeG5Kc29uLm51bVNpZ25hdHVyZXMuc2hvdWxkLmJlLmFib3ZlKHRlc3REYXRhLlNvbElucHV0RGF0YS51bnNpZ25lZFN3ZWVwU2lnbmF0dXJlcyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHNraXAgYnVpbGRpbmcgY29uc29saWRhdGUgdHJhbnNhY3Rpb24gaWYgYmFsYW5jZSBpcyBlcXVhbCB0byB6ZXJvJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnJlY292ZXJDb25zb2xpZGF0aW9ucyh7XG4gICAgICAgICAgdXNlcktleTogdGVzdERhdGEud3J3VXNlci51c2VyS2V5LFxuICAgICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEud3J3VXNlci5iYWNrdXBLZXksXG4gICAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLndyd1VzZXIuYml0Z29LZXksXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEud3J3VXNlci53YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICAgIHN0YXJ0aW5nU2NhbkluZGV4OiAxLFxuICAgICAgICAgIGVuZGluZ1NjYW5JbmRleDogMixcbiAgICAgICAgICBkdXJhYmxlTm9uY2VzOiBkdXJhYmxlTm9uY2VzLFxuICAgICAgICB9KVxuICAgICAgICAuc2hvdWxkLnJlamVjdGVkV2l0aCgnRGlkIG5vdCBmaW5kIGFuIGFkZHJlc3Mgd2l0aCBmdW5kcyB0byByZWNvdmVyJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGlmIGJpdGdvS2V5IGlzIG1pc3NpbmcnLCBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAucmVjb3ZlckNvbnNvbGlkYXRpb25zKHtcbiAgICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS53cndVc2VyLnVzZXJLZXksXG4gICAgICAgICAgYmFja3VwS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJhY2t1cEtleSxcbiAgICAgICAgICBzdGFydGluZ1NjYW5JbmRleDogMSxcbiAgICAgICAgICBlbmRpbmdTY2FuSW5kZXg6IDIsXG4gICAgICAgICAgZHVyYWJsZU5vbmNlczogZHVyYWJsZU5vbmNlcyxcbiAgICAgICAgfSBhcyBTb2xDb25zb2xpZGF0aW9uUmVjb3ZlcnlPcHRpb25zKVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnbWlzc2luZyBiaXRnb0tleScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBzdGFydGluZ1NjYW5JbmRleCBpcyBub3QgZ2UgdG8gMScsIGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC5yZWNvdmVyQ29uc29saWRhdGlvbnMoe1xuICAgICAgICAgIHVzZXJLZXk6IHRlc3REYXRhLndyd1VzZXIudXNlcktleSxcbiAgICAgICAgICBiYWNrdXBLZXk6IHRlc3REYXRhLndyd1VzZXIuYmFja3VwS2V5LFxuICAgICAgICAgIGJpdGdvS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJpdGdvS2V5LFxuICAgICAgICAgIHN0YXJ0aW5nU2NhbkluZGV4OiAtMSxcbiAgICAgICAgICBkdXJhYmxlTm9uY2VzOiBkdXJhYmxlTm9uY2VzLFxuICAgICAgICB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aChcbiAgICAgICAgICAnSW52YWxpZCBzdGFydGluZyBvciBlbmRpbmcgaW5kZXggdG8gc2NhbiBmb3IgYWRkcmVzc2VzLiBzdGFydGluZ1NjYW5JbmRleDogLTEsIGVuZGluZ1NjYW5JbmRleDogMTkuJ1xuICAgICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBzY2FuIGZhY3RvciBpcyB0b28gaGlnaCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC5yZWNvdmVyQ29uc29saWRhdGlvbnMoe1xuICAgICAgICAgIHVzZXJLZXk6IHRlc3REYXRhLndyd1VzZXIudXNlcktleSxcbiAgICAgICAgICBiYWNrdXBLZXk6IHRlc3REYXRhLndyd1VzZXIuYmFja3VwS2V5LFxuICAgICAgICAgIGJpdGdvS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJpdGdvS2V5LFxuICAgICAgICAgIHN0YXJ0aW5nU2NhbkluZGV4OiAxLFxuICAgICAgICAgIGVuZGluZ1NjYW5JbmRleDogMzAwLFxuICAgICAgICAgIGR1cmFibGVOb25jZXM6IGR1cmFibGVOb25jZXMsXG4gICAgICAgIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKFxuICAgICAgICAgICdJbnZhbGlkIHN0YXJ0aW5nIG9yIGVuZGluZyBpbmRleCB0byBzY2FuIGZvciBhZGRyZXNzZXMuIHN0YXJ0aW5nU2NhbkluZGV4OiAxLCBlbmRpbmdTY2FuSW5kZXg6IDMwMC4nXG4gICAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdCdWlsZCBDb25zb2xpZGF0aW9uIFJlY292ZXJpZXMgKE1QQ3YyKTonLCAoKSA9PiB7XG4gICAgY29uc3QgbXBjVjJDb25zb2xpZGF0aW9uU2FuZEJveCA9IHNpbm9uLmNyZWF0ZVNhbmRib3goKTtcbiAgICBjb25zdCB1c2R0TWludEFkZHJlc3MgPSAnOWNncEJlTloySG5MZGE3TldhYVUxaTNOeVRzdGsyYzR6Q01VY29BR3NpOUMnO1xuICAgIGNvbnN0IGR1cmFibGVOb25jZXMgPSB7XG4gICAgICBwdWJsaWNLZXlzOiBbXG4gICAgICAgIHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LFxuICAgICAgICB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVB1YktleTIsXG4gICAgICAgIHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5MyxcbiAgICAgIF0sXG4gICAgICBzZWNyZXRLZXk6IHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHJpdktleSxcbiAgICB9O1xuXG4gICAgbGV0IGNhbGxCYWNrOiBzaW5vbi5TaW5vblN0dWI7XG4gICAgbGV0IG1wY1YyVXNlcktleTogc3RyaW5nO1xuICAgIGxldCBtcGNWMkJhY2t1cEtleTogc3RyaW5nO1xuICAgIGxldCBtcGNWMkNvbW1vbktleUNoYWluOiBzdHJpbmc7XG4gICAgbGV0IG1wY1YyQWRkcmVzczE6IHN0cmluZztcbiAgICBsZXQgbXBjVjJBZGRyZXNzMjogc3RyaW5nO1xuICAgIGxldCBtcGNWMkFkZHJlc3MzOiBzdHJpbmc7XG4gICAgbGV0IG1wY1YyVG9rZW5Vc2VyS2V5OiBzdHJpbmc7XG4gICAgbGV0IG1wY1YyVG9rZW5CYWNrdXBLZXk6IHN0cmluZztcbiAgICBsZXQgbXBjVjJUb2tlbkNvbW1vbktleUNoYWluOiBzdHJpbmc7XG4gICAgbGV0IG1wY1YyVG9rZW5CYXNlQWRkcmVzczogc3RyaW5nO1xuICAgIGxldCBtcGNWMlRva2VuQWRkcmVzczE6IHN0cmluZztcbiAgICBsZXQgd2FsbGV0UGFzc3BocmFzZTogc3RyaW5nO1xuXG4gICAgYmVmb3JlKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IFt1c2VyRGtnLCBiYWNrdXBEa2ddID0gYXdhaXQgTVBTVXRpbC5nZW5lcmF0ZUVkRHNhREtHS2V5U2hhcmVzKCk7XG4gICAgICBjb25zdCBbdG9rZW5Vc2VyRGtnLCB0b2tlbkJhY2t1cERrZ10gPSBhd2FpdCBNUFNVdGlsLmdlbmVyYXRlRWREc2FES0dLZXlTaGFyZXMoKTtcbiAgICAgIHdhbGxldFBhc3NwaHJhc2UgPSB0ZXN0RGF0YS5rZXlzLndhbGxldFBhc3N3b3JkO1xuXG4gICAgICBtcGNWMlVzZXJLZXkgPSBhd2FpdCBlbmNyeXB0KHdhbGxldFBhc3NwaHJhc2UsIHVzZXJEa2cuZ2V0UmVkdWNlZEtleVNoYXJlKCkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgICAgIG1wY1YyQmFja3VwS2V5ID0gYXdhaXQgZW5jcnlwdCh3YWxsZXRQYXNzcGhyYXNlLCBiYWNrdXBEa2cuZ2V0UmVkdWNlZEtleVNoYXJlKCkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgICAgIG1wY1YyQ29tbW9uS2V5Q2hhaW4gPSB1c2VyRGtnLmdldENvbW1vbktleWNoYWluKCk7XG4gICAgICBjb25zdCBtcGMgPSBhd2FpdCBFRERTQU1ldGhvZHMuZ2V0SW5pdGlhbGl6ZWRNcGNJbnN0YW5jZSgpO1xuXG4gICAgICBtcGNWMkFkZHJlc3MxID0gbmV3IEtleVBhaXIoeyBwdWI6IG1wYy5kZXJpdmVVbmhhcmRlbmVkKG1wY1YyQ29tbW9uS2V5Q2hhaW4sICdtLzEnKS5zbGljZSgwLCA2NCkgfSkuZ2V0QWRkcmVzcygpO1xuICAgICAgbXBjVjJBZGRyZXNzMiA9IG5ldyBLZXlQYWlyKHsgcHViOiBtcGMuZGVyaXZlVW5oYXJkZW5lZChtcGNWMkNvbW1vbktleUNoYWluLCAnbS8yJykuc2xpY2UoMCwgNjQpIH0pLmdldEFkZHJlc3MoKTtcbiAgICAgIG1wY1YyQWRkcmVzczMgPSBuZXcgS2V5UGFpcih7IHB1YjogbXBjLmRlcml2ZVVuaGFyZGVuZWQobXBjVjJDb21tb25LZXlDaGFpbiwgJ20vMycpLnNsaWNlKDAsIDY0KSB9KS5nZXRBZGRyZXNzKCk7XG5cbiAgICAgIG1wY1YyVG9rZW5Vc2VyS2V5ID0gYXdhaXQgZW5jcnlwdCh3YWxsZXRQYXNzcGhyYXNlLCB0b2tlblVzZXJEa2cuZ2V0UmVkdWNlZEtleVNoYXJlKCkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgICAgIG1wY1YyVG9rZW5CYWNrdXBLZXkgPSBhd2FpdCBlbmNyeXB0KHdhbGxldFBhc3NwaHJhc2UsIHRva2VuQmFja3VwRGtnLmdldFJlZHVjZWRLZXlTaGFyZSgpLnRvU3RyaW5nKCdiYXNlNjQnKSk7XG4gICAgICBtcGNWMlRva2VuQ29tbW9uS2V5Q2hhaW4gPSB0b2tlblVzZXJEa2cuZ2V0Q29tbW9uS2V5Y2hhaW4oKTtcblxuICAgICAgbXBjVjJUb2tlbkJhc2VBZGRyZXNzID0gbmV3IEtleVBhaXIoe1xuICAgICAgICBwdWI6IG1wYy5kZXJpdmVVbmhhcmRlbmVkKG1wY1YyVG9rZW5Db21tb25LZXlDaGFpbiwgJ20vMCcpLnNsaWNlKDAsIDY0KSxcbiAgICAgIH0pLmdldEFkZHJlc3MoKTtcbiAgICAgIG1wY1YyVG9rZW5BZGRyZXNzMSA9IG5ldyBLZXlQYWlyKHtcbiAgICAgICAgcHViOiBtcGMuZGVyaXZlVW5oYXJkZW5lZChtcGNWMlRva2VuQ29tbW9uS2V5Q2hhaW4sICdtLzEnKS5zbGljZSgwLCA2NCksXG4gICAgICB9KS5nZXRBZGRyZXNzKCk7XG4gICAgfSk7XG5cbiAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgIGNhbGxCYWNrID0gbXBjVjJDb25zb2xpZGF0aW9uU2FuZEJveC5zdHViKFNvbC5wcm90b3R5cGUsICdnZXREYXRhRnJvbU5vZGUnIGFzIGtleW9mIFNvbCk7XG5cbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDogeyBpZDogJzEnLCBqc29ucnBjOiAnMi4wJywgbWV0aG9kOiAnZ2V0TGF0ZXN0QmxvY2toYXNoJywgcGFyYW1zOiBbeyBjb21taXRtZW50OiAnZmluYWxpemVkJyB9XSB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEJsb2NraGFzaFJlc3BvbnNlKTtcblxuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRGZWVGb3JNZXNzYWdlJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Npbm9uLm1hdGNoLnN0cmluZywgeyBjb21taXRtZW50OiAnZmluYWxpemVkJyB9XSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEZlZXNGb3JNZXNzYWdlUmVzcG9uc2UpO1xuXG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHsgaWQ6ICcxJywganNvbnJwYzogJzIuMCcsIG1ldGhvZDogJ2dldE1pbmltdW1CYWxhbmNlRm9yUmVudEV4ZW1wdGlvbicsIHBhcmFtczogWzE2NV0gfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRNaW5pbXVtQmFsYW5jZUZvclJlbnRFeGVtcHRpb25SZXNwb25zZSk7XG5cbiAgICAgIG1wY1YyQ29uc29saWRhdGlvblNhbmRCb3guc3R1YihUcmFuc2FjdGlvbi5wcm90b3R5cGUsICd0b0Jyb2FkY2FzdEZvcm1hdCcpLnJldHVybnMoJ3N0dWItc2VyaWFsaXplZC10eCcpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICAgIG1wY1YyQ29uc29saWRhdGlvblNhbmRCb3gucmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCBNUEN2MiBzaWduZWQgbmF0aXZlIFNPTCBjb25zb2xpZGF0aW9uIHJlY292ZXJpZXMgYWNyb3NzIDIrIGZ1bmRlZCBpbmRleGVzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gU3B5IG9uIHRoZSBwcml2YXRlIGRldGVjdGlvbiBoZWxwZXIg4oCUIG11c3QgYmUgY2FsbGVkIG9uY2UgYXQgdG9wLCBub3QgcGVyLWl0ZXJhdGlvblxuICAgICAgY29uc3QgaXNNcGN2MlNweSA9IG1wY1YyQ29uc29saWRhdGlvblNhbmRCb3guc3B5KFNvbC5wcm90b3R5cGUsICdpc01wY3YyU2lnbmluZ01hdGVyaWFsJyBhcyBrZXlvZiBTb2wpO1xuXG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3MoeyBwYXlsb2FkOiB7IGlkOiAnMScsIGpzb25ycGM6ICcyLjAnLCBtZXRob2Q6ICdnZXRCYWxhbmNlJywgcGFyYW1zOiBbbXBjVjJBZGRyZXNzMV0gfSB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2VOb0Z1bmRzKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7IHBheWxvYWQ6IHsgaWQ6ICcxJywganNvbnJwYzogJzIuMCcsIG1ldGhvZDogJ2dldEJhbGFuY2UnLCBwYXJhbXM6IFttcGNWMkFkZHJlc3MyXSB9IH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEJhbGFuY2VSZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3MoeyBwYXlsb2FkOiB7IGlkOiAnMScsIGpzb25ycGM6ICcyLjAnLCBtZXRob2Q6ICdnZXRCYWxhbmNlJywgcGFyYW1zOiBbbXBjVjJBZGRyZXNzM10gfSB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRUb2tlbkFjY291bnRzQnlPd25lcicsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgbXBjVjJBZGRyZXNzMixcbiAgICAgICAgICAgICAgeyBwcm9ncmFtSWQ6ICdUb2tlbmtlZ1FmZVp5aU53QUpiTmJHS1BGWENXdUJ2ZjlTczYyM1ZRNURBJyB9LFxuICAgICAgICAgICAgICB7IGVuY29kaW5nOiAnanNvblBhcnNlZCcgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lclJlc3BvbnNlTm9BY2NvdW50cyk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldFRva2VuQWNjb3VudHNCeU93bmVyJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICBtcGNWMkFkZHJlc3MzLFxuICAgICAgICAgICAgICB7IHByb2dyYW1JZDogJ1Rva2Vua2VnUWZlWnlpTndBSmJOYkdLUEZYQ1d1QnZmOVNzNjIzVlE1REEnIH0sXG4gICAgICAgICAgICAgIHsgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyUmVzcG9uc2VOb0FjY291bnRzKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QWNjb3VudEluZm8nLFxuICAgICAgICAgICAgcGFyYW1zOiBbdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQdWJLZXksIHsgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyB9XSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRJbmZvUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRBY2NvdW50SW5mbycsXG4gICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVB1YktleTIsIHsgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyB9XSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRJbmZvUmVzcG9uc2UyKTtcblxuICAgICAgY29uc3QgcmVzID0gKGF3YWl0IGJhc2Vjb2luLnJlY292ZXJDb25zb2xpZGF0aW9ucyh7XG4gICAgICAgIHVzZXJLZXk6IG1wY1YyVXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiBtcGNWMkJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IG1wY1YyQ29tbW9uS2V5Q2hhaW4sXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIHN0YXJ0aW5nU2NhbkluZGV4OiAxLFxuICAgICAgICBlbmRpbmdTY2FuSW5kZXg6IDQsXG4gICAgICAgIGR1cmFibGVOb25jZXMsXG4gICAgICB9KSkgYXMgTVBDVHhzO1xuXG4gICAgICByZXMuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgcmVzLnRyYW5zYWN0aW9ucy5sZW5ndGguc2hvdWxkLmVxdWFsKDIpO1xuICAgICAgKHJlcy5sYXN0U2NhbkluZGV4ID8/IDApLnNob3VsZC5lcXVhbCgzKTtcblxuICAgICAgY29uc3QgdHhuMSA9IHJlcy50cmFuc2FjdGlvbnNbMF0gYXMgTVBDVHg7XG4gICAgICB0eG4xLnNlcmlhbGl6ZWRUeC5zaG91bGQuZXF1YWwoJ3N0dWItc2VyaWFsaXplZC10eCcpO1xuXG4gICAgICAvLyBpc01wY3YyU2lnbmluZ01hdGVyaWFsIG11c3QgTk9UIGJlIGNhbGxlZCBhdCBhbGwg4oCUIHJlY292ZXJDb25zb2xpZGF0aW9ucyBkZXRlY3RzIGRpcmVjdGx5XG4gICAgICAvLyBhbmQgdGhyZWFkcyBtdWx0aXNpZ1R5cGVWZXJzaW9uPSdNUEN2Micgc28gcmVjb3ZlcigpIHNraXBzIGRldGVjdGlvbiBlbnRpcmVseVxuICAgICAgbXBjVjJDb25zb2xpZGF0aW9uU2FuZEJveC5hc3NlcnQubm90Q2FsbGVkKGlzTXBjdjJTcHkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjYWxsIGlzTXBjdjJTaWduaW5nTWF0ZXJpYWwgZXhhY3RseSB6ZXJvIHRpbWVzIGluIHJlY292ZXIoKSB3aGVuIG11bHRpc2lnVHlwZVZlcnNpb24gaXMgcHJlLXJlc29sdmVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gaXNNcGN2MlNpZ25pbmdNYXRlcmlhbCBtdXN0IG5vdCBiZSBjYWxsZWQgaW5zaWRlIHJlY292ZXIoKSB3aGVuIHJlY292ZXJDb25zb2xpZGF0aW9uc1xuICAgICAgLy8gcHJlLXJlc29sdmVzIHRoZSByb3V0ZSBhbmQgcGFzc2VzIG11bHRpc2lnVHlwZVZlcnNpb249J01QQ3YyJ1xuICAgICAgY29uc3QgaXNNcGN2MlNweSA9IG1wY1YyQ29uc29saWRhdGlvblNhbmRCb3guc3B5KFNvbC5wcm90b3R5cGUsICdpc01wY3YyU2lnbmluZ01hdGVyaWFsJyBhcyBrZXlvZiBTb2wpO1xuXG4gICAgICAvLyBhZGRyZXNzZXMgMeKAkzQgYWxsIGhhdmUgbm8gZnVuZHMg4oCUIHNjYW4gcmFuZ2UgaXMgNSBpbmRleGVzIHdpZGVcbiAgICAgIGZvciAoY29uc3QgYWRkciBvZiBbbXBjVjJBZGRyZXNzMSwgbXBjVjJBZGRyZXNzMiwgbXBjVjJBZGRyZXNzM10pIHtcbiAgICAgICAgY2FsbEJhY2tcbiAgICAgICAgICAud2l0aEFyZ3MoeyBwYXlsb2FkOiB7IGlkOiAnMScsIGpzb25ycGM6ICcyLjAnLCBtZXRob2Q6ICdnZXRCYWxhbmNlJywgcGFyYW1zOiBbYWRkcl0gfSB9KVxuICAgICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEJhbGFuY2VSZXNwb25zZU5vRnVuZHMpO1xuICAgICAgfVxuICAgICAgY29uc3QgbXBjVjJBZGRyZXNzNCA9IG5ldyBLZXlQYWlyKHtcbiAgICAgICAgcHViOiAoYXdhaXQgRUREU0FNZXRob2RzLmdldEluaXRpYWxpemVkTXBjSW5zdGFuY2UoKSkuZGVyaXZlVW5oYXJkZW5lZChtcGNWMkNvbW1vbktleUNoYWluLCAnbS80Jykuc2xpY2UoMCwgNjQpLFxuICAgICAgfSkuZ2V0QWRkcmVzcygpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHsgcGF5bG9hZDogeyBpZDogJzEnLCBqc29ucnBjOiAnMi4wJywgbWV0aG9kOiAnZ2V0QmFsYW5jZScsIHBhcmFtczogW21wY1YyQWRkcmVzczRdIH0gfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50QmFsYW5jZVJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIG1wY1YyQWRkcmVzczQsXG4gICAgICAgICAgICAgIHsgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScgfSxcbiAgICAgICAgICAgICAgeyBlbmNvZGluZzogJ2pzb25QYXJzZWQnIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0VG9rZW5BY2NvdW50c0J5T3duZXJSZXNwb25zZU5vQWNjb3VudHMpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRBY2NvdW50SW5mbycsXG4gICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVB1YktleSwgeyBlbmNvZGluZzogJ2pzb25QYXJzZWQnIH1dLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEluZm9SZXNwb25zZSk7XG5cbiAgICAgIGF3YWl0IGJhc2Vjb2luLnJlY292ZXJDb25zb2xpZGF0aW9ucyh7XG4gICAgICAgIHVzZXJLZXk6IG1wY1YyVXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiBtcGNWMkJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IG1wY1YyQ29tbW9uS2V5Q2hhaW4sXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIHN0YXJ0aW5nU2NhbkluZGV4OiAxLFxuICAgICAgICBlbmRpbmdTY2FuSW5kZXg6IDUsXG4gICAgICAgIGR1cmFibGVOb25jZXMsXG4gICAgICB9KTtcblxuICAgICAgLy8gcmVjb3ZlcigpIG11c3Qgbm90IGNhbGwgaXNNcGN2MlNpZ25pbmdNYXRlcmlhbCDigJQgbXVsdGlzaWdUeXBlVmVyc2lvbiBzaG9ydC1jaXJjdWl0cyBpdFxuICAgICAgbXBjVjJDb25zb2xpZGF0aW9uU2FuZEJveC5hc3NlcnQubm90Q2FsbGVkKGlzTXBjdjJTcHkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCBNUEN2MiBzaWduZWQgU1BMIHRva2VuIGNvbnNvbGlkYXRpb24gcmVjb3ZlcmllcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7IHBheWxvYWQ6IHsgaWQ6ICcxJywganNvbnJwYzogJzIuMCcsIG1ldGhvZDogJ2dldEJhbGFuY2UnLCBwYXJhbXM6IFttcGNWMlRva2VuQWRkcmVzczFdIH0gfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50QmFsYW5jZVJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIG1wY1YyVG9rZW5BZGRyZXNzMSxcbiAgICAgICAgICAgICAgeyBwcm9ncmFtSWQ6ICdUb2tlbmtlZ1FmZVp5aU53QUpiTmJHS1BGWENXdUJ2ZjlTczYyM1ZRNURBJyB9LFxuICAgICAgICAgICAgICB7IGVuY29kaW5nOiAnanNvblBhcnNlZCcgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lclJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIG1wY1YyVG9rZW5CYXNlQWRkcmVzcyxcbiAgICAgICAgICAgICAgeyBwcm9ncmFtSWQ6ICdUb2tlbmtlZ1FmZVp5aU53QUpiTmJHS1BGWENXdUJ2ZjlTczYyM1ZRNURBJyB9LFxuICAgICAgICAgICAgICB7IGVuY29kaW5nOiAnanNvblBhcnNlZCcgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lclJlc3BvbnNlTm9BY2NvdW50cyk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEFjY291bnRJbmZvJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Rlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LCB7IGVuY29kaW5nOiAnanNvblBhcnNlZCcgfV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50SW5mb1Jlc3BvbnNlKTtcblxuICAgICAgY29uc3QgcmVzID0gKGF3YWl0IGJhc2Vjb2luLnJlY292ZXJDb25zb2xpZGF0aW9ucyh7XG4gICAgICAgIHVzZXJLZXk6IG1wY1YyVG9rZW5Vc2VyS2V5LFxuICAgICAgICBiYWNrdXBLZXk6IG1wY1YyVG9rZW5CYWNrdXBLZXksXG4gICAgICAgIGJpdGdvS2V5OiBtcGNWMlRva2VuQ29tbW9uS2V5Q2hhaW4sXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIHN0YXJ0aW5nU2NhbkluZGV4OiAxLFxuICAgICAgICBlbmRpbmdTY2FuSW5kZXg6IDIsXG4gICAgICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiB1c2R0TWludEFkZHJlc3MsXG4gICAgICAgIGR1cmFibGVOb25jZXMsXG4gICAgICB9KSkgYXMgTVBDVHhzO1xuXG4gICAgICByZXMuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgcmVzLnRyYW5zYWN0aW9ucy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgY29uc3QgdHhuID0gcmVzLnRyYW5zYWN0aW9uc1swXSBhcyBNUENUeDtcbiAgICAgIHR4bi5zZXJpYWxpemVkVHguc2hvdWxkLmVxdWFsKCdzdHViLXNlcmlhbGl6ZWQtdHgnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdXNlIGxlZ2FjeSBkZXJpdmF0aW9uIGZvciBNUEN2MiB1bnNpZ25lZCAobm8gcGFzc3BocmFzZSkgY29uc29saWRhdGlvbiDigJQgY29sZCBwYXRoIHVuY2hhbmdlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFdpdGhvdXQgd2FsbGV0UGFzc3BocmFzZSwgaXNNcGNWMiBtdXN0IGJlIGZhbHNlLCBiYXNlIGFkZHJlc3MgdXNlcyBNUEMuZGVyaXZlVW5oYXJkZW5lZFxuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7IGlkOiAnMScsIGpzb25ycGM6ICcyLjAnLCBtZXRob2Q6ICdnZXRCYWxhbmNlJywgcGFyYW1zOiBbdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMV0gfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50QmFsYW5jZVJlc3BvbnNlTm9GdW5kcyk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHsgaWQ6ICcxJywganNvbnJwYzogJzIuMCcsIG1ldGhvZDogJ2dldEJhbGFuY2UnLCBwYXJhbXM6IFt0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MyXSB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRUb2tlbkFjY291bnRzQnlPd25lcicsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMixcbiAgICAgICAgICAgICAgeyBwcm9ncmFtSWQ6ICdUb2tlbmtlZ1FmZVp5aU53QUpiTmJHS1BGWENXdUJ2ZjlTczYyM1ZRNURBJyB9LFxuICAgICAgICAgICAgICB7IGVuY29kaW5nOiAnanNvblBhcnNlZCcgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lclJlc3BvbnNlTm9BY2NvdW50cyk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEFjY291bnRJbmZvJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Rlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LCB7IGVuY29kaW5nOiAnanNvblBhcnNlZCcgfV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50SW5mb1Jlc3BvbnNlKTtcblxuICAgICAgY29uc3QgcmVzID0gKGF3YWl0IGJhc2Vjb2luLnJlY292ZXJDb25zb2xpZGF0aW9ucyh7XG4gICAgICAgIGJpdGdvS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJpdGdvS2V5LFxuICAgICAgICBzdGFydGluZ1NjYW5JbmRleDogMSxcbiAgICAgICAgZW5kaW5nU2NhbkluZGV4OiAzLFxuICAgICAgICBkdXJhYmxlTm9uY2VzLFxuICAgICAgfSkpIGFzIE1QQ1N3ZWVwVHhzO1xuXG4gICAgICByZXMuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgcmVzLnR4UmVxdWVzdHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIGNvbnN0IHR4bjEgPSByZXMudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeDtcbiAgICAgIC8vIHNvdXJjZSBhZGRyZXNzIGlzIGxlZ2FjeS1kZXJpdmVkIGZyb20gd2FsbGV0QWRkcmVzczJcbiAgICAgIHNob3VsZC5lcXVhbCh0eG4xLmNvaW5TcGVjaWZpYz8uY29tbW9uS2V5Y2hhaW4sIHRlc3REYXRhLndyd1VzZXIuYml0Z29LZXkucmVwbGFjZSgvXFxzL2csICcnKSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdicm9hZGNhc3RUcmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBzYW5kQm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuXG4gICAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICAgIHNhbmRCb3gucmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBicm9hZGNhc3QgYSB0cmFuc2FjdGlvbiBzdWNjZXNmdWxseScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHNlcmlhbGl6ZWRTaWduZWRUcmFuc2FjdGlvbiA9IHRlc3REYXRhLnJhd1RyYW5zYWN0aW9ucy50cmFuc2Zlci5zaWduZWQ7XG4gICAgICBjb25zdCBicm9hZGNhc3RTdHViID0gc2FuZEJveFxuICAgICAgICAuc3R1YihTb2wucHJvdG90eXBlLCAnZ2V0RGF0YUZyb21Ob2RlJyBhcyBrZXlvZiBTb2wpXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnc2VuZFRyYW5zYWN0aW9uJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICBzZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb24sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogJ2Jhc2U2NCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuYnJvYWRjYXN0VHJhbnNhY3Rpb25SZXNwb25zZSk7XG5cbiAgICAgIGNvbnN0IGJyb2FkY2FzdFR4biA9IGF3YWl0IGJhc2Vjb2luLmJyb2FkY2FzdFRyYW5zYWN0aW9uKHsgc2VyaWFsaXplZFNpZ25lZFRyYW5zYWN0aW9uIH0pO1xuICAgICAgYXNzZXJ0Lm9rKGJyb2FkY2FzdFR4bik7XG4gICAgICBhc3NlcnQub2soYnJvYWRjYXN0VHhuLnR4SWQpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKFxuICAgICAgICBicm9hZGNhc3RUeG4udHhJZCxcbiAgICAgICAgJzJpZDNZQzJqSzlHNVdvMnBoRHg0Z0pWQWV3OERjWTVOQW9qblZ1YW84cmt4d1BZUGU4Y1N3RTVHemhFZ0pBMnk4ZlZqREVvNmlSNnlrQnZEeHJUUXJ0cGInXG4gICAgICApO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJyb2FkY2FzdFN0dWIuY2FsbENvdW50LCAxKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgaWYgZ290IGFuIGVycm9yIGZyb20gdGhlIG5vZGUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBzZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb24gPSB0ZXN0RGF0YS5yYXdUcmFuc2FjdGlvbnMudHJhbnNmZXIuc2lnbmVkO1xuICAgICAgY29uc3QgYnJvYWRjYXN0U3R1YiA9IHNhbmRCb3hcbiAgICAgICAgLnN0dWIoU29sLnByb3RvdHlwZSwgJ2dldERhdGFGcm9tTm9kZScgYXMga2V5b2YgU29sKVxuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ3NlbmRUcmFuc2FjdGlvbicsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgc2VyaWFsaXplZFNpZ25lZFRyYW5zYWN0aW9uLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6ICdiYXNlNjQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmJyb2FkY2FzdFRyYW5zYWN0aW9uUmVzcG9uc2VFcnJvcik7XG5cbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgYXdhaXQgYmFzZWNvaW4uYnJvYWRjYXN0VHJhbnNhY3Rpb24oeyBzZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb24gfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHsgbWVzc2FnZTogJ0Vycm9yIGJyb2FkY2FzdGluZyB0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24gc2ltdWxhdGlvbiBmYWlsZWQ6IEJsb2NraGFzaCBub3QgZm91bmQnIH1cbiAgICAgICk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnJvYWRjYXN0U3R1Yi5jYWxsQ291bnQsIDEpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBpcyBub3QgYSB2YWxpZCB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHNlcmlhbGl6ZWRTaWduZWRUcmFuc2FjdGlvbiA9ICdyYW5kb21zdHJpbmcnO1xuXG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGF3YWl0IGJhc2Vjb2luLmJyb2FkY2FzdFRyYW5zYWN0aW9uKHsgc2VyaWFsaXplZFNpZ25lZFRyYW5zYWN0aW9uIH0pO1xuICAgICAgICB9LFxuICAgICAgICB7IG1lc3NhZ2U6ICdJbnZhbGlkIHJhdyB0cmFuc2FjdGlvbicgfVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgaWYgaXMgbm90IGEgc2lnbmVkIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgc2VyaWFsaXplZFNpZ25lZFRyYW5zYWN0aW9uID0gdGVzdERhdGEucmF3VHJhbnNhY3Rpb25zLnRyYW5zZmVyLnVuc2lnbmVkO1xuXG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGF3YWl0IGJhc2Vjb2luLmJyb2FkY2FzdFRyYW5zYWN0aW9uKHsgc2VyaWFsaXplZFNpZ25lZFRyYW5zYWN0aW9uIH0pO1xuICAgICAgICB9LFxuICAgICAgICB7IG1lc3NhZ2U6ICdJbnZhbGlkIHJhdyB0cmFuc2FjdGlvbicgfVxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0F1ZGl0S2V5JywgKCkgPT4ge1xuICAgIGNvbnN0IHsga2V5OiBrZXlTdHJpbmcsIGNvbW1vbktleWNoYWluIH0gPSBzb2xCYWNrdXBLZXk7XG4gICAgY29uc3Qga2V5ID0ga2V5U3RyaW5nLnJlcGxhY2UoL1xccy9nLCAnJyk7XG4gICAgY29uc3Qgd2FsbGV0UGFzc3BocmFzZSA9ICdrQW1bRUZRNm89U3hsY0xGRHclLCc7XG4gICAgY29uc3QgbXVsdGlTaWdUeXBlID0gJ3Rzcyc7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBmb3IgdmFsaWQgaW5wdXRzJywgKCkgPT4ge1xuICAgICAgYmFzZWNvaW4uYXNzZXJ0SXNWYWxpZEtleSh7XG4gICAgICAgIGVuY3J5cHRlZFBydjoga2V5LFxuICAgICAgICBwdWJsaWNLZXk6IGNvbW1vbktleWNoYWluLFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICBtdWx0aVNpZ1R5cGUsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3IgaWYgdGhlIGNvbW1vbktleWNoYWluIGlzIGludmFsaWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBhbHRlcmVkQ29tbW9uS2V5Y2hhaW4gPSBnZW5lcmF0ZVJhbmRvbVBhc3N3b3JkKDEwKTtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgICAoKSA9PlxuICAgICAgICAgIGJhc2Vjb2luLmFzc2VydElzVmFsaWRLZXkoe1xuICAgICAgICAgICAgZW5jcnlwdGVkUHJ2OiBrZXksXG4gICAgICAgICAgICBwdWJsaWNLZXk6IGFsdGVyZWRDb21tb25LZXljaGFpbixcbiAgICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgICAgICBtdWx0aVNpZ1R5cGUsXG4gICAgICAgICAgfSksXG4gICAgICAgIHtcbiAgICAgICAgICBtZXNzYWdlOiAnSW52YWxpZCBjb21tb24ga2V5Y2hhaW4nLFxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBpZiB0aGUgd2FsbGV0UGFzc3BocmFzZSBpcyBpbmNvcnJlY3QnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBpbmNvcnJlY3RQYXNzcGhyYXNlID0gJ2Zvbyc7XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgKCkgPT5cbiAgICAgICAgICBiYXNlY29pbi5hc3NlcnRJc1ZhbGlkS2V5KHtcbiAgICAgICAgICAgIGVuY3J5cHRlZFBydjoga2V5LFxuICAgICAgICAgICAgcHVibGljS2V5OiBjb21tb25LZXljaGFpbixcbiAgICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2U6IGluY29ycmVjdFBhc3NwaHJhc2UsXG4gICAgICAgICAgICBtdWx0aVNpZ1R5cGUsXG4gICAgICAgICAgfSksXG4gICAgICAgIHtcbiAgICAgICAgICBtZXNzYWdlOiAnZmFpbGVkIHRvIGRlY3J5cHQgcHJ2OiBpbmNvcnJlY3QgcGFzc3dvcmQnLFxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBpZiB0aGUga2V5IGlzIGFsdGVyZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBhbHRlcmVkS2V5ID0ga2V5LnJlcGxhY2UoL1swLTldL2csICcwJyk7XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgKCkgPT5cbiAgICAgICAgICBiYXNlY29pbi5hc3NlcnRJc1ZhbGlkS2V5KHtcbiAgICAgICAgICAgIGVuY3J5cHRlZFBydjogYWx0ZXJlZEtleSxcbiAgICAgICAgICAgIHB1YmxpY0tleTogY29tbW9uS2V5Y2hhaW4sXG4gICAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICAgICAgbXVsdGlTaWdUeXBlLFxuICAgICAgICAgIH0pLFxuICAgICAgICB7XG4gICAgICAgICAgbWVzc2FnZTogJ2ZhaWxlZCB0byBkZWNyeXB0IHBydjogZGVjcnlwdDogY2lwaGVydGV4dCBpcyBub3QgdmFsaWQgSlNPTicsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSBjb25zb2xpZGF0aW9uIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gU2V0IHVwIHdhbGxldCBkYXRhXG4gICAgICBjb25zdCB3YWxsZXREYXRhID0ge1xuICAgICAgICBpZDogJzViMzQyNTJmMWJmMzQ5OTMwZTM0MDIwYTAwMDAwMDAwJyxcbiAgICAgICAgY29pbjogJ3Rzb2wnLFxuICAgICAgICBrZXlzOiBbXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NTAwMDAwMDAwJyxcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc2MDAwMDAwMDAnLFxuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzcwMDAwMDAwMCcsXG4gICAgICAgIF0sXG4gICAgICAgIGNvaW5TcGVjaWZpYzoge1xuICAgICAgICAgIHJvb3RBZGRyZXNzOiB3YWxsZXQucHViLFxuICAgICAgICB9LFxuICAgICAgICBtdWx0aXNpZ1R5cGU6ICd0c3MnLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGZha2VQcnYgPSBhd2FpdCBlbmNyeXB0KCdwYXNzd29yZCcsICdwcnYnKTtcblxuICAgICAgY29uc3Qgd2FsbGV0T2JqID0gbmV3IFdhbGxldChiaXRnbywgYmFzZWNvaW4sIHdhbGxldERhdGEpO1xuICAgICAgY29uc3QgYmdVcmwgPSBjb21tb24uRW52aXJvbm1lbnRzWydtb2NrJ10udXJpO1xuXG4gICAgICBub2NrKGJnVXJsKVxuICAgICAgICAuZ2V0KCcvYXBpL3YyL3Rzb2wva2V5LzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NTAwMDAwMDAwJylcbiAgICAgICAgLnJlcGx5KDIwMCwgW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGVuY3J5cHRlZFBydjogZmFrZVBydixcbiAgICAgICAgICB9LFxuICAgICAgICBdKTtcblxuICAgICAgLy8gTW9jayB0aGUgQVBJIHJlc3BvbnNlIGZvciBidWlsZEFjY291bnRDb25zb2xpZGF0aW9uc1xuICAgICAgbm9jayhiZ1VybClcbiAgICAgICAgLnBvc3QoJy9hcGkvdjIvdHNvbC93YWxsZXQvNWIzNDI1MmYxYmYzNDk5MzBlMzQwMjBhMDAwMDAwMDAvY29uc29saWRhdGVBY2NvdW50L2J1aWxkJylcbiAgICAgICAgLnJlcGx5KDIwMCwgW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR4UmVxdWVzdElkOiAnNGZkZDBjYWUtMjU2My00M2IxLWI1Y2YtOTQ4NjUxNThjYTEwJyxcbiAgICAgICAgICAgIHdhbGxldElkOiAnNjMwNjhlZDRlZmE2M2EwMDA4NzdmMDJmZDRiMGZhNmQnLFxuICAgICAgICAgICAgdHhIZXg6XG4gICAgICAgICAgICAgICcwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNmY1MDEzMGFiZjhkMGQ4OTQzYzViOWE1MWE1NzQ4ODZhN2Q3YjNkOGRiMThmMGRkYjRhYjhiNmQzZWMyN2UzYzJmMzZmMzMzOWJiOTJkNDI5NmFmNmFlNGQzYWJmYmIwNzg3N2Y3N2QwMDMzYzg4M2RlMDhmYTRhMmVlYTY3MGQwMjAxMDIwNjc0YTlkZjJiOTRhYTRiNGFkYTEyMDJkYzI4OTFiZTM2NjUwMWQwYWNiNGEwMWNhM2UwMmU3ZmQ2YzFmNTA1YTcxYzk2MTcyMDQ0ZjEyMTdjMzc4NGU4ZjAyZjQ5ZTJjOGZjMzU5MWU4MTI5NGFiNTQzOTRmOWQyMmZkN2I3YThmODQwMWMzZjY3Y2ZhNTI1MThiMzRhMDliMDhmNGVhNzdlMWM0ZmI5ZDg5YmZhY2NkYzMzY2Y4YjhhOWNmOGQ3YmYwZTA0Yzg5YzUwNDI4ZTRlZGE1Y2JiNzU5NDI3YzM3MGYwYTI5YTUwYmIwZDE0MDdlNTc5MjRiMGNjNWIzNmYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDZhN2Q1MTcxOTJjNTY4ZWUwOGE4NDVmNzNkMjk3ODhjZjAzNWMzMTQ1YjIxYWIzNDRkODA2MmVhOTQwMDAwMDQwYzk1NjgxOTVkNjdlYjZiMzk2ZmRiZTk3YmEyZTI3NjYyMmVmMDAyM2FmMDlmMjNlNmUwMjkyYWJiNjc4ZDkwMjA0MDMwMzA1MDEwNDA0MDAwMDAwMDQwMjAwMDIwYzAyMDAwMDAwMDEwMDAwMDAwMDAwMDAwMCcsXG4gICAgICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgICAgIGZlZTogMTAwMDAsXG4gICAgICAgICAgICAgIGZlZVN0cmluZzogJzEwMDAwJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0eEluZm86IHtcbiAgICAgICAgICAgICAgbWluZXJGZWU6ICcxMDAwMCcsXG4gICAgICAgICAgICAgIHNwZW5kQW1vdW50OiAnMTU0Nzg2NCcsXG4gICAgICAgICAgICAgIHNwZW5kQW1vdW50czogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGNvaW5OYW1lOiAndHNvbCcsXG4gICAgICAgICAgICAgICAgICBhbW91bnRTdHJpbmc6ICcxNTQ3ODY0JyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBwYXlHb0ZlZTogJzAnLFxuICAgICAgICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgYWRkcmVzczogJzhyUVhlVkVNckt2dFdDRUppckVNNmNLWW5iWnVUcVZUYnFSUGlNTUFKOFI0JyxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiAxNTQ3ODY0LFxuICAgICAgICAgICAgICAgICAgd2FsbGV0OiAnNjMwNjhlZDRlZmE2M2EwMDA4NzdmMDJmJyxcbiAgICAgICAgICAgICAgICAgIHdhbGxldHM6IFsnNjMwNjhlZDRlZmE2M2EwMDA4NzdmMDJmJ10sXG4gICAgICAgICAgICAgICAgICBlbnRlcnByaXNlOiAnNjJkNzFhNmI4NjA2OGYwMDA4ZjAyOWZkJyxcbiAgICAgICAgICAgICAgICAgIGVudGVycHJpc2VzOiBbJzYyZDcxYTZiODYwNjhmMDAwOGYwMjlmZCddLFxuICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcxNTQ3ODY0JyxcbiAgICAgICAgICAgICAgICAgIGNvaW5OYW1lOiAndHNvbCcsXG4gICAgICAgICAgICAgICAgICB3YWxsZXRUeXBlOiAnaG90JyxcbiAgICAgICAgICAgICAgICAgIHdhbGxldFR5cGVzOiBbJ2hvdCddLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiAxNTQ3ODY0LFxuICAgICAgICAgICAgICAgICAgYWRkcmVzczogJ0NtWXNOM2Y4YmNtNEJEa0ZKV05zdllnalJ4TVRMSDZ2YkpXTmZZZG1IN0dVJyxcbiAgICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTU0Nzg2NCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB2YWx1ZTogMTAwMDAsXG4gICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnQ21Zc04zZjhiY200QkRrRkpXTnN2WWdqUnhNVExINnZiSldOZllkbUg3R1UnLFxuICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcxMDAwMCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgdHlwZTogJ1NlbmQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbnNvbGlkYXRlSWQ6ICc2OGE3ZDVkMGM2NmU3NGUyMTZiOTcxNzNiZDU1OGM2ZCcsXG4gICAgICAgICAgICBjb2luOiAndHNvbCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG5cbiAgICAgIC8vIENhbGwgdGhlIGZ1bmN0aW9uIHRvIHRlc3RcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgYXdhaXQgd2FsbGV0T2JqLnNlbmRBY2NvdW50Q29uc29saWRhdGlvbnMoe1xuICAgICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogJ3Bhc3N3b3JkJyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG1lc3NhZ2U6ICd0eCBvdXRwdXRzIGRvZXMgbm90IG1hdGNoIHdpdGggZXhwZWN0ZWQgYWRkcmVzcycsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSB2YWxpZCBhIGNvbnNvbGlkYXRpb24gdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBjb25zb2xpZGF0aW9uVHggPSB7XG4gICAgICAgIHR4UmVxdWVzdElkOiAnNGZkZDBjYWUtMjU2My00M2IxLWI1Y2YtOTQ4NjUxNThjYTEwJyxcbiAgICAgICAgd2FsbGV0SWQ6ICc2MzA2OGVkNGVmYTYzYTAwMDg3N2YwMmZkNGIwZmE2ZCcsXG4gICAgICAgIHR4SGV4OlxuICAgICAgICAgICcwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAxMDIwNmFlZGEyNTNhMzMxZGU0ODk4MzgyNDZkZjkzODc5NDQwYWY4YzYyYWM0OTY3NjU4ZWRjMmJiNWQ1MmI5NzU5ZDkxYzk2MTcyMDQ0ZjEyMTdjMzc4NGU4ZjAyZjQ5ZTJjOGZjMzU5MWU4MTI5NGFiNTQzOTRmOWQyMmZkN2I3YThmNzRhOWRmMmI5NGFhNGI0YWRhMTIwMmRjMjg5MWJlMzY2NTAxZDBhY2I0YTAxY2EzZTAyZTdmZDZjMWY1MDVhN2QyNzM0ZjM5NTJmM2ViNGFlZmNmNmM3YTYwOTJlOTc5ZGQzZmU1NTYzY2NmYWNhMWNjOTI2NTJhMTVkZGQzOTMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDZhN2Q1MTcxOTJjNTY4ZWUwOGE4NDVmNzNkMjk3ODhjZjAzNWMzMTQ1YjIxYWIzNDRkODA2MmVhOTQwMDAwMDQyOGRhZDQxYmJlZGViMzgwMTgzNzllNGNlZWI3ZTgwNzU3ZDc0ZGQwMGFlOGM0N2MzOGQ1OTc0NzczMzlhZDgwMjA0MDMwMzA1MDEwNDA0MDAwMDAwMDQwMjAwMDIwYzAyMDAwMDAwNTg5ZTE3MDAwMDAwMDAwMCcsXG4gICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICBmZWU6IDEwMDAwLFxuICAgICAgICAgIGZlZVN0cmluZzogJzEwMDAwJyxcbiAgICAgICAgfSxcbiAgICAgICAgdHhJbmZvOiB7XG4gICAgICAgICAgbWluZXJGZWU6ICcxMDAwMCcsXG4gICAgICAgICAgc3BlbmRBbW91bnQ6ICcxNTQ3ODY0JyxcbiAgICAgICAgICBzcGVuZEFtb3VudHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29pbk5hbWU6ICd0c29sJyxcbiAgICAgICAgICAgICAgYW1vdW50U3RyaW5nOiAnMTU0Nzg2NCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcGF5R29GZWU6ICcwJyxcbiAgICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGFkZHJlc3M6ICc4clFYZVZFTXJLdnRXQ0VKaXJFTTZjS1luYlp1VHFWVGJxUlBpTU1BSjhSNCcsXG4gICAgICAgICAgICAgIHZhbHVlOiAxNTQ3ODY0LFxuICAgICAgICAgICAgICB3YWxsZXQ6ICc2MzA2OGVkNGVmYTYzYTAwMDg3N2YwMmYnLFxuICAgICAgICAgICAgICB3YWxsZXRzOiBbJzYzMDY4ZWQ0ZWZhNjNhMDAwODc3ZjAyZiddLFxuICAgICAgICAgICAgICBlbnRlcnByaXNlOiAnNjJkNzFhNmI4NjA2OGYwMDA4ZjAyOWZkJyxcbiAgICAgICAgICAgICAgZW50ZXJwcmlzZXM6IFsnNjJkNzFhNmI4NjA2OGYwMDA4ZjAyOWZkJ10sXG4gICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTU0Nzg2NCcsXG4gICAgICAgICAgICAgIGNvaW5OYW1lOiAndHNvbCcsXG4gICAgICAgICAgICAgIHdhbGxldFR5cGU6ICdob3QnLFxuICAgICAgICAgICAgICB3YWxsZXRUeXBlczogWydob3QnXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdmFsdWU6IDE1NDc4NjQsXG4gICAgICAgICAgICAgIGFkZHJlc3M6ICdDbVlzTjNmOGJjbTRCRGtGSldOc3ZZZ2pSeE1UTEg2dmJKV05mWWRtSDdHVScsXG4gICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTU0Nzg2NCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB2YWx1ZTogMTAwMDAsXG4gICAgICAgICAgICAgIGFkZHJlc3M6ICdDbVlzTjNmOGJjbTRCRGtGSldOc3ZZZ2pSeE1UTEg2dmJKV05mWWRtSDdHVScsXG4gICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTAwMDAnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHR5cGU6ICdTZW5kJyxcbiAgICAgICAgfSxcbiAgICAgICAgY29uc29saWRhdGVJZDogJzY4YTdkNWQwYzY2ZTc0ZTIxNmI5NzE3M2JkNTU4YzZkJyxcbiAgICAgICAgY29pbjogJ3Rzb2wnLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgbW9ja2VkV2FsbGV0OiBQYXJ0aWFsPElXYWxsZXQ+ID0ge1xuICAgICAgICBjb2luU3BlY2lmaWM6ICgpID0+IHtcbiAgICAgICAgICBjb25zdCBjcyA9IHtcbiAgICAgICAgICAgIHJvb3RBZGRyZXNzOiAnOHJRWGVWRU1yS3Z0V0NFSmlyRU02Y0tZbmJadVRxVlRicVJQaU1NQUo4UjQnLFxuICAgICAgICAgIH0gYXMgV2FsbGV0Q29pblNwZWNpZmljO1xuICAgICAgICAgIHJldHVybiBjcztcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhKGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICAgIGJsb2NraGFzaDogJycsXG4gICAgICAgICAgICBmZWVQYXllcjogJycsXG4gICAgICAgICAgICB0eFBhcmFtczoge30sXG4gICAgICAgICAgICB0eFByZWJ1aWxkOiBjb25zb2xpZGF0aW9uVHggYXMgdW5rbm93biBhcyBUcmFuc2FjdGlvblByZWJ1aWxkLFxuICAgICAgICAgICAgd2FsbGV0VHlwZTogJ3RzcycsXG4gICAgICAgICAgICB3YWxsZXQ6IG1vY2tlZFdhbGxldCBhcyBJV2FsbGV0LFxuICAgICAgICAgICAgdmVyaWZpY2F0aW9uOiB7XG4gICAgICAgICAgICAgIGNvbnNvbGlkYXRpb25Ub0Jhc2VBZGRyZXNzOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgYXNzZXJ0LmZhaWwoJ1RyYW5zYWN0aW9uIHNob3VsZCBwYXNzIHZlcmlmaWNhdGlvbicpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGFzc2VydC5mYWlsKCdUcmFuc2FjdGlvbiBzaG91bGQgcGFzcyB2ZXJpZmljYXRpb24nKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IGEgdG9rZW4gY29uc29saWRhdGlvbiB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbnNvbGlkYXRpb25UeCA9IHtcbiAgICAgICAgdHhSZXF1ZXN0SWQ6ICc0ZmRkMGNhZS0yNTYzLTQzYjEtYjVjZi05NDg2NTE1OGNhMTAnLFxuICAgICAgICB3YWxsZXRJZDogJzYzMDY4ZWQ0ZWZhNjNhMDAwODc3ZjAyZmQ0YjBmYTZkJyxcbiAgICAgICAgdHhIZXg6XG4gICAgICAgICAgJzAyYjdjMmM3ODI5ZWRlZDRlOGY5NDdjOTBlZDNiOWFmY2U3MWY2MTZlYjQ3ZGZjZmJmNGI3NjU3NzgxNDkwNjAwMTNhY2IzM2I5ZjY3ZmRkOWMyNTEyZjQ4ZmFjNGU0YzA0OWVhYjkzODI5YjY5NDA0ZjNiZDE2NmZlMzI0MmM5MDcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDEwNDA5NmRhNjkwYmQ1NThmZDg2MzRhYzE0ZjE2NDVkODA5NWFmZDBjYWVhNTk1MzU3OGM1OTZlM2MwZGVhMzgzMDVlZTcyOThiZmFjNTUxMDFmMTc3NzM1NjU5ZDQyZWQ2YmU4OTBlZjNhMWQyMDRkOWUzM2YzMmUyNGM1NjM1MzI3Y2E2NmQxZmUwMDgyNmU1YTRmNzU5Zjg3YjI3OWMxYWVlMTljY2U1MzAxYWY0ZWQ2NmFlMTdkYjQ4YjIwMWVkNmMyYTBlOGEyOGJmNTY1NjI3ZjFhYjhhMzRiMWE5NWVlMWIwYTJhMzkwODRmMWYwZTJhY2IxYzM5NGIyMDE4NWQ4ZTBiMjI2NTdjOGQ5YzRjZTVmNjQ5NWVmYjY0MTBjMTk5MDExNTMwZjkwZTNhYjlkOGQxZTQyMDZmOWFlMGZmZWIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYzVmOWZiMzJmNDkxMTFhYjIwYzMzZjI1OThmYzgzNmMxMTNlMjkxODgxYWMyMWVlMjkxNjkzOTQwMTEyNDRlNDA2YTdkNTE3MTkyYzU2OGVlMDhhODQ1ZjczZDI5Nzg4Y2YwMzVjMzE0NWIyMWFiMzQ0ZDgwNjJlYTk0MDAwMDAwNmRkZjZlMWQ3NjVhMTkzZDljYmUxNDZjZWViNzlhYzFjYjQ4NWVkNWY1YjM3OTEzYThjZjU4NTdlZmYwMGE5ZGUxM2M3NGQyYjRkOTQ4ZTE2MDhlYTZlZWJkYWZlNzViYzJmOTk1YWFkMTFiMjFkMWUyYzk0ZjJhMmQxMmY2ODAyMDUwMzAzMDcwMDA0MDQwMDAwMDAwODA0MDIwNjA0MDEwYTBjZTAwNzZiYjIwNDAwMDAwMDA2JyxcbiAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgIGZlZTogMTAwMDAsXG4gICAgICAgICAgZmVlU3RyaW5nOiAnMTAwMDAnLFxuICAgICAgICB9LFxuICAgICAgICB0eEluZm86IHtcbiAgICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYWRkcmVzczogJzhpTGEyNktTYmRwQlV6Tks3dVlxOEZ2eXV5QTVoNGs0ZXJESHNEY1BiSHVzJyxcbiAgICAgICAgICAgICAgdmFsdWU6IDIuMDE3MzIyOGUxMCxcbiAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcyMDE3MzIyODAwMCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhZGRyZXNzOiAnOFAya1g3VHloOWVTM1JLZGFCaHFiRXRRR0FYNThEWHpMN21oRFFBQkdYMmQnLFxuICAgICAgICAgICAgICB2YWx1ZTogMTAwMDAsXG4gICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTAwMDAnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIG1pbmVyRmVlOiAnMTAwMDAnLFxuICAgICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYWRkcmVzczogJ0hCeFpTaGNFODZVTW1GOTNLVU04ZVdKS3FlRVhpNWNxV0NMWUxNTWhxTVltJyxcbiAgICAgICAgICAgICAgY29pbk5hbWU6ICdzb2w6d2lmJyxcbiAgICAgICAgICAgICAgZW50ZXJwcmlzZToge1xuICAgICAgICAgICAgICAgICRvaWQ6ICc1NTUzYmE4YWU3YTVjNzcwMDY3MTk2NjEnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBlbnRlcnByaXNlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICRvaWQ6ICc1NTUzYmE4YWU3YTVjNzcwMDY3MTk2NjEnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHZhbHVlOiAyLjAxNzMyMjhlMTAsXG4gICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMjAxNzMyMjgwMDAnLFxuICAgICAgICAgICAgICB3YWxsZXQ6IHtcbiAgICAgICAgICAgICAgICAkb2lkOiAnNjJmNGMzNzIwZDkyYzUwMDA4MjU3ZWI1JyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgd2FsbGV0VHlwZTogJ2hvdCcsXG4gICAgICAgICAgICAgIHdhbGxldHM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAkb2lkOiAnNjJmNGMzNzIwZDkyYzUwMDA4MjU3ZWI1JyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHBheUdvRmVlOiAnMCcsXG4gICAgICAgICAgc3BlbmRBbW91bnQ6ICcyMDE3MzIyODAwMCcsXG4gICAgICAgICAgc3BlbmRBbW91bnRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGFtb3VudFN0cmluZzogJzIwMTczMjI4MDAwJyxcbiAgICAgICAgICAgICAgY29pbk5hbWU6ICdzb2w6d2lmJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICB0eXBlOiAnU2VuZCcsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnNvbGlkYXRlSWQ6ICc2NzEyZDdmZGE2ZGU0OTA2ZDY1OGMwNGFlYmJmOGY5YicsXG4gICAgICAgIGNvaW46ICd0c29sJyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1vY2tlZFdhbGxldDogUGFydGlhbDxJV2FsbGV0PiA9IHtcbiAgICAgICAgY29pblNwZWNpZmljOiAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgY3MgPSB7XG4gICAgICAgICAgICByb290QWRkcmVzczogJ0hCeFpTaGNFODZVTW1GOTNLVU04ZVdKS3FlRVhpNWNxV0NMWUxNTWhxTVltJyxcbiAgICAgICAgICB9IGFzIFdhbGxldENvaW5TcGVjaWZpYztcbiAgICAgICAgICByZXR1cm4gY3M7XG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICB0cnkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIShhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgICBibG9ja2hhc2g6ICcnLFxuICAgICAgICAgICAgZmVlUGF5ZXI6ICcnLFxuICAgICAgICAgICAgdHhQYXJhbXM6IHt9LFxuICAgICAgICAgICAgdHhQcmVidWlsZDogY29uc29saWRhdGlvblR4IGFzIHVua25vd24gYXMgVHJhbnNhY3Rpb25QcmVidWlsZCxcbiAgICAgICAgICAgIHdhbGxldFR5cGU6ICd0c3MnLFxuICAgICAgICAgICAgd2FsbGV0OiBtb2NrZWRXYWxsZXQgYXMgSVdhbGxldCxcbiAgICAgICAgICAgIHZlcmlmaWNhdGlvbjoge1xuICAgICAgICAgICAgICBjb25zb2xpZGF0aW9uVG9CYXNlQWRkcmVzczogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSkpXG4gICAgICAgICkge1xuICAgICAgICAgIGFzc2VydC5mYWlsKCdUcmFuc2FjdGlvbiBzaG91bGQgcGFzcyB2ZXJpZmljYXRpb24nKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBhc3NlcnQuZmFpbCgnVHJhbnNhY3Rpb24gc2hvdWxkIHBhc3MgdmVyaWZpY2F0aW9uJyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSBhIHNwb29mZWQgdG9rZW4gY29uc29saWRhdGlvbiB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbnNvbGlkYXRpb25UeCA9IHtcbiAgICAgICAgdHhSZXF1ZXN0SWQ6ICc0ZmRkMGNhZS0yNTYzLTQzYjEtYjVjZi05NDg2NTE1OGNhMTAnLFxuICAgICAgICB3YWxsZXRJZDogJzYzMDY4ZWQ0ZWZhNjNhMDAwODc3ZjAyZmQ0YjBmYTZkJyxcbiAgICAgICAgdHhIZXg6XG4gICAgICAgICAgJzAyYjdjMmM3ODI5ZWRlZDRlOGY5NDdjOTBlZDNiOWFmY2U3MWY2MTZlYjQ3ZGZjZmJmNGI3NjU3NzgxNDkwNjAwMTNhY2IzM2I5ZjY3ZmRkOWMyNTEyZjQ4ZmFjNGU0YzA0OWVhYjkzODI5YjY5NDA0ZjNiZDE2NmZlMzI0MmM5MDcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDEwNDA5NmRhNjkwYmQ1NThmZDg2MzRhYzE0ZjE2NDVkODA5NWFmZDBjYWVhNTk1MzU3OGM1OTZlM2MwZGVhMzgzMDVlZTcyOThiZmFjNTUxMDFmMTc3NzM1NjU5ZDQyZWQ2YmU4OTBlZjNhMWQyMDRkOWUzM2YzMmUyNGM1NjM1MzI3Y2E2NmQxZmUwMDgyNmU1YTRmNzU5Zjg3YjI3OWMxYWVlMTljY2U1MzAxYWY0ZWQ2NmFlMTdkYjQ4YjIwMWVkNmMyYTBlOGEyOGJmNTY1NjI3ZjFhYjhhMzRiMWE5NWVlMWIwYTJhMzkwODRmMWYwZTJhY2IxYzM5NGIyMDE4NWQ4ZTBiMjI2NTdjOGQ5YzRjZTVmNjQ5NWVmYjY0MTBjMTk5MDExNTMwZjkwZTNhYjlkOGQxZTQyMDZmOWFlMGZmZWIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYzVmOWZiMzJmNDkxMTFhYjIwYzMzZjI1OThmYzgzNmMxMTNlMjkxODgxYWMyMWVlMjkxNjkzOTQwMTEyNDRlNDA2YTdkNTE3MTkyYzU2OGVlMDhhODQ1ZjczZDI5Nzg4Y2YwMzVjMzE0NWIyMWFiMzQ0ZDgwNjJlYTk0MDAwMDAwNmRkZjZlMWQ3NjVhMTkzZDljYmUxNDZjZWViNzlhYzFjYjQ4NWVkNWY1YjM3OTEzYThjZjU4NTdlZmYwMGE5ZGUxM2M3NGQyYjRkOTQ4ZTE2MDhlYTZlZWJkYWZlNzViYzJmOTk1YWFkMTFiMjFkMWUyYzk0ZjJhMmQxMmY2ODAyMDUwMzAzMDcwMDA0MDQwMDAwMDAwODA0MDIwNjA0MDEwYTBjZTAwNzZiYjIwNDAwMDAwMDA2JyxcbiAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgIGZlZTogMTAwMDAsXG4gICAgICAgICAgZmVlU3RyaW5nOiAnMTAwMDAnLFxuICAgICAgICB9LFxuICAgICAgICB0eEluZm86IHtcbiAgICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYWRkcmVzczogJzhpTGEyNktTYmRwQlV6Tks3dVlxOEZ2eXV5QTVoNGs0ZXJESHNEY1BiSHVzJyxcbiAgICAgICAgICAgICAgdmFsdWU6IDIuMDE3MzIyOGUxMCxcbiAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcyMDE3MzIyODAwMCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhZGRyZXNzOiAnOFAya1g3VHloOWVTM1JLZGFCaHFiRXRRR0FYNThEWHpMN21oRFFBQkdYMmQnLFxuICAgICAgICAgICAgICB2YWx1ZTogMTAwMDAsXG4gICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTAwMDAnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIG1pbmVyRmVlOiAnMTAwMDAnLFxuICAgICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYWRkcmVzczogJ0hCeFpTaGNFODZVTW1GOTNLVU04ZVdKS3FlRVhpNWNxV0NMWUxNTWhxTVltJyxcbiAgICAgICAgICAgICAgY29pbk5hbWU6ICdzb2w6d2lmJyxcbiAgICAgICAgICAgICAgZW50ZXJwcmlzZToge1xuICAgICAgICAgICAgICAgICRvaWQ6ICc1NTUzYmE4YWU3YTVjNzcwMDY3MTk2NjEnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBlbnRlcnByaXNlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICRvaWQ6ICc1NTUzYmE4YWU3YTVjNzcwMDY3MTk2NjEnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHZhbHVlOiAyLjAxNzMyMjhlMTAsXG4gICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMjAxNzMyMjgwMDAnLFxuICAgICAgICAgICAgICB3YWxsZXQ6IHtcbiAgICAgICAgICAgICAgICAkb2lkOiAnNjJmNGMzNzIwZDkyYzUwMDA4MjU3ZWI1JyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgd2FsbGV0VHlwZTogJ2hvdCcsXG4gICAgICAgICAgICAgIHdhbGxldHM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAkb2lkOiAnNjJmNGMzNzIwZDkyYzUwMDA4MjU3ZWI1JyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHBheUdvRmVlOiAnMCcsXG4gICAgICAgICAgc3BlbmRBbW91bnQ6ICcyMDE3MzIyODAwMCcsXG4gICAgICAgICAgc3BlbmRBbW91bnRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGFtb3VudFN0cmluZzogJzIwMTczMjI4MDAwJyxcbiAgICAgICAgICAgICAgY29pbk5hbWU6ICdzb2w6d2lmJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICB0eXBlOiAnU2VuZCcsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnNvbGlkYXRlSWQ6ICc2NzEyZDdmZGE2ZGU0OTA2ZDY1OGMwNGFlYmJmOGY5YicsXG4gICAgICAgIGNvaW46ICd0c29sJyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1vY2tlZFdhbGxldDogUGFydGlhbDxJV2FsbGV0PiA9IHtcbiAgICAgICAgY29pblNwZWNpZmljOiAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgY3MgPSB7XG4gICAgICAgICAgICByb290QWRkcmVzczogJzhyUVhlVkVNckt2dFdDRUppckVNNmNLWW5iWnVUcVZUYnFSUGlNTUFKOFI0JyxcbiAgICAgICAgICB9IGFzIFdhbGxldENvaW5TcGVjaWZpYztcbiAgICAgICAgICByZXR1cm4gY3M7XG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgYXN5bmMgKCkgPT5cbiAgICAgICAgICBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgICBibG9ja2hhc2g6ICcnLFxuICAgICAgICAgICAgZmVlUGF5ZXI6ICcnLFxuICAgICAgICAgICAgdHhQYXJhbXM6IHt9LFxuICAgICAgICAgICAgdHhQcmVidWlsZDogY29uc29saWRhdGlvblR4IGFzIHVua25vd24gYXMgVHJhbnNhY3Rpb25QcmVidWlsZCxcbiAgICAgICAgICAgIHdhbGxldFR5cGU6ICd0c3MnLFxuICAgICAgICAgICAgd2FsbGV0OiBtb2NrZWRXYWxsZXQgYXMgSVdhbGxldCxcbiAgICAgICAgICAgIHZlcmlmaWNhdGlvbjoge1xuICAgICAgICAgICAgICBjb25zb2xpZGF0aW9uVG9CYXNlQWRkcmVzczogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSksXG4gICAgICAgIHtcbiAgICAgICAgICBtZXNzYWdlOiAndHggb3V0cHV0cyBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIGFkZHJlc3MnLFxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYmxpbmQgc2lnbmluZyB0b2tlbiBlbmFibGVtZW50IHByb3RlY3Rpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgYXMgdmFsaWQgdGhlIGVuYWJsZXRva2VuIGludGVudCB3aGVuIHByZWJ1aWxkIHR4IG1hdGNocyB1c2VyIGludGVudCAnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB7IHR4UGFyYW1zLCB0eFByZWJ1aWxkUmF3LCB3YWxsZXREYXRhIH0gPSB0ZXN0RGF0YS5lbmFibGVUb2tlbkZpeHR1cmVzO1xuICAgICAgY29uc3Qgd2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbywgYmFzZWNvaW4sIHdhbGxldERhdGEpO1xuICAgICAgY29uc3Qgc2FtZUludGVudFR4ID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgdHhQcmVidWlsZDogdHhQcmVidWlsZFJhdyxcbiAgICAgICAgd2FsbGV0LFxuICAgICAgICB2ZXJpZmljYXRpb246IHsgdmVyaWZ5VG9rZW5FbmFibGVtZW50OiB0cnVlIH0sXG4gICAgICB9IGFzIHVua25vd24gYXMgU29sVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zKTtcblxuICAgICAgc2FtZUludGVudFR4LnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3duIGFuIGVycm9yIHdoZW4gdGFtcGVyZWQgcHJlYnVpbGQgdHggdHlwZSAnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB7IHR4UGFyYW1zLCB0eFByZWJ1aWxkUmF3LCBzZW5kVHhIZXgsIHdhbGxldERhdGEgfSA9IHRlc3REYXRhLmVuYWJsZVRva2VuRml4dHVyZXM7XG4gICAgICBjb25zdCB0YW1wZXJlZFR4UHJlYnVpbGQgPSB7IC4uLnR4UHJlYnVpbGRSYXcsIHR4SGV4OiBzZW5kVHhIZXggfTtcblxuICAgICAgY29uc3Qgd2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbywgYmFzZWNvaW4sIHdhbGxldERhdGEpO1xuXG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgYXN5bmMgKCkgPT5cbiAgICAgICAgICBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgICAgIHR4UHJlYnVpbGQ6IHRhbXBlcmVkVHhQcmVidWlsZCxcbiAgICAgICAgICAgIHdhbGxldCxcbiAgICAgICAgICAgIHZlcmlmaWNhdGlvbjogeyB2ZXJpZnlUb2tlbkVuYWJsZW1lbnQ6IHRydWUgfSxcbiAgICAgICAgICB9IGFzIHVua25vd24gYXMgU29sVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zKSxcbiAgICAgICAge1xuICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAnSW52YWxpZCB0cmFuc2FjdGlvbiB0eXBlIG9uIHRva2VuIGVuYWJsZW1lbnQ6IGV4cGVjdGVkIFwiQXNzb2NpYXRlZFRva2VuQWNjb3VudEluaXRpYWxpemF0aW9uXCIsIGdvdCBcIlNlbmRcIi4nLFxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgdGhhdCB0b2tlbk5hbWUgbWF0Y2hlcyBiZXR3ZWVuIHVzZXIgaW50ZW50IGFuZCBoZXgnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB7IHR4UGFyYW1zLCB0eFByZWJ1aWxkUmF3LCB3cm9uZ1Rva2VuTmFtZVR4SGV4LCB3YWxsZXREYXRhIH0gPSB0ZXN0RGF0YS5lbmFibGVUb2tlbkZpeHR1cmVzO1xuICAgICAgY29uc3QgdGFtcGVyZWRUeFByZWJ1aWxkID0geyAuLi50eFByZWJ1aWxkUmF3LCB0eEhleDogd3JvbmdUb2tlbk5hbWVUeEhleCB9O1xuICAgICAgY29uc3Qgd2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbywgYmFzZWNvaW4sIHdhbGxldERhdGEpO1xuXG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgYXN5bmMgKCkgPT5cbiAgICAgICAgICBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgICAgIHR4UHJlYnVpbGQ6IHRhbXBlcmVkVHhQcmVidWlsZCxcbiAgICAgICAgICAgIHdhbGxldCxcbiAgICAgICAgICAgIHZlcmlmaWNhdGlvbjogeyB2ZXJpZnlUb2tlbkVuYWJsZW1lbnQ6IHRydWUgfSxcbiAgICAgICAgICB9IGFzIHVua25vd24gYXMgU29sVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zKSxcbiAgICAgICAgeyBtZXNzYWdlOiAnSW52YWxpZCB0b2tlbiBuYW1lOiBleHBlY3RlZCB0c29sOnJheSwgZ290IHRzb2w6dDIybWludCBvbiB0b2tlbiBlbmFibGVtZW50IHR4JyB9XG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgdGhhdCB0b2tlbkFkZHIgbWF0Y2hlcyBiZXR3ZWVuIHVzZXIgaW50ZW50IGFuZCBoZXgnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB7IHR4UGFyYW1zLCB0eFByZWJ1aWxkUmF3LCB3cm9uZ0FkZHJUeEhleCwgd2FsbGV0RGF0YSB9ID0gdGVzdERhdGEuZW5hYmxlVG9rZW5GaXh0dXJlcztcbiAgICAgIGNvbnN0IHRhbXBlcmVkVHhQcmVidWlsZCA9IHsgLi4udHhQcmVidWlsZFJhdywgdHhIZXg6IHdyb25nQWRkclR4SGV4IH07XG5cbiAgICAgIGNvbnN0IHdhbGxldCA9IG5ldyBXYWxsZXQoYml0Z28sIGJhc2Vjb2luLCB3YWxsZXREYXRhKTtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgICBhc3luYyAoKSA9PlxuICAgICAgICAgIGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICAgIHR4UGFyYW1zLFxuICAgICAgICAgICAgdHhQcmVidWlsZDogdGFtcGVyZWRUeFByZWJ1aWxkLFxuICAgICAgICAgICAgd2FsbGV0LFxuICAgICAgICAgICAgdmVyaWZpY2F0aW9uOiB7IHZlcmlmeVRva2VuRW5hYmxlbWVudDogdHJ1ZSB9LFxuICAgICAgICAgIH0gYXMgdW5rbm93biBhcyBTb2xWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMpLFxuICAgICAgICB7XG4gICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICdJbnZhbGlkIHRva2VuIGFkZHJlc3M6IGV4cGVjdGVkIDRiVFl2dnYySGs0djJrUVc4SFpGRlM0U3pZUHp0UXNodzlHbTFzdVhtYUJqLCBnb3QgRzFMRWdBTkF3S283YjhOZnhUc016cmJCWURrWHFpNVJFVkpZOHRock1SUW0gb24gdG9rZW4gZW5hYmxlbWVudCB0eCcsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgc2VuZFRva2VuRW5hYmxlbWVudCBjYWxsIG9uIHNwb29mZWQgZGF0YScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHsgc2VuZFRva2VuRW5hYmxlbWVudFBheWxvYWQsIHdhbGxldERhdGEsIHdyb25nVG9rZW5OYW1lVHhIZXggfSA9IHRlc3REYXRhLmVuYWJsZVRva2VuRml4dHVyZXM7XG4gICAgICBjb25zdCB3YWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCBiYXNlY29pbiwgd2FsbGV0RGF0YSk7XG4gICAgICBub2NrKCdodHRwczovL2JpdGdvLmZha2V1cmwnKS5nZXQoJy9hcGkvdjIvdHNvbC9rZXkvNjhiYWZlZDU4ODY3MWNmOTRlZDhhNWRiYmE4ODJhZDMnKS5yZXBseSgyMDAsIHt9KTtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgICBhc3luYyAoKSA9PlxuICAgICAgICAgIHdhbGxldC5zZW5kVG9rZW5FbmFibGVtZW50KHtcbiAgICAgICAgICAgIHZlcmlmaWNhdGlvbjogeyB2ZXJpZnlUb2tlbkVuYWJsZW1lbnQ6IHRydWUgfSxcbiAgICAgICAgICAgIC4uLnNlbmRUb2tlbkVuYWJsZW1lbnRQYXlsb2FkLFxuICAgICAgICAgICAgcHJlYnVpbGRUeDogeyAuLi5zZW5kVG9rZW5FbmFibGVtZW50UGF5bG9hZC5wcmVidWlsZFR4LCB0eEhleDogd3JvbmdUb2tlbk5hbWVUeEhleCB9LFxuICAgICAgICAgIH0gYXMgdW5rbm93biBhcyBQcmVidWlsZEFuZFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMpLFxuICAgICAgICB7XG4gICAgICAgICAgbWVzc2FnZTogJ0ludmFsaWQgdG9rZW4gbmFtZTogZXhwZWN0ZWQgdHNvbDpyYXksIGdvdCB0c29sOnQyMm1pbnQgb24gdG9rZW4gZW5hYmxlbWVudCB0eCcsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdpc1dhbGxldEFkZHJlc3MnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgdmFsaWQgd2FsbGV0IGFkZHJlc3Mgd2l0aCBjb3JyZWN0IGtleWNoYWluIGFuZCBpbmRleCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSAnN1lBZXNmd1BrNDFWQ2hVZ3I2NWJtOEZFZXA3eW1XcUxTVzVycFlCNXpaUFknO1xuICAgICAgY29uc3QgY29tbW9uS2V5Y2hhaW4gPVxuICAgICAgICAnOGVhMzJlY2FjZmM4M2VmZmJkMmUyNzkwZWU0NGZhN2M1OWI0ZDg2YzI5YTEyZjA5ZmI2MTNkODE5NWY5M2Y0ZTIxODc1Y2FkM2I5OGFkYWRhNDBjMDQwYzU0YzM1Njk0NjdkZjQxYTAyMDg4MWE2MTg0MDk2Mzc4NzAxODYyYmQnO1xuICAgICAgY29uc3QgaW5kZXggPSAnMSc7XG4gICAgICBjb25zdCBrZXljaGFpbnMgPSBbeyBpZDogJzEnLCB0eXBlOiAndHNzJyBhcyBjb25zdCwgY29tbW9uS2V5Y2hhaW4gfV07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLmlzV2FsbGV0QWRkcmVzcyh7IGtleWNoYWlucywgYWRkcmVzcywgaW5kZXggfSk7XG4gICAgICByZXN1bHQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBmb3IgYWRkcmVzcyB3aXRoIGluY29ycmVjdCBrZXljaGFpbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSAnN1lBZXNmd1BrNDFWQ2hVZ3I2NWJtOEZFZXA3eW1XcUxTVzVycFlCNXpaUFknO1xuICAgICAgY29uc3Qgd3JvbmdLZXljaGFpbiA9XG4gICAgICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJztcbiAgICAgIGNvbnN0IGluZGV4ID0gJzEnO1xuICAgICAgY29uc3Qga2V5Y2hhaW5zID0gW3sgaWQ6ICcxJywgdHlwZTogJ3RzcycgYXMgY29uc3QsIGNvbW1vbktleWNoYWluOiB3cm9uZ0tleWNoYWluIH1dO1xuXG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhhc3luYyAoKSA9PiBhd2FpdCBiYXNlY29pbi5pc1dhbGxldEFkZHJlc3MoeyBrZXljaGFpbnMsIGFkZHJlc3MsIGluZGV4IH0pLCB7XG4gICAgICAgIG1lc3NhZ2U6IGBhZGRyZXNzIHZhbGlkYXRpb24gZmFpbHVyZTogJHthZGRyZXNzfSBpcyBub3QgYSB3YWxsZXQgYWRkcmVzc2AsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3IgZm9yIGFkZHJlc3Mgd2l0aCBpbmNvcnJlY3QgaW5kZXgnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBhZGRyZXNzID0gJzdZQWVzZndQazQxVkNoVWdyNjVibThGRWVwN3ltV3FMU1c1cnBZQjV6WlBZJztcbiAgICAgIGNvbnN0IGNvbW1vbktleWNoYWluID1cbiAgICAgICAgJzhlYTMyZWNhY2ZjODNlZmZiZDJlMjc5MGVlNDRmYTdjNTliNGQ4NmMyOWExMmYwOWZiNjEzZDgxOTVmOTNmNGUyMTg3NWNhZDNiOThhZGFkYTQwYzA0MGM1NGMzNTY5NDY3ZGY0MWEwMjA4ODFhNjE4NDA5NjM3ODcwMTg2MmJkJztcbiAgICAgIGNvbnN0IHdyb25nSW5kZXggPSAnOTk5JztcbiAgICAgIGNvbnN0IGtleWNoYWlucyA9IFt7IGlkOiAnMScsIHR5cGU6ICd0c3MnIGFzIGNvbnN0LCBjb21tb25LZXljaGFpbiB9XTtcblxuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoYXN5bmMgKCkgPT4gYXdhaXQgYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHsga2V5Y2hhaW5zLCBhZGRyZXNzLCBpbmRleDogd3JvbmdJbmRleCB9KSwge1xuICAgICAgICBtZXNzYWdlOiBgYWRkcmVzcyB2YWxpZGF0aW9uIGZhaWx1cmU6ICR7YWRkcmVzc30gaXMgbm90IGEgd2FsbGV0IGFkZHJlc3NgLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIGZvciBpbnZhbGlkIGFkZHJlc3MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBpbnZhbGlkQWRkcmVzcyA9ICdpbnZhbGlkYWRkcmVzcyc7XG4gICAgICBjb25zdCBjb21tb25LZXljaGFpbiA9XG4gICAgICAgICc4ZWEzMmVjYWNmYzgzZWZmYmQyZTI3OTBlZTQ0ZmE3YzU5YjRkODZjMjlhMTJmMDlmYjYxM2Q4MTk1ZjkzZjRlMjE4NzVjYWQzYjk4YWRhZGE0MGMwNDBjNTRjMzU2OTQ2N2RmNDFhMDIwODgxYTYxODQwOTYzNzg3MDE4NjJiZCc7XG4gICAgICBjb25zdCBpbmRleCA9ICcxJztcbiAgICAgIGNvbnN0IGtleWNoYWlucyA9IFt7IGlkOiAnMScsIHR5cGU6ICd0c3MnIGFzIGNvbnN0LCBjb21tb25LZXljaGFpbiB9XTtcblxuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoYXN5bmMgKCkgPT4gYXdhaXQgYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHsga2V5Y2hhaW5zLCBhZGRyZXNzOiBpbnZhbGlkQWRkcmVzcywgaW5kZXggfSksIHtcbiAgICAgICAgbWVzc2FnZTogYGludmFsaWQgYWRkcmVzczogJHtpbnZhbGlkQWRkcmVzc31gLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSBhZGRyZXNzIHdpdGggZGVyaXZhdGlvbiBwcmVmaXggZm9yIFNNQyB3YWxsZXRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gQWRkcmVzcyBkZXJpdmVkIHdpdGggZGVyaXZhdGlvbiBwcmVmaXggbS85OTk5OTkvMTQ4MjQyMzU1LzIzOTMzNjg0NS8xXG4gICAgICBjb25zdCBhZGRyZXNzID0gJ0NDNzE1UTkyQzh2dUVGVDV4dWpFNTVEbzZCa1dSZHBEdnI3Vmg4aVVOVUJ3JztcbiAgICAgIGNvbnN0IGNvbW1vbktleWNoYWluID1cbiAgICAgICAgJzhlYTMyZWNhY2ZjODNlZmZiZDJlMjc5MGVlNDRmYTdjNTliNGQ4NmMyOWExMmYwOWZiNjEzZDgxOTVmOTNmNGUyMTg3NWNhZDNiOThhZGFkYTQwYzA0MGM1NGMzNTY5NDY3ZGY0MWEwMjA4ODFhNjE4NDA5NjM3ODcwMTg2MmJkJztcbiAgICAgIGNvbnN0IGluZGV4ID0gJzEnO1xuICAgICAgY29uc3QgZGVyaXZlZEZyb21QYXJlbnRXaXRoU2VlZCA9ICdzbWMtdGVzdC1zZWVkLTEyMyc7XG4gICAgICBjb25zdCBrZXljaGFpbnMgPSBbeyBpZDogJzEnLCB0eXBlOiAndHNzJyBhcyBjb25zdCwgY29tbW9uS2V5Y2hhaW4gfV07XG5cbiAgICAgIC8vIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGRlcml2ZWRGcm9tUGFyZW50V2l0aFNlZWQgaXMgYWNjZXB0ZWQgYXMgYSBwYXJhbWV0ZXJcbiAgICAgIC8vIGFuZCB0aGUgdmVyaWZpY2F0aW9uIGZ1bmN0aW9uIGNvcnJlY3RseSBjb21wdXRlcyB0aGUgZGVyaXZhdGlvbiBwcmVmaXggaW50ZXJuYWxseVxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHsga2V5Y2hhaW5zLCBhZGRyZXNzLCBpbmRleCwgZGVyaXZlZEZyb21QYXJlbnRXaXRoU2VlZCB9KTtcbiAgICAgIHJlc3VsdC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdkZXJpdmVBZGRyZXNzJywgKCkgPT4ge1xuICAgIC8vIFNhbWUgdmVjdG9yIGFzIHRoZSBpc1dhbGxldEFkZHJlc3MgdGVzdHMgYWJvdmU6IGNvbW1vbktleWNoYWluIEAgaW5kZXggMSAtPiBhZGRyZXNzLlxuICAgIGNvbnN0IGFkZHJlc3MgPSAnN1lBZXNmd1BrNDFWQ2hVZ3I2NWJtOEZFZXA3eW1XcUxTVzVycFlCNXpaUFknO1xuICAgIGNvbnN0IGNvbW1vbktleWNoYWluID1cbiAgICAgICc4ZWEzMmVjYWNmYzgzZWZmYmQyZTI3OTBlZTQ0ZmE3YzU5YjRkODZjMjlhMTJmMDlmYjYxM2Q4MTk1ZjkzZjRlMjE4NzVjYWQzYjk4YWRhZGE0MGMwNDBjNTRjMzU2OTQ2N2RmNDFhMDIwODgxYTYxODQwOTYzNzg3MDE4NjJiZCc7XG4gICAgY29uc3Qga2V5Y2hhaW5zID0gW3sgaWQ6ICcxJywgdHlwZTogJ3RzcycgYXMgY29uc3QsIGNvbW1vbktleWNoYWluIH1dO1xuXG4gICAgaXQoJ3Nob3VsZCBkZXJpdmUgdGhlIGV4cGVjdGVkIGFkZHJlc3MgZm9yIGEgZ2l2ZW4gY29tbW9uS2V5Y2hhaW4gYW5kIGluZGV4JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYmFzZWNvaW4uZGVyaXZlQWRkcmVzcyh7IGtleWNoYWlucywgaW5kZXg6IDEgfSk7XG4gICAgICByZXN1bHQuYWRkcmVzcy5zaG91bGQuZXF1YWwoYWRkcmVzcyk7XG4gICAgICByZXN1bHQuaW5kZXguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5kZXJpdmF0aW9uUGF0aCwgJ20vMScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBkZXJpdmUgYSBkaWZmZXJlbnQgYWRkcmVzcyBmb3IgYSBkaWZmZXJlbnQgaW5kZXgnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi5kZXJpdmVBZGRyZXNzKHsga2V5Y2hhaW5zLCBpbmRleDogMiB9KTtcbiAgICAgIHJlc3VsdC5hZGRyZXNzLnNob3VsZC5ub3QuZXF1YWwoYWRkcmVzcyk7XG4gICAgfSk7XG5cbiAgICBpdCgncm91bmQtdHJpcHMgd2l0aCBpc1dhbGxldEFkZHJlc3MgKGRlcml2ZWQgYWRkcmVzcyB2ZXJpZmllcyBhcyB0cnVlKScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGRlcml2ZWQgPSBhd2FpdCBiYXNlY29pbi5kZXJpdmVBZGRyZXNzKHsga2V5Y2hhaW5zLCBpbmRleDogNSB9KTtcbiAgICAgIGNvbnN0IHZlcmlmaWVkID0gYXdhaXQgYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHsga2V5Y2hhaW5zLCBhZGRyZXNzOiBkZXJpdmVkLmFkZHJlc3MsIGluZGV4OiA1IH0pO1xuICAgICAgdmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB1c2UgdGhlIFNNQyBwcmVmaXggcGF0aCB3aGVuIGRlcml2ZWRGcm9tUGFyZW50V2l0aFNlZWQgaXMgc2V0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGVyaXZlZEZyb21QYXJlbnRXaXRoU2VlZCA9ICdzbWMtdGVzdC1zZWVkLTEyMyc7XG4gICAgICBjb25zdCBkZXJpdmVkID0gYXdhaXQgYmFzZWNvaW4uZGVyaXZlQWRkcmVzcyh7IGtleWNoYWlucywgaW5kZXg6IDEsIGRlcml2ZWRGcm9tUGFyZW50V2l0aFNlZWQgfSk7XG4gICAgICAvLyByb3VuZC10cmlwcyB0aHJvdWdoIHRoZSBTTUMgdmVyaWZ5IHBhdGhcbiAgICAgIGNvbnN0IHZlcmlmaWVkID0gYXdhaXQgYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHtcbiAgICAgICAga2V5Y2hhaW5zLFxuICAgICAgICBhZGRyZXNzOiBkZXJpdmVkLmFkZHJlc3MsXG4gICAgICAgIGluZGV4OiAxLFxuICAgICAgICBkZXJpdmVkRnJvbVBhcmVudFdpdGhTZWVkLFxuICAgICAgfSk7XG4gICAgICB2ZXJpZmllZC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGlmIGtleWNoYWlucyBhcmUgbWlzc2luZycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKGFzeW5jICgpID0+IGF3YWl0IGJhc2Vjb2luLmRlcml2ZUFkZHJlc3MoeyBrZXljaGFpbnM6IFtdLCBpbmRleDogMCB9KSwgL2tleWNoYWlucy8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBkZXJpdmUgdGhlIFNQTCB0b2tlbiAoQVRBKSBhZGRyZXNzIHdoZW4gdG9rZW5OYW1lIGlzIGdpdmVuJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gb3duZXIgPSBuYXRpdmUgYWRkcmVzcyBhdCBpbmRleCAxICg3WUFlc2bigKYpOyBBVEEgZm9yIHNvbDp1c2RjOlxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYmFzZWNvaW4uZGVyaXZlQWRkcmVzcyh7IGtleWNoYWlucywgaW5kZXg6IDEsIHRva2VuTmFtZTogJ3NvbDp1c2RjJyB9KTtcbiAgICAgIHJlc3VsdC5hZGRyZXNzLnNob3VsZC5lcXVhbCgnRkcxWE1KZFhCUTV1WWFOb0twb3NBQmc2ZXJ4c3Z6YndDMjgzVzJpcG5qUUInKTtcbiAgICAgIHJlc3VsdC5hZGRyZXNzLnNob3VsZC5ub3QuZXF1YWwoYWRkcmVzcyk7IC8vIG5vdCB0aGUgbmF0aXZlIGFkZHJlc3NcbiAgICAgIHJlc3VsdC5pbmRleC5zaG91bGQuZXF1YWwoMSk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhlIGRlcml2ZWQgdG9rZW4gQVRBIG1hdGNoZXMgZ2V0QXNzb2NpYXRlZFRva2VuQWNjb3VudEFkZHJlc3MgZm9yIHRoZSBvd25lcittaW50JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgbmF0aXZlID0gYXdhaXQgYmFzZWNvaW4uZGVyaXZlQWRkcmVzcyh7IGtleWNoYWlucywgaW5kZXg6IDMgfSk7XG4gICAgICBjb25zdCB0b2tlbiA9IGF3YWl0IGJhc2Vjb2luLmRlcml2ZUFkZHJlc3MoeyBrZXljaGFpbnMsIGluZGV4OiAzLCB0b2tlbk5hbWU6ICdzb2w6dXNkYycgfSk7XG4gICAgICBjb25zdCBtaW50ID0gKGNvaW5zLmdldCgnc29sOnVzZGMnKSBhcyB1bmtub3duIGFzIHsgdG9rZW5BZGRyZXNzOiBzdHJpbmcgfSkudG9rZW5BZGRyZXNzO1xuICAgICAgY29uc3QgZXhwZWN0ZWRBdGEgPSBhd2FpdCBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyhtaW50LCBuYXRpdmUuYWRkcmVzcywgdHJ1ZSk7XG4gICAgICB0b2tlbi5hZGRyZXNzLnNob3VsZC5lcXVhbChleHBlY3RlZEF0YSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGZvciBhbiB1bmtub3duIHRva2VuIG5hbWUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgYXN5bmMgKCkgPT4gYXdhaXQgYmFzZWNvaW4uZGVyaXZlQWRkcmVzcyh7IGtleWNoYWlucywgaW5kZXg6IDEsIHRva2VuTmFtZTogJ3NvbDpub3QtYS1yZWFsLXRva2VuJyB9KSxcbiAgICAgICAgL3Vua25vd24gb3IgdW5zdXBwb3J0ZWQgU09MIHRva2VuL1xuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dldEFkZHJlc3NGcm9tUHVibGljS2V5JywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgY29udmVydCBwdWJsaWMga2V5IHRvIGJhc2U1OCBhZGRyZXNzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcHVibGljS2V5ID0gJzYxMjIwYTkzOTQ4MDJiMWQxZGYzN2IzNWY3YTMxOTc5NzBmNDgwODEwOTJjZWUwMTFmYzk4ZjdiNzFiMmJkNDMnO1xuICAgICAgY29uc3QgZXhwZWN0ZWRBZGRyZXNzID0gJzdZQWVzZndQazQxVkNoVWdyNjVibThGRWVwN3ltV3FMU1c1cnBZQjV6WlBZJztcblxuICAgICAgY29uc3QgYWRkcmVzcyA9IGJhc2Vjb2luLmdldEFkZHJlc3NGcm9tUHVibGljS2V5KHB1YmxpY0tleSk7XG4gICAgICBhZGRyZXNzLnNob3VsZC5lcXVhbChleHBlY3RlZEFkZHJlc3MpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgncmVzb2x2ZVRyYW5zZmVySG9va0FjY291bnRzJywgKCkgPT4ge1xuICAgIGNvbnN0IHNhbmRCb3ggPSBzaW5vbi5jcmVhdGVTYW5kYm94KCk7XG4gICAgY29uc3QgbWludEFkZHJlc3MgPSByZXNvdXJjZXMuc29sMjAyMlRva2VuVHJhbnNmZXJzLm1pbnQ7XG4gICAgY29uc3Qgc291cmNlQWRkcmVzcyA9IHJlc291cmNlcy5hc3NvY2lhdGVkVG9rZW5BY2NvdW50c0ZvclNvbDIwMjIuYWNjb3VudHNbMF0uYXRhO1xuICAgIGNvbnN0IGRlc3RpbmF0aW9uQWRkcmVzcyA9IHJlc291cmNlcy5hc3NvY2lhdGVkVG9rZW5BY2NvdW50cy5hY2NvdW50c1swXS5hdGE7XG4gICAgY29uc3Qgb3duZXJBZGRyZXNzID0gcmVzb3VyY2VzLmF1dGhBY2NvdW50LnB1YjtcbiAgICBjb25zdCBhbW91bnQgPSAnNTAwMDAwJztcbiAgICBjb25zdCBkZWNpbWFscyA9IDY7XG4gICAgLy8gQXJiaXRyYXJ5IGJ1dCB2YWxpZCBiYXNlNTggcHVia2V5cyB1c2VkIHB1cmVseSBhcyBmaXh0dXJlcy5cbiAgICBjb25zdCBob29rUHJvZ3JhbUlkID0gbmV3IFB1YmxpY0tleSgnR2JROFppRUZ6R0dUZVlvWHd0WnRjb3h3UGNNeVVjbVpEZHVNVk5kVVBLcFgnKTtcbiAgICBjb25zdCBleHRyYU1ldGFzOiBFeHRyYUFjY291bnRNZXRhW10gPSBbXG4gICAgICB7IHB1YmtleTogJzk4d0ZGNU1wTWpNUWJmREYyTVB6bzhMQ0dYMzd1blpSMW9oUkExbVU5R21KJywgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiB0cnVlIH0sXG4gICAgICB7IHB1YmtleTogJzQ4bjdZR0V3dzdmS01mSjVnSjNzUUMzck02UldHanBVc2docVZmWFZrUjVBJywgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiBmYWxzZSB9LFxuICAgICAgeyBwdWJrZXk6ICc5c1FoQUg3dlYzUktUQ0sxM1ZZNEVpTmpzM3FCcTFzclNZeGROdWZkQUFYbScsIGlzU2lnbmVyOiBmYWxzZSwgaXNXcml0YWJsZTogZmFsc2UgfSxcbiAgICBdO1xuXG4gICAgLy8gVG9rZW4tMjAyMiBtaW50IGFjY291bnQgbGF5b3V0OiA4Mi1ieXRlIGJhc2UgTWludExheW91dCwgcGFkZGVkIHRvIHRoZVxuICAgIC8vIDE2NS1ieXRlIGFjY291bnQgc2l6ZSwgYW4gYWNjb3VudC10eXBlIGJ5dGUgKDEgPSBNaW50KSwgdGhlbiB0aGUgZXh0ZW5zaW9uXG4gICAgLy8gVExWLiBUcmFuc2Zlckhvb2sgaXMgZXh0ZW5zaW9uIHR5cGUgMTQgd2l0aCA2NCBieXRlcyAoYXV0aG9yaXR5ICsgcHJvZ3JhbUlkKS5cbiAgICBjb25zdCBidWlsZE1pbnRXaXRoVHJhbnNmZXJIb29rID0gKG1pbnREZWNpbWFsczogbnVtYmVyLCBob29rUHJvZ3JhbTogUHVibGljS2V5KTogQnVmZmVyID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBCdWZmZXIuYWxsb2MoMjM0KTtcbiAgICAgIGRhdGEud3JpdGVVSW50OChtaW50RGVjaW1hbHMsIDQ0KTsgLy8gTWludExheW91dC5kZWNpbWFsc1xuICAgICAgZGF0YS53cml0ZVVJbnQ4KDEsIDQ1KTsgLy8gTWludExheW91dC5pc0luaXRpYWxpemVkXG4gICAgICBkYXRhLndyaXRlVUludDgoMSwgMTY1KTsgLy8gQWNjb3VudFR5cGUuTWludFxuICAgICAgZGF0YS53cml0ZVVJbnQxNkxFKDE0LCAxNjYpOyAvLyBleHRlbnNpb24gdHlwZTogVHJhbnNmZXJIb29rXG4gICAgICBkYXRhLndyaXRlVUludDE2TEUoNjQsIDE2OCk7IC8vIGV4dGVuc2lvbiBsZW5ndGhcbiAgICAgIC8vIGF1dGhvcml0eSBvY2N1cGllcyBbMTcwLCAyMDIpOyBwcm9ncmFtSWQgb2NjdXBpZXMgWzIwMiwgMjM0KVxuICAgICAgaG9va1Byb2dyYW0udG9CdWZmZXIoKS5jb3B5KGRhdGEsIDIwMik7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9O1xuXG4gICAgLy8gUGxhaW4gU1BML1Rva2VuLTIwMjIgbWludCB3aXRoIG5vIGV4dGVuc2lvbnMgKGJhc2UgTWludExheW91dCBvbmx5KS5cbiAgICBjb25zdCBidWlsZEJhc2VNaW50ID0gKG1pbnREZWNpbWFsczogbnVtYmVyKTogQnVmZmVyID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBCdWZmZXIuYWxsb2MoODIpO1xuICAgICAgZGF0YS53cml0ZVVJbnQ4KG1pbnREZWNpbWFscywgNDQpO1xuICAgICAgZGF0YS53cml0ZVVJbnQ4KDEsIDQ1KTtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH07XG5cbiAgICAvLyBFeHRyYUFjY291bnRNZXRhTGlzdCBhY2NvdW50OiB1NjQgZGlzY3JpbWluYXRvciArIHUzMiBsZW5ndGggKyB1MzIgY291bnQsXG4gICAgLy8gdGhlbiAzNS1ieXRlIEV4dHJhQWNjb3VudE1ldGEgZW50cmllcyAoZGlzY3JpbWluYXRvciAwID0gZml4ZWQgYWRkcmVzcykuXG4gICAgY29uc3QgYnVpbGRFeHRyYUFjY291bnRNZXRhTGlzdCA9IChtZXRhczogRXh0cmFBY2NvdW50TWV0YVtdKTogQnVmZmVyID0+IHtcbiAgICAgIGNvbnN0IGhlYWRlclNpemUgPSAxNjtcbiAgICAgIGNvbnN0IGRhdGEgPSBCdWZmZXIuYWxsb2MoaGVhZGVyU2l6ZSArIG1ldGFzLmxlbmd0aCAqIDM1KTtcbiAgICAgIGRhdGEud3JpdGVVSW50MzJMRSg0ICsgbWV0YXMubGVuZ3RoICogMzUsIDgpOyAvLyBsZW5ndGhcbiAgICAgIGRhdGEud3JpdGVVSW50MzJMRShtZXRhcy5sZW5ndGgsIDEyKTsgLy8gY291bnRcbiAgICAgIGxldCBvZmZzZXQgPSBoZWFkZXJTaXplO1xuICAgICAgZm9yIChjb25zdCBtZXRhIG9mIG1ldGFzKSB7XG4gICAgICAgIGRhdGEud3JpdGVVSW50OCgwLCBvZmZzZXQpOyAvLyBkaXNjcmltaW5hdG9yOiBmaXhlZCBhZGRyZXNzXG4gICAgICAgIG5ldyBQdWJsaWNLZXkobWV0YS5wdWJrZXkpLnRvQnVmZmVyKCkuY29weShkYXRhLCBvZmZzZXQgKyAxKTsgLy8gYWRkcmVzc0NvbmZpZ1xuICAgICAgICBkYXRhLndyaXRlVUludDgobWV0YS5pc1NpZ25lciA/IDEgOiAwLCBvZmZzZXQgKyAzMyk7XG4gICAgICAgIGRhdGEud3JpdGVVSW50OChtZXRhLmlzV3JpdGFibGUgPyAxIDogMCwgb2Zmc2V0ICsgMzQpO1xuICAgICAgICBvZmZzZXQgKz0gMzU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9O1xuXG4gICAgY29uc3QgYWNjb3VudEluZm9SZXNwb25zZSA9IChkYXRhOiBCdWZmZXIgfCBudWxsLCBvd25lcjogc3RyaW5nKSA9PiAoe1xuICAgICAgc3RhdHVzOiAyMDAsXG4gICAgICBib2R5OiB7XG4gICAgICAgIHJlc3VsdDoge1xuICAgICAgICAgIHZhbHVlOlxuICAgICAgICAgICAgZGF0YSA9PT0gbnVsbFxuICAgICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICBkYXRhOiBbZGF0YS50b1N0cmluZygnYmFzZTY0JyksICdiYXNlNjQnXSxcbiAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgb3duZXIsXG4gICAgICAgICAgICAgICAgICBsYW1wb3J0czogMSxcbiAgICAgICAgICAgICAgICAgIHJlbnRFcG9jaDogMCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHN0dWJOb2RlID0gKGFjY291bnRzOiBSZWNvcmQ8c3RyaW5nLCB7IGRhdGE6IEJ1ZmZlciB8IG51bGw7IG93bmVyOiBzdHJpbmcgfT4pOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IGNhbGxCYWNrID0gc2FuZEJveC5zdHViKFNvbC5wcm90b3R5cGUsICdnZXREYXRhRnJvbU5vZGUnIGFzIGtleW9mIFNvbCk7XG4gICAgICBjYWxsQmFjay5jYWxsc0Zha2UoYXN5bmMgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBhcmdzWzBdIGFzIHsgcGF5bG9hZD86IHsgcGFyYW1zPzogdW5rbm93bltdIH0gfTtcbiAgICAgICAgY29uc3QgcmVxdWVzdGVkUHVia2V5ID0gcGFyYW1zLnBheWxvYWQ/LnBhcmFtcz8uWzBdIGFzIHN0cmluZztcbiAgICAgICAgY29uc3QgYWNjb3VudCA9IGFjY291bnRzW3JlcXVlc3RlZFB1YmtleV07XG4gICAgICAgIGlmICghYWNjb3VudCkge1xuICAgICAgICAgIHJldHVybiBhY2NvdW50SW5mb1Jlc3BvbnNlKG51bGwsIFRPS0VOXzIwMjJfUFJPR1JBTV9JRC50b0Jhc2U1OCgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjb3VudEluZm9SZXNwb25zZShhY2NvdW50LmRhdGEsIGFjY291bnQub3duZXIpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgICBzYW5kQm94LnJlc3RvcmUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXNvbHZlcyB0aGUgb3JkZXJlZCBleHRyYSBhY2NvdW50cyBmb3IgYSBtaW50IHdpdGggYSB0cmFuc2ZlciBob29rJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdmFsaWRhdGlvblN0YXRlUHVia2V5ID0gZ2V0RXh0cmFBY2NvdW50TWV0YUFkZHJlc3MobmV3IFB1YmxpY0tleShtaW50QWRkcmVzcyksIGhvb2tQcm9ncmFtSWQpO1xuICAgICAgc3R1Yk5vZGUoe1xuICAgICAgICBbbWludEFkZHJlc3NdOiB7XG4gICAgICAgICAgZGF0YTogYnVpbGRNaW50V2l0aFRyYW5zZmVySG9vayhkZWNpbWFscywgaG9va1Byb2dyYW1JZCksXG4gICAgICAgICAgb3duZXI6IFRPS0VOXzIwMjJfUFJPR1JBTV9JRC50b0Jhc2U1OCgpLFxuICAgICAgICB9LFxuICAgICAgICBbdmFsaWRhdGlvblN0YXRlUHVia2V5LnRvQmFzZTU4KCldOiB7XG4gICAgICAgICAgZGF0YTogYnVpbGRFeHRyYUFjY291bnRNZXRhTGlzdChleHRyYU1ldGFzKSxcbiAgICAgICAgICBvd25lcjogaG9va1Byb2dyYW1JZC50b0Jhc2U1OCgpLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLnJlc29sdmVUcmFuc2Zlckhvb2tBY2NvdW50cyhcbiAgICAgICAgbWludEFkZHJlc3MsXG4gICAgICAgIHNvdXJjZUFkZHJlc3MsXG4gICAgICAgIGRlc3RpbmF0aW9uQWRkcmVzcyxcbiAgICAgICAgb3duZXJBZGRyZXNzLFxuICAgICAgICBhbW91bnRcbiAgICAgICk7XG5cbiAgICAgIC8vIGV4dHJhIGFjY291bnRzLCB0aGVuIHRoZSBob29rIHByb2dyYW0sIHRoZW4gdGhlIHZhbGlkYXRpb24gc3RhdGUgYWNjb3VudFxuICAgICAgcmVzdWx0LnNob3VsZC5oYXZlLmxlbmd0aChleHRyYU1ldGFzLmxlbmd0aCArIDIpO1xuICAgICAgcmVzdWx0LnNsaWNlKDAsIGV4dHJhTWV0YXMubGVuZ3RoKS5zaG91bGQuZGVlcEVxdWFsKGV4dHJhTWV0YXMpO1xuICAgICAgcmVzdWx0W2V4dHJhTWV0YXMubGVuZ3RoXS5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgcHVia2V5OiBob29rUHJvZ3JhbUlkLnRvQmFzZTU4KCksXG4gICAgICAgIGlzU2lnbmVyOiBmYWxzZSxcbiAgICAgICAgaXNXcml0YWJsZTogZmFsc2UsXG4gICAgICB9KTtcbiAgICAgIHJlc3VsdFtleHRyYU1ldGFzLmxlbmd0aCArIDFdLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBwdWJrZXk6IHZhbGlkYXRpb25TdGF0ZVB1YmtleS50b0Jhc2U1OCgpLFxuICAgICAgICBpc1NpZ25lcjogZmFsc2UsXG4gICAgICAgIGlzV3JpdGFibGU6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyBhbiBlbXB0eSBhcnJheSBmb3IgYSBtaW50IHdpdGhvdXQgYSB0cmFuc2ZlciBob29rJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgc3R1Yk5vZGUoe1xuICAgICAgICBbbWludEFkZHJlc3NdOiB7XG4gICAgICAgICAgZGF0YTogYnVpbGRCYXNlTWludChkZWNpbWFscyksXG4gICAgICAgICAgb3duZXI6IFRPS0VOXzIwMjJfUFJPR1JBTV9JRC50b0Jhc2U1OCgpLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLnJlc29sdmVUcmFuc2Zlckhvb2tBY2NvdW50cyhcbiAgICAgICAgbWludEFkZHJlc3MsXG4gICAgICAgIHNvdXJjZUFkZHJlc3MsXG4gICAgICAgIGRlc3RpbmF0aW9uQWRkcmVzcyxcbiAgICAgICAgb3duZXJBZGRyZXNzLFxuICAgICAgICBhbW91bnRcbiAgICAgICk7XG4gICAgICByZXN1bHQuc2hvdWxkLmRlZXBFcXVhbChbXSk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyBhbiBlbXB0eSBhcnJheSB3aGVuIHRoZSBtaW50IGFjY291bnQgaXMgbm90IGZvdW5kJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgc3R1Yk5vZGUoe30pO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi5yZXNvbHZlVHJhbnNmZXJIb29rQWNjb3VudHMoXG4gICAgICAgIG1pbnRBZGRyZXNzLFxuICAgICAgICBzb3VyY2VBZGRyZXNzLFxuICAgICAgICBkZXN0aW5hdGlvbkFkZHJlc3MsXG4gICAgICAgIG93bmVyQWRkcmVzcyxcbiAgICAgICAgYW1vdW50XG4gICAgICApO1xuICAgICAgcmVzdWx0LnNob3VsZC5kZWVwRXF1YWwoW10pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgncmVzb2x2ZVBlcm1pc3Npb25sZXNzVGhhdycsICgpID0+IHtcbiAgICBjb25zdCBzYW5kQm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuICAgIGNvbnN0IG1pbnRBZGRyZXNzID0gcmVzb3VyY2VzLnNvbDIwMjJUb2tlblRyYW5zZmVycy5taW50O1xuICAgIGNvbnN0IHRva2VuQWNjb3VudCA9IHJlc291cmNlcy5hc3NvY2lhdGVkVG9rZW5BY2NvdW50c0ZvclNvbDIwMjIuYWNjb3VudHNbMF0uYXRhO1xuICAgIGNvbnN0IHRva2VuQWNjb3VudE93bmVyID0gcmVzb3VyY2VzLmF1dGhBY2NvdW50LnB1YjtcbiAgICBjb25zdCBhdXRob3JpdHkgPSByZXNvdXJjZXMubm9uY2VBY2NvdW50LnB1YjtcbiAgICAvLyBBcmJpdHJhcnkgYnV0IHZhbGlkIGJhc2U1OCBwdWJrZXkgdXNlZCBwdXJlbHkgYXMgdGhlIGdhdGluZyBwcm9ncmFtIGZpeHR1cmUuXG4gICAgY29uc3QgZ2F0aW5nUHJvZ3JhbSA9IG5ldyBQdWJsaWNLZXkoJ0diUThaaUVGekdHVGVZb1h3dFp0Y294d1BjTXlVY21aRGR1TVZOZFVQS3BYJyk7XG4gICAgY29uc3QgdG9rZW5BY2xQcm9ncmFtSWQgPSBuZXcgUHVibGljS2V5KFRPS0VOX0FDTF9QUk9HUkFNX0lEKTtcblxuICAgIC8vIEZpeGVkLWFkZHJlc3MgZXh0cmEgYWNjb3VudCBtZXRhcyB0aGUgZ2F0aW5nIHByb2dyYW0gcmVxdWlyZXMgKGRpc2NyaW1pbmF0b3IgMCBlbnRyaWVzKS5cbiAgICBjb25zdCBleHRyYU1ldGFzOiBFeHRyYUFjY291bnRNZXRhW10gPSBbXG4gICAgICB7IHB1YmtleTogJzk4d0ZGNU1wTWpNUWJmREYyTVB6bzhMQ0dYMzd1blpSMW9oUkExbVU5R21KJywgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiB0cnVlIH0sXG4gICAgICB7IHB1YmtleTogJzlzUWhBSDd2VjNSS1RDSzEzVlk0RWlOanMzcUJxMXNyU1l4ZE51ZmRBQVhtJywgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiBmYWxzZSB9LFxuICAgIF07XG5cbiAgICBjb25zdCBbbWludENvbmZpZ1BkYV0gPSBQdWJsaWNLZXkuZmluZFByb2dyYW1BZGRyZXNzU3luYyhcbiAgICAgIFtCdWZmZXIuZnJvbShUT0tFTl9BQ0xfTUlOVF9DT05GSUdfU0VFRCksIG5ldyBQdWJsaWNLZXkobWludEFkZHJlc3MpLnRvQnVmZmVyKCldLFxuICAgICAgdG9rZW5BY2xQcm9ncmFtSWRcbiAgICApO1xuICAgIGNvbnN0IFtmbGFnQWNjb3VudFBkYV0gPSBQdWJsaWNLZXkuZmluZFByb2dyYW1BZGRyZXNzU3luYyhcbiAgICAgIFtCdWZmZXIuZnJvbShUT0tFTl9BQ0xfRkxBR19BQ0NPVU5UX1NFRUQpLCBuZXcgUHVibGljS2V5KHRva2VuQWNjb3VudCkudG9CdWZmZXIoKV0sXG4gICAgICB0b2tlbkFjbFByb2dyYW1JZFxuICAgICk7XG4gICAgY29uc3QgW3RoYXdFeHRyYU1ldGFzUGRhXSA9IFB1YmxpY0tleS5maW5kUHJvZ3JhbUFkZHJlc3NTeW5jKFxuICAgICAgW0J1ZmZlci5mcm9tKFRPS0VOX0FDTF9USEFXX0VYVFJBX01FVEFTX1NFRUQpLCBuZXcgUHVibGljS2V5KG1pbnRBZGRyZXNzKS50b0J1ZmZlcigpXSxcbiAgICAgIGdhdGluZ1Byb2dyYW1cbiAgICApO1xuXG4gICAgLy8gTWludENvbmZpZyBsYXlvdXQ6IHU4IGRpc2NyaW1pbmF0b3IsIHU4IGJ1bXAsIGJvb2wgdGhhdywgYm9vbCBmcmVlemUsIHB1YmtleSBtaW50KDMyKSxcbiAgICAvLyBwdWJrZXkgZnJlZXplQXV0aG9yaXR5KDMyKSwgcHVia2V5IGdhdGluZ1Byb2dyYW0oMzIpLiBUb3RhbCAxMDAgYnl0ZXMuXG4gICAgY29uc3QgYnVpbGRNaW50Q29uZmlnID0gKGVuYWJsZVBlcm1pc3Npb25sZXNzVGhhdzogYm9vbGVhbiwgZ2F0ZVByb2dyYW06IFB1YmxpY0tleSk6IEJ1ZmZlciA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gQnVmZmVyLmFsbG9jKDEwMCk7XG4gICAgICBkYXRhLndyaXRlVUludDgoMSwgMCk7IC8vIGRpc2NyaW1pbmF0b3JcbiAgICAgIGRhdGEud3JpdGVVSW50OCgyNTUsIDEpOyAvLyBidW1wXG4gICAgICBkYXRhLndyaXRlVUludDgoZW5hYmxlUGVybWlzc2lvbmxlc3NUaGF3ID8gMSA6IDAsIDIpO1xuICAgICAgZGF0YS53cml0ZVVJbnQ4KDAsIDMpOyAvLyBlbmFibGVQZXJtaXNzaW9ubGVzc0ZyZWV6ZVxuICAgICAgbmV3IFB1YmxpY0tleShtaW50QWRkcmVzcykudG9CdWZmZXIoKS5jb3B5KGRhdGEsIDQpO1xuICAgICAgdG9rZW5BY2xQcm9ncmFtSWQudG9CdWZmZXIoKS5jb3B5KGRhdGEsIDM2KTsgLy8gZnJlZXplQXV0aG9yaXR5XG4gICAgICBnYXRlUHJvZ3JhbS50b0J1ZmZlcigpLmNvcHkoZGF0YSwgNjgpO1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfTtcblxuICAgIC8vIEV4dHJhQWNjb3VudE1ldGFMaXN0IGFjY291bnQ6IHU2NCBkaXNjcmltaW5hdG9yICsgdTMyIGxlbmd0aCArIHUzMiBjb3VudCwgdGhlbiAzNS1ieXRlXG4gICAgLy8gRXh0cmFBY2NvdW50TWV0YSBlbnRyaWVzIChkaXNjcmltaW5hdG9yIDAgPSBmaXhlZCBhZGRyZXNzKS5cbiAgICBjb25zdCBidWlsZEV4dHJhQWNjb3VudE1ldGFMaXN0ID0gKG1ldGFzOiBFeHRyYUFjY291bnRNZXRhW10pOiBCdWZmZXIgPT4ge1xuICAgICAgY29uc3QgaGVhZGVyU2l6ZSA9IDE2O1xuICAgICAgY29uc3QgZGF0YSA9IEJ1ZmZlci5hbGxvYyhoZWFkZXJTaXplICsgbWV0YXMubGVuZ3RoICogMzUpO1xuICAgICAgZGF0YS53cml0ZVVJbnQzMkxFKDQgKyBtZXRhcy5sZW5ndGggKiAzNSwgOCk7IC8vIGxlbmd0aFxuICAgICAgZGF0YS53cml0ZVVJbnQzMkxFKG1ldGFzLmxlbmd0aCwgMTIpOyAvLyBjb3VudFxuICAgICAgbGV0IG9mZnNldCA9IGhlYWRlclNpemU7XG4gICAgICBmb3IgKGNvbnN0IG1ldGEgb2YgbWV0YXMpIHtcbiAgICAgICAgZGF0YS53cml0ZVVJbnQ4KDAsIG9mZnNldCk7IC8vIGRpc2NyaW1pbmF0b3I6IGZpeGVkIGFkZHJlc3NcbiAgICAgICAgbmV3IFB1YmxpY0tleShtZXRhLnB1YmtleSkudG9CdWZmZXIoKS5jb3B5KGRhdGEsIG9mZnNldCArIDEpO1xuICAgICAgICBkYXRhLndyaXRlVUludDgobWV0YS5pc1NpZ25lciA/IDEgOiAwLCBvZmZzZXQgKyAzMyk7XG4gICAgICAgIGRhdGEud3JpdGVVSW50OChtZXRhLmlzV3JpdGFibGUgPyAxIDogMCwgb2Zmc2V0ICsgMzQpO1xuICAgICAgICBvZmZzZXQgKz0gMzU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9O1xuXG4gICAgY29uc3QgYWNjb3VudEluZm9SZXNwb25zZSA9IChkYXRhOiBCdWZmZXIgfCBudWxsLCBvd25lcjogc3RyaW5nKSA9PiAoe1xuICAgICAgc3RhdHVzOiAyMDAsXG4gICAgICBib2R5OiB7XG4gICAgICAgIHJlc3VsdDoge1xuICAgICAgICAgIHZhbHVlOlxuICAgICAgICAgICAgZGF0YSA9PT0gbnVsbFxuICAgICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICBkYXRhOiBbZGF0YS50b1N0cmluZygnYmFzZTY0JyksICdiYXNlNjQnXSxcbiAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgb3duZXIsXG4gICAgICAgICAgICAgICAgICBsYW1wb3J0czogMSxcbiAgICAgICAgICAgICAgICAgIHJlbnRFcG9jaDogMCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHN0dWJOb2RlID0gKGFjY291bnRzOiBSZWNvcmQ8c3RyaW5nLCB7IGRhdGE6IEJ1ZmZlciB8IG51bGw7IG93bmVyOiBzdHJpbmcgfT4pOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IGNhbGxCYWNrID0gc2FuZEJveC5zdHViKFNvbC5wcm90b3R5cGUsICdnZXREYXRhRnJvbU5vZGUnIGFzIGtleW9mIFNvbCk7XG4gICAgICBjYWxsQmFjay5jYWxsc0Zha2UoYXN5bmMgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBhcmdzWzBdIGFzIHsgcGF5bG9hZD86IHsgcGFyYW1zPzogdW5rbm93bltdIH0gfTtcbiAgICAgICAgY29uc3QgcmVxdWVzdGVkUHVia2V5ID0gcGFyYW1zLnBheWxvYWQ/LnBhcmFtcz8uWzBdIGFzIHN0cmluZztcbiAgICAgICAgY29uc3QgYWNjb3VudCA9IGFjY291bnRzW3JlcXVlc3RlZFB1YmtleV07XG4gICAgICAgIGlmICghYWNjb3VudCkge1xuICAgICAgICAgIHJldHVybiBhY2NvdW50SW5mb1Jlc3BvbnNlKG51bGwsIFRPS0VOXzIwMjJfUFJPR1JBTV9JRC50b0Jhc2U1OCgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjb3VudEluZm9SZXNwb25zZShhY2NvdW50LmRhdGEsIGFjY291bnQub3duZXIpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgICBzYW5kQm94LnJlc3RvcmUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXNvbHZlcyB0aGUgdGhhdyBwYXJhbXMgZm9yIGEgVG9rZW4gQUNMIG1pbnQgd2l0aCBwZXJtaXNzaW9ubGVzcyB0aGF3IGVuYWJsZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBzdHViTm9kZSh7XG4gICAgICAgIFttaW50Q29uZmlnUGRhLnRvQmFzZTU4KCldOiB7XG4gICAgICAgICAgZGF0YTogYnVpbGRNaW50Q29uZmlnKHRydWUsIGdhdGluZ1Byb2dyYW0pLFxuICAgICAgICAgIG93bmVyOiBUT0tFTl9BQ0xfUFJPR1JBTV9JRCxcbiAgICAgICAgfSxcbiAgICAgICAgW3RoYXdFeHRyYU1ldGFzUGRhLnRvQmFzZTU4KCldOiB7XG4gICAgICAgICAgZGF0YTogYnVpbGRFeHRyYUFjY291bnRNZXRhTGlzdChleHRyYU1ldGFzKSxcbiAgICAgICAgICBvd25lcjogZ2F0aW5nUHJvZ3JhbS50b0Jhc2U1OCgpLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLnJlc29sdmVQZXJtaXNzaW9ubGVzc1RoYXcobWludEFkZHJlc3MsIHRva2VuQWNjb3VudCwgdG9rZW5BY2NvdW50T3duZXIsIGF1dGhvcml0eSk7XG5cbiAgICAgIHJlc3VsdC5hcHBsaWNhYmxlLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICByZXN1bHQuZ2F0aW5nUHJvZ3JhbSEuc2hvdWxkLmVxdWFsKGdhdGluZ1Byb2dyYW0udG9CYXNlNTgoKSk7XG4gICAgICByZXN1bHQuZmxhZ0FjY291bnQhLnNob3VsZC5lcXVhbChmbGFnQWNjb3VudFBkYS50b0Jhc2U1OCgpKTtcbiAgICAgIHJlc3VsdC5taW50Q29uZmlnIS5zaG91bGQuZXF1YWwobWludENvbmZpZ1BkYS50b0Jhc2U1OCgpKTtcbiAgICAgIHJlc3VsdC50b2tlblByb2dyYW0hLnNob3VsZC5lcXVhbChUT0tFTl8yMDIyX1BST0dSQU1fSUQudG9CYXNlNTgoKSk7XG4gICAgICByZXN1bHQuc3lzdGVtUHJvZ3JhbSEuc2hvdWxkLmVxdWFsKFN5c3RlbVByb2dyYW0ucHJvZ3JhbUlkLnRvQmFzZTU4KCkpO1xuICAgICAgLy8gZXh0cmEgYWNjb3VudHMgPSBbdGhhd0V4dHJhTWV0YXMsIC4uLnJlc29sdmVkIGZpeGVkLWFkZHJlc3MgZXh0cmFzXVxuICAgICAgcmVzdWx0LmV4dHJhQWNjb3VudHMhLnNob3VsZC5kZWVwRXF1YWwoW1xuICAgICAgICB7IHB1YmtleTogdGhhd0V4dHJhTWV0YXNQZGEudG9CYXNlNTgoKSwgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiBmYWxzZSB9LFxuICAgICAgICAuLi5leHRyYU1ldGFzLFxuICAgICAgXSk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyBhcHBsaWNhYmxlOmZhbHNlIGZvciBhIG1pbnQgd2l0aCBubyBUb2tlbiBBQ0wgTWludENvbmZpZycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIHN0dWJOb2RlKHt9KTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYmFzZWNvaW4ucmVzb2x2ZVBlcm1pc3Npb25sZXNzVGhhdyhtaW50QWRkcmVzcywgdG9rZW5BY2NvdW50LCB0b2tlbkFjY291bnRPd25lciwgYXV0aG9yaXR5KTtcbiAgICAgIHJlc3VsdC5zaG91bGQuZGVlcEVxdWFsKHsgYXBwbGljYWJsZTogZmFsc2UgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyBhcHBsaWNhYmxlOmZhbHNlIHdoZW4gcGVybWlzc2lvbmxlc3MgdGhhdyBpcyBkaXNhYmxlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIHN0dWJOb2RlKHtcbiAgICAgICAgW21pbnRDb25maWdQZGEudG9CYXNlNTgoKV06IHtcbiAgICAgICAgICBkYXRhOiBidWlsZE1pbnRDb25maWcoZmFsc2UsIGdhdGluZ1Byb2dyYW0pLFxuICAgICAgICAgIG93bmVyOiBUT0tFTl9BQ0xfUFJPR1JBTV9JRCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi5yZXNvbHZlUGVybWlzc2lvbmxlc3NUaGF3KG1pbnRBZGRyZXNzLCB0b2tlbkFjY291bnQsIHRva2VuQWNjb3VudE93bmVyLCBhdXRob3JpdHkpO1xuICAgICAgcmVzdWx0LnNob3VsZC5kZWVwRXF1YWwoeyBhcHBsaWNhYmxlOiBmYWxzZSB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
4962
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3NvbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QiwwQ0FBNEI7QUFDNUIsZ0RBQXdCO0FBQ3hCLCtDQUFpQztBQUNqQyw2Q0FBK0I7QUFFL0IsaURBQXdHO0FBQ3hHLDZDQUEyRDtBQUMzRCw2Q0FBK0I7QUFDL0IsZ0RBQWtDO0FBRWxDLGlEQUF3RDtBQUN4RCxtREFtQjhCO0FBQzlCLHlEQUFrRDtBQUNsRCxtREFBK0Q7QUFDL0QsaURBQTRDO0FBQzVDLG1DQVFtQjtBQUNuQix1Q0FBNEM7QUFFNUMsdURBS2lDO0FBQ2pDLCtDQUF1RTtBQUN2RSwwREFBNEM7QUFDNUMsNERBQThDO0FBQzlDLDBEQUF1RDtBQUN2RCwyREFBd0Q7QUFFeEQsUUFBUSxDQUFDLE1BQU0sRUFBRTtJQUNmLElBQUksS0FBbUIsQ0FBQztJQUN4QixJQUFJLFFBQWEsQ0FBQztJQUNsQixJQUFJLE9BQU8sQ0FBQztJQUNaLElBQUksYUFBYSxDQUFDO0lBQ2xCLElBQUksMEJBQTBCLENBQUM7SUFDL0IsSUFBSSxXQUFXLENBQUM7SUFDaEIsSUFBSSxvQkFBb0IsQ0FBQztJQUN6QixJQUFJLHdCQUF3QixDQUFDO0lBQzdCLElBQUksd0JBQXdCLENBQUM7SUFDN0IsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQztJQUMxRCxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQztJQUV6RCxNQUFNLE9BQU8sR0FBRztRQUNkLEdBQUcsRUFBRSxTQUFTLENBQUMsZUFBZSxDQUFDLFNBQVM7UUFDeEMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLE1BQU07S0FDakQsQ0FBQztJQUNGLE1BQU0sVUFBVSxH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Q0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IG5vY2sgZnJvbSAnbm9jayc7XG5pbXBvcnQgKiBhcyBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcblxuaW1wb3J0IHsgZ2V0RXh0cmFBY2NvdW50TWV0YUFkZHJlc3MsIFRPS0VOXzIwMjJfUFJPR1JBTV9JRCwgVE9LRU5fUFJPR1JBTV9JRCB9IGZyb20gJ0Bzb2xhbmEvc3BsLXRva2VuJztcbmltcG9ydCB7IFB1YmxpY0tleSwgU3lzdGVtUHJvZ3JhbSB9IGZyb20gJ0Bzb2xhbmEvd2ViMy5qcyc7XG5pbXBvcnQgKiBhcyBiYXNlNTggZnJvbSAnYnM1OCc7XG5pbXBvcnQgKiBhcyBuYWNsIGZyb20gJ3R3ZWV0bmFjbCc7XG5cbmltcG9ydCB7IEJpdEdvQVBJLCBlbmNyeXB0IH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWFwaSc7XG5pbXBvcnQge1xuICBjb21tb24sXG4gIEVERFNBTWV0aG9kcyxcbiAgRW52aXJvbm1lbnRzLFxuICBnZW5lcmF0ZVJhbmRvbVBhc3N3b3JkLFxuICBJV2FsbGV0LFxuICBNQVhfU09MX01FU1NBR0VfQllURVMsXG4gIE1lc3NhZ2VTdGFuZGFyZFR5cGUsXG4gIE1QQ1N3ZWVwUmVjb3ZlcnlPcHRpb25zLFxuICBNUENTd2VlcFR4cyxcbiAgTVBDVHgsXG4gIE1QQ1R4cyxcbiAgc2lnblJlY292ZXJ5RWRkc2FNUEN2MixcbiAgUHJlYnVpbGRBbmRTaWduVHJhbnNhY3Rpb25PcHRpb25zLFxuICBUcmFuc2FjdGlvblByZWJ1aWxkLFxuICBUc3NVdGlscyxcbiAgVHhSZXF1ZXN0LFxuICBXYWxsZXQsXG4gIFdhbGxldENvaW5TcGVjaWZpYyxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgTVBTVXRpbCB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1saWItbXBjJztcbmltcG9ydCB7IFRlc3RCaXRHbywgVGVzdEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLXRlc3QnO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7XG4gIGdldEFtb3VudEJhc2VkT25FbmRpYW5uZXNzLFxuICBLZXlQYWlyLFxuICBTb2wsXG4gIFNvbENvbnNvbGlkYXRpb25SZWNvdmVyeU9wdGlvbnMsXG4gIFNvbFJlY292ZXJ5T3B0aW9ucyxcbiAgU29sVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zLFxuICBUc29sLFxufSBmcm9tICcuLi8uLi9zcmMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi9zcmMvbGliJztcbmltcG9ydCB7IEF0YUluaXQsIEV4dHJhQWNjb3VudE1ldGEsIEluc3RydWN0aW9uUGFyYW1zLCBUb2tlblRyYW5zZmVyIH0gZnJvbSAnLi4vLi4vc3JjL2xpYi9pZmFjZSc7XG5pbXBvcnQge1xuICBUT0tFTl9BQ0xfRkxBR19BQ0NPVU5UX1NFRUQsXG4gIFRPS0VOX0FDTF9NSU5UX0NPTkZJR19TRUVELFxuICBUT0tFTl9BQ0xfUFJPR1JBTV9JRCxcbiAgVE9LRU5fQUNMX1RIQVdfRVhUUkFfTUVUQVNfU0VFRCxcbn0gZnJvbSAnLi4vLi4vc3JjL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0QXNzb2NpYXRlZFRva2VuQWNjb3VudEFkZHJlc3MgfSBmcm9tICcuLi8uLi9zcmMvbGliL3V0aWxzJztcbmltcG9ydCAqIGFzIHRlc3REYXRhIGZyb20gJy4uL2ZpeHR1cmVzL3NvbCc7XG5pbXBvcnQgKiBhcyByZXNvdXJjZXMgZnJvbSAnLi4vcmVzb3VyY2VzL3NvbCc7XG5pbXBvcnQgeyBzb2xCYWNrdXBLZXkgfSBmcm9tICcuL2ZpeHR1cmVzL3NvbEJhY2t1cEtleSc7XG5pbXBvcnQgeyBnZXRCdWlsZGVyRmFjdG9yeSB9IGZyb20gJy4vZ2V0QnVpbGRlckZhY3RvcnknO1xuXG5kZXNjcmliZSgnU09MOicsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGJpdGdvOiBUZXN0Qml0R29BUEk7XG4gIGxldCBiYXNlY29pbjogU29sO1xuICBsZXQga2V5UGFpcjtcbiAgbGV0IG5ld1R4UHJlYnVpbGQ7XG4gIGxldCBuZXdUeFByZWJ1aWxkVG9rZW5UcmFuc2ZlcjtcbiAgbGV0IG5ld1R4UGFyYW1zO1xuICBsZXQgbmV3VHhQYXJhbXNXaXRoRXJyb3I7XG4gIGxldCBuZXdUeFBhcmFtc1dpdGhFeHRyYURhdGE7XG4gIGxldCBuZXdUeFBhcmFtc1Rva2VuVHJhbnNmZXI7XG4gIGNvbnN0IGJhZEFkZHJlc3NlcyA9IHJlc291cmNlcy5hZGRyZXNzZXMuaW52YWxpZEFkZHJlc3NlcztcbiAgY29uc3QgZ29vZEFkZHJlc3NlcyA9IHJlc291cmNlcy5hZGRyZXNzZXMudmFsaWRBZGRyZXNzZXM7XG5cbiAgY29uc3Qga2V5cGFpciA9IHtcbiAgICBwdWI6IHJlc291cmNlcy5hY2NvdW50V2l0aFNlZWQucHVibGljS2V5LFxuICAgIHBydjogcmVzb3VyY2VzLmFjY291bnRXaXRoU2VlZC5wcml2YXRlS2V5LmJhc2U1OCxcbiAgfTtcbiAgY29uc3QgdHhQcmVidWlsZCA9IHtcbiAgICByZWNpcGllbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGFkZHJlc3M6ICdsaW9udGVzdGUyMTInLFxuICAgICAgICBhbW91bnQ6ICcxMDAwJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgICB0eEJhc2U2NDogcmVzb3VyY2VzLlRSQU5TRkVSX1VOU0lHTkVEX1RYX1dJVEhfTUVNT19BTkRfRFVSQUJMRV9OT05DRSxcbiAgICB0eEluZm86IHtcbiAgICAgIGZlZVBheWVyOiAnNWhyNWZpc1BpNkRYTnV1UnBtNVhVYnpwaUVubWR5eFh1QkRUd3p3Wmo1UGUnLFxuICAgICAgbm9uY2U6ICdHSHRYUUJzb1pIVm5ORmE5WWV2QXpGcjE3REpqZ0hYazN5Y1RLRDV4RDNaaScsXG4gICAgfSxcbiAgICB0eGlkOiAnNTg2YzViNTliMTBiMTM0ZDA0YzE2YWMxYjI3M2ZlM2M1NTI5ZjM0YWVmNzVkYjQ0NTZjZDQ2OWM1Y2RhYzdlMicsXG4gICAgaXNWb3RpbmdUcmFuc2FjdGlvbjogZmFsc2UsXG4gICAgY29pbjogJ3Rzb2wnLFxuICB9O1xuICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICB0eFByZWJ1aWxkLFxuICAgIHJlY2lwaWVudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzczogJ0NQNURwYWE0MlJ0Sm1NdUtxQ1FzTHdtYTVZaDNrbnV2S3NZREZYODVGNDFTJyxcbiAgICAgICAgYW1vdW50OiAnMzAwMDAwJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcbiAgY29uc3QgbWVtbyA9IHsgdmFsdWU6ICd0ZXN0IG1lbW8nIH07XG4gIGNvbnN0IGR1cmFibGVOb25jZSA9IHtcbiAgICB3YWxsZXROb25jZUFkZHJlc3M6ICc4WTdSTTZKZmNYNEFTU05Ca3Jrcm1TYlJ1NDMxWVZpOVkzb0xGbnpDMmRDaCcsXG4gICAgYXV0aFdhbGxldEFkZHJlc3M6ICc1aHI1ZmlzUGk2RFhOdXVScG01WFVienBpRW5tZHl4WHVCRFR3endaajVQZScsXG4gIH07XG4gIGNvbnN0IGVycm9yRHVyYWJsZU5vbmNlID0ge1xuICAgIHdhbGxldE5vbmNlQWRkcmVzczogJzhZTTZKZmNYNEFTU05Ca3Jrcm1TYlJ1NDMxWVZpOVkzb0xGbnpDMmRDaCcsXG4gICAgYXV0aFdhbGxldEFkZHJlc3M6ICc1aHI1ZmlzUGk2RFhOdXVScG01WFVienBpRW5tZHl4WHVCRFR3endaajVQZScsXG4gIH07XG4gIGNvbnN0IHR4UGFyYW1zV2l0aEVycm9yID0ge1xuICAgIHR4UHJlYnVpbGQsXG4gICAgcmVjaXBpZW50czogW1xuICAgICAge1xuICAgICAgICBhZGRyZXNzOiAnQ1A1RHBhYTQybU11S3FDUXNMd21hNVloM2tudXZLc1lERlg4NUY0MVMnLFxuICAgICAgICBhbW91bnQ6ICczMDAwMDAnLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuICBjb25zdCB0eFBhcmFtc1dpdGhFeHRyYURhdGEgPSB7XG4gICAgdHhQcmVidWlsZCxcbiAgICByZWNpcGllbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGFkZHJlc3M6ICdDUDVEcGFhNDJSdEptTXVLcUNRc0x3bWE1WWgza251dktzWURGWDg1RjQxUycsXG4gICAgICAgIGFtb3VudDogJzMwMDAwMCcsXG4gICAgICAgIGRhdGE6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcbiAgY29uc3QgdHhQcmVidWlsZFRva2VuVHJhbnNmZXIgPSB7XG4gICAgcmVjaXBpZW50czogW1xuICAgICAge1xuICAgICAgICBhZGRyZXNzOiAnQUY1SDZ2QmtGbkp1VnFDaFJQZ1BRNEpSY1E1R2syNUhCRmhRUWt5b2ptdmcnLFxuICAgICAgICBhbW91bnQ6ICcxJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgICB0eEhleDogcmVzb3VyY2VzLlRPS0VOX1RSQU5TRkVSX1RPX05BVElWRV9VTlNJR05FRF9UWF9IRVgsXG4gICAgdHhJbmZvOiB7XG4gICAgICBmZWVQYXllcjogJzREdWp5bVVGYlE4R0JLdEF3QVpyUTZRcXB2dEJFaXZMNDhoNHRhMm9KR2QyJyxcbiAgICAgIG5vbmNlOiAnR0h0WFFCc29aSFZuTkZhOVlldkF6RnIxN0RKamdIWGszeWNUS0Q1eEQzWmknLFxuICAgIH0sXG4gICAgdHhpZDogJzU4NmM1YjU5YjEwYjEzNGQwNGMxNmFjMWIyNzNmZTNjNTUyOWYzNGFlZjc1ZGI0NDU2Y2Q0NjljNWNkYWM3ZTInLFxuICAgIGlzVm90aW5nVHJhbnNhY3Rpb246IGZhbHNlLFxuICAgIGNvaW46ICd0c29sJyxcbiAgfTtcbiAgY29uc3QgdHhQYXJhbXNUb2tlblRyYW5zZmVyID0ge1xuICAgIHR4UHJlYnVpbGQsXG4gICAgcmVjaXBpZW50czogW1xuICAgICAge1xuICAgICAgICBhZGRyZXNzOiAnQUY1SDZ2QmtGbkp1VnFDaFJQZ1BRNEpSY1E1R2syNUhCRmhRUWt5b2ptdmcnLFxuICAgICAgICBhbW91bnQ6ICcxJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcbiAgY29uc3QgZXJyb3JNZW1vID0geyB2YWx1ZTogJ2RpZmZlcmVudCBtZW1vJyB9O1xuICBjb25zdCBlcnJvckZlZVBheWVyID0gJzVocjVmaXNQaTZEWEN1dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJztcbiAgY29uc3QgZmFjdG9yeSA9IGdldEJ1aWxkZXJGYWN0b3J5KCd0c29sJyk7XG4gIGNvbnN0IHdhbGxldCA9IG5ldyBLZXlQYWlyKHJlc291cmNlcy5hdXRoQWNjb3VudCkuZ2V0S2V5cygpO1xuICBjb25zdCBzdGFrZUFjY291bnQgPSBuZXcgS2V5UGFpcihyZXNvdXJjZXMuc3Rha2VBY2NvdW50KS5nZXRLZXlzKCk7XG4gIGNvbnN0IGJsb2NrSGFzaCA9IHJlc291cmNlcy5ibG9ja0hhc2hlcy52YWxpZEJsb2NrSGFzaGVzWzBdO1xuICBjb25zdCBhbW91bnQgPSAnMTAwMDAnO1xuICBjb25zdCB2YWxpZGF0b3IgPSByZXNvdXJjZXMudmFsaWRhdG9yO1xuXG4gIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgYml0Z28gPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R29BUEksIHsgZW52OiAnbW9jaycgfSk7XG4gICAgYml0Z28uc2FmZVJlZ2lzdGVyKCdzb2wnLCBUc29sLmNyZWF0ZUluc3RhbmNlKTtcbiAgICBiaXRnby5zYWZlUmVnaXN0ZXIoJ3Rzb2wnLCBUc29sLmNyZWF0ZUluc3RhbmNlKTtcbiAgICBiaXRnby5pbml0aWFsaXplVGVzdFZhcnMoKTtcbiAgICBiYXNlY29pbiA9IGJpdGdvLmNvaW4oJ3Rzb2wnKSBhcyBUc29sO1xuICAgIGtleVBhaXIgPSBiYXNlY29pbi5nZW5lcmF0ZUtleVBhaXIocmVzb3VyY2VzLmFjY291bnRXaXRoU2VlZC5zZWVkKTtcbiAgICBuZXdUeFByZWJ1aWxkID0gKCkgPT4ge1xuICAgICAgcmV0dXJuIF8uY2xvbmVEZWVwKHR4UHJlYnVpbGQpO1xuICAgIH07XG4gICAgbmV3VHhQcmVidWlsZFRva2VuVHJhbnNmZXIgPSAoKSA9PiB7XG4gICAgICByZXR1cm4gXy5jbG9uZURlZXAodHhQcmVidWlsZFRva2VuVHJhbnNmZXIpO1xuICAgIH07XG4gICAgbmV3VHhQYXJhbXMgPSAoKSA9PiB7XG4gICAgICByZXR1cm4gXy5jbG9uZURlZXAodHhQYXJhbXMpO1xuICAgIH07XG4gICAgbmV3VHhQYXJhbXNXaXRoRXJyb3IgPSAoKSA9PiB7XG4gICAgICByZXR1cm4gXy5jbG9uZURlZXAodHhQYXJhbXNXaXRoRXJyb3IpO1xuICAgIH07XG4gICAgbmV3VHhQYXJhbXNXaXRoRXh0cmFEYXRhID0gKCkgPT4ge1xuICAgICAgcmV0dXJuIF8uY2xvbmVEZWVwKHR4UGFyYW1zV2l0aEV4dHJhRGF0YSk7XG4gICAgfTtcbiAgICBuZXdUeFBhcmFtc1Rva2VuVHJhbnNmZXIgPSAoKSA9PiB7XG4gICAgICByZXR1cm4gXy5jbG9uZURlZXAodHhQYXJhbXNUb2tlblRyYW5zZmVyKTtcbiAgICB9O1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGluc3RhbnRpYXRlIHRoZSBjb2luJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGxldCBsb2NhbEJhc2Vjb2luID0gYml0Z28uY29pbigndHNvbCcpO1xuICAgIGxvY2FsQmFzZWNvaW4uc2hvdWxkLmJlLmFuLmluc3RhbmNlb2YoVHNvbCk7XG5cbiAgICBsb2NhbEJhc2Vjb2luID0gYml0Z28uY29pbignc29sJyk7XG4gICAgbG9jYWxCYXNlY29pbi5zaG91bGQuYmUuYW4uaW5zdGFuY2VvZihTb2wpO1xuICB9KTtcblxuICBkZXNjcmliZSgnY2hlY2tSZWNpcGllbnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgaW52YWxpZEFtb3VudEVycm9yID1cbiAgICAgIC9pbnZhbGlkIGFyZ3VtZW50IGZvciBhbW91bnQgLSBwb3NpdGl2ZSBudW1iZXIgZ3JlYXRlciB0aGFuIHplcm8gb3IgbnVtZXJpYyBzdHJpbmcgZXhwZWN0ZWQvO1xuXG4gICAgaXQoJ3JlamVjdHMgYSB6ZXJvIGFtb3VudCBieSBkZWZhdWx0JywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB7XG4gICAgICAgIGJhc2Vjb2luLmNoZWNrUmVjaXBpZW50KHsgYWRkcmVzczogJ2F0YUFkZHJlc3MnLCBhbW91bnQ6ICcwJyB9KTtcbiAgICAgIH0sIGludmFsaWRBbW91bnRFcnJvcik7XG4gICAgfSk7XG5cbiAgICBpdCgnYWxsb3dzIGEgemVybyBhbW91bnQgd2hlbiBhbGxvd1plcm9BbW91bnQgaXMgc2V0JywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiB7XG4gICAgICAgIGJhc2Vjb2luLmNoZWNrUmVjaXBpZW50KHsgYWRkcmVzczogJ2F0YUFkZHJlc3MnLCBhbW91bnQ6ICcwJyB9LCB7IGFsbG93WmVyb0Ftb3VudDogdHJ1ZSB9KTtcbiAgICAgIH0pO1xuICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiB7XG4gICAgICAgIGJhc2Vjb2luLmNoZWNrUmVjaXBpZW50KHsgYWRkcmVzczogJ2F0YUFkZHJlc3MnLCBhbW91bnQ6IDAgfSwgeyBhbGxvd1plcm9BbW91bnQ6IHRydWUgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzdGlsbCByZWplY3RzIG5lZ2F0aXZlIGFtb3VudHMgd2hlbiBhbGxvd1plcm9BbW91bnQgaXMgc2V0JywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB7XG4gICAgICAgIGJhc2Vjb2luLmNoZWNrUmVjaXBpZW50KHsgYWRkcmVzczogJ2F0YUFkZHJlc3MnLCBhbW91bnQ6ICctMScgfSwgeyBhbGxvd1plcm9BbW91bnQ6IHRydWUgfSk7XG4gICAgICB9LCBpbnZhbGlkQW1vdW50RXJyb3IpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FsbG93cyBhbW91bnQgXCJtYXhcIicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4ge1xuICAgICAgICBiYXNlY29pbi5jaGVja1JlY2lwaWVudCh7IGFkZHJlc3M6ICdhdGFBZGRyZXNzJywgYW1vdW50OiAnbWF4JyB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVuIHRoZSByaWdodCBpbmZvJywgZnVuY3Rpb24gKCkge1xuICAgIGJhc2Vjb2luLmdldENoYWluKCkuc2hvdWxkLmVxdWFsKCd0c29sJyk7XG4gICAgYmFzZWNvaW4uZ2V0RmFtaWx5KCkuc2hvdWxkLmVxdWFsKCdzb2wnKTtcbiAgICBiYXNlY29pbi5nZXRGdWxsTmFtZSgpLnNob3VsZC5lcXVhbCgnVGVzdG5ldCBTb2xhbmEnKTtcbiAgICBiYXNlY29pbi5nZXRCYXNlRmFjdG9yKCkuc2hvdWxkLmVxdWFsKDEwMDAwMDAwMDApO1xuICB9KTtcbiAgZGVzY3JpYmUoJ3ZlcmlmeSB0cmFuc2FjdGlvbnMnLCAoKSA9PiB7XG4gICAgY29uc3Qgd2FsbGV0RGF0YSA9IHtcbiAgICAgIGlkOiAnNWIzNDI1MmYxYmYzNDk5MzBlMzQwMjBhMDAwMDAwMDAnLFxuICAgICAgY29pbjogJ3Rzb2wnLFxuICAgICAga2V5czogW1xuICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc1MDAwMDAwMDAnLFxuICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc2MDAwMDAwMDAnLFxuICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc3MDAwMDAwMDAnLFxuICAgICAgXSxcbiAgICAgIGNvaW5TcGVjaWZpYzoge1xuICAgICAgICByb290QWRkcmVzczogd2FsbGV0LnB1YixcbiAgICAgIH0sXG4gICAgICBtdWx0aXNpZ1R5cGU6ICd0c3MnLFxuICAgIH07XG4gICAgY29uc3Qgd2FsbGV0T2JqID0gbmV3IFdhbGxldChiaXRnbywgYmFzZWNvaW4sIHdhbGxldERhdGEpO1xuXG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgdHJhbnNhY3Rpb25zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSBuZXdUeFBhcmFtcygpO1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IG5ld1R4UHJlYnVpbGQoKTtcbiAgICAgIGNvbnN0IHZhbGlkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UGFyYW1zLFxuICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICBtZW1vLFxuICAgICAgICBkdXJhYmxlTm9uY2UsXG4gICAgICAgIHdhbGxldDogd2FsbGV0T2JqLFxuICAgICAgfSBhcyBhbnkpO1xuICAgICAgdmFsaWRUcmFuc2FjdGlvbi5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSBjb25zb2xpZGF0ZSB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0gbmV3VHhQYXJhbXMoKTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkKCk7XG4gICAgICB0eFByZWJ1aWxkLmNvbnNvbGlkYXRlSWQgPSAnY29uc29saWRhdGVJZCc7XG5cbiAgICAgIGNvbnN0IHdhbGxldERhdGEgPSB7XG4gICAgICAgIGlkOiAnNWIzNDI1MmYxYmYzNDk5MzBlMzQwMjBhMDAwMDAwMDAnLFxuICAgICAgICBjb2luOiAndHNvbCcsXG4gICAgICAgIGtleXM6IFtcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc1MDAwMDAwMDAnLFxuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzYwMDAwMDAwMCcsXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NzAwMDAwMDAwJyxcbiAgICAgICAgXSxcbiAgICAgICAgY29pblNwZWNpZmljOiB7XG4gICAgICAgICAgcm9vdEFkZHJlc3M6IHN0YWtlQWNjb3VudC5wdWIsXG4gICAgICAgIH0sXG4gICAgICAgIG11bHRpc2lnVHlwZTogJ3RzcycsXG4gICAgICB9O1xuICAgICAgY29uc3Qgd2FsbGV0V2l0aERpZmZlcmVudEFkZHJlc3MgPSBuZXcgV2FsbGV0KGJpdGdvLCBiYXNlY29pbiwgd2FsbGV0RGF0YSk7XG5cbiAgICAgIGNvbnN0IHZhbGlkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UGFyYW1zLFxuICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICBtZW1vLFxuICAgICAgICBkdXJhYmxlTm9uY2UsXG4gICAgICAgIHdhbGxldDogd2FsbGV0V2l0aERpZmZlcmVudEFkZHJlc3MsXG4gICAgICB9IGFzIGFueSk7XG4gICAgICB2YWxpZFRyYW5zYWN0aW9uLnNob3VsZC5iZS50cnVlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSB0eEJhc2U2NCBhbmQgdHhIZXggaW50ZXJjaGFuZ2VhYmx5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSBuZXdUeFBhcmFtcygpO1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IG5ld1R4UHJlYnVpbGQoKTtcbiAgICAgIHR4UHJlYnVpbGQudHhIZXggPSB0eFByZWJ1aWxkLnR4QmFzZTY0O1xuICAgICAgdHhQcmVidWlsZC50eEJhc2U2NCA9IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IHZhbGlkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UGFyYW1zLFxuICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICBtZW1vLFxuICAgICAgICBkdXJhYmxlTm9uY2UsXG4gICAgICAgIHdhbGxldDogd2FsbGV0T2JqLFxuICAgICAgfSBhcyBhbnkpO1xuICAgICAgdmFsaWRUcmFuc2FjdGlvbi5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNvbnZlcnQgc2VyaWFsaXplZCBoZXggc3RyaW5nIHRvIGJhc2U2NCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0gbmV3VHhQYXJhbXMoKTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkKCk7XG4gICAgICB0eFByZWJ1aWxkLnR4QmFzZTY0ID0gQnVmZmVyLmZyb20odHhQcmVidWlsZC50eEJhc2U2NCwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgIGNvbnN0IHZhbGlkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UGFyYW1zLFxuICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICBtZW1vLFxuICAgICAgICBkdXJhYmxlTm9uY2UsXG4gICAgICAgIHdhbGxldDogd2FsbGV0T2JqLFxuICAgICAgfSBhcyBhbnkpO1xuICAgICAgdmFsaWRUcmFuc2FjdGlvbi5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSB3aGVuIGlucHV0IGByZWNpcGllbnRzYCBpcyBhYnNlbnQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zKCk7XG4gICAgICB0eFBhcmFtcy5yZWNpcGllbnRzID0gdW5kZWZpbmVkO1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IG5ld1R4UHJlYnVpbGQoKTtcbiAgICAgIGNvbnN0IHZhbGlkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UGFyYW1zLFxuICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICBtZW1vLFxuICAgICAgICBkdXJhYmxlTm9uY2UsXG4gICAgICAgIHdhbGxldDogd2FsbGV0T2JqLFxuICAgICAgfSBhcyBhbnkpO1xuICAgICAgdmFsaWRUcmFuc2FjdGlvbi5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSBidWxrIGNsb3NlLUFUQSB0eCB3aGVuIHR4UGFyYW1zLnJlY2lwaWVudHMgaXMgcHJlc2VudCAob3V0cHV0cyBub3QgcG9wdWxhdGVkKScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFjY291bnRLZXlzID0gbmV3IEtleVBhaXIocmVzb3VyY2VzLmF1dGhBY2NvdW50KS5nZXRLZXlzKCk7XG4gICAgICBjb25zdCBub25jZUFjY291bnRLZXlzID0gbmV3IEtleVBhaXIocmVzb3VyY2VzLm5vbmNlQWNjb3VudCkuZ2V0S2V5cygpO1xuICAgICAgY29uc3QgYWNjb3VudDJLZXlzID0gbmV3IEtleVBhaXIocmVzb3VyY2VzLmF1dGhBY2NvdW50MikuZ2V0S2V5cygpO1xuICAgICAgY29uc3QgYXRhQWRkcmVzczEgPSBub25jZUFjY291bnRLZXlzLnB1YjtcbiAgICAgIGNvbnN0IGF0YUFkZHJlc3MyID0gYWNjb3VudDJLZXlzLnB1YjtcblxuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRDbG9zZUF0YUluaXRpYWxpemF0aW9uQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLm5vbmNlKGJsb2NrSGFzaCk7XG4gICAgICB0eEJ1aWxkZXIuc2VuZGVyKGFjY291bnRLZXlzLnB1Yik7XG4gICAgICB0eEJ1aWxkZXIuYWRkQ2xvc2VBdGFJbnN0cnVjdGlvbihhdGFBZGRyZXNzMSwgYWNjb3VudEtleXMucHViLCBhY2NvdW50S2V5cy5wdWIpO1xuICAgICAgdHhCdWlsZGVyLmFkZENsb3NlQXRhSW5zdHJ1Y3Rpb24oYXRhQWRkcmVzczIsIGFjY291bnRLZXlzLnB1YiwgYWNjb3VudEtleXMucHViKTtcbiAgICAgIGNvbnN0IGJ1aWx0ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICB0eEJhc2U2NDogYnVpbHQudG9Ccm9hZGNhc3RGb3JtYXQoKSxcbiAgICAgICAgdHhJbmZvOiB7XG4gICAgICAgICAgZmVlUGF5ZXI6IGFjY291bnRLZXlzLnB1YixcbiAgICAgICAgICBub25jZTogYmxvY2tIYXNoLFxuICAgICAgICB9LFxuICAgICAgICBjb2luOiAndHNvbCcsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCB2YWxpZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICB0eFBhcmFtczoge1xuICAgICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICAgIHsgYWRkcmVzczogYXRhQWRkcmVzczEsIGFtb3VudDogJzAnIH0sXG4gICAgICAgICAgICB7IGFkZHJlc3M6IGF0YUFkZHJlc3MyLCBhbW91bnQ6ICcwJyB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIHdhbGxldDogd2FsbGV0T2JqLFxuICAgICAgfSBhcyBhbnkpO1xuICAgICAgdmFsaWRUcmFuc2FjdGlvbi5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdmVyaWZ5IGJ1bGsgY2xvc2UtQVRBIHdoZW4gdHhQYXJhbXMucmVjaXBpZW50cyBkbyBub3QgbWF0Y2ggY2xvc2UgaW5zdHJ1Y3Rpb25zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYWNjb3VudEtleXMgPSBuZXcgS2V5UGFpcihyZXNvdXJjZXMuYXV0aEFjY291bnQpLmdldEtleXMoKTtcbiAgICAgIGNvbnN0IG5vbmNlQWNjb3VudEtleXMgPSBuZXcgS2V5UGFpcihyZXNvdXJjZXMubm9uY2VBY2NvdW50KS5nZXRLZXlzKCk7XG4gICAgICBjb25zdCBhY2NvdW50MktleXMgPSBuZXcgS2V5UGFpcihyZXNvdXJjZXMuYXV0aEFjY291bnQyKS5nZXRLZXlzKCk7XG4gICAgICBjb25zdCB3cm9uZ0F0YSA9IG5ldyBLZXlQYWlyKHJlc291cmNlcy5zdGFrZUFjY291bnQpLmdldEtleXMoKS5wdWI7XG4gICAgICBjb25zdCBhdGFBZGRyZXNzMSA9IG5vbmNlQWNjb3VudEtleXMucHViO1xuICAgICAgY29uc3QgYXRhQWRkcmVzczIgPSBhY2NvdW50MktleXMucHViO1xuXG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldENsb3NlQXRhSW5pdGlhbGl6YXRpb25CdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIubm9uY2UoYmxvY2tIYXNoKTtcbiAgICAgIHR4QnVpbGRlci5zZW5kZXIoYWNjb3VudEtleXMucHViKTtcbiAgICAgIHR4QnVpbGRlci5hZGRDbG9zZUF0YUluc3RydWN0aW9uKGF0YUFkZHJlc3MxLCBhY2NvdW50S2V5cy5wdWIsIGFjY291bnRLZXlzLnB1Yik7XG4gICAgICB0eEJ1aWxkZXIuYWRkQ2xvc2VBdGFJbnN0cnVjdGlvbihhdGFBZGRyZXNzMiwgYWNjb3VudEtleXMucHViLCBhY2NvdW50S2V5cy5wdWIpO1xuICAgICAgY29uc3QgYnVpbHQgPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHR4QmFzZTY0OiBidWlsdC50b0Jyb2FkY2FzdEZvcm1hdCgpLFxuICAgICAgICB0eEluZm86IHtcbiAgICAgICAgICBmZWVQYXllcjogYWNjb3VudEtleXMucHViLFxuICAgICAgICAgIG5vbmNlOiBibG9ja0hhc2gsXG4gICAgICAgIH0sXG4gICAgICAgIGNvaW46ICd0c29sJyxcbiAgICAgIH07XG5cbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgdHhQYXJhbXM6IHtcbiAgICAgICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICAgICAgeyBhZGRyZXNzOiBhdGFBZGRyZXNzMSwgYW1vdW50OiAnMCcgfSxcbiAgICAgICAgICAgICAgeyBhZGRyZXNzOiB3cm9uZ0F0YSwgYW1vdW50OiAnMCcgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICAgIHdhbGxldDogd2FsbGV0T2JqLFxuICAgICAgICB9IGFzIGFueSlcbiAgICAgICAgLnNob3VsZC5yZWplY3RlZFdpdGgoXG4gICAgICAgICAgJ0Nsb3NlIEFUQSB0eFBhcmFtcy5yZWNpcGllbnRzIGFkZHJlc3NlcyBtdXN0IG1hdGNoIHRoZSBBVEEgYWNjb3VudCBhZGRyZXNzZXMgaW4gdGhlIHRyYW5zYWN0aW9uIGluc3RydWN0aW9ucydcbiAgICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB2ZXJpZnkgYnVsayBjbG9zZS1BVEEgd2hlbiBhIHJlY2lwaWVudCBhbW91bnQgaXMgbm9uLXplcm8nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBhY2NvdW50S2V5cyA9IG5ldyBLZXlQYWlyKHJlc291cmNlcy5hdXRoQWNjb3VudCkuZ2V0S2V5cygpO1xuICAgICAgY29uc3Qgbm9uY2VBY2NvdW50S2V5cyA9IG5ldyBLZXlQYWlyKHJlc291cmNlcy5ub25jZUFjY291bnQpLmdldEtleXMoKTtcbiAgICAgIGNvbnN0IGFjY291bnQyS2V5cyA9IG5ldyBLZXlQYWlyKHJlc291cmNlcy5hdXRoQWNjb3VudDIpLmdldEtleXMoKTtcbiAgICAgIGNvbnN0IGF0YUFkZHJlc3MxID0gbm9uY2VBY2NvdW50S2V5cy5wdWI7XG4gICAgICBjb25zdCBhdGFBZGRyZXNzMiA9IGFjY291bnQyS2V5cy5wdWI7XG5cbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0Q2xvc2VBdGFJbml0aWFsaXphdGlvbkJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5ub25jZShibG9ja0hhc2gpO1xuICAgICAgdHhCdWlsZGVyLnNlbmRlcihhY2NvdW50S2V5cy5wdWIpO1xuICAgICAgdHhCdWlsZGVyLmFkZENsb3NlQXRhSW5zdHJ1Y3Rpb24oYXRhQWRkcmVzczEsIGFjY291bnRLZXlzLnB1YiwgYWNjb3VudEtleXMucHViKTtcbiAgICAgIHR4QnVpbGRlci5hZGRDbG9zZUF0YUluc3RydWN0aW9uKGF0YUFkZHJlc3MyLCBhY2NvdW50S2V5cy5wdWIsIGFjY291bnRLZXlzLnB1Yik7XG4gICAgICBjb25zdCBidWlsdCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHtcbiAgICAgICAgdHhCYXNlNjQ6IGJ1aWx0LnRvQnJvYWRjYXN0Rm9ybWF0KCksXG4gICAgICAgIHR4SW5mbzoge1xuICAgICAgICAgIGZlZVBheWVyOiBhY2NvdW50S2V5cy5wdWIsXG4gICAgICAgICAgbm9uY2U6IGJsb2NrSGFzaCxcbiAgICAgICAgfSxcbiAgICAgICAgY29pbjogJ3Rzb2wnLFxuICAgICAgfTtcblxuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICB0eFBhcmFtczoge1xuICAgICAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgICAgICB7IGFkZHJlc3M6IGF0YUFkZHJlc3MxLCBhbW91bnQ6ICcxJyB9LFxuICAgICAgICAgICAgICB7IGFkZHJlc3M6IGF0YUFkZHJlc3MyLCBhbW91bnQ6ICcwJyB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgICAgd2FsbGV0OiB3YWxsZXRPYmosXG4gICAgICAgIH0gYXMgYW55KVxuICAgICAgICAuc2hvdWxkLnJlamVjdGVkV2l0aCgnQ2xvc2UgQVRBIHJlY2lwaWVudHMgbXVzdCBoYXZlIHplcm8gYW1vdW50Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSByZWNvdmVyLW5lc3RlZCB0eCB3aGVuIHdhbGxldEFkZHJlc3MgbWF0Y2hlcyByb290JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYWNjb3VudEtleXMgPSBuZXcgS2V5UGFpcihyZXNvdXJjZXMuYXV0aEFjY291bnQpLmdldEtleXMoKTtcbiAgICAgIGNvbnN0IG5vbmNlQWNjb3VudEtleXMgPSBuZXcgS2V5UGFpcihyZXNvdXJjZXMubm9uY2VBY2NvdW50KS5nZXRLZXlzKCk7XG4gICAgICBjb25zdCBhY2NvdW50MktleXMgPSBuZXcgS2V5UGFpcihyZXNvdXJjZXMuYXV0aEFjY291bnQyKS5nZXRLZXlzKCk7XG4gICAgICBjb25zdCBtaW50ID0gJ0VQakZXZGQ1QXVmcVNTcWVNMnFOMXh6eWJhcEM4RzR3RUdHa1p3eVREdDF2JztcblxuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRSZWNvdmVyTmVzdGVkQXRhQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLm5vbmNlKGJsb2NrSGFzaCk7XG4gICAgICB0eEJ1aWxkZXIuc2VuZGVyKGFjY291bnRLZXlzLnB1Yik7XG4gICAgICB0eEJ1aWxkZXIuZmVlUGF5ZXIoYWNjb3VudEtleXMucHViKTtcbiAgICAgIHR4QnVpbGRlci5hc3NvY2lhdGVkVG9rZW5BY2NvdW50UmVudCgnMjAzOTI4MCcpO1xuICAgICAgdHhCdWlsZGVyLm5lc3RlZEFjY291bnRBZGRyZXNzKG5vbmNlQWNjb3VudEtleXMucHViKTtcbiAgICAgIHR4QnVpbGRlci5uZXN0ZWRNaW50QWRkcmVzcyhtaW50KTtcbiAgICAgIHR4QnVpbGRlci5kZXN0aW5hdGlvbkFjY291bnRBZGRyZXNzKGFjY291bnQyS2V5cy5wdWIpO1xuICAgICAgdHhCdWlsZGVyLm93bmVyQWNjb3VudEFkZHJlc3MoYWNjb3VudDJLZXlzLnB1Yik7XG4gICAgICB0eEJ1aWxkZXIub3duZXJNaW50QWRkcmVzcyhtaW50KTtcbiAgICAgIHR4QnVpbGRlci53YWxsZXRBZGRyZXNzKGFjY291bnRLZXlzLnB1Yik7XG5cbiAgICAgIGNvbnN0IGJ1aWx0ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICB0eEJhc2U2NDogYnVpbHQudG9Ccm9hZGNhc3RGb3JtYXQoKSxcbiAgICAgICAgdHhJbmZvOiB7XG4gICAgICAgICAgZmVlUGF5ZXI6IGFjY291bnRLZXlzLnB1YixcbiAgICAgICAgICBub25jZTogYmxvY2tIYXNoLFxuICAgICAgICB9LFxuICAgICAgICBjb2luOiAndHNvbCcsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCB2YWxpZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICB0eFBhcmFtczoge30sXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIHdhbGxldDogd2FsbGV0T2JqLFxuICAgICAgfSBhcyBhbnkpO1xuICAgICAgdmFsaWRUcmFuc2FjdGlvbi5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdmVyaWZ5IHJlY292ZXItbmVzdGVkIHR4IHdoZW4gd2FsbGV0IHJvb3QgZG9lcyBub3QgbWF0Y2ggaW5zdHJ1Y3Rpb24gd2FsbGV0QWRkcmVzcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFjY291bnRLZXlzID0gbmV3IEtleVBhaXIocmVzb3VyY2VzLmF1dGhBY2NvdW50KS5nZXRLZXlzKCk7XG4gICAgICBjb25zdCBub25jZUFjY291bnRLZXlzID0gbmV3IEtleVBhaXIocmVzb3VyY2VzLm5vbmNlQWNjb3VudCkuZ2V0S2V5cygpO1xuICAgICAgY29uc3QgYWNjb3VudDJLZXlzID0gbmV3IEtleVBhaXIocmVzb3VyY2VzLmF1dGhBY2NvdW50MikuZ2V0S2V5cygpO1xuICAgICAgY29uc3QgbWludCA9ICdFUGpGV2RkNUF1ZnFTU3FlTTJxTjF4enliYXBDOEc0d0VHR2tad3lURHQxdic7XG5cbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0UmVjb3Zlck5lc3RlZEF0YUJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5ub25jZShibG9ja0hhc2gpO1xuICAgICAgdHhCdWlsZGVyLnNlbmRlcihhY2NvdW50S2V5cy5wdWIpO1xuICAgICAgdHhCdWlsZGVyLmZlZVBheWVyKGFjY291bnRLZXlzLnB1Yik7XG4gICAgICB0eEJ1aWxkZXIuYXNzb2NpYXRlZFRva2VuQWNjb3VudFJlbnQoJzIwMzkyODAnKTtcbiAgICAgIHR4QnVpbGRlci5uZXN0ZWRBY2NvdW50QWRkcmVzcyhub25jZUFjY291bnRLZXlzLnB1Yik7XG4gICAgICB0eEJ1aWxkZXIubmVzdGVkTWludEFkZHJlc3MobWludCk7XG4gICAgICB0eEJ1aWxkZXIuZGVzdGluYXRpb25BY2NvdW50QWRkcmVzcyhhY2NvdW50MktleXMucHViKTtcbiAgICAgIHR4QnVpbGRlci5vd25lckFjY291bnRBZGRyZXNzKGFjY291bnQyS2V5cy5wdWIpO1xuICAgICAgdHhCdWlsZGVyLm93bmVyTWludEFkZHJlc3MobWludCk7XG4gICAgICB0eEJ1aWxkZXIud2FsbGV0QWRkcmVzcyhhY2NvdW50S2V5cy5wdWIpO1xuXG4gICAgICBjb25zdCBidWlsdCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHtcbiAgICAgICAgdHhCYXNlNjQ6IGJ1aWx0LnRvQnJvYWRjYXN0Rm9ybWF0KCksXG4gICAgICAgIHR4SW5mbzoge1xuICAgICAgICAgIGZlZVBheWVyOiBhY2NvdW50S2V5cy5wdWIsXG4gICAgICAgICAgbm9uY2U6IGJsb2NrSGFzaCxcbiAgICAgICAgfSxcbiAgICAgICAgY29pbjogJ3Rzb2wnLFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgd2FsbGV0RGF0YVdyb25nUm9vdCA9IHtcbiAgICAgICAgaWQ6ICc1YjM0MjUyZjFiZjM0OTkzMGUzNDAyMGEwMDAwMDAwMCcsXG4gICAgICAgIGNvaW46ICd0c29sJyxcbiAgICAgICAga2V5czogW1xuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzUwMDAwMDAwMCcsXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NjAwMDAwMDAwJyxcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc3MDAwMDAwMDAnLFxuICAgICAgICBdLFxuICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICByb290QWRkcmVzczogc3Rha2VBY2NvdW50LnB1YixcbiAgICAgICAgfSxcbiAgICAgICAgbXVsdGlzaWdUeXBlOiAndHNzJyxcbiAgICAgIH07XG4gICAgICBjb25zdCB3cm9uZ1Jvb3RXYWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCBiYXNlY29pbiwgd2FsbGV0RGF0YVdyb25nUm9vdCk7XG5cbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgdHhQYXJhbXM6IHt9LFxuICAgICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgICAgd2FsbGV0OiB3cm9uZ1Jvb3RXYWxsZXQsXG4gICAgICAgIH0gYXMgYW55KVxuICAgICAgICAuc2hvdWxkLnJlamVjdGVkV2l0aCgvUmVjb3ZlciBuZXN0ZWQgd2FsbGV0IGFkZHJlc3MgbXVzdCBiZSB3YWxsZXQgcm9vdCBhZGRyZXNzLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdmVyaWZ5IHRyYW5zYWN0aW9ucyB3aGVuIGhhdmUgZGlmZmVyZW50IG1lbW8nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zKCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZCgpO1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQsIG1lbW86IGVycm9yTWVtbywgd2FsbGV0OiB3YWxsZXRPYmogfSBhcyBhbnkpXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdUeCBtZW1vIGRvZXMgbm90IG1hdGNoIHdpdGggZXhwZWN0ZWQgdHhQYXJhbXMgcmVjaXBpZW50IG1lbW8nKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcGFzcyBpZiB3ZSBwYXNzIFBEQSBhZGRyZXNzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgd2FsbGV0RGF0YSA9IHtcbiAgICAgICAgaWQ6ICc2N2Y4ZGRmZjRjOWI4YjU3YTJlMTZhY2ZmYWM5YTNiNScsXG4gICAgICAgIGNvaW46ICd0c29sJyxcbiAgICAgICAga2V5czogW1xuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzUwMDAwMDAwMCcsXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NjAwMDAwMDAwJyxcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc3MDAwMDAwMDAnLFxuICAgICAgICBdLFxuICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICByb290QWRkcmVzczogJzh6YnNKQTVjOEhQUjdCUGpaa3JTVnJ1czJ1TXVYcUNmemtzR3dCM1VzY2piJyxcbiAgICAgICAgfSxcbiAgICAgICAgbXVsdGlzaWdUeXBlOiAndHNzJyxcbiAgICAgIH07XG4gICAgICBjb25zdCB3YWxsZXRPYmogPSBuZXcgV2FsbGV0KGJpdGdvLCBiYXNlY29pbiwgd2FsbGV0RGF0YSk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEyJyxcbiAgICAgICAgICAgIGFtb3VudDogJzEwMDAwMDAwMDAnLFxuICAgICAgICAgICAgdG9rZW5OYW1lOiAndHNvbDp1c2RjJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICB0eEJhc2U2NDpcbiAgICAgICAgICAnMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDZlYzFhZGNjODliYjU2NGYxZjgyMjU4MjExNDBhOTcyM2VmYTgwZThkNTA2NzY1NzcwYjdlMjAxZDY2ZDgyMDBkNGY2OTBlOWE4MTYzMjkxYjY5ZjhjMzgyN2FhZDk2Y2ZkMjEwNWVlZTNhYWU3NmNiY2EzOGZjYWQyYmY3ZjBhMDIwMTA3MGM3NmMzNTZjYjA2OWI2NmMyYjM1YTg2MzhiNGQ0YWZjYTc1YjMwM2YyOWYwZGVlYjRiZmY4NTI4Mjk5YTljOWQyMWM5NjE3MjA0NGYxMjE3YzM3ODRlOGYwMmY0OWUyYzhmYzM1OTFlODEyOTRhYjU0Mzk0ZjlkMjJmZDdiN2E4ZjYwMTI5ZTZlY2IyMDMwOWMyN2RjYmE1ZmM2YzQ0MTQzOGQzM2ExNTY4MDA0YTE4NjBlMjJjMTZmMDcxOTc2YTdkMmUyMDA4YmQzNGI1M2EwOGFhOWM4ZWMwNGViMjE5Njc0NWZjNjAyOTIyNDQ0NzQxN2UyZmIwZmNlZDYwMTI0MGNhYmJhNGNlNTM0YzAyZmMxNTRiYTU1OWVkMmEwMmFjOTcxZTMzODVhY2I0MjZmZjYzYmIxMDQwZTJjMjQzNTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxOGM5NzI1OGY0ZTI0ODlmMWJiM2QxMDI5MTQ4ZTBkODMwYjVhMTM5OWRhZmYxMDg0MDQ4ZTdiZDhkYmU5Zjg1OWQxMDM4OWZiY2VlNTI4ZjIwODYxMWRjY2M3MzRiMzEwOTI1NDBjYjJiOGQ1OGQxMDBmMmVhYTJjZWRiNGRhNWUwNmE3ZDUxNzE5MmM1NjhlZTA4YTg0NWY3M2QyOTc4OGNmMDM1YzMxNDViMjFhYjM0NGQ4MDYyZWE5NDAwMDAwMDZhN2Q1MTcxOTJjNWM1MTIxOGNjOTRjM2Q0YWYxN2Y1OGRhZWUwODliYTFmZDQ0ZTNkYmQ5OGEwMDAwMDAwMDA2ZGRmNmUxZDc2NWExOTNkOWNiZTE0NmNlZWI3OWFjMWNiNDg1ZWQ1ZjViMzc5MTNhOGNmNTg1N2VmZjAwYTllNjgwNjM0NTMzODgyZjg4MGEzZTdkZmE5OTlkZmI4NjRiODg5NjhkMjQyYTBjOWE5MGI1ZGYxNDllNDJkYTA1MDMwNTAzMDIwOTAxMDQwNDAwMDAwMDA3MDcwMDAzMDYwODA1MGIwYTAwMGIwNDA0MDgwMzAwMGEwYzAwY2E5YTNiMDAwMDAwMDAwOScsXG4gICAgICAgIHR4SW5mbzoge1xuICAgICAgICAgIGZlZVBheWVyOiAnOHpic0pBNWM4SFBSN0JQalprclNWcnVzMnVNdVhxQ2Z6a3NHd0IzVXNjamInLFxuICAgICAgICAgIG5vbmNlOiAnR0h0WFFCc29aSFZuTkZhOVlldkF6RnIxN0RKamdIWGszeWNUS0Q1eEQzWmknLFxuICAgICAgICB9LFxuICAgICAgICB0eGlkOiAnNTg2YzViNTliMTBiMTM0ZDA0YzE2YWMxYjI3M2ZlM2M1NTI5ZjM0YWVmNzVkYjQ0NTZjZDQ2OWM1Y2RhYzdlMicsXG4gICAgICAgIGlzVm90aW5nVHJhbnNhY3Rpb246IGZhbHNlLFxuICAgICAgICBjb2luOiAndHNvbCcsXG4gICAgICB9O1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTInLFxuICAgICAgICAgICAgYW1vdW50OiAnMTAwMDAwMDAwMCcsXG4gICAgICAgICAgICB0b2tlbk5hbWU6ICd0c29sOnVzZGMnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgICAgY29uc3QgbWVtbyA9IHtcbiAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgIH07XG4gICAgICBjb25zdCB2ZXJpZnlUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIG1lbW86IG1lbW8sXG4gICAgICAgIHdhbGxldDogd2FsbGV0T2JqLFxuICAgICAgfSBhcyBhbnkpO1xuICAgICAgdmVyaWZ5VHJhbnNhY3Rpb24uc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHZlcmlmeSB0cmFuc2FjdGlvbnMgd2hlbiBoYXZlIGRpZmZlcmVudCBkdXJhYmxlTm9uY2UnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zKCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZCgpO1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQsIG1lbW8sIGR1cmFibGVOb25jZTogZXJyb3JEdXJhYmxlTm9uY2UsIHdhbGxldDogd2FsbGV0T2JqIH0gYXMgYW55KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnVHggZHVyYWJsZU5vbmNlIGRvZXMgbm90IG1hdGNoIHdpdGggcGFyYW0gZHVyYWJsZU5vbmNlJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdmVyaWZ5IHRyYW5zYWN0aW9ucyB3aGVuIGhhdmUgZGlmZmVyZW50IGZlZVBheWVyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSBuZXdUeFBhcmFtcygpO1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IG5ld1R4UHJlYnVpbGQoKTtcbiAgICAgIGNvbnN0IHdhbGxldERhdGEgPSB7XG4gICAgICAgIGlkOiAnNWIzNDI1MmYxYmYzNDk5MzBlMzQwMjBhMDAwMDAwMDAnLFxuICAgICAgICBjb2luOiAndHNvbCcsXG4gICAgICAgIGtleXM6IFtcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc1MDAwMDAwMDAnLFxuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzYwMDAwMDAwMCcsXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NzAwMDAwMDAwJyxcbiAgICAgICAgXSxcbiAgICAgICAgY29pblNwZWNpZmljOiB7XG4gICAgICAgICAgcm9vdEFkZHJlc3M6IHN0YWtlQWNjb3VudC5wdWIsXG4gICAgICAgIH0sXG4gICAgICAgIG11bHRpc2lnVHlwZTogJ3RzcycsXG4gICAgICB9O1xuICAgICAgY29uc3Qgd2FsbGV0V2l0aERpZmZlcmVudEFkZHJlc3MgPSBuZXcgV2FsbGV0KGJpdGdvLCBiYXNlY29pbiwgd2FsbGV0RGF0YSk7XG5cbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UGFyYW1zLCB0eFByZWJ1aWxkLCBtZW1vLCB3YWxsZXQ6IHdhbGxldFdpdGhEaWZmZXJlbnRBZGRyZXNzIH0gYXMgYW55KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnVHggZmVlIHBheWVyIGlzIG5vdCB0aGUgd2FsbGV0IHJvb3QgYWRkcmVzcycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHZlcmlmeSB0cmFuc2FjdGlvbnMgd2hlbiBoYXZlIGRpZmZlcmVudCByZWNpcGllbnRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSBuZXdUeFBhcmFtc1dpdGhFcnJvcigpO1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IG5ld1R4UHJlYnVpbGQoKTtcbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UGFyYW1zLCB0eFByZWJ1aWxkLCBtZW1vLCBlcnJvckZlZVBheWVyLCB3YWxsZXQ6IHdhbGxldE9iaiB9IGFzIGFueSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ1R4IG91dHB1dHMgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcyByZWNpcGllbnRzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHN1Y2NlZWQgdG8gdmVyaWZ5IHRva2VuIHRyYW5zYWN0aW9uIHdpdGggbmF0aXZlIGFkZHJlc3MgcmVjaXBpZW50JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSBuZXdUeFBhcmFtc1Rva2VuVHJhbnNmZXIoKTtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSAnQUY1SDZ2QmtGbkp1VnFDaFJQZ1BRNEpSY1E1R2syNUhCRmhRUWt5b2ptdmcnOyAvLyBOYXRpdmUgU09MIGFkZHJlc3NcbiAgICAgIHR4UGFyYW1zLnJlY2lwaWVudHMgPSBbeyBhZGRyZXNzLCBhbW91bnQ6ICcxJywgdG9rZW5OYW1lOiAndHNvbDp1c2RjJyB9XTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkVG9rZW5UcmFuc2ZlcigpO1xuICAgICAgY29uc3QgZmVlUGF5ZXJXYWxsZXREYXRhID0ge1xuICAgICAgICBpZDogJzViMzQyNTJmMWJmMzQ5OTMwZTM0MDIwYTAwMDAwMDAwJyxcbiAgICAgICAgY29pbjogJ3Rzb2wnLFxuICAgICAgICBrZXlzOiBbXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NTAwMDAwMDAwJyxcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc2MDAwMDAwMDAnLFxuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzcwMDAwMDAwMCcsXG4gICAgICAgIF0sXG4gICAgICAgIGNvaW5TcGVjaWZpYzoge1xuICAgICAgICAgIHJvb3RBZGRyZXNzOiAnNER1anltVUZiUThHQkt0QXdBWnJRNlFxcHZ0QkVpdkw0OGg0dGEyb0pHZDInLFxuICAgICAgICB9LFxuICAgICAgICBtdWx0aXNpZ1R5cGU6ICd0c3MnLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGZlZVBheWVyV2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbywgYmFzZWNvaW4sIGZlZVBheWVyV2FsbGV0RGF0YSk7XG4gICAgICBjb25zdCB2YWxpZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgd2FsbGV0OiBmZWVQYXllcldhbGxldCxcbiAgICAgIH0gYXMgYW55KTtcbiAgICAgIHZhbGlkVHJhbnNhY3Rpb24uc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzdWNjZWVkIHRvIHZlcmlmeSB0b2tlbiB0cmFuc2FjdGlvbiB3aXRoIGxlYWRpbmcgemVybyByZWNpcGllbnQgYW1vdW50JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSBuZXdUeFBhcmFtc1Rva2VuVHJhbnNmZXIoKTtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSAnQUY1SDZ2QmtGbkp1VnFDaFJQZ1BRNEpSY1E1R2syNUhCRmhRUWt5b2ptdmcnOyAvLyBOYXRpdmUgU09MIGFkZHJlc3NcbiAgICAgIHR4UGFyYW1zLnJlY2lwaWVudHMgPSBbeyBhZGRyZXNzLCBhbW91bnQ6ICcwMDAxJywgdG9rZW5OYW1lOiAndHNvbDp1c2RjJyB9XTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkVG9rZW5UcmFuc2ZlcigpO1xuICAgICAgY29uc3QgZmVlUGF5ZXJXYWxsZXREYXRhID0ge1xuICAgICAgICBpZDogJzViMzQyNTJmMWJmMzQ5OTMwZTM0MDIwYTAwMDAwMDAwJyxcbiAgICAgICAgY29pbjogJ3Rzb2wnLFxuICAgICAgICBrZXlzOiBbXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NTAwMDAwMDAwJyxcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc2MDAwMDAwMDAnLFxuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzcwMDAwMDAwMCcsXG4gICAgICAgIF0sXG4gICAgICAgIGNvaW5TcGVjaWZpYzoge1xuICAgICAgICAgIHJvb3RBZGRyZXNzOiAnNER1anltVUZiUThHQkt0QXdBWnJRNlFxcHZ0QkVpdkw0OGg0dGEyb0pHZDInLFxuICAgICAgICB9LFxuICAgICAgICBtdWx0aXNpZ1R5cGU6ICd0c3MnLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGZlZVBheWVyV2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbywgYmFzZWNvaW4sIGZlZVBheWVyV2FsbGV0RGF0YSk7XG4gICAgICBjb25zdCB2YWxpZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgd2FsbGV0OiBmZWVQYXllcldhbGxldCxcbiAgICAgIH0gYXMgYW55KTtcbiAgICAgIHZhbGlkVHJhbnNhY3Rpb24uc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIHZlcmlmeSB0b2tlbiB0cmFuc2FjdGlvbiB3aXRoIGRpZmZlcmVudCByZWNpcGllbnQgdG9rZW5OYW1lJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSBuZXdUeFBhcmFtc1Rva2VuVHJhbnNmZXIoKTtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSAnQUY1SDZ2QmtGbkp1VnFDaFJQZ1BRNEpSY1E1R2syNUhCRmhRUWt5b2ptdmcnOyAvLyBOYXRpdmUgU09MIGFkZHJlc3NcbiAgICAgIHR4UGFyYW1zLnJlY2lwaWVudHMgPSBbeyBhZGRyZXNzLCBhbW91bnQ6ICcxJywgdG9rZW5OYW1lOiAndHNvbDp1c2R0JyB9XTsgLy8gRGlmZmVyZW50IHRva2VuTmFtZSwgc2hvdWxkIGZhaWwgdG8gdmVyaWZ5IHR4XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZFRva2VuVHJhbnNmZXIoKTtcbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgICB3YWxsZXQ6IHdhbGxldE9iaixcbiAgICAgICAgfSBhcyBhbnkpXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdUeCBvdXRwdXRzIGRvZXMgbm90IG1hdGNoIHdpdGggZXhwZWN0ZWQgdHhQYXJhbXMgcmVjaXBpZW50cycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIHZlcmlmeSB0b2tlbiB0cmFuc2FjdGlvbiB3aXRoIGRpZmZlcmVudCByZWNpcGllbnQgYW1vdW50cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0gbmV3VHhQYXJhbXNUb2tlblRyYW5zZmVyKCk7XG4gICAgICBjb25zdCBhZGRyZXNzID0gJ0FGNUg2dkJrRm5KdVZxQ2hSUGdQUTRKUmNRNUdrMjVIQkZoUVFreW9qbXZnJzsgLy8gTmF0aXZlIFNPTCBhZGRyZXNzXG4gICAgICB0eFBhcmFtcy5yZWNpcGllbnRzID0gW3sgYWRkcmVzcywgYW1vdW50OiAnMicsIHRva2VuTmFtZTogJ3Rzb2w6dXNkdCcgfV07XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZFRva2VuVHJhbnNmZXIoKTtcbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgICB3YWxsZXQ6IHdhbGxldE9iaixcbiAgICAgICAgfSBhcyBhbnkpXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdUeCBvdXRwdXRzIGRvZXMgbm90IG1hdGNoIHdpdGggZXhwZWN0ZWQgdHhQYXJhbXMgcmVjaXBpZW50cycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIHZlcmlmeSB0b2tlbiB0cmFuc2FjdGlvbiB3aXRoIGRpZmZlcmVudCBuYXRpdmUgYWRkcmVzcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0gbmV3VHhQYXJhbXNUb2tlblRyYW5zZmVyKCk7XG4gICAgICBjb25zdCBhZGRyZXNzID0gJ0FGNUg2dkJrRm5KdVZxQ2hSUGdQUTRKUmNRNUdrMjVIQkZoUVFreW9qbXZYJzsgLy8gTmF0aXZlIFNPTCBhZGRyZXNzLCBkaWZmZXJlbnQgdGhhbiB0eCByZWNpcGllbnRzXG4gICAgICB0eFBhcmFtcy5yZWNpcGllbnRzID0gW3sgYWRkcmVzcywgYW1vdW50OiAnMScsIHRva2VuTmFtZTogJ3Rzb2w6dXNkYycgfV07XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZFRva2VuVHJhbnNmZXIoKTtcbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgICB3YWxsZXQ6IHdhbGxldE9iaixcbiAgICAgICAgfSBhcyBhbnkpXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdUeCBvdXRwdXRzIGRvZXMgbm90IG1hdGNoIHdpdGggZXhwZWN0ZWQgdHhQYXJhbXMgcmVjaXBpZW50cycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzdWNjZWVkIHRvIHZlcmlmeSB0b2tlbiB0cmFuc2FjdGlvbiBmb3IgdW5zdXBwb3J0ZWQgdG9rZW4gd2hlbiB0b2tlbkFkZHJlc3MgYW5kIHByb2dyYW1JZCBhcmUgcHJvdmlkZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBVc2UgYW4gYWRkcmVzcyB0aGF0IGlzIE5PVCBpbiB0aGUgc3RhdGljIHRva2VuIG1hcCBhcyB0aGUgdW5zdXBwb3J0ZWQgbWludFxuICAgICAgY29uc3QgdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyA9IHJlc291cmNlcy5zdGFrZUFjY291bnQucHViOyAvLyAnM2M1ZW1VV2pWaUZxVDcyTHhRWWVjOGdrVThadG1mS0tYSHZHZ0pOVUJkWXgnXG4gICAgICBjb25zdCByZWNpcGllbnROYXRpdmVBZGRyZXNzID0gcmVzb3VyY2VzLmF1dGhBY2NvdW50Mi5wdWI7XG4gICAgICBjb25zdCBhbW91bnQgPSAnMTAwMCc7XG5cbiAgICAgIC8vIFByZS1kZXJpdmUgdGhlIEFUQSBzbyB0aGUgYnVpbGRlcidzIGluc3RydWN0aW9uIGRlc3RpbmF0aW9uIG1hdGNoZXMgd2hhdCB2ZXJpZnlUcmFuc2FjdGlvbiB3aWxsIGNvbXB1dGVcbiAgICAgIGNvbnN0IGF0YUFkZHJlc3MgPSBhd2FpdCBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyhcbiAgICAgICAgdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyxcbiAgICAgICAgcmVjaXBpZW50TmF0aXZlQWRkcmVzcyxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgVE9LRU5fUFJPR1JBTV9JRC50b1N0cmluZygpXG4gICAgICApO1xuXG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFRva2VuVHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuc2VuZGVyKHdhbGxldC5wdWIpO1xuICAgICAgdHhCdWlsZGVyLm5vbmNlKGJsb2NrSGFzaCk7XG4gICAgICB0eEJ1aWxkZXIuZmVlKHsgYW1vdW50OiA1MDAwIH0pO1xuICAgICAgdHhCdWlsZGVyLnNlbmQoe1xuICAgICAgICBhZGRyZXNzOiBhdGFBZGRyZXNzLCAvLyBwYXNzIHRoZSBBVEEgYXMgdGhlIGRpcmVjdCBkZXN0aW5hdGlvblxuICAgICAgICBhbW91bnQsXG4gICAgICAgIHRva2VuTmFtZTogdW5zdXBwb3J0ZWRNaW50QWRkcmVzcywgLy8gdG9rZW5OYW1lIGVxdWFscyBtaW50IGFkZHJlc3MgKG1hdGNoZXMgZXhwbGFpblRyYW5zYWN0aW9uIGZhbGxiYWNrKVxuICAgICAgICB0b2tlbkFkZHJlc3M6IHVuc3VwcG9ydGVkTWludEFkZHJlc3MsXG4gICAgICAgIHByb2dyYW1JZDogVE9LRU5fUFJPR1JBTV9JRC50b1N0cmluZygpLFxuICAgICAgICBkZWNpbWFsUGxhY2VzOiA2LFxuICAgICAgfSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuXG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICB0eEJhc2U2NDogdHgudG9Ccm9hZGNhc3RGb3JtYXQoKSxcbiAgICAgICAgdHhJbmZvOiB7IGZlZVBheWVyOiB3YWxsZXQucHViLCBub25jZTogYmxvY2tIYXNoIH0sXG4gICAgICAgIGNvaW46ICd0c29sJyxcbiAgICAgIH07XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6IHJlY2lwaWVudE5hdGl2ZUFkZHJlc3MsIC8vIG5hdGl2ZSBhZGRyZXNzIOKAlCB2ZXJpZnlUcmFuc2FjdGlvbiB3aWxsIGRlcml2ZSB0aGUgQVRBXG4gICAgICAgICAgICBhbW91bnQsXG4gICAgICAgICAgICB0b2tlbk5hbWU6IHVuc3VwcG9ydGVkTWludEFkZHJlc3MsIC8vIG11c3QgbWF0Y2ggb3V0cHV0J3MgdG9rZW5OYW1lIChtaW50IGFkZHJlc3MgYXMgZmFsbGJhY2spXG4gICAgICAgICAgICB0b2tlbkFkZHJlc3M6IHVuc3VwcG9ydGVkTWludEFkZHJlc3MsXG4gICAgICAgICAgICBwcm9ncmFtSWQ6IFRPS0VOX1BST0dSQU1fSUQudG9TdHJpbmcoKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oeyB0eFBhcmFtcywgdHhQcmVidWlsZCwgd2FsbGV0OiB3YWxsZXRPYmogfSBhcyBhbnkpO1xuICAgICAgcmVzdWx0LnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byB2ZXJpZnkgdG9rZW4gdHJhbnNhY3Rpb24gZm9yIHVuc3VwcG9ydGVkIHRva2VuIHdoZW4gdG9rZW5BZGRyZXNzIGFuZCBwcm9ncmFtSWQgYXJlIG5vdCBwcm92aWRlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHVuc3VwcG9ydGVkTWludEFkZHJlc3MgPSByZXNvdXJjZXMuc3Rha2VBY2NvdW50LnB1YjtcbiAgICAgIGNvbnN0IHJlY2lwaWVudE5hdGl2ZUFkZHJlc3MgPSByZXNvdXJjZXMuYXV0aEFjY291bnQyLnB1YjtcbiAgICAgIGNvbnN0IGFtb3VudCA9ICcxMDAwJztcblxuICAgICAgY29uc3QgYXRhQWRkcmVzcyA9IGF3YWl0IGdldEFzc29jaWF0ZWRUb2tlbkFjY291bnRBZGRyZXNzKFxuICAgICAgICB1bnN1cHBvcnRlZE1pbnRBZGRyZXNzLFxuICAgICAgICByZWNpcGllbnROYXRpdmVBZGRyZXNzLFxuICAgICAgICB0cnVlLFxuICAgICAgICBUT0tFTl9QUk9HUkFNX0lELnRvU3RyaW5nKClcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0VG9rZW5UcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5zZW5kZXIod2FsbGV0LnB1Yik7XG4gICAgICB0eEJ1aWxkZXIubm9uY2UoYmxvY2tIYXNoKTtcbiAgICAgIHR4QnVpbGRlci5mZWUoeyBhbW91bnQ6IDUwMDAgfSk7XG4gICAgICB0eEJ1aWxkZXIuc2VuZCh7XG4gICAgICAgIGFkZHJlc3M6IGF0YUFkZHJlc3MsXG4gICAgICAgIGFtb3VudCxcbiAgICAgICAgdG9rZW5OYW1lOiB1bnN1cHBvcnRlZE1pbnRBZGRyZXNzLFxuICAgICAgICB0b2tlbkFkZHJlc3M6IHVuc3VwcG9ydGVkTWludEFkZHJlc3MsXG4gICAgICAgIHByb2dyYW1JZDogVE9LRU5fUFJPR1JBTV9JRC50b1N0cmluZygpLFxuICAgICAgICBkZWNpbWFsUGxhY2VzOiA2LFxuICAgICAgfSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuXG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICB0eEJhc2U2NDogdHgudG9Ccm9hZGNhc3RGb3JtYXQoKSxcbiAgICAgICAgdHhJbmZvOiB7IGZlZVBheWVyOiB3YWxsZXQucHViLCBub25jZTogYmxvY2tIYXNoIH0sXG4gICAgICAgIGNvaW46ICd0c29sJyxcbiAgICAgIH07XG4gICAgICAvLyBObyB0b2tlbkFkZHJlc3Mgb3IgcHJvZ3JhbUlkIOKAlCBzdGF0aWMgbWFwIGxvb2t1cCB3aWxsIGZhaWwgZm9yIHVuc3VwcG9ydGVkIHRva2VuXG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6IHJlY2lwaWVudE5hdGl2ZUFkZHJlc3MsXG4gICAgICAgICAgICBhbW91bnQsXG4gICAgICAgICAgICB0b2tlbk5hbWU6IHVuc3VwcG9ydGVkTWludEFkZHJlc3MsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG5cbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UGFyYW1zLCB0eFByZWJ1aWxkLCB3YWxsZXQ6IHdhbGxldE9iaiB9IGFzIGFueSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ1R4IG91dHB1dHMgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcyByZWNpcGllbnRzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHN1Y2NlZWQgdG8gdmVyaWZ5IHRva2VuIHRyYW5zYWN0aW9uIGZvciB1bnN1cHBvcnRlZCBUb2tlbi0yMDIyIHRva2VuIHdoZW4gdG9rZW5BZGRyZXNzIGFuZCBwcm9ncmFtSWQgYXJlIHByb3ZpZGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyA9IHJlc291cmNlcy5zdGFrZUFjY291bnQucHViO1xuICAgICAgY29uc3QgcmVjaXBpZW50TmF0aXZlQWRkcmVzcyA9IHJlc291cmNlcy5hdXRoQWNjb3VudDIucHViO1xuICAgICAgY29uc3QgYW1vdW50ID0gJzEwMDAnO1xuXG4gICAgICBjb25zdCBhdGFBZGRyZXNzID0gYXdhaXQgZ2V0QXNzb2NpYXRlZFRva2VuQWNjb3VudEFkZHJlc3MoXG4gICAgICAgIHVuc3VwcG9ydGVkTWludEFkZHJlc3MsXG4gICAgICAgIHJlY2lwaWVudE5hdGl2ZUFkZHJlc3MsXG4gICAgICAgIHRydWUsXG4gICAgICAgIFRPS0VOXzIwMjJfUFJPR1JBTV9JRC50b1N0cmluZygpXG4gICAgICApO1xuXG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFRva2VuVHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuc2VuZGVyKHdhbGxldC5wdWIpO1xuICAgICAgdHhCdWlsZGVyLm5vbmNlKGJsb2NrSGFzaCk7XG4gICAgICB0eEJ1aWxkZXIuZmVlKHsgYW1vdW50OiA1MDAwIH0pO1xuICAgICAgdHhCdWlsZGVyLnNlbmQoe1xuICAgICAgICBhZGRyZXNzOiBhdGFBZGRyZXNzLFxuICAgICAgICBhbW91bnQsXG4gICAgICAgIHRva2VuTmFtZTogdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyxcbiAgICAgICAgdG9rZW5BZGRyZXNzOiB1bnN1cHBvcnRlZE1pbnRBZGRyZXNzLFxuICAgICAgICBwcm9ncmFtSWQ6IFRPS0VOXzIwMjJfUFJPR1JBTV9JRC50b1N0cmluZygpLFxuICAgICAgICBkZWNpbWFsUGxhY2VzOiA2LFxuICAgICAgfSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuXG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICB0eEJhc2U2NDogdHgudG9Ccm9hZGNhc3RGb3JtYXQoKSxcbiAgICAgICAgdHhJbmZvOiB7IGZlZVBheWVyOiB3YWxsZXQucHViLCBub25jZTogYmxvY2tIYXNoIH0sXG4gICAgICAgIGNvaW46ICd0c29sJyxcbiAgICAgIH07XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6IHJlY2lwaWVudE5hdGl2ZUFkZHJlc3MsXG4gICAgICAgICAgICBhbW91bnQsXG4gICAgICAgICAgICB0b2tlbk5hbWU6IHVuc3VwcG9ydGVkTWludEFkZHJlc3MsXG4gICAgICAgICAgICB0b2tlbkFkZHJlc3M6IHVuc3VwcG9ydGVkTWludEFkZHJlc3MsXG4gICAgICAgICAgICBwcm9ncmFtSWQ6IFRPS0VOXzIwMjJfUFJPR1JBTV9JRC50b1N0cmluZygpLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UGFyYW1zLCB0eFByZWJ1aWxkLCB3YWxsZXQ6IHdhbGxldE9iaiB9IGFzIGFueSk7XG4gICAgICByZXN1bHQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIHZlcmlmeSB0b2tlbiB0cmFuc2FjdGlvbiBmb3IgdW5zdXBwb3J0ZWQgVG9rZW4tMjAyMiB0b2tlbiB3aGVuIHdyb25nIHByb2dyYW1JZCBpcyBwcm92aWRlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHVuc3VwcG9ydGVkTWludEFkZHJlc3MgPSByZXNvdXJjZXMuc3Rha2VBY2NvdW50LnB1YjtcbiAgICAgIGNvbnN0IHJlY2lwaWVudE5hdGl2ZUFkZHJlc3MgPSByZXNvdXJjZXMuYXV0aEFjY291bnQyLnB1YjtcbiAgICAgIGNvbnN0IGFtb3VudCA9ICcxMDAwJztcblxuICAgICAgLy8gQnVpbGQgd2l0aCBUb2tlbi0yMDIyIHByb2dyYW0gSUQgKEFUQSBkZXJpdmVkIHVzaW5nIFRPS0VOXzIwMjJfUFJPR1JBTV9JRClcbiAgICAgIGNvbnN0IGF0YUFkZHJlc3MgPSBhd2FpdCBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyhcbiAgICAgICAgdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyxcbiAgICAgICAgcmVjaXBpZW50TmF0aXZlQWRkcmVzcyxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgVE9LRU5fMjAyMl9QUk9HUkFNX0lELnRvU3RyaW5nKClcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0VG9rZW5UcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5zZW5kZXIod2FsbGV0LnB1Yik7XG4gICAgICB0eEJ1aWxkZXIubm9uY2UoYmxvY2tIYXNoKTtcbiAgICAgIHR4QnVpbGRlci5mZWUoeyBhbW91bnQ6IDUwMDAgfSk7XG4gICAgICB0eEJ1aWxkZXIuc2VuZCh7XG4gICAgICAgIGFkZHJlc3M6IGF0YUFkZHJlc3MsXG4gICAgICAgIGFtb3VudCxcbiAgICAgICAgdG9rZW5OYW1lOiB1bnN1cHBvcnRlZE1pbnRBZGRyZXNzLFxuICAgICAgICB0b2tlbkFkZHJlc3M6IHVuc3VwcG9ydGVkTWludEFkZHJlc3MsXG4gICAgICAgIHByb2dyYW1JZDogVE9LRU5fMjAyMl9QUk9HUkFNX0lELnRvU3RyaW5nKCksXG4gICAgICAgIGRlY2ltYWxQbGFjZXM6IDYsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHR4QmFzZTY0OiB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpLFxuICAgICAgICB0eEluZm86IHsgZmVlUGF5ZXI6IHdhbGxldC5wdWIsIG5vbmNlOiBibG9ja0hhc2ggfSxcbiAgICAgICAgY29pbjogJ3Rzb2wnLFxuICAgICAgfTtcbiAgICAgIC8vIFZlcmlmeSB3aXRoIHRoZSB3cm9uZyBwcm9ncmFtSWQgKFRPS0VOX1BST0dSQU1fSUQgaW5zdGVhZCBvZiBUT0tFTl8yMDIyX1BST0dSQU1fSUQpXG4gICAgICAvLyBBVEEgZGVyaXZhdGlvbiB3aWxsIHByb2R1Y2UgYSBkaWZmZXJlbnQgYWRkcmVzcyDihpIgbWlzbWF0Y2gg4oaSIHJlamVjdGlvblxuICAgICAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiByZWNpcGllbnROYXRpdmVBZGRyZXNzLFxuICAgICAgICAgICAgYW1vdW50LFxuICAgICAgICAgICAgdG9rZW5OYW1lOiB1bnN1cHBvcnRlZE1pbnRBZGRyZXNzLFxuICAgICAgICAgICAgdG9rZW5BZGRyZXNzOiB1bnN1cHBvcnRlZE1pbnRBZGRyZXNzLFxuICAgICAgICAgICAgcHJvZ3JhbUlkOiBUT0tFTl9QUk9HUkFNX0lELnRvU3RyaW5nKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG5cbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UGFyYW1zLCB0eFByZWJ1aWxkLCB3YWxsZXQ6IHdhbGxldE9iaiB9IGFzIGFueSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ1R4IG91dHB1dHMgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcyByZWNpcGllbnRzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHN1Y2NlZWQgdG8gdmVyaWZ5IHRyYW5zYWN0aW9ucyB3aGVuIHJlY2lwaWVudHMgaGFzIGV4dHJhIGRhdGEnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zV2l0aEV4dHJhRGF0YSgpO1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IG5ld1R4UHJlYnVpbGQoKTtcbiAgICAgIGNvbnN0IHZhbGlkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UGFyYW1zLFxuICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICBtZW1vLFxuICAgICAgICBkdXJhYmxlTm9uY2UsXG4gICAgICAgIHdhbGxldDogd2FsbGV0T2JqLFxuICAgICAgfSBhcyBhbnkpO1xuICAgICAgdmFsaWRUcmFuc2FjdGlvbi5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSBhY3RpdmF0ZSBzdGFraW5nIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBmYWN0b3J5XG4gICAgICAgIC5nZXRTdGFraW5nQWN0aXZhdGVCdWlsZGVyKClcbiAgICAgICAgLnN0YWtpbmdBZGRyZXNzKHN0YWtlQWNjb3VudC5wdWIpXG4gICAgICAgIC5zZW5kZXIod2FsbGV0LnB1YilcbiAgICAgICAgLm5vbmNlKGJsb2NrSGFzaClcbiAgICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAgIC52YWxpZGF0b3IodmFsaWRhdG9yLnB1YilcbiAgICAgICAgLm1lbW8oJ3Rlc3QgbWVtbycpXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDUwMDAgfSlcbiAgICAgICAgLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eFRvQnJvYWRjYXN0Rm9ybWF0ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0gbmV3VHhQYXJhbXMoKTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkKCk7XG4gICAgICB0eFByZWJ1aWxkLnR4QmFzZTY0ID0gdHhUb0Jyb2FkY2FzdEZvcm1hdDtcbiAgICAgIHR4UHJlYnVpbGQudHhJbmZvLm5vbmNlID0gJzVuZTdwaEE0OEpydnBuMzlBdHVwQjhaa0NDQXk4Z0xUZnBHaWhaUHVEcWVuJztcbiAgICAgIHR4UGFyYW1zLnJlY2lwaWVudHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBhZGRyZXNzOiAnN2RSdUdGYlUyeTJraWpQNm8xTFlOelZ5ejR5ZjEzTW9vcW9pb25DenY1WmEnLFxuICAgICAgICAgIGFtb3VudDogYW1vdW50LFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICAgIGNvbnN0IHZhbGlkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UGFyYW1zLFxuICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICBtZW1vLFxuICAgICAgICB3YWxsZXQ6IHdhbGxldE9iaixcbiAgICAgIH0gYXMgYW55KTtcbiAgICAgIHZhbGlkVHJhbnNhY3Rpb24uc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgd2l0aGRyYXcgc3Rha2luZyB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgZmFjdG9yeVxuICAgICAgICAuZ2V0U3Rha2luZ1dpdGhkcmF3QnVpbGRlcigpXG4gICAgICAgIC5zdGFraW5nQWRkcmVzcyhzdGFrZUFjY291bnQucHViKVxuICAgICAgICAuc2VuZGVyKHdhbGxldC5wdWIpXG4gICAgICAgIC5ub25jZShibG9ja0hhc2gpXG4gICAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgICAubWVtbygndGVzdCBtZW1vJylcbiAgICAgICAgLmZlZSh7IGFtb3VudDogNTAwMCB9KVxuICAgICAgICAuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4VG9Ccm9hZGNhc3RGb3JtYXQgPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSBuZXdUeFBhcmFtcygpO1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IG5ld1R4UHJlYnVpbGQoKTtcbiAgICAgIHR4UHJlYnVpbGQudHhCYXNlNjQgPSB0eFRvQnJvYWRjYXN0Rm9ybWF0O1xuICAgICAgdHhQcmVidWlsZC50eEluZm8ubm9uY2UgPSAnNW5lN3BoQTQ4SnJ2cG4zOUF0dXBCOFprQ0NBeThnTFRmcEdpaFpQdURxZW4nO1xuICAgICAgdHhQYXJhbXMucmVjaXBpZW50cyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6ICc1aHI1ZmlzUGk2RFhOdXVScG01WFVienBpRW5tZHl4WHVCRFR3endaajVQZScsXG4gICAgICAgICAgYW1vdW50OiBhbW91bnQsXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgICAgY29uc3QgdmFsaWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIG1lbW8sXG4gICAgICAgIHdhbGxldDogd2FsbGV0T2JqLFxuICAgICAgfSBhcyBhbnkpO1xuICAgICAgdmFsaWRUcmFuc2FjdGlvbi5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSBkZWFjdGl2YXRlIHN0YWtpbmcgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGZhY3RvcnlcbiAgICAgICAgLmdldFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcigpXG4gICAgICAgIC5zdGFraW5nQWRkcmVzcyhzdGFrZUFjY291bnQucHViKVxuICAgICAgICAuc2VuZGVyKHdhbGxldC5wdWIpXG4gICAgICAgIC5ub25jZShibG9ja0hhc2gpXG4gICAgICAgIC5tZW1vKCd0ZXN0IG1lbW8nKVxuICAgICAgICAuZmVlKHsgYW1vdW50OiA1MDAwIH0pXG4gICAgICAgIC5idWlsZCgpO1xuICAgICAgY29uc3QgdHhUb0Jyb2FkY2FzdEZvcm1hdCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zKCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZCgpO1xuICAgICAgdHhQcmVidWlsZC50eEJhc2U2NCA9IHR4VG9Ccm9hZGNhc3RGb3JtYXQ7XG4gICAgICB0eFByZWJ1aWxkLnR4SW5mby5ub25jZSA9ICc1bmU3cGhBNDhKcnZwbjM5QXR1cEI4WmtDQ0F5OGdMVGZwR2loWlB1RHFlbic7XG4gICAgICB0eFBhcmFtcy5yZWNpcGllbnRzID0gW107XG4gICAgICBjb25zdCB2YWxpZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgbWVtbyxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXRPYmosXG4gICAgICB9IGFzIGFueSk7XG4gICAgICB2YWxpZFRyYW5zYWN0aW9uLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IGNyZWF0ZSBhc3NvY2lhdGVkIHRva2VuIGFjY291bnQgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGZhY3RvcnlcbiAgICAgICAgLmdldEF0YUluaXRpYWxpemF0aW9uQnVpbGRlcigpXG4gICAgICAgIC5taW50KCd0c29sOnVzZGMnKVxuICAgICAgICAuc2VuZGVyKHdhbGxldC5wdWIpXG4gICAgICAgIC5ub25jZShibG9ja0hhc2gpXG4gICAgICAgIC5tZW1vKCd0ZXN0IG1lbW8nKVxuICAgICAgICAuZmVlKHsgYW1vdW50OiA1MDAwIH0pXG4gICAgICAgIC5idWlsZCgpO1xuICAgICAgY29uc3QgdHhUb0Jyb2FkY2FzdEZvcm1hdCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zKCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZCgpO1xuICAgICAgdHhQcmVidWlsZC50eEJhc2U2NCA9IHR4VG9Ccm9hZGNhc3RGb3JtYXQ7XG4gICAgICB0eFByZWJ1aWxkLnR4SW5mby5ub25jZSA9IGJsb2NrSGFzaDtcbiAgICAgIHR4UGFyYW1zLnJlY2lwaWVudHMgPSBbXTtcbiAgICAgIGNvbnN0IHZhbGlkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UGFyYW1zLFxuICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICBtZW1vLFxuICAgICAgICB3YWxsZXQ6IHdhbGxldE9iaixcbiAgICAgIH0gYXMgYW55KTtcbiAgICAgIHZhbGlkVHJhbnNhY3Rpb24uc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZ2V0QW1vdW50QmFzZWRPbkVuZGlhbm5lc3MnLCAoKSA9PiB7XG4gICAgbGV0IG9yaWdpbmFsQXJjaDogc3RyaW5nO1xuXG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICBvcmlnaW5hbEFyY2ggPSBwcm9jZXNzLmFyY2g7XG4gICAgfSk7XG5cbiAgICBhZnRlckVhY2goKCkgPT4ge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb2Nlc3MsICdhcmNoJywge1xuICAgICAgICB2YWx1ZTogb3JpZ2luYWxBcmNoLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBhbW91bnQgdW5jaGFuZ2VkIG9uIG5vbi1zMzkweCBhcmNoaXRlY3R1cmVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb2Nlc3MsICdhcmNoJywge1xuICAgICAgICB2YWx1ZTogJ3g2NCcsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB9KTtcblxuICAgICAgZ2V0QW1vdW50QmFzZWRPbkVuZGlhbm5lc3MoJzMwMDAwMCcpLnNob3VsZC5lcXVhbCgnMzAwMDAwJyk7XG4gICAgICBnZXRBbW91bnRCYXNlZE9uRW5kaWFubmVzcygnMTAwMDAnKS5zaG91bGQuZXF1YWwoJzEwMDAwJyk7XG4gICAgICBnZXRBbW91bnRCYXNlZE9uRW5kaWFubmVzcygnNTA0NDAzMTU4MjY1NDk1NTUyJykuc2hvdWxkLmVxdWFsKCc1MDQ0MDMxNTgyNjU0OTU1NTInKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnl0ZS1zd2FwIHNtYWxsIGFtb3VudHMgb24gczM5MHggKHNtYWxsIGJlY29tZXMgaHVnZSknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvY2VzcywgJ2FyY2gnLCB7XG4gICAgICAgIHZhbHVlOiAnczM5MHgnLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFNtYWxsIGFtb3VudCAxMCwwMDAgKDB4MjcxMCkgc3dhcHMgdG8gMSwxNjMsODk5LDAyOCw2OTgsNTYyLDU2MFxuICAgICAgZ2V0QW1vdW50QmFzZWRPbkVuZGlhbm5lc3MoJzEwMDAwJykuc2hvdWxkLmVxdWFsKCcxMTYzODk5MDI4Njk4NTYyNTYwJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ5dGUtc3dhcCBsYXJnZSBhbW91bnRzIG9uIHMzOTB4IChsYXJnZSBiZWNvbWVzIHRpbnkpJywgZnVuY3Rpb24gKCkge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb2Nlc3MsICdhcmNoJywge1xuICAgICAgICB2YWx1ZTogJ3MzOTB4JyxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBMYXJnZSBhbW91bnQgNTA0LDQwMywxNTgsMjY1LDQ5NSw1NTIgKDB4MDcwMDAwMDAwMDAwMDAwMCkgc3dhcHMgdG8gN1xuICAgICAgZ2V0QW1vdW50QmFzZWRPbkVuZGlhbm5lc3MoJzUwNDQwMzE1ODI2NTQ5NTU1MicpLnNob3VsZC5lcXVhbCgnNycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgbnVtZXJpYyBpbnB1dCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnYXJjaCcsIHtcbiAgICAgICAgdmFsdWU6ICdzMzkweCcsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB9KTtcblxuICAgICAgLy8gU2hvdWxkIHdvcmsgd2l0aCBudW1iZXJzLCBub3QganVzdCBzdHJpbmdzXG4gICAgICBnZXRBbW91bnRCYXNlZE9uRW5kaWFubmVzcygxMDAwMCkuc2hvdWxkLmVxdWFsKCcxMTYzODk5MDI4Njk4NTYyNTYwJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBzdGFuZGFyZCB0cmFuc2FjdGlvbiBhbW91bnRzIG9uIHMzOTB4JywgZnVuY3Rpb24gKCkge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb2Nlc3MsICdhcmNoJywge1xuICAgICAgICB2YWx1ZTogJ3MzOTB4JyxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBTdGFuZGFyZCBhbW91bnQgMzAwLDAwMCAoMHg0OTNFMCkgc3dhcHMgdG8gbGFyZ2UgdmFsdWVcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldEFtb3VudEJhc2VkT25FbmRpYW5uZXNzKCczMDAwMDAnKTtcbiAgICAgIC8vIFZlcmlmeSBpdCdzIGRpZmZlcmVudCAoc3dhcHBlZClcbiAgICAgIHJlc3VsdC5zaG91bGQubm90LmVxdWFsKCczMDAwMDAnKTtcbiAgICAgIC8vIFZlcmlmeSBzd2FwcGluZyBiYWNrIGdpdmVzIG9yaWdpbmFsXG4gICAgICBnZXRBbW91bnRCYXNlZE9uRW5kaWFubmVzcyhyZXN1bHQpLnNob3VsZC5lcXVhbCgnMzAwMDAwJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBpbnZhbGlkIGlucHV0IGdyYWNlZnVsbHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvY2VzcywgJ2FyY2gnLCB7XG4gICAgICAgIHZhbHVlOiAnczM5MHgnLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIEludmFsaWQgQmlnSW50IGlucHV0IHNob3VsZCByZXR1cm4gb3JpZ2luYWwgc3RyaW5nXG4gICAgICBnZXRBbW91bnRCYXNlZE9uRW5kaWFubmVzcygnbm90LWEtbnVtYmVyJykuc2hvdWxkLmVxdWFsKCdub3QtYS1udW1iZXInKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhY2NlcHQgdmFsaWQgYWRkcmVzcycsIGZ1bmN0aW9uICgpIHtcbiAgICBnb29kQWRkcmVzc2VzLmZvckVhY2goKGFkZHIpID0+IHtcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRBZGRyZXNzKGFkZHIpLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWplY3QgaW52YWxpZCBhZGRyZXNzJywgZnVuY3Rpb24gKCkge1xuICAgIGJhZEFkZHJlc3Nlcy5mb3JFYWNoKChhZGRyKSA9PiB7XG4gICAgICBiYXNlY29pbi5pc1ZhbGlkQWRkcmVzcyhhZGRyKS5zaG91bGQuZXF1YWwoZmFsc2UpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNoZWNrIHZhbGlkIHB1YiBrZXlzJywgZnVuY3Rpb24gKCkge1xuICAgIGtleVBhaXIuc2hvdWxkLmhhdmUucHJvcGVydHkoJ3B1YicpO1xuICAgIGJhc2Vjb2luLmlzVmFsaWRQdWIoa2V5UGFpci5wdWIpLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjaGVjayBhbiBpbnZhbGlkIHB1YiBrZXlzJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGJhZFB1YktleSA9IGtleVBhaXIucHViLnNsaWNlKDAsIGtleVBhaXIucHViLmxlbmd0aCAtIDEpICsgJy0nO1xuICAgIGJhc2Vjb2luLmlzVmFsaWRQdWIoYmFkUHViS2V5KS5zaG91bGQuZXF1YWwoZmFsc2UpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNoZWNrIHZhbGlkIHBydiBrZXlzJywgZnVuY3Rpb24gKCkge1xuICAgIGtleVBhaXIuc2hvdWxkLmhhdmUucHJvcGVydHkoJ3BydicpO1xuICAgIGJhc2Vjb2luLmlzVmFsaWRQcnYoa2V5UGFpci5wcnYpLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjaGVjayBhbiBpbnZhbGlkIHBydiBrZXlzJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGJhZFBydktleSA9IGtleVBhaXIucHJ2ID8ga2V5UGFpci5wcnYuc2xpY2UoMCwga2V5UGFpci5wcnYubGVuZ3RoIC0gMSkgKyAnLScgOiB1bmRlZmluZWQ7XG4gICAgYmFzZWNvaW4uaXNWYWxpZFBydihiYWRQcnZLZXkgYXMgc3RyaW5nKS5zaG91bGQuZXF1YWwoZmFsc2UpO1xuICB9KTtcblxuICBkZXNjcmliZSgnUGFyc2UgVHJhbnNhY3Rpb25zOicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHBhcnNlIGFuIHVuc2lnbmVkIHRyYW5zZmVyIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcGFyc2VkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi5wYXJzZVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhCYXNlNjQ6IHRlc3REYXRhLnJhd1RyYW5zYWN0aW9ucy50cmFuc2Zlci51bnNpZ25lZCxcbiAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgIGZlZTogJzUwMDAnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHBhcnNlZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnQ1A1RHBhYTQyUnRKbU11S3FDUXNMd21hNVloM2tudXZLc1lERlg4NUY0MVMnLFxuICAgICAgICAgICAgYW1vdW50OiAzMDUwMDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICdDUDVEcGFhNDJSdEptTXVLcUNRc0x3bWE1WWgza251dktzWURGWDg1RjQxUycsXG4gICAgICAgICAgICBhbW91bnQ6ICczMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcGFyc2UgYSBzaWduZWQgdHJhbnNmZXIgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBwYXJzZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnBhcnNlVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eEJhc2U2NDogdGVzdERhdGEucmF3VHJhbnNhY3Rpb25zLnRyYW5zZmVyLnNpZ25lZCxcbiAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgIGZlZTogJzUwMDAnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHBhcnNlZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnQ1A1RHBhYTQyUnRKbU11S3FDUXNMd21hNVloM2tudXZLc1lERlg4NUY0MVMnLFxuICAgICAgICAgICAgYW1vdW50OiAzMDUwMDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICdDUDVEcGFhNDJSdEptTXVLcUNRc0x3bWE1WWgza251dktzWURGWDg1RjQxUycsXG4gICAgICAgICAgICBhbW91bnQ6ICczMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcGFyc2UgYW4gdW5zaWduZWQgd2FsbGV0IGluaXQgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBwYXJzZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnBhcnNlVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eEJhc2U2NDogdGVzdERhdGEucmF3VHJhbnNhY3Rpb25zLndhbGxldEluaXQudW5zaWduZWQsXG4gICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICBmZWU6ICc1MDAwJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBwYXJzZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzhZN1JNNkpmY1g0QVNTTkJrcmtybVNiUnU0MzFZVmk5WTNvTEZuekMyZENoJyxcbiAgICAgICAgICAgIGFtb3VudDogMzEwMDAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnOFk3Uk02SmZjWDRBU1NOQmtya3JtU2JSdTQzMVlWaTlZM29MRm56QzJkQ2gnLFxuICAgICAgICAgICAgYW1vdW50OiAnMzAwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHBhcnNlIGEgc2lnbmVkIHdhbGxldCBpbml0IHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcGFyc2VkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi5wYXJzZVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhCYXNlNjQ6IHRlc3REYXRhLnJhd1RyYW5zYWN0aW9ucy53YWxsZXRJbml0LnNpZ25lZCxcbiAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgIGZlZTogJzUwMDAnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHBhcnNlZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnOFk3Uk02SmZjWDRBU1NOQmtya3JtU2JSdTQzMVlWaTlZM29MRm56QzJkQ2gnLFxuICAgICAgICAgICAgYW1vdW50OiAzMTAwMDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICc4WTdSTTZKZmNYNEFTU05Ca3Jrcm1TYlJ1NDMxWVZpOVkzb0xGbnpDMmRDaCcsXG4gICAgICAgICAgICBhbW91bnQ6ICczMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcGFyc2UgYW4gdW5zaWduZWQgdHJhbnNmZXIgdG9rZW4gdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBwYXJzZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnBhcnNlVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eEJhc2U2NDogdGVzdERhdGEucmF3VHJhbnNhY3Rpb25zLnRyYW5zZmVyVG9rZW4udW5zaWduZWQsXG4gICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICBmZWU6ICc1MDAwJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBwYXJzZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJ0NQNURwYWE0MlJ0Sm1NdUtxQ1FzTHdtYTVZaDNrbnV2S3NZREZYODVGNDFTJyxcbiAgICAgICAgICAgIGFtb3VudDogNTAwMCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJ0NQNURwYWE0MlJ0Sm1NdUtxQ1FzTHdtYTVZaDNrbnV2S3NZREZYODVGNDFTJyxcbiAgICAgICAgICAgIGFtb3VudDogJzMwMDAwMCcsXG4gICAgICAgICAgICB0b2tlbk5hbWU6ICd0c29sOnVzZGMnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcGFyc2UgYSBzaWduZWQgdHJhbnNmZXIgdG9rZW4gdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBwYXJzZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnBhcnNlVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eEJhc2U2NDogdGVzdERhdGEucmF3VHJhbnNhY3Rpb25zLnRyYW5zZmVyVG9rZW4uc2lnbmVkLFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgcGFyc2VkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGlucHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICdDUDVEcGFhNDJSdEptTXVLcUNRc0x3bWE1WWgza251dktzWURGWDg1RjQxUycsXG4gICAgICAgICAgICBhbW91bnQ6IDUwMDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICdDUDVEcGFhNDJSdEptTXVLcUNRc0x3bWE1WWgza251dktzWURGWDg1RjQxUycsXG4gICAgICAgICAgICBhbW91bnQ6ICczMDAwMDAnLFxuICAgICAgICAgICAgdG9rZW5OYW1lOiAndHNvbDp1c2RjJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdFeHBsYWluIFRyYW5zYWN0aW9uczonLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIGFuIHVuc2lnbmVkIHRyYW5zZmVyIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZXhwbGFpbmVkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi5leHBsYWluVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eEJhc2U2NDogdGVzdERhdGEucmF3VHJhbnNhY3Rpb25zLnRyYW5zZmVyLnVuc2lnbmVkLFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIGV4cGxhaW5lZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBkaXNwbGF5T3JkZXI6IFtcbiAgICAgICAgICAnaWQnLFxuICAgICAgICAgICd0eXBlJyxcbiAgICAgICAgICAnYmxvY2toYXNoJyxcbiAgICAgICAgICAnZHVyYWJsZU5vbmNlJyxcbiAgICAgICAgICAnb3V0cHV0QW1vdW50JyxcbiAgICAgICAgICAnY2hhbmdlQW1vdW50JyxcbiAgICAgICAgICAnb3V0cHV0cycsXG4gICAgICAgICAgJ2NoYW5nZU91dHB1dHMnLFxuICAgICAgICAgICd0b2tlbkVuYWJsZW1lbnRzJyxcbiAgICAgICAgICAnZmVlJyxcbiAgICAgICAgICAnbWVtbycsXG4gICAgICAgIF0sXG4gICAgICAgIGlkOiAnVU5BVkFJTEFCTEUnLFxuICAgICAgICB0eXBlOiAnU2VuZCcsXG4gICAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgICAgb3V0cHV0QW1vdW50OiAnMzAwMDAwJyxcbiAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICdDUDVEcGFhNDJSdEptTXVLcUNRc0x3bWE1WWgza251dktzWURGWDg1RjQxUycsXG4gICAgICAgICAgICBhbW91bnQ6ICczMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGlucHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICc1aHI1ZmlzUGk2RFhOdXVScG01WFVienBpRW5tZHl4WHVCRFR3endaajVQZScsXG4gICAgICAgICAgICB2YWx1ZTogJzMwMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZmVlUGF5ZXI6ICc1aHI1ZmlzUGk2RFhOdXVScG01WFVienBpRW5tZHl4WHVCRFR3endaajVQZScsXG4gICAgICAgIGZlZToge1xuICAgICAgICAgIGZlZTogJzUwMDAnLFxuICAgICAgICAgIGZlZVJhdGU6IDUwMDAsXG4gICAgICAgIH0sXG4gICAgICAgIG1lbW86ICd0ZXN0IG1lbW8nLFxuICAgICAgICBibG9ja2hhc2g6ICdHSHRYUUJzb1pIVm5ORmE5WWV2QXpGcjE3REpqZ0hYazN5Y1RLRDV4RDNaaScsXG4gICAgICAgIGR1cmFibGVOb25jZToge1xuICAgICAgICAgIGF1dGhXYWxsZXRBZGRyZXNzOiAnNWhyNWZpc1BpNkRYTnV1UnBtNVhVYnpwaUVubWR5eFh1QkRUd3p3Wmo1UGUnLFxuICAgICAgICAgIHdhbGxldE5vbmNlQWRkcmVzczogJzhZN1JNNkpmY1g0QVNTTkJrcmtybVNiUnU0MzFZVmk5WTNvTEZuekMyZENoJyxcbiAgICAgICAgfSxcbiAgICAgICAgdG9rZW5FbmFibGVtZW50czogW10sXG4gICAgICAgIGF0YU93bmVyTWFwOiB7fSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIGEgc2lnbmVkIHRyYW5zZmVyIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZXhwbGFpbmVkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi5leHBsYWluVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eEJhc2U2NDogdGVzdERhdGEucmF3VHJhbnNhY3Rpb25zLnRyYW5zZmVyLnNpZ25lZCxcbiAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgIGZlZTogJzUwMDAnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICBleHBsYWluZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgZGlzcGxheU9yZGVyOiBbXG4gICAgICAgICAgJ2lkJyxcbiAgICAgICAgICAndHlwZScsXG4gICAgICAgICAgJ2Jsb2NraGFzaCcsXG4gICAgICAgICAgJ2R1cmFibGVOb25jZScsXG4gICAgICAgICAgJ291dHB1dEFtb3VudCcsXG4gICAgICAgICAgJ2NoYW5nZUFtb3VudCcsXG4gICAgICAgICAgJ291dHB1dHMnLFxuICAgICAgICAgICdjaGFuZ2VPdXRwdXRzJyxcbiAgICAgICAgICAndG9rZW5FbmFibGVtZW50cycsXG4gICAgICAgICAgJ2ZlZScsXG4gICAgICAgICAgJ21lbW8nLFxuICAgICAgICBdLFxuICAgICAgICBpZDogJzJYRnhHZlhkZEtXbnFHYU1Bc2ZOTDhIZ1hxRHZqQkwyQWUyOEtXclJ2ZzliUUJtQ3JwSFlWRGFjdVpGZUFVeVl3alhHNmV5MmpUQVJYNVZRQ25qN1NGNEwnLFxuICAgICAgICB0eXBlOiAnU2VuZCcsXG4gICAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgICAgb3V0cHV0QW1vdW50OiAnMzAwMDAwJyxcbiAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICdDUDVEcGFhNDJSdEptTXVLcUNRc0x3bWE1WWgza251dktzWURGWDg1RjQxUycsXG4gICAgICAgICAgICBhbW91bnQ6ICczMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGlucHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICc1aHI1ZmlzUGk2RFhOdXVScG01WFVienBpRW5tZHl4WHVCRFR3endaajVQZScsXG4gICAgICAgICAgICB2YWx1ZTogJzMwMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZmVlUGF5ZXI6ICc1aHI1ZmlzUGk2RFhOdXVScG01WFVienBpRW5tZHl4WHVCRFR3endaajVQZScsXG4gICAgICAgIGZlZToge1xuICAgICAgICAgIGZlZTogJzUwMDAnLFxuICAgICAgICAgIGZlZVJhdGU6IDUwMDAsXG4gICAgICAgIH0sXG4gICAgICAgIG1lbW86ICd0ZXN0IG1lbW8nLFxuICAgICAgICBibG9ja2hhc2g6ICdHSHRYUUJzb1pIVm5ORmE5WWV2QXpGcjE3REpqZ0hYazN5Y1RLRDV4RDNaaScsXG4gICAgICAgIGR1cmFibGVOb25jZToge1xuICAgICAgICAgIGF1dGhXYWxsZXRBZGRyZXNzOiAnNWhyNWZpc1BpNkRYTnV1UnBtNVhVYnpwaUVubWR5eFh1QkRUd3p3Wmo1UGUnLFxuICAgICAgICAgIHdhbGxldE5vbmNlQWRkcmVzczogJzhZN1JNNkpmY1g0QVNTTkJrcmtybVNiUnU0MzFZVmk5WTNvTEZuekMyZENoJyxcbiAgICAgICAgfSxcbiAgICAgICAgdG9rZW5FbmFibGVtZW50czogW10sXG4gICAgICAgIGF0YU93bmVyTWFwOiB7fSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIGFuIHVuc2lnbmVkIHdhbGxldCBpbml0IHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZXhwbGFpbmVkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi5leHBsYWluVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eEJhc2U2NDogdGVzdERhdGEucmF3VHJhbnNhY3Rpb25zLndhbGxldEluaXQudW5zaWduZWQsXG4gICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICBmZWU6ICc1MDAwJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBsYWluZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgZGlzcGxheU9yZGVyOiBbXG4gICAgICAgICAgJ2lkJyxcbiAgICAgICAgICAndHlwZScsXG4gICAgICAgICAgJ2Jsb2NraGFzaCcsXG4gICAgICAgICAgJ2R1cmFibGVOb25jZScsXG4gICAgICAgICAgJ291dHB1dEFtb3VudCcsXG4gICAgICAgICAgJ2NoYW5nZUFtb3VudCcsXG4gICAgICAgICAgJ291dHB1dHMnLFxuICAgICAgICAgICdjaGFuZ2VPdXRwdXRzJyxcbiAgICAgICAgICAndG9rZW5FbmFibGVtZW50cycsXG4gICAgICAgICAgJ2ZlZScsXG4gICAgICAgICAgJ21lbW8nLFxuICAgICAgICBdLFxuICAgICAgICBpZDogJ1VOQVZBSUxBQkxFJyxcbiAgICAgICAgdHlwZTogJ1dhbGxldEluaXRpYWxpemF0aW9uJyxcbiAgICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgICBvdXRwdXRBbW91bnQ6ICczMDAwMDAnLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzhZN1JNNkpmY1g0QVNTTkJrcmtybVNiUnU0MzFZVmk5WTNvTEZuekMyZENoJyxcbiAgICAgICAgICAgIGFtb3VudDogJzMwMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzVocjVmaXNQaTZEWE51dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJyxcbiAgICAgICAgICAgIHZhbHVlOiAnMzAwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBmZWVQYXllcjogJzVocjVmaXNQaTZEWE51dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJyxcbiAgICAgICAgZmVlOiB7XG4gICAgICAgICAgZmVlOiAnMTAwMDAnLFxuICAgICAgICAgIGZlZVJhdGU6IDUwMDAsXG4gICAgICAgIH0sXG4gICAgICAgIGJsb2NraGFzaDogJ0dIdFhRQnNvWkhWbk5GYTlZZXZBekZyMTdESmpnSFhrM3ljVEtENXhEM1ppJyxcbiAgICAgICAgZHVyYWJsZU5vbmNlOiB1bmRlZmluZWQsXG4gICAgICAgIG1lbW86IHVuZGVmaW5lZCxcbiAgICAgICAgdG9rZW5FbmFibGVtZW50czogW10sXG4gICAgICAgIGF0YU93bmVyTWFwOiB7fSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIGEgc2lnbmVkIHdhbGxldCBpbml0IHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZXhwbGFpbmVkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi5leHBsYWluVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eEJhc2U2NDogdGVzdERhdGEucmF3VHJhbnNhY3Rpb25zLndhbGxldEluaXQuc2lnbmVkLFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgZXhwbGFpbmVkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGRpc3BsYXlPcmRlcjogW1xuICAgICAgICAgICdpZCcsXG4gICAgICAgICAgJ3R5cGUnLFxuICAgICAgICAgICdibG9ja2hhc2gnLFxuICAgICAgICAgICdkdXJhYmxlTm9uY2UnLFxuICAgICAgICAgICdvdXRwdXRBbW91bnQnLFxuICAgICAgICAgICdjaGFuZ2VBbW91bnQnLFxuICAgICAgICAgICdvdXRwdXRzJyxcbiAgICAgICAgICAnY2hhbmdlT3V0cHV0cycsXG4gICAgICAgICAgJ3Rva2VuRW5hYmxlbWVudHMnLFxuICAgICAgICAgICdmZWUnLFxuICAgICAgICAgICdtZW1vJyxcbiAgICAgICAgXSxcbiAgICAgICAgaWQ6ICc3VGtVOHdMZ1hEZUxGYlZ5ZHRnNm1xTXNwOUdhdHNldGl0U25neXNnanhGaG9mS1NVY0xQQm9LUEhjaUxlR0VmSkZNc3FlenBabUdSU0ZRVEJ5N1pEc2cnLFxuICAgICAgICB0eXBlOiAnV2FsbGV0SW5pdGlhbGl6YXRpb24nLFxuICAgICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICAgIG91dHB1dEFtb3VudDogJzMwMDAwMCcsXG4gICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnOFk3Uk02SmZjWDRBU1NOQmtya3JtU2JSdTQzMVlWaTlZM29MRm56QzJkQ2gnLFxuICAgICAgICAgICAgYW1vdW50OiAnMzAwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnNWhyNWZpc1BpNkRYTnV1UnBtNVhVYnpwaUVubWR5eFh1QkRUd3p3Wmo1UGUnLFxuICAgICAgICAgICAgdmFsdWU6ICczMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGZlZVBheWVyOiAnNWhyNWZpc1BpNkRYTnV1UnBtNVhVYnpwaUVubWR5eFh1QkRUd3p3Wmo1UGUnLFxuICAgICAgICBmZWU6IHtcbiAgICAgICAgICBmZWU6ICcxMDAwMCcsXG4gICAgICAgICAgZmVlUmF0ZTogNTAwMCxcbiAgICAgICAgfSxcbiAgICAgICAgYmxvY2toYXNoOiAnR0h0WFFCc29aSFZuTkZhOVlldkF6RnIxN0RKamdIWGszeWNUS0Q1eEQzWmknLFxuICAgICAgICBkdXJhYmxlTm9uY2U6IHVuZGVmaW5lZCxcbiAgICAgICAgbWVtbzogdW5kZWZpbmVkLFxuICAgICAgICB0b2tlbkVuYWJsZW1lbnRzOiBbXSxcbiAgICAgICAgYXRhT3duZXJNYXA6IHt9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gYW4gdW5zaWduZWQgdG9rZW4gdHJhbnNmZXIgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0ZXN0RGF0YS5yYXdUcmFuc2FjdGlvbnMudHJhbnNmZXJUb2tlbi51bnNpZ25lZCxcbiAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgIGZlZTogJzUwMDAnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICBleHBsYWluZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgZGlzcGxheU9yZGVyOiBbXG4gICAgICAgICAgJ2lkJyxcbiAgICAgICAgICAndHlwZScsXG4gICAgICAgICAgJ2Jsb2NraGFzaCcsXG4gICAgICAgICAgJ2R1cmFibGVOb25jZScsXG4gICAgICAgICAgJ291dHB1dEFtb3VudCcsXG4gICAgICAgICAgJ2NoYW5nZUFtb3VudCcsXG4gICAgICAgICAgJ291dHB1dHMnLFxuICAgICAgICAgICdjaGFuZ2VPdXRwdXRzJyxcbiAgICAgICAgICAndG9rZW5FbmFibGVtZW50cycsXG4gICAgICAgICAgJ2ZlZScsXG4gICAgICAgICAgJ21lbW8nLFxuICAgICAgICBdLFxuICAgICAgICBpZDogJ1VOQVZBSUxBQkxFJyxcbiAgICAgICAgdHlwZTogJ1NlbmQnLFxuICAgICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICAgIG91dHB1dEFtb3VudDogJzAnLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJ0NQNURwYWE0MlJ0Sm1NdUtxQ1FzTHdtYTVZaDNrbnV2S3NZREZYODVGNDFTJyxcbiAgICAgICAgICAgIGFtb3VudDogJzMwMDAwMCcsXG4gICAgICAgICAgICB0b2tlbk5hbWU6ICd0c29sOnVzZGMnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGlucHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICcxMmY2RDNXdWJHVmVRb0gybThrVHZ2Y3Jhc1dkWFd3dFZ6VUN5Uk5EWnhBMicsXG4gICAgICAgICAgICB2YWx1ZTogJzMwMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZmVlUGF5ZXI6ICcxMmY2RDNXdWJHVmVRb0gybThrVHZ2Y3Jhc1dkWFd3dFZ6VUN5Uk5EWnhBMicsXG4gICAgICAgIGZlZToge1xuICAgICAgICAgIGZlZTogJzUwMDAnLFxuICAgICAgICAgIGZlZVJhdGU6IDUwMDAsXG4gICAgICAgIH0sXG4gICAgICAgIG1lbW86ICd0ZXN0IG1lbW8nLFxuICAgICAgICBibG9ja2hhc2g6ICdHSHRYUUJzb1pIVm5ORmE5WWV2QXpGcjE3REpqZ0hYazN5Y1RLRDV4RDNaaScsXG4gICAgICAgIGR1cmFibGVOb25jZToge1xuICAgICAgICAgIGF1dGhXYWxsZXRBZGRyZXNzOiAnMTJmNkQzV3ViR1ZlUW9IMm04a1R2dmNyYXNXZFhXd3RWelVDeVJORFp4QTInLFxuICAgICAgICAgIHdhbGxldE5vbmNlQWRkcmVzczogJzhZN1JNNkpmY1g0QVNTTkJrcmtybVNiUnU0MzFZVmk5WTNvTEZuekMyZENoJyxcbiAgICAgICAgfSxcbiAgICAgICAgdG9rZW5FbmFibGVtZW50czogW10sXG4gICAgICAgIGF0YU93bmVyTWFwOiB7fSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIGEgc2lnbmVkIHRva2VuIHRyYW5zZmVyIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZXhwbGFpbmVkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi5leHBsYWluVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eEJhc2U2NDogdGVzdERhdGEucmF3VHJhbnNhY3Rpb25zLnRyYW5zZmVyVG9rZW4uc2lnbmVkLFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIGV4cGxhaW5lZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBkaXNwbGF5T3JkZXI6IFtcbiAgICAgICAgICAnaWQnLFxuICAgICAgICAgICd0eXBlJyxcbiAgICAgICAgICAnYmxvY2toYXNoJyxcbiAgICAgICAgICAnZHVyYWJsZU5vbmNlJyxcbiAgICAgICAgICAnb3V0cHV0QW1vdW50JyxcbiAgICAgICAgICAnY2hhbmdlQW1vdW50JyxcbiAgICAgICAgICAnb3V0cHV0cycsXG4gICAgICAgICAgJ2NoYW5nZU91dHB1dHMnLFxuICAgICAgICAgICd0b2tlbkVuYWJsZW1lbnRzJyxcbiAgICAgICAgICAnZmVlJyxcbiAgICAgICAgICAnbWVtbycsXG4gICAgICAgIF0sXG4gICAgICAgIGlkOiAnMnRpY1U0WmtFcWRUSFVMcjZMb2JUZ1dCaGltNkU3d1NzY0RoTTRnenl1R1VtUXlVd0xZaG9xYWlmdXZ3bU56ekVmMVQ1YWVmVmNnTVFrU0hkSjVuc3JmWicsXG4gICAgICAgIHR5cGU6ICdTZW5kJyxcbiAgICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgICBvdXRwdXRBbW91bnQ6ICcwJyxcbiAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICdDUDVEcGFhNDJSdEptTXVLcUNRc0x3bWE1WWgza251dktzWURGWDg1RjQxUycsXG4gICAgICAgICAgICBhbW91bnQ6ICczMDAwMDAnLFxuICAgICAgICAgICAgdG9rZW5OYW1lOiAndHNvbDp1c2RjJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnMTJmNkQzV3ViR1ZlUW9IMm04a1R2dmNyYXNXZFhXd3RWelVDeVJORFp4QTInLFxuICAgICAgICAgICAgdmFsdWU6ICczMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGZlZVBheWVyOiAnMTJmNkQzV3ViR1ZlUW9IMm04a1R2dmNyYXNXZFhXd3RWelVDeVJORFp4QTInLFxuICAgICAgICBmZWU6IHtcbiAgICAgICAgICBmZWU6ICc1MDAwJyxcbiAgICAgICAgICBmZWVSYXRlOiA1MDAwLFxuICAgICAgICB9LFxuICAgICAgICBtZW1vOiAndGVzdCBtZW1vJyxcbiAgICAgICAgYmxvY2toYXNoOiAnR0h0WFFCc29aSFZuTkZhOVlldkF6RnIxN0RKamdIWGszeWNUS0Q1eEQzWmknLFxuICAgICAgICBkdXJhYmxlTm9uY2U6IHtcbiAgICAgICAgICBhdXRoV2FsbGV0QWRkcmVzczogJzEyZjZEM1d1YkdWZVFvSDJtOGtUdnZjcmFzV2RYV3d0VnpVQ3lSTkRaeEEyJyxcbiAgICAgICAgICB3YWxsZXROb25jZUFkZHJlc3M6ICc4WTdSTTZKZmNYNEFTU05Ca3Jrcm1TYlJ1NDMxWVZpOVkzb0xGbnpDMmRDaCcsXG4gICAgICAgIH0sXG4gICAgICAgIHRva2VuRW5hYmxlbWVudHM6IFtdLFxuICAgICAgICBhdGFPd25lck1hcDoge30sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZXhwbGFpbiBhY3RpdmF0ZSBzdGFraW5nIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBmYWN0b3J5XG4gICAgICAgIC5nZXRTdGFraW5nQWN0aXZhdGVCdWlsZGVyKClcbiAgICAgICAgLnN0YWtpbmdBZGRyZXNzKHN0YWtlQWNjb3VudC5wdWIpXG4gICAgICAgIC5zZW5kZXIod2FsbGV0LnB1YilcbiAgICAgICAgLm5vbmNlKGJsb2NrSGFzaClcbiAgICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAgIC52YWxpZGF0b3IodmFsaWRhdG9yLnB1YilcbiAgICAgICAgLm1lbW8oJ3Rlc3QgbWVtbycpXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDUwMDAgfSlcbiAgICAgICAgLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eFRvQnJvYWRjYXN0Rm9ybWF0ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIGNvbnN0IGV4cGxhaW5lZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhCYXNlNjQ6IHR4VG9Ccm9hZGNhc3RGb3JtYXQsXG4gICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICBmZWU6ICc1MDAwJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgZXhwbGFpbmVkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGRpc3BsYXlPcmRlcjogW1xuICAgICAgICAgICdpZCcsXG4gICAgICAgICAgJ3R5cGUnLFxuICAgICAgICAgICdibG9ja2hhc2gnLFxuICAgICAgICAgICdkdXJhYmxlTm9uY2UnLFxuICAgICAgICAgICdvdXRwdXRBbW91bnQnLFxuICAgICAgICAgICdjaGFuZ2VBbW91bnQnLFxuICAgICAgICAgICdvdXRwdXRzJyxcbiAgICAgICAgICAnY2hhbmdlT3V0cHV0cycsXG4gICAgICAgICAgJ3Rva2VuRW5hYmxlbWVudHMnLFxuICAgICAgICAgICdmZWUnLFxuICAgICAgICAgICdtZW1vJyxcbiAgICAgICAgXSxcbiAgICAgICAgaWQ6ICdVTkFWQUlMQUJMRScsXG4gICAgICAgIHR5cGU6ICdTdGFraW5nQWN0aXZhdGUnLFxuICAgICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICAgIG91dHB1dEFtb3VudDogJzEwMDAwJyxcbiAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICc3ZFJ1R0ZiVTJ5MmtpalA2bzFMWU56Vnl6NHlmMTNNb29xb2lvbkN6djVaYScsXG4gICAgICAgICAgICBhbW91bnQ6ICcxMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzVocjVmaXNQaTZEWE51dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJyxcbiAgICAgICAgICAgIHZhbHVlOiAnMTAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGZlZVBheWVyOiAnNWhyNWZpc1BpNkRYTnV1UnBtNVhVYnpwaUVubWR5eFh1QkRUd3p3Wmo1UGUnLFxuICAgICAgICBmZWU6IHtcbiAgICAgICAgICBmZWU6ICcxMDAwMCcsXG4gICAgICAgICAgZmVlUmF0ZTogNTAwMCxcbiAgICAgICAgfSxcbiAgICAgICAgbWVtbzogJ3Rlc3QgbWVtbycsXG4gICAgICAgIGJsb2NraGFzaDogJzVuZTdwaEE0OEpydnBuMzlBdHVwQjhaa0NDQXk4Z0xUZnBHaWhaUHVEcWVuJyxcbiAgICAgICAgZHVyYWJsZU5vbmNlOiB1bmRlZmluZWQsXG4gICAgICAgIHRva2VuRW5hYmxlbWVudHM6IFtdLFxuICAgICAgICBhdGFPd25lck1hcDoge30sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZXhwbGFpbiBkZWFjdGl2YXRlIHN0YWtpbmcgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGZhY3RvcnlcbiAgICAgICAgLmdldFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcigpXG4gICAgICAgIC5zdGFraW5nQWRkcmVzcyhzdGFrZUFjY291bnQucHViKVxuICAgICAgICAuc2VuZGVyKHdhbGxldC5wdWIpXG4gICAgICAgIC5ub25jZShibG9ja0hhc2gpXG4gICAgICAgIC5tZW1vKCd0ZXN0IG1lbW8nKVxuICAgICAgICAuZmVlKHsgYW1vdW50OiA1MDAwIH0pXG4gICAgICAgIC5idWlsZCgpO1xuICAgICAgY29uc3QgdHhUb0Jyb2FkY2FzdEZvcm1hdCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0eFRvQnJvYWRjYXN0Rm9ybWF0LFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIGV4cGxhaW5lZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBkaXNwbGF5T3JkZXI6IFtcbiAgICAgICAgICAnaWQnLFxuICAgICAgICAgICd0eXBlJyxcbiAgICAgICAgICAnYmxvY2toYXNoJyxcbiAgICAgICAgICAnZHVyYWJsZU5vbmNlJyxcbiAgICAgICAgICAnb3V0cHV0QW1vdW50JyxcbiAgICAgICAgICAnY2hhbmdlQW1vdW50JyxcbiAgICAgICAgICAnb3V0cHV0cycsXG4gICAgICAgICAgJ2NoYW5nZU91dHB1dHMnLFxuICAgICAgICAgICd0b2tlbkVuYWJsZW1lbnRzJyxcbiAgICAgICAgICAnZmVlJyxcbiAgICAgICAgICAnbWVtbycsXG4gICAgICAgIF0sXG4gICAgICAgIGlkOiAnVU5BVkFJTEFCTEUnLFxuICAgICAgICB0eXBlOiAnU3Rha2luZ0RlYWN0aXZhdGUnLFxuICAgICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICAgIG91dHB1dEFtb3VudDogJzAnLFxuICAgICAgICBvdXRwdXRzOiBbXSxcbiAgICAgICAgaW5wdXRzOiBbXSxcbiAgICAgICAgZmVlUGF5ZXI6ICc1aHI1ZmlzUGk2RFhOdXVScG01WFVienBpRW5tZHl4WHVCRFR3endaajVQZScsXG4gICAgICAgIGZlZToge1xuICAgICAgICAgIGZlZTogJzUwMDAnLFxuICAgICAgICAgIGZlZVJhdGU6IDUwMDAsXG4gICAgICAgIH0sXG4gICAgICAgIG1lbW86ICd0ZXN0IG1lbW8nLFxuICAgICAgICBibG9ja2hhc2g6ICc1bmU3cGhBNDhKcnZwbjM5QXR1cEI4WmtDQ0F5OGdMVGZwR2loWlB1RHFlbicsXG4gICAgICAgIGR1cmFibGVOb25jZTogdW5kZWZpbmVkLFxuICAgICAgICB0b2tlbkVuYWJsZW1lbnRzOiBbXSxcbiAgICAgICAgYXRhT3duZXJNYXA6IHt9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gd2l0aGRyYXcgc3Rha2luZyB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgZmFjdG9yeVxuICAgICAgICAuZ2V0U3Rha2luZ1dpdGhkcmF3QnVpbGRlcigpXG4gICAgICAgIC5zdGFraW5nQWRkcmVzcyhzdGFrZUFjY291bnQucHViKVxuICAgICAgICAuc2VuZGVyKHdhbGxldC5wdWIpXG4gICAgICAgIC5ub25jZShibG9ja0hhc2gpXG4gICAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgICAubWVtbygndGVzdCBtZW1vJylcbiAgICAgICAgLmZlZSh7IGFtb3VudDogNTAwMCB9KVxuICAgICAgICAuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4VG9Ccm9hZGNhc3RGb3JtYXQgPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgY29uc3QgZXhwbGFpbmVkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi5leHBsYWluVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eEJhc2U2NDogdHhUb0Jyb2FkY2FzdEZvcm1hdCxcbiAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgIGZlZTogJzUwMDAnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICBleHBsYWluZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgZGlzcGxheU9yZGVyOiBbXG4gICAgICAgICAgJ2lkJyxcbiAgICAgICAgICAndHlwZScsXG4gICAgICAgICAgJ2Jsb2NraGFzaCcsXG4gICAgICAgICAgJ2R1cmFibGVOb25jZScsXG4gICAgICAgICAgJ291dHB1dEFtb3VudCcsXG4gICAgICAgICAgJ2NoYW5nZUFtb3VudCcsXG4gICAgICAgICAgJ291dHB1dHMnLFxuICAgICAgICAgICdjaGFuZ2VPdXRwdXRzJyxcbiAgICAgICAgICAndG9rZW5FbmFibGVtZW50cycsXG4gICAgICAgICAgJ2ZlZScsXG4gICAgICAgICAgJ21lbW8nLFxuICAgICAgICBdLFxuICAgICAgICBpZDogJ1VOQVZBSUxBQkxFJyxcbiAgICAgICAgdHlwZTogJ1N0YWtpbmdXaXRoZHJhdycsXG4gICAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgICAgb3V0cHV0QW1vdW50OiAnMTAwMDAnLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzVocjVmaXNQaTZEWE51dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJyxcbiAgICAgICAgICAgIGFtb3VudDogJzEwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnN2RSdUdGYlUyeTJraWpQNm8xTFlOelZ5ejR5ZjEzTW9vcW9pb25DenY1WmEnLFxuICAgICAgICAgICAgdmFsdWU6ICcxMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZmVlUGF5ZXI6ICc1aHI1ZmlzUGk2RFhOdXVScG01WFVienBpRW5tZHl4WHVCRFR3endaajVQZScsXG4gICAgICAgIGZlZToge1xuICAgICAgICAgIGZlZTogJzUwMDAnLFxuICAgICAgICAgIGZlZVJhdGU6IDUwMDAsXG4gICAgICAgIH0sXG4gICAgICAgIG1lbW86ICd0ZXN0IG1lbW8nLFxuICAgICAgICBibG9ja2hhc2g6ICc1bmU3cGhBNDhKcnZwbjM5QXR1cEI4WmtDQ0F5OGdMVGZwR2loWlB1RHFlbicsXG4gICAgICAgIGR1cmFibGVOb25jZTogdW5kZWZpbmVkLFxuICAgICAgICB0b2tlbkVuYWJsZW1lbnRzOiBbXSxcbiAgICAgICAgYXRhT3duZXJNYXA6IHt9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gY3JlYXRlIEFUQSB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHRva2VuTmFtZSA9ICd0c29sOnVzZGMnO1xuICAgICAgY29uc3QgcmVudEV4ZW1wdEFtb3VudCA9ICczMDAwMDAwJztcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgZmFjdG9yeVxuICAgICAgICAuZ2V0QXRhSW5pdGlhbGl6YXRpb25CdWlsZGVyKClcbiAgICAgICAgLnNlbmRlcih3YWxsZXQucHViKVxuICAgICAgICAubm9uY2UoYmxvY2tIYXNoKVxuICAgICAgICAubWludCh0b2tlbk5hbWUpXG4gICAgICAgIC5yZW50RXhlbXB0QW1vdW50KHJlbnRFeGVtcHRBbW91bnQpXG4gICAgICAgIC5tZW1vKCd0ZXN0IG1lbW8nKVxuICAgICAgICAuZmVlKHsgYW1vdW50OiA1MDAwIH0pXG4gICAgICAgIC5idWlsZCgpO1xuICAgICAgY29uc3QgdHhUb0Jyb2FkY2FzdEZvcm1hdCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0eFRvQnJvYWRjYXN0Rm9ybWF0LFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgIH0sXG4gICAgICAgIHRva2VuQWNjb3VudFJlbnRFeGVtcHRBbW91bnQ6IHJlbnRFeGVtcHRBbW91bnQsXG4gICAgICB9KTtcbiAgICAgIGV4cGxhaW5lZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBkaXNwbGF5T3JkZXI6IFtcbiAgICAgICAgICAnaWQnLFxuICAgICAgICAgICd0eXBlJyxcbiAgICAgICAgICAnYmxvY2toYXNoJyxcbiAgICAgICAgICAnZHVyYWJsZU5vbmNlJyxcbiAgICAgICAgICAnb3V0cHV0QW1vdW50JyxcbiAgICAgICAgICAnY2hhbmdlQW1vdW50JyxcbiAgICAgICAgICAnb3V0cHV0cycsXG4gICAgICAgICAgJ2NoYW5nZU91dHB1dHMnLFxuICAgICAgICAgICd0b2tlbkVuYWJsZW1lbnRzJyxcbiAgICAgICAgICAnZmVlJyxcbiAgICAgICAgICAnbWVtbycsXG4gICAgICAgIF0sXG4gICAgICAgIGlkOiAnVU5BVkFJTEFCTEUnLFxuICAgICAgICB0eXBlOiAnQXNzb2NpYXRlZFRva2VuQWNjb3VudEluaXRpYWxpemF0aW9uJyxcbiAgICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgICBvdXRwdXRBbW91bnQ6ICcwJyxcbiAgICAgICAgb3V0cHV0czogW10sXG4gICAgICAgIGlucHV0czogW10sXG4gICAgICAgIGZlZVBheWVyOiAnNWhyNWZpc1BpNkRYTnV1UnBtNVhVYnpwaUVubWR5eFh1QkRUd3p3Wmo1UGUnLFxuICAgICAgICBmZWU6IHtcbiAgICAgICAgICBmZWU6ICczMDA1MDAwJyxcbiAgICAgICAgICBmZWVSYXRlOiA1MDAwLFxuICAgICAgICB9LFxuICAgICAgICBtZW1vOiAndGVzdCBtZW1vJyxcbiAgICAgICAgYmxvY2toYXNoOiAnNW5lN3BoQTQ4SnJ2cG4zOUF0dXBCOFprQ0NBeThnTFRmcEdpaFpQdURxZW4nLFxuICAgICAgICBkdXJhYmxlTm9uY2U6IHVuZGVmaW5lZCxcbiAgICAgICAgdG9rZW5FbmFibGVtZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICcxNDFCRk5lbTNwa25jOEN6UFZMdjFSaTNidGdLZENzYWZZUDVuWHdtWGZ4VScsXG4gICAgICAgICAgICB0b2tlbkFkZHJlc3M6ICdGNHVMZVhKb0Z6M2h3MTNNcG9zdXdhUWJNY1piQ2pxdkVHUFBlUlJCMUJ5ZicsXG4gICAgICAgICAgICB0b2tlbk5hbWU6ICd0c29sOnVzZGMnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGF0YU93bmVyTWFwOiB7XG4gICAgICAgICAgJzE0MUJGTmVtM3BrbmM4Q3pQVkx2MVJpM2J0Z0tkQ3NhZllQNW5Yd21YZnhVJzogJzVocjVmaXNQaTZEWE51dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIGNyZWF0ZSBtdWx0aSBBVEEgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZWNpcGllbnRzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgb3duZXJBZGRyZXNzOiB3YWxsZXQucHViLFxuICAgICAgICAgIHRva2VuTmFtZTogJ3Rzb2w6dXNkYycsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBvd25lckFkZHJlc3M6IGR1cmFibGVOb25jZS53YWxsZXROb25jZUFkZHJlc3MsXG4gICAgICAgICAgdG9rZW5OYW1lOiAndHNvbDpyYXknLFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICAgIGNvbnN0IHJlbnRFeGVtcHRBbW91bnQgPSAnMzAwMDAwMCc7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGZhY3RvcnlcbiAgICAgICAgLmdldEF0YUluaXRpYWxpemF0aW9uQnVpbGRlcigpXG4gICAgICAgIC5zZW5kZXIod2FsbGV0LnB1YilcbiAgICAgICAgLm5vbmNlKGJsb2NrSGFzaClcbiAgICAgICAgLmVuYWJsZVRva2VuKHJlY2lwaWVudHNbMF0pXG4gICAgICAgIC5lbmFibGVUb2tlbihyZWNpcGllbnRzWzFdKVxuICAgICAgICAucmVudEV4ZW1wdEFtb3VudChyZW50RXhlbXB0QW1vdW50KVxuICAgICAgICAubWVtbygndGVzdCBtZW1vJylcbiAgICAgICAgLmZlZSh7IGFtb3VudDogNTAwMCB9KVxuICAgICAgICAuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4VG9Ccm9hZGNhc3RGb3JtYXQgPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgY29uc3QgZXhwbGFpbmVkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi5leHBsYWluVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eEJhc2U2NDogdHhUb0Jyb2FkY2FzdEZvcm1hdCxcbiAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgIGZlZTogJzUwMDAnLFxuICAgICAgICB9LFxuICAgICAgICB0b2tlbkFjY291bnRSZW50RXhlbXB0QW1vdW50OiByZW50RXhlbXB0QW1vdW50LFxuICAgICAgfSk7XG4gICAgICBleHBsYWluZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgZGlzcGxheU9yZGVyOiBbXG4gICAgICAgICAgJ2lkJyxcbiAgICAgICAgICAndHlwZScsXG4gICAgICAgICAgJ2Jsb2NraGFzaCcsXG4gICAgICAgICAgJ2R1cmFibGVOb25jZScsXG4gICAgICAgICAgJ291dHB1dEFtb3VudCcsXG4gICAgICAgICAgJ2NoYW5nZUFtb3VudCcsXG4gICAgICAgICAgJ291dHB1dHMnLFxuICAgICAgICAgICdjaGFuZ2VPdXRwdXRzJyxcbiAgICAgICAgICAndG9rZW5FbmFibGVtZW50cycsXG4gICAgICAgICAgJ2ZlZScsXG4gICAgICAgICAgJ21lbW8nLFxuICAgICAgICBdLFxuICAgICAgICBpZDogJ1VOQVZBSUxBQkxFJyxcbiAgICAgICAgdHlwZTogJ0Fzc29jaWF0ZWRUb2tlbkFjY291bnRJbml0aWFsaXphdGlvbicsXG4gICAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgICAgb3V0cHV0QW1vdW50OiAnMCcsXG4gICAgICAgIG91dHB1dHM6IFtdLFxuICAgICAgICBpbnB1dHM6IFtdLFxuICAgICAgICBmZWVQYXllcjogJzVocjVmaXNQaTZEWE51dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJyxcbiAgICAgICAgZmVlOiB7XG4gICAgICAgICAgZmVlOiAnNjAwNTAwMCcsXG4gICAgICAgICAgZmVlUmF0ZTogNTAwMCxcbiAgICAgICAgfSxcbiAgICAgICAgbWVtbzogJ3Rlc3QgbWVtbycsXG4gICAgICAgIGJsb2NraGFzaDogJzVuZTdwaEE0OEpydnBuMzlBdHVwQjhaa0NDQXk4Z0xUZnBHaWhaUHVEcWVuJyxcbiAgICAgICAgZHVyYWJsZU5vbmNlOiB1bmRlZmluZWQsXG4gICAgICAgIHRva2VuRW5hYmxlbWVudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnMTQxQkZOZW0zcGtuYzhDelBWTHYxUmkzYnRnS2RDc2FmWVA1blh3bVhmeFUnLFxuICAgICAgICAgICAgdG9rZW5BZGRyZXNzOiAnRjR1TGVYSm9GejNodzEzTXBvc3V3YVFiTWNaYkNqcXZFR1BQZVJSQjFCeWYnLFxuICAgICAgICAgICAgdG9rZW5OYW1lOiAndHNvbDp1c2RjJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICc5S2FMaW5aRk5XNWNoTDRKOFVvS25URUNwcFdWTXozZXdneDRGQWt4VURjZicsXG4gICAgICAgICAgICB0b2tlbkFkZHJlc3M6ICc5a0xKb0diTWdTdGVwdGtoS0t1aDdrZW40SkV2SHJUODMxNTdlekVHclo3UicsXG4gICAgICAgICAgICB0b2tlbk5hbWU6ICd0c29sOnJheScsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXRhT3duZXJNYXA6IHtcbiAgICAgICAgICAnMTQxQkZOZW0zcGtuYzhDelBWTHYxUmkzYnRnS2RDc2FmWVA1blh3bVhmeFUnOiAnNWhyNWZpc1BpNkRYTnV1UnBtNVhVYnpwaUVubWR5eFh1QkRUd3p3Wmo1UGUnLFxuICAgICAgICAgICc5S2FMaW5aRk5XNWNoTDRKOFVvS25URUNwcFdWTXozZXdneDRGQWt4VURjZic6ICc4WTdSTTZKZmNYNEFTU05Ca3Jrcm1TYlJ1NDMxWVZpOVkzb0xGbnpDMmRDaCcsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZXhwbGFpbiBhbiB1bnNpZ25lZCB0b2tlbiB0cmFuc2ZlciB3aXRoIEFUQSBjcmVhdGlvbiB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGV4cGxhaW5lZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhCYXNlNjQ6IHRlc3REYXRhLnJhd1RyYW5zYWN0aW9ucy50b2tlblRyYW5zZmVyV2l0aEF0YUNyZWF0aW9uLnVuc2lnbmVkLFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgIH0sXG4gICAgICAgIHRva2VuQWNjb3VudFJlbnRFeGVtcHRBbW91bnQ6ICczMDAwMDAwJyxcbiAgICAgIH0pO1xuICAgICAgZXhwbGFpbmVkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGRpc3BsYXlPcmRlcjogW1xuICAgICAgICAgICdpZCcsXG4gICAgICAgICAgJ3R5cGUnLFxuICAgICAgICAgICdibG9ja2hhc2gnLFxuICAgICAgICAgICdkdXJhYmxlTm9uY2UnLFxuICAgICAgICAgICdvdXRwdXRBbW91bnQnLFxuICAgICAgICAgICdjaGFuZ2VBbW91bnQnLFxuICAgICAgICAgICdvdXRwdXRzJyxcbiAgICAgICAgICAnY2hhbmdlT3V0cHV0cycsXG4gICAgICAgICAgJ3Rva2VuRW5hYmxlbWVudHMnLFxuICAgICAgICAgICdmZWUnLFxuICAgICAgICAgICdtZW1vJyxcbiAgICAgICAgXSxcbiAgICAgICAgaWQ6ICdVTkFWQUlMQUJMRScsXG4gICAgICAgIHR5cGU6ICdTZW5kJyxcbiAgICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgICBvdXRwdXRBbW91bnQ6ICcwJyxcbiAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICcyZUtqVnR6VjNvUFRYRmR0UlNEajNFbTlrMU1WN2s4V2pLa0JzelFVd2l6UycsXG4gICAgICAgICAgICBhbW91bnQ6ICcxMDAwMCcsXG4gICAgICAgICAgICB0b2tlbk5hbWU6ICd0c29sOnVzZGMnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGlucHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICc1VTNiSDViNlh0Rzk5YVZXTHF3VnpZUFZwUWlGSHl0QkQ2OFJ6MmVGUFpkNycsXG4gICAgICAgICAgICB2YWx1ZTogJzEwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBmZWVQYXllcjogJzVVM2JINWI2WHRHOTlhVldMcXdWellQVnBRaUZIeXRCRDY4UnoyZUZQWmQ3JyxcbiAgICAgICAgZmVlOiB7IGZlZTogJzMwMDUwMDAnLCBmZWVSYXRlOiA1MDAwIH0sXG4gICAgICAgIG1lbW86IHVuZGVmaW5lZCxcbiAgICAgICAgYmxvY2toYXNoOiAnMjdFM01YRnZYTVVOWWVNSmVYMXBBYkVSR3NKZlVia2FaVGZnTWdwbU5ONWcnLFxuICAgICAgICBkdXJhYmxlTm9uY2U6IHVuZGVmaW5lZCxcbiAgICAgICAgdG9rZW5FbmFibGVtZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICcyZUtqVnR6VjNvUFRYRmR0UlNEajNFbTlrMU1WN2s4V2pLa0JzelFVd2l6UycsXG4gICAgICAgICAgICB0b2tlbkFkZHJlc3M6ICdGNHVMZVhKb0Z6M2h3MTNNcG9zdXdhUWJNY1piQ2pxdkVHUFBlUlJCMUJ5ZicsXG4gICAgICAgICAgICB0b2tlbk5hbWU6ICd0c29sOnVzZGMnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGF0YU93bmVyTWFwOiB7XG4gICAgICAgICAgJzJlS2pWdHpWM29QVFhGZHRSU0RqM0VtOWsxTVY3azhXaktrQnN6UVV3aXpTJzogJ0M0ekNxQ2FEbTRENzh6Z2FIM0NlQkVFQkVBb01OaHpTQ2oyM3FFOTJuZGlQJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnS2V5cGFpcjonLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBhIGtleXBhaXIgZnJvbSByYW5kb20gc2VlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNob3VsZC50aHJvd3MoKCkgPT4gYmFzZWNvaW4uZ2VuZXJhdGVLZXlQYWlyKCdwbGFjZWhvbGRlcicgYXMgYW55KSwgJ2dlbmVyYXRlS2V5UGFpciBtZXRob2Qgbm90IGltcGxlbWVudGVkJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGdlbmVyYXRlIGEga2V5cGFpciBmcm9tIGEgc2VlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNob3VsZC50aHJvd3MoKCkgPT4gYmFzZWNvaW4uZ2VuZXJhdGVLZXlQYWlyKCdwbGFjZWhvbGRlcicgYXMgYW55KSwgJ2dlbmVyYXRlS2V5UGFpciBtZXRob2Qgbm90IGltcGxlbWVudGVkJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdTaWduIHRyYW5zYWN0aW9uOicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHNpZ24gdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBzaWduZWQ6IGFueSA9IGF3YWl0IGJhc2Vjb2luLnNpZ25UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UHJlYnVpbGQ6IHtcbiAgICAgICAgICB0eEJhc2U2NDogcmVzb3VyY2VzLlJBV19UWF9VTlNJR05FRCxcbiAgICAgICAgICBrZXlzOiBbcmVzb3VyY2VzLmFjY291bnRXaXRoU2VlZC5wdWJsaWNLZXkudG9TdHJpbmcoKV0sXG4gICAgICAgIH0sXG4gICAgICAgIHBydjogcmVzb3VyY2VzLmFjY291bnRXaXRoU2VlZC5wcml2YXRlS2V5LmJhc2U1OCxcbiAgICAgIH0gYXMgYW55KTtcbiAgICAgIHNpZ25lZC50eEhleC5zaG91bGQuZXF1YWwocmVzb3VyY2VzLlJBV19UWF9TSUdORUQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgdHhIZXggYW5kIHR4QmFzZTY0IGludGVyY2hhbmdlYWJseScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHNpZ25lZDogYW55ID0gYXdhaXQgYmFzZWNvaW4uc2lnblRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQcmVidWlsZDoge1xuICAgICAgICAgIHR4SGV4OiByZXNvdXJjZXMuUkFXX1RYX1VOU0lHTkVELFxuICAgICAgICAgIGtleXM6IFtyZXNvdXJjZXMuYWNjb3VudFdpdGhTZWVkLnB1YmxpY0tleS50b1N0cmluZygpXSxcbiAgICAgICAgfSxcbiAgICAgICAgcHJ2OiByZXNvdXJjZXMuYWNjb3VudFdpdGhTZWVkLnByaXZhdGVLZXkuYmFzZTU4LFxuICAgICAgfSBhcyBhbnkpO1xuICAgICAgc2lnbmVkLnR4SGV4LnNob3VsZC5lcXVhbChyZXNvdXJjZXMuUkFXX1RYX1NJR05FRCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGludmFsaWQgdHJhbnNhY3Rpb24gd2hlbiBzaWduIHdpdGggcHVibGljIGtleScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC5zaWduVHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHR4UHJlYnVpbGQ6IHtcbiAgICAgICAgICAgIHR4QmFzZTY0OiByZXNvdXJjZXMuUkFXX1RYX1VOU0lHTkVELFxuICAgICAgICAgICAga2V5czogW3Jlc291cmNlcy5hY2NvdW50V2l0aFNlZWQucHVibGljS2V5LnRvU3RyaW5nKCldLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcHJ2OiByZXNvdXJjZXMuYWNjb3VudFdpdGhTZWVkLnB1YmxpY0tleSxcbiAgICAgICAgfSBhcyBhbnkpXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdJbnZhbGlkIGtleScpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnU2lnbiBtZXNzYWdlJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgc2lnbiBtZXNzYWdlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgc2lnbmVkID0gYXdhaXQgYmFzZWNvaW4uc2lnbk1lc3NhZ2Uoa2V5cGFpciwgJ3NpZ25lZCBtZXNzYWdlJyk7XG4gICAgICBzaWduZWRcbiAgICAgICAgLnRvU3RyaW5nKCdiYXNlNjQnKVxuICAgICAgICAuc2hvdWxkLmVxdWFsKCdzKzdkLzhhVy90d2ZNLzB3TFNLT0d4ZDkrTGhESWl6L2cwRmZKMzl5bEpoUUlrakswUllQbS9ZK2dkZUo1REl5Nks2aDZnQ1hYRVNEb21sdjEyREJCUT09Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHNpZ24gc3RyaW5nIGFzIGl0cyBVVEYtOCBieXRlcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSAnaGVsbG8gZnJvbSBzb2xhbmEnO1xuICAgICAgY29uc3Qgc2lnbmVkID0gYXdhaXQgYmFzZWNvaW4uc2lnbk1lc3NhZ2Uoa2V5cGFpciwgbWVzc2FnZSk7XG4gICAgICBjb25zdCBwdWIgPSBuZXcgUHVibGljS2V5KGtleXBhaXIucHViKS50b0J5dGVzKCk7XG4gICAgICBuYWNsLnNpZ24uZGV0YWNoZWRcbiAgICAgICAgLnZlcmlmeShuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbShtZXNzYWdlLCAndXRmOCcpKSwgbmV3IFVpbnQ4QXJyYXkoc2lnbmVkKSwgcHViKVxuICAgICAgICAuc2hvdWxkLmJlLnRydWUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc2lnbiBidWZmZXIgYnl0ZXMgZXhhY3RseSwgbmV2ZXIgdGhlaXIgYmFzZTU4IHJlbmRlcmluZycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBCdWZmZXIuZnJvbSgnaGVsbG8gZnJvbSBzb2xhbmEnLCAndXRmOCcpO1xuICAgICAgY29uc3Qgc2lnbmVkID0gYXdhaXQgYmFzZWNvaW4uc2lnbk1lc3NhZ2Uoa2V5cGFpciwgbWVzc2FnZSk7XG4gICAgICBjb25zdCBwdWIgPSBuZXcgUHVibGljS2V5KGtleXBhaXIucHViKS50b0J5dGVzKCk7XG4gICAgICBuYWNsLnNpZ24uZGV0YWNoZWQudmVyaWZ5KG5ldyBVaW50OEFycmF5KG1lc3NhZ2UpLCBuZXcgVWludDhBcnJheShzaWduZWQpLCBwdWIpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICBjb25zdCBiYXNlNThTdHJpbmdCeXRlcyA9IEJ1ZmZlci5mcm9tKGJhc2U1OC5lbmNvZGUobWVzc2FnZSksICd1dGY4Jyk7XG4gICAgICBuYWNsLnNpZ24uZGV0YWNoZWQudmVyaWZ5KG5ldyBVaW50OEFycmF5KGJhc2U1OFN0cmluZ0J5dGVzKSwgbmV3IFVpbnQ4QXJyYXkoc2lnbmVkKSwgcHViKS5zaG91bGQuYmUuZmFsc2UoKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkbnQgc2lnbiBtZXNzYWdlIHdoZW4gbWVzc2FnZSBpcyB1bmRlZmluZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAuc2lnbk1lc3NhZ2Uoa2V5cGFpciwgdW5kZWZpbmVkIGFzIGFueSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoXG4gICAgICAgICAgJ1RoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nIG9yIGFuIGluc3RhbmNlIG9mIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIG9yIEFycmF5IG9yIGFuIEFycmF5LWxpa2UgT2JqZWN0LiBSZWNlaXZlZCB1bmRlZmluZWQnXG4gICAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdWYWxpZGF0ZSBzaWduYWJsZSBtZXNzYWdlJywgKCkgPT4ge1xuICAgIGNvbnN0IHZhbGlkTWVzc2FnZSA9IHtcbiAgICAgIG1lc3NhZ2VSYXc6ICdoZWxsbyBmcm9tIHNvbGFuYScsXG4gICAgICBtZXNzYWdlU3RhbmRhcmRUeXBlOiBNZXNzYWdlU3RhbmRhcmRUeXBlLlNJTVBMRSxcbiAgICAgIHNpZ25lckFkZHJlc3M6IGtleXBhaXIucHViLFxuICAgIH07XG5cbiAgICBpdCgnc2hvdWxkIGFjY2VwdCBhIHZhbGlkIFNJTVBMRSBtZXNzYWdlJywgZnVuY3Rpb24gKCkge1xuICAgICAgKCgpID0+IGJhc2Vjb2luLnZhbGlkYXRlU2lnbmFibGVNZXNzYWdlKHZhbGlkTWVzc2FnZSkpLnNob3VsZC5ub3QudGhyb3coKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYWNjZXB0IG1lc3NhZ2VSYXcgb2YgZXhhY3RseSBNQVhfU09MX01FU1NBR0VfQllURVMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAoKCkgPT5cbiAgICAgICAgYmFzZWNvaW4udmFsaWRhdGVTaWduYWJsZU1lc3NhZ2Uoe1xuICAgICAgICAgIC4uLnZhbGlkTWVzc2FnZSxcbiAgICAgICAgICBtZXNzYWdlUmF3OiAnYScucmVwZWF0KE1BWF9TT0xfTUVTU0FHRV9CWVRFUyksXG4gICAgICAgIH0pKS5zaG91bGQubm90LnRocm93KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlamVjdCBlbXB0eSBtZXNzYWdlUmF3JywgZnVuY3Rpb24gKCkge1xuICAgICAgKCgpID0+IGJhc2Vjb2luLnZhbGlkYXRlU2lnbmFibGVNZXNzYWdlKHsgLi4udmFsaWRNZXNzYWdlLCBtZXNzYWdlUmF3OiAnJyB9KSkuc2hvdWxkLnRocm93KFxuICAgICAgICAvbWVzc2FnZVJhdyBpcyByZXF1aXJlZCB0byBzaWduIGEgU09MIG1lc3NhZ2UvXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWplY3QgbWVzc2FnZVJhdyBvdmVyIE1BWF9TT0xfTUVTU0FHRV9CWVRFUycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICgoKSA9PlxuICAgICAgICBiYXNlY29pbi52YWxpZGF0ZVNpZ25hYmxlTWVzc2FnZSh7XG4gICAgICAgICAgLi4udmFsaWRNZXNzYWdlLFxuICAgICAgICAgIG1lc3NhZ2VSYXc6ICdhJy5yZXBlYXQoTUFYX1NPTF9NRVNTQUdFX0JZVEVTICsgMSksXG4gICAgICAgIH0pKS5zaG91bGQudGhyb3coL1NPTCBtZXNzYWdlIGV4Y2VlZHMgbWF4aW11bSBzaXplLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIG1lYXN1cmUgbWVzc2FnZVJhdyBpbiBVVEYtOCBieXRlcywgbm90IGNoYXJhY3RlcnMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0d29CeXRlQ2hhcnMgPSAnw6knO1xuICAgICAgKCgpID0+XG4gICAgICAgIGJhc2Vjb2luLnZhbGlkYXRlU2lnbmFibGVNZXNzYWdlKHtcbiAgICAgICAgICAuLi52YWxpZE1lc3NhZ2UsXG4gICAgICAgICAgbWVzc2FnZVJhdzogdHdvQnl0ZUNoYXJzLnJlcGVhdChNQVhfU09MX01FU1NBR0VfQllURVMpLFxuICAgICAgICB9KSkuc2hvdWxkLnRocm93KC9TT0wgbWVzc2FnZSBleGNlZWRzIG1heGltdW0gc2l6ZS8pO1xuICAgICAgKCgpID0+XG4gICAgICAgIGJhc2Vjb2luLnZhbGlkYXRlU2lnbmFibGVNZXNzYWdlKHtcbiAgICAgICAgICAuLi52YWxpZE1lc3NhZ2UsXG4gICAgICAgICAgbWVzc2FnZVJhdzogdHdvQnl0ZUNoYXJzLnJlcGVhdChNQVhfU09MX01FU1NBR0VfQllURVMgLyAyKSxcbiAgICAgICAgfSkpLnNob3VsZC5ub3QudGhyb3coKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVqZWN0IG5vbi1TSU1QTEUgbWVzc2FnZSBzdGFuZGFyZHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAoKCkgPT5cbiAgICAgICAgYmFzZWNvaW4udmFsaWRhdGVTaWduYWJsZU1lc3NhZ2Uoe1xuICAgICAgICAgIC4uLnZhbGlkTWVzc2FnZSxcbiAgICAgICAgICBtZXNzYWdlU3RhbmRhcmRUeXBlOiBNZXNzYWdlU3RhbmRhcmRUeXBlLkVJUDE5MSxcbiAgICAgICAgfSkpLnNob3VsZC50aHJvdygvU09MIG1lc3NhZ2Ugc2lnbmluZyBzdXBwb3J0cyBvbmx5IHRoZSBTSU1QTEUgc3RhbmRhcmQvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVqZWN0IG1pc3Npbmcgc2lnbmVyQWRkcmVzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICgoKSA9PiBiYXNlY29pbi52YWxpZGF0ZVNpZ25hYmxlTWVzc2FnZSh7IC4uLnZhbGlkTWVzc2FnZSwgc2lnbmVyQWRkcmVzczogdW5kZWZpbmVkIH0pKS5zaG91bGQudGhyb3coXG4gICAgICAgIC9zaWduZXJBZGRyZXNzIGlzIHJlcXVpcmVkIHRvIHNpZ24gYSBTT0wgbWVzc2FnZS9cbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdHZXQgU2lnbmluZyBQYXlsb2FkJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGEgdmFsaWQgc2lnbmluZyBwYXlsb2FkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZmFjdG9yeSA9IGdldEJ1aWxkZXJGYWN0b3J5KGJhc2Vjb2luLmdldENoYWluKCkpO1xuICAgICAgY29uc3QgcmVidWlsdFNpZ25hYmxlUGF5bG9hZCA9IChhd2FpdCBmYWN0b3J5LmZyb20ocmVzb3VyY2VzLlRSQU5TRkVSX1VOU0lHTkVEX1RYX1dJVEhfTUVNTykuYnVpbGQoKSlcbiAgICAgICAgLnNpZ25hYmxlUGF5bG9hZDtcbiAgICAgIGNvbnN0IHNpZ25pbmdQYXlsb2FkID0gYXdhaXQgYmFzZWNvaW4uZ2V0U2lnbmFibGVQYXlsb2FkKHJlc291cmNlcy5UUkFOU0ZFUl9VTlNJR05FRF9UWF9XSVRIX01FTU8pO1xuICAgICAgc2lnbmluZ1BheWxvYWQuc2hvdWxkLmJlLmRlZXBFcXVhbChyZWJ1aWx0U2lnbmFibGVQYXlsb2FkKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgQ2xvc2VBc3NvY2lhdGVkVG9rZW5BY2NvdW50IHR4biBidWlsZGVyIGZyb20gcmF3IHR4bicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGZhY3RvcnkgPSBnZXRCdWlsZGVyRmFjdG9yeShiYXNlY29pbi5nZXRDaGFpbigpKTtcbiAgICAgIGNvbnN0IHR4bkJ1aWxkZXIgPSBmYWN0b3J5LmZyb20ocmVzb3VyY2VzLlRSQU5TRkVSX1VOU0lHTkVEX1RYX0NMT1NFX0FUQSk7XG4gICAgICBhc3NlcnQub2sodHhuQnVpbGRlcik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdQcmVzaWduIHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgIGNvbnN0IHR4UmVxdWVzdElkID0gJ3R4UmVxdWVzdElkJztcbiAgICBsZXQgc2FuZGJveDogc2lub24uU2lub25TYW5kYm94O1xuXG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICBzYW5kYm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICAgIHNhbmRib3gudmVyaWZ5QW5kUmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWJ1aWxkIHR4IHJlcXVlc3QgZm9yIGhvdCB3YWxsZXRzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVidWlsdFR4OiBUeFJlcXVlc3QgPSB7XG4gICAgICAgIHR4UmVxdWVzdElkLFxuICAgICAgICB1bnNpZ25lZFR4czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNlcmlhbGl6ZWRUeEhleDogJ2RlYWRiZWVmJyxcbiAgICAgICAgICAgIHNpZ25hYmxlSGV4OiAnc2VyaWFsaXplZFR4SGV4JyxcbiAgICAgICAgICAgIGRlcml2YXRpb25QYXRoOiAnbS8wJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICB0cmFuc2FjdGlvbnM6IFtdLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGludGVudDoge1xuICAgICAgICAgIGludGVudFR5cGU6ICdwYXltZW50JyxcbiAgICAgICAgfSxcbiAgICAgICAgbGF0ZXN0OiB0cnVlLFxuICAgICAgICBzdGF0ZTogJ3BlbmRpbmdVc2VyU2lnbmF0dXJlJyxcbiAgICAgICAgd2FsbGV0VHlwZTogJ2hvdCcsXG4gICAgICAgIHdhbGxldElkOiAnd2FsbGV0SWQnLFxuICAgICAgICBwb2xpY2llc0NoZWNrZWQ6IHRydWUsXG4gICAgICAgIHZlcnNpb246IDEsXG4gICAgICAgIHVzZXJJZDogJ3VzZXJJZCcsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBzdHViVHNzVXRpbHMgPSBzYW5kYm94LmNyZWF0ZVN0dWJJbnN0YW5jZShUc3NVdGlscyk7XG4gICAgICBzdHViVHNzVXRpbHMuZGVsZXRlU2lnbmF0dXJlU2hhcmVzLnJlc29sdmVzKFtdKTtcbiAgICAgIHN0dWJUc3NVdGlscy5nZXRUeFJlcXVlc3QucmVzb2x2ZXMocmVidWlsdFR4KTtcblxuICAgICAgY29uc3QgaG90V2FsbGV0ID0ge1xuICAgICAgICB0eXBlOiAnaG90JyxcbiAgICAgIH07XG4gICAgICBjb25zdCBwcmVzaWduZWRUcmFuc2FjdGlvbjogYW55ID0gYXdhaXQgYmFzZWNvaW4ucHJlc2lnblRyYW5zYWN0aW9uKHtcbiAgICAgICAgd2FsbGV0RGF0YTogaG90V2FsbGV0LFxuICAgICAgICB0c3NVdGlsczogc3R1YlRzc1V0aWxzLFxuICAgICAgICB0eFByZWJ1aWxkOiB7XG4gICAgICAgICAgdHhSZXF1ZXN0SWQsXG4gICAgICAgIH0sXG4gICAgICB9IGFzIGFueSk7XG5cbiAgICAgIHByZXNpZ25lZFRyYW5zYWN0aW9uLndhbGxldERhdGEuc2hvdWxkLmRlZXBFcXVhbChob3RXYWxsZXQpO1xuICAgICAgcHJlc2lnbmVkVHJhbnNhY3Rpb24udHhQcmVidWlsZC5zaG91bGQuZGVlcEVxdWFsKHJlYnVpbHRUeCk7XG4gICAgICBwcmVzaWduZWRUcmFuc2FjdGlvbi50eEhleC5zaG91bGQuZXF1YWwocmVidWlsdFR4LnVuc2lnbmVkVHhzWzBdLnNlcmlhbGl6ZWRUeEhleCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGRvIG5vdGhpbmcgZm9yIG5vbi1ob3Qgd2FsbGV0cycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbGRXYWxsZXQgPSB7XG4gICAgICAgIHR5cGU6ICdjb2xkJyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHByZXNpZ25lZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4ucHJlc2lnblRyYW5zYWN0aW9uKHtcbiAgICAgICAgd2FsbGV0RGF0YTogY29sZFdhbGxldCxcbiAgICAgIH0gYXMgYW55KTtcbiAgICAgIHByZXNpZ25lZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICB3YWxsZXREYXRhOiBjb2xkV2FsbGV0LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGVycm9yIGlmIHR4UmVxdWVzdElkIGlzIG1pc3NpbmcnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBob3RXYWxsZXQgPSB7XG4gICAgICAgIHR5cGU6ICdob3QnLFxuICAgICAgfTtcbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC5wcmVzaWduVHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHdhbGxldERhdGE6IGhvdFdhbGxldCxcbiAgICAgICAgICB0eFByZWJ1aWxkOiB7fSxcbiAgICAgICAgfSBhcyBhbnkpXG4gICAgICAgIC5zaG91bGQucmVqZWN0ZWRXaXRoKCdNaXNzaW5nIHR4UmVxdWVzdElkJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdBUEkgS2V5IHBhcmFtZXRlcjonLCAoKSA9PiB7XG4gICAgLy8gVGVzdCB0aGUgZ2V0UHVibGljTm9kZVVybCBtZXRob2QgZGlyZWN0bHlcbiAgICBpdCgnc2hvdWxkIGFwcGVuZCBhcGlLZXkgdG8gbm9kZSBVUkwgd2hlbiBwcm92aWRlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIEFjY2VzcyB0aGUgcHJvdGVjdGVkIG1ldGhvZCB1c2luZyB0eXBlIGNhc3RpbmdcbiAgICAgIGNvbnN0IHVybCA9IChiYXNlY29pbiBhcyBhbnkpLmdldFB1YmxpY05vZGVVcmwoJ3Rlc3QtYXBpLWtleS0xMjMnKTtcbiAgICAgIHVybC5zaG91bGQuZXF1YWwoYCR7RW52aXJvbm1lbnRzLnRlc3Quc29sQWxjaGVteU5vZGVVcmx9L3Rlc3QtYXBpLWtleS0xMjNgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdXNlIHJlZ3VsYXIgbm9kZSBVUkwgd2hlbiBhcGlLZXkgaXMgbm90IHByb3ZpZGVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gQWNjZXNzIHRoZSBwcm90ZWN0ZWQgbWV0aG9kIHVzaW5nIHR5cGUgY2FzdGluZ1xuICAgICAgY29uc3QgdXJsID0gKGJhc2Vjb2luIGFzIGFueSkuZ2V0UHVibGljTm9kZVVybCgpO1xuICAgICAgdXJsLnNob3VsZC5lcXVhbChFbnZpcm9ubWVudHMudGVzdC5zb2xOb2RlVXJsKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1JlY292ZXIgVHJhbnNhY3Rpb25zOicsICgpID0+IHtcbiAgICBjb25zdCBzYW5kQm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuICAgIGNvbnN0IGNvaW4gPSBjb2lucy5nZXQoJ3Rzb2wnKTtcbiAgICBjb25zdCB1c2R0TWludEFkZHJlc3MgPSAnOWNncEJlTloySG5MZGE3TldhYVUxaTNOeVRzdGsyYzR6Q01VY29BR3NpOUMnO1xuICAgIGNvbnN0IHQyMm1pbnRBZGRyZXNzID0gJzVOUjFiUXdMV3FqYmtoYlExaHg3MkhLSnliYnV2d2tEblVaTm9BWjJWaFc2JztcbiAgICBsZXQgY2FsbEJhY2s6IHNpbm9uLlNpbm9uU3R1YjtcblxuICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgY2FsbEJhY2sgPSBzYW5kQm94LnN0dWIoU29sLnByb3RvdHlwZSwgJ2dldERhdGFGcm9tTm9kZScgYXMga2V5b2YgU29sKTtcblxuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRMYXRlc3RCbG9ja2hhc2gnLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb21taXRtZW50OiAnZmluYWxpemVkJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRCbG9ja2hhc2hSZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEZlZUZvck1lc3NhZ2UnLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHNpbm9uLm1hdGNoLnN0cmluZyxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbW1pdG1lbnQ6ICdmaW5hbGl6ZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEZlZXNGb3JNZXNzYWdlUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRNaW5pbXVtQmFsYW5jZUZvclJlbnRFeGVtcHRpb24nLFxuICAgICAgICAgICAgcGFyYW1zOiBbMTY1XSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldE1pbmltdW1CYWxhbmNlRm9yUmVudEV4ZW1wdGlvblJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QmFsYW5jZScsXG4gICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS5hY2NvdW50SW5mby5iczU4RW5jb2RlZFB1YmxpY0tleV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50QmFsYW5jZVJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QmFsYW5jZScsXG4gICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS5hY2NvdW50SW5mby5iczU4RW5jb2RlZFB1YmxpY0tleU5vRnVuZHNdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEJhbGFuY2VSZXNwb25zZU5vRnVuZHMpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRCYWxhbmNlJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Rlc3REYXRhLmFjY291bnRJbmZvLmJzNThFbmNvZGVkUHVibGljS2V5TTFEZXJpdmF0aW9uXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2VNMURlcml2YXRpb24pO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRCYWxhbmNlJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Rlc3REYXRhLmFjY291bnRJbmZvLmJzNThFbmNvZGVkUHVibGljS2V5TTJEZXJpdmF0aW9uXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2VNMkRlcml2YXRpb24pO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRCYWxhbmNlJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Rlc3REYXRhLmFjY291bnRJbmZvLmJzNThFbmNvZGVkUHVibGljS2V5V2l0aE1hbnlUb2tlbnNdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEJhbGFuY2VSZXNwb25zZU0yRGVyaXZhdGlvbik7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEJhbGFuY2UnLFxuICAgICAgICAgICAgcGFyYW1zOiBbdGVzdERhdGEuY2xvc2VBVEFrZXlzLmNsb3NlQXRhQWRkcmVzc10sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50QmFsYW5jZVJlc3BvbnNlTTJEZXJpdmF0aW9uKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QmFsYW5jZScsXG4gICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS5jbG9zZUFUQWtleXMuYnM1OEVuY29kZWRQdWJsaWNLZXldLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEJhbGFuY2VSZXNwb25zZU0yRGVyaXZhdGlvbik7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEFjY291bnRJbmZvJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuY2xvc2VBdGFBZGRyZXNzLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkluZm9SZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEFjY291bnRJbmZvJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVB1YktleSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiAnanNvblBhcnNlZCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEluZm9SZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldFRva2VuQWNjb3VudHNCeU93bmVyJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICB0ZXN0RGF0YS5rZXlzLmRlc3RpbmF0aW9uUHViS2V5LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogJ2pzb25QYXJzZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyUmVzcG9uc2VOb0FjY291bnRzKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHRlc3REYXRhLmFjY291bnRJbmZvLmJzNThFbmNvZGVkUHVibGljS2V5LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogJ2pzb25QYXJzZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyUmVzcG9uc2VOb0FjY291bnRzKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXkyLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogJ2pzb25QYXJzZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRUb2tlbkFjY291bnRzQnlPd25lcicsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleTIsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcm9ncmFtSWQ6ICdUb2tlbnpRZEJOYkxxUDVWRWhka0FTNkVQRkxDMVBIbkJxQ1hFcFB4dUViJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiAnanNvblBhcnNlZCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0VG9rZW5BY2NvdW50c0J5T3duZXJGb3JTb2wyMDIyUmVzcG9uc2UyKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczAsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcm9ncmFtSWQ6ICdUb2tlbnpRZEJOYkxxUDVWRWhka0FTNkVQRkxDMVBIbkJxQ1hFcFB4dUViJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiAnanNvblBhcnNlZCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0VG9rZW5BY2NvdW50c0J5T3duZXJGb3JTb2wyMDIyUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRUb2tlbkFjY291bnRzQnlPd25lcicsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHByb2dyYW1JZDogJ1Rva2Vua2VnUWZlWnlpTndBSmJOYkdLUEZYQ1d1QnZmOVNzNjIzVlE1REEnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lclJlc3BvbnNlMik7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldFRva2VuQWNjb3VudHNCeU93bmVyJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3M0LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogJ2pzb25QYXJzZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyUmVzcG9uc2UzKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QmFsYW5jZScsXG4gICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MwXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRUb2tlbkFjY291bnRzQnlPd25lcicsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHByb2dyYW1JZDogJ1Rva2VuelFkQk5iTHFQNVZFaGRrQVM2RVBGTEMxUEhuQnFDWEVwUHh1RWInLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lclJlc3BvbnNlTm9BY2NvdW50cyk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ3NlbmRUcmFuc2FjdGlvbicsXG4gICAgICAgICAgICBwYXJhbXM6IHNpbm9uLm1hdGNoLmFycmF5LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5vbkNhbGwoMClcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5icm9hZGNhc3RUcmFuc2FjdGlvblJlc3BvbnNlKVxuICAgICAgICAub25DYWxsKDEpXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuYnJvYWRjYXN0VHJhbnNhY3Rpb25SZXNwb25zZTEpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICAgIHNhbmRCb3gucmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0YWtlIE9WQyBvdXRwdXQgYW5kIGdlbmVyYXRlIGEgc2lnbmVkIHN3ZWVwIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcGFyYW1zID0gdGVzdERhdGEub3ZjUmVzcG9uc2U7XG4gICAgICBjb25zdCByZWNvdmVyeVR4biA9IGF3YWl0IGJhc2Vjb2luLmNyZWF0ZUJyb2FkY2FzdGFibGVTd2VlcFRyYW5zYWN0aW9uKHBhcmFtcyk7XG4gICAgICByZWNvdmVyeVR4bi50cmFuc2FjdGlvbnNbMF0uc2VyaWFsaXplZFR4LnNob3VsZC5lcXVhbChcbiAgICAgICAgJ0F2UitMOTA5a3pScTZOdWFVZTlGNkp0OTdNT2lGczdqcFc4TXVPcnd6NEViS0Y0MGQzMWRjaS9iZ0xUcTRncGsvSGgzczVjQThGdGJMa0RRcjE1UHFBRTd5ZDhMT1h2c0x0TzJSRXFNTS9PQ1o4d0l0ZnNxZlRmaWEyeElmaWJSVzN3SGd3NjNqaWFvamJYZVNxYVlhakovQ2E3WXdCVXo1Ymx5ZEkzZllMZ1BBZ0VDQnNMVnRmVDdtcHZOaWk4d1BrMEc5NDJON1RBSEUvUlcyaXEvOExQcUFZV3FCUm8wdklyTlE0ZGpsMitXaDJFVkJROXpnb1ZUVm0wUkhYckl2LzYvV0h4UFgxbUh2K0pxcG1BVDc5bHROallQSzBNMnlSK1pNbG43VmdVVEJXRk5RdkxxRS9qL25YbFkyL0pweHVOci9mWExYRVBlUzA0ZFB2dDlxejFkQW9ZRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHcDlVWEdTeFdqdUNLaEY5ejBwZUl6d05jTVVXeUdyTkUyQVl1cVVBQUFEcGlIMjBjeExqN0tuT2FvSTVBTk5vUHhZanM0NzJGZGpEZU1QZnQza1hkQWdRREFnVUJCQVFBQUFBRUFnQUREQUlBQUFEd29wbzdBQUFBQUE9PSdcbiAgICAgICk7XG4gICAgICAocmVjb3ZlcnlUeG4udHJhbnNhY3Rpb25zWzBdLnNjYW5JbmRleCA/PyAwKS5zaG91bGQuZXF1YWwoMCk7XG4gICAgICAocmVjb3ZlcnlUeG4ubGFzdFNjYW5JbmRleCA/PyAwKS5zaG91bGQuZXF1YWwoMCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRha2Ugc29sIDIwMjIgdG9rZW4gT1ZDIG91dHB1dCBhbmQgZ2VuZXJhdGUgYSBzaWduZWQgc3dlZXAgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBwYXJhbXMgPSB0ZXN0RGF0YS5vdmNSZXNwb25zZTtcbiAgICAgIGNvbnN0IHJlY292ZXJ5VHhuID0gYXdhaXQgYmFzZWNvaW4uY3JlYXRlQnJvYWRjYXN0YWJsZVN3ZWVwVHJhbnNhY3Rpb24ocGFyYW1zKTtcbiAgICAgIHJlY292ZXJ5VHhuLnRyYW5zYWN0aW9uc1swXS5zZXJpYWxpemVkVHguc2hvdWxkLmVxdWFsKFxuICAgICAgICAnQXZSK0w5MDlrelJxNk51YVVlOUY2SnQ5N01PaUZzN2pwVzhNdU9yd3o0RWJLRjQwZDMxZGNpL2JnTFRxNGdway9IaDNzNWNBOEZ0YkxrRFFyMTVQcUFFN3lkOExPWHZzTHRPMlJFcU1NL09DWjh3SXRmc3FmVGZpYTJ4SWZpYlJXM3dIZ3c2M2ppYW9qYlhlU3FhWWFqSi9DYTdZd0JVejVibHlkSTNmWUxnUEFnRUNCc0xWdGZUN21wdk5paTh3UGswRzk0Mk43VEFIRS9SVzJpcS84TFBxQVlXcUJSbzB2SXJOUTRkamwyK1doMkVWQlE5emdvVlRWbTBSSFhySXYvNi9XSHhQWDFtSHYrSnFwbUFUNzlsdE5qWVBLME0yeVIrWk1sbjdWZ1VUQldGTlF2THFFL2ovblhsWTIvSnB4dU5yL2ZYTFhFUGVTMDRkUHZ0OXF6MWRBb1lFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUdwOVVYR1N4V2p1Q0toRjl6MHBlSXp3TmNNVVd5R3JORTJBWXVxVUFBQURwaUgyMGN4TGo3S25PYW9JNUFOTm9QeFlqczQ3MkZkakRlTVBmdDNrWGRBZ1FEQWdVQkJBUUFBQUFFQWdBRERBSUFBQUR3b3BvN0FBQUFBQT09J1xuICAgICAgKTtcbiAgICAgIChyZWNvdmVyeVR4bi50cmFuc2FjdGlvbnNbMF0uc2NhbkluZGV4ID8/IDApLnNob3VsZC5lcXVhbCgwKTtcbiAgICAgIChyZWNvdmVyeVR4bi5sYXN0U2NhbkluZGV4ID8/IDApLnNob3VsZC5lcXVhbCgwKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGFrZSBjb25zb2xpZGF0aW9uIE9WQyBvdXRwdXQgYW5kIGdlbmVyYXRlIG11bHRpcGxlIHNpZ25lZCBzd2VlcCB0cmFuc2FjdGlvbnMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBwYXJhbXMgPSB0ZXN0RGF0YS5vdmNSZXNwb25zZTI7XG4gICAgICBjb25zdCByZWNvdmVyeVR4biA9IGF3YWl0IGJhc2Vjb2luLmNyZWF0ZUJyb2FkY2FzdGFibGVTd2VlcFRyYW5zYWN0aW9uKHBhcmFtcyk7XG4gICAgICByZWNvdmVyeVR4bi50cmFuc2FjdGlvbnNbMF0uc2VyaWFsaXplZFR4LnNob3VsZC5lcXVhbChcbiAgICAgICAgJ0F0UVBMek9tTHVLd0hZNk41WG9KSVpLL1Q3VzEwdVlXbS9NUnRlM0dGVWRsK3czZ0hMalNhOUg2NldTZkZOdWJReElQY2t4SkR5bHRrUDdrc0xEZjlRZ0JOSk0yVVdiQlVINXdUMEpKSElMbGhDczMzSFg4RGVFLzhUZHN3NnRHZlpvTWhDblNLdjZUUFd0Qnh5N1NiNnNXOGtzQ1VQbkFXdUhHR0ttZ2pFTUJBZ0VDQm1McnF4SnJZMmtiTi90Y3JRdzNQOFAxNU9sakZHYWJGSkFLQnJVTzFnck5CUm8wdklyTlE0ZGpsMitXaDJFVkJROXpnb1ZUVm0wUkhYckl2LzYvV0h4UFgxbUh2K0pxcG1BVDc5bHROallQSzBNMnlSK1pNbG43VmdVVEJXRk5Rc0xWdGZUN21wdk5paTh3UGswRzk0Mk43VEFIRS9SVzJpcS84TFBxQVlXcUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHcDlVWEdTeFdqdUNLaEY5ejBwZUl6d05jTVVXeUdyTkUyQVl1cVVBQUFJWlFuaWlTNzNENm13ZnBuZmhWTUM0bHlZSnRSU3Jtb1pwRjd5SWxVZElEQWdRREFnVUJCQVFBQUFBRUFnQUREQUlBQUFEd1BjMGRBQUFBQUE9PSdcbiAgICAgICk7XG4gICAgICAocmVjb3ZlcnlUeG4udHJhbnNhY3Rpb25zWzBdLnNjYW5JbmRleCA/PyAwKS5zaG91bGQuZXF1YWwoMSk7XG4gICAgICByZWNvdmVyeVR4bi50cmFuc2FjdGlvbnNbMV0uc2VyaWFsaXplZFR4LnNob3VsZC5lcXVhbChcbiAgICAgICAgJ0F1TGhPQTV6bU9CWlI4NWxvK25LZFRvcFZ3SkFNck1wNk5XKzhVbkdOc1NCU3BCa3FmV1pRcVNnOXMrN2FUbFhlem01dnhvbCtQbDZ0N1BwVk5UT0h3TGNwOXhKcDNURkhkaXZFYmh3SktsZFI0TnkrcGFzb0Z4K0JnazhxNmcxaU5pcTdYU2kxT3YzYnM3ZXVNa1RqN25EUkZxUDhsdjd4TFRjdnJCbTlPUUpBZ0VDQnAxNEltQkNkbVZST2x3MFV2ZVlTMU12Ry9sakNSSTNNSlRGbXN4dVhFb1dCUm8wdklyTlE0ZGpsMitXaDJFVkJROXpnb1ZUVm0wUkhYckl2LzYvV0h3MGh5eHZwVnd0SXg5L3plWDJPMTZlVHJZK2FLSWgxbWRLZzRNTWcwZXl4TUxWdGZUN21wdk5paTh3UGswRzk0Mk43VEFIRS9SVzJpcS84TFBxQVlXcUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHcDlVWEdTeFdqdUNLaEY5ejBwZUl6d05jTVVXeUdyTkUyQVl1cVVBQUFDN3dzMVhGc2xpbndndHBJU1VWaVZXSVZUSHlEMlEwcWoyNFlqS21yQW1YQWdRREFnVUJCQVFBQUFBRUFnQUREQUlBQUFEd1BjMGRBQUFBQUE9PSdcbiAgICAgICk7XG4gICAgICAocmVjb3ZlcnlUeG4udHJhbnNhY3Rpb25zWzFdLnNjYW5JbmRleCA/PyAwKS5zaG91bGQuZXF1YWwoMik7XG4gICAgICAocmVjb3ZlcnlUeG4ubGFzdFNjYW5JbmRleCA/PyAwKS5zaG91bGQuZXF1YWwoMjApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIGEgdHhuIGZvciBub24tYml0Z28gcmVjb3ZlcmllcyAobGF0ZXN0IGJsb2NraGFzaCknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBnZXRUU1NTaWduYXR1cmVTcHkgPSBzYW5kQm94LnNweShFRERTQU1ldGhvZHMsICdnZXRUU1NTaWduYXR1cmUnKTtcblxuICAgICAgLy8gTGF0ZXN0IEJsb2NraGFzaCBSZWNvdmVyeSAoQml0R28tbGVzcylcbiAgICAgIGNvbnN0IGxhdGVzdEJsb2NrSGFzaFR4biA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXIoe1xuICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS5rZXlzLnVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEua2V5cy5iYWNrdXBLZXksXG4gICAgICAgIGJpdGdvS2V5OiB0ZXN0RGF0YS5rZXlzLmJpdGdvS2V5LFxuICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5rZXlzLmRlc3RpbmF0aW9uUHViS2V5LFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS5rZXlzLndhbGxldFBhc3N3b3JkLFxuICAgICAgfSk7XG4gICAgICBsYXRlc3RCbG9ja0hhc2hUeG4uc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgbGF0ZXN0QmxvY2tIYXNoVHhuLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2VyaWFsaXplZFR4Jyk7XG4gICAgICBsYXRlc3RCbG9ja0hhc2hUeG4uc2hvdWxkLmhhc093blByb3BlcnR5KCdzY2FuSW5kZXgnKTtcbiAgICAgIHNob3VsZC5lcXVhbCgobGF0ZXN0QmxvY2tIYXNoVHhuIGFzIE1QQ1R4KS5zY2FuSW5kZXgsIDApO1xuXG4gICAgICBjb25zdCBsYXRlc3RCbG9ja2hhc2hUeG5EZXNlcmlhbGl6ZSA9IG5ldyBUcmFuc2FjdGlvbihjb2luKTtcbiAgICAgIGxhdGVzdEJsb2NraGFzaFR4bkRlc2VyaWFsaXplLmZyb21SYXdUcmFuc2FjdGlvbigobGF0ZXN0QmxvY2tIYXNoVHhuIGFzIE1QQ1R4KS5zZXJpYWxpemVkVHgpO1xuICAgICAgY29uc3QgbGF0ZXN0QmxvY2toYXNoVHhuSnNvbiA9IGxhdGVzdEJsb2NraGFzaFR4bkRlc2VyaWFsaXplLnRvSnNvbigpO1xuXG4gICAgICBzaG91bGQuZXF1YWwobGF0ZXN0QmxvY2toYXNoVHhuSnNvbi5ub25jZSwgdGVzdERhdGEuU29sSW5wdXREYXRhLmJsb2NraGFzaCk7XG4gICAgICBzaG91bGQuZXF1YWwobGF0ZXN0QmxvY2toYXNoVHhuSnNvbi5mZWVQYXllciwgdGVzdERhdGEuYWNjb3VudEluZm8uYnM1OEVuY29kZWRQdWJsaWNLZXkpO1xuICAgICAgc2hvdWxkLmVxdWFsKGxhdGVzdEJsb2NraGFzaFR4bkpzb24ubnVtU2lnbmF0dXJlcywgdGVzdERhdGEuU29sSW5wdXREYXRhLmxhdGVzdEJsb2NraGFzaFNpZ25hdHVyZXMpO1xuICAgICAgY29uc3Qgc29sQ29pbiA9IGJhc2Vjb2luIGFzIGFueTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChzb2xDb2luLmdldERhdGFGcm9tTm9kZSwgMyk7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsZWRPbmNlKGdldFRTU1NpZ25hdHVyZVNweSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlY292ZXIgYSB0eG4gZm9yIG5vbi1iaXRnbyByZWNvdmVyaWVzIChkdXJhYmxlIG5vbmNlKScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGdldFRTU1NpZ25hdHVyZVNweSA9IHNhbmRCb3guc3B5KEVERFNBTWV0aG9kcywgJ2dldFRTU1NpZ25hdHVyZScpO1xuXG4gICAgICAvLyBEdXJhYmxlIE5vbmNlIFJlY292ZXJ5IChCaXRHby1sZXNzKVxuICAgICAgY29uc3QgZHVyYWJsZU5vbmNlVHhuID0gYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIHVzZXJLZXk6IHRlc3REYXRhLmtleXMudXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiB0ZXN0RGF0YS5rZXlzLmJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLmtleXMuYml0Z29LZXksXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2U6IHRlc3REYXRhLmtleXMud2FsbGV0UGFzc3dvcmQsXG4gICAgICAgIGR1cmFibGVOb25jZToge1xuICAgICAgICAgIHB1YmxpY0tleTogdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQdWJLZXksXG4gICAgICAgICAgc2VjcmV0S2V5OiB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVByaXZLZXksXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgZHVyYWJsZU5vbmNlVHhuLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIGR1cmFibGVOb25jZVR4bi5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpO1xuICAgICAgZHVyYWJsZU5vbmNlVHhuLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2NhbkluZGV4Jyk7XG4gICAgICBzaG91bGQuZXF1YWwoKGR1cmFibGVOb25jZVR4biBhcyBNUENUeCkuc2NhbkluZGV4LCAwKTtcblxuICAgICAgY29uc3QgZHVyYWJsZU5vbmNlVHhuRGVzZXJpYWxpemUgPSBuZXcgVHJhbnNhY3Rpb24oY29pbik7XG4gICAgICBkdXJhYmxlTm9uY2VUeG5EZXNlcmlhbGl6ZS5mcm9tUmF3VHJhbnNhY3Rpb24oKGR1cmFibGVOb25jZVR4biBhcyBNUENUeCkuc2VyaWFsaXplZFR4KTtcbiAgICAgIGNvbnN0IGR1cmFibGVOb25jZVR4bkpzb24gPSBkdXJhYmxlTm9uY2VUeG5EZXNlcmlhbGl6ZS50b0pzb24oKTtcblxuICAgICAgc2hvdWxkLmVxdWFsKGR1cmFibGVOb25jZVR4bkpzb24ubm9uY2UsIHRlc3REYXRhLlNvbElucHV0RGF0YS5kdXJhYmxlTm9uY2VCbG9ja2hhc2gpO1xuICAgICAgc2hvdWxkLmVxdWFsKGR1cmFibGVOb25jZVR4bkpzb24uZmVlUGF5ZXIsIHRlc3REYXRhLmFjY291bnRJbmZvLmJzNThFbmNvZGVkUHVibGljS2V5KTtcbiAgICAgIHNob3VsZC5lcXVhbChkdXJhYmxlTm9uY2VUeG5Kc29uLm51bVNpZ25hdHVyZXMsIHRlc3REYXRhLlNvbElucHV0RGF0YS5kdXJhYmxlTm9uY2VTaWduYXR1cmVzKTtcbiAgICAgIGNvbnN0IHNvbENvaW4gPSBiYXNlY29pbiBhcyBhbnk7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoc29sQ29pbi5nZXREYXRhRnJvbU5vZGUsIDQpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbGVkT25jZShnZXRUU1NTaWduYXR1cmVTcHkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIGEgdHhuIGZvciB1bnNpZ25lZCBzd2VlcCByZWNvdmVyaWVzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gVW5zaWduZWQgU3dlZXAgUmVjb3ZlcnlcbiAgICAgIGNvbnN0IHVuc2lnbmVkU3dlZXBUeG4gPSAoYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIGJpdGdvS2V5OiB0ZXN0RGF0YS5rZXlzLmJpdGdvS2V5LFxuICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5rZXlzLmRlc3RpbmF0aW9uUHViS2V5LFxuICAgICAgICBkdXJhYmxlTm9uY2U6IHtcbiAgICAgICAgICBwdWJsaWNLZXk6IHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LFxuICAgICAgICAgIHNlY3JldEtleTogdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQcml2S2V5LFxuICAgICAgICB9LFxuICAgICAgfSkpIGFzIE1QQ1N3ZWVwVHhzO1xuXG4gICAgICB1bnNpZ25lZFN3ZWVwVHhuLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIHVuc2lnbmVkU3dlZXBUeG4udHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpO1xuICAgICAgdW5zaWduZWRTd2VlcFR4bi50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2NhbkluZGV4Jyk7XG4gICAgICBzaG91bGQuZXF1YWwodW5zaWduZWRTd2VlcFR4bi50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnNjYW5JbmRleCwgMCk7XG5cbiAgICAgIGNvbnN0IHVuc2lnbmVkU3dlZXBUeG5EZXNlcmlhbGl6ZSA9IG5ldyBUcmFuc2FjdGlvbihjb2luKTtcbiAgICAgIHVuc2lnbmVkU3dlZXBUeG5EZXNlcmlhbGl6ZS5mcm9tUmF3VHJhbnNhY3Rpb24oXG4gICAgICAgIHVuc2lnbmVkU3dlZXBUeG4udHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5zZXJpYWxpemVkVHhcbiAgICAgICk7XG4gICAgICBjb25zdCB1bnNpZ25lZFN3ZWVwVHhuSnNvbiA9IHVuc2lnbmVkU3dlZXBUeG5EZXNlcmlhbGl6ZS50b0pzb24oKTtcblxuICAgICAgc2hvdWxkLmVxdWFsKHVuc2lnbmVkU3dlZXBUeG5Kc29uLm5vbmNlLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEuZHVyYWJsZU5vbmNlQmxvY2toYXNoKTtcbiAgICAgIHNob3VsZC5lcXVhbCh1bnNpZ25lZFN3ZWVwVHhuSnNvbi5mZWVQYXllciwgdGVzdERhdGEuYWNjb3VudEluZm8uYnM1OEVuY29kZWRQdWJsaWNLZXkpO1xuICAgICAgc2hvdWxkLmVxdWFsKHVuc2lnbmVkU3dlZXBUeG5Kc29uLm51bVNpZ25hdHVyZXMsIHRlc3REYXRhLlNvbElucHV0RGF0YS51bnNpZ25lZFN3ZWVwU2lnbmF0dXJlcyk7XG4gICAgICBjb25zdCBzb2xDb2luID0gYmFzZWNvaW4gYXMgYW55O1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KHNvbENvaW4uZ2V0RGF0YUZyb21Ob2RlLCA0KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVjb3ZlciBhIHR4biBmb3IgdW5zaWduZWQgc3dlZXAgcmVjb3ZlcmllcyB3aGVuIHVzZXJLZXkvYmFja3VwS2V5IGFyZSBlbXB0eSBzdHJpbmdzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gUmVncmVzc2lvbiB0ZXN0OiBXUlcncyBjb2xkLXdhbGxldCBzd2VlcCBmb3JtIHNlbmRzIHVzZXJLZXkvYmFja3VwS2V5IGFzIGVtcHR5IHN0cmluZ3NcbiAgICAgIC8vIChyYXRoZXIgdGhhbiBvbWl0dGluZyB0aGVtKSB0byBzYXRpc2Z5IFRTIHR5cGluZy4gRW1wdHkgc3RyaW5nIGFuZCB1bmRlZmluZWQgbXVzdCBiZVxuICAgICAgLy8gaGFuZGxlZCBpZGVudGljYWxseSBieSB0aGUgdW5zaWduZWQtc3dlZXAgZ2F0ZSAoYCFwYXJhbXMud2FsbGV0UGFzc3BocmFzZWApIGFuZCBieVxuICAgICAgLy8gaXNNcGN2MlNpZ25pbmdNYXRlcmlhbCdzIGVhcmx5IGAhd2FsbGV0UGFzc3BocmFzZWAgc2hvcnQtY2lyY3VpdC5cbiAgICAgIGNvbnN0IHVuc2lnbmVkU3dlZXBUeG4gPSAoYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIHVzZXJLZXk6ICcnLFxuICAgICAgICBiYWNrdXBLZXk6ICcnLFxuICAgICAgICBiaXRnb0tleTogdGVzdERhdGEua2V5cy5iaXRnb0tleSxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleSxcbiAgICAgICAgZHVyYWJsZU5vbmNlOiB7XG4gICAgICAgICAgcHVibGljS2V5OiB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVB1YktleSxcbiAgICAgICAgICBzZWNyZXRLZXk6IHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHJpdktleSxcbiAgICAgICAgfSxcbiAgICAgIH0pKSBhcyBNUENTd2VlcFR4cztcblxuICAgICAgdW5zaWduZWRTd2VlcFR4bi5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICB1bnNpZ25lZFN3ZWVwVHhuLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguc2hvdWxkLmhhc093blByb3BlcnR5KCdzZXJpYWxpemVkVHgnKTtcbiAgICAgIHNob3VsZC5lcXVhbCh1bnNpZ25lZFN3ZWVwVHhuLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguc2NhbkluZGV4LCAwKTtcblxuICAgICAgY29uc3QgdW5zaWduZWRTd2VlcFR4bkRlc2VyaWFsaXplID0gbmV3IFRyYW5zYWN0aW9uKGNvaW4pO1xuICAgICAgdW5zaWduZWRTd2VlcFR4bkRlc2VyaWFsaXplLmZyb21SYXdUcmFuc2FjdGlvbihcbiAgICAgICAgdW5zaWduZWRTd2VlcFR4bi50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnNlcmlhbGl6ZWRUeFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHVuc2lnbmVkU3dlZXBUeG5Kc29uID0gdW5zaWduZWRTd2VlcFR4bkRlc2VyaWFsaXplLnRvSnNvbigpO1xuXG4gICAgICBzaG91bGQuZXF1YWwodW5zaWduZWRTd2VlcFR4bkpzb24ubm9uY2UsIHRlc3REYXRhLlNvbElucHV0RGF0YS5kdXJhYmxlTm9uY2VCbG9ja2hhc2gpO1xuICAgICAgc2hvdWxkLmVxdWFsKHVuc2lnbmVkU3dlZXBUeG5Kc29uLmZlZVBheWVyLCB0ZXN0RGF0YS5hY2NvdW50SW5mby5iczU4RW5jb2RlZFB1YmxpY0tleSk7XG4gICAgICBzaG91bGQuZXF1YWwodW5zaWduZWRTd2VlcFR4bkpzb24ubnVtU2lnbmF0dXJlcywgdGVzdERhdGEuU29sSW5wdXREYXRhLnVuc2lnbmVkU3dlZXBTaWduYXR1cmVzKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGVycm9yIGluIHJlY292ZXIgZnVuY3Rpb24gaWYgYSByZXF1aXJlZCBmaWVsZCBpcyBtaXNzaW5nL2luY29ycmVjdCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIG1pc3NpbmcgdXNlcmtleVxuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnJlY292ZXIoe1xuICAgICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEua2V5cy5iYWNrdXBLZXksXG4gICAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLmtleXMuYml0Z29LZXksXG4gICAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleSxcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS5rZXlzLndhbGxldFBhc3N3b3JkLFxuICAgICAgICB9KVxuICAgICAgICAuc2hvdWxkLnJlamVjdGVkV2l0aCgnbWlzc2luZyB1c2VyS2V5Jyk7XG5cbiAgICAgIC8vIG1pc3NpbmcgYmFja3Vwa2V5XG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAucmVjb3Zlcih7XG4gICAgICAgICAgdXNlcktleTogdGVzdERhdGEua2V5cy51c2VyS2V5LFxuICAgICAgICAgIGJpdGdvS2V5OiB0ZXN0RGF0YS5rZXlzLmJpdGdvS2V5LFxuICAgICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEua2V5cy53YWxsZXRQYXNzd29yZCxcbiAgICAgICAgfSlcbiAgICAgICAgLnNob3VsZC5yZWplY3RlZFdpdGgoJ21pc3NpbmcgYmFja3VwS2V5Jyk7XG5cbiAgICAgIC8vIGluY29ycmVjdCB3YWxsZXQgcGFzc3BocmFzZSwgdXNlciBrZXksIGJhY2t1cCBrZXkgY29tYmluYXRpb25cbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC5yZWNvdmVyKHtcbiAgICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS5rZXlzLnVzZXJLZXksXG4gICAgICAgICAgYmFja3VwS2V5OiB0ZXN0RGF0YS5rZXlzLmJhY2t1cEtleSxcbiAgICAgICAgICBiaXRnb0tleTogdGVzdERhdGEua2V5cy5iaXRnb0tleSxcbiAgICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5rZXlzLmRlc3RpbmF0aW9uUHViS2V5LFxuICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2U6IHRlc3REYXRhLmtleXMud2FsbGV0UGFzc3dvcmQgKyAnaW5jb3JyZWN0JyxcbiAgICAgICAgfSlcbiAgICAgICAgLnNob3VsZC5yZWplY3RlZFdpdGgoJ0Vycm9yIGRlY3J5cHRpbmcgdXNlciBrZXljaGFpbjogaW5jb3JyZWN0IHBhc3N3b3JkJyk7XG5cbiAgICAgIC8vIG5vIHdhbGxldCB3aXRoIHN1ZmZpY2llbnQgZnVuZHNcbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC5yZWNvdmVyKHtcbiAgICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS5rZXlzLnVzZXJLZXksXG4gICAgICAgICAgYmFja3VwS2V5OiB0ZXN0RGF0YS5rZXlzLmJhY2t1cEtleSxcbiAgICAgICAgICBiaXRnb0tleTogdGVzdERhdGEua2V5cy5iaXRnb0tleU5vRnVuZHMsXG4gICAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleSxcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS5rZXlzLndhbGxldFBhc3N3b3JkLFxuICAgICAgICB9KVxuICAgICAgICAuc2hvdWxkLnJlamVjdGVkV2l0aCgnRGlkIG5vdCBmaW5kIGFkZHJlc3Mgd2l0aCBmdW5kcyB0byByZWNvdmVyJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlY292ZXIgc29sIHRva2VucyB0byByZWNvdmVyeSBkZXN0aW5hdGlvbiB3aXRoIG5vIGV4aXN0aW5nIHRva2VuIGFjY291bnRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZ2V0VFNTU2lnbmF0dXJlU3B5ID0gc2FuZEJveC5zcHkoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJyk7XG5cbiAgICAgIGNvbnN0IHRva2VuVHhuID0gYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIHVzZXJLZXk6IHRlc3REYXRhLndyd1VzZXIudXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLndyd1VzZXIuYml0Z29LZXksXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiB1c2R0TWludEFkZHJlc3MsXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2U6IHRlc3REYXRhLndyd1VzZXIud2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgZHVyYWJsZU5vbmNlOiB7XG4gICAgICAgICAgcHVibGljS2V5OiB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVB1YktleSxcbiAgICAgICAgICBzZWNyZXRLZXk6IHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHJpdktleSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICB0b2tlblR4bi5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICB0b2tlblR4bi5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpO1xuICAgICAgdG9rZW5UeG4uc2hvdWxkLmhhc093blByb3BlcnR5KCdzY2FuSW5kZXgnKTtcbiAgICAgIHNob3VsZC5lcXVhbCgodG9rZW5UeG4gYXMgTVBDVHgpLnNjYW5JbmRleCwgMCk7XG5cbiAgICAgIGNvbnN0IHRva2VuVHhuRGVzZXJpYWxpemUgPSBuZXcgVHJhbnNhY3Rpb24oY29pbik7XG4gICAgICB0b2tlblR4bkRlc2VyaWFsaXplLmZyb21SYXdUcmFuc2FjdGlvbigodG9rZW5UeG4gYXMgTVBDVHgpLnNlcmlhbGl6ZWRUeCk7XG4gICAgICBjb25zdCB0b2tlblR4bkpzb24gPSB0b2tlblR4bkRlc2VyaWFsaXplLnRvSnNvbigpO1xuXG4gICAgICBzaG91bGQuZXF1YWwodG9rZW5UeG5Kc29uLm5vbmNlLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEuZHVyYWJsZU5vbmNlQmxvY2toYXNoKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0b2tlblR4bkpzb24uZmVlUGF5ZXIsIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczApO1xuICAgICAgc2hvdWxkLmVxdWFsKHRva2VuVHhuSnNvbi5udW1TaWduYXR1cmVzLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEuZHVyYWJsZU5vbmNlU2lnbmF0dXJlcyk7XG5cbiAgICAgIGNvbnN0IGluc3RydWN0aW9uc0RhdGEgPSB0b2tlblR4bkpzb24uaW5zdHJ1Y3Rpb25zRGF0YSBhcyBJbnN0cnVjdGlvblBhcmFtc1tdO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGEubGVuZ3RoLCAzKTtcbiAgICAgIHNob3VsZC5lcXVhbChpbnN0cnVjdGlvbnNEYXRhWzBdLnR5cGUsICdOb25jZUFkdmFuY2UnKTtcblxuICAgICAgY29uc3QgZGVzdGluYXRpb25VU0RUVG9rZW5BY2NvdW50ID0gYXdhaXQgZ2V0QXNzb2NpYXRlZFRva2VuQWNjb3VudEFkZHJlc3MoXG4gICAgICAgIHVzZHRNaW50QWRkcmVzcyxcbiAgICAgICAgdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleVxuICAgICAgKTtcbiAgICAgIHNob3VsZC5lcXVhbChpbnN0cnVjdGlvbnNEYXRhWzFdLnR5cGUsICdDcmVhdGVBc3NvY2lhdGVkVG9rZW5BY2NvdW50Jyk7XG4gICAgICBzaG91bGQuZXF1YWwoKGluc3RydWN0aW9uc0RhdGFbMV0gYXMgQXRhSW5pdCkucGFyYW1zLm1pbnRBZGRyZXNzLCB1c2R0TWludEFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzFdIGFzIEF0YUluaXQpLnBhcmFtcy5hdGFBZGRyZXNzLCBkZXN0aW5hdGlvblVTRFRUb2tlbkFjY291bnQpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzFdIGFzIEF0YUluaXQpLnBhcmFtcy5vd25lckFkZHJlc3MsIHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXkpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzFdIGFzIEF0YUluaXQpLnBhcmFtcy50b2tlbk5hbWUsICd0c29sOnVzZHQnKTtcbiAgICAgIHNob3VsZC5lcXVhbCgoaW5zdHJ1Y3Rpb25zRGF0YVsxXSBhcyBBdGFJbml0KS5wYXJhbXMucGF5ZXJBZGRyZXNzLCB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MwKTtcblxuICAgICAgY29uc3Qgc291cmNlVVNEVFRva2VuQWNjb3VudCA9IGF3YWl0IGdldEFzc29jaWF0ZWRUb2tlbkFjY291bnRBZGRyZXNzKFxuICAgICAgICB1c2R0TWludEFkZHJlc3MsXG4gICAgICAgIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczBcbiAgICAgICk7XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YVsyXS50eXBlLCAnVG9rZW5UcmFuc2ZlcicpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzJdIGFzIFRva2VuVHJhbnNmZXIpLnBhcmFtcy5mcm9tQWRkcmVzcywgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMCk7XG4gICAgICBzaG91bGQuZXF1YWwoKGluc3RydWN0aW9uc0RhdGFbMl0gYXMgVG9rZW5UcmFuc2ZlcikucGFyYW1zLnRvQWRkcmVzcywgZGVzdGluYXRpb25VU0RUVG9rZW5BY2NvdW50KTtcbiAgICAgIHNob3VsZC5lcXVhbCgoaW5zdHJ1Y3Rpb25zRGF0YVsyXSBhcyBUb2tlblRyYW5zZmVyKS5wYXJhbXMuYW1vdW50LCAnMjAwMDAwMDAwMCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzJdIGFzIFRva2VuVHJhbnNmZXIpLnBhcmFtcy50b2tlbk5hbWUsICd0c29sOnVzZHQnKTtcbiAgICAgIHNob3VsZC5lcXVhbCgoaW5zdHJ1Y3Rpb25zRGF0YVsyXSBhcyBUb2tlblRyYW5zZmVyKS5wYXJhbXMuc291cmNlQWRkcmVzcywgc291cmNlVVNEVFRva2VuQWNjb3VudCk7XG5cbiAgICAgIGNvbnN0IHNvbENvaW4gPSBiYXNlY29pbiBhcyBhbnk7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoc29sQ29pbi5nZXREYXRhRnJvbU5vZGUsIDcpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbGVkT25jZShnZXRUU1NTaWduYXR1cmVTcHkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIHNvbCAyMDIyIHRva2VucyB0byByZWNvdmVyeSBkZXN0aW5hdGlvbiB3aXRoIG5vIGV4aXN0aW5nIHRva2VuIGFjY291bnRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZ2V0VFNTU2lnbmF0dXJlU3B5ID0gc2FuZEJveC5zcHkoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJyk7XG5cbiAgICAgIGNvbnN0IHRva2VuVHhuID0gYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIHVzZXJLZXk6IHRlc3REYXRhLndyd1VzZXIudXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLndyd1VzZXIuYml0Z29LZXksXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiB0MjJtaW50QWRkcmVzcyxcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEud3J3VXNlci53YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICBkdXJhYmxlTm9uY2U6IHtcbiAgICAgICAgICBwdWJsaWNLZXk6IHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LFxuICAgICAgICAgIHNlY3JldEtleTogdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQcml2S2V5LFxuICAgICAgICB9LFxuICAgICAgICBwcm9ncmFtSWQ6ICdUb2tlbnpRZEJOYkxxUDVWRWhka0FTNkVQRkxDMVBIbkJxQ1hFcFB4dUViJyxcbiAgICAgIH0pO1xuXG4gICAgICB0b2tlblR4bi5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICB0b2tlblR4bi5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpO1xuICAgICAgdG9rZW5UeG4uc2hvdWxkLmhhc093blByb3BlcnR5KCdzY2FuSW5kZXgnKTtcbiAgICAgIHNob3VsZC5lcXVhbCgodG9rZW5UeG4gYXMgTVBDVHgpLnNjYW5JbmRleCwgMCk7XG5cbiAgICAgIGNvbnN0IHRva2VuVHhuRGVzZXJpYWxpemUgPSBuZXcgVHJhbnNhY3Rpb24oY29pbik7XG4gICAgICB0b2tlblR4bkRlc2VyaWFsaXplLmZyb21SYXdUcmFuc2FjdGlvbigodG9rZW5UeG4gYXMgTVBDVHgpLnNlcmlhbGl6ZWRUeCk7XG4gICAgICBjb25zdCB0b2tlblR4bkpzb24gPSB0b2tlblR4bkRlc2VyaWFsaXplLnRvSnNvbigpO1xuXG4gICAgICBzaG91bGQuZXF1YWwodG9rZW5UeG5Kc29uLm5vbmNlLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEuZHVyYWJsZU5vbmNlQmxvY2toYXNoKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0b2tlblR4bkpzb24uZmVlUGF5ZXIsIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczApO1xuICAgICAgc2hvdWxkLmVxdWFsKHRva2VuVHhuSnNvbi5udW1TaWduYXR1cmVzLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEuZHVyYWJsZU5vbmNlU2lnbmF0dXJlcyk7XG5cbiAgICAgIGNvbnN0IGluc3RydWN0aW9uc0RhdGEgPSB0b2tlblR4bkpzb24uaW5zdHJ1Y3Rpb25zRGF0YSBhcyBJbnN0cnVjdGlvblBhcmFtc1tdO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGEubGVuZ3RoLCAzKTtcbiAgICAgIHNob3VsZC5lcXVhbChpbnN0cnVjdGlvbnNEYXRhWzBdLnR5cGUsICdOb25jZUFkdmFuY2UnKTtcblxuICAgICAgY29uc3QgZGVzdGluYXRpb25Ub2tlbkFjY291bnQgPSBhd2FpdCBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyhcbiAgICAgICAgdDIybWludEFkZHJlc3MsXG4gICAgICAgIHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXlcbiAgICAgICk7XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YVsxXS50eXBlLCAnQ3JlYXRlQXNzb2NpYXRlZFRva2VuQWNjb3VudCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzFdIGFzIEF0YUluaXQpLnBhcmFtcy5taW50QWRkcmVzcywgdDIybWludEFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzFdIGFzIEF0YUluaXQpLnBhcmFtcy5hdGFBZGRyZXNzLCBkZXN0aW5hdGlvblRva2VuQWNjb3VudCk7XG4gICAgICBzaG91bGQuZXF1YWwoKGluc3RydWN0aW9uc0RhdGFbMV0gYXMgQXRhSW5pdCkucGFyYW1zLm93bmVyQWRkcmVzcywgdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleSk7XG4gICAgICBzaG91bGQuZXF1YWwoKGluc3RydWN0aW9uc0RhdGFbMV0gYXMgQXRhSW5pdCkucGFyYW1zLnRva2VuTmFtZSwgJ3Rzb2w6dDIybWludCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzFdIGFzIEF0YUluaXQpLnBhcmFtcy5wYXllckFkZHJlc3MsIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczApO1xuXG4gICAgICBjb25zdCBzb3VyY2VUb2tlbkFjY291bnQgPSBhd2FpdCBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyhcbiAgICAgICAgdDIybWludEFkZHJlc3MsXG4gICAgICAgIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczBcbiAgICAgICk7XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YVsyXS50eXBlLCAnVG9rZW5UcmFuc2ZlcicpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzJdIGFzIFRva2VuVHJhbnNmZXIpLnBhcmFtcy5mcm9tQWRkcmVzcywgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMCk7XG4gICAgICBzaG91bGQuZXF1YWwoKGluc3RydWN0aW9uc0RhdGFbMl0gYXMgVG9rZW5UcmFuc2ZlcikucGFyYW1zLnRvQWRkcmVzcywgZGVzdGluYXRpb25Ub2tlbkFjY291bnQpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzJdIGFzIFRva2VuVHJhbnNmZXIpLnBhcmFtcy5hbW91bnQsICcyMDAwMDAwMDAwJyk7XG4gICAgICBzaG91bGQuZXF1YWwoKGluc3RydWN0aW9uc0RhdGFbMl0gYXMgVG9rZW5UcmFuc2ZlcikucGFyYW1zLnRva2VuTmFtZSwgJ3Rzb2w6dDIybWludCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzJdIGFzIFRva2VuVHJhbnNmZXIpLnBhcmFtcy5zb3VyY2VBZGRyZXNzLCBzb3VyY2VUb2tlbkFjY291bnQpO1xuICAgICAgc2hvdWxkLmVxdWFsKFxuICAgICAgICAoaW5zdHJ1Y3Rpb25zRGF0YVsyXSBhcyBUb2tlblRyYW5zZmVyKS5wYXJhbXMucHJvZ3JhbUlkLFxuICAgICAgICAnVG9rZW56UWRCTmJMcVA1VkVoZGtBUzZFUEZMQzFQSG5CcUNYRXBQeHVFYidcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHNvbENvaW4gPSBiYXNlY29pbiBhcyBhbnk7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoc29sQ29pbi5nZXREYXRhRnJvbU5vZGUsIDcpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbGVkT25jZShnZXRUU1NTaWduYXR1cmVTcHkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIHNvbCB0b2tlbnMgdG8gcmVjb3ZlcnkgZGVzdGluYXRpb24gd2l0aCBleGlzdGluZyB0b2tlbiBhY2NvdW50cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGdldFRTU1NpZ25hdHVyZVNweSA9IHNhbmRCb3guc3B5KEVERFNBTWV0aG9kcywgJ2dldFRTU1NpZ25hdHVyZScpO1xuXG4gICAgICBjb25zdCB0b2tlblR4biA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXIoe1xuICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS53cndVc2VyLnVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEud3J3VXNlci5iYWNrdXBLZXksXG4gICAgICAgIGJpdGdvS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJpdGdvS2V5LFxuICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5rZXlzLmRlc3RpbmF0aW9uUHViS2V5MixcbiAgICAgICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IHVzZHRNaW50QWRkcmVzcyxcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEud3J3VXNlci53YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICBkdXJhYmxlTm9uY2U6IHtcbiAgICAgICAgICBwdWJsaWNLZXk6IHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LFxuICAgICAgICAgIHNlY3JldEtleTogdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQcml2S2V5LFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHRva2VuVHhuLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIHRva2VuVHhuLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2VyaWFsaXplZFR4Jyk7XG4gICAgICB0b2tlblR4bi5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NjYW5JbmRleCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKCh0b2tlblR4biBhcyBNUENUeCkuc2NhbkluZGV4LCAwKTtcblxuICAgICAgY29uc3QgdG9rZW5UeG5EZXNlcmlhbGl6ZSA9IG5ldyBUcmFuc2FjdGlvbihjb2luKTtcbiAgICAgIHRva2VuVHhuRGVzZXJpYWxpemUuZnJvbVJhd1RyYW5zYWN0aW9uKCh0b2tlblR4biBhcyBNUENUeCkuc2VyaWFsaXplZFR4KTtcbiAgICAgIGNvbnN0IHRva2VuVHhuSnNvbiA9IHRva2VuVHhuRGVzZXJpYWxpemUudG9Kc29uKCk7XG5cbiAgICAgIHNob3VsZC5lcXVhbCh0b2tlblR4bkpzb24ubm9uY2UsIHRlc3REYXRhLlNvbElucHV0RGF0YS5kdXJhYmxlTm9uY2VCbG9ja2hhc2gpO1xuICAgICAgc2hvdWxkLmVxdWFsKHRva2VuVHhuSnNvbi5mZWVQYXllciwgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMCk7XG4gICAgICBzaG91bGQuZXF1YWwodG9rZW5UeG5Kc29uLm51bVNpZ25hdHVyZXMsIHRlc3REYXRhLlNvbElucHV0RGF0YS5kdXJhYmxlTm9uY2VTaWduYXR1cmVzKTtcblxuICAgICAgY29uc3QgaW5zdHJ1Y3Rpb25zRGF0YSA9IHRva2VuVHhuSnNvbi5pbnN0cnVjdGlvbnNEYXRhIGFzIFRva2VuVHJhbnNmZXJbXTtcbiAgICAgIHNob3VsZC5lcXVhbChpbnN0cnVjdGlvbnNEYXRhLmxlbmd0aCwgMik7XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YVswXS50eXBlLCAnTm9uY2VBZHZhbmNlJyk7XG5cbiAgICAgIGNvbnN0IHNvdXJjZVVTRFRUb2tlbkFjY291bnQgPSBhd2FpdCBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyhcbiAgICAgICAgdXNkdE1pbnRBZGRyZXNzLFxuICAgICAgICB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MwXG4gICAgICApO1xuICAgICAgY29uc3QgZGVzdGluYXRpb25VU0RUVG9rZW5BY2NvdW50ID0gYXdhaXQgZ2V0QXNzb2NpYXRlZFRva2VuQWNjb3VudEFkZHJlc3MoXG4gICAgICAgIHVzZHRNaW50QWRkcmVzcyxcbiAgICAgICAgdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleTJcbiAgICAgICk7XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YVsxXS50eXBlLCAnVG9rZW5UcmFuc2ZlcicpO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGFbMV0ucGFyYW1zLmZyb21BZGRyZXNzLCB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MwKTtcbiAgICAgIHNob3VsZC5lcXVhbChpbnN0cnVjdGlvbnNEYXRhWzFdLnBhcmFtcy50b0FkZHJlc3MsIGRlc3RpbmF0aW9uVVNEVFRva2VuQWNjb3VudCk7XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YVsxXS5wYXJhbXMuYW1vdW50LCAnMjAwMDAwMDAwMCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGFbMV0ucGFyYW1zLnRva2VuTmFtZSwgJ3Rzb2w6dXNkdCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGFbMV0ucGFyYW1zLnNvdXJjZUFkZHJlc3MsIHNvdXJjZVVTRFRUb2tlbkFjY291bnQpO1xuXG4gICAgICBjb25zdCBzb2xDb2luID0gYmFzZWNvaW4gYXMgYW55O1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KHNvbENvaW4uZ2V0RGF0YUZyb21Ob2RlLCA3KTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxlZE9uY2UoZ2V0VFNTU2lnbmF0dXJlU3B5KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVjb3ZlciBzb2wgMjAyMiB0b2tlbnMgdG8gcmVjb3ZlcnkgZGVzdGluYXRpb24gd2l0aCBleGlzdGluZyB0b2tlbiBhY2NvdW50cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGdldFRTU1NpZ25hdHVyZVNweSA9IHNhbmRCb3guc3B5KEVERFNBTWV0aG9kcywgJ2dldFRTU1NpZ25hdHVyZScpO1xuXG4gICAgICBjb25zdCB0b2tlblR4biA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXIoe1xuICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS53cndVc2VyLnVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEud3J3VXNlci5iYWNrdXBLZXksXG4gICAgICAgIGJpdGdvS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJpdGdvS2V5LFxuICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5rZXlzLmRlc3RpbmF0aW9uUHViS2V5MixcbiAgICAgICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IHQyMm1pbnRBZGRyZXNzLFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS53cndVc2VyLndhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIGR1cmFibGVOb25jZToge1xuICAgICAgICAgIHB1YmxpY0tleTogdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQdWJLZXksXG4gICAgICAgICAgc2VjcmV0S2V5OiB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVByaXZLZXksXG4gICAgICAgIH0sXG4gICAgICAgIHByb2dyYW1JZDogVE9LRU5fMjAyMl9QUk9HUkFNX0lELnRvU3RyaW5nKCksXG4gICAgICB9KTtcblxuICAgICAgdG9rZW5UeG4uc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgdG9rZW5UeG4uc2hvdWxkLmhhc093blByb3BlcnR5KCdzZXJpYWxpemVkVHgnKTtcbiAgICAgIHRva2VuVHhuLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2NhbkluZGV4Jyk7XG4gICAgICBzaG91bGQuZXF1YWwoKHRva2VuVHhuIGFzIE1QQ1R4KS5zY2FuSW5kZXgsIDApO1xuXG4gICAgICBjb25zdCB0b2tlblR4bkRlc2VyaWFsaXplID0gbmV3IFRyYW5zYWN0aW9uKGNvaW4pO1xuICAgICAgdG9rZW5UeG5EZXNlcmlhbGl6ZS5mcm9tUmF3VHJhbnNhY3Rpb24oKHRva2VuVHhuIGFzIE1QQ1R4KS5zZXJpYWxpemVkVHgpO1xuICAgICAgY29uc3QgdG9rZW5UeG5Kc29uID0gdG9rZW5UeG5EZXNlcmlhbGl6ZS50b0pzb24oKTtcbiAgICAgIGNvbnNvbGUubG9nKHRva2VuVHhuSnNvbik7XG4gICAgICBzaG91bGQuZXF1YWwodG9rZW5UeG5Kc29uLm5vbmNlLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEuZHVyYWJsZU5vbmNlQmxvY2toYXNoKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0b2tlblR4bkpzb24uZmVlUGF5ZXIsIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczApO1xuICAgICAgc2hvdWxkLmVxdWFsKHRva2VuVHhuSnNvbi5udW1TaWduYXR1cmVzLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEuZHVyYWJsZU5vbmNlU2lnbmF0dXJlcyk7XG5cbiAgICAgIGNvbnN0IGluc3RydWN0aW9uc0RhdGEgPSB0b2tlblR4bkpzb24uaW5zdHJ1Y3Rpb25zRGF0YSBhcyBUb2tlblRyYW5zZmVyW107XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YS5sZW5ndGgsIDIpO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGFbMF0udHlwZSwgJ05vbmNlQWR2YW5jZScpO1xuXG4gICAgICBjb25zdCBzb3VyY2UyMDIyVG9rZW5BY2NvdW50ID0gYXdhaXQgZ2V0QXNzb2NpYXRlZFRva2VuQWNjb3VudEFkZHJlc3MoXG4gICAgICAgIHQyMm1pbnRBZGRyZXNzLFxuICAgICAgICB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MwLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgVE9LRU5fMjAyMl9QUk9HUkFNX0lELnRvU3RyaW5nKClcbiAgICAgICk7XG4gICAgICBjb25zdCBkZXN0aW5hdGlvbjIwMjJUb2tlbkFjY291bnQgPSBhd2FpdCBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyhcbiAgICAgICAgdDIybWludEFkZHJlc3MsXG4gICAgICAgIHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXkyLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgVE9LRU5fMjAyMl9QUk9HUkFNX0lELnRvU3RyaW5nKClcbiAgICAgICk7XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YVsxXS50eXBlLCAnVG9rZW5UcmFuc2ZlcicpO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGFbMV0ucGFyYW1zLmZyb21BZGRyZXNzLCB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MwKTtcbiAgICAgIHNob3VsZC5lcXVhbChpbnN0cnVjdGlvbnNEYXRhWzFdLnBhcmFtcy50b0FkZHJlc3MsIGRlc3RpbmF0aW9uMjAyMlRva2VuQWNjb3VudCk7XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YVsxXS5wYXJhbXMuYW1vdW50LCAnMjAwMDAwMDAwMCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGFbMV0ucGFyYW1zLnRva2VuTmFtZSwgJ3Rzb2w6dDIybWludCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGFbMV0ucGFyYW1zLnNvdXJjZUFkZHJlc3MsIHNvdXJjZTIwMjJUb2tlbkFjY291bnQpO1xuICAgICAgY29uc3Qgc29sQ29pbiA9IGJhc2Vjb2luIGFzIGFueTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChzb2xDb2luLmdldERhdGFGcm9tTm9kZSwgNyk7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsZWRPbmNlKGdldFRTU1NpZ25hdHVyZVNweSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlY292ZXIgc29sIHRva2VucyB0byByZWNvdmVyeSBkZXN0aW5hdGlvbiB3aXRoIGV4aXN0aW5nIHRva2VuIGFjY291bnRzIGZvciB1bnNpZ25lZCBzd2VlcCByZWNvdmVyaWVzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZmVlUmVzcG9uc2UgPSB0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0RmVlc0Zvck1lc3NhZ2VSZXNwb25zZTtcbiAgICAgIGZlZVJlc3BvbnNlLmJvZHkucmVzdWx0LnZhbHVlID0gMTAwMDA7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEZlZUZvck1lc3NhZ2UnLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHNpbm9uLm1hdGNoLnN0cmluZyxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbW1pdG1lbnQ6ICdmaW5hbGl6ZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXMoZmVlUmVzcG9uc2UpO1xuXG4gICAgICBjb25zdCB0b2tlblR4biA9IChhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHtcbiAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLndyd1VzZXIuYml0Z29LZXksXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXkyLFxuICAgICAgICBkdXJhYmxlTm9uY2U6IHtcbiAgICAgICAgICBwdWJsaWNLZXk6IHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LFxuICAgICAgICAgIHNlY3JldEtleTogdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQcml2S2V5LFxuICAgICAgICB9LFxuICAgICAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogdGVzdERhdGEudG9rZW5BZGRyZXNzLlRlc3RVU0RDLFxuICAgICAgfSkpIGFzIE1QQ1N3ZWVwVHhzO1xuXG4gICAgICAvLyAyIHNpZ25hdHVyZXMgYW5kIG5vIHJlbnQgZXhlbXB0aW9uIGZlZSBzaW5jZSB0aGUgZGVzdGluYXRpb24gYWxyZWFkeSBoYXMgdG9rZW4gYWNjb3VudHNcbiAgICAgIGNvbnN0IGV4cGVjdGVkRmVlID0gNTAwMCArIDUwMDA7XG5cbiAgICAgIGNvbnN0IHsgc2VyaWFsaXplZFR4LCBzY2FuSW5kZXgsIGZlZUluZm8sIHBhcnNlZFR4IH0gPSB0b2tlblR4bi50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4O1xuICAgICAgYXNzZXJ0Lm9rKHNlcmlhbGl6ZWRUeCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2NhbkluZGV4LCAwKTtcbiAgICAgIGFzc2VydC5vayhmZWVJbmZvKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChmZWVJbmZvLmZlZVN0cmluZywgZXhwZWN0ZWRGZWUudG9TdHJpbmcoKSk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZmVlSW5mby5mZWUsIGV4cGVjdGVkRmVlKTtcbiAgICAgIGFzc2VydC5vayhwYXJzZWRUeCk7XG4gICAgICBhc3NlcnQub2socGFyc2VkVHguaW5wdXRzIGluc3RhbmNlb2YgQXJyYXkgJiYgcGFyc2VkVHguaW5wdXRzLmxlbmd0aCA9PT0gMSk7XG4gICAgICBhc3NlcnQub2socGFyc2VkVHgub3V0cHV0cyBpbnN0YW5jZW9mIEFycmF5ICYmIHBhcnNlZFR4Lm91dHB1dHMubGVuZ3RoID09PSAxKTtcblxuICAgICAgY29uc3QgdG9rZW5UeG5EZXNlcmlhbGl6ZSA9IG5ldyBUcmFuc2FjdGlvbihjb2luKTtcbiAgICAgIHRva2VuVHhuRGVzZXJpYWxpemUuZnJvbVJhd1RyYW5zYWN0aW9uKHRva2VuVHhuLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguc2VyaWFsaXplZFR4KTtcbiAgICAgIGNvbnN0IHRva2VuVHhuSnNvbiA9IHRva2VuVHhuRGVzZXJpYWxpemUudG9Kc29uKCk7XG5cbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0b2tlblR4bkpzb24ubm9uY2UsIHRlc3REYXRhLlNvbElucHV0RGF0YS5kdXJhYmxlTm9uY2VCbG9ja2hhc2gpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRva2VuVHhuSnNvbi5mZWVQYXllciwgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodG9rZW5UeG5Kc29uLm51bVNpZ25hdHVyZXMsIHRlc3REYXRhLlNvbElucHV0RGF0YS51bnNpZ25lZFN3ZWVwU2lnbmF0dXJlcyk7XG4gICAgICBjb25zdCBzb2xDb2luID0gYmFzZWNvaW4gYXMgYW55O1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KHNvbENvaW4uZ2V0RGF0YUZyb21Ob2RlLCA3KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVjb3ZlciBzb2wgZnVuZHMgZnJvbSBBVEEgYWRkcmVzcyBmb3Igbm9uLWJpdGdvIHJlY292ZXJpZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBnZXRUU1NTaWduYXR1cmVTcHkgPSBzYW5kQm94LnNweShFRERTQU1ldGhvZHMsICdnZXRUU1NTaWduYXR1cmUnKTtcblxuICAgICAgY29uc3QgY2xvc2VBVEFUeG5zID0gYXdhaXQgYmFzZWNvaW4ucmVjb3ZlckNsb3NlQVRBKHtcbiAgICAgICAgdXNlcktleTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLnVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iaXRnb0tleSxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmRlc3RpbmF0aW9uUHViS2V5LFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMud2FsbGV0UGFzc3dvcmQsXG4gICAgICAgIGNsb3NlQXRhQWRkcmVzczogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmNsb3NlQXRhQWRkcmVzcyxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbkF0YUFkZHJlc3M6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5yZWNvdmVyeURlc3RpbmF0aW9uQXRhQWRkcmVzcyxcbiAgICAgIH0pO1xuICAgICAgY2xvc2VBVEFUeG5zLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIHNob3VsZC5lcXVhbChcbiAgICAgICAgY2xvc2VBVEFUeG5zWzBdLnR4SWQsXG4gICAgICAgICcyaWQzWUMyaks5RzVXbzJwaER4NGdKVkFldzhEY1k1TkFvam5WdWFvOHJreHdQWVBlOGNTd0U1R3poRWdKQTJ5OGZWakRFbzZpUjZ5a0J2RHhyVFFydHBiJ1xuICAgICAgKTtcbiAgICAgIHNob3VsZC5lcXVhbChcbiAgICAgICAgY2xvc2VBVEFUeG5zWzFdLnR4SWQsXG4gICAgICAgICc1b1VCZ1hYNGVuR21GRXNwRzY0Z295M1BSeXNqZnJla1pHZzNyWk5rQkhVQ1FGZDQ4MnZyVldiZkRjUllNQkVKdDY1Slh5bWZFUG04TTZkODlYNHhWNzluJ1xuICAgICAgKTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxlZFR3aWNlKGdldFRTU1NpZ25hdHVyZVNweSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHNpZ24gcmVjb3ZlckNsb3NlQVRBIHZpYSBzaWduQW5kR2VuZXJhdGVCcm9hZGNhc3RhYmxlVHJhbnNhY3Rpb24gd2l0aCBNUEN2MSBrZXlzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZ2V0VFNTU2lnbmF0dXJlU3B5ID0gc2FuZEJveC5zcHkoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJyk7XG4gICAgICBjb25zdCBmYWN0b3J5ID0gKGJhc2Vjb2luIGFzIGFueSkuZ2V0QnVpbGRlcigpO1xuICAgICAgY29uc3QgYmxvY2toYXNoID0gdGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEJsb2NraGFzaFJlc3BvbnNlLmJvZHkucmVzdWx0LnZhbHVlLmJsb2NraGFzaDtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0Q2xvc2VBdGFJbml0aWFsaXphdGlvbkJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5ub25jZShibG9ja2hhc2gpO1xuICAgICAgdHhCdWlsZGVyLnNlbmRlcih0ZXN0RGF0YS5jbG9zZUFUQWtleXMuYnM1OEVuY29kZWRQdWJsaWNLZXkpO1xuICAgICAgdHhCdWlsZGVyLmFjY291bnRBZGRyZXNzKHRlc3REYXRhLmNsb3NlQVRBa2V5cy5jbG9zZUF0YUFkZHJlc3MpO1xuICAgICAgdHhCdWlsZGVyLmRlc3RpbmF0aW9uQWRkcmVzcyh0ZXN0RGF0YS5jbG9zZUFUQWtleXMuZGVzdGluYXRpb25QdWJLZXkpO1xuICAgICAgdHhCdWlsZGVyLmF1dGhvcml0eUFkZHJlc3ModGVzdERhdGEuY2xvc2VBVEFrZXlzLmJzNThFbmNvZGVkUHVibGljS2V5KTtcbiAgICAgIHR4QnVpbGRlci5hc3NvY2lhdGVkVG9rZW5BY2NvdW50UmVudCgnMjAzOTI4MCcpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi5zaWduQW5kR2VuZXJhdGVCcm9hZGNhc3RhYmxlVHJhbnNhY3Rpb24oXG4gICAgICAgIHtcbiAgICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMudXNlcktleSxcbiAgICAgICAgICBiYWNrdXBLZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iYWNrdXBLZXksXG4gICAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iaXRnb0tleSxcbiAgICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLndhbGxldFBhc3N3b3JkLFxuICAgICAgICAgIGNsb3NlQXRhQWRkcmVzczogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmNsb3NlQXRhQWRkcmVzcyxcbiAgICAgICAgfSxcbiAgICAgICAgdHhCdWlsZGVyLFxuICAgICAgICB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuYnM1OEVuY29kZWRQdWJsaWNLZXksXG4gICAgICAgIGZhbHNlXG4gICAgICApO1xuXG4gICAgICByZXN1bHQuc2hvdWxkLmhhc093blByb3BlcnR5KCdzZXJpYWxpemVkVHgnKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NjYW5JbmRleCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKHJlc3VsdC5zY2FuSW5kZXgsIDApO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbGVkT25jZShnZXRUU1NTaWduYXR1cmVTcHkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIHRva2VucyBmcm9tIGEgbmVzdGVkIEFUQSAoQVRBIHdob3NlIG93bmVyIGlzIGFub3RoZXIgQVRBKScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXJOZXN0ZWRBdGEoe1xuICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMudXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuYmFja3VwS2V5LFxuICAgICAgICBiaXRnb0tleTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmJpdGdvS2V5LFxuICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2U6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy53YWxsZXRQYXNzd29yZCxcbiAgICAgICAgbmVzdGVkQXRhQWRkcmVzczogJ0ZHdVpTQmh0cmVxU1VzRTg2eG9reWpLejJpOFZCdEp6eTZ1TVhYS3lHSHVnJyxcbiAgICAgICAgb3duZXJBdGFBZGRyZXNzOiAnWmZtOThacFZhZnlkaEZUWWNzWTZiSGd1YmhCNGNGZ1dGdmJkRUp4WWhUQScsXG4gICAgICAgIHRva2VuTWludEFkZHJlc3M6ICdaQkNOcHVEN1lNWHpUSEIyZmhHa0dpNzhNTnNIR0xSWFVoUmV3TlJtOVJVJyxcbiAgICAgIH0pO1xuXG4gICAgICByZXN1bHQuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgc2hvdWxkLmVxdWFsKFxuICAgICAgICByZXN1bHQudHhJZCxcbiAgICAgICAgJzJpZDNZQzJqSzlHNVdvMnBoRHg0Z0pWQWV3OERjWTVOQW9qblZ1YW84cmt4d1BZUGU4Y1N3RTVHemhFZ0pBMnk4ZlZqREVvNmlSNnlrQnZEeHJUUXJ0cGInXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIG5lc3RlZEF0YUFkZHJlc3MgaXMgbWlzc2luZyBmb3IgcmVjb3Zlck5lc3RlZEF0YScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC5yZWNvdmVyTmVzdGVkQXRhKHtcbiAgICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMudXNlcktleSxcbiAgICAgICAgICBiYWNrdXBLZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iYWNrdXBLZXksXG4gICAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iaXRnb0tleSxcbiAgICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLndhbGxldFBhc3N3b3JkLFxuICAgICAgICAgIG93bmVyQXRhQWRkcmVzczogJ1pmbTk4WnBWYWZ5ZGhGVFljc1k2YkhndWJoQjRjRmdXRnZiZEVKeFloVEEnLFxuICAgICAgICAgIHRva2VuTWludEFkZHJlc3M6ICdaQkNOcHVEN1lNWHpUSEIyZmhHa0dpNzhNTnNIR0xSWFVoUmV3TlJtOVJVJyxcbiAgICAgICAgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ2ludmFsaWQgbmVzdGVkQXRhQWRkcmVzcycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIG93bmVyQXRhQWRkcmVzcyBpcyBtaXNzaW5nIGZvciByZWNvdmVyTmVzdGVkQXRhJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnJlY292ZXJOZXN0ZWRBdGEoe1xuICAgICAgICAgIHVzZXJLZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy51c2VyS2V5LFxuICAgICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmJhY2t1cEtleSxcbiAgICAgICAgICBiaXRnb0tleTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmJpdGdvS2V5LFxuICAgICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5kZXN0aW5hdGlvblB1YktleSxcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMud2FsbGV0UGFzc3dvcmQsXG4gICAgICAgICAgbmVzdGVkQXRhQWRkcmVzczogJ0ZHdVpTQmh0cmVxU1VzRTg2eG9reWpLejJpOFZCdEp6eTZ1TVhYS3lHSHVnJyxcbiAgICAgICAgICB0b2tlbk1pbnRBZGRyZXNzOiAnWkJDTnB1RDdZTVh6VEhCMmZoR2tHaTc4TU5zSEdMUlhVaFJld05SbTlSVScsXG4gICAgICAgIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdpbnZhbGlkIG93bmVyQXRhQWRkcmVzcycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIHRva2VuTWludEFkZHJlc3MgaXMgbWlzc2luZyBmb3IgcmVjb3Zlck5lc3RlZEF0YScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC5yZWNvdmVyTmVzdGVkQXRhKHtcbiAgICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMudXNlcktleSxcbiAgICAgICAgICBiYWNrdXBLZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iYWNrdXBLZXksXG4gICAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iaXRnb0tleSxcbiAgICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLndhbGxldFBhc3N3b3JkLFxuICAgICAgICAgIG5lc3RlZEF0YUFkZHJlc3M6ICdGR3VaU0JodHJlcVNVc0U4Nnhva3lqS3oyaThWQnRKenk2dU1YWEt5R0h1ZycsXG4gICAgICAgICAgb3duZXJBdGFBZGRyZXNzOiAnWmZtOThacFZhZnlkaEZUWWNzWTZiSGd1YmhCNGNGZ1dGdmJkRUp4WWhUQScsXG4gICAgICAgIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdpbnZhbGlkIHRva2VuTWludEFkZHJlc3MnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1JlY292ZXIgVHJhbnNhY3Rpb25zIChNUEN2Mik6JywgKCkgPT4ge1xuICAgIGNvbnN0IG1wY1YyU2FuZEJveCA9IHNpbm9uLmNyZWF0ZVNhbmRib3goKTtcbiAgICBjb25zdCB1c2R0TWludEFkZHJlc3MgPSAnOWNncEJlTloySG5MZGE3TldhYVUxaTNOeVRzdGsyYzR6Q01VY29BR3NpOUMnO1xuICAgIGNvbnN0IHQyMm1pbnRBZGRyZXNzID0gJzVOUjFiUXdMV3FqYmtoYlExaHg3MkhLSnliYnV2d2tEblVaTm9BWjJWaFc2JztcbiAgICBjb25zdCB0b2tlbjIyUHJvZ3JhbUlkID0gJ1Rva2VuelFkQk5iTHFQNVZFaGRrQVM2RVBGTEMxUEhuQnFDWEVwUHh1RWInO1xuICAgIGxldCBjYWxsQmFjazogc2lub24uU2lub25TdHViO1xuICAgIGxldCBtcGNWMlVzZXJLZXk6IHN0cmluZztcbiAgICBsZXQgbXBjVjJCYWNrdXBLZXk6IHN0cmluZztcbiAgICBsZXQgbXBjVjJDb21tb25LZXlDaGFpbjogc3RyaW5nO1xuICAgIGxldCBtcGNWMldhbGxldEFkZHJlc3M6IHN0cmluZztcbiAgICBsZXQgbXBjVjJUb2tlblVzZXJLZXk6IHN0cmluZztcbiAgICBsZXQgbXBjVjJUb2tlbkJhY2t1cEtleTogc3RyaW5nO1xuICAgIGxldCBtcGNWMlRva2VuQ29tbW9uS2V5Q2hhaW46IHN0cmluZztcbiAgICBsZXQgbXBjVjJUb2tlbldhbGxldEFkZHJlc3M6IHN0cmluZztcbiAgICBsZXQgbWlzbWF0Y2hlZEJpdGdvS2V5OiBzdHJpbmc7XG4gICAgbGV0IG1pc21hdGNoZWRXYWxsZXRBZGRyZXNzOiBzdHJpbmc7XG4gICAgbGV0IG1wY1YyUmVjb3ZlclBhcmFtczogU29sUmVjb3ZlcnlPcHRpb25zO1xuICAgIGxldCBtcGNWMlRva2VuUmVjb3ZlclBhcmFtczogU29sUmVjb3ZlcnlPcHRpb25zO1xuICAgIGxldCBjbG9zZUF0YU1wY1YyUGFyYW1zOiBTb2xSZWNvdmVyeU9wdGlvbnM7XG5cbiAgICBiZWZvcmUoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgW3VzZXJEa2csIGJhY2t1cERrZ10gPSBhd2FpdCBNUFNVdGlsLmdlbmVyYXRlRWREc2FES0dLZXlTaGFyZXMoKTtcbiAgICAgIGNvbnN0IFt0b2tlblVzZXJEa2csIHRva2VuQmFja3VwRGtnXSA9IGF3YWl0IE1QU1V0aWwuZ2VuZXJhdGVFZERzYURLR0tleVNoYXJlcygpO1xuICAgICAgY29uc3QgW290aGVyVXNlckRrZ10gPSBhd2FpdCBNUFNVdGlsLmdlbmVyYXRlRWREc2FES0dLZXlTaGFyZXMoKTtcbiAgICAgIGNvbnN0IHdhbGxldFBhc3NwaHJhc2UgPSB0ZXN0RGF0YS5rZXlzLndhbGxldFBhc3N3b3JkO1xuXG4gICAgICBtcGNWMlVzZXJLZXkgPSBhd2FpdCBlbmNyeXB0KHdhbGxldFBhc3NwaHJhc2UsIHVzZXJEa2cuZ2V0UmVkdWNlZEtleVNoYXJlKCkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgICAgIG1wY1YyQmFja3VwS2V5ID0gYXdhaXQgZW5jcnlwdCh3YWxsZXRQYXNzcGhyYXNlLCBiYWNrdXBEa2cuZ2V0UmVkdWNlZEtleVNoYXJlKCkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgICAgIG1wY1YyQ29tbW9uS2V5Q2hhaW4gPSB1c2VyRGtnLmdldENvbW1vbktleWNoYWluKCk7XG4gICAgICBjb25zdCBtcGMgPSBhd2FpdCBFRERTQU1ldGhvZHMuZ2V0SW5pdGlhbGl6ZWRNcGNJbnN0YW5jZSgpO1xuICAgICAgbXBjVjJXYWxsZXRBZGRyZXNzID0gbmV3IEtleVBhaXIoe1xuICAgICAgICBwdWI6IG1wYy5kZXJpdmVVbmhhcmRlbmVkKG1wY1YyQ29tbW9uS2V5Q2hhaW4sICdtLzAnKS5zbGljZSgwLCA2NCksXG4gICAgICB9KS5nZXRBZGRyZXNzKCk7XG4gICAgICBtaXNtYXRjaGVkQml0Z29LZXkgPSBvdGhlclVzZXJEa2cuZ2V0Q29tbW9uS2V5Y2hhaW4oKTtcbiAgICAgIG1pc21hdGNoZWRXYWxsZXRBZGRyZXNzID0gbmV3IEtleVBhaXIoe1xuICAgICAgICBwdWI6IG1wYy5kZXJpdmVVbmhhcmRlbmVkKG1pc21hdGNoZWRCaXRnb0tleSwgJ20vMCcpLnNsaWNlKDAsIDY0KSxcbiAgICAgIH0pLmdldEFkZHJlc3MoKTtcblxuICAgICAgbXBjVjJUb2tlblVzZXJLZXkgPSBhd2FpdCBlbmNyeXB0KHdhbGxldFBhc3NwaHJhc2UsIHRva2VuVXNlckRrZy5nZXRSZWR1Y2VkS2V5U2hhcmUoKS50b1N0cmluZygnYmFzZTY0JykpO1xuICAgICAgbXBjVjJUb2tlbkJhY2t1cEtleSA9IGF3YWl0IGVuY3J5cHQod2FsbGV0UGFzc3BocmFzZSwgdG9rZW5CYWNrdXBEa2cuZ2V0UmVkdWNlZEtleVNoYXJlKCkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgICAgIG1wY1YyVG9rZW5Db21tb25LZXlDaGFpbiA9IHRva2VuVXNlckRrZy5nZXRDb21tb25LZXljaGFpbigpO1xuICAgICAgbXBjVjJUb2tlbldhbGxldEFkZHJlc3MgPSBuZXcgS2V5UGFpcih7XG4gICAgICAgIHB1YjogbXBjLmRlcml2ZVVuaGFyZGVuZWQobXBjVjJUb2tlbkNvbW1vbktleUNoYWluLCAnbS8wJykuc2xpY2UoMCwgNjQpLFxuICAgICAgfSkuZ2V0QWRkcmVzcygpO1xuXG4gICAgICBtcGNWMlJlY292ZXJQYXJhbXMgPSB7XG4gICAgICAgIHVzZXJLZXk6IG1wY1YyVXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiBtcGNWMkJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IG1wY1YyQ29tbW9uS2V5Q2hhaW4sXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICB9O1xuICAgICAgbXBjVjJUb2tlblJlY292ZXJQYXJhbXMgPSB7XG4gICAgICAgIHVzZXJLZXk6IG1wY1YyVG9rZW5Vc2VyS2V5LFxuICAgICAgICBiYWNrdXBLZXk6IG1wY1YyVG9rZW5CYWNrdXBLZXksXG4gICAgICAgIGJpdGdvS2V5OiBtcGNWMlRva2VuQ29tbW9uS2V5Q2hhaW4sXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiB1c2R0TWludEFkZHJlc3MsXG4gICAgICAgIGR1cmFibGVOb25jZToge1xuICAgICAgICAgIHB1YmxpY0tleTogdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQdWJLZXksXG4gICAgICAgICAgc2VjcmV0S2V5OiB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVByaXZLZXksXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgY2xvc2VBdGFNcGNWMlBhcmFtcyA9IHtcbiAgICAgICAgdXNlcktleTogbXBjVjJVc2VyS2V5LFxuICAgICAgICBiYWNrdXBLZXk6IG1wY1YyQmFja3VwS2V5LFxuICAgICAgICBiaXRnb0tleTogbXBjVjJDb21tb25LZXlDaGFpbixcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmRlc3RpbmF0aW9uUHViS2V5LFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICBjbG9zZUF0YUFkZHJlc3M6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5jbG9zZUF0YUFkZHJlc3MsXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb25BdGFBZGRyZXNzOiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMucmVjb3ZlcnlEZXN0aW5hdGlvbkF0YUFkZHJlc3MsXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICBjYWxsQmFjayA9IG1wY1YyU2FuZEJveC5zdHViKFNvbC5wcm90b3R5cGUsICdnZXREYXRhRnJvbU5vZGUnIGFzIGtleW9mIFNvbCk7XG5cbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDogeyBpZDogJzEnLCBqc29ucnBjOiAnMi4wJywgbWV0aG9kOiAnZ2V0TGF0ZXN0QmxvY2toYXNoJywgcGFyYW1zOiBbeyBjb21taXRtZW50OiAnZmluYWxpemVkJyB9XSB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEJsb2NraGFzaFJlc3BvbnNlKTtcblxuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7IGlkOiAnMScsIGpzb25ycGM6ICcyLjAnLCBtZXRob2Q6ICdnZXRCYWxhbmNlJywgcGFyYW1zOiBbbXBjVjJXYWxsZXRBZGRyZXNzXSB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2UpO1xuXG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEZlZUZvck1lc3NhZ2UnLFxuICAgICAgICAgICAgcGFyYW1zOiBbc2lub24ubWF0Y2guc3RyaW5nLCB7IGNvbW1pdG1lbnQ6ICdmaW5hbGl6ZWQnIH1dLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0RmVlc0Zvck1lc3NhZ2VSZXNwb25zZSk7XG5cbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7IHBheWxvYWQ6IHsgaWQ6ICcxJywganNvbnJwYzogJzIuMCcsIG1ldGhvZDogJ2dldE1pbmltdW1CYWxhbmNlRm9yUmVudEV4ZW1wdGlvbicsIHBhcmFtczogWzE2NV0gfSB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldE1pbmltdW1CYWxhbmNlRm9yUmVudEV4ZW1wdGlvblJlc3BvbnNlKTtcblxuICAgICAgbXBjVjJTYW5kQm94LnN0dWIoVHJhbnNhY3Rpb24ucHJvdG90eXBlLCAndG9Ccm9hZGNhc3RGb3JtYXQnKS5yZXR1cm5zKCdzdHViLXNlcmlhbGl6ZWQtdHgnKTtcbiAgICB9KTtcblxuICAgIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgICBtcGNWMlNhbmRCb3gucmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByb3V0ZSB0byBNUEN2MiBwYXRoIGZvciBuYXRpdmUgU09MIHJlY292ZXJ5IHdoZW4ga2V5Y2FyZCBpcyBNUEN2MicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGdldFRTU1NpZ25hdHVyZVNweSA9IG1wY1YyU2FuZEJveC5zcHkoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJyk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXIobXBjVjJSZWNvdmVyUGFyYW1zKTtcblxuICAgICAgcmVzdWx0LnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpO1xuICAgICAgcmVzdWx0LnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2NhbkluZGV4Jyk7XG4gICAgICBzaG91bGQuZXF1YWwoKHJlc3VsdCBhcyBNUENUeCkuc2NhbkluZGV4LCAwKTtcbiAgICAgIHNob3VsZC5lcXVhbChcbiAgICAgICAgY2FsbEJhY2suZ2V0Q2FsbHMoKS5maW5kKChjYWxsKSA9PiBjYWxsLmFyZ3NbMF0/LnBheWxvYWQ/Lm1ldGhvZCA9PT0gJ2dldEJhbGFuY2UnKT8uYXJnc1swXS5wYXlsb2FkLnBhcmFtc1swXSxcbiAgICAgICAgbXBjVjJXYWxsZXRBZGRyZXNzXG4gICAgICApO1xuICAgICAgbXBjVjJTYW5kQm94LmFzc2VydC5ub3RDYWxsZWQoZ2V0VFNTU2lnbmF0dXJlU3B5KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgd2hlbiBNUEN2MiBjb21tb25LZXlDaGFpbiBkb2VzIG5vdCBtYXRjaCBiaXRnb0tleScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7IHBheWxvYWQ6IHsgaWQ6ICcxJywganNvbnJwYzogJzIuMCcsIG1ldGhvZDogJ2dldEJhbGFuY2UnLCBwYXJhbXM6IFttaXNtYXRjaGVkV2FsbGV0QWRkcmVzc10gfSB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2UpO1xuXG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAucmVjb3Zlcih7IC4uLm1wY1YyUmVjb3ZlclBhcmFtcywgYml0Z29LZXk6IG1pc21hdGNoZWRCaXRnb0tleSB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnRWREU0EgTVBDdjIgcmVjb3Zlcnk6IGNvbW1vbktleUNoYWluIGZyb20ga2V5Y2FyZCBkb2VzIG5vdCBtYXRjaCBiaXRnb0tleScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByb3V0ZSB0byBNUEN2MiBwYXRoIGZvciBTUEwgdG9rZW4gcmVjb3Zlcnkgd2hlbiBrZXljYXJkIGlzIE1QQ3YyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHsgcGF5bG9hZDogeyBpZDogJzEnLCBqc29ucnBjOiAnMi4wJywgbWV0aG9kOiAnZ2V0QmFsYW5jZScsIHBhcmFtczogW21wY1YyVG9rZW5XYWxsZXRBZGRyZXNzXSB9IH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEJhbGFuY2VSZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldFRva2VuQWNjb3VudHNCeU93bmVyJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICBtcGNWMlRva2VuV2FsbGV0QWRkcmVzcyxcbiAgICAgICAgICAgICAgeyBwcm9ncmFtSWQ6ICdUb2tlbmtlZ1FmZVp5aU53QUpiTmJHS1BGWENXdUJ2ZjlTczYyM1ZRNURBJyB9LFxuICAgICAgICAgICAgICB7IGVuY29kaW5nOiAnanNvblBhcnNlZCcgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lclJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgICAgICAgIHsgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScgfSxcbiAgICAgICAgICAgICAgeyBlbmNvZGluZzogJ2pzb25QYXJzZWQnIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0VG9rZW5BY2NvdW50c0J5T3duZXJSZXNwb25zZU5vQWNjb3VudHMpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRBY2NvdW50SW5mbycsXG4gICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVB1YktleSwgeyBlbmNvZGluZzogJ2pzb25QYXJzZWQnIH1dLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEluZm9SZXNwb25zZSk7XG5cbiAgICAgIGNvbnN0IGdldFRTU1NpZ25hdHVyZVNweSA9IG1wY1YyU2FuZEJveC5zcHkoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJyk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXIobXBjVjJUb2tlblJlY292ZXJQYXJhbXMpO1xuXG4gICAgICByZXN1bHQuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgcmVzdWx0LnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2VyaWFsaXplZFR4Jyk7XG4gICAgICByZXN1bHQuc2hvdWxkLmhhc093blByb3BlcnR5KCdzY2FuSW5kZXgnKTtcbiAgICAgIHNob3VsZC5lcXVhbCgocmVzdWx0IGFzIE1QQ1R4KS5zY2FuSW5kZXgsIDApO1xuICAgICAgbXBjVjJTYW5kQm94LmFzc2VydC5ub3RDYWxsZWQoZ2V0VFNTU2lnbmF0dXJlU3B5KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcm91dGUgdG8gTVBDdjIgcGF0aCBmb3IgVG9rZW4tMjAyMiByZWNvdmVyeSBhbmQgcHJlc2VydmUgcHJvZ3JhbUlkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHsgcGF5bG9hZDogeyBpZDogJzEnLCBqc29ucnBjOiAnMi4wJywgbWV0aG9kOiAnZ2V0QmFsYW5jZScsIHBhcmFtczogW21wY1YyVG9rZW5XYWxsZXRBZGRyZXNzXSB9IH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEJhbGFuY2VSZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldFRva2VuQWNjb3VudHNCeU93bmVyJyxcbiAgICAgICAgICAgIHBhcmFtczogW21wY1YyVG9rZW5XYWxsZXRBZGRyZXNzLCB7IHByb2dyYW1JZDogdG9rZW4yMlByb2dyYW1JZCB9LCB7IGVuY29kaW5nOiAnanNvblBhcnNlZCcgfV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lckZvclNvbDIwMjJSZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldFRva2VuQWNjb3VudHNCeU93bmVyJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Rlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXksIHsgcHJvZ3JhbUlkOiB0b2tlbjIyUHJvZ3JhbUlkIH0sIHsgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyB9XSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyUmVzcG9uc2VOb0FjY291bnRzKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QWNjb3VudEluZm8nLFxuICAgICAgICAgICAgcGFyYW1zOiBbdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQdWJLZXksIHsgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyB9XSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRJbmZvUmVzcG9uc2UpO1xuXG4gICAgICBjb25zdCBnZXRUU1NTaWduYXR1cmVTcHkgPSBtcGNWMlNhbmRCb3guc3B5KEVERFNBTWV0aG9kcywgJ2dldFRTU1NpZ25hdHVyZScpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHtcbiAgICAgICAgLi4ubXBjVjJUb2tlblJlY292ZXJQYXJhbXMsXG4gICAgICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiB0MjJtaW50QWRkcmVzcyxcbiAgICAgICAgcHJvZ3JhbUlkOiB0b2tlbjIyUHJvZ3JhbUlkLFxuICAgICAgfSk7XG5cbiAgICAgIHJlc3VsdC5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICByZXN1bHQuc2hvdWxkLmhhc093blByb3BlcnR5KCdzZXJpYWxpemVkVHgnKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NjYW5JbmRleCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKChyZXN1bHQgYXMgTVBDVHgpLnNjYW5JbmRleCwgMCk7XG4gICAgICBtcGNWMlNhbmRCb3guYXNzZXJ0Lm5vdENhbGxlZChnZXRUU1NTaWduYXR1cmVTcHkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBhcHBseSBkdXJhYmxlIG5vbmNlIGFjY291bnQgc2lnbmF0dXJlIHdoZW4ga2V5Y2FyZCBpcyBNUEN2MicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QWNjb3VudEluZm8nLFxuICAgICAgICAgICAgcGFyYW1zOiBbdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQdWJLZXksIHsgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyB9XSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRJbmZvUmVzcG9uc2UpO1xuXG4gICAgICBjb25zdCBnZXRUU1NTaWduYXR1cmVTcHkgPSBtcGNWMlNhbmRCb3guc3B5KEVERFNBTWV0aG9kcywgJ2dldFRTU1NpZ25hdHVyZScpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHtcbiAgICAgICAgLi4ubXBjVjJSZWNvdmVyUGFyYW1zLFxuICAgICAgICBkdXJhYmxlTm9uY2U6IHtcbiAgICAgICAgICBwdWJsaWNLZXk6IHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LFxuICAgICAgICAgIHNlY3JldEtleTogdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQcml2S2V5LFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHJlc3VsdC5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICByZXN1bHQuc2hvdWxkLmhhc093blByb3BlcnR5KCdzZXJpYWxpemVkVHgnKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NjYW5JbmRleCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKChyZXN1bHQgYXMgTVBDVHgpLnNjYW5JbmRleCwgMCk7XG4gICAgICBtcGNWMlNhbmRCb3guYXNzZXJ0Lm5vdENhbGxlZChnZXRUU1NTaWduYXR1cmVTcHkpO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3JlY292ZXJDbG9zZUFUQScsICgpID0+IHtcbiAgICAgIGNvbnN0IHplcm9Ub2tlbkluZm9SZXNwb25zZSA9IF8uY2xvbmVEZWVwKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkluZm9SZXNwb25zZSk7XG4gICAgICB6ZXJvVG9rZW5JbmZvUmVzcG9uc2UuYm9keS5yZXN1bHQudmFsdWUuZGF0YS5wYXJzZWQuaW5mby50b2tlbkFtb3VudC5hbW91bnQgPSAnMCc7XG5cbiAgICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgICBjYWxsQmFja1xuICAgICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgICBtZXRob2Q6ICdnZXRCYWxhbmNlJyxcbiAgICAgICAgICAgICAgcGFyYW1zOiBbdGVzdERhdGEuY2xvc2VBVEFrZXlzLmNsb3NlQXRhQWRkcmVzc10sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50QmFsYW5jZVJlc3BvbnNlTTJEZXJpdmF0aW9uKTtcblxuICAgICAgICBjYWxsQmFja1xuICAgICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgICBtZXRob2Q6ICdnZXRCYWxhbmNlJyxcbiAgICAgICAgICAgICAgcGFyYW1zOiBzaW5vbi5tYXRjaCgoYWRkcmVzczogc3RyaW5nKSA9PiBhZGRyZXNzICE9PSB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuY2xvc2VBdGFBZGRyZXNzKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2UpO1xuXG4gICAgICAgIGNhbGxCYWNrXG4gICAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICAgIG1ldGhvZDogJ2dldEFjY291bnRJbmZvJyxcbiAgICAgICAgICAgICAgcGFyYW1zOiBbdGVzdERhdGEuY2xvc2VBVEFrZXlzLmNsb3NlQXRhQWRkcmVzcywgeyBlbmNvZGluZzogJ2pzb25QYXJzZWQnIH1dLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0VG9rZW5JbmZvUmVzcG9uc2UpO1xuXG4gICAgICAgIGNhbGxCYWNrXG4gICAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICAgIHBheWxvYWQ6IHsgaWQ6ICcxJywganNvbnJwYzogJzIuMCcsIG1ldGhvZDogJ3NlbmRUcmFuc2FjdGlvbicsIHBhcmFtczogc2lub24ubWF0Y2guYXJyYXkgfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5vbkNhbGwoMClcbiAgICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmJyb2FkY2FzdFRyYW5zYWN0aW9uUmVzcG9uc2UpXG4gICAgICAgICAgLm9uQ2FsbCgxKVxuICAgICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuYnJvYWRjYXN0VHJhbnNhY3Rpb25SZXNwb25zZTEpO1xuXG4gICAgICAgIGxldCBicm9hZGNhc3RDYWxsSW5kZXggPSAwO1xuICAgICAgICBtcGNWMlNhbmRCb3guc3R1YihTb2wucHJvdG90eXBlLCAnYnJvYWRjYXN0VHJhbnNhY3Rpb24nIGFzIGtleW9mIFNvbCkuY2FsbHNGYWtlKGFzeW5jICgpID0+IHtcbiAgICAgICAgICBicm9hZGNhc3RDYWxsSW5kZXgrKztcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHhJZDpcbiAgICAgICAgICAgICAgYnJvYWRjYXN0Q2FsbEluZGV4ID09PSAxXG4gICAgICAgICAgICAgICAgPyB0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuYnJvYWRjYXN0VHJhbnNhY3Rpb25SZXNwb25zZS5ib2R5LnJlc3VsdFxuICAgICAgICAgICAgICAgIDogdGVzdERhdGEuU29sUmVzcG9uc2VzLmJyb2FkY2FzdFRyYW5zYWN0aW9uUmVzcG9uc2UxLmJvZHkucmVzdWx0LFxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgcmVjb3ZlciBjbG9zZSBBVEEgd2l0aCBNUEN2MiBrZXlzIHdoZW4gbm8gdG9rZW4gYmFsYW5jZSBpcyBwcmVzZW50JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjYWxsQmFja1xuICAgICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgICBtZXRob2Q6ICdnZXRBY2NvdW50SW5mbycsXG4gICAgICAgICAgICAgIHBhcmFtczogW3Rlc3REYXRhLmNsb3NlQVRBa2V5cy5jbG9zZUF0YUFkZHJlc3MsIHsgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyB9XSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgICAucmVzb2x2ZXMoemVyb1Rva2VuSW5mb1Jlc3BvbnNlKTtcblxuICAgICAgICBjb25zdCBnZXRUU1NTaWduYXR1cmVTcHkgPSBtcGNWMlNhbmRCb3guc3B5KEVERFNBTWV0aG9kcywgJ2dldFRTU1NpZ25hdHVyZScpO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyQ2xvc2VBVEEoY2xvc2VBdGFNcGNWMlBhcmFtcyk7XG5cbiAgICAgICAgcmVzdWx0cy5zaG91bGQuaGF2ZS5sZW5ndGgoMSk7XG4gICAgICAgIHNob3VsZC5lcXVhbChyZXN1bHRzWzBdLnR4SWQsIHRlc3REYXRhLlNvbFJlc3BvbnNlcy5icm9hZGNhc3RUcmFuc2FjdGlvblJlc3BvbnNlLmJvZHkucmVzdWx0KTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKFxuICAgICAgICAgIGNhbGxCYWNrLmdldENhbGxzKCkuZmluZCgoY2FsbCkgPT4gY2FsbC5hcmdzWzBdPy5wYXlsb2FkPy5tZXRob2QgPT09ICdnZXRCYWxhbmNlJyk/LmFyZ3NbMF0ucGF5bG9hZC5wYXJhbXNbMF0sXG4gICAgICAgICAgbXBjVjJXYWxsZXRBZGRyZXNzXG4gICAgICAgICk7XG4gICAgICAgIG1wY1YyU2FuZEJveC5hc3NlcnQubm90Q2FsbGVkKGdldFRTU1NpZ25hdHVyZVNweSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCByZWNvdmVyIGNsb3NlIEFUQSB3aXRoIE1QQ3YyIGtleXMgd2hlbiB0b2tlbiBiYWxhbmNlIGlzIHByZXNlbnQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGdldFRTU1NpZ25hdHVyZVNweSA9IG1wY1YyU2FuZEJveC5zcHkoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJyk7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXJDbG9zZUFUQShjbG9zZUF0YU1wY1YyUGFyYW1zKTtcblxuICAgICAgICByZXN1bHRzLnNob3VsZC5oYXZlLmxlbmd0aCgyKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHJlc3VsdHNbMF0udHhJZCwgdGVzdERhdGEuU29sUmVzcG9uc2VzLmJyb2FkY2FzdFRyYW5zYWN0aW9uUmVzcG9uc2UuYm9keS5yZXN1bHQpO1xuICAgICAgICBzaG91bGQuZXF1YWwocmVzdWx0c1sxXS50eElkLCB0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuYnJvYWRjYXN0VHJhbnNhY3Rpb25SZXNwb25zZTEuYm9keS5yZXN1bHQpO1xuICAgICAgICBzaG91bGQuZXF1YWwoXG4gICAgICAgICAgY2FsbEJhY2suZ2V0Q2FsbHMoKS5maW5kKChjYWxsKSA9PiBjYWxsLmFyZ3NbMF0/LnBheWxvYWQ/Lm1ldGhvZCA9PT0gJ2dldEJhbGFuY2UnKT8uYXJnc1swXS5wYXlsb2FkLnBhcmFtc1swXSxcbiAgICAgICAgICBtcGNWMldhbGxldEFkZHJlc3NcbiAgICAgICAgKTtcbiAgICAgICAgbXBjVjJTYW5kQm94LmFzc2VydC5ub3RDYWxsZWQoZ2V0VFNTU2lnbmF0dXJlU3B5KTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHRocm93IHdoZW4gTVBDdjIgcmVjb3ZlckNsb3NlQVRBIGJpdGdvS2V5IGRvZXMgbm90IG1hdGNoIGtleWNhcmQgY29tbW9uS2V5Q2hhaW4nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNhbGxCYWNrXG4gICAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICAgIG1ldGhvZDogJ2dldEFjY291bnRJbmZvJyxcbiAgICAgICAgICAgICAgcGFyYW1zOiBbdGVzdERhdGEuY2xvc2VBVEFrZXlzLmNsb3NlQXRhQWRkcmVzcywgeyBlbmNvZGluZzogJ2pzb25QYXJzZWQnIH1dLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5yZXNvbHZlcyh6ZXJvVG9rZW5JbmZvUmVzcG9uc2UpO1xuXG4gICAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgICAgLnJlY292ZXJDbG9zZUFUQSh7IC4uLmNsb3NlQXRhTXBjVjJQYXJhbXMsIGJpdGdvS2V5OiBtaXNtYXRjaGVkQml0Z29LZXkgfSlcbiAgICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnRWREU0EgTVBDdjIgcmVjb3Zlcnk6IGNvbW1vbktleUNoYWluIGZyb20ga2V5Y2FyZCBkb2VzIG5vdCBtYXRjaCBiaXRnb0tleScpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgc2lnbiByZWNvdmVyQ2xvc2VBVEEgdmlhIHNpZ25BbmRHZW5lcmF0ZUJyb2FkY2FzdGFibGVUcmFuc2FjdGlvbiB3aXRoIE1QQ3YyIGtleXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGdldFRTU1NpZ25hdHVyZVNweSA9IG1wY1YyU2FuZEJveC5zcHkoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJyk7XG4gICAgICAgIGNvbnN0IGZhY3RvcnkgPSAoYmFzZWNvaW4gYXMgYW55KS5nZXRCdWlsZGVyKCk7XG4gICAgICAgIGNvbnN0IGJsb2NraGFzaCA9IHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRCbG9ja2hhc2hSZXNwb25zZS5ib2R5LnJlc3VsdC52YWx1ZS5ibG9ja2hhc2g7XG4gICAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0Q2xvc2VBdGFJbml0aWFsaXphdGlvbkJ1aWxkZXIoKTtcbiAgICAgICAgdHhCdWlsZGVyLm5vbmNlKGJsb2NraGFzaCk7XG4gICAgICAgIHR4QnVpbGRlci5zZW5kZXIobXBjVjJXYWxsZXRBZGRyZXNzKTtcbiAgICAgICAgdHhCdWlsZGVyLmFjY291bnRBZGRyZXNzKHRlc3REYXRhLmNsb3NlQVRBa2V5cy5jbG9zZUF0YUFkZHJlc3MpO1xuICAgICAgICB0eEJ1aWxkZXIuZGVzdGluYXRpb25BZGRyZXNzKHRlc3REYXRhLmNsb3NlQVRBa2V5cy5kZXN0aW5hdGlvblB1YktleSk7XG4gICAgICAgIHR4QnVpbGRlci5hdXRob3JpdHlBZGRyZXNzKG1wY1YyV2FsbGV0QWRkcmVzcyk7XG4gICAgICAgIHR4QnVpbGRlci5hc3NvY2lhdGVkVG9rZW5BY2NvdW50UmVudCgnMjAzOTI4MCcpO1xuICAgICAgICBjb25zdCBhZGRTaWduYXR1cmVTcHkgPSBtcGNWMlNhbmRCb3guc3B5KHR4QnVpbGRlciwgJ2FkZFNpZ25hdHVyZScpO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLnNpZ25BbmRHZW5lcmF0ZUJyb2FkY2FzdGFibGVUcmFuc2FjdGlvbihcbiAgICAgICAgICBjbG9zZUF0YU1wY1YyUGFyYW1zLFxuICAgICAgICAgIHR4QnVpbGRlcixcbiAgICAgICAgICBtcGNWMldhbGxldEFkZHJlc3MsXG4gICAgICAgICAgdHJ1ZVxuICAgICAgICApO1xuXG4gICAgICAgIHJlc3VsdC5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpO1xuICAgICAgICByZXN1bHQuc2hvdWxkLmhhc093blByb3BlcnR5KCdzY2FuSW5kZXgnKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHJlc3VsdC5zY2FuSW5kZXgsIDApO1xuICAgICAgICBtcGNWMlNhbmRCb3guYXNzZXJ0Lm5vdENhbGxlZChnZXRUU1NTaWduYXR1cmVTcHkpO1xuICAgICAgICBtcGNWMlNhbmRCb3guYXNzZXJ0LmNhbGxlZE9uY2UoYWRkU2lnbmF0dXJlU3B5KTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKGFkZFNpZ25hdHVyZVNweS5maXJzdENhbGwuYXJnc1swXS5wdWIsIG1wY1YyV2FsbGV0QWRkcmVzcyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdyZWNvdmVyTmVzdGVkQXRhJywgKCkgPT4ge1xuICAgICAgbGV0IG5lc3RlZEF0YU1wY1YyUGFyYW1zOiBTb2xSZWNvdmVyeU9wdGlvbnM7XG5cbiAgICAgIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIG5lc3RlZEF0YU1wY1YyUGFyYW1zID0ge1xuICAgICAgICAgIHVzZXJLZXk6IG1wY1YyVXNlcktleSxcbiAgICAgICAgICBiYWNrdXBLZXk6IG1wY1YyQmFja3VwS2V5LFxuICAgICAgICAgIGJpdGdvS2V5OiBtcGNWMkNvbW1vbktleUNoYWluLFxuICAgICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5kZXN0aW5hdGlvblB1YktleSxcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS5rZXlzLndhbGxldFBhc3N3b3JkLFxuICAgICAgICAgIG5lc3RlZEF0YUFkZHJlc3M6ICdGR3VaU0JodHJlcVNVc0U4Nnhva3lqS3oyaThWQnRKenk2dU1YWEt5R0h1ZycsXG4gICAgICAgICAgb3duZXJBdGFBZGRyZXNzOiAnWmZtOThacFZhZnlkaEZUWWNzWTZiSGd1YmhCNGNGZ1dGdmJkRUp4WWhUQScsXG4gICAgICAgICAgdG9rZW5NaW50QWRkcmVzczogJ1pCQ05wdUQ3WU1YelRIQjJmaEdrR2k3OE1Oc0hHTFJYVWhSZXdOUm05UlUnLFxuICAgICAgICB9O1xuICAgICAgfSk7XG5cbiAgICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgICBtcGNWMlNhbmRCb3guc3R1YihTb2wucHJvdG90eXBlLCAnYnJvYWRjYXN0VHJhbnNhY3Rpb24nIGFzIGtleW9mIFNvbCkucmVzb2x2ZXMoe1xuICAgICAgICAgIHR4SWQ6IHRlc3REYXRhLlNvbFJlc3BvbnNlcy5icm9hZGNhc3RUcmFuc2FjdGlvblJlc3BvbnNlLmJvZHkucmVzdWx0LFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHJlY292ZXIgbmVzdGVkIEFUQSB3aXRoIE1QQ3YyIGtleWNhcmQgdXNpbmcgTVBTLWRlcml2ZWQgd2FsbGV0IGFkZHJlc3MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGdldFRTU1NpZ25hdHVyZVNweSA9IG1wY1YyU2FuZEJveC5zcHkoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJyk7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYmFzZWNvaW4ucmVjb3Zlck5lc3RlZEF0YShuZXN0ZWRBdGFNcGNWMlBhcmFtcyk7XG5cbiAgICAgICAgcmVzdWx0LnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHJlc3VsdC50eElkLCB0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuYnJvYWRjYXN0VHJhbnNhY3Rpb25SZXNwb25zZS5ib2R5LnJlc3VsdCk7XG4gICAgICAgIHNob3VsZC5lcXVhbChcbiAgICAgICAgICBjYWxsQmFjay5nZXRDYWxscygpLmZpbmQoKGNhbGwpID0+IGNhbGwuYXJnc1swXT8ucGF5bG9hZD8ubWV0aG9kID09PSAnZ2V0TGF0ZXN0QmxvY2toYXNoJykgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG4gICAgICAgIG1wY1YyU2FuZEJveC5hc3NlcnQubm90Q2FsbGVkKGdldFRTU1NpZ25hdHVyZVNweSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCByZWNvdmVyIG5lc3RlZCBBVEEgd2l0aCBNUEN2MSBrZXljYXJkIHVzaW5nIE1QQy5kZXJpdmVVbmhhcmRlbmVkIChyZWdyZXNzaW9uKScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgZ2V0VFNTU2lnbmF0dXJlU3B5ID0gbXBjVjJTYW5kQm94LnNweShFRERTQU1ldGhvZHMsICdnZXRUU1NTaWduYXR1cmUnKTtcblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyTmVzdGVkQXRhKHtcbiAgICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMudXNlcktleSxcbiAgICAgICAgICBiYWNrdXBLZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iYWNrdXBLZXksXG4gICAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iaXRnb0tleSxcbiAgICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLndhbGxldFBhc3N3b3JkLFxuICAgICAgICAgIG5lc3RlZEF0YUFkZHJlc3M6ICdGR3VaU0JodHJlcVNVc0U4Nnhva3lqS3oyaThWQnRKenk2dU1YWEt5R0h1ZycsXG4gICAgICAgICAgb3duZXJBdGFBZGRyZXNzOiAnWmZtOThacFZhZnlkaEZUWWNzWTZiSGd1YmhCNGNGZ1dGdmJkRUp4WWhUQScsXG4gICAgICAgICAgdG9rZW5NaW50QWRkcmVzczogJ1pCQ05wdUQ3WU1YelRIQjJmaEdrR2k3OE1Oc0hHTFJYVWhSZXdOUm05UlUnLFxuICAgICAgICB9KTtcblxuICAgICAgICByZXN1bHQuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgICBzaG91bGQuZXF1YWwocmVzdWx0LnR4SWQsIHRlc3REYXRhLlNvbFJlc3BvbnNlcy5icm9hZGNhc3RUcmFuc2FjdGlvblJlc3BvbnNlLmJvZHkucmVzdWx0KTtcbiAgICAgICAgbXBjVjJTYW5kQm94LmFzc2VydC5jYWxsZWRPbmNlKGdldFRTU1NpZ25hdHVyZVNweSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIE1QQ3YyIHJlY292ZXJOZXN0ZWRBdGEgYml0Z29LZXkgZG9lcyBub3QgbWF0Y2gga2V5Y2FyZCBjb21tb25LZXlDaGFpbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgICAucmVjb3Zlck5lc3RlZEF0YSh7IC4uLm5lc3RlZEF0YU1wY1YyUGFyYW1zLCBiaXRnb0tleTogbWlzbWF0Y2hlZEJpdGdvS2V5IH0pXG4gICAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ0VkRFNBIE1QQ3YyIHJlY292ZXJ5OiBjb21tb25LZXlDaGFpbiBmcm9tIGtleWNhcmQgZG9lcyBub3QgbWF0Y2ggYml0Z29LZXknKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHRocm93IHdoZW4gbmVzdGVkQXRhQWRkcmVzcyBpcyBtaXNzaW5nIGZvciByZWNvdmVyTmVzdGVkQXRhIE1QQ3YyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAgIC5yZWNvdmVyTmVzdGVkQXRhKHtcbiAgICAgICAgICAgIC4uLm5lc3RlZEF0YU1wY1YyUGFyYW1zLFxuICAgICAgICAgICAgbmVzdGVkQXRhQWRkcmVzczogdW5kZWZpbmVkLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ2ludmFsaWQgbmVzdGVkQXRhQWRkcmVzcycpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdGhyb3cgd2hlbiBvd25lckF0YUFkZHJlc3MgaXMgbWlzc2luZyBmb3IgcmVjb3Zlck5lc3RlZEF0YSBNUEN2MicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgICAucmVjb3Zlck5lc3RlZEF0YSh7XG4gICAgICAgICAgICAuLi5uZXN0ZWRBdGFNcGNWMlBhcmFtcyxcbiAgICAgICAgICAgIG93bmVyQXRhQWRkcmVzczogdW5kZWZpbmVkLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ2ludmFsaWQgb3duZXJBdGFBZGRyZXNzJyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2NyZWF0ZUJyb2FkY2FzdGFibGVTd2VlcFRyYW5zYWN0aW9uIChNUEN2Mik6JywgKCkgPT4ge1xuICAgIGNvbnN0IHNhbmRCb3ggPSBzaW5vbi5jcmVhdGVTYW5kYm94KCk7XG4gICAgbGV0IHVzZXJLZXlTaGFyZTogQnVmZmVyO1xuICAgIGxldCBiYWNrdXBLZXlTaGFyZTogQnVmZmVyO1xuICAgIGxldCBjb21tb25LZXljaGFpbjogc3RyaW5nO1xuICAgIGxldCBtcGN2MlN3ZWVwVHhSZXF1ZXN0OiBhbnk7XG4gICAgbGV0IG1wY3YyU2lnbmF0dXJlSGV4OiBzdHJpbmc7XG5cbiAgICBiZWZvcmUoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgW3VzZXJEa2csIGJhY2t1cERrZ10gPSBhd2FpdCBNUFNVdGlsLmdlbmVyYXRlRWREc2FES0dLZXlTaGFyZXMoKTtcbiAgICAgIGNvbW1vbktleWNoYWluID0gdXNlckRrZy5nZXRDb21tb25LZXljaGFpbigpO1xuICAgICAgdXNlcktleVNoYXJlID0gdXNlckRrZy5nZXRLZXlTaGFyZSgpO1xuICAgICAgYmFja3VwS2V5U2hhcmUgPSBiYWNrdXBEa2cuZ2V0S2V5U2hhcmUoKTtcblxuICAgICAgY29uc3QgbXBjID0gYXdhaXQgRUREU0FNZXRob2RzLmdldEluaXRpYWxpemVkTXBjSW5zdGFuY2UoKTtcbiAgICAgIGNvbnN0IHdhbGxldEFkZHJlc3MgPSBuZXcgS2V5UGFpcih7XG4gICAgICAgIHB1YjogbXBjLmRlcml2ZVVuaGFyZGVuZWQoY29tbW9uS2V5Y2hhaW4sICdtLzAnKS5zbGljZSgwLCA2NCksXG4gICAgICB9KS5nZXRBZGRyZXNzKCk7XG5cbiAgICAgIGNvbnN0IGNhbGxCYWNrID0gc2FuZEJveC5zdHViKFNvbC5wcm90b3R5cGUsICdnZXREYXRhRnJvbU5vZGUnIGFzIGtleW9mIFNvbCk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHsgaWQ6ICcxJywganNvbnJwYzogJzIuMCcsIG1ldGhvZDogJ2dldExhdGVzdEJsb2NraGFzaCcsIHBhcmFtczogW3sgY29tbWl0bWVudDogJ2ZpbmFsaXplZCcgfV0gfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRCbG9ja2hhc2hSZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHsgaWQ6ICcxJywganNvbnJwYzogJzIuMCcsIG1ldGhvZDogJ2dldEJhbGFuY2UnLCBwYXJhbXM6IFt3YWxsZXRBZGRyZXNzXSB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRGZWVGb3JNZXNzYWdlJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Npbm9uLm1hdGNoLnN0cmluZywgeyBjb21taXRtZW50OiAnZmluYWxpemVkJyB9XSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEZlZXNGb3JNZXNzYWdlUmVzcG9uc2UpO1xuXG4gICAgICAvLyBubyB3YWxsZXRQYXNzcGhyYXNlIC0+IHVuc2lnbmVkIHN3ZWVwIHBhdGggcmV0dXJucyBNUENTd2VlcFR4c1xuICAgICAgY29uc3Qgc3dlZXAgPSAoYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIHVzZXJLZXk6ICcnLFxuICAgICAgICBiYWNrdXBLZXk6ICcnLFxuICAgICAgICBiaXRnb0tleTogY29tbW9uS2V5Y2hhaW4sXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICB9KSkgYXMgTVBDU3dlZXBUeHM7XG4gICAgICBzYW5kQm94LnJlc3RvcmUoKTtcblxuICAgICAgbXBjdjJTd2VlcFR4UmVxdWVzdCA9IHN3ZWVwLnR4UmVxdWVzdHNbMF07XG4gICAgICBjb25zdCB1bnNpZ25lZFR4ID0gbXBjdjJTd2VlcFR4UmVxdWVzdC50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeDtcbiAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IGF3YWl0IHNpZ25SZWNvdmVyeUVkZHNhTVBDdjIoXG4gICAgICAgIEJ1ZmZlci5mcm9tKHVuc2lnbmVkVHguc2lnbmFibGVIZXgsICdoZXgnKSxcbiAgICAgICAgdW5zaWduZWRUeC5kZXJpdmF0aW9uUGF0aCxcbiAgICAgICAgdXNlcktleVNoYXJlLFxuICAgICAgICBiYWNrdXBLZXlTaGFyZSxcbiAgICAgICAgY29tbW9uS2V5Y2hhaW5cbiAgICAgICk7XG4gICAgICBtcGN2MlNpZ25hdHVyZUhleCA9IHNpZ25hdHVyZS50b1N0cmluZygnaGV4Jyk7XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBidWlsZFBhcmFtcyhvdmM6IGFueSk6IE1QQ1N3ZWVwUmVjb3ZlcnlPcHRpb25zIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNpZ25hdHVyZVNoYXJlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR4UmVxdWVzdDogbXBjdjJTd2VlcFR4UmVxdWVzdCxcbiAgICAgICAgICAgIHRzc1ZlcnNpb246ICcwLjAuMScsXG4gICAgICAgICAgICBvdmM6IFtvdmNdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9IGFzIE1QQ1N3ZWVwUmVjb3ZlcnlPcHRpb25zO1xuICAgIH1cblxuICAgIGl0KCdzaG91bGQgdGFrZSBNUEN2MiBPVkMgb3V0cHV0IGFuZCBnZW5lcmF0ZSBhIHNpZ25lZCBzd2VlcCB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IGJ1aWxkUGFyYW1zKHsgZWRkc2FNcGN2MlNpZ25hdHVyZTogbXBjdjJTaWduYXR1cmVIZXggfSk7XG4gICAgICBjb25zdCByZWNvdmVyeVR4biA9IGF3YWl0IGJhc2Vjb2luLmNyZWF0ZUJyb2FkY2FzdGFibGVTd2VlcFRyYW5zYWN0aW9uKHBhcmFtcyk7XG5cbiAgICAgIHJlY292ZXJ5VHhuLnRyYW5zYWN0aW9uc1swXS5zZXJpYWxpemVkVHguc2hvdWxkLm5vdC5lcXVhbChcbiAgICAgICAgbXBjdjJTd2VlcFR4UmVxdWVzdC50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5zZXJpYWxpemVkVHhcbiAgICAgICk7XG4gICAgICByZWNvdmVyeVR4bi50cmFuc2FjdGlvbnNbMF0uc2VyaWFsaXplZFR4LnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIChyZWNvdmVyeVR4bi50cmFuc2FjdGlvbnNbMF0uc2NhbkluZGV4ID8/IDApLnNob3VsZC5lcXVhbCgwKTtcbiAgICAgIChyZWNvdmVyeVR4bi5sYXN0U2NhbkluZGV4ID8/IDApLnNob3VsZC5lcXVhbCgwKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVqZWN0IGEgdGFtcGVyZWQgTVBDdjIgc2lnbmF0dXJlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdW5zaWduZWRUeCA9IG1wY3YyU3dlZXBUeFJlcXVlc3QudHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHg7XG4gICAgICBjb25zdCB0YW1wZXJlZE1lc3NhZ2UgPSBCdWZmZXIuY29uY2F0KFtCdWZmZXIuZnJvbSh1bnNpZ25lZFR4LnNpZ25hYmxlSGV4LCAnaGV4JyksIEJ1ZmZlci5mcm9tKCcwMCcsICdoZXgnKV0pO1xuICAgICAgY29uc3QgdGFtcGVyZWRTaWduYXR1cmUgPSBhd2FpdCBzaWduUmVjb3ZlcnlFZGRzYU1QQ3YyKFxuICAgICAgICB0YW1wZXJlZE1lc3NhZ2UsXG4gICAgICAgIHVuc2lnbmVkVHguZGVyaXZhdGlvblBhdGgsXG4gICAgICAgIHVzZXJLZXlTaGFyZSxcbiAgICAgICAgYmFja3VwS2V5U2hhcmUsXG4gICAgICAgIGNvbW1vbktleWNoYWluXG4gICAgICApO1xuXG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAuY3JlYXRlQnJvYWRjYXN0YWJsZVN3ZWVwVHJhbnNhY3Rpb24oYnVpbGRQYXJhbXMoeyBlZGRzYU1wY3YyU2lnbmF0dXJlOiB0YW1wZXJlZFNpZ25hdHVyZS50b1N0cmluZygnaGV4JykgfSkpXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdJbnZhbGlkIHNpZ25hdHVyZScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIE1QQ3YyIE9WQyBpcyBtaXNzaW5nIHNpZ25hdHVyZShzKScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC5jcmVhdGVCcm9hZGNhc3RhYmxlU3dlZXBUcmFuc2FjdGlvbihidWlsZFBhcmFtcyh7fSkpXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdNaXNzaW5nIHNpZ25hdHVyZShzKScpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnQnVpbGQgQ29uc29saWRhdGlvbiBSZWNvdmVyaWVzOicsICgpID0+IHtcbiAgICBjb25zdCBzYW5kQm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuICAgIGNvbnN0IGNvaW4gPSBjb2lucy5nZXQoJ3Rzb2wnKTtcbiAgICBjb25zdCB1c2R0TWludEFkZHJlc3MgPSAnOWNncEJlTloySG5MZGE3TldhYVUxaTNOeVRzdGsyYzR6Q01VY29BR3NpOUMnO1xuICAgIGNvbnN0IGR1cmFibGVOb25jZXMgPSB7XG4gICAgICBwdWJsaWNLZXlzOiBbXG4gICAgICAgIHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LFxuICAgICAgICB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVB1YktleTIsXG4gICAgICAgIHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5MyxcbiAgICAgIF0sXG4gICAgICBzZWNyZXRLZXk6IHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHJpdktleSxcbiAgICB9O1xuXG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICBjb25zdCBjYWxsQmFjayA9IHNhbmRCb3guc3R1YihTb2wucHJvdG90eXBlLCAnZ2V0RGF0YUZyb21Ob2RlJyBhcyBrZXlvZiBTb2wpO1xuXG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldExhdGVzdEJsb2NraGFzaCcsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbW1pdG1lbnQ6ICdmaW5hbGl6ZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEJsb2NraGFzaFJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0RmVlRm9yTWVzc2FnZScsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgc2lub24ubWF0Y2guc3RyaW5nLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29tbWl0bWVudDogJ2ZpbmFsaXplZCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0RmVlc0Zvck1lc3NhZ2VSZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEJhbGFuY2UnLFxuICAgICAgICAgICAgcGFyYW1zOiBbdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50QmFsYW5jZVJlc3BvbnNlTm9GdW5kcyk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEJhbGFuY2UnLFxuICAgICAgICAgICAgcGFyYW1zOiBbdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50QmFsYW5jZVJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QmFsYW5jZScsXG4gICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MzXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRCYWxhbmNlJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Rlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczVdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEJhbGFuY2VSZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldE1pbmltdW1CYWxhbmNlRm9yUmVudEV4ZW1wdGlvbicsXG4gICAgICAgICAgICBwYXJhbXM6IFsxNjVdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0TWluaW11bUJhbGFuY2VGb3JSZW50RXhlbXB0aW9uUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRBY2NvdW50SW5mbycsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQdWJLZXksXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogJ2pzb25QYXJzZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRJbmZvUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRBY2NvdW50SW5mbycsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQdWJLZXkyLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50SW5mb1Jlc3BvbnNlMik7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldFRva2VuQWNjb3VudHNCeU93bmVyJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MxLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogJ2pzb25QYXJzZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyUmVzcG9uc2VOb0FjY291bnRzKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczIsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcm9ncmFtSWQ6ICdUb2tlbmtlZ1FmZVp5aU53QUpiTmJHS1BGWENXdUJ2ZjlTczYyM1ZRNURBJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiAnanNvblBhcnNlZCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0VG9rZW5BY2NvdW50c0J5T3duZXJSZXNwb25zZU5vQWNjb3VudHMpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRUb2tlbkFjY291bnRzQnlPd25lcicsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMyxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHByb2dyYW1JZDogJ1Rva2Vua2VnUWZlWnlpTndBSmJOYkdLUEZYQ1d1QnZmOVNzNjIzVlE1REEnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lclJlc3BvbnNlTm9BY2NvdW50cyk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldFRva2VuQWNjb3VudHNCeU93bmVyJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3M1LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogJ2pzb25QYXJzZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRUb2tlbkFjY291bnRzQnlPd25lcicsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHByb2dyYW1JZDogJ1Rva2Vua2VnUWZlWnlpTndBSmJOYkdLUEZYQ1d1QnZmOVNzNjIzVlE1REEnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lclJlc3BvbnNlKTtcbiAgICB9KTtcblxuICAgIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgICBzYW5kQm94LnJlc3RvcmUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgc2lnbmVkIGNvbnNvbGlkYXRpb24gcmVjb3ZlcmllcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlcyA9IChhd2FpdCBiYXNlY29pbi5yZWNvdmVyQ29uc29saWRhdGlvbnMoe1xuICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS53cndVc2VyLnVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEud3J3VXNlci5iYWNrdXBLZXksXG4gICAgICAgIGJpdGdvS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJpdGdvS2V5LFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS53cndVc2VyLndhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIHN0YXJ0aW5nU2NhbkluZGV4OiAxLFxuICAgICAgICBlbmRpbmdTY2FuSW5kZXg6IDQsXG4gICAgICAgIGR1cmFibGVOb25jZXM6IGR1cmFibGVOb25jZXMsXG4gICAgICB9KSkgYXMgTVBDVHhzO1xuICAgICAgcmVzLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIHJlcy50cmFuc2FjdGlvbnMubGVuZ3RoLnNob3VsZC5lcXVhbCgyKTtcbiAgICAgIChyZXMubGFzdFNjYW5JbmRleCA/PyAwKS5zaG91bGQuZXF1YWwoMyk7XG5cbiAgICAgIGNvbnN0IHR4bjEgPSByZXMudHJhbnNhY3Rpb25zWzBdO1xuICAgICAgY29uc3QgbGF0ZXN0QmxvY2toYXNoVHhuRGVzZXJpYWxpemUxID0gbmV3IFRyYW5zYWN0aW9uKGNvaW4pO1xuICAgICAgbGF0ZXN0QmxvY2toYXNoVHhuRGVzZXJpYWxpemUxLmZyb21SYXdUcmFuc2FjdGlvbigodHhuMSBhcyBNUENUeCkuc2VyaWFsaXplZFR4KTtcbiAgICAgIGNvbnN0IGxhdGVzdEJsb2NraGFzaFR4bkpzb24xID0gbGF0ZXN0QmxvY2toYXNoVHhuRGVzZXJpYWxpemUxLnRvSnNvbigpO1xuXG4gICAgICBjb25zdCBub25jZTEgPSB0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEluZm9SZXNwb25zZS5ib2R5LnJlc3VsdC52YWx1ZS5kYXRhLnBhcnNlZC5pbmZvLmJsb2NraGFzaDtcbiAgICAgIHNob3VsZC5lcXVhbChsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMS5ub25jZSwgbm9uY2UxKTtcbiAgICAgIHNob3VsZC5lcXVhbChsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMS5mZWVQYXllciwgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMik7XG4gICAgICBzaG91bGQuZXF1YWwobGF0ZXN0QmxvY2toYXNoVHhuSnNvbjEubnVtU2lnbmF0dXJlcywgdGVzdERhdGEuU29sSW5wdXREYXRhLmR1cmFibGVOb25jZVNpZ25hdHVyZXMpO1xuXG4gICAgICBjb25zdCB0eG4yID0gcmVzLnRyYW5zYWN0aW9uc1sxXTtcbiAgICAgIGNvbnN0IGxhdGVzdEJsb2NraGFzaFR4bkRlc2VyaWFsaXplMiA9IG5ldyBUcmFuc2FjdGlvbihjb2luKTtcbiAgICAgIGxhdGVzdEJsb2NraGFzaFR4bkRlc2VyaWFsaXplMi5mcm9tUmF3VHJhbnNhY3Rpb24oKHR4bjIgYXMgTVBDVHgpLnNlcmlhbGl6ZWRUeCk7XG4gICAgICBjb25zdCBsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMiA9IGxhdGVzdEJsb2NraGFzaFR4bkRlc2VyaWFsaXplMi50b0pzb24oKTtcblxuICAgICAgY29uc3Qgbm9uY2UyID0gdGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRJbmZvUmVzcG9uc2UyLmJvZHkucmVzdWx0LnZhbHVlLmRhdGEucGFyc2VkLmluZm8uYmxvY2toYXNoO1xuICAgICAgc2hvdWxkLmVxdWFsKGxhdGVzdEJsb2NraGFzaFR4bkpzb24yLm5vbmNlLCBub25jZTIpO1xuICAgICAgc2hvdWxkLmVxdWFsKGxhdGVzdEJsb2NraGFzaFR4bkpzb24yLmZlZVBheWVyLCB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MzKTtcbiAgICAgIHNob3VsZC5lcXVhbChsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMi5udW1TaWduYXR1cmVzLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEuZHVyYWJsZU5vbmNlU2lnbmF0dXJlcyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIHVuc2lnbmVkIGNvbnNvbGlkYXRpb24gcmVjb3ZlcmllcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlcyA9IChhd2FpdCBiYXNlY29pbi5yZWNvdmVyQ29uc29saWRhdGlvbnMoe1xuICAgICAgICBiaXRnb0tleTogdGVzdERhdGEud3J3VXNlci5iaXRnb0tleSxcbiAgICAgICAgc3RhcnRpbmdTY2FuSW5kZXg6IDEsXG4gICAgICAgIGVuZGluZ1NjYW5JbmRleDogNCxcbiAgICAgICAgZHVyYWJsZU5vbmNlczogZHVyYWJsZU5vbmNlcyxcbiAgICAgIH0pKSBhcyBNUENTd2VlcFR4cztcbiAgICAgIHJlcy5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICByZXMudHhSZXF1ZXN0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDIpO1xuXG4gICAgICBjb25zdCB0eG4xID0gcmVzLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHg7XG4gICAgICB0eG4xLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2VyaWFsaXplZFR4Jyk7XG4gICAgICB0eG4xLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2lnbmFibGVIZXgnKTtcbiAgICAgIHR4bjEuc2hvdWxkLmhhc093blByb3BlcnR5KCdzY2FuSW5kZXgnKTtcbiAgICAgICh0eG4xLnNjYW5JbmRleCA/PyAwKS5zaG91bGQuZXF1YWwoMik7XG4gICAgICB0eG4xLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnY29pbicpO1xuICAgICAgdHhuMS5jb2luPy5zaG91bGQuZXF1YWwoJ3Rzb2wnKTtcbiAgICAgIHR4bjEuc2hvdWxkLmhhc093blByb3BlcnR5KCdkZXJpdmF0aW9uUGF0aCcpO1xuICAgICAgdHhuMS5kZXJpdmF0aW9uUGF0aD8uc2hvdWxkLmVxdWFsKCdtLzInKTtcblxuICAgICAgdHhuMS5zaG91bGQuaGFzT3duUHJvcGVydHkoJ2NvaW5TcGVjaWZpYycpO1xuICAgICAgY29uc3QgY29pblNwZWNpZmljMSA9IHR4bjEuY29pblNwZWNpZmljO1xuICAgICAgY29pblNwZWNpZmljMT8uc2hvdWxkLmhhc093blByb3BlcnR5KCdjb21tb25LZXljaGFpbicpO1xuXG4gICAgICBjb25zdCBsYXRlc3RCbG9ja2hhc2hUeG5EZXNlcmlhbGl6ZTEgPSBuZXcgVHJhbnNhY3Rpb24oY29pbik7XG4gICAgICBsYXRlc3RCbG9ja2hhc2hUeG5EZXNlcmlhbGl6ZTEuZnJvbVJhd1RyYW5zYWN0aW9uKCh0eG4xIGFzIE1QQ1R4KS5zZXJpYWxpemVkVHgpO1xuICAgICAgY29uc3QgbGF0ZXN0QmxvY2toYXNoVHhuSnNvbjEgPSBsYXRlc3RCbG9ja2hhc2hUeG5EZXNlcmlhbGl6ZTEudG9Kc29uKCk7XG5cbiAgICAgIGNvbnN0IG5vbmNlMSA9IHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50SW5mb1Jlc3BvbnNlLmJvZHkucmVzdWx0LnZhbHVlLmRhdGEucGFyc2VkLmluZm8uYmxvY2toYXNoO1xuICAgICAgc2hvdWxkLmVxdWFsKGxhdGVzdEJsb2NraGFzaFR4bkpzb24xLm5vbmNlLCBub25jZTEpO1xuICAgICAgc2hvdWxkLmVxdWFsKGxhdGVzdEJsb2NraGFzaFR4bkpzb24xLmZlZVBheWVyLCB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MyKTtcbiAgICAgIHNob3VsZC5lcXVhbChsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMS5udW1TaWduYXR1cmVzLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEudW5zaWduZWRTd2VlcFNpZ25hdHVyZXMpO1xuXG4gICAgICBjb25zdCB0eG4yID0gcmVzLnR4UmVxdWVzdHNbMV0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHg7XG4gICAgICB0eG4yLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2VyaWFsaXplZFR4Jyk7XG4gICAgICB0eG4yLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2lnbmFibGVIZXgnKTtcbiAgICAgIHR4bjIuc2hvdWxkLmhhc093blByb3BlcnR5KCdzY2FuSW5kZXgnKTtcbiAgICAgICh0eG4yLnNjYW5JbmRleCA/PyAwKS5zaG91bGQuZXF1YWwoMyk7XG4gICAgICB0eG4yLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnY29pbicpO1xuICAgICAgdHhuMi5jb2luPy5zaG91bGQuZXF1YWwoJ3Rzb2wnKTtcbiAgICAgIHR4bjIuc2hvdWxkLmhhc093blByb3BlcnR5KCdkZXJpdmF0aW9uUGF0aCcpO1xuICAgICAgdHhuMi5kZXJpdmF0aW9uUGF0aD8uc2hvdWxkLmVxdWFsKCdtLzMnKTtcblxuICAgICAgdHhuMi5zaG91bGQuaGFzT3duUHJvcGVydHkoJ2NvaW5TcGVjaWZpYycpO1xuICAgICAgY29uc3QgY29pblNwZWNpZmljMiA9IHR4bjIuY29pblNwZWNpZmljO1xuICAgICAgY29pblNwZWNpZmljMj8uc2hvdWxkLmhhc093blByb3BlcnR5KCdjb21tb25LZXljaGFpbicpO1xuICAgICAgY29pblNwZWNpZmljMj8uc2hvdWxkLmhhc093blByb3BlcnR5KCdsYXN0U2NhbkluZGV4Jyk7XG4gICAgICBjb2luU3BlY2lmaWMyPy5sYXN0U2NhbkluZGV4Py5zaG91bGQuZXF1YWwoMyk7XG5cbiAgICAgIGNvbnN0IGxhdGVzdEJsb2NraGFzaFR4bkRlc2VyaWFsaXplMiA9IG5ldyBUcmFuc2FjdGlvbihjb2luKTtcbiAgICAgIGxhdGVzdEJsb2NraGFzaFR4bkRlc2VyaWFsaXplMi5mcm9tUmF3VHJhbnNhY3Rpb24oKHR4bjIgYXMgTVBDVHgpLnNlcmlhbGl6ZWRUeCk7XG4gICAgICBjb25zdCBsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMiA9IGxhdGVzdEJsb2NraGFzaFR4bkRlc2VyaWFsaXplMi50b0pzb24oKTtcblxuICAgICAgY29uc3Qgbm9uY2UyID0gdGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRJbmZvUmVzcG9uc2UyLmJvZHkucmVzdWx0LnZhbHVlLmRhdGEucGFyc2VkLmluZm8uYmxvY2toYXNoO1xuICAgICAgc2hvdWxkLmVxdWFsKGxhdGVzdEJsb2NraGFzaFR4bkpzb24yLm5vbmNlLCBub25jZTIpO1xuICAgICAgc2hvdWxkLmVxdWFsKGxhdGVzdEJsb2NraGFzaFR4bkpzb24yLmZlZVBheWVyLCB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MzKTtcbiAgICAgIHNob3VsZC5lcXVhbChsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMi5udW1TaWduYXR1cmVzLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEudW5zaWduZWRTd2VlcFNpZ25hdHVyZXMpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCB1bnNpZ25lZCB0b2tlbiBjb25zb2xpZGF0aW9uIHJlY292ZXJpZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXMgPSAoYXdhaXQgYmFzZWNvaW4ucmVjb3ZlckNvbnNvbGlkYXRpb25zKHtcbiAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLndyd1VzZXIuYml0Z29LZXksXG4gICAgICAgIHN0YXJ0aW5nU2NhbkluZGV4OiAzLFxuICAgICAgICBlbmRpbmdTY2FuSW5kZXg6IDUsXG4gICAgICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiB1c2R0TWludEFkZHJlc3MsXG4gICAgICAgIGR1cmFibGVOb25jZXM6IGR1cmFibGVOb25jZXMsXG4gICAgICB9KSkgYXMgTVBDU3dlZXBUeHM7XG4gICAgICByZXMuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgcmVzLnR4UmVxdWVzdHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcblxuICAgICAgY29uc3QgdHhuMSA9IHJlcy50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4O1xuICAgICAgdHhuMS5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpO1xuICAgICAgdHhuMS5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NpZ25hYmxlSGV4Jyk7XG4gICAgICB0eG4xLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2NhbkluZGV4Jyk7XG4gICAgICAodHhuMS5zY2FuSW5kZXggPz8gMCkuc2hvdWxkLmVxdWFsKDQpO1xuICAgICAgdHhuMS5zaG91bGQuaGFzT3duUHJvcGVydHkoJ2NvaW4nKTtcbiAgICAgIHR4bjEuY29pbj8uc2hvdWxkLmVxdWFsKCd0c29sJyk7XG4gICAgICB0eG4xLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnZGVyaXZhdGlvblBhdGgnKTtcbiAgICAgIHR4bjEuZGVyaXZhdGlvblBhdGg/LnNob3VsZC5lcXVhbCgnbS80Jyk7XG5cbiAgICAgIHR4bjEuc2hvdWxkLmhhc093blByb3BlcnR5KCdjb2luU3BlY2lmaWMnKTtcbiAgICAgIGNvbnN0IGNvaW5TcGVjaWZpYzEgPSB0eG4xLmNvaW5TcGVjaWZpYztcbiAgICAgIGNvaW5TcGVjaWZpYzE/LnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnY29tbW9uS2V5Y2hhaW4nKTtcblxuICAgICAgY29uc3QgbGF0ZXN0QmxvY2toYXNoVHhuRGVzZXJpYWxpemUxID0gbmV3IFRyYW5zYWN0aW9uKGNvaW4pO1xuICAgICAgbGF0ZXN0QmxvY2toYXNoVHhuRGVzZXJpYWxpemUxLmZyb21SYXdUcmFuc2FjdGlvbigodHhuMSBhcyBNUENUeCkuc2VyaWFsaXplZFR4KTtcbiAgICAgIGNvbnN0IGxhdGVzdEJsb2NraGFzaFR4bkpzb24xID0gbGF0ZXN0QmxvY2toYXNoVHhuRGVzZXJpYWxpemUxLnRvSnNvbigpO1xuXG4gICAgICBjb25zdCBub25jZTEgPSB0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEluZm9SZXNwb25zZS5ib2R5LnJlc3VsdC52YWx1ZS5kYXRhLnBhcnNlZC5pbmZvLmJsb2NraGFzaDtcbiAgICAgIHNob3VsZC5lcXVhbChsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMS5ub25jZSwgbm9uY2UxKTtcbiAgICAgIHNob3VsZC5lcXVhbChsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMS5mZWVQYXllciwgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzNSk7XG4gICAgICBzaG91bGQuZXF1YWwobGF0ZXN0QmxvY2toYXNoVHhuSnNvbjEubnVtU2lnbmF0dXJlcywgdGVzdERhdGEuU29sSW5wdXREYXRhLnVuc2lnbmVkU3dlZXBTaWduYXR1cmVzKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgc2lnbmVkIHRva2VuIGNvbnNvbGlkYXRpb24gcmVjb3ZlcmllcyAoaG90IHdhbGxldCknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBSZWdyZXNzaW9uIHRlc3Q6IGhvdC13YWxsZXQgU1BMLXRva2VuIGNvbnNvbGlkYXRpb24gbXVzdCBwcm9kdWNlIGEgKnNpZ25lZCogdHJhbnNhY3Rpb25cbiAgICAgIC8vIHdoZW4gdXNlcktleS9iYWNrdXBLZXkvd2FsbGV0UGFzc3BocmFzZSBhcmUgc3VwcGxpZWQg4oCUIG1pcnJvcnMgdGhlIFdSVyBob3Qtd2FsbGV0IGZsb3cuXG4gICAgICBjb25zdCByZXMgPSAoYXdhaXQgYmFzZWNvaW4ucmVjb3ZlckNvbnNvbGlkYXRpb25zKHtcbiAgICAgICAgdXNlcktleTogdGVzdERhdGEud3J3VXNlci51c2VyS2V5LFxuICAgICAgICBiYWNrdXBLZXk6IHRlc3REYXRhLndyd1VzZXIuYmFja3VwS2V5LFxuICAgICAgICBiaXRnb0tleTogdGVzdERhdGEud3J3VXNlci5iaXRnb0tleSxcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEud3J3VXNlci53YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICBzdGFydGluZ1NjYW5JbmRleDogMyxcbiAgICAgICAgZW5kaW5nU2NhbkluZGV4OiA1LFxuICAgICAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogdXNkdE1pbnRBZGRyZXNzLFxuICAgICAgICBkdXJhYmxlTm9uY2VzOiBkdXJhYmxlTm9uY2VzLFxuICAgICAgfSkpIGFzIE1QQ1R4cztcblxuICAgICAgcmVzLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIHJlcy50cmFuc2FjdGlvbnMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcblxuICAgICAgY29uc3QgdHhuMSA9IHJlcy50cmFuc2FjdGlvbnNbMF0gYXMgTVBDVHg7XG4gICAgICB0eG4xLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2VyaWFsaXplZFR4Jyk7XG4gICAgICB0eG4xLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2NhbkluZGV4Jyk7XG4gICAgICAodHhuMS5zY2FuSW5kZXggPz8gMCkuc2hvdWxkLmVxdWFsKDQpO1xuXG4gICAgICBjb25zdCB0b2tlbkNvbnNvbGlkYXRpb25UeG5EZXNlcmlhbGl6ZSA9IG5ldyBUcmFuc2FjdGlvbihjb2luKTtcbiAgICAgIHRva2VuQ29uc29saWRhdGlvblR4bkRlc2VyaWFsaXplLmZyb21SYXdUcmFuc2FjdGlvbih0eG4xLnNlcmlhbGl6ZWRUeCk7XG4gICAgICBjb25zdCB0b2tlbkNvbnNvbGlkYXRpb25UeG5Kc29uID0gdG9rZW5Db25zb2xpZGF0aW9uVHhuRGVzZXJpYWxpemUudG9Kc29uKCk7XG5cbiAgICAgIGNvbnN0IG5vbmNlMSA9IHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50SW5mb1Jlc3BvbnNlLmJvZHkucmVzdWx0LnZhbHVlLmRhdGEucGFyc2VkLmluZm8uYmxvY2toYXNoO1xuICAgICAgc2hvdWxkLmVxdWFsKHRva2VuQ29uc29saWRhdGlvblR4bkpzb24ubm9uY2UsIG5vbmNlMSk7XG4gICAgICBzaG91bGQuZXF1YWwodG9rZW5Db25zb2xpZGF0aW9uVHhuSnNvbi5mZWVQYXllciwgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzNSk7XG4gICAgICAvLyBTaWduZWQgKGR1cmFibGUgbm9uY2UgKyByZWNvdmVyeSBzaWduYXR1cmUpIG11c3QgaGF2ZSBNT1JFIHNpZ25hdHVyZXMgdGhhbiBhbiB1bnNpZ25lZCBzd2VlcFxuICAgICAgLy8gb2YgdGhlIHNhbWUgdHJhbnNhY3Rpb24gc2hhcGUg4oCUIHByb3ZlcyB3YWxsZXRQYXNzcGhyYXNlIGFjdHVhbGx5IGRyb3ZlIGEgc2lnbmVkIHBhdGguXG4gICAgICBzaG91bGQuZXF1YWwodG9rZW5Db25zb2xpZGF0aW9uVHhuSnNvbi5udW1TaWduYXR1cmVzLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEuZHVyYWJsZU5vbmNlU2lnbmF0dXJlcyk7XG4gICAgICB0b2tlbkNvbnNvbGlkYXRpb25UeG5Kc29uLm51bVNpZ25hdHVyZXMuc2hvdWxkLmJlLmFib3ZlKHRlc3REYXRhLlNvbElucHV0RGF0YS51bnNpZ25lZFN3ZWVwU2lnbmF0dXJlcyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHNraXAgYnVpbGRpbmcgY29uc29saWRhdGUgdHJhbnNhY3Rpb24gaWYgYmFsYW5jZSBpcyBlcXVhbCB0byB6ZXJvJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnJlY292ZXJDb25zb2xpZGF0aW9ucyh7XG4gICAgICAgICAgdXNlcktleTogdGVzdERhdGEud3J3VXNlci51c2VyS2V5LFxuICAgICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEud3J3VXNlci5iYWNrdXBLZXksXG4gICAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLndyd1VzZXIuYml0Z29LZXksXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEud3J3VXNlci53YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICAgIHN0YXJ0aW5nU2NhbkluZGV4OiAxLFxuICAgICAgICAgIGVuZGluZ1NjYW5JbmRleDogMixcbiAgICAgICAgICBkdXJhYmxlTm9uY2VzOiBkdXJhYmxlTm9uY2VzLFxuICAgICAgICB9KVxuICAgICAgICAuc2hvdWxkLnJlamVjdGVkV2l0aCgnRGlkIG5vdCBmaW5kIGFuIGFkZHJlc3Mgd2l0aCBmdW5kcyB0byByZWNvdmVyJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGlmIGJpdGdvS2V5IGlzIG1pc3NpbmcnLCBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAucmVjb3ZlckNvbnNvbGlkYXRpb25zKHtcbiAgICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS53cndVc2VyLnVzZXJLZXksXG4gICAgICAgICAgYmFja3VwS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJhY2t1cEtleSxcbiAgICAgICAgICBzdGFydGluZ1NjYW5JbmRleDogMSxcbiAgICAgICAgICBlbmRpbmdTY2FuSW5kZXg6IDIsXG4gICAgICAgICAgZHVyYWJsZU5vbmNlczogZHVyYWJsZU5vbmNlcyxcbiAgICAgICAgfSBhcyBTb2xDb25zb2xpZGF0aW9uUmVjb3ZlcnlPcHRpb25zKVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnbWlzc2luZyBiaXRnb0tleScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBzdGFydGluZ1NjYW5JbmRleCBpcyBub3QgZ2UgdG8gMScsIGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC5yZWNvdmVyQ29uc29saWRhdGlvbnMoe1xuICAgICAgICAgIHVzZXJLZXk6IHRlc3REYXRhLndyd1VzZXIudXNlcktleSxcbiAgICAgICAgICBiYWNrdXBLZXk6IHRlc3REYXRhLndyd1VzZXIuYmFja3VwS2V5LFxuICAgICAgICAgIGJpdGdvS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJpdGdvS2V5LFxuICAgICAgICAgIHN0YXJ0aW5nU2NhbkluZGV4OiAtMSxcbiAgICAgICAgICBkdXJhYmxlTm9uY2VzOiBkdXJhYmxlTm9uY2VzLFxuICAgICAgICB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aChcbiAgICAgICAgICAnSW52YWxpZCBzdGFydGluZyBvciBlbmRpbmcgaW5kZXggdG8gc2NhbiBmb3IgYWRkcmVzc2VzLiBzdGFydGluZ1NjYW5JbmRleDogLTEsIGVuZGluZ1NjYW5JbmRleDogMTkuJ1xuICAgICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBzY2FuIGZhY3RvciBpcyB0b28gaGlnaCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC5yZWNvdmVyQ29uc29saWRhdGlvbnMoe1xuICAgICAgICAgIHVzZXJLZXk6IHRlc3REYXRhLndyd1VzZXIudXNlcktleSxcbiAgICAgICAgICBiYWNrdXBLZXk6IHRlc3REYXRhLndyd1VzZXIuYmFja3VwS2V5LFxuICAgICAgICAgIGJpdGdvS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJpdGdvS2V5LFxuICAgICAgICAgIHN0YXJ0aW5nU2NhbkluZGV4OiAxLFxuICAgICAgICAgIGVuZGluZ1NjYW5JbmRleDogMzAwLFxuICAgICAgICAgIGR1cmFibGVOb25jZXM6IGR1cmFibGVOb25jZXMsXG4gICAgICAgIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKFxuICAgICAgICAgICdJbnZhbGlkIHN0YXJ0aW5nIG9yIGVuZGluZyBpbmRleCB0byBzY2FuIGZvciBhZGRyZXNzZXMuIHN0YXJ0aW5nU2NhbkluZGV4OiAxLCBlbmRpbmdTY2FuSW5kZXg6IDMwMC4nXG4gICAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdCdWlsZCBDb25zb2xpZGF0aW9uIFJlY292ZXJpZXMgKE1QQ3YyKTonLCAoKSA9PiB7XG4gICAgY29uc3QgbXBjVjJDb25zb2xpZGF0aW9uU2FuZEJveCA9IHNpbm9uLmNyZWF0ZVNhbmRib3goKTtcbiAgICBjb25zdCB1c2R0TWludEFkZHJlc3MgPSAnOWNncEJlTloySG5MZGE3TldhYVUxaTNOeVRzdGsyYzR6Q01VY29BR3NpOUMnO1xuICAgIGNvbnN0IGR1cmFibGVOb25jZXMgPSB7XG4gICAgICBwdWJsaWNLZXlzOiBbXG4gICAgICAgIHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LFxuICAgICAgICB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVB1YktleTIsXG4gICAgICAgIHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5MyxcbiAgICAgIF0sXG4gICAgICBzZWNyZXRLZXk6IHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHJpdktleSxcbiAgICB9O1xuXG4gICAgbGV0IGNhbGxCYWNrOiBzaW5vbi5TaW5vblN0dWI7XG4gICAgbGV0IG1wY1YyVXNlcktleTogc3RyaW5nO1xuICAgIGxldCBtcGNWMkJhY2t1cEtleTogc3RyaW5nO1xuICAgIGxldCBtcGNWMkNvbW1vbktleUNoYWluOiBzdHJpbmc7XG4gICAgbGV0IG1wY1YyQWRkcmVzczE6IHN0cmluZztcbiAgICBsZXQgbXBjVjJBZGRyZXNzMjogc3RyaW5nO1xuICAgIGxldCBtcGNWMkFkZHJlc3MzOiBzdHJpbmc7XG4gICAgbGV0IG1wY1YyVG9rZW5Vc2VyS2V5OiBzdHJpbmc7XG4gICAgbGV0IG1wY1YyVG9rZW5CYWNrdXBLZXk6IHN0cmluZztcbiAgICBsZXQgbXBjVjJUb2tlbkNvbW1vbktleUNoYWluOiBzdHJpbmc7XG4gICAgbGV0IG1wY1YyVG9rZW5CYXNlQWRkcmVzczogc3RyaW5nO1xuICAgIGxldCBtcGNWMlRva2VuQWRkcmVzczE6IHN0cmluZztcbiAgICBsZXQgd2FsbGV0UGFzc3BocmFzZTogc3RyaW5nO1xuXG4gICAgYmVmb3JlKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IFt1c2VyRGtnLCBiYWNrdXBEa2ddID0gYXdhaXQgTVBTVXRpbC5nZW5lcmF0ZUVkRHNhREtHS2V5U2hhcmVzKCk7XG4gICAgICBjb25zdCBbdG9rZW5Vc2VyRGtnLCB0b2tlbkJhY2t1cERrZ10gPSBhd2FpdCBNUFNVdGlsLmdlbmVyYXRlRWREc2FES0dLZXlTaGFyZXMoKTtcbiAgICAgIHdhbGxldFBhc3NwaHJhc2UgPSB0ZXN0RGF0YS5rZXlzLndhbGxldFBhc3N3b3JkO1xuXG4gICAgICBtcGNWMlVzZXJLZXkgPSBhd2FpdCBlbmNyeXB0KHdhbGxldFBhc3NwaHJhc2UsIHVzZXJEa2cuZ2V0UmVkdWNlZEtleVNoYXJlKCkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgICAgIG1wY1YyQmFja3VwS2V5ID0gYXdhaXQgZW5jcnlwdCh3YWxsZXRQYXNzcGhyYXNlLCBiYWNrdXBEa2cuZ2V0UmVkdWNlZEtleVNoYXJlKCkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgICAgIG1wY1YyQ29tbW9uS2V5Q2hhaW4gPSB1c2VyRGtnLmdldENvbW1vbktleWNoYWluKCk7XG4gICAgICBjb25zdCBtcGMgPSBhd2FpdCBFRERTQU1ldGhvZHMuZ2V0SW5pdGlhbGl6ZWRNcGNJbnN0YW5jZSgpO1xuXG4gICAgICBtcGNWMkFkZHJlc3MxID0gbmV3IEtleVBhaXIoeyBwdWI6IG1wYy5kZXJpdmVVbmhhcmRlbmVkKG1wY1YyQ29tbW9uS2V5Q2hhaW4sICdtLzEnKS5zbGljZSgwLCA2NCkgfSkuZ2V0QWRkcmVzcygpO1xuICAgICAgbXBjVjJBZGRyZXNzMiA9IG5ldyBLZXlQYWlyKHsgcHViOiBtcGMuZGVyaXZlVW5oYXJkZW5lZChtcGNWMkNvbW1vbktleUNoYWluLCAnbS8yJykuc2xpY2UoMCwgNjQpIH0pLmdldEFkZHJlc3MoKTtcbiAgICAgIG1wY1YyQWRkcmVzczMgPSBuZXcgS2V5UGFpcih7IHB1YjogbXBjLmRlcml2ZVVuaGFyZGVuZWQobXBjVjJDb21tb25LZXlDaGFpbiwgJ20vMycpLnNsaWNlKDAsIDY0KSB9KS5nZXRBZGRyZXNzKCk7XG5cbiAgICAgIG1wY1YyVG9rZW5Vc2VyS2V5ID0gYXdhaXQgZW5jcnlwdCh3YWxsZXRQYXNzcGhyYXNlLCB0b2tlblVzZXJEa2cuZ2V0UmVkdWNlZEtleVNoYXJlKCkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgICAgIG1wY1YyVG9rZW5CYWNrdXBLZXkgPSBhd2FpdCBlbmNyeXB0KHdhbGxldFBhc3NwaHJhc2UsIHRva2VuQmFja3VwRGtnLmdldFJlZHVjZWRLZXlTaGFyZSgpLnRvU3RyaW5nKCdiYXNlNjQnKSk7XG4gICAgICBtcGNWMlRva2VuQ29tbW9uS2V5Q2hhaW4gPSB0b2tlblVzZXJEa2cuZ2V0Q29tbW9uS2V5Y2hhaW4oKTtcblxuICAgICAgbXBjVjJUb2tlbkJhc2VBZGRyZXNzID0gbmV3IEtleVBhaXIoe1xuICAgICAgICBwdWI6IG1wYy5kZXJpdmVVbmhhcmRlbmVkKG1wY1YyVG9rZW5Db21tb25LZXlDaGFpbiwgJ20vMCcpLnNsaWNlKDAsIDY0KSxcbiAgICAgIH0pLmdldEFkZHJlc3MoKTtcbiAgICAgIG1wY1YyVG9rZW5BZGRyZXNzMSA9IG5ldyBLZXlQYWlyKHtcbiAgICAgICAgcHViOiBtcGMuZGVyaXZlVW5oYXJkZW5lZChtcGNWMlRva2VuQ29tbW9uS2V5Q2hhaW4sICdtLzEnKS5zbGljZSgwLCA2NCksXG4gICAgICB9KS5nZXRBZGRyZXNzKCk7XG4gICAgfSk7XG5cbiAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgIGNhbGxCYWNrID0gbXBjVjJDb25zb2xpZGF0aW9uU2FuZEJveC5zdHViKFNvbC5wcm90b3R5cGUsICdnZXREYXRhRnJvbU5vZGUnIGFzIGtleW9mIFNvbCk7XG5cbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDogeyBpZDogJzEnLCBqc29ucnBjOiAnMi4wJywgbWV0aG9kOiAnZ2V0TGF0ZXN0QmxvY2toYXNoJywgcGFyYW1zOiBbeyBjb21taXRtZW50OiAnZmluYWxpemVkJyB9XSB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEJsb2NraGFzaFJlc3BvbnNlKTtcblxuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRGZWVGb3JNZXNzYWdlJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Npbm9uLm1hdGNoLnN0cmluZywgeyBjb21taXRtZW50OiAnZmluYWxpemVkJyB9XSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEZlZXNGb3JNZXNzYWdlUmVzcG9uc2UpO1xuXG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHsgaWQ6ICcxJywganNvbnJwYzogJzIuMCcsIG1ldGhvZDogJ2dldE1pbmltdW1CYWxhbmNlRm9yUmVudEV4ZW1wdGlvbicsIHBhcmFtczogWzE2NV0gfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRNaW5pbXVtQmFsYW5jZUZvclJlbnRFeGVtcHRpb25SZXNwb25zZSk7XG5cbiAgICAgIG1wY1YyQ29uc29saWRhdGlvblNhbmRCb3guc3R1YihUcmFuc2FjdGlvbi5wcm90b3R5cGUsICd0b0Jyb2FkY2FzdEZvcm1hdCcpLnJldHVybnMoJ3N0dWItc2VyaWFsaXplZC10eCcpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICAgIG1wY1YyQ29uc29saWRhdGlvblNhbmRCb3gucmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCBNUEN2MiBzaWduZWQgbmF0aXZlIFNPTCBjb25zb2xpZGF0aW9uIHJlY292ZXJpZXMgYWNyb3NzIDIrIGZ1bmRlZCBpbmRleGVzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gU3B5IG9uIHRoZSBwcml2YXRlIGRldGVjdGlvbiBoZWxwZXIg4oCUIG11c3QgYmUgY2FsbGVkIG9uY2UgYXQgdG9wLCBub3QgcGVyLWl0ZXJhdGlvblxuICAgICAgY29uc3QgaXNNcGN2MlNweSA9IG1wY1YyQ29uc29saWRhdGlvblNhbmRCb3guc3B5KFNvbC5wcm90b3R5cGUsICdpc01wY3YyU2lnbmluZ01hdGVyaWFsJyBhcyBrZXlvZiBTb2wpO1xuXG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3MoeyBwYXlsb2FkOiB7IGlkOiAnMScsIGpzb25ycGM6ICcyLjAnLCBtZXRob2Q6ICdnZXRCYWxhbmNlJywgcGFyYW1zOiBbbXBjVjJBZGRyZXNzMV0gfSB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2VOb0Z1bmRzKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7IHBheWxvYWQ6IHsgaWQ6ICcxJywganNvbnJwYzogJzIuMCcsIG1ldGhvZDogJ2dldEJhbGFuY2UnLCBwYXJhbXM6IFttcGNWMkFkZHJlc3MyXSB9IH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEJhbGFuY2VSZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3MoeyBwYXlsb2FkOiB7IGlkOiAnMScsIGpzb25ycGM6ICcyLjAnLCBtZXRob2Q6ICdnZXRCYWxhbmNlJywgcGFyYW1zOiBbbXBjVjJBZGRyZXNzM10gfSB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRUb2tlbkFjY291bnRzQnlPd25lcicsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgbXBjVjJBZGRyZXNzMixcbiAgICAgICAgICAgICAgeyBwcm9ncmFtSWQ6ICdUb2tlbmtlZ1FmZVp5aU53QUpiTmJHS1BGWENXdUJ2ZjlTczYyM1ZRNURBJyB9LFxuICAgICAgICAgICAgICB7IGVuY29kaW5nOiAnanNvblBhcnNlZCcgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lclJlc3BvbnNlTm9BY2NvdW50cyk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldFRva2VuQWNjb3VudHNCeU93bmVyJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICBtcGNWMkFkZHJlc3MzLFxuICAgICAgICAgICAgICB7IHByb2dyYW1JZDogJ1Rva2Vua2VnUWZlWnlpTndBSmJOYkdLUEZYQ1d1QnZmOVNzNjIzVlE1REEnIH0sXG4gICAgICAgICAgICAgIHsgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyUmVzcG9uc2VOb0FjY291bnRzKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QWNjb3VudEluZm8nLFxuICAgICAgICAgICAgcGFyYW1zOiBbdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQdWJLZXksIHsgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyB9XSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRJbmZvUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRBY2NvdW50SW5mbycsXG4gICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVB1YktleTIsIHsgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyB9XSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRJbmZvUmVzcG9uc2UyKTtcblxuICAgICAgY29uc3QgcmVzID0gKGF3YWl0IGJhc2Vjb2luLnJlY292ZXJDb25zb2xpZGF0aW9ucyh7XG4gICAgICAgIHVzZXJLZXk6IG1wY1YyVXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiBtcGNWMkJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IG1wY1YyQ29tbW9uS2V5Q2hhaW4sXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIHN0YXJ0aW5nU2NhbkluZGV4OiAxLFxuICAgICAgICBlbmRpbmdTY2FuSW5kZXg6IDQsXG4gICAgICAgIGR1cmFibGVOb25jZXMsXG4gICAgICB9KSkgYXMgTVBDVHhzO1xuXG4gICAgICByZXMuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgcmVzLnRyYW5zYWN0aW9ucy5sZW5ndGguc2hvdWxkLmVxdWFsKDIpO1xuICAgICAgKHJlcy5sYXN0U2NhbkluZGV4ID8/IDApLnNob3VsZC5lcXVhbCgzKTtcblxuICAgICAgY29uc3QgdHhuMSA9IHJlcy50cmFuc2FjdGlvbnNbMF0gYXMgTVBDVHg7XG4gICAgICB0eG4xLnNlcmlhbGl6ZWRUeC5zaG91bGQuZXF1YWwoJ3N0dWItc2VyaWFsaXplZC10eCcpO1xuXG4gICAgICAvLyBpc01wY3YyU2lnbmluZ01hdGVyaWFsIG11c3QgTk9UIGJlIGNhbGxlZCBhdCBhbGwg4oCUIHJlY292ZXJDb25zb2xpZGF0aW9ucyBkZXRlY3RzIGRpcmVjdGx5XG4gICAgICAvLyBhbmQgdGhyZWFkcyBtdWx0aXNpZ1R5cGVWZXJzaW9uPSdNUEN2Micgc28gcmVjb3ZlcigpIHNraXBzIGRldGVjdGlvbiBlbnRpcmVseVxuICAgICAgbXBjVjJDb25zb2xpZGF0aW9uU2FuZEJveC5hc3NlcnQubm90Q2FsbGVkKGlzTXBjdjJTcHkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjYWxsIGlzTXBjdjJTaWduaW5nTWF0ZXJpYWwgZXhhY3RseSB6ZXJvIHRpbWVzIGluIHJlY292ZXIoKSB3aGVuIG11bHRpc2lnVHlwZVZlcnNpb24gaXMgcHJlLXJlc29sdmVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gaXNNcGN2MlNpZ25pbmdNYXRlcmlhbCBtdXN0IG5vdCBiZSBjYWxsZWQgaW5zaWRlIHJlY292ZXIoKSB3aGVuIHJlY292ZXJDb25zb2xpZGF0aW9uc1xuICAgICAgLy8gcHJlLXJlc29sdmVzIHRoZSByb3V0ZSBhbmQgcGFzc2VzIG11bHRpc2lnVHlwZVZlcnNpb249J01QQ3YyJ1xuICAgICAgY29uc3QgaXNNcGN2MlNweSA9IG1wY1YyQ29uc29saWRhdGlvblNhbmRCb3guc3B5KFNvbC5wcm90b3R5cGUsICdpc01wY3YyU2lnbmluZ01hdGVyaWFsJyBhcyBrZXlvZiBTb2wpO1xuXG4gICAgICAvLyBhZGRyZXNzZXMgMeKAkzQgYWxsIGhhdmUgbm8gZnVuZHMg4oCUIHNjYW4gcmFuZ2UgaXMgNSBpbmRleGVzIHdpZGVcbiAgICAgIGZvciAoY29uc3QgYWRkciBvZiBbbXBjVjJBZGRyZXNzMSwgbXBjVjJBZGRyZXNzMiwgbXBjVjJBZGRyZXNzM10pIHtcbiAgICAgICAgY2FsbEJhY2tcbiAgICAgICAgICAud2l0aEFyZ3MoeyBwYXlsb2FkOiB7IGlkOiAnMScsIGpzb25ycGM6ICcyLjAnLCBtZXRob2Q6ICdnZXRCYWxhbmNlJywgcGFyYW1zOiBbYWRkcl0gfSB9KVxuICAgICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEJhbGFuY2VSZXNwb25zZU5vRnVuZHMpO1xuICAgICAgfVxuICAgICAgY29uc3QgbXBjVjJBZGRyZXNzNCA9IG5ldyBLZXlQYWlyKHtcbiAgICAgICAgcHViOiAoYXdhaXQgRUREU0FNZXRob2RzLmdldEluaXRpYWxpemVkTXBjSW5zdGFuY2UoKSkuZGVyaXZlVW5oYXJkZW5lZChtcGNWMkNvbW1vbktleUNoYWluLCAnbS80Jykuc2xpY2UoMCwgNjQpLFxuICAgICAgfSkuZ2V0QWRkcmVzcygpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHsgcGF5bG9hZDogeyBpZDogJzEnLCBqc29ucnBjOiAnMi4wJywgbWV0aG9kOiAnZ2V0QmFsYW5jZScsIHBhcmFtczogW21wY1YyQWRkcmVzczRdIH0gfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50QmFsYW5jZVJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIG1wY1YyQWRkcmVzczQsXG4gICAgICAgICAgICAgIHsgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScgfSxcbiAgICAgICAgICAgICAgeyBlbmNvZGluZzogJ2pzb25QYXJzZWQnIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0VG9rZW5BY2NvdW50c0J5T3duZXJSZXNwb25zZU5vQWNjb3VudHMpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRBY2NvdW50SW5mbycsXG4gICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVB1YktleSwgeyBlbmNvZGluZzogJ2pzb25QYXJzZWQnIH1dLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEluZm9SZXNwb25zZSk7XG5cbiAgICAgIGF3YWl0IGJhc2Vjb2luLnJlY292ZXJDb25zb2xpZGF0aW9ucyh7XG4gICAgICAgIHVzZXJLZXk6IG1wY1YyVXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiBtcGNWMkJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IG1wY1YyQ29tbW9uS2V5Q2hhaW4sXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIHN0YXJ0aW5nU2NhbkluZGV4OiAxLFxuICAgICAgICBlbmRpbmdTY2FuSW5kZXg6IDUsXG4gICAgICAgIGR1cmFibGVOb25jZXMsXG4gICAgICB9KTtcblxuICAgICAgLy8gcmVjb3ZlcigpIG11c3Qgbm90IGNhbGwgaXNNcGN2MlNpZ25pbmdNYXRlcmlhbCDigJQgbXVsdGlzaWdUeXBlVmVyc2lvbiBzaG9ydC1jaXJjdWl0cyBpdFxuICAgICAgbXBjVjJDb25zb2xpZGF0aW9uU2FuZEJveC5hc3NlcnQubm90Q2FsbGVkKGlzTXBjdjJTcHkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCBNUEN2MiBzaWduZWQgU1BMIHRva2VuIGNvbnNvbGlkYXRpb24gcmVjb3ZlcmllcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7IHBheWxvYWQ6IHsgaWQ6ICcxJywganNvbnJwYzogJzIuMCcsIG1ldGhvZDogJ2dldEJhbGFuY2UnLCBwYXJhbXM6IFttcGNWMlRva2VuQWRkcmVzczFdIH0gfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50QmFsYW5jZVJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIG1wY1YyVG9rZW5BZGRyZXNzMSxcbiAgICAgICAgICAgICAgeyBwcm9ncmFtSWQ6ICdUb2tlbmtlZ1FmZVp5aU53QUpiTmJHS1BGWENXdUJ2ZjlTczYyM1ZRNURBJyB9LFxuICAgICAgICAgICAgICB7IGVuY29kaW5nOiAnanNvblBhcnNlZCcgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lclJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIG1wY1YyVG9rZW5CYXNlQWRkcmVzcyxcbiAgICAgICAgICAgICAgeyBwcm9ncmFtSWQ6ICdUb2tlbmtlZ1FmZVp5aU53QUpiTmJHS1BGWENXdUJ2ZjlTczYyM1ZRNURBJyB9LFxuICAgICAgICAgICAgICB7IGVuY29kaW5nOiAnanNvblBhcnNlZCcgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lclJlc3BvbnNlTm9BY2NvdW50cyk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEFjY291bnRJbmZvJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Rlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LCB7IGVuY29kaW5nOiAnanNvblBhcnNlZCcgfV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50SW5mb1Jlc3BvbnNlKTtcblxuICAgICAgY29uc3QgcmVzID0gKGF3YWl0IGJhc2Vjb2luLnJlY292ZXJDb25zb2xpZGF0aW9ucyh7XG4gICAgICAgIHVzZXJLZXk6IG1wY1YyVG9rZW5Vc2VyS2V5LFxuICAgICAgICBiYWNrdXBLZXk6IG1wY1YyVG9rZW5CYWNrdXBLZXksXG4gICAgICAgIGJpdGdvS2V5OiBtcGNWMlRva2VuQ29tbW9uS2V5Q2hhaW4sXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIHN0YXJ0aW5nU2NhbkluZGV4OiAxLFxuICAgICAgICBlbmRpbmdTY2FuSW5kZXg6IDIsXG4gICAgICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiB1c2R0TWludEFkZHJlc3MsXG4gICAgICAgIGR1cmFibGVOb25jZXMsXG4gICAgICB9KSkgYXMgTVBDVHhzO1xuXG4gICAgICByZXMuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgcmVzLnRyYW5zYWN0aW9ucy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgY29uc3QgdHhuID0gcmVzLnRyYW5zYWN0aW9uc1swXSBhcyBNUENUeDtcbiAgICAgIHR4bi5zZXJpYWxpemVkVHguc2hvdWxkLmVxdWFsKCdzdHViLXNlcmlhbGl6ZWQtdHgnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdXNlIGxlZ2FjeSBkZXJpdmF0aW9uIGZvciBNUEN2MiB1bnNpZ25lZCAobm8gcGFzc3BocmFzZSkgY29uc29saWRhdGlvbiDigJQgY29sZCBwYXRoIHVuY2hhbmdlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFdpdGhvdXQgd2FsbGV0UGFzc3BocmFzZSwgaXNNcGNWMiBtdXN0IGJlIGZhbHNlLCBiYXNlIGFkZHJlc3MgdXNlcyBNUEMuZGVyaXZlVW5oYXJkZW5lZFxuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7IGlkOiAnMScsIGpzb25ycGM6ICcyLjAnLCBtZXRob2Q6ICdnZXRCYWxhbmNlJywgcGFyYW1zOiBbdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMV0gfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50QmFsYW5jZVJlc3BvbnNlTm9GdW5kcyk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHsgaWQ6ICcxJywganNvbnJwYzogJzIuMCcsIG1ldGhvZDogJ2dldEJhbGFuY2UnLCBwYXJhbXM6IFt0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MyXSB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRUb2tlbkFjY291bnRzQnlPd25lcicsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMixcbiAgICAgICAgICAgICAgeyBwcm9ncmFtSWQ6ICdUb2tlbmtlZ1FmZVp5aU53QUpiTmJHS1BGWENXdUJ2ZjlTczYyM1ZRNURBJyB9LFxuICAgICAgICAgICAgICB7IGVuY29kaW5nOiAnanNvblBhcnNlZCcgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lclJlc3BvbnNlTm9BY2NvdW50cyk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEFjY291bnRJbmZvJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Rlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LCB7IGVuY29kaW5nOiAnanNvblBhcnNlZCcgfV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50SW5mb1Jlc3BvbnNlKTtcblxuICAgICAgY29uc3QgcmVzID0gKGF3YWl0IGJhc2Vjb2luLnJlY292ZXJDb25zb2xpZGF0aW9ucyh7XG4gICAgICAgIGJpdGdvS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJpdGdvS2V5LFxuICAgICAgICBzdGFydGluZ1NjYW5JbmRleDogMSxcbiAgICAgICAgZW5kaW5nU2NhbkluZGV4OiAzLFxuICAgICAgICBkdXJhYmxlTm9uY2VzLFxuICAgICAgfSkpIGFzIE1QQ1N3ZWVwVHhzO1xuXG4gICAgICByZXMuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgcmVzLnR4UmVxdWVzdHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIGNvbnN0IHR4bjEgPSByZXMudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeDtcbiAgICAgIC8vIHNvdXJjZSBhZGRyZXNzIGlzIGxlZ2FjeS1kZXJpdmVkIGZyb20gd2FsbGV0QWRkcmVzczJcbiAgICAgIHNob3VsZC5lcXVhbCh0eG4xLmNvaW5TcGVjaWZpYz8uY29tbW9uS2V5Y2hhaW4sIHRlc3REYXRhLndyd1VzZXIuYml0Z29LZXkucmVwbGFjZSgvXFxzL2csICcnKSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdicm9hZGNhc3RUcmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBzYW5kQm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuXG4gICAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICAgIHNhbmRCb3gucmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBicm9hZGNhc3QgYSB0cmFuc2FjdGlvbiBzdWNjZXNmdWxseScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHNlcmlhbGl6ZWRTaWduZWRUcmFuc2FjdGlvbiA9IHRlc3REYXRhLnJhd1RyYW5zYWN0aW9ucy50cmFuc2Zlci5zaWduZWQ7XG4gICAgICBjb25zdCBicm9hZGNhc3RTdHViID0gc2FuZEJveFxuICAgICAgICAuc3R1YihTb2wucHJvdG90eXBlLCAnZ2V0RGF0YUZyb21Ob2RlJyBhcyBrZXlvZiBTb2wpXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnc2VuZFRyYW5zYWN0aW9uJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICBzZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb24sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogJ2Jhc2U2NCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuYnJvYWRjYXN0VHJhbnNhY3Rpb25SZXNwb25zZSk7XG5cbiAgICAgIGNvbnN0IGJyb2FkY2FzdFR4biA9IGF3YWl0IGJhc2Vjb2luLmJyb2FkY2FzdFRyYW5zYWN0aW9uKHsgc2VyaWFsaXplZFNpZ25lZFRyYW5zYWN0aW9uIH0pO1xuICAgICAgYXNzZXJ0Lm9rKGJyb2FkY2FzdFR4bik7XG4gICAgICBhc3NlcnQub2soYnJvYWRjYXN0VHhuLnR4SWQpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKFxuICAgICAgICBicm9hZGNhc3RUeG4udHhJZCxcbiAgICAgICAgJzJpZDNZQzJqSzlHNVdvMnBoRHg0Z0pWQWV3OERjWTVOQW9qblZ1YW84cmt4d1BZUGU4Y1N3RTVHemhFZ0pBMnk4ZlZqREVvNmlSNnlrQnZEeHJUUXJ0cGInXG4gICAgICApO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJyb2FkY2FzdFN0dWIuY2FsbENvdW50LCAxKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgaWYgZ290IGFuIGVycm9yIGZyb20gdGhlIG5vZGUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBzZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb24gPSB0ZXN0RGF0YS5yYXdUcmFuc2FjdGlvbnMudHJhbnNmZXIuc2lnbmVkO1xuICAgICAgY29uc3QgYnJvYWRjYXN0U3R1YiA9IHNhbmRCb3hcbiAgICAgICAgLnN0dWIoU29sLnByb3RvdHlwZSwgJ2dldERhdGFGcm9tTm9kZScgYXMga2V5b2YgU29sKVxuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ3NlbmRUcmFuc2FjdGlvbicsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgc2VyaWFsaXplZFNpZ25lZFRyYW5zYWN0aW9uLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6ICdiYXNlNjQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmJyb2FkY2FzdFRyYW5zYWN0aW9uUmVzcG9uc2VFcnJvcik7XG5cbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgYXdhaXQgYmFzZWNvaW4uYnJvYWRjYXN0VHJhbnNhY3Rpb24oeyBzZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb24gfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHsgbWVzc2FnZTogJ0Vycm9yIGJyb2FkY2FzdGluZyB0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24gc2ltdWxhdGlvbiBmYWlsZWQ6IEJsb2NraGFzaCBub3QgZm91bmQnIH1cbiAgICAgICk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnJvYWRjYXN0U3R1Yi5jYWxsQ291bnQsIDEpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBpcyBub3QgYSB2YWxpZCB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHNlcmlhbGl6ZWRTaWduZWRUcmFuc2FjdGlvbiA9ICdyYW5kb21zdHJpbmcnO1xuXG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGF3YWl0IGJhc2Vjb2luLmJyb2FkY2FzdFRyYW5zYWN0aW9uKHsgc2VyaWFsaXplZFNpZ25lZFRyYW5zYWN0aW9uIH0pO1xuICAgICAgICB9LFxuICAgICAgICB7IG1lc3NhZ2U6ICdJbnZhbGlkIHJhdyB0cmFuc2FjdGlvbicgfVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgaWYgaXMgbm90IGEgc2lnbmVkIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgc2VyaWFsaXplZFNpZ25lZFRyYW5zYWN0aW9uID0gdGVzdERhdGEucmF3VHJhbnNhY3Rpb25zLnRyYW5zZmVyLnVuc2lnbmVkO1xuXG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGF3YWl0IGJhc2Vjb2luLmJyb2FkY2FzdFRyYW5zYWN0aW9uKHsgc2VyaWFsaXplZFNpZ25lZFRyYW5zYWN0aW9uIH0pO1xuICAgICAgICB9LFxuICAgICAgICB7IG1lc3NhZ2U6ICdJbnZhbGlkIHJhdyB0cmFuc2FjdGlvbicgfVxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0F1ZGl0S2V5JywgKCkgPT4ge1xuICAgIGNvbnN0IHsga2V5OiBrZXlTdHJpbmcsIGNvbW1vbktleWNoYWluIH0gPSBzb2xCYWNrdXBLZXk7XG4gICAgY29uc3Qga2V5ID0ga2V5U3RyaW5nLnJlcGxhY2UoL1xccy9nLCAnJyk7XG4gICAgY29uc3Qgd2FsbGV0UGFzc3BocmFzZSA9ICdrQW1bRUZRNm89U3hsY0xGRHclLCc7XG4gICAgY29uc3QgbXVsdGlTaWdUeXBlID0gJ3Rzcyc7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBmb3IgdmFsaWQgaW5wdXRzJywgKCkgPT4ge1xuICAgICAgYmFzZWNvaW4uYXNzZXJ0SXNWYWxpZEtleSh7XG4gICAgICAgIGVuY3J5cHRlZFBydjoga2V5LFxuICAgICAgICBwdWJsaWNLZXk6IGNvbW1vbktleWNoYWluLFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICBtdWx0aVNpZ1R5cGUsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3IgaWYgdGhlIGNvbW1vbktleWNoYWluIGlzIGludmFsaWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBhbHRlcmVkQ29tbW9uS2V5Y2hhaW4gPSBnZW5lcmF0ZVJhbmRvbVBhc3N3b3JkKDEwKTtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgICAoKSA9PlxuICAgICAgICAgIGJhc2Vjb2luLmFzc2VydElzVmFsaWRLZXkoe1xuICAgICAgICAgICAgZW5jcnlwdGVkUHJ2OiBrZXksXG4gICAgICAgICAgICBwdWJsaWNLZXk6IGFsdGVyZWRDb21tb25LZXljaGFpbixcbiAgICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgICAgICBtdWx0aVNpZ1R5cGUsXG4gICAgICAgICAgfSksXG4gICAgICAgIHtcbiAgICAgICAgICBtZXNzYWdlOiAnSW52YWxpZCBjb21tb24ga2V5Y2hhaW4nLFxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBpZiB0aGUgd2FsbGV0UGFzc3BocmFzZSBpcyBpbmNvcnJlY3QnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBpbmNvcnJlY3RQYXNzcGhyYXNlID0gJ2Zvbyc7XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgKCkgPT5cbiAgICAgICAgICBiYXNlY29pbi5hc3NlcnRJc1ZhbGlkS2V5KHtcbiAgICAgICAgICAgIGVuY3J5cHRlZFBydjoga2V5LFxuICAgICAgICAgICAgcHVibGljS2V5OiBjb21tb25LZXljaGFpbixcbiAgICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2U6IGluY29ycmVjdFBhc3NwaHJhc2UsXG4gICAgICAgICAgICBtdWx0aVNpZ1R5cGUsXG4gICAgICAgICAgfSksXG4gICAgICAgIHtcbiAgICAgICAgICBtZXNzYWdlOiAnZmFpbGVkIHRvIGRlY3J5cHQgcHJ2OiBpbmNvcnJlY3QgcGFzc3dvcmQnLFxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBpZiB0aGUga2V5IGlzIGFsdGVyZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBhbHRlcmVkS2V5ID0ga2V5LnJlcGxhY2UoL1swLTldL2csICcwJyk7XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgKCkgPT5cbiAgICAgICAgICBiYXNlY29pbi5hc3NlcnRJc1ZhbGlkS2V5KHtcbiAgICAgICAgICAgIGVuY3J5cHRlZFBydjogYWx0ZXJlZEtleSxcbiAgICAgICAgICAgIHB1YmxpY0tleTogY29tbW9uS2V5Y2hhaW4sXG4gICAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICAgICAgbXVsdGlTaWdUeXBlLFxuICAgICAgICAgIH0pLFxuICAgICAgICB7XG4gICAgICAgICAgbWVzc2FnZTogJ2ZhaWxlZCB0byBkZWNyeXB0IHBydjogZGVjcnlwdDogY2lwaGVydGV4dCBpcyBub3QgdmFsaWQgSlNPTicsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSBjb25zb2xpZGF0aW9uIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gU2V0IHVwIHdhbGxldCBkYXRhXG4gICAgICBjb25zdCB3YWxsZXREYXRhID0ge1xuICAgICAgICBpZDogJzViMzQyNTJmMWJmMzQ5OTMwZTM0MDIwYTAwMDAwMDAwJyxcbiAgICAgICAgY29pbjogJ3Rzb2wnLFxuICAgICAgICBrZXlzOiBbXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NTAwMDAwMDAwJyxcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc2MDAwMDAwMDAnLFxuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzcwMDAwMDAwMCcsXG4gICAgICAgIF0sXG4gICAgICAgIGNvaW5TcGVjaWZpYzoge1xuICAgICAgICAgIHJvb3RBZGRyZXNzOiB3YWxsZXQucHViLFxuICAgICAgICB9LFxuICAgICAgICBtdWx0aXNpZ1R5cGU6ICd0c3MnLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGZha2VQcnYgPSBhd2FpdCBlbmNyeXB0KCdwYXNzd29yZCcsICdwcnYnKTtcblxuICAgICAgY29uc3Qgd2FsbGV0T2JqID0gbmV3IFdhbGxldChiaXRnbywgYmFzZWNvaW4sIHdhbGxldERhdGEpO1xuICAgICAgY29uc3QgYmdVcmwgPSBjb21tb24uRW52aXJvbm1lbnRzWydtb2NrJ10udXJpO1xuXG4gICAgICBub2NrKGJnVXJsKVxuICAgICAgICAuZ2V0KCcvYXBpL3YyL3Rzb2wva2V5LzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NTAwMDAwMDAwJylcbiAgICAgICAgLnJlcGx5KDIwMCwgW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGVuY3J5cHRlZFBydjogZmFrZVBydixcbiAgICAgICAgICB9LFxuICAgICAgICBdKTtcblxuICAgICAgLy8gTW9jayB0aGUgQVBJIHJlc3BvbnNlIGZvciBidWlsZEFjY291bnRDb25zb2xpZGF0aW9uc1xuICAgICAgbm9jayhiZ1VybClcbiAgICAgICAgLnBvc3QoJy9hcGkvdjIvdHNvbC93YWxsZXQvNWIzNDI1MmYxYmYzNDk5MzBlMzQwMjBhMDAwMDAwMDAvY29uc29saWRhdGVBY2NvdW50L2J1aWxkJylcbiAgICAgICAgLnJlcGx5KDIwMCwgW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR4UmVxdWVzdElkOiAnNGZkZDBjYWUtMjU2My00M2IxLWI1Y2YtOTQ4NjUxNThjYTEwJyxcbiAgICAgICAgICAgIHdhbGxldElkOiAnNjMwNjhlZDRlZmE2M2EwMDA4NzdmMDJmZDRiMGZhNmQnLFxuICAgICAgICAgICAgdHhIZXg6XG4gICAgICAgICAgICAgICcwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNmY1MDEzMGFiZjhkMGQ4OTQzYzViOWE1MWE1NzQ4ODZhN2Q3YjNkOGRiMThmMGRkYjRhYjhiNmQzZWMyN2UzYzJmMzZmMzMzOWJiOTJkNDI5NmFmNmFlNGQzYWJmYmIwNzg3N2Y3N2QwMDMzYzg4M2RlMDhmYTRhMmVlYTY3MGQwMjAxMDIwNjc0YTlkZjJiOTRhYTRiNGFkYTEyMDJkYzI4OTFiZTM2NjUwMWQwYWNiNGEwMWNhM2UwMmU3ZmQ2YzFmNTA1YTcxYzk2MTcyMDQ0ZjEyMTdjMzc4NGU4ZjAyZjQ5ZTJjOGZjMzU5MWU4MTI5NGFiNTQzOTRmOWQyMmZkN2I3YThmODQwMWMzZjY3Y2ZhNTI1MThiMzRhMDliMDhmNGVhNzdlMWM0ZmI5ZDg5YmZhY2NkYzMzY2Y4YjhhOWNmOGQ3YmYwZTA0Yzg5YzUwNDI4ZTRlZGE1Y2JiNzU5NDI3YzM3MGYwYTI5YTUwYmIwZDE0MDdlNTc5MjRiMGNjNWIzNmYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDZhN2Q1MTcxOTJjNTY4ZWUwOGE4NDVmNzNkMjk3ODhjZjAzNWMzMTQ1YjIxYWIzNDRkODA2MmVhOTQwMDAwMDQwYzk1NjgxOTVkNjdlYjZiMzk2ZmRiZTk3YmEyZTI3NjYyMmVmMDAyM2FmMDlmMjNlNmUwMjkyYWJiNjc4ZDkwMjA0MDMwMzA1MDEwNDA0MDAwMDAwMDQwMjAwMDIwYzAyMDAwMDAwMDEwMDAwMDAwMDAwMDAwMCcsXG4gICAgICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgICAgIGZlZTogMTAwMDAsXG4gICAgICAgICAgICAgIGZlZVN0cmluZzogJzEwMDAwJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0eEluZm86IHtcbiAgICAgICAgICAgICAgbWluZXJGZWU6ICcxMDAwMCcsXG4gICAgICAgICAgICAgIHNwZW5kQW1vdW50OiAnMTU0Nzg2NCcsXG4gICAgICAgICAgICAgIHNwZW5kQW1vdW50czogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGNvaW5OYW1lOiAndHNvbCcsXG4gICAgICAgICAgICAgICAgICBhbW91bnRTdHJpbmc6ICcxNTQ3ODY0JyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBwYXlHb0ZlZTogJzAnLFxuICAgICAgICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgYWRkcmVzczogJzhyUVhlVkVNckt2dFdDRUppckVNNmNLWW5iWnVUcVZUYnFSUGlNTUFKOFI0JyxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiAxNTQ3ODY0LFxuICAgICAgICAgICAgICAgICAgd2FsbGV0OiAnNjMwNjhlZDRlZmE2M2EwMDA4NzdmMDJmJyxcbiAgICAgICAgICAgICAgICAgIHdhbGxldHM6IFsnNjMwNjhlZDRlZmE2M2EwMDA4NzdmMDJmJ10sXG4gICAgICAgICAgICAgICAgICBlbnRlcnByaXNlOiAnNjJkNzFhNmI4NjA2OGYwMDA4ZjAyOWZkJyxcbiAgICAgICAgICAgICAgICAgIGVudGVycHJpc2VzOiBbJzYyZDcxYTZiODYwNjhmMDAwOGYwMjlmZCddLFxuICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcxNTQ3ODY0JyxcbiAgICAgICAgICAgICAgICAgIGNvaW5OYW1lOiAndHNvbCcsXG4gICAgICAgICAgICAgICAgICB3YWxsZXRUeXBlOiAnaG90JyxcbiAgICAgICAgICAgICAgICAgIHdhbGxldFR5cGVzOiBbJ2hvdCddLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiAxNTQ3ODY0LFxuICAgICAgICAgICAgICAgICAgYWRkcmVzczogJ0NtWXNOM2Y4YmNtNEJEa0ZKV05zdllnalJ4TVRMSDZ2YkpXTmZZZG1IN0dVJyxcbiAgICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTU0Nzg2NCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB2YWx1ZTogMTAwMDAsXG4gICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnQ21Zc04zZjhiY200QkRrRkpXTnN2WWdqUnhNVExINnZiSldOZllkbUg3R1UnLFxuICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcxMDAwMCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgdHlwZTogJ1NlbmQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbnNvbGlkYXRlSWQ6ICc2OGE3ZDVkMGM2NmU3NGUyMTZiOTcxNzNiZDU1OGM2ZCcsXG4gICAgICAgICAgICBjb2luOiAndHNvbCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG5cbiAgICAgIC8vIENhbGwgdGhlIGZ1bmN0aW9uIHRvIHRlc3RcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgYXdhaXQgd2FsbGV0T2JqLnNlbmRBY2NvdW50Q29uc29saWRhdGlvbnMoe1xuICAgICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogJ3Bhc3N3b3JkJyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG1lc3NhZ2U6ICd0eCBvdXRwdXRzIGRvZXMgbm90IG1hdGNoIHdpdGggZXhwZWN0ZWQgYWRkcmVzcycsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSB2YWxpZCBhIGNvbnNvbGlkYXRpb24gdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBjb25zb2xpZGF0aW9uVHggPSB7XG4gICAgICAgIHR4UmVxdWVzdElkOiAnNGZkZDBjYWUtMjU2My00M2IxLWI1Y2YtOTQ4NjUxNThjYTEwJyxcbiAgICAgICAgd2FsbGV0SWQ6ICc2MzA2OGVkNGVmYTYzYTAwMDg3N2YwMmZkNGIwZmE2ZCcsXG4gICAgICAgIHR4SGV4OlxuICAgICAgICAgICcwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAxMDIwNmFlZGEyNTNhMzMxZGU0ODk4MzgyNDZkZjkzODc5NDQwYWY4YzYyYWM0OTY3NjU4ZWRjMmJiNWQ1MmI5NzU5ZDkxYzk2MTcyMDQ0ZjEyMTdjMzc4NGU4ZjAyZjQ5ZTJjOGZjMzU5MWU4MTI5NGFiNTQzOTRmOWQyMmZkN2I3YThmNzRhOWRmMmI5NGFhNGI0YWRhMTIwMmRjMjg5MWJlMzY2NTAxZDBhY2I0YTAxY2EzZTAyZTdmZDZjMWY1MDVhN2QyNzM0ZjM5NTJmM2ViNGFlZmNmNmM3YTYwOTJlOTc5ZGQzZmU1NTYzY2NmYWNhMWNjOTI2NTJhMTVkZGQzOTMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDZhN2Q1MTcxOTJjNTY4ZWUwOGE4NDVmNzNkMjk3ODhjZjAzNWMzMTQ1YjIxYWIzNDRkODA2MmVhOTQwMDAwMDQyOGRhZDQxYmJlZGViMzgwMTgzNzllNGNlZWI3ZTgwNzU3ZDc0ZGQwMGFlOGM0N2MzOGQ1OTc0NzczMzlhZDgwMjA0MDMwMzA1MDEwNDA0MDAwMDAwMDQwMjAwMDIwYzAyMDAwMDAwNTg5ZTE3MDAwMDAwMDAwMCcsXG4gICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICBmZWU6IDEwMDAwLFxuICAgICAgICAgIGZlZVN0cmluZzogJzEwMDAwJyxcbiAgICAgICAgfSxcbiAgICAgICAgdHhJbmZvOiB7XG4gICAgICAgICAgbWluZXJGZWU6ICcxMDAwMCcsXG4gICAgICAgICAgc3BlbmRBbW91bnQ6ICcxNTQ3ODY0JyxcbiAgICAgICAgICBzcGVuZEFtb3VudHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29pbk5hbWU6ICd0c29sJyxcbiAgICAgICAgICAgICAgYW1vdW50U3RyaW5nOiAnMTU0Nzg2NCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcGF5R29GZWU6ICcwJyxcbiAgICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGFkZHJlc3M6ICc4clFYZVZFTXJLdnRXQ0VKaXJFTTZjS1luYlp1VHFWVGJxUlBpTU1BSjhSNCcsXG4gICAgICAgICAgICAgIHZhbHVlOiAxNTQ3ODY0LFxuICAgICAgICAgICAgICB3YWxsZXQ6ICc2MzA2OGVkNGVmYTYzYTAwMDg3N2YwMmYnLFxuICAgICAgICAgICAgICB3YWxsZXRzOiBbJzYzMDY4ZWQ0ZWZhNjNhMDAwODc3ZjAyZiddLFxuICAgICAgICAgICAgICBlbnRlcnByaXNlOiAnNjJkNzFhNmI4NjA2OGYwMDA4ZjAyOWZkJyxcbiAgICAgICAgICAgICAgZW50ZXJwcmlzZXM6IFsnNjJkNzFhNmI4NjA2OGYwMDA4ZjAyOWZkJ10sXG4gICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTU0Nzg2NCcsXG4gICAgICAgICAgICAgIGNvaW5OYW1lOiAndHNvbCcsXG4gICAgICAgICAgICAgIHdhbGxldFR5cGU6ICdob3QnLFxuICAgICAgICAgICAgICB3YWxsZXRUeXBlczogWydob3QnXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdmFsdWU6IDE1NDc4NjQsXG4gICAgICAgICAgICAgIGFkZHJlc3M6ICdDbVlzTjNmOGJjbTRCRGtGSldOc3ZZZ2pSeE1UTEg2dmJKV05mWWRtSDdHVScsXG4gICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTU0Nzg2NCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB2YWx1ZTogMTAwMDAsXG4gICAgICAgICAgICAgIGFkZHJlc3M6ICdDbVlzTjNmOGJjbTRCRGtGSldOc3ZZZ2pSeE1UTEg2dmJKV05mWWRtSDdHVScsXG4gICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTAwMDAnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHR5cGU6ICdTZW5kJyxcbiAgICAgICAgfSxcbiAgICAgICAgY29uc29saWRhdGVJZDogJzY4YTdkNWQwYzY2ZTc0ZTIxNmI5NzE3M2JkNTU4YzZkJyxcbiAgICAgICAgY29pbjogJ3Rzb2wnLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgbW9ja2VkV2FsbGV0OiBQYXJ0aWFsPElXYWxsZXQ+ID0ge1xuICAgICAgICBjb2luU3BlY2lmaWM6ICgpID0+IHtcbiAgICAgICAgICBjb25zdCBjcyA9IHtcbiAgICAgICAgICAgIHJvb3RBZGRyZXNzOiAnOHJRWGVWRU1yS3Z0V0NFSmlyRU02Y0tZbmJadVRxVlRicVJQaU1NQUo4UjQnLFxuICAgICAgICAgIH0gYXMgV2FsbGV0Q29pblNwZWNpZmljO1xuICAgICAgICAgIHJldHVybiBjcztcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhKGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICAgIGJsb2NraGFzaDogJycsXG4gICAgICAgICAgICBmZWVQYXllcjogJycsXG4gICAgICAgICAgICB0eFBhcmFtczoge30sXG4gICAgICAgICAgICB0eFByZWJ1aWxkOiBjb25zb2xpZGF0aW9uVHggYXMgdW5rbm93biBhcyBUcmFuc2FjdGlvblByZWJ1aWxkLFxuICAgICAgICAgICAgd2FsbGV0VHlwZTogJ3RzcycsXG4gICAgICAgICAgICB3YWxsZXQ6IG1vY2tlZFdhbGxldCBhcyBJV2FsbGV0LFxuICAgICAgICAgICAgdmVyaWZpY2F0aW9uOiB7XG4gICAgICAgICAgICAgIGNvbnNvbGlkYXRpb25Ub0Jhc2VBZGRyZXNzOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgYXNzZXJ0LmZhaWwoJ1RyYW5zYWN0aW9uIHNob3VsZCBwYXNzIHZlcmlmaWNhdGlvbicpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGFzc2VydC5mYWlsKCdUcmFuc2FjdGlvbiBzaG91bGQgcGFzcyB2ZXJpZmljYXRpb24nKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IGEgdG9rZW4gY29uc29saWRhdGlvbiB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbnNvbGlkYXRpb25UeCA9IHtcbiAgICAgICAgdHhSZXF1ZXN0SWQ6ICc0ZmRkMGNhZS0yNTYzLTQzYjEtYjVjZi05NDg2NTE1OGNhMTAnLFxuICAgICAgICB3YWxsZXRJZDogJzYzMDY4ZWQ0ZWZhNjNhMDAwODc3ZjAyZmQ0YjBmYTZkJyxcbiAgICAgICAgdHhIZXg6XG4gICAgICAgICAgJzAyYjdjMmM3ODI5ZWRlZDRlOGY5NDdjOTBlZDNiOWFmY2U3MWY2MTZlYjQ3ZGZjZmJmNGI3NjU3NzgxNDkwNjAwMTNhY2IzM2I5ZjY3ZmRkOWMyNTEyZjQ4ZmFjNGU0YzA0OWVhYjkzODI5YjY5NDA0ZjNiZDE2NmZlMzI0MmM5MDcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDEwNDA5NmRhNjkwYmQ1NThmZDg2MzRhYzE0ZjE2NDVkODA5NWFmZDBjYWVhNTk1MzU3OGM1OTZlM2MwZGVhMzgzMDVlZTcyOThiZmFjNTUxMDFmMTc3NzM1NjU5ZDQyZWQ2YmU4OTBlZjNhMWQyMDRkOWUzM2YzMmUyNGM1NjM1MzI3Y2E2NmQxZmUwMDgyNmU1YTRmNzU5Zjg3YjI3OWMxYWVlMTljY2U1MzAxYWY0ZWQ2NmFlMTdkYjQ4YjIwMWVkNmMyYTBlOGEyOGJmNTY1NjI3ZjFhYjhhMzRiMWE5NWVlMWIwYTJhMzkwODRmMWYwZTJhY2IxYzM5NGIyMDE4NWQ4ZTBiMjI2NTdjOGQ5YzRjZTVmNjQ5NWVmYjY0MTBjMTk5MDExNTMwZjkwZTNhYjlkOGQxZTQyMDZmOWFlMGZmZWIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYzVmOWZiMzJmNDkxMTFhYjIwYzMzZjI1OThmYzgzNmMxMTNlMjkxODgxYWMyMWVlMjkxNjkzOTQwMTEyNDRlNDA2YTdkNTE3MTkyYzU2OGVlMDhhODQ1ZjczZDI5Nzg4Y2YwMzVjMzE0NWIyMWFiMzQ0ZDgwNjJlYTk0MDAwMDAwNmRkZjZlMWQ3NjVhMTkzZDljYmUxNDZjZWViNzlhYzFjYjQ4NWVkNWY1YjM3OTEzYThjZjU4NTdlZmYwMGE5ZGUxM2M3NGQyYjRkOTQ4ZTE2MDhlYTZlZWJkYWZlNzViYzJmOTk1YWFkMTFiMjFkMWUyYzk0ZjJhMmQxMmY2ODAyMDUwMzAzMDcwMDA0MDQwMDAwMDAwODA0MDIwNjA0MDEwYTBjZTAwNzZiYjIwNDAwMDAwMDA2JyxcbiAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgIGZlZTogMTAwMDAsXG4gICAgICAgICAgZmVlU3RyaW5nOiAnMTAwMDAnLFxuICAgICAgICB9LFxuICAgICAgICB0eEluZm86IHtcbiAgICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYWRkcmVzczogJzhpTGEyNktTYmRwQlV6Tks3dVlxOEZ2eXV5QTVoNGs0ZXJESHNEY1BiSHVzJyxcbiAgICAgICAgICAgICAgdmFsdWU6IDIuMDE3MzIyOGUxMCxcbiAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcyMDE3MzIyODAwMCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhZGRyZXNzOiAnOFAya1g3VHloOWVTM1JLZGFCaHFiRXRRR0FYNThEWHpMN21oRFFBQkdYMmQnLFxuICAgICAgICAgICAgICB2YWx1ZTogMTAwMDAsXG4gICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTAwMDAnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIG1pbmVyRmVlOiAnMTAwMDAnLFxuICAgICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYWRkcmVzczogJ0hCeFpTaGNFODZVTW1GOTNLVU04ZVdKS3FlRVhpNWNxV0NMWUxNTWhxTVltJyxcbiAgICAgICAgICAgICAgY29pbk5hbWU6ICdzb2w6d2lmJyxcbiAgICAgICAgICAgICAgZW50ZXJwcmlzZToge1xuICAgICAgICAgICAgICAgICRvaWQ6ICc1NTUzYmE4YWU3YTVjNzcwMDY3MTk2NjEnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBlbnRlcnByaXNlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICRvaWQ6ICc1NTUzYmE4YWU3YTVjNzcwMDY3MTk2NjEnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHZhbHVlOiAyLjAxNzMyMjhlMTAsXG4gICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMjAxNzMyMjgwMDAnLFxuICAgICAgICAgICAgICB3YWxsZXQ6IHtcbiAgICAgICAgICAgICAgICAkb2lkOiAnNjJmNGMzNzIwZDkyYzUwMDA4MjU3ZWI1JyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgd2FsbGV0VHlwZTogJ2hvdCcsXG4gICAgICAgICAgICAgIHdhbGxldHM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAkb2lkOiAnNjJmNGMzNzIwZDkyYzUwMDA4MjU3ZWI1JyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHBheUdvRmVlOiAnMCcsXG4gICAgICAgICAgc3BlbmRBbW91bnQ6ICcyMDE3MzIyODAwMCcsXG4gICAgICAgICAgc3BlbmRBbW91bnRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGFtb3VudFN0cmluZzogJzIwMTczMjI4MDAwJyxcbiAgICAgICAgICAgICAgY29pbk5hbWU6ICdzb2w6d2lmJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICB0eXBlOiAnU2VuZCcsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnNvbGlkYXRlSWQ6ICc2NzEyZDdmZGE2ZGU0OTA2ZDY1OGMwNGFlYmJmOGY5YicsXG4gICAgICAgIGNvaW46ICd0c29sJyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1vY2tlZFdhbGxldDogUGFydGlhbDxJV2FsbGV0PiA9IHtcbiAgICAgICAgY29pblNwZWNpZmljOiAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgY3MgPSB7XG4gICAgICAgICAgICByb290QWRkcmVzczogJ0hCeFpTaGNFODZVTW1GOTNLVU04ZVdKS3FlRVhpNWNxV0NMWUxNTWhxTVltJyxcbiAgICAgICAgICB9IGFzIFdhbGxldENvaW5TcGVjaWZpYztcbiAgICAgICAgICByZXR1cm4gY3M7XG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICB0cnkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIShhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgICBibG9ja2hhc2g6ICcnLFxuICAgICAgICAgICAgZmVlUGF5ZXI6ICcnLFxuICAgICAgICAgICAgdHhQYXJhbXM6IHt9LFxuICAgICAgICAgICAgdHhQcmVidWlsZDogY29uc29saWRhdGlvblR4IGFzIHVua25vd24gYXMgVHJhbnNhY3Rpb25QcmVidWlsZCxcbiAgICAgICAgICAgIHdhbGxldFR5cGU6ICd0c3MnLFxuICAgICAgICAgICAgd2FsbGV0OiBtb2NrZWRXYWxsZXQgYXMgSVdhbGxldCxcbiAgICAgICAgICAgIHZlcmlmaWNhdGlvbjoge1xuICAgICAgICAgICAgICBjb25zb2xpZGF0aW9uVG9CYXNlQWRkcmVzczogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSkpXG4gICAgICAgICkge1xuICAgICAgICAgIGFzc2VydC5mYWlsKCdUcmFuc2FjdGlvbiBzaG91bGQgcGFzcyB2ZXJpZmljYXRpb24nKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBhc3NlcnQuZmFpbCgnVHJhbnNhY3Rpb24gc2hvdWxkIHBhc3MgdmVyaWZpY2F0aW9uJyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSBhIHNwb29mZWQgdG9rZW4gY29uc29saWRhdGlvbiB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbnNvbGlkYXRpb25UeCA9IHtcbiAgICAgICAgdHhSZXF1ZXN0SWQ6ICc0ZmRkMGNhZS0yNTYzLTQzYjEtYjVjZi05NDg2NTE1OGNhMTAnLFxuICAgICAgICB3YWxsZXRJZDogJzYzMDY4ZWQ0ZWZhNjNhMDAwODc3ZjAyZmQ0YjBmYTZkJyxcbiAgICAgICAgdHhIZXg6XG4gICAgICAgICAgJzAyYjdjMmM3ODI5ZWRlZDRlOGY5NDdjOTBlZDNiOWFmY2U3MWY2MTZlYjQ3ZGZjZmJmNGI3NjU3NzgxNDkwNjAwMTNhY2IzM2I5ZjY3ZmRkOWMyNTEyZjQ4ZmFjNGU0YzA0OWVhYjkzODI5YjY5NDA0ZjNiZDE2NmZlMzI0MmM5MDcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDEwNDA5NmRhNjkwYmQ1NThmZDg2MzRhYzE0ZjE2NDVkODA5NWFmZDBjYWVhNTk1MzU3OGM1OTZlM2MwZGVhMzgzMDVlZTcyOThiZmFjNTUxMDFmMTc3NzM1NjU5ZDQyZWQ2YmU4OTBlZjNhMWQyMDRkOWUzM2YzMmUyNGM1NjM1MzI3Y2E2NmQxZmUwMDgyNmU1YTRmNzU5Zjg3YjI3OWMxYWVlMTljY2U1MzAxYWY0ZWQ2NmFlMTdkYjQ4YjIwMWVkNmMyYTBlOGEyOGJmNTY1NjI3ZjFhYjhhMzRiMWE5NWVlMWIwYTJhMzkwODRmMWYwZTJhY2IxYzM5NGIyMDE4NWQ4ZTBiMjI2NTdjOGQ5YzRjZTVmNjQ5NWVmYjY0MTBjMTk5MDExNTMwZjkwZTNhYjlkOGQxZTQyMDZmOWFlMGZmZWIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYzVmOWZiMzJmNDkxMTFhYjIwYzMzZjI1OThmYzgzNmMxMTNlMjkxODgxYWMyMWVlMjkxNjkzOTQwMTEyNDRlNDA2YTdkNTE3MTkyYzU2OGVlMDhhODQ1ZjczZDI5Nzg4Y2YwMzVjMzE0NWIyMWFiMzQ0ZDgwNjJlYTk0MDAwMDAwNmRkZjZlMWQ3NjVhMTkzZDljYmUxNDZjZWViNzlhYzFjYjQ4NWVkNWY1YjM3OTEzYThjZjU4NTdlZmYwMGE5ZGUxM2M3NGQyYjRkOTQ4ZTE2MDhlYTZlZWJkYWZlNzViYzJmOTk1YWFkMTFiMjFkMWUyYzk0ZjJhMmQxMmY2ODAyMDUwMzAzMDcwMDA0MDQwMDAwMDAwODA0MDIwNjA0MDEwYTBjZTAwNzZiYjIwNDAwMDAwMDA2JyxcbiAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgIGZlZTogMTAwMDAsXG4gICAgICAgICAgZmVlU3RyaW5nOiAnMTAwMDAnLFxuICAgICAgICB9LFxuICAgICAgICB0eEluZm86IHtcbiAgICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYWRkcmVzczogJzhpTGEyNktTYmRwQlV6Tks3dVlxOEZ2eXV5QTVoNGs0ZXJESHNEY1BiSHVzJyxcbiAgICAgICAgICAgICAgdmFsdWU6IDIuMDE3MzIyOGUxMCxcbiAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcyMDE3MzIyODAwMCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhZGRyZXNzOiAnOFAya1g3VHloOWVTM1JLZGFCaHFiRXRRR0FYNThEWHpMN21oRFFBQkdYMmQnLFxuICAgICAgICAgICAgICB2YWx1ZTogMTAwMDAsXG4gICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTAwMDAnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIG1pbmVyRmVlOiAnMTAwMDAnLFxuICAgICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYWRkcmVzczogJ0hCeFpTaGNFODZVTW1GOTNLVU04ZVdKS3FlRVhpNWNxV0NMWUxNTWhxTVltJyxcbiAgICAgICAgICAgICAgY29pbk5hbWU6ICdzb2w6d2lmJyxcbiAgICAgICAgICAgICAgZW50ZXJwcmlzZToge1xuICAgICAgICAgICAgICAgICRvaWQ6ICc1NTUzYmE4YWU3YTVjNzcwMDY3MTk2NjEnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBlbnRlcnByaXNlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICRvaWQ6ICc1NTUzYmE4YWU3YTVjNzcwMDY3MTk2NjEnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHZhbHVlOiAyLjAxNzMyMjhlMTAsXG4gICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMjAxNzMyMjgwMDAnLFxuICAgICAgICAgICAgICB3YWxsZXQ6IHtcbiAgICAgICAgICAgICAgICAkb2lkOiAnNjJmNGMzNzIwZDkyYzUwMDA4MjU3ZWI1JyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgd2FsbGV0VHlwZTogJ2hvdCcsXG4gICAgICAgICAgICAgIHdhbGxldHM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAkb2lkOiAnNjJmNGMzNzIwZDkyYzUwMDA4MjU3ZWI1JyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHBheUdvRmVlOiAnMCcsXG4gICAgICAgICAgc3BlbmRBbW91bnQ6ICcyMDE3MzIyODAwMCcsXG4gICAgICAgICAgc3BlbmRBbW91bnRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGFtb3VudFN0cmluZzogJzIwMTczMjI4MDAwJyxcbiAgICAgICAgICAgICAgY29pbk5hbWU6ICdzb2w6d2lmJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICB0eXBlOiAnU2VuZCcsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnNvbGlkYXRlSWQ6ICc2NzEyZDdmZGE2ZGU0OTA2ZDY1OGMwNGFlYmJmOGY5YicsXG4gICAgICAgIGNvaW46ICd0c29sJyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1vY2tlZFdhbGxldDogUGFydGlhbDxJV2FsbGV0PiA9IHtcbiAgICAgICAgY29pblNwZWNpZmljOiAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgY3MgPSB7XG4gICAgICAgICAgICByb290QWRkcmVzczogJzhyUVhlVkVNckt2dFdDRUppckVNNmNLWW5iWnVUcVZUYnFSUGlNTUFKOFI0JyxcbiAgICAgICAgICB9IGFzIFdhbGxldENvaW5TcGVjaWZpYztcbiAgICAgICAgICByZXR1cm4gY3M7XG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgYXN5bmMgKCkgPT5cbiAgICAgICAgICBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgICBibG9ja2hhc2g6ICcnLFxuICAgICAgICAgICAgZmVlUGF5ZXI6ICcnLFxuICAgICAgICAgICAgdHhQYXJhbXM6IHt9LFxuICAgICAgICAgICAgdHhQcmVidWlsZDogY29uc29saWRhdGlvblR4IGFzIHVua25vd24gYXMgVHJhbnNhY3Rpb25QcmVidWlsZCxcbiAgICAgICAgICAgIHdhbGxldFR5cGU6ICd0c3MnLFxuICAgICAgICAgICAgd2FsbGV0OiBtb2NrZWRXYWxsZXQgYXMgSVdhbGxldCxcbiAgICAgICAgICAgIHZlcmlmaWNhdGlvbjoge1xuICAgICAgICAgICAgICBjb25zb2xpZGF0aW9uVG9CYXNlQWRkcmVzczogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSksXG4gICAgICAgIHtcbiAgICAgICAgICBtZXNzYWdlOiAndHggb3V0cHV0cyBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIGFkZHJlc3MnLFxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYmxpbmQgc2lnbmluZyB0b2tlbiBlbmFibGVtZW50IHByb3RlY3Rpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgYXMgdmFsaWQgdGhlIGVuYWJsZXRva2VuIGludGVudCB3aGVuIHByZWJ1aWxkIHR4IG1hdGNocyB1c2VyIGludGVudCAnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB7IHR4UGFyYW1zLCB0eFByZWJ1aWxkUmF3LCB3YWxsZXREYXRhIH0gPSB0ZXN0RGF0YS5lbmFibGVUb2tlbkZpeHR1cmVzO1xuICAgICAgY29uc3Qgd2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbywgYmFzZWNvaW4sIHdhbGxldERhdGEpO1xuICAgICAgY29uc3Qgc2FtZUludGVudFR4ID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgdHhQcmVidWlsZDogdHhQcmVidWlsZFJhdyxcbiAgICAgICAgd2FsbGV0LFxuICAgICAgICB2ZXJpZmljYXRpb246IHsgdmVyaWZ5VG9rZW5FbmFibGVtZW50OiB0cnVlIH0sXG4gICAgICB9IGFzIHVua25vd24gYXMgU29sVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zKTtcblxuICAgICAgc2FtZUludGVudFR4LnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3duIGFuIGVycm9yIHdoZW4gdGFtcGVyZWQgcHJlYnVpbGQgdHggdHlwZSAnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB7IHR4UGFyYW1zLCB0eFByZWJ1aWxkUmF3LCBzZW5kVHhIZXgsIHdhbGxldERhdGEgfSA9IHRlc3REYXRhLmVuYWJsZVRva2VuRml4dHVyZXM7XG4gICAgICBjb25zdCB0YW1wZXJlZFR4UHJlYnVpbGQgPSB7IC4uLnR4UHJlYnVpbGRSYXcsIHR4SGV4OiBzZW5kVHhIZXggfTtcblxuICAgICAgY29uc3Qgd2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbywgYmFzZWNvaW4sIHdhbGxldERhdGEpO1xuXG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgYXN5bmMgKCkgPT5cbiAgICAgICAgICBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgICAgIHR4UHJlYnVpbGQ6IHRhbXBlcmVkVHhQcmVidWlsZCxcbiAgICAgICAgICAgIHdhbGxldCxcbiAgICAgICAgICAgIHZlcmlmaWNhdGlvbjogeyB2ZXJpZnlUb2tlbkVuYWJsZW1lbnQ6IHRydWUgfSxcbiAgICAgICAgICB9IGFzIHVua25vd24gYXMgU29sVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zKSxcbiAgICAgICAge1xuICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAnSW52YWxpZCB0cmFuc2FjdGlvbiB0eXBlIG9uIHRva2VuIGVuYWJsZW1lbnQ6IGV4cGVjdGVkIFwiQXNzb2NpYXRlZFRva2VuQWNjb3VudEluaXRpYWxpemF0aW9uXCIsIGdvdCBcIlNlbmRcIi4nLFxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgdGhhdCB0b2tlbk5hbWUgbWF0Y2hlcyBiZXR3ZWVuIHVzZXIgaW50ZW50IGFuZCBoZXgnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB7IHR4UGFyYW1zLCB0eFByZWJ1aWxkUmF3LCB3cm9uZ1Rva2VuTmFtZVR4SGV4LCB3YWxsZXREYXRhIH0gPSB0ZXN0RGF0YS5lbmFibGVUb2tlbkZpeHR1cmVzO1xuICAgICAgY29uc3QgdGFtcGVyZWRUeFByZWJ1aWxkID0geyAuLi50eFByZWJ1aWxkUmF3LCB0eEhleDogd3JvbmdUb2tlbk5hbWVUeEhleCB9O1xuICAgICAgY29uc3Qgd2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbywgYmFzZWNvaW4sIHdhbGxldERhdGEpO1xuXG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgYXN5bmMgKCkgPT5cbiAgICAgICAgICBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgICAgIHR4UHJlYnVpbGQ6IHRhbXBlcmVkVHhQcmVidWlsZCxcbiAgICAgICAgICAgIHdhbGxldCxcbiAgICAgICAgICAgIHZlcmlmaWNhdGlvbjogeyB2ZXJpZnlUb2tlbkVuYWJsZW1lbnQ6IHRydWUgfSxcbiAgICAgICAgICB9IGFzIHVua25vd24gYXMgU29sVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zKSxcbiAgICAgICAgeyBtZXNzYWdlOiAnSW52YWxpZCB0b2tlbiBuYW1lOiBleHBlY3RlZCB0c29sOnJheSwgZ290IHRzb2w6dDIybWludCBvbiB0b2tlbiBlbmFibGVtZW50IHR4JyB9XG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgdGhhdCB0b2tlbkFkZHIgbWF0Y2hlcyBiZXR3ZWVuIHVzZXIgaW50ZW50IGFuZCBoZXgnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB7IHR4UGFyYW1zLCB0eFByZWJ1aWxkUmF3LCB3cm9uZ0FkZHJUeEhleCwgd2FsbGV0RGF0YSB9ID0gdGVzdERhdGEuZW5hYmxlVG9rZW5GaXh0dXJlcztcbiAgICAgIGNvbnN0IHRhbXBlcmVkVHhQcmVidWlsZCA9IHsgLi4udHhQcmVidWlsZFJhdywgdHhIZXg6IHdyb25nQWRkclR4SGV4IH07XG5cbiAgICAgIGNvbnN0IHdhbGxldCA9IG5ldyBXYWxsZXQoYml0Z28sIGJhc2Vjb2luLCB3YWxsZXREYXRhKTtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgICBhc3luYyAoKSA9PlxuICAgICAgICAgIGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICAgIHR4UGFyYW1zLFxuICAgICAgICAgICAgdHhQcmVidWlsZDogdGFtcGVyZWRUeFByZWJ1aWxkLFxuICAgICAgICAgICAgd2FsbGV0LFxuICAgICAgICAgICAgdmVyaWZpY2F0aW9uOiB7IHZlcmlmeVRva2VuRW5hYmxlbWVudDogdHJ1ZSB9LFxuICAgICAgICAgIH0gYXMgdW5rbm93biBhcyBTb2xWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMpLFxuICAgICAgICB7XG4gICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICdJbnZhbGlkIHRva2VuIGFkZHJlc3M6IGV4cGVjdGVkIDRiVFl2dnYySGs0djJrUVc4SFpGRlM0U3pZUHp0UXNodzlHbTFzdVhtYUJqLCBnb3QgRzFMRWdBTkF3S283YjhOZnhUc016cmJCWURrWHFpNVJFVkpZOHRock1SUW0gb24gdG9rZW4gZW5hYmxlbWVudCB0eCcsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgc2VuZFRva2VuRW5hYmxlbWVudCBjYWxsIG9uIHNwb29mZWQgZGF0YScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHsgc2VuZFRva2VuRW5hYmxlbWVudFBheWxvYWQsIHdhbGxldERhdGEsIHdyb25nVG9rZW5OYW1lVHhIZXggfSA9IHRlc3REYXRhLmVuYWJsZVRva2VuRml4dHVyZXM7XG4gICAgICBjb25zdCB3YWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCBiYXNlY29pbiwgd2FsbGV0RGF0YSk7XG4gICAgICBub2NrKCdodHRwczovL2JpdGdvLmZha2V1cmwnKS5nZXQoJy9hcGkvdjIvdHNvbC9rZXkvNjhiYWZlZDU4ODY3MWNmOTRlZDhhNWRiYmE4ODJhZDMnKS5yZXBseSgyMDAsIHt9KTtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgICBhc3luYyAoKSA9PlxuICAgICAgICAgIHdhbGxldC5zZW5kVG9rZW5FbmFibGVtZW50KHtcbiAgICAgICAgICAgIHZlcmlmaWNhdGlvbjogeyB2ZXJpZnlUb2tlbkVuYWJsZW1lbnQ6IHRydWUgfSxcbiAgICAgICAgICAgIC4uLnNlbmRUb2tlbkVuYWJsZW1lbnRQYXlsb2FkLFxuICAgICAgICAgICAgcHJlYnVpbGRUeDogeyAuLi5zZW5kVG9rZW5FbmFibGVtZW50UGF5bG9hZC5wcmVidWlsZFR4LCB0eEhleDogd3JvbmdUb2tlbk5hbWVUeEhleCB9LFxuICAgICAgICAgIH0gYXMgdW5rbm93biBhcyBQcmVidWlsZEFuZFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMpLFxuICAgICAgICB7XG4gICAgICAgICAgbWVzc2FnZTogJ0ludmFsaWQgdG9rZW4gbmFtZTogZXhwZWN0ZWQgdHNvbDpyYXksIGdvdCB0c29sOnQyMm1pbnQgb24gdG9rZW4gZW5hYmxlbWVudCB0eCcsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdpc1dhbGxldEFkZHJlc3MnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgdmFsaWQgd2FsbGV0IGFkZHJlc3Mgd2l0aCBjb3JyZWN0IGtleWNoYWluIGFuZCBpbmRleCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSAnN1lBZXNmd1BrNDFWQ2hVZ3I2NWJtOEZFZXA3eW1XcUxTVzVycFlCNXpaUFknO1xuICAgICAgY29uc3QgY29tbW9uS2V5Y2hhaW4gPVxuICAgICAgICAnOGVhMzJlY2FjZmM4M2VmZmJkMmUyNzkwZWU0NGZhN2M1OWI0ZDg2YzI5YTEyZjA5ZmI2MTNkODE5NWY5M2Y0ZTIxODc1Y2FkM2I5OGFkYWRhNDBjMDQwYzU0YzM1Njk0NjdkZjQxYTAyMDg4MWE2MTg0MDk2Mzc4NzAxODYyYmQnO1xuICAgICAgY29uc3QgaW5kZXggPSAnMSc7XG4gICAgICBjb25zdCBrZXljaGFpbnMgPSBbeyBpZDogJzEnLCB0eXBlOiAndHNzJyBhcyBjb25zdCwgY29tbW9uS2V5Y2hhaW4gfV07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLmlzV2FsbGV0QWRkcmVzcyh7IGtleWNoYWlucywgYWRkcmVzcywgaW5kZXggfSk7XG4gICAgICByZXN1bHQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBmb3IgYWRkcmVzcyB3aXRoIGluY29ycmVjdCBrZXljaGFpbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSAnN1lBZXNmd1BrNDFWQ2hVZ3I2NWJtOEZFZXA3eW1XcUxTVzVycFlCNXpaUFknO1xuICAgICAgY29uc3Qgd3JvbmdLZXljaGFpbiA9XG4gICAgICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJztcbiAgICAgIGNvbnN0IGluZGV4ID0gJzEnO1xuICAgICAgY29uc3Qga2V5Y2hhaW5zID0gW3sgaWQ6ICcxJywgdHlwZTogJ3RzcycgYXMgY29uc3QsIGNvbW1vbktleWNoYWluOiB3cm9uZ0tleWNoYWluIH1dO1xuXG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhhc3luYyAoKSA9PiBhd2FpdCBiYXNlY29pbi5pc1dhbGxldEFkZHJlc3MoeyBrZXljaGFpbnMsIGFkZHJlc3MsIGluZGV4IH0pLCB7XG4gICAgICAgIG1lc3NhZ2U6IGBhZGRyZXNzIHZhbGlkYXRpb24gZmFpbHVyZTogJHthZGRyZXNzfSBpcyBub3QgYSB3YWxsZXQgYWRkcmVzc2AsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3IgZm9yIGFkZHJlc3Mgd2l0aCBpbmNvcnJlY3QgaW5kZXgnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBhZGRyZXNzID0gJzdZQWVzZndQazQxVkNoVWdyNjVibThGRWVwN3ltV3FMU1c1cnBZQjV6WlBZJztcbiAgICAgIGNvbnN0IGNvbW1vbktleWNoYWluID1cbiAgICAgICAgJzhlYTMyZWNhY2ZjODNlZmZiZDJlMjc5MGVlNDRmYTdjNTliNGQ4NmMyOWExMmYwOWZiNjEzZDgxOTVmOTNmNGUyMTg3NWNhZDNiOThhZGFkYTQwYzA0MGM1NGMzNTY5NDY3ZGY0MWEwMjA4ODFhNjE4NDA5NjM3ODcwMTg2MmJkJztcbiAgICAgIGNvbnN0IHdyb25nSW5kZXggPSAnOTk5JztcbiAgICAgIGNvbnN0IGtleWNoYWlucyA9IFt7IGlkOiAnMScsIHR5cGU6ICd0c3MnIGFzIGNvbnN0LCBjb21tb25LZXljaGFpbiB9XTtcblxuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoYXN5bmMgKCkgPT4gYXdhaXQgYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHsga2V5Y2hhaW5zLCBhZGRyZXNzLCBpbmRleDogd3JvbmdJbmRleCB9KSwge1xuICAgICAgICBtZXNzYWdlOiBgYWRkcmVzcyB2YWxpZGF0aW9uIGZhaWx1cmU6ICR7YWRkcmVzc30gaXMgbm90IGEgd2FsbGV0IGFkZHJlc3NgLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIGZvciBpbnZhbGlkIGFkZHJlc3MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBpbnZhbGlkQWRkcmVzcyA9ICdpbnZhbGlkYWRkcmVzcyc7XG4gICAgICBjb25zdCBjb21tb25LZXljaGFpbiA9XG4gICAgICAgICc4ZWEzMmVjYWNmYzgzZWZmYmQyZTI3OTBlZTQ0ZmE3YzU5YjRkODZjMjlhMTJmMDlmYjYxM2Q4MTk1ZjkzZjRlMjE4NzVjYWQzYjk4YWRhZGE0MGMwNDBjNTRjMzU2OTQ2N2RmNDFhMDIwODgxYTYxODQwOTYzNzg3MDE4NjJiZCc7XG4gICAgICBjb25zdCBpbmRleCA9ICcxJztcbiAgICAgIGNvbnN0IGtleWNoYWlucyA9IFt7IGlkOiAnMScsIHR5cGU6ICd0c3MnIGFzIGNvbnN0LCBjb21tb25LZXljaGFpbiB9XTtcblxuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoYXN5bmMgKCkgPT4gYXdhaXQgYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHsga2V5Y2hhaW5zLCBhZGRyZXNzOiBpbnZhbGlkQWRkcmVzcywgaW5kZXggfSksIHtcbiAgICAgICAgbWVzc2FnZTogYGludmFsaWQgYWRkcmVzczogJHtpbnZhbGlkQWRkcmVzc31gLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSBhZGRyZXNzIHdpdGggZGVyaXZhdGlvbiBwcmVmaXggZm9yIFNNQyB3YWxsZXRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gQWRkcmVzcyBkZXJpdmVkIHdpdGggZGVyaXZhdGlvbiBwcmVmaXggbS85OTk5OTkvMTQ4MjQyMzU1LzIzOTMzNjg0NS8xXG4gICAgICBjb25zdCBhZGRyZXNzID0gJ0NDNzE1UTkyQzh2dUVGVDV4dWpFNTVEbzZCa1dSZHBEdnI3Vmg4aVVOVUJ3JztcbiAgICAgIGNvbnN0IGNvbW1vbktleWNoYWluID1cbiAgICAgICAgJzhlYTMyZWNhY2ZjODNlZmZiZDJlMjc5MGVlNDRmYTdjNTliNGQ4NmMyOWExMmYwOWZiNjEzZDgxOTVmOTNmNGUyMTg3NWNhZDNiOThhZGFkYTQwYzA0MGM1NGMzNTY5NDY3ZGY0MWEwMjA4ODFhNjE4NDA5NjM3ODcwMTg2MmJkJztcbiAgICAgIGNvbnN0IGluZGV4ID0gJzEnO1xuICAgICAgY29uc3QgZGVyaXZlZEZyb21QYXJlbnRXaXRoU2VlZCA9ICdzbWMtdGVzdC1zZWVkLTEyMyc7XG4gICAgICBjb25zdCBrZXljaGFpbnMgPSBbeyBpZDogJzEnLCB0eXBlOiAndHNzJyBhcyBjb25zdCwgY29tbW9uS2V5Y2hhaW4gfV07XG5cbiAgICAgIC8vIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGRlcml2ZWRGcm9tUGFyZW50V2l0aFNlZWQgaXMgYWNjZXB0ZWQgYXMgYSBwYXJhbWV0ZXJcbiAgICAgIC8vIGFuZCB0aGUgdmVyaWZpY2F0aW9uIGZ1bmN0aW9uIGNvcnJlY3RseSBjb21wdXRlcyB0aGUgZGVyaXZhdGlvbiBwcmVmaXggaW50ZXJuYWxseVxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHsga2V5Y2hhaW5zLCBhZGRyZXNzLCBpbmRleCwgZGVyaXZlZEZyb21QYXJlbnRXaXRoU2VlZCB9KTtcbiAgICAgIHJlc3VsdC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdkZXJpdmVBZGRyZXNzJywgKCkgPT4ge1xuICAgIC8vIFNhbWUgdmVjdG9yIGFzIHRoZSBpc1dhbGxldEFkZHJlc3MgdGVzdHMgYWJvdmU6IGNvbW1vbktleWNoYWluIEAgaW5kZXggMSAtPiBhZGRyZXNzLlxuICAgIGNvbnN0IGFkZHJlc3MgPSAnN1lBZXNmd1BrNDFWQ2hVZ3I2NWJtOEZFZXA3eW1XcUxTVzVycFlCNXpaUFknO1xuICAgIGNvbnN0IGNvbW1vbktleWNoYWluID1cbiAgICAgICc4ZWEzMmVjYWNmYzgzZWZmYmQyZTI3OTBlZTQ0ZmE3YzU5YjRkODZjMjlhMTJmMDlmYjYxM2Q4MTk1ZjkzZjRlMjE4NzVjYWQzYjk4YWRhZGE0MGMwNDBjNTRjMzU2OTQ2N2RmNDFhMDIwODgxYTYxODQwOTYzNzg3MDE4NjJiZCc7XG4gICAgY29uc3Qga2V5Y2hhaW5zID0gW3sgaWQ6ICcxJywgdHlwZTogJ3RzcycgYXMgY29uc3QsIGNvbW1vbktleWNoYWluIH1dO1xuXG4gICAgaXQoJ3Nob3VsZCBkZXJpdmUgdGhlIGV4cGVjdGVkIGFkZHJlc3MgZm9yIGEgZ2l2ZW4gY29tbW9uS2V5Y2hhaW4gYW5kIGluZGV4JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYmFzZWNvaW4uZGVyaXZlQWRkcmVzcyh7IGtleWNoYWlucywgaW5kZXg6IDEgfSk7XG4gICAgICByZXN1bHQuYWRkcmVzcy5zaG91bGQuZXF1YWwoYWRkcmVzcyk7XG4gICAgICByZXN1bHQuaW5kZXguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5kZXJpdmF0aW9uUGF0aCwgJ20vMScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBkZXJpdmUgYSBkaWZmZXJlbnQgYWRkcmVzcyBmb3IgYSBkaWZmZXJlbnQgaW5kZXgnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi5kZXJpdmVBZGRyZXNzKHsga2V5Y2hhaW5zLCBpbmRleDogMiB9KTtcbiAgICAgIHJlc3VsdC5hZGRyZXNzLnNob3VsZC5ub3QuZXF1YWwoYWRkcmVzcyk7XG4gICAgfSk7XG5cbiAgICBpdCgncm91bmQtdHJpcHMgd2l0aCBpc1dhbGxldEFkZHJlc3MgKGRlcml2ZWQgYWRkcmVzcyB2ZXJpZmllcyBhcyB0cnVlKScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGRlcml2ZWQgPSBhd2FpdCBiYXNlY29pbi5kZXJpdmVBZGRyZXNzKHsga2V5Y2hhaW5zLCBpbmRleDogNSB9KTtcbiAgICAgIGNvbnN0IHZlcmlmaWVkID0gYXdhaXQgYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHsga2V5Y2hhaW5zLCBhZGRyZXNzOiBkZXJpdmVkLmFkZHJlc3MsIGluZGV4OiA1IH0pO1xuICAgICAgdmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB1c2UgdGhlIFNNQyBwcmVmaXggcGF0aCB3aGVuIGRlcml2ZWRGcm9tUGFyZW50V2l0aFNlZWQgaXMgc2V0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGVyaXZlZEZyb21QYXJlbnRXaXRoU2VlZCA9ICdzbWMtdGVzdC1zZWVkLTEyMyc7XG4gICAgICBjb25zdCBkZXJpdmVkID0gYXdhaXQgYmFzZWNvaW4uZGVyaXZlQWRkcmVzcyh7IGtleWNoYWlucywgaW5kZXg6IDEsIGRlcml2ZWRGcm9tUGFyZW50V2l0aFNlZWQgfSk7XG4gICAgICAvLyByb3VuZC10cmlwcyB0aHJvdWdoIHRoZSBTTUMgdmVyaWZ5IHBhdGhcbiAgICAgIGNvbnN0IHZlcmlmaWVkID0gYXdhaXQgYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHtcbiAgICAgICAga2V5Y2hhaW5zLFxuICAgICAgICBhZGRyZXNzOiBkZXJpdmVkLmFkZHJlc3MsXG4gICAgICAgIGluZGV4OiAxLFxuICAgICAgICBkZXJpdmVkRnJvbVBhcmVudFdpdGhTZWVkLFxuICAgICAgfSk7XG4gICAgICB2ZXJpZmllZC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGlmIGtleWNoYWlucyBhcmUgbWlzc2luZycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKGFzeW5jICgpID0+IGF3YWl0IGJhc2Vjb2luLmRlcml2ZUFkZHJlc3MoeyBrZXljaGFpbnM6IFtdLCBpbmRleDogMCB9KSwgL2tleWNoYWlucy8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBkZXJpdmUgdGhlIFNQTCB0b2tlbiAoQVRBKSBhZGRyZXNzIHdoZW4gdG9rZW5OYW1lIGlzIGdpdmVuJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gb3duZXIgPSBuYXRpdmUgYWRkcmVzcyBhdCBpbmRleCAxICg3WUFlc2bigKYpOyBBVEEgZm9yIHNvbDp1c2RjOlxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYmFzZWNvaW4uZGVyaXZlQWRkcmVzcyh7IGtleWNoYWlucywgaW5kZXg6IDEsIHRva2VuTmFtZTogJ3NvbDp1c2RjJyB9KTtcbiAgICAgIHJlc3VsdC5hZGRyZXNzLnNob3VsZC5lcXVhbCgnRkcxWE1KZFhCUTV1WWFOb0twb3NBQmc2ZXJ4c3Z6YndDMjgzVzJpcG5qUUInKTtcbiAgICAgIHJlc3VsdC5hZGRyZXNzLnNob3VsZC5ub3QuZXF1YWwoYWRkcmVzcyk7IC8vIG5vdCB0aGUgbmF0aXZlIGFkZHJlc3NcbiAgICAgIHJlc3VsdC5pbmRleC5zaG91bGQuZXF1YWwoMSk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhlIGRlcml2ZWQgdG9rZW4gQVRBIG1hdGNoZXMgZ2V0QXNzb2NpYXRlZFRva2VuQWNjb3VudEFkZHJlc3MgZm9yIHRoZSBvd25lcittaW50JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgbmF0aXZlID0gYXdhaXQgYmFzZWNvaW4uZGVyaXZlQWRkcmVzcyh7IGtleWNoYWlucywgaW5kZXg6IDMgfSk7XG4gICAgICBjb25zdCB0b2tlbiA9IGF3YWl0IGJhc2Vjb2luLmRlcml2ZUFkZHJlc3MoeyBrZXljaGFpbnMsIGluZGV4OiAzLCB0b2tlbk5hbWU6ICdzb2w6dXNkYycgfSk7XG4gICAgICBjb25zdCBtaW50ID0gKGNvaW5zLmdldCgnc29sOnVzZGMnKSBhcyB1bmtub3duIGFzIHsgdG9rZW5BZGRyZXNzOiBzdHJpbmcgfSkudG9rZW5BZGRyZXNzO1xuICAgICAgY29uc3QgZXhwZWN0ZWRBdGEgPSBhd2FpdCBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyhtaW50LCBuYXRpdmUuYWRkcmVzcywgdHJ1ZSk7XG4gICAgICB0b2tlbi5hZGRyZXNzLnNob3VsZC5lcXVhbChleHBlY3RlZEF0YSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGZvciBhbiB1bmtub3duIHRva2VuIG5hbWUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgYXN5bmMgKCkgPT4gYXdhaXQgYmFzZWNvaW4uZGVyaXZlQWRkcmVzcyh7IGtleWNoYWlucywgaW5kZXg6IDEsIHRva2VuTmFtZTogJ3NvbDpub3QtYS1yZWFsLXRva2VuJyB9KSxcbiAgICAgICAgL3Vua25vd24gb3IgdW5zdXBwb3J0ZWQgU09MIHRva2VuL1xuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dldEFkZHJlc3NGcm9tUHVibGljS2V5JywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgY29udmVydCBwdWJsaWMga2V5IHRvIGJhc2U1OCBhZGRyZXNzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcHVibGljS2V5ID0gJzYxMjIwYTkzOTQ4MDJiMWQxZGYzN2IzNWY3YTMxOTc5NzBmNDgwODEwOTJjZWUwMTFmYzk4ZjdiNzFiMmJkNDMnO1xuICAgICAgY29uc3QgZXhwZWN0ZWRBZGRyZXNzID0gJzdZQWVzZndQazQxVkNoVWdyNjVibThGRWVwN3ltV3FMU1c1cnBZQjV6WlBZJztcblxuICAgICAgY29uc3QgYWRkcmVzcyA9IGJhc2Vjb2luLmdldEFkZHJlc3NGcm9tUHVibGljS2V5KHB1YmxpY0tleSk7XG4gICAgICBhZGRyZXNzLnNob3VsZC5lcXVhbChleHBlY3RlZEFkZHJlc3MpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgncmVzb2x2ZVRyYW5zZmVySG9va0FjY291bnRzJywgKCkgPT4ge1xuICAgIGNvbnN0IHNhbmRCb3ggPSBzaW5vbi5jcmVhdGVTYW5kYm94KCk7XG4gICAgY29uc3QgbWludEFkZHJlc3MgPSByZXNvdXJjZXMuc29sMjAyMlRva2VuVHJhbnNmZXJzLm1pbnQ7XG4gICAgY29uc3Qgc291cmNlQWRkcmVzcyA9IHJlc291cmNlcy5hc3NvY2lhdGVkVG9rZW5BY2NvdW50c0ZvclNvbDIwMjIuYWNjb3VudHNbMF0uYXRhO1xuICAgIGNvbnN0IGRlc3RpbmF0aW9uQWRkcmVzcyA9IHJlc291cmNlcy5hc3NvY2lhdGVkVG9rZW5BY2NvdW50cy5hY2NvdW50c1swXS5hdGE7XG4gICAgY29uc3Qgb3duZXJBZGRyZXNzID0gcmVzb3VyY2VzLmF1dGhBY2NvdW50LnB1YjtcbiAgICBjb25zdCBhbW91bnQgPSAnNTAwMDAwJztcbiAgICBjb25zdCBkZWNpbWFscyA9IDY7XG4gICAgLy8gQXJiaXRyYXJ5IGJ1dCB2YWxpZCBiYXNlNTggcHVia2V5cyB1c2VkIHB1cmVseSBhcyBmaXh0dXJlcy5cbiAgICBjb25zdCBob29rUHJvZ3JhbUlkID0gbmV3IFB1YmxpY0tleSgnR2JROFppRUZ6R0dUZVlvWHd0WnRjb3h3UGNNeVVjbVpEZHVNVk5kVVBLcFgnKTtcbiAgICBjb25zdCBleHRyYU1ldGFzOiBFeHRyYUFjY291bnRNZXRhW10gPSBbXG4gICAgICB7IHB1YmtleTogJzk4d0ZGNU1wTWpNUWJmREYyTVB6bzhMQ0dYMzd1blpSMW9oUkExbVU5R21KJywgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiB0cnVlIH0sXG4gICAgICB7IHB1YmtleTogJzQ4bjdZR0V3dzdmS01mSjVnSjNzUUMzck02UldHanBVc2docVZmWFZrUjVBJywgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiBmYWxzZSB9LFxuICAgICAgeyBwdWJrZXk6ICc5c1FoQUg3dlYzUktUQ0sxM1ZZNEVpTmpzM3FCcTFzclNZeGROdWZkQUFYbScsIGlzU2lnbmVyOiBmYWxzZSwgaXNXcml0YWJsZTogZmFsc2UgfSxcbiAgICBdO1xuXG4gICAgLy8gVG9rZW4tMjAyMiBtaW50IGFjY291bnQgbGF5b3V0OiA4Mi1ieXRlIGJhc2UgTWludExheW91dCwgcGFkZGVkIHRvIHRoZVxuICAgIC8vIDE2NS1ieXRlIGFjY291bnQgc2l6ZSwgYW4gYWNjb3VudC10eXBlIGJ5dGUgKDEgPSBNaW50KSwgdGhlbiB0aGUgZXh0ZW5zaW9uXG4gICAgLy8gVExWLiBUcmFuc2Zlckhvb2sgaXMgZXh0ZW5zaW9uIHR5cGUgMTQgd2l0aCA2NCBieXRlcyAoYXV0aG9yaXR5ICsgcHJvZ3JhbUlkKS5cbiAgICBjb25zdCBidWlsZE1pbnRXaXRoVHJhbnNmZXJIb29rID0gKG1pbnREZWNpbWFsczogbnVtYmVyLCBob29rUHJvZ3JhbTogUHVibGljS2V5KTogQnVmZmVyID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBCdWZmZXIuYWxsb2MoMjM0KTtcbiAgICAgIGRhdGEud3JpdGVVSW50OChtaW50RGVjaW1hbHMsIDQ0KTsgLy8gTWludExheW91dC5kZWNpbWFsc1xuICAgICAgZGF0YS53cml0ZVVJbnQ4KDEsIDQ1KTsgLy8gTWludExheW91dC5pc0luaXRpYWxpemVkXG4gICAgICBkYXRhLndyaXRlVUludDgoMSwgMTY1KTsgLy8gQWNjb3VudFR5cGUuTWludFxuICAgICAgZGF0YS53cml0ZVVJbnQxNkxFKDE0LCAxNjYpOyAvLyBleHRlbnNpb24gdHlwZTogVHJhbnNmZXJIb29rXG4gICAgICBkYXRhLndyaXRlVUludDE2TEUoNjQsIDE2OCk7IC8vIGV4dGVuc2lvbiBsZW5ndGhcbiAgICAgIC8vIGF1dGhvcml0eSBvY2N1cGllcyBbMTcwLCAyMDIpOyBwcm9ncmFtSWQgb2NjdXBpZXMgWzIwMiwgMjM0KVxuICAgICAgaG9va1Byb2dyYW0udG9CdWZmZXIoKS5jb3B5KGRhdGEsIDIwMik7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9O1xuXG4gICAgLy8gUGxhaW4gU1BML1Rva2VuLTIwMjIgbWludCB3aXRoIG5vIGV4dGVuc2lvbnMgKGJhc2UgTWludExheW91dCBvbmx5KS5cbiAgICBjb25zdCBidWlsZEJhc2VNaW50ID0gKG1pbnREZWNpbWFsczogbnVtYmVyKTogQnVmZmVyID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBCdWZmZXIuYWxsb2MoODIpO1xuICAgICAgZGF0YS53cml0ZVVJbnQ4KG1pbnREZWNpbWFscywgNDQpO1xuICAgICAgZGF0YS53cml0ZVVJbnQ4KDEsIDQ1KTtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH07XG5cbiAgICAvLyBFeHRyYUFjY291bnRNZXRhTGlzdCBhY2NvdW50OiB1NjQgZGlzY3JpbWluYXRvciArIHUzMiBsZW5ndGggKyB1MzIgY291bnQsXG4gICAgLy8gdGhlbiAzNS1ieXRlIEV4dHJhQWNjb3VudE1ldGEgZW50cmllcyAoZGlzY3JpbWluYXRvciAwID0gZml4ZWQgYWRkcmVzcykuXG4gICAgY29uc3QgYnVpbGRFeHRyYUFjY291bnRNZXRhTGlzdCA9IChtZXRhczogRXh0cmFBY2NvdW50TWV0YVtdKTogQnVmZmVyID0+IHtcbiAgICAgIGNvbnN0IGhlYWRlclNpemUgPSAxNjtcbiAgICAgIGNvbnN0IGRhdGEgPSBCdWZmZXIuYWxsb2MoaGVhZGVyU2l6ZSArIG1ldGFzLmxlbmd0aCAqIDM1KTtcbiAgICAgIGRhdGEud3JpdGVVSW50MzJMRSg0ICsgbWV0YXMubGVuZ3RoICogMzUsIDgpOyAvLyBsZW5ndGhcbiAgICAgIGRhdGEud3JpdGVVSW50MzJMRShtZXRhcy5sZW5ndGgsIDEyKTsgLy8gY291bnRcbiAgICAgIGxldCBvZmZzZXQgPSBoZWFkZXJTaXplO1xuICAgICAgZm9yIChjb25zdCBtZXRhIG9mIG1ldGFzKSB7XG4gICAgICAgIGRhdGEud3JpdGVVSW50OCgwLCBvZmZzZXQpOyAvLyBkaXNjcmltaW5hdG9yOiBmaXhlZCBhZGRyZXNzXG4gICAgICAgIG5ldyBQdWJsaWNLZXkobWV0YS5wdWJrZXkpLnRvQnVmZmVyKCkuY29weShkYXRhLCBvZmZzZXQgKyAxKTsgLy8gYWRkcmVzc0NvbmZpZ1xuICAgICAgICBkYXRhLndyaXRlVUludDgobWV0YS5pc1NpZ25lciA/IDEgOiAwLCBvZmZzZXQgKyAzMyk7XG4gICAgICAgIGRhdGEud3JpdGVVSW50OChtZXRhLmlzV3JpdGFibGUgPyAxIDogMCwgb2Zmc2V0ICsgMzQpO1xuICAgICAgICBvZmZzZXQgKz0gMzU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9O1xuXG4gICAgY29uc3QgYWNjb3VudEluZm9SZXNwb25zZSA9IChkYXRhOiBCdWZmZXIgfCBudWxsLCBvd25lcjogc3RyaW5nKSA9PiAoe1xuICAgICAgc3RhdHVzOiAyMDAsXG4gICAgICBib2R5OiB7XG4gICAgICAgIHJlc3VsdDoge1xuICAgICAgICAgIHZhbHVlOlxuICAgICAgICAgICAgZGF0YSA9PT0gbnVsbFxuICAgICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICBkYXRhOiBbZGF0YS50b1N0cmluZygnYmFzZTY0JyksICdiYXNlNjQnXSxcbiAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgb3duZXIsXG4gICAgICAgICAgICAgICAgICBsYW1wb3J0czogMSxcbiAgICAgICAgICAgICAgICAgIHJlbnRFcG9jaDogMCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHN0dWJOb2RlID0gKGFjY291bnRzOiBSZWNvcmQ8c3RyaW5nLCB7IGRhdGE6IEJ1ZmZlciB8IG51bGw7IG93bmVyOiBzdHJpbmcgfT4pOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IGNhbGxCYWNrID0gc2FuZEJveC5zdHViKFNvbC5wcm90b3R5cGUsICdnZXREYXRhRnJvbU5vZGUnIGFzIGtleW9mIFNvbCk7XG4gICAgICBjYWxsQmFjay5jYWxsc0Zha2UoYXN5bmMgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBhcmdzWzBdIGFzIHsgcGF5bG9hZD86IHsgcGFyYW1zPzogdW5rbm93bltdIH0gfTtcbiAgICAgICAgY29uc3QgcmVxdWVzdGVkUHVia2V5ID0gcGFyYW1zLnBheWxvYWQ/LnBhcmFtcz8uWzBdIGFzIHN0cmluZztcbiAgICAgICAgY29uc3QgYWNjb3VudCA9IGFjY291bnRzW3JlcXVlc3RlZFB1YmtleV07XG4gICAgICAgIGlmICghYWNjb3VudCkge1xuICAgICAgICAgIHJldHVybiBhY2NvdW50SW5mb1Jlc3BvbnNlKG51bGwsIFRPS0VOXzIwMjJfUFJPR1JBTV9JRC50b0Jhc2U1OCgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjb3VudEluZm9SZXNwb25zZShhY2NvdW50LmRhdGEsIGFjY291bnQub3duZXIpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgICBzYW5kQm94LnJlc3RvcmUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXNvbHZlcyB0aGUgb3JkZXJlZCBleHRyYSBhY2NvdW50cyBmb3IgYSBtaW50IHdpdGggYSB0cmFuc2ZlciBob29rJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdmFsaWRhdGlvblN0YXRlUHVia2V5ID0gZ2V0RXh0cmFBY2NvdW50TWV0YUFkZHJlc3MobmV3IFB1YmxpY0tleShtaW50QWRkcmVzcyksIGhvb2tQcm9ncmFtSWQpO1xuICAgICAgc3R1Yk5vZGUoe1xuICAgICAgICBbbWludEFkZHJlc3NdOiB7XG4gICAgICAgICAgZGF0YTogYnVpbGRNaW50V2l0aFRyYW5zZmVySG9vayhkZWNpbWFscywgaG9va1Byb2dyYW1JZCksXG4gICAgICAgICAgb3duZXI6IFRPS0VOXzIwMjJfUFJPR1JBTV9JRC50b0Jhc2U1OCgpLFxuICAgICAgICB9LFxuICAgICAgICBbdmFsaWRhdGlvblN0YXRlUHVia2V5LnRvQmFzZTU4KCldOiB7XG4gICAgICAgICAgZGF0YTogYnVpbGRFeHRyYUFjY291bnRNZXRhTGlzdChleHRyYU1ldGFzKSxcbiAgICAgICAgICBvd25lcjogaG9va1Byb2dyYW1JZC50b0Jhc2U1OCgpLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLnJlc29sdmVUcmFuc2Zlckhvb2tBY2NvdW50cyhcbiAgICAgICAgbWludEFkZHJlc3MsXG4gICAgICAgIHNvdXJjZUFkZHJlc3MsXG4gICAgICAgIGRlc3RpbmF0aW9uQWRkcmVzcyxcbiAgICAgICAgb3duZXJBZGRyZXNzLFxuICAgICAgICBhbW91bnRcbiAgICAgICk7XG5cbiAgICAgIC8vIGV4dHJhIGFjY291bnRzLCB0aGVuIHRoZSBob29rIHByb2dyYW0sIHRoZW4gdGhlIHZhbGlkYXRpb24gc3RhdGUgYWNjb3VudFxuICAgICAgcmVzdWx0LnNob3VsZC5oYXZlLmxlbmd0aChleHRyYU1ldGFzLmxlbmd0aCArIDIpO1xuICAgICAgcmVzdWx0LnNsaWNlKDAsIGV4dHJhTWV0YXMubGVuZ3RoKS5zaG91bGQuZGVlcEVxdWFsKGV4dHJhTWV0YXMpO1xuICAgICAgcmVzdWx0W2V4dHJhTWV0YXMubGVuZ3RoXS5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgcHVia2V5OiBob29rUHJvZ3JhbUlkLnRvQmFzZTU4KCksXG4gICAgICAgIGlzU2lnbmVyOiBmYWxzZSxcbiAgICAgICAgaXNXcml0YWJsZTogZmFsc2UsXG4gICAgICB9KTtcbiAgICAgIHJlc3VsdFtleHRyYU1ldGFzLmxlbmd0aCArIDFdLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBwdWJrZXk6IHZhbGlkYXRpb25TdGF0ZVB1YmtleS50b0Jhc2U1OCgpLFxuICAgICAgICBpc1NpZ25lcjogZmFsc2UsXG4gICAgICAgIGlzV3JpdGFibGU6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyBhbiBlbXB0eSBhcnJheSBmb3IgYSBtaW50IHdpdGhvdXQgYSB0cmFuc2ZlciBob29rJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgc3R1Yk5vZGUoe1xuICAgICAgICBbbWludEFkZHJlc3NdOiB7XG4gICAgICAgICAgZGF0YTogYnVpbGRCYXNlTWludChkZWNpbWFscyksXG4gICAgICAgICAgb3duZXI6IFRPS0VOXzIwMjJfUFJPR1JBTV9JRC50b0Jhc2U1OCgpLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLnJlc29sdmVUcmFuc2Zlckhvb2tBY2NvdW50cyhcbiAgICAgICAgbWludEFkZHJlc3MsXG4gICAgICAgIHNvdXJjZUFkZHJlc3MsXG4gICAgICAgIGRlc3RpbmF0aW9uQWRkcmVzcyxcbiAgICAgICAgb3duZXJBZGRyZXNzLFxuICAgICAgICBhbW91bnRcbiAgICAgICk7XG4gICAgICByZXN1bHQuc2hvdWxkLmRlZXBFcXVhbChbXSk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyBhbiBlbXB0eSBhcnJheSB3aGVuIHRoZSBtaW50IGFjY291bnQgaXMgbm90IGZvdW5kJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgc3R1Yk5vZGUoe30pO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi5yZXNvbHZlVHJhbnNmZXJIb29rQWNjb3VudHMoXG4gICAgICAgIG1pbnRBZGRyZXNzLFxuICAgICAgICBzb3VyY2VBZGRyZXNzLFxuICAgICAgICBkZXN0aW5hdGlvbkFkZHJlc3MsXG4gICAgICAgIG93bmVyQWRkcmVzcyxcbiAgICAgICAgYW1vdW50XG4gICAgICApO1xuICAgICAgcmVzdWx0LnNob3VsZC5kZWVwRXF1YWwoW10pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgncmVzb2x2ZVBlcm1pc3Npb25sZXNzVGhhdycsICgpID0+IHtcbiAgICBjb25zdCBzYW5kQm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuICAgIGNvbnN0IG1pbnRBZGRyZXNzID0gcmVzb3VyY2VzLnNvbDIwMjJUb2tlblRyYW5zZmVycy5taW50O1xuICAgIGNvbnN0IHRva2VuQWNjb3VudCA9IHJlc291cmNlcy5hc3NvY2lhdGVkVG9rZW5BY2NvdW50c0ZvclNvbDIwMjIuYWNjb3VudHNbMF0uYXRhO1xuICAgIGNvbnN0IHRva2VuQWNjb3VudE93bmVyID0gcmVzb3VyY2VzLmF1dGhBY2NvdW50LnB1YjtcbiAgICBjb25zdCBhdXRob3JpdHkgPSByZXNvdXJjZXMubm9uY2VBY2NvdW50LnB1YjtcbiAgICAvLyBBcmJpdHJhcnkgYnV0IHZhbGlkIGJhc2U1OCBwdWJrZXkgdXNlZCBwdXJlbHkgYXMgdGhlIGdhdGluZyBwcm9ncmFtIGZpeHR1cmUuXG4gICAgY29uc3QgZ2F0aW5nUHJvZ3JhbSA9IG5ldyBQdWJsaWNLZXkoJ0diUThaaUVGekdHVGVZb1h3dFp0Y294d1BjTXlVY21aRGR1TVZOZFVQS3BYJyk7XG4gICAgY29uc3QgdG9rZW5BY2xQcm9ncmFtSWQgPSBuZXcgUHVibGljS2V5KFRPS0VOX0FDTF9QUk9HUkFNX0lEKTtcblxuICAgIC8vIEZpeGVkLWFkZHJlc3MgZXh0cmEgYWNjb3VudCBtZXRhcyB0aGUgZ2F0aW5nIHByb2dyYW0gcmVxdWlyZXMgKGRpc2NyaW1pbmF0b3IgMCBlbnRyaWVzKS5cbiAgICBjb25zdCBleHRyYU1ldGFzOiBFeHRyYUFjY291bnRNZXRhW10gPSBbXG4gICAgICB7IHB1YmtleTogJzk4d0ZGNU1wTWpNUWJmREYyTVB6bzhMQ0dYMzd1blpSMW9oUkExbVU5R21KJywgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiB0cnVlIH0sXG4gICAgICB7IHB1YmtleTogJzlzUWhBSDd2VjNSS1RDSzEzVlk0RWlOanMzcUJxMXNyU1l4ZE51ZmRBQVhtJywgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiBmYWxzZSB9LFxuICAgIF07XG5cbiAgICBjb25zdCBbbWludENvbmZpZ1BkYV0gPSBQdWJsaWNLZXkuZmluZFByb2dyYW1BZGRyZXNzU3luYyhcbiAgICAgIFtCdWZmZXIuZnJvbShUT0tFTl9BQ0xfTUlOVF9DT05GSUdfU0VFRCksIG5ldyBQdWJsaWNLZXkobWludEFkZHJlc3MpLnRvQnVmZmVyKCldLFxuICAgICAgdG9rZW5BY2xQcm9ncmFtSWRcbiAgICApO1xuICAgIGNvbnN0IFtmbGFnQWNjb3VudFBkYV0gPSBQdWJsaWNLZXkuZmluZFByb2dyYW1BZGRyZXNzU3luYyhcbiAgICAgIFtCdWZmZXIuZnJvbShUT0tFTl9BQ0xfRkxBR19BQ0NPVU5UX1NFRUQpLCBuZXcgUHVibGljS2V5KHRva2VuQWNjb3VudCkudG9CdWZmZXIoKV0sXG4gICAgICB0b2tlbkFjbFByb2dyYW1JZFxuICAgICk7XG4gICAgY29uc3QgW3RoYXdFeHRyYU1ldGFzUGRhXSA9IFB1YmxpY0tleS5maW5kUHJvZ3JhbUFkZHJlc3NTeW5jKFxuICAgICAgW0J1ZmZlci5mcm9tKFRPS0VOX0FDTF9USEFXX0VYVFJBX01FVEFTX1NFRUQpLCBuZXcgUHVibGljS2V5KG1pbnRBZGRyZXNzKS50b0J1ZmZlcigpXSxcbiAgICAgIGdhdGluZ1Byb2dyYW1cbiAgICApO1xuXG4gICAgLy8gTWludENvbmZpZyBsYXlvdXQ6IHU4IGRpc2NyaW1pbmF0b3IsIHU4IGJ1bXAsIGJvb2wgdGhhdywgYm9vbCBmcmVlemUsIHB1YmtleSBtaW50KDMyKSxcbiAgICAvLyBwdWJrZXkgZnJlZXplQXV0aG9yaXR5KDMyKSwgcHVia2V5IGdhdGluZ1Byb2dyYW0oMzIpLiBUb3RhbCAxMDAgYnl0ZXMuXG4gICAgY29uc3QgYnVpbGRNaW50Q29uZmlnID0gKGVuYWJsZVBlcm1pc3Npb25sZXNzVGhhdzogYm9vbGVhbiwgZ2F0ZVByb2dyYW06IFB1YmxpY0tleSk6IEJ1ZmZlciA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gQnVmZmVyLmFsbG9jKDEwMCk7XG4gICAgICBkYXRhLndyaXRlVUludDgoMSwgMCk7IC8vIGRpc2NyaW1pbmF0b3JcbiAgICAgIGRhdGEud3JpdGVVSW50OCgyNTUsIDEpOyAvLyBidW1wXG4gICAgICBkYXRhLndyaXRlVUludDgoZW5hYmxlUGVybWlzc2lvbmxlc3NUaGF3ID8gMSA6IDAsIDIpO1xuICAgICAgZGF0YS53cml0ZVVJbnQ4KDAsIDMpOyAvLyBlbmFibGVQZXJtaXNzaW9ubGVzc0ZyZWV6ZVxuICAgICAgbmV3IFB1YmxpY0tleShtaW50QWRkcmVzcykudG9CdWZmZXIoKS5jb3B5KGRhdGEsIDQpO1xuICAgICAgdG9rZW5BY2xQcm9ncmFtSWQudG9CdWZmZXIoKS5jb3B5KGRhdGEsIDM2KTsgLy8gZnJlZXplQXV0aG9yaXR5XG4gICAgICBnYXRlUHJvZ3JhbS50b0J1ZmZlcigpLmNvcHkoZGF0YSwgNjgpO1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfTtcblxuICAgIC8vIEV4dHJhQWNjb3VudE1ldGFMaXN0IGFjY291bnQ6IHU2NCBkaXNjcmltaW5hdG9yICsgdTMyIGxlbmd0aCArIHUzMiBjb3VudCwgdGhlbiAzNS1ieXRlXG4gICAgLy8gRXh0cmFBY2NvdW50TWV0YSBlbnRyaWVzIChkaXNjcmltaW5hdG9yIDAgPSBmaXhlZCBhZGRyZXNzKS5cbiAgICBjb25zdCBidWlsZEV4dHJhQWNjb3VudE1ldGFMaXN0ID0gKG1ldGFzOiBFeHRyYUFjY291bnRNZXRhW10pOiBCdWZmZXIgPT4ge1xuICAgICAgY29uc3QgaGVhZGVyU2l6ZSA9IDE2O1xuICAgICAgY29uc3QgZGF0YSA9IEJ1ZmZlci5hbGxvYyhoZWFkZXJTaXplICsgbWV0YXMubGVuZ3RoICogMzUpO1xuICAgICAgZGF0YS53cml0ZVVJbnQzMkxFKDQgKyBtZXRhcy5sZW5ndGggKiAzNSwgOCk7IC8vIGxlbmd0aFxuICAgICAgZGF0YS53cml0ZVVJbnQzMkxFKG1ldGFzLmxlbmd0aCwgMTIpOyAvLyBjb3VudFxuICAgICAgbGV0IG9mZnNldCA9IGhlYWRlclNpemU7XG4gICAgICBmb3IgKGNvbnN0IG1ldGEgb2YgbWV0YXMpIHtcbiAgICAgICAgZGF0YS53cml0ZVVJbnQ4KDAsIG9mZnNldCk7IC8vIGRpc2NyaW1pbmF0b3I6IGZpeGVkIGFkZHJlc3NcbiAgICAgICAgbmV3IFB1YmxpY0tleShtZXRhLnB1YmtleSkudG9CdWZmZXIoKS5jb3B5KGRhdGEsIG9mZnNldCArIDEpO1xuICAgICAgICBkYXRhLndyaXRlVUludDgobWV0YS5pc1NpZ25lciA/IDEgOiAwLCBvZmZzZXQgKyAzMyk7XG4gICAgICAgIGRhdGEud3JpdGVVSW50OChtZXRhLmlzV3JpdGFibGUgPyAxIDogMCwgb2Zmc2V0ICsgMzQpO1xuICAgICAgICBvZmZzZXQgKz0gMzU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9O1xuXG4gICAgY29uc3QgYWNjb3VudEluZm9SZXNwb25zZSA9IChkYXRhOiBCdWZmZXIgfCBudWxsLCBvd25lcjogc3RyaW5nKSA9PiAoe1xuICAgICAgc3RhdHVzOiAyMDAsXG4gICAgICBib2R5OiB7XG4gICAgICAgIHJlc3VsdDoge1xuICAgICAgICAgIHZhbHVlOlxuICAgICAgICAgICAgZGF0YSA9PT0gbnVsbFxuICAgICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICBkYXRhOiBbZGF0YS50b1N0cmluZygnYmFzZTY0JyksICdiYXNlNjQnXSxcbiAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgb3duZXIsXG4gICAgICAgICAgICAgICAgICBsYW1wb3J0czogMSxcbiAgICAgICAgICAgICAgICAgIHJlbnRFcG9jaDogMCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHN0dWJOb2RlID0gKGFjY291bnRzOiBSZWNvcmQ8c3RyaW5nLCB7IGRhdGE6IEJ1ZmZlciB8IG51bGw7IG93bmVyOiBzdHJpbmcgfT4pOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IGNhbGxCYWNrID0gc2FuZEJveC5zdHViKFNvbC5wcm90b3R5cGUsICdnZXREYXRhRnJvbU5vZGUnIGFzIGtleW9mIFNvbCk7XG4gICAgICBjYWxsQmFjay5jYWxsc0Zha2UoYXN5bmMgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBhcmdzWzBdIGFzIHsgcGF5bG9hZD86IHsgcGFyYW1zPzogdW5rbm93bltdIH0gfTtcbiAgICAgICAgY29uc3QgcmVxdWVzdGVkUHVia2V5ID0gcGFyYW1zLnBheWxvYWQ/LnBhcmFtcz8uWzBdIGFzIHN0cmluZztcbiAgICAgICAgY29uc3QgYWNjb3VudCA9IGFjY291bnRzW3JlcXVlc3RlZFB1YmtleV07XG4gICAgICAgIGlmICghYWNjb3VudCkge1xuICAgICAgICAgIHJldHVybiBhY2NvdW50SW5mb1Jlc3BvbnNlKG51bGwsIFRPS0VOXzIwMjJfUFJPR1JBTV9JRC50b0Jhc2U1OCgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjb3VudEluZm9SZXNwb25zZShhY2NvdW50LmRhdGEsIGFjY291bnQub3duZXIpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgICBzYW5kQm94LnJlc3RvcmUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXNvbHZlcyB0aGUgdGhhdyBwYXJhbXMgZm9yIGEgVG9rZW4gQUNMIG1pbnQgd2l0aCBwZXJtaXNzaW9ubGVzcyB0aGF3IGVuYWJsZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBzdHViTm9kZSh7XG4gICAgICAgIFttaW50Q29uZmlnUGRhLnRvQmFzZTU4KCldOiB7XG4gICAgICAgICAgZGF0YTogYnVpbGRNaW50Q29uZmlnKHRydWUsIGdhdGluZ1Byb2dyYW0pLFxuICAgICAgICAgIG93bmVyOiBUT0tFTl9BQ0xfUFJPR1JBTV9JRCxcbiAgICAgICAgfSxcbiAgICAgICAgW3RoYXdFeHRyYU1ldGFzUGRhLnRvQmFzZTU4KCldOiB7XG4gICAgICAgICAgZGF0YTogYnVpbGRFeHRyYUFjY291bnRNZXRhTGlzdChleHRyYU1ldGFzKSxcbiAgICAgICAgICBvd25lcjogZ2F0aW5nUHJvZ3JhbS50b0Jhc2U1OCgpLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLnJlc29sdmVQZXJtaXNzaW9ubGVzc1RoYXcobWludEFkZHJlc3MsIHRva2VuQWNjb3VudCwgdG9rZW5BY2NvdW50T3duZXIsIGF1dGhvcml0eSk7XG5cbiAgICAgIHJlc3VsdC5hcHBsaWNhYmxlLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICByZXN1bHQuZ2F0aW5nUHJvZ3JhbSEuc2hvdWxkLmVxdWFsKGdhdGluZ1Byb2dyYW0udG9CYXNlNTgoKSk7XG4gICAgICByZXN1bHQuZmxhZ0FjY291bnQhLnNob3VsZC5lcXVhbChmbGFnQWNjb3VudFBkYS50b0Jhc2U1OCgpKTtcbiAgICAgIHJlc3VsdC5taW50Q29uZmlnIS5zaG91bGQuZXF1YWwobWludENvbmZpZ1BkYS50b0Jhc2U1OCgpKTtcbiAgICAgIHJlc3VsdC50b2tlblByb2dyYW0hLnNob3VsZC5lcXVhbChUT0tFTl8yMDIyX1BST0dSQU1fSUQudG9CYXNlNTgoKSk7XG4gICAgICByZXN1bHQuc3lzdGVtUHJvZ3JhbSEuc2hvdWxkLmVxdWFsKFN5c3RlbVByb2dyYW0ucHJvZ3JhbUlkLnRvQmFzZTU4KCkpO1xuICAgICAgLy8gZXh0cmEgYWNjb3VudHMgPSBbdGhhd0V4dHJhTWV0YXMsIC4uLnJlc29sdmVkIGZpeGVkLWFkZHJlc3MgZXh0cmFzXVxuICAgICAgcmVzdWx0LmV4dHJhQWNjb3VudHMhLnNob3VsZC5kZWVwRXF1YWwoW1xuICAgICAgICB7IHB1YmtleTogdGhhd0V4dHJhTWV0YXNQZGEudG9CYXNlNTgoKSwgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiBmYWxzZSB9LFxuICAgICAgICAuLi5leHRyYU1ldGFzLFxuICAgICAgXSk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyBhcHBsaWNhYmxlOmZhbHNlIGZvciBhIG1pbnQgd2l0aCBubyBUb2tlbiBBQ0wgTWludENvbmZpZycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIHN0dWJOb2RlKHt9KTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYmFzZWNvaW4ucmVzb2x2ZVBlcm1pc3Npb25sZXNzVGhhdyhtaW50QWRkcmVzcywgdG9rZW5BY2NvdW50LCB0b2tlbkFjY291bnRPd25lciwgYXV0aG9yaXR5KTtcbiAgICAgIHJlc3VsdC5zaG91bGQuZGVlcEVxdWFsKHsgYXBwbGljYWJsZTogZmFsc2UgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyBhcHBsaWNhYmxlOmZhbHNlIHdoZW4gcGVybWlzc2lvbmxlc3MgdGhhdyBpcyBkaXNhYmxlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIHN0dWJOb2RlKHtcbiAgICAgICAgW21pbnRDb25maWdQZGEudG9CYXNlNTgoKV06IHtcbiAgICAgICAgICBkYXRhOiBidWlsZE1pbnRDb25maWcoZmFsc2UsIGdhdGluZ1Byb2dyYW0pLFxuICAgICAgICAgIG93bmVyOiBUT0tFTl9BQ0xfUFJPR1JBTV9JRCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi5yZXNvbHZlUGVybWlzc2lvbmxlc3NUaGF3KG1pbnRBZGRyZXNzLCB0b2tlbkFjY291bnQsIHRva2VuQWNjb3VudE93bmVyLCBhdXRob3JpdHkpO1xuICAgICAgcmVzdWx0LnNob3VsZC5kZWVwRXF1YWwoeyBhcHBsaWNhYmxlOiBmYWxzZSB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==