construct-hub 0.4.522 → 0.4.524
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 +2 -2
- package/lib/backend/orchestration/index.js +3 -6
- package/lib/construct-hub.js +1 -1
- package/lib/package-sources/code-artifact.js +1 -1
- package/lib/package-sources/npmjs.js +3 -2
- package/lib/package-tag/index.js +3 -3
- package/lib/package-tag-group/index.js +2 -2
- package/lib/preload-file/index.js +1 -1
- package/lib/s3/storage.js +1 -1
- package/lib/spdx-license.js +1 -1
- package/package.json +1 -1
package/.jsii
CHANGED
|
@@ -22299,6 +22299,6 @@
|
|
|
22299
22299
|
"symbolId": "src/package-sources/npmjs:NpmJsProps"
|
|
22300
22300
|
}
|
|
22301
22301
|
},
|
|
22302
|
-
"version": "0.4.
|
|
22303
|
-
"fingerprint": "
|
|
22302
|
+
"version": "0.4.524",
|
|
22303
|
+
"fingerprint": "Vyt7Nt9RU4JCkyXs3heSb+jTcTOtLMDWQAEVJ2Elj3Y="
|
|
22304
22304
|
}
|
|
@@ -253,12 +253,9 @@ class Orchestration extends constructs_1.Construct {
|
|
|
253
253
|
.otherwise(new aws_stepfunctions_1.Succeed(this, 'Done')));
|
|
254
254
|
// @cdktn/provider-awscc is the biggest known package (3,979 submodules) and runs in ~15min,
|
|
255
255
|
// (aws-cdk-lib runs in ~8min).
|
|
256
|
-
// We give the task some extra allowance to complete.
|
|
256
|
+
// We give the task some generous extra allowance to complete.
|
|
257
257
|
// If the task exceeds the runtime, it's very likely that there is an issue with the task execution.
|
|
258
|
-
|
|
259
|
-
// The timeout value is deliberately set close to the expected execution time,
|
|
260
|
-
// to avoid an excessive cumulative runtime with retries and to not normalize longer than necessary runtime.
|
|
261
|
-
const transliteratorTimeout = aws_cdk_lib_1.Duration.minutes(18);
|
|
258
|
+
const transliteratorTimeout = aws_cdk_lib_1.Duration.minutes(30);
|
|
262
259
|
this.ecsCluster = new aws_ecs_1.Cluster(this, 'Cluster', {
|
|
263
260
|
containerInsights: true,
|
|
264
261
|
enableFargateCapacityProviders: true,
|
|
@@ -709,4 +706,4 @@ function stateMachineNameFrom(nodePath) {
|
|
|
709
706
|
// Poor man's replace all...
|
|
710
707
|
return nodePath.split(/[^a-z0-9+!@.()=_'-]+/i).join('.');
|
|
711
708
|
}
|
|
712
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFja2VuZC9vcmNoZXN0cmF0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUF1QztBQUN2QywrREFRb0M7QUFFcEMsaURBQXdEO0FBQ3hELHVEQUE0RDtBQUc1RCxpREFBcUU7QUFDckUscUVBWXVDO0FBQ3ZDLDJFQUE2RDtBQUM3RCwyQ0FBdUM7QUFDdkMsaUVBQTREO0FBQzVELG1FQUE4RDtBQUM5RCxpRkFBNEU7QUFDNUUsbUNBQTBDO0FBRTFDLCtDQUErRDtBQUMvRCxpREFBd0Q7QUFFeEQsbURBQWdEO0FBQ2hELGtFQUFvRTtBQUNwRSx3REFBb0Q7QUFFcEQsMERBQXFEO0FBRXJELG1EQU82QjtBQUM3QixzREFBK0U7QUFFL0UsTUFBTSx3Q0FBd0MsR0FDNUMsa0NBQWtDLENBQUM7QUFFckM7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsTUFBTSxxQkFBcUIsR0FBRztJQUM1QixXQUFXLEVBQUUsR0FBRztJQUNoQixRQUFRLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzdCLFdBQVcsRUFBRSxFQUFFO0NBQ2hCLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sNEJBQTRCLEdBQUc7SUFDbkMsUUFBUSxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM3Qix1RUFBdUU7SUFDdkUsV0FBVyxFQUFFLEdBQUc7SUFDaEIsV0FBVyxFQUFFLEVBQUU7Q0FDaEIsQ0FBQztBQTZERjs7R0FFRztBQUNILE1BQWEsYUFBYyxTQUFRLHNCQUFTO0lBQzFDOzs7T0FHRztJQUNhLFlBQVksQ0FBZ0I7SUFFNUM7OztPQUdHO0lBQ2EsZUFBZSxDQUFTO0lBRXhDOzs7T0FHRztJQUNhLGVBQWUsQ0FBWTtJQUUzQzs7O09BR0c7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Q0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHtcbiAgQ29tcGFyaXNvbk9wZXJhdG9yLFxuICBNYXRoRXhwcmVzc2lvbixcbiAgTWF0aEV4cHJlc3Npb25PcHRpb25zLFxuICBNZXRyaWMsXG4gIE1ldHJpY09wdGlvbnMsXG4gIFN0YXRpc3RpYyxcbiAgVHJlYXRNaXNzaW5nRGF0YSxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgU3VibmV0U2VsZWN0aW9uLCBWcGMsIElTZWN1cml0eUdyb3VwIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgeyBDbHVzdGVyLCBJQ2x1c3RlciB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lY3MnO1xuaW1wb3J0IHsgSUZ1bmN0aW9uLCBUcmFjaW5nIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBSZXRlbnRpb25EYXlzIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0IHsgSUJ1Y2tldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBJUXVldWUsIFF1ZXVlLCBRdWV1ZUVuY3J5cHRpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3FzJztcbmltcG9ydCB7XG4gIENob2ljZSxcbiAgQ29uZGl0aW9uLFxuICBJbnRlZ3JhdGlvblBhdHRlcm4sXG4gIElTdGF0ZU1hY2hpbmUsXG4gIEpzb25QYXRoLFxuICBNYXAsXG4gIFBhc3MsXG4gIFN0YXRlTWFjaGluZSxcbiAgU3VjY2VlZCxcbiAgRmFpbCxcbiAgVGFza0lucHV0LFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3RlcGZ1bmN0aW9ucyc7XG5pbXBvcnQgKiBhcyB0YXNrcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3RlcGZ1bmN0aW9ucy10YXNrcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IE5lZWRzQ2F0YWxvZ1VwZGF0ZSB9IGZyb20gJy4vbmVlZHMtY2F0YWxvZy11cGRhdGUnO1xuaW1wb3J0IHsgUmVkcml2ZVN0YXRlTWFjaGluZSB9IGZyb20gJy4vcmVkcml2ZS1zdGF0ZS1tYWNoaW5lJztcbmltcG9ydCB7IFJldHJ5VW5pbnN0YWxsYWJsZVBhY2thZ2VzIH0gZnJvbSAnLi9yZXRyeS11bmluc3RhbGxhYmxlLXBhY2thZ2VzJztcbmltcG9ydCB7IEFsYXJtU2V2ZXJpdHkgfSBmcm9tICcuLi8uLi9hcGknO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gJy4uLy4uL2NvZGVhcnRpZmFjdC9yZXBvc2l0b3J5JztcbmltcG9ydCB7IHNxc1F1ZXVlVXJsLCBzdGF0ZU1hY2hpbmVVcmwgfSBmcm9tICcuLi8uLi9kZWVwLWxpbmsnO1xuaW1wb3J0IHsgTW9uaXRvcmluZywgYWRkQWxhcm0gfSBmcm9tICcuLi8uLi9tb25pdG9yaW5nJztcbmltcG9ydCB7IE92ZXJ2aWV3RGFzaGJvYXJkIH0gZnJvbSAnLi4vLi4vb3ZlcnZpZXctZGFzaGJvYXJkJztcbmltcG9ydCB7IFJVTkJPT0tfVVJMIH0gZnJvbSAnLi4vLi4vcnVuYm9vay11cmwnO1xuaW1wb3J0IHsgZ3Jhdml0b25MYW1iZGFJZkF2YWlsYWJsZSB9IGZyb20gJy4uL19sYW1iZGEtYXJjaGl0ZWN0dXJlJztcbmltcG9ydCB7IENhdGFsb2dCdWlsZGVyIH0gZnJvbSAnLi4vY2F0YWxvZy1idWlsZGVyJztcbmltcG9ydCB7IERlbnlMaXN0IH0gZnJvbSAnLi4vZGVueS1saXN0JztcbmltcG9ydCB7IEVjc1Rhc2tNb25pdG9yIH0gZnJvbSAnLi4vZWNzLXRhc2stbW9uaXRvcic7XG5pbXBvcnQgeyBGZWVkQnVpbGRlciB9IGZyb20gJy4uL2ZlZWQtYnVpbGRlcic7XG5pbXBvcnQge1xuICBBU1NFTUJMWV9LRVlfU1VGRklYLFxuICBNRVRBREFUQV9LRVlfU1VGRklYLFxuICBQQUNLQUdFX0tFWV9TVUZGSVgsXG4gIFNUT1JBR0VfS0VZX1BSRUZJWCxcbiAgQ0FUQUxPR19LRVksXG4gIFVOUFJPQ0VTU0FCTEVfUEFDS0FHRV9FUlJPUl9OQU1FLFxufSBmcm9tICcuLi9zaGFyZWQvY29uc3RhbnRzJztcbmltcG9ydCB7IFRyYW5zbGl0ZXJhdG9yLCBUcmFuc2xpdGVyYXRvclZwY0VuZHBvaW50cyB9IGZyb20gJy4uL3RyYW5zbGl0ZXJhdG9yJztcblxuY29uc3QgUkVQUk9DRVNTX1BFUl9QQUNLQUdFX1NUQVRFX01BQ0hJTkVfTkFNRSA9XG4gICdSZXByb2Nlc3NEb2N1bWVudGF0aW9uUGVyUGFja2FnZSc7XG5cbi8qKlxuICogVGhpcyByZXRyeSBwb2xpY3kgaXMgdXNlZCBmb3IgYWxsIGl0ZW1zIGluIHRoZSBzdGF0ZSBtYWNoaW5lIGFuZCBhbGxvd3MgYW1wbGVcbiAqIHJldHJ5IGF0dGVtcHRzIGluIG9yZGVyIHRvIGF2b2lkIGhhdmluZyB0byBpbXBsZW1lbnQgYSBjdXN0b20gYmFja3ByZXNzdXJlXG4gKiBoYW5kbGluZyBtZWhhbmlzbS5cbiAqXG4gKiBUaGlzIGlzIG1lYW50IGFzIGEgc3RvcC1nYXAgdW50aWwgd2UgY2FuIGltcGxlbWVudCBhIG1vcmUgcmVzaWxpZW50IHN5c3RlbSxcbiAqIHdoaWNoIGxpa2VseSB3aWxsIGludm9sdmUgbW9yZSBTUVMgcXVldWVzLCBidXQgd2lsbCBwcm9iYWJseSBuZWVkIHRvIGJlXG4gKiB0aHJvdWdob3V0bHkgdmV0dGVkIGJlZm9yZSBpdCBpcyByb2xsZWQgb3V0IGV2ZXJ5d2hlcmUuXG4gKlxuICogQWZ0ZXIgMzAgYXR0ZW1wdHMsIGdpdmVuIHRoZSBwYXJhbWV0ZXJzLCB0aGUgbGFzdCBhdHRlbXB0IHdpbGwgd2FpdCBqdXN0XG4gKiB1bmRlciAxNiBtaW51dGVzLCB3aGljaCBzaG91bGQgYmUgZW5vdWdoIGZvciBjdXJyZW50bHkgcnVubmluZyBMYW1iZGFcbiAqIGZ1bmN0aW9ucyB0byBjb21wbGV0ZSAob3IgdGltZSBvdXQgYWZ0ZXIgMTUgbWludXRlcykuIFRoZSB0b3RhbCB0aW1lIHNwZW50XG4gKiB3YWl0aW5nIGJldHdlZW4gcmV0cmllcyBieSB0aGlzIHRpbWUgaXMganVzdCBvdmVyIDMgaG91cnMuIFRoaXMgaXMgYSBsb3Qgb2ZcbiAqIHRpbWUsIGJ1dCBpbiBleHRyZW1lIGJ1cnN0IHNpdHVhdGlvbnMgKGkuZTogcmVwcm9jZXNzaW5nIGV2ZXJ5dGhpbmcpLCB0aGlzXG4gKiBpcyBhY3R1YWxseSBhIGdvb2QgdGhpbmcuXG4gKi9cbmNvbnN0IFRIUk9UVExFX1JFVFJZX1BPTElDWSA9IHtcbiAgYmFja29mZlJhdGU6IDEuMSxcbiAgaW50ZXJ2YWw6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gIG1heEF0dGVtcHRzOiAzMCxcbn07XG5cbi8qKlxuICogVGhpcyByZXRyeSBwb2xpY3kgaXMgdXNlZCBmb3IgdHJhbnNsaXRlcmF0aW9uIHRhc2tzIGFuZCBhbGxvd3MgYW1wbGVcbiAqIHJldHJ5IGF0dGVtcHRzIGluIG9yZGVyIHRvIGF2b2lkIGhhdmluZyB0byBpbXBsZW1lbnQgYSBjdXN0b20gYmFja3ByZXNzdXJlXG4gKiBoYW5kbGluZyBtZWhhbmlzbS5cbiAqXG4gKiBUaGlzIGlzIG1lYW50IGFzIGEgc3RvcC1nYXAgdW50aWwgd2UgY2FuIGltcGxlbWVudCBhIG1vcmUgcmVzaWxpZW50IHN5c3RlbSxcbiAqIHdoaWNoIGxpa2VseSB3aWxsIGludm9sdmUgbW9yZSBTUVMgcXVldWVzLCBidXQgd2lsbCBwcm9iYWJseSBuZWVkIHRvIGJlXG4gKiB0aHJvdWdob3V0bHkgdmV0dGVkIGJlZm9yZSBpdCBpcyByb2xsZWQgb3V0IGV2ZXJ5d2hlcmUuXG4gKlxuICogVGhlIGludGVydmFsIGlzIGRldGVybWluZWQgYnkgdGhlIGV4ZWN1dGlvbiBkdXJhdGlvbiB3ZSBjdXJyZW50bHkgZXhwZWN0IGZyb20ganNpaS1kb2NnZW4uXG4gKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2Nka2xhYnMvanNpaS1kb2NnZW4vYmxvYi9tYWluL3Rlc3QvZG9jZ2VuL3ZpZXcvZG9jdW1lbnRhdGlvbi50ZXN0LnRzI0wxMy5cbiAqXG4gKiBBcHBseSBhIGJpdCBvZiBiYWNrb2ZmIGJlY2F1c2Ugb3RoZXJ3aXNlIGluIGNhc2VzIG9mIGNvbnRlbnRpb24gd2UncmUgaGFtbWVyaW5nIHRoZSBFQ1NcbiAqIGZyb250ZW5kIHNlcnZpY2UuXG4gKi9cbmNvbnN0IERPQ0dFTl9USFJPVFRMRV9SRVRSWV9QT0xJQ1kgPSB7XG4gIGludGVydmFsOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAvLyAxIG1pbnV0ZSAqIDEuMV40NSAvIGxuKDEuMSkgfj0gbWF4IDEzIGhvdXJzIHRvdGFsIHRpbWUgZm9yIGEgcGFja2FnZVxuICBiYWNrb2ZmUmF0ZTogMS4xLFxuICBtYXhBdHRlbXB0czogNDUsXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIE9yY2hlc3RyYXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgYnVja2V0IGluIHdoaWNoIHRvIHNvdXJjZSBhc3NlbWJsaWVzIHRvIHRyYW5zbGl0ZXJhdGUuXG4gICAqL1xuICByZWFkb25seSBidWNrZXQ6IElCdWNrZXQ7XG5cbiAgLyoqXG4gICAqIFRoZSBDb2RlQXJ0aWZhY3QgcmVnaXN0cnkgdG8gdXNlIGZvciByZWd1bGFyIG9wZXJhdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBjb2RlQXJ0aWZhY3Q/OiBSZXBvc2l0b3J5O1xuXG4gIC8qKlxuICAgKiBUaGUgbW9uaXRvcmluZyBoYW5kbGVyIHRvIHJlZ2lzdGVyIGFsYXJtcyB3aXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgbW9uaXRvcmluZzogTW9uaXRvcmluZztcblxuICAvKipcbiAgICogVGhlIG92ZXJ2aWV3IGRhc2hib2FyZCB0byByZWdpc3RlciBkYXNoYm9hcmRzIHdpdGguXG4gICAqL1xuICByZWFkb25seSBvdmVydmlld0Rhc2hib2FyZDogT3ZlcnZpZXdEYXNoYm9hcmQ7XG5cbiAgLyoqXG4gICAqIFRoZSBWUEMgaW4gd2hpY2ggdG8gcGxhY2UgbmV0d29ya2VkIHJlc291cmNlcy5cbiAgICovXG4gIHJlYWRvbmx5IHZwYz86IFZwYztcblxuICAvKipcbiAgICogVGhlIFZQQyBzdWJuZXQgc2VsZWN0aW9uIHRvIHVzZS5cbiAgICovXG4gIHJlYWRvbmx5IHZwY1N1Ym5ldHM/OiBTdWJuZXRTZWxlY3Rpb247XG5cbiAgLyoqXG4gICAqIFZQQyBlbmRwb2ludHMgdG8gdXNlIGZvciBpbnRlcmFjdGluZyB3aXRoIENvZGVBcnRpZmFjdCBhbmQgUzMuXG4gICAqL1xuICByZWFkb25seSB2cGNFbmRwb2ludHM/OiBUcmFuc2xpdGVyYXRvclZwY0VuZHBvaW50cztcblxuICAvKipcbiAgICogVlBDIFNlY3VyaXR5IGdyb3VwcyB0byBhc3NvY2lhdGUgd2l0aCB0aGUgRUNTIHRhc2tzLlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjU2VjdXJpdHlHcm91cHM/OiBJU2VjdXJpdHlHcm91cFtdO1xuXG4gIC8qKlxuICAgKiBIb3cgbG9uZyBzaG91bGQgZXhlY3V0aW9uIGxvZ3MgYmUgcmV0YWluZWQ/XG4gICAqXG4gICAqIEBkZWZhdWx0IFJldGVudGlvbkRheXMuVEVOX1lFQVJTXG4gICAqL1xuICByZWFkb25seSBsb2dSZXRlbnRpb24/OiBSZXRlbnRpb25EYXlzO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVueSBsaXN0LlxuICAgKi9cbiAgcmVhZG9ubHkgZGVueUxpc3Q6IERlbnlMaXN0O1xuXG4gIC8qKlxuICAgKiBUaGUgY29uc3RydWN0IHRoYXQgZ2VuZXJhdGVzIFJTUy9BVE9NIGZlZWRcbiAgICovXG4gIHJlYWRvbmx5IGZlZWRCdWlsZGVyOiBGZWVkQnVpbGRlcjtcbn1cblxuLyoqXG4gKiBPcmNoZXN0cmF0ZXMgdGhlIGJhY2tlbmQgcHJvY2Vzc2luZyB0YXNrcyB1c2luZyBhIFN0ZXBGdW5jdGlvbnMgU3RhdGUgTWFjaGluZS5cbiAqL1xuZXhwb3J0IGNsYXNzIE9yY2hlc3RyYXRpb24gZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogVGhlIHN0YXRlIG1hY2hpbmUgdGhhdCBzaG91bGQgYmUgdHJpZ2dlcmVkIGZvciBzdGFydGluZyBiYWNrLWVuZCBwcm9jZXNzaW5nXG4gICAqIGZvciBhIG5ld2x5IGRpc2NvdmVyZWQgcGFja2FnZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzdGF0ZU1hY2hpbmU6IElTdGF0ZU1hY2hpbmU7XG5cbiAgLyoqXG4gICAqIFRoZSBkZWFkIGxldHRlciBxdWV1ZSBmcm9tIHRoZSBzdGF0ZSBtYWNoaW5lLiBJbnB1dHMgYW5kIGVycm9ycyBhcmUgd3JpdHRlblxuICAgKiB0aGVyZSBpZiB0aGUgc3RhdGUgbWFjaGluZSBmYWlscy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZWFkTGV0dGVyUXVldWU6IElRdWV1ZTtcblxuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIG9wZXJhdG9ycyBjYW4gdXNlIHRvIHJlZHJpdmUgbWVzc2FnZXMgZnJvbSB0aGUgZGVhZCBsZXR0ZXJcbiAgICogcXVldWUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVkcml2ZUZ1bmN0aW9uOiBJRnVuY3Rpb247XG5cbiAgLyoqXG4gICAqIFRoZSBmdW5jdGlvbiBvcGVyYXRvcnMgY2FuIHVzZSB0byByZXByb2Nlc3MgYWxsIGluZGV4ZWQgcGFja2FnZXMgdGhyb3VnaFxuICAgKiB0aGUgYmFja2VuZCBkYXRhIHBpcGVsaW5lLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJlZ2VuZXJhdGVBbGxEb2N1bWVudGF0aW9uOiBJU3RhdGVNYWNoaW5lO1xuXG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gb3BlcmF0b3JzIGNhbiB1c2UgdG8gcmVwcm9jZXNzIGEgc3BlY2lmaWMgcGFja2FnZSB2ZXJzaW9uXG4gICAqIHRocm91Z2ggdGhlIGJhY2tlbmQgZGF0YSBwaXBlbGluZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZWdlbmVyYXRlQWxsRG9jdW1lbnRhdGlvblBlclBhY2thZ2U6IElTdGF0ZU1hY2hpbmU7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGF0ZSBtYWNoaW5lIG9wZXJhdG9ycyBjYW4gdXNlIHRvIHJldHJ5IHByb2Nlc3NpbmcgdW5pbnN0YWxsYWJsZSBwYWNrYWdlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXRyeVVuaW5zdGFsbGFibGVQYWNrYWdlczogSVN0YXRlTWFjaGluZTtcblxuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIHRoYXQgYnVpbGRzIHRoZSBjYXRhbG9nLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNhdGFsb2dCdWlsZGVyOiBDYXRhbG9nQnVpbGRlcjtcblxuICAvKipcbiAgICogVGhlIEVDUyBjbHVzdGVyIHVzZWQgdG8gcnVuIHRhc2tzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGVjc0NsdXN0ZXI6IElDbHVzdGVyO1xuXG4gIC8qKlxuICAgKiBUaGUgRUNTIHRhc2sgbW9uaXRvciB0aGF0IHdhdGNoZXMgb3ZlciB0aGUgYGVjc0NsdXN0ZXJgLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGVjc1Rhc2tNb25pdG9yOiBFY3NUYXNrTW9uaXRvcjtcblxuICAvKipcbiAgICogVGhlIHRyYW5zbGl0ZXJhdG9yIHVzZWQgYnkgdGhpcyBvcmNoZXN0cmF0aW9uIHdvcmtmbG93LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRyYW5zbGl0ZXJhdG9yOiBUcmFuc2xpdGVyYXRvcjtcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE9yY2hlc3RyYXRpb25Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLmRlYWRMZXR0ZXJRdWV1ZSA9IG5ldyBRdWV1ZSh0aGlzLCAnRExRJywge1xuICAgICAgZW5jcnlwdGlvbjogUXVldWVFbmNyeXB0aW9uLktNU19NQU5BR0VELFxuICAgICAgcmV0ZW50aW9uUGVyaW9kOiBEdXJhdGlvbi5kYXlzKDE0KSxcbiAgICAgIHZpc2liaWxpdHlUaW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDE1KSxcbiAgICB9KTtcblxuICAgIHByb3BzLm1vbml0b3JpbmcuYWRkTG93U2V2ZXJpdHlBbGFybShcbiAgICAgICdCYWNrZW5kIE9yY2hlc3RyYXRpb24gRGVhZC1MZXR0ZXIgUXVldWUgaXMgbm90IGVtcHR5JyxcbiAgICAgIG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICAgIGV4cHJlc3Npb246ICdtMSArIG0yJyxcbiAgICAgICAgbGFiZWw6ICdEZWFkLUxldHRlciBRdWV1ZSBub3QgZW1wdHknLFxuICAgICAgICB1c2luZ01ldHJpY3M6IHtcbiAgICAgICAgICBtMTogdGhpcy5kZWFkTGV0dGVyUXVldWUubWV0cmljQXBwcm94aW1hdGVOdW1iZXJPZk1lc3NhZ2VzVmlzaWJsZSh7XG4gICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgbTI6IHRoaXMuZGVhZExldHRlclF1ZXVlLm1ldHJpY0FwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlc05vdFZpc2libGUoe1xuICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgfSkuY3JlYXRlQWxhcm0odGhpcywgJ0RMUUFsYXJtJywge1xuICAgICAgICBhbGFybU5hbWU6IGAke3RoaXMuZGVhZExldHRlclF1ZXVlLm5vZGUucGF0aH0vTm90RW1wdHlgLFxuICAgICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgJ0JhY2tlbmQgb3JjaGVzdHJhdGlvbiBkZWFkLWxldHRlciBxdWV1ZSBpcyBub3QgZW1wdHkuJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICBgUnVuQm9vazogJHtSVU5CT09LX1VSTH1gLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIGBEaXJlY3QgbGluayB0byBxdWV1ZTogJHtzcXNRdWV1ZVVybCh0aGlzLmRlYWRMZXR0ZXJRdWV1ZSl9YCxcbiAgICAgICAgICAnV2FybmluZzogU3RhdGUgTWFjaGluZXMgZXhlY3V0aW9ucyB0aGF0IHNlbnQgbWVzc2FnZXMgdG8gdGhlIERMUSB3aWxsIG5vdCBzaG93IGFzIFwiZmFpbGVkXCIuJyxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOlxuICAgICAgICAgIENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogMixcbiAgICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgICAvLyBTUVMgZG9lcyBub3QgZW1pdCBtZXRyaWNzIGlmIHRoZSBxdWV1ZSBoYXMgYmVlbiBlbXB0eSBmb3IgYSB3aGlsZSwgd2hpY2ggaXMgR09PRC5cbiAgICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5OT1RfQlJFQUNISU5HLFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgY29uc3Qgc2VuZFRvRGVhZExldHRlclF1ZXVlID0gbmV3IHRhc2tzLlNxc1NlbmRNZXNzYWdlKFxuICAgICAgdGhpcyxcbiAgICAgICdTZW5kIHRvIERlYWQgTGV0dGVyIFF1ZXVlJyxcbiAgICAgIHtcbiAgICAgICAgbWVzc2FnZUJvZHk6IFRhc2tJbnB1dC5mcm9tSnNvblBhdGhBdCgnJCcpLFxuICAgICAgICBxdWV1ZTogdGhpcy5kZWFkTGV0dGVyUXVldWUsXG4gICAgICAgIHJlc3VsdFBhdGg6IEpzb25QYXRoLkRJU0NBUkQsXG4gICAgICB9XG4gICAgKS5uZXh0KG5ldyBGYWlsKHRoaXMsICdTZW50IHRvIERMUScpKTtcblxuICAgIGNvbnN0IGlnbm9yZSA9IG5ldyBQYXNzKHRoaXMsICdJZ25vcmUnKTtcblxuICAgIHRoaXMuY2F0YWxvZ0J1aWxkZXIgPSBuZXcgQ2F0YWxvZ0J1aWxkZXIodGhpcywgJ0NhdGFsb2dCdWlsZGVyJywgcHJvcHMpO1xuXG4gICAgY29uc3QgYWRkVG9DYXRhbG9nID0gbmV3IHRhc2tzLkxhbWJkYUludm9rZSh0aGlzLCAnQWRkIHRvIGNhdGFsb2cuanNvbicsIHtcbiAgICAgIGxhbWJkYUZ1bmN0aW9uOiB0aGlzLmNhdGFsb2dCdWlsZGVyLmZ1bmN0aW9uLFxuICAgICAgcmVzdWx0UGF0aDogJyQuY2F0YWxvZ0J1aWxkZXJPdXRwdXQnLFxuICAgICAgcmVzdWx0U2VsZWN0b3I6IHtcbiAgICAgICAgJ0VUYWcuJCc6ICckLlBheWxvYWQuRVRhZycsXG4gICAgICAgICdWZXJzaW9uSWQuJCc6ICckLlBheWxvYWQuVmVyc2lvbklkJyxcbiAgICAgIH0sXG4gICAgfSlcbiAgICAgIC8vIFRoaXMgaGFzIGEgY29uY3VycmVuY3kgb2YgMSwgc28gd2Ugd2FudCB0byBhZ2dyZXNzaXZlbHkgcmV0cnkgYmVpbmcgdGhyb3R0bGVkIGhlcmUuXG4gICAgICAuYWRkUmV0cnkoe1xuICAgICAgICBlcnJvcnM6IFsnTGFtYmRhLlRvb01hbnlSZXF1ZXN0c0V4Y2VwdGlvbiddLFxuICAgICAgICAuLi5USFJPVFRMRV9SRVRSWV9QT0xJQ1ksXG4gICAgICB9KVxuICAgICAgLmFkZENhdGNoKHNlbmRUb0RlYWRMZXR0ZXJRdWV1ZSwge1xuICAgICAgICBlcnJvcnM6IFsnTGFtYmRhLlRvb01hbnlSZXF1ZXN0c0V4Y2VwdGlvbiddLFxuICAgICAgICByZXN1bHRQYXRoOiAnJC5lcnJvcicsXG4gICAgICB9KVxuICAgICAgLmFkZENhdGNoKHNlbmRUb0RlYWRMZXR0ZXJRdWV1ZSwge1xuICAgICAgICBlcnJvcnM6IFsnU3RhdGVzLlRhc2tGYWlsZWQnXSxcbiAgICAgICAgcmVzdWx0UGF0aDogJyQuZXJyb3InLFxuICAgICAgfSlcbiAgICAgIC5hZGRDYXRjaChzZW5kVG9EZWFkTGV0dGVyUXVldWUsIHtcbiAgICAgICAgZXJyb3JzOiBbJ1N0YXRlcy5BTEwnXSxcbiAgICAgICAgcmVzdWx0UGF0aDogJyQuZXJyb3InLFxuICAgICAgfSk7XG5cbiAgICBjb25zdCBuZWVkc0NhdGFsb2dVcGRhdGVGdW5jdGlvbiA9IG5ldyBOZWVkc0NhdGFsb2dVcGRhdGUoXG4gICAgICB0aGlzLFxuICAgICAgJ05lZWRzQ2F0YWxvZ1VwZGF0ZScsXG4gICAgICB7XG4gICAgICAgIGFyY2hpdGVjdHVyZTogZ3Jhdml0b25MYW1iZGFJZkF2YWlsYWJsZSh0aGlzKSxcbiAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgJ1tDb25zdHJ1Y3RIdWIvT3JjaGVzdHJhdGlvbi9OZWVkc0NhdGFsb2dVcGRhdGVdIERldGVybWluZXMgd2hldGhlciBhIHBhY2thZ2UgdmVyc2lvbiByZXF1aXJlcyBhIGNhdGFsb2cgdXBkYXRlJyxcbiAgICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICBDQVRBTE9HX0JVQ0tFVF9OQU1FOiBwcm9wcy5idWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgICBDQVRBTE9HX09CSkVDVF9LRVk6IENBVEFMT0dfS0VZLFxuICAgICAgICB9LFxuICAgICAgICBtZW1vcnlTaXplOiAxXzAyNCxcbiAgICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIH1cbiAgICApO1xuICAgIHByb3BzLmJ1Y2tldC5ncmFudFJlYWQobmVlZHNDYXRhbG9nVXBkYXRlRnVuY3Rpb24pO1xuXG4gICAgLy8gQ2hlY2sgd2hldGhlciB0aGUgY2F0YWxvZyBuZWVkcyB1cGRhdGluZy4gSWYgc28sIHRyaWdnZXIgYWRkVG9DYXRhbG9nLlxuICAgIGNvbnN0IGFkZFRvQ2F0YWxvZ0lmTmVlZGVkID0gbmV3IHRhc2tzLkxhbWJkYUludm9rZShcbiAgICAgIHRoaXMsXG4gICAgICAnQ2hlY2sgd2hldGhlciBjYXRhbG9nIG5lZWRzIHVkcGF0aW5nJyxcbiAgICAgIHtcbiAgICAgICAgbGFtYmRhRnVuY3Rpb246IG5lZWRzQ2F0YWxvZ1VwZGF0ZUZ1bmN0aW9uLFxuICAgICAgICBwYXlsb2FkUmVzcG9uc2VPbmx5OiB0cnVlLFxuICAgICAgICByZXN1bHRQYXRoOiAnJC5jYXRhbG9nTmVlZHNVcGRhdGluZycsXG4gICAgICB9XG4gICAgKVxuICAgICAgLmFkZFJldHJ5KHtcbiAgICAgICAgZXJyb3JzOiBbXG4gICAgICAgICAgJ0xhbWJkYS5Ub29NYW55UmVxdWVzdHNFeGNlcHRpb24nLFxuICAgICAgICAgICdMYW1iZGEuVW5rbm93bicsIC8vIGhhcHBlbnMgd2hlbiBhIGxhbWJkYSB0aW1lcyBvdXQuXG4gICAgICAgIF0sXG4gICAgICAgIC4uLlRIUk9UVExFX1JFVFJZX1BPTElDWSxcbiAgICAgIH0pXG4gICAgICAuYWRkQ2F0Y2goc2VuZFRvRGVhZExldHRlclF1ZXVlLCB7XG4gICAgICAgIGVycm9yczogWydMYW1iZGEuVG9vTWFueVJlcXVlc3RzRXhjZXB0aW9uJywgJ0xhbWJkYS5Vbmtub3duJ10sXG4gICAgICAgIHJlc3VsdFBhdGg6ICckLmVycm9yJyxcbiAgICAgIH0pXG4gICAgICAuYWRkQ2F0Y2goc2VuZFRvRGVhZExldHRlclF1ZXVlLCB7XG4gICAgICAgIGVycm9yczogWydTdGF0ZXMuVGFza0ZhaWxlZCddLFxuICAgICAgICByZXN1bHRQYXRoOiAnJC5lcnJvcicsXG4gICAgICB9KVxuICAgICAgLmFkZENhdGNoKHNlbmRUb0RlYWRMZXR0ZXJRdWV1ZSwge1xuICAgICAgICBlcnJvcnM6IFsnU3RhdGVzLkFMTCddLFxuICAgICAgICByZXN1bHRQYXRoOiAnJC5lcnJvcicsXG4gICAgICB9KVxuICAgICAgLm5leHQoXG4gICAgICAgIG5ldyBDaG9pY2UodGhpcywgJ0lzIGNhdGFsb2cgdXBkYXRlIG5lZWRlZD8nKVxuICAgICAgICAgIC53aGVuKFxuICAgICAgICAgICAgQ29uZGl0aW9uLmJvb2xlYW5FcXVhbHMoJyQuY2F0YWxvZ05lZWRzVXBkYXRpbmcnLCB0cnVlKSxcbiAgICAgICAgICAgIGFkZFRvQ2F0YWxvZ1xuICAgICAgICAgIClcbiAgICAgICAgICAub3RoZXJ3aXNlKG5ldyBTdWNjZWVkKHRoaXMsICdEb25lJykpXG4gICAgICApO1xuXG4gICAgLy8gQGNka3RuL3Byb3ZpZGVyLWF3c2NjIGlzIHRoZSBiaWdnZXN0IGtub3duIHBhY2thZ2UgKDMsOTc5IHN1Ym1vZHVsZXMpIGFuZCBydW5zIGluIH4xNW1pbixcbiAgICAvLyAoYXdzLWNkay1saWIgcnVucyBpbiB+OG1pbikuXG4gICAgLy8gV2UgZ2l2ZSB0aGUgdGFzayBzb21lIGV4dHJhIGFsbG93YW5jZSB0byBjb21wbGV0ZS5cbiAgICAvLyBJZiB0aGUgdGFzayBleGNlZWRzIHRoZSBydW50aW1lLCBpdCdzIHZlcnkgbGlrZWx5IHRoYXQgdGhlcmUgaXMgYW4gaXNzdWUgd2l0aCB0aGUgdGFzayBleGVjdXRpb24uXG4gICAgLy9cbiAgICAvLyBUaGUgdGltZW91dCB2YWx1ZSBpcyBkZWxpYmVyYXRlbHkgc2V0IGNsb3NlIHRvIHRoZSBleHBlY3RlZCBleGVjdXRpb24gdGltZSxcbiAgICAvLyB0byBhdm9pZCBhbiBleGNlc3NpdmUgY3VtdWxhdGl2ZSBydW50aW1lIHdpdGggcmV0cmllcyBhbmQgdG8gbm90IG5vcm1hbGl6ZSBsb25nZXIgdGhhbiBuZWNlc3NhcnkgcnVudGltZS5cbiAgICBjb25zdCB0cmFuc2xpdGVyYXRvclRpbWVvdXQgPSBEdXJhdGlvbi5taW51dGVzKDE4KTtcblxuICAgIHRoaXMuZWNzQ2x1c3RlciA9IG5ldyBDbHVzdGVyKHRoaXMsICdDbHVzdGVyJywge1xuICAgICAgY29udGFpbmVySW5zaWdodHM6IHRydWUsXG4gICAgICBlbmFibGVGYXJnYXRlQ2FwYWNpdHlQcm92aWRlcnM6IHRydWUsXG4gICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICB9KTtcbiAgICB0aGlzLmVjc1Rhc2tNb25pdG9yID0gbmV3IEVjc1Rhc2tNb25pdG9yKHRoaXMuZWNzQ2x1c3RlciwgJ01vbml0b3InLCB7XG4gICAgICBjbHVzdGVyOiB0aGlzLmVjc0NsdXN0ZXIsXG4gICAgICB0aW1lb3V0OiB0cmFuc2xpdGVyYXRvclRpbWVvdXQucGx1cyhEdXJhdGlvbi5taW51dGVzKDEwKSksXG4gICAgfSk7XG5cbiAgICB0aGlzLnRyYW5zbGl0ZXJhdG9yID0gbmV3IFRyYW5zbGl0ZXJhdG9yKHRoaXMsICdUcmFuc2xpdGVyYXRvcicsIHByb3BzKTtcblxuICAgIGNvbnN0IGRlZmluaXRpb24gPSBuZXcgUGFzcyh0aGlzLCAnVHJhY2sgRXhlY3V0aW9uIEluZm9zJywge1xuICAgICAgaW5wdXRQYXRoOiAnJCQuRXhlY3V0aW9uJyxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgJ0lkLiQnOiAnJC5JZCcsXG4gICAgICAgICdOYW1lLiQnOiAnJC5OYW1lJyxcbiAgICAgICAgJ1JvbGVBcm4uJCc6ICckLlJvbGVBcm4nLFxuICAgICAgICAnU3RhcnRUaW1lLiQnOiAnJC5TdGFydFRpbWUnLFxuICAgICAgfSxcbiAgICAgIHJlc3VsdFBhdGg6ICckLiRUYXNrRXhlY3V0aW9uJyxcbiAgICB9KVxuICAgICAgLm5leHQoXG4gICAgICAgIG5ldyBQYXNzKHRoaXMsICdQcmVwYXJlIGRvYy1nZW4gRUNTIENvbW1hbmQnLCB7XG4gICAgICAgICAgcGFyYW1ldGVyczogeyAnY29tbWFuZC4kJzogJ1N0YXRlcy5BcnJheShTdGF0ZXMuSnNvblRvU3RyaW5nKCQpKScgfSxcbiAgICAgICAgICByZXN1bHRQYXRoOiAnJC5kb2NHZW4nLFxuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLm5leHQoXG4gICAgICAgIHRoaXMudHJhbnNsaXRlcmF0b3JcbiAgICAgICAgICAuY3JlYXRlRWNzUnVuVGFzayh0aGlzLCAnR2VuZXJhdGUgZG9jcycsIHtcbiAgICAgICAgICAgIGNsdXN0ZXI6IHRoaXMuZWNzQ2x1c3RlcixcbiAgICAgICAgICAgIGlucHV0UGF0aDogJyQuZG9jR2VuLmNvbW1hbmQnLFxuICAgICAgICAgICAgLy8gdGhlIG91dHB1dCBmcm9tIHRoZSB0cmFuc2xpdGVyYXRvciB0YXNrIGlzIG5vdCB1c2VkXG4gICAgICAgICAgICAvLyB3ZSBqdXN0IG5lZWQgdG8ga25vdyBpZiBpdCBzdWNjZWVkZWRcbiAgICAgICAgICAgIHJlc3VsdFBhdGg6IEpzb25QYXRoLkRJU0NBUkQsXG4gICAgICAgICAgICAvLyBhd3MtY2RrLWxpYiBzdWNjZWVkcyBpbiByb3VnaGx5IDEgaG91ciwgc28gdGhpcyBzaG91bGQgZ2l2ZSB1c1xuICAgICAgICAgICAgLy8gZW5vdWdoIG9mIGEgYnVmZmVyIGFuZCBwcm9iYWJseSBhY2NvdW50IGZvciBhbGwgb3RoZXIgbGlicmFyaWVzIG91dCB0aGVyZS5cbiAgICAgICAgICAgIHRpbWVvdXQ6IHRyYW5zbGl0ZXJhdG9yVGltZW91dCxcbiAgICAgICAgICAgIHZwY1N1Ym5ldHM6IHByb3BzLnZwY1N1Ym5ldHMsXG4gICAgICAgICAgICBzZWN1cml0eUdyb3VwczogcHJvcHMudnBjU2VjdXJpdHlHcm91cHMsXG4gICAgICAgICAgICAvLyBUaGUgdGFzayBjb2RlIHNlbmRzIGEgaGVhcnRiZWF0IGJhY2sgZXZlcnkgbWludXRlLCBidXQgaW4gcmFyZVxuICAgICAgICAgICAgLy8gY2FzZXMgdGhlIGZpcnN0IGhlYXJ0YmVhdCBtYXkgdGFrZSBhIHdoaWxlIHRvIGNvbWUgYmFjayBkdWUgdG9cbiAgICAgICAgICAgIC8vIHRoZSB0aW1lIGl0IHRha2VzIHRvIHByb3Zpc2lvbiB0aGUgdGFzayBpbiB0aGUgY2x1c3Rlciwgc28gd2VcbiAgICAgICAgICAgIC8vIGdpdmUgYSBtb3JlIGdlbmVyb3VzIGJ1ZmZlciBoZXJlLlxuICAgICAgICAgICAgaGVhcnRiZWF0OiBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLy8gRG8gbm90IHJldHJ5IE5vU3BhY2VMZWZ0T25EZXZpY2UgZXJyb3JzLCB0aGVzZSBhcmUgdHlwaWNhbGx5IG5vdCB0cmFuc2llbnQuXG4gICAgICAgICAgLmFkZFJldHJ5KHtcbiAgICAgICAgICAgIGVycm9yczogWydqc2lpLWRvY2dlbi5Ob1NwYWNlTGVmdE9uRGV2aWNlJ10sXG4gICAgICAgICAgICBtYXhBdHRlbXB0czogMCxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5hZGRSZXRyeSh7XG4gICAgICAgICAgICBlcnJvcnM6IFtcbiAgICAgICAgICAgICAgJ0VDUy5BbWF6b25FQ1NFeGNlcHRpb24nLCAvLyBUYXNrIGZhaWxlZCBzdGFydGluZywgdXN1YWxseSBkdWUgdG8gdGhyb3R0bGUgLyBvdXQgb2YgY2FwYWNpdHlcbiAgICAgICAgICAgICAgJ0VDUy5JbnZhbGlkUGFyYW1ldGVyRXhjZXB0aW9uJywgLy8gVGhpcyBpcyByZXR1cm5lZCB3aGVuIEVDUyBnZXRzIHRocm90dGxlZCB3aGVuIHRyeWluZyB0byBhY2Nlc3MgVlBDL1NHcy5cbiAgICAgICAgICAgICAgJ2pzaWktZG9jZ2VuLk5wbUVycm9yLkU0MjknLCAvLyBIVFRQIDQyOSAoXCJUb28gTWFueSBSZXF1ZXN0c1wiKSBmcm9tIENvZGVBcnRpZmFjdCdzIFMzIGJ1Y2tldFxuICAgICAgICAgICAgICAnanNpaS1jb2RnZW4uTnBtRXJyb3IuRVBST1RPJywgLy8gU3BvcmFkaWMgVExTIG5lZ290aWF0aW9uIGZhaWx1cmVzIHdlIHNlZSBpbiBsb2dzLCB0cmFuc2llbnRcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAuLi5ET0NHRU5fVEhST1RUTEVfUkVUUllfUE9MSUNZLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmFkZFJldHJ5KHtcbiAgICAgICAgICAgIGVycm9yczogWydqc2lpLWRvY2dlbi5OcG1FcnJvci5FVEFSR0VUJ10sIC8vIFNlZW4gd2hlbiBkZXBlbmRlbmNpZXMgYXJlbid0IGF2YWlsYWJsZSB5ZXRcbiAgICAgICAgICAgIC8vIFdlJ2xsIHdhaXQgbG9uZ2VyIGJldHdlZW4gcmV0cmllcy4gVGhpcyBpcyB0byBhY2NvdW50IGZvciBDb2RlQXJ0aWZhY3QncyBsYWcgYmVoaW5kIG5wbVxuICAgICAgICAgICAgYmFja29mZlJhdGU6IDIsXG4gICAgICAgICAgICBpbnRlcnZhbDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgICAgIG1heEF0dGVtcHRzOiAzLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmFkZFJldHJ5KHtcbiAgICAgICAgICAgIC8vIFRoZSB0YXNrIGhhcyBmYWlsZWQgZm9yIGFuIHVua25vd24gcmVhc29uLCBvciBzdG9wcGVkIHJlc3BvbmRpbmcsIG9yIGlzIGp1c3QgdGFraW5nIGEgbG9uZyB0aW1lIHRvIHByb3Zpc2lvblxuICAgICAgICAgICAgLy8gV2Ugd2lsbCBhdHRlbXB0IGEgY291cGxlIG9mIHJldHJpZXMgd2l0aCBzb21lIHRpbWUgaW4gYmV0d2Vlbi5cbiAgICAgICAgICAgIC8vIFRoaXMgYWxzbyBjb3ZlcnMgdGhlICdTdGF0ZXMuVGltZW91dCcgZXJyb3IsIGJ1dCB3ZSBhcmUgbm90IGdpdmluZyB0aW1lb3V0IGVycm9yIGFueSBzcGVjaWFsIHRyZWF0bWVudC5cbiAgICAgICAgICAgIC8vIElmIHRoZSB0YXNrIHRpbWVvdXQgaXMgcmVhY2hlZCwgaXQgaXMgbW9zdCBsaWtlbHkgYW4gaXNzdWUgd2l0aCB0aGUgdGFzayB0aGF0IG5lZWRzIGludmVzdGlnYXRpb24uXG4gICAgICAgICAgICBiYWNrb2ZmUmF0ZTogMixcbiAgICAgICAgICAgIGludGVydmFsOiBEdXJhdGlvbi5zZWNvbmRzKDMwKSxcbiAgICAgICAgICAgIG1heEF0dGVtcHRzOiAyLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmFkZENhdGNoKGlnbm9yZSwge1xuICAgICAgICAgICAgZXJyb3JzOiBbVU5QUk9DRVNTQUJMRV9QQUNLQUdFX0VSUk9SX05BTUVdLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmFkZENhdGNoKHNlbmRUb0RlYWRMZXR0ZXJRdWV1ZSwge1xuICAgICAgICAgICAgZXJyb3JzOiBbJ1N0YXRlcy5UaW1lb3V0J10sXG4gICAgICAgICAgICByZXN1bHRQYXRoOiAnJC5lcnJvcicsXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuYWRkQ2F0Y2goc2VuZFRvRGVhZExldHRlclF1ZXVlLCB7XG4gICAgICAgICAgICBlcnJvcnM6IFsnRUNTLkFtYXpvbkVDU0V4Y2VwdGlvbicsICdFQ1MuSW52YWxpZFBhcmFtZXRlckV4Y2VwdGlvbiddLFxuICAgICAgICAgICAgcmVzdWx0UGF0aDogJyQuZXJyb3InLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmFkZENhdGNoKHNlbmRUb0RlYWRMZXR0ZXJRdWV1ZSwge1xuICAgICAgICAgICAgZXJyb3JzOiBbJ1N0YXRlcy5UYXNrRmFpbGVkJ10sXG4gICAgICAgICAgICByZXN1bHRQYXRoOiAnJC5lcnJvcicsXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuYWRkQ2F0Y2goc2VuZFRvRGVhZExldHRlclF1ZXVlLCB7XG4gICAgICAgICAgICBlcnJvcnM6IFsnU3RhdGVzLkFMTCddLFxuICAgICAgICAgICAgcmVzdWx0UGF0aDogJyQuZXJyb3InLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLm5leHQoYWRkVG9DYXRhbG9nSWZOZWVkZWQpXG4gICAgICApO1xuXG4gICAgdGhpcy5zdGF0ZU1hY2hpbmUgPSBuZXcgU3RhdGVNYWNoaW5lKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIGRlZmluaXRpb24sXG4gICAgICBzdGF0ZU1hY2hpbmVOYW1lOiBzdGF0ZU1hY2hpbmVOYW1lRnJvbSh0aGlzLm5vZGUucGF0aCksXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5kYXlzKDEpLCAvLyBBbXBsZSB0aW1lIGZvciByZXRyaWVzLCBldGMuLi5cbiAgICAgIHRyYWNpbmdFbmFibGVkOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLnZwYykge1xuICAgICAgLy8gRW5zdXJlIHRoZSBTdGF0ZSBNYWNoaW5lIGRvZXMgbm90IGdldCB0byBydW4gYmVmb3JlIHRoZSBWUEMgY2FuIGJlIHVzZWQuXG4gICAgICB0aGlzLnN0YXRlTWFjaGluZS5ub2RlLmFkZERlcGVuZGVuY3koXG4gICAgICAgIHByb3BzLnZwYy5pbnRlcm5ldENvbm5lY3Rpdml0eUVzdGFibGlzaGVkXG4gICAgICApO1xuICAgIH1cblxuICAgIGFkZEFsYXJtKFxuICAgICAgJ0JhY2tlbmQgT3JjaGVzdHJhdGlvbiBGYWlsZWQnLFxuICAgICAgdGhpcy5zdGF0ZU1hY2hpbmVcbiAgICAgICAgLm1ldHJpY0ZhaWxlZCgpXG4gICAgICAgIC5jcmVhdGVBbGFybSh0aGlzLCAnT3JjaGVzdHJhdGlvbkZhaWxlZCcsIHtcbiAgICAgICAgICBhbGFybU5hbWU6IGAke3RoaXMuc3RhdGVNYWNoaW5lLm5vZGUucGF0aH0vJHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVNYWNoaW5lLm1ldHJpY0ZhaWxlZCgpLm1ldHJpY05hbWVcbiAgICAgICAgICB9YCxcbiAgICAgICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgICAnQmFja2VuZCBvcmNoZXN0cmF0aW9uIGZhaWxlZCEnLFxuICAgICAgICAgICAgJycsXG4gICAgICAgICAgICBgUnVuQm9vazogJHtSVU5CT09LX1VSTH1gLFxuICAgICAgICAgICAgJycsXG4gICAgICAgICAgICBgRGlyZWN0IGxpbmsgdG8gc3RhdGUgbWFjaGluZTogJHtzdGF0ZU1hY2hpbmVVcmwoXG4gICAgICAgICAgICAgIHRoaXMuc3RhdGVNYWNoaW5lXG4gICAgICAgICAgICApfWAsXG4gICAgICAgICAgICAnV2FybmluZzogbWVzc2FnZXMgdGhhdCByZXN1bHRlZCBpbiBhIGZhaWxlZCBleGVjdHVpb24gd2lsbCBOT1QgYmUgaW4gdGhlIERMUSEnLFxuICAgICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOlxuICAgICAgICAgICAgQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDEsXG4gICAgICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgICB9KSxcbiAgICAgIEFsYXJtU2V2ZXJpdHkuSElHSCxcbiAgICAgIHByb3BzLm1vbml0b3JpbmdcbiAgICApO1xuXG4gICAgcHJvcHMubW9uaXRvcmluZy5hZGRIaWdoU2V2ZXJpdHlBbGFybShcbiAgICAgICdFeGVjdXRpb24gRmFpbHVyZSBSYXRlIGFib3ZlIDc1JScsXG4gICAgICB0aGlzLm1ldHJpY1N0YXRlc0V4ZWN1dGlvbkZhaWx1cmVSYXRlKCkuY3JlYXRlQWxhcm0oXG4gICAgICAgIHRoaXMsXG4gICAgICAgICdGYWlsdXJlUmF0ZUFsYXJtJyxcbiAgICAgICAge1xuICAgICAgICAgIGFsYXJtTmFtZTogYCR7dGhpcy5zdGF0ZU1hY2hpbmUubm9kZS5wYXRofS9FeGVjdXRpb25GYWlsdXJlUmF0ZWAsXG4gICAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjogJ0V4ZWN1dGlvbiBGYWlsdXJlIFJhdGUgYWJvdmUgNzUlJyxcbiAgICAgICAgICBjb21wYXJpc29uT3BlcmF0b3I6XG4gICAgICAgICAgICBDb21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogMSxcbiAgICAgICAgICB0aHJlc2hvbGQ6IDc1LFxuICAgICAgICB9XG4gICAgICApXG4gICAgKTtcblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgdG8gYmUgbWFudWFsbHkgdHJpZ2dlcmVkIGJ5IGFuIG9wZXJyYXRvciB0b1xuICAgIC8vIGF0dGVtcHQgcmVkcml2aW5nIG1lc3NhZ2VzIGZyb20gdGhlIERMUS5cbiAgICB0aGlzLnJlZHJpdmVGdW5jdGlvbiA9IG5ldyBSZWRyaXZlU3RhdGVNYWNoaW5lKHRoaXMsICdSZWRyaXZlJywge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdbQ29uc3RydWN0SHViL1JlZHJpdmVdIE1hbnVhbGx5IHJlZHJpdmVzIGFsbCBtZXNzYWdlcyBmcm9tIHRoZSBiYWNrZW5kIGRlYWQgbGV0dGVyIHF1ZXVlJyxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIFNUQVRFX01BQ0hJTkVfQVJOOiB0aGlzLnN0YXRlTWFjaGluZS5zdGF0ZU1hY2hpbmVBcm4sXG4gICAgICAgIFFVRVVFX1VSTDogdGhpcy5kZWFkTGV0dGVyUXVldWUucXVldWVVcmwsXG4gICAgICB9LFxuICAgICAgbWVtb3J5U2l6ZTogMV8wMjQsXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDE1KSxcbiAgICAgIHRyYWNpbmc6IFRyYWNpbmcuQUNUSVZFLFxuICAgIH0pO1xuICAgIHRoaXMuc3RhdGVNYWNoaW5lLmdyYW50U3RhcnRFeGVjdXRpb24odGhpcy5yZWRyaXZlRnVuY3Rpb24pO1xuICAgIHRoaXMuZGVhZExldHRlclF1ZXVlLmdyYW50Q29uc3VtZU1lc3NhZ2VzKHRoaXMucmVkcml2ZUZ1bmN0aW9uKTtcbiAgICBwcm9wcy5vdmVydmlld0Rhc2hib2FyZC5hZGRETFFNZXRyaWNUb0Rhc2hib2FyZChcbiAgICAgICdPcmNoZXN0cmF0aW9uIERMUScsXG4gICAgICB0aGlzLmRlYWRMZXR0ZXJRdWV1ZSxcbiAgICAgIHRoaXMucmVkcml2ZUZ1bmN0aW9uXG4gICAgKTtcblxuICAgIC8vIFRoZSB3b3JrZmxvdyBpcyBpbnRlbmRlZCB0byBiZSBtYW51YWxseSB0cmlnZ2VyZWQgYnkgYW4gb3BlcmF0b3IgdG9cbiAgICAvLyByZXByb2Nlc3MgYWxsIHBhY2thZ2UgdmVyc2lvbnMgY3VycmVudGx5IGluIHN0b3JlIHRocm91Z2ggdGhlIG9yY2hlc3RyYXRvci5cbiAgICBjb25zdCByZWdlbmVyYXRlQWxsRG9jdW1lbnRhdGlvbiA9IG5ldyBSZWdlbmVyYXRlQWxsRG9jdW1lbnRhdGlvbihcbiAgICAgIHRoaXMsXG4gICAgICAnUmVnZW5lcmF0ZUFsbERvY3VtZW50YXRpb24nLFxuICAgICAge1xuICAgICAgICBidWNrZXQ6IHByb3BzLmJ1Y2tldCxcbiAgICAgICAgc3RhdGVNYWNoaW5lOiB0aGlzLnN0YXRlTWFjaGluZSxcbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMucmVnZW5lcmF0ZUFsbERvY3VtZW50YXRpb24gPSByZWdlbmVyYXRlQWxsRG9jdW1lbnRhdGlvbi5zdGF0ZU1hY2hpbmU7XG4gICAgdGhpcy5yZWdlbmVyYXRlQWxsRG9jdW1lbnRhdGlvblBlclBhY2thZ2UgPVxuICAgICAgcmVnZW5lcmF0ZUFsbERvY3VtZW50YXRpb24ucHJvY2Vzc1BhY2thZ2VWZXJzaW9ucztcblxuICAgIC8vIENyZWF0ZSByZXRyeSB1bmluc3RhbGxhYmxlIHBhY2thZ2VzIHdvcmtmbG93XG4gICAgY29uc3QgcmV0cnlVbmluc3RhbGxhYmxlID0gbmV3IFJldHJ5VW5pbnN0YWxsYWJsZVBhY2thZ2VzKFxuICAgICAgdGhpcyxcbiAgICAgICdSZXRyeVVuaW5zdGFsbGFibGVQYWNrYWdlcycsXG4gICAgICB7XG4gICAgICAgIGJ1Y2tldDogcHJvcHMuYnVja2V0LFxuICAgICAgICBvcmNoZXN0cmF0aW9uU3RhdGVNYWNoaW5lOiB0aGlzLnN0YXRlTWFjaGluZSxcbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMucmV0cnlVbmluc3RhbGxhYmxlUGFja2FnZXMgPSByZXRyeVVuaW5zdGFsbGFibGUuc3RhdGVNYWNoaW5lO1xuXG4gICAgcHJvcHMub3ZlcnZpZXdEYXNoYm9hcmQuYWRkQ29uY3VycmVudEV4ZWN1dGlvbk1ldHJpY1RvRGFzaGJvYXJkKFxuICAgICAgbmVlZHNDYXRhbG9nVXBkYXRlRnVuY3Rpb24sXG4gICAgICAnTmVlZHNDYXRhbG9nVXBkYXRlTGFtYmRhJ1xuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbWV0cmljU3RhdGVzRXhlY3V0aW9uRmFpbHVyZVJhdGUoXG4gICAgb3B0cz86IE1hdGhFeHByZXNzaW9uT3B0aW9uc1xuICApOiBNYXRoRXhwcmVzc2lvbiB7XG4gICAgcmV0dXJuIG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICAuLi5vcHRzLFxuICAgICAgLy8gQ2FsY3VsYXRlcyB0aGUgJSBFeGVjdXRpb25zRmFpbGVkIGZyb20gdGhlIEV4ZWN1dGlvbnNTdGFydGVkLlxuICAgICAgZXhwcmVzc2lvbjogJzEwMCAqIG1leGVjdXRpb25zRmFpbGVkIC8gbWV4ZWN1dGlvbnNTdGFydGVkJyxcbiAgICAgIHVzaW5nTWV0cmljczoge1xuICAgICAgICBtZXhlY3V0aW9uc0ZhaWxlZDogdGhpcy5tZXRyaWNTdGF0ZXNFeGVjdXRpb25zRmFpbGVkKCksXG4gICAgICAgIG1leGVjdXRpb25zU3RhcnRlZDogdGhpcy5tZXRyaWNTdGF0ZXNFeGVjdXRpb25zU3RhcnRlZCgpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBtZXRyaWNTdGF0ZXNFeGVjdXRpb25zRmFpbGVkKG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5TVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgZGltZW5zaW9uc01hcDogeyBDbHVzdGVyTmFtZTogdGhpcy5lY3NDbHVzdGVyLmNsdXN0ZXJOYW1lIH0sXG4gICAgICBtZXRyaWNOYW1lOiAnRXhlY3V0aW9uc0ZhaWxlZCcsXG4gICAgICBuYW1lc3BhY2U6ICdBV1MvU3RhdGVzJyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBtZXRyaWNTdGF0ZXNFeGVjdXRpb25zU3RhcnRlZChvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHsgRXhlY3V0aW9uTWV0cmljczogdGhpcy5zdGF0ZU1hY2hpbmUuc3RhdGVNYWNoaW5lQXJuIH0sXG4gICAgICBtZXRyaWNOYW1lOiAnRXhlY3V0aW9uc1N0YXJ0ZWQnLFxuICAgICAgbmFtZXNwYWNlOiAnQVdTL1N0YXRlcycsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbWV0cmljRWNzVGFza0NvdW50KG9wdHM6IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLlNVTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7IEV4ZWN1dGlvbk1ldHJpY3M6IHRoaXMuc3RhdGVNYWNoaW5lLnN0YXRlTWFjaGluZUFybiB9LFxuICAgICAgbWV0cmljTmFtZTogJ1Rhc2tDb3VudCcsXG4gICAgICBuYW1lc3BhY2U6ICdFQ1MvQ29udGFpbmVySW5zaWdodHMnLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG1ldHJpY0Vjc0NwdVJlc2VydmVkKG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5NQVhJTVVNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHsgQ2x1c3Rlck5hbWU6IHRoaXMuZWNzQ2x1c3Rlci5jbHVzdGVyTmFtZSB9LFxuICAgICAgbWV0cmljTmFtZTogJ0NwdVJlc2VydmVkJyxcbiAgICAgIG5hbWVzcGFjZTogJ0VDUy9Db250YWluZXJJbnNpZ2h0cycsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbWV0cmljRWNzQ3B1VXRpbGl6ZWQob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLk1BWElNVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgZGltZW5zaW9uc01hcDogeyBDbHVzdGVyTmFtZTogdGhpcy5lY3NDbHVzdGVyLmNsdXN0ZXJOYW1lIH0sXG4gICAgICBtZXRyaWNOYW1lOiAnQ3B1VXRpbGl6ZWQnLFxuICAgICAgbmFtZXNwYWNlOiAnRUNTL0NvbnRhaW5lckluc2lnaHRzJyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBtZXRyaWNFY3NDcHVVdGlsaXphdGlvbihvcHRzPzogTWF0aEV4cHJlc3Npb25PcHRpb25zKTogTWF0aEV4cHJlc3Npb24ge1xuICAgIHJldHVybiBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgLi4ub3B0cyxcbiAgICAgIC8vIENhbGN1bGF0ZXMgdGhlICUgQ1BVIHV0aWxpemF0aW9uIGZyb20gdGhlIENQVSB1bml0cyB1dGlsaXphdGlvbiAmXG4gICAgICAvLyByZXNlcnZhdGlvbi4gRklMTCBpcyB1c2VkIHRvIG1ha2UgYSBub24tc3BhcnNlIHRpbWUtc2VyaWVzICh0aGUgbWV0cmljc1xuICAgICAgLy8gYXJlIG5vdCBlbWl0dGVkIGlmIG5vIHRhc2sgcnVucylcbiAgICAgIGV4cHJlc3Npb246ICcxMDAgKiBGSUxMKG1DcHVVdGlsaXplZCwgMCkgLyBGSUxMKG1DcHVSZXNlcnZlZCwgUkVQRUFUKScsXG4gICAgICB1c2luZ01ldHJpY3M6IHtcbiAgICAgICAgbUNwdVJlc2VydmVkOiB0aGlzLm1ldHJpY0Vjc0NwdVJlc2VydmVkKCksXG4gICAgICAgIG1DcHVVdGlsaXplZDogdGhpcy5tZXRyaWNFY3NDcHVVdGlsaXplZCgpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBtZXRyaWNFY3NNZW1vcnlSZXNlcnZlZChvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUFYSU1VTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7IENsdXN0ZXJOYW1lOiB0aGlzLmVjc0NsdXN0ZXIuY2x1c3Rlck5hbWUgfSxcbiAgICAgIG1ldHJpY05hbWU6ICdNZW1vcnlSZXNlcnZlZCcsXG4gICAgICBuYW1lc3BhY2U6ICdFQ1MvQ29udGFpbmVySW5zaWdodHMnLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG1ldHJpY0Vjc01lbW9yeVV0aWxpemVkKG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5NQVhJTVVNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHsgQ2x1c3Rlck5hbWU6IHRoaXMuZWNzQ2x1c3Rlci5jbHVzdGVyTmFtZSB9LFxuICAgICAgbWV0cmljTmFtZTogJ01lbW9yeVV0aWxpemVkJyxcbiAgICAgIG5hbWVzcGFjZTogJ0VDUy9Db250YWluZXJJbnNpZ2h0cycsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbWV0cmljRWNzTWVtb3J5VXRpbGl6YXRpb24oXG4gICAgb3B0cz86IE1hdGhFeHByZXNzaW9uT3B0aW9uc1xuICApOiBNYXRoRXhwcmVzc2lvbiB7XG4gICAgcmV0dXJuIG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICAuLi5vcHRzLFxuICAgICAgLy8gQ2FsY3VsYXRlcyB0aGUgJSBtZW1vcnkgdXRpbGl6YXRpb24gZnJvbSB0aGUgUkFNIHV0aWxpemF0aW9uICZcbiAgICAgIC8vIHJlc2VydmF0aW9uLiBGSUxMIGlzIHVzZWQgdG8gbWFrZSBhIG5vbi1zcGFyc2UgdGltZS1zZXJpZXMgKHRoZSBtZXRyaWNzXG4gICAgICAvLyBhcmUgbm90IGVtaXR0ZWQgaWYgbm8gdGFzayBydW5zKVxuICAgICAgZXhwcmVzc2lvbjpcbiAgICAgICAgJzEwMCAqIEZJTEwobU1lbW9yeVV0aWxpemVkLCAwKSAvIEZJTEwobU1lbW9yeVJlc2VydmVkLCBSRVBFQVQpJyxcbiAgICAgIHVzaW5nTWV0cmljczoge1xuICAgICAgICBtTWVtb3J5UmVzZXJ2ZWQ6IHRoaXMubWV0cmljRWNzTWVtb3J5UmVzZXJ2ZWQoKSxcbiAgICAgICAgbU1lbW9yeVV0aWxpemVkOiB0aGlzLm1ldHJpY0Vjc01lbW9yeVV0aWxpemVkKCksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG1ldHJpY0Vjc05ldHdvcmtSeEJ5dGVzKG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5NQVhJTVVNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHsgQ2x1c3Rlck5hbWU6IHRoaXMuZWNzQ2x1c3Rlci5jbHVzdGVyTmFtZSB9LFxuICAgICAgbWV0cmljTmFtZTogJ05ldHdvcmtSeEJ5dGVzJyxcbiAgICAgIG5hbWVzcGFjZTogJ0VDUy9Db250YWluZXJJbnNpZ2h0cycsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbWV0cmljRWNzTmV0d29ya1R4Qnl0ZXMob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLk1BWElNVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgZGltZW5zaW9uc01hcDogeyBDbHVzdGVyTmFtZTogdGhpcy5lY3NDbHVzdGVyLmNsdXN0ZXJOYW1lIH0sXG4gICAgICBtZXRyaWNOYW1lOiAnTmV0d29ya1R4Qnl0ZXMnLFxuICAgICAgbmFtZXNwYWNlOiAnRUNTL0NvbnRhaW5lckluc2lnaHRzJyxcbiAgICB9KTtcbiAgfVxufVxuXG5pbnRlcmZhY2UgUmVnZW5lcmF0ZUFsbERvY3VtZW50YXRpb25Qcm9wcyB7XG4gIHJlYWRvbmx5IGJ1Y2tldDogSUJ1Y2tldDtcbiAgcmVhZG9ubHkgc3RhdGVNYWNoaW5lOiBJU3RhdGVNYWNoaW5lO1xufVxuXG5jbGFzcyBSZWdlbmVyYXRlQWxsRG9jdW1lbnRhdGlvbiBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBzdGF0ZU1hY2hpbmU6IFN0YXRlTWFjaGluZTtcbiAgcHVibGljIHJlYWRvbmx5IHByb2Nlc3NQYWNrYWdlVmVyc2lvbnM6IFN0YXRlTWFjaGluZTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBSZWdlbmVyYXRlQWxsRG9jdW1lbnRhdGlvblByb3BzXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBwcm9jZXNzVmVyc2lvbnMgPSBuZXcgQ2hvaWNlKHRoaXMsICdHZXQgcGFja2FnZSB2ZXJzaW9ucyBwYWdlJylcbiAgICAgIC53aGVuKFxuICAgICAgICBDb25kaXRpb24uaXNQcmVzZW50KCckLnJlc3BvbnNlLk5leHRDb250aW51YXRpb25Ub2tlbicpLFxuICAgICAgICBuZXcgdGFza3MuQ2FsbEF3c1NlcnZpY2UodGhpcywgJ05leHQgdmVyc2lvbnMgcGFnZScsIHtcbiAgICAgICAgICBzZXJ2aWNlOiAnczMnLFxuICAgICAgICAgIGFjdGlvbjogJ2xpc3RPYmplY3RzVjInLFxuICAgICAgICAgIGlhbUFjdGlvbjogJ3MzOkxpc3RCdWNrZXQnLFxuICAgICAgICAgIGlhbVJlc291cmNlczogW3Byb3BzLmJ1Y2tldC5idWNrZXRBcm5dLFxuICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgIEJ1Y2tldDogcHJvcHMuYnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICAgICAgICBDb250aW51YXRpb25Ub2tlbjogSnNvblBhdGguc3RyaW5nQXQoXG4gICAgICAgICAgICAgICckLnJlc3BvbnNlLk5leHRDb250aW51YXRpb25Ub2tlbidcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBEZWxpbWl0ZXI6ICcvJyxcbiAgICAgICAgICAgIFByZWZpeDogSnNvblBhdGguc3RyaW5nQXQoJyQuUHJlZml4JyksXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXN1bHRQYXRoOiAnJC5yZXNwb25zZScsXG4gICAgICAgIH0pLmFkZFJldHJ5KHsgZXJyb3JzOiBbJ1MzLlNka0NsaWVudEV4Y2VwdGlvbiddIH0pXG4gICAgICApXG4gICAgICAub3RoZXJ3aXNlKFxuICAgICAgICBuZXcgdGFza3MuQ2FsbEF3c1NlcnZpY2UodGhpcywgJ0ZpcnN0IHZlcnNpb25zIHBhZ2UnLCB7XG4gICAgICAgICAgc2VydmljZTogJ3MzJyxcbiAgICAgICAgICBhY3Rpb246ICdsaXN0T2JqZWN0c1YyJyxcbiAgICAgICAgICBpYW1BY3Rpb246ICdzMzpMaXN0QnVja2V0JyxcbiAgICAgICAgICBpYW1SZXNvdXJjZXM6IFtwcm9wcy5idWNrZXQuYnVja2V0QXJuXSxcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBCdWNrZXQ6IHByb3BzLmJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgICAgICAgRGVsaW1pdGVyOiAnLycsXG4gICAgICAgICAgICBQcmVmaXg6IEpzb25QYXRoLnN0cmluZ0F0KCckLlByZWZpeCcpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzdWx0UGF0aDogJyQucmVzcG9uc2UnLFxuICAgICAgICB9KS5hZGRSZXRyeSh7IGVycm9yczogWydTMy5TZGtDbGllbnRFeGNlcHRpb24nXSB9KVxuICAgICAgKVxuICAgICAgLmFmdGVyd2FyZHMoKVxuICAgICAgLm5leHQoXG4gICAgICAgIG5ldyBNYXAodGhpcywgJ0ZvciBlYWNoIGtleSBwcmVmaXgnLCB7XG4gICAgICAgICAgaXRlbXNQYXRoOiAnJC5yZXNwb25zZS5Db21tb25QcmVmaXhlcycsXG4gICAgICAgICAgcmVzdWx0UGF0aDogSnNvblBhdGguRElTQ0FSRCxcbiAgICAgICAgfSkuaXRlcmF0b3IoXG4gICAgICAgICAgbmV3IHRhc2tzLlN0ZXBGdW5jdGlvbnNTdGFydEV4ZWN1dGlvbihcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICAnU3RhcnQgT3JjaGVzdHJhdGlvbiBXb3JrZmxvdycsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHN0YXRlTWFjaGluZTogcHJvcHMuc3RhdGVNYWNoaW5lLFxuICAgICAgICAgICAgICBhc3NvY2lhdGVXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgICBpbnB1dDogVGFza0lucHV0LmZyb21PYmplY3Qoe1xuICAgICAgICAgICAgICAgIGJ1Y2tldDogcHJvcHMuYnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICAgICAgICAgICAgYXNzZW1ibHk6IHtcbiAgICAgICAgICAgICAgICAgIGtleTogSnNvblBhdGguc3RyaW5nQXQoXG4gICAgICAgICAgICAgICAgICAgIGBTdGF0ZXMuRm9ybWF0KCd7fSR7QVNTRU1CTFlfS0VZX1NVRkZJWC5zdWJzdHIoXG4gICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICApfScsICQuUHJlZml4KWBcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBtZXRhZGF0YToge1xuICAgICAgICAgICAgICAgICAga2V5OiBKc29uUGF0aC5zdHJpbmdBdChcbiAgICAgICAgICAgICAgICAgICAgYFN0YXRlcy5Gb3JtYXQoJ3t9JHtNRVRBREFUQV9LRVlfU1VGRklYLnN1YnN0cihcbiAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICl9JywgJC5QcmVmaXgpYFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHBhY2thZ2U6IHtcbiAgICAgICAgICAgICAgICAgIGtleTogSnNvblBhdGguc3RyaW5nQXQoXG4gICAgICAgICAgICAgICAgICAgIGBTdGF0ZXMuRm9ybWF0KCd7fSR7UEFDS0FHRV9LRVlfU1VGRklYLnN1YnN0cihcbiAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICl9JywgJC5QcmVmaXgpYFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgaW50ZWdyYXRpb25QYXR0ZXJuOiBJbnRlZ3JhdGlvblBhdHRlcm4uUkVRVUVTVF9SRVNQT05TRSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApXG4gICAgICAgICAgICAuYWRkUmV0cnkoeyBlcnJvcnM6IFsnU3RlcEZ1bmN0aW9ucy5FeGVjdXRpb25MaW1pdEV4Y2VlZGVkJ10gfSlcbiAgICAgICAgICAgIC5hZGRDYXRjaChuZXcgU3VjY2VlZChwcm9wcy5zdGF0ZU1hY2hpbmUsICdTdGF0ZU1hY2hpbmUgU3VjY2VzcycpLCB7XG4gICAgICAgICAgICAgIGVycm9yczogWydTdGF0ZXMuVGFza0ZhaWxlZCddLFxuICAgICAgICAgICAgICByZXN1bHRQYXRoOiAnJC5lcnJvcicsXG4gICAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApO1xuXG4gICAgcHJvY2Vzc1ZlcnNpb25zLm5leHQoXG4gICAgICBuZXcgQ2hvaWNlKHRoaXMsICdIYXMgbW9yZSB2ZXJzaW9ucz8nKVxuICAgICAgICAud2hlbihcbiAgICAgICAgICBDb25kaXRpb24uaXNQcmVzZW50KCckLnJlc3BvbnNlLk5leHRDb250aW51YXRpb25Ub2tlbicpLFxuICAgICAgICAgIHByb2Nlc3NWZXJzaW9uc1xuICAgICAgICApXG4gICAgICAgIC5vdGhlcndpc2UobmV3IFN1Y2NlZWQodGhpcywgJ1N1Y2Nlc3MnKSlcbiAgICApO1xuICAgIGNvbnN0IHByb2Nlc3NQYWNrYWdlVmVyc2lvbnMgPSBuZXcgU3RhdGVNYWNoaW5lKHRoaXMsICdQZXJQYWNrYWdlJywge1xuICAgICAgc3RhdGVNYWNoaW5lTmFtZTogUkVQUk9DRVNTX1BFUl9QQUNLQUdFX1NUQVRFX01BQ0hJTkVfTkFNRSxcbiAgICAgIGRlZmluaXRpb246IHByb2Nlc3NWZXJzaW9ucyxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLmhvdXJzKDEpLFxuICAgICAgdHJhY2luZ0VuYWJsZWQ6IHRydWUsXG4gICAgfSk7XG4gICAgdGhpcy5wcm9jZXNzUGFja2FnZVZlcnNpb25zID0gcHJvY2Vzc1BhY2thZ2VWZXJzaW9ucztcblxuICAgIC8vIFRoaXMgd29ya2Zsb3cgaXMgYnJva2VuIGludG8gdHdvIHN1Yi13b3JrZmxvd3MgYmVjYXVzZSBvdGhlcndpc2UgaXQgaGl0cyB0aGUgMjVLIGV2ZW50cyBsaW1pdFxuICAgIC8vIG9mIFN0ZXBGdW5jdGlvbiBleGVjdXRpb25zIHJlbGF0aXZlbHkgcXVpY2tseS5cbiAgICBjb25zdCBwcm9jZXNzTmFtZXNwYWNlID0gbmV3IENob2ljZSh0aGlzLCAnR2V0IEBzY29wZSBwYWdlJylcbiAgICAgIC53aGVuKFxuICAgICAgICBDb25kaXRpb24uaXNQcmVzZW50KCckLnJlc3BvbnNlLk5leHRDb250aW51YXRpb25Ub2tlbicpLFxuICAgICAgICBuZXcgdGFza3MuQ2FsbEF3c1NlcnZpY2UodGhpcywgJ05leHQgQHNjb3BlIHBhZ2UnLCB7XG4gICAgICAgICAgc2VydmljZTogJ3MzJyxcbiAgICAgICAgICBhY3Rpb246ICdsaXN0T2JqZWN0c1YyJyxcbiAgICAgICAgICBpYW1BY3Rpb246ICdzMzpMaXN0QnVja2V0JyxcbiAgICAgICAgICBpYW1SZXNvdXJjZXM6IFtwcm9wcy5idWNrZXQuYnVja2V0QXJuXSxcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBCdWNrZXQ6IHByb3BzLmJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgICAgICAgQ29udGludWF0aW9uVG9rZW46IEpzb25QYXRoLnN0cmluZ0F0KFxuICAgICAgICAgICAgICAnJC5yZXNwb25zZS5OZXh0Q29udGludWF0aW9uVG9rZW4nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgRGVsaW1pdGVyOiAnLycsXG4gICAgICAgICAgICBQcmVmaXg6IEpzb25QYXRoLnN0cmluZ0F0KCckLlByZWZpeCcpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzdWx0UGF0aDogJyQucmVzcG9uc2UnLFxuICAgICAgICB9KS5hZGRSZXRyeSh7IGVycm9yczogWydTMy5TZGtDbGllbnRFeGNlcHRpb24nXSB9KVxuICAgICAgKVxuICAgICAgLm90aGVyd2lzZShcbiAgICAgICAgbmV3IHRhc2tzLkNhbGxBd3NTZXJ2aWNlKHRoaXMsICdGaXJzdCBAc2NvcGUgcGFnZScsIHtcbiAgICAgICAgICBzZXJ2aWNlOiAnczMnLFxuICAgICAgICAgIGFjdGlvbjogJ2xpc3RPYmplY3RzVjInLFxuICAgICAgICAgIGlhbUFjdGlvbjogJ3MzOkxpc3RCdWNrZXQnLFxuICAgICAgICAgIGlhbVJlc291cmNlczogW3Byb3BzLmJ1Y2tldC5idWNrZXRBcm5dLFxuICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgIEJ1Y2tldDogcHJvcHMuYnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICAgICAgICBEZWxpbWl0ZXI6ICcvJyxcbiAgICAgICAgICAgIFByZWZpeDogSnNvblBhdGguc3RyaW5nQXQoJyQuUHJlZml4JyksXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXN1bHRQYXRoOiAnJC5yZXNwb25zZScsXG4gICAgICAgIH0pLmFkZFJldHJ5KHsgZXJyb3JzOiBbJ1MzLlNka0NsaWVudEV4Y2VwdGlvbiddIH0pXG4gICAgICApXG4gICAgICAuYWZ0ZXJ3YXJkcygpXG4gICAgICAubmV4dChcbiAgICAgICAgbmV3IE1hcCh0aGlzLCAnRm9yIGVhY2ggQHNjb3BlL3BrZycsIHtcbiAgICAgICAgICBpdGVtc1BhdGg6ICckLnJlc3BvbnNlLkNvbW1vblByZWZpeGVzJyxcbiAgICAgICAgICByZXN1bHRQYXRoOiBKc29uUGF0aC5ESVNDQVJELFxuICAgICAgICB9KS5pdGVyYXRvcihcbiAgICAgICAgICBuZXcgdGFza3MuU3RlcEZ1bmN0aW9uc1N0YXJ0RXhlY3V0aW9uKFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgICdQcm9jZXNzIHNjb3BlZCBwYWNrYWdlJyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc3RhdGVNYWNoaW5lOiBwcm9jZXNzUGFja2FnZVZlcnNpb25zLFxuICAgICAgICAgICAgICBhc3NvY2lhdGVXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgICBpbnB1dDogVGFza0lucHV0LmZyb21PYmplY3Qoe1xuICAgICAgICAgICAgICAgIFByZWZpeDogSnNvblBhdGguc3RyaW5nQXQoJyQuUHJlZml4JyksXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBpbnRlZ3JhdGlvblBhdHRlcm46IEludGVncmF0aW9uUGF0dGVybi5SVU5fSk9CLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICkuYWRkUmV0cnkoeyBlcnJvcnM6IFsnU3RlcEZ1bmN0aW9ucy5FeGVjdXRpb25MaW1pdEV4Y2VlZGVkJ10gfSlcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICBwcm9jZXNzTmFtZXNwYWNlLm5leHQoXG4gICAgICBuZXcgQ2hvaWNlKHRoaXMsICdIYXMgbW9yZSBwYWNrYWdlcz8nKVxuICAgICAgICAud2hlbihcbiAgICAgICAgICBDb25kaXRpb24uaXNQcmVzZW50KCckLnJlc3BvbnNlLk5leHRDb250aW51YXRpb25Ub2tlbicpLFxuICAgICAgICAgIHByb2Nlc3NOYW1lc3BhY2VcbiAgICAgICAgKVxuICAgICAgICAub3RoZXJ3aXNlKG5ldyBTdWNjZWVkKHRoaXMsICdBbGwgRG9uZScpKVxuICAgICk7XG5cbiAgICBjb25zdCBzdGFydCA9IG5ldyBDaG9pY2UodGhpcywgJ0dldCBwcmVmaXggcGFnZScpXG4gICAgICAud2hlbihcbiAgICAgICAgQ29uZGl0aW9uLmlzUHJlc2VudCgnJC5yZXNwb25zZS5OZXh0Q29udGludWF0aW9uVG9rZW4nKSxcbiAgICAgICAgbmV3IHRhc2tzLkNhbGxBd3NTZXJ2aWNlKHRoaXMsICdOZXh0IHByZWZpeGVzIHBhZ2UnLCB7XG4gICAgICAgICAgc2VydmljZTogJ3MzJyxcbiAgICAgICAgICBhY3Rpb246ICdsaXN0T2JqZWN0c1YyJyxcbiAgICAgICAgICBpYW1BY3Rpb246ICdzMzpMaXN0QnVja2V0JyxcbiAgICAgICAgICBpYW1SZXNvdXJjZXM6IFtwcm9wcy5idWNrZXQuYnVja2V0QXJuXSxcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBCdWNrZXQ6IHByb3BzLmJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgICAgICAgQ29udGludWF0aW9uVG9rZW46IEpzb25QYXRoLnN0cmluZ0F0KFxuICAgICAgICAgICAgICAnJC5yZXNwb25zZS5OZXh0Q29udGludWF0aW9uVG9rZW4nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgRGVsaW1pdGVyOiAnLycsXG4gICAgICAgICAgICBQcmVmaXg6IFNUT1JBR0VfS0VZX1BSRUZJWCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc3VsdFBhdGg6ICckLnJlc3BvbnNlJyxcbiAgICAgICAgfSkuYWRkUmV0cnkoeyBlcnJvcnM6IFsnUzMuU2RrQ2xpZW50RXhjZXB0aW9uJ10gfSlcbiAgICAgIClcbiAgICAgIC5vdGhlcndpc2UoXG4gICAgICAgIG5ldyB0YXNrcy5DYWxsQXdzU2VydmljZSh0aGlzLCAnRmlyc3QgcHJlZml4IHBhZ2UnLCB7XG4gICAgICAgICAgc2VydmljZTogJ3MzJyxcbiAgICAgICAgICBhY3Rpb246ICdsaXN0T2JqZWN0c1YyJyxcbiAgICAgICAgICBpYW1BY3Rpb246ICdzMzpMaXN0QnVja2V0JyxcbiAgICAgICAgICBpYW1SZXNvdXJjZXM6IFtwcm9wcy5idWNrZXQuYnVja2V0QXJuXSxcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBCdWNrZXQ6IHByb3BzLmJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgICAgICAgRGVsaW1pdGVyOiAnLycsXG4gICAgICAgICAgICBQcmVmaXg6IFNUT1JBR0VfS0VZX1BSRUZJWCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc3VsdFBhdGg6ICckLnJlc3BvbnNlJyxcbiAgICAgICAgfSkuYWRkUmV0cnkoeyBlcnJvcnM6IFsnUzMuU2RrQ2xpZW50RXhjZXB0aW9uJ10gfSlcbiAgICAgIClcbiAgICAgIC5hZnRlcndhcmRzKClcbiAgICAgIC5uZXh0KFxuICAgICAgICBuZXcgTWFwKHRoaXMsICdGb3IgZWFjaCBwcmVmaXgnLCB7XG4gICAgICAgICAgaXRlbXNQYXRoOiAnJC5yZXNwb25zZS5Db21tb25QcmVmaXhlcycsXG4gICAgICAgICAgcmVzdWx0UGF0aDogSnNvblBhdGguRElTQ0FSRCxcbiAgICAgICAgfSkuaXRlcmF0b3IoXG4gICAgICAgICAgbmV3IENob2ljZSh0aGlzLCAnSXMgdGhpcyBhIEBzY29wZS8gcHJlZml4PycpXG4gICAgICAgICAgICAud2hlbihcbiAgICAgICAgICAgICAgQ29uZGl0aW9uLnN0cmluZ01hdGNoZXMoJyQuUHJlZml4JywgYCR7U1RPUkFHRV9LRVlfUFJFRklYfUAqYCksXG4gICAgICAgICAgICAgIHByb2Nlc3NOYW1lc3BhY2VcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5vdGhlcndpc2UoXG4gICAgICAgICAgICAgIG5ldyB0YXNrcy5TdGVwRnVuY3Rpb25zU3RhcnRFeGVjdXRpb24oXG4gICAgICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgICAgICAnUHJvY2VzcyB1bnNjb3BlZCBwYWNrYWdlJyxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBzdGF0ZU1hY2hpbmU6IHByb2Nlc3NQYWNrYWdlVmVyc2lvbnMsXG4gICAgICAgICAgICAgICAgICBhc3NvY2lhdGVXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgaW5wdXQ6IFRhc2tJbnB1dC5mcm9tT2JqZWN0KHtcbiAgICAgICAgICAgICAgICAgICAgUHJlZml4OiBKc29uUGF0aC5zdHJpbmdBdCgnJC5QcmVmaXgnKSxcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgaW50ZWdyYXRpb25QYXR0ZXJuOiBJbnRlZ3JhdGlvblBhdHRlcm4uUlVOX0pPQixcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICkuYWRkUmV0cnkoeyBlcnJvcnM6IFsnU3RlcEZ1bmN0aW9ucy5FeGVjdXRpb25MaW1pdEV4Y2VlZGVkJ10gfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5hZnRlcndhcmRzKClcbiAgICAgICAgKVxuICAgICAgKTtcblxuICAgIHN0YXJ0Lm5leHQoXG4gICAgICBuZXcgQ2hvaWNlKHRoaXMsICdIYXMgbW9yZSBwcmVmaXhlcz8nKVxuICAgICAgICAud2hlbihDb25kaXRpb24uaXNQcmVzZW50KCckLnJlc3BvbnNlLk5leHRDb250aW51YXRpb25Ub2tlbicpLCBzdGFydClcbiAgICAgICAgLm90aGVyd2lzZShuZXcgU3VjY2VlZCh0aGlzLCAnRG9uZScpKVxuICAgICk7XG5cbiAgICB0aGlzLnN0YXRlTWFjaGluZSA9IG5ldyBTdGF0ZU1hY2hpbmUodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgZGVmaW5pdGlvbjogc3RhcnQsXG4gICAgICBzdGF0ZU1hY2hpbmVOYW1lOiBzdGF0ZU1hY2hpbmVOYW1lRnJvbSh0aGlzLm5vZGUucGF0aCksXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5ob3Vycyg0KSxcbiAgICAgIHRyYWNpbmdFbmFibGVkOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgcHJvcHMuYnVja2V0LmdyYW50UmVhZChwcm9jZXNzUGFja2FnZVZlcnNpb25zKTtcbiAgICBwcm9wcy5idWNrZXQuZ3JhbnRSZWFkKHRoaXMuc3RhdGVNYWNoaW5lKTtcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgdHVybnMgYSBub2RlIHBhdGggaW50byBhIHZhbGlkIHN0YXRlIG1hY2hpbmUgbmFtZSwgdG8gdHJ5IGFuZCBpbXByb3ZlXG4gKiB0aGUgU3RlcEZ1bmN0aW9uJ3MgQVdTIGNvbnNvbGUgZXhwZXJpZW5jZSB3aGlsZSBtaW5pbWl6aW5nIHRoZSByaXNrIGZvclxuICogY29sbGlzb25zLlxuICovXG5mdW5jdGlvbiBzdGF0ZU1hY2hpbmVOYW1lRnJvbShub2RlUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gUG9vciBtYW4ncyByZXBsYWNlIGFsbC4uLlxuICByZXR1cm4gbm9kZVBhdGguc3BsaXQoL1teYS16MC05KyFALigpPV8nLV0rL2kpLmpvaW4oJy4nKTtcbn1cbiJdfQ==
|
|
709
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFja2VuZC9vcmNoZXN0cmF0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUF1QztBQUN2QywrREFRb0M7QUFFcEMsaURBQXdEO0FBQ3hELHVEQUE0RDtBQUc1RCxpREFBcUU7QUFDckUscUVBWXVDO0FBQ3ZDLDJFQUE2RDtBQUM3RCwyQ0FBdUM7QUFDdkMsaUVBQTREO0FBQzVELG1FQUE4RDtBQUM5RCxpRkFBNEU7QUFDNUUsbUNBQTBDO0FBRTFDLCtDQUErRDtBQUMvRCxpREFBd0Q7QUFFeEQsbURBQWdEO0FBQ2hELGtFQUFvRTtBQUNwRSx3REFBb0Q7QUFFcEQsMERBQXFEO0FBRXJELG1EQU82QjtBQUM3QixzREFBK0U7QUFFL0UsTUFBTSx3Q0FBd0MsR0FDNUMsa0NBQWtDLENBQUM7QUFFckM7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsTUFBTSxxQkFBcUIsR0FBRztJQUM1QixXQUFXLEVBQUUsR0FBRztJQUNoQixRQUFRLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzdCLFdBQVcsRUFBRSxFQUFFO0NBQ2hCLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sNEJBQTRCLEdBQUc7SUFDbkMsUUFBUSxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM3Qix1RUFBdUU7SUFDdkUsV0FBVyxFQUFFLEdBQUc7SUFDaEIsV0FBVyxFQUFFLEVBQUU7Q0FDaEIsQ0FBQztBQTZERjs7R0FFRztBQUNILE1BQWEsYUFBYyxTQUFRLHNCQUFTO0lBQzFDOzs7T0FHRztJQUNhLFlBQVksQ0FBZ0I7SUFFNUM7OztPQUdHO0lBQ2EsZUFBZSxDQUFTO0lBRXhDOzs7T0FHRztJQUNhLGVBQWUsQ0FBWTtJQUUzQzs7O09BR0c7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LENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHtcbiAgQ29tcGFyaXNvbk9wZXJhdG9yLFxuICBNYXRoRXhwcmVzc2lvbixcbiAgTWF0aEV4cHJlc3Npb25PcHRpb25zLFxuICBNZXRyaWMsXG4gIE1ldHJpY09wdGlvbnMsXG4gIFN0YXRpc3RpYyxcbiAgVHJlYXRNaXNzaW5nRGF0YSxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgU3VibmV0U2VsZWN0aW9uLCBWcGMsIElTZWN1cml0eUdyb3VwIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgeyBDbHVzdGVyLCBJQ2x1c3RlciB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lY3MnO1xuaW1wb3J0IHsgSUZ1bmN0aW9uLCBUcmFjaW5nIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBSZXRlbnRpb25EYXlzIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0IHsgSUJ1Y2tldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBJUXVldWUsIFF1ZXVlLCBRdWV1ZUVuY3J5cHRpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3FzJztcbmltcG9ydCB7XG4gIENob2ljZSxcbiAgQ29uZGl0aW9uLFxuICBJbnRlZ3JhdGlvblBhdHRlcm4sXG4gIElTdGF0ZU1hY2hpbmUsXG4gIEpzb25QYXRoLFxuICBNYXAsXG4gIFBhc3MsXG4gIFN0YXRlTWFjaGluZSxcbiAgU3VjY2VlZCxcbiAgRmFpbCxcbiAgVGFza0lucHV0LFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3RlcGZ1bmN0aW9ucyc7XG5pbXBvcnQgKiBhcyB0YXNrcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3RlcGZ1bmN0aW9ucy10YXNrcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IE5lZWRzQ2F0YWxvZ1VwZGF0ZSB9IGZyb20gJy4vbmVlZHMtY2F0YWxvZy11cGRhdGUnO1xuaW1wb3J0IHsgUmVkcml2ZVN0YXRlTWFjaGluZSB9IGZyb20gJy4vcmVkcml2ZS1zdGF0ZS1tYWNoaW5lJztcbmltcG9ydCB7IFJldHJ5VW5pbnN0YWxsYWJsZVBhY2thZ2VzIH0gZnJvbSAnLi9yZXRyeS11bmluc3RhbGxhYmxlLXBhY2thZ2VzJztcbmltcG9ydCB7IEFsYXJtU2V2ZXJpdHkgfSBmcm9tICcuLi8uLi9hcGknO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gJy4uLy4uL2NvZGVhcnRpZmFjdC9yZXBvc2l0b3J5JztcbmltcG9ydCB7IHNxc1F1ZXVlVXJsLCBzdGF0ZU1hY2hpbmVVcmwgfSBmcm9tICcuLi8uLi9kZWVwLWxpbmsnO1xuaW1wb3J0IHsgTW9uaXRvcmluZywgYWRkQWxhcm0gfSBmcm9tICcuLi8uLi9tb25pdG9yaW5nJztcbmltcG9ydCB7IE92ZXJ2aWV3RGFzaGJvYXJkIH0gZnJvbSAnLi4vLi4vb3ZlcnZpZXctZGFzaGJvYXJkJztcbmltcG9ydCB7IFJVTkJPT0tfVVJMIH0gZnJvbSAnLi4vLi4vcnVuYm9vay11cmwnO1xuaW1wb3J0IHsgZ3Jhdml0b25MYW1iZGFJZkF2YWlsYWJsZSB9IGZyb20gJy4uL19sYW1iZGEtYXJjaGl0ZWN0dXJlJztcbmltcG9ydCB7IENhdGFsb2dCdWlsZGVyIH0gZnJvbSAnLi4vY2F0YWxvZy1idWlsZGVyJztcbmltcG9ydCB7IERlbnlMaXN0IH0gZnJvbSAnLi4vZGVueS1saXN0JztcbmltcG9ydCB7IEVjc1Rhc2tNb25pdG9yIH0gZnJvbSAnLi4vZWNzLXRhc2stbW9uaXRvcic7XG5pbXBvcnQgeyBGZWVkQnVpbGRlciB9IGZyb20gJy4uL2ZlZWQtYnVpbGRlcic7XG5pbXBvcnQge1xuICBBU1NFTUJMWV9LRVlfU1VGRklYLFxuICBNRVRBREFUQV9LRVlfU1VGRklYLFxuICBQQUNLQUdFX0tFWV9TVUZGSVgsXG4gIFNUT1JBR0VfS0VZX1BSRUZJWCxcbiAgQ0FUQUxPR19LRVksXG4gIFVOUFJPQ0VTU0FCTEVfUEFDS0FHRV9FUlJPUl9OQU1FLFxufSBmcm9tICcuLi9zaGFyZWQvY29uc3RhbnRzJztcbmltcG9ydCB7IFRyYW5zbGl0ZXJhdG9yLCBUcmFuc2xpdGVyYXRvclZwY0VuZHBvaW50cyB9IGZyb20gJy4uL3RyYW5zbGl0ZXJhdG9yJztcblxuY29uc3QgUkVQUk9DRVNTX1BFUl9QQUNLQUdFX1NUQVRFX01BQ0hJTkVfTkFNRSA9XG4gICdSZXByb2Nlc3NEb2N1bWVudGF0aW9uUGVyUGFja2FnZSc7XG5cbi8qKlxuICogVGhpcyByZXRyeSBwb2xpY3kgaXMgdXNlZCBmb3IgYWxsIGl0ZW1zIGluIHRoZSBzdGF0ZSBtYWNoaW5lIGFuZCBhbGxvd3MgYW1wbGVcbiAqIHJldHJ5IGF0dGVtcHRzIGluIG9yZGVyIHRvIGF2b2lkIGhhdmluZyB0byBpbXBsZW1lbnQgYSBjdXN0b20gYmFja3ByZXNzdXJlXG4gKiBoYW5kbGluZyBtZWhhbmlzbS5cbiAqXG4gKiBUaGlzIGlzIG1lYW50IGFzIGEgc3RvcC1nYXAgdW50aWwgd2UgY2FuIGltcGxlbWVudCBhIG1vcmUgcmVzaWxpZW50IHN5c3RlbSxcbiAqIHdoaWNoIGxpa2VseSB3aWxsIGludm9sdmUgbW9yZSBTUVMgcXVldWVzLCBidXQgd2lsbCBwcm9iYWJseSBuZWVkIHRvIGJlXG4gKiB0aHJvdWdob3V0bHkgdmV0dGVkIGJlZm9yZSBpdCBpcyByb2xsZWQgb3V0IGV2ZXJ5d2hlcmUuXG4gKlxuICogQWZ0ZXIgMzAgYXR0ZW1wdHMsIGdpdmVuIHRoZSBwYXJhbWV0ZXJzLCB0aGUgbGFzdCBhdHRlbXB0IHdpbGwgd2FpdCBqdXN0XG4gKiB1bmRlciAxNiBtaW51dGVzLCB3aGljaCBzaG91bGQgYmUgZW5vdWdoIGZvciBjdXJyZW50bHkgcnVubmluZyBMYW1iZGFcbiAqIGZ1bmN0aW9ucyB0byBjb21wbGV0ZSAob3IgdGltZSBvdXQgYWZ0ZXIgMTUgbWludXRlcykuIFRoZSB0b3RhbCB0aW1lIHNwZW50XG4gKiB3YWl0aW5nIGJldHdlZW4gcmV0cmllcyBieSB0aGlzIHRpbWUgaXMganVzdCBvdmVyIDMgaG91cnMuIFRoaXMgaXMgYSBsb3Qgb2ZcbiAqIHRpbWUsIGJ1dCBpbiBleHRyZW1lIGJ1cnN0IHNpdHVhdGlvbnMgKGkuZTogcmVwcm9jZXNzaW5nIGV2ZXJ5dGhpbmcpLCB0aGlzXG4gKiBpcyBhY3R1YWxseSBhIGdvb2QgdGhpbmcuXG4gKi9cbmNvbnN0IFRIUk9UVExFX1JFVFJZX1BPTElDWSA9IHtcbiAgYmFja29mZlJhdGU6IDEuMSxcbiAgaW50ZXJ2YWw6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gIG1heEF0dGVtcHRzOiAzMCxcbn07XG5cbi8qKlxuICogVGhpcyByZXRyeSBwb2xpY3kgaXMgdXNlZCBmb3IgdHJhbnNsaXRlcmF0aW9uIHRhc2tzIGFuZCBhbGxvd3MgYW1wbGVcbiAqIHJldHJ5IGF0dGVtcHRzIGluIG9yZGVyIHRvIGF2b2lkIGhhdmluZyB0byBpbXBsZW1lbnQgYSBjdXN0b20gYmFja3ByZXNzdXJlXG4gKiBoYW5kbGluZyBtZWhhbmlzbS5cbiAqXG4gKiBUaGlzIGlzIG1lYW50IGFzIGEgc3RvcC1nYXAgdW50aWwgd2UgY2FuIGltcGxlbWVudCBhIG1vcmUgcmVzaWxpZW50IHN5c3RlbSxcbiAqIHdoaWNoIGxpa2VseSB3aWxsIGludm9sdmUgbW9yZSBTUVMgcXVldWVzLCBidXQgd2lsbCBwcm9iYWJseSBuZWVkIHRvIGJlXG4gKiB0aHJvdWdob3V0bHkgdmV0dGVkIGJlZm9yZSBpdCBpcyByb2xsZWQgb3V0IGV2ZXJ5d2hlcmUuXG4gKlxuICogVGhlIGludGVydmFsIGlzIGRldGVybWluZWQgYnkgdGhlIGV4ZWN1dGlvbiBkdXJhdGlvbiB3ZSBjdXJyZW50bHkgZXhwZWN0IGZyb20ganNpaS1kb2NnZW4uXG4gKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2Nka2xhYnMvanNpaS1kb2NnZW4vYmxvYi9tYWluL3Rlc3QvZG9jZ2VuL3ZpZXcvZG9jdW1lbnRhdGlvbi50ZXN0LnRzI0wxMy5cbiAqXG4gKiBBcHBseSBhIGJpdCBvZiBiYWNrb2ZmIGJlY2F1c2Ugb3RoZXJ3aXNlIGluIGNhc2VzIG9mIGNvbnRlbnRpb24gd2UncmUgaGFtbWVyaW5nIHRoZSBFQ1NcbiAqIGZyb250ZW5kIHNlcnZpY2UuXG4gKi9cbmNvbnN0IERPQ0dFTl9USFJPVFRMRV9SRVRSWV9QT0xJQ1kgPSB7XG4gIGludGVydmFsOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAvLyAxIG1pbnV0ZSAqIDEuMV40NSAvIGxuKDEuMSkgfj0gbWF4IDEzIGhvdXJzIHRvdGFsIHRpbWUgZm9yIGEgcGFja2FnZVxuICBiYWNrb2ZmUmF0ZTogMS4xLFxuICBtYXhBdHRlbXB0czogNDUsXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIE9yY2hlc3RyYXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgYnVja2V0IGluIHdoaWNoIHRvIHNvdXJjZSBhc3NlbWJsaWVzIHRvIHRyYW5zbGl0ZXJhdGUuXG4gICAqL1xuICByZWFkb25seSBidWNrZXQ6IElCdWNrZXQ7XG5cbiAgLyoqXG4gICAqIFRoZSBDb2RlQXJ0aWZhY3QgcmVnaXN0cnkgdG8gdXNlIGZvciByZWd1bGFyIG9wZXJhdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBjb2RlQXJ0aWZhY3Q/OiBSZXBvc2l0b3J5O1xuXG4gIC8qKlxuICAgKiBUaGUgbW9uaXRvcmluZyBoYW5kbGVyIHRvIHJlZ2lzdGVyIGFsYXJtcyB3aXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgbW9uaXRvcmluZzogTW9uaXRvcmluZztcblxuICAvKipcbiAgICogVGhlIG92ZXJ2aWV3IGRhc2hib2FyZCB0byByZWdpc3RlciBkYXNoYm9hcmRzIHdpdGguXG4gICAqL1xuICByZWFkb25seSBvdmVydmlld0Rhc2hib2FyZDogT3ZlcnZpZXdEYXNoYm9hcmQ7XG5cbiAgLyoqXG4gICAqIFRoZSBWUEMgaW4gd2hpY2ggdG8gcGxhY2UgbmV0d29ya2VkIHJlc291cmNlcy5cbiAgICovXG4gIHJlYWRvbmx5IHZwYz86IFZwYztcblxuICAvKipcbiAgICogVGhlIFZQQyBzdWJuZXQgc2VsZWN0aW9uIHRvIHVzZS5cbiAgICovXG4gIHJlYWRvbmx5IHZwY1N1Ym5ldHM/OiBTdWJuZXRTZWxlY3Rpb247XG5cbiAgLyoqXG4gICAqIFZQQyBlbmRwb2ludHMgdG8gdXNlIGZvciBpbnRlcmFjdGluZyB3aXRoIENvZGVBcnRpZmFjdCBhbmQgUzMuXG4gICAqL1xuICByZWFkb25seSB2cGNFbmRwb2ludHM/OiBUcmFuc2xpdGVyYXRvclZwY0VuZHBvaW50cztcblxuICAvKipcbiAgICogVlBDIFNlY3VyaXR5IGdyb3VwcyB0byBhc3NvY2lhdGUgd2l0aCB0aGUgRUNTIHRhc2tzLlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjU2VjdXJpdHlHcm91cHM/OiBJU2VjdXJpdHlHcm91cFtdO1xuXG4gIC8qKlxuICAgKiBIb3cgbG9uZyBzaG91bGQgZXhlY3V0aW9uIGxvZ3MgYmUgcmV0YWluZWQ/XG4gICAqXG4gICAqIEBkZWZhdWx0IFJldGVudGlvbkRheXMuVEVOX1lFQVJTXG4gICAqL1xuICByZWFkb25seSBsb2dSZXRlbnRpb24/OiBSZXRlbnRpb25EYXlzO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVueSBsaXN0LlxuICAgKi9cbiAgcmVhZG9ubHkgZGVueUxpc3Q6IERlbnlMaXN0O1xuXG4gIC8qKlxuICAgKiBUaGUgY29uc3RydWN0IHRoYXQgZ2VuZXJhdGVzIFJTUy9BVE9NIGZlZWRcbiAgICovXG4gIHJlYWRvbmx5IGZlZWRCdWlsZGVyOiBGZWVkQnVpbGRlcjtcbn1cblxuLyoqXG4gKiBPcmNoZXN0cmF0ZXMgdGhlIGJhY2tlbmQgcHJvY2Vzc2luZyB0YXNrcyB1c2luZyBhIFN0ZXBGdW5jdGlvbnMgU3RhdGUgTWFjaGluZS5cbiAqL1xuZXhwb3J0IGNsYXNzIE9yY2hlc3RyYXRpb24gZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogVGhlIHN0YXRlIG1hY2hpbmUgdGhhdCBzaG91bGQgYmUgdHJpZ2dlcmVkIGZvciBzdGFydGluZyBiYWNrLWVuZCBwcm9jZXNzaW5nXG4gICAqIGZvciBhIG5ld2x5IGRpc2NvdmVyZWQgcGFja2FnZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzdGF0ZU1hY2hpbmU6IElTdGF0ZU1hY2hpbmU7XG5cbiAgLyoqXG4gICAqIFRoZSBkZWFkIGxldHRlciBxdWV1ZSBmcm9tIHRoZSBzdGF0ZSBtYWNoaW5lLiBJbnB1dHMgYW5kIGVycm9ycyBhcmUgd3JpdHRlblxuICAgKiB0aGVyZSBpZiB0aGUgc3RhdGUgbWFjaGluZSBmYWlscy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZWFkTGV0dGVyUXVldWU6IElRdWV1ZTtcblxuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIG9wZXJhdG9ycyBjYW4gdXNlIHRvIHJlZHJpdmUgbWVzc2FnZXMgZnJvbSB0aGUgZGVhZCBsZXR0ZXJcbiAgICogcXVldWUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVkcml2ZUZ1bmN0aW9uOiBJRnVuY3Rpb247XG5cbiAgLyoqXG4gICAqIFRoZSBmdW5jdGlvbiBvcGVyYXRvcnMgY2FuIHVzZSB0byByZXByb2Nlc3MgYWxsIGluZGV4ZWQgcGFja2FnZXMgdGhyb3VnaFxuICAgKiB0aGUgYmFja2VuZCBkYXRhIHBpcGVsaW5lLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJlZ2VuZXJhdGVBbGxEb2N1bWVudGF0aW9uOiBJU3RhdGVNYWNoaW5lO1xuXG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gb3BlcmF0b3JzIGNhbiB1c2UgdG8gcmVwcm9jZXNzIGEgc3BlY2lmaWMgcGFja2FnZSB2ZXJzaW9uXG4gICAqIHRocm91Z2ggdGhlIGJhY2tlbmQgZGF0YSBwaXBlbGluZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZWdlbmVyYXRlQWxsRG9jdW1lbnRhdGlvblBlclBhY2thZ2U6IElTdGF0ZU1hY2hpbmU7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGF0ZSBtYWNoaW5lIG9wZXJhdG9ycyBjYW4gdXNlIHRvIHJldHJ5IHByb2Nlc3NpbmcgdW5pbnN0YWxsYWJsZSBwYWNrYWdlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXRyeVVuaW5zdGFsbGFibGVQYWNrYWdlczogSVN0YXRlTWFjaGluZTtcblxuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIHRoYXQgYnVpbGRzIHRoZSBjYXRhbG9nLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNhdGFsb2dCdWlsZGVyOiBDYXRhbG9nQnVpbGRlcjtcblxuICAvKipcbiAgICogVGhlIEVDUyBjbHVzdGVyIHVzZWQgdG8gcnVuIHRhc2tzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGVjc0NsdXN0ZXI6IElDbHVzdGVyO1xuXG4gIC8qKlxuICAgKiBUaGUgRUNTIHRhc2sgbW9uaXRvciB0aGF0IHdhdGNoZXMgb3ZlciB0aGUgYGVjc0NsdXN0ZXJgLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGVjc1Rhc2tNb25pdG9yOiBFY3NUYXNrTW9uaXRvcjtcblxuICAvKipcbiAgICogVGhlIHRyYW5zbGl0ZXJhdG9yIHVzZWQgYnkgdGhpcyBvcmNoZXN0cmF0aW9uIHdvcmtmbG93LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRyYW5zbGl0ZXJhdG9yOiBUcmFuc2xpdGVyYXRvcjtcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE9yY2hlc3RyYXRpb25Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLmRlYWRMZXR0ZXJRdWV1ZSA9IG5ldyBRdWV1ZSh0aGlzLCAnRExRJywge1xuICAgICAgZW5jcnlwdGlvbjogUXVldWVFbmNyeXB0aW9uLktNU19NQU5BR0VELFxuICAgICAgcmV0ZW50aW9uUGVyaW9kOiBEdXJhdGlvbi5kYXlzKDE0KSxcbiAgICAgIHZpc2liaWxpdHlUaW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDE1KSxcbiAgICB9KTtcblxuICAgIHByb3BzLm1vbml0b3JpbmcuYWRkTG93U2V2ZXJpdHlBbGFybShcbiAgICAgICdCYWNrZW5kIE9yY2hlc3RyYXRpb24gRGVhZC1MZXR0ZXIgUXVldWUgaXMgbm90IGVtcHR5JyxcbiAgICAgIG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICAgIGV4cHJlc3Npb246ICdtMSArIG0yJyxcbiAgICAgICAgbGFiZWw6ICdEZWFkLUxldHRlciBRdWV1ZSBub3QgZW1wdHknLFxuICAgICAgICB1c2luZ01ldHJpY3M6IHtcbiAgICAgICAgICBtMTogdGhpcy5kZWFkTGV0dGVyUXVldWUubWV0cmljQXBwcm94aW1hdGVOdW1iZXJPZk1lc3NhZ2VzVmlzaWJsZSh7XG4gICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgbTI6IHRoaXMuZGVhZExldHRlclF1ZXVlLm1ldHJpY0FwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlc05vdFZpc2libGUoe1xuICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgfSkuY3JlYXRlQWxhcm0odGhpcywgJ0RMUUFsYXJtJywge1xuICAgICAgICBhbGFybU5hbWU6IGAke3RoaXMuZGVhZExldHRlclF1ZXVlLm5vZGUucGF0aH0vTm90RW1wdHlgLFxuICAgICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgJ0JhY2tlbmQgb3JjaGVzdHJhdGlvbiBkZWFkLWxldHRlciBxdWV1ZSBpcyBub3QgZW1wdHkuJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICBgUnVuQm9vazogJHtSVU5CT09LX1VSTH1gLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIGBEaXJlY3QgbGluayB0byBxdWV1ZTogJHtzcXNRdWV1ZVVybCh0aGlzLmRlYWRMZXR0ZXJRdWV1ZSl9YCxcbiAgICAgICAgICAnV2FybmluZzogU3RhdGUgTWFjaGluZXMgZXhlY3V0aW9ucyB0aGF0IHNlbnQgbWVzc2FnZXMgdG8gdGhlIERMUSB3aWxsIG5vdCBzaG93IGFzIFwiZmFpbGVkXCIuJyxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOlxuICAgICAgICAgIENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogMixcbiAgICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgICAvLyBTUVMgZG9lcyBub3QgZW1pdCBtZXRyaWNzIGlmIHRoZSBxdWV1ZSBoYXMgYmVlbiBlbXB0eSBmb3IgYSB3aGlsZSwgd2hpY2ggaXMgR09PRC5cbiAgICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5OT1RfQlJFQUNISU5HLFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgY29uc3Qgc2VuZFRvRGVhZExldHRlclF1ZXVlID0gbmV3IHRhc2tzLlNxc1NlbmRNZXNzYWdlKFxuICAgICAgdGhpcyxcbiAgICAgICdTZW5kIHRvIERlYWQgTGV0dGVyIFF1ZXVlJyxcbiAgICAgIHtcbiAgICAgICAgbWVzc2FnZUJvZHk6IFRhc2tJbnB1dC5mcm9tSnNvblBhdGhBdCgnJCcpLFxuICAgICAgICBxdWV1ZTogdGhpcy5kZWFkTGV0dGVyUXVldWUsXG4gICAgICAgIHJlc3VsdFBhdGg6IEpzb25QYXRoLkRJU0NBUkQsXG4gICAgICB9XG4gICAgKS5uZXh0KG5ldyBGYWlsKHRoaXMsICdTZW50IHRvIERMUScpKTtcblxuICAgIGNvbnN0IGlnbm9yZSA9IG5ldyBQYXNzKHRoaXMsICdJZ25vcmUnKTtcblxuICAgIHRoaXMuY2F0YWxvZ0J1aWxkZXIgPSBuZXcgQ2F0YWxvZ0J1aWxkZXIodGhpcywgJ0NhdGFsb2dCdWlsZGVyJywgcHJvcHMpO1xuXG4gICAgY29uc3QgYWRkVG9DYXRhbG9nID0gbmV3IHRhc2tzLkxhbWJkYUludm9rZSh0aGlzLCAnQWRkIHRvIGNhdGFsb2cuanNvbicsIHtcbiAgICAgIGxhbWJkYUZ1bmN0aW9uOiB0aGlzLmNhdGFsb2dCdWlsZGVyLmZ1bmN0aW9uLFxuICAgICAgcmVzdWx0UGF0aDogJyQuY2F0YWxvZ0J1aWxkZXJPdXRwdXQnLFxuICAgICAgcmVzdWx0U2VsZWN0b3I6IHtcbiAgICAgICAgJ0VUYWcuJCc6ICckLlBheWxvYWQuRVRhZycsXG4gICAgICAgICdWZXJzaW9uSWQuJCc6ICckLlBheWxvYWQuVmVyc2lvbklkJyxcbiAgICAgIH0sXG4gICAgfSlcbiAgICAgIC8vIFRoaXMgaGFzIGEgY29uY3VycmVuY3kgb2YgMSwgc28gd2Ugd2FudCB0byBhZ2dyZXNzaXZlbHkgcmV0cnkgYmVpbmcgdGhyb3R0bGVkIGhlcmUuXG4gICAgICAuYWRkUmV0cnkoe1xuICAgICAgICBlcnJvcnM6IFsnTGFtYmRhLlRvb01hbnlSZXF1ZXN0c0V4Y2VwdGlvbiddLFxuICAgICAgICAuLi5USFJPVFRMRV9SRVRSWV9QT0xJQ1ksXG4gICAgICB9KVxuICAgICAgLmFkZENhdGNoKHNlbmRUb0RlYWRMZXR0ZXJRdWV1ZSwge1xuICAgICAgICBlcnJvcnM6IFsnTGFtYmRhLlRvb01hbnlSZXF1ZXN0c0V4Y2VwdGlvbiddLFxuICAgICAgICByZXN1bHRQYXRoOiAnJC5lcnJvcicsXG4gICAgICB9KVxuICAgICAgLmFkZENhdGNoKHNlbmRUb0RlYWRMZXR0ZXJRdWV1ZSwge1xuICAgICAgICBlcnJvcnM6IFsnU3RhdGVzLlRhc2tGYWlsZWQnXSxcbiAgICAgICAgcmVzdWx0UGF0aDogJyQuZXJyb3InLFxuICAgICAgfSlcbiAgICAgIC5hZGRDYXRjaChzZW5kVG9EZWFkTGV0dGVyUXVldWUsIHtcbiAgICAgICAgZXJyb3JzOiBbJ1N0YXRlcy5BTEwnXSxcbiAgICAgICAgcmVzdWx0UGF0aDogJyQuZXJyb3InLFxuICAgICAgfSk7XG5cbiAgICBjb25zdCBuZWVkc0NhdGFsb2dVcGRhdGVGdW5jdGlvbiA9IG5ldyBOZWVkc0NhdGFsb2dVcGRhdGUoXG4gICAgICB0aGlzLFxuICAgICAgJ05lZWRzQ2F0YWxvZ1VwZGF0ZScsXG4gICAgICB7XG4gICAgICAgIGFyY2hpdGVjdHVyZTogZ3Jhdml0b25MYW1iZGFJZkF2YWlsYWJsZSh0aGlzKSxcbiAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgJ1tDb25zdHJ1Y3RIdWIvT3JjaGVzdHJhdGlvbi9OZWVkc0NhdGFsb2dVcGRhdGVdIERldGVybWluZXMgd2hldGhlciBhIHBhY2thZ2UgdmVyc2lvbiByZXF1aXJlcyBhIGNhdGFsb2cgdXBkYXRlJyxcbiAgICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICBDQVRBTE9HX0JVQ0tFVF9OQU1FOiBwcm9wcy5idWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgICBDQVRBTE9HX09CSkVDVF9LRVk6IENBVEFMT0dfS0VZLFxuICAgICAgICB9LFxuICAgICAgICBtZW1vcnlTaXplOiAxXzAyNCxcbiAgICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIH1cbiAgICApO1xuICAgIHByb3BzLmJ1Y2tldC5ncmFudFJlYWQobmVlZHNDYXRhbG9nVXBkYXRlRnVuY3Rpb24pO1xuXG4gICAgLy8gQ2hlY2sgd2hldGhlciB0aGUgY2F0YWxvZyBuZWVkcyB1cGRhdGluZy4gSWYgc28sIHRyaWdnZXIgYWRkVG9DYXRhbG9nLlxuICAgIGNvbnN0IGFkZFRvQ2F0YWxvZ0lmTmVlZGVkID0gbmV3IHRhc2tzLkxhbWJkYUludm9rZShcbiAgICAgIHRoaXMsXG4gICAgICAnQ2hlY2sgd2hldGhlciBjYXRhbG9nIG5lZWRzIHVkcGF0aW5nJyxcbiAgICAgIHtcbiAgICAgICAgbGFtYmRhRnVuY3Rpb246IG5lZWRzQ2F0YWxvZ1VwZGF0ZUZ1bmN0aW9uLFxuICAgICAgICBwYXlsb2FkUmVzcG9uc2VPbmx5OiB0cnVlLFxuICAgICAgICByZXN1bHRQYXRoOiAnJC5jYXRhbG9nTmVlZHNVcGRhdGluZycsXG4gICAgICB9XG4gICAgKVxuICAgICAgLmFkZFJldHJ5KHtcbiAgICAgICAgZXJyb3JzOiBbXG4gICAgICAgICAgJ0xhbWJkYS5Ub29NYW55UmVxdWVzdHNFeGNlcHRpb24nLFxuICAgICAgICAgICdMYW1iZGEuVW5rbm93bicsIC8vIGhhcHBlbnMgd2hlbiBhIGxhbWJkYSB0aW1lcyBvdXQuXG4gICAgICAgIF0sXG4gICAgICAgIC4uLlRIUk9UVExFX1JFVFJZX1BPTElDWSxcbiAgICAgIH0pXG4gICAgICAuYWRkQ2F0Y2goc2VuZFRvRGVhZExldHRlclF1ZXVlLCB7XG4gICAgICAgIGVycm9yczogWydMYW1iZGEuVG9vTWFueVJlcXVlc3RzRXhjZXB0aW9uJywgJ0xhbWJkYS5Vbmtub3duJ10sXG4gICAgICAgIHJlc3VsdFBhdGg6ICckLmVycm9yJyxcbiAgICAgIH0pXG4gICAgICAuYWRkQ2F0Y2goc2VuZFRvRGVhZExldHRlclF1ZXVlLCB7XG4gICAgICAgIGVycm9yczogWydTdGF0ZXMuVGFza0ZhaWxlZCddLFxuICAgICAgICByZXN1bHRQYXRoOiAnJC5lcnJvcicsXG4gICAgICB9KVxuICAgICAgLmFkZENhdGNoKHNlbmRUb0RlYWRMZXR0ZXJRdWV1ZSwge1xuICAgICAgICBlcnJvcnM6IFsnU3RhdGVzLkFMTCddLFxuICAgICAgICByZXN1bHRQYXRoOiAnJC5lcnJvcicsXG4gICAgICB9KVxuICAgICAgLm5leHQoXG4gICAgICAgIG5ldyBDaG9pY2UodGhpcywgJ0lzIGNhdGFsb2cgdXBkYXRlIG5lZWRlZD8nKVxuICAgICAgICAgIC53aGVuKFxuICAgICAgICAgICAgQ29uZGl0aW9uLmJvb2xlYW5FcXVhbHMoJyQuY2F0YWxvZ05lZWRzVXBkYXRpbmcnLCB0cnVlKSxcbiAgICAgICAgICAgIGFkZFRvQ2F0YWxvZ1xuICAgICAgICAgIClcbiAgICAgICAgICAub3RoZXJ3aXNlKG5ldyBTdWNjZWVkKHRoaXMsICdEb25lJykpXG4gICAgICApO1xuXG4gICAgLy8gQGNka3RuL3Byb3ZpZGVyLWF3c2NjIGlzIHRoZSBiaWdnZXN0IGtub3duIHBhY2thZ2UgKDMsOTc5IHN1Ym1vZHVsZXMpIGFuZCBydW5zIGluIH4xNW1pbixcbiAgICAvLyAoYXdzLWNkay1saWIgcnVucyBpbiB+OG1pbikuXG4gICAgLy8gV2UgZ2l2ZSB0aGUgdGFzayBzb21lIGdlbmVyb3VzIGV4dHJhIGFsbG93YW5jZSB0byBjb21wbGV0ZS5cbiAgICAvLyBJZiB0aGUgdGFzayBleGNlZWRzIHRoZSBydW50aW1lLCBpdCdzIHZlcnkgbGlrZWx5IHRoYXQgdGhlcmUgaXMgYW4gaXNzdWUgd2l0aCB0aGUgdGFzayBleGVjdXRpb24uXG4gICAgY29uc3QgdHJhbnNsaXRlcmF0b3JUaW1lb3V0ID0gRHVyYXRpb24ubWludXRlcygzMCk7XG5cbiAgICB0aGlzLmVjc0NsdXN0ZXIgPSBuZXcgQ2x1c3Rlcih0aGlzLCAnQ2x1c3RlcicsIHtcbiAgICAgIGNvbnRhaW5lckluc2lnaHRzOiB0cnVlLFxuICAgICAgZW5hYmxlRmFyZ2F0ZUNhcGFjaXR5UHJvdmlkZXJzOiB0cnVlLFxuICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgfSk7XG4gICAgdGhpcy5lY3NUYXNrTW9uaXRvciA9IG5ldyBFY3NUYXNrTW9uaXRvcih0aGlzLmVjc0NsdXN0ZXIsICdNb25pdG9yJywge1xuICAgICAgY2x1c3RlcjogdGhpcy5lY3NDbHVzdGVyLFxuICAgICAgdGltZW91dDogdHJhbnNsaXRlcmF0b3JUaW1lb3V0LnBsdXMoRHVyYXRpb24ubWludXRlcygxMCkpLFxuICAgIH0pO1xuXG4gICAgdGhpcy50cmFuc2xpdGVyYXRvciA9IG5ldyBUcmFuc2xpdGVyYXRvcih0aGlzLCAnVHJhbnNsaXRlcmF0b3InLCBwcm9wcyk7XG5cbiAgICBjb25zdCBkZWZpbml0aW9uID0gbmV3IFBhc3ModGhpcywgJ1RyYWNrIEV4ZWN1dGlvbiBJbmZvcycsIHtcbiAgICAgIGlucHV0UGF0aDogJyQkLkV4ZWN1dGlvbicsXG4gICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICdJZC4kJzogJyQuSWQnLFxuICAgICAgICAnTmFtZS4kJzogJyQuTmFtZScsXG4gICAgICAgICdSb2xlQXJuLiQnOiAnJC5Sb2xlQXJuJyxcbiAgICAgICAgJ1N0YXJ0VGltZS4kJzogJyQuU3RhcnRUaW1lJyxcbiAgICAgIH0sXG4gICAgICByZXN1bHRQYXRoOiAnJC4kVGFza0V4ZWN1dGlvbicsXG4gICAgfSlcbiAgICAgIC5uZXh0KFxuICAgICAgICBuZXcgUGFzcyh0aGlzLCAnUHJlcGFyZSBkb2MtZ2VuIEVDUyBDb21tYW5kJywge1xuICAgICAgICAgIHBhcmFtZXRlcnM6IHsgJ2NvbW1hbmQuJCc6ICdTdGF0ZXMuQXJyYXkoU3RhdGVzLkpzb25Ub1N0cmluZygkKSknIH0sXG4gICAgICAgICAgcmVzdWx0UGF0aDogJyQuZG9jR2VuJyxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5uZXh0KFxuICAgICAgICB0aGlzLnRyYW5zbGl0ZXJhdG9yXG4gICAgICAgICAgLmNyZWF0ZUVjc1J1blRhc2sodGhpcywgJ0dlbmVyYXRlIGRvY3MnLCB7XG4gICAgICAgICAgICBjbHVzdGVyOiB0aGlzLmVjc0NsdXN0ZXIsXG4gICAgICAgICAgICBpbnB1dFBhdGg6ICckLmRvY0dlbi5jb21tYW5kJyxcbiAgICAgICAgICAgIC8vIHRoZSBvdXRwdXQgZnJvbSB0aGUgdHJhbnNsaXRlcmF0b3IgdGFzayBpcyBub3QgdXNlZFxuICAgICAgICAgICAgLy8gd2UganVzdCBuZWVkIHRvIGtub3cgaWYgaXQgc3VjY2VlZGVkXG4gICAgICAgICAgICByZXN1bHRQYXRoOiBKc29uUGF0aC5ESVNDQVJELFxuICAgICAgICAgICAgLy8gYXdzLWNkay1saWIgc3VjY2VlZHMgaW4gcm91Z2hseSAxIGhvdXIsIHNvIHRoaXMgc2hvdWxkIGdpdmUgdXNcbiAgICAgICAgICAgIC8vIGVub3VnaCBvZiBhIGJ1ZmZlciBhbmQgcHJvYmFibHkgYWNjb3VudCBmb3IgYWxsIG90aGVyIGxpYnJhcmllcyBvdXQgdGhlcmUuXG4gICAgICAgICAgICB0aW1lb3V0OiB0cmFuc2xpdGVyYXRvclRpbWVvdXQsXG4gICAgICAgICAgICB2cGNTdWJuZXRzOiBwcm9wcy52cGNTdWJuZXRzLFxuICAgICAgICAgICAgc2VjdXJpdHlHcm91cHM6IHByb3BzLnZwY1NlY3VyaXR5R3JvdXBzLFxuICAgICAgICAgICAgLy8gVGhlIHRhc2sgY29kZSBzZW5kcyBhIGhlYXJ0YmVhdCBiYWNrIGV2ZXJ5IG1pbnV0ZSwgYnV0IGluIHJhcmVcbiAgICAgICAgICAgIC8vIGNhc2VzIHRoZSBmaXJzdCBoZWFydGJlYXQgbWF5IHRha2UgYSB3aGlsZSB0byBjb21lIGJhY2sgZHVlIHRvXG4gICAgICAgICAgICAvLyB0aGUgdGltZSBpdCB0YWtlcyB0byBwcm92aXNpb24gdGhlIHRhc2sgaW4gdGhlIGNsdXN0ZXIsIHNvIHdlXG4gICAgICAgICAgICAvLyBnaXZlIGEgbW9yZSBnZW5lcm91cyBidWZmZXIgaGVyZS5cbiAgICAgICAgICAgIGhlYXJ0YmVhdDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC8vIERvIG5vdCByZXRyeSBOb1NwYWNlTGVmdE9uRGV2aWNlIGVycm9ycywgdGhlc2UgYXJlIHR5cGljYWxseSBub3QgdHJhbnNpZW50LlxuICAgICAgICAgIC5hZGRSZXRyeSh7XG4gICAgICAgICAgICBlcnJvcnM6IFsnanNpaS1kb2NnZW4uTm9TcGFjZUxlZnRPbkRldmljZSddLFxuICAgICAgICAgICAgbWF4QXR0ZW1wdHM6IDAsXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuYWRkUmV0cnkoe1xuICAgICAgICAgICAgZXJyb3JzOiBbXG4gICAgICAgICAgICAgICdFQ1MuQW1hem9uRUNTRXhjZXB0aW9uJywgLy8gVGFzayBmYWlsZWQgc3RhcnRpbmcsIHVzdWFsbHkgZHVlIHRvIHRocm90dGxlIC8gb3V0IG9mIGNhcGFjaXR5XG4gICAgICAgICAgICAgICdFQ1MuSW52YWxpZFBhcmFtZXRlckV4Y2VwdGlvbicsIC8vIFRoaXMgaXMgcmV0dXJuZWQgd2hlbiBFQ1MgZ2V0cyB0aHJvdHRsZWQgd2hlbiB0cnlpbmcgdG8gYWNjZXNzIFZQQy9TR3MuXG4gICAgICAgICAgICAgICdqc2lpLWRvY2dlbi5OcG1FcnJvci5FNDI5JywgLy8gSFRUUCA0MjkgKFwiVG9vIE1hbnkgUmVxdWVzdHNcIikgZnJvbSBDb2RlQXJ0aWZhY3QncyBTMyBidWNrZXRcbiAgICAgICAgICAgICAgJ2pzaWktY29kZ2VuLk5wbUVycm9yLkVQUk9UTycsIC8vIFNwb3JhZGljIFRMUyBuZWdvdGlhdGlvbiBmYWlsdXJlcyB3ZSBzZWUgaW4gbG9ncywgdHJhbnNpZW50XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLi4uRE9DR0VOX1RIUk9UVExFX1JFVFJZX1BPTElDWSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5hZGRSZXRyeSh7XG4gICAgICAgICAgICBlcnJvcnM6IFsnanNpaS1kb2NnZW4uTnBtRXJyb3IuRVRBUkdFVCddLCAvLyBTZWVuIHdoZW4gZGVwZW5kZW5jaWVzIGFyZW4ndCBhdmFpbGFibGUgeWV0XG4gICAgICAgICAgICAvLyBXZSdsbCB3YWl0IGxvbmdlciBiZXR3ZWVuIHJldHJpZXMuIFRoaXMgaXMgdG8gYWNjb3VudCBmb3IgQ29kZUFydGlmYWN0J3MgbGFnIGJlaGluZCBucG1cbiAgICAgICAgICAgIGJhY2tvZmZSYXRlOiAyLFxuICAgICAgICAgICAgaW50ZXJ2YWw6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgICAgICBtYXhBdHRlbXB0czogMyxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5hZGRSZXRyeSh7XG4gICAgICAgICAgICAvLyBUaGUgdGFzayBoYXMgZmFpbGVkIGZvciBhbiB1bmtub3duIHJlYXNvbiwgb3Igc3RvcHBlZCByZXNwb25kaW5nLCBvciBpcyBqdXN0IHRha2luZyBhIGxvbmcgdGltZSB0byBwcm92aXNpb25cbiAgICAgICAgICAgIC8vIFdlIHdpbGwgYXR0ZW1wdCBhIGNvdXBsZSBvZiByZXRyaWVzIHdpdGggc29tZSB0aW1lIGluIGJldHdlZW4uXG4gICAgICAgICAgICAvLyBUaGlzIGFsc28gY292ZXJzIHRoZSAnU3RhdGVzLlRpbWVvdXQnIGVycm9yLCBidXQgd2UgYXJlIG5vdCBnaXZpbmcgdGltZW91dCBlcnJvciBhbnkgc3BlY2lhbCB0cmVhdG1lbnQuXG4gICAgICAgICAgICAvLyBJZiB0aGUgdGFzayB0aW1lb3V0IGlzIHJlYWNoZWQsIGl0IGlzIG1vc3QgbGlrZWx5IGFuIGlzc3VlIHdpdGggdGhlIHRhc2sgdGhhdCBuZWVkcyBpbnZlc3RpZ2F0aW9uLlxuICAgICAgICAgICAgYmFja29mZlJhdGU6IDIsXG4gICAgICAgICAgICBpbnRlcnZhbDogRHVyYXRpb24uc2Vjb25kcygzMCksXG4gICAgICAgICAgICBtYXhBdHRlbXB0czogMixcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5hZGRDYXRjaChpZ25vcmUsIHtcbiAgICAgICAgICAgIGVycm9yczogW1VOUFJPQ0VTU0FCTEVfUEFDS0FHRV9FUlJPUl9OQU1FXSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5hZGRDYXRjaChzZW5kVG9EZWFkTGV0dGVyUXVldWUsIHtcbiAgICAgICAgICAgIGVycm9yczogWydTdGF0ZXMuVGltZW91dCddLFxuICAgICAgICAgICAgcmVzdWx0UGF0aDogJyQuZXJyb3InLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmFkZENhdGNoKHNlbmRUb0RlYWRMZXR0ZXJRdWV1ZSwge1xuICAgICAgICAgICAgZXJyb3JzOiBbJ0VDUy5BbWF6b25FQ1NFeGNlcHRpb24nLCAnRUNTLkludmFsaWRQYXJhbWV0ZXJFeGNlcHRpb24nXSxcbiAgICAgICAgICAgIHJlc3VsdFBhdGg6ICckLmVycm9yJyxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5hZGRDYXRjaChzZW5kVG9EZWFkTGV0dGVyUXVldWUsIHtcbiAgICAgICAgICAgIGVycm9yczogWydTdGF0ZXMuVGFza0ZhaWxlZCddLFxuICAgICAgICAgICAgcmVzdWx0UGF0aDogJyQuZXJyb3InLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmFkZENhdGNoKHNlbmRUb0RlYWRMZXR0ZXJRdWV1ZSwge1xuICAgICAgICAgICAgZXJyb3JzOiBbJ1N0YXRlcy5BTEwnXSxcbiAgICAgICAgICAgIHJlc3VsdFBhdGg6ICckLmVycm9yJyxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5uZXh0KGFkZFRvQ2F0YWxvZ0lmTmVlZGVkKVxuICAgICAgKTtcblxuICAgIHRoaXMuc3RhdGVNYWNoaW5lID0gbmV3IFN0YXRlTWFjaGluZSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBkZWZpbml0aW9uLFxuICAgICAgc3RhdGVNYWNoaW5lTmFtZTogc3RhdGVNYWNoaW5lTmFtZUZyb20odGhpcy5ub2RlLnBhdGgpLFxuICAgICAgdGltZW91dDogRHVyYXRpb24uZGF5cygxKSwgLy8gQW1wbGUgdGltZSBmb3IgcmV0cmllcywgZXRjLi4uXG4gICAgICB0cmFjaW5nRW5hYmxlZDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy52cGMpIHtcbiAgICAgIC8vIEVuc3VyZSB0aGUgU3RhdGUgTWFjaGluZSBkb2VzIG5vdCBnZXQgdG8gcnVuIGJlZm9yZSB0aGUgVlBDIGNhbiBiZSB1c2VkLlxuICAgICAgdGhpcy5zdGF0ZU1hY2hpbmUubm9kZS5hZGREZXBlbmRlbmN5KFxuICAgICAgICBwcm9wcy52cGMuaW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBhZGRBbGFybShcbiAgICAgICdCYWNrZW5kIE9yY2hlc3RyYXRpb24gRmFpbGVkJyxcbiAgICAgIHRoaXMuc3RhdGVNYWNoaW5lXG4gICAgICAgIC5tZXRyaWNGYWlsZWQoKVxuICAgICAgICAuY3JlYXRlQWxhcm0odGhpcywgJ09yY2hlc3RyYXRpb25GYWlsZWQnLCB7XG4gICAgICAgICAgYWxhcm1OYW1lOiBgJHt0aGlzLnN0YXRlTWFjaGluZS5ub2RlLnBhdGh9LyR7XG4gICAgICAgICAgICB0aGlzLnN0YXRlTWFjaGluZS5tZXRyaWNGYWlsZWQoKS5tZXRyaWNOYW1lXG4gICAgICAgICAgfWAsXG4gICAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjogW1xuICAgICAgICAgICAgJ0JhY2tlbmQgb3JjaGVzdHJhdGlvbiBmYWlsZWQhJyxcbiAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgYFJ1bkJvb2s6ICR7UlVOQk9PS19VUkx9YCxcbiAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgYERpcmVjdCBsaW5rIHRvIHN0YXRlIG1hY2hpbmU6ICR7c3RhdGVNYWNoaW5lVXJsKFxuICAgICAgICAgICAgICB0aGlzLnN0YXRlTWFjaGluZVxuICAgICAgICAgICAgKX1gLFxuICAgICAgICAgICAgJ1dhcm5pbmc6IG1lc3NhZ2VzIHRoYXQgcmVzdWx0ZWQgaW4gYSBmYWlsZWQgZXhlY3R1aW9uIHdpbGwgTk9UIGJlIGluIHRoZSBETFEhJyxcbiAgICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjpcbiAgICAgICAgICAgIENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgICAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgICAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgICAgfSksXG4gICAgICBBbGFybVNldmVyaXR5LkhJR0gsXG4gICAgICBwcm9wcy5tb25pdG9yaW5nXG4gICAgKTtcblxuICAgIHByb3BzLm1vbml0b3JpbmcuYWRkSGlnaFNldmVyaXR5QWxhcm0oXG4gICAgICAnRXhlY3V0aW9uIEZhaWx1cmUgUmF0ZSBhYm92ZSA3NSUnLFxuICAgICAgdGhpcy5tZXRyaWNTdGF0ZXNFeGVjdXRpb25GYWlsdXJlUmF0ZSgpLmNyZWF0ZUFsYXJtKFxuICAgICAgICB0aGlzLFxuICAgICAgICAnRmFpbHVyZVJhdGVBbGFybScsXG4gICAgICAgIHtcbiAgICAgICAgICBhbGFybU5hbWU6IGAke3RoaXMuc3RhdGVNYWNoaW5lLm5vZGUucGF0aH0vRXhlY3V0aW9uRmFpbHVyZVJhdGVgLFxuICAgICAgICAgIGFsYXJtRGVzY3JpcHRpb246ICdFeGVjdXRpb24gRmFpbHVyZSBSYXRlIGFib3ZlIDc1JScsXG4gICAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOlxuICAgICAgICAgICAgQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDEsXG4gICAgICAgICAgdGhyZXNob2xkOiA3NSxcbiAgICAgICAgfVxuICAgICAgKVxuICAgICk7XG5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIHRvIGJlIG1hbnVhbGx5IHRyaWdnZXJlZCBieSBhbiBvcGVycmF0b3IgdG9cbiAgICAvLyBhdHRlbXB0IHJlZHJpdmluZyBtZXNzYWdlcyBmcm9tIHRoZSBETFEuXG4gICAgdGhpcy5yZWRyaXZlRnVuY3Rpb24gPSBuZXcgUmVkcml2ZVN0YXRlTWFjaGluZSh0aGlzLCAnUmVkcml2ZScsIHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnW0NvbnN0cnVjdEh1Yi9SZWRyaXZlXSBNYW51YWxseSByZWRyaXZlcyBhbGwgbWVzc2FnZXMgZnJvbSB0aGUgYmFja2VuZCBkZWFkIGxldHRlciBxdWV1ZScsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBTVEFURV9NQUNISU5FX0FSTjogdGhpcy5zdGF0ZU1hY2hpbmUuc3RhdGVNYWNoaW5lQXJuLFxuICAgICAgICBRVUVVRV9VUkw6IHRoaXMuZGVhZExldHRlclF1ZXVlLnF1ZXVlVXJsLFxuICAgICAgfSxcbiAgICAgIG1lbW9yeVNpemU6IDFfMDI0LFxuICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcygxNSksXG4gICAgICB0cmFjaW5nOiBUcmFjaW5nLkFDVElWRSxcbiAgICB9KTtcbiAgICB0aGlzLnN0YXRlTWFjaGluZS5ncmFudFN0YXJ0RXhlY3V0aW9uKHRoaXMucmVkcml2ZUZ1bmN0aW9uKTtcbiAgICB0aGlzLmRlYWRMZXR0ZXJRdWV1ZS5ncmFudENvbnN1bWVNZXNzYWdlcyh0aGlzLnJlZHJpdmVGdW5jdGlvbik7XG4gICAgcHJvcHMub3ZlcnZpZXdEYXNoYm9hcmQuYWRkRExRTWV0cmljVG9EYXNoYm9hcmQoXG4gICAgICAnT3JjaGVzdHJhdGlvbiBETFEnLFxuICAgICAgdGhpcy5kZWFkTGV0dGVyUXVldWUsXG4gICAgICB0aGlzLnJlZHJpdmVGdW5jdGlvblxuICAgICk7XG5cbiAgICAvLyBUaGUgd29ya2Zsb3cgaXMgaW50ZW5kZWQgdG8gYmUgbWFudWFsbHkgdHJpZ2dlcmVkIGJ5IGFuIG9wZXJhdG9yIHRvXG4gICAgLy8gcmVwcm9jZXNzIGFsbCBwYWNrYWdlIHZlcnNpb25zIGN1cnJlbnRseSBpbiBzdG9yZSB0aHJvdWdoIHRoZSBvcmNoZXN0cmF0b3IuXG4gICAgY29uc3QgcmVnZW5lcmF0ZUFsbERvY3VtZW50YXRpb24gPSBuZXcgUmVnZW5lcmF0ZUFsbERvY3VtZW50YXRpb24oXG4gICAgICB0aGlzLFxuICAgICAgJ1JlZ2VuZXJhdGVBbGxEb2N1bWVudGF0aW9uJyxcbiAgICAgIHtcbiAgICAgICAgYnVja2V0OiBwcm9wcy5idWNrZXQsXG4gICAgICAgIHN0YXRlTWFjaGluZTogdGhpcy5zdGF0ZU1hY2hpbmUsXG4gICAgICB9XG4gICAgKTtcbiAgICB0aGlzLnJlZ2VuZXJhdGVBbGxEb2N1bWVudGF0aW9uID0gcmVnZW5lcmF0ZUFsbERvY3VtZW50YXRpb24uc3RhdGVNYWNoaW5lO1xuICAgIHRoaXMucmVnZW5lcmF0ZUFsbERvY3VtZW50YXRpb25QZXJQYWNrYWdlID1cbiAgICAgIHJlZ2VuZXJhdGVBbGxEb2N1bWVudGF0aW9uLnByb2Nlc3NQYWNrYWdlVmVyc2lvbnM7XG5cbiAgICAvLyBDcmVhdGUgcmV0cnkgdW5pbnN0YWxsYWJsZSBwYWNrYWdlcyB3b3JrZmxvd1xuICAgIGNvbnN0IHJldHJ5VW5pbnN0YWxsYWJsZSA9IG5ldyBSZXRyeVVuaW5zdGFsbGFibGVQYWNrYWdlcyhcbiAgICAgIHRoaXMsXG4gICAgICAnUmV0cnlVbmluc3RhbGxhYmxlUGFja2FnZXMnLFxuICAgICAge1xuICAgICAgICBidWNrZXQ6IHByb3BzLmJ1Y2tldCxcbiAgICAgICAgb3JjaGVzdHJhdGlvblN0YXRlTWFjaGluZTogdGhpcy5zdGF0ZU1hY2hpbmUsXG4gICAgICB9XG4gICAgKTtcbiAgICB0aGlzLnJldHJ5VW5pbnN0YWxsYWJsZVBhY2thZ2VzID0gcmV0cnlVbmluc3RhbGxhYmxlLnN0YXRlTWFjaGluZTtcblxuICAgIHByb3BzLm92ZXJ2aWV3RGFzaGJvYXJkLmFkZENvbmN1cnJlbnRFeGVjdXRpb25NZXRyaWNUb0Rhc2hib2FyZChcbiAgICAgIG5lZWRzQ2F0YWxvZ1VwZGF0ZUZ1bmN0aW9uLFxuICAgICAgJ05lZWRzQ2F0YWxvZ1VwZGF0ZUxhbWJkYSdcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG1ldHJpY1N0YXRlc0V4ZWN1dGlvbkZhaWx1cmVSYXRlKFxuICAgIG9wdHM/OiBNYXRoRXhwcmVzc2lvbk9wdGlvbnNcbiAgKTogTWF0aEV4cHJlc3Npb24ge1xuICAgIHJldHVybiBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgLi4ub3B0cyxcbiAgICAgIC8vIENhbGN1bGF0ZXMgdGhlICUgRXhlY3V0aW9uc0ZhaWxlZCBmcm9tIHRoZSBFeGVjdXRpb25zU3RhcnRlZC5cbiAgICAgIGV4cHJlc3Npb246ICcxMDAgKiBtZXhlY3V0aW9uc0ZhaWxlZCAvIG1leGVjdXRpb25zU3RhcnRlZCcsXG4gICAgICB1c2luZ01ldHJpY3M6IHtcbiAgICAgICAgbWV4ZWN1dGlvbnNGYWlsZWQ6IHRoaXMubWV0cmljU3RhdGVzRXhlY3V0aW9uc0ZhaWxlZCgpLFxuICAgICAgICBtZXhlY3V0aW9uc1N0YXJ0ZWQ6IHRoaXMubWV0cmljU3RhdGVzRXhlY3V0aW9uc1N0YXJ0ZWQoKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbWV0cmljU3RhdGVzRXhlY3V0aW9uc0ZhaWxlZChvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHsgQ2x1c3Rlck5hbWU6IHRoaXMuZWNzQ2x1c3Rlci5jbHVzdGVyTmFtZSB9LFxuICAgICAgbWV0cmljTmFtZTogJ0V4ZWN1dGlvbnNGYWlsZWQnLFxuICAgICAgbmFtZXNwYWNlOiAnQVdTL1N0YXRlcycsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbWV0cmljU3RhdGVzRXhlY3V0aW9uc1N0YXJ0ZWQob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLlNVTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7IEV4ZWN1dGlvbk1ldHJpY3M6IHRoaXMuc3RhdGVNYWNoaW5lLnN0YXRlTWFjaGluZUFybiB9LFxuICAgICAgbWV0cmljTmFtZTogJ0V4ZWN1dGlvbnNTdGFydGVkJyxcbiAgICAgIG5hbWVzcGFjZTogJ0FXUy9TdGF0ZXMnLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG1ldHJpY0Vjc1Rhc2tDb3VudChvcHRzOiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5TVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgZGltZW5zaW9uc01hcDogeyBFeGVjdXRpb25NZXRyaWNzOiB0aGlzLnN0YXRlTWFjaGluZS5zdGF0ZU1hY2hpbmVBcm4gfSxcbiAgICAgIG1ldHJpY05hbWU6ICdUYXNrQ291bnQnLFxuICAgICAgbmFtZXNwYWNlOiAnRUNTL0NvbnRhaW5lckluc2lnaHRzJyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBtZXRyaWNFY3NDcHVSZXNlcnZlZChvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUFYSU1VTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7IENsdXN0ZXJOYW1lOiB0aGlzLmVjc0NsdXN0ZXIuY2x1c3Rlck5hbWUgfSxcbiAgICAgIG1ldHJpY05hbWU6ICdDcHVSZXNlcnZlZCcsXG4gICAgICBuYW1lc3BhY2U6ICdFQ1MvQ29udGFpbmVySW5zaWdodHMnLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG1ldHJpY0Vjc0NwdVV0aWxpemVkKG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5NQVhJTVVNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHsgQ2x1c3Rlck5hbWU6IHRoaXMuZWNzQ2x1c3Rlci5jbHVzdGVyTmFtZSB9LFxuICAgICAgbWV0cmljTmFtZTogJ0NwdVV0aWxpemVkJyxcbiAgICAgIG5hbWVzcGFjZTogJ0VDUy9Db250YWluZXJJbnNpZ2h0cycsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbWV0cmljRWNzQ3B1VXRpbGl6YXRpb24ob3B0cz86IE1hdGhFeHByZXNzaW9uT3B0aW9ucyk6IE1hdGhFeHByZXNzaW9uIHtcbiAgICByZXR1cm4gbmV3IE1hdGhFeHByZXNzaW9uKHtcbiAgICAgIC4uLm9wdHMsXG4gICAgICAvLyBDYWxjdWxhdGVzIHRoZSAlIENQVSB1dGlsaXphdGlvbiBmcm9tIHRoZSBDUFUgdW5pdHMgdXRpbGl6YXRpb24gJlxuICAgICAgLy8gcmVzZXJ2YXRpb24uIEZJTEwgaXMgdXNlZCB0byBtYWtlIGEgbm9uLXNwYXJzZSB0aW1lLXNlcmllcyAodGhlIG1ldHJpY3NcbiAgICAgIC8vIGFyZSBub3QgZW1pdHRlZCBpZiBubyB0YXNrIHJ1bnMpXG4gICAgICBleHByZXNzaW9uOiAnMTAwICogRklMTChtQ3B1VXRpbGl6ZWQsIDApIC8gRklMTChtQ3B1UmVzZXJ2ZWQsIFJFUEVBVCknLFxuICAgICAgdXNpbmdNZXRyaWNzOiB7XG4gICAgICAgIG1DcHVSZXNlcnZlZDogdGhpcy5tZXRyaWNFY3NDcHVSZXNlcnZlZCgpLFxuICAgICAgICBtQ3B1VXRpbGl6ZWQ6IHRoaXMubWV0cmljRWNzQ3B1VXRpbGl6ZWQoKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbWV0cmljRWNzTWVtb3J5UmVzZXJ2ZWQob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLk1BWElNVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgZGltZW5zaW9uc01hcDogeyBDbHVzdGVyTmFtZTogdGhpcy5lY3NDbHVzdGVyLmNsdXN0ZXJOYW1lIH0sXG4gICAgICBtZXRyaWNOYW1lOiAnTWVtb3J5UmVzZXJ2ZWQnLFxuICAgICAgbmFtZXNwYWNlOiAnRUNTL0NvbnRhaW5lckluc2lnaHRzJyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBtZXRyaWNFY3NNZW1vcnlVdGlsaXplZChvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUFYSU1VTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7IENsdXN0ZXJOYW1lOiB0aGlzLmVjc0NsdXN0ZXIuY2x1c3Rlck5hbWUgfSxcbiAgICAgIG1ldHJpY05hbWU6ICdNZW1vcnlVdGlsaXplZCcsXG4gICAgICBuYW1lc3BhY2U6ICdFQ1MvQ29udGFpbmVySW5zaWdodHMnLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG1ldHJpY0Vjc01lbW9yeVV0aWxpemF0aW9uKFxuICAgIG9wdHM/OiBNYXRoRXhwcmVzc2lvbk9wdGlvbnNcbiAgKTogTWF0aEV4cHJlc3Npb24ge1xuICAgIHJldHVybiBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgLi4ub3B0cyxcbiAgICAgIC8vIENhbGN1bGF0ZXMgdGhlICUgbWVtb3J5IHV0aWxpemF0aW9uIGZyb20gdGhlIFJBTSB1dGlsaXphdGlvbiAmXG4gICAgICAvLyByZXNlcnZhdGlvbi4gRklMTCBpcyB1c2VkIHRvIG1ha2UgYSBub24tc3BhcnNlIHRpbWUtc2VyaWVzICh0aGUgbWV0cmljc1xuICAgICAgLy8gYXJlIG5vdCBlbWl0dGVkIGlmIG5vIHRhc2sgcnVucylcbiAgICAgIGV4cHJlc3Npb246XG4gICAgICAgICcxMDAgKiBGSUxMKG1NZW1vcnlVdGlsaXplZCwgMCkgLyBGSUxMKG1NZW1vcnlSZXNlcnZlZCwgUkVQRUFUKScsXG4gICAgICB1c2luZ01ldHJpY3M6IHtcbiAgICAgICAgbU1lbW9yeVJlc2VydmVkOiB0aGlzLm1ldHJpY0Vjc01lbW9yeVJlc2VydmVkKCksXG4gICAgICAgIG1NZW1vcnlVdGlsaXplZDogdGhpcy5tZXRyaWNFY3NNZW1vcnlVdGlsaXplZCgpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBtZXRyaWNFY3NOZXR3b3JrUnhCeXRlcyhvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUFYSU1VTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7IENsdXN0ZXJOYW1lOiB0aGlzLmVjc0NsdXN0ZXIuY2x1c3Rlck5hbWUgfSxcbiAgICAgIG1ldHJpY05hbWU6ICdOZXR3b3JrUnhCeXRlcycsXG4gICAgICBuYW1lc3BhY2U6ICdFQ1MvQ29udGFpbmVySW5zaWdodHMnLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG1ldHJpY0Vjc05ldHdvcmtUeEJ5dGVzKG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5NQVhJTVVNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHsgQ2x1c3Rlck5hbWU6IHRoaXMuZWNzQ2x1c3Rlci5jbHVzdGVyTmFtZSB9LFxuICAgICAgbWV0cmljTmFtZTogJ05ldHdvcmtUeEJ5dGVzJyxcbiAgICAgIG5hbWVzcGFjZTogJ0VDUy9Db250YWluZXJJbnNpZ2h0cycsXG4gICAgfSk7XG4gIH1cbn1cblxuaW50ZXJmYWNlIFJlZ2VuZXJhdGVBbGxEb2N1bWVudGF0aW9uUHJvcHMge1xuICByZWFkb25seSBidWNrZXQ6IElCdWNrZXQ7XG4gIHJlYWRvbmx5IHN0YXRlTWFjaGluZTogSVN0YXRlTWFjaGluZTtcbn1cblxuY2xhc3MgUmVnZW5lcmF0ZUFsbERvY3VtZW50YXRpb24gZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhdGVNYWNoaW5lOiBTdGF0ZU1hY2hpbmU7XG4gIHB1YmxpYyByZWFkb25seSBwcm9jZXNzUGFja2FnZVZlcnNpb25zOiBTdGF0ZU1hY2hpbmU7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogUmVnZW5lcmF0ZUFsbERvY3VtZW50YXRpb25Qcm9wc1xuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgcHJvY2Vzc1ZlcnNpb25zID0gbmV3IENob2ljZSh0aGlzLCAnR2V0IHBhY2thZ2UgdmVyc2lvbnMgcGFnZScpXG4gICAgICAud2hlbihcbiAgICAgICAgQ29uZGl0aW9uLmlzUHJlc2VudCgnJC5yZXNwb25zZS5OZXh0Q29udGludWF0aW9uVG9rZW4nKSxcbiAgICAgICAgbmV3IHRhc2tzLkNhbGxBd3NTZXJ2aWNlKHRoaXMsICdOZXh0IHZlcnNpb25zIHBhZ2UnLCB7XG4gICAgICAgICAgc2VydmljZTogJ3MzJyxcbiAgICAgICAgICBhY3Rpb246ICdsaXN0T2JqZWN0c1YyJyxcbiAgICAgICAgICBpYW1BY3Rpb246ICdzMzpMaXN0QnVja2V0JyxcbiAgICAgICAgICBpYW1SZXNvdXJjZXM6IFtwcm9wcy5idWNrZXQuYnVja2V0QXJuXSxcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBCdWNrZXQ6IHByb3BzLmJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgICAgICAgQ29udGludWF0aW9uVG9rZW46IEpzb25QYXRoLnN0cmluZ0F0KFxuICAgICAgICAgICAgICAnJC5yZXNwb25zZS5OZXh0Q29udGludWF0aW9uVG9rZW4nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgRGVsaW1pdGVyOiAnLycsXG4gICAgICAgICAgICBQcmVmaXg6IEpzb25QYXRoLnN0cmluZ0F0KCckLlByZWZpeCcpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzdWx0UGF0aDogJyQucmVzcG9uc2UnLFxuICAgICAgICB9KS5hZGRSZXRyeSh7IGVycm9yczogWydTMy5TZGtDbGllbnRFeGNlcHRpb24nXSB9KVxuICAgICAgKVxuICAgICAgLm90aGVyd2lzZShcbiAgICAgICAgbmV3IHRhc2tzLkNhbGxBd3NTZXJ2aWNlKHRoaXMsICdGaXJzdCB2ZXJzaW9ucyBwYWdlJywge1xuICAgICAgICAgIHNlcnZpY2U6ICdzMycsXG4gICAgICAgICAgYWN0aW9uOiAnbGlzdE9iamVjdHNWMicsXG4gICAgICAgICAgaWFtQWN0aW9uOiAnczM6TGlzdEJ1Y2tldCcsXG4gICAgICAgICAgaWFtUmVzb3VyY2VzOiBbcHJvcHMuYnVja2V0LmJ1Y2tldEFybl0sXG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgQnVja2V0OiBwcm9wcy5idWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgICAgIERlbGltaXRlcjogJy8nLFxuICAgICAgICAgICAgUHJlZml4OiBKc29uUGF0aC5zdHJpbmdBdCgnJC5QcmVmaXgnKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc3VsdFBhdGg6ICckLnJlc3BvbnNlJyxcbiAgICAgICAgfSkuYWRkUmV0cnkoeyBlcnJvcnM6IFsnUzMuU2RrQ2xpZW50RXhjZXB0aW9uJ10gfSlcbiAgICAgIClcbiAgICAgIC5hZnRlcndhcmRzKClcbiAgICAgIC5uZXh0KFxuICAgICAgICBuZXcgTWFwKHRoaXMsICdGb3IgZWFjaCBrZXkgcHJlZml4Jywge1xuICAgICAgICAgIGl0ZW1zUGF0aDogJyQucmVzcG9uc2UuQ29tbW9uUHJlZml4ZXMnLFxuICAgICAgICAgIHJlc3VsdFBhdGg6IEpzb25QYXRoLkRJU0NBUkQsXG4gICAgICAgIH0pLml0ZXJhdG9yKFxuICAgICAgICAgIG5ldyB0YXNrcy5TdGVwRnVuY3Rpb25zU3RhcnRFeGVjdXRpb24oXG4gICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgJ1N0YXJ0IE9yY2hlc3RyYXRpb24gV29ya2Zsb3cnLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzdGF0ZU1hY2hpbmU6IHByb3BzLnN0YXRlTWFjaGluZSxcbiAgICAgICAgICAgICAgYXNzb2NpYXRlV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgICAgaW5wdXQ6IFRhc2tJbnB1dC5mcm9tT2JqZWN0KHtcbiAgICAgICAgICAgICAgICBidWNrZXQ6IHByb3BzLmJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgICAgICAgICAgIGFzc2VtYmx5OiB7XG4gICAgICAgICAgICAgICAgICBrZXk6IEpzb25QYXRoLnN0cmluZ0F0KFxuICAgICAgICAgICAgICAgICAgICBgU3RhdGVzLkZvcm1hdCgne30ke0FTU0VNQkxZX0tFWV9TVUZGSVguc3Vic3RyKFxuICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgKX0nLCAkLlByZWZpeClgXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICAgICAgICAgIGtleTogSnNvblBhdGguc3RyaW5nQXQoXG4gICAgICAgICAgICAgICAgICAgIGBTdGF0ZXMuRm9ybWF0KCd7fSR7TUVUQURBVEFfS0VZX1NVRkZJWC5zdWJzdHIoXG4gICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICApfScsICQuUHJlZml4KWBcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBwYWNrYWdlOiB7XG4gICAgICAgICAgICAgICAgICBrZXk6IEpzb25QYXRoLnN0cmluZ0F0KFxuICAgICAgICAgICAgICAgICAgICBgU3RhdGVzLkZvcm1hdCgne30ke1BBQ0tBR0VfS0VZX1NVRkZJWC5zdWJzdHIoXG4gICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICApfScsICQuUHJlZml4KWBcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIGludGVncmF0aW9uUGF0dGVybjogSW50ZWdyYXRpb25QYXR0ZXJuLlJFUVVFU1RfUkVTUE9OU0UsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKVxuICAgICAgICAgICAgLmFkZFJldHJ5KHsgZXJyb3JzOiBbJ1N0ZXBGdW5jdGlvbnMuRXhlY3V0aW9uTGltaXRFeGNlZWRlZCddIH0pXG4gICAgICAgICAgICAuYWRkQ2F0Y2gobmV3IFN1Y2NlZWQocHJvcHMuc3RhdGVNYWNoaW5lLCAnU3RhdGVNYWNoaW5lIFN1Y2Nlc3MnKSwge1xuICAgICAgICAgICAgICBlcnJvcnM6IFsnU3RhdGVzLlRhc2tGYWlsZWQnXSxcbiAgICAgICAgICAgICAgcmVzdWx0UGF0aDogJyQuZXJyb3InLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKTtcblxuICAgIHByb2Nlc3NWZXJzaW9ucy5uZXh0KFxuICAgICAgbmV3IENob2ljZSh0aGlzLCAnSGFzIG1vcmUgdmVyc2lvbnM/JylcbiAgICAgICAgLndoZW4oXG4gICAgICAgICAgQ29uZGl0aW9uLmlzUHJlc2VudCgnJC5yZXNwb25zZS5OZXh0Q29udGludWF0aW9uVG9rZW4nKSxcbiAgICAgICAgICBwcm9jZXNzVmVyc2lvbnNcbiAgICAgICAgKVxuICAgICAgICAub3RoZXJ3aXNlKG5ldyBTdWNjZWVkKHRoaXMsICdTdWNjZXNzJykpXG4gICAgKTtcbiAgICBjb25zdCBwcm9jZXNzUGFja2FnZVZlcnNpb25zID0gbmV3IFN0YXRlTWFjaGluZSh0aGlzLCAnUGVyUGFja2FnZScsIHtcbiAgICAgIHN0YXRlTWFjaGluZU5hbWU6IFJFUFJPQ0VTU19QRVJfUEFDS0FHRV9TVEFURV9NQUNISU5FX05BTUUsXG4gICAgICBkZWZpbml0aW9uOiBwcm9jZXNzVmVyc2lvbnMsXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5ob3VycygxKSxcbiAgICAgIHRyYWNpbmdFbmFibGVkOiB0cnVlLFxuICAgIH0pO1xuICAgIHRoaXMucHJvY2Vzc1BhY2thZ2VWZXJzaW9ucyA9IHByb2Nlc3NQYWNrYWdlVmVyc2lvbnM7XG5cbiAgICAvLyBUaGlzIHdvcmtmbG93IGlzIGJyb2tlbiBpbnRvIHR3byBzdWItd29ya2Zsb3dzIGJlY2F1c2Ugb3RoZXJ3aXNlIGl0IGhpdHMgdGhlIDI1SyBldmVudHMgbGltaXRcbiAgICAvLyBvZiBTdGVwRnVuY3Rpb24gZXhlY3V0aW9ucyByZWxhdGl2ZWx5IHF1aWNrbHkuXG4gICAgY29uc3QgcHJvY2Vzc05hbWVzcGFjZSA9IG5ldyBDaG9pY2UodGhpcywgJ0dldCBAc2NvcGUgcGFnZScpXG4gICAgICAud2hlbihcbiAgICAgICAgQ29uZGl0aW9uLmlzUHJlc2VudCgnJC5yZXNwb25zZS5OZXh0Q29udGludWF0aW9uVG9rZW4nKSxcbiAgICAgICAgbmV3IHRhc2tzLkNhbGxBd3NTZXJ2aWNlKHRoaXMsICdOZXh0IEBzY29wZSBwYWdlJywge1xuICAgICAgICAgIHNlcnZpY2U6ICdzMycsXG4gICAgICAgICAgYWN0aW9uOiAnbGlzdE9iamVjdHNWMicsXG4gICAgICAgICAgaWFtQWN0aW9uOiAnczM6TGlzdEJ1Y2tldCcsXG4gICAgICAgICAgaWFtUmVzb3VyY2VzOiBbcHJvcHMuYnVja2V0LmJ1Y2tldEFybl0sXG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgQnVja2V0OiBwcm9wcy5idWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgICAgIENvbnRpbnVhdGlvblRva2VuOiBKc29uUGF0aC5zdHJpbmdBdChcbiAgICAgICAgICAgICAgJyQucmVzcG9uc2UuTmV4dENvbnRpbnVhdGlvblRva2VuJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIERlbGltaXRlcjogJy8nLFxuICAgICAgICAgICAgUHJlZml4OiBKc29uUGF0aC5zdHJpbmdBdCgnJC5QcmVmaXgnKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc3VsdFBhdGg6ICckLnJlc3BvbnNlJyxcbiAgICAgICAgfSkuYWRkUmV0cnkoeyBlcnJvcnM6IFsnUzMuU2RrQ2xpZW50RXhjZXB0aW9uJ10gfSlcbiAgICAgIClcbiAgICAgIC5vdGhlcndpc2UoXG4gICAgICAgIG5ldyB0YXNrcy5DYWxsQXdzU2VydmljZSh0aGlzLCAnRmlyc3QgQHNjb3BlIHBhZ2UnLCB7XG4gICAgICAgICAgc2VydmljZTogJ3MzJyxcbiAgICAgICAgICBhY3Rpb246ICdsaXN0T2JqZWN0c1YyJyxcbiAgICAgICAgICBpYW1BY3Rpb246ICdzMzpMaXN0QnVja2V0JyxcbiAgICAgICAgICBpYW1SZXNvdXJjZXM6IFtwcm9wcy5idWNrZXQuYnVja2V0QXJuXSxcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBCdWNrZXQ6IHByb3BzLmJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgICAgICAgRGVsaW1pdGVyOiAnLycsXG4gICAgICAgICAgICBQcmVmaXg6IEpzb25QYXRoLnN0cmluZ0F0KCckLlByZWZpeCcpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzdWx0UGF0aDogJyQucmVzcG9uc2UnLFxuICAgICAgICB9KS5hZGRSZXRyeSh7IGVycm9yczogWydTMy5TZGtDbGllbnRFeGNlcHRpb24nXSB9KVxuICAgICAgKVxuICAgICAgLmFmdGVyd2FyZHMoKVxuICAgICAgLm5leHQoXG4gICAgICAgIG5ldyBNYXAodGhpcywgJ0ZvciBlYWNoIEBzY29wZS9wa2cnLCB7XG4gICAgICAgICAgaXRlbXNQYXRoOiAnJC5yZXNwb25zZS5Db21tb25QcmVmaXhlcycsXG4gICAgICAgICAgcmVzdWx0UGF0aDogSnNvblBhdGguRElTQ0FSRCxcbiAgICAgICAgfSkuaXRlcmF0b3IoXG4gICAgICAgICAgbmV3IHRhc2tzLlN0ZXBGdW5jdGlvbnNTdGFydEV4ZWN1dGlvbihcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICAnUHJvY2VzcyBzY29wZWQgcGFja2FnZScsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHN0YXRlTWFjaGluZTogcHJvY2Vzc1BhY2thZ2VWZXJzaW9ucyxcbiAgICAgICAgICAgICAgYXNzb2NpYXRlV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgICAgaW5wdXQ6IFRhc2tJbnB1dC5mcm9tT2JqZWN0KHtcbiAgICAgICAgICAgICAgICBQcmVmaXg6IEpzb25QYXRoLnN0cmluZ0F0KCckLlByZWZpeCcpLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgaW50ZWdyYXRpb25QYXR0ZXJuOiBJbnRlZ3JhdGlvblBhdHRlcm4uUlVOX0pPQixcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApLmFkZFJldHJ5KHsgZXJyb3JzOiBbJ1N0ZXBGdW5jdGlvbnMuRXhlY3V0aW9uTGltaXRFeGNlZWRlZCddIH0pXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgcHJvY2Vzc05hbWVzcGFjZS5uZXh0KFxuICAgICAgbmV3IENob2ljZSh0aGlzLCAnSGFzIG1vcmUgcGFja2FnZXM/JylcbiAgICAgICAgLndoZW4oXG4gICAgICAgICAgQ29uZGl0aW9uLmlzUHJlc2VudCgnJC5yZXNwb25zZS5OZXh0Q29udGludWF0aW9uVG9rZW4nKSxcbiAgICAgICAgICBwcm9jZXNzTmFtZXNwYWNlXG4gICAgICAgIClcbiAgICAgICAgLm90aGVyd2lzZShuZXcgU3VjY2VlZCh0aGlzLCAnQWxsIERvbmUnKSlcbiAgICApO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBuZXcgQ2hvaWNlKHRoaXMsICdHZXQgcHJlZml4IHBhZ2UnKVxuICAgICAgLndoZW4oXG4gICAgICAgIENvbmRpdGlvbi5pc1ByZXNlbnQoJyQucmVzcG9uc2UuTmV4dENvbnRpbnVhdGlvblRva2VuJyksXG4gICAgICAgIG5ldyB0YXNrcy5DYWxsQXdzU2VydmljZSh0aGlzLCAnTmV4dCBwcmVmaXhlcyBwYWdlJywge1xuICAgICAgICAgIHNlcnZpY2U6ICdzMycsXG4gICAgICAgICAgYWN0aW9uOiAnbGlzdE9iamVjdHNWMicsXG4gICAgICAgICAgaWFtQWN0aW9uOiAnczM6TGlzdEJ1Y2tldCcsXG4gICAgICAgICAgaWFtUmVzb3VyY2VzOiBbcHJvcHMuYnVja2V0LmJ1Y2tldEFybl0sXG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgQnVja2V0OiBwcm9wcy5idWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgICAgIENvbnRpbnVhdGlvblRva2VuOiBKc29uUGF0aC5zdHJpbmdBdChcbiAgICAgICAgICAgICAgJyQucmVzcG9uc2UuTmV4dENvbnRpbnVhdGlvblRva2VuJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIERlbGltaXRlcjogJy8nLFxuICAgICAgICAgICAgUHJlZml4OiBTVE9SQUdFX0tFWV9QUkVGSVgsXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXN1bHRQYXRoOiAnJC5yZXNwb25zZScsXG4gICAgICAgIH0pLmFkZFJldHJ5KHsgZXJyb3JzOiBbJ1MzLlNka0NsaWVudEV4Y2VwdGlvbiddIH0pXG4gICAgICApXG4gICAgICAub3RoZXJ3aXNlKFxuICAgICAgICBuZXcgdGFza3MuQ2FsbEF3c1NlcnZpY2UodGhpcywgJ0ZpcnN0IHByZWZpeCBwYWdlJywge1xuICAgICAgICAgIHNlcnZpY2U6ICdzMycsXG4gICAgICAgICAgYWN0aW9uOiAnbGlzdE9iamVjdHNWMicsXG4gICAgICAgICAgaWFtQWN0aW9uOiAnczM6TGlzdEJ1Y2tldCcsXG4gICAgICAgICAgaWFtUmVzb3VyY2VzOiBbcHJvcHMuYnVja2V0LmJ1Y2tldEFybl0sXG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgQnVja2V0OiBwcm9wcy5idWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgICAgIERlbGltaXRlcjogJy8nLFxuICAgICAgICAgICAgUHJlZml4OiBTVE9SQUdFX0tFWV9QUkVGSVgsXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXN1bHRQYXRoOiAnJC5yZXNwb25zZScsXG4gICAgICAgIH0pLmFkZFJldHJ5KHsgZXJyb3JzOiBbJ1MzLlNka0NsaWVudEV4Y2VwdGlvbiddIH0pXG4gICAgICApXG4gICAgICAuYWZ0ZXJ3YXJkcygpXG4gICAgICAubmV4dChcbiAgICAgICAgbmV3IE1hcCh0aGlzLCAnRm9yIGVhY2ggcHJlZml4Jywge1xuICAgICAgICAgIGl0ZW1zUGF0aDogJyQucmVzcG9uc2UuQ29tbW9uUHJlZml4ZXMnLFxuICAgICAgICAgIHJlc3VsdFBhdGg6IEpzb25QYXRoLkRJU0NBUkQsXG4gICAgICAgIH0pLml0ZXJhdG9yKFxuICAgICAgICAgIG5ldyBDaG9pY2UodGhpcywgJ0lzIHRoaXMgYSBAc2NvcGUvIHByZWZpeD8nKVxuICAgICAgICAgICAgLndoZW4oXG4gICAgICAgICAgICAgIENvbmRpdGlvbi5zdHJpbmdNYXRjaGVzKCckLlByZWZpeCcsIGAke1NUT1JBR0VfS0VZX1BSRUZJWH1AKmApLFxuICAgICAgICAgICAgICBwcm9jZXNzTmFtZXNwYWNlXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAub3RoZXJ3aXNlKFxuICAgICAgICAgICAgICBuZXcgdGFza3MuU3RlcEZ1bmN0aW9uc1N0YXJ0RXhlY3V0aW9uKFxuICAgICAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICAgICAgJ1Byb2Nlc3MgdW5zY29wZWQgcGFja2FnZScsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgc3RhdGVNYWNoaW5lOiBwcm9jZXNzUGFja2FnZVZlcnNpb25zLFxuICAgICAgICAgICAgICAgICAgYXNzb2NpYXRlV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIGlucHV0OiBUYXNrSW5wdXQuZnJvbU9iamVjdCh7XG4gICAgICAgICAgICAgICAgICAgIFByZWZpeDogSnNvblBhdGguc3RyaW5nQXQoJyQuUHJlZml4JyksXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIGludGVncmF0aW9uUGF0dGVybjogSW50ZWdyYXRpb25QYXR0ZXJuLlJVTl9KT0IsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICApLmFkZFJldHJ5KHsgZXJyb3JzOiBbJ1N0ZXBGdW5jdGlvbnMuRXhlY3V0aW9uTGltaXRFeGNlZWRlZCddIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuYWZ0ZXJ3YXJkcygpXG4gICAgICAgIClcbiAgICAgICk7XG5cbiAgICBzdGFydC5uZXh0KFxuICAgICAgbmV3IENob2ljZSh0aGlzLCAnSGFzIG1vcmUgcHJlZml4ZXM/JylcbiAgICAgICAgLndoZW4oQ29uZGl0aW9uLmlzUHJlc2VudCgnJC5yZXNwb25zZS5OZXh0Q29udGludWF0aW9uVG9rZW4nKSwgc3RhcnQpXG4gICAgICAgIC5vdGhlcndpc2UobmV3IFN1Y2NlZWQodGhpcywgJ0RvbmUnKSlcbiAgICApO1xuXG4gICAgdGhpcy5zdGF0ZU1hY2hpbmUgPSBuZXcgU3RhdGVNYWNoaW5lKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIGRlZmluaXRpb246IHN0YXJ0LFxuICAgICAgc3RhdGVNYWNoaW5lTmFtZTogc3RhdGVNYWNoaW5lTmFtZUZyb20odGhpcy5ub2RlLnBhdGgpLFxuICAgICAgdGltZW91dDogRHVyYXRpb24uaG91cnMoNCksXG4gICAgICB0cmFjaW5nRW5hYmxlZDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIHByb3BzLmJ1Y2tldC5ncmFudFJlYWQocHJvY2Vzc1BhY2thZ2VWZXJzaW9ucyk7XG4gICAgcHJvcHMuYnVja2V0LmdyYW50UmVhZCh0aGlzLnN0YXRlTWFjaGluZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGlzIHR1cm5zIGEgbm9kZSBwYXRoIGludG8gYSB2YWxpZCBzdGF0ZSBtYWNoaW5lIG5hbWUsIHRvIHRyeSBhbmQgaW1wcm92ZVxuICogdGhlIFN0ZXBGdW5jdGlvbidzIEFXUyBjb25zb2xlIGV4cGVyaWVuY2Ugd2hpbGUgbWluaW1pemluZyB0aGUgcmlzayBmb3JcbiAqIGNvbGxpc29ucy5cbiAqL1xuZnVuY3Rpb24gc3RhdGVNYWNoaW5lTmFtZUZyb20obm9kZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIFBvb3IgbWFuJ3MgcmVwbGFjZSBhbGwuLi5cbiAgcmV0dXJuIG5vZGVQYXRoLnNwbGl0KC9bXmEtejAtOSshQC4oKT1fJy1dKy9pKS5qb2luKCcuJyk7XG59XG4iXX0=
|
package/lib/construct-hub.js
CHANGED
|
@@ -65,7 +65,7 @@ const webapp_1 = require("./webapp");
|
|
|
65
65
|
* Construct Hub.
|
|
66
66
|
*/
|
|
67
67
|
class ConstructHub extends constructs_1.Construct {
|
|
68
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.ConstructHub", version: "0.4.
|
|
68
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.ConstructHub", version: "0.4.524" };
|
|
69
69
|
/**
|
|
70
70
|
* The function operators can use to reprocess a specific package version
|
|
71
71
|
* through the backend data pipeline.
|
|
@@ -21,7 +21,7 @@ const storage_1 = require("../s3/storage");
|
|
|
21
21
|
*/
|
|
22
22
|
class CodeArtifact {
|
|
23
23
|
props;
|
|
24
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.sources.CodeArtifact", version: "0.4.
|
|
24
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "construct-hub.sources.CodeArtifact", version: "0.4.524" };
|
|
25
25
|
constructor(props) {
|
|
26
26
|
this.props = props;
|
|
27
27
|
}
|
|
@@ -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.524" };
|
|
49
49
|
constructor(props = {}) {
|
|
50
50
|
this.props = props;
|
|
51
51
|
}
|
|
@@ -565,6 +565,7 @@ class NpmJs {
|
|
|
565
565
|
queryLines: [
|
|
566
566
|
'fields @timestamp, @message',
|
|
567
567
|
'filter @message like /"DwellTime"/',
|
|
568
|
+
'filter toMillis(@timestamp) > (now() - 900) * 1000',
|
|
568
569
|
`parse @message '"PackageVersion":"*"' as version`,
|
|
569
570
|
`parse @message '"DwellTime":*,' as dwellTimeSec`,
|
|
570
571
|
'stats max(dwellTimeSec) as maxDwellTimeSec by version',
|
|
@@ -581,4 +582,4 @@ exports.NpmJs = NpmJs;
|
|
|
581
582
|
function howOften(rate, duration) {
|
|
582
583
|
return Math.ceil(duration.toSeconds() / rate.toSeconds());
|
|
583
584
|
}
|
|
584
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtanMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFja2FnZS1zb3VyY2VzL25wbWpzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2Q0FBdUM7QUFDdkMsK0RBWW9DO0FBQ3BDLHVEQUF3RDtBQUN4RCx1RUFBZ0U7QUFDaEUsdURBQWlEO0FBQ2pELG1GQUFzRTtBQUN0RSwrQ0FBZ0U7QUFDaEUsaURBQTZEO0FBRTdELGdDQUF1QztBQUN2Qyw0Q0FLc0I7QUFDdEIsa0RBQTZDO0FBQzdDLDhDQUF5QztBQUN6QywyQ0FBb0Q7QUFDcEQsNkVBTXlDO0FBQ3pDLDZEQUF3RDtBQUN4RCwrREFBMEQ7QUFPMUQsZ0RBQTZDO0FBQzdDLDJDQUFpRDtBQUNqRCwrRUFBeUU7QUFFekU7Ozs7R0FJRztBQUNILE1BQU0saUJBQWlCLEdBQUcsc0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFOUM7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLHlCQUF5QixHQUFHLHNCQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBOENyRDs7R0FFRztBQUNILE1BQWEsS0FBSztJQUNvQjs7SUFBcEMsWUFBb0MsUUFBb0IsRUFBRTtRQUF0QixVQUFLLEdBQUwsS0FBSyxDQUFpQjtJQUFHLENBQUM7SUFFdkQsSUFBSSxDQUNULEtBQWdCLEVBQ2hCLEVBQ0UsT0FBTyxFQUNQLFFBQVEsRUFDUixTQUFTLEVBQ1QsV0FBVyxFQUNYLFVBQVUsRUFDVixLQUFLLEVBQ0wsVUFBVSxFQUNWLGlCQUFpQixHQUNRO1FBRTNCLFVBQVUsRUFBRSxxQkFBcUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUVsRCxNQUFNLGNBQWMsR0FBRywwQkFBZ0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsTUFBTSxNQUFNLEdBQ1YsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhO1lBQ3hCLGNBQWMsQ0FBQyxTQUFTLENB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QUNWLDZCQUE2QjtvQkFDN0Isb0NBQW9DO29CQUNwQyxrREFBa0Q7b0JBQ2xELGlEQUFpRDtvQkFDakQsdURBQXVEO29CQUN2RCwyQkFBMkI7aUJBQzVCO2FBQ0YsQ0FBQztTQUNILENBQUM7SUFDSixDQUFDOztBQXpwQkgsc0JBMHBCQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxRQUFRLENBQUMsSUFBYyxFQUFFLFFBQWtCO0lBQ2xELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7QUFDNUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHtcbiAgQWxhcm1SdWxlLFxuICBDb21wYXJpc29uT3BlcmF0b3IsXG4gIENvbXBvc2l0ZUFsYXJtLFxuICBHcmFwaFdpZGdldCxcbiAgSVdpZGdldCxcbiAgTG9nUXVlcnlXaWRnZXQsXG4gIE1hdGhFeHByZXNzaW9uLFxuICBNZXRyaWMsXG4gIE1ldHJpY09wdGlvbnMsXG4gIFN0YXRpc3RpYyxcbiAgVHJlYXRNaXNzaW5nRGF0YSxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgUnVsZSwgU2NoZWR1bGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZXZlbnRzJztcbmltcG9ydCB7IExhbWJkYUZ1bmN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cy10YXJnZXRzJztcbmltcG9ydCB7IFRyYWNpbmcgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IFNxc0V2ZW50U291cmNlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ldmVudC1zb3VyY2VzJztcbmltcG9ydCB7IEJsb2NrUHVibGljQWNjZXNzLCBJQnVja2V0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCB7IFF1ZXVlLCBRdWV1ZUVuY3J5cHRpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3FzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQWxhcm1TZXZlcml0eSB9IGZyb20gJy4uL2FwaSc7XG5pbXBvcnQge1xuICBsYW1iZGFGdW5jdGlvblVybCxcbiAgbG9nQW5hbHl0aWNzVXJsLFxuICBzM09iamVjdFVybCxcbiAgc3FzUXVldWVVcmwsXG59IGZyb20gJy4uL2RlZXAtbGluayc7XG5pbXBvcnQgeyBmaWxsTWV0cmljIH0gZnJvbSAnLi4vbWV0cmljLXV0aWxzJztcbmltcG9ydCB7IGFkZEFsYXJtIH0gZnJvbSAnLi4vbW9uaXRvcmluZyc7XG5pbXBvcnQgeyBOcG1Kc1BhY2thZ2VDYW5hcnkgfSBmcm9tICcuL25wbWpzL2NhbmFyeSc7XG5pbXBvcnQge1xuICBLTk9XTl9WRVJTSU9OU19GSUxFX05BTUUsXG4gIE1BUktFUl9GSUxFX05BTUUsXG4gIE1FVFJJQ1NfTkFNRVNQQUNFLFxuICBNZXRyaWNOYW1lLFxuICBTM0tleVByZWZpeCxcbn0gZnJvbSAnLi9ucG1qcy9jb25zdGFudHMubGFtYmRhLXNoYXJlZCc7XG5pbXBvcnQgeyBOcG1Kc0ZvbGxvd2VyIH0gZnJvbSAnLi9ucG1qcy9ucG0tanMtZm9sbG93ZXInO1xuaW1wb3J0IHsgU3RhZ2VBbmROb3RpZnkgfSBmcm9tICcuL25wbWpzL3N0YWdlLWFuZC1ub3RpZnknO1xuaW1wb3J0IHsgSU1vbml0b3JpbmcgfSBmcm9tICcuLi9tb25pdG9yaW5nL2FwaSc7XG5pbXBvcnQgdHlwZSB7XG4gIElQYWNrYWdlU291cmNlLFxuICBQYWNrYWdlU291cmNlQmluZE9wdGlvbnMsXG4gIFBhY2thZ2VTb3VyY2VCaW5kUmVzdWx0LFxufSBmcm9tICcuLi9wYWNrYWdlLXNvdXJjZSc7XG5pbXBvcnQgeyBSVU5CT09LX1VSTCB9IGZyb20gJy4uL3J1bmJvb2stdXJsJztcbmltcG9ydCB7IFMzU3RvcmFnZUZhY3RvcnkgfSBmcm9tICcuLi9zMy9zdG9yYWdlJztcbmltcG9ydCB7IFJlU3RhZ2VQYWNrYWdlVmVyc2lvbiB9IGZyb20gJy4vbnBtanMvcmUtc3RhZ2UtcGFja2FnZS12ZXJzaW9uJztcblxuLyoqXG4gKiBUaGUgcGVyaW9kaWNpdHkgYXQgd2hpY2ggdGhlIE5wbUpzIGZvbGxvd2VyIHdpbGwgcnVuLiBUaGlzIE1VU1QgYmUgYSB2YWxpZFxuICogQ2xvdWRXYXRjaCBNZXRyaWMgZ3JhaW4sIGFzIHRoaXMgd2lsbCBhbHNvIGJlIHRoZSBwZXJpb2Qgb2YgdGhlIENsb3VkV2F0Y2hcbiAqIGFsYXJtIHRoYXQgbW9uaXRvcnMgdGhlIGhlYWx0aCBvZiB0aGUgZm9sbG93ZXIuXG4gKi9cbmNvbnN0IEZPTExPV0VSX1JVTl9SQVRFID0gRHVyYXRpb24ubWludXRlcyg1KTtcblxuLyoqXG4gKiBBbGFybSBpZiB3ZSBoYXZlbid0IHNlZW4gY2hhbmdlcyBvdmVyIHRoaXMgdGltZVxuICpcbiAqIFRoZSBDb3VjaERCIGxlYWRlciBvY2Nhc2lvbmFsbHkganVzdCBzdGFydHMgdG9zc2luZyBvdXQgdGltZW91dHMgYW5kIHRoZXlcbiAqIG1heSBsYXN0IGZvciBhIGdvb2Qgd2hpbGUuXG4gKlxuICogLSBPbiAyMDIyLTA5LTI5IGl0IHdhcyBzbG93IGZvciAxMiBob3Vycy5cbiAqIC0gT24gMjAyMi0xMC0wNCBpdCB3YXMgc2xvdyBmb3IgMiBob3Vycy5cbiAqXG4gKiBUaGlzIGlzIGxlYWRpbmcgdG8gZXh0cmVtZSBhbGFybSBmYXRpZ3VlLCBhbmQgYWxzbyB0aGlzIGFsYXJtIGlzIG5vbi1hY3Rpb25hYmxlLlxuICogTGV0J3MgYmUgdmVyeSB2ZXJ5IGNvbnNlcnZhdGl2ZSBoZXJlLlxuICovXG5jb25zdCBOT19DSEFOR0VTX0FMQVJNX0RVUkFUSU9OID0gRHVyYXRpb24uaG91cnMoMjQpO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5wbUpzUHJvcHMge1xuICAvKipcbiAgICogVGhlIGJ1Y2tldCB0byB1c2UgZm9yIHN0YWdpbmcgbnBtIHBhY2thZ2VzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgbmV3IGJ1Y2tldCB3aWxsIGJlIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSBzdGFnaW5nQnVja2V0PzogSUJ1Y2tldDtcblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgcGFja2FnZSBjYW5hcnksIHdoaWNoIHdpbGwgdHJhY2sgYXZhaWxhYmlsaXR5IG9mIGEgY2FuYXJ5XG4gICAqIHBhY2thZ2UgaW4gQ29uc3RydWN0SHViLCBhbmQgZW1pdCBkZWRpY2F0ZWQgbWV0cmljcy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlQ2FuYXJ5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHBhY2thZ2UgdGhhdCBpcyBtb25pdG9yZWQgYnkgdGhlIHBhY2thZ2UgY2FuYXJ5LCBpZiBlbmFibGVkIGJ5XG4gICAqIGBlbmFibGVDYW5hcnlgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnY29uc3RydWN0LWh1Yi1wcm9iZSdcbiAgICovXG4gIHJlYWRvbmx5IGNhbmFyeVBhY2thZ2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB0aW1lIGl0IGlzIHN1cHBvc2VkIHRvIHRha2UgZm9yIHBhY2thZ2VzIHRvIGJlY29tZVxuICAgKiB2aXNpYmxlIGluIHRoaXMgQ29uc3RydWN0SHViIGluc3RhbmNlLiBJZiBgZW5hYmxlQ2FuYXJ5YCBpcyBlbmFibGVkLCBhblxuICAgKiBhbGFybSB3aWxsIHRyaWdnZXIgaWYgdGhpcyBTTEEgaXMgYnJlYWNoZWQgYnkgdGhlIGBjYW5hcnlQYWNrYWdlYC5cbiAgICpcbiAgICogQGRlZmF1bHQgRHVyYXRpb24ubWludXRlcyg1KVxuICAgKi9cbiAgcmVhZG9ubHkgY2FuYXJ5U2xhPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB0aW1lIHRoZSBjYW5hcnkgcGFja2FnZSBpcyBleHBlY3RlZCB0byBnbyB3aXRob3V0XG4gICAqIHB1Ymxpc2hpbmcgYSBuZXcgdmVyc2lvbi4gSWYgZXhjZWVkZWQsIGFuIGFsYXJtIHdpbGwgZmlyZSBpbmRpY2F0aW5nIHRoZVxuICAgKiBjYW5hcnkgcGFja2FnZSBtYXkgaGF2ZSBzdG9wcGVkIHB1Ymxpc2hpbmcsIHdoaWNoIHdvdWxkIGxlYXZlIHRoZSBTTEFcbiAgICogYWxhcm0gYmxpbmQuXG4gICAqXG4gICAqIEBkZWZhdWx0IER1cmF0aW9uLmRheXMoMSlcbiAgICovXG4gIHJlYWRvbmx5IGNhbmFyeU1heFN0YWxlPzogRHVyYXRpb247XG59XG5cbi8qKlxuICogQSBwYWNrYWdlIHNvdXJjZSB0aGF0IGdldHMgcGFja2FnZSBkYXRhIGZyb20gdGhlIG5wbWpzLmNvbSBwYWNrYWdlIHJlZ2lzdHJ5LlxuICovXG5leHBvcnQgY2xhc3MgTnBtSnMgaW1wbGVtZW50cyBJUGFja2FnZVNvdXJjZSB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBOcG1Kc1Byb3BzID0ge30pIHt9XG5cbiAgcHVibGljIGJpbmQoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICB7XG4gICAgICBiYXNlVXJsLFxuICAgICAgZGVueUxpc3QsXG4gICAgICBpbmdlc3Rpb24sXG4gICAgICBsaWNlbnNlTGlzdCxcbiAgICAgIG1vbml0b3JpbmcsXG4gICAgICBxdWV1ZSxcbiAgICAgIHJlcG9zaXRvcnksXG4gICAgICBvdmVydmlld0Rhc2hib2FyZCxcbiAgICB9OiBQYWNrYWdlU291cmNlQmluZE9wdGlvbnNcbiAgKTogUGFja2FnZVNvdXJjZUJpbmRSZXN1bHQge1xuICAgIHJlcG9zaXRvcnk/LmFkZEV4dGVybmFsQ29ubmVjdGlvbigncHVibGljOm5wbWpzJyk7XG5cbiAgICBjb25zdCBzdG9yYWdlRmFjdG9yeSA9IFMzU3RvcmFnZUZhY3RvcnkuZ2V0T3JDcmVhdGUoc2NvcGUpO1xuICAgIGNvbnN0IGJ1Y2tldCA9XG4gICAgICB0aGlzLnByb3BzLnN0YWdpbmdCdWNrZXQgfHxcbiAgICAgIHN0b3JhZ2VGYWN0b3J5Lm5ld0J1Y2tldChzY29wZSwgJ05wbUpzL1N0YWdpbmdCdWNrZXQnLCB7XG4gICAgICAgIGJsb2NrUHVibGljQWNjZXNzOiBCbG9ja1B1YmxpY0FjY2Vzcy5CTE9DS19BTEwsXG4gICAgICAgIGVuZm9yY2VTU0w6IHRydWUsXG4gICAgICAgIHZlcnNpb25lZDogdHJ1ZSxcbiAgICAgICAgbGlmZWN5Y2xlUnVsZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcmVmaXg6IFMzS2V5UHJlZml4LlNUQUdFRF9LRVlfUFJFRklYLFxuICAgICAgICAgICAgZXhwaXJhdGlvbjogRHVyYXRpb24uZGF5cygzMCksXG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBQZXJtYW5lbnRseSBkZWxldGUgbWFya2VyIGZpbGUgdXBkYXRlcyBhZnRlciAxIGRheSAod2UgZG9uJ3QgbmVlZCB0aGVzZSlcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcmVmaXg6IE1BUktFUl9GSUxFX05BTUUsXG4gICAgICAgICAgICBub25jdXJyZW50VmVyc2lvbkV4cGlyYXRpb246IER1cmF0aW9uLmRheXMoMSksXG4gICAgICAgICAgICBleHBpcmVkT2JqZWN0RGVsZXRlTWFya2VyOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gUGVybWFuZW50bHkgZGVsZXRlIGtub3duIHZlcnNpb24gYmFja3VwcyBhZnRlciAzMCBkYXlzXG4gICAgICAgICAge1xuICAgICAgICAgICAgcHJlZml4OiBLTk9XTl9WRVJTSU9OU19GSUxFX05BTUUsXG4gICAgICAgICAgICBub25jdXJyZW50VmVyc2lvbkV4cGlyYXRpb246IER1cmF0aW9uLmRheXMoMzApLFxuICAgICAgICAgICAgZXhwaXJlZE9iamVjdERlbGV0ZU1hcmtlcjogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG4gICAgYnVja2V0LmdyYW50UmVhZChpbmdlc3Rpb24pO1xuXG4gICAgY29uc3Qgc3RhZ2VyID0gbmV3IFN0YWdlQW5kTm90aWZ5KHNjb3BlLCAnTnBtSnMtU3RhZ2VBbmROb3RpZnknLCB7XG4gICAgICBkZWFkTGV0dGVyUXVldWU6IG5ldyBRdWV1ZShzY29wZSwgJ1N0YWdlckRMUScsIHtcbiAgICAgICAgZW5jcnlwdGlvbjogUXVldWVFbmNyeXB0aW9uLktNU19NQU5BR0VELFxuICAgICAgICByZXRlbnRpb25QZXJpb2Q6IER1cmF0aW9uLmRheXMoMTQpLFxuICAgICAgICB2aXNpYmlsaXR5VGltZW91dDogRHVyYXRpb24ubWludXRlcygxNSksXG4gICAgICB9KSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgWyR7c2NvcGUubm9kZS5wYXRofS9OcG1KUy1TdGFnZUFuZE5vdGlmeV0gU3RhZ2VzIHRhcmJhbGxzIHRvIFMzIGFuZCBub3RpZmllcyBDb25zdHJ1Y3RIdWJgLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgQVdTX0VNRl9FTlZJUk9OTUVOVDogJ0xvY2FsJyxcbiAgICAgICAgQlVDS0VUX05BTUU6IGJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgICBRVUVVRV9VUkw6IHF1ZXVlLnF1ZXVlVXJsLFxuICAgICAgfSxcbiAgICAgIG1lbW9yeVNpemU6IDEwXzAyNCwgLy8gMTBHaUJcbiAgICAgIHJldHJ5QXR0ZW1wdHM6IDIsXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgdHJhY2luZzogVHJhY2luZy5BQ1RJVkUsXG4gICAgfSk7XG5cbiAgICBidWNrZXQuZ3JhbnRSZWFkV3JpdGUoc3RhZ2VyKTtcbiAgICBkZW55TGlzdD8uZ3JhbnRSZWFkKHN0YWdlcik7XG4gICAgcXVldWUuZ3JhbnRTZW5kTWVzc2FnZXMoc3RhZ2VyKTtcblxuICAgIHN0YWdlci5hZGRFdmVudFNvdXJjZShcbiAgICAgIG5ldyBTcXNFdmVudFNvdXJjZShzdGFnZXIuZGVhZExldHRlclF1ZXVlISwge1xuICAgICAgICBiYXRjaFNpemU6IDEsXG4gICAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgY29uc3QgZm9sbG93ZXIgPSBuZXcgTnBtSnNGb2xsb3dlcihzY29wZSwgJ05wbUpzJywge1xuICAgICAgZGVzY3JpcHRpb246IGBbJHtzY29wZS5ub2RlLnBhdGh9L05wbUpzXSBQZXJpb2RpY2FsbHkgcXVlcnkgbnBtanMuY29tIGluZGV4IGZvciBuZXcgcGFja2FnZXNgLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgQVdTX0VNRl9FTlZJUk9OTUVOVDogJ0xvY2FsJyxcbiAgICAgICAgQlVDS0VUX05BTUU6IGJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgICBGVU5DVElPTl9OQU1FOiBzdGFnZXIuZnVuY3Rpb25OYW1lLFxuICAgICAgfSxcbiAgICAgIG1lbW9yeVNpemU6IDEwXzAyNCwgLy8gMTAgR2lCXG4gICAgICByZXNlcnZlZENvbmN1cnJlbnRFeGVjdXRpb25zOiAxLCAvLyBPbmx5IG9uZSBleGVjdXRpb24gYXQgYSB0aW1lLCB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMgb24gdGhlIFMzIG1hcmtlciBvYmplY3RcbiAgICAgIHRpbWVvdXQ6IEZPTExPV0VSX1JVTl9SQVRFLFxuICAgICAgdHJhY2luZzogVHJhY2luZy5BQ1RJVkUsXG4gICAgfSk7XG5cbiAgICBidWNrZXQuZ3JhbnRSZWFkV3JpdGUoZm9sbG93ZXIsIE1BUktFUl9GSUxFX05BTUUpO1xuICAgIGJ1Y2tldC5ncmFudFJlYWRXcml0ZShmb2xsb3dlciwgS05PV05fVkVSU0lPTlNfRklMRV9OQU1FKTtcbiAgICBkZW55TGlzdD8uZ3JhbnRSZWFkKGZvbGxvd2VyKTtcbiAgICBsaWNlbnNlTGlzdC5ncmFudFJlYWQoZm9sbG93ZXIpO1xuICAgIHN0YWdlci5ncmFudEludm9rZShmb2xsb3dlcik7XG5cbiAgICBjb25zdCByZXN0YWdlciA9IG5ldyBSZVN0YWdlUGFja2FnZVZlcnNpb24oc2NvcGUsICdSZVN0YWdlUGFja2FnZVZlcnNpb24nLCB7XG4gICAgICBkZXNjcmlwdGlvbjogYE1hbnVhbGx5IHJlLXN0YWdlIGEgcGFja2FnZSB2ZXJzaW9uYCxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIEZVTkNUSU9OX05BTUU6IHN0YWdlci5mdW5jdGlvbk5hbWUsXG4gICAgICAgIFJFR0lTVFJZX1VSTDogJ2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnJyxcbiAgICAgIH0sXG4gICAgICBtZW1vcnlTaXplOiAxMDI0LFxuICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcygxMCksXG4gICAgfSk7XG4gICAgc3RhZ2VyLmdyYW50SW52b2tlKHJlc3RhZ2VyKTtcblxuICAgIGNvbnN0IHJ1bGUgPSBuZXcgUnVsZShzY29wZSwgJ05wbUpzL1NjaGVkdWxlJywge1xuICAgICAgZGVzY3JpcHRpb246IGAke3Njb3BlLm5vZGUucGF0aH0vTnBtSnMvU2NoZWR1bGVgLFxuICAgICAgc2NoZWR1bGU6IFNjaGVkdWxlLnJhdGUoRk9MTE9XRVJfUlVOX1JBVEUpLFxuICAgICAgdGFyZ2V0czogW25ldyBMYW1iZGFGdW5jdGlvbihmb2xsb3dlcildLFxuICAgIH0pO1xuXG4gICAgdGhpcy5yZWdpc3RlckFsYXJtcyhzY29wZSwgZm9sbG93ZXIsIHN0YWdlciwgbW9uaXRvcmluZywgcnVsZSk7XG5cbiAgICBzdGFnZXIuZGVhZExldHRlclF1ZXVlICYmXG4gICAgICBvdmVydmlld0Rhc2hib2FyZC5hZGRETFFNZXRyaWNUb0Rhc2hib2FyZChcbiAgICAgICAgJ05QTSBKUyBTdGFnZXIgRExRJyxcbiAgICAgICAgc3RhZ2VyLmRlYWRMZXR0ZXJRdWV1ZVxuICAgICAgKTtcbiAgICBmb2xsb3dlci5kZWFkTGV0dGVyUXVldWUgJiZcbiAgICAgIG92ZXJ2aWV3RGFzaGJvYXJkLmFkZERMUU1ldHJpY1RvRGFzaGJvYXJkKFxuICAgICAgICAnTlBNIEpTIEZvbGxvd2VyIERMUScsXG4gICAgICAgIGZvbGxvd2VyLmRlYWRMZXR0ZXJRdWV1ZVxuICAgICAgKTtcbiAgICBvdmVydmlld0Rhc2hib2FyZC5hZGRDb25jdXJyZW50RXhlY3V0aW9uTWV0cmljVG9EYXNoYm9hcmQoXG4gICAgICBmb2xsb3dlcixcbiAgICAgICdOcG1Kc0xhbWJkYSdcbiAgICApO1xuICAgIG92ZXJ2aWV3RGFzaGJvYXJkLmFkZENvbmN1cnJlbnRFeGVjdXRpb25NZXRyaWNUb0Rhc2hib2FyZChcbiAgICAgIHN0YWdlcixcbiAgICAgICdOcG1Kcy1TdGFnZUFuZE5vdGlmeUxhbWJkYSdcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IGZvbGxvd2VyLm5vZGUucGF0aCxcbiAgICAgIGxpbmtzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnTnBtSnMgRm9sbG93ZXInLFxuICAgICAgICAgIHVybDogbGFtYmRhRnVuY3Rpb25VcmwoZm9sbG93ZXIpLFxuICAgICAgICAgIHByaW1hcnk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHsgbmFtZTogJ01hcmtlciBPYmplY3QnLCB1cmw6IHMzT2JqZWN0VXJsKGJ1Y2tldCwgTUFSS0VSX0ZJTEVfTkFNRSkgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdLbm93biBWZXJzaW9ucycsXG4gICAgICAgICAgdXJsOiBzM09iamVjdFVybChidWNrZXQsIEtOT1dOX1ZFUlNJT05TX0ZJTEVfTkFNRSksXG4gICAgICAgIH0sXG4gICAgICAgIHsgbmFtZTogJ1N0YWdlcicsIHVybDogbGFtYmRhRnVuY3Rpb25Vcmwoc3RhZ2VyKSB9LFxuICAgICAgICB7IG5hbWU6ICdTdGFnZXIgRExRJywgdXJsOiBzcXNRdWV1ZVVybChzdGFnZXIuZGVhZExldHRlclF1ZXVlISkgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdQaXBlbGluZSBUcmFjZSAoTG9nIEFuYWx5dGljcyknLFxuICAgICAgICAgIHVybDogbG9nQW5hbHl0aWNzVXJsKFxuICAgICAgICAgICAgW2ZvbGxvd2VyLCBzdGFnZXJdLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAnZmllbGRzIEB0aW1lc3RhbXAsIEBsb2csIEBtZXNzYWdlJyxcbiAgICAgICAgICAgICAgYHwgZmlsdGVyIEBtZXNzYWdlIGxpa2UgLyR7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5jYW5hcnlQYWNrYWdlID8/ICdjb25zdHJ1Y3QtaHViLXByb2JlJ1xuICAgICAgICAgICAgICB9L2AsXG4gICAgICAgICAgICAgICcjIGZpbHRlciBAbWVzc2FnZSBsaWtlIC88dmVyc2lvbj4vIDwtIG5hcnJvdyBkb3duIHRvIGEgc3R1Y2sgdmVyc2lvbicsXG4gICAgICAgICAgICAgICd8IHNvcnQgQHRpbWVzdGFtcCBkZXNjJyxcbiAgICAgICAgICAgICAgJ3wgbGltaXQgMTAwJyxcbiAgICAgICAgICAgIF0uam9pbignXFxuJylcbiAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGRhc2hib2FyZFdpZGdldHM6IFtcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ0ZvbGxvd2VyIEhlYWx0aCcsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoZm9sbG93ZXIubWV0cmljSW52b2NhdGlvbnMoeyBsYWJlbDogJ0ludm9jYXRpb25zJyB9KSksXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoZm9sbG93ZXIubWV0cmljRXJyb3JzKHsgbGFiZWw6ICdFcnJvcnMnIH0pKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICByaWdodDogW3RoaXMubWV0cmljUmVtYWluaW5nVGltZSh7IGxhYmVsOiAnUmVtYWluaW5nIFRpbWUnIH0pXSxcbiAgICAgICAgICAgIHJpZ2h0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgICAgIHRpdGxlOiAnU3RhZ2VyIEhlYWx0aCcsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoc3RhZ2VyLm1ldHJpY0ludm9jYXRpb25zKHsgbGFiZWw6ICdJbnZvY2F0aW9ucycgfSkpLFxuICAgICAgICAgICAgICBmaWxsTWV0cmljKHN0YWdlci5tZXRyaWNFcnJvcnMoeyBsYWJlbDogJ0Vycm9ycycgfSkpLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBbc3RhZ2VyLm1ldHJpY0R1cmF0aW9uKHsgbGFiZWw6ICdEdXJhdGlvbicgfSldLFxuICAgICAgICAgICAgcmlnaHRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ0NvdWNoREIgRm9sbG93ZXInLFxuICAgICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgICBmaWxsTWV0cmljKHRoaXMubWV0cmljQ2hhbmdlQ291bnQoeyBsYWJlbDogJ0NoYW5nZSBDb3VudCcgfSksIDApLFxuICAgICAgICAgICAgICBmaWxsTWV0cmljKFxuICAgICAgICAgICAgICAgIHRoaXMubWV0cmljVW5wcm9jZXNzYWJsZUVudGl0eSh7IGxhYmVsOiAnVW5wcm9jZXNzYWJsZScgfSksXG4gICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgdGhpcy5tZXRyaWNOcG1Kc0NoYW5nZUFnZSh7IGxhYmVsOiAnTGFnIHRvIG5wbWpzLmNvbScgfSksXG4gICAgICAgICAgICAgICAgJ1JFUEVBVCdcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICB0aGlzLm1ldHJpY1BhY2thZ2VWZXJzaW9uQWdlKHsgbGFiZWw6ICdQYWNrYWdlIFZlcnNpb24gQWdlJyB9KSxcbiAgICAgICAgICAgICAgICAnUkVQRUFUJ1xuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHJpZ2h0WUF4aXM6IHsgbGFiZWw6ICdNaWxsaXNlY29uZHMnLCBtaW46IDAsIHNob3dVbml0czogZmFsc2UgfSxcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdDb3VjaERCIENoYW5nZXMnLFxuICAgICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgICBmaWxsTWV0cmljKFxuICAgICAgICAgICAgICAgIHRoaXMubWV0cmljTGFzdFNlcSh7IGxhYmVsOiAnTGFzdCBTZXF1ZW5jZSBOdW1iZXInIH0pLFxuICAgICAgICAgICAgICAgICdSRVBFQVQnXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgICBbXG4gICAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgICAgIHRpdGxlOiAnU3RhZ2VyIERlYWQtTGV0dGVyIFF1ZXVlJyxcbiAgICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICBzdGFnZXIuZGVhZExldHRlclF1ZXVlIS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNWaXNpYmxlKFxuICAgICAgICAgICAgICAgICAgeyBsYWJlbDogJ1Zpc2libGUgTWVzc2FnZXMnIH1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICBzdGFnZXIuZGVhZExldHRlclF1ZXVlIS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNOb3RWaXNpYmxlKFxuICAgICAgICAgICAgICAgICAgeyBsYWJlbDogJ0ludmlzaWJsZSBNZXNzYWdlcycgfVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBbXG4gICAgICAgICAgICAgIHN0YWdlci5kZWFkTGV0dGVyUXVldWUhLm1ldHJpY0FwcHJveGltYXRlQWdlT2ZPbGRlc3RNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ09sZGVzdCBNZXNzYWdlJyxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmlnaHRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4odGhpcy5wcm9wcy5lbmFibGVDYW5hcnkgPz8gdHJ1ZVxuICAgICAgICAgICAgPyB0aGlzLnJlZ2lzdGVyQ2FuYXJ5KFxuICAgICAgICAgICAgICAgIGZvbGxvd2VyLFxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuY2FuYXJ5UGFja2FnZSA/PyAnY29uc3RydWN0LWh1Yi1wcm9iZScsXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5jYW5hcnlTbGEgPz8gRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmNhbmFyeU1heFN0YWxlID8/IER1cmF0aW9uLmRheXMoMSksXG4gICAgICAgICAgICAgICAgYnVja2V0LFxuICAgICAgICAgICAgICAgIGJhc2VVcmwsXG4gICAgICAgICAgICAgICAgbW9uaXRvcmluZ1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgXSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYXZlcmFnZSB0aW1lIGl0IHRvb2sgdG8gcHJvY2VzcyBhIGNoYW5nZXMgYmF0Y2guXG4gICAqL1xuICBwdWJsaWMgbWV0cmljQmF0Y2hQcm9jZXNzaW5nVGltZShvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuQVZFUkFHRSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLkJBVENIX1BST0NFU1NJTkdfVElNRSxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRvdGFsIGNvdW50IG9mIGNoYW5nZXMgdGhhdCB3ZXJlIHByb2Nlc3NlZC5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNDaGFuZ2VDb3VudChvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIG1ldHJpY05hbWU6IE1ldHJpY05hbWUuQ0hBTkdFX0NPVU5ULFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbGFzdCBzZXF1ZW5jZSBudW1iZXIgdGhhdCB3YXMgcHJvY2Vzc2VkLiBUaGlzIG1ldHJpYyBjYW4gYmUgdXNlZCB0b1xuICAgKiBkaXNjb3ZlciB3aGVuIGEgc2VxdWVuY2UgcmVzZXQgaGFzIGhhcHBlbmVkIGluIHRoZSBDb3VjaERCIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY0xhc3RTZXEob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLk1BWElNVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5MQVNUX1NFUSxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbWV0cmljTnBtSnNDaGFuZ2VBZ2Uob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLk1JTklNVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5OUE1KU19DSEFOR0VfQUdFLFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYWdlIG9mIHRoZSBvbGRlc3QgcGFja2FnZSB2ZXJzaW9uIHRoYXQgd2FzIHByb2Nlc3NlZC5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNQYWNrYWdlVmVyc2lvbkFnZShvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUFYSU1VTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLlBBQ0tBR0VfVkVSU0lPTl9BR0UsXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0b3RhbCBjb3VudCBvZiBwYWNrYWdlIHZlcnNpb25zIHRoYXQgd2VyZSBpbnNwZWN0ZWQuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljUGFja2FnZVZlcnNpb25Db3VudChvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIG1ldHJpY05hbWU6IE1ldHJpY05hbWUuUEFDS0FHRV9WRVJTSU9OX0NPVU5ULFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdG90YWwgY291bnQgb2YgcGFja2FnZSB2ZXJzaW9ucyB0aGF0IHdlcmUgZGVlbWVkIHJlbGV2YW50LlxuICAgKi9cbiAgcHVibGljIG1ldHJpY1JlbGV2YW50UGFja2FnZVZlcnNpb25zKG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5TVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5SRUxFVkFOVF9QQUNLQUdFX1ZFUlNJT05TLFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYW1vdW50IG9mIHRpbWUgdGhhdCB3YXMgcmVtYWluaW5nIHdoZW4gdGhlIGxhbWJkYSByZXR1cm5lZCBpbiBvcmRlciB0b1xuICAgKiBhdm9pZCBoaXR0aW5nIGEgdGltZW91dC5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNSZW1haW5pbmdUaW1lKG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5NSU5JTVVNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIG1ldHJpY05hbWU6IE1ldHJpY05hbWUuUkVNQUlOSU5HX1RJTUUsXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBhbW91bnQgb2YgY2hhbmdlcyB0aGF0IHdlcmUgbm90IHByb2Nlc3NlZCBkdWUgdG8gaGF2aW5nIGFuIGludmFsaWRcbiAgICogZm9ybWF0LlxuICAgKi9cbiAgcHVibGljIG1ldHJpY1VucHJvY2Vzc2FibGVFbnRpdHkob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLlNVTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLlVOUFJPQ0VTU0FCTEVfRU5USVRZLFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJBbGFybXMoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBmb2xsb3dlcjogTnBtSnNGb2xsb3dlcixcbiAgICBzdGFnZXI6IFN0YWdlQW5kTm90aWZ5LFxuICAgIG1vbml0b3Jpbmc6IElNb25pdG9yaW5nLFxuICAgIHNjaGVkdWxlOiBSdWxlXG4gICkge1xuICAgIGNvbnN0IGZhaWx1cmVBbGFybSA9IGZvbGxvd2VyXG4gICAgICAubWV0cmljRXJyb3JzKClcbiAgICAgIC5jcmVhdGVBbGFybShzY29wZSwgJ05wbUpzL0ZvbGxvd2VyL0ZhaWx1cmVzJywge1xuICAgICAgICBhbGFybU5hbWU6IGAke3Njb3BlLm5vZGUucGF0aH0vTnBtSnMvRm9sbG93ZXIvRmFpbHVyZXNgLFxuICAgICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgJ1RoZSBOcG1KcyBmb2xsb3dlciBmdW5jdGlvbiBmYWlsZWQhJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICBgUnVuQm9vazogJHtSVU5CT09LX1VSTH1gLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIGBEaXJlY3QgbGluayB0byBMYW1iZGEgZnVuY3Rpb246ICR7bGFtYmRhRnVuY3Rpb25VcmwoZm9sbG93ZXIpfWAsXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjpcbiAgICAgICAgICBDb21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDMsXG4gICAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5NSVNTSU5HLFxuICAgICAgfSk7XG4gICAgbW9uaXRvcmluZy5hZGRMb3dTZXZlcml0eUFsYXJtKCdOcG1Kcy9Gb2xsb3dlciBGYWlsdXJlcycsIGZhaWx1cmVBbGFybSk7XG5cbiAgICBjb25zdCBub3RSdW5uaW5nQWxhcm0gPSBmb2xsb3dlclxuICAgICAgLm1ldHJpY0ludm9jYXRpb25zKHsgcGVyaW9kOiBGT0xMT1dFUl9SVU5fUkFURSB9KVxuICAgICAgLmNyZWF0ZUFsYXJtKHNjb3BlLCAnTnBtSnMvRm9sbG93ZXIvTm90UnVubmluZycsIHtcbiAgICAgICAgYWxhcm1OYW1lOiBgJHtzY29wZS5ub2RlLnBhdGh9L05wbUpzL0ZvbGxvd2VyL05vdFJ1bm5pbmdgLFxuICAgICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgJ1RoZSBOcG1KcyBmb2xsb3dlciBmdW5jdGlvbiBpcyBub3QgcnVubmluZyEnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIGBSdW5Cb29rOiAke1JVTkJPT0tfVVJMfWAsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgYERpcmVjdCBsaW5rIHRvIExhbWJkYSBmdW5jdGlvbjogJHtsYW1iZGFGdW5jdGlvblVybChmb2xsb3dlcil9YCxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuTEVTU19USEFOX1RIUkVTSE9MRCxcbiAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDIsXG4gICAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5CUkVBQ0hJTkcsXG4gICAgICB9KTtcbiAgICBtb25pdG9yaW5nLmFkZEhpZ2hTZXZlcml0eUFsYXJtKFxuICAgICAgJ05wbUpzL0ZvbGxvd2VyIE5vdCBSdW5uaW5nJyxcbiAgICAgIG5vdFJ1bm5pbmdBbGFybVxuICAgICk7XG5cbiAgICAvLyBUaGUgcGVyaW9kIGZvciB0aGlzIGFsYXJtIG5lZWRzIHRvIG1hdGNoIHRoZSBzY2hlZHVsaW5nIGludGVydmFsIG9mIHRoZVxuICAgIC8vIGZvbGxvd2VyLCBvdGhlcndpc2UgdGhlIG1ldHJpYyB3aWxsIGJlIHRvbyBzcGFyc2UgdG8gcHJvcGVybHkgZGV0ZWN0XG4gICAgLy8gcHJvYmxlbXMuXG4gICAgY29uc3Qgbm9DaGFuZ2VBbGFybSA9IHRoaXMubWV0cmljQ2hhbmdlQ291bnQoe1xuICAgICAgcGVyaW9kOiBGT0xMT1dFUl9SVU5fUkFURSxcbiAgICB9KS5jcmVhdGVBbGFybShzY29wZSwgJ05wbUpzL0ZvbGxvd2VyL05vQ2hhbmdlcycsIHtcbiAgICAgIGFsYXJtTmFtZTogYCR7c2NvcGUubm9kZS5wYXRofS9OcG1Kcy9Gb2xsb3dlci9Ob0NoYW5nZXNgLFxuICAgICAgYWxhcm1EZXNjcmlwdGlvbjogW1xuICAgICAgICAnVGhlIE5wbUpzIGZvbGxvd2VyIGZ1bmN0aW9uIGlzIG5vdCBkaXNjb3ZlcmluZyBhbnkgY2hhbmdlcyBmcm9tIENvdWNoREIhJyxcbiAgICAgICAgJycsXG4gICAgICAgIGBSdW5Cb29rOiAke1JVTkJPT0tfVVJMfWAsXG4gICAgICAgICcnLFxuICAgICAgICBgRGlyZWN0IGxpbmsgdG8gTGFtYmRhIGZ1bmN0aW9uOiAke2xhbWJkYUZ1bmN0aW9uVXJsKGZvbGxvd2VyKX1gLFxuICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogQ29tcGFyaXNvbk9wZXJhdG9yLkxFU1NfVEhBTl9USFJFU0hPTEQsXG4gICAgICBldmFsdWF0aW9uUGVyaW9kczogaG93T2Z0ZW4oRk9MTE9XRVJfUlVOX1JBVEUsIE5PX0NIQU5HRVNfQUxBUk1fRFVSQVRJT04pLFxuICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgLy8gSWYgdGhlIG1ldHJpYyBpcyBub3QgZW1pdHRlZCwgaXQgY2FuIGJlIGFzc3VtZWQgdG8gYmUgemVyby5cbiAgICAgIHRyZWF0TWlzc2luZ0RhdGE6IFRyZWF0TWlzc2luZ0RhdGEuQlJFQUNISU5HLFxuICAgIH0pO1xuICAgIG1vbml0b3JpbmcuYWRkTG93U2V2ZXJpdHlBbGFybShcbiAgICAgICdOcCBucG1qcy5jb20gY2hhbmdlcyBkaXNjb3ZlcmVkJyxcbiAgICAgIG5vQ2hhbmdlQWxhcm1cbiAgICApO1xuXG4gICAgY29uc3QgZGxxTm90RW1wdHlBbGFybSA9IHN0YWdlclxuICAgICAgLmRlYWRMZXR0ZXJRdWV1ZSEubWV0cmljQXBwcm94aW1hdGVOdW1iZXJPZk1lc3NhZ2VzVmlzaWJsZSh7XG4gICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIH0pXG4gICAgICAuY3JlYXRlQWxhcm0oc2NvcGUsIGAke3Njb3BlLm5vZGUucGF0aH0vTnBtSnMvU3RhZ2VyL0RMUU5vdEVtcHR5YCwge1xuICAgICAgICBhbGFybU5hbWU6IGAke3Njb3BlLm5vZGUucGF0aH0vTnBtSnMvU3RhZ2VyL0RMUU5vdEVtcHR5YCxcbiAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjogW1xuICAgICAgICAgICdUaGUgTnBtSlMgcGFja2FnZSBzdGFnZXIgaXMgZmFpbGluZyAtIGl0cyBkZWFkIGxldHRlciBxdWV1ZSBpcyBub3QgZW1wdHknLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIGBMaW5rIHRvIHRoZSBsYW1iZGEgZnVuY3Rpb246ICR7bGFtYmRhRnVuY3Rpb25Vcmwoc3RhZ2VyKX1gLFxuICAgICAgICAgIGBMaW5rIHRvIHRoZSBkZWFkIGxldHRlciBxdWV1ZTogJHtzcXNRdWV1ZVVybChcbiAgICAgICAgICAgIHN0YWdlci5kZWFkTGV0dGVyUXVldWUhXG4gICAgICAgICAgKX1gLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIGBSdW5ib29rOiAke1JVTkJPT0tfVVJMfWAsXG4gICAgICAgIF0uam9pbignL24nKSxcbiAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOlxuICAgICAgICAgIENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogMixcbiAgICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLk5PVF9CUkVBQ0hJTkcsXG4gICAgICB9KTtcbiAgICBtb25pdG9yaW5nLmFkZExvd1NldmVyaXR5QWxhcm0oXG4gICAgICAnTnBtSnMvU3RhZ2VyIERMUSBOb3QgRW1wdHknLFxuICAgICAgZGxxTm90RW1wdHlBbGFybVxuICAgICk7XG5cbiAgICAvLyBGaW5hbGx5IC0gdGhlIFwibm90IHJ1bm5pbmdcIiBhbGFybSBkZXBlbmRzIG9uIHRoZSBzY2hlZHVsZSAoaXQgd29uJ3QgcnVuIHVudGlsIHRoZSBzY2hlZHVsZVxuICAgIC8vIGV4aXN0cyEpLCBhbmQgdGhlIHNjaGVkdWxlIGRlcGVuZHMgb24gdGhlIGZhaWx1cmUgYWxhcm0gZXhpc3RpbmcgKHdlIGRvbid0IHdhbnQgaXQgdG8gcnVuXG4gICAgLy8gYmVmb3JlIHdlIGNhbiBrbm93IGl0IGlzIGZhaWxpbmcpLiBUaGlzIG1lYW5zIHRoZSByZXR1cm5lZCBgSURlcGVuZGFibGVgIGVmZmVjdGl2ZWx5IGVuc3VyZXNcbiAgICAvLyBhbGwgYWxhcm1zIGhhdmUgYmVlbiBwcm92aXNpb25lZCBhbHJlYWR5ISBJc24ndCBpdCBuaWNlIVxuICAgIG5vdFJ1bm5pbmdBbGFybS5ub2RlLmFkZERlcGVuZGVuY3koc2NoZWR1bGUpO1xuICAgIHNjaGVkdWxlLm5vZGUuYWRkRGVwZW5kZW5jeShmYWlsdXJlQWxhcm0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlckNhbmFyeShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIHBhY2thZ2VOYW1lOiBzdHJpbmcsXG4gICAgLy8gQSBkdXJhdGlvbiBzcGVjaWZ5aW5nIGhvdyBsb25nIHdlIGV4cGVjdCB0aGUgcHJvYmUgcGFja2FnZSB0byBhcHBlYXIgb25cbiAgICAvLyBDb25zdHJ1Y3QgSHViIGFmdGVyIGl0IGdldHMgcHVibGlzaGVkIHRvIG5wbSwgYXNzdW1pbmcgdGhlIG5wbSByZXBsaWNhXG4gICAgLy8gaXMgdXAgdG8gZGF0ZSBldGMuXG4gICAgdmlzaWJpbGl0eVNsYTogRHVyYXRpb24sXG4gICAgLy8gQSBkdXJhdGlvbiBzcGVjaWZ5aW5nIGhvdyBsb25nIHRoZSBjYW5hcnkgcGFja2FnZSBjYW4gZ28gd2l0aG91dFxuICAgIC8vIHB1Ymxpc2hpbmcgYSBuZXcgdmVyc2lvbiBiZWZvcmUgd2UgYWxhcm0uXG4gICAgbWF4U3RhbGU6IER1cmF0aW9uLFxuICAgIGJ1Y2tldDogSUJ1Y2tldCxcbiAgICBjb25zdHJ1Y3RIdWJCYXNlVXJsOiBzdHJpbmcsXG4gICAgbW9uaXRvcmluZzogSU1vbml0b3JpbmdcbiAgKTogSVdpZGdldFtdIHtcbiAgICBjb25zdCBjYW5hcnkgPSBuZXcgTnBtSnNQYWNrYWdlQ2FuYXJ5KHNjb3BlLCAnQ2FuYXJ5Jywge1xuICAgICAgYnVja2V0LFxuICAgICAgY29uc3RydWN0SHViQmFzZVVybCxcbiAgICAgIHBhY2thZ2VOYW1lLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcGVyaW9kID0gRHVyYXRpb24ubWludXRlcygxMCk7IC8vIHdlIHJ1biBjYW5hcnkgb25jZSBwZXIgaG91ciwgYnV0IG5vdCBndWFyYW50ZWVkIGV4YWN0IHRpbWVzXG4gICAgY29uc3QgYWxhcm0gPSBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgZXhwcmVzc2lvbjogJ01BWChbbUR3ZWxsLCBtVFRDXSknLFxuICAgICAgcGVyaW9kLFxuICAgICAgdXNpbmdNZXRyaWNzOiB7XG4gICAgICAgIG1Ed2VsbDogY2FuYXJ5Lm1ldHJpY0R3ZWxsVGltZSgpLFxuICAgICAgICBtVFRDOiBjYW5hcnkubWV0cmljVGltZVRvQ2F0YWxvZygpLFxuICAgICAgfSxcbiAgICB9KS5jcmVhdGVBbGFybShjYW5hcnksICdBbGFybScsIHtcbiAgICAgIGFsYXJtTmFtZTogYCR7Y2FuYXJ5Lm5vZGUucGF0aH0vU0xBLUJyZWFjaGVkYCxcbiAgICAgIGFsYXJtRGVzY3JpcHRpb246IFtcbiAgICAgICAgYE5ldyB2ZXJzaW9ucyBvZiAke3BhY2thZ2VOYW1lfSBoYXZlIGJlZW4gcHVibGlzaGVkIG92ZXIgJHt2aXNpYmlsaXR5U2xhLnRvSHVtYW5TdHJpbmcoKX0gYWdvIGFuZCBhcmUgc3RpbGwgbm90IHZpc2libGUgaW4gY29uc3RydWN0IGh1YmAsXG4gICAgICAgIGBSdW5ib29rOiAke1JVTkJPT0tfVVJMfWAsXG4gICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX1RIUkVTSE9MRCxcbiAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5OT1RfQlJFQUNISU5HLFxuICAgICAgdGhyZXNob2xkOiB2aXNpYmlsaXR5U2xhLnRvU2Vjb25kcygpLFxuICAgIH0pO1xuICAgIC8vIFRoaXMgaXMgZGVlbWVkIGxvdyBzZXZlcml0eSwgYmVjYXVzZSB0aGUgbnBtIHJlZ2lzdHJ5IHJlcGxpY2EgKHJlcGxpY2F0ZS5ucG1qcy5jb20pIGNhblxuICAgIC8vIG9jY2FzaW9uYWxseSBsYWcgc2V2ZXJhbCBob3VycyBiZWhpbmQgdGhlIHByaW1hcnkgKHJlZ2lzdHJ5Lm5wbWpzLmNvbSksIGFuZCB3ZSBjYW5ub3QgZWFzaWx5XG4gICAgLy8gdGVsbCBhYm91dCB0aGF0LiBTb21lb25lIHNob3VsZCBoYXZlIGEgbG9vaywgYnV0IGluIHZpcnR1YWxseSBhbGwgY2FzZXMgd2UgaGF2ZSBzZWVuIHNvIGZhcixcbiAgICAvLyB0aGVyZSBpcyBub3RoaW5nIHRoYXQgY2FuIGJlIGRvbmUgZnJvbSBvdXIgZW5kLCBiZXNpZGVzIHdhaXRpbmcgZm9yIHRoZSByZXBsaWNhIHRvIGJlIGFsbFxuICAgIC8vIGNhdWdodCB1cC5cbiAgICBhZGRBbGFybShcbiAgICAgICdOZXcgdmVyc2lvbiB2aXNpYmlsaXR5IFNMQSBicmVhY2hlZCcsXG4gICAgICBhbGFybSxcbiAgICAgIEFsYXJtU2V2ZXJpdHkuTE9XLFxuICAgICAgbW9uaXRvcmluZ1xuICAgICk7XG5cbiAgICBjb25zdCBzdGFsZUFsYXJtID0gY2FuYXJ5XG4gICAgICAubWV0cmljVGltZVNpbmNlTGFzdFB1Ymxpc2goeyBwZXJpb2QgfSlcbiAgICAgIC5jcmVhdGVBbGFybShjYW5hcnksICdTdGFsZUNhbmFyeVBhY2thZ2UnLCB7XG4gICAgICAgIGFsYXJtTmFtZTogYCR7Y2FuYXJ5Lm5vZGUucGF0aH0vU3RhbGVDYW5hcnlQYWNrYWdlYCxcbiAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjogW1xuICAgICAgICAgIGBUaGUgY2FuYXJ5IHBhY2thZ2UgJHtwYWNrYWdlTmFtZX0gaGFzIG5vdCBwdWJsaXNoZWQgYSBuZXcgdmVyc2lvbiBpbiBvdmVyICR7bWF4U3RhbGUudG9IdW1hblN0cmluZygpfS5gLFxuICAgICAgICAgICdUaGlzIG1lYW5zIHRoZSBTTEEgYWxhcm0gaXMgYmxpbmQg4oCUIG5vIG5ldyB2ZXJzaW9ucyBhcmUgYmVpbmcgdHJhY2tlZCwgc28gU0xBIGJyZWFjaGVzIGNhbm5vdCBiZSBkZXRlY3RlZC4nLFxuICAgICAgICAgICdNZXRyaWM6IENvbnN0cnVjdEh1Yi9QYWNrYWdlQ2FuYXJ5IC8gVGltZVNpbmNlTGFzdFB1Ymxpc2gnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIGBSdW5ib29rOiAke1JVTkJPT0tfVVJMfWAsXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9USFJFU0hPTEQsXG4gICAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLk1JU1NJTkcsXG4gICAgICAgIHRocmVzaG9sZDogbWF4U3RhbGUudG9TZWNvbmRzKCksXG4gICAgICB9KTtcbiAgICBtb25pdG9yaW5nLmFkZE1lZGl1bVNldmVyaXR5QWxhcm0oXG4gICAgICAnQ2FuYXJ5IHBhY2thZ2UgaGFzIHN0b3BwZWQgcHVibGlzaGluZyBuZXcgdmVyc2lvbnMnLFxuICAgICAgc3RhbGVBbGFybVxuICAgICk7XG5cbiAgICBjb25zdCBub3RSdW5uaW5nT3JGYWlsaW5nQWxhcm0gPSBuZXcgQ29tcG9zaXRlQWxhcm0oXG4gICAgICBjYW5hcnksXG4gICAgICAnTm90UnVubmluZ09yRmFpbGluZycsXG4gICAgICB7XG4gICAgICAgIGFsYXJtUnVsZTogQWxhcm1SdWxlLmFueU9mKFxuICAgICAgICAgIGNhbmFyeVxuICAgICAgICAgICAgLm1ldHJpY0Vycm9ycyh7IHBlcmlvZCwgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNIH0pXG4gICAgICAgICAgICAuY3JlYXRlQWxhcm0oY2FuYXJ5LCAnRmFpbGluZycsIHtcbiAgICAgICAgICAgICAgYWxhcm1OYW1lOiBgJHtjYW5hcnkubm9kZS5wYXRofS9GYWlsaW5nYCxcbiAgICAgICAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX1RIUkVTSE9MRCxcbiAgICAgICAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDIsXG4gICAgICAgICAgICAgIHRocmVzaG9sZDogMCxcbiAgICAgICAgICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5CUkVBQ0hJTkcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBjYW5hcnlcbiAgICAgICAgICAgIC5tZXRyaWNJbnZvY2F0aW9ucyh7IHBlcmlvZCwgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNIH0pXG4gICAgICAgICAgICAuY3JlYXRlQWxhcm0oY2FuYXJ5LCAnTm90UnVubmluZycsIHtcbiAgICAgICAgICAgICAgYWxhcm1OYW1lOiBgJHtjYW5hcnkubm9kZS5wYXRofS9Ob3RSdW5uaW5nYCxcbiAgICAgICAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuTEVTU19USEFOX1RIUkVTSE9MRCxcbiAgICAgICAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDIsXG4gICAgICAgICAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgICAgICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5CUkVBQ0hJTkcsXG4gICAgICAgICAgICB9KVxuICAgICAgICApLFxuICAgICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgJ1RoZSBOcG1KcyBwYWNrYWdlIGNhbmFyeSBpcyBub3QgcnVubmluZyBvciBpcyBmYWlsaW5nLiBUaGlzIHByZXZlbnRzIGFsYXJtaW5nIHdoZW4gdGhpcyBpbnN0YW5jZSBvZicsXG4gICAgICAgICAgJ0NvbnN0cnVjdEh1YiBmYWxscyBvdXQgb2YgU0xBIGZvciBuZXcgcGFja2FnZSBpbmdlc3Rpb24hJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICBgUnVuYm9vazogJHtSVU5CT09LX1VSTH1gLFxuICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgICBjb21wb3NpdGVBbGFybU5hbWU6IGAke2NhbmFyeS5ub2RlLnBhdGh9L05vdFJ1bm5pbmdPckZhaWxpbmdgLFxuICAgICAgfVxuICAgICk7XG4gICAgbW9uaXRvcmluZy5hZGRIaWdoU2V2ZXJpdHlBbGFybShcbiAgICAgICdOcG1KcyBGb2xsb3dlciBDYW5hcnkgaXMgbm90IHJ1bm5pbmcgb3IgZmFpbHMnLFxuICAgICAgbm90UnVubmluZ09yRmFpbGluZ0FsYXJtXG4gICAgKTtcblxuICAgIC8vIFVzaW5nIE1JTiBzdGF0aXN0aWMsIHNvIGlmIGEgcnVuIGlzIHN1Y2Nlc3NmdWwgKGFuZCBoZW5jZSBlbWl0cyBhIDApLCB0aGlzIGFsYXJtIHdpbGwgbm90IHRyaWdnZXIuXG4gICAgY29uc3QgZ2F0ZXdheUVycm9yc0FsYXJtID0gY2FuYXJ5XG4gICAgICAubWV0cmljSHR0cEdhdGV3YXlFcnJvcnMoeyBwZXJpb2QsIHN0YXRpc3RpYzogU3RhdGlzdGljLk1JTklNVU0gfSlcbiAgICAgIC5jcmVhdGVBbGFybShjYW5hcnksICdHYXRld2F5RXJyb3JzJywge1xuICAgICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgJ1RoZSBOcG1KcyBwYWNrYWdlIGNhbmFyeSBoYXMgYmVlbiBlbmNvdW50ZXJpbmcgY29uc2lzdGVudCBIVFRQIGdhdGV3YXkgZXJyb3JzIHdoZW4gY29udGFjdGluZyBucG1qcyBzZXJ2ZXJzJyxcbiAgICAgICAgICAnZm9yIGFuIGhvdXIgb3IgbW9yZS4gVGhpcyBtZWFucyB0aGUgY2FuYXJ5IGhhcyBiZWVuIHVuYWJsZSB0byBldmFsdWF0ZSBTTEEgY29tcGxpYW5jZSBmb3IgdGhhdCBtdWNoIHRpbWUuJyxcbiAgICAgICAgICAnSXQgaXMgcHJvYmFibGUgdGhhdCBub3RoaW5nIGNhbiBiZSBkb25lIGV4Y2VwdCBmb3Igd2FpdGluZyBmb3IgbnBtIHNlcnZlcnMgdG8gY29tZSBiYWNrIG9ubGluZSwgYnV0IHRoZScsXG4gICAgICAgICAgJ3NpdHVhdGlvbiBzaG91bGQgYmUgY2hlY2tlZCB0byBtYWtlIHN1cmUgdGhlcmUgaXMgbm90IGFub3RoZXIgcHJvYmxlbS4nLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIGBSdW5ib29rOiAke1JVTkJPT0tfVVJMfWAsXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgIGFsYXJtTmFtZTogYCR7Y2FuYXJ5Lm5vZGUucGF0aH0vR2F0ZXdheUVycm9yc2AsXG4gICAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9USFJFU0hPTEQsXG4gICAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiA2MCxcbiAgICAgICAgdGhyZXNob2xkOiAwLFxuICAgICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLkJSRUFDSElORyxcbiAgICAgIH0pO1xuICAgIG1vbml0b3JpbmcuYWRkTG93U2V2ZXJpdHlBbGFybShcbiAgICAgICdOcG1KcyBGb2xsb3dlciBDYW5hcnkgaXMgZXhwZXJpZW5jaW5nIEhUVFAgR2F0ZXdheSBlcnJvcnMnLFxuICAgICAgZ2F0ZXdheUVycm9yc0FsYXJtXG4gICAgKTtcblxuICAgIHJldHVybiBbXG4gICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgdGl0bGU6ICdQYWNrYWdlIENhbmFyeScsXG4gICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICBjYW5hcnkubWV0cmljRHdlbGxUaW1lKHsgbGFiZWw6ICdEd2VsbCBUaW1lJyB9KSxcbiAgICAgICAgICBjYW5hcnkubWV0cmljVGltZVRvQ2F0YWxvZyh7IGxhYmVsOiAnVGltZSB0byBDYXRhbG9nJyB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgbGVmdEFubm90YXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29sb3I6ICcjZmYwMDAwJyxcbiAgICAgICAgICAgIGxhYmVsOiBgU0xBICgke3Zpc2liaWxpdHlTbGEudG9IdW1hblN0cmluZygpfSlgLFxuICAgICAgICAgICAgdmFsdWU6IHZpc2liaWxpdHlTbGEudG9TZWNvbmRzKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgfSksXG4gICAgICBuZXcgTG9nUXVlcnlXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgdGl0bGU6ICdTdHVjayBWZXJzaW9ucyAoc3RpbGwgbm90IHZpc2libGUgaW4gQ29uc3RydWN0SHViKScsXG4gICAgICAgIGxvZ0dyb3VwTmFtZXM6IFtjYW5hcnkubG9nR3JvdXBOYW1lXSxcbiAgICAgICAgcXVlcnlMaW5lczogW1xuICAgICAgICAgICdmaWVsZHMgQHRpbWVzdGFtcCwgQG1lc3NhZ2UnLFxuICAgICAgICAgICdmaWx0ZXIgQG1lc3NhZ2UgbGlrZSAvXCJEd2VsbFRpbWVcIi8nLFxuICAgICAgICAgIGBwYXJzZSBAbWVzc2FnZSAnXCJQYWNrYWdlVmVyc2lvblwiOlwiKlwiJyBhcyB2ZXJzaW9uYCxcbiAgICAgICAgICBgcGFyc2UgQG1lc3NhZ2UgJ1wiRHdlbGxUaW1lXCI6KiwnIGFzIGR3ZWxsVGltZVNlY2AsXG4gICAgICAgICAgJ3N0YXRzIG1heChkd2VsbFRpbWVTZWMpIGFzIG1heER3ZWxsVGltZVNlYyBieSB2ZXJzaW9uJyxcbiAgICAgICAgICAnc29ydCBtYXhEd2VsbFRpbWVTZWMgZGVzYycsXG4gICAgICAgIF0sXG4gICAgICB9KSxcbiAgICBdO1xuICB9XG59XG5cbi8qKlxuICogSG93IG9mdGVuICdyYXRlJyBnb2VzIGludG8gJ2R1cmF0aW9uJyAocm91bmRlZCB1cClcbiAqL1xuZnVuY3Rpb24gaG93T2Z0ZW4ocmF0ZTogRHVyYXRpb24sIGR1cmF0aW9uOiBEdXJhdGlvbikge1xuICByZXR1cm4gTWF0aC5jZWlsKGR1cmF0aW9uLnRvU2Vjb25kcygpIC8gcmF0ZS50b1NlY29uZHMoKSk7XG59XG4iXX0=
|
|
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
|
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.524" };
|
|
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.524" };
|
|
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.524" };
|
|
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.524" };
|
|
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.524" };
|
|
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.524" };
|
|
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.524" };
|
|
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.524" };
|
|
13
13
|
static _ALL = new Map();
|
|
14
14
|
//#region Individual SPDX Licenses
|
|
15
15
|
/**
|