@aws-cdk/integ-runner 2.194.2 → 2.196.0
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/THIRD_PARTY_LICENSES +255 -24
- package/lib/cli.js +19 -22
- package/lib/engines/cdk-interface.d.ts +188 -0
- package/lib/engines/cdk-interface.js +36 -0
- package/lib/engines/toolkit-lib.d.ts +1 -1
- package/lib/engines/toolkit-lib.js +1 -1
- package/lib/index.js +68 -24
- package/lib/runner/engine.d.ts +7 -10
- package/lib/runner/engine.js +13 -23
- package/lib/runner/integ-test-runner.js +4 -4
- package/lib/runner/integ-test-suite.d.ts +1 -1
- package/lib/runner/integ-test-suite.js +1 -1
- package/lib/runner/private/cloud-assembly.js +3 -2
- package/lib/runner/runner-base.d.ts +2 -3
- package/lib/runner/runner-base.js +1 -1
- package/lib/unstable-features.d.ts +39 -0
- package/lib/unstable-features.js +84 -0
- package/lib/workers/common.d.ts +2 -3
- package/lib/workers/common.js +1 -1
- package/lib/workers/extract/extract_worker.js +1 -4
- package/lib/workers/extract/index.js +46843 -31987
- package/lib/workers/integ-test-worker.js +1 -2
- package/lib/workers/integ-watch-worker.d.ts +1 -2
- package/lib/workers/integ-watch-worker.js +1 -1
- package/package.json +7 -8
|
@@ -329,4 +329,4 @@ exports.DEFAULT_SYNTH_OPTIONS = {
|
|
|
329
329
|
function currentlyRecommendedAwsCdkLibFlags() {
|
|
330
330
|
return recommendedFlagsFile;
|
|
331
331
|
}
|
|
332
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVubmVyLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJydW5uZXItYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUF1ZEEsZ0ZBRUM7QUF6ZEQsa0RBQWtEO0FBQ2xELDZCQUE2QjtBQUU3QixvRUFBcUY7QUFFckYsNENBQW9EO0FBQ3BELCtCQUErQjtBQUMvQix5REFBMEU7QUFFMUUsMEVBQTBFO0FBQzFFLG9DQUFtQztBQUNuQyxxQ0FBMEQ7QUFDMUQsb0NBQW9DO0FBRXBDLDZEQUFrRTtBQUVsRSw2REFBMkQ7QUFFM0QsTUFBTSxtQkFBbUIsR0FBRyx3QkFBd0IsQ0FBQztBQXFEckQ7O0dBRUc7QUFDSDs7R0FFRztBQUNILE1BQXNCLFdBQVc7SUF1RS9CLFlBQVksT0FBMkI7UUEvQnZDOztXQUVHO1FBQ2dCLGdCQUFXLEdBQXNCO1lBQ2xELFlBQVksRUFBRSxLQUFLO1lBQ25CLGFBQWEsRUFBRSxLQUFLO1lBQ3BCLGdCQUFnQixFQUFFLEtBQUs7U0FDeEIsQ0FBQztRQXlCQSxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ25DLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDekMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQztRQUU5QyxJQUFJLENBQUMsR0FBRyxHQUFH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QVEsRUFBRSxpQkFBaUI7NEJBQzNCLGdCQUFnQixFQUFFLFlBQVk7NEJBQzlCLFlBQVksRUFBRSxjQUFjO3lCQUM3Qjt3QkFDRDs0QkFDRSxRQUFRLEVBQUUsaUJBQWlCOzRCQUMzQixnQkFBZ0IsRUFBRSxZQUFZOzRCQUM5QixZQUFZLEVBQUUsY0FBYzt5QkFDN0I7d0JBQ0Q7NEJBQ0UsUUFBUSxFQUFFLGlCQUFpQjs0QkFDM0IsZ0JBQWdCLEVBQUUsWUFBWTs0QkFDOUIsWUFBWSxFQUFFLGNBQWM7eUJBQzdCO3FCQUNGO2lCQUNGO2FBQ0Y7U0FDRjtLQUNGO0lBQ0QsR0FBRyxFQUFFO1FBQ0gsaUJBQWlCLEVBQUUsVUFBVTtRQUM3QixnQkFBZ0IsRUFBRSxhQUFhO1FBQy9CLHdCQUF3QixFQUFFLGdCQUFnQjtRQUMxQywwQkFBMEIsRUFBRSxhQUFhO1FBQ3pDLHFCQUFxQixFQUFFLGVBQWU7UUFDdEMsa0JBQWtCLEVBQUUsbUZBQW1GO1FBQ3ZHLG1CQUFtQixFQUFFLDBCQUEwQjtLQUNoRDtDQUNGLENBQUM7QUFFRjs7Ozs7O0dBTUc7QUFDSCxTQUFnQixrQ0FBa0M7SUFDaEQsT0FBTyxvQkFBb0IsQ0FBQztBQUM5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGNka2xhYnMvbm8tbGl0ZXJhbC1wYXJ0aXRpb24gKi9cbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgdHlwZSB7IElDZGsgfSBmcm9tICdAYXdzLWNkay9jZGstY2xpLXdyYXBwZXInO1xuaW1wb3J0IHsgQVZBSUxBQklMSVRZX1pPTkVfRkFMTEJBQ0tfQ09OVEVYVF9LRVkgfSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1hcGknO1xuaW1wb3J0IHR5cGUgeyBUZXN0Q2FzZSwgRGVmYXVsdENka09wdGlvbnMgfSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEnO1xuaW1wb3J0IHsgVEFSR0VUX1BBUlRJVElPTlMgfSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0IHsgSW50ZWdUZXN0U3VpdGUsIExlZ2FjeUludGVnVGVzdFN1aXRlIH0gZnJvbSAnLi9pbnRlZy10ZXN0LXN1aXRlJztcbmltcG9ydCB0eXBlIHsgSW50ZWdUZXN0IH0gZnJvbSAnLi9pbnRlZ3JhdGlvbi10ZXN0cyc7XG5pbXBvcnQgKiBhcyByZWNvbW1lbmRlZEZsYWdzRmlsZSBmcm9tICcuLi9yZWNvbW1lbmRlZC1mZWF0dXJlLWZsYWdzLmpzb24nO1xuaW1wb3J0IHsgZmxhdHRlbiB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IG1ha2VFbmdpbmUsIHR5cGUgRW5naW5lT3B0aW9ucyB9IGZyb20gJy4vZW5naW5lJztcbmltcG9ydCAqIGFzIGxvZ2dlciBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IHR5cGUgeyBNYW5pZmVzdFRyYWNlIH0gZnJvbSAnLi9wcml2YXRlL2Nsb3VkLWFzc2VtYmx5JztcbmltcG9ydCB7IEFzc2VtYmx5TWFuaWZlc3RSZWFkZXIgfSBmcm9tICcuL3ByaXZhdGUvY2xvdWQtYXNzZW1ibHknO1xuaW1wb3J0IHR5cGUgeyBEZXN0cnVjdGl2ZUNoYW5nZSB9IGZyb20gJy4uL3dvcmtlcnMvY29tbW9uJztcbmltcG9ydCB7IE5vTWFuaWZlc3RFcnJvciB9IGZyb20gJy4vcHJpdmF0ZS9pbnRlZy1tYW5pZmVzdCc7XG5cbmNvbnN0IERFU1RSVUNUSVZFX0NIQU5HRVMgPSAnISFERVNUUlVDVElWRV9DSEFOR0VTOic7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY3JlYXRpbmcgYW4gaW50ZWdyYXRpb24gdGVzdCBydW5uZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlZ1J1bm5lck9wdGlvbnMgZXh0ZW5kcyBFbmdpbmVPcHRpb25zIHtcbiAgLyoqXG4gICAqIEluZm9ybWF0aW9uIGFib3V0IHRoZSB0ZXN0IHRvIHJ1blxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdDogSW50ZWdUZXN0O1xuXG4gIC8qKlxuICAgKiBUaGUgcmVnaW9uIHdoZXJlIHRoZSB0ZXN0IHNob3VsZCBiZSBkZXBsb3llZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBV1MgcHJvZmlsZSB0byB1c2Ugd2hlbiBpbnZva2luZyB0aGUgQ0RLIENMSVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHByb2ZpbGUgaXMgcGFzc2VkLCB0aGUgZGVmYXVsdCBwcm9maWxlIGlzIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IHByb2ZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRoYXQgd2lsbCBiZSBhdmFpbGFibGVcbiAgICogdG8gdGhlIENESyBDTElcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBhZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICAgKi9cbiAgcmVhZG9ubHkgZW52PzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIHRtcCBjZGsub3V0IGRpcmVjdG9yeVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRpcmVjdG9yeSB3aWxsIGJlIGBjZGstaW50ZWcub3V0LiR7dGVzdE5hbWV9YFxuICAgKi9cbiAgcmVhZG9ubHkgaW50ZWdPdXREaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluc3RhbmNlIG9mIHRoZSBDREsgVG9vbGtpdCBFbmdpbmUgdG8gdXNlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYmFzZWQgb24gYGVuZ2luZWAgb3B0aW9uXG4gICAqL1xuICByZWFkb25seSBjZGs/OiBJQ2RrO1xuXG4gIC8qKlxuICAgKiBTaG93IG91dHB1dCBmcm9tIHJ1bm5pbmcgaW50ZWdyYXRpb24gdGVzdHNcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHNob3dPdXRwdXQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFRoZSBkaWZmZXJlbnQgY29tcG9uZW50cyBvZiBhIHRlc3QgbmFtZVxuICovXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gSW50ZWdyYXRpb24gdGVzdCBydW5uZXJcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEludGVnUnVubmVyIHtcbiAgLyoqXG4gICAqIFRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHNuYXBzaG90IHdpbGwgYmUgc3RvcmVkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc25hcHNob3REaXI6IHN0cmluZztcblxuICAvKipcbiAgICogQW4gaW5zdGFuY2Ugb2YgdGhlIENESyAgQ0xJXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2RrOiBJQ2RrO1xuXG4gIC8qKlxuICAgKiBQcmV0dHkgbmFtZSBvZiB0aGUgdGVzdFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRlc3ROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSB1c2VkIGluIHRoZSAnLS1hcHAnIENMSSBwYXJhbWV0ZXJcbiAgICpcbiAgICogUGF0aCB0byB0aGUgaW50ZWcgdGVzdCBzb3VyY2UgZmlsZSwgcmVsYXRpdmUgdG8gYHRoaXMuZGlyZWN0b3J5YC5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBjZGtBcHA6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhdGggd2hlcmUgdGhlIGBjZGsuY29udGV4dC5qc29uYCBmaWxlXG4gICAqIHdpbGwgYmUgY3JlYXRlZFxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNka0NvbnRleHRQYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB3b3JraW5nIGRpcmVjdG9yeSB0aGF0IHRoZSBpbnRlZ3JhdGlvbiB0ZXN0cyB3aWxsIGJlXG4gICAqIGV4ZWN1dGVkIGZyb21cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBkaXJlY3Rvcnk6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRlc3QgdG8gcnVuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGVzdDogSW50ZWdUZXN0O1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IG9wdGlvbnMgdG8gcGFzcyB0byB0aGUgQ0RLIENMSVxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlZmF1bHRBcmdzOiBEZWZhdWx0Q2RrT3B0aW9ucyA9IHtcbiAgICBwYXRoTWV0YWRhdGE6IGZhbHNlLFxuICAgIGFzc2V0TWV0YWRhdGE6IGZhbHNlLFxuICAgIHZlcnNpb25SZXBvcnRpbmc6IGZhbHNlLFxuICB9O1xuXG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBDREsgd2lsbCBiZSBzeW50aGVkIHRvXG4gICAqXG4gICAqIFJlbGF0aXZlIHRvIGN3ZC5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBjZGtPdXREaXI6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHByb2ZpbGUgdG8gdXNlIGZvciB0aGUgQ0RLIENMSSBjYWxsc1xuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHByb2ZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNob3cgb3V0cHV0IGZyb20gdGhlIGludGVnIHRlc3QgcnVuLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNob3dPdXRwdXQ6IGJvb2xlYW47XG5cbiAgcHJvdGVjdGVkIF9kZXN0cnVjdGl2ZUNoYW5nZXM/OiBEZXN0cnVjdGl2ZUNoYW5nZVtdO1xuICBwcml2YXRlIGxlZ2FjeUNvbnRleHQ/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBwcml2YXRlIF9leHBlY3RlZFRlc3RTdWl0ZT86IEludGVnVGVzdFN1aXRlIHwgTGVnYWN5SW50ZWdUZXN0U3VpdGU7XG4gIHByaXZhdGUgX2FjdHVhbFRlc3RTdWl0ZT86IEludGVnVGVzdFN1aXRlIHwgTGVnYWN5SW50ZWdUZXN0U3VpdGU7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogSW50ZWdSdW5uZXJPcHRpb25zKSB7XG4gICAgdGhpcy50ZXN0ID0gb3B0aW9ucy50ZXN0O1xuICAgIHRoaXMuZGlyZWN0b3J5ID0gdGhpcy50ZXN0LmRpcmVjdG9yeTtcbiAgICB0aGlzLnRlc3ROYW1lID0gdGhpcy50ZXN0LnRlc3ROYW1lO1xuICAgIHRoaXMuc25hcHNob3REaXIgPSB0aGlzLnRlc3Quc25hcHNob3REaXI7XG4gICAgdGhpcy5jZGtDb250ZXh0UGF0aCA9IHBhdGguam9pbih0aGlzLmRpcmVjdG9yeSwgJ2Nkay5jb250ZXh0Lmpzb24nKTtcbiAgICB0aGlzLnByb2ZpbGUgPSBvcHRpb25zLnByb2ZpbGU7XG4gICAgdGhpcy5zaG93T3V0cHV0ID0gb3B0aW9ucy5zaG93T3V0cHV0ID8/IGZhbHNlO1xuXG4gICAgdGhpcy5jZGsgPSBvcHRpb25zLmNkayA/PyBtYWtlRW5naW5lKG9wdGlvbnMpO1xuICAgIHRoaXMuY2RrT3V0RGlyID0gb3B0aW9ucy5pbnRlZ091dERpciA/PyB0aGlzLnRlc3QudGVtcG9yYXJ5T3V0cHV0RGlyO1xuXG4gICAgY29uc3QgdGVzdFJ1bkNvbW1hbmQgPSB0aGlzLnRlc3QuYXBwQ29tbWFuZDtcbiAgICB0aGlzLmNka0FwcCA9IHRlc3RSdW5Db21tYW5kLnJlcGxhY2UoJ3tmaWxlUGF0aH0nLCBwYXRoLnJlbGF0aXZlKHRoaXMuZGlyZWN0b3J5LCB0aGlzLnRlc3QuZmlsZU5hbWUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGxpc3Qgb2YgZXhwZWN0ZWQgKGkuZS4gZXhpc3RpbmcpIHRlc3QgY2FzZXMgZm9yIHRoaXMgaW50ZWdyYXRpb24gdGVzdFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGV4cGVjdGVkVGVzdHMoKTogUHJvbWlzZTx7IFt0ZXN0TmFtZTogc3RyaW5nXTogVGVzdENhc2UgfSB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5leHBlY3RlZFRlc3RTdWl0ZSgpKT8udGVzdFN1aXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgbGlzdCBvZiBhY3R1YWwgKGkuZS4gbmV3KSB0ZXN0IGNhc2VzIGZvciB0aGlzIGludGVncmF0aW9uIHRlc3RcbiAgICovXG4gIHB1YmxpYyBhc3luYyBhY3R1YWxUZXN0cygpOiBQcm9taXNlPHsgW3Rlc3ROYW1lOiBzdHJpbmddOiBUZXN0Q2FzZSB9IHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmFjdHVhbFRlc3RTdWl0ZSgpKS50ZXN0U3VpdGU7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgYSBuZXcgXCJhY3R1YWxcIiBzbmFwc2hvdCB3aGljaCB3aWxsIGJlIGNvbXBhcmVkIHRvIHRoZVxuICAgKiBleGlzdGluZyBcImV4cGVjdGVkXCIgc25hcHNob3RcbiAgICogVGhpcyB3aWxsIHN5bnRoIGFuZCB0aGVuIGxvYWQgdGhlIGludGVncmF0aW9uIHRlc3QgbWFuaWZlc3RcbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZW5lcmF0ZUFjdHVhbFNuYXBzaG90KCk6IFByb21pc2U8SW50ZWdUZXN0U3VpdGUgfCBMZWdhY3lJbnRlZ1Rlc3RTdWl0ZT4ge1xuICAgIGF3YWl0IHRoaXMuY2RrLnN5bnRoRmFzdCh7XG4gICAgICBleGVjQ21kOiB0aGlzLmNka0FwcC5zcGxpdCgnICcpLFxuICAgICAgLy8gd2UgZG9uJ3Qga25vdyB0aGUgXCJhY3R1YWxcIiBjb250ZXh0IHlldCAodGhpcyBtZXRob2QgaXMgd2hhdCBnZW5lcmF0ZXMgaXQpIHNvIGp1c3RcbiAgICAgIC8vIHVzZSB0aGUgXCJleHBlY3RlZFwiIGNvbnRleHQuIFRoaXMgaXMgb25seSBydW4gaW4gb3JkZXIgdG8gcmVhZCB0aGUgbWFuaWZlc3RcbiAgICAgIGNvbnRleHQ6IHRoaXMuZ2V0Q29udGV4dCgoYXdhaXQgdGhpcy5leHBlY3RlZFRlc3RTdWl0ZSgpKT8uc3ludGhDb250ZXh0KSxcbiAgICAgIGVudjogREVGQVVMVF9TWU5USF9PUFRJT05TLmVudixcbiAgICAgIG91dHB1dDogcGF0aC5yZWxhdGl2ZSh0aGlzLmRpcmVjdG9yeSwgdGhpcy5jZGtPdXREaXIpLFxuICAgIH0pO1xuICAgIGNvbnN0IG1hbmlmZXN0ID0gYXdhaXQgdGhpcy5sb2FkTWFuaWZlc3QodGhpcy5jZGtPdXREaXIpO1xuICAgIC8vIGFmdGVyIHdlIGxvYWQgdGhlIG1hbmlmZXN0IHJlbW92ZSB0aGUgdG1wIHNuYXBzaG90XG4gICAgLy8gc28gdGhhdCBpdCBkb2Vzbid0IG1lc3MgdXAgdGhlIHJlYWwgc25hcHNob3QgY3JlYXRlZCBsYXRlclxuICAgIHRoaXMuY2xlYW51cCgpO1xuICAgIHJldHVybiBtYW5pZmVzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgaWYgYSBzbmFwc2hvdCBhbHJlYWR5IGV4aXN0cyBmb3IgdGhpcyB0ZXN0XG4gICAqL1xuICBwdWJsaWMgaGFzU25hcHNob3QoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZzLmV4aXN0c1N5bmModGhpcy5zbmFwc2hvdERpcik7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRlc3Qgc3VpdGUgZnJvbSB0aGUgZXhpc3Rpbmcgc25hcHNob3RcbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBleHBlY3RlZFRlc3RTdWl0ZSgpOiBQcm9taXNlPEludGVnVGVzdFN1aXRlIHwgTGVnYWN5SW50ZWdUZXN0U3VpdGUgfCB1bmRlZmluZWQ+IHtcbiAgICBpZiAoIXRoaXMuX2V4cGVjdGVkVGVzdFN1aXRlICYmIHRoaXMuaGFzU25hcHNob3QoKSkge1xuICAgICAgdGhpcy5fZXhwZWN0ZWRUZXN0U3VpdGUgPSBhd2FpdCB0aGlzLmxvYWRNYW5pZmVzdCgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZXhwZWN0ZWRUZXN0U3VpdGU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRlc3Qgc3VpdGUgZnJvbSB0aGUgbmV3IFwiYWN0dWFsXCIgc25hcHNob3RcbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBhY3R1YWxUZXN0U3VpdGUoKTogUHJvbWlzZTxJbnRlZ1Rlc3RTdWl0ZSB8IExlZ2FjeUludGVnVGVzdFN1aXRlPiB7XG4gICAgaWYgKCF0aGlzLl9hY3R1YWxUZXN0U3VpdGUpIHtcbiAgICAgIHRoaXMuX2FjdHVhbFRlc3RTdWl0ZSA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVBY3R1YWxTbmFwc2hvdCgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fYWN0dWFsVGVzdFN1aXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgdGhlIGludGVnIG1hbmlmZXN0IHdoaWNoIGNvbnRhaW5zIGluZm9ybWF0aW9uXG4gICAqIG9uIGhvdyB0byBleGVjdXRlIHRoZSB0ZXN0c1xuICAgKiBGaXJzdCB3ZSB0cnkgYW5kIGxvYWQgdGhlIG1hbmlmZXN0IGZyb20gdGhlIGludGVnIG1hbmlmZXN0IChpLmUuIGludGVnLmpzb24pXG4gICAqIGZyb20gdGhlIGNsb3VkIGFzc2VtYmx5LiBJZiBpdCBkb2Vzbid0IGV4aXN0LCB0aGVuIHdlIGZhbGxiYWNrIHRvIHRoZVxuICAgKiBcImxlZ2FjeSBtb2RlXCIgYW5kIGNyZWF0ZSBhIG1hbmlmZXN0IGZyb20gcHJhZ21hXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgbG9hZE1hbmlmZXN0KGRpcj86IHN0cmluZyk6IFByb21pc2U8SW50ZWdUZXN0U3VpdGUgfCBMZWdhY3lJbnRlZ1Rlc3RTdWl0ZT4ge1xuICAgIGNvbnN0IG1hbmlmZXN0ID0gZGlyID8/IHRoaXMuc25hcHNob3REaXI7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHRlc3RTdWl0ZSA9IEludGVnVGVzdFN1aXRlLmZyb21QYXRoKG1hbmlmZXN0KTtcbiAgICAgIHJldHVybiB0ZXN0U3VpdGU7XG4gICAgfSBjYXRjaCAobW9kZXJuRXJyb3I6IGFueSkge1xuICAgICAgLy8gT25seSBhdHRlbXB0IGxlZ2FjeSB0ZXN0IGNhc2UgaWYgdGhlIGludGVnIHRlc3QgbWFuaWZlc3Qgd2FzIG5vdCBmb3VuZFxuICAgICAgLy8gRm9yIGFueSBvdGhlciBlcnJvcnMsIGUuZy4gd2hlbiBwYXJzaW5nIHRoZSBtYW5pZmVzdCBmYWlscywgd2UgYWJvcnQuXG4gICAgICBpZiAoIShtb2Rlcm5FcnJvciBpbnN0YW5jZW9mIE5vTWFuaWZlc3RFcnJvcikpIHtcbiAgICAgICAgdGhyb3cgbW9kZXJuRXJyb3I7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnNob3dPdXRwdXQpIHtcbiAgICAgICAgbG9nZ2VyLnRyYWNlKFxuICAgICAgICAgIFwiRmFpbGVkIHRvIGxvYWQgaW50ZWcgdGVzdCBtYW5pZmVzdCBmb3IgJyVzJy4gQXR0ZW1wdGluZyBhcyBkZXByZWNhdGVkIGxlZ2FjeSB0ZXN0IGluc3RlYWQuIEVycm9yIHdhczogJXNcIixcbiAgICAgICAgICBtYW5pZmVzdCxcbiAgICAgICAgICBtb2Rlcm5FcnJvci5tZXNzYWdlID8/IFN0cmluZyhtb2Rlcm5FcnJvciksXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRlc3RDYXNlcyA9IGF3YWl0IExlZ2FjeUludGVnVGVzdFN1aXRlLmZyb21MZWdhY3koe1xuICAgICAgICBjZGs6IHRoaXMuY2RrLFxuICAgICAgICB0ZXN0TmFtZTogdGhpcy50ZXN0Lm5vcm1hbGl6ZWRUZXN0TmFtZSxcbiAgICAgICAgaW50ZWdTb3VyY2VGaWxlUGF0aDogdGhpcy50ZXN0LmZpbGVOYW1lLFxuICAgICAgICBsaXN0T3B0aW9uczoge1xuICAgICAgICAgIC4uLnRoaXMuZGVmYXVsdEFyZ3MsXG4gICAgICAgICAgYWxsOiB0cnVlLFxuICAgICAgICAgIGFwcDogdGhpcy5jZGtBcHAsXG4gICAgICAgICAgcHJvZmlsZTogdGhpcy5wcm9maWxlLFxuICAgICAgICAgIG91dHB1dDogcGF0aC5yZWxhdGl2ZSh0aGlzLmRpcmVjdG9yeSwgdGhpcy5jZGtPdXREaXIpLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICB0aGlzLmxlZ2FjeUNvbnRleHQgPSBMZWdhY3lJbnRlZ1Rlc3RTdWl0ZS5nZXRQcmFnbWFDb250ZXh0KHRoaXMudGVzdC5maWxlTmFtZSk7XG4gICAgICByZXR1cm4gdGVzdENhc2VzO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjbGVhbnVwKCk6IHZvaWQge1xuICAgIGNvbnN0IGNka091dFBhdGggPSB0aGlzLmNka091dERpcjtcbiAgICBpZiAoZnMuZXhpc3RzU3luYyhjZGtPdXRQYXRoKSkge1xuICAgICAgZnMucmVtb3ZlU3luYyhjZGtPdXRQYXRoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlcmUgYXJlIGFueSBkZXN0cnVjdGl2ZSBjaGFuZ2VzIHRvIGEgc3RhY2sgdGhlbiB0aGlzIHdpbGwgcmVjb3JkXG4gICAqIHRob3NlIGluIHRoZSBtYW5pZmVzdC5qc29uIGZpbGVcbiAgICovXG4gIHByaXZhdGUgcmVuZGVyVHJhY2VEYXRhKCk6IE1hbmlmZXN0VHJhY2Uge1xuICAgIGNvbnN0IHRyYWNlRGF0YTogTWFuaWZlc3RUcmFjZSA9IG5ldyBNYXAoKTtcbiAgICBjb25zdCBkZXN0cnVjdGl2ZUNoYW5nZXMgPSB0aGlzLl9kZXN0cnVjdGl2ZUNoYW5nZXMgPz8gW107XG4gICAgZGVzdHJ1Y3RpdmVDaGFuZ2VzLmZvckVhY2goY2hhbmdlID0+IHtcbiAgICAgIGNvbnN0IHRyYWNlID0gdHJhY2VEYXRhLmdldChjaGFuZ2Uuc3RhY2tOYW1lKTtcbiAgICAgIGlmICh0cmFjZSkge1xuICAgICAgICB0cmFjZS5zZXQoY2hhbmdlLmxvZ2ljYWxJZCwgYCR7REVTVFJVQ1RJVkVfQ0hBTkdFU30gJHtjaGFuZ2UuaW1wYWN0fWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJhY2VEYXRhLnNldChjaGFuZ2Uuc3RhY2tOYW1lLCBuZXcgTWFwKFtcbiAgICAgICAgICBbY2hhbmdlLmxvZ2ljYWxJZCwgYCR7REVTVFJVQ1RJVkVfQ0hBTkdFU30gJHtjaGFuZ2UuaW1wYWN0fWBdLFxuICAgICAgICBdKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHRyYWNlRGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBjYXNlcyB3aGVyZSB3ZSBkbyBub3Qgd2FudCB0byByZXRhaW4gdGhlIGFzc2V0cyxcbiAgICogZm9yIGV4YW1wbGUsIGlmIHRoZSBhc3NldHMgYXJlIHZlcnkgbGFyZ2UuXG4gICAqXG4gICAqIFNpbmNlIGl0IGlzIHBvc3NpYmxlIHRvIGRpc2FibGUgdGhlIHVwZGF0ZSB3b3JrZmxvdyBmb3IgaW5kaXZpZHVhbCB0ZXN0XG4gICAqIGNhc2VzLCB0aGlzIG5lZWRzIHRvIGZpcnN0IGdldCBhIGxpc3Qgb2Ygc3RhY2tzIHRoYXQgaGF2ZSB0aGUgdXBkYXRlIHdvcmtmbG93XG4gICAqIGRpc2FibGVkIGFuZCB0aGVuIGRlbGV0ZSBhc3NldHMgdGhhdCByZWxhdGUgdG8gdGhhdCBzdGFjay4gSXQgZG9lcyB0aGF0XG4gICAqIGJ5IHJlYWRpbmcgdGhlIGFzc2V0IG1hbmlmZXN0IGZvciB0aGUgc3RhY2sgYW5kIGRlbGV0aW5nIHRoZSBhc3NldCBzb3VyY2VcbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyByZW1vdmVBc3NldHNGcm9tU25hcHNob3QoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc3RhY2tzID0gKGF3YWl0IHRoaXMuYWN0dWFsVGVzdFN1aXRlKCkpLmdldFN0YWNrc1dpdGhvdXRVcGRhdGVXb3JrZmxvdygpID8/IFtdO1xuICAgIGNvbnN0IG1hbmlmZXN0ID0gQXNzZW1ibHlNYW5pZmVzdFJlYWRlci5mcm9tUGF0aCh0aGlzLnNuYXBzaG90RGlyKTtcbiAgICBjb25zdCBhc3NldHMgPSBmbGF0dGVuKHN0YWNrcy5tYXAoc3RhY2sgPT4ge1xuICAgICAgcmV0dXJuIG1hbmlmZXN0LmdldEFzc2V0TG9jYXRpb25zRm9yU3RhY2soc3RhY2spID8/IFtdO1xuICAgIH0pKTtcblxuICAgIGFzc2V0cy5mb3JFYWNoKGFzc2V0ID0+IHtcbiAgICAgIGNvbnN0IGZpbGVOYW1lID0gcGF0aC5qb2luKHRoaXMuc25hcHNob3REaXIsIGFzc2V0KTtcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKGZpbGVOYW1lKSkge1xuICAgICAgICBpZiAoZnMubHN0YXRTeW5jKGZpbGVOYW1lKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyhmaWxlTmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZnMudW5saW5rU3luYyhmaWxlTmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgdGhlIGFzc2V0IGNhY2hlICguY2FjaGUvKSBmaWxlcyBmcm9tIHRoZSBzbmFwc2hvdC5cbiAgICogVGhlc2UgYXJlIGEgY2FjaGUgb2YgdGhlIGFzc2V0IHppcHMsIGJ1dCB3ZSBhcmUgZmluZSB3aXRoXG4gICAqIHJlLXppcHBpbmcgb24gZGVwbG95XG4gICAqL1xuICBwcm90ZWN0ZWQgcmVtb3ZlQXNzZXRzQ2FjaGVGcm9tU25hcHNob3QoKTogdm9pZCB7XG4gICAgY29uc3QgZmlsZXMgPSBmcy5yZWFkZGlyU3luYyh0aGlzLnNuYXBzaG90RGlyKTtcbiAgICBmaWxlcy5mb3JFYWNoKGZpbGUgPT4ge1xuICAgICAgY29uc3QgZmlsZU5hbWUgPSBwYXRoLmpvaW4odGhpcy5zbmFwc2hvdERpciwgZmlsZSk7XG4gICAgICBpZiAoZnMubHN0YXRTeW5jKGZpbGVOYW1lKS5pc0RpcmVjdG9yeSgpICYmIGZpbGUgPT09ICcuY2FjaGUnKSB7XG4gICAgICAgIGZzLmVtcHR5RGlyU3luYyhmaWxlTmFtZSk7XG4gICAgICAgIGZzLnJtZGlyU3luYyhmaWxlTmFtZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBuZXcgc25hcHNob3QuXG4gICAqXG4gICAqIElmIGxvb2t1cHMgYXJlIGVuYWJsZWQsIHRoZW4gd2UgbmVlZCBjcmVhdGUgdGhlIHNuYXBzaG90IGJ5IHN5bnRoJ2luZyBhZ2FpblxuICAgKiB3aXRoIHRoZSBkdW1teSBjb250ZXh0IHNvIHRoYXQgZWFjaCB0aW1lIHRoZSB0ZXN0IGlzIHJ1biBvbiBkaWZmZXJlbnQgbWFjaGluZXNcbiAgICogKGFuZCB3aXRoIGRpZmZlcmVudCBjb250ZXh0L2VudikgdGhlIGRpZmYgd2lsbCBub3QgY2hhbmdlLlxuICAgKlxuICAgKiBJZiBsb29rdXBzIGFyZSBkaXNhYmxlZCAod2hpY2ggbWVhbnMgdGhlIHN0YWNrIGlzIGVudiBhZ25vc3RpYykgdGhlbiBqdXN0IGNvcHlcbiAgICogdGhlIGFzc2VtYmx5IHRoYXQgd2FzIG91dHB1dCBieSB0aGUgZGVwbG95bWVudFxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGNyZWF0ZVNuYXBzaG90KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChmcy5leGlzdHNTeW5jKHRoaXMuc25hcHNob3REaXIpKSB7XG4gICAgICBmcy5yZW1vdmVTeW5jKHRoaXMuc25hcHNob3REaXIpO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdHVhbFRlc3RTdWl0ZSA9IGF3YWl0IHRoaXMuYWN0dWFsVGVzdFN1aXRlKCk7XG5cbiAgICAvLyBpZiBsb29rdXBzIGFyZSBlbmFibGVkIHRoZW4gd2UgbmVlZCB0byBzeW50aCBhZ2FpblxuICAgIC8vIHVzaW5nIGR1bW15IGNvbnRleHQgYW5kIHNhdmUgdGhhdCBhcyB0aGUgc25hcHNob3RcbiAgICBhd2FpdCB0aGlzLmNkay5zeW50aEZhc3Qoe1xuICAgICAgZXhlY0NtZDogdGhpcy5jZGtBcHAuc3BsaXQoJyAnKSxcbiAgICAgIGNvbnRleHQ6IHRoaXMuZ2V0Q29udGV4dChhY3R1YWxUZXN0U3VpdGUuZW5hYmxlTG9va3VwcyA/IERFRkFVTFRfU1lOVEhfT1BUSU9OUy5jb250ZXh0IDoge30pLFxuICAgICAgZW52OiBERUZBVUxUX1NZTlRIX09QVElPTlMuZW52LFxuICAgICAgb3V0cHV0OiBwYXRoLnJlbGF0aXZlKHRoaXMuZGlyZWN0b3J5LCB0aGlzLnNuYXBzaG90RGlyKSxcbiAgICB9KTtcblxuICAgIGF3YWl0IHRoaXMuY2xlYW51cFNuYXBzaG90KCk7XG4gIH1cblxuICAvKipcbiAgICogUGVyZm9ybSBzb21lIGNsZWFudXAgc3RlcHMgYWZ0ZXIgdGhlIHNuYXBzaG90IGlzIGNyZWF0ZWRcbiAgICogQW55dGltZSB0aGUgc25hcHNob3QgbmVlZHMgdG8gYmUgbW9kaWZpZWQgYWZ0ZXIgY3JlYXRpb25cbiAgICogdGhlIGxvZ2ljIHNob3VsZCBsaXZlIGhlcmUuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGNsZWFudXBTbmFwc2hvdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoZnMuZXhpc3RzU3luYyh0aGlzLnNuYXBzaG90RGlyKSkge1xuICAgICAgYXdhaXQgdGhpcy5yZW1vdmVBc3NldHNGcm9tU25hcHNob3QoKTtcbiAgICAgIHRoaXMucmVtb3ZlQXNzZXRzQ2FjaGVGcm9tU25hcHNob3QoKTtcbiAgICAgIGNvbnN0IGFzc2VtYmx5ID0gQXNzZW1ibHlNYW5pZmVzdFJlYWRlci5mcm9tUGF0aCh0aGlzLnNuYXBzaG90RGlyKTtcbiAgICAgIGFzc2VtYmx5LmNsZWFuTWFuaWZlc3QoKTtcbiAgICAgIGFzc2VtYmx5LnJlY29yZFRyYWNlKHRoaXMucmVuZGVyVHJhY2VEYXRhKCkpO1xuICAgIH1cblxuICAgIC8vIGlmIHRoaXMgaXMgYSBsZWdhY3kgdGVzdCB0aGVuIGNyZWF0ZSBhbiBpbnRlZyBtYW5pZmVzdFxuICAgIC8vIGluIHRoZSBzbmFwc2hvdCBkaXJlY3Rvcnkgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIHRoZVxuICAgIC8vIHVwZGF0ZSB3b3JrZmxvdy4gU2F2ZSBhbnkgbGVnYWN5Q29udGV4dCBhcyB3ZWxsIHNvIHRoYXQgaXQgY2FuIGJlIHJlYWRcbiAgICAvLyB0aGUgbmV4dCB0aW1lXG4gICAgY29uc3QgYWN0dWFsVGVzdFN1aXRlID0gYXdhaXQgdGhpcy5hY3R1YWxUZXN0U3VpdGUoKTtcbiAgICBpZiAoYWN0dWFsVGVzdFN1aXRlLnR5cGUgPT09ICdsZWdhY3ktdGVzdC1zdWl0ZScpIHtcbiAgICAgIChhY3R1YWxUZXN0U3VpdGUgYXMgTGVnYWN5SW50ZWdUZXN0U3VpdGUpLnNhdmVNYW5pZmVzdCh0aGlzLnNuYXBzaG90RGlyLCB0aGlzLmxlZ2FjeUNvbnRleHQpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDb250ZXh0KGFkZGl0aW9uYWxDb250ZXh0PzogUmVjb3JkPHN0cmluZywgYW55Pik6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5jdXJyZW50bHlSZWNvbW1lbmRlZEF3c0Nka0xpYkZsYWdzKCksXG4gICAgICAuLi50aGlzLmxlZ2FjeUNvbnRleHQsXG4gICAgICAuLi5hZGRpdGlvbmFsQ29udGV4dCxcblxuICAgICAgLy8gV2Ugb3JpZ2luYWxseSBoYWQgUExBTk5FRCB0byBzZXQgdGhpcyB0byBbJ2F3cycsICdhd3MtY24nXSwgYnV0IGR1ZSB0byBhIHByb2dyYW1taW5nIG1pc3Rha2VcbiAgICAgIC8vIGl0IHdhcyBzZXQgdG8gZXZlcnl0aGluZy4gSW4gdGhpcyBQUiwgc2V0IGl0IHRvIGV2ZXJ5dGhpbmcgdG8gbm90IG1lc3MgdXAgYWxsIHRoZSBzbmFwc2hvdHMuXG4gICAgICBbVEFSR0VUX1BBUlRJVElPTlNdOiB1bmRlZmluZWQsXG5cbiAgICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0gVEhFIEZVVFVSRSBMSVZFUyBCRUxPVy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgIC8vIFJlc3RyaWN0aW5nIHRvIHRoZXNlIHRhcmdldCBwYXJ0aXRpb25zIG1ha2VzIG1vc3Qgc2VydmljZSBwcmluY2lwYWxzIHN5bnRoZXNpemUgdG9cbiAgICAgIC8vIGBzZXJ2aWNlLiR7VVJMX1NVRkZJWH1gLCB3aGljaCBpcyB0ZWNobmljYWxseSAqaW5jb3JyZWN0KiAoaXQncyBvbmx5IGBhbWF6b25hd3MuY29tYFxuICAgICAgLy8gb3IgYGFtYXpvbmF3cy5jb20uY25gLCBuZXZlciBVcmxTdWZmaXggZm9yIGFueSBvZiB0aGUgcmVzdHJpY3RlZCByZWdpb25zKSBidXQgaXQncyB3aGF0XG4gICAgICAvLyBtb3N0IGV4aXN0aW5nIGludGVnIHRlc3RzIGNvbnRhaW4sIGFuZCB3ZSB3YW50IHRvIGRpc3R1cmIgYXMgZmV3IGFzIHBvc3NpYmxlLlxuICAgICAgLy8gW1RBUkdFVF9QQVJUSVRJT05TXTogWydhd3MnLCAnYXdzLWNuJ10sXG4gICAgICAvKiAtLS0tLS0tLS0tLS0tLS0tIEVORCBPRiBUSEUgRlVUVVJFIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbiAgICB9O1xuICB9XG59XG5cbi8vIERlZmF1bHQgY29udGV4dCB3ZSBydW4gYWxsIGludGVnIHRlc3RzIHdpdGgsIHNvIHRoZXkgZG9uJ3QgZGVwZW5kIG9uIHRoZVxuLy8gYWNjb3VudCBvZiB0aGUgZXhlcmNpc2luZyB1c2VyLlxuZXhwb3J0IGNvbnN0IERFRkFVTFRfU1lOVEhfT1BUSU9OUyA9IHtcbiAgY29udGV4dDoge1xuICAgIFtBVkFJTEFCSUxJVFlfWk9ORV9GQUxMQkFDS19DT05URVhUX0tFWV06IFsndGVzdC1yZWdpb24tMWEnLCAndGVzdC1yZWdpb24tMWInLCAndGVzdC1yZWdpb24tMWMnXSxcbiAgICAnYXZhaWxhYmlsaXR5LXpvbmVzOmFjY291bnQ9MTIzNDU2Nzg6cmVnaW9uPXRlc3QtcmVnaW9uJzogWyd0ZXN0LXJlZ2lvbi0xYScsICd0ZXN0LXJlZ2lvbi0xYicsICd0ZXN0LXJlZ2lvbi0xYyddLFxuICAgICdzc206YWNjb3VudD0xMjM0NTY3ODpwYXJhbWV0ZXJOYW1lPS9hd3Mvc2VydmljZS9hbWktYW1hem9uLWxpbnV4LWxhdGVzdC9hbXpuLWFtaS1odm0teDg2XzY0LWdwMjpyZWdpb249dGVzdC1yZWdpb24nOiAnYW1pLTEyMzQnLFxuICAgICdzc206YWNjb3VudD0xMjM0NTY3ODpwYXJhbWV0ZXJOYW1lPS9hd3Mvc2VydmljZS9hbWktYW1hem9uLWxpbnV4LWxhdGVzdC9hbXpuMi1hbWktaHZtLXg4Nl82NC1ncDI6cmVnaW9uPXRlc3QtcmVnaW9uJzogJ2FtaS0xMjM0JyxcbiAgICAnc3NtOmFjY291bnQ9MTIzNDU2Nzg6cGFyYW1ldGVyTmFtZT0vYXdzL3NlcnZpY2UvZWNzL29wdGltaXplZC1hbWkvYW1hem9uLWxpbnV4L3JlY29tbWVuZGVkOnJlZ2lvbj10ZXN0LXJlZ2lvbic6ICd7XCJpbWFnZV9pZFwiOiBcImFtaS0xMjM0XCJ9JyxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHN0eWxpc3RpYy9tYXgtbGVuXG4gICAgJ2FtaTphY2NvdW50PTEyMzQ1Njc4OmZpbHRlcnMuaW1hZ2UtdHlwZS4wPW1hY2hpbmU6ZmlsdGVycy5uYW1lLjA9YW16bi1hbWktdnBjLW5hdC0qOmZpbHRlcnMuc3RhdGUuMD1hdmFpbGFibGU6b3duZXJzLjA9YW1hem9uOnJlZ2lvbj10ZXN0LXJlZ2lvbic6ICdhbWktMTIzNCcsXG4gICAgJ3ZwYy1wcm92aWRlcjphY2NvdW50PTEyMzQ1Njc4OmZpbHRlci5pc0RlZmF1bHQ9dHJ1ZTpyZWdpb249dGVzdC1yZWdpb246cmV0dXJuQXN5bW1ldHJpY1N1Ym5ldHM9dHJ1ZSc6IHtcbiAgICAgIHZwY0lkOiAndnBjLTYwOTAwOTA1JyxcbiAgICAgIHN1Ym5ldEdyb3VwczogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ1B1YmxpYycsXG4gICAgICAgICAgbmFtZTogJ1B1YmxpYycsXG4gICAgICAgICAgc3VibmV0czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzdWJuZXRJZDogJ3N1Ym5ldC1lMTk0NTVjYScsXG4gICAgICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmU6ICd1cy1lYXN0LTFhJyxcbiAgICAgICAgICAgICAgcm91dGVUYWJsZUlkOiAncnRiLWUxOTQ1NWNhJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHN1Ym5ldElkOiAnc3VibmV0LWUwYzI0Nzk3JyxcbiAgICAgICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZTogJ3VzLWVhc3QtMWInLFxuICAgICAgICAgICAgICByb3V0ZVRhYmxlSWQ6ICdydGItZTBjMjQ3OTcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc3VibmV0SWQ6ICdzdWJuZXQtY2NkNzczOTUnLFxuICAgICAgICAgICAgICBhdmFpbGFiaWxpdHlab25lOiAndXMtZWFzdC0xYycsXG4gICAgICAgICAgICAgIHJvdXRlVGFibGVJZDogJ3J0Yi1jY2Q3NzM5NScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gIH0sXG4gIGVudjoge1xuICAgIENES19JTlRFR19BQ0NPVU5UOiAnMTIzNDU2NzgnLFxuICAgIENES19JTlRFR19SRUdJT046ICd0ZXN0LXJlZ2lvbicsXG4gICAgQ0RLX0lOVEVHX0hPU1RFRF9aT05FX0lEOiAnWjIzQUJDNFhZWkwwNUInLFxuICAgIENES19JTlRFR19IT1NURURfWk9ORV9OQU1FOiAnZXhhbXBsZS5jb20nLFxuICAgIENES19JTlRFR19ET01BSU5fTkFNRTogJyouZXhhbXBsZS5jb20nLFxuICAgIENES19JTlRFR19DRVJUX0FSTjogJ2Fybjphd3M6YWNtOnRlc3QtcmVnaW9uOjEyMzQ1Njc4OmNlcnRpZmljYXRlLzg2NDY4MjA5LWEyNzItNTk1ZC1iODMxLTBlZmI2NDIxMjY1eicsXG4gICAgQ0RLX0lOVEVHX1NVQk5FVF9JRDogJ3N1Ym5ldC0wZGZmMWEzOTlkOGY2ZjkyYycsXG4gIH0sXG59O1xuXG4vKipcbiAqIFJldHVybiB0aGUgY3VycmVudGx5IHJlY29tbWVuZGVkIGZsYWdzIGZvciBgYXdzLWNkay1saWJgLlxuICpcbiAqIFRoZXNlIGhhdmUgYmVlbiBidWlsdCBpbnRvIHRoZSBDTEkgYXQgYnVpbGQgdGltZS4gSWYgdGhpcyBldmVyIGdldHMgY2hhbmdlZFxuICogYmFjayB0byBhIGR5bmFtaWMgbG9hZCwgcmVtZW1iZXIgdGhhdCB0aGlzIHNvdXJjZSBmaWxlIG1heSBiZSBidW5kbGVkIGludG9cbiAqIGEgSmF2YVNjcmlwdCBidW5kbGUsIGFuZCBgX19kaXJuYW1lYCBtaWdodCBub3QgcG9pbnQgd2hlcmUgeW91IHRoaW5rIGl0IGRvZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjdXJyZW50bHlSZWNvbW1lbmRlZEF3c0Nka0xpYkZsYWdzKCkge1xuICByZXR1cm4gcmVjb21tZW5kZWRGbGFnc0ZpbGU7XG59XG4iXX0=
|
|
332
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVubmVyLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJydW5uZXItYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUF1ZEEsZ0ZBRUM7QUF6ZEQsa0RBQWtEO0FBQ2xELDZCQUE2QjtBQUM3QixvRUFBcUY7QUFFckYsNENBQW9EO0FBQ3BELCtCQUErQjtBQUMvQix5REFBMEU7QUFFMUUsMEVBQTBFO0FBQzFFLG9DQUFtQztBQUNuQyxxQ0FBc0M7QUFFdEMsb0NBQW9DO0FBRXBDLDZEQUFrRTtBQUVsRSw2REFBMkQ7QUFFM0QsTUFBTSxtQkFBbUIsR0FBRyx3QkFBd0IsQ0FBQztBQXFEckQ7O0dBRUc7QUFDSDs7R0FFRztBQUNILE1BQXNCLFdBQVc7SUF1RS9CLFlBQVksT0FBMkI7UUEvQnZDOztXQUVHO1FBQ2dCLGdCQUFXLEdBQXNCO1lBQ2xELFlBQVksRUFBRSxLQUFLO1lBQ25CLGFBQWEsRUFBRSxLQUFLO1lBQ3BCLGdCQUFnQixFQUFFLEtBQUs7U0FDeEIsQ0FBQztRQXlCQSxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ25DLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDekMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQztRQUU5QyxJQUFJLENBQUMsR0FBRyxHQUFH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QVEsRUFBRSxpQkFBaUI7NEJBQzNCLGdCQUFnQixFQUFFLFlBQVk7NEJBQzlCLFlBQVksRUFBRSxjQUFjO3lCQUM3Qjt3QkFDRDs0QkFDRSxRQUFRLEVBQUUsaUJBQWlCOzRCQUMzQixnQkFBZ0IsRUFBRSxZQUFZOzRCQUM5QixZQUFZLEVBQUUsY0FBYzt5QkFDN0I7d0JBQ0Q7NEJBQ0UsUUFBUSxFQUFFLGlCQUFpQjs0QkFDM0IsZ0JBQWdCLEVBQUUsWUFBWTs0QkFDOUIsWUFBWSxFQUFFLGNBQWM7eUJBQzdCO3FCQUNGO2lCQUNGO2FBQ0Y7U0FDRjtLQUNGO0lBQ0QsR0FBRyxFQUFFO1FBQ0gsaUJBQWlCLEVBQUUsVUFBVTtRQUM3QixnQkFBZ0IsRUFBRSxhQUFhO1FBQy9CLHdCQUF3QixFQUFFLGdCQUFnQjtRQUMxQywwQkFBMEIsRUFBRSxhQUFhO1FBQ3pDLHFCQUFxQixFQUFFLGVBQWU7UUFDdEMsa0JBQWtCLEVBQUUsbUZBQW1GO1FBQ3ZHLG1CQUFtQixFQUFFLDBCQUEwQjtLQUNoRDtDQUNGLENBQUM7QUFFRjs7Ozs7O0dBTUc7QUFDSCxTQUFnQixrQ0FBa0M7SUFDaEQsT0FBTyxvQkFBb0IsQ0FBQztBQUM5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGNka2xhYnMvbm8tbGl0ZXJhbC1wYXJ0aXRpb24gKi9cbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBBVkFJTEFCSUxJVFlfWk9ORV9GQUxMQkFDS19DT05URVhUX0tFWSB9IGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LWFwaSc7XG5pbXBvcnQgdHlwZSB7IFRlc3RDYXNlLCBEZWZhdWx0Q2RrT3B0aW9ucyB9IGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LXNjaGVtYSc7XG5pbXBvcnQgeyBUQVJHRVRfUEFSVElUSU9OUyB9IGZyb20gJ0Bhd3MtY2RrL2N4LWFwaSc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgeyBJbnRlZ1Rlc3RTdWl0ZSwgTGVnYWN5SW50ZWdUZXN0U3VpdGUgfSBmcm9tICcuL2ludGVnLXRlc3Qtc3VpdGUnO1xuaW1wb3J0IHR5cGUgeyBJbnRlZ1Rlc3QgfSBmcm9tICcuL2ludGVncmF0aW9uLXRlc3RzJztcbmltcG9ydCAqIGFzIHJlY29tbWVuZGVkRmxhZ3NGaWxlIGZyb20gJy4uL3JlY29tbWVuZGVkLWZlYXR1cmUtZmxhZ3MuanNvbic7XG5pbXBvcnQgeyBmbGF0dGVuIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgbWFrZUVuZ2luZSB9IGZyb20gJy4vZW5naW5lJztcbmltcG9ydCB0eXBlIHsgSUNkayB9IGZyb20gJy4uL2VuZ2luZXMvY2RrLWludGVyZmFjZSc7XG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB0eXBlIHsgTWFuaWZlc3RUcmFjZSB9IGZyb20gJy4vcHJpdmF0ZS9jbG91ZC1hc3NlbWJseSc7XG5pbXBvcnQgeyBBc3NlbWJseU1hbmlmZXN0UmVhZGVyIH0gZnJvbSAnLi9wcml2YXRlL2Nsb3VkLWFzc2VtYmx5JztcbmltcG9ydCB0eXBlIHsgRGVzdHJ1Y3RpdmVDaGFuZ2UgfSBmcm9tICcuLi93b3JrZXJzL2NvbW1vbic7XG5pbXBvcnQgeyBOb01hbmlmZXN0RXJyb3IgfSBmcm9tICcuL3ByaXZhdGUvaW50ZWctbWFuaWZlc3QnO1xuXG5jb25zdCBERVNUUlVDVElWRV9DSEFOR0VTID0gJyEhREVTVFJVQ1RJVkVfQ0hBTkdFUzonO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNyZWF0aW5nIGFuIGludGVncmF0aW9uIHRlc3QgcnVubmVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZWdSdW5uZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIEluZm9ybWF0aW9uIGFib3V0IHRoZSB0ZXN0IHRvIHJ1blxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdDogSW50ZWdUZXN0O1xuXG4gIC8qKlxuICAgKiBUaGUgcmVnaW9uIHdoZXJlIHRoZSB0ZXN0IHNob3VsZCBiZSBkZXBsb3llZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBV1MgcHJvZmlsZSB0byB1c2Ugd2hlbiBpbnZva2luZyB0aGUgQ0RLIENMSVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHByb2ZpbGUgaXMgcGFzc2VkLCB0aGUgZGVmYXVsdCBwcm9maWxlIGlzIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IHByb2ZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRoYXQgd2lsbCBiZSBhdmFpbGFibGVcbiAgICogdG8gdGhlIENESyBDTElcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBhZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICAgKi9cbiAgcmVhZG9ubHkgZW52PzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIHRtcCBjZGsub3V0IGRpcmVjdG9yeVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRpcmVjdG9yeSB3aWxsIGJlIGBjZGstaW50ZWcub3V0LiR7dGVzdE5hbWV9YFxuICAgKi9cbiAgcmVhZG9ubHkgaW50ZWdPdXREaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluc3RhbmNlIG9mIHRoZSBDREsgVG9vbGtpdCBFbmdpbmUgdG8gdXNlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYmFzZWQgb24gYGVuZ2luZWAgb3B0aW9uXG4gICAqL1xuICByZWFkb25seSBjZGs/OiBJQ2RrO1xuXG4gIC8qKlxuICAgKiBTaG93IG91dHB1dCBmcm9tIHJ1bm5pbmcgaW50ZWdyYXRpb24gdGVzdHNcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHNob3dPdXRwdXQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFRoZSBkaWZmZXJlbnQgY29tcG9uZW50cyBvZiBhIHRlc3QgbmFtZVxuICovXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gSW50ZWdyYXRpb24gdGVzdCBydW5uZXJcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEludGVnUnVubmVyIHtcbiAgLyoqXG4gICAqIFRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHNuYXBzaG90IHdpbGwgYmUgc3RvcmVkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc25hcHNob3REaXI6IHN0cmluZztcblxuICAvKipcbiAgICogQW4gaW5zdGFuY2Ugb2YgdGhlIENESyAgQ0xJXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2RrOiBJQ2RrO1xuXG4gIC8qKlxuICAgKiBQcmV0dHkgbmFtZSBvZiB0aGUgdGVzdFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRlc3ROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSB1c2VkIGluIHRoZSAnLS1hcHAnIENMSSBwYXJhbWV0ZXJcbiAgICpcbiAgICogUGF0aCB0byB0aGUgaW50ZWcgdGVzdCBzb3VyY2UgZmlsZSwgcmVsYXRpdmUgdG8gYHRoaXMuZGlyZWN0b3J5YC5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBjZGtBcHA6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhdGggd2hlcmUgdGhlIGBjZGsuY29udGV4dC5qc29uYCBmaWxlXG4gICAqIHdpbGwgYmUgY3JlYXRlZFxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNka0NvbnRleHRQYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB3b3JraW5nIGRpcmVjdG9yeSB0aGF0IHRoZSBpbnRlZ3JhdGlvbiB0ZXN0cyB3aWxsIGJlXG4gICAqIGV4ZWN1dGVkIGZyb21cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBkaXJlY3Rvcnk6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRlc3QgdG8gcnVuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGVzdDogSW50ZWdUZXN0O1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IG9wdGlvbnMgdG8gcGFzcyB0byB0aGUgQ0RLIENMSVxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlZmF1bHRBcmdzOiBEZWZhdWx0Q2RrT3B0aW9ucyA9IHtcbiAgICBwYXRoTWV0YWRhdGE6IGZhbHNlLFxuICAgIGFzc2V0TWV0YWRhdGE6IGZhbHNlLFxuICAgIHZlcnNpb25SZXBvcnRpbmc6IGZhbHNlLFxuICB9O1xuXG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBDREsgd2lsbCBiZSBzeW50aGVkIHRvXG4gICAqXG4gICAqIFJlbGF0aXZlIHRvIGN3ZC5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBjZGtPdXREaXI6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHByb2ZpbGUgdG8gdXNlIGZvciB0aGUgQ0RLIENMSSBjYWxsc1xuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHByb2ZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNob3cgb3V0cHV0IGZyb20gdGhlIGludGVnIHRlc3QgcnVuLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNob3dPdXRwdXQ6IGJvb2xlYW47XG5cbiAgcHJvdGVjdGVkIF9kZXN0cnVjdGl2ZUNoYW5nZXM/OiBEZXN0cnVjdGl2ZUNoYW5nZVtdO1xuICBwcml2YXRlIGxlZ2FjeUNvbnRleHQ/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBwcml2YXRlIF9leHBlY3RlZFRlc3RTdWl0ZT86IEludGVnVGVzdFN1aXRlIHwgTGVnYWN5SW50ZWdUZXN0U3VpdGU7XG4gIHByaXZhdGUgX2FjdHVhbFRlc3RTdWl0ZT86IEludGVnVGVzdFN1aXRlIHwgTGVnYWN5SW50ZWdUZXN0U3VpdGU7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogSW50ZWdSdW5uZXJPcHRpb25zKSB7XG4gICAgdGhpcy50ZXN0ID0gb3B0aW9ucy50ZXN0O1xuICAgIHRoaXMuZGlyZWN0b3J5ID0gdGhpcy50ZXN0LmRpcmVjdG9yeTtcbiAgICB0aGlzLnRlc3ROYW1lID0gdGhpcy50ZXN0LnRlc3ROYW1lO1xuICAgIHRoaXMuc25hcHNob3REaXIgPSB0aGlzLnRlc3Quc25hcHNob3REaXI7XG4gICAgdGhpcy5jZGtDb250ZXh0UGF0aCA9IHBhdGguam9pbih0aGlzLmRpcmVjdG9yeSwgJ2Nkay5jb250ZXh0Lmpzb24nKTtcbiAgICB0aGlzLnByb2ZpbGUgPSBvcHRpb25zLnByb2ZpbGU7XG4gICAgdGhpcy5zaG93T3V0cHV0ID0gb3B0aW9ucy5zaG93T3V0cHV0ID8/IGZhbHNlO1xuXG4gICAgdGhpcy5jZGsgPSBvcHRpb25zLmNkayA/PyBtYWtlRW5naW5lKG9wdGlvbnMpO1xuICAgIHRoaXMuY2RrT3V0RGlyID0gb3B0aW9ucy5pbnRlZ091dERpciA/PyB0aGlzLnRlc3QudGVtcG9yYXJ5T3V0cHV0RGlyO1xuXG4gICAgY29uc3QgdGVzdFJ1bkNvbW1hbmQgPSB0aGlzLnRlc3QuYXBwQ29tbWFuZDtcbiAgICB0aGlzLmNka0FwcCA9IHRlc3RSdW5Db21tYW5kLnJlcGxhY2UoJ3tmaWxlUGF0aH0nLCBwYXRoLnJlbGF0aXZlKHRoaXMuZGlyZWN0b3J5LCB0aGlzLnRlc3QuZmlsZU5hbWUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGxpc3Qgb2YgZXhwZWN0ZWQgKGkuZS4gZXhpc3RpbmcpIHRlc3QgY2FzZXMgZm9yIHRoaXMgaW50ZWdyYXRpb24gdGVzdFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGV4cGVjdGVkVGVzdHMoKTogUHJvbWlzZTx7IFt0ZXN0TmFtZTogc3RyaW5nXTogVGVzdENhc2UgfSB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5leHBlY3RlZFRlc3RTdWl0ZSgpKT8udGVzdFN1aXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgbGlzdCBvZiBhY3R1YWwgKGkuZS4gbmV3KSB0ZXN0IGNhc2VzIGZvciB0aGlzIGludGVncmF0aW9uIHRlc3RcbiAgICovXG4gIHB1YmxpYyBhc3luYyBhY3R1YWxUZXN0cygpOiBQcm9taXNlPHsgW3Rlc3ROYW1lOiBzdHJpbmddOiBUZXN0Q2FzZSB9IHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmFjdHVhbFRlc3RTdWl0ZSgpKS50ZXN0U3VpdGU7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgYSBuZXcgXCJhY3R1YWxcIiBzbmFwc2hvdCB3aGljaCB3aWxsIGJlIGNvbXBhcmVkIHRvIHRoZVxuICAgKiBleGlzdGluZyBcImV4cGVjdGVkXCIgc25hcHNob3RcbiAgICogVGhpcyB3aWxsIHN5bnRoIGFuZCB0aGVuIGxvYWQgdGhlIGludGVncmF0aW9uIHRlc3QgbWFuaWZlc3RcbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZW5lcmF0ZUFjdHVhbFNuYXBzaG90KCk6IFByb21pc2U8SW50ZWdUZXN0U3VpdGUgfCBMZWdhY3lJbnRlZ1Rlc3RTdWl0ZT4ge1xuICAgIGF3YWl0IHRoaXMuY2RrLnN5bnRoRmFzdCh7XG4gICAgICBleGVjQ21kOiB0aGlzLmNka0FwcC5zcGxpdCgnICcpLFxuICAgICAgLy8gd2UgZG9uJ3Qga25vdyB0aGUgXCJhY3R1YWxcIiBjb250ZXh0IHlldCAodGhpcyBtZXRob2QgaXMgd2hhdCBnZW5lcmF0ZXMgaXQpIHNvIGp1c3RcbiAgICAgIC8vIHVzZSB0aGUgXCJleHBlY3RlZFwiIGNvbnRleHQuIFRoaXMgaXMgb25seSBydW4gaW4gb3JkZXIgdG8gcmVhZCB0aGUgbWFuaWZlc3RcbiAgICAgIGNvbnRleHQ6IHRoaXMuZ2V0Q29udGV4dCgoYXdhaXQgdGhpcy5leHBlY3RlZFRlc3RTdWl0ZSgpKT8uc3ludGhDb250ZXh0KSxcbiAgICAgIGVudjogREVGQVVMVF9TWU5USF9PUFRJT05TLmVudixcbiAgICAgIG91dHB1dDogcGF0aC5yZWxhdGl2ZSh0aGlzLmRpcmVjdG9yeSwgdGhpcy5jZGtPdXREaXIpLFxuICAgIH0pO1xuICAgIGNvbnN0IG1hbmlmZXN0ID0gYXdhaXQgdGhpcy5sb2FkTWFuaWZlc3QodGhpcy5jZGtPdXREaXIpO1xuICAgIC8vIGFmdGVyIHdlIGxvYWQgdGhlIG1hbmlmZXN0IHJlbW92ZSB0aGUgdG1wIHNuYXBzaG90XG4gICAgLy8gc28gdGhhdCBpdCBkb2Vzbid0IG1lc3MgdXAgdGhlIHJlYWwgc25hcHNob3QgY3JlYXRlZCBsYXRlclxuICAgIHRoaXMuY2xlYW51cCgpO1xuICAgIHJldHVybiBtYW5pZmVzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgaWYgYSBzbmFwc2hvdCBhbHJlYWR5IGV4aXN0cyBmb3IgdGhpcyB0ZXN0XG4gICAqL1xuICBwdWJsaWMgaGFzU25hcHNob3QoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZzLmV4aXN0c1N5bmModGhpcy5zbmFwc2hvdERpcik7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRlc3Qgc3VpdGUgZnJvbSB0aGUgZXhpc3Rpbmcgc25hcHNob3RcbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBleHBlY3RlZFRlc3RTdWl0ZSgpOiBQcm9taXNlPEludGVnVGVzdFN1aXRlIHwgTGVnYWN5SW50ZWdUZXN0U3VpdGUgfCB1bmRlZmluZWQ+IHtcbiAgICBpZiAoIXRoaXMuX2V4cGVjdGVkVGVzdFN1aXRlICYmIHRoaXMuaGFzU25hcHNob3QoKSkge1xuICAgICAgdGhpcy5fZXhwZWN0ZWRUZXN0U3VpdGUgPSBhd2FpdCB0aGlzLmxvYWRNYW5pZmVzdCgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZXhwZWN0ZWRUZXN0U3VpdGU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRlc3Qgc3VpdGUgZnJvbSB0aGUgbmV3IFwiYWN0dWFsXCIgc25hcHNob3RcbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBhY3R1YWxUZXN0U3VpdGUoKTogUHJvbWlzZTxJbnRlZ1Rlc3RTdWl0ZSB8IExlZ2FjeUludGVnVGVzdFN1aXRlPiB7XG4gICAgaWYgKCF0aGlzLl9hY3R1YWxUZXN0U3VpdGUpIHtcbiAgICAgIHRoaXMuX2FjdHVhbFRlc3RTdWl0ZSA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVBY3R1YWxTbmFwc2hvdCgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fYWN0dWFsVGVzdFN1aXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgdGhlIGludGVnIG1hbmlmZXN0IHdoaWNoIGNvbnRhaW5zIGluZm9ybWF0aW9uXG4gICAqIG9uIGhvdyB0byBleGVjdXRlIHRoZSB0ZXN0c1xuICAgKiBGaXJzdCB3ZSB0cnkgYW5kIGxvYWQgdGhlIG1hbmlmZXN0IGZyb20gdGhlIGludGVnIG1hbmlmZXN0IChpLmUuIGludGVnLmpzb24pXG4gICAqIGZyb20gdGhlIGNsb3VkIGFzc2VtYmx5LiBJZiBpdCBkb2Vzbid0IGV4aXN0LCB0aGVuIHdlIGZhbGxiYWNrIHRvIHRoZVxuICAgKiBcImxlZ2FjeSBtb2RlXCIgYW5kIGNyZWF0ZSBhIG1hbmlmZXN0IGZyb20gcHJhZ21hXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgbG9hZE1hbmlmZXN0KGRpcj86IHN0cmluZyk6IFByb21pc2U8SW50ZWdUZXN0U3VpdGUgfCBMZWdhY3lJbnRlZ1Rlc3RTdWl0ZT4ge1xuICAgIGNvbnN0IG1hbmlmZXN0ID0gZGlyID8/IHRoaXMuc25hcHNob3REaXI7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHRlc3RTdWl0ZSA9IEludGVnVGVzdFN1aXRlLmZyb21QYXRoKG1hbmlmZXN0KTtcbiAgICAgIHJldHVybiB0ZXN0U3VpdGU7XG4gICAgfSBjYXRjaCAobW9kZXJuRXJyb3I6IGFueSkge1xuICAgICAgLy8gT25seSBhdHRlbXB0IGxlZ2FjeSB0ZXN0IGNhc2UgaWYgdGhlIGludGVnIHRlc3QgbWFuaWZlc3Qgd2FzIG5vdCBmb3VuZFxuICAgICAgLy8gRm9yIGFueSBvdGhlciBlcnJvcnMsIGUuZy4gd2hlbiBwYXJzaW5nIHRoZSBtYW5pZmVzdCBmYWlscywgd2UgYWJvcnQuXG4gICAgICBpZiAoIShtb2Rlcm5FcnJvciBpbnN0YW5jZW9mIE5vTWFuaWZlc3RFcnJvcikpIHtcbiAgICAgICAgdGhyb3cgbW9kZXJuRXJyb3I7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnNob3dPdXRwdXQpIHtcbiAgICAgICAgbG9nZ2VyLnRyYWNlKFxuICAgICAgICAgIFwiRmFpbGVkIHRvIGxvYWQgaW50ZWcgdGVzdCBtYW5pZmVzdCBmb3IgJyVzJy4gQXR0ZW1wdGluZyBhcyBkZXByZWNhdGVkIGxlZ2FjeSB0ZXN0IGluc3RlYWQuIEVycm9yIHdhczogJXNcIixcbiAgICAgICAgICBtYW5pZmVzdCxcbiAgICAgICAgICBtb2Rlcm5FcnJvci5tZXNzYWdlID8/IFN0cmluZyhtb2Rlcm5FcnJvciksXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRlc3RDYXNlcyA9IGF3YWl0IExlZ2FjeUludGVnVGVzdFN1aXRlLmZyb21MZWdhY3koe1xuICAgICAgICBjZGs6IHRoaXMuY2RrLFxuICAgICAgICB0ZXN0TmFtZTogdGhpcy50ZXN0Lm5vcm1hbGl6ZWRUZXN0TmFtZSxcbiAgICAgICAgaW50ZWdTb3VyY2VGaWxlUGF0aDogdGhpcy50ZXN0LmZpbGVOYW1lLFxuICAgICAgICBsaXN0T3B0aW9uczoge1xuICAgICAgICAgIC4uLnRoaXMuZGVmYXVsdEFyZ3MsXG4gICAgICAgICAgYWxsOiB0cnVlLFxuICAgICAgICAgIGFwcDogdGhpcy5jZGtBcHAsXG4gICAgICAgICAgcHJvZmlsZTogdGhpcy5wcm9maWxlLFxuICAgICAgICAgIG91dHB1dDogcGF0aC5yZWxhdGl2ZSh0aGlzLmRpcmVjdG9yeSwgdGhpcy5jZGtPdXREaXIpLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICB0aGlzLmxlZ2FjeUNvbnRleHQgPSBMZWdhY3lJbnRlZ1Rlc3RTdWl0ZS5nZXRQcmFnbWFDb250ZXh0KHRoaXMudGVzdC5maWxlTmFtZSk7XG4gICAgICByZXR1cm4gdGVzdENhc2VzO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjbGVhbnVwKCk6IHZvaWQge1xuICAgIGNvbnN0IGNka091dFBhdGggPSB0aGlzLmNka091dERpcjtcbiAgICBpZiAoZnMuZXhpc3RzU3luYyhjZGtPdXRQYXRoKSkge1xuICAgICAgZnMucmVtb3ZlU3luYyhjZGtPdXRQYXRoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlcmUgYXJlIGFueSBkZXN0cnVjdGl2ZSBjaGFuZ2VzIHRvIGEgc3RhY2sgdGhlbiB0aGlzIHdpbGwgcmVjb3JkXG4gICAqIHRob3NlIGluIHRoZSBtYW5pZmVzdC5qc29uIGZpbGVcbiAgICovXG4gIHByaXZhdGUgcmVuZGVyVHJhY2VEYXRhKCk6IE1hbmlmZXN0VHJhY2Uge1xuICAgIGNvbnN0IHRyYWNlRGF0YTogTWFuaWZlc3RUcmFjZSA9IG5ldyBNYXAoKTtcbiAgICBjb25zdCBkZXN0cnVjdGl2ZUNoYW5nZXMgPSB0aGlzLl9kZXN0cnVjdGl2ZUNoYW5nZXMgPz8gW107XG4gICAgZGVzdHJ1Y3RpdmVDaGFuZ2VzLmZvckVhY2goY2hhbmdlID0+IHtcbiAgICAgIGNvbnN0IHRyYWNlID0gdHJhY2VEYXRhLmdldChjaGFuZ2Uuc3RhY2tOYW1lKTtcbiAgICAgIGlmICh0cmFjZSkge1xuICAgICAgICB0cmFjZS5zZXQoY2hhbmdlLmxvZ2ljYWxJZCwgYCR7REVTVFJVQ1RJVkVfQ0hBTkdFU30gJHtjaGFuZ2UuaW1wYWN0fWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJhY2VEYXRhLnNldChjaGFuZ2Uuc3RhY2tOYW1lLCBuZXcgTWFwKFtcbiAgICAgICAgICBbY2hhbmdlLmxvZ2ljYWxJZCwgYCR7REVTVFJVQ1RJVkVfQ0hBTkdFU30gJHtjaGFuZ2UuaW1wYWN0fWBdLFxuICAgICAgICBdKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHRyYWNlRGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBjYXNlcyB3aGVyZSB3ZSBkbyBub3Qgd2FudCB0byByZXRhaW4gdGhlIGFzc2V0cyxcbiAgICogZm9yIGV4YW1wbGUsIGlmIHRoZSBhc3NldHMgYXJlIHZlcnkgbGFyZ2UuXG4gICAqXG4gICAqIFNpbmNlIGl0IGlzIHBvc3NpYmxlIHRvIGRpc2FibGUgdGhlIHVwZGF0ZSB3b3JrZmxvdyBmb3IgaW5kaXZpZHVhbCB0ZXN0XG4gICAqIGNhc2VzLCB0aGlzIG5lZWRzIHRvIGZpcnN0IGdldCBhIGxpc3Qgb2Ygc3RhY2tzIHRoYXQgaGF2ZSB0aGUgdXBkYXRlIHdvcmtmbG93XG4gICAqIGRpc2FibGVkIGFuZCB0aGVuIGRlbGV0ZSBhc3NldHMgdGhhdCByZWxhdGUgdG8gdGhhdCBzdGFjay4gSXQgZG9lcyB0aGF0XG4gICAqIGJ5IHJlYWRpbmcgdGhlIGFzc2V0IG1hbmlmZXN0IGZvciB0aGUgc3RhY2sgYW5kIGRlbGV0aW5nIHRoZSBhc3NldCBzb3VyY2VcbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyByZW1vdmVBc3NldHNGcm9tU25hcHNob3QoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc3RhY2tzID0gKGF3YWl0IHRoaXMuYWN0dWFsVGVzdFN1aXRlKCkpLmdldFN0YWNrc1dpdGhvdXRVcGRhdGVXb3JrZmxvdygpID8/IFtdO1xuICAgIGNvbnN0IG1hbmlmZXN0ID0gQXNzZW1ibHlNYW5pZmVzdFJlYWRlci5mcm9tUGF0aCh0aGlzLnNuYXBzaG90RGlyKTtcbiAgICBjb25zdCBhc3NldHMgPSBmbGF0dGVuKHN0YWNrcy5tYXAoc3RhY2sgPT4ge1xuICAgICAgcmV0dXJuIG1hbmlmZXN0LmdldEFzc2V0TG9jYXRpb25zRm9yU3RhY2soc3RhY2spID8/IFtdO1xuICAgIH0pKTtcblxuICAgIGFzc2V0cy5mb3JFYWNoKGFzc2V0ID0+IHtcbiAgICAgIGNvbnN0IGZpbGVOYW1lID0gcGF0aC5qb2luKHRoaXMuc25hcHNob3REaXIsIGFzc2V0KTtcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKGZpbGVOYW1lKSkge1xuICAgICAgICBpZiAoZnMubHN0YXRTeW5jKGZpbGVOYW1lKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyhmaWxlTmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZnMudW5saW5rU3luYyhmaWxlTmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgdGhlIGFzc2V0IGNhY2hlICguY2FjaGUvKSBmaWxlcyBmcm9tIHRoZSBzbmFwc2hvdC5cbiAgICogVGhlc2UgYXJlIGEgY2FjaGUgb2YgdGhlIGFzc2V0IHppcHMsIGJ1dCB3ZSBhcmUgZmluZSB3aXRoXG4gICAqIHJlLXppcHBpbmcgb24gZGVwbG95XG4gICAqL1xuICBwcm90ZWN0ZWQgcmVtb3ZlQXNzZXRzQ2FjaGVGcm9tU25hcHNob3QoKTogdm9pZCB7XG4gICAgY29uc3QgZmlsZXMgPSBmcy5yZWFkZGlyU3luYyh0aGlzLnNuYXBzaG90RGlyKTtcbiAgICBmaWxlcy5mb3JFYWNoKGZpbGUgPT4ge1xuICAgICAgY29uc3QgZmlsZU5hbWUgPSBwYXRoLmpvaW4odGhpcy5zbmFwc2hvdERpciwgZmlsZSk7XG4gICAgICBpZiAoZnMubHN0YXRTeW5jKGZpbGVOYW1lKS5pc0RpcmVjdG9yeSgpICYmIGZpbGUgPT09ICcuY2FjaGUnKSB7XG4gICAgICAgIGZzLmVtcHR5RGlyU3luYyhmaWxlTmFtZSk7XG4gICAgICAgIGZzLnJtZGlyU3luYyhmaWxlTmFtZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBuZXcgc25hcHNob3QuXG4gICAqXG4gICAqIElmIGxvb2t1cHMgYXJlIGVuYWJsZWQsIHRoZW4gd2UgbmVlZCBjcmVhdGUgdGhlIHNuYXBzaG90IGJ5IHN5bnRoJ2luZyBhZ2FpblxuICAgKiB3aXRoIHRoZSBkdW1teSBjb250ZXh0IHNvIHRoYXQgZWFjaCB0aW1lIHRoZSB0ZXN0IGlzIHJ1biBvbiBkaWZmZXJlbnQgbWFjaGluZXNcbiAgICogKGFuZCB3aXRoIGRpZmZlcmVudCBjb250ZXh0L2VudikgdGhlIGRpZmYgd2lsbCBub3QgY2hhbmdlLlxuICAgKlxuICAgKiBJZiBsb29rdXBzIGFyZSBkaXNhYmxlZCAod2hpY2ggbWVhbnMgdGhlIHN0YWNrIGlzIGVudiBhZ25vc3RpYykgdGhlbiBqdXN0IGNvcHlcbiAgICogdGhlIGFzc2VtYmx5IHRoYXQgd2FzIG91dHB1dCBieSB0aGUgZGVwbG95bWVudFxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGNyZWF0ZVNuYXBzaG90KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChmcy5leGlzdHNTeW5jKHRoaXMuc25hcHNob3REaXIpKSB7XG4gICAgICBmcy5yZW1vdmVTeW5jKHRoaXMuc25hcHNob3REaXIpO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdHVhbFRlc3RTdWl0ZSA9IGF3YWl0IHRoaXMuYWN0dWFsVGVzdFN1aXRlKCk7XG5cbiAgICAvLyBpZiBsb29rdXBzIGFyZSBlbmFibGVkIHRoZW4gd2UgbmVlZCB0byBzeW50aCBhZ2FpblxuICAgIC8vIHVzaW5nIGR1bW15IGNvbnRleHQgYW5kIHNhdmUgdGhhdCBhcyB0aGUgc25hcHNob3RcbiAgICBhd2FpdCB0aGlzLmNkay5zeW50aEZhc3Qoe1xuICAgICAgZXhlY0NtZDogdGhpcy5jZGtBcHAuc3BsaXQoJyAnKSxcbiAgICAgIGNvbnRleHQ6IHRoaXMuZ2V0Q29udGV4dChhY3R1YWxUZXN0U3VpdGUuZW5hYmxlTG9va3VwcyA/IERFRkFVTFRfU1lOVEhfT1BUSU9OUy5jb250ZXh0IDoge30pLFxuICAgICAgZW52OiBERUZBVUxUX1NZTlRIX09QVElPTlMuZW52LFxuICAgICAgb3V0cHV0OiBwYXRoLnJlbGF0aXZlKHRoaXMuZGlyZWN0b3J5LCB0aGlzLnNuYXBzaG90RGlyKSxcbiAgICB9KTtcblxuICAgIGF3YWl0IHRoaXMuY2xlYW51cFNuYXBzaG90KCk7XG4gIH1cblxuICAvKipcbiAgICogUGVyZm9ybSBzb21lIGNsZWFudXAgc3RlcHMgYWZ0ZXIgdGhlIHNuYXBzaG90IGlzIGNyZWF0ZWRcbiAgICogQW55dGltZSB0aGUgc25hcHNob3QgbmVlZHMgdG8gYmUgbW9kaWZpZWQgYWZ0ZXIgY3JlYXRpb25cbiAgICogdGhlIGxvZ2ljIHNob3VsZCBsaXZlIGhlcmUuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGNsZWFudXBTbmFwc2hvdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoZnMuZXhpc3RzU3luYyh0aGlzLnNuYXBzaG90RGlyKSkge1xuICAgICAgYXdhaXQgdGhpcy5yZW1vdmVBc3NldHNGcm9tU25hcHNob3QoKTtcbiAgICAgIHRoaXMucmVtb3ZlQXNzZXRzQ2FjaGVGcm9tU25hcHNob3QoKTtcbiAgICAgIGNvbnN0IGFzc2VtYmx5ID0gQXNzZW1ibHlNYW5pZmVzdFJlYWRlci5mcm9tUGF0aCh0aGlzLnNuYXBzaG90RGlyKTtcbiAgICAgIGFzc2VtYmx5LmNsZWFuTWFuaWZlc3QoKTtcbiAgICAgIGFzc2VtYmx5LnJlY29yZFRyYWNlKHRoaXMucmVuZGVyVHJhY2VEYXRhKCkpO1xuICAgIH1cblxuICAgIC8vIGlmIHRoaXMgaXMgYSBsZWdhY3kgdGVzdCB0aGVuIGNyZWF0ZSBhbiBpbnRlZyBtYW5pZmVzdFxuICAgIC8vIGluIHRoZSBzbmFwc2hvdCBkaXJlY3Rvcnkgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIHRoZVxuICAgIC8vIHVwZGF0ZSB3b3JrZmxvdy4gU2F2ZSBhbnkgbGVnYWN5Q29udGV4dCBhcyB3ZWxsIHNvIHRoYXQgaXQgY2FuIGJlIHJlYWRcbiAgICAvLyB0aGUgbmV4dCB0aW1lXG4gICAgY29uc3QgYWN0dWFsVGVzdFN1aXRlID0gYXdhaXQgdGhpcy5hY3R1YWxUZXN0U3VpdGUoKTtcbiAgICBpZiAoYWN0dWFsVGVzdFN1aXRlLnR5cGUgPT09ICdsZWdhY3ktdGVzdC1zdWl0ZScpIHtcbiAgICAgIChhY3R1YWxUZXN0U3VpdGUgYXMgTGVnYWN5SW50ZWdUZXN0U3VpdGUpLnNhdmVNYW5pZmVzdCh0aGlzLnNuYXBzaG90RGlyLCB0aGlzLmxlZ2FjeUNvbnRleHQpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDb250ZXh0KGFkZGl0aW9uYWxDb250ZXh0PzogUmVjb3JkPHN0cmluZywgYW55Pik6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5jdXJyZW50bHlSZWNvbW1lbmRlZEF3c0Nka0xpYkZsYWdzKCksXG4gICAgICAuLi50aGlzLmxlZ2FjeUNvbnRleHQsXG4gICAgICAuLi5hZGRpdGlvbmFsQ29udGV4dCxcblxuICAgICAgLy8gV2Ugb3JpZ2luYWxseSBoYWQgUExBTk5FRCB0byBzZXQgdGhpcyB0byBbJ2F3cycsICdhd3MtY24nXSwgYnV0IGR1ZSB0byBhIHByb2dyYW1taW5nIG1pc3Rha2VcbiAgICAgIC8vIGl0IHdhcyBzZXQgdG8gZXZlcnl0aGluZy4gSW4gdGhpcyBQUiwgc2V0IGl0IHRvIGV2ZXJ5dGhpbmcgdG8gbm90IG1lc3MgdXAgYWxsIHRoZSBzbmFwc2hvdHMuXG4gICAgICBbVEFSR0VUX1BBUlRJVElPTlNdOiB1bmRlZmluZWQsXG5cbiAgICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0gVEhFIEZVVFVSRSBMSVZFUyBCRUxPVy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgIC8vIFJlc3RyaWN0aW5nIHRvIHRoZXNlIHRhcmdldCBwYXJ0aXRpb25zIG1ha2VzIG1vc3Qgc2VydmljZSBwcmluY2lwYWxzIHN5bnRoZXNpemUgdG9cbiAgICAgIC8vIGBzZXJ2aWNlLiR7VVJMX1NVRkZJWH1gLCB3aGljaCBpcyB0ZWNobmljYWxseSAqaW5jb3JyZWN0KiAoaXQncyBvbmx5IGBhbWF6b25hd3MuY29tYFxuICAgICAgLy8gb3IgYGFtYXpvbmF3cy5jb20uY25gLCBuZXZlciBVcmxTdWZmaXggZm9yIGFueSBvZiB0aGUgcmVzdHJpY3RlZCByZWdpb25zKSBidXQgaXQncyB3aGF0XG4gICAgICAvLyBtb3N0IGV4aXN0aW5nIGludGVnIHRlc3RzIGNvbnRhaW4sIGFuZCB3ZSB3YW50IHRvIGRpc3R1cmIgYXMgZmV3IGFzIHBvc3NpYmxlLlxuICAgICAgLy8gW1RBUkdFVF9QQVJUSVRJT05TXTogWydhd3MnLCAnYXdzLWNuJ10sXG4gICAgICAvKiAtLS0tLS0tLS0tLS0tLS0tIEVORCBPRiBUSEUgRlVUVVJFIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbiAgICB9O1xuICB9XG59XG5cbi8vIERlZmF1bHQgY29udGV4dCB3ZSBydW4gYWxsIGludGVnIHRlc3RzIHdpdGgsIHNvIHRoZXkgZG9uJ3QgZGVwZW5kIG9uIHRoZVxuLy8gYWNjb3VudCBvZiB0aGUgZXhlcmNpc2luZyB1c2VyLlxuZXhwb3J0IGNvbnN0IERFRkFVTFRfU1lOVEhfT1BUSU9OUyA9IHtcbiAgY29udGV4dDoge1xuICAgIFtBVkFJTEFCSUxJVFlfWk9ORV9GQUxMQkFDS19DT05URVhUX0tFWV06IFsndGVzdC1yZWdpb24tMWEnLCAndGVzdC1yZWdpb24tMWInLCAndGVzdC1yZWdpb24tMWMnXSxcbiAgICAnYXZhaWxhYmlsaXR5LXpvbmVzOmFjY291bnQ9MTIzNDU2Nzg6cmVnaW9uPXRlc3QtcmVnaW9uJzogWyd0ZXN0LXJlZ2lvbi0xYScsICd0ZXN0LXJlZ2lvbi0xYicsICd0ZXN0LXJlZ2lvbi0xYyddLFxuICAgICdzc206YWNjb3VudD0xMjM0NTY3ODpwYXJhbWV0ZXJOYW1lPS9hd3Mvc2VydmljZS9hbWktYW1hem9uLWxpbnV4LWxhdGVzdC9hbXpuLWFtaS1odm0teDg2XzY0LWdwMjpyZWdpb249dGVzdC1yZWdpb24nOiAnYW1pLTEyMzQnLFxuICAgICdzc206YWNjb3VudD0xMjM0NTY3ODpwYXJhbWV0ZXJOYW1lPS9hd3Mvc2VydmljZS9hbWktYW1hem9uLWxpbnV4LWxhdGVzdC9hbXpuMi1hbWktaHZtLXg4Nl82NC1ncDI6cmVnaW9uPXRlc3QtcmVnaW9uJzogJ2FtaS0xMjM0JyxcbiAgICAnc3NtOmFjY291bnQ9MTIzNDU2Nzg6cGFyYW1ldGVyTmFtZT0vYXdzL3NlcnZpY2UvZWNzL29wdGltaXplZC1hbWkvYW1hem9uLWxpbnV4L3JlY29tbWVuZGVkOnJlZ2lvbj10ZXN0LXJlZ2lvbic6ICd7XCJpbWFnZV9pZFwiOiBcImFtaS0xMjM0XCJ9JyxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHN0eWxpc3RpYy9tYXgtbGVuXG4gICAgJ2FtaTphY2NvdW50PTEyMzQ1Njc4OmZpbHRlcnMuaW1hZ2UtdHlwZS4wPW1hY2hpbmU6ZmlsdGVycy5uYW1lLjA9YW16bi1hbWktdnBjLW5hdC0qOmZpbHRlcnMuc3RhdGUuMD1hdmFpbGFibGU6b3duZXJzLjA9YW1hem9uOnJlZ2lvbj10ZXN0LXJlZ2lvbic6ICdhbWktMTIzNCcsXG4gICAgJ3ZwYy1wcm92aWRlcjphY2NvdW50PTEyMzQ1Njc4OmZpbHRlci5pc0RlZmF1bHQ9dHJ1ZTpyZWdpb249dGVzdC1yZWdpb246cmV0dXJuQXN5bW1ldHJpY1N1Ym5ldHM9dHJ1ZSc6IHtcbiAgICAgIHZwY0lkOiAndnBjLTYwOTAwOTA1JyxcbiAgICAgIHN1Ym5ldEdyb3VwczogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ1B1YmxpYycsXG4gICAgICAgICAgbmFtZTogJ1B1YmxpYycsXG4gICAgICAgICAgc3VibmV0czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzdWJuZXRJZDogJ3N1Ym5ldC1lMTk0NTVjYScsXG4gICAgICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmU6ICd1cy1lYXN0LTFhJyxcbiAgICAgICAgICAgICAgcm91dGVUYWJsZUlkOiAncnRiLWUxOTQ1NWNhJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHN1Ym5ldElkOiAnc3VibmV0LWUwYzI0Nzk3JyxcbiAgICAgICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZTogJ3VzLWVhc3QtMWInLFxuICAgICAgICAgICAgICByb3V0ZVRhYmxlSWQ6ICdydGItZTBjMjQ3OTcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc3VibmV0SWQ6ICdzdWJuZXQtY2NkNzczOTUnLFxuICAgICAgICAgICAgICBhdmFpbGFiaWxpdHlab25lOiAndXMtZWFzdC0xYycsXG4gICAgICAgICAgICAgIHJvdXRlVGFibGVJZDogJ3J0Yi1jY2Q3NzM5NScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gIH0sXG4gIGVudjoge1xuICAgIENES19JTlRFR19BQ0NPVU5UOiAnMTIzNDU2NzgnLFxuICAgIENES19JTlRFR19SRUdJT046ICd0ZXN0LXJlZ2lvbicsXG4gICAgQ0RLX0lOVEVHX0hPU1RFRF9aT05FX0lEOiAnWjIzQUJDNFhZWkwwNUInLFxuICAgIENES19JTlRFR19IT1NURURfWk9ORV9OQU1FOiAnZXhhbXBsZS5jb20nLFxuICAgIENES19JTlRFR19ET01BSU5fTkFNRTogJyouZXhhbXBsZS5jb20nLFxuICAgIENES19JTlRFR19DRVJUX0FSTjogJ2Fybjphd3M6YWNtOnRlc3QtcmVnaW9uOjEyMzQ1Njc4OmNlcnRpZmljYXRlLzg2NDY4MjA5LWEyNzItNTk1ZC1iODMxLTBlZmI2NDIxMjY1eicsXG4gICAgQ0RLX0lOVEVHX1NVQk5FVF9JRDogJ3N1Ym5ldC0wZGZmMWEzOTlkOGY2ZjkyYycsXG4gIH0sXG59O1xuXG4vKipcbiAqIFJldHVybiB0aGUgY3VycmVudGx5IHJlY29tbWVuZGVkIGZsYWdzIGZvciBgYXdzLWNkay1saWJgLlxuICpcbiAqIFRoZXNlIGhhdmUgYmVlbiBidWlsdCBpbnRvIHRoZSBDTEkgYXQgYnVpbGQgdGltZS4gSWYgdGhpcyBldmVyIGdldHMgY2hhbmdlZFxuICogYmFjayB0byBhIGR5bmFtaWMgbG9hZCwgcmVtZW1iZXIgdGhhdCB0aGlzIHNvdXJjZSBmaWxlIG1heSBiZSBidW5kbGVkIGludG9cbiAqIGEgSmF2YVNjcmlwdCBidW5kbGUsIGFuZCBgX19kaXJuYW1lYCBtaWdodCBub3QgcG9pbnQgd2hlcmUgeW91IHRoaW5rIGl0IGRvZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjdXJyZW50bHlSZWNvbW1lbmRlZEF3c0Nka0xpYkZsYWdzKCkge1xuICByZXR1cm4gcmVjb21tZW5kZWRGbGFnc0ZpbGU7XG59XG4iXX0=
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Status of an unstable feature
|
|
3
|
+
*/
|
|
4
|
+
export declare enum FeatureStatus {
|
|
5
|
+
/** Feature is actively supported and can be used */
|
|
6
|
+
SUPPORTED = "supported",
|
|
7
|
+
/** Feature is deprecated but still functional - warns user */
|
|
8
|
+
DEPRECATED = "deprecated",
|
|
9
|
+
/** Feature has been removed - warns user and ignores */
|
|
10
|
+
REMOVED = "removed"
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Definition of an unstable feature
|
|
14
|
+
*/
|
|
15
|
+
export interface UnstableFeature {
|
|
16
|
+
/** Current status of the feature */
|
|
17
|
+
readonly status: FeatureStatus;
|
|
18
|
+
/** Warning message to display when requested feature is deprecated */
|
|
19
|
+
readonly deprecationMessage: string;
|
|
20
|
+
/** Message to display for requested features that are removed */
|
|
21
|
+
readonly removalMessage: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Registry of all unstable features
|
|
25
|
+
*/
|
|
26
|
+
export declare const UNSTABLE_FEATURES: Record<string, UnstableFeature>;
|
|
27
|
+
/**
|
|
28
|
+
* Process unstable feature flags and emit appropriate warnings
|
|
29
|
+
*
|
|
30
|
+
* @param unstableFeatures - Array of feature names from CLI --unstable option
|
|
31
|
+
* @returns Array of valid, enabled feature names
|
|
32
|
+
*/
|
|
33
|
+
export declare function processUnstableFeatures(unstableFeatures?: string[]): string[];
|
|
34
|
+
/**
|
|
35
|
+
* Returns a description of available unstable features for CLI help text
|
|
36
|
+
*
|
|
37
|
+
* @returns A string describing available features or indicating none are available
|
|
38
|
+
*/
|
|
39
|
+
export declare function availableFeaturesDescription(): string;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UNSTABLE_FEATURES = exports.FeatureStatus = void 0;
|
|
4
|
+
exports.processUnstableFeatures = processUnstableFeatures;
|
|
5
|
+
exports.availableFeaturesDescription = availableFeaturesDescription;
|
|
6
|
+
const logger = require("./logger");
|
|
7
|
+
/**
|
|
8
|
+
* Status of an unstable feature
|
|
9
|
+
*/
|
|
10
|
+
var FeatureStatus;
|
|
11
|
+
(function (FeatureStatus) {
|
|
12
|
+
/** Feature is actively supported and can be used */
|
|
13
|
+
FeatureStatus["SUPPORTED"] = "supported";
|
|
14
|
+
/** Feature is deprecated but still functional - warns user */
|
|
15
|
+
FeatureStatus["DEPRECATED"] = "deprecated";
|
|
16
|
+
/** Feature has been removed - warns user and ignores */
|
|
17
|
+
FeatureStatus["REMOVED"] = "removed";
|
|
18
|
+
})(FeatureStatus || (exports.FeatureStatus = FeatureStatus = {}));
|
|
19
|
+
/**
|
|
20
|
+
* Registry of all unstable features
|
|
21
|
+
*/
|
|
22
|
+
exports.UNSTABLE_FEATURES = {
|
|
23
|
+
'deprecated-cli-engine': {
|
|
24
|
+
status: FeatureStatus.REMOVED,
|
|
25
|
+
deprecationMessage: 'You have opted-in to use the deprecated CLI engine which is scheduled to be removed in January 2026. If you have encountered blockers while using the new default engine, please let us know by opening an issue: https://github.com/aws/aws-cdk-cli/issues/new/choose\n\nTo use the new default engine, remove the `--unstable=deprecated-cli-engine` option.',
|
|
26
|
+
removalMessage: 'The CLI engine has been removed. The toolkit-lib engine is now the only supported engine. Please remove this flag.',
|
|
27
|
+
},
|
|
28
|
+
'toolkit-lib-engine': {
|
|
29
|
+
status: FeatureStatus.REMOVED,
|
|
30
|
+
deprecationMessage: 'The toolkit-lib engine is now the default engine. This flag can be safely removed. You may choose to temporarily revert to the old engine by adding the `--unstable=deprecated-cli-engine` option.',
|
|
31
|
+
removalMessage: 'The toolkit-lib engine is now the default and only engine. This flag can be safely removed.',
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Process unstable feature flags and emit appropriate warnings
|
|
36
|
+
*
|
|
37
|
+
* @param unstableFeatures - Array of feature names from CLI --unstable option
|
|
38
|
+
* @returns Array of valid, enabled feature names
|
|
39
|
+
*/
|
|
40
|
+
function processUnstableFeatures(unstableFeatures = []) {
|
|
41
|
+
const validFeatures = [];
|
|
42
|
+
for (const featureName of unstableFeatures) {
|
|
43
|
+
const feature = exports.UNSTABLE_FEATURES[featureName];
|
|
44
|
+
if (!feature) {
|
|
45
|
+
// Unknown feature - warn and ignore
|
|
46
|
+
logger.warning(`Unknown unstable feature: '${featureName}'. This option will be ignored.`);
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
switch (feature.status) {
|
|
50
|
+
case FeatureStatus.REMOVED:
|
|
51
|
+
// Removed feature - warn with removal message and ignore
|
|
52
|
+
logger.warning(`[Removed] ${feature.deprecationMessage}`);
|
|
53
|
+
if (feature.removalMessage) {
|
|
54
|
+
logger.warning(feature.removalMessage);
|
|
55
|
+
}
|
|
56
|
+
break;
|
|
57
|
+
case FeatureStatus.DEPRECATED:
|
|
58
|
+
// Deprecated feature - warn but still apply
|
|
59
|
+
logger.warning(`[Deprecated] ${feature.deprecationMessage}`);
|
|
60
|
+
validFeatures.push(featureName);
|
|
61
|
+
break;
|
|
62
|
+
case FeatureStatus.SUPPORTED:
|
|
63
|
+
// Supported feature - apply without warning
|
|
64
|
+
validFeatures.push(featureName);
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return validFeatures;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Returns a description of available unstable features for CLI help text
|
|
72
|
+
*
|
|
73
|
+
* @returns A string describing available features or indicating none are available
|
|
74
|
+
*/
|
|
75
|
+
function availableFeaturesDescription() {
|
|
76
|
+
const availableFeatures = Object.entries(exports.UNSTABLE_FEATURES)
|
|
77
|
+
.filter(([_, feature]) => feature.status === FeatureStatus.SUPPORTED)
|
|
78
|
+
.map(([name]) => name);
|
|
79
|
+
if (availableFeatures.length === 0) {
|
|
80
|
+
return 'Currently no unstable features are available.';
|
|
81
|
+
}
|
|
82
|
+
return `Available features: ${availableFeatures.join(', ')}.`;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5zdGFibGUtZmVhdHVyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ1bnN0YWJsZS1mZWF0dXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFnREEsMERBbUNDO0FBT0Qsb0VBVUM7QUFwR0QsbUNBQW1DO0FBRW5DOztHQUVHO0FBQ0gsSUFBWSxhQU9YO0FBUEQsV0FBWSxhQUFhO0lBQ3ZCLG9EQUFvRDtJQUNwRCx3Q0FBdUIsQ0FBQTtJQUN2Qiw4REFBOEQ7SUFDOUQsMENBQXlCLENBQUE7SUFDekIsd0RBQXdEO0lBQ3hELG9DQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFQVyxhQUFhLDZCQUFiLGFBQWEsUUFPeEI7QUFjRDs7R0FFRztBQUNVLFFBQUEsaUJBQWlCLEdBQW9DO0lBQ2hFLHVCQUF1QixFQUFFO1FBQ3ZCLE1BQU0sRUFBRSxhQUFhLENBQUMsT0FBTztRQUM3QixrQkFBa0IsRUFBRSxnV0FBZ1c7UUFDcFgsY0FBYyxFQUFFLG9IQUFvSDtLQUNySTtJQUNELG9CQUFvQixFQUFFO1FBQ3BCLE1BQU0sRUFBRSxhQUFhLENBQUMsT0FBTztRQUM3QixrQkFBa0IsRUFBRSxvTUFBb007UUFDeE4sY0FBYyxFQUFFLDZGQUE2RjtLQUM5RztDQUNGLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILFNBQWdCLHVCQUF1QixDQUFDLG1CQUE2QixFQUFFO0lBQ3JFLE1BQU0sYUFBYSxHQUFhLEVBQUUsQ0FBQztJQUVuQyxLQUFLLE1BQU0sV0FBVyxJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFDM0MsTUFBTSxPQUFPLEdBQUcseUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFL0MsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2Isb0NBQW9DO1lBQ3BDLE1BQU0sQ0FBQyxPQUFPLENBQUMsOEJBQThCLFdBQVcsaUNBQWlDLENBQUMsQ0FBQztZQUMzRixTQUFTO1FBQ1gsQ0FBQztRQUVELFFBQVEsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3ZCLEtBQUssYUFBYSxDQUFDLE9BQU87Z0JBQ3hCLHlEQUF5RDtnQkFDekQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxhQUFhLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7Z0JBQzFELElBQUksT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUMzQixNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDekMsQ0FBQztnQkFDRCxNQUFNO1lBRVIsS0FBSyxhQUFhLENBQUMsVUFBVTtnQkFDM0IsNENBQTRDO2dCQUM1QyxNQUFNLENBQUMsT0FBTyxDQUFDLGdCQUFnQixPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO2dCQUM3RCxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNoQyxNQUFNO1lBRVIsS0FBSyxhQUFhLENBQUMsU0FBUztnQkFDMUIsNENBQTRDO2dCQUM1QyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNoQyxNQUFNO1FBQ1YsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLGFBQWEsQ0FBQztBQUN2QixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLDRCQUE0QjtJQUMxQyxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMseUJBQWlCLENBQUM7U0FDeEQsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssYUFBYSxDQUFDLFNBQVMsQ0FBQztTQUNwRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUV6QixJQUFJLGlCQUFpQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNuQyxPQUFPLCtDQUErQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxPQUFPLHVCQUF1QixpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUNoRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJy4vbG9nZ2VyJztcblxuLyoqXG4gKiBTdGF0dXMgb2YgYW4gdW5zdGFibGUgZmVhdHVyZVxuICovXG5leHBvcnQgZW51bSBGZWF0dXJlU3RhdHVzIHtcbiAgLyoqIEZlYXR1cmUgaXMgYWN0aXZlbHkgc3VwcG9ydGVkIGFuZCBjYW4gYmUgdXNlZCAqL1xuICBTVVBQT1JURUQgPSAnc3VwcG9ydGVkJyxcbiAgLyoqIEZlYXR1cmUgaXMgZGVwcmVjYXRlZCBidXQgc3RpbGwgZnVuY3Rpb25hbCAtIHdhcm5zIHVzZXIgKi9cbiAgREVQUkVDQVRFRCA9ICdkZXByZWNhdGVkJyxcbiAgLyoqIEZlYXR1cmUgaGFzIGJlZW4gcmVtb3ZlZCAtIHdhcm5zIHVzZXIgYW5kIGlnbm9yZXMgKi9cbiAgUkVNT1ZFRCA9ICdyZW1vdmVkJyxcbn1cblxuLyoqXG4gKiBEZWZpbml0aW9uIG9mIGFuIHVuc3RhYmxlIGZlYXR1cmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVbnN0YWJsZUZlYXR1cmUge1xuICAvKiogQ3VycmVudCBzdGF0dXMgb2YgdGhlIGZlYXR1cmUgKi9cbiAgcmVhZG9ubHkgc3RhdHVzOiBGZWF0dXJlU3RhdHVzO1xuICAvKiogV2FybmluZyBtZXNzYWdlIHRvIGRpc3BsYXkgd2hlbiByZXF1ZXN0ZWQgZmVhdHVyZSBpcyBkZXByZWNhdGVkICovXG4gIHJlYWRvbmx5IGRlcHJlY2F0aW9uTWVzc2FnZTogc3RyaW5nO1xuICAvKiogTWVzc2FnZSB0byBkaXNwbGF5IGZvciByZXF1ZXN0ZWQgZmVhdHVyZXMgdGhhdCBhcmUgcmVtb3ZlZCAqL1xuICByZWFkb25seSByZW1vdmFsTWVzc2FnZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlZ2lzdHJ5IG9mIGFsbCB1bnN0YWJsZSBmZWF0dXJlc1xuICovXG5leHBvcnQgY29uc3QgVU5TVEFCTEVfRkVBVFVSRVM6IFJlY29yZDxzdHJpbmcsIFVuc3RhYmxlRmVhdHVyZT4gPSB7XG4gICdkZXByZWNhdGVkLWNsaS1lbmdpbmUnOiB7XG4gICAgc3RhdHVzOiBGZWF0dXJlU3RhdHVzLlJFTU9WRUQsXG4gICAgZGVwcmVjYXRpb25NZXNzYWdlOiAnWW91IGhhdmUgb3B0ZWQtaW4gdG8gdXNlIHRoZSBkZXByZWNhdGVkIENMSSBlbmdpbmUgd2hpY2ggaXMgc2NoZWR1bGVkIHRvIGJlIHJlbW92ZWQgaW4gSmFudWFyeSAyMDI2LiBJZiB5b3UgaGF2ZSBlbmNvdW50ZXJlZCBibG9ja2VycyB3aGlsZSB1c2luZyB0aGUgbmV3IGRlZmF1bHQgZW5naW5lLCBwbGVhc2UgbGV0IHVzIGtub3cgYnkgb3BlbmluZyBhbiBpc3N1ZTogaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrLWNsaS9pc3N1ZXMvbmV3L2Nob29zZVxcblxcblRvIHVzZSB0aGUgbmV3IGRlZmF1bHQgZW5naW5lLCByZW1vdmUgdGhlIGAtLXVuc3RhYmxlPWRlcHJlY2F0ZWQtY2xpLWVuZ2luZWAgb3B0aW9uLicsXG4gICAgcmVtb3ZhbE1lc3NhZ2U6ICdUaGUgQ0xJIGVuZ2luZSBoYXMgYmVlbiByZW1vdmVkLiBUaGUgdG9vbGtpdC1saWIgZW5naW5lIGlzIG5vdyB0aGUgb25seSBzdXBwb3J0ZWQgZW5naW5lLiBQbGVhc2UgcmVtb3ZlIHRoaXMgZmxhZy4nLFxuICB9LFxuICAndG9vbGtpdC1saWItZW5naW5lJzoge1xuICAgIHN0YXR1czogRmVhdHVyZVN0YXR1cy5SRU1PVkVELFxuICAgIGRlcHJlY2F0aW9uTWVzc2FnZTogJ1RoZSB0b29sa2l0LWxpYiBlbmdpbmUgaXMgbm93IHRoZSBkZWZhdWx0IGVuZ2luZS4gVGhpcyBmbGFnIGNhbiBiZSBzYWZlbHkgcmVtb3ZlZC4gWW91IG1heSBjaG9vc2UgdG8gdGVtcG9yYXJpbHkgcmV2ZXJ0IHRvIHRoZSBvbGQgZW5naW5lIGJ5IGFkZGluZyB0aGUgYC0tdW5zdGFibGU9ZGVwcmVjYXRlZC1jbGktZW5naW5lYCBvcHRpb24uJyxcbiAgICByZW1vdmFsTWVzc2FnZTogJ1RoZSB0b29sa2l0LWxpYiBlbmdpbmUgaXMgbm93IHRoZSBkZWZhdWx0IGFuZCBvbmx5IGVuZ2luZS4gVGhpcyBmbGFnIGNhbiBiZSBzYWZlbHkgcmVtb3ZlZC4nLFxuICB9LFxufTtcblxuLyoqXG4gKiBQcm9jZXNzIHVuc3RhYmxlIGZlYXR1cmUgZmxhZ3MgYW5kIGVtaXQgYXBwcm9wcmlhdGUgd2FybmluZ3NcbiAqXG4gKiBAcGFyYW0gdW5zdGFibGVGZWF0dXJlcyAtIEFycmF5IG9mIGZlYXR1cmUgbmFtZXMgZnJvbSBDTEkgLS11bnN0YWJsZSBvcHRpb25cbiAqIEByZXR1cm5zIEFycmF5IG9mIHZhbGlkLCBlbmFibGVkIGZlYXR1cmUgbmFtZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb2Nlc3NVbnN0YWJsZUZlYXR1cmVzKHVuc3RhYmxlRmVhdHVyZXM6IHN0cmluZ1tdID0gW10pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHZhbGlkRmVhdHVyZXM6IHN0cmluZ1tdID0gW107XG5cbiAgZm9yIChjb25zdCBmZWF0dXJlTmFtZSBvZiB1bnN0YWJsZUZlYXR1cmVzKSB7XG4gICAgY29uc3QgZmVhdHVyZSA9IFVOU1RBQkxFX0ZFQVRVUkVTW2ZlYXR1cmVOYW1lXTtcblxuICAgIGlmICghZmVhdHVyZSkge1xuICAgICAgLy8gVW5rbm93biBmZWF0dXJlIC0gd2FybiBhbmQgaWdub3JlXG4gICAgICBsb2dnZXIud2FybmluZyhgVW5rbm93biB1bnN0YWJsZSBmZWF0dXJlOiAnJHtmZWF0dXJlTmFtZX0nLiBUaGlzIG9wdGlvbiB3aWxsIGJlIGlnbm9yZWQuYCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGZlYXR1cmUuc3RhdHVzKSB7XG4gICAgICBjYXNlIEZlYXR1cmVTdGF0dXMuUkVNT1ZFRDpcbiAgICAgICAgLy8gUmVtb3ZlZCBmZWF0dXJlIC0gd2FybiB3aXRoIHJlbW92YWwgbWVzc2FnZSBhbmQgaWdub3JlXG4gICAgICAgIGxvZ2dlci53YXJuaW5nKGBbUmVtb3ZlZF0gJHtmZWF0dXJlLmRlcHJlY2F0aW9uTWVzc2FnZX1gKTtcbiAgICAgICAgaWYgKGZlYXR1cmUucmVtb3ZhbE1lc3NhZ2UpIHtcbiAgICAgICAgICBsb2dnZXIud2FybmluZyhmZWF0dXJlLnJlbW92YWxNZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBGZWF0dXJlU3RhdHVzLkRFUFJFQ0FURUQ6XG4gICAgICAgIC8vIERlcHJlY2F0ZWQgZmVhdHVyZSAtIHdhcm4gYnV0IHN0aWxsIGFwcGx5XG4gICAgICAgIGxvZ2dlci53YXJuaW5nKGBbRGVwcmVjYXRlZF0gJHtmZWF0dXJlLmRlcHJlY2F0aW9uTWVzc2FnZX1gKTtcbiAgICAgICAgdmFsaWRGZWF0dXJlcy5wdXNoKGZlYXR1cmVOYW1lKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgRmVhdHVyZVN0YXR1cy5TVVBQT1JURUQ6XG4gICAgICAgIC8vIFN1cHBvcnRlZCBmZWF0dXJlIC0gYXBwbHkgd2l0aG91dCB3YXJuaW5nXG4gICAgICAgIHZhbGlkRmVhdHVyZXMucHVzaChmZWF0dXJlTmFtZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB2YWxpZEZlYXR1cmVzO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBkZXNjcmlwdGlvbiBvZiBhdmFpbGFibGUgdW5zdGFibGUgZmVhdHVyZXMgZm9yIENMSSBoZWxwIHRleHRcbiAqXG4gKiBAcmV0dXJucyBBIHN0cmluZyBkZXNjcmliaW5nIGF2YWlsYWJsZSBmZWF0dXJlcyBvciBpbmRpY2F0aW5nIG5vbmUgYXJlIGF2YWlsYWJsZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXZhaWxhYmxlRmVhdHVyZXNEZXNjcmlwdGlvbigpOiBzdHJpbmcge1xuICBjb25zdCBhdmFpbGFibGVGZWF0dXJlcyA9IE9iamVjdC5lbnRyaWVzKFVOU1RBQkxFX0ZFQVRVUkVTKVxuICAgIC5maWx0ZXIoKFtfLCBmZWF0dXJlXSkgPT4gZmVhdHVyZS5zdGF0dXMgPT09IEZlYXR1cmVTdGF0dXMuU1VQUE9SVEVEKVxuICAgIC5tYXAoKFtuYW1lXSkgPT4gbmFtZSk7XG5cbiAgaWYgKGF2YWlsYWJsZUZlYXR1cmVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnQ3VycmVudGx5IG5vIHVuc3RhYmxlIGZlYXR1cmVzIGFyZSBhdmFpbGFibGUuJztcbiAgfVxuXG4gIHJldHVybiBgQXZhaWxhYmxlIGZlYXR1cmVzOiAke2F2YWlsYWJsZUZlYXR1cmVzLmpvaW4oJywgJyl9LmA7XG59XG4iXX0=
|
package/lib/workers/common.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { ResourceImpact } from '@aws-cdk/cloudformation-diff';
|
|
2
|
-
import type { EngineOptions } from '../runner/engine';
|
|
3
2
|
import type { IntegTestInfo } from '../runner/integration-tests';
|
|
4
3
|
/**
|
|
5
4
|
* The aggregate results from running assertions on a test case
|
|
@@ -78,7 +77,7 @@ export interface IntegRunnerMetrics {
|
|
|
78
77
|
*/
|
|
79
78
|
readonly profile?: string;
|
|
80
79
|
}
|
|
81
|
-
export interface SnapshotVerificationOptions
|
|
80
|
+
export interface SnapshotVerificationOptions {
|
|
82
81
|
/**
|
|
83
82
|
* Retain failed snapshot comparisons
|
|
84
83
|
*
|
|
@@ -109,7 +108,7 @@ export interface IntegBatchResponse {
|
|
|
109
108
|
/**
|
|
110
109
|
* Common options for running integration tests
|
|
111
110
|
*/
|
|
112
|
-
export interface IntegTestOptions
|
|
111
|
+
export interface IntegTestOptions {
|
|
113
112
|
/**
|
|
114
113
|
* A list of integration tests to run
|
|
115
114
|
* in this batch
|
package/lib/workers/common.js
CHANGED
|
@@ -127,4 +127,4 @@ function formatError(error) {
|
|
|
127
127
|
}
|
|
128
128
|
return `${name}: ${message}`;
|
|
129
129
|
}
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTBRQSxvQ0FNQztBQU1ELHdEQUlDO0FBS0Qsb0NBK0JDO0FBU0Qsc0NBUUM7QUFFRCxrQ0FTQztBQTFWRCwrQkFBOEI7QUFFOUIsK0JBQStCO0FBQy9CLG9DQUFvQztBQTBLcEM7O0dBRUc7QUFDSCxJQUFZLGdCQStDWDtBQS9DRCxXQUFZLGdCQUFnQjtJQUMxQjs7O09BR0c7SUFDSCwrQ0FBMkIsQ0FBQTtJQUUzQjs7T0FFRztJQUNILCtDQUEyQixDQUFBO0lBRTNCOztPQUVHO0lBQ0gsNkNBQXlCLENBQUE7SUFFekI7O09BRUc7SUFDSCxpREFBNkIsQ0FBQTtJQUU3Qjs7O09BR0c7SUFDSCx1REFBbUMsQ0FBQTtJQUVuQzs7T0FFRztJQUNILHFEQUFpQyxDQUFBO0lBRWpDOztPQUVHO0lBQ0gseURBQXFDLENBQUE7SUFFckM7O09BRUc7SUFDSCxpREFBNkIsQ0FBQTtJQUU3Qjs7T0FFRztJQUNILHlEQUFxQyxDQUFBO0FBQ3ZDLENBQUMsRUEvQ1csZ0JBQWdCLGdDQUFoQixnQkFBZ0IsUUErQzNCO0FBMkNELFNBQWdCLFlBQVksQ0FBQyxLQUFhLEVBQUUsTUFBYztJQUN4RCxJQUFJLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNmLE1BQU0sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDN0csQ0FBQztTQUFNLENBQUM7UUFDTixNQUFNLENBQUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hILENBQUM7QUFDSCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0Isc0JBQXNCLENBQUMsT0FBeUI7SUFDOUQsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztTQUMzQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBQSxhQUFNLEVBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDdEgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3RCLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLFlBQVksQ0FBQyxVQUFzQjtJQUNqRCxRQUFRLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMxQixLQUFLLGdCQUFnQixDQUFDLGdCQUFnQjtZQUNwQyxNQUFNLENBQUMsT0FBTyxDQUFDLG9CQUFvQixFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDakcsTUFBTTtRQUNSLEtBQUssZ0JBQWdCLENBQUMsWUFBWTtZQUNoQyxNQUFNLENBQUMsT0FBTyxDQUFDLDRCQUE0QixFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDekcsTUFBTTtRQUNSLEtBQUssZ0JBQWdCLENBQUMsV0FBVztZQUMvQixNQUFNLENBQUMsS0FBSyxDQUFDLG9CQUFvQixFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDL0YsTUFBTTtRQUNSLEtBQUssZ0JBQWdCLENBQUMsZUFBZTtZQUNuQyxNQUFNLENBQUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkksTUFBTTtRQUNSLEtBQUssZ0JBQWdCLENBQUMsWUFBWTtZQUNoQyxNQUFNLENBQUMsT0FBTyxDQUFDLHdCQUF3QixFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekksTUFBTTtRQUNSLEtBQUssZ0JBQWdCLENBQUMsY0FBYyxDQUFDO1FBQ3JDLEtBQUssZ0JBQWdCLENBQUMsVUFBVTtZQUM5QixNQUFNLENBQUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkksTUFBTTtRQUNSLEtBQUssZ0JBQWdCLENBQUMsV0FBVztZQUMvQixNQUFNLENBQUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkksTUFBTTtRQUNSLEtBQUssZ0JBQWdCLENBQUMsZ0JBQWdCO1lBQ3BDLE1BQU0sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsVUFBVSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUUsV0FBVyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2SSxNQUFNO0lBQ1YsQ0FBQztJQUNELEtBQUssTUFBTSxJQUFJLElBQUksVUFBVSxDQUFDLGtCQUFrQixJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ3ZELE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLFdBQVcsQ0FBQyxPQUFlLEVBQUUsS0FBSyxHQUFHLENBQUM7SUFDN0MsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlFLENBQUM7QUFFRCxTQUFnQixhQUFhLENBQUMsU0FBc0I7SUFDbEQsTUFBTSxLQUFLLEdBQUc7UUFDWixJQUFJO1FBQ0osZUFBZSxTQUFTLENBQUMsSUFBSSxPQUFPO1FBQ3BDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7S0FDakYsQ0FBQztJQUVGLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzRCxDQUFDO0FBRUQsU0FBZ0IsV0FBVyxDQUFDLEtBQVU7SUFDcEMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUM7SUFDbkMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFL0MsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDaEIsT0FBTyxHQUFHLElBQUksS0FBSyxPQUFPLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDcEYsQ0FBQztJQUVELE9BQU8sR0FBRyxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7QUFDL0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvcm1hdCB9IGZyb20gJ3V0aWwnO1xuaW1wb3J0IHR5cGUgeyBSZXNvdXJjZUltcGFjdCB9IGZyb20gJ0Bhd3MtY2RrL2Nsb3VkZm9ybWF0aW9uLWRpZmYnO1xuaW1wb3J0ICogYXMgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgdHlwZSB7IEVuZ2luZU9wdGlvbnMgfSBmcm9tICcuLi9ydW5uZXIvZW5naW5lJztcbmltcG9ydCB0eXBlIHsgSW50ZWdUZXN0SW5mbyB9IGZyb20gJy4uL3J1bm5lci9pbnRlZ3JhdGlvbi10ZXN0cyc7XG5cbi8qKlxuICogVGhlIGFnZ3JlZ2F0ZSByZXN1bHRzIGZyb20gcnVubmluZyBhc3NlcnRpb25zIG9uIGEgdGVzdCBjYXNlXG4gKi9cbmV4cG9ydCB0eXBlIEFzc2VydGlvblJlc3VsdHMgPSB7IFtpZDogc3RyaW5nXTogQXNzZXJ0aW9uUmVzdWx0IH07XG5cbi8qKlxuICogVGhlIHJlc3VsdCBvZiBhbiBpbmRpdmlkdWFsIGFzc2VydGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFzc2VydGlvblJlc3VsdCB7XG4gIC8qKlxuICAgKiBUaGUgYXNzZXJ0aW9uIG1lc3NhZ2UuIElmIHRoZSBhc3NlcnRpb24gZmFpbGVkLCB0aGlzIHdpbGxcbiAgICogaW5jbHVkZSB0aGUgcmVhc29uLlxuICAgKi9cbiAgcmVhZG9ubHkgbWVzc2FnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBhc3NlcnRpb24gc3VjY2VlZGVkIG9yIGZhaWxlZFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdHVzOiAnc3VjY2VzcycgfCAnZmFpbCc7XG59XG5cbi8qKlxuICogQ29uZmlnIGZvciBhbiBpbnRlZ3JhdGlvbiB0ZXN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZWdUZXN0V29ya2VyQ29uZmlnIGV4dGVuZHMgSW50ZWdUZXN0SW5mbyB7XG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgYW55IGRlc3RydWN0aXZlIGNoYW5nZXNcbiAgICpcbiAgICogQGRlZmF1bHQgW11cbiAgICovXG4gIHJlYWRvbmx5IGRlc3RydWN0aXZlQ2hhbmdlcz86IERlc3RydWN0aXZlQ2hhbmdlW107XG59XG5cbi8qKlxuICogSW5mb3JtYXRpb24gb24gYW55IGRlc3RydWN0aXZlIGNoYW5nZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXN0cnVjdGl2ZUNoYW5nZSB7XG4gIC8qKlxuICAgKiBUaGUgbG9naWNhbElkIG9mIHRoZSByZXNvdXJjZSB3aXRoIGEgZGVzdHJ1Y3RpdmUgY2hhbmdlXG4gICAqL1xuICByZWFkb25seSBsb2dpY2FsSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHN0YWNrIHRoYXQgY29udGFpbnMgdGhlIGRlc3RydWN0aXZlIGNoYW5nZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpbXBhY3Qgb2YgdGhlIGRlc3RydWN0aXZlIGNoYW5nZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1wYWN0OiBSZXNvdXJjZUltcGFjdDtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGludGVncmF0aW9uIHRlc3RzIG1ldHJpY3MgZm9yIGEgZ2l2ZW4gd29ya2VyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZWdSdW5uZXJNZXRyaWNzIHtcbiAgLyoqXG4gICAqIFRoZSByZWdpb24gdGhlIHRlc3Qgd2FzIHJ1biBpblxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0b3RhbCBkdXJhdGlvbiBvZiB0aGUgd29ya2VyLlxuICAgKiBUaGlzIHdpbGwgYmUgdGhlIHN1bSBvZiBhbGwgaW5kaXZpZHVhbCB0ZXN0IGR1cmF0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgZHVyYXRpb246IG51bWJlcjtcblxuICAvKipcbiAgICogQ29udGFpbnMgdGhlIGR1cmF0aW9uIG9mIGluZGl2aWR1YWwgdGVzdHMgdGhhdCB0aGVcbiAgICogd29ya2VyIGV4ZWN1dGVkLlxuICAgKlxuICAgKiBNYXAgb2YgdGVzdE5hbWUgdG8gZHVyYXRpb24uXG4gICAqL1xuICByZWFkb25seSB0ZXN0czogeyBbdGVzdE5hbWU6IHN0cmluZ106IG51bWJlciB9O1xuXG4gIC8qKlxuICAgKiBUaGUgcHJvZmlsZSB0aGF0IHdhcyB1c2VkIHRvIHJ1biB0aGUgdGVzdFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgcHJvZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZmlsZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTbmFwc2hvdFZlcmlmaWNhdGlvbk9wdGlvbnMgZXh0ZW5kcyBFbmdpbmVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFJldGFpbiBmYWlsZWQgc25hcHNob3QgY29tcGFyaXNvbnNcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHJldGFpbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFZlcmJvc2UgbW9kZVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgdmVyYm9zZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogSW50ZWdyYXRpb24gdGVzdCByZXN1bHRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZWdCYXRjaFJlc3BvbnNlIHtcbiAgLyoqXG4gICAqIExpc3Qgb2YgZmFpbGVkIHRlc3RzXG4gICAqL1xuICByZWFkb25seSBmYWlsZWRUZXN0czogSW50ZWdUZXN0SW5mb1tdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIEludGVncmF0aW9uIHRlc3QgbWV0cmljcy4gRWFjaCBlbnRyeSBpbiB0aGVcbiAgICogbGlzdCByZXByZXNlbnRzIG1ldHJpY3MgZnJvbSBhIHNpbmdsZSB3b3JrZXIgKGFjY291bnQgKyByZWdpb24pLlxuICAgKi9cbiAgcmVhZG9ubHkgbWV0cmljczogSW50ZWdSdW5uZXJNZXRyaWNzW107XG59XG5cbi8qKlxuICogQ29tbW9uIG9wdGlvbnMgZm9yIHJ1bm5pbmcgaW50ZWdyYXRpb24gdGVzdHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlZ1Rlc3RPcHRpb25zIGV4dGVuZHMgRW5naW5lT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgaW50ZWdyYXRpb24gdGVzdHMgdG8gcnVuXG4gICAqIGluIHRoaXMgYmF0Y2hcbiAgICovXG4gIHJlYWRvbmx5IHRlc3RzOiBJbnRlZ1Rlc3RXb3JrZXJDb25maWdbXTtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gZGVzdHJveSB0aGUgc3RhY2tzIGF0IHRoZVxuICAgKiBlbmQgb2YgdGhlIHRlc3RcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgY2xlYW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRoaXMgaXMgc2V0IHRvIGB0cnVlYCB0aGUgc25hcHNob3Qgd2lsbFxuICAgKiBiZSBjcmVhdGVkIF93aXRob3V0XyBydW5uaW5nIHRoZSBpbnRlZ3JhdGlvbiB0ZXN0XG4gICAqIFRoZSByZXN1bHRpbmcgc25hcHNob3QgU0hPVUxEIE5PVCBiZSBjaGVja2VkIGluXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBkcnlSdW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbGV2ZWwgb2YgdmVyYm9zaXR5IGZvciBsb2dnaW5nLlxuICAgKiBIaWdoZXIgbnVtYmVyIG1lYW5zIG1vcmUgb3V0cHV0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICByZWFkb25seSB2ZXJib3NpdHk/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIElmIHRoaXMgaXMgc2V0IHRvIHRydWUgdGhlbiB0aGUgc3RhY2sgdXBkYXRlIHdvcmtmbG93IHdpbGwgYmUgZGlzYWJsZWRcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgdXBkYXRlV29ya2Zsb3c/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiB0cnVlIGlmIHJ1bm5pbmcgaW4gd2F0Y2ggbW9kZVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgd2F0Y2g/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgcG9zc2libGUgcmVhc29ucyBmb3IgYSBkaWFnbm9zdGljXG4gKi9cbmV4cG9ydCBlbnVtIERpYWdub3N0aWNSZWFzb24ge1xuICAvKipcbiAgICogVGhlIGludGVncmF0aW9uIHRlc3QgZmFpbGVkIGJlY2F1c2UgdGhlcmVcbiAgICogaXMgbm90IGV4aXN0aW5nIHNuYXBzaG90XG4gICAqL1xuICBOT19TTkFQU0hPVCA9ICdOT19TTkFQU0hPVCcsXG5cbiAgLyoqXG4gICAqIFRoZSBpbnRlZ3JhdGlvbiB0ZXN0IGZhaWxlZFxuICAgKi9cbiAgVEVTVF9GQUlMRUQgPSAnVEVTVF9GQUlMRUQnLFxuXG4gIC8qKlxuICAgKiBUaGVyZSB3YXMgYW4gZXJyb3IgcnVubmluZyB0aGUgaW50ZWdyYXRpb24gdGVzdFxuICAgKi9cbiAgVEVTVF9FUlJPUiA9ICdURVNUX0VSUk9SJyxcblxuICAvKipcbiAgICogQSBub24tZmFpbGluZyB3YXJuaW5nIGZyb20gdGhlIGludGVncmF0aW9uIHRlc3QgcnVuXG4gICAqL1xuICBURVNUX1dBUk5JTkcgPSAnVEVTVF9XQVJOSU5HJyxcblxuICAvKipcbiAgICogVGhlIHNuYXBzaG90IHRlc3QgZmFpbGVkIGJlY2F1c2UgdGhlIGFjdHVhbFxuICAgKiBzbmFwc2hvdCB3YXMgZGlmZmVyZW50IHRoYW4gdGhlIGV4cGVjdGVkIHNuYXBzaG90XG4gICAqL1xuICBTTkFQU0hPVF9GQUlMRUQgPSAnU05BUFNIT1RfRkFJTEVEJyxcblxuICAvKipcbiAgICogVGhlIHNuYXBzaG90IHRlc3QgZmFpbGVkIGJlY2F1c2UgdGhlcmUgd2FzIGFuIGVycm9yIGV4ZWN1dGluZyBpdFxuICAgKi9cbiAgU05BUFNIT1RfRVJST1IgPSAnU05BUFNIT1RfRVJST1InLFxuXG4gIC8qKlxuICAgKiBUaGUgc25hcHNob3QgdGVzdCBzdWNjZWVkZWRcbiAgICovXG4gIFNOQVBTSE9UX1NVQ0NFU1MgPSAnU05BUFNIT1RfU1VDQ0VTUycsXG5cbiAgLyoqXG4gICAqIFRoZSBpbnRlZ3JhdGlvbiB0ZXN0IHN1Y2NlZWRlZFxuICAgKi9cbiAgVEVTVF9TVUNDRVNTID0gJ1RFU1RfU1VDQ0VTUycsXG5cbiAgLyoqXG4gICAqIFRoZSBhc3NlcnRpb24gZmFpbGVkXG4gICAqL1xuICBBU1NFUlRJT05fRkFJTEVEID0gJ0FTU0VSVElPTl9GQUlMRUQnLFxufVxuXG4vKipcbiAqIEludGVncmF0aW9uIHRlc3QgZGlhZ25vc3RpY3NcbiAqIFRoaXMgaXMgdXNlZCB0byByZXBvcnQgYmFjayB0aGUgc3RhdHVzIG9mIGVhY2ggdGVzdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIERpYWdub3N0aWMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHRlc3RcbiAgICovXG4gIHJlYWRvbmx5IHRlc3ROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkaWFnbm9zdGljIG1lc3NhZ2VcbiAgICovXG4gIHJlYWRvbmx5IG1lc3NhZ2U6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRpbWUgaXQgdG9vayB0byBydW4gdGhlIHRlc3RcbiAgICovXG4gIHJlYWRvbmx5IGR1cmF0aW9uPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVhc29uIGZvciB0aGUgZGlhZ25vc3RpY1xuICAgKi9cbiAgcmVhZG9ubHkgcmVhc29uOiBEaWFnbm9zdGljUmVhc29uO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIG1lc3NhZ2VzIHRvIHByaW50XG4gICAqL1xuICByZWFkb25seSBhZGRpdGlvbmFsTWVzc2FnZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUmVsZXZhbnQgY29uZmlnIG9wdGlvbnMgdGhhdCB3ZXJlIHVzZWQgZm9yIHRoZSBpbnRlZyB0ZXN0XG4gICAqL1xuICByZWFkb25seSBjb25maWc/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJpbnRTdW1tYXJ5KHRvdGFsOiBudW1iZXIsIGZhaWxlZDogbnVtYmVyKTogdm9pZCB7XG4gIGlmIChmYWlsZWQgPiAwKSB7XG4gICAgbG9nZ2VyLnByaW50KCclczogICAgJXMgJXMsICVzIHRvdGFsJywgY2hhbGsuYm9sZCgnVGVzdHMnKSwgY2hhbGsucmVkKGZhaWxlZCksIGNoYWxrLnJlZCgnZmFpbGVkJyksIHRvdGFsKTtcbiAgfSBlbHNlIHtcbiAgICBsb2dnZXIucHJpbnQoJyVzOiAgICAlcyAlcywgJXMgdG90YWwnLCBjaGFsay5ib2xkKCdUZXN0cycpLCBjaGFsay5ncmVlbih0b3RhbCksIGNoYWxrLmdyZWVuKCdwYXNzZWQnKSwgdG90YWwpO1xuICB9XG59XG5cbi8qKlxuICogRm9ybWF0IHRoZSBhc3NlcnRpb24gcmVzdWx0cyBzbyB0aGF0IHRoZSByZXN1bHRzIGNhbiBiZVxuICogcHJpbnRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0QXNzZXJ0aW9uUmVzdWx0cyhyZXN1bHRzOiBBc3NlcnRpb25SZXN1bHRzKTogc3RyaW5nIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdHMpXG4gICAgLm1hcCgoW2lkLCByZXN1bHRdKSA9PiBmb3JtYXQoJyVzJXMnLCBpZCwgcmVzdWx0LnN0YXR1cyA9PT0gJ3N1Y2Nlc3MnID8gYCAtICR7cmVzdWx0LnN0YXR1c31gIDogYFxcbiR7cmVzdWx0Lm1lc3NhZ2V9YCkpXG4gICAgLmpvaW4oJ1xcbiAgICAgICcpO1xufVxuXG4vKipcbiAqIFByaW50IG91dCB0aGUgcmVzdWx0cyBmcm9tIHRlc3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmludFJlc3VsdHMoZGlhZ25vc3RpYzogRGlhZ25vc3RpYyk6IHZvaWQge1xuICBzd2l0Y2ggKGRpYWdub3N0aWMucmVhc29uKSB7XG4gICAgY2FzZSBEaWFnbm9zdGljUmVhc29uLlNOQVBTSE9UX1NVQ0NFU1M6XG4gICAgICBsb2dnZXIuc3VjY2VzcygnICBVTkNIQU5HRUQgICVzICVzJywgZGlhZ25vc3RpYy50ZXN0TmFtZSwgY2hhbGsuZ3JheShgJHtkaWFnbm9zdGljLmR1cmF0aW9ufXNgKSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIERpYWdub3N0aWNSZWFzb24uVEVTVF9TVUNDRVNTOlxuICAgICAgbG9nZ2VyLnN1Y2Nlc3MoJyAgU1VDQ0VTUyAgICAlcyAlc1xcbiAgICAgICcsIGRpYWdub3N0aWMudGVzdE5hbWUsIGNoYWxrLmdyYXkoYCR7ZGlhZ25vc3RpYy5kdXJhdGlvbn1zYCkpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBEaWFnbm9zdGljUmVhc29uLk5PX1NOQVBTSE9UOlxuICAgICAgbG9nZ2VyLmVycm9yKCcgIE5FVyAgICAgICAgJXMgJXMnLCBkaWFnbm9zdGljLnRlc3ROYW1lLCBjaGFsay5ncmF5KGAke2RpYWdub3N0aWMuZHVyYXRpb259c2ApKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRGlhZ25vc3RpY1JlYXNvbi5TTkFQU0hPVF9GQUlMRUQ6XG4gICAgICBsb2dnZXIuZXJyb3IoJyAgQ0hBTkdFRCAgICAlcyAlc1xcbiVzJywgZGlhZ25vc3RpYy50ZXN0TmFtZSwgY2hhbGsuZ3JheShgJHtkaWFnbm9zdGljLmR1cmF0aW9ufXNgKSwgaW5kZW50TGluZXMoZGlhZ25vc3RpYy5tZXNzYWdlLCA2KSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIERpYWdub3N0aWNSZWFzb24uVEVTVF9XQVJOSU5HOlxuICAgICAgbG9nZ2VyLndhcm5pbmcoJyAgV0FSTiAgICAgICAlcyAlc1xcbiVzJywgZGlhZ25vc3RpYy50ZXN0TmFtZSwgY2hhbGsuZ3JheShgJHtkaWFnbm9zdGljLmR1cmF0aW9ufXNgKSwgaW5kZW50TGluZXMoZGlhZ25vc3RpYy5tZXNzYWdlLCA2KSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIERpYWdub3N0aWNSZWFzb24uU05BUFNIT1RfRVJST1I6XG4gICAgY2FzZSBEaWFnbm9zdGljUmVhc29uLlRFU1RfRVJST1I6XG4gICAgICBsb2dnZXIuZXJyb3IoJyAgRVJST1IgICAgICAlcyAlc1xcbiVzJywgZGlhZ25vc3RpYy50ZXN0TmFtZSwgY2hhbGsuZ3JheShgJHtkaWFnbm9zdGljLmR1cmF0aW9ufXNgKSwgaW5kZW50TGluZXMoZGlhZ25vc3RpYy5tZXNzYWdlLCA2KSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIERpYWdub3N0aWNSZWFzb24uVEVTVF9GQUlMRUQ6XG4gICAgICBsb2dnZXIuZXJyb3IoJyAgRkFJTEVEICAgICAlcyAlc1xcbiVzJywgZGlhZ25vc3RpYy50ZXN0TmFtZSwgY2hhbGsuZ3JheShgJHtkaWFnbm9zdGljLmR1cmF0aW9ufXNgKSwgaW5kZW50TGluZXMoZGlhZ25vc3RpYy5tZXNzYWdlLCA2KSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIERpYWdub3N0aWNSZWFzb24uQVNTRVJUSU9OX0ZBSUxFRDpcbiAgICAgIGxvZ2dlci5lcnJvcignICBBU1NFUlQgICAgICVzICVzXFxuJXMnLCBkaWFnbm9zdGljLnRlc3ROYW1lLCBjaGFsay5ncmF5KGAke2RpYWdub3N0aWMuZHVyYXRpb259c2ApLCBpbmRlbnRMaW5lcyhkaWFnbm9zdGljLm1lc3NhZ2UsIDYpKTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIGZvciAoY29uc3QgYWRkbCBvZiBkaWFnbm9zdGljLmFkZGl0aW9uYWxNZXNzYWdlcyA/PyBbXSkge1xuICAgIGxvZ2dlci5wcmludChgICAgICAgJHthZGRsfWApO1xuICB9XG59XG5cbi8qKlxuICogVGFrZXMgYSBtdWx0aWxpbmUgc3RyaW5nIGFuZCBpbmRlbnRzIGV2ZXJ5IGxpbmUgd2l0aCB0aGUgc2FtZSBudW1iZXIgb2Ygc3BhY2VzLlxuICovXG5mdW5jdGlvbiBpbmRlbnRMaW5lcyhtZXNzYWdlOiBzdHJpbmcsIGNvdW50ID0gMik6IHN0cmluZyB7XG4gIHJldHVybiBtZXNzYWdlLnNwbGl0KCdcXG4nKS5tYXAobGluZSA9PiAnICcucmVwZWF0KGNvdW50KSArIGxpbmUpLmpvaW4oJ1xcbicpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJpbnRMYWdnYXJkcyh0ZXN0TmFtZXM6IFNldDxzdHJpbmc+KSB7XG4gIGNvbnN0IHBhcnRzID0gW1xuICAgICcgICcsXG4gICAgYFdhaXRpbmcgZm9yICR7dGVzdE5hbWVzLnNpemV9IG1vcmVgLFxuICAgIHRlc3ROYW1lcy5zaXplIDwgMTAgPyBbJygnLCBBcnJheS5mcm9tKHRlc3ROYW1lcykuam9pbignLCAnKSwgJyknXS5qb2luKCcnKSA6ICcnLFxuICBdO1xuXG4gIGxvZ2dlci5wcmludChjaGFsay5ncmV5KHBhcnRzLmZpbHRlcih4ID0+IHgpLmpvaW4oJyAnKSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RXJyb3IoZXJyb3I6IGFueSk6IHN0cmluZyB7XG4gIGNvbnN0IG5hbWUgPSBlcnJvci5uYW1lIHx8ICdFcnJvcic7XG4gIGNvbnN0IG1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlIHx8IFN0cmluZyhlcnJvcik7XG5cbiAgaWYgKGVycm9yLmNhdXNlKSB7XG4gICAgcmV0dXJuIGAke25hbWV9OiAke21lc3NhZ2V9XFxuJHtjaGFsay5ncmF5KCdDYXVzZTogJyArIGZvcm1hdEVycm9yKGVycm9yLmNhdXNlKSl9YDtcbiAgfVxuXG4gIHJldHVybiBgJHtuYW1lfTogJHttZXNzYWdlfWA7XG59XG4iXX0=
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXlRQSxvQ0FNQztBQU1ELHdEQUlDO0FBS0Qsb0NBK0JDO0FBU0Qsc0NBUUM7QUFFRCxrQ0FTQztBQXpWRCwrQkFBOEI7QUFFOUIsK0JBQStCO0FBQy9CLG9DQUFvQztBQXlLcEM7O0dBRUc7QUFDSCxJQUFZLGdCQStDWDtBQS9DRCxXQUFZLGdCQUFnQjtJQUMxQjs7O09BR0c7SUFDSCwrQ0FBMkIsQ0FBQTtJQUUzQjs7T0FFRztJQUNILCtDQUEyQixDQUFBO0lBRTNCOztPQUVHO0lBQ0gsNkNBQXlCLENBQUE7SUFFekI7O09BRUc7SUFDSCxpREFBNkIsQ0FBQTtJQUU3Qjs7O09BR0c7SUFDSCx1REFBbUMsQ0FBQTtJQUVuQzs7T0FFRztJQUNILHFEQUFpQyxDQUFBO0lBRWpDOztPQUVHO0lBQ0gseURBQXFDLENBQUE7SUFFckM7O09BRUc7SUFDSCxpREFBNkIsQ0FBQTtJQUU3Qjs7T0FFRztJQUNILHlEQUFxQyxDQUFBO0FBQ3ZDLENBQUMsRUEvQ1csZ0JBQWdCLGdDQUFoQixnQkFBZ0IsUUErQzNCO0FBMkNELFNBQWdCLFlBQVksQ0FBQyxLQUFhLEVBQUUsTUFBYztJQUN4RCxJQUFJLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNmLE1BQU0sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDN0csQ0FBQztTQUFNLENBQUM7UUFDTixNQUFNLENBQUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hILENBQUM7QUFDSCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0Isc0JBQXNCLENBQUMsT0FBeUI7SUFDOUQsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztTQUMzQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBQSxhQUFNLEVBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDdEgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3RCLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLFlBQVksQ0FBQyxVQUFzQjtJQUNqRCxRQUFRLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMxQixLQUFLLGdCQUFnQixDQUFDLGdCQUFnQjtZQUNwQyxNQUFNLENBQUMsT0FBTyxDQUFDLG9CQUFvQixFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDakcsTUFBTTtRQUNSLEtBQUssZ0JBQWdCLENBQUMsWUFBWTtZQUNoQyxNQUFNLENBQUMsT0FBTyxDQUFDLDRCQUE0QixFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDekcsTUFBTTtRQUNSLEtBQUssZ0JBQWdCLENBQUMsV0FBVztZQUMvQixNQUFNLENBQUMsS0FBSyxDQUFDLG9CQUFvQixFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDL0YsTUFBTTtRQUNSLEtBQUssZ0JBQWdCLENBQUMsZUFBZTtZQUNuQyxNQUFNLENBQUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkksTUFBTTtRQUNSLEtBQUssZ0JBQWdCLENBQUMsWUFBWTtZQUNoQyxNQUFNLENBQUMsT0FBTyxDQUFDLHdCQUF3QixFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekksTUFBTTtRQUNSLEtBQUssZ0JBQWdCLENBQUMsY0FBYyxDQUFDO1FBQ3JDLEtBQUssZ0JBQWdCLENBQUMsVUFBVTtZQUM5QixNQUFNLENBQUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkksTUFBTTtRQUNSLEtBQUssZ0JBQWdCLENBQUMsV0FBVztZQUMvQixNQUFNLENBQUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkksTUFBTTtRQUNSLEtBQUssZ0JBQWdCLENBQUMsZ0JBQWdCO1lBQ3BDLE1BQU0sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsVUFBVSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUUsV0FBVyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2SSxNQUFNO0lBQ1YsQ0FBQztJQUNELEtBQUssTUFBTSxJQUFJLElBQUksVUFBVSxDQUFDLGtCQUFrQixJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ3ZELE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLFdBQVcsQ0FBQyxPQUFlLEVBQUUsS0FBSyxHQUFHLENBQUM7SUFDN0MsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlFLENBQUM7QUFFRCxTQUFnQixhQUFhLENBQUMsU0FBc0I7SUFDbEQsTUFBTSxLQUFLLEdBQUc7UUFDWixJQUFJO1FBQ0osZUFBZSxTQUFTLENBQUMsSUFBSSxPQUFPO1FBQ3BDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7S0FDakYsQ0FBQztJQUVGLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzRCxDQUFDO0FBRUQsU0FBZ0IsV0FBVyxDQUFDLEtBQVU7SUFDcEMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUM7SUFDbkMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFL0MsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDaEIsT0FBTyxHQUFHLElBQUksS0FBSyxPQUFPLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDcEYsQ0FBQztJQUVELE9BQU8sR0FBRyxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7QUFDL0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvcm1hdCB9IGZyb20gJ3V0aWwnO1xuaW1wb3J0IHR5cGUgeyBSZXNvdXJjZUltcGFjdCB9IGZyb20gJ0Bhd3MtY2RrL2Nsb3VkZm9ybWF0aW9uLWRpZmYnO1xuaW1wb3J0ICogYXMgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgdHlwZSB7IEludGVnVGVzdEluZm8gfSBmcm9tICcuLi9ydW5uZXIvaW50ZWdyYXRpb24tdGVzdHMnO1xuXG4vKipcbiAqIFRoZSBhZ2dyZWdhdGUgcmVzdWx0cyBmcm9tIHJ1bm5pbmcgYXNzZXJ0aW9ucyBvbiBhIHRlc3QgY2FzZVxuICovXG5leHBvcnQgdHlwZSBBc3NlcnRpb25SZXN1bHRzID0geyBbaWQ6IHN0cmluZ106IEFzc2VydGlvblJlc3VsdCB9O1xuXG4vKipcbiAqIFRoZSByZXN1bHQgb2YgYW4gaW5kaXZpZHVhbCBhc3NlcnRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NlcnRpb25SZXN1bHQge1xuICAvKipcbiAgICogVGhlIGFzc2VydGlvbiBtZXNzYWdlLiBJZiB0aGUgYXNzZXJ0aW9uIGZhaWxlZCwgdGhpcyB3aWxsXG4gICAqIGluY2x1ZGUgdGhlIHJlYXNvbi5cbiAgICovXG4gIHJlYWRvbmx5IG1lc3NhZ2U6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgYXNzZXJ0aW9uIHN1Y2NlZWRlZCBvciBmYWlsZWRcbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1czogJ3N1Y2Nlc3MnIHwgJ2ZhaWwnO1xufVxuXG4vKipcbiAqIENvbmZpZyBmb3IgYW4gaW50ZWdyYXRpb24gdGVzdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludGVnVGVzdFdvcmtlckNvbmZpZyBleHRlbmRzIEludGVnVGVzdEluZm8ge1xuICAvKipcbiAgICogQSBsaXN0IG9mIGFueSBkZXN0cnVjdGl2ZSBjaGFuZ2VzXG4gICAqXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICByZWFkb25seSBkZXN0cnVjdGl2ZUNoYW5nZXM/OiBEZXN0cnVjdGl2ZUNoYW5nZVtdO1xufVxuXG4vKipcbiAqIEluZm9ybWF0aW9uIG9uIGFueSBkZXN0cnVjdGl2ZSBjaGFuZ2VzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVzdHJ1Y3RpdmVDaGFuZ2Uge1xuICAvKipcbiAgICogVGhlIGxvZ2ljYWxJZCBvZiB0aGUgcmVzb3VyY2Ugd2l0aCBhIGRlc3RydWN0aXZlIGNoYW5nZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9naWNhbElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzdGFjayB0aGF0IGNvbnRhaW5zIHRoZSBkZXN0cnVjdGl2ZSBjaGFuZ2VcbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaW1wYWN0IG9mIHRoZSBkZXN0cnVjdGl2ZSBjaGFuZ2VcbiAgICovXG4gIHJlYWRvbmx5IGltcGFjdDogUmVzb3VyY2VJbXBhY3Q7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBpbnRlZ3JhdGlvbiB0ZXN0cyBtZXRyaWNzIGZvciBhIGdpdmVuIHdvcmtlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludGVnUnVubmVyTWV0cmljcyB7XG4gIC8qKlxuICAgKiBUaGUgcmVnaW9uIHRoZSB0ZXN0IHdhcyBydW4gaW5cbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdG90YWwgZHVyYXRpb24gb2YgdGhlIHdvcmtlci5cbiAgICogVGhpcyB3aWxsIGJlIHRoZSBzdW0gb2YgYWxsIGluZGl2aWR1YWwgdGVzdCBkdXJhdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGR1cmF0aW9uOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENvbnRhaW5zIHRoZSBkdXJhdGlvbiBvZiBpbmRpdmlkdWFsIHRlc3RzIHRoYXQgdGhlXG4gICAqIHdvcmtlciBleGVjdXRlZC5cbiAgICpcbiAgICogTWFwIG9mIHRlc3ROYW1lIHRvIGR1cmF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdHM6IHsgW3Rlc3ROYW1lOiBzdHJpbmddOiBudW1iZXIgfTtcblxuICAvKipcbiAgICogVGhlIHByb2ZpbGUgdGhhdCB3YXMgdXNlZCB0byBydW4gdGhlIHRlc3RcbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IHByb2ZpbGVcbiAgICovXG4gIHJlYWRvbmx5IHByb2ZpbGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU25hcHNob3RWZXJpZmljYXRpb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFJldGFpbiBmYWlsZWQgc25hcHNob3QgY29tcGFyaXNvbnNcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHJldGFpbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFZlcmJvc2UgbW9kZVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgdmVyYm9zZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogSW50ZWdyYXRpb24gdGVzdCByZXN1bHRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZWdCYXRjaFJlc3BvbnNlIHtcbiAgLyoqXG4gICAqIExpc3Qgb2YgZmFpbGVkIHRlc3RzXG4gICAqL1xuICByZWFkb25seSBmYWlsZWRUZXN0czogSW50ZWdUZXN0SW5mb1tdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIEludGVncmF0aW9uIHRlc3QgbWV0cmljcy4gRWFjaCBlbnRyeSBpbiB0aGVcbiAgICogbGlzdCByZXByZXNlbnRzIG1ldHJpY3MgZnJvbSBhIHNpbmdsZSB3b3JrZXIgKGFjY291bnQgKyByZWdpb24pLlxuICAgKi9cbiAgcmVhZG9ubHkgbWV0cmljczogSW50ZWdSdW5uZXJNZXRyaWNzW107XG59XG5cbi8qKlxuICogQ29tbW9uIG9wdGlvbnMgZm9yIHJ1bm5pbmcgaW50ZWdyYXRpb24gdGVzdHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlZ1Rlc3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBpbnRlZ3JhdGlvbiB0ZXN0cyB0byBydW5cbiAgICogaW4gdGhpcyBiYXRjaFxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdHM6IEludGVnVGVzdFdvcmtlckNvbmZpZ1tdO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBkZXN0cm95IHRoZSBzdGFja3MgYXQgdGhlXG4gICAqIGVuZCBvZiB0aGUgdGVzdFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBjbGVhbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gdGhpcyBpcyBzZXQgdG8gYHRydWVgIHRoZSBzbmFwc2hvdCB3aWxsXG4gICAqIGJlIGNyZWF0ZWQgX3dpdGhvdXRfIHJ1bm5pbmcgdGhlIGludGVncmF0aW9uIHRlc3RcbiAgICogVGhlIHJlc3VsdGluZyBzbmFwc2hvdCBTSE9VTEQgTk9UIGJlIGNoZWNrZWQgaW5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGRyeVJ1bj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBsZXZlbCBvZiB2ZXJib3NpdHkgZm9yIGxvZ2dpbmcuXG4gICAqIEhpZ2hlciBudW1iZXIgbWVhbnMgbW9yZSBvdXRwdXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIHJlYWRvbmx5IHZlcmJvc2l0eT86IG51bWJlcjtcblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBzZXQgdG8gdHJ1ZSB0aGVuIHRoZSBzdGFjayB1cGRhdGUgd29ya2Zsb3cgd2lsbCBiZSBkaXNhYmxlZFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSB1cGRhdGVXb3JrZmxvdz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHRydWUgaWYgcnVubmluZyBpbiB3YXRjaCBtb2RlXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB3YXRjaD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBwb3NzaWJsZSByZWFzb25zIGZvciBhIGRpYWdub3N0aWNcbiAqL1xuZXhwb3J0IGVudW0gRGlhZ25vc3RpY1JlYXNvbiB7XG4gIC8qKlxuICAgKiBUaGUgaW50ZWdyYXRpb24gdGVzdCBmYWlsZWQgYmVjYXVzZSB0aGVyZVxuICAgKiBpcyBub3QgZXhpc3Rpbmcgc25hcHNob3RcbiAgICovXG4gIE5PX1NOQVBTSE9UID0gJ05PX1NOQVBTSE9UJyxcblxuICAvKipcbiAgICogVGhlIGludGVncmF0aW9uIHRlc3QgZmFpbGVkXG4gICAqL1xuICBURVNUX0ZBSUxFRCA9ICdURVNUX0ZBSUxFRCcsXG5cbiAgLyoqXG4gICAqIFRoZXJlIHdhcyBhbiBlcnJvciBydW5uaW5nIHRoZSBpbnRlZ3JhdGlvbiB0ZXN0XG4gICAqL1xuICBURVNUX0VSUk9SID0gJ1RFU1RfRVJST1InLFxuXG4gIC8qKlxuICAgKiBBIG5vbi1mYWlsaW5nIHdhcm5pbmcgZnJvbSB0aGUgaW50ZWdyYXRpb24gdGVzdCBydW5cbiAgICovXG4gIFRFU1RfV0FSTklORyA9ICdURVNUX1dBUk5JTkcnLFxuXG4gIC8qKlxuICAgKiBUaGUgc25hcHNob3QgdGVzdCBmYWlsZWQgYmVjYXVzZSB0aGUgYWN0dWFsXG4gICAqIHNuYXBzaG90IHdhcyBkaWZmZXJlbnQgdGhhbiB0aGUgZXhwZWN0ZWQgc25hcHNob3RcbiAgICovXG4gIFNOQVBTSE9UX0ZBSUxFRCA9ICdTTkFQU0hPVF9GQUlMRUQnLFxuXG4gIC8qKlxuICAgKiBUaGUgc25hcHNob3QgdGVzdCBmYWlsZWQgYmVjYXVzZSB0aGVyZSB3YXMgYW4gZXJyb3IgZXhlY3V0aW5nIGl0XG4gICAqL1xuICBTTkFQU0hPVF9FUlJPUiA9ICdTTkFQU0hPVF9FUlJPUicsXG5cbiAgLyoqXG4gICAqIFRoZSBzbmFwc2hvdCB0ZXN0IHN1Y2NlZWRlZFxuICAgKi9cbiAgU05BUFNIT1RfU1VDQ0VTUyA9ICdTTkFQU0hPVF9TVUNDRVNTJyxcblxuICAvKipcbiAgICogVGhlIGludGVncmF0aW9uIHRlc3Qgc3VjY2VlZGVkXG4gICAqL1xuICBURVNUX1NVQ0NFU1MgPSAnVEVTVF9TVUNDRVNTJyxcblxuICAvKipcbiAgICogVGhlIGFzc2VydGlvbiBmYWlsZWRcbiAgICovXG4gIEFTU0VSVElPTl9GQUlMRUQgPSAnQVNTRVJUSU9OX0ZBSUxFRCcsXG59XG5cbi8qKlxuICogSW50ZWdyYXRpb24gdGVzdCBkaWFnbm9zdGljc1xuICogVGhpcyBpcyB1c2VkIHRvIHJlcG9ydCBiYWNrIHRoZSBzdGF0dXMgb2YgZWFjaCB0ZXN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGlhZ25vc3RpYyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdGVzdFxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHN0YWNrXG4gICAqL1xuICByZWFkb25seSBzdGFja05hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRpYWdub3N0aWMgbWVzc2FnZVxuICAgKi9cbiAgcmVhZG9ubHkgbWVzc2FnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGltZSBpdCB0b29rIHRvIHJ1biB0aGUgdGVzdFxuICAgKi9cbiAgcmVhZG9ubHkgZHVyYXRpb24/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSByZWFzb24gZm9yIHRoZSBkaWFnbm9zdGljXG4gICAqL1xuICByZWFkb25seSByZWFzb246IERpYWdub3N0aWNSZWFzb247XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgbWVzc2FnZXMgdG8gcHJpbnRcbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxNZXNzYWdlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBSZWxldmFudCBjb25maWcgb3B0aW9ucyB0aGF0IHdlcmUgdXNlZCBmb3IgdGhlIGludGVnIHRlc3RcbiAgICovXG4gIHJlYWRvbmx5IGNvbmZpZz86IFJlY29yZDxzdHJpbmcsIGFueT47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmludFN1bW1hcnkodG90YWw6IG51bWJlciwgZmFpbGVkOiBudW1iZXIpOiB2b2lkIHtcbiAgaWYgKGZhaWxlZCA+IDApIHtcbiAgICBsb2dnZXIucHJpbnQoJyVzOiAgICAlcyAlcywgJXMgdG90YWwnLCBjaGFsay5ib2xkKCdUZXN0cycpLCBjaGFsay5yZWQoZmFpbGVkKSwgY2hhbGsucmVkKCdmYWlsZWQnKSwgdG90YWwpO1xuICB9IGVsc2Uge1xuICAgIGxvZ2dlci5wcmludCgnJXM6ICAgICVzICVzLCAlcyB0b3RhbCcsIGNoYWxrLmJvbGQoJ1Rlc3RzJyksIGNoYWxrLmdyZWVuKHRvdGFsKSwgY2hhbGsuZ3JlZW4oJ3Bhc3NlZCcpLCB0b3RhbCk7XG4gIH1cbn1cblxuLyoqXG4gKiBGb3JtYXQgdGhlIGFzc2VydGlvbiByZXN1bHRzIHNvIHRoYXQgdGhlIHJlc3VsdHMgY2FuIGJlXG4gKiBwcmludGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRBc3NlcnRpb25SZXN1bHRzKHJlc3VsdHM6IEFzc2VydGlvblJlc3VsdHMpOiBzdHJpbmcge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0cylcbiAgICAubWFwKChbaWQsIHJlc3VsdF0pID0+IGZvcm1hdCgnJXMlcycsIGlkLCByZXN1bHQuc3RhdHVzID09PSAnc3VjY2VzcycgPyBgIC0gJHtyZXN1bHQuc3RhdHVzfWAgOiBgXFxuJHtyZXN1bHQubWVzc2FnZX1gKSlcbiAgICAuam9pbignXFxuICAgICAgJyk7XG59XG5cbi8qKlxuICogUHJpbnQgb3V0IHRoZSByZXN1bHRzIGZyb20gdGVzdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByaW50UmVzdWx0cyhkaWFnbm9zdGljOiBEaWFnbm9zdGljKTogdm9pZCB7XG4gIHN3aXRjaCAoZGlhZ25vc3RpYy5yZWFzb24pIHtcbiAgICBjYXNlIERpYWdub3N0aWNSZWFzb24uU05BUFNIT1RfU1VDQ0VTUzpcbiAgICAgIGxvZ2dlci5zdWNjZXNzKCcgIFVOQ0hBTkdFRCAgJXMgJXMnLCBkaWFnbm9zdGljLnRlc3ROYW1lLCBjaGFsay5ncmF5KGAke2RpYWdub3N0aWMuZHVyYXRpb259c2ApKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRGlhZ25vc3RpY1JlYXNvbi5URVNUX1NVQ0NFU1M6XG4gICAgICBsb2dnZXIuc3VjY2VzcygnICBTVUNDRVNTICAgICVzICVzXFxuICAgICAgJywgZGlhZ25vc3RpYy50ZXN0TmFtZSwgY2hhbGsuZ3JheShgJHtkaWFnbm9zdGljLmR1cmF0aW9ufXNgKSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIERpYWdub3N0aWNSZWFzb24uTk9fU05BUFNIT1Q6XG4gICAgICBsb2dnZXIuZXJyb3IoJyAgTkVXICAgICAgICAlcyAlcycsIGRpYWdub3N0aWMudGVzdE5hbWUsIGNoYWxrLmdyYXkoYCR7ZGlhZ25vc3RpYy5kdXJhdGlvbn1zYCkpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBEaWFnbm9zdGljUmVhc29uLlNOQVBTSE9UX0ZBSUxFRDpcbiAgICAgIGxvZ2dlci5lcnJvcignICBDSEFOR0VEICAgICVzICVzXFxuJXMnLCBkaWFnbm9zdGljLnRlc3ROYW1lLCBjaGFsay5ncmF5KGAke2RpYWdub3N0aWMuZHVyYXRpb259c2ApLCBpbmRlbnRMaW5lcyhkaWFnbm9zdGljLm1lc3NhZ2UsIDYpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRGlhZ25vc3RpY1JlYXNvbi5URVNUX1dBUk5JTkc6XG4gICAgICBsb2dnZXIud2FybmluZygnICBXQVJOICAgICAgICVzICVzXFxuJXMnLCBkaWFnbm9zdGljLnRlc3ROYW1lLCBjaGFsay5ncmF5KGAke2RpYWdub3N0aWMuZHVyYXRpb259c2ApLCBpbmRlbnRMaW5lcyhkaWFnbm9zdGljLm1lc3NhZ2UsIDYpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRGlhZ25vc3RpY1JlYXNvbi5TTkFQU0hPVF9FUlJPUjpcbiAgICBjYXNlIERpYWdub3N0aWNSZWFzb24uVEVTVF9FUlJPUjpcbiAgICAgIGxvZ2dlci5lcnJvcignICBFUlJPUiAgICAgICVzICVzXFxuJXMnLCBkaWFnbm9zdGljLnRlc3ROYW1lLCBjaGFsay5ncmF5KGAke2RpYWdub3N0aWMuZHVyYXRpb259c2ApLCBpbmRlbnRMaW5lcyhkaWFnbm9zdGljLm1lc3NhZ2UsIDYpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRGlhZ25vc3RpY1JlYXNvbi5URVNUX0ZBSUxFRDpcbiAgICAgIGxvZ2dlci5lcnJvcignICBGQUlMRUQgICAgICVzICVzXFxuJXMnLCBkaWFnbm9zdGljLnRlc3ROYW1lLCBjaGFsay5ncmF5KGAke2RpYWdub3N0aWMuZHVyYXRpb259c2ApLCBpbmRlbnRMaW5lcyhkaWFnbm9zdGljLm1lc3NhZ2UsIDYpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRGlhZ25vc3RpY1JlYXNvbi5BU1NFUlRJT05fRkFJTEVEOlxuICAgICAgbG9nZ2VyLmVycm9yKCcgIEFTU0VSVCAgICAgJXMgJXNcXG4lcycsIGRpYWdub3N0aWMudGVzdE5hbWUsIGNoYWxrLmdyYXkoYCR7ZGlhZ25vc3RpYy5kdXJhdGlvbn1zYCksIGluZGVudExpbmVzKGRpYWdub3N0aWMubWVzc2FnZSwgNikpO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgZm9yIChjb25zdCBhZGRsIG9mIGRpYWdub3N0aWMuYWRkaXRpb25hbE1lc3NhZ2VzID8/IFtdKSB7XG4gICAgbG9nZ2VyLnByaW50KGAgICAgICAke2FkZGx9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBUYWtlcyBhIG11bHRpbGluZSBzdHJpbmcgYW5kIGluZGVudHMgZXZlcnkgbGluZSB3aXRoIHRoZSBzYW1lIG51bWJlciBvZiBzcGFjZXMuXG4gKi9cbmZ1bmN0aW9uIGluZGVudExpbmVzKG1lc3NhZ2U6IHN0cmluZywgY291bnQgPSAyKTogc3RyaW5nIHtcbiAgcmV0dXJuIG1lc3NhZ2Uuc3BsaXQoJ1xcbicpLm1hcChsaW5lID0+ICcgJy5yZXBlYXQoY291bnQpICsgbGluZSkuam9pbignXFxuJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmludExhZ2dhcmRzKHRlc3ROYW1lczogU2V0PHN0cmluZz4pIHtcbiAgY29uc3QgcGFydHMgPSBbXG4gICAgJyAgJyxcbiAgICBgV2FpdGluZyBmb3IgJHt0ZXN0TmFtZXMuc2l6ZX0gbW9yZWAsXG4gICAgdGVzdE5hbWVzLnNpemUgPCAxMCA/IFsnKCcsIEFycmF5LmZyb20odGVzdE5hbWVzKS5qb2luKCcsICcpLCAnKSddLmpvaW4oJycpIDogJycsXG4gIF07XG5cbiAgbG9nZ2VyLnByaW50KGNoYWxrLmdyZXkocGFydHMuZmlsdGVyKHggPT4geCkuam9pbignICcpKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRFcnJvcihlcnJvcjogYW55KTogc3RyaW5nIHtcbiAgY29uc3QgbmFtZSA9IGVycm9yLm5hbWUgfHwgJ0Vycm9yJztcbiAgY29uc3QgbWVzc2FnZSA9IGVycm9yLm1lc3NhZ2UgfHwgU3RyaW5nKGVycm9yKTtcblxuICBpZiAoZXJyb3IuY2F1c2UpIHtcbiAgICByZXR1cm4gYCR7bmFtZX06ICR7bWVzc2FnZX1cXG4ke2NoYWxrLmdyYXkoJ0NhdXNlOiAnICsgZm9ybWF0RXJyb3IoZXJyb3IuY2F1c2UpKX1gO1xuICB9XG5cbiAgcmV0dXJuIGAke25hbWV9OiAke21lc3NhZ2V9YDtcbn1cbiJdfQ==
|
|
@@ -26,7 +26,6 @@ async function integTestWorker(request) {
|
|
|
26
26
|
const start = Date.now();
|
|
27
27
|
try {
|
|
28
28
|
const runner = new runner_1.IntegTestRunner({
|
|
29
|
-
engine: request.engine,
|
|
30
29
|
test,
|
|
31
30
|
profile: request.profile,
|
|
32
31
|
region: request.region,
|
|
@@ -93,7 +92,6 @@ async function watchTestWorker(options) {
|
|
|
93
92
|
const verbosity = options.verbosity ?? 0;
|
|
94
93
|
const test = new integration_tests_1.IntegTest(options);
|
|
95
94
|
const runner = new runner_1.IntegTestRunner({
|
|
96
|
-
engine: options.engine,
|
|
97
95
|
test,
|
|
98
96
|
profile: options.profile,
|
|
99
97
|
region: options.region,
|
|
@@ -134,7 +132,6 @@ async function snapshotTestWorker(testInfo, options = {}) {
|
|
|
134
132
|
}, 60000);
|
|
135
133
|
try {
|
|
136
134
|
const runner = new runner_1.IntegSnapshotRunner({
|
|
137
|
-
engine: options.engine,
|
|
138
135
|
test,
|
|
139
136
|
showOutput: options.verbose ?? false,
|
|
140
137
|
});
|
|
@@ -188,4 +185,4 @@ workerpool.worker({
|
|
|
188
185
|
integTestWorker,
|
|
189
186
|
watchTestWorker,
|
|
190
187
|
});
|
|
191
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmFjdF93b3JrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJleHRyYWN0X3dvcmtlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWlCQSwwQ0EyRUM7QUFFRCwwQ0F5QkM7QUFRRCxnREE2REM7QUE1TEQseUNBQXlDO0FBQ3pDLHlDQUFvRTtBQUVwRSxzRUFBMkQ7QUFFM0Qsc0NBQWtGO0FBSWxGOzs7Ozs7O0dBT0c7QUFDSSxLQUFLLFVBQVUsZUFBZSxDQUFDLE9BQThCO0lBQ2xFLE1BQU0sUUFBUSxHQUFvQixFQUFFLENBQUM7SUFDckMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUM7SUFFekMsS0FBSyxNQUFNLFFBQVEsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDckMsTUFBTSxJQUFJLEdBQUcsSUFBSSw2QkFBUyxDQUFDO1lBQ3pCLEdBQUcsUUFBUTtZQUNYLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztTQUNyQixDQUFDLENBQUMsQ0FBQyxvQkFBb0I7UUFDeEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRXpCLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLElBQUksd0JBQWUsQ0FBQztnQkFDakMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO2dCQUN0QixJQUFJO2dCQUNKLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztnQkFDeEIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO2dCQUN0QixHQUFHLEVBQUU7b0JBQ0gsVUFBVSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLFFBQVE7aUJBQy9DO2dCQUNELFVBQVUsRUFBRSxTQUFTLElBQUksQ0FBQzthQUMzQixFQUFFLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBRWhDLE1BQU0sS0FBSyxHQUFHLE1BQU0sTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRXpD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QVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixNQUFNLEVBQUUseUJBQWdCLENBQUMsY0FBYztZQUN2QyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsSUFBSTtTQUN4QixDQUFDLENBQUM7SUFDbkIsQ0FBQztZQUFTLENBQUM7UUFDVCxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUFFRCxVQUFVLENBQUMsTUFBTSxDQUFDO0lBQ2hCLGtCQUFrQjtJQUNsQixlQUFlO0lBQ2YsZUFBZTtDQUNoQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB3b3JrZXJwb29sIGZyb20gJ3dvcmtlcnBvb2wnO1xuaW1wb3J0IHsgSW50ZWdTbmFwc2hvdFJ1bm5lciwgSW50ZWdUZXN0UnVubmVyIH0gZnJvbSAnLi4vLi4vcnVubmVyJztcbmltcG9ydCB0eXBlIHsgSW50ZWdUZXN0SW5mbyB9IGZyb20gJy4uLy4uL3J1bm5lci9pbnRlZ3JhdGlvbi10ZXN0cyc7XG5pbXBvcnQgeyBJbnRlZ1Rlc3QgfSBmcm9tICcuLi8uLi9ydW5uZXIvaW50ZWdyYXRpb24tdGVzdHMnO1xuaW1wb3J0IHR5cGUgeyBJbnRlZ1Rlc3RXb3JrZXJDb25maWcsIFNuYXBzaG90VmVyaWZpY2F0aW9uT3B0aW9ucywgRGlhZ25vc3RpYyB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBEaWFnbm9zdGljUmVhc29uLCBmb3JtYXRBc3NlcnRpb25SZXN1bHRzLCBmb3JtYXRFcnJvciB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgdHlwZSB7IEludGVnVGVzdEJhdGNoUmVxdWVzdCB9IGZyb20gJy4uL2ludGVnLXRlc3Qtd29ya2VyJztcbmltcG9ydCB0eXBlIHsgSW50ZWdXYXRjaE9wdGlvbnMgfSBmcm9tICcuLi9pbnRlZy13YXRjaC13b3JrZXInO1xuXG4vKipcbiAqIFJ1bnMgYSBzaW5nbGUgaW50ZWdyYXRpb24gdGVzdCBiYXRjaCByZXF1ZXN0LlxuICogSWYgdGhlIHRlc3QgZG9lcyBub3QgaGF2ZSBhbiBleGlzdGluZyBzbmFwc2hvdCxcbiAqIHRoaXMgd2lsbCBmaXJzdCBnZW5lcmF0ZSBhIHNuYXBzaG90IGFuZCB0aGVuIGV4ZWN1dGVcbiAqIHRoZSBpbnRlZ3JhdGlvbiB0ZXN0cy5cbiAqXG4gKiBJZiB0aGUgdGVzdHMgc3VjY2VlZCBpdCB3aWxsIHRoZW4gc2F2ZSB0aGUgc25hcHNob3RcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGludGVnVGVzdFdvcmtlcihyZXF1ZXN0OiBJbnRlZ1Rlc3RCYXRjaFJlcXVlc3QpOiBQcm9taXNlPEludGVnVGVzdFdvcmtlckNvbmZpZ1tdPiB7XG4gIGNvbnN0IGZhaWx1cmVzOiBJbnRlZ1Rlc3RJbmZvW10gPSBbXTtcbiAgY29uc3QgdmVyYm9zaXR5ID0gcmVxdWVzdC52ZXJib3NpdHkgPz8gMDtcblxuICBmb3IgKGNvbnN0IHRlc3RJbmZvIG9mIHJlcXVlc3QudGVzdHMpIHtcbiAgICBjb25zdCB0ZXN0ID0gbmV3IEludGVnVGVzdCh7XG4gICAgICAuLi50ZXN0SW5mbyxcbiAgICAgIHdhdGNoOiByZXF1ZXN0LndhdGNoLFxuICAgIH0pOyAvLyBIeWRyYXRlIGZyb20gZGF0YVxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBydW5uZXIgPSBuZXcgSW50ZWdUZXN0UnVubmVyKHtcbiAgICAgICAgZW5naW5lOiByZXF1ZXN0LmVuZ2luZSxcbiAgICAgICAgdGVzdCxcbiAgICAgICAgcHJvZmlsZTogcmVxdWVzdC5wcm9maWxlLFxuICAgICAgICByZWdpb246IHJlcXVlc3QucmVnaW9uLFxuICAgICAgICBlbnY6IHtcbiAgICAgICAgICBDREtfRE9DS0VSOiBwcm9jZXNzLmVudi5DREtfRE9DS0VSID8/ICdkb2NrZXInLFxuICAgICAgICB9LFxuICAgICAgICBzaG93T3V0cHV0OiB2ZXJib3NpdHkgPj0gMixcbiAgICAgIH0sIHRlc3RJbmZvLmRlc3RydWN0aXZlQ2hhbmdlcyk7XG5cbiAgICAgIGNvbnN0IHRlc3RzID0gYXdhaXQgcnVubmVyLmFjdHVhbFRlc3RzKCk7XG5cbiAgICAgIGlmICghdGVzdHMgfHwgT2JqZWN0LmtleXModGVzdHMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHRlc3RzIGRlZmluZWQgZm9yICR7cnVubmVyLnRlc3ROYW1lfWApO1xuICAgICAgfVxuICAgICAgZm9yIChjb25zdCB0ZXN0Q2FzZU5hbWUgb2YgT2JqZWN0LmtleXModGVzdHMpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHJ1bm5lci5ydW5JbnRlZ1Rlc3RDYXNlKHtcbiAgICAgICAgICAgIHRlc3RDYXNlTmFtZSxcbiAgICAgICAgICAgIGNsZWFuOiByZXF1ZXN0LmNsZWFuLFxuICAgICAgICAgICAgZHJ5UnVuOiByZXF1ZXN0LmRyeVJ1bixcbiAgICAgICAgICAgIHVwZGF0ZVdvcmtmbG93OiByZXF1ZXN0LnVwZGF0ZVdvcmtmbG93LFxuICAgICAgICAgICAgdmVyYm9zaXR5LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChyZXN1bHRzICYmIE9iamVjdC52YWx1ZXMocmVzdWx0cykuc29tZShyZXN1bHQgPT4gcmVzdWx0LnN0YXR1cyA9PT0gJ2ZhaWwnKSkge1xuICAgICAgICAgICAgZmFpbHVyZXMucHVzaCh0ZXN0SW5mbyk7XG4gICAgICAgICAgICB3b3JrZXJwb29sLndvcmtlckVtaXQoe1xuICAgICAgICAgICAgICByZWFzb246IERpYWdub3N0aWNSZWFzb24uQVNTRVJUSU9OX0ZBSUxFRCxcbiAgICAgICAgICAgICAgdGVzdE5hbWU6IGAke3J1bm5lci50ZXN0TmFtZX0tJHt0ZXN0Q2FzZU5hbWV9ICgke3JlcXVlc3QucHJvZmlsZX0vJHtyZXF1ZXN0LnJlZ2lvbn0pYCxcbiAgICAgICAgICAgICAgbWVzc2FnZTogZm9ybWF0QXNzZXJ0aW9uUmVzdWx0cyhyZXN1bHRzKSxcbiAgICAgICAgICAgICAgZHVyYXRpb246IChEYXRlLm5vdygpIC0gc3RhcnQpIC8gMTAwMCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3b3JrZXJwb29sLndvcmtlckVtaXQoe1xuICAgICAgICAgICAgICByZWFzb246IERpYWdub3N0aWNSZWFzb24uVEVTVF9TVUNDRVNTLFxuICAgICAgICAgICAgICB0ZXN0TmFtZTogYCR7cnVubmVyLnRlc3ROYW1lfS0ke3Rlc3RDYXNlTmFtZX1gLFxuICAgICAgICAgICAgICBtZXNzYWdlOiByZXN1bHRzID8gZm9ybWF0QXNzZXJ0aW9uUmVzdWx0cyhyZXN1bHRzKSA6ICdOTyBBU1NFUlRJT05TJyxcbiAgICAgICAgICAgICAgZHVyYXRpb246IChEYXRlLm5vdygpIC0gc3RhcnQpIC8gMTAwMCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGZhaWx1cmVzLnB1c2godGVzdEluZm8pO1xuICAgICAgICAgIHdvcmtlcnBvb2wud29ya2VyRW1pdCh7XG4gICAgICAgICAgICByZWFzb246IERpYWdub3N0aWNSZWFzb24uVEVTVF9GQUlMRUQsXG4gICAgICAgICAgICB0ZXN0TmFtZTogYCR7cnVubmVyLnRlc3ROYW1lfS0ke3Rlc3RDYXNlTmFtZX0gKCR7cmVxdWVzdC5wcm9maWxlfS8ke3JlcXVlc3QucmVnaW9ufSlgLFxuICAgICAgICAgICAgbWVzc2FnZTogYEludGVncmF0aW9uIHRlc3QgZmFpbGVkOiAke2Zvcm1hdEVycm9yKGUpfWAsXG4gICAgICAgICAgICBkdXJhdGlvbjogKERhdGUubm93KCkgLSBzdGFydCkgLyAxMDAwLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZmFpbHVyZXMucHVzaCh0ZXN0SW5mbyk7XG4gICAgICB3b3JrZXJwb29sLndvcmtlckVtaXQoe1xuICAgICAgICByZWFzb246IERpYWdub3N0aWNSZWFzb24uVEVTVF9FUlJPUixcbiAgICAgICAgdGVzdE5hbWU6IGAke3Rlc3RJbmZvLmZpbGVOYW1lfSAoJHtyZXF1ZXN0LnByb2ZpbGV9LyR7cmVxdWVzdC5yZWdpb259KWAsXG4gICAgICAgIG1lc3NhZ2U6IGBFcnJvciBkdXJpbmcgaW50ZWdyYXRpb24gdGVzdDogJHtmb3JtYXRFcnJvcihlKX1gLFxuICAgICAgICBkdXJhdGlvbjogKERhdGUubm93KCkgLSBzdGFydCkgLyAxMDAwLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhaWx1cmVzO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd2F0Y2hUZXN0V29ya2VyKG9wdGlvbnM6IEludGVnV2F0Y2hPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHZlcmJvc2l0eSA9IG9wdGlvbnMudmVyYm9zaXR5ID8/IDA7XG4gIGNvbnN0IHRlc3QgPSBuZXcgSW50ZWdUZXN0KG9wdGlvbnMpO1xuICBjb25zdCBydW5uZXIgPSBuZXcgSW50ZWdUZXN0UnVubmVyKHtcbiAgICBlbmdpbmU6IG9wdGlvbnMuZW5naW5lLFxuICAgIHRlc3QsXG4gICAgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlLFxuICAgIHJlZ2lvbjogb3B0aW9ucy5yZWdpb24sXG4gICAgZW52OiB7XG4gICAgICBDREtfRE9DS0VSOiBwcm9jZXNzLmVudi5DREtfRE9DS0VSID8/ICdkb2NrZXInLFxuICAgIH0sXG4gICAgc2hvd091dHB1dDogdmVyYm9zaXR5ID49IDIsXG4gIH0pO1xuICBydW5uZXIuY3JlYXRlQ2RrQ29udGV4dEpzb24oKTtcbiAgY29uc3QgdGVzdHMgPSBhd2FpdCBydW5uZXIuYWN0dWFsVGVzdHMoKTtcblxuICBpZiAoIXRlc3RzIHx8IE9iamVjdC5rZXlzKHRlc3RzKS5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHRlc3RzIGRlZmluZWQgZm9yICR7cnVubmVyLnRlc3ROYW1lfWApO1xuICB9XG4gIGZvciAoY29uc3QgdGVzdENhc2VOYW1lIG9mIE9iamVjdC5rZXlzKHRlc3RzKSkge1xuICAgIGF3YWl0IHJ1bm5lci53YXRjaEludGVnVGVzdCh7XG4gICAgICB0ZXN0Q2FzZU5hbWUsXG4gICAgICB2ZXJib3NpdHksXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSdW5zIGEgc2luZ2xlIHNuYXBzaG90IHRlc3QgYmF0Y2ggcmVxdWVzdC5cbiAqIEZvciBlYWNoIGludGVncmF0aW9uIHRlc3QgdGhpcyB3aWxsIGNoZWNrIHRvIHNlZVxuICogaWYgdGhlcmUgaXMgYW4gZXhpc3Rpbmcgc25hcHNob3QsIGFuZCBpZiB0aGVyZSBpcyB3aWxsXG4gKiBjaGVjayBpZiB0aGVyZSBhcmUgYW55IGNoYW5nZXNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNuYXBzaG90VGVzdFdvcmtlcih0ZXN0SW5mbzogSW50ZWdUZXN0SW5mbywgb3B0aW9uczogU25hcHNob3RWZXJpZmljYXRpb25PcHRpb25zID0ge30pOiBQcm9taXNlPEludGVnVGVzdFdvcmtlckNvbmZpZ1tdPiB7XG4gIGNvbnN0IGZhaWxlZFRlc3RzID0gbmV3IEFycmF5PEludGVnVGVzdFdvcmtlckNvbmZpZz4oKTtcbiAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICBjb25zdCB0ZXN0ID0gbmV3IEludGVnVGVzdCh0ZXN0SW5mbyk7IC8vIEh5ZHJhdGUgdGhlIGRhdGEgcmVjb3JkIGFnYWluXG5cbiAgY29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICB3b3JrZXJwb29sLndvcmtlckVtaXQoe1xuICAgICAgcmVhc29uOiBEaWFnbm9zdGljUmVhc29uLlRFU1RfV0FSTklORyxcbiAgICAgIHRlc3ROYW1lOiB0ZXN0LnRlc3ROYW1lLFxuICAgICAgbWVzc2FnZTogJ1Rlc3QgaXMgdGFraW5nIGEgdmVyeSBsb25nIHRpbWUnLFxuICAgICAgZHVyYXRpb246IChEYXRlLm5vdygpIC0gc3RhcnQpIC8gMTAwMCxcbiAgICB9KTtcbiAgfSwgNjBfMDAwKTtcblxuICB0cnkge1xuICAgIGNvbnN0IHJ1bm5lciA9IG5ldyBJbnRlZ1NuYXBzaG90UnVubmVyKHtcbiAgICAgIGVuZ2luZTogb3B0aW9ucy5lbmdpbmUsXG4gICAgICB0ZXN0LFxuICAgICAgc2hvd091dHB1dDogb3B0aW9ucy52ZXJib3NlID8/IGZhbHNlLFxuICAgIH0pO1xuICAgIGlmICghcnVubmVyLmhhc1NuYXBzaG90KCkpIHtcbiAgICAgIHdvcmtlcnBvb2wud29ya2VyRW1pdCh7XG4gICAgICAgIHJlYXNvbjogRGlhZ25vc3RpY1JlYXNvbi5OT19TTkFQU0hPVCxcbiAgICAgICAgdGVzdE5hbWU6IHRlc3QudGVzdE5hbWUsXG4gICAgICAgIG1lc3NhZ2U6ICdObyBTbmFwc2hvdCcsXG4gICAgICAgIGR1cmF0aW9uOiAoRGF0ZS5ub3coKSAtIHN0YXJ0KSAvIDEwMDAsXG4gICAgICB9KTtcbiAgICAgIGZhaWxlZFRlc3RzLnB1c2godGVzdC5pbmZvKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgeyBkaWFnbm9zdGljcywgZGVzdHJ1Y3RpdmVDaGFuZ2VzIH0gPSBhd2FpdCBydW5uZXIudGVzdFNuYXBzaG90KG9wdGlvbnMpO1xuICAgICAgaWYgKGRpYWdub3N0aWNzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZGlhZ25vc3RpY3MuZm9yRWFjaChkaWFnbm9zdGljID0+IHdvcmtlcnBvb2wud29ya2VyRW1pdCh7XG4gICAgICAgICAgLi4uZGlhZ25vc3RpYyxcbiAgICAgICAgICBkdXJhdGlvbjogKERhdGUubm93KCkgLSBzdGFydCkgLyAxMDAwLFxuICAgICAgICB9IGFzIERpYWdub3N0aWMpKTtcbiAgICAgICAgZmFpbGVkVGVzdHMucHVzaCh7XG4gICAgICAgICAgLi4udGVzdC5pbmZvLFxuICAgICAgICAgIGRlc3RydWN0aXZlQ2hhbmdlcyxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3b3JrZXJwb29sLndvcmtlckVtaXQoe1xuICAgICAgICAgIHJlYXNvbjogRGlhZ25vc3RpY1JlYXNvbi5TTkFQU0hPVF9TVUNDRVNTLFxuICAgICAgICAgIHRlc3ROYW1lOiB0ZXN0LnRlc3ROYW1lLFxuICAgICAgICAgIG1lc3NhZ2U6ICdTdWNjZXNzJyxcbiAgICAgICAgICBkdXJhdGlvbjogKERhdGUubm93KCkgLSBzdGFydCkgLyAxMDAwLFxuICAgICAgICB9IGFzIERpYWdub3N0aWMpO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgZmFpbGVkVGVzdHMucHVzaCh0ZXN0LmluZm8pO1xuICAgIHdvcmtlcnBvb2wud29ya2VyRW1pdCh7XG4gICAgICBtZXNzYWdlOiBmb3JtYXRFcnJvcihlKSxcbiAgICAgIHRlc3ROYW1lOiB0ZXN0LnRlc3ROYW1lLFxuICAgICAgcmVhc29uOiBEaWFnbm9zdGljUmVhc29uLlNOQVBTSE9UX0VSUk9SLFxuICAgICAgZHVyYXRpb246IChEYXRlLm5vdygpIC0gc3RhcnQpIC8gMTAwMCxcbiAgICB9IGFzIERpYWdub3N0aWMpO1xuICB9IGZpbmFsbHkge1xuICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gIH1cblxuICByZXR1cm4gZmFpbGVkVGVzdHM7XG59XG5cbndvcmtlcnBvb2wud29ya2VyKHtcbiAgc25hcHNob3RUZXN0V29ya2VyLFxuICBpbnRlZ1Rlc3RXb3JrZXIsXG4gIHdhdGNoVGVzdFdvcmtlcixcbn0pO1xuIl19
|
|
188
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmFjdF93b3JrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJleHRyYWN0X3dvcmtlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWlCQSwwQ0EwRUM7QUFFRCwwQ0F3QkM7QUFRRCxnREE0REM7QUF6TEQseUNBQXlDO0FBQ3pDLHlDQUFvRTtBQUVwRSxzRUFBMkQ7QUFFM0Qsc0NBQWtGO0FBSWxGOzs7Ozs7O0dBT0c7QUFDSSxLQUFLLFVBQVUsZUFBZSxDQUFDLE9BQThCO0lBQ2xFLE1BQU0sUUFBUSxHQUFvQixFQUFFLENBQUM7SUFDckMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUM7SUFFekMsS0FBSyxNQUFNLFFBQVEsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDckMsTUFBTSxJQUFJLEdBQUcsSUFBSSw2QkFBUyxDQUFDO1lBQ3pCLEdBQUcsUUFBUTtZQUNYLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztTQUNyQixDQUFDLENBQUMsQ0FBQyxvQkFBb0I7UUFDeEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRXpCLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLElBQUksd0JBQWUsQ0FBQztnQkFDakMsSUFBSTtnQkFDSixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87Z0JBQ3hCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtnQkFDdEIsR0FBRyxFQUFFO29CQUNILFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxRQUFRO2lCQUMvQztnQkFDRCxVQUFVLEVBQUUsU0FBUyxJQUFJLENBQUM7YUFDM0IsRUFBRSxRQUFRLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUVoQyxNQUFNLEtBQUssR0FBRyxNQUFNLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUV6QyxJQUFJLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxJ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QUUsR0FBRyxLQUFLLENBQUMsR0FBRyxJQUFJO1NBQ3hCLENBQUMsQ0FBQztJQUNuQixDQUFDO1lBQVMsQ0FBQztRQUNULFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQztBQUVELFVBQVUsQ0FBQyxNQUFNLENBQUM7SUFDaEIsa0JBQWtCO0lBQ2xCLGVBQWU7SUFDZixlQUFlO0NBQ2hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHdvcmtlcnBvb2wgZnJvbSAnd29ya2VycG9vbCc7XG5pbXBvcnQgeyBJbnRlZ1NuYXBzaG90UnVubmVyLCBJbnRlZ1Rlc3RSdW5uZXIgfSBmcm9tICcuLi8uLi9ydW5uZXInO1xuaW1wb3J0IHR5cGUgeyBJbnRlZ1Rlc3RJbmZvIH0gZnJvbSAnLi4vLi4vcnVubmVyL2ludGVncmF0aW9uLXRlc3RzJztcbmltcG9ydCB7IEludGVnVGVzdCB9IGZyb20gJy4uLy4uL3J1bm5lci9pbnRlZ3JhdGlvbi10ZXN0cyc7XG5pbXBvcnQgdHlwZSB7IEludGVnVGVzdFdvcmtlckNvbmZpZywgU25hcHNob3RWZXJpZmljYXRpb25PcHRpb25zLCBEaWFnbm9zdGljIH0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IERpYWdub3N0aWNSZWFzb24sIGZvcm1hdEFzc2VydGlvblJlc3VsdHMsIGZvcm1hdEVycm9yIH0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB0eXBlIHsgSW50ZWdUZXN0QmF0Y2hSZXF1ZXN0IH0gZnJvbSAnLi4vaW50ZWctdGVzdC13b3JrZXInO1xuaW1wb3J0IHR5cGUgeyBJbnRlZ1dhdGNoT3B0aW9ucyB9IGZyb20gJy4uL2ludGVnLXdhdGNoLXdvcmtlcic7XG5cbi8qKlxuICogUnVucyBhIHNpbmdsZSBpbnRlZ3JhdGlvbiB0ZXN0IGJhdGNoIHJlcXVlc3QuXG4gKiBJZiB0aGUgdGVzdCBkb2VzIG5vdCBoYXZlIGFuIGV4aXN0aW5nIHNuYXBzaG90LFxuICogdGhpcyB3aWxsIGZpcnN0IGdlbmVyYXRlIGEgc25hcHNob3QgYW5kIHRoZW4gZXhlY3V0ZVxuICogdGhlIGludGVncmF0aW9uIHRlc3RzLlxuICpcbiAqIElmIHRoZSB0ZXN0cyBzdWNjZWVkIGl0IHdpbGwgdGhlbiBzYXZlIHRoZSBzbmFwc2hvdFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW50ZWdUZXN0V29ya2VyKHJlcXVlc3Q6IEludGVnVGVzdEJhdGNoUmVxdWVzdCk6IFByb21pc2U8SW50ZWdUZXN0V29ya2VyQ29uZmlnW10+IHtcbiAgY29uc3QgZmFpbHVyZXM6IEludGVnVGVzdEluZm9bXSA9IFtdO1xuICBjb25zdCB2ZXJib3NpdHkgPSByZXF1ZXN0LnZlcmJvc2l0eSA/PyAwO1xuXG4gIGZvciAoY29uc3QgdGVzdEluZm8gb2YgcmVxdWVzdC50ZXN0cykge1xuICAgIGNvbnN0IHRlc3QgPSBuZXcgSW50ZWdUZXN0KHtcbiAgICAgIC4uLnRlc3RJbmZvLFxuICAgICAgd2F0Y2g6IHJlcXVlc3Qud2F0Y2gsXG4gICAgfSk7IC8vIEh5ZHJhdGUgZnJvbSBkYXRhXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJ1bm5lciA9IG5ldyBJbnRlZ1Rlc3RSdW5uZXIoe1xuICAgICAgICB0ZXN0LFxuICAgICAgICBwcm9maWxlOiByZXF1ZXN0LnByb2ZpbGUsXG4gICAgICAgIHJlZ2lvbjogcmVxdWVzdC5yZWdpb24sXG4gICAgICAgIGVudjoge1xuICAgICAgICAgIENES19ET0NLRVI6IHByb2Nlc3MuZW52LkNES19ET0NLRVIgPz8gJ2RvY2tlcicsXG4gICAgICAgIH0sXG4gICAgICAgIHNob3dPdXRwdXQ6IHZlcmJvc2l0eSA+PSAyLFxuICAgICAgfSwgdGVzdEluZm8uZGVzdHJ1Y3RpdmVDaGFuZ2VzKTtcblxuICAgICAgY29uc3QgdGVzdHMgPSBhd2FpdCBydW5uZXIuYWN0dWFsVGVzdHMoKTtcblxuICAgICAgaWYgKCF0ZXN0cyB8fCBPYmplY3Qua2V5cyh0ZXN0cykubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gdGVzdHMgZGVmaW5lZCBmb3IgJHtydW5uZXIudGVzdE5hbWV9YCk7XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IHRlc3RDYXNlTmFtZSBvZiBPYmplY3Qua2V5cyh0ZXN0cykpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgcnVubmVyLnJ1bkludGVnVGVzdENhc2Uoe1xuICAgICAgICAgICAgdGVzdENhc2VOYW1lLFxuICAgICAgICAgICAgY2xlYW46IHJlcXVlc3QuY2xlYW4sXG4gICAgICAgICAgICBkcnlSdW46IHJlcXVlc3QuZHJ5UnVuLFxuICAgICAgICAgICAgdXBkYXRlV29ya2Zsb3c6IHJlcXVlc3QudXBkYXRlV29ya2Zsb3csXG4gICAgICAgICAgICB2ZXJib3NpdHksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKHJlc3VsdHMgJiYgT2JqZWN0LnZhbHVlcyhyZXN1bHRzKS5zb21lKHJlc3VsdCA9PiByZXN1bHQuc3RhdHVzID09PSAnZmFpbCcpKSB7XG4gICAgICAgICAgICBmYWlsdXJlcy5wdXNoKHRlc3RJbmZvKTtcbiAgICAgICAgICAgIHdvcmtlcnBvb2wud29ya2VyRW1pdCh7XG4gICAgICAgICAgICAgIHJlYXNvbjogRGlhZ25vc3RpY1JlYXNvbi5BU1NFUlRJT05fRkFJTEVELFxuICAgICAgICAgICAgICB0ZXN0TmFtZTogYCR7cnVubmVyLnRlc3ROYW1lfS0ke3Rlc3RDYXNlTmFtZX0gKCR7cmVxdWVzdC5wcm9maWxlfS8ke3JlcXVlc3QucmVnaW9ufSlgLFxuICAgICAgICAgICAgICBtZXNzYWdlOiBmb3JtYXRBc3NlcnRpb25SZXN1bHRzKHJlc3VsdHMpLFxuICAgICAgICAgICAgICBkdXJhdGlvbjogKERhdGUubm93KCkgLSBzdGFydCkgLyAxMDAwLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHdvcmtlcnBvb2wud29ya2VyRW1pdCh7XG4gICAgICAgICAgICAgIHJlYXNvbjogRGlhZ25vc3RpY1JlYXNvbi5URVNUX1NVQ0NFU1MsXG4gICAgICAgICAgICAgIHRlc3ROYW1lOiBgJHtydW5uZXIudGVzdE5hbWV9LSR7dGVzdENhc2VOYW1lfWAsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHJlc3VsdHMgPyBmb3JtYXRBc3NlcnRpb25SZXN1bHRzKHJlc3VsdHMpIDogJ05PIEFTU0VSVElPTlMnLFxuICAgICAgICAgICAgICBkdXJhdGlvbjogKERhdGUubm93KCkgLSBzdGFydCkgLyAxMDAwLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgZmFpbHVyZXMucHVzaCh0ZXN0SW5mbyk7XG4gICAgICAgICAgd29ya2VycG9vbC53b3JrZXJFbWl0KHtcbiAgICAgICAgICAgIHJlYXNvbjogRGlhZ25vc3RpY1JlYXNvbi5URVNUX0ZBSUxFRCxcbiAgICAgICAgICAgIHRlc3ROYW1lOiBgJHtydW5uZXIudGVzdE5hbWV9LSR7dGVzdENhc2VOYW1lfSAoJHtyZXF1ZXN0LnByb2ZpbGV9LyR7cmVxdWVzdC5yZWdpb259KWAsXG4gICAgICAgICAgICBtZXNzYWdlOiBgSW50ZWdyYXRpb24gdGVzdCBmYWlsZWQ6ICR7Zm9ybWF0RXJyb3IoZSl9YCxcbiAgICAgICAgICAgIGR1cmF0aW9uOiAoRGF0ZS5ub3coKSAtIHN0YXJ0KSAvIDEwMDAsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBmYWlsdXJlcy5wdXNoKHRlc3RJbmZvKTtcbiAgICAgIHdvcmtlcnBvb2wud29ya2VyRW1pdCh7XG4gICAgICAgIHJlYXNvbjogRGlhZ25vc3RpY1JlYXNvbi5URVNUX0VSUk9SLFxuICAgICAgICB0ZXN0TmFtZTogYCR7dGVzdEluZm8uZmlsZU5hbWV9ICgke3JlcXVlc3QucHJvZmlsZX0vJHtyZXF1ZXN0LnJlZ2lvbn0pYCxcbiAgICAgICAgbWVzc2FnZTogYEVycm9yIGR1cmluZyBpbnRlZ3JhdGlvbiB0ZXN0OiAke2Zvcm1hdEVycm9yKGUpfWAsXG4gICAgICAgIGR1cmF0aW9uOiAoRGF0ZS5ub3coKSAtIHN0YXJ0KSAvIDEwMDAsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFpbHVyZXM7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3YXRjaFRlc3RXb3JrZXIob3B0aW9uczogSW50ZWdXYXRjaE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgdmVyYm9zaXR5ID0gb3B0aW9ucy52ZXJib3NpdHkgPz8gMDtcbiAgY29uc3QgdGVzdCA9IG5ldyBJbnRlZ1Rlc3Qob3B0aW9ucyk7XG4gIGNvbnN0IHJ1bm5lciA9IG5ldyBJbnRlZ1Rlc3RSdW5uZXIoe1xuICAgIHRlc3QsXG4gICAgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlLFxuICAgIHJlZ2lvbjogb3B0aW9ucy5yZWdpb24sXG4gICAgZW52OiB7XG4gICAgICBDREtfRE9DS0VSOiBwcm9jZXNzLmVudi5DREtfRE9DS0VSID8/ICdkb2NrZXInLFxuICAgIH0sXG4gICAgc2hvd091dHB1dDogdmVyYm9zaXR5ID49IDIsXG4gIH0pO1xuICBydW5uZXIuY3JlYXRlQ2RrQ29udGV4dEpzb24oKTtcbiAgY29uc3QgdGVzdHMgPSBhd2FpdCBydW5uZXIuYWN0dWFsVGVzdHMoKTtcblxuICBpZiAoIXRlc3RzIHx8IE9iamVjdC5rZXlzKHRlc3RzKS5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHRlc3RzIGRlZmluZWQgZm9yICR7cnVubmVyLnRlc3ROYW1lfWApO1xuICB9XG4gIGZvciAoY29uc3QgdGVzdENhc2VOYW1lIG9mIE9iamVjdC5rZXlzKHRlc3RzKSkge1xuICAgIGF3YWl0IHJ1bm5lci53YXRjaEludGVnVGVzdCh7XG4gICAgICB0ZXN0Q2FzZU5hbWUsXG4gICAgICB2ZXJib3NpdHksXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSdW5zIGEgc2luZ2xlIHNuYXBzaG90IHRlc3QgYmF0Y2ggcmVxdWVzdC5cbiAqIEZvciBlYWNoIGludGVncmF0aW9uIHRlc3QgdGhpcyB3aWxsIGNoZWNrIHRvIHNlZVxuICogaWYgdGhlcmUgaXMgYW4gZXhpc3Rpbmcgc25hcHNob3QsIGFuZCBpZiB0aGVyZSBpcyB3aWxsXG4gKiBjaGVjayBpZiB0aGVyZSBhcmUgYW55IGNoYW5nZXNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNuYXBzaG90VGVzdFdvcmtlcih0ZXN0SW5mbzogSW50ZWdUZXN0SW5mbywgb3B0aW9uczogU25hcHNob3RWZXJpZmljYXRpb25PcHRpb25zID0ge30pOiBQcm9taXNlPEludGVnVGVzdFdvcmtlckNvbmZpZ1tdPiB7XG4gIGNvbnN0IGZhaWxlZFRlc3RzID0gbmV3IEFycmF5PEludGVnVGVzdFdvcmtlckNvbmZpZz4oKTtcbiAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICBjb25zdCB0ZXN0ID0gbmV3IEludGVnVGVzdCh0ZXN0SW5mbyk7IC8vIEh5ZHJhdGUgdGhlIGRhdGEgcmVjb3JkIGFnYWluXG5cbiAgY29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICB3b3JrZXJwb29sLndvcmtlckVtaXQoe1xuICAgICAgcmVhc29uOiBEaWFnbm9zdGljUmVhc29uLlRFU1RfV0FSTklORyxcbiAgICAgIHRlc3ROYW1lOiB0ZXN0LnRlc3ROYW1lLFxuICAgICAgbWVzc2FnZTogJ1Rlc3QgaXMgdGFraW5nIGEgdmVyeSBsb25nIHRpbWUnLFxuICAgICAgZHVyYXRpb246IChEYXRlLm5vdygpIC0gc3RhcnQpIC8gMTAwMCxcbiAgICB9KTtcbiAgfSwgNjBfMDAwKTtcblxuICB0cnkge1xuICAgIGNvbnN0IHJ1bm5lciA9IG5ldyBJbnRlZ1NuYXBzaG90UnVubmVyKHtcbiAgICAgIHRlc3QsXG4gICAgICBzaG93T3V0cHV0OiBvcHRpb25zLnZlcmJvc2UgPz8gZmFsc2UsXG4gICAgfSk7XG4gICAgaWYgKCFydW5uZXIuaGFzU25hcHNob3QoKSkge1xuICAgICAgd29ya2VycG9vbC53b3JrZXJFbWl0KHtcbiAgICAgICAgcmVhc29uOiBEaWFnbm9zdGljUmVhc29uLk5PX1NOQVBTSE9ULFxuICAgICAgICB0ZXN0TmFtZTogdGVzdC50ZXN0TmFtZSxcbiAgICAgICAgbWVzc2FnZTogJ05vIFNuYXBzaG90JyxcbiAgICAgICAgZHVyYXRpb246IChEYXRlLm5vdygpIC0gc3RhcnQpIC8gMTAwMCxcbiAgICAgIH0pO1xuICAgICAgZmFpbGVkVGVzdHMucHVzaCh0ZXN0LmluZm8pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB7IGRpYWdub3N0aWNzLCBkZXN0cnVjdGl2ZUNoYW5nZXMgfSA9IGF3YWl0IHJ1bm5lci50ZXN0U25hcHNob3Qob3B0aW9ucyk7XG4gICAgICBpZiAoZGlhZ25vc3RpY3MubGVuZ3RoID4gMCkge1xuICAgICAgICBkaWFnbm9zdGljcy5mb3JFYWNoKGRpYWdub3N0aWMgPT4gd29ya2VycG9vbC53b3JrZXJFbWl0KHtcbiAgICAgICAgICAuLi5kaWFnbm9zdGljLFxuICAgICAgICAgIGR1cmF0aW9uOiAoRGF0ZS5ub3coKSAtIHN0YXJ0KSAvIDEwMDAsXG4gICAgICAgIH0gYXMgRGlhZ25vc3RpYykpO1xuICAgICAgICBmYWlsZWRUZXN0cy5wdXNoKHtcbiAgICAgICAgICAuLi50ZXN0LmluZm8sXG4gICAgICAgICAgZGVzdHJ1Y3RpdmVDaGFuZ2VzLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdvcmtlcnBvb2wud29ya2VyRW1pdCh7XG4gICAgICAgICAgcmVhc29uOiBEaWFnbm9zdGljUmVhc29uLlNOQVBTSE9UX1NVQ0NFU1MsXG4gICAgICAgICAgdGVzdE5hbWU6IHRlc3QudGVzdE5hbWUsXG4gICAgICAgICAgbWVzc2FnZTogJ1N1Y2Nlc3MnLFxuICAgICAgICAgIGR1cmF0aW9uOiAoRGF0ZS5ub3coKSAtIHN0YXJ0KSAvIDEwMDAsXG4gICAgICAgIH0gYXMgRGlhZ25vc3RpYyk7XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICBmYWlsZWRUZXN0cy5wdXNoKHRlc3QuaW5mbyk7XG4gICAgd29ya2VycG9vbC53b3JrZXJFbWl0KHtcbiAgICAgIG1lc3NhZ2U6IGZvcm1hdEVycm9yKGUpLFxuICAgICAgdGVzdE5hbWU6IHRlc3QudGVzdE5hbWUsXG4gICAgICByZWFzb246IERpYWdub3N0aWNSZWFzb24uU05BUFNIT1RfRVJST1IsXG4gICAgICBkdXJhdGlvbjogKERhdGUubm93KCkgLSBzdGFydCkgLyAxMDAwLFxuICAgIH0gYXMgRGlhZ25vc3RpYyk7XG4gIH0gZmluYWxseSB7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgfVxuXG4gIHJldHVybiBmYWlsZWRUZXN0cztcbn1cblxud29ya2VycG9vbC53b3JrZXIoe1xuICBzbmFwc2hvdFRlc3RXb3JrZXIsXG4gIGludGVnVGVzdFdvcmtlcixcbiAgd2F0Y2hUZXN0V29ya2VyLFxufSk7XG4iXX0=
|