construct-hub 0.4.525 → 0.4.526
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/stage-and-notify.lambda.bundle/index.js +5 -4
- package/lib/package-sources/npmjs/stage-and-notify.lambda.bundle/index.js.map +2 -2
- package/lib/package-sources/npmjs/stage-and-notify.lambda.js +11 -6
- package/lib/package-sources/npmjs.js +5 -3
- 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 +1 -1
|
@@ -50,8 +50,8 @@ class HttpNotFoundError extends Error {
|
|
|
50
50
|
*/
|
|
51
51
|
const NOT_FOUND_RETRY = {
|
|
52
52
|
baseDelayMs: 1_000,
|
|
53
|
-
maxDelayMs:
|
|
54
|
-
deadlineMs: 60_000,
|
|
53
|
+
maxDelayMs: 60_000,
|
|
54
|
+
deadlineMs: 10 * 60_000,
|
|
55
55
|
};
|
|
56
56
|
/**
|
|
57
57
|
* This function is invoked by the `npm-js-follower.lambda` with a `PackageVersion` object, or by
|
|
@@ -155,15 +155,20 @@ async function handler(event, context) {
|
|
|
155
155
|
* Downloads the tarball for a package version, retrying HTTP 404 responses
|
|
156
156
|
* for a while: npm metadata may propagate faster than tarballs, so a freshly
|
|
157
157
|
* published version can transiently 404 even though it will be available
|
|
158
|
-
* shortly.
|
|
158
|
+
* shortly. Retries carry a unique query string because registry.npmjs.org
|
|
159
|
+
* caches 404s at its CDN for 5 minutes: re-requesting the plain URL within
|
|
160
|
+
* the retry deadline would only ever see the first, cached 404.
|
|
159
161
|
*/
|
|
160
162
|
async function downloadTarball(event) {
|
|
161
163
|
const startTime = (0, time_lambda_shared_1.now)();
|
|
162
164
|
let attempt = 0;
|
|
163
165
|
while (true) {
|
|
164
166
|
try {
|
|
165
|
-
|
|
166
|
-
|
|
167
|
+
const url = attempt === 0
|
|
168
|
+
? event.tarballUrl
|
|
169
|
+
: `${event.tarballUrl}?cacheBust=${(0, time_lambda_shared_1.now)()}`;
|
|
170
|
+
console.log(`Downloading tarball from URL: ${url}`);
|
|
171
|
+
return await httpGet(url);
|
|
167
172
|
}
|
|
168
173
|
catch (e) {
|
|
169
174
|
if (!(e instanceof HttpNotFoundError) ||
|
|
@@ -202,4 +207,4 @@ function httpGet(url) {
|
|
|
202
207
|
});
|
|
203
208
|
});
|
|
204
209
|
}
|
|
205
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhZ2UtYW5kLW5vdGlmeS5sYW1iZGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFja2FnZS1zb3VyY2VzL25wbWpzL3N0YWdlLWFuZC1ub3RpZnkubGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0NBLDBCQWlIQztBQWpKRCw2Q0FBK0I7QUFDL0IsNkJBQTBCO0FBQzFCLGtEQUFzRDtBQUN0RCxvREFBeUQ7QUFHekQsdUZBQThFO0FBQzlFLDhFQUErRTtBQUMvRSw4RUFBb0U7QUFDcEUsMEZBQXlFO0FBQ3pFLGdGQUFxRTtBQUVyRSxNQUFNLGlCQUFrQixTQUFRLEtBQUs7Q0FBRztBQUV4Qzs7R0FFRztBQUNILE1BQU0sZUFBZSxHQUFHO0lBQ3RCLFdBQVcsRUFBRSxLQUFLO0lBQ2xCLFVBQVUsRUFBRSxLQUFLO0lBQ2pCLFVBQVUsRUFBRSxNQUFNO0NBQ25CLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNJLEtBQUssVUFBVSxPQUFPLENBQzNCLEtBQWdDLEVBQ2hDLE9BQWdCO0lBRWhCLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRXhELElBQUksU0FBUyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3ZCLCtEQUErRDtRQUMvRCxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBbUIsQ0FBQztRQUM1RCxPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxNQUFNLGFBQWEsR0FBRyxJQUFBLDhCQUFV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LENBQUMsVUFBVSxNQUFNLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FDdkUsQ0FDRixDQUFDO1lBQ0osQ0FBQztZQUVELElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0IsUUFBUSxDQUFDLEVBQUUsQ0FDVCxNQUFNLEVBQ04sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDOUQsQ0FBQztZQUNGLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgaHR0cHMgZnJvbSAnaHR0cHMnO1xuaW1wb3J0IHsgVVJMIH0gZnJvbSAndXJsJztcbmltcG9ydCB7IFB1dE9iamVjdENvbW1hbmQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtczMnO1xuaW1wb3J0IHsgU2VuZE1lc3NhZ2VDb21tYW5kIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXNxcyc7XG5pbXBvcnQgdHlwZSB7IENvbnRleHQsIFNRU0V2ZW50IH0gZnJvbSAnYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBTM0tleVByZWZpeCB9IGZyb20gJy4vY29uc3RhbnRzLmxhbWJkYS1zaGFyZWQnO1xuaW1wb3J0IHsgRGVueUxpc3RDbGllbnQgfSBmcm9tICcuLi8uLi9iYWNrZW5kL2RlbnktbGlzdC9jbGllbnQubGFtYmRhLXNoYXJlZCc7XG5pbXBvcnQgeyBTM19DTElFTlQsIFNRU19DTElFTlQgfSBmcm9tICcuLi8uLi9iYWNrZW5kL3NoYXJlZC9hd3MubGFtYmRhLXNoYXJlZCc7XG5pbXBvcnQgeyByZXF1aXJlRW52IH0gZnJvbSAnLi4vLi4vYmFja2VuZC9zaGFyZWQvZW52LmxhbWJkYS1zaGFyZWQnO1xuaW1wb3J0IHsgaW50ZWdyaXR5IH0gZnJvbSAnLi4vLi4vYmFja2VuZC9zaGFyZWQvaW50ZWdyaXR5LmxhbWJkYS1zaGFyZWQnO1xuaW1wb3J0IHsgbm93LCBzbGVlcCB9IGZyb20gJy4uLy4uL2JhY2tlbmQvc2hhcmVkL3RpbWUubGFtYmRhLXNoYXJlZCc7XG5cbmNsYXNzIEh0dHBOb3RGb3VuZEVycm9yIGV4dGVuZHMgRXJyb3Ige31cblxuLyoqXG4gKiBSZXRyeSBjb25maWd1cmF0aW9uIGZvciB0YXJiYWxsIGRvd25sb2FkcyB0aGF0IHJldHVybiBIVFRQIDQwNC5cbiAqL1xuY29uc3QgTk9UX0ZPVU5EX1JFVFJZID0ge1xuICBiYXNlRGVsYXlNczogMV8wMDAsXG4gIG1heERlbGF5TXM6IDhfMDAwLFxuICBkZWFkbGluZU1zOiA2MF8wMDAsXG59O1xuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgaW52b2tlZCBieSB0aGUgYG5wbS1qcy1mb2xsb3dlci5sYW1iZGFgICB3aXRoIGEgYFBhY2thZ2VWZXJzaW9uYCBvYmplY3QsIG9yIGJ5XG4gKiBhbiBTUVMgdHJpZ2dlciBmZWVkaW5nIGZyb20gdGhpcyBmdW5jdGlvbidzIERlYWQtTGV0dGVyIFF1ZXVlIChmb3IgcmUtdHJ5aW5nIHB1cnBvc2VzKS5cbiAqXG4gKiBUaGUgcGF5bG9hZCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBhIGRpc2NvdmVyZWQgbmV3IHBhY2thZ2UgdmVyc2lvbi4gVGhpcyBoYW5kbGVyIHdpbGxcbiAqIGNoZWNrIHRoZSBwYWNrYWdlIGlzIG5vdCBkZW55LWxpc3RlZCwgZG93bmxvYWQgdGhlIHRhcmJhbGwgZnJvbSB0aGUgcGF5bG9hZCdzIGB0YXJiYWxsVXJsYCwgc3RvcmVcbiAqIGl0IGluIHRoZSBzdGFnaW5nIGJ1Y2tldCwgdGhlbiBzZW5kIGEgbWVzc2FnZSB0byB0aGUgQ29uc3RydWN0SHViIGluZ2VzdGlvbiBTUVMgcXVldWUgaW4gb3JkZXIgdG9cbiAqIHRyaWdnZXIgaW5nZXN0aW9uIG9mIHRoaXMgcGFja2FnZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhbmRsZXIoXG4gIGV2ZW50OiBQYWNrYWdlVmVyc2lvbiB8IFNRU0V2ZW50LFxuICBjb250ZXh0OiBDb250ZXh0XG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc29sZS5sb2coYEV2ZW50OiAke0pTT04uc3RyaW5naWZ5KGV2ZW50LCBudWxsLCAyKX1gKTtcblxuICBpZiAoJ1JlY29yZHMnIGluIGV2ZW50KSB7XG4gICAgLy8gQVRURU5USU9OOiBBc3N1bWVzIHRoZXJlIGlzIG9ubHkgZXhhY3RseSAxIGV2ZW50IGluIHRoZXJlLi4uXG4gICAgZXZlbnQgPSBKU09OLnBhcnNlKGV2ZW50LlJlY29yZHNbMF0uYm9keSkgYXMgUGFja2FnZVZlcnNpb247XG4gICAgY29uc29sZS5sb2coYEV2ZW50IChleHRyYWN0ZWQpOiAke0pTT04uc3RyaW5naWZ5KGV2ZW50LCBudWxsLCAyKX1gKTtcbiAgfVxuXG4gIGNvbnN0IHN0YWdpbmdCdWNrZXQgPSByZXF1aXJlRW52KCdCVUNLRVRfTkFNRScpO1xuICBjb25zdCBxdWV1ZVVybCA9IHJlcXVpcmVFbnYoJ1FVRVVFX1VSTCcpO1xuXG4gIGNvbnN0IGRlbnlMaXN0ID0gYXdhaXQgRGVueUxpc3RDbGllbnQubmV3Q2xpZW50KCk7XG4gIGNvbnN0IGRlbnlSdWxlID0gZGVueUxpc3QubG9va3VwKGV2ZW50Lm5hbWUsIGV2ZW50LnZlcnNpb24pO1xuICBpZiAoZGVueVJ1bGUgIT0gbnVsbCkge1xuICAgIGNvbnNvbGUubG9nKGBQYWNrYWdlIHdhcyBkZW55LWxpc3RlZDogJHtkZW55UnVsZS5yZWFzb259YCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbGV0IHRhcmJhbGw6IEJ1ZmZlcjtcbiAgdHJ5IHtcbiAgICB0YXJiYWxsID0gYXdhaXQgZG93bmxvYWRUYXJiYWxsKGV2ZW50KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmIChlIGluc3RhbmNlb2YgSHR0cE5vdEZvdW5kRXJyb3IpIHtcbiAgICAgIC8vIFRoZSB0YXJiYWxsIGlzIHN0aWxsIG5vdCBhdmFpbGFibGUsIGV2ZW4gYWZ0ZXIgcmV0cnlpbmcgZm9yIGEgd2hpbGVcbiAgICAgIC8vIChzZWUgYGRvd25sb2FkVGFyYmFsbGApLiBJdCBpcyBwcm9iYWJseSBwZXJtYW5lbnRseSBtaXNzaW5nIChlLmc6IHRoZVxuICAgICAgLy8gdmVyc2lvbiB3YXMgdW5wdWJsaXNoZWQpLiBJZiB3ZSB0aHJvdyBhbiBlcnJvciwgdGhlIG1lc3NhZ2Ugd2lsbCBiZVxuICAgICAgLy8gc2VudCB0byB0aGUgRExRLCB0byBiZSBwcm9jZXNzZWQgYWdhaW4gaW4gYSByZS1kcml2ZS4gQnV0IGdpdmVuIHRoYXRcbiAgICAgIC8vIHRoaXMgZmlsZSB3aWxsIHByb2JhYmx5IG5ldmVyIGJlIGF2YWlsYWJsZSwgdGhlIHJlLWRyaXZlcyB3aWxsIGFsc29cbiAgICAgIC8vIGZhaWwsIGFuZCB3ZSdsbCBuZXZlciBiZSBhYmxlIHRvIGdldCByaWQgb2YgdGhlIG1lc3NhZ2UgaW4gdGhlIERMUS5cbiAgICAgIC8vIEluc3RlYWQsIHdlIGlnbm9yZSB0aGlzIHZlcnNpb24gYnkgcmV0dXJuaW5nIHNpbGVudGx5LlxuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGBUYXJiYWxsIG5vdCBmb3VuZCBmb3IgJHtldmVudC5uYW1lfUAke2V2ZW50LnZlcnNpb259IChtb2RpZmllZCAke2V2ZW50Lm1vZGlmaWVkfSksIGlnbm9yaW5nIHRoaXMgdmVyc2lvbjogJHtldmVudC50YXJiYWxsVXJsfWBcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgLy8gU3RvcmUgdGhlIHRhcmJhbGwgaW50byB0aGUgc3RhZ2luZyBidWNrZXRcbiAgLy8gLSBpbmZvcy5kaXN0LnRhcmJhbGwgPT4gaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvPEBzY29wZT4vPG5hbWU+Ly0vPG5hbWU+LTx2ZXJzaW9uPi50Z3pcbiAgLy8gLSBzdGFnaW5nS2V5ICAgICAgICAgPT4gICAgICAgICAgICAgICAgICAgICBzdGFnZWQvPEBzY29wZT4vPG5hbWU+Ly0vPG5hbWU+LTx2ZXJzaW9uPi50Z3pcbiAgY29uc3Qgc3RhZ2luZ0tleSA9IGAke1MzS2V5UHJlZml4LlNUQUdFRF9LRVlfUFJFRklYfSR7XG4gICAgbmV3IFVSTChldmVudC50YXJiYWxsVXJsKS5wYXRobmFtZVxuICB9YC5yZXBsYWNlKC9cXC97Mix9L2csICcvJyk7XG4gIGNvbnNvbGUubG9nKGBTdG9yaW5nIHRhcmJhbGwgaW4gc3RhZ2luZyBidWNrZXQgd2l0aCBrZXkgJHtzdGFnaW5nS2V5fWApO1xuICBhd2FpdCBTM19DTElFTlQuc2VuZChcbiAgICBuZXcgUHV0T2JqZWN0Q29tbWFuZCh7XG4gICAgICBCdWNrZXQ6IHN0YWdpbmdCdWNrZXQsXG4gICAgICBLZXk6IHN0YWdpbmdLZXksXG4gICAgICBCb2R5OiB0YXJiYWxsLFxuICAgICAgQ29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLFxuICAgICAgTWV0YWRhdGE6IHtcbiAgICAgICAgJ0xhbWJkYS1Mb2ctR3JvdXAnOiBjb250ZXh0LmxvZ0dyb3VwTmFtZSxcbiAgICAgICAgJ0xhbWJkYS1Mb2ctU3RyZWFtJzogY29udGV4dC5sb2dTdHJlYW1OYW1lLFxuICAgICAgICAnTGFtYmRhLVJ1bi1JZCc6IGNvbnRleHQuYXdzUmVxdWVzdElkLFxuICAgICAgICAnTW9kaWZpZWQtQXQnOiBldmVudC5tb2RpZmllZCxcbiAgICAgICAgJ09yaWdpbi1JbnRlZ3JpdHknOiBldmVudC5pbnRlZ3JpdHksXG4gICAgICAgICdPcmlnaW4tVVJJJzogZXZlbnQudGFyYmFsbFVybCxcbiAgICAgICAgLy8gU2VxIG1pZ2h0IG5vdCBiZSBwcmVzZW50Li4uIHNvIHNraXAgaXQgaWYgYWJzZW50Li4uXG4gICAgICAgIC4uLihldmVudC5zZXEgPyB7IFNlcXVlbmNlOiBldmVudC5zZXEgfSA6IHt9KSxcbiAgICAgIH0sXG4gICAgfSlcbiAgKTtcblxuICAvLyBQcmVwYXJlIGluZ2VzdGlvbiByZXF1ZXN0XG4gIGNvbnN0IG1lc3NhZ2UgPSBpbnRlZ3JpdHkoXG4gICAge1xuICAgICAgdGFyYmFsbFVyaTogYHMzOi8vJHtzdGFnaW5nQnVja2V0fS8ke3N0YWdpbmdLZXl9YCxcbiAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIGRpc3Q6IGV2ZW50LnRhcmJhbGxVcmwsXG4gICAgICAgIGludGVncml0eTogZXZlbnQuaW50ZWdyaXR5LFxuICAgICAgICBtb2RpZmllZDogZXZlbnQubW9kaWZpZWQsXG4gICAgICAgIC8vIFNlcSBtaWdodCBub3QgYmUgcHJlc2VudC4uLiBzbyBza2lwIGl0IGlmIGFic2VudC4uLlxuICAgICAgICAuLi4oZXZlbnQuc2VxID8geyBzZXE6IGV2ZW50LnNlcSB9IDoge30pLFxuICAgICAgfSxcbiAgICAgIHRpbWU6IGV2ZW50Lm1vZGlmaWVkLFxuICAgIH0sXG4gICAgdGFyYmFsbFxuICApO1xuXG4gIC8vIFNlbmQgbWVzc2FnZSB0byBTUVNcbiAgY29uc29sZS5sb2coXG4gICAgYFNlbmRpbmcgbWVzc2FnZSB0byBDb25zdHJ1Y3RIdWIgaW5nZXN0aW9uIHF1ZXVlOiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgbWVzc2FnZSxcbiAgICAgIG51bGwsXG4gICAgICAyXG4gICAgKX1gXG4gICk7XG4gIGF3YWl0IFNRU19DTElFTlQuc2VuZChcbiAgICBuZXcgU2VuZE1lc3NhZ2VDb21tYW5kKHtcbiAgICAgIE1lc3NhZ2VCb2R5OiBKU09OLnN0cmluZ2lmeShtZXNzYWdlKSxcbiAgICAgIE1lc3NhZ2VBdHRyaWJ1dGVzOiB7XG4gICAgICAgICdMYW1iZGEtTG9nLUdyb3VwJzoge1xuICAgICAgICAgIERhdGFUeXBlOiAnU3RyaW5nJyxcbiAgICAgICAgICBTdHJpbmdWYWx1ZTogY29udGV4dC5sb2dHcm91cE5hbWUsXG4gICAgICAgIH0sXG4gICAgICAgICdMYW1iZGEtTG9nLVN0cmVhbSc6IHtcbiAgICAgICAgICBEYXRhVHlwZTogJ1N0cmluZycsXG4gICAgICAgICAgU3RyaW5nVmFsdWU6IGNvbnRleHQubG9nU3RyZWFtTmFtZSxcbiAgICAgICAgfSxcbiAgICAgICAgJ0xhbWJkYS1SdW4tSWQnOiB7XG4gICAgICAgICAgRGF0YVR5cGU6ICdTdHJpbmcnLFxuICAgICAgICAgIFN0cmluZ1ZhbHVlOiBjb250ZXh0LmF3c1JlcXVlc3RJZCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBRdWV1ZVVybDogcXVldWVVcmwsXG4gICAgfSlcbiAgKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWNrYWdlVmVyc2lvbiB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuICByZWFkb25seSBtb2RpZmllZDogc3RyaW5nO1xuXG4gIHJlYWRvbmx5IHRhcmJhbGxVcmw6IHN0cmluZztcbiAgcmVhZG9ubHkgaW50ZWdyaXR5OiBzdHJpbmc7XG5cbiAgcmVhZG9ubHkgc2VxPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIERvd25sb2FkcyB0aGUgdGFyYmFsbCBmb3IgYSBwYWNrYWdlIHZlcnNpb24sIHJldHJ5aW5nIEhUVFAgNDA0IHJlc3BvbnNlc1xuICogZm9yIGEgd2hpbGU6IG5wbSBtZXRhZGF0YSBtYXkgcHJvcGFnYXRlIGZhc3RlciB0aGFuIHRhcmJhbGxzLCBzbyBhIGZyZXNobHlcbiAqIHB1Ymxpc2hlZCB2ZXJzaW9uIGNhbiB0cmFuc2llbnRseSA0MDQgZXZlbiB0aG91Z2ggaXQgd2lsbCBiZSBhdmFpbGFibGVcbiAqIHNob3J0bHkuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGRvd25sb2FkVGFyYmFsbChldmVudDogUGFja2FnZVZlcnNpb24pOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICBjb25zdCBzdGFydFRpbWUgPSBub3coKTtcbiAgbGV0IGF0dGVtcHQgPSAwO1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIHRyeSB7XG4gICAgICBjb25zb2xlLmxvZyhgRG93bmxvYWRpbmcgdGFyYmFsbCBmcm9tIFVSTDogJHtldmVudC50YXJiYWxsVXJsfWApO1xuICAgICAgcmV0dXJuIGF3YWl0IGh0dHBHZXQoZXZlbnQudGFyYmFsbFVybCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKFxuICAgICAgICAhKGUgaW5zdGFuY2VvZiBIdHRwTm90Rm91bmRFcnJvcikgfHxcbiAgICAgICAgbm93KCkgLSBzdGFydFRpbWUgPj0gTk9UX0ZPVU5EX1JFVFJZLmRlYWRsaW5lTXNcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgICAgY29uc3QgZGVsYXkgPSBNYXRoLm1heChcbiAgICAgICAgTk9UX0ZPVU5EX1JFVFJZLmJhc2VEZWxheU1zLFxuICAgICAgICBNYXRoLmZsb29yKFxuICAgICAgICAgIE1hdGgucmFuZG9tKCkgKlxuICAgICAgICAgICAgTWF0aC5taW4oXG4gICAgICAgICAgICAgIE5PVF9GT1VORF9SRVRSWS5iYXNlRGVsYXlNcyAqIE1hdGgucG93KDIsIGF0dGVtcHQpLFxuICAgICAgICAgICAgICBOT1RfRk9VTkRfUkVUUlkubWF4RGVsYXlNc1xuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApO1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGBUYXJiYWxsIG5vdCBmb3VuZCAoSFRUUCA0MDQpLCByZXRyeWluZyBpbiAke2RlbGF5fSBtczogJHtldmVudC50YXJiYWxsVXJsfWBcbiAgICAgICk7XG4gICAgICBhd2FpdCBzbGVlcChkZWxheSk7XG4gICAgICBhdHRlbXB0Kys7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogTWFrZXMgYW4gSFRUUCBHRVQgcmVxdWVzdCwgYW5kIHJldHVybnMgdGhlIHJlc3VsdGluZyBwYXlsb2FkLlxuICpcbiAqIEBwYXJhbSB1cmwgdGhlIFVSTCB0byBnZXQuXG4gKlxuICogQHJldHVybnMgYSBCdWZmZXIgY29udGFpbmluZyB0aGUgcmVjZWl2ZWQgZGF0YS5cbiAqL1xuZnVuY3Rpb24gaHR0cEdldCh1cmw6IHN0cmluZykge1xuICByZXR1cm4gbmV3IFByb21pc2U8QnVmZmVyPigob2ssIGtvKSA9PiB7XG4gICAgaHR0cHMuZ2V0KHVybCwgKHJlc3BvbnNlKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhyZXNwb25zZS5zdGF0dXNDb2RlKTtcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXNDb2RlID09PSA0MDQpIHtcbiAgICAgICAga28obmV3IEh0dHBOb3RGb3VuZEVycm9yKCkpO1xuICAgICAgfSBlbHNlIGlmIChyZXNwb25zZS5zdGF0dXNDb2RlICE9PSAyMDApIHtcbiAgICAgICAga28oXG4gICAgICAgICAgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFVuc3VjY2Vzc2Z1bCBHRVQ6ICR7cmVzcG9uc2Uuc3RhdHVzQ29kZX0gLSAke3Jlc3BvbnNlLnN0YXR1c01lc3NhZ2V9YFxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGJvZHkgPSBCdWZmZXIuYWxsb2MoMCk7XG4gICAgICByZXNwb25zZS5vbihcbiAgICAgICAgJ2RhdGEnLFxuICAgICAgICAoY2h1bmspID0+IChib2R5ID0gQnVmZmVyLmNvbmNhdChbYm9keSwgQnVmZmVyLmZyb20oY2h1bmspXSkpXG4gICAgICApO1xuICAgICAgcmVzcG9uc2Uub25jZSgnY2xvc2UnLCAoKSA9PiBvayhib2R5KSk7XG4gICAgICByZXNwb25zZS5vbmNlKCdlcnJvcicsIGtvKTtcbiAgICB9KTtcbiAgfSk7XG59XG4iXX0=
|
|
210
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhZ2UtYW5kLW5vdGlmeS5sYW1iZGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFja2FnZS1zb3VyY2VzL25wbWpzL3N0YWdlLWFuZC1ub3RpZnkubGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0NBLDBCQWlIQztBQWpKRCw2Q0FBK0I7QUFDL0IsNkJBQTBCO0FBQzFCLGtEQUFzRDtBQUN0RCxvREFBeUQ7QUFHekQsdUZBQThFO0FBQzlFLDhFQUErRTtBQUMvRSw4RUFBb0U7QUFDcEUsMEZBQXlFO0FBQ3pFLGdGQUFxRTtBQUVyRSxNQUFNLGlCQUFrQixTQUFRLEtBQUs7Q0FBRztBQUV4Qzs7R0FFRztBQUNILE1BQU0sZUFBZSxHQUFHO0lBQ3RCLFdBQVcsRUFBRSxLQUFLO0lBQ2xCLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLFVBQVUsRUFBRSxFQUFFLEdBQUcsTUFBTTtDQUN4QixDQUFDO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSSxLQUFLLFVBQVUsT0FBTyxDQUMzQixLQUFnQyxFQUNoQyxPQUFnQjtJQUVoQixPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUV4RCxJQUFJLFNBQVMsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN2QiwrREFBK0Q7UUFDL0QsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQW1CLENBQUM7UUFDNUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsTUFBTSxhQUFhLEdBQUcs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SUFBSSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7WUFDOUIsQ0FBQztpQkFBTSxJQUFJLFFBQVEsQ0FBQyxVQUFVLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ3ZDLEVBQUUsQ0FDQSxJQUFJLEtBQUssQ0FDUCxxQkFBcUIsUUFBUSxDQUFDLFVBQVUsTUFBTSxRQUFRLENBQUMsYUFBYSxFQUFFLENBQ3ZFLENBQ0YsQ0FBQztZQUNKLENBQUM7WUFFRCxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNCLFFBQVEsQ0FBQyxFQUFFLENBQ1QsTUFBTSxFQUNOLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQzlELENBQUM7WUFDRixRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUN2QyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGh0dHBzIGZyb20gJ2h0dHBzJztcbmltcG9ydCB7IFVSTCB9IGZyb20gJ3VybCc7XG5pbXBvcnQgeyBQdXRPYmplY3RDb21tYW5kIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXMzJztcbmltcG9ydCB7IFNlbmRNZXNzYWdlQ29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zcXMnO1xuaW1wb3J0IHR5cGUgeyBDb250ZXh0LCBTUVNFdmVudCB9IGZyb20gJ2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgUzNLZXlQcmVmaXggfSBmcm9tICcuL2NvbnN0YW50cy5sYW1iZGEtc2hhcmVkJztcbmltcG9ydCB7IERlbnlMaXN0Q2xpZW50IH0gZnJvbSAnLi4vLi4vYmFja2VuZC9kZW55LWxpc3QvY2xpZW50LmxhbWJkYS1zaGFyZWQnO1xuaW1wb3J0IHsgUzNfQ0xJRU5ULCBTUVNfQ0xJRU5UIH0gZnJvbSAnLi4vLi4vYmFja2VuZC9zaGFyZWQvYXdzLmxhbWJkYS1zaGFyZWQnO1xuaW1wb3J0IHsgcmVxdWlyZUVudiB9IGZyb20gJy4uLy4uL2JhY2tlbmQvc2hhcmVkL2Vudi5sYW1iZGEtc2hhcmVkJztcbmltcG9ydCB7IGludGVncml0eSB9IGZyb20gJy4uLy4uL2JhY2tlbmQvc2hhcmVkL2ludGVncml0eS5sYW1iZGEtc2hhcmVkJztcbmltcG9ydCB7IG5vdywgc2xlZXAgfSBmcm9tICcuLi8uLi9iYWNrZW5kL3NoYXJlZC90aW1lLmxhbWJkYS1zaGFyZWQnO1xuXG5jbGFzcyBIdHRwTm90Rm91bmRFcnJvciBleHRlbmRzIEVycm9yIHt9XG5cbi8qKlxuICogUmV0cnkgY29uZmlndXJhdGlvbiBmb3IgdGFyYmFsbCBkb3dubG9hZHMgdGhhdCByZXR1cm4gSFRUUCA0MDQuXG4gKi9cbmNvbnN0IE5PVF9GT1VORF9SRVRSWSA9IHtcbiAgYmFzZURlbGF5TXM6IDFfMDAwLFxuICBtYXhEZWxheU1zOiA2MF8wMDAsXG4gIGRlYWRsaW5lTXM6IDEwICogNjBfMDAwLFxufTtcblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGludm9rZWQgYnkgdGhlIGBucG0tanMtZm9sbG93ZXIubGFtYmRhYCAgd2l0aCBhIGBQYWNrYWdlVmVyc2lvbmAgb2JqZWN0LCBvciBieVxuICogYW4gU1FTIHRyaWdnZXIgZmVlZGluZyBmcm9tIHRoaXMgZnVuY3Rpb24ncyBEZWFkLUxldHRlciBRdWV1ZSAoZm9yIHJlLXRyeWluZyBwdXJwb3NlcykuXG4gKlxuICogVGhlIHBheWxvYWQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgYSBkaXNjb3ZlcmVkIG5ldyBwYWNrYWdlIHZlcnNpb24uIFRoaXMgaGFuZGxlciB3aWxsXG4gKiBjaGVjayB0aGUgcGFja2FnZSBpcyBub3QgZGVueS1saXN0ZWQsIGRvd25sb2FkIHRoZSB0YXJiYWxsIGZyb20gdGhlIHBheWxvYWQncyBgdGFyYmFsbFVybGAsIHN0b3JlXG4gKiBpdCBpbiB0aGUgc3RhZ2luZyBidWNrZXQsIHRoZW4gc2VuZCBhIG1lc3NhZ2UgdG8gdGhlIENvbnN0cnVjdEh1YiBpbmdlc3Rpb24gU1FTIHF1ZXVlIGluIG9yZGVyIHRvXG4gKiB0cmlnZ2VyIGluZ2VzdGlvbiBvZiB0aGlzIHBhY2thZ2UuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVyKFxuICBldmVudDogUGFja2FnZVZlcnNpb24gfCBTUVNFdmVudCxcbiAgY29udGV4dDogQ29udGV4dFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnNvbGUubG9nKGBFdmVudDogJHtKU09OLnN0cmluZ2lmeShldmVudCwgbnVsbCwgMil9YCk7XG5cbiAgaWYgKCdSZWNvcmRzJyBpbiBldmVudCkge1xuICAgIC8vIEFUVEVOVElPTjogQXNzdW1lcyB0aGVyZSBpcyBvbmx5IGV4YWN0bHkgMSBldmVudCBpbiB0aGVyZS4uLlxuICAgIGV2ZW50ID0gSlNPTi5wYXJzZShldmVudC5SZWNvcmRzWzBdLmJvZHkpIGFzIFBhY2thZ2VWZXJzaW9uO1xuICAgIGNvbnNvbGUubG9nKGBFdmVudCAoZXh0cmFjdGVkKTogJHtKU09OLnN0cmluZ2lmeShldmVudCwgbnVsbCwgMil9YCk7XG4gIH1cblxuICBjb25zdCBzdGFnaW5nQnVja2V0ID0gcmVxdWlyZUVudignQlVDS0VUX05BTUUnKTtcbiAgY29uc3QgcXVldWVVcmwgPSByZXF1aXJlRW52KCdRVUVVRV9VUkwnKTtcblxuICBjb25zdCBkZW55TGlzdCA9IGF3YWl0IERlbnlMaXN0Q2xpZW50Lm5ld0NsaWVudCgpO1xuICBjb25zdCBkZW55UnVsZSA9IGRlbnlMaXN0Lmxvb2t1cChldmVudC5uYW1lLCBldmVudC52ZXJzaW9uKTtcbiAgaWYgKGRlbnlSdWxlICE9IG51bGwpIHtcbiAgICBjb25zb2xlLmxvZyhgUGFja2FnZSB3YXMgZGVueS1saXN0ZWQ6ICR7ZGVueVJ1bGUucmVhc29ufWApO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxldCB0YXJiYWxsOiBCdWZmZXI7XG4gIHRyeSB7XG4gICAgdGFyYmFsbCA9IGF3YWl0IGRvd25sb2FkVGFyYmFsbChldmVudCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoZSBpbnN0YW5jZW9mIEh0dHBOb3RGb3VuZEVycm9yKSB7XG4gICAgICAvLyBUaGUgdGFyYmFsbCBpcyBzdGlsbCBub3QgYXZhaWxhYmxlLCBldmVuIGFmdGVyIHJldHJ5aW5nIGZvciBhIHdoaWxlXG4gICAgICAvLyAoc2VlIGBkb3dubG9hZFRhcmJhbGxgKS4gSXQgaXMgcHJvYmFibHkgcGVybWFuZW50bHkgbWlzc2luZyAoZS5nOiB0aGVcbiAgICAgIC8vIHZlcnNpb24gd2FzIHVucHVibGlzaGVkKS4gSWYgd2UgdGhyb3cgYW4gZXJyb3IsIHRoZSBtZXNzYWdlIHdpbGwgYmVcbiAgICAgIC8vIHNlbnQgdG8gdGhlIERMUSwgdG8gYmUgcHJvY2Vzc2VkIGFnYWluIGluIGEgcmUtZHJpdmUuIEJ1dCBnaXZlbiB0aGF0XG4gICAgICAvLyB0aGlzIGZpbGUgd2lsbCBwcm9iYWJseSBuZXZlciBiZSBhdmFpbGFibGUsIHRoZSByZS1kcml2ZXMgd2lsbCBhbHNvXG4gICAgICAvLyBmYWlsLCBhbmQgd2UnbGwgbmV2ZXIgYmUgYWJsZSB0byBnZXQgcmlkIG9mIHRoZSBtZXNzYWdlIGluIHRoZSBETFEuXG4gICAgICAvLyBJbnN0ZWFkLCB3ZSBpZ25vcmUgdGhpcyB2ZXJzaW9uIGJ5IHJldHVybmluZyBzaWxlbnRseS5cbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgVGFyYmFsbCBub3QgZm91bmQgZm9yICR7ZXZlbnQubmFtZX1AJHtldmVudC52ZXJzaW9ufSAobW9kaWZpZWQgJHtldmVudC5tb2RpZmllZH0pLCBpZ25vcmluZyB0aGlzIHZlcnNpb246ICR7ZXZlbnQudGFyYmFsbFVybH1gXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIC8vIFN0b3JlIHRoZSB0YXJiYWxsIGludG8gdGhlIHN0YWdpbmcgYnVja2V0XG4gIC8vIC0gaW5mb3MuZGlzdC50YXJiYWxsID0+IGh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnLzxAc2NvcGU+LzxuYW1lPi8tLzxuYW1lPi08dmVyc2lvbj4udGd6XG4gIC8vIC0gc3RhZ2luZ0tleSAgICAgICAgID0+ICAgICAgICAgICAgICAgICAgICAgc3RhZ2VkLzxAc2NvcGU+LzxuYW1lPi8tLzxuYW1lPi08dmVyc2lvbj4udGd6XG4gIGNvbnN0IHN0YWdpbmdLZXkgPSBgJHtTM0tleVByZWZpeC5TVEFHRURfS0VZX1BSRUZJWH0ke1xuICAgIG5ldyBVUkwoZXZlbnQudGFyYmFsbFVybCkucGF0aG5hbWVcbiAgfWAucmVwbGFjZSgvXFwvezIsfS9nLCAnLycpO1xuICBjb25zb2xlLmxvZyhgU3RvcmluZyB0YXJiYWxsIGluIHN0YWdpbmcgYnVja2V0IHdpdGgga2V5ICR7c3RhZ2luZ0tleX1gKTtcbiAgYXdhaXQgUzNfQ0xJRU5ULnNlbmQoXG4gICAgbmV3IFB1dE9iamVjdENvbW1hbmQoe1xuICAgICAgQnVja2V0OiBzdGFnaW5nQnVja2V0LFxuICAgICAgS2V5OiBzdGFnaW5nS2V5LFxuICAgICAgQm9keTogdGFyYmFsbCxcbiAgICAgIENvbnRlbnRUeXBlOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyxcbiAgICAgIE1ldGFkYXRhOiB7XG4gICAgICAgICdMYW1iZGEtTG9nLUdyb3VwJzogY29udGV4dC5sb2dHcm91cE5hbWUsXG4gICAgICAgICdMYW1iZGEtTG9nLVN0cmVhbSc6IGNvbnRleHQubG9nU3RyZWFtTmFtZSxcbiAgICAgICAgJ0xhbWJkYS1SdW4tSWQnOiBjb250ZXh0LmF3c1JlcXVlc3RJZCxcbiAgICAgICAgJ01vZGlmaWVkLUF0JzogZXZlbnQubW9kaWZpZWQsXG4gICAgICAgICdPcmlnaW4tSW50ZWdyaXR5JzogZXZlbnQuaW50ZWdyaXR5LFxuICAgICAgICAnT3JpZ2luLVVSSSc6IGV2ZW50LnRhcmJhbGxVcmwsXG4gICAgICAgIC8vIFNlcSBtaWdodCBub3QgYmUgcHJlc2VudC4uLiBzbyBza2lwIGl0IGlmIGFic2VudC4uLlxuICAgICAgICAuLi4oZXZlbnQuc2VxID8geyBTZXF1ZW5jZTogZXZlbnQuc2VxIH0gOiB7fSksXG4gICAgICB9LFxuICAgIH0pXG4gICk7XG5cbiAgLy8gUHJlcGFyZSBpbmdlc3Rpb24gcmVxdWVzdFxuICBjb25zdCBtZXNzYWdlID0gaW50ZWdyaXR5KFxuICAgIHtcbiAgICAgIHRhcmJhbGxVcmk6IGBzMzovLyR7c3RhZ2luZ0J1Y2tldH0vJHtzdGFnaW5nS2V5fWAsXG4gICAgICBtZXRhZGF0YToge1xuICAgICAgICBkaXN0OiBldmVudC50YXJiYWxsVXJsLFxuICAgICAgICBpbnRlZ3JpdHk6IGV2ZW50LmludGVncml0eSxcbiAgICAgICAgbW9kaWZpZWQ6IGV2ZW50Lm1vZGlmaWVkLFxuICAgICAgICAvLyBTZXEgbWlnaHQgbm90IGJlIHByZXNlbnQuLi4gc28gc2tpcCBpdCBpZiBhYnNlbnQuLi5cbiAgICAgICAgLi4uKGV2ZW50LnNlcSA/IHsgc2VxOiBldmVudC5zZXEgfSA6IHt9KSxcbiAgICAgIH0sXG4gICAgICB0aW1lOiBldmVudC5tb2RpZmllZCxcbiAgICB9LFxuICAgIHRhcmJhbGxcbiAgKTtcblxuICAvLyBTZW5kIG1lc3NhZ2UgdG8gU1FTXG4gIGNvbnNvbGUubG9nKFxuICAgIGBTZW5kaW5nIG1lc3NhZ2UgdG8gQ29uc3RydWN0SHViIGluZ2VzdGlvbiBxdWV1ZTogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBudWxsLFxuICAgICAgMlxuICAgICl9YFxuICApO1xuICBhd2FpdCBTUVNfQ0xJRU5ULnNlbmQoXG4gICAgbmV3IFNlbmRNZXNzYWdlQ29tbWFuZCh7XG4gICAgICBNZXNzYWdlQm9keTogSlNPTi5zdHJpbmdpZnkobWVzc2FnZSksXG4gICAgICBNZXNzYWdlQXR0cmlidXRlczoge1xuICAgICAgICAnTGFtYmRhLUxvZy1Hcm91cCc6IHtcbiAgICAgICAgICBEYXRhVHlwZTogJ1N0cmluZycsXG4gICAgICAgICAgU3RyaW5nVmFsdWU6IGNvbnRleHQubG9nR3JvdXBOYW1lLFxuICAgICAgICB9LFxuICAgICAgICAnTGFtYmRhLUxvZy1TdHJlYW0nOiB7XG4gICAgICAgICAgRGF0YVR5cGU6ICdTdHJpbmcnLFxuICAgICAgICAgIFN0cmluZ1ZhbHVlOiBjb250ZXh0LmxvZ1N0cmVhbU5hbWUsXG4gICAgICAgIH0sXG4gICAgICAgICdMYW1iZGEtUnVuLUlkJzoge1xuICAgICAgICAgIERhdGFUeXBlOiAnU3RyaW5nJyxcbiAgICAgICAgICBTdHJpbmdWYWx1ZTogY29udGV4dC5hd3NSZXF1ZXN0SWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgUXVldWVVcmw6IHF1ZXVlVXJsLFxuICAgIH0pXG4gICk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFja2FnZVZlcnNpb24ge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbiAgcmVhZG9ubHkgbW9kaWZpZWQ6IHN0cmluZztcblxuICByZWFkb25seSB0YXJiYWxsVXJsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGludGVncml0eTogc3RyaW5nO1xuXG4gIHJlYWRvbmx5IHNlcT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBEb3dubG9hZHMgdGhlIHRhcmJhbGwgZm9yIGEgcGFja2FnZSB2ZXJzaW9uLCByZXRyeWluZyBIVFRQIDQwNCByZXNwb25zZXNcbiAqIGZvciBhIHdoaWxlOiBucG0gbWV0YWRhdGEgbWF5IHByb3BhZ2F0ZSBmYXN0ZXIgdGhhbiB0YXJiYWxscywgc28gYSBmcmVzaGx5XG4gKiBwdWJsaXNoZWQgdmVyc2lvbiBjYW4gdHJhbnNpZW50bHkgNDA0IGV2ZW4gdGhvdWdoIGl0IHdpbGwgYmUgYXZhaWxhYmxlXG4gKiBzaG9ydGx5LiBSZXRyaWVzIGNhcnJ5IGEgdW5pcXVlIHF1ZXJ5IHN0cmluZyBiZWNhdXNlIHJlZ2lzdHJ5Lm5wbWpzLm9yZ1xuICogY2FjaGVzIDQwNHMgYXQgaXRzIENETiBmb3IgNSBtaW51dGVzOiByZS1yZXF1ZXN0aW5nIHRoZSBwbGFpbiBVUkwgd2l0aGluXG4gKiB0aGUgcmV0cnkgZGVhZGxpbmUgd291bGQgb25seSBldmVyIHNlZSB0aGUgZmlyc3QsIGNhY2hlZCA0MDQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGRvd25sb2FkVGFyYmFsbChldmVudDogUGFja2FnZVZlcnNpb24pOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICBjb25zdCBzdGFydFRpbWUgPSBub3coKTtcbiAgbGV0IGF0dGVtcHQgPSAwO1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB1cmwgPVxuICAgICAgICBhdHRlbXB0ID09PSAwXG4gICAgICAgICAgPyBldmVudC50YXJiYWxsVXJsXG4gICAgICAgICAgOiBgJHtldmVudC50YXJiYWxsVXJsfT9jYWNoZUJ1c3Q9JHtub3coKX1gO1xuICAgICAgY29uc29sZS5sb2coYERvd25sb2FkaW5nIHRhcmJhbGwgZnJvbSBVUkw6ICR7dXJsfWApO1xuICAgICAgcmV0dXJuIGF3YWl0IGh0dHBHZXQodXJsKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoXG4gICAgICAgICEoZSBpbnN0YW5jZW9mIEh0dHBOb3RGb3VuZEVycm9yKSB8fFxuICAgICAgICBub3coKSAtIHN0YXJ0VGltZSA+PSBOT1RfRk9VTkRfUkVUUlkuZGVhZGxpbmVNc1xuICAgICAgKSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgICBjb25zdCBkZWxheSA9IE1hdGgubWF4KFxuICAgICAgICBOT1RfRk9VTkRfUkVUUlkuYmFzZURlbGF5TXMsXG4gICAgICAgIE1hdGguZmxvb3IoXG4gICAgICAgICAgTWF0aC5yYW5kb20oKSAqXG4gICAgICAgICAgICBNYXRoLm1pbihcbiAgICAgICAgICAgICAgTk9UX0ZPVU5EX1JFVFJZLmJhc2VEZWxheU1zICogTWF0aC5wb3coMiwgYXR0ZW1wdCksXG4gICAgICAgICAgICAgIE5PVF9GT1VORF9SRVRSWS5tYXhEZWxheU1zXG4gICAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYFRhcmJhbGwgbm90IGZvdW5kIChIVFRQIDQwNCksIHJldHJ5aW5nIGluICR7ZGVsYXl9IG1zOiAke2V2ZW50LnRhcmJhbGxVcmx9YFxuICAgICAgKTtcbiAgICAgIGF3YWl0IHNsZWVwKGRlbGF5KTtcbiAgICAgIGF0dGVtcHQrKztcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBNYWtlcyBhbiBIVFRQIEdFVCByZXF1ZXN0LCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0aW5nIHBheWxvYWQuXG4gKlxuICogQHBhcmFtIHVybCB0aGUgVVJMIHRvIGdldC5cbiAqXG4gKiBAcmV0dXJucyBhIEJ1ZmZlciBjb250YWluaW5nIHRoZSByZWNlaXZlZCBkYXRhLlxuICovXG5mdW5jdGlvbiBodHRwR2V0KHVybDogc3RyaW5nKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTxCdWZmZXI+KChvaywga28pID0+IHtcbiAgICBodHRwcy5nZXQodXJsLCAocmVzcG9uc2UpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlLnN0YXR1c0NvZGUpO1xuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgPT09IDQwNCkge1xuICAgICAgICBrbyhuZXcgSHR0cE5vdEZvdW5kRXJyb3IoKSk7XG4gICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgIT09IDIwMCkge1xuICAgICAgICBrbyhcbiAgICAgICAgICBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgVW5zdWNjZXNzZnVsIEdFVDogJHtyZXNwb25zZS5zdGF0dXNDb2RlfSAtICR7cmVzcG9uc2Uuc3RhdHVzTWVzc2FnZX1gXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBsZXQgYm9keSA9IEJ1ZmZlci5hbGxvYygwKTtcbiAgICAgIHJlc3BvbnNlLm9uKFxuICAgICAgICAnZGF0YScsXG4gICAgICAgIChjaHVuaykgPT4gKGJvZHkgPSBCdWZmZXIuY29uY2F0KFtib2R5LCBCdWZmZXIuZnJvbShjaHVuayldKSlcbiAgICAgICk7XG4gICAgICByZXNwb25zZS5vbmNlKCdjbG9zZScsICgpID0+IG9rKGJvZHkpKTtcbiAgICAgIHJlc3BvbnNlLm9uY2UoJ2Vycm9yJywga28pO1xuICAgIH0pO1xuICB9KTtcbn1cbiJdfQ==
|
|
@@ -45,7 +45,7 @@ const NO_CHANGES_ALARM_DURATION = aws_cdk_lib_1.Duration.hours(24);
|
|
|
45
45
|
*/
|
|
46
46
|
class NpmJs {
|
|
47
47
|
props;
|
|
48
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.sources.NpmJs", version: "0.4.
|
|
48
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.sources.NpmJs", version: "0.4.526" };
|
|
49
49
|
constructor(props = {}) {
|
|
50
50
|
this.props = props;
|
|
51
51
|
}
|
|
@@ -91,7 +91,9 @@ class NpmJs {
|
|
|
91
91
|
},
|
|
92
92
|
memorySize: 10_024, // 10GiB
|
|
93
93
|
retryAttempts: 2,
|
|
94
|
-
|
|
94
|
+
// Long enough for the 10 minute tarball 404 retry window, plus margin
|
|
95
|
+
// to download and store a large tarball.
|
|
96
|
+
timeout: aws_cdk_lib_1.Duration.minutes(13),
|
|
95
97
|
tracing: aws_lambda_1.Tracing.ACTIVE,
|
|
96
98
|
});
|
|
97
99
|
bucket.grantReadWrite(stager);
|
|
@@ -582,4 +584,4 @@ exports.NpmJs = NpmJs;
|
|
|
582
584
|
function howOften(rate, duration) {
|
|
583
585
|
return Math.ceil(duration.toSeconds() / rate.toSeconds());
|
|
584
586
|
}
|
|
585
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtanMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFja2FnZS1zb3VyY2VzL25wbWpzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2Q0FBdUM7QUFDdkMsK0RBWW9DO0FBQ3BDLHVEQUF3RDtBQUN4RCx1RUFBZ0U7QUFDaEUsdURBQWlEO0FBQ2pELG1GQUFzRTtBQUN0RSwrQ0FBZ0U7QUFDaEUsaURBQTZEO0FBRTdELGdDQUF1QztBQUN2Qyw0Q0FLc0I7QUFDdEIsa0RBQTZDO0FBQzdDLDhDQUF5QztBQUN6QywyQ0FBb0Q7QUFDcEQsNkVBTXlDO0FBQ3pDLDZEQUF3RDtBQUN4RCwrREFBMEQ7QUFPMUQsZ0RBQTZDO0FBQzdDLDJDQUFpRDtBQUNqRCwrRUFBeUU7QUFFekU7Ozs7R0FJRztBQUNILE1BQU0saUJBQWlCLEdBQUcsc0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFOUM7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLHlCQUF5QixHQUFHLHNCQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBOENyRDs7R0FFRztBQUNILE1BQWEsS0FBSztJQUNvQjs7SUFBcEMsWUFBb0MsUUFBb0IsRUFBRTtRQUF0QixVQUFLLEdBQUwsS0FBSyxDQUFpQjtJQUFHLENBQUM7SUFFdkQsSUFBSSxDQUNULEtBQWdCLEVBQ2hCLEVBQ0UsT0FBTyxFQUNQLFFBQVEsRUFDUixTQUFTLEVBQ1QsV0FBVyxFQUNYLFVBQVUsRUFDVixLQUFLLEVBQ0wsVUFBVSxFQUNWLGlCQUFpQixHQUNRO1FBRTNCLFVBQVUsRUFBRSxxQkFBcUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUVsRCxNQUFNLGNBQWMsR0FBRywwQkFBZ0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsTUFBTSxNQUFNLEdBQ1YsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhO1lBQ3hCLGNBQWMsQ0FBQyxTQUFTLENB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QUNWLDZCQUE2QjtvQkFDN0Isb0NBQW9DO29CQUNwQyxvREFBb0Q7b0JBQ3BELGtEQUFrRDtvQkFDbEQsaURBQWlEO29CQUNqRCx1REFBdUQ7b0JBQ3ZELDJCQUEyQjtpQkFDNUI7YUFDRixDQUFDO1NBQ0gsQ0FBQztJQUNKLENBQUM7O0FBMXBCSCxzQkEycEJDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLFFBQVEsQ0FBQyxJQUFjLEVBQUUsUUFBa0I7SUFDbEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztBQUM1RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHVyYXRpb24gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQge1xuICBBbGFybVJ1bGUsXG4gIENvbXBhcmlzb25PcGVyYXRvcixcbiAgQ29tcG9zaXRlQWxhcm0sXG4gIEdyYXBoV2lkZ2V0LFxuICBJV2lkZ2V0LFxuICBMb2dRdWVyeVdpZGdldCxcbiAgTWF0aEV4cHJlc3Npb24sXG4gIE1ldHJpYyxcbiAgTWV0cmljT3B0aW9ucyxcbiAgU3RhdGlzdGljLFxuICBUcmVhdE1pc3NpbmdEYXRhLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQgeyBSdWxlLCBTY2hlZHVsZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMnO1xuaW1wb3J0IHsgTGFtYmRhRnVuY3Rpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZXZlbnRzLXRhcmdldHMnO1xuaW1wb3J0IHsgVHJhY2luZyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgU3FzRXZlbnRTb3VyY2UgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLWV2ZW50LXNvdXJjZXMnO1xuaW1wb3J0IHsgQmxvY2tQdWJsaWNBY2Nlc3MsIElCdWNrZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0IHsgUXVldWUsIFF1ZXVlRW5jcnlwdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zcXMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBBbGFybVNldmVyaXR5IH0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7XG4gIGxhbWJkYUZ1bmN0aW9uVXJsLFxuICBsb2dBbmFseXRpY3NVcmwsXG4gIHMzT2JqZWN0VXJsLFxuICBzcXNRdWV1ZVVybCxcbn0gZnJvbSAnLi4vZGVlcC1saW5rJztcbmltcG9ydCB7IGZpbGxNZXRyaWMgfSBmcm9tICcuLi9tZXRyaWMtdXRpbHMnO1xuaW1wb3J0IHsgYWRkQWxhcm0gfSBmcm9tICcuLi9tb25pdG9yaW5nJztcbmltcG9ydCB7IE5wbUpzUGFja2FnZUNhbmFyeSB9IGZyb20gJy4vbnBtanMvY2FuYXJ5JztcbmltcG9ydCB7XG4gIEtOT1dOX1ZFUlNJT05TX0ZJTEVfTkFNRSxcbiAgTUFSS0VSX0ZJTEVfTkFNRSxcbiAgTUVUUklDU19OQU1FU1BBQ0UsXG4gIE1ldHJpY05hbWUsXG4gIFMzS2V5UHJlZml4LFxufSBmcm9tICcuL25wbWpzL2NvbnN0YW50cy5sYW1iZGEtc2hhcmVkJztcbmltcG9ydCB7IE5wbUpzRm9sbG93ZXIgfSBmcm9tICcuL25wbWpzL25wbS1qcy1mb2xsb3dlcic7XG5pbXBvcnQgeyBTdGFnZUFuZE5vdGlmeSB9IGZyb20gJy4vbnBtanMvc3RhZ2UtYW5kLW5vdGlmeSc7XG5pbXBvcnQgeyBJTW9uaXRvcmluZyB9IGZyb20gJy4uL21vbml0b3JpbmcvYXBpJztcbmltcG9ydCB0eXBlIHtcbiAgSVBhY2thZ2VTb3VyY2UsXG4gIFBhY2thZ2VTb3VyY2VCaW5kT3B0aW9ucyxcbiAgUGFja2FnZVNvdXJjZUJpbmRSZXN1bHQsXG59IGZyb20gJy4uL3BhY2thZ2Utc291cmNlJztcbmltcG9ydCB7IFJVTkJPT0tfVVJMIH0gZnJvbSAnLi4vcnVuYm9vay11cmwnO1xuaW1wb3J0IHsgUzNTdG9yYWdlRmFjdG9yeSB9IGZyb20gJy4uL3MzL3N0b3JhZ2UnO1xuaW1wb3J0IHsgUmVTdGFnZVBhY2thZ2VWZXJzaW9uIH0gZnJvbSAnLi9ucG1qcy9yZS1zdGFnZS1wYWNrYWdlLXZlcnNpb24nO1xuXG4vKipcbiAqIFRoZSBwZXJpb2RpY2l0eSBhdCB3aGljaCB0aGUgTnBtSnMgZm9sbG93ZXIgd2lsbCBydW4uIFRoaXMgTVVTVCBiZSBhIHZhbGlkXG4gKiBDbG91ZFdhdGNoIE1ldHJpYyBncmFpbiwgYXMgdGhpcyB3aWxsIGFsc28gYmUgdGhlIHBlcmlvZCBvZiB0aGUgQ2xvdWRXYXRjaFxuICogYWxhcm0gdGhhdCBtb25pdG9ycyB0aGUgaGVhbHRoIG9mIHRoZSBmb2xsb3dlci5cbiAqL1xuY29uc3QgRk9MTE9XRVJfUlVOX1JBVEUgPSBEdXJhdGlvbi5taW51dGVzKDUpO1xuXG4vKipcbiAqIEFsYXJtIGlmIHdlIGhhdmVuJ3Qgc2VlbiBjaGFuZ2VzIG92ZXIgdGhpcyB0aW1lXG4gKlxuICogVGhlIENvdWNoREIgbGVhZGVyIG9jY2FzaW9uYWxseSBqdXN0IHN0YXJ0cyB0b3NzaW5nIG91dCB0aW1lb3V0cyBhbmQgdGhleVxuICogbWF5IGxhc3QgZm9yIGEgZ29vZCB3aGlsZS5cbiAqXG4gKiAtIE9uIDIwMjItMDktMjkgaXQgd2FzIHNsb3cgZm9yIDEyIGhvdXJzLlxuICogLSBPbiAyMDIyLTEwLTA0IGl0IHdhcyBzbG93IGZvciAyIGhvdXJzLlxuICpcbiAqIFRoaXMgaXMgbGVhZGluZyB0byBleHRyZW1lIGFsYXJtIGZhdGlndWUsIGFuZCBhbHNvIHRoaXMgYWxhcm0gaXMgbm9uLWFjdGlvbmFibGUuXG4gKiBMZXQncyBiZSB2ZXJ5IHZlcnkgY29uc2VydmF0aXZlIGhlcmUuXG4gKi9cbmNvbnN0IE5PX0NIQU5HRVNfQUxBUk1fRFVSQVRJT04gPSBEdXJhdGlvbi5ob3VycygyNCk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnBtSnNQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgYnVja2V0IHRvIHVzZSBmb3Igc3RhZ2luZyBucG0gcGFja2FnZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYSBuZXcgYnVja2V0IHdpbGwgYmUgY3JlYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHN0YWdpbmdCdWNrZXQ/OiBJQnVja2V0O1xuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBwYWNrYWdlIGNhbmFyeSwgd2hpY2ggd2lsbCB0cmFjayBhdmFpbGFiaWxpdHkgb2YgYSBjYW5hcnlcbiAgICogcGFja2FnZSBpbiBDb25zdHJ1Y3RIdWIsIGFuZCBlbWl0IGRlZGljYXRlZCBtZXRyaWNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVDYW5hcnk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFja2FnZSB0aGF0IGlzIG1vbml0b3JlZCBieSB0aGUgcGFja2FnZSBjYW5hcnksIGlmIGVuYWJsZWQgYnlcbiAgICogYGVuYWJsZUNhbmFyeWAuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdjb25zdHJ1Y3QtaHViLXByb2JlJ1xuICAgKi9cbiAgcmVhZG9ubHkgY2FuYXJ5UGFja2FnZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUgaXQgaXMgc3VwcG9zZWQgdG8gdGFrZSBmb3IgcGFja2FnZXMgdG8gYmVjb21lXG4gICAqIHZpc2libGUgaW4gdGhpcyBDb25zdHJ1Y3RIdWIgaW5zdGFuY2UuIElmIGBlbmFibGVDYW5hcnlgIGlzIGVuYWJsZWQsIGFuXG4gICAqIGFsYXJtIHdpbGwgdHJpZ2dlciBpZiB0aGlzIFNMQSBpcyBicmVhY2hlZCBieSB0aGUgYGNhbmFyeVBhY2thZ2VgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBEdXJhdGlvbi5taW51dGVzKDUpXG4gICAqL1xuICByZWFkb25seSBjYW5hcnlTbGE/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUgdGhlIGNhbmFyeSBwYWNrYWdlIGlzIGV4cGVjdGVkIHRvIGdvIHdpdGhvdXRcbiAgICogcHVibGlzaGluZyBhIG5ldyB2ZXJzaW9uLiBJZiBleGNlZWRlZCwgYW4gYWxhcm0gd2lsbCBmaXJlIGluZGljYXRpbmcgdGhlXG4gICAqIGNhbmFyeSBwYWNrYWdlIG1heSBoYXZlIHN0b3BwZWQgcHVibGlzaGluZywgd2hpY2ggd291bGQgbGVhdmUgdGhlIFNMQVxuICAgKiBhbGFybSBibGluZC5cbiAgICpcbiAgICogQGRlZmF1bHQgRHVyYXRpb24uZGF5cygxKVxuICAgKi9cbiAgcmVhZG9ubHkgY2FuYXJ5TWF4U3RhbGU/OiBEdXJhdGlvbjtcbn1cblxuLyoqXG4gKiBBIHBhY2thZ2Ugc291cmNlIHRoYXQgZ2V0cyBwYWNrYWdlIGRhdGEgZnJvbSB0aGUgbnBtanMuY29tIHBhY2thZ2UgcmVnaXN0cnkuXG4gKi9cbmV4cG9ydCBjbGFzcyBOcG1KcyBpbXBsZW1lbnRzIElQYWNrYWdlU291cmNlIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IE5wbUpzUHJvcHMgPSB7fSkge31cblxuICBwdWJsaWMgYmluZChcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIHtcbiAgICAgIGJhc2VVcmwsXG4gICAgICBkZW55TGlzdCxcbiAgICAgIGluZ2VzdGlvbixcbiAgICAgIGxpY2Vuc2VMaXN0LFxuICAgICAgbW9uaXRvcmluZyxcbiAgICAgIHF1ZXVlLFxuICAgICAgcmVwb3NpdG9yeSxcbiAgICAgIG92ZXJ2aWV3RGFzaGJvYXJkLFxuICAgIH06IFBhY2thZ2VTb3VyY2VCaW5kT3B0aW9uc1xuICApOiBQYWNrYWdlU291cmNlQmluZFJlc3VsdCB7XG4gICAgcmVwb3NpdG9yeT8uYWRkRXh0ZXJuYWxDb25uZWN0aW9uKCdwdWJsaWM6bnBtanMnKTtcblxuICAgIGNvbnN0IHN0b3JhZ2VGYWN0b3J5ID0gUzNTdG9yYWdlRmFjdG9yeS5nZXRPckNyZWF0ZShzY29wZSk7XG4gICAgY29uc3QgYnVja2V0ID1cbiAgICAgIHRoaXMucHJvcHMuc3RhZ2luZ0J1Y2tldCB8fFxuICAgICAgc3RvcmFnZUZhY3RvcnkubmV3QnVja2V0KHNjb3BlLCAnTnBtSnMvU3RhZ2luZ0J1Y2tldCcsIHtcbiAgICAgICAgYmxvY2tQdWJsaWNBY2Nlc3M6IEJsb2NrUHVibGljQWNjZXNzLkJMT0NLX0FMTCxcbiAgICAgICAgZW5mb3JjZVNTTDogdHJ1ZSxcbiAgICAgICAgdmVyc2lvbmVkOiB0cnVlLFxuICAgICAgICBsaWZlY3ljbGVSdWxlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHByZWZpeDogUzNLZXlQcmVmaXguU1RBR0VEX0tFWV9QUkVGSVgsXG4gICAgICAgICAgICBleHBpcmF0aW9uOiBEdXJhdGlvbi5kYXlzKDMwKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIFBlcm1hbmVudGx5IGRlbGV0ZSBtYXJrZXIgZmlsZSB1cGRhdGVzIGFmdGVyIDEgZGF5ICh3ZSBkb24ndCBuZWVkIHRoZXNlKVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHByZWZpeDogTUFSS0VSX0ZJTEVfTkFNRSxcbiAgICAgICAgICAgIG5vbmN1cnJlbnRWZXJzaW9uRXhwaXJhdGlvbjogRHVyYXRpb24uZGF5cygxKSxcbiAgICAgICAgICAgIGV4cGlyZWRPYmplY3REZWxldGVNYXJrZXI6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBQZXJtYW5lbnRseSBkZWxldGUga25vd24gdmVyc2lvbiBiYWNrdXBzIGFmdGVyIDMwIGRheXNcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcmVmaXg6IEtOT1dOX1ZFUlNJT05TX0ZJTEVfTkFNRSxcbiAgICAgICAgICAgIG5vbmN1cnJlbnRWZXJzaW9uRXhwaXJhdGlvbjogRHVyYXRpb24uZGF5cygzMCksXG4gICAgICAgICAgICBleHBpcmVkT2JqZWN0RGVsZXRlTWFya2VyOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICBidWNrZXQuZ3JhbnRSZWFkKGluZ2VzdGlvbik7XG5cbiAgICBjb25zdCBzdGFnZXIgPSBuZXcgU3RhZ2VBbmROb3RpZnkoc2NvcGUsICdOcG1Kcy1TdGFnZUFuZE5vdGlmeScsIHtcbiAgICAgIGRlYWRMZXR0ZXJRdWV1ZTogbmV3IFF1ZXVlKHNjb3BlLCAnU3RhZ2VyRExRJywge1xuICAgICAgICBlbmNyeXB0aW9uOiBRdWV1ZUVuY3J5cHRpb24uS01TX01BTkFHRUQsXG4gICAgICAgIHJldGVudGlvblBlcmlvZDogRHVyYXRpb24uZGF5cygxNCksXG4gICAgICAgIHZpc2liaWxpdHlUaW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDE1KSxcbiAgICAgIH0pLFxuICAgICAgZGVzY3JpcHRpb246IGBbJHtzY29wZS5ub2RlLnBhdGh9L05wbUpTLVN0YWdlQW5kTm90aWZ5XSBTdGFnZXMgdGFyYmFsbHMgdG8gUzMgYW5kIG5vdGlmaWVzIENvbnN0cnVjdEh1YmAsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBBV1NfRU1GX0VOVklST05NRU5UOiAnTG9jYWwnLFxuICAgICAgICBCVUNLRVRfTkFNRTogYnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICAgIFFVRVVFX1VSTDogcXVldWUucXVldWVVcmwsXG4gICAgICB9LFxuICAgICAgbWVtb3J5U2l6ZTogMTBfMDI0LCAvLyAxMEdpQlxuICAgICAgcmV0cnlBdHRlbXB0czogMixcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICB0cmFjaW5nOiBUcmFjaW5nLkFDVElWRSxcbiAgICB9KTtcblxuICAgIGJ1Y2tldC5ncmFudFJlYWRXcml0ZShzdGFnZXIpO1xuICAgIGRlbnlMaXN0Py5ncmFudFJlYWQoc3RhZ2VyKTtcbiAgICBxdWV1ZS5ncmFudFNlbmRNZXNzYWdlcyhzdGFnZXIpO1xuXG4gICAgc3RhZ2VyLmFkZEV2ZW50U291cmNlKFxuICAgICAgbmV3IFNxc0V2ZW50U291cmNlKHN0YWdlci5kZWFkTGV0dGVyUXVldWUhLCB7XG4gICAgICAgIGJhdGNoU2l6ZTogMSxcbiAgICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICB9KVxuICAgICk7XG5cbiAgICBjb25zdCBmb2xsb3dlciA9IG5ldyBOcG1Kc0ZvbGxvd2VyKHNjb3BlLCAnTnBtSnMnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogYFske3Njb3BlLm5vZGUucGF0aH0vTnBtSnNdIFBlcmlvZGljYWxseSBxdWVyeSBucG1qcy5jb20gaW5kZXggZm9yIG5ldyBwYWNrYWdlc2AsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBBV1NfRU1GX0VOVklST05NRU5UOiAnTG9jYWwnLFxuICAgICAgICBCVUNLRVRfTkFNRTogYnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICAgIEZVTkNUSU9OX05BTUU6IHN0YWdlci5mdW5jdGlvbk5hbWUsXG4gICAgICB9LFxuICAgICAgbWVtb3J5U2l6ZTogMTBfMDI0LCAvLyAxMCBHaUJcbiAgICAgIHJlc2VydmVkQ29uY3VycmVudEV4ZWN1dGlvbnM6IDEsIC8vIE9ubHkgb25lIGV4ZWN1dGlvbiBhdCBhIHRpbWUsIHRvIGF2b2lkIHJhY2UgY29uZGl0aW9ucyBvbiB0aGUgUzMgbWFya2VyIG9iamVjdFxuICAgICAgdGltZW91dDogRk9MTE9XRVJfUlVOX1JBVEUsXG4gICAgICB0cmFjaW5nOiBUcmFjaW5nLkFDVElWRSxcbiAgICB9KTtcblxuICAgIGJ1Y2tldC5ncmFudFJlYWRXcml0ZShmb2xsb3dlciwgTUFSS0VSX0ZJTEVfTkFNRSk7XG4gICAgYnVja2V0LmdyYW50UmVhZFdyaXRlKGZvbGxvd2VyLCBLTk9XTl9WRVJTSU9OU19GSUxFX05BTUUpO1xuICAgIGRlbnlMaXN0Py5ncmFudFJlYWQoZm9sbG93ZXIpO1xuICAgIGxpY2Vuc2VMaXN0LmdyYW50UmVhZChmb2xsb3dlcik7XG4gICAgc3RhZ2VyLmdyYW50SW52b2tlKGZvbGxvd2VyKTtcblxuICAgIGNvbnN0IHJlc3RhZ2VyID0gbmV3IFJlU3RhZ2VQYWNrYWdlVmVyc2lvbihzY29wZSwgJ1JlU3RhZ2VQYWNrYWdlVmVyc2lvbicsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgTWFudWFsbHkgcmUtc3RhZ2UgYSBwYWNrYWdlIHZlcnNpb25gLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgRlVOQ1RJT05fTkFNRTogc3RhZ2VyLmZ1bmN0aW9uTmFtZSxcbiAgICAgICAgUkVHSVNUUllfVVJMOiAnaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcnLFxuICAgICAgfSxcbiAgICAgIG1lbW9yeVNpemU6IDEwMjQsXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDEwKSxcbiAgICB9KTtcbiAgICBzdGFnZXIuZ3JhbnRJbnZva2UocmVzdGFnZXIpO1xuXG4gICAgY29uc3QgcnVsZSA9IG5ldyBSdWxlKHNjb3BlLCAnTnBtSnMvU2NoZWR1bGUnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogYCR7c2NvcGUubm9kZS5wYXRofS9OcG1Kcy9TY2hlZHVsZWAsXG4gICAgICBzY2hlZHVsZTogU2NoZWR1bGUucmF0ZShGT0xMT1dFUl9SVU5fUkFURSksXG4gICAgICB0YXJnZXRzOiBbbmV3IExhbWJkYUZ1bmN0aW9uKGZvbGxvd2VyKV0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyQWxhcm1zKHNjb3BlLCBmb2xsb3dlciwgc3RhZ2VyLCBtb25pdG9yaW5nLCBydWxlKTtcblxuICAgIHN0YWdlci5kZWFkTGV0dGVyUXVldWUgJiZcbiAgICAgIG92ZXJ2aWV3RGFzaGJvYXJkLmFkZERMUU1ldHJpY1RvRGFzaGJvYXJkKFxuICAgICAgICAnTlBNIEpTIFN0YWdlciBETFEnLFxuICAgICAgICBzdGFnZXIuZGVhZExldHRlclF1ZXVlXG4gICAgICApO1xuICAgIGZvbGxvd2VyLmRlYWRMZXR0ZXJRdWV1ZSAmJlxuICAgICAgb3ZlcnZpZXdEYXNoYm9hcmQuYWRkRExRTWV0cmljVG9EYXNoYm9hcmQoXG4gICAgICAgICdOUE0gSlMgRm9sbG93ZXIgRExRJyxcbiAgICAgICAgZm9sbG93ZXIuZGVhZExldHRlclF1ZXVlXG4gICAgICApO1xuICAgIG92ZXJ2aWV3RGFzaGJvYXJkLmFkZENvbmN1cnJlbnRFeGVjdXRpb25NZXRyaWNUb0Rhc2hib2FyZChcbiAgICAgIGZvbGxvd2VyLFxuICAgICAgJ05wbUpzTGFtYmRhJ1xuICAgICk7XG4gICAgb3ZlcnZpZXdEYXNoYm9hcmQuYWRkQ29uY3VycmVudEV4ZWN1dGlvbk1ldHJpY1RvRGFzaGJvYXJkKFxuICAgICAgc3RhZ2VyLFxuICAgICAgJ05wbUpzLVN0YWdlQW5kTm90aWZ5TGFtYmRhJ1xuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogZm9sbG93ZXIubm9kZS5wYXRoLFxuICAgICAgbGlua3M6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdOcG1KcyBGb2xsb3dlcicsXG4gICAgICAgICAgdXJsOiBsYW1iZGFGdW5jdGlvblVybChmb2xsb3dlciksXG4gICAgICAgICAgcHJpbWFyeTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgeyBuYW1lOiAnTWFya2VyIE9iamVjdCcsIHVybDogczNPYmplY3RVcmwoYnVja2V0LCBNQVJLRVJfRklMRV9OQU1FKSB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ0tub3duIFZlcnNpb25zJyxcbiAgICAgICAgICB1cmw6IHMzT2JqZWN0VXJsKGJ1Y2tldCwgS05PV05fVkVSU0lPTlNfRklMRV9OQU1FKSxcbiAgICAgICAgfSxcbiAgICAgICAgeyBuYW1lOiAnU3RhZ2VyJywgdXJsOiBsYW1iZGFGdW5jdGlvblVybChzdGFnZXIpIH0sXG4gICAgICAgIHsgbmFtZTogJ1N0YWdlciBETFEnLCB1cmw6IHNxc1F1ZXVlVXJsKHN0YWdlci5kZWFkTGV0dGVyUXVldWUhKSB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ1BpcGVsaW5lIFRyYWNlIChMb2cgQW5hbHl0aWNzKScsXG4gICAgICAgICAgdXJsOiBsb2dBbmFseXRpY3NVcmwoXG4gICAgICAgICAgICBbZm9sbG93ZXIsIHN0YWdlcl0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICdmaWVsZHMgQHRpbWVzdGFtcCwgQGxvZywgQG1lc3NhZ2UnLFxuICAgICAgICAgICAgICBgfCBmaWx0ZXIgQG1lc3NhZ2UgbGlrZSAvJHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmNhbmFyeVBhY2thZ2UgPz8gJ2NvbnN0cnVjdC1odWItcHJvYmUnXG4gICAgICAgICAgICAgIH0vYCxcbiAgICAgICAgICAgICAgJyMgZmlsdGVyIEBtZXNzYWdlIGxpa2UgLzx2ZXJzaW9uPi8gPC0gbmFycm93IGRvd24gdG8gYSBzdHVjayB2ZXJzaW9uJyxcbiAgICAgICAgICAgICAgJ3wgc29ydCBAdGltZXN0YW1wIGRlc2MnLFxuICAgICAgICAgICAgICAnfCBsaW1pdCAxMDAnLFxuICAgICAgICAgICAgXS5qb2luKCdcXG4nKVxuICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgZGFzaGJvYXJkV2lkZ2V0czogW1xuICAgICAgICBbXG4gICAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgICAgIHRpdGxlOiAnRm9sbG93ZXIgSGVhbHRoJyxcbiAgICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhmb2xsb3dlci5tZXRyaWNJbnZvY2F0aW9ucyh7IGxhYmVsOiAnSW52b2NhdGlvbnMnIH0pKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhmb2xsb3dlci5tZXRyaWNFcnJvcnMoeyBsYWJlbDogJ0Vycm9ycycgfSkpLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBbdGhpcy5tZXRyaWNSZW1haW5pbmdUaW1lKHsgbGFiZWw6ICdSZW1haW5pbmcgVGltZScgfSldLFxuICAgICAgICAgICAgcmlnaHRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdTdGFnZXIgSGVhbHRoJyxcbiAgICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhzdGFnZXIubWV0cmljSW52b2NhdGlvbnMoeyBsYWJlbDogJ0ludm9jYXRpb25zJyB9KSksXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoc3RhZ2VyLm1ldHJpY0Vycm9ycyh7IGxhYmVsOiAnRXJyb3JzJyB9KSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgICAgcmlnaHQ6IFtzdGFnZXIubWV0cmljRHVyYXRpb24oeyBsYWJlbDogJ0R1cmF0aW9uJyB9KV0sXG4gICAgICAgICAgICByaWdodFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgICBbXG4gICAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgICAgIHRpdGxlOiAnQ291Y2hEQiBGb2xsb3dlcicsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWModGhpcy5tZXRyaWNDaGFuZ2VDb3VudCh7IGxhYmVsOiAnQ2hhbmdlIENvdW50JyB9KSwgMCksXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgdGhpcy5tZXRyaWNVbnByb2Nlc3NhYmxlRW50aXR5KHsgbGFiZWw6ICdVbnByb2Nlc3NhYmxlJyB9KSxcbiAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgICAgcmlnaHQ6IFtcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICB0aGlzLm1ldHJpY05wbUpzQ2hhbmdlQWdlKHsgbGFiZWw6ICdMYWcgdG8gbnBtanMuY29tJyB9KSxcbiAgICAgICAgICAgICAgICAnUkVQRUFUJ1xuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBmaWxsTWV0cmljKFxuICAgICAgICAgICAgICAgIHRoaXMubWV0cmljUGFja2FnZVZlcnNpb25BZ2UoeyBsYWJlbDogJ1BhY2thZ2UgVmVyc2lvbiBBZ2UnIH0pLFxuICAgICAgICAgICAgICAgICdSRVBFQVQnXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmlnaHRZQXhpczogeyBsYWJlbDogJ01pbGxpc2Vjb25kcycsIG1pbjogMCwgc2hvd1VuaXRzOiBmYWxzZSB9LFxuICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ0NvdWNoREIgQ2hhbmdlcycsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgdGhpcy5tZXRyaWNMYXN0U2VxKHsgbGFiZWw6ICdMYXN0IFNlcXVlbmNlIE51bWJlcicgfSksXG4gICAgICAgICAgICAgICAgJ1JFUEVBVCdcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICAgIFtcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdTdGFnZXIgRGVhZC1MZXR0ZXIgUXVldWUnLFxuICAgICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgICBmaWxsTWV0cmljKFxuICAgICAgICAgICAgICAgIHN0YWdlci5kZWFkTGV0dGVyUXVldWUhLm1ldHJpY0FwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlc1Zpc2libGUoXG4gICAgICAgICAgICAgICAgICB7IGxhYmVsOiAnVmlzaWJsZSBNZXNzYWdlcycgfVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBmaWxsTWV0cmljKFxuICAgICAgICAgICAgICAgIHN0YWdlci5kZWFkTGV0dGVyUXVldWUhLm1ldHJpY0FwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlc05vdFZpc2libGUoXG4gICAgICAgICAgICAgICAgICB7IGxhYmVsOiAnSW52aXNpYmxlIE1lc3NhZ2VzJyB9XG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgICAgcmlnaHQ6IFtcbiAgICAgICAgICAgICAgc3RhZ2VyLmRlYWRMZXR0ZXJRdWV1ZSEubWV0cmljQXBwcm94aW1hdGVBZ2VPZk9sZGVzdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnT2xkZXN0IE1lc3NhZ2UnLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICByaWdodFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIC4uLih0aGlzLnByb3BzLmVuYWJsZUNhbmFyeSA/PyB0cnVlXG4gICAgICAgICAgICA/IHRoaXMucmVnaXN0ZXJDYW5hcnkoXG4gICAgICAgICAgICAgICAgZm9sbG93ZXIsXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5jYW5hcnlQYWNrYWdlID8/ICdjb25zdHJ1Y3QtaHViLXByb2JlJyxcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmNhbmFyeVNsYSA/PyBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuY2FuYXJ5TWF4U3RhbGUgPz8gRHVyYXRpb24uZGF5cygxKSxcbiAgICAgICAgICAgICAgICBidWNrZXQsXG4gICAgICAgICAgICAgICAgYmFzZVVybCxcbiAgICAgICAgICAgICAgICBtb25pdG9yaW5nXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogW10pLFxuICAgICAgICBdLFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBhdmVyYWdlIHRpbWUgaXQgdG9vayB0byBwcm9jZXNzIGEgY2hhbmdlcyBiYXRjaC5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNCYXRjaFByb2Nlc3NpbmdUaW1lKG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5BVkVSQUdFLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIG1ldHJpY05hbWU6IE1ldHJpY05hbWUuQkFUQ0hfUFJPQ0VTU0lOR19USU1FLFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdG90YWwgY291bnQgb2YgY2hhbmdlcyB0aGF0IHdlcmUgcHJvY2Vzc2VkLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY0NoYW5nZUNvdW50KG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5TVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5DSEFOR0VfQ09VTlQsXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBsYXN0IHNlcXVlbmNlIG51bWJlciB0aGF0IHdhcyBwcm9jZXNzZWQuIFRoaXMgbWV0cmljIGNhbiBiZSB1c2VkIHRvXG4gICAqIGRpc2NvdmVyIHdoZW4gYSBzZXF1ZW5jZSByZXNldCBoYXMgaGFwcGVuZWQgaW4gdGhlIENvdWNoREIgaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljTGFzdFNlcShvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUFYSU1VTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLkxBU1RfU0VRLFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBtZXRyaWNOcG1Kc0NoYW5nZUFnZShvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUlOSU1VTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLk5QTUpTX0NIQU5HRV9BR0UsXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBhZ2Ugb2YgdGhlIG9sZGVzdCBwYWNrYWdlIHZlcnNpb24gdGhhdCB3YXMgcHJvY2Vzc2VkLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY1BhY2thZ2VWZXJzaW9uQWdlKG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5NQVhJTVVNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIG1ldHJpY05hbWU6IE1ldHJpY05hbWUuUEFDS0FHRV9WRVJTSU9OX0FHRSxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRvdGFsIGNvdW50IG9mIHBhY2thZ2UgdmVyc2lvbnMgdGhhdCB3ZXJlIGluc3BlY3RlZC5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNQYWNrYWdlVmVyc2lvbkNvdW50KG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5TVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5QQUNLQUdFX1ZFUlNJT05fQ09VTlQsXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0b3RhbCBjb3VudCBvZiBwYWNrYWdlIHZlcnNpb25zIHRoYXQgd2VyZSBkZWVtZWQgcmVsZXZhbnQuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljUmVsZXZhbnRQYWNrYWdlVmVyc2lvbnMob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLlNVTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLlJFTEVWQU5UX1BBQ0tBR0VfVkVSU0lPTlMsXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBhbW91bnQgb2YgdGltZSB0aGF0IHdhcyByZW1haW5pbmcgd2hlbiB0aGUgbGFtYmRhIHJldHVybmVkIGluIG9yZGVyIHRvXG4gICAqIGF2b2lkIGhpdHRpbmcgYSB0aW1lb3V0LlxuICAgKi9cbiAgcHVibGljIG1ldHJpY1JlbWFpbmluZ1RpbWUob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLk1JTklNVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5SRU1BSU5JTkdfVElNRSxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGFtb3VudCBvZiBjaGFuZ2VzIHRoYXQgd2VyZSBub3QgcHJvY2Vzc2VkIGR1ZSB0byBoYXZpbmcgYW4gaW52YWxpZFxuICAgKiBmb3JtYXQuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljVW5wcm9jZXNzYWJsZUVudGl0eShvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIG1ldHJpY05hbWU6IE1ldHJpY05hbWUuVU5QUk9DRVNTQUJMRV9FTlRJVFksXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlckFsYXJtcyhcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGZvbGxvd2VyOiBOcG1Kc0ZvbGxvd2VyLFxuICAgIHN0YWdlcjogU3RhZ2VBbmROb3RpZnksXG4gICAgbW9uaXRvcmluZzogSU1vbml0b3JpbmcsXG4gICAgc2NoZWR1bGU6IFJ1bGVcbiAgKSB7XG4gICAgY29uc3QgZmFpbHVyZUFsYXJtID0gZm9sbG93ZXJcbiAgICAgIC5tZXRyaWNFcnJvcnMoKVxuICAgICAgLmNyZWF0ZUFsYXJtKHNjb3BlLCAnTnBtSnMvRm9sbG93ZXIvRmFpbHVyZXMnLCB7XG4gICAgICAgIGFsYXJtTmFtZTogYCR7c2NvcGUubm9kZS5wYXRofS9OcG1Kcy9Gb2xsb3dlci9GYWlsdXJlc2AsXG4gICAgICAgIGFsYXJtRGVzY3JpcHRpb246IFtcbiAgICAgICAgICAnVGhlIE5wbUpzIGZvbGxvd2VyIGZ1bmN0aW9uIGZhaWxlZCEnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIGBSdW5Cb29rOiAke1JVTkJPT0tfVVJMfWAsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgYERpcmVjdCBsaW5rIHRvIExhbWJkYSBmdW5jdGlvbjogJHtsYW1iZGFGdW5jdGlvblVybChmb2xsb3dlcil9YCxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOlxuICAgICAgICAgIENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogMyxcbiAgICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLk1JU1NJTkcsXG4gICAgICB9KTtcbiAgICBtb25pdG9yaW5nLmFkZExvd1NldmVyaXR5QWxhcm0oJ05wbUpzL0ZvbGxvd2VyIEZhaWx1cmVzJywgZmFpbHVyZUFsYXJtKTtcblxuICAgIGNvbnN0IG5vdFJ1bm5pbmdBbGFybSA9IGZvbGxvd2VyXG4gICAgICAubWV0cmljSW52b2NhdGlvbnMoeyBwZXJpb2Q6IEZPTExPV0VSX1JVTl9SQVRFIH0pXG4gICAgICAuY3JlYXRlQWxhcm0oc2NvcGUsICdOcG1Kcy9Gb2xsb3dlci9Ob3RSdW5uaW5nJywge1xuICAgICAgICBhbGFybU5hbWU6IGAke3Njb3BlLm5vZGUucGF0aH0vTnBtSnMvRm9sbG93ZXIvTm90UnVubmluZ2AsXG4gICAgICAgIGFsYXJtRGVzY3JpcHRpb246IFtcbiAgICAgICAgICAnVGhlIE5wbUpzIGZvbGxvd2VyIGZ1bmN0aW9uIGlzIG5vdCBydW5uaW5nIScsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgYFJ1bkJvb2s6ICR7UlVOQk9PS19VUkx9YCxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICBgRGlyZWN0IGxpbmsgdG8gTGFtYmRhIGZ1bmN0aW9uOiAke2xhbWJkYUZ1bmN0aW9uVXJsKGZvbGxvd2VyKX1gLFxuICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5MRVNTX1RIQU5fVEhSRVNIT0xELFxuICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogMixcbiAgICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLkJSRUFDSElORyxcbiAgICAgIH0pO1xuICAgIG1vbml0b3JpbmcuYWRkSGlnaFNldmVyaXR5QWxhcm0oXG4gICAgICAnTnBtSnMvRm9sbG93ZXIgTm90IFJ1bm5pbmcnLFxuICAgICAgbm90UnVubmluZ0FsYXJtXG4gICAgKTtcblxuICAgIC8vIFRoZSBwZXJpb2QgZm9yIHRoaXMgYWxhcm0gbmVlZHMgdG8gbWF0Y2ggdGhlIHNjaGVkdWxpbmcgaW50ZXJ2YWwgb2YgdGhlXG4gICAgLy8gZm9sbG93ZXIsIG90aGVyd2lzZSB0aGUgbWV0cmljIHdpbGwgYmUgdG9vIHNwYXJzZSB0byBwcm9wZXJseSBkZXRlY3RcbiAgICAvLyBwcm9ibGVtcy5cbiAgICBjb25zdCBub0NoYW5nZUFsYXJtID0gdGhpcy5tZXRyaWNDaGFuZ2VDb3VudCh7XG4gICAgICBwZXJpb2Q6IEZPTExPV0VSX1JVTl9SQVRFLFxuICAgIH0pLmNyZWF0ZUFsYXJtKHNjb3BlLCAnTnBtSnMvRm9sbG93ZXIvTm9DaGFuZ2VzJywge1xuICAgICAgYWxhcm1OYW1lOiBgJHtzY29wZS5ub2RlLnBhdGh9L05wbUpzL0ZvbGxvd2VyL05vQ2hhbmdlc2AsXG4gICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgICdUaGUgTnBtSnMgZm9sbG93ZXIgZnVuY3Rpb24gaXMgbm90IGRpc2NvdmVyaW5nIGFueSBjaGFuZ2VzIGZyb20gQ291Y2hEQiEnLFxuICAgICAgICAnJyxcbiAgICAgICAgYFJ1bkJvb2s6ICR7UlVOQk9PS19VUkx9YCxcbiAgICAgICAgJycsXG4gICAgICAgIGBEaXJlY3QgbGluayB0byBMYW1iZGEgZnVuY3Rpb246ICR7bGFtYmRhRnVuY3Rpb25VcmwoZm9sbG93ZXIpfWAsXG4gICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuTEVTU19USEFOX1RIUkVTSE9MRCxcbiAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiBob3dPZnRlbihGT0xMT1dFUl9SVU5fUkFURSwgTk9fQ0hBTkdFU19BTEFSTV9EVVJBVElPTiksXG4gICAgICB0aHJlc2hvbGQ6IDEsXG4gICAgICAvLyBJZiB0aGUgbWV0cmljIGlzIG5vdCBlbWl0dGVkLCBpdCBjYW4gYmUgYXNzdW1lZCB0byBiZSB6ZXJvLlxuICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5CUkVBQ0hJTkcsXG4gICAgfSk7XG4gICAgbW9uaXRvcmluZy5hZGRMb3dTZXZlcml0eUFsYXJtKFxuICAgICAgJ05wIG5wbWpzLmNvbSBjaGFuZ2VzIGRpc2NvdmVyZWQnLFxuICAgICAgbm9DaGFuZ2VBbGFybVxuICAgICk7XG5cbiAgICBjb25zdCBkbHFOb3RFbXB0eUFsYXJtID0gc3RhZ2VyXG4gICAgICAuZGVhZExldHRlclF1ZXVlIS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNWaXNpYmxlKHtcbiAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgfSlcbiAgICAgIC5jcmVhdGVBbGFybShzY29wZSwgYCR7c2NvcGUubm9kZS5wYXRofS9OcG1Kcy9TdGFnZXIvRExRTm90RW1wdHlgLCB7XG4gICAgICAgIGFsYXJtTmFtZTogYCR7c2NvcGUubm9kZS5wYXRofS9OcG1Kcy9TdGFnZXIvRExRTm90RW1wdHlgLFxuICAgICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgJ1RoZSBOcG1KUyBwYWNrYWdlIHN0YWdlciBpcyBmYWlsaW5nIC0gaXRzIGRlYWQgbGV0dGVyIHF1ZXVlIGlzIG5vdCBlbXB0eScsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgYExpbmsgdG8gdGhlIGxhbWJkYSBmdW5jdGlvbjogJHtsYW1iZGFGdW5jdGlvblVybChzdGFnZXIpfWAsXG4gICAgICAgICAgYExpbmsgdG8gdGhlIGRlYWQgbGV0dGVyIHF1ZXVlOiAke3Nxc1F1ZXVlVXJsKFxuICAgICAgICAgICAgc3RhZ2VyLmRlYWRMZXR0ZXJRdWV1ZSFcbiAgICAgICAgICApfWAsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgYFJ1bmJvb2s6ICR7UlVOQk9PS19VUkx9YCxcbiAgICAgICAgXS5qb2luKCcvbicpLFxuICAgICAgICBjb21wYXJpc29uT3BlcmF0b3I6XG4gICAgICAgICAgQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAyLFxuICAgICAgICB0aHJlc2hvbGQ6IDEsXG4gICAgICAgIHRyZWF0TWlzc2luZ0RhdGE6IFRyZWF0TWlzc2luZ0RhdGEuTk9UX0JSRUFDSElORyxcbiAgICAgIH0pO1xuICAgIG1vbml0b3JpbmcuYWRkTG93U2V2ZXJpdHlBbGFybShcbiAgICAgICdOcG1Kcy9TdGFnZXIgRExRIE5vdCBFbXB0eScsXG4gICAgICBkbHFOb3RFbXB0eUFsYXJtXG4gICAgKTtcblxuICAgIC8vIEZpbmFsbHkgLSB0aGUgXCJub3QgcnVubmluZ1wiIGFsYXJtIGRlcGVuZHMgb24gdGhlIHNjaGVkdWxlIChpdCB3b24ndCBydW4gdW50aWwgdGhlIHNjaGVkdWxlXG4gICAgLy8gZXhpc3RzISksIGFuZCB0aGUgc2NoZWR1bGUgZGVwZW5kcyBvbiB0aGUgZmFpbHVyZSBhbGFybSBleGlzdGluZyAod2UgZG9uJ3Qgd2FudCBpdCB0byBydW5cbiAgICAvLyBiZWZvcmUgd2UgY2FuIGtub3cgaXQgaXMgZmFpbGluZykuIFRoaXMgbWVhbnMgdGhlIHJldHVybmVkIGBJRGVwZW5kYWJsZWAgZWZmZWN0aXZlbHkgZW5zdXJlc1xuICAgIC8vIGFsbCBhbGFybXMgaGF2ZSBiZWVuIHByb3Zpc2lvbmVkIGFscmVhZHkhIElzbid0IGl0IG5pY2UhXG4gICAgbm90UnVubmluZ0FsYXJtLm5vZGUuYWRkRGVwZW5kZW5jeShzY2hlZHVsZSk7XG4gICAgc2NoZWR1bGUubm9kZS5hZGREZXBlbmRlbmN5KGZhaWx1cmVBbGFybSk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyQ2FuYXJ5KFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgcGFja2FnZU5hbWU6IHN0cmluZyxcbiAgICAvLyBBIGR1cmF0aW9uIHNwZWNpZnlpbmcgaG93IGxvbmcgd2UgZXhwZWN0IHRoZSBwcm9iZSBwYWNrYWdlIHRvIGFwcGVhciBvblxuICAgIC8vIENvbnN0cnVjdCBIdWIgYWZ0ZXIgaXQgZ2V0cyBwdWJsaXNoZWQgdG8gbnBtLCBhc3N1bWluZyB0aGUgbnBtIHJlcGxpY2FcbiAgICAvLyBpcyB1cCB0byBkYXRlIGV0Yy5cbiAgICB2aXNpYmlsaXR5U2xhOiBEdXJhdGlvbixcbiAgICAvLyBBIGR1cmF0aW9uIHNwZWNpZnlpbmcgaG93IGxvbmcgdGhlIGNhbmFyeSBwYWNrYWdlIGNhbiBnbyB3aXRob3V0XG4gICAgLy8gcHVibGlzaGluZyBhIG5ldyB2ZXJzaW9uIGJlZm9yZSB3ZSBhbGFybS5cbiAgICBtYXhTdGFsZTogRHVyYXRpb24sXG4gICAgYnVja2V0OiBJQnVja2V0LFxuICAgIGNvbnN0cnVjdEh1YkJhc2VVcmw6IHN0cmluZyxcbiAgICBtb25pdG9yaW5nOiBJTW9uaXRvcmluZ1xuICApOiBJV2lkZ2V0W10ge1xuICAgIGNvbnN0IGNhbmFyeSA9IG5ldyBOcG1Kc1BhY2thZ2VDYW5hcnkoc2NvcGUsICdDYW5hcnknLCB7XG4gICAgICBidWNrZXQsXG4gICAgICBjb25zdHJ1Y3RIdWJCYXNlVXJsLFxuICAgICAgcGFja2FnZU5hbWUsXG4gICAgfSk7XG5cbiAgICBjb25zdCBwZXJpb2QgPSBEdXJhdGlvbi5taW51dGVzKDEwKTsgLy8gd2UgcnVuIGNhbmFyeSBvbmNlIHBlciBob3VyLCBidXQgbm90IGd1YXJhbnRlZWQgZXhhY3QgdGltZXNcbiAgICBjb25zdCBhbGFybSA9IG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICBleHByZXNzaW9uOiAnTUFYKFttRHdlbGwsIG1UVENdKScsXG4gICAgICBwZXJpb2QsXG4gICAgICB1c2luZ01ldHJpY3M6IHtcbiAgICAgICAgbUR3ZWxsOiBjYW5hcnkubWV0cmljRHdlbGxUaW1lKCksXG4gICAgICAgIG1UVEM6IGNhbmFyeS5tZXRyaWNUaW1lVG9DYXRhbG9nKCksXG4gICAgICB9LFxuICAgIH0pLmNyZWF0ZUFsYXJtKGNhbmFyeSwgJ0FsYXJtJywge1xuICAgICAgYWxhcm1OYW1lOiBgJHtjYW5hcnkubm9kZS5wYXRofS9TTEEtQnJlYWNoZWRgLFxuICAgICAgYWxhcm1EZXNjcmlwdGlvbjogW1xuICAgICAgICBgTmV3IHZlcnNpb25zIG9mICR7cGFja2FnZU5hbWV9IGhhdmUgYmVlbiBwdWJsaXNoZWQgb3ZlciAke3Zpc2liaWxpdHlTbGEudG9IdW1hblN0cmluZygpfSBhZ28gYW5kIGFyZSBzdGlsbCBub3QgdmlzaWJsZSBpbiBjb25zdHJ1Y3QgaHViYCxcbiAgICAgICAgYFJ1bmJvb2s6ICR7UlVOQk9PS19VUkx9YCxcbiAgICAgIF0uam9pbignXFxuJyksXG4gICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fVEhSRVNIT0xELFxuICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDEsXG4gICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLk5PVF9CUkVBQ0hJTkcsXG4gICAgICB0aHJlc2hvbGQ6IHZpc2liaWxpdHlTbGEudG9TZWNvbmRzKCksXG4gICAgfSk7XG4gICAgLy8gVGhpcyBpcyBkZWVtZWQgbG93IHNldmVyaXR5LCBiZWNhdXNlIHRoZSBucG0gcmVnaXN0cnkgcmVwbGljYSAocmVwbGljYXRlLm5wbWpzLmNvbSkgY2FuXG4gICAgLy8gb2NjYXNpb25hbGx5IGxhZyBzZXZlcmFsIGhvdXJzIGJlaGluZCB0aGUgcHJpbWFyeSAocmVnaXN0cnkubnBtanMuY29tKSwgYW5kIHdlIGNhbm5vdCBlYXNpbHlcbiAgICAvLyB0ZWxsIGFib3V0IHRoYXQuIFNvbWVvbmUgc2hvdWxkIGhhdmUgYSBsb29rLCBidXQgaW4gdmlydHVhbGx5IGFsbCBjYXNlcyB3ZSBoYXZlIHNlZW4gc28gZmFyLFxuICAgIC8vIHRoZXJlIGlzIG5vdGhpbmcgdGhhdCBjYW4gYmUgZG9uZSBmcm9tIG91ciBlbmQsIGJlc2lkZXMgd2FpdGluZyBmb3IgdGhlIHJlcGxpY2EgdG8gYmUgYWxsXG4gICAgLy8gY2F1Z2h0IHVwLlxuICAgIGFkZEFsYXJtKFxuICAgICAgJ05ldyB2ZXJzaW9uIHZpc2liaWxpdHkgU0xBIGJyZWFjaGVkJyxcbiAgICAgIGFsYXJtLFxuICAgICAgQWxhcm1TZXZlcml0eS5MT1csXG4gICAgICBtb25pdG9yaW5nXG4gICAgKTtcblxuICAgIGNvbnN0IHN0YWxlQWxhcm0gPSBjYW5hcnlcbiAgICAgIC5tZXRyaWNUaW1lU2luY2VMYXN0UHVibGlzaCh7IHBlcmlvZCB9KVxuICAgICAgLmNyZWF0ZUFsYXJtKGNhbmFyeSwgJ1N0YWxlQ2FuYXJ5UGFja2FnZScsIHtcbiAgICAgICAgYWxhcm1OYW1lOiBgJHtjYW5hcnkubm9kZS5wYXRofS9TdGFsZUNhbmFyeVBhY2thZ2VgLFxuICAgICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgYFRoZSBjYW5hcnkgcGFja2FnZSAke3BhY2thZ2VOYW1lfSBoYXMgbm90IHB1Ymxpc2hlZCBhIG5ldyB2ZXJzaW9uIGluIG92ZXIgJHttYXhTdGFsZS50b0h1bWFuU3RyaW5nKCl9LmAsXG4gICAgICAgICAgJ1RoaXMgbWVhbnMgdGhlIFNMQSBhbGFybSBpcyBibGluZCDigJQgbm8gbmV3IHZlcnNpb25zIGFyZSBiZWluZyB0cmFja2VkLCBzbyBTTEEgYnJlYWNoZXMgY2Fubm90IGJlIGRldGVjdGVkLicsXG4gICAgICAgICAgJ01ldHJpYzogQ29uc3RydWN0SHViL1BhY2thZ2VDYW5hcnkgLyBUaW1lU2luY2VMYXN0UHVibGlzaCcsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgYFJ1bmJvb2s6ICR7UlVOQk9PS19VUkx9YCxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX1RIUkVTSE9MRCxcbiAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDEsXG4gICAgICAgIHRyZWF0TWlzc2luZ0RhdGE6IFRyZWF0TWlzc2luZ0RhdGEuTUlTU0lORyxcbiAgICAgICAgdGhyZXNob2xkOiBtYXhTdGFsZS50b1NlY29uZHMoKSxcbiAgICAgIH0pO1xuICAgIG1vbml0b3JpbmcuYWRkTWVkaXVtU2V2ZXJpdHlBbGFybShcbiAgICAgICdDYW5hcnkgcGFja2FnZSBoYXMgc3RvcHBlZCBwdWJsaXNoaW5nIG5ldyB2ZXJzaW9ucycsXG4gICAgICBzdGFsZUFsYXJtXG4gICAgKTtcblxuICAgIGNvbnN0IG5vdFJ1bm5pbmdPckZhaWxpbmdBbGFybSA9IG5ldyBDb21wb3NpdGVBbGFybShcbiAgICAgIGNhbmFyeSxcbiAgICAgICdOb3RSdW5uaW5nT3JGYWlsaW5nJyxcbiAgICAgIHtcbiAgICAgICAgYWxhcm1SdWxlOiBBbGFybVJ1bGUuYW55T2YoXG4gICAgICAgICAgY2FuYXJ5XG4gICAgICAgICAgICAubWV0cmljRXJyb3JzKHsgcGVyaW9kLCBzdGF0aXN0aWM6IFN0YXRpc3RpYy5TVU0gfSlcbiAgICAgICAgICAgIC5jcmVhdGVBbGFybShjYW5hcnksICdGYWlsaW5nJywge1xuICAgICAgICAgICAgICBhbGFybU5hbWU6IGAke2NhbmFyeS5ub2RlLnBhdGh9L0ZhaWxpbmdgLFxuICAgICAgICAgICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fVEhSRVNIT0xELFxuICAgICAgICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogMixcbiAgICAgICAgICAgICAgdGhyZXNob2xkOiAwLFxuICAgICAgICAgICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLkJSRUFDSElORyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIGNhbmFyeVxuICAgICAgICAgICAgLm1ldHJpY0ludm9jYXRpb25zKHsgcGVyaW9kLCBzdGF0aXN0aWM6IFN0YXRpc3RpYy5TVU0gfSlcbiAgICAgICAgICAgIC5jcmVhdGVBbGFybShjYW5hcnksICdOb3RSdW5uaW5nJywge1xuICAgICAgICAgICAgICBhbGFybU5hbWU6IGAke2NhbmFyeS5ub2RlLnBhdGh9L05vdFJ1bm5pbmdgLFxuICAgICAgICAgICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5MRVNTX1RIQU5fVEhSRVNIT0xELFxuICAgICAgICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogMixcbiAgICAgICAgICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgICAgICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLkJSRUFDSElORyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICksXG4gICAgICAgIGFsYXJtRGVzY3JpcHRpb246IFtcbiAgICAgICAgICAnVGhlIE5wbUpzIHBhY2thZ2UgY2FuYXJ5IGlzIG5vdCBydW5uaW5nIG9yIGlzIGZhaWxpbmcuIFRoaXMgcHJldmVudHMgYWxhcm1pbmcgd2hlbiB0aGlzIGluc3RhbmNlIG9mJyxcbiAgICAgICAgICAnQ29uc3RydWN0SHViIGZhbGxzIG91dCBvZiBTTEEgZm9yIG5ldyBwYWNrYWdlIGluZ2VzdGlvbiEnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIGBSdW5ib29rOiAke1JVTkJPT0tfVVJMfWAsXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgIGNvbXBvc2l0ZUFsYXJtTmFtZTogYCR7Y2FuYXJ5Lm5vZGUucGF0aH0vTm90UnVubmluZ09yRmFpbGluZ2AsXG4gICAgICB9XG4gICAgKTtcbiAgICBtb25pdG9yaW5nLmFkZEhpZ2hTZXZlcml0eUFsYXJtKFxuICAgICAgJ05wbUpzIEZvbGxvd2VyIENhbmFyeSBpcyBub3QgcnVubmluZyBvciBmYWlscycsXG4gICAgICBub3RSdW5uaW5nT3JGYWlsaW5nQWxhcm1cbiAgICApO1xuXG4gICAgLy8gVXNpbmcgTUlOIHN0YXRpc3RpYywgc28gaWYgYSBydW4gaXMgc3VjY2Vzc2Z1bCAoYW5kIGhlbmNlIGVtaXRzIGEgMCksIHRoaXMgYWxhcm0gd2lsbCBub3QgdHJpZ2dlci5cbiAgICBjb25zdCBnYXRld2F5RXJyb3JzQWxhcm0gPSBjYW5hcnlcbiAgICAgIC5tZXRyaWNIdHRwR2F0ZXdheUVycm9ycyh7IHBlcmlvZCwgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUlOSU1VTSB9KVxuICAgICAgLmNyZWF0ZUFsYXJtKGNhbmFyeSwgJ0dhdGV3YXlFcnJvcnMnLCB7XG4gICAgICAgIGFsYXJtRGVzY3JpcHRpb246IFtcbiAgICAgICAgICAnVGhlIE5wbUpzIHBhY2thZ2UgY2FuYXJ5IGhhcyBiZWVuIGVuY291bnRlcmluZyBjb25zaXN0ZW50IEhUVFAgZ2F0ZXdheSBlcnJvcnMgd2hlbiBjb250YWN0aW5nIG5wbWpzIHNlcnZlcnMnLFxuICAgICAgICAgICdmb3IgYW4gaG91ciBvciBtb3JlLiBUaGlzIG1lYW5zIHRoZSBjYW5hcnkgaGFzIGJlZW4gdW5hYmxlIHRvIGV2YWx1YXRlIFNMQSBjb21wbGlhbmNlIGZvciB0aGF0IG11Y2ggdGltZS4nLFxuICAgICAgICAgICdJdCBpcyBwcm9iYWJsZSB0aGF0IG5vdGhpbmcgY2FuIGJlIGRvbmUgZXhjZXB0IGZvciB3YWl0aW5nIGZvciBucG0gc2VydmVycyB0byBjb21lIGJhY2sgb25saW5lLCBidXQgdGhlJyxcbiAgICAgICAgICAnc2l0dWF0aW9uIHNob3VsZCBiZSBjaGVja2VkIHRvIG1ha2Ugc3VyZSB0aGVyZSBpcyBub3QgYW5vdGhlciBwcm9ibGVtLicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgYFJ1bmJvb2s6ICR7UlVOQk9PS19VUkx9YCxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgYWxhcm1OYW1lOiBgJHtjYW5hcnkubm9kZS5wYXRofS9HYXRld2F5RXJyb3JzYCxcbiAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX1RIUkVTSE9MRCxcbiAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDYwLFxuICAgICAgICB0aHJlc2hvbGQ6IDAsXG4gICAgICAgIHRyZWF0TWlzc2luZ0RhdGE6IFRyZWF0TWlzc2luZ0RhdGEuQlJFQUNISU5HLFxuICAgICAgfSk7XG4gICAgbW9uaXRvcmluZy5hZGRMb3dTZXZlcml0eUFsYXJtKFxuICAgICAgJ05wbUpzIEZvbGxvd2VyIENhbmFyeSBpcyBleHBlcmllbmNpbmcgSFRUUCBHYXRld2F5IGVycm9ycycsXG4gICAgICBnYXRld2F5RXJyb3JzQWxhcm1cbiAgICApO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgIGhlaWdodDogNixcbiAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICB0aXRsZTogJ1BhY2thZ2UgQ2FuYXJ5JyxcbiAgICAgICAgbGVmdDogW1xuICAgICAgICAgIGNhbmFyeS5tZXRyaWNEd2VsbFRpbWUoeyBsYWJlbDogJ0R3ZWxsIFRpbWUnIH0pLFxuICAgICAgICAgIGNhbmFyeS5tZXRyaWNUaW1lVG9DYXRhbG9nKHsgbGFiZWw6ICdUaW1lIHRvIENhdGFsb2cnIH0pLFxuICAgICAgICBdLFxuICAgICAgICBsZWZ0QW5ub3RhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2xvcjogJyNmZjAwMDAnLFxuICAgICAgICAgICAgbGFiZWw6IGBTTEEgKCR7dmlzaWJpbGl0eVNsYS50b0h1bWFuU3RyaW5nKCl9KWAsXG4gICAgICAgICAgICB2YWx1ZTogdmlzaWJpbGl0eVNsYS50b1NlY29uZHMoKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICB9KSxcbiAgICAgIG5ldyBMb2dRdWVyeVdpZGdldCh7XG4gICAgICAgIGhlaWdodDogNixcbiAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICB0aXRsZTogJ1N0dWNrIFZlcnNpb25zIChzdGlsbCBub3QgdmlzaWJsZSBpbiBDb25zdHJ1Y3RIdWIpJyxcbiAgICAgICAgbG9nR3JvdXBOYW1lczogW2NhbmFyeS5sb2dHcm91cE5hbWVdLFxuICAgICAgICBxdWVyeUxpbmVzOiBbXG4gICAgICAgICAgJ2ZpZWxkcyBAdGltZXN0YW1wLCBAbWVzc2FnZScsXG4gICAgICAgICAgJ2ZpbHRlciBAbWVzc2FnZSBsaWtlIC9cIkR3ZWxsVGltZVwiLycsXG4gICAgICAgICAgJ2ZpbHRlciB0b01pbGxpcyhAdGltZXN0YW1wKSA+IChub3coKSAtIDkwMCkgKiAxMDAwJyxcbiAgICAgICAgICBgcGFyc2UgQG1lc3NhZ2UgJ1wiUGFja2FnZVZlcnNpb25cIjpcIipcIicgYXMgdmVyc2lvbmAsXG4gICAgICAgICAgYHBhcnNlIEBtZXNzYWdlICdcIkR3ZWxsVGltZVwiOiosJyBhcyBkd2VsbFRpbWVTZWNgLFxuICAgICAgICAgICdzdGF0cyBtYXgoZHdlbGxUaW1lU2VjKSBhcyBtYXhEd2VsbFRpbWVTZWMgYnkgdmVyc2lvbicsXG4gICAgICAgICAgJ3NvcnQgbWF4RHdlbGxUaW1lU2VjIGRlc2MnLFxuICAgICAgICBdLFxuICAgICAgfSksXG4gICAgXTtcbiAgfVxufVxuXG4vKipcbiAqIEhvdyBvZnRlbiAncmF0ZScgZ29lcyBpbnRvICdkdXJhdGlvbicgKHJvdW5kZWQgdXApXG4gKi9cbmZ1bmN0aW9uIGhvd09mdGVuKHJhdGU6IER1cmF0aW9uLCBkdXJhdGlvbjogRHVyYXRpb24pIHtcbiAgcmV0dXJuIE1hdGguY2VpbChkdXJhdGlvbi50b1NlY29uZHMoKSAvIHJhdGUudG9TZWNvbmRzKCkpO1xufVxuIl19
|
|
587
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtanMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFja2FnZS1zb3VyY2VzL25wbWpzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2Q0FBdUM7QUFDdkMsK0RBWW9DO0FBQ3BDLHVEQUF3RDtBQUN4RCx1RUFBZ0U7QUFDaEUsdURBQWlEO0FBQ2pELG1GQUFzRTtBQUN0RSwrQ0FBZ0U7QUFDaEUsaURBQTZEO0FBRTdELGdDQUF1QztBQUN2Qyw0Q0FLc0I7QUFDdEIsa0RBQTZDO0FBQzdDLDhDQUF5QztBQUN6QywyQ0FBb0Q7QUFDcEQsNkVBTXlDO0FBQ3pDLDZEQUF3RDtBQUN4RCwrREFBMEQ7QUFPMUQsZ0RBQTZDO0FBQzdDLDJDQUFpRDtBQUNqRCwrRUFBeUU7QUFFekU7Ozs7R0FJRztBQUNILE1BQU0saUJBQWlCLEdBQUcsc0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFOUM7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLHlCQUF5QixHQUFHLHNCQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBOENyRDs7R0FFRztBQUNILE1BQWEsS0FBSztJQUNvQjs7SUFBcEMsWUFBb0MsUUFBb0IsRUFBRTtRQUF0QixVQUFLLEdBQUwsS0FBSyxDQUFpQjtJQUFHLENBQUM7SUFFdkQsSUFBSSxDQUNULEtBQWdCLEVBQ2hCLEVBQ0UsT0FBTyxFQUNQLFFBQVEsRUFDUixTQUFTLEVBQ1QsV0FBVyxFQUNYLFVBQVUsRUFDVixLQUFLLEVBQ0wsVUFBVSxFQUNWLGlCQUFpQixHQUNRO1FBRTNCLFVBQVUsRUFBRSxxQkFBcUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUVsRCxNQUFNLGNBQWMsR0FBRywwQkFBZ0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsTUFBTSxNQUFNLEdBQ1YsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhO1lBQ3hCLGNBQWMsQ0FBQyxTQUFTLENB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WSxDQUFDO2dCQUNwQyxVQUFVLEVBQUU7b0JBQ1YsNkJBQTZCO29CQUM3QixvQ0FBb0M7b0JBQ3BDLG9EQUFvRDtvQkFDcEQsa0RBQWtEO29CQUNsRCxpREFBaUQ7b0JBQ2pELHVEQUF1RDtvQkFDdkQsMkJBQTJCO2lCQUM1QjthQUNGLENBQUM7U0FDSCxDQUFDO0lBQ0osQ0FBQzs7QUE1cEJILHNCQTZwQkM7QUFFRDs7R0FFRztBQUNILFNBQVMsUUFBUSxDQUFDLElBQWMsRUFBRSxRQUFrQjtJQUNsRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBQzVELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7XG4gIEFsYXJtUnVsZSxcbiAgQ29tcGFyaXNvbk9wZXJhdG9yLFxuICBDb21wb3NpdGVBbGFybSxcbiAgR3JhcGhXaWRnZXQsXG4gIElXaWRnZXQsXG4gIExvZ1F1ZXJ5V2lkZ2V0LFxuICBNYXRoRXhwcmVzc2lvbixcbiAgTWV0cmljLFxuICBNZXRyaWNPcHRpb25zLFxuICBTdGF0aXN0aWMsXG4gIFRyZWF0TWlzc2luZ0RhdGEsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCB7IFJ1bGUsIFNjaGVkdWxlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cyc7XG5pbXBvcnQgeyBMYW1iZGFGdW5jdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMtdGFyZ2V0cyc7XG5pbXBvcnQgeyBUcmFjaW5nIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBTcXNFdmVudFNvdXJjZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEtZXZlbnQtc291cmNlcyc7XG5pbXBvcnQgeyBCbG9ja1B1YmxpY0FjY2VzcywgSUJ1Y2tldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBRdWV1ZSwgUXVldWVFbmNyeXB0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNxcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEFsYXJtU2V2ZXJpdHkgfSBmcm9tICcuLi9hcGknO1xuaW1wb3J0IHtcbiAgbGFtYmRhRnVuY3Rpb25VcmwsXG4gIGxvZ0FuYWx5dGljc1VybCxcbiAgczNPYmplY3RVcmwsXG4gIHNxc1F1ZXVlVXJsLFxufSBmcm9tICcuLi9kZWVwLWxpbmsnO1xuaW1wb3J0IHsgZmlsbE1ldHJpYyB9IGZyb20gJy4uL21ldHJpYy11dGlscyc7XG5pbXBvcnQgeyBhZGRBbGFybSB9IGZyb20gJy4uL21vbml0b3JpbmcnO1xuaW1wb3J0IHsgTnBtSnNQYWNrYWdlQ2FuYXJ5IH0gZnJvbSAnLi9ucG1qcy9jYW5hcnknO1xuaW1wb3J0IHtcbiAgS05PV05fVkVSU0lPTlNfRklMRV9OQU1FLFxuICBNQVJLRVJfRklMRV9OQU1FLFxuICBNRVRSSUNTX05BTUVTUEFDRSxcbiAgTWV0cmljTmFtZSxcbiAgUzNLZXlQcmVmaXgsXG59IGZyb20gJy4vbnBtanMvY29uc3RhbnRzLmxhbWJkYS1zaGFyZWQnO1xuaW1wb3J0IHsgTnBtSnNGb2xsb3dlciB9IGZyb20gJy4vbnBtanMvbnBtLWpzLWZvbGxvd2VyJztcbmltcG9ydCB7IFN0YWdlQW5kTm90aWZ5IH0gZnJvbSAnLi9ucG1qcy9zdGFnZS1hbmQtbm90aWZ5JztcbmltcG9ydCB7IElNb25pdG9yaW5nIH0gZnJvbSAnLi4vbW9uaXRvcmluZy9hcGknO1xuaW1wb3J0IHR5cGUge1xuICBJUGFja2FnZVNvdXJjZSxcbiAgUGFja2FnZVNvdXJjZUJpbmRPcHRpb25zLFxuICBQYWNrYWdlU291cmNlQmluZFJlc3VsdCxcbn0gZnJvbSAnLi4vcGFja2FnZS1zb3VyY2UnO1xuaW1wb3J0IHsgUlVOQk9PS19VUkwgfSBmcm9tICcuLi9ydW5ib29rLXVybCc7XG5pbXBvcnQgeyBTM1N0b3JhZ2VGYWN0b3J5IH0gZnJvbSAnLi4vczMvc3RvcmFnZSc7XG5pbXBvcnQgeyBSZVN0YWdlUGFja2FnZVZlcnNpb24gfSBmcm9tICcuL25wbWpzL3JlLXN0YWdlLXBhY2thZ2UtdmVyc2lvbic7XG5cbi8qKlxuICogVGhlIHBlcmlvZGljaXR5IGF0IHdoaWNoIHRoZSBOcG1KcyBmb2xsb3dlciB3aWxsIHJ1bi4gVGhpcyBNVVNUIGJlIGEgdmFsaWRcbiAqIENsb3VkV2F0Y2ggTWV0cmljIGdyYWluLCBhcyB0aGlzIHdpbGwgYWxzbyBiZSB0aGUgcGVyaW9kIG9mIHRoZSBDbG91ZFdhdGNoXG4gKiBhbGFybSB0aGF0IG1vbml0b3JzIHRoZSBoZWFsdGggb2YgdGhlIGZvbGxvd2VyLlxuICovXG5jb25zdCBGT0xMT1dFUl9SVU5fUkFURSA9IER1cmF0aW9uLm1pbnV0ZXMoNSk7XG5cbi8qKlxuICogQWxhcm0gaWYgd2UgaGF2ZW4ndCBzZWVuIGNoYW5nZXMgb3ZlciB0aGlzIHRpbWVcbiAqXG4gKiBUaGUgQ291Y2hEQiBsZWFkZXIgb2NjYXNpb25hbGx5IGp1c3Qgc3RhcnRzIHRvc3Npbmcgb3V0IHRpbWVvdXRzIGFuZCB0aGV5XG4gKiBtYXkgbGFzdCBmb3IgYSBnb29kIHdoaWxlLlxuICpcbiAqIC0gT24gMjAyMi0wOS0yOSBpdCB3YXMgc2xvdyBmb3IgMTIgaG91cnMuXG4gKiAtIE9uIDIwMjItMTAtMDQgaXQgd2FzIHNsb3cgZm9yIDIgaG91cnMuXG4gKlxuICogVGhpcyBpcyBsZWFkaW5nIHRvIGV4dHJlbWUgYWxhcm0gZmF0aWd1ZSwgYW5kIGFsc28gdGhpcyBhbGFybSBpcyBub24tYWN0aW9uYWJsZS5cbiAqIExldCdzIGJlIHZlcnkgdmVyeSBjb25zZXJ2YXRpdmUgaGVyZS5cbiAqL1xuY29uc3QgTk9fQ0hBTkdFU19BTEFSTV9EVVJBVElPTiA9IER1cmF0aW9uLmhvdXJzKDI0KTtcblxuZXhwb3J0IGludGVyZmFjZSBOcG1Kc1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBidWNrZXQgdG8gdXNlIGZvciBzdGFnaW5nIG5wbSBwYWNrYWdlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIG5ldyBidWNrZXQgd2lsbCBiZSBjcmVhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhZ2luZ0J1Y2tldD86IElCdWNrZXQ7XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIHBhY2thZ2UgY2FuYXJ5LCB3aGljaCB3aWxsIHRyYWNrIGF2YWlsYWJpbGl0eSBvZiBhIGNhbmFyeVxuICAgKiBwYWNrYWdlIGluIENvbnN0cnVjdEh1YiwgYW5kIGVtaXQgZGVkaWNhdGVkIG1ldHJpY3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZUNhbmFyeT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwYWNrYWdlIHRoYXQgaXMgbW9uaXRvcmVkIGJ5IHRoZSBwYWNrYWdlIGNhbmFyeSwgaWYgZW5hYmxlZCBieVxuICAgKiBgZW5hYmxlQ2FuYXJ5YC5cbiAgICpcbiAgICogQGRlZmF1bHQgJ2NvbnN0cnVjdC1odWItcHJvYmUnXG4gICAqL1xuICByZWFkb25seSBjYW5hcnlQYWNrYWdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBhbW91bnQgb2YgdGltZSBpdCBpcyBzdXBwb3NlZCB0byB0YWtlIGZvciBwYWNrYWdlcyB0byBiZWNvbWVcbiAgICogdmlzaWJsZSBpbiB0aGlzIENvbnN0cnVjdEh1YiBpbnN0YW5jZS4gSWYgYGVuYWJsZUNhbmFyeWAgaXMgZW5hYmxlZCwgYW5cbiAgICogYWxhcm0gd2lsbCB0cmlnZ2VyIGlmIHRoaXMgU0xBIGlzIGJyZWFjaGVkIGJ5IHRoZSBgY2FuYXJ5UGFja2FnZWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IER1cmF0aW9uLm1pbnV0ZXMoNSlcbiAgICovXG4gIHJlYWRvbmx5IGNhbmFyeVNsYT86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBhbW91bnQgb2YgdGltZSB0aGUgY2FuYXJ5IHBhY2thZ2UgaXMgZXhwZWN0ZWQgdG8gZ28gd2l0aG91dFxuICAgKiBwdWJsaXNoaW5nIGEgbmV3IHZlcnNpb24uIElmIGV4Y2VlZGVkLCBhbiBhbGFybSB3aWxsIGZpcmUgaW5kaWNhdGluZyB0aGVcbiAgICogY2FuYXJ5IHBhY2thZ2UgbWF5IGhhdmUgc3RvcHBlZCBwdWJsaXNoaW5nLCB3aGljaCB3b3VsZCBsZWF2ZSB0aGUgU0xBXG4gICAqIGFsYXJtIGJsaW5kLlxuICAgKlxuICAgKiBAZGVmYXVsdCBEdXJhdGlvbi5kYXlzKDEpXG4gICAqL1xuICByZWFkb25seSBjYW5hcnlNYXhTdGFsZT86IER1cmF0aW9uO1xufVxuXG4vKipcbiAqIEEgcGFja2FnZSBzb3VyY2UgdGhhdCBnZXRzIHBhY2thZ2UgZGF0YSBmcm9tIHRoZSBucG1qcy5jb20gcGFja2FnZSByZWdpc3RyeS5cbiAqL1xuZXhwb3J0IGNsYXNzIE5wbUpzIGltcGxlbWVudHMgSVBhY2thZ2VTb3VyY2Uge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwcm9wczogTnBtSnNQcm9wcyA9IHt9KSB7fVxuXG4gIHB1YmxpYyBiaW5kKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAge1xuICAgICAgYmFzZVVybCxcbiAgICAgIGRlbnlMaXN0LFxuICAgICAgaW5nZXN0aW9uLFxuICAgICAgbGljZW5zZUxpc3QsXG4gICAgICBtb25pdG9yaW5nLFxuICAgICAgcXVldWUsXG4gICAgICByZXBvc2l0b3J5LFxuICAgICAgb3ZlcnZpZXdEYXNoYm9hcmQsXG4gICAgfTogUGFja2FnZVNvdXJjZUJpbmRPcHRpb25zXG4gICk6IFBhY2thZ2VTb3VyY2VCaW5kUmVzdWx0IHtcbiAgICByZXBvc2l0b3J5Py5hZGRFeHRlcm5hbENvbm5lY3Rpb24oJ3B1YmxpYzpucG1qcycpO1xuXG4gICAgY29uc3Qgc3RvcmFnZUZhY3RvcnkgPSBTM1N0b3JhZ2VGYWN0b3J5LmdldE9yQ3JlYXRlKHNjb3BlKTtcbiAgICBjb25zdCBidWNrZXQgPVxuICAgICAgdGhpcy5wcm9wcy5zdGFnaW5nQnVja2V0IHx8XG4gICAgICBzdG9yYWdlRmFjdG9yeS5uZXdCdWNrZXQoc2NvcGUsICdOcG1Kcy9TdGFnaW5nQnVja2V0Jywge1xuICAgICAgICBibG9ja1B1YmxpY0FjY2VzczogQmxvY2tQdWJsaWNBY2Nlc3MuQkxPQ0tfQUxMLFxuICAgICAgICBlbmZvcmNlU1NMOiB0cnVlLFxuICAgICAgICB2ZXJzaW9uZWQ6IHRydWUsXG4gICAgICAgIGxpZmVjeWNsZVJ1bGVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgcHJlZml4OiBTM0tleVByZWZpeC5TVEFHRURfS0VZX1BSRUZJWCxcbiAgICAgICAgICAgIGV4cGlyYXRpb246IER1cmF0aW9uLmRheXMoMzApLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gUGVybWFuZW50bHkgZGVsZXRlIG1hcmtlciBmaWxlIHVwZGF0ZXMgYWZ0ZXIgMSBkYXkgKHdlIGRvbid0IG5lZWQgdGhlc2UpXG4gICAgICAgICAge1xuICAgICAgICAgICAgcHJlZml4OiBNQVJLRVJfRklMRV9OQU1FLFxuICAgICAgICAgICAgbm9uY3VycmVudFZlcnNpb25FeHBpcmF0aW9uOiBEdXJhdGlvbi5kYXlzKDEpLFxuICAgICAgICAgICAgZXhwaXJlZE9iamVjdERlbGV0ZU1hcmtlcjogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIFBlcm1hbmVudGx5IGRlbGV0ZSBrbm93biB2ZXJzaW9uIGJhY2t1cHMgYWZ0ZXIgMzAgZGF5c1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHByZWZpeDogS05PV05fVkVSU0lPTlNfRklMRV9OQU1FLFxuICAgICAgICAgICAgbm9uY3VycmVudFZlcnNpb25FeHBpcmF0aW9uOiBEdXJhdGlvbi5kYXlzKDMwKSxcbiAgICAgICAgICAgIGV4cGlyZWRPYmplY3REZWxldGVNYXJrZXI6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgIGJ1Y2tldC5ncmFudFJlYWQoaW5nZXN0aW9uKTtcblxuICAgIGNvbnN0IHN0YWdlciA9IG5ldyBTdGFnZUFuZE5vdGlmeShzY29wZSwgJ05wbUpzLVN0YWdlQW5kTm90aWZ5Jywge1xuICAgICAgZGVhZExldHRlclF1ZXVlOiBuZXcgUXVldWUoc2NvcGUsICdTdGFnZXJETFEnLCB7XG4gICAgICAgIGVuY3J5cHRpb246IFF1ZXVlRW5jcnlwdGlvbi5LTVNfTUFOQUdFRCxcbiAgICAgICAgcmV0ZW50aW9uUGVyaW9kOiBEdXJhdGlvbi5kYXlzKDE0KSxcbiAgICAgICAgdmlzaWJpbGl0eVRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoMTUpLFxuICAgICAgfSksXG4gICAgICBkZXNjcmlwdGlvbjogYFske3Njb3BlLm5vZGUucGF0aH0vTnBtSlMtU3RhZ2VBbmROb3RpZnldIFN0YWdlcyB0YXJiYWxscyB0byBTMyBhbmQgbm90aWZpZXMgQ29uc3RydWN0SHViYCxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIEFXU19FTUZfRU5WSVJPTk1FTlQ6ICdMb2NhbCcsXG4gICAgICAgIEJVQ0tFVF9OQU1FOiBidWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgUVVFVUVfVVJMOiBxdWV1ZS5xdWV1ZVVybCxcbiAgICAgIH0sXG4gICAgICBtZW1vcnlTaXplOiAxMF8wMjQsIC8vIDEwR2lCXG4gICAgICByZXRyeUF0dGVtcHRzOiAyLFxuICAgICAgLy8gTG9uZyBlbm91Z2ggZm9yIHRoZSAxMCBtaW51dGUgdGFyYmFsbCA0MDQgcmV0cnkgd2luZG93LCBwbHVzIG1hcmdpblxuICAgICAgLy8gdG8gZG93bmxvYWQgYW5kIHN0b3JlIGEgbGFyZ2UgdGFyYmFsbC5cbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoMTMpLFxuICAgICAgdHJhY2luZzogVHJhY2luZy5BQ1RJVkUsXG4gICAgfSk7XG5cbiAgICBidWNrZXQuZ3JhbnRSZWFkV3JpdGUoc3RhZ2VyKTtcbiAgICBkZW55TGlzdD8uZ3JhbnRSZWFkKHN0YWdlcik7XG4gICAgcXVldWUuZ3JhbnRTZW5kTWVzc2FnZXMoc3RhZ2VyKTtcblxuICAgIHN0YWdlci5hZGRFdmVudFNvdXJjZShcbiAgICAgIG5ldyBTcXNFdmVudFNvdXJjZShzdGFnZXIuZGVhZExldHRlclF1ZXVlISwge1xuICAgICAgICBiYXRjaFNpemU6IDEsXG4gICAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgY29uc3QgZm9sbG93ZXIgPSBuZXcgTnBtSnNGb2xsb3dlcihzY29wZSwgJ05wbUpzJywge1xuICAgICAgZGVzY3JpcHRpb246IGBbJHtzY29wZS5ub2RlLnBhdGh9L05wbUpzXSBQZXJpb2RpY2FsbHkgcXVlcnkgbnBtanMuY29tIGluZGV4IGZvciBuZXcgcGFja2FnZXNgLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgQVdTX0VNRl9FTlZJUk9OTUVOVDogJ0xvY2FsJyxcbiAgICAgICAgQlVDS0VUX05BTUU6IGJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgICBGVU5DVElPTl9OQU1FOiBzdGFnZXIuZnVuY3Rpb25OYW1lLFxuICAgICAgfSxcbiAgICAgIG1lbW9yeVNpemU6IDEwXzAyNCwgLy8gMTAgR2lCXG4gICAgICByZXNlcnZlZENvbmN1cnJlbnRFeGVjdXRpb25zOiAxLCAvLyBPbmx5IG9uZSBleGVjdXRpb24gYXQgYSB0aW1lLCB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMgb24gdGhlIFMzIG1hcmtlciBvYmplY3RcbiAgICAgIHRpbWVvdXQ6IEZPTExPV0VSX1JVTl9SQVRFLFxuICAgICAgdHJhY2luZzogVHJhY2luZy5BQ1RJVkUsXG4gICAgfSk7XG5cbiAgICBidWNrZXQuZ3JhbnRSZWFkV3JpdGUoZm9sbG93ZXIsIE1BUktFUl9GSUxFX05BTUUpO1xuICAgIGJ1Y2tldC5ncmFudFJlYWRXcml0ZShmb2xsb3dlciwgS05PV05fVkVSU0lPTlNfRklMRV9OQU1FKTtcbiAgICBkZW55TGlzdD8uZ3JhbnRSZWFkKGZvbGxvd2VyKTtcbiAgICBsaWNlbnNlTGlzdC5ncmFudFJlYWQoZm9sbG93ZXIpO1xuICAgIHN0YWdlci5ncmFudEludm9rZShmb2xsb3dlcik7XG5cbiAgICBjb25zdCByZXN0YWdlciA9IG5ldyBSZVN0YWdlUGFja2FnZVZlcnNpb24oc2NvcGUsICdSZVN0YWdlUGFja2FnZVZlcnNpb24nLCB7XG4gICAgICBkZXNjcmlwdGlvbjogYE1hbnVhbGx5IHJlLXN0YWdlIGEgcGFja2FnZSB2ZXJzaW9uYCxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIEZVTkNUSU9OX05BTUU6IHN0YWdlci5mdW5jdGlvbk5hbWUsXG4gICAgICAgIFJFR0lTVFJZX1VSTDogJ2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnJyxcbiAgICAgIH0sXG4gICAgICBtZW1vcnlTaXplOiAxMDI0LFxuICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcygxMCksXG4gICAgfSk7XG4gICAgc3RhZ2VyLmdyYW50SW52b2tlKHJlc3RhZ2VyKTtcblxuICAgIGNvbnN0IHJ1bGUgPSBuZXcgUnVsZShzY29wZSwgJ05wbUpzL1NjaGVkdWxlJywge1xuICAgICAgZGVzY3JpcHRpb246IGAke3Njb3BlLm5vZGUucGF0aH0vTnBtSnMvU2NoZWR1bGVgLFxuICAgICAgc2NoZWR1bGU6IFNjaGVkdWxlLnJhdGUoRk9MTE9XRVJfUlVOX1JBVEUpLFxuICAgICAgdGFyZ2V0czogW25ldyBMYW1iZGFGdW5jdGlvbihmb2xsb3dlcildLFxuICAgIH0pO1xuXG4gICAgdGhpcy5yZWdpc3RlckFsYXJtcyhzY29wZSwgZm9sbG93ZXIsIHN0YWdlciwgbW9uaXRvcmluZywgcnVsZSk7XG5cbiAgICBzdGFnZXIuZGVhZExldHRlclF1ZXVlICYmXG4gICAgICBvdmVydmlld0Rhc2hib2FyZC5hZGRETFFNZXRyaWNUb0Rhc2hib2FyZChcbiAgICAgICAgJ05QTSBKUyBTdGFnZXIgRExRJyxcbiAgICAgICAgc3RhZ2VyLmRlYWRMZXR0ZXJRdWV1ZVxuICAgICAgKTtcbiAgICBmb2xsb3dlci5kZWFkTGV0dGVyUXVldWUgJiZcbiAgICAgIG92ZXJ2aWV3RGFzaGJvYXJkLmFkZERMUU1ldHJpY1RvRGFzaGJvYXJkKFxuICAgICAgICAnTlBNIEpTIEZvbGxvd2VyIERMUScsXG4gICAgICAgIGZvbGxvd2VyLmRlYWRMZXR0ZXJRdWV1ZVxuICAgICAgKTtcbiAgICBvdmVydmlld0Rhc2hib2FyZC5hZGRDb25jdXJyZW50RXhlY3V0aW9uTWV0cmljVG9EYXNoYm9hcmQoXG4gICAgICBmb2xsb3dlcixcbiAgICAgICdOcG1Kc0xhbWJkYSdcbiAgICApO1xuICAgIG92ZXJ2aWV3RGFzaGJvYXJkLmFkZENvbmN1cnJlbnRFeGVjdXRpb25NZXRyaWNUb0Rhc2hib2FyZChcbiAgICAgIHN0YWdlcixcbiAgICAgICdOcG1Kcy1TdGFnZUFuZE5vdGlmeUxhbWJkYSdcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IGZvbGxvd2VyLm5vZGUucGF0aCxcbiAgICAgIGxpbmtzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnTnBtSnMgRm9sbG93ZXInLFxuICAgICAgICAgIHVybDogbGFtYmRhRnVuY3Rpb25VcmwoZm9sbG93ZXIpLFxuICAgICAgICAgIHByaW1hcnk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHsgbmFtZTogJ01hcmtlciBPYmplY3QnLCB1cmw6IHMzT2JqZWN0VXJsKGJ1Y2tldCwgTUFSS0VSX0ZJTEVfTkFNRSkgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdLbm93biBWZXJzaW9ucycsXG4gICAgICAgICAgdXJsOiBzM09iamVjdFVybChidWNrZXQsIEtOT1dOX1ZFUlNJT05TX0ZJTEVfTkFNRSksXG4gICAgICAgIH0sXG4gICAgICAgIHsgbmFtZTogJ1N0YWdlcicsIHVybDogbGFtYmRhRnVuY3Rpb25Vcmwoc3RhZ2VyKSB9LFxuICAgICAgICB7IG5hbWU6ICdTdGFnZXIgRExRJywgdXJsOiBzcXNRdWV1ZVVybChzdGFnZXIuZGVhZExldHRlclF1ZXVlISkgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdQaXBlbGluZSBUcmFjZSAoTG9nIEFuYWx5dGljcyknLFxuICAgICAgICAgIHVybDogbG9nQW5hbHl0aWNzVXJsKFxuICAgICAgICAgICAgW2ZvbGxvd2VyLCBzdGFnZXJdLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAnZmllbGRzIEB0aW1lc3RhbXAsIEBsb2csIEBtZXNzYWdlJyxcbiAgICAgICAgICAgICAgYHwgZmlsdGVyIEBtZXNzYWdlIGxpa2UgLyR7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5jYW5hcnlQYWNrYWdlID8/ICdjb25zdHJ1Y3QtaHViLXByb2JlJ1xuICAgICAgICAgICAgICB9L2AsXG4gICAgICAgICAgICAgICcjIGZpbHRlciBAbWVzc2FnZSBsaWtlIC88dmVyc2lvbj4vIDwtIG5hcnJvdyBkb3duIHRvIGEgc3R1Y2sgdmVyc2lvbicsXG4gICAgICAgICAgICAgICd8IHNvcnQgQHRpbWVzdGFtcCBkZXNjJyxcbiAgICAgICAgICAgICAgJ3wgbGltaXQgMTAwJyxcbiAgICAgICAgICAgIF0uam9pbignXFxuJylcbiAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGRhc2hib2FyZFdpZGdldHM6IFtcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ0ZvbGxvd2VyIEhlYWx0aCcsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoZm9sbG93ZXIubWV0cmljSW52b2NhdGlvbnMoeyBsYWJlbDogJ0ludm9jYXRpb25zJyB9KSksXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoZm9sbG93ZXIubWV0cmljRXJyb3JzKHsgbGFiZWw6ICdFcnJvcnMnIH0pKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICByaWdodDogW3RoaXMubWV0cmljUmVtYWluaW5nVGltZSh7IGxhYmVsOiAnUmVtYWluaW5nIFRpbWUnIH0pXSxcbiAgICAgICAgICAgIHJpZ2h0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgICAgIHRpdGxlOiAnU3RhZ2VyIEhlYWx0aCcsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoc3RhZ2VyLm1ldHJpY0ludm9jYXRpb25zKHsgbGFiZWw6ICdJbnZvY2F0aW9ucycgfSkpLFxuICAgICAgICAgICAgICBmaWxsTWV0cmljKHN0YWdlci5tZXRyaWNFcnJvcnMoeyBsYWJlbDogJ0Vycm9ycycgfSkpLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBbc3RhZ2VyLm1ldHJpY0R1cmF0aW9uKHsgbGFiZWw6ICdEdXJhdGlvbicgfSldLFxuICAgICAgICAgICAgcmlnaHRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ0NvdWNoREIgRm9sbG93ZXInLFxuICAgICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgICBmaWxsTWV0cmljKHRoaXMubWV0cmljQ2hhbmdlQ291bnQoeyBsYWJlbDogJ0NoYW5nZSBDb3VudCcgfSksIDApLFxuICAgICAgICAgICAgICBmaWxsTWV0cmljKFxuICAgICAgICAgICAgICAgIHRoaXMubWV0cmljVW5wcm9jZXNzYWJsZUVudGl0eSh7IGxhYmVsOiAnVW5wcm9jZXNzYWJsZScgfSksXG4gICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgdGhpcy5tZXRyaWNOcG1Kc0NoYW5nZUFnZSh7IGxhYmVsOiAnTGFnIHRvIG5wbWpzLmNvbScgfSksXG4gICAgICAgICAgICAgICAgJ1JFUEVBVCdcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICB0aGlzLm1ldHJpY1BhY2thZ2VWZXJzaW9uQWdlKHsgbGFiZWw6ICdQYWNrYWdlIFZlcnNpb24gQWdlJyB9KSxcbiAgICAgICAgICAgICAgICAnUkVQRUFUJ1xuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHJpZ2h0WUF4aXM6IHsgbGFiZWw6ICdNaWxsaXNlY29uZHMnLCBtaW46IDAsIHNob3dVbml0czogZmFsc2UgfSxcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdDb3VjaERCIENoYW5nZXMnLFxuICAgICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgICBmaWxsTWV0cmljKFxuICAgICAgICAgICAgICAgIHRoaXMubWV0cmljTGFzdFNlcSh7IGxhYmVsOiAnTGFzdCBTZXF1ZW5jZSBOdW1iZXInIH0pLFxuICAgICAgICAgICAgICAgICdSRVBFQVQnXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgICBbXG4gICAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgICAgIHRpdGxlOiAnU3RhZ2VyIERlYWQtTGV0dGVyIFF1ZXVlJyxcbiAgICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICBzdGFnZXIuZGVhZExldHRlclF1ZXVlIS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNWaXNpYmxlKFxuICAgICAgICAgICAgICAgICAgeyBsYWJlbDogJ1Zpc2libGUgTWVzc2FnZXMnIH1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICBzdGFnZXIuZGVhZExldHRlclF1ZXVlIS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNOb3RWaXNpYmxlKFxuICAgICAgICAgICAgICAgICAgeyBsYWJlbDogJ0ludmlzaWJsZSBNZXNzYWdlcycgfVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBbXG4gICAgICAgICAgICAgIHN0YWdlci5kZWFkTGV0dGVyUXVldWUhLm1ldHJpY0FwcHJveGltYXRlQWdlT2ZPbGRlc3RNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ09sZGVzdCBNZXNzYWdlJyxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmlnaHRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4odGhpcy5wcm9wcy5lbmFibGVDYW5hcnkgPz8gdHJ1ZVxuICAgICAgICAgICAgPyB0aGlzLnJlZ2lzdGVyQ2FuYXJ5KFxuICAgICAgICAgICAgICAgIGZvbGxvd2VyLFxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuY2FuYXJ5UGFja2FnZSA/PyAnY29uc3RydWN0LWh1Yi1wcm9iZScsXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5jYW5hcnlTbGEgPz8gRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmNhbmFyeU1heFN0YWxlID8/IER1cmF0aW9uLmRheXMoMSksXG4gICAgICAgICAgICAgICAgYnVja2V0LFxuICAgICAgICAgICAgICAgIGJhc2VVcmwsXG4gICAgICAgICAgICAgICAgbW9uaXRvcmluZ1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgXSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYXZlcmFnZSB0aW1lIGl0IHRvb2sgdG8gcHJvY2VzcyBhIGNoYW5nZXMgYmF0Y2guXG4gICAqL1xuICBwdWJsaWMgbWV0cmljQmF0Y2hQcm9jZXNzaW5nVGltZShvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuQVZFUkFHRSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLkJBVENIX1BST0NFU1NJTkdfVElNRSxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRvdGFsIGNvdW50IG9mIGNoYW5nZXMgdGhhdCB3ZXJlIHByb2Nlc3NlZC5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNDaGFuZ2VDb3VudChvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIG1ldHJpY05hbWU6IE1ldHJpY05hbWUuQ0hBTkdFX0NPVU5ULFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbGFzdCBzZXF1ZW5jZSBudW1iZXIgdGhhdCB3YXMgcHJvY2Vzc2VkLiBUaGlzIG1ldHJpYyBjYW4gYmUgdXNlZCB0b1xuICAgKiBkaXNjb3ZlciB3aGVuIGEgc2VxdWVuY2UgcmVzZXQgaGFzIGhhcHBlbmVkIGluIHRoZSBDb3VjaERCIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY0xhc3RTZXEob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLk1BWElNVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5MQVNUX1NFUSxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbWV0cmljTnBtSnNDaGFuZ2VBZ2Uob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLk1JTklNVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5OUE1KU19DSEFOR0VfQUdFLFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYWdlIG9mIHRoZSBvbGRlc3QgcGFja2FnZSB2ZXJzaW9uIHRoYXQgd2FzIHByb2Nlc3NlZC5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNQYWNrYWdlVmVyc2lvbkFnZShvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUFYSU1VTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLlBBQ0tBR0VfVkVSU0lPTl9BR0UsXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0b3RhbCBjb3VudCBvZiBwYWNrYWdlIHZlcnNpb25zIHRoYXQgd2VyZSBpbnNwZWN0ZWQuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljUGFja2FnZVZlcnNpb25Db3VudChvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIG1ldHJpY05hbWU6IE1ldHJpY05hbWUuUEFDS0FHRV9WRVJTSU9OX0NPVU5ULFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdG90YWwgY291bnQgb2YgcGFja2FnZSB2ZXJzaW9ucyB0aGF0IHdlcmUgZGVlbWVkIHJlbGV2YW50LlxuICAgKi9cbiAgcHVibGljIG1ldHJpY1JlbGV2YW50UGFja2FnZVZlcnNpb25zKG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5TVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5SRUxFVkFOVF9QQUNLQUdFX1ZFUlNJT05TLFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYW1vdW50IG9mIHRpbWUgdGhhdCB3YXMgcmVtYWluaW5nIHdoZW4gdGhlIGxhbWJkYSByZXR1cm5lZCBpbiBvcmRlciB0b1xuICAgKiBhdm9pZCBoaXR0aW5nIGEgdGltZW91dC5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNSZW1haW5pbmdUaW1lKG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5NSU5JTVVNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIG1ldHJpY05hbWU6IE1ldHJpY05hbWUuUkVNQUlOSU5HX1RJTUUsXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBhbW91bnQgb2YgY2hhbmdlcyB0aGF0IHdlcmUgbm90IHByb2Nlc3NlZCBkdWUgdG8gaGF2aW5nIGFuIGludmFsaWRcbiAgICogZm9ybWF0LlxuICAgKi9cbiAgcHVibGljIG1ldHJpY1VucHJvY2Vzc2FibGVFbnRpdHkob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLlNVTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLlVOUFJPQ0VTU0FCTEVfRU5USVRZLFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJBbGFybXMoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBmb2xsb3dlcjogTnBtSnNGb2xsb3dlcixcbiAgICBzdGFnZXI6IFN0YWdlQW5kTm90aWZ5LFxuICAgIG1vbml0b3Jpbmc6IElNb25pdG9yaW5nLFxuICAgIHNjaGVkdWxlOiBSdWxlXG4gICkge1xuICAgIGNvbnN0IGZhaWx1cmVBbGFybSA9IGZvbGxvd2VyXG4gICAgICAubWV0cmljRXJyb3JzKClcbiAgICAgIC5jcmVhdGVBbGFybShzY29wZSwgJ05wbUpzL0ZvbGxvd2VyL0ZhaWx1cmVzJywge1xuICAgICAgICBhbGFybU5hbWU6IGAke3Njb3BlLm5vZGUucGF0aH0vTnBtSnMvRm9sbG93ZXIvRmFpbHVyZXNgLFxuICAgICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgJ1RoZSBOcG1KcyBmb2xsb3dlciBmdW5jdGlvbiBmYWlsZWQhJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICBgUnVuQm9vazogJHtSVU5CT09LX1VSTH1gLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIGBEaXJlY3QgbGluayB0byBMYW1iZGEgZnVuY3Rpb246ICR7bGFtYmRhRnVuY3Rpb25VcmwoZm9sbG93ZXIpfWAsXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjpcbiAgICAgICAgICBDb21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDMsXG4gICAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5NSVNTSU5HLFxuICAgICAgfSk7XG4gICAgbW9uaXRvcmluZy5hZGRMb3dTZXZlcml0eUFsYXJtKCdOcG1Kcy9Gb2xsb3dlciBGYWlsdXJlcycsIGZhaWx1cmVBbGFybSk7XG5cbiAgICBjb25zdCBub3RSdW5uaW5nQWxhcm0gPSBmb2xsb3dlclxuICAgICAgLm1ldHJpY0ludm9jYXRpb25zKHsgcGVyaW9kOiBGT0xMT1dFUl9SVU5fUkFURSB9KVxuICAgICAgLmNyZWF0ZUFsYXJtKHNjb3BlLCAnTnBtSnMvRm9sbG93ZXIvTm90UnVubmluZycsIHtcbiAgICAgICAgYWxhcm1OYW1lOiBgJHtzY29wZS5ub2RlLnBhdGh9L05wbUpzL0ZvbGxvd2VyL05vdFJ1bm5pbmdgLFxuICAgICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgJ1RoZSBOcG1KcyBmb2xsb3dlciBmdW5jdGlvbiBpcyBub3QgcnVubmluZyEnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIGBSdW5Cb29rOiAke1JVTkJPT0tfVVJMfWAsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgYERpcmVjdCBsaW5rIHRvIExhbWJkYSBmdW5jdGlvbjogJHtsYW1iZGFGdW5jdGlvblVybChmb2xsb3dlcil9YCxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuTEVTU19USEFOX1RIUkVTSE9MRCxcbiAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDIsXG4gICAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5CUkVBQ0hJTkcsXG4gICAgICB9KTtcbiAgICBtb25pdG9yaW5nLmFkZEhpZ2hTZXZlcml0eUFsYXJtKFxuICAgICAgJ05wbUpzL0ZvbGxvd2VyIE5vdCBSdW5uaW5nJyxcbiAgICAgIG5vdFJ1bm5pbmdBbGFybVxuICAgICk7XG5cbiAgICAvLyBUaGUgcGVyaW9kIGZvciB0aGlzIGFsYXJtIG5lZWRzIHRvIG1hdGNoIHRoZSBzY2hlZHVsaW5nIGludGVydmFsIG9mIHRoZVxuICAgIC8vIGZvbGxvd2VyLCBvdGhlcndpc2UgdGhlIG1ldHJpYyB3aWxsIGJlIHRvbyBzcGFyc2UgdG8gcHJvcGVybHkgZGV0ZWN0XG4gICAgLy8gcHJvYmxlbXMuXG4gICAgY29uc3Qgbm9DaGFuZ2VBbGFybSA9IHRoaXMubWV0cmljQ2hhbmdlQ291bnQoe1xuICAgICAgcGVyaW9kOiBGT0xMT1dFUl9SVU5fUkFURSxcbiAgICB9KS5jcmVhdGVBbGFybShzY29wZSwgJ05wbUpzL0ZvbGxvd2VyL05vQ2hhbmdlcycsIHtcbiAgICAgIGFsYXJtTmFtZTogYCR7c2NvcGUubm9kZS5wYXRofS9OcG1Kcy9Gb2xsb3dlci9Ob0NoYW5nZXNgLFxuICAgICAgYWxhcm1EZXNjcmlwdGlvbjogW1xuICAgICAgICAnVGhlIE5wbUpzIGZvbGxvd2VyIGZ1bmN0aW9uIGlzIG5vdCBkaXNjb3ZlcmluZyBhbnkgY2hhbmdlcyBmcm9tIENvdWNoREIhJyxcbiAgICAgICAgJycsXG4gICAgICAgIGBSdW5Cb29rOiAke1JVTkJPT0tfVVJMfWAsXG4gICAgICAgICcnLFxuICAgICAgICBgRGlyZWN0IGxpbmsgdG8gTGFtYmRhIGZ1bmN0aW9uOiAke2xhbWJkYUZ1bmN0aW9uVXJsKGZvbGxvd2VyKX1gLFxuICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogQ29tcGFyaXNvbk9wZXJhdG9yLkxFU1NfVEhBTl9USFJFU0hPTEQsXG4gICAgICBldmFsdWF0aW9uUGVyaW9kczogaG93T2Z0ZW4oRk9MTE9XRVJfUlVOX1JBVEUsIE5PX0NIQU5HRVNfQUxBUk1fRFVSQVRJT04pLFxuICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgLy8gSWYgdGhlIG1ldHJpYyBpcyBub3QgZW1pdHRlZCwgaXQgY2FuIGJlIGFzc3VtZWQgdG8gYmUgemVyby5cbiAgICAgIHRyZWF0TWlzc2luZ0RhdGE6IFRyZWF0TWlzc2luZ0RhdGEuQlJFQUNISU5HLFxuICAgIH0pO1xuICAgIG1vbml0b3JpbmcuYWRkTG93U2V2ZXJpdHlBbGFybShcbiAgICAgICdOcCBucG1qcy5jb20gY2hhbmdlcyBkaXNjb3ZlcmVkJyxcbiAgICAgIG5vQ2hhbmdlQWxhcm1cbiAgICApO1xuXG4gICAgY29uc3QgZGxxTm90RW1wdHlBbGFybSA9IHN0YWdlclxuICAgICAgLmRlYWRMZXR0ZXJRdWV1ZSEubWV0cmljQXBwcm94aW1hdGVOdW1iZXJPZk1lc3NhZ2VzVmlzaWJsZSh7XG4gICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIH0pXG4gICAgICAuY3JlYXRlQWxhcm0oc2NvcGUsIGAke3Njb3BlLm5vZGUucGF0aH0vTnBtSnMvU3RhZ2VyL0RMUU5vdEVtcHR5YCwge1xuICAgICAgICBhbGFybU5hbWU6IGAke3Njb3BlLm5vZGUucGF0aH0vTnBtSnMvU3RhZ2VyL0RMUU5vdEVtcHR5YCxcbiAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjogW1xuICAgICAgICAgICdUaGUgTnBtSlMgcGFja2FnZSBzdGFnZXIgaXMgZmFpbGluZyAtIGl0cyBkZWFkIGxldHRlciBxdWV1ZSBpcyBub3QgZW1wdHknLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIGBMaW5rIHRvIHRoZSBsYW1iZGEgZnVuY3Rpb246ICR7bGFtYmRhRnVuY3Rpb25Vcmwoc3RhZ2VyKX1gLFxuICAgICAgICAgIGBMaW5rIHRvIHRoZSBkZWFkIGxldHRlciBxdWV1ZTogJHtzcXNRdWV1ZVVybChcbiAgICAgICAgICAgIHN0YWdlci5kZWFkTGV0dGVyUXVldWUhXG4gICAgICAgICAgKX1gLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIGBSdW5ib29rOiAke1JVTkJPT0tfVVJMfWAsXG4gICAgICAgIF0uam9pbignL24nKSxcbiAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOlxuICAgICAgICAgIENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogMixcbiAgICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLk5PVF9CUkVBQ0hJTkcsXG4gICAgICB9KTtcbiAgICBtb25pdG9yaW5nLmFkZExvd1NldmVyaXR5QWxhcm0oXG4gICAgICAnTnBtSnMvU3RhZ2VyIERMUSBOb3QgRW1wdHknLFxuICAgICAgZGxxTm90RW1wdHlBbGFybVxuICAgICk7XG5cbiAgICAvLyBGaW5hbGx5IC0gdGhlIFwibm90IHJ1bm5pbmdcIiBhbGFybSBkZXBlbmRzIG9uIHRoZSBzY2hlZHVsZSAoaXQgd29uJ3QgcnVuIHVudGlsIHRoZSBzY2hlZHVsZVxuICAgIC8vIGV4aXN0cyEpLCBhbmQgdGhlIHNjaGVkdWxlIGRlcGVuZHMgb24gdGhlIGZhaWx1cmUgYWxhcm0gZXhpc3RpbmcgKHdlIGRvbid0IHdhbnQgaXQgdG8gcnVuXG4gICAgLy8gYmVmb3JlIHdlIGNhbiBrbm93IGl0IGlzIGZhaWxpbmcpLiBUaGlzIG1lYW5zIHRoZSByZXR1cm5lZCBgSURlcGVuZGFibGVgIGVmZmVjdGl2ZWx5IGVuc3VyZXNcbiAgICAvLyBhbGwgYWxhcm1zIGhhdmUgYmVlbiBwcm92aXNpb25lZCBhbHJlYWR5ISBJc24ndCBpdCBuaWNlIVxuICAgIG5vdFJ1bm5pbmdBbGFybS5ub2RlLmFkZERlcGVuZGVuY3koc2NoZWR1bGUpO1xuICAgIHNjaGVkdWxlLm5vZGUuYWRkRGVwZW5kZW5jeShmYWlsdXJlQWxhcm0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlckNhbmFyeShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIHBhY2thZ2VOYW1lOiBzdHJpbmcsXG4gICAgLy8gQSBkdXJhdGlvbiBzcGVjaWZ5aW5nIGhvdyBsb25nIHdlIGV4cGVjdCB0aGUgcHJvYmUgcGFja2FnZSB0byBhcHBlYXIgb25cbiAgICAvLyBDb25zdHJ1Y3QgSHViIGFmdGVyIGl0IGdldHMgcHVibGlzaGVkIHRvIG5wbSwgYXNzdW1pbmcgdGhlIG5wbSByZXBsaWNhXG4gICAgLy8gaXMgdXAgdG8gZGF0ZSBldGMuXG4gICAgdmlzaWJpbGl0eVNsYTogRHVyYXRpb24sXG4gICAgLy8gQSBkdXJhdGlvbiBzcGVjaWZ5aW5nIGhvdyBsb25nIHRoZSBjYW5hcnkgcGFja2FnZSBjYW4gZ28gd2l0aG91dFxuICAgIC8vIHB1Ymxpc2hpbmcgYSBuZXcgdmVyc2lvbiBiZWZvcmUgd2UgYWxhcm0uXG4gICAgbWF4U3RhbGU6IER1cmF0aW9uLFxuICAgIGJ1Y2tldDogSUJ1Y2tldCxcbiAgICBjb25zdHJ1Y3RIdWJCYXNlVXJsOiBzdHJpbmcsXG4gICAgbW9uaXRvcmluZzogSU1vbml0b3JpbmdcbiAgKTogSVdpZGdldFtdIHtcbiAgICBjb25zdCBjYW5hcnkgPSBuZXcgTnBtSnNQYWNrYWdlQ2FuYXJ5KHNjb3BlLCAnQ2FuYXJ5Jywge1xuICAgICAgYnVja2V0LFxuICAgICAgY29uc3RydWN0SHViQmFzZVVybCxcbiAgICAgIHBhY2thZ2VOYW1lLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcGVyaW9kID0gRHVyYXRpb24ubWludXRlcygxMCk7IC8vIHdlIHJ1biBjYW5hcnkgb25jZSBwZXIgaG91ciwgYnV0IG5vdCBndWFyYW50ZWVkIGV4YWN0IHRpbWVzXG4gICAgY29uc3QgYWxhcm0gPSBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgZXhwcmVzc2lvbjogJ01BWChbbUR3ZWxsLCBtVFRDXSknLFxuICAgICAgcGVyaW9kLFxuICAgICAgdXNpbmdNZXRyaWNzOiB7XG4gICAgICAgIG1Ed2VsbDogY2FuYXJ5Lm1ldHJpY0R3ZWxsVGltZSgpLFxuICAgICAgICBtVFRDOiBjYW5hcnkubWV0cmljVGltZVRvQ2F0YWxvZygpLFxuICAgICAgfSxcbiAgICB9KS5jcmVhdGVBbGFybShjYW5hcnksICdBbGFybScsIHtcbiAgICAgIGFsYXJtTmFtZTogYCR7Y2FuYXJ5Lm5vZGUucGF0aH0vU0xBLUJyZWFjaGVkYCxcbiAgICAgIGFsYXJtRGVzY3JpcHRpb246IFtcbiAgICAgICAgYE5ldyB2ZXJzaW9ucyBvZiAke3BhY2thZ2VOYW1lfSBoYXZlIGJlZW4gcHVibGlzaGVkIG92ZXIgJHt2aXNpYmlsaXR5U2xhLnRvSHVtYW5TdHJpbmcoKX0gYWdvIGFuZCBhcmUgc3RpbGwgbm90IHZpc2libGUgaW4gY29uc3RydWN0IGh1YmAsXG4gICAgICAgIGBSdW5ib29rOiAke1JVTkJPT0tfVVJMfWAsXG4gICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX1RIUkVTSE9MRCxcbiAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5OT1RfQlJFQUNISU5HLFxuICAgICAgdGhyZXNob2xkOiB2aXNpYmlsaXR5U2xhLnRvU2Vjb25kcygpLFxuICAgIH0pO1xuICAgIC8vIFRoaXMgaXMgZGVlbWVkIGxvdyBzZXZlcml0eSwgYmVjYXVzZSB0aGUgbnBtIHJlZ2lzdHJ5IHJlcGxpY2EgKHJlcGxpY2F0ZS5ucG1qcy5jb20pIGNhblxuICAgIC8vIG9jY2FzaW9uYWxseSBsYWcgc2V2ZXJhbCBob3VycyBiZWhpbmQgdGhlIHByaW1hcnkgKHJlZ2lzdHJ5Lm5wbWpzLmNvbSksIGFuZCB3ZSBjYW5ub3QgZWFzaWx5XG4gICAgLy8gdGVsbCBhYm91dCB0aGF0LiBTb21lb25lIHNob3VsZCBoYXZlIGEgbG9vaywgYnV0IGluIHZpcnR1YWxseSBhbGwgY2FzZXMgd2UgaGF2ZSBzZWVuIHNvIGZhcixcbiAgICAvLyB0aGVyZSBpcyBub3RoaW5nIHRoYXQgY2FuIGJlIGRvbmUgZnJvbSBvdXIgZW5kLCBiZXNpZGVzIHdhaXRpbmcgZm9yIHRoZSByZXBsaWNhIHRvIGJlIGFsbFxuICAgIC8vIGNhdWdodCB1cC5cbiAgICBhZGRBbGFybShcbiAgICAgICdOZXcgdmVyc2lvbiB2aXNpYmlsaXR5IFNMQSBicmVhY2hlZCcsXG4gICAgICBhbGFybSxcbiAgICAgIEFsYXJtU2V2ZXJpdHkuTE9XLFxuICAgICAgbW9uaXRvcmluZ1xuICAgICk7XG5cbiAgICBjb25zdCBzdGFsZUFsYXJtID0gY2FuYXJ5XG4gICAgICAubWV0cmljVGltZVNpbmNlTGFzdFB1Ymxpc2goeyBwZXJpb2QgfSlcbiAgICAgIC5jcmVhdGVBbGFybShjYW5hcnksICdTdGFsZUNhbmFyeVBhY2thZ2UnLCB7XG4gICAgICAgIGFsYXJtTmFtZTogYCR7Y2FuYXJ5Lm5vZGUucGF0aH0vU3RhbGVDYW5hcnlQYWNrYWdlYCxcbiAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjogW1xuICAgICAgICAgIGBUaGUgY2FuYXJ5IHBhY2thZ2UgJHtwYWNrYWdlTmFtZX0gaGFzIG5vdCBwdWJsaXNoZWQgYSBuZXcgdmVyc2lvbiBpbiBvdmVyICR7bWF4U3RhbGUudG9IdW1hblN0cmluZygpfS5gLFxuICAgICAgICAgICdUaGlzIG1lYW5zIHRoZSBTTEEgYWxhcm0gaXMgYmxpbmQg4oCUIG5vIG5ldyB2ZXJzaW9ucyBhcmUgYmVpbmcgdHJhY2tlZCwgc28gU0xBIGJyZWFjaGVzIGNhbm5vdCBiZSBkZXRlY3RlZC4nLFxuICAgICAgICAgICdNZXRyaWM6IENvbnN0cnVjdEh1Yi9QYWNrYWdlQ2FuYXJ5IC8gVGltZVNpbmNlTGFzdFB1Ymxpc2gnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIGBSdW5ib29rOiAke1JVTkJPT0tfVVJMfWAsXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9USFJFU0hPTEQsXG4gICAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLk1JU1NJTkcsXG4gICAgICAgIHRocmVzaG9sZDogbWF4U3RhbGUudG9TZWNvbmRzKCksXG4gICAgICB9KTtcbiAgICBtb25pdG9yaW5nLmFkZE1lZGl1bVNldmVyaXR5QWxhcm0oXG4gICAgICAnQ2FuYXJ5IHBhY2thZ2UgaGFzIHN0b3BwZWQgcHVibGlzaGluZyBuZXcgdmVyc2lvbnMnLFxuICAgICAgc3RhbGVBbGFybVxuICAgICk7XG5cbiAgICBjb25zdCBub3RSdW5uaW5nT3JGYWlsaW5nQWxhcm0gPSBuZXcgQ29tcG9zaXRlQWxhcm0oXG4gICAgICBjYW5hcnksXG4gICAgICAnTm90UnVubmluZ09yRmFpbGluZycsXG4gICAgICB7XG4gICAgICAgIGFsYXJtUnVsZTogQWxhcm1SdWxlLmFueU9mKFxuICAgICAgICAgIGNhbmFyeVxuICAgICAgICAgICAgLm1ldHJpY0Vycm9ycyh7IHBlcmlvZCwgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNIH0pXG4gICAgICAgICAgICAuY3JlYXRlQWxhcm0oY2FuYXJ5LCAnRmFpbGluZycsIHtcbiAgICAgICAgICAgICAgYWxhcm1OYW1lOiBgJHtjYW5hcnkubm9kZS5wYXRofS9GYWlsaW5nYCxcbiAgICAgICAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX1RIUkVTSE9MRCxcbiAgICAgICAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDIsXG4gICAgICAgICAgICAgIHRocmVzaG9sZDogMCxcbiAgICAgICAgICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5CUkVBQ0hJTkcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBjYW5hcnlcbiAgICAgICAgICAgIC5tZXRyaWNJbnZvY2F0aW9ucyh7IHBlcmlvZCwgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNIH0pXG4gICAgICAgICAgICAuY3JlYXRlQWxhcm0oY2FuYXJ5LCAnTm90UnVubmluZycsIHtcbiAgICAgICAgICAgICAgYWxhcm1OYW1lOiBgJHtjYW5hcnkubm9kZS5wYXRofS9Ob3RSdW5uaW5nYCxcbiAgICAgICAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuTEVTU19USEFOX1RIUkVTSE9MRCxcbiAgICAgICAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDIsXG4gICAgICAgICAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgICAgICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5CUkVBQ0hJTkcsXG4gICAgICAgICAgICB9KVxuICAgICAgICApLFxuICAgICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgJ1RoZSBOcG1KcyBwYWNrYWdlIGNhbmFyeSBpcyBub3QgcnVubmluZyBvciBpcyBmYWlsaW5nLiBUaGlzIHByZXZlbnRzIGFsYXJtaW5nIHdoZW4gdGhpcyBpbnN0YW5jZSBvZicsXG4gICAgICAgICAgJ0NvbnN0cnVjdEh1YiBmYWxscyBvdXQgb2YgU0xBIGZvciBuZXcgcGFja2FnZSBpbmdlc3Rpb24hJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICBgUnVuYm9vazogJHtSVU5CT09LX1VSTH1gLFxuICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgICBjb21wb3NpdGVBbGFybU5hbWU6IGAke2NhbmFyeS5ub2RlLnBhdGh9L05vdFJ1bm5pbmdPckZhaWxpbmdgLFxuICAgICAgfVxuICAgICk7XG4gICAgbW9uaXRvcmluZy5hZGRIaWdoU2V2ZXJpdHlBbGFybShcbiAgICAgICdOcG1KcyBGb2xsb3dlciBDYW5hcnkgaXMgbm90IHJ1bm5pbmcgb3IgZmFpbHMnLFxuICAgICAgbm90UnVubmluZ09yRmFpbGluZ0FsYXJtXG4gICAgKTtcblxuICAgIC8vIFVzaW5nIE1JTiBzdGF0aXN0aWMsIHNvIGlmIGEgcnVuIGlzIHN1Y2Nlc3NmdWwgKGFuZCBoZW5jZSBlbWl0cyBhIDApLCB0aGlzIGFsYXJtIHdpbGwgbm90IHRyaWdnZXIuXG4gICAgY29uc3QgZ2F0ZXdheUVycm9yc0FsYXJtID0gY2FuYXJ5XG4gICAgICAubWV0cmljSHR0cEdhdGV3YXlFcnJvcnMoeyBwZXJpb2QsIHN0YXRpc3RpYzogU3RhdGlzdGljLk1JTklNVU0gfSlcbiAgICAgIC5jcmVhdGVBbGFybShjYW5hcnksICdHYXRld2F5RXJyb3JzJywge1xuICAgICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgJ1RoZSBOcG1KcyBwYWNrYWdlIGNhbmFyeSBoYXMgYmVlbiBlbmNvdW50ZXJpbmcgY29uc2lzdGVudCBIVFRQIGdhdGV3YXkgZXJyb3JzIHdoZW4gY29udGFjdGluZyBucG1qcyBzZXJ2ZXJzJyxcbiAgICAgICAgICAnZm9yIGFuIGhvdXIgb3IgbW9yZS4gVGhpcyBtZWFucyB0aGUgY2FuYXJ5IGhhcyBiZWVuIHVuYWJsZSB0byBldmFsdWF0ZSBTTEEgY29tcGxpYW5jZSBmb3IgdGhhdCBtdWNoIHRpbWUuJyxcbiAgICAgICAgICAnSXQgaXMgcHJvYmFibGUgdGhhdCBub3RoaW5nIGNhbiBiZSBkb25lIGV4Y2VwdCBmb3Igd2FpdGluZyBmb3IgbnBtIHNlcnZlcnMgdG8gY29tZSBiYWNrIG9ubGluZSwgYnV0IHRoZScsXG4gICAgICAgICAgJ3NpdHVhdGlvbiBzaG91bGQgYmUgY2hlY2tlZCB0byBtYWtlIHN1cmUgdGhlcmUgaXMgbm90IGFub3RoZXIgcHJvYmxlbS4nLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIGBSdW5ib29rOiAke1JVTkJPT0tfVVJMfWAsXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgIGFsYXJtTmFtZTogYCR7Y2FuYXJ5Lm5vZGUucGF0aH0vR2F0ZXdheUVycm9yc2AsXG4gICAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9USFJFU0hPTEQsXG4gICAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiA2MCxcbiAgICAgICAgdGhyZXNob2xkOiAwLFxuICAgICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLkJSRUFDSElORyxcbiAgICAgIH0pO1xuICAgIG1vbml0b3JpbmcuYWRkTG93U2V2ZXJpdHlBbGFybShcbiAgICAgICdOcG1KcyBGb2xsb3dlciBDYW5hcnkgaXMgZXhwZXJpZW5jaW5nIEhUVFAgR2F0ZXdheSBlcnJvcnMnLFxuICAgICAgZ2F0ZXdheUVycm9yc0FsYXJtXG4gICAgKTtcblxuICAgIHJldHVybiBbXG4gICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgdGl0bGU6ICdQYWNrYWdlIENhbmFyeScsXG4gICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICBjYW5hcnkubWV0cmljRHdlbGxUaW1lKHsgbGFiZWw6ICdEd2VsbCBUaW1lJyB9KSxcbiAgICAgICAgICBjYW5hcnkubWV0cmljVGltZVRvQ2F0YWxvZyh7IGxhYmVsOiAnVGltZSB0byBDYXRhbG9nJyB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgbGVmdEFubm90YXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29sb3I6ICcjZmYwMDAwJyxcbiAgICAgICAgICAgIGxhYmVsOiBgU0xBICgke3Zpc2liaWxpdHlTbGEudG9IdW1hblN0cmluZygpfSlgLFxuICAgICAgICAgICAgdmFsdWU6IHZpc2liaWxpdHlTbGEudG9TZWNvbmRzKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgfSksXG4gICAgICBuZXcgTG9nUXVlcnlXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgdGl0bGU6ICdTdHVjayBWZXJzaW9ucyAoc3RpbGwgbm90IHZpc2libGUgaW4gQ29uc3RydWN0SHViKScsXG4gICAgICAgIGxvZ0dyb3VwTmFtZXM6IFtjYW5hcnkubG9nR3JvdXBOYW1lXSxcbiAgICAgICAgcXVlcnlMaW5lczogW1xuICAgICAgICAgICdmaWVsZHMgQHRpbWVzdGFtcCwgQG1lc3NhZ2UnLFxuICAgICAgICAgICdmaWx0ZXIgQG1lc3NhZ2UgbGlrZSAvXCJEd2VsbFRpbWVcIi8nLFxuICAgICAgICAgICdmaWx0ZXIgdG9NaWxsaXMoQHRpbWVzdGFtcCkgPiAobm93KCkgLSA5MDApICogMTAwMCcsXG4gICAgICAgICAgYHBhcnNlIEBtZXNzYWdlICdcIlBhY2thZ2VWZXJzaW9uXCI6XCIqXCInIGFzIHZlcnNpb25gLFxuICAgICAgICAgIGBwYXJzZSBAbWVzc2FnZSAnXCJEd2VsbFRpbWVcIjoqLCcgYXMgZHdlbGxUaW1lU2VjYCxcbiAgICAgICAgICAnc3RhdHMgbWF4KGR3ZWxsVGltZVNlYykgYXMgbWF4RHdlbGxUaW1lU2VjIGJ5IHZlcnNpb24nLFxuICAgICAgICAgICdzb3J0IG1heER3ZWxsVGltZVNlYyBkZXNjJyxcbiAgICAgICAgXSxcbiAgICAgIH0pLFxuICAgIF07XG4gIH1cbn1cblxuLyoqXG4gKiBIb3cgb2Z0ZW4gJ3JhdGUnIGdvZXMgaW50byAnZHVyYXRpb24nIChyb3VuZGVkIHVwKVxuICovXG5mdW5jdGlvbiBob3dPZnRlbihyYXRlOiBEdXJhdGlvbiwgZHVyYXRpb246IER1cmF0aW9uKSB7XG4gIHJldHVybiBNYXRoLmNlaWwoZHVyYXRpb24udG9TZWNvbmRzKCkgLyByYXRlLnRvU2Vjb25kcygpKTtcbn1cbiJdfQ==
|
package/lib/package-tag/index.js
CHANGED
|
@@ -11,7 +11,7 @@ var TagConditionSource;
|
|
|
11
11
|
* Condition for applying a custom tag to a package.
|
|
12
12
|
*/
|
|
13
13
|
class TagCondition {
|
|
14
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.TagCondition", version: "0.4.
|
|
14
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.TagCondition", version: "0.4.526" };
|
|
15
15
|
/**
|
|
16
16
|
* Create an && condition which applies only when all condition arguments are
|
|
17
17
|
* true.
|
|
@@ -107,7 +107,7 @@ class TagConditionPredicate extends TagCondition {
|
|
|
107
107
|
*/
|
|
108
108
|
class TagConditionField {
|
|
109
109
|
field;
|
|
110
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.TagConditionField", version: "0.4.
|
|
110
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.TagConditionField", version: "0.4.526" };
|
|
111
111
|
constructor(field) {
|
|
112
112
|
this.field = field;
|
|
113
113
|
}
|
|
@@ -140,7 +140,7 @@ exports.TagConditionField = TagConditionField;
|
|
|
140
140
|
* Target the README of the package to dictate whether a tag is relevant.
|
|
141
141
|
*/
|
|
142
142
|
class TagConditionReadme {
|
|
143
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.TagConditionReadme", version: "0.4.
|
|
143
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.TagConditionReadme", version: "0.4.526" };
|
|
144
144
|
constructor() { }
|
|
145
145
|
/**
|
|
146
146
|
* Create a `readme.includes(value)` condition which applies if the README
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.PackageTagGroup = exports.FilterType = void 0;
|
|
4
4
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
5
5
|
class FilterType {
|
|
6
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.FilterType", version: "0.4.
|
|
6
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.FilterType", version: "0.4.526" };
|
|
7
7
|
static checkbox() {
|
|
8
8
|
return new FilterTypeCheckbox();
|
|
9
9
|
}
|
|
@@ -27,7 +27,7 @@ class FilterTypeCheckbox extends FilterType {
|
|
|
27
27
|
*/
|
|
28
28
|
class PackageTagGroup {
|
|
29
29
|
id;
|
|
30
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.PackageTagGroup", version: "0.4.
|
|
30
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.PackageTagGroup", version: "0.4.526" };
|
|
31
31
|
label;
|
|
32
32
|
tooltip;
|
|
33
33
|
filterType;
|
|
@@ -9,7 +9,7 @@ const fs_1 = require("fs");
|
|
|
9
9
|
*/
|
|
10
10
|
class PreloadFile {
|
|
11
11
|
data;
|
|
12
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.PreloadFile", version: "0.4.
|
|
12
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.PreloadFile", version: "0.4.526" };
|
|
13
13
|
/**
|
|
14
14
|
* Creates a PreloadFile instance from a filepath to load
|
|
15
15
|
*/
|
package/lib/s3/storage.js
CHANGED
|
@@ -42,7 +42,7 @@ const constructs_1 = require("constructs");
|
|
|
42
42
|
* Create s3 storage resources.
|
|
43
43
|
*/
|
|
44
44
|
class S3StorageFactory extends constructs_1.Construct {
|
|
45
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.S3StorageFactory", version: "0.4.
|
|
45
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.S3StorageFactory", version: "0.4.526" };
|
|
46
46
|
/**
|
|
47
47
|
* Retrieve or create the storage factory for the current scope.
|
|
48
48
|
*
|
package/lib/spdx-license.js
CHANGED
|
@@ -9,7 +9,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
|
9
9
|
*/
|
|
10
10
|
class SpdxLicense {
|
|
11
11
|
id;
|
|
12
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.SpdxLicense", version: "0.4.
|
|
12
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.SpdxLicense", version: "0.4.526" };
|
|
13
13
|
static _ALL = new Map();
|
|
14
14
|
//#region Individual SPDX Licenses
|
|
15
15
|
/**
|