@bitgo/sdk-coin-polyx 1.19.0 → 2.0.1

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.
@@ -129,6 +129,17 @@ describe('V8BatchStakingBuilder', function () {
129
129
  const builder = factory.from(rawTxHex);
130
130
  should_1.default.ok(builder instanceof lib_1.V8BatchStakingBuilder);
131
131
  });
132
+ it('factory.from routes to V8BatchStakingBuilder on the v8 decode-success path (SI-981)', async () => {
133
+ // Reproduces the staging incident: when the factory carries v8 material, `decode()` succeeds
134
+ // and yields a bond call with no `controller`. Routing must detect the missing controller and
135
+ // return the v8 builder rather than the v7 BatchStakingBuilder, which crashes reading
136
+ // `args.controller.id`.
137
+ const rawTxHex = (await buildSandboxBatch().build()).toBroadcastFormat();
138
+ const v8Material = utils_1.default.getV8Material(statics_1.coins.get('tpolyx').network.type);
139
+ const v8Factory = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tpolyx')).material(v8Material);
140
+ const builder = v8Factory.from(rawTxHex);
141
+ should_1.default.ok(builder instanceof lib_1.V8BatchStakingBuilder);
142
+ });
132
143
  });
133
144
  });
134
145
  describe('V8 staking wrappers (smoke build)', function () {
@@ -198,4 +209,4 @@ describe('V8 staking wrappers (smoke build)', function () {
198
209
  should_1.default.equal(tx.toJson().specVersion, resources_1.testnetV8Material.specVersion);
199
210
  });
200
211
  });
201
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjhCYXRjaFN0YWtpbmdCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci92OEJhdGNoU3Rha2luZ0J1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxzRUFBdUQ7QUFDdkQsNENBQXVDO0FBQ3ZDLG9EQUE0QjtBQUM1QiwwQ0FTMEI7QUFFMUIsbUVBQTJDO0FBQzNDLHNEQUE4RTtBQUM5RSwrQ0FBOEM7QUFDOUMsaUNBQTZEO0FBRTdELFFBQVEsQ0FBQyx1QkFBdUIsRUFBRTtJQUNoQyxNQUFNLE9BQU8sR0FBRyxJQUFJLCtCQUF5QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUVuRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsR0FBRyx1QkFBVyxDQUFDLE9BQU8sQ0FBQztJQUVoRyxNQUFNLGlCQUFpQixHQUFHLEdBQUcsRUFBRSxDQUM3QixJQUFJLDJCQUFxQixDQUFDLElBQUEsc0JBQWUsR0FBRSxDQUFDO1NBQ3pDLE1BQU0sQ0FBQyxVQUFVLENBQUM7U0FDbEIsS0FBSyxDQUFDLFFBQVEsQ0FBQztTQUNmLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3ZCLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztTQUMxQixRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDO1NBQ3pDLGNBQWMsQ0FBQyxjQUFjLENBQUM7U0FDOUIsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBRW5FLFFBQVEsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFF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LEVBQUUsQ0FBQyxXQUFXLEVBQUUsNkJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkUsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsMkNBQTJDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDekQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDL0MsZ0JBQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxZQUFZLHVCQUFpQixDQUFDLENBQUM7UUFDaEQsTUFBTSxFQUFFLEdBQUcsTUFBTSxPQUFPO2FBQ3JCLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ3ZCLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQzthQUMzQixRQUFRLENBQUMsTUFBTSxDQUFDO2FBQ2hCLGNBQWMsQ0FBQyxjQUFjLENBQUM7YUFDOUIsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQzthQUMzRCxLQUFLLEVBQUUsQ0FBQztRQUNYLGdCQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxXQUFXLEVBQUUsNkJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkUsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlY29kZSB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLXBvbGthZG90JztcbmltcG9ydCB7IGNvaW5zIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgVjhCYXRjaFN0YWtpbmdCdWlsZGVyLFxuICBWOEJvbmRFeHRyYUJ1aWxkZXIsXG4gIFY4VW5ib25kQnVpbGRlcixcbiAgVjhCYXRjaFVuc3Rha2luZ0J1aWxkZXIsXG4gIFY4V2l0aGRyYXdVbmJvbmRlZEJ1aWxkZXIsXG4gIFY4Tm9taW5hdGVCdWlsZGVyLFxuICBTaW5nbGV0b25SZWdpc3RyeSxcbn0gZnJvbSAnLi4vLi4vLi4vc3JjL2xpYic7XG5pbXBvcnQgeyBCYXRjaEFyZ3MsIE5vbWluYXRlQXJncywgVjhCb25kQXJncyB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWIvaWZhY2UnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4uLy4uLy4uL3NyYy9saWIvdXRpbHMnO1xuaW1wb3J0IHsgdGVzdG5ldFY4TWF0ZXJpYWwsIG1haW5uZXRWOE1hdGVyaWFsIH0gZnJvbSAnLi4vLi4vLi4vc3JjL3Jlc291cmNlcyc7XG5pbXBvcnQgeyBzdGFraW5nVHhWOCB9IGZyb20gJy4uLy4uL3Jlc291cmNlcyc7XG5pbXBvcnQgeyBidWlsZFRlc3RDb25maWcsIGJ1aWxkTWFpbm5ldENvbmZpZyB9IGZyb20gJy4vYmFzZSc7XG5cbmRlc2NyaWJlKCdWOEJhdGNoU3Rha2luZ0J1aWxkZXInLCBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IGZhY3RvcnkgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3Rwb2x5eCcpKTtcblxuICBjb25zdCB7IHN0YXNoLCB2YWxpZGF0b3IsIGJvbmRBbW91bnQsIHJlZmVyZW5jZUJsb2NrLCBub25jZSwgZmlyc3RWYWxpZCB9ID0gc3Rha2luZ1R4Vjguc2FuZGJveDtcblxuICBjb25zdCBidWlsZFNhbmRib3hCYXRjaCA9ICgpID0+XG4gICAgbmV3IFY4QmF0Y2hTdGFraW5nQnVpbGRlcihidWlsZFRlc3RDb25maWcoKSlcbiAgICAgIC5hbW91bnQoYm9uZEFtb3VudClcbiAgICAgIC5wYXllZSgnU3Rha2VkJylcbiAgICAgIC52YWxpZGF0b3JzKFt2YWxpZGF0b3JdKVxuICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHN0YXNoIH0pXG4gICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgIC5yZWZlcmVuY2VCbG9jayhyZWZlcmVuY2VCbG9jaylcbiAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IG5vbmNlIH0pO1xuXG4gIGRlc2NyaWJlKCd2OCBtYXRlcmlhbCcsICgpID0+IHtcbiAgICBpdCgndGVzdG5ldCBidWlsZGVyIHVzZXMgdjggc3BlY1ZlcnNpb24gYW5kIHR4VmVyc2lvbicsICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgVjhCYXRjaFN0YWtpbmdCdWlsZGVyKGJ1aWxkVGVzdENvbmZpZygpKTtcbiAgICAgIGNvbnN0IG1hdGVyaWFsID0gKGJ1aWxkZXIgYXMgYW55KS5fbWF0ZXJpYWw7XG4gICAgICBzaG91bGQuZXF1YWwobWF0ZXJpYWwuc3BlY1ZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnNwZWNWZXJzaW9uKTtcbiAgICAgIHNob3VsZC5lcXVhbChtYXRlcmlhbC50eFZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnR4VmVyc2lvbik7XG4gICAgICBzaG91bGQuZXF1YWwobWF0ZXJpYWwuc3BlY1ZlcnNpb24sIDgwMDAwMDApO1xuICAgIH0pO1xuXG4gICAgaXQoJ21haW5uZXQgYnVpbGRlciB1c2VzIHY4IHNwZWNWZXJzaW9uIGFuZCB0eFZlcnNpb24nLCAoKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IFY4QmF0Y2hTdGFraW5nQnVpbGRlcihidWlsZE1haW5uZXRDb25maWcoKSk7XG4gICAgICBjb25zdCBtYXRlcmlhbCA9IChidWlsZGVyIGFzIGFueSkuX21hdGVyaWFsO1xuICAgICAgc2hvdWxkLmVxdWFsKG1hdGVyaWFsLnNwZWNWZXJzaW9uLCBtYWlubmV0VjhNYXRlcmlhbC5zcGVjVmVyc2lvbik7XG4gICAgICBzaG91bGQuZXF1YWwobWF0ZXJpYWwudHhWZXJzaW9uLCBtYWlubmV0VjhNYXRlcmlhbC50eFZlcnNpb24pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZmFjdG9yeSBtZXRob2QnLCAoKSA9PiB7XG4gICAgaXQoJ2dldFY4QmF0Y2hTdGFraW5nQnVpbGRlciByZXR1cm5zIGEgVjhCYXRjaFN0YWtpbmdCdWlsZGVyIGNhcnJ5aW5nIHY4IG1hdGVyaWFsJywgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnkuZ2V0VjhCYXRjaFN0YWtpbmdCdWlsZGVyKCk7XG4gICAgICBzaG91bGQub2soYnVpbGRlciBpbnN0YW5jZW9mIFY4QmF0Y2hTdGFraW5nQnVpbGRlcik7XG4gICAgICBzaG91bGQuZXF1YWwoKGJ1aWxkZXIgYXMgYW55KS5fbWF0ZXJpYWwuc3BlY1ZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnNwZWNWZXJzaW9uKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3NldHRlciB2YWxpZGF0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgbm90IGV4cG9zZSBhIGNvbnRyb2xsZXIgc2V0dGVyJywgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnkuZ2V0VjhCYXRjaFN0YWtpbmdCdWlsZGVyKCk7XG4gICAgICBzaG91bGQuZXF1YWwodHlwZW9mIChidWlsZGVyIGFzIGFueSkuY29udHJvbGxlciwgJ3VuZGVmaW5lZCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR5cGVvZiAoYnVpbGRlciBhcyBhbnkpLmdldENvbnRyb2xsZXIsICd1bmRlZmluZWQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVxdWlyZSBib3RoIGJvbmQgYW5kIG5vbWluYXRlIG9wZXJhdGlvbnMnLCAoKSA9PiB7XG4gICAgICBsZXQgYnVpbGRlciA9IGZhY3RvcnkuZ2V0VjhCYXRjaFN0YWtpbmdCdWlsZGVyKCk7XG4gICAgICBidWlsZGVyLmFtb3VudChib25kQW1vdW50KS5wYXllZSgnU3Rha2VkJyk7XG4gICAgICBzaG91bGQudGhyb3dzKCgpID0+IGJ1aWxkZXIudGVzdFZhbGlkYXRlRmllbGRzKCksIC9tdXN0IGluY2x1ZGUgYm90aCBib25kIGFuZCBub21pbmF0ZSBvcGVyYXRpb25zLyk7XG5cbiAgICAgIGJ1aWxkZXIgPSBmYWN0b3J5LmdldFY4QmF0Y2hTdGFraW5nQnVpbGRlcigpO1xuICAgICAgYnVpbGRlci52YWxpZGF0b3JzKFt2YWxpZGF0b3JdKTtcbiAgICAgIHNob3VsZC50aHJvd3MoKCkgPT4gYnVpbGRlci50ZXN0VmFsaWRhdGVGaWVsZHMoKSwgL211c3QgaW5jbHVkZSBib3RoIGJvbmQgYW5kIG5vbWluYXRlIG9wZXJhdGlvbnMvKTtcblxuICAgICAgYnVpbGRlciA9IGZhY3RvcnkuZ2V0VjhCYXRjaFN0YWtpbmdCdWlsZGVyKCk7XG4gICAgICBidWlsZGVyLmFtb3VudChib25kQW1vdW50KS5wYXllZSgnU3Rha2VkJykudmFsaWRhdG9ycyhbdmFsaWRhdG9yXSk7XG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IGJ1aWxkZXIudGVzdFZhbGlkYXRlRmllbGRzKCkpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYnVpbGQgdHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgaXQoJ2J1aWxkcyBiYXRjaEFsbChbYm9uZCwgbm9taW5hdGVdKSB3aXRoIHY4IHNwZWNWZXJzaW9uIGFuZCBubyBjb250cm9sbGVyJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZFNhbmRib3hCYXRjaCgpLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eEpzb24uc3BlY1ZlcnNpb24sIDgwMDAwMDApO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4SnNvbi5zcGVjVmVyc2lvbiwgdGVzdG5ldFY4TWF0ZXJpYWwuc3BlY1ZlcnNpb24pO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4SnNvbi50cmFuc2FjdGlvblZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnR4VmVyc2lvbik7XG4gICAgfSk7XG5cbiAgICBpdCgnaW5uZXIgYm9uZCBsZWcgKyBmdWxsIGJhdGNoIG1ldGhvZCBoZXggbWF0Y2hlcyB0aGUgdGVzdG5ldCBzYW5kYm94JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZFNhbmRib3hCYXRjaCgpLmJ1aWxkKCk7XG4gICAgICBjb25zdCBtZXRob2RIZXggPSAodHggYXMgYW55KS5fc3Vic3RyYXRlVHJhbnNhY3Rpb24ubWV0aG9kIGFzIHN0cmluZztcbiAgICAgIC8vIEZ1bGwgdXRpbGl0eS5iYXRjaEFsbCBtZXRob2QgaGV4IGlzIGJ5dGUtZm9yLWJ5dGUgaWRlbnRpY2FsIHRvIHRoZSBvbi1jaGFpbiBzYW5kYm94IHR4LlxuICAgICAgc2hvdWxkLmVxdWFsKG1ldGhvZEhleCwgc3Rha2luZ1R4VjguYmF0Y2guYm9uZEFuZE5vbWluYXRlLmNhbGxIZXgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RlY29kZXMgd2l0aCB2OCBtYXRlcmlhbCB0byBib25kKHsgdmFsdWUsIHBheWVlIH0pIOKAlCBubyBjb250cm9sbGVyIOKAlCBhbmQgbm9taW5hdGUnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkU2FuZGJveEJhdGNoKCkuYnVpbGQoKTtcbiAgICAgIGNvbnN0IG1hdGVyaWFsID0gdXRpbHMuZ2V0VjhNYXRlcmlhbChjb2lucy5nZXQoJ3Rwb2x5eCcpLm5ldHdvcmsudHlwZSk7XG4gICAgICBjb25zdCByZWdpc3RyeSA9IFNpbmdsZXRvblJlZ2lzdHJ5LmdldEluc3RhbmNlKG1hdGVyaWFsKTtcbiAgICAgIGNvbnN0IGRlY29kZWRUeCA9IGRlY29kZSh0eC50b0Jyb2FkY2FzdEZvcm1hdCgpLCB7XG4gICAgICAgIG1ldGFkYXRhUnBjOiBtYXRlcmlhbC5tZXRhZGF0YSxcbiAgICAgICAgcmVnaXN0cnksXG4gICAgICB9KTtcblxuICAgICAgc2hvdWxkLmVxdWFsKGRlY29kZWRUeC5tZXRob2QubmFtZSwgJ2JhdGNoQWxsJyk7XG4gICAgICBzaG91bGQuZXF1YWwoZGVjb2RlZFR4Lm1ldGhvZC5wYWxsZXQsICd1dGlsaXR5Jyk7XG5cbiAgICAgIGNvbnN0IGJhdGNoQXJncyA9IGRlY29kZWRUeC5tZXRob2QuYXJncyBhcyB1bmtub3duIGFzIEJhdGNoQXJncztcbiAgICAgIHNob3VsZC5lcXVhbChiYXRjaEFyZ3MuY2FsbHMubGVuZ3RoLCAyKTtcblxuICAgICAgY29uc3QgZmlyc3RDYWxsID0gYmF0Y2hBcmdzLmNhbGxzWzBdO1xuICAgICAgc2hvdWxkLmVxdWFsKHV0aWxzLmRlY29kZU1ldGhvZE5hbWUoZmlyc3RDYWxsLCByZWdpc3RyeSksICdib25kJyk7XG4gICAgICBjb25zdCBib25kQXJncyA9IGZpcnN0Q2FsbC5hcmdzIGFzIHVua25vd24gYXMgVjhCb25kQXJncyAmIHsgY29udHJvbGxlcj86IHVua25vd24gfTtcbiAgICAgIGNvbnN0IGJvbmRWYWx1ZSA9IHR5cGVvZiBib25kQXJncy52YWx1ZSA9PT0gJ3N0cmluZycgPyBib25kQXJncy52YWx1ZSA6IChib25kQXJncy52YWx1ZSBhcyBudW1iZXIpLnRvU3RyaW5nKCk7XG4gICAgICBzaG91bGQuZXF1YWwoYm9uZFZhbHVlLCBib25kQW1vdW50KTtcbiAgICAgIHNob3VsZC5lcXVhbChib25kQXJncy5jb250cm9sbGVyLCB1bmRlZmluZWQpO1xuXG4gICAgICBjb25zdCBzZWNvbmRDYWxsID0gYmF0Y2hBcmdzLmNhbGxzWzFdO1xuICAgICAgc2hvdWxkLmVxdWFsKHV0aWxzLmRlY29kZU1ldGhvZE5hbWUoc2Vjb25kQ2FsbCwgcmVnaXN0cnkpLCAnbm9taW5hdGUnKTtcbiAgICAgIGNvbnN0IG5vbWluYXRlQXJncyA9IHNlY29uZENhbGwuYXJncyBhcyB1bmtub3duIGFzIE5vbWluYXRlQXJncztcbiAgICAgIGNvbnN0IHRhcmdldHMgPSBub21pbmF0ZUFyZ3MudGFyZ2V0cy5tYXAoKHQpID0+ICh0eXBlb2YgdCA9PT0gJ3N0cmluZycgPyB0IDogKHQgYXMgeyBpZDogc3RyaW5nIH0pLmlkKSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHRhcmdldHMsIFt2YWxpZGF0b3JdKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3ZhbGlkYXRlRGVjb2RlZFRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdhY2NlcHRzIGEgZGVjb2RlZCB2OCBiYXRjaCBib25kK25vbWluYXRlIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IGJ1aWxkU2FuZGJveEJhdGNoKCk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IG1hdGVyaWFsID0gdXRpbHMuZ2V0VjhNYXRlcmlhbChjb2lucy5nZXQoJ3Rwb2x5eCcpLm5ldHdvcmsudHlwZSk7XG4gICAgICBjb25zdCByZWdpc3RyeSA9IFNpbmdsZXRvblJlZ2lzdHJ5LmdldEluc3RhbmNlKG1hdGVyaWFsKTtcbiAgICAgIGNvbnN0IGRlY29kZWRUeCA9IGRlY29kZSh0eC50b0Jyb2FkY2FzdEZvcm1hdCgpLCB7IG1ldGFkYXRhUnBjOiBtYXRlcmlhbC5tZXRhZGF0YSwgcmVnaXN0cnkgfSk7XG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IGJ1aWxkZXIudmFsaWRhdGVEZWNvZGVkVHJhbnNhY3Rpb24oZGVjb2RlZFR4KSk7XG4gICAgfSk7XG5cbiAgICBpdCgndmFsaWRhdGVzIHY4IGJvbmQgYXJncyB3aXRob3V0IGEgY29udHJvbGxlciBmaWVsZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5LmdldFY4QmF0Y2hTdGFraW5nQnVpbGRlcigpO1xuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBidWlsZGVyLnRlc3RWYWxpZGF0ZUJvbmRBcmdzKHsgdmFsdWU6IGJvbmRBbW91bnQsIHBheWVlOiAnU3Rha2VkJyB9IGFzIFY4Qm9uZEFyZ3MpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2Zyb20gcmF3IHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdyb3VuZC10cmlwcyBhIHY4IGJhdGNoIHRyYW5zYWN0aW9uIHRocm91Z2ggdGhlIGJ1aWxkZXInLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCByYXdUeEhleCA9IChhd2FpdCBidWlsZFNhbmRib3hCYXRjaCgpLmJ1aWxkKCkpLnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG5cbiAgICAgIGNvbnN0IG5ld0J1aWxkZXIgPSBmYWN0b3J5LmdldFY4QmF0Y2hTdGFraW5nQnVpbGRlcigpO1xuICAgICAgbmV3QnVpbGRlci5mcm9tKHJhd1R4SGV4KTtcblxuICAgICAgc2hvdWxkLmVxdWFsKG5ld0J1aWxkZXIuZ2V0QW1vdW50KCksIGJvbmRBbW91bnQpO1xuICAgICAgc2hvdWxkLmVxdWFsKG5ld0J1aWxkZXIuZ2V0UGF5ZWUoKSwgJ1N0YWtlZCcpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbChuZXdCdWlsZGVyLmdldFZhbGlkYXRvcnMoKSwgW3ZhbGlkYXRvcl0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2ZhY3RvcnkuZnJvbSByb3V0ZXMgYSB2OCBiYXRjaCBib25kK25vbWluYXRlIHRyYW5zYWN0aW9uIHRvIFY4QmF0Y2hTdGFraW5nQnVpbGRlcicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHJhd1R4SGV4ID0gKGF3YWl0IGJ1aWxkU2FuZGJveEJhdGNoKCkuYnVpbGQoKSkudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5LmZyb20ocmF3VHhIZXgpO1xuICAgICAgc2hvdWxkLm9rKGJ1aWxkZXIgaW5zdGFuY2VvZiBWOEJhdGNoU3Rha2luZ0J1aWxkZXIpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnVjggc3Rha2luZyB3cmFwcGVycyAoc21va2UgYnVpbGQpJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBmYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0cG9seXgnKSk7XG4gIGNvbnN0IHZhbGlkYXRvciA9IHN0YWtpbmdUeFY4LnNhbmRib3gudmFsaWRhdG9yO1xuICBjb25zdCBzZW5kZXIgPSBzdGFraW5nVHhWOC5zYW5kYm94LnN0YXNoO1xuICBjb25zdCByZWZlcmVuY2VCbG9jayA9IHN0YWtpbmdUeFY4LnNhbmRib3gucmVmZXJlbmNlQmxvY2s7XG5cbiAgY29uc3QgcmVwbGF5ID0geyBmaXJzdFZhbGlkOiAyNDgyOTEzMiwgbWF4RHVyYXRpb246IDY0IH07XG5cbiAgaXQoJ1Y4Qm9uZEV4dHJhQnVpbGRlciBidWlsZHMgd2l0aCB2OCBtYXRlcmlhbCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5nZXRWOEJvbmRFeHRyYUJ1aWxkZXIoKTtcbiAgICBzaG91bGQub2soYnVpbGRlciBpbnN0YW5jZW9mIFY4Qm9uZEV4dHJhQnVpbGRlcik7XG4gICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyXG4gICAgICAuYW1vdW50KCcxMDAwMDAwMCcpXG4gICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyIH0pXG4gICAgICAudmFsaWRpdHkocmVwbGF5KVxuICAgICAgLnJlZmVyZW5jZUJsb2NrKHJlZmVyZW5jZUJsb2NrKVxuICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMTg5IH0pXG4gICAgICAuYnVpbGQoKTtcbiAgICBzaG91bGQuZXF1YWwodHgudG9Kc29uKCkuc3BlY1ZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnNwZWNWZXJzaW9uKTtcbiAgfSk7XG5cbiAgaXQoJ1Y4VW5ib25kQnVpbGRlciBidWlsZHMgd2l0aCB2OCBtYXRlcmlhbCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5nZXRWOFVuYm9uZEJ1aWxkZXIoKTtcbiAgICBzaG91bGQub2soYnVpbGRlciBpbnN0YW5jZW9mIFY4VW5ib25kQnVpbGRlcik7XG4gICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyXG4gICAgICAuYW1vdW50KCcxMDAwMDAwMCcpXG4gICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyIH0pXG4gICAgICAudmFsaWRpdHkocmVwbGF5KVxuICAgICAgLnJlZmVyZW5jZUJsb2NrKHJlZmVyZW5jZUJsb2NrKVxuICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMTg5IH0pXG4gICAgICAuYnVpbGQoKTtcbiAgICBzaG91bGQuZXF1YWwodHgudG9Kc29uKCkuc3BlY1ZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnNwZWNWZXJzaW9uKTtcbiAgfSk7XG5cbiAgaXQoJ1Y4QmF0Y2hVbnN0YWtpbmdCdWlsZGVyIGJ1aWxkcyB3aXRoIHY4IG1hdGVyaWFsJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5LmdldFY4QmF0Y2hVbnN0YWtpbmdCdWlsZGVyKCk7XG4gICAgc2hvdWxkLm9rKGJ1aWxkZXIgaW5zdGFuY2VvZiBWOEJhdGNoVW5zdGFraW5nQnVpbGRlcik7XG4gICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyXG4gICAgICAuYW1vdW50KCcxMDAwMDAwMCcpXG4gICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyIH0pXG4gICAgICAudmFsaWRpdHkocmVwbGF5KVxuICAgICAgLnJlZmVyZW5jZUJsb2NrKHJlZmVyZW5jZUJsb2NrKVxuICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMTg5IH0pXG4gICAgICAuYnVpbGQoKTtcbiAgICBzaG91bGQuZXF1YWwodHgudG9Kc29uKCkuc3BlY1ZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnNwZWNWZXJzaW9uKTtcbiAgfSk7XG5cbiAgaXQoJ1Y4V2l0aGRyYXdVbmJvbmRlZEJ1aWxkZXIgYnVpbGRzIHdpdGggdjggbWF0ZXJpYWwnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnkuZ2V0VjhXaXRoZHJhd1VuYm9uZGVkQnVpbGRlcigpO1xuICAgIHNob3VsZC5vayhidWlsZGVyIGluc3RhbmNlb2YgVjhXaXRoZHJhd1VuYm9uZGVkQnVpbGRlcik7XG4gICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyXG4gICAgICAuc2xhc2hpbmdTcGFucygwKVxuICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlciB9KVxuICAgICAgLnZhbGlkaXR5KHJlcGxheSlcbiAgICAgIC5yZWZlcmVuY2VCbG9jayhyZWZlcmVuY2VCbG9jaylcbiAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDE4OSB9KVxuICAgICAgLmJ1aWxkKCk7XG4gICAgc2hvdWxkLmVxdWFsKHR4LnRvSnNvbigpLnNwZWNWZXJzaW9uLCB0ZXN0bmV0VjhNYXRlcmlhbC5zcGVjVmVyc2lvbik7XG4gIH0pO1xuXG4gIGl0KCdWOE5vbWluYXRlQnVpbGRlciBidWlsZHMgd2l0aCB2OCBtYXRlcmlhbCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5nZXRWOE5vbWluYXRlQnVpbGRlcigpO1xuICAgIHNob3VsZC5vayhidWlsZGVyIGluc3RhbmNlb2YgVjhOb21pbmF0ZUJ1aWxkZXIpO1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlclxuICAgICAgLnZhbGlkYXRvcnMoW3ZhbGlkYXRvcl0pXG4gICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyIH0pXG4gICAgICAudmFsaWRpdHkocmVwbGF5KVxuICAgICAgLnJlZmVyZW5jZUJsb2NrKHJlZmVyZW5jZUJsb2NrKVxuICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMTg5IH0pXG4gICAgICAuYnVpbGQoKTtcbiAgICBzaG91bGQuZXF1YWwodHgudG9Kc29uKCkuc3BlY1ZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnNwZWNWZXJzaW9uKTtcbiAgfSk7XG59KTtcbiJdfQ==
212
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjhCYXRjaFN0YWtpbmdCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci92OEJhdGNoU3Rha2luZ0J1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxzRUFBdUQ7QUFDdkQsNENBQXVDO0FBQ3ZDLG9EQUE0QjtBQUM1QiwwQ0FTMEI7QUFFMUIsbUVBQTJDO0FBQzNDLHNEQUE4RTtBQUM5RSwrQ0FBOEM7QUFDOUMsaUNBQTZEO0FBRTdELFFBQVEsQ0FBQyx1QkFBdUIsRUFBRTtJQUNoQyxNQUFNLE9BQU8sR0FBRyxJQUFJLCtCQUF5QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUVuRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsR0FBRyx1QkFBVyxDQUFDLE9BQU8sQ0FBQztJQUVoRyxNQUFNLGlCQUFpQixHQUFHLEdBQUcsRUFBRSxDQUM3QixJQUFJLDJCQUFxQixDQUFDLElBQUEsc0JBQWUsR0FBRSxDQUFDO1NBQ3pDLE1BQU0sQ0FBQyxVQUFVLENBQUM7U0FDbEIsS0FBSyxDQUFDLFFBQVEsQ0FBQztTQUNmLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3ZCLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztTQUMxQixRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDO1NBQ3pDLGNBQWMsQ0FBQyxjQUFjLENBQUM7U0FDOUIsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBRW5FLFFBQVEsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFF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QVUsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUM7YUFDM0QsS0FBSyxFQUFFLENBQUM7UUFDWCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsV0FBVyxFQUFFLDZCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZFLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZWNvZGUgfSBmcm9tICdAc3Vic3RyYXRlL3R4d3JhcHBlci1wb2xrYWRvdCc7XG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7XG4gIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIFY4QmF0Y2hTdGFraW5nQnVpbGRlcixcbiAgVjhCb25kRXh0cmFCdWlsZGVyLFxuICBWOFVuYm9uZEJ1aWxkZXIsXG4gIFY4QmF0Y2hVbnN0YWtpbmdCdWlsZGVyLFxuICBWOFdpdGhkcmF3VW5ib25kZWRCdWlsZGVyLFxuICBWOE5vbWluYXRlQnVpbGRlcixcbiAgU2luZ2xldG9uUmVnaXN0cnksXG59IGZyb20gJy4uLy4uLy4uL3NyYy9saWInO1xuaW1wb3J0IHsgQmF0Y2hBcmdzLCBOb21pbmF0ZUFyZ3MsIFY4Qm9uZEFyZ3MgfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliL2lmYWNlJztcbmltcG9ydCB1dGlscyBmcm9tICcuLi8uLi8uLi9zcmMvbGliL3V0aWxzJztcbmltcG9ydCB7IHRlc3RuZXRWOE1hdGVyaWFsLCBtYWlubmV0VjhNYXRlcmlhbCB9IGZyb20gJy4uLy4uLy4uL3NyYy9yZXNvdXJjZXMnO1xuaW1wb3J0IHsgc3Rha2luZ1R4VjggfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMnO1xuaW1wb3J0IHsgYnVpbGRUZXN0Q29uZmlnLCBidWlsZE1haW5uZXRDb25maWcgfSBmcm9tICcuL2Jhc2UnO1xuXG5kZXNjcmliZSgnVjhCYXRjaFN0YWtpbmdCdWlsZGVyJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBmYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0cG9seXgnKSk7XG5cbiAgY29uc3QgeyBzdGFzaCwgdmFsaWRhdG9yLCBib25kQW1vdW50LCByZWZlcmVuY2VCbG9jaywgbm9uY2UsIGZpcnN0VmFsaWQgfSA9IHN0YWtpbmdUeFY4LnNhbmRib3g7XG5cbiAgY29uc3QgYnVpbGRTYW5kYm94QmF0Y2ggPSAoKSA9PlxuICAgIG5ldyBWOEJhdGNoU3Rha2luZ0J1aWxkZXIoYnVpbGRUZXN0Q29uZmlnKCkpXG4gICAgICAuYW1vdW50KGJvbmRBbW91bnQpXG4gICAgICAucGF5ZWUoJ1N0YWtlZCcpXG4gICAgICAudmFsaWRhdG9ycyhbdmFsaWRhdG9yXSlcbiAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzdGFzaCB9KVxuICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZCwgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAucmVmZXJlbmNlQmxvY2socmVmZXJlbmNlQmxvY2spXG4gICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiBub25jZSB9KTtcblxuICBkZXNjcmliZSgndjggbWF0ZXJpYWwnLCAoKSA9PiB7XG4gICAgaXQoJ3Rlc3RuZXQgYnVpbGRlciB1c2VzIHY4IHNwZWNWZXJzaW9uIGFuZCB0eFZlcnNpb24nLCAoKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IFY4QmF0Y2hTdGFraW5nQnVpbGRlcihidWlsZFRlc3RDb25maWcoKSk7XG4gICAgICBjb25zdCBtYXRlcmlhbCA9IChidWlsZGVyIGFzIGFueSkuX21hdGVyaWFsO1xuICAgICAgc2hvdWxkLmVxdWFsKG1hdGVyaWFsLnNwZWNWZXJzaW9uLCB0ZXN0bmV0VjhNYXRlcmlhbC5zcGVjVmVyc2lvbik7XG4gICAgICBzaG91bGQuZXF1YWwobWF0ZXJpYWwudHhWZXJzaW9uLCB0ZXN0bmV0VjhNYXRlcmlhbC50eFZlcnNpb24pO1xuICAgICAgc2hvdWxkLmVxdWFsKG1hdGVyaWFsLnNwZWNWZXJzaW9uLCA4MDAwMDAwKTtcbiAgICB9KTtcblxuICAgIGl0KCdtYWlubmV0IGJ1aWxkZXIgdXNlcyB2OCBzcGVjVmVyc2lvbiBhbmQgdHhWZXJzaW9uJywgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBWOEJhdGNoU3Rha2luZ0J1aWxkZXIoYnVpbGRNYWlubmV0Q29uZmlnKCkpO1xuICAgICAgY29uc3QgbWF0ZXJpYWwgPSAoYnVpbGRlciBhcyBhbnkpLl9tYXRlcmlhbDtcbiAgICAgIHNob3VsZC5lcXVhbChtYXRlcmlhbC5zcGVjVmVyc2lvbiwgbWFpbm5ldFY4TWF0ZXJpYWwuc3BlY1ZlcnNpb24pO1xuICAgICAgc2hvdWxkLmVxdWFsKG1hdGVyaWFsLnR4VmVyc2lvbiwgbWFpbm5ldFY4TWF0ZXJpYWwudHhWZXJzaW9uKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2ZhY3RvcnkgbWV0aG9kJywgKCkgPT4ge1xuICAgIGl0KCdnZXRWOEJhdGNoU3Rha2luZ0J1aWxkZXIgcmV0dXJucyBhIFY4QmF0Y2hTdGFraW5nQnVpbGRlciBjYXJyeWluZyB2OCBtYXRlcmlhbCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5LmdldFY4QmF0Y2hTdGFraW5nQnVpbGRlcigpO1xuICAgICAgc2hvdWxkLm9rKGJ1aWxkZXIgaW5zdGFuY2VvZiBWOEJhdGNoU3Rha2luZ0J1aWxkZXIpO1xuICAgICAgc2hvdWxkLmVxdWFsKChidWlsZGVyIGFzIGFueSkuX21hdGVyaWFsLnNwZWNWZXJzaW9uLCB0ZXN0bmV0VjhNYXRlcmlhbC5zcGVjVmVyc2lvbik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzZXR0ZXIgdmFsaWRhdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIG5vdCBleHBvc2UgYSBjb250cm9sbGVyIHNldHRlcicsICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5LmdldFY4QmF0Y2hTdGFraW5nQnVpbGRlcigpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR5cGVvZiAoYnVpbGRlciBhcyBhbnkpLmNvbnRyb2xsZXIsICd1bmRlZmluZWQnKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eXBlb2YgKGJ1aWxkZXIgYXMgYW55KS5nZXRDb250cm9sbGVyLCAndW5kZWZpbmVkJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlcXVpcmUgYm90aCBib25kIGFuZCBub21pbmF0ZSBvcGVyYXRpb25zJywgKCkgPT4ge1xuICAgICAgbGV0IGJ1aWxkZXIgPSBmYWN0b3J5LmdldFY4QmF0Y2hTdGFraW5nQnVpbGRlcigpO1xuICAgICAgYnVpbGRlci5hbW91bnQoYm9uZEFtb3VudCkucGF5ZWUoJ1N0YWtlZCcpO1xuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiBidWlsZGVyLnRlc3RWYWxpZGF0ZUZpZWxkcygpLCAvbXVzdCBpbmNsdWRlIGJvdGggYm9uZCBhbmQgbm9taW5hdGUgb3BlcmF0aW9ucy8pO1xuXG4gICAgICBidWlsZGVyID0gZmFjdG9yeS5nZXRWOEJhdGNoU3Rha2luZ0J1aWxkZXIoKTtcbiAgICAgIGJ1aWxkZXIudmFsaWRhdG9ycyhbdmFsaWRhdG9yXSk7XG4gICAgICBzaG91bGQudGhyb3dzKCgpID0+IGJ1aWxkZXIudGVzdFZhbGlkYXRlRmllbGRzKCksIC9tdXN0IGluY2x1ZGUgYm90aCBib25kIGFuZCBub21pbmF0ZSBvcGVyYXRpb25zLyk7XG5cbiAgICAgIGJ1aWxkZXIgPSBmYWN0b3J5LmdldFY4QmF0Y2hTdGFraW5nQnVpbGRlcigpO1xuICAgICAgYnVpbGRlci5hbW91bnQoYm9uZEFtb3VudCkucGF5ZWUoJ1N0YWtlZCcpLnZhbGlkYXRvcnMoW3ZhbGlkYXRvcl0pO1xuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBidWlsZGVyLnRlc3RWYWxpZGF0ZUZpZWxkcygpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2J1aWxkIHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdidWlsZHMgYmF0Y2hBbGwoW2JvbmQsIG5vbWluYXRlXSkgd2l0aCB2OCBzcGVjVmVyc2lvbiBhbmQgbm8gY29udHJvbGxlcicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRTYW5kYm94QmF0Y2goKS5idWlsZCgpO1xuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgICBzaG91bGQuZXF1YWwodHhKc29uLnNwZWNWZXJzaW9uLCA4MDAwMDAwKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eEpzb24uc3BlY1ZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnNwZWNWZXJzaW9uKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eEpzb24udHJhbnNhY3Rpb25WZXJzaW9uLCB0ZXN0bmV0VjhNYXRlcmlhbC50eFZlcnNpb24pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2lubmVyIGJvbmQgbGVnICsgZnVsbCBiYXRjaCBtZXRob2QgaGV4IG1hdGNoZXMgdGhlIHRlc3RuZXQgc2FuZGJveCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRTYW5kYm94QmF0Y2goKS5idWlsZCgpO1xuICAgICAgY29uc3QgbWV0aG9kSGV4ID0gKHR4IGFzIGFueSkuX3N1YnN0cmF0ZVRyYW5zYWN0aW9uLm1ldGhvZCBhcyBzdHJpbmc7XG4gICAgICAvLyBGdWxsIHV0aWxpdHkuYmF0Y2hBbGwgbWV0aG9kIGhleCBpcyBieXRlLWZvci1ieXRlIGlkZW50aWNhbCB0byB0aGUgb24tY2hhaW4gc2FuZGJveCB0eC5cbiAgICAgIHNob3VsZC5lcXVhbChtZXRob2RIZXgsIHN0YWtpbmdUeFY4LmJhdGNoLmJvbmRBbmROb21pbmF0ZS5jYWxsSGV4KTtcbiAgICB9KTtcblxuICAgIGl0KCdkZWNvZGVzIHdpdGggdjggbWF0ZXJpYWwgdG8gYm9uZCh7IHZhbHVlLCBwYXllZSB9KSDigJQgbm8gY29udHJvbGxlciDigJQgYW5kIG5vbWluYXRlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZFNhbmRib3hCYXRjaCgpLmJ1aWxkKCk7XG4gICAgICBjb25zdCBtYXRlcmlhbCA9IHV0aWxzLmdldFY4TWF0ZXJpYWwoY29pbnMuZ2V0KCd0cG9seXgnKS5uZXR3b3JrLnR5cGUpO1xuICAgICAgY29uc3QgcmVnaXN0cnkgPSBTaW5nbGV0b25SZWdpc3RyeS5nZXRJbnN0YW5jZShtYXRlcmlhbCk7XG4gICAgICBjb25zdCBkZWNvZGVkVHggPSBkZWNvZGUodHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwge1xuICAgICAgICBtZXRhZGF0YVJwYzogbWF0ZXJpYWwubWV0YWRhdGEsXG4gICAgICAgIHJlZ2lzdHJ5LFxuICAgICAgfSk7XG5cbiAgICAgIHNob3VsZC5lcXVhbChkZWNvZGVkVHgubWV0aG9kLm5hbWUsICdiYXRjaEFsbCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKGRlY29kZWRUeC5tZXRob2QucGFsbGV0LCAndXRpbGl0eScpO1xuXG4gICAgICBjb25zdCBiYXRjaEFyZ3MgPSBkZWNvZGVkVHgubWV0aG9kLmFyZ3MgYXMgdW5rbm93biBhcyBCYXRjaEFyZ3M7XG4gICAgICBzaG91bGQuZXF1YWwoYmF0Y2hBcmdzLmNhbGxzLmxlbmd0aCwgMik7XG5cbiAgICAgIGNvbnN0IGZpcnN0Q2FsbCA9IGJhdGNoQXJncy5jYWxsc1swXTtcbiAgICAgIHNob3VsZC5lcXVhbCh1dGlscy5kZWNvZGVNZXRob2ROYW1lKGZpcnN0Q2FsbCwgcmVnaXN0cnkpLCAnYm9uZCcpO1xuICAgICAgY29uc3QgYm9uZEFyZ3MgPSBmaXJzdENhbGwuYXJncyBhcyB1bmtub3duIGFzIFY4Qm9uZEFyZ3MgJiB7IGNvbnRyb2xsZXI/OiB1bmtub3duIH07XG4gICAgICBjb25zdCBib25kVmFsdWUgPSB0eXBlb2YgYm9uZEFyZ3MudmFsdWUgPT09ICdzdHJpbmcnID8gYm9uZEFyZ3MudmFsdWUgOiAoYm9uZEFyZ3MudmFsdWUgYXMgbnVtYmVyKS50b1N0cmluZygpO1xuICAgICAgc2hvdWxkLmVxdWFsKGJvbmRWYWx1ZSwgYm9uZEFtb3VudCk7XG4gICAgICBzaG91bGQuZXF1YWwoYm9uZEFyZ3MuY29udHJvbGxlciwgdW5kZWZpbmVkKTtcblxuICAgICAgY29uc3Qgc2Vjb25kQ2FsbCA9IGJhdGNoQXJncy5jYWxsc1sxXTtcbiAgICAgIHNob3VsZC5lcXVhbCh1dGlscy5kZWNvZGVNZXRob2ROYW1lKHNlY29uZENhbGwsIHJlZ2lzdHJ5KSwgJ25vbWluYXRlJyk7XG4gICAgICBjb25zdCBub21pbmF0ZUFyZ3MgPSBzZWNvbmRDYWxsLmFyZ3MgYXMgdW5rbm93biBhcyBOb21pbmF0ZUFyZ3M7XG4gICAgICBjb25zdCB0YXJnZXRzID0gbm9taW5hdGVBcmdzLnRhcmdldHMubWFwKCh0KSA9PiAodHlwZW9mIHQgPT09ICdzdHJpbmcnID8gdCA6ICh0IGFzIHsgaWQ6IHN0cmluZyB9KS5pZCkpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0YXJnZXRzLCBbdmFsaWRhdG9yXSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd2YWxpZGF0ZURlY29kZWRUcmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBpdCgnYWNjZXB0cyBhIGRlY29kZWQgdjggYmF0Y2ggYm9uZCtub21pbmF0ZSB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBidWlsZFNhbmRib3hCYXRjaCgpO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCBtYXRlcmlhbCA9IHV0aWxzLmdldFY4TWF0ZXJpYWwoY29pbnMuZ2V0KCd0cG9seXgnKS5uZXR3b3JrLnR5cGUpO1xuICAgICAgY29uc3QgcmVnaXN0cnkgPSBTaW5nbGV0b25SZWdpc3RyeS5nZXRJbnN0YW5jZShtYXRlcmlhbCk7XG4gICAgICBjb25zdCBkZWNvZGVkVHggPSBkZWNvZGUodHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgeyBtZXRhZGF0YVJwYzogbWF0ZXJpYWwubWV0YWRhdGEsIHJlZ2lzdHJ5IH0pO1xuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBidWlsZGVyLnZhbGlkYXRlRGVjb2RlZFRyYW5zYWN0aW9uKGRlY29kZWRUeCkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3ZhbGlkYXRlcyB2OCBib25kIGFyZ3Mgd2l0aG91dCBhIGNvbnRyb2xsZXIgZmllbGQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5nZXRWOEJhdGNoU3Rha2luZ0J1aWxkZXIoKTtcbiAgICAgIHNob3VsZC5kb2VzTm90VGhyb3coKCkgPT4gYnVpbGRlci50ZXN0VmFsaWRhdGVCb25kQXJncyh7IHZhbHVlOiBib25kQW1vdW50LCBwYXllZTogJ1N0YWtlZCcgfSBhcyBWOEJvbmRBcmdzKSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdmcm9tIHJhdyB0cmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBpdCgncm91bmQtdHJpcHMgYSB2OCBiYXRjaCB0cmFuc2FjdGlvbiB0aHJvdWdoIHRoZSBidWlsZGVyJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmF3VHhIZXggPSAoYXdhaXQgYnVpbGRTYW5kYm94QmF0Y2goKS5idWlsZCgpKS50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuXG4gICAgICBjb25zdCBuZXdCdWlsZGVyID0gZmFjdG9yeS5nZXRWOEJhdGNoU3Rha2luZ0J1aWxkZXIoKTtcbiAgICAgIG5ld0J1aWxkZXIuZnJvbShyYXdUeEhleCk7XG5cbiAgICAgIHNob3VsZC5lcXVhbChuZXdCdWlsZGVyLmdldEFtb3VudCgpLCBib25kQW1vdW50KTtcbiAgICAgIHNob3VsZC5lcXVhbChuZXdCdWlsZGVyLmdldFBheWVlKCksICdTdGFrZWQnKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwobmV3QnVpbGRlci5nZXRWYWxpZGF0b3JzKCksIFt2YWxpZGF0b3JdKTtcbiAgICB9KTtcblxuICAgIGl0KCdmYWN0b3J5LmZyb20gcm91dGVzIGEgdjggYmF0Y2ggYm9uZCtub21pbmF0ZSB0cmFuc2FjdGlvbiB0byBWOEJhdGNoU3Rha2luZ0J1aWxkZXInLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCByYXdUeEhleCA9IChhd2FpdCBidWlsZFNhbmRib3hCYXRjaCgpLmJ1aWxkKCkpLnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5mcm9tKHJhd1R4SGV4KTtcbiAgICAgIHNob3VsZC5vayhidWlsZGVyIGluc3RhbmNlb2YgVjhCYXRjaFN0YWtpbmdCdWlsZGVyKTtcbiAgICB9KTtcblxuICAgIGl0KCdmYWN0b3J5LmZyb20gcm91dGVzIHRvIFY4QmF0Y2hTdGFraW5nQnVpbGRlciBvbiB0aGUgdjggZGVjb2RlLXN1Y2Nlc3MgcGF0aCAoU0ktOTgxKScsIGFzeW5jICgpID0+IHtcbiAgICAgIC8vIFJlcHJvZHVjZXMgdGhlIHN0YWdpbmcgaW5jaWRlbnQ6IHdoZW4gdGhlIGZhY3RvcnkgY2FycmllcyB2OCBtYXRlcmlhbCwgYGRlY29kZSgpYCBzdWNjZWVkc1xuICAgICAgLy8gYW5kIHlpZWxkcyBhIGJvbmQgY2FsbCB3aXRoIG5vIGBjb250cm9sbGVyYC4gUm91dGluZyBtdXN0IGRldGVjdCB0aGUgbWlzc2luZyBjb250cm9sbGVyIGFuZFxuICAgICAgLy8gcmV0dXJuIHRoZSB2OCBidWlsZGVyIHJhdGhlciB0aGFuIHRoZSB2NyBCYXRjaFN0YWtpbmdCdWlsZGVyLCB3aGljaCBjcmFzaGVzIHJlYWRpbmdcbiAgICAgIC8vIGBhcmdzLmNvbnRyb2xsZXIuaWRgLlxuICAgICAgY29uc3QgcmF3VHhIZXggPSAoYXdhaXQgYnVpbGRTYW5kYm94QmF0Y2goKS5idWlsZCgpKS50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgY29uc3QgdjhNYXRlcmlhbCA9IHV0aWxzLmdldFY4TWF0ZXJpYWwoY29pbnMuZ2V0KCd0cG9seXgnKS5uZXR3b3JrLnR5cGUpO1xuICAgICAgY29uc3QgdjhGYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0cG9seXgnKSkubWF0ZXJpYWwodjhNYXRlcmlhbCk7XG4gICAgICBjb25zdCBidWlsZGVyID0gdjhGYWN0b3J5LmZyb20ocmF3VHhIZXgpO1xuICAgICAgc2hvdWxkLm9rKGJ1aWxkZXIgaW5zdGFuY2VvZiBWOEJhdGNoU3Rha2luZ0J1aWxkZXIpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnVjggc3Rha2luZyB3cmFwcGVycyAoc21va2UgYnVpbGQpJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBmYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0cG9seXgnKSk7XG4gIGNvbnN0IHZhbGlkYXRvciA9IHN0YWtpbmdUeFY4LnNhbmRib3gudmFsaWRhdG9yO1xuICBjb25zdCBzZW5kZXIgPSBzdGFraW5nVHhWOC5zYW5kYm94LnN0YXNoO1xuICBjb25zdCByZWZlcmVuY2VCbG9jayA9IHN0YWtpbmdUeFY4LnNhbmRib3gucmVmZXJlbmNlQmxvY2s7XG5cbiAgY29uc3QgcmVwbGF5ID0geyBmaXJzdFZhbGlkOiAyNDgyOTEzMiwgbWF4RHVyYXRpb246IDY0IH07XG5cbiAgaXQoJ1Y4Qm9uZEV4dHJhQnVpbGRlciBidWlsZHMgd2l0aCB2OCBtYXRlcmlhbCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5nZXRWOEJvbmRFeHRyYUJ1aWxkZXIoKTtcbiAgICBzaG91bGQub2soYnVpbGRlciBpbnN0YW5jZW9mIFY4Qm9uZEV4dHJhQnVpbGRlcik7XG4gICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyXG4gICAgICAuYW1vdW50KCcxMDAwMDAwMCcpXG4gICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyIH0pXG4gICAgICAudmFsaWRpdHkocmVwbGF5KVxuICAgICAgLnJlZmVyZW5jZUJsb2NrKHJlZmVyZW5jZUJsb2NrKVxuICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMTg5IH0pXG4gICAgICAuYnVpbGQoKTtcbiAgICBzaG91bGQuZXF1YWwodHgudG9Kc29uKCkuc3BlY1ZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnNwZWNWZXJzaW9uKTtcbiAgfSk7XG5cbiAgaXQoJ1Y4VW5ib25kQnVpbGRlciBidWlsZHMgd2l0aCB2OCBtYXRlcmlhbCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5nZXRWOFVuYm9uZEJ1aWxkZXIoKTtcbiAgICBzaG91bGQub2soYnVpbGRlciBpbnN0YW5jZW9mIFY4VW5ib25kQnVpbGRlcik7XG4gICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyXG4gICAgICAuYW1vdW50KCcxMDAwMDAwMCcpXG4gICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyIH0pXG4gICAgICAudmFsaWRpdHkocmVwbGF5KVxuICAgICAgLnJlZmVyZW5jZUJsb2NrKHJlZmVyZW5jZUJsb2NrKVxuICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMTg5IH0pXG4gICAgICAuYnVpbGQoKTtcbiAgICBzaG91bGQuZXF1YWwodHgudG9Kc29uKCkuc3BlY1ZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnNwZWNWZXJzaW9uKTtcbiAgfSk7XG5cbiAgaXQoJ1Y4QmF0Y2hVbnN0YWtpbmdCdWlsZGVyIGJ1aWxkcyB3aXRoIHY4IG1hdGVyaWFsJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5LmdldFY4QmF0Y2hVbnN0YWtpbmdCdWlsZGVyKCk7XG4gICAgc2hvdWxkLm9rKGJ1aWxkZXIgaW5zdGFuY2VvZiBWOEJhdGNoVW5zdGFraW5nQnVpbGRlcik7XG4gICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyXG4gICAgICAuYW1vdW50KCcxMDAwMDAwMCcpXG4gICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyIH0pXG4gICAgICAudmFsaWRpdHkocmVwbGF5KVxuICAgICAgLnJlZmVyZW5jZUJsb2NrKHJlZmVyZW5jZUJsb2NrKVxuICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMTg5IH0pXG4gICAgICAuYnVpbGQoKTtcbiAgICBzaG91bGQuZXF1YWwodHgudG9Kc29uKCkuc3BlY1ZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnNwZWNWZXJzaW9uKTtcbiAgfSk7XG5cbiAgaXQoJ1Y4V2l0aGRyYXdVbmJvbmRlZEJ1aWxkZXIgYnVpbGRzIHdpdGggdjggbWF0ZXJpYWwnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnkuZ2V0VjhXaXRoZHJhd1VuYm9uZGVkQnVpbGRlcigpO1xuICAgIHNob3VsZC5vayhidWlsZGVyIGluc3RhbmNlb2YgVjhXaXRoZHJhd1VuYm9uZGVkQnVpbGRlcik7XG4gICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyXG4gICAgICAuc2xhc2hpbmdTcGFucygwKVxuICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlciB9KVxuICAgICAgLnZhbGlkaXR5KHJlcGxheSlcbiAgICAgIC5yZWZlcmVuY2VCbG9jayhyZWZlcmVuY2VCbG9jaylcbiAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDE4OSB9KVxuICAgICAgLmJ1aWxkKCk7XG4gICAgc2hvdWxkLmVxdWFsKHR4LnRvSnNvbigpLnNwZWNWZXJzaW9uLCB0ZXN0bmV0VjhNYXRlcmlhbC5zcGVjVmVyc2lvbik7XG4gIH0pO1xuXG4gIGl0KCdWOE5vbWluYXRlQnVpbGRlciBidWlsZHMgd2l0aCB2OCBtYXRlcmlhbCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5nZXRWOE5vbWluYXRlQnVpbGRlcigpO1xuICAgIHNob3VsZC5vayhidWlsZGVyIGluc3RhbmNlb2YgVjhOb21pbmF0ZUJ1aWxkZXIpO1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlclxuICAgICAgLnZhbGlkYXRvcnMoW3ZhbGlkYXRvcl0pXG4gICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyIH0pXG4gICAgICAudmFsaWRpdHkocmVwbGF5KVxuICAgICAgLnJlZmVyZW5jZUJsb2NrKHJlZmVyZW5jZUJsb2NrKVxuICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMTg5IH0pXG4gICAgICAuYnVpbGQoKTtcbiAgICBzaG91bGQuZXF1YWwodHgudG9Kc29uKCkuc3BlY1ZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnNwZWNWZXJzaW9uKTtcbiAgfSk7XG59KTtcbiJdfQ==