@bitgo/sdk-coin-ton 3.20.10 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/ton.js +3 -3
- package/dist/test/unit/ton.js +2 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
package/dist/test/unit/ton.js
CHANGED
|
@@ -644,7 +644,7 @@ describe('TON:', function () {
|
|
|
644
644
|
}),
|
|
645
645
|
};
|
|
646
646
|
sandbox.stub(tonweb_1.default, 'HttpProvider').returns(mockProvider);
|
|
647
|
-
const decryptStub = sandbox.stub(bitgo, '
|
|
647
|
+
const decryptStub = sandbox.stub(bitgo, 'decrypt');
|
|
648
648
|
decryptStub.onFirstCall().resolves(JSON.stringify({ dummy: 'userSigningMaterial' }));
|
|
649
649
|
decryptStub.onSecondCall().resolves(JSON.stringify({ dummy: 'backupSigningMaterial' }));
|
|
650
650
|
sandbox
|
|
@@ -749,4 +749,4 @@ describe('TON:', function () {
|
|
|
749
749
|
});
|
|
750
750
|
});
|
|
751
751
|
});
|
|
752
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L3Rvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhDQUE0QztBQUM1Qyw0Q0FBMEM7QUFDMUMsbUNBQWtFO0FBQ2xFLDZDQUErQjtBQUMvQixvREFBNEI7QUFDNUIsMkRBQTZDO0FBQzdDLDhDQUF1RTtBQUN2RSxvREFBNEI7QUFDNUIsZ0VBQXdDO0FBQ3hDLG9EQUE0QjtBQUU1QixRQUFRLENBQUMsTUFBTSxFQUFFO0lBQ2YsSUFBSSxRQUFRLENBQUM7SUFDYixNQUFNLEtBQUssR0FBRyxvQkFBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDNUQsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsU0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzlDLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFVBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNoRCxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUMzQixNQUFNLGNBQWMsR0FBRztRQUNyQjtZQUNFLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztZQUMvRSxNQUFNLEVBQUUsRUFBRTtTQUNYO1FBQ0Q7WUFDRSxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsd0NBQXdDLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFDbEcsTUFBTSxFQUFFLEVBQUU7U0FDWDtLQUNGLENBQUM7SUFDRixNQUFNLHdCQUF3QixHQUFHO1FBQy9CO1lBQ0UsS0FBSyxF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LEVBQUUsQ0FBQztpQkFDakI7YUFDRixDQUFDO1lBRUYsNERBQTREO1lBQzVELE1BQU0sa0JBQWtCLEdBQUc7Z0JBQ3pCLFlBQVksRUFBRTtvQkFDWjt3QkFDRSxZQUFZLEVBQ1YsMFBBQTBQO3dCQUM1UCxTQUFTLEVBQUUsQ0FBQztxQkFDYjtpQkFDRjtnQkFDRCxhQUFhLEVBQUUsQ0FBQzthQUNqQixDQUFDO1lBRUYsb0ZBQW9GO1lBQ3BGLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLHFDQUFxQyxDQUFDLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFFM0Ysd0RBQXdEO1lBQ3hELE1BQU0sV0FBVyxHQUFHLE1BQU0sUUFBUSxDQUFDLG1DQUFtQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRS9FLHNCQUFzQjtZQUN0QixXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNuRCwwUEFBMFAsQ0FDM1AsQ0FBQztZQUNGLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEQsV0FBVyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlc3RCaXRHbyB9IGZyb20gJ0BiaXRnby9zZGstdGVzdCc7XG5pbXBvcnQgeyBCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby9zZGstYXBpJztcbmltcG9ydCB7IFRvbiwgVG9uUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMsIFR0b24gfSBmcm9tICcuLi8uLi9zcmMnO1xuaW1wb3J0ICogYXMgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vcmVzb3VyY2VzL3Rvbic7XG5pbXBvcnQgeyBFRERTQU1ldGhvZHMsIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4uLy4uL3NyYy9saWIvdXRpbHMnO1xuaW1wb3J0IFRvbndlYiBmcm9tICd0b253ZWInO1xuXG5kZXNjcmliZSgnVE9OOicsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGJhc2Vjb2luO1xuICBjb25zdCBiaXRnbyA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHb0FQSSwgeyBlbnY6ICdtb2NrJyB9KTtcbiAgYml0Z28uc2FmZVJlZ2lzdGVyKCd0b24nLCBUb24uY3JlYXRlSW5zdGFuY2UpO1xuICBiaXRnby5zYWZlUmVnaXN0ZXIoJ3R0b24nLCBUdG9uLmNyZWF0ZUluc3RhbmNlKTtcbiAgYml0Z28uaW5pdGlhbGl6ZVRlc3RWYXJzKCk7XG4gIGNvbnN0IHR4UHJlYnVpbGRMaXN0ID0gW1xuICAgIHtcbiAgICAgIHR4SGV4OiBCdWZmZXIuZnJvbSh0ZXN0RGF0YS5zaWduZWRTZW5kVHJhbnNhY3Rpb24udHgsICdiYXNlNjQnKS50b1N0cmluZygnaGV4JyksXG4gICAgICB0eEluZm86IHt9LFxuICAgIH0sXG4gICAge1xuICAgICAgdHhIZXg6IEJ1ZmZlci5mcm9tKHRlc3REYXRhLnNpZ25lZFNpbmdsZU5vbWluYXRvcldpdGhkcmF3VHJhbnNhY3Rpb24udHgsICdiYXNlNjQnKS50b1N0cmluZygnaGV4JyksXG4gICAgICB0eEluZm86IHt9LFxuICAgIH0sXG4gIF07XG4gIGNvbnN0IHR4UHJlYnVpbGRCb3VuY2VhYmxlTGlzdCA9IFtcbiAgICB7XG4gICAgICB0eEhleDogQnVmZmVyLmZyb20odGVzdERhdGEuc2lnbmVkU2VuZFRyYW5zYWN0aW9uLnR4Qm91bmNlYWJsZSwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHR4SW5mbzoge30sXG4gICAgfSxcbiAgICB7XG4gICAgICB0eEhleDogQnVmZmVyLmZyb20odGVzdERhdGEuc2lnbmVkU2luZ2xlTm9taW5hdG9yV2l0aGRyYXdUcmFuc2FjdGlvbi50eEJvdW5jZWFibGUsICdiYXNlNjQnKS50b1N0cmluZygnaGV4JyksXG4gICAgICB0eEluZm86IHt9LFxuICAgIH0sXG4gIF07XG5cbiAgY29uc3QgdHhQYXJhbXNMaXN0ID0gW1xuICAgIHtcbiAgICAgIHJlY2lwaWVudHM6IFt0ZXN0RGF0YS5zaWduZWRTZW5kVHJhbnNhY3Rpb24ucmVjaXBpZW50XSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHJlY2lwaWVudHM6IFt0ZXN0RGF0YS5zaWduZWRTaW5nbGVOb21pbmF0b3JXaXRoZHJhd1RyYW5zYWN0aW9uLnJlY2lwaWVudF0sXG4gICAgfSxcbiAgXTtcblxuICBjb25zdCB0eFBhcmFtc0JvdW5jZWFibGVMaXN0ID0gW1xuICAgIHtcbiAgICAgIHJlY2lwaWVudHM6IFt0ZXN0RGF0YS5zaWduZWRTZW5kVHJhbnNhY3Rpb24ucmVjaXBpZW50Qm91bmNlYWJsZV0sXG4gICAgfSxcbiAgICB7XG4gICAgICByZWNpcGllbnRzOiBbdGVzdERhdGEuc2lnbmVkU2luZ2xlTm9taW5hdG9yV2l0aGRyYXdUcmFuc2FjdGlvbi5yZWNpcGllbnRCb3VuY2VhYmxlXSxcbiAgICB9LFxuICBdO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIHRoZSByaWdodCBpbmZvJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHRvbiA9IGJpdGdvLmNvaW4oJ3RvbicpO1xuICAgIGNvbnN0IHR0b24gPSBiaXRnby5jb2luKCd0dG9uJyk7XG5cbiAgICB0b24uZ2V0Q2hhaW4oKS5zaG91bGQuZXF1YWwoJ3RvbicpO1xuICAgIHRvbi5nZXRGYW1pbHkoKS5zaG91bGQuZXF1YWwoJ3RvbicpO1xuICAgIHRvbi5nZXRGdWxsTmFtZSgpLnNob3VsZC5lcXVhbCgnR3JhbScpO1xuICAgIHRvbi5nZXRCYXNlRmFjdG9yKCkuc2hvdWxkLmVxdWFsKDFlOSk7XG5cbiAgICB0dG9uLmdldENoYWluKCkuc2hvdWxkLmVxdWFsKCd0dG9uJyk7XG4gICAgdHRvbi5nZXRGYW1pbHkoKS5zaG91bGQuZXF1YWwoJ3RvbicpO1xuICAgIHR0b24uZ2V0RnVsbE5hbWUoKS5zaG91bGQuZXF1YWwoJ1Rlc3RuZXQgR3JhbScpO1xuICAgIHR0b24uZ2V0QmFzZUZhY3RvcigpLnNob3VsZC5lcXVhbCgxZTkpO1xuICB9KTtcblxuICBkZXNjcmliZSgnVmVyaWZ5IHRyYW5zYWN0aW9uOiAnLCAoKSA9PiB7XG4gICAgYmFzZWNvaW4gPSBiaXRnby5jb2luKCd0dG9uJyk7XG4gICAgdHhQYXJhbXNMaXN0LmZvckVhY2goKF8sIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHR4UGFyYW1zTGlzdFtpbmRleF07XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gdHhQcmVidWlsZExpc3RbaW5kZXhdO1xuICAgICAgY29uc3QgdHhQYXJhbXNCb3VuY2VhYmxlID0gdHhQYXJhbXNCb3VuY2VhYmxlTGlzdFtpbmRleF07XG4gICAgICBjb25zdCB0eFByZWJ1aWxkQm91bmNlYWJsZSA9IHR4UHJlYnVpbGRCb3VuY2VhYmxlTGlzdFtpbmRleF07XG5cbiAgICAgIGl0KCdzaG91bGQgc3VjY2VlZCB0byB2ZXJpZnkgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHZlcmlmaWNhdGlvbiA9IHt9O1xuICAgICAgICBjb25zdCBpc1RyYW5zYWN0aW9uVmVyaWZpZWQgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgICB2ZXJpZmljYXRpb24sXG4gICAgICAgIH0gYXMgYW55KTtcbiAgICAgICAgaXNUcmFuc2FjdGlvblZlcmlmaWVkLnNob3VsZC5lcXVhbCh0cnVlKTtcblxuICAgICAgICBjb25zdCBpc0JvdW5jZWFibGVUcmFuc2FjdGlvblZlcmlmaWVkID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHR4UGFyYW1zOiB0eFBhcmFtc0JvdW5jZWFibGUsXG4gICAgICAgICAgdHhQcmVidWlsZDogdHhQcmVidWlsZEJvdW5jZWFibGUsXG4gICAgICAgICAgdmVyaWZpY2F0aW9uOiB7fSxcbiAgICAgICAgfSBhcyBhbnkpO1xuICAgICAgICBpc0JvdW5jZWFibGVUcmFuc2FjdGlvblZlcmlmaWVkLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHN1Y2NlZWQgdG8gdmVyaWZ5IHRyYW5zYWN0aW9uIHdoZW4gcmVjaXBpZW50cyBhbW91bnQgYXJlIG51bWJlcnMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHR4UGFyYW1zV2l0aE51bWJlckFtb3VudHMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHR4UGFyYW1zKSk7XG4gICAgICAgIHR4UGFyYW1zV2l0aE51bWJlckFtb3VudHMucmVjaXBpZW50c1swXS5hbW91bnQgPSAyMDAwMDAwMDtcbiAgICAgICAgY29uc3QgdmVyaWZpY2F0aW9uID0ge307XG4gICAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICAgIHR4UGFyYW1zOiB0eFBhcmFtc1dpdGhOdW1iZXJBbW91bnRzLFxuICAgICAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgICAgIHZlcmlmaWNhdGlvbixcbiAgICAgICAgICB9IGFzIGFueSlcbiAgICAgICAgICAuc2hvdWxkLnJlamVjdGVkV2l0aCgnVHggb3V0cHV0cyBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHR4UGFyYW1zIHJlY2lwaWVudHMnKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHN1Y2NlZWQgdG8gdmVyaWZ5IHRyYW5zYWN0aW9uIHdoZW4gcmVjaXBpZW50cyBhbW91bnQgYXJlIHN0cmluZ3MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHR4UGFyYW1zV2l0aE51bWJlckFtb3VudHMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHR4UGFyYW1zKSk7XG4gICAgICAgIHR4UGFyYW1zV2l0aE51bWJlckFtb3VudHMucmVjaXBpZW50c1swXS5hbW91bnQgPSAnMjAwMDAwMDAnO1xuICAgICAgICBjb25zdCB2ZXJpZmljYXRpb24gPSB7fTtcbiAgICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgICAudmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICAgICAgdHhQYXJhbXM6IHR4UGFyYW1zV2l0aE51bWJlckFtb3VudHMsXG4gICAgICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICAgICAgdmVyaWZpY2F0aW9uLFxuICAgICAgICAgIH0gYXMgYW55KVxuICAgICAgICAgIC5zaG91bGQucmVqZWN0ZWRXaXRoKCdUeCBvdXRwdXRzIGRvZXMgbm90IG1hdGNoIHdpdGggZXhwZWN0ZWQgdHhQYXJhbXMgcmVjaXBpZW50cycpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgc3VjY2VlZCB0byB2ZXJpZnkgdHJhbnNhY3Rpb24gd2hlbiByZWNpcGllbnRzIGFtb3VudHMgYXJlIG51bWJlciBhbmQgYW1vdW50IGlzIHNhbWUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHZlcmlmaWNhdGlvbiA9IHt9O1xuICAgICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAgIC52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgICAgICB2ZXJpZmljYXRpb24sXG4gICAgICAgICAgfSBhcyBhbnkpXG4gICAgICAgICAgLnNob3VsZC5yZXNvbHZlZFdpdGgodHJ1ZSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBzdWNjZWVkIHRvIHZlcmlmeSB0cmFuc2FjdGlvbiB3aGVuIHJlY2lwaWVudHMgYW1vdW50cyBhcmUgc3RyaW5nIGFuZCBhbW91bnQgaXMgc2FtZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgdmVyaWZpY2F0aW9uID0ge307XG4gICAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICAgIHR4UGFyYW1zLFxuICAgICAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgICAgIHZlcmlmaWNhdGlvbixcbiAgICAgICAgICB9IGFzIGFueSlcbiAgICAgICAgICAuc2hvdWxkLnJlc29sdmVkV2l0aCh0cnVlKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHN1Y2NlZWQgdG8gdmVyaWZ5IHRyYW5zYWN0aW9uIHdoZW4gcmVjaXBpZW50IGFkZHJlc3MgYXJlIG5vbiBib3VuY2VhYmxlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB0eFBhcmFtc1dpdGhOdW1iZXJBbW91bnRzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0eFBhcmFtcykpO1xuICAgICAgICB0eFBhcmFtc1dpdGhOdW1iZXJBbW91bnRzLnJlY2lwaWVudHNbMF0uYWRkcmVzcyA9IG5ldyBUb253ZWIuQWRkcmVzcyhcbiAgICAgICAgICB0eFBhcmFtc1dpdGhOdW1iZXJBbW91bnRzLnJlY2lwaWVudHNbMF0uYWRkcmVzc1xuICAgICAgICApLnRvU3RyaW5nKHRydWUsIHRydWUsIGZhbHNlKTtcbiAgICAgICAgY29uc3QgdmVyaWZpY2F0aW9uID0ge307XG4gICAgICAgIGNvbnN0IGlzVmVyaWZpZWQgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgdHhQYXJhbXM6IHR4UGFyYW1zV2l0aE51bWJlckFtb3VudHMsXG4gICAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgICB2ZXJpZmljYXRpb24sXG4gICAgICAgIH0gYXMgYW55KTtcbiAgICAgICAgaXNWZXJpZmllZC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBmYWlsIHRvIHZlcmlmeSB0cmFuc2FjdGlvbiB3aXRoIGludmFsaWQgcGFyYW0nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7fTtcbiAgICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgICAudmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICAgIH0gYXMgYW55KVxuICAgICAgICAgIC5zaG91bGQucmVqZWN0ZWRXaXRoKCdtaXNzaW5nIHJlcXVpcmVkIHR4IHByZWJ1aWxkIHByb3BlcnR5IHR4SGV4Jyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc3VjY2VlZCB0byB2ZXJpZnkgdHJhbnNhY3Rpb24gd2l0aCByZWNpcGllbnQgaGF2aW5nIG1lbW8nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgcmVjaXBpZW50czogW3Rlc3REYXRhLnNpZ25lZFNlbmRUcmFuc2FjdGlvbkZvck1lbW9JZC5yZWNpcGllbnRdLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHR4SGV4OiBCdWZmZXIuZnJvbSh0ZXN0RGF0YS5zaWduZWRTZW5kVHJhbnNhY3Rpb25Gb3JNZW1vSWQudHgsICdiYXNlNjQnKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIHR4SW5mbzoge30sXG4gICAgICB9O1xuICAgICAgY29uc3QgdmVyaWZpY2F0aW9uID0ge307XG4gICAgICBjb25zdCBpc1RyYW5zYWN0aW9uVmVyaWZpZWQgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UGFyYW1zLFxuICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICB2ZXJpZmljYXRpb24sXG4gICAgICB9IGFzIGFueSk7XG4gICAgICBpc1RyYW5zYWN0aW9uVmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnRXhwbGFpbiBUcmFuc2FjdGlvbjogJywgKCkgPT4ge1xuICAgIGNvbnN0IGJhc2Vjb2luID0gYml0Z28uY29pbigndHRvbicpO1xuICAgIGl0KCdzaG91bGQgZXhwbGFpbiBhIHRyYW5zZmVyIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZXhwbGFpbmVkVHJhbnNhY3Rpb24gPSAoYXdhaXQgYmFzZWNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhIZXg6IEJ1ZmZlci5mcm9tKHRlc3REYXRhLnNpZ25lZFNlbmRUcmFuc2FjdGlvbi50eCwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIH0pKSBhcyBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uO1xuICAgICAgZXhwbGFpbmVkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGRpc3BsYXlPcmRlcjogWydpZCcsICdvdXRwdXRzJywgJ291dHB1dEFtb3VudCcsICdjaGFuZ2VPdXRwdXRzJywgJ2NoYW5nZUFtb3VudCcsICdmZWUnLCAnd2l0aGRyYXdBbW91bnQnXSxcbiAgICAgICAgaWQ6ICd0dXlPa3lGVU12X25lVl9GZU5CSDI0TmQ0Y01MMmpVZ0RQNHpqR2t1T0ZJPScsXG4gICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiB0ZXN0RGF0YS5zaWduZWRTZW5kVHJhbnNhY3Rpb24ucmVjaXBpZW50LmFkZHJlc3MsXG4gICAgICAgICAgICBhbW91bnQ6IHRlc3REYXRhLnNpZ25lZFNlbmRUcmFuc2FjdGlvbi5yZWNpcGllbnQuYW1vdW50LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIG91dHB1dEFtb3VudDogdGVzdERhdGEuc2lnbmVkU2VuZFRyYW5zYWN0aW9uLnJlY2lwaWVudC5hbW91bnQsXG4gICAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgICAgZmVlOiB7IGZlZTogJ1VOS05PV04nIH0sXG4gICAgICAgIHdpdGhkcmF3QW1vdW50OiB1bmRlZmluZWQsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZXhwbGFpbiBhIG5vbi1ib3VuY2VhYmxlIHRyYW5zZmVyIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZXhwbGFpbmVkVHJhbnNhY3Rpb24gPSAoYXdhaXQgYmFzZWNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhIZXg6IEJ1ZmZlci5mcm9tKHRlc3REYXRhLnNpZ25lZFNlbmRUcmFuc2FjdGlvbi50eCwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgdG9BZGRyZXNzQm91bmNlYWJsZTogZmFsc2UsXG4gICAgICAgIGZyb21BZGRyZXNzQm91bmNlYWJsZTogZmFsc2UsXG4gICAgICB9KSkgYXMgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbjtcbiAgICAgIGV4cGxhaW5lZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBkaXNwbGF5T3JkZXI6IFsnaWQnLCAnb3V0cHV0cycsICdvdXRwdXRBbW91bnQnLCAnY2hhbmdlT3V0cHV0cycsICdjaGFuZ2VBbW91bnQnLCAnZmVlJywgJ3dpdGhkcmF3QW1vdW50J10sXG4gICAgICAgIGlkOiAndHV5T2t5RlVNdl9uZVZfRmVOQkgyNE5kNGNNTDJqVWdEUDR6akdrdU9GST0nLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogdGVzdERhdGEuc2lnbmVkU2VuZFRyYW5zYWN0aW9uLnJlY2lwaWVudEJvdW5jZWFibGUuYWRkcmVzcyxcbiAgICAgICAgICAgIGFtb3VudDogdGVzdERhdGEuc2lnbmVkU2VuZFRyYW5zYWN0aW9uLnJlY2lwaWVudEJvdW5jZWFibGUuYW1vdW50LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIG91dHB1dEFtb3VudDogdGVzdERhdGEuc2lnbmVkU2VuZFRyYW5zYWN0aW9uLnJlY2lwaWVudEJvdW5jZWFibGUuYW1vdW50LFxuICAgICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICAgIGZlZTogeyBmZWU6ICdVTktOT1dOJyB9LFxuICAgICAgICB3aXRoZHJhd0Ftb3VudDogdW5kZWZpbmVkLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gYSBzaW5nbGUgbm9taW5hdG9yIHdpdGhkcmF3IHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZXhwbGFpbmVkVHJhbnNhY3Rpb24gPSAoYXdhaXQgYmFzZWNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhIZXg6IEJ1ZmZlci5mcm9tKHRlc3REYXRhLnNpZ25lZFNpbmdsZU5vbWluYXRvcldpdGhkcmF3VHJhbnNhY3Rpb24udHgsICdiYXNlNjQnKS50b1N0cmluZygnaGV4JyksXG4gICAgICB9KSkgYXMgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbjtcbiAgICAgIGV4cGxhaW5lZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBkaXNwbGF5T3JkZXI6IFsnaWQnLCAnb3V0cHV0cycsICdvdXRwdXRBbW91bnQnLCAnY2hhbmdlT3V0cHV0cycsICdjaGFuZ2VBbW91bnQnLCAnZmVlJywgJ3dpdGhkcmF3QW1vdW50J10sXG4gICAgICAgIGlkOiB0ZXN0RGF0YS5zaWduZWRTaW5nbGVOb21pbmF0b3JXaXRoZHJhd1RyYW5zYWN0aW9uLnR4SWQsXG4gICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiB0ZXN0RGF0YS5zaWduZWRTaW5nbGVOb21pbmF0b3JXaXRoZHJhd1RyYW5zYWN0aW9uLnJlY2lwaWVudC5hZGRyZXNzLFxuICAgICAgICAgICAgYW1vdW50OiB0ZXN0RGF0YS5zaWduZWRTaW5nbGVOb21pbmF0b3JXaXRoZHJhd1RyYW5zYWN0aW9uLnJlY2lwaWVudC5hbW91bnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgb3V0cHV0QW1vdW50OiB0ZXN0RGF0YS5zaWduZWRTaW5nbGVOb21pbmF0b3JXaXRoZHJhd1RyYW5zYWN0aW9uLnJlY2lwaWVudC5hbW91bnQsXG4gICAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgICAgZmVlOiB7IGZlZTogJ1VOS05PV04nIH0sXG4gICAgICAgIHdpdGhkcmF3QW1vdW50OiAnOTMyMTc4MTEyMzMwMDAwJyxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIGEgbm9uLWJvdW5jZWFibGUgc2luZ2xlIG5vbWluYXRvciB3aXRoZHJhdyB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGV4cGxhaW5lZFRyYW5zYWN0aW9uID0gKGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4SGV4OiBCdWZmZXIuZnJvbSh0ZXN0RGF0YS5zaWduZWRTaW5nbGVOb21pbmF0b3JXaXRoZHJhd1RyYW5zYWN0aW9uLnR4LCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICB0b0FkZHJlc3NCb3VuY2VhYmxlOiBmYWxzZSxcbiAgICAgICAgZnJvbUFkZHJlc3NCb3VuY2VhYmxlOiBmYWxzZSxcbiAgICAgIH0pKSBhcyBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uO1xuICAgICAgZXhwbGFpbmVkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGRpc3BsYXlPcmRlcjogWydpZCcsICdvdXRwdXRzJywgJ291dHB1dEFtb3VudCcsICdjaGFuZ2VPdXRwdXRzJywgJ2NoYW5nZUFtb3VudCcsICdmZWUnLCAnd2l0aGRyYXdBbW91bnQnXSxcbiAgICAgICAgaWQ6IHRlc3REYXRhLnNpZ25lZFNpbmdsZU5vbWluYXRvcldpdGhkcmF3VHJhbnNhY3Rpb24udHhJZCxcbiAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6IHRlc3REYXRhLnNpZ25lZFNpbmdsZU5vbWluYXRvcldpdGhkcmF3VHJhbnNhY3Rpb24ucmVjaXBpZW50Qm91bmNlYWJsZS5hZGRyZXNzLFxuICAgICAgICAgICAgYW1vdW50OiB0ZXN0RGF0YS5zaWduZWRTaW5nbGVOb21pbmF0b3JXaXRoZHJhd1RyYW5zYWN0aW9uLnJlY2lwaWVudEJvdW5jZWFibGUuYW1vdW50LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIG91dHB1dEFtb3VudDogdGVzdERhdGEuc2lnbmVkU2luZ2xlTm9taW5hdG9yV2l0aGRyYXdUcmFuc2FjdGlvbi5yZWNpcGllbnRCb3VuY2VhYmxlLmFtb3VudCxcbiAgICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgICBmZWU6IHsgZmVlOiAnVU5LTk9XTicgfSxcbiAgICAgICAgd2l0aGRyYXdBbW91bnQ6ICc5MzIxNzgxMTIzMzAwMDAnLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gZXhwbGFpbiB0cmFuc2FjdGlvbiB3aXRoIG1pc3NpbmcgcGFyYW1zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgYmFzZWNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHt9KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHNob3VsZC5lcXVhbChlcnJvci5tZXNzYWdlLCAnSW52YWxpZCB0cmFuc2FjdGlvbicpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIGV4cGxhaW4gdHJhbnNhY3Rpb24gd2l0aCBpbnZhbGlkIHBhcmFtcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7IHR4SGV4OiAncmFuZG9tU3RyaW5nJyB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHNob3VsZC5lcXVhbChlcnJvci5tZXNzYWdlLCAnSW52YWxpZCB0cmFuc2FjdGlvbicpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnUGFyc2UgVHJhbnNhY3Rpb25zOiAnLCAoKSA9PiB7XG4gICAgY29uc3QgYmFzZWNvaW4gPSBiaXRnby5jb2luKCd0dG9uJyk7XG5cbiAgICBjb25zdCB0cmFuc2FjdGlvbnNMaXN0ID0gW3Rlc3REYXRhLnNpZ25lZFNlbmRUcmFuc2FjdGlvbi50eCwgdGVzdERhdGEuc2lnbmVkU2luZ2xlTm9taW5hdG9yV2l0aGRyYXdUcmFuc2FjdGlvbi50eF07XG5cbiAgICBjb25zdCB0cmFuc2FjdGlvbklucHV0c1Jlc3BvbnNlTGlzdCA9IFtcbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6ICdFUUNTQmpSM2ZVT0w5OFdUdzJGX0lUNEJyY3FqWkpXVkxXVVN6NVdRRHBhTDlKcGwnLFxuICAgICAgICAgIGFtb3VudDogJzEwMDAwMDAwJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBhZGRyZXNzOiAnRVFBYkp1Zy1rLXR1ZldNakVDMVJLU00waWlKVERVY1lrQzd6V0FOSHJrVDU1Rm9sJyxcbiAgICAgICAgICBhbW91bnQ6ICcxMjM0MDAwMDAnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICBdO1xuXG4gICAgY29uc3QgdHJhbnNhY3Rpb25JbnB1dHNSZXNwb25zZUJvdW5jZWFibGVMaXN0ID0gW1xuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgYWRkcmVzczogJ1VRQ1NCalIzZlVPTDk4V1R3MkZfSVQ0QnJjcWpaSldWTFdVU3o1V1FEcGFMOU1lZycsXG4gICAgICAgICAgYW1vdW50OiAnMTAwMDAwMDAnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6ICdVUUFiSnVnLWstdHVmV01qRUMxUktTTTBpaUpURFVjWWtDN3pXQU5IcmtUNTVBZmcnLFxuICAgICAgICAgIGFtb3VudDogJzEyMzQwMDAwMCcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIF07XG5cbiAgICBjb25zdCB0cmFuc2FjdGlvbk91dHB1dHNSZXNwb25zZUxpc3QgPSBbXG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBhZGRyZXNzOiAnRVFBMGk4LUNkR25GX0RoVUhIZjkyUjFPTkg2c0lBOXZMWl9XTGNDSWhmQkJYd3RHJyxcbiAgICAgICAgICBhbW91bnQ6ICcxMDAwMDAwMCcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgYWRkcmVzczogJ0VRQTBpOC1DZEduRl9EaFVISGY5MlIxT05INnNJQTl2TFpfV0xjQ0loZkJCWHd0RycsXG4gICAgICAgICAgYW1vdW50OiAnMTIzNDAwMDAwJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgXTtcblxuICAgIGNvbnN0IHRyYW5zYWN0aW9uT3V0cHV0c1Jlc3BvbnNlQm91bmNlYWJsZUxpc3QgPSBbXG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBhZGRyZXNzOiAnVVFBMGk4LUNkR25GX0RoVUhIZjkyUjFPTkg2c0lBOXZMWl9XTGNDSWhmQkJYMWFEJyxcbiAgICAgICAgICBhbW91bnQ6ICcxMDAwMDAwMCcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgYWRkcmVzczogJ1VRQTBpOC1DZEduRl9EaFVISGY5MlIxT05INnNJQTl2TFpfV0xjQ0loZkJCWDFhRCcsXG4gICAgICAgICAgYW1vdW50OiAnMTIzNDAwMDAwJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgXTtcblxuICAgIHRyYW5zYWN0aW9uc0xpc3QuZm9yRWFjaCgoXywgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb25zTGlzdFtpbmRleF07XG4gICAgICBjb25zdCB0cmFuc2FjdGlvbklucHV0c1Jlc3BvbnNlID0gdHJhbnNhY3Rpb25JbnB1dHNSZXNwb25zZUxpc3RbaW5kZXhdO1xuICAgICAgY29uc3QgdHJhbnNhY3Rpb25JbnB1dHNSZXNwb25zZUJvdW5jZWFibGUgPSB0cmFuc2FjdGlvbklucHV0c1Jlc3BvbnNlQm91bmNlYWJsZUxpc3RbaW5kZXhdO1xuICAgICAgY29uc3QgdHJhbnNhY3Rpb25PdXRwdXRzUmVzcG9uc2UgPSB0cmFuc2FjdGlvbk91dHB1dHNSZXNwb25zZUxpc3RbaW5kZXhdO1xuICAgICAgY29uc3QgdHJhbnNhY3Rpb25PdXRwdXRzUmVzcG9uc2VCb3VuY2VhYmxlID0gdHJhbnNhY3Rpb25PdXRwdXRzUmVzcG9uc2VCb3VuY2VhYmxlTGlzdFtpbmRleF07XG5cbiAgICAgIGl0KCdzaG91bGQgcGFyc2UgYSBUT04gdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICAgICAgdHhIZXg6IEJ1ZmZlci5mcm9tKHRyYW5zYWN0aW9uLCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICB9KTtcblxuICAgICAgICBwYXJzZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgICBpbnB1dHM6IHRyYW5zYWN0aW9uSW5wdXRzUmVzcG9uc2UsXG4gICAgICAgICAgb3V0cHV0czogdHJhbnNhY3Rpb25PdXRwdXRzUmVzcG9uc2UsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgcGFyc2UgYSBub24tYm91bmNlYWJsZSBUT04gdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICAgICAgdHhIZXg6IEJ1ZmZlci5mcm9tKHRyYW5zYWN0aW9uLCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICAgIHRvQWRkcmVzc0JvdW5jZWFibGU6IGZhbHNlLFxuICAgICAgICAgIGZyb21BZGRyZXNzQm91bmNlYWJsZTogZmFsc2UsXG4gICAgICAgIH0gYXMgVG9uUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMpO1xuXG4gICAgICAgIHBhcnNlZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICAgIGlucHV0czogdHJhbnNhY3Rpb25JbnB1dHNSZXNwb25zZUJvdW5jZWFibGUsXG4gICAgICAgICAgb3V0cHV0czogdHJhbnNhY3Rpb25PdXRwdXRzUmVzcG9uc2VCb3VuY2VhYmxlLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGZhaWwgdG8gcGFyc2UgYSBUT04gdHJhbnNhY3Rpb24gd2hlbiBleHBsYWluVHJhbnNhY3Rpb24gcmVzcG9uc2UgaXMgdW5kZWZpbmVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBzdHViID0gc2lub24uc3R1YihUb24ucHJvdG90eXBlLCAnZXhwbGFpblRyYW5zYWN0aW9uJyk7XG4gICAgICAgIHN0dWIucmVzb2x2ZXModW5kZWZpbmVkKTtcbiAgICAgICAgYXdhaXQgYmFzZWNvaW4ucGFyc2VUcmFuc2FjdGlvbih7IHR4SGV4OiB0cmFuc2FjdGlvbiB9KS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdpbnZhbGlkIHJhdyB0cmFuc2FjdGlvbicpO1xuICAgICAgICBzdHViLnJlc3RvcmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnQWRkcmVzcyBWYWxpZGF0aW9uJywgKCkgPT4ge1xuICAgIGNvbnN0IGJhc2Vjb2luID0gYml0Z28uY29pbigndHRvbicpO1xuICAgIGxldCBrZXljaGFpbnM7XG4gICAgbGV0IGNvbW1vbktleWNoYWluO1xuXG4gICAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbW1vbktleWNoYWluID1cbiAgICAgICAgJzE5YmRmZTJhNGI0OThhMDU1MTEzODEyMzVhODg5MmQ1NDI2NzgwN2M0YTNmNjU0ZTMxMGI5MzhiOGI0MjRmZjRhZGVkYmU5MmY0YzE0NmRlNjQxYzY3NTA4YTk2MTMyNGM4NTA0Y2RmOGUwYzBhY2JiNjhkNjEwNGNjY2NkNzgxJztcbiAgICAgIGtleWNoYWlucyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnNjQyNGMzNTNlYWY3OGQwMDA3NjZlOTU5NDk4Njg0NjgnLFxuICAgICAgICAgIHNvdXJjZTogJ3VzZXInLFxuICAgICAgICAgIHR5cGU6ICd0c3MnLFxuICAgICAgICAgIGNvbW1vbktleWNoYWluOlxuICAgICAgICAgICAgJzE5YmRmZTJhNGI0OThhMDU1MTEzODEyMzVhODg5MmQ1NDI2NzgwN2M0YTNmNjU0ZTMxMGI5MzhiOGI0MjRmZjRhZGVkYmU5MmY0YzE0NmRlNjQxYzY3NTA4YTk2MTMyNGM4NTA0Y2RmOGUwYzBhY2JiNjhkNjEwNGNjY2NkNzgxJyxcbiAgICAgICAgICBlbmNyeXB0ZWRQcnY6XG4gICAgICAgICAgICAne1wiaXZcIjpcImNaZDVpN0w0Unh0d3JBTFcycks3VUE9PVwiLFwidlwiOjEsXCJpdGVyXCI6MTAwMDAsXCJrc1wiOjI1NixcInRzXCI6NjQsXCJtb2RlXCI6XCJjY21cIixcImFkYXRhXCI6XCJcIixcImNpcGhlclwiOlwiYWVzXCIsXCJzYWx0XCI6XCI1emdvSDFCZDNGdz1cIixcImN0XCI6XCI5dlZsblhGUnRyTTlGVkVvK2QyY2hiR0hsTTlsRlplbXVlQnVBczNCSWtQbzMzRm83anp3d05LL2tJV2tFeWcrTm1FQmQ1SWFxQVMxNTdudnZ2d3p6c21NV2xRZFV6OXFibVhOdjNwZzk4N2NYRlIwOGV4Uys0dWh3UDFZTk9qSlRSdlJOY085WnFIYjQ2ZDRmbXlKL3lDOS9zdXNDZ2U3ci9Fc2JhTjVDM2FmdjFkenlidXE5MTJGd2FRRWxaTFlZcDVCSUN1ZEZPTVo5azBVRE1mS00vUE1Ea0g3V2V4b0dIcjlHS3EvYmdDSDJCMzlUWlp5SEtVNlV5NDdsWGVwMnM2aDBEck13SE9ybm1pTDNEWmpPajg4WW52cGhsenh1bzRlT2xEMlVIaWEyK252SWFJU1lzMjlQcjBEQXZSRXV0Y2h2Y0JwRXhqMWtXV1B2N2hRWXJ2OEYwTkFkYXRzYldsM3creEt5ZmlNS28xVVNscnd5SnZpeXBHdFF0WE9KeXcwWFBOMHJ2MitMNWxXOEJianB6SGZZWU4xM2ZKVGVkbEdURmhoa3pWdGJiUEFLRTAya3g3ekNKY2pZYWlleGRTVHNyRExTY1lOVDkvSmhkdDI3S3Bzb29laHdWb2hMZlNLejR2YkZmUnUyTVBadzMvK2MvaGZpSk5ndHo2ZXNXYm54R3JjRThVMkl3UFlDYUsrR2hrNERjcVdOSW5pNTlSSTVCNWtBc1FPVG9JSTQwcVBONTEwdVRneEJTUE83cTdNSGdreGRkNENxQnErb2pyOWowUDdvYW84RTVZK0NCREpyb2pEb0NoMW9DQ0RXOXZvMmRYbFZjRDhTSWJ3N1UvOUFmdkViQTR4eUUvNW1kMU03Q0l3TG5XczJZbnYwWXRhS29xaGRTOXg2Rm1IbE1EaE4vREtIaW5yd21vd3RyVFQ4MmZPa3BPNWc5c2FTbWdVN1F5M2dMdDh0K1Z3ZEV5ZUZlUVVLUlN5Y2k4cWdxWFFhWklnNCthWGdhU09ubENGTXRtQjhla1l4RWhUWTV1elJmck5nUzRzMVFlcUZCcE50VUYrWWRpMjk3cGJWWG5Kb1hBTitTVldkODBHQ3greUkyZHBWQzg5azNyT1dLOVdleXFsbnp1TEpXcDJSSU9COWNkVzhHRnYvZk4rUUFKcFllVnhPRTQrblpEc0tuc2o4bktjZzl0NERseDFHNmdMTTEvVnE5WXhOTGJ1enVSQzBhc1VZdmRNbm9NdnN6bXBtKytUeG5kWWlzZ05Zc2NwWlNvejd3dmNhekpORVBmaFBWakVrZDZ0VVV1TjRHTTM1SDBEbUtDVVFOVCthNkI2aG1IbFRadmp4aXlHQWc1Ylk1OWhkanZKKzIyUWR1YXpsRUVDNkxJM0hyQTd1SzBUcHBsV3pTMXRDSUZ2VE1VaGo2NURFWm1OSjIrWlk5YlE0dnNNZitEUlIzT09HNHQrRE1sTmZqT2Qzek52M1FvWTk1QmpmV3ByeUZ3UHpEcTdiQ1A2N0pEc29qN2oyVFk1RlJTclJrRDc3SDBFd2x1eDJjV2ZqUlR3Y01IY2RReHh1VjBPUDBhTmpHRGp5YkZOXCJ9JyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnNjQyNGMzNTNlYWY3OGQwMDA3NjZlOTYxMzdkNDQwNGInLFxuICAgICAgICAgIHNvdXJjZTogJ2JhY2t1cCcsXG4gICAgICAgICAgdHlwZTogJ3RzcycsXG4gICAgICAgICAgY29tbW9uS2V5Y2hhaW46XG4gICAgICAgICAgICAnMTliZGZlMmE0YjQ5OGEwNTUxMTM4MTIzNWE4ODkyZDU0MjY3ODA3YzRhM2Y2NTRlMzEwYjkzOGI4YjQyNGZmNGFkZWRiZTkyZjRjMTQ2ZGU2NDFjNjc1MDhhOTYxMzI0Yzg1MDRjZGY4ZTBjMGFjYmI2OGQ2MTA0Y2NjY2Q3ODEnLFxuICAgICAgICAgIGVuY3J5cHRlZFBydjpcbiAgICAgICAgICAgICd7XCJpdlwiOlwidmkwZFBlZi9SeDdrRy9wUnlTUWk2UT09XCIsXCJ2XCI6MSxcIml0ZXJcIjoxMDAwMCxcImtzXCI6MjU2LFwidHNcIjo2NCxcIm1vZGVcIjpcImNjbVwiLFwiYWRhdGFcIjpcIlwiLFwiY2lwaGVyXCI6XCJhZXNcIixcInNhbHRcIjpcIjllZmhRc2lFdlZzPVwiLFwiY3RcIjpcIkd3NmF0dmY2Z3hLenNqdGwzeHNlaXBPM3JBeHAxbUF6N1l1MWloRnNpNS9sZjJ2TVplZ0FwZ1p4K3B5SUxGUzlLS0xIYk5GM1U2V2dTWWRycjJ0NHZ6ZExzWGtIMVdJeGZIUytjZDJDNU41OXlBRFpEblBKQlQ2cHYvSVJ2YVllbFAwQ2szbklZUTJoU01tOG9wK1ZPV0MvU3pIZWg3c2xZRHF3RUhUR2FuMFdpZ2Z2azF5UmQ3Q0NKVGFFQW9tbmMvNGVGaTJOWTNYM2d0LzNvcHk5SUFna25ud1VGb2huOTZFV3BFUTBGNnBiekgvWjhWRjZnRitEVWNyckJ5QXhFeFVQbkhRWmlGazNZSFUvdlZWNEZ4QlUvbVZBRTh4QnNCbjV1bDVlNVNVTVBmYzdUQnVKV3Y0QkJ5VE5nOXhEU2hGLzkxWXgybmJmVW01ZDlRbU04bHBLZ3p6UXZjSzhQT0FQazg3Z1JDdUtuc0doNXZOUzBVcHBrSGMrb2NmelJRbEdBNmp6ZTdReXlRTzByTWo1THk4a1dqd2sydklTdktZSFlTMU5SN1ZVNTQ5VUlYbzdOWGphdHVuS1NjMytJcmVvUlVISXNoaWFMZzZobCtweENDdWMwcVE0M1YwbWRJZkNqVE44Z2tHV0xOazhSN3RBR1B6OWp5YXBRUGNQRUdIZ0V6MEFUSWk2eU1OV0NzaWJTMmVMaUUxdVZFSk9Ob000bGs2RlBsM1EyQ0hiVzJNZUVicWpZOGhiYXcxOG1OYjJ4U0JIL0Z3cGlpYWwrVHZpMmltcWduQ080WnBPOWJsbEtmdFpQY1F5MHN0TitlR0JsYjV1ZnlmbEtrRFNpQ2hIWXJvR2pFcG1pRmljZGRlNDhjSnN6RjUydUtObmYxcTY3ZkE5L1MyRkFIUWFiM0VYb2p4SDJHYmsra2tWMmgvVFlLRkZaU1dDM3ZpNGU4bU8rdmpNVWNSMEFkc2dQRnlFSXowU0NHdWJhM0NuVExOZEV1WndzYXVBZUhreDJ2VVRuUmdKUFZnTmVldVhtc1ZHNzZTeTJnZ0pIdWFsczBIajhVMlhkYTBxTzFSdUZmb0NXZnNzOXduNkhHUndQUGtoU0IvOG9OZ3VBcW1SVkdLa2Q4Wnd0M0l2clRkOWZrMC9yRkZESktHejdXeU5Ia1lnVW1OaUdjSXREMTJ2MGp4N0ZaNTJFSnpsM0F2MVJ5SlVRSzE4KzhFWVBoM1NHaVU5ZHQ3VlgwYUYwdW82Sm91S2hPZWxkVXZNUCtBdWdRejhmVWNsd1RRc2Jib1ZnMjdZeG8wRHlBVFZ3VGhXNWE1NlI2UWY1WmlRSmx1RnV6czV5OThycTBTNXEwNDZsRTZvM3ZWbUpwRWR3amVTQ0pvRVQ1Q0w0blRna1h5V3ZobTRlQjh1L2U2NmwzbzBxYmFTeDhxOVlZbVQ5RXBSY2w1VFA0VGhMQktFVFlkelZ2ZzRleGpRZmVrdE1hdGs1RXlVcEVJaFpQWGg1dlhwSlplc2RmTzlMSjh6VGFIQnNCakRQVTdjZE5nUU1iZWJwYXRhUmk4QTBlbDIvSUpYbCtFK29sZ0F6NXpDNGkyTzFRPT1cIn0nLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICc2NDI0YzM1M2VhZjc4ZDAwMDc2NmU5NTEwYjEyNWZiYScsXG4gICAgICAgICAgc291cmNlOiAnYml0Z28nLFxuICAgICAgICAgIHR5cGU6ICd0c3MnLFxuICAgICAgICAgIGNvbW1vbktleWNoYWluOlxuICAgICAgICAgICAgJzE5YmRmZTJhNGI0OThhMDU1MTEzODEyMzVhODg5MmQ1NDI2NzgwN2M0YTNmNjU0ZTMxMGI5MzhiOGI0MjRmZjRhZGVkYmU5MmY0YzE0NmRlNjQxYzY3NTA4YTk2MTMyNGM4NTA0Y2RmOGUwYzBhY2JiNjhkNjEwNGNjY2NkNzgxJyxcbiAgICAgICAgICB2ZXJpZmllZFZzc1Byb29mOiB0cnVlLFxuICAgICAgICAgIGlzQml0R286IHRydWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIHZhbGlkYXRpbmcgYSB3ZWxsIGZvcm1hdHRlZCBhZGRyZXNzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYWRkcmVzcyA9ICdVUUIwSHl0MWJUUmZJMFdLX1VMWnlLdnJ2UDBQUHRwVFFGaV9qS1hWWFg2S0ZPTWknO1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZEFkZHJlc3MoYWRkcmVzcykuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiB2YWxpZGF0aW5nIGFuIGluY29ycmVjdGx5IGZvcm1hdHRlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSAnd3JvbmdhZGRyZXNzJztcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gdmFsaWRhdGluZyBhIG5vbi1ib3VuY2VhYmxlIGFkZHJlc3MgZm9ybWF0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYWRkcmVzcyA9ICdVUUEwaTgtQ2RHbkZfRGhVSEhmOTJSMU9OSDZzSUE5dkxaX1dMY0NJaGZCQlgxYUQnO1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZEFkZHJlc3MoYWRkcmVzcykuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIHZhbGlkYXRpbmcgYWRkcmVzc2VzIHdpdGggbWVtb0lkcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3MxID0gJ0VRQjBIeXQxYlRSZkkwV0tfVUxaeUt2cnZQMFBQdHBUUUZpX2pLWFZYWDZLRkw3bj9tZW1vSWQ9MTIzJztcbiAgICAgIGNvbnN0IGFkZHJlc3MyID0gJ1VRQjBIeXQxYlRSZkkwV0tfVUxaeUt2cnZQMFBQdHBUUUZpX2pLWFZYWDZLRk9NaT9tZW1vSWQ9MTIzJztcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MxKS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgICBiYXNlY29pbi5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzMikuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSBmb3IgaXNXYWxsZXRBZGRyZXNzIHdpdGggdmFsaWQgYWRkcmVzcyBmb3IgaW5kZXggNCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG5ld0FkZHJlc3MgPSAnRVFCMEh5dDFiVFJmSTBXS19VTFp5S3ZydlAwUFB0cFRRRmlfaktYVlhYNktGTDduJztcbiAgICAgIGNvbnN0IGluZGV4ID0gNDtcblxuICAgICAgY29uc3QgcGFyYW1zID0geyBjb21tb25LZXljaGFpbiwgYWRkcmVzczogbmV3QWRkcmVzcywgaW5kZXgsIGtleWNoYWlucyB9O1xuICAgICAgKGF3YWl0IGJhc2Vjb2luLmlzV2FsbGV0QWRkcmVzcyhwYXJhbXMpKS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIGZvciBpc1dhbGxldEFkZHJlc3Mgd2l0aCB2YWxpZCBhZGRyZXNzYW5kIGluZGV4JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgbmV3QWRkcmVzcyA9ICdFUUIwSHl0MWJUUmZJMFdLX1VMWnlLdnJ2UDBQUHRwVFFGaV9qS1hWWFg2S0ZMN24/bWVtb0lkPTQnO1xuICAgICAgY29uc3QgaW5kZXggPSA0O1xuXG4gICAgICBjb25zdCBwYXJhbXMgPSB7IGNvbW1vbktleWNoYWluLCBhZGRyZXNzOiBuZXdBZGRyZXNzLCBpbmRleCwga2V5Y2hhaW5zIH07XG4gICAgICAoYXdhaXQgYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHBhcmFtcykpLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIGZvciBpc1dhbGxldEFkZHJlc3Mgd2l0aCB2YWxpZCBhZGRyZXNzIGZvciBpbmRleCA1IGFuZCBhZGRyZXNzIGlzIGZvciBhIGRpZmZlcmVudCBpbmRleCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHdyb25nQWRkcmVzc0ZvckluZGV4NSA9ICdFUUIwSHl0MWJUUmZJMFdLX1VMWnlLdnJ2UDBQUHRwVFFGaV9qS1hWWFg2S0ZMN24nO1xuICAgICAgY29uc3QgaW5kZXggPSA1O1xuXG4gICAgICBjb25zdCBwYXJhbXMgPSB7IGNvbW1vbktleWNoYWluLCBhZGRyZXNzOiB3cm9uZ0FkZHJlc3NGb3JJbmRleDUsIGluZGV4LCBrZXljaGFpbnMgfTtcbiAgICAgIChhd2FpdCBiYXNlY29pbi5pc1dhbGxldEFkZHJlc3MocGFyYW1zKSkuc2hvdWxkLmVxdWFsKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3IgZm9yIGlzV2FsbGV0QWRkcmVzcyB3aGVuIGtleWNoYWlucyBpcyBtaXNzaW5nJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYWRkcmVzcyA9ICdFUUIwSHl0MWJUUmZJMFdLX1VMWnlLdnJ2UDBQUHRwVFFGaV9qS1hWWFg2S0ZMN24nO1xuICAgICAgY29uc3QgaW5kZXggPSAwO1xuXG4gICAgICBjb25zdCBwYXJhbXMgPSB7IGNvbW1vbktleWNoYWluLCBhZGRyZXNzLCBpbmRleCB9O1xuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoYXN5bmMgKCkgPT4gYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHBhcmFtcykpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBmb3IgaXNXYWxsZXRBZGRyZXNzIHdoZW4gbmV3IGFkZHJlc3MgaXMgaW52YWxpZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHdyb25nQWRkcmVzcyA9ICdiYWRBZGRyZXNzJztcbiAgICAgIGNvbnN0IGluZGV4ID0gMDtcblxuICAgICAgY29uc3QgcGFyYW1zID0geyBjb21tb25LZXljaGFpbiwgYWRkcmVzczogd3JvbmdBZGRyZXNzLCBpbmRleCB9O1xuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoYXN5bmMgKCkgPT4gYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHBhcmFtcyksIHtcbiAgICAgICAgbWVzc2FnZTogYGludmFsaWQgYWRkcmVzczogJHt3cm9uZ0FkZHJlc3N9YCxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndXRpbCBjbGFzcyAnLCAoKSA9PiB7XG4gICAgbGV0IGNvbW1vbktleWNoYWluO1xuICAgIGxldCBkZXJpdmVkUHVibGljS2V5O1xuICAgIGJlZm9yZShhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb21tb25LZXljaGFpbiA9XG4gICAgICAgICcxOWJkZmUyYTRiNDk4YTA1NTExMzgxMjM1YTg4OTJkNTQyNjc4MDdjNGEzZjY1NGUzMTBiOTM4YjhiNDI0ZmY0YWRlZGJlOTJmNGMxNDZkZTY0MWM2NzUwOGE5NjEzMjRjODUwNGNkZjhlMGMwYWNiYjY4ZDYxMDRjY2NjZDc4MSc7XG4gICAgICBjb25zdCBNUEMgPSBhd2FpdCBFRERTQU1ldGhvZHMuZ2V0SW5pdGlhbGl6ZWRNcGNJbnN0YW5jZSgpO1xuICAgICAgZGVyaXZlZFB1YmxpY0tleSA9IE1QQy5kZXJpdmVVbmhhcmRlbmVkKGNvbW1vbktleWNoYWluLCAnbS8nICsgMCkuc2xpY2UoMCwgNjQpO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2dldEFkZHJlc3NGcm9tUHVibGljS2V5JywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ3Nob3VsZCBkZXJpdmUgYm91bmNlYWJsZSBhZGRyZXNzIGJ5IGRlZmF1bHQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIChhd2FpdCB1dGlscy5nZXRBZGRyZXNzRnJvbVB1YmxpY0tleShkZXJpdmVkUHVibGljS2V5KSkuc2hvdWxkLmVxdWFsKFxuICAgICAgICAgICdFUURWZXlVSk94M0FuWkdXTHRFMGwtVnh2N2M3dVRuRDhPWHRDRmhhTy1udmF2UTUnXG4gICAgICAgICk7XG4gICAgICAgIChhd2FpdCB1dGlscy5nZXRBZGRyZXNzRnJvbVB1YmxpY0tleShkZXJpdmVkUHVibGljS2V5LCB0cnVlKSkuc2hvdWxkLmVxdWFsKFxuICAgICAgICAgICdFUURWZXlVSk94M0FuWkdXTHRFMGwtVnh2N2M3dVRuRDhPWHRDRmhhTy1udmF2UTUnXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBkZXJpdmUgbm9uLWJvdW5jZWFibGUgYWRkcmVzcyB3aGVuIHJlcXVlc3RlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgKGF3YWl0IHV0aWxzLmdldEFkZHJlc3NGcm9tUHVibGljS2V5KGRlcml2ZWRQdWJsaWNLZXksIGZhbHNlKSkuc2hvdWxkLmVxdWFsKFxuICAgICAgICAgICdVUURWZXlVSk94M0FuWkdXTHRFMGwtVnh2N2M3dVRuRDhPWHRDRmhhTy1udmFxbjgnXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBkZXJpdmUgcmF3IGFkZHJlc3Mgd2hlbiByZXF1ZXN0ZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIChhd2FpdCB1dGlscy5nZXRBZGRyZXNzRnJvbVB1YmxpY0tleShkZXJpdmVkUHVibGljS2V5LCBmYWxzZSwgZmFsc2UpKS5zaG91bGQuZXF1YWwoXG4gICAgICAgICAgJzA6ZDU3YjI1MDkzYjFkYzA5ZDkxOTYyZWQxMzQ5N2U1NzFiZmI3M2JiOTM5YzNmMGU1ZWQwODU4NWEzYmU5ZWY2YSdcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGdldCB2YWxpZCB2ZXN0aW5nIGNvbnRyYWN0IGFkZHJlc3MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHZlc3RpbmdQYXJhbXMgPSB7XG4gICAgICAgICAgc3ViV2FsbGV0SWQ6IDY5ODk4MzE5MSxcbiAgICAgICAgICBwdWJsaWNLZXlIZXg6ICc3MTAxMzM5NDg2Mjk5NWNmYjUyN2RlYTljYWRjYzg0ZDY2ZDExOTdkMmE0NDU0NTc5YjkzYTA4MjIzZTRiMzA5JyxcbiAgICAgICAgICB2ZXN0aW5nU3RhcnRUaW1lOiAxNzYwOTk5MTY0LFxuICAgICAgICAgIHZlc3RpbmdUb3RhbER1cmF0aW9uOiA2MCAqIDYwICogMjQgKiAzMCxcbiAgICAgICAgICB1bmxvY2tQZXJpb2Q6IDYwICogNjAgKiAyNCxcbiAgICAgICAgICBjbGlmZkR1cmF0aW9uOiA2MCAqIDYwLFxuICAgICAgICAgIHZlc3RpbmdUb3RhbEFtb3VudDogQmlnSW50KCc0MDAwMDAwMDAnKSxcbiAgICAgICAgICB2ZXN0aW5nU2VuZGVyQWRkcmVzczogJzBRRE9FeXpDNktYaVZoMlJjbzJiYXBIOTZWbjZsYjlZV3hna1RWV3RxLTlDWEZ0cCcsXG4gICAgICAgICAgb3duZXJBZGRyZXNzOiAnMFFEQnJPZ2pRVGhiTjdlV0JIRXJSaHJKUUgzQXBlY0dEdHUzSzExTHVqam14NDlaJyxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgdmVzdGluZ0NvbnRyYWN0QWRkcmVzcyA9IGF3YWl0IHV0aWxzLmdldFZlc3RpbmdDb250cmFjdEFkZHJlc3ModmVzdGluZ1BhcmFtcyk7XG4gICAgICAgIHZlc3RpbmdDb250cmFjdEFkZHJlc3Muc2hvdWxkLmVxdWFsKCdFUUFqbWdNYndVM1dWS19wbjJnajFYQkdfTk12cmtvVDRlYXJ2c19DOVE2ZnMtU0UnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2dldEFkZHJlc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgnc2hvdWxkIHJldHVybiBhZGRyZXNzIGFzIHBlciBib3VuY2VhYmxlIGZsYWcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNob3VsZC5lcXVhbChcbiAgICAgICAgICB1dGlscy5nZXRBZGRyZXNzKCdVUUIwSHl0MWJUUmZJMFdLX1VMWnlLdnJ2UDBQUHRwVFFGaV9qS1hWWFg2S0ZPTWknLCBmYWxzZSksXG4gICAgICAgICAgJ1VRQjBIeXQxYlRSZkkwV0tfVUxaeUt2cnZQMFBQdHBUUUZpX2pLWFZYWDZLRk9NaSdcbiAgICAgICAgKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKFxuICAgICAgICAgIHV0aWxzLmdldEFkZHJlc3MoJ1VRQjBIeXQxYlRSZkkwV0tfVUxaeUt2cnZQMFBQdHBUUUZpX2pLWFZYWDZLRk9NaScsIHRydWUpLFxuICAgICAgICAgICdFUUIwSHl0MWJUUmZJMFdLX1VMWnlLdnJ2UDBQUHRwVFFGaV9qS1hWWFg2S0ZMN24nXG4gICAgICAgICk7XG4gICAgICAgIHNob3VsZC5lcXVhbChcbiAgICAgICAgICB1dGlscy5nZXRBZGRyZXNzKCdFUUIwSHl0MWJUUmZJMFdLX1VMWnlLdnJ2UDBQUHRwVFFGaV9qS1hWWFg2S0ZMN24nLCB0cnVlKSxcbiAgICAgICAgICAnRVFCMEh5dDFiVFJmSTBXS19VTFp5S3ZydlAwUFB0cFRRRmlfaktYVlhYNktGTDduJ1xuICAgICAgICApO1xuICAgICAgICBzaG91bGQuZXF1YWwoXG4gICAgICAgICAgdXRpbHMuZ2V0QWRkcmVzcygnRVFCMEh5dDFiVFJmSTBXS19VTFp5S3ZydlAwUFB0cFRRRmlfaktYVlhYNktGTDduJywgZmFsc2UpLFxuICAgICAgICAgICdVUUIwSHl0MWJUUmZJMFdLX1VMWnlLdnJ2UDBQUHRwVFFGaV9qS1hWWFg2S0ZPTWknXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgYmxvY2sgaGFzaCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNob3VsZC5lcXVhbCh1dGlscy5pc1ZhbGlkQmxvY2tJZCgnTVB1T3ZIZHUveit0Mmw4MllwWnRpSlFrOCtGVkttV3VLeGQ2dWJuMDlmST0nKSwgdHJ1ZSk7XG4gICAgICBzaG91bGQuZXF1YWwodXRpbHMuaXNWYWxpZEJsb2NrSWQoJ01QdU92SGR1L3ordDJsODJZcFp0aUpRazgrRlZLbVd1S3hkJyksIGZhbHNlKTtcbiAgICAgIHNob3VsZC5lcXVhbCh1dGlscy5pc1ZhbGlkQmxvY2tJZCgnJyksIGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgdHJhbnNhY3Rpb24gaWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBzaG91bGQuZXF1YWwodXRpbHMuaXNWYWxpZFRyYW5zYWN0aW9uSWQoJ3dsVGRET0FYd0pwOEVTUmZRQUVKUUluMFRjaV9TNW9MYlZLQll4RHR2cGs9JyksIHRydWUpO1xuICAgICAgc2hvdWxkLmVxdWFsKHV0aWxzLmlzVmFsaWRUcmFuc2FjdGlvbklkKCczc3lreDZSdWp5N1V0QndIUS9YNWtMZ3ZLRTBTS0xBK0FCaUNLaTdzWDhvPScpLCB0cnVlKTsgLy8gTm8gdXJsIGZyaWVuZGx5IHR4aWRcbiAgICAgIHNob3VsZC5lcXVhbCh1dGlscy5pc1ZhbGlkVHJhbnNhY3Rpb25JZCgnM3N5a3g2UnVqeTdVdEJ3SFFfWDVrTGd2S0UwU0tMQS1BQmlDS2k3c1g4bz0nKSwgdHJ1ZSk7IC8vIFVybCBmcmllbmRseSB0eGlkXG4gICAgICBzaG91bGQuZXF1YWwodXRpbHMuaXNWYWxpZFRyYW5zYWN0aW9uSWQoJ3dsVGRET0FYd0pwOEVTUmZRQUVKUUluMFRjaV9TNW9MYj0nKSwgZmFsc2UpO1xuICAgICAgc2hvdWxkLmVxdWFsKHV0aWxzLmlzVmFsaWRUcmFuc2FjdGlvbklkKCd3bFRkRE9BWHdKcDhFU1JmUUFFSlFJbjBUY2lfUzVvTGJWS0JZeER0YWZkc2FzZGFkc2Z2cGs9JyksIGZhbHNlKTtcbiAgICAgIHNob3VsZC5lcXVhbCh1dGlscy5pc1ZhbGlkVHJhbnNhY3Rpb25JZCgnJyksIGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUgdHJhbnNhY3Rpb24gaWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBpZCA9IGF3YWl0IHV0aWxzLmdldE1lc3NhZ2VIYXNoRnJvbURhdGEoXG4gICAgICAgICd0ZTZjY2tFQ0NnRUFBa29BQTdWMms0Vncxbmh4cjdYY0NCaldjRkZIS3FHd0NnbFBTUnVZQWtXaldpVFZBSUFBQVBiTGd2YTBHN3l0S3cveGVFOWEzRkhLMlJNOGZnT3BHdlRwUVJzZWVNZXIzZWZSS3NpUUFBRHhQaG5hUUZaV1lybFFBRFJxYkNVSUFRSURBZ0hnQkFVQWduSUFaMFVJd21rbmtNYVc3UWJvVGNxNDhGZloxTlQ1b01VajJWUE9CcjN6UG94cmlhYjRTZlY2NWk2SGQxSjJzRnN1VGNJV1VvYmNLWE1jSXlzK0pXa25BaE1Nd1N2V0JobVR6d1JBQ0FrQjRZZ0EwbkN1R3M4T05mYTdnUU1hemdvbzVWUTJBVUVwNlNOekFFaTBhMFNhb0JBSEhnblBKQlFRSi9tZW9Dd3pLNS9QYWpCU3h1SksyR2t2YTdObWxBTE5EczJJTUVXaTRaUmZJVjRWZUpwS0JoemhLak5sRmp1ejYwZythZVQ1Y05pNENVMU5HTHNyZXkvNEFBQUFHQUFjQmdFQjN3Y0FhR0lBSzJjWWRZQ3R4dEJhV0o5aGk3TitIVnplTXNQUXhMSFNxWW43YmZwT2NSeWgzTlpRQUFBQUFBQUFBQUFBQUFBQUFBQUFzV2dBMG5DdUdzOE9OZmE3Z1FNYXpnb281VlEyQVVFcDZTTnpBRWkwYTBTYW9CRUFGYk9NT3NCVzQyZ3RMRSt3eGRtL0RxNXZHV0hvWWxqcFZNVDl0djBuT0k1UTdtc29BQVlVV0dBQUFCN1pjRjdXaE1yTVZ5cEFBSjFCbllNVGlBQUFBQUFBQUFBQUVRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBRy9KaDZFZ1RCUllRQUFBQUFBQUFnQUFBQUFBQTRFNTJBUC9lQVluVmhKa29JSTRZVXJocExmcERGdDZtUktpa3RiRm5xcytRRkFXREFBYWNRMD1cXFxcJ1xuICAgICAgKTtcbiAgICAgIHNob3VsZC5lcXVhbChpZCwgJ1RzVmdOS1QwNWNkZTRRNTRzQytSRkM3blRvVHJIazlwcEdnRTVNMGpYdEU9Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGRlc2VyaWFsaXplIGEgY2VsbCB0byBnZXQgdGhlIGFkZHJlc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkYXRhMSA9ICd0ZTZjY2tFQkFRRUFKQUFBUTRBYUZVVGdVUS9rMmkrRGRBb29pYjB3TlZSRVpRMnorOFI5V1F2dkZOcFVKQkFSeUFnSyc7XG4gICAgICBjb25zdCByYXdBZGRyZXNzMSA9ICcwOmQwYWEyNzAyODg3ZjI2ZDE3YzFiYTA1MTQ0NGRlOTgxYWFhMjIzMjg2ZDlmZGUyM2VhYzg1Zjc4YTZkMmExMjAnO1xuICAgICAgc2hvdWxkLmVxdWFsKHV0aWxzLmdldFJhd1dhbGxldEFkZHJlc3NGcm9tQ2VsbChkYXRhMSksIHJhd0FkZHJlc3MxKTtcblxuICAgICAgY29uc3QgZGF0YTIgPSAndGU2Y2NrRUJBUUVBSkFBQVE1Lzc1dzAzNHFQOVQwWlhZM211TTVvdXZGbE5vTlBreTJZVXMrSGN4ZDhvdGpEa0lPUHEnO1xuICAgICAgY29uc3QgcmF3QWRkcmVzczIgPSAnLTE6ZGYzODY5YmYxNTFmZWE3YTMyYmIxYmNkNzE5Y2QxNzVlMmNhNmQwNjlmMjY1YjMwYTU5ZjBlZTYyZWY5NDViMSc7XG4gICAgICBzaG91bGQuZXF1YWwodXRpbHMuZ2V0UmF3V2FsbGV0QWRkcmVzc0Zyb21DZWxsKGRhdGEyKSwgcmF3QWRkcmVzczIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZ2V0QWRkcmVzc0JvYycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgY29ycmVjdCBCT0MgZm9yIGEgZnJpZW5kbHkgYWRkcmVzcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHV0aWxzLmdldEFkZHJlc3NCb2ModGVzdERhdGEuZ2V0TWVtYmVyU3RhY2tGaXh0dXJlLmZyaWVuZGx5QWRkcmVzcyk7XG4gICAgICByZXN1bHQuc2hvdWxkLmVxdWFsKHRlc3REYXRhLmdldE1lbWJlclN0YWNrRml4dHVyZS5ib2MpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIGNvcnJlY3QgQk9DIGZvciBhIHJhdyBhZGRyZXNzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdXRpbHMuZ2V0QWRkcmVzc0JvYyh0ZXN0RGF0YS5nZXRNZW1iZXJTdGFja0ZpeHR1cmUucmF3QWRkcmVzcyk7XG4gICAgICByZXN1bHQuc2hvdWxkLmVxdWFsKHRlc3REYXRhLmdldE1lbWJlclN0YWNrRml4dHVyZS5ib2MpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnVG9uIHJlY292ZXIgLSBOb24tQml0R28gYW5kIFVuc2lnbmVkIFN3ZWVwIFRyYW5zYWN0aW9ucycsIGZ1bmN0aW9uICgpIHtcbiAgICBsZXQgc2FuZGJveDogc2lub24uU2lub25TYW5kYm94O1xuICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgc2FuZGJveCA9IHNpbm9uLmNyZWF0ZVNhbmRib3goKTsgLy8gQ3JlYXRlIGEgbmV3IHNhbmRib3ggZm9yIGVhY2ggdGVzdFxuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICAgIHNhbmRib3gucmVzdG9yZSgpOyAvLyBSZXN0b3JlIGFsbCBzdHVicyBhZnRlciBlYWNoIHRlc3RcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc3VjY2Vzc2Z1bGx5IHJlY292ZXIgZnVuZHMgZm9yIG5vbi1CaXRHbyByZWNvdmVyeScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIERlZmluZSByZWNvdmVyeSBwYXJhbWV0ZXJzXG4gICAgICBjb25zdCByZWNvdmVyeVBhcmFtcyA9IHtcbiAgICAgICAgYml0Z29LZXk6XG4gICAgICAgICAgJzFiYWFmYTBkNjIxNzRiZjBjNzhmMzI1NjMxODYxM2ZmYzQ0YjZkZDU0YWIxYTYzYzIxODUyMzJmOTJlZGU5ZGFlMWIyODE4ZGJlYjUyYTgyMTVmZDU2ZjVhNWYyYTlmOTRjMDc5Y2U4OWU0ZGMzYjFjZTZlZDZlODRjZTcxODU3JyxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogJ1VRQkwyaWRDWFI0QVRkUXRhTmE0VnBvZmNwU3h1eElnSEg3X3NsT1pmZE9YU2FkSicsXG4gICAgICAgIGFwaUtleTogJ2RiMjU1NDY0MWM2MWU2MGE5NzljYzZjMDA1M2YyZWM5MWRhOWIxM2U3MWQyODc3NjhjOTNjMmZiNTU2YmU1M2InLFxuICAgICAgICB1c2VyS2V5OlxuICAgICAgICAgICcxYmFhZmEwZDYyMTc0YmYwYzc4ZjMyNTYzMTg2MTNmZmM0NGI2ZGQ1NGFiMWE2M2MyMTg1MjMyZjkyZWRlOWRhZTFiMjgxOGRiZWI1MmE4MjE1ZmQ1NmY1YTVmMmE5Zjk0YzA3OWNlODllNGRjM2IxY2U2ZWQ2ZTg0Y2U3MTg1NycsXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2U6ICdkdW1teVBhc3NwaHJhc2UnLFxuICAgICAgfTtcblxuICAgICAgLy8gTW9jayB0aGUgZXhwZWN0ZWQgcmVzdWx0IGZvciBub24tQml0R28gcmVjb3ZlcnlcbiAgICAgIGNvbnN0IG1vY2tSZXN1bHQgPSB7XG4gICAgICAgIHNlcmlhbGl6ZWRUeDpcbiAgICAgICAgICAndGU2Y2NrRUJBZ0VBcWdBQjRZZ0FsN1JPaExvOEFKdW9XdEd0Y0swMFB1VXBZM1lrUURqOS8yU25NdnVuTHBJRmJsODk2d2xNdjdmc1VPYytzTUh6RWw4cTN2WDVibTZub0hnaW5QSktCUnpuT3JPN3ZlSXBISUVwaVJMYkg3L2VOZHBTc1JodkwyNjBKUC9mRDB2QUlVMU5HTHRBQkRxQUFBQUFDQUFjQVFCb1FnQi9PZWlOZExlYUw3K08wNFh1dWp1Q2hTR3JSZDdabkZsMmZDZDlGWGR6QXlET0pZQ3dBQUFBQUFBQUFBQUFBQUFBQUZ3WEd0OD0nLFxuICAgICAgICBzY2FuSW5kZXg6IDAsXG4gICAgICAgIGNvaW46ICd0dG9uJyxcbiAgICAgIH07XG5cbiAgICAgIC8vIFN0dWIgdGhlIHJlY292ZXIgZnVuY3Rpb24gdG8gcmV0dXJuIHRoZSBtb2NrZWQgcmVzdWx0XG4gICAgICBjb25zdCBzYW5kYm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuICAgICAgc2FuZGJveC5zdHViKGJhc2Vjb2luLCAncmVjb3ZlcicpLnJlc29sdmVzKG1vY2tSZXN1bHQpO1xuXG4gICAgICAvLyBDYWxsIHRoZSByZWNvdmVyIGZ1bmN0aW9uXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHJlY292ZXJ5UGFyYW1zKTtcblxuICAgICAgLy8gVmFsaWRhdGUgdGhlIHJlc3VsdFxuICAgICAgcmVzdWx0LnNlcmlhbGl6ZWRUeC5zaG91bGQuZXF1YWwoXG4gICAgICAgICd0ZTZjY2tFQkFnRUFxZ0FCNFlnQWw3Uk9oTG84QUp1b1d0R3RjSzAwUHVVcFkzWWtRRGo5LzJTbk12dW5McElGYmw4OTZ3bE12N2ZzVU9jK3NNSHpFbDhxM3ZYNWJtNm5vSGdpblBKS0JSem5Pck83dmVJcEhJRXBpUkxiSDcvZU5kcFNzUmh2TDI2MEpQL2ZEMHZBSVUxTkdMdEFCRHFBQUFBQUNBQWNBUUJvUWdCL09laU5kTGVhTDcrTzA0WHV1anVDaFNHclJkN1puRmwyZkNkOUZYZHpBeURPSllDd0FBQUFBQUFBQUFBQUFBQUFBRndYR3Q4PSdcbiAgICAgICk7XG4gICAgICByZXN1bHQuc2NhbkluZGV4LnNob3VsZC5lcXVhbCgwKTtcbiAgICAgIHJlc3VsdC5jb2luLnNob3VsZC5lcXVhbCgndHRvbicpO1xuICAgICAgc2FuZGJveC5yZXN0b3JlKCk7IC8vIFJlc3RvcmUgdGhlIHN0dWJiZWQgbWV0aG9kXG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHN1Y2Nlc3NmdWxseSByZWNvdmVyIGZ1bmRzIHVzaW5nIHNlbmRlckpldHRvbkFkZHJlc3MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZWNvdmVyeVBhcmFtcyA9IHtcbiAgICAgICAgYml0Z29LZXk6XG4gICAgICAgICAgJ2UzMWIxNTgwNDAwZGQ0Zjk2ZThjNjI4MWNmYjgzZTI4YWEyNWZjZjhmYjgzMTk5NmE0MDE3NmEzZTMwODc4YzgwZjM2NmZmNjQ2MzU2N2RiZWI3YWE3ZmFlZWI5ZjBmNmQxZmMwYTA5MWVjOTkxOGU4MWFkMmMzNGMzNDVmNGQwJyxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogJ1VRQkwyaWRDWFI0QVRkUXRhTmE0VnBvZmNwU3h1eElnSEg3X3NsT1pmZE9YU2FkSicsXG4gICAgICAgIGFwaUtleTogJ2RiMjU1NDY0MWM2MWU2MGE5NzljYzZjMDA1M2YyZWM5MWRhOWIxM2U3MWQyODc3NjhjOTNjMmZiNTU2YmU1M2InLFxuICAgICAgICB1c2VyS2V5OlxuICAgICAgICAgICd7XCJpdlwiOlwiLzlDYTE4MG9td0VZS2lNZ1VKOTBKUT09XCIsXCJ2XCI6MSxcIml0ZXJcIjoxMDAwMCxcImtzXCI6MjU2LFwidHNcIjo2NCxcIm1vZGVcIjpcImNjbVwiLFwiYWRhdGFcIjpcIlwiLFwiY2lwaGVyXCI6XCJhZXNcIixcInNhbHRcIjpcImlwUEZxZzZxSEhZPVwiLFwiY3RcIjpcImVGNlpzdHZxb2JMV0IvVWZqcG1zT2N6NStiZ3ZrTWhxK1poK2Y2VERJYSsrSmtQWVJxNmhyMkxoYmlkQkJDTllIQ2dhaGkzbmQvRmRzRkxRMVVrYU45dDQwbUhiVWRsU1RBNDJUaEg1Rkk5VW0xYUFDbTk2MUV1NWIwTXA3bzZVM3p1VmxhRmF5NlQrL25VV2xPS2p2Ky81TVl3ZnhBL0V6TWQ2eURpZTdxQUlyeUxDUEVJdlJ1dXNIdXB6Y0pXZk4yV0dreHc0RWhHc1NRdnM2MitQQk9DSlVlT0NUaHYySHBzc0pWOWdiNm1qNGxZVlRxdEVheTdHNlZGTmIrVDZPSURVOUhOcmR4Vis1RDF6elY1c0hOV3FEZ2hGMDN3OWFkd3hnVENQU2VaeXdaUERnQnJNL05xSEl0KzhDUGQ4NHdnZXk2MU16NThicjA4emwyaWtrc0RGNVBCOERKekVlbnM2QWJZMGdvc3F6QVBUdU9teTdJUzl2UDlsZkNTYUhEb1M2NmhEL0kweWgxYzZ0aDRnUTFkeml3eCtobkJLTmdxcGVrSno2UDBpc25CM3VyaFpJbnBjMFJ6S2g2UjJqcngraEtOci8yZG9rM2RJd2diWFdHcTdOQW0xbVNSRUVzL0NoVlZlVU1tZVU5VUZtd2hPVGJSSzhDTFlIcUFxeWRSTENleE5tV2hUT1BLeTNXcVM4eUc2V2tIcVNHYjlGR0x5QlJjbVFGSUJwaWhWOFhsNFcyZEI2QVg3SHNJMEYyZFlBQlgwZHJMaXVqMk43bU5yYVJHenhzNWpUMGx6d2pYbXk1Z215YXIyM0RxYTJlQlZPeUdkSzNETDhqWXZnWDBtSjU4L3BLa29ncnh6TXJQa0pvMmErZ1A0T1I3Y0RjTDZUeHJjd25WaVlPT0dQOU9hUVpmY0tLYUFobUpaSkd3enlXemp2eUVJTGtDa3NFU3V5K2M1M3RkTEFrdTUxajJLaVYzMlJnMHRETzNVTmp6ZTBxVGozdCtZZm1UTjFHdWlOanhGeDhkTmJYMnl4ell4QitNemVzdU5aQU11bndWSHJxSnBBaW96UnFwRTc5UjdLUkx3N3FoQmhtNVVlejYwRkJ0bUFmMGtRc0dkaUlsRXdDeVRjQll5QURsWkUrb2pEOCt4MnVpSkJCSXpkMHM3bjlaWTNhQ1l1VFZFWUdmSTlFTUdzOVd6WGNHZVR1Mnh3Mk91YlZIWWt2YUJic3dsckppaElxUkgrY2UvOSt3RGVkY2pic2JvMk1PRHNDSjNzSzlLTDZKak1XUHZoU3dSNmNNYnpEaldyRm1SeXVla21mU1RIdWhRRWRCQUsxMU40My9ab1lZREJNd0J3eGpNd3dBNGhMdUJxamVoWVEyTjBONG82ZnBiR1NBMStnMElKcWtRdmgycW44dGVZU2o2N20xdkdsRUp1ODUyVWpKWjR0ZHQ5clNqUTVUYzIzWUsrWEQya0tyWGJCN3dwcnJhYTlQUWpucnJJVDI1eVgrbDVnN1cwRWNHVGxBY3Y1LzVGQzZmNis3UjhLNVdsTEdycDNZTS8rNTcwZ0JTMnFiSWhsMkp6ZndnVHFqZnloNVpcIn0nLFxuICAgICAgICBiYWNrdXBLZXk6XG4gICAgICAgICAgJ3tcIml2XCI6XCJOWTY1Zm1lMnNNZVlkdTc3U1cvYUx3PT1cIixcInZcIjoxLFwiaXRlclwiOjEwMDAwLFwia3NcIjoyNTYsXCJ0c1wiOjY0LFwibW9kZVwiOlwiY2NtXCIsXCJhZGF0YVwiOlwiXCIsXCJjaXBoZXJcIjpcImFlc1wiLFwic2FsdFwiOlwiMVNFcm1vZm1WN3M9XCIsXCJjdFwiOlwiMjh6UUc3eEEyekZ6QUZ5TkpRZm5JUHZvdTEyUndWUHUzanV6bzJjSURhcmV5Zk1rSVhwMVFEYm82bVNCZnpsSmZPTGdZQW4waVFIOHVDZ25tWUNONENiSzJJZk91a01tUUhHYTRsSE1HVVhyTDFybk5Pc1Vaa2g4WU1jTU12cjdxb0NSamFLTFF2UlVXZXFHdDEvVENvUk9vSHdSODhjdFZoRUt3a2hwUW9JWTBUQmVMZHZsdUdWQjdwRkFUdEVLZ29seVFhaXpaOFlPRnZqUW45QUdoVmxPclJyalJ3ekhYcWl1N3lXOGd1TDZmMEI3WmN6dkZnTGRDVEZWTml5UVFkcjZGbzFNaTRHUy93UktiV2FrRXg3TGt0bDNrdmE4OEJYQVJlOCt1bmRUWjBIMk1ibXpNU3I1ekJZcGZoVlhUTy9heHR0a3RMMkFXcU15OGxSODVZN3RWcDMwN1ZVQThYTlkzbmVUYlR4dVNxbSt4cmxCL1IwbkdGRXZSZmlrR3NrNEtLSE9RNkhGbmVOUmRoai9rNmR4RTJWeUg5SXdRNmorTHhqbXMrcGcxeWI1NmlCbkdXTTFzVTBiZEthSkZUUlpHZGlGLy9sUWFLVVZQY0gyUmVOSnNSSmFVOGdvNWcxSEJ1T0hlTXFkbmxCN3VLMk1RS05QQ1JiM3kwWkZReDh5Z2lkT2FBRjZhaUpwejNMZXduWGhzdEQxeTlsWjB5WTlxWEltQjRsRkNyTXJtQm5IUGpFeW16bXJLK3BjaGQ0ZEJKSHRKaXF3bmd4cXBMNmwrYWE2OXhHZXlXRHNWbU1rbFpWUHdkUzVsKzVTVnlnUUdGNU0xczFJN1JmYlRXYjdXbEhGRkN2MEMxSi90cEtUM0J6aUdFZlA1VmowYXFlcWljZ21UUkZ3dmhSMUhpTm1HdkJBTkhNL1B2U3Y1K2N5Umo4RzdFSG1UZXVIZWdoTzJoOVp3b1piaWhuU215Yi9uY1NNOU1neHJTUjRYejdHMzNobmJ1amZIVjRJcEJHL3ZXVHBKVUtJMTFMZ3dyNzFVMmNWQ245V0ErVFk5Q1hzR2tmZU9RYmJYbmdvUHQ0cE9oaWtKS1FZZzlyT3ZnYVIraFpBT1NJdGs2cFdYb3pBREQ4c1NmczdSNituL3dsa0V2dVBJMWNmY2ltYkhMUTZvSDlrVGtEVS9MYk96bXRERGQ4TVlaVWJxdnB5RVM3YkZ1am13NnRjMVpJQkxEc1NXRDJyNHNpdjBLUGVWcjVXdW9KU1l3NlFSZHVBcnlPMU5EdzRTazFhbHlwZ09YeEphcGNYZ3F3aTF2OUhkUnpHMUEwSVVMRFp0eUVjSGpVQkZXM3ZZcUh4VmMvai96MmhuQUMvU2J0UmNDY1pLZ0RlclROTGJQdzNpVFFRZkxpdytMUGtlWmRPNFVVd3NJbWFQM3l3YjExMmllbGpXSm9VdHVZQVlDRW56NWs5c1AzUGZDRGRnU2I1QlJKWklhRGs3aTN2V05YVzF5ZExOZVh6UllwbXI0dnlNa0dFN2FnTC8rSTVTWmg1RVZLL0NZY0FYZ1kyTXAvVmZaV21lTWJGVlBYUzg5eExBd1duUVE9PVwifScsXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2U6ICdHaGdoamZidmRrbW4hMjM0JyxcbiAgICAgICAgc2VuZGVySmV0dG9uQWRkcmVzczogJ1VRQkwyaWRDWFI0QVRkUXRhTmE0VnBvZmNwU3h1eElnSEg3X3NsT1pmZE9YU2FkSicsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBtb2NrUHJvdmlkZXIgPSB7XG4gICAgICAgIGdldEJhbGFuY2U6IHNhbmRib3guc3R1YigpLnJlc29sdmVzKCcxMDAwMDAwMDAwJyksXG4gICAgICAgIGdldEVzdGltYXRlRmVlOiBzYW5kYm94LnN0dWIoKS5yZXNvbHZlcyh7XG4gICAgICAgICAgc291cmNlX2ZlZXM6IHtcbiAgICAgICAgICAgIGluX2Z3ZF9mZWU6IDEwMDAsXG4gICAgICAgICAgICBzdG9yYWdlX2ZlZTogMTAwMCxcbiAgICAgICAgICAgIGdhc19mZWU6IDEwMDAsXG4gICAgICAgICAgICBmd2RfZmVlOiAxMDAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgICBjYWxsOiBzYW5kYm94LnN0dWIoKS5jYWxsc0Zha2UoKGFkZHJlc3MsIG1ldGhvZCwgcGFyYW1zKSA9PiB7XG4gICAgICAgICAgaWYgKG1ldGhvZCA9PT0gJ2dldF93YWxsZXRfZGF0YScpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe1xuICAgICAgICAgICAgICBzdGFjazogW1xuICAgICAgICAgICAgICAgIFsnbnVtJywgJzUwMDAwMDAwMDAnXSxcbiAgICAgICAgICAgICAgICBbJ251bScsICcwJ10sXG4gICAgICAgICAgICAgICAgWydjZWxsJywgeyBieXRlczogJycgfV0sXG4gICAgICAgICAgICAgICAgWydjZWxsJywgeyBieXRlczogJycgfV0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7IHN0YWNrOiBbXSB9KTtcbiAgICAgICAgfSksXG4gICAgICAgIHNlbmQ6IHNhbmRib3guc3R1YigpLmNhbGxzRmFrZSgobWV0aG9kLCBwYXJhbXMpID0+IHtcbiAgICAgICAgICBpZiAobWV0aG9kID09PSAncnVuR2V0TWV0aG9kJykge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgICAgICAgIGdhc191c2VkOiAwLFxuICAgICAgICAgICAgICBzdGFjazogW1snbnVtJywgJzAnXV0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG1ldGhvZCA9PT0gJ3NlbmRCb2MnKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgb2s6IHRydWUgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xuICAgICAgICB9KSxcbiAgICAgIH07XG5cbiAgICAgIHNhbmRib3guc3R1YihUb253ZWIsICdIdHRwUHJvdmlkZXInKS5yZXR1cm5zKG1vY2tQcm92aWRlcik7XG5cbiAgICAgIGNvbnN0IGRlY3J5cHRTdHViID0gc2FuZGJveC5zdHViKGJpdGdvLCAnZGVjcnlwdEFzeW5jJyk7XG4gICAgICBkZWNyeXB0U3R1Yi5vbkZpcnN0Q2FsbCgpLnJlc29sdmVzKEpTT04uc3RyaW5naWZ5KHsgZHVtbXk6ICd1c2VyU2lnbmluZ01hdGVyaWFsJyB9KSk7XG4gICAgICBkZWNyeXB0U3R1Yi5vblNlY29uZENhbGwoKS5yZXNvbHZlcyhKU09OLnN0cmluZ2lmeSh7IGR1bW15OiAnYmFja3VwU2lnbmluZ01hdGVyaWFsJyB9KSk7XG5cbiAgICAgIHNhbmRib3hcbiAgICAgICAgLnN0dWIoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJylcbiAgICAgICAgLnJlc29sdmVzKFxuICAgICAgICAgIEJ1ZmZlci5mcm9tKFxuICAgICAgICAgICAgJzFiYWFmYTBkNjIxNzRiZjBjNzhmMzI1NjMxODYxM2ZmYzQ0YjZkZDU0YWIxYTYzYzIxODUyMzJmOTJlZGU5ZGEnICtcbiAgICAgICAgICAgICAgJ2UxYjI4MThkYmViNTJhODIxNWZkNTZmNWE1ZjJhOWY5NGMwNzljZTg5ZTRkYzNiMWNlNmVkNmU4NGNlNzE4NTcnLFxuICAgICAgICAgICAgJ2hleCdcbiAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXIocmVjb3ZlcnlQYXJhbXMpO1xuXG4gICAgICByZXN1bHQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpO1xuICAgICAgcmVzdWx0LnNob3VsZC5oYXZlLnByb3BlcnR5KCdzY2FuSW5kZXgnKTtcbiAgICAgIHJlc3VsdC5zY2FuSW5kZXguc2hvdWxkLmVxdWFsKDApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gdW5zaWduZWQgc3dlZXAgdHJhbnNhY3Rpb24gaWYgdXNlcktleSBhbmQgYmFja3VwS2V5IGFyZSBtaXNzaW5nJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gRGVmaW5lIHJlY292ZXJ5IHBhcmFtZXRlcnNcbiAgICAgIGNvbnN0IHJlY292ZXJ5UGFyYW1zID0ge1xuICAgICAgICBiaXRnb0tleTpcbiAgICAgICAgICAnMWJhYWZhMGQ2MjE3NGJmMGM3OGYzMjU2MzE4NjEzZmZjNDRiNmRkNTRhYjFhNjNjMjE4NTIzMmY5MmVkZTlkYWUxYjI4MThkYmViNTJhODIxNWZkNTZmNWE1ZjJhOWY5NGMwNzljZTg5ZTRkYzNiMWNlNmVkNmU4NGNlNzE4NTcnLFxuICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiAnVVFCTDJpZENYUjRBVGRRdGFOYTRWcG9mY3BTeHV4SWdISDdfc2xPWmZkT1hTYWRKJyxcbiAgICAgICAgYXBpS2V5OiAnZGIyNTU0NjQxYzYxZTYwYTk3OWNjNmMwMDUzZjJlYzkxZGE5YjEzZTcxZDI4Nzc2OGM5M2MyZmI1NTZiZTUzYicsXG4gICAgICB9O1xuXG4gICAgICAvLyBNb2NrIHRoZSBleHBlY3RlZCByZXN1bHQgZm9yIHVuc2lnbmVkIHN3ZWVwIHRyYW5zYWN0aW9uXG4gICAgICBjb25zdCBtb2NrVW5zaWduZWRUeCA9IHtcbiAgICAgICAgc2VyaWFsaXplZFR4OlxuICAgICAgICAgICd0ZTZjY2tFQkFnRUFxZ0FCNFlnQWw3Uk9oTG84QUp1b1d0R3RjSzAwUHVVcFkzWWtRRGo5LzJTbk12dW5McElGYmw4OTZ3bE12N2ZzVU9jK3NNSHpFbDhxM3ZYNWJtNm5vSGdpblBKS0JSem5Pck83dmVJcEhJRXBpUkxiSDcvZU5kcFNzUmh2TDI2MEpQL2ZEMHZBSVUxTkdMdEFCRHFBQUFBQUNBQWNBUUJvUWdCL09laU5kTGVhTDcrTzA0WHV1anVDaFNHclJkN1puRmwyZkNkOUZYZHpBeURPSllDd0FBQUFBQUFBQUFBQUFBQUFBRndYR3Q4PScsXG4gICAgICAgIHNjYW5JbmRleDogMCxcbiAgICAgICAgY29pbjogJ3R0b24nLFxuICAgICAgICBzaWduYWJsZUhleDogJ2RkOThlYjVhMzcwMGMwMjAzMjM3MDk1Y2ExYzBkNTI4OGJjMGQ2NTBhOWI1OWY3YjgxYmFjNTUyZjc2MTM3ZGYnLFxuICAgICAgICBkZXJpdmF0aW9uUGF0aDogJ20vMCcsXG4gICAgICAgIHBhcnNlZFR4OiB7XG4gICAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGFkZHJlc3M6ICdVUUJMMmlkQ1hSNEFUZFF0YU5hNFZwb2ZjcFN4dXhJZ0hIN19zbE9aZmRPWFNhZEonLFxuICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogJzEwMDAwMDAwMDAnLFxuICAgICAgICAgICAgICB2YWx1ZTogMTAwMDAwMDAwMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGFkZHJlc3M6ICdVUUJMMmlkQ1hSNEFUZFF0YU5hNFZwb2ZjcFN4dXhJZ0hIN19zbE9aZmRPWFNhZEonLFxuICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogJzk5OTAwMDAwMCcsXG4gICAgICAgICAgICAgIGNvaW5OYW1lOiAndHRvbicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgc3BlbmRBbW91bnQ6IDk5OTAwMDAwMCxcbiAgICAgICAgICB0eXBlOiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgIGZlZTogMTAwMDAwMCxcbiAgICAgICAgICBmZWVTdHJpbmc6ICcxMDAwMDAwJyxcbiAgICAgICAgfSxcbiAgICAgICAgY29pblNwZWNpZmljOiB7XG4gICAgICAgICAgY29tbW9uS2V5Y2hhaW46XG4gICAgICAgICAgICAnMWJhYWZhMGQ2MjE3NGJmMGM3OGYzMjU2MzE4NjEzZmZjNDRiNmRkNTRhYjFhNjNjMjE4NTIzMmY5MmVkZTlkYWUxYjI4MThkYmViNTJhODIxNWZkNTZmNWE1ZjJhOWY5NGMwNzljZTg5ZTRkYzNiMWNlNmVkNmU4NGNlNzE4NTcnLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgY29uc3QgbW9ja1R4UmVxdWVzdCA9IHtcbiAgICAgICAgdHJhbnNhY3Rpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdW5zaWduZWRUeDogbW9ja1Vuc2lnbmVkVHgsXG4gICAgICAgICAgICBzaWduYXR1cmVTaGFyZXM6IFtdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHdhbGxldENvaW46ICd0b24nLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgbW9ja1R4UmVxdWVzdHMgPSB7XG4gICAgICAgIHR4UmVxdWVzdHM6IFttb2NrVHhSZXF1ZXN0XSxcbiAgICAgIH07XG5cbiAgICAgIC8vIFN0dWIgdGhlIHJlY292ZXIgZnVuY3Rpb24gdG8gcmV0dXJuIHRoZSBtb2NrZWQgdW5zaWduZWQgc3dlZXAgdHJhbnNhY3Rpb25cbiAgICAgIGNvbnN0IHNhbmRib3ggPSBzaW5vbi5jcmVhdGVTYW5kYm94KCk7XG5cbiAgICAgIHNhbmRib3guc3R1YihiYXNlY29pbiwgJ3JlY292ZXInKS5yZXNvbHZlcyhtb2NrVHhSZXF1ZXN0cyk7XG5cbiAgICAgIC8vIENhbGwgdGhlIHJlY292ZXIgZnVuY3Rpb25cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXIocmVjb3ZlcnlQYXJhbXMpO1xuXG4gICAgICAvLyBWYWxpZGF0ZSB0aGUgcmVzdWx0XG4gICAgICByZXN1bHQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ3R4UmVxdWVzdHMnKTtcbiAgICAgIHJlc3VsdC50eFJlcXVlc3RzWzBdLnNob3VsZC5oYXZlLnByb3BlcnR5KCd0cmFuc2FjdGlvbnMnKTtcbiAgICAgIHJlc3VsdC50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndW5zaWduZWRUeCcpO1xuICAgICAgcmVzdWx0LnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguc2hvdWxkLmVxdWFsKG1vY2tVbnNpZ25lZFR4KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGFrZSBPVkMgb3V0cHV0IGFuZCBnZW5lcmF0ZSBhIHNpZ25lZCBzd2VlcCB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIERlZmluZSB0aGUgcGFyYW1ldGVycyAobW9jayBPVkMgcmVzcG9uc2UpXG4gICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgIG92Y1Jlc3BvbnNlOiB7XG4gICAgICAgICAgc2VyaWFsaXplZFR4OlxuICAgICAgICAgICAgJ3RlNmNja0VCQWdFQXFnQUI0WWdBbDdST2hMbzhBSnVvV3RHdGNLMDBQdVVwWTNZa1FEajkvMlNuTXZ1bkxwSUZibDg5NndsTXY3ZnNVT2Mrc01IekVsOHEzdlg1Ym02bm9IZ2luUEpLQlJ6bk9yTzd2ZUlwSElFcGlSTGJINy9lTmRwU3NSaHZMMjYwSlAvZkQwdkFJVTFOR0x0QUJEcUFBQUFBQ0FBY0FRQm9RZ0IvT2VpTmRMZWFMNytPMDRYdXVqdUNoU0dyUmQ3Wm5GbDJmQ2Q5RlhkekF5RE9KWUN3QUFBQUFBQUFBQUFBQUFBQUFGd1hHdDg9JyxcbiAgICAgICAgICBzY2FuSW5kZXg6IDAsXG4gICAgICAgICAgbGFzdFNjYW5JbmRleDogMCxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIC8vIE1vY2sgdGhlIGV4cGVjdGVkIHJlc3VsdCBmb3IgdGhlIHNpZ25lZCBzd2VlcCB0cmFuc2FjdGlvblxuICAgICAgY29uc3QgbW9ja1NpZ25lZFN3ZWVwVHhuID0ge1xuICAgICAgICB0cmFuc2FjdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZXJpYWxpemVkVHg6XG4gICAgICAgICAgICAgICd0ZTZjY2tFQkFnRUFxZ0FCNFlnQWw3Uk9oTG84QUp1b1d0R3RjSzAwUHVVcFkzWWtRRGo5LzJTbk12dW5McElGYmw4OTZ3bE12N2ZzVU9jK3NNSHpFbDhxM3ZYNWJtNm5vSGdpblBKS0JSem5Pck83dmVJcEhJRXBpUkxiSDcvZU5kcFNzUmh2TDI2MEpQL2ZEMHZBSVUxTkdMdEFCRHFBQUFBQUNBQWNBUUJvUWdCL09laU5kTGVhTDcrTzA0WHV1anVDaFNHclJkN1puRmwyZkNkOUZYZHpBeURPSllDd0FBQUFBQUFBQUFBQUFBQUFBRndYR3Q4PScsXG4gICAgICAgICAgICBzY2FuSW5kZXg6IDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgbGFzdFNjYW5JbmRleDogMCxcbiAgICAgIH07XG5cbiAgICAgIC8vIFN0dWIgdGhlIGNyZWF0ZUJyb2FkY2FzdGFibGVTd2VlcFRyYW5zYWN0aW9uIGZ1bmN0aW9uIHRvIHJldHVybiB0aGUgbW9ja2VkIHJlc3VsdFxuICAgICAgc2FuZGJveC5zdHViKGJhc2Vjb2luLCAnY3JlYXRlQnJvYWRjYXN0YWJsZVN3ZWVwVHJhbnNhY3Rpb24nKS5yZXNvbHZlcyhtb2NrU2lnbmVkU3dlZXBUeG4pO1xuXG4gICAgICAvLyBDYWxsIHRoZSBjcmVhdGVCcm9hZGNhc3RhYmxlU3dlZXBUcmFuc2FjdGlvbiBmdW5jdGlvblxuICAgICAgY29uc3QgcmVjb3ZlcnlUeG4gPSBhd2FpdCBiYXNlY29pbi5jcmVhdGVCcm9hZGNhc3RhYmxlU3dlZXBUcmFuc2FjdGlvbihwYXJhbXMpO1xuXG4gICAgICAvLyBWYWxpZGF0ZSB0aGUgcmVzdWx0XG4gICAgICByZWNvdmVyeVR4bi50cmFuc2FjdGlvbnNbMF0uc2VyaWFsaXplZFR4LnNob3VsZC5lcXVhbChcbiAgICAgICAgJ3RlNmNja0VCQWdFQXFnQUI0WWdBbDdST2hMbzhBSnVvV3RHdGNLMDBQdVVwWTNZa1FEajkvMlNuTXZ1bkxwSUZibDg5NndsTXY3ZnNVT2Mrc01IekVsOHEzdlg1Ym02bm9IZ2luUEpLQlJ6bk9yTzd2ZUlwSElFcGlSTGJINy9lTmRwU3NSaHZMMjYwSlAvZkQwdkFJVTFOR0x0QUJEcUFBQUFBQ0FBY0FRQm9RZ0IvT2VpTmRMZWFMNytPMDRYdXVqdUNoU0dyUmQ3Wm5GbDJmQ2Q5RlhkekF5RE9KWUN3QUFBQUFBQUFBQUFBQUFBQUFGd1hHdDg9J1xuICAgICAgKTtcbiAgICAgIHJlY292ZXJ5VHhuLnRyYW5zYWN0aW9uc1swXS5zY2FuSW5kZXguc2hvdWxkLmVxdWFsKDApO1xuICAgICAgcmVjb3ZlcnlUeG4ubGFzdFNjYW5JbmRleC5zaG91bGQuZXF1YWwoMCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
752
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L3Rvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhDQUE0QztBQUM1Qyw0Q0FBMEM7QUFDMUMsbUNBQWtFO0FBQ2xFLDZDQUErQjtBQUMvQixvREFBNEI7QUFDNUIsMkRBQTZDO0FBQzdDLDhDQUF1RTtBQUN2RSxvREFBNEI7QUFDNUIsZ0VBQXdDO0FBQ3hDLG9EQUE0QjtBQUU1QixRQUFRLENBQUMsTUFBTSxFQUFFO0lBQ2YsSUFBSSxRQUFRLENBQUM7SUFDYixNQUFNLEtBQUssR0FBRyxvQkFBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDNUQsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsU0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzlDLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFVBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNoRCxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUMzQixNQUFNLGNBQWMsR0FBRztRQUNyQjtZQUNFLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztZQUMvRSxNQUFNLEVBQUUsRUFBRTtTQUNYO1FBQ0Q7WUFDRSxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsd0NBQXdDLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFDbEcsTUFBTSxFQUFFLEVBQUU7U0FDWDtLQUNGLENBQUM7SUFDRixNQUFNLHdCQUF3QixHQUFHO1FBQy9CO1lBQ0UsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQ3pGLE1BQU0sRUFBRSxFQUFFO1NBQ1g7UUFDRDtZQUNFLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyx3Q0FBd0MsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztZQUM1RyxNQUFNLEVBQUUsRUFBRTtTQUNYO0tBQ0YsQ0FBQztJQUVGLE1BQU0sWUFBWSxHQUFHO1FBQ25CO1lBQ0UsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQztTQUN2RDtRQUNEO1lBQ0UsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDLHdDQUF3QyxDQUFDLFNBQVMsQ0FBQztTQUMxRTtLQUNGLENBQUM7SUFFRixNQUFNLHNCQUFzQixHQUFHO1FBQzdCO1lBQ0UsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDO1NBQ2pFO1FBQ0Q7WUFDRSxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUMsd0NBQXdDLENBQUMsbUJBQW1CLENBQUM7U0FDcEY7S0FDRixDQUFDO0lBRUYsRUFBRSxDQUFDLDhCQUE4QixFQUFFO1FBQ2pDLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVoQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2QyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUV0QyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QyxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLEVBQUU7UUFDcEMsUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNoQyxNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckMsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sa0JBQWtCLEdBQUcsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekQsTUFBTSxvQkFBb0IsR0FBRyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUU3RCxFQUFFLENBQUMsc0NBQXNDLEVBQUUsS0FBSztnQkFDOUMsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDO2dCQUN4QixNQUFNLHFCQUFxQixHQUFHLE1BQU0sUUFBUSxDQUFDLGlCQUFpQixDQUFDO29CQUM3RCxRQUFRO29CQUNSLFVBQVU7b0JBQ1YsWUFBWTtpQkFDTixDQUFDLENBQUM7Z0JBQ1YscUJBQXFCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFekMsTUFBTSwrQkFBK0IsR0FBRyxNQUFNLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztvQkFDdkUsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsVUFBVSxFQUFFLG9CQUFvQjtvQkFDaEMsWUFBWSxFQUFFLEVBQUU7aUJBQ1YsQ0FBQyxDQUFDO2dCQUNWLCtCQUErQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckQsQ0FBQyxDQUFDLENBQUM7WUFFSCxFQUFFLENBQUMseUVBQXlFLEVBQUUsS0FBSztnQkFDakYsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDdkUseUJBQXlCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUM7Z0JBQzFELE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQztnQkFDeEIsTUFBTSxRQUFRO3FCQUNYLGlCQUFpQixDQUFDO29CQUNqQixRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxVQUFVO29CQUNWLFlBQVk7aUJBQ04sQ0FBQztxQkFDUixNQUFNLENBQUMsWUFBWSxDQUFDLDZEQUE2RCxDQUFDLENBQUM7WUFDeEYsQ0FBQyxDQUFDLENBQUM7WUFFSCxFQUFFLENBQUMseUVBQXlFLEVBQUUsS0FBSztnQkFDakYsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDdkUseUJBQXlCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUM7Z0JBQzVELE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQztnQkFDeEIsTUFBTSxRQUFRO3FCQUNYLGlCQUFpQixDQUFDO29CQUNqQixRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxVQUFVO29CQUNWLFlBQVk7aUJBQ04sQ0FBQztxQkFDUixNQUFNLENBQUMsWUFBWSxDQUFDLDZEQUE2RCxDQUFDLENBQUM7WUFDeEYsQ0FBQyxDQUFDLENBQUM7WUFFSCxFQUFFLENBQUMsNEZBQTRGLEVBQUUsS0FBSztnQkFDcEcsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDO2dCQUN4QixNQUFNLFFBQVE7cUJBQ1gsaUJBQWlCLENBQUM7b0JBQ2pCLFFBQVE7b0JBQ1IsVUFBVTtvQkFDVixZQUFZO2lCQUNOLENBQUM7cUJBQ1IsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMvQixDQUFDLENBQUMsQ0FBQztZQUVILEVBQUUsQ0FBQyw0RkFBNEYsRUFBRSxLQUFLO2dCQUNwRyxNQUFNLFlBQVksR0FBRyxFQUFFLENBQUM7Z0JBQ3hCLE1BQU0sUUFBUTtxQkFDWCxpQkFBaUIsQ0FBQztvQkFDakIsUUFBUTtvQkFDUixVQUFVO29CQUNWLFlBQVk7aUJBQ04sQ0FBQztxQkFDUixNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9CLENBQUMsQ0FBQyxDQUFDO1lBRUgsRUFBRSxDQUFDLGdGQUFnRixFQUFFLEtBQUs7Z0JBQ3hGLE1BQU0seUJBQXlCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZFLHlCQUF5QixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxnQkFBTSxDQUFDLE9BQU8sQ0FDbEUseUJBQXlCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDaEQsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDOUIsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDO2dCQUN4QixNQUFNLFVBQVUsR0FBRyxNQUFNLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztvQkFDbEQsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsVUFBVTtvQkFDVixZQUFZO2lCQUNOLENBQUMsQ0FBQztnQkFDVixVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoQyxDQUFDLENBQUMsQ0FBQztZQUVILEVBQUUsQ0FBQyxzREFBc0QsRUFBRSxLQUFLO2dCQUM5RCxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7Z0JBQ3RCLE1BQU0sUUFBUTtxQkFDWCxpQkFBaUIsQ0FBQztvQkFDakIsUUFBUTtvQkFDUixVQUFVO2lCQUNKLENBQUM7cUJBQ1IsTUFBTSxDQUFDLFlBQVksQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO1lBQ3hFLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsaUVBQWlFLEVBQUUsS0FBSztZQUN6RSxNQUFNLFFBQVEsR0FBRztnQkFDZixVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUMsOEJBQThCLENBQUMsU0FBUyxDQUFDO2FBQ2hFLENBQUM7WUFDRixNQUFNLFVBQVUsR0FBRztnQkFDakIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLDhCQUE4QixDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO2dCQUN4RixNQUFNLEVBQUUsRUFBRTthQUNYLENBQUM7WUFDRixNQUFNLFlBQVksR0FBRyxFQUFFLENBQUM7WUFDeEIsTUFBTSxxQkFBcUIsR0FBRyxNQUFNLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztnQkFDN0QsUUFBUTtnQkFDUixVQUFVO2dCQUNWLFlBQVk7YUFDTixDQUFDLENBQUM7WUFDVixxQkFBcUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxFQUFFO1FBQ3JDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEMsRUFBRSxDQUFDLHVDQUF1QyxFQUFFLEtBQUs7WUFDL0MsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLE1BQU0sUUFBUSxDQUFDLGtCQUFrQixDQUFDO2dCQUM5RCxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7YUFDaEYsQ0FBQyxDQUEyQixDQUFDO1lBQzlCLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7Z0JBQ3BDLFlBQVksRUFBRSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixDQUFDO2dCQUN6RyxFQUFFLEVBQUUsOENBQThDO2dCQUNsRCxPQUFPLEVBQUU7b0JBQ1A7d0JBQ0UsT0FBTyxFQUFFLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsT0FBTzt3QkFDekQsTUFBTSxFQUFFLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsTUFBTTtxQkFDeEQ7aUJBQ0Y7Z0JBQ0QsWUFBWSxFQUFFLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsTUFBTTtnQkFDN0QsYUFBYSxFQUFFLEVBQUU7Z0JBQ2pCLFlBQVksRUFBRSxHQUFHO2dCQUNqQixHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFO2dCQUN2QixjQUFjLEVBQUUsU0FBUzthQUMxQixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxzREFBc0QsRUFBRSxLQUFLO1lBQzlELE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQztnQkFDOUQsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO2dCQUMvRSxtQkFBbUIsRUFBRSxLQUFLO2dCQUMxQixxQkFBcUIsRUFBRSxLQUFLO2FBQzdCLENBQUMsQ0FBMkIsQ0FBQztZQUM5QixvQkFBb0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO2dCQUNwQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQztnQkFDekcsRUFBRSxFQUFFLDhDQUE4QztnQkFDbEQsT0FBTyxFQUFFO29CQUNQO3dCQUNFLE9BQU8sRUFBRSxRQUFRLENBQUMscUJBQXFCLENBQUMsbUJBQW1CLENBQUMsT0FBTzt3QkFDbkUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNO3FCQUNsRTtpQkFDRjtnQkFDRCxZQUFZLEVBQUUsUUFBUSxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDLE1BQU07Z0JBQ3ZFLGFBQWEsRUFBRSxFQUFFO2dCQUNqQixZQUFZLEVBQUUsR0FBRztnQkFDakIsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRTtnQkFDdkIsY0FBYyxFQUFFLFNBQVM7YUFDMUIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsd0RBQXdELEVBQUUsS0FBSztZQUNoRSxNQUFNLG9CQUFvQixHQUFHLENBQUMsTUFBTSxRQUFRLENBQUMsa0JBQWtCLENBQUM7Z0JBQzlELEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyx3Q0FBd0MsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQzthQUNuRyxDQUFDLENBQTJCLENBQUM7WUFDOUIsb0JBQW9CLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztnQkFDcEMsWUFBWSxFQUFFLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLENBQUM7Z0JBQ3pHLEVBQUUsRUFBRSxRQUFRLENBQUMsd0NBQXdDLENBQUMsSUFBSTtnQkFDMUQsT0FBTyxFQUFFO29CQUNQO3dCQUNFLE9BQU8sRUFBRSxRQUFRLENBQUMsd0NBQXdDLENBQUMsU0FBUyxDQUFDLE9BQU87d0JBQzVFLE1BQU0sRUFBRSxRQUFRLENBQUMsd0NBQXdDLENBQUMsU0FBUyxDQUFDLE1BQU07cUJBQzNFO2lCQUNGO2dCQUNELFlBQVksRUFBRSxRQUFRLENBQUMsd0NBQXdDLENBQUMsU0FBUyxDQUFDLE1BQU07Z0JBQ2hGLGFBQWEsRUFBRSxFQUFFO2dCQUNqQixZQUFZLEVBQUUsR0FBRztnQkFDakIsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRTtnQkFDdkIsY0FBYyxFQUFFLGlCQUFpQjthQUNsQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyx1RUFBdUUsRUFBRSxLQUFLO1lBQy9FLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQztnQkFDOUQsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLHdDQUF3QyxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO2dCQUNsRyxtQkFBbUIsRUFBRSxLQUFLO2dCQUMxQixxQkFBcUIsRUFBRSxLQUFLO2FBQzdCLENBQUMsQ0FBMkIsQ0FBQztZQUM5QixvQkFBb0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO2dCQUNwQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQztnQkFDekcsRUFBRSxFQUFFLFFBQVEsQ0FBQyx3Q0FBd0MsQ0FBQyxJQUFJO2dCQUMxRCxPQUFPLEVBQUU7b0JBQ1A7d0JBQ0UsT0FBTyxFQUFFLFFBQVEsQ0FBQyx3Q0FBd0MsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPO3dCQUN0RixNQUFNLEVBQUUsUUFBUSxDQUFDLHdDQUF3QyxDQUFDLG1CQUFtQixDQUFDLE1BQU07cUJBQ3JGO2lCQUNGO2dCQUNELFlBQVksRUFBRSxRQUFRLENBQUMsd0NBQXdDLENBQUMsbUJBQW1CLENBQUMsTUFBTTtnQkFDMUYsYUFBYSxFQUFFLEVBQUU7Z0JBQ2pCLFlBQVksRUFBRSxHQUFHO2dCQUNqQixHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFO2dCQUN2QixjQUFjLEVBQUUsaUJBQWlCO2FBQ2xDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHdEQUF3RCxFQUFFLEtBQUs7WUFDaEUsSUFBSSxDQUFDO2dCQUNILE1BQU0sUUFBUSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3hDLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLGdCQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUscUJBQXFCLENBQUMsQ0FBQztZQUNyRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsd0RBQXdELEVBQUUsS0FBSztZQUNoRSxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxRQUFRLENBQUMsa0JBQWtCLENBQUMsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztZQUMvRCxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixnQkFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLHFCQUFxQixDQUFDLENBQUM7WUFDckQsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxFQUFFO1FBQ3BDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFcEMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLHdDQUF3QyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRW5ILE1BQU0sNkJBQTZCLEdBQUc7WUFDcEM7Z0JBQ0U7b0JBQ0UsT0FBTyxFQUFFLGtEQUFrRDtvQkFDM0QsTUFBTSxFQUFFLFVBQVU7aUJBQ25CO2FBQ0Y7WUFDRDtnQkFDRTtvQkFDRSxPQUFPLEVBQUUsa0RBQWtEO29CQUMzRCxNQUFNLEVBQUUsV0FBVztpQkFDcEI7YUFDRjtTQUNGLENBQUM7UUFFRixNQUFNLHVDQUF1QyxHQUFHO1lBQzlDO2dCQUNFO29CQUNFLE9BQU8sRUFBRSxrREFBa0Q7b0JBQzNELE1BQU0sRUFBRSxVQUFVO2lCQUNuQjthQUNGO1lBQ0Q7Z0JBQ0U7b0JBQ0UsT0FBTyxFQUFFLGtEQUFrRDtvQkFDM0QsTUFBTSxFQUFFLFdBQVc7aUJBQ3BCO2FBQ0Y7U0FDRixDQUFDO1FBRUYsTUFBTSw4QkFBOEIsR0FBRztZQUNyQztnQkFDRTtvQkFDRSxPQUFPLEVBQUUsa0RBQWtEO29CQUMzRCxNQUFNLEVBQUUsVUFBVTtpQkFDbkI7YUFDRjtZQUNEO2dCQUNFO29CQUNFLE9BQU8sRUFBRSxrREFBa0Q7b0JBQzNELE1BQU0sRUFBRSxXQUFXO2lCQUNwQjthQUNGO1NBQ0YsQ0FBQztRQUVGLE1BQU0sd0NBQXdDLEdBQUc7WUFDL0M7Z0JBQ0U7b0JBQ0UsT0FBTyxFQUFFLGtEQUFrRDtvQkFDM0QsTUFBTSxFQUFFLFVBQVU7aUJBQ25CO2FBQ0Y7WUFDRDtnQkFDRTtvQkFDRSxPQUFPLEVBQUUsa0RBQWtEO29CQUMzRCxNQUFNLEVBQUUsV0FBVztpQkFDcEI7YUFDRjtTQUNGLENBQUM7UUFFRixnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDcEMsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUMsTUFBTSx5QkFBeUIsR0FBRyw2QkFBNkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2RSxNQUFNLG1DQUFtQyxHQUFHLHVDQUF1QyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNGLE1BQU0sMEJBQTBCLEdBQUcsOEJBQThCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekUsTUFBTSxvQ0FBb0MsR0FBRyx3Q0FBd0MsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUU3RixFQUFFLENBQUMsZ0NBQWdDLEVBQUUsS0FBSztnQkFDeEMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDeEQsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7aUJBQzFELENBQUMsQ0FBQztnQkFFSCxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO29CQUNqQyxNQUFNLEVBQUUseUJBQXlCO29CQUNqQyxPQUFPLEVBQUUsMEJBQTBCO2lCQUNwQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztZQUVILEVBQUUsQ0FBQywrQ0FBK0MsRUFBRSxLQUFLO2dCQUN2RCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sUUFBUSxDQUFDLGdCQUFnQixDQUFDO29CQUN4RCxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztvQkFDekQsbUJBQW1CLEVBQUUsS0FBSztvQkFDMUIscUJBQXFCLEVBQUUsS0FBSztpQkFDQyxDQUFDLENBQUM7Z0JBRWpDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7b0JBQ2pDLE1BQU0sRUFBRSxtQ0FBbUM7b0JBQzNDLE9BQU8sRUFBRSxvQ0FBb0M7aUJBQzlDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1lBRUgsRUFBRSxDQUFDLHNGQUFzRixFQUFFLEtBQUs7Z0JBQzlGLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBRyxDQUFDLFNBQVMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO2dCQUM3RCxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN6QixNQUFNLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLHlCQUF5QixDQUFDLENBQUM7Z0JBQzFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFO1FBQ2xDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEMsSUFBSSxTQUFTLENBQUM7UUFDZCxJQUFJLGNBQWMsQ0FBQztRQUVuQixNQUFNLENBQUM7WUFDTCxjQUFjO2dCQUNaLGtJQUFrSSxDQUFDO1lBQ3JJLFNBQVMsR0FBRztnQkFDVjtvQkFDRSxFQUFFLEVBQUUsa0NBQWtDO29CQUN0QyxNQUFNLEVBQUUsTUFBTTtvQkFDZCxJQUFJLEVBQUUsS0FBSztvQkFDWCxjQUFjLEVBQ1osa0lBQWtJO29CQUNwSSxZQUFZLEVBQ1YsZzBDQUFnMEM7aUJBQ24wQztnQkFDRDtvQkFDRSxFQUFFLEVBQUUsa0NBQWtDO29CQUN0QyxNQUFNLEVBQUUsUUFBUTtvQkFDaEIsSUFBSSxFQUFFLEtBQUs7b0JBQ1gsY0FBYyxFQUNaLGtJQUFrSTtvQkFDcEksWUFBWSxFQUNWLGcwQ0FBZzBDO2lCQUNuMEM7Z0JBQ0Q7b0JBQ0UsRUFBRSxFQUFFLGtDQUFrQztvQkFDdEMsTUFBTSxFQUFFLE9BQU87b0JBQ2YsSUFBSSxFQUFFLEtBQUs7b0JBQ1gsY0FBYyxFQUNaLGtJQUFrSTtvQkFDcEksZ0JBQWdCLEVBQUUsSUFBSTtvQkFDdEIsT0FBTyxFQUFFLElBQUk7aUJBQ2Q7YUFDRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsNkRBQTZELEVBQUUsS0FBSztZQUNyRSxNQUFNLE9BQU8sR0FBRyxrREFBa0QsQ0FBQztZQUNuRSxRQUFRLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsOERBQThELEVBQUUsS0FBSztZQUN0RSxNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUM7WUFDL0IsUUFBUSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLG9FQUFvRSxFQUFFLEtBQUs7WUFDNUUsTUFBTSxPQUFPLEdBQUcsa0RBQWtELENBQUM7WUFDbkUsUUFBUSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDJEQUEyRCxFQUFFLEtBQUs7WUFDbkUsTUFBTSxRQUFRLEdBQUcsNkRBQTZELENBQUM7WUFDL0UsTUFBTSxRQUFRLEdBQUcsNkRBQTZELENBQUM7WUFDL0UsUUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JELFFBQVEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyx1RUFBdUUsRUFBRSxLQUFLO1lBQy9FLE1BQU0sVUFBVSxHQUFHLGtEQUFrRCxDQUFDO1lBQ3RFLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQztZQUVoQixNQUFNLE1BQU0sR0FBRyxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQztZQUN6RSxDQUFDLE1BQU0sUUFBUSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsb0VBQW9FLEVBQUUsS0FBSztZQUM1RSxNQUFNLFVBQVUsR0FBRywyREFBMkQsQ0FBQztZQUMvRSxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUM7WUFFaEIsTUFBTSxNQUFNLEdBQUcsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDekUsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDZHQUE2RyxFQUFFLEtBQUs7WUFDckgsTUFBTSxxQkFBcUIsR0FBRyxrREFBa0QsQ0FBQztZQUNqRixNQUFNLEtBQUssR0FBRyxDQUFDLENBQUM7WUFFaEIsTUFBTSxNQUFNLEdBQUcsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQztZQUNwRixDQUFDLE1BQU0sUUFBUSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsa0VBQWtFLEVBQUUsS0FBSztZQUMxRSxNQUFNLE9BQU8sR0FBRyxrREFBa0QsQ0FBQztZQUNuRSxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUM7WUFFaEIsTUFBTSxNQUFNLEdBQUcsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ2xELE1BQU0sZ0JBQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDckUsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsb0VBQW9FLEVBQUUsS0FBSztZQUM1RSxNQUFNLFlBQVksR0FBRyxZQUFZLENBQUM7WUFDbEMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBRWhCLE1BQU0sTUFBTSxHQUFHLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDaEUsTUFBTSxnQkFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsWUFBWSxFQUFFO2FBQzVDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRTtRQUMzQixJQUFJLGNBQWMsQ0FBQztRQUNuQixJQUFJLGdCQUFnQixDQUFDO1FBQ3JCLE1BQU0sQ0FBQyxLQUFLO1lBQ1YsY0FBYztnQkFDWixrSUFBa0ksQ0FBQztZQUNySSxNQUFNLEdBQUcsR0FBRyxNQUFNLHVCQUFZLENBQUMseUJBQXlCLEVBQUUsQ0FBQztZQUMzRCxnQkFBZ0IsR0FBRyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pGLENBQUMsQ0FBQyxDQUFDO1FBRUgsUUFBUSxDQUFDLHlCQUF5QixFQUFFO1lBQ2xDLEVBQUUsQ0FBQyw2Q0FBNkMsRUFBRSxLQUFLO2dCQUNyRCxDQUFDLE1BQU0sZUFBSyxDQUFDLHVCQUF1QixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNsRSxrREFBa0QsQ0FDbkQsQ0FBQztnQkFDRixDQUFDLE1BQU0sZUFBSyxDQUFDLHVCQUF1QixDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDeEUsa0RBQWtELENBQ25ELENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztZQUVILEVBQUUsQ0FBQyxxREFBcUQsRUFBRSxLQUFLO2dCQUM3RCxDQUFDLE1BQU0sZUFBSyxDQUFDLHVCQUF1QixDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDekUsa0RBQWtELENBQ25ELENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztZQUVILEVBQUUsQ0FBQywwQ0FBMEMsRUFBRSxLQUFLO2dCQUNsRCxDQUFDLE1BQU0sZUFBSyxDQUFDLHVCQUF1QixDQUFDLGdCQUFnQixFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2hGLG9FQUFvRSxDQUNyRSxDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7WUFFSCxFQUFFLENBQUMsMkNBQTJDLEVBQUUsS0FBSztnQkFDbkQsTUFBTSxhQUFhLEdBQUc7b0JBQ3BCLFdBQVcsRUFBRSxTQUFTO29CQUN0QixZQUFZLEVBQUUsa0VBQWtFO29CQUNoRixnQkFBZ0IsRUFBRSxVQUFVO29CQUM1QixvQkFBb0IsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO29CQUN2QyxZQUFZLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO29CQUMxQixhQUFhLEVBQUUsRUFBRSxHQUFHLEVBQUU7b0JBQ3RCLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUM7b0JBQ3ZDLG9CQUFvQixFQUFFLGtEQUFrRDtvQkFDeEUsWUFBWSxFQUFFLGtEQUFrRDtpQkFDakUsQ0FBQztnQkFDRixNQUFNLHNCQUFzQixHQUFHLE1BQU0sZUFBSyxDQUFDLHlCQUF5QixDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUNwRixzQkFBc0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7WUFDMUYsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILFFBQVEsQ0FBQyxZQUFZLEVBQUU7WUFDckIsRUFBRSxDQUFDLDhDQUE4QyxFQUFFO2dCQUNqRCxnQkFBTSxDQUFDLEtBQUssQ0FDVixlQUFLLENBQUMsVUFBVSxDQUFDLGtEQUFrRCxFQUFFLEtBQUssQ0FBQyxFQUMzRSxrREFBa0QsQ0FDbkQsQ0FBQztnQkFDRixnQkFBTSxDQUFDLEtBQUssQ0FDVixlQUFLLENBQUMsVUFBVSxDQUFDLGtEQUFrRCxFQUFFLElBQUksQ0FBQyxFQUMxRSxrREFBa0QsQ0FDbkQsQ0FBQztnQkFDRixnQkFBTSxDQUFDLEtBQUssQ0FDVixlQUFLLENBQUMsVUFBVSxDQUFDLGtEQUFrRCxFQUFFLElBQUksQ0FBQyxFQUMxRSxrREFBa0QsQ0FDbkQsQ0FBQztnQkFDRixnQkFBTSxDQUFDLEtBQUssQ0FDVixlQUFLLENBQUMsVUFBVSxDQUFDLGtEQUFrRCxFQUFFLEtBQUssQ0FBQyxFQUMzRSxrREFBa0QsQ0FDbkQsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsNEJBQTRCLEVBQUUsS0FBSztZQUNwQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxlQUFLLENBQUMsY0FBYyxDQUFDLDhDQUE4QyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDekYsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsZUFBSyxDQUFDLGNBQWMsQ0FBQyxxQ0FBcUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2pGLGdCQUFNLENBQUMsS0FBSyxDQUFDLGVBQUssQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsZ0NBQWdDLEVBQUUsS0FBSztZQUN4QyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxlQUFLLENBQUMsb0JBQW9CLENBQUMsOENBQThDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMvRixnQkFBTSxDQUFDLEtBQUssQ0FBQyxlQUFLLENBQUMsb0JBQW9CLENBQUMsOENBQThDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLHVCQUF1QjtZQUN2SCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxlQUFLLENBQUMsb0JBQW9CLENBQUMsOENBQThDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLG9CQUFvQjtZQUNwSCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxlQUFLLENBQUMsb0JBQW9CLENBQUMsb0NBQW9DLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN0RixnQkFBTSxDQUFDLEtBQUssQ0FBQyxlQUFLLENBQUMsb0JBQW9CLENBQUMseURBQXlELENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMzRyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxlQUFLLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsZ0NBQWdDLEVBQUUsS0FBSztZQUN4QyxNQUFNLEVBQUUsR0FBRyxNQUFNLGVBQUssQ0FBQyxzQkFBc0IsQ0FDM0Msd3lCQUF3eUIsQ0FDenlCLENBQUM7WUFDRixnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsOENBQThDLENBQUMsQ0FBQztRQUNuRSxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw4Q0FBOEMsRUFBRTtZQUNqRCxNQUFNLEtBQUssR0FBRyxzRUFBc0UsQ0FBQztZQUNyRixNQUFNLFdBQVcsR0FBRyxvRUFBb0UsQ0FBQztZQUN6RixnQkFBTSxDQUFDLEtBQUssQ0FBQyxlQUFLLENBQUMsMkJBQTJCLENBQUMsS0FBSyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFFcEUsTUFBTSxLQUFLLEdBQUcsc0VBQXNFLENBQUM7WUFDckYsTUFBTSxXQUFXLEdBQUcscUVBQXFFLENBQUM7WUFDMUYsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsZUFBSyxDQUFDLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3RFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsZUFBZSxFQUFFO1FBQ3hCLEVBQUUsQ0FBQyxzREFBc0QsRUFBRSxLQUFLO1lBQzlELE1BQU0sTUFBTSxHQUFHLE1BQU0sZUFBSyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDekYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGlEQUFpRCxFQUFFLEtBQUs7WUFDekQsTUFBTSxNQUFNLEdBQUcsTUFBTSxlQUFLLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNwRixNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyx5REFBeUQsRUFBRTtRQUNsRSxJQUFJLE9BQTJCLENBQUM7UUFDaEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLE9BQU8sR0FBRyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxxQ0FBcUM7UUFDeEUsQ0FBQyxDQUFDLENBQUM7UUFFSCxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2IsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsb0NBQW9DO1FBQ3pELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDBEQUEwRCxFQUFFLEtBQUs7WUFDbEUsNkJBQTZCO1lBQzdCLE1BQU0sY0FBYyxHQUFHO2dCQUNyQixRQUFRLEVBQ04sa0lBQWtJO2dCQUNwSSxtQkFBbUIsRUFBRSxrREFBa0Q7Z0JBQ3ZFLE1BQU0sRUFBRSxrRUFBa0U7Z0JBQzFFLE9BQU8sRUFDTCxrSUFBa0k7Z0JBQ3BJLGdCQUFnQixFQUFFLGlCQUFpQjthQUNwQyxDQUFDO1lBRUYsa0RBQWtEO1lBQ2xELE1BQU0sVUFBVSxHQUFHO2dCQUNqQixZQUFZLEVBQ1YsMFBBQTBQO2dCQUM1UCxTQUFTLEVBQUUsQ0FBQztnQkFDWixJQUFJLEVBQUUsTUFBTTthQUNiLENBQUM7WUFFRix3REFBd0Q7WUFDeEQsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUV2RCw0QkFBNEI7WUFDNUIsTUFBTSxNQUFNLEdBQUcsTUFBTSxRQUFRLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBRXRELHNCQUFzQjtZQUN0QixNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQzlCLDBQQUEwUCxDQUMzUCxDQUFDO1lBQ0YsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyw2QkFBNkI7UUFDbEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsNkRBQTZELEVBQUUsS0FBSztZQUNyRSxNQUFNLGNBQWMsR0FBRztnQkFDckIsUUFBUSxFQUNOLGtJQUFrSTtnQkFDcEksbUJBQW1CLEVBQUUsa0RBQWtEO2dCQUN2RSxNQUFNLEVBQUUsa0VBQWtFO2dCQUMxRSxPQUFPLEVBQ0wsZzBDQUFnMEM7Z0JBQ2wwQyxTQUFTLEVBQ1AsZzBDQUFnMEM7Z0JBQ2wwQyxnQkFBZ0IsRUFBRSxrQkFBa0I7Z0JBQ3BDLG1CQUFtQixFQUFFLGtEQUFrRDthQUN4RSxDQUFDO1lBRUYsTUFBTSxZQUFZLEdBQUc7Z0JBQ25CLFVBQVUsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztnQkFDakQsY0FBYyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUM7b0JBQ3RDLFdBQVcsRUFBRTt3QkFDWCxVQUFVLEVBQUUsSUFBSTt3QkFDaEIsV0FBVyxFQUFFLElBQUk7d0JBQ2pCLE9BQU8sRUFBRSxJQUFJO3dCQUNiLE9BQU8sRUFBRSxJQUFJO3FCQUNkO2lCQUNGLENBQUM7Z0JBQ0YsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFO29CQUN6RCxJQUFJLE1BQU0sS0FBSyxpQkFBaUIsRUFBRSxDQUFDO3dCQUNqQyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUM7NEJBQ3JCLEtBQUssRUFBRTtnQ0FDTCxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUM7Z0NBQ3JCLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQztnQ0FDWixDQUFDLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQztnQ0FDdkIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUM7NkJBQ3hCO3lCQUNGLENBQUMsQ0FBQztvQkFDTCxDQUFDO29CQUNELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN4QyxDQUFDLENBQUM7Z0JBQ0YsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUU7b0JBQ2hELElBQUksTUFBTSxLQUFLLGNBQWMsRUFBRSxDQUFDO3dCQUM5QixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUM7NEJBQ3JCLFFBQVEsRUFBRSxDQUFDOzRCQUNYLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO3lCQUN0QixDQUFDLENBQUM7b0JBQ0wsQ0FBQztvQkFDRCxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQzt3QkFDekIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7b0JBQ3ZDLENBQUM7b0JBQ0QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUM3QixDQUFDLENBQUM7YUFDSCxDQUFDO1lBRUYsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUUzRCxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNuRCxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckYsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRXhGLE9BQU87aUJBQ0osSUFBSSxDQUFDLHVCQUFZLEVBQUUsaUJBQWlCLENBQUM7aUJBQ3JDLFFBQVEsQ0FDUCxNQUFNLENBQUMsSUFBSSxDQUNULGtFQUFrRTtnQkFDaEUsa0VBQWtFLEVBQ3BFLEtBQUssQ0FDTixDQUNGLENBQUM7WUFFSixNQUFNLE1BQU0sR0FBRyxNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7WUFFdEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzVDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN6QyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsa0ZBQWtGLEVBQUUsS0FBSztZQUMxRiw2QkFBNkI7WUFDN0IsTUFBTSxjQUFjLEdBQUc7Z0JBQ3JCLFFBQVEsRUFDTixrSUFBa0k7Z0JBQ3BJLG1CQUFtQixFQUFFLGtEQUFrRDtnQkFDdkUsTUFBTSxFQUFFLGtFQUFrRTthQUMzRSxDQUFDO1lBRUYsMERBQTBEO1lBQzFELE1BQU0sY0FBYyxHQUFHO2dCQUNyQixZQUFZLEVBQ1YsMFBBQTBQO2dCQUM1UCxTQUFTLEVBQUUsQ0FBQztnQkFDWixJQUFJLEVBQUUsTUFBTTtnQkFDWixXQUFXLEVBQUUsa0VBQWtFO2dCQUMvRSxjQUFjLEVBQUUsS0FBSztnQkFDckIsUUFBUSxFQUFFO29CQUNSLE1BQU0sRUFBRTt3QkFDTjs0QkFDRSxPQUFPLEVBQUUsa0RBQWtEOzRCQUMzRCxXQUFXLEVBQUUsWUFBWTs0QkFDekIsS0FBSyxFQUFFLFVBQVU7eUJBQ2xCO3FCQUNGO29CQUNELE9BQU8sRUFBRTt3QkFDUDs0QkFDRSxPQUFPLEVBQUUsa0RBQWtEOzRCQUMzRCxXQUFXLEVBQUUsV0FBVzs0QkFDeEIsUUFBUSxFQUFFLE1BQU07eUJBQ2pCO3FCQUNGO29CQUNELFdBQVcsRUFBRSxTQUFTO29CQUN0QixJQUFJLEVBQUUsRUFBRTtpQkFDVDtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsR0FBRyxFQUFFLE9BQU87b0JBQ1osU0FBUyxFQUFFLFNBQVM7aUJBQ3JCO2dCQUNELFlBQVksRUFBRTtvQkFDWixjQUFjLEVBQ1osa0lBQWtJO2lCQUNySTthQUNGLENBQUM7WUFFRixNQUFNLGFBQWEsR0FBRztnQkFDcEIsWUFBWSxFQUFFO29CQUNaO3dCQUNFLFVBQVUsRUFBRSxjQUFjO3dCQUMxQixlQUFlLEVBQUUsRUFBRTtxQkFDcEI7aUJBQ0Y7Z0JBQ0QsVUFBVSxFQUFFLEtBQUs7YUFDbEIsQ0FBQztZQUVGLE1BQU0sY0FBYyxHQUFHO2dCQUNyQixVQUFVLEVBQUUsQ0FBQyxhQUFhLENBQUM7YUFDNUIsQ0FBQztZQUVGLDRFQUE0RTtZQUM1RSxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7WUFFdEMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBRTNELDRCQUE0QjtZQUM1QixNQUFNLE1BQU0sR0FBRyxNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7WUFFdEQsc0JBQXNCO1lBQ3RCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMxQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzFELE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3hFLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQy9FLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGdFQUFnRSxFQUFFLEtBQUs7WUFDeEUsNENBQTRDO1lBQzVDLE1BQU0sTUFBTSxHQUFHO2dCQUNiLFdBQVcsRUFBRTtvQkFDWCxZQUFZLEVBQ1YsMFBBQTBQO29CQUM1UCxTQUFTLEVBQUUsQ0FBQztvQkFDWixhQUFhLEVBQUUsQ0FBQztpQkFDakI7YUFDRixDQUFDO1lBRUYsNERBQTREO1lBQzVELE1BQU0sa0JBQWtCLEdBQUc7Z0JBQ3pCLFlBQVksRUFBRTtvQkFDWjt3QkFDRSxZQUFZLEVBQ1YsMFBBQTBQO3dCQUM1UCxTQUFTLEVBQUUsQ0FBQztxQkFDYjtpQkFDRjtnQkFDRCxhQUFhLEVBQUUsQ0FBQzthQUNqQixDQUFDO1lBRUYsb0ZBQW9GO1lBQ3BGLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLHFDQUFxQyxDQUFDLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFFM0Ysd0RBQXdEO1lBQ3hELE1BQU0sV0FBVyxHQUFHLE1BQU0sUUFBUSxDQUFDLG1DQUFtQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRS9FLHNCQUFzQjtZQUN0QixXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNuRCwwUEFBMFAsQ0FDM1AsQ0FBQztZQUNGLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEQsV0FBVyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlc3RCaXRHbyB9IGZyb20gJ0BiaXRnby9zZGstdGVzdCc7XG5pbXBvcnQgeyBCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby9zZGstYXBpJztcbmltcG9ydCB7IFRvbiwgVG9uUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMsIFR0b24gfSBmcm9tICcuLi8uLi9zcmMnO1xuaW1wb3J0ICogYXMgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vcmVzb3VyY2VzL3Rvbic7XG5pbXBvcnQgeyBFRERTQU1ldGhvZHMsIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4uLy4uL3NyYy9saWIvdXRpbHMnO1xuaW1wb3J0IFRvbndlYiBmcm9tICd0b253ZWInO1xuXG5kZXNjcmliZSgnVE9OOicsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGJhc2Vjb2luO1xuICBjb25zdCBiaXRnbyA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHb0FQSSwgeyBlbnY6ICdtb2NrJyB9KTtcbiAgYml0Z28uc2FmZVJlZ2lzdGVyKCd0b24nLCBUb24uY3JlYXRlSW5zdGFuY2UpO1xuICBiaXRnby5zYWZlUmVnaXN0ZXIoJ3R0b24nLCBUdG9uLmNyZWF0ZUluc3RhbmNlKTtcbiAgYml0Z28uaW5pdGlhbGl6ZVRlc3RWYXJzKCk7XG4gIGNvbnN0IHR4UHJlYnVpbGRMaXN0ID0gW1xuICAgIHtcbiAgICAgIHR4SGV4OiBCdWZmZXIuZnJvbSh0ZXN0RGF0YS5zaWduZWRTZW5kVHJhbnNhY3Rpb24udHgsICdiYXNlNjQnKS50b1N0cmluZygnaGV4JyksXG4gICAgICB0eEluZm86IHt9LFxuICAgIH0sXG4gICAge1xuICAgICAgdHhIZXg6IEJ1ZmZlci5mcm9tKHRlc3REYXRhLnNpZ25lZFNpbmdsZU5vbWluYXRvcldpdGhkcmF3VHJhbnNhY3Rpb24udHgsICdiYXNlNjQnKS50b1N0cmluZygnaGV4JyksXG4gICAgICB0eEluZm86IHt9LFxuICAgIH0sXG4gIF07XG4gIGNvbnN0IHR4UHJlYnVpbGRCb3VuY2VhYmxlTGlzdCA9IFtcbiAgICB7XG4gICAgICB0eEhleDogQnVmZmVyLmZyb20odGVzdERhdGEuc2lnbmVkU2VuZFRyYW5zYWN0aW9uLnR4Qm91bmNlYWJsZSwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHR4SW5mbzoge30sXG4gICAgfSxcbiAgICB7XG4gICAgICB0eEhleDogQnVmZmVyLmZyb20odGVzdERhdGEuc2lnbmVkU2luZ2xlTm9taW5hdG9yV2l0aGRyYXdUcmFuc2FjdGlvbi50eEJvdW5jZWFibGUsICdiYXNlNjQnKS50b1N0cmluZygnaGV4JyksXG4gICAgICB0eEluZm86IHt9LFxuICAgIH0sXG4gIF07XG5cbiAgY29uc3QgdHhQYXJhbXNMaXN0ID0gW1xuICAgIHtcbiAgICAgIHJlY2lwaWVudHM6IFt0ZXN0RGF0YS5zaWduZWRTZW5kVHJhbnNhY3Rpb24ucmVjaXBpZW50XSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHJlY2lwaWVudHM6IFt0ZXN0RGF0YS5zaWduZWRTaW5nbGVOb21pbmF0b3JXaXRoZHJhd1RyYW5zYWN0aW9uLnJlY2lwaWVudF0sXG4gICAgfSxcbiAgXTtcblxuICBjb25zdCB0eFBhcmFtc0JvdW5jZWFibGVMaXN0ID0gW1xuICAgIHtcbiAgICAgIHJlY2lwaWVudHM6IFt0ZXN0RGF0YS5zaWduZWRTZW5kVHJhbnNhY3Rpb24ucmVjaXBpZW50Qm91bmNlYWJsZV0sXG4gICAgfSxcbiAgICB7XG4gICAgICByZWNpcGllbnRzOiBbdGVzdERhdGEuc2lnbmVkU2luZ2xlTm9taW5hdG9yV2l0aGRyYXdUcmFuc2FjdGlvbi5yZWNpcGllbnRCb3VuY2VhYmxlXSxcbiAgICB9LFxuICBdO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIHRoZSByaWdodCBpbmZvJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHRvbiA9IGJpdGdvLmNvaW4oJ3RvbicpO1xuICAgIGNvbnN0IHR0b24gPSBiaXRnby5jb2luKCd0dG9uJyk7XG5cbiAgICB0b24uZ2V0Q2hhaW4oKS5zaG91bGQuZXF1YWwoJ3RvbicpO1xuICAgIHRvbi5nZXRGYW1pbHkoKS5zaG91bGQuZXF1YWwoJ3RvbicpO1xuICAgIHRvbi5nZXRGdWxsTmFtZSgpLnNob3VsZC5lcXVhbCgnR3JhbScpO1xuICAgIHRvbi5nZXRCYXNlRmFjdG9yKCkuc2hvdWxkLmVxdWFsKDFlOSk7XG5cbiAgICB0dG9uLmdldENoYWluKCkuc2hvdWxkLmVxdWFsKCd0dG9uJyk7XG4gICAgdHRvbi5nZXRGYW1pbHkoKS5zaG91bGQuZXF1YWwoJ3RvbicpO1xuICAgIHR0b24uZ2V0RnVsbE5hbWUoKS5zaG91bGQuZXF1YWwoJ1Rlc3RuZXQgR3JhbScpO1xuICAgIHR0b24uZ2V0QmFzZUZhY3RvcigpLnNob3VsZC5lcXVhbCgxZTkpO1xuICB9KTtcblxuICBkZXNjcmliZSgnVmVyaWZ5IHRyYW5zYWN0aW9uOiAnLCAoKSA9PiB7XG4gICAgYmFzZWNvaW4gPSBiaXRnby5jb2luKCd0dG9uJyk7XG4gICAgdHhQYXJhbXNMaXN0LmZvckVhY2goKF8sIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHR4UGFyYW1zTGlzdFtpbmRleF07XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gdHhQcmVidWlsZExpc3RbaW5kZXhdO1xuICAgICAgY29uc3QgdHhQYXJhbXNCb3VuY2VhYmxlID0gdHhQYXJhbXNCb3VuY2VhYmxlTGlzdFtpbmRleF07XG4gICAgICBjb25zdCB0eFByZWJ1aWxkQm91bmNlYWJsZSA9IHR4UHJlYnVpbGRCb3VuY2VhYmxlTGlzdFtpbmRleF07XG5cbiAgICAgIGl0KCdzaG91bGQgc3VjY2VlZCB0byB2ZXJpZnkgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHZlcmlmaWNhdGlvbiA9IHt9O1xuICAgICAgICBjb25zdCBpc1RyYW5zYWN0aW9uVmVyaWZpZWQgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgICB2ZXJpZmljYXRpb24sXG4gICAgICAgIH0gYXMgYW55KTtcbiAgICAgICAgaXNUcmFuc2FjdGlvblZlcmlmaWVkLnNob3VsZC5lcXVhbCh0cnVlKTtcblxuICAgICAgICBjb25zdCBpc0JvdW5jZWFibGVUcmFuc2FjdGlvblZlcmlmaWVkID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHR4UGFyYW1zOiB0eFBhcmFtc0JvdW5jZWFibGUsXG4gICAgICAgICAgdHhQcmVidWlsZDogdHhQcmVidWlsZEJvdW5jZWFibGUsXG4gICAgICAgICAgdmVyaWZpY2F0aW9uOiB7fSxcbiAgICAgICAgfSBhcyBhbnkpO1xuICAgICAgICBpc0JvdW5jZWFibGVUcmFuc2FjdGlvblZlcmlmaWVkLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHN1Y2NlZWQgdG8gdmVyaWZ5IHRyYW5zYWN0aW9uIHdoZW4gcmVjaXBpZW50cyBhbW91bnQgYXJlIG51bWJlcnMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHR4UGFyYW1zV2l0aE51bWJlckFtb3VudHMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHR4UGFyYW1zKSk7XG4gICAgICAgIHR4UGFyYW1zV2l0aE51bWJlckFtb3VudHMucmVjaXBpZW50c1swXS5hbW91bnQgPSAyMDAwMDAwMDtcbiAgICAgICAgY29uc3QgdmVyaWZpY2F0aW9uID0ge307XG4gICAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICAgIHR4UGFyYW1zOiB0eFBhcmFtc1dpdGhOdW1iZXJBbW91bnRzLFxuICAgICAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgICAgIHZlcmlmaWNhdGlvbixcbiAgICAgICAgICB9IGFzIGFueSlcbiAgICAgICAgICAuc2hvdWxkLnJlamVjdGVkV2l0aCgnVHggb3V0cHV0cyBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHR4UGFyYW1zIHJlY2lwaWVudHMnKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHN1Y2NlZWQgdG8gdmVyaWZ5IHRyYW5zYWN0aW9uIHdoZW4gcmVjaXBpZW50cyBhbW91bnQgYXJlIHN0cmluZ3MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHR4UGFyYW1zV2l0aE51bWJlckFtb3VudHMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHR4UGFyYW1zKSk7XG4gICAgICAgIHR4UGFyYW1zV2l0aE51bWJlckFtb3VudHMucmVjaXBpZW50c1swXS5hbW91bnQgPSAnMjAwMDAwMDAnO1xuICAgICAgICBjb25zdCB2ZXJpZmljYXRpb24gPSB7fTtcbiAgICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgICAudmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICAgICAgdHhQYXJhbXM6IHR4UGFyYW1zV2l0aE51bWJlckFtb3VudHMsXG4gICAgICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICAgICAgdmVyaWZpY2F0aW9uLFxuICAgICAgICAgIH0gYXMgYW55KVxuICAgICAgICAgIC5zaG91bGQucmVqZWN0ZWRXaXRoKCdUeCBvdXRwdXRzIGRvZXMgbm90IG1hdGNoIHdpdGggZXhwZWN0ZWQgdHhQYXJhbXMgcmVjaXBpZW50cycpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgc3VjY2VlZCB0byB2ZXJpZnkgdHJhbnNhY3Rpb24gd2hlbiByZWNpcGllbnRzIGFtb3VudHMgYXJlIG51bWJlciBhbmQgYW1vdW50IGlzIHNhbWUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHZlcmlmaWNhdGlvbiA9IHt9O1xuICAgICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAgIC52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgICAgICB2ZXJpZmljYXRpb24sXG4gICAgICAgICAgfSBhcyBhbnkpXG4gICAgICAgICAgLnNob3VsZC5yZXNvbHZlZFdpdGgodHJ1ZSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBzdWNjZWVkIHRvIHZlcmlmeSB0cmFuc2FjdGlvbiB3aGVuIHJlY2lwaWVudHMgYW1vdW50cyBhcmUgc3RyaW5nIGFuZCBhbW91bnQgaXMgc2FtZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgdmVyaWZpY2F0aW9uID0ge307XG4gICAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICAgIHR4UGFyYW1zLFxuICAgICAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgICAgIHZlcmlmaWNhdGlvbixcbiAgICAgICAgICB9IGFzIGFueSlcbiAgICAgICAgICAuc2hvdWxkLnJlc29sdmVkV2l0aCh0cnVlKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHN1Y2NlZWQgdG8gdmVyaWZ5IHRyYW5zYWN0aW9uIHdoZW4gcmVjaXBpZW50IGFkZHJlc3MgYXJlIG5vbiBib3VuY2VhYmxlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB0eFBhcmFtc1dpdGhOdW1iZXJBbW91bnRzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0eFBhcmFtcykpO1xuICAgICAgICB0eFBhcmFtc1dpdGhOdW1iZXJBbW91bnRzLnJlY2lwaWVudHNbMF0uYWRkcmVzcyA9IG5ldyBUb253ZWIuQWRkcmVzcyhcbiAgICAgICAgICB0eFBhcmFtc1dpdGhOdW1iZXJBbW91bnRzLnJlY2lwaWVudHNbMF0uYWRkcmVzc1xuICAgICAgICApLnRvU3RyaW5nKHRydWUsIHRydWUsIGZhbHNlKTtcbiAgICAgICAgY29uc3QgdmVyaWZpY2F0aW9uID0ge307XG4gICAgICAgIGNvbnN0IGlzVmVyaWZpZWQgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgdHhQYXJhbXM6IHR4UGFyYW1zV2l0aE51bWJlckFtb3VudHMsXG4gICAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgICB2ZXJpZmljYXRpb24sXG4gICAgICAgIH0gYXMgYW55KTtcbiAgICAgICAgaXNWZXJpZmllZC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBmYWlsIHRvIHZlcmlmeSB0cmFuc2FjdGlvbiB3aXRoIGludmFsaWQgcGFyYW0nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7fTtcbiAgICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgICAudmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICAgIH0gYXMgYW55KVxuICAgICAgICAgIC5zaG91bGQucmVqZWN0ZWRXaXRoKCdtaXNzaW5nIHJlcXVpcmVkIHR4IHByZWJ1aWxkIHByb3BlcnR5IHR4SGV4Jyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc3VjY2VlZCB0byB2ZXJpZnkgdHJhbnNhY3Rpb24gd2l0aCByZWNpcGllbnQgaGF2aW5nIG1lbW8nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgcmVjaXBpZW50czogW3Rlc3REYXRhLnNpZ25lZFNlbmRUcmFuc2FjdGlvbkZvck1lbW9JZC5yZWNpcGllbnRdLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHR4SGV4OiBCdWZmZXIuZnJvbSh0ZXN0RGF0YS5zaWduZWRTZW5kVHJhbnNhY3Rpb25Gb3JNZW1vSWQudHgsICdiYXNlNjQnKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIHR4SW5mbzoge30sXG4gICAgICB9O1xuICAgICAgY29uc3QgdmVyaWZpY2F0aW9uID0ge307XG4gICAgICBjb25zdCBpc1RyYW5zYWN0aW9uVmVyaWZpZWQgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UGFyYW1zLFxuICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICB2ZXJpZmljYXRpb24sXG4gICAgICB9IGFzIGFueSk7XG4gICAgICBpc1RyYW5zYWN0aW9uVmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnRXhwbGFpbiBUcmFuc2FjdGlvbjogJywgKCkgPT4ge1xuICAgIGNvbnN0IGJhc2Vjb2luID0gYml0Z28uY29pbigndHRvbicpO1xuICAgIGl0KCdzaG91bGQgZXhwbGFpbiBhIHRyYW5zZmVyIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZXhwbGFpbmVkVHJhbnNhY3Rpb24gPSAoYXdhaXQgYmFzZWNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhIZXg6IEJ1ZmZlci5mcm9tKHRlc3REYXRhLnNpZ25lZFNlbmRUcmFuc2FjdGlvbi50eCwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIH0pKSBhcyBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uO1xuICAgICAgZXhwbGFpbmVkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGRpc3BsYXlPcmRlcjogWydpZCcsICdvdXRwdXRzJywgJ291dHB1dEFtb3VudCcsICdjaGFuZ2VPdXRwdXRzJywgJ2NoYW5nZUFtb3VudCcsICdmZWUnLCAnd2l0aGRyYXdBbW91bnQnXSxcbiAgICAgICAgaWQ6ICd0dXlPa3lGVU12X25lVl9GZU5CSDI0TmQ0Y01MMmpVZ0RQNHpqR2t1T0ZJPScsXG4gICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiB0ZXN0RGF0YS5zaWduZWRTZW5kVHJhbnNhY3Rpb24ucmVjaXBpZW50LmFkZHJlc3MsXG4gICAgICAgICAgICBhbW91bnQ6IHRlc3REYXRhLnNpZ25lZFNlbmRUcmFuc2FjdGlvbi5yZWNpcGllbnQuYW1vdW50LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIG91dHB1dEFtb3VudDogdGVzdERhdGEuc2lnbmVkU2VuZFRyYW5zYWN0aW9uLnJlY2lwaWVudC5hbW91bnQsXG4gICAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgICAgZmVlOiB7IGZlZTogJ1VOS05PV04nIH0sXG4gICAgICAgIHdpdGhkcmF3QW1vdW50OiB1bmRlZmluZWQsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZXhwbGFpbiBhIG5vbi1ib3VuY2VhYmxlIHRyYW5zZmVyIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZXhwbGFpbmVkVHJhbnNhY3Rpb24gPSAoYXdhaXQgYmFzZWNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhIZXg6IEJ1ZmZlci5mcm9tKHRlc3REYXRhLnNpZ25lZFNlbmRUcmFuc2FjdGlvbi50eCwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgdG9BZGRyZXNzQm91bmNlYWJsZTogZmFsc2UsXG4gICAgICAgIGZyb21BZGRyZXNzQm91bmNlYWJsZTogZmFsc2UsXG4gICAgICB9KSkgYXMgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbjtcbiAgICAgIGV4cGxhaW5lZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBkaXNwbGF5T3JkZXI6IFsnaWQnLCAnb3V0cHV0cycsICdvdXRwdXRBbW91bnQnLCAnY2hhbmdlT3V0cHV0cycsICdjaGFuZ2VBbW91bnQnLCAnZmVlJywgJ3dpdGhkcmF3QW1vdW50J10sXG4gICAgICAgIGlkOiAndHV5T2t5RlVNdl9uZVZfRmVOQkgyNE5kNGNNTDJqVWdEUDR6akdrdU9GST0nLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogdGVzdERhdGEuc2lnbmVkU2VuZFRyYW5zYWN0aW9uLnJlY2lwaWVudEJvdW5jZWFibGUuYWRkcmVzcyxcbiAgICAgICAgICAgIGFtb3VudDogdGVzdERhdGEuc2lnbmVkU2VuZFRyYW5zYWN0aW9uLnJlY2lwaWVudEJvdW5jZWFibGUuYW1vdW50LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIG91dHB1dEFtb3VudDogdGVzdERhdGEuc2lnbmVkU2VuZFRyYW5zYWN0aW9uLnJlY2lwaWVudEJvdW5jZWFibGUuYW1vdW50LFxuICAgICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICAgIGZlZTogeyBmZWU6ICdVTktOT1dOJyB9LFxuICAgICAgICB3aXRoZHJhd0Ftb3VudDogdW5kZWZpbmVkLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gYSBzaW5nbGUgbm9taW5hdG9yIHdpdGhkcmF3IHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZXhwbGFpbmVkVHJhbnNhY3Rpb24gPSAoYXdhaXQgYmFzZWNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhIZXg6IEJ1ZmZlci5mcm9tKHRlc3REYXRhLnNpZ25lZFNpbmdsZU5vbWluYXRvcldpdGhkcmF3VHJhbnNhY3Rpb24udHgsICdiYXNlNjQnKS50b1N0cmluZygnaGV4JyksXG4gICAgICB9KSkgYXMgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbjtcbiAgICAgIGV4cGxhaW5lZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBkaXNwbGF5T3JkZXI6IFsnaWQnLCAnb3V0cHV0cycsICdvdXRwdXRBbW91bnQnLCAnY2hhbmdlT3V0cHV0cycsICdjaGFuZ2VBbW91bnQnLCAnZmVlJywgJ3dpdGhkcmF3QW1vdW50J10sXG4gICAgICAgIGlkOiB0ZXN0RGF0YS5zaWduZWRTaW5nbGVOb21pbmF0b3JXaXRoZHJhd1RyYW5zYWN0aW9uLnR4SWQsXG4gICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiB0ZXN0RGF0YS5zaWduZWRTaW5nbGVOb21pbmF0b3JXaXRoZHJhd1RyYW5zYWN0aW9uLnJlY2lwaWVudC5hZGRyZXNzLFxuICAgICAgICAgICAgYW1vdW50OiB0ZXN0RGF0YS5zaWduZWRTaW5nbGVOb21pbmF0b3JXaXRoZHJhd1RyYW5zYWN0aW9uLnJlY2lwaWVudC5hbW91bnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgb3V0cHV0QW1vdW50OiB0ZXN0RGF0YS5zaWduZWRTaW5nbGVOb21pbmF0b3JXaXRoZHJhd1RyYW5zYWN0aW9uLnJlY2lwaWVudC5hbW91bnQsXG4gICAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgICAgZmVlOiB7IGZlZTogJ1VOS05PV04nIH0sXG4gICAgICAgIHdpdGhkcmF3QW1vdW50OiAnOTMyMTc4MTEyMzMwMDAwJyxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIGEgbm9uLWJvdW5jZWFibGUgc2luZ2xlIG5vbWluYXRvciB3aXRoZHJhdyB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGV4cGxhaW5lZFRyYW5zYWN0aW9uID0gKGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4SGV4OiBCdWZmZXIuZnJvbSh0ZXN0RGF0YS5zaWduZWRTaW5nbGVOb21pbmF0b3JXaXRoZHJhd1RyYW5zYWN0aW9uLnR4LCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICB0b0FkZHJlc3NCb3VuY2VhYmxlOiBmYWxzZSxcbiAgICAgICAgZnJvbUFkZHJlc3NCb3VuY2VhYmxlOiBmYWxzZSxcbiAgICAgIH0pKSBhcyBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uO1xuICAgICAgZXhwbGFpbmVkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGRpc3BsYXlPcmRlcjogWydpZCcsICdvdXRwdXRzJywgJ291dHB1dEFtb3VudCcsICdjaGFuZ2VPdXRwdXRzJywgJ2NoYW5nZUFtb3VudCcsICdmZWUnLCAnd2l0aGRyYXdBbW91bnQnXSxcbiAgICAgICAgaWQ6IHRlc3REYXRhLnNpZ25lZFNpbmdsZU5vbWluYXRvcldpdGhkcmF3VHJhbnNhY3Rpb24udHhJZCxcbiAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6IHRlc3REYXRhLnNpZ25lZFNpbmdsZU5vbWluYXRvcldpdGhkcmF3VHJhbnNhY3Rpb24ucmVjaXBpZW50Qm91bmNlYWJsZS5hZGRyZXNzLFxuICAgICAgICAgICAgYW1vdW50OiB0ZXN0RGF0YS5zaWduZWRTaW5nbGVOb21pbmF0b3JXaXRoZHJhd1RyYW5zYWN0aW9uLnJlY2lwaWVudEJvdW5jZWFibGUuYW1vdW50LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIG91dHB1dEFtb3VudDogdGVzdERhdGEuc2lnbmVkU2luZ2xlTm9taW5hdG9yV2l0aGRyYXdUcmFuc2FjdGlvbi5yZWNpcGllbnRCb3VuY2VhYmxlLmFtb3VudCxcbiAgICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgICBmZWU6IHsgZmVlOiAnVU5LTk9XTicgfSxcbiAgICAgICAgd2l0aGRyYXdBbW91bnQ6ICc5MzIxNzgxMTIzMzAwMDAnLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gZXhwbGFpbiB0cmFuc2FjdGlvbiB3aXRoIG1pc3NpbmcgcGFyYW1zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgYmFzZWNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHt9KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHNob3VsZC5lcXVhbChlcnJvci5tZXNzYWdlLCAnSW52YWxpZCB0cmFuc2FjdGlvbicpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIGV4cGxhaW4gdHJhbnNhY3Rpb24gd2l0aCBpbnZhbGlkIHBhcmFtcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7IHR4SGV4OiAncmFuZG9tU3RyaW5nJyB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHNob3VsZC5lcXVhbChlcnJvci5tZXNzYWdlLCAnSW52YWxpZCB0cmFuc2FjdGlvbicpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnUGFyc2UgVHJhbnNhY3Rpb25zOiAnLCAoKSA9PiB7XG4gICAgY29uc3QgYmFzZWNvaW4gPSBiaXRnby5jb2luKCd0dG9uJyk7XG5cbiAgICBjb25zdCB0cmFuc2FjdGlvbnNMaXN0ID0gW3Rlc3REYXRhLnNpZ25lZFNlbmRUcmFuc2FjdGlvbi50eCwgdGVzdERhdGEuc2lnbmVkU2luZ2xlTm9taW5hdG9yV2l0aGRyYXdUcmFuc2FjdGlvbi50eF07XG5cbiAgICBjb25zdCB0cmFuc2FjdGlvbklucHV0c1Jlc3BvbnNlTGlzdCA9IFtcbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6ICdFUUNTQmpSM2ZVT0w5OFdUdzJGX0lUNEJyY3FqWkpXVkxXVVN6NVdRRHBhTDlKcGwnLFxuICAgICAgICAgIGFtb3VudDogJzEwMDAwMDAwJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBhZGRyZXNzOiAnRVFBYkp1Zy1rLXR1ZldNakVDMVJLU00waWlKVERVY1lrQzd6V0FOSHJrVDU1Rm9sJyxcbiAgICAgICAgICBhbW91bnQ6ICcxMjM0MDAwMDAnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICBdO1xuXG4gICAgY29uc3QgdHJhbnNhY3Rpb25JbnB1dHNSZXNwb25zZUJvdW5jZWFibGVMaXN0ID0gW1xuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgYWRkcmVzczogJ1VRQ1NCalIzZlVPTDk4V1R3MkZfSVQ0QnJjcWpaSldWTFdVU3o1V1FEcGFMOU1lZycsXG4gICAgICAgICAgYW1vdW50OiAnMTAwMDAwMDAnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6ICdVUUFiSnVnLWstdHVmV01qRUMxUktTTTBpaUpURFVjWWtDN3pXQU5IcmtUNTVBZmcnLFxuICAgICAgICAgIGFtb3VudDogJzEyMzQwMDAwMCcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIF07XG5cbiAgICBjb25zdCB0cmFuc2FjdGlvbk91dHB1dHNSZXNwb25zZUxpc3QgPSBbXG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBhZGRyZXNzOiAnRVFBMGk4LUNkR25GX0RoVUhIZjkyUjFPTkg2c0lBOXZMWl9XTGNDSWhmQkJYd3RHJyxcbiAgICAgICAgICBhbW91bnQ6ICcxMDAwMDAwMCcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgYWRkcmVzczogJ0VRQTBpOC1DZEduRl9EaFVISGY5MlIxT05INnNJQTl2TFpfV0xjQ0loZkJCWHd0RycsXG4gICAgICAgICAgYW1vdW50OiAnMTIzNDAwMDAwJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgXTtcblxuICAgIGNvbnN0IHRyYW5zYWN0aW9uT3V0cHV0c1Jlc3BvbnNlQm91bmNlYWJsZUxpc3QgPSBbXG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBhZGRyZXNzOiAnVVFBMGk4LUNkR25GX0RoVUhIZjkyUjFPTkg2c0lBOXZMWl9XTGNDSWhmQkJYMWFEJyxcbiAgICAgICAgICBhbW91bnQ6ICcxMDAwMDAwMCcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgYWRkcmVzczogJ1VRQTBpOC1DZEduRl9EaFVISGY5MlIxT05INnNJQTl2TFpfV0xjQ0loZkJCWDFhRCcsXG4gICAgICAgICAgYW1vdW50OiAnMTIzNDAwMDAwJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgXTtcblxuICAgIHRyYW5zYWN0aW9uc0xpc3QuZm9yRWFjaCgoXywgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb25zTGlzdFtpbmRleF07XG4gICAgICBjb25zdCB0cmFuc2FjdGlvbklucHV0c1Jlc3BvbnNlID0gdHJhbnNhY3Rpb25JbnB1dHNSZXNwb25zZUxpc3RbaW5kZXhdO1xuICAgICAgY29uc3QgdHJhbnNhY3Rpb25JbnB1dHNSZXNwb25zZUJvdW5jZWFibGUgPSB0cmFuc2FjdGlvbklucHV0c1Jlc3BvbnNlQm91bmNlYWJsZUxpc3RbaW5kZXhdO1xuICAgICAgY29uc3QgdHJhbnNhY3Rpb25PdXRwdXRzUmVzcG9uc2UgPSB0cmFuc2FjdGlvbk91dHB1dHNSZXNwb25zZUxpc3RbaW5kZXhdO1xuICAgICAgY29uc3QgdHJhbnNhY3Rpb25PdXRwdXRzUmVzcG9uc2VCb3VuY2VhYmxlID0gdHJhbnNhY3Rpb25PdXRwdXRzUmVzcG9uc2VCb3VuY2VhYmxlTGlzdFtpbmRleF07XG5cbiAgICAgIGl0KCdzaG91bGQgcGFyc2UgYSBUT04gdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICAgICAgdHhIZXg6IEJ1ZmZlci5mcm9tKHRyYW5zYWN0aW9uLCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICB9KTtcblxuICAgICAgICBwYXJzZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgICBpbnB1dHM6IHRyYW5zYWN0aW9uSW5wdXRzUmVzcG9uc2UsXG4gICAgICAgICAgb3V0cHV0czogdHJhbnNhY3Rpb25PdXRwdXRzUmVzcG9uc2UsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgcGFyc2UgYSBub24tYm91bmNlYWJsZSBUT04gdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICAgICAgdHhIZXg6IEJ1ZmZlci5mcm9tKHRyYW5zYWN0aW9uLCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICAgIHRvQWRkcmVzc0JvdW5jZWFibGU6IGZhbHNlLFxuICAgICAgICAgIGZyb21BZGRyZXNzQm91bmNlYWJsZTogZmFsc2UsXG4gICAgICAgIH0gYXMgVG9uUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMpO1xuXG4gICAgICAgIHBhcnNlZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICAgIGlucHV0czogdHJhbnNhY3Rpb25JbnB1dHNSZXNwb25zZUJvdW5jZWFibGUsXG4gICAgICAgICAgb3V0cHV0czogdHJhbnNhY3Rpb25PdXRwdXRzUmVzcG9uc2VCb3VuY2VhYmxlLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGZhaWwgdG8gcGFyc2UgYSBUT04gdHJhbnNhY3Rpb24gd2hlbiBleHBsYWluVHJhbnNhY3Rpb24gcmVzcG9uc2UgaXMgdW5kZWZpbmVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBzdHViID0gc2lub24uc3R1YihUb24ucHJvdG90eXBlLCAnZXhwbGFpblRyYW5zYWN0aW9uJyk7XG4gICAgICAgIHN0dWIucmVzb2x2ZXModW5kZWZpbmVkKTtcbiAgICAgICAgYXdhaXQgYmFzZWNvaW4ucGFyc2VUcmFuc2FjdGlvbih7IHR4SGV4OiB0cmFuc2FjdGlvbiB9KS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdpbnZhbGlkIHJhdyB0cmFuc2FjdGlvbicpO1xuICAgICAgICBzdHViLnJlc3RvcmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnQWRkcmVzcyBWYWxpZGF0aW9uJywgKCkgPT4ge1xuICAgIGNvbnN0IGJhc2Vjb2luID0gYml0Z28uY29pbigndHRvbicpO1xuICAgIGxldCBrZXljaGFpbnM7XG4gICAgbGV0IGNvbW1vbktleWNoYWluO1xuXG4gICAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbW1vbktleWNoYWluID1cbiAgICAgICAgJzE5YmRmZTJhNGI0OThhMDU1MTEzODEyMzVhODg5MmQ1NDI2NzgwN2M0YTNmNjU0ZTMxMGI5MzhiOGI0MjRmZjRhZGVkYmU5MmY0YzE0NmRlNjQxYzY3NTA4YTk2MTMyNGM4NTA0Y2RmOGUwYzBhY2JiNjhkNjEwNGNjY2NkNzgxJztcbiAgICAgIGtleWNoYWlucyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnNjQyNGMzNTNlYWY3OGQwMDA3NjZlOTU5NDk4Njg0NjgnLFxuICAgICAgICAgIHNvdXJjZTogJ3VzZXInLFxuICAgICAgICAgIHR5cGU6ICd0c3MnLFxuICAgICAgICAgIGNvbW1vbktleWNoYWluOlxuICAgICAgICAgICAgJzE5YmRmZTJhNGI0OThhMDU1MTEzODEyMzVhODg5MmQ1NDI2NzgwN2M0YTNmNjU0ZTMxMGI5MzhiOGI0MjRmZjRhZGVkYmU5MmY0YzE0NmRlNjQxYzY3NTA4YTk2MTMyNGM4NTA0Y2RmOGUwYzBhY2JiNjhkNjEwNGNjY2NkNzgxJyxcbiAgICAgICAgICBlbmNyeXB0ZWRQcnY6XG4gICAgICAgICAgICAne1wiaXZcIjpcImNaZDVpN0w0Unh0d3JBTFcycks3VUE9PVwiLFwidlwiOjEsXCJpdGVyXCI6MTAwMDAsXCJrc1wiOjI1NixcInRzXCI6NjQsXCJtb2RlXCI6XCJjY21cIixcImFkYXRhXCI6XCJcIixcImNpcGhlclwiOlwiYWVzXCIsXCJzYWx0XCI6XCI1emdvSDFCZDNGdz1cIixcImN0XCI6XCI5dlZsblhGUnRyTTlGVkVvK2QyY2hiR0hsTTlsRlplbXVlQnVBczNCSWtQbzMzRm83anp3d05LL2tJV2tFeWcrTm1FQmQ1SWFxQVMxNTdudnZ2d3p6c21NV2xRZFV6OXFibVhOdjNwZzk4N2NYRlIwOGV4Uys0dWh3UDFZTk9qSlRSdlJOY085WnFIYjQ2ZDRmbXlKL3lDOS9zdXNDZ2U3ci9Fc2JhTjVDM2FmdjFkenlidXE5MTJGd2FRRWxaTFlZcDVCSUN1ZEZPTVo5azBVRE1mS00vUE1Ea0g3V2V4b0dIcjlHS3EvYmdDSDJCMzlUWlp5SEtVNlV5NDdsWGVwMnM2aDBEck13SE9ybm1pTDNEWmpPajg4WW52cGhsenh1bzRlT2xEMlVIaWEyK252SWFJU1lzMjlQcjBEQXZSRXV0Y2h2Y0JwRXhqMWtXV1B2N2hRWXJ2OEYwTkFkYXRzYldsM3creEt5ZmlNS28xVVNscnd5SnZpeXBHdFF0WE9KeXcwWFBOMHJ2MitMNWxXOEJianB6SGZZWU4xM2ZKVGVkbEdURmhoa3pWdGJiUEFLRTAya3g3ekNKY2pZYWlleGRTVHNyRExTY1lOVDkvSmhkdDI3S3Bzb29laHdWb2hMZlNLejR2YkZmUnUyTVBadzMvK2MvaGZpSk5ndHo2ZXNXYm54R3JjRThVMkl3UFlDYUsrR2hrNERjcVdOSW5pNTlSSTVCNWtBc1FPVG9JSTQwcVBONTEwdVRneEJTUE83cTdNSGdreGRkNENxQnErb2pyOWowUDdvYW84RTVZK0NCREpyb2pEb0NoMW9DQ0RXOXZvMmRYbFZjRDhTSWJ3N1UvOUFmdkViQTR4eUUvNW1kMU03Q0l3TG5XczJZbnYwWXRhS29xaGRTOXg2Rm1IbE1EaE4vREtIaW5yd21vd3RyVFQ4MmZPa3BPNWc5c2FTbWdVN1F5M2dMdDh0K1Z3ZEV5ZUZlUVVLUlN5Y2k4cWdxWFFhWklnNCthWGdhU09ubENGTXRtQjhla1l4RWhUWTV1elJmck5nUzRzMVFlcUZCcE50VUYrWWRpMjk3cGJWWG5Kb1hBTitTVldkODBHQ3greUkyZHBWQzg5azNyT1dLOVdleXFsbnp1TEpXcDJSSU9COWNkVzhHRnYvZk4rUUFKcFllVnhPRTQrblpEc0tuc2o4bktjZzl0NERseDFHNmdMTTEvVnE5WXhOTGJ1enVSQzBhc1VZdmRNbm9NdnN6bXBtKytUeG5kWWlzZ05Zc2NwWlNvejd3dmNhekpORVBmaFBWakVrZDZ0VVV1TjRHTTM1SDBEbUtDVVFOVCthNkI2aG1IbFRadmp4aXlHQWc1Ylk1OWhkanZKKzIyUWR1YXpsRUVDNkxJM0hyQTd1SzBUcHBsV3pTMXRDSUZ2VE1VaGo2NURFWm1OSjIrWlk5YlE0dnNNZitEUlIzT09HNHQrRE1sTmZqT2Qzek52M1FvWTk1QmpmV3ByeUZ3UHpEcTdiQ1A2N0pEc29qN2oyVFk1RlJTclJrRDc3SDBFd2x1eDJjV2ZqUlR3Y01IY2RReHh1VjBPUDBhTmpHRGp5YkZOXCJ9JyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnNjQyNGMzNTNlYWY3OGQwMDA3NjZlOTYxMzdkNDQwNGInLFxuICAgICAgICAgIHNvdXJjZTogJ2JhY2t1cCcsXG4gICAgICAgICAgdHlwZTogJ3RzcycsXG4gICAgICAgICAgY29tbW9uS2V5Y2hhaW46XG4gICAgICAgICAgICAnMTliZGZlMmE0YjQ5OGEwNTUxMTM4MTIzNWE4ODkyZDU0MjY3ODA3YzRhM2Y2NTRlMzEwYjkzOGI4YjQyNGZmNGFkZWRiZTkyZjRjMTQ2ZGU2NDFjNjc1MDhhOTYxMzI0Yzg1MDRjZGY4ZTBjMGFjYmI2OGQ2MTA0Y2NjY2Q3ODEnLFxuICAgICAgICAgIGVuY3J5cHRlZFBydjpcbiAgICAgICAgICAgICd7XCJpdlwiOlwidmkwZFBlZi9SeDdrRy9wUnlTUWk2UT09XCIsXCJ2XCI6MSxcIml0ZXJcIjoxMDAwMCxcImtzXCI6MjU2LFwidHNcIjo2NCxcIm1vZGVcIjpcImNjbVwiLFwiYWRhdGFcIjpcIlwiLFwiY2lwaGVyXCI6XCJhZXNcIixcInNhbHRcIjpcIjllZmhRc2lFdlZzPVwiLFwiY3RcIjpcIkd3NmF0dmY2Z3hLenNqdGwzeHNlaXBPM3JBeHAxbUF6N1l1MWloRnNpNS9sZjJ2TVplZ0FwZ1p4K3B5SUxGUzlLS0xIYk5GM1U2V2dTWWRycjJ0NHZ6ZExzWGtIMVdJeGZIUytjZDJDNU41OXlBRFpEblBKQlQ2cHYvSVJ2YVllbFAwQ2szbklZUTJoU01tOG9wK1ZPV0MvU3pIZWg3c2xZRHF3RUhUR2FuMFdpZ2Z2azF5UmQ3Q0NKVGFFQW9tbmMvNGVGaTJOWTNYM2d0LzNvcHk5SUFna25ud1VGb2huOTZFV3BFUTBGNnBiekgvWjhWRjZnRitEVWNyckJ5QXhFeFVQbkhRWmlGazNZSFUvdlZWNEZ4QlUvbVZBRTh4QnNCbjV1bDVlNVNVTVBmYzdUQnVKV3Y0QkJ5VE5nOXhEU2hGLzkxWXgybmJmVW01ZDlRbU04bHBLZ3p6UXZjSzhQT0FQazg3Z1JDdUtuc0doNXZOUzBVcHBrSGMrb2NmelJRbEdBNmp6ZTdReXlRTzByTWo1THk4a1dqd2sydklTdktZSFlTMU5SN1ZVNTQ5VUlYbzdOWGphdHVuS1NjMytJcmVvUlVISXNoaWFMZzZobCtweENDdWMwcVE0M1YwbWRJZkNqVE44Z2tHV0xOazhSN3RBR1B6OWp5YXBRUGNQRUdIZ0V6MEFUSWk2eU1OV0NzaWJTMmVMaUUxdVZFSk9Ob000bGs2RlBsM1EyQ0hiVzJNZUVicWpZOGhiYXcxOG1OYjJ4U0JIL0Z3cGlpYWwrVHZpMmltcWduQ080WnBPOWJsbEtmdFpQY1F5MHN0TitlR0JsYjV1ZnlmbEtrRFNpQ2hIWXJvR2pFcG1pRmljZGRlNDhjSnN6RjUydUtObmYxcTY3ZkE5L1MyRkFIUWFiM0VYb2p4SDJHYmsra2tWMmgvVFlLRkZaU1dDM3ZpNGU4bU8rdmpNVWNSMEFkc2dQRnlFSXowU0NHdWJhM0NuVExOZEV1WndzYXVBZUhreDJ2VVRuUmdKUFZnTmVldVhtc1ZHNzZTeTJnZ0pIdWFsczBIajhVMlhkYTBxTzFSdUZmb0NXZnNzOXduNkhHUndQUGtoU0IvOG9OZ3VBcW1SVkdLa2Q4Wnd0M0l2clRkOWZrMC9yRkZESktHejdXeU5Ia1lnVW1OaUdjSXREMTJ2MGp4N0ZaNTJFSnpsM0F2MVJ5SlVRSzE4KzhFWVBoM1NHaVU5ZHQ3VlgwYUYwdW82Sm91S2hPZWxkVXZNUCtBdWdRejhmVWNsd1RRc2Jib1ZnMjdZeG8wRHlBVFZ3VGhXNWE1NlI2UWY1WmlRSmx1RnV6czV5OThycTBTNXEwNDZsRTZvM3ZWbUpwRWR3amVTQ0pvRVQ1Q0w0blRna1h5V3ZobTRlQjh1L2U2NmwzbzBxYmFTeDhxOVlZbVQ5RXBSY2w1VFA0VGhMQktFVFlkelZ2ZzRleGpRZmVrdE1hdGs1RXlVcEVJaFpQWGg1dlhwSlplc2RmTzlMSjh6VGFIQnNCakRQVTdjZE5nUU1iZWJwYXRhUmk4QTBlbDIvSUpYbCtFK29sZ0F6NXpDNGkyTzFRPT1cIn0nLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICc2NDI0YzM1M2VhZjc4ZDAwMDc2NmU5NTEwYjEyNWZiYScsXG4gICAgICAgICAgc291cmNlOiAnYml0Z28nLFxuICAgICAgICAgIHR5cGU6ICd0c3MnLFxuICAgICAgICAgIGNvbW1vbktleWNoYWluOlxuICAgICAgICAgICAgJzE5YmRmZTJhNGI0OThhMDU1MTEzODEyMzVhODg5MmQ1NDI2NzgwN2M0YTNmNjU0ZTMxMGI5MzhiOGI0MjRmZjRhZGVkYmU5MmY0YzE0NmRlNjQxYzY3NTA4YTk2MTMyNGM4NTA0Y2RmOGUwYzBhY2JiNjhkNjEwNGNjY2NkNzgxJyxcbiAgICAgICAgICB2ZXJpZmllZFZzc1Byb29mOiB0cnVlLFxuICAgICAgICAgIGlzQml0R286IHRydWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIHZhbGlkYXRpbmcgYSB3ZWxsIGZvcm1hdHRlZCBhZGRyZXNzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYWRkcmVzcyA9ICdVUUIwSHl0MWJUUmZJMFdLX1VMWnlLdnJ2UDBQUHRwVFFGaV9qS1hWWFg2S0ZPTWknO1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZEFkZHJlc3MoYWRkcmVzcykuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiB2YWxpZGF0aW5nIGFuIGluY29ycmVjdGx5IGZvcm1hdHRlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSAnd3JvbmdhZGRyZXNzJztcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gdmFsaWRhdGluZyBhIG5vbi1ib3VuY2VhYmxlIGFkZHJlc3MgZm9ybWF0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYWRkcmVzcyA9ICdVUUEwaTgtQ2RHbkZfRGhVSEhmOTJSMU9OSDZzSUE5dkxaX1dMY0NJaGZCQlgxYUQnO1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZEFkZHJlc3MoYWRkcmVzcykuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIHZhbGlkYXRpbmcgYWRkcmVzc2VzIHdpdGggbWVtb0lkcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3MxID0gJ0VRQjBIeXQxYlRSZkkwV0tfVUxaeUt2cnZQMFBQdHBUUUZpX2pLWFZYWDZLRkw3bj9tZW1vSWQ9MTIzJztcbiAgICAgIGNvbnN0IGFkZHJlc3MyID0gJ1VRQjBIeXQxYlRSZkkwV0tfVUxaeUt2cnZQMFBQdHBUUUZpX2pLWFZYWDZLRk9NaT9tZW1vSWQ9MTIzJztcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MxKS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgICBiYXNlY29pbi5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzMikuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSBmb3IgaXNXYWxsZXRBZGRyZXNzIHdpdGggdmFsaWQgYWRkcmVzcyBmb3IgaW5kZXggNCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG5ld0FkZHJlc3MgPSAnRVFCMEh5dDFiVFJmSTBXS19VTFp5S3ZydlAwUFB0cFRRRmlfaktYVlhYNktGTDduJztcbiAgICAgIGNvbnN0IGluZGV4ID0gNDtcblxuICAgICAgY29uc3QgcGFyYW1zID0geyBjb21tb25LZXljaGFpbiwgYWRkcmVzczogbmV3QWRkcmVzcywgaW5kZXgsIGtleWNoYWlucyB9O1xuICAgICAgKGF3YWl0IGJhc2Vjb2luLmlzV2FsbGV0QWRkcmVzcyhwYXJhbXMpKS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIGZvciBpc1dhbGxldEFkZHJlc3Mgd2l0aCB2YWxpZCBhZGRyZXNzYW5kIGluZGV4JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgbmV3QWRkcmVzcyA9ICdFUUIwSHl0MWJUUmZJMFdLX1VMWnlLdnJ2UDBQUHRwVFFGaV9qS1hWWFg2S0ZMN24/bWVtb0lkPTQnO1xuICAgICAgY29uc3QgaW5kZXggPSA0O1xuXG4gICAgICBjb25zdCBwYXJhbXMgPSB7IGNvbW1vbktleWNoYWluLCBhZGRyZXNzOiBuZXdBZGRyZXNzLCBpbmRleCwga2V5Y2hhaW5zIH07XG4gICAgICAoYXdhaXQgYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHBhcmFtcykpLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIGZvciBpc1dhbGxldEFkZHJlc3Mgd2l0aCB2YWxpZCBhZGRyZXNzIGZvciBpbmRleCA1IGFuZCBhZGRyZXNzIGlzIGZvciBhIGRpZmZlcmVudCBpbmRleCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHdyb25nQWRkcmVzc0ZvckluZGV4NSA9ICdFUUIwSHl0MWJUUmZJMFdLX1VMWnlLdnJ2UDBQUHRwVFFGaV9qS1hWWFg2S0ZMN24nO1xuICAgICAgY29uc3QgaW5kZXggPSA1O1xuXG4gICAgICBjb25zdCBwYXJhbXMgPSB7IGNvbW1vbktleWNoYWluLCBhZGRyZXNzOiB3cm9uZ0FkZHJlc3NGb3JJbmRleDUsIGluZGV4LCBrZXljaGFpbnMgfTtcbiAgICAgIChhd2FpdCBiYXNlY29pbi5pc1dhbGxldEFkZHJlc3MocGFyYW1zKSkuc2hvdWxkLmVxdWFsKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3IgZm9yIGlzV2FsbGV0QWRkcmVzcyB3aGVuIGtleWNoYWlucyBpcyBtaXNzaW5nJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYWRkcmVzcyA9ICdFUUIwSHl0MWJUUmZJMFdLX1VMWnlLdnJ2UDBQUHRwVFFGaV9qS1hWWFg2S0ZMN24nO1xuICAgICAgY29uc3QgaW5kZXggPSAwO1xuXG4gICAgICBjb25zdCBwYXJhbXMgPSB7IGNvbW1vbktleWNoYWluLCBhZGRyZXNzLCBpbmRleCB9O1xuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoYXN5bmMgKCkgPT4gYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHBhcmFtcykpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBmb3IgaXNXYWxsZXRBZGRyZXNzIHdoZW4gbmV3IGFkZHJlc3MgaXMgaW52YWxpZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHdyb25nQWRkcmVzcyA9ICdiYWRBZGRyZXNzJztcbiAgICAgIGNvbnN0IGluZGV4ID0gMDtcblxuICAgICAgY29uc3QgcGFyYW1zID0geyBjb21tb25LZXljaGFpbiwgYWRkcmVzczogd3JvbmdBZGRyZXNzLCBpbmRleCB9O1xuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoYXN5bmMgKCkgPT4gYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHBhcmFtcyksIHtcbiAgICAgICAgbWVzc2FnZTogYGludmFsaWQgYWRkcmVzczogJHt3cm9uZ0FkZHJlc3N9YCxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndXRpbCBjbGFzcyAnLCAoKSA9PiB7XG4gICAgbGV0IGNvbW1vbktleWNoYWluO1xuICAgIGxldCBkZXJpdmVkUHVibGljS2V5O1xuICAgIGJlZm9yZShhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb21tb25LZXljaGFpbiA9XG4gICAgICAgICcxOWJkZmUyYTRiNDk4YTA1NTExMzgxMjM1YTg4OTJkNTQyNjc4MDdjNGEzZjY1NGUzMTBiOTM4YjhiNDI0ZmY0YWRlZGJlOTJmNGMxNDZkZTY0MWM2NzUwOGE5NjEzMjRjODUwNGNkZjhlMGMwYWNiYjY4ZDYxMDRjY2NjZDc4MSc7XG4gICAgICBjb25zdCBNUEMgPSBhd2FpdCBFRERTQU1ldGhvZHMuZ2V0SW5pdGlhbGl6ZWRNcGNJbnN0YW5jZSgpO1xuICAgICAgZGVyaXZlZFB1YmxpY0tleSA9IE1QQy5kZXJpdmVVbmhhcmRlbmVkKGNvbW1vbktleWNoYWluLCAnbS8nICsgMCkuc2xpY2UoMCwgNjQpO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2dldEFkZHJlc3NGcm9tUHVibGljS2V5JywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ3Nob3VsZCBkZXJpdmUgYm91bmNlYWJsZSBhZGRyZXNzIGJ5IGRlZmF1bHQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIChhd2FpdCB1dGlscy5nZXRBZGRyZXNzRnJvbVB1YmxpY0tleShkZXJpdmVkUHVibGljS2V5KSkuc2hvdWxkLmVxdWFsKFxuICAgICAgICAgICdFUURWZXlVSk94M0FuWkdXTHRFMGwtVnh2N2M3dVRuRDhPWHRDRmhhTy1udmF2UTUnXG4gICAgICAgICk7XG4gICAgICAgIChhd2FpdCB1dGlscy5nZXRBZGRyZXNzRnJvbVB1YmxpY0tleShkZXJpdmVkUHVibGljS2V5LCB0cnVlKSkuc2hvdWxkLmVxdWFsKFxuICAgICAgICAgICdFUURWZXlVSk94M0FuWkdXTHRFMGwtVnh2N2M3dVRuRDhPWHRDRmhhTy1udmF2UTUnXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBkZXJpdmUgbm9uLWJvdW5jZWFibGUgYWRkcmVzcyB3aGVuIHJlcXVlc3RlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgKGF3YWl0IHV0aWxzLmdldEFkZHJlc3NGcm9tUHVibGljS2V5KGRlcml2ZWRQdWJsaWNLZXksIGZhbHNlKSkuc2hvdWxkLmVxdWFsKFxuICAgICAgICAgICdVUURWZXlVSk94M0FuWkdXTHRFMGwtVnh2N2M3dVRuRDhPWHRDRmhhTy1udmFxbjgnXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBkZXJpdmUgcmF3IGFkZHJlc3Mgd2hlbiByZXF1ZXN0ZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIChhd2FpdCB1dGlscy5nZXRBZGRyZXNzRnJvbVB1YmxpY0tleShkZXJpdmVkUHVibGljS2V5LCBmYWxzZSwgZmFsc2UpKS5zaG91bGQuZXF1YWwoXG4gICAgICAgICAgJzA6ZDU3YjI1MDkzYjFkYzA5ZDkxOTYyZWQxMzQ5N2U1NzFiZmI3M2JiOTM5YzNmMGU1ZWQwODU4NWEzYmU5ZWY2YSdcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGdldCB2YWxpZCB2ZXN0aW5nIGNvbnRyYWN0IGFkZHJlc3MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHZlc3RpbmdQYXJhbXMgPSB7XG4gICAgICAgICAgc3ViV2FsbGV0SWQ6IDY5ODk4MzE5MSxcbiAgICAgICAgICBwdWJsaWNLZXlIZXg6ICc3MTAxMzM5NDg2Mjk5NWNmYjUyN2RlYTljYWRjYzg0ZDY2ZDExOTdkMmE0NDU0NTc5YjkzYTA4MjIzZTRiMzA5JyxcbiAgICAgICAgICB2ZXN0aW5nU3RhcnRUaW1lOiAxNzYwOTk5MTY0LFxuICAgICAgICAgIHZlc3RpbmdUb3RhbER1cmF0aW9uOiA2MCAqIDYwICogMjQgKiAzMCxcbiAgICAgICAgICB1bmxvY2tQZXJpb2Q6IDYwICogNjAgKiAyNCxcbiAgICAgICAgICBjbGlmZkR1cmF0aW9uOiA2MCAqIDYwLFxuICAgICAgICAgIHZlc3RpbmdUb3RhbEFtb3VudDogQmlnSW50KCc0MDAwMDAwMDAnKSxcbiAgICAgICAgICB2ZXN0aW5nU2VuZGVyQWRkcmVzczogJzBRRE9FeXpDNktYaVZoMlJjbzJiYXBIOTZWbjZsYjlZV3hna1RWV3RxLTlDWEZ0cCcsXG4gICAgICAgICAgb3duZXJBZGRyZXNzOiAnMFFEQnJPZ2pRVGhiTjdlV0JIRXJSaHJKUUgzQXBlY0dEdHUzSzExTHVqam14NDlaJyxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgdmVzdGluZ0NvbnRyYWN0QWRkcmVzcyA9IGF3YWl0IHV0aWxzLmdldFZlc3RpbmdDb250cmFjdEFkZHJlc3ModmVzdGluZ1BhcmFtcyk7XG4gICAgICAgIHZlc3RpbmdDb250cmFjdEFkZHJlc3Muc2hvdWxkLmVxdWFsKCdFUUFqbWdNYndVM1dWS19wbjJnajFYQkdfTk12cmtvVDRlYXJ2c19DOVE2ZnMtU0UnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2dldEFkZHJlc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgnc2hvdWxkIHJldHVybiBhZGRyZXNzIGFzIHBlciBib3VuY2VhYmxlIGZsYWcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNob3VsZC5lcXVhbChcbiAgICAgICAgICB1dGlscy5nZXRBZGRyZXNzKCdVUUIwSHl0MWJUUmZJMFdLX1VMWnlLdnJ2UDBQUHRwVFFGaV9qS1hWWFg2S0ZPTWknLCBmYWxzZSksXG4gICAgICAgICAgJ1VRQjBIeXQxYlRSZkkwV0tfVUxaeUt2cnZQMFBQdHBUUUZpX2pLWFZYWDZLRk9NaSdcbiAgICAgICAgKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKFxuICAgICAgICAgIHV0aWxzLmdldEFkZHJlc3MoJ1VRQjBIeXQxYlRSZkkwV0tfVUxaeUt2cnZQMFBQdHBUUUZpX2pLWFZYWDZLRk9NaScsIHRydWUpLFxuICAgICAgICAgICdFUUIwSHl0MWJUUmZJMFdLX1VMWnlLdnJ2UDBQUHRwVFFGaV9qS1hWWFg2S0ZMN24nXG4gICAgICAgICk7XG4gICAgICAgIHNob3VsZC5lcXVhbChcbiAgICAgICAgICB1dGlscy5nZXRBZGRyZXNzKCdFUUIwSHl0MWJUUmZJMFdLX1VMWnlLdnJ2UDBQUHRwVFFGaV9qS1hWWFg2S0ZMN24nLCB0cnVlKSxcbiAgICAgICAgICAnRVFCMEh5dDFiVFJmSTBXS19VTFp5S3ZydlAwUFB0cFRRRmlfaktYVlhYNktGTDduJ1xuICAgICAgICApO1xuICAgICAgICBzaG91bGQuZXF1YWwoXG4gICAgICAgICAgdXRpbHMuZ2V0QWRkcmVzcygnRVFCMEh5dDFiVFJmSTBXS19VTFp5S3ZydlAwUFB0cFRRRmlfaktYVlhYNktGTDduJywgZmFsc2UpLFxuICAgICAgICAgICdVUUIwSHl0MWJUUmZJMFdLX1VMWnlLdnJ2UDBQUHRwVFFGaV9qS1hWWFg2S0ZPTWknXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgYmxvY2sgaGFzaCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNob3VsZC5lcXVhbCh1dGlscy5pc1ZhbGlkQmxvY2tJZCgnTVB1T3ZIZHUveit0Mmw4MllwWnRpSlFrOCtGVkttV3VLeGQ2dWJuMDlmST0nKSwgdHJ1ZSk7XG4gICAgICBzaG91bGQuZXF1YWwodXRpbHMuaXNWYWxpZEJsb2NrSWQoJ01QdU92SGR1L3ordDJsODJZcFp0aUpRazgrRlZLbVd1S3hkJyksIGZhbHNlKTtcbiAgICAgIHNob3VsZC5lcXVhbCh1dGlscy5pc1ZhbGlkQmxvY2tJZCgnJyksIGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgdHJhbnNhY3Rpb24gaWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBzaG91bGQuZXF1YWwodXRpbHMuaXNWYWxpZFRyYW5zYWN0aW9uSWQoJ3dsVGRET0FYd0pwOEVTUmZRQUVKUUluMFRjaV9TNW9MYlZLQll4RHR2cGs9JyksIHRydWUpO1xuICAgICAgc2hvdWxkLmVxdWFsKHV0aWxzLmlzVmFsaWRUcmFuc2FjdGlvbklkKCczc3lreDZSdWp5N1V0QndIUS9YNWtMZ3ZLRTBTS0xBK0FCaUNLaTdzWDhvPScpLCB0cnVlKTsgLy8gTm8gdXJsIGZyaWVuZGx5IHR4aWRcbiAgICAgIHNob3VsZC5lcXVhbCh1dGlscy5pc1ZhbGlkVHJhbnNhY3Rpb25JZCgnM3N5a3g2UnVqeTdVdEJ3SFFfWDVrTGd2S0UwU0tMQS1BQmlDS2k3c1g4bz0nKSwgdHJ1ZSk7IC8vIFVybCBmcmllbmRseSB0eGlkXG4gICAgICBzaG91bGQuZXF1YWwodXRpbHMuaXNWYWxpZFRyYW5zYWN0aW9uSWQoJ3dsVGRET0FYd0pwOEVTUmZRQUVKUUluMFRjaV9TNW9MYj0nKSwgZmFsc2UpO1xuICAgICAgc2hvdWxkLmVxdWFsKHV0aWxzLmlzVmFsaWRUcmFuc2FjdGlvbklkKCd3bFRkRE9BWHdKcDhFU1JmUUFFSlFJbjBUY2lfUzVvTGJWS0JZeER0YWZkc2FzZGFkc2Z2cGs9JyksIGZhbHNlKTtcbiAgICAgIHNob3VsZC5lcXVhbCh1dGlscy5pc1ZhbGlkVHJhbnNhY3Rpb25JZCgnJyksIGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUgdHJhbnNhY3Rpb24gaWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBpZCA9IGF3YWl0IHV0aWxzLmdldE1lc3NhZ2VIYXNoRnJvbURhdGEoXG4gICAgICAgICd0ZTZjY2tFQ0NnRUFBa29BQTdWMms0Vncxbmh4cjdYY0NCaldjRkZIS3FHd0NnbFBTUnVZQWtXaldpVFZBSUFBQVBiTGd2YTBHN3l0S3cveGVFOWEzRkhLMlJNOGZnT3BHdlRwUVJzZWVNZXIzZWZSS3NpUUFBRHhQaG5hUUZaV1lybFFBRFJxYkNVSUFRSURBZ0hnQkFVQWduSUFaMFVJd21rbmtNYVc3UWJvVGNxNDhGZloxTlQ1b01VajJWUE9CcjN6UG94cmlhYjRTZlY2NWk2SGQxSjJzRnN1VGNJV1VvYmNLWE1jSXlzK0pXa25BaE1Nd1N2V0JobVR6d1JBQ0FrQjRZZ0EwbkN1R3M4T05mYTdnUU1hemdvbzVWUTJBVUVwNlNOekFFaTBhMFNhb0JBSEhnblBKQlFRSi9tZW9Dd3pLNS9QYWpCU3h1SksyR2t2YTdObWxBTE5EczJJTUVXaTRaUmZJVjRWZUpwS0JoemhLak5sRmp1ejYwZythZVQ1Y05pNENVMU5HTHNyZXkvNEFBQUFHQUFjQmdFQjN3Y0FhR0lBSzJjWWRZQ3R4dEJhV0o5aGk3TitIVnplTXNQUXhMSFNxWW43YmZwT2NSeWgzTlpRQUFBQUFBQUFBQUFBQUFBQUFBQUFzV2dBMG5DdUdzOE9OZmE3Z1FNYXpnb281VlEyQVVFcDZTTnpBRWkwYTBTYW9CRUFGYk9NT3NCVzQyZ3RMRSt3eGRtL0RxNXZHV0hvWWxqcFZNVDl0djBuT0k1UTdtc29BQVlVV0dBQUFCN1pjRjdXaE1yTVZ5cEFBSjFCbllNVGlBQUFBQUFBQUFBQUVRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBRy9KaDZFZ1RCUllRQUFBQUFBQUFnQUFBQUFBQTRFNTJBUC9lQVluVmhKa29JSTRZVXJocExmcERGdDZtUktpa3RiRm5xcytRRkFXREFBYWNRMD1cXFxcJ1xuICAgICAgKTtcbiAgICAgIHNob3VsZC5lcXVhbChpZCwgJ1RzVmdOS1QwNWNkZTRRNTRzQytSRkM3blRvVHJIazlwcEdnRTVNMGpYdEU9Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGRlc2VyaWFsaXplIGEgY2VsbCB0byBnZXQgdGhlIGFkZHJlc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkYXRhMSA9ICd0ZTZjY2tFQkFRRUFKQUFBUTRBYUZVVGdVUS9rMmkrRGRBb29pYjB3TlZSRVpRMnorOFI5V1F2dkZOcFVKQkFSeUFnSyc7XG4gICAgICBjb25zdCByYXdBZGRyZXNzMSA9ICcwOmQwYWEyNzAyODg3ZjI2ZDE3YzFiYTA1MTQ0NGRlOTgxYWFhMjIzMjg2ZDlmZGUyM2VhYzg1Zjc4YTZkMmExMjAnO1xuICAgICAgc2hvdWxkLmVxdWFsKHV0aWxzLmdldFJhd1dhbGxldEFkZHJlc3NGcm9tQ2VsbChkYXRhMSksIHJhd0FkZHJlc3MxKTtcblxuICAgICAgY29uc3QgZGF0YTIgPSAndGU2Y2NrRUJBUUVBSkFBQVE1Lzc1dzAzNHFQOVQwWlhZM211TTVvdXZGbE5vTlBreTJZVXMrSGN4ZDhvdGpEa0lPUHEnO1xuICAgICAgY29uc3QgcmF3QWRkcmVzczIgPSAnLTE6ZGYzODY5YmYxNTFmZWE3YTMyYmIxYmNkNzE5Y2QxNzVlMmNhNmQwNjlmMjY1YjMwYTU5ZjBlZTYyZWY5NDViMSc7XG4gICAgICBzaG91bGQuZXF1YWwodXRpbHMuZ2V0UmF3V2FsbGV0QWRkcmVzc0Zyb21DZWxsKGRhdGEyKSwgcmF3QWRkcmVzczIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZ2V0QWRkcmVzc0JvYycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgY29ycmVjdCBCT0MgZm9yIGEgZnJpZW5kbHkgYWRkcmVzcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHV0aWxzLmdldEFkZHJlc3NCb2ModGVzdERhdGEuZ2V0TWVtYmVyU3RhY2tGaXh0dXJlLmZyaWVuZGx5QWRkcmVzcyk7XG4gICAgICByZXN1bHQuc2hvdWxkLmVxdWFsKHRlc3REYXRhLmdldE1lbWJlclN0YWNrRml4dHVyZS5ib2MpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIGNvcnJlY3QgQk9DIGZvciBhIHJhdyBhZGRyZXNzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdXRpbHMuZ2V0QWRkcmVzc0JvYyh0ZXN0RGF0YS5nZXRNZW1iZXJTdGFja0ZpeHR1cmUucmF3QWRkcmVzcyk7XG4gICAgICByZXN1bHQuc2hvdWxkLmVxdWFsKHRlc3REYXRhLmdldE1lbWJlclN0YWNrRml4dHVyZS5ib2MpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnVG9uIHJlY292ZXIgLSBOb24tQml0R28gYW5kIFVuc2lnbmVkIFN3ZWVwIFRyYW5zYWN0aW9ucycsIGZ1bmN0aW9uICgpIHtcbiAgICBsZXQgc2FuZGJveDogc2lub24uU2lub25TYW5kYm94O1xuICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgc2FuZGJveCA9IHNpbm9uLmNyZWF0ZVNhbmRib3goKTsgLy8gQ3JlYXRlIGEgbmV3IHNhbmRib3ggZm9yIGVhY2ggdGVzdFxuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICAgIHNhbmRib3gucmVzdG9yZSgpOyAvLyBSZXN0b3JlIGFsbCBzdHVicyBhZnRlciBlYWNoIHRlc3RcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc3VjY2Vzc2Z1bGx5IHJlY292ZXIgZnVuZHMgZm9yIG5vbi1CaXRHbyByZWNvdmVyeScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIERlZmluZSByZWNvdmVyeSBwYXJhbWV0ZXJzXG4gICAgICBjb25zdCByZWNvdmVyeVBhcmFtcyA9IHtcbiAgICAgICAgYml0Z29LZXk6XG4gICAgICAgICAgJzFiYWFmYTBkNjIxNzRiZjBjNzhmMzI1NjMxODYxM2ZmYzQ0YjZkZDU0YWIxYTYzYzIxODUyMzJmOTJlZGU5ZGFlMWIyODE4ZGJlYjUyYTgyMTVmZDU2ZjVhNWYyYTlmOTRjMDc5Y2U4OWU0ZGMzYjFjZTZlZDZlODRjZTcxODU3JyxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogJ1VRQkwyaWRDWFI0QVRkUXRhTmE0VnBvZmNwU3h1eElnSEg3X3NsT1pmZE9YU2FkSicsXG4gICAgICAgIGFwaUtleTogJ2RiMjU1NDY0MWM2MWU2MGE5NzljYzZjMDA1M2YyZWM5MWRhOWIxM2U3MWQyODc3NjhjOTNjMmZiNTU2YmU1M2InLFxuICAgICAgICB1c2VyS2V5OlxuICAgICAgICAgICcxYmFhZmEwZDYyMTc0YmYwYzc4ZjMyNTYzMTg2MTNmZmM0NGI2ZGQ1NGFiMWE2M2MyMTg1MjMyZjkyZWRlOWRhZTFiMjgxOGRiZWI1MmE4MjE1ZmQ1NmY1YTVmMmE5Zjk0YzA3OWNlODllNGRjM2IxY2U2ZWQ2ZTg0Y2U3MTg1NycsXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2U6ICdkdW1teVBhc3NwaHJhc2UnLFxuICAgICAgfTtcblxuICAgICAgLy8gTW9jayB0aGUgZXhwZWN0ZWQgcmVzdWx0IGZvciBub24tQml0R28gcmVjb3ZlcnlcbiAgICAgIGNvbnN0IG1vY2tSZXN1bHQgPSB7XG4gICAgICAgIHNlcmlhbGl6ZWRUeDpcbiAgICAgICAgICAndGU2Y2NrRUJBZ0VBcWdBQjRZZ0FsN1JPaExvOEFKdW9XdEd0Y0swMFB1VXBZM1lrUURqOS8yU25NdnVuTHBJRmJsODk2d2xNdjdmc1VPYytzTUh6RWw4cTN2WDVibTZub0hnaW5QSktCUnpuT3JPN3ZlSXBISUVwaVJMYkg3L2VOZHBTc1JodkwyNjBKUC9mRDB2QUlVMU5HTHRBQkRxQUFBQUFDQUFjQVFCb1FnQi9PZWlOZExlYUw3K08wNFh1dWp1Q2hTR3JSZDdabkZsMmZDZDlGWGR6QXlET0pZQ3dBQUFBQUFBQUFBQUFBQUFBQUZ3WEd0OD0nLFxuICAgICAgICBzY2FuSW5kZXg6IDAsXG4gICAgICAgIGNvaW46ICd0dG9uJyxcbiAgICAgIH07XG5cbiAgICAgIC8vIFN0dWIgdGhlIHJlY292ZXIgZnVuY3Rpb24gdG8gcmV0dXJuIHRoZSBtb2NrZWQgcmVzdWx0XG4gICAgICBjb25zdCBzYW5kYm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuICAgICAgc2FuZGJveC5zdHViKGJhc2Vjb2luLCAncmVjb3ZlcicpLnJlc29sdmVzKG1vY2tSZXN1bHQpO1xuXG4gICAgICAvLyBDYWxsIHRoZSByZWNvdmVyIGZ1bmN0aW9uXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHJlY292ZXJ5UGFyYW1zKTtcblxuICAgICAgLy8gVmFsaWRhdGUgdGhlIHJlc3VsdFxuICAgICAgcmVzdWx0LnNlcmlhbGl6ZWRUeC5zaG91bGQuZXF1YWwoXG4gICAgICAgICd0ZTZjY2tFQkFnRUFxZ0FCNFlnQWw3Uk9oTG84QUp1b1d0R3RjSzAwUHVVcFkzWWtRRGo5LzJTbk12dW5McElGYmw4OTZ3bE12N2ZzVU9jK3NNSHpFbDhxM3ZYNWJtNm5vSGdpblBKS0JSem5Pck83dmVJcEhJRXBpUkxiSDcvZU5kcFNzUmh2TDI2MEpQL2ZEMHZBSVUxTkdMdEFCRHFBQUFBQUNBQWNBUUJvUWdCL09laU5kTGVhTDcrTzA0WHV1anVDaFNHclJkN1puRmwyZkNkOUZYZHpBeURPSllDd0FBQUFBQUFBQUFBQUFBQUFBRndYR3Q4PSdcbiAgICAgICk7XG4gICAgICByZXN1bHQuc2NhbkluZGV4LnNob3VsZC5lcXVhbCgwKTtcbiAgICAgIHJlc3VsdC5jb2luLnNob3VsZC5lcXVhbCgndHRvbicpO1xuICAgICAgc2FuZGJveC5yZXN0b3JlKCk7IC8vIFJlc3RvcmUgdGhlIHN0dWJiZWQgbWV0aG9kXG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHN1Y2Nlc3NmdWxseSByZWNvdmVyIGZ1bmRzIHVzaW5nIHNlbmRlckpldHRvbkFkZHJlc3MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZWNvdmVyeVBhcmFtcyA9IHtcbiAgICAgICAgYml0Z29LZXk6XG4gICAgICAgICAgJ2UzMWIxNTgwNDAwZGQ0Zjk2ZThjNjI4MWNmYjgzZTI4YWEyNWZjZjhmYjgzMTk5NmE0MDE3NmEzZTMwODc4YzgwZjM2NmZmNjQ2MzU2N2RiZWI3YWE3ZmFlZWI5ZjBmNmQxZmMwYTA5MWVjOTkxOGU4MWFkMmMzNGMzNDVmNGQwJyxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogJ1VRQkwyaWRDWFI0QVRkUXRhTmE0VnBvZmNwU3h1eElnSEg3X3NsT1pmZE9YU2FkSicsXG4gICAgICAgIGFwaUtleTogJ2RiMjU1NDY0MWM2MWU2MGE5NzljYzZjMDA1M2YyZWM5MWRhOWIxM2U3MWQyODc3NjhjOTNjMmZiNTU2YmU1M2InLFxuICAgICAgICB1c2VyS2V5OlxuICAgICAgICAgICd7XCJpdlwiOlwiLzlDYTE4MG9td0VZS2lNZ1VKOTBKUT09XCIsXCJ2XCI6MSxcIml0ZXJcIjoxMDAwMCxcImtzXCI6MjU2LFwidHNcIjo2NCxcIm1vZGVcIjpcImNjbVwiLFwiYWRhdGFcIjpcIlwiLFwiY2lwaGVyXCI6XCJhZXNcIixcInNhbHRcIjpcImlwUEZxZzZxSEhZPVwiLFwiY3RcIjpcImVGNlpzdHZxb2JMV0IvVWZqcG1zT2N6NStiZ3ZrTWhxK1poK2Y2VERJYSsrSmtQWVJxNmhyMkxoYmlkQkJDTllIQ2dhaGkzbmQvRmRzRkxRMVVrYU45dDQwbUhiVWRsU1RBNDJUaEg1Rkk5VW0xYUFDbTk2MUV1NWIwTXA3bzZVM3p1VmxhRmF5NlQrL25VV2xPS2p2Ky81TVl3ZnhBL0V6TWQ2eURpZTdxQUlyeUxDUEVJdlJ1dXNIdXB6Y0pXZk4yV0dreHc0RWhHc1NRdnM2MitQQk9DSlVlT0NUaHYySHBzc0pWOWdiNm1qNGxZVlRxdEVheTdHNlZGTmIrVDZPSURVOUhOcmR4Vis1RDF6elY1c0hOV3FEZ2hGMDN3OWFkd3hnVENQU2VaeXdaUERnQnJNL05xSEl0KzhDUGQ4NHdnZXk2MU16NThicjA4emwyaWtrc0RGNVBCOERKekVlbnM2QWJZMGdvc3F6QVBUdU9teTdJUzl2UDlsZkNTYUhEb1M2NmhEL0kweWgxYzZ0aDRnUTFkeml3eCtobkJLTmdxcGVrSno2UDBpc25CM3VyaFpJbnBjMFJ6S2g2UjJqcngraEtOci8yZG9rM2RJd2diWFdHcTdOQW0xbVNSRUVzL0NoVlZlVU1tZVU5VUZtd2hPVGJSSzhDTFlIcUFxeWRSTENleE5tV2hUT1BLeTNXcVM4eUc2V2tIcVNHYjlGR0x5QlJjbVFGSUJwaWhWOFhsNFcyZEI2QVg3SHNJMEYyZFlBQlgwZHJMaXVqMk43bU5yYVJHenhzNWpUMGx6d2pYbXk1Z215YXIyM0RxYTJlQlZPeUdkSzNETDhqWXZnWDBtSjU4L3BLa29ncnh6TXJQa0pvMmErZ1A0T1I3Y0RjTDZUeHJjd25WaVlPT0dQOU9hUVpmY0tLYUFobUpaSkd3enlXemp2eUVJTGtDa3NFU3V5K2M1M3RkTEFrdTUxajJLaVYzMlJnMHRETzNVTmp6ZTBxVGozdCtZZm1UTjFHdWlOanhGeDhkTmJYMnl4ell4QitNemVzdU5aQU11bndWSHJxSnBBaW96UnFwRTc5UjdLUkx3N3FoQmhtNVVlejYwRkJ0bUFmMGtRc0dkaUlsRXdDeVRjQll5QURsWkUrb2pEOCt4MnVpSkJCSXpkMHM3bjlaWTNhQ1l1VFZFWUdmSTlFTUdzOVd6WGNHZVR1Mnh3Mk91YlZIWWt2YUJic3dsckppaElxUkgrY2UvOSt3RGVkY2pic2JvMk1PRHNDSjNzSzlLTDZKak1XUHZoU3dSNmNNYnpEaldyRm1SeXVla21mU1RIdWhRRWRCQUsxMU40My9ab1lZREJNd0J3eGpNd3dBNGhMdUJxamVoWVEyTjBONG82ZnBiR1NBMStnMElKcWtRdmgycW44dGVZU2o2N20xdkdsRUp1ODUyVWpKWjR0ZHQ5clNqUTVUYzIzWUsrWEQya0tyWGJCN3dwcnJhYTlQUWpucnJJVDI1eVgrbDVnN1cwRWNHVGxBY3Y1LzVGQzZmNis3UjhLNVdsTEdycDNZTS8rNTcwZ0JTMnFiSWhsMkp6ZndnVHFqZnloNVpcIn0nLFxuICAgICAgICBiYWNrdXBLZXk6XG4gICAgICAgICAgJ3tcIml2XCI6XCJOWTY1Zm1lMnNNZVlkdTc3U1cvYUx3PT1cIixcInZcIjoxLFwiaXRlclwiOjEwMDAwLFwia3NcIjoyNTYsXCJ0c1wiOjY0LFwibW9kZVwiOlwiY2NtXCIsXCJhZGF0YVwiOlwiXCIsXCJjaXBoZXJcIjpcImFlc1wiLFwic2FsdFwiOlwiMVNFcm1vZm1WN3M9XCIsXCJjdFwiOlwiMjh6UUc3eEEyekZ6QUZ5TkpRZm5JUHZvdTEyUndWUHUzanV6bzJjSURhcmV5Zk1rSVhwMVFEYm82bVNCZnpsSmZPTGdZQW4waVFIOHVDZ25tWUNONENiSzJJZk91a01tUUhHYTRsSE1HVVhyTDFybk5Pc1Vaa2g4WU1jTU12cjdxb0NSamFLTFF2UlVXZXFHdDEvVENvUk9vSHdSODhjdFZoRUt3a2hwUW9JWTBUQmVMZHZsdUdWQjdwRkFUdEVLZ29seVFhaXpaOFlPRnZqUW45QUdoVmxPclJyalJ3ekhYcWl1N3lXOGd1TDZmMEI3WmN6dkZnTGRDVEZWTml5UVFkcjZGbzFNaTRHUy93UktiV2FrRXg3TGt0bDNrdmE4OEJYQVJlOCt1bmRUWjBIMk1ibXpNU3I1ekJZcGZoVlhUTy9heHR0a3RMMkFXcU15OGxSODVZN3RWcDMwN1ZVQThYTlkzbmVUYlR4dVNxbSt4cmxCL1IwbkdGRXZSZmlrR3NrNEtLSE9RNkhGbmVOUmRoai9rNmR4RTJWeUg5SXdRNmorTHhqbXMrcGcxeWI1NmlCbkdXTTFzVTBiZEthSkZUUlpHZGlGLy9sUWFLVVZQY0gyUmVOSnNSSmFVOGdvNWcxSEJ1T0hlTXFkbmxCN3VLMk1RS05QQ1JiM3kwWkZReDh5Z2lkT2FBRjZhaUpwejNMZXduWGhzdEQxeTlsWjB5WTlxWEltQjRsRkNyTXJtQm5IUGpFeW16bXJLK3BjaGQ0ZEJKSHRKaXF3bmd4cXBMNmwrYWE2OXhHZXlXRHNWbU1rbFpWUHdkUzVsKzVTVnlnUUdGNU0xczFJN1JmYlRXYjdXbEhGRkN2MEMxSi90cEtUM0J6aUdFZlA1VmowYXFlcWljZ21UUkZ3dmhSMUhpTm1HdkJBTkhNL1B2U3Y1K2N5Umo4RzdFSG1UZXVIZWdoTzJoOVp3b1piaWhuU215Yi9uY1NNOU1neHJTUjRYejdHMzNobmJ1amZIVjRJcEJHL3ZXVHBKVUtJMTFMZ3dyNzFVMmNWQ245V0ErVFk5Q1hzR2tmZU9RYmJYbmdvUHQ0cE9oaWtKS1FZZzlyT3ZnYVIraFpBT1NJdGs2cFdYb3pBREQ4c1NmczdSNituL3dsa0V2dVBJMWNmY2ltYkhMUTZvSDlrVGtEVS9MYk96bXRERGQ4TVlaVWJxdnB5RVM3YkZ1am13NnRjMVpJQkxEc1NXRDJyNHNpdjBLUGVWcjVXdW9KU1l3NlFSZHVBcnlPMU5EdzRTazFhbHlwZ09YeEphcGNYZ3F3aTF2OUhkUnpHMUEwSVVMRFp0eUVjSGpVQkZXM3ZZcUh4VmMvai96MmhuQUMvU2J0UmNDY1pLZ0RlclROTGJQdzNpVFFRZkxpdytMUGtlWmRPNFVVd3NJbWFQM3l3YjExMmllbGpXSm9VdHVZQVlDRW56NWs5c1AzUGZDRGRnU2I1QlJKWklhRGs3aTN2V05YVzF5ZExOZVh6UllwbXI0dnlNa0dFN2FnTC8rSTVTWmg1RVZLL0NZY0FYZ1kyTXAvVmZaV21lTWJGVlBYUzg5eExBd1duUVE9PVwifScsXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2U6ICdHaGdoamZidmRrbW4hMjM0JyxcbiAgICAgICAgc2VuZGVySmV0dG9uQWRkcmVzczogJ1VRQkwyaWRDWFI0QVRkUXRhTmE0VnBvZmNwU3h1eElnSEg3X3NsT1pmZE9YU2FkSicsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBtb2NrUHJvdmlkZXIgPSB7XG4gICAgICAgIGdldEJhbGFuY2U6IHNhbmRib3guc3R1YigpLnJlc29sdmVzKCcxMDAwMDAwMDAwJyksXG4gICAgICAgIGdldEVzdGltYXRlRmVlOiBzYW5kYm94LnN0dWIoKS5yZXNvbHZlcyh7XG4gICAgICAgICAgc291cmNlX2ZlZXM6IHtcbiAgICAgICAgICAgIGluX2Z3ZF9mZWU6IDEwMDAsXG4gICAgICAgICAgICBzdG9yYWdlX2ZlZTogMTAwMCxcbiAgICAgICAgICAgIGdhc19mZWU6IDEwMDAsXG4gICAgICAgICAgICBmd2RfZmVlOiAxMDAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgICBjYWxsOiBzYW5kYm94LnN0dWIoKS5jYWxsc0Zha2UoKGFkZHJlc3MsIG1ldGhvZCwgcGFyYW1zKSA9PiB7XG4gICAgICAgICAgaWYgKG1ldGhvZCA9PT0gJ2dldF93YWxsZXRfZGF0YScpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe1xuICAgICAgICAgICAgICBzdGFjazogW1xuICAgICAgICAgICAgICAgIFsnbnVtJywgJzUwMDAwMDAwMDAnXSxcbiAgICAgICAgICAgICAgICBbJ251bScsICcwJ10sXG4gICAgICAgICAgICAgICAgWydjZWxsJywgeyBieXRlczogJycgfV0sXG4gICAgICAgICAgICAgICAgWydjZWxsJywgeyBieXRlczogJycgfV0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7IHN0YWNrOiBbXSB9KTtcbiAgICAgICAgfSksXG4gICAgICAgIHNlbmQ6IHNhbmRib3guc3R1YigpLmNhbGxzRmFrZSgobWV0aG9kLCBwYXJhbXMpID0+IHtcbiAgICAgICAgICBpZiAobWV0aG9kID09PSAncnVuR2V0TWV0aG9kJykge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgICAgICAgIGdhc191c2VkOiAwLFxuICAgICAgICAgICAgICBzdGFjazogW1snbnVtJywgJzAnXV0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG1ldGhvZCA9PT0gJ3NlbmRCb2MnKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgb2s6IHRydWUgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xuICAgICAgICB9KSxcbiAgICAgIH07XG5cbiAgICAgIHNhbmRib3guc3R1YihUb253ZWIsICdIdHRwUHJvdmlkZXInKS5yZXR1cm5zKG1vY2tQcm92aWRlcik7XG5cbiAgICAgIGNvbnN0IGRlY3J5cHRTdHViID0gc2FuZGJveC5zdHViKGJpdGdvLCAnZGVjcnlwdCcpO1xuICAgICAgZGVjcnlwdFN0dWIub25GaXJzdENhbGwoKS5yZXNvbHZlcyhKU09OLnN0cmluZ2lmeSh7IGR1bW15OiAndXNlclNpZ25pbmdNYXRlcmlhbCcgfSkpO1xuICAgICAgZGVjcnlwdFN0dWIub25TZWNvbmRDYWxsKCkucmVzb2x2ZXMoSlNPTi5zdHJpbmdpZnkoeyBkdW1teTogJ2JhY2t1cFNpZ25pbmdNYXRlcmlhbCcgfSkpO1xuXG4gICAgICBzYW5kYm94XG4gICAgICAgIC5zdHViKEVERFNBTWV0aG9kcywgJ2dldFRTU1NpZ25hdHVyZScpXG4gICAgICAgIC5yZXNvbHZlcyhcbiAgICAgICAgICBCdWZmZXIuZnJvbShcbiAgICAgICAgICAgICcxYmFhZmEwZDYyMTc0YmYwYzc4ZjMyNTYzMTg2MTNmZmM0NGI2ZGQ1NGFiMWE2M2MyMTg1MjMyZjkyZWRlOWRhJyArXG4gICAgICAgICAgICAgICdlMWIyODE4ZGJlYjUyYTgyMTVmZDU2ZjVhNWYyYTlmOTRjMDc5Y2U4OWU0ZGMzYjFjZTZlZDZlODRjZTcxODU3JyxcbiAgICAgICAgICAgICdoZXgnXG4gICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHJlY292ZXJ5UGFyYW1zKTtcblxuICAgICAgcmVzdWx0LnNob3VsZC5oYXZlLnByb3BlcnR5KCdzZXJpYWxpemVkVHgnKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnc2NhbkluZGV4Jyk7XG4gICAgICByZXN1bHQuc2NhbkluZGV4LnNob3VsZC5lcXVhbCgwKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIHVuc2lnbmVkIHN3ZWVwIHRyYW5zYWN0aW9uIGlmIHVzZXJLZXkgYW5kIGJhY2t1cEtleSBhcmUgbWlzc2luZycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIERlZmluZSByZWNvdmVyeSBwYXJhbWV0ZXJzXG4gICAgICBjb25zdCByZWNvdmVyeVBhcmFtcyA9IHtcbiAgICAgICAgYml0Z29LZXk6XG4gICAgICAgICAgJzFiYWFmYTBkNjIxNzRiZjBjNzhmMzI1NjMxODYxM2ZmYzQ0YjZkZDU0YWIxYTYzYzIxODUyMzJmOTJlZGU5ZGFlMWIyODE4ZGJlYjUyYTgyMTVmZDU2ZjVhNWYyYTlmOTRjMDc5Y2U4OWU0ZGMzYjFjZTZlZDZlODRjZTcxODU3JyxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogJ1VRQkwyaWRDWFI0QVRkUXRhTmE0VnBvZmNwU3h1eElnSEg3X3NsT1pmZE9YU2FkSicsXG4gICAgICAgIGFwaUtleTogJ2RiMjU1NDY0MWM2MWU2MGE5NzljYzZjMDA1M2YyZWM5MWRhOWIxM2U3MWQyODc3NjhjOTNjMmZiNTU2YmU1M2InLFxuICAgICAgfTtcblxuICAgICAgLy8gTW9jayB0aGUgZXhwZWN0ZWQgcmVzdWx0IGZvciB1bnNpZ25lZCBzd2VlcCB0cmFuc2FjdGlvblxuICAgICAgY29uc3QgbW9ja1Vuc2lnbmVkVHggPSB7XG4gICAgICAgIHNlcmlhbGl6ZWRUeDpcbiAgICAgICAgICAndGU2Y2NrRUJBZ0VBcWdBQjRZZ0FsN1JPaExvOEFKdW9XdEd0Y0swMFB1VXBZM1lrUURqOS8yU25NdnVuTHBJRmJsODk2d2xNdjdmc1VPYytzTUh6RWw4cTN2WDVibTZub0hnaW5QSktCUnpuT3JPN3ZlSXBISUVwaVJMYkg3L2VOZHBTc1JodkwyNjBKUC9mRDB2QUlVMU5HTHRBQkRxQUFBQUFDQUFjQVFCb1FnQi9PZWlOZExlYUw3K08wNFh1dWp1Q2hTR3JSZDdabkZsMmZDZDlGWGR6QXlET0pZQ3dBQUFBQUFBQUFBQUFBQUFBQUZ3WEd0OD0nLFxuICAgICAgICBzY2FuSW5kZXg6IDAsXG4gICAgICAgIGNvaW46ICd0dG9uJyxcbiAgICAgICAgc2lnbmFibGVIZXg6ICdkZDk4ZWI1YTM3MDBjMDIwMzIzNzA5NWNhMWMwZDUyODhiYzBkNjUwYTliNTlmN2I4MWJhYzU1MmY3NjEzN2RmJyxcbiAgICAgICAgZGVyaXZhdGlvblBhdGg6ICdtLzAnLFxuICAgICAgICBwYXJzZWRUeDoge1xuICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhZGRyZXNzOiAnVVFCTDJpZENYUjRBVGRRdGFOYTRWcG9mY3BTeHV4SWdISDdfc2xPWmZkT1hTYWRKJyxcbiAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcxMDAwMDAwMDAwJyxcbiAgICAgICAgICAgICAgdmFsdWU6IDEwMDAwMDAwMDAsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhZGRyZXNzOiAnVVFCTDJpZENYUjRBVGRRdGFOYTRWcG9mY3BTeHV4SWdISDdfc2xPWmZkT1hTYWRKJyxcbiAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICc5OTkwMDAwMDAnLFxuICAgICAgICAgICAgICBjb2luTmFtZTogJ3R0b24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHNwZW5kQW1vdW50OiA5OTkwMDAwMDAsXG4gICAgICAgICAgdHlwZTogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICBmZWU6IDEwMDAwMDAsXG4gICAgICAgICAgZmVlU3RyaW5nOiAnMTAwMDAwMCcsXG4gICAgICAgIH0sXG4gICAgICAgIGNvaW5TcGVjaWZpYzoge1xuICAgICAgICAgIGNvbW1vbktleWNoYWluOlxuICAgICAgICAgICAgJzFiYWFmYTBkNjIxNzRiZjBjNzhmMzI1NjMxODYxM2ZmYzQ0YjZkZDU0YWIxYTYzYzIxODUyMzJmOTJlZGU5ZGFlMWIyODE4ZGJlYjUyYTgyMTVmZDU2ZjVhNWYyYTlmOTRjMDc5Y2U4OWU0ZGMzYjFjZTZlZDZlODRjZTcxODU3JyxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1vY2tUeFJlcXVlc3QgPSB7XG4gICAgICAgIHRyYW5zYWN0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHVuc2lnbmVkVHg6IG1vY2tVbnNpZ25lZFR4LFxuICAgICAgICAgICAgc2lnbmF0dXJlU2hhcmVzOiBbXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICB3YWxsZXRDb2luOiAndG9uJyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1vY2tUeFJlcXVlc3RzID0ge1xuICAgICAgICB0eFJlcXVlc3RzOiBbbW9ja1R4UmVxdWVzdF0sXG4gICAgICB9O1xuXG4gICAgICAvLyBTdHViIHRoZSByZWNvdmVyIGZ1bmN0aW9uIHRvIHJldHVybiB0aGUgbW9ja2VkIHVuc2lnbmVkIHN3ZWVwIHRyYW5zYWN0aW9uXG4gICAgICBjb25zdCBzYW5kYm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuXG4gICAgICBzYW5kYm94LnN0dWIoYmFzZWNvaW4sICdyZWNvdmVyJykucmVzb2x2ZXMobW9ja1R4UmVxdWVzdHMpO1xuXG4gICAgICAvLyBDYWxsIHRoZSByZWNvdmVyIGZ1bmN0aW9uXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHJlY292ZXJ5UGFyYW1zKTtcblxuICAgICAgLy8gVmFsaWRhdGUgdGhlIHJlc3VsdFxuICAgICAgcmVzdWx0LnNob3VsZC5oYXZlLnByb3BlcnR5KCd0eFJlcXVlc3RzJyk7XG4gICAgICByZXN1bHQudHhSZXF1ZXN0c1swXS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndHJhbnNhY3Rpb25zJyk7XG4gICAgICByZXN1bHQudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0uc2hvdWxkLmhhdmUucHJvcGVydHkoJ3Vuc2lnbmVkVHgnKTtcbiAgICAgIHJlc3VsdC50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnNob3VsZC5lcXVhbChtb2NrVW5zaWduZWRUeCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRha2UgT1ZDIG91dHB1dCBhbmQgZ2VuZXJhdGUgYSBzaWduZWQgc3dlZXAgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBEZWZpbmUgdGhlIHBhcmFtZXRlcnMgKG1vY2sgT1ZDIHJlc3BvbnNlKVxuICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICBvdmNSZXNwb25zZToge1xuICAgICAgICAgIHNlcmlhbGl6ZWRUeDpcbiAgICAgICAgICAgICd0ZTZjY2tFQkFnRUFxZ0FCNFlnQWw3Uk9oTG84QUp1b1d0R3RjSzAwUHVVcFkzWWtRRGo5LzJTbk12dW5McElGYmw4OTZ3bE12N2ZzVU9jK3NNSHpFbDhxM3ZYNWJtNm5vSGdpblBKS0JSem5Pck83dmVJcEhJRXBpUkxiSDcvZU5kcFNzUmh2TDI2MEpQL2ZEMHZBSVUxTkdMdEFCRHFBQUFBQUNBQWNBUUJvUWdCL09laU5kTGVhTDcrTzA0WHV1anVDaFNHclJkN1puRmwyZkNkOUZYZHpBeURPSllDd0FBQUFBQUFBQUFBQUFBQUFBRndYR3Q4PScsXG4gICAgICAgICAgc2NhbkluZGV4OiAwLFxuICAgICAgICAgIGxhc3RTY2FuSW5kZXg6IDAsXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICAvLyBNb2NrIHRoZSBleHBlY3RlZCByZXN1bHQgZm9yIHRoZSBzaWduZWQgc3dlZXAgdHJhbnNhY3Rpb25cbiAgICAgIGNvbnN0IG1vY2tTaWduZWRTd2VlcFR4biA9IHtcbiAgICAgICAgdHJhbnNhY3Rpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2VyaWFsaXplZFR4OlxuICAgICAgICAgICAgICAndGU2Y2NrRUJBZ0VBcWdBQjRZZ0FsN1JPaExvOEFKdW9XdEd0Y0swMFB1VXBZM1lrUURqOS8yU25NdnVuTHBJRmJsODk2d2xNdjdmc1VPYytzTUh6RWw4cTN2WDVibTZub0hnaW5QSktCUnpuT3JPN3ZlSXBISUVwaVJMYkg3L2VOZHBTc1JodkwyNjBKUC9mRDB2QUlVMU5HTHRBQkRxQUFBQUFDQUFjQVFCb1FnQi9PZWlOZExlYUw3K08wNFh1dWp1Q2hTR3JSZDdabkZsMmZDZDlGWGR6QXlET0pZQ3dBQUFBQUFBQUFBQUFBQUFBQUZ3WEd0OD0nLFxuICAgICAgICAgICAgc2NhbkluZGV4OiAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGxhc3RTY2FuSW5kZXg6IDAsXG4gICAgICB9O1xuXG4gICAgICAvLyBTdHViIHRoZSBjcmVhdGVCcm9hZGNhc3RhYmxlU3dlZXBUcmFuc2FjdGlvbiBmdW5jdGlvbiB0byByZXR1cm4gdGhlIG1vY2tlZCByZXN1bHRcbiAgICAgIHNhbmRib3guc3R1YihiYXNlY29pbiwgJ2NyZWF0ZUJyb2FkY2FzdGFibGVTd2VlcFRyYW5zYWN0aW9uJykucmVzb2x2ZXMobW9ja1NpZ25lZFN3ZWVwVHhuKTtcblxuICAgICAgLy8gQ2FsbCB0aGUgY3JlYXRlQnJvYWRjYXN0YWJsZVN3ZWVwVHJhbnNhY3Rpb24gZnVuY3Rpb25cbiAgICAgIGNvbnN0IHJlY292ZXJ5VHhuID0gYXdhaXQgYmFzZWNvaW4uY3JlYXRlQnJvYWRjYXN0YWJsZVN3ZWVwVHJhbnNhY3Rpb24ocGFyYW1zKTtcblxuICAgICAgLy8gVmFsaWRhdGUgdGhlIHJlc3VsdFxuICAgICAgcmVjb3ZlcnlUeG4udHJhbnNhY3Rpb25zWzBdLnNlcmlhbGl6ZWRUeC5zaG91bGQuZXF1YWwoXG4gICAgICAgICd0ZTZjY2tFQkFnRUFxZ0FCNFlnQWw3Uk9oTG84QUp1b1d0R3RjSzAwUHVVcFkzWWtRRGo5LzJTbk12dW5McElGYmw4OTZ3bE12N2ZzVU9jK3NNSHpFbDhxM3ZYNWJtNm5vSGdpblBKS0JSem5Pck83dmVJcEhJRXBpUkxiSDcvZU5kcFNzUmh2TDI2MEpQL2ZEMHZBSVUxTkdMdEFCRHFBQUFBQUNBQWNBUUJvUWdCL09laU5kTGVhTDcrTzA0WHV1anVDaFNHclJkN1puRmwyZkNkOUZYZHpBeURPSllDd0FBQUFBQUFBQUFBQUFBQUFBRndYR3Q4PSdcbiAgICAgICk7XG4gICAgICByZWNvdmVyeVR4bi50cmFuc2FjdGlvbnNbMF0uc2NhbkluZGV4LnNob3VsZC5lcXVhbCgwKTtcbiAgICAgIHJlY292ZXJ5VHhuLmxhc3RTY2FuSW5kZXguc2hvdWxkLmVxdWFsKDApO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|