construct-hub 0.4.399 → 0.4.401
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.
- package/.jsii +11 -11
- package/lib/construct-hub.js +1 -1
- package/lib/package-sources/code-artifact.js +1 -1
- package/lib/package-sources/npmjs/npm-js-follower.lambda.bundle/index.js +1 -1
- package/lib/package-sources/npmjs/npm-js-follower.lambda.bundle/index.js.map +2 -2
- package/lib/package-sources/npmjs/npm-js-follower.lambda.js +2 -2
- package/lib/package-sources/npmjs.js +3 -2
- package/lib/package-tag/index.js +3 -3
- package/lib/package-tag-group/index.js +2 -2
- package/lib/preload-file/index.js +1 -1
- package/lib/s3/storage.js +1 -1
- package/lib/spdx-license.js +1 -1
- package/package.json +2 -2
@@ -186,7 +186,7 @@ async function loadLastTransactionMarker(stagingBucket, registry) {
|
|
186
186
|
const dbUpdateSeq = (await registry.info()).update_seq;
|
187
187
|
if (dbUpdateSeq < data.marker) {
|
188
188
|
console.warn(`Current DB update_seq (${dbUpdateSeq}) is lower than marker (CouchDB instance was likely replaced), resetting to 0!`);
|
189
|
-
return { marker: '0', knownVersions: data.
|
189
|
+
return { marker: '0', knownVersions: data.knownVersions };
|
190
190
|
}
|
191
191
|
return data;
|
192
192
|
}
|
@@ -373,4 +373,4 @@ function getRelevantVersionInfos(changes, metrics, denyList, licenseList, knownV
|
|
373
373
|
name.startsWith('@cdktf/'));
|
374
374
|
}
|
375
375
|
}
|
376
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtLWpzLWZvbGxvd2VyLmxhbWJkYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWNrYWdlLXNvdXJjZXMvbnBtanMvbnBtLWpzLWZvbGxvd2VyLmxhbWJkYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXdFQSwwQkEwSkM7QUFsT0QsbUNBQW1DO0FBQ25DLDBEQUF1RDtBQUN2RCxrREFLNEI7QUFFNUIsK0RBSzhCO0FBRTlCLHlEQUF1RDtBQUN2RCxpRUFBaUU7QUFDakUsdUVBSW1DO0FBQ25DLCtFQUE2RTtBQUU3RSx1RkFBOEU7QUFDOUUsMEZBQW9GO0FBQ3BGLDhFQUdnRDtBQUNoRCx3R0FBd0Y7QUFDeEYsOEVBQW9FO0FBQ3BFLGlFQUFpRTtBQUNqRSxNQUFNLG9CQUFvQixHQUFHLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0FBRXBFLE1BQU0sa0JBQWtCLEdBQXdCLElBQUksR0FBRyxDQUFDO0lBQ3RELEtBQUs7SUFDTCxTQUFTO0lBQ1QsUUFBUTtJQUNSLE9BQU87SUFDUCxPQUFPO0NBQ1IsQ0FBQyxDQUFDO0FBQ0gsTUFBTSx3QkFBd0IsR0FBRyw4QkFBOEIsQ0FBQztBQUVoRTs7Ozs7R0FLRztBQUNILE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQztBQUVoRSxvQ0FBb0M7QUFDcEMsb0NBQWEsQ0FBQyxTQUFTLEdBQUcsMkNBQWlCLENBQUM7QUFFNUMscURBQXFEO0FBQ3JELGlFQUFpRTtBQUNqRSxJQUFBLHNDQUFrQixFQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLGlFQUFpRTtBQUNqRSxJQUFBLHNDQUFrQixFQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBRXBDOzs7Ozs7Ozs7R0FTRztBQUNJLEtBQUssVUFBVSxPQUFPLENBQUMsS0FBcUIsRUFBRSxPQUFnQjtJQUNuRSxPQUFPLENBQUMsR0FBRyxDQUFD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QWUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQzNDLDJCQUEyQixDQUM1QjtZQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDNUMsMkJBQTJCLENBQzVCO1lBQ0QseUJBQXlCO1lBQ3pCLEtBQUssQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FDekQsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFNBQVMsMkJBQTJCLENBQUMsSUFBWTtRQUMvQyx5RUFBeUU7UUFFekUsbUNBQW1DO1FBQ25DLE9BQU8sQ0FDTCxJQUFJLEtBQUssWUFBWTtZQUNyQixtQkFBbUI7WUFDbkIsSUFBSSxLQUFLLGFBQWE7WUFDdEIsSUFBSSxLQUFLLFNBQVM7WUFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUM7WUFDNUIsaUJBQWlCO1lBQ2pCLElBQUksS0FBSyxPQUFPO1lBQ2hCLG1DQUFtQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDOUMsaUJBQWlCO1lBQ2pCLElBQUksS0FBSyxPQUFPO1lBQ2hCLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQzNCLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNvbnNvbGUgZnJvbSAnY29uc29sZSc7XG5pbXBvcnQgeyBJbnZva2VDb21tYW5kIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWxhbWJkYSc7XG5pbXBvcnQge1xuICBHZXRPYmplY3RDb21tYW5kLFxuICBOb1N1Y2hLZXksXG4gIFB1dE9iamVjdENvbW1hbmQsXG4gIFB1dE9iamVjdENvbW1hbmRJbnB1dCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXMzJztcbmltcG9ydCB0eXBlIHsgU3RyZWFtaW5nQmxvYlBheWxvYWRJbnB1dFR5cGVzIH0gZnJvbSAnQHNtaXRoeS90eXBlcyc7XG5pbXBvcnQge1xuICBtZXRyaWNTY29wZSxcbiAgQ29uZmlndXJhdGlvbixcbiAgTWV0cmljc0xvZ2dlcixcbiAgVW5pdCxcbn0gZnJvbSAnYXdzLWVtYmVkZGVkLW1ldHJpY3MnO1xuaW1wb3J0IHR5cGUgeyBDb250ZXh0LCBTY2hlZHVsZWRFdmVudCB9IGZyb20gJ2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgY2FwdHVyZUhUVFBzR2xvYmFsIH0gZnJvbSAnYXdzLXhyYXktc2RrLWNvcmUnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbmltcG9ydCB7XG4gIE1ldHJpY05hbWUsXG4gIE1BUktFUl9GSUxFX05BTUUsXG4gIE1FVFJJQ1NfTkFNRVNQQUNFLFxufSBmcm9tICcuL2NvbnN0YW50cy5sYW1iZGEtc2hhcmVkJztcbmltcG9ydCB7IENvdWNoQ2hhbmdlcywgRGF0YWJhc2VDaGFuZ2UgfSBmcm9tICcuL2NvdWNoLWNoYW5nZXMubGFtYmRhLXNoYXJlZCc7XG5pbXBvcnQgeyBQYWNrYWdlVmVyc2lvbiB9IGZyb20gJy4vc3RhZ2UtYW5kLW5vdGlmeS5sYW1iZGEnO1xuaW1wb3J0IHsgRGVueUxpc3RDbGllbnQgfSBmcm9tICcuLi8uLi9iYWNrZW5kL2RlbnktbGlzdC9jbGllbnQubGFtYmRhLXNoYXJlZCc7XG5pbXBvcnQgeyBMaWNlbnNlTGlzdENsaWVudCB9IGZyb20gJy4uLy4uL2JhY2tlbmQvbGljZW5zZS1saXN0L2NsaWVudC5sYW1iZGEtc2hhcmVkJztcbmltcG9ydCB7XG4gIExBTUJEQV9DTElFTlQsXG4gIFMzX0NMSUVOVCxcbn0gZnJvbSAnLi4vLi4vYmFja2VuZC9zaGFyZWQvYXdzLmxhbWJkYS1zaGFyZWQnO1xuaW1wb3J0IHsgZGVjb21wcmVzc0NvbnRlbnQgfSBmcm9tICcuLi8uLi9iYWNrZW5kL3NoYXJlZC9jb21wcmVzcy1jb250ZW50LmxhbWJkYS1zaGFyZWQnO1xuaW1wb3J0IHsgcmVxdWlyZUVudiB9IGZyb20gJy4uLy4uL2JhY2tlbmQvc2hhcmVkL2Vudi5sYW1iZGEtc2hhcmVkJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG5jb25zdCBub3JtYWxpemVOUE1NZXRhZGF0YSA9IHJlcXVpcmUoJ25vcm1hbGl6ZS1yZWdpc3RyeS1tZXRhZGF0YScpO1xuXG5jb25zdCBDT05TVFJVQ1RfS0VZV09SRFM6IFJlYWRvbmx5U2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcbiAgJ2NkaycsXG4gICdhd3MtY2RrJyxcbiAgJ2F3c2NkaycsXG4gICdjZGs4cycsXG4gICdjZGt0ZicsXG5dKTtcbmNvbnN0IE5QTV9SRVBMSUNBX1JFR0lTVFJZX1VSTCA9ICdodHRwczovL3JlcGxpY2F0ZS5ucG1qcy5jb20vJztcblxuLyoqXG4gKiBUaGUgcmVsZWFzZSBkYXRlIG9mIGBhd3MtY2RrQDAuOC4wYC4gQW55dGhpbmcgZWFybGllciB0aGFuIHRoaXMgYmFzaWNhbGx5IGlzXG4gKiBub3QgYSByZWxldmFudCBwYWNrYWdlLCBhcyBpdCBjYW5ub3QgcG9zc2libHkgYmUgYSBjb25zdHJ1Y3RzLWJhc2VkIHBhY2thZ2UuXG4gKiBUaGlzIGlzIHVzZWQgdG8gZmFzdC1mb3J3YXJkIG92ZXIgYm9yaW5nIHN0dWZmIHdoZW4gdGhlIHNlcXVlbmNlIG51bWJlciBpc1xuICogcmVzZXQuXG4gKi9cbmNvbnN0IERBV05fT0ZfQ09OU1RSVUNUUyA9IG5ldyBEYXRlKCcyMDE4LTA3LTMxVDEzOjQzOjA0LjYxNVonKTtcblxuLy8gQ29uZmlndXJlIGVtYmVkZGVkIG1ldHJpY3MgZm9ybWF0XG5Db25maWd1cmF0aW9uLm5hbWVzcGFjZSA9IE1FVFJJQ1NfTkFNRVNQQUNFO1xuXG4vLyBNYWtlIHN1cmUgWC1SYXkgdHJhY2VzIHdpbGwgaW5jbHVkZSBIVFRQKHMpIGNhbGxzLlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbmNhcHR1cmVIVFRQc0dsb2JhbChyZXF1aXJlKCdodHRwcycpKTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG5jYXB0dXJlSFRUUHNHbG9iYWwocmVxdWlyZSgnaHR0cCcpKTtcblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIHRyaWdnZXJzIG9uIGEgZml4ZWQgc2NoZWR1bGUgYW5kIHJlYWRzIGEgc3RyZWFtIG9mIGNoYW5nZXMgZnJvbSBucG1qcyBjb3VjaGRiIF9jaGFuZ2VzIGVuZHBvaW50LlxuICogVXBvbiBpbnZvY2F0aW9uIHRoZSBmdW5jdGlvbiBzdGFydHMgcmVhZGluZyBmcm9tIGEgc2VxdWVuY2Ugc3RvcmVkIGluIGFuIHMzIG9iamVjdCAtIHRoZSBgbWFya2VyYC5cbiAqIElmIHRoZSBtYXJrZXIgZmFpbHMgdG8gbG9hZCAob3IgZG8gbm90IGV4aXN0KSwgdGhlIHN0cmVhbSB3aWxsIHN0YXJ0IGZyb20gYG5vd2AgLSB0aGUgbGF0ZXN0IGNoYW5nZS5cbiAqIEZvciBlYWNoIGNoYW5nZTpcbiAqICAtIHRoZSBwYWNrYWdlIHZlcnNpb24gdGFyYmFsbCB3aWxsIGJlIGNvcGllZCBmcm9tIHRoZSBucG0gcmVnaXN0cnkgdG8gYSBzdGF0aW5nIGJ1Y2tldC5cbiAqICAtIGEgbWVzc2FnZSB3aWxsIGJlIHNlbnQgdG8gYW4gc3FzIHF1ZXVlXG4gKiBucG0gcmVnaXN0cnkgQVBJIGRvY3M6IGh0dHBzOi8vZ2l0aHViLmNvbS9ucG0vcmVnaXN0cnkvYmxvYi9tYXN0ZXIvZG9jcy9SRUdJU1RSWS1BUEkubWRcbiAqIEBwYXJhbSBjb250ZXh0IGEgTGFtYmRhIGV4ZWN1dGlvbiBjb250ZXh0XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVyKGV2ZW50OiBTY2hlZHVsZWRFdmVudCwgY29udGV4dDogQ29udGV4dCkge1xuICBjb25zb2xlLmxvZyhgRXZlbnQ6ICR7SlNPTi5zdHJpbmdpZnkoZXZlbnQsIG51bGwsIDIpfWApO1xuXG4gIGNvbnN0IHN0YWdpbmdCdWNrZXQgPSByZXF1aXJlRW52KCdCVUNLRVRfTkFNRScpO1xuICBjb25zdCBzdGFnaW5nRnVuY3Rpb24gPSByZXF1aXJlRW52KCdGVU5DVElPTl9OQU1FJyk7XG5cbiAgY29uc3QgZGVueUxpc3QgPSBhd2FpdCBEZW55TGlzdENsaWVudC5uZXdDbGllbnQoKTtcbiAgY29uc3QgbGljZW5zZUxpc3QgPSBhd2FpdCBMaWNlbnNlTGlzdENsaWVudC5uZXdDbGllbnQoKTtcblxuICBjb25zdCBucG0gPSBuZXcgQ291Y2hDaGFuZ2VzKE5QTV9SRVBMSUNBX1JFR0lTVFJZX1VSTCwgJ3JlZ2lzdHJ5L19jaGFuZ2VzJyk7XG5cbiAgY29uc3QgeyBtYXJrZXI6IGluaXRpYWxNYXJrZXIsIGtub3duVmVyc2lvbnMgfSA9XG4gICAgYXdhaXQgbG9hZExhc3RUcmFuc2FjdGlvbk1hcmtlcihzdGFnaW5nQnVja2V0LCBucG0pO1xuXG4gIC8vIFRoZSBsYXN0IHdyaXR0ZW4gbWFya2VyIHNlcSBpZC5cbiAgbGV0IHVwZGF0ZWRNYXJrZXIgPSBpbml0aWFsTWFya2VyO1xuXG4gIC8vIFRoZSBzbG93ZXN0IGJhdGNoIHByb2Nlc3NpbmcgdGltZSBzbyBmYXIgKHN0YXJ0cyBhdCAzMCBzZWNvbmRzKS4gVGhpcyBpcyBob3cgbXVjaCB0aW1lIHNob3VsZFxuICAvLyBiZSBsZWZ0IGJlZm9yZSB0aW1lb3V0IGlmIGEgbmV3IGJhdGNoIGlzIHRvIGJlIGZldGNoZWQuXG4gIGxldCBtYXhCYXRjaFByb2Nlc3NpbmdUaW1lID0gMzBfMDAwO1xuICAvLyBXaGV0aGVyIHdlIHNob3VsZCBjb250aW51ZSByZWFkaW5nIG1vcmUgaXRlbXMgb3Igbm90Li4uIFRoaXMgaXMgc2V0IHRvIGZhbHNlIHdoZW4gdGhlIGN1cnJlbnRcbiAgLy8gbGF0ZXN0IGNoYW5nZSBpcyByZWFjaGVkIChpLmU6IG5leHQgcGFnZSBvZiBjaGFuZ2VzIGlzIGVtcHR5KS5cbiAgbGV0IHNob3VsZENvbnRpbnVlID0gdHJ1ZTtcblxuICBkbyB7XG4gICAgYXdhaXQgbWV0cmljU2NvcGUoKG1ldHJpY3MpID0+IGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdQb2xsaW5nIGNoYW5nZXMgZnJvbSBucG0gcmVwbGljYScpO1xuICAgICAgY29uc3QgY2hhbmdlcyA9IGF3YWl0IG5wbS5jaGFuZ2VzKHVwZGF0ZWRNYXJrZXIpO1xuXG4gICAgICAvLyBDbGVhciBhdXRvbWF0aWNhbGx5IHNldCBkaW1lbnNpb25zIC0gd2UgZG9uJ3QgbmVlZCB0aGVtIChzZWUgaHR0cHM6Ly9naXRodWIuY29tL2F3c2xhYnMvYXdzLWVtYmVkZGVkLW1ldHJpY3Mtbm9kZS9pc3N1ZXMvNzMpXG4gICAgICBtZXRyaWNzLnNldERpbWVuc2lvbnMoe30pO1xuXG4gICAgICAvLyBSZWNvcmRpbmcgY3VycmVudCBzZXEgcmFuZ2UgYW5kIHVwZGF0aW5nIHRoZSBgdXBkYXRlZE1hcmtlcmAuXG4gICAgICBtZXRyaWNzLnNldFByb3BlcnR5KCdTdGFydFNlcScsIHVwZGF0ZWRNYXJrZXIpO1xuICAgICAgdXBkYXRlZE1hcmtlciA9IGNoYW5nZXMubGFzdF9zZXE7XG4gICAgICBtZXRyaWNzLnNldFByb3BlcnR5KCdFbmRTZXEnLCB1cGRhdGVkTWFya2VyKTtcblxuICAgICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgYmF0Y2ggPSBjaGFuZ2VzLnJlc3VsdHMgYXMgcmVhZG9ubHkgQ2hhbmdlW107XG5cbiAgICAgICAgLy8gVGhlIG1vc3QgcmVjZW50IFwibW9kaWZpZWRcIiB0aW1lc3RhbXAgb2JzZXJ2ZWQgaW4gdGhlIGJhdGNoLlxuICAgICAgICBsZXQgbGFzdE1vZGlmaWVkOiBEYXRlIHwgdW5kZWZpbmVkO1xuICAgICAgICAvLyBFbWl0IG5wbS5qcyByZXBsaWNhdGlvbiBsYWdcbiAgICAgICAgZm9yIChjb25zdCB7IGRvYyB9IG9mIGJhdGNoKSB7XG4gICAgICAgICAgaWYgKGRvYz8udGltZT8ubW9kaWZpZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IG1vZGlmaWVkID0gbmV3IERhdGUoZG9jLnRpbWUubW9kaWZpZWQpO1xuICAgICAgICAgICAgbWV0cmljcy5wdXRNZXRyaWMoXG4gICAgICAgICAgICAgIE1ldHJpY05hbWUuTlBNSlNfQ0hBTkdFX0FHRSxcbiAgICAgICAgICAgICAgc3RhcnRUaW1lIC0gbW9kaWZpZWQuZ2V0VGltZSgpLFxuICAgICAgICAgICAgICBVbml0Lk1pbGxpc2Vjb25kc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChsYXN0TW9kaWZpZWQgPT0gbnVsbCB8fCBsYXN0TW9kaWZpZWQgPCBtb2RpZmllZCkge1xuICAgICAgICAgICAgICBsYXN0TW9kaWZpZWQgPSBtb2RpZmllZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZyhgUmVjZWl2ZWQgYSBiYXRjaCBvZiAke2JhdGNoLmxlbmd0aH0gZWxlbWVudChzKWApO1xuICAgICAgICBtZXRyaWNzLnB1dE1ldHJpYyhNZXRyaWNOYW1lLkNIQU5HRV9DT1VOVCwgYmF0Y2gubGVuZ3RoLCBVbml0LkNvdW50KTtcblxuICAgICAgICBpZiAobGFzdE1vZGlmaWVkICYmIGxhc3RNb2RpZmllZCA8IERBV05fT0ZfQ09OU1RSVUNUUykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgYFNraXBwaW5nIGJhdGNoIGFzIHRoZSBsYXRlc3QgbW9kaWZpY2F0aW9uIGlzICR7bGFzdE1vZGlmaWVkfSwgd2hpY2ggaXMgcHJlLUNvbnN0cnVjdHNgXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChiYXRjaC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnUmVjZWl2ZWQgMCBjaGFuZ2VzLCBjYXVnaHQgdXAgdG8gXCJub3dcIiwgZXhpdGluZy4uLicpO1xuICAgICAgICAgIHNob3VsZENvbnRpbnVlID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gT2J0YWluIHRoZSBtb2RpZmllZCBwYWNrYWdlIHZlcnNpb24gZnJvbSB0aGUgdXBkYXRlIGV2ZW50LCBhbmQgZmlsdGVyXG4gICAgICAgICAgLy8gb3V0IHBhY2thZ2VzIHRoYXQgYXJlIG5vdCBvZiBpbnRlcmVzdCB0byB1cyAobm90IGNvbnN0cnVjdCBsaWJyYXJpZXMpLlxuICAgICAgICAgIGNvbnN0IHZlcnNpb25JbmZvcyA9IGdldFJlbGV2YW50VmVyc2lvbkluZm9zKFxuICAgICAgICAgICAgYmF0Y2gsXG4gICAgICAgICAgICBtZXRyaWNzLFxuICAgICAgICAgICAgZGVueUxpc3QsXG4gICAgICAgICAgICBsaWNlbnNlTGlzdCxcbiAgICAgICAgICAgIGtub3duVmVyc2lvbnNcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgYElkZW50aWZpZWQgJHt2ZXJzaW9uSW5mb3MubGVuZ3RofSByZWxldmFudCBwYWNrYWdlIHZlcnNpb24gdXBkYXRlKHMpYFxuICAgICAgICAgICk7XG4gICAgICAgICAgbWV0cmljcy5wdXRNZXRyaWMoXG4gICAgICAgICAgICBNZXRyaWNOYW1lLlJFTEVWQU5UX1BBQ0tBR0VfVkVSU0lPTlMsXG4gICAgICAgICAgICB2ZXJzaW9uSW5mb3MubGVuZ3RoLFxuICAgICAgICAgICAgVW5pdC5Db3VudFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICAvLyBQcm9jZXNzIGFsbCByZW1haW5pbmcgdXBkYXRlc1xuICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgdmVyc2lvbkluZm9zLm1hcChhc3luYyAoeyBpbmZvcywgbW9kaWZpZWQsIHNlcSB9KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGludm9rZUFyZ3M6IFBhY2thZ2VWZXJzaW9uID0ge1xuICAgICAgICAgICAgICAgIGludGVncml0eTogaW5mb3MuZGlzdC5zaGFzdW0sXG4gICAgICAgICAgICAgICAgbW9kaWZpZWQ6IG1vZGlmaWVkLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgbmFtZTogaW5mb3MubmFtZSxcbiAgICAgICAgICAgICAgICBzZXE6IHNlcT8udG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICB0YXJiYWxsVXJsOiBpbmZvcy5kaXN0LnRhcmJhbGwsXG4gICAgICAgICAgICAgICAgdmVyc2lvbjogaW5mb3MudmVyc2lvbixcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgLy8gXCJGaXJlLWFuZC1mb3JnZXRcIiBpbnZvY2F0aW9uIGhlcmUuXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBTZW5kaW5nICR7aW52b2tlQXJncy50YXJiYWxsVXJsfSBmb3Igc3RhZ2luZ2ApO1xuICAgICAgICAgICAgICBhd2FpdCBMQU1CREFfQ0xJRU5ULnNlbmQoXG4gICAgICAgICAgICAgICAgbmV3IEludm9rZUNvbW1hbmQoe1xuICAgICAgICAgICAgICAgICAgRnVuY3Rpb25OYW1lOiBzdGFnaW5nRnVuY3Rpb24sXG4gICAgICAgICAgICAgICAgICBJbnZvY2F0aW9uVHlwZTogJ0V2ZW50JyxcbiAgICAgICAgICAgICAgICAgIFBheWxvYWQ6IEJ1ZmZlci5mcm9tKEpTT04uc3RyaW5naWZ5KGludm9rZUFyZ3MpKSxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAvLyBSZWNvcmQgdGhhdCB0aGlzIGlzIG5vdyBhIFwia25vd25cIiB2ZXJzaW9uIChubyBuZWVkIHRvIHJlLWRpc2NvdmVyKVxuICAgICAgICAgICAgICBrbm93blZlcnNpb25zLnNldChgJHtpbmZvcy5uYW1lfUAke2luZm9zLnZlcnNpb259YCwgbW9kaWZpZWQpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVXBkYXRpbmcgdGhlIFMzIHN0b3JlZCBtYXJrZXIgd2l0aCB0aGUgbmV3IHNlcSBpZCBhcyBjb21tdW5pY2F0ZWQgYnkgbmFuby5cbiAgICAgICAgYXdhaXQgc2F2ZUxhc3RUcmFuc2FjdGlvbk1hcmtlcihcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIHN0YWdpbmdCdWNrZXQsXG4gICAgICAgICAgdXBkYXRlZE1hcmtlcixcbiAgICAgICAgICBrbm93blZlcnNpb25zXG4gICAgICAgICk7XG4gICAgICAgIGNvbnNvbGUubG9nKCdTdWNjZXNzZnVsbHkgdXBkYXRlZCBtYXJrZXInKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIC8vIE1hcmtlcnMgbWF5IG5vdCBhbHdheXMgYmUgbnVtZXJpYyAoYnV0IGluIHByYWN0aWNlIHRoZXkgYXJlIG5vdyksIHNvIHdlIHByb3RlY3QgYWdhaW5zdCB0aGF0Li4uXG4gICAgICAgIGlmICh0eXBlb2YgdXBkYXRlZE1hcmtlciA9PT0gJ251bWJlcicgfHwgL15cXGQrJC8udGVzdCh1cGRhdGVkTWFya2VyKSkge1xuICAgICAgICAgIG1ldHJpY3MucHV0TWV0cmljKFxuICAgICAgICAgICAgTWV0cmljTmFtZS5MQVNUX1NFUSxcbiAgICAgICAgICAgIHR5cGVvZiB1cGRhdGVkTWFya2VyID09PSAnbnVtYmVyJ1xuICAgICAgICAgICAgICA/IHVwZGF0ZWRNYXJrZXJcbiAgICAgICAgICAgICAgOiBwYXJzZUludCh1cGRhdGVkTWFya2VyKSxcbiAgICAgICAgICAgIFVuaXQuTm9uZVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBtZXRyaWNzLnB1dE1ldHJpYyhcbiAgICAgICAgICBNZXRyaWNOYW1lLkJBVENIX1BST0NFU1NJTkdfVElNRSxcbiAgICAgICAgICBEYXRlLm5vdygpIC0gc3RhcnRUaW1lLFxuICAgICAgICAgIFVuaXQuTWlsbGlzZWNvbmRzXG4gICAgICAgICk7XG4gICAgICAgIG1ldHJpY3MucHV0TWV0cmljKFxuICAgICAgICAgIE1ldHJpY05hbWUuUkVNQUlOSU5HX1RJTUUsXG4gICAgICAgICAgY29udGV4dC5nZXRSZW1haW5pbmdUaW1lSW5NaWxsaXMoKSxcbiAgICAgICAgICBVbml0Lk1pbGxpc2Vjb25kc1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pKCk7XG4gIH0gd2hpbGUgKFxuICAgIHNob3VsZENvbnRpbnVlICYmXG4gICAgY29udGV4dC5nZXRSZW1haW5pbmdUaW1lSW5NaWxsaXMoKSA+PSBtYXhCYXRjaFByb2Nlc3NpbmdUaW1lXG4gICk7XG5cbiAgY29uc29sZS5sb2coJ0FsbCBkb25lIGhlcmUsIHdlIGhhdmUgc3VjY2VzcyEnKTtcblxuICByZXR1cm4geyBpbml0aWFsTWFya2VyLCB1cGRhdGVkTWFya2VyIH07XG59XG5cbi8vI3JlZ2lvbiBMYXN0IHRyYW5zYWN0aW9uIG1hcmtlclxuLyoqXG4gKiBMb2FkcyB0aGUgbGFzdCB0cmFuc2FjdGlvbiBtYXJrZXIgZnJvbSBTMy5cbiAqXG4gKiBAcGFyYW0gcmVnaXN0cnkgYSBOYW5vIGRhdGFiYXNlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIE5wbWpzLmNvbSBDb3VjaERCIGluc3RhbmNlLlxuICpcbiAqIEByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgbGFzdCB0cmFuc2FjdGlvbiBtYXJrZXIgYW5kIHRoZSBtYXAgb2YgcGFja2FnZSBuYW1lcyArIHZlcnNpb25zIHRvIHRoZSBsYXN0IG1vZGlmaWNhdGlvblxuICogICAgICAgICAgb2YgdGhhdCBwYWNrYWdlIHZlcnNpb24gdGhhdCB3YXMgcHJvY2Vzc2VkLlxuICovXG5hc3luYyBmdW5jdGlvbiBsb2FkTGFzdFRyYW5zYWN0aW9uTWFya2VyKFxuICBzdGFnaW5nQnVja2V0OiBzdHJpbmcsXG4gIHJlZ2lzdHJ5OiBDb3VjaENoYW5nZXNcbik6IFByb21pc2U8eyBtYXJrZXI6IHN0cmluZyB8IG51bWJlcjsga25vd25WZXJzaW9uczogTWFwPHN0cmluZywgRGF0ZT4gfT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgUzNfQ0xJRU5ULnNlbmQoXG4gICAgICBuZXcgR2V0T2JqZWN0Q29tbWFuZCh7XG4gICAgICAgIEJ1Y2tldDogc3RhZ2luZ0J1Y2tldCxcbiAgICAgICAgS2V5OiBNQVJLRVJfRklMRV9OQU1FLFxuICAgICAgfSlcbiAgICApO1xuICAgIGlmICghcmVzcG9uc2UuQm9keSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUcmFuc2FjdGlvbiBNYXJrZXIgUmVzcG9uc2UgQm9keSBpcyBlbXB0eScpO1xuICAgIH1cbiAgICBjb25zdCBib2R5ID0gYXdhaXQgZGVjb21wcmVzc0NvbnRlbnQoXG4gICAgICByZXNwb25zZS5Cb2R5LFxuICAgICAgcmVzcG9uc2UuQ29udGVudEVuY29kaW5nXG4gICAgKTtcbiAgICBsZXQgZGF0YSA9IEpTT04ucGFyc2UoYm9keSwgKGtleSwgdmFsdWUpID0+IHtcbiAgICAgIGlmIChrZXkgIT09ICdrbm93blZlcnNpb25zJykge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICBjb25zdCBtYXAgPSBuZXcgTWFwPHN0cmluZywgRGF0ZT4oKTtcbiAgICAgIGZvciAoY29uc3QgW3BrZ1ZlcnNpb24sIGlzb10gb2YgT2JqZWN0LmVudHJpZXModmFsdWUpKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaXNvID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgaXNvID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIG1hcC5zZXQocGtnVmVyc2lvbiwgbmV3IERhdGUoaXNvKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihgSWdub3JpbmcgaW52YWxpZCBlbnRyeTogJHtwa2dWZXJzaW9ufSA9PiAke2lzb31gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG1hcDtcbiAgICB9KTtcbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdudW1iZXInKSB7XG4gICAgICBkYXRhID0geyBtYXJrZXI6IGRhdGEudG9GaXhlZCgpLCBrbm93blZlcnNpb25zOiBuZXcgTWFwKCkgfTtcbiAgICB9XG4gICAgY29uc29sZS5sb2coYFJlYWQgbGFzdCB0cmFuc2FjdGlvbiBtYXJrZXI6ICR7ZGF0YS5tYXJrZXJ9YCk7XG5cbiAgICBjb25zdCBkYlVwZGF0ZVNlcSA9IChhd2FpdCByZWdpc3RyeS5pbmZvKCkpLnVwZGF0ZV9zZXE7XG4gICAgaWYgKGRiVXBkYXRlU2VxIDwgZGF0YS5tYXJrZXIpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYEN1cnJlbnQgREIgdXBkYXRlX3NlcSAoJHtkYlVwZGF0ZVNlcX0pIGlzIGxvd2VyIHRoYW4gbWFya2VyIChDb3VjaERCIGluc3RhbmNlIHdhcyBsaWtlbHkgcmVwbGFjZWQpLCByZXNldHRpbmcgdG8gMCFgXG4gICAgICApO1xuICAgICAgcmV0dXJuIHsgbWFya2VyOiAnMCcsIGtub3duVmVyc2lvbnM6IGRhdGEua25vd25WZXJzaW9uIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBOb1N1Y2hLZXkgfHwgZXJyb3IubmFtZSA9PT0gJ05vU3VjaEtleScpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYE1hcmtlciBvYmplY3QgKHMzOi8vJHtzdGFnaW5nQnVja2V0fS8ke01BUktFUl9GSUxFX05BTUV9KSBkb2VzIG5vdCBleGlzdCwgc3RhcnRpbmcgZnJvbSBzY3JhdGNoYFxuICAgICAgKTtcbiAgICAgIHJldHVybiB7IG1hcmtlcjogJzAnLCBrbm93blZlcnNpb25zOiBuZXcgTWFwKCkgfTtcbiAgICB9XG4gICAgLy8gcmUtdGhyb3cgdW5leHBlY3RlZCBlcnJvcnNcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuXG4vKipcbiAqIFVwZGF0ZXMgdGhlIGxhc3QgdHJhbnNhY3Rpb24gbWFya2VyIGluIFMzLlxuICpcbiAqIEBwYXJhbSBtYXJrZXIgdGhlIGxhc3QgdHJhbnNhY3Rpb24gbWFya2VyIHZhbHVlXG4gKiBAcGFyYW0ga25vd25WZXJzaW9ucyB0aGUgbWFwIG9mIHBhY2thZ2UgbmFtZSArIHZlcnNpb24gdG8gbGFzdCBtb2RpZmllZCB0aW1lc3RhbXAgb2YgcGFja2FnZXMgdGhhdCBoYXZlIGJlZW4gcHJvY2Vzc2VkLlxuICovXG5hc3luYyBmdW5jdGlvbiBzYXZlTGFzdFRyYW5zYWN0aW9uTWFya2VyKFxuICBjb250ZXh0OiBDb250ZXh0LFxuICBzdGFnaW5nQnVja2V0OiBzdHJpbmcsXG4gIG1hcmtlcjogc3RyaW5nIHwgbnVtYmVyLFxuICBrbm93blZlcnNpb25zOiBNYXA8c3RyaW5nLCBEYXRlPlxuKSB7XG4gIGNvbnNvbGUubG9nKGBVcGRhdGluZyBsYXN0IHRyYW5zYWN0aW9uIG1hcmtlciB0byAke21hcmtlcn1gKTtcbiAgcmV0dXJuIHB1dE9iamVjdChcbiAgICBjb250ZXh0LFxuICAgIHN0YWdpbmdCdWNrZXQsXG4gICAgTUFSS0VSX0ZJTEVfTkFNRSxcbiAgICBKU09OLnN0cmluZ2lmeShcbiAgICAgIHsgbWFya2VyLCBrbm93blZlcnNpb25zIH0sXG4gICAgICAoXywgdmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICAgIHJldHVybiB2YWx1ZS50b0lTT1N0cmluZygpO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgTWFwKSB7XG4gICAgICAgICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyh2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgMlxuICAgICksXG4gICAge1xuICAgICAgQ29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICB9XG4gICk7XG59XG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIEFzeW5jaHJvbm91cyBQcmltaXRpdmVzXG4vKipcbiAqIFB1dHMgYW4gb2JqZWN0IGluIHRoZSBzdGFnaW5nIGJ1Y2tldCwgd2l0aCBzdGFuZGFyZGl6ZWQgb2JqZWN0IG1ldGFkYXRhLlxuICpcbiAqIEBwYXJhbSBrZXkgIHRoZSBrZXkgZm9yIHRoZSBvYmplY3QgdG8gYmUgcHV0LlxuICogQHBhcmFtIGJvZHkgdGhlIGJvZHkgb2YgdGhlIG9iamVjdCB0byBiZSBwdXQuXG4gKiBAcGFyYW0gb3B0cyBhbnkgb3RoZXIgb3B0aW9ucyB0byB1c2Ugd2hlbiBzZW5kaW5nIHRoZSBTMyByZXF1ZXN0LlxuICpcbiAqIEByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIFMzIHJlcXVlc3QuXG4gKi9cbmZ1bmN0aW9uIHB1dE9iamVjdChcbiAgY29udGV4dDogQ29udGV4dCxcbiAgYnVja2V0OiBzdHJpbmcsXG4gIGtleTogc3RyaW5nLFxuICBib2R5OiBTdHJlYW1pbmdCbG9iUGF5bG9hZElucHV0VHlwZXMsXG4gIG9wdHM6IE9taXQ8UHV0T2JqZWN0Q29tbWFuZElucHV0LCAnQnVja2V0JyB8ICdLZXknIHwgJ0JvZHknPiA9IHt9XG4pIHtcbiAgcmV0dXJuIFMzX0NMSUVOVC5zZW5kKFxuICAgIG5ldyBQdXRPYmplY3RDb21tYW5kKHtcbiAgICAgIEJ1Y2tldDogYnVja2V0LFxuICAgICAgS2V5OiBrZXksXG4gICAgICBCb2R5OiBib2R5LFxuICAgICAgTWV0YWRhdGE6IHtcbiAgICAgICAgJ0xhbWJkYS1Mb2ctR3JvdXAnOiBjb250ZXh0LmxvZ0dyb3VwTmFtZSxcbiAgICAgICAgJ0xhbWJkYS1Mb2ctU3RyZWFtJzogY29udGV4dC5sb2dTdHJlYW1OYW1lLFxuICAgICAgICAnTGFtYmRhLVJ1bi1JZCc6IGNvbnRleHQuYXdzUmVxdWVzdElkLFxuICAgICAgICAuLi5vcHRzLk1ldGFkYXRhLFxuICAgICAgfSxcbiAgICAgIC4uLm9wdHMsXG4gICAgfSlcbiAgKTtcbn1cbi8vI2VuZHJlZ2lvblxuXG4vKipcbiAqIE9idGFpbnMgdGhlIGBWZXJzaW9uSW5mb2AgY29ycmVzcG9uZGluZyB0byB0aGUgbW9kaWZpZWQgdmVyc2lvbihzKSBpbiB0aGVcbiAqIHByb3ZpZGVkIGBDaGFuZ2VgIG9iamVjdHMsIGVuc3VyZXMgdGhleSBhcmUgcmVsZXZhbnQgKGNvbnN0cnVjdCBsaWJyYXJpZXMpLFxuICogYW5kIHJldHVybnMgdGhvc2Ugb25seS5cbiAqXG4gKiBAcGFyYW0gY2hhbmdlcyB0aGUgY2hhbmdlcyB0byBiZSBwcm9jZXNzZWQuXG4gKiBAcGFyYW0gbWV0cmljcyB0aGUgbWV0cmljcyBsb2dnZXIgdG8gdXNlLlxuICogQHBhcmFtIGRlbnlMaXN0IGRlbnkgbGlzdCBjbGllbnRcbiAqXG4gKiBAcmV0dXJucyBhIGxpc3Qgb2YgYFZlcnNpb25JbmZvYCBvYmplY3RzXG4gKi9cbmZ1bmN0aW9uIGdldFJlbGV2YW50VmVyc2lvbkluZm9zKFxuICBjaGFuZ2VzOiByZWFkb25seSBDaGFuZ2VbXSxcbiAgbWV0cmljczogTWV0cmljc0xvZ2dlcixcbiAgZGVueUxpc3Q6IERlbnlMaXN0Q2xpZW50LFxuICBsaWNlbnNlTGlzdDogTGljZW5zZUxpc3RDbGllbnQsXG4gIGtub3duVmVyc2lvbnM6IE1hcDxzdHJpbmcsIERhdGU+XG4pOiByZWFkb25seSBVcGRhdGVkVmVyc2lvbltdIHtcbiAgY29uc3QgcmVzdWx0ID0gbmV3IEFycmF5PFVwZGF0ZWRWZXJzaW9uPigpO1xuXG4gIGZvciAoY29uc3QgY2hhbmdlIG9mIGNoYW5nZXMpIHtcbiAgICAvLyBGaWx0ZXIgb3V0IGFsbCBlbGVtZW50cyB0aGF0IGRvbid0IGhhdmUgYSBcIm5hbWVcIiBpbiB0aGUgZG9jdW1lbnQsIGFzXG4gICAgLy8gdGhlc2UgYXJlIHNjaGVtYXMsIHdoaWNoIGFyZSBub3QgcmVsZXZhbnQgdG8gb3VyIGJ1c2luZXNzIGhlcmUuXG4gICAgaWYgKGNoYW5nZS5kb2MubmFtZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBgWyR7Y2hhbmdlLnNlcX1dIENoYW5nZWQgZG9jdW1lbnQgY29udGFpbnMgbm8gJ25hbWUnOiAke2NoYW5nZS5pZH1gXG4gICAgICApO1xuICAgICAgbWV0cmljcy5wdXRNZXRyaWMoTWV0cmljTmFtZS5VTlBST0NFU1NBQkxFX0VOVElUWSwgMSwgVW5pdC5Db3VudCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBUaGUgbm9ybWFsaXplIGZ1bmN0aW9uIGNoYW5nZSB0aGUgb2JqZWN0IGluIHBsYWNlLCBpZiB0aGUgZG9jIG9iamVjdCBpcyBpbnZhbGlkIGl0IHdpbGwgcmV0dXJuIHVuZGVmaW5lZFxuICAgIGlmIChub3JtYWxpemVOUE1NZXRhZGF0YShjaGFuZ2UuZG9jKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBgWyR7Y2hhbmdlLnNlcX1dIENoYW5nZWQgZG9jdW1lbnQgaW52YWxpZCwgbnBtIG5vcm1hbGl6ZSByZXR1cm5lZCB1bmRlZmluZWQ6ICR7Y2hhbmdlLmlkfWBcbiAgICAgICk7XG4gICAgICBtZXRyaWNzLnB1dE1ldHJpYyhNZXRyaWNOYW1lLlVOUFJPQ0VTU0FCTEVfRU5USVRZLCAxLCBVbml0LkNvdW50KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIFNvbWV0aW1lcywgdGhlcmUgYXJlIG5vIHZlcnNpb25zIGluIHRoZSBkb2N1bWVudC4gV2Ugc2tpcCB0aG9zZS5cbiAgICBpZiAoY2hhbmdlLmRvYy52ZXJzaW9ucyA9PSBudWxsKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBgWyR7Y2hhbmdlLnNlcX1dIENoYW5nZWQgZG9jdW1lbnQgY29udGFpbnMgbm8gJ3ZlcnNpb25zJzogJHtjaGFuZ2UuaWR9YFxuICAgICAgKTtcbiAgICAgIG1ldHJpY3MucHV0TWV0cmljKE1ldHJpY05hbWUuVU5QUk9DRVNTQUJMRV9FTlRJVFksIDEsIFVuaXQuQ291bnQpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8gU29tZXRpbWVzLCB0aGVyZSBpcyBubyAndGltZScgZW50cnkgaW4gdGhlIGRvY3VtZW50LiBXZSBza2lwIHRob3NlLlxuICAgIGlmIChjaGFuZ2UuZG9jLnRpbWUgPT0gbnVsbCkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFske2NoYW5nZS5zZXF9XSBDaGFuZ2VkIGRvY3VtZW50IGNvbnRhaW5zIG5vICd0aW1lJzogJHtjaGFuZ2UuaWR9YFxuICAgICAgKTtcbiAgICAgIG1ldHJpY3MucHV0TWV0cmljKE1ldHJpY05hbWUuVU5QUk9DRVNTQUJMRV9FTlRJVFksIDEsIFVuaXQuQ291bnQpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8gR2V0IHRoZSBsYXN0IG1vZGlmaWNhdGlvbiBkYXRlIGZyb20gdGhlIGNoYW5nZVxuICAgIGNvbnN0IHBhY2thZ2VWZXJzaW9uVXBkYXRlcyA9IE9iamVjdC5lbnRyaWVzKGNoYW5nZS5kb2MudGltZSlcbiAgICAgIC8vIElnbm9yZSB0aGUgXCJjcmVhdGVkXCIgYW5kIFwibW9kaWZpZWRcIiBrZXlzIGhlcmVcbiAgICAgIC5maWx0ZXIoKFtrZXldKSA9PiBrZXkgIT09ICdjcmVhdGVkJyAmJiBrZXkgIT09ICdtb2RpZmllZCcpXG4gICAgICAvLyBQYXJzZSBhbGwgdGhlIGRhdGVzIHRvIGVuc3VyZSB0aGV5IGFyZSBjb21wYXJhYmxlXG4gICAgICAubWFwKChbdmVyc2lvbiwgaXNvRGF0ZV0pID0+IFt2ZXJzaW9uLCBuZXcgRGF0ZShpc29EYXRlKV0gYXMgY29uc3QpO1xuICAgIG1ldHJpY3MucHV0TWV0cmljKFxuICAgICAgTWV0cmljTmFtZS5QQUNLQUdFX1ZFUlNJT05fQ09VTlQsXG4gICAgICBwYWNrYWdlVmVyc2lvblVwZGF0ZXMubGVuZ3RoLFxuICAgICAgVW5pdC5Db3VudFxuICAgICk7XG5cbiAgICBmb3IgKGNvbnN0IFt2ZXJzaW9uLCBtb2RpZmllZF0gb2YgcGFja2FnZVZlcnNpb25VcGRhdGVzKSB7XG4gICAgICBjb25zdCBrbm93bktleSA9IGAke2NoYW5nZS5kb2MubmFtZX1AJHt2ZXJzaW9ufWA7XG4gICAgICBjb25zdCBrbm93biA9IGtub3duVmVyc2lvbnMuZ2V0KGtub3duS2V5KTtcbiAgICAgIGlmIChrbm93biA9PSBudWxsIHx8IGtub3duIDwgbW9kaWZpZWQpIHtcbiAgICAgICAgY29uc3QgaW5mb3MgPSBjaGFuZ2UuZG9jLnZlcnNpb25zW3ZlcnNpb25dO1xuICAgICAgICBpZiAoaW5mb3MgPT0gbnVsbCkge1xuICAgICAgICAgIC8vIENvdWxkIGJlIHRoZSB2ZXJzaW9uIGluIHF1ZXN0aW9uIHdhcyB1bi1wdWJsaXNoZWQuXG4gICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICBgWyR7Y2hhbmdlLnNlcX1dIENvdWxkIG5vdCBmaW5kIGluZm8gZm9yIFwiJHtjaGFuZ2UuZG9jLm5hbWV9QCR7dmVyc2lvbn1cIi4gV2FzIGl0IHVuLXB1Ymxpc2hlZD9gXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0NvbnN0cnVjdExpYnJhcnkoaW5mb3MpKSB7XG4gICAgICAgICAgLy8gc2tpcCBpZiB0aGlzIHBhY2thZ2UgaXMgZGVuaWVkXG4gICAgICAgICAgY29uc3QgZGVuaWVkID0gZGVueUxpc3QubG9va3VwKGluZm9zLm5hbWUsIGluZm9zLnZlcnNpb24pO1xuICAgICAgICAgIGlmIChkZW5pZWQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICBgWyR7Y2hhbmdlLnNlcX1dIFBhY2thZ2UgZGVuaWVkOiAke0pTT04uc3RyaW5naWZ5KGRlbmllZCl9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGtub3duVmVyc2lvbnMuc2V0KGtub3duS2V5LCBtb2RpZmllZCk7XG4gICAgICAgICAgICBtZXRyaWNzLnB1dE1ldHJpYyhNZXRyaWNOYW1lLkRFTllfTElTVEVEX0NPVU5ULCAxLCBVbml0LkNvdW50KTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1ldHJpY3MucHV0TWV0cmljKFxuICAgICAgICAgICAgTWV0cmljTmFtZS5QQUNLQUdFX1ZFUlNJT05fQUdFLFxuICAgICAgICAgICAgRGF0ZS5ub3coKSAtIG1vZGlmaWVkLmdldFRpbWUoKSxcbiAgICAgICAgICAgIFVuaXQuTWlsbGlzZWNvbmRzXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBpc0VsaWdpYmxlID1cbiAgICAgICAgICAgIGxpY2Vuc2VMaXN0Lmxvb2t1cChpbmZvcy5saWNlbnNlID8/ICdVTkxJQ0VOU0VEJykgIT0gbnVsbDtcbiAgICAgICAgICBtZXRyaWNzLnB1dE1ldHJpYyhcbiAgICAgICAgICAgIE1ldHJpY05hbWUuSU5FTElHSUJMRV9MSUNFTlNFLFxuICAgICAgICAgICAgaXNFbGlnaWJsZSA/IDAgOiAxLFxuICAgICAgICAgICAgVW5pdC5Db3VudFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKGlzRWxpZ2libGUpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHsgaW5mb3MsIG1vZGlmaWVkLCBzZXE6IGNoYW5nZS5zZXEgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICBgWyR7Y2hhbmdlLnNlcX1dIFBhY2thZ2UgXCIke1xuICAgICAgICAgICAgICAgIGNoYW5nZS5kb2MubmFtZVxuICAgICAgICAgICAgICB9QCR7dmVyc2lvbn1cIiBkb2VzIG5vdCB1c2UgYWxsb3ctbGlzdGVkIGxpY2Vuc2U6ICR7XG4gICAgICAgICAgICAgICAgaW5mb3MubGljZW5zZSA/PyAnVU5MSUNFTlNFRCdcbiAgICAgICAgICAgICAgfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBrbm93blZlcnNpb25zLnNldChrbm93bktleSwgbW9kaWZpZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBFbHNlIHRoaXMgaXMgbm90IGEgY29uc3RydWN0IGxpYnJhcnksIHNvIHdlJ2xsIGp1c3QgaWdub3JlIGl0Li4uXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG5cbiAgLyoqXG4gICAqIFRoaXMgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgcGFja2FnZSBpcyBcImludGVyZXN0aW5nXCIgdG8gQ29uc3RydWN0SHViIG9yIG5vdC4gVGhpcyBpcyByZWxhdGVkIGJ1dFxuICAgKiBub3QgbmVjZXNzYXJpbHkgaWRlbnRpY2FsIHRvIHRoZSBsb2dpYyBpbiB0aGUgaW5nZXN0aW9uIHByb2Nlc3MgdGhhdCBhbm5vdGF0ZXMgcGFja2FnZSBtZXRhZGF0YVxuICAgKiB3aXRoIGEgY29uc3RydWN0IGZyYW1ld29yayBuYW1lICsgdmVyc2lvbiAodGhvc2UgY291bGQgdWx0aW1hdGVseSBiZSByZS1mYWN0b3JlZCB0byBzaGFyZSBtb3JlXG4gICAqIG9mIHRoZSBsb2dpYy9oZXVyaXN0aWNzLCB0aG91Z2gpLlxuICAgKlxuICAgKiBDb25jcmV0ZWx5LCBpdCBjaGVja3MgZm9yIGEgbGlzdCBvZiBrbm93biBcIm9mZmljaWFsXCIgcGFja2FnZXMgZm9yIHZhcmlvdXMgY29uc3RydWN0IGZyYW1ld29ya3MsXG4gICAqIGFuZCBwYWNrYWdlcyB0aGF0IGhhdmUgYSBkZXBlbmRlbmN5IG9uIHN1Y2ggYSBwYWNrYWdlLiBJdCBhbHNvIGhhcyBhIGtleXdvcmRzIGFsbG93LWxpc3QgYXMgYVxuICAgKiBmYWxsLWJhY2sgKHRoZSBjdXJyZW50IGRlcGVuZGVuY3ktYmFzZWQgbG9naWMgZG9lcyBub3QgY29uc2lkZXIgdHJhbnNpdGl2ZSBkZXBlbmRlbmNpZXMgYW5kXG4gICAqIG1pZ2h0IGhlbmNlIG1pc3MgY2VydGFpbiByYXJlIHVzZS1jYXNlcywgd2hpY2gga2V5d29yZHMgd291bGQgcmVzY3VlKS5cbiAgICovXG4gIGZ1bmN0aW9uIGlzQ29uc3RydWN0TGlicmFyeShpbmZvczogVmVyc2lvbkluZm8pOiBib29sZWFuIHtcbiAgICBpZiAoaW5mb3MuanNpaSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vIFRoZSBcImNvbnN0cnVjdHNcIiBwYWNrYWdlIGlzIGEgc2lnbiBvZiBhIGNvbnN0cnVjdHMgbGlicmFyeVxuICAgIHJldHVybiAoXG4gICAgICBpc0NvbnN0cnVjdEZyYW1ld29ya1BhY2thZ2UoaW5mb3MubmFtZSkgfHxcbiAgICAgIC8vIFJlY3Vyc2l2ZWx5IGFwcGx5IG9uIGRlcGVuZGVuY2llc1xuICAgICAgT2JqZWN0LmtleXMoaW5mb3MuZGVwZW5kZW5jaWVzID8/IHt9KS5zb21lKGlzQ29uc3RydWN0RnJhbWV3b3JrUGFja2FnZSkgfHxcbiAgICAgIE9iamVjdC5rZXlzKGluZm9zLmRldkRlcGVuZGVuY2llcyA/PyB7fSkuc29tZShcbiAgICAgICAgaXNDb25zdHJ1Y3RGcmFtZXdvcmtQYWNrYWdlXG4gICAgICApIHx8XG4gICAgICBPYmplY3Qua2V5cyhpbmZvcy5wZWVyRGVwZW5kZW5jaWVzID8/IHt9KS5zb21lKFxuICAgICAgICBpc0NvbnN0cnVjdEZyYW1ld29ya1BhY2thZ2VcbiAgICAgICkgfHxcbiAgICAgIC8vIEtleXdvcmQtYmFzZWQgZmFsbGJhY2tcbiAgICAgIGluZm9zLmtleXdvcmRzPy5zb21lKChrdykgPT4gQ09OU1RSVUNUX0tFWVdPUkRTLmhhcyhrdykpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYWNrYWdlIGlzIG9uZSBvZiB0aGUga25vd24gY29uc3RydWN0IGZyYW1ld29yaydzIGZpcnN0IHBhcnR5IHBhY2thZ2VzOlxuICAgKiAtIEBhd3MtY2RrLypcbiAgICogLSBAY2RrdGYvKlxuICAgKiAtIGNkazhzIG9yIGNkazhzLXBsdXNcbiAgICovXG4gIGZ1bmN0aW9uIGlzQ29uc3RydWN0RnJhbWV3b3JrUGFja2FnZShuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyBJTVBPUlRBTlQgTk9URTogUHJlZml4IG1hdGNoaW5nIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIEBzY29wZS8gbmFtZXMuXG5cbiAgICAvLyBUaGUgbG93LWxldmVsIGNvbnN0cnVjdHMgcGFja2FnZVxuICAgIHJldHVybiAoXG4gICAgICBuYW1lID09PSAnY29uc3RydWN0cycgfHxcbiAgICAgIC8vIEFXUyBDREsgUGFja2FnZXNcbiAgICAgIG5hbWUgPT09ICdhd3MtY2RrLWxpYicgfHxcbiAgICAgIG5hbWUgPT09ICdtb25vY2RrJyB8fFxuICAgICAgbmFtZS5zdGFydHNXaXRoKCdAYXdzLWNkay8nKSB8fFxuICAgICAgLy8gQ0RLOHMgcGFja2FnZXNcbiAgICAgIG5hbWUgPT09ICdjZGs4cycgfHxcbiAgICAgIC9eY2RrOHMtcGx1cyg/Oi0oPzoxN3wyMHwyMXwyMikpPyQvLnRlc3QobmFtZSkgfHxcbiAgICAgIC8vIENES1RmIHBhY2thZ2VzXG4gICAgICBuYW1lID09PSAnY2RrdGYnIHx8XG4gICAgICBuYW1lLnN0YXJ0c1dpdGgoJ0BjZGt0Zi8nKVxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgc2NoZW1lIG9mIGEgcGFja2FnZSB2ZXJzaW9uIGluIHRoZSB1cGRhdGUuIEluY2x1ZGVzIHRoZSBwYWNrYWdlLmpzb24ga2V5cywgYXMgd2VsbCBhcyBzb21lIGFkZGl0aW9uYWwgbnBtIG1ldGFkYXRhXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ucG0vcmVnaXN0cnkvYmxvYi9tYXN0ZXIvZG9jcy9SRUdJU1RSWS1BUEkubWQjdmVyc2lvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZlcnNpb25JbmZvIHtcbiAgcmVhZG9ubHkgZGVwZW5kZW5jaWVzPzogeyByZWFkb25seSBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG4gIHJlYWRvbmx5IGRldkRlcGVuZGVuY2llcz86IHsgcmVhZG9ubHkgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuICByZWFkb25seSBwZWVyRGVwZW5kZW5jaWVzPzogeyByZWFkb25seSBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG4gIHJlYWRvbmx5IGpzaWk6IHVua25vd247XG4gIHJlYWRvbmx5IGxpY2Vuc2U/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbiAgcmVhZG9ubHkga2V5d29yZHM6IHN0cmluZ1tdO1xuICByZWFkb25seSBkaXN0OiB7XG4gICAgcmVhZG9ubHkgc2hhc3VtOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgdGFyYmFsbDogc3RyaW5nO1xuICB9O1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBVcGRhdGVkVmVyc2lvbiB7XG4gIC8qKlxuICAgKiBUaGUgYFZlcnNpb25JbmZvYCBmb3IgdGhlIG1vZGlmaWVkIHBhY2thZ2UgdmVyc2lvbi5cbiAgICovXG4gIHJlYWRvbmx5IGluZm9zOiBWZXJzaW9uSW5mbztcblxuICAvKipcbiAgICogVGhlIHRpbWUgYXQgd2hpY2ggdGhlIGBWZXJzaW9uSW5mb2Agd2FzIGxhc3QgbW9kaWZpZWQuXG4gICAqL1xuICByZWFkb25seSBtb2RpZmllZDogRGF0ZTtcblxuICAvKipcbiAgICogVGhlIENvdWNoREIgdHJhbnNhY3Rpb24gbnVtYmVyIGZvciB0aGUgdXBkYXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VxPzogc3RyaW5nIHwgbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgRG9jdW1lbnQge1xuICAvKipcbiAgICogYSBMaXN0IG9mIGFsbCBWZXJzaW9uIG9iamVjdHMgZm9yIHRoZSBwYWNrYWdlXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uczogeyBba2V5OiBzdHJpbmddOiBWZXJzaW9uSW5mbyB8IHVuZGVmaW5lZCB9O1xuXG4gIC8qKlxuICAgKiBUaGUgcGFja2FnZSdzIG5hbWUuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRpbWVzdGFtcHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZG9jdW1lbnQuIFRoZSB2YWx1ZXMgYXJlIElTTy04NjAxIGVuY29kZWRcbiAgICogdGltZXN0YW1wcy5cbiAgICovXG4gIHJlYWRvbmx5IHRpbWU6IHtcbiAgICByZWFkb25seSBjcmVhdGVkOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgbW9kaWZpZWQ6IHN0cmluZztcbiAgICByZWFkb25seSBbdmVyc2lvbjogc3RyaW5nXTogc3RyaW5nO1xuICB9O1xuXG4gIHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IHVua25vd247XG59XG5cbmludGVyZmFjZSBDaGFuZ2UgZXh0ZW5kcyBEYXRhYmFzZUNoYW5nZSB7XG4gIHJlYWRvbmx5IGRvYzogRG9jdW1lbnQ7XG59XG4iXX0=
|
376
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtLWpzLWZvbGxvd2VyLmxhbWJkYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWNrYWdlLXNvdXJjZXMvbnBtanMvbnBtLWpzLWZvbGxvd2VyLmxhbWJkYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXdFQSwwQkEwSkM7QUFsT0QsbUNBQW1DO0FBQ25DLDBEQUF1RDtBQUN2RCxrREFLNEI7QUFFNUIsK0RBSzhCO0FBRTlCLHlEQUF1RDtBQUN2RCxpRUFBaUU7QUFDakUsdUVBSW1DO0FBQ25DLCtFQUE2RTtBQUU3RSx1RkFBOEU7QUFDOUUsMEZBQW9GO0FBQ3BGLDhFQUdnRDtBQUNoRCx3R0FBd0Y7QUFDeEYsOEVBQW9FO0FBQ3BFLGlFQUFpRTtBQUNqRSxNQUFNLG9CQUFvQixHQUFHLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0FBRXBFLE1BQU0sa0JBQWtCLEdBQXdCLElBQUksR0FBRyxDQUFDO0lBQ3RELEtBQUs7SUFDTCxTQUFTO0lBQ1QsUUFBUTtJQUNSLE9BQU87SUFDUCxPQUFPO0NBQ1IsQ0FBQyxDQUFDO0FBQ0gsTUFBTSx3QkFBd0IsR0FBRyw4QkFBOEIsQ0FBQztBQUVoRTs7Ozs7R0FLRztBQUNILE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQztBQUVoRSxvQ0FBb0M7QUFDcEMsb0NBQWEsQ0FBQyxTQUFTLEdBQUcsMkNBQWlCLENBQUM7QUFFNUMscURBQXFEO0FBQ3JELGlFQUFpRTtBQUNqRSxJQUFBLHNDQUFrQixFQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLGlFQUFpRTtBQUNqRSxJQUFBLHNDQUFrQixFQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBRXBDOzs7Ozs7Ozs7R0FTRztBQUNJLEtBQUssVUFBVSxPQUFPLENBQUMsS0FBcUIsRUFBRSxPQUFnQjtJQUNuRSxPQUFPLENBQUMsR0FBRyxDQUFD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QWUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQzNDLDJCQUEyQixDQUM1QjtZQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDNUMsMkJBQTJCLENBQzVCO1lBQ0QseUJBQXlCO1lBQ3pCLEtBQUssQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FDekQsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFNBQVMsMkJBQTJCLENBQUMsSUFBWTtRQUMvQyx5RUFBeUU7UUFFekUsbUNBQW1DO1FBQ25DLE9BQU8sQ0FDTCxJQUFJLEtBQUssWUFBWTtZQUNyQixtQkFBbUI7WUFDbkIsSUFBSSxLQUFLLGFBQWE7WUFDdEIsSUFBSSxLQUFLLFNBQVM7WUFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUM7WUFDNUIsaUJBQWlCO1lBQ2pCLElBQUksS0FBSyxPQUFPO1lBQ2hCLG1DQUFtQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDOUMsaUJBQWlCO1lBQ2pCLElBQUksS0FBSyxPQUFPO1lBQ2hCLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQzNCLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNvbnNvbGUgZnJvbSAnY29uc29sZSc7XG5pbXBvcnQgeyBJbnZva2VDb21tYW5kIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWxhbWJkYSc7XG5pbXBvcnQge1xuICBHZXRPYmplY3RDb21tYW5kLFxuICBOb1N1Y2hLZXksXG4gIFB1dE9iamVjdENvbW1hbmQsXG4gIFB1dE9iamVjdENvbW1hbmRJbnB1dCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXMzJztcbmltcG9ydCB0eXBlIHsgU3RyZWFtaW5nQmxvYlBheWxvYWRJbnB1dFR5cGVzIH0gZnJvbSAnQHNtaXRoeS90eXBlcyc7XG5pbXBvcnQge1xuICBtZXRyaWNTY29wZSxcbiAgQ29uZmlndXJhdGlvbixcbiAgTWV0cmljc0xvZ2dlcixcbiAgVW5pdCxcbn0gZnJvbSAnYXdzLWVtYmVkZGVkLW1ldHJpY3MnO1xuaW1wb3J0IHR5cGUgeyBDb250ZXh0LCBTY2hlZHVsZWRFdmVudCB9IGZyb20gJ2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgY2FwdHVyZUhUVFBzR2xvYmFsIH0gZnJvbSAnYXdzLXhyYXktc2RrLWNvcmUnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbmltcG9ydCB7XG4gIE1ldHJpY05hbWUsXG4gIE1BUktFUl9GSUxFX05BTUUsXG4gIE1FVFJJQ1NfTkFNRVNQQUNFLFxufSBmcm9tICcuL2NvbnN0YW50cy5sYW1iZGEtc2hhcmVkJztcbmltcG9ydCB7IENvdWNoQ2hhbmdlcywgRGF0YWJhc2VDaGFuZ2UgfSBmcm9tICcuL2NvdWNoLWNoYW5nZXMubGFtYmRhLXNoYXJlZCc7XG5pbXBvcnQgeyBQYWNrYWdlVmVyc2lvbiB9IGZyb20gJy4vc3RhZ2UtYW5kLW5vdGlmeS5sYW1iZGEnO1xuaW1wb3J0IHsgRGVueUxpc3RDbGllbnQgfSBmcm9tICcuLi8uLi9iYWNrZW5kL2RlbnktbGlzdC9jbGllbnQubGFtYmRhLXNoYXJlZCc7XG5pbXBvcnQgeyBMaWNlbnNlTGlzdENsaWVudCB9IGZyb20gJy4uLy4uL2JhY2tlbmQvbGljZW5zZS1saXN0L2NsaWVudC5sYW1iZGEtc2hhcmVkJztcbmltcG9ydCB7XG4gIExBTUJEQV9DTElFTlQsXG4gIFMzX0NMSUVOVCxcbn0gZnJvbSAnLi4vLi4vYmFja2VuZC9zaGFyZWQvYXdzLmxhbWJkYS1zaGFyZWQnO1xuaW1wb3J0IHsgZGVjb21wcmVzc0NvbnRlbnQgfSBmcm9tICcuLi8uLi9iYWNrZW5kL3NoYXJlZC9jb21wcmVzcy1jb250ZW50LmxhbWJkYS1zaGFyZWQnO1xuaW1wb3J0IHsgcmVxdWlyZUVudiB9IGZyb20gJy4uLy4uL2JhY2tlbmQvc2hhcmVkL2Vudi5sYW1iZGEtc2hhcmVkJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG5jb25zdCBub3JtYWxpemVOUE1NZXRhZGF0YSA9IHJlcXVpcmUoJ25vcm1hbGl6ZS1yZWdpc3RyeS1tZXRhZGF0YScpO1xuXG5jb25zdCBDT05TVFJVQ1RfS0VZV09SRFM6IFJlYWRvbmx5U2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcbiAgJ2NkaycsXG4gICdhd3MtY2RrJyxcbiAgJ2F3c2NkaycsXG4gICdjZGs4cycsXG4gICdjZGt0ZicsXG5dKTtcbmNvbnN0IE5QTV9SRVBMSUNBX1JFR0lTVFJZX1VSTCA9ICdodHRwczovL3JlcGxpY2F0ZS5ucG1qcy5jb20vJztcblxuLyoqXG4gKiBUaGUgcmVsZWFzZSBkYXRlIG9mIGBhd3MtY2RrQDAuOC4wYC4gQW55dGhpbmcgZWFybGllciB0aGFuIHRoaXMgYmFzaWNhbGx5IGlzXG4gKiBub3QgYSByZWxldmFudCBwYWNrYWdlLCBhcyBpdCBjYW5ub3QgcG9zc2libHkgYmUgYSBjb25zdHJ1Y3RzLWJhc2VkIHBhY2thZ2UuXG4gKiBUaGlzIGlzIHVzZWQgdG8gZmFzdC1mb3J3YXJkIG92ZXIgYm9yaW5nIHN0dWZmIHdoZW4gdGhlIHNlcXVlbmNlIG51bWJlciBpc1xuICogcmVzZXQuXG4gKi9cbmNvbnN0IERBV05fT0ZfQ09OU1RSVUNUUyA9IG5ldyBEYXRlKCcyMDE4LTA3LTMxVDEzOjQzOjA0LjYxNVonKTtcblxuLy8gQ29uZmlndXJlIGVtYmVkZGVkIG1ldHJpY3MgZm9ybWF0XG5Db25maWd1cmF0aW9uLm5hbWVzcGFjZSA9IE1FVFJJQ1NfTkFNRVNQQUNFO1xuXG4vLyBNYWtlIHN1cmUgWC1SYXkgdHJhY2VzIHdpbGwgaW5jbHVkZSBIVFRQKHMpIGNhbGxzLlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbmNhcHR1cmVIVFRQc0dsb2JhbChyZXF1aXJlKCdodHRwcycpKTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG5jYXB0dXJlSFRUUHNHbG9iYWwocmVxdWlyZSgnaHR0cCcpKTtcblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIHRyaWdnZXJzIG9uIGEgZml4ZWQgc2NoZWR1bGUgYW5kIHJlYWRzIGEgc3RyZWFtIG9mIGNoYW5nZXMgZnJvbSBucG1qcyBjb3VjaGRiIF9jaGFuZ2VzIGVuZHBvaW50LlxuICogVXBvbiBpbnZvY2F0aW9uIHRoZSBmdW5jdGlvbiBzdGFydHMgcmVhZGluZyBmcm9tIGEgc2VxdWVuY2Ugc3RvcmVkIGluIGFuIHMzIG9iamVjdCAtIHRoZSBgbWFya2VyYC5cbiAqIElmIHRoZSBtYXJrZXIgZmFpbHMgdG8gbG9hZCAob3IgZG8gbm90IGV4aXN0KSwgdGhlIHN0cmVhbSB3aWxsIHN0YXJ0IGZyb20gYG5vd2AgLSB0aGUgbGF0ZXN0IGNoYW5nZS5cbiAqIEZvciBlYWNoIGNoYW5nZTpcbiAqICAtIHRoZSBwYWNrYWdlIHZlcnNpb24gdGFyYmFsbCB3aWxsIGJlIGNvcGllZCBmcm9tIHRoZSBucG0gcmVnaXN0cnkgdG8gYSBzdGF0aW5nIGJ1Y2tldC5cbiAqICAtIGEgbWVzc2FnZSB3aWxsIGJlIHNlbnQgdG8gYW4gc3FzIHF1ZXVlXG4gKiBucG0gcmVnaXN0cnkgQVBJIGRvY3M6IGh0dHBzOi8vZ2l0aHViLmNvbS9ucG0vcmVnaXN0cnkvYmxvYi9tYXN0ZXIvZG9jcy9SRUdJU1RSWS1BUEkubWRcbiAqIEBwYXJhbSBjb250ZXh0IGEgTGFtYmRhIGV4ZWN1dGlvbiBjb250ZXh0XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVyKGV2ZW50OiBTY2hlZHVsZWRFdmVudCwgY29udGV4dDogQ29udGV4dCkge1xuICBjb25zb2xlLmxvZyhgRXZlbnQ6ICR7SlNPTi5zdHJpbmdpZnkoZXZlbnQsIG51bGwsIDIpfWApO1xuXG4gIGNvbnN0IHN0YWdpbmdCdWNrZXQgPSByZXF1aXJlRW52KCdCVUNLRVRfTkFNRScpO1xuICBjb25zdCBzdGFnaW5nRnVuY3Rpb24gPSByZXF1aXJlRW52KCdGVU5DVElPTl9OQU1FJyk7XG5cbiAgY29uc3QgZGVueUxpc3QgPSBhd2FpdCBEZW55TGlzdENsaWVudC5uZXdDbGllbnQoKTtcbiAgY29uc3QgbGljZW5zZUxpc3QgPSBhd2FpdCBMaWNlbnNlTGlzdENsaWVudC5uZXdDbGllbnQoKTtcblxuICBjb25zdCBucG0gPSBuZXcgQ291Y2hDaGFuZ2VzKE5QTV9SRVBMSUNBX1JFR0lTVFJZX1VSTCwgJ3JlZ2lzdHJ5L19jaGFuZ2VzJyk7XG5cbiAgY29uc3QgeyBtYXJrZXI6IGluaXRpYWxNYXJrZXIsIGtub3duVmVyc2lvbnMgfSA9XG4gICAgYXdhaXQgbG9hZExhc3RUcmFuc2FjdGlvbk1hcmtlcihzdGFnaW5nQnVja2V0LCBucG0pO1xuXG4gIC8vIFRoZSBsYXN0IHdyaXR0ZW4gbWFya2VyIHNlcSBpZC5cbiAgbGV0IHVwZGF0ZWRNYXJrZXIgPSBpbml0aWFsTWFya2VyO1xuXG4gIC8vIFRoZSBzbG93ZXN0IGJhdGNoIHByb2Nlc3NpbmcgdGltZSBzbyBmYXIgKHN0YXJ0cyBhdCAzMCBzZWNvbmRzKS4gVGhpcyBpcyBob3cgbXVjaCB0aW1lIHNob3VsZFxuICAvLyBiZSBsZWZ0IGJlZm9yZSB0aW1lb3V0IGlmIGEgbmV3IGJhdGNoIGlzIHRvIGJlIGZldGNoZWQuXG4gIGxldCBtYXhCYXRjaFByb2Nlc3NpbmdUaW1lID0gMzBfMDAwO1xuICAvLyBXaGV0aGVyIHdlIHNob3VsZCBjb250aW51ZSByZWFkaW5nIG1vcmUgaXRlbXMgb3Igbm90Li4uIFRoaXMgaXMgc2V0IHRvIGZhbHNlIHdoZW4gdGhlIGN1cnJlbnRcbiAgLy8gbGF0ZXN0IGNoYW5nZSBpcyByZWFjaGVkIChpLmU6IG5leHQgcGFnZSBvZiBjaGFuZ2VzIGlzIGVtcHR5KS5cbiAgbGV0IHNob3VsZENvbnRpbnVlID0gdHJ1ZTtcblxuICBkbyB7XG4gICAgYXdhaXQgbWV0cmljU2NvcGUoKG1ldHJpY3MpID0+IGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdQb2xsaW5nIGNoYW5nZXMgZnJvbSBucG0gcmVwbGljYScpO1xuICAgICAgY29uc3QgY2hhbmdlcyA9IGF3YWl0IG5wbS5jaGFuZ2VzKHVwZGF0ZWRNYXJrZXIpO1xuXG4gICAgICAvLyBDbGVhciBhdXRvbWF0aWNhbGx5IHNldCBkaW1lbnNpb25zIC0gd2UgZG9uJ3QgbmVlZCB0aGVtIChzZWUgaHR0cHM6Ly9naXRodWIuY29tL2F3c2xhYnMvYXdzLWVtYmVkZGVkLW1ldHJpY3Mtbm9kZS9pc3N1ZXMvNzMpXG4gICAgICBtZXRyaWNzLnNldERpbWVuc2lvbnMoe30pO1xuXG4gICAgICAvLyBSZWNvcmRpbmcgY3VycmVudCBzZXEgcmFuZ2UgYW5kIHVwZGF0aW5nIHRoZSBgdXBkYXRlZE1hcmtlcmAuXG4gICAgICBtZXRyaWNzLnNldFByb3BlcnR5KCdTdGFydFNlcScsIHVwZGF0ZWRNYXJrZXIpO1xuICAgICAgdXBkYXRlZE1hcmtlciA9IGNoYW5nZXMubGFzdF9zZXE7XG4gICAgICBtZXRyaWNzLnNldFByb3BlcnR5KCdFbmRTZXEnLCB1cGRhdGVkTWFya2VyKTtcblxuICAgICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgYmF0Y2ggPSBjaGFuZ2VzLnJlc3VsdHMgYXMgcmVhZG9ubHkgQ2hhbmdlW107XG5cbiAgICAgICAgLy8gVGhlIG1vc3QgcmVjZW50IFwibW9kaWZpZWRcIiB0aW1lc3RhbXAgb2JzZXJ2ZWQgaW4gdGhlIGJhdGNoLlxuICAgICAgICBsZXQgbGFzdE1vZGlmaWVkOiBEYXRlIHwgdW5kZWZpbmVkO1xuICAgICAgICAvLyBFbWl0IG5wbS5qcyByZXBsaWNhdGlvbiBsYWdcbiAgICAgICAgZm9yIChjb25zdCB7IGRvYyB9IG9mIGJhdGNoKSB7XG4gICAgICAgICAgaWYgKGRvYz8udGltZT8ubW9kaWZpZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IG1vZGlmaWVkID0gbmV3IERhdGUoZG9jLnRpbWUubW9kaWZpZWQpO1xuICAgICAgICAgICAgbWV0cmljcy5wdXRNZXRyaWMoXG4gICAgICAgICAgICAgIE1ldHJpY05hbWUuTlBNSlNfQ0hBTkdFX0FHRSxcbiAgICAgICAgICAgICAgc3RhcnRUaW1lIC0gbW9kaWZpZWQuZ2V0VGltZSgpLFxuICAgICAgICAgICAgICBVbml0Lk1pbGxpc2Vjb25kc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChsYXN0TW9kaWZpZWQgPT0gbnVsbCB8fCBsYXN0TW9kaWZpZWQgPCBtb2RpZmllZCkge1xuICAgICAgICAgICAgICBsYXN0TW9kaWZpZWQgPSBtb2RpZmllZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZyhgUmVjZWl2ZWQgYSBiYXRjaCBvZiAke2JhdGNoLmxlbmd0aH0gZWxlbWVudChzKWApO1xuICAgICAgICBtZXRyaWNzLnB1dE1ldHJpYyhNZXRyaWNOYW1lLkNIQU5HRV9DT1VOVCwgYmF0Y2gubGVuZ3RoLCBVbml0LkNvdW50KTtcblxuICAgICAgICBpZiAobGFzdE1vZGlmaWVkICYmIGxhc3RNb2RpZmllZCA8IERBV05fT0ZfQ09OU1RSVUNUUykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgYFNraXBwaW5nIGJhdGNoIGFzIHRoZSBsYXRlc3QgbW9kaWZpY2F0aW9uIGlzICR7bGFzdE1vZGlmaWVkfSwgd2hpY2ggaXMgcHJlLUNvbnN0cnVjdHNgXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChiYXRjaC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnUmVjZWl2ZWQgMCBjaGFuZ2VzLCBjYXVnaHQgdXAgdG8gXCJub3dcIiwgZXhpdGluZy4uLicpO1xuICAgICAgICAgIHNob3VsZENvbnRpbnVlID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gT2J0YWluIHRoZSBtb2RpZmllZCBwYWNrYWdlIHZlcnNpb24gZnJvbSB0aGUgdXBkYXRlIGV2ZW50LCBhbmQgZmlsdGVyXG4gICAgICAgICAgLy8gb3V0IHBhY2thZ2VzIHRoYXQgYXJlIG5vdCBvZiBpbnRlcmVzdCB0byB1cyAobm90IGNvbnN0cnVjdCBsaWJyYXJpZXMpLlxuICAgICAgICAgIGNvbnN0IHZlcnNpb25JbmZvcyA9IGdldFJlbGV2YW50VmVyc2lvbkluZm9zKFxuICAgICAgICAgICAgYmF0Y2gsXG4gICAgICAgICAgICBtZXRyaWNzLFxuICAgICAgICAgICAgZGVueUxpc3QsXG4gICAgICAgICAgICBsaWNlbnNlTGlzdCxcbiAgICAgICAgICAgIGtub3duVmVyc2lvbnNcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgYElkZW50aWZpZWQgJHt2ZXJzaW9uSW5mb3MubGVuZ3RofSByZWxldmFudCBwYWNrYWdlIHZlcnNpb24gdXBkYXRlKHMpYFxuICAgICAgICAgICk7XG4gICAgICAgICAgbWV0cmljcy5wdXRNZXRyaWMoXG4gICAgICAgICAgICBNZXRyaWNOYW1lLlJFTEVWQU5UX1BBQ0tBR0VfVkVSU0lPTlMsXG4gICAgICAgICAgICB2ZXJzaW9uSW5mb3MubGVuZ3RoLFxuICAgICAgICAgICAgVW5pdC5Db3VudFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICAvLyBQcm9jZXNzIGFsbCByZW1haW5pbmcgdXBkYXRlc1xuICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgdmVyc2lvbkluZm9zLm1hcChhc3luYyAoeyBpbmZvcywgbW9kaWZpZWQsIHNlcSB9KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGludm9rZUFyZ3M6IFBhY2thZ2VWZXJzaW9uID0ge1xuICAgICAgICAgICAgICAgIGludGVncml0eTogaW5mb3MuZGlzdC5zaGFzdW0sXG4gICAgICAgICAgICAgICAgbW9kaWZpZWQ6IG1vZGlmaWVkLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgbmFtZTogaW5mb3MubmFtZSxcbiAgICAgICAgICAgICAgICBzZXE6IHNlcT8udG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICB0YXJiYWxsVXJsOiBpbmZvcy5kaXN0LnRhcmJhbGwsXG4gICAgICAgICAgICAgICAgdmVyc2lvbjogaW5mb3MudmVyc2lvbixcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgLy8gXCJGaXJlLWFuZC1mb3JnZXRcIiBpbnZvY2F0aW9uIGhlcmUuXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBTZW5kaW5nICR7aW52b2tlQXJncy50YXJiYWxsVXJsfSBmb3Igc3RhZ2luZ2ApO1xuICAgICAgICAgICAgICBhd2FpdCBMQU1CREFfQ0xJRU5ULnNlbmQoXG4gICAgICAgICAgICAgICAgbmV3IEludm9rZUNvbW1hbmQoe1xuICAgICAgICAgICAgICAgICAgRnVuY3Rpb25OYW1lOiBzdGFnaW5nRnVuY3Rpb24sXG4gICAgICAgICAgICAgICAgICBJbnZvY2F0aW9uVHlwZTogJ0V2ZW50JyxcbiAgICAgICAgICAgICAgICAgIFBheWxvYWQ6IEJ1ZmZlci5mcm9tKEpTT04uc3RyaW5naWZ5KGludm9rZUFyZ3MpKSxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAvLyBSZWNvcmQgdGhhdCB0aGlzIGlzIG5vdyBhIFwia25vd25cIiB2ZXJzaW9uIChubyBuZWVkIHRvIHJlLWRpc2NvdmVyKVxuICAgICAgICAgICAgICBrbm93blZlcnNpb25zLnNldChgJHtpbmZvcy5uYW1lfUAke2luZm9zLnZlcnNpb259YCwgbW9kaWZpZWQpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVXBkYXRpbmcgdGhlIFMzIHN0b3JlZCBtYXJrZXIgd2l0aCB0aGUgbmV3IHNlcSBpZCBhcyBjb21tdW5pY2F0ZWQgYnkgbmFuby5cbiAgICAgICAgYXdhaXQgc2F2ZUxhc3RUcmFuc2FjdGlvbk1hcmtlcihcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIHN0YWdpbmdCdWNrZXQsXG4gICAgICAgICAgdXBkYXRlZE1hcmtlcixcbiAgICAgICAgICBrbm93blZlcnNpb25zXG4gICAgICAgICk7XG4gICAgICAgIGNvbnNvbGUubG9nKCdTdWNjZXNzZnVsbHkgdXBkYXRlZCBtYXJrZXInKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIC8vIE1hcmtlcnMgbWF5IG5vdCBhbHdheXMgYmUgbnVtZXJpYyAoYnV0IGluIHByYWN0aWNlIHRoZXkgYXJlIG5vdyksIHNvIHdlIHByb3RlY3QgYWdhaW5zdCB0aGF0Li4uXG4gICAgICAgIGlmICh0eXBlb2YgdXBkYXRlZE1hcmtlciA9PT0gJ251bWJlcicgfHwgL15cXGQrJC8udGVzdCh1cGRhdGVkTWFya2VyKSkge1xuICAgICAgICAgIG1ldHJpY3MucHV0TWV0cmljKFxuICAgICAgICAgICAgTWV0cmljTmFtZS5MQVNUX1NFUSxcbiAgICAgICAgICAgIHR5cGVvZiB1cGRhdGVkTWFya2VyID09PSAnbnVtYmVyJ1xuICAgICAgICAgICAgICA/IHVwZGF0ZWRNYXJrZXJcbiAgICAgICAgICAgICAgOiBwYXJzZUludCh1cGRhdGVkTWFya2VyKSxcbiAgICAgICAgICAgIFVuaXQuTm9uZVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBtZXRyaWNzLnB1dE1ldHJpYyhcbiAgICAgICAgICBNZXRyaWNOYW1lLkJBVENIX1BST0NFU1NJTkdfVElNRSxcbiAgICAgICAgICBEYXRlLm5vdygpIC0gc3RhcnRUaW1lLFxuICAgICAgICAgIFVuaXQuTWlsbGlzZWNvbmRzXG4gICAgICAgICk7XG4gICAgICAgIG1ldHJpY3MucHV0TWV0cmljKFxuICAgICAgICAgIE1ldHJpY05hbWUuUkVNQUlOSU5HX1RJTUUsXG4gICAgICAgICAgY29udGV4dC5nZXRSZW1haW5pbmdUaW1lSW5NaWxsaXMoKSxcbiAgICAgICAgICBVbml0Lk1pbGxpc2Vjb25kc1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pKCk7XG4gIH0gd2hpbGUgKFxuICAgIHNob3VsZENvbnRpbnVlICYmXG4gICAgY29udGV4dC5nZXRSZW1haW5pbmdUaW1lSW5NaWxsaXMoKSA+PSBtYXhCYXRjaFByb2Nlc3NpbmdUaW1lXG4gICk7XG5cbiAgY29uc29sZS5sb2coJ0FsbCBkb25lIGhlcmUsIHdlIGhhdmUgc3VjY2VzcyEnKTtcblxuICByZXR1cm4geyBpbml0aWFsTWFya2VyLCB1cGRhdGVkTWFya2VyIH07XG59XG5cbi8vI3JlZ2lvbiBMYXN0IHRyYW5zYWN0aW9uIG1hcmtlclxuLyoqXG4gKiBMb2FkcyB0aGUgbGFzdCB0cmFuc2FjdGlvbiBtYXJrZXIgZnJvbSBTMy5cbiAqXG4gKiBAcGFyYW0gcmVnaXN0cnkgYSBOYW5vIGRhdGFiYXNlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIE5wbWpzLmNvbSBDb3VjaERCIGluc3RhbmNlLlxuICpcbiAqIEByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgbGFzdCB0cmFuc2FjdGlvbiBtYXJrZXIgYW5kIHRoZSBtYXAgb2YgcGFja2FnZSBuYW1lcyArIHZlcnNpb25zIHRvIHRoZSBsYXN0IG1vZGlmaWNhdGlvblxuICogICAgICAgICAgb2YgdGhhdCBwYWNrYWdlIHZlcnNpb24gdGhhdCB3YXMgcHJvY2Vzc2VkLlxuICovXG5hc3luYyBmdW5jdGlvbiBsb2FkTGFzdFRyYW5zYWN0aW9uTWFya2VyKFxuICBzdGFnaW5nQnVja2V0OiBzdHJpbmcsXG4gIHJlZ2lzdHJ5OiBDb3VjaENoYW5nZXNcbik6IFByb21pc2U8eyBtYXJrZXI6IHN0cmluZyB8IG51bWJlcjsga25vd25WZXJzaW9uczogTWFwPHN0cmluZywgRGF0ZT4gfT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgUzNfQ0xJRU5ULnNlbmQoXG4gICAgICBuZXcgR2V0T2JqZWN0Q29tbWFuZCh7XG4gICAgICAgIEJ1Y2tldDogc3RhZ2luZ0J1Y2tldCxcbiAgICAgICAgS2V5OiBNQVJLRVJfRklMRV9OQU1FLFxuICAgICAgfSlcbiAgICApO1xuICAgIGlmICghcmVzcG9uc2UuQm9keSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUcmFuc2FjdGlvbiBNYXJrZXIgUmVzcG9uc2UgQm9keSBpcyBlbXB0eScpO1xuICAgIH1cbiAgICBjb25zdCBib2R5ID0gYXdhaXQgZGVjb21wcmVzc0NvbnRlbnQoXG4gICAgICByZXNwb25zZS5Cb2R5LFxuICAgICAgcmVzcG9uc2UuQ29udGVudEVuY29kaW5nXG4gICAgKTtcbiAgICBsZXQgZGF0YSA9IEpTT04ucGFyc2UoYm9keSwgKGtleSwgdmFsdWUpID0+IHtcbiAgICAgIGlmIChrZXkgIT09ICdrbm93blZlcnNpb25zJykge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICBjb25zdCBtYXAgPSBuZXcgTWFwPHN0cmluZywgRGF0ZT4oKTtcbiAgICAgIGZvciAoY29uc3QgW3BrZ1ZlcnNpb24sIGlzb10gb2YgT2JqZWN0LmVudHJpZXModmFsdWUpKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaXNvID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgaXNvID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIG1hcC5zZXQocGtnVmVyc2lvbiwgbmV3IERhdGUoaXNvKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihgSWdub3JpbmcgaW52YWxpZCBlbnRyeTogJHtwa2dWZXJzaW9ufSA9PiAke2lzb31gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG1hcDtcbiAgICB9KTtcbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdudW1iZXInKSB7XG4gICAgICBkYXRhID0geyBtYXJrZXI6IGRhdGEudG9GaXhlZCgpLCBrbm93blZlcnNpb25zOiBuZXcgTWFwKCkgfTtcbiAgICB9XG4gICAgY29uc29sZS5sb2coYFJlYWQgbGFzdCB0cmFuc2FjdGlvbiBtYXJrZXI6ICR7ZGF0YS5tYXJrZXJ9YCk7XG5cbiAgICBjb25zdCBkYlVwZGF0ZVNlcSA9IChhd2FpdCByZWdpc3RyeS5pbmZvKCkpLnVwZGF0ZV9zZXE7XG4gICAgaWYgKGRiVXBkYXRlU2VxIDwgZGF0YS5tYXJrZXIpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYEN1cnJlbnQgREIgdXBkYXRlX3NlcSAoJHtkYlVwZGF0ZVNlcX0pIGlzIGxvd2VyIHRoYW4gbWFya2VyIChDb3VjaERCIGluc3RhbmNlIHdhcyBsaWtlbHkgcmVwbGFjZWQpLCByZXNldHRpbmcgdG8gMCFgXG4gICAgICApO1xuICAgICAgcmV0dXJuIHsgbWFya2VyOiAnMCcsIGtub3duVmVyc2lvbnM6IGRhdGEua25vd25WZXJzaW9ucyB9O1xuICAgIH1cblxuICAgIHJldHVybiBkYXRhO1xuICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgTm9TdWNoS2V5IHx8IGVycm9yLm5hbWUgPT09ICdOb1N1Y2hLZXknKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBNYXJrZXIgb2JqZWN0IChzMzovLyR7c3RhZ2luZ0J1Y2tldH0vJHtNQVJLRVJfRklMRV9OQU1FfSkgZG9lcyBub3QgZXhpc3QsIHN0YXJ0aW5nIGZyb20gc2NyYXRjaGBcbiAgICAgICk7XG4gICAgICByZXR1cm4geyBtYXJrZXI6ICcwJywga25vd25WZXJzaW9uczogbmV3IE1hcCgpIH07XG4gICAgfVxuICAgIC8vIHJlLXRocm93IHVuZXhwZWN0ZWQgZXJyb3JzXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxuLyoqXG4gKiBVcGRhdGVzIHRoZSBsYXN0IHRyYW5zYWN0aW9uIG1hcmtlciBpbiBTMy5cbiAqXG4gKiBAcGFyYW0gbWFya2VyIHRoZSBsYXN0IHRyYW5zYWN0aW9uIG1hcmtlciB2YWx1ZVxuICogQHBhcmFtIGtub3duVmVyc2lvbnMgdGhlIG1hcCBvZiBwYWNrYWdlIG5hbWUgKyB2ZXJzaW9uIHRvIGxhc3QgbW9kaWZpZWQgdGltZXN0YW1wIG9mIHBhY2thZ2VzIHRoYXQgaGF2ZSBiZWVuIHByb2Nlc3NlZC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gc2F2ZUxhc3RUcmFuc2FjdGlvbk1hcmtlcihcbiAgY29udGV4dDogQ29udGV4dCxcbiAgc3RhZ2luZ0J1Y2tldDogc3RyaW5nLFxuICBtYXJrZXI6IHN0cmluZyB8IG51bWJlcixcbiAga25vd25WZXJzaW9uczogTWFwPHN0cmluZywgRGF0ZT5cbikge1xuICBjb25zb2xlLmxvZyhgVXBkYXRpbmcgbGFzdCB0cmFuc2FjdGlvbiBtYXJrZXIgdG8gJHttYXJrZXJ9YCk7XG4gIHJldHVybiBwdXRPYmplY3QoXG4gICAgY29udGV4dCxcbiAgICBzdGFnaW5nQnVja2V0LFxuICAgIE1BUktFUl9GSUxFX05BTUUsXG4gICAgSlNPTi5zdHJpbmdpZnkoXG4gICAgICB7IG1hcmtlciwga25vd25WZXJzaW9ucyB9LFxuICAgICAgKF8sIHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWUudG9JU09TdHJpbmcoKTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE1hcCkge1xuICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIDJcbiAgICApLFxuICAgIHtcbiAgICAgIENvbnRlbnRUeXBlOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgfVxuICApO1xufVxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiBBc3luY2hyb25vdXMgUHJpbWl0aXZlc1xuLyoqXG4gKiBQdXRzIGFuIG9iamVjdCBpbiB0aGUgc3RhZ2luZyBidWNrZXQsIHdpdGggc3RhbmRhcmRpemVkIG9iamVjdCBtZXRhZGF0YS5cbiAqXG4gKiBAcGFyYW0ga2V5ICB0aGUga2V5IGZvciB0aGUgb2JqZWN0IHRvIGJlIHB1dC5cbiAqIEBwYXJhbSBib2R5IHRoZSBib2R5IG9mIHRoZSBvYmplY3QgdG8gYmUgcHV0LlxuICogQHBhcmFtIG9wdHMgYW55IG90aGVyIG9wdGlvbnMgdG8gdXNlIHdoZW4gc2VuZGluZyB0aGUgUzMgcmVxdWVzdC5cbiAqXG4gKiBAcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBTMyByZXF1ZXN0LlxuICovXG5mdW5jdGlvbiBwdXRPYmplY3QoXG4gIGNvbnRleHQ6IENvbnRleHQsXG4gIGJ1Y2tldDogc3RyaW5nLFxuICBrZXk6IHN0cmluZyxcbiAgYm9keTogU3RyZWFtaW5nQmxvYlBheWxvYWRJbnB1dFR5cGVzLFxuICBvcHRzOiBPbWl0PFB1dE9iamVjdENvbW1hbmRJbnB1dCwgJ0J1Y2tldCcgfCAnS2V5JyB8ICdCb2R5Jz4gPSB7fVxuKSB7XG4gIHJldHVybiBTM19DTElFTlQuc2VuZChcbiAgICBuZXcgUHV0T2JqZWN0Q29tbWFuZCh7XG4gICAgICBCdWNrZXQ6IGJ1Y2tldCxcbiAgICAgIEtleToga2V5LFxuICAgICAgQm9keTogYm9keSxcbiAgICAgIE1ldGFkYXRhOiB7XG4gICAgICAgICdMYW1iZGEtTG9nLUdyb3VwJzogY29udGV4dC5sb2dHcm91cE5hbWUsXG4gICAgICAgICdMYW1iZGEtTG9nLVN0cmVhbSc6IGNvbnRleHQubG9nU3RyZWFtTmFtZSxcbiAgICAgICAgJ0xhbWJkYS1SdW4tSWQnOiBjb250ZXh0LmF3c1JlcXVlc3RJZCxcbiAgICAgICAgLi4ub3B0cy5NZXRhZGF0YSxcbiAgICAgIH0sXG4gICAgICAuLi5vcHRzLFxuICAgIH0pXG4gICk7XG59XG4vLyNlbmRyZWdpb25cblxuLyoqXG4gKiBPYnRhaW5zIHRoZSBgVmVyc2lvbkluZm9gIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1vZGlmaWVkIHZlcnNpb24ocykgaW4gdGhlXG4gKiBwcm92aWRlZCBgQ2hhbmdlYCBvYmplY3RzLCBlbnN1cmVzIHRoZXkgYXJlIHJlbGV2YW50IChjb25zdHJ1Y3QgbGlicmFyaWVzKSxcbiAqIGFuZCByZXR1cm5zIHRob3NlIG9ubHkuXG4gKlxuICogQHBhcmFtIGNoYW5nZXMgdGhlIGNoYW5nZXMgdG8gYmUgcHJvY2Vzc2VkLlxuICogQHBhcmFtIG1ldHJpY3MgdGhlIG1ldHJpY3MgbG9nZ2VyIHRvIHVzZS5cbiAqIEBwYXJhbSBkZW55TGlzdCBkZW55IGxpc3QgY2xpZW50XG4gKlxuICogQHJldHVybnMgYSBsaXN0IG9mIGBWZXJzaW9uSW5mb2Agb2JqZWN0c1xuICovXG5mdW5jdGlvbiBnZXRSZWxldmFudFZlcnNpb25JbmZvcyhcbiAgY2hhbmdlczogcmVhZG9ubHkgQ2hhbmdlW10sXG4gIG1ldHJpY3M6IE1ldHJpY3NMb2dnZXIsXG4gIGRlbnlMaXN0OiBEZW55TGlzdENsaWVudCxcbiAgbGljZW5zZUxpc3Q6IExpY2Vuc2VMaXN0Q2xpZW50LFxuICBrbm93blZlcnNpb25zOiBNYXA8c3RyaW5nLCBEYXRlPlxuKTogcmVhZG9ubHkgVXBkYXRlZFZlcnNpb25bXSB7XG4gIGNvbnN0IHJlc3VsdCA9IG5ldyBBcnJheTxVcGRhdGVkVmVyc2lvbj4oKTtcblxuICBmb3IgKGNvbnN0IGNoYW5nZSBvZiBjaGFuZ2VzKSB7XG4gICAgLy8gRmlsdGVyIG91dCBhbGwgZWxlbWVudHMgdGhhdCBkb24ndCBoYXZlIGEgXCJuYW1lXCIgaW4gdGhlIGRvY3VtZW50LCBhc1xuICAgIC8vIHRoZXNlIGFyZSBzY2hlbWFzLCB3aGljaCBhcmUgbm90IHJlbGV2YW50IHRvIG91ciBidXNpbmVzcyBoZXJlLlxuICAgIGlmIChjaGFuZ2UuZG9jLm5hbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFske2NoYW5nZS5zZXF9XSBDaGFuZ2VkIGRvY3VtZW50IGNvbnRhaW5zIG5vICduYW1lJzogJHtjaGFuZ2UuaWR9YFxuICAgICAgKTtcbiAgICAgIG1ldHJpY3MucHV0TWV0cmljKE1ldHJpY05hbWUuVU5QUk9DRVNTQUJMRV9FTlRJVFksIDEsIFVuaXQuQ291bnQpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8gVGhlIG5vcm1hbGl6ZSBmdW5jdGlvbiBjaGFuZ2UgdGhlIG9iamVjdCBpbiBwbGFjZSwgaWYgdGhlIGRvYyBvYmplY3QgaXMgaW52YWxpZCBpdCB3aWxsIHJldHVybiB1bmRlZmluZWRcbiAgICBpZiAobm9ybWFsaXplTlBNTWV0YWRhdGEoY2hhbmdlLmRvYykgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFske2NoYW5nZS5zZXF9XSBDaGFuZ2VkIGRvY3VtZW50IGludmFsaWQsIG5wbSBub3JtYWxpemUgcmV0dXJuZWQgdW5kZWZpbmVkOiAke2NoYW5nZS5pZH1gXG4gICAgICApO1xuICAgICAgbWV0cmljcy5wdXRNZXRyaWMoTWV0cmljTmFtZS5VTlBST0NFU1NBQkxFX0VOVElUWSwgMSwgVW5pdC5Db3VudCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBTb21ldGltZXMsIHRoZXJlIGFyZSBubyB2ZXJzaW9ucyBpbiB0aGUgZG9jdW1lbnQuIFdlIHNraXAgdGhvc2UuXG4gICAgaWYgKGNoYW5nZS5kb2MudmVyc2lvbnMgPT0gbnVsbCkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFske2NoYW5nZS5zZXF9XSBDaGFuZ2VkIGRvY3VtZW50IGNvbnRhaW5zIG5vICd2ZXJzaW9ucyc6ICR7Y2hhbmdlLmlkfWBcbiAgICAgICk7XG4gICAgICBtZXRyaWNzLnB1dE1ldHJpYyhNZXRyaWNOYW1lLlVOUFJPQ0VTU0FCTEVfRU5USVRZLCAxLCBVbml0LkNvdW50KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIFNvbWV0aW1lcywgdGhlcmUgaXMgbm8gJ3RpbWUnIGVudHJ5IGluIHRoZSBkb2N1bWVudC4gV2Ugc2tpcCB0aG9zZS5cbiAgICBpZiAoY2hhbmdlLmRvYy50aW1lID09IG51bGwpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIGBbJHtjaGFuZ2Uuc2VxfV0gQ2hhbmdlZCBkb2N1bWVudCBjb250YWlucyBubyAndGltZSc6ICR7Y2hhbmdlLmlkfWBcbiAgICAgICk7XG4gICAgICBtZXRyaWNzLnB1dE1ldHJpYyhNZXRyaWNOYW1lLlVOUFJPQ0VTU0FCTEVfRU5USVRZLCAxLCBVbml0LkNvdW50KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIEdldCB0aGUgbGFzdCBtb2RpZmljYXRpb24gZGF0ZSBmcm9tIHRoZSBjaGFuZ2VcbiAgICBjb25zdCBwYWNrYWdlVmVyc2lvblVwZGF0ZXMgPSBPYmplY3QuZW50cmllcyhjaGFuZ2UuZG9jLnRpbWUpXG4gICAgICAvLyBJZ25vcmUgdGhlIFwiY3JlYXRlZFwiIGFuZCBcIm1vZGlmaWVkXCIga2V5cyBoZXJlXG4gICAgICAuZmlsdGVyKChba2V5XSkgPT4ga2V5ICE9PSAnY3JlYXRlZCcgJiYga2V5ICE9PSAnbW9kaWZpZWQnKVxuICAgICAgLy8gUGFyc2UgYWxsIHRoZSBkYXRlcyB0byBlbnN1cmUgdGhleSBhcmUgY29tcGFyYWJsZVxuICAgICAgLm1hcCgoW3ZlcnNpb24sIGlzb0RhdGVdKSA9PiBbdmVyc2lvbiwgbmV3IERhdGUoaXNvRGF0ZSldIGFzIGNvbnN0KTtcbiAgICBtZXRyaWNzLnB1dE1ldHJpYyhcbiAgICAgIE1ldHJpY05hbWUuUEFDS0FHRV9WRVJTSU9OX0NPVU5ULFxuICAgICAgcGFja2FnZVZlcnNpb25VcGRhdGVzLmxlbmd0aCxcbiAgICAgIFVuaXQuQ291bnRcbiAgICApO1xuXG4gICAgZm9yIChjb25zdCBbdmVyc2lvbiwgbW9kaWZpZWRdIG9mIHBhY2thZ2VWZXJzaW9uVXBkYXRlcykge1xuICAgICAgY29uc3Qga25vd25LZXkgPSBgJHtjaGFuZ2UuZG9jLm5hbWV9QCR7dmVyc2lvbn1gO1xuICAgICAgY29uc3Qga25vd24gPSBrbm93blZlcnNpb25zLmdldChrbm93bktleSk7XG4gICAgICBpZiAoa25vd24gPT0gbnVsbCB8fCBrbm93biA8IG1vZGlmaWVkKSB7XG4gICAgICAgIGNvbnN0IGluZm9zID0gY2hhbmdlLmRvYy52ZXJzaW9uc1t2ZXJzaW9uXTtcbiAgICAgICAgaWYgKGluZm9zID09IG51bGwpIHtcbiAgICAgICAgICAvLyBDb3VsZCBiZSB0aGUgdmVyc2lvbiBpbiBxdWVzdGlvbiB3YXMgdW4tcHVibGlzaGVkLlxuICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgYFske2NoYW5nZS5zZXF9XSBDb3VsZCBub3QgZmluZCBpbmZvIGZvciBcIiR7Y2hhbmdlLmRvYy5uYW1lfUAke3ZlcnNpb259XCIuIFdhcyBpdCB1bi1wdWJsaXNoZWQ/YFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNDb25zdHJ1Y3RMaWJyYXJ5KGluZm9zKSkge1xuICAgICAgICAgIC8vIHNraXAgaWYgdGhpcyBwYWNrYWdlIGlzIGRlbmllZFxuICAgICAgICAgIGNvbnN0IGRlbmllZCA9IGRlbnlMaXN0Lmxvb2t1cChpbmZvcy5uYW1lLCBpbmZvcy52ZXJzaW9uKTtcbiAgICAgICAgICBpZiAoZGVuaWVkKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgYFske2NoYW5nZS5zZXF9XSBQYWNrYWdlIGRlbmllZDogJHtKU09OLnN0cmluZ2lmeShkZW5pZWQpfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBrbm93blZlcnNpb25zLnNldChrbm93bktleSwgbW9kaWZpZWQpO1xuICAgICAgICAgICAgbWV0cmljcy5wdXRNZXRyaWMoTWV0cmljTmFtZS5ERU5ZX0xJU1RFRF9DT1VOVCwgMSwgVW5pdC5Db3VudCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXRyaWNzLnB1dE1ldHJpYyhcbiAgICAgICAgICAgIE1ldHJpY05hbWUuUEFDS0FHRV9WRVJTSU9OX0FHRSxcbiAgICAgICAgICAgIERhdGUubm93KCkgLSBtb2RpZmllZC5nZXRUaW1lKCksXG4gICAgICAgICAgICBVbml0Lk1pbGxpc2Vjb25kc1xuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgaXNFbGlnaWJsZSA9XG4gICAgICAgICAgICBsaWNlbnNlTGlzdC5sb29rdXAoaW5mb3MubGljZW5zZSA/PyAnVU5MSUNFTlNFRCcpICE9IG51bGw7XG4gICAgICAgICAgbWV0cmljcy5wdXRNZXRyaWMoXG4gICAgICAgICAgICBNZXRyaWNOYW1lLklORUxJR0lCTEVfTElDRU5TRSxcbiAgICAgICAgICAgIGlzRWxpZ2libGUgPyAwIDogMSxcbiAgICAgICAgICAgIFVuaXQuQ291bnRcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChpc0VsaWdpYmxlKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh7IGluZm9zLCBtb2RpZmllZCwgc2VxOiBjaGFuZ2Uuc2VxIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgYFske2NoYW5nZS5zZXF9XSBQYWNrYWdlIFwiJHtcbiAgICAgICAgICAgICAgICBjaGFuZ2UuZG9jLm5hbWVcbiAgICAgICAgICAgICAgfUAke3ZlcnNpb259XCIgZG9lcyBub3QgdXNlIGFsbG93LWxpc3RlZCBsaWNlbnNlOiAke1xuICAgICAgICAgICAgICAgIGluZm9zLmxpY2Vuc2UgPz8gJ1VOTElDRU5TRUQnXG4gICAgICAgICAgICAgIH1gXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAga25vd25WZXJzaW9ucy5zZXQoa25vd25LZXksIG1vZGlmaWVkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gRWxzZSB0aGlzIGlzIG5vdCBhIGNvbnN0cnVjdCBsaWJyYXJ5LCBzbyB3ZSdsbCBqdXN0IGlnbm9yZSBpdC4uLlxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xuXG4gIC8qKlxuICAgKiBUaGlzIGRldGVybWluZXMgd2hldGhlciBhIHBhY2thZ2UgaXMgXCJpbnRlcmVzdGluZ1wiIHRvIENvbnN0cnVjdEh1YiBvciBub3QuIFRoaXMgaXMgcmVsYXRlZCBidXRcbiAgICogbm90IG5lY2Vzc2FyaWx5IGlkZW50aWNhbCB0byB0aGUgbG9naWMgaW4gdGhlIGluZ2VzdGlvbiBwcm9jZXNzIHRoYXQgYW5ub3RhdGVzIHBhY2thZ2UgbWV0YWRhdGFcbiAgICogd2l0aCBhIGNvbnN0cnVjdCBmcmFtZXdvcmsgbmFtZSArIHZlcnNpb24gKHRob3NlIGNvdWxkIHVsdGltYXRlbHkgYmUgcmUtZmFjdG9yZWQgdG8gc2hhcmUgbW9yZVxuICAgKiBvZiB0aGUgbG9naWMvaGV1cmlzdGljcywgdGhvdWdoKS5cbiAgICpcbiAgICogQ29uY3JldGVseSwgaXQgY2hlY2tzIGZvciBhIGxpc3Qgb2Yga25vd24gXCJvZmZpY2lhbFwiIHBhY2thZ2VzIGZvciB2YXJpb3VzIGNvbnN0cnVjdCBmcmFtZXdvcmtzLFxuICAgKiBhbmQgcGFja2FnZXMgdGhhdCBoYXZlIGEgZGVwZW5kZW5jeSBvbiBzdWNoIGEgcGFja2FnZS4gSXQgYWxzbyBoYXMgYSBrZXl3b3JkcyBhbGxvdy1saXN0IGFzIGFcbiAgICogZmFsbC1iYWNrICh0aGUgY3VycmVudCBkZXBlbmRlbmN5LWJhc2VkIGxvZ2ljIGRvZXMgbm90IGNvbnNpZGVyIHRyYW5zaXRpdmUgZGVwZW5kZW5jaWVzIGFuZFxuICAgKiBtaWdodCBoZW5jZSBtaXNzIGNlcnRhaW4gcmFyZSB1c2UtY2FzZXMsIHdoaWNoIGtleXdvcmRzIHdvdWxkIHJlc2N1ZSkuXG4gICAqL1xuICBmdW5jdGlvbiBpc0NvbnN0cnVjdExpYnJhcnkoaW5mb3M6IFZlcnNpb25JbmZvKTogYm9vbGVhbiB7XG4gICAgaWYgKGluZm9zLmpzaWkgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBUaGUgXCJjb25zdHJ1Y3RzXCIgcGFja2FnZSBpcyBhIHNpZ24gb2YgYSBjb25zdHJ1Y3RzIGxpYnJhcnlcbiAgICByZXR1cm4gKFxuICAgICAgaXNDb25zdHJ1Y3RGcmFtZXdvcmtQYWNrYWdlKGluZm9zLm5hbWUpIHx8XG4gICAgICAvLyBSZWN1cnNpdmVseSBhcHBseSBvbiBkZXBlbmRlbmNpZXNcbiAgICAgIE9iamVjdC5rZXlzKGluZm9zLmRlcGVuZGVuY2llcyA/PyB7fSkuc29tZShpc0NvbnN0cnVjdEZyYW1ld29ya1BhY2thZ2UpIHx8XG4gICAgICBPYmplY3Qua2V5cyhpbmZvcy5kZXZEZXBlbmRlbmNpZXMgPz8ge30pLnNvbWUoXG4gICAgICAgIGlzQ29uc3RydWN0RnJhbWV3b3JrUGFja2FnZVxuICAgICAgKSB8fFxuICAgICAgT2JqZWN0LmtleXMoaW5mb3MucGVlckRlcGVuZGVuY2llcyA/PyB7fSkuc29tZShcbiAgICAgICAgaXNDb25zdHJ1Y3RGcmFtZXdvcmtQYWNrYWdlXG4gICAgICApIHx8XG4gICAgICAvLyBLZXl3b3JkLWJhc2VkIGZhbGxiYWNrXG4gICAgICBpbmZvcy5rZXl3b3Jkcz8uc29tZSgoa3cpID0+IENPTlNUUlVDVF9LRVlXT1JEUy5oYXMoa3cpKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUGFja2FnZSBpcyBvbmUgb2YgdGhlIGtub3duIGNvbnN0cnVjdCBmcmFtZXdvcmsncyBmaXJzdCBwYXJ0eSBwYWNrYWdlczpcbiAgICogLSBAYXdzLWNkay8qXG4gICAqIC0gQGNka3RmLypcbiAgICogLSBjZGs4cyBvciBjZGs4cy1wbHVzXG4gICAqL1xuICBmdW5jdGlvbiBpc0NvbnN0cnVjdEZyYW1ld29ya1BhY2thZ2UobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgLy8gSU1QT1JUQU5UIE5PVEU6IFByZWZpeCBtYXRjaGluZyBzaG91bGQgb25seSBiZSB1c2VkIGZvciBAc2NvcGUvIG5hbWVzLlxuXG4gICAgLy8gVGhlIGxvdy1sZXZlbCBjb25zdHJ1Y3RzIHBhY2thZ2VcbiAgICByZXR1cm4gKFxuICAgICAgbmFtZSA9PT0gJ2NvbnN0cnVjdHMnIHx8XG4gICAgICAvLyBBV1MgQ0RLIFBhY2thZ2VzXG4gICAgICBuYW1lID09PSAnYXdzLWNkay1saWInIHx8XG4gICAgICBuYW1lID09PSAnbW9ub2NkaycgfHxcbiAgICAgIG5hbWUuc3RhcnRzV2l0aCgnQGF3cy1jZGsvJykgfHxcbiAgICAgIC8vIENESzhzIHBhY2thZ2VzXG4gICAgICBuYW1lID09PSAnY2RrOHMnIHx8XG4gICAgICAvXmNkazhzLXBsdXMoPzotKD86MTd8MjB8MjF8MjIpKT8kLy50ZXN0KG5hbWUpIHx8XG4gICAgICAvLyBDREtUZiBwYWNrYWdlc1xuICAgICAgbmFtZSA9PT0gJ2Nka3RmJyB8fFxuICAgICAgbmFtZS5zdGFydHNXaXRoKCdAY2RrdGYvJylcbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogVGhlIHNjaGVtZSBvZiBhIHBhY2thZ2UgdmVyc2lvbiBpbiB0aGUgdXBkYXRlLiBJbmNsdWRlcyB0aGUgcGFja2FnZS5qc29uIGtleXMsIGFzIHdlbGwgYXMgc29tZSBhZGRpdGlvbmFsIG5wbSBtZXRhZGF0YVxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vbnBtL3JlZ2lzdHJ5L2Jsb2IvbWFzdGVyL2RvY3MvUkVHSVNUUlktQVBJLm1kI3ZlcnNpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWZXJzaW9uSW5mbyB7XG4gIHJlYWRvbmx5IGRlcGVuZGVuY2llcz86IHsgcmVhZG9ubHkgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuICByZWFkb25seSBkZXZEZXBlbmRlbmNpZXM/OiB7IHJlYWRvbmx5IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgcmVhZG9ubHkgcGVlckRlcGVuZGVuY2llcz86IHsgcmVhZG9ubHkgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuICByZWFkb25seSBqc2lpOiB1bmtub3duO1xuICByZWFkb25seSBsaWNlbnNlPzogc3RyaW5nO1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IHVua25vd247XG4gIHJlYWRvbmx5IGtleXdvcmRzOiBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgZGlzdDoge1xuICAgIHJlYWRvbmx5IHNoYXN1bTogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHRhcmJhbGw6IHN0cmluZztcbiAgfTtcbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgVXBkYXRlZFZlcnNpb24ge1xuICAvKipcbiAgICogVGhlIGBWZXJzaW9uSW5mb2AgZm9yIHRoZSBtb2RpZmllZCBwYWNrYWdlIHZlcnNpb24uXG4gICAqL1xuICByZWFkb25seSBpbmZvczogVmVyc2lvbkluZm87XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIGF0IHdoaWNoIHRoZSBgVmVyc2lvbkluZm9gIHdhcyBsYXN0IG1vZGlmaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgbW9kaWZpZWQ6IERhdGU7XG5cbiAgLyoqXG4gICAqIFRoZSBDb3VjaERCIHRyYW5zYWN0aW9uIG51bWJlciBmb3IgdGhlIHVwZGF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHNlcT86IHN0cmluZyB8IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIERvY3VtZW50IHtcbiAgLyoqXG4gICAqIGEgTGlzdCBvZiBhbGwgVmVyc2lvbiBvYmplY3RzIGZvciB0aGUgcGFja2FnZVxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbnM6IHsgW2tleTogc3RyaW5nXTogVmVyc2lvbkluZm8gfCB1bmRlZmluZWQgfTtcblxuICAvKipcbiAgICogVGhlIHBhY2thZ2UncyBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaW1lc3RhbXBzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGRvY3VtZW50LiBUaGUgdmFsdWVzIGFyZSBJU08tODYwMSBlbmNvZGVkXG4gICAqIHRpbWVzdGFtcHMuXG4gICAqL1xuICByZWFkb25seSB0aW1lOiB7XG4gICAgcmVhZG9ubHkgY3JlYXRlZDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IG1vZGlmaWVkOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgW3ZlcnNpb246IHN0cmluZ106IHN0cmluZztcbiAgfTtcblxuICByZWFkb25seSBba2V5OiBzdHJpbmddOiB1bmtub3duO1xufVxuXG5pbnRlcmZhY2UgQ2hhbmdlIGV4dGVuZHMgRGF0YWJhc2VDaGFuZ2Uge1xuICByZWFkb25seSBkb2M6IERvY3VtZW50O1xufVxuIl19
|
@@ -53,6 +53,7 @@ class NpmJs {
|
|
53
53
|
storageFactory.newBucket(scope, 'NpmJs/StagingBucket', {
|
54
54
|
blockPublicAccess: aws_s3_1.BlockPublicAccess.BLOCK_ALL,
|
55
55
|
enforceSSL: true,
|
56
|
+
versioned: true, // we store state in this bucket; versions backup old state
|
56
57
|
lifecycleRules: [
|
57
58
|
{
|
58
59
|
prefix: "staged/" /* S3KeyPrefix.STAGED_KEY_PREFIX */,
|
@@ -545,11 +546,11 @@ class NpmJs {
|
|
545
546
|
}
|
546
547
|
exports.NpmJs = NpmJs;
|
547
548
|
_a = JSII_RTTI_SYMBOL_1;
|
548
|
-
NpmJs[_a] = { fqn: "construct-hub.sources.NpmJs", version: "0.4.
|
549
|
+
NpmJs[_a] = { fqn: "construct-hub.sources.NpmJs", version: "0.4.401" };
|
549
550
|
/**
|
550
551
|
* How often 'rate' goes into 'duration' (rounded up)
|
551
552
|
*/
|
552
553
|
function howOften(rate, duration) {
|
553
554
|
return Math.ceil(duration.toSeconds() / rate.toSeconds());
|
554
555
|
}
|
555
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtanMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFja2FnZS1zb3VyY2VzL25wbWpzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQXVDO0FBQ3ZDLCtEQVdvQztBQUNwQyx1REFBd0Q7QUFDeEQsdUVBQWdFO0FBQ2hFLHVEQUFpRDtBQUNqRCxtRkFBc0U7QUFDdEUsK0NBQWdFO0FBQ2hFLGlEQUE2RDtBQUU3RCw0Q0FBMkU7QUFDM0Usa0RBQTZDO0FBQzdDLDJDQUFvRDtBQUNwRCw2RUFLeUM7QUFDekMsNkRBQXdEO0FBQ3hELCtEQUEwRDtBQU8xRCxnREFBNkM7QUFDN0MsMkNBQWlEO0FBQ2pELCtFQUF5RTtBQUV6RTs7OztHQUlHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUU5Qzs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0seUJBQXlCLEdBQUcsc0JBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7QUFvQ3JEOztHQUVHO0FBQ0gsTUFBYSxLQUFLO0lBQ2hCLFlBQW9DLFFBQW9CLEVBQUU7UUFBdEIsVUFBSyxHQUFMLEtBQUssQ0FBaUI7SUFBRyxDQUFDO0lBRXZELElBQUksQ0FDVCxLQUFnQixFQUNoQixFQUNFLE9BQU8sRUFDUCxRQUFRLEVBQ1IsU0FBUyxFQUNULFdBQVcsRUFDWCxVQUFVLEVBQ1YsS0FBSyxFQUNMLFVBQVUsRUFDVixpQkFBaUIsR0FDUTtRQUUzQixVQUFVLEVBQUUscUJBQXFCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFbEQsTUFBTSxjQUFjLEdBQUcsMEJBQWdCLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNELE1BQU0sTUFBTSxHQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYTtZQUN4QixjQUFjLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxxQkFBcUIsRUFBRTtnQkFDckQs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LEtBQUssRUFBRSxFQUFFO2dCQUNULEtBQUssRUFBRSxxQ0FBcUM7Z0JBQzVDLElBQUksRUFBRTtvQkFDSixNQUFNLENBQUMsNEJBQTRCLENBQUM7d0JBQ2xDLEtBQUssRUFBRSxnQkFBZ0IsV0FBVyxHQUFHO3FCQUN0QyxDQUFDO2lCQUNIO2dCQUNELGVBQWUsRUFBRTtvQkFDZjt3QkFDRSxLQUFLLEVBQUUsU0FBUzt3QkFDaEIsS0FBSyxFQUFFLGFBQWEsQ0FBQyxhQUFhLEVBQUU7d0JBQ3BDLEtBQUssRUFBRSxhQUFhLENBQUMsU0FBUyxFQUFFO3FCQUNqQztpQkFDRjtnQkFDRCxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2FBQ3RCLENBQUM7U0FDSCxDQUFDO0lBQ0osQ0FBQzs7QUF0bkJILHNCQXVuQkM7OztBQUVEOztHQUVHO0FBQ0gsU0FBUyxRQUFRLENBQUMsSUFBYyxFQUFFLFFBQWtCO0lBQ2xELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7QUFDNUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHtcbiAgQWxhcm1SdWxlLFxuICBDb21wYXJpc29uT3BlcmF0b3IsXG4gIENvbXBvc2l0ZUFsYXJtLFxuICBHcmFwaFdpZGdldCxcbiAgSVdpZGdldCxcbiAgTWF0aEV4cHJlc3Npb24sXG4gIE1ldHJpYyxcbiAgTWV0cmljT3B0aW9ucyxcbiAgU3RhdGlzdGljLFxuICBUcmVhdE1pc3NpbmdEYXRhLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQgeyBSdWxlLCBTY2hlZHVsZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMnO1xuaW1wb3J0IHsgTGFtYmRhRnVuY3Rpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZXZlbnRzLXRhcmdldHMnO1xuaW1wb3J0IHsgVHJhY2luZyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgU3FzRXZlbnRTb3VyY2UgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLWV2ZW50LXNvdXJjZXMnO1xuaW1wb3J0IHsgQmxvY2tQdWJsaWNBY2Nlc3MsIElCdWNrZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0IHsgUXVldWUsIFF1ZXVlRW5jcnlwdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zcXMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBsYW1iZGFGdW5jdGlvblVybCwgczNPYmplY3RVcmwsIHNxc1F1ZXVlVXJsIH0gZnJvbSAnLi4vZGVlcC1saW5rJztcbmltcG9ydCB7IGZpbGxNZXRyaWMgfSBmcm9tICcuLi9tZXRyaWMtdXRpbHMnO1xuaW1wb3J0IHsgTnBtSnNQYWNrYWdlQ2FuYXJ5IH0gZnJvbSAnLi9ucG1qcy9jYW5hcnknO1xuaW1wb3J0IHtcbiAgTUFSS0VSX0ZJTEVfTkFNRSxcbiAgTUVUUklDU19OQU1FU1BBQ0UsXG4gIE1ldHJpY05hbWUsXG4gIFMzS2V5UHJlZml4LFxufSBmcm9tICcuL25wbWpzL2NvbnN0YW50cy5sYW1iZGEtc2hhcmVkJztcbmltcG9ydCB7IE5wbUpzRm9sbG93ZXIgfSBmcm9tICcuL25wbWpzL25wbS1qcy1mb2xsb3dlcic7XG5pbXBvcnQgeyBTdGFnZUFuZE5vdGlmeSB9IGZyb20gJy4vbnBtanMvc3RhZ2UtYW5kLW5vdGlmeSc7XG5pbXBvcnQgeyBJTW9uaXRvcmluZyB9IGZyb20gJy4uL21vbml0b3JpbmcvYXBpJztcbmltcG9ydCB0eXBlIHtcbiAgSVBhY2thZ2VTb3VyY2UsXG4gIFBhY2thZ2VTb3VyY2VCaW5kT3B0aW9ucyxcbiAgUGFja2FnZVNvdXJjZUJpbmRSZXN1bHQsXG59IGZyb20gJy4uL3BhY2thZ2Utc291cmNlJztcbmltcG9ydCB7IFJVTkJPT0tfVVJMIH0gZnJvbSAnLi4vcnVuYm9vay11cmwnO1xuaW1wb3J0IHsgUzNTdG9yYWdlRmFjdG9yeSB9IGZyb20gJy4uL3MzL3N0b3JhZ2UnO1xuaW1wb3J0IHsgUmVTdGFnZVBhY2thZ2VWZXJzaW9uIH0gZnJvbSAnLi9ucG1qcy9yZS1zdGFnZS1wYWNrYWdlLXZlcnNpb24nO1xuXG4vKipcbiAqIFRoZSBwZXJpb2RpY2l0eSBhdCB3aGljaCB0aGUgTnBtSnMgZm9sbG93ZXIgd2lsbCBydW4uIFRoaXMgTVVTVCBiZSBhIHZhbGlkXG4gKiBDbG91ZFdhdGNoIE1ldHJpYyBncmFpbiwgYXMgdGhpcyB3aWxsIGFsc28gYmUgdGhlIHBlcmlvZCBvZiB0aGUgQ2xvdWRXYXRjaFxuICogYWxhcm0gdGhhdCBtb25pdG9ycyB0aGUgaGVhbHRoIG9mIHRoZSBmb2xsb3dlci5cbiAqL1xuY29uc3QgRk9MTE9XRVJfUlVOX1JBVEUgPSBEdXJhdGlvbi5taW51dGVzKDUpO1xuXG4vKipcbiAqIEFsYXJtIGlmIHdlIGhhdmVuJ3Qgc2VlbiBjaGFuZ2VzIG92ZXIgdGhpcyB0aW1lXG4gKlxuICogVGhlIENvdWNoREIgbGVhZGVyIG9jY2FzaW9uYWxseSBqdXN0IHN0YXJ0cyB0b3NzaW5nIG91dCB0aW1lb3V0cyBhbmQgdGhleVxuICogbWF5IGxhc3QgZm9yIGEgZ29vZCB3aGlsZS5cbiAqXG4gKiAtIE9uIDIwMjItMDktMjkgaXQgd2FzIHNsb3cgZm9yIDEyIGhvdXJzLlxuICogLSBPbiAyMDIyLTEwLTA0IGl0IHdhcyBzbG93IGZvciAyIGhvdXJzLlxuICpcbiAqIFRoaXMgaXMgbGVhZGluZyB0byBleHRyZW1lIGFsYXJtIGZhdGlndWUsIGFuZCBhbHNvIHRoaXMgYWxhcm0gaXMgbm9uLWFjdGlvbmFibGUuXG4gKiBMZXQncyBiZSB2ZXJ5IHZlcnkgY29uc2VydmF0aXZlIGhlcmUuXG4gKi9cbmNvbnN0IE5PX0NIQU5HRVNfQUxBUk1fRFVSQVRJT04gPSBEdXJhdGlvbi5ob3VycygyNCk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnBtSnNQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgYnVja2V0IHRvIHVzZSBmb3Igc3RhZ2luZyBucG0gcGFja2FnZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYSBuZXcgYnVja2V0IHdpbGwgYmUgY3JlYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHN0YWdpbmdCdWNrZXQ/OiBJQnVja2V0O1xuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBwYWNrYWdlIGNhbmFyeSwgd2hpY2ggd2lsbCB0cmFjayBhdmFpbGFiaWxpdHkgb2YgYSBjYW5hcnlcbiAgICogcGFja2FnZSBpbiBDb25zdHJ1Y3RIdWIsIGFuZCBlbWl0IGRlZGljYXRlZCBtZXRyaWNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVDYW5hcnk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFja2FnZSB0aGF0IGlzIG1vbml0b3JlZCBieSB0aGUgcGFja2FnZSBjYW5hcnksIGlmIGVuYWJsZWQgYnlcbiAgICogYGVuYWJsZUNhbmFyeWAuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdjb25zdHJ1Y3QtaHViLXByb2JlJ1xuICAgKi9cbiAgcmVhZG9ubHkgY2FuYXJ5UGFja2FnZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUgaXQgaXMgc3VwcG9zZWQgdG8gdGFrZSBmb3IgcGFja2FnZXMgdG8gYmVjb21lXG4gICAqIHZpc2libGUgaW4gdGhpcyBDb25zdHJ1Y3RIdWIgaW5zdGFuY2UuIElmIGBlbmFibGVDYW5hcnlgIGlzIGVuYWJsZWQsIGFuXG4gICAqIGFsYXJtIHdpbGwgdHJpZ2dlciBpZiB0aGlzIFNMQSBpcyBicmVhY2hlZCBieSB0aGUgYGNhbmFyeVBhY2thZ2VgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBEdXJhdGlvbi5taW51dGVzKDUpXG4gICAqL1xuICByZWFkb25seSBjYW5hcnlTbGE/OiBEdXJhdGlvbjtcbn1cblxuLyoqXG4gKiBBIHBhY2thZ2Ugc291cmNlIHRoYXQgZ2V0cyBwYWNrYWdlIGRhdGEgZnJvbSB0aGUgbnBtanMuY29tIHBhY2thZ2UgcmVnaXN0cnkuXG4gKi9cbmV4cG9ydCBjbGFzcyBOcG1KcyBpbXBsZW1lbnRzIElQYWNrYWdlU291cmNlIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IE5wbUpzUHJvcHMgPSB7fSkge31cblxuICBwdWJsaWMgYmluZChcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIHtcbiAgICAgIGJhc2VVcmwsXG4gICAgICBkZW55TGlzdCxcbiAgICAgIGluZ2VzdGlvbixcbiAgICAgIGxpY2Vuc2VMaXN0LFxuICAgICAgbW9uaXRvcmluZyxcbiAgICAgIHF1ZXVlLFxuICAgICAgcmVwb3NpdG9yeSxcbiAgICAgIG92ZXJ2aWV3RGFzaGJvYXJkLFxuICAgIH06IFBhY2thZ2VTb3VyY2VCaW5kT3B0aW9uc1xuICApOiBQYWNrYWdlU291cmNlQmluZFJlc3VsdCB7XG4gICAgcmVwb3NpdG9yeT8uYWRkRXh0ZXJuYWxDb25uZWN0aW9uKCdwdWJsaWM6bnBtanMnKTtcblxuICAgIGNvbnN0IHN0b3JhZ2VGYWN0b3J5ID0gUzNTdG9yYWdlRmFjdG9yeS5nZXRPckNyZWF0ZShzY29wZSk7XG4gICAgY29uc3QgYnVja2V0ID1cbiAgICAgIHRoaXMucHJvcHMuc3RhZ2luZ0J1Y2tldCB8fFxuICAgICAgc3RvcmFnZUZhY3RvcnkubmV3QnVja2V0KHNjb3BlLCAnTnBtSnMvU3RhZ2luZ0J1Y2tldCcsIHtcbiAgICAgICAgYmxvY2tQdWJsaWNBY2Nlc3M6IEJsb2NrUHVibGljQWNjZXNzLkJMT0NLX0FMTCxcbiAgICAgICAgZW5mb3JjZVNTTDogdHJ1ZSxcbiAgICAgICAgbGlmZWN5Y2xlUnVsZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcmVmaXg6IFMzS2V5UHJlZml4LlNUQUdFRF9LRVlfUFJFRklYLFxuICAgICAgICAgICAgZXhwaXJhdGlvbjogRHVyYXRpb24uZGF5cygzMCksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgIGJ1Y2tldC5ncmFudFJlYWQoaW5nZXN0aW9uKTtcblxuICAgIGNvbnN0IHN0YWdlciA9IG5ldyBTdGFnZUFuZE5vdGlmeShzY29wZSwgJ05wbUpzLVN0YWdlQW5kTm90aWZ5Jywge1xuICAgICAgZGVhZExldHRlclF1ZXVlOiBuZXcgUXVldWUoc2NvcGUsICdTdGFnZXJETFEnLCB7XG4gICAgICAgIGVuY3J5cHRpb246IFF1ZXVlRW5jcnlwdGlvbi5LTVNfTUFOQUdFRCxcbiAgICAgICAgcmV0ZW50aW9uUGVyaW9kOiBEdXJhdGlvbi5kYXlzKDE0KSxcbiAgICAgICAgdmlzaWJpbGl0eVRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoMTUpLFxuICAgICAgfSksXG4gICAgICBkZXNjcmlwdGlvbjogYFske3Njb3BlLm5vZGUucGF0aH0vTnBtSlMtU3RhZ2VBbmROb3RpZnldIFN0YWdlcyB0YXJiYWxscyB0byBTMyBhbmQgbm90aWZpZXMgQ29uc3RydWN0SHViYCxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIEFXU19FTUZfRU5WSVJPTk1FTlQ6ICdMb2NhbCcsXG4gICAgICAgIEJVQ0tFVF9OQU1FOiBidWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgUVVFVUVfVVJMOiBxdWV1ZS5xdWV1ZVVybCxcbiAgICAgIH0sXG4gICAgICBtZW1vcnlTaXplOiAxMF8wMjQsIC8vIDEwR2lCXG4gICAgICByZXRyeUF0dGVtcHRzOiAyLFxuICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgIHRyYWNpbmc6IFRyYWNpbmcuQUNUSVZFLFxuICAgIH0pO1xuXG4gICAgYnVja2V0LmdyYW50UmVhZFdyaXRlKHN0YWdlcik7XG4gICAgZGVueUxpc3Q/LmdyYW50UmVhZChzdGFnZXIpO1xuICAgIHF1ZXVlLmdyYW50U2VuZE1lc3NhZ2VzKHN0YWdlcik7XG5cbiAgICBzdGFnZXIuYWRkRXZlbnRTb3VyY2UoXG4gICAgICBuZXcgU3FzRXZlbnRTb3VyY2Uoc3RhZ2VyLmRlYWRMZXR0ZXJRdWV1ZSEsIHtcbiAgICAgICAgYmF0Y2hTaXplOiAxLFxuICAgICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IGZvbGxvd2VyID0gbmV3IE5wbUpzRm9sbG93ZXIoc2NvcGUsICdOcG1KcycsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgWyR7c2NvcGUubm9kZS5wYXRofS9OcG1Kc10gUGVyaW9kaWNhbGx5IHF1ZXJ5IG5wbWpzLmNvbSBpbmRleCBmb3IgbmV3IHBhY2thZ2VzYCxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIEFXU19FTUZfRU5WSVJPTk1FTlQ6ICdMb2NhbCcsXG4gICAgICAgIEJVQ0tFVF9OQU1FOiBidWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgRlVOQ1RJT05fTkFNRTogc3RhZ2VyLmZ1bmN0aW9uTmFtZSxcbiAgICAgIH0sXG4gICAgICBtZW1vcnlTaXplOiAxMF8wMjQsIC8vIDEwIEdpQlxuICAgICAgcmVzZXJ2ZWRDb25jdXJyZW50RXhlY3V0aW9uczogMSwgLy8gT25seSBvbmUgZXhlY3V0aW9uIGF0IGEgdGltZSwgdG8gYXZvaWQgcmFjZSBjb25kaXRpb25zIG9uIHRoZSBTMyBtYXJrZXIgb2JqZWN0XG4gICAgICB0aW1lb3V0OiBGT0xMT1dFUl9SVU5fUkFURSxcbiAgICAgIHRyYWNpbmc6IFRyYWNpbmcuQUNUSVZFLFxuICAgIH0pO1xuXG4gICAgYnVja2V0LmdyYW50UmVhZFdyaXRlKGZvbGxvd2VyLCBNQVJLRVJfRklMRV9OQU1FKTtcbiAgICBkZW55TGlzdD8uZ3JhbnRSZWFkKGZvbGxvd2VyKTtcbiAgICBsaWNlbnNlTGlzdC5ncmFudFJlYWQoZm9sbG93ZXIpO1xuICAgIHN0YWdlci5ncmFudEludm9rZShmb2xsb3dlcik7XG5cbiAgICBjb25zdCByZXN0YWdlciA9IG5ldyBSZVN0YWdlUGFja2FnZVZlcnNpb24oc2NvcGUsICdSZVN0YWdlUGFja2FnZVZlcnNpb24nLCB7XG4gICAgICBkZXNjcmlwdGlvbjogYE1hbnVhbGx5IHJlLXN0YWdlIGEgcGFja2FnZSB2ZXJzaW9uYCxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIEZVTkNUSU9OX05BTUU6IHN0YWdlci5mdW5jdGlvbk5hbWUsXG4gICAgICAgIFJFR0lTVFJZX1VSTDogJ2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnJyxcbiAgICAgIH0sXG4gICAgICBtZW1vcnlTaXplOiAxMDI0LFxuICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcygxMCksXG4gICAgfSk7XG4gICAgc3RhZ2VyLmdyYW50SW52b2tlKHJlc3RhZ2VyKTtcblxuICAgIGNvbnN0IHJ1bGUgPSBuZXcgUnVsZShzY29wZSwgJ05wbUpzL1NjaGVkdWxlJywge1xuICAgICAgZGVzY3JpcHRpb246IGAke3Njb3BlLm5vZGUucGF0aH0vTnBtSnMvU2NoZWR1bGVgLFxuICAgICAgc2NoZWR1bGU6IFNjaGVkdWxlLnJhdGUoRk9MTE9XRVJfUlVOX1JBVEUpLFxuICAgICAgdGFyZ2V0czogW25ldyBMYW1iZGFGdW5jdGlvbihmb2xsb3dlcildLFxuICAgIH0pO1xuXG4gICAgdGhpcy5yZWdpc3RlckFsYXJtcyhzY29wZSwgZm9sbG93ZXIsIHN0YWdlciwgbW9uaXRvcmluZywgcnVsZSk7XG5cbiAgICBzdGFnZXIuZGVhZExldHRlclF1ZXVlICYmXG4gICAgICBvdmVydmlld0Rhc2hib2FyZC5hZGRETFFNZXRyaWNUb0Rhc2hib2FyZChcbiAgICAgICAgJ05QTSBKUyBTdGFnZXIgRExRJyxcbiAgICAgICAgc3RhZ2VyLmRlYWRMZXR0ZXJRdWV1ZVxuICAgICAgKTtcbiAgICBmb2xsb3dlci5kZWFkTGV0dGVyUXVldWUgJiZcbiAgICAgIG92ZXJ2aWV3RGFzaGJvYXJkLmFkZERMUU1ldHJpY1RvRGFzaGJvYXJkKFxuICAgICAgICAnTlBNIEpTIEZvbGxvd2VyIERMUScsXG4gICAgICAgIGZvbGxvd2VyLmRlYWRMZXR0ZXJRdWV1ZVxuICAgICAgKTtcbiAgICBvdmVydmlld0Rhc2hib2FyZC5hZGRDb25jdXJyZW50RXhlY3V0aW9uTWV0cmljVG9EYXNoYm9hcmQoXG4gICAgICBmb2xsb3dlcixcbiAgICAgICdOcG1Kc0xhbWJkYSdcbiAgICApO1xuICAgIG92ZXJ2aWV3RGFzaGJvYXJkLmFkZENvbmN1cnJlbnRFeGVjdXRpb25NZXRyaWNUb0Rhc2hib2FyZChcbiAgICAgIHN0YWdlcixcbiAgICAgICdOcG1Kcy1TdGFnZUFuZE5vdGlmeUxhbWJkYSdcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IGZvbGxvd2VyLm5vZGUucGF0aCxcbiAgICAgIGxpbmtzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnTnBtSnMgRm9sbG93ZXInLFxuICAgICAgICAgIHVybDogbGFtYmRhRnVuY3Rpb25VcmwoZm9sbG93ZXIpLFxuICAgICAgICAgIHByaW1hcnk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHsgbmFtZTogJ01hcmtlciBPYmplY3QnLCB1cmw6IHMzT2JqZWN0VXJsKGJ1Y2tldCwgTUFSS0VSX0ZJTEVfTkFNRSkgfSxcbiAgICAgICAgeyBuYW1lOiAnU3RhZ2VyJywgdXJsOiBsYW1iZGFGdW5jdGlvblVybChzdGFnZXIpIH0sXG4gICAgICAgIHsgbmFtZTogJ1N0YWdlciBETFEnLCB1cmw6IHNxc1F1ZXVlVXJsKHN0YWdlci5kZWFkTGV0dGVyUXVldWUhKSB9LFxuICAgICAgXSxcbiAgICAgIGRhc2hib2FyZFdpZGdldHM6IFtcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ0ZvbGxvd2VyIEhlYWx0aCcsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoZm9sbG93ZXIubWV0cmljSW52b2NhdGlvbnMoeyBsYWJlbDogJ0ludm9jYXRpb25zJyB9KSksXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoZm9sbG93ZXIubWV0cmljRXJyb3JzKHsgbGFiZWw6ICdFcnJvcnMnIH0pKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICByaWdodDogW3RoaXMubWV0cmljUmVtYWluaW5nVGltZSh7IGxhYmVsOiAnUmVtYWluaW5nIFRpbWUnIH0pXSxcbiAgICAgICAgICAgIHJpZ2h0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgICAgIHRpdGxlOiAnU3RhZ2VyIEhlYWx0aCcsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoc3RhZ2VyLm1ldHJpY0ludm9jYXRpb25zKHsgbGFiZWw6ICdJbnZvY2F0aW9ucycgfSkpLFxuICAgICAgICAgICAgICBmaWxsTWV0cmljKHN0YWdlci5tZXRyaWNFcnJvcnMoeyBsYWJlbDogJ0Vycm9ycycgfSkpLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBbc3RhZ2VyLm1ldHJpY0R1cmF0aW9uKHsgbGFiZWw6ICdEdXJhdGlvbicgfSldLFxuICAgICAgICAgICAgcmlnaHRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ0NvdWNoREIgRm9sbG93ZXInLFxuICAgICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgICBmaWxsTWV0cmljKHRoaXMubWV0cmljQ2hhbmdlQ291bnQoeyBsYWJlbDogJ0NoYW5nZSBDb3VudCcgfSksIDApLFxuICAgICAgICAgICAgICBmaWxsTWV0cmljKFxuICAgICAgICAgICAgICAgIHRoaXMubWV0cmljVW5wcm9jZXNzYWJsZUVudGl0eSh7IGxhYmVsOiAnVW5wcm9jZXNzYWJsZScgfSksXG4gICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgdGhpcy5tZXRyaWNOcG1Kc0NoYW5nZUFnZSh7IGxhYmVsOiAnTGFnIHRvIG5wbWpzLmNvbScgfSksXG4gICAgICAgICAgICAgICAgJ1JFUEVBVCdcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICB0aGlzLm1ldHJpY1BhY2thZ2VWZXJzaW9uQWdlKHsgbGFiZWw6ICdQYWNrYWdlIFZlcnNpb24gQWdlJyB9KSxcbiAgICAgICAgICAgICAgICAnUkVQRUFUJ1xuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHJpZ2h0WUF4aXM6IHsgbGFiZWw6ICdNaWxsaXNlY29uZHMnLCBtaW46IDAsIHNob3dVbml0czogZmFsc2UgfSxcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdDb3VjaERCIENoYW5nZXMnLFxuICAgICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgICBmaWxsTWV0cmljKFxuICAgICAgICAgICAgICAgIHRoaXMubWV0cmljTGFzdFNlcSh7IGxhYmVsOiAnTGFzdCBTZXF1ZW5jZSBOdW1iZXInIH0pLFxuICAgICAgICAgICAgICAgICdSRVBFQVQnXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgICBbXG4gICAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgICAgIHRpdGxlOiAnU3RhZ2VyIERlYWQtTGV0dGVyIFF1ZXVlJyxcbiAgICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICBzdGFnZXIuZGVhZExldHRlclF1ZXVlIS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNWaXNpYmxlKFxuICAgICAgICAgICAgICAgICAgeyBsYWJlbDogJ1Zpc2libGUgTWVzc2FnZXMnIH1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICBzdGFnZXIuZGVhZExldHRlclF1ZXVlIS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNOb3RWaXNpYmxlKFxuICAgICAgICAgICAgICAgICAgeyBsYWJlbDogJ0ludmlzaWJsZSBNZXNzYWdlcycgfVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBbXG4gICAgICAgICAgICAgIHN0YWdlci5kZWFkTGV0dGVyUXVldWUhLm1ldHJpY0FwcHJveGltYXRlQWdlT2ZPbGRlc3RNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ09sZGVzdCBNZXNzYWdlJyxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmlnaHRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4odGhpcy5wcm9wcy5lbmFibGVDYW5hcnkgPz8gdHJ1ZVxuICAgICAgICAgICAgPyB0aGlzLnJlZ2lzdGVyQ2FuYXJ5KFxuICAgICAgICAgICAgICAgIGZvbGxvd2VyLFxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuY2FuYXJ5UGFja2FnZSA/PyAnY29uc3RydWN0LWh1Yi1wcm9iZScsXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5jYW5hcnlTbGEgPz8gRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgICAgICAgICBidWNrZXQsXG4gICAgICAgICAgICAgICAgYmFzZVVybCxcbiAgICAgICAgICAgICAgICBtb25pdG9yaW5nXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogW10pLFxuICAgICAgICBdLFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBhdmVyYWdlIHRpbWUgaXQgdG9vayB0byBwcm9jZXNzIGEgY2hhbmdlcyBiYXRjaC5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNCYXRjaFByb2Nlc3NpbmdUaW1lKG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5BVkVSQUdFLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIG1ldHJpY05hbWU6IE1ldHJpY05hbWUuQkFUQ0hfUFJPQ0VTU0lOR19USU1FLFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdG90YWwgY291bnQgb2YgY2hhbmdlcyB0aGF0IHdlcmUgcHJvY2Vzc2VkLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY0NoYW5nZUNvdW50KG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5TVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5DSEFOR0VfQ09VTlQsXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBsYXN0IHNlcXVlbmNlIG51bWJlciB0aGF0IHdhcyBwcm9jZXNzZWQuIFRoaXMgbWV0cmljIGNhbiBiZSB1c2VkIHRvXG4gICAqIGRpc2NvdmVyIHdoZW4gYSBzZXF1ZW5jZSByZXNldCBoYXMgaGFwcGVuZWQgaW4gdGhlIENvdWNoREIgaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljTGFzdFNlcShvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUFYSU1VTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLkxBU1RfU0VRLFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBtZXRyaWNOcG1Kc0NoYW5nZUFnZShvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUlOSU1VTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLk5QTUpTX0NIQU5HRV9BR0UsXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBhZ2Ugb2YgdGhlIG9sZGVzdCBwYWNrYWdlIHZlcnNpb24gdGhhdCB3YXMgcHJvY2Vzc2VkLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY1BhY2thZ2VWZXJzaW9uQWdlKG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5NQVhJTVVNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIG1ldHJpY05hbWU6IE1ldHJpY05hbWUuUEFDS0FHRV9WRVJTSU9OX0FHRSxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRvdGFsIGNvdW50IG9mIHBhY2thZ2UgdmVyc2lvbnMgdGhhdCB3ZXJlIGluc3BlY3RlZC5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNQYWNrYWdlVmVyc2lvbkNvdW50KG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5TVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5QQUNLQUdFX1ZFUlNJT05fQ09VTlQsXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0b3RhbCBjb3VudCBvZiBwYWNrYWdlIHZlcnNpb25zIHRoYXQgd2VyZSBkZWVtZWQgcmVsZXZhbnQuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljUmVsZXZhbnRQYWNrYWdlVmVyc2lvbnMob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLlNVTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLlJFTEVWQU5UX1BBQ0tBR0VfVkVSU0lPTlMsXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBhbW91bnQgb2YgdGltZSB0aGF0IHdhcyByZW1haW5pbmcgd2hlbiB0aGUgbGFtYmRhIHJldHVybmVkIGluIG9yZGVyIHRvXG4gICAqIGF2b2lkIGhpdHRpbmcgYSB0aW1lb3V0LlxuICAgKi9cbiAgcHVibGljIG1ldHJpY1JlbWFpbmluZ1RpbWUob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLk1JTklNVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5SRU1BSU5JTkdfVElNRSxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGFtb3VudCBvZiBjaGFuZ2VzIHRoYXQgd2VyZSBub3QgcHJvY2Vzc2VkIGR1ZSB0byBoYXZpbmcgYW4gaW52YWxpZFxuICAgKiBmb3JtYXQuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljVW5wcm9jZXNzYWJsZUVudGl0eShvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIG1ldHJpY05hbWU6IE1ldHJpY05hbWUuVU5QUk9DRVNTQUJMRV9FTlRJVFksXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlckFsYXJtcyhcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGZvbGxvd2VyOiBOcG1Kc0ZvbGxvd2VyLFxuICAgIHN0YWdlcjogU3RhZ2VBbmROb3RpZnksXG4gICAgbW9uaXRvcmluZzogSU1vbml0b3JpbmcsXG4gICAgc2NoZWR1bGU6IFJ1bGVcbiAgKSB7XG4gICAgY29uc3QgZmFpbHVyZUFsYXJtID0gZm9sbG93ZXJcbiAgICAgIC5tZXRyaWNFcnJvcnMoKVxuICAgICAgLmNyZWF0ZUFsYXJtKHNjb3BlLCAnTnBtSnMvRm9sbG93ZXIvRmFpbHVyZXMnLCB7XG4gICAgICAgIGFsYXJtTmFtZTogYCR7c2NvcGUubm9kZS5wYXRofS9OcG1Kcy9Gb2xsb3dlci9GYWlsdXJlc2AsXG4gICAgICAgIGFsYXJtRGVzY3JpcHRpb246IFtcbiAgICAgICAgICAnVGhlIE5wbUpzIGZvbGxvd2VyIGZ1bmN0aW9uIGZhaWxlZCEnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIGBSdW5Cb29rOiAke1JVTkJPT0tfVVJMfWAsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgYERpcmVjdCBsaW5rIHRvIExhbWJkYSBmdW5jdGlvbjogJHtsYW1iZGFGdW5jdGlvblVybChmb2xsb3dlcil9YCxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOlxuICAgICAgICAgIENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogMyxcbiAgICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLk1JU1NJTkcsXG4gICAgICB9KTtcbiAgICBtb25pdG9yaW5nLmFkZExvd1NldmVyaXR5QWxhcm0oJ05wbUpzL0ZvbGxvd2VyIEZhaWx1cmVzJywgZmFpbHVyZUFsYXJtKTtcblxuICAgIGNvbnN0IG5vdFJ1bm5pbmdBbGFybSA9IGZvbGxvd2VyXG4gICAgICAubWV0cmljSW52b2NhdGlvbnMoeyBwZXJpb2Q6IEZPTExPV0VSX1JVTl9SQVRFIH0pXG4gICAgICAuY3JlYXRlQWxhcm0oc2NvcGUsICdOcG1Kcy9Gb2xsb3dlci9Ob3RSdW5uaW5nJywge1xuICAgICAgICBhbGFybU5hbWU6IGAke3Njb3BlLm5vZGUucGF0aH0vTnBtSnMvRm9sbG93ZXIvTm90UnVubmluZ2AsXG4gICAgICAgIGFsYXJtRGVzY3JpcHRpb246IFtcbiAgICAgICAgICAnVGhlIE5wbUpzIGZvbGxvd2VyIGZ1bmN0aW9uIGlzIG5vdCBydW5uaW5nIScsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgYFJ1bkJvb2s6ICR7UlVOQk9PS19VUkx9YCxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICBgRGlyZWN0IGxpbmsgdG8gTGFtYmRhIGZ1bmN0aW9uOiAke2xhbWJkYUZ1bmN0aW9uVXJsKGZvbGxvd2VyKX1gLFxuICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5MRVNTX1RIQU5fVEhSRVNIT0xELFxuICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogMixcbiAgICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLkJSRUFDSElORyxcbiAgICAgIH0pO1xuICAgIG1vbml0b3JpbmcuYWRkSGlnaFNldmVyaXR5QWxhcm0oXG4gICAgICAnTnBtSnMvRm9sbG93ZXIgTm90IFJ1bm5pbmcnLFxuICAgICAgbm90UnVubmluZ0FsYXJtXG4gICAgKTtcblxuICAgIC8vIFRoZSBwZXJpb2QgZm9yIHRoaXMgYWxhcm0gbmVlZHMgdG8gbWF0Y2ggdGhlIHNjaGVkdWxpbmcgaW50ZXJ2YWwgb2YgdGhlXG4gICAgLy8gZm9sbG93ZXIsIG90aGVyd2lzZSB0aGUgbWV0cmljIHdpbGwgYmUgdG9vIHNwYXJzZSB0byBwcm9wZXJseSBkZXRlY3RcbiAgICAvLyBwcm9ibGVtcy5cbiAgICBjb25zdCBub0NoYW5nZUFsYXJtID0gdGhpcy5tZXRyaWNDaGFuZ2VDb3VudCh7XG4gICAgICBwZXJpb2Q6IEZPTExPV0VSX1JVTl9SQVRFLFxuICAgIH0pLmNyZWF0ZUFsYXJtKHNjb3BlLCAnTnBtSnMvRm9sbG93ZXIvTm9DaGFuZ2VzJywge1xuICAgICAgYWxhcm1OYW1lOiBgJHtzY29wZS5ub2RlLnBhdGh9L05wbUpzL0ZvbGxvd2VyL05vQ2hhbmdlc2AsXG4gICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgICdUaGUgTnBtSnMgZm9sbG93ZXIgZnVuY3Rpb24gaXMgbm90IGRpc2NvdmVyaW5nIGFueSBjaGFuZ2VzIGZyb20gQ291Y2hEQiEnLFxuICAgICAgICAnJyxcbiAgICAgICAgYFJ1bkJvb2s6ICR7UlVOQk9PS19VUkx9YCxcbiAgICAgICAgJycsXG4gICAgICAgIGBEaXJlY3QgbGluayB0byBMYW1iZGEgZnVuY3Rpb246ICR7bGFtYmRhRnVuY3Rpb25VcmwoZm9sbG93ZXIpfWAsXG4gICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuTEVTU19USEFOX1RIUkVTSE9MRCxcbiAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiBob3dPZnRlbihGT0xMT1dFUl9SVU5fUkFURSwgTk9fQ0hBTkdFU19BTEFSTV9EVVJBVElPTiksXG4gICAgICB0aHJlc2hvbGQ6IDEsXG4gICAgICAvLyBJZiB0aGUgbWV0cmljIGlzIG5vdCBlbWl0dGVkLCBpdCBjYW4gYmUgYXNzdW1lZCB0byBiZSB6ZXJvLlxuICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5CUkVBQ0hJTkcsXG4gICAgfSk7XG4gICAgbW9uaXRvcmluZy5hZGRMb3dTZXZlcml0eUFsYXJtKFxuICAgICAgJ05wIG5wbWpzLmNvbSBjaGFuZ2VzIGRpc2NvdmVyZWQnLFxuICAgICAgbm9DaGFuZ2VBbGFybVxuICAgICk7XG5cbiAgICBjb25zdCBkbHFOb3RFbXB0eUFsYXJtID0gbmV3IE1hdGhFeHByZXNzaW9uKHtcbiAgICAgIGV4cHJlc3Npb246ICdtVmlzaWJsZSArIG1IaWRkZW4nLFxuICAgICAgdXNpbmdNZXRyaWNzOiB7XG4gICAgICAgIG1WaXNpYmxlOlxuICAgICAgICAgIHN0YWdlci5kZWFkTGV0dGVyUXVldWUhLm1ldHJpY0FwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlc1Zpc2libGUoe1xuICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgICAgIH0pLFxuICAgICAgICBtSGlkZGVuOlxuICAgICAgICAgIHN0YWdlci5kZWFkTGV0dGVyUXVldWUhLm1ldHJpY0FwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlc05vdFZpc2libGUoe1xuICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9KS5jcmVhdGVBbGFybShzY29wZSwgYCR7c2NvcGUubm9kZS5wYXRofS9OcG1Kcy9TdGFnZXIvRExRTm90RW1wdHlgLCB7XG4gICAgICBhbGFybU5hbWU6IGAke3Njb3BlLm5vZGUucGF0aH0vTnBtSnMvU3RhZ2VyL0RMUU5vdEVtcHR5YCxcbiAgICAgIGFsYXJtRGVzY3JpcHRpb246IFtcbiAgICAgICAgJ1RoZSBOcG1KUyBwYWNrYWdlIHN0YWdlciBpcyBmYWlsaW5nIC0gaXRzIGRlYWQgbGV0dGVyIHF1ZXVlIGlzIG5vdCBlbXB0eScsXG4gICAgICAgICcnLFxuICAgICAgICBgTGluayB0byB0aGUgbGFtYmRhIGZ1bmN0aW9uOiAke2xhbWJkYUZ1bmN0aW9uVXJsKHN0YWdlcil9YCxcbiAgICAgICAgYExpbmsgdG8gdGhlIGRlYWQgbGV0dGVyIHF1ZXVlOiAke3Nxc1F1ZXVlVXJsKFxuICAgICAgICAgIHN0YWdlci5kZWFkTGV0dGVyUXVldWUhXG4gICAgICAgICl9YCxcbiAgICAgICAgJycsXG4gICAgICAgIGBSdW5ib29rOiAke1JVTkJPT0tfVVJMfWAsXG4gICAgICBdLmpvaW4oJy9uJyksXG4gICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDIsXG4gICAgICB0aHJlc2hvbGQ6IDEsXG4gICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLk5PVF9CUkVBQ0hJTkcsXG4gICAgfSk7XG4gICAgbW9uaXRvcmluZy5hZGRMb3dTZXZlcml0eUFsYXJtKFxuICAgICAgJ05wbUpzL1N0YWdlciBETFEgTm90IEVtcHR5JyxcbiAgICAgIGRscU5vdEVtcHR5QWxhcm1cbiAgICApO1xuXG4gICAgLy8gRmluYWxseSAtIHRoZSBcIm5vdCBydW5uaW5nXCIgYWxhcm0gZGVwZW5kcyBvbiB0aGUgc2NoZWR1bGUgKGl0IHdvbid0IHJ1biB1bnRpbCB0aGUgc2NoZWR1bGVcbiAgICAvLyBleGlzdHMhKSwgYW5kIHRoZSBzY2hlZHVsZSBkZXBlbmRzIG9uIHRoZSBmYWlsdXJlIGFsYXJtIGV4aXN0aW5nICh3ZSBkb24ndCB3YW50IGl0IHRvIHJ1blxuICAgIC8vIGJlZm9yZSB3ZSBjYW4ga25vdyBpdCBpcyBmYWlsaW5nKS4gVGhpcyBtZWFucyB0aGUgcmV0dXJuZWQgYElEZXBlbmRhYmxlYCBlZmZlY3RpdmVseSBlbnN1cmVzXG4gICAgLy8gYWxsIGFsYXJtcyBoYXZlIGJlZW4gcHJvdmlzaW9uZWQgYWxyZWFkeSEgSXNuJ3QgaXQgbmljZSFcbiAgICBub3RSdW5uaW5nQWxhcm0ubm9kZS5hZGREZXBlbmRlbmN5KHNjaGVkdWxlKTtcbiAgICBzY2hlZHVsZS5ub2RlLmFkZERlcGVuZGVuY3koZmFpbHVyZUFsYXJtKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJDYW5hcnkoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBwYWNrYWdlTmFtZTogc3RyaW5nLFxuICAgIC8vIEEgZHVyYXRpb24gc3BlY2lmeWluZyBob3cgbG9uZyB3ZSBleHBlY3QgdGhlIHByb2JlIHBhY2thZ2UgdG8gYXBwZWFyIG9uXG4gICAgLy8gQ29uc3RydWN0IEh1YiBhZnRlciBpdCBnZXRzIHB1Ymxpc2hlZCB0byBucG0sIGFzc3VtaW5nIHRoZSBucG0gcmVwbGljYVxuICAgIC8vIGlzIHVwIHRvIGRhdGUgZXRjLlxuICAgIHZpc2liaWxpdHlTbGE6IER1cmF0aW9uLFxuICAgIGJ1Y2tldDogSUJ1Y2tldCxcbiAgICBjb25zdHJ1Y3RIdWJCYXNlVXJsOiBzdHJpbmcsXG4gICAgbW9uaXRvcmluZzogSU1vbml0b3JpbmdcbiAgKTogSVdpZGdldFtdIHtcbiAgICBjb25zdCBjYW5hcnkgPSBuZXcgTnBtSnNQYWNrYWdlQ2FuYXJ5KHNjb3BlLCAnQ2FuYXJ5Jywge1xuICAgICAgYnVja2V0LFxuICAgICAgY29uc3RydWN0SHViQmFzZVVybCxcbiAgICAgIHBhY2thZ2VOYW1lLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcGVyaW9kID0gRHVyYXRpb24ubWludXRlcyg1KTtcblxuICAgIGNvbnN0IGFsYXJtID0gbmV3IE1hdGhFeHByZXNzaW9uKHtcbiAgICAgIC8vIFdoZW4gdGhlIG5wbSByZXBsaWNhIGlzIHN1ZmZpY2llbnRseSBiZWhpbmQgdGhlIHByaW1hcnksIHRoZSBwYWNrYWdlIHNvdXJjZSB3aWxsIG5vdCBiZVxuICAgICAgLy8gYWJsZSB0byByZWdpc3RlciBuZXcgY2FuYXJ5IHBhY2thZ2UgdmVyc2lvbnMgd2l0aGluIHRoZSBTTEEuIEluIHN1Y2ggY2FzZXMsIHRoZXJlIGlzXG4gICAgICAvLyBub3RoaW5nIHRoYXQgY2FuIGJlIGRvbmUgZXhjZXB0IGZvciB3YWl0aW5nIHVudGlsIHRoZSByZXBsaWNhIGhhcyBmaW5hbGx5IGNhdWdodCB1cC4gV2VcbiAgICAgIC8vIGhlbmNlIHN1cHByZXNzIHRoZSBhbGFybSBpZiB0aGUgcmVwbGljYSBsYWcgaXMgZ2V0dGluZyB3aXRoaW4gMyBldmFsdWF0aW9uIHBlcmlvZHMgb2YgdGhlXG4gICAgICAvLyB2aXNpYmlsaXR5IFNMQS5cbiAgICAgIGV4cHJlc3Npb246IGBJRihGSUxMKG1MYWcsIFJFUEVBVCkgPCAke01hdGgubWF4KFxuICAgICAgICB2aXNpYmlsaXR5U2xhLnRvU2Vjb25kcygpIC0gMyAqIHBlcmlvZC50b1NlY29uZHMoKSxcbiAgICAgICAgMyAqIHBlcmlvZC50b1NlY29uZHMoKVxuICAgICAgKX0sIE1BWChbbUR3ZWxsLCBtVFRDXSkpYCxcbiAgICAgIHBlcmlvZCxcbiAgICAgIHVzaW5nTWV0cmljczoge1xuICAgICAgICBtRHdlbGw6IGNhbmFyeS5tZXRyaWNEd2VsbFRpbWUoKSxcbiAgICAgICAgbVRUQzogY2FuYXJ5Lm1ldHJpY1RpbWVUb0NhdGFsb2coKSxcbiAgICAgICAgbUxhZzogY2FuYXJ5Lm1ldHJpY0VzdGltYXRlZE5wbVJlcGxpY2FMYWcoKSxcbiAgICAgIH0sXG4gICAgfSkuY3JlYXRlQWxhcm0oY2FuYXJ5LCAnQWxhcm0nLCB7XG4gICAgICBhbGFybU5hbWU6IGAke2NhbmFyeS5ub2RlLnBhdGh9L1NMQS1CcmVhY2hlZGAsXG4gICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgIGBOZXcgdmVyc2lvbnMgb2YgJHtwYWNrYWdlTmFtZX0gaGF2ZSBiZWVuIHB1Ymxpc2hlZCBvdmVyICR7dmlzaWJpbGl0eVNsYS50b0h1bWFuU3RyaW5nKCl9IGFnbyBhbmQgYXJlIHN0aWxsIG5vdCB2aXNpYmxlIGluIGNvbnN0cnVjdCBodWJgLFxuICAgICAgICBgUnVuYm9vazogJHtSVU5CT09LX1VSTH1gLFxuICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9USFJFU0hPTEQsXG4gICAgICBldmFsdWF0aW9uUGVyaW9kczogNCxcbiAgICAgIHRyZWF0TWlzc2luZ0RhdGE6IFRyZWF0TWlzc2luZ0RhdGEuTk9UX0JSRUFDSElORyxcbiAgICAgIHRocmVzaG9sZDogdmlzaWJpbGl0eVNsYS50b1NlY29uZHMoKSxcbiAgICB9KTtcbiAgICAvLyBUaGlzIGlzIGRlZW1lZCBsb3cgc2V2ZXJpdHksIGJlY2F1c2UgdGhlIG5wbSByZWdpc3RyeSByZXBsaWNhIChyZXBsaWNhdGUubnBtanMuY29tKSBjYW5cbiAgICAvLyBvY2Nhc2lvbmFsbHkgbGFnIHNldmVyYWwgaG91cnMgYmVoaW5kIHRoZSBwcmltYXJ5IChyZWdpc3RyeS5ucG1qcy5jb20pLCBhbmQgd2UgY2Fubm90IGVhc2lseVxuICAgIC8vIHRlbGwgYWJvdXQgdGhhdC4gU29tZW9uZSBzaG91bGQgaGF2ZSBhIGxvb2ssIGJ1dCBpbiB2aXJ0dWFsbHkgYWxsIGNhc2VzIHdlIGhhdmUgc2VlbiBzbyBmYXIsXG4gICAgLy8gdGhlcmUgaXMgbm90aGluZyB0aGF0IGNhbiBiZSBkb25lIGZyb20gb3VyIGVuZCwgYmVzaWRlcyB3YWl0aW5nIGZvciB0aGUgcmVwbGljYSB0byBiZSBhbGxcbiAgICAvLyBjYXVnaHQgdXAuXG4gICAgbW9uaXRvcmluZy5hZGRMb3dTZXZlcml0eUFsYXJtKFxuICAgICAgJ05ldyB2ZXJzaW9uIHZpc2liaWxpdHkgU0xBIGJyZWFjaGVkJyxcbiAgICAgIGFsYXJtXG4gICAgKTtcblxuICAgIGNvbnN0IG5vdFJ1bm5pbmdPckZhaWxpbmdBbGFybSA9IG5ldyBDb21wb3NpdGVBbGFybShcbiAgICAgIGNhbmFyeSxcbiAgICAgICdOb3RSdW5uaW5nT3JGYWlsaW5nJyxcbiAgICAgIHtcbiAgICAgICAgYWxhcm1SdWxlOiBBbGFybVJ1bGUuYW55T2YoXG4gICAgICAgICAgY2FuYXJ5XG4gICAgICAgICAgICAubWV0cmljRXJyb3JzKHsgcGVyaW9kLCBzdGF0aXN0aWM6IFN0YXRpc3RpYy5TVU0gfSlcbiAgICAgICAgICAgIC5jcmVhdGVBbGFybShjYW5hcnksICdGYWlsaW5nJywge1xuICAgICAgICAgICAgICBhbGFybU5hbWU6IGAke2NhbmFyeS5ub2RlLnBhdGh9L0ZhaWxpbmdgLFxuICAgICAgICAgICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fVEhSRVNIT0xELFxuICAgICAgICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogMixcbiAgICAgICAgICAgICAgdGhyZXNob2xkOiAwLFxuICAgICAgICAgICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLkJSRUFDSElORyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIGNhbmFyeVxuICAgICAgICAgICAgLm1ldHJpY0ludm9jYXRpb25zKHsgcGVyaW9kLCBzdGF0aXN0aWM6IFN0YXRpc3RpYy5TVU0gfSlcbiAgICAgICAgICAgIC5jcmVhdGVBbGFybShjYW5hcnksICdOb3RSdW5uaW5nJywge1xuICAgICAgICAgICAgICBhbGFybU5hbWU6IGAke2NhbmFyeS5ub2RlLnBhdGh9L05vdFJ1bm5pbmdgLFxuICAgICAgICAgICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5MRVNTX1RIQU5fVEhSRVNIT0xELFxuICAgICAgICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogMixcbiAgICAgICAgICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgICAgICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLkJSRUFDSElORyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICksXG4gICAgICAgIGFsYXJtRGVzY3JpcHRpb246IFtcbiAgICAgICAgICAnVGhlIE5wbUpzIHBhY2thZ2UgY2FuYXJ5IGlzIG5vdCBydW5uaW5nIG9yIGlzIGZhaWxpbmcuIFRoaXMgcHJldmVudHMgYWxhcm1pbmcgd2hlbiB0aGlzIGluc3RhbmNlIG9mJyxcbiAgICAgICAgICAnQ29uc3RydWN0SHViIGZhbGxzIG91dCBvZiBTTEEgZm9yIG5ldyBwYWNrYWdlIGluZ2VzdGlvbiEnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIGBSdW5ib29rOiAke1JVTkJPT0tfVVJMfWAsXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgIGNvbXBvc2l0ZUFsYXJtTmFtZTogYCR7Y2FuYXJ5Lm5vZGUucGF0aH0vTm90UnVubmluZ09yRmFpbGluZ2AsXG4gICAgICB9XG4gICAgKTtcbiAgICBtb25pdG9yaW5nLmFkZEhpZ2hTZXZlcml0eUFsYXJtKFxuICAgICAgJ05wbUpzIEZvbGxvd2VyIENhbmFyeSBpcyBub3QgcnVubmluZyBvciBmYWlscycsXG4gICAgICBub3RSdW5uaW5nT3JGYWlsaW5nQWxhcm1cbiAgICApO1xuXG4gICAgLy8gVXNpbmcgTUlOIHN0YXRpc3RpYywgc28gaWYgYSBydW4gaXMgc3VjY2Vzc2Z1bCAoYW5kIGhlbmNlIGVtaXRzIGEgMCksIHRoaXMgYWxhcm0gd2lsbCBub3QgdHJpZ2dlci5cbiAgICBjb25zdCBnYXRld2F5RXJyb3JzQWxhcm0gPSBjYW5hcnlcbiAgICAgIC5tZXRyaWNIdHRwR2F0ZXdheUVycm9ycyh7IHBlcmlvZCwgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUlOSU1VTSB9KVxuICAgICAgLmNyZWF0ZUFsYXJtKGNhbmFyeSwgJ0dhdGV3YXlFcnJvcnMnLCB7XG4gICAgICAgIGFsYXJtRGVzY3JpcHRpb246IFtcbiAgICAgICAgICAnVGhlIE5wbUpzIHBhY2thZ2UgY2FuYXJ5IGhhcyBiZWVuIGVuY291bnRlcmluZyBjb25zaXN0ZW50IEhUVFAgZ2F0ZXdheSBlcnJvcnMgd2hlbiBjb250YWN0aW5nIG5wbWpzIHNlcnZlcnMnLFxuICAgICAgICAgICdmb3IgYW4gaG91ciBvciBtb3JlLiBUaGlzIG1lYW5zIHRoZSBjYW5hcnkgaGFzIGJlZW4gdW5hYmxlIHRvIGV2YWx1YXRlIFNMQSBjb21wbGlhbmNlIGZvciB0aGF0IG11Y2ggdGltZS4nLFxuICAgICAgICAgICdJdCBpcyBwcm9iYWJsZSB0aGF0IG5vdGhpbmcgY2FuIGJlIGRvbmUgZXhjZXB0IGZvciB3YWl0aW5nIGZvciBucG0gc2VydmVycyB0byBjb21lIGJhY2sgb25saW5lLCBidXQgdGhlJyxcbiAgICAgICAgICAnc2l0dWF0aW9uIHNob3VsZCBiZSBjaGVja2VkIHRvIG1ha2Ugc3VyZSB0aGVyZSBpcyBub3QgYW5vdGhlciBwcm9ibGVtLicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgYFJ1bmJvb2s6ICR7UlVOQk9PS19VUkx9YCxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgYWxhcm1OYW1lOiBgJHtjYW5hcnkubm9kZS5wYXRofS9HYXRld2F5RXJyb3JzYCxcbiAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX1RIUkVTSE9MRCxcbiAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDYwLFxuICAgICAgICB0aHJlc2hvbGQ6IDAsXG4gICAgICAgIHRyZWF0TWlzc2luZ0RhdGE6IFRyZWF0TWlzc2luZ0RhdGEuQlJFQUNISU5HLFxuICAgICAgfSk7XG4gICAgbW9uaXRvcmluZy5hZGRMb3dTZXZlcml0eUFsYXJtKFxuICAgICAgJ05wbUpzIEZvbGxvd2VyIENhbmFyeSBpcyBleHBlcmllbmNpbmcgSFRUUCBHYXRld2F5IGVycm9ycycsXG4gICAgICBnYXRld2F5RXJyb3JzQWxhcm1cbiAgICApO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgIGhlaWdodDogNixcbiAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICB0aXRsZTogJ1BhY2thZ2UgQ2FuYXJ5JyxcbiAgICAgICAgbGVmdDogW1xuICAgICAgICAgIGNhbmFyeS5tZXRyaWNEd2VsbFRpbWUoeyBsYWJlbDogJ0R3ZWxsIFRpbWUnIH0pLFxuICAgICAgICAgIGNhbmFyeS5tZXRyaWNUaW1lVG9DYXRhbG9nKHsgbGFiZWw6ICdUaW1lIHRvIENhdGFsb2cnIH0pLFxuICAgICAgICBdLFxuICAgICAgICBsZWZ0QW5ub3RhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2xvcjogJyNmZjAwMDAnLFxuICAgICAgICAgICAgbGFiZWw6IGBTTEEgKCR7dmlzaWJpbGl0eVNsYS50b0h1bWFuU3RyaW5nKCl9KWAsXG4gICAgICAgICAgICB2YWx1ZTogdmlzaWJpbGl0eVNsYS50b1NlY29uZHMoKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgIHJpZ2h0OiBbXG4gICAgICAgICAgY2FuYXJ5Lm1ldHJpY1RyYWNrZWRWZXJzaW9uQ291bnQoeyBsYWJlbDogJ1RyYWNrZWQgVmVyc2lvbiBDb3VudCcgfSksXG4gICAgICAgIF0sXG4gICAgICAgIHJpZ2h0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICB9KSxcbiAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgIGhlaWdodDogNixcbiAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICB0aXRsZTogJ09ic2VydmVkIGxhZyBvZiByZXBsaWNhdGUubnBtanMuY29tJyxcbiAgICAgICAgbGVmdDogW1xuICAgICAgICAgIGNhbmFyeS5tZXRyaWNFc3RpbWF0ZWROcG1SZXBsaWNhTGFnKHtcbiAgICAgICAgICAgIGxhYmVsOiBgUmVwbGljYSBsYWcgKCR7cGFja2FnZU5hbWV9KWAsXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICAgIGxlZnRBbm5vdGF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbG9yOiAnI2ZmYTUwMCcsXG4gICAgICAgICAgICBsYWJlbDogdmlzaWJpbGl0eVNsYS50b0h1bWFuU3RyaW5nKCksXG4gICAgICAgICAgICB2YWx1ZTogdmlzaWJpbGl0eVNsYS50b1NlY29uZHMoKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICB9KSxcbiAgICBdO1xuICB9XG59XG5cbi8qKlxuICogSG93IG9mdGVuICdyYXRlJyBnb2VzIGludG8gJ2R1cmF0aW9uJyAocm91bmRlZCB1cClcbiAqL1xuZnVuY3Rpb24gaG93T2Z0ZW4ocmF0ZTogRHVyYXRpb24sIGR1cmF0aW9uOiBEdXJhdGlvbikge1xuICByZXR1cm4gTWF0aC5jZWlsKGR1cmF0aW9uLnRvU2Vjb25kcygpIC8gcmF0ZS50b1NlY29uZHMoKSk7XG59XG4iXX0=
|
556
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtanMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFja2FnZS1zb3VyY2VzL25wbWpzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQXVDO0FBQ3ZDLCtEQVdvQztBQUNwQyx1REFBd0Q7QUFDeEQsdUVBQWdFO0FBQ2hFLHVEQUFpRDtBQUNqRCxtRkFBc0U7QUFDdEUsK0NBQWdFO0FBQ2hFLGlEQUE2RDtBQUU3RCw0Q0FBMkU7QUFDM0Usa0RBQTZDO0FBQzdDLDJDQUFvRDtBQUNwRCw2RUFLeUM7QUFDekMsNkRBQXdEO0FBQ3hELCtEQUEwRDtBQU8xRCxnREFBNkM7QUFDN0MsMkNBQWlEO0FBQ2pELCtFQUF5RTtBQUV6RTs7OztHQUlHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUU5Qzs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0seUJBQXlCLEdBQUcsc0JBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7QUFvQ3JEOztHQUVHO0FBQ0gsTUFBYSxLQUFLO0lBQ2hCLFlBQW9DLFFBQW9CLEVBQUU7UUFBdEIsVUFBSyxHQUFMLEtBQUssQ0FBaUI7SUFBRyxDQUFDO0lBRXZELElBQUksQ0FDVCxLQUFnQixFQUNoQixFQUNFLE9BQU8sRUFDUCxRQUFRLEVBQ1IsU0FBUyxFQUNULFdBQVcsRUFDWCxVQUFVLEVBQ1YsS0FBSyxFQUNMLFVBQVUsRUFDVixpQkFBaUIsR0FDUTtRQUUzQixVQUFVLEVBQUUscUJBQXFCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFbEQsTUFBTSxjQUFjLEdBQUcsMEJBQWdCLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNELE1BQU0sTUFBTSxHQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYTtZQUN4QixjQUFjLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxxQkFBcUIsRUFBRTtnQkFDckQs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QVcsQ0FBQztnQkFDZCxNQUFNLEVBQUUsQ0FBQztnQkFDVCxLQUFLLEVBQUUsRUFBRTtnQkFDVCxLQUFLLEVBQUUscUNBQXFDO2dCQUM1QyxJQUFJLEVBQUU7b0JBQ0osTUFBTSxDQUFDLDRCQUE0QixDQUFDO3dCQUNsQyxLQUFLLEVBQUUsZ0JBQWdCLFdBQVcsR0FBRztxQkFDdEMsQ0FBQztpQkFDSDtnQkFDRCxlQUFlLEVBQUU7b0JBQ2Y7d0JBQ0UsS0FBSyxFQUFFLFNBQVM7d0JBQ2hCLEtBQUssRUFBRSxhQUFhLENBQUMsYUFBYSxFQUFFO3dCQUNwQyxLQUFLLEVBQUUsYUFBYSxDQUFDLFNBQVMsRUFBRTtxQkFDakM7aUJBQ0Y7Z0JBQ0QsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUN0QixDQUFDO1NBQ0gsQ0FBQztJQUNKLENBQUM7O0FBdm5CSCxzQkF3bkJDOzs7QUFFRDs7R0FFRztBQUNILFNBQVMsUUFBUSxDQUFDLElBQWMsRUFBRSxRQUFrQjtJQUNsRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBQzVELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7XG4gIEFsYXJtUnVsZSxcbiAgQ29tcGFyaXNvbk9wZXJhdG9yLFxuICBDb21wb3NpdGVBbGFybSxcbiAgR3JhcGhXaWRnZXQsXG4gIElXaWRnZXQsXG4gIE1hdGhFeHByZXNzaW9uLFxuICBNZXRyaWMsXG4gIE1ldHJpY09wdGlvbnMsXG4gIFN0YXRpc3RpYyxcbiAgVHJlYXRNaXNzaW5nRGF0YSxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgUnVsZSwgU2NoZWR1bGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZXZlbnRzJztcbmltcG9ydCB7IExhbWJkYUZ1bmN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cy10YXJnZXRzJztcbmltcG9ydCB7IFRyYWNpbmcgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IFNxc0V2ZW50U291cmNlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ldmVudC1zb3VyY2VzJztcbmltcG9ydCB7IEJsb2NrUHVibGljQWNjZXNzLCBJQnVja2V0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCB7IFF1ZXVlLCBRdWV1ZUVuY3J5cHRpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3FzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgbGFtYmRhRnVuY3Rpb25VcmwsIHMzT2JqZWN0VXJsLCBzcXNRdWV1ZVVybCB9IGZyb20gJy4uL2RlZXAtbGluayc7XG5pbXBvcnQgeyBmaWxsTWV0cmljIH0gZnJvbSAnLi4vbWV0cmljLXV0aWxzJztcbmltcG9ydCB7IE5wbUpzUGFja2FnZUNhbmFyeSB9IGZyb20gJy4vbnBtanMvY2FuYXJ5JztcbmltcG9ydCB7XG4gIE1BUktFUl9GSUxFX05BTUUsXG4gIE1FVFJJQ1NfTkFNRVNQQUNFLFxuICBNZXRyaWNOYW1lLFxuICBTM0tleVByZWZpeCxcbn0gZnJvbSAnLi9ucG1qcy9jb25zdGFudHMubGFtYmRhLXNoYXJlZCc7XG5pbXBvcnQgeyBOcG1Kc0ZvbGxvd2VyIH0gZnJvbSAnLi9ucG1qcy9ucG0tanMtZm9sbG93ZXInO1xuaW1wb3J0IHsgU3RhZ2VBbmROb3RpZnkgfSBmcm9tICcuL25wbWpzL3N0YWdlLWFuZC1ub3RpZnknO1xuaW1wb3J0IHsgSU1vbml0b3JpbmcgfSBmcm9tICcuLi9tb25pdG9yaW5nL2FwaSc7XG5pbXBvcnQgdHlwZSB7XG4gIElQYWNrYWdlU291cmNlLFxuICBQYWNrYWdlU291cmNlQmluZE9wdGlvbnMsXG4gIFBhY2thZ2VTb3VyY2VCaW5kUmVzdWx0LFxufSBmcm9tICcuLi9wYWNrYWdlLXNvdXJjZSc7XG5pbXBvcnQgeyBSVU5CT09LX1VSTCB9IGZyb20gJy4uL3J1bmJvb2stdXJsJztcbmltcG9ydCB7IFMzU3RvcmFnZUZhY3RvcnkgfSBmcm9tICcuLi9zMy9zdG9yYWdlJztcbmltcG9ydCB7IFJlU3RhZ2VQYWNrYWdlVmVyc2lvbiB9IGZyb20gJy4vbnBtanMvcmUtc3RhZ2UtcGFja2FnZS12ZXJzaW9uJztcblxuLyoqXG4gKiBUaGUgcGVyaW9kaWNpdHkgYXQgd2hpY2ggdGhlIE5wbUpzIGZvbGxvd2VyIHdpbGwgcnVuLiBUaGlzIE1VU1QgYmUgYSB2YWxpZFxuICogQ2xvdWRXYXRjaCBNZXRyaWMgZ3JhaW4sIGFzIHRoaXMgd2lsbCBhbHNvIGJlIHRoZSBwZXJpb2Qgb2YgdGhlIENsb3VkV2F0Y2hcbiAqIGFsYXJtIHRoYXQgbW9uaXRvcnMgdGhlIGhlYWx0aCBvZiB0aGUgZm9sbG93ZXIuXG4gKi9cbmNvbnN0IEZPTExPV0VSX1JVTl9SQVRFID0gRHVyYXRpb24ubWludXRlcyg1KTtcblxuLyoqXG4gKiBBbGFybSBpZiB3ZSBoYXZlbid0IHNlZW4gY2hhbmdlcyBvdmVyIHRoaXMgdGltZVxuICpcbiAqIFRoZSBDb3VjaERCIGxlYWRlciBvY2Nhc2lvbmFsbHkganVzdCBzdGFydHMgdG9zc2luZyBvdXQgdGltZW91dHMgYW5kIHRoZXlcbiAqIG1heSBsYXN0IGZvciBhIGdvb2Qgd2hpbGUuXG4gKlxuICogLSBPbiAyMDIyLTA5LTI5IGl0IHdhcyBzbG93IGZvciAxMiBob3Vycy5cbiAqIC0gT24gMjAyMi0xMC0wNCBpdCB3YXMgc2xvdyBmb3IgMiBob3Vycy5cbiAqXG4gKiBUaGlzIGlzIGxlYWRpbmcgdG8gZXh0cmVtZSBhbGFybSBmYXRpZ3VlLCBhbmQgYWxzbyB0aGlzIGFsYXJtIGlzIG5vbi1hY3Rpb25hYmxlLlxuICogTGV0J3MgYmUgdmVyeSB2ZXJ5IGNvbnNlcnZhdGl2ZSBoZXJlLlxuICovXG5jb25zdCBOT19DSEFOR0VTX0FMQVJNX0RVUkFUSU9OID0gRHVyYXRpb24uaG91cnMoMjQpO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5wbUpzUHJvcHMge1xuICAvKipcbiAgICogVGhlIGJ1Y2tldCB0byB1c2UgZm9yIHN0YWdpbmcgbnBtIHBhY2thZ2VzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgbmV3IGJ1Y2tldCB3aWxsIGJlIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSBzdGFnaW5nQnVja2V0PzogSUJ1Y2tldDtcblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgcGFja2FnZSBjYW5hcnksIHdoaWNoIHdpbGwgdHJhY2sgYXZhaWxhYmlsaXR5IG9mIGEgY2FuYXJ5XG4gICAqIHBhY2thZ2UgaW4gQ29uc3RydWN0SHViLCBhbmQgZW1pdCBkZWRpY2F0ZWQgbWV0cmljcy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlQ2FuYXJ5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHBhY2thZ2UgdGhhdCBpcyBtb25pdG9yZWQgYnkgdGhlIHBhY2thZ2UgY2FuYXJ5LCBpZiBlbmFibGVkIGJ5XG4gICAqIGBlbmFibGVDYW5hcnlgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnY29uc3RydWN0LWh1Yi1wcm9iZSdcbiAgICovXG4gIHJlYWRvbmx5IGNhbmFyeVBhY2thZ2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB0aW1lIGl0IGlzIHN1cHBvc2VkIHRvIHRha2UgZm9yIHBhY2thZ2VzIHRvIGJlY29tZVxuICAgKiB2aXNpYmxlIGluIHRoaXMgQ29uc3RydWN0SHViIGluc3RhbmNlLiBJZiBgZW5hYmxlQ2FuYXJ5YCBpcyBlbmFibGVkLCBhblxuICAgKiBhbGFybSB3aWxsIHRyaWdnZXIgaWYgdGhpcyBTTEEgaXMgYnJlYWNoZWQgYnkgdGhlIGBjYW5hcnlQYWNrYWdlYC5cbiAgICpcbiAgICogQGRlZmF1bHQgRHVyYXRpb24ubWludXRlcyg1KVxuICAgKi9cbiAgcmVhZG9ubHkgY2FuYXJ5U2xhPzogRHVyYXRpb247XG59XG5cbi8qKlxuICogQSBwYWNrYWdlIHNvdXJjZSB0aGF0IGdldHMgcGFja2FnZSBkYXRhIGZyb20gdGhlIG5wbWpzLmNvbSBwYWNrYWdlIHJlZ2lzdHJ5LlxuICovXG5leHBvcnQgY2xhc3MgTnBtSnMgaW1wbGVtZW50cyBJUGFja2FnZVNvdXJjZSB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBOcG1Kc1Byb3BzID0ge30pIHt9XG5cbiAgcHVibGljIGJpbmQoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICB7XG4gICAgICBiYXNlVXJsLFxuICAgICAgZGVueUxpc3QsXG4gICAgICBpbmdlc3Rpb24sXG4gICAgICBsaWNlbnNlTGlzdCxcbiAgICAgIG1vbml0b3JpbmcsXG4gICAgICBxdWV1ZSxcbiAgICAgIHJlcG9zaXRvcnksXG4gICAgICBvdmVydmlld0Rhc2hib2FyZCxcbiAgICB9OiBQYWNrYWdlU291cmNlQmluZE9wdGlvbnNcbiAgKTogUGFja2FnZVNvdXJjZUJpbmRSZXN1bHQge1xuICAgIHJlcG9zaXRvcnk/LmFkZEV4dGVybmFsQ29ubmVjdGlvbigncHVibGljOm5wbWpzJyk7XG5cbiAgICBjb25zdCBzdG9yYWdlRmFjdG9yeSA9IFMzU3RvcmFnZUZhY3RvcnkuZ2V0T3JDcmVhdGUoc2NvcGUpO1xuICAgIGNvbnN0IGJ1Y2tldCA9XG4gICAgICB0aGlzLnByb3BzLnN0YWdpbmdCdWNrZXQgfHxcbiAgICAgIHN0b3JhZ2VGYWN0b3J5Lm5ld0J1Y2tldChzY29wZSwgJ05wbUpzL1N0YWdpbmdCdWNrZXQnLCB7XG4gICAgICAgIGJsb2NrUHVibGljQWNjZXNzOiBCbG9ja1B1YmxpY0FjY2Vzcy5CTE9DS19BTEwsXG4gICAgICAgIGVuZm9yY2VTU0w6IHRydWUsXG4gICAgICAgIHZlcnNpb25lZDogdHJ1ZSwgLy8gd2Ugc3RvcmUgc3RhdGUgaW4gdGhpcyBidWNrZXQ7IHZlcnNpb25zIGJhY2t1cCBvbGQgc3RhdGVcbiAgICAgICAgbGlmZWN5Y2xlUnVsZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcmVmaXg6IFMzS2V5UHJlZml4LlNUQUdFRF9LRVlfUFJFRklYLFxuICAgICAgICAgICAgZXhwaXJhdGlvbjogRHVyYXRpb24uZGF5cygzMCksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgIGJ1Y2tldC5ncmFudFJlYWQoaW5nZXN0aW9uKTtcblxuICAgIGNvbnN0IHN0YWdlciA9IG5ldyBTdGFnZUFuZE5vdGlmeShzY29wZSwgJ05wbUpzLVN0YWdlQW5kTm90aWZ5Jywge1xuICAgICAgZGVhZExldHRlclF1ZXVlOiBuZXcgUXVldWUoc2NvcGUsICdTdGFnZXJETFEnLCB7XG4gICAgICAgIGVuY3J5cHRpb246IFF1ZXVlRW5jcnlwdGlvbi5LTVNfTUFOQUdFRCxcbiAgICAgICAgcmV0ZW50aW9uUGVyaW9kOiBEdXJhdGlvbi5kYXlzKDE0KSxcbiAgICAgICAgdmlzaWJpbGl0eVRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoMTUpLFxuICAgICAgfSksXG4gICAgICBkZXNjcmlwdGlvbjogYFske3Njb3BlLm5vZGUucGF0aH0vTnBtSlMtU3RhZ2VBbmROb3RpZnldIFN0YWdlcyB0YXJiYWxscyB0byBTMyBhbmQgbm90aWZpZXMgQ29uc3RydWN0SHViYCxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIEFXU19FTUZfRU5WSVJPTk1FTlQ6ICdMb2NhbCcsXG4gICAgICAgIEJVQ0tFVF9OQU1FOiBidWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgUVVFVUVfVVJMOiBxdWV1ZS5xdWV1ZVVybCxcbiAgICAgIH0sXG4gICAgICBtZW1vcnlTaXplOiAxMF8wMjQsIC8vIDEwR2lCXG4gICAgICByZXRyeUF0dGVtcHRzOiAyLFxuICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgIHRyYWNpbmc6IFRyYWNpbmcuQUNUSVZFLFxuICAgIH0pO1xuXG4gICAgYnVja2V0LmdyYW50UmVhZFdyaXRlKHN0YWdlcik7XG4gICAgZGVueUxpc3Q/LmdyYW50UmVhZChzdGFnZXIpO1xuICAgIHF1ZXVlLmdyYW50U2VuZE1lc3NhZ2VzKHN0YWdlcik7XG5cbiAgICBzdGFnZXIuYWRkRXZlbnRTb3VyY2UoXG4gICAgICBuZXcgU3FzRXZlbnRTb3VyY2Uoc3RhZ2VyLmRlYWRMZXR0ZXJRdWV1ZSEsIHtcbiAgICAgICAgYmF0Y2hTaXplOiAxLFxuICAgICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IGZvbGxvd2VyID0gbmV3IE5wbUpzRm9sbG93ZXIoc2NvcGUsICdOcG1KcycsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgWyR7c2NvcGUubm9kZS5wYXRofS9OcG1Kc10gUGVyaW9kaWNhbGx5IHF1ZXJ5IG5wbWpzLmNvbSBpbmRleCBmb3IgbmV3IHBhY2thZ2VzYCxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIEFXU19FTUZfRU5WSVJPTk1FTlQ6ICdMb2NhbCcsXG4gICAgICAgIEJVQ0tFVF9OQU1FOiBidWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgRlVOQ1RJT05fTkFNRTogc3RhZ2VyLmZ1bmN0aW9uTmFtZSxcbiAgICAgIH0sXG4gICAgICBtZW1vcnlTaXplOiAxMF8wMjQsIC8vIDEwIEdpQlxuICAgICAgcmVzZXJ2ZWRDb25jdXJyZW50RXhlY3V0aW9uczogMSwgLy8gT25seSBvbmUgZXhlY3V0aW9uIGF0IGEgdGltZSwgdG8gYXZvaWQgcmFjZSBjb25kaXRpb25zIG9uIHRoZSBTMyBtYXJrZXIgb2JqZWN0XG4gICAgICB0aW1lb3V0OiBGT0xMT1dFUl9SVU5fUkFURSxcbiAgICAgIHRyYWNpbmc6IFRyYWNpbmcuQUNUSVZFLFxuICAgIH0pO1xuXG4gICAgYnVja2V0LmdyYW50UmVhZFdyaXRlKGZvbGxvd2VyLCBNQVJLRVJfRklMRV9OQU1FKTtcbiAgICBkZW55TGlzdD8uZ3JhbnRSZWFkKGZvbGxvd2VyKTtcbiAgICBsaWNlbnNlTGlzdC5ncmFudFJlYWQoZm9sbG93ZXIpO1xuICAgIHN0YWdlci5ncmFudEludm9rZShmb2xsb3dlcik7XG5cbiAgICBjb25zdCByZXN0YWdlciA9IG5ldyBSZVN0YWdlUGFja2FnZVZlcnNpb24oc2NvcGUsICdSZVN0YWdlUGFja2FnZVZlcnNpb24nLCB7XG4gICAgICBkZXNjcmlwdGlvbjogYE1hbnVhbGx5IHJlLXN0YWdlIGEgcGFja2FnZSB2ZXJzaW9uYCxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIEZVTkNUSU9OX05BTUU6IHN0YWdlci5mdW5jdGlvbk5hbWUsXG4gICAgICAgIFJFR0lTVFJZX1VSTDogJ2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnJyxcbiAgICAgIH0sXG4gICAgICBtZW1vcnlTaXplOiAxMDI0LFxuICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcygxMCksXG4gICAgfSk7XG4gICAgc3RhZ2VyLmdyYW50SW52b2tlKHJlc3RhZ2VyKTtcblxuICAgIGNvbnN0IHJ1bGUgPSBuZXcgUnVsZShzY29wZSwgJ05wbUpzL1NjaGVkdWxlJywge1xuICAgICAgZGVzY3JpcHRpb246IGAke3Njb3BlLm5vZGUucGF0aH0vTnBtSnMvU2NoZWR1bGVgLFxuICAgICAgc2NoZWR1bGU6IFNjaGVkdWxlLnJhdGUoRk9MTE9XRVJfUlVOX1JBVEUpLFxuICAgICAgdGFyZ2V0czogW25ldyBMYW1iZGFGdW5jdGlvbihmb2xsb3dlcildLFxuICAgIH0pO1xuXG4gICAgdGhpcy5yZWdpc3RlckFsYXJtcyhzY29wZSwgZm9sbG93ZXIsIHN0YWdlciwgbW9uaXRvcmluZywgcnVsZSk7XG5cbiAgICBzdGFnZXIuZGVhZExldHRlclF1ZXVlICYmXG4gICAgICBvdmVydmlld0Rhc2hib2FyZC5hZGRETFFNZXRyaWNUb0Rhc2hib2FyZChcbiAgICAgICAgJ05QTSBKUyBTdGFnZXIgRExRJyxcbiAgICAgICAgc3RhZ2VyLmRlYWRMZXR0ZXJRdWV1ZVxuICAgICAgKTtcbiAgICBmb2xsb3dlci5kZWFkTGV0dGVyUXVldWUgJiZcbiAgICAgIG92ZXJ2aWV3RGFzaGJvYXJkLmFkZERMUU1ldHJpY1RvRGFzaGJvYXJkKFxuICAgICAgICAnTlBNIEpTIEZvbGxvd2VyIERMUScsXG4gICAgICAgIGZvbGxvd2VyLmRlYWRMZXR0ZXJRdWV1ZVxuICAgICAgKTtcbiAgICBvdmVydmlld0Rhc2hib2FyZC5hZGRDb25jdXJyZW50RXhlY3V0aW9uTWV0cmljVG9EYXNoYm9hcmQoXG4gICAgICBmb2xsb3dlcixcbiAgICAgICdOcG1Kc0xhbWJkYSdcbiAgICApO1xuICAgIG92ZXJ2aWV3RGFzaGJvYXJkLmFkZENvbmN1cnJlbnRFeGVjdXRpb25NZXRyaWNUb0Rhc2hib2FyZChcbiAgICAgIHN0YWdlcixcbiAgICAgICdOcG1Kcy1TdGFnZUFuZE5vdGlmeUxhbWJkYSdcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IGZvbGxvd2VyLm5vZGUucGF0aCxcbiAgICAgIGxpbmtzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnTnBtSnMgRm9sbG93ZXInLFxuICAgICAgICAgIHVybDogbGFtYmRhRnVuY3Rpb25VcmwoZm9sbG93ZXIpLFxuICAgICAgICAgIHByaW1hcnk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHsgbmFtZTogJ01hcmtlciBPYmplY3QnLCB1cmw6IHMzT2JqZWN0VXJsKGJ1Y2tldCwgTUFSS0VSX0ZJTEVfTkFNRSkgfSxcbiAgICAgICAgeyBuYW1lOiAnU3RhZ2VyJywgdXJsOiBsYW1iZGFGdW5jdGlvblVybChzdGFnZXIpIH0sXG4gICAgICAgIHsgbmFtZTogJ1N0YWdlciBETFEnLCB1cmw6IHNxc1F1ZXVlVXJsKHN0YWdlci5kZWFkTGV0dGVyUXVldWUhKSB9LFxuICAgICAgXSxcbiAgICAgIGRhc2hib2FyZFdpZGdldHM6IFtcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ0ZvbGxvd2VyIEhlYWx0aCcsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoZm9sbG93ZXIubWV0cmljSW52b2NhdGlvbnMoeyBsYWJlbDogJ0ludm9jYXRpb25zJyB9KSksXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoZm9sbG93ZXIubWV0cmljRXJyb3JzKHsgbGFiZWw6ICdFcnJvcnMnIH0pKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICByaWdodDogW3RoaXMubWV0cmljUmVtYWluaW5nVGltZSh7IGxhYmVsOiAnUmVtYWluaW5nIFRpbWUnIH0pXSxcbiAgICAgICAgICAgIHJpZ2h0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgICAgIHRpdGxlOiAnU3RhZ2VyIEhlYWx0aCcsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoc3RhZ2VyLm1ldHJpY0ludm9jYXRpb25zKHsgbGFiZWw6ICdJbnZvY2F0aW9ucycgfSkpLFxuICAgICAgICAgICAgICBmaWxsTWV0cmljKHN0YWdlci5tZXRyaWNFcnJvcnMoeyBsYWJlbDogJ0Vycm9ycycgfSkpLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBbc3RhZ2VyLm1ldHJpY0R1cmF0aW9uKHsgbGFiZWw6ICdEdXJhdGlvbicgfSldLFxuICAgICAgICAgICAgcmlnaHRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ0NvdWNoREIgRm9sbG93ZXInLFxuICAgICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgICBmaWxsTWV0cmljKHRoaXMubWV0cmljQ2hhbmdlQ291bnQoeyBsYWJlbDogJ0NoYW5nZSBDb3VudCcgfSksIDApLFxuICAgICAgICAgICAgICBmaWxsTWV0cmljKFxuICAgICAgICAgICAgICAgIHRoaXMubWV0cmljVW5wcm9jZXNzYWJsZUVudGl0eSh7IGxhYmVsOiAnVW5wcm9jZXNzYWJsZScgfSksXG4gICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgdGhpcy5tZXRyaWNOcG1Kc0NoYW5nZUFnZSh7IGxhYmVsOiAnTGFnIHRvIG5wbWpzLmNvbScgfSksXG4gICAgICAgICAgICAgICAgJ1JFUEVBVCdcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICB0aGlzLm1ldHJpY1BhY2thZ2VWZXJzaW9uQWdlKHsgbGFiZWw6ICdQYWNrYWdlIFZlcnNpb24gQWdlJyB9KSxcbiAgICAgICAgICAgICAgICAnUkVQRUFUJ1xuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHJpZ2h0WUF4aXM6IHsgbGFiZWw6ICdNaWxsaXNlY29uZHMnLCBtaW46IDAsIHNob3dVbml0czogZmFsc2UgfSxcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdDb3VjaERCIENoYW5nZXMnLFxuICAgICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgICBmaWxsTWV0cmljKFxuICAgICAgICAgICAgICAgIHRoaXMubWV0cmljTGFzdFNlcSh7IGxhYmVsOiAnTGFzdCBTZXF1ZW5jZSBOdW1iZXInIH0pLFxuICAgICAgICAgICAgICAgICdSRVBFQVQnXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgICBbXG4gICAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgICAgIHRpdGxlOiAnU3RhZ2VyIERlYWQtTGV0dGVyIFF1ZXVlJyxcbiAgICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICBzdGFnZXIuZGVhZExldHRlclF1ZXVlIS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNWaXNpYmxlKFxuICAgICAgICAgICAgICAgICAgeyBsYWJlbDogJ1Zpc2libGUgTWVzc2FnZXMnIH1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICBzdGFnZXIuZGVhZExldHRlclF1ZXVlIS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNOb3RWaXNpYmxlKFxuICAgICAgICAgICAgICAgICAgeyBsYWJlbDogJ0ludmlzaWJsZSBNZXNzYWdlcycgfVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBbXG4gICAgICAgICAgICAgIHN0YWdlci5kZWFkTGV0dGVyUXVldWUhLm1ldHJpY0FwcHJveGltYXRlQWdlT2ZPbGRlc3RNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ09sZGVzdCBNZXNzYWdlJyxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmlnaHRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4odGhpcy5wcm9wcy5lbmFibGVDYW5hcnkgPz8gdHJ1ZVxuICAgICAgICAgICAgPyB0aGlzLnJlZ2lzdGVyQ2FuYXJ5KFxuICAgICAgICAgICAgICAgIGZvbGxvd2VyLFxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuY2FuYXJ5UGFja2FnZSA/PyAnY29uc3RydWN0LWh1Yi1wcm9iZScsXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5jYW5hcnlTbGEgPz8gRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgICAgICAgICBidWNrZXQsXG4gICAgICAgICAgICAgICAgYmFzZVVybCxcbiAgICAgICAgICAgICAgICBtb25pdG9yaW5nXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogW10pLFxuICAgICAgICBdLFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBhdmVyYWdlIHRpbWUgaXQgdG9vayB0byBwcm9jZXNzIGEgY2hhbmdlcyBiYXRjaC5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNCYXRjaFByb2Nlc3NpbmdUaW1lKG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5BVkVSQUdFLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIG1ldHJpY05hbWU6IE1ldHJpY05hbWUuQkFUQ0hfUFJPQ0VTU0lOR19USU1FLFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdG90YWwgY291bnQgb2YgY2hhbmdlcyB0aGF0IHdlcmUgcHJvY2Vzc2VkLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY0NoYW5nZUNvdW50KG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5TVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5DSEFOR0VfQ09VTlQsXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBsYXN0IHNlcXVlbmNlIG51bWJlciB0aGF0IHdhcyBwcm9jZXNzZWQuIFRoaXMgbWV0cmljIGNhbiBiZSB1c2VkIHRvXG4gICAqIGRpc2NvdmVyIHdoZW4gYSBzZXF1ZW5jZSByZXNldCBoYXMgaGFwcGVuZWQgaW4gdGhlIENvdWNoREIgaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljTGFzdFNlcShvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUFYSU1VTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLkxBU1RfU0VRLFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBtZXRyaWNOcG1Kc0NoYW5nZUFnZShvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUlOSU1VTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLk5QTUpTX0NIQU5HRV9BR0UsXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBhZ2Ugb2YgdGhlIG9sZGVzdCBwYWNrYWdlIHZlcnNpb24gdGhhdCB3YXMgcHJvY2Vzc2VkLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY1BhY2thZ2VWZXJzaW9uQWdlKG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5NQVhJTVVNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIG1ldHJpY05hbWU6IE1ldHJpY05hbWUuUEFDS0FHRV9WRVJTSU9OX0FHRSxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRvdGFsIGNvdW50IG9mIHBhY2thZ2UgdmVyc2lvbnMgdGhhdCB3ZXJlIGluc3BlY3RlZC5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNQYWNrYWdlVmVyc2lvbkNvdW50KG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5TVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5QQUNLQUdFX1ZFUlNJT05fQ09VTlQsXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0b3RhbCBjb3VudCBvZiBwYWNrYWdlIHZlcnNpb25zIHRoYXQgd2VyZSBkZWVtZWQgcmVsZXZhbnQuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljUmVsZXZhbnRQYWNrYWdlVmVyc2lvbnMob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLlNVTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLlJFTEVWQU5UX1BBQ0tBR0VfVkVSU0lPTlMsXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBhbW91bnQgb2YgdGltZSB0aGF0IHdhcyByZW1haW5pbmcgd2hlbiB0aGUgbGFtYmRhIHJldHVybmVkIGluIG9yZGVyIHRvXG4gICAqIGF2b2lkIGhpdHRpbmcgYSB0aW1lb3V0LlxuICAgKi9cbiAgcHVibGljIG1ldHJpY1JlbWFpbmluZ1RpbWUob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLk1JTklNVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5SRU1BSU5JTkdfVElNRSxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGFtb3VudCBvZiBjaGFuZ2VzIHRoYXQgd2VyZSBub3QgcHJvY2Vzc2VkIGR1ZSB0byBoYXZpbmcgYW4gaW52YWxpZFxuICAgKiBmb3JtYXQuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljVW5wcm9jZXNzYWJsZUVudGl0eShvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIG1ldHJpY05hbWU6IE1ldHJpY05hbWUuVU5QUk9DRVNTQUJMRV9FTlRJVFksXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlckFsYXJtcyhcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGZvbGxvd2VyOiBOcG1Kc0ZvbGxvd2VyLFxuICAgIHN0YWdlcjogU3RhZ2VBbmROb3RpZnksXG4gICAgbW9uaXRvcmluZzogSU1vbml0b3JpbmcsXG4gICAgc2NoZWR1bGU6IFJ1bGVcbiAgKSB7XG4gICAgY29uc3QgZmFpbHVyZUFsYXJtID0gZm9sbG93ZXJcbiAgICAgIC5tZXRyaWNFcnJvcnMoKVxuICAgICAgLmNyZWF0ZUFsYXJtKHNjb3BlLCAnTnBtSnMvRm9sbG93ZXIvRmFpbHVyZXMnLCB7XG4gICAgICAgIGFsYXJtTmFtZTogYCR7c2NvcGUubm9kZS5wYXRofS9OcG1Kcy9Gb2xsb3dlci9GYWlsdXJlc2AsXG4gICAgICAgIGFsYXJtRGVzY3JpcHRpb246IFtcbiAgICAgICAgICAnVGhlIE5wbUpzIGZvbGxvd2VyIGZ1bmN0aW9uIGZhaWxlZCEnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIGBSdW5Cb29rOiAke1JVTkJPT0tfVVJMfWAsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgYERpcmVjdCBsaW5rIHRvIExhbWJkYSBmdW5jdGlvbjogJHtsYW1iZGFGdW5jdGlvblVybChmb2xsb3dlcil9YCxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOlxuICAgICAgICAgIENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogMyxcbiAgICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLk1JU1NJTkcsXG4gICAgICB9KTtcbiAgICBtb25pdG9yaW5nLmFkZExvd1NldmVyaXR5QWxhcm0oJ05wbUpzL0ZvbGxvd2VyIEZhaWx1cmVzJywgZmFpbHVyZUFsYXJtKTtcblxuICAgIGNvbnN0IG5vdFJ1bm5pbmdBbGFybSA9IGZvbGxvd2VyXG4gICAgICAubWV0cmljSW52b2NhdGlvbnMoeyBwZXJpb2Q6IEZPTExPV0VSX1JVTl9SQVRFIH0pXG4gICAgICAuY3JlYXRlQWxhcm0oc2NvcGUsICdOcG1Kcy9Gb2xsb3dlci9Ob3RSdW5uaW5nJywge1xuICAgICAgICBhbGFybU5hbWU6IGAke3Njb3BlLm5vZGUucGF0aH0vTnBtSnMvRm9sbG93ZXIvTm90UnVubmluZ2AsXG4gICAgICAgIGFsYXJtRGVzY3JpcHRpb246IFtcbiAgICAgICAgICAnVGhlIE5wbUpzIGZvbGxvd2VyIGZ1bmN0aW9uIGlzIG5vdCBydW5uaW5nIScsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgYFJ1bkJvb2s6ICR7UlVOQk9PS19VUkx9YCxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICBgRGlyZWN0IGxpbmsgdG8gTGFtYmRhIGZ1bmN0aW9uOiAke2xhbWJkYUZ1bmN0aW9uVXJsKGZvbGxvd2VyKX1gLFxuICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5MRVNTX1RIQU5fVEhSRVNIT0xELFxuICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogMixcbiAgICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLkJSRUFDSElORyxcbiAgICAgIH0pO1xuICAgIG1vbml0b3JpbmcuYWRkSGlnaFNldmVyaXR5QWxhcm0oXG4gICAgICAnTnBtSnMvRm9sbG93ZXIgTm90IFJ1bm5pbmcnLFxuICAgICAgbm90UnVubmluZ0FsYXJtXG4gICAgKTtcblxuICAgIC8vIFRoZSBwZXJpb2QgZm9yIHRoaXMgYWxhcm0gbmVlZHMgdG8gbWF0Y2ggdGhlIHNjaGVkdWxpbmcgaW50ZXJ2YWwgb2YgdGhlXG4gICAgLy8gZm9sbG93ZXIsIG90aGVyd2lzZSB0aGUgbWV0cmljIHdpbGwgYmUgdG9vIHNwYXJzZSB0byBwcm9wZXJseSBkZXRlY3RcbiAgICAvLyBwcm9ibGVtcy5cbiAgICBjb25zdCBub0NoYW5nZUFsYXJtID0gdGhpcy5tZXRyaWNDaGFuZ2VDb3VudCh7XG4gICAgICBwZXJpb2Q6IEZPTExPV0VSX1JVTl9SQVRFLFxuICAgIH0pLmNyZWF0ZUFsYXJtKHNjb3BlLCAnTnBtSnMvRm9sbG93ZXIvTm9DaGFuZ2VzJywge1xuICAgICAgYWxhcm1OYW1lOiBgJHtzY29wZS5ub2RlLnBhdGh9L05wbUpzL0ZvbGxvd2VyL05vQ2hhbmdlc2AsXG4gICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgICdUaGUgTnBtSnMgZm9sbG93ZXIgZnVuY3Rpb24gaXMgbm90IGRpc2NvdmVyaW5nIGFueSBjaGFuZ2VzIGZyb20gQ291Y2hEQiEnLFxuICAgICAgICAnJyxcbiAgICAgICAgYFJ1bkJvb2s6ICR7UlVOQk9PS19VUkx9YCxcbiAgICAgICAgJycsXG4gICAgICAgIGBEaXJlY3QgbGluayB0byBMYW1iZGEgZnVuY3Rpb246ICR7bGFtYmRhRnVuY3Rpb25VcmwoZm9sbG93ZXIpfWAsXG4gICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuTEVTU19USEFOX1RIUkVTSE9MRCxcbiAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiBob3dPZnRlbihGT0xMT1dFUl9SVU5fUkFURSwgTk9fQ0hBTkdFU19BTEFSTV9EVVJBVElPTiksXG4gICAgICB0aHJlc2hvbGQ6IDEsXG4gICAgICAvLyBJZiB0aGUgbWV0cmljIGlzIG5vdCBlbWl0dGVkLCBpdCBjYW4gYmUgYXNzdW1lZCB0byBiZSB6ZXJvLlxuICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5CUkVBQ0hJTkcsXG4gICAgfSk7XG4gICAgbW9uaXRvcmluZy5hZGRMb3dTZXZlcml0eUFsYXJtKFxuICAgICAgJ05wIG5wbWpzLmNvbSBjaGFuZ2VzIGRpc2NvdmVyZWQnLFxuICAgICAgbm9DaGFuZ2VBbGFybVxuICAgICk7XG5cbiAgICBjb25zdCBkbHFOb3RFbXB0eUFsYXJtID0gbmV3IE1hdGhFeHByZXNzaW9uKHtcbiAgICAgIGV4cHJlc3Npb246ICdtVmlzaWJsZSArIG1IaWRkZW4nLFxuICAgICAgdXNpbmdNZXRyaWNzOiB7XG4gICAgICAgIG1WaXNpYmxlOlxuICAgICAgICAgIHN0YWdlci5kZWFkTGV0dGVyUXVldWUhLm1ldHJpY0FwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlc1Zpc2libGUoe1xuICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgICAgIH0pLFxuICAgICAgICBtSGlkZGVuOlxuICAgICAgICAgIHN0YWdlci5kZWFkTGV0dGVyUXVldWUhLm1ldHJpY0FwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlc05vdFZpc2libGUoe1xuICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9KS5jcmVhdGVBbGFybShzY29wZSwgYCR7c2NvcGUubm9kZS5wYXRofS9OcG1Kcy9TdGFnZXIvRExRTm90RW1wdHlgLCB7XG4gICAgICBhbGFybU5hbWU6IGAke3Njb3BlLm5vZGUucGF0aH0vTnBtSnMvU3RhZ2VyL0RMUU5vdEVtcHR5YCxcbiAgICAgIGFsYXJtRGVzY3JpcHRpb246IFtcbiAgICAgICAgJ1RoZSBOcG1KUyBwYWNrYWdlIHN0YWdlciBpcyBmYWlsaW5nIC0gaXRzIGRlYWQgbGV0dGVyIHF1ZXVlIGlzIG5vdCBlbXB0eScsXG4gICAgICAgICcnLFxuICAgICAgICBgTGluayB0byB0aGUgbGFtYmRhIGZ1bmN0aW9uOiAke2xhbWJkYUZ1bmN0aW9uVXJsKHN0YWdlcil9YCxcbiAgICAgICAgYExpbmsgdG8gdGhlIGRlYWQgbGV0dGVyIHF1ZXVlOiAke3Nxc1F1ZXVlVXJsKFxuICAgICAgICAgIHN0YWdlci5kZWFkTGV0dGVyUXVldWUhXG4gICAgICAgICl9YCxcbiAgICAgICAgJycsXG4gICAgICAgIGBSdW5ib29rOiAke1JVTkJPT0tfVVJMfWAsXG4gICAgICBdLmpvaW4oJy9uJyksXG4gICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDIsXG4gICAgICB0aHJlc2hvbGQ6IDEsXG4gICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLk5PVF9CUkVBQ0hJTkcsXG4gICAgfSk7XG4gICAgbW9uaXRvcmluZy5hZGRMb3dTZXZlcml0eUFsYXJtKFxuICAgICAgJ05wbUpzL1N0YWdlciBETFEgTm90IEVtcHR5JyxcbiAgICAgIGRscU5vdEVtcHR5QWxhcm1cbiAgICApO1xuXG4gICAgLy8gRmluYWxseSAtIHRoZSBcIm5vdCBydW5uaW5nXCIgYWxhcm0gZGVwZW5kcyBvbiB0aGUgc2NoZWR1bGUgKGl0IHdvbid0IHJ1biB1bnRpbCB0aGUgc2NoZWR1bGVcbiAgICAvLyBleGlzdHMhKSwgYW5kIHRoZSBzY2hlZHVsZSBkZXBlbmRzIG9uIHRoZSBmYWlsdXJlIGFsYXJtIGV4aXN0aW5nICh3ZSBkb24ndCB3YW50IGl0IHRvIHJ1blxuICAgIC8vIGJlZm9yZSB3ZSBjYW4ga25vdyBpdCBpcyBmYWlsaW5nKS4gVGhpcyBtZWFucyB0aGUgcmV0dXJuZWQgYElEZXBlbmRhYmxlYCBlZmZlY3RpdmVseSBlbnN1cmVzXG4gICAgLy8gYWxsIGFsYXJtcyBoYXZlIGJlZW4gcHJvdmlzaW9uZWQgYWxyZWFkeSEgSXNuJ3QgaXQgbmljZSFcbiAgICBub3RSdW5uaW5nQWxhcm0ubm9kZS5hZGREZXBlbmRlbmN5KHNjaGVkdWxlKTtcbiAgICBzY2hlZHVsZS5ub2RlLmFkZERlcGVuZGVuY3koZmFpbHVyZUFsYXJtKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJDYW5hcnkoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBwYWNrYWdlTmFtZTogc3RyaW5nLFxuICAgIC8vIEEgZHVyYXRpb24gc3BlY2lmeWluZyBob3cgbG9uZyB3ZSBleHBlY3QgdGhlIHByb2JlIHBhY2thZ2UgdG8gYXBwZWFyIG9uXG4gICAgLy8gQ29uc3RydWN0IEh1YiBhZnRlciBpdCBnZXRzIHB1Ymxpc2hlZCB0byBucG0sIGFzc3VtaW5nIHRoZSBucG0gcmVwbGljYVxuICAgIC8vIGlzIHVwIHRvIGRhdGUgZXRjLlxuICAgIHZpc2liaWxpdHlTbGE6IER1cmF0aW9uLFxuICAgIGJ1Y2tldDogSUJ1Y2tldCxcbiAgICBjb25zdHJ1Y3RIdWJCYXNlVXJsOiBzdHJpbmcsXG4gICAgbW9uaXRvcmluZzogSU1vbml0b3JpbmdcbiAgKTogSVdpZGdldFtdIHtcbiAgICBjb25zdCBjYW5hcnkgPSBuZXcgTnBtSnNQYWNrYWdlQ2FuYXJ5KHNjb3BlLCAnQ2FuYXJ5Jywge1xuICAgICAgYnVja2V0LFxuICAgICAgY29uc3RydWN0SHViQmFzZVVybCxcbiAgICAgIHBhY2thZ2VOYW1lLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcGVyaW9kID0gRHVyYXRpb24ubWludXRlcyg1KTtcblxuICAgIGNvbnN0IGFsYXJtID0gbmV3IE1hdGhFeHByZXNzaW9uKHtcbiAgICAgIC8vIFdoZW4gdGhlIG5wbSByZXBsaWNhIGlzIHN1ZmZpY2llbnRseSBiZWhpbmQgdGhlIHByaW1hcnksIHRoZSBwYWNrYWdlIHNvdXJjZSB3aWxsIG5vdCBiZVxuICAgICAgLy8gYWJsZSB0byByZWdpc3RlciBuZXcgY2FuYXJ5IHBhY2thZ2UgdmVyc2lvbnMgd2l0aGluIHRoZSBTTEEuIEluIHN1Y2ggY2FzZXMsIHRoZXJlIGlzXG4gICAgICAvLyBub3RoaW5nIHRoYXQgY2FuIGJlIGRvbmUgZXhjZXB0IGZvciB3YWl0aW5nIHVudGlsIHRoZSByZXBsaWNhIGhhcyBmaW5hbGx5IGNhdWdodCB1cC4gV2VcbiAgICAgIC8vIGhlbmNlIHN1cHByZXNzIHRoZSBhbGFybSBpZiB0aGUgcmVwbGljYSBsYWcgaXMgZ2V0dGluZyB3aXRoaW4gMyBldmFsdWF0aW9uIHBlcmlvZHMgb2YgdGhlXG4gICAgICAvLyB2aXNpYmlsaXR5IFNMQS5cbiAgICAgIGV4cHJlc3Npb246IGBJRihGSUxMKG1MYWcsIFJFUEVBVCkgPCAke01hdGgubWF4KFxuICAgICAgICB2aXNpYmlsaXR5U2xhLnRvU2Vjb25kcygpIC0gMyAqIHBlcmlvZC50b1NlY29uZHMoKSxcbiAgICAgICAgMyAqIHBlcmlvZC50b1NlY29uZHMoKVxuICAgICAgKX0sIE1BWChbbUR3ZWxsLCBtVFRDXSkpYCxcbiAgICAgIHBlcmlvZCxcbiAgICAgIHVzaW5nTWV0cmljczoge1xuICAgICAgICBtRHdlbGw6IGNhbmFyeS5tZXRyaWNEd2VsbFRpbWUoKSxcbiAgICAgICAgbVRUQzogY2FuYXJ5Lm1ldHJpY1RpbWVUb0NhdGFsb2coKSxcbiAgICAgICAgbUxhZzogY2FuYXJ5Lm1ldHJpY0VzdGltYXRlZE5wbVJlcGxpY2FMYWcoKSxcbiAgICAgIH0sXG4gICAgfSkuY3JlYXRlQWxhcm0oY2FuYXJ5LCAnQWxhcm0nLCB7XG4gICAgICBhbGFybU5hbWU6IGAke2NhbmFyeS5ub2RlLnBhdGh9L1NMQS1CcmVhY2hlZGAsXG4gICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgIGBOZXcgdmVyc2lvbnMgb2YgJHtwYWNrYWdlTmFtZX0gaGF2ZSBiZWVuIHB1Ymxpc2hlZCBvdmVyICR7dmlzaWJpbGl0eVNsYS50b0h1bWFuU3RyaW5nKCl9IGFnbyBhbmQgYXJlIHN0aWxsIG5vdCB2aXNpYmxlIGluIGNvbnN0cnVjdCBodWJgLFxuICAgICAgICBgUnVuYm9vazogJHtSVU5CT09LX1VSTH1gLFxuICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9USFJFU0hPTEQsXG4gICAgICBldmFsdWF0aW9uUGVyaW9kczogNCxcbiAgICAgIHRyZWF0TWlzc2luZ0RhdGE6IFRyZWF0TWlzc2luZ0RhdGEuTk9UX0JSRUFDSElORyxcbiAgICAgIHRocmVzaG9sZDogdmlzaWJpbGl0eVNsYS50b1NlY29uZHMoKSxcbiAgICB9KTtcbiAgICAvLyBUaGlzIGlzIGRlZW1lZCBsb3cgc2V2ZXJpdHksIGJlY2F1c2UgdGhlIG5wbSByZWdpc3RyeSByZXBsaWNhIChyZXBsaWNhdGUubnBtanMuY29tKSBjYW5cbiAgICAvLyBvY2Nhc2lvbmFsbHkgbGFnIHNldmVyYWwgaG91cnMgYmVoaW5kIHRoZSBwcmltYXJ5IChyZWdpc3RyeS5ucG1qcy5jb20pLCBhbmQgd2UgY2Fubm90IGVhc2lseVxuICAgIC8vIHRlbGwgYWJvdXQgdGhhdC4gU29tZW9uZSBzaG91bGQgaGF2ZSBhIGxvb2ssIGJ1dCBpbiB2aXJ0dWFsbHkgYWxsIGNhc2VzIHdlIGhhdmUgc2VlbiBzbyBmYXIsXG4gICAgLy8gdGhlcmUgaXMgbm90aGluZyB0aGF0IGNhbiBiZSBkb25lIGZyb20gb3VyIGVuZCwgYmVzaWRlcyB3YWl0aW5nIGZvciB0aGUgcmVwbGljYSB0byBiZSBhbGxcbiAgICAvLyBjYXVnaHQgdXAuXG4gICAgbW9uaXRvcmluZy5hZGRMb3dTZXZlcml0eUFsYXJtKFxuICAgICAgJ05ldyB2ZXJzaW9uIHZpc2liaWxpdHkgU0xBIGJyZWFjaGVkJyxcbiAgICAgIGFsYXJtXG4gICAgKTtcblxuICAgIGNvbnN0IG5vdFJ1bm5pbmdPckZhaWxpbmdBbGFybSA9IG5ldyBDb21wb3NpdGVBbGFybShcbiAgICAgIGNhbmFyeSxcbiAgICAgICdOb3RSdW5uaW5nT3JGYWlsaW5nJyxcbiAgICAgIHtcbiAgICAgICAgYWxhcm1SdWxlOiBBbGFybVJ1bGUuYW55T2YoXG4gICAgICAgICAgY2FuYXJ5XG4gICAgICAgICAgICAubWV0cmljRXJyb3JzKHsgcGVyaW9kLCBzdGF0aXN0aWM6IFN0YXRpc3RpYy5TVU0gfSlcbiAgICAgICAgICAgIC5jcmVhdGVBbGFybShjYW5hcnksICdGYWlsaW5nJywge1xuICAgICAgICAgICAgICBhbGFybU5hbWU6IGAke2NhbmFyeS5ub2RlLnBhdGh9L0ZhaWxpbmdgLFxuICAgICAgICAgICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fVEhSRVNIT0xELFxuICAgICAgICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogMixcbiAgICAgICAgICAgICAgdGhyZXNob2xkOiAwLFxuICAgICAgICAgICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLkJSRUFDSElORyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIGNhbmFyeVxuICAgICAgICAgICAgLm1ldHJpY0ludm9jYXRpb25zKHsgcGVyaW9kLCBzdGF0aXN0aWM6IFN0YXRpc3RpYy5TVU0gfSlcbiAgICAgICAgICAgIC5jcmVhdGVBbGFybShjYW5hcnksICdOb3RSdW5uaW5nJywge1xuICAgICAgICAgICAgICBhbGFybU5hbWU6IGAke2NhbmFyeS5ub2RlLnBhdGh9L05vdFJ1bm5pbmdgLFxuICAgICAgICAgICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5MRVNTX1RIQU5fVEhSRVNIT0xELFxuICAgICAgICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogMixcbiAgICAgICAgICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgICAgICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLkJSRUFDSElORyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICksXG4gICAgICAgIGFsYXJtRGVzY3JpcHRpb246IFtcbiAgICAgICAgICAnVGhlIE5wbUpzIHBhY2thZ2UgY2FuYXJ5IGlzIG5vdCBydW5uaW5nIG9yIGlzIGZhaWxpbmcuIFRoaXMgcHJldmVudHMgYWxhcm1pbmcgd2hlbiB0aGlzIGluc3RhbmNlIG9mJyxcbiAgICAgICAgICAnQ29uc3RydWN0SHViIGZhbGxzIG91dCBvZiBTTEEgZm9yIG5ldyBwYWNrYWdlIGluZ2VzdGlvbiEnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIGBSdW5ib29rOiAke1JVTkJPT0tfVVJMfWAsXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgIGNvbXBvc2l0ZUFsYXJtTmFtZTogYCR7Y2FuYXJ5Lm5vZGUucGF0aH0vTm90UnVubmluZ09yRmFpbGluZ2AsXG4gICAgICB9XG4gICAgKTtcbiAgICBtb25pdG9yaW5nLmFkZEhpZ2hTZXZlcml0eUFsYXJtKFxuICAgICAgJ05wbUpzIEZvbGxvd2VyIENhbmFyeSBpcyBub3QgcnVubmluZyBvciBmYWlscycsXG4gICAgICBub3RSdW5uaW5nT3JGYWlsaW5nQWxhcm1cbiAgICApO1xuXG4gICAgLy8gVXNpbmcgTUlOIHN0YXRpc3RpYywgc28gaWYgYSBydW4gaXMgc3VjY2Vzc2Z1bCAoYW5kIGhlbmNlIGVtaXRzIGEgMCksIHRoaXMgYWxhcm0gd2lsbCBub3QgdHJpZ2dlci5cbiAgICBjb25zdCBnYXRld2F5RXJyb3JzQWxhcm0gPSBjYW5hcnlcbiAgICAgIC5tZXRyaWNIdHRwR2F0ZXdheUVycm9ycyh7IHBlcmlvZCwgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUlOSU1VTSB9KVxuICAgICAgLmNyZWF0ZUFsYXJtKGNhbmFyeSwgJ0dhdGV3YXlFcnJvcnMnLCB7XG4gICAgICAgIGFsYXJtRGVzY3JpcHRpb246IFtcbiAgICAgICAgICAnVGhlIE5wbUpzIHBhY2thZ2UgY2FuYXJ5IGhhcyBiZWVuIGVuY291bnRlcmluZyBjb25zaXN0ZW50IEhUVFAgZ2F0ZXdheSBlcnJvcnMgd2hlbiBjb250YWN0aW5nIG5wbWpzIHNlcnZlcnMnLFxuICAgICAgICAgICdmb3IgYW4gaG91ciBvciBtb3JlLiBUaGlzIG1lYW5zIHRoZSBjYW5hcnkgaGFzIGJlZW4gdW5hYmxlIHRvIGV2YWx1YXRlIFNMQSBjb21wbGlhbmNlIGZvciB0aGF0IG11Y2ggdGltZS4nLFxuICAgICAgICAgICdJdCBpcyBwcm9iYWJsZSB0aGF0IG5vdGhpbmcgY2FuIGJlIGRvbmUgZXhjZXB0IGZvciB3YWl0aW5nIGZvciBucG0gc2VydmVycyB0byBjb21lIGJhY2sgb25saW5lLCBidXQgdGhlJyxcbiAgICAgICAgICAnc2l0dWF0aW9uIHNob3VsZCBiZSBjaGVja2VkIHRvIG1ha2Ugc3VyZSB0aGVyZSBpcyBub3QgYW5vdGhlciBwcm9ibGVtLicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgYFJ1bmJvb2s6ICR7UlVOQk9PS19VUkx9YCxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgYWxhcm1OYW1lOiBgJHtjYW5hcnkubm9kZS5wYXRofS9HYXRld2F5RXJyb3JzYCxcbiAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX1RIUkVTSE9MRCxcbiAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDYwLFxuICAgICAgICB0aHJlc2hvbGQ6IDAsXG4gICAgICAgIHRyZWF0TWlzc2luZ0RhdGE6IFRyZWF0TWlzc2luZ0RhdGEuQlJFQUNISU5HLFxuICAgICAgfSk7XG4gICAgbW9uaXRvcmluZy5hZGRMb3dTZXZlcml0eUFsYXJtKFxuICAgICAgJ05wbUpzIEZvbGxvd2VyIENhbmFyeSBpcyBleHBlcmllbmNpbmcgSFRUUCBHYXRld2F5IGVycm9ycycsXG4gICAgICBnYXRld2F5RXJyb3JzQWxhcm1cbiAgICApO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgIGhlaWdodDogNixcbiAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICB0aXRsZTogJ1BhY2thZ2UgQ2FuYXJ5JyxcbiAgICAgICAgbGVmdDogW1xuICAgICAgICAgIGNhbmFyeS5tZXRyaWNEd2VsbFRpbWUoeyBsYWJlbDogJ0R3ZWxsIFRpbWUnIH0pLFxuICAgICAgICAgIGNhbmFyeS5tZXRyaWNUaW1lVG9DYXRhbG9nKHsgbGFiZWw6ICdUaW1lIHRvIENhdGFsb2cnIH0pLFxuICAgICAgICBdLFxuICAgICAgICBsZWZ0QW5ub3RhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2xvcjogJyNmZjAwMDAnLFxuICAgICAgICAgICAgbGFiZWw6IGBTTEEgKCR7dmlzaWJpbGl0eVNsYS50b0h1bWFuU3RyaW5nKCl9KWAsXG4gICAgICAgICAgICB2YWx1ZTogdmlzaWJpbGl0eVNsYS50b1NlY29uZHMoKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgIHJpZ2h0OiBbXG4gICAgICAgICAgY2FuYXJ5Lm1ldHJpY1RyYWNrZWRWZXJzaW9uQ291bnQoeyBsYWJlbDogJ1RyYWNrZWQgVmVyc2lvbiBDb3VudCcgfSksXG4gICAgICAgIF0sXG4gICAgICAgIHJpZ2h0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICB9KSxcbiAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgIGhlaWdodDogNixcbiAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICB0aXRsZTogJ09ic2VydmVkIGxhZyBvZiByZXBsaWNhdGUubnBtanMuY29tJyxcbiAgICAgICAgbGVmdDogW1xuICAgICAgICAgIGNhbmFyeS5tZXRyaWNFc3RpbWF0ZWROcG1SZXBsaWNhTGFnKHtcbiAgICAgICAgICAgIGxhYmVsOiBgUmVwbGljYSBsYWcgKCR7cGFja2FnZU5hbWV9KWAsXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICAgIGxlZnRBbm5vdGF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbG9yOiAnI2ZmYTUwMCcsXG4gICAgICAgICAgICBsYWJlbDogdmlzaWJpbGl0eVNsYS50b0h1bWFuU3RyaW5nKCksXG4gICAgICAgICAgICB2YWx1ZTogdmlzaWJpbGl0eVNsYS50b1NlY29uZHMoKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICB9KSxcbiAgICBdO1xuICB9XG59XG5cbi8qKlxuICogSG93IG9mdGVuICdyYXRlJyBnb2VzIGludG8gJ2R1cmF0aW9uJyAocm91bmRlZCB1cClcbiAqL1xuZnVuY3Rpb24gaG93T2Z0ZW4ocmF0ZTogRHVyYXRpb24sIGR1cmF0aW9uOiBEdXJhdGlvbikge1xuICByZXR1cm4gTWF0aC5jZWlsKGR1cmF0aW9uLnRvU2Vjb25kcygpIC8gcmF0ZS50b1NlY29uZHMoKSk7XG59XG4iXX0=
|
package/lib/package-tag/index.js
CHANGED
@@ -50,7 +50,7 @@ class TagCondition {
|
|
50
50
|
}
|
51
51
|
exports.TagCondition = TagCondition;
|
52
52
|
_a = JSII_RTTI_SYMBOL_1;
|
53
|
-
TagCondition[_a] = { fqn: "construct-hub.TagCondition", version: "0.4.
|
53
|
+
TagCondition[_a] = { fqn: "construct-hub.TagCondition", version: "0.4.401" };
|
54
54
|
/**
|
55
55
|
* Logic operators for performing specific conditional logic.
|
56
56
|
*/
|
@@ -130,7 +130,7 @@ class TagConditionField {
|
|
130
130
|
}
|
131
131
|
exports.TagConditionField = TagConditionField;
|
132
132
|
_b = JSII_RTTI_SYMBOL_1;
|
133
|
-
TagConditionField[_b] = { fqn: "construct-hub.TagConditionField", version: "0.4.
|
133
|
+
TagConditionField[_b] = { fqn: "construct-hub.TagConditionField", version: "0.4.401" };
|
134
134
|
/**
|
135
135
|
* Target the README of the package to dictate whether a tag is relevant.
|
136
136
|
*/
|
@@ -147,5 +147,5 @@ class TagConditionReadme {
|
|
147
147
|
}
|
148
148
|
exports.TagConditionReadme = TagConditionReadme;
|
149
149
|
_c = JSII_RTTI_SYMBOL_1;
|
150
|
-
TagConditionReadme[_c] = { fqn: "construct-hub.TagConditionReadme", version: "0.4.
|
150
|
+
TagConditionReadme[_c] = { fqn: "construct-hub.TagConditionReadme", version: "0.4.401" };
|
151
151
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFja2FnZS10YWcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUE4RUEsSUFBWSxrQkFHWDtBQUhELFdBQVksa0JBQWtCO0lBQzVCLG1EQUE2QixDQUFBO0lBQzdCLHVDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFIVyxrQkFBa0Isa0NBQWxCLGtCQUFrQixRQUc3QjtBQXNCRDs7R0FFRztBQUNILE1BQXNCLFlBQVk7SUFDaEM7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQXFCO1FBQ2pDLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFxQjtRQUNoQyxPQUFPLElBQUksaUJBQWlCLENBQUMscUJBQXFCLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFxQjtRQUNqQyxPQUFPLElBQUksaUJBQWlCLENBQUMscUJBQXFCLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFjO1FBQzVCLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsTUFBTTtRQUNYLE9BQU8sSUFBSSxrQkFBa0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7O0FBdkNILG9DQTBDQzs7O0FBRUQ7O0dBRUc7QUFDSCxJQUFZLHFCQU9YO0FBUEQsV0FBWSxxQkFBcUI7SUFDL0Isb0NBQVcsQ0FBQTtJQUNYLGtDQUFTLENB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b20gJy4uL3BhY2thZ2UtdGFnLWdyb3VwJztcblxuaW50ZXJmYWNlIFBhY2thZ2VUYWdQcmVzZW50YXRpb25CYXNlIHtcbiAgLyoqXG4gICAqIFRoZSBsYWJlbCBmb3IgdGhlIHRhZyBiZWluZyBhcHBsaWVkXG4gICAqL1xuICByZWFkb25seSBsYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaGV4IHZhbHVlIHN0cmluZyBmb3IgdGhlIGNvbG9yIG9mIHRoZSB0YWcgd2hlbiBkaXNwbGF5ZWRcbiAgICovXG4gIHJlYWRvbmx5IGNvbG9yPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmQgZXh0ZW5kcyBQYWNrYWdlVGFnUHJlc2VudGF0aW9uQmFzZSB7fVxuXG5leHBvcnQgaW50ZXJmYWNlIEhpZ2hsaWdodCBleHRlbmRzIFBhY2thZ2VUYWdQcmVzZW50YXRpb25CYXNlIHtcbiAgLyoqXG4gICAqIEljb24gZGlzcGxheWVkIG5leHQgdG8gaGlnaGxpZ2h0IG9uIHBhY2thZ2UgY2FyZFxuICAgKi9cbiAgcmVhZG9ubHkgaWNvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hGaWx0ZXIge1xuICAvKipcbiAgICogRGlzcGxheSBuYW1lIGZvciBmaWx0ZXJcbiAgICovXG4gIHJlYWRvbmx5IGRpc3BsYXk6IHN0cmluZztcblxuICAvKipcbiAgICogTmFtZSBvZiBncm91cCB0byBpbmNsdWRlIGZpbHRlciBpblxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYGdyb3VwYCBpbnN0ZWFkXG4gICAqL1xuICByZWFkb25seSBncm91cEJ5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQYWNrYWdlVGFnR3JvdXAgdG8gaW5jbHVkZSBmaWx0ZXIgaW5cbiAgICovXG4gIHJlYWRvbmx5IGdyb3VwPzogUGFja2FnZVRhZ0dyb3VwO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhY2thZ2VUYWdCYXNlIHtcbiAgLyoqXG4gICAqIElkZW50aWZpZXIgZm9yIHRhZywgdXNlZCBmb3Igc2VhcmNoLiBNdXN0IGJlIHVuaXF1ZSBhbW9uZ3N0IHRhZ3MuXG4gICAqL1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciBoaWdsaWdodGluZyB0YWcgb24gcGFja2FnZSBjYXJkXG4gICAqIEBkZWZhdWx0IGRvbid0IGhpZ2hsaWdodCB0YWdcbiAgICovXG4gIHJlYWRvbmx5IGhpZ2hsaWdodD86IEhpZ2hsaWdodDtcblxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3Igc2hvd2luZyB0YWcgYXMga2V5d29yZFxuICAgKiBAZGVmYXVsdCBkb24ndCBzaG93IHRhZyBpbiBrZXl3b3JkIGxpc3RcbiAgICovXG4gIHJlYWRvbmx5IGtleXdvcmQ/OiBLZXl3b3JkO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciBzaG93aW5nIHRhZyBhcyBzZWFyY2ggZmlsdGVyXG4gICAqIEBkZWZhdWx0IGRvbid0IHNob3cgdGFnIGluIHNlYXJjaCBmaWx0ZXJzXG4gICAqL1xuICByZWFkb25seSBzZWFyY2hGaWx0ZXI/OiBTZWFyY2hGaWx0ZXI7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgYXBwbHlpbmcgY3VzdG9tIHRhZ3MgdG8gcmVsZXZhbnQgcGFja2FnZXMuIEN1c3RvbSB0YWdzIGFyZVxuICogZGlzcGxheWVkIG9uIHRoZSBwYWNrYWdlIGRldGFpbHMgcGFnZSwgYW5kIGNhbiBiZSB1c2VkIGZvciBzZWFyY2hpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFja2FnZVRhZyBleHRlbmRzIFBhY2thZ2VUYWdCYXNlIHtcbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgbG9naWMgdGhhdCBkaWN0YXRlcyB3aGV0aGVyIHRoZVxuICAgKiBwYWNrYWdlIGhhcyB0aGUgdGFnIGFwcGxpZWQuXG4gICAqL1xuICByZWFkb25seSBjb25kaXRpb246IFRhZ0NvbmRpdGlvbjtcbn1cblxuZXhwb3J0IGVudW0gVGFnQ29uZGl0aW9uU291cmNlIHtcbiAgUEFDS0FHRV9KU09OID0gJ1BBQ0tBR0VfSlNPTicsXG4gIFJFQURNRSA9ICdSRUFETUUnLFxufVxuXG4vKipcbiAqIFNlcmlhbGl6ZWQgY29uZmlnIGZvciBhIHRhZyBjb25kaXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWdDb25kaXRpb25Db25maWcge1xuICByZWFkb25seSB0eXBlOiBUYWdDb25kaXRpb25Mb2dpY1R5cGU7XG4gIHJlYWRvbmx5IHNvdXJjZT86IFRhZ0NvbmRpdGlvblNvdXJjZTtcbiAgcmVhZG9ubHkga2V5Pzogc3RyaW5nW107XG4gIHJlYWRvbmx5IHZhbHVlPzogc3RyaW5nO1xuICByZWFkb25seSBvcHRpb25zPzogeyByZWFkb25seSBba2V5OiBzdHJpbmddOiBhbnkgfTtcbiAgcmVhZG9ubHkgY2hpbGRyZW4/OiBUYWdDb25kaXRpb25Db25maWdbXTtcbn1cblxuLyoqXG4gKiBTZXJpYWxpemVkIHRhZyBkZWNsYXJhdGlvbiB0byBiZSBwYXNzZWQgdG8gbGFtYmRhcyB2aWEgZW52aXJvbm1lbnRcbiAqIHZhcmlhYmxlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWNrYWdlVGFnQ29uZmlnIGV4dGVuZHMgUGFja2FnZVRhZ0Jhc2Uge1xuICByZWFkb25seSBjb25kaXRpb246IFRhZ0NvbmRpdGlvbkNvbmZpZztcbn1cblxuLyoqXG4gKiBDb25kaXRpb24gZm9yIGFwcGx5aW5nIGEgY3VzdG9tIHRhZyB0byBhIHBhY2thZ2UuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUYWdDb25kaXRpb24ge1xuICAvKipcbiAgICogQ3JlYXRlIGFuICYmIGNvbmRpdGlvbiB3aGljaCBhcHBsaWVzIG9ubHkgd2hlbiBhbGwgY29uZGl0aW9uIGFyZ3VtZW50cyBhcmVcbiAgICogdHJ1ZS5cbiAgICovXG4gIHN0YXRpYyBhbmQoLi4uY29uZHM6IFRhZ0NvbmRpdGlvbltdKTogVGFnQ29uZGl0aW9uIHtcbiAgICByZXR1cm4gbmV3IFRhZ0NvbmRpdGlvbkxvZ2ljKFRhZ0NvbmRpdGlvbkxvZ2ljVHlwZS5BTkQsIGNvbmRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gfHwgY29uZGl0aW9uIHdoaWNoIGFwcGxpZXMgaWYgYW55IG9mIHRoZSBjb25kaXRpb24gYXJndW1lbnRzIGFyZVxuICAgKiB0cnVlLlxuICAgKi9cbiAgc3RhdGljIG9yKC4uLmNvbmRzOiBUYWdDb25kaXRpb25bXSk6IFRhZ0NvbmRpdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBUYWdDb25kaXRpb25Mb2dpYyhUYWdDb25kaXRpb25Mb2dpY1R5cGUuT1IsIGNvbmRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSAhIGNvbmRpdGlvbiB3aGljaCBhcHBsaWVzIGlmIHRoZSBjb25kaXRpb24gYXJndW1lbnQgaXMgZmFsc2VcbiAgICovXG4gIHN0YXRpYyBub3QoLi4uY29uZHM6IFRhZ0NvbmRpdGlvbltdKTogVGFnQ29uZGl0aW9uIHtcbiAgICByZXR1cm4gbmV3IFRhZ0NvbmRpdGlvbkxvZ2ljKFRhZ0NvbmRpdGlvbkxvZ2ljVHlwZS5OT1QsIGNvbmRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUYXJnZXQgYSBmaWVsZCB3aXRoaW4gdGhlIGBwYWNrYWdlLmpzb25gIHRvIGFzc2VydCBhZ2FpbnN0LiBOZXN0ZWQgZmllbGRzXG4gICAqIGNhbiBiZSBhY2Nlc3NlZCBieSBwYXNzaW5nIG11bHRpcGxlIGtleXMuXG4gICAqIGBUYWdDb25kaXRpb24uZmllbGQoJ2tleTEnLCAna2V5MicpYCB3aWxsIGFjY2Vzc1xuICAgKiBgcGFja2FnZUpzb24/LmtleTE/LmtleTJgLlxuICAgKi9cbiAgc3RhdGljIGZpZWxkKC4uLmtleXM6IHN0cmluZ1tdKTogVGFnQ29uZGl0aW9uRmllbGQge1xuICAgIHJldHVybiBuZXcgVGFnQ29uZGl0aW9uRmllbGQoa2V5cyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgY29uZGl0aW9uIHdpdGggbG9naWMgdGFyZ2V0aW5nIHRoZSBSRUFETUUgb2YgdGhlIHBhY2thZ2UuXG4gICAqL1xuICBzdGF0aWMgcmVhZG1lKCk6IFRhZ0NvbmRpdGlvblJlYWRtZSB7XG4gICAgcmV0dXJuIG5ldyBUYWdDb25kaXRpb25SZWFkbWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhYnN0cmFjdCBiaW5kKCk6IFRhZ0NvbmRpdGlvbkNvbmZpZztcbn1cblxuLyoqXG4gKiBMb2dpYyBvcGVyYXRvcnMgZm9yIHBlcmZvcm1pbmcgc3BlY2lmaWMgY29uZGl0aW9uYWwgbG9naWMuXG4gKi9cbmV4cG9ydCBlbnVtIFRhZ0NvbmRpdGlvbkxvZ2ljVHlwZSB7XG4gIEFORCA9ICdBTkQnLFxuICBPUiA9ICdPUicsXG4gIE5PVCA9ICdOT1QnLFxuICBFUVVBTFMgPSAnRVFVQUxTJyxcbiAgSU5DTFVERVMgPSAnSU5DTFVERVMnLFxuICBTVEFSVFNfV0lUSCA9ICdTVEFSVFNfV0lUSCcsXG59XG5cbmNsYXNzIFRhZ0NvbmRpdGlvbkxvZ2ljIGV4dGVuZHMgVGFnQ29uZGl0aW9uIHtcbiAgcHVibGljIHJlYWRvbmx5IGlzTG9naWMgPSB0cnVlO1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB0eXBlOiBUYWdDb25kaXRpb25Mb2dpY1R5cGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGlsZHJlbjogVGFnQ29uZGl0aW9uW11cbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBiaW5kKCk6IFRhZ0NvbmRpdGlvbkNvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGNoaWxkcmVuOiB0aGlzLmNoaWxkcmVuLm1hcCgoY29uZCkgPT4gY29uZC5iaW5kKCkpLFxuICAgIH07XG4gIH1cbn1cblxuY2xhc3MgVGFnQ29uZGl0aW9uUHJlZGljYXRlIGV4dGVuZHMgVGFnQ29uZGl0aW9uIHtcbiAgcHVibGljIHJlYWRvbmx5IGlzUHJlZGljYXRlID0gdHJ1ZTtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHlwZTogVGFnQ29uZGl0aW9uTG9naWNUeXBlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc291cmNlPzogVGFnQ29uZGl0aW9uU291cmNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkga2V5Pzogc3RyaW5nW10sXG4gICAgcHJpdmF0ZSByZWFkb25seSB2YWx1ZT86IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM/OiBUYWdDb25kaXRpb25JbmNsdWRlc09wdGlvbnNcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBiaW5kKCk6IFRhZ0NvbmRpdGlvbkNvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIHNvdXJjZTogdGhpcy5zb3VyY2UsXG4gICAgICBrZXk6IHRoaXMua2V5LFxuICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXG4gICAgICBvcHRpb25zOiB0aGlzLm9wdGlvbnMsXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIFRhcmdldCBhIGZpZWxkIHRvIHVzZSBpbiBsb2dpYyB0byBkaWN0YXRlIHdoZXRoZXIgYSB0YWcgaXMgcmVsZXZhbnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBUYWdDb25kaXRpb25GaWVsZCB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZpZWxkOiBzdHJpbmdbXSkge31cblxuICAvKipcbiAgICogQ3JlYXRlIGEgPT09IGNvbmRpdGlvbiB3aGljaCBhcHBsaWVzIGlmIHRoZSBzcGVjaWZpZWQgZmllbGQgd2l0aGluIHRoZVxuICAgKiBwYWNrYWdlJ3MgcGFja2FnZS5qc29uIGlzIGVxdWFsIHRvIHRoZSBwYXNzZWQgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgZXEodmFsdWU6IGFueSk6IFRhZ0NvbmRpdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBUYWdDb25kaXRpb25QcmVkaWNhdGUoXG4gICAgICBUYWdDb25kaXRpb25Mb2dpY1R5cGUuRVFVQUxTLFxuICAgICAgVGFnQ29uZGl0aW9uU291cmNlLlBBQ0tBR0VfSlNPTixcbiAgICAgIHRoaXMuZmllbGQsXG4gICAgICB2YWx1ZVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgYGZpZWxkLmluY2x1ZGVzKHZhbHVlKWAgY29uZGl0aW9uIHdoaWNoIGFwcGxpZXMgaWYgdGhlIHNwZWNpZmllZFxuICAgKiBmaWVsZCB3aXRoaW4gdGhlIHBhY2thZ2UncyBwYWNrYWdlLmpzb24gaW5jbHVkZXMgdGhlIHZhbHVlLiBUaGlzIHdvcmtzIGZvclxuICAgKiBhcnJheXMgb3Igc3RyaW5ncy5cbiAgICovXG4gIHB1YmxpYyBpbmNsdWRlcyhcbiAgICB2YWx1ZTogYW55LFxuICAgIG9wdGlvbnM6IFRhZ0NvbmRpdGlvbkluY2x1ZGVzT3B0aW9ucyA9IHt9XG4gICk6IFRhZ0NvbmRpdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBUYWdDb25kaXRpb25QcmVkaWNhdGUoXG4gICAgICBUYWdDb25kaXRpb25Mb2dpY1R5cGUuSU5DTFVERVMsXG4gICAgICBUYWdDb25kaXRpb25Tb3VyY2UuUEFDS0FHRV9KU09OLFxuICAgICAgdGhpcy5maWVsZCxcbiAgICAgIHZhbHVlLFxuICAgICAgb3B0aW9uc1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgYGZpZWxkLnN0YXJ0c1dpdGgodmFsdWUpYCBjb25kaXRpb24gd2hpY2ggYXBwbGllcyBpZiB0aGUgc3BlY2lmaWVkXG4gICAqIGZpZWxkIHdpdGhpbiB0aGUgcGFja2FnZSdzIHBhY2thZ2UuanNvbiBiZWdpbnMgd2l0aCB0aGUgdmFsdWUuIFRoaXMgd29ya3NcbiAgICogb25seSBmb3Igc3RyaW5nIHZhbHVlcy5cbiAgICovXG4gIHB1YmxpYyBzdGFydHNXaXRoKHZhbHVlOiBzdHJpbmcpOiBUYWdDb25kaXRpb24ge1xuICAgIHJldHVybiBuZXcgVGFnQ29uZGl0aW9uUHJlZGljYXRlKFxuICAgICAgVGFnQ29uZGl0aW9uTG9naWNUeXBlLlNUQVJUU19XSVRILFxuICAgICAgVGFnQ29uZGl0aW9uU291cmNlLlBBQ0tBR0VfSlNPTixcbiAgICAgIHRoaXMuZmllbGQsXG4gICAgICB2YWx1ZVxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBUYXJnZXQgdGhlIFJFQURNRSBvZiB0aGUgcGFja2FnZSB0byBkaWN0YXRlIHdoZXRoZXIgYSB0YWcgaXMgcmVsZXZhbnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBUYWdDb25kaXRpb25SZWFkbWUge1xuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7fVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBgcmVhZG1lLmluY2x1ZGVzKHZhbHVlKWAgY29uZGl0aW9uIHdoaWNoIGFwcGxpZXMgaWYgdGhlIFJFQURNRVxuICAgKiBpbmNsdWRlcyB0aGUgc3BlY2lmaWVkIHN0cmluZy5cbiAgICovXG4gIHB1YmxpYyBpbmNsdWRlcyhcbiAgICB2YWx1ZTogc3RyaW5nLFxuICAgIG9wdGlvbnM6IFRhZ0NvbmRpdGlvbkluY2x1ZGVzT3B0aW9ucyA9IHt9XG4gICk6IFRhZ0NvbmRpdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBUYWdDb25kaXRpb25QcmVkaWNhdGUoXG4gICAgICBUYWdDb25kaXRpb25Mb2dpY1R5cGUuSU5DTFVERVMsXG4gICAgICBUYWdDb25kaXRpb25Tb3VyY2UuUkVBRE1FLFxuICAgICAgdW5kZWZpbmVkLCAvLyBubyBrZXlcbiAgICAgIHZhbHVlLFxuICAgICAgb3B0aW9uc1xuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBgaW5jbHVkZXNgIG9wZXJhdG9yLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZ0NvbmRpdGlvbkluY2x1ZGVzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgbXVzdCBhcHBlYXIgYXQgbGVhc3QgdGhpcyBtYW55IHRpbWVzLlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICByZWFkb25seSBhdExlYXN0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTdHJpbmcgbWF0Y2hlcyBtdXN0IG1hdGNoIHRoZSBjYXNpbmcgb2YgdGhlIG9yaWdpbmFsIHN0cmluZy4gVGhpcyBvcHRpb25cbiAgICogaXMgaWdub3JlZCBpZiB0aGUgdmFsdWUgd2UgYXJlIGNoZWNraW5nIGlzIGFuIGFycmF5LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgY2FzZVNlbnNpdGl2ZT86IGJvb2xlYW47XG59XG4iXX0=
|
@@ -13,7 +13,7 @@ class FilterType {
|
|
13
13
|
}
|
14
14
|
exports.FilterType = FilterType;
|
15
15
|
_a = JSII_RTTI_SYMBOL_1;
|
16
|
-
FilterType[_a] = { fqn: "construct-hub.FilterType", version: "0.4.
|
16
|
+
FilterType[_a] = { fqn: "construct-hub.FilterType", version: "0.4.401" };
|
17
17
|
class FilterTypeRadio extends FilterType {
|
18
18
|
bind() {
|
19
19
|
return { type: 'radio' };
|
@@ -45,5 +45,5 @@ class PackageTagGroup {
|
|
45
45
|
}
|
46
46
|
exports.PackageTagGroup = PackageTagGroup;
|
47
47
|
_b = JSII_RTTI_SYMBOL_1;
|
48
|
-
PackageTagGroup[_b] = { fqn: "construct-hub.PackageTagGroup", version: "0.4.
|
48
|
+
PackageTagGroup[_b] = { fqn: "construct-hub.PackageTagGroup", version: "0.4.401" };
|
49
49
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFja2FnZS10YWctZ3JvdXAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFJQSxNQUFzQixVQUFVO0lBQzlCLE1BQU0sQ0FBQyxRQUFRO1FBQ2IsT0FBTyxJQUFJLGtCQUFrQixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLO1FBQ1YsT0FBTyxJQUFJLGVBQWUsRUFBRSxDQUFDO0lBQy9CLENBQUM7O0FBUEgsZ0NBVUM7OztBQUVELE1BQU0sZUFBZ0IsU0FBUSxVQUFVO0lBQy9CLElBQUk7UUFDVCxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzNCLENBQUM7Q0FDRjtBQUVELE1BQU0sa0JBQW1CLFNBQVEsVUFBVTtJQUNsQyxJQUFJO1FBQ1QsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUM5QixDQUFDO0NBQ0Y7QUF3QkQ7O0dBRUc7QUFDSCxNQUFhLGVBQWU7SUFLMUIsWUFBNEIsRUFBVSxFQUFFLEtBQTRCO1FBQXhDLE9BQUUsR0FBRixFQUFFLENBQVE7UUFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLEVBQUUsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxFQUFFLE9BQU8sQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsS0FBSyxFQUFFLFVBQVUsSUFBSSxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDN0UsQ0FBQztJQUVNLElBQUk7UUFDVCxPQUFPO1lBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7U0FDNUIsQ0FBQztJQUNKLENBQUM7O0FBbEJILDBDQW1CQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyVHlwZVZhbHVlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2NoZWNrYm94JyB8ICdyYWRpbyc7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGaWx0ZXJUeXBlIHtcbiAgc3RhdGljIGNoZWNrYm94KCk6IEZpbHRlclR5cGUge1xuICAgIHJldHVybiBuZXcgRmlsdGVyVHlwZUNoZWNrYm94KCk7XG4gIH1cblxuICBzdGF0aWMgcmFkaW8oKTogRmlsdGVyVHlwZSB7XG4gICAgcmV0dXJuIG5ldyBGaWx0ZXJUeXBlUmFkaW8oKTtcbiAgfVxuXG4gIHB1YmxpYyBhYnN0cmFjdCBiaW5kKCk6IEZpbHRlclR5cGVWYWx1ZTtcbn1cblxuY2xhc3MgRmlsdGVyVHlwZVJhZGlvIGV4dGVuZHMgRmlsdGVyVHlwZSB7XG4gIHB1YmxpYyBiaW5kKCk6IEZpbHRlclR5cGVWYWx1ZSB7XG4gICAgcmV0dXJuIHsgdHlwZTogJ3JhZGlvJyB9O1xuICB9XG59XG5cbmNsYXNzIEZpbHRlclR5cGVDaGVja2JveCBleHRlbmRzIEZpbHRlclR5cGUge1xuICBwdWJsaWMgYmluZCgpOiBGaWx0ZXJUeXBlVmFsdWUge1xuICAgIHJldHVybiB7IHR5cGU6ICdjaGVja2JveCcgfTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhY2thZ2VUYWdHcm91cFByb3BzIHtcbiAgLyoqXG4gICAqIEdyb3VwIGxhYmVsIHRvIGRpc3BsYXkuIEZhbGxzIGJhY2sgdG8gaWQgaWYgbm90IHByb3ZpZGVkXG4gICAqL1xuICByZWFkb25seSBsYWJlbD86IHN0cmluZztcbiAgLyoqXG4gICAqIE9wdGlvbmFsIG1lc3NhZ2UgdG8gc2hvdyB3aXRoaW4gYSB0b29sdGlwIG5leHQgdG8gdGhlIGZpbHRlciBsYWJlbFxuICAgKi9cbiAgcmVhZG9ubHkgdG9vbHRpcD86IHN0cmluZztcbiAgLyoqXG4gICAqIEFsbG93cyB0byBzcGVjaWZ5IHRoZSBncm91cCBmaWx0ZXIgdHlwZS4gRGVmYXVsdHMgdG8gY2hlY2tib3ggaWYgbm90IHNwZWNpZmllZFxuICAgKi9cbiAgcmVhZG9ubHkgZmlsdGVyVHlwZT86IEZpbHRlclR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFja2FnZVRhZ0dyb3VwQ29uZmlnIHtcbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgbGFiZWw/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRvb2x0aXA/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGZpbHRlclR5cGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVmaW5lcyBhIGN1c3RvbSBwYWNrYWdlIHRhZyBncm91cFxuICovXG5leHBvcnQgY2xhc3MgUGFja2FnZVRhZ0dyb3VwIHtcbiAgcHVibGljIHJlYWRvbmx5IGxhYmVsPzogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgdG9vbHRpcD86IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGZpbHRlclR5cGU/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGlkOiBzdHJpbmcsIHByb3BzPzogUGFja2FnZVRhZ0dyb3VwUHJvcHMpIHtcbiAgICB0aGlzLmxhYmVsID0gcHJvcHM/LmxhYmVsO1xuICAgIHRoaXMudG9vbHRpcCA9IHByb3BzPy50b29sdGlwO1xuICAgIHRoaXMuZmlsdGVyVHlwZSA9IChwcm9wcz8uZmlsdGVyVHlwZSA/PyBGaWx0ZXJUeXBlLmNoZWNrYm94KCkpLmJpbmQoKS50eXBlO1xuICB9XG5cbiAgcHVibGljIGJpbmQoKTogUGFja2FnZVRhZ0dyb3VwQ29uZmlnIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICBsYWJlbDogdGhpcy5sYWJlbCxcbiAgICAgIHRvb2x0aXA6IHRoaXMudG9vbHRpcCxcbiAgICAgIGZpbHRlclR5cGU6IHRoaXMuZmlsdGVyVHlwZSxcbiAgICB9O1xuICB9XG59XG4iXX0=
|
@@ -31,5 +31,5 @@ class PreloadFile {
|
|
31
31
|
}
|
32
32
|
exports.PreloadFile = PreloadFile;
|
33
33
|
_a = JSII_RTTI_SYMBOL_1;
|
34
|
-
PreloadFile[_a] = { fqn: "construct-hub.PreloadFile", version: "0.4.
|
34
|
+
PreloadFile[_a] = { fqn: "construct-hub.PreloadFile", version: "0.4.401" };
|
35
35
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJlbG9hZC1maWxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMkJBQWtDO0FBRWxDOzs7R0FHRztBQUNILE1BQWEsV0FBVztJQUN0Qjs7T0FFRztJQUNILE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBWTtRQUMxQixNQUFNLElBQUksR0FBRyxJQUFBLGlCQUFZLEVBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDdkQsT0FBTyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsUUFBUSxDQUFDLElBQVk7UUFDMUIsT0FBTyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsWUFBNkIsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7SUFBRyxDQUFDO0lBRXRDLElBQUk7UUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQzs7QUFwQkgsa0NBcUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVhZEZpbGVTeW5jIH0gZnJvbSAnZnMnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBqYXZhc2NyaXB0IGZpbGUgdG8gbG9hZCBiZWZvcmUgdGhlIHdlYmFwcC5cbiAqIFRoaXMgY2FuIGFsbG93IG9wZXJhdG9ycyB0byBhZGQgdGhlaXIgb3duIGNsaWVudCBtb25pdG9ycyBvciBhbmFseXRpY3MgaWYgdGhleSB3aXNoXG4gKi9cbmV4cG9ydCBjbGFzcyBQcmVsb2FkRmlsZSB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgUHJlbG9hZEZpbGUgaW5zdGFuY2UgZnJvbSBhIGZpbGVwYXRoIHRvIGxvYWRcbiAgICovXG4gIHN0YXRpYyBmcm9tRmlsZShwYXRoOiBzdHJpbmcpOiBQcmVsb2FkRmlsZSB7XG4gICAgY29uc3QgZGF0YSA9IHJlYWRGaWxlU3luYyhwYXRoLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pO1xuICAgIHJldHVybiBuZXcgUHJlbG9hZEZpbGUoZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIFByZWxvYWRGaWxlIGluc3RhbmNlIGRpcmVjdGx5IGZyb20gc291cmNlIGNvZGVcbiAgICovXG4gIHN0YXRpYyBmcm9tQ29kZShjb2RlOiBzdHJpbmcpOiBQcmVsb2FkRmlsZSB7XG4gICAgcmV0dXJuIG5ldyBQcmVsb2FkRmlsZShjb2RlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZGF0YTogc3RyaW5nKSB7fVxuXG4gIHB1YmxpYyBiaW5kKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgfVxufVxuIl19
|
package/lib/s3/storage.js
CHANGED
@@ -52,6 +52,6 @@ class S3StorageFactory extends constructs_1.Construct {
|
|
52
52
|
}
|
53
53
|
exports.S3StorageFactory = S3StorageFactory;
|
54
54
|
_a = JSII_RTTI_SYMBOL_1;
|
55
|
-
S3StorageFactory[_a] = { fqn: "construct-hub.S3StorageFactory", version: "0.4.
|
55
|
+
S3StorageFactory[_a] = { fqn: "construct-hub.S3StorageFactory", version: "0.4.401" };
|
56
56
|
S3StorageFactory.UID = 'S3StorageFactory';
|
57
57
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zMy9zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQXFEO0FBQ3JELHlDQUF5QztBQUN6QywyQ0FBdUM7QUFjdkM7O0dBRUc7QUFDSCxNQUFhLGdCQUFpQixTQUFRLHNCQUFTO0lBQzdDOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUN2QixLQUFnQixFQUNoQixRQUErQixFQUFFO1FBRWpDLE1BQU0sS0FBSyxHQUFHLG1CQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBcUIsQ0FBQztJQUN4RSxDQUFDO0lBTUQsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsUUFBK0IsRUFBRTtRQUVqQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUM7SUFDaEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxTQUFTLENBQ2QsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQXNCO1FBRXRCLFNBQVMsV0FBVyxDQUFDLE1BQWlCO1lBQ3BDLE1BQU0sU0FBUyxHQUFHLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMvRCxrQkFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBRTNDLElBQUksdUJBQVMsQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLEVBQUU7Z0JBQ3RDLFdBQVcsRUFBRSxZQUFZLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUMzQyxLQUFLLEVBQUUsb0JBQW9CLE1BQU0sQ0FBQyxVQUFVLFNBQVMsU0FBUyxDQUFDLFVBQVUsRUFBRTthQUM1RSxDQUFDLENBQUM7WUFDSCxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFaEQsNkVBQTZFO1FBQzdFLGtGQUFrRjtRQUNsRix5QkFBeUI7UUFDekIsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXRDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDbEQsQ0FBQzs7QUE1REgsNENBNkRDOzs7QUEzQ3lCLG9CQUFHLEdBQUcsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5PdXRwdXQsIFN0YWNrLCBUYWdzIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgczMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGBTM1N0b3JhZ2VGYWN0b3J5YFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFMzU3RvcmFnZUZhY3RvcnlQcm9wcyB7XG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIHRoZSBmYWN0b3J5IHdpbGwgcmV0dXJuIHRoZSBmYWlsb3ZlciBidWNrZXRzIGluc3RlYWQgb2YgdGhlIHByaW1hcnkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBmYWlsb3Zlcj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ3JlYXRlIHMzIHN0b3JhZ2UgcmVzb3VyY2VzLlxuICovXG5leHBvcnQgY2xhc3MgUzNTdG9yYWdlRmFjdG9yeSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBSZXRyaWV2ZSBvciBjcmVhdGUgdGhlIHN0b3JhZ2UgZmFjdG9yeSBmb3IgdGhlIGN1cnJlbnQgc2NvcGUuXG4gICAqXG4gICAqIFRoaXMgaXMgc3RhY2sgc2luZ2xldG9uLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRPckNyZWF0ZShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIHByb3BzOiBTM1N0b3JhZ2VGYWN0b3J5UHJvcHMgPSB7fVxuICApOiBTM1N0b3JhZ2VGYWN0b3J5IHtcbiAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHNjb3BlKTtcbiAgICBjb25zdCBmYWN0b3J5ID0gc3RhY2subm9kZS50cnlGaW5kQ2hpbGQoUzNTdG9yYWdlRmFjdG9yeS5VSUQpO1xuICAgIGlmICghZmFjdG9yeSkge1xuICAgICAgcmV0dXJuIG5ldyBTM1N0b3JhZ2VGYWN0b3J5KHN0YWNrLCBTM1N0b3JhZ2VGYWN0b3J5LlVJRCwgcHJvcHMpO1xuICAgIH1cbiAgICByZXR1cm4gc3RhY2subm9kZS5maW5kQ2hpbGQoUzNTdG9yYWdlRmFjdG9yeS5VSUQpIGFzIFMzU3RvcmFnZUZhY3Rvcnk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBVSUQgPSAnUzNTdG9yYWdlRmFjdG9yeSc7XG5cbiAgcHJpdmF0ZSBmYWlsb3ZlckFjdGl2ZTogYm9vbGVhbjtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogUzNTdG9yYWdlRmFjdG9yeVByb3BzID0ge31cbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLmZhaWxvdmVyQWN0aXZlID0gcHJvcHMuZmFpbG92ZXIgPz8gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IGJ1Y2tldCBpbiBhIHN0b3JhZ2UgY29uZmlnIGF3YXJlIG1hbm5lci5cbiAgICpcbiAgICogQHJldHVybnMgczMuQnVja2V0XG4gICAqL1xuICBwdWJsaWMgbmV3QnVja2V0KFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wcz86IHMzLkJ1Y2tldFByb3BzXG4gICk6IHMzLkJ1Y2tldCB7XG4gICAgZnVuY3Rpb24gZmFpbG92ZXJGb3IoYnVja2V0OiBzMy5CdWNrZXQpOiBzMy5CdWNrZXQge1xuICAgICAgY29uc3QgX2ZhaWxvdmVyID0gbmV3IHMzLkJ1Y2tldChzY29wZSwgYEZhaWxvdmVyJHtpZH1gLCBwcm9wcyk7XG4gICAgICBUYWdzLm9mKF9mYWlsb3ZlcikuYWRkKCdmYWlsb3ZlcicsICd0cnVlJyk7XG5cbiAgICAgIG5ldyBDZm5PdXRwdXQoc2NvcGUsICdTbmFwc2hvdENvbW1hbmQnLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBgU25hcHNob3QgJHtidWNrZXQubm9kZS5wYXRofWAsXG4gICAgICAgIHZhbHVlOiBgYXdzIHMzIHN5bmMgczM6Ly8ke2J1Y2tldC5idWNrZXROYW1lfSBzMzovLyR7X2ZhaWxvdmVyLmJ1Y2tldE5hbWV9YCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIF9mYWlsb3ZlcjtcbiAgICB9XG5cbiAgICBjb25zdCBwcmltYXJ5ID0gbmV3IHMzLkJ1Y2tldChzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIC8vIG5vdGUgdGhhdCB3ZSBjcmVhdGUgdGhlIGZhaWxvdmVyIGJ1Y2tldCBldmVuIGlmIHdlIGRvbid0IGN1cnJlbnRseSB1c2UgaXQuXG4gICAgLy8gdGhpcyBpcyBiZWNhdXNlIGNvbmRpdGlvbmluZyBidWNrZXQgY3JlYXRpb24gd2lsbCBldmVudHVhbGx5IGZhaWwgc2luY2UgYnVja2V0c1xuICAgIC8vIGFyZSBub3JtYWxseSByZXRhaW5lZC5cbiAgICBjb25zdCBmYWlsb3ZlciA9IGZhaWxvdmVyRm9yKHByaW1hcnkpO1xuXG4gICAgcmV0dXJuIHRoaXMuZmFpbG92ZXJBY3RpdmUgPyBmYWlsb3ZlciA6IHByaW1hcnk7XG4gIH1cbn1cbiJdfQ==
|