@bitgo/sdk-coin-canton 1.22.0 → 1.23.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.
@@ -7,6 +7,7 @@ const assert_1 = __importDefault(require("assert"));
7
7
  const should_1 = __importDefault(require("should"));
8
8
  const statics_1 = require("@bitgo/statics");
9
9
  const src_1 = require("../../../../src");
10
+ const resources_1 = require("../../../resources");
10
11
  const commandId = 'a1b2c3d4-e5f6-7890-abcd-ef1234567890';
11
12
  const amount = 100;
12
13
  const token = 'canton:amulet-usd';
@@ -305,5 +306,36 @@ describe('AllocationAllocate Builder', () => {
305
306
  txBuilder.setTransaction(prepareCommandResponse);
306
307
  assert_1.default.deepEqual(tx.prepareCommand, prepareCommandResponse);
307
308
  });
309
+ describe('Prepared transaction parsing', () => {
310
+ it('should parse the allocation allocate prepared transaction', function () {
311
+ const txBuilder = new src_1.AllocationAllocateBuilder(statics_1.coins.get('tcanton'));
312
+ const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
313
+ txBuilder.initBuilder(tx);
314
+ txBuilder.commandId(commandId);
315
+ txBuilder.setTransaction(resources_1.CantonAllocationAllocatePrepareResponse);
316
+ const txData = txBuilder.transaction.toJson();
317
+ should_1.default.exist(txData);
318
+ assert_1.default.equal(txData.sender, 'ravi-2-step-party::122092e7d33ac10c0f3d55976342f37555df05da5b742956d56a62ae2367769079d2');
319
+ // receiver = transferLeg.receiver from DvpLegAllocation — the actual settlement counterparty
320
+ assert_1.default.equal(txData.receiver, 'ravi-2-step-party-new::122092e7d33ac10c0f3d55976342f37555df05da5b742956d56a62ae2367769079d2');
321
+ assert_1.default.equal(txData.amount, '50000000000');
322
+ });
323
+ it('should validate the raw allocation allocate transaction', async function () {
324
+ const txBuilder = new src_1.AllocationAllocateBuilder(statics_1.coins.get('tcanton'));
325
+ const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
326
+ txBuilder.initBuilder(tx);
327
+ txBuilder.commandId(commandId);
328
+ txBuilder.setTransaction(resources_1.CantonAllocationAllocatePrepareResponse);
329
+ await txBuilder.validateRawTransaction(resources_1.CantonAllocationAllocatePrepareResponse.preparedTransaction);
330
+ });
331
+ it('should validate the allocation allocate transaction', async function () {
332
+ const txBuilder = new src_1.AllocationAllocateBuilder(statics_1.coins.get('tcanton'));
333
+ const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
334
+ tx.prepareCommand = resources_1.CantonAllocationAllocatePrepareResponse;
335
+ txBuilder.initBuilder(tx);
336
+ txBuilder.setTransaction(resources_1.CantonAllocationAllocatePrepareResponse);
337
+ await txBuilder.validateTransaction(tx);
338
+ });
339
+ });
308
340
  });
309
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9idWlsZGVyL2FsbG9jYXRpb25BbGxvY2F0ZS9hbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG9EQUE0QjtBQUU1Qiw0Q0FBdUM7QUFFdkMseUNBQXlFO0FBR3pFLE1BQU0sU0FBUyxHQUFHLHNDQUFzQyxDQUFDO0FBQ3pELE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQztBQUNuQixNQUFNLEtBQUssR0FBRyxtQkFBbUIsQ0FBQztBQUNsQyxNQUFNLFVBQVUsR0FBRyw2RUFBNkUsQ0FBQztBQUNqRyxNQUFNLFVBQVUsR0FDZCw0SUFBNEksQ0FBQztBQUMvSSxNQUFNLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQztBQUNuQyxNQUFNLGFBQWEsR0FBRywrQkFBK0IsQ0FBQztBQUN0RCxNQUFNLGNBQWMsR0FBRyw2QkFBNkIsQ0FBQztBQUNyRCxNQUFNLFlBQVksR0FBRyw2QkFBNkIsQ0FBQztBQUNuRCxNQUFNLGVBQWUsR0FBRyw2RUFBNkUsQ0FBQztBQUN0RyxNQUFNLGFBQWEsR0FBRyw2RUFBNkUsQ0FBQztBQUNwRyxNQUFNLE9BQU8sR0FBRyx5QkFBeUIsQ0FBQztBQUUxQywrQ0FBK0M7QUFDL0MsU0FBUyxvQkFBb0IsQ0FBQyxTQUFvQztJQUNoRSxPQUFPLFNBQVM7U0FDYixTQUFTLENBQUMsU0FBUyxDQUFDO1NBQ3BCLE1BQU0sQ0FBQyxNQUFNLENBQUM7U0FDZCxLQUFLLENBQUMsS0FBSyxDQUFDO1NBQ1osVUFBVSxDQUFDLFVBQVUsQ0FBQztTQUN0QixVQUFVLENBQUMsVUFBVSxDQUFDO1NBQ3RCLE9BQU8sQ0FBQyxPQUFPLENBQUM7U0FDaEIsYUFBYSxDQUFDLGFBQWEsQ0FBQztTQUM1QixjQUFjLENBQUMsY0FBYyxDQUFDO1NB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Q0FBQyxDQUFDLENBQUM7UUFDakQsU0FBUyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQixNQUFNLHNCQUFzQixHQUFHO1lBQzdCLHVCQUF1QixFQUFFLFFBQVE7WUFDakMsb0JBQW9CLEVBQUUsMkJBQTJCO1NBQ2xELENBQUM7UUFDRixTQUFTLENBQUMsY0FBYyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDakQsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0lBQzlELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5cbmltcG9ydCB7IGNvaW5zIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuXG5pbXBvcnQgeyBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyLCBUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgeyBDYW50b25BbGxvY2F0aW9uQWxsb2NhdGVSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL2xpYi9pZmFjZSc7XG5cbmNvbnN0IGNvbW1hbmRJZCA9ICdhMWIyYzNkNC1lNWY2LTc4OTAtYWJjZC1lZjEyMzQ1Njc4OTAnO1xuY29uc3QgYW1vdW50ID0gMTAwO1xuY29uc3QgdG9rZW4gPSAnY2FudG9uOmFtdWxldC11c2QnO1xuY29uc3Qgb3BlcmF0b3JJZCA9ICcxMjIwNTo6MTIyMDViNGUzNTM3YTk1MTI2ZDkwNjA0NTkyMzQ0ZDhhZDNjM2RkY2NkYTRmNzk5MDE5NTQyODBlZTE5YzU3NjcxNGQnO1xuY29uc3QgY29udHJhY3RJZCA9XG4gICcwMDFiNTQ5YmZhODMzYmFiNjYxYWIzMGU0ZDBhM2FiMGVjMDFmY2M0YTJiZWY1MzY5Nzk1ZjQ5MjgxNDc3MDYzNTNjYTExMTIyMDVhOGQwZTc4MGNmM2IzMTE1Y2Y4YmUwZDYzMTVmNGFlZDZhMWMyNWI2N2U4YzVkNjRjZjk4NDhkMDQ1OGZkMTcnO1xuY29uc3QgdHJhZGVJZCA9ICd0cmFkZS05OTg4Nzc2NjU1JztcbmNvbnN0IHRyYW5zZmVyTGVnSWQgPSAndHJhZGUtOTk4ODc3NjY1NS1zZWN1cml0eS1sZWcnO1xuY29uc3QgYWxsb2NhdGVCZWZvcmUgPSAnMjAyNi0wNS0wNlQxNjo0NjoxNy4xODQ2MDlaJztcbmNvbnN0IHNldHRsZUJlZm9yZSA9ICcyMDI2LTA1LTA3VDE2OjQ2OjE3LjE4NDYwOVonO1xuY29uc3QgcmVjZWl2ZXJQYXJ0eUlkID0gJzEyMjA2OjoxMjIwNmE0ZTM1MzdhOTUxMjZkOTA2MDQ1OTIzNDRkOGFkM2MzZGRjY2RhNGY3OTkwMTk1NDI4MGVlMTljNTc2NzE0ZCc7XG5jb25zdCBzZW5kZXJQYXJ0eUlkID0gJzEyMjA3OjoxMjIwN2E0ZTM1MzdhOTUxMjZkOTA2MDQ1OTIzNDRkOGFkM2MzZGRjY2RhNGY3OTkwMTk1NDI4MGVlMTljNTc2NzE0ZCc7XG5jb25zdCBjb21tZW50ID0gJ3Rlc3QgYWxsb2NhdGlvbiBjb21tZW50JztcblxuLy8gSGVscGVyIHRvIGJ1aWxkIHdpdGggYWxsIHJlcXVpcmVkIGZpZWxkcyBzZXRcbmZ1bmN0aW9uIGJ1aWxkV2l0aEFsbFJlcXVpcmVkKHR4QnVpbGRlcjogQWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlcik6IEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIge1xuICByZXR1cm4gdHhCdWlsZGVyXG4gICAgLmNvbW1hbmRJZChjb21tYW5kSWQpXG4gICAgLmFtb3VudChhbW91bnQpXG4gICAgLnRva2VuKHRva2VuKVxuICAgIC5vcGVyYXRvcklkKG9wZXJhdG9ySWQpXG4gICAgLmNvbnRyYWN0SWQoY29udHJhY3RJZClcbiAgICAudHJhZGVJZCh0cmFkZUlkKVxuICAgIC50cmFuc2ZlckxlZ0lkKHRyYW5zZmVyTGVnSWQpXG4gICAgLmFsbG9jYXRlQmVmb3JlKGFsbG9jYXRlQmVmb3JlKVxuICAgIC5zZXR0bGVCZWZvcmUoc2V0dGxlQmVmb3JlKVxuICAgIC5yZWNlaXZlclBhcnR5SWQocmVjZWl2ZXJQYXJ0eUlkKVxuICAgIC5zZW5kZXJQYXJ0eUlkKHNlbmRlclBhcnR5SWQpO1xufVxuXG5kZXNjcmliZSgnQWxsb2NhdGlvbkFsbG9jYXRlIEJ1aWxkZXInLCAoKSA9PiB7XG4gIGl0KCdzaG91bGQgYnVpbGQgdGhlIGFsbG9jYXRpb24gYWxsb2NhdGUgcmVxdWVzdCBvYmplY3Qgd2l0aCBhbGwgZmllbGRzJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICBidWlsZFdpdGhBbGxSZXF1aXJlZCh0eEJ1aWxkZXIpLmNvbW1lbnQoY29tbWVudCk7XG4gICAgY29uc3QgcmVxdWVzdE9iajogQ2FudG9uQWxsb2NhdGlvbkFsbG9jYXRlUmVxdWVzdCA9IHR4QnVpbGRlci50b1JlcXVlc3RPYmplY3QoKTtcbiAgICBzaG91bGQuZXhpc3QocmVxdWVzdE9iaik7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmouY29tbWFuZElkLCBjb21tYW5kSWQpO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLmFtb3VudCwgYW1vdW50KTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai50b2tlbiwgdG9rZW4pO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLm9wZXJhdG9ySWQsIG9wZXJhdG9ySWQpO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLmNvbnRyYWN0SWQsIGNvbnRyYWN0SWQpO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLnRyYWRlSWQsIHRyYWRlSWQpO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLnRyYW5zZmVyTGVnSWQsIHRyYW5zZmVyTGVnSWQpO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLmFsbG9jYXRlQmVmb3JlLCBhbGxvY2F0ZUJlZm9yZSk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmouc2V0dGxlQmVmb3JlLCBzZXR0bGVCZWZvcmUpO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLnJlY2VpdmVyUGFydHlJZCwgcmVjZWl2ZXJQYXJ0eUlkKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5zZW5kZXJQYXJ0eUlkLCBzZW5kZXJQYXJ0eUlkKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5jb21tZW50LCBjb21tZW50KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBidWlsZCB0aGUgYWxsb2NhdGlvbiBhbGxvY2F0ZSByZXF1ZXN0IG9iamVjdCB3aXRob3V0IG9wdGlvbmFsIGNvbW1lbnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIGJ1aWxkV2l0aEFsbFJlcXVpcmVkKHR4QnVpbGRlcik7XG4gICAgY29uc3QgcmVxdWVzdE9iajogQ2FudG9uQWxsb2NhdGlvbkFsbG9jYXRlUmVxdWVzdCA9IHR4QnVpbGRlci50b1JlcXVlc3RPYmplY3QoKTtcbiAgICBzaG91bGQuZXhpc3QocmVxdWVzdE9iaik7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmouY29tbWVudCwgdW5kZWZpbmVkKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBzZXQgdGhlIHRyYW5zYWN0aW9uIGlkIHRvIHRoZSBjb21tYW5kSWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHR4QnVpbGRlci5jb21tYW5kSWQoY29tbWFuZElkKTtcbiAgICBhc3NlcnQuZXF1YWwodHguaWQsIGNvbW1hbmRJZCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgY29tbWFuZElkIGlzIG1pc3NpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHR4QnVpbGRlclxuICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAudG9rZW4odG9rZW4pXG4gICAgICAub3BlcmF0b3JJZChvcGVyYXRvcklkKVxuICAgICAgLmNvbnRyYWN0SWQoY29udHJhY3RJZClcbiAgICAgIC50cmFkZUlkKHRyYWRlSWQpXG4gICAgICAudHJhbnNmZXJMZWdJZCh0cmFuc2ZlckxlZ0lkKVxuICAgICAgLmFsbG9jYXRlQmVmb3JlKGFsbG9jYXRlQmVmb3JlKVxuICAgICAgLnNldHRsZUJlZm9yZShzZXR0bGVCZWZvcmUpXG4gICAgICAucmVjZWl2ZXJQYXJ0eUlkKHJlY2VpdmVyUGFydHlJZClcbiAgICAgIC5zZW5kZXJQYXJ0eUlkKHNlbmRlclBhcnR5SWQpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpLCAvY29tbWFuZElkIGlzIG1pc3NpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBhbW91bnQgaXMgbWlzc2luZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgdHhCdWlsZGVyXG4gICAgICAuY29tbWFuZElkKGNvbW1hbmRJZClcbiAgICAgIC50b2tlbih0b2tlbilcbiAgICAgIC5vcGVyYXRvcklkKG9wZXJhdG9ySWQpXG4gICAgICAuY29udHJhY3RJZChjb250cmFjdElkKVxuICAgICAgLnRyYWRlSWQodHJhZGVJZClcbiAgICAgIC50cmFuc2ZlckxlZ0lkKHRyYW5zZmVyTGVnSWQpXG4gICAgICAuYWxsb2NhdGVCZWZvcmUoYWxsb2NhdGVCZWZvcmUpXG4gICAgICAuc2V0dGxlQmVmb3JlKHNldHRsZUJlZm9yZSlcbiAgICAgIC5yZWNlaXZlclBhcnR5SWQocmVjZWl2ZXJQYXJ0eUlkKVxuICAgICAgLnNlbmRlclBhcnR5SWQoc2VuZGVyUGFydHlJZCk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCksIC9hbW91bnQgaXMgbWlzc2luZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIHRva2VuIGlzIG1pc3NpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHR4QnVpbGRlclxuICAgICAgLmNvbW1hbmRJZChjb21tYW5kSWQpXG4gICAgICAuYW1vdW50KGFtb3VudClcbiAgICAgIC5vcGVyYXRvcklkKG9wZXJhdG9ySWQpXG4gICAgICAuY29udHJhY3RJZChjb250cmFjdElkKVxuICAgICAgLnRyYWRlSWQodHJhZGVJZClcbiAgICAgIC50cmFuc2ZlckxlZ0lkKHRyYW5zZmVyTGVnSWQpXG4gICAgICAuYWxsb2NhdGVCZWZvcmUoYWxsb2NhdGVCZWZvcmUpXG4gICAgICAuc2V0dGxlQmVmb3JlKHNldHRsZUJlZm9yZSlcbiAgICAgIC5yZWNlaXZlclBhcnR5SWQocmVjZWl2ZXJQYXJ0eUlkKVxuICAgICAgLnNlbmRlclBhcnR5SWQoc2VuZGVyUGFydHlJZCk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCksIC90b2tlbiBpcyBtaXNzaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgb3BlcmF0b3JJZCBpcyBtaXNzaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0eEJ1aWxkZXJcbiAgICAgIC5jb21tYW5kSWQoY29tbWFuZElkKVxuICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAudG9rZW4odG9rZW4pXG4gICAgICAuY29udHJhY3RJZChjb250cmFjdElkKVxuICAgICAgLnRyYWRlSWQodHJhZGVJZClcbiAgICAgIC50cmFuc2ZlckxlZ0lkKHRyYW5zZmVyTGVnSWQpXG4gICAgICAuYWxsb2NhdGVCZWZvcmUoYWxsb2NhdGVCZWZvcmUpXG4gICAgICAuc2V0dGxlQmVmb3JlKHNldHRsZUJlZm9yZSlcbiAgICAgIC5yZWNlaXZlclBhcnR5SWQocmVjZWl2ZXJQYXJ0eUlkKVxuICAgICAgLnNlbmRlclBhcnR5SWQoc2VuZGVyUGFydHlJZCk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCksIC9vcGVyYXRvcklkIGlzIG1pc3NpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBjb250cmFjdElkIGlzIG1pc3NpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHR4QnVpbGRlclxuICAgICAgLmNvbW1hbmRJZChjb21tYW5kSWQpXG4gICAgICAuYW1vdW50KGFtb3VudClcbiAgICAgIC50b2tlbih0b2tlbilcbiAgICAgIC5vcGVyYXRvcklkKG9wZXJhdG9ySWQpXG4gICAgICAudHJhZGVJZCh0cmFkZUlkKVxuICAgICAgLnRyYW5zZmVyTGVnSWQodHJhbnNmZXJMZWdJZClcbiAgICAgIC5hbGxvY2F0ZUJlZm9yZShhbGxvY2F0ZUJlZm9yZSlcbiAgICAgIC5zZXR0bGVCZWZvcmUoc2V0dGxlQmVmb3JlKVxuICAgICAgLnJlY2VpdmVyUGFydHlJZChyZWNlaXZlclBhcnR5SWQpXG4gICAgICAuc2VuZGVyUGFydHlJZChzZW5kZXJQYXJ0eUlkKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci50b1JlcXVlc3RPYmplY3QoKSwgL2NvbnRyYWN0SWQgaXMgbWlzc2luZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIHRyYWRlSWQgaXMgbWlzc2luZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgdHhCdWlsZGVyXG4gICAgICAuY29tbWFuZElkKGNvbW1hbmRJZClcbiAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgLnRva2VuKHRva2VuKVxuICAgICAgLm9wZXJhdG9ySWQob3BlcmF0b3JJZClcbiAgICAgIC5jb250cmFjdElkKGNvbnRyYWN0SWQpXG4gICAgICAudHJhbnNmZXJMZWdJZCh0cmFuc2ZlckxlZ0lkKVxuICAgICAgLmFsbG9jYXRlQmVmb3JlKGFsbG9jYXRlQmVmb3JlKVxuICAgICAgLnNldHRsZUJlZm9yZShzZXR0bGVCZWZvcmUpXG4gICAgICAucmVjZWl2ZXJQYXJ0eUlkKHJlY2VpdmVyUGFydHlJZClcbiAgICAgIC5zZW5kZXJQYXJ0eUlkKHNlbmRlclBhcnR5SWQpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpLCAvdHJhZGVJZCBpcyBtaXNzaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgdHJhbnNmZXJMZWdJZCBpcyBtaXNzaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0eEJ1aWxkZXJcbiAgICAgIC5jb21tYW5kSWQoY29tbWFuZElkKVxuICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAudG9rZW4odG9rZW4pXG4gICAgICAub3BlcmF0b3JJZChvcGVyYXRvcklkKVxuICAgICAgLmNvbnRyYWN0SWQoY29udHJhY3RJZClcbiAgICAgIC50cmFkZUlkKHRyYWRlSWQpXG4gICAgICAuYWxsb2NhdGVCZWZvcmUoYWxsb2NhdGVCZWZvcmUpXG4gICAgICAuc2V0dGxlQmVmb3JlKHNldHRsZUJlZm9yZSlcbiAgICAgIC5yZWNlaXZlclBhcnR5SWQocmVjZWl2ZXJQYXJ0eUlkKVxuICAgICAgLnNlbmRlclBhcnR5SWQoc2VuZGVyUGFydHlJZCk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCksIC90cmFuc2ZlckxlZ0lkIGlzIG1pc3NpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBhbGxvY2F0ZUJlZm9yZSBpcyBtaXNzaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0eEJ1aWxkZXJcbiAgICAgIC5jb21tYW5kSWQoY29tbWFuZElkKVxuICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAudG9rZW4odG9rZW4pXG4gICAgICAub3BlcmF0b3JJZChvcGVyYXRvcklkKVxuICAgICAgLmNvbnRyYWN0SWQoY29udHJhY3RJZClcbiAgICAgIC50cmFkZUlkKHRyYWRlSWQpXG4gICAgICAudHJhbnNmZXJMZWdJZCh0cmFuc2ZlckxlZ0lkKVxuICAgICAgLnNldHRsZUJlZm9yZShzZXR0bGVCZWZvcmUpXG4gICAgICAucmVjZWl2ZXJQYXJ0eUlkKHJlY2VpdmVyUGFydHlJZClcbiAgICAgIC5zZW5kZXJQYXJ0eUlkKHNlbmRlclBhcnR5SWQpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpLCAvYWxsb2NhdGVCZWZvcmUgaXMgbWlzc2luZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIHNldHRsZUJlZm9yZSBpcyBtaXNzaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0eEJ1aWxkZXJcbiAgICAgIC5jb21tYW5kSWQoY29tbWFuZElkKVxuICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAudG9rZW4odG9rZW4pXG4gICAgICAub3BlcmF0b3JJZChvcGVyYXRvcklkKVxuICAgICAgLmNvbnRyYWN0SWQoY29udHJhY3RJZClcbiAgICAgIC50cmFkZUlkKHRyYWRlSWQpXG4gICAgICAudHJhbnNmZXJMZWdJZCh0cmFuc2ZlckxlZ0lkKVxuICAgICAgLmFsbG9jYXRlQmVmb3JlKGFsbG9jYXRlQmVmb3JlKVxuICAgICAgLnJlY2VpdmVyUGFydHlJZChyZWNlaXZlclBhcnR5SWQpXG4gICAgICAuc2VuZGVyUGFydHlJZChzZW5kZXJQYXJ0eUlkKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci50b1JlcXVlc3RPYmplY3QoKSwgL3NldHRsZUJlZm9yZSBpcyBtaXNzaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgcmVjZWl2ZXJQYXJ0eUlkIGlzIG1pc3NpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHR4QnVpbGRlclxuICAgICAgLmNvbW1hbmRJZChjb21tYW5kSWQpXG4gICAgICAuYW1vdW50KGFtb3VudClcbiAgICAgIC50b2tlbih0b2tlbilcbiAgICAgIC5vcGVyYXRvcklkKG9wZXJhdG9ySWQpXG4gICAgICAuY29udHJhY3RJZChjb250cmFjdElkKVxuICAgICAgLnRyYWRlSWQodHJhZGVJZClcbiAgICAgIC50cmFuc2ZlckxlZ0lkKHRyYW5zZmVyTGVnSWQpXG4gICAgICAuYWxsb2NhdGVCZWZvcmUoYWxsb2NhdGVCZWZvcmUpXG4gICAgICAuc2V0dGxlQmVmb3JlKHNldHRsZUJlZm9yZSlcbiAgICAgIC5zZW5kZXJQYXJ0eUlkKHNlbmRlclBhcnR5SWQpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpLCAvcmVjZWl2ZXJQYXJ0eUlkIGlzIG1pc3NpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBzZW5kZXJQYXJ0eUlkIGlzIG1pc3NpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHR4QnVpbGRlclxuICAgICAgLmNvbW1hbmRJZChjb21tYW5kSWQpXG4gICAgICAuYW1vdW50KGFtb3VudClcbiAgICAgIC50b2tlbih0b2tlbilcbiAgICAgIC5vcGVyYXRvcklkKG9wZXJhdG9ySWQpXG4gICAgICAuY29udHJhY3RJZChjb250cmFjdElkKVxuICAgICAgLnRyYWRlSWQodHJhZGVJZClcbiAgICAgIC50cmFuc2ZlckxlZ0lkKHRyYW5zZmVyTGVnSWQpXG4gICAgICAuYWxsb2NhdGVCZWZvcmUoYWxsb2NhdGVCZWZvcmUpXG4gICAgICAuc2V0dGxlQmVmb3JlKHNldHRsZUJlZm9yZSlcbiAgICAgIC5yZWNlaXZlclBhcnR5SWQocmVjZWl2ZXJQYXJ0eUlkKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci50b1JlcXVlc3RPYmplY3QoKSwgL3NlbmRlclBhcnR5SWQgaXMgbWlzc2luZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIGNvbW1hbmRJZCBpcyBhbiBlbXB0eSBzdHJpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLmNvbW1hbmRJZCgnJyksIC9jb21tYW5kSWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiB0b2tlbiBpcyBhbiBlbXB0eSBzdHJpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnRva2VuKCcnKSwgL3Rva2VuIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgb3BlcmF0b3JJZCBpcyBhbiBlbXB0eSBzdHJpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLm9wZXJhdG9ySWQoJycpLCAvb3BlcmF0b3JJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIGNvbnRyYWN0SWQgaXMgYW4gZW1wdHkgc3RyaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci5jb250cmFjdElkKCcnKSwgL2NvbnRyYWN0SWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiB0cmFkZUlkIGlzIGFuIGVtcHR5IHN0cmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIudHJhZGVJZCgnJyksIC90cmFkZUlkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgdHJhbnNmZXJMZWdJZCBpcyBhbiBlbXB0eSBzdHJpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnRyYW5zZmVyTGVnSWQoJycpLCAvdHJhbnNmZXJMZWdJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIGFsbG9jYXRlQmVmb3JlIGlzIGFuIGVtcHR5IHN0cmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIuYWxsb2NhdGVCZWZvcmUoJycpLCAvYWxsb2NhdGVCZWZvcmUgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBzZXR0bGVCZWZvcmUgaXMgYW4gZW1wdHkgc3RyaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci5zZXR0bGVCZWZvcmUoJycpLCAvc2V0dGxlQmVmb3JlIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgcmVjZWl2ZXJQYXJ0eUlkIGlzIGFuIGVtcHR5IHN0cmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIucmVjZWl2ZXJQYXJ0eUlkKCcnKSwgL3JlY2VpdmVyUGFydHlJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHNldCB0aGUgcHJlcGFyZUNvbW1hbmQgdmlhIHNldFRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICBjb25zdCBwcmVwYXJlQ29tbWFuZFJlc3BvbnNlID0ge1xuICAgICAgcHJlcGFyZWRUcmFuc2FjdGlvbkhhc2g6ICdhYmMxMjMnLFxuICAgICAgaGFzaGluZ1NjaGVtZVZlcnNpb246ICdIQVNISU5HX1NDSEVNRV9WRVJTSU9OX1YyJyxcbiAgICB9O1xuICAgIHR4QnVpbGRlci5zZXRUcmFuc2FjdGlvbihwcmVwYXJlQ29tbWFuZFJlc3BvbnNlKTtcbiAgICBhc3NlcnQuZGVlcEVxdWFsKHR4LnByZXBhcmVDb21tYW5kLCBwcmVwYXJlQ29tbWFuZFJlc3BvbnNlKTtcbiAgfSk7XG59KTtcbiJdfQ==
341
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9idWlsZGVyL2FsbG9jYXRpb25BbGxvY2F0ZS9hbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG9EQUE0QjtBQUU1Qiw0Q0FBdUM7QUFFdkMseUNBQXlFO0FBRXpFLGtEQUE2RTtBQUU3RSxNQUFNLFNBQVMsR0FBRyxzQ0FBc0MsQ0FBQztBQUN6RCxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUM7QUFDbkIsTUFBTSxLQUFLLEdBQUcsbUJBQW1CLENBQUM7QUFDbEMsTUFBTSxVQUFVLEdBQUcsNkVBQTZFLENBQUM7QUFDakcsTUFBTSxVQUFVLEdBQ2QsNElBQTRJLENBQUM7QUFDL0ksTUFBTSxPQUFPLEdBQUcsa0JBQWtCLENBQUM7QUFDbkMsTUFBTSxhQUFhLEdBQUcsK0JBQStCLENBQUM7QUFDdEQsTUFBTSxjQUFjLEdBQUcsNkJBQTZCLENBQUM7QUFDckQsTUFBTSxZQUFZLEdBQUcsNkJBQTZCLENBQUM7QUFDbkQsTUFBTSxlQUFlLEdBQUcsNkVBQTZFLENBQUM7QUFDdEcsTUFBTSxhQUFhLEdBQUcsNkVBQTZFLENBQUM7QUFDcEcsTUFBTSxPQUFPLEdBQUcseUJBQXlCLENBQUM7QUFFMUMsK0NBQStDO0FBQy9DLFNBQVMsb0JBQW9CLENBQUMsU0FBb0M7SUFDaEUsT0FBTyxTQUFTO1NBQ2IsU0FBUyxDQUFDLFNBQVMsQ0FBQztTQUNwQixNQUFNLENBQUMsTUFBTSxDQUFDO1NBQ2QsS0FBSyxDQUFDLEtBQUssQ0FBQztTQUNaLFVBQVUsQ0FBQyxVQUFVLENBQUM7U0FDdEIsVUFBVSxDQUFDLFVBQVUsQ0FBQztTQUN0QixPQUFPLENBQUMsT0FBTyxDQUFDO1NBQ2hCLGFBQWEsQ0FBQyxhQUFhLENBQUM7U0FDNUIsY0FBYyxDQUFD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c2VydCc7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5cbmltcG9ydCB7IGNvaW5zIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuXG5pbXBvcnQgeyBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyLCBUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgeyBDYW50b25BbGxvY2F0aW9uQWxsb2NhdGVSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL2xpYi9pZmFjZSc7XG5pbXBvcnQgeyBDYW50b25BbGxvY2F0aW9uQWxsb2NhdGVQcmVwYXJlUmVzcG9uc2UgfSBmcm9tICcuLi8uLi8uLi9yZXNvdXJjZXMnO1xuXG5jb25zdCBjb21tYW5kSWQgPSAnYTFiMmMzZDQtZTVmNi03ODkwLWFiY2QtZWYxMjM0NTY3ODkwJztcbmNvbnN0IGFtb3VudCA9IDEwMDtcbmNvbnN0IHRva2VuID0gJ2NhbnRvbjphbXVsZXQtdXNkJztcbmNvbnN0IG9wZXJhdG9ySWQgPSAnMTIyMDU6OjEyMjA1YjRlMzUzN2E5NTEyNmQ5MDYwNDU5MjM0NGQ4YWQzYzNkZGNjZGE0Zjc5OTAxOTU0MjgwZWUxOWM1NzY3MTRkJztcbmNvbnN0IGNvbnRyYWN0SWQgPVxuICAnMDAxYjU0OWJmYTgzM2JhYjY2MWFiMzBlNGQwYTNhYjBlYzAxZmNjNGEyYmVmNTM2OTc5NWY0OTI4MTQ3NzA2MzUzY2ExMTEyMjA1YThkMGU3ODBjZjNiMzExNWNmOGJlMGQ2MzE1ZjRhZWQ2YTFjMjViNjdlOGM1ZDY0Y2Y5ODQ4ZDA0NThmZDE3JztcbmNvbnN0IHRyYWRlSWQgPSAndHJhZGUtOTk4ODc3NjY1NSc7XG5jb25zdCB0cmFuc2ZlckxlZ0lkID0gJ3RyYWRlLTk5ODg3NzY2NTUtc2VjdXJpdHktbGVnJztcbmNvbnN0IGFsbG9jYXRlQmVmb3JlID0gJzIwMjYtMDUtMDZUMTY6NDY6MTcuMTg0NjA5Wic7XG5jb25zdCBzZXR0bGVCZWZvcmUgPSAnMjAyNi0wNS0wN1QxNjo0NjoxNy4xODQ2MDlaJztcbmNvbnN0IHJlY2VpdmVyUGFydHlJZCA9ICcxMjIwNjo6MTIyMDZhNGUzNTM3YTk1MTI2ZDkwNjA0NTkyMzQ0ZDhhZDNjM2RkY2NkYTRmNzk5MDE5NTQyODBlZTE5YzU3NjcxNGQnO1xuY29uc3Qgc2VuZGVyUGFydHlJZCA9ICcxMjIwNzo6MTIyMDdhNGUzNTM3YTk1MTI2ZDkwNjA0NTkyMzQ0ZDhhZDNjM2RkY2NkYTRmNzk5MDE5NTQyODBlZTE5YzU3NjcxNGQnO1xuY29uc3QgY29tbWVudCA9ICd0ZXN0IGFsbG9jYXRpb24gY29tbWVudCc7XG5cbi8vIEhlbHBlciB0byBidWlsZCB3aXRoIGFsbCByZXF1aXJlZCBmaWVsZHMgc2V0XG5mdW5jdGlvbiBidWlsZFdpdGhBbGxSZXF1aXJlZCh0eEJ1aWxkZXI6IEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIpOiBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyIHtcbiAgcmV0dXJuIHR4QnVpbGRlclxuICAgIC5jb21tYW5kSWQoY29tbWFuZElkKVxuICAgIC5hbW91bnQoYW1vdW50KVxuICAgIC50b2tlbih0b2tlbilcbiAgICAub3BlcmF0b3JJZChvcGVyYXRvcklkKVxuICAgIC5jb250cmFjdElkKGNvbnRyYWN0SWQpXG4gICAgLnRyYWRlSWQodHJhZGVJZClcbiAgICAudHJhbnNmZXJMZWdJZCh0cmFuc2ZlckxlZ0lkKVxuICAgIC5hbGxvY2F0ZUJlZm9yZShhbGxvY2F0ZUJlZm9yZSlcbiAgICAuc2V0dGxlQmVmb3JlKHNldHRsZUJlZm9yZSlcbiAgICAucmVjZWl2ZXJQYXJ0eUlkKHJlY2VpdmVyUGFydHlJZClcbiAgICAuc2VuZGVyUGFydHlJZChzZW5kZXJQYXJ0eUlkKTtcbn1cblxuZGVzY3JpYmUoJ0FsbG9jYXRpb25BbGxvY2F0ZSBCdWlsZGVyJywgKCkgPT4ge1xuICBpdCgnc2hvdWxkIGJ1aWxkIHRoZSBhbGxvY2F0aW9uIGFsbG9jYXRlIHJlcXVlc3Qgb2JqZWN0IHdpdGggYWxsIGZpZWxkcycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgYnVpbGRXaXRoQWxsUmVxdWlyZWQodHhCdWlsZGVyKS5jb21tZW50KGNvbW1lbnQpO1xuICAgIGNvbnN0IHJlcXVlc3RPYmo6IENhbnRvbkFsbG9jYXRpb25BbGxvY2F0ZVJlcXVlc3QgPSB0eEJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCk7XG4gICAgc2hvdWxkLmV4aXN0KHJlcXVlc3RPYmopO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLmNvbW1hbmRJZCwgY29tbWFuZElkKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5hbW91bnQsIGFtb3VudCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmoudG9rZW4sIHRva2VuKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5vcGVyYXRvcklkLCBvcGVyYXRvcklkKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5jb250cmFjdElkLCBjb250cmFjdElkKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai50cmFkZUlkLCB0cmFkZUlkKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai50cmFuc2ZlckxlZ0lkLCB0cmFuc2ZlckxlZ0lkKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5hbGxvY2F0ZUJlZm9yZSwgYWxsb2NhdGVCZWZvcmUpO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLnNldHRsZUJlZm9yZSwgc2V0dGxlQmVmb3JlKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5yZWNlaXZlclBhcnR5SWQsIHJlY2VpdmVyUGFydHlJZCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmouc2VuZGVyUGFydHlJZCwgc2VuZGVyUGFydHlJZCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmouY29tbWVudCwgY29tbWVudCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYnVpbGQgdGhlIGFsbG9jYXRpb24gYWxsb2NhdGUgcmVxdWVzdCBvYmplY3Qgd2l0aG91dCBvcHRpb25hbCBjb21tZW50JywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICBidWlsZFdpdGhBbGxSZXF1aXJlZCh0eEJ1aWxkZXIpO1xuICAgIGNvbnN0IHJlcXVlc3RPYmo6IENhbnRvbkFsbG9jYXRpb25BbGxvY2F0ZVJlcXVlc3QgPSB0eEJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCk7XG4gICAgc2hvdWxkLmV4aXN0KHJlcXVlc3RPYmopO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLmNvbW1lbnQsIHVuZGVmaW5lZCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgc2V0IHRoZSB0cmFuc2FjdGlvbiBpZCB0byB0aGUgY29tbWFuZElkJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0eEJ1aWxkZXIuY29tbWFuZElkKGNvbW1hbmRJZCk7XG4gICAgYXNzZXJ0LmVxdWFsKHR4LmlkLCBjb21tYW5kSWQpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIGNvbW1hbmRJZCBpcyBtaXNzaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0eEJ1aWxkZXJcbiAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgLnRva2VuKHRva2VuKVxuICAgICAgLm9wZXJhdG9ySWQob3BlcmF0b3JJZClcbiAgICAgIC5jb250cmFjdElkKGNvbnRyYWN0SWQpXG4gICAgICAudHJhZGVJZCh0cmFkZUlkKVxuICAgICAgLnRyYW5zZmVyTGVnSWQodHJhbnNmZXJMZWdJZClcbiAgICAgIC5hbGxvY2F0ZUJlZm9yZShhbGxvY2F0ZUJlZm9yZSlcbiAgICAgIC5zZXR0bGVCZWZvcmUoc2V0dGxlQmVmb3JlKVxuICAgICAgLnJlY2VpdmVyUGFydHlJZChyZWNlaXZlclBhcnR5SWQpXG4gICAgICAuc2VuZGVyUGFydHlJZChzZW5kZXJQYXJ0eUlkKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci50b1JlcXVlc3RPYmplY3QoKSwgL2NvbW1hbmRJZCBpcyBtaXNzaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgYW1vdW50IGlzIG1pc3NpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHR4QnVpbGRlclxuICAgICAgLmNvbW1hbmRJZChjb21tYW5kSWQpXG4gICAgICAudG9rZW4odG9rZW4pXG4gICAgICAub3BlcmF0b3JJZChvcGVyYXRvcklkKVxuICAgICAgLmNvbnRyYWN0SWQoY29udHJhY3RJZClcbiAgICAgIC50cmFkZUlkKHRyYWRlSWQpXG4gICAgICAudHJhbnNmZXJMZWdJZCh0cmFuc2ZlckxlZ0lkKVxuICAgICAgLmFsbG9jYXRlQmVmb3JlKGFsbG9jYXRlQmVmb3JlKVxuICAgICAgLnNldHRsZUJlZm9yZShzZXR0bGVCZWZvcmUpXG4gICAgICAucmVjZWl2ZXJQYXJ0eUlkKHJlY2VpdmVyUGFydHlJZClcbiAgICAgIC5zZW5kZXJQYXJ0eUlkKHNlbmRlclBhcnR5SWQpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpLCAvYW1vdW50IGlzIG1pc3NpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiB0b2tlbiBpcyBtaXNzaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0eEJ1aWxkZXJcbiAgICAgIC5jb21tYW5kSWQoY29tbWFuZElkKVxuICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAub3BlcmF0b3JJZChvcGVyYXRvcklkKVxuICAgICAgLmNvbnRyYWN0SWQoY29udHJhY3RJZClcbiAgICAgIC50cmFkZUlkKHRyYWRlSWQpXG4gICAgICAudHJhbnNmZXJMZWdJZCh0cmFuc2ZlckxlZ0lkKVxuICAgICAgLmFsbG9jYXRlQmVmb3JlKGFsbG9jYXRlQmVmb3JlKVxuICAgICAgLnNldHRsZUJlZm9yZShzZXR0bGVCZWZvcmUpXG4gICAgICAucmVjZWl2ZXJQYXJ0eUlkKHJlY2VpdmVyUGFydHlJZClcbiAgICAgIC5zZW5kZXJQYXJ0eUlkKHNlbmRlclBhcnR5SWQpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpLCAvdG9rZW4gaXMgbWlzc2luZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIG9wZXJhdG9ySWQgaXMgbWlzc2luZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgdHhCdWlsZGVyXG4gICAgICAuY29tbWFuZElkKGNvbW1hbmRJZClcbiAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgLnRva2VuKHRva2VuKVxuICAgICAgLmNvbnRyYWN0SWQoY29udHJhY3RJZClcbiAgICAgIC50cmFkZUlkKHRyYWRlSWQpXG4gICAgICAudHJhbnNmZXJMZWdJZCh0cmFuc2ZlckxlZ0lkKVxuICAgICAgLmFsbG9jYXRlQmVmb3JlKGFsbG9jYXRlQmVmb3JlKVxuICAgICAgLnNldHRsZUJlZm9yZShzZXR0bGVCZWZvcmUpXG4gICAgICAucmVjZWl2ZXJQYXJ0eUlkKHJlY2VpdmVyUGFydHlJZClcbiAgICAgIC5zZW5kZXJQYXJ0eUlkKHNlbmRlclBhcnR5SWQpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpLCAvb3BlcmF0b3JJZCBpcyBtaXNzaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgY29udHJhY3RJZCBpcyBtaXNzaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0eEJ1aWxkZXJcbiAgICAgIC5jb21tYW5kSWQoY29tbWFuZElkKVxuICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAudG9rZW4odG9rZW4pXG4gICAgICAub3BlcmF0b3JJZChvcGVyYXRvcklkKVxuICAgICAgLnRyYWRlSWQodHJhZGVJZClcbiAgICAgIC50cmFuc2ZlckxlZ0lkKHRyYW5zZmVyTGVnSWQpXG4gICAgICAuYWxsb2NhdGVCZWZvcmUoYWxsb2NhdGVCZWZvcmUpXG4gICAgICAuc2V0dGxlQmVmb3JlKHNldHRsZUJlZm9yZSlcbiAgICAgIC5yZWNlaXZlclBhcnR5SWQocmVjZWl2ZXJQYXJ0eUlkKVxuICAgICAgLnNlbmRlclBhcnR5SWQoc2VuZGVyUGFydHlJZCk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCksIC9jb250cmFjdElkIGlzIG1pc3NpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiB0cmFkZUlkIGlzIG1pc3NpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHR4QnVpbGRlclxuICAgICAgLmNvbW1hbmRJZChjb21tYW5kSWQpXG4gICAgICAuYW1vdW50KGFtb3VudClcbiAgICAgIC50b2tlbih0b2tlbilcbiAgICAgIC5vcGVyYXRvcklkKG9wZXJhdG9ySWQpXG4gICAgICAuY29udHJhY3RJZChjb250cmFjdElkKVxuICAgICAgLnRyYW5zZmVyTGVnSWQodHJhbnNmZXJMZWdJZClcbiAgICAgIC5hbGxvY2F0ZUJlZm9yZShhbGxvY2F0ZUJlZm9yZSlcbiAgICAgIC5zZXR0bGVCZWZvcmUoc2V0dGxlQmVmb3JlKVxuICAgICAgLnJlY2VpdmVyUGFydHlJZChyZWNlaXZlclBhcnR5SWQpXG4gICAgICAuc2VuZGVyUGFydHlJZChzZW5kZXJQYXJ0eUlkKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci50b1JlcXVlc3RPYmplY3QoKSwgL3RyYWRlSWQgaXMgbWlzc2luZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIHRyYW5zZmVyTGVnSWQgaXMgbWlzc2luZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgdHhCdWlsZGVyXG4gICAgICAuY29tbWFuZElkKGNvbW1hbmRJZClcbiAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgLnRva2VuKHRva2VuKVxuICAgICAgLm9wZXJhdG9ySWQob3BlcmF0b3JJZClcbiAgICAgIC5jb250cmFjdElkKGNvbnRyYWN0SWQpXG4gICAgICAudHJhZGVJZCh0cmFkZUlkKVxuICAgICAgLmFsbG9jYXRlQmVmb3JlKGFsbG9jYXRlQmVmb3JlKVxuICAgICAgLnNldHRsZUJlZm9yZShzZXR0bGVCZWZvcmUpXG4gICAgICAucmVjZWl2ZXJQYXJ0eUlkKHJlY2VpdmVyUGFydHlJZClcbiAgICAgIC5zZW5kZXJQYXJ0eUlkKHNlbmRlclBhcnR5SWQpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpLCAvdHJhbnNmZXJMZWdJZCBpcyBtaXNzaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgYWxsb2NhdGVCZWZvcmUgaXMgbWlzc2luZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgdHhCdWlsZGVyXG4gICAgICAuY29tbWFuZElkKGNvbW1hbmRJZClcbiAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgLnRva2VuKHRva2VuKVxuICAgICAgLm9wZXJhdG9ySWQob3BlcmF0b3JJZClcbiAgICAgIC5jb250cmFjdElkKGNvbnRyYWN0SWQpXG4gICAgICAudHJhZGVJZCh0cmFkZUlkKVxuICAgICAgLnRyYW5zZmVyTGVnSWQodHJhbnNmZXJMZWdJZClcbiAgICAgIC5zZXR0bGVCZWZvcmUoc2V0dGxlQmVmb3JlKVxuICAgICAgLnJlY2VpdmVyUGFydHlJZChyZWNlaXZlclBhcnR5SWQpXG4gICAgICAuc2VuZGVyUGFydHlJZChzZW5kZXJQYXJ0eUlkKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci50b1JlcXVlc3RPYmplY3QoKSwgL2FsbG9jYXRlQmVmb3JlIGlzIG1pc3NpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBzZXR0bGVCZWZvcmUgaXMgbWlzc2luZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgdHhCdWlsZGVyXG4gICAgICAuY29tbWFuZElkKGNvbW1hbmRJZClcbiAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgLnRva2VuKHRva2VuKVxuICAgICAgLm9wZXJhdG9ySWQob3BlcmF0b3JJZClcbiAgICAgIC5jb250cmFjdElkKGNvbnRyYWN0SWQpXG4gICAgICAudHJhZGVJZCh0cmFkZUlkKVxuICAgICAgLnRyYW5zZmVyTGVnSWQodHJhbnNmZXJMZWdJZClcbiAgICAgIC5hbGxvY2F0ZUJlZm9yZShhbGxvY2F0ZUJlZm9yZSlcbiAgICAgIC5yZWNlaXZlclBhcnR5SWQocmVjZWl2ZXJQYXJ0eUlkKVxuICAgICAgLnNlbmRlclBhcnR5SWQoc2VuZGVyUGFydHlJZCk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCksIC9zZXR0bGVCZWZvcmUgaXMgbWlzc2luZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIHJlY2VpdmVyUGFydHlJZCBpcyBtaXNzaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0eEJ1aWxkZXJcbiAgICAgIC5jb21tYW5kSWQoY29tbWFuZElkKVxuICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAudG9rZW4odG9rZW4pXG4gICAgICAub3BlcmF0b3JJZChvcGVyYXRvcklkKVxuICAgICAgLmNvbnRyYWN0SWQoY29udHJhY3RJZClcbiAgICAgIC50cmFkZUlkKHRyYWRlSWQpXG4gICAgICAudHJhbnNmZXJMZWdJZCh0cmFuc2ZlckxlZ0lkKVxuICAgICAgLmFsbG9jYXRlQmVmb3JlKGFsbG9jYXRlQmVmb3JlKVxuICAgICAgLnNldHRsZUJlZm9yZShzZXR0bGVCZWZvcmUpXG4gICAgICAuc2VuZGVyUGFydHlJZChzZW5kZXJQYXJ0eUlkKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci50b1JlcXVlc3RPYmplY3QoKSwgL3JlY2VpdmVyUGFydHlJZCBpcyBtaXNzaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgc2VuZGVyUGFydHlJZCBpcyBtaXNzaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0eEJ1aWxkZXJcbiAgICAgIC5jb21tYW5kSWQoY29tbWFuZElkKVxuICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAudG9rZW4odG9rZW4pXG4gICAgICAub3BlcmF0b3JJZChvcGVyYXRvcklkKVxuICAgICAgLmNvbnRyYWN0SWQoY29udHJhY3RJZClcbiAgICAgIC50cmFkZUlkKHRyYWRlSWQpXG4gICAgICAudHJhbnNmZXJMZWdJZCh0cmFuc2ZlckxlZ0lkKVxuICAgICAgLmFsbG9jYXRlQmVmb3JlKGFsbG9jYXRlQmVmb3JlKVxuICAgICAgLnNldHRsZUJlZm9yZShzZXR0bGVCZWZvcmUpXG4gICAgICAucmVjZWl2ZXJQYXJ0eUlkKHJlY2VpdmVyUGFydHlJZCk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCksIC9zZW5kZXJQYXJ0eUlkIGlzIG1pc3NpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBjb21tYW5kSWQgaXMgYW4gZW1wdHkgc3RyaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci5jb21tYW5kSWQoJycpLCAvY29tbWFuZElkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgdG9rZW4gaXMgYW4gZW1wdHkgc3RyaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci50b2tlbignJyksIC90b2tlbiBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIG9wZXJhdG9ySWQgaXMgYW4gZW1wdHkgc3RyaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci5vcGVyYXRvcklkKCcnKSwgL29wZXJhdG9ySWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBjb250cmFjdElkIGlzIGFuIGVtcHR5IHN0cmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIuY29udHJhY3RJZCgnJyksIC9jb250cmFjdElkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgdHJhZGVJZCBpcyBhbiBlbXB0eSBzdHJpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnRyYWRlSWQoJycpLCAvdHJhZGVJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIHRyYW5zZmVyTGVnSWQgaXMgYW4gZW1wdHkgc3RyaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci50cmFuc2ZlckxlZ0lkKCcnKSwgL3RyYW5zZmVyTGVnSWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBhbGxvY2F0ZUJlZm9yZSBpcyBhbiBlbXB0eSBzdHJpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLmFsbG9jYXRlQmVmb3JlKCcnKSwgL2FsbG9jYXRlQmVmb3JlIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgc2V0dGxlQmVmb3JlIGlzIGFuIGVtcHR5IHN0cmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIuc2V0dGxlQmVmb3JlKCcnKSwgL3NldHRsZUJlZm9yZSBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIHJlY2VpdmVyUGFydHlJZCBpcyBhbiBlbXB0eSBzdHJpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnJlY2VpdmVyUGFydHlJZCgnJyksIC9yZWNlaXZlclBhcnR5SWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBzZXQgdGhlIHByZXBhcmVDb21tYW5kIHZpYSBzZXRUcmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgY29uc3QgcHJlcGFyZUNvbW1hbmRSZXNwb25zZSA9IHtcbiAgICAgIHByZXBhcmVkVHJhbnNhY3Rpb25IYXNoOiAnYWJjMTIzJyxcbiAgICAgIGhhc2hpbmdTY2hlbWVWZXJzaW9uOiAnSEFTSElOR19TQ0hFTUVfVkVSU0lPTl9WMicsXG4gICAgfTtcbiAgICB0eEJ1aWxkZXIuc2V0VHJhbnNhY3Rpb24ocHJlcGFyZUNvbW1hbmRSZXNwb25zZSk7XG4gICAgYXNzZXJ0LmRlZXBFcXVhbCh0eC5wcmVwYXJlQ29tbWFuZCwgcHJlcGFyZUNvbW1hbmRSZXNwb25zZSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdQcmVwYXJlZCB0cmFuc2FjdGlvbiBwYXJzaW5nJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcGFyc2UgdGhlIGFsbG9jYXRpb24gYWxsb2NhdGUgcHJlcGFyZWQgdHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgICAgdHhCdWlsZGVyLmNvbW1hbmRJZChjb21tYW5kSWQpO1xuICAgICAgdHhCdWlsZGVyLnNldFRyYW5zYWN0aW9uKENhbnRvbkFsbG9jYXRpb25BbGxvY2F0ZVByZXBhcmVSZXNwb25zZSk7XG4gICAgICBjb25zdCB0eERhdGEgPSB0eEJ1aWxkZXIudHJhbnNhY3Rpb24udG9Kc29uKCk7XG4gICAgICBzaG91bGQuZXhpc3QodHhEYXRhKTtcbiAgICAgIGFzc2VydC5lcXVhbChcbiAgICAgICAgdHhEYXRhLnNlbmRlcixcbiAgICAgICAgJ3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMidcbiAgICAgICk7XG4gICAgICAvLyByZWNlaXZlciA9IHRyYW5zZmVyTGVnLnJlY2VpdmVyIGZyb20gRHZwTGVnQWxsb2NhdGlvbiDigJQgdGhlIGFjdHVhbCBzZXR0bGVtZW50IGNvdW50ZXJwYXJ0eVxuICAgICAgYXNzZXJ0LmVxdWFsKFxuICAgICAgICB0eERhdGEucmVjZWl2ZXIsXG4gICAgICAgICdyYXZpLTItc3RlcC1wYXJ0eS1uZXc6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyJ1xuICAgICAgKTtcbiAgICAgIGFzc2VydC5lcXVhbCh0eERhdGEuYW1vdW50LCAnNTAwMDAwMDAwMDAnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgdGhlIHJhdyBhbGxvY2F0aW9uIGFsbG9jYXRlIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICAgIHR4QnVpbGRlci5jb21tYW5kSWQoY29tbWFuZElkKTtcbiAgICAgIHR4QnVpbGRlci5zZXRUcmFuc2FjdGlvbihDYW50b25BbGxvY2F0aW9uQWxsb2NhdGVQcmVwYXJlUmVzcG9uc2UpO1xuICAgICAgYXdhaXQgdHhCdWlsZGVyLnZhbGlkYXRlUmF3VHJhbnNhY3Rpb24oQ2FudG9uQWxsb2NhdGlvbkFsbG9jYXRlUHJlcGFyZVJlc3BvbnNlLnByZXBhcmVkVHJhbnNhY3Rpb24pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSB0aGUgYWxsb2NhdGlvbiBhbGxvY2F0ZSB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uQWxsb2NhdGVCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICAgIHR4LnByZXBhcmVDb21tYW5kID0gQ2FudG9uQWxsb2NhdGlvbkFsbG9jYXRlUHJlcGFyZVJlc3BvbnNlO1xuICAgICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICAgIHR4QnVpbGRlci5zZXRUcmFuc2FjdGlvbihDYW50b25BbGxvY2F0aW9uQWxsb2NhdGVQcmVwYXJlUmVzcG9uc2UpO1xuICAgICAgYXdhaXQgdHhCdWlsZGVyLnZhbGlkYXRlVHJhbnNhY3Rpb24odHgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -60,6 +60,14 @@ describe('Canton Util', function () {
60
60
  assert_1.default.equal(parsedData.receiver, 'ravi-test-party-1::12205b4e3537a95126d90604592344d8ad3c3ddccda4f79901954280ee19c576714d');
61
61
  assert_1.default.equal(parsedData.amount, '0');
62
62
  });
63
+ it('should parse the allocation allocate prepared transaction', () => {
64
+ const parsedData = utils_1.default.parseRawCantonTransactionData(resources_1.CantonAllocationAllocatePrepareResponse.preparedTransaction, sdk_core_1.TransactionType.AllocationAllocate);
65
+ should_1.default.exist(parsedData);
66
+ assert_1.default.equal(parsedData.sender, 'ravi-2-step-party::122092e7d33ac10c0f3d55976342f37555df05da5b742956d56a62ae2367769079d2');
67
+ // receiver = transferLeg.receiver from DvpLegAllocation — the actual settlement counterparty
68
+ assert_1.default.equal(parsedData.receiver, 'ravi-2-step-party-new::122092e7d33ac10c0f3d55976342f37555df05da5b742956d56a62ae2367769079d2');
69
+ assert_1.default.equal(parsedData.amount, '50000000000');
70
+ });
63
71
  });
64
72
  describe('Wallet init transaction', function () {
65
73
  it('should locally generate and validate the hash for topology transaction', function () {
@@ -373,4 +381,4 @@ describe('Canton Utils - CantonCommand helpers', function () {
373
381
  });
374
382
  });
375
383
  });
376
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsb0RBQTRCO0FBRTVCLDhDQUFrRDtBQUVsRCxnRUFBd0M7QUFFeEMsNENBYXNCO0FBRXRCLFFBQVEsQ0FBQyxhQUFhLEVBQUU7SUFDdEIsUUFBUSxDQUFDLHdCQUF3QixFQUFFO1FBQ2pDLEVBQUUsQ0FBQyx1Q0FBdUMsRUFBRSxHQUFHLEVBQUU7WUFDL0MsTUFBTSxVQUFVLEdBQUcsZUFBSyxDQUFDLDZCQUE2QixDQUFDLHNDQUEwQixFQUFFLDBCQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekcsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDekIsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSw2RUFBNkUsQ0FBQyxDQUFDO1lBQy9HLGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsNkVBQTZFLENBQUMsQ0FBQztZQUNqSCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ2xELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDBEQUEwRCxFQUFFO1lBQzdELE1BQU0sVUFBVSxHQUFHLGVBQUssQ0FBQyw2QkFBNkIsQ0FBQyx1Q0FBMkIsRUFBRSwwQkFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFHLGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3pCLGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsNkVBQTZFLENBQUMsQ0FBQztZQUMvRyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLDZFQUE2RSxDQUFDLENBQUM7WUFDakgsZ0JBQU0sQ0FB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QUFRLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNsRyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5cbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5cbmltcG9ydCB1dGlscyBmcm9tICcuLi8uLi9zcmMvbGliL3V0aWxzJztcbmltcG9ydCB7IFZhbHVlIH0gZnJvbSAnLi4vLi4vc3JjL2xpYi9yZXNvdXJjZXNJbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgQ0FOVE9OX0FERFJFU1NFUyxcbiAgQ0FOVE9OX0JMT0NLX0hFSUdIVCxcbiAgQ2FudG9uRXhlcmNpc2VDb21tYW5kUHJlcGFyZVJlc3BvbnNlLFxuICBHZW5lcmF0ZVRvcG9sb2d5UmVzcG9uc2UsXG4gIE9uZVN0ZXBQcmVBcHByb3ZhbFByZXBhcmVSZXNwb25zZSxcbiAgUHJlcGFyZWRUcmFuc2FjdGlvblJhd0RhdGEsXG4gIFByZXBhcmVkVHJhbnNhY3Rpb25XaXRoTWVtbyxcbiAgUHJlcGFyZWRUeG4xU3RlcFJlY2VpdmVyLFxuICBQcmVwYXJlZFR4bjJTdGVwUmVjZWl2ZXIsXG4gIFByZXBhcmVTdWJtaXNzaW9uUmVzcG9uc2UsXG4gIFRyYW5zZmVyQWNjZXB0YW5jZVByZXBhcmVSZXNwb25zZSxcbiAgVHJhbnNmZXJSZWplY3Rpb25QcmVwYXJlUmVzcG9uc2UsXG59IGZyb20gJy4uL3Jlc291cmNlcyc7XG5cbmRlc2NyaWJlKCdDYW50b24gVXRpbCcsIGZ1bmN0aW9uICgpIHtcbiAgZGVzY3JpYmUoJ1JhdyB0cmFuc2FjdGlvbiBwYXJzZXInLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBwYXJzZSB0aGUgcHJlcGFyZWQgdHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgICBjb25zdCBwYXJzZWREYXRhID0gdXRpbHMucGFyc2VSYXdDYW50b25UcmFuc2FjdGlvbkRhdGEoUHJlcGFyZWRUcmFuc2FjdGlvblJhd0RhdGEsIFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICAgIHNob3VsZC5leGlzdChwYXJzZWREYXRhKTtcbiAgICAgIGFzc2VydC5lcXVhbChwYXJzZWREYXRhLnNlbmRlciwgJ2FiYy0xOjoxMjIwMGMxZWUyMjZmYmRmOWZiYTM0NjFjMmMwYzczMzMxYjY5ZDNjNmZkOGNmY2UyOGNkZjg2NDE0MTE0MWNjNjU2ZCcpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHBhcnNlZERhdGEucmVjZWl2ZXIsICdhYmMtMjo6MTIyMDdlOTZhZGExOGE4NDVhZGY0ZGMwMTQxMDI2NTYzM2Q1MjY2ZGNhOWJiMjgwYzk4ZTM1YzM2OTJkYjg3ZDNlMzUnKTtcbiAgICAgIGFzc2VydC5lcXVhbChwYXJzZWREYXRhLmFtb3VudCwgJzIwMDAwMDAwMDAwMCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXJzZSB0aGUgcHJlcGFyZWQgdHJhbnNhY3Rpb24gd2l0aCBtZW1vIGlkIGZpZWxkJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcGFyc2VkRGF0YSA9IHV0aWxzLnBhcnNlUmF3Q2FudG9uVHJhbnNhY3Rpb25EYXRhKFByZXBhcmVkVHJhbnNhY3Rpb25XaXRoTWVtbywgVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgc2hvdWxkLmV4aXN0KHBhcnNlZERhdGEpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHBhcnNlZERhdGEuc2VuZGVyLCAnMTIyMGI6OjEyMjBiYWI2ZWYzZWVjMzdiMWIzODE2MDk5YmVmZTcyYjQzYmY2YzEzODAwNzdkNjM0OTI1NGM0MWZmYjdmNzc1M2JiJyk7XG4gICAgICBhc3NlcnQuZXF1YWwocGFyc2VkRGF0YS5yZWNlaXZlciwgJzEyMjBhOjoxMjIwYWRlNjAzMDBjZjdkMGIxOGZmYWEyZmZlNGY0OTJhZDFhZDYwMWNmYzE2MmIyMGY3N2VjOTlkMTZjMmMyZjE1OCcpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHBhcnNlZERhdGEuYW1vdW50LCAnMTAwMDAwMDAwMCcpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHBhcnNlZERhdGEubWVtb0lkLCAnMTEnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcGFyc2UgY29ycmVjdGx5IHdoZW4gcmVjZWl2ZXIgaXMgb24gMi1zdGVwJywgKCkgPT4ge1xuICAgICAgY29uc3QgcGFyc2VkRGF0YSA9IHV0aWxzLnBhcnNlUmF3Q2FudG9uVHJhbnNhY3Rpb25EYXRhKFByZXBhcmVkVHhuMlN0ZXBSZWNlaXZlciwgVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgc2hvdWxkLmV4aXN0KHBhcnNlZERhdGEpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHBhcnNlZERhdGEuc2VuZGVyLCAnMTIyMGE6OjEyMjBhZGU2MDMwMGNmN2QwYjE4ZmZhYTJmZmU0ZjQ5MmFkMWFkNjAxY2ZjMTYyYjIwZjc3ZWM5OWQxNmMyYzJmMTU4Jyk7XG4gICAgICBhc3NlcnQuZXF1YWwoXG4gICAgICAgIHBhcnNlZERhdGEucmVjZWl2ZXIsXG4gICAgICAgICdyYXZpLXRlc3QtcGFydHktMTo6MTIyMDkyZTdkMzNhYzEwYzBmM2Q1NTk3NjM0MmYzNzU1NWRmMDVkYTViNzQyOTU2ZDU2YTYyYWUyMzY3NzY5MDc5ZDInXG4gICAgICApO1xuICAgICAgYXNzZXJ0LmVxdWFsKHBhcnNlZERhdGEuYW1vdW50LCAnMjAwMDAwMDAwMDAnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcGFyc2UgY29ycmVjdGx5IDEnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwYXJzZWREYXRhID0gdXRpbHMucGFyc2VSYXdDYW50b25UcmFuc2FjdGlvbkRhdGEoUHJlcGFyZWRUeG4xU3RlcFJlY2VpdmVyLCBUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgICBzaG91bGQuZXhpc3QocGFyc2VkRGF0YSk7XG4gICAgICBhc3NlcnQuZXF1YWwocGFyc2VkRGF0YS5zZW5kZXIsICcxMjIwYTo6MTIyMGFkZTYwMzAwY2Y3ZDBiMThmZmFhMmZmZTRmNDkyYWQxYWQ2MDFjZmMxNjJiMjBmNzdlYzk5ZDE2YzJjMmYxNTgnKTtcbiAgICAgIGFzc2VydC5lcXVhbChcbiAgICAgICAgcGFyc2VkRGF0YS5yZWNlaXZlcixcbiAgICAgICAgJ3JhdmktZGVtby1wYXJ0eS10eG4tMDEtdGFwcGVyOjoxMjIwZWE3YWI1YTcyM2Y4YTZiMjA3OGU2MTdlNmM1OGNiN2U3OGU0OTk0N2RkYzIzOWUxYTk0MWFhNTZlNmJhMDhiNCdcbiAgICAgICk7XG4gICAgICBhc3NlcnQuZXF1YWwocGFyc2VkRGF0YS5hbW91bnQsICcyMDAwMDAwMDAwMCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXJzZSB0aGUgYWNjZXB0YW5jZSBwcmVwYXJlZCB0cmFuc2FjdGlvbicsICgpID0+IHtcbiAgICAgIGNvbnN0IHBhcnNlZERhdGEgPSB1dGlscy5wYXJzZVJhd0NhbnRvblRyYW5zYWN0aW9uRGF0YShcbiAgICAgICAgVHJhbnNmZXJBY2NlcHRhbmNlUHJlcGFyZVJlc3BvbnNlLnByZXBhcmVkVHJhbnNhY3Rpb24sXG4gICAgICAgIFRyYW5zYWN0aW9uVHlwZS5UcmFuc2ZlckFjY2VwdFxuICAgICAgKTtcbiAgICAgIHNob3VsZC5leGlzdChwYXJzZWREYXRhKTtcbiAgICAgIGFzc2VydC5lcXVhbChwYXJzZWREYXRhLnNlbmRlciwgJ0RTTzo6MTIyMGJlNThjMjllNjVkZTQwYmYyNzNiZTFkYzJiMjY2ZDQzYTlhMDAyZWE1YjE4OTU1YWVlZjdhYWM4ODFiYjQ3MWEnKTtcbiAgICAgIGFzc2VydC5lcXVhbChwYXJzZWREYXRhLnJlY2VpdmVyLCAnYWJjZGU6OjEyMjA1YjRlMzUzN2E5NTEyNmQ5MDYwNDU5MjM0NGQ4YWQzYzNkZGNjZGE0Zjc5OTAxOTU0MjgwZWUxOWM1NzY3MTRkJyk7XG4gICAgICBhc3NlcnQuZXF1YWwocGFyc2VkRGF0YS5hbW91bnQsICc1MDAwMDAwMDAwMCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXJzZSB0aGUgcmVqZWN0aW9uIHByZXBhcmVkIHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgICAgY29uc3QgcGFyc2VkRGF0YSA9IHV0aWxzLnBhcnNlUmF3Q2FudG9uVHJhbnNhY3Rpb25EYXRhKFxuICAgICAgICBUcmFuc2ZlclJlamVjdGlvblByZXBhcmVSZXNwb25zZS5wcmVwYXJlZFRyYW5zYWN0aW9uLFxuICAgICAgICBUcmFuc2FjdGlvblR5cGUuVHJhbnNmZXJSZWplY3RcbiAgICAgICk7XG4gICAgICBzaG91bGQuZXhpc3QocGFyc2VkRGF0YSk7XG4gICAgICBhc3NlcnQuZXF1YWwocGFyc2VkRGF0YS5zZW5kZXIsICdEU086OjEyMjBiZTU4YzI5ZTY1ZGU0MGJmMjczYmUxZGMyYjI2NmQ0M2E5YTAwMmVhNWIxODk1NWFlZWY3YWFjODgxYmI0NzFhJyk7XG4gICAgICBhc3NlcnQuZXF1YWwocGFyc2VkRGF0YS5yZWNlaXZlciwgJzEyMjAxOjoxMjIwMzg0MDJjZjE2NTA4NzZkMjkyMGQ2MDQ3YjExYTRhYWYwZGU3YjQyOGU5OTE2MDA5Y2JhMmEyMmIxYWUyMmMxYScpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHBhcnNlZERhdGEuYW1vdW50LCAnNTAwMDAwMDAwMDAnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcGFyc2UgdGhlIG9uZS1zdGVwIHByZWFwcHJvdmFsIHByZXBhcmVkIHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgICAgY29uc3QgcGFyc2VkRGF0YSA9IHV0aWxzLnBhcnNlUmF3Q2FudG9uVHJhbnNhY3Rpb25EYXRhKFxuICAgICAgICBPbmVTdGVwUHJlQXBwcm92YWxQcmVwYXJlUmVzcG9uc2UucHJlcGFyZWRUcmFuc2FjdGlvbixcbiAgICAgICAgVHJhbnNhY3Rpb25UeXBlLk9uZVN0ZXBQcmVBcHByb3ZhbFxuICAgICAgKTtcbiAgICAgIHNob3VsZC5leGlzdChwYXJzZWREYXRhKTtcbiAgICAgIGFzc2VydC5lcXVhbChcbiAgICAgICAgcGFyc2VkRGF0YS5zZW5kZXIsXG4gICAgICAgICdCaXRnby1kZXZuZXQtdmFsaWRhdG9yLTE6OjEyMjBhMGEwZjYwYjBlNjJiNWQ3NTBjNDg0YjE4YzA5MWRiYTIzMDgwYzEzM2Q5NDQ2MTRiYTc1YTU4NThjYmEzMDQ1J1xuICAgICAgKTtcbiAgICAgIGFzc2VydC5lcXVhbChcbiAgICAgICAgcGFyc2VkRGF0YS5yZWNlaXZlcixcbiAgICAgICAgJ3JhdmktdGVzdC1wYXJ0eS0xOjoxMjIwNWI0ZTM1MzdhOTUxMjZkOTA2MDQ1OTIzNDRkOGFkM2MzZGRjY2RhNGY3OTkwMTk1NDI4MGVlMTljNTc2NzE0ZCdcbiAgICAgICk7XG4gICAgICBhc3NlcnQuZXF1YWwocGFyc2VkRGF0YS5hbW91bnQsICcwJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdXYWxsZXQgaW5pdCB0cmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIGxvY2FsbHkgZ2VuZXJhdGUgYW5kIHZhbGlkYXRlIHRoZSBoYXNoIGZvciB0b3BvbG9neSB0cmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGNvbXB1dGVkSGFzaCA9IHV0aWxzLmNvbXB1dGVIYXNoRnJvbUNyZWF0ZVBhcnR5UmVzcG9uc2UoR2VuZXJhdGVUb3BvbG9neVJlc3BvbnNlLnRvcG9sb2d5VHJhbnNhY3Rpb25zKTtcbiAgICAgIHNob3VsZC5leGlzdChjb21wdXRlZEhhc2gpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbXB1dGVkSGFzaCwgR2VuZXJhdGVUb3BvbG9neVJlc3BvbnNlLm11bHRpSGFzaCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdQcmVwYXJlIHN1Ym1pc3Npb24gcmVzcG9uc2UgdmFsaWRhdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIGxvY2FsbHkgZ2VuZXJhdGUgYW5kIHZhbGlkYXRlIHRoZSBoYXNoIGZvciBwcmVwYXJlIHN1Ym1pc3Npb24gcmVzcG9uc2UnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjb21wdXRlZEhhc2ggPSBhd2FpdCB1dGlscy5jb21wdXRlSGFzaEZyb21QcmVwYXJlU3VibWlzc2lvblJlc3BvbnNlKFxuICAgICAgICBQcmVwYXJlU3VibWlzc2lvblJlc3BvbnNlLnByZXBhcmVkVHJhbnNhY3Rpb25cbiAgICAgICk7XG4gICAgICBzaG91bGQuZXhpc3QoY29tcHV0ZWRIYXNoKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjb21wdXRlZEhhc2gsIFByZXBhcmVTdWJtaXNzaW9uUmVzcG9uc2UucHJlcGFyZWRUcmFuc2FjdGlvbkhhc2gpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnQ2hlY2sgaWYgdGhlIGFkZHJlc3MgaXMgdmFsaWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIHRoZSBhZGRyZXNzIGlzIHZhbGlkJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgaXNWYWxpZCA9IHV0aWxzLmlzVmFsaWRBZGRyZXNzKENBTlRPTl9BRERSRVNTRVMuVkFMSURfQUREUkVTUyk7XG4gICAgICBzaG91bGQuZXhpc3QoaXNWYWxpZCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXNWYWxpZCwgdHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHBhcnR5IGhpbnQgaXMgaW52YWxpZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGlzVmFsaWQgPSB1dGlscy5pc1ZhbGlkQWRkcmVzcyhDQU5UT05fQUREUkVTU0VTLlZBTElEX1BBUlRZX0hJTlQpO1xuICAgICAgc2hvdWxkLmV4aXN0KGlzVmFsaWQpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGlzVmFsaWQsIHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiBmaW5nZXJwcmludCBpcyBpbnZhbGlkJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgaXNWYWxpZCA9IHV0aWxzLmlzVmFsaWRBZGRyZXNzKENBTlRPTl9BRERSRVNTRVMuSU5WQUxJRF9GSU5HRVJQUklOVCk7XG4gICAgICBzaG91bGQuZXhpc3QoaXNWYWxpZCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXNWYWxpZCwgZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiBwYXJ0eSBoaW50IGlzIG1pc3NpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBpc1ZhbGlkID0gdXRpbHMuaXNWYWxpZEFkZHJlc3MoQ0FOVE9OX0FERFJFU1NFUy5NSVNTSU5HX1BBUlRZX0hJTlQpO1xuICAgICAgc2hvdWxkLmV4aXN0KGlzVmFsaWQpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGlzVmFsaWQsIGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gZmluZ2VycHJpbnQgaXMgbWlzc2luZycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGlzVmFsaWQgPSB1dGlscy5pc1ZhbGlkQWRkcmVzcyhDQU5UT05fQUREUkVTU0VTLk1JU1NJTkdfRklOR0VSUFJJTlQpO1xuICAgICAgc2hvdWxkLmV4aXN0KGlzVmFsaWQpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGlzVmFsaWQsIGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBtZW1vIGlkIGlzIHZhbGlkJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgaXNWYWxpZCA9IHV0aWxzLmlzVmFsaWRBZGRyZXNzKENBTlRPTl9BRERSRVNTRVMuVkFMSURfTUVNT19JRCk7XG4gICAgICBzaG91bGQuZXhpc3QoaXNWYWxpZCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXNWYWxpZCwgdHJ1ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdDaGVjayBpZiBibG9jayBoYXNoIGlzIHZhbGlkJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiB0aGUgYmxvY2sgaGFzaCBpcyB2YWxpZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGlzVmFsaWQgPSB1dGlscy5pc1ZhbGlkQmxvY2tJZChDQU5UT05fQkxPQ0tfSEVJR0hULlZBTElEX0hBU0gpO1xuICAgICAgc2hvdWxkLmV4aXN0KGlzVmFsaWQpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGlzVmFsaWQsIHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIHRoZSBibG9jayBoYXNoIGhhcyB2ZXJzaW9uJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgaXNWYWxpZCA9IHV0aWxzLmlzVmFsaWRCbG9ja0lkKENBTlRPTl9CTE9DS19IRUlHSFQuVkFMSURfSEFTSF9XSVRIX1ZFUlNJT04pO1xuICAgICAgc2hvdWxkLmV4aXN0KGlzVmFsaWQpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGlzVmFsaWQsIHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiB0aGUgYmxvY2sgaGFzaCBpcyBub3QgYSBudW1iZXInLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBpc1ZhbGlkID0gdXRpbHMuaXNWYWxpZEJsb2NrSWQoQ0FOVE9OX0JMT0NLX0hFSUdIVC5JTlZBTElEX0JMT0NLX0hBU0gpO1xuICAgICAgc2hvdWxkLmV4aXN0KGlzVmFsaWQpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGlzVmFsaWQsIGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdGhlIGJsb2NrIGhhc2ggaXMgbmVnYXRpdmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBpc1ZhbGlkID0gdXRpbHMuaXNWYWxpZEJsb2NrSWQoQ0FOVE9OX0JMT0NLX0hFSUdIVC5ORUdBVElWRV9CTE9DS19IQVNIKTtcbiAgICAgIHNob3VsZC5leGlzdChpc1ZhbGlkKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChpc1ZhbGlkLCBmYWxzZSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdDYW50b24gVXRpbHMgLSBDYW50b25Db21tYW5kIGhlbHBlcnMnLCBmdW5jdGlvbiAoKSB7XG4gIGRlc2NyaWJlKCdwYXJzZUNhbnRvblRlbXBsYXRlSWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBwYXJzZSB2YWxpZCBcIlBrZzpNb2R1bGU6RW50aXR5XCIgZm9ybWF0JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gdXRpbHMucGFyc2VDYW50b25UZW1wbGF0ZUlkKFxuICAgICAgICAnYWJjMTIzOlV0aWxpdHkuUmVnaXN0cnkuQXBwLlYwLlNlcnZpY2UuQWxsb2NhdGlvbkZhY3Rvcnk6QWxsb2NhdGlvbkZhY3RvcnknXG4gICAgICApO1xuICAgICAgc2hvdWxkLmV4aXN0KHJlc3VsdCk7XG4gICAgICBhc3NlcnQuZXF1YWwocmVzdWx0IS5wa2csICdhYmMxMjMnKTtcbiAgICAgIGFzc2VydC5lcXVhbChyZXN1bHQhLm1vZHVsZU5hbWUsICdVdGlsaXR5LlJlZ2lzdHJ5LkFwcC5WMC5TZXJ2aWNlLkFsbG9jYXRpb25GYWN0b3J5Jyk7XG4gICAgICBhc3NlcnQuZXF1YWwocmVzdWx0IS5lbnRpdHlOYW1lLCAnQWxsb2NhdGlvbkZhY3RvcnknKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHVuZGVmaW5lZCBmb3Igbm9uLXN0cmluZyBpbnB1dCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHV0aWxzLnBhcnNlQ2FudG9uVGVtcGxhdGVJZCgxMjMgYXMgdW5rbm93biBhcyBzdHJpbmcpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdCwgdW5kZWZpbmVkKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHVuZGVmaW5lZCBmb3Igd3JvbmcgbnVtYmVyIG9mIHBhcnRzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gdXRpbHMucGFyc2VDYW50b25UZW1wbGF0ZUlkKCdQa2dPbmx5Jyk7XG4gICAgICBhc3NlcnQuZXF1YWwocmVzdWx0LCB1bmRlZmluZWQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdW5kZWZpbmVkIGZvciBlbXB0eSBwYXJ0cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHV0aWxzLnBhcnNlQ2FudG9uVGVtcGxhdGVJZCgnOk1vZHVsZTpFbnRpdHknKTtcbiAgICAgIGFzc2VydC5lcXVhbChyZXN1bHQsIHVuZGVmaW5lZCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiB1bmRlZmluZWQgZm9yIHN0cmluZyB3aXRoIG9ubHkgMiBwYXJ0cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHV0aWxzLnBhcnNlQ2FudG9uVGVtcGxhdGVJZCgnUGtnOk1vZHVsZScpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdCwgdW5kZWZpbmVkKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2RhbWxWYWx1ZVRvSnNvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiB1bmRlZmluZWQgZm9yIHVuZGVmaW5lZCBpbnB1dCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHV0aWxzLmRhbWxWYWx1ZVRvSnNvbih1bmRlZmluZWQpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdCwgdW5kZWZpbmVkKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgY29udmVydCB1bml0IHRvIG51bGwnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB2YWw6IFZhbHVlID0geyBzdW06IHsgb25lb2ZLaW5kOiAndW5pdCcsIHVuaXQ6IHt9IH0gfTtcbiAgICAgIGFzc2VydC5lcXVhbCh1dGlscy5kYW1sVmFsdWVUb0pzb24odmFsKSwgbnVsbCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNvbnZlcnQgYm9vbCBjb3JyZWN0bHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB2YWw6IFZhbHVlID0geyBzdW06IHsgb25lb2ZLaW5kOiAnYm9vbCcsIGJvb2w6IHRydWUgfSB9O1xuICAgICAgYXNzZXJ0LmVxdWFsKHV0aWxzLmRhbWxWYWx1ZVRvSnNvbih2YWwpLCB0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgY29udmVydCB0ZXh0IGNvcnJlY3RseScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHZhbDogVmFsdWUgPSB7IHN1bTogeyBvbmVvZktpbmQ6ICd0ZXh0JywgdGV4dDogJ2hlbGxvJyB9IH07XG4gICAgICBhc3NlcnQuZXF1YWwodXRpbHMuZGFtbFZhbHVlVG9Kc29uKHZhbCksICdoZWxsbycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjb252ZXJ0IGNvbnRyYWN0SWQgY29ycmVjdGx5JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdmFsOiBWYWx1ZSA9IHsgc3VtOiB7IG9uZW9mS2luZDogJ2NvbnRyYWN0SWQnLCBjb250cmFjdElkOiAnMDBhYmMnIH0gfTtcbiAgICAgIGFzc2VydC5lcXVhbCh1dGlscy5kYW1sVmFsdWVUb0pzb24odmFsKSwgJzAwYWJjJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNvbnZlcnQgcGFydHkgY29ycmVjdGx5JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdmFsOiBWYWx1ZSA9IHsgc3VtOiB7IG9uZW9mS2luZDogJ3BhcnR5JywgcGFydHk6ICdBbGljZTo6MTIzNCcgfSB9O1xuICAgICAgYXNzZXJ0LmVxdWFsKHV0aWxzLmRhbWxWYWx1ZVRvSnNvbih2YWwpLCAnQWxpY2U6OjEyMzQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgY29udmVydCBudW1lcmljIGNvcnJlY3RseScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHZhbDogVmFsdWUgPSB7IHN1bTogeyBvbmVvZktpbmQ6ICdudW1lcmljJywgbnVtZXJpYzogJzEwMC4wMDAwMDAwMDAwJyB9IH07XG4gICAgICBhc3NlcnQuZXF1YWwodXRpbHMuZGFtbFZhbHVlVG9Kc29uKHZhbCksICcxMDAuMDAwMDAwMDAwMCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjb252ZXJ0IG9wdGlvbmFsIHdpdGggdmFsdWUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB2YWw6IFZhbHVlID0ge1xuICAgICAgICBzdW06IHtcbiAgICAgICAgICBvbmVvZktpbmQ6ICdvcHRpb25hbCcsXG4gICAgICAgICAgb3B0aW9uYWw6IHsgdmFsdWU6IHsgc3VtOiB7IG9uZW9mS2luZDogJ3RleHQnLCB0ZXh0OiAnaW5uZXInIH0gfSB9LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIGFzc2VydC5lcXVhbCh1dGlscy5kYW1sVmFsdWVUb0pzb24odmFsKSwgJ2lubmVyJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNvbnZlcnQgb3B0aW9uYWwgd2l0aG91dCB2YWx1ZSB0byBudWxsJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdmFsOiBWYWx1ZSA9IHsgc3VtOiB7IG9uZW9mS2luZDogJ29wdGlvbmFsJywgb3B0aW9uYWw6IHt9IH0gfTtcbiAgICAgIGFzc2VydC5lcXVhbCh1dGlscy5kYW1sVmFsdWVUb0pzb24odmFsKSwgbnVsbCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNvbnZlcnQgbGlzdCB0byBhcnJheScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHZhbDogVmFsdWUgPSB7XG4gICAgICAgIHN1bToge1xuICAgICAgICAgIG9uZW9mS2luZDogJ2xpc3QnLFxuICAgICAgICAgIGxpc3Q6IHtcbiAgICAgICAgICAgIGVsZW1lbnRzOiBbeyBzdW06IHsgb25lb2ZLaW5kOiAndGV4dCcsIHRleHQ6ICdhJyB9IH0sIHsgc3VtOiB7IG9uZW9mS2luZDogJ3RleHQnLCB0ZXh0OiAnYicgfSB9XSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIGFzc2VydC5kZWVwRXF1YWwodXRpbHMuZGFtbFZhbHVlVG9Kc29uKHZhbCksIFsnYScsICdiJ10pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjb252ZXJ0IHRleHRNYXAgdG8gb2JqZWN0JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdmFsOiBWYWx1ZSA9IHtcbiAgICAgICAgc3VtOiB7XG4gICAgICAgICAgb25lb2ZLaW5kOiAndGV4dE1hcCcsXG4gICAgICAgICAgdGV4dE1hcDoge1xuICAgICAgICAgICAgZW50cmllczogW1xuICAgICAgICAgICAgICB7IGtleTogJ2sxJywgdmFsdWU6IHsgc3VtOiB7IG9uZW9mS2luZDogJ3RleHQnLCB0ZXh0OiAndjEnIH0gfSB9LFxuICAgICAgICAgICAgICB7IGtleTogJ2syJywgdmFsdWU6IHsgc3VtOiB7IG9uZW9mS2luZDogJ2Jvb2wnLCBib29sOiBmYWxzZSB9IH0gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICBhc3NlcnQuZGVlcEVxdWFsKHV0aWxzLmRhbWxWYWx1ZVRvSnNvbih2YWwpLCB7IGsxOiAndjEnLCBrMjogZmFsc2UgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNvbnZlcnQgcmVjb3JkIHRvIG9iamVjdCB3aXRoIGxhYmVsIGtleXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB2YWw6IFZhbHVlID0ge1xuICAgICAgICBzdW06IHtcbiAgICAgICAgICBvbmVvZktpbmQ6ICdyZWNvcmQnLFxuICAgICAgICAgIHJlY29yZDoge1xuICAgICAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAgICAgIHsgbGFiZWw6ICduYW1lJywgdmFsdWU6IHsgc3VtOiB7IG9uZW9mS2luZDogJ3RleHQnLCB0ZXh0OiAnQWxpY2UnIH0gfSB9LFxuICAgICAgICAgICAgICB7IGxhYmVsOiAnYWdlJywgdmFsdWU6IHsgc3VtOiB7IG9uZW9mS2luZDogJ2ludDY0JywgaW50NjQ6ICczMCcgfSB9IH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgYXNzZXJ0LmRlZXBFcXVhbCh1dGlscy5kYW1sVmFsdWVUb0pzb24odmFsKSwgeyBuYW1lOiAnQWxpY2UnLCBhZ2U6ICczMCcgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNvbnZlcnQgdmFyaWFudCB0byBrZXllZCBvYmplY3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB2YWw6IFZhbHVlID0ge1xuICAgICAgICBzdW06IHtcbiAgICAgICAgICBvbmVvZktpbmQ6ICd2YXJpYW50JyxcbiAgICAgICAgICB2YXJpYW50OiB7XG4gICAgICAgICAgICBjb25zdHJ1Y3RvcjogJ1NvbWUnLFxuICAgICAgICAgICAgdmFsdWU6IHsgc3VtOiB7IG9uZW9mS2luZDogJ3RleHQnLCB0ZXh0OiAndicgfSB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgYXNzZXJ0LmRlZXBFcXVhbCh1dGlscy5kYW1sVmFsdWVUb0pzb24odmFsKSwgeyBTb21lOiAndicgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNvbnZlcnQgZW51bSB0byBzdHJpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB2YWw6IFZhbHVlID0ge1xuICAgICAgICBzdW06IHtcbiAgICAgICAgICBvbmVvZktpbmQ6ICdlbnVtJyxcbiAgICAgICAgICBlbnVtOiB7IGNvbnN0cnVjdG9yOiAnQWN0aXZlJyB9LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIGFzc2VydC5lcXVhbCh1dGlscy5kYW1sVmFsdWVUb0pzb24odmFsKSwgJ0FjdGl2ZScpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZXh0cmFjdFN1Ym1pdHRlckFjdEFzJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgZXh0cmFjdCBhY3RBcyBmcm9tIHJlYWwgUHJlcGFyZWRUcmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFjdEFzID0gdXRpbHMuZXh0cmFjdFN1Ym1pdHRlckFjdEFzKENhbnRvbkV4ZXJjaXNlQ29tbWFuZFByZXBhcmVSZXNwb25zZS5wcmVwYXJlZFRyYW5zYWN0aW9uKTtcbiAgICAgIHNob3VsZC5leGlzdChhY3RBcyk7XG4gICAgICBhc3NlcnQub2soQXJyYXkuaXNBcnJheShhY3RBcykpO1xuICAgICAgYXNzZXJ0LmVxdWFsKGFjdEFzLmxlbmd0aCwgMSk7XG4gICAgICBhc3NlcnQuZXF1YWwoYWN0QXNbMF0sICdSZWdSZWdpc3RyYXI6OjEyMjA1MDhlNTRmYjcwOWRjYjFhOWI0MDk2NDA4YWQ0MTVkMjIxN2Q4ODgxYWQ5MDM0YTk4NTA3NTI5MzNiYTg4YWQ1Jyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdleHRyYWN0Q2FudG9uQ29tbWFuZEluZm8nLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBleHRyYWN0IEV4ZXJjaXNlQ29tbWFuZCBpbmZvIGNvcnJlY3RseScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGluZm8gPSB1dGlscy5leHRyYWN0Q2FudG9uQ29tbWFuZEluZm8oQ2FudG9uRXhlcmNpc2VDb21tYW5kUHJlcGFyZVJlc3BvbnNlLnByZXBhcmVkVHJhbnNhY3Rpb24pO1xuICAgICAgc2hvdWxkLmV4aXN0KGluZm8pO1xuICAgICAgYXNzZXJ0LmVxdWFsKGluZm8ua2luZCwgJ0V4ZXJjaXNlQ29tbWFuZCcpO1xuICAgICAgYXNzZXJ0LmVxdWFsKGluZm8udGVtcGxhdGVJZC5tb2R1bGVOYW1lLCAnVXRpbGl0eS5SZWdpc3RyeS5BcHAuVjAuU2VydmljZS5BbGxvY2F0aW9uRmFjdG9yeScpO1xuICAgICAgYXNzZXJ0LmVxdWFsKGluZm8udGVtcGxhdGVJZC5lbnRpdHlOYW1lLCAnQWxsb2NhdGlvbkZhY3RvcnknKTtcbiAgICAgIGFzc2VydC5lcXVhbChpbmZvLmNob2ljZSwgJ0FsbG9jYXRpb25GYWN0b3J5X09mZmVyTWludCcpO1xuICAgICAgc2hvdWxkLmV4aXN0KGluZm8uY29udHJhY3RJZCk7XG4gICAgICBzaG91bGQuZXhpc3QoaW5mby5hY3RpbmdQYXJ0aWVzKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3NhbWVFbGVtZW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIGZvciBpZGVudGljYWwgYXJyYXlzJywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0LmVxdWFsKHV0aWxzLnNhbWVFbGVtZW50cyhbJ2EnLCAnYicsICdjJ10sIFsnYScsICdiJywgJ2MnXSksIHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSBmb3Igc2FtZSBlbGVtZW50cyBpbiBkaWZmZXJlbnQgb3JkZXInLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQuZXF1YWwodXRpbHMuc2FtZUVsZW1lbnRzKFsnYycsICdhJywgJ2InXSwgWydhJywgJ2InLCAnYyddKSwgdHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSBmb3IgZGlmZmVyZW50IGxlbmd0aHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQuZXF1YWwodXRpbHMuc2FtZUVsZW1lbnRzKFsnYScsICdiJ10sIFsnYScsICdiJywgJ2MnXSksIGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIGZvciBkaWZmZXJlbnQgZWxlbWVudHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQuZXF1YWwodXRpbHMuc2FtZUVsZW1lbnRzKFsnYScsICdiJywgJ3gnXSwgWydhJywgJ2InLCAnYyddKSwgZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSBmb3IgZW1wdHkgYXJyYXlzJywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0LmVxdWFsKHV0aWxzLnNhbWVFbGVtZW50cyhbXSwgW10pLCB0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gb25lIGFycmF5IGhhcyBkdXBsaWNhdGVzIHRoZSBvdGhlciBkb2VzIG5vdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5lcXVhbCh1dGlscy5zYW1lRWxlbWVudHMoWyd4JywgJ3gnXSwgWyd4JywgJ3knXSksIGZhbHNlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ25vcm1hbGl6ZUluamVjdEFzJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgc3RyaXAgXCJjb21tYW5kLlwiIHByZWZpeCBmcm9tIGluamVjdEFzIHBhdGhzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgc3BlY3MgPSBbeyBpbmplY3RBczogJ2NvbW1hbmQuRXhlcmNpc2VDb21tYW5kLmNvbnRyYWN0SWQnIH1dO1xuICAgICAgY29uc3QgcmVzdWx0ID0gdXRpbHMubm9ybWFsaXplSW5qZWN0QXMoc3BlY3MpO1xuICAgICAgYXNzZXJ0Lm9rKHJlc3VsdC5oYXMoJ0V4ZXJjaXNlQ29tbWFuZC5jb250cmFjdElkJykpO1xuICAgICAgYXNzZXJ0Lm9rKCFyZXN1bHQuaGFzKCdjb21tYW5kLkV4ZXJjaXNlQ29tbWFuZC5jb250cmFjdElkJykpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgc3BlY3Mgd2l0aCBlbXB0eSBpbmplY3RBcyBmaWVsZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHV0aWxzLm5vcm1hbGl6ZUluamVjdEFzKFt7IGluamVjdEFzOiAnJyB9XSk7XG4gICAgICBhc3NlcnQuZXF1YWwocmVzdWx0LnNpemUsIDApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgZW1wdHkgc3BlY3MgYXJyYXknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSB1dGlscy5ub3JtYWxpemVJbmplY3RBcyhbXSk7XG4gICAgICBhc3NlcnQuZXF1YWwocmVzdWx0LnNpemUsIDApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgdW5kZWZpbmVkIHNwZWNzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gdXRpbHMubm9ybWFsaXplSW5qZWN0QXModW5kZWZpbmVkKTtcbiAgICAgIGFzc2VydC5lcXVhbChyZXN1bHQuc2l6ZSwgMCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHByZXNlcnZlIHBhdGhzIHRoYXQgZG8gbm90IHN0YXJ0IHdpdGggXCJjb21tYW5kLlwiJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgc3BlY3MgPSBbeyBpbmplY3RBczogJ0V4ZXJjaXNlQ29tbWFuZC5jb250cmFjdElkJyB9XTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHV0aWxzLm5vcm1hbGl6ZUluamVjdEFzKHNwZWNzKTtcbiAgICAgIGFzc2VydC5vayhyZXN1bHQuaGFzKCdFeGVyY2lzZUNvbW1hbmQuY29udHJhY3RJZCcpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2Fzc2VydERlZXBDYW50b25NYXRjaCcsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBub0luamVjdCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXNzIGZvciBtYXRjaGluZyBwcmltaXRpdmVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiB1dGlscy5hc3NlcnREZWVwQ2FudG9uTWF0Y2goJ2hlbGxvJywgJ2hlbGxvJywgbm9JbmplY3QpKTtcbiAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4gdXRpbHMuYXNzZXJ0RGVlcENhbnRvbk1hdGNoKDQyLCA0Miwgbm9JbmplY3QpKTtcbiAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4gdXRpbHMuYXNzZXJ0RGVlcENhbnRvbk1hdGNoKHRydWUsIHRydWUsIG5vSW5qZWN0KSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHBhc3MgZm9yIG1hdGNoaW5nIG9iamVjdHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+XG4gICAgICAgIHV0aWxzLmFzc2VydERlZXBDYW50b25NYXRjaCh7IGE6ICd4JywgYjogJ3knIH0sIHsgYTogJ3gnLCBiOiAneScsIGV4dHJhOiAneicgfSwgbm9JbmplY3QpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBhbGxvdyBleHRyYSBmaWVsZHMgaW4gYWN0dWFsIHRoYXQgdXNlciBkaWQgbm90IHNwZWNpZnknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+XG4gICAgICAgIHV0aWxzLmFzc2VydERlZXBDYW50b25NYXRjaChcbiAgICAgICAgICB7IG5hbWU6ICdBbGljZScgfSxcbiAgICAgICAgICB7IG5hbWU6ICdBbGljZScsIHRpbWVzdGFtcDogJzIwMjQtMDEtMDEnLCBoYXNoOiAnYWJjJyB9LFxuICAgICAgICAgIG5vSW5qZWN0XG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHBhc3MgZm9yIG1hdGNoaW5nIGFycmF5cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4gdXRpbHMuYXNzZXJ0RGVlcENhbnRvbk1hdGNoKFsnYScsICdiJ10sIFsnYScsICdiJ10sIG5vSW5qZWN0KSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHNraXAgcGF0aHMgaW4gaW5qZWN0QXNQYXRocycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGluamVjdFBhdGhzID0gbmV3IFNldChbJ0V4ZXJjaXNlQ29tbWFuZC5jb250cmFjdElkJ10pO1xuICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PlxuICAgICAgICB1dGlscy5hc3NlcnREZWVwQ2FudG9uTWF0Y2goXG4gICAgICAgICAgeyBFeGVyY2lzZUNvbW1hbmQ6IHsgY29udHJhY3RJZDogdW5kZWZpbmVkLCBjaG9pY2U6ICdGb28nIH0gfSxcbiAgICAgICAgICB7IEV4ZXJjaXNlQ29tbWFuZDogeyBjb250cmFjdElkOiAnMDBhYmMnLCBjaG9pY2U6ICdGb28nIH0gfSxcbiAgICAgICAgICBpbmplY3RQYXRoc1xuICAgICAgICApXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBza2lwIHVuZGVmaW5lZCBleHBlY3RlZCB2YWx1ZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IHV0aWxzLmFzc2VydERlZXBDYW50b25NYXRjaCh1bmRlZmluZWQsICdhbnl0aGluZycsIG5vSW5qZWN0KSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSBlbXB0eSBvYmplY3Qge30gYWdhaW5zdCBhY3R1YWwgKG5vdCBza2lwKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4gdXRpbHMuYXNzZXJ0RGVlcENhbnRvbk1hdGNoKHt9LCB7fSwgbm9JbmplY3QpKTtcbiAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4gdXRpbHMuYXNzZXJ0RGVlcENhbnRvbk1hdGNoKHt9LCB7IGV4dHJhOiAnZmllbGQnIH0sIG5vSW5qZWN0KSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSBlbXB0eSBhcnJheSBbXSBhZ2FpbnN0IGFjdHVhbCAobm90IHNraXApJywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiB1dGlscy5hc3NlcnREZWVwQ2FudG9uTWF0Y2goW10sIFtdLCBub0luamVjdCkpO1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB1dGlscy5hc3NlcnREZWVwQ2FudG9uTWF0Y2goW10sIFsnYSddLCBub0luamVjdCksIC9saXN0LWxlbmd0aCBtaXNtYXRjaC8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjb21wYXJlIG51bWVyaWMgc3RyaW5ncyB3aXRoIEJpZ051bWJlciBlcXVpdmFsZW5jZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4gdXRpbHMuYXNzZXJ0RGVlcENhbnRvbk1hdGNoKCcxMDAnLCAnMTAwLjAwMDAwMDAwMDAnLCBub0luamVjdCkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBvbiBwcmltaXRpdmUgbWlzbWF0Y2gnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHV0aWxzLmFzc2VydERlZXBDYW50b25NYXRjaCgnaGVsbG8nLCAnd29ybGQnLCBub0luamVjdCksIC9taXNtYXRjaC8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBvbiBhcnJheSBsZW5ndGggbWlzbWF0Y2gnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHV0aWxzLmFzc2VydERlZXBDYW50b25NYXRjaChbJ2EnLCAnYiddLCBbJ2EnXSwgbm9JbmplY3QpLCAvbGlzdC1sZW5ndGggbWlzbWF0Y2gvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgb24gbWlzc2luZyBmaWVsZCAodXNlciBzcGVjaWZpZWQgYnV0IG5vdCBpbiBhY3R1YWwpJywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4gdXRpbHMuYXNzZXJ0RGVlcENhbnRvbk1hdGNoKHsgcmVxdWlyZWQ6ICd2YWwnIH0sIHsgb3RoZXI6ICd2YWwnIH0sIG5vSW5qZWN0KSxcbiAgICAgICAgL21pc3NpbmcgZmllbGQvXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBvbiB0eXBlIG1pc21hdGNoJywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB1dGlscy5hc3NlcnREZWVwQ2FudG9uTWF0Y2goeyBhOiAnc3RyJyB9LCB7IGE6IDQyIH0sIG5vSW5qZWN0KSwgL21pc21hdGNoLyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
384
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsb0RBQTRCO0FBRTVCLDhDQUFrRDtBQUVsRCxnRUFBd0M7QUFFeEMsNENBY3NCO0FBRXRCLFFBQVEsQ0FBQyxhQUFhLEVBQUU7SUFDdEIsUUFBUSxDQUFDLHdCQUF3QixFQUFFO1FBQ2pDLEVBQUUsQ0FBQyx1Q0FBdUMsRUFBRSxHQUFHLEVBQUU7WUFDL0MsTUFBTSxVQUFVLEdBQUcsZUFBSyxDQUFDLDZCQUE2QixDQUFDLHNDQUEwQixFQUFFLDBCQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekcsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDekIsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSw2RUFBNkUsQ0FBQyxDQUFDO1lBQy9HLGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsNkVBQTZFLENBQUMsQ0FBQztZQUNqSCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ2xELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDBEQUEwRCxFQUFFO1lBQzdELE1BQU0sVUFBVSxHQUFHLGVBQUssQ0FBQyw2QkFBNkIsQ0FBQyx1Q0FBMkIsRUFBRSwwQkFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFHLGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3pCLGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsNkVBQTZFLENBQUMsQ0FBQztZQUMvRyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLDZFQUE2RSxDQUFDLENBQUM7WUFDakgsZ0JBQU0sQ0FB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QUFDLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztRQUN4RyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxrRUFBa0UsRUFBRTtZQUNyRSxnQkFBTSxDQUFDLE1BQU0sQ0FDWCxHQUFHLEVBQUUsQ0FBQyxlQUFLLENBQUMscUJBQXFCLENBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQ2xGLGVBQWUsQ0FDaEIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLCtCQUErQixFQUFFO1lBQ2xDLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQUssQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNsRyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5cbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5cbmltcG9ydCB1dGlscyBmcm9tICcuLi8uLi9zcmMvbGliL3V0aWxzJztcbmltcG9ydCB7IFZhbHVlIH0gZnJvbSAnLi4vLi4vc3JjL2xpYi9yZXNvdXJjZXNJbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgQ0FOVE9OX0FERFJFU1NFUyxcbiAgQ0FOVE9OX0JMT0NLX0hFSUdIVCxcbiAgQ2FudG9uQWxsb2NhdGlvbkFsbG9jYXRlUHJlcGFyZVJlc3BvbnNlLFxuICBDYW50b25FeGVyY2lzZUNvbW1hbmRQcmVwYXJlUmVzcG9uc2UsXG4gIEdlbmVyYXRlVG9wb2xvZ3lSZXNwb25zZSxcbiAgT25lU3RlcFByZUFwcHJvdmFsUHJlcGFyZVJlc3BvbnNlLFxuICBQcmVwYXJlZFRyYW5zYWN0aW9uUmF3RGF0YSxcbiAgUHJlcGFyZWRUcmFuc2FjdGlvbldpdGhNZW1vLFxuICBQcmVwYXJlZFR4bjFTdGVwUmVjZWl2ZXIsXG4gIFByZXBhcmVkVHhuMlN0ZXBSZWNlaXZlcixcbiAgUHJlcGFyZVN1Ym1pc3Npb25SZXNwb25zZSxcbiAgVHJhbnNmZXJBY2NlcHRhbmNlUHJlcGFyZVJlc3BvbnNlLFxuICBUcmFuc2ZlclJlamVjdGlvblByZXBhcmVSZXNwb25zZSxcbn0gZnJvbSAnLi4vcmVzb3VyY2VzJztcblxuZGVzY3JpYmUoJ0NhbnRvbiBVdGlsJywgZnVuY3Rpb24gKCkge1xuICBkZXNjcmliZSgnUmF3IHRyYW5zYWN0aW9uIHBhcnNlcicsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHBhcnNlIHRoZSBwcmVwYXJlZCB0cmFuc2FjdGlvbicsICgpID0+IHtcbiAgICAgIGNvbnN0IHBhcnNlZERhdGEgPSB1dGlscy5wYXJzZVJhd0NhbnRvblRyYW5zYWN0aW9uRGF0YShQcmVwYXJlZFRyYW5zYWN0aW9uUmF3RGF0YSwgVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgc2hvdWxkLmV4aXN0KHBhcnNlZERhdGEpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHBhcnNlZERhdGEuc2VuZGVyLCAnYWJjLTE6OjEyMjAwYzFlZTIyNmZiZGY5ZmJhMzQ2MWMyYzBjNzMzMzFiNjlkM2M2ZmQ4Y2ZjZTI4Y2RmODY0MTQxMTQxY2M2NTZkJyk7XG4gICAgICBhc3NlcnQuZXF1YWwocGFyc2VkRGF0YS5yZWNlaXZlciwgJ2FiYy0yOjoxMjIwN2U5NmFkYTE4YTg0NWFkZjRkYzAxNDEwMjY1NjMzZDUyNjZkY2E5YmIyODBjOThlMzVjMzY5MmRiODdkM2UzNScpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHBhcnNlZERhdGEuYW1vdW50LCAnMjAwMDAwMDAwMDAwJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHBhcnNlIHRoZSBwcmVwYXJlZCB0cmFuc2FjdGlvbiB3aXRoIG1lbW8gaWQgZmllbGQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBwYXJzZWREYXRhID0gdXRpbHMucGFyc2VSYXdDYW50b25UcmFuc2FjdGlvbkRhdGEoUHJlcGFyZWRUcmFuc2FjdGlvbldpdGhNZW1vLCBUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgICBzaG91bGQuZXhpc3QocGFyc2VkRGF0YSk7XG4gICAgICBhc3NlcnQuZXF1YWwocGFyc2VkRGF0YS5zZW5kZXIsICcxMjIwYjo6MTIyMGJhYjZlZjNlZWMzN2IxYjM4MTYwOTliZWZlNzJiNDNiZjZjMTM4MDA3N2Q2MzQ5MjU0YzQxZmZiN2Y3NzUzYmInKTtcbiAgICAgIGFzc2VydC5lcXVhbChwYXJzZWREYXRhLnJlY2VpdmVyLCAnMTIyMGE6OjEyMjBhZGU2MDMwMGNmN2QwYjE4ZmZhYTJmZmU0ZjQ5MmFkMWFkNjAxY2ZjMTYyYjIwZjc3ZWM5OWQxNmMyYzJmMTU4Jyk7XG4gICAgICBhc3NlcnQuZXF1YWwocGFyc2VkRGF0YS5hbW91bnQsICcxMDAwMDAwMDAwJyk7XG4gICAgICBhc3NlcnQuZXF1YWwocGFyc2VkRGF0YS5tZW1vSWQsICcxMScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXJzZSBjb3JyZWN0bHkgd2hlbiByZWNlaXZlciBpcyBvbiAyLXN0ZXAnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwYXJzZWREYXRhID0gdXRpbHMucGFyc2VSYXdDYW50b25UcmFuc2FjdGlvbkRhdGEoUHJlcGFyZWRUeG4yU3RlcFJlY2VpdmVyLCBUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgICBzaG91bGQuZXhpc3QocGFyc2VkRGF0YSk7XG4gICAgICBhc3NlcnQuZXF1YWwocGFyc2VkRGF0YS5zZW5kZXIsICcxMjIwYTo6MTIyMGFkZTYwMzAwY2Y3ZDBiMThmZmFhMmZmZTRmNDkyYWQxYWQ2MDFjZmMxNjJiMjBmNzdlYzk5ZDE2YzJjMmYxNTgnKTtcbiAgICAgIGFzc2VydC5lcXVhbChcbiAgICAgICAgcGFyc2VkRGF0YS5yZWNlaXZlcixcbiAgICAgICAgJ3JhdmktdGVzdC1wYXJ0eS0xOjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMidcbiAgICAgICk7XG4gICAgICBhc3NlcnQuZXF1YWwocGFyc2VkRGF0YS5hbW91bnQsICcyMDAwMDAwMDAwMCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXJzZSBjb3JyZWN0bHkgMScsICgpID0+IHtcbiAgICAgIGNvbnN0IHBhcnNlZERhdGEgPSB1dGlscy5wYXJzZVJhd0NhbnRvblRyYW5zYWN0aW9uRGF0YShQcmVwYXJlZFR4bjFTdGVwUmVjZWl2ZXIsIFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICAgIHNob3VsZC5leGlzdChwYXJzZWREYXRhKTtcbiAgICAgIGFzc2VydC5lcXVhbChwYXJzZWREYXRhLnNlbmRlciwgJzEyMjBhOjoxMjIwYWRlNjAzMDBjZjdkMGIxOGZmYWEyZmZlNGY0OTJhZDFhZDYwMWNmYzE2MmIyMGY3N2VjOTlkMTZjMmMyZjE1OCcpO1xuICAgICAgYXNzZXJ0LmVxdWFsKFxuICAgICAgICBwYXJzZWREYXRhLnJlY2VpdmVyLFxuICAgICAgICAncmF2aS1kZW1vLXBhcnR5LXR4bi0wMS10YXBwZXI6OjEyMjBlYTdhYjVhNzIzZjhhNmIyMDc4ZTYxN2U2YzU4Y2I3ZTc4ZTQ5OTQ3ZGRjMjM5ZTFhOTQxYWE1NmU2YmEwOGI0J1xuICAgICAgKTtcbiAgICAgIGFzc2VydC5lcXVhbChwYXJzZWREYXRhLmFtb3VudCwgJzIwMDAwMDAwMDAwJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHBhcnNlIHRoZSBhY2NlcHRhbmNlIHByZXBhcmVkIHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgICAgY29uc3QgcGFyc2VkRGF0YSA9IHV0aWxzLnBhcnNlUmF3Q2FudG9uVHJhbnNhY3Rpb25EYXRhKFxuICAgICAgICBUcmFuc2ZlckFjY2VwdGFuY2VQcmVwYXJlUmVzcG9uc2UucHJlcGFyZWRUcmFuc2FjdGlvbixcbiAgICAgICAgVHJhbnNhY3Rpb25UeXBlLlRyYW5zZmVyQWNjZXB0XG4gICAgICApO1xuICAgICAgc2hvdWxkLmV4aXN0KHBhcnNlZERhdGEpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHBhcnNlZERhdGEuc2VuZGVyLCAnRFNPOjoxMjIwYmU1OGMyOWU2NWRlNDBiZjI3M2JlMWRjMmIyNjZkNDNhOWEwMDJlYTViMTg5NTVhZWVmN2FhYzg4MWJiNDcxYScpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHBhcnNlZERhdGEucmVjZWl2ZXIsICdhYmNkZTo6MTIyMDViNGUzNTM3YTk1MTI2ZDkwNjA0NTkyMzQ0ZDhhZDNjM2RkY2NkYTRmNzk5MDE5NTQyODBlZTE5YzU3NjcxNGQnKTtcbiAgICAgIGFzc2VydC5lcXVhbChwYXJzZWREYXRhLmFtb3VudCwgJzUwMDAwMDAwMDAwJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHBhcnNlIHRoZSByZWplY3Rpb24gcHJlcGFyZWQgdHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgICBjb25zdCBwYXJzZWREYXRhID0gdXRpbHMucGFyc2VSYXdDYW50b25UcmFuc2FjdGlvbkRhdGEoXG4gICAgICAgIFRyYW5zZmVyUmVqZWN0aW9uUHJlcGFyZVJlc3BvbnNlLnByZXBhcmVkVHJhbnNhY3Rpb24sXG4gICAgICAgIFRyYW5zYWN0aW9uVHlwZS5UcmFuc2ZlclJlamVjdFxuICAgICAgKTtcbiAgICAgIHNob3VsZC5leGlzdChwYXJzZWREYXRhKTtcbiAgICAgIGFzc2VydC5lcXVhbChwYXJzZWREYXRhLnNlbmRlciwgJ0RTTzo6MTIyMGJlNThjMjllNjVkZTQwYmYyNzNiZTFkYzJiMjY2ZDQzYTlhMDAyZWE1YjE4OTU1YWVlZjdhYWM4ODFiYjQ3MWEnKTtcbiAgICAgIGFzc2VydC5lcXVhbChwYXJzZWREYXRhLnJlY2VpdmVyLCAnMTIyMDE6OjEyMjAzODQwMmNmMTY1MDg3NmQyOTIwZDYwNDdiMTFhNGFhZjBkZTdiNDI4ZTk5MTYwMDljYmEyYTIyYjFhZTIyYzFhJyk7XG4gICAgICBhc3NlcnQuZXF1YWwocGFyc2VkRGF0YS5hbW91bnQsICc1MDAwMDAwMDAwMCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXJzZSB0aGUgb25lLXN0ZXAgcHJlYXBwcm92YWwgcHJlcGFyZWQgdHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgICBjb25zdCBwYXJzZWREYXRhID0gdXRpbHMucGFyc2VSYXdDYW50b25UcmFuc2FjdGlvbkRhdGEoXG4gICAgICAgIE9uZVN0ZXBQcmVBcHByb3ZhbFByZXBhcmVSZXNwb25zZS5wcmVwYXJlZFRyYW5zYWN0aW9uLFxuICAgICAgICBUcmFuc2FjdGlvblR5cGUuT25lU3RlcFByZUFwcHJvdmFsXG4gICAgICApO1xuICAgICAgc2hvdWxkLmV4aXN0KHBhcnNlZERhdGEpO1xuICAgICAgYXNzZXJ0LmVxdWFsKFxuICAgICAgICBwYXJzZWREYXRhLnNlbmRlcixcbiAgICAgICAgJ0JpdGdvLWRldm5ldC12YWxpZGF0b3ItMTo6MTIyMGEwYTBmNjBiMGU2MmI1ZDc1MGM0ODRiMThjMDkxZGJhMjMwODBjMTMzZDk0NDYxNGJhNzVhNTg1OGNiYTMwNDUnXG4gICAgICApO1xuICAgICAgYXNzZXJ0LmVxdWFsKFxuICAgICAgICBwYXJzZWREYXRhLnJlY2VpdmVyLFxuICAgICAgICAncmF2aS10ZXN0LXBhcnR5LTE6OjEyMjA1YjRlMzUzN2E5NTEyNmQ5MDYwNDU5MjM0NGQ4YWQzYzNkZGNjZGE0Zjc5OTAxOTU0MjgwZWUxOWM1NzY3MTRkJ1xuICAgICAgKTtcbiAgICAgIGFzc2VydC5lcXVhbChwYXJzZWREYXRhLmFtb3VudCwgJzAnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcGFyc2UgdGhlIGFsbG9jYXRpb24gYWxsb2NhdGUgcHJlcGFyZWQgdHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgICBjb25zdCBwYXJzZWREYXRhID0gdXRpbHMucGFyc2VSYXdDYW50b25UcmFuc2FjdGlvbkRhdGEoXG4gICAgICAgIENhbnRvbkFsbG9jYXRpb25BbGxvY2F0ZVByZXBhcmVSZXNwb25zZS5wcmVwYXJlZFRyYW5zYWN0aW9uLFxuICAgICAgICBUcmFuc2FjdGlvblR5cGUuQWxsb2NhdGlvbkFsbG9jYXRlXG4gICAgICApO1xuICAgICAgc2hvdWxkLmV4aXN0KHBhcnNlZERhdGEpO1xuICAgICAgYXNzZXJ0LmVxdWFsKFxuICAgICAgICBwYXJzZWREYXRhLnNlbmRlcixcbiAgICAgICAgJ3JhdmktMi1zdGVwLXBhcnR5OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMidcbiAgICAgICk7XG4gICAgICAvLyByZWNlaXZlciA9IHRyYW5zZmVyTGVnLnJlY2VpdmVyIGZyb20gRHZwTGVnQWxsb2NhdGlvbiDigJQgdGhlIGFjdHVhbCBzZXR0bGVtZW50IGNvdW50ZXJwYXJ0eVxuICAgICAgYXNzZXJ0LmVxdWFsKFxuICAgICAgICBwYXJzZWREYXRhLnJlY2VpdmVyLFxuICAgICAgICAncmF2aS0yLXN0ZXAtcGFydHktbmV3OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMidcbiAgICAgICk7XG4gICAgICBhc3NlcnQuZXF1YWwocGFyc2VkRGF0YS5hbW91bnQsICc1MDAwMDAwMDAwMCcpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnV2FsbGV0IGluaXQgdHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBsb2NhbGx5IGdlbmVyYXRlIGFuZCB2YWxpZGF0ZSB0aGUgaGFzaCBmb3IgdG9wb2xvZ3kgdHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjb21wdXRlZEhhc2ggPSB1dGlscy5jb21wdXRlSGFzaEZyb21DcmVhdGVQYXJ0eVJlc3BvbnNlKEdlbmVyYXRlVG9wb2xvZ3lSZXNwb25zZS50b3BvbG9neVRyYW5zYWN0aW9ucyk7XG4gICAgICBzaG91bGQuZXhpc3QoY29tcHV0ZWRIYXNoKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjb21wdXRlZEhhc2gsIEdlbmVyYXRlVG9wb2xvZ3lSZXNwb25zZS5tdWx0aUhhc2gpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnUHJlcGFyZSBzdWJtaXNzaW9uIHJlc3BvbnNlIHZhbGlkYXRpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBsb2NhbGx5IGdlbmVyYXRlIGFuZCB2YWxpZGF0ZSB0aGUgaGFzaCBmb3IgcHJlcGFyZSBzdWJtaXNzaW9uIHJlc3BvbnNlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY29tcHV0ZWRIYXNoID0gYXdhaXQgdXRpbHMuY29tcHV0ZUhhc2hGcm9tUHJlcGFyZVN1Ym1pc3Npb25SZXNwb25zZShcbiAgICAgICAgUHJlcGFyZVN1Ym1pc3Npb25SZXNwb25zZS5wcmVwYXJlZFRyYW5zYWN0aW9uXG4gICAgICApO1xuICAgICAgc2hvdWxkLmV4aXN0KGNvbXB1dGVkSGFzaCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY29tcHV0ZWRIYXNoLCBQcmVwYXJlU3VibWlzc2lvblJlc3BvbnNlLnByZXBhcmVkVHJhbnNhY3Rpb25IYXNoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0NoZWNrIGlmIHRoZSBhZGRyZXNzIGlzIHZhbGlkJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiB0aGUgYWRkcmVzcyBpcyB2YWxpZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGlzVmFsaWQgPSB1dGlscy5pc1ZhbGlkQWRkcmVzcyhDQU5UT05fQUREUkVTU0VTLlZBTElEX0FERFJFU1MpO1xuICAgICAgc2hvdWxkLmV4aXN0KGlzVmFsaWQpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGlzVmFsaWQsIHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiBwYXJ0eSBoaW50IGlzIGludmFsaWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBpc1ZhbGlkID0gdXRpbHMuaXNWYWxpZEFkZHJlc3MoQ0FOVE9OX0FERFJFU1NFUy5WQUxJRF9QQVJUWV9ISU5UKTtcbiAgICAgIHNob3VsZC5leGlzdChpc1ZhbGlkKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChpc1ZhbGlkLCB0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gZmluZ2VycHJpbnQgaXMgaW52YWxpZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGlzVmFsaWQgPSB1dGlscy5pc1ZhbGlkQWRkcmVzcyhDQU5UT05fQUREUkVTU0VTLklOVkFMSURfRklOR0VSUFJJTlQpO1xuICAgICAgc2hvdWxkLmV4aXN0KGlzVmFsaWQpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGlzVmFsaWQsIGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gcGFydHkgaGludCBpcyBtaXNzaW5nJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgaXNWYWxpZCA9IHV0aWxzLmlzVmFsaWRBZGRyZXNzKENBTlRPTl9BRERSRVNTRVMuTUlTU0lOR19QQVJUWV9ISU5UKTtcbiAgICAgIHNob3VsZC5leGlzdChpc1ZhbGlkKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChpc1ZhbGlkLCBmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIGZpbmdlcnByaW50IGlzIG1pc3NpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBpc1ZhbGlkID0gdXRpbHMuaXNWYWxpZEFkZHJlc3MoQ0FOVE9OX0FERFJFU1NFUy5NSVNTSU5HX0ZJTkdFUlBSSU5UKTtcbiAgICAgIHNob3VsZC5leGlzdChpc1ZhbGlkKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChpc1ZhbGlkLCBmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gbWVtbyBpZCBpcyB2YWxpZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGlzVmFsaWQgPSB1dGlscy5pc1ZhbGlkQWRkcmVzcyhDQU5UT05fQUREUkVTU0VTLlZBTElEX01FTU9fSUQpO1xuICAgICAgc2hvdWxkLmV4aXN0KGlzVmFsaWQpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGlzVmFsaWQsIHRydWUpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnQ2hlY2sgaWYgYmxvY2sgaGFzaCBpcyB2YWxpZCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gdGhlIGJsb2NrIGhhc2ggaXMgdmFsaWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBpc1ZhbGlkID0gdXRpbHMuaXNWYWxpZEJsb2NrSWQoQ0FOVE9OX0JMT0NLX0hFSUdIVC5WQUxJRF9IQVNIKTtcbiAgICAgIHNob3VsZC5leGlzdChpc1ZhbGlkKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChpc1ZhbGlkLCB0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiB0aGUgYmxvY2sgaGFzaCBoYXMgdmVyc2lvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGlzVmFsaWQgPSB1dGlscy5pc1ZhbGlkQmxvY2tJZChDQU5UT05fQkxPQ0tfSEVJR0hULlZBTElEX0hBU0hfV0lUSF9WRVJTSU9OKTtcbiAgICAgIHNob3VsZC5leGlzdChpc1ZhbGlkKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChpc1ZhbGlkLCB0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdGhlIGJsb2NrIGhhc2ggaXMgbm90IGEgbnVtYmVyJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgaXNWYWxpZCA9IHV0aWxzLmlzVmFsaWRCbG9ja0lkKENBTlRPTl9CTE9DS19IRUlHSFQuSU5WQUxJRF9CTE9DS19IQVNIKTtcbiAgICAgIHNob3VsZC5leGlzdChpc1ZhbGlkKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChpc1ZhbGlkLCBmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHRoZSBibG9jayBoYXNoIGlzIG5lZ2F0aXZlJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgaXNWYWxpZCA9IHV0aWxzLmlzVmFsaWRCbG9ja0lkKENBTlRPTl9CTE9DS19IRUlHSFQuTkVHQVRJVkVfQkxPQ0tfSEFTSCk7XG4gICAgICBzaG91bGQuZXhpc3QoaXNWYWxpZCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXNWYWxpZCwgZmFsc2UpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnQ2FudG9uIFV0aWxzIC0gQ2FudG9uQ29tbWFuZCBoZWxwZXJzJywgZnVuY3Rpb24gKCkge1xuICBkZXNjcmliZSgncGFyc2VDYW50b25UZW1wbGF0ZUlkJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgcGFyc2UgdmFsaWQgXCJQa2c6TW9kdWxlOkVudGl0eVwiIGZvcm1hdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHV0aWxzLnBhcnNlQ2FudG9uVGVtcGxhdGVJZChcbiAgICAgICAgJ2FiYzEyMzpVdGlsaXR5LlJlZ2lzdHJ5LkFwcC5WMC5TZXJ2aWNlLkFsbG9jYXRpb25GYWN0b3J5OkFsbG9jYXRpb25GYWN0b3J5J1xuICAgICAgKTtcbiAgICAgIHNob3VsZC5leGlzdChyZXN1bHQpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdCEucGtnLCAnYWJjMTIzJyk7XG4gICAgICBhc3NlcnQuZXF1YWwocmVzdWx0IS5tb2R1bGVOYW1lLCAnVXRpbGl0eS5SZWdpc3RyeS5BcHAuVjAuU2VydmljZS5BbGxvY2F0aW9uRmFjdG9yeScpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdCEuZW50aXR5TmFtZSwgJ0FsbG9jYXRpb25GYWN0b3J5Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiB1bmRlZmluZWQgZm9yIG5vbi1zdHJpbmcgaW5wdXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSB1dGlscy5wYXJzZUNhbnRvblRlbXBsYXRlSWQoMTIzIGFzIHVua25vd24gYXMgc3RyaW5nKTtcbiAgICAgIGFzc2VydC5lcXVhbChyZXN1bHQsIHVuZGVmaW5lZCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiB1bmRlZmluZWQgZm9yIHdyb25nIG51bWJlciBvZiBwYXJ0cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHV0aWxzLnBhcnNlQ2FudG9uVGVtcGxhdGVJZCgnUGtnT25seScpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdCwgdW5kZWZpbmVkKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHVuZGVmaW5lZCBmb3IgZW1wdHkgcGFydHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSB1dGlscy5wYXJzZUNhbnRvblRlbXBsYXRlSWQoJzpNb2R1bGU6RW50aXR5Jyk7XG4gICAgICBhc3NlcnQuZXF1YWwocmVzdWx0LCB1bmRlZmluZWQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdW5kZWZpbmVkIGZvciBzdHJpbmcgd2l0aCBvbmx5IDIgcGFydHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSB1dGlscy5wYXJzZUNhbnRvblRlbXBsYXRlSWQoJ1BrZzpNb2R1bGUnKTtcbiAgICAgIGFzc2VydC5lcXVhbChyZXN1bHQsIHVuZGVmaW5lZCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdkYW1sVmFsdWVUb0pzb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdW5kZWZpbmVkIGZvciB1bmRlZmluZWQgaW5wdXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSB1dGlscy5kYW1sVmFsdWVUb0pzb24odW5kZWZpbmVkKTtcbiAgICAgIGFzc2VydC5lcXVhbChyZXN1bHQsIHVuZGVmaW5lZCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNvbnZlcnQgdW5pdCB0byBudWxsJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdmFsOiBWYWx1ZSA9IHsgc3VtOiB7IG9uZW9mS2luZDogJ3VuaXQnLCB1bml0OiB7fSB9IH07XG4gICAgICBhc3NlcnQuZXF1YWwodXRpbHMuZGFtbFZhbHVlVG9Kc29uKHZhbCksIG51bGwpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjb252ZXJ0IGJvb2wgY29ycmVjdGx5JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdmFsOiBWYWx1ZSA9IHsgc3VtOiB7IG9uZW9mS2luZDogJ2Jvb2wnLCBib29sOiB0cnVlIH0gfTtcbiAgICAgIGFzc2VydC5lcXVhbCh1dGlscy5kYW1sVmFsdWVUb0pzb24odmFsKSwgdHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNvbnZlcnQgdGV4dCBjb3JyZWN0bHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB2YWw6IFZhbHVlID0geyBzdW06IHsgb25lb2ZLaW5kOiAndGV4dCcsIHRleHQ6ICdoZWxsbycgfSB9O1xuICAgICAgYXNzZXJ0LmVxdWFsKHV0aWxzLmRhbWxWYWx1ZVRvSnNvbih2YWwpLCAnaGVsbG8nKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgY29udmVydCBjb250cmFjdElkIGNvcnJlY3RseScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHZhbDogVmFsdWUgPSB7IHN1bTogeyBvbmVvZktpbmQ6ICdjb250cmFjdElkJywgY29udHJhY3RJZDogJzAwYWJjJyB9IH07XG4gICAgICBhc3NlcnQuZXF1YWwodXRpbHMuZGFtbFZhbHVlVG9Kc29uKHZhbCksICcwMGFiYycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjb252ZXJ0IHBhcnR5IGNvcnJlY3RseScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHZhbDogVmFsdWUgPSB7IHN1bTogeyBvbmVvZktpbmQ6ICdwYXJ0eScsIHBhcnR5OiAnQWxpY2U6OjEyMzQnIH0gfTtcbiAgICAgIGFzc2VydC5lcXVhbCh1dGlscy5kYW1sVmFsdWVUb0pzb24odmFsKSwgJ0FsaWNlOjoxMjM0Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNvbnZlcnQgbnVtZXJpYyBjb3JyZWN0bHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB2YWw6IFZhbHVlID0geyBzdW06IHsgb25lb2ZLaW5kOiAnbnVtZXJpYycsIG51bWVyaWM6ICcxMDAuMDAwMDAwMDAwMCcgfSB9O1xuICAgICAgYXNzZXJ0LmVxdWFsKHV0aWxzLmRhbWxWYWx1ZVRvSnNvbih2YWwpLCAnMTAwLjAwMDAwMDAwMDAnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgY29udmVydCBvcHRpb25hbCB3aXRoIHZhbHVlJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdmFsOiBWYWx1ZSA9IHtcbiAgICAgICAgc3VtOiB7XG4gICAgICAgICAgb25lb2ZLaW5kOiAnb3B0aW9uYWwnLFxuICAgICAgICAgIG9wdGlvbmFsOiB7IHZhbHVlOiB7IHN1bTogeyBvbmVvZktpbmQ6ICd0ZXh0JywgdGV4dDogJ2lubmVyJyB9IH0gfSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICBhc3NlcnQuZXF1YWwodXRpbHMuZGFtbFZhbHVlVG9Kc29uKHZhbCksICdpbm5lcicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjb252ZXJ0IG9wdGlvbmFsIHdpdGhvdXQgdmFsdWUgdG8gbnVsbCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHZhbDogVmFsdWUgPSB7IHN1bTogeyBvbmVvZktpbmQ6ICdvcHRpb25hbCcsIG9wdGlvbmFsOiB7fSB9IH07XG4gICAgICBhc3NlcnQuZXF1YWwodXRpbHMuZGFtbFZhbHVlVG9Kc29uKHZhbCksIG51bGwpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjb252ZXJ0IGxpc3QgdG8gYXJyYXknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB2YWw6IFZhbHVlID0ge1xuICAgICAgICBzdW06IHtcbiAgICAgICAgICBvbmVvZktpbmQ6ICdsaXN0JyxcbiAgICAgICAgICBsaXN0OiB7XG4gICAgICAgICAgICBlbGVtZW50czogW3sgc3VtOiB7IG9uZW9mS2luZDogJ3RleHQnLCB0ZXh0OiAnYScgfSB9LCB7IHN1bTogeyBvbmVvZktpbmQ6ICd0ZXh0JywgdGV4dDogJ2InIH0gfV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICBhc3NlcnQuZGVlcEVxdWFsKHV0aWxzLmRhbWxWYWx1ZVRvSnNvbih2YWwpLCBbJ2EnLCAnYiddKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgY29udmVydCB0ZXh0TWFwIHRvIG9iamVjdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHZhbDogVmFsdWUgPSB7XG4gICAgICAgIHN1bToge1xuICAgICAgICAgIG9uZW9mS2luZDogJ3RleHRNYXAnLFxuICAgICAgICAgIHRleHRNYXA6IHtcbiAgICAgICAgICAgIGVudHJpZXM6IFtcbiAgICAgICAgICAgICAgeyBrZXk6ICdrMScsIHZhbHVlOiB7IHN1bTogeyBvbmVvZktpbmQ6ICd0ZXh0JywgdGV4dDogJ3YxJyB9IH0gfSxcbiAgICAgICAgICAgICAgeyBrZXk6ICdrMicsIHZhbHVlOiB7IHN1bTogeyBvbmVvZktpbmQ6ICdib29sJywgYm9vbDogZmFsc2UgfSB9IH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgYXNzZXJ0LmRlZXBFcXVhbCh1dGlscy5kYW1sVmFsdWVUb0pzb24odmFsKSwgeyBrMTogJ3YxJywgazI6IGZhbHNlIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjb252ZXJ0IHJlY29yZCB0byBvYmplY3Qgd2l0aCBsYWJlbCBrZXlzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdmFsOiBWYWx1ZSA9IHtcbiAgICAgICAgc3VtOiB7XG4gICAgICAgICAgb25lb2ZLaW5kOiAncmVjb3JkJyxcbiAgICAgICAgICByZWNvcmQ6IHtcbiAgICAgICAgICAgIGZpZWxkczogW1xuICAgICAgICAgICAgICB7IGxhYmVsOiAnbmFtZScsIHZhbHVlOiB7IHN1bTogeyBvbmVvZktpbmQ6ICd0ZXh0JywgdGV4dDogJ0FsaWNlJyB9IH0gfSxcbiAgICAgICAgICAgICAgeyBsYWJlbDogJ2FnZScsIHZhbHVlOiB7IHN1bTogeyBvbmVvZktpbmQ6ICdpbnQ2NCcsIGludDY0OiAnMzAnIH0gfSB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIGFzc2VydC5kZWVwRXF1YWwodXRpbHMuZGFtbFZhbHVlVG9Kc29uKHZhbCksIHsgbmFtZTogJ0FsaWNlJywgYWdlOiAnMzAnIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjb252ZXJ0IHZhcmlhbnQgdG8ga2V5ZWQgb2JqZWN0JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdmFsOiBWYWx1ZSA9IHtcbiAgICAgICAgc3VtOiB7XG4gICAgICAgICAgb25lb2ZLaW5kOiAndmFyaWFudCcsXG4gICAgICAgICAgdmFyaWFudDoge1xuICAgICAgICAgICAgY29uc3RydWN0b3I6ICdTb21lJyxcbiAgICAgICAgICAgIHZhbHVlOiB7IHN1bTogeyBvbmVvZktpbmQ6ICd0ZXh0JywgdGV4dDogJ3YnIH0gfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIGFzc2VydC5kZWVwRXF1YWwodXRpbHMuZGFtbFZhbHVlVG9Kc29uKHZhbCksIHsgU29tZTogJ3YnIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjb252ZXJ0IGVudW0gdG8gc3RyaW5nJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdmFsOiBWYWx1ZSA9IHtcbiAgICAgICAgc3VtOiB7XG4gICAgICAgICAgb25lb2ZLaW5kOiAnZW51bScsXG4gICAgICAgICAgZW51bTogeyBjb25zdHJ1Y3RvcjogJ0FjdGl2ZScgfSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICBhc3NlcnQuZXF1YWwodXRpbHMuZGFtbFZhbHVlVG9Kc29uKHZhbCksICdBY3RpdmUnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2V4dHJhY3RTdWJtaXR0ZXJBY3RBcycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIGV4dHJhY3QgYWN0QXMgZnJvbSByZWFsIFByZXBhcmVkVHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBhY3RBcyA9IHV0aWxzLmV4dHJhY3RTdWJtaXR0ZXJBY3RBcyhDYW50b25FeGVyY2lzZUNvbW1hbmRQcmVwYXJlUmVzcG9uc2UucHJlcGFyZWRUcmFuc2FjdGlvbik7XG4gICAgICBzaG91bGQuZXhpc3QoYWN0QXMpO1xuICAgICAgYXNzZXJ0Lm9rKEFycmF5LmlzQXJyYXkoYWN0QXMpKTtcbiAgICAgIGFzc2VydC5lcXVhbChhY3RBcy5sZW5ndGgsIDEpO1xuICAgICAgYXNzZXJ0LmVxdWFsKGFjdEFzWzBdLCAnUmVnUmVnaXN0cmFyOjoxMjIwNTA4ZTU0ZmI3MDlkY2IxYTliNDA5NjQwOGFkNDE1ZDIyMTdkODg4MWFkOTAzNGE5ODUwNzUyOTMzYmE4OGFkNScpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZXh0cmFjdENhbnRvbkNvbW1hbmRJbmZvJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgZXh0cmFjdCBFeGVyY2lzZUNvbW1hbmQgaW5mbyBjb3JyZWN0bHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBpbmZvID0gdXRpbHMuZXh0cmFjdENhbnRvbkNvbW1hbmRJbmZvKENhbnRvbkV4ZXJjaXNlQ29tbWFuZFByZXBhcmVSZXNwb25zZS5wcmVwYXJlZFRyYW5zYWN0aW9uKTtcbiAgICAgIHNob3VsZC5leGlzdChpbmZvKTtcbiAgICAgIGFzc2VydC5lcXVhbChpbmZvLmtpbmQsICdFeGVyY2lzZUNvbW1hbmQnKTtcbiAgICAgIGFzc2VydC5lcXVhbChpbmZvLnRlbXBsYXRlSWQubW9kdWxlTmFtZSwgJ1V0aWxpdHkuUmVnaXN0cnkuQXBwLlYwLlNlcnZpY2UuQWxsb2NhdGlvbkZhY3RvcnknKTtcbiAgICAgIGFzc2VydC5lcXVhbChpbmZvLnRlbXBsYXRlSWQuZW50aXR5TmFtZSwgJ0FsbG9jYXRpb25GYWN0b3J5Jyk7XG4gICAgICBhc3NlcnQuZXF1YWwoaW5mby5jaG9pY2UsICdBbGxvY2F0aW9uRmFjdG9yeV9PZmZlck1pbnQnKTtcbiAgICAgIHNob3VsZC5leGlzdChpbmZvLmNvbnRyYWN0SWQpO1xuICAgICAgc2hvdWxkLmV4aXN0KGluZm8uYWN0aW5nUGFydGllcyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzYW1lRWxlbWVudHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSBmb3IgaWRlbnRpY2FsIGFycmF5cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5lcXVhbCh1dGlscy5zYW1lRWxlbWVudHMoWydhJywgJ2InLCAnYyddLCBbJ2EnLCAnYicsICdjJ10pLCB0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgZm9yIHNhbWUgZWxlbWVudHMgaW4gZGlmZmVyZW50IG9yZGVyJywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0LmVxdWFsKHV0aWxzLnNhbWVFbGVtZW50cyhbJ2MnLCAnYScsICdiJ10sIFsnYScsICdiJywgJ2MnXSksIHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2UgZm9yIGRpZmZlcmVudCBsZW5ndGhzJywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0LmVxdWFsKHV0aWxzLnNhbWVFbGVtZW50cyhbJ2EnLCAnYiddLCBbJ2EnLCAnYicsICdjJ10pLCBmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSBmb3IgZGlmZmVyZW50IGVsZW1lbnRzJywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0LmVxdWFsKHV0aWxzLnNhbWVFbGVtZW50cyhbJ2EnLCAnYicsICd4J10sIFsnYScsICdiJywgJ2MnXSksIGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgZm9yIGVtcHR5IGFycmF5cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5lcXVhbCh1dGlscy5zYW1lRWxlbWVudHMoW10sIFtdKSwgdHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIG9uZSBhcnJheSBoYXMgZHVwbGljYXRlcyB0aGUgb3RoZXIgZG9lcyBub3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQuZXF1YWwodXRpbHMuc2FtZUVsZW1lbnRzKFsneCcsICd4J10sIFsneCcsICd5J10pLCBmYWxzZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdub3JtYWxpemVJbmplY3RBcycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHN0cmlwIFwiY29tbWFuZC5cIiBwcmVmaXggZnJvbSBpbmplY3RBcyBwYXRocycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHNwZWNzID0gW3sgaW5qZWN0QXM6ICdjb21tYW5kLkV4ZXJjaXNlQ29tbWFuZC5jb250cmFjdElkJyB9XTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHV0aWxzLm5vcm1hbGl6ZUluamVjdEFzKHNwZWNzKTtcbiAgICAgIGFzc2VydC5vayhyZXN1bHQuaGFzKCdFeGVyY2lzZUNvbW1hbmQuY29udHJhY3RJZCcpKTtcbiAgICAgIGFzc2VydC5vayghcmVzdWx0LmhhcygnY29tbWFuZC5FeGVyY2lzZUNvbW1hbmQuY29udHJhY3RJZCcpKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIHNwZWNzIHdpdGggZW1wdHkgaW5qZWN0QXMgZmllbGQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSB1dGlscy5ub3JtYWxpemVJbmplY3RBcyhbeyBpbmplY3RBczogJycgfV0pO1xuICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdC5zaXplLCAwKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGVtcHR5IHNwZWNzIGFycmF5JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gdXRpbHMubm9ybWFsaXplSW5qZWN0QXMoW10pO1xuICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdC5zaXplLCAwKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIHVuZGVmaW5lZCBzcGVjcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHV0aWxzLm5vcm1hbGl6ZUluamVjdEFzKHVuZGVmaW5lZCk7XG4gICAgICBhc3NlcnQuZXF1YWwocmVzdWx0LnNpemUsIDApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwcmVzZXJ2ZSBwYXRocyB0aGF0IGRvIG5vdCBzdGFydCB3aXRoIFwiY29tbWFuZC5cIicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHNwZWNzID0gW3sgaW5qZWN0QXM6ICdFeGVyY2lzZUNvbW1hbmQuY29udHJhY3RJZCcgfV07XG4gICAgICBjb25zdCByZXN1bHQgPSB1dGlscy5ub3JtYWxpemVJbmplY3RBcyhzcGVjcyk7XG4gICAgICBhc3NlcnQub2socmVzdWx0LmhhcygnRXhlcmNpc2VDb21tYW5kLmNvbnRyYWN0SWQnKSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdhc3NlcnREZWVwQ2FudG9uTWF0Y2gnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3Qgbm9JbmplY3QgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIGl0KCdzaG91bGQgcGFzcyBmb3IgbWF0Y2hpbmcgcHJpbWl0aXZlcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4gdXRpbHMuYXNzZXJ0RGVlcENhbnRvbk1hdGNoKCdoZWxsbycsICdoZWxsbycsIG5vSW5qZWN0KSk7XG4gICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IHV0aWxzLmFzc2VydERlZXBDYW50b25NYXRjaCg0MiwgNDIsIG5vSW5qZWN0KSk7XG4gICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IHV0aWxzLmFzc2VydERlZXBDYW50b25NYXRjaCh0cnVlLCB0cnVlLCBub0luamVjdCkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXNzIGZvciBtYXRjaGluZyBvYmplY3RzJywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PlxuICAgICAgICB1dGlscy5hc3NlcnREZWVwQ2FudG9uTWF0Y2goeyBhOiAneCcsIGI6ICd5JyB9LCB7IGE6ICd4JywgYjogJ3knLCBleHRyYTogJ3onIH0sIG5vSW5qZWN0KVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYWxsb3cgZXh0cmEgZmllbGRzIGluIGFjdHVhbCB0aGF0IHVzZXIgZGlkIG5vdCBzcGVjaWZ5JywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PlxuICAgICAgICB1dGlscy5hc3NlcnREZWVwQ2FudG9uTWF0Y2goXG4gICAgICAgICAgeyBuYW1lOiAnQWxpY2UnIH0sXG4gICAgICAgICAgeyBuYW1lOiAnQWxpY2UnLCB0aW1lc3RhbXA6ICcyMDI0LTAxLTAxJywgaGFzaDogJ2FiYycgfSxcbiAgICAgICAgICBub0luamVjdFxuICAgICAgICApXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXNzIGZvciBtYXRjaGluZyBhcnJheXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IHV0aWxzLmFzc2VydERlZXBDYW50b25NYXRjaChbJ2EnLCAnYiddLCBbJ2EnLCAnYiddLCBub0luamVjdCkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBza2lwIHBhdGhzIGluIGluamVjdEFzUGF0aHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBpbmplY3RQYXRocyA9IG5ldyBTZXQoWydFeGVyY2lzZUNvbW1hbmQuY29udHJhY3RJZCddKTtcbiAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT5cbiAgICAgICAgdXRpbHMuYXNzZXJ0RGVlcENhbnRvbk1hdGNoKFxuICAgICAgICAgIHsgRXhlcmNpc2VDb21tYW5kOiB7IGNvbnRyYWN0SWQ6IHVuZGVmaW5lZCwgY2hvaWNlOiAnRm9vJyB9IH0sXG4gICAgICAgICAgeyBFeGVyY2lzZUNvbW1hbmQ6IHsgY29udHJhY3RJZDogJzAwYWJjJywgY2hvaWNlOiAnRm9vJyB9IH0sXG4gICAgICAgICAgaW5qZWN0UGF0aHNcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc2tpcCB1bmRlZmluZWQgZXhwZWN0ZWQgdmFsdWVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiB1dGlscy5hc3NlcnREZWVwQ2FudG9uTWF0Y2godW5kZWZpbmVkLCAnYW55dGhpbmcnLCBub0luamVjdCkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgZW1wdHkgb2JqZWN0IHt9IGFnYWluc3QgYWN0dWFsIChub3Qgc2tpcCknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IHV0aWxzLmFzc2VydERlZXBDYW50b25NYXRjaCh7fSwge30sIG5vSW5qZWN0KSk7XG4gICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IHV0aWxzLmFzc2VydERlZXBDYW50b25NYXRjaCh7fSwgeyBleHRyYTogJ2ZpZWxkJyB9LCBub0luamVjdCkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgZW1wdHkgYXJyYXkgW10gYWdhaW5zdCBhY3R1YWwgKG5vdCBza2lwKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4gdXRpbHMuYXNzZXJ0RGVlcENhbnRvbk1hdGNoKFtdLCBbXSwgbm9JbmplY3QpKTtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdXRpbHMuYXNzZXJ0RGVlcENhbnRvbk1hdGNoKFtdLCBbJ2EnXSwgbm9JbmplY3QpLCAvbGlzdC1sZW5ndGggbWlzbWF0Y2gvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgY29tcGFyZSBudW1lcmljIHN0cmluZ3Mgd2l0aCBCaWdOdW1iZXIgZXF1aXZhbGVuY2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IHV0aWxzLmFzc2VydERlZXBDYW50b25NYXRjaCgnMTAwJywgJzEwMC4wMDAwMDAwMDAwJywgbm9JbmplY3QpKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgb24gcHJpbWl0aXZlIG1pc21hdGNoJywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB1dGlscy5hc3NlcnREZWVwQ2FudG9uTWF0Y2goJ2hlbGxvJywgJ3dvcmxkJywgbm9JbmplY3QpLCAvbWlzbWF0Y2gvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgb24gYXJyYXkgbGVuZ3RoIG1pc21hdGNoJywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB1dGlscy5hc3NlcnREZWVwQ2FudG9uTWF0Y2goWydhJywgJ2InXSwgWydhJ10sIG5vSW5qZWN0KSwgL2xpc3QtbGVuZ3RoIG1pc21hdGNoLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IG9uIG1pc3NpbmcgZmllbGQgKHVzZXIgc3BlY2lmaWVkIGJ1dCBub3QgaW4gYWN0dWFsKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IHV0aWxzLmFzc2VydERlZXBDYW50b25NYXRjaCh7IHJlcXVpcmVkOiAndmFsJyB9LCB7IG90aGVyOiAndmFsJyB9LCBub0luamVjdCksXG4gICAgICAgIC9taXNzaW5nIGZpZWxkL1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgb24gdHlwZSBtaXNtYXRjaCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdXRpbHMuYXNzZXJ0RGVlcENhbnRvbk1hdGNoKHsgYTogJ3N0cicgfSwgeyBhOiA0MiB9LCBub0luamVjdCksIC9taXNtYXRjaC8pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19