@bitgo/sdk-coin-ton 3.9.6 → 3.10.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.
@@ -236,5 +236,44 @@ describe('Ton Transfer Builder', () => {
236
236
  const txJson2 = tx2.toJson();
237
237
  txJson2.destinationAlias.should.equal(otherFormat);
238
238
  });
239
+ it('should build a transfer tx compatible with v3 wallet contract', async function () {
240
+ const txBuilder = factory.getTransferBuilder();
241
+ txBuilder.sender(testData.vestingContract.address);
242
+ txBuilder.sequenceNumber(3);
243
+ txBuilder.expireTime(1761215512);
244
+ txBuilder.send(testData.v3CompatibleSignedSendTransaction.recipient);
245
+ txBuilder.isV3ContractMessage(true);
246
+ txBuilder.bounceable(true);
247
+ txBuilder.addSignature({ pub: testData.vestingContract.publicKey }, Buffer.from(testData.vestingContract.signature, 'base64'));
248
+ const tx = await txBuilder.build();
249
+ should_1.default.equal(tx.type, sdk_core_1.TransactionType.Send);
250
+ tx.inputs.length.should.equal(1);
251
+ tx.inputs[0].should.deepEqual({
252
+ address: testData.vestingContract.address,
253
+ value: testData.v3CompatibleSignedSendTransaction.recipient.amount,
254
+ coin: 'tton',
255
+ });
256
+ tx.outputs.length.should.equal(1);
257
+ tx.outputs[0].should.deepEqual({
258
+ address: testData.v3CompatibleSignedSendTransaction.recipient.address,
259
+ value: testData.v3CompatibleSignedSendTransaction.recipient.amount,
260
+ coin: 'tton',
261
+ });
262
+ });
263
+ it('should build a v3 compatible send transaction using raw transaction hex', async function () {
264
+ const txBuilder = factory.from(testData.v3CompatibleSignedSendTransaction.txBounceable);
265
+ const builtTx = await txBuilder.build();
266
+ const jsonTx = builtTx.toJson();
267
+ should_1.default.equal(builtTx.type, sdk_core_1.TransactionType.Send);
268
+ should_1.default.equal(builtTx.signablePayload.toString('base64'), testData.v3CompatibleSignedSendTransaction.bounceableSignable);
269
+ should_1.default.equal(builtTx.id, testData.v3CompatibleSignedSendTransaction.txIdBounceable);
270
+ jsonTx.sender.should.equal(testData.vestingContract.addressBounceable);
271
+ jsonTx.destination.should.equal(testData.v3CompatibleSignedSendTransaction.recipient.address);
272
+ jsonTx.destinationAlias.should.equal(testData.v3CompatibleSignedSendTransaction.recipientNonBounceable.address);
273
+ jsonTx.amount.should.equal(testData.v3CompatibleSignedSendTransaction.recipient.amount);
274
+ jsonTx.seqno.should.equal(3);
275
+ jsonTx.expirationTime.should.equal(1761215512);
276
+ jsonTx.bounceable.should.equal(true);
277
+ });
239
278
  });
240
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zZmVyQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QixvREFBNEI7QUFDNUIsOENBQWtEO0FBQ2xELDRDQUF1QztBQUN2QyxtQ0FBK0Q7QUFDL0QsMkRBQTZDO0FBQzdDLDJEQUE2QztBQUU3QyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxFQUFFO0lBQ3BDLE1BQU0sT0FBTyxHQUFHLElBQUksK0JBQXlCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLEVBQUUsQ0FBQyxxQ0FBcUMsRUFBRSxLQUFLO1FBQzdDLE1BQU0sSUFBSSxHQUFHLDhDQUE4QyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNwRyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMvQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1QixTQUFTLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0MsU0FBUyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2QyxTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdCLE1BQU0sRUFBRSxHQUFHLE1BQU0sU0FB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QUUsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sR0FBRyxHQUFHLE1BQU0sUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25DLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM3QixPQUFPLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyRCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IFRvbldlYiBmcm9tICd0b253ZWInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IGNvaW5zIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSwgS2V5UGFpciB9IGZyb20gJy4uLy4uL3NyYyc7XG5pbXBvcnQgKiBhcyB0ZXN0RGF0YSBmcm9tICcuLi9yZXNvdXJjZXMvdG9uJztcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gJy4uLy4uL3NyYy9saWIvdXRpbHMnO1xuXG5kZXNjcmliZSgnVG9uIFRyYW5zZmVyIEJ1aWxkZXInLCAoKSA9PiB7XG4gIGNvbnN0IGZhY3RvcnkgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3R0b24nKSk7XG4gIGl0KCdzaG91bGQgYnVpbGQgYSB1bnNpZ25lZCB0cmFuc2ZlciB0eCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eElkID0gJ2pRaHY0RVByNGwtblo4QWZ6U2RWVVNmdGZYMkI4UW8wVHdNQnN0c2RwY3M9Jy5yZXBsYWNlKC9cXC8vZywgJ18nKS5yZXBsYWNlKC9cXCsvZywgJy0nKTtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFRyYW5zZmVyQnVpbGRlcigpO1xuICAgIHR4QnVpbGRlci5zZW5kZXIodGVzdERhdGEuc2VuZGVyLmFkZHJlc3MpO1xuICAgIHR4QnVpbGRlci5zZXF1ZW5jZU51bWJlcigwKTtcbiAgICB0eEJ1aWxkZXIucHVibGljS2V5KHRlc3REYXRhLnNlbmRlci5wdWJsaWNLZXkpO1xuICAgIHR4QnVpbGRlci5leHBpcmVUaW1lKDEyMzQ1Njc4OTApO1xuICAgIHR4QnVpbGRlci5zZW5kKHRlc3REYXRhLnJlY2lwaWVudHNbMF0pO1xuICAgIHR4QnVpbGRlci5zZXRNZXNzYWdlKCd0ZXN0Jyk7XG4gICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICBzaG91bGQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgIHNob3VsZC5lcXVhbCh0eC50b0pzb24oKS5ib3VuY2VhYmxlLCBmYWxzZSk7XG4gICAgdHguaW5wdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgdHguaW5wdXRzWzBdLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgYWRkcmVzczogdGVzdERhdGEuc2VuZGVyLmFkZHJlc3MsXG4gICAgICB2YWx1ZTogdGVzdERhdGEucmVjaXBpZW50c1swXS5hbW91bnQsXG4gICAgICBjb2luOiAndHRvbicsXG4gICAgfSk7XG4gICAgdHgub3V0cHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgIHR4Lm91dHB1dHNbMF0uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICBhZGRyZXNzOiB0ZXN0RGF0YS5yZWNpcGllbnRzWzBdLmFkZHJlc3MsXG4gICAgICB2YWx1ZTogdGVzdERhdGEucmVjaXBpZW50c1swXS5hbW91bnQsXG4gICAgICBjb2luOiAndHRvbicsXG4gICAgfSk7XG4gICAgdHguaWQuc2hvdWxkLmVxdWFsKHR4SWQpO1xuICAgIGNvbnN0IHJhd1R4ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICBjb25zb2xlLmxvZyhyYXdUeCk7XG4gICAgcmF3VHguc2hvdWxkLmVxdWFsKFxuICAgICAgJ3RlNmNja0VDR0FFQUE3Y0FBdUdJQURaTjBIMG4xdHo2eGtZZ1dxSlNSbWtVUktZYWpqRWdYZWF3Qm85Y2lmUElHQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNtcG94ZEpsZ0xTQUFBQUFBQURnRVhBZ0UwQWhZQkZQOEE5S1FUOUx6eXlBc0RBZ0VnQkJFQ0FVZ0ZDQUxtMEFIUTB3TWhjYkNTWHdUZ0l0ZEp3U0NTWHdUZ0F0TWZJWUlRY0d4MVo3MGlnaEJrYzNSeXZiQ1NYd1hnQS9wQU1DRDZSQUhJeWdmTC84blE3VVRRZ1FGQTF5SDBCREJjZ1FFSTlBcHZvVEd6a2w4SDRBWFRQOGdsZ2hCd2JIVm51cEk0TU9NTkE0SVFaSE4wY3JxU1h3YmpEUVlIQUhnQitnRDBCREQ0SjI4aU1GQUtvU0crOHVCUWdoQndiSFZuZ3g2eGNJQVlVQVRMQlNiUEZsajZBaG4wQU10cEY4c2ZVbURMUHlESmdFRDdBQVlBaWxBRWdRRUk5Rmt3N1VUUWdRRkExeURJQWM4VzlBREo3VlFCY3JDT0k0SVFaSE4wY29NZXNYQ0FHRkFGeXdWUUE4OFdJL29DRTh0cXl4L0xQOG1BUVBzQWtsOEQ0Z0lCSUFrUUFnRWdDZzhDQVZnTERBQTlzcDM3VVRRZ1FGQTF5SDBCREFDeU1vSHkvL0owQUdCQVFqMENtK2hNWUFJQklBME9BQm10em5haWFFQWdhNURyaGYvQUFCbXZIZmFpYUVBUWE1RHJoWS9BQUJHNHlYN1VUUTF3c2ZnQVdiMGtLMjlxSm9RSUNnYTVENkFoaEhEVUNBaEhwSk45S1pFTTVwQStuL21EZUJLQUczZ1FGSW1IRlo4eGhBVDQ4b01JMXhnZzB4L1RIOU1mQXZnanUvSms3VVRRMHgvVEg5UC85QVRSVVVPNjhxRlJVYnJ5b2dYNUFWUVFaUGtROHFQNEFDU2t5TXNmVWtETEgxSXd5LzlTRVBRQXllMVUrQThCMHdjaHdBQ2ZiRkdUSU5kS2x0TUgxQUw3QU9ndzRDSEFBZU1BSWNBQzR3QUJ3QU9STU9NTkE2VEl5eDhTeXgvTC94SVRGQlVBYnRJSCtnRFUxQ0w1QUFYSXlnY1Z5Ly9KMEhkMGdCakl5d1hMQWlMUEZsQUYrZ0lVeTJzU3pNekpjL3NBeUVBVWdRRUk5Rkh5cHdJQWNJRUJDTmNZK2dEVFA4aFVJRWVCQVFqMFVmS25naEJ1YjNSbGNIU0FHTWpMQmNzQ1VBYlBGbEFFK2dJVXkyb1N5eC9MUDhseit3QUNBR3lCQVFqWEdQb0Ewejh3VWlTQkFRajBXZktuZ2hCa2MzUnljSFNBR01qTEJjc0NVQVhQRmxBRCtnSVR5MnJMSHhMTFA4bHord0FBQ3ZRQXllMVVBRkVBQUFBQUthbWpGOEREdWR3Smt5RWg3alViSkVqRkNqcmlWeHNTbFJKRnlGODcyVjFlZWdiNFFBQjRRZ0FhUmVmQk9qVGkvaHdxRGp2KzdJNm5HajlXRUFlM2xzL3JGdUJFUXZnZ3I2QTYxM29BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUIwWlhOMFZvdVB1Zz09J1xuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYnVpbGQgYSB1bnNpZ25lZCB0cmFuc2ZlciB0eCB3aXRoIGJvdW5jZWFibGUgZmxhZycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eElkID0gJ2dNTGMyZDNSTGNSLW9MUUx4XzE2WjFhMm95ZXBDZDRFSjEwRTMzVnVuWnc9Jy5yZXBsYWNlKC9cXC8vZywgJ18nKS5yZXBsYWNlKC9cXCsvZywgJy0nKTtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFRyYW5zZmVyQnVpbGRlcigpO1xuICAgIHR4QnVpbGRlci5zZW5kZXIodGVzdERhdGEuc2VuZGVyLmFkZHJlc3MpO1xuICAgIHR4QnVpbGRlci5zZXF1ZW5jZU51bWJlcigwKTtcbiAgICB0eEJ1aWxkZXIucHVibGljS2V5KHRlc3REYXRhLnNlbmRlci5wdWJsaWNLZXkpO1xuICAgIHR4QnVpbGRlci5leHBpcmVUaW1lKDEyMzQ1Njc4OTApO1xuICAgIHR4QnVpbGRlci5zZW5kKHRlc3REYXRhLnJlY2lwaWVudHNbMF0pO1xuICAgIHR4QnVpbGRlci5zZXRNZXNzYWdlKCd0ZXN0Jyk7XG4gICAgdHhCdWlsZGVyLmJvdW5jZWFibGUodHJ1ZSk7XG4gICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICBzaG91bGQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgIHNob3VsZC5lcXVhbCh0eC50b0pzb24oKS5ib3VuY2VhYmxlLCB0cnVlKTtcbiAgICB0eC5pbnB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICB0eC5pbnB1dHNbMF0uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICBhZGRyZXNzOiB0ZXN0RGF0YS5zZW5kZXIuYWRkcmVzcyxcbiAgICAgIHZhbHVlOiB0ZXN0RGF0YS5yZWNpcGllbnRzWzBdLmFtb3VudCxcbiAgICAgIGNvaW46ICd0dG9uJyxcbiAgICB9KTtcbiAgICB0eC5vdXRwdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgdHgub3V0cHV0c1swXS5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgIGFkZHJlc3M6IHRlc3REYXRhLnJlY2lwaWVudHNbMF0uYWRkcmVzcyxcbiAgICAgIHZhbHVlOiB0ZXN0RGF0YS5yZWNpcGllbnRzWzBdLmFtb3VudCxcbiAgICAgIGNvaW46ICd0dG9uJyxcbiAgICB9KTtcbiAgICB0eC5pZC5zaG91bGQuZXF1YWwodHhJZCk7XG4gICAgY29uc3QgcmF3VHggPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgIGNvbnNvbGUubG9nKHJhd1R4KTtcbiAgICByYXdUeC5zaG91bGQuZXF1YWwoXG4gICAgICAndGU2Y2NrRUNHQUVBQTdjQUF1R0lBRFpOMEgwbjF0ejZ4a1lnV3FKU1Jta1VSS1lhampFZ1hlYXdCbzljaWZQSUdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ21wb3hkSmxnTFNBQUFBQUFBRGdFWEFnRTBBaFlCRlA4QTlLUVQ5THp5eUFzREFnRWdCQkVDQVVnRkNBTG0wQUhRMHdNaGNiQ1NYd1RnSXRkSndTQ1NYd1RnQXRNZklZSVFjR3gxWjcwaWdoQmtjM1J5dmJDU1h3WGdBL3BBTUNENlJBSEl5Z2ZMLzhuUTdVVFFnUUZBMXlIMEJEQmNnUUVJOUFwdm9UR3prbDhINEFYVFA4Z2xnaEJ3YkhWbnVwSTRNT01OQTRJUVpITjBjcnFTWHdiakRRWUhBSGdCK2dEMEJERDRKMjhpTUZBS29TRys4dUJRZ2hCd2JIVm5neDZ4Y0lBWVVBVExCU2JQRmxqNkFobjBBTXRwRjhzZlVtRExQeURKZ0VEN0FBWUFpbEFFZ1FFSTlGa3c3VVRRZ1FGQTF5RElBYzhXOUFESjdWUUJjckNPSTRJUVpITjBjb01lc1hDQUdGQUZ5d1ZRQTg4V0kvb0NFOHRxeXgvTFA4bUFRUHNBa2w4RDRnSUJJQWtRQWdFZ0NnOENBVmdMREFBOXNwMzdVVFFnUUZBMXlIMEJEQUN5TW9IeS8vSjBBR0JBUWowQ20raE1ZQUlCSUEwT0FCbXR6bmFpYUVBZ2E1RHJoZi9BQUJtdkhmYWlhRUFRYTVEcmhZL0FBQkc0eVg3VVRRMXdzZmdBV2Iwa0syOXFKb1FJQ2dhNUQ2QWhoSERVQ0FoSHBKTjlLWkVNNXBBK24vbURlQktBRzNnUUZJbUhGWjh4aEFUNDhvTUkxeGdnMHgvVEg5TWZBdmdqdS9KazdVVFEweC9USDlQLzlBVFJVVU82OHFGUlVicnlvZ1g1QVZRUVpQa1E4cVA0QUNTa3lNc2ZVa0RMSDFJd3kvOVNFUFFBeWUxVStBOEIwd2Nod0FDZmJGR1RJTmRLbHRNSDFBTDdBT2d3NENIQUFlTUFJY0FDNHdBQndBT1JNT01OQTZUSXl4OFN5eC9ML3hJVEZCVUFidElIK2dEVTFDTDVBQVhJeWdjVnkvL0owSGQwZ0JqSXl3WExBaUxQRmxBRitnSVV5MnNTek16SmMvc0F5RUFVZ1FFSTlGSHlwd0lBY0lFQkNOY1krZ0RUUDhoVUlFZUJBUWowVWZLbmdoQnViM1JsY0hTQUdNakxCY3NDVUFiUEZsQUUrZ0lVeTJvU3l4L0xQOGx6K3dBQ0FHeUJBUWpYR1BvQTB6OHdVaVNCQVFqMFdmS25naEJrYzNSeWNIU0FHTWpMQmNzQ1VBWFBGbEFEK2dJVHkyckxIeExMUDhseit3QUFDdlFBeWUxVUFGRUFBQUFBS2FtakY4RER1ZHdKa3lFaDdqVWJKRWpGQ2pyaVZ4c1NsUkpGeUY4NzJWMWVlZ2I0UUFCNFlnQWFSZWZCT2pUaS9od3FEanYrN0k2bkdqOVdFQWUzbHMvckZ1QkVRdmdncjZBNjEzb0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQjBaWE4wbUlIeFBnPT0nXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBidWlsZCBhIHNlbmQgZnJvbSByYXdUeCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmZyb20odGVzdERhdGEuc2lnbmVkU2VuZFRyYW5zYWN0aW9uLnR4KTtcbiAgICBjb25zdCBidWlsdFR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3QganNvblR4ID0gYnVpbHRUeC50b0pzb24oKTtcbiAgICBzaG91bGQuZXF1YWwoYnVpbHRUeC50eXBlLCBUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgc2hvdWxkLmVxdWFsKGJ1aWx0VHguc2lnbmFibGVQYXlsb2FkLnRvU3RyaW5nKCdiYXNlNjQnKSwgdGVzdERhdGEuc2lnbmVkU2VuZFRyYW5zYWN0aW9uLnNpZ25hYmxlKTtcbiAgICBzaG91bGQuZXF1YWwoYnVpbHRUeC5pZCwgdGVzdERhdGEuc2lnbmVkU2VuZFRyYW5zYWN0aW9uLnR4SWQpO1xuICAgIGNvbnN0IGJ1aWxkZXIyID0gZmFjdG9yeS5mcm9tKGJ1aWx0VHgudG9Ccm9hZGNhc3RGb3JtYXQoKSk7XG4gICAgY29uc3QgYnVpbHRUeDIgPSBhd2FpdCBidWlsZGVyMi5idWlsZCgpO1xuICAgIHNob3VsZC5lcXVhbChidWlsdFR4Mi50eXBlLCBUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgc2hvdWxkLmVxdWFsKGJ1aWx0VHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgdGVzdERhdGEuc2lnbmVkU2VuZFRyYW5zYWN0aW9uLnR4KTtcbiAgICBidWlsdFR4LmlucHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgIGJ1aWx0VHgub3V0cHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgIGpzb25UeC5zZW5kZXIuc2hvdWxkLmVxdWFsKCdFUUNTQmpSM2ZVT0w5OFdUdzJGX0lUNEJyY3FqWkpXVkxXVVN6NVdRRHBhTDlKcGwnKTtcbiAgICBqc29uVHguZGVzdGluYXRpb24uc2hvdWxkLmVxdWFsKCdFUUEwaTgtQ2RHbkZfRGhVSEhmOTJSMU9OSDZzSUE5dkxaX1dMY0NJaGZCQlh3dEcnKTtcbiAgICBqc29uVHguYW1vdW50LnNob3VsZC5lcXVhbCgnMTAwMDAwMDAnKTtcbiAgICBqc29uVHguc2Vxbm8uc2hvdWxkLmVxdWFsKDYpO1xuICAgIGpzb25UeC5leHBpcmF0aW9uVGltZS5zaG91bGQuZXF1YWwoMTY5NTk5NzU4Mik7XG5cbiAgICBjb25zdCBidWlsdFR4MyA9IGF3YWl0IHR4QnVpbGRlci5ib3VuY2VhYmxlKGZhbHNlKS5mcm9tQWRkcmVzc0JvdW5jZWFibGUoZmFsc2UpLnRvQWRkcmVzc0JvdW5jZWFibGUoZmFsc2UpLmJ1aWxkKCk7XG4gICAgdHhCdWlsZGVyLmZyb20odGVzdERhdGEuc2lnbmVkU2VuZFRyYW5zYWN0aW9uLnR4KTtcbiAgICBjb25zdCBqc29uVHgzID0gYnVpbHRUeDMudG9Kc29uKCk7XG4gICAgc2hvdWxkLmVxdWFsKGpzb25UeDMuYm91bmNlYWJsZSwgZmFsc2UpO1xuICAgIHNob3VsZC5lcXVhbChidWlsdFR4My5zaWduYWJsZVBheWxvYWQudG9TdHJpbmcoJ2Jhc2U2NCcpLCB0ZXN0RGF0YS5zaWduZWRTZW5kVHJhbnNhY3Rpb24uYm91bmNlYWJsZVNpZ25hYmxlKTtcbiAgICBzaG91bGQuZXF1YWwoYnVpbHRUeDMuaWQsIHRlc3REYXRhLnNpZ25lZFNlbmRUcmFuc2FjdGlvbi50eElkQm91bmNlYWJsZSk7XG4gICAgc2hvdWxkLmVxdWFsKGJ1aWx0VHgzLnRvQnJvYWRjYXN0Rm9ybWF0KCksIHRlc3REYXRhLnNpZ25lZFNlbmRUcmFuc2FjdGlvbi50eCk7XG4gICAganNvblR4My5zZW5kZXIuc2hvdWxkLmVxdWFsKCdVUUNTQmpSM2ZVT0w5OFdUdzJGX0lUNEJyY3FqWkpXVkxXVVN6NVdRRHBhTDlNZWcnKTtcbiAgICBqc29uVHgzLmRlc3RpbmF0aW9uLnNob3VsZC5lcXVhbCgnVVFBMGk4LUNkR25GX0RoVUhIZjkyUjFPTkg2c0lBOXZMWl9XTGNDSWhmQkJYMWFEJyk7XG4gICAganNvblR4My5hbW91bnQuc2hvdWxkLmVxdWFsKCcxMDAwMDAwMCcpO1xuICAgIGpzb25UeDMuc2Vxbm8uc2hvdWxkLmVxdWFsKDYpO1xuICAgIGpzb25UeDMuZXhwaXJhdGlvblRpbWUuc2hvdWxkLmVxdWFsKDE2OTU5OTc1ODIpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHBhcnNlIGEgcmF3IHRyYW5zYWN0aW9uIGFuZCBzZXQgZmxhZ3MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZmFjdG9yeSA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndHRvbicpKTtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmZyb20odGVzdERhdGEuc2lnbmVkU2VuZFRyYW5zYWN0aW9uLnR4KTtcbiAgICBjb25zdCB0eEJ1aWxkZXJCb3VuY2VhYmxlID0gZmFjdG9yeS5mcm9tKHRlc3REYXRhLnNpZ25lZFNlbmRUcmFuc2FjdGlvbi50eEJvdW5jZWFibGUpO1xuXG4gICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICBjb25zdCB0eEJvdW5jZWFibGUgPSBhd2FpdCB0eEJ1aWxkZXJCb3VuY2VhYmxlLmJ1aWxkKCk7XG4gICAgdHgudG9Kc29uKCkuYm91bmNlYWJsZS5zaG91bGQuZXF1YWwoZmFsc2UpO1xuICAgIHR4Qm91bmNlYWJsZS50b0pzb24oKS5ib3VuY2VhYmxlLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgfSk7XG5cbiAgeGl0KCdzaG91bGQgYnVpbGQgYSBzaWduZWQgdHJhbnNmZXIgdHggYW5kIHN1Ym1pdCBvbmNoYWluJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHRvbndlYiA9IG5ldyBUb25XZWIobmV3IFRvbldlYi5IdHRwUHJvdmlkZXIoJ2h0dHBzOi8vdGVzdG5ldC50b25jZW50ZXIuY29tL2FwaS92Mi9qc29uUlBDJykpO1xuICAgIGNvbnN0IGtleVBhaXIgPSBuZXcgS2V5UGFpcih7IHBydjogdGVzdERhdGEucHJpdmF0ZUtleXMucHJ2S2V5MSB9KTtcbiAgICBjb25zdCBwdWJsaWNLZXkgPSBrZXlQYWlyLmdldEtleXMoKS5wdWI7XG4gICAgY29uc3QgYWRkcmVzcyA9IGF3YWl0IHV0aWxzLmRlZmF1bHQuZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkocHVibGljS2V5KTtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFRyYW5zZmVyQnVpbGRlcigpO1xuICAgIHR4QnVpbGRlci5zZW5kZXIoYWRkcmVzcyk7XG5cbiAgICBjb25zdCBXYWxsZXRDbGFzcyA9IHRvbndlYi53YWxsZXQuYWxsWyd2NFIyJ107XG4gICAgY29uc3Qgd2FsbGV0ID0gbmV3IFdhbGxldENsYXNzKHRvbndlYi5wcm92aWRlciwge1xuICAgICAgcHVibGljS2V5OiB0b253ZWIudXRpbHMuaGV4VG9CeXRlcyhwdWJsaWNLZXkpLFxuICAgICAgd2M6IDAsXG4gICAgfSk7XG4gICAgY29uc3Qgc2Vxbm8gPSBhd2FpdCB3YWxsZXQubWV0aG9kcy5zZXFubygpLmNhbGwoKTtcbiAgICB0eEJ1aWxkZXIuc2VxdWVuY2VOdW1iZXIoc2Vxbm8gYXMgbnVtYmVyKTtcbiAgICB0eEJ1aWxkZXIucHVibGljS2V5KHB1YmxpY0tleSk7XG4gICAgY29uc3QgZXhwaXJlQXQgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxZTMpICsgNjAgKiA2MCAqIDI0ICogNzsgLy8gNyBkYXlzXG4gICAgdHhCdWlsZGVyLmV4cGlyZVRpbWUoZXhwaXJlQXQpO1xuICAgIHR4QnVpbGRlci5zZW5kKHtcbiAgICAgIGFkZHJlc3M6ICdFUUQ2VG01cnliSkhxTWZsUWtqcENSQjdMbTVRcEdxRm9Zd2lMcU1qUHRhcVBTZFonLFxuICAgICAgYW1vdW50OiAnMTAwMDAwMDAnLFxuICAgIH0pO1xuICAgIHR4QnVpbGRlci5zZXRNZXNzYWdlKCd0ZXN0Jyk7XG4gICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICBzaG91bGQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgIGNvbnN0IHNpZ25hYmxlID0gdHguc2lnbmFibGVQYXlsb2FkO1xuICAgIGNvbnN0IHNpZ25hdHVyZSA9IGtleVBhaXIuc2lnbk1lc3NhZ2VpblVpbnQ4QXJyYXkoc2lnbmFibGUpO1xuICAgIGNvbnN0IHNpZ25lZFR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3QgYnVpbGRlcjIgPSBmYWN0b3J5LmZyb20oc2lnbmVkVHgudG9Ccm9hZGNhc3RGb3JtYXQoKSk7XG4gICAgYnVpbGRlcjIuYWRkU2lnbmF0dXJlKGtleVBhaXIuZ2V0S2V5cygpLCBCdWZmZXIuZnJvbShzaWduYXR1cmUpKTtcbiAgICBjb25zdCB0eDIgPSBhd2FpdCBidWlsZGVyMi5idWlsZCgpO1xuICAgIGNvbnN0IHNpZ25hdHVyZTIgPSBrZXlQYWlyLnNpZ25NZXNzYWdlaW5VaW50OEFycmF5KHR4Mi5zaWduYWJsZVBheWxvYWQpO1xuICAgIHNob3VsZC5lcXVhbChCdWZmZXIuZnJvbShzaWduYXR1cmUpLnRvU3RyaW5nKCdoZXgnKSwgQnVmZmVyLmZyb20oc2lnbmF0dXJlMikudG9TdHJpbmcoJ2hleCcpKTtcbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCAyMDAwKSk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdG9ud2ViLnByb3ZpZGVyLnNlbmRCb2ModHgyLnRvQnJvYWRjYXN0Rm9ybWF0KCkpO1xuICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHJlc3VsdCkpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGJ1aWxkIGEgc2lnbmVkIHRyYW5zZmVyIHR4IHVzaW5nIGFkZCBzaWduYXR1cmUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3Qga2V5UGFpciA9IG5ldyBLZXlQYWlyKHsgcHJ2OiB0ZXN0RGF0YS5wcml2YXRlS2V5cy5wcnZLZXkxIH0pO1xuICAgIGNvbnN0IHB1YmxpY0tleSA9IGtleVBhaXIuZ2V0S2V5cygpLnB1YjtcbiAgICBjb25zdCBhZGRyZXNzID0gYXdhaXQgdXRpbHMuZGVmYXVsdC5nZXRBZGRyZXNzRnJvbVB1YmxpY0tleShwdWJsaWNLZXkpO1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgdHhCdWlsZGVyLnNlbmRlcihhZGRyZXNzKTtcbiAgICB0eEJ1aWxkZXIuc2VxdWVuY2VOdW1iZXIoMCk7XG4gICAgdHhCdWlsZGVyLnB1YmxpY0tleShwdWJsaWNLZXkpO1xuICAgIGNvbnN0IGV4cGlyZUF0ID0gTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMWUzKSArIDYwICogNjAgKiAyNCAqIDc7XG4gICAgdHhCdWlsZGVyLmV4cGlyZVRpbWUoZXhwaXJlQXQpO1xuICAgIHR4QnVpbGRlci5zZW5kKHRlc3REYXRhLnJlY2lwaWVudHNbMF0pO1xuICAgIHR4QnVpbGRlci5zZXRNZXNzYWdlKCd0ZXN0Jyk7XG4gICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICBzaG91bGQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgIGNvbnN0IHNpZ25hYmxlID0gdHguc2lnbmFibGVQYXlsb2FkO1xuICAgIGNvbnN0IHNpZ25hdHVyZSA9IGtleVBhaXIuc2lnbk1lc3NhZ2VpblVpbnQ4QXJyYXkoc2lnbmFibGUpO1xuICAgIHR4QnVpbGRlci5hZGRTaWduYXR1cmUoa2V5UGFpci5nZXRLZXlzKCksIEJ1ZmZlci5mcm9tKHNpZ25hdHVyZSkpO1xuICAgIGNvbnN0IHNpZ25lZFR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3QgYnVpbGRlcjIgPSBmYWN0b3J5LmZyb20oc2lnbmVkVHgudG9Ccm9hZGNhc3RGb3JtYXQoKSk7XG4gICAgY29uc3QgdHgyID0gYXdhaXQgYnVpbGRlcjIuYnVpbGQoKTtcbiAgICBjb25zdCBzaWduYXR1cmUyID0ga2V5UGFpci5zaWduTWVzc2FnZWluVWludDhBcnJheSh0eDIuc2lnbmFibGVQYXlsb2FkKTtcbiAgICBzaG91bGQuZXF1YWwoQnVmZmVyLmZyb20oc2lnbmF0dXJlKS50b1N0cmluZygnaGV4JyksIEJ1ZmZlci5mcm9tKHNpZ25hdHVyZTIpLnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgc2hvdWxkLmVxdWFsKHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCksIHR4Mi50b0Jyb2FkY2FzdEZvcm1hdCgpKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBidWlsZCB0cmFuc2ZlciB0eCBmb3Igbm9uLWJvdW5jZWFibGUgYWRkcmVzcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFRyYW5zZmVyQnVpbGRlcigpO1xuICAgIHR4QnVpbGRlci5zZW5kZXIodGVzdERhdGEuc2VuZGVyLmFkZHJlc3MpO1xuICAgIHR4QnVpbGRlci5zZXF1ZW5jZU51bWJlcigwKTtcbiAgICB0eEJ1aWxkZXIucHVibGljS2V5KHRlc3REYXRhLnNlbmRlci5wdWJsaWNLZXkpO1xuICAgIHR4QnVpbGRlci5leHBpcmVUaW1lKDEyMzQ1Njc4OTApO1xuICAgIGNvbnN0IGFkZHJlc3MgPSAnRVFBV3pFS2NkbnlrdlhmVU5vdXFkUzYydHZycDMyYkN4dUtTNmVRclM2SVNnY0xvJztcbiAgICBjb25zdCBvdGhlckZvcm1hdCA9ICdVUUFXekVLY2RueWt2WGZVTm91cWRTNjJ0dnJwMzJiQ3h1S1M2ZVFyUzZJU2daOHQnO1xuICAgIGNvbnN0IGFtb3VudCA9ICcxMDAwMDAwMCc7XG4gICAgdHhCdWlsZGVyLnNlbmQoeyBhZGRyZXNzLCBhbW91bnQgfSk7XG4gICAgdHhCdWlsZGVyLnNldE1lc3NhZ2UoJ3Rlc3QnKTtcbiAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIHNob3VsZC5lcXVhbCh0eC50eXBlLCBUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgdHguaW5wdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgdHguaW5wdXRzWzBdLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgYWRkcmVzczogdGVzdERhdGEuc2VuZGVyLmFkZHJlc3MsXG4gICAgICB2YWx1ZTogYW1vdW50LFxuICAgICAgY29pbjogJ3R0b24nLFxuICAgIH0pO1xuICAgIHR4Lm91dHB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICB0eC5vdXRwdXRzWzBdLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgYWRkcmVzcyxcbiAgICAgIHZhbHVlOiBhbW91bnQsXG4gICAgICBjb2luOiAndHRvbicsXG4gICAgfSk7XG4gICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgdHhKc29uLmRlc3RpbmF0aW9uLnNob3VsZC5lcXVhbChhZGRyZXNzKTtcbiAgICBjb25zdCBidWlsZGVyMiA9IGZhY3RvcnkuZnJvbSh0eC50b0Jyb2FkY2FzdEZvcm1hdCgpKTtcbiAgICBjb25zdCB0eDIgPSBhd2FpdCBidWlsZGVyMi5idWlsZCgpO1xuICAgIGNvbnN0IHR4SnNvbjIgPSB0eDIudG9Kc29uKCk7XG4gICAgdHhKc29uMi5kZXN0aW5hdGlvbkFsaWFzLnNob3VsZC5lcXVhbChvdGhlckZvcm1hdCk7XG4gIH0pO1xufSk7XG4iXX0=
279
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zZmVyQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QixvREFBNEI7QUFDNUIsOENBQWtEO0FBQ2xELDRDQUF1QztBQUN2QyxtQ0FBK0Q7QUFDL0QsMkRBQTZDO0FBQzdDLDJEQUE2QztBQUU3QyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxFQUFFO0lBQ3BDLE1BQU0sT0FBTyxHQUFHLElBQUksK0JBQXlCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLEVBQUUsQ0FBQyxxQ0FBcUMsRUFBRSxLQUFLO1FBQzdDLE1BQU0sSUFBSSxHQUFHLDhDQUE4QyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNwRyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMvQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1QixTQUFTLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0MsU0FBUyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2QyxTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdCLE1BQU0sRUFBRSxHQUFHLE1BQU0sU0FB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S0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLGlDQUFpQyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3BGLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdkUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxpQ0FBaUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUYsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGlDQUFpQyxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hILE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsaUNBQWlDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hGLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0MsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgVG9uV2ViIGZyb20gJ3RvbndlYic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LCBLZXlQYWlyIH0gZnJvbSAnLi4vLi4vc3JjJztcbmltcG9ydCAqIGFzIHRlc3REYXRhIGZyb20gJy4uL3Jlc291cmNlcy90b24nO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnLi4vLi4vc3JjL2xpYi91dGlscyc7XG5cbmRlc2NyaWJlKCdUb24gVHJhbnNmZXIgQnVpbGRlcicsICgpID0+IHtcbiAgY29uc3QgZmFjdG9yeSA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndHRvbicpKTtcbiAgaXQoJ3Nob3VsZCBidWlsZCBhIHVuc2lnbmVkIHRyYW5zZmVyIHR4JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4SWQgPSAnalFodjRFUHI0bC1uWjhBZnpTZFZVU2Z0ZlgyQjhRbzBUd01Cc3RzZHBjcz0nLnJlcGxhY2UoL1xcLy9nLCAnXycpLnJlcGxhY2UoL1xcKy9nLCAnLScpO1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgdHhCdWlsZGVyLnNlbmRlcih0ZXN0RGF0YS5zZW5kZXIuYWRkcmVzcyk7XG4gICAgdHhCdWlsZGVyLnNlcXVlbmNlTnVtYmVyKDApO1xuICAgIHR4QnVpbGRlci5wdWJsaWNLZXkodGVzdERhdGEuc2VuZGVyLnB1YmxpY0tleSk7XG4gICAgdHhCdWlsZGVyLmV4cGlyZVRpbWUoMTIzNDU2Nzg5MCk7XG4gICAgdHhCdWlsZGVyLnNlbmQodGVzdERhdGEucmVjaXBpZW50c1swXSk7XG4gICAgdHhCdWlsZGVyLnNldE1lc3NhZ2UoJ3Rlc3QnKTtcbiAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIHNob3VsZC5lcXVhbCh0eC50eXBlLCBUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgc2hvdWxkLmVxdWFsKHR4LnRvSnNvbigpLmJvdW5jZWFibGUsIGZhbHNlKTtcbiAgICB0eC5pbnB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICB0eC5pbnB1dHNbMF0uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICBhZGRyZXNzOiB0ZXN0RGF0YS5zZW5kZXIuYWRkcmVzcyxcbiAgICAgIHZhbHVlOiB0ZXN0RGF0YS5yZWNpcGllbnRzWzBdLmFtb3VudCxcbiAgICAgIGNvaW46ICd0dG9uJyxcbiAgICB9KTtcbiAgICB0eC5vdXRwdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgdHgub3V0cHV0c1swXS5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgIGFkZHJlc3M6IHRlc3REYXRhLnJlY2lwaWVudHNbMF0uYWRkcmVzcyxcbiAgICAgIHZhbHVlOiB0ZXN0RGF0YS5yZWNpcGllbnRzWzBdLmFtb3VudCxcbiAgICAgIGNvaW46ICd0dG9uJyxcbiAgICB9KTtcbiAgICB0eC5pZC5zaG91bGQuZXF1YWwodHhJZCk7XG4gICAgY29uc3QgcmF3VHggPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgIGNvbnNvbGUubG9nKHJhd1R4KTtcbiAgICByYXdUeC5zaG91bGQuZXF1YWwoXG4gICAgICAndGU2Y2NrRUNHQUVBQTdjQUF1R0lBRFpOMEgwbjF0ejZ4a1lnV3FKU1Jta1VSS1lhampFZ1hlYXdCbzljaWZQSUdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ21wb3hkSmxnTFNBQUFBQUFBRGdFWEFnRTBBaFlCRlA4QTlLUVQ5THp5eUFzREFnRWdCQkVDQVVnRkNBTG0wQUhRMHdNaGNiQ1NYd1RnSXRkSndTQ1NYd1RnQXRNZklZSVFjR3gxWjcwaWdoQmtjM1J5dmJDU1h3WGdBL3BBTUNENlJBSEl5Z2ZMLzhuUTdVVFFnUUZBMXlIMEJEQmNnUUVJOUFwdm9UR3prbDhINEFYVFA4Z2xnaEJ3YkhWbnVwSTRNT01OQTRJUVpITjBjcnFTWHdiakRRWUhBSGdCK2dEMEJERDRKMjhpTUZBS29TRys4dUJRZ2hCd2JIVm5neDZ4Y0lBWVVBVExCU2JQRmxqNkFobjBBTXRwRjhzZlVtRExQeURKZ0VEN0FBWUFpbEFFZ1FFSTlGa3c3VVRRZ1FGQTF5RElBYzhXOUFESjdWUUJjckNPSTRJUVpITjBjb01lc1hDQUdGQUZ5d1ZRQTg4V0kvb0NFOHRxeXgvTFA4bUFRUHNBa2w4RDRnSUJJQWtRQWdFZ0NnOENBVmdMREFBOXNwMzdVVFFnUUZBMXlIMEJEQUN5TW9IeS8vSjBBR0JBUWowQ20raE1ZQUlCSUEwT0FCbXR6bmFpYUVBZ2E1RHJoZi9BQUJtdkhmYWlhRUFRYTVEcmhZL0FBQkc0eVg3VVRRMXdzZmdBV2Iwa0syOXFKb1FJQ2dhNUQ2QWhoSERVQ0FoSHBKTjlLWkVNNXBBK24vbURlQktBRzNnUUZJbUhGWjh4aEFUNDhvTUkxeGdnMHgvVEg5TWZBdmdqdS9KazdVVFEweC9USDlQLzlBVFJVVU82OHFGUlVicnlvZ1g1QVZRUVpQa1E4cVA0QUNTa3lNc2ZVa0RMSDFJd3kvOVNFUFFBeWUxVStBOEIwd2Nod0FDZmJGR1RJTmRLbHRNSDFBTDdBT2d3NENIQUFlTUFJY0FDNHdBQndBT1JNT01OQTZUSXl4OFN5eC9ML3hJVEZCVUFidElIK2dEVTFDTDVBQVhJeWdjVnkvL0owSGQwZ0JqSXl3WExBaUxQRmxBRitnSVV5MnNTek16SmMvc0F5RUFVZ1FFSTlGSHlwd0lBY0lFQkNOY1krZ0RUUDhoVUlFZUJBUWowVWZLbmdoQnViM1JsY0hTQUdNakxCY3NDVUFiUEZsQUUrZ0lVeTJvU3l4L0xQOGx6K3dBQ0FHeUJBUWpYR1BvQTB6OHdVaVNCQVFqMFdmS25naEJrYzNSeWNIU0FHTWpMQmNzQ1VBWFBGbEFEK2dJVHkyckxIeExMUDhseit3QUFDdlFBeWUxVUFGRUFBQUFBS2FtakY4RER1ZHdKa3lFaDdqVWJKRWpGQ2pyaVZ4c1NsUkpGeUY4NzJWMWVlZ2I0UUFCNFFnQWFSZWZCT2pUaS9od3FEanYrN0k2bkdqOVdFQWUzbHMvckZ1QkVRdmdncjZBNjEzb0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQjBaWE4wVm91UHVnPT0nXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBidWlsZCBhIHVuc2lnbmVkIHRyYW5zZmVyIHR4IHdpdGggYm91bmNlYWJsZSBmbGFnJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4SWQgPSAnZ01MYzJkM1JMY1Itb0xRTHhfMTZaMWEyb3llcENkNEVKMTBFMzNWdW5adz0nLnJlcGxhY2UoL1xcLy9nLCAnXycpLnJlcGxhY2UoL1xcKy9nLCAnLScpO1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgdHhCdWlsZGVyLnNlbmRlcih0ZXN0RGF0YS5zZW5kZXIuYWRkcmVzcyk7XG4gICAgdHhCdWlsZGVyLnNlcXVlbmNlTnVtYmVyKDApO1xuICAgIHR4QnVpbGRlci5wdWJsaWNLZXkodGVzdERhdGEuc2VuZGVyLnB1YmxpY0tleSk7XG4gICAgdHhCdWlsZGVyLmV4cGlyZVRpbWUoMTIzNDU2Nzg5MCk7XG4gICAgdHhCdWlsZGVyLnNlbmQodGVzdERhdGEucmVjaXBpZW50c1swXSk7XG4gICAgdHhCdWlsZGVyLnNldE1lc3NhZ2UoJ3Rlc3QnKTtcbiAgICB0eEJ1aWxkZXIuYm91bmNlYWJsZSh0cnVlKTtcbiAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIHNob3VsZC5lcXVhbCh0eC50eXBlLCBUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgc2hvdWxkLmVxdWFsKHR4LnRvSnNvbigpLmJvdW5jZWFibGUsIHRydWUpO1xuICAgIHR4LmlucHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgIHR4LmlucHV0c1swXS5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgIGFkZHJlc3M6IHRlc3REYXRhLnNlbmRlci5hZGRyZXNzLFxuICAgICAgdmFsdWU6IHRlc3REYXRhLnJlY2lwaWVudHNbMF0uYW1vdW50LFxuICAgICAgY29pbjogJ3R0b24nLFxuICAgIH0pO1xuICAgIHR4Lm91dHB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICB0eC5vdXRwdXRzWzBdLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgYWRkcmVzczogdGVzdERhdGEucmVjaXBpZW50c1swXS5hZGRyZXNzLFxuICAgICAgdmFsdWU6IHRlc3REYXRhLnJlY2lwaWVudHNbMF0uYW1vdW50LFxuICAgICAgY29pbjogJ3R0b24nLFxuICAgIH0pO1xuICAgIHR4LmlkLnNob3VsZC5lcXVhbCh0eElkKTtcbiAgICBjb25zdCByYXdUeCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgY29uc29sZS5sb2cocmF3VHgpO1xuICAgIHJhd1R4LnNob3VsZC5lcXVhbChcbiAgICAgICd0ZTZjY2tFQ0dBRUFBN2NBQXVHSUFEWk4wSDBuMXR6NnhrWWdXcUpTUm1rVVJLWWFqakVnWGVhd0JvOWNpZlBJR0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDbXBveGRKbGdMU0FBQUFBQUFEZ0VYQWdFMEFoWUJGUDhBOUtRVDlMenl5QXNEQWdFZ0JCRUNBVWdGQ0FMbTBBSFEwd01oY2JDU1h3VGdJdGRKd1NDU1h3VGdBdE1mSVlJUWNHeDFaNzBpZ2hCa2MzUnl2YkNTWHdYZ0EvcEFNQ0Q2UkFISXlnZkwvOG5RN1VUUWdRRkExeUgwQkRCY2dRRUk5QXB2b1RHemtsOEg0QVhUUDhnbGdoQndiSFZudXBJNE1PTU5BNElRWkhOMGNycVNYd2JqRFFZSEFIZ0IrZ0QwQkRENEoyOGlNRkFLb1NHKzh1QlFnaEJ3YkhWbmd4NnhjSUFZVUFUTEJTYlBGbGo2QWhuMEFNdHBGOHNmVW1ETFB5REpnRUQ3QUFZQWlsQUVnUUVJOUZrdzdVVFFnUUZBMXlESUFjOFc5QURKN1ZRQmNyQ09JNElRWkhOMGNvTWVzWENBR0ZBRnl3VlFBODhXSS9vQ0U4dHF5eC9MUDhtQVFQc0FrbDhENGdJQklBa1FBZ0VnQ2c4Q0FWZ0xEQUE5c3AzN1VUUWdRRkExeUgwQkRBQ3lNb0h5Ly9KMEFHQkFRajBDbStoTVlBSUJJQTBPQUJtdHpuYWlhRUFnYTVEcmhmL0FBQm12SGZhaWFFQVFhNURyaFkvQUFCRzR5WDdVVFExd3NmZ0FXYjBrSzI5cUpvUUlDZ2E1RDZBaGhIRFVDQWhIcEpOOUtaRU01cEErbi9tRGVCS0FHM2dRRkltSEZaOHhoQVQ0OG9NSTF4Z2cweC9USDlNZkF2Z2p1L0prN1VUUTB4L1RIOVAvOUFUUlVVTzY4cUZSVWJyeW9nWDVBVlFRWlBrUThxUDRBQ1NreU1zZlVrRExIMUl3eS85U0VQUUF5ZTFVK0E4QjB3Y2h3QUNmYkZHVElOZEtsdE1IMUFMN0FPZ3c0Q0hBQWVNQUljQUM0d0FCd0FPUk1PTU5BNlRJeXg4U3l4L0wveElURkJVQWJ0SUgrZ0RVMUNMNUFBWEl5Z2NWeS8vSjBIZDBnQmpJeXdYTEFpTFBGbEFGK2dJVXkyc1N6TXpKYy9zQXlFQVVnUUVJOUZIeXB3SUFjSUVCQ05jWStnRFRQOGhVSUVlQkFRajBVZktuZ2hCdWIzUmxjSFNBR01qTEJjc0NVQWJQRmxBRStnSVV5Mm9TeXgvTFA4bHord0FDQUd5QkFRalhHUG9BMHo4d1VpU0JBUWowV2ZLbmdoQmtjM1J5Y0hTQUdNakxCY3NDVUFYUEZsQUQrZ0lUeTJyTEh4TExQOGx6K3dBQUN2UUF5ZTFVQUZFQUFBQUFLYW1qRjhERHVkd0preUVoN2pVYkpFakZDanJpVnhzU2xSSkZ5Rjg3MlYxZWVnYjRRQUI0WWdBYVJlZkJPalRpL2h3cURqdis3STZuR2o5V0VBZTNscy9yRnVCRVF2Z2dyNkE2MTNvQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCMFpYTjBtSUh4UGc9PSdcbiAgICApO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGJ1aWxkIGEgc2VuZCBmcm9tIHJhd1R4JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZnJvbSh0ZXN0RGF0YS5zaWduZWRTZW5kVHJhbnNhY3Rpb24udHgpO1xuICAgIGNvbnN0IGJ1aWx0VHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICBjb25zdCBqc29uVHggPSBidWlsdFR4LnRvSnNvbigpO1xuICAgIHNob3VsZC5lcXVhbChidWlsdFR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICBzaG91bGQuZXF1YWwoYnVpbHRUeC5zaWduYWJsZVBheWxvYWQudG9TdHJpbmcoJ2Jhc2U2NCcpLCB0ZXN0RGF0YS5zaWduZWRTZW5kVHJhbnNhY3Rpb24uc2lnbmFibGUpO1xuICAgIHNob3VsZC5lcXVhbChidWlsdFR4LmlkLCB0ZXN0RGF0YS5zaWduZWRTZW5kVHJhbnNhY3Rpb24udHhJZCk7XG4gICAgY29uc3QgYnVpbGRlcjIgPSBmYWN0b3J5LmZyb20oYnVpbHRUeC50b0Jyb2FkY2FzdEZvcm1hdCgpKTtcbiAgICBjb25zdCBidWlsdFR4MiA9IGF3YWl0IGJ1aWxkZXIyLmJ1aWxkKCk7XG4gICAgc2hvdWxkLmVxdWFsKGJ1aWx0VHgyLnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICBzaG91bGQuZXF1YWwoYnVpbHRUeC50b0Jyb2FkY2FzdEZvcm1hdCgpLCB0ZXN0RGF0YS5zaWduZWRTZW5kVHJhbnNhY3Rpb24udHgpO1xuICAgIGJ1aWx0VHguaW5wdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgYnVpbHRUeC5vdXRwdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAganNvblR4LnNlbmRlci5zaG91bGQuZXF1YWwoJ0VRQ1NCalIzZlVPTDk4V1R3MkZfSVQ0QnJjcWpaSldWTFdVU3o1V1FEcGFMOUpwbCcpO1xuICAgIGpzb25UeC5kZXN0aW5hdGlvbi5zaG91bGQuZXF1YWwoJ0VRQTBpOC1DZEduRl9EaFVISGY5MlIxT05INnNJQTl2TFpfV0xjQ0loZkJCWHd0RycpO1xuICAgIGpzb25UeC5hbW91bnQuc2hvdWxkLmVxdWFsKCcxMDAwMDAwMCcpO1xuICAgIGpzb25UeC5zZXFuby5zaG91bGQuZXF1YWwoNik7XG4gICAganNvblR4LmV4cGlyYXRpb25UaW1lLnNob3VsZC5lcXVhbCgxNjk1OTk3NTgyKTtcblxuICAgIGNvbnN0IGJ1aWx0VHgzID0gYXdhaXQgdHhCdWlsZGVyLmJvdW5jZWFibGUoZmFsc2UpLmZyb21BZGRyZXNzQm91bmNlYWJsZShmYWxzZSkudG9BZGRyZXNzQm91bmNlYWJsZShmYWxzZSkuYnVpbGQoKTtcbiAgICB0eEJ1aWxkZXIuZnJvbSh0ZXN0RGF0YS5zaWduZWRTZW5kVHJhbnNhY3Rpb24udHgpO1xuICAgIGNvbnN0IGpzb25UeDMgPSBidWlsdFR4My50b0pzb24oKTtcbiAgICBzaG91bGQuZXF1YWwoanNvblR4My5ib3VuY2VhYmxlLCBmYWxzZSk7XG4gICAgc2hvdWxkLmVxdWFsKGJ1aWx0VHgzLnNpZ25hYmxlUGF5bG9hZC50b1N0cmluZygnYmFzZTY0JyksIHRlc3REYXRhLnNpZ25lZFNlbmRUcmFuc2FjdGlvbi5ib3VuY2VhYmxlU2lnbmFibGUpO1xuICAgIHNob3VsZC5lcXVhbChidWlsdFR4My5pZCwgdGVzdERhdGEuc2lnbmVkU2VuZFRyYW5zYWN0aW9uLnR4SWRCb3VuY2VhYmxlKTtcbiAgICBzaG91bGQuZXF1YWwoYnVpbHRUeDMudG9Ccm9hZGNhc3RGb3JtYXQoKSwgdGVzdERhdGEuc2lnbmVkU2VuZFRyYW5zYWN0aW9uLnR4KTtcbiAgICBqc29uVHgzLnNlbmRlci5zaG91bGQuZXF1YWwoJ1VRQ1NCalIzZlVPTDk4V1R3MkZfSVQ0QnJjcWpaSldWTFdVU3o1V1FEcGFMOU1lZycpO1xuICAgIGpzb25UeDMuZGVzdGluYXRpb24uc2hvdWxkLmVxdWFsKCdVUUEwaTgtQ2RHbkZfRGhVSEhmOTJSMU9OSDZzSUE5dkxaX1dMY0NJaGZCQlgxYUQnKTtcbiAgICBqc29uVHgzLmFtb3VudC5zaG91bGQuZXF1YWwoJzEwMDAwMDAwJyk7XG4gICAganNvblR4My5zZXFuby5zaG91bGQuZXF1YWwoNik7XG4gICAganNvblR4My5leHBpcmF0aW9uVGltZS5zaG91bGQuZXF1YWwoMTY5NTk5NzU4Mik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcGFyc2UgYSByYXcgdHJhbnNhY3Rpb24gYW5kIHNldCBmbGFncycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBmYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0dG9uJykpO1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZnJvbSh0ZXN0RGF0YS5zaWduZWRTZW5kVHJhbnNhY3Rpb24udHgpO1xuICAgIGNvbnN0IHR4QnVpbGRlckJvdW5jZWFibGUgPSBmYWN0b3J5LmZyb20odGVzdERhdGEuc2lnbmVkU2VuZFRyYW5zYWN0aW9uLnR4Qm91bmNlYWJsZSk7XG5cbiAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIGNvbnN0IHR4Qm91bmNlYWJsZSA9IGF3YWl0IHR4QnVpbGRlckJvdW5jZWFibGUuYnVpbGQoKTtcbiAgICB0eC50b0pzb24oKS5ib3VuY2VhYmxlLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gICAgdHhCb3VuY2VhYmxlLnRvSnNvbigpLmJvdW5jZWFibGUuc2hvdWxkLmVxdWFsKHRydWUpO1xuICB9KTtcblxuICB4aXQoJ3Nob3VsZCBidWlsZCBhIHNpZ25lZCB0cmFuc2ZlciB0eCBhbmQgc3VibWl0IG9uY2hhaW4nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdG9ud2ViID0gbmV3IFRvbldlYihuZXcgVG9uV2ViLkh0dHBQcm92aWRlcignaHR0cHM6Ly90ZXN0bmV0LnRvbmNlbnRlci5jb20vYXBpL3YyL2pzb25SUEMnKSk7XG4gICAgY29uc3Qga2V5UGFpciA9IG5ldyBLZXlQYWlyKHsgcHJ2OiB0ZXN0RGF0YS5wcml2YXRlS2V5cy5wcnZLZXkxIH0pO1xuICAgIGNvbnN0IHB1YmxpY0tleSA9IGtleVBhaXIuZ2V0S2V5cygpLnB1YjtcbiAgICBjb25zdCBhZGRyZXNzID0gYXdhaXQgdXRpbHMuZGVmYXVsdC5nZXRBZGRyZXNzRnJvbVB1YmxpY0tleShwdWJsaWNLZXkpO1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgdHhCdWlsZGVyLnNlbmRlcihhZGRyZXNzKTtcblxuICAgIGNvbnN0IFdhbGxldENsYXNzID0gdG9ud2ViLndhbGxldC5hbGxbJ3Y0UjInXTtcbiAgICBjb25zdCB3YWxsZXQgPSBuZXcgV2FsbGV0Q2xhc3ModG9ud2ViLnByb3ZpZGVyLCB7XG4gICAgICBwdWJsaWNLZXk6IHRvbndlYi51dGlscy5oZXhUb0J5dGVzKHB1YmxpY0tleSksXG4gICAgICB3YzogMCxcbiAgICB9KTtcbiAgICBjb25zdCBzZXFubyA9IGF3YWl0IHdhbGxldC5tZXRob2RzLnNlcW5vKCkuY2FsbCgpO1xuICAgIHR4QnVpbGRlci5zZXF1ZW5jZU51bWJlcihzZXFubyBhcyBudW1iZXIpO1xuICAgIHR4QnVpbGRlci5wdWJsaWNLZXkocHVibGljS2V5KTtcbiAgICBjb25zdCBleHBpcmVBdCA9IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDFlMykgKyA2MCAqIDYwICogMjQgKiA3OyAvLyA3IGRheXNcbiAgICB0eEJ1aWxkZXIuZXhwaXJlVGltZShleHBpcmVBdCk7XG4gICAgdHhCdWlsZGVyLnNlbmQoe1xuICAgICAgYWRkcmVzczogJ0VRRDZUbTVyeWJKSHFNZmxRa2pwQ1JCN0xtNVFwR3FGb1l3aUxxTWpQdGFxUFNkWicsXG4gICAgICBhbW91bnQ6ICcxMDAwMDAwMCcsXG4gICAgfSk7XG4gICAgdHhCdWlsZGVyLnNldE1lc3NhZ2UoJ3Rlc3QnKTtcbiAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIHNob3VsZC5lcXVhbCh0eC50eXBlLCBUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgY29uc3Qgc2lnbmFibGUgPSB0eC5zaWduYWJsZVBheWxvYWQ7XG4gICAgY29uc3Qgc2lnbmF0dXJlID0ga2V5UGFpci5zaWduTWVzc2FnZWluVWludDhBcnJheShzaWduYWJsZSk7XG4gICAgY29uc3Qgc2lnbmVkVHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICBjb25zdCBidWlsZGVyMiA9IGZhY3RvcnkuZnJvbShzaWduZWRUeC50b0Jyb2FkY2FzdEZvcm1hdCgpKTtcbiAgICBidWlsZGVyMi5hZGRTaWduYXR1cmUoa2V5UGFpci5nZXRLZXlzKCksIEJ1ZmZlci5mcm9tKHNpZ25hdHVyZSkpO1xuICAgIGNvbnN0IHR4MiA9IGF3YWl0IGJ1aWxkZXIyLmJ1aWxkKCk7XG4gICAgY29uc3Qgc2lnbmF0dXJlMiA9IGtleVBhaXIuc2lnbk1lc3NhZ2VpblVpbnQ4QXJyYXkodHgyLnNpZ25hYmxlUGF5bG9hZCk7XG4gICAgc2hvdWxkLmVxdWFsKEJ1ZmZlci5mcm9tKHNpZ25hdHVyZSkudG9TdHJpbmcoJ2hleCcpLCBCdWZmZXIuZnJvbShzaWduYXR1cmUyKS50b1N0cmluZygnaGV4JykpO1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDIwMDApKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0b253ZWIucHJvdmlkZXIuc2VuZEJvYyh0eDIudG9Ccm9hZGNhc3RGb3JtYXQoKSk7XG4gICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocmVzdWx0KSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYnVpbGQgYSBzaWduZWQgdHJhbnNmZXIgdHggdXNpbmcgYWRkIHNpZ25hdHVyZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBrZXlQYWlyID0gbmV3IEtleVBhaXIoeyBwcnY6IHRlc3REYXRhLnByaXZhdGVLZXlzLnBydktleTEgfSk7XG4gICAgY29uc3QgcHVibGljS2V5ID0ga2V5UGFpci5nZXRLZXlzKCkucHViO1xuICAgIGNvbnN0IGFkZHJlc3MgPSBhd2FpdCB1dGlscy5kZWZhdWx0LmdldEFkZHJlc3NGcm9tUHVibGljS2V5KHB1YmxpY0tleSk7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICB0eEJ1aWxkZXIuc2VuZGVyKGFkZHJlc3MpO1xuICAgIHR4QnVpbGRlci5zZXF1ZW5jZU51bWJlcigwKTtcbiAgICB0eEJ1aWxkZXIucHVibGljS2V5KHB1YmxpY0tleSk7XG4gICAgY29uc3QgZXhwaXJlQXQgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxZTMpICsgNjAgKiA2MCAqIDI0ICogNztcbiAgICB0eEJ1aWxkZXIuZXhwaXJlVGltZShleHBpcmVBdCk7XG4gICAgdHhCdWlsZGVyLnNlbmQodGVzdERhdGEucmVjaXBpZW50c1swXSk7XG4gICAgdHhCdWlsZGVyLnNldE1lc3NhZ2UoJ3Rlc3QnKTtcbiAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIHNob3VsZC5lcXVhbCh0eC50eXBlLCBUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgY29uc3Qgc2lnbmFibGUgPSB0eC5zaWduYWJsZVBheWxvYWQ7XG4gICAgY29uc3Qgc2lnbmF0dXJlID0ga2V5UGFpci5zaWduTWVzc2FnZWluVWludDhBcnJheShzaWduYWJsZSk7XG4gICAgdHhCdWlsZGVyLmFkZFNpZ25hdHVyZShrZXlQYWlyLmdldEtleXMoKSwgQnVmZmVyLmZyb20oc2lnbmF0dXJlKSk7XG4gICAgY29uc3Qgc2lnbmVkVHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICBjb25zdCBidWlsZGVyMiA9IGZhY3RvcnkuZnJvbShzaWduZWRUeC50b0Jyb2FkY2FzdEZvcm1hdCgpKTtcbiAgICBjb25zdCB0eDIgPSBhd2FpdCBidWlsZGVyMi5idWlsZCgpO1xuICAgIGNvbnN0IHNpZ25hdHVyZTIgPSBrZXlQYWlyLnNpZ25NZXNzYWdlaW5VaW50OEFycmF5KHR4Mi5zaWduYWJsZVBheWxvYWQpO1xuICAgIHNob3VsZC5lcXVhbChCdWZmZXIuZnJvbShzaWduYXR1cmUpLnRvU3RyaW5nKCdoZXgnKSwgQnVmZmVyLmZyb20oc2lnbmF0dXJlMikudG9TdHJpbmcoJ2hleCcpKTtcbiAgICBzaG91bGQuZXF1YWwodHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgdHgyLnRvQnJvYWRjYXN0Rm9ybWF0KCkpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGJ1aWxkIHRyYW5zZmVyIHR4IGZvciBub24tYm91bmNlYWJsZSBhZGRyZXNzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgdHhCdWlsZGVyLnNlbmRlcih0ZXN0RGF0YS5zZW5kZXIuYWRkcmVzcyk7XG4gICAgdHhCdWlsZGVyLnNlcXVlbmNlTnVtYmVyKDApO1xuICAgIHR4QnVpbGRlci5wdWJsaWNLZXkodGVzdERhdGEuc2VuZGVyLnB1YmxpY0tleSk7XG4gICAgdHhCdWlsZGVyLmV4cGlyZVRpbWUoMTIzNDU2Nzg5MCk7XG4gICAgY29uc3QgYWRkcmVzcyA9ICdFUUFXekVLY2RueWt2WGZVTm91cWRTNjJ0dnJwMzJiQ3h1S1M2ZVFyUzZJU2djTG8nO1xuICAgIGNvbnN0IG90aGVyRm9ybWF0ID0gJ1VRQVd6RUtjZG55a3ZYZlVOb3VxZFM2MnR2cnAzMmJDeHVLUzZlUXJTNklTZ1o4dCc7XG4gICAgY29uc3QgYW1vdW50ID0gJzEwMDAwMDAwJztcbiAgICB0eEJ1aWxkZXIuc2VuZCh7IGFkZHJlc3MsIGFtb3VudCB9KTtcbiAgICB0eEJ1aWxkZXIuc2V0TWVzc2FnZSgndGVzdCcpO1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgc2hvdWxkLmVxdWFsKHR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICB0eC5pbnB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICB0eC5pbnB1dHNbMF0uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICBhZGRyZXNzOiB0ZXN0RGF0YS5zZW5kZXIuYWRkcmVzcyxcbiAgICAgIHZhbHVlOiBhbW91bnQsXG4gICAgICBjb2luOiAndHRvbicsXG4gICAgfSk7XG4gICAgdHgub3V0cHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgIHR4Lm91dHB1dHNbMF0uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICBhZGRyZXNzLFxuICAgICAgdmFsdWU6IGFtb3VudCxcbiAgICAgIGNvaW46ICd0dG9uJyxcbiAgICB9KTtcbiAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICB0eEpzb24uZGVzdGluYXRpb24uc2hvdWxkLmVxdWFsKGFkZHJlc3MpO1xuICAgIGNvbnN0IGJ1aWxkZXIyID0gZmFjdG9yeS5mcm9tKHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCkpO1xuICAgIGNvbnN0IHR4MiA9IGF3YWl0IGJ1aWxkZXIyLmJ1aWxkKCk7XG4gICAgY29uc3QgdHhKc29uMiA9IHR4Mi50b0pzb24oKTtcbiAgICB0eEpzb24yLmRlc3RpbmF0aW9uQWxpYXMuc2hvdWxkLmVxdWFsKG90aGVyRm9ybWF0KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBidWlsZCBhIHRyYW5zZmVyIHR4IGNvbXBhdGlibGUgd2l0aCB2MyB3YWxsZXQgY29udHJhY3QnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICB0eEJ1aWxkZXIuc2VuZGVyKHRlc3REYXRhLnZlc3RpbmdDb250cmFjdC5hZGRyZXNzKTtcbiAgICB0eEJ1aWxkZXIuc2VxdWVuY2VOdW1iZXIoMyk7XG4gICAgdHhCdWlsZGVyLmV4cGlyZVRpbWUoMTc2MTIxNTUxMik7XG4gICAgdHhCdWlsZGVyLnNlbmQodGVzdERhdGEudjNDb21wYXRpYmxlU2lnbmVkU2VuZFRyYW5zYWN0aW9uLnJlY2lwaWVudCk7XG4gICAgdHhCdWlsZGVyLmlzVjNDb250cmFjdE1lc3NhZ2UodHJ1ZSk7XG4gICAgdHhCdWlsZGVyLmJvdW5jZWFibGUodHJ1ZSk7XG4gICAgdHhCdWlsZGVyLmFkZFNpZ25hdHVyZShcbiAgICAgIHsgcHViOiB0ZXN0RGF0YS52ZXN0aW5nQ29udHJhY3QucHVibGljS2V5IH0sXG4gICAgICBCdWZmZXIuZnJvbSh0ZXN0RGF0YS52ZXN0aW5nQ29udHJhY3Quc2lnbmF0dXJlLCAnYmFzZTY0JylcbiAgICApO1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgc2hvdWxkLmVxdWFsKHR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICB0eC5pbnB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICB0eC5pbnB1dHNbMF0uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICBhZGRyZXNzOiB0ZXN0RGF0YS52ZXN0aW5nQ29udHJhY3QuYWRkcmVzcyxcbiAgICAgIHZhbHVlOiB0ZXN0RGF0YS52M0NvbXBhdGlibGVTaWduZWRTZW5kVHJhbnNhY3Rpb24ucmVjaXBpZW50LmFtb3VudCxcbiAgICAgIGNvaW46ICd0dG9uJyxcbiAgICB9KTtcbiAgICB0eC5vdXRwdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgdHgub3V0cHV0c1swXS5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgIGFkZHJlc3M6IHRlc3REYXRhLnYzQ29tcGF0aWJsZVNpZ25lZFNlbmRUcmFuc2FjdGlvbi5yZWNpcGllbnQuYWRkcmVzcyxcbiAgICAgIHZhbHVlOiB0ZXN0RGF0YS52M0NvbXBhdGlibGVTaWduZWRTZW5kVHJhbnNhY3Rpb24ucmVjaXBpZW50LmFtb3VudCxcbiAgICAgIGNvaW46ICd0dG9uJyxcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBidWlsZCBhIHYzIGNvbXBhdGlibGUgc2VuZCB0cmFuc2FjdGlvbiB1c2luZyByYXcgdHJhbnNhY3Rpb24gaGV4JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZnJvbSh0ZXN0RGF0YS52M0NvbXBhdGlibGVTaWduZWRTZW5kVHJhbnNhY3Rpb24udHhCb3VuY2VhYmxlKTtcbiAgICBjb25zdCBidWlsdFR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3QganNvblR4ID0gYnVpbHRUeC50b0pzb24oKTtcbiAgICBzaG91bGQuZXF1YWwoYnVpbHRUeC50eXBlLCBUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgc2hvdWxkLmVxdWFsKFxuICAgICAgYnVpbHRUeC5zaWduYWJsZVBheWxvYWQudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgICAgdGVzdERhdGEudjNDb21wYXRpYmxlU2lnbmVkU2VuZFRyYW5zYWN0aW9uLmJvdW5jZWFibGVTaWduYWJsZVxuICAgICk7XG4gICAgc2hvdWxkLmVxdWFsKGJ1aWx0VHguaWQsIHRlc3REYXRhLnYzQ29tcGF0aWJsZVNpZ25lZFNlbmRUcmFuc2FjdGlvbi50eElkQm91bmNlYWJsZSk7XG4gICAganNvblR4LnNlbmRlci5zaG91bGQuZXF1YWwodGVzdERhdGEudmVzdGluZ0NvbnRyYWN0LmFkZHJlc3NCb3VuY2VhYmxlKTtcbiAgICBqc29uVHguZGVzdGluYXRpb24uc2hvdWxkLmVxdWFsKHRlc3REYXRhLnYzQ29tcGF0aWJsZVNpZ25lZFNlbmRUcmFuc2FjdGlvbi5yZWNpcGllbnQuYWRkcmVzcyk7XG4gICAganNvblR4LmRlc3RpbmF0aW9uQWxpYXMuc2hvdWxkLmVxdWFsKHRlc3REYXRhLnYzQ29tcGF0aWJsZVNpZ25lZFNlbmRUcmFuc2FjdGlvbi5yZWNpcGllbnROb25Cb3VuY2VhYmxlLmFkZHJlc3MpO1xuICAgIGpzb25UeC5hbW91bnQuc2hvdWxkLmVxdWFsKHRlc3REYXRhLnYzQ29tcGF0aWJsZVNpZ25lZFNlbmRUcmFuc2FjdGlvbi5yZWNpcGllbnQuYW1vdW50KTtcbiAgICBqc29uVHguc2Vxbm8uc2hvdWxkLmVxdWFsKDMpO1xuICAgIGpzb25UeC5leHBpcmF0aW9uVGltZS5zaG91bGQuZXF1YWwoMTc2MTIxNTUxMik7XG4gICAganNvblR4LmJvdW5jZWFibGUuc2hvdWxkLmVxdWFsKHRydWUpO1xuICB9KTtcbn0pO1xuIl19