@bitgo/sdk-coin-xtz 2.8.11 → 2.8.13
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.
|
@@ -122,7 +122,7 @@ describe('Tezos Transaction builder', function () {
|
|
|
122
122
|
should_1.default.equal(tx.inputs.length, 1);
|
|
123
123
|
should_1.default.equal(tx.outputs.length, 0);
|
|
124
124
|
tx.inputs[0].address.should.equal('tz2PtJ9zgEgFVTRqy6GXsst54tH3ksEnYvvS');
|
|
125
|
-
tx.inputs[0].value.should.equal('
|
|
125
|
+
tx.inputs[0].value.should.equal('10');
|
|
126
126
|
should_1.default.not.exist(tx.delegate);
|
|
127
127
|
tx.signature.length.should.equal(0);
|
|
128
128
|
Object.keys(tx.getIndexesByTransactionType()).length.should.equal(1);
|
|
@@ -205,20 +205,20 @@ describe('Tezos Transaction builder', function () {
|
|
|
205
205
|
txBuilder.branch('BM8QdZ92VyaH1s5nwAF9rUXjiPZ3g3Nsn6oYbdKqj2RgHxvWXVS');
|
|
206
206
|
txBuilder.sign({ key: defaultKeyPair.getKeys().prv });
|
|
207
207
|
const tx = await txBuilder.build();
|
|
208
|
-
tx.id.should.equal('
|
|
208
|
+
tx.id.should.equal('oo2KFqWUTKZq6se9hjfegaMaPbXoh54ZdqMCczLMx5EFBFir61k');
|
|
209
209
|
tx.type.should.equal(sdk_core_1.TransactionType.WalletInitialization);
|
|
210
210
|
tx.source.should.equal('tz2PtJ9zgEgFVTRqy6GXsst54tH3ksEnYvvS');
|
|
211
211
|
should_1.default.equal(tx.inputs.length, 2);
|
|
212
212
|
should_1.default.equal(tx.outputs.length, 1);
|
|
213
213
|
tx.inputs[0].address.should.equal('tz2PtJ9zgEgFVTRqy6GXsst54tH3ksEnYvvS');
|
|
214
|
-
tx.inputs[0].value.should.equal('
|
|
214
|
+
tx.inputs[0].value.should.equal('4764');
|
|
215
215
|
tx.inputs[1].address.should.equal('tz2PtJ9zgEgFVTRqy6GXsst54tH3ksEnYvvS');
|
|
216
216
|
tx.inputs[1].value.should.equal('1004764');
|
|
217
|
-
tx.outputs[0].address.should.equal('
|
|
217
|
+
tx.outputs[0].address.should.equal('KT1A9heCJqvJ3JUci8mngHd233d5vCZFp7Kn');
|
|
218
218
|
tx.outputs[0].value.should.equal('1000000');
|
|
219
219
|
tx.delegate.should.equal('tz1KpbK5v1NB2vg3JHBxXJZhyQ7ur83Xp7iC');
|
|
220
220
|
tx.signature.length.should.equal(1);
|
|
221
|
-
tx.signature[0].should.equal('
|
|
221
|
+
tx.signature[0].should.equal('sigvD51ih2buKJk18C67QkaWgA4gaWfzz4NwTewpbPkNvBokeXonyVER8PykorqZrjNcr1WGB1QY1wTXeGWaVtHXBg4WhGd7');
|
|
222
222
|
const indexesByTransactionType = tx.getIndexesByTransactionType();
|
|
223
223
|
Object.keys(indexesByTransactionType).length.should.equal(2);
|
|
224
224
|
indexesByTransactionType.reveal.length.should.equal(1);
|
|
@@ -653,4 +653,4 @@ describe('Tezos Transaction builder', function () {
|
|
|
653
653
|
});
|
|
654
654
|
});
|
|
655
655
|
});
|
|
656
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QixvREFBNEI7QUFDNUIsOENBQWtEO0FBQ2xELDRDQUF1QztBQUN2QyxnRUFBcUM7QUFDckMsdURBQXlDO0FBQ3pDLG1DQUFtQztBQUVuQyxRQUFRLENBQUMsMkJBQTJCLEVBQUU7SUFDcEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxZQUFNLENBQUMsT0FBTyxDQUFDO1FBQ3hDLEdBQUcsRUFBRSxpSEFBaUg7S0FDdkgsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUU7UUFDNUIsRUFBRSxDQUFDLDhCQUE4QixFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzVDLE1BQU0sU0FBUyxHQUFRLElBQUksWUFBTSxDQUFDLGtCQUFrQixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN2RSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1lBQ2xFLE1BQU0sRUFBRSxHQUFHLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25DLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN2QixFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsMEJBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQzNELEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1lBQy9ELGdCQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxF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QUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUN0RixNQUFNLEVBQUUsR0FBRyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUVuQyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztZQUMxRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsMEJBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztZQUMvRCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNsQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNuQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7WUFDMUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN4QyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7WUFDMUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2QyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFD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Q0FBQyxDQUFDO1lBQ3ZDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztZQUMxRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztZQUMxRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztZQUMzRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztZQUMzRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hDLGdCQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQzFC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QUM1RixJQUFJLE1BQU0sQ0FBQyw4Q0FBOEMsQ0FBQyxDQUMzRCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsMkRBQTJELEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDekUsTUFBTSxTQUFTLEdBQVEsSUFBSSxZQUFNLENBQUMsa0JBQWtCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3ZFLFNBQVMsQ0FBQyxNQUFNLENBQUMscURBQXFELENBQUMsQ0FBQztZQUN4RSxTQUFTLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkIsU0FBUztpQkFDTixRQUFRLENBQUMsS0FBSyxDQUFDO2lCQUNmLElBQUksQ0FBQyxzQ0FBc0MsQ0FBQztpQkFDNUMsRUFBRSxDQUFDLHNDQUFzQyxDQUFDO2lCQUMxQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDZixTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3RELGdCQUFNLENBQUMsTUFBTSxDQUNYLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsMEJBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxFQUMxRCxJQUFJLE1BQU0sQ0FBQyxnRUFBZ0UsQ0FBQyxDQUM3RSxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IGNvaW5zIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vcmVzb3VyY2VzJztcbmltcG9ydCB7IFh0ekxpYiB9IGZyb20gJy4uLy4uL3NyYyc7XG5cbmRlc2NyaWJlKCdUZXpvcyBUcmFuc2FjdGlvbiBidWlsZGVyJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBkZWZhdWx0S2V5UGFpciA9IG5ldyBYdHpMaWIuS2V5UGFpcih7XG4gICAgcHJ2OiAneHBydjlzMjFaclFIMTQzSzNEOFRYZnZBSmdIVmZURWVRTlc1WXM5d1p0blVaa3FQekZ6U2piRUpyV0Mxdlo0R25YQ3ZSN3JRTDJVRlgzUlN1WWVVOU1yRVJtMVhCdkFDb3c3YzM2dm56NWlZeWoyJyxcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3Nob3VsZCBwYXJzZScsICgpID0+IHtcbiAgICBpdCgnYW4gdW5zaWduZWQgaW5pdCB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlcjogYW55ID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KCd4dHonKSk7XG4gICAgICB0eEJ1aWxkZXIuZnJvbSh0ZXN0RGF0YS51bnNpZ25lZFNlcmlhbGl6ZWRPcmlnaW5hdGlvblRyYW5zYWN0aW9uKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICB0eC5pZC5zaG91bGQuZXF1YWwoJycpO1xuICAgICAgdHgudHlwZS5zaG91bGQuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uKTtcbiAgICAgIHR4LnNvdXJjZS5zaG91bGQuZXF1YWwoJ3R6MVZSalJwVktudjE2QVZwckZIMXRrRG40VERmVnFBODkzQScpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LmlucHV0cy5sZW5ndGgsIDEpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4Lm91dHB1dHMubGVuZ3RoLCAxKTtcbiAgICAgIHR4LmlucHV0c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgndHoxVlJqUnBWS252MTZBVnByRkgxdGtEbjRURGZWcUE4OTNBJyk7XG4gICAgICB0eC5pbnB1dHNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKCcxMDA0NzY0Jyk7XG4gICAgICB0eC5vdXRwdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKCcnKTtcbiAgICAgIHR4Lm91dHB1dHNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKCcxMDAwMDAwJyk7XG4gICAgICBzaG91bGQubm90LmV4aXN0KHR4LmRlbGVnYXRlKTtcbiAgICAgIHR4LnNpZ25hdHVyZS5sZW5ndGguc2hvdWxkLmVxdWFsKDApO1xuICAgICAgT2JqZWN0LmtleXModHguZ2V0SW5kZXhlc0J5VHJhbnNhY3Rpb25UeXBlKCkpLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICB0eC5vd25lcnMubGVuZ3RoLnNob3VsZC5lcXVhbCgzKTtcbiAgICAgIHR4Lm93bmVyc1swXS5zaG91bGQuZXF1YWwoJ3NwcGs3WldCOGRpVTJUV2VoeGRrV0NWMkRURnZuMWhQejRxTGppRDNuSlFvektub1NFblNDOGInKTtcbiAgICAgIHR4Lm93bmVyc1sxXS5zaG91bGQuZXF1YWwoJ3NwcGs3WnE5S1B0d2t6a2dBc2hhNGpVMjlDNDNNY2dQMnNrSzU2dGpkN0tKamhjbUg2QVpDMUYnKTtcbiAgICAgIHR4Lm93bmVyc1syXS5zaG91bGQuZXF1YWwoJ3NwcGs3ZDJ6dHpickxkQmFUQjd5emFXUmtQZmNXR3NyTlFOSmRrQkU5YkNUU1N6ZWtMTnpwdmYnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3Nob3VsZCBidWlsZCcsICgpID0+IHtcbiAgICBpdCgnYW4gaW5pdCB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlcjogYW55ID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KCd4dHonKSk7XG4gICAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24pO1xuICAgICAgdHhCdWlsZGVyLmZlZSh7IGZlZTogJzEwJyB9KTtcbiAgICAgIGNvbnN0IHNvdXJjZSA9IHtcbiAgICAgICAgcHViOiAneHB1YjY2MU15TXdBcVJiY0ZoQ3ZkaFRBZnBFRURWNThvcUR2djY1WU5IQzY4Nk5OczRLYkg4WVpRSldWbXJmYnZlN2FBVkh6eHc4YktGeEE3TUxlREs2QmJMZmtFM2Jxa3ZITFBnYUdISHRZR2VZJyxcbiAgICAgIH07XG4gICAgICBjb25zdCBzb3VyY2VLZXlQYWlyID0gbmV3IFh0ekxpYi5LZXlQYWlyKHNvdXJjZSk7XG4gICAgICB0eEJ1aWxkZXIuc291cmNlKHNvdXJjZUtleVBhaXIuZ2V0QWRkcmVzcygpKTtcbiAgICAgIHR4QnVpbGRlci5pbml0aWFsQmFsYW5jZSgnMTAwMDAwMCcpO1xuICAgICAgdHhCdWlsZGVyLmNvdW50ZXIoJzAnKTtcbiAgICAgIHR4QnVpbGRlci5vd25lcihcbiAgICAgICAgbmV3IFh0ekxpYi5LZXlQYWlyKHsgcHViOiAnc3BwazdaV0I4ZGlVMlRXZWh4ZGtXQ1YyRFRGdm4xaFB6NHFMamlEM25KUW96S25vU0VuU0M4YicgfSkuZ2V0S2V5cygpLnB1YlxuICAgICAgKTtcbiAgICAgIHR4QnVpbGRlci5vd25lcihcbiAgICAgICAgbmV3IFh0ekxpYi5LZXlQYWlyKHsgcHViOiAnc3BwazdacTlLUHR3a3prZ0FzaGE0alUyOUM0M01jZ1Ayc2tLNTZ0amQ3S0pqaGNtSDZBWkMxRicgfSkuZ2V0S2V5cygpLnB1YlxuICAgICAgKTtcbiAgICAgIHR4QnVpbGRlci5vd25lcihcbiAgICAgICAgbmV3IFh0ekxpYi5LZXlQYWlyKHsgcHViOiAnc3BwazdkMnp0emJyTGRCYVRCN3l6YVdSa1BmY1dHc3JOUU5KZGtCRTliQ1RTU3pla0xOenB2ZicgfSkuZ2V0S2V5cygpLnB1YlxuICAgICAgKTtcbiAgICAgIHR4QnVpbGRlci5icmFuY2goJ0JNOFFkWjkyVnlhSDFzNW53QUY5clVYamlQWjNnM05zbjZvWWJkS3FqMlJnSHh2V1hWUycpO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgdHguaWQuc2hvdWxkLmVxdWFsKCcnKTtcbiAgICAgIHR4LnR5cGUuc2hvdWxkLmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbik7XG4gICAgICB0eC5zb3VyY2Uuc2hvdWxkLmVxdWFsKCd0ejJQdEo5emdFZ0ZWVFJxeTZHWHNzdDU0dEgza3NFbll2dlMnKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5pbnB1dHMubGVuZ3RoLCAxKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5vdXRwdXRzLmxlbmd0aCwgMSk7XG4gICAgICB0eC5pbnB1dHNbMF0uYWRkcmVzcy5zaG91bGQuZXF1YWwoJ3R6MlB0Sjl6Z0VnRlZUUnF5NkdYc3N0NTR0SDNrc0VuWXZ2UycpO1xuICAgICAgdHguaW5wdXRzWzBdLnZhbHVlLnNob3VsZC5lcXVhbCgnMTAwMDAxMCcpO1xuICAgICAgdHgub3V0cHV0c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgnJyk7XG4gICAgICB0eC5vdXRwdXRzWzBdLnZhbHVlLnNob3VsZC5lcXVhbCgnMTAwMDAwMCcpO1xuICAgICAgdHguc2lnbmF0dXJlLmxlbmd0aC5zaG91bGQuZXF1YWwoMCk7XG4gICAgICBPYmplY3Qua2V5cyh0eC5nZXRJbmRleGVzQnlUcmFuc2FjdGlvblR5cGUoKSkubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHR4Lm93bmVycy5sZW5ndGguc2hvdWxkLmVxdWFsKDMpO1xuICAgICAgdHgub3duZXJzWzBdLnNob3VsZC5lcXVhbCgnc3BwazdaV0I4ZGlVMlRXZWh4ZGtXQ1YyRFRGdm4xaFB6NHFMamlEM25KUW96S25vU0VuU0M4YicpO1xuICAgICAgdHgub3duZXJzWzFdLnNob3VsZC5lcXVhbCgnc3BwazdacTlLUHR3a3prZ0FzaGE0alUyOUM0M01jZ1Ayc2tLNTZ0amQ3S0pqaGNtSDZBWkMxRicpO1xuICAgICAgdHgub3duZXJzWzJdLnNob3VsZC5lcXVhbCgnc3BwazdkMnp0emJyTGRCYVRCN3l6YVdSa1BmY1dHc3JOUU5KZGtCRTliQ1RTU3pla0xOenB2ZicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FuIGFjY291bnQgcmV2ZWFsIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyOiBhbnkgPSBuZXcgWHR6TGliLlRyYW5zYWN0aW9uQnVpbGRlcihjb2lucy5nZXQoJ3h0eicpKTtcbiAgICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5BY2NvdW50VXBkYXRlKTtcbiAgICAgIHR4QnVpbGRlci5mZWUoeyBmZWU6ICcxMCcgfSk7XG4gICAgICBjb25zdCBzb3VyY2UgPSB7XG4gICAgICAgIHB1YjogJ3hwdWI2NjFNeU13QXFSYmNGaEN2ZGhUQWZwRUVEVjU4b3FEdnY2NVlOSEM2ODZOTnM0S2JIOFlaUUpXVm1yZmJ2ZTdhQVZIenh3OGJLRnhBN01MZURLNkJiTGZrRTNicWt2SExQZ2FHSEh0WUdlWScsXG4gICAgICB9O1xuICAgICAgY29uc3Qga2V5UGFpciA9IG5ldyBYdHpMaWIuS2V5UGFpcihzb3VyY2UpO1xuICAgICAgdHhCdWlsZGVyLnNvdXJjZShrZXlQYWlyLmdldEFkZHJlc3MoKSk7XG4gICAgICB0eEJ1aWxkZXIucHVibGljS2V5VG9SZXZlYWwoa2V5UGFpci5nZXRFeHRlbmRlZEtleXMoKS54cHViKTtcbiAgICAgIHR4QnVpbGRlci5jb3VudGVyKCcwJyk7XG4gICAgICB0eEJ1aWxkZXIuYnJhbmNoKCdCTThRZFo5MlZ5YUgxczVud0FGOXJVWGppUFozZzNOc242b1liZEtxajJSZ0h4dldYVlMnKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIHR4LmlkLnNob3VsZC5lcXVhbCgnJyk7XG4gICAgICB0eC50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuQWNjb3VudFVwZGF0ZSk7XG4gICAgICB0eC5zb3VyY2Uuc2hvdWxkLmVxdWFsKCd0ejJQdEo5emdFZ0ZWVFJxeTZHWHNzdDU0dEgza3NFbll2dlMnKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5pbnB1dHMubGVuZ3RoLCAxKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5vdXRwdXRzLmxlbmd0aCwgMCk7XG4gICAgICB0eC5pbnB1dHNbMF0uYWRkcmVzcy5zaG91bGQuZXF1YWwoJ3R6MlB0Sjl6Z0VnRlZUUnF5NkdYc3N0NTR0SDNrc0VuWXZ2UycpO1xuICAgICAgdHguaW5wdXRzWzBdLnZhbHVlLnNob3VsZC5lcXVhbCgnMTQyMCcpO1xuICAgICAgc2hvdWxkLm5vdC5leGlzdCh0eC5kZWxlZ2F0ZSk7XG4gICAgICB0eC5zaWduYXR1cmUubGVuZ3RoLnNob3VsZC5lcXVhbCgwKTtcbiAgICAgIE9iamVjdC5rZXlzKHR4LmdldEluZGV4ZXNCeVRyYW5zYWN0aW9uVHlwZSgpKS5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgdHgub3duZXJzLmxlbmd0aC5zaG91bGQuZXF1YWwoMCk7XG4gICAgfSk7XG5cbiAgICBpdCgnYSBmb3J3YXJkZXIgY29udHJhY3QgaW5pdCB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlcjogYW55ID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KCd4dHonKSk7XG4gICAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuQWRkcmVzc0luaXRpYWxpemF0aW9uKTtcbiAgICAgIGNvbnN0IGZvcndhcmRlckRlc3RpbmF0aW9uID0gJ0tUMUhVcnQ2a2Z2WXlERVlDSjJHU2p2VFBaNkttUmZ4TEJVOCc7XG4gICAgICB0eEJ1aWxkZXIuZm9yd2FyZGVyRGVzdGluYXRpb24oZm9yd2FyZGVyRGVzdGluYXRpb24pO1xuICAgICAgdHhCdWlsZGVyLmZlZSh7IGZlZTogJzEwJyB9KTtcbiAgICAgIGNvbnN0IHNvdXJjZSA9IHtcbiAgICAgICAgcHViOiAneHB1YjY2MU15TXdBcVJiY0ZoQ3ZkaFRBZnBFRURWNThvcUR2djY1WU5IQzY4Nk5OczRLYkg4WVpRSldWbXJmYnZlN2FBVkh6eHc4YktGeEE3TUxlREs2QmJMZmtFM2Jxa3ZITFBnYUdISHRZR2VZJyxcbiAgICAgIH07XG4gICAgICBjb25zdCBrZXlQYWlyID0gbmV3IFh0ekxpYi5LZXlQYWlyKHNvdXJjZSk7XG4gICAgICB0eEJ1aWxkZXIuc291cmNlKGtleVBhaXIuZ2V0QWRkcmVzcygpKTtcbiAgICAgIHR4QnVpbGRlci5wdWJsaWNLZXlUb1JldmVhbChrZXlQYWlyLmdldEV4dGVuZGVkS2V5cygpLnhwdWIpO1xuICAgICAgdHhCdWlsZGVyLmNvdW50ZXIoJzAnKTtcbiAgICAgIHR4QnVpbGRlci5icmFuY2goJ0JNOFFkWjkyVnlhSDFzNW53QUY5clVYamlQWjNnM05zbjZvWWJkS3FqMlJnSHh2V1hWUycpO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIHR4LnR5cGUuc2hvdWxkLmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5BZGRyZXNzSW5pdGlhbGl6YXRpb24pO1xuICAgICAgdHguc291cmNlLnNob3VsZC5lcXVhbChrZXlQYWlyLmdldEFkZHJlc3MoKSk7XG4gICAgICB0eC5wdWJsaWNLZXlUb1JldmVhbC5zaG91bGQuZXF1YWwoa2V5UGFpci5nZXRLZXlzKCkucHViKTtcbiAgICAgIHR4LmZvcndhcmRlckRlc3RpbmF0aW9uLnNob3VsZC5lcXVhbChmb3J3YXJkZXJEZXN0aW5hdGlvbik7XG4gICAgICB0eC5vd25lcnMubGVuZ3RoLnNob3VsZC5lcXVhbCgwKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3Nob3VsZCBzaWduJywgKCkgPT4ge1xuICAgIGl0KCdhbiBpbml0IHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyOiBhbnkgPSBuZXcgWHR6TGliLlRyYW5zYWN0aW9uQnVpbGRlcihjb2lucy5nZXQoJ3h0eicpKTtcbiAgICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbik7XG4gICAgICB0eEJ1aWxkZXIuZmVlKHtcbiAgICAgICAgZmVlOiAnNDc2NCcsXG4gICAgICAgIGdhc0xpbWl0OiAnMzM5NzEnLFxuICAgICAgICBzdG9yYWdlTGltaXQ6ICcxMjkyJyxcbiAgICAgIH0pO1xuICAgICAgdHhCdWlsZGVyLnNvdXJjZShkZWZhdWx0S2V5UGFpci5nZXRBZGRyZXNzKCkpO1xuICAgICAgdHhCdWlsZGVyLmluaXRpYWxCYWxhbmNlKCcxMDAwMDAwJyk7XG4gICAgICB0eEJ1aWxkZXIuY291bnRlcignMCcpO1xuICAgICAgdHhCdWlsZGVyLm93bmVyKCdzcHBrN1pXQjhkaVUyVFdlaHhka1dDVjJEVEZ2bjFoUHo0cUxqaUQzbkpRb3pLbm9TRW5TQzhiJyk7XG4gICAgICB0eEJ1aWxkZXIub3duZXIoJ3NwcGs3WnE5S1B0d2t6a2dBc2hhNGpVMjlDNDNNY2dQMnNrSzU2dGpkN0tKamhjbUg2QVpDMUYnKTtcbiAgICAgIHR4QnVpbGRlci5vd25lcignc3BwazdkMnp0emJyTGRCYVRCN3l6YVdSa1BmY1dHc3JOUU5KZGtCRTliQ1RTU3pla0xOenB2ZicpO1xuICAgICAgdHhCdWlsZGVyLmJyYW5jaCgnQk04UWRaOTJWeWFIMXM1bndBRjlyVVhqaVBaM2czTnNuNm9ZYmRLcWoyUmdIeHZXWFZTJyk7XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogZGVmYXVsdEtleVBhaXIuZ2V0S2V5cygpLnBydiB9KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIHR4LmlkLnNob3VsZC5lcXVhbCgnb3BOZmpqRWZXazdIc25ZOGZRclVvUEZ1WFpmQUJ3ZXViQTZENGJWU2NtcW9WemNaVkZBJyk7XG4gICAgICB0eC50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24pO1xuICAgICAgdHguc291cmNlLnNob3VsZC5lcXVhbCgndHoyUHRKOXpnRWdGVlRScXk2R1hzc3Q1NHRIM2tzRW5ZdnZTJyk7XG4gICAgICBzaG91bGQuZXF1YWwodHguaW5wdXRzLmxlbmd0aCwgMSk7XG4gICAgICBzaG91bGQuZXF1YWwodHgub3V0cHV0cy5sZW5ndGgsIDEpO1xuICAgICAgdHguaW5wdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKCd0ejJQdEo5emdFZ0ZWVFJxeTZHWHNzdDU0dEgza3NFbll2dlMnKTtcbiAgICAgIHR4LmlucHV0c1swXS52YWx1ZS5zaG91bGQuZXF1YWwoJzEwMDQ3NjQnKTtcbiAgICAgIHR4Lm91dHB1dHNbMF0uYWRkcmVzcy5zaG91bGQuZXF1YWwoJ0tUMUo5TGZoRFY2RlF4UjdhTWFLN1I2Unc4bUJwZmhQNU1BMycpO1xuICAgICAgdHgub3V0cHV0c1swXS52YWx1ZS5zaG91bGQuZXF1YWwoJzEwMDAwMDAnKTtcbiAgICAgIHNob3VsZC5ub3QuZXhpc3QodHguZGVsZWdhdGUpO1xuICAgICAgdHguc2lnbmF0dXJlLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICB0eC5zaWduYXR1cmVbMF0uc2hvdWxkLmVxdWFsKFxuICAgICAgICAnc2lnVkQ1N2hhQU1Db2JIckN3SDlBQmZiRnZkbXlSOVpzcFpDM1ppaGI5dEVQZmh0ekNLUzFGOGZMb1Zwb2R2b3IzUFVvbzdyeTRqNDZ4WUVURXpFTG10bnJOVGFUUFg0J1xuICAgICAgKTtcbiAgICAgIE9iamVjdC5rZXlzKHR4LmdldEluZGV4ZXNCeVRyYW5zYWN0aW9uVHlwZSgpKS5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgdHgub3duZXJzLmxlbmd0aC5zaG91bGQuZXF1YWwoMyk7XG4gICAgICB0eC5vd25lcnNbMF0uc2hvdWxkLmVxdWFsKCdzcHBrN1pXQjhkaVUyVFdlaHhka1dDVjJEVEZ2bjFoUHo0cUxqaUQzbkpRb3pLbm9TRW5TQzhiJyk7XG4gICAgICB0eC5vd25lcnNbMV0uc2hvdWxkLmVxdWFsKCdzcHBrN1pxOUtQdHdremtnQXNoYTRqVTI5QzQzTWNnUDJza0s1NnRqZDdLSmpoY21INkFaQzFGJyk7XG4gICAgICB0eC5vd25lcnNbMl0uc2hvdWxkLmVxdWFsKCdzcHBrN2QyenR6YnJMZEJhVEI3eXphV1JrUGZjV0dzck5RTkpka0JFOWJDVFNTemVrTE56cHZmJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnYSB3YWxsZXQgaW5pdCB0cmFuc2FjdGlvbiB3aXRoIGRlbGVnYXRpb24gYW5kIHJldmVhbCB0aGUgc291cmNlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyOiBhbnkgPSBuZXcgWHR6TGliLlRyYW5zYWN0aW9uQnVpbGRlcihjb2lucy5nZXQoJ3h0eicpKTtcbiAgICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbik7XG4gICAgICB0eEJ1aWxkZXIuZmVlKHtcbiAgICAgICAgZmVlOiAnNDc2NCcsXG4gICAgICAgIGdhc0xpbWl0OiAnMzM5NzEnLFxuICAgICAgICBzdG9yYWdlTGltaXQ6ICcxMjkyJyxcbiAgICAgIH0pO1xuICAgICAgdHhCdWlsZGVyLnNvdXJjZShkZWZhdWx0S2V5UGFpci5nZXRBZGRyZXNzKCkpO1xuICAgICAgdHhCdWlsZGVyLnB1YmxpY0tleVRvUmV2ZWFsKGRlZmF1bHRLZXlQYWlyLmdldEtleXMoKS5wdWIpO1xuICAgICAgdHhCdWlsZGVyLmluaXRpYWxCYWxhbmNlKCcxMDAwMDAwJyk7XG4gICAgICB0eEJ1aWxkZXIuY291bnRlcignMCcpO1xuICAgICAgdHhCdWlsZGVyLm93bmVyKCdzcHBrN1pXQjhkaVUyVFdlaHhka1dDVjJEVEZ2bjFoUHo0cUxqaUQzbkpRb3pLbm9TRW5TQzhiJyk7XG4gICAgICB0eEJ1aWxkZXIub3duZXIoJ3NwcGs3WnE5S1B0d2t6a2dBc2hhNGpVMjlDNDNNY2dQMnNrSzU2dGpkN0tKamhjbUg2QVpDMUYnKTtcbiAgICAgIHR4QnVpbGRlci5vd25lcignc3BwazdkMnp0emJyTGRCYVRCN3l6YVdSa1BmY1dHc3JOUU5KZGtCRTliQ1RTU3pla0xOenB2ZicpO1xuICAgICAgdHhCdWlsZGVyLmluaXRpYWxEZWxlZ2F0ZSgndHoxS3BiSzV2MU5CMnZnM0pIQnhYSlpoeVE3dXI4M1hwN2lDJyk7XG4gICAgICB0eEJ1aWxkZXIuYnJhbmNoKCdCTThRZFo5MlZ5YUgxczVud0FGOXJVWGppUFozZzNOc242b1liZEtxajJSZ0h4dldYVlMnKTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBkZWZhdWx0S2V5UGFpci5nZXRLZXlzKCkucHJ2IH0pO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgdHguaWQuc2hvdWxkLmVxdWFsKCdvbnBONFpxNjY0WVRyaXlWbUJiZ0VaQVJlSGJ1Y3ZEMzFYd3ZucFA1VDlxemZoYmFuYngnKTtcbiAgICAgIHR4LnR5cGUuc2hvdWxkLmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbik7XG4gICAgICB0eC5zb3VyY2Uuc2hvdWxkLmVxdWFsKCd0ejJQdEo5emdFZ0ZWVFJxeTZHWHNzdDU0dEgza3NFbll2dlMnKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5pbnB1dHMubGVuZ3RoLCAyKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5vdXRwdXRzLmxlbmd0aCwgMSk7XG4gICAgICB0eC5pbnB1dHNbMF0uYWRkcmVzcy5zaG91bGQuZXF1YWwoJ3R6MlB0Sjl6Z0VnRlZUUnF5NkdYc3N0NTR0SDNrc0VuWXZ2UycpO1xuICAgICAgdHguaW5wdXRzWzBdLnZhbHVlLnNob3VsZC5lcXVhbCgnMTQyMCcpO1xuICAgICAgdHguaW5wdXRzWzFdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKCd0ejJQdEo5emdFZ0ZWVFJxeTZHWHNzdDU0dEgza3NFbll2dlMnKTtcbiAgICAgIHR4LmlucHV0c1sxXS52YWx1ZS5zaG91bGQuZXF1YWwoJzEwMDQ3NjQnKTtcbiAgICAgIHR4Lm91dHB1dHNbMF0uYWRkcmVzcy5zaG91bGQuZXF1YWwoJ0tUMUhkdHRwdjdDQmFKOGlnZGtoQ3VkTUhCV1VxTnZpSkNUZicpO1xuICAgICAgdHgub3V0cHV0c1swXS52YWx1ZS5zaG91bGQuZXF1YWwoJzEwMDAwMDAnKTtcbiAgICAgIHR4LmRlbGVnYXRlLnNob3VsZC5lcXVhbCgndHoxS3BiSzV2MU5CMnZnM0pIQnhYSlpoeVE3dXI4M1hwN2lDJyk7XG4gICAgICB0eC5zaWduYXR1cmUubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHR4LnNpZ25hdHVyZVswXS5zaG91bGQuZXF1YWwoXG4gICAgICAgICdzaWd0SnRxVmY3RkpWcWtEUHlQVzg3OEZmQ25wQ1BOYjZKSmRYQXhlemVwZTR0OTdCd2ZvdVlKNkdNcUhHU05oZXZ1NHVpTFNRMmgzNzRhNE54TW5BOUU5cUxYYTRqOTMnXG4gICAgICApO1xuICAgICAgY29uc3QgaW5kZXhlc0J5VHJhbnNhY3Rpb25UeXBlID0gdHguZ2V0SW5kZXhlc0J5VHJhbnNhY3Rpb25UeXBlKCk7XG4gICAgICBPYmplY3Qua2V5cyhpbmRleGVzQnlUcmFuc2FjdGlvblR5cGUpLmxlbmd0aC5zaG91bGQuZXF1YWwoMik7XG4gICAgICBpbmRleGVzQnlUcmFuc2FjdGlvblR5cGUucmV2ZWFsLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICBpbmRleGVzQnlUcmFuc2FjdGlvblR5cGUucmV2ZWFsWzBdLnNob3VsZC5lcXVhbCgwKTtcbiAgICAgIGluZGV4ZXNCeVRyYW5zYWN0aW9uVHlwZS5vcmlnaW5hdGlvbi5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgaW5kZXhlc0J5VHJhbnNhY3Rpb25UeXBlLm9yaWdpbmF0aW9uWzBdLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHR4Lm93bmVycy5sZW5ndGguc2hvdWxkLmVxdWFsKDMpO1xuICAgICAgdHgub3duZXJzWzBdLnNob3VsZC5lcXVhbCgnc3BwazdaV0I4ZGlVMlRXZWh4ZGtXQ1YyRFRGdm4xaFB6NHFMamlEM25KUW96S25vU0VuU0M4YicpO1xuICAgICAgdHgub3duZXJzWzFdLnNob3VsZC5lcXVhbCgnc3BwazdacTlLUHR3a3prZ0FzaGE0alUyOUM0M01jZ1Ayc2tLNTZ0amQ3S0pqaGNtSDZBWkMxRicpO1xuICAgICAgdHgub3duZXJzWzJdLnNob3VsZC5lcXVhbCgnc3BwazdkMnp0emJyTGRCYVRCN3l6YVdSa1BmY1dHc3JOUU5KZGtCRTliQ1RTU3pla0xOenB2ZicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2EgcmV2ZWFsIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyOiBhbnkgPSBuZXcgWHR6TGliLlRyYW5zYWN0aW9uQnVpbGRlcihjb2lucy5nZXQoJ3h0eicpKTtcbiAgICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5BY2NvdW50VXBkYXRlKTtcbiAgICAgIHR4QnVpbGRlci5zb3VyY2UoZGVmYXVsdEtleVBhaXIuZ2V0QWRkcmVzcygpKTtcbiAgICAgIHR4QnVpbGRlci5wdWJsaWNLZXlUb1JldmVhbChkZWZhdWx0S2V5UGFpci5nZXRLZXlzKCkucHViKTtcbiAgICAgIHR4QnVpbGRlci5jb3VudGVyKCcwJyk7XG4gICAgICB0eEJ1aWxkZXIuYnJhbmNoKCdCTThRZFo5MlZ5YUgxczVud0FGOXJVWGppUFozZzNOc242b1liZEtxajJSZ0h4dldYVlMnKTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBkZWZhdWx0S2V5UGFpci5nZXRLZXlzKCkucHJ2IH0pO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgdHguaWQuc2hvdWxkLmVxdWFsKCdvb3M0bjF6SkFHZXFMUXJOc25HQWZ6emo2RmVacWJTcm5BTVZUZEM0ODVjaW5GV042c3UnKTtcbiAgICAgIHR4LnR5cGUuc2hvdWxkLmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5BY2NvdW50VXBkYXRlKTtcbiAgICAgIHR4LnNvdXJjZS5zaG91bGQuZXF1YWwoJ3R6MlB0Sjl6Z0VnRlZUUnF5NkdYc3N0NTR0SDNrc0VuWXZ2UycpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LmlucHV0cy5sZW5ndGgsIDEpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4Lm91dHB1dHMubGVuZ3RoLCAwKTtcbiAgICAgIHR4LmlucHV0c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgndHoyUHRKOXpnRWdGVlRScXk2R1hzc3Q1NHRIM2tzRW5ZdnZTJyk7XG4gICAgICB0eC5pbnB1dHNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKCcxNDIwJyk7XG4gICAgICBzaG91bGQubm90LmV4aXN0KHR4LmRlbGVnYXRlKTtcbiAgICAgIHR4LnNpZ25hdHVyZS5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgdHguc2lnbmF0dXJlWzBdLnNob3VsZC5lcXVhbChcbiAgICAgICAgJ3NpZ1R0ZmN4dHZVNXpXYnNXREp3S3ZIZERjV1lEaGdzYjlvem1RNDRBVUdIblNKSmd2UFIyQ3ZOQ1VYOGF4ZXpKS29aUnpndjlnU0UzR1NEaDVTRWJtMzFKcU01M3l5ZydcbiAgICAgICk7XG4gICAgICBjb25zdCBpbmRleGVzQnlUcmFuc2FjdGlvblR5cGUgPSB0eC5nZXRJbmRleGVzQnlUcmFuc2FjdGlvblR5cGUoKTtcbiAgICAgIGluZGV4ZXNCeVRyYW5zYWN0aW9uVHlwZS5yZXZlYWwubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIGluZGV4ZXNCeVRyYW5zYWN0aW9uVHlwZS5yZXZlYWxbMF0uc2hvdWxkLmVxdWFsKDApO1xuICAgICAgT2JqZWN0LmtleXModHguZ2V0SW5kZXhlc0J5VHJhbnNhY3Rpb25UeXBlKCkpLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICB0eC5vd25lcnMubGVuZ3RoLnNob3VsZC5lcXVhbCgwKTtcbiAgICB9KTtcblxuICAgIGl0KCdhIG11bHRpc2lnIHNlbmQgdHJhbnNhY3Rpb24gdG8gYW4gaW1wbGljaXQgYWNjb3VudCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlcjogYW55ID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KCd4dHonKSk7XG4gICAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgICB0eEJ1aWxkZXIuYnJhbmNoKCdCTThRZFo5MlZ5YUgxczVud0FGOXJVWGppUFozZzNOc242b1liZEtxajJSZ0h4dldYVlMnKTtcbiAgICAgIHR4QnVpbGRlci5zb3VyY2UoZGVmYXVsdEtleVBhaXIuZ2V0QWRkcmVzcygpKTtcbiAgICAgIHR4QnVpbGRlci5jb3VudGVyKCcwJyk7XG4gICAgICB0eEJ1aWxkZXJcbiAgICAgICAgLnRyYW5zZmVyKCcxMDAwMDAwJylcbiAgICAgICAgLmZyb20oJ0tUMU5IMk0yM3hvdmh3N3V3V1Z1b0dUWXh5a2VDY1ZmU3FoTCcpXG4gICAgICAgIC50bygndHoxVlJqUnBWS252MTZBVnByRkgxdGtEbjRURGZWcUE4OTNBJylcbiAgICAgICAgLmZlZSgnNDc2NCcpXG4gICAgICAgIC5nYXNMaW1pdCgnMzM5NzEnKVxuICAgICAgICAuc3RvcmFnZUxpbWl0KCcxMjkyJylcbiAgICAgICAgLmRhdGFUb1NpZ24oXG4gICAgICAgICAgJzA1MDcwNzBhMDAwMDAwMTYwMTk2MzY5YzkwNjI1NTc1YmE0NDU5NGIyMzc5NDgzMmE5MzM3ZjdhMmQwMDA3MDcwMDAwMDUwNTAyMDAwMDAwMzIwMzIwMDUzZDAzNmQwNzQzMDM1ZDBhMDAwMDAwMTUwMDZiNWRkYWVmM2ZiNWQ3YzE1MWNmYjM2ZmJlNDNhN2EwNjY3NzczOTQwMzFlMDc0MzAzNmEwMDAxMDM0ZjAzNGQwMzFiJ1xuICAgICAgICApO1xuICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IGRlZmF1bHRLZXlQYWlyLmdldEtleXMoKS5wcnYgfSk7XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7XG4gICAgICAgIGtleTogbmV3IFh0ekxpYi5LZXlQYWlyKHsgcHJ2OiAnc3BzazJjYmlWc0F2cEdLbWF1OVhjTXNjTDNOUndqa3lUNTc1TjVBeUFvZmNvajQxeDZnNlRMJyB9KS5nZXRLZXlzKCkucHJ2LFxuICAgICAgfSk7XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogbmV3IFh0ekxpYi5LZXlQYWlyKHsgc2VlZDogQnVmZmVyLmFsbG9jKDE2KSB9KS5nZXRLZXlzKCkucHJ2IH0pO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgdHguaWQuc2hvdWxkLmVxdWFsKCdvbzhoYUtqdWlaZmpMSm1wV2dLRFZGMWtLYmIydUV0eWdGeXJTVnpnb1pOa2MzblVNRGQnKTtcbiAgICAgIHR4LnR5cGUuc2hvdWxkLmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICAgIHR4LnNvdXJjZS5zaG91bGQuZXF1YWwoJ3R6MlB0Sjl6Z0VnRlZUUnF5NkdYc3N0NTR0SDNrc0VuWXZ2UycpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LmlucHV0cy5sZW5ndGgsIDIpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4Lm91dHB1dHMubGVuZ3RoLCAxKTtcbiAgICAgIHR4LmlucHV0c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgndHoyUHRKOXpnRWdGVlRScXk2R1hzc3Q1NHRIM2tzRW5ZdnZTJyk7XG4gICAgICB0eC5pbnB1dHNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKCc0NzY0Jyk7XG4gICAgICB0eC5pbnB1dHNbMV0uYWRkcmVzcy5zaG91bGQuZXF1YWwoJ0tUMU5IMk0yM3hvdmh3N3V3V1Z1b0dUWXh5a2VDY1ZmU3FoTCcpO1xuICAgICAgdHguaW5wdXRzWzFdLnZhbHVlLnNob3VsZC5lcXVhbCgnMTAwMDAwMCcpO1xuICAgICAgdHgub3V0cHV0c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgndHoxVlJqUnBWS252MTZBVnByRkgxdGtEbjRURGZWcUE4OTNBJyk7XG4gICAgICB0eC5vdXRwdXRzWzBdLnZhbHVlLnNob3VsZC5lcXVhbCgnMTAwMDAwMCcpO1xuICAgICAgc2hvdWxkLm5vdC5leGlzdCh0eC5kZWxlZ2F0ZSk7XG4gICAgICB0eC5zaWduYXR1cmUubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHR4LnNpZ25hdHVyZVswXS5zaG91bGQuZXF1YWwoXG4gICAgICAgICdzaWdRTEhMeldMTkJXWURHZlJjQTM2WmFNa2FwS0pSS1NqREIyV3JEc291OUZaTG96NEtwMXVjVzlBRzdtZXk5d2pBaU5mUmZDRnJCVjl5S3NVOFVaNHNFTDIxVjd2V1knXG4gICAgICApO1xuICAgICAgdHgudG9Ccm9hZGNhc3RGb3JtYXQoKS5zaG91bGQuZXF1YWwoXG4gICAgICAgICdiYTdhMDRmYWIxYTNmNzdlZGE5NmI1NTE5NDdkZDM0M2UxNjVkMWI5MWI2ZjlmODA2NjQ4YjYzZTU3Yzg4Y2M4NmMwMWFhY2E4N2JkYmNkYzRlNjExN2I2NjdlMjlmOWI1MDQzNjJjODMxYmI5YzI1MDBiMzg5MDI4YzBhMDAwMTk2MzY5YzkwNjI1NTc1YmE0NDU5NGIyMzc5NDgzMmE5MzM3ZjdhMmQwMGZmZmYwNDZkNjE2OTZlMDAwMDAxMjUwNzA3MDcwNzAwMDAwNTA1MDIwMDAwMDA0MzAzMjAwNTNkMDM2ZDA3NDMwMzVkMDEwMDAwMDAyNDc0N2EzMTU2NTI2YTUyNzA1NjRiNmU3NjMxMzY0MTU2NzA3MjQ2NDgzMTc0NmI0NDZlMzQ1NDQ0NjY1NjcxNDEzODM5MzM0MTAzMWUwNzQzMDM2YTAwODA4OTdhMDM0ZjAzNGQwMzFiMDIwMDAwMDBkMDA1MDkwMTAwMDAwMDYwNzM2OTY3NGU2YTQ0MzYzNDRlNzU1NjZlNTU0YjM3NmY1NjQyMzI2MzMyNTM1MDMzMzI1NjU5NmEzNzY0NTQ3OTZiNjI2ZTUyNzg3OTQ0NmY1MzM5NDI0Nzc2Njc2MTY3NzY2ZTRkNjM1NDM0Njg1OTYzNjM2MTYyNjI0NjQ3NmYzOTc0NjQ1NjUxNTQzNDRkMzQzNjY1N2E1OTRhNjQ0YzMyNzA3YTU5NDQ1Mzc3NmI2NjUyMzY3OTcyNzA3MDU5MDUwOTAxMDAwMDAwNjA3MzY5Njc1OTY2NTY1OTRhNTU2MTY5NGI0YjVhNTgzNDdhNzM3YTU3NWEzNzUyNDYzMjM5MzI2ZTU2MzI1MDM2NTg0ZDM0NmU0YjY1NmIzMjU5Njc1NzUxMzg0MjRjNTMzMTcyMzIzMjc1MzQ2MTM5NTM0Mzc2NDc0ZDYzNjIzODM5NDI2YTU0NjY3NDU0NmUzMjc2Njc1NTdhNDM1NDUxNDc1MzMyNjM0YTRlNzY2MjU5NzQ3NTQ3NTE2YTQ3NTAwMzA2MTFlYmRhMzBkZDE1MDMyNDczNzM5MTcwNTg4Njg0MGJmYjk5ZjhmNTFkNjU4NmIyNzQwOGU4NGRmOTNjZTBmNDVkYzZlOGU2ZGYwMDBlNjAyZGExOWMzNTA5MTkwYjM3ZTdkZjdiMTFkNTUyY2NiYzQ2ZTNkZDM0YzA1ZjNiZjgnXG4gICAgICApO1xuICAgICAgY29uc3QgaW5kZXhlc0J5VHJhbnNhY3Rpb25UeXBlID0gdHguZ2V0SW5kZXhlc0J5VHJhbnNhY3Rpb25UeXBlKCk7XG4gICAgICBPYmplY3Qua2V5cyhpbmRleGVzQnlUcmFuc2FjdGlvblR5cGUpLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICBpbmRleGVzQnlUcmFuc2FjdGlvblR5cGUudHJhbnNhY3Rpb24ubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIGluZGV4ZXNCeVRyYW5zYWN0aW9uVHlwZS50cmFuc2FjdGlvblswXS5zaG91bGQuZXF1YWwoMCk7XG4gICAgICB0eC5vd25lcnMubGVuZ3RoLnNob3VsZC5lcXVhbCgwKTtcbiAgICB9KTtcblxuICAgIGl0KCdhIHNlbmQgdHJhbnNhY3Rpb24gdG8gYW4gb3JpZ2luYXRlZCBhY2NvdW50IChvdGhlciBjb250cmFjdCknLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXI6IGFueSA9IG5ldyBYdHpMaWIuVHJhbnNhY3Rpb25CdWlsZGVyKGNvaW5zLmdldCgneHR6JykpO1xuICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgdHhCdWlsZGVyLmJyYW5jaCgnQk04UWRaOTJWeWFIMXM1bndBRjlyVVhqaVBaM2czTnNuNm9ZYmRLcWoyUmdIeHZXWFZTJyk7XG4gICAgICB0eEJ1aWxkZXIuc291cmNlKGRlZmF1bHRLZXlQYWlyLmdldEFkZHJlc3MoKSk7XG4gICAgICB0eEJ1aWxkZXIuY291bnRlcignMCcpO1xuICAgICAgdHhCdWlsZGVyXG4gICAgICAgIC50cmFuc2ZlcignMTAwJylcbiAgICAgICAgLmZyb20oJ0tUMU5IMk0yM3hvdmh3N3V3V1Z1b0dUWXh5a2VDY1ZmU3FoTCcpXG4gICAgICAgIC50bygnS1QxSFVydDZrZnZZeURFWUNKMkdTanZUUFo2S21SZnhMQlU4JylcbiAgICAgICAgLmZlZSgnNDc2NCcpXG4gICAgICAgIC5nYXNMaW1pdCgnMzM5NzEnKVxuICAgICAgICAuc3RvcmFnZUxpbWl0KCcxMjkyJylcbiAgICAgICAgLmRhdGFUb1NpZ24oXG4gICAgICAgICAgJzA1MDcwNzBhMDAwMDAwMTYwMTk2MzY5YzkwNjI1NTc1YmE0NDU5NGIyMzc5NDgzMmE5MzM3ZjdhMmQwMDA3MDcwMDAwMDUwNTAyMDAwMDAwMzIwMzIwMDUzZDAzNmQwNzQzMDM1ZDBhMDAwMDAwMTUwMDZiNWRkYWVmM2ZiNWQ3YzE1MWNmYjM2ZmJlNDNhN2EwNjY3NzczOTQwMzFlMDc0MzAzNmEwMDAxMDM0ZjAzNGQwMzFiJ1xuICAgICAgICApO1xuICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IGRlZmF1bHRLZXlQYWlyLmdldEtleXMoKS5wcnYgfSk7XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7XG4gICAgICAgIGtleTogbmV3IFh0ekxpYi5LZXlQYWlyKHsgcHJ2OiAnc3BzazJjYmlWc0F2cEdLbWF1OVhjTXNjTDNOUndqa3lUNTc1TjVBeUFvZmNvajQxeDZnNlRMJyB9KS5nZXRLZXlzKCkucHJ2LFxuICAgICAgfSk7XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogbmV3IFh0ekxpYi5LZXlQYWlyKHsgc2VlZDogQnVmZmVyLmFsbG9jKDE2KSB9KS5nZXRLZXlzKCkucHJ2IH0pO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgdHguaWQuc2hvdWxkLmVxdWFsKCdvb2JUTm83MmR1OUJGWWZ5WlRvNjRrVFhWaEJmSE51SmFKUVh1TkdWcjZnWUNEcFlqRFEnKTtcbiAgICAgIHR4LnR5cGUuc2hvdWxkLmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICAgIHR4LnNvdXJjZS5zaG91bGQuZXF1YWwoJ3R6MlB0Sjl6Z0VnRlZUUnF5NkdYc3N0NTR0SDNrc0VuWXZ2UycpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LmlucHV0cy5sZW5ndGgsIDIpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4Lm91dHB1dHMubGVuZ3RoLCAxKTtcbiAgICAgIHR4LmlucHV0c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgndHoyUHRKOXpnRWdGVlRScXk2R1hzc3Q1NHRIM2tzRW5ZdnZTJyk7XG4gICAgICB0eC5pbnB1dHNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKCc0NzY0Jyk7XG4gICAgICB0eC5pbnB1dHNbMV0uYWRkcmVzcy5zaG91bGQuZXF1YWwoJ0tUMU5IMk0yM3hvdmh3N3V3V1Z1b0dUWXh5a2VDY1ZmU3FoTCcpO1xuICAgICAgdHguaW5wdXRzWzFdLnZhbHVlLnNob3VsZC5lcXVhbCgnMTAwJyk7XG4gICAgICB0eC5vdXRwdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKCdLVDFIVXJ0Nmtmdll5REVZQ0oyR1NqdlRQWjZLbVJmeExCVTgnKTtcbiAgICAgIHR4Lm91dHB1dHNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKCcxMDAnKTtcbiAgICAgIHNob3VsZC5ub3QuZXhpc3QodHguZGVsZWdhdGUpO1xuICAgICAgdHguc2lnbmF0dXJlLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICB0eC5zaWduYXR1cmVbMF0uc2hvdWxkLmVxdWFsKFxuICAgICAgICAnc2lnY00zeGlROUdOOXRQWHNWa2NrUEhrNjZrQUhEUk1hZzZYQ2JITFd2TUxQcUg5S0hnekFGZXBjaTJ4NTNrY0pHcVZoRlhhVVNFM0RoUkNHZGdqOGFoa2tXZ2lZWnVyJ1xuICAgICAgKTtcbiAgICAgIHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCkuc2hvdWxkLmVxdWFsKFxuICAgICAgICAnYmE3YTA0ZmFiMWEzZjc3ZWRhOTZiNTUxOTQ3ZGQzNDNlMTY1ZDFiOTFiNmY5ZjgwNjY0OGI2M2U1N2M4OGNjODZjMDFhYWNhODdiZGJjZGM0ZTYxMTdiNjY3ZTI5ZjliNTA0MzYyYzgzMWJiOWMyNTAwYjM4OTAyOGMwYTAwMDE5NjM2OWM5MDYyNTU3NWJhNDQ1OTRiMjM3OTQ4MzJhOTMzN2Y3YTJkMDBmZmZmMDQ2ZDYxNjk2ZTAwMDAwMTQwMDcwNzA3MDcwMDAwMDUwNTAyMDAwMDAwNWUwMzIwMDUzZDAzNmQwNzQzMDM2ZTAxMDAwMDAwMjQ0YjU0MzE0ODU1NzI3NDM2NmI2Njc2NTk3OTQ0NDU1OTQzNGEzMjQ3NTM2YTc2NTQ1MDVhMzY0YjZkNTI2Njc4NGM0MjU1MzgwNTU1MDM2YzAyMDAwMDAwMTUwNzJmMDIwMDAwMDAwOTAyMDAwMDAwMDQwMzRmMDMyNzAyMDAwMDAwMDAwNzQzMDM2YTAwYTQwMTAzNGYwMzRkMDMxYjAyMDAwMDAwZDAwNTA5MDEwMDAwMDA2MDczNjk2NzRlNmE0NDM2MzQ0ZTc1NTY2ZTU1NGIzNzZmNTY0MjMyNjMzMjUzNTAzMzMyNTY1OTZhMzc2NDU0Nzk2YjYyNmU1Mjc4Nzk0NDZmNTMzOTQyNDc3NjY3NjE2Nzc2NmU0ZDYzNTQzNDY4NTk2MzYzNjE2MjYyNDY0NzZmMzk3NDY0NTY1MTU0MzQ0ZDM0MzY2NTdhNTk0YTY0NGMzMjcwN2E1OTQ0NTM3NzZiNjY1MjM2Nzk3MjcwNzA1OTA1MDkwMTAwMDAwMDYwNzM2OTY3NTk2NjU2NTk0YTU1NjE2OTRiNGI1YTU4MzQ3YTczN2E1NzVhMzc1MjQ2MzIzOTMyNmU1NjMyNTAzNjU4NGQzNDZlNGI2NTZiMzI1OTY3NTc1MTM4NDI0YzUzMzE3MjMyMzI3NTM0NjEzOTUzNDM3NjQ3NGQ2MzYyMzgzOTQyNmE1NDY2NzQ1NDZlMzI3NjY3NTU3YTQzNTQ1MTQ3NTMzMjYzNGE0ZTc2NjI1OTc0NzU0NzUxNmE0NzUwMDMwNjZkYmVlZTgwZGU0NTg0N2FlZWIwNGYxN2RiYjJlMDc3NGFlNjk0MjgxN2QzMWU3NDRjN2U3NzcyOTI1YzVmNTEwYjE4NTIzZGFmZTU0NjAzYzg3NTMxNDFmM2UwOTg5Njc4ZjIyNTJkZWIzYmRhZWY5M2Q2YmVmYTk0Mzk5MjQwJ1xuICAgICAgKTtcbiAgICAgIE9iamVjdC5rZXlzKHR4LmdldEluZGV4ZXNCeVRyYW5zYWN0aW9uVHlwZSgpKS5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgdHgub3duZXJzLmxlbmd0aC5zaG91bGQuZXF1YWwoMCk7XG4gICAgfSk7XG5cbiAgICBpdCgnYSBzZW5kIHRyYW5zYWN0aW9uIHRvIG11bHRpcGxlIGRlc3RpbmF0aW9ucycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlcjogYW55ID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KCd4dHonKSk7XG4gICAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgICB0eEJ1aWxkZXIuYnJhbmNoKCdCTThRZFo5MlZ5YUgxczVud0FGOXJVWGppUFozZzNOc242b1liZEtxajJSZ0h4dldYVlMnKTtcbiAgICAgIHR4QnVpbGRlci5jb3VudGVyKCcwJyk7XG4gICAgICB0eEJ1aWxkZXIuc291cmNlKGRlZmF1bHRLZXlQYWlyLmdldEFkZHJlc3MoKSk7XG4gICAgICB0eEJ1aWxkZXJcbiAgICAgICAgLnRyYW5zZmVyKCcxMDAnKVxuICAgICAgICAuZnJvbSgnS1QxTkgyTTIzeG92aHc3dXdXVnVvR1RZeHlrZUNjVmZTcWhMJylcbiAgICAgICAgLnRvKCdLVDFIVXJ0Nmtmdll5REVZQ0oyR1NqdlRQWjZLbVJmeExCVTgnKVxuICAgICAgICAuZmVlKCc0NzY0JylcbiAgICAgICAgLmNvdW50ZXIoJzEnKVxuICAgICAgICAuZGF0YVRvU2lnbihcbiAgICAgICAgICAnMDUwNzA3MGEwMDAwMDAxNjAxOTYzNjljOTA2MjU1NzViYTQ0NTk0YjIzNzk0ODMyYTkzMzdmN2EyZDAwMDcwNzAwMDAwNTA1MDIwMDAwMDAzMjAzMjAwNTNkMDM2ZDA3NDMwMzVkMGEwMDAwMDAxNTAwNmI1ZGRhZWYzZmI1ZDdjMTUxY2ZiMzZmYmU0M2E3YTA2Njc3NzM5NDAzMWUwNzQzMDM2YTAwMDEwMzRmMDM0ZDAzMWInXG4gICAgICAgICk7XG4gICAgICB0eEJ1aWxkZXJcbiAgICAgICAgLnRyYW5zZmVyKCcxMDAnKVxuICAgICAgICAuZnJvbSgnS1QxTkgyTTIzeG92aHc3dXdXVnVvR1RZeHlrZUNjVmZTcWhMJylcbiAgICAgICAgLnRvKCd0ejFWUmpScFZLbnYxNkFWcHJGSDF0a0RuNFREZlZxQTg5M0EnKVxuICAgICAgICAuZmVlKCc0NzY0JylcbiAgICAgICAgLmNvdW50ZXIoJzInKVxuICAgICAgICAuZGF0YVRvU2lnbihcbiAgICAgICAgICAnMDUwNzA3MGEwMDAwMDAxNjAxOTYzNjljOTA2MjU1NzViYTQ0NTk0YjIzNzk0ODMyYTkzMzdmN2EyZDAwMDcwNzAwMDAwNTA1MDIwMDAwMDAzMjAzMjAwNTNkMDM2ZDA3NDMwMzVkMGEwMDAwMDAxNTAwNmI1ZGRhZWYzZmI1ZDdjMTUxY2ZiMzZmYmU0M2E3YTA2Njc3NzM5NDAzMWUwNzQzMDM2YTAwMDEwMzRmMDM0ZDAzMWInXG4gICAgICAgICk7XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogZGVmYXVsdEtleVBhaXIuZ2V0S2V5cygpLnBydiB9KTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHtcbiAgICAgICAga2V5OiBuZXcgWHR6TGliLktleVBhaXIoeyBwcnY6ICdzcHNrMmNiaVZzQXZwR0ttYXU5WGNNc2NMM05Sd2preVQ1NzVONUF5QW9mY29qNDF4Nmc2VEwnIH0pLmdldEtleXMoKS5wcnYsXG4gICAgICB9KTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBuZXcgWHR6TGliLktleVBhaXIoeyBzZWVkOiBCdWZmZXIuYWxsb2MoMTYpIH0pLmdldEtleXMoKS5wcnYgfSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuXG4gICAgICB0eC5pZC5zaG91bGQuZXF1YWwoJ29ueUdhV3M2ejRiVlZjZm4zaDlLYkJya3RFaHVEeUpMWUVWQjRhSlJNNllObmdqRHhFNCcpO1xuICAgICAgdHgudHlwZS5zaG91bGQuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgdHguc291cmNlLnNob3VsZC5lcXVhbCgndHoyUHRKOXpnRWdGVlRScXk2R1hzc3Q1NHRIM2tzRW5ZdnZTJyk7XG4gICAgICBzaG91bGQuZXF1YWwodHguaW5wdXRzLmxlbmd0aCwgNCk7XG4gICAgICBzaG91bGQuZXF1YWwodHgub3V0cHV0cy5sZW5ndGgsIDIpO1xuICAgICAgdHguaW5wdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKCd0ejJQdEo5emdFZ0ZWVFJxeTZHWHNzdDU0dEgza3NFbll2dlMnKTtcbiAgICAgIHR4LmlucHV0c1swXS52YWx1ZS5zaG91bGQuZXF1YWwoJzQ3NjQnKTtcbiAgICAgIHR4LmlucHV0c1sxXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgnS1QxTkgyTTIzeG92aHc3dXdXVnVvR1RZeHlrZUNjVmZTcWhMJyk7XG4gICAgICB0eC5pbnB1dHNbMV0udmFsdWUuc2hvdWxkLmVxdWFsKCcxMDAnKTtcbiAgICAgIHR4LmlucHV0c1syXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgndHoyUHRKOXpnRWdGVlRScXk2R1hzc3Q1NHRIM2tzRW5ZdnZTJyk7XG4gICAgICB0eC5pbnB1dHNbMl0udmFsdWUuc2hvdWxkLmVxdWFsKCc0NzY0Jyk7XG4gICAgICB0eC5pbnB1dHNbM10uYWRkcmVzcy5zaG91bGQuZXF1YWwoJ0tUMU5IMk0yM3hvdmh3N3V3V1Z1b0dUWXh5a2VDY1ZmU3FoTCcpO1xuICAgICAgdHguaW5wdXRzWzNdLnZhbHVlLnNob3VsZC5lcXVhbCgnMTAwJyk7XG4gICAgICB0eC5vdXRwdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKCdLVDFIVXJ0Nmtmdll5REVZQ0oyR1NqdlRQWjZLbVJmeExCVTgnKTtcbiAgICAgIHR4Lm91dHB1dHNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKCcxMDAnKTtcbiAgICAgIHR4Lm91dHB1dHNbMV0uYWRkcmVzcy5zaG91bGQuZXF1YWwoJ3R6MVZSalJwVktudjE2QVZwckZIMXRrRG40VERmVnFBODkzQScpO1xuICAgICAgdHgub3V0cHV0c1sxXS52YWx1ZS5zaG91bGQuZXF1YWwoJzEwMCcpO1xuICAgICAgc2hvdWxkLm5vdC5leGlzdCh0eC5kZWxlZ2F0ZSk7XG4gICAgICB0eC5zaWduYXR1cmUubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHR4LnNpZ25hdHVyZVswXS5zaG91bGQuZXF1YWwoXG4gICAgICAgICdzaWdkVXB6Q3htaTlOV2hkYkZHZnZxVnlIOFhmcjJVaVBjMmZrcU5yUTRDSHZyazE5WkRrc0Rrc0VjNERKc1RicGhlblY4akNOWkZxekw0c0NWUnpNOTNIblNTcWdKejcnXG4gICAgICApO1xuICAgICAgdHgudG9Ccm9hZGNhc3RGb3JtYXQoKS5zaG91bGQuZXF1YWwoXG4gICAgICAgICdiYTdhMDRmYWIxYTNmNzdlZGE5NmI1NTE5NDdkZDM0M2UxNjVkMWI5MWI2ZjlmODA2NjQ4YjYzZTU3Yzg4Y2M4NmMwMWFhY2E4N2JkYmNkYzRlNjExN2I2NjdlMjlmOWI1MDQzNjJjODMxYmI5YzI1MDBlODUyODEwMjAwMDE5NjM2OWM5MDYyNTU3NWJhNDQ1OTRiMjM3OTQ4MzJhOTMzN2Y3YTJkMDBmZmZmMDQ2ZDYxNjk2ZTAwMDAwMTQwMDcwNzA3MDcwMDAxMDUwNTAyMDAwMDAwNWUwMzIwMDUzZDAzNmQwNzQzMDM2ZTAxMDAwMDAwMjQ0YjU0MzE0ODU1NzI3NDM2NmI2Njc2NTk3OTQ0NDU1OTQzNGEzMjQ3NTM2YTc2NTQ1MDVhMzY0YjZkNTI2Njc4NGM0MjU1MzgwNTU1MDM2YzAyMDAwMDAwMTUwNzJmMDIwMDAwMDAwOTAyMDAwMDAwMDQwMzRmMDMyNzAyMDAwMDAwMDAwNzQzMDM2YTAwYTQwMTAzNGYwMzRkMDMxYjAyMDAwMDAwZDAwNTA5MDEwMDAwMDA2MDczNjk2NzRlNmE0NDM2MzQ0ZTc1NTY2ZTU1NGIzNzZmNTY0MjMyNjMzMjUzNTAzMzMyNTY1OTZhMzc2NDU0Nzk2YjYyNmU1Mjc4Nzk0NDZmNTMzOTQyNDc3NjY3NjE2Nzc2NmU0ZDYzNTQzNDY4NTk2MzYzNjE2MjYyNDY0NzZmMzk3NDY0NTY1MTU0MzQ0ZDM0MzY2NTdhNTk0YTY0NGMzMjcwN2E1OTQ0NTM3NzZiNjY1MjM2Nzk3MjcwNzA1OTA1MDkwMTAwMDAwMDYwNzM2OTY3NTk2NjU2NTk0YTU1NjE2OTRiNGI1YTU4MzQ3YTczN2E1NzVhMzc1MjQ2MzIzOTMyNmU1NjMyNTAzNjU4NGQzNDZlNGI2NTZiMzI1OTY3NTc1MTM4NDI0YzUzMzE3MjMyMzI3NTM0NjEzOTUzNDM3NjQ3NGQ2MzYyMzgzOTQyNmE1NDY2NzQ1NDZlMzI3NjY3NTU3YTQzNTQ1MTQ3NTMzMjYzNGE0ZTc2NjI1OTc0NzU0NzUxNmE0NzUwMDMwNjZjMDFhYWNhODdiZGJjZGM0ZTYxMTdiNjY3ZTI5ZjliNTA0MzYyYzgzMWJiOWMyNTAxZTg1MjgxMDIwMDAxOTYzNjljOTA2MjU1NzViYTQ0NTk0YjIzNzk0ODMyYTkzMzdmN2EyZDAwZmZmZjA0NmQ2MTY5NmUwMDAwMDEyNDA3MDcwNzA3MDAwMjA1MDUwMjAwMDAwMDQyMDMyMDA1M2QwMzZkMDc0MzAzNWQwMTAwMDAwMDI0NzQ3YTMxNTY1MjZhNTI3MDU2NGI2ZTc2MzEzNjQxNTY3MDcyNDY0ODMxNzQ2YjQ0NmUzNDU0NDQ2NjU2NzE0MTM4MzkzMzQxMDMxZTA3NDMwMzZhMDBhNDAxMDM0ZjAzNGQwMzFiMDIwMDAwMDBkMDA1MDkwMTAwMDAwMDYwNzM2OTY3NGU2YTQ0MzYzNDRlNzU1NjZlNTU0YjM3NmY1NjQyMzI2MzMyNTM1MDMzMzI1NjU5NmEzNzY0NTQ3OTZiNjI2ZTUyNzg3OTQ0NmY1MzM5NDI0Nzc2Njc2MTY3NzY2ZTRkNjM1NDM0Njg1OTYzNjM2MTYyNjI0NjQ3NmYzOTc0NjQ1NjUxNTQzNDRkMzQzNjY1N2E1OTRhNjQ0YzMyNzA3YTU5NDQ1Mzc3NmI2NjUyMzY3OTcyNzA3MDU5MDUwOTAxMDAwMDAwNjA3MzY5Njc1OTY2NTY1OTRhNTU2MTY5NGI0YjVhNTgzNDdhNzM3YTU3NWEzNzUyNDYzMjM5MzI2ZTU2MzI1MDM2NTg0ZDM0NmU0YjY1NmIzMjU5Njc1NzUxMzg0MjRjNTMzMTcyMzIzMjc1MzQ2MTM5NTM0Mzc2NDc0ZDYzNjIzODM5NDI2YTU0NjY3NDU0NmUzMjc2Njc1NTdhNDM1NDUxNDc1MzMyNjM0YTRlNzY2MjU5NzQ3NTQ3NTE2YTQ3NTAwMzA2NzY2YTBiMWY2Y2IwMzViZjUzNzg4N2JhOTAwNGM0ODliYjQ1OGQ4YzhlNzJiNTAzM2I2Y2VlOGFkNTJmODRlYzI3YjcxOWY1ZDBiOThjZGYyZDA3NDRiMjU1MzAxMjYzNjg4NjkyNjQ1ZWFmYzljZGYxYjQ4YjUwNTNjNTFkY2EnXG4gICAgICApO1xuICAgICAgdHgub3duZXJzLmxlbmd0aC5zaG91bGQuZXF1YWwoMCk7XG4gICAgICBjb25zdCBpbmRleGVzQnlUcmFuc2FjdGlvblR5cGUgPSB0eC5nZXRJbmRleGVzQnlUcmFuc2FjdGlvblR5cGUoKTtcbiAgICAgIE9iamVjdC5rZXlzKGluZGV4ZXNCeVRyYW5zYWN0aW9uVHlwZSkubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIGluZGV4ZXNCeVRyYW5zYWN0aW9uVHlwZS50cmFuc2FjdGlvbi5sZW5ndGguc2hvdWxkLmVxdWFsKDIpO1xuICAgICAgaW5kZXhlc0J5VHJhbnNhY3Rpb25UeXBlLnRyYW5zYWN0aW9uWzBdLnNob3VsZC5lcXVhbCgwKTtcbiAgICAgIGluZGV4ZXNCeVRyYW5zYWN0aW9uVHlwZS50cmFuc2FjdGlvblsxXS5zaG91bGQuZXF1YWwoMSk7XG5cbiAgICAgIGNvbnN0IGZpcnN0VHJhbnNmZXJTaWduYXR1cmVzID0gdHguZ2V0VHJhbnNmZXJTaWduYXR1cmVzKGluZGV4ZXNCeVRyYW5zYWN0aW9uVHlwZS50cmFuc2FjdGlvblswXSk7XG4gICAgICBmaXJzdFRyYW5zZmVyU2lnbmF0dXJlc1swXS5zaWduYXR1cmUuc2hvdWxkLmVxdWFsKFxuICAgICAgICAnc2lnTmpENjROdVZuVUs3b1ZCMmMyU1AzMlZZajdkVHlrYm5SeHlEb1M5Qkd2Z2Fndm5NY1Q0aFljY2FiYkZHbzl0ZFZRVDRNNDZlellKZEwycHpZRFN3a2ZSNnlycHBZJ1xuICAgICAgKTtcbiAgICAgIGZpcnN0VHJhbnNmZXJTaWduYXR1cmVzWzBdLmluZGV4LnNob3VsZC5lcXVhbCgwKTtcbiAgICAgIGZpcnN0VHJhbnNmZXJTaWduYXR1cmVzWzFdLnNpZ25hdHVyZS5zaG91bGQuZXF1YWwoXG4gICAgICAgICdzaWdZZlZZSlVhaUtLWlg0enN6V1o3UkYyOTJuVjJQNlhNNG5LZWsyWWdXUThCTFMxcjIydTRhOVNDdkdNY2I4OUJqVGZ0VG4ydmdVekNUUUdTMmNKTnZiWXR1R1FqR1AnXG4gICAgICApO1xuICAgICAgZmlyc3RUcmFuc2ZlclNpZ25hdHVyZXNbMV0uaW5kZXguc2hvdWxkLmVxdWFsKDEpO1xuXG4gICAgICBjb25zdCBzZWNvbmRUcmFuc2ZlclNpZ25hdHVyZXMgPSB0eC5nZXRUcmFuc2ZlclNpZ25hdHVyZXMoaW5kZXhlc0J5VHJhbnNhY3Rpb25UeXBlLnRyYW5zYWN0aW9uWzFdKTtcbiAgICAgIHNlY29uZFRyYW5zZmVyU2lnbmF0dXJlc1swXS5zaWduYXR1cmUuc2hvdWxkLmVxdWFsKFxuICAgICAgICAnc2lnTmpENjROdVZuVUs3b1ZCMmMyU1AzMlZZajdkVHlrYm5SeHlEb1M5Qkd2Z2Fndm5NY1Q0aFljY2FiYkZHbzl0ZFZRVDRNNDZlellKZEwycHpZRFN3a2ZSNnlycHBZJ1xuICAgICAgKTtcbiAgICAgIHNlY29uZFRyYW5zZmVyU2lnbmF0dXJlc1swXS5pbmRleC5zaG91bGQuZXF1YWwoMCk7XG4gICAgICBzZWNvbmRUcmFuc2ZlclNpZ25hdHVyZXNbMV0uc2lnbmF0dXJlLnNob3VsZC5lcXVhbChcbiAgICAgICAgJ3NpZ1lmVllKVWFpS0taWDR6c3pXWjdSRjI5Mm5WMlA2WE00bktlazJZZ1dROEJMUzFyMjJ1NGE5U0N2R01jYjg5QmpUZnRUbjJ2Z1V6Q1RRR1MyY0pOdmJZdHVHUWpHUCdcbiAgICAgICk7XG4gICAgICBzZWNvbmRUcmFuc2ZlclNpZ25hdHVyZXNbMV0uaW5kZXguc2hvdWxkLmVxdWFsKDEpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2Egc2VuZCB0cmFuc2FjdGlvbiB0byBtdWx0aXBsZSBkZXN0aW5hdGlvbnMgZnJvbSBpbXBsaWNpdCBhY2NvdW50JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgc291cmNlQWNjb3VudCA9IG5ldyBYdHpMaWIuS2V5UGFpcih7IHBydjogJ3Nwc2syY2JpVnNBdnBHS21hdTlYY01zY0wzTlJ3amt5VDU3NU41QXlBb2Zjb2o0MXg2ZzZUTCcgfSk7XG5cbiAgICAgIGNvbnN0IHR4QnVpbGRlcjogYW55ID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KCd4dHonKSk7XG4gICAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgICB0eEJ1aWxkZXIuZmVlKHsgZmVlOiAnNDc2NCcgfSk7XG4gICAgICB0eEJ1aWxkZXIuYnJhbmNoKCdCS25maVNWRlRqaXhiaHpzVGJSMWVEbWl0NnlLN1VCY2dSSlBobWdlV2NacWlNSFJaNkUnKTtcbiAgICAgIHR4QnVpbGRlci5jb3VudGVyKCczNzc3NTEnKTtcbiAgICAgIHR4QnVpbGRlci5zb3VyY2Uoc291cmNlQWNjb3VudC5nZXRBZGRyZXNzKCkpO1xuICAgICAgdHhCdWlsZGVyLnRyYW5zZmVyKCcxMTEnKS50bygndHoxVlJqUnBWS252MTZBVnByRkgxdGtEbjRURGZWcUE4OTNBJyk7XG4gICAgICB0eEJ1aWxkZXIudHJhbnNmZXIoJzExMScpLnRvKCd0ejJYQ0RhMnRjblMyNlBvQmdpVWI4aDF4WWh0SmFlYkMyYlQnKTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBzb3VyY2VBY2NvdW50LmdldEtleXMoKS5wcnYgfSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuXG4gICAgICB0eC5pZC5zaG91bGQuZXF1YWwoJ29vN21wVEIyMlF1MWQ3RVZjNWI0ZUFkTWdFenZkS1JzSEdqWldvRWpRd1lrNkJKMU5UcScpO1xuICAgICAgdHgudHlwZS5zaG91bGQuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLlNpbmdsZVNpZ1NlbmQpO1xuICAgICAgdHguc291cmNlLnNob3VsZC5lcXVhbCgndHoyUDJFOEVnSGFMQTZBMTdySDNwRTlUMnR4NkRBN0Q0c2lXJyk7XG4gICAgICBzaG91bGQuZXF1YWwodHguaW5wdXRzLmxlbmd0aCwgNCk7XG4gICAgICBzaG91bGQuZXF1YWwodHgub3V0cHV0cy5sZW5ndGgsIDIpO1xuICAgICAgdHguaW5wdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKCd0ejJQMkU4RWdIYUxBNkExN3JIM3BFOVQydHg2REE3RDRzaVcnKTtcbiAgICAgIHR4LmlucHV0c1swXS52YWx1ZS5zaG91bGQuZXF1YWwoJzQ3NjQnKTtcbiAgICAgIHR4LmlucHV0c1sxXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgndHoyUDJFOEVnSGFMQTZBMTdySDNwRTlUMnR4NkRBN0Q0c2lXJyk7XG4gICAgICB0eC5pbnB1dHNbMV0udmFsdWUuc2hvdWxkLmVxdWFsKCcxMTEnKTtcbiAgICAgIHR4LmlucHV0c1syXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgndHoyUDJFOEVnSGFMQTZBMTdySDNwRTlUMnR4NkRBN0Q0c2lXJyk7XG4gICAgICB0eC5pbnB1dHNbMl0udmFsdWUuc2hvdWxkLmVxdWFsKCc0NzY0Jyk7XG4gICAgICB0eC5pbnB1dHNbM10uYWRkcmVzcy5zaG91bGQuZXF1YWwoJ3R6MlAyRThFZ0hhTEE2QTE3ckgzcEU5VDJ0eDZEQTdENHNpVycpO1xuICAgICAgdHguaW5wdXRzWzNdLnZhbHVlLnNob3VsZC5lcXVhbCgnMTExJyk7XG4gICAgICB0eC5vdXRwdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKCd0ejFWUmpScFZLbnYxNkFWcHJGSDF0a0RuNFREZlZxQTg5M0EnKTtcbiAgICAgIHR4Lm91dHB1dHNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKCcxMTEnKTtcbiAgICAgIHR4Lm91dHB1dHNbMV0uYWRkcmVzcy5zaG91bGQuZXF1YWwoJ3R6MlhDRGEydGNuUzI2UG9CZ2lVYjhoMXhZaHRKYWViQzJiVCcpO1xuICAgICAgdHgub3V0cHV0c1sxXS52YWx1ZS5zaG91bGQuZXF1YWwoJzExMScpO1xuICAgICAgc2hvdWxkLm5vdC5leGlzdCh0eC5kZWxlZ2F0ZSk7XG4gICAgICB0eC5zaWduYXR1cmUubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHR4LnNpZ25hdHVyZVswXS5zaG91bGQuZXF1YWwoXG4gICAgICAgICdzaWd3NWVHMnJDa0FxSmNSMlN1WjIzVERRRXRmVThvRnc5ckdwVEF0cHZuQzY5RWJRYXpNWkw2ZVVuWXp4enZXRmJMRXRwN0hiTjRqb1dpMUM5R1EzNDhOWHJ3NlgzWmQnXG4gICAgICApO1xuICAgICAgdHgudG9Ccm9hZGNhc3RGb3JtYXQoKS5zaG91bGQuZXF1YWwoXG4gICAgICAgICcwOWY1Njg2MDIxYWFkY2ZjMDAwNjNiMDg3MzA1NWMyZTdjODQxMzk4ZmVjZTNkNzg2NWE4ZWQyNzU2NzA4ZDRhNmMwMWExNTI1ZTI4OWFlZDkzMTE5YzQ0ZmQzYWE4ZTlkZjg1MjJlMGQ4MGQ5YzI1OTc4NzE3ZTg1MjgxMDI2ZjAwMDA2YjVkZGFlZjNmYjVkN2MxNTFjZmIzNmZiZTQzYTdhMDY2Nzc3Mzk0MDA2YzAxYTE1MjVlMjg5YWVkOTMxMTljNDRmZDNhYThlOWRmODUyMmUwZDgwZDljMjU5ODg3MTdlODUyODEwMjZmMDAwMWZhZjcxMWY5OGQzYTk3ODY1NjY1MWMzMDg3NTEzOGMwODZmYTg3MTEwMGZjZjE4OWIzNjRjMDIxZTRiZTFhMDMyZjM4Njc0NDVlMGM2MmNhMDEwNDdmYjg1M2ZlMDJkMDM4ZTYyZmNhZDAyZmZjYTFkMDVlNGI1YTRlNGZkYzNjZTZmYzExNjA3YzljYThjZWNhNmZkNzMzNWQzZGFiNjQzOWNlMmRlZTExJ1xuICAgICAgKTtcbiAgICAgIE9iamVjdC5rZXlzKHR4LmdldEluZGV4ZXNCeVRyYW5zYWN0aW9uVHlwZSgpKS5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgdHgub3duZXJzLmxlbmd0aC5zaG91bGQuZXF1YWwoMCk7XG4gICAgfSk7XG5cbiAgICBpdCgnYSBtdWx0aXNpZyBzZW5kIHRyYW5zYWN0aW9uIHdpdGggdGhlIHNpZ25hdHVyZXMgaW4gY3VzdG9tIG9yZGVyJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyOiBhbnkgPSBuZXcgWHR6TGliLlRyYW5zYWN0aW9uQnVpbGRlcihjb2lucy5nZXQoJ3h0eicpKTtcbiAgICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICAgIHR4QnVpbGRlci5icmFuY2goJ0JNOFFkWjkyVnlhSDFzNW53QUY5clVYamlQWjNnM05zbjZvWWJkS3FqMlJnSHh2V1hWUycpO1xuICAgICAgdHhCdWlsZGVyLnNvdXJjZShkZWZhdWx0S2V5UGFpci5nZXRBZGRyZXNzKCkpO1xuICAgICAgdHhCdWlsZGVyLmNvdW50ZXIoJzAnKTtcbiAgICAgIHR4QnVpbGRlclxuICAgICAgICAudHJhbnNmZXIoJzEwMCcpXG4gICAgICAgIC5mcm9tKCdLVDFOSDJNMjN4b3Zodzd1d1dWdW9HVFl4eWtlQ2NWZlNxaEwnKVxuICAgICAgICAudG8oJ0tUMUhVcnQ2a2Z2WXlERVlDSjJHU2p2VFBaNkttUmZ4TEJVOCcpXG4gICAgICAgIC5mZWUoJzQ3NjQnKVxuICAgICAgICAuZ2FzTGltaXQoJzMzOTcxJylcbiAgICAgICAgLnN0b3JhZ2VMaW1pdCgnMTI5MicpXG4gICAgICAgIC5kYXRhVG9TaWduKCcwMCcpO1xuICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IGRlZmF1bHRLZXlQYWlyLmdldEtleXMoKS5wcnYgfSk7XG4gICAgICAvLyBNdWx0aXNpZyBrZXlzXG4gICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogbmV3IFh0ekxpYi5LZXlQYWlyKHsgc2VlZDogQnVmZmVyLmFsbG9jKDE4KSB9KS5nZXRLZXlzKCkucHJ2LCBpbmRleDogMiB9KTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBuZXcgWHR6TGliLktleVBhaXIoeyBzZWVkOiBCdWZmZXIuYWxsb2MoMTYpIH0pLmdldEtleXMoKS5wcnYsIGluZGV4OiAxIH0pO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHNpZ25hdHVyZXMgPSB0eC50b0pzb24oKS5jb250ZW50c1swXS5wYXJhbWV0ZXJzLnZhbHVlLmFyZ3NbMV07XG4gICAgICBzaWduYXR1cmVzWzBdLnByaW0uc2hvdWxkLmVxdWFsKCdOb25lJyk7XG4gICAgICBzaWduYXR1cmVzWzFdLnByaW0uc2hvdWxkLmVxdWFsKCdTb21lJyk7XG4gICAgICBzaWduYXR1cmVzWzFdLmFyZ3NbMF0uc3RyaW5nLnNob3VsZC5lcXVhbChcbiAgICAgICAgJ3NpZ1V4dkNRU0VXUXZacmYzeVMyVmpTVEJXeWNNUGUzekJCbzZFV3ZhMmQzdEhWMURLWk5VczhiNWZtcVFlWFd2ZFNTWHp0eDQ4VXNQWTVGbUppRG9mbVBTWjZTVWpadCdcbiAgICAgICk7XG4gICAgICBzaWduYXR1cmVzWzJdLnByaW0uc2hvdWxkLmVxdWFsKCdTb21lJyk7XG4gICAgICBzaWduYXR1cmVzWzJdLmFyZ3NbMF0uc3RyaW5nLnNob3VsZC5lcXVhbChcbiAgICAgICAgJ3NpZ2lDMjg2Z0xjMVNTV0h3S3lkY3p3d2R3VFVQdjdlOW1rUGVIemZFOXdFRzlQS1o2ZlVjbXJNZVl3Y0g3dDlmV3Nub3pCN0ZheTJ1eGttaTF1MVgxYnczTWdKVU5wdSdcbiAgICAgICk7XG4gICAgICB0eC5vd25lcnMubGVuZ3RoLnNob3VsZC5lcXVhbCgwKTtcbiAgICB9KTtcblxuICAgIGl0KCdhIG11bHRpc2lnIHNlbmQgdHJhbnNhY3Rpb24gd2l0aCB0aGUgc2lnbmF0dXJlcyBpbiBkZWZhdWx0IG9yZGVyJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyOiBhbnkgPSBuZXcgWHR6TGliLlRyYW5zYWN0aW9uQnVpbGRlcihjb2lucy5nZXQoJ3h0eicpKTtcbiAgICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICAgIHR4QnVpbGRlci5icmFuY2goJ0JNOFFkWjkyVnlhSDFzNW53QUY5clVYamlQWjNnM05zbjZvWWJkS3FqMlJnSHh2V1hWUycpO1xuICAgICAgdHhCdWlsZGVyLnNvdXJjZShkZWZhdWx0S2V5UGFpci5nZXRBZGRyZXNzKCkpO1xuICAgICAgdHhCdWlsZGVyLmNvdW50ZXIoJzAnKTtcbiAgICAgIHR4QnVpbGRlclxuICAgICAgICAudHJhbnNmZXIoJzEwMCcpXG4gICAgICAgIC5mcm9tKCdLVDFOSDJNMjN4b3Zodzd1d1dWdW9HVFl4eWtlQ2NWZlNxaEwnKVxuICAgICAgICAudG8oJ0tUMUhVcnQ2a2Z2WXlERVlDSjJHU2p2VFBaNkttUmZ4TEJVOCcpXG4gICAgICAgIC5mZWUoJzQ3NjQnKVxuICAgICAgICAuZ2FzTGltaXQoJzMzOTcxJylcbiAgICAgICAgLnN0b3JhZ2VMaW1pdCgnMTI5MicpXG4gICAgICAgIC5kYXRhVG9TaWduKCcwMCcpO1xuICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IGRlZmF1bHRLZXlQYWlyLmdldEtleXMoKS5wcnYgfSk7XG4gICAgICAvLyBNdWx0aXNpZyBrZXlzXG4gICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogbmV3IFh0ekxpYi5LZXlQYWlyKHsgc2VlZDogQnVmZmVyLmFsbG9jKDE4KSB9KS5nZXRLZXlzKCkucHJ2IH0pO1xuICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IG5ldyBYdHpMaWIuS2V5UGFpcih7IHNlZWQ6IEJ1ZmZlci5hbGxvYygxNikgfSkuZ2V0S2V5cygpLnBydiB9KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCBzaWduYXR1cmVzID0gdHgudG9Kc29uKCkuY29udGVudHNbMF0ucGFyYW1ldGVycy52YWx1ZS5hcmdzWzFdO1xuICAgICAgc2lnbmF0dXJlc1swXS5wcmltLnNob3VsZC5lcXVhbCgnU29tZScpO1xuICAgICAgc2lnbmF0dXJlc1swXS5hcmdzWzBdLnN0cmluZy5zaG91bGQuZXF1YWwoXG4gICAgICAgICdzaWdpQzI4NmdMYzFTU1dId0t5ZGN6d3dkd1RVUHY3ZTlta1BlSHpmRTl3RUc5UEtaNmZVY21yTWVZd2NIN3Q5Zldzbm96QjdGYXkydXhrbWkxdTFYMWJ3M01nSlVOcHUnXG4gICAgICApO1xuICAgICAgc2lnbmF0dXJlc1sxXS5wcmltLnNob3VsZC5lcXVhbCgnU29tZScpO1xuICAgICAgc2lnbmF0dXJlc1sxXS5hcmdzWzBdLnN0cmluZy5zaG91bGQuZXF1YWwoXG4gICAgICAgICdzaWdVeHZDUVNFV1F2WnJmM3lTMlZqU1RCV3ljTVBlM3pCQm82RVd2YTJkM3RIVjFES1pOVXM4YjVmbXFRZVhXdmRTU1h6dHg0OFVzUFk1Rm1KaURvZm1QU1o2U1VqWnQnXG4gICAgICApO1xuICAgICAgc2lnbmF0dXJlc1syXS5wcmltLnNob3VsZC5lcXVhbCgnTm9uZScpO1xuICAgICAgT2JqZWN0LmtleXModHguZ2V0SW5kZXhlc0J5VHJhbnNhY3Rpb25UeXBlKCkpLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgfSk7XG5cbiAgICBpdCgnYSBzaW5nbGVTaWcgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXI6IGFueSA9IG5ldyBYdHpMaWIuVHJhbnNhY3Rpb25CdWlsZGVyKGNvaW5zLmdldCgneHR6JykpO1xuICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLlNpbmdsZVNpZ1NlbmQpO1xuICAgICAgdHhCdWlsZGVyLmJyYW5jaCgnQk04UWRaOTJWeWFIMXM1bndBRjlyVVhqaVBaM2czTnNuNm9ZYmRLcWoyUmdIeHZXWFZTJyk7XG4gICAgICB0eEJ1aWxkZXIuc291cmNlKGRlZmF1bHRLZXlQYWlyLmdldEFkZHJlc3MoKSk7XG4gICAgICB0eEJ1aWxkZXIuY291bnRlcignMCcpO1xuICAgICAgdHhCdWlsZGVyXG4gICAgICAgIC50cmFuc2ZlcihuZXcgQmlnTnVtYmVyKDEwKS50b0ZpeGVkKDApKVxuICAgICAgICAuZnJvbShkZWZhdWx0S2V5UGFpci5nZXRBZGRyZXNzKCkpXG4gICAgICAgIC50bygnS1QxSFVydDZrZnZZeURFWUNKMkdTanZUUFo2S21SZnhMQlU4JylcbiAgICAgICAgLmZlZSgnNDc2NCcpXG4gICAgICAgIC5nYXNMaW1pdCgnMTAwOTcxJylcbiAgICAgICAgLnN0b3JhZ2VMaW1pdCgnMTI5MicpO1xuICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IGRlZmF1bHRLZXlQYWlyLmdldEtleXMoKS5wcnYgfSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgdHgudHlwZS5zaG91bGQuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLlNpbmdsZVNpZ1NlbmQpO1xuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgICB0eEpzb24uY29udGVudHNbMF0uZ2FzX2xpbWl0LnNob3VsZC5lcXVhbCgnMTAwOTcxJyk7XG4gICAgICB0eEpzb24uY29udGVudHNbMF0uc3RvcmFnZV9saW1pdC5zaG91bGQuZXF1YWwoJzEyOTInKTtcbiAgICAgIHR4SnNvbi5jb250ZW50c1swXS5hbW91bnQuc2hvdWxkLmVxdWFsKCcxMCcpO1xuICAgICAgdHhKc29uLmNvbnRlbnRzWzBdLmNvdW50ZXIuc2hvdWxkLmVxdWFsKCcwJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzaG91bGQgZmFpbCB0byBzaWduJywgKCkgPT4ge1xuICAgIGxldCBnZW5lcmljVHhCdWlsZGVyOiBhbnk7XG5cbiAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgIGdlbmVyaWNUeEJ1aWxkZXIgPSBuZXcgWHR6TGliLlRyYW5zYWN0aW9uQnVpbGRlcihjb2lucy5nZXQoJ3R4dHonKSk7XG4gICAgICBnZW5lcmljVHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgZ2VuZXJpY1R4QnVpbGRlci5icmFuY2goJ0JNOFFkWjkyVnlhSDFzNW53QUY5clVYamlQWjNnM05zbjZvWWJkS3FqMlJnSHh2V1hWUycpO1xuICAgICAgZ2VuZXJpY1R4QnVpbGRlci5zb3VyY2UoZGVmYXVsdEtleVBhaXIuZ2V0QWRkcmVzcygpKTtcbiAgICAgIGdlbmVyaWNUeEJ1aWxkZXIuY291bnRlcignMCcpO1xuICAgICAgZ2VuZXJpY1R4QnVpbGRlclxuICAgICAgICAudHJhbnNmZXIoJzEwMCcpXG4gICAgICAgIC5mcm9tKCdLVDFOSDJNMjN4b3Zodzd1d1dWdW9HVFl4eWtlQ2NWZlNxaEwnKVxuICAgICAgICAudG8oJ0tUMUhVcnQ2a2Z2WXlERVlDSjJHU2p2VFBaNkttUmZ4TEJVOCcpXG4gICAgICAgIC5mZWUoJzQ3NjQnKVxuICAgICAgICAuZ2FzTGltaXQoJzMzOTcxJylcbiAgICAgICAgLnN0b3JhZ2VMaW1pdCgnMTI5MicpXG4gICAgICAgIC5kYXRhVG9TaWduKCcwMCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2EgdHJhbnNhY3Rpb24gd2l0aCBubyBzb3VyY2UgYWNjb3VudCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlcjogYW55ID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KCd4dHonKSk7XG4gICAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24pO1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIuc2lnbih7IGtleTogZGVmYXVsdEtleVBhaXIuZ2V0S2V5cygpLnBydiB9KSk7XG4gICAgfSk7XG5cbiAgICBpdCgnYSB0cmFuc2FjdGlvbiB3aXRoIGEgZGlmZmVyZW50IHByaXZhdGUga2V5IHRoYW4gdGhlIHNvdXJjZSBhY2NvdW50JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyOiBhbnkgPSBuZXcgWHR6TGliLlRyYW5zYWN0aW9uQnVpbGRlcihjb2lucy5nZXQoJ3h0eicpKTtcbiAgICAgIHR4QnVpbGRlci5mcm9tKHRlc3REYXRhLmVtcHR5VW5zaWduZWRTZXJpYWxpemVkT3JpZ2luYXRpb25UcmFuc2FjdGlvbik7XG4gICAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24pO1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIuc2lnbih7IGtleTogbmV3IFh0ekxpYi5LZXlQYWlyKCkuZ2V0S2V5cygpLnBydiB9KSk7XG4gICAgfSk7XG5cbiAgICBpdCgnYSB0cmFuc2FjdGlvbiB3aXRoIHNvbWUga2V5cyB3aXRoIGN1c3RvbSBpbmRleCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGdlbmVyaWNUeEJ1aWxkZXIuc2lnbih7IGtleTogZGVmYXVsdEtleVBhaXIuZ2V0S2V5cygpLnBydiB9KTtcbiAgICAgIC8vIE11bHRpc2lnIGtleXNcbiAgICAgIGdlbmVyaWNUeEJ1aWxkZXIuc2lnbih7IGtleTogbmV3IFh0ekxpYi5LZXlQYWlyKCkuZ2V0S2V5cygpLnBydiB9KTtcbiAgICAgIGdlbmVyaWNUeEJ1aWxkZXIuc2lnbih7IGtleTogbmV3IFh0ekxpYi5LZXlQYWlyKCkuZ2V0S2V5cygpLnBydiB9KTtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IGdlbmVyaWNUeEJ1aWxkZXIuc2lnbih7IGtleTogbmV3IFh0ekxpYi5LZXlQYWlyKCkuZ2V0S2V5cygpLnBydiwgaW5kZXg6IDIgfSksXG4gICAgICAgIG5ldyBSZWdFeHAoJ0N1c3RvbSBpbmRleCBoYXMgdG8gYmUgc2V0IGZvciBhbGwgbXVsdGlzaWcgY29udHJhY3Qgc2lnbmluZyBrZXlzIG9yIG5vbmUnKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdhIHRyYW5zYWN0aW9uIHdpdGggc29tZSBrZXlzIHdpdGhvdXQgY3VzdG9tIGluZGV4JywgYXN5bmMgKCkgPT4ge1xuICAgICAgZ2VuZXJpY1R4QnVpbGRlci5zaWduKHsga2V5OiBkZWZhdWx0S2V5UGFpci5nZXRLZXlzKCkucHJ2IH0pO1xuICAgICAgLy8gTXVsdGlzaWcga2V5c1xuICAgICAgZ2VuZXJpY1R4QnVpbGRlci5zaWduKHsga2V5OiBuZXcgWHR6TGliLktleVBhaXIoKS5nZXRLZXlzKCkucHJ2LCBpbmRleDogMCB9KTtcbiAgICAgIGdlbmVyaWNUeEJ1aWxkZXIuc2lnbih7IGtleTogbmV3IFh0ekxpYi5LZXlQYWlyKCkuZ2V0S2V5cygpLnBydiwgaW5kZXg6IDEgfSk7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PiBnZW5lcmljVHhCdWlsZGVyLnNpZ24oeyBrZXk6IG5ldyBYdHpMaWIuS2V5UGFpcigpLmdldEtleXMoKS5wcnYgfSksXG4gICAgICAgIG5ldyBSZWdFeHAoJ0N1c3RvbSBpbmRleCBoYXMgdG8gYmUgc2V0IGZvciBhbGwgbXVsdGlzaWcgY29udHJhY3Qgc2lnbmluZyBrZXlzIG9yIG5vbmUnKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdhIHRyYW5zYWN0aW9uIHdpdGggYSBrZXkgd2l0aCBpbnZhbGlkIGN1c3RvbSBpbmRleCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGdlbmVyaWNUeEJ1aWxkZXIuc2lnbih7IGtleTogZGVmYXVsdEtleVBhaXIuZ2V0S2V5cygpLnBydiB9KTtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IGdlbmVyaWNUeEJ1aWxkZXIuc2lnbih7IGtleTogbmV3IFh0ekxpYi5LZXlQYWlyKCkuZ2V0S2V5cygpLnBydiwgaW5kZXg6IDMgfSksXG4gICAgICAgIG5ldyBSZWdFeHAoJ0N1c3RvbSBpbmRleCBjYW5ub3QgYmUgZ3JlYXRlcicpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2EgU2VuZCB0cmFuc2FjdGlvbiB3aXRoIG5vIHRyYW5zZmVycycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlcjogYW55ID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KCd4dHonKSk7XG4gICAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgICB0eEJ1aWxkZXIuZmVlKHsgZmVlOiAnNDc2NCcgfSk7XG4gICAgICB0eEJ1aWxkZXIuYnJhbmNoKCdCS25maVNWRlRqaXhiaHpzVGJSMWVEbWl0NnlLN1VCY2dSSlBobWdlV2NacWlNSFJaNkUnKTtcbiAgICAgIHR4QnVpbGRlci5jb3VudGVyKCcxJyk7XG4gICAgICB0eEJ1aWxkZXIuc291cmNlKGRlZmF1bHRLZXlQYWlyLmdldEFkZHJlc3MoKSk7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci5zaWduKHsga2V5OiBkZWZhdWx0S2V5UGFpci5nZXRLZXlzKCkucHJ2IH0pKTtcbiAgICB9KTtcblxuICAgIGl0KCdhbiBhZGRyZXNzIGluaXRpYWxpemF0aW9uIHRyYW5zYWN0aW9uIHdpdGhvdXQgcHVibGljIGtleScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlcjogYW55ID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KCd4dHonKSk7XG4gICAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuQWNjb3VudFVwZGF0ZSk7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PiB0eEJ1aWxkZXIuc2lnbih7IGtleTogZGVmYXVsdEtleVBhaXIuZ2V0S2V5cygpLnBydiB9KSxcbiAgICAgICAgbmV3IFJlZ0V4cCgnQ2Fubm90IHNpZ24gYSBwdWJsaWMga2V5IHJldmVsYXRpb24gdHJhbnNhY3Rpb24gd2l0aG91dCBwdWJsaWMga2V5JylcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzaG91bGQgZmFpbCB0bycsICgpID0+IHtcbiAgICBpdCgnY2hhbmdlIHRoZSB0eXBlIHRvIFNlbmQgd2hlbiBvd25lcnMgaGF2ZSBhbHJlYWR5IGJlZW4gc2V0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyOiBhbnkgPSBuZXcgWHR6TGliLlRyYW5zYWN0aW9uQnVpbGRlcihjb2lucy5nZXQoJ3h0eicpKTtcbiAgICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbik7XG4gICAgICB0eEJ1aWxkZXIub3duZXIoZGVmYXVsdEtleVBhaXIuZ2V0S2V5cygpLnB1Yik7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5TZW5kKSk7XG4gICAgfSk7XG5cbiAgICBpdCgnYnVpbGQgYSBzZW5kIHRyYW5zYWN0aW9uIHdpdGggb3duZXJzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyOiBhbnkgPSBuZXcgWHR6TGliLlRyYW5zYWN0aW9uQnVpbGRlcihjb2lucy5nZXQoJ3h0eicpKTtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLm93bmVyKGRlZmF1bHRLZXlQYWlyLmdldEtleXMoKS5wdWIpKTtcbiAgICB9KTtcblxuICAgIGl0KCdidWlsZCBhIHRyYW5zYWN0aW9uIHdpdGggYW4gaW52YWxpZCBicmFuY2ggaWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXI6IGFueSA9IG5ldyBYdHpMaWIuVHJhbnNhY3Rpb25CdWlsZGVyKGNvaW5zLmdldCgneHR6JykpO1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIuYnJhbmNoKCcnKSk7XG4gICAgfSk7XG5cbiAgICBpdCgnYnVpbGQgYSB0cmFuc2FjdGlvbiB3aXRoIGFuIGludmFsaWQgdmFsdWUnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXI6IGFueSA9IG5ldyBYdHpMaWIuVHJhbnNhY3Rpb25CdWlsZGVyKGNvaW5zLmdldCgneHR6JykpO1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIuaW5pdGlhbEJhbGFuY2UoJy0xJykpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2J1aWxkIGEgbm9uIHdhbGxldCBpbml0aWFsaXphdGlvbiB0cmFuc2FjdGlvbiB3aXRoIGluaXRpYWwgYmFsYW5jZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlcjogYW55ID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KCd4dHonKSk7XG4gICAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci5pbml0aWFsQmFsYW5jZSgnMTAwJykpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2J1aWxkIHRyYW5zZmVyIGZvciBub24gc2VuZC10eXBlIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyOiBhbnkgPSBuZXcgWHR6TGliLlRyYW5zYWN0aW9uQnVpbGRlcihjb2lucy5nZXQoJ3h0eicpKTtcbiAgICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbik7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci50cmFuc2ZlcignMTAwJyksIG5ldyBSZWdFeHAoJ1RyYW5zZmVycyBjYW4gb25seSBiZSBzZXQgZm9yIHNlbmQgdHJhbnNhY3Rpb25zJykpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FkZCBtb3JlIG93bmVycyB0aGFuIHRoZSBtdWx0aXNpZyBtYXhpbXVtJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyOiBhbnkgPSBuZXcgWHR6TGliLlRyYW5zYWN0aW9uQnVpbGRlcihjb2lucy5nZXQoJ3h0eicpKTtcbiAgICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbik7XG4gICAgICB0eEJ1aWxkZXIub3duZXIoJ3NwcGs3WldCOGRpVTJUV2VoeGRrV0NWMkRURnZuMWhQejRxTGppRDNuSlFvektub1NFblNDOGInKTtcbiAgICAgIHR4QnVpbGRlci5vd25lcignc3BwazdacTlLUHR3a3prZ0FzaGE0alUyOUM0M01jZ1Ayc2tLNTZ0amQ3S0pqaGNtSDZBWkMxRicpO1xuICAgICAgdHhCdWlsZGVyLm93bmVyKCdzcHBrN2QyenR6YnJMZEJhVEI3eXphV1JrUGZjV0dzck5RTkpka0JFOWJDVFNTemVrTE56cHZmJyk7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PiB0eEJ1aWxkZXIub3duZXIoJ3NwcGs3ZDJ6dHpickxkQmFUQjd5emFXUmtQZmNXR3NyTlFOSmRrQkU5YkNUU1N6ZWtMTnpwdmYnKSxcbiAgICAgICAgbmV3IFJlZ0V4cCgnQSBtYXhpbXVtIG9mIDMgb3duZXJzJylcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnYWRkIHRoZSBzYW1lIG93bmVyIHR3aWNlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyOiBhbnkgPSBuZXcgWHR6TGliLlRyYW5zYWN0aW9uQnVpbGRlcihjb2lucy5nZXQoJ3h0eicpKTtcbiAgICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbik7XG4gICAgICB0eEJ1aWxkZXIub3duZXIoJ3NwcGs3ZDJ6dHpickxkQmFUQjd5emFXUmtQZmNXR3NyTlFOSmRrQkU5YkNUU1N6ZWtMTnpwdmYnKTtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IHR4QnVpbGRlci5vd25lcignc3BwazdkMnp0emJyTGRCYVRCN3l6YVdSa1BmY1dHc3JOUU5KZGtCRTliQ1RTU3pla0xOenB2ZicpLFxuICAgICAgICBuZXcgUmVnRXhwKCdSZXBlYXRlZCBvd25lciBwdWJsaWMga2V5JylcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnYWRkIGFuIGludmFsaWQgb3duZXIgcHVibGljIGtleScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlcjogYW55ID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KCd4dHonKSk7XG4gICAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24pO1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIub3duZXIoJ3NwcGsnKSwgbmV3IFJlZ0V4cCgnSW52YWxpZCBwdWJsaWMga2V5JykpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FkZCBhbiBpbnZhbGlkIHB1YmxpYyBrZXkgdG8gcmV2ZWFsJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyOiBhbnkgPSBuZXcgWHR6TGliLlRyYW5zYWN0aW9uQnVpbGRlcihjb2lucy5nZXQoJ3h0eicpKTtcbiAgICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5BY2NvdW50VXBkYXRlKTtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnB1YmxpY0tleVRvUmV2ZWFsKCdzcHBrJyksIG5ldyBSZWdFeHAoJ1Vuc3VwcG9ydGVkIHB1YmxpYyBrZXknKSk7XG4gICAgfSk7XG5cbiAgICBpdCgnYWRkIHRoZSBzYW1lIHB1YmxpYyBrZXkgdG8gcmV2ZWFsIHR3aWNlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyOiBhbnkgPSBuZXcgWHR6TGliLlRyYW5zYWN0aW9uQnVpbGRlcihjb2lucy5nZXQoJ3h0eicpKTtcbiAgICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5BY2NvdW50VXBkYXRlKTtcbiAgICAgIHR4QnVpbGRlci5zb3VyY2UoZGVmYXVsdEtleVBhaXIuZ2V0QWRkcmVzcygpKTtcbiAgICAgIHR4QnVpbGRlci5wdWJsaWNLZXlUb1JldmVhbChkZWZhdWx0S2V5UGFpci5nZXRLZXlzKCkucHViKTtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IHR4QnVpbGRlci5wdWJsaWNLZXlUb1JldmVhbChkZWZhdWx0S2V5UGFpci5nZXRLZXlzKCkucHViKSxcbiAgICAgICAgbmV3IFJlZ0V4cCgnUHVibGljIGtleSB0byByZXZlYWwgYWxyZWFkeSBzZXQnKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdhZGQgdGhlIHB1YmxpYyBrZXkgdG8gcmV2ZWFsIHRoYXQgZG9lcyBub3QgYmVsb25nIHRvIHRoZSBzb3VyY2UnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXI6IGFueSA9IG5ldyBYdHpMaWIuVHJhbnNhY3Rpb25CdWlsZGVyKGNvaW5zLmdldCgneHR6JykpO1xuICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLkFjY291bnRVcGRhdGUpO1xuICAgICAgdHhCdWlsZGVyLnNvdXJjZShkZWZhdWx0S2V5UGFpci5nZXRBZGRyZXNzKCkpO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4gdHhCdWlsZGVyLnB1YmxpY0tleVRvUmV2ZWFsKCdzcHBrN2QyenR6YnJMZEJhVEI3eXphV1JrUGZjV0dzck5RTkpka0JFOWJDVFNTemVrTE56cHZmJyksXG4gICAgICAgIG5ldyBSZWdFeHAoJ1B1YmxpYyBrZXkgZG9lcyBub3QgbWF0Y2ggdGhlIHNvdXJjZSBhZGRyZXNzJylcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnY2hhbmdlIHRoZSB0cmFuc2FjdGlvbiB0eXBlIGZyb20gU2VuZCBpZiBpdCBoYXMgdHJhbnNmZXJzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyOiBhbnkgPSBuZXcgWHR6TGliLlRyYW5zYWN0aW9uQnVpbGRlcihjb2lucy5nZXQoJ3h0eicpKTtcbiAgICAgIHR4QnVpbGRlci5icmFuY2goJ0JNOFFkWjkyVnlhSDFzNW53QUY5clVYamlQWjNnM05zbjZvWWJkS3FqMlJnSHh2V1hWUycpO1xuICAgICAgdHhCdWlsZGVyLnNvdXJjZShkZWZhdWx0S2V5UGFpci5nZXRBZGRyZXNzKCkpO1xuICAgICAgdHhCdWlsZGVyLmNvdW50ZXIoJzAnKTtcbiAgICAgIHR4QnVpbGRlclxuICAgICAgICAudHJhbnNmZXIoJzEwMCcpXG4gICAgICAgIC5mcm9tKCdLVDFOSDJNMjN4b3Zodzd1d1dWdW9HVFl4eWtlQ2NWZlNxaEwnKVxuICAgICAgICAudG8oJ0tUMUhVcnQ2a2Z2WXlERVlDSjJHU2p2VFBaNkttUmZ4TEJVOCcpXG4gICAgICAgIC5mZWUoJzQ3NjQnKTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBkZWZhdWx0S2V5UGFpci5nZXRLZXlzKCkucHJ2IH0pO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4gdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uKSxcbiAgICAgICAgbmV3IFJlZ0V4cCgnVHJhbnNhY3Rpb24gY29udGFpbnMgdHJhbnNmZXJzIGFuZCBjYW4gb25seSBiZSBsYWJlbGVkIGFzIFNlbmQnKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
656
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QixvREFBNEI7QUFDNUIsOENBQWtEO0FBQ2xELDRDQUF1QztBQUN2QyxnRUFBcUM7QUFDckMsdURBQXlDO0FBQ3pDLG1DQUFtQztBQUVuQyxRQUFRLENBQUMsMkJBQTJCLEVBQUU7SUFDcEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxZQUFNLENBQUMsT0FBTyxDQUFDO1FBQ3hDLEdBQUcsRUFBRSxpSEFBaUg7S0FDdkgsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUU7UUFDNUIsRUFBRSxDQUFDLDhCQUE4QixFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzVDLE1BQU0sU0FBUyxHQUFRLElBQUksWUFBTSxDQUFDLGtCQUFrQixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN2RSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1lBQ2xFLE1BQU0sRUFBRSxHQUFHLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25DLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN2QixFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsMEJBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQzNELEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1lBQy9ELGdCQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxF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QUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUN0RixNQUFNLEVBQUUsR0FBRyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUVuQyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztZQUMxRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsMEJBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztZQUMvRCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNsQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNuQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7WUFDMUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN4QyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7WUFDMUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2QyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7WUFDMUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN4QyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7WUFDMUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2QyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7WUFDM0UsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7WUFDM0UsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QyxnQkFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzlCLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUMxQixrR0FBa0csQ0FDbkcsQ0FBQztZQUNGLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2pDLHNvREFBc29ELENBQ3ZvRCxDQUFDO1lBQ0YsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQyxNQUFNLHdCQUF3QixHQUFHLEVBQUUsQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1lBQ2xFLE1BQU0sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3RCx3QkFBd0IsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUQsd0JBQXdCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEQsd0JBQXdCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFeEQsTUFBTSx1QkFBdUIsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUMsd0JBQXdCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEcsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQy9DLGtHQUFrRyxDQUNuRyxDQUFDO1lBQ0YsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakQsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQy9DLGtHQUFrRyxDQUNuRyxDQUFDO1lBQ0YsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFakQsTUFBTSx3QkFBd0IsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUMsd0JBQXdCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkcsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2hELGtHQUFrRyxDQUNuRyxDQUFDO1lBQ0Ysd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEQsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2hELGtHQUFrRyxDQUNuRyxDQUFDO1lBQ0Ysd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsbUVBQW1FLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDakYsTUFBTSxhQUFhLEdBQUcsSUFBSSxZQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLHdEQUF3RCxFQUFFLENBQUMsQ0FBQztZQUU1RyxNQUFNLFNBQVMsR0FBUSxJQUFJLFlBQU0sQ0FBQyxrQkFBa0IsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDdkUsU0FBUyxDQUFDLElBQUksQ0FBQywwQkFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUMvQixTQUFTLENBQUMsTUFBTSxDQUFDLHFEQUFxRCxDQUFDLENBQUM7WUFDeEUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM1QixTQUFTLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQzdDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7WUFDckUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsc0NBQXNDLENBQUMsQ0FBQztZQUNyRSxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3JELE1BQU0sRUFBRSxHQUFHLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBRW5DLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO1lBQzFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQywwQkFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3BELEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1lBQy9ELGdCQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLGdCQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ25DLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztZQUMxRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztZQUMxRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztZQUMxRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztZQUMxRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztZQUMzRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztZQUMzRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hDLGdCQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQzFC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QUM1RixJQUFJLE1BQU0sQ0FBQyw4Q0FBOEMsQ0FBQyxDQUMzRCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsMkRBQTJELEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDekUsTUFBTSxTQUFTLEdBQVEsSUFBSSxZQUFNLENBQUMsa0JBQWtCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3ZFLFNBQVMsQ0FBQyxNQUFNLENBQUMscURBQXFELENBQUMsQ0FBQztZQUN4RSxTQUFTLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkIsU0FBUztpQkFDTixRQUFRLENBQUMsS0FBSyxDQUFDO2lCQUNmLElBQUksQ0FBQyxzQ0FBc0MsQ0FBQztpQkFDNUMsRUFBRSxDQUFDLHNDQUFzQyxDQUFDO2lCQUMxQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDZixTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3RELGdCQUFNLENBQUMsTUFBTSxDQUNYLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsMEJBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxFQUMxRCxJQUFJLE1BQU0sQ0FBQyxnRUFBZ0UsQ0FBQyxDQUM3RSxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IGNvaW5zIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vcmVzb3VyY2VzJztcbmltcG9ydCB7IFh0ekxpYiB9IGZyb20gJy4uLy4uL3NyYyc7XG5cbmRlc2NyaWJlKCdUZXpvcyBUcmFuc2FjdGlvbiBidWlsZGVyJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBkZWZhdWx0S2V5UGFpciA9IG5ldyBYdHpMaWIuS2V5UGFpcih7XG4gICAgcHJ2OiAneHBydjlzMjFaclFIMTQzSzNEOFRYZnZBSmdIVmZURWVRTlc1WXM5d1p0blVaa3FQekZ6U2piRUpyV0Mxdlo0R25YQ3ZSN3JRTDJVRlgzUlN1WWVVOU1yRVJtMVhCdkFDb3c3YzM2dm56NWlZeWoyJyxcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3Nob3VsZCBwYXJzZScsICgpID0+IHtcbiAgICBpdCgnYW4gdW5zaWduZWQgaW5pdCB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlcjogYW55ID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KCd4dHonKSk7XG4gICAgICB0eEJ1aWxkZXIuZnJvbSh0ZXN0RGF0YS51bnNpZ25lZFNlcmlhbGl6ZWRPcmlnaW5hdGlvblRyYW5zYWN0aW9uKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICB0eC5pZC5zaG91bGQuZXF1YWwoJycpO1xuICAgICAgdHgudHlwZS5zaG91bGQuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uKTtcbiAgICAgIHR4LnNvdXJjZS5zaG91bGQuZXF1YWwoJ3R6MVZSalJwVktudjE2QVZwckZIMXRrRG40VERmVnFBODkzQScpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LmlucHV0cy5sZW5ndGgsIDEpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4Lm91dHB1dHMubGVuZ3RoLCAxKTtcbiAgICAgIHR4LmlucHV0c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgndHoxVlJqUnBWS252MTZBVnByRkgxdGtEbjRURGZWcUE4OTNBJyk7XG4gICAgICB0eC5pbnB1dHNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKCcxMDA0NzY0Jyk7XG4gICAgICB0eC5vdXRwdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKCcnKTtcbiAgICAgIHR4Lm91dHB1dHNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKCcxMDAwMDAwJyk7XG4gICAgICBzaG91bGQubm90LmV4aXN0KHR4LmRlbGVnYXRlKTtcbiAgICAgIHR4LnNpZ25hdHVyZS5sZW5ndGguc2hvdWxkLmVxdWFsKDApO1xuICAgICAgT2JqZWN0LmtleXModHguZ2V0SW5kZXhlc0J5VHJhbnNhY3Rpb25UeXBlKCkpLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICB0eC5vd25lcnMubGVuZ3RoLnNob3VsZC5lcXVhbCgzKTtcbiAgICAgIHR4Lm93bmVyc1swXS5zaG91bGQuZXF1YWwoJ3NwcGs3WldCOGRpVTJUV2VoeGRrV0NWMkRURnZuMWhQejRxTGppRDNuSlFvektub1NFblNDOGInKTtcbiAgICAgIHR4Lm93bmVyc1sxXS5zaG91bGQuZXF1YWwoJ3NwcGs3WnE5S1B0d2t6a2dBc2hhNGpVMjlDNDNNY2dQMnNrSzU2dGpkN0tKamhjbUg2QVpDMUYnKTtcbiAgICAgIHR4Lm93bmVyc1syXS5zaG91bGQuZXF1YWwoJ3NwcGs3ZDJ6dHpickxkQmFUQjd5emFXUmtQZmNXR3NyTlFOSmRrQkU5YkNUU1N6ZWtMTnpwdmYnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3Nob3VsZCBidWlsZCcsICgpID0+IHtcbiAgICBpdCgnYW4gaW5pdCB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlcjogYW55ID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KCd4dHonKSk7XG4gICAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24pO1xuICAgICAgdHhCdWlsZGVyLmZlZSh7IGZlZTogJzEwJyB9KTtcbiAgICAgIGNvbnN0IHNvdXJjZSA9IHtcbiAgICAgICAgcHViOiAneHB1YjY2MU15TXdBcVJiY0ZoQ3ZkaFRBZnBFRURWNThvcUR2djY1WU5IQzY4Nk5OczRLYkg4WVpRSldWbXJmYnZlN2FBVkh6eHc4YktGeEE3TUxlREs2QmJMZmtFM2Jxa3ZITFBnYUdISHRZR2VZJyxcbiAgICAgIH07XG4gICAgICBjb25zdCBzb3VyY2VLZXlQYWlyID0gbmV3IFh0ekxpYi5LZXlQYWlyKHNvdXJjZSk7XG4gICAgICB0eEJ1aWxkZXIuc291cmNlKHNvdXJjZUtleVBhaXIuZ2V0QWRkcmVzcygpKTtcbiAgICAgIHR4QnVpbGRlci5pbml0aWFsQmFsYW5jZSgnMTAwMDAwMCcpO1xuICAgICAgdHhCdWlsZGVyLmNvdW50ZXIoJzAnKTtcbiAgICAgIHR4QnVpbGRlci5vd25lcihcbiAgICAgICAgbmV3IFh0ekxpYi5LZXlQYWlyKHsgcHViOiAnc3BwazdaV0I4ZGlVMlRXZWh4ZGtXQ1YyRFRGdm4xaFB6NHFMamlEM25KUW96S25vU0VuU0M4YicgfSkuZ2V0S2V5cygpLnB1YlxuICAgICAgKTtcbiAgICAgIHR4QnVpbGRlci5vd25lcihcbiAgICAgICAgbmV3IFh0ekxpYi5LZXlQYWlyKHsgcHViOiAnc3BwazdacTlLUHR3a3prZ0FzaGE0alUyOUM0M01jZ1Ayc2tLNTZ0amQ3S0pqaGNtSDZBWkMxRicgfSkuZ2V0S2V5cygpLnB1YlxuICAgICAgKTtcbiAgICAgIHR4QnVpbGRlci5vd25lcihcbiAgICAgICAgbmV3IFh0ekxpYi5LZXlQYWlyKHsgcHViOiAnc3BwazdkMnp0emJyTGRCYVRCN3l6YVdSa1BmY1dHc3JOUU5KZGtCRTliQ1RTU3pla0xOenB2ZicgfSkuZ2V0S2V5cygpLnB1YlxuICAgICAgKTtcbiAgICAgIHR4QnVpbGRlci5icmFuY2goJ0JNOFFkWjkyVnlhSDFzNW53QUY5clVYamlQWjNnM05zbjZvWWJkS3FqMlJnSHh2V1hWUycpO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgdHguaWQuc2hvdWxkLmVxdWFsKCcnKTtcbiAgICAgIHR4LnR5cGUuc2hvdWxkLmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbik7XG4gICAgICB0eC5zb3VyY2Uuc2hvdWxkLmVxdWFsKCd0ejJQdEo5emdFZ0ZWVFJxeTZHWHNzdDU0dEgza3NFbll2dlMnKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5pbnB1dHMubGVuZ3RoLCAxKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5vdXRwdXRzLmxlbmd0aCwgMSk7XG4gICAgICB0eC5pbnB1dHNbMF0uYWRkcmVzcy5zaG91bGQuZXF1YWwoJ3R6MlB0Sjl6Z0VnRlZUUnF5NkdYc3N0NTR0SDNrc0VuWXZ2UycpO1xuICAgICAgdHguaW5wdXRzWzBdLnZhbHVlLnNob3VsZC5lcXVhbCgnMTAwMDAxMCcpO1xuICAgICAgdHgub3V0cHV0c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgnJyk7XG4gICAgICB0eC5vdXRwdXRzWzBdLnZhbHVlLnNob3VsZC5lcXVhbCgnMTAwMDAwMCcpO1xuICAgICAgdHguc2lnbmF0dXJlLmxlbmd0aC5zaG91bGQuZXF1YWwoMCk7XG4gICAgICBPYmplY3Qua2V5cyh0eC5nZXRJbmRleGVzQnlUcmFuc2FjdGlvblR5cGUoKSkubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHR4Lm93bmVycy5sZW5ndGguc2hvdWxkLmVxdWFsKDMpO1xuICAgICAgdHgub3duZXJzWzBdLnNob3VsZC5lcXVhbCgnc3BwazdaV0I4ZGlVMlRXZWh4ZGtXQ1YyRFRGdm4xaFB6NHFMamlEM25KUW96S25vU0VuU0M4YicpO1xuICAgICAgdHgub3duZXJzWzFdLnNob3VsZC5lcXVhbCgnc3BwazdacTlLUHR3a3prZ0FzaGE0alUyOUM0M01jZ1Ayc2tLNTZ0amQ3S0pqaGNtSDZBWkMxRicpO1xuICAgICAgdHgub3duZXJzWzJdLnNob3VsZC5lcXVhbCgnc3BwazdkMnp0emJyTGRCYVRCN3l6YVdSa1BmY1dHc3JOUU5KZGtCRTliQ1RTU3pla0xOenB2ZicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FuIGFjY291bnQgcmV2ZWFsIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyOiBhbnkgPSBuZXcgWHR6TGliLlRyYW5zYWN0aW9uQnVpbGRlcihjb2lucy5nZXQoJ3h0eicpKTtcbiAgICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5BY2NvdW50VXBkYXRlKTtcbiAgICAgIHR4QnVpbGRlci5mZWUoeyBmZWU6ICcxMCcgfSk7XG4gICAgICBjb25zdCBzb3VyY2UgPSB7XG4gICAgICAgIHB1YjogJ3hwdWI2NjFNeU13QXFSYmNGaEN2ZGhUQWZwRUVEVjU4b3FEdnY2NVlOSEM2ODZOTnM0S2JIOFlaUUpXVm1yZmJ2ZTdhQVZIenh3OGJLRnhBN01MZURLNkJiTGZrRTNicWt2SExQZ2FHSEh0WUdlWScsXG4gICAgICB9O1xuICAgICAgY29uc3Qga2V5UGFpciA9IG5ldyBYdHpMaWIuS2V5UGFpcihzb3VyY2UpO1xuICAgICAgdHhCdWlsZGVyLnNvdXJjZShrZXlQYWlyLmdldEFkZHJlc3MoKSk7XG4gICAgICB0eEJ1aWxkZXIucHVibGljS2V5VG9SZXZlYWwoa2V5UGFpci5nZXRFeHRlbmRlZEtleXMoKS54cHViKTtcbiAgICAgIHR4QnVpbGRlci5jb3VudGVyKCcwJyk7XG4gICAgICB0eEJ1aWxkZXIuYnJhbmNoKCdCTThRZFo5MlZ5YUgxczVud0FGOXJVWGppUFozZzNOc242b1liZEtxajJSZ0h4dldYVlMnKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIHR4LmlkLnNob3VsZC5lcXVhbCgnJyk7XG4gICAgICB0eC50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuQWNjb3VudFVwZGF0ZSk7XG4gICAgICB0eC5zb3VyY2Uuc2hvdWxkLmVxdWFsKCd0ejJQdEo5emdFZ0ZWVFJxeTZHWHNzdDU0dEgza3NFbll2dlMnKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5pbnB1dHMubGVuZ3RoLCAxKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5vdXRwdXRzLmxlbmd0aCwgMCk7XG4gICAgICB0eC5pbnB1dHNbMF0uYWRkcmVzcy5zaG91bGQuZXF1YWwoJ3R6MlB0Sjl6Z0VnRlZUUnF5NkdYc3N0NTR0SDNrc0VuWXZ2UycpO1xuICAgICAgdHguaW5wdXRzWzBdLnZhbHVlLnNob3VsZC5lcXVhbCgnMTAnKTtcbiAgICAgIHNob3VsZC5ub3QuZXhpc3QodHguZGVsZWdhdGUpO1xuICAgICAgdHguc2lnbmF0dXJlLmxlbmd0aC5zaG91bGQuZXF1YWwoMCk7XG4gICAgICBPYmplY3Qua2V5cyh0eC5nZXRJbmRleGVzQnlUcmFuc2FjdGlvblR5cGUoKSkubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHR4Lm93bmVycy5sZW5ndGguc2hvdWxkLmVxdWFsKDApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2EgZm9yd2FyZGVyIGNvbnRyYWN0IGluaXQgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXI6IGFueSA9IG5ldyBYdHpMaWIuVHJhbnNhY3Rpb25CdWlsZGVyKGNvaW5zLmdldCgneHR6JykpO1xuICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLkFkZHJlc3NJbml0aWFsaXphdGlvbik7XG4gICAgICBjb25zdCBmb3J3YXJkZXJEZXN0aW5hdGlvbiA9ICdLVDFIVXJ0Nmtmdll5REVZQ0oyR1NqdlRQWjZLbVJmeExCVTgnO1xuICAgICAgdHhCdWlsZGVyLmZvcndhcmRlckRlc3RpbmF0aW9uKGZvcndhcmRlckRlc3RpbmF0aW9uKTtcbiAgICAgIHR4QnVpbGRlci5mZWUoeyBmZWU6ICcxMCcgfSk7XG4gICAgICBjb25zdCBzb3VyY2UgPSB7XG4gICAgICAgIHB1YjogJ3hwdWI2NjFNeU13QXFSYmNGaEN2ZGhUQWZwRUVEVjU4b3FEdnY2NVlOSEM2ODZOTnM0S2JIOFlaUUpXVm1yZmJ2ZTdhQVZIenh3OGJLRnhBN01MZURLNkJiTGZrRTNicWt2SExQZ2FHSEh0WUdlWScsXG4gICAgICB9O1xuICAgICAgY29uc3Qga2V5UGFpciA9IG5ldyBYdHpMaWIuS2V5UGFpcihzb3VyY2UpO1xuICAgICAgdHhCdWlsZGVyLnNvdXJjZShrZXlQYWlyLmdldEFkZHJlc3MoKSk7XG4gICAgICB0eEJ1aWxkZXIucHVibGljS2V5VG9SZXZlYWwoa2V5UGFpci5nZXRFeHRlbmRlZEtleXMoKS54cHViKTtcbiAgICAgIHR4QnVpbGRlci5jb3VudGVyKCcwJyk7XG4gICAgICB0eEJ1aWxkZXIuYnJhbmNoKCdCTThRZFo5MlZ5YUgxczVud0FGOXJVWGppUFozZzNOc242b1liZEtxajJSZ0h4dldYVlMnKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICB0eC50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuQWRkcmVzc0luaXRpYWxpemF0aW9uKTtcbiAgICAgIHR4LnNvdXJjZS5zaG91bGQuZXF1YWwoa2V5UGFpci5nZXRBZGRyZXNzKCkpO1xuICAgICAgdHgucHVibGljS2V5VG9SZXZlYWwuc2hvdWxkLmVxdWFsKGtleVBhaXIuZ2V0S2V5cygpLnB1Yik7XG4gICAgICB0eC5mb3J3YXJkZXJEZXN0aW5hdGlvbi5zaG91bGQuZXF1YWwoZm9yd2FyZGVyRGVzdGluYXRpb24pO1xuICAgICAgdHgub3duZXJzLmxlbmd0aC5zaG91bGQuZXF1YWwoMCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzaG91bGQgc2lnbicsICgpID0+IHtcbiAgICBpdCgnYW4gaW5pdCB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlcjogYW55ID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KCd4dHonKSk7XG4gICAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24pO1xuICAgICAgdHhCdWlsZGVyLmZlZSh7XG4gICAgICAgIGZlZTogJzQ3NjQnLFxuICAgICAgICBnYXNMaW1pdDogJzMzOTcxJyxcbiAgICAgICAgc3RvcmFnZUxpbWl0OiAnMTI5MicsXG4gICAgICB9KTtcbiAgICAgIHR4QnVpbGRlci5zb3VyY2UoZGVmYXVsdEtleVBhaXIuZ2V0QWRkcmVzcygpKTtcbiAgICAgIHR4QnVpbGRlci5pbml0aWFsQmFsYW5jZSgnMTAwMDAwMCcpO1xuICAgICAgdHhCdWlsZGVyLmNvdW50ZXIoJzAnKTtcbiAgICAgIHR4QnVpbGRlci5vd25lcignc3BwazdaV0I4ZGlVMlRXZWh4ZGtXQ1YyRFRGdm4xaFB6NHFMamlEM25KUW96S25vU0VuU0M4YicpO1xuICAgICAgdHhCdWlsZGVyLm93bmVyKCdzcHBrN1pxOUtQdHdremtnQXNoYTRqVTI5QzQzTWNnUDJza0s1NnRqZDdLSmpoY21INkFaQzFGJyk7XG4gICAgICB0eEJ1aWxkZXIub3duZXIoJ3NwcGs3ZDJ6dHpickxkQmFUQjd5emFXUmtQZmNXR3NyTlFOSmRrQkU5YkNUU1N6ZWtMTnpwdmYnKTtcbiAgICAgIHR4QnVpbGRlci5icmFuY2goJ0JNOFFkWjkyVnlhSDFzNW53QUY5clVYamlQWjNnM05zbjZvWWJkS3FqMlJnSHh2V1hWUycpO1xuICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IGRlZmF1bHRLZXlQYWlyLmdldEtleXMoKS5wcnYgfSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuXG4gICAgICB0eC5pZC5zaG91bGQuZXF1YWwoJ29wTmZqakVmV2s3SHNuWThmUXJVb1BGdVhaZkFCd2V1YkE2RDRiVlNjbXFvVnpjWlZGQScpO1xuICAgICAgdHgudHlwZS5zaG91bGQuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uKTtcbiAgICAgIHR4LnNvdXJjZS5zaG91bGQuZXF1YWwoJ3R6MlB0Sjl6Z0VnRlZUUnF5NkdYc3N0NTR0SDNrc0VuWXZ2UycpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LmlucHV0cy5sZW5ndGgsIDEpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4Lm91dHB1dHMubGVuZ3RoLCAxKTtcbiAgICAgIHR4LmlucHV0c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgndHoyUHRKOXpnRWdGVlRScXk2R1hzc3Q1NHRIM2tzRW5ZdnZTJyk7XG4gICAgICB0eC5pbnB1dHNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKCcxMDA0NzY0Jyk7XG4gICAgICB0eC5vdXRwdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKCdLVDFKOUxmaERWNkZReFI3YU1hSzdSNlJ3OG1CcGZoUDVNQTMnKTtcbiAgICAgIHR4Lm91dHB1dHNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKCcxMDAwMDAwJyk7XG4gICAgICBzaG91bGQubm90LmV4aXN0KHR4LmRlbGVnYXRlKTtcbiAgICAgIHR4LnNpZ25hdHVyZS5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgdHguc2lnbmF0dXJlWzBdLnNob3VsZC5lcXVhbChcbiAgICAgICAgJ3NpZ1ZENTdoYUFNQ29iSHJDd0g5QUJmYkZ2ZG15Ujlac3BaQzNaaWhiOXRFUGZodHpDS1MxRjhmTG9WcG9kdm9yM1BVb283cnk0ajQ2eFlFVEV6RUxtdG5yTlRhVFBYNCdcbiAgICAgICk7XG4gICAgICBPYmplY3Qua2V5cyh0eC5nZXRJbmRleGVzQnlUcmFuc2FjdGlvblR5cGUoKSkubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHR4Lm93bmVycy5sZW5ndGguc2hvdWxkLmVxdWFsKDMpO1xuICAgICAgdHgub3duZXJzWzBdLnNob3VsZC5lcXVhbCgnc3BwazdaV0I4ZGlVMlRXZWh4ZGtXQ1YyRFRGdm4xaFB6NHFMamlEM25KUW96S25vU0VuU0M4YicpO1xuICAgICAgdHgub3duZXJzWzFdLnNob3VsZC5lcXVhbCgnc3BwazdacTlLUHR3a3prZ0FzaGE0alUyOUM0M01jZ1Ayc2tLNTZ0amQ3S0pqaGNtSDZBWkMxRicpO1xuICAgICAgdHgub3duZXJzWzJdLnNob3VsZC5lcXVhbCgnc3BwazdkMnp0emJyTGRCYVRCN3l6YVdSa1BmY1dHc3JOUU5KZGtCRTliQ1RTU3pla0xOenB2ZicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2Egd2FsbGV0IGluaXQgdHJhbnNhY3Rpb24gd2l0aCBkZWxlZ2F0aW9uIGFuZCByZXZlYWwgdGhlIHNvdXJjZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlcjogYW55ID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KCd4dHonKSk7XG4gICAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24pO1xuICAgICAgdHhCdWlsZGVyLmZlZSh7XG4gICAgICAgIGZlZTogJzQ3NjQnLFxuICAgICAgICBnYXNMaW1pdDogJzMzOTcxJyxcbiAgICAgICAgc3RvcmFnZUxpbWl0OiAnMTI5MicsXG4gICAgICB9KTtcbiAgICAgIHR4QnVpbGRlci5zb3VyY2UoZGVmYXVsdEtleVBhaXIuZ2V0QWRkcmVzcygpKTtcbiAgICAgIHR4QnVpbGRlci5wdWJsaWNLZXlUb1JldmVhbChkZWZhdWx0S2V5UGFpci5nZXRLZXlzKCkucHViKTtcbiAgICAgIHR4QnVpbGRlci5pbml0aWFsQmFsYW5jZSgnMTAwMDAwMCcpO1xuICAgICAgdHhCdWlsZGVyLmNvdW50ZXIoJzAnKTtcbiAgICAgIHR4QnVpbGRlci5vd25lcignc3BwazdaV0I4ZGlVMlRXZWh4ZGtXQ1YyRFRGdm4xaFB6NHFMamlEM25KUW96S25vU0VuU0M4YicpO1xuICAgICAgdHhCdWlsZGVyLm93bmVyKCdzcHBrN1pxOUtQdHdremtnQXNoYTRqVTI5QzQzTWNnUDJza0s1NnRqZDdLSmpoY21INkFaQzFGJyk7XG4gICAgICB0eEJ1aWxkZXIub3duZXIoJ3NwcGs3ZDJ6dHpickxkQmFUQjd5emFXUmtQZmNXR3NyTlFOSmRrQkU5YkNUU1N6ZWtMTnpwdmYnKTtcbiAgICAgIHR4QnVpbGRlci5pbml0aWFsRGVsZWdhdGUoJ3R6MUtwYks1djFOQjJ2ZzNKSEJ4WEpaaHlRN3VyODNYcDdpQycpO1xuICAgICAgdHhCdWlsZGVyLmJyYW5jaCgnQk04UWRaOTJWeWFIMXM1bndBRjlyVVhqaVBaM2czTnNuNm9ZYmRLcWoyUmdIeHZXWFZTJyk7XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogZGVmYXVsdEtleVBhaXIuZ2V0S2V5cygpLnBydiB9KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIHR4LmlkLnNob3VsZC5lcXVhbCgnb28yS0ZxV1VUS1pxNnNlOWhqZmVnYU1hUGJYb2g1NFpkcU1DY3pMTXg1RUZCRmlyNjFrJyk7XG4gICAgICB0eC50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24pO1xuICAgICAgdHguc291cmNlLnNob3VsZC5lcXVhbCgndHoyUHRKOXpnRWdGVlRScXk2R1hzc3Q1NHRIM2tzRW5ZdnZTJyk7XG4gICAgICBzaG91bGQuZXF1YWwodHguaW5wdXRzLmxlbmd0aCwgMik7XG4gICAgICBzaG91bGQuZXF1YWwodHgub3V0cHV0cy5sZW5ndGgsIDEpO1xuICAgICAgdHguaW5wdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKCd0ejJQdEo5emdFZ0ZWVFJxeTZHWHNzdDU0dEgza3NFbll2dlMnKTtcbiAgICAgIHR4LmlucHV0c1swXS52YWx1ZS5zaG91bGQuZXF1YWwoJzQ3NjQnKTtcbiAgICAgIHR4LmlucHV0c1sxXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgndHoyUHRKOXpnRWdGVlRScXk2R1hzc3Q1NHRIM2tzRW5ZdnZTJyk7XG4gICAgICB0eC5pbnB1dHNbMV0udmFsdWUuc2hvdWxkLmVxdWFsKCcxMDA0NzY0Jyk7XG4gICAgICB0eC5vdXRwdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKCdLVDFBOWhlQ0pxdkozSlVjaThtbmdIZDIzM2Q1dkNaRnA3S24nKTtcbiAgICAgIHR4Lm91dHB1dHNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKCcxMDAwMDAwJyk7XG4gICAgICB0eC5kZWxlZ2F0ZS5zaG91bGQuZXF1YWwoJ3R6MUtwYks1djFOQjJ2ZzNKSEJ4WEpaaHlRN3VyODNYcDdpQycpO1xuICAgICAgdHguc2lnbmF0dXJlLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICB0eC5zaWduYXR1cmVbMF0uc2hvdWxkLmVxdWFsKFxuICAgICAgICAnc2lndkQ1MWloMmJ1S0prMThDNjdRa2FXZ0E0Z2FXZnp6NE53VGV3cGJQa052Qm9rZVhvbnlWRVI4UHlrb3JxWnJqTmNyMVdHQjFRWTF3VFhlR1dhVnRIWEJnNFdoR2Q3J1xuICAgICAgKTtcbiAgICAgIGNvbnN0IGluZGV4ZXNCeVRyYW5zYWN0aW9uVHlwZSA9IHR4LmdldEluZGV4ZXNCeVRyYW5zYWN0aW9uVHlwZSgpO1xuICAgICAgT2JqZWN0LmtleXMoaW5kZXhlc0J5VHJhbnNhY3Rpb25UeXBlKS5sZW5ndGguc2hvdWxkLmVxdWFsKDIpO1xuICAgICAgaW5kZXhlc0J5VHJhbnNhY3Rpb25UeXBlLnJldmVhbC5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgaW5kZXhlc0J5VHJhbnNhY3Rpb25UeXBlLnJldmVhbFswXS5zaG91bGQuZXF1YWwoMCk7XG4gICAgICBpbmRleGVzQnlUcmFuc2FjdGlvblR5cGUub3JpZ2luYXRpb24ubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIGluZGV4ZXNCeVRyYW5zYWN0aW9uVHlwZS5vcmlnaW5hdGlvblswXS5zaG91bGQuZXF1YWwoMSk7XG4gICAgICB0eC5vd25lcnMubGVuZ3RoLnNob3VsZC5lcXVhbCgzKTtcbiAgICAgIHR4Lm93bmVyc1swXS5zaG91bGQuZXF1YWwoJ3NwcGs3WldCOGRpVTJUV2VoeGRrV0NWMkRURnZuMWhQejRxTGppRDNuSlFvektub1NFblNDOGInKTtcbiAgICAgIHR4Lm93bmVyc1sxXS5zaG91bGQuZXF1YWwoJ3NwcGs3WnE5S1B0d2t6a2dBc2hhNGpVMjlDNDNNY2dQMnNrSzU2dGpkN0tKamhjbUg2QVpDMUYnKTtcbiAgICAgIHR4Lm93bmVyc1syXS5zaG91bGQuZXF1YWwoJ3NwcGs3ZDJ6dHpickxkQmFUQjd5emFXUmtQZmNXR3NyTlFOSmRrQkU5YkNUU1N6ZWtMTnpwdmYnKTtcbiAgICB9KTtcblxuICAgIGl0KCdhIHJldmVhbCB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlcjogYW55ID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KCd4dHonKSk7XG4gICAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuQWNjb3VudFVwZGF0ZSk7XG4gICAgICB0eEJ1aWxkZXIuc291cmNlKGRlZmF1bHRLZXlQYWlyLmdldEFkZHJlc3MoKSk7XG4gICAgICB0eEJ1aWxkZXIucHVibGljS2V5VG9SZXZlYWwoZGVmYXVsdEtleVBhaXIuZ2V0S2V5cygpLnB1Yik7XG4gICAgICB0eEJ1aWxkZXIuY291bnRlcignMCcpO1xuICAgICAgdHhCdWlsZGVyLmJyYW5jaCgnQk04UWRaOTJWeWFIMXM1bndBRjlyVVhqaVBaM2czTnNuNm9ZYmRLcWoyUmdIeHZXWFZTJyk7XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogZGVmYXVsdEtleVBhaXIuZ2V0S2V5cygpLnBydiB9KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIHR4LmlkLnNob3VsZC5lcXVhbCgnb29zNG4xekpBR2VxTFFyTnNuR0FmenpqNkZlWnFiU3JuQU1WVGRDNDg1Y2luRldONnN1Jyk7XG4gICAgICB0eC50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuQWNjb3VudFVwZGF0ZSk7XG4gICAgICB0eC5zb3VyY2Uuc2hvdWxkLmVxdWFsKCd0ejJQdEo5emdFZ0ZWVFJxeTZHWHNzdDU0dEgza3NFbll2dlMnKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5pbnB1dHMubGVuZ3RoLCAxKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5vdXRwdXRzLmxlbmd0aCwgMCk7XG4gICAgICB0eC5pbnB1dHNbMF0uYWRkcmVzcy5zaG91bGQuZXF1YWwoJ3R6MlB0Sjl6Z0VnRlZUUnF5NkdYc3N0NTR0SDNrc0VuWXZ2UycpO1xuICAgICAgdHguaW5wdXRzWzBdLnZhbHVlLnNob3VsZC5lcXVhbCgnMTQyMCcpO1xuICAgICAgc2hvdWxkLm5vdC5leGlzdCh0eC5kZWxlZ2F0ZSk7XG4gICAgICB0eC5zaWduYXR1cmUubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHR4LnNpZ25hdHVyZVswXS5zaG91bGQuZXF1YWwoXG4gICAgICAgICdzaWdUdGZjeHR2VTV6V2JzV0RKd0t2SGREY1dZRGhnc2I5b3ptUTQ0QVVHSG5TSkpndlBSMkN2TkNVWDhheGV6SktvWlJ6Z3Y5Z1NFM0dTRGg1U0VibTMxSnFNNTN5eWcnXG4gICAgICApO1xuICAgICAgY29uc3QgaW5kZXhlc0J5VHJhbnNhY3Rpb25UeXBlID0gdHguZ2V0SW5kZXhlc0J5VHJhbnNhY3Rpb25UeXBlKCk7XG4gICAgICBpbmRleGVzQnlUcmFuc2FjdGlvblR5cGUucmV2ZWFsLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICBpbmRleGVzQnlUcmFuc2FjdGlvblR5cGUucmV2ZWFsWzBdLnNob3VsZC5lcXVhbCgwKTtcbiAgICAgIE9iamVjdC5rZXlzKHR4LmdldEluZGV4ZXNCeVRyYW5zYWN0aW9uVHlwZSgpKS5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgdHgub3duZXJzLmxlbmd0aC5zaG91bGQuZXF1YWwoMCk7XG4gICAgfSk7XG5cbiAgICBpdCgnYSBtdWx0aXNpZyBzZW5kIHRyYW5zYWN0aW9uIHRvIGFuIGltcGxpY2l0IGFjY291bnQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXI6IGFueSA9IG5ldyBYdHpMaWIuVHJhbnNhY3Rpb25CdWlsZGVyKGNvaW5zLmdldCgneHR6JykpO1xuICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgdHhCdWlsZGVyLmJyYW5jaCgnQk04UWRaOTJWeWFIMXM1bndBRjlyVVhqaVBaM2czTnNuNm9ZYmRLcWoyUmdIeHZXWFZTJyk7XG4gICAgICB0eEJ1aWxkZXIuc291cmNlKGRlZmF1bHRLZXlQYWlyLmdldEFkZHJlc3MoKSk7XG4gICAgICB0eEJ1aWxkZXIuY291bnRlcignMCcpO1xuICAgICAgdHhCdWlsZGVyXG4gICAgICAgIC50cmFuc2ZlcignMTAwMDAwMCcpXG4gICAgICAgIC5mcm9tKCdLVDFOSDJNMjN4b3Zodzd1d1dWdW9HVFl4eWtlQ2NWZlNxaEwnKVxuICAgICAgICAudG8oJ3R6MVZSalJwVktudjE2QVZwckZIMXRrRG40VERmVnFBODkzQScpXG4gICAgICAgIC5mZWUoJzQ3NjQnKVxuICAgICAgICAuZ2FzTGltaXQoJzMzOTcxJylcbiAgICAgICAgLnN0b3JhZ2VMaW1pdCgnMTI5MicpXG4gICAgICAgIC5kYXRhVG9TaWduKFxuICAgICAgICAgICcwNTA3MDcwYTAwMDAwMDE2MDE5NjM2OWM5MDYyNTU3NWJhNDQ1OTRiMjM3OTQ4MzJhOTMzN2Y3YTJkMDAwNzA3MDAwMDA1MDUwMjAwMDAwMDMyMDMyMDA1M2QwMzZkMDc0MzAzNWQwYTAwMDAwMDE1MDA2YjVkZGFlZjNmYjVkN2MxNTFjZmIzNmZiZTQzYTdhMDY2Nzc3Mzk0MDMxZTA3NDMwMzZhMDAwMTAzNGYwMzRkMDMxYidcbiAgICAgICAgKTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBkZWZhdWx0S2V5UGFpci5nZXRLZXlzKCkucHJ2IH0pO1xuICAgICAgdHhCdWlsZGVyLnNpZ24oe1xuICAgICAgICBrZXk6IG5ldyBYdHpMaWIuS2V5UGFpcih7IHBydjogJ3Nwc2syY2JpVnNBdnBHS21hdTlYY01zY0wzTlJ3amt5VDU3NU41QXlBb2Zjb2o0MXg2ZzZUTCcgfSkuZ2V0S2V5cygpLnBydixcbiAgICAgIH0pO1xuICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IG5ldyBYdHpMaWIuS2V5UGFpcih7IHNlZWQ6IEJ1ZmZlci5hbGxvYygxNikgfSkuZ2V0S2V5cygpLnBydiB9KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIHR4LmlkLnNob3VsZC5lcXVhbCgnb284aGFLanVpWmZqTEptcFdnS0RWRjFrS2JiMnVFdHlnRnlyU1Z6Z29aTmtjM25VTURkJyk7XG4gICAgICB0eC50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgICB0eC5zb3VyY2Uuc2hvdWxkLmVxdWFsKCd0ejJQdEo5emdFZ0ZWVFJxeTZHWHNzdDU0dEgza3NFbll2dlMnKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5pbnB1dHMubGVuZ3RoLCAyKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5vdXRwdXRzLmxlbmd0aCwgMSk7XG4gICAgICB0eC5pbnB1dHNbMF0uYWRkcmVzcy5zaG91bGQuZXF1YWwoJ3R6MlB0Sjl6Z0VnRlZUUnF5NkdYc3N0NTR0SDNrc0VuWXZ2UycpO1xuICAgICAgdHguaW5wdXRzWzBdLnZhbHVlLnNob3VsZC5lcXVhbCgnNDc2NCcpO1xuICAgICAgdHguaW5wdXRzWzFdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKCdLVDFOSDJNMjN4b3Zodzd1d1dWdW9HVFl4eWtlQ2NWZlNxaEwnKTtcbiAgICAgIHR4LmlucHV0c1sxXS52YWx1ZS5zaG91bGQuZXF1YWwoJzEwMDAwMDAnKTtcbiAgICAgIHR4Lm91dHB1dHNbMF0uYWRkcmVzcy5zaG91bGQuZXF1YWwoJ3R6MVZSalJwVktudjE2QVZwckZIMXRrRG40VERmVnFBODkzQScpO1xuICAgICAgdHgub3V0cHV0c1swXS52YWx1ZS5zaG91bGQuZXF1YWwoJzEwMDAwMDAnKTtcbiAgICAgIHNob3VsZC5ub3QuZXhpc3QodHguZGVsZWdhdGUpO1xuICAgICAgdHguc2lnbmF0dXJlLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICB0eC5zaWduYXR1cmVbMF0uc2hvdWxkLmVxdWFsKFxuICAgICAgICAnc2lnUUxITHpXTE5CV1lER2ZSY0EzNlphTWthcEtKUktTakRCMldyRHNvdTlGWkxvejRLcDF1Y1c5QUc3bWV5OXdqQWlOZlJmQ0ZyQlY5eUtzVThVWjRzRUwyMVY3dldZJ1xuICAgICAgKTtcbiAgICAgIHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCkuc2hvdWxkLmVxdWFsKFxuICAgICAgICAnYmE3YTA0ZmFiMWEzZjc3ZWRhOTZiNTUxOTQ3ZGQzNDNlMTY1ZDFiOTFiNmY5ZjgwNjY0OGI2M2U1N2M4OGNjODZjMDFhYWNhODdiZGJjZGM0ZTYxMTdiNjY3ZTI5ZjliNTA0MzYyYzgzMWJiOWMyNTAwYjM4OTAyOGMwYTAwMDE5NjM2OWM5MDYyNTU3NWJhNDQ1OTRiMjM3OTQ4MzJhOTMzN2Y3YTJkMDBmZmZmMDQ2ZDYxNjk2ZTAwMDAwMTI1MDcwNzA3MDcwMDAwMDUwNTAyMDAwMDAwNDMwMzIwMDUzZDAzNmQwNzQzMDM1ZDAxMDAwMDAwMjQ3NDdhMzE1NjUyNmE1MjcwNTY0YjZlNzYzMTM2NDE1NjcwNzI0NjQ4MzE3NDZiNDQ2ZTM0NTQ0NDY2NTY3MTQxMzgzOTMzNDEwMzFlMDc0MzAzNmEwMDgwODk3YTAzNGYwMzRkMDMxYjAyMDAwMDAwZDAwNTA5MDEwMDAwMDA2MDczNjk2NzRlNmE0NDM2MzQ0ZTc1NTY2ZTU1NGIzNzZmNTY0MjMyNjMzMjUzNTAzMzMyNTY1OTZhMzc2NDU0Nzk2YjYyNmU1Mjc4Nzk0NDZmNTMzOTQyNDc3NjY3NjE2Nzc2NmU0ZDYzNTQzNDY4NTk2MzYzNjE2MjYyNDY0NzZmMzk3NDY0NTY1MTU0MzQ0ZDM0MzY2NTdhNTk0YTY0NGMzMjcwN2E1OTQ0NTM3NzZiNjY1MjM2Nzk3MjcwNzA1OTA1MDkwMTAwMDAwMDYwNzM2OTY3NTk2NjU2NTk0YTU1NjE2OTRiNGI1YTU4MzQ3YTczN2E1NzVhMzc1MjQ2MzIzOTMyNmU1NjMyNTAzNjU4NGQzNDZlNGI2NTZiMzI1OTY3NTc1MTM4NDI0YzUzMzE3MjMyMzI3NTM0NjEzOTUzNDM3NjQ3NGQ2MzYyMzgzOTQyNmE1NDY2NzQ1NDZlMzI3NjY3NTU3YTQzNTQ1MTQ3NTMzMjYzNGE0ZTc2NjI1OTc0NzU0NzUxNmE0NzUwMDMwNjExZWJkYTMwZGQxNTAzMjQ3MzczOTE3MDU4ODY4NDBiZmI5OWY4ZjUxZDY1ODZiMjc0MDhlODRkZjkzY2UwZjQ1ZGM2ZThlNmRmMDAwZTYwMmRhMTljMzUwOTE5MGIzN2U3ZGY3YjExZDU1MmNjYmM0NmUzZGQzNGMwNWYzYmY4J1xuICAgICAgKTtcbiAgICAgIGNvbnN0IGluZGV4ZXNCeVRyYW5zYWN0aW9uVHlwZSA9IHR4LmdldEluZGV4ZXNCeVRyYW5zYWN0aW9uVHlwZSgpO1xuICAgICAgT2JqZWN0LmtleXMoaW5kZXhlc0J5VHJhbnNhY3Rpb25UeXBlKS5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgaW5kZXhlc0J5VHJhbnNhY3Rpb25UeXBlLnRyYW5zYWN0aW9uLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICBpbmRleGVzQnlUcmFuc2FjdGlvblR5cGUudHJhbnNhY3Rpb25bMF0uc2hvdWxkLmVxdWFsKDApO1xuICAgICAgdHgub3duZXJzLmxlbmd0aC5zaG91bGQuZXF1YWwoMCk7XG4gICAgfSk7XG5cbiAgICBpdCgnYSBzZW5kIHRyYW5zYWN0aW9uIHRvIGFuIG9yaWdpbmF0ZWQgYWNjb3VudCAob3RoZXIgY29udHJhY3QpJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyOiBhbnkgPSBuZXcgWHR6TGliLlRyYW5zYWN0aW9uQnVpbGRlcihjb2lucy5nZXQoJ3h0eicpKTtcbiAgICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICAgIHR4QnVpbGRlci5icmFuY2goJ0JNOFFkWjkyVnlhSDFzNW53QUY5clVYamlQWjNnM05zbjZvWWJkS3FqMlJnSHh2V1hWUycpO1xuICAgICAgdHhCdWlsZGVyLnNvdXJjZShkZWZhdWx0S2V5UGFpci5nZXRBZGRyZXNzKCkpO1xuICAgICAgdHhCdWlsZGVyLmNvdW50ZXIoJzAnKTtcbiAgICAgIHR4QnVpbGRlclxuICAgICAgICAudHJhbnNmZXIoJzEwMCcpXG4gICAgICAgIC5mcm9tKCdLVDFOSDJNMjN4b3Zodzd1d1dWdW9HVFl4eWtlQ2NWZlNxaEwnKVxuICAgICAgICAudG8oJ0tUMUhVcnQ2a2Z2WXlERVlDSjJHU2p2VFBaNkttUmZ4TEJVOCcpXG4gICAgICAgIC5mZWUoJzQ3NjQnKVxuICAgICAgICAuZ2FzTGltaXQoJzMzOTcxJylcbiAgICAgICAgLnN0b3JhZ2VMaW1pdCgnMTI5MicpXG4gICAgICAgIC5kYXRhVG9TaWduKFxuICAgICAgICAgICcwNTA3MDcwYTAwMDAwMDE2MDE5NjM2OWM5MDYyNTU3NWJhNDQ1OTRiMjM3OTQ4MzJhOTMzN2Y3YTJkMDAwNzA3MDAwMDA1MDUwMjAwMDAwMDMyMDMyMDA1M2QwMzZkMDc0MzAzNWQwYTAwMDAwMDE1MDA2YjVkZGFlZjNmYjVkN2MxNTFjZmIzNmZiZTQzYTdhMDY2Nzc3Mzk0MDMxZTA3NDMwMzZhMDAwMTAzNGYwMzRkMDMxYidcbiAgICAgICAgKTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBkZWZhdWx0S2V5UGFpci5nZXRLZXlzKCkucHJ2IH0pO1xuICAgICAgdHhCdWlsZGVyLnNpZ24oe1xuICAgICAgICBrZXk6IG5ldyBYdHpMaWIuS2V5UGFpcih7IHBydjogJ3Nwc2syY2JpVnNBdnBHS21hdTlYY01zY0wzTlJ3amt5VDU3NU41QXlBb2Zjb2o0MXg2ZzZUTCcgfSkuZ2V0S2V5cygpLnBydixcbiAgICAgIH0pO1xuICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IG5ldyBYdHpMaWIuS2V5UGFpcih7IHNlZWQ6IEJ1ZmZlci5hbGxvYygxNikgfSkuZ2V0S2V5cygpLnBydiB9KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIHR4LmlkLnNob3VsZC5lcXVhbCgnb29iVE5vNzJkdTlCRllmeVpUbzY0a1RYVmhCZkhOdUphSlFYdU5HVnI2Z1lDRHBZakRRJyk7XG4gICAgICB0eC50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgICB0eC5zb3VyY2Uuc2hvdWxkLmVxdWFsKCd0ejJQdEo5emdFZ0ZWVFJxeTZHWHNzdDU0dEgza3NFbll2dlMnKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5pbnB1dHMubGVuZ3RoLCAyKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5vdXRwdXRzLmxlbmd0aCwgMSk7XG4gICAgICB0eC5pbnB1dHNbMF0uYWRkcmVzcy5zaG91bGQuZXF1YWwoJ3R6MlB0Sjl6Z0VnRlZUUnF5NkdYc3N0NTR0SDNrc0VuWXZ2UycpO1xuICAgICAgdHguaW5wdXRzWzBdLnZhbHVlLnNob3VsZC5lcXVhbCgnNDc2NCcpO1xuICAgICAgdHguaW5wdXRzWzFdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKCdLVDFOSDJNMjN4b3Zodzd1d1dWdW9HVFl4eWtlQ2NWZlNxaEwnKTtcbiAgICAgIHR4LmlucHV0c1sxXS52YWx1ZS5zaG91bGQuZXF1YWwoJzEwMCcpO1xuICAgICAgdHgub3V0cHV0c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgnS1QxSFVydDZrZnZZeURFWUNKMkdTanZUUFo2S21SZnhMQlU4Jyk7XG4gICAgICB0eC5vdXRwdXRzWzBdLnZhbHVlLnNob3VsZC5lcXVhbCgnMTAwJyk7XG4gICAgICBzaG91bGQubm90LmV4aXN0KHR4LmRlbGVnYXRlKTtcbiAgICAgIHR4LnNpZ25hdHVyZS5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgdHguc2lnbmF0dXJlWzBdLnNob3VsZC5lcXVhbChcbiAgICAgICAgJ3NpZ2NNM3hpUTlHTjl0UFhzVmtja1BIazY2a0FIRFJNYWc2WENiSExXdk1MUHFIOUtIZ3pBRmVwY2kyeDUza2NKR3FWaEZYYVVTRTNEaFJDR2RnajhhaGtrV2dpWVp1cidcbiAgICAgICk7XG4gICAgICB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpLnNob3VsZC5lcXVhbChcbiAgICAgICAgJ2JhN2EwNGZhYjFhM2Y3N2VkYTk2YjU1MTk0N2RkMzQzZTE2NWQxYjkxYjZmOWY4MDY2NDhiNjNlNTdjODhjYzg2YzAxYWFjYTg3YmRiY2RjNGU2MTE3YjY2N2UyOWY5YjUwNDM2MmM4MzFiYjljMjUwMGIzODkwMjhjMGEwMDAxOTYzNjljOTA2MjU1NzViYTQ0NTk0YjIzNzk0ODMyYTkzMzdmN2EyZDAwZmZmZjA0NmQ2MTY5NmUwMDAwMDE0MDA3MDcwNzA3MDAwMDA1MDUwMjAwMDAwMDVlMDMyMDA1M2QwMzZkMDc0MzAzNmUwMTAwMDAwMDI0NGI1NDMxNDg1NTcyNzQzNjZiNjY3NjU5Nzk0NDQ1NTk0MzRhMzI0NzUzNmE3NjU0NTA1YTM2NGI2ZDUyNjY3ODRjNDI1NTM4MDU1NTAzNmMwMjAwMDAwMDE1MDcyZjAyMDAwMDAwMDkwMjAwMDAwMDA0MDM0ZjAzMjcwMjAwMDAwMDAwMDc0MzAzNmEwMGE0MDEwMzRmMDM0ZDAzMWIwMjAwMDAwMGQwMDUwOTAxMDAwMDAwNjA3MzY5Njc0ZTZhNDQzNjM0NGU3NTU2NmU1NTRiMzc2ZjU2NDIzMjYzMzI1MzUwMzMzMjU2NTk2YTM3NjQ1NDc5NmI2MjZlNTI3ODc5NDQ2ZjUzMzk0MjQ3NzY2NzYxNjc3NjZlNGQ2MzU0MzQ2ODU5NjM2MzYxNjI2MjQ2NDc2ZjM5NzQ2NDU2NTE1NDM0NGQzNDM2NjU3YTU5NGE2NDRjMzI3MDdhNTk0NDUzNzc2YjY2NTIzNjc5NzI3MDcwNTkwNTA5MDEwMDAwMDA2MDczNjk2NzU5NjY1NjU5NGE1NTYxNjk0YjRiNWE1ODM0N2E3MzdhNTc1YTM3NTI0NjMyMzkzMjZlNTYzMjUwMzY1ODRkMzQ2ZTRiNjU2YjMyNTk2NzU3NTEzODQyNGM1MzMxNzIzMjMyNzUzNDYxMzk1MzQzNzY0NzRkNjM2MjM4Mzk0MjZhNTQ2Njc0NTQ2ZTMyNzY2NzU1N2E0MzU0NTE0NzUzMzI2MzRhNGU3NjYyNTk3NDc1NDc1MTZhNDc1MDAzMDY2ZGJlZWU4MGRlNDU4NDdhZWViMDRmMTdkYmIyZTA3NzRhZTY5NDI4MTdkMzFlNzQ0YzdlNzc3MjkyNWM1ZjUxMGIxODUyM2RhZmU1NDYwM2M4NzUzMTQxZjNlMDk4OTY3OGYyMjUyZGViM2JkYWVmOTNkNmJlZmE5NDM5OTI0MCdcbiAgICAgICk7XG4gICAgICBPYmplY3Qua2V5cyh0eC5nZXRJbmRleGVzQnlUcmFuc2FjdGlvblR5cGUoKSkubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHR4Lm93bmVycy5sZW5ndGguc2hvdWxkLmVxdWFsKDApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2Egc2VuZCB0cmFuc2FjdGlvbiB0byBtdWx0aXBsZSBkZXN0aW5hdGlvbnMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXI6IGFueSA9IG5ldyBYdHpMaWIuVHJhbnNhY3Rpb25CdWlsZGVyKGNvaW5zLmdldCgneHR6JykpO1xuICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgdHhCdWlsZGVyLmJyYW5jaCgnQk04UWRaOTJWeWFIMXM1bndBRjlyVVhqaVBaM2czTnNuNm9ZYmRLcWoyUmdIeHZXWFZTJyk7XG4gICAgICB0eEJ1aWxkZXIuY291bnRlcignMCcpO1xuICAgICAgdHhCdWlsZGVyLnNvdXJjZShkZWZhdWx0S2V5UGFpci5nZXRBZGRyZXNzKCkpO1xuICAgICAgdHhCdWlsZGVyXG4gICAgICAgIC50cmFuc2ZlcignMTAwJylcbiAgICAgICAgLmZyb20oJ0tUMU5IMk0yM3hvdmh3N3V3V1Z1b0dUWXh5a2VDY1ZmU3FoTCcpXG4gICAgICAgIC50bygnS1QxSFVydDZrZnZZeURFWUNKMkdTanZUUFo2S21SZnhMQlU4JylcbiAgICAgICAgLmZlZSgnNDc2NCcpXG4gICAgICAgIC5jb3VudGVyKCcxJylcbiAgICAgICAgLmRhdGFUb1NpZ24oXG4gICAgICAgICAgJzA1MDcwNzBhMDAwMDAwMTYwMTk2MzY5YzkwNjI1NTc1YmE0NDU5NGIyMzc5NDgzMmE5MzM3ZjdhMmQwMDA3MDcwMDAwMDUwNTAyMDAwMDAwMzIwMzIwMDUzZDAzNmQwNzQzMDM1ZDBhMDAwMDAwMTUwMDZiNWRkYWVmM2ZiNWQ3YzE1MWNmYjM2ZmJlNDNhN2EwNjY3NzczOTQwMzFlMDc0MzAzNmEwMDAxMDM0ZjAzNGQwMzFiJ1xuICAgICAgICApO1xuICAgICAgdHhCdWlsZGVyXG4gICAgICAgIC50cmFuc2ZlcignMTAwJylcbiAgICAgICAgLmZyb20oJ0tUMU5IMk0yM3hvdmh3N3V3V1Z1b0dUWXh5a2VDY1ZmU3FoTCcpXG4gICAgICAgIC50bygndHoxVlJqUnBWS252MTZBVnByRkgxdGtEbjRURGZWcUE4OTNBJylcbiAgICAgICAgLmZlZSgnNDc2NCcpXG4gICAgICAgIC5jb3VudGVyKCcyJylcbiAgICAgICAgLmRhdGFUb1NpZ24oXG4gICAgICAgICAgJzA1MDcwNzBhMDAwMDAwMTYwMTk2MzY5YzkwNjI1NTc1YmE0NDU5NGIyMzc5NDgzMmE5MzM3ZjdhMmQwMDA3MDcwMDAwMDUwNTAyMDAwMDAwMzIwMzIwMDUzZDAzNmQwNzQzMDM1ZDBhMDAwMDAwMTUwMDZiNWRkYWVmM2ZiNWQ3YzE1MWNmYjM2ZmJlNDNhN2EwNjY3NzczOTQwMzFlMDc0MzAzNmEwMDAxMDM0ZjAzNGQwMzFiJ1xuICAgICAgICApO1xuICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IGRlZmF1bHRLZXlQYWlyLmdldEtleXMoKS5wcnYgfSk7XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7XG4gICAgICAgIGtleTogbmV3IFh0ekxpYi5LZXlQYWlyKHsgcHJ2OiAnc3BzazJjYmlWc0F2cEdLbWF1OVhjTXNjTDNOUndqa3lUNTc1TjVBeUFvZmNvajQxeDZnNlRMJyB9KS5nZXRLZXlzKCkucHJ2LFxuICAgICAgfSk7XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogbmV3IFh0ekxpYi5LZXlQYWlyKHsgc2VlZDogQnVmZmVyLmFsbG9jKDE2KSB9KS5nZXRLZXlzKCkucHJ2IH0pO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgdHguaWQuc2hvdWxkLmVxdWFsKCdvbnlHYVdzNno0YlZWY2ZuM2g5S2JCcmt0RWh1RHlKTFlFVkI0YUpSTTZZTm5nakR4RTQnKTtcbiAgICAgIHR4LnR5cGUuc2hvdWxkLmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICAgIHR4LnNvdXJjZS5zaG91bGQuZXF1YWwoJ3R6MlB0Sjl6Z0VnRlZUUnF5NkdYc3N0NTR0SDNrc0VuWXZ2UycpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LmlucHV0cy5sZW5ndGgsIDQpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4Lm91dHB1dHMubGVuZ3RoLCAyKTtcbiAgICAgIHR4LmlucHV0c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgndHoyUHRKOXpnRWdGVlRScXk2R1hzc3Q1NHRIM2tzRW5ZdnZTJyk7XG4gICAgICB0eC5pbnB1dHNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKCc0NzY0Jyk7XG4gICAgICB0eC5pbnB1dHNbMV0uYWRkcmVzcy5zaG91bGQuZXF1YWwoJ0tUMU5IMk0yM3hvdmh3N3V3V1Z1b0dUWXh5a2VDY1ZmU3FoTCcpO1xuICAgICAgdHguaW5wdXRzWzFdLnZhbHVlLnNob3VsZC5lcXVhbCgnMTAwJyk7XG4gICAgICB0eC5pbnB1dHNbMl0uYWRkcmVzcy5zaG91bGQuZXF1YWwoJ3R6MlB0Sjl6Z0VnRlZUUnF5NkdYc3N0NTR0SDNrc0VuWXZ2UycpO1xuICAgICAgdHguaW5wdXRzWzJdLnZhbHVlLnNob3VsZC5lcXVhbCgnNDc2NCcpO1xuICAgICAgdHguaW5wdXRzWzNdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKCdLVDFOSDJNMjN4b3Zodzd1d1dWdW9HVFl4eWtlQ2NWZlNxaEwnKTtcbiAgICAgIHR4LmlucHV0c1szXS52YWx1ZS5zaG91bGQuZXF1YWwoJzEwMCcpO1xuICAgICAgdHgub3V0cHV0c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgnS1QxSFVydDZrZnZZeURFWUNKMkdTanZUUFo2S21SZnhMQlU4Jyk7XG4gICAgICB0eC5vdXRwdXRzWzBdLnZhbHVlLnNob3VsZC5lcXVhbCgnMTAwJyk7XG4gICAgICB0eC5vdXRwdXRzWzFdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKCd0ejFWUmpScFZLbnYxNkFWcHJGSDF0a0RuNFREZlZxQTg5M0EnKTtcbiAgICAgIHR4Lm91dHB1dHNbMV0udmFsdWUuc2hvdWxkLmVxdWFsKCcxMDAnKTtcbiAgICAgIHNob3VsZC5ub3QuZXhpc3QodHguZGVsZWdhdGUpO1xuICAgICAgdHguc2lnbmF0dXJlLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICB0eC5zaWduYXR1cmVbMF0uc2hvdWxkLmVxdWFsKFxuICAgICAgICAnc2lnZFVwekN4bWk5TldoZGJGR2Z2cVZ5SDhYZnIyVWlQYzJma3FOclE0Q0h2cmsxOVpEa3NEa3NFYzRESnNUYnBoZW5WOGpDTlpGcXpMNHNDVlJ6TTkzSG5TU3FnSno3J1xuICAgICAgKTtcbiAgICAgIHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCkuc2hvdWxkLmVxdWFsKFxuICAgICAgICAnYmE3YTA0ZmFiMWEzZjc3ZWRhOTZiNTUxOTQ3ZGQzNDNlMTY1ZDFiOTFiNmY5ZjgwNjY0OGI2M2U1N2M4OGNjODZjMDFhYWNhODdiZGJjZGM0ZTYxMTdiNjY3ZTI5ZjliNTA0MzYyYzgzMWJiOWMyNTAwZTg1MjgxMDIwMDAxOTYzNjljOTA2MjU1NzViYTQ0NTk0YjIzNzk0ODMyYTkzMzdmN2EyZDAwZmZmZjA0NmQ2MTY5NmUwMDAwMDE0MDA3MDcwNzA3MDAwMTA1MDUwMjAwMDAwMDVlMDMyMDA1M2QwMzZkMDc0MzAzNmUwMTAwMDAwMDI0NGI1NDMxNDg1NTcyNzQzNjZiNjY3NjU5Nzk0NDQ1NTk0MzRhMzI0NzUzNmE3NjU0NTA1YTM2NGI2ZDUyNjY3ODRjNDI1NTM4MDU1NTAzNmMwMjAwMDAwMDE1MDcyZjAyMDAwMDAwMDkwMjAwMDAwMDA0MDM0ZjAzMjcwMjAwMDAwMDAwMDc0MzAzNmEwMGE0MDEwMzRmMDM0ZDAzMWIwMjAwMDAwMGQwMDUwOTAxMDAwMDAwNjA3MzY5Njc0ZTZhNDQzNjM0NGU3NTU2NmU1NTRiMzc2ZjU2NDIzMjYzMzI1MzUwMzMzMjU2NTk2YTM3NjQ1NDc5NmI2MjZlNTI3ODc5NDQ2ZjUzMzk0MjQ3NzY2NzYxNjc3NjZlNGQ2MzU0MzQ2ODU5NjM2MzYxNjI2MjQ2NDc2ZjM5NzQ2NDU2NTE1NDM0NGQzNDM2NjU3YTU5NGE2NDRjMzI3MDdhNTk0NDUzNzc2YjY2NTIzNjc5NzI3MDcwNTkwNTA5MDEwMDAwMDA2MDczNjk2NzU5NjY1NjU5NGE1NTYxNjk0YjRiNWE1ODM0N2E3MzdhNTc1YTM3NTI0NjMyMzkzMjZlNTYzMjUwMzY1ODRkMzQ2ZTRiNjU2YjMyNTk2NzU3NTEzODQyNGM1MzMxNzIzMjMyNzUzNDYxMzk1MzQzNzY0NzRkNjM2MjM4Mzk0MjZhNTQ2Njc0NTQ2ZTMyNzY2NzU1N2E0MzU0NTE0NzUzMzI2MzRhNGU3NjYyNTk3NDc1NDc1MTZhNDc1MDAzMDY2YzAxYWFjYTg3YmRiY2RjNGU2MTE3YjY2N2UyOWY5YjUwNDM2MmM4MzFiYjljMjUwMWU4NTI4MTAyMDAwMTk2MzY5YzkwNjI1NTc1YmE0NDU5NGIyMzc5NDgzMmE5MzM3ZjdhMmQwMGZmZmYwNDZkNjE2OTZlMDAwMDAxMjQwNzA3MDcwNzAwMDIwNTA1MDIwMDAwMDA0MjAzMjAwNTNkMDM2ZDA3NDMwMzVkMDEwMDAwMDAyNDc0N2EzMTU2NTI2YTUyNzA1NjRiNmU3NjMxMzY0MTU2NzA3MjQ2NDgzMTc0NmI0NDZlMzQ1NDQ0NjY1NjcxNDEzODM5MzM0MTAzMWUwNzQzMDM2YTAwYTQwMTAzNGYwMzRkMDMxYjAyMDAwMDAwZDAwNTA5MDEwMDAwMDA2MDczNjk2NzRlNmE0NDM2MzQ0ZTc1NTY2ZTU1NGIzNzZmNTY0MjMyNjMzMjUzNTAzMzMyNTY1OTZhMzc2NDU0Nzk2YjYyNmU1Mjc4Nzk0NDZmNTMzOTQyNDc3NjY3NjE2Nzc2NmU0ZDYzNTQzNDY4NTk2MzYzNjE2MjYyNDY0NzZmMzk3NDY0NTY1MTU0MzQ0ZDM0MzY2NTdhNTk0YTY0NGMzMjcwN2E1OTQ0NTM3NzZiNjY1MjM2Nzk3MjcwNzA1OTA1MDkwMTAwMDAwMDYwNzM2OTY3NTk2NjU2NTk0YTU1NjE2OTRiNGI1YTU4MzQ3YTczN2E1NzVhMzc1MjQ2MzIzOTMyNmU1NjMyNTAzNjU4NGQzNDZlNGI2NTZiMzI1OTY3NTc1MTM4NDI0YzUzMzE3MjMyMzI3NTM0NjEzOTUzNDM3NjQ3NGQ2MzYyMzgzOTQyNmE1NDY2NzQ1NDZlMzI3NjY3NTU3YTQzNTQ1MTQ3NTMzMjYzNGE0ZTc2NjI1OTc0NzU0NzUxNmE0NzUwMDMwNjc2NmEwYjFmNmNiMDM1YmY1Mzc4ODdiYTkwMDRjNDg5YmI0NThkOGM4ZTcyYjUwMzNiNmNlZThhZDUyZjg0ZWMyN2I3MTlmNWQwYjk4Y2RmMmQwNzQ0YjI1NTMwMTI2MzY4ODY5MjY0NWVhZmM5Y2RmMWI0OGI1MDUzYzUxZGNhJ1xuICAgICAgKTtcbiAgICAgIHR4Lm93bmVycy5sZW5ndGguc2hvdWxkLmVxdWFsKDApO1xuICAgICAgY29uc3QgaW5kZXhlc0J5VHJhbnNhY3Rpb25UeXBlID0gdHguZ2V0SW5kZXhlc0J5VHJhbnNhY3Rpb25UeXBlKCk7XG4gICAgICBPYmplY3Qua2V5cyhpbmRleGVzQnlUcmFuc2FjdGlvblR5cGUpLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICBpbmRleGVzQnlUcmFuc2FjdGlvblR5cGUudHJhbnNhY3Rpb24ubGVuZ3RoLnNob3VsZC5lcXVhbCgyKTtcbiAgICAgIGluZGV4ZXNCeVRyYW5zYWN0aW9uVHlwZS50cmFuc2FjdGlvblswXS5zaG91bGQuZXF1YWwoMCk7XG4gICAgICBpbmRleGVzQnlUcmFuc2FjdGlvblR5cGUudHJhbnNhY3Rpb25bMV0uc2hvdWxkLmVxdWFsKDEpO1xuXG4gICAgICBjb25zdCBmaXJzdFRyYW5zZmVyU2lnbmF0dXJlcyA9IHR4LmdldFRyYW5zZmVyU2lnbmF0dXJlcyhpbmRleGVzQnlUcmFuc2FjdGlvblR5cGUudHJhbnNhY3Rpb25bMF0pO1xuICAgICAgZmlyc3RUcmFuc2ZlclNpZ25hdHVyZXNbMF0uc2lnbmF0dXJlLnNob3VsZC5lcXVhbChcbiAgICAgICAgJ3NpZ05qRDY0TnVWblVLN29WQjJjMlNQMzJWWWo3ZFR5a2JuUnh5RG9TOUJHdmdhZ3ZuTWNUNGhZY2NhYmJGR285dGRWUVQ0TTQ2ZXpZSmRMMnB6WURTd2tmUjZ5cnBwWSdcbiAgICAgICk7XG4gICAgICBmaXJzdFRyYW5zZmVyU2lnbmF0dXJlc1swXS5pbmRleC5zaG91bGQuZXF1YWwoMCk7XG4gICAgICBmaXJzdFRyYW5zZmVyU2lnbmF0dXJlc1sxXS5zaWduYXR1cmUuc2hvdWxkLmVxdWFsKFxuICAgICAgICAnc2lnWWZWWUpVYWlLS1pYNHpzeldaN1JGMjkyblYyUDZYTTRuS2VrMllnV1E4QkxTMXIyMnU0YTlTQ3ZHTWNiODlCalRmdFRuMnZnVXpDVFFHUzJjSk52Yll0dUdRakdQJ1xuICAgICAgKTtcbiAgICAgIGZpcnN0VHJhbnNmZXJTaWduYXR1cmVzWzFdLmluZGV4LnNob3VsZC5lcXVhbCgxKTtcblxuICAgICAgY29uc3Qgc2Vjb25kVHJhbnNmZXJTaWduYXR1cmVzID0gdHguZ2V0VHJhbnNmZXJTaWduYXR1cmVzKGluZGV4ZXNCeVRyYW5zYWN0aW9uVHlwZS50cmFuc2FjdGlvblsxXSk7XG4gICAgICBzZWNvbmRUcmFuc2ZlclNpZ25hdHVyZXNbMF0uc2lnbmF0dXJlLnNob3VsZC5lcXVhbChcbiAgICAgICAgJ3NpZ05qRDY0TnVWblVLN29WQjJjMlNQMzJWWWo3ZFR5a2JuUnh5RG9TOUJHdmdhZ3ZuTWNUNGhZY2NhYmJGR285dGRWUVQ0TTQ2ZXpZSmRMMnB6WURTd2tmUjZ5cnBwWSdcbiAgICAgICk7XG4gICAgICBzZWNvbmRUcmFuc2ZlclNpZ25hdHVyZXNbMF0uaW5kZXguc2hvdWxkLmVxdWFsKDApO1xuICAgICAgc2Vjb25kVHJhbnNmZXJTaWduYXR1cmVzWzFdLnNpZ25hdHVyZS5zaG91bGQuZXF1YWwoXG4gICAgICAgICdzaWdZZlZZSlVhaUtLWlg0enN6V1o3UkYyOTJuVjJQNlhNNG5LZWsyWWdXUThCTFMxcjIydTRhOVNDdkdNY2I4OUJqVGZ0VG4ydmdVekNUUUdTMmNKTnZiWXR1R1FqR1AnXG4gICAgICApO1xuICAgICAgc2Vjb25kVHJhbnNmZXJTaWduYXR1cmVzWzFdLmluZGV4LnNob3VsZC5lcXVhbCgxKTtcbiAgICB9KTtcblxuICAgIGl0KCdhIHNlbmQgdHJhbnNhY3Rpb24gdG8gbXVsdGlwbGUgZGVzdGluYXRpb25zIGZyb20gaW1wbGljaXQgYWNjb3VudCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHNvdXJjZUFjY291bnQgPSBuZXcgWHR6TGliLktleVBhaXIoeyBwcnY6ICdzcHNrMmNiaVZzQXZwR0ttYXU5WGNNc2NMM05Sd2preVQ1NzVONUF5QW9mY29qNDF4Nmc2VEwnIH0pO1xuXG4gICAgICBjb25zdCB0eEJ1aWxkZXI6IGFueSA9IG5ldyBYdHpMaWIuVHJhbnNhY3Rpb25CdWlsZGVyKGNvaW5zLmdldCgneHR6JykpO1xuICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgdHhCdWlsZGVyLmZlZSh7IGZlZTogJzQ3NjQnIH0pO1xuICAgICAgdHhCdWlsZGVyLmJyYW5jaCgnQktuZmlTVkZUaml4Ymh6c1RiUjFlRG1pdDZ5SzdVQmNnUkpQaG1nZVdjWnFpTUhSWjZFJyk7XG4gICAgICB0eEJ1aWxkZXIuY291bnRlcignMzc3NzUxJyk7XG4gICAgICB0eEJ1aWxkZXIuc291cmNlKHNvdXJjZUFjY291bnQuZ2V0QWRkcmVzcygpKTtcbiAgICAgIHR4QnVpbGRlci50cmFuc2ZlcignMTExJykudG8oJ3R6MVZSalJwVktudjE2QVZwckZIMXRrRG40VERmVnFBODkzQScpO1xuICAgICAgdHhCdWlsZGVyLnRyYW5zZmVyKCcxMTEnKS50bygndHoyWENEYTJ0Y25TMjZQb0JnaVViOGgxeFlodEphZWJDMmJUJyk7XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogc291cmNlQWNjb3VudC5nZXRLZXlzKCkucHJ2IH0pO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgdHguaWQuc2hvdWxkLmVxdWFsKCdvbzdtcFRCMjJRdTFkN0VWYzViNGVBZE1nRXp2ZEtSc0hHalpXb0VqUXdZazZCSjFOVHEnKTtcbiAgICAgIHR4LnR5cGUuc2hvdWxkLmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5TaW5nbGVTaWdTZW5kKTtcbiAgICAgIHR4LnNvdXJjZS5zaG91bGQuZXF1YWwoJ3R6MlAyRThFZ0hhTEE2QTE3ckgzcEU5VDJ0eDZEQTdENHNpVycpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LmlucHV0cy5sZW5ndGgsIDQpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4Lm91dHB1dHMubGVuZ3RoLCAyKTtcbiAgICAgIHR4LmlucHV0c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgndHoyUDJFOEVnSGFMQTZBMTdySDNwRTlUMnR4NkRBN0Q0c2lXJyk7XG4gICAgICB0eC5pbnB1dHNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKCc0NzY0Jyk7XG4gICAgICB0eC5pbnB1dHNbMV0uYWRkcmVzcy5zaG91bGQuZXF1YWwoJ3R6MlAyRThFZ0hhTEE2QTE3ckgzcEU5VDJ0eDZEQTdENHNpVycpO1xuICAgICAgdHguaW5wdXRzWzFdLnZhbHVlLnNob3VsZC5lcXVhbCgnMTExJyk7XG4gICAgICB0eC5pbnB1dHNbMl0uYWRkcmVzcy5zaG91bGQuZXF1YWwoJ3R6MlAyRThFZ0hhTEE2QTE3ckgzcEU5VDJ0eDZEQTdENHNpVycpO1xuICAgICAgdHguaW5wdXRzWzJdLnZhbHVlLnNob3VsZC5lcXVhbCgnNDc2NCcpO1xuICAgICAgdHguaW5wdXRzWzNdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKCd0ejJQMkU4RWdIYUxBNkExN3JIM3BFOVQydHg2REE3RDRzaVcnKTtcbiAgICAgIHR4LmlucHV0c1szXS52YWx1ZS5zaG91bGQuZXF1YWwoJzExMScpO1xuICAgICAgdHgub3V0cHV0c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgndHoxVlJqUnBWS252MTZBVnByRkgxdGtEbjRURGZWcUE4OTNBJyk7XG4gICAgICB0eC5vdXRwdXRzWzBdLnZhbHVlLnNob3VsZC5lcXVhbCgnMTExJyk7XG4gICAgICB0eC5vdXRwdXRzWzFdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKCd0ejJYQ0RhMnRjblMyNlBvQmdpVWI4aDF4WWh0SmFlYkMyYlQnKTtcbiAgICAgIHR4Lm91dHB1dHNbMV0udmFsdWUuc2hvdWxkLmVxdWFsKCcxMTEnKTtcbiAgICAgIHNob3VsZC5ub3QuZXhpc3QodHguZGVsZWdhdGUpO1xuICAgICAgdHguc2lnbmF0dXJlLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICB0eC5zaWduYXR1cmVbMF0uc2hvdWxkLmVxdWFsKFxuICAgICAgICAnc2lndzVlRzJyQ2tBcUpjUjJTdVoyM1REUUV0ZlU4b0Z3OXJHcFRBdHB2bkM2OUViUWF6TVpMNmVVbll6eHp2V0ZiTEV0cDdIYk40am9XaTFDOUdRMzQ4TlhydzZYM1pkJ1xuICAgICAgKTtcbiAgICAgIHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCkuc2hvdWxkLmVxdWFsKFxuICAgICAgICAnMDlmNTY4NjAyMWFhZGNmYzAwMDYzYjA4NzMwNTVjMmU3Yzg0MTM5OGZlY2UzZDc4NjVhOGVkMjc1NjcwOGQ0YTZjMDFhMTUyNWUyODlhZWQ5MzExOWM0NGZkM2FhOGU5ZGY4NTIyZTBkODBkOWMyNTk3ODcxN2U4NTI4MTAyNmYwMDAwNmI1ZGRhZWYzZmI1ZDdjMTUxY2ZiMzZmYmU0M2E3YTA2Njc3NzM5NDAwNmMwMWExNTI1ZTI4OWFlZDkzMTE5YzQ0ZmQzYWE4ZTlkZjg1MjJlMGQ4MGQ5YzI1OTg4NzE3ZTg1MjgxMDI2ZjAwMDFmYWY3MTFmOThkM2E5Nzg2NTY2NTFjMzA4NzUxMzhjMDg2ZmE4NzExMDBmY2YxODliMzY0YzAyMWU0YmUxYTAzMmYzODY3NDQ1ZTBjNjJjYTAxMDQ3ZmI4NTNmZTAyZDAzOGU2MmZjYWQwMmZmY2ExZDA1ZTRiNWE0ZTRmZGMzY2U2ZmMxMTYwN2M5Y2E4Y2VjYTZmZDczMzVkM2RhYjY0MzljZTJkZWUxMSdcbiAgICAgICk7XG4gICAgICBPYmplY3Qua2V5cyh0eC5nZXRJbmRleGVzQnlUcmFuc2FjdGlvblR5cGUoKSkubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHR4Lm93bmVycy5sZW5ndGguc2hvdWxkLmVxdWFsKDApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2EgbXVsdGlzaWcgc2VuZCB0cmFuc2FjdGlvbiB3aXRoIHRoZSBzaWduYXR1cmVzIGluIGN1c3RvbSBvcmRlcicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlcjogYW55ID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KCd4dHonKSk7XG4gICAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgICB0eEJ1aWxkZXIuYnJhbmNoKCdCTThRZFo5MlZ5YUgxczVud0FGOXJVWGppUFozZzNOc242b1liZEtxajJSZ0h4dldYVlMnKTtcbiAgICAgIHR4QnVpbGRlci5zb3VyY2UoZGVmYXVsdEtleVBhaXIuZ2V0QWRkcmVzcygpKTtcbiAgICAgIHR4QnVpbGRlci5jb3VudGVyKCcwJyk7XG4gICAgICB0eEJ1aWxkZXJcbiAgICAgICAgLnRyYW5zZmVyKCcxMDAnKVxuICAgICAgICAuZnJvbSgnS1QxTkgyTTIzeG92aHc3dXdXVnVvR1RZeHlrZUNjVmZTcWhMJylcbiAgICAgICAgLnRvKCdLVDFIVXJ0Nmtmdll5REVZQ0oyR1NqdlRQWjZLbVJmeExCVTgnKVxuICAgICAgICAuZmVlKCc0NzY0JylcbiAgICAgICAgLmdhc0xpbWl0KCczMzk3MScpXG4gICAgICAgIC5zdG9yYWdlTGltaXQoJzEyOTInKVxuICAgICAgICAuZGF0YVRvU2lnbignMDAnKTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBkZWZhdWx0S2V5UGFpci5nZXRLZXlzKCkucHJ2IH0pO1xuICAgICAgLy8gTXVsdGlzaWcga2V5c1xuICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IG5ldyBYdHpMaWIuS2V5UGFpcih7IHNlZWQ6IEJ1ZmZlci5hbGxvYygxOCkgfSkuZ2V0S2V5cygpLnBydiwgaW5kZXg6IDIgfSk7XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogbmV3IFh0ekxpYi5LZXlQYWlyKHsgc2VlZDogQnVmZmVyLmFsbG9jKDE2KSB9KS5nZXRLZXlzKCkucHJ2LCBpbmRleDogMSB9KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCBzaWduYXR1cmVzID0gdHgudG9Kc29uKCkuY29udGVudHNbMF0ucGFyYW1ldGVycy52YWx1ZS5hcmdzWzFdO1xuICAgICAgc2lnbmF0dXJlc1swXS5wcmltLnNob3VsZC5lcXVhbCgnTm9uZScpO1xuICAgICAgc2lnbmF0dXJlc1sxXS5wcmltLnNob3VsZC5lcXVhbCgnU29tZScpO1xuICAgICAgc2lnbmF0dXJlc1sxXS5hcmdzWzBdLnN0cmluZy5zaG91bGQuZXF1YWwoXG4gICAgICAgICdzaWdVeHZDUVNFV1F2WnJmM3lTMlZqU1RCV3ljTVBlM3pCQm82RVd2YTJkM3RIVjFES1pOVXM4YjVmbXFRZVhXdmRTU1h6dHg0OFVzUFk1Rm1KaURvZm1QU1o2U1VqWnQnXG4gICAgICApO1xuICAgICAgc2lnbmF0dXJlc1syXS5wcmltLnNob3VsZC5lcXVhbCgnU29tZScpO1xuICAgICAgc2lnbmF0dXJlc1syXS5hcmdzWzBdLnN0cmluZy5zaG91bGQuZXF1YWwoXG4gICAgICAgICdzaWdpQzI4NmdMYzFTU1dId0t5ZGN6d3dkd1RVUHY3ZTlta1BlSHpmRTl3RUc5UEtaNmZVY21yTWVZd2NIN3Q5Zldzbm96QjdGYXkydXhrbWkxdTFYMWJ3M01nSlVOcHUnXG4gICAgICApO1xuICAgICAgdHgub3duZXJzLmxlbmd0aC5zaG91bGQuZXF1YWwoMCk7XG4gICAgfSk7XG5cbiAgICBpdCgnYSBtdWx0aXNpZyBzZW5kIHRyYW5zYWN0aW9uIHdpdGggdGhlIHNpZ25hdHVyZXMgaW4gZGVmYXVsdCBvcmRlcicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlcjogYW55ID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KCd4dHonKSk7XG4gICAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgICB0eEJ1aWxkZXIuYnJhbmNoKCdCTThRZFo5MlZ5YUgxczVud0FGOXJVWGppUFozZzNOc242b1liZEtxajJSZ0h4dldYVlMnKTtcbiAgICAgIHR4QnVpbGRlci5zb3VyY2UoZGVmYXVsdEtleVBhaXIuZ2V0QWRkcmVzcygpKTtcbiAgICAgIHR4QnVpbGRlci5jb3VudGVyKCcwJyk7XG4gICAgICB0eEJ1aWxkZXJcbiAgICAgICAgLnRyYW5zZmVyKCcxMDAnKVxuICAgICAgICAuZnJvbSgnS1QxTkgyTTIzeG92aHc3dXdXVnVvR1RZeHlrZUNjVmZTcWhMJylcbiAgICAgICAgLnRvKCdLVDFIVXJ0Nmtmdll5REVZQ0oyR1NqdlRQWjZLbVJmeExCVTgnKVxuICAgICAgICAuZmVlKCc0NzY0JylcbiAgICAgICAgLmdhc0xpbWl0KCczMzk3MScpXG4gICAgICAgIC5zdG9yYWdlTGltaXQoJzEyOTInKVxuICAgICAgICAuZGF0YVRvU2lnbignMDAnKTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBkZWZhdWx0S2V5UGFpci5nZXRLZXlzKCkucHJ2IH0pO1xuICAgICAgLy8gTXVsdGlzaWcga2V5c1xuICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IG5ldyBYdHpMaWIuS2V5UGFpcih7IHNlZWQ6IEJ1ZmZlci5hbGxvYygxOCkgfSkuZ2V0S2V5cygpLnBydiB9KTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBuZXcgWHR6TGliLktleVBhaXIoeyBzZWVkOiBCdWZmZXIuYWxsb2MoMTYpIH0pLmdldEtleXMoKS5wcnYgfSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3Qgc2lnbmF0dXJlcyA9IHR4LnRvSnNvbigpLmNvbnRlbnRzWzBdLnBhcmFtZXRlcnMudmFsdWUuYXJnc1sxXTtcbiAgICAgIHNpZ25hdHVyZXNbMF0ucHJpbS5zaG91bGQuZXF1YWwoJ1NvbWUnKTtcbiAgICAgIHNpZ25hdHVyZXNbMF0uYXJnc1swXS5zdHJpbmcuc2hvdWxkLmVxdWFsKFxuICAgICAgICAnc2lnaUMyODZnTGMxU1NXSHdLeWRjend3ZHdUVVB2N2U5bWtQZUh6ZkU5d0VHOVBLWjZmVWNtck1lWXdjSDd0OWZXc25vekI3RmF5MnV4a21pMXUxWDFidzNNZ0pVTnB1J1xuICAgICAgKTtcbiAgICAgIHNpZ25hdHVyZXNbMV0ucHJpbS5zaG91bGQuZXF1YWwoJ1NvbWUnKTtcbiAgICAgIHNpZ25hdHVyZXNbMV0uYXJnc1swXS5zdHJpbmcuc2hvdWxkLmVxdWFsKFxuICAgICAgICAnc2lnVXh2Q1FTRVdRdlpyZjN5UzJWalNUQld5Y01QZTN6QkJvNkVXdmEyZDN0SFYxREtaTlVzOGI1Zm1xUWVYV3ZkU1NYenR4NDhVc1BZNUZtSmlEb2ZtUFNaNlNValp0J1xuICAgICAgKTtcbiAgICAgIHNpZ25hdHVyZXNbMl0ucHJpbS5zaG91bGQuZXF1YWwoJ05vbmUnKTtcbiAgICAgIE9iamVjdC5rZXlzKHR4LmdldEluZGV4ZXNCeVRyYW5zYWN0aW9uVHlwZSgpKS5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2Egc2luZ2xlU2lnIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyOiBhbnkgPSBuZXcgWHR6TGliLlRyYW5zYWN0aW9uQnVpbGRlcihjb2lucy5nZXQoJ3h0eicpKTtcbiAgICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5TaW5nbGVTaWdTZW5kKTtcbiAgICAgIHR4QnVpbGRlci5icmFuY2goJ0JNOFFkWjkyVnlhSDFzNW53QUY5clVYamlQWjNnM05zbjZvWWJkS3FqMlJnSHh2V1hWUycpO1xuICAgICAgdHhCdWlsZGVyLnNvdXJjZShkZWZhdWx0S2V5UGFpci5nZXRBZGRyZXNzKCkpO1xuICAgICAgdHhCdWlsZGVyLmNvdW50ZXIoJzAnKTtcbiAgICAgIHR4QnVpbGRlclxuICAgICAgICAudHJhbnNmZXIobmV3IEJpZ051bWJlcigxMCkudG9GaXhlZCgwKSlcbiAgICAgICAgLmZyb20oZGVmYXVsdEtleVBhaXIuZ2V0QWRkcmVzcygpKVxuICAgICAgICAudG8oJ0tUMUhVcnQ2a2Z2WXlERVlDSjJHU2p2VFBaNkttUmZ4TEJVOCcpXG4gICAgICAgIC5mZWUoJzQ3NjQnKVxuICAgICAgICAuZ2FzTGltaXQoJzEwMDk3MScpXG4gICAgICAgIC5zdG9yYWdlTGltaXQoJzEyOTInKTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBkZWZhdWx0S2V5UGFpci5nZXRLZXlzKCkucHJ2IH0pO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIHR4LnR5cGUuc2hvdWxkLmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5TaW5nbGVTaWdTZW5kKTtcbiAgICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgdHhKc29uLmNvbnRlbnRzWzBdLmdhc19saW1pdC5zaG91bGQuZXF1YWwoJzEwMDk3MScpO1xuICAgICAgdHhKc29uLmNvbnRlbnRzWzBdLnN0b3JhZ2VfbGltaXQuc2hvdWxkLmVxdWFsKCcxMjkyJyk7XG4gICAgICB0eEpzb24uY29udGVudHNbMF0uYW1vdW50LnNob3VsZC5lcXVhbCgnMTAnKTtcbiAgICAgIHR4SnNvbi5jb250ZW50c1swXS5jb3VudGVyLnNob3VsZC5lcXVhbCgnMCcpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2hvdWxkIGZhaWwgdG8gc2lnbicsICgpID0+IHtcbiAgICBsZXQgZ2VuZXJpY1R4QnVpbGRlcjogYW55O1xuXG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICBnZW5lcmljVHhCdWlsZGVyID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KCd0eHR6JykpO1xuICAgICAgZ2VuZXJpY1R4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICAgIGdlbmVyaWNUeEJ1aWxkZXIuYnJhbmNoKCdCTThRZFo5MlZ5YUgxczVud0FGOXJVWGppUFozZzNOc242b1liZEtxajJSZ0h4dldYVlMnKTtcbiAgICAgIGdlbmVyaWNUeEJ1aWxkZXIuc291cmNlKGRlZmF1bHRLZXlQYWlyLmdldEFkZHJlc3MoKSk7XG4gICAgICBnZW5lcmljVHhCdWlsZGVyLmNvdW50ZXIoJzAnKTtcbiAgICAgIGdlbmVyaWNUeEJ1aWxkZXJcbiAgICAgICAgLnRyYW5zZmVyKCcxMDAnKVxuICAgICAgICAuZnJvbSgnS1QxTkgyTTIzeG92aHc3dXdXVnVvR1RZeHlrZUNjVmZTcWhMJylcbiAgICAgICAgLnRvKCdLVDFIVXJ0Nmtmdll5REVZQ0oyR1NqdlRQWjZLbVJmeExCVTgnKVxuICAgICAgICAuZmVlKCc0NzY0JylcbiAgICAgICAgLmdhc0xpbWl0KCczMzk3MScpXG4gICAgICAgIC5zdG9yYWdlTGltaXQoJzEyOTInKVxuICAgICAgICAuZGF0YVRvU2lnbignMDAnKTtcbiAgICB9KTtcblxuICAgIGl0KCdhIHRyYW5zYWN0aW9uIHdpdGggbm8gc291cmNlIGFjY291bnQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXI6IGFueSA9IG5ldyBYdHpMaWIuVHJhbnNhY3Rpb25CdWlsZGVyKGNvaW5zLmdldCgneHR6JykpO1xuICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uKTtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnNpZ24oeyBrZXk6IGRlZmF1bHRLZXlQYWlyLmdldEtleXMoKS5wcnYgfSkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2EgdHJhbnNhY3Rpb24gd2l0aCBhIGRpZmZlcmVudCBwcml2YXRlIGtleSB0aGFuIHRoZSBzb3VyY2UgYWNjb3VudCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlcjogYW55ID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KCd4dHonKSk7XG4gICAgICB0eEJ1aWxkZXIuZnJvbSh0ZXN0RGF0YS5lbXB0eVVuc2lnbmVkU2VyaWFsaXplZE9yaWdpbmF0aW9uVHJhbnNhY3Rpb24pO1xuICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uKTtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnNpZ24oeyBrZXk6IG5ldyBYdHpMaWIuS2V5UGFpcigpLmdldEtleXMoKS5wcnYgfSkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2EgdHJhbnNhY3Rpb24gd2l0aCBzb21lIGtleXMgd2l0aCBjdXN0b20gaW5kZXgnLCBhc3luYyAoKSA9PiB7XG4gICAgICBnZW5lcmljVHhCdWlsZGVyLnNpZ24oeyBrZXk6IGRlZmF1bHRLZXlQYWlyLmdldEtleXMoKS5wcnYgfSk7XG4gICAgICAvLyBNdWx0aXNpZyBrZXlzXG4gICAgICBnZW5lcmljVHhCdWlsZGVyLnNpZ24oeyBrZXk6IG5ldyBYdHpMaWIuS2V5UGFpcigpLmdldEtleXMoKS5wcnYgfSk7XG4gICAgICBnZW5lcmljVHhCdWlsZGVyLnNpZ24oeyBrZXk6IG5ldyBYdHpMaWIuS2V5UGFpcigpLmdldEtleXMoKS5wcnYgfSk7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PiBnZW5lcmljVHhCdWlsZGVyLnNpZ24oeyBrZXk6IG5ldyBYdHpMaWIuS2V5UGFpcigpLmdldEtleXMoKS5wcnYsIGluZGV4OiAyIH0pLFxuICAgICAgICBuZXcgUmVnRXhwKCdDdXN0b20gaW5kZXggaGFzIHRvIGJlIHNldCBmb3IgYWxsIG11bHRpc2lnIGNvbnRyYWN0IHNpZ25pbmcga2V5cyBvciBub25lJylcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnYSB0cmFuc2FjdGlvbiB3aXRoIHNvbWUga2V5cyB3aXRob3V0IGN1c3RvbSBpbmRleCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGdlbmVyaWNUeEJ1aWxkZXIuc2lnbih7IGtleTogZGVmYXVsdEtleVBhaXIuZ2V0S2V5cygpLnBydiB9KTtcbiAgICAgIC8vIE11bHRpc2lnIGtleXNcbiAgICAgIGdlbmVyaWNUeEJ1aWxkZXIuc2lnbih7IGtleTogbmV3IFh0ekxpYi5LZXlQYWlyKCkuZ2V0S2V5cygpLnBydiwgaW5kZXg6IDAgfSk7XG4gICAgICBnZW5lcmljVHhCdWlsZGVyLnNpZ24oeyBrZXk6IG5ldyBYdHpMaWIuS2V5UGFpcigpLmdldEtleXMoKS5wcnYsIGluZGV4OiAxIH0pO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4gZ2VuZXJpY1R4QnVpbGRlci5zaWduKHsga2V5OiBuZXcgWHR6TGliLktleVBhaXIoKS5nZXRLZXlzKCkucHJ2IH0pLFxuICAgICAgICBuZXcgUmVnRXhwKCdDdXN0b20gaW5kZXggaGFzIHRvIGJlIHNldCBmb3IgYWxsIG11bHRpc2lnIGNvbnRyYWN0IHNpZ25pbmcga2V5cyBvciBub25lJylcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnYSB0cmFuc2FjdGlvbiB3aXRoIGEga2V5IHdpdGggaW52YWxpZCBjdXN0b20gaW5kZXgnLCBhc3luYyAoKSA9PiB7XG4gICAgICBnZW5lcmljVHhCdWlsZGVyLnNpZ24oeyBrZXk6IGRlZmF1bHRLZXlQYWlyLmdldEtleXMoKS5wcnYgfSk7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PiBnZW5lcmljVHhCdWlsZGVyLnNpZ24oeyBrZXk6IG5ldyBYdHpMaWIuS2V5UGFpcigpLmdldEtleXMoKS5wcnYsIGluZGV4OiAzIH0pLFxuICAgICAgICBuZXcgUmVnRXhwKCdDdXN0b20gaW5kZXggY2Fubm90IGJlIGdyZWF0ZXInKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdhIFNlbmQgdHJhbnNhY3Rpb24gd2l0aCBubyB0cmFuc2ZlcnMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXI6IGFueSA9IG5ldyBYdHpMaWIuVHJhbnNhY3Rpb25CdWlsZGVyKGNvaW5zLmdldCgneHR6JykpO1xuICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgdHhCdWlsZGVyLmZlZSh7IGZlZTogJzQ3NjQnIH0pO1xuICAgICAgdHhCdWlsZGVyLmJyYW5jaCgnQktuZmlTVkZUaml4Ymh6c1RiUjFlRG1pdDZ5SzdVQmNnUkpQaG1nZVdjWnFpTUhSWjZFJyk7XG4gICAgICB0eEJ1aWxkZXIuY291bnRlcignMScpO1xuICAgICAgdHhCdWlsZGVyLnNvdXJjZShkZWZhdWx0S2V5UGFpci5nZXRBZGRyZXNzKCkpO1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIuc2lnbih7IGtleTogZGVmYXVsdEtleVBhaXIuZ2V0S2V5cygpLnBydiB9KSk7XG4gICAgfSk7XG5cbiAgICBpdCgnYW4gYWRkcmVzcyBpbml0aWFsaXphdGlvbiB0cmFuc2FjdGlvbiB3aXRob3V0IHB1YmxpYyBrZXknLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXI6IGFueSA9IG5ldyBYdHpMaWIuVHJhbnNhY3Rpb25CdWlsZGVyKGNvaW5zLmdldCgneHR6JykpO1xuICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLkFjY291bnRVcGRhdGUpO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4gdHhCdWlsZGVyLnNpZ24oeyBrZXk6IGRlZmF1bHRLZXlQYWlyLmdldEtleXMoKS5wcnYgfSksXG4gICAgICAgIG5ldyBSZWdFeHAoJ0Nhbm5vdCBzaWduIGEgcHVibGljIGtleSByZXZlbGF0aW9uIHRyYW5zYWN0aW9uIHdpdGhvdXQgcHVibGljIGtleScpXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2hvdWxkIGZhaWwgdG8nLCAoKSA9PiB7XG4gICAgaXQoJ2NoYW5nZSB0aGUgdHlwZSB0byBTZW5kIHdoZW4gb3duZXJzIGhhdmUgYWxyZWFkeSBiZWVuIHNldCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlcjogYW55ID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KCd4dHonKSk7XG4gICAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24pO1xuICAgICAgdHhCdWlsZGVyLm93bmVyKGRlZmF1bHRLZXlQYWlyLmdldEtleXMoKS5wdWIpO1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuU2VuZCkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2J1aWxkIGEgc2VuZCB0cmFuc2FjdGlvbiB3aXRoIG93bmVycycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlcjogYW55ID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KCd4dHonKSk7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci5vd25lcihkZWZhdWx0S2V5UGFpci5nZXRLZXlzKCkucHViKSk7XG4gICAgfSk7XG5cbiAgICBpdCgnYnVpbGQgYSB0cmFuc2FjdGlvbiB3aXRoIGFuIGludmFsaWQgYnJhbmNoIGlkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyOiBhbnkgPSBuZXcgWHR6TGliLlRyYW5zYWN0aW9uQnVpbGRlcihjb2lucy5nZXQoJ3h0eicpKTtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLmJyYW5jaCgnJykpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2J1aWxkIGEgdHJhbnNhY3Rpb24gd2l0aCBhbiBpbnZhbGlkIHZhbHVlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyOiBhbnkgPSBuZXcgWHR6TGliLlRyYW5zYWN0aW9uQnVpbGRlcihjb2lucy5nZXQoJ3h0eicpKTtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLmluaXRpYWxCYWxhbmNlKCctMScpKTtcbiAgICB9KTtcblxuICAgIGl0KCdidWlsZCBhIG5vbiB3YWxsZXQgaW5pdGlhbGl6YXRpb24gdHJhbnNhY3Rpb24gd2l0aCBpbml0aWFsIGJhbGFuY2UnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXI6IGFueSA9IG5ldyBYdHpMaWIuVHJhbnNhY3Rpb25CdWlsZGVyKGNvaW5zLmdldCgneHR6JykpO1xuICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIuaW5pdGlhbEJhbGFuY2UoJzEwMCcpKTtcbiAgICB9KTtcblxuICAgIGl0KCdidWlsZCB0cmFuc2ZlciBmb3Igbm9uIHNlbmQtdHlwZSB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlcjogYW55ID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KCd4dHonKSk7XG4gICAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24pO1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIudHJhbnNmZXIoJzEwMCcpLCBuZXcgUmVnRXhwKCdUcmFuc2ZlcnMgY2FuIG9ubHkgYmUgc2V0IGZvciBzZW5kIHRyYW5zYWN0aW9ucycpKTtcbiAgICB9KTtcblxuICAgIGl0KCdhZGQgbW9yZSBvd25lcnMgdGhhbiB0aGUgbXVsdGlzaWcgbWF4aW11bScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlcjogYW55ID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KCd4dHonKSk7XG4gICAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24pO1xuICAgICAgdHhCdWlsZGVyLm93bmVyKCdzcHBrN1pXQjhkaVUyVFdlaHhka1dDVjJEVEZ2bjFoUHo0cUxqaUQzbkpRb3pLbm9TRW5TQzhiJyk7XG4gICAgICB0eEJ1aWxkZXIub3duZXIoJ3NwcGs3WnE5S1B0d2t6a2dBc2hhNGpVMjlDNDNNY2dQMnNrSzU2dGpkN0tKamhjbUg2QVpDMUYnKTtcbiAgICAgIHR4QnVpbGRlci5vd25lcignc3BwazdkMnp0emJyTGRCYVRCN3l6YVdSa1BmY1dHc3JOUU5KZGtCRTliQ1RTU3pla0xOenB2ZicpO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4gdHhCdWlsZGVyLm93bmVyKCdzcHBrN2QyenR6YnJMZEJhVEI3eXphV1JrUGZjV0dzck5RTkpka0JFOWJDVFNTemVrTE56cHZmJyksXG4gICAgICAgIG5ldyBSZWdFeHAoJ0EgbWF4aW11bSBvZiAzIG93bmVycycpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FkZCB0aGUgc2FtZSBvd25lciB0d2ljZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlcjogYW55ID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KCd4dHonKSk7XG4gICAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24pO1xuICAgICAgdHhCdWlsZGVyLm93bmVyKCdzcHBrN2QyenR6YnJMZEJhVEI3eXphV1JrUGZjV0dzck5RTkpka0JFOWJDVFNTemVrTE56cHZmJyk7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PiB0eEJ1aWxkZXIub3duZXIoJ3NwcGs3ZDJ6dHpickxkQmFUQjd5emFXUmtQZmNXR3NyTlFOSmRrQkU5YkNUU1N6ZWtMTnpwdmYnKSxcbiAgICAgICAgbmV3IFJlZ0V4cCgnUmVwZWF0ZWQgb3duZXIgcHVibGljIGtleScpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FkZCBhbiBpbnZhbGlkIG93bmVyIHB1YmxpYyBrZXknLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXI6IGFueSA9IG5ldyBYdHpMaWIuVHJhbnNhY3Rpb25CdWlsZGVyKGNvaW5zLmdldCgneHR6JykpO1xuICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uKTtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLm93bmVyKCdzcHBrJyksIG5ldyBSZWdFeHAoJ0ludmFsaWQgcHVibGljIGtleScpKTtcbiAgICB9KTtcblxuICAgIGl0KCdhZGQgYW4gaW52YWxpZCBwdWJsaWMga2V5IHRvIHJldmVhbCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlcjogYW55ID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KCd4dHonKSk7XG4gICAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuQWNjb3VudFVwZGF0ZSk7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci5wdWJsaWNLZXlUb1JldmVhbCgnc3BwaycpLCBuZXcgUmVnRXhwKCdVbnN1cHBvcnRlZCBwdWJsaWMga2V5JykpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FkZCB0aGUgc2FtZSBwdWJsaWMga2V5IHRvIHJldmVhbCB0d2ljZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlcjogYW55ID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KCd4dHonKSk7XG4gICAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuQWNjb3VudFVwZGF0ZSk7XG4gICAgICB0eEJ1aWxkZXIuc291cmNlKGRlZmF1bHRLZXlQYWlyLmdldEFkZHJlc3MoKSk7XG4gICAgICB0eEJ1aWxkZXIucHVibGljS2V5VG9SZXZlYWwoZGVmYXVsdEtleVBhaXIuZ2V0S2V5cygpLnB1Yik7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PiB0eEJ1aWxkZXIucHVibGljS2V5VG9SZXZlYWwoZGVmYXVsdEtleVBhaXIuZ2V0S2V5cygpLnB1YiksXG4gICAgICAgIG5ldyBSZWdFeHAoJ1B1YmxpYyBrZXkgdG8gcmV2ZWFsIGFscmVhZHkgc2V0JylcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnYWRkIHRoZSBwdWJsaWMga2V5IHRvIHJldmVhbCB0aGF0IGRvZXMgbm90IGJlbG9uZyB0byB0aGUgc291cmNlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyOiBhbnkgPSBuZXcgWHR6TGliLlRyYW5zYWN0aW9uQnVpbGRlcihjb2lucy5nZXQoJ3h0eicpKTtcbiAgICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5BY2NvdW50VXBkYXRlKTtcbiAgICAgIHR4QnVpbGRlci5zb3VyY2UoZGVmYXVsdEtleVBhaXIuZ2V0QWRkcmVzcygpKTtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IHR4QnVpbGRlci5wdWJsaWNLZXlUb1JldmVhbCgnc3BwazdkMnp0emJyTGRCYVRCN3l6YVdSa1BmY1dHc3JOUU5KZGtCRTliQ1RTU3pla0xOenB2ZicpLFxuICAgICAgICBuZXcgUmVnRXhwKCdQdWJsaWMga2V5IGRvZXMgbm90IG1hdGNoIHRoZSBzb3VyY2UgYWRkcmVzcycpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2NoYW5nZSB0aGUgdHJhbnNhY3Rpb24gdHlwZSBmcm9tIFNlbmQgaWYgaXQgaGFzIHRyYW5zZmVycycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlcjogYW55ID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KCd4dHonKSk7XG4gICAgICB0eEJ1aWxkZXIuYnJhbmNoKCdCTThRZFo5MlZ5YUgxczVud0FGOXJVWGppUFozZzNOc242b1liZEtxajJSZ0h4dldYVlMnKTtcbiAgICAgIHR4QnVpbGRlci5zb3VyY2UoZGVmYXVsdEtleVBhaXIuZ2V0QWRkcmVzcygpKTtcbiAgICAgIHR4QnVpbGRlci5jb3VudGVyKCcwJyk7XG4gICAgICB0eEJ1aWxkZXJcbiAgICAgICAgLnRyYW5zZmVyKCcxMDAnKVxuICAgICAgICAuZnJvbSgnS1QxTkgyTTIzeG92aHc3dXdXVnVvR1RZeHlrZUNjVmZTcWhMJylcbiAgICAgICAgLnRvKCdLVDFIVXJ0Nmtmdll5REVZQ0oyR1NqdlRQWjZLbVJmeExCVTgnKVxuICAgICAgICAuZmVlKCc0NzY0Jyk7XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogZGVmYXVsdEtleVBhaXIuZ2V0S2V5cygpLnBydiB9KTtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbiksXG4gICAgICAgIG5ldyBSZWdFeHAoJ1RyYW5zYWN0aW9uIGNvbnRhaW5zIHRyYW5zZmVycyBhbmQgY2FuIG9ubHkgYmUgbGFiZWxlZCBhcyBTZW5kJylcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|