bitgo 53.4.0 → 53.4.2

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.
@@ -395,49 +395,19 @@ describe('signTxRequest:', function () {
395
395
  // No txParams — legitimate no-recipient flow
396
396
  });
397
397
  });
398
- describe('consolidate intent', function () {
399
- // Intent recipient amount is a build-time snapshot that drifts from the swept balance in the tx.
398
+ it('does not throw for allowlisted no-recipient intentType (consolidate)', async function () {
399
+ sandbox.stub(baseCoin, 'verifyTransaction').resolves(true);
400
+ const nockPromises = await getNockPromisesForEddsaSigning(txRequest);
401
+ await Promise.all(nockPromises);
400
402
  const consolidateTxRequest = {
401
403
  ...txRequest,
402
- intent: {
403
- intentType: 'consolidate',
404
- consolidateId: '68a7d5d0c66e74e216b97173bd558c6d',
405
- recipients: [
406
- {
407
- address: { address: 'HMEgbR4S2hLKfst2VZUVpHVUu4FioFPyW5iUuJvZdMvs' },
408
- amount: { value: '999985000', symbol: 'sol' },
409
- },
410
- ],
411
- },
404
+ intent: { intentType: 'consolidate' },
412
405
  };
413
- it('verifies sweep-to-root instead of snapshot intent recipients', async function () {
414
- // Fee payer stays the original root, so this also covers the consolidation fee payer exemption.
415
- sandbox
416
- .stub(wallet, 'coinSpecific')
417
- .returns({ rootAddress: 'HMEgbR4S2hLKfst2VZUVpHVUu4FioFPyW5iUuJvZdMvs', customChangeWalletId: '' });
418
- const verifySpy = sandbox.spy(baseCoin, 'verifyTransaction');
419
- const nockPromises = await getNockPromisesForEddsaSigning(consolidateTxRequest);
420
- await Promise.all(nockPromises);
421
- await tssUtils.signTxRequest({
422
- txRequest: consolidateTxRequest,
423
- prv: Buffer.from(userKeyShare).toString('base64'),
424
- reqId,
425
- });
426
- verifySpy.calledOnce.should.be.true();
427
- verifySpy.firstCall.args[0].should.containDeep({
428
- txPrebuild: { consolidateId: '68a7d5d0c66e74e216b97173bd558c6d' },
429
- verification: { consolidationToBaseAddress: true },
430
- });
431
- verifySpy.firstCall.args[0].txParams.should.not.have.property('recipients');
432
- });
433
- it('rejects a consolidation that does not sweep to the wallet root address', async function () {
434
- await tssUtils
435
- .signTxRequest({
436
- txRequest: consolidateTxRequest,
437
- prv: Buffer.from(userKeyShare).toString('base64'),
438
- reqId,
439
- })
440
- .should.be.rejectedWith('tx outputs does not match with expected address');
406
+ const userPrvBase64 = Buffer.from(userKeyShare).toString('base64');
407
+ await tssUtils.signTxRequest({
408
+ txRequest: consolidateTxRequest,
409
+ prv: userPrvBase64,
410
+ reqId,
441
411
  });
442
412
  });
443
413
  it('uses intent recipients when txParams is absent and intent has recipients', async function () {
@@ -649,4 +619,4 @@ async function nockSendTxRequest(txRequest, requestType = sdk_core_1.RequestType
649
619
  txRequestId: txRequest.txRequestId,
650
620
  });
651
621
  }
652
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnblR4UmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Rlc3QvdjIvdW5pdC9pbnRlcm5hbC90c3NVdGlscy9lZGRzYU1QQ3YyL3NpZ25UeFJlcXVlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwrQkFBK0I7QUFDL0IsOENBYXlCO0FBQ3pCLG9EQUE4RTtBQUM5RSxtQ0FBbUM7QUFDbkMsNkJBQThCO0FBQzlCLDhDQUF3RDtBQVF4RCwrQ0FBOEM7QUFFOUMsTUFBTSxnQkFBZ0IsR0FBRyxxQkFBVSxDQUFDLGdCQUFnQixDQUFDO0FBT3JELFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRTtJQUN6QixJQUFJLFFBQW9DLENBQUM7SUFDekMsSUFBSSxNQUFjLENBQUM7SUFDbkIsSUFBSSxLQUF5QixDQUFDO0lBQzlCLElBQUksUUFBa0IsQ0FBQztJQUN2QixJQUFJLFdBQWtGLENBQUM7SUFDdkYsSUFBSSxjQUFrQyxDQUFDO0lBQ3ZDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQztJQUV2QixNQUFNLEtBQUssR0FBRyxJQUFJLHdCQUFhLEVBQUUsQ0FBQztJQUNsQyxNQUFNLFdBQVcsR0FBRyxlQUFlLENBQUM7SUFDcEMsTUFBTSxXQUFXLEdBQ2Ysa2dCQUFrZ0IsQ0FBQztJQUNyZ0IsTUFBTSxlQUFlLEdBQUcscVFBQXFRLFdBQVcsRUFBRSxDQUFDO0lBQzNTLE1BQU0sVUFBVSxHQUFHLGtCQUFrQixDQUFDO0lBQ3RDLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9ELE1BQU0sUUFBUSxHQUFHO1FBQ2YsVUFBVSxFQUFFO1lBQ1Y7Z0JBQ0UsT0FBTyxFQUFFLDhDQUE4QztnQkFDdkQsTUFBTSxFQUFFLFdBQVc7YUFDcEI7U0FDRjtLQUNGLENBQUM7SUFDRixNQUFNLFNBQVMsR0FBYztRQUMzQixXQUFXO1FBQ1gsWUFBWSxFQUFFLHNDQUFzQztRQUNwRCxZQUFZLEVBQUU7WUFDWjtnQkFDRSxVQUFVLEVBQUU7b0JBQ1YsZUFBZTtvQkFDZixXQUFXO29CQUNYLGNBQWMsRUFBRSxLQUFLLEVBQUUsOENBQThDO2lCQUN0RTtnQkFDRCxLQUFLLEVBQUUsa0JBQWtCO2dCQUN6QixlQUFlLEVBQUUsRUFBRTthQUNwQjtTQUNGO1FBQ0QsV0FBVyxFQUFFLEVBQUU7UUFDZixJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7UUFDOUIsTUFBTSxFQUFFLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRTtRQUNqQyxNQUFNLEVBQUUsSUFBSTtRQUNaLEtBQUssRUFBRSxzQkFBc0I7UUFDN0IsVUFBVSxFQUFFLEtBQUs7UUFDakIsUUFBUSxFQUFFLFVBQVU7UUFDcEIsZUFBZSxFQUFFLElBQUk7UUFDckIsT0FBTyxFQUFFLENBQUM7UUFDVixNQUFNLEVBQUUsUUFBUTtRQUNoQixVQUFVLEVBQUUsTUFBTTtLQUNuQixDQUFDO0lBRUYsTUFBTSwwQkFBMEIsR0FBYztRQUM1QyxXQUFXO1FBQ1gsWUFBWSxFQUFFLHNDQUFzQztRQUNwRCxRQUFRLEVBQUU7WUFDUjtnQkFDRSxVQUFVO2dCQUNWLGNBQWM7Z0JBQ2QsY0FBYyxFQUFFLEtBQUs7Z0JBQ3JCLEtBQUssRUFBRSxrQkFBa0I7Z0JBQ3pCLGVBQWUsRUFBRSxFQUFFO2FBQ3BCO1NBQ0Y7UUFDRCxXQUFXLEVBQUUsRUFBRTtRQUNmLElBQUksRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtRQUM5QixNQUFNLEVBQUUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFO1FBQ2pDLE1BQU0sRUFBRSxJQUFJO1FBQ1osS0FBSyxFQUFFLHNCQUFzQjtRQUM3QixVQUFVLEVBQUUsS0FBSztRQUNqQixRQUFRLEVBQUUsVUFBVTtRQUNwQixlQUFlLEVBQUUsSUFBSTtRQUNyQixPQUFPLEVBQUUsQ0FBQztRQUNWLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLFVBQVUsRUFBRSxNQUFNO0tBQ25CLENBQUM7SUFFRixJQUFJLFlBQW9CLENBQUM7SUFDekIsSUFBSSxjQUFzQixDQUFDO0lBQzNCLElBQUksYUFBcUIsQ0FBQztJQUUxQixNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUU7UUFDaEIsS0FBSyxHQUFHLG9CQUFTLENBQUMsUUFBUSxDQUFDLFdBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzNCLE1BQU0sS0FBSyxHQUFHLGlCQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUN0RCxXQUFXLEdBQUcsTUFBTSxPQUFPLENBQUMsV0FBVyxDQUFDO1lBQ3RDLE9BQU8sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQztZQUNyRCxLQUFLLEVBQUUsU0FBUztZQUNoQixNQUFNLEVBQUUsU0FBUztTQUNsQixDQUFDLENBQUM7UUFDSCxjQUFjLEdBQUcsTUFBTSxPQUFPLENBQUMsY0FBYyxDQUFDLEVBQUUsVUFBVSxFQUFFLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ3RGLE1BQU0sU0FBUyxHQUFHO1lBQ2hCLEdBQUcsRUFBRTtnQkFDSCxjQUFjLEVBQUUsV0FBVyxDQUFDLFNBQVM7Z0JBQ3JDLHdCQUF3QixFQUFFLFdBQVcsQ0FBQyxTQUFTO2FBQ2hEO1NBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUUzRixNQUFNLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsR0FBRyxNQUFNLHFCQUFPLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUNqRixZQUFZLEdBQUcsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JDLGNBQWMsR0FBRyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDekMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUV2QyxRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVoQyxNQUFNLFVBQVUsR0FBRztZQUNqQixFQUFFLEVBQUUsU0FBUyxDQUFDLFFBQVE7WUFDdEIsVUFBVSxFQUFFLFNBQVMsQ0FBQyxZQUFZO1lBQ2xDLElBQUksRUFBRSxRQUFRO1lBQ2QsWUFBWSxFQUFFO2dCQUNaLFdBQVcsRUFBRSw4Q0FBOEM7YUFDNUQ7WUFDRCxZQUFZLEVBQUUsS0FBSztZQUNuQixtQkFBbUIsRUFBRSxPQUFPO1NBQzdCLENBQUM7UUFDRixNQUFNLEdBQUcsSUFBSSxpQkFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDakQsUUFBUSxHQUFHLElBQUkscUJBQVUsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNyRSxDQUFDLENBQUMsQ0FBQztJQUVILFVBQVUsQ0FBQyxLQUFLO1FBQ2QsTUFBTSx3Q0FBd0MsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLFlBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNqRyxDQUFDLENBQUMsQ0FBQztJQUVILEtBQUssQ0FBQztRQUNKLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDLENBQUMsQ0FBQztJQUVILFNBQVMsQ0FBQztRQUNSLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw0RUFBNEUsRUFBRSxLQUFLO1FBQ3BGLE1BQU0sWUFBWSxHQUFHLE1BQU0sOEJBQThCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckUsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRWhDLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sUUFBUSxDQUFDLGFBQWEsQ0FBQztZQUMzQixTQUFTO1lBQ1QsR0FBRyxFQUFFLGFBQWE7WUFDbEIsS0FBSztZQUNMLFFBQVE7U0FDVCxDQUFDLENBQUM7UUFDSCxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM1QyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw4RUFBOEUsRUFBRSxLQUFLO1FBQ3RGLE1BQU0sWUFBWSxHQUFHLE1BQU0sOEJBQThCLENBQUMsU0FBUyxFQUFFLHNCQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqSCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFaEMsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkUsTUFBTSxRQUFRLENBQUMsYUFBYSxDQUFDO1lBQzNCLFNBQVM7WUFDVCxHQUFHLEVBQUUsZUFBZTtZQUNwQixZQUFZLEVBQUUsZ0JBQWdCLENBQUMsTUFBTTtZQUNyQyxLQUFLO1lBQ0wsUUFBUTtTQUNULENBQUMsQ0FBQztRQUNILFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzVDLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDZFQUE2RSxFQUFFLEtBQUs7UUFDckYsTUFBTSxZQUFZLEdBQUcsTUFBTSw4QkFBOEIsQ0FBQywwQkFBMEIsRUFBRSxzQkFBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVoQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuRSxNQUFNLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQztZQUNyQyxTQUFTLEVBQUUsMEJBQTBCO1lBQ3JDLEdBQUcsRUFBRSxhQUFhO1lBQ2xCLEtBQUs7WUFDTCxVQUFVLEVBQUUsMEJBQTBCLENBQUMsUUFBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVU7WUFDOUQsWUFBWSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQztTQUNqRCxDQUFDLENBQUM7UUFDSCxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM1QyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxpREFBaUQsRUFBRSxLQUFLO1FBQ3pELElBQUksQ0FBQyx1QkFBdUIsQ0FBQzthQUMxQixJQUFJLENBQUMsa0JBQWtCLFNBQVMsQ0FBQyxRQUFRLGVBQWUsU0FBUyxDQUFDLFdBQVcsc0JBQXNCLENBQUM7YUFDcEcsS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNWLFdBQVc7WUFDWCxZQUFZLEVBQUU7Z0JBQ1o7b0JBQ0UsZUFBZSxFQUFFO3dCQUNmOzRCQUNFLElBQUksRUFBRSw2QkFBa0IsQ0FBQyxLQUFLOzRCQUM5QixFQUFFLEVBQUUsNkJBQWtCLENBQUMsSUFBSTs0QkFDM0IsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQzt5QkFDMUQ7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUVMLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sUUFBUTthQUNYLGFBQWEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQzthQUNqRSxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO0lBQ25FLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGlEQUFpRCxFQUFFLEtBQUs7UUFDekQsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEQsTUFBTSxRQUFRLEdBQUcsSUFBSSx5QkFBVyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3RCxNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQ3BCLGFBQWEsRUFDYixhQUFhLEVBQ2IsU0FBUyxDQUFDLFlBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUNwRCxnQkFBZ0IsQ0FBQyxJQUFJLENBQ3RCLENBQUM7UUFDRixNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFN0Msd0VBQXdFO1FBQ3hFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQzthQUMxQixJQUFJLENBQ0gsa0JBQWtCLFNBQVMsQ0FBQyxRQUFRLGVBQWUsU0FBUyxDQUFDLFdBQVcsc0JBQXNCLEVBQzlGLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDTixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUF5QyxDQUFDLElBQUksS0FBSyxhQUFhLENBQzVHO2FBQ0EsS0FBSyxDQUNKLEdBQUcsRUFDSCxLQUFLLEVBQUUsSUFBWSxFQUFFLElBQTZFLEVBQUUsRUFBRTtZQUNwRyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUF3QyxDQUFDO1lBQ3JHLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzNFLE1BQU0sb0JBQW9CLEdBQWlDO2dCQUN6RCxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsSUFBSTtnQkFDM0IsT0FBTyxFQUFFLElBQUksVUFBVSxDQUFDLGFBQWEsQ0FBQzthQUN2QyxDQUFDO1lBQ0YsZ0VBQWdFO1lBQ2hFLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLFNBQVMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7WUFDbkUsTUFBTSxlQUFlLEdBQUcsTUFBTSxzQkFBUSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBQzVHLE1BQU0sWUFBWSxHQUF5QztnQkFDekQsSUFBSSxFQUFFLGNBQWM7Z0JBQ3BCLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUU7YUFDaEMsQ0FBQztZQUNGLE9BQU87Z0JBQ0wsV0FBVztnQkFDWCxZQUFZLEVBQUU7b0JBQ1o7d0JBQ0UsZUFBZSxFQUFFOzRCQUNmO2dDQUNFLElBQUksRUFBRSw2QkFBa0IsQ0FBQyxLQUFLO2dDQUM5QixFQUFFLEVBQUUsNkJBQWtCLENBQUMsSUFBSTtnQ0FDM0IsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDOzZCQUNwQzt5QkFDRjtxQkFDRjtpQkFDRjthQUNGLENBQUM7UUFDSixDQUFDLENBQ0YsQ0FBQztRQUVKLGlGQUFpRjtRQUNqRixJQUFJLENBQUMsdUJBQXVCLENBQUM7YUFDMUIsSUFBSSxDQUNILGtCQUFrQixTQUFTLENBQUMsUUFBUSxlQUFlLFNBQVMsQ0FBQyxXQUFXLHNCQUFzQixFQUM5RixDQUFDLElBQUksRUFBRSxFQUFFLENBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBeUMsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUM1RzthQUNBLEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDVixXQUFXO1lBQ1gsWUFBWSxFQUFFO2dCQUNaO29CQUNFLGVBQWUsRUFBRTt3QkFDZjs0QkFDRSxJQUFJLEVBQUUsNkJBQWtCLENBQUMsSUFBSTs0QkFDN0IsRUFBRSxFQUFFLDZCQUFrQixDQUFDLEtBQUs7NEJBQzVCLEtBQUssRUFBRSxhQUFhO3lCQUNyQjt3QkFDRDs0QkFDRSxJQUFJLEVBQUUsNkJBQWtCLENBQUMsS0FBSzs0QkFDOUIsRUFBRSxFQUFFLDZCQUFrQixDQUFDLElBQUk7NEJBQzNCLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7eUJBQzFEO3FCQUNGO2lCQUNGO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFFTCxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuRSxNQUFNLFFBQVE7YUFDWCxhQUFhLENBQUMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUM7YUFDakUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsNERBQTRELENBQUMsQ0FBQztJQUMxRixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywrRUFBK0UsRUFBRSxLQUFLO1FBQ3ZGLE1BQU0sWUFBWSxHQUFHLE1BQU0sOEJBQThCLENBQUMsU0FBUyxFQUFFLHNCQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hGLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVoQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuRSxNQUFNLFFBQVEsQ0FBQyxhQUFhLENBQUM7WUFDM0IsU0FBUztZQUNULEdBQUcsRUFBRSxhQUFhO1lBQ2xCLEtBQUs7WUFDTCxRQUFRO1NBQ1QsQ0FBQyxDQUFDO1FBQ0gsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsK0VBQStFLEVBQUUsS0FBSztRQUN2RixNQUFNLFlBQVksR0FBRyxNQUFNLDhCQUE4QixDQUFDLFNBQVMsRUFBRSxzQkFBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xILE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVoQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuRSxNQUFNLFFBQVEsQ0FBQyxhQUFhLENBQUM7WUFDM0IsU0FBUztZQUNULEdBQUcsRUFBRSxhQUFhO1lBQ2xCLEtBQUs7WUFDTCxRQUFRO1NBQ1QsQ0FBQyxDQUFDO1FBQ0gsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsK0VBQStFLEVBQUUsS0FBSztRQUN2RixNQUFNLFlBQVksR0FBRyxNQUFNLDhCQUE4QixDQUFDLFNBQVMsRUFBRSxzQkFBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xILE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVoQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuRSxNQUFNLFFBQVEsQ0FBQyxhQUFhLENBQUM7WUFDM0IsU0FBUztZQUNULEdBQUcsRUFBRSxhQUFhO1lBQ2xCLEtBQUs7WUFDTCxRQUFRO1NBQ1QsQ0FBQyxDQUFDO1FBQ0gsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsd0VBQXdFLEVBQUUsS0FBSztRQUNoRixNQUFNLFlBQVksR0FBRyxNQUFNLDhCQUE4QixDQUFDLFNBQVMsRUFBRSxzQkFBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4RixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFaEMsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkUsTUFBTSxRQUFRO2FBQ1gsYUFBYSxDQUFDO1lBQ2IsU0FBUztZQUNULEdBQUcsRUFBRSxhQUFhO1lBQ2xCLEtBQUs7WUFDTCxRQUFRO1NBQ1QsQ0FBQzthQUNELE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDM0QsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0MsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0MsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0MsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsK0NBQStDLEVBQUUsS0FBSztRQUN2RCxNQUFNLFlBQVksR0FBRyxNQUFNLDhCQUE4QixDQUN2RCxTQUFTLEVBQ1Qsc0JBQVcsQ0FBQyxFQUFFLEVBQ2QsQ0FBQyxFQUNELGdCQUFnQixDQUFDLElBQUksRUFDckIsQ0FBQyxFQUNELElBQUksQ0FDTCxDQUFDO1FBQ0YsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRWhDLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sUUFBUTthQUNYLGFBQWEsQ0FBQztZQUNiLFNBQVM7WUFDVCxHQUFHLEVBQUUsYUFBYTtZQUNsQixLQUFLO1lBQ0wsUUFBUTtTQUNULENBQUM7YUFDRCxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1FBQ3BFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdDLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLDJDQUEyQyxFQUFFO1FBQ3BELElBQUksT0FBMkIsQ0FBQztRQUVoQyxVQUFVLENBQUM7WUFDVCxPQUFPLEdBQUcsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO1FBRUgsU0FBUyxDQUFDO1lBQ1IsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHNIQUFzSCxFQUFFLEtBQUs7WUFDOUgsd0VBQXdFO1lBQ3hFLGdFQUFnRTtZQUNoRSxNQUFNLGtCQUFrQixHQUFjO2dCQUNwQyxHQUFHLFNBQVM7Z0JBQ1osTUFBTSxFQUFFLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFTO2FBQ2xELENBQUM7WUFDRixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNuRSxNQUFNLFFBQVE7aUJBQ1gsYUFBYSxDQUFDO2dCQUNiLFNBQVMsRUFBRSxrQkFBa0I7Z0JBQzdCLEdBQUcsRUFBRSxhQUFhO2dCQUNsQixLQUFLO2dCQUNMLGdFQUFnRTthQUNqRSxDQUFDO2lCQUNELE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLGtDQUF1QixDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMscUdBQXFHLEVBQUUsS0FBSztZQUM3RyxNQUFNLGtCQUFrQixHQUFjO2dCQUNwQyxHQUFHLFNBQVM7Z0JBQ1osTUFBTSxFQUFFLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBUzthQUN6QyxDQUFDO1lBQ0YsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkUsTUFBTSxRQUFRO2lCQUNYLGFBQWEsQ0FBQztnQkFDYixTQUFTLEVBQUUsa0JBQWtCO2dCQUM3QixHQUFHLEVBQUUsYUFBYTtnQkFDbEIsS0FBSztnQkFDTCxRQUFRLEVBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFO2FBQzdCLENBQUM7aUJBQ0QsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsa0NBQXVCLENBQUMsQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxxRUFBcUUsRUFBRSxLQUFLO1lBQzdFLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLG1CQUFtQixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNELE1BQU0sWUFBWSxHQUFHLE1BQU0sOEJBQThCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDckUsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRWhDLE1BQU0sb0JBQW9CLEdBQWM7Z0JBQ3RDLEdBQUcsU0FBUztnQkFDWixNQUFNLEVBQUUsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFTO2FBQzVDLENBQUM7WUFDRixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNuRSxNQUFNLFFBQVEsQ0FBQyxhQUFhLENBQUM7Z0JBQzNCLFNBQVMsRUFBRSxvQkFBb0I7Z0JBQy9CLEdBQUcsRUFBRSxhQUFhO2dCQUNsQixLQUFLO2dCQUNMLDZDQUE2QzthQUM5QyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILFFBQVEsQ0FBQyxvQkFBb0IsRUFBRTtZQUM3QixpR0FBaUc7WUFDakcsTUFBTSxvQkFBb0IsR0FBYztnQkFDdEMsR0FBRyxTQUFTO2dCQUNaLE1BQU0sRUFBRTtvQkFDTixVQUFVLEVBQUUsYUFBYTtvQkFDekIsYUFBYSxFQUFFLGtDQUFrQztvQkFDakQsVUFBVSxFQUFFO3dCQUNWOzRCQUNFLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSw4Q0FBOEMsRUFBRTs0QkFDcEUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO3lCQUM5QztxQkFDRjtpQkFDRjthQUNGLENBQUM7WUFFRixFQUFFLENBQUMsOERBQThELEVBQUUsS0FBSztnQkFDdEUsZ0dBQWdHO2dCQUNoRyxPQUFPO3FCQUNKLElBQUksQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDO3FCQUM1QixPQUFPLENBQUMsRUFBRSxXQUFXLEVBQUUsOENBQThDLEVBQUUsb0JBQW9CLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDdEcsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztnQkFDN0QsTUFBTSxZQUFZLEdBQUcsTUFBTSw4QkFBOEIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2dCQUNoRixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBRWhDLE1BQU0sUUFBUSxDQUFDLGFBQWEsQ0FBQztvQkFDM0IsU0FBUyxFQUFFLG9CQUFvQjtvQkFDL0IsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztvQkFDakQsS0FBSztpQkFDTixDQUFDLENBQUM7Z0JBRUgsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN0QyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO29CQUM3QyxVQUFVLEVBQUUsRUFBRSxhQUFhLEVBQUUsa0NBQWtDLEVBQUU7b0JBQ2pFLFlBQVksRUFBRSxFQUFFLDBCQUEwQixFQUFFLElBQUksRUFBRTtpQkFDbkQsQ0FBQyxDQUFDO2dCQUNILFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDOUUsQ0FBQyxDQUFDLENBQUM7WUFFSCxFQUFFLENBQUMsd0VBQXdFLEVBQUUsS0FBSztnQkFDaEYsTUFBTSxRQUFRO3FCQUNYLGFBQWEsQ0FBQztvQkFDYixTQUFTLEVBQUUsb0JBQW9CO29CQUMvQixHQUFHLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO29CQUNqRCxLQUFLO2lCQUNOLENBQUM7cUJBQ0QsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsaURBQWlELENBQUMsQ0FBQztZQUMvRSxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDBFQUEwRSxFQUFFLEtBQUs7WUFDbEYsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsbUJBQW1CLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0QsTUFBTSxZQUFZLEdBQUcsTUFBTSw4QkFBOEIsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNyRSxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7WUFFaEMsTUFBTSx3QkFBd0IsR0FBYztnQkFDMUMsR0FBRyxTQUFTO2dCQUNaLE1BQU0sRUFBRTtvQkFDTixVQUFVLEVBQUUsU0FBUztvQkFDckIsVUFBVSxFQUFFO3dCQUNWOzRCQUNFLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSw4Q0FBOEMsRUFBRTs0QkFDcEUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO3lCQUM5QztxQkFDRjtpQkFDSzthQUNULENBQUM7WUFDRixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNuRSxvREFBb0Q7WUFDcEQsTUFBTSxRQUFRLENBQUMsYUFBYSxDQUFDO2dCQUMzQixTQUFTLEVBQUUsd0JBQXdCO2dCQUNuQyxHQUFHLEVBQUUsYUFBYTtnQkFDbEIsS0FBSzthQUNOLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGtGQUFrRixFQUFFLEtBQUs7WUFDMUYsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsbUJBQW1CLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0QsTUFBTSxZQUFZLEdBQUcsTUFBTSw4QkFBOEIsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNyRSxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7WUFFaEMsTUFBTSxnQkFBZ0IsR0FBYztnQkFDbEMsR0FBRyxTQUFTO2dCQUNaLE1BQU0sRUFBRTtvQkFDTixVQUFVLEVBQUUsVUFBVTtvQkFDdEIsZ0JBQWdCLEVBQUUsb0JBQW9CO2lCQUNoQzthQUNULENBQUM7WUFDRixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNuRSxNQUFNLFFBQVEsQ0FBQyxhQUFhLENBQUM7Z0JBQzNCLFNBQVMsRUFBRSxnQkFBZ0I7Z0JBQzNCLEdBQUcsRUFBRSxhQUFhO2dCQUNsQixLQUFLO2FBQ04sQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILEtBQUssVUFBVSw4QkFBOEIsQ0FDM0MsU0FBb0IsRUFDcEIsY0FBMkIsc0JBQVcsQ0FBQyxFQUFFLEVBQ3pDLG1CQUFtQixHQUFHLENBQUMsRUFDdkIsZ0JBQTZDLGdCQUFnQixDQUFDLElBQUksRUFDbEUsY0FBYyxHQUFHLENBQUMsRUFDbEIsdUJBQXVCLEdBQUcsS0FBSztRQUUvQixNQUFNLGlCQUFpQixHQUNyQixXQUFXLEtBQUssc0JBQVcsQ0FBQyxPQUFPO1lBQ2pDLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWU7WUFDeEMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztRQUN4RCxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVELE1BQU0sWUFBWSxHQUFHLElBQUkseUJBQVcsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakUsTUFBTSxZQUFZLENBQUMsT0FBTyxDQUN4QixhQUFhLEVBQ2IsYUFBYSxFQUNiLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsY0FBYyxJQUFJLEtBQUssRUFDOUQsYUFBYSxDQUNkLENBQUM7UUFDRixNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDakQsSUFBSSxTQUFtRCxDQUFDO1FBRXhELE9BQU87WUFDTCxNQUFNLDJDQUEyQyxDQUMvQyxZQUFZLEVBQ1osU0FBUyxFQUNULFNBQVMsRUFDVCxjQUFjLEVBQ2QsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDTixTQUFTLEdBQUcsR0FBRyxDQUFDO1lBQ2xCLENBQUMsRUFDRCxXQUFXLEVBQ1gsYUFBYSxFQUNiLGNBQWMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQy9DO1lBQ0QsTUFBTSwyQ0FBMkMsQ0FDL0MsU0FBUyxFQUNULEdBQUcsRUFBRSxDQUFDLFNBQVUsRUFDaEIsY0FBYyxFQUNkLFdBQVcsRUFDWCxjQUFjLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUM5QyxhQUFhLENBQ2Q7WUFDRCxNQUFNLDZDQUE2QyxDQUNqRCxTQUFTLEVBQ1QsV0FBVyxFQUNYLGFBQWEsRUFDYixjQUFjLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUM5Qyx1QkFBdUIsQ0FDeEI7WUFDRCxNQUFNLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUM7U0FDaEQsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDLENBQUMsQ0FBQztBQUVILEtBQUssVUFBVSx3Q0FBd0MsQ0FDckQsSUFBWSxFQUNaLFlBQW9CLEVBQ3BCLGVBQWtEO0lBRWxELE1BQU0seUJBQXlCLEdBQXNCO1FBQ25ELElBQUksRUFBRSxZQUFZO1FBQ2xCLFNBQVMsRUFBRSxlQUFlLENBQUMsU0FBUztRQUNwQyxjQUFjLEVBQUUsZUFBZSxDQUFDLFNBQVM7UUFDekMsbUJBQW1CLEVBQUUsZUFBZSxDQUFDLFNBQVM7UUFDOUMsWUFBWTtLQUNiLENBQUM7SUFDRixJQUFJLENBQUMsdUJBQXVCLENBQUM7U0FDMUIsR0FBRyxDQUFDLFdBQVcsSUFBSSxhQUFhLENBQUM7U0FDakMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUNSLEtBQUssQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDO1NBQ3ZCLEtBQUssQ0FBQyxHQUFHLEVBQUUseUJBQXlCLENBQUMsQ0FBQztJQUN6QyxPQUFPLHlCQUF5QixDQUFDO0FBQ25DLENBQUM7QUFFRCxLQUFLLFVBQVUsMkNBQTJDLENBQ3hELFlBQTZCLEVBQzdCLFNBQW9CLEVBQ3BCLFNBQXVDLEVBQ3ZDLGVBQW1DLEVBQ25DLGFBQTBELEVBQzFELGNBQTJCLHNCQUFXLENBQUMsRUFBRSxFQUN6QyxnQkFBNkMsZ0JBQWdCLENBQUMsSUFBSSxFQUNsRSxtQkFBbUIsR0FBRyxDQUFDO0lBRXZCLE1BQU0sS0FBSyxHQUFHLFdBQVcsS0FBSyxzQkFBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztJQUN0RixNQUFNLGVBQWUsR0FBRyxhQUFhLEtBQUssZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyw2QkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLDZCQUFrQixDQUFDLE1BQU0sQ0FBQztJQUN0SCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUU1QyxJQUFJLG1CQUFtQixHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzVCLEtBQUs7YUFDRixJQUFJLENBQ0gsa0JBQWtCLFNBQVMsQ0FBQyxRQUFRLGVBQWUsU0FBUyxDQUFDLFdBQVcsR0FBRyxLQUFLLE9BQU8sRUFDdkYsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQXlDLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FDNUc7YUFDQSxLQUFLLENBQUMsbUJBQW1CLENBQUM7YUFDMUIsS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNWLEtBQUssRUFBRSwrQkFBK0I7WUFDdEMsSUFBSSxFQUFFLGlCQUFpQjtZQUN2QixTQUFTLEVBQUUsMkJBQTJCO1lBQ3RDLE9BQU8sRUFBRSxFQUFFO1NBQ1osQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE9BQU8sS0FBSztTQUNULElBQUksQ0FDSCxrQkFBa0IsU0FBUyxDQUFDLFFBQVEsZUFBZSxTQUFTLENBQUMsV0FBVyxHQUFHLEtBQUssT0FBTyxFQUN2RixDQUFDLElBQUksRUFBRSxFQUFFLENBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBeUMsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUM1RztTQUNBLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQVksRUFBRSxJQUEyQixFQUFFLEVBQUU7UUFDOUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBd0MsQ0FBQztRQUNyRyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMzRSxNQUFNLG9CQUFvQixHQUFpQztZQUN6RCxJQUFJLEVBQUUsYUFBYTtZQUNuQixPQUFPLEVBQUUsSUFBSSxVQUFVLENBQUMsYUFBYSxDQUFDO1NBQ3ZDLENBQUM7UUFDRixNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsWUFBWSxDQUFDLHNCQUFzQixDQUFDLENBQUMsU0FBUyxFQUFFLG9CQUFvQixDQUFDLENBQUMsQ0FBQztRQUMzRixhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFekIsTUFBTSxlQUFlLEdBQUcsTUFBTSxzQkFBUSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQzdHLE1BQU0sWUFBWSxHQUF5QztZQUN6RCxJQUFJLEVBQUUsY0FBYztZQUNwQixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFO1NBQ2hDLENBQUM7UUFDRixNQUFNLFFBQVEsR0FBRyxXQUFXLEtBQUssc0JBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO1FBQ25GLE9BQU87WUFDTCxXQUFXLEVBQUUsU0FBUyxDQUFDLFdBQVc7WUFDbEMsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDVjtvQkFDRSxlQUFlLEVBQUU7d0JBQ2Y7NEJBQ0UsSUFBSSxFQUFFLDZCQUFrQixDQUFDLEtBQUs7NEJBQzlCLEVBQUUsRUFBRSxlQUFlOzRCQUNuQixLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUM7eUJBQ3BDO3FCQUNGO2lCQUNGO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQsS0FBSyxVQUFVLDJDQUEyQyxDQUN4RCxTQUFvQixFQUNwQixZQUFnRCxFQUNoRCxlQUFtQyxFQUNuQyxjQUEyQixzQkFBVyxDQUFDLEVBQUUsRUFDekMsbUJBQW1CLEdBQUcsQ0FBQyxFQUN2QixnQkFBNkMsZ0JBQWdCLENBQUMsSUFBSTtJQUVsRSxNQUFNLEtBQUssR0FBRyxXQUFXLEtBQUssc0JBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUM7SUFDdEYsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDNUMsTUFBTSxlQUFlLEdBQUcsYUFBYSxLQUFLLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsNkJBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyw2QkFBa0IsQ0FBQyxNQUFNLENBQUM7SUFFdEgsSUFBSSxtQkFBbUIsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUM1QixLQUFLO2FBQ0YsSUFBSSxDQUNILGtCQUFrQixTQUFTLENBQUMsUUFBUSxlQUFlLFNBQVMsQ0FBQyxXQUFXLEdBQUcsS0FBSyxPQUFPLEVBQ3ZGLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDTixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUF5QyxDQUFDLElBQUksS0FBSyxhQUFhLENBQzVHO2FBQ0EsS0FBSyxDQUFDLG1CQUFtQixDQUFDO2FBQzFCLEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDVixLQUFLLEVBQUUsK0JBQStCO1lBQ3RDLElBQUksRUFBRSxpQkFBaUI7WUFDdkIsU0FBUyxFQUFFLDJCQUEyQjtZQUN0QyxPQUFPLEVBQUUsRUFBRTtTQUNaLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxPQUFPLEtBQUs7U0FDVCxJQUFJLENBQ0gsa0JBQWtCLFNBQVMsQ0FBQyxRQUFRLGVBQWUsU0FBUyxDQUFDLFdBQVcsR0FBRyxLQUFLLE9BQU8sRUFDdkYsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQXlDLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FDNUc7U0FDQSxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3JCLE1BQU0sU0FBUyxHQUFHLFlBQVksRUFBRSxDQUFDO1FBQ2pDLE1BQU0sZUFBZSxHQUFHLE1BQU0sc0JBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUM3RyxNQUFNLFlBQVksR0FBeUM7WUFDekQsSUFBSSxFQUFFLGNBQWM7WUFDcEIsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRTtTQUNoQyxDQUFDO1FBQ0YsTUFBTSxRQUFRLEdBQUcsV0FBVyxLQUFLLHNCQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztRQUNuRixPQUFPO1lBQ0wsV0FBVyxFQUFFLFNBQVMsQ0FBQyxXQUFXO1lBQ2xDLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ1Y7b0JBQ0UsZUFBZSxFQUFFO3dCQUNmOzRCQUNFLElBQUksRUFBRSxlQUFlOzRCQUNyQixFQUFFLEVBQUUsNkJBQWtCLENBQUMsS0FBSzs0QkFDNUIsS0FBSyxFQUFFLGFBQWE7eUJBQ3JCO3dCQUNEOzRCQUNFLElBQUksRUFBRSw2QkFBa0IsQ0FBQyxLQUFLOzRCQUM5QixFQUFFLEVBQUUsZUFBZTs0QkFDbkIsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDO3lCQUNwQztxQkFDRjtpQkFDRjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVELEtBQUssVUFBVSw2Q0FBNkMsQ0FDMUQsU0FBb0IsRUFDcEIsY0FBMkIsc0JBQVcsQ0FBQyxFQUFFLEVBQ3pDLGdCQUE2QyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQ2xFLG1CQUFtQixHQUFHLENBQUMsRUFDdkIsaUJBQWlCLEdBQUcsS0FBSztJQUV6QixNQUFNLEtBQUssR0FBRyxXQUFXLEtBQUssc0JBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUM7SUFDdEYsTUFBTSxlQUFlLEdBQUcsYUFBYSxLQUFLLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsNkJBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyw2QkFBa0IsQ0FBQyxNQUFNLENBQUM7SUFDdEgsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFFNUMsSUFBSSxtQkFBbUIsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUM1QixLQUFLO2FBQ0YsSUFBSSxDQUNILGtCQUFrQixTQUFTLENBQUMsUUFBUSxlQUFlLFNBQVMsQ0FBQyxXQUFXLEdBQUcsS0FBSyxPQUFPLEVBQ3ZGLENBQUMsSUFBMkIsRUFBRSxFQUFFLENBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQXlDLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FDNUc7YUFDQSxLQUFLLENBQUMsbUJBQW1CLENBQUM7YUFDMUIsS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNWLEtBQUssRUFBRSwrQkFBK0I7WUFDdEMsSUFBSSxFQUFFLGlCQUFpQjtZQUN2QixTQUFTLEVBQUUsMkJBQTJCO1lBQ3RDLE9BQU8sRUFBRSxFQUFFO1NBQ1osQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE9BQU8sS0FBSztTQUNULElBQUksQ0FDSCxrQkFBa0IsU0FBUyxDQUFDLFFBQVEsZUFBZSxTQUFTLENBQUMsV0FBVyxHQUFHLEtBQUssT0FBTyxFQUN2RixDQUFDLElBQTJCLEVBQUUsRUFBRSxDQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUF5QyxDQUFDLElBQUksS0FBSyxhQUFhLENBQzVHO1NBQ0EsS0FBSyxDQUNKLEdBQUcsRUFDSCxpQkFBaUI7UUFDZixDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsR0FBRyxTQUFTLENBQUMsV0FBVyxhQUFhLEVBQUU7UUFDeEQsQ0FBQyxDQUFDO1lBQ0UsV0FBVyxFQUFFLFNBQVMsQ0FBQyxXQUFXO1lBQ2xDLGVBQWUsRUFBRTtnQkFDZjtvQkFDRSxJQUFJLEVBQUUsZUFBZTtvQkFDckIsRUFBRSxFQUFFLDZCQUFrQixDQUFDLEtBQUs7b0JBQzVCLEtBQUssRUFBRSxhQUFhO2lCQUNyQjthQUNGO1NBQ0YsQ0FDTixDQUFDO0FBQ04sQ0FBQztBQUVELEtBQUssVUFBVSxpQkFBaUIsQ0FBQyxTQUFvQixFQUFFLGNBQTJCLHNCQUFXLENBQUMsRUFBRTtJQUM5RixNQUFNLEtBQUssR0FBRyxXQUFXLEtBQUssc0JBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUM7SUFDdEYsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUM7U0FDakMsSUFBSSxDQUFDLGtCQUFrQixTQUFTLENBQUMsUUFBUSxlQUFlLFNBQVMsQ0FBQyxXQUFXLEdBQUcsS0FBSyxPQUFPLENBQUM7U0FDN0YsS0FBSyxDQUFDLEdBQUcsRUFBRTtRQUNWLFdBQVcsRUFBRSxTQUFTLENBQUMsV0FBVztLQUNuQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0IHtcbiAgQmFzZUNvaW4sXG4gIEJpdGdvR1BHUHVibGljS2V5LFxuICBjb21tb24sXG4gIEVDRFNBVXRpbHMsXG4gIEVERFNBVXRpbHMsXG4gIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICBSZXF1ZXN0VHJhY2VyLFxuICBSZXF1ZXN0VHlwZSxcbiAgU2lnbmF0dXJlU2hhcmVSZWNvcmQsXG4gIFNpZ25hdHVyZVNoYXJlVHlwZSxcbiAgVHhSZXF1ZXN0LFxuICBXYWxsZXQsXG59IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBFZGRzYU1QU0RzZywgTVBTQ29tbXMsIE1QU1R5cGVzLCBNUFNVdGlsIH0gZnJvbSAnQGJpdGdvL3Nkay1saWItbXBjJztcbmltcG9ydCAqIGFzIG9wZW5wZ3AgZnJvbSAnb3BlbnBncCc7XG5pbXBvcnQgbm9jayA9IHJlcXVpcmUoJ25vY2snKTtcbmltcG9ydCB7IFRlc3RhYmxlQkcsIFRlc3RCaXRHbyB9IGZyb20gJ0BiaXRnby9zZGstdGVzdCc7XG5pbXBvcnQge1xuICBFZGRzYU1QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDFJbnB1dCxcbiAgRWRkc2FNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQxT3V0cHV0LFxuICBFZGRzYU1QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDJJbnB1dCxcbiAgRWRkc2FNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQyT3V0cHV0LFxuICBFZGRzYU1QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDNJbnB1dCxcbn0gZnJvbSAnQGJpdGdvL3B1YmxpYy10eXBlcyc7XG5pbXBvcnQgeyBCaXRHbyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3NyYyc7XG5cbmNvbnN0IE1QQ3YyUGFydGllc0VudW0gPSBFQ0RTQVV0aWxzLk1QQ3YyUGFydGllc0VudW07XG5cbmludGVyZmFjZSBTaWduYXR1cmVTaGFyZUFwaUJvZHkge1xuICBzaWduYXR1cmVTaGFyZXM6IFNpZ25hdHVyZVNoYXJlUmVjb3JkW107XG4gIHNpZ25lckdwZ1B1YmxpY0tleTogc3RyaW5nO1xufVxuXG5kZXNjcmliZSgnc2lnblR4UmVxdWVzdDonLCBmdW5jdGlvbiAoKSB7XG4gIGxldCB0c3NVdGlsczogRUREU0FVdGlscy5FZGRzYU1QQ3YyVXRpbHM7XG4gIGxldCB3YWxsZXQ6IFdhbGxldDtcbiAgbGV0IGJpdGdvOiBUZXN0YWJsZUJHICYgQml0R287XG4gIGxldCBiYXNlQ29pbjogQmFzZUNvaW47XG4gIGxldCBiaXRnb0dwZ0tleTogb3BlbnBncC5TZXJpYWxpemVkS2V5UGFpcjxzdHJpbmc+ICYgeyByZXZvY2F0aW9uQ2VydGlmaWNhdGU6IHN0cmluZyB9O1xuICBsZXQgYml0Z29QcnZLZXlPYmo6IG9wZW5wZ3AuUHJpdmF0ZUtleTtcbiAgY29uc3QgY29pbk5hbWUgPSAnc29sJztcblxuICBjb25zdCByZXFJZCA9IG5ldyBSZXF1ZXN0VHJhY2VyKCk7XG4gIGNvbnN0IHR4UmVxdWVzdElkID0gJ3JhbmRvbVR4UmVxSWQnO1xuICBjb25zdCBzaWduYWJsZUhleCA9XG4gICAgJzAyMDEwMjA2YzJkNWI1ZjRmYjlhOWJjZDhhMmYzMDNlNGQwNmY3OGQ4ZGVkMzAwNzEzZjQ1NmRhMmFiZmYwYjNlYTAxODVhYTA1MWEzNGJjOGFjZDQzODc2Mzk3NmY5Njg3NjExNTA1MGY3MzgyODU1MzU2NmQxMTFkN2FjOGJmZmViZjU4N2M0ZjVmNTk4N2JmZTI2YWE2NjAxM2VmZDk2ZDM2MzYwZjJiNDMzNmM5MWY5OTMyNTlmYjU2MDUxMzA1NjE0ZDQyZjJlYTEzZjhmZjlkNzk1OGRiZjI2OWM2ZTM2YmZkZjVjYjVjNDNkZTRiNGUxZDNlZmI3ZGFiM2Q1ZDAyODYwNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNmE3ZDUxNzE5MmM1NjhlZTA4YTg0NWY3M2QyOTc4OGNmMDM1YzMxNDViMjFhYjM0NGQ4MDYyZWE5NDAwMDAwM2E2MjFmNmQxY2M0YjhmYjJhNzM5YWEwOGU0MDM0ZGEwZmM1ODhlY2UzYmQ4NTc2MzBkZTMwZjdlZGRlNDVkZDAyMDQwMzAyMDUwMTA0MDQwMDAwMDAwNDAyMDAwMzBjMDIwMDAwMDBmMGEyOWEzYjAwMDAwMDAwJztcbiAgY29uc3Qgc2VyaWFsaXplZFR4SGV4ID0gYDAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzYmM5ZGYwYjM5N2JlYzJlZDNiNjQ0NGE4YzMzZjM4MjY3Y2MwOGI1ZmIyYTdkMzdlMjZiNmM0ODdlMjZkMTViN2MwNzgzMGViNzhlMjZhODhkYjVkZTRhYTY5ODZhMzI3ZjA5YWVkOGMwMTUzM2U1Yjk3Mjc0OGRkZjYwYjgwZiR7c2lnbmFibGVIZXh9YDtcbiAgY29uc3QgbWVzc2FnZVJhdyA9ICdUT08gTUFOWSBTRUNSRVRTJztcbiAgY29uc3QgbWVzc2FnZUVuY29kZWQgPSBCdWZmZXIuZnJvbShtZXNzYWdlUmF3KS50b1N0cmluZygnaGV4Jyk7XG4gIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgIHJlY2lwaWVudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzczogJ0hNRWdiUjRTMmhMS2ZzdDJWWlVWcEhWVXU0RmlvRlB5VzVpVXVKdlpkTXZzJyxcbiAgICAgICAgYW1vdW50OiAnOTk5OTkwMDAwJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcbiAgY29uc3QgdHhSZXF1ZXN0OiBUeFJlcXVlc3QgPSB7XG4gICAgdHhSZXF1ZXN0SWQsXG4gICAgZW50ZXJwcmlzZUlkOiAnNDUxN2FiZmItZjU2Ny00YjdhLTlmOTEtNDA3NTA5ZDI5NDAzJyxcbiAgICB0cmFuc2FjdGlvbnM6IFtcbiAgICAgIHtcbiAgICAgICAgdW5zaWduZWRUeDoge1xuICAgICAgICAgIHNlcmlhbGl6ZWRUeEhleCxcbiAgICAgICAgICBzaWduYWJsZUhleCxcbiAgICAgICAgICBkZXJpdmF0aW9uUGF0aDogJ20vMCcsIC8vIE5lZWRzIHRoaXMgd2hlbiBrZXkgZGVyaXZhdGlvbiBpcyBzdXBwb3J0ZWRcbiAgICAgICAgfSxcbiAgICAgICAgc3RhdGU6ICdwZW5kaW5nU2lnbmF0dXJlJyxcbiAgICAgICAgc2lnbmF0dXJlU2hhcmVzOiBbXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICB1bnNpZ25lZFR4czogW10sXG4gICAgZGF0ZTogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGludGVudDogeyBpbnRlbnRUeXBlOiAncGF5bWVudCcgfSxcbiAgICBsYXRlc3Q6IHRydWUsXG4gICAgc3RhdGU6ICdwZW5kaW5nVXNlclNpZ25hdHVyZScsXG4gICAgd2FsbGV0VHlwZTogJ2hvdCcsXG4gICAgd2FsbGV0SWQ6ICd3YWxsZXRJZCcsXG4gICAgcG9saWNpZXNDaGVja2VkOiB0cnVlLFxuICAgIHZlcnNpb246IDEsXG4gICAgdXNlcklkOiAndXNlcklkJyxcbiAgICBhcGlWZXJzaW9uOiAnZnVsbCcsXG4gIH07XG5cbiAgY29uc3QgdHhSZXF1ZXN0Rm9yTWVzc2FnZVNpZ25pbmc6IFR4UmVxdWVzdCA9IHtcbiAgICB0eFJlcXVlc3RJZCxcbiAgICBlbnRlcnByaXNlSWQ6ICc0NTE3YWJmYi1mNTY3LTRiN2EtOWY5MS00MDc1MDlkMjk0MDMnLFxuICAgIG1lc3NhZ2VzOiBbXG4gICAgICB7XG4gICAgICAgIG1lc3NhZ2VSYXcsXG4gICAgICAgIG1lc3NhZ2VFbmNvZGVkLFxuICAgICAgICBkZXJpdmF0aW9uUGF0aDogJ20vMCcsXG4gICAgICAgIHN0YXRlOiAncGVuZGluZ1NpZ25hdHVyZScsXG4gICAgICAgIHNpZ25hdHVyZVNoYXJlczogW10sXG4gICAgICB9LFxuICAgIF0sXG4gICAgdW5zaWduZWRUeHM6IFtdLFxuICAgIGRhdGU6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBpbnRlbnQ6IHsgaW50ZW50VHlwZTogJ3BheW1lbnQnIH0sXG4gICAgbGF0ZXN0OiB0cnVlLFxuICAgIHN0YXRlOiAncGVuZGluZ1VzZXJTaWduYXR1cmUnLFxuICAgIHdhbGxldFR5cGU6ICdob3QnLFxuICAgIHdhbGxldElkOiAnd2FsbGV0SWQnLFxuICAgIHBvbGljaWVzQ2hlY2tlZDogdHJ1ZSxcbiAgICB2ZXJzaW9uOiAxLFxuICAgIHVzZXJJZDogJ3VzZXJJZCcsXG4gICAgYXBpVmVyc2lvbjogJ2Z1bGwnLFxuICB9O1xuXG4gIGxldCB1c2VyS2V5U2hhcmU6IEJ1ZmZlcjtcbiAgbGV0IGJhY2t1cEtleVNoYXJlOiBCdWZmZXI7XG4gIGxldCBiaXRnb0tleVNoYXJlOiBCdWZmZXI7XG5cbiAgYmVmb3JlKGFzeW5jICgpID0+IHtcbiAgICBiaXRnbyA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHbywgeyBlbnY6ICdtb2NrJyB9KTtcbiAgICBiaXRnby5pbml0aWFsaXplVGVzdFZhcnMoKTtcbiAgICBjb25zdCBiZ1VybCA9IGNvbW1vbi5FbnZpcm9ubWVudHNbYml0Z28uZ2V0RW52KCldLnVyaTtcbiAgICBiaXRnb0dwZ0tleSA9IGF3YWl0IG9wZW5wZ3AuZ2VuZXJhdGVLZXkoe1xuICAgICAgdXNlcklEczogW3sgbmFtZTogJ2JpdGdvJywgZW1haWw6ICdiaXRnb0B0ZXN0LmNvbScgfV0sXG4gICAgICBjdXJ2ZTogJ2VkMjU1MTknLFxuICAgICAgZm9ybWF0OiAnYXJtb3JlZCcsXG4gICAgfSk7XG4gICAgYml0Z29QcnZLZXlPYmogPSBhd2FpdCBvcGVucGdwLnJlYWRQcml2YXRlS2V5KHsgYXJtb3JlZEtleTogYml0Z29HcGdLZXkucHJpdmF0ZUtleSB9KTtcbiAgICBjb25zdCBjb25zdGFudHMgPSB7XG4gICAgICBtcGM6IHtcbiAgICAgICAgYml0Z29QdWJsaWNLZXk6IGJpdGdvR3BnS2V5LnB1YmxpY0tleSxcbiAgICAgICAgYml0Z29FZGRzYU1wY3YyUHVibGljS2V5OiBiaXRnb0dwZ0tleS5wdWJsaWNLZXksXG4gICAgICB9LFxuICAgIH07XG4gICAgbm9jayhiZ1VybCkuZ2V0KCcvYXBpL3YxL2NsaWVudC9jb25zdGFudHMnKS50aW1lcygyMCkucmVwbHkoMjAwLCB7IHR0bDogMzYwMCwgY29uc3RhbnRzIH0pO1xuXG4gICAgY29uc3QgW3VzZXJEa2csIGJhY2t1cERrZywgYml0Z29Ea2ddID0gYXdhaXQgTVBTVXRpbC5nZW5lcmF0ZUVkRHNhREtHS2V5U2hhcmVzKCk7XG4gICAgdXNlcktleVNoYXJlID0gdXNlckRrZy5nZXRLZXlTaGFyZSgpO1xuICAgIGJhY2t1cEtleVNoYXJlID0gYmFja3VwRGtnLmdldEtleVNoYXJlKCk7XG4gICAgYml0Z29LZXlTaGFyZSA9IGJpdGdvRGtnLmdldEtleVNoYXJlKCk7XG5cbiAgICBiYXNlQ29pbiA9IGJpdGdvLmNvaW4oY29pbk5hbWUpO1xuXG4gICAgY29uc3Qgd2FsbGV0RGF0YSA9IHtcbiAgICAgIGlkOiB0eFJlcXVlc3Qud2FsbGV0SWQsXG4gICAgICBlbnRlcnByaXNlOiB0eFJlcXVlc3QuZW50ZXJwcmlzZUlkLFxuICAgICAgY29pbjogY29pbk5hbWUsXG4gICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgcm9vdEFkZHJlc3M6ICdFN1o2cEZmVWhqeDJkRmpkQjlXczJLbktlcFhvcTYyVGVGNXVhQ1ZTdnFRVicsXG4gICAgICB9LFxuICAgICAgbXVsdGlzaWdUeXBlOiAndHNzJyxcbiAgICAgIG11bHRpc2lnVHlwZVZlcnNpb246ICdNUEN2MicsXG4gICAgfTtcbiAgICB3YWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCBiYXNlQ29pbiwgd2FsbGV0RGF0YSk7XG4gICAgdHNzVXRpbHMgPSBuZXcgRUREU0FVdGlscy5FZGRzYU1QQ3YyVXRpbHMoYml0Z28sIGJhc2VDb2luLCB3YWxsZXQpO1xuICB9KTtcblxuICBiZWZvcmVFYWNoKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBhd2FpdCBub2NrR2V0Qml0Z29QdWJsaWNLZXlCYXNlZE9uRmVhdHVyZUZsYWdzKGNvaW5OYW1lLCB0eFJlcXVlc3QuZW50ZXJwcmlzZUlkISwgYml0Z29HcGdLZXkpO1xuICB9KTtcblxuICBhZnRlcihmdW5jdGlvbiAoKSB7XG4gICAgbm9jay5jbGVhbkFsbCgpO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIG5vY2suY2xlYW5BbGwoKTtcbiAgfSk7XG5cbiAgaXQoJ3N1Y2Nlc3NmdWxseSBzaWducyBhIHR4UmVxdWVzdCB3aXRoIHVzZXIga2V5IGZvciBhbiBtcHMgaG90IHdhbGxldCB3aXRoIFdQJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IG5vY2tQcm9taXNlcyA9IGF3YWl0IGdldE5vY2tQcm9taXNlc0ZvckVkZHNhU2lnbmluZyh0eFJlcXVlc3QpO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKG5vY2tQcm9taXNlcyk7XG5cbiAgICBjb25zdCB1c2VyUHJ2QmFzZTY0ID0gQnVmZmVyLmZyb20odXNlcktleVNoYXJlKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgYXdhaXQgdHNzVXRpbHMuc2lnblR4UmVxdWVzdCh7XG4gICAgICB0eFJlcXVlc3QsXG4gICAgICBwcnY6IHVzZXJQcnZCYXNlNjQsXG4gICAgICByZXFJZCxcbiAgICAgIHR4UGFyYW1zLFxuICAgIH0pO1xuICAgIG5vY2tQcm9taXNlc1swXS5pc0RvbmUoKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIG5vY2tQcm9taXNlc1sxXS5pc0RvbmUoKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIG5vY2tQcm9taXNlc1syXS5pc0RvbmUoKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIG5vY2tQcm9taXNlc1szXS5pc0RvbmUoKS5zaG91bGQuYmUudHJ1ZSgpO1xuICB9KTtcblxuICBpdCgnc3VjY2Vzc2Z1bGx5IHNpZ25zIGEgdHhSZXF1ZXN0IHdpdGggYmFja3VwIGtleSBmb3IgYW4gbXBzIGhvdCB3YWxsZXQgd2l0aCBXUCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBub2NrUHJvbWlzZXMgPSBhd2FpdCBnZXROb2NrUHJvbWlzZXNGb3JFZGRzYVNpZ25pbmcodHhSZXF1ZXN0LCBSZXF1ZXN0VHlwZS50eCwgMCwgTVBDdjJQYXJ0aWVzRW51bS5CQUNLVVApO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKG5vY2tQcm9taXNlcyk7XG5cbiAgICBjb25zdCBiYWNrdXBQcnZCYXNlNjQgPSBCdWZmZXIuZnJvbShiYWNrdXBLZXlTaGFyZSkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgIGF3YWl0IHRzc1V0aWxzLnNpZ25UeFJlcXVlc3Qoe1xuICAgICAgdHhSZXF1ZXN0LFxuICAgICAgcHJ2OiBiYWNrdXBQcnZCYXNlNjQsXG4gICAgICBtcGN2MlBhcnR5SWQ6IE1QQ3YyUGFydGllc0VudW0uQkFDS1VQLFxuICAgICAgcmVxSWQsXG4gICAgICB0eFBhcmFtcyxcbiAgICB9KTtcbiAgICBub2NrUHJvbWlzZXNbMF0uaXNEb25lKCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICBub2NrUHJvbWlzZXNbMV0uaXNEb25lKCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICBub2NrUHJvbWlzZXNbMl0uaXNEb25lKCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICBub2NrUHJvbWlzZXNbM10uaXNEb25lKCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgfSk7XG5cbiAgaXQoJ3N1Y2Nlc3NmdWxseSBzaWducyBhIHR4UmVxdWVzdCB3aXRoIGEgbWVzc2FnZSBmb3IgYW4gbXBzIGhvdCB3YWxsZXQgd2l0aCBXUCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBub2NrUHJvbWlzZXMgPSBhd2FpdCBnZXROb2NrUHJvbWlzZXNGb3JFZGRzYVNpZ25pbmcodHhSZXF1ZXN0Rm9yTWVzc2FnZVNpZ25pbmcsIFJlcXVlc3RUeXBlLm1lc3NhZ2UpO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKG5vY2tQcm9taXNlcyk7XG5cbiAgICBjb25zdCB1c2VyUHJ2QmFzZTY0ID0gQnVmZmVyLmZyb20odXNlcktleVNoYXJlKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgYXdhaXQgdHNzVXRpbHMuc2lnblR4UmVxdWVzdEZvck1lc3NhZ2Uoe1xuICAgICAgdHhSZXF1ZXN0OiB0eFJlcXVlc3RGb3JNZXNzYWdlU2lnbmluZyxcbiAgICAgIHBydjogdXNlclBydkJhc2U2NCxcbiAgICAgIHJlcUlkLFxuICAgICAgbWVzc2FnZVJhdzogdHhSZXF1ZXN0Rm9yTWVzc2FnZVNpZ25pbmcubWVzc2FnZXMhWzBdLm1lc3NhZ2VSYXcsXG4gICAgICBidWZmZXJUb1NpZ246IEJ1ZmZlci5mcm9tKG1lc3NhZ2VFbmNvZGVkLCAnaGV4JyksXG4gICAgfSk7XG4gICAgbm9ja1Byb21pc2VzWzBdLmlzRG9uZSgpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgbm9ja1Byb21pc2VzWzFdLmlzRG9uZSgpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgbm9ja1Byb21pc2VzWzJdLmlzRG9uZSgpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgbm9ja1Byb21pc2VzWzNdLmlzRG9uZSgpLnNob3VsZC5iZS50cnVlKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgcm91bmQgMSByZXNwb25zZSBoYXMgd3JvbmcgdHlwZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBub2NrKCdodHRwczovL2JpdGdvLmZha2V1cmwnKVxuICAgICAgLnBvc3QoYC9hcGkvdjIvd2FsbGV0LyR7dHhSZXF1ZXN0LndhbGxldElkfS90eHJlcXVlc3RzLyR7dHhSZXF1ZXN0LnR4UmVxdWVzdElkfS90cmFuc2FjdGlvbnMvMC9zaWduYClcbiAgICAgIC5yZXBseSgyMDAsIHtcbiAgICAgICAgdHhSZXF1ZXN0SWQsXG4gICAgICAgIHRyYW5zYWN0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNpZ25hdHVyZVNoYXJlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZnJvbTogU2lnbmF0dXJlU2hhcmVUeXBlLkJJVEdPLFxuICAgICAgICAgICAgICAgIHRvOiBTaWduYXR1cmVTaGFyZVR5cGUuVVNFUixcbiAgICAgICAgICAgICAgICBzaGFyZTogSlNPTi5zdHJpbmdpZnkoeyB0eXBlOiAncm91bmQyT3V0cHV0JywgZGF0YToge30gfSksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgIGNvbnN0IHVzZXJQcnZCYXNlNjQgPSBCdWZmZXIuZnJvbSh1c2VyS2V5U2hhcmUpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICBhd2FpdCB0c3NVdGlsc1xuICAgICAgLnNpZ25UeFJlcXVlc3QoeyB0eFJlcXVlc3QsIHBydjogdXNlclBydkJhc2U2NCwgcmVxSWQsIHR4UGFyYW1zIH0pXG4gICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvVW5leHBlY3RlZCBzaWduYXR1cmUgc2hhcmUgcmVzcG9uc2UvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiByb3VuZCAyIHJlc3BvbnNlIGhhcyB3cm9uZyB0eXBlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IG1lc3NhZ2VCdWZmZXIgPSBCdWZmZXIuZnJvbShzaWduYWJsZUhleCwgJ2hleCcpO1xuICAgIGNvbnN0IGJpdGdvRHNnID0gbmV3IEVkZHNhTVBTRHNnLkRTRyhNUEN2MlBhcnRpZXNFbnVtLkJJVEdPKTtcbiAgICBhd2FpdCBiaXRnb0RzZy5pbml0RHNnKFxuICAgICAgYml0Z29LZXlTaGFyZSxcbiAgICAgIG1lc3NhZ2VCdWZmZXIsXG4gICAgICB0eFJlcXVlc3QudHJhbnNhY3Rpb25zIVswXS51bnNpZ25lZFR4LmRlcml2YXRpb25QYXRoLFxuICAgICAgTVBDdjJQYXJ0aWVzRW51bS5VU0VSXG4gICAgKTtcbiAgICBjb25zdCBiaXRnb01zZzEgPSBiaXRnb0RzZy5nZXRGaXJzdE1lc3NhZ2UoKTtcblxuICAgIC8vIFJvdW5kIDE6IHJldHVybiBhIHZhbGlkIHJvdW5kMU91dHB1dCBzbyB0aGUgb3JjaGVzdHJhdGlvbiBjYW4gcHJvY2VlZFxuICAgIG5vY2soJ2h0dHBzOi8vYml0Z28uZmFrZXVybCcpXG4gICAgICAucG9zdChcbiAgICAgICAgYC9hcGkvdjIvd2FsbGV0LyR7dHhSZXF1ZXN0LndhbGxldElkfS90eHJlcXVlc3RzLyR7dHhSZXF1ZXN0LnR4UmVxdWVzdElkfS90cmFuc2FjdGlvbnMvMC9zaWduYCxcbiAgICAgICAgKGJvZHkpID0+XG4gICAgICAgICAgKEpTT04ucGFyc2UoYm9keS5zaWduYXR1cmVTaGFyZXNbMF0uc2hhcmUpIGFzIEVkZHNhTVBDdjJTaWduYXR1cmVTaGFyZVJvdW5kMUlucHV0KS50eXBlID09PSAncm91bmQxSW5wdXQnXG4gICAgICApXG4gICAgICAucmVwbHkoXG4gICAgICAgIDIwMCxcbiAgICAgICAgYXN5bmMgKF91cmk6IHN0cmluZywgYm9keTogeyBzaWduYXR1cmVTaGFyZXM6IFNpZ25hdHVyZVNoYXJlUmVjb3JkW107IHNpZ25lckdwZ1B1YmxpY0tleTogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICBjb25zdCBwYXJzZWRTaGFyZSA9IEpTT04ucGFyc2UoYm9keS5zaWduYXR1cmVTaGFyZXNbMF0uc2hhcmUpIGFzIEVkZHNhTVBDdjJTaWduYXR1cmVTaGFyZVJvdW5kMUlucHV0O1xuICAgICAgICAgIGNvbnN0IHVzZXJNc2cxQnl0ZXMgPSBCdWZmZXIuZnJvbShwYXJzZWRTaGFyZS5kYXRhLm1zZzEubWVzc2FnZSwgJ2Jhc2U2NCcpO1xuICAgICAgICAgIGNvbnN0IHVzZXJEZXNlcmlhbGl6ZWRNc2cxOiBNUFNUeXBlcy5EZXNlcmlhbGl6ZWRNZXNzYWdlID0ge1xuICAgICAgICAgICAgZnJvbTogTVBDdjJQYXJ0aWVzRW51bS5VU0VSLFxuICAgICAgICAgICAgcGF5bG9hZDogbmV3IFVpbnQ4QXJyYXkodXNlck1zZzFCeXRlcyksXG4gICAgICAgICAgfTtcbiAgICAgICAgICAvLyBBZHZhbmNlIGJpdGdvIHNlc3Npb24gKHdlIGRvbid0IG5lZWQgYml0Z29Nc2cyIGZvciB0aGlzIHRlc3QpXG4gICAgICAgICAgYml0Z29Ec2cuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyhbYml0Z29Nc2cxLCB1c2VyRGVzZXJpYWxpemVkTXNnMV0pO1xuICAgICAgICAgIGNvbnN0IGJpdGdvU2lnbmVkTXNnMSA9IGF3YWl0IE1QU0NvbW1zLmRldGFjaFNpZ25NcHNNZXNzYWdlKEJ1ZmZlci5mcm9tKGJpdGdvTXNnMS5wYXlsb2FkKSwgYml0Z29QcnZLZXlPYmopO1xuICAgICAgICAgIGNvbnN0IHJvdW5kMU91dHB1dDogRWRkc2FNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQxT3V0cHV0ID0ge1xuICAgICAgICAgICAgdHlwZTogJ3JvdW5kMU91dHB1dCcsXG4gICAgICAgICAgICBkYXRhOiB7IG1zZzE6IGJpdGdvU2lnbmVkTXNnMSB9LFxuICAgICAgICAgIH07XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR4UmVxdWVzdElkLFxuICAgICAgICAgICAgdHJhbnNhY3Rpb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaWduYXR1cmVTaGFyZXM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogU2lnbmF0dXJlU2hhcmVUeXBlLkJJVEdPLFxuICAgICAgICAgICAgICAgICAgICB0bzogU2lnbmF0dXJlU2hhcmVUeXBlLlVTRVIsXG4gICAgICAgICAgICAgICAgICAgIHNoYXJlOiBKU09OLnN0cmluZ2lmeShyb3VuZDFPdXRwdXQpLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgLy8gUm91bmQgMjogcmV0dXJuIGEgc2hhcmUgd2l0aCB3cm9uZyB0eXBlIChyb3VuZDNPdXRwdXQgaW5zdGVhZCBvZiByb3VuZDJPdXRwdXQpXG4gICAgbm9jaygnaHR0cHM6Ly9iaXRnby5mYWtldXJsJylcbiAgICAgIC5wb3N0KFxuICAgICAgICBgL2FwaS92Mi93YWxsZXQvJHt0eFJlcXVlc3Qud2FsbGV0SWR9L3R4cmVxdWVzdHMvJHt0eFJlcXVlc3QudHhSZXF1ZXN0SWR9L3RyYW5zYWN0aW9ucy8wL3NpZ25gLFxuICAgICAgICAoYm9keSkgPT5cbiAgICAgICAgICAoSlNPTi5wYXJzZShib2R5LnNpZ25hdHVyZVNoYXJlc1swXS5zaGFyZSkgYXMgRWRkc2FNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQySW5wdXQpLnR5cGUgPT09ICdyb3VuZDJJbnB1dCdcbiAgICAgIClcbiAgICAgIC5yZXBseSgyMDAsIHtcbiAgICAgICAgdHhSZXF1ZXN0SWQsXG4gICAgICAgIHRyYW5zYWN0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNpZ25hdHVyZVNoYXJlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZnJvbTogU2lnbmF0dXJlU2hhcmVUeXBlLlVTRVIsXG4gICAgICAgICAgICAgICAgdG86IFNpZ25hdHVyZVNoYXJlVHlwZS5CSVRHTyxcbiAgICAgICAgICAgICAgICBzaGFyZTogJ3BsYWNlaG9sZGVyJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGZyb206IFNpZ25hdHVyZVNoYXJlVHlwZS5CSVRHTyxcbiAgICAgICAgICAgICAgICB0bzogU2lnbmF0dXJlU2hhcmVUeXBlLlVTRVIsXG4gICAgICAgICAgICAgICAgc2hhcmU6IEpTT04uc3RyaW5naWZ5KHsgdHlwZTogJ3JvdW5kM091dHB1dCcsIGRhdGE6IHt9IH0pLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICBjb25zdCB1c2VyUHJ2QmFzZTY0ID0gQnVmZmVyLmZyb20odXNlcktleVNoYXJlKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgYXdhaXQgdHNzVXRpbHNcbiAgICAgIC5zaWduVHhSZXF1ZXN0KHsgdHhSZXF1ZXN0LCBwcnY6IHVzZXJQcnZCYXNlNjQsIHJlcUlkLCB0eFBhcmFtcyB9KVxuICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL1VuZXhwZWN0ZWQgc2lnbmF0dXJlIHNoYXJlIHJlc3BvbnNlLiBVbmFibGUgdG8gcGFyc2UgZGF0YS4vKTtcbiAgfSk7XG5cbiAgaXQoJ3N1Y2Nlc3NmdWxseSBzaWducyBhIHR4UmVxdWVzdCBhZnRlciByZWNlaXZpbmcgbXVsdGlwbGUgNDI5IGVycm9ycyBpbiByb3VuZCAyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IG5vY2tQcm9taXNlcyA9IGF3YWl0IGdldE5vY2tQcm9taXNlc0ZvckVkZHNhU2lnbmluZyh0eFJlcXVlc3QsIFJlcXVlc3RUeXBlLnR4LCAzKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChub2NrUHJvbWlzZXMpO1xuXG4gICAgY29uc3QgdXNlclBydkJhc2U2NCA9IEJ1ZmZlci5mcm9tKHVzZXJLZXlTaGFyZSkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgIGF3YWl0IHRzc1V0aWxzLnNpZ25UeFJlcXVlc3Qoe1xuICAgICAgdHhSZXF1ZXN0LFxuICAgICAgcHJ2OiB1c2VyUHJ2QmFzZTY0LFxuICAgICAgcmVxSWQsXG4gICAgICB0eFBhcmFtcyxcbiAgICB9KTtcbiAgICBub2NrUHJvbWlzZXNbMF0uaXNEb25lKCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICBub2NrUHJvbWlzZXNbMV0uaXNEb25lKCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICBub2NrUHJvbWlzZXNbMl0uaXNEb25lKCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICBub2NrUHJvbWlzZXNbM10uaXNEb25lKCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgfSk7XG5cbiAgaXQoJ3N1Y2Nlc3NmdWxseSBzaWducyBhIHR4UmVxdWVzdCBhZnRlciByZWNlaXZpbmcgbXVsdGlwbGUgNDI5IGVycm9ycyBpbiByb3VuZCAxJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IG5vY2tQcm9taXNlcyA9IGF3YWl0IGdldE5vY2tQcm9taXNlc0ZvckVkZHNhU2lnbmluZyh0eFJlcXVlc3QsIFJlcXVlc3RUeXBlLnR4LCAzLCBNUEN2MlBhcnRpZXNFbnVtLlVTRVIsIDEpO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKG5vY2tQcm9taXNlcyk7XG5cbiAgICBjb25zdCB1c2VyUHJ2QmFzZTY0ID0gQnVmZmVyLmZyb20odXNlcktleVNoYXJlKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgYXdhaXQgdHNzVXRpbHMuc2lnblR4UmVxdWVzdCh7XG4gICAgICB0eFJlcXVlc3QsXG4gICAgICBwcnY6IHVzZXJQcnZCYXNlNjQsXG4gICAgICByZXFJZCxcbiAgICAgIHR4UGFyYW1zLFxuICAgIH0pO1xuICAgIG5vY2tQcm9taXNlc1swXS5pc0RvbmUoKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIG5vY2tQcm9taXNlc1sxXS5pc0RvbmUoKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIG5vY2tQcm9taXNlc1syXS5pc0RvbmUoKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIG5vY2tQcm9taXNlc1szXS5pc0RvbmUoKS5zaG91bGQuYmUudHJ1ZSgpO1xuICB9KTtcblxuICBpdCgnc3VjY2Vzc2Z1bGx5IHNpZ25zIGEgdHhSZXF1ZXN0IGFmdGVyIHJlY2VpdmluZyBtdWx0aXBsZSA0MjkgZXJyb3JzIGluIHJvdW5kIDMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3Qgbm9ja1Byb21pc2VzID0gYXdhaXQgZ2V0Tm9ja1Byb21pc2VzRm9yRWRkc2FTaWduaW5nKHR4UmVxdWVzdCwgUmVxdWVzdFR5cGUudHgsIDMsIE1QQ3YyUGFydGllc0VudW0uVVNFUiwgMyk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwobm9ja1Byb21pc2VzKTtcblxuICAgIGNvbnN0IHVzZXJQcnZCYXNlNjQgPSBCdWZmZXIuZnJvbSh1c2VyS2V5U2hhcmUpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICBhd2FpdCB0c3NVdGlscy5zaWduVHhSZXF1ZXN0KHtcbiAgICAgIHR4UmVxdWVzdCxcbiAgICAgIHBydjogdXNlclBydkJhc2U2NCxcbiAgICAgIHJlcUlkLFxuICAgICAgdHhQYXJhbXMsXG4gICAgfSk7XG4gICAgbm9ja1Byb21pc2VzWzBdLmlzRG9uZSgpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgbm9ja1Byb21pc2VzWzFdLmlzRG9uZSgpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgbm9ja1Byb21pc2VzWzJdLmlzRG9uZSgpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgbm9ja1Byb21pc2VzWzNdLmlzRG9uZSgpLnNob3VsZC5iZS50cnVlKCk7XG4gIH0pO1xuXG4gIGl0KCdmYWlscyB0byBzaWduIGEgdHhSZXF1ZXN0IGFmdGVyIHJlY2VpdmluZyBvdmVyIDMgNDI5IGVycm9ycyBpbiByb3VuZCAyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IG5vY2tQcm9taXNlcyA9IGF3YWl0IGdldE5vY2tQcm9taXNlc0ZvckVkZHNhU2lnbmluZyh0eFJlcXVlc3QsIFJlcXVlc3RUeXBlLnR4LCA0KTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChub2NrUHJvbWlzZXMpO1xuXG4gICAgY29uc3QgdXNlclBydkJhc2U2NCA9IEJ1ZmZlci5mcm9tKHVzZXJLZXlTaGFyZSkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgIGF3YWl0IHRzc1V0aWxzXG4gICAgICAuc2lnblR4UmVxdWVzdCh7XG4gICAgICAgIHR4UmVxdWVzdCxcbiAgICAgICAgcHJ2OiB1c2VyUHJ2QmFzZTY0LFxuICAgICAgICByZXFJZCxcbiAgICAgICAgdHhQYXJhbXMsXG4gICAgICB9KVxuICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ1RvbyBtYW55IHJlcXVlc3RzLCBzbG93IGRvd24hJyk7XG4gICAgbm9ja1Byb21pc2VzWzBdLmlzRG9uZSgpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgbm9ja1Byb21pc2VzWzFdLmlzRG9uZSgpLnNob3VsZC5iZS5mYWxzZSgpO1xuICAgIG5vY2tQcm9taXNlc1syXS5pc0RvbmUoKS5zaG91bGQuYmUuZmFsc2UoKTtcbiAgICBub2NrUHJvbWlzZXNbM10uaXNEb25lKCkuc2hvdWxkLmJlLmZhbHNlKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgcm91bmQgMyByZXNwb25zZSBpcyBtYWxmb3JtZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3Qgbm9ja1Byb21pc2VzID0gYXdhaXQgZ2V0Tm9ja1Byb21pc2VzRm9yRWRkc2FTaWduaW5nKFxuICAgICAgdHhSZXF1ZXN0LFxuICAgICAgUmVxdWVzdFR5cGUudHgsXG4gICAgICAwLFxuICAgICAgTVBDdjJQYXJ0aWVzRW51bS5VU0VSLFxuICAgICAgMixcbiAgICAgIHRydWVcbiAgICApO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKG5vY2tQcm9taXNlcyk7XG5cbiAgICBjb25zdCB1c2VyUHJ2QmFzZTY0ID0gQnVmZmVyLmZyb20odXNlcktleVNoYXJlKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgYXdhaXQgdHNzVXRpbHNcbiAgICAgIC5zaWduVHhSZXF1ZXN0KHtcbiAgICAgICAgdHhSZXF1ZXN0LFxuICAgICAgICBwcnY6IHVzZXJQcnZCYXNlNjQsXG4gICAgICAgIHJlcUlkLFxuICAgICAgICB0eFBhcmFtcyxcbiAgICAgIH0pXG4gICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnSW52YWxpZCB0eFJlcXVlc3Qgb2JqZWN0IGFmdGVyIHJvdW5kIDMnKTtcbiAgICBub2NrUHJvbWlzZXNbMF0uaXNEb25lKCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICBub2NrUHJvbWlzZXNbMV0uaXNEb25lKCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICBub2NrUHJvbWlzZXNbMl0uaXNEb25lKCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICBub2NrUHJvbWlzZXNbM10uaXNEb25lKCkuc2hvdWxkLmJlLmZhbHNlKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXMgZ3VhcmQgKFdDSS0xMTExKScsIGZ1bmN0aW9uICgpIHtcbiAgICBsZXQgc2FuZGJveDogc2lub24uU2lub25TYW5kYm94O1xuXG4gICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBzYW5kYm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIHNhbmRib3gucmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Rocm93cyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciB3aGVuIHR4UGFyYW1zIGlzIGFic2VudCBhbmQgaW50ZW50IGhhcyBubyByZWNpcGllbnRzIChtYWxpY2lvdXMvZW1wdHktcmVjaXBpZW50IHBhdGgpJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gU2ltdWxhdGUgdGhlIHN0YWtpbmdBdXRob3JpemUgYXR0YWNrIHZlY3RvcjogaW50ZW50IGhhcyBubyByZWNpcGllbnRzXG4gICAgICAvLyBhbmQgaW50ZW50VHlwZSBpcyBub3Qgb24gdGhlIE5PX1JFQ0lQSUVOVF9UWF9UWVBFUyBhbGxvd2xpc3QuXG4gICAgICBjb25zdCBtYWxpY2lvdXNUeFJlcXVlc3Q6IFR4UmVxdWVzdCA9IHtcbiAgICAgICAgLi4udHhSZXF1ZXN0LFxuICAgICAgICBpbnRlbnQ6IHsgaW50ZW50VHlwZTogJ3N0YWtpbmdBdXRob3JpemUnIH0gYXMgYW55LFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHVzZXJQcnZCYXNlNjQgPSBCdWZmZXIuZnJvbSh1c2VyS2V5U2hhcmUpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICAgIGF3YWl0IHRzc1V0aWxzXG4gICAgICAgIC5zaWduVHhSZXF1ZXN0KHtcbiAgICAgICAgICB0eFJlcXVlc3Q6IG1hbGljaW91c1R4UmVxdWVzdCxcbiAgICAgICAgICBwcnY6IHVzZXJQcnZCYXNlNjQsXG4gICAgICAgICAgcmVxSWQsXG4gICAgICAgICAgLy8gTm8gdHhQYXJhbXMg4oCUIHRoZSByZS1zaWduIHBhdGggdGhhdCB3YXMgcHJldmlvdXNseSB2dWxuZXJhYmxlXG4gICAgICAgIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKEludmFsaWRUcmFuc2FjdGlvbkVycm9yKTtcbiAgICB9KTtcblxuICAgIGl0KCd0aHJvd3MgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3Igd2hlbiB0eFBhcmFtcyBoYXMgZW1wdHkgcmVjaXBpZW50cyBhbmQgaW50ZW50VHlwZSBpcyBub3QgYWxsb3dsaXN0ZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBtYWxpY2lvdXNUeFJlcXVlc3Q6IFR4UmVxdWVzdCA9IHtcbiAgICAgICAgLi4udHhSZXF1ZXN0LFxuICAgICAgICBpbnRlbnQ6IHsgaW50ZW50VHlwZTogJ3BheW1lbnQnIH0gYXMgYW55LFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHVzZXJQcnZCYXNlNjQgPSBCdWZmZXIuZnJvbSh1c2VyS2V5U2hhcmUpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICAgIGF3YWl0IHRzc1V0aWxzXG4gICAgICAgIC5zaWduVHhSZXF1ZXN0KHtcbiAgICAgICAgICB0eFJlcXVlc3Q6IG1hbGljaW91c1R4UmVxdWVzdCxcbiAgICAgICAgICBwcnY6IHVzZXJQcnZCYXNlNjQsXG4gICAgICAgICAgcmVxSWQsXG4gICAgICAgICAgdHhQYXJhbXM6IHsgcmVjaXBpZW50czogW10gfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IHRocm93IGZvciBhbGxvd2xpc3RlZCBuby1yZWNpcGllbnQgaW50ZW50VHlwZSAoZGVhY3RpdmF0ZSknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBzYW5kYm94LnN0dWIoYmFzZUNvaW4sICd2ZXJpZnlUcmFuc2FjdGlvbicpLnJlc29sdmVzKHRydWUpO1xuICAgICAgY29uc3Qgbm9ja1Byb21pc2VzID0gYXdhaXQgZ2V0Tm9ja1Byb21pc2VzRm9yRWRkc2FTaWduaW5nKHR4UmVxdWVzdCk7XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChub2NrUHJvbWlzZXMpO1xuXG4gICAgICBjb25zdCBub1JlY2lwaWVudFR4UmVxdWVzdDogVHhSZXF1ZXN0ID0ge1xuICAgICAgICAuLi50eFJlcXVlc3QsXG4gICAgICAgIGludGVudDogeyBpbnRlbnRUeXBlOiAnZGVhY3RpdmF0ZScgfSBhcyBhbnksXG4gICAgICB9O1xuICAgICAgY29uc3QgdXNlclBydkJhc2U2NCA9IEJ1ZmZlci5mcm9tKHVzZXJLZXlTaGFyZSkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAgYXdhaXQgdHNzVXRpbHMuc2lnblR4UmVxdWVzdCh7XG4gICAgICAgIHR4UmVxdWVzdDogbm9SZWNpcGllbnRUeFJlcXVlc3QsXG4gICAgICAgIHBydjogdXNlclBydkJhc2U2NCxcbiAgICAgICAgcmVxSWQsXG4gICAgICAgIC8vIE5vIHR4UGFyYW1zIOKAlCBsZWdpdGltYXRlIG5vLXJlY2lwaWVudCBmbG93XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdjb25zb2xpZGF0ZSBpbnRlbnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBJbnRlbnQgcmVjaXBpZW50IGFtb3VudCBpcyBhIGJ1aWxkLXRpbWUgc25hcHNob3QgdGhhdCBkcmlmdHMgZnJvbSB0aGUgc3dlcHQgYmFsYW5jZSBpbiB0aGUgdHguXG4gICAgICBjb25zdCBjb25zb2xpZGF0ZVR4UmVxdWVzdDogVHhSZXF1ZXN0ID0ge1xuICAgICAgICAuLi50eFJlcXVlc3QsXG4gICAgICAgIGludGVudDoge1xuICAgICAgICAgIGludGVudFR5cGU6ICdjb25zb2xpZGF0ZScsXG4gICAgICAgICAgY29uc29saWRhdGVJZDogJzY4YTdkNWQwYzY2ZTc0ZTIxNmI5NzE3M2JkNTU4YzZkJyxcbiAgICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGFkZHJlc3M6IHsgYWRkcmVzczogJ0hNRWdiUjRTMmhMS2ZzdDJWWlVWcEhWVXU0RmlvRlB5VzVpVXVKdlpkTXZzJyB9LFxuICAgICAgICAgICAgICBhbW91bnQ6IHsgdmFsdWU6ICc5OTk5ODUwMDAnLCBzeW1ib2w6ICdzb2wnIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICBpdCgndmVyaWZpZXMgc3dlZXAtdG8tcm9vdCBpbnN0ZWFkIG9mIHNuYXBzaG90IGludGVudCByZWNpcGllbnRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBGZWUgcGF5ZXIgc3RheXMgdGhlIG9yaWdpbmFsIHJvb3QsIHNvIHRoaXMgYWxzbyBjb3ZlcnMgdGhlIGNvbnNvbGlkYXRpb24gZmVlIHBheWVyIGV4ZW1wdGlvbi5cbiAgICAgICAgc2FuZGJveFxuICAgICAgICAgIC5zdHViKHdhbGxldCwgJ2NvaW5TcGVjaWZpYycpXG4gICAgICAgICAgLnJldHVybnMoeyByb290QWRkcmVzczogJ0hNRWdiUjRTMmhMS2ZzdDJWWlVWcEhWVXU0RmlvRlB5VzVpVXVKdlpkTXZzJywgY3VzdG9tQ2hhbmdlV2FsbGV0SWQ6ICcnIH0pO1xuICAgICAgICBjb25zdCB2ZXJpZnlTcHkgPSBzYW5kYm94LnNweShiYXNlQ29pbiwgJ3ZlcmlmeVRyYW5zYWN0aW9uJyk7XG4gICAgICAgIGNvbnN0IG5vY2tQcm9taXNlcyA9IGF3YWl0IGdldE5vY2tQcm9taXNlc0ZvckVkZHNhU2lnbmluZyhjb25zb2xpZGF0ZVR4UmVxdWVzdCk7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKG5vY2tQcm9taXNlcyk7XG5cbiAgICAgICAgYXdhaXQgdHNzVXRpbHMuc2lnblR4UmVxdWVzdCh7XG4gICAgICAgICAgdHhSZXF1ZXN0OiBjb25zb2xpZGF0ZVR4UmVxdWVzdCxcbiAgICAgICAgICBwcnY6IEJ1ZmZlci5mcm9tKHVzZXJLZXlTaGFyZSkudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgICAgICAgIHJlcUlkLFxuICAgICAgICB9KTtcblxuICAgICAgICB2ZXJpZnlTcHkuY2FsbGVkT25jZS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgICB2ZXJpZnlTcHkuZmlyc3RDYWxsLmFyZ3NbMF0uc2hvdWxkLmNvbnRhaW5EZWVwKHtcbiAgICAgICAgICB0eFByZWJ1aWxkOiB7IGNvbnNvbGlkYXRlSWQ6ICc2OGE3ZDVkMGM2NmU3NGUyMTZiOTcxNzNiZDU1OGM2ZCcgfSxcbiAgICAgICAgICB2ZXJpZmljYXRpb246IHsgY29uc29saWRhdGlvblRvQmFzZUFkZHJlc3M6IHRydWUgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZlcmlmeVNweS5maXJzdENhbGwuYXJnc1swXS50eFBhcmFtcy5zaG91bGQubm90LmhhdmUucHJvcGVydHkoJ3JlY2lwaWVudHMnKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgncmVqZWN0cyBhIGNvbnNvbGlkYXRpb24gdGhhdCBkb2VzIG5vdCBzd2VlcCB0byB0aGUgd2FsbGV0IHJvb3QgYWRkcmVzcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgdHNzVXRpbHNcbiAgICAgICAgICAuc2lnblR4UmVxdWVzdCh7XG4gICAgICAgICAgICB0eFJlcXVlc3Q6IGNvbnNvbGlkYXRlVHhSZXF1ZXN0LFxuICAgICAgICAgICAgcHJ2OiBCdWZmZXIuZnJvbSh1c2VyS2V5U2hhcmUpLnRvU3RyaW5nKCdiYXNlNjQnKSxcbiAgICAgICAgICAgIHJlcUlkLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ3R4IG91dHB1dHMgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCBhZGRyZXNzJyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCd1c2VzIGludGVudCByZWNpcGllbnRzIHdoZW4gdHhQYXJhbXMgaXMgYWJzZW50IGFuZCBpbnRlbnQgaGFzIHJlY2lwaWVudHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBzYW5kYm94LnN0dWIoYmFzZUNvaW4sICd2ZXJpZnlUcmFuc2FjdGlvbicpLnJlc29sdmVzKHRydWUpO1xuICAgICAgY29uc3Qgbm9ja1Byb21pc2VzID0gYXdhaXQgZ2V0Tm9ja1Byb21pc2VzRm9yRWRkc2FTaWduaW5nKHR4UmVxdWVzdCk7XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChub2NrUHJvbWlzZXMpO1xuXG4gICAgICBjb25zdCBpbnRlbnRSZWNpcGllbnRUeFJlcXVlc3Q6IFR4UmVxdWVzdCA9IHtcbiAgICAgICAgLi4udHhSZXF1ZXN0LFxuICAgICAgICBpbnRlbnQ6IHtcbiAgICAgICAgICBpbnRlbnRUeXBlOiAncGF5bWVudCcsXG4gICAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhZGRyZXNzOiB7IGFkZHJlc3M6ICdITUVnYlI0UzJoTEtmc3QyVlpVVnBIVlV1NEZpb0ZQeVc1aVV1SnZaZE12cycgfSxcbiAgICAgICAgICAgICAgYW1vdW50OiB7IHZhbHVlOiAnOTk5OTkwMDAwJywgc3ltYm9sOiAnc29sJyB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9IGFzIGFueSxcbiAgICAgIH07XG4gICAgICBjb25zdCB1c2VyUHJ2QmFzZTY0ID0gQnVmZmVyLmZyb20odXNlcktleVNoYXJlKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgICAvLyBTaG91bGQgbm90IHRocm93IOKAlCBpbnRlbnQgcHJvdmlkZXMgdGhlIHJlY2lwaWVudHNcbiAgICAgIGF3YWl0IHRzc1V0aWxzLnNpZ25UeFJlcXVlc3Qoe1xuICAgICAgICB0eFJlcXVlc3Q6IGludGVudFJlY2lwaWVudFR4UmVxdWVzdCxcbiAgICAgICAgcHJ2OiB1c2VyUHJ2QmFzZTY0LFxuICAgICAgICByZXFJZCxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IHRocm93IGZvciBzdGFraW5nIGludGVudCB3aXRoIHN0YWtpbmdSZXF1ZXN0SWQgKGdlbmVyaWMgc3Rha2luZyBzaWduYWwpJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgc2FuZGJveC5zdHViKGJhc2VDb2luLCAndmVyaWZ5VHJhbnNhY3Rpb24nKS5yZXNvbHZlcyh0cnVlKTtcbiAgICAgIGNvbnN0IG5vY2tQcm9taXNlcyA9IGF3YWl0IGdldE5vY2tQcm9taXNlc0ZvckVkZHNhU2lnbmluZyh0eFJlcXVlc3QpO1xuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwobm9ja1Byb21pc2VzKTtcblxuICAgICAgY29uc3Qgc3Rha2luZ1R4UmVxdWVzdDogVHhSZXF1ZXN0ID0ge1xuICAgICAgICAuLi50eFJlcXVlc3QsXG4gICAgICAgIGludGVudDoge1xuICAgICAgICAgIGludGVudFR5cGU6ICdkZWxlZ2F0ZScsXG4gICAgICAgICAgc3Rha2luZ1JlcXVlc3RJZDogJ3N0YWtpbmctcmVxLWlkLTEyMycsXG4gICAgICAgIH0gYXMgYW55LFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHVzZXJQcnZCYXNlNjQgPSBCdWZmZXIuZnJvbSh1c2VyS2V5U2hhcmUpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICAgIGF3YWl0IHRzc1V0aWxzLnNpZ25UeFJlcXVlc3Qoe1xuICAgICAgICB0eFJlcXVlc3Q6IHN0YWtpbmdUeFJlcXVlc3QsXG4gICAgICAgIHBydjogdXNlclBydkJhc2U2NCxcbiAgICAgICAgcmVxSWQsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgYXN5bmMgZnVuY3Rpb24gZ2V0Tm9ja1Byb21pc2VzRm9yRWRkc2FTaWduaW5nKFxuICAgIHR4UmVxdWVzdDogVHhSZXF1ZXN0LFxuICAgIHJlcXVlc3RUeXBlOiBSZXF1ZXN0VHlwZSA9IFJlcXVlc3RUeXBlLnR4LFxuICAgIHJhdGVMaW1pdEVycm9yQ291bnQgPSAwLFxuICAgIHNpZ25lclBhcnR5SWQ6IEVDRFNBVXRpbHMuTVBDdjJQYXJ0aWVzRW51bSA9IE1QQ3YyUGFydGllc0VudW0uVVNFUixcbiAgICByYXRlTGltaXRSb3VuZCA9IDIsXG4gICAgbWFsZm9ybWVkUm91bmQzUmVzcG9uc2UgPSBmYWxzZVxuICApOiBQcm9taXNlPG5vY2suU2NvcGVbXT4ge1xuICAgIGNvbnN0IHR4T3JNZXNzYWdlVG9TaWduID1cbiAgICAgIHJlcXVlc3RUeXBlID09PSBSZXF1ZXN0VHlwZS5tZXNzYWdlXG4gICAgICAgID8gdHhSZXF1ZXN0Lm1lc3NhZ2VzIVswXS5tZXNzYWdlRW5jb2RlZCFcbiAgICAgICAgOiB0eFJlcXVlc3QudHJhbnNhY3Rpb25zIVswXS51bnNpZ25lZFR4LnNpZ25hYmxlSGV4O1xuICAgIGNvbnN0IG1lc3NhZ2VCdWZmZXIgPSBCdWZmZXIuZnJvbSh0eE9yTWVzc2FnZVRvU2lnbiwgJ2hleCcpO1xuICAgIGNvbnN0IGJpdGdvU2Vzc2lvbiA9IG5ldyBFZGRzYU1QU0RzZy5EU0coTVBDdjJQYXJ0aWVzRW51bS5CSVRHTyk7XG4gICAgYXdhaXQgYml0Z29TZXNzaW9uLmluaXREc2coXG4gICAgICBiaXRnb0tleVNoYXJlLFxuICAgICAgbWVzc2FnZUJ1ZmZlcixcbiAgICAgIHR4UmVxdWVzdC50cmFuc2FjdGlvbnM/LlswXS51bnNpZ25lZFR4LmRlcml2YXRpb25QYXRoIHx8ICdtLzAnLFxuICAgICAgc2lnbmVyUGFydHlJZFxuICAgICk7XG4gICAgY29uc3QgYml0Z29Nc2cxID0gYml0Z29TZXNzaW9uLmdldEZpcnN0TWVzc2FnZSgpO1xuICAgIGxldCBiaXRnb01zZzI6IE1QU1R5cGVzLkRlc2VyaWFsaXplZE1lc3NhZ2UgfCB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4gW1xuICAgICAgYXdhaXQgbm9ja1R4UmVxdWVzdFJlc3BvbnNlU2lnbmF0dXJlU2hhcmVSb3VuZE9uZShcbiAgICAgICAgYml0Z29TZXNzaW9uLFxuICAgICAgICB0eFJlcXVlc3QsXG4gICAgICAgIGJpdGdvTXNnMSxcbiAgICAgICAgYml0Z29QcnZLZXlPYmosXG4gICAgICAgIChtc2cpID0+IHtcbiAgICAgICAgICBiaXRnb01zZzIgPSBtc2c7XG4gICAgICAgIH0sXG4gICAgICAgIHJlcXVlc3RUeXBlLFxuICAgICAgICBzaWduZXJQYXJ0eUlkLFxuICAgICAgICByYXRlTGltaXRSb3VuZCA9PT0gMSA/IHJhdGVMaW1pdEVycm9yQ291bnQgOiAwXG4gICAgICApLFxuICAgICAgYXdhaXQgbm9ja1R4UmVxdWVzdFJlc3BvbnNlU2lnbmF0dXJlU2hhcmVSb3VuZFR3byhcbiAgICAgICAgdHhSZXF1ZXN0LFxuICAgICAgICAoKSA9PiBiaXRnb01zZzIhLFxuICAgICAgICBiaXRnb1BydktleU9iaixcbiAgICAgICAgcmVxdWVzdFR5cGUsXG4gICAgICAgIHJhdGVMaW1pdFJvdW5kID09PSAyID8gcmF0ZUxpbWl0RXJyb3JDb3VudCA6IDAsXG4gICAgICAgIHNpZ25lclBhcnR5SWRcbiAgICAgICksXG4gICAgICBhd2FpdCBub2NrVHhSZXF1ZXN0UmVzcG9uc2VTaWduYXR1cmVTaGFyZVJvdW5kVGhyZWUoXG4gICAgICAgIHR4UmVxdWVzdCxcbiAgICAgICAgcmVxdWVzdFR5cGUsXG4gICAgICAgIHNpZ25lclBhcnR5SWQsXG4gICAgICAgIHJhdGVMaW1pdFJvdW5kID09PSAzID8gcmF0ZUxpbWl0RXJyb3JDb3VudCA6IDAsXG4gICAgICAgIG1hbGZvcm1lZFJvdW5kM1Jlc3BvbnNlXG4gICAgICApLFxuICAgICAgYXdhaXQgbm9ja1NlbmRUeFJlcXVlc3QodHhSZXF1ZXN0LCByZXF1ZXN0VHlwZSksXG4gICAgXTtcbiAgfVxufSk7XG5cbmFzeW5jIGZ1bmN0aW9uIG5vY2tHZXRCaXRnb1B1YmxpY0tleUJhc2VkT25GZWF0dXJlRmxhZ3MoXG4gIGNvaW46IHN0cmluZyxcbiAgZW50ZXJwcmlzZUlkOiBzdHJpbmcsXG4gIGJpdGdvR3BnS2V5UGFpcjogb3BlbnBncC5TZXJpYWxpemVkS2V5UGFpcjxzdHJpbmc+XG4pOiBQcm9taXNlPEJpdGdvR1BHUHVibGljS2V5PiB7XG4gIGNvbnN0IGJpdGdvR1BHUHVibGljS2V5UmVzcG9uc2U6IEJpdGdvR1BHUHVibGljS2V5ID0ge1xuICAgIG5hbWU6ICdpcnJlbGV2YW50JyxcbiAgICBwdWJsaWNLZXk6IGJpdGdvR3BnS2V5UGFpci5wdWJsaWNLZXksXG4gICAgbXBjdjJQdWJsaWNLZXk6IGJpdGdvR3BnS2V5UGFpci5wdWJsaWNLZXksXG4gICAgZWRkc2FNcGN2MlB1YmxpY0tleTogYml0Z29HcGdLZXlQYWlyLnB1YmxpY0tleSxcbiAgICBlbnRlcnByaXNlSWQsXG4gIH07XG4gIG5vY2soJ2h0dHBzOi8vYml0Z28uZmFrZXVybCcpXG4gICAgLmdldChgL2FwaS92Mi8ke2NvaW59L3Rzcy9wdWJrZXlgKVxuICAgIC50aW1lcyg0KVxuICAgIC5xdWVyeSh7IGVudGVycHJpc2VJZCB9KVxuICAgIC5yZXBseSgyMDAsIGJpdGdvR1BHUHVibGljS2V5UmVzcG9uc2UpO1xuICByZXR1cm4gYml0Z29HUEdQdWJsaWNLZXlSZXNwb25zZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gbm9ja1R4UmVxdWVzdFJlc3BvbnNlU2lnbmF0dXJlU2hhcmVSb3VuZE9uZShcbiAgYml0Z29TZXNzaW9uOiBFZGRzYU1QU0RzZy5EU0csXG4gIHR4UmVxdWVzdDogVHhSZXF1ZXN0LFxuICBiaXRnb01zZzE6IE1QU1R5cGVzLkRlc2VyaWFsaXplZE1lc3NhZ2UsXG4gIGJpdGdvR3BnUHJpdktleTogb3BlbnBncC5Qcml2YXRlS2V5LFxuICBzYXZlQml0Z29Nc2cyOiAobXNnOiBNUFNUeXBlcy5EZXNlcmlhbGl6ZWRNZXNzYWdlKSA9PiB2b2lkLFxuICByZXF1ZXN0VHlwZTogUmVxdWVzdFR5cGUgPSBSZXF1ZXN0VHlwZS50eCxcbiAgc2lnbmVyUGFydHlJZDogRUNEU0FVdGlscy5NUEN2MlBhcnRpZXNFbnVtID0gTVBDdjJQYXJ0aWVzRW51bS5VU0VSLFxuICByYXRlTGltaXRFcnJvckNvdW50ID0gMFxuKTogUHJvbWlzZTxub2NrLlNjb3BlPiB7XG4gIGNvbnN0IHJvdXRlID0gcmVxdWVzdFR5cGUgPT09IFJlcXVlc3RUeXBlLm1lc3NhZ2UgPyAnL21lc3NhZ2VzLzAnIDogJy90cmFuc2FjdGlvbnMvMCc7XG4gIGNvbnN0IHNpZ25lclNoYXJlVHlwZSA9IHNpZ25lclBhcnR5SWQgPT09IE1QQ3YyUGFydGllc0VudW0uVVNFUiA/IFNpZ25hdHVyZVNoYXJlVHlwZS5VU0VSIDogU2lnbmF0dXJlU2hhcmVUeXBlLkJBQ0tVUDtcbiAgY29uc3Qgc2NvcGUgPSBub2NrKCdodHRwczovL2JpdGdvLmZha2V1cmwnKTtcblxuICBpZiAocmF0ZUxpbWl0RXJyb3JDb3VudCA+IDApIHtcbiAgICBzY29wZVxuICAgICAgLnBvc3QoXG4gICAgICAgIGAvYXBpL3YyL3dhbGxldC8ke3R4UmVxdWVzdC53YWxsZXRJZH0vdHhyZXF1ZXN0cy8ke3R4UmVxdWVzdC50eFJlcXVlc3RJZH0ke3JvdXRlfS9zaWduYCxcbiAgICAgICAgKGJvZHkpID0+XG4gICAgICAgICAgKEpTT04ucGFyc2UoYm9keS5zaWduYXR1cmVTaGFyZXNbMF0uc2hhcmUpIGFzIEVkZHNhTVBDdjJTaWduYXR1cmVTaGFyZVJvdW5kMUlucHV0KS50eXBlID09PSAncm91bmQxSW5wdXQnXG4gICAgICApXG4gICAgICAudGltZXMocmF0ZUxpbWl0RXJyb3JDb3VudClcbiAgICAgIC5yZXBseSg0MjksIHtcbiAgICAgICAgZXJyb3I6ICdUb28gbWFueSByZXF1ZXN0cywgc2xvdyBkb3duIScsXG4gICAgICAgIG5hbWU6ICdUb29NYW55UmVxdWVzdHMnLFxuICAgICAgICByZXF1ZXN0SWQ6ICdjbTVxeDAxbGgwMDEzYjJlazJzeGw0dzAwJyxcbiAgICAgICAgY29udGV4dDoge30sXG4gICAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBzY29wZVxuICAgIC5wb3N0KFxuICAgICAgYC9hcGkvdjIvd2FsbGV0LyR7dHhSZXF1ZXN0LndhbGxldElkfS90eHJlcXVlc3RzLyR7dHhSZXF1ZXN0LnR4UmVxdWVzdElkfSR7cm91dGV9L3NpZ25gLFxuICAgICAgKGJvZHkpID0+XG4gICAgICAgIChKU09OLnBhcnNlKGJvZHkuc2lnbmF0dXJlU2hhcmVzWzBdLnNoYXJlKSBhcyBFZGRzYU1QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDFJbnB1dCkudHlwZSA9PT0gJ3JvdW5kMUlucHV0J1xuICAgIClcbiAgICAucmVwbHkoMjAwLCBhc3luYyAoX3VyaTogc3RyaW5nLCBib2R5OiBTaWduYXR1cmVTaGFyZUFwaUJvZHkpID0+IHtcbiAgICAgIGNvbnN0IHBhcnNlZFNoYXJlID0gSlNPTi5wYXJzZShib2R5LnNpZ25hdHVyZVNoYXJlc1swXS5zaGFyZSkgYXMgRWRkc2FNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQxSW5wdXQ7XG4gICAgICBjb25zdCB1c2VyTXNnMUJ5dGVzID0gQnVmZmVyLmZyb20ocGFyc2VkU2hhcmUuZGF0YS5tc2cxLm1lc3NhZ2UsICdiYXNlNjQnKTtcbiAgICAgIGNvbnN0IHVzZXJEZXNlcmlhbGl6ZWRNc2cxOiBNUFNUeXBlcy5EZXNlcmlhbGl6ZWRNZXNzYWdlID0ge1xuICAgICAgICBmcm9tOiBzaWduZXJQYXJ0eUlkLFxuICAgICAgICBwYXlsb2FkOiBuZXcgVWludDhBcnJheSh1c2VyTXNnMUJ5dGVzKSxcbiAgICAgIH07XG4gICAgICBjb25zdCBbYml0Z29Nc2cyXSA9IGJpdGdvU2Vzc2lvbi5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKFtiaXRnb01zZzEsIHVzZXJEZXNlcmlhbGl6ZWRNc2cxXSk7XG4gICAgICBzYXZlQml0Z29Nc2cyKGJpdGdvTXNnMik7XG5cbiAgICAgIGNvbnN0IGJpdGdvU2lnbmVkTXNnMSA9IGF3YWl0IE1QU0NvbW1zLmRldGFjaFNpZ25NcHNNZXNzYWdlKEJ1ZmZlci5mcm9tKGJpdGdvTXNnMS5wYXlsb2FkKSwgYml0Z29HcGdQcml2S2V5KTtcbiAgICAgIGNvbnN0IHJvdW5kMU91dHB1dDogRWRkc2FNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQxT3V0cHV0ID0ge1xuICAgICAgICB0eXBlOiAncm91bmQxT3V0cHV0JyxcbiAgICAgICAgZGF0YTogeyBtc2cxOiBiaXRnb1NpZ25lZE1zZzEgfSxcbiAgICAgIH07XG4gICAgICBjb25zdCByZXNvdXJjZSA9IHJlcXVlc3RUeXBlID09PSBSZXF1ZXN0VHlwZS5tZXNzYWdlID8gJ21lc3NhZ2VzJyA6ICd0cmFuc2FjdGlvbnMnO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHhSZXF1ZXN0SWQ6IHR4UmVxdWVzdC50eFJlcXVlc3RJZCxcbiAgICAgICAgW3Jlc291cmNlXTogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNpZ25hdHVyZVNoYXJlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZnJvbTogU2lnbmF0dXJlU2hhcmVUeXBlLkJJVEdPLFxuICAgICAgICAgICAgICAgIHRvOiBzaWduZXJTaGFyZVR5cGUsXG4gICAgICAgICAgICAgICAgc2hhcmU6IEpTT04uc3RyaW5naWZ5KHJvdW5kMU91dHB1dCksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBub2NrVHhSZXF1ZXN0UmVzcG9uc2VTaWduYXR1cmVTaGFyZVJvdW5kVHdvKFxuICB0eFJlcXVlc3Q6IFR4UmVxdWVzdCxcbiAgZ2V0Qml0Z29Nc2cyOiAoKSA9PiBNUFNUeXBlcy5EZXNlcmlhbGl6ZWRNZXNzYWdlLFxuICBiaXRnb0dwZ1ByaXZLZXk6IG9wZW5wZ3AuUHJpdmF0ZUtleSxcbiAgcmVxdWVzdFR5cGU6IFJlcXVlc3RUeXBlID0gUmVxdWVzdFR5cGUudHgsXG4gIHJhdGVMaW1pdEVycm9yQ291bnQgPSAwLFxuICBzaWduZXJQYXJ0eUlkOiBFQ0RTQVV0aWxzLk1QQ3YyUGFydGllc0VudW0gPSBNUEN2MlBhcnRpZXNFbnVtLlVTRVJcbik6IFByb21pc2U8bm9jay5TY29wZT4ge1xuICBjb25zdCByb3V0ZSA9IHJlcXVlc3RUeXBlID09PSBSZXF1ZXN0VHlwZS5tZXNzYWdlID8gJy9tZXNzYWdlcy8wJyA6ICcvdHJhbnNhY3Rpb25zLzAnO1xuICBjb25zdCBzY29wZSA9IG5vY2soJ2h0dHBzOi8vYml0Z28uZmFrZXVybCcpO1xuICBjb25zdCBzaWduZXJTaGFyZVR5cGUgPSBzaWduZXJQYXJ0eUlkID09PSBNUEN2MlBhcnRpZXNFbnVtLlVTRVIgPyBTaWduYXR1cmVTaGFyZVR5cGUuVVNFUiA6IFNpZ25hdHVyZVNoYXJlVHlwZS5CQUNLVVA7XG5cbiAgaWYgKHJhdGVMaW1pdEVycm9yQ291bnQgPiAwKSB7XG4gICAgc2NvcGVcbiAgICAgIC5wb3N0KFxuICAgICAgICBgL2FwaS92Mi93YWxsZXQvJHt0eFJlcXVlc3Qud2FsbGV0SWR9L3R4cmVxdWVzdHMvJHt0eFJlcXVlc3QudHhSZXF1ZXN0SWR9JHtyb3V0ZX0vc2lnbmAsXG4gICAgICAgIChib2R5KSA9PlxuICAgICAgICAgIChKU09OLnBhcnNlKGJvZHkuc2lnbmF0dXJlU2hhcmVzWzBdLnNoYXJlKSBhcyBFZGRzYU1QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDJJbnB1dCkudHlwZSA9PT0gJ3JvdW5kMklucHV0J1xuICAgICAgKVxuICAgICAgLnRpbWVzKHJhdGVMaW1pdEVycm9yQ291bnQpXG4gICAgICAucmVwbHkoNDI5LCB7XG4gICAgICAgIGVycm9yOiAnVG9vIG1hbnkgcmVxdWVzdHMsIHNsb3cgZG93biEnLFxuICAgICAgICBuYW1lOiAnVG9vTWFueVJlcXVlc3RzJyxcbiAgICAgICAgcmVxdWVzdElkOiAnY201cXgwMWxoMDAxM2IyZWsyc3hsNHcwMCcsXG4gICAgICAgIGNvbnRleHQ6IHt9LFxuICAgICAgfSk7XG4gIH1cblxuICByZXR1cm4gc2NvcGVcbiAgICAucG9zdChcbiAgICAgIGAvYXBpL3YyL3dhbGxldC8ke3R4UmVxdWVzdC53YWxsZXRJZH0vdHhyZXF1ZXN0cy8ke3R4UmVxdWVzdC50eFJlcXVlc3RJZH0ke3JvdXRlfS9zaWduYCxcbiAgICAgIChib2R5KSA9PlxuICAgICAgICAoSlNPTi5wYXJzZShib2R5LnNpZ25hdHVyZVNoYXJlc1swXS5zaGFyZSkgYXMgRWRkc2FNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQySW5wdXQpLnR5cGUgPT09ICdyb3VuZDJJbnB1dCdcbiAgICApXG4gICAgLnJlcGx5KDIwMCwgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYml0Z29Nc2cyID0gZ2V0Qml0Z29Nc2cyKCk7XG4gICAgICBjb25zdCBiaXRnb1NpZ25lZE1zZzIgPSBhd2FpdCBNUFNDb21tcy5kZXRhY2hTaWduTXBzTWVzc2FnZShCdWZmZXIuZnJvbShiaXRnb01zZzIucGF5bG9hZCksIGJpdGdvR3BnUHJpdktleSk7XG4gICAgICBjb25zdCByb3VuZDJPdXRwdXQ6IEVkZHNhTVBDdjJTaWduYXR1cmVTaGFyZVJvdW5kMk91dHB1dCA9IHtcbiAgICAgICAgdHlwZTogJ3JvdW5kMk91dHB1dCcsXG4gICAgICAgIGRhdGE6IHsgbXNnMjogYml0Z29TaWduZWRNc2cyIH0sXG4gICAgICB9O1xuICAgICAgY29uc3QgcmVzb3VyY2UgPSByZXF1ZXN0VHlwZSA9PT0gUmVxdWVzdFR5cGUubWVzc2FnZSA/ICdtZXNzYWdlcycgOiAndHJhbnNhY3Rpb25zJztcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR4UmVxdWVzdElkOiB0eFJlcXVlc3QudHhSZXF1ZXN0SWQsXG4gICAgICAgIFtyZXNvdXJjZV06IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzaWduYXR1cmVTaGFyZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGZyb206IHNpZ25lclNoYXJlVHlwZSxcbiAgICAgICAgICAgICAgICB0bzogU2lnbmF0dXJlU2hhcmVUeXBlLkJJVEdPLFxuICAgICAgICAgICAgICAgIHNoYXJlOiAncGxhY2Vob2xkZXInLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZnJvbTogU2lnbmF0dXJlU2hhcmVUeXBlLkJJVEdPLFxuICAgICAgICAgICAgICAgIHRvOiBzaWduZXJTaGFyZVR5cGUsXG4gICAgICAgICAgICAgICAgc2hhcmU6IEpTT04uc3RyaW5naWZ5KHJvdW5kMk91dHB1dCksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBub2NrVHhSZXF1ZXN0UmVzcG9uc2VTaWduYXR1cmVTaGFyZVJvdW5kVGhyZWUoXG4gIHR4UmVxdWVzdDogVHhSZXF1ZXN0LFxuICByZXF1ZXN0VHlwZTogUmVxdWVzdFR5cGUgPSBSZXF1ZXN0VHlwZS50eCxcbiAgc2lnbmVyUGFydHlJZDogRUNEU0FVdGlscy5NUEN2MlBhcnRpZXNFbnVtID0gTVBDdjJQYXJ0aWVzRW51bS5VU0VSLFxuICByYXRlTGltaXRFcnJvckNvdW50ID0gMCxcbiAgbWFsZm9ybWVkUmVzcG9uc2UgPSBmYWxzZVxuKTogUHJvbWlzZTxub2NrLlNjb3BlPiB7XG4gIGNvbnN0IHJvdXRlID0gcmVxdWVzdFR5cGUgPT09IFJlcXVlc3RUeXBlLm1lc3NhZ2UgPyAnL21lc3NhZ2VzLzAnIDogJy90cmFuc2FjdGlvbnMvMCc7XG4gIGNvbnN0IHNpZ25lclNoYXJlVHlwZSA9IHNpZ25lclBhcnR5SWQgPT09IE1QQ3YyUGFydGllc0VudW0uVVNFUiA/IFNpZ25hdHVyZVNoYXJlVHlwZS5VU0VSIDogU2lnbmF0dXJlU2hhcmVUeXBlLkJBQ0tVUDtcbiAgY29uc3Qgc2NvcGUgPSBub2NrKCdodHRwczovL2JpdGdvLmZha2V1cmwnKTtcblxuICBpZiAocmF0ZUxpbWl0RXJyb3JDb3VudCA+IDApIHtcbiAgICBzY29wZVxuICAgICAgLnBvc3QoXG4gICAgICAgIGAvYXBpL3YyL3dhbGxldC8ke3R4UmVxdWVzdC53YWxsZXRJZH0vdHhyZXF1ZXN0cy8ke3R4UmVxdWVzdC50eFJlcXVlc3RJZH0ke3JvdXRlfS9zaWduYCxcbiAgICAgICAgKGJvZHk6IFNpZ25hdHVyZVNoYXJlQXBpQm9keSkgPT5cbiAgICAgICAgICAoSlNPTi5wYXJzZShib2R5LnNpZ25hdHVyZVNoYXJlc1swXS5zaGFyZSkgYXMgRWRkc2FNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQzSW5wdXQpLnR5cGUgPT09ICdyb3VuZDNJbnB1dCdcbiAgICAgIClcbiAgICAgIC50aW1lcyhyYXRlTGltaXRFcnJvckNvdW50KVxuICAgICAgLnJlcGx5KDQyOSwge1xuICAgICAgICBlcnJvcjogJ1RvbyBtYW55IHJlcXVlc3RzLCBzbG93IGRvd24hJyxcbiAgICAgICAgbmFtZTogJ1Rvb01hbnlSZXF1ZXN0cycsXG4gICAgICAgIHJlcXVlc3RJZDogJ2NtNXF4MDFsaDAwMTNiMmVrMnN4bDR3MDAnLFxuICAgICAgICBjb250ZXh0OiB7fSxcbiAgICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHNjb3BlXG4gICAgLnBvc3QoXG4gICAgICBgL2FwaS92Mi93YWxsZXQvJHt0eFJlcXVlc3Qud2FsbGV0SWR9L3R4cmVxdWVzdHMvJHt0eFJlcXVlc3QudHhSZXF1ZXN0SWR9JHtyb3V0ZX0vc2lnbmAsXG4gICAgICAoYm9keTogU2lnbmF0dXJlU2hhcmVBcGlCb2R5KSA9PlxuICAgICAgICAoSlNPTi5wYXJzZShib2R5LnNpZ25hdHVyZVNoYXJlc1swXS5zaGFyZSkgYXMgRWRkc2FNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQzSW5wdXQpLnR5cGUgPT09ICdyb3VuZDNJbnB1dCdcbiAgICApXG4gICAgLnJlcGx5KFxuICAgICAgMjAwLFxuICAgICAgbWFsZm9ybWVkUmVzcG9uc2VcbiAgICAgICAgPyB7IHR4UmVxdWVzdElkOiBgJHt0eFJlcXVlc3QudHhSZXF1ZXN0SWR9LXVuZXhwZWN0ZWRgIH1cbiAgICAgICAgOiB7XG4gICAgICAgICAgICB0eFJlcXVlc3RJZDogdHhSZXF1ZXN0LnR4UmVxdWVzdElkLFxuICAgICAgICAgICAgc2lnbmF0dXJlU2hhcmVzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmcm9tOiBzaWduZXJTaGFyZVR5cGUsXG4gICAgICAgICAgICAgICAgdG86IFNpZ25hdHVyZVNoYXJlVHlwZS5CSVRHTyxcbiAgICAgICAgICAgICAgICBzaGFyZTogJ3BsYWNlaG9sZGVyJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfVxuICAgICk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIG5vY2tTZW5kVHhSZXF1ZXN0KHR4UmVxdWVzdDogVHhSZXF1ZXN0LCByZXF1ZXN0VHlwZTogUmVxdWVzdFR5cGUgPSBSZXF1ZXN0VHlwZS50eCk6IFByb21pc2U8bm9jay5TY29wZT4ge1xuICBjb25zdCByb3V0ZSA9IHJlcXVlc3RUeXBlID09PSBSZXF1ZXN0VHlwZS5tZXNzYWdlID8gJy9tZXNzYWdlcy8wJyA6ICcvdHJhbnNhY3Rpb25zLzAnO1xuICByZXR1cm4gbm9jaygnaHR0cHM6Ly9iaXRnby5mYWtldXJsJylcbiAgICAucG9zdChgL2FwaS92Mi93YWxsZXQvJHt0eFJlcXVlc3Qud2FsbGV0SWR9L3R4cmVxdWVzdHMvJHt0eFJlcXVlc3QudHhSZXF1ZXN0SWR9JHtyb3V0ZX0vc2VuZGApXG4gICAgLnJlcGx5KDIwMCwge1xuICAgICAgdHhSZXF1ZXN0SWQ6IHR4UmVxdWVzdC50eFJlcXVlc3RJZCxcbiAgICB9KTtcbn1cbiJdfQ==
622
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnblR4UmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Rlc3QvdjIvdW5pdC9pbnRlcm5hbC90c3NVdGlscy9lZGRzYU1QQ3YyL3NpZ25UeFJlcXVlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwrQkFBK0I7QUFDL0IsOENBYXlCO0FBQ3pCLG9EQUE4RTtBQUM5RSxtQ0FBbUM7QUFDbkMsNkJBQThCO0FBQzlCLDhDQUF3RDtBQVF4RCwrQ0FBOEM7QUFFOUMsTUFBTSxnQkFBZ0IsR0FBRyxxQkFBVSxDQUFDLGdCQUFnQixDQUFDO0FBT3JELFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRTtJQUN6QixJQUFJLFFBQW9DLENBQUM7SUFDekMsSUFBSSxNQUFjLENBQUM7SUFDbkIsSUFBSSxLQUF5QixDQUFDO0lBQzlCLElBQUksUUFBa0IsQ0FBQztJQUN2QixJQUFJLFdBQWtGLENBQUM7SUFDdkYsSUFBSSxjQUFrQyxDQUFDO0lBQ3ZDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQztJQUV2QixNQUFNLEtBQUssR0FBRyxJQUFJLHdCQUFhLEVBQUUsQ0FBQztJQUNsQyxNQUFNLFdBQVcsR0FBRyxlQUFlLENBQUM7SUFDcEMsTUFBTSxXQUFXLEdBQ2Ysa2dCQUFrZ0IsQ0FBQztJQUNyZ0IsTUFBTSxlQUFlLEdBQUcscVFBQXFRLFdBQVcsRUFBRSxDQUFDO0lBQzNTLE1BQU0sVUFBVSxHQUFHLGtCQUFrQixDQUFDO0lBQ3RDLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9ELE1BQU0sUUFBUSxHQUFHO1FBQ2YsVUFBVSxFQUFFO1lBQ1Y7Z0JBQ0UsT0FBTyxFQUFFLDhDQUE4QztnQkFDdkQsTUFBTSxFQUFFLFdBQVc7YUFDcEI7U0FDRjtLQUNGLENBQUM7SUFDRixNQUFNLFNBQVMsR0FBYztRQUMzQixX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Qyx1QkFBdUIsQ0FBQztTQUNqQyxJQUFJLENBQUMsa0JBQWtCLFNBQVMsQ0FBQyxRQUFRLGVBQWUsU0FBUyxDQUFDLFdBQVcsR0FBRyxLQUFLLE9BQU8sQ0FBQztTQUM3RixLQUFLLENBQUMsR0FBRyxFQUFFO1FBQ1YsV0FBVyxFQUFFLFNBQVMsQ0FBQyxXQUFXO0tBQ25DLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQge1xuICBCYXNlQ29pbixcbiAgQml0Z29HUEdQdWJsaWNLZXksXG4gIGNvbW1vbixcbiAgRUNEU0FVdGlscyxcbiAgRUREU0FVdGlscyxcbiAgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsXG4gIFJlcXVlc3RUcmFjZXIsXG4gIFJlcXVlc3RUeXBlLFxuICBTaWduYXR1cmVTaGFyZVJlY29yZCxcbiAgU2lnbmF0dXJlU2hhcmVUeXBlLFxuICBUeFJlcXVlc3QsXG4gIFdhbGxldCxcbn0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEVkZHNhTVBTRHNnLCBNUFNDb21tcywgTVBTVHlwZXMsIE1QU1V0aWwgfSBmcm9tICdAYml0Z28vc2RrLWxpYi1tcGMnO1xuaW1wb3J0ICogYXMgb3BlbnBncCBmcm9tICdvcGVucGdwJztcbmltcG9ydCBub2NrID0gcmVxdWlyZSgnbm9jaycpO1xuaW1wb3J0IHsgVGVzdGFibGVCRywgVGVzdEJpdEdvIH0gZnJvbSAnQGJpdGdvL3Nkay10ZXN0JztcbmltcG9ydCB7XG4gIEVkZHNhTVBDdjJTaWduYXR1cmVTaGFyZVJvdW5kMUlucHV0LFxuICBFZGRzYU1QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDFPdXRwdXQsXG4gIEVkZHNhTVBDdjJTaWduYXR1cmVTaGFyZVJvdW5kMklucHV0LFxuICBFZGRzYU1QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDJPdXRwdXQsXG4gIEVkZHNhTVBDdjJTaWduYXR1cmVTaGFyZVJvdW5kM0lucHV0LFxufSBmcm9tICdAYml0Z28vcHVibGljLXR5cGVzJztcbmltcG9ydCB7IEJpdEdvIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vc3JjJztcblxuY29uc3QgTVBDdjJQYXJ0aWVzRW51bSA9IEVDRFNBVXRpbHMuTVBDdjJQYXJ0aWVzRW51bTtcblxuaW50ZXJmYWNlIFNpZ25hdHVyZVNoYXJlQXBpQm9keSB7XG4gIHNpZ25hdHVyZVNoYXJlczogU2lnbmF0dXJlU2hhcmVSZWNvcmRbXTtcbiAgc2lnbmVyR3BnUHVibGljS2V5OiBzdHJpbmc7XG59XG5cbmRlc2NyaWJlKCdzaWduVHhSZXF1ZXN0OicsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IHRzc1V0aWxzOiBFRERTQVV0aWxzLkVkZHNhTVBDdjJVdGlscztcbiAgbGV0IHdhbGxldDogV2FsbGV0O1xuICBsZXQgYml0Z286IFRlc3RhYmxlQkcgJiBCaXRHbztcbiAgbGV0IGJhc2VDb2luOiBCYXNlQ29pbjtcbiAgbGV0IGJpdGdvR3BnS2V5OiBvcGVucGdwLlNlcmlhbGl6ZWRLZXlQYWlyPHN0cmluZz4gJiB7IHJldm9jYXRpb25DZXJ0aWZpY2F0ZTogc3RyaW5nIH07XG4gIGxldCBiaXRnb1BydktleU9iajogb3BlbnBncC5Qcml2YXRlS2V5O1xuICBjb25zdCBjb2luTmFtZSA9ICdzb2wnO1xuXG4gIGNvbnN0IHJlcUlkID0gbmV3IFJlcXVlc3RUcmFjZXIoKTtcbiAgY29uc3QgdHhSZXF1ZXN0SWQgPSAncmFuZG9tVHhSZXFJZCc7XG4gIGNvbnN0IHNpZ25hYmxlSGV4ID1cbiAgICAnMDIwMTAyMDZjMmQ1YjVmNGZiOWE5YmNkOGEyZjMwM2U0ZDA2Zjc4ZDhkZWQzMDA3MTNmNDU2ZGEyYWJmZjBiM2VhMDE4NWFhMDUxYTM0YmM4YWNkNDM4NzYzOTc2Zjk2ODc2MTE1MDUwZjczODI4NTUzNTY2ZDExMWQ3YWM4YmZmZWJmNTg3YzRmNWY1OTg3YmZlMjZhYTY2MDEzZWZkOTZkMzYzNjBmMmI0MzM2YzkxZjk5MzI1OWZiNTYwNTEzMDU2MTRkNDJmMmVhMTNmOGZmOWQ3OTU4ZGJmMjY5YzZlMzZiZmRmNWNiNWM0M2RlNGI0ZTFkM2VmYjdkYWIzZDVkMDI4NjA0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2YTdkNTE3MTkyYzU2OGVlMDhhODQ1ZjczZDI5Nzg4Y2YwMzVjMzE0NWIyMWFiMzQ0ZDgwNjJlYTk0MDAwMDAzYTYyMWY2ZDFjYzRiOGZiMmE3MzlhYTA4ZTQwMzRkYTBmYzU4OGVjZTNiZDg1NzYzMGRlMzBmN2VkZGU0NWRkMDIwNDAzMDIwNTAxMDQwNDAwMDAwMDA0MDIwMDAzMGMwMjAwMDAwMGYwYTI5YTNiMDAwMDAwMDAnO1xuICBjb25zdCBzZXJpYWxpemVkVHhIZXggPSBgMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDNiYzlkZjBiMzk3YmVjMmVkM2I2NDQ0YThjMzNmMzgyNjdjYzA4YjVmYjJhN2QzN2UyNmI2YzQ4N2UyNmQxNWI3YzA3ODMwZWI3OGUyNmE4OGRiNWRlNGFhNjk4NmEzMjdmMDlhZWQ4YzAxNTMzZTViOTcyNzQ4ZGRmNjBiODBmJHtzaWduYWJsZUhleH1gO1xuICBjb25zdCBtZXNzYWdlUmF3ID0gJ1RPTyBNQU5ZIFNFQ1JFVFMnO1xuICBjb25zdCBtZXNzYWdlRW5jb2RlZCA9IEJ1ZmZlci5mcm9tKG1lc3NhZ2VSYXcpLnRvU3RyaW5nKCdoZXgnKTtcbiAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgcmVjaXBpZW50czogW1xuICAgICAge1xuICAgICAgICBhZGRyZXNzOiAnSE1FZ2JSNFMyaExLZnN0MlZaVVZwSFZVdTRGaW9GUHlXNWlVdUp2WmRNdnMnLFxuICAgICAgICBhbW91bnQ6ICc5OTk5OTAwMDAnLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuICBjb25zdCB0eFJlcXVlc3Q6IFR4UmVxdWVzdCA9IHtcbiAgICB0eFJlcXVlc3RJZCxcbiAgICBlbnRlcnByaXNlSWQ6ICc0NTE3YWJmYi1mNTY3LTRiN2EtOWY5MS00MDc1MDlkMjk0MDMnLFxuICAgIHRyYW5zYWN0aW9uczogW1xuICAgICAge1xuICAgICAgICB1bnNpZ25lZFR4OiB7XG4gICAgICAgICAgc2VyaWFsaXplZFR4SGV4LFxuICAgICAgICAgIHNpZ25hYmxlSGV4LFxuICAgICAgICAgIGRlcml2YXRpb25QYXRoOiAnbS8wJywgLy8gTmVlZHMgdGhpcyB3aGVuIGtleSBkZXJpdmF0aW9uIGlzIHN1cHBvcnRlZFxuICAgICAgICB9LFxuICAgICAgICBzdGF0ZTogJ3BlbmRpbmdTaWduYXR1cmUnLFxuICAgICAgICBzaWduYXR1cmVTaGFyZXM6IFtdLFxuICAgICAgfSxcbiAgICBdLFxuICAgIHVuc2lnbmVkVHhzOiBbXSxcbiAgICBkYXRlOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgaW50ZW50OiB7IGludGVudFR5cGU6ICdwYXltZW50JyB9LFxuICAgIGxhdGVzdDogdHJ1ZSxcbiAgICBzdGF0ZTogJ3BlbmRpbmdVc2VyU2lnbmF0dXJlJyxcbiAgICB3YWxsZXRUeXBlOiAnaG90JyxcbiAgICB3YWxsZXRJZDogJ3dhbGxldElkJyxcbiAgICBwb2xpY2llc0NoZWNrZWQ6IHRydWUsXG4gICAgdmVyc2lvbjogMSxcbiAgICB1c2VySWQ6ICd1c2VySWQnLFxuICAgIGFwaVZlcnNpb246ICdmdWxsJyxcbiAgfTtcblxuICBjb25zdCB0eFJlcXVlc3RGb3JNZXNzYWdlU2lnbmluZzogVHhSZXF1ZXN0ID0ge1xuICAgIHR4UmVxdWVzdElkLFxuICAgIGVudGVycHJpc2VJZDogJzQ1MTdhYmZiLWY1NjctNGI3YS05ZjkxLTQwNzUwOWQyOTQwMycsXG4gICAgbWVzc2FnZXM6IFtcbiAgICAgIHtcbiAgICAgICAgbWVzc2FnZVJhdyxcbiAgICAgICAgbWVzc2FnZUVuY29kZWQsXG4gICAgICAgIGRlcml2YXRpb25QYXRoOiAnbS8wJyxcbiAgICAgICAgc3RhdGU6ICdwZW5kaW5nU2lnbmF0dXJlJyxcbiAgICAgICAgc2lnbmF0dXJlU2hhcmVzOiBbXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICB1bnNpZ25lZFR4czogW10sXG4gICAgZGF0ZTogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGludGVudDogeyBpbnRlbnRUeXBlOiAncGF5bWVudCcgfSxcbiAgICBsYXRlc3Q6IHRydWUsXG4gICAgc3RhdGU6ICdwZW5kaW5nVXNlclNpZ25hdHVyZScsXG4gICAgd2FsbGV0VHlwZTogJ2hvdCcsXG4gICAgd2FsbGV0SWQ6ICd3YWxsZXRJZCcsXG4gICAgcG9saWNpZXNDaGVja2VkOiB0cnVlLFxuICAgIHZlcnNpb246IDEsXG4gICAgdXNlcklkOiAndXNlcklkJyxcbiAgICBhcGlWZXJzaW9uOiAnZnVsbCcsXG4gIH07XG5cbiAgbGV0IHVzZXJLZXlTaGFyZTogQnVmZmVyO1xuICBsZXQgYmFja3VwS2V5U2hhcmU6IEJ1ZmZlcjtcbiAgbGV0IGJpdGdvS2V5U2hhcmU6IEJ1ZmZlcjtcblxuICBiZWZvcmUoYXN5bmMgKCkgPT4ge1xuICAgIGJpdGdvID0gVGVzdEJpdEdvLmRlY29yYXRlKEJpdEdvLCB7IGVudjogJ21vY2snIH0pO1xuICAgIGJpdGdvLmluaXRpYWxpemVUZXN0VmFycygpO1xuICAgIGNvbnN0IGJnVXJsID0gY29tbW9uLkVudmlyb25tZW50c1tiaXRnby5nZXRFbnYoKV0udXJpO1xuICAgIGJpdGdvR3BnS2V5ID0gYXdhaXQgb3BlbnBncC5nZW5lcmF0ZUtleSh7XG4gICAgICB1c2VySURzOiBbeyBuYW1lOiAnYml0Z28nLCBlbWFpbDogJ2JpdGdvQHRlc3QuY29tJyB9XSxcbiAgICAgIGN1cnZlOiAnZWQyNTUxOScsXG4gICAgICBmb3JtYXQ6ICdhcm1vcmVkJyxcbiAgICB9KTtcbiAgICBiaXRnb1BydktleU9iaiA9IGF3YWl0IG9wZW5wZ3AucmVhZFByaXZhdGVLZXkoeyBhcm1vcmVkS2V5OiBiaXRnb0dwZ0tleS5wcml2YXRlS2V5IH0pO1xuICAgIGNvbnN0IGNvbnN0YW50cyA9IHtcbiAgICAgIG1wYzoge1xuICAgICAgICBiaXRnb1B1YmxpY0tleTogYml0Z29HcGdLZXkucHVibGljS2V5LFxuICAgICAgICBiaXRnb0VkZHNhTXBjdjJQdWJsaWNLZXk6IGJpdGdvR3BnS2V5LnB1YmxpY0tleSxcbiAgICAgIH0sXG4gICAgfTtcbiAgICBub2NrKGJnVXJsKS5nZXQoJy9hcGkvdjEvY2xpZW50L2NvbnN0YW50cycpLnRpbWVzKDIwKS5yZXBseSgyMDAsIHsgdHRsOiAzNjAwLCBjb25zdGFudHMgfSk7XG5cbiAgICBjb25zdCBbdXNlckRrZywgYmFja3VwRGtnLCBiaXRnb0RrZ10gPSBhd2FpdCBNUFNVdGlsLmdlbmVyYXRlRWREc2FES0dLZXlTaGFyZXMoKTtcbiAgICB1c2VyS2V5U2hhcmUgPSB1c2VyRGtnLmdldEtleVNoYXJlKCk7XG4gICAgYmFja3VwS2V5U2hhcmUgPSBiYWNrdXBEa2cuZ2V0S2V5U2hhcmUoKTtcbiAgICBiaXRnb0tleVNoYXJlID0gYml0Z29Ea2cuZ2V0S2V5U2hhcmUoKTtcblxuICAgIGJhc2VDb2luID0gYml0Z28uY29pbihjb2luTmFtZSk7XG5cbiAgICBjb25zdCB3YWxsZXREYXRhID0ge1xuICAgICAgaWQ6IHR4UmVxdWVzdC53YWxsZXRJZCxcbiAgICAgIGVudGVycHJpc2U6IHR4UmVxdWVzdC5lbnRlcnByaXNlSWQsXG4gICAgICBjb2luOiBjb2luTmFtZSxcbiAgICAgIGNvaW5TcGVjaWZpYzoge1xuICAgICAgICByb290QWRkcmVzczogJ0U3WjZwRmZVaGp4MmRGamRCOVdzMktuS2VwWG9xNjJUZUY1dWFDVlN2cVFWJyxcbiAgICAgIH0sXG4gICAgICBtdWx0aXNpZ1R5cGU6ICd0c3MnLFxuICAgICAgbXVsdGlzaWdUeXBlVmVyc2lvbjogJ01QQ3YyJyxcbiAgICB9O1xuICAgIHdhbGxldCA9IG5ldyBXYWxsZXQoYml0Z28sIGJhc2VDb2luLCB3YWxsZXREYXRhKTtcbiAgICB0c3NVdGlscyA9IG5ldyBFRERTQVV0aWxzLkVkZHNhTVBDdjJVdGlscyhiaXRnbywgYmFzZUNvaW4sIHdhbGxldCk7XG4gIH0pO1xuXG4gIGJlZm9yZUVhY2goYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGF3YWl0IG5vY2tHZXRCaXRnb1B1YmxpY0tleUJhc2VkT25GZWF0dXJlRmxhZ3MoY29pbk5hbWUsIHR4UmVxdWVzdC5lbnRlcnByaXNlSWQhLCBiaXRnb0dwZ0tleSk7XG4gIH0pO1xuXG4gIGFmdGVyKGZ1bmN0aW9uICgpIHtcbiAgICBub2NrLmNsZWFuQWxsKCk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgbm9jay5jbGVhbkFsbCgpO1xuICB9KTtcblxuICBpdCgnc3VjY2Vzc2Z1bGx5IHNpZ25zIGEgdHhSZXF1ZXN0IHdpdGggdXNlciBrZXkgZm9yIGFuIG1wcyBob3Qgd2FsbGV0IHdpdGggV1AnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3Qgbm9ja1Byb21pc2VzID0gYXdhaXQgZ2V0Tm9ja1Byb21pc2VzRm9yRWRkc2FTaWduaW5nKHR4UmVxdWVzdCk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwobm9ja1Byb21pc2VzKTtcblxuICAgIGNvbnN0IHVzZXJQcnZCYXNlNjQgPSBCdWZmZXIuZnJvbSh1c2VyS2V5U2hhcmUpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICBhd2FpdCB0c3NVdGlscy5zaWduVHhSZXF1ZXN0KHtcbiAgICAgIHR4UmVxdWVzdCxcbiAgICAgIHBydjogdXNlclBydkJhc2U2NCxcbiAgICAgIHJlcUlkLFxuICAgICAgdHhQYXJhbXMsXG4gICAgfSk7XG4gICAgbm9ja1Byb21pc2VzWzBdLmlzRG9uZSgpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgbm9ja1Byb21pc2VzWzFdLmlzRG9uZSgpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgbm9ja1Byb21pc2VzWzJdLmlzRG9uZSgpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgbm9ja1Byb21pc2VzWzNdLmlzRG9uZSgpLnNob3VsZC5iZS50cnVlKCk7XG4gIH0pO1xuXG4gIGl0KCdzdWNjZXNzZnVsbHkgc2lnbnMgYSB0eFJlcXVlc3Qgd2l0aCBiYWNrdXAga2V5IGZvciBhbiBtcHMgaG90IHdhbGxldCB3aXRoIFdQJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IG5vY2tQcm9taXNlcyA9IGF3YWl0IGdldE5vY2tQcm9taXNlc0ZvckVkZHNhU2lnbmluZyh0eFJlcXVlc3QsIFJlcXVlc3RUeXBlLnR4LCAwLCBNUEN2MlBhcnRpZXNFbnVtLkJBQ0tVUCk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwobm9ja1Byb21pc2VzKTtcblxuICAgIGNvbnN0IGJhY2t1cFBydkJhc2U2NCA9IEJ1ZmZlci5mcm9tKGJhY2t1cEtleVNoYXJlKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgYXdhaXQgdHNzVXRpbHMuc2lnblR4UmVxdWVzdCh7XG4gICAgICB0eFJlcXVlc3QsXG4gICAgICBwcnY6IGJhY2t1cFBydkJhc2U2NCxcbiAgICAgIG1wY3YyUGFydHlJZDogTVBDdjJQYXJ0aWVzRW51bS5CQUNLVVAsXG4gICAgICByZXFJZCxcbiAgICAgIHR4UGFyYW1zLFxuICAgIH0pO1xuICAgIG5vY2tQcm9taXNlc1swXS5pc0RvbmUoKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIG5vY2tQcm9taXNlc1sxXS5pc0RvbmUoKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIG5vY2tQcm9taXNlc1syXS5pc0RvbmUoKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIG5vY2tQcm9taXNlc1szXS5pc0RvbmUoKS5zaG91bGQuYmUudHJ1ZSgpO1xuICB9KTtcblxuICBpdCgnc3VjY2Vzc2Z1bGx5IHNpZ25zIGEgdHhSZXF1ZXN0IHdpdGggYSBtZXNzYWdlIGZvciBhbiBtcHMgaG90IHdhbGxldCB3aXRoIFdQJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IG5vY2tQcm9taXNlcyA9IGF3YWl0IGdldE5vY2tQcm9taXNlc0ZvckVkZHNhU2lnbmluZyh0eFJlcXVlc3RGb3JNZXNzYWdlU2lnbmluZywgUmVxdWVzdFR5cGUubWVzc2FnZSk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwobm9ja1Byb21pc2VzKTtcblxuICAgIGNvbnN0IHVzZXJQcnZCYXNlNjQgPSBCdWZmZXIuZnJvbSh1c2VyS2V5U2hhcmUpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICBhd2FpdCB0c3NVdGlscy5zaWduVHhSZXF1ZXN0Rm9yTWVzc2FnZSh7XG4gICAgICB0eFJlcXVlc3Q6IHR4UmVxdWVzdEZvck1lc3NhZ2VTaWduaW5nLFxuICAgICAgcHJ2OiB1c2VyUHJ2QmFzZTY0LFxuICAgICAgcmVxSWQsXG4gICAgICBtZXNzYWdlUmF3OiB0eFJlcXVlc3RGb3JNZXNzYWdlU2lnbmluZy5tZXNzYWdlcyFbMF0ubWVzc2FnZVJhdyxcbiAgICAgIGJ1ZmZlclRvU2lnbjogQnVmZmVyLmZyb20obWVzc2FnZUVuY29kZWQsICdoZXgnKSxcbiAgICB9KTtcbiAgICBub2NrUHJvbWlzZXNbMF0uaXNEb25lKCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICBub2NrUHJvbWlzZXNbMV0uaXNEb25lKCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICBub2NrUHJvbWlzZXNbMl0uaXNEb25lKCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICBub2NrUHJvbWlzZXNbM10uaXNEb25lKCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiByb3VuZCAxIHJlc3BvbnNlIGhhcyB3cm9uZyB0eXBlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIG5vY2soJ2h0dHBzOi8vYml0Z28uZmFrZXVybCcpXG4gICAgICAucG9zdChgL2FwaS92Mi93YWxsZXQvJHt0eFJlcXVlc3Qud2FsbGV0SWR9L3R4cmVxdWVzdHMvJHt0eFJlcXVlc3QudHhSZXF1ZXN0SWR9L3RyYW5zYWN0aW9ucy8wL3NpZ25gKVxuICAgICAgLnJlcGx5KDIwMCwge1xuICAgICAgICB0eFJlcXVlc3RJZCxcbiAgICAgICAgdHJhbnNhY3Rpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2lnbmF0dXJlU2hhcmVzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmcm9tOiBTaWduYXR1cmVTaGFyZVR5cGUuQklUR08sXG4gICAgICAgICAgICAgICAgdG86IFNpZ25hdHVyZVNoYXJlVHlwZS5VU0VSLFxuICAgICAgICAgICAgICAgIHNoYXJlOiBKU09OLnN0cmluZ2lmeSh7IHR5cGU6ICdyb3VuZDJPdXRwdXQnLCBkYXRhOiB7fSB9KSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgdXNlclBydkJhc2U2NCA9IEJ1ZmZlci5mcm9tKHVzZXJLZXlTaGFyZSkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgIGF3YWl0IHRzc1V0aWxzXG4gICAgICAuc2lnblR4UmVxdWVzdCh7IHR4UmVxdWVzdCwgcHJ2OiB1c2VyUHJ2QmFzZTY0LCByZXFJZCwgdHhQYXJhbXMgfSlcbiAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9VbmV4cGVjdGVkIHNpZ25hdHVyZSBzaGFyZSByZXNwb25zZS8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIHJvdW5kIDIgcmVzcG9uc2UgaGFzIHdyb25nIHR5cGUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgbWVzc2FnZUJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHNpZ25hYmxlSGV4LCAnaGV4Jyk7XG4gICAgY29uc3QgYml0Z29Ec2cgPSBuZXcgRWRkc2FNUFNEc2cuRFNHKE1QQ3YyUGFydGllc0VudW0uQklUR08pO1xuICAgIGF3YWl0IGJpdGdvRHNnLmluaXREc2coXG4gICAgICBiaXRnb0tleVNoYXJlLFxuICAgICAgbWVzc2FnZUJ1ZmZlcixcbiAgICAgIHR4UmVxdWVzdC50cmFuc2FjdGlvbnMhWzBdLnVuc2lnbmVkVHguZGVyaXZhdGlvblBhdGgsXG4gICAgICBNUEN2MlBhcnRpZXNFbnVtLlVTRVJcbiAgICApO1xuICAgIGNvbnN0IGJpdGdvTXNnMSA9IGJpdGdvRHNnLmdldEZpcnN0TWVzc2FnZSgpO1xuXG4gICAgLy8gUm91bmQgMTogcmV0dXJuIGEgdmFsaWQgcm91bmQxT3V0cHV0IHNvIHRoZSBvcmNoZXN0cmF0aW9uIGNhbiBwcm9jZWVkXG4gICAgbm9jaygnaHR0cHM6Ly9iaXRnby5mYWtldXJsJylcbiAgICAgIC5wb3N0KFxuICAgICAgICBgL2FwaS92Mi93YWxsZXQvJHt0eFJlcXVlc3Qud2FsbGV0SWR9L3R4cmVxdWVzdHMvJHt0eFJlcXVlc3QudHhSZXF1ZXN0SWR9L3RyYW5zYWN0aW9ucy8wL3NpZ25gLFxuICAgICAgICAoYm9keSkgPT5cbiAgICAgICAgICAoSlNPTi5wYXJzZShib2R5LnNpZ25hdHVyZVNoYXJlc1swXS5zaGFyZSkgYXMgRWRkc2FNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQxSW5wdXQpLnR5cGUgPT09ICdyb3VuZDFJbnB1dCdcbiAgICAgIClcbiAgICAgIC5yZXBseShcbiAgICAgICAgMjAwLFxuICAgICAgICBhc3luYyAoX3VyaTogc3RyaW5nLCBib2R5OiB7IHNpZ25hdHVyZVNoYXJlczogU2lnbmF0dXJlU2hhcmVSZWNvcmRbXTsgc2lnbmVyR3BnUHVibGljS2V5OiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHBhcnNlZFNoYXJlID0gSlNPTi5wYXJzZShib2R5LnNpZ25hdHVyZVNoYXJlc1swXS5zaGFyZSkgYXMgRWRkc2FNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQxSW5wdXQ7XG4gICAgICAgICAgY29uc3QgdXNlck1zZzFCeXRlcyA9IEJ1ZmZlci5mcm9tKHBhcnNlZFNoYXJlLmRhdGEubXNnMS5tZXNzYWdlLCAnYmFzZTY0Jyk7XG4gICAgICAgICAgY29uc3QgdXNlckRlc2VyaWFsaXplZE1zZzE6IE1QU1R5cGVzLkRlc2VyaWFsaXplZE1lc3NhZ2UgPSB7XG4gICAgICAgICAgICBmcm9tOiBNUEN2MlBhcnRpZXNFbnVtLlVTRVIsXG4gICAgICAgICAgICBwYXlsb2FkOiBuZXcgVWludDhBcnJheSh1c2VyTXNnMUJ5dGVzKSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIC8vIEFkdmFuY2UgYml0Z28gc2Vzc2lvbiAod2UgZG9uJ3QgbmVlZCBiaXRnb01zZzIgZm9yIHRoaXMgdGVzdClcbiAgICAgICAgICBiaXRnb0RzZy5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKFtiaXRnb01zZzEsIHVzZXJEZXNlcmlhbGl6ZWRNc2cxXSk7XG4gICAgICAgICAgY29uc3QgYml0Z29TaWduZWRNc2cxID0gYXdhaXQgTVBTQ29tbXMuZGV0YWNoU2lnbk1wc01lc3NhZ2UoQnVmZmVyLmZyb20oYml0Z29Nc2cxLnBheWxvYWQpLCBiaXRnb1BydktleU9iaik7XG4gICAgICAgICAgY29uc3Qgcm91bmQxT3V0cHV0OiBFZGRzYU1QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDFPdXRwdXQgPSB7XG4gICAgICAgICAgICB0eXBlOiAncm91bmQxT3V0cHV0JyxcbiAgICAgICAgICAgIGRhdGE6IHsgbXNnMTogYml0Z29TaWduZWRNc2cxIH0sXG4gICAgICAgICAgfTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHhSZXF1ZXN0SWQsXG4gICAgICAgICAgICB0cmFuc2FjdGlvbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNpZ25hdHVyZVNoYXJlczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBmcm9tOiBTaWduYXR1cmVTaGFyZVR5cGUuQklUR08sXG4gICAgICAgICAgICAgICAgICAgIHRvOiBTaWduYXR1cmVTaGFyZVR5cGUuVVNFUixcbiAgICAgICAgICAgICAgICAgICAgc2hhcmU6IEpTT04uc3RyaW5naWZ5KHJvdW5kMU91dHB1dCksXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAvLyBSb3VuZCAyOiByZXR1cm4gYSBzaGFyZSB3aXRoIHdyb25nIHR5cGUgKHJvdW5kM091dHB1dCBpbnN0ZWFkIG9mIHJvdW5kMk91dHB1dClcbiAgICBub2NrKCdodHRwczovL2JpdGdvLmZha2V1cmwnKVxuICAgICAgLnBvc3QoXG4gICAgICAgIGAvYXBpL3YyL3dhbGxldC8ke3R4UmVxdWVzdC53YWxsZXRJZH0vdHhyZXF1ZXN0cy8ke3R4UmVxdWVzdC50eFJlcXVlc3RJZH0vdHJhbnNhY3Rpb25zLzAvc2lnbmAsXG4gICAgICAgIChib2R5KSA9PlxuICAgICAgICAgIChKU09OLnBhcnNlKGJvZHkuc2lnbmF0dXJlU2hhcmVzWzBdLnNoYXJlKSBhcyBFZGRzYU1QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDJJbnB1dCkudHlwZSA9PT0gJ3JvdW5kMklucHV0J1xuICAgICAgKVxuICAgICAgLnJlcGx5KDIwMCwge1xuICAgICAgICB0eFJlcXVlc3RJZCxcbiAgICAgICAgdHJhbnNhY3Rpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2lnbmF0dXJlU2hhcmVzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmcm9tOiBTaWduYXR1cmVTaGFyZVR5cGUuVVNFUixcbiAgICAgICAgICAgICAgICB0bzogU2lnbmF0dXJlU2hhcmVUeXBlLkJJVEdPLFxuICAgICAgICAgICAgICAgIHNoYXJlOiAncGxhY2Vob2xkZXInLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZnJvbTogU2lnbmF0dXJlU2hhcmVUeXBlLkJJVEdPLFxuICAgICAgICAgICAgICAgIHRvOiBTaWduYXR1cmVTaGFyZVR5cGUuVVNFUixcbiAgICAgICAgICAgICAgICBzaGFyZTogSlNPTi5zdHJpbmdpZnkoeyB0eXBlOiAncm91bmQzT3V0cHV0JywgZGF0YToge30gfSksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgIGNvbnN0IHVzZXJQcnZCYXNlNjQgPSBCdWZmZXIuZnJvbSh1c2VyS2V5U2hhcmUpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICBhd2FpdCB0c3NVdGlsc1xuICAgICAgLnNpZ25UeFJlcXVlc3QoeyB0eFJlcXVlc3QsIHBydjogdXNlclBydkJhc2U2NCwgcmVxSWQsIHR4UGFyYW1zIH0pXG4gICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvVW5leHBlY3RlZCBzaWduYXR1cmUgc2hhcmUgcmVzcG9uc2UuIFVuYWJsZSB0byBwYXJzZSBkYXRhLi8pO1xuICB9KTtcblxuICBpdCgnc3VjY2Vzc2Z1bGx5IHNpZ25zIGEgdHhSZXF1ZXN0IGFmdGVyIHJlY2VpdmluZyBtdWx0aXBsZSA0MjkgZXJyb3JzIGluIHJvdW5kIDInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3Qgbm9ja1Byb21pc2VzID0gYXdhaXQgZ2V0Tm9ja1Byb21pc2VzRm9yRWRkc2FTaWduaW5nKHR4UmVxdWVzdCwgUmVxdWVzdFR5cGUudHgsIDMpO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKG5vY2tQcm9taXNlcyk7XG5cbiAgICBjb25zdCB1c2VyUHJ2QmFzZTY0ID0gQnVmZmVyLmZyb20odXNlcktleVNoYXJlKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgYXdhaXQgdHNzVXRpbHMuc2lnblR4UmVxdWVzdCh7XG4gICAgICB0eFJlcXVlc3QsXG4gICAgICBwcnY6IHVzZXJQcnZCYXNlNjQsXG4gICAgICByZXFJZCxcbiAgICAgIHR4UGFyYW1zLFxuICAgIH0pO1xuICAgIG5vY2tQcm9taXNlc1swXS5pc0RvbmUoKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIG5vY2tQcm9taXNlc1sxXS5pc0RvbmUoKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIG5vY2tQcm9taXNlc1syXS5pc0RvbmUoKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIG5vY2tQcm9taXNlc1szXS5pc0RvbmUoKS5zaG91bGQuYmUudHJ1ZSgpO1xuICB9KTtcblxuICBpdCgnc3VjY2Vzc2Z1bGx5IHNpZ25zIGEgdHhSZXF1ZXN0IGFmdGVyIHJlY2VpdmluZyBtdWx0aXBsZSA0MjkgZXJyb3JzIGluIHJvdW5kIDEnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3Qgbm9ja1Byb21pc2VzID0gYXdhaXQgZ2V0Tm9ja1Byb21pc2VzRm9yRWRkc2FTaWduaW5nKHR4UmVxdWVzdCwgUmVxdWVzdFR5cGUudHgsIDMsIE1QQ3YyUGFydGllc0VudW0uVVNFUiwgMSk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwobm9ja1Byb21pc2VzKTtcblxuICAgIGNvbnN0IHVzZXJQcnZCYXNlNjQgPSBCdWZmZXIuZnJvbSh1c2VyS2V5U2hhcmUpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICBhd2FpdCB0c3NVdGlscy5zaWduVHhSZXF1ZXN0KHtcbiAgICAgIHR4UmVxdWVzdCxcbiAgICAgIHBydjogdXNlclBydkJhc2U2NCxcbiAgICAgIHJlcUlkLFxuICAgICAgdHhQYXJhbXMsXG4gICAgfSk7XG4gICAgbm9ja1Byb21pc2VzWzBdLmlzRG9uZSgpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgbm9ja1Byb21pc2VzWzFdLmlzRG9uZSgpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgbm9ja1Byb21pc2VzWzJdLmlzRG9uZSgpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgbm9ja1Byb21pc2VzWzNdLmlzRG9uZSgpLnNob3VsZC5iZS50cnVlKCk7XG4gIH0pO1xuXG4gIGl0KCdzdWNjZXNzZnVsbHkgc2lnbnMgYSB0eFJlcXVlc3QgYWZ0ZXIgcmVjZWl2aW5nIG11bHRpcGxlIDQyOSBlcnJvcnMgaW4gcm91bmQgMycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBub2NrUHJvbWlzZXMgPSBhd2FpdCBnZXROb2NrUHJvbWlzZXNGb3JFZGRzYVNpZ25pbmcodHhSZXF1ZXN0LCBSZXF1ZXN0VHlwZS50eCwgMywgTVBDdjJQYXJ0aWVzRW51bS5VU0VSLCAzKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChub2NrUHJvbWlzZXMpO1xuXG4gICAgY29uc3QgdXNlclBydkJhc2U2NCA9IEJ1ZmZlci5mcm9tKHVzZXJLZXlTaGFyZSkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgIGF3YWl0IHRzc1V0aWxzLnNpZ25UeFJlcXVlc3Qoe1xuICAgICAgdHhSZXF1ZXN0LFxuICAgICAgcHJ2OiB1c2VyUHJ2QmFzZTY0LFxuICAgICAgcmVxSWQsXG4gICAgICB0eFBhcmFtcyxcbiAgICB9KTtcbiAgICBub2NrUHJvbWlzZXNbMF0uaXNEb25lKCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICBub2NrUHJvbWlzZXNbMV0uaXNEb25lKCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICBub2NrUHJvbWlzZXNbMl0uaXNEb25lKCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICBub2NrUHJvbWlzZXNbM10uaXNEb25lKCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgfSk7XG5cbiAgaXQoJ2ZhaWxzIHRvIHNpZ24gYSB0eFJlcXVlc3QgYWZ0ZXIgcmVjZWl2aW5nIG92ZXIgMyA0MjkgZXJyb3JzIGluIHJvdW5kIDInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3Qgbm9ja1Byb21pc2VzID0gYXdhaXQgZ2V0Tm9ja1Byb21pc2VzRm9yRWRkc2FTaWduaW5nKHR4UmVxdWVzdCwgUmVxdWVzdFR5cGUudHgsIDQpO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKG5vY2tQcm9taXNlcyk7XG5cbiAgICBjb25zdCB1c2VyUHJ2QmFzZTY0ID0gQnVmZmVyLmZyb20odXNlcktleVNoYXJlKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgYXdhaXQgdHNzVXRpbHNcbiAgICAgIC5zaWduVHhSZXF1ZXN0KHtcbiAgICAgICAgdHhSZXF1ZXN0LFxuICAgICAgICBwcnY6IHVzZXJQcnZCYXNlNjQsXG4gICAgICAgIHJlcUlkLFxuICAgICAgICB0eFBhcmFtcyxcbiAgICAgIH0pXG4gICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnVG9vIG1hbnkgcmVxdWVzdHMsIHNsb3cgZG93biEnKTtcbiAgICBub2NrUHJvbWlzZXNbMF0uaXNEb25lKCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICBub2NrUHJvbWlzZXNbMV0uaXNEb25lKCkuc2hvdWxkLmJlLmZhbHNlKCk7XG4gICAgbm9ja1Byb21pc2VzWzJdLmlzRG9uZSgpLnNob3VsZC5iZS5mYWxzZSgpO1xuICAgIG5vY2tQcm9taXNlc1szXS5pc0RvbmUoKS5zaG91bGQuYmUuZmFsc2UoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiByb3VuZCAzIHJlc3BvbnNlIGlzIG1hbGZvcm1lZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBub2NrUHJvbWlzZXMgPSBhd2FpdCBnZXROb2NrUHJvbWlzZXNGb3JFZGRzYVNpZ25pbmcoXG4gICAgICB0eFJlcXVlc3QsXG4gICAgICBSZXF1ZXN0VHlwZS50eCxcbiAgICAgIDAsXG4gICAgICBNUEN2MlBhcnRpZXNFbnVtLlVTRVIsXG4gICAgICAyLFxuICAgICAgdHJ1ZVxuICAgICk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwobm9ja1Byb21pc2VzKTtcblxuICAgIGNvbnN0IHVzZXJQcnZCYXNlNjQgPSBCdWZmZXIuZnJvbSh1c2VyS2V5U2hhcmUpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICBhd2FpdCB0c3NVdGlsc1xuICAgICAgLnNpZ25UeFJlcXVlc3Qoe1xuICAgICAgICB0eFJlcXVlc3QsXG4gICAgICAgIHBydjogdXNlclBydkJhc2U2NCxcbiAgICAgICAgcmVxSWQsXG4gICAgICAgIHR4UGFyYW1zLFxuICAgICAgfSlcbiAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdJbnZhbGlkIHR4UmVxdWVzdCBvYmplY3QgYWZ0ZXIgcm91bmQgMycpO1xuICAgIG5vY2tQcm9taXNlc1swXS5pc0RvbmUoKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIG5vY2tQcm9taXNlc1sxXS5pc0RvbmUoKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIG5vY2tQcm9taXNlc1syXS5pc0RvbmUoKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIG5vY2tQcm9taXNlc1szXS5pc0RvbmUoKS5zaG91bGQuYmUuZmFsc2UoKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3Jlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyBndWFyZCAoV0NJLTExMTEpJywgZnVuY3Rpb24gKCkge1xuICAgIGxldCBzYW5kYm94OiBzaW5vbi5TaW5vblNhbmRib3g7XG5cbiAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIHNhbmRib3ggPSBzaW5vbi5jcmVhdGVTYW5kYm94KCk7XG4gICAgfSk7XG5cbiAgICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgc2FuZGJveC5yZXN0b3JlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhyb3dzIEludmFsaWRUcmFuc2FjdGlvbkVycm9yIHdoZW4gdHhQYXJhbXMgaXMgYWJzZW50IGFuZCBpbnRlbnQgaGFzIG5vIHJlY2lwaWVudHMgKG1hbGljaW91cy9lbXB0eS1yZWNpcGllbnQgcGF0aCknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBTaW11bGF0ZSB0aGUgc3Rha2luZ0F1dGhvcml6ZSBhdHRhY2sgdmVjdG9yOiBpbnRlbnQgaGFzIG5vIHJlY2lwaWVudHNcbiAgICAgIC8vIGFuZCBpbnRlbnRUeXBlIGlzIG5vdCBvbiB0aGUgTk9fUkVDSVBJRU5UX1RYX1RZUEVTIGFsbG93bGlzdC5cbiAgICAgIGNvbnN0IG1hbGljaW91c1R4UmVxdWVzdDogVHhSZXF1ZXN0ID0ge1xuICAgICAgICAuLi50eFJlcXVlc3QsXG4gICAgICAgIGludGVudDogeyBpbnRlbnRUeXBlOiAnc3Rha2luZ0F1dGhvcml6ZScgfSBhcyBhbnksXG4gICAgICB9O1xuICAgICAgY29uc3QgdXNlclBydkJhc2U2NCA9IEJ1ZmZlci5mcm9tKHVzZXJLZXlTaGFyZSkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAgYXdhaXQgdHNzVXRpbHNcbiAgICAgICAgLnNpZ25UeFJlcXVlc3Qoe1xuICAgICAgICAgIHR4UmVxdWVzdDogbWFsaWNpb3VzVHhSZXF1ZXN0LFxuICAgICAgICAgIHBydjogdXNlclBydkJhc2U2NCxcbiAgICAgICAgICByZXFJZCxcbiAgICAgICAgICAvLyBObyB0eFBhcmFtcyDigJQgdGhlIHJlLXNpZ24gcGF0aCB0aGF0IHdhcyBwcmV2aW91c2x5IHZ1bG5lcmFibGVcbiAgICAgICAgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Rocm93cyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciB3aGVuIHR4UGFyYW1zIGhhcyBlbXB0eSByZWNpcGllbnRzIGFuZCBpbnRlbnRUeXBlIGlzIG5vdCBhbGxvd2xpc3RlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hbGljaW91c1R4UmVxdWVzdDogVHhSZXF1ZXN0ID0ge1xuICAgICAgICAuLi50eFJlcXVlc3QsXG4gICAgICAgIGludGVudDogeyBpbnRlbnRUeXBlOiAncGF5bWVudCcgfSBhcyBhbnksXG4gICAgICB9O1xuICAgICAgY29uc3QgdXNlclBydkJhc2U2NCA9IEJ1ZmZlci5mcm9tKHVzZXJLZXlTaGFyZSkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAgYXdhaXQgdHNzVXRpbHNcbiAgICAgICAgLnNpZ25UeFJlcXVlc3Qoe1xuICAgICAgICAgIHR4UmVxdWVzdDogbWFsaWNpb3VzVHhSZXF1ZXN0LFxuICAgICAgICAgIHBydjogdXNlclBydkJhc2U2NCxcbiAgICAgICAgICByZXFJZCxcbiAgICAgICAgICB0eFBhcmFtczogeyByZWNpcGllbnRzOiBbXSB9LFxuICAgICAgICB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aChJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcik7XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3QgdGhyb3cgZm9yIGFsbG93bGlzdGVkIG5vLXJlY2lwaWVudCBpbnRlbnRUeXBlIChkZWFjdGl2YXRlKScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNhbmRib3guc3R1YihiYXNlQ29pbiwgJ3ZlcmlmeVRyYW5zYWN0aW9uJykucmVzb2x2ZXModHJ1ZSk7XG4gICAgICBjb25zdCBub2NrUHJvbWlzZXMgPSBhd2FpdCBnZXROb2NrUHJvbWlzZXNGb3JFZGRzYVNpZ25pbmcodHhSZXF1ZXN0KTtcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKG5vY2tQcm9taXNlcyk7XG5cbiAgICAgIGNvbnN0IG5vUmVjaXBpZW50VHhSZXF1ZXN0OiBUeFJlcXVlc3QgPSB7XG4gICAgICAgIC4uLnR4UmVxdWVzdCxcbiAgICAgICAgaW50ZW50OiB7IGludGVudFR5cGU6ICdkZWFjdGl2YXRlJyB9IGFzIGFueSxcbiAgICAgIH07XG4gICAgICBjb25zdCB1c2VyUHJ2QmFzZTY0ID0gQnVmZmVyLmZyb20odXNlcktleVNoYXJlKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgICBhd2FpdCB0c3NVdGlscy5zaWduVHhSZXF1ZXN0KHtcbiAgICAgICAgdHhSZXF1ZXN0OiBub1JlY2lwaWVudFR4UmVxdWVzdCxcbiAgICAgICAgcHJ2OiB1c2VyUHJ2QmFzZTY0LFxuICAgICAgICByZXFJZCxcbiAgICAgICAgLy8gTm8gdHhQYXJhbXMg4oCUIGxlZ2l0aW1hdGUgbm8tcmVjaXBpZW50IGZsb3dcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IHRocm93IGZvciBhbGxvd2xpc3RlZCBuby1yZWNpcGllbnQgaW50ZW50VHlwZSAoY29uc29saWRhdGUpJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgc2FuZGJveC5zdHViKGJhc2VDb2luLCAndmVyaWZ5VHJhbnNhY3Rpb24nKS5yZXNvbHZlcyh0cnVlKTtcbiAgICAgIGNvbnN0IG5vY2tQcm9taXNlcyA9IGF3YWl0IGdldE5vY2tQcm9taXNlc0ZvckVkZHNhU2lnbmluZyh0eFJlcXVlc3QpO1xuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwobm9ja1Byb21pc2VzKTtcblxuICAgICAgY29uc3QgY29uc29saWRhdGVUeFJlcXVlc3Q6IFR4UmVxdWVzdCA9IHtcbiAgICAgICAgLi4udHhSZXF1ZXN0LFxuICAgICAgICBpbnRlbnQ6IHsgaW50ZW50VHlwZTogJ2NvbnNvbGlkYXRlJyB9IGFzIGFueSxcbiAgICAgIH07XG4gICAgICBjb25zdCB1c2VyUHJ2QmFzZTY0ID0gQnVmZmVyLmZyb20odXNlcktleVNoYXJlKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgICBhd2FpdCB0c3NVdGlscy5zaWduVHhSZXF1ZXN0KHtcbiAgICAgICAgdHhSZXF1ZXN0OiBjb25zb2xpZGF0ZVR4UmVxdWVzdCxcbiAgICAgICAgcHJ2OiB1c2VyUHJ2QmFzZTY0LFxuICAgICAgICByZXFJZCxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3VzZXMgaW50ZW50IHJlY2lwaWVudHMgd2hlbiB0eFBhcmFtcyBpcyBhYnNlbnQgYW5kIGludGVudCBoYXMgcmVjaXBpZW50cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNhbmRib3guc3R1YihiYXNlQ29pbiwgJ3ZlcmlmeVRyYW5zYWN0aW9uJykucmVzb2x2ZXModHJ1ZSk7XG4gICAgICBjb25zdCBub2NrUHJvbWlzZXMgPSBhd2FpdCBnZXROb2NrUHJvbWlzZXNGb3JFZGRzYVNpZ25pbmcodHhSZXF1ZXN0KTtcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKG5vY2tQcm9taXNlcyk7XG5cbiAgICAgIGNvbnN0IGludGVudFJlY2lwaWVudFR4UmVxdWVzdDogVHhSZXF1ZXN0ID0ge1xuICAgICAgICAuLi50eFJlcXVlc3QsXG4gICAgICAgIGludGVudDoge1xuICAgICAgICAgIGludGVudFR5cGU6ICdwYXltZW50JyxcbiAgICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGFkZHJlc3M6IHsgYWRkcmVzczogJ0hNRWdiUjRTMmhMS2ZzdDJWWlVWcEhWVXU0RmlvRlB5VzVpVXVKdlpkTXZzJyB9LFxuICAgICAgICAgICAgICBhbW91bnQ6IHsgdmFsdWU6ICc5OTk5OTAwMDAnLCBzeW1ib2w6ICdzb2wnIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0gYXMgYW55LFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHVzZXJQcnZCYXNlNjQgPSBCdWZmZXIuZnJvbSh1c2VyS2V5U2hhcmUpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICAgIC8vIFNob3VsZCBub3QgdGhyb3cg4oCUIGludGVudCBwcm92aWRlcyB0aGUgcmVjaXBpZW50c1xuICAgICAgYXdhaXQgdHNzVXRpbHMuc2lnblR4UmVxdWVzdCh7XG4gICAgICAgIHR4UmVxdWVzdDogaW50ZW50UmVjaXBpZW50VHhSZXF1ZXN0LFxuICAgICAgICBwcnY6IHVzZXJQcnZCYXNlNjQsXG4gICAgICAgIHJlcUlkLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3QgdGhyb3cgZm9yIHN0YWtpbmcgaW50ZW50IHdpdGggc3Rha2luZ1JlcXVlc3RJZCAoZ2VuZXJpYyBzdGFraW5nIHNpZ25hbCknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBzYW5kYm94LnN0dWIoYmFzZUNvaW4sICd2ZXJpZnlUcmFuc2FjdGlvbicpLnJlc29sdmVzKHRydWUpO1xuICAgICAgY29uc3Qgbm9ja1Byb21pc2VzID0gYXdhaXQgZ2V0Tm9ja1Byb21pc2VzRm9yRWRkc2FTaWduaW5nKHR4UmVxdWVzdCk7XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChub2NrUHJvbWlzZXMpO1xuXG4gICAgICBjb25zdCBzdGFraW5nVHhSZXF1ZXN0OiBUeFJlcXVlc3QgPSB7XG4gICAgICAgIC4uLnR4UmVxdWVzdCxcbiAgICAgICAgaW50ZW50OiB7XG4gICAgICAgICAgaW50ZW50VHlwZTogJ2RlbGVnYXRlJyxcbiAgICAgICAgICBzdGFraW5nUmVxdWVzdElkOiAnc3Rha2luZy1yZXEtaWQtMTIzJyxcbiAgICAgICAgfSBhcyBhbnksXG4gICAgICB9O1xuICAgICAgY29uc3QgdXNlclBydkJhc2U2NCA9IEJ1ZmZlci5mcm9tKHVzZXJLZXlTaGFyZSkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAgYXdhaXQgdHNzVXRpbHMuc2lnblR4UmVxdWVzdCh7XG4gICAgICAgIHR4UmVxdWVzdDogc3Rha2luZ1R4UmVxdWVzdCxcbiAgICAgICAgcHJ2OiB1c2VyUHJ2QmFzZTY0LFxuICAgICAgICByZXFJZCxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBhc3luYyBmdW5jdGlvbiBnZXROb2NrUHJvbWlzZXNGb3JFZGRzYVNpZ25pbmcoXG4gICAgdHhSZXF1ZXN0OiBUeFJlcXVlc3QsXG4gICAgcmVxdWVzdFR5cGU6IFJlcXVlc3RUeXBlID0gUmVxdWVzdFR5cGUudHgsXG4gICAgcmF0ZUxpbWl0RXJyb3JDb3VudCA9IDAsXG4gICAgc2lnbmVyUGFydHlJZDogRUNEU0FVdGlscy5NUEN2MlBhcnRpZXNFbnVtID0gTVBDdjJQYXJ0aWVzRW51bS5VU0VSLFxuICAgIHJhdGVMaW1pdFJvdW5kID0gMixcbiAgICBtYWxmb3JtZWRSb3VuZDNSZXNwb25zZSA9IGZhbHNlXG4gICk6IFByb21pc2U8bm9jay5TY29wZVtdPiB7XG4gICAgY29uc3QgdHhPck1lc3NhZ2VUb1NpZ24gPVxuICAgICAgcmVxdWVzdFR5cGUgPT09IFJlcXVlc3RUeXBlLm1lc3NhZ2VcbiAgICAgICAgPyB0eFJlcXVlc3QubWVzc2FnZXMhWzBdLm1lc3NhZ2VFbmNvZGVkIVxuICAgICAgICA6IHR4UmVxdWVzdC50cmFuc2FjdGlvbnMhWzBdLnVuc2lnbmVkVHguc2lnbmFibGVIZXg7XG4gICAgY29uc3QgbWVzc2FnZUJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHR4T3JNZXNzYWdlVG9TaWduLCAnaGV4Jyk7XG4gICAgY29uc3QgYml0Z29TZXNzaW9uID0gbmV3IEVkZHNhTVBTRHNnLkRTRyhNUEN2MlBhcnRpZXNFbnVtLkJJVEdPKTtcbiAgICBhd2FpdCBiaXRnb1Nlc3Npb24uaW5pdERzZyhcbiAgICAgIGJpdGdvS2V5U2hhcmUsXG4gICAgICBtZXNzYWdlQnVmZmVyLFxuICAgICAgdHhSZXF1ZXN0LnRyYW5zYWN0aW9ucz8uWzBdLnVuc2lnbmVkVHguZGVyaXZhdGlvblBhdGggfHwgJ20vMCcsXG4gICAgICBzaWduZXJQYXJ0eUlkXG4gICAgKTtcbiAgICBjb25zdCBiaXRnb01zZzEgPSBiaXRnb1Nlc3Npb24uZ2V0Rmlyc3RNZXNzYWdlKCk7XG4gICAgbGV0IGJpdGdvTXNnMjogTVBTVHlwZXMuRGVzZXJpYWxpemVkTWVzc2FnZSB8IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiBbXG4gICAgICBhd2FpdCBub2NrVHhSZXF1ZXN0UmVzcG9uc2VTaWduYXR1cmVTaGFyZVJvdW5kT25lKFxuICAgICAgICBiaXRnb1Nlc3Npb24sXG4gICAgICAgIHR4UmVxdWVzdCxcbiAgICAgICAgYml0Z29Nc2cxLFxuICAgICAgICBiaXRnb1BydktleU9iaixcbiAgICAgICAgKG1zZykgPT4ge1xuICAgICAgICAgIGJpdGdvTXNnMiA9IG1zZztcbiAgICAgICAgfSxcbiAgICAgICAgcmVxdWVzdFR5cGUsXG4gICAgICAgIHNpZ25lclBhcnR5SWQsXG4gICAgICAgIHJhdGVMaW1pdFJvdW5kID09PSAxID8gcmF0ZUxpbWl0RXJyb3JDb3VudCA6IDBcbiAgICAgICksXG4gICAgICBhd2FpdCBub2NrVHhSZXF1ZXN0UmVzcG9uc2VTaWduYXR1cmVTaGFyZVJvdW5kVHdvKFxuICAgICAgICB0eFJlcXVlc3QsXG4gICAgICAgICgpID0+IGJpdGdvTXNnMiEsXG4gICAgICAgIGJpdGdvUHJ2S2V5T2JqLFxuICAgICAgICByZXF1ZXN0VHlwZSxcbiAgICAgICAgcmF0ZUxpbWl0Um91bmQgPT09IDIgPyByYXRlTGltaXRFcnJvckNvdW50IDogMCxcbiAgICAgICAgc2lnbmVyUGFydHlJZFxuICAgICAgKSxcbiAgICAgIGF3YWl0IG5vY2tUeFJlcXVlc3RSZXNwb25zZVNpZ25hdHVyZVNoYXJlUm91bmRUaHJlZShcbiAgICAgICAgdHhSZXF1ZXN0LFxuICAgICAgICByZXF1ZXN0VHlwZSxcbiAgICAgICAgc2lnbmVyUGFydHlJZCxcbiAgICAgICAgcmF0ZUxpbWl0Um91bmQgPT09IDMgPyByYXRlTGltaXRFcnJvckNvdW50IDogMCxcbiAgICAgICAgbWFsZm9ybWVkUm91bmQzUmVzcG9uc2VcbiAgICAgICksXG4gICAgICBhd2FpdCBub2NrU2VuZFR4UmVxdWVzdCh0eFJlcXVlc3QsIHJlcXVlc3RUeXBlKSxcbiAgICBdO1xuICB9XG59KTtcblxuYXN5bmMgZnVuY3Rpb24gbm9ja0dldEJpdGdvUHVibGljS2V5QmFzZWRPbkZlYXR1cmVGbGFncyhcbiAgY29pbjogc3RyaW5nLFxuICBlbnRlcnByaXNlSWQ6IHN0cmluZyxcbiAgYml0Z29HcGdLZXlQYWlyOiBvcGVucGdwLlNlcmlhbGl6ZWRLZXlQYWlyPHN0cmluZz5cbik6IFByb21pc2U8Qml0Z29HUEdQdWJsaWNLZXk+IHtcbiAgY29uc3QgYml0Z29HUEdQdWJsaWNLZXlSZXNwb25zZTogQml0Z29HUEdQdWJsaWNLZXkgPSB7XG4gICAgbmFtZTogJ2lycmVsZXZhbnQnLFxuICAgIHB1YmxpY0tleTogYml0Z29HcGdLZXlQYWlyLnB1YmxpY0tleSxcbiAgICBtcGN2MlB1YmxpY0tleTogYml0Z29HcGdLZXlQYWlyLnB1YmxpY0tleSxcbiAgICBlZGRzYU1wY3YyUHVibGljS2V5OiBiaXRnb0dwZ0tleVBhaXIucHVibGljS2V5LFxuICAgIGVudGVycHJpc2VJZCxcbiAgfTtcbiAgbm9jaygnaHR0cHM6Ly9iaXRnby5mYWtldXJsJylcbiAgICAuZ2V0KGAvYXBpL3YyLyR7Y29pbn0vdHNzL3B1YmtleWApXG4gICAgLnRpbWVzKDQpXG4gICAgLnF1ZXJ5KHsgZW50ZXJwcmlzZUlkIH0pXG4gICAgLnJlcGx5KDIwMCwgYml0Z29HUEdQdWJsaWNLZXlSZXNwb25zZSk7XG4gIHJldHVybiBiaXRnb0dQR1B1YmxpY0tleVJlc3BvbnNlO1xufVxuXG5hc3luYyBmdW5jdGlvbiBub2NrVHhSZXF1ZXN0UmVzcG9uc2VTaWduYXR1cmVTaGFyZVJvdW5kT25lKFxuICBiaXRnb1Nlc3Npb246IEVkZHNhTVBTRHNnLkRTRyxcbiAgdHhSZXF1ZXN0OiBUeFJlcXVlc3QsXG4gIGJpdGdvTXNnMTogTVBTVHlwZXMuRGVzZXJpYWxpemVkTWVzc2FnZSxcbiAgYml0Z29HcGdQcml2S2V5OiBvcGVucGdwLlByaXZhdGVLZXksXG4gIHNhdmVCaXRnb01zZzI6IChtc2c6IE1QU1R5cGVzLkRlc2VyaWFsaXplZE1lc3NhZ2UpID0+IHZvaWQsXG4gIHJlcXVlc3RUeXBlOiBSZXF1ZXN0VHlwZSA9IFJlcXVlc3RUeXBlLnR4LFxuICBzaWduZXJQYXJ0eUlkOiBFQ0RTQVV0aWxzLk1QQ3YyUGFydGllc0VudW0gPSBNUEN2MlBhcnRpZXNFbnVtLlVTRVIsXG4gIHJhdGVMaW1pdEVycm9yQ291bnQgPSAwXG4pOiBQcm9taXNlPG5vY2suU2NvcGU+IHtcbiAgY29uc3Qgcm91dGUgPSByZXF1ZXN0VHlwZSA9PT0gUmVxdWVzdFR5cGUubWVzc2FnZSA/ICcvbWVzc2FnZXMvMCcgOiAnL3RyYW5zYWN0aW9ucy8wJztcbiAgY29uc3Qgc2lnbmVyU2hhcmVUeXBlID0gc2lnbmVyUGFydHlJZCA9PT0gTVBDdjJQYXJ0aWVzRW51bS5VU0VSID8gU2lnbmF0dXJlU2hhcmVUeXBlLlVTRVIgOiBTaWduYXR1cmVTaGFyZVR5cGUuQkFDS1VQO1xuICBjb25zdCBzY29wZSA9IG5vY2soJ2h0dHBzOi8vYml0Z28uZmFrZXVybCcpO1xuXG4gIGlmIChyYXRlTGltaXRFcnJvckNvdW50ID4gMCkge1xuICAgIHNjb3BlXG4gICAgICAucG9zdChcbiAgICAgICAgYC9hcGkvdjIvd2FsbGV0LyR7dHhSZXF1ZXN0LndhbGxldElkfS90eHJlcXVlc3RzLyR7dHhSZXF1ZXN0LnR4UmVxdWVzdElkfSR7cm91dGV9L3NpZ25gLFxuICAgICAgICAoYm9keSkgPT5cbiAgICAgICAgICAoSlNPTi5wYXJzZShib2R5LnNpZ25hdHVyZVNoYXJlc1swXS5zaGFyZSkgYXMgRWRkc2FNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQxSW5wdXQpLnR5cGUgPT09ICdyb3VuZDFJbnB1dCdcbiAgICAgIClcbiAgICAgIC50aW1lcyhyYXRlTGltaXRFcnJvckNvdW50KVxuICAgICAgLnJlcGx5KDQyOSwge1xuICAgICAgICBlcnJvcjogJ1RvbyBtYW55IHJlcXVlc3RzLCBzbG93IGRvd24hJyxcbiAgICAgICAgbmFtZTogJ1Rvb01hbnlSZXF1ZXN0cycsXG4gICAgICAgIHJlcXVlc3RJZDogJ2NtNXF4MDFsaDAwMTNiMmVrMnN4bDR3MDAnLFxuICAgICAgICBjb250ZXh0OiB7fSxcbiAgICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHNjb3BlXG4gICAgLnBvc3QoXG4gICAgICBgL2FwaS92Mi93YWxsZXQvJHt0eFJlcXVlc3Qud2FsbGV0SWR9L3R4cmVxdWVzdHMvJHt0eFJlcXVlc3QudHhSZXF1ZXN0SWR9JHtyb3V0ZX0vc2lnbmAsXG4gICAgICAoYm9keSkgPT5cbiAgICAgICAgKEpTT04ucGFyc2UoYm9keS5zaWduYXR1cmVTaGFyZXNbMF0uc2hhcmUpIGFzIEVkZHNhTVBDdjJTaWduYXR1cmVTaGFyZVJvdW5kMUlucHV0KS50eXBlID09PSAncm91bmQxSW5wdXQnXG4gICAgKVxuICAgIC5yZXBseSgyMDAsIGFzeW5jIChfdXJpOiBzdHJpbmcsIGJvZHk6IFNpZ25hdHVyZVNoYXJlQXBpQm9keSkgPT4ge1xuICAgICAgY29uc3QgcGFyc2VkU2hhcmUgPSBKU09OLnBhcnNlKGJvZHkuc2lnbmF0dXJlU2hhcmVzWzBdLnNoYXJlKSBhcyBFZGRzYU1QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDFJbnB1dDtcbiAgICAgIGNvbnN0IHVzZXJNc2cxQnl0ZXMgPSBCdWZmZXIuZnJvbShwYXJzZWRTaGFyZS5kYXRhLm1zZzEubWVzc2FnZSwgJ2Jhc2U2NCcpO1xuICAgICAgY29uc3QgdXNlckRlc2VyaWFsaXplZE1zZzE6IE1QU1R5cGVzLkRlc2VyaWFsaXplZE1lc3NhZ2UgPSB7XG4gICAgICAgIGZyb206IHNpZ25lclBhcnR5SWQsXG4gICAgICAgIHBheWxvYWQ6IG5ldyBVaW50OEFycmF5KHVzZXJNc2cxQnl0ZXMpLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IFtiaXRnb01zZzJdID0gYml0Z29TZXNzaW9uLmhhbmRsZUluY29taW5nTWVzc2FnZXMoW2JpdGdvTXNnMSwgdXNlckRlc2VyaWFsaXplZE1zZzFdKTtcbiAgICAgIHNhdmVCaXRnb01zZzIoYml0Z29Nc2cyKTtcblxuICAgICAgY29uc3QgYml0Z29TaWduZWRNc2cxID0gYXdhaXQgTVBTQ29tbXMuZGV0YWNoU2lnbk1wc01lc3NhZ2UoQnVmZmVyLmZyb20oYml0Z29Nc2cxLnBheWxvYWQpLCBiaXRnb0dwZ1ByaXZLZXkpO1xuICAgICAgY29uc3Qgcm91bmQxT3V0cHV0OiBFZGRzYU1QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDFPdXRwdXQgPSB7XG4gICAgICAgIHR5cGU6ICdyb3VuZDFPdXRwdXQnLFxuICAgICAgICBkYXRhOiB7IG1zZzE6IGJpdGdvU2lnbmVkTXNnMSB9LFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlc291cmNlID0gcmVxdWVzdFR5cGUgPT09IFJlcXVlc3RUeXBlLm1lc3NhZ2UgPyAnbWVzc2FnZXMnIDogJ3RyYW5zYWN0aW9ucyc7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eFJlcXVlc3RJZDogdHhSZXF1ZXN0LnR4UmVxdWVzdElkLFxuICAgICAgICBbcmVzb3VyY2VdOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2lnbmF0dXJlU2hhcmVzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmcm9tOiBTaWduYXR1cmVTaGFyZVR5cGUuQklUR08sXG4gICAgICAgICAgICAgICAgdG86IHNpZ25lclNoYXJlVHlwZSxcbiAgICAgICAgICAgICAgICBzaGFyZTogSlNPTi5zdHJpbmdpZnkocm91bmQxT3V0cHV0KSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG4gICAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIG5vY2tUeFJlcXVlc3RSZXNwb25zZVNpZ25hdHVyZVNoYXJlUm91bmRUd28oXG4gIHR4UmVxdWVzdDogVHhSZXF1ZXN0LFxuICBnZXRCaXRnb01zZzI6ICgpID0+IE1QU1R5cGVzLkRlc2VyaWFsaXplZE1lc3NhZ2UsXG4gIGJpdGdvR3BnUHJpdktleTogb3BlbnBncC5Qcml2YXRlS2V5LFxuICByZXF1ZXN0VHlwZTogUmVxdWVzdFR5cGUgPSBSZXF1ZXN0VHlwZS50eCxcbiAgcmF0ZUxpbWl0RXJyb3JDb3VudCA9IDAsXG4gIHNpZ25lclBhcnR5SWQ6IEVDRFNBVXRpbHMuTVBDdjJQYXJ0aWVzRW51bSA9IE1QQ3YyUGFydGllc0VudW0uVVNFUlxuKTogUHJvbWlzZTxub2NrLlNjb3BlPiB7XG4gIGNvbnN0IHJvdXRlID0gcmVxdWVzdFR5cGUgPT09IFJlcXVlc3RUeXBlLm1lc3NhZ2UgPyAnL21lc3NhZ2VzLzAnIDogJy90cmFuc2FjdGlvbnMvMCc7XG4gIGNvbnN0IHNjb3BlID0gbm9jaygnaHR0cHM6Ly9iaXRnby5mYWtldXJsJyk7XG4gIGNvbnN0IHNpZ25lclNoYXJlVHlwZSA9IHNpZ25lclBhcnR5SWQgPT09IE1QQ3YyUGFydGllc0VudW0uVVNFUiA/IFNpZ25hdHVyZVNoYXJlVHlwZS5VU0VSIDogU2lnbmF0dXJlU2hhcmVUeXBlLkJBQ0tVUDtcblxuICBpZiAocmF0ZUxpbWl0RXJyb3JDb3VudCA+IDApIHtcbiAgICBzY29wZVxuICAgICAgLnBvc3QoXG4gICAgICAgIGAvYXBpL3YyL3dhbGxldC8ke3R4UmVxdWVzdC53YWxsZXRJZH0vdHhyZXF1ZXN0cy8ke3R4UmVxdWVzdC50eFJlcXVlc3RJZH0ke3JvdXRlfS9zaWduYCxcbiAgICAgICAgKGJvZHkpID0+XG4gICAgICAgICAgKEpTT04ucGFyc2UoYm9keS5zaWduYXR1cmVTaGFyZXNbMF0uc2hhcmUpIGFzIEVkZHNhTVBDdjJTaWduYXR1cmVTaGFyZVJvdW5kMklucHV0KS50eXBlID09PSAncm91bmQySW5wdXQnXG4gICAgICApXG4gICAgICAudGltZXMocmF0ZUxpbWl0RXJyb3JDb3VudClcbiAgICAgIC5yZXBseSg0MjksIHtcbiAgICAgICAgZXJyb3I6ICdUb28gbWFueSByZXF1ZXN0cywgc2xvdyBkb3duIScsXG4gICAgICAgIG5hbWU6ICdUb29NYW55UmVxdWVzdHMnLFxuICAgICAgICByZXF1ZXN0SWQ6ICdjbTVxeDAxbGgwMDEzYjJlazJzeGw0dzAwJyxcbiAgICAgICAgY29udGV4dDoge30sXG4gICAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBzY29wZVxuICAgIC5wb3N0KFxuICAgICAgYC9hcGkvdjIvd2FsbGV0LyR7dHhSZXF1ZXN0LndhbGxldElkfS90eHJlcXVlc3RzLyR7dHhSZXF1ZXN0LnR4UmVxdWVzdElkfSR7cm91dGV9L3NpZ25gLFxuICAgICAgKGJvZHkpID0+XG4gICAgICAgIChKU09OLnBhcnNlKGJvZHkuc2lnbmF0dXJlU2hhcmVzWzBdLnNoYXJlKSBhcyBFZGRzYU1QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDJJbnB1dCkudHlwZSA9PT0gJ3JvdW5kMklucHV0J1xuICAgIClcbiAgICAucmVwbHkoMjAwLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBiaXRnb01zZzIgPSBnZXRCaXRnb01zZzIoKTtcbiAgICAgIGNvbnN0IGJpdGdvU2lnbmVkTXNnMiA9IGF3YWl0IE1QU0NvbW1zLmRldGFjaFNpZ25NcHNNZXNzYWdlKEJ1ZmZlci5mcm9tKGJpdGdvTXNnMi5wYXlsb2FkKSwgYml0Z29HcGdQcml2S2V5KTtcbiAgICAgIGNvbnN0IHJvdW5kMk91dHB1dDogRWRkc2FNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQyT3V0cHV0ID0ge1xuICAgICAgICB0eXBlOiAncm91bmQyT3V0cHV0JyxcbiAgICAgICAgZGF0YTogeyBtc2cyOiBiaXRnb1NpZ25lZE1zZzIgfSxcbiAgICAgIH07XG4gICAgICBjb25zdCByZXNvdXJjZSA9IHJlcXVlc3RUeXBlID09PSBSZXF1ZXN0VHlwZS5tZXNzYWdlID8gJ21lc3NhZ2VzJyA6ICd0cmFuc2FjdGlvbnMnO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHhSZXF1ZXN0SWQ6IHR4UmVxdWVzdC50eFJlcXVlc3RJZCxcbiAgICAgICAgW3Jlc291cmNlXTogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNpZ25hdHVyZVNoYXJlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZnJvbTogc2lnbmVyU2hhcmVUeXBlLFxuICAgICAgICAgICAgICAgIHRvOiBTaWduYXR1cmVTaGFyZVR5cGUuQklUR08sXG4gICAgICAgICAgICAgICAgc2hhcmU6ICdwbGFjZWhvbGRlcicsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmcm9tOiBTaWduYXR1cmVTaGFyZVR5cGUuQklUR08sXG4gICAgICAgICAgICAgICAgdG86IHNpZ25lclNoYXJlVHlwZSxcbiAgICAgICAgICAgICAgICBzaGFyZTogSlNPTi5zdHJpbmdpZnkocm91bmQyT3V0cHV0KSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG4gICAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIG5vY2tUeFJlcXVlc3RSZXNwb25zZVNpZ25hdHVyZVNoYXJlUm91bmRUaHJlZShcbiAgdHhSZXF1ZXN0OiBUeFJlcXVlc3QsXG4gIHJlcXVlc3RUeXBlOiBSZXF1ZXN0VHlwZSA9IFJlcXVlc3RUeXBlLnR4LFxuICBzaWduZXJQYXJ0eUlkOiBFQ0RTQVV0aWxzLk1QQ3YyUGFydGllc0VudW0gPSBNUEN2MlBhcnRpZXNFbnVtLlVTRVIsXG4gIHJhdGVMaW1pdEVycm9yQ291bnQgPSAwLFxuICBtYWxmb3JtZWRSZXNwb25zZSA9IGZhbHNlXG4pOiBQcm9taXNlPG5vY2suU2NvcGU+IHtcbiAgY29uc3Qgcm91dGUgPSByZXF1ZXN0VHlwZSA9PT0gUmVxdWVzdFR5cGUubWVzc2FnZSA/ICcvbWVzc2FnZXMvMCcgOiAnL3RyYW5zYWN0aW9ucy8wJztcbiAgY29uc3Qgc2lnbmVyU2hhcmVUeXBlID0gc2lnbmVyUGFydHlJZCA9PT0gTVBDdjJQYXJ0aWVzRW51bS5VU0VSID8gU2lnbmF0dXJlU2hhcmVUeXBlLlVTRVIgOiBTaWduYXR1cmVTaGFyZVR5cGUuQkFDS1VQO1xuICBjb25zdCBzY29wZSA9IG5vY2soJ2h0dHBzOi8vYml0Z28uZmFrZXVybCcpO1xuXG4gIGlmIChyYXRlTGltaXRFcnJvckNvdW50ID4gMCkge1xuICAgIHNjb3BlXG4gICAgICAucG9zdChcbiAgICAgICAgYC9hcGkvdjIvd2FsbGV0LyR7dHhSZXF1ZXN0LndhbGxldElkfS90eHJlcXVlc3RzLyR7dHhSZXF1ZXN0LnR4UmVxdWVzdElkfSR7cm91dGV9L3NpZ25gLFxuICAgICAgICAoYm9keTogU2lnbmF0dXJlU2hhcmVBcGlCb2R5KSA9PlxuICAgICAgICAgIChKU09OLnBhcnNlKGJvZHkuc2lnbmF0dXJlU2hhcmVzWzBdLnNoYXJlKSBhcyBFZGRzYU1QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDNJbnB1dCkudHlwZSA9PT0gJ3JvdW5kM0lucHV0J1xuICAgICAgKVxuICAgICAgLnRpbWVzKHJhdGVMaW1pdEVycm9yQ291bnQpXG4gICAgICAucmVwbHkoNDI5LCB7XG4gICAgICAgIGVycm9yOiAnVG9vIG1hbnkgcmVxdWVzdHMsIHNsb3cgZG93biEnLFxuICAgICAgICBuYW1lOiAnVG9vTWFueVJlcXVlc3RzJyxcbiAgICAgICAgcmVxdWVzdElkOiAnY201cXgwMWxoMDAxM2IyZWsyc3hsNHcwMCcsXG4gICAgICAgIGNvbnRleHQ6IHt9LFxuICAgICAgfSk7XG4gIH1cblxuICByZXR1cm4gc2NvcGVcbiAgICAucG9zdChcbiAgICAgIGAvYXBpL3YyL3dhbGxldC8ke3R4UmVxdWVzdC53YWxsZXRJZH0vdHhyZXF1ZXN0cy8ke3R4UmVxdWVzdC50eFJlcXVlc3RJZH0ke3JvdXRlfS9zaWduYCxcbiAgICAgIChib2R5OiBTaWduYXR1cmVTaGFyZUFwaUJvZHkpID0+XG4gICAgICAgIChKU09OLnBhcnNlKGJvZHkuc2lnbmF0dXJlU2hhcmVzWzBdLnNoYXJlKSBhcyBFZGRzYU1QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDNJbnB1dCkudHlwZSA9PT0gJ3JvdW5kM0lucHV0J1xuICAgIClcbiAgICAucmVwbHkoXG4gICAgICAyMDAsXG4gICAgICBtYWxmb3JtZWRSZXNwb25zZVxuICAgICAgICA/IHsgdHhSZXF1ZXN0SWQ6IGAke3R4UmVxdWVzdC50eFJlcXVlc3RJZH0tdW5leHBlY3RlZGAgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIHR4UmVxdWVzdElkOiB0eFJlcXVlc3QudHhSZXF1ZXN0SWQsXG4gICAgICAgICAgICBzaWduYXR1cmVTaGFyZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGZyb206IHNpZ25lclNoYXJlVHlwZSxcbiAgICAgICAgICAgICAgICB0bzogU2lnbmF0dXJlU2hhcmVUeXBlLkJJVEdPLFxuICAgICAgICAgICAgICAgIHNoYXJlOiAncGxhY2Vob2xkZXInLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9XG4gICAgKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gbm9ja1NlbmRUeFJlcXVlc3QodHhSZXF1ZXN0OiBUeFJlcXVlc3QsIHJlcXVlc3RUeXBlOiBSZXF1ZXN0VHlwZSA9IFJlcXVlc3RUeXBlLnR4KTogUHJvbWlzZTxub2NrLlNjb3BlPiB7XG4gIGNvbnN0IHJvdXRlID0gcmVxdWVzdFR5cGUgPT09IFJlcXVlc3RUeXBlLm1lc3NhZ2UgPyAnL21lc3NhZ2VzLzAnIDogJy90cmFuc2FjdGlvbnMvMCc7XG4gIHJldHVybiBub2NrKCdodHRwczovL2JpdGdvLmZha2V1cmwnKVxuICAgIC5wb3N0KGAvYXBpL3YyL3dhbGxldC8ke3R4UmVxdWVzdC53YWxsZXRJZH0vdHhyZXF1ZXN0cy8ke3R4UmVxdWVzdC50eFJlcXVlc3RJZH0ke3JvdXRlfS9zZW5kYClcbiAgICAucmVwbHkoMjAwLCB7XG4gICAgICB0eFJlcXVlc3RJZDogdHhSZXF1ZXN0LnR4UmVxdWVzdElkLFxuICAgIH0pO1xufVxuIl19
@@ -128,17 +128,5 @@ describe('Wallet signTransaction with verifyTxParams', function () {
128
128
  assert.strictEqual(verifyParams.txPrebuild.txHex, 'mock-tx-hex');
129
129
  assert.deepStrictEqual(verifyParams.txParams, verifyTxParams.txParams);
130
130
  });
131
- it('should throw when verifyTxParams is provided without txHex or TSS txRequestId', async function () {
132
- const signParams = {
133
- txPrebuild: {},
134
- verifyTxParams: {
135
- txParams: {
136
- recipients: [{ address: 'test-address', amount: '1000' }],
137
- },
138
- },
139
- };
140
- await wallet.signTransaction(signParams).should.be.rejectedWith(sdk_core_1.InvalidTransactionError);
141
- sinon.assert.notCalled(verifyTransactionStub);
142
- });
143
131
  });
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnblRyYW5zYWN0aW9uVmVyaWZpY2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC92Mi91bml0L3NpZ25UcmFuc2FjdGlvblZlcmlmaWNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDZCQUE4QjtBQUM5QiwrQkFBK0I7QUFDL0IsaUNBQWlDO0FBQ2pDLGtCQUFnQjtBQUVoQiw0Q0FBMEM7QUFDMUMsOENBQTRDO0FBQzVDLHNEQUEyQztBQUMzQyw4Q0FPeUI7QUFFekIsUUFBUSxDQUFDLDRDQUE0QyxFQUFFO0lBQ3JELElBQUksTUFBYyxDQUFDO0lBQ25CLElBQUksUUFBa0IsQ0FBQztJQUN2QixJQUFJLHFCQUFzQyxDQUFDO0lBRTNDLFVBQVUsQ0FBQztRQUNULE1BQU0sS0FBSyxHQUFHLG9CQUFTLENBQUMsUUFBUSxDQUFDLGtCQUFRLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUM1RCxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMzQixLQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxtQkFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2hELFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTlCLG1CQUFtQjtRQUNuQixNQUFNLFVBQVUsR0FBRztZQUNqQixFQUFFLEVBQUUsZ0JBQWdCO1lBQ3BCLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLGFBQWE7WUFDcEIsQ0FBQyxFQUFFLENBQUM7WUFDSixDQUFDLEVBQUUsQ0FBQztZQUNKLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDO1lBQzlCLFlBQVksRUFBRSxTQUFTO1lBQ3ZCLElBQUksRUFBRSxLQUFLO1lBQ1gsT0FBTyxFQUFFLE1BQU07WUFDZixhQUFhLEVBQUUsUUFBUTtZQUN2QixnQkFBZ0IsRUFBRSxN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Q0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekUsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsK0VBQStFLEVBQUUsS0FBSztRQUN2RixNQUFNLFVBQVUsR0FBaUM7WUFDL0MsVUFBVSxFQUFFLEVBQUU7WUFDZCxjQUFjLEVBQUU7Z0JBQ2QsUUFBUSxFQUFFO29CQUNSLFVBQVUsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7aUJBQzFEO2FBQ0Y7U0FDRixDQUFDO1FBRUYsTUFBTSxNQUFNLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLGtDQUF1QixDQUFDLENBQUM7UUFDekYsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUNoRCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG5vY2sgPSByZXF1aXJlKCdub2NrJyk7XG5pbXBvcnQgKiBhcyBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAnc2hvdWxkJztcblxuaW1wb3J0IHsgQml0R29BUEkgfSBmcm9tICdAYml0Z28vc2RrLWFwaSc7XG5pbXBvcnQgeyBUZXN0Qml0R28gfSBmcm9tICdAYml0Z28vc2RrLXRlc3QnO1xuaW1wb3J0IHsgVGJ0YyB9IGZyb20gJ0BiaXRnby9zZGstY29pbi1idGMnO1xuaW1wb3J0IHtcbiAgY29tbW9uLFxuICBCYXNlQ29pbixcbiAgQml0R29CYXNlLFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgV2FsbGV0LFxuICBXYWxsZXRTaWduVHJhbnNhY3Rpb25PcHRpb25zLFxufSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuXG5kZXNjcmliZSgnV2FsbGV0IHNpZ25UcmFuc2FjdGlvbiB3aXRoIHZlcmlmeVR4UGFyYW1zJywgZnVuY3Rpb24gKCkge1xuICBsZXQgd2FsbGV0OiBXYWxsZXQ7XG4gIGxldCBiYXNlY29pbjogQmFzZUNvaW47XG4gIGxldCB2ZXJpZnlUcmFuc2FjdGlvblN0dWI6IHNpbm9uLlNpbm9uU3R1YjtcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBiaXRnbyA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHb0FQSSwgeyBlbnY6ICdtb2NrJyB9KTtcbiAgICBiaXRnby5pbml0aWFsaXplVGVzdFZhcnMoKTtcbiAgICBiaXRnby5zYWZlUmVnaXN0ZXIoJ3RidGMnLCBUYnRjLmNyZWF0ZUluc3RhbmNlKTtcbiAgICBiYXNlY29pbiA9IGJpdGdvLmNvaW4oJ3RidGMnKTtcblxuICAgIC8vIE1vY2sgd2FsbGV0IGRhdGFcbiAgICBjb25zdCB3YWxsZXREYXRhID0ge1xuICAgICAgaWQ6ICd0ZXN0LXdhbGxldC1pZCcsXG4gICAgICBjb2luOiAndGJ0YycsXG4gICAgICBsYWJlbDogJ1Rlc3QgV2FsbGV0JyxcbiAgICAgIG06IDIsXG4gICAgICBuOiAzLFxuICAgICAga2V5czogWydrZXkxJywgJ2tleTInLCAna2V5MyddLFxuICAgICAgbXVsdGlzaWdUeXBlOiAnb25jaGFpbicsXG4gICAgICB0eXBlOiAnaG90JyxcbiAgICAgIGJhbGFuY2U6IDEwMDAwMCxcbiAgICAgIGJhbGFuY2VTdHJpbmc6ICcxMDAwMDAnLFxuICAgICAgY29uZmlybWVkQmFsYW5jZTogMTAwMDAwLFxuICAgICAgY29uZmlybWVkQmFsYW5jZVN0cmluZzogJzEwMDAwMCcsXG4gICAgICBzcGVuZGFibGVCYWxhbmNlOiAxMDAwMDAsXG4gICAgICBzcGVuZGFibGVCYWxhbmNlU3RyaW5nOiAnMTAwMDAwJyxcbiAgICB9O1xuXG4gICAgd2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbyBhcyB1bmtub3duIGFzIEJpdEdvQmFzZSwgYmFzZWNvaW4gYXMgdW5rbm93biBhcyBCYXNlQ29pbiwgd2FsbGV0RGF0YSk7XG5cbiAgICAvLyBDcmVhdGUgc3R1YnMgZm9yIHZlcmlmaWNhdGlvblxuICAgIHNpbm9uLnN0dWIoYmFzZWNvaW4sICdzaWduVHJhbnNhY3Rpb24nKS5yZXNvbHZlcyh7IHR4SGV4OiAnbW9jay1zaWduZWQtdHgtaGV4JyB9KTtcbiAgICB2ZXJpZnlUcmFuc2FjdGlvblN0dWIgPSBzaW5vbi5zdHViKGJhc2Vjb2luLCAndmVyaWZ5VHJhbnNhY3Rpb24nKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBzaW5vbi5yZXN0b3JlKCk7XG4gICAgbm9jay5jbGVhbkFsbCgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgdmVyaWZpY2F0aW9uIHdoZW4gdmVyaWZ5VHJhbnNhY3Rpb24gdGhyb3dzIGFuIGVycm9yJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIC8vIE1vY2sgdGhlIHZlcmlmaWNhdGlvbiBmdW5jdGlvbiB0byB0aHJvdyBhbiBlcnJvciAoc2ltdWxhdGluZyB2ZXJpZmljYXRpb24gZmFpbHVyZSlcbiAgICB2ZXJpZnlUcmFuc2FjdGlvblN0dWIudGhyb3dzKG5ldyBFcnJvcignVHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZCcpKTtcblxuICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICB0eEhleDogJ21vY2stdHgtaGV4JyxcbiAgICAgIHdhbGxldElkOiAndGVzdC13YWxsZXQtaWQnLFxuICAgIH07XG5cbiAgICBjb25zdCB2ZXJpZnlUeFBhcmFtcyA9IHtcbiAgICAgIHR4UGFyYW1zOiB7XG4gICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAndGVzdC1hZGRyZXNzJyxcbiAgICAgICAgICAgIGFtb3VudDogJzEwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICB0eXBlOiAnc2VuZCcsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCBzaWduUGFyYW1zOiBXYWxsZXRTaWduVHJhbnNhY3Rpb25PcHRpb25zID0ge1xuICAgICAgdHhQcmVidWlsZCxcbiAgICAgIHZlcmlmeVR4UGFyYW1zLFxuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgd2FsbGV0LnNpZ25UcmFuc2FjdGlvbihzaWduUGFyYW1zKTtcbiAgICAgIGFzc2VydC5mYWlsKCdTaG91bGQgaGF2ZSB0aHJvd24gdmVyaWZpY2F0aW9uIGVycm9yJyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGFzc2VydC5vayhcbiAgICAgICAgZXJyb3IubWVzc2FnZS5pbmNsdWRlcygnVHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZCcpLFxuICAgICAgICBgRXJyb3IgbWVzc2FnZSBzaG91bGQgY29udGFpbiAnVHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZCcsIGdvdDogJHtlcnJvci5tZXNzYWdlfWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gVmVyaWZ5IHRoYXQgdGhlIHZlcmlmaWNhdGlvbiBmdW5jdGlvbiB3YXMgY2FsbGVkIHdpdGggdGhlIGV4cGVjdGVkIHBhcmFtZXRlcnNcbiAgICBzaW5vbi5hc3NlcnQuY2FsbGVkT25jZSh2ZXJpZnlUcmFuc2FjdGlvblN0dWIpO1xuICAgIGNvbnN0IGNhbGxBcmdzID0gdmVyaWZ5VHJhbnNhY3Rpb25TdHViLmdldENhbGwoMCkuYXJncztcbiAgICBjb25zdCB2ZXJpZnlQYXJhbXMgPSBjYWxsQXJnc1swXTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwodmVyaWZ5UGFyYW1zLnR4UHJlYnVpbGQudHhIZXgsICdtb2NrLXR4LWhleCcpO1xuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwodmVyaWZ5UGFyYW1zLnR4UGFyYW1zLCB2ZXJpZnlUeFBhcmFtcy50eFBhcmFtcyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcGFzcyB2ZXJpZmljYXRpb24gd2hlbiB2ZXJpZnlUcmFuc2FjdGlvbiBzdWNjZWVkcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAvLyBNb2NrIHRoZSB2ZXJpZmljYXRpb24gZnVuY3Rpb24gdG8gc3VjY2VlZCAobm8gZXJyb3IgdGhyb3duKVxuICAgIHZlcmlmeVRyYW5zYWN0aW9uU3R1Yi5yZXR1cm5zKHRydWUpO1xuXG4gICAgLy8gTW9jayBrZXkgcmV0cmlldmFsIGVuZHBvaW50c1xuICAgIGNvbnN0IGJnVXJsID0gY29tbW9uLkVudmlyb25tZW50c1snbW9jayddLnVyaTtcbiAgICBub2NrKGJnVXJsKS5nZXQoJy9hcGkvdjIvdGJ0Yy9rZXkva2V5MScpLnJlcGx5KDIwMCwge1xuICAgICAgaWQ6ICdrZXkxJyxcbiAgICAgIHB1YjogJ3B1YicsXG4gICAgICBwcnY6ICdwcnYnLFxuICAgIH0pO1xuXG4gICAgbm9jayhiZ1VybCkuZ2V0KCcvYXBpL3YyL3RidGMva2V5L2tleTInKS5yZXBseSgyMDAsIHtcbiAgICAgIGlkOiAna2V5MicsXG4gICAgICBwdWI6ICdwdWInLFxuICAgICAgcHJ2OiAncHJ2JyxcbiAgICB9KTtcblxuICAgIG5vY2soYmdVcmwpLmdldCgnL2FwaS92Mi90YnRjL2tleS9rZXkzJykucmVwbHkoMjAwLCB7XG4gICAgICBpZDogJ2tleTMnLFxuICAgICAgcHViOiAncHViJyxcbiAgICB9KTtcblxuICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICB0eEhleDogJ21vY2stdHgtaGV4JyxcbiAgICAgIHdhbGxldElkOiAndGVzdC13YWxsZXQtaWQnLFxuICAgIH07XG5cbiAgICBjb25zdCB2ZXJpZnlUeFBhcmFtczogV2FsbGV0U2lnblRyYW5zYWN0aW9uT3B0aW9uc1sndmVyaWZ5VHhQYXJhbXMnXSA9IHtcbiAgICAgIHR4UGFyYW1zOiB7XG4gICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAndGVzdC1hZGRyZXNzJyxcbiAgICAgICAgICAgIGFtb3VudDogJzEwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHR5cGU6ICdzZW5kJyxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IHNpZ25QYXJhbXM6IFdhbGxldFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMgPSB7XG4gICAgICB0eFByZWJ1aWxkLFxuICAgICAgdmVyaWZ5VHhQYXJhbXMsXG4gICAgICBwcnY6ICdwcnYnLFxuICAgIH07XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB3YWxsZXQuc2lnblRyYW5zYWN0aW9uKHNpZ25QYXJhbXMpO1xuXG4gICAgLy8gVmVyaWZ5IHRoZSByZXN1bHRcbiAgICByZXN1bHQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ3R4SGV4JywgJ21vY2stc2lnbmVkLXR4LWhleCcpO1xuXG4gICAgLy8gVmVyaWZ5IHRoYXQgdGhlIHZlcmlmaWNhdGlvbiBmdW5jdGlvbiB3YXMgY2FsbGVkIHdpdGggdGhlIGV4cGVjdGVkIHBhcmFtZXRlcnNcbiAgICBzaW5vbi5hc3NlcnQuY2FsbGVkT25jZSh2ZXJpZnlUcmFuc2FjdGlvblN0dWIpO1xuICAgIGNvbnN0IGNhbGxBcmdzID0gdmVyaWZ5VHJhbnNhY3Rpb25TdHViLmdldENhbGwoMCkuYXJncztcbiAgICBjb25zdCB2ZXJpZnlQYXJhbXMgPSBjYWxsQXJnc1swXTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwodmVyaWZ5UGFyYW1zLnR4UHJlYnVpbGQudHhIZXgsICdtb2NrLXR4LWhleCcpO1xuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwodmVyaWZ5UGFyYW1zLnR4UGFyYW1zLCB2ZXJpZnlUeFBhcmFtcy50eFBhcmFtcyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgd2hlbiB2ZXJpZnlUeFBhcmFtcyBpcyBwcm92aWRlZCB3aXRob3V0IHR4SGV4IG9yIFRTUyB0eFJlcXVlc3RJZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBzaWduUGFyYW1zOiBXYWxsZXRTaWduVHJhbnNhY3Rpb25PcHRpb25zID0ge1xuICAgICAgdHhQcmVidWlsZDoge30sXG4gICAgICB2ZXJpZnlUeFBhcmFtczoge1xuICAgICAgICB0eFBhcmFtczoge1xuICAgICAgICAgIHJlY2lwaWVudHM6IFt7IGFkZHJlc3M6ICd0ZXN0LWFkZHJlc3MnLCBhbW91bnQ6ICcxMDAwJyB9XSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGF3YWl0IHdhbGxldC5zaWduVHJhbnNhY3Rpb24oc2lnblBhcmFtcykuc2hvdWxkLmJlLnJlamVjdGVkV2l0aChJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcik7XG4gICAgc2lub24uYXNzZXJ0Lm5vdENhbGxlZCh2ZXJpZnlUcmFuc2FjdGlvblN0dWIpO1xuICB9KTtcbn0pO1xuIl19
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnblRyYW5zYWN0aW9uVmVyaWZpY2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC92Mi91bml0L3NpZ25UcmFuc2FjdGlvblZlcmlmaWNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDZCQUE4QjtBQUM5QiwrQkFBK0I7QUFDL0IsaUNBQWlDO0FBQ2pDLGtCQUFnQjtBQUVoQiw0Q0FBMEM7QUFDMUMsOENBQTRDO0FBQzVDLHNEQUEyQztBQUMzQyw4Q0FBb0c7QUFFcEcsUUFBUSxDQUFDLDRDQUE0QyxFQUFFO0lBQ3JELElBQUksTUFBYyxDQUFDO0lBQ25CLElBQUksUUFBa0IsQ0FBQztJQUN2QixJQUFJLHFCQUFzQyxDQUFDO0lBRTNDLFVBQVUsQ0FBQztRQUNULE1BQU0sS0FBSyxHQUFHLG9CQUFTLENBQUMsUUFBUSxDQUFDLGtCQUFRLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUM1RCxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMzQixLQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxtQkFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2hELFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTlCLG1CQUFtQjtRQUNuQixNQUFNLFVBQVUsR0FBRztZQUNqQixFQUFFLEVBQUUsZ0JBQWdCO1lBQ3BCLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLGFBQWE7WUFDcEIsQ0FBQyxFQUFFLENBQUM7WUFDSixDQUFDLEVBQUUsQ0FBQztZQUNKLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDO1lBQzlCLFlBQVksRUFBRSxTQUFTO1lBQ3ZCLElBQUksRUFBRSxLQUFLO1lBQ1gsT0FBTyxFQUFFLE1BQU07WUFDZixhQUFhLEVBQUUsUUFBUTtZQUN2QixnQkFBZ0IsRUFBRSxN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Q0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekUsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBub2NrID0gcmVxdWlyZSgnbm9jaycpO1xuaW1wb3J0ICogYXMgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgJ3Nob3VsZCc7XG5cbmltcG9ydCB7IEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvL3Nkay1hcGknO1xuaW1wb3J0IHsgVGVzdEJpdEdvIH0gZnJvbSAnQGJpdGdvL3Nkay10ZXN0JztcbmltcG9ydCB7IFRidGMgfSBmcm9tICdAYml0Z28vc2RrLWNvaW4tYnRjJztcbmltcG9ydCB7IGNvbW1vbiwgQmFzZUNvaW4sIEJpdEdvQmFzZSwgV2FsbGV0LCBXYWxsZXRTaWduVHJhbnNhY3Rpb25PcHRpb25zIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcblxuZGVzY3JpYmUoJ1dhbGxldCBzaWduVHJhbnNhY3Rpb24gd2l0aCB2ZXJpZnlUeFBhcmFtcycsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IHdhbGxldDogV2FsbGV0O1xuICBsZXQgYmFzZWNvaW46IEJhc2VDb2luO1xuICBsZXQgdmVyaWZ5VHJhbnNhY3Rpb25TdHViOiBzaW5vbi5TaW5vblN0dWI7XG5cbiAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgYml0Z28gPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R29BUEksIHsgZW52OiAnbW9jaycgfSk7XG4gICAgYml0Z28uaW5pdGlhbGl6ZVRlc3RWYXJzKCk7XG4gICAgYml0Z28uc2FmZVJlZ2lzdGVyKCd0YnRjJywgVGJ0Yy5jcmVhdGVJbnN0YW5jZSk7XG4gICAgYmFzZWNvaW4gPSBiaXRnby5jb2luKCd0YnRjJyk7XG5cbiAgICAvLyBNb2NrIHdhbGxldCBkYXRhXG4gICAgY29uc3Qgd2FsbGV0RGF0YSA9IHtcbiAgICAgIGlkOiAndGVzdC13YWxsZXQtaWQnLFxuICAgICAgY29pbjogJ3RidGMnLFxuICAgICAgbGFiZWw6ICdUZXN0IFdhbGxldCcsXG4gICAgICBtOiAyLFxuICAgICAgbjogMyxcbiAgICAgIGtleXM6IFsna2V5MScsICdrZXkyJywgJ2tleTMnXSxcbiAgICAgIG11bHRpc2lnVHlwZTogJ29uY2hhaW4nLFxuICAgICAgdHlwZTogJ2hvdCcsXG4gICAgICBiYWxhbmNlOiAxMDAwMDAsXG4gICAgICBiYWxhbmNlU3RyaW5nOiAnMTAwMDAwJyxcbiAgICAgIGNvbmZpcm1lZEJhbGFuY2U6IDEwMDAwMCxcbiAgICAgIGNvbmZpcm1lZEJhbGFuY2VTdHJpbmc6ICcxMDAwMDAnLFxuICAgICAgc3BlbmRhYmxlQmFsYW5jZTogMTAwMDAwLFxuICAgICAgc3BlbmRhYmxlQmFsYW5jZVN0cmluZzogJzEwMDAwMCcsXG4gICAgfTtcblxuICAgIHdhbGxldCA9IG5ldyBXYWxsZXQoYml0Z28gYXMgdW5rbm93biBhcyBCaXRHb0Jhc2UsIGJhc2Vjb2luIGFzIHVua25vd24gYXMgQmFzZUNvaW4sIHdhbGxldERhdGEpO1xuXG4gICAgLy8gQ3JlYXRlIHN0dWJzIGZvciB2ZXJpZmljYXRpb25cbiAgICBzaW5vbi5zdHViKGJhc2Vjb2luLCAnc2lnblRyYW5zYWN0aW9uJykucmVzb2x2ZXMoeyB0eEhleDogJ21vY2stc2lnbmVkLXR4LWhleCcgfSk7XG4gICAgdmVyaWZ5VHJhbnNhY3Rpb25TdHViID0gc2lub24uc3R1YihiYXNlY29pbiwgJ3ZlcmlmeVRyYW5zYWN0aW9uJyk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgc2lub24ucmVzdG9yZSgpO1xuICAgIG5vY2suY2xlYW5BbGwoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHZlcmlmaWNhdGlvbiB3aGVuIHZlcmlmeVRyYW5zYWN0aW9uIHRocm93cyBhbiBlcnJvcicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAvLyBNb2NrIHRoZSB2ZXJpZmljYXRpb24gZnVuY3Rpb24gdG8gdGhyb3cgYW4gZXJyb3IgKHNpbXVsYXRpbmcgdmVyaWZpY2F0aW9uIGZhaWx1cmUpXG4gICAgdmVyaWZ5VHJhbnNhY3Rpb25TdHViLnRocm93cyhuZXcgRXJyb3IoJ1RyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQnKSk7XG5cbiAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgdHhIZXg6ICdtb2NrLXR4LWhleCcsXG4gICAgICB3YWxsZXRJZDogJ3Rlc3Qtd2FsbGV0LWlkJyxcbiAgICB9O1xuXG4gICAgY29uc3QgdmVyaWZ5VHhQYXJhbXMgPSB7XG4gICAgICB0eFBhcmFtczoge1xuICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJ3Rlc3QtYWRkcmVzcycsXG4gICAgICAgICAgICBhbW91bnQ6ICcxMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgdHlwZTogJ3NlbmQnLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2lnblBhcmFtczogV2FsbGV0U2lnblRyYW5zYWN0aW9uT3B0aW9ucyA9IHtcbiAgICAgIHR4UHJlYnVpbGQsXG4gICAgICB2ZXJpZnlUeFBhcmFtcyxcbiAgICB9O1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHdhbGxldC5zaWduVHJhbnNhY3Rpb24oc2lnblBhcmFtcyk7XG4gICAgICBhc3NlcnQuZmFpbCgnU2hvdWxkIGhhdmUgdGhyb3duIHZlcmlmaWNhdGlvbiBlcnJvcicpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBhc3NlcnQub2soXG4gICAgICAgIGVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ1RyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQnKSxcbiAgICAgICAgYEVycm9yIG1lc3NhZ2Ugc2hvdWxkIGNvbnRhaW4gJ1RyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQnLCBnb3Q6ICR7ZXJyb3IubWVzc2FnZX1gXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFZlcmlmeSB0aGF0IHRoZSB2ZXJpZmljYXRpb24gZnVuY3Rpb24gd2FzIGNhbGxlZCB3aXRoIHRoZSBleHBlY3RlZCBwYXJhbWV0ZXJzXG4gICAgc2lub24uYXNzZXJ0LmNhbGxlZE9uY2UodmVyaWZ5VHJhbnNhY3Rpb25TdHViKTtcbiAgICBjb25zdCBjYWxsQXJncyA9IHZlcmlmeVRyYW5zYWN0aW9uU3R1Yi5nZXRDYWxsKDApLmFyZ3M7XG4gICAgY29uc3QgdmVyaWZ5UGFyYW1zID0gY2FsbEFyZ3NbMF07XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHZlcmlmeVBhcmFtcy50eFByZWJ1aWxkLnR4SGV4LCAnbW9jay10eC1oZXgnKTtcbiAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHZlcmlmeVBhcmFtcy50eFBhcmFtcywgdmVyaWZ5VHhQYXJhbXMudHhQYXJhbXMpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHBhc3MgdmVyaWZpY2F0aW9uIHdoZW4gdmVyaWZ5VHJhbnNhY3Rpb24gc3VjY2VlZHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgLy8gTW9jayB0aGUgdmVyaWZpY2F0aW9uIGZ1bmN0aW9uIHRvIHN1Y2NlZWQgKG5vIGVycm9yIHRocm93bilcbiAgICB2ZXJpZnlUcmFuc2FjdGlvblN0dWIucmV0dXJucyh0cnVlKTtcblxuICAgIC8vIE1vY2sga2V5IHJldHJpZXZhbCBlbmRwb2ludHNcbiAgICBjb25zdCBiZ1VybCA9IGNvbW1vbi5FbnZpcm9ubWVudHNbJ21vY2snXS51cmk7XG4gICAgbm9jayhiZ1VybCkuZ2V0KCcvYXBpL3YyL3RidGMva2V5L2tleTEnKS5yZXBseSgyMDAsIHtcbiAgICAgIGlkOiAna2V5MScsXG4gICAgICBwdWI6ICdwdWInLFxuICAgICAgcHJ2OiAncHJ2JyxcbiAgICB9KTtcblxuICAgIG5vY2soYmdVcmwpLmdldCgnL2FwaS92Mi90YnRjL2tleS9rZXkyJykucmVwbHkoMjAwLCB7XG4gICAgICBpZDogJ2tleTInLFxuICAgICAgcHViOiAncHViJyxcbiAgICAgIHBydjogJ3BydicsXG4gICAgfSk7XG5cbiAgICBub2NrKGJnVXJsKS5nZXQoJy9hcGkvdjIvdGJ0Yy9rZXkva2V5MycpLnJlcGx5KDIwMCwge1xuICAgICAgaWQ6ICdrZXkzJyxcbiAgICAgIHB1YjogJ3B1YicsXG4gICAgfSk7XG5cbiAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgdHhIZXg6ICdtb2NrLXR4LWhleCcsXG4gICAgICB3YWxsZXRJZDogJ3Rlc3Qtd2FsbGV0LWlkJyxcbiAgICB9O1xuXG4gICAgY29uc3QgdmVyaWZ5VHhQYXJhbXM6IFdhbGxldFNpZ25UcmFuc2FjdGlvbk9wdGlvbnNbJ3ZlcmlmeVR4UGFyYW1zJ10gPSB7XG4gICAgICB0eFBhcmFtczoge1xuICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJ3Rlc3QtYWRkcmVzcycsXG4gICAgICAgICAgICBhbW91bnQ6ICcxMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICB0eXBlOiAnc2VuZCcsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCBzaWduUGFyYW1zOiBXYWxsZXRTaWduVHJhbnNhY3Rpb25PcHRpb25zID0ge1xuICAgICAgdHhQcmVidWlsZCxcbiAgICAgIHZlcmlmeVR4UGFyYW1zLFxuICAgICAgcHJ2OiAncHJ2JyxcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgd2FsbGV0LnNpZ25UcmFuc2FjdGlvbihzaWduUGFyYW1zKTtcblxuICAgIC8vIFZlcmlmeSB0aGUgcmVzdWx0XG4gICAgcmVzdWx0LnNob3VsZC5oYXZlLnByb3BlcnR5KCd0eEhleCcsICdtb2NrLXNpZ25lZC10eC1oZXgnKTtcblxuICAgIC8vIFZlcmlmeSB0aGF0IHRoZSB2ZXJpZmljYXRpb24gZnVuY3Rpb24gd2FzIGNhbGxlZCB3aXRoIHRoZSBleHBlY3RlZCBwYXJhbWV0ZXJzXG4gICAgc2lub24uYXNzZXJ0LmNhbGxlZE9uY2UodmVyaWZ5VHJhbnNhY3Rpb25TdHViKTtcbiAgICBjb25zdCBjYWxsQXJncyA9IHZlcmlmeVRyYW5zYWN0aW9uU3R1Yi5nZXRDYWxsKDApLmFyZ3M7XG4gICAgY29uc3QgdmVyaWZ5UGFyYW1zID0gY2FsbEFyZ3NbMF07XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHZlcmlmeVBhcmFtcy50eFByZWJ1aWxkLnR4SGV4LCAnbW9jay10eC1oZXgnKTtcbiAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHZlcmlmeVBhcmFtcy50eFBhcmFtcywgdmVyaWZ5VHhQYXJhbXMudHhQYXJhbXMpO1xuICB9KTtcbn0pO1xuIl19