socket-function 1.2.1 → 1.2.2
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/dist/SetProcessVariables.ts.cache +2 -2
- package/dist/SocketFunction.ts.cache +2 -2
- package/hot/dist/HotReloadController.ts.cache +2 -2
- package/package.json +1 -1
- package/require/dist/RequireController.ts.cache +2 -2
- package/require/dist/compileFlags.ts.cache +2 -2
- package/require/dist/extMapper.ts.cache +2 -2
- package/require/dist/require.ts.cache +2 -2
- package/src/JSONLACKS/dist/JSONLACKS.ts.cache +2 -2
- package/src/dist/CallFactory.ts.cache +2 -2
- package/src/dist/Zip.ts.cache +2 -2
- package/src/dist/bits.ts.cache +2 -2
- package/src/dist/buffers.ts.cache +2 -2
- package/src/dist/caching.ts.cache +2 -2
- package/src/dist/callHTTPHandler.ts.cache +2 -2
- package/src/dist/callManager.ts.cache +2 -2
- package/src/dist/certStore.ts.cache +2 -2
- package/src/dist/fixLargeNetworkCalls.ts.cache +2 -2
- package/src/dist/forwardPort.ts.cache +2 -2
- package/src/dist/https.ts.cache +2 -2
- package/src/dist/nodeCache.ts.cache +2 -2
- package/src/dist/nodeProxy.ts.cache +2 -2
- package/src/dist/protocolNegotiation.ts.cache +2 -2
- package/src/dist/tlsParsing.ts.cache +2 -2
- package/src/dist/webSocketServer.ts.cache +2 -2
- package/src/dist/websocketFactory.ts.cache +2 -2
- package/src/lz4/dist/LZ4.ts.cache +2 -2
- package/time/dist/trueTimeShim.ts.cache +86 -35
- package/time/trueTimeShim.ts +78 -27
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
|
|
1
|
+
"use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
|
|
3
3
|
module.allowclient = true;
|
|
4
4
|
const misc_1 = require("./src/misc");
|
|
@@ -6,4 +6,4 @@ if (!(0, misc_1.isNode)()) {
|
|
|
6
6
|
process.env.CBOR_NATIVE_ACCELERATION_DISABLED = "true";
|
|
7
7
|
}
|
|
8
8
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2V0UHJvY2Vzc1ZhcmlhYmxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIlNldFByb2Nlc3NWYXJpYWJsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFNLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztBQUMxQixxQ0FBb0M7QUFFcEMsSUFBSSxDQUFDLElBQUEsYUFBTSxHQUFFLEVBQUUsQ0FBQztJQUNaLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUNBQWlDLEdBQUcsTUFBTSxDQUFDO0FBQzNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuYWxsb3djbGllbnQgPSB0cnVlO1xuaW1wb3J0IHsgaXNOb2RlIH0gZnJvbSBcIi4vc3JjL21pc2NcIjtcblxuaWYgKCFpc05vZGUoKSkge1xuICAgIHByb2Nlc3MuZW52LkNCT1JfTkFUSVZFX0FDQ0VMRVJBVElPTl9ESVNBQkxFRCA9IFwidHJ1ZVwiO1xufSJdfQ=//=
|
|
9
|
-
/* _JS_SOURCE_HASH = "
|
|
9
|
+
/* _JS_SOURCE_HASH = "17f221dc44d3e6b670edca79d328239589b294826e978bd1870b2edb56a5e5ed"; */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
|
|
1
|
+
"use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
|
|
2
2
|
/// <reference path="./require/RequireController.ts" />
|
|
3
3
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
4
|
if (k2 === undefined) k2 = k;
|
|
@@ -464,4 +464,4 @@ function _setSocketContext(caller, code) {
|
|
|
464
464
|
}
|
|
465
465
|
exports._setSocketContext = _setSocketContext;
|
|
466
466
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU29ja2V0RnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJTb2NrZXRGdW5jdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsdURBQXVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUd2RCxtREFBNkg7QUFDN0gsMkRBQThFO0FBQzlFLCtDQUFxSDtBQUNySCwrQ0FBK0M7QUFFL0MsMkRBQTJEO0FBRTNELDJDQUFxQztBQUNyQywyREFBd0Q7QUFDeEQsNkNBQXVDO0FBQ3ZDLDBEQUEyRDtBQUUzRCxpQ0FBK0I7QUFDL0Isb0RBQTJCO0FBQzNCLHlEQUFpRDtBQUNqRCxxQ0FBb0M7QUFDcEMsbURBQWtHO0FBQ2xHLHFEQUFzRDtBQUV0RCxJQUFBLHNCQUFPLEVBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDaEQsSUFBSSxhQUFhLEdBQUcsSUFBSSxnQkFBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ2pFLElBQUksSUFBQSxhQUFNLEdBQUUsRUFBRSxDQUFDO0lBQ1gsK0VBQStFO0lBQy9FLDJFQUEyRTtJQUMzRSw2RUFBNkU7SUFDN0UscUVBQXFFO0lBQ3JFLE9BQU8sQ0FBQyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNuQyxPQUFPLENBQUMsS0FBSyxDQUFDLHFCQUFxQixHQUFHLENBQUMsQ0FBQyxDQUFTLGFBQVQsQ0FBQyx1QkFBRCxDQUFDLENBQVUsS0FBSyxLQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLENBQUMsRUFBRSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDbEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLENBQUMsQ0FBUyxhQUFULENBQUMsdUJBQUQsQ0FBQyxDQUFVLEtBQUssS0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVELE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0FBRTFCLHVGQUF1RjtBQUN2RiwyRkFBMkY7QUFDM0Ysb0dBQW9HO0FBQ3BHLE1BQU0sYUFBYSxHQUFHLElBQUEsaUNBQWUsRUFBQyw4QkFBOEIsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM1RSxNQUFNLEVBQUUsQ0FBQztJQUNULE1BQU0sRUFBRSxTQUFzQztDQUNqRCxDQUFDLENBQUMsQ0FBQztBQVlKLE1BQWEsY0FBYztJQXdCdkIseU1BQXlNO0lBQ2xNLE1BQU0sQ0FBQyxRQUFRLEtBQUssT0FBTyxDQUFDLElBQUEsYUFBTSxHQUFFLElBQUksY0FBYyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztJQXdCNUUsTUFBTSxLQUFLLGNBQWMsS0FBSyxPQUFPLGNBQWMsQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFcEYsTUFBTSxLQUFLLGFBQWEsS0FBZ0MsT0FBTyxhQUFhLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM1RixNQUFNLEtBQUssYUFBYSxDQUFDLEtBQWdDLElBQUksYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xHLE1BQU0sQ0FBQyxTQUFTO1FBQ25CLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxhQUFhLENBQUM7UUFDNUMsSUFBSSxDQUFDLE1BQU07WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDZFQUE2RSxDQUFDLENBQUM7UUFDNUcsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQU1ELDJFQUEyRTtJQUMzRSxnRkFBZ0Y7SUFDaEY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQThCRTtJQUNLLE1BQU0sQ0FBQyxRQUFRLENBT2xCLFNBQWlCLEVBQ2pCLFFBQStDLEVBQy9DLFFBQXFCLEVBQ3JCLGVBRUMsRUFDRCxNQVdDO1FBRUQsSUFBSSxXQUFXLEdBQUcsSUFBQSxjQUFJLEVBQUMsT0FBTyxRQUFRLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25GLEtBQUssT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDN0IsSUFBSSxPQUFPLEdBQUcsZUFBZSxhQUFmLGVBQWUsdUJBQWYsZUFBZSxHQUFLLE9BQU8sQ0FBQztZQUMxQyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNWLElBQUksU0FBUyxHQUFHLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQy9ELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDYixTQUFTLEdBQUcsRUFBRSxDQUFDO29CQUNmLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUM5RCxDQUFDO2dCQUNELFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDNUIsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxlQUFlLEdBQUcsZUFBZSxJQUFJLElBQUEsY0FBSSxFQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sUUFBUSxHQUFHLElBQUEsY0FBSSxFQUFDLEdBQUcsRUFBRTs7WUFDdkIsSUFBSSxLQUFLLEdBQUcsUUFBUSxFQUF3QixDQUFDO1lBQzdDLElBQUksWUFBWSxHQUFHLGVBQWUsYUFBZixlQUFlLHVCQUFmLGVBQWUsRUFBSSxDQUFDO1lBRXZDLEtBQUssSUFBSSxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsS0FBSztvQkFBRSxTQUFTO2dCQUNyQixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUN2QixLQUFLLENBQUMsV0FBVyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUEsWUFBWSxhQUFaLFlBQVksdUJBQVosWUFBWSxDQUFFLFdBQVcsS0FBSSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM3RixDQUFDO2dCQUNELElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUN2QixLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDM0MsQ0FBQztxQkFBTSxDQUFDO29CQUNKLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQSxZQUFZLGFBQVosWUFBWSx1QkFBWixZQUFZLENBQUUsS0FBSyxLQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzNFLENBQUM7Z0JBQ0QsS0FBSyxDQUFDLGFBQWEsR0FBRyxNQUFBLFlBQVksYUFBWixZQUFZLHVCQUFaLFlBQVksQ0FBRSxhQUFhLG1DQUFJLEtBQUssQ0FBQyxhQUFhLENBQUM7WUFDN0UsQ0FBQztZQUNELE9BQU8sS0FBa0MsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztRQUVILGdGQUFnRjtRQUNoRiw2RUFBNkU7UUFDN0Usb0RBQW9EO1FBQ3BELEtBQUssT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDN0IsSUFBQSwyQkFBYSxFQUFDLFNBQVMsRUFBRSxXQUFXLEVBQTRCLEVBQUUsUUFBUSxFQUFFLEVBQUU7Z0JBQzFFLGlCQUFpQixFQUFFLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxpQkFBaUI7YUFDL0MsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLFlBQVksR0FBRyxjQUFjLENBQUMscUJBQXFCLENBQUM7WUFDcEQsVUFBVSxFQUFFLFNBQVM7WUFDckIsYUFBYSxFQUFFLElBQVc7U0FDN0IsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUViLElBQUksQ0FBQyxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxZQUFZLENBQUEsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDOUIsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLE9BQU8sQ0FBUSxDQUFDO0lBQy9ELENBQUM7SUFLTSxNQUFNLENBQUMscUJBQXFCLENBQy9CLGdCQUFnRDtJQUNoRCxzQ0FBc0M7SUFDdEMsUUFBbUM7UUFFbkMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1YsSUFBSSxRQUFRLEdBQUcsSUFBQSxjQUFJLEVBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxFQUFJLENBQUMsQ0FBQztZQUN4QyxJQUFJLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUM7WUFDNUMsSUFBSSxTQUFTLEdBQUcsSUFBQSx3QkFBWSxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7Z0JBQ25ELE9BQU8sTUFBTSxjQUFjLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUMxRSxDQUFDLENBQUMsQ0FBQztZQUVILE1BQU0sR0FBRztnQkFDTCxLQUFLLEVBQUUsU0FBUztnQkFDaEIsVUFBVSxFQUFFLFNBQVM7Z0JBQ3JCLGFBQWEsRUFBRSxJQUFXO2FBQzdCLENBQUM7WUFFRixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFTyxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FDN0IsSUFBd0IsRUFDeEIsU0FBaUIsRUFDakIsS0FBMEI7UUFFMUIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN6QixJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3JDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsU0FBUyxJQUFJLFlBQVksT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFDRCxJQUFJLENBQUM7WUFDRCxJQUFJLFdBQVcsR0FBRyxNQUFNLElBQUEsZ0NBQW9CLEVBQUMsTUFBTSxDQUFDLENBQUM7WUFFckQsSUFBSSxRQUFRLEdBQUcsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFHLFlBQVksQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDWixRQUFRLEdBQUcsRUFBRSxDQUFDO1lBQ2xCLENBQUM7WUFDRCw0RkFBNEY7WUFDNUYsZ0VBQWdFO1lBQ2hFLG1CQUFtQjtZQUNuQixtRUFBbUU7WUFDbkUsSUFBSTtZQUVKLElBQUksVUFBVSxHQUFHLE1BQU0sSUFBQSw0QkFBYyxFQUFDLElBQUksRUFBRSxRQUFzRCxFQUFFLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUU5SCxJQUFJLGdCQUFnQixJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNqQyxLQUFLLElBQUksUUFBUSxJQUFJLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDdkMsTUFBTSxRQUFRLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUM5QyxDQUFDO2dCQUNELElBQUksZ0JBQWdCLElBQUksVUFBVSxFQUFFLENBQUM7b0JBQ2pDLE9BQU8sVUFBVSxDQUFDLGNBQWMsQ0FBQztnQkFDckMsQ0FBQztZQUNMLENBQUM7WUFFRCxJQUFJLE1BQU0sR0FBRyxNQUFNLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakQsS0FBSyxJQUFJLFFBQVEsSUFBSSxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3ZDLE1BQU0sUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzNCLENBQUM7WUFDRCxJQUFJLGdCQUFnQixJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNqQyxPQUFPLFVBQVUsQ0FBQyxjQUFjLENBQUM7WUFDckMsQ0FBQztZQUNELE9BQU8sTUFBTSxDQUFDO1FBQ2xCLENBQUM7Z0JBQVMsQ0FBQztZQUNQLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLElBQUksY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsSUFBSSxPQUFPLFNBQVMsSUFBSSxZQUFZLE9BQU8sSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN0RixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRDs7TUFFRTtJQUNLLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FDMUIsTUFBYyxFQUNkLFFBQW9CO0lBQ3BCLCtVQUErVTtJQUMvVSxxQkFBb0Y7UUFFcEYsSUFBSSxDQUFDLElBQUEsMEJBQWMsRUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDcEQsT0FBTyxDQUFDLEtBQUssQ0FBQyxrQ0FBa0MsTUFBTSxrTkFBa04sQ0FBQyxDQUFDO1FBQzlRLENBQUM7UUFDRCxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ1IsSUFBSSxPQUFPLEdBQUcsTUFBTSxJQUFBLDBCQUFjLEVBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNYLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDMUIsTUFBTSxJQUFBLGdCQUFLLEVBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2xCLE9BQU8sR0FBRyxNQUFNLElBQUEsMEJBQWMsRUFBQyxNQUFNLENBQUMsQ0FBQztvQkFDdkMsSUFBSSxPQUFPO3dCQUFFLE1BQU07Z0JBQ3ZCLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0NBQWtDLE1BQU0sK0JBQStCLENBQUMsQ0FBQztvQkFDdkYsUUFBUSxFQUFFLENBQUM7b0JBQ1gsT0FBTztnQkFDWCxDQUFDO1lBQ0wsQ0FBQztZQUVELE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDWixRQUFRLEVBQUUsQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNNLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxNQUFjO1FBQzlDLElBQUksT0FBTyxHQUFHLElBQUEsMEJBQWMsRUFBQyxNQUFNLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDWCxPQUFPLFNBQVMsQ0FBQztRQUNyQixDQUFDO1FBQ0QsSUFBSSxPQUFPLFlBQVksT0FBTyxFQUFFLENBQUM7WUFDN0IsT0FBTyxTQUFTLENBQUM7UUFDckIsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDLFVBQVUsQ0FBQztJQUM5QixDQUFDO0lBQ00sTUFBTSxDQUFDLGVBQWUsQ0FBQyxNQUFjO1FBQ3hDLElBQUksT0FBTyxHQUFHLElBQUEsMEJBQWMsRUFBQyxNQUFNLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDWCxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO1FBQ0QsSUFBSSxPQUFPLFlBQVksT0FBTyxFQUFFLENBQUM7WUFDN0IsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUNELE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7SUFDakMsQ0FBQztJQUVEOztVQUVNO0lBQ0MsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFrQjtRQUM1QyxJQUFJLFFBQVEsR0FBRyxJQUFBLDZCQUFpQixFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDWixNQUFNLElBQUksS0FBSyxDQUFDLDJGQUEyRixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUM5SCxDQUFDO1FBQ0QsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsV0FBVyxRQUFRLENBQUMsT0FBTyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEQsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN4RCxHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN4RCxPQUFPLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBS00sTUFBTSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBSSxJQUFzQjtRQUMzRCxjQUFjLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDO1lBQ0QsT0FBTyxNQUFNLElBQUksRUFBRSxDQUFDO1FBQ3hCLENBQUM7Z0JBQVMsQ0FBQztZQUNQLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuRCxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxNQUFNLENBQUMsZ0JBQWtDO1FBQ25ELElBQUksY0FBYyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDO1lBQUUsT0FBTztRQUM3RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO1FBQzdFLENBQUM7UUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixJQUFBLGdCQUFJLEVBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLElBQUEseUJBQVcsRUFBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXJELElBQUksY0FBYyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM3QyxJQUFJLGNBQWMsR0FBRyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3RGLEtBQUssSUFBSSxPQUFPLElBQUksY0FBYyxJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUN2QyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUNqQyxPQUFPLENBQUMsS0FBSyxDQUFDLCtDQUErQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN0RSxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQWdCTSxNQUFNLEtBQUssYUFBYSxLQUFLLE9BQU8sY0FBYyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLE1BQU0sS0FBSyxhQUFhLENBQUMsS0FBYSxJQUFJLGNBQWMsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEcsTUFBTSxDQUFDLFNBQVMsS0FBSyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNuRCxNQUFNLEtBQUssU0FBUyxLQUFLLE9BQU8sY0FBYyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzVFLE1BQU0sS0FBSyxTQUFTLENBQUMsS0FBYSxJQUFJLGNBQWMsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDMUYsTUFBTSxLQUFLLFlBQVksS0FBSyxPQUFPLGNBQWMsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUNsRixNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUEwQjtRQUNoRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLDhFQUE4RSxDQUFDLENBQUM7UUFDcEcsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7UUFDekQsSUFBSSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDL0IsQ0FBQztRQUVELE1BQU0sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsR0FBRyx3REFBYSxxQkFBcUIsR0FBQyxDQUFDO1FBQ2xGLFdBQVcsRUFBRSxDQUFDO1FBQ2QsTUFBTSxvQkFBb0IsRUFBRSxDQUFDO1FBRTdCLDBEQUEwRDtRQUMxRCxNQUFNLElBQUEsZ0JBQUssRUFBQyxXQUFXLENBQUMsQ0FBQztRQUV6QixJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sSUFBQSxtQ0FBaUIsRUFBQyxNQUFNLENBQUMsQ0FBQztRQUNyRCxjQUFjLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEQsS0FBSyxJQUFJLFNBQVMsSUFBSSxjQUFjLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDbEQsSUFBSSxTQUFTLEdBQUcsY0FBYyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsU0FBUztnQkFBRSxTQUFTO1lBQ3pCLEtBQUssSUFBSSxRQUFRLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sUUFBUSxFQUFFLENBQUM7WUFDckIsQ0FBQztRQUNMLENBQUM7UUFDRCxjQUFjLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQy9DLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7O01BS0U7SUFDSyxNQUFNLENBQUMsa0JBQWtCLENBSTVCLFVBQXNCLEVBQ3RCLFlBQTBCLEVBQzFCLEdBQUcsSUFBaUQ7UUFFcEQsSUFBQSxvQ0FBa0IsRUFBQztZQUNmLFNBQVMsRUFBRSxVQUFVLENBQUMsVUFBVTtZQUNoQyxZQUFZO1lBQ1osSUFBSTtTQUNQLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQTJDO1FBQzdELE9BQU8sSUFBQSxxQkFBUyxFQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFTSxNQUFNLENBQUMsYUFBYTtRQUN2QixJQUFJLElBQUEsYUFBTSxHQUFFLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUMzRCxDQUFDO1FBQ0QsSUFBSSxRQUFRLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztRQUNuQyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ1gsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3pCLENBQUM7UUFDRCxPQUFPLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUNNLE1BQU0sQ0FBQyxnQkFBZ0I7UUFDMUIsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBd0I7UUFDaEQsSUFBQSxnQ0FBa0IsRUFBQyxJQUEwQixDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUNNLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxJQUE4QjtRQUM1RCxJQUFBLHNDQUF3QixFQUFDLElBQWdDLENBQUMsQ0FBQztJQUMvRCxDQUFDOztBQWxjTCx3Q0FtY0M7QUFsY2lCLDBCQUFXLEdBQUcsS0FBSyxDQUFDO0FBQ3BCLGdDQUFpQixHQUFHO0lBQzlCLE1BQU0sRUFBRSxFQUFnQztJQUN4QyxRQUFRLEVBQUUsRUFBZ0M7SUFDMUMsU0FBUyxFQUFFLEVBQXdEO0NBQ3RFLENBQUM7QUFFWSwrQkFBZ0IsR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUVwQyw4QkFBZSxHQUFHLEtBQUssQ0FBQztBQUN4QixxQkFBTSxHQUFHLElBQUksQ0FBQztBQUVkLDRCQUFhLEdBQUcsS0FBSyxDQUFDO0FBRXBDLDBHQUEwRztBQUMxRyxtQ0FBbUM7QUFDckIsbUJBQUksR0FBRyxnQkFBZ0IsQ0FBQztBQUN0Qyw2RkFBNkY7QUFDL0UsbUJBQUksR0FBRyxhQUFhLENBQUM7QUFFckIsMEJBQVcsR0FBRyxDQUFDLENBQUM7QUFFaEIsaUNBQWtCLEdBQUcsS0FBSyxDQUFDO0FBSXpDLCtGQUErRjtBQUMvRix3RkFBd0Y7QUFDeEYsaUdBQWlHO0FBQ2pHLDhRQUE4UTtBQUN2UCw4QkFBZSxHQUFHO0lBQ3JDLFNBQVMsRUFBRSxJQUFBLHFCQUFXLEVBQUMsQ0FBQyxHQUFZLEVBQTBCLEVBQUUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSwyQkFBMkIsQ0FBQztJQUMxSCxXQUFXLEVBQUUsSUFBQSxxQkFBVyxFQUFDLENBQUMsT0FBaUIsRUFBeUIsRUFBRSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsNkJBQTZCLENBQUM7Q0FDMUksQ0FBQztBQUVGOztHQUVHO0FBQ1cscUNBQXNCLEdBQUcsQ0FBQyxNQUFjLEVBQXNDLEVBQUUsQ0FBQyxTQUFTLENBQUM7QUFFM0YsNkJBQWMsR0FBRyxHQUFHLENBQUM7QUFFbkMsK0ZBQStGO0FBQy9GLHVEQUF1RDtBQUN4QywrQkFBZ0IsR0FBRyxJQUFBLGlDQUFlLEVBQUMsaUNBQWlDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksR0FBRyxFQUF3QyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDckosK0ZBQStGO0FBQy9GLG1FQUFtRTtBQUNwRCxzQ0FBdUIsR0FBRyxJQUFBLGlDQUFlLEVBQUMsK0JBQStCLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFVLENBQUMsQ0FBQztBQVd4RyxxQ0FBc0IsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFBLG9DQUFzQixHQUFFLENBQUM7QUFDeEQsa0NBQW1CLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBQSxpQ0FBbUIsR0FBRSxDQUFDO0FBQ2xELCtCQUFnQixHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUEsOEJBQWdCLEdBQUUsQ0FBQztBQWtIMUQsOEZBQThGO0FBQzlGLGdFQUFnRTtBQUNqRCwwQkFBVyxHQUFHLElBQUEsaUNBQWUsRUFBQyw0QkFBNEIsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxHQUFHLEVBQTRCLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQWdKL0gsZ0dBQWdHO0FBQ2hHLDRDQUE0QztBQUM3QixnQ0FBaUIsR0FBRyxJQUFBLGlDQUFlLEVBQUMsa0NBQWtDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBaUNoSCwwRkFBMEY7QUFDMUYsOEZBQThGO0FBQzlGLHdCQUF3QjtBQUNULHlCQUFVLEdBQUcsSUFBQSxpQ0FBZSxFQUFDLDJCQUEyQixFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUU7SUFDN0UsSUFBSSxZQUF5QixDQUFDO0lBQzlCLElBQUksWUFBWSxHQUFHLElBQUksT0FBTyxDQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxDQUFDO0lBQ3hFLE9BQU87UUFDSCxVQUFVLEVBQUUsS0FBSztRQUNqQixhQUFhLEVBQUUsRUFBRTtRQUNqQixTQUFTLEVBQUUsRUFBRTtRQUNiLFlBQVk7UUFDWixZQUFZO0tBQ2YsQ0FBQztBQUNOLENBQUMsQ0FBQyxDQUFDO0FBd0ZQLFNBQVMsaUJBQWlCO0lBQ3RCLE9BQU8sZ0JBQWdELENBQUM7QUFDNUQsQ0FBQztBQUdELFNBQWdCLGlCQUFpQixDQUM3QixNQUFxQixFQUNyQixJQUFhO0lBRWIsSUFBSSxHQUFHLEdBQUcsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzlCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNiLElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFDeEIsR0FBRyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDcEIsSUFBSSxDQUFDO1FBQ0QsT0FBTyxJQUFJLEVBQUUsQ0FBQztJQUNsQixDQUFDO1lBQVMsQ0FBQztRQUNQLElBQUksTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN4QixHQUFHLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztRQUMzQixDQUFDO0lBQ0wsQ0FBQztBQUNMLENBQUM7QUFmRCw4Q0FlQyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuL3JlcXVpcmUvUmVxdWlyZUNvbnRyb2xsZXIudHNcIiAvPlxuXG5pbXBvcnQgeyBTb2NrZXRFeHBvc2VkSW50ZXJmYWNlLCBTb2NrZXRGdW5jdGlvbkhvb2ssIFNvY2tldEZ1bmN0aW9uQ2xpZW50SG9vaywgU29ja2V0RXhwb3NlZFNoYXBlLCBTb2NrZXRSZWdpc3RlcmVkLCBDYWxsZXJDb250ZXh0LCBGdWxsQ2FsbFR5cGUsIENhbGxUeXBlLCBGbmNUeXBlLCBTb2NrZXRSZWdpc3RlclR5cGUgfSBmcm9tIFwiLi9Tb2NrZXRGdW5jdGlvblR5cGVzXCI7XG5pbXBvcnQgeyBleHBvc2VDbGFzcywgcmVnaXN0ZXJDbGFzcywgcmVnaXN0ZXJHbG9iYWxDbGllbnRIb29rLCByZWdpc3Rlckdsb2JhbEhvb2ssIHJ1bkNsaWVudEhvb2tzIH0gZnJvbSBcIi4vc3JjL2NhbGxNYW5hZ2VyXCI7XG5pbXBvcnQgeyBTb2NrZXRTZXJ2ZXJDb25maWcsIHN0YXJ0U29ja2V0U2VydmVyIH0gZnJvbSBcIi4vc3JjL3dlYlNvY2tldFNlcnZlclwiO1xuaW1wb3J0IHsgZ2V0Q2FsbEZhY3RvcnksIGdldENyZWF0ZUNhbGxGYWN0b3J5LCBnZXROb2RlSWQsIGdldE5vZGVJZExvY2F0aW9uLCBpc0NsaWVudE5vZGVJZCB9IGZyb20gXCIuL3NyYy9ub2RlQ2FjaGVcIjtcbmltcG9ydCB7IGdldENhbGxQcm94eSB9IGZyb20gXCIuL3NyYy9ub2RlUHJveHlcIjtcbmltcG9ydCB7IEFyZ3MsIE1heWJlUHJvbWlzZSB9IGZyb20gXCIuL3NyYy90eXBlc1wiO1xuaW1wb3J0IHsgc2V0RGVmYXVsdEhUVFBDYWxsIH0gZnJvbSBcIi4vc3JjL2NhbGxIVFRQSGFuZGxlclwiO1xuaW1wb3J0IGRlYnVnYnJlYWsgZnJvbSBcImRlYnVnYnJlYWtcIjtcbmltcG9ydCB7IGxhenkgfSBmcm9tIFwiLi9zcmMvY2FjaGluZ1wiO1xuaW1wb3J0IHsgY3JlYXRlU2luZ2xldG9uIH0gZnJvbSBcIi4vc3JjL2NyZWF0ZVNpbmdsZXRvblwiO1xuaW1wb3J0IHsgZGVsYXkgfSBmcm9tIFwiLi9zcmMvYmF0Y2hpbmdcIjtcbmltcG9ydCB7IGJsdWUsIG1hZ2VudGEgfSBmcm9tIFwiLi9zcmMvZm9ybWF0dGluZy9sb2dDb2xvcnNcIjtcbmltcG9ydCB7IEpTT05MQUNLUyB9IGZyb20gXCIuL3NyYy9KU09OTEFDS1MvSlNPTkxBQ0tTXCI7XG5pbXBvcnQgXCIuL1NldFByb2Nlc3NWYXJpYWJsZXNcIjtcbmltcG9ydCBjYm9yeCBmcm9tIFwiY2Jvci14XCI7XG5pbXBvcnQgeyBzZXRGbGFnIH0gZnJvbSBcIi4vcmVxdWlyZS9jb21waWxlRmxhZ3NcIjtcbmltcG9ydCB7IGlzTm9kZSB9IGZyb20gXCIuL3NyYy9taXNjXCI7XG5pbXBvcnQgeyBnZXRQZW5kaW5nQ2FsbENvdW50LCBoYXJ2ZXN0Q2FsbFRpbWVzLCBoYXJ2ZXN0RmFpbGVkQ2FsbENvdW50IH0gZnJvbSBcIi4vc3JjL0NhbGxGYWN0b3J5XCI7XG5pbXBvcnQgeyBtZWFzdXJlV3JhcCB9IGZyb20gXCIuL3NyYy9wcm9maWxpbmcvbWVhc3VyZVwiO1xuXG5zZXRGbGFnKHJlcXVpcmUsIFwiY2Jvci14XCIsIFwiYWxsb3djbGllbnRcIiwgdHJ1ZSk7XG5sZXQgY2JvcnhJbnN0YW5jZSA9IG5ldyBjYm9yeC5FbmNvZGVyKHsgc3RydWN0dXJlZENsb25lOiB0cnVlIH0pO1xuaWYgKGlzTm9kZSgpKSB7XG4gICAgLy8gRG8gbm90IGNyYXNoIG9uIHVuaGFuZGxlZCBlcnJvcnMuIFNvY2tldEZ1bmN0aW9uIGlzIG1hZGUgdG8gcnVuIGEgd2Vic2VydmVyLFxuICAgIC8vICB3aGljaCB3aWxsIHJ1biBwZXJmZWN0bHkgYWZ0ZXIgOTkuOSUgb2YgZXJyb3JzLiBDcmFzaGluZyB0aGUgcHJvY2VzcyBpc1xuICAgIC8vICBub3QgYSBnb29kIGFsdGVybmF0aXZlIHRvIHByb3BlciBlcnJvciBsb2cgYW5kIG5vdGlmaWNhdGlvbnMuIERvIHlvdSBndXlzXG4gICAgLy8gIG5vdCBnZXQgYXV0b21hdGVkIGVtYWlscyB3aGVuIHVuZXhwZWN0ZWQgZXJyb3JzIGFyZSBsb2dnZWQ/IEkgZG8uXG4gICAgcHJvY2Vzcy5vbihcInVuaGFuZGxlZFJlamVjdGlvblwiLCAoZSkgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiVW5oYW5kbGVkIHJlamVjdGlvblwiICsgKChlIGFzIGFueSk/LnN0YWNrIHx8IGUpKTtcbiAgICB9KTtcbiAgICBwcm9jZXNzLm9uKFwidW5jYXVnaHRFeGNlcHRpb25cIiwgKGUpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIlVuY2F1Z2h0IGV4Y2VwdGlvblwiICsgKChlIGFzIGFueSk/LnN0YWNrIHx8IGUpKTtcbiAgICB9KTtcbn1cblxubW9kdWxlLmFsbG93Y2xpZW50ID0gdHJ1ZTtcblxuLy8gVGhlIGFjdGl2ZSBjYWxsJ3MgY2FsbGVyLCBwbHVzIGEgc2VxdWVuY2UgbnVtYmVyIHVzZWQgdG8gcmVzZXQgaXQgc3luY2hyb25vdXNseSAoc2VlXG4vLyAgX3NldFNvY2tldENvbnRleHQpLiBTaGFyZWQgYWNyb3NzIGNvcGllcyBvZiB0aGlzIHBhY2thZ2UsIHNvIFNvY2tldEZ1bmN0aW9uLmdldENhbGxlcigpXG4vLyAgcmV0dXJucyB0aGUgcmlnaHQgY2FsbGVyIGV2ZW4gd2hlbiB0aGUgY2FsbCB3YXMgc2V0IHVwIGJ5IGEgZGlmZmVyZW50IGNvcHkuIFNlZSBjcmVhdGVTaW5nbGV0b24uXG5jb25zdCBzb2NrZXRDb250ZXh0ID0gY3JlYXRlU2luZ2xldG9uKFwiU29ja2V0RnVuY3Rpb24uc29ja2V0Q29udGV4dFwiLCAxLCAoKSA9PiAoe1xuICAgIHNlcU51bTogMSxcbiAgICBjYWxsZXI6IHVuZGVmaW5lZCBhcyBDYWxsZXJDb250ZXh0IHwgdW5kZWZpbmVkLFxufSkpO1xuXG50eXBlIEV4dHJhY3RTaGFwZTxDbGFzc1R5cGUsIFNoYXBlPiA9IHtcbiAgICBba2V5IGluIGtleW9mIENsYXNzVHlwZV06IChcbiAgICAgICAga2V5IGV4dGVuZHMga2V5b2YgU2hhcGVcbiAgICAgICAgPyBDbGFzc1R5cGVba2V5XSBleHRlbmRzIFNvY2tldEV4cG9zZWRJbnRlcmZhY2VbXCJcIl1cbiAgICAgICAgPyBDbGFzc1R5cGVba2V5XVxuICAgICAgICA6IENsYXNzVHlwZVtrZXldIGV4dGVuZHMgRnVuY3Rpb24gPyBcIkFsbCBleHBvc2VkIGZ1bmN0aW9uIG11c3QgYmUgYXN5bmMgKG9yIHJldHVybiBhIFByb21pc2UpXCIgOiBuZXZlclxuICAgICAgICA6IFwiRnVuY3Rpb24gaGFzIGltcGxlbWVudGF0aW9uIGJ1dCBpcyBub3QgZXhwb3NlZCBpbiB0aGUgU29ja2V0RnVuY3Rpb24ucmVnaXN0ZXIgY2FsbFwiXG4gICAgKTtcbn07XG5cbmV4cG9ydCBjbGFzcyBTb2NrZXRGdW5jdGlvbiB7XG4gICAgcHVibGljIHN0YXRpYyBsb2dNZXNzYWdlcyA9IGZhbHNlO1xuICAgIHB1YmxpYyBzdGF0aWMgdHJhY2tNZXNzYWdlU2l6ZXMgPSB7XG4gICAgICAgIHVwbG9hZDogW10gYXMgKChzaXplOiBudW1iZXIpID0+IHZvaWQpW10sXG4gICAgICAgIGRvd25sb2FkOiBbXSBhcyAoKHNpemU6IG51bWJlcikgPT4gdm9pZClbXSxcbiAgICAgICAgY2FsbFRpbWVzOiBbXSBhcyAoKG9iajogeyBzdGFydDogbnVtYmVyOyBlbmQ6IG51bWJlcjsgfSkgPT4gdm9pZClbXSxcbiAgICB9O1xuXG4gICAgcHVibGljIHN0YXRpYyBNQVhfTUVTU0FHRV9TSVpFID0gMTAyNCAqIDEwMjQgKiAzMjtcblxuICAgIHB1YmxpYyBzdGF0aWMgSFRUUF9FVEFHX0NBQ0hFID0gZmFsc2U7XG4gICAgcHVibGljIHN0YXRpYyBzaWxlbnQgPSB0cnVlO1xuXG4gICAgcHVibGljIHN0YXRpYyBIVFRQX0NPTVBSRVNTID0gZmFsc2U7XG5cbiAgICAvLyBJZiB5b3UgaGF2ZSBIVFRQIHJlc291cmNlcyB0aGF0IHJlcXVpcmUgY29va2llcyB5b3UgbWlnaHQgdG8gc2V0IGBTb2NrZXRGdW5jdGlvbi5DT0VQID0gXCJyZXF1aXJlLWNvcnBcImBcbiAgICAvLyAgLSBDcm9zcy1vcmlnaW4tcmVzb3VyY2UtcG9saWN5LlxuICAgIHB1YmxpYyBzdGF0aWMgQ09FUCA9IFwiY3JlZGVudGlhbGxlc3NcIjtcbiAgICAvLyBOT1RFOiBUaGlzIENPT1AgYW5kIENPRVAgZGVmYXVsdHMgYXJlIHJlcXVpcmVkIHNvIHdpbmRvdy5jcm9zc09yaWdpbklzb2xhdGVkIHdpbGwgYmUgdHJ1ZS5cbiAgICBwdWJsaWMgc3RhdGljIENPT1AgPSBcInNhbWUtb3JpZ2luXCI7XG5cbiAgICBwdWJsaWMgc3RhdGljIFRPVEFMX0NBTExTID0gMDtcblxuICAgIHB1YmxpYyBzdGF0aWMgRU5BQkxFX0NMSUVOVF9NT0RFID0gZmFsc2U7XG4gICAgLy8gUGxhY2VzIHdoZXJlIHdlIGRlY2lkZSBpZiB3ZSB3YW50IHRvIGFjdCBhcyBhIGNsaWVudC4gTW9zdCBwbGFjZXMgd2UgY2hlY2sgZm9yIGlzIG5vZGUsIGJ1dCBzb21lIHBsYWNlcyBpdCdzIG5vdCwgZGVwZW5kaW5nIG9uIGlmIHdlJ3JlIGluIE5vZGUuanMgb3Igbm90LCBpdCdzIGRlcGVuZGluZyBvbiBpZiB3ZSdyZSBhIGNsaWVudCBvciBub3QuXG4gICAgcHVibGljIHN0YXRpYyBpc0NsaWVudCgpIHsgcmV0dXJuICFpc05vZGUoKSB8fCBTb2NrZXRGdW5jdGlvbi5FTkFCTEVfQ0xJRU5UX01PREU7IH1cblxuICAgIC8vIEluIHJldHJvc3BlY3QuLi4gZHluYW1pY2FsbHkgY2hhbmdpbmcgdGhlIHdpcmUgc2VyaWFsaXplciBpcyBhIEJBRCBpZGVhLiBJZiBhbnkgY2FsbHMgaGFwcGVuXG4gICAgLy8gIGJlZm9yZSBpdCBpcyBjaGFuZ2VkLCB0aGluZ3MganVzdCBicmVhay4gQWxzbywgaXQgbmVlZHMgdG8gYmUgY2hhbmdlZCBvbiBib3RoIHNpZGVzLFxuICAgIC8vICBvciBlbHNlIHRoaW5ncyBicmVhay4gQWxzbywgaXQgaXMgdmVyeSBoYXJkIHRvIGRldGVjdCB3aGVuIHRoZSBpc3N1ZSBpcyBkaWZmZXJlbnQgc2VyaWFsaXplcnNcbiAgICAvLyBOT1RFOiBUaGUgb25seSByZWFzb24gdGhpcyBpcyBzdGlsbCBleHBvc2VkIGlzIGluIGNhc2UgaW4gdGhlIGZ1dHVyZSB3ZSB3YW50IHRvIGludGVyY2VwdCBvdXIgdHJhZmZpYywgYW5kIHdlIHdhbnQgY29udmVuaWVudCBmdW5jdGlvbnMgdG8ga25vdyBob3cgdG8gZGVjb2RlIGl0IChhbHRob3VnaCB0aGVyZSBhcmUgYSBzdGlsbCBmZXcgb3RoZXIgbGF5ZXJzIHVuZGVyIHRoaXMsIGZvciBjb21wcmVzc2lvbiBhbmQgQnVmZmVyW10gc2VuZGluZyBlZmZpY2llbmN5KS5cbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFdJUkVfU0VSSUFMSVpFUiA9IHtcbiAgICAgICAgc2VyaWFsaXplOiBtZWFzdXJlV3JhcCgob2JqOiB1bmtub3duKTogTWF5YmVQcm9taXNlPEJ1ZmZlcltdPiA9PiBbY2JvcnhJbnN0YW5jZS5lbmNvZGUob2JqKV0sIFwiV0lSRV9TRVJJQUxJWkVSfHNlcmlhbGl6ZVwiKSxcbiAgICAgICAgZGVzZXJpYWxpemU6IG1lYXN1cmVXcmFwKChidWZmZXJzOiBCdWZmZXJbXSk6IE1heWJlUHJvbWlzZTx1bmtub3duPiA9PiBjYm9yeEluc3RhbmNlLmRlY29kZShidWZmZXJzWzBdKSwgXCJXSVJFX1NFUklBTElaRVJ8ZGVzZXJpYWxpemVcIiksXG4gICAgfTtcblxuICAgIC8qKiBXZSB3aWxsIHRyeSB0aGUgYWx0ZXJuYXRlIG5vZGUgSURzIGZpcnN0LCBob3dldmVyLCBpZiB0aGV5IGZhaWwsIHdlIHdpbGwgZ28gdGhyb3VnaCBhbGwgb2YgdGhlbSBhbmQgdGhlbiBldmVudHVhbGx5IHRyeSB0aGUgb3JpZ2luYWwgbm9kZSBJRC4gXG4gICAgICogICAgICBWRVJZIHVzZWZ1bCwgYWxsb3dpbmcgdXMgdG8gY2hhbmdlIGdsb2JhbCBpcHMgdG8gbG9jYWwgb25lcywgd2hpY2ggc2hvcnQtY2lyY3VpdHMgdGhlIHJvdXRlciwgbWFzc2l2ZWx5IGluY3JlYXNpbmcgYmFuZHdpZHRoIGFuZCBkZWNyZWFzaW5nIGxhdGVuY3kuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBHRVRfQUxURVJOQVRFX05PREVfSURTID0gKG5vZGVJZDogc3RyaW5nKTogTWF5YmVQcm9taXNlPHN0cmluZ1tdIHwgdW5kZWZpbmVkPiA9PiB1bmRlZmluZWQ7XG5cbiAgICBwdWJsaWMgc3RhdGljIFdJUkVfV0FSTl9USU1FID0gMTAwO1xuXG4gICAgLy8gU2hhcmVkIGFjcm9zcyBjb3BpZXMgb2YgdGhpcyBwYWNrYWdlLCBzbyBvbk1vdW50IGNhbGxiYWNrcyByZWdpc3RlcmVkIHRocm91Z2ggb25lIGNvcHkgc3RpbGxcbiAgICAvLyAgZmlyZSB3aGVuIGFub3RoZXIgY29weSBtb3VudHMuIFNlZSBjcmVhdGVTaW5nbGV0b24uXG4gICAgcHJpdmF0ZSBzdGF0aWMgb25Nb3VudENhbGxiYWNrcyA9IGNyZWF0ZVNpbmdsZXRvbihcIlNvY2tldEZ1bmN0aW9uLm9uTW91bnRDYWxsYmFja3NcIiwgMSwgKCkgPT4gbmV3IE1hcDxzdHJpbmcsICgoKSA9PiBNYXliZVByb21pc2U8dm9pZD4pW10+KCkpLmdldCgpO1xuICAgIC8vIFNoYXJlZCBhY3Jvc3MgY29waWVzIG9mIHRoaXMgcGFja2FnZSwgc28gdGhlIHNldCBvZiBleHBvc2VkIGNsYXNzZXMgaXMgY29uc2lzdGVudCByZWdhcmRsZXNzXG4gICAgLy8gIG9mIHdoaWNoIGNvcHkgYSBjbGFzcyB3YXMgZXhwb3NlZCB0aHJvdWdoLiBTZWUgY3JlYXRlU2luZ2xldG9uLlxuICAgIHByaXZhdGUgc3RhdGljIGV4cG9zZWRDbGFzc2VzU2luZ2xldG9uID0gY3JlYXRlU2luZ2xldG9uKFwiU29ja2V0RnVuY3Rpb24uZXhwb3NlZENsYXNzZXNcIiwgMSwgKCkgPT4gbmV3IFNldDxzdHJpbmc+KCkpO1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0IGV4cG9zZWRDbGFzc2VzKCkgeyByZXR1cm4gU29ja2V0RnVuY3Rpb24uZXhwb3NlZENsYXNzZXNTaW5nbGV0b24uZ2V0KCk7IH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0IGNhbGxlckNvbnRleHQoKTogQ2FsbGVyQ29udGV4dCB8IHVuZGVmaW5lZCB7IHJldHVybiBzb2NrZXRDb250ZXh0LmdldCgpLmNhbGxlcjsgfVxuICAgIHB1YmxpYyBzdGF0aWMgc2V0IGNhbGxlckNvbnRleHQodmFsdWU6IENhbGxlckNvbnRleHQgfCB1bmRlZmluZWQpIHsgc29ja2V0Q29udGV4dC5nZXQoKS5jYWxsZXIgPSB2YWx1ZTsgfVxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0Q2FsbGVyKCk6IENhbGxlckNvbnRleHQge1xuICAgICAgICBjb25zdCBjYWxsZXIgPSBTb2NrZXRGdW5jdGlvbi5jYWxsZXJDb250ZXh0O1xuICAgICAgICBpZiAoIWNhbGxlcikgdGhyb3cgbmV3IEVycm9yKGBUcmllZCB0byBhY2Nlc3MgY2FsbGVyIHdoZW4gbm90IGluIHRoZSBzeW5jaHJvbm91cyBwaGFzZSBvZiBhIGZ1bmN0aW9uIGNhbGxgKTtcbiAgICAgICAgcmV0dXJuIGNhbGxlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGhhcnZlc3RGYWlsZWRDYWxsQ291bnQgPSAoKSA9PiBoYXJ2ZXN0RmFpbGVkQ2FsbENvdW50KCk7XG4gICAgcHVibGljIHN0YXRpYyBnZXRQZW5kaW5nQ2FsbENvdW50ID0gKCkgPT4gZ2V0UGVuZGluZ0NhbGxDb3VudCgpO1xuICAgIHB1YmxpYyBzdGF0aWMgaGFydmVzdENhbGxUaW1lcyA9ICgpID0+IGhhcnZlc3RDYWxsVGltZXMoKTtcblxuICAgIC8vIE5PVEU6IFdlIHVzZSBjYWxsYmFja3Mgd2UgZG9uJ3QgcnVuIGludG8gaXNzdWVzIHdpdGggY3ljbGljIGRlcGVuZGVuY2llc1xuICAgIC8vICAoZXgsIHVzaW5nIGEgaG9vayBpbiBhIGNvbnRyb2xsZXIgd2hlcmUgdGhlIGhvb2sgYWxzbyBjYWxscyB0aGUgY29udHJvbGxlcikuXG4gICAgLypcbiAgICAgICAgZXhwb3J0IGNvbnN0IERpc2tMb2dnZXJDb250cm9sbGVyID0gU29ja2V0RnVuY3Rpb24ucmVnaXN0ZXIoXG4gICAgICAgICAgICAvLyBDYW4gYmUgYW55dGhpbmcsIGJ1dCBzaG91bGQgYmUgdW5pcXVlIGFtb25nc3Qgb3RoZXIgY29udHJvbGxlcnMgb24geW91ciBzZXJ2ZXIuXG4gICAgICAgICAgICBcIkRpc2tMb2dnZXJDb250cm9sbGVyLWY3NmE2ZmRmLTNiZDUtNGJkNC1hMTgzLTU1YThiZTBhNWEzMlwiLFxuICAgICAgICAgICAgLy8gQ29udGFpbnMgdGhlIGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSBleHBvc2VkLCB3aGljaCBtdXN0IGFsbCBiZSBhc3luYy5cbiAgICAgICAgICAgIC8vICBPbmx5IHRob3NlIGxpc3RlZCBiZWxvdyB3aWxsIGJlIGV4cG9zZWQuXG4gICAgICAgICAgICBuZXcgRGlza0xvZ2dlckNvbnRyb2xsZXJCYXNlKCksXG4gICAgICAgICAgICAoKSA9PiAoe1xuICAgICAgICAgICAgICAgIC8vIE9ubHkgZnVuY3Rpb25zIGxpc3RlZCBoZXJlIHdpbGwgYmUgZXhwb3NlZFxuICAgICAgICAgICAgICAgIGdldFJlbW90ZUxvZ0ZpbGVzOiB7fSxcbiAgICAgICAgICAgICAgICBnZXRSZW1vdGVMb2dCdWZmZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgY29tcHJlc3M6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIC8vIFNvY2tldEZ1bmN0aW9uQ2xpZW50SG9va1tdXG4gICAgICAgICAgICAgICAgICAgIGNsaWVudEhvb2tzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAoeCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIG92ZXJyaWRlUmVzdWx0IGlzIHNldCwgaXQgc2tpcHMgdGhlIGNhbGwgYW5kIHJldHVybnMgb3ZlcnJpZGVSZXN1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4Lm92ZXJyaWRlUmVzdWx0ID0gQnVmZmVyLmZyb20oLi4uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICgpID0+ICh7XG4gICAgICAgICAgICAgICAgLy8gRGVmYXVsdCBob29rcyBmb3IgYWxsIGZ1bmN0aW9uc1xuICAgICAgICAgICAgICAgIC8vIFNvY2tldEZ1bmN0aW9uSG9va1tdXG4gICAgICAgICAgICAgICAgaG9va3M6IFthc3NlcnRJc01hbmFnZW1lbnRVc2VyXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIEFkZGl0aW9uYWx5IGZsYWdzXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIHJlZ2lzdGVyPFxuICAgICAgICBDbGFzc0luc3RhbmNlIGV4dGVuZHMgb2JqZWN0LFxuICAgICAgICBTaGFwZSBleHRlbmRzIFNvY2tldEV4cG9zZWRTaGFwZTx7XG4gICAgICAgICAgICBba2V5IGluIGtleW9mIENsYXNzSW5zdGFuY2VdOiAoLi4uYXJnczogYW55W10pID0+IFByb21pc2U8dW5rbm93bj47XG4gICAgICAgIH0+LFxuICAgICAgICBTdGF0aWNzXG4gICAgPihcbiAgICAgICAgY2xhc3NHdWlkOiBzdHJpbmcsXG4gICAgICAgIGluc3RhbmNlOiBDbGFzc0luc3RhbmNlIHwgKCgpID0+IENsYXNzSW5zdGFuY2UpLFxuICAgICAgICBzaGFwZUZuYzogKCkgPT4gU2hhcGUsXG4gICAgICAgIGRlZmF1bHRIb29rc0ZuYz86ICgpID0+IFNvY2tldEV4cG9zZWRTaGFwZVtcIlwiXSAmIHtcbiAgICAgICAgICAgIG9uTW91bnQ/OiAoKSA9PiBNYXliZVByb21pc2U8dm9pZD47XG4gICAgICAgIH0sXG4gICAgICAgIGNvbmZpZz86IHtcbiAgICAgICAgICAgIC8qKiBAbm9BdXRvRXhwb3NlIElmIHRydWUgU29ja2V0RnVuY3Rpb24uZXhwb3NlKENvbnRyb2xsZXIpIG11c3QgYmUgY2FsbGVkIGV4cGxpY2l0bHkuICovXG4gICAgICAgICAgICBub0F1dG9FeHBvc2U/OiBib29sZWFuO1xuICAgICAgICAgICAgc3RhdGljcz86IFN0YXRpY3M7XG4gICAgICAgICAgICAvKiogU2tpcCB0aW1pbmcgZnVuY3Rpb25zIGNhbGxzLiBVc2VmdWwgaWYgYSBsb3Qgb2YgZnVuY3Rpb25zIGhhdmUgd2FpdCB0aW1lIHRoYXRcbiAgICAgICAgICAgICAgICAgICAgaXMgdW5yZWxhdGVkIHRvIHByb2Nlc3NpbmcsIGFuZCB0aGVyZWZvcmUgdGhlaXIgdGltaW5ncyB3b24ndCBiZSB1c2VmdWwuXG4gICAgICAgICAgICAgICAgICAgIC0gQWxzbyB1c2VmdWwgaWYgb3VyIGF1dG8gZnVuY3Rpb24gd3JhcHBpbmcgY29kZSBpcyBicmVha2luZyBmdW5jdGlvbmFsaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VjaCBhcyBpZiB5b3UgaGF2ZSBhIHNpbmdsZXRvbiBmdW5jdGlvbiB3aGljaCB5b3UgY29tcGFyZSB3aXRoID09PSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIHdpbGwgYnJlYWtzIGJlY2F1c2Ugd2UgcmVwbGFjZWQgaXQgd2l0aCBhIHdyYXBwZWQgbWVhc3VyZSBmdW5jdGlvbi5cbiAgICAgICAgICAgICovXG4gICAgICAgICAgICBub0Z1bmN0aW9uTWVhc3VyZT86IGJvb2xlYW47XG4gICAgICAgIH1cbiAgICApOiBTb2NrZXRSZWdpc3RlcmVkPEV4dHJhY3RTaGFwZTxDbGFzc0luc3RhbmNlLCBTaGFwZT4+ICYgU3RhdGljcyB7XG4gICAgICAgIGxldCBpbnN0YW5jZUZuYyA9IGxhenkodHlwZW9mIGluc3RhbmNlID09PSBcImZ1bmN0aW9uXCIgPyBpbnN0YW5jZSA6ICgpID0+IGluc3RhbmNlKTtcbiAgICAgICAgdm9pZCBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGxldCBvbk1vdW50ID0gZ2V0RGVmYXVsdEhvb2tzPy4oKS5vbk1vdW50O1xuICAgICAgICAgICAgaWYgKG9uTW91bnQpIHtcbiAgICAgICAgICAgICAgICBsZXQgY2FsbGJhY2tzID0gU29ja2V0RnVuY3Rpb24ub25Nb3VudENhbGxiYWNrcy5nZXQoY2xhc3NHdWlkKTtcbiAgICAgICAgICAgICAgICBpZiAoIWNhbGxiYWNrcykge1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFja3MgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgU29ja2V0RnVuY3Rpb24ub25Nb3VudENhbGxiYWNrcy5zZXQoY2xhc3NHdWlkLCBjYWxsYmFja3MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYWxsYmFja3MucHVzaChvbk1vdW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGV0IGdldERlZmF1bHRIb29rcyA9IGRlZmF1bHRIb29rc0ZuYyAmJiBsYXp5KGRlZmF1bHRIb29rc0ZuYyk7XG4gICAgICAgIGNvbnN0IGdldFNoYXBlID0gbGF6eSgoKSA9PiB7XG4gICAgICAgICAgICBsZXQgc2hhcGUgPSBzaGFwZUZuYygpIGFzIFNvY2tldEV4cG9zZWRTaGFwZTtcbiAgICAgICAgICAgIGxldCBkZWZhdWx0SG9va3MgPSBnZXREZWZhdWx0SG9va3M/LigpO1xuXG4gICAgICAgICAgICBmb3IgKGxldCB2YWx1ZSBvZiBPYmplY3QudmFsdWVzKHNoYXBlKSkge1xuICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGlmICghdmFsdWUubm9DbGllbnRIb29rcykge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZS5jbGllbnRIb29rcyA9IFsuLi4oZGVmYXVsdEhvb2tzPy5jbGllbnRIb29rcyB8fCBbXSksIC4uLih2YWx1ZS5jbGllbnRIb29rcyB8fCBbXSldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodmFsdWUubm9EZWZhdWx0SG9va3MpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUuaG9va3MgPSBbLi4uKHZhbHVlLmhvb2tzIHx8IFtdKV07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUuaG9va3MgPSBbLi4uKGRlZmF1bHRIb29rcz8uaG9va3MgfHwgW10pLCAuLi4odmFsdWUuaG9va3MgfHwgW10pXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFsdWUuZGF0YUltbXV0YWJsZSA9IGRlZmF1bHRIb29rcz8uZGF0YUltbXV0YWJsZSA/PyB2YWx1ZS5kYXRhSW1tdXRhYmxlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNoYXBlIGFzIGFueSBhcyBTb2NrZXRFeHBvc2VkU2hhcGU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFdhaXQsIHNvIGFueSBjb25zdGFudHMgcmVmZXJlbmNlZCBieSB0aGUgYmFzZSBzaGFwZUZuYyB3aWxsIGJlIGZ1bGx5IHJlc29sdmVkXG4gICAgICAgIC8vICBieSBub3cuIFRoaXMgaXMgSU1QT1JUQU5ULCBhcyBpdCBhbGxvd3MgcGVybWlzc2lvbnMgZnVuY3Rpb25zIHRvIGJlIG1vdmVkXG4gICAgICAgIC8vICB0byBhIGNvbW1vbiBtb2R1bGUsIGluc3RlYWQgb2YgYWxsIGJlaW5nIGlubGluZS5cbiAgICAgICAgdm9pZCBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHJlZ2lzdGVyQ2xhc3MoY2xhc3NHdWlkLCBpbnN0YW5jZUZuYygpIGFzIFNvY2tldEV4cG9zZWRJbnRlcmZhY2UsIGdldFNoYXBlKCksIHtcbiAgICAgICAgICAgICAgICBub0Z1bmN0aW9uTWVhc3VyZTogY29uZmlnPy5ub0Z1bmN0aW9uTWVhc3VyZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBsZXQgc29ja2V0Q2FsbGVyID0gU29ja2V0RnVuY3Rpb24ucmVoeWRyYXRlU29ja2V0Q2FsbGVyKHtcbiAgICAgICAgICAgIF9jbGFzc0d1aWQ6IGNsYXNzR3VpZCxcbiAgICAgICAgICAgIF9pbnRlcm5hbFR5cGU6IG51bGwgYXMgYW55LFxuICAgICAgICB9LCBnZXRTaGFwZSk7XG5cbiAgICAgICAgaWYgKCFjb25maWc/Lm5vQXV0b0V4cG9zZSkge1xuICAgICAgICAgICAgdGhpcy5leHBvc2Uoc29ja2V0Q2FsbGVyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihzb2NrZXRDYWxsZXIsIGNvbmZpZz8uc3RhdGljcykgYXMgYW55O1xuICAgIH1cblxuICAgIC8vIFNoYXJlZCBhY3Jvc3MgY29waWVzIG9mIHRoaXMgcGFja2FnZSwgc28gYSBnaXZlbiBjbGFzc0d1aWQgcmVzb2x2ZXMgdG8gb25lIGNhbm9uaWNhbCBjYWxsZXJcbiAgICAvLyAgcmVnYXJkbGVzcyBvZiB3aGljaCBjb3B5IHJlaHlkcmF0ZWQgaXQuIFNlZSBjcmVhdGVTaW5nbGV0b24uXG4gICAgcHJpdmF0ZSBzdGF0aWMgc29ja2V0Q2FjaGUgPSBjcmVhdGVTaW5nbGV0b24oXCJTb2NrZXRGdW5jdGlvbi5zb2NrZXRDYWNoZVwiLCAxLCAoKSA9PiBuZXcgTWFwPHN0cmluZywgU29ja2V0UmVnaXN0ZXJlZD4oKSkuZ2V0KCk7XG4gICAgcHVibGljIHN0YXRpYyByZWh5ZHJhdGVTb2NrZXRDYWxsZXI8Q29udHJvbGxlcj4oXG4gICAgICAgIHNvY2tldFJlZ2lzdGVyZWQ6IFNvY2tldFJlZ2lzdGVyVHlwZTxDb250cm9sbGVyPixcbiAgICAgICAgLy8gU2hhcGUgaXMgcmVxdWlyZWQgZm9yIGNsaWVudCBob29rcy5cbiAgICAgICAgc2hhcGVGbmM/OiAoKSA9PiBTb2NrZXRFeHBvc2VkU2hhcGUsXG4gICAgKTogU29ja2V0UmVnaXN0ZXJlZDxDb250cm9sbGVyPiB7XG4gICAgICAgIGxldCBjYWNoZWQgPSB0aGlzLnNvY2tldENhY2hlLmdldChzb2NrZXRSZWdpc3RlcmVkLl9jbGFzc0d1aWQpO1xuICAgICAgICBpZiAoIWNhY2hlZCkge1xuICAgICAgICAgICAgbGV0IGdldFNoYXBlID0gbGF6eSgoKSA9PiBzaGFwZUZuYz8uKCkpO1xuICAgICAgICAgICAgbGV0IGNsYXNzR3VpZCA9IHNvY2tldFJlZ2lzdGVyZWQuX2NsYXNzR3VpZDtcbiAgICAgICAgICAgIGxldCBub2RlUHJveHkgPSBnZXRDYWxsUHJveHkoY2xhc3NHdWlkLCBhc3luYyAoY2FsbCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCBTb2NrZXRGdW5jdGlvbi5jYWxsRnJvbUd1aWQoY2FsbCwgY2xhc3NHdWlkLCBnZXRTaGFwZSgpKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjYWNoZWQgPSB7XG4gICAgICAgICAgICAgICAgbm9kZXM6IG5vZGVQcm94eSxcbiAgICAgICAgICAgICAgICBfY2xhc3NHdWlkOiBjbGFzc0d1aWQsXG4gICAgICAgICAgICAgICAgX2ludGVybmFsVHlwZTogbnVsbCBhcyBhbnksXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLnNvY2tldENhY2hlLnNldChjbGFzc0d1aWQsIGNhY2hlZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNhY2hlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBhc3luYyBjYWxsRnJvbUd1aWQ8Rm5jVCBleHRlbmRzIEZuY1R5cGU+KFxuICAgICAgICBjYWxsOiBGdWxsQ2FsbFR5cGU8Rm5jVD4sXG4gICAgICAgIGNsYXNzR3VpZDogc3RyaW5nLFxuICAgICAgICBzaGFwZT86IFNvY2tldEV4cG9zZWRTaGFwZSxcbiAgICApOiBQcm9taXNlPFJldHVyblR5cGU8Rm5jVHlwZT4+IHtcbiAgICAgICAgbGV0IG5vZGVJZCA9IGNhbGwubm9kZUlkO1xuICAgICAgICBsZXQgZnVuY3Rpb25OYW1lID0gY2FsbC5mdW5jdGlvbk5hbWU7XG4gICAgICAgIGxldCB0aW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgaWYgKFNvY2tldEZ1bmN0aW9uLmxvZ01lc3NhZ2VzKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgU1RBUlRcXHRcXHRcXHQke2NsYXNzR3VpZH0uJHtmdW5jdGlvbk5hbWV9IGF0ICR7RGF0ZS5ub3coKX1gKTtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGV0IGNhbGxGYWN0b3J5ID0gYXdhaXQgZ2V0Q3JlYXRlQ2FsbEZhY3Rvcnkobm9kZUlkKTtcblxuICAgICAgICAgICAgbGV0IHNoYXBlT2JqID0gc2hhcGU/LltmdW5jdGlvbk5hbWVdO1xuICAgICAgICAgICAgaWYgKCFzaGFwZU9iaikge1xuICAgICAgICAgICAgICAgIHNoYXBlT2JqID0ge307XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBOT1RFOiBBY3R1YWxseS4uLiB0aGlzIGp1c3QgbWVhbnMgdGhlIGNsaWVudCBkb2Vzbid0IGhhdmUgYSBkZWZpbml0aW9uIGZvciBpdC4gVGhlIHNlcnZlclxuICAgICAgICAgICAgLy8gIG1pZ2h0LCBzbyBjYWxsIGl0LCBhbmQgbGV0IHRoZW0gdGhyb3cgaWYgaXQgaXMgdW5yZWNvZ25pemVkLlxuICAgICAgICAgICAgLy8gaWYgKCFzaGFwZU9iaikge1xuICAgICAgICAgICAgLy8gICAgIHRocm93IG5ldyBFcnJvcihgRnVuY3Rpb24gJHtmdW5jdGlvbk5hbWV9IGlzIG5vdCBpbiBzaGFwZWApO1xuICAgICAgICAgICAgLy8gfVxuXG4gICAgICAgICAgICBsZXQgaG9va1Jlc3VsdCA9IGF3YWl0IHJ1bkNsaWVudEhvb2tzKGNhbGwsIHNoYXBlT2JqIGFzIEV4Y2x1ZGU8U29ja2V0RXhwb3NlZFNoYXBlW1wiXCJdLCB1bmRlZmluZWQ+LCBjYWxsRmFjdG9yeS5jb25uZWN0aW9uSWQpO1xuXG4gICAgICAgICAgICBpZiAoXCJvdmVycmlkZVJlc3VsdFwiIGluIGhvb2tSZXN1bHQpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBjYWxsYmFjayBvZiBob29rUmVzdWx0Lm9uUmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGNhbGxiYWNrKGhvb2tSZXN1bHQub3ZlcnJpZGVSZXN1bHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoXCJvdmVycmlkZVJlc3VsdFwiIGluIGhvb2tSZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhvb2tSZXN1bHQub3ZlcnJpZGVSZXN1bHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEZhY3RvcnkucGVyZm9ybUNhbGwoY2FsbCk7XG4gICAgICAgICAgICBmb3IgKGxldCBjYWxsYmFjayBvZiBob29rUmVzdWx0Lm9uUmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgY2FsbGJhY2socmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChcIm92ZXJyaWRlUmVzdWx0XCIgaW4gaG9va1Jlc3VsdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBob29rUmVzdWx0Lm92ZXJyaWRlUmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRpbWUgPSBEYXRlLm5vdygpIC0gdGltZTtcbiAgICAgICAgICAgIGlmIChTb2NrZXRGdW5jdGlvbi5sb2dNZXNzYWdlcykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBGSU5JU0hFRFxcdCR7dGltZX1tc1xcdCR7Y2xhc3NHdWlkfS4ke2Z1bmN0aW9uTmFtZX0gYXQgJHtEYXRlLm5vdygpfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFdpbGwgZGVkdXBlIGNhbGxiYWNrcywgc28gaWYgeW91IGNhbGwgd2l0aCB0aGUgc2FtZSBjYWxsYmFjayBpdCB3b24ndCBjYWxsIGl0IG11bHRpcGxlIHRpbWVzIChvdGhlcndpc2UgaXQncyBkaWZmaWN1bHQgdG8gbWFuYWdlIHRoaXMsIGFzIHRoaXMgb25seSBjYWxscyBvbiB0aGUgTkVYVCBjYWxsYmFjaykuXG4gICAgICAgIElNUE9SVEFOVCEgQ2xpZW50IG5vZGUgaWRzIHdpbGwgTkVWRVIgcmVjb25uZWN0LCBzbyB0aGlzIGNhbiBmdWxsIGNsZWFudXAuIEhvd2V2ZXIgZnVsbCBub2RlSWRzIG1pZ2h0IGlmIHdlIHRyeSB0byB1c2UgdGhhdCBub2RlSWQgYWdhaW4sIHNvIHRoaXMgY2Fubm90IGZ1bGx5IGNsZWFuIHRoZW0gdXAuXG4gICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIG9uTmV4dERpc2Nvbm5lY3QoXG4gICAgICAgIG5vZGVJZDogc3RyaW5nLFxuICAgICAgICBjYWxsYmFjazogKCkgPT4gdm9pZCxcbiAgICAgICAgLy8gTk9URTogSXQncyBpbXBvcnRhbnQgdG8ga25vdyB0aGF0IHVubGlrZSBjbGllbnQgaWRzLCBzZXJ2ZXIgaWRzIChhIG5vZGVJZCBZT1UgY29ubmVjdCB0bywgaW5zdGVhZCBvZiBjb25uZWN0aW5nIHRvIHlvdSksIG1pZ2h0IGJlIGFsaXZlIGFnYWluLCBhbmQgc28geW91IG5lZWQgc29tZSBraW5kIG9mIGxvZ2ljIHRvIHRyeSBpdCBhZ2FpbiBvciBpbiBzb21lIHdheSByZWNvbm5lY3QuIEZvciBjbGllbnRzIHlvdSBkb24ndCBuZWVkIHRvLCBhcyBpdCdzIHRoZWlyIGpvYiB0byByZWNvbm5lY3QgdG8geW91LCBhbmQgdGhleSB3aWxsIHJlY29ubmVjdCB3aXRoIGEgTkVXIG5vZGVJZC5cbiAgICAgICAgbm9TZXJ2ZXJOb2RlSWRXYXJuaW5nPzogXCJpS25vd1RoYXRTZXJ2ZXJOb2RlSWRzTWF5UmVjb25uZWN0X2FuZElIYW5kbGVSZWNvbm5lY3Rpb25zXCJcbiAgICApIHtcbiAgICAgICAgaWYgKCFpc0NsaWVudE5vZGVJZChub2RlSWQpICYmICFub1NlcnZlck5vZGVJZFdhcm5pbmcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFdhdGNoaW5nIGZvciBkaXNjb25uZWN0aW9ucyBvZiAke25vZGVJZH0uIFRoaXMgaXMgYSBzZXJ2ZXIgbm9kZUlkIGFuZCBtYXkgYmUgYWxpdmUgYWdhaW4gYWZ0ZXIgZGlzY29ubmVjdGlvbi4gUGxlYXNlIHNldCB0aGUgbm9TZXJ2ZXJOb2RlSWRXYXJuaW5nIGZsYWcgaW4gdGhpcyBhcmd1bWVudCB0byBjb25maXJtIHlvdSBhcmUgaGFuZGxpbmcgcmVjb25uZWN0aW5nIGlmIHRoZSBzZXJ2ZXIgYmVjb21lcyBhdmFpbGFibGUgYWdhaW4uYCk7XG4gICAgICAgIH1cbiAgICAgICAgKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGxldCBmYWN0b3J5ID0gYXdhaXQgZ2V0Q2FsbEZhY3Rvcnkobm9kZUlkKTtcbiAgICAgICAgICAgIGlmICghZmFjdG9yeSkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzA7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBkZWxheSgxMDAwKTtcbiAgICAgICAgICAgICAgICAgICAgZmFjdG9yeSA9IGF3YWl0IGdldENhbGxGYWN0b3J5KG5vZGVJZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmYWN0b3J5KSBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFmYWN0b3J5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBnZXQgY2FsbCBmYWN0b3J5IGZvciAke25vZGVJZH0gYWZ0ZXIgMzAgc2Vjb25kcywgZ2l2aW5nIHVwLmApO1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmYWN0b3J5Lm9uTmV4dERpc2Nvbm5lY3QoY2FsbGJhY2spO1xuICAgICAgICB9KSgpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwdWJsaWMgc3RhdGljIGdldExhc3REaXNjb25uZWN0VGltZShub2RlSWQ6IHN0cmluZyk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBmYWN0b3J5ID0gZ2V0Q2FsbEZhY3Rvcnkobm9kZUlkKTtcbiAgICAgICAgaWYgKCFmYWN0b3J5KSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmYWN0b3J5IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFjdG9yeS5sYXN0Q2xvc2VkO1xuICAgIH1cbiAgICBwdWJsaWMgc3RhdGljIGlzTm9kZUNvbm5lY3RlZChub2RlSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgZmFjdG9yeSA9IGdldENhbGxGYWN0b3J5KG5vZGVJZCk7XG4gICAgICAgIGlmICghZmFjdG9yeSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmYWN0b3J5IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhIWZhY3RvcnkuaXNDb25uZWN0ZWQ7XG4gICAgfVxuXG4gICAgLyoqIE5PVEU6IE9ubHkgd29ya3MgaWYgdGhlIG5vZGVJcyB1c2VkIGlzIGZyb20gU29ja2V0RnVuY3Rpb24uY29ubmVjdCAod2UgY2FuJ3QgY29udmVydCBhcmJpdHJhcnkgbm9kZUlkcyBpbnRvIHVybHMsXG4gICAgICogICAgICBhcyB3ZSBoYXZlIG5vIHdheSBvZiBrbm93aW5nIGhvdyB0byBjb250YWluIGEgbm9kZUlkKS5cbiAgICAgKiAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldEhUVFBDYWxsTGluayhjYWxsOiBGdWxsQ2FsbFR5cGUpOiBzdHJpbmcge1xuICAgICAgICBsZXQgbG9jYXRpb24gPSBnZXROb2RlSWRMb2NhdGlvbihjYWxsLm5vZGVJZCk7XG4gICAgICAgIGlmICghbG9jYXRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgY2FsbCBsb2NhdGlvbiBmb3Igbm9kZUlkLCBhbmQgc28gZG8gbm90IGtub3cgd2hlcmUgY2FsbCBsb2NhdGlvbiBpcy4gTm9kZUlkICR7Y2FsbC5ub2RlSWR9YCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHVybCA9IG5ldyBVUkwoYGh0dHBzOi8vJHtsb2NhdGlvbi5hZGRyZXNzfToke2xvY2F0aW9uLnBvcnR9YCk7XG4gICAgICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KFwiY2xhc3NHdWlkXCIsIGNhbGwuY2xhc3NHdWlkKTtcbiAgICAgICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoXCJmdW5jdGlvbk5hbWVcIiwgY2FsbC5mdW5jdGlvbk5hbWUpO1xuICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldChcImFyZ3NcIiwgSlNPTi5zdHJpbmdpZnkoY2FsbC5hcmdzKSk7XG4gICAgICAgIHJldHVybiB1cmwudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICAvLyBTaGFyZWQgYWNyb3NzIGNvcGllcyBvZiB0aGlzIHBhY2thZ2UsIHNvIHN1cHByZXNzaW5nIGV4cG9zZSBjYWxscyBpbiBvbmUgY29weSBhbHNvIHN1cHByZXNzZXNcbiAgICAvLyAgdGhlbSBpbiB0aGUgb3RoZXJzLiBTZWUgY3JlYXRlU2luZ2xldG9uLlxuICAgIHByaXZhdGUgc3RhdGljIGlnbm9yZUV4cG9zZUNvdW50ID0gY3JlYXRlU2luZ2xldG9uKFwiU29ja2V0RnVuY3Rpb24uaWdub3JlRXhwb3NlQ291bnRcIiwgMSwgKCkgPT4gKHsgY291bnQ6IDAgfSkpO1xuICAgIHB1YmxpYyBzdGF0aWMgYXN5bmMgaWdub3JlRXhwb3NlQ2FsbHM8VD4oY29kZTogKCkgPT4gUHJvbWlzZTxUPikge1xuICAgICAgICBTb2NrZXRGdW5jdGlvbi5pZ25vcmVFeHBvc2VDb3VudC5nZXQoKS5jb3VudCsrO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGNvZGUoKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIFNvY2tldEZ1bmN0aW9uLmlnbm9yZUV4cG9zZUNvdW50LmdldCgpLmNvdW50LS07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogRXhwb3NlIHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlIHlvdXIgbW91bnRpbmcgb2NjdXJzLiBJdCBtb3N0bHkganVzdCBleGlzdHMgdG8gZW5zdXJlIHlvdSBpbmNsdWRlIHRoZSBjbGFzcyB0eXBlLFxuICAgICAqICAgICAgc28gdGhlIGNsYXNzIHR5cGUncyBtb2R1bGUgY29uc3RydWN0aW9uIHJ1bnMsIHdoaWNoIHNob3VsZCB0cmlnZ2VyIHJlZ2lzdGVyLiBPdGhlcndpc2UgeW91IHdvdWxkIGhhdmVcbiAgICAgKiAgICAgIHRvIGFkZCBhZGRpdGlvbmFsIGltcG9ydHMgdG8gZW5zdXJlIHRoZSByZWdpc3RlciBjYWxsIHJ1bnMuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBleHBvc2Uoc29ja2V0UmVnaXN0ZXJlZDogU29ja2V0UmVnaXN0ZXJlZCkge1xuICAgICAgICBpZiAoU29ja2V0RnVuY3Rpb24uaWdub3JlRXhwb3NlQ291bnQuZ2V0KCkuY291bnQgPiAwKSByZXR1cm47XG4gICAgICAgIGlmICghc29ja2V0UmVnaXN0ZXJlZC5fY2xhc3NHdWlkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTb2NrZXRGdW5jdGlvbi5leHBvc2UgbXVzdCBiZSBjYWxsZWQgd2l0aCBhIGNsYXNzR3VpZFwiKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmxvZyhgRXhwb3NpbmcgQ29udHJvbGxlciAke2JsdWUoc29ja2V0UmVnaXN0ZXJlZC5fY2xhc3NHdWlkKX1gKTtcbiAgICAgICAgZXhwb3NlQ2xhc3Moc29ja2V0UmVnaXN0ZXJlZCk7XG4gICAgICAgIHRoaXMuZXhwb3NlZENsYXNzZXMuYWRkKHNvY2tldFJlZ2lzdGVyZWQuX2NsYXNzR3VpZCk7XG5cbiAgICAgICAgaWYgKFNvY2tldEZ1bmN0aW9uLm1vdW50U3RhdGUuZ2V0KCkuaGFzTW91bnRlZCkge1xuICAgICAgICAgICAgbGV0IG1vdW50Q2FsbGJhY2tzID0gU29ja2V0RnVuY3Rpb24ub25Nb3VudENhbGxiYWNrcy5nZXQoc29ja2V0UmVnaXN0ZXJlZC5fY2xhc3NHdWlkKTtcbiAgICAgICAgICAgIGZvciAobGV0IG9uTW91bnQgb2YgbW91bnRDYWxsYmFja3MgfHwgW10pIHtcbiAgICAgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUob25Nb3VudCgpKS5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGluIG9uTW91bnQgY2FsbGJhY2sgZXhwb3NlZCBhZnRlciBtb3VudFwiLCBlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFsbCBtb3VudCBzdGF0ZSBpcyBzaGFyZWQgYWNyb3NzIGNvcGllcyBvZiB0aGlzIHBhY2thZ2UsIHNvIGEgc2Vjb25kIG1vdW50IChldmVuIGZyb20gYVxuICAgIC8vICBkaWZmZXJlbnQgY29weSkgaXMgcmVqZWN0ZWQsIGFuZCBvbk1vdW50L21vdW50UHJvbWlzZSBvYnNlcnZlcnMgZmlyZSBvbmNlIGFjcm9zcyB0aGVtIGFsbC5cbiAgICAvLyAgU2VlIGNyZWF0ZVNpbmdsZXRvbi5cbiAgICBwcml2YXRlIHN0YXRpYyBtb3VudFN0YXRlID0gY3JlYXRlU2luZ2xldG9uKFwiU29ja2V0RnVuY3Rpb24ubW91bnRTdGF0ZVwiLCAxLCAoKSA9PiB7XG4gICAgICAgIGxldCBtb3VudFJlc29sdmUhOiAoKSA9PiB2b2lkO1xuICAgICAgICBsZXQgbW91bnRQcm9taXNlID0gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiBtb3VudFJlc29sdmUgPSByZXNvbHZlKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhhc01vdW50ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgbW91bnRlZE5vZGVJZDogXCJcIixcbiAgICAgICAgICAgIG1vdW50ZWRJUDogXCJcIixcbiAgICAgICAgICAgIG1vdW50UmVzb2x2ZSxcbiAgICAgICAgICAgIG1vdW50UHJvbWlzZSxcbiAgICAgICAgfTtcbiAgICB9KTtcbiAgICBwdWJsaWMgc3RhdGljIGdldCBtb3VudGVkTm9kZUlkKCkgeyByZXR1cm4gU29ja2V0RnVuY3Rpb24ubW91bnRTdGF0ZS5nZXQoKS5tb3VudGVkTm9kZUlkOyB9XG4gICAgcHVibGljIHN0YXRpYyBzZXQgbW91bnRlZE5vZGVJZCh2YWx1ZTogc3RyaW5nKSB7IFNvY2tldEZ1bmN0aW9uLm1vdW50U3RhdGUuZ2V0KCkubW91bnRlZE5vZGVJZCA9IHZhbHVlOyB9XG4gICAgcHVibGljIHN0YXRpYyBpc01vdW50ZWQoKSB7IHJldHVybiAhIXRoaXMubW91bnRlZE5vZGVJZDsgfVxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0IG1vdW50ZWRJUCgpIHsgcmV0dXJuIFNvY2tldEZ1bmN0aW9uLm1vdW50U3RhdGUuZ2V0KCkubW91bnRlZElQOyB9XG4gICAgcHVibGljIHN0YXRpYyBzZXQgbW91bnRlZElQKHZhbHVlOiBzdHJpbmcpIHsgU29ja2V0RnVuY3Rpb24ubW91bnRTdGF0ZS5nZXQoKS5tb3VudGVkSVAgPSB2YWx1ZTsgfVxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0IG1vdW50UHJvbWlzZSgpIHsgcmV0dXJuIFNvY2tldEZ1bmN0aW9uLm1vdW50U3RhdGUuZ2V0KCkubW91bnRQcm9taXNlOyB9XG4gICAgcHVibGljIHN0YXRpYyBhc3luYyBtb3VudChjb25maWc6IFNvY2tldFNlcnZlckNvbmZpZykge1xuICAgICAgICBpZiAodGhpcy5tb3VudGVkTm9kZUlkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTb2NrZXRGdW5jdGlvbiBhbHJlYWR5IG1vdW50ZWQsIG1vdW50aW5nIHR3aWNlIGluIG9uZSB0aHJlYWQgaXMgbm90IGFsbG93ZWQuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5tb3VudGVkSVAgPSBjb25maWcucHVibGljID8gXCIwLjAuMC4wXCIgOiBcIjEyNy4wLjAuMVwiO1xuICAgICAgICBpZiAoY29uZmlnLmlwKSB7XG4gICAgICAgICAgICB0aGlzLm1vdW50ZWRJUCA9IGNvbmZpZy5pcDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgd2FpdEZvckZpcnN0VGltZVN5bmMsIHNoaW1EYXRlTm93IH0gPSBhd2FpdCBpbXBvcnQoXCIuL3RpbWUvdHJ1ZVRpbWVTaGltXCIpO1xuICAgICAgICBzaGltRGF0ZU5vdygpO1xuICAgICAgICBhd2FpdCB3YWl0Rm9yRmlyc3RUaW1lU3luYygpO1xuXG4gICAgICAgIC8vIFdhaXQgZm9yIGFueSBhZGRpdGlvbmFscyBmdW5jdGlvbnMgdG8gZXhwb3NlIHRoZW1zZWx2ZXNcbiAgICAgICAgYXdhaXQgZGVsYXkoXCJpbW1lZGlhdGVcIik7XG5cbiAgICAgICAgdGhpcy5tb3VudGVkTm9kZUlkID0gYXdhaXQgc3RhcnRTb2NrZXRTZXJ2ZXIoY29uZmlnKTtcbiAgICAgICAgU29ja2V0RnVuY3Rpb24ubW91bnRTdGF0ZS5nZXQoKS5oYXNNb3VudGVkID0gdHJ1ZTtcbiAgICAgICAgZm9yIChsZXQgY2xhc3NHdWlkIG9mIFNvY2tldEZ1bmN0aW9uLmV4cG9zZWRDbGFzc2VzKSB7XG4gICAgICAgICAgICBsZXQgY2FsbGJhY2tzID0gU29ja2V0RnVuY3Rpb24ub25Nb3VudENhbGxiYWNrcy5nZXQoY2xhc3NHdWlkKTtcbiAgICAgICAgICAgIGlmICghY2FsbGJhY2tzKSBjb250aW51ZTtcbiAgICAgICAgICAgIGZvciAobGV0IGNhbGxiYWNrIG9mIGNhbGxiYWNrcykge1xuICAgICAgICAgICAgICAgIGF3YWl0IGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgU29ja2V0RnVuY3Rpb24ubW91bnRTdGF0ZS5nZXQoKS5tb3VudFJlc29sdmUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMubW91bnRlZE5vZGVJZDtcbiAgICB9XG5cbiAgICAvKiogU2V0cyB0aGUgZGVmYXVsdCBjYWxsIHdoZW4gYW4gaHR0cCByZXF1ZXN0IGlzIG1hZGUsIGJ1dCBubyBjbGFzc0d1aWQgaXMgc2V0LlxuICAgICAqICAgICAgTk9URTogQWxsIG90aGVyIGNhbGxzIHNob3VsZCBiZSBlbmRwb2ludCBjYWxscywgZXZlbiBpZiB0aG9zZSBlbmRwb2ludHMgcmV0dXJuIGEgc3RhdGljIGZpbGUgd2l0aCBhbiBIVE1MIGNvbnRlbnQgdHlwZS5cbiAgICAgKiAgICAgICAgICAtIEhvd2V2ZXIsIHRvIGxvYWQgbmV3IGNvbnRlbnQsIHlvdSBzaG91bGQgcHJvYmFibHkganVzdCB1c2UgYHJlcXVpcmUoXCIuL2V4YW1wbGUudHNcIilgLCB3aGljaCB3b3JrcyBvbiBhbnkgZmlsZXNcbiAgICAgKiAgICAgICAgICAgICAgY2xpZW50c2lkZSB0aGF0IGhhdmUgYWxzbyBiZWVuIHJlcXVpcmVkIHNlcnZlcnNpZGUgKGFuZCB3aGl0ZWxpc3RlZCB3aXRoIG1vZHVsZS5hbGxvd2NsaWVudCA9IHRydWUsXG4gICAgICogICAgICAgICAgICAgIG9yIHdpdGggYW4gYGFsbG93Y2xpZW50LmZsYWdgIGZpbGUgaW4gdGhlIGRpcmVjdG9yeSBvciBwYXJlbnQgZGlyZWN0b3J5KS5cbiAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgc2V0RGVmYXVsdEhUVFBDYWxsPFxuICAgICAgICBSZWdpc3RlcmVkIGV4dGVuZHMgU29ja2V0UmVnaXN0ZXJlZCxcbiAgICAgICAgRnVuY3Rpb25OYW1lIGV4dGVuZHMga2V5b2YgUmVnaXN0ZXJlZFtcIm5vZGVzXCJdW1wiXCJdICYgc3RyaW5nLFxuICAgID4oXG4gICAgICAgIHJlZ2lzdGVyZWQ6IFJlZ2lzdGVyZWQsXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogRnVuY3Rpb25OYW1lLFxuICAgICAgICAuLi5hcmdzOiBBcmdzPFJlZ2lzdGVyZWRbXCJub2Rlc1wiXVtcIlwiXVtGdW5jdGlvbk5hbWVdPlxuICAgICkge1xuICAgICAgICBzZXREZWZhdWx0SFRUUENhbGwoe1xuICAgICAgICAgICAgY2xhc3NHdWlkOiByZWdpc3RlcmVkLl9jbGFzc0d1aWQsXG4gICAgICAgICAgICBmdW5jdGlvbk5hbWUsXG4gICAgICAgICAgICBhcmdzLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNvbm5lY3QobG9jYXRpb246IHsgYWRkcmVzczogc3RyaW5nLCBwb3J0OiBudW1iZXIgfSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBnZXROb2RlSWQobG9jYXRpb24uYWRkcmVzcywgbG9jYXRpb24ucG9ydCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBicm93c2VyTm9kZUlkKCkge1xuICAgICAgICBpZiAoaXNOb2RlKCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBnZXQgYnJvd3NlciBub2RlSWQgb24gc2VydmVyXCIpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBlZGdlTm9kZSA9IGdldEJvb3RlZEVkZ2VOb2RlKCk7XG4gICAgICAgIGlmIChlZGdlTm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuIGVkZ2VOb2RlLmhvc3Q7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFNvY2tldEZ1bmN0aW9uLmNvbm5lY3QoeyBhZGRyZXNzOiBsb2NhdGlvbi5ob3N0bmFtZSwgcG9ydDogK2xvY2F0aW9uLnBvcnQgfHwgNDQzIH0pO1xuICAgIH1cbiAgICBwdWJsaWMgc3RhdGljIGdldEJyb3dzZXJOb2RlSWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJyb3dzZXJOb2RlSWQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGFkZEdsb2JhbEhvb2soaG9vazogU29ja2V0RnVuY3Rpb25Ib29rKSB7XG4gICAgICAgIHJlZ2lzdGVyR2xvYmFsSG9vayhob29rIGFzIFNvY2tldEZ1bmN0aW9uSG9vayk7XG4gICAgfVxuICAgIHB1YmxpYyBzdGF0aWMgYWRkR2xvYmFsQ2xpZW50SG9vayhob29rOiBTb2NrZXRGdW5jdGlvbkNsaWVudEhvb2spIHtcbiAgICAgICAgcmVnaXN0ZXJHbG9iYWxDbGllbnRIb29rKGhvb2sgYXMgU29ja2V0RnVuY3Rpb25DbGllbnRIb29rKTtcbiAgICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgICB2YXIgQk9PVEVEX0VER0VfTk9ERTogeyBob3N0OiBzdHJpbmcgfSB8IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZ2V0Qm9vdGVkRWRnZU5vZGUoKSB7XG4gICAgcmV0dXJuIEJPT1RFRF9FREdFX05PREUgYXMgeyBob3N0OiBzdHJpbmcgfSB8IHVuZGVmaW5lZDtcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gX3NldFNvY2tldENvbnRleHQ8VD4oXG4gICAgY2FsbGVyOiBDYWxsZXJDb250ZXh0LFxuICAgIGNvZGU6ICgpID0+IFQsXG4pIHtcbiAgICBsZXQgY3R4ID0gc29ja2V0Q29udGV4dC5nZXQoKTtcbiAgICBjdHguc2VxTnVtKys7XG4gICAgbGV0IHNlcU51bSA9IGN0eC5zZXFOdW07XG4gICAgY3R4LmNhbGxlciA9IGNhbGxlcjtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gY29kZSgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChzZXFOdW0gPT09IGN0eC5zZXFOdW0pIHtcbiAgICAgICAgICAgIGN0eC5jYWxsZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG59Il19
|
|
467
|
-
/* _JS_SOURCE_HASH = "
|
|
467
|
+
/* _JS_SOURCE_HASH = "aa2fa6523faf66517093a7dce774ff0ae204bb01091696208383b49c2b987b81"; */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
|
|
1
|
+
"use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
4
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -249,4 +249,4 @@ exports.HotReloadController = SocketFunction_1.SocketFunction.register("HotReloa
|
|
|
249
249
|
noAutoExpose: true,
|
|
250
250
|
});
|
|
251
251
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSG90UmVsb2FkQ29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkhvdFJlbG9hZENvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxrREFBa0Q7QUFDbEQsd0RBQXdEO0FBQ3hELE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0FBRTFCLHNEQUFtRDtBQUNuRCw0Q0FBNkM7QUFDN0MsNERBQXlEO0FBQ3pELHVDQUF5QjtBQUN6QixvREFBNEI7QUFFNUIsc0NBQXFDO0FBQ3JDLDJEQUEyRDtBQUMzRCxxREFBc0Q7QUFFdEQsb0VBQWdFO0FBRWhFOzs7R0FHRztBQUNILFNBQWdCLGdDQUFnQyxDQUFDLHVCQUF1QixHQUFHLEtBQUs7SUFDNUUsK0JBQWMsQ0FBQyxNQUFNLENBQUMsMkJBQW1CLENBQUMsQ0FBQztJQUMzQyxJQUFJLENBQUMsSUFBQSxhQUFNLEdBQUUsRUFBRSxDQUFDO1FBQ1osSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDM0IsMkJBQW1CLENBQUMsS0FBSyxDQUFDLCtCQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7aUJBQ3BELFVBQVUsRUFBRTtpQkFDWixLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ2hEO1FBQ1QsQ0FBQztJQUNMLENBQUM7SUFDRCxXQUFXLENBQUMsR0FBRyxFQUFFO1FBQ2IsS0FBSyxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyxNQUFNO2dCQUFFLFNBQVM7WUFDdEIsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVCLENBQUM7SUFDTCxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDYixDQUFDO0FBaEJELDRF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QUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzRSxDQUFDO29CQUFTLENBQUM7Z0JBQ1AsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDWixtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO2dCQUM1QyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDYixDQUFDO1lBRUQsS0FBSyxJQUFJLFFBQVEsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO2dCQUN0QyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsQ0FBQztZQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBQSxtQkFBTyxFQUFDLHVCQUF1QixJQUFBLG1CQUFVLEVBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7UUFDekcsQ0FBQztRQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7WUFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNsRCxDQUFDO0lBQ0wsQ0FBQztDQUNKO0FBRVksUUFBQSxtQkFBbUIsR0FBRywrQkFBYyxDQUFDLFFBQVEsQ0FDdEQsMERBQTBELEVBQzFELElBQUksdUJBQXVCLEVBQUUsRUFDN0IsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNILFVBQVUsRUFBRSxFQUFFO0lBQ2QsV0FBVyxFQUFFLEVBQUU7Q0FDbEIsQ0FBQyxFQUNGLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFFTixDQUFDLEVBQ0Y7SUFDSSxZQUFZLEVBQUUsSUFBSTtDQUNyQixDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vdHlwZW5vZGUvaW5kZXguZC50c1wiIC8+XG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vcmVxdWlyZS9SZXF1aXJlQ29udHJvbGxlci50c1wiIC8+XG5tb2R1bGUuYWxsb3djbGllbnQgPSB0cnVlO1xuXG5pbXBvcnQgeyBTb2NrZXRGdW5jdGlvbiB9IGZyb20gXCIuLi9Tb2NrZXRGdW5jdGlvblwiO1xuaW1wb3J0IHsgY2FjaGUsIGxhenkgfSBmcm9tIFwiLi4vc3JjL2NhY2hpbmdcIjtcbmltcG9ydCB7IGNyZWF0ZVNpbmdsZXRvbiB9IGZyb20gXCIuLi9zcmMvY3JlYXRlU2luZ2xldG9uXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCBjcnlwdG8gZnJvbSBcImNyeXB0b1wiO1xuaW1wb3J0IGRlYnVnYnJlYWsgZnJvbSBcImRlYnVnYnJlYWtcIjtcbmltcG9ydCB7IGlzTm9kZSB9IGZyb20gXCIuLi9zcmMvbWlzY1wiO1xuaW1wb3J0IHsgbWFnZW50YSwgcmVkIH0gZnJvbSBcIi4uL3NyYy9mb3JtYXR0aW5nL2xvZ0NvbG9yc1wiO1xuaW1wb3J0IHsgZm9ybWF0VGltZSB9IGZyb20gXCIuLi9zcmMvZm9ybWF0dGluZy9mb3JtYXRcIjtcbmltcG9ydCB7IGJhdGNoRnVuY3Rpb24gfSBmcm9tIFwiLi4vc3JjL2JhdGNoaW5nXCI7XG5pbXBvcnQgeyBnZXRJc0FsbG93Q2xpZW50IH0gZnJvbSBcIi4uL3JlcXVpcmUvUmVxdWlyZUNvbnRyb2xsZXJcIjtcblxuLyoqIEVuYWJsZXMgc29tZSBob3QgcmVsb2FkIGZ1bmN0aW9uYWxpdHkuXG4gKiAgICAgIC0gVHJpZ2dlcnMgYSByZWZyZXNoIGNsaWVudHNpZGVcbiAqICAgICAgLSBUcmlnZ2VycyBhIHJlbG9hZCBzZXJ2ZXIsIGZvciBtb2R1bGVzIG1hcmtlZCB3aXRoIGBtb2R1bGUuaG90cmVsb2FkYFxuICovXG5leHBvcnQgZnVuY3Rpb24gd2F0Y2hGaWxlc0FuZFRyaWdnZXJIb3RSZWxvYWRpbmcobm9BdXRvbWF0aWNCcm93c2VyV2F0Y2ggPSBmYWxzZSkge1xuICAgIFNvY2tldEZ1bmN0aW9uLmV4cG9zZShIb3RSZWxvYWRDb250cm9sbGVyKTtcbiAgICBpZiAoIWlzTm9kZSgpKSB7XG4gICAgICAgIGlmICghbm9BdXRvbWF0aWNCcm93c2VyV2F0Y2gpIHtcbiAgICAgICAgICAgIEhvdFJlbG9hZENvbnRyb2xsZXIubm9kZXNbU29ja2V0RnVuY3Rpb24uYnJvd3Nlck5vZGVJZCgpXVxuICAgICAgICAgICAgICAgIC53YXRjaEZpbGVzKClcbiAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiBjb25zb2xlLmVycm9yKFwid2F0Y2hGaWxlcyBlcnJvclwiLCBlKSlcbiAgICAgICAgICAgICAgICA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICBmb3IgKGxldCBtb2R1bGUgb2YgT2JqZWN0LnZhbHVlcyhyZXF1aXJlLmNhY2hlKSkge1xuICAgICAgICAgICAgaWYgKCFtb2R1bGUpIGNvbnRpbnVlO1xuICAgICAgICAgICAgaG90UmVsb2FkTW9kdWxlKG1vZHVsZSk7XG4gICAgICAgIH1cbiAgICB9LCA1MDAwKTtcbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICAgIG5hbWVzcGFjZSBOb2RlSlMge1xuICAgICAgICBpbnRlcmZhY2UgTW9kdWxlIHtcbiAgICAgICAgICAgIC8qKiBDYXVzZXMgdXMgdG8gaG90cmVsb2FkIHRoZSBmaWxlLiBBcHBsaWVzIGJvdGggc2VydmVyc2lkZSBhbmQgY2xpZW50c2lkZS5cbiAgICAgICAgICAgICAqICAgICAgLSBJZiBub3Qgc2V0IGZvciBhbnkgZmlsZXMgY2xpZW50c2lkZSwgd2Ugd2lsbCByZWZyZXNoLlxuICAgICAgICAgICAgICogICAgICAtIElmIG5vdCBzZXQgZm9yIGFueSBmaWxlcyBzZXJ2ZXJzaWRlLCB3ZSB3aWxsIGRvIG5vdGhpbmcgKGFuZCBqdXN0IGxlYXZlIG9sZCBjb2RlIHJ1bm5pbmcpLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBob3RyZWxvYWQ/OiBib29sZWFuO1xuICAgICAgICAgICAgLyoqIE92ZXJyaWRlcyBob3RyZWxvYWQgdG8gZGlzYWJsZSBob3QgcmVsb2FkaW5nLiBVc2VmdWwgaWYgeW91IGFkZCBcImhvdHJlbG9hZC5mbGFnXCIgdG8gYSBkaXJlY3RvcnlcbiAgICAgICAgICAgICAqICAgICAgKHdoaWNoIHNldHMgaG90cmVsb2FkIG9uIGFsbCBmaWxlcyBpbiBhbmQgdW5kZXIgdGhhdCBkaXJlY3RvcnkpLCBidXQgd2FudCBhIHNwZWNpZmljIGZpbGVcbiAgICAgICAgICAgICAqICAgICAgdG8gbm90IGhvdHJlbG9hZC5cbiAgICAgICAgICAgICAqICAtIEFsc28gdXNlZnVsIGlmIHlvdSB3YW50IGZpbGVzIHRvIGhvdHJlbG9hZCBjbGllbnRzaWRlLCBidXQgbm90IHNlcnZlcnNpZGUuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG5vc2VydmVyaG90cmVsb2FkPzogYm9vbGVhbjtcblxuICAgICAgICAgICAgd2F0Y2hBZGRpdGlvbmFsRmlsZXM/OiBzdHJpbmdbXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2YXIgaXNIb3RSZWxvYWRpbmc6ICgoKSA9PiBib29sZWFuKSB8IHVuZGVmaW5lZDtcbn1cblxuLy8gU2hhcmVkIGFjcm9zcyBjb3BpZXMgb2YgdGhpcyBwYWNrYWdlLCBzbyB0aGUgXCJjdXJyZW50bHkgaG90IHJlbG9hZGluZ1wiIGZsYWcgaXMgY29uc2lzdGVudCBub1xuLy8gIG1hdHRlciB3aGljaCBjb3B5IHNldCBpdCAoZXgsIHNldEV4dGVybmFsSG90UmVsb2FkaW5nKSBvciByZWFkcyBpdCAoY2FsbE1hbmFnZXIucmVnaXN0ZXJDbGFzc1xuLy8gIHJlYWRzIGl0IHZpYSB0aGUgZ2xvYmFsVGhpcy5pc0hvdFJlbG9hZGluZyBicmlkZ2UsIHdoaWNoIGVhY2ggY29weSBvdmVyd3JpdGVzKS4gU2VlIGNyZWF0ZVNpbmdsZXRvbi5cbmNvbnN0IGlzSG90UmVsb2FkaW5nU3RhdGUgPSBjcmVhdGVTaW5nbGV0b24oXCJIb3RSZWxvYWRDb250cm9sbGVyLmlzSG90UmVsb2FkaW5nXCIsIDEsICgpID0+ICh7IHZhbHVlOiBmYWxzZSB9KSk7XG5leHBvcnQgZnVuY3Rpb24gaXNIb3RSZWxvYWRpbmcoKSB7XG4gICAgcmV0dXJuIGlzSG90UmVsb2FkaW5nU3RhdGUuZ2V0KCkudmFsdWU7XG59XG5nbG9iYWxUaGlzLmlzSG90UmVsb2FkaW5nID0gaXNIb3RSZWxvYWRpbmc7XG5leHBvcnQgZnVuY3Rpb24gaG90UmVsb2FkaW5nR3VhcmQoKTogdHJ1ZSB7XG4gICAgcmV0dXJuICFpc0hvdFJlbG9hZGluZygpIGFzIGFueTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBzZXRFeHRlcm5hbEhvdFJlbG9hZGluZyh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlzSG90UmVsb2FkaW5nU3RhdGUuZ2V0KCkudmFsdWUgPSB2YWx1ZTtcbn1cbi8vIFNoYXJlZCBhY3Jvc3MgY29waWVzLCBzbyBjYWxsYmFja3MgcmVnaXN0ZXJlZCB0aHJvdWdoIG9uZSBjb3B5J3Mgb25Ib3RSZWxvYWQgc3RpbGwgZmlyZSB3aGVuIHRoZVxuLy8gIGZpcnN0LXJlZ2lzdGVyZWQgY29weSdzIGNvbnRyb2xsZXIgcGVyZm9ybXMgYSByZWxvYWQuIFNlZSBjcmVhdGVTaW5nbGV0b24uXG5jb25zdCBob3RSZWxvYWRDYWxsYmFja3MgPSBjcmVhdGVTaW5nbGV0b24oXCJIb3RSZWxvYWRDb250cm9sbGVyLmhvdFJlbG9hZENhbGxiYWNrc1wiLCAxLCAoKSA9PiBbXSBhcyAoKG1vZHVsZXM6IE5vZGVKUy5Nb2R1bGVbXSkgPT4gdm9pZClbXSkuZ2V0KCk7XG5leHBvcnQgZnVuY3Rpb24gb25Ib3RSZWxvYWQoY2FsbGJhY2s6IChtb2R1bGVzOiBOb2RlSlMuTW9kdWxlW10pID0+IHZvaWQpIHtcbiAgICBob3RSZWxvYWRDYWxsYmFja3MucHVzaChjYWxsYmFjayk7XG59XG5cbmNvbnN0IGhvdFJlbG9hZE1vZHVsZSA9IGNhY2hlKChtb2R1bGU6IE5vZGVKUy5Nb2R1bGUpID0+IHtcbiAgICBpZiAoIW1vZHVsZS51cGRhdGVDb250ZW50cykgcmV0dXJuO1xuICAgIGxldCBpbnRlcnZhbCA9IDEwMDA7XG4gICAgbGV0IGZhc3QgPSBmYWxzZTtcbiAgICBpZiAobW9kdWxlLmhvdHJlbG9hZCkge1xuICAgICAgICBpbnRlcnZhbCA9IDEwMDtcbiAgICAgICAgZmFzdCA9IHRydWU7XG4gICAgfVxuXG4gICAgbGV0IGxhc3RIYXNoZXMgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICAgIGZ1bmN0aW9uIGdldEhhc2gocGF0aDogc3RyaW5nKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgY29udGVudHMgPSBmcy5yZWFkRmlsZVN5bmMocGF0aCwgXCJ1dGY4XCIpO1xuICAgICAgICAgICAgcmV0dXJuIGNyeXB0by5jcmVhdGVIYXNoKFwic2hhMjU2XCIpLnVwZGF0ZShjb250ZW50cykuZGlnZXN0KFwiaGV4XCIpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgd2F0Y2hGaWxlKG1vZHVsZS5maWxlbmFtZSk7XG4gICAgZm9yIChsZXQgcGF0aCBvZiBtb2R1bGUud2F0Y2hBZGRpdGlvbmFsRmlsZXMgfHwgW10pIHtcbiAgICAgICAgd2F0Y2hGaWxlKHBhdGgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdhdGNoRmlsZShwYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgbGFzdEhhc2hlcy5zZXQocGF0aCwgZ2V0SGFzaChwYXRoKSk7XG4gICAgICAgIGZzLndhdGNoRmlsZShwYXRoLCB7IHBlcnNpc3RlbnQ6IGZhbHNlLCBpbnRlcnZhbCB9LCAoY3VyciwgcHJldikgPT4ge1xuICAgICAgICAgICAgbGV0IG5ld0hhc2ggPSBnZXRIYXNoKHBhdGgpO1xuICAgICAgICAgICAgaWYgKG5ld0hhc2ggPT09IGxhc3RIYXNoZXMuZ2V0KHBhdGgpKSByZXR1cm47XG4gICAgICAgICAgICBsYXN0SGFzaGVzLnNldChwYXRoLCBuZXdIYXNoKTtcbiAgICAgICAgICAgIGlmIChwYXRoID09PSBtb2R1bGUuZmlsZW5hbWUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgSG90IHJlbG9hZGluZyAke21vZHVsZS5maWxlbmFtZX0gZHVlIHRvIGNoYW5nZWApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgSG90IHJlbG9hZGluZyAke21vZHVsZS5maWxlbmFtZX0gZHVlIHRvIGNoYW5nZSBpbiAke3BhdGh9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkb0hvdFJlbG9hZChjdXJyLm10aW1lTXMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cblxuXG4gICAgLy8gSU1QT1JUQU5UISBjaGFuZ2VUaW1lIGlzIGZvciBiZW5jaG1hcmtpbmcgaG93IGxvbmcgd2UgdG9vayB0byBob3RyZWxvYWQgKGFuZCBub3RoaW5nIGVsc2UpXG4gICAgZnVuY3Rpb24gZG9Ib3RSZWxvYWQoY2hhbmdlVGltZTogbnVtYmVyKSB7XG4gICAgICAgIG1vZHVsZS51cGRhdGVDb250ZW50cz8uKCk7XG4gICAgICAgIGlmIChpc05vZGUoKSAmJiAhbW9kdWxlLm5vc2VydmVyaG90cmVsb2FkKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgbW9kdWxlLmhvdHJlbG9hZFxuICAgICAgICAgICAgICAgIC8vIEEgZmFpcmx5IGJpZyBoYWNrIChhcyB0aGlzIGNvdWxkIGp1c3QgYmUgaW4gYSBzdHJpbmcsIG9yIHNvbWV0aGluZyBzaW1pbGFyKSwgYnV0Li4uIGl0IGFsc28gVkVSWSB1c2VmdWxcbiAgICAgICAgICAgICAgICB8fCBtb2R1bGUubW9kdWxlQ29udGVudHM/LmluY2x1ZGVzKFwiXFxubW9kdWxlLmhvdHJlbG9hZCA9IHRydWU7XCIgKyBcIlxcblwiKVxuICAgICAgICAgICAgICAgIHx8IG1vZHVsZS5tb2R1bGVDb250ZW50cz8uaW5jbHVkZXMoXCJcXHJcXG5tb2R1bGUuaG90cmVsb2FkID0gdHJ1ZTtcIiArIFwiXFxyXFxuXCIpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgU2VydmVyc2lkZSByZWxvYWRpbmcgJHttb2R1bGUuaWR9YCk7XG4gICAgICAgICAgICAgICAgaXNIb3RSZWxvYWRpbmdTdGF0ZS5nZXQoKS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgbW9kdWxlLmxvYWRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBtb2R1bGUubG9hZChtb2R1bGUuaWQpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihyZWQoYEVycm9yIGhvdCByZWxvYWRpbmcgJHttb2R1bGUuaWR9YCkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNIb3RSZWxvYWRpbmdTdGF0ZS5nZXQoKS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGxldCBjYWxsYmFjayBvZiBob3RSZWxvYWRDYWxsYmFja3MpIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhbbW9kdWxlXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy9tb2R1bGUuc291cmNlU0hBMjU2O1xuICAgICAgICAvLyBjcnlwdG8uY3JlYXRlSGFzaChcInNoYTI1NlwiKS51cGRhdGUoY29udGVudHMpLmRpZ2VzdChcImhleFwiKVxuICAgICAgICBpZiAoZ2V0SXNBbGxvd0NsaWVudChtb2R1bGUpKSB7XG4gICAgICAgICAgICB0cmlnZ2VyQ2xpZW50U2lkZVJlbG9hZCh7XG4gICAgICAgICAgICAgICAgZmlsZXM6IFttb2R1bGUuZmlsZW5hbWVdLFxuICAgICAgICAgICAgICAgIGNoYW5nZVRpbWUsXG4gICAgICAgICAgICAgICAgZmFzdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxufSk7XG5sZXQgcmVsb2FkVHJpZ2dlcmluZyA9IGZhbHNlO1xubGV0IGNsaWVudFdhdGNoZXJOb2RlcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xubGV0IHBlbmRpbmdUcmlnZ2VyRmlsZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbmZ1bmN0aW9uIHRyaWdnZXJDbGllbnRTaWRlUmVsb2FkKGNvbmZpZzoge1xuICAgIGZpbGVzOiBzdHJpbmdbXTtcbiAgICBjaGFuZ2VUaW1lOiBudW1iZXI7XG4gICAgZmFzdD86IGJvb2xlYW47XG59KSB7XG4gICAgZm9yIChsZXQgZmlsZSBvZiBjb25maWcuZmlsZXMpIHtcbiAgICAgICAgcGVuZGluZ1RyaWdnZXJGaWxlcy5hZGQoZmlsZSk7XG4gICAgfVxuICAgIGlmIChyZWxvYWRUcmlnZ2VyaW5nKSByZXR1cm47XG4gICAgcmVsb2FkVHJpZ2dlcmluZyA9IHRydWU7XG4gICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgIHJlbG9hZFRyaWdnZXJpbmcgPSBmYWxzZTtcbiAgICAgICAgbGV0IGZpbGVzID0gQXJyYXkuZnJvbShwZW5kaW5nVHJpZ2dlckZpbGVzKTtcbiAgICAgICAgcGVuZGluZ1RyaWdnZXJGaWxlcy5jbGVhcigpO1xuICAgICAgICBmb3IgKGxldCBjbGllbnROb2RlSWQgb2YgY2xpZW50V2F0Y2hlck5vZGVzKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgTm90aWZ5aW5nIGNsaWVudCBvZiBob3QgcmVsb2FkOiAke2NsaWVudE5vZGVJZH1gLCBmaWxlcyk7XG4gICAgICAgICAgICBIb3RSZWxvYWRDb250cm9sbGVyLm5vZGVzW2NsaWVudE5vZGVJZF0uZmlsZVVwZGF0ZWQoZmlsZXMsIGNvbmZpZy5jaGFuZ2VUaW1lKS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFJlbW92aW5nIGVycm9yaW5nIGNsaWVudDogJHtjbGllbnROb2RlSWR9YCk7XG4gICAgICAgICAgICAgICAgY2xpZW50V2F0Y2hlck5vZGVzLmRlbGV0ZShjbGllbnROb2RlSWQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gV2UgbmVlZCB0byB3YWl0LCBvdGhlcndpc2UgYmF0Y2hlZCB1cGRhdGVzIGZhaWwsIFdISUNILCBjYW4gcmVzdWx0IGluIHVwZGF0ZXMgd2hpbGUgcmVsb2FkaW5nLFxuICAgICAgICAvLyAgd2hpY2ggY2F1c2VzIG1pc3NlZCB1cGRhdGVzLlxuICAgIH0sIGNvbmZpZy5mYXN0ID8gNTAgOiAzMDApO1xufVxuXG5jbGFzcyBIb3RSZWxvYWRDb250cm9sbGVyQmFzZSB7XG4gICAgLy8gVE9ETzogQWxzbyBob3QgcmVsb2FkIHdoZW4gd2UgcmVjb25uZWN0IHRvIHRoZSBzZXJ2ZXIsIGFzIGl0IGlzIGxpa2VseSBzZXR1cCB3aWxsIG5lZWQgdG9cbiAgICAvLyAgYmUgcmVydW4gaW4gdGhhdCBjYXNlIGFzIHdlbGwgKGZvciBleGFtcGxlLCB3ZSBuZWVkIHRvIGNhbGwgd2F0Y2hGaWxlcyBhZ2FpbiEpXG4gICAgYXN5bmMgd2F0Y2hGaWxlcygpIHtcbiAgICAgICAgbGV0IGNhbGxlcklkID0gU29ja2V0RnVuY3Rpb24uZ2V0Q2FsbGVyKCkubm9kZUlkO1xuICAgICAgICBjbGllbnRXYXRjaGVyTm9kZXMuYWRkKGNhbGxlcklkKTtcbiAgICB9XG4gICAgLy8gVE9ETzogVGhpcyBpcyBhY3R1YWxseSBicm9rZW4gcmVsYXRlZCB0byBsYXp5IGxvYWRlZCBhbmQgc2VydmVyLW9ubHkgY29kZSwgYXMgdGhlIHNlcnZlciB3aWxsIHRlbGwgdXMgYSBmaWxlIGNoYW5nZWQsIGFuZCB0aGVuIHdlJ2xsIHNlZSB0aGF0IHdlIGRvbid0IGhhdmUgaXQgbG9hZGVkLCBhbmQgc28gd2Ugd2lsbCB0cnkgdG8gcmVmcmVzaC5cbiAgICAvLyAgICAgIC0gVGhlIHJlYXNvbiB3ZSByZWZyZXNoIGlzIGJlY2F1c2UgaXQgbWlnaHQgYmUgYSBuZXcgZmlsZS4gSSBkb24ndCBrbm93IGhvdyB3ZSBjb3VsZCBjaGVjayB0byBzZWUgaWYgaXQgd2FzIGxhenkgbG9hZGVkLiBNYXliZSB3ZSBqdXN0IHNob3VsZG4ndCByZWZyZXNoIGV2ZXIgaWYgd2UgY2FuJ3QgZmluZCB0aGUgbW9kdWxlPyBXZSdsbCBzZWUgaG93IG11Y2ggd2UgcnVuIGludG8gdGhlIGV4dHJhIHJlZnJlc2ggZHVlIHRvIGxhenkgbG9hZGluZy4uLlxuICAgIGFzeW5jIGZpbGVVcGRhdGVkKGZpbGVzOiBzdHJpbmdbXSwgY2hhbmdlVGltZTogbnVtYmVyKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zb2xlLmdyb3VwQ29sbGFwc2VkKG1hZ2VudGEoYFRyaWdnZXIgaG90cmVsb2FkIGZvciBmaWxlcyAke2Zvcm1hdFRpbWUoRGF0ZS5ub3coKSAtIGNoYW5nZVRpbWUpfSBhZnRlciBmaWxlIGNoYW5nZWApKTtcbiAgICAgICAgICAgIGZvciAobGV0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhmaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnNvbGUuZ3JvdXBFbmQoKTtcbiAgICAgICAgICAgIGxldCBtb2R1bGVzOiBOb2RlSlMuTW9kdWxlW10gPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgICAgICAgICAgICBmaWxlID0gXCJodHRwczovL1wiICsgKEJPT1RFRF9FREdFX05PREU/Lmhvc3QgfHwgbG9jYXRpb24uaG9zdCkgKyBcIi9cIiArIGZpbGU7XG4gICAgICAgICAgICAgICAgbGV0IG1vZHVsZSA9IHJlcXVpcmUuY2FjaGVbZmlsZV07XG4gICAgICAgICAgICAgICAgaWYgKCFtb2R1bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYE1vZHVsZSBub3QgZm91bmQ6ICR7ZmlsZX0sIG5vdCByZWxvYWRpbmcgcGFnZWApO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghbW9kdWxlLmhvdHJlbG9hZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgTW9kdWxlIG5vdCBob3RyZWxvYWRhYmxlOiAke2ZpbGV9LCByZWxvYWRpbmcgcGFnZSB0byBlbnN1cmUgbmV3IHZlcnNpb24gaXMgbG9hZGVkYCk7XG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1vZHVsZXMucHVzaChtb2R1bGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChsZXQgbW9kdWxlIG9mIG1vZHVsZXMpIHtcbiAgICAgICAgICAgICAgICBtb2R1bGUubG9hZGVkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpc0hvdFJlbG9hZGluZ1N0YXRlLmdldCgpLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwobW9kdWxlcy5tYXAobW9kdWxlID0+IG1vZHVsZS5sb2FkKG1vZHVsZS5maWxlbmFtZSkpKTtcbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlzSG90UmVsb2FkaW5nU3RhdGUuZ2V0KCkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChsZXQgY2FsbGJhY2sgb2YgaG90UmVsb2FkQ2FsbGJhY2tzKSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sobW9kdWxlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhtYWdlbnRhKGBIb3QgcmVsb2FkIGNvbXBsZXRlICR7Zm9ybWF0VGltZShEYXRlLm5vdygpIC0gY2hhbmdlVGltZSl9IGFmdGVyIGZpbGUgY2hhbmdlYCkpO1xuICAgICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEhvdCByZWxvYWQgZmFpbGVkICR7ZS5zdGFja31gKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNvbnN0IEhvdFJlbG9hZENvbnRyb2xsZXIgPSBTb2NrZXRGdW5jdGlvbi5yZWdpc3RlcihcbiAgICBcIkhvdFJlbG9hZENvbnRyb2xsZXItMDMyYjIyNTAtM2FhYy00MTg3LThjOTUtNzU0MTI3NDJiOGY1XCIsXG4gICAgbmV3IEhvdFJlbG9hZENvbnRyb2xsZXJCYXNlKCksXG4gICAgKCkgPT4gKHtcbiAgICAgICAgd2F0Y2hGaWxlczoge30sXG4gICAgICAgIGZpbGVVcGRhdGVkOiB7fVxuICAgIH0pLFxuICAgICgpID0+ICh7XG5cbiAgICB9KSxcbiAgICB7XG4gICAgICAgIG5vQXV0b0V4cG9zZTogdHJ1ZSxcbiAgICB9XG4pOyJdfQ==
|
|
252
|
-
/* _JS_SOURCE_HASH = "
|
|
252
|
+
/* _JS_SOURCE_HASH = "3c9fa5327e51e6227c834a3807467499c37faee11a4344e0139bb944bd16ab78"; */
|
package/package.json
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
|
|
1
|
+
"use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
|
|
2
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
3
|
return (mod && mod.__esModule && mod.default) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
@@ -383,4 +383,4 @@ exports.RequireController = SocketFunction_1.SocketFunction.register("RequireCon
|
|
|
383
383
|
}
|
|
384
384
|
});
|
|
385
385
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVxdWlyZUNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJSZXF1aXJlQ29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSw0Q0FBb0I7QUFDcEIsc0RBQW1EO0FBQ25ELDREQUFxRjtBQUNyRixzQ0FBc0c7QUFDdEcsZ0RBQXdCO0FBQ3hCLDRDQUFvRDtBQUNwRCw0REFBeUQ7QUFFekQsdUNBQXdDO0FBQ3hDLGdEQUF3QjtBQUN4QiwyQ0FBMEU7QUFFMUUsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQztBQUU5QyxNQUFNLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztBQTRDMUI7O0dBRUc7QUFDSCxTQUFnQixVQUFVLENBQUMsU0FBaUM7SUFDeEQsSUFBSSxDQUFDLElBQUEsYUFBTSxHQUFFO1FBQUUsT0FBTztJQUN0QixnR0FBZ0c7SUFDaEcsdUdBQXVHO0lBQ3ZHLEtBQUssT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFMRCxnQ0FLQztBQUdELElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0FBRXpCLE1BQU0sc0JBQXNCLEdBQUcseUJBQXlCLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFFNUYsTUFBTSxxQkFBcUIsR0FBRyxnQ0FBZ0MsQ0FBQztBQUMvRCxNQUFNLGNBQWMsR0FBRyx5QkFBeUIsQ0FBQztBQUVqRCxNQUFNLGdCQUFnQixHQUFHLElBQUEsY0FBSSxFQUFDLEdBQUcsRUFBRTtJQUMvQixNQUFNLFVBQVUsR0FBRyxZQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN4RSxPQUFPLFlBQUUsQ0FBQyxZQUFZ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QUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDaEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNyQixHQUFHLElBQUksR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUNELGNBQWMsQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDO0FBQ3pDLENBQUM7QUFQRCxzREFPQztBQUVELDRGQUE0RjtBQUM1Rix1REFBdUQ7QUFDdkQsTUFBTSx1QkFBdUIsR0FBRyxJQUFBLGlDQUFlLEVBQUMsdUNBQXVDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3RILFNBQWdCLG1CQUFtQjtJQUMvQix1QkFBdUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQy9DLENBQUM7QUFGRCxrREFFQztBQUVZLFFBQUEsaUJBQWlCLEdBQUcsK0JBQWMsQ0FBQyxRQUFRLENBQ3BELHdEQUF3RCxFQUN4RCxjQUFjLEVBQ2QsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNILFVBQVUsRUFBRSxFQUFFO0lBQ2QsV0FBVyxFQUFFLEVBQUU7SUFDZixRQUFRLEVBQUUsRUFBRTtJQUNaLFNBQVMsRUFBRSxFQUFFO0NBQ2hCLENBQUMsRUFDRixTQUFTLEVBQ1Q7SUFDSSxZQUFZLEVBQUUsSUFBSTtJQUNsQixPQUFPLEVBQUU7UUFDTCx1QkFBdUI7UUFDdkIsZ0JBQWdCO1FBQ2hCLGFBQWE7UUFDYixtQkFBbUI7S0FDdEI7Q0FDSixDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vdHlwZW5vZGUvaW5kZXguZC50c1wiIC8+XG5pbXBvcnQgZGVidWdicmVhayBmcm9tIFwiZGVidWdicmVha1wiO1xuaW1wb3J0IGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0IHsgU29ja2V0RnVuY3Rpb24gfSBmcm9tIFwiLi4vU29ja2V0RnVuY3Rpb25cIjtcbmltcG9ydCB7IGdldEN1cnJlbnRIVFRQUmVxdWVzdCwgc2V0SFRUUFJlc3VsdEhlYWRlcnMgfSBmcm9tIFwiLi4vc3JjL2NhbGxIVFRQSGFuZGxlclwiO1xuaW1wb3J0IHsgZm9ybWF0TnVtYmVyU3VmZml4ZWQsIGlzTm9kZSwgaXNOb2RlVHJ1ZSwgc2hhMjU2SGFzaCwgc2hhMjU2SGFzaFByb21pc2UgfSBmcm9tIFwiLi4vc3JjL21pc2NcIjtcbmltcG9ydCB6bGliIGZyb20gXCJ6bGliXCI7XG5pbXBvcnQgeyBjYWNoZUxpbWl0ZWQsIGxhenkgfSBmcm9tIFwiLi4vc3JjL2NhY2hpbmdcIjtcbmltcG9ydCB7IGNyZWF0ZVNpbmdsZXRvbiB9IGZyb20gXCIuLi9zcmMvY3JlYXRlU2luZ2xldG9uXCI7XG5pbXBvcnQgeyBmb3JtYXROdW1iZXIgfSBmcm9tIFwiLi4vc3JjL2Zvcm1hdHRpbmcvZm9ybWF0XCI7XG5pbXBvcnQgeyByZXF1aXJlTWFpbiB9IGZyb20gXCIuL3JlcXVpcmVcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBnZXRDb250ZW50VHlwZUZyb21CdWZmZXIsIGdldEV4dENvbnRlbnRUeXBlIH0gZnJvbSBcIi4vZXh0TWFwcGVyXCI7XG5cbmNvbnN0IENPTVBSRVNTX0NBQ0hFX1NJWkUgPSAxMDI0ICogMTAyNCAqIDEyODtcblxubW9kdWxlLmFsbG93Y2xpZW50ID0gdHJ1ZTtcblxuZGVjbGFyZSBnbG9iYWwge1xuICAgIG5hbWVzcGFjZSBOb2RlSlMge1xuICAgICAgICBpbnRlcmZhY2UgTW9kdWxlIHtcbiAgICAgICAgICAgIC8qKiBJbmRpY2F0ZXMgdGhlIG1vZHVsZSBpcyBhbGxvd2VkIGNsaWVudHNpZGUuXG4gICAgICAgICAgICAgKiAgTk9URTogU2V0IHdpdGggYG1vZHVsZS5hbGxvd2NsaWVudCA9IHRydWVgLiBIT1dFVkVSLCBhY2Nlc3MgdmlhIGdldElzQWxsb3dDbGllbnQsIHdoaWNoIHdpbGwgY2hlY2sgXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGFsbG93Y2xpZW50PzogYm9vbGVhbjtcblxuICAgICAgICAgICAgLyoqIENhdXNlcyB0aGUgbW9kdWxlIHRvIG5vdCBwcmVsb2FkLCByZXF1aXJpbmcgYGF3YWl0IGltcG9ydCgpYCBmb3IgaXQgdG8gbG9hZCBjb3JyZWN0bHlcbiAgICAgICAgICAgICAqICAgICAgLSBTaG91bGRuJ3QgYmUgc2V0IHJlY3Vyc2l2ZWx5LCBvdGhlcndpc2UgbmVzdGVkIHBhY2thZ2VzIHdpbGwgYnJlYWsuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGxhenlsb2FkPzogYm9vbGVhbjtcblxuICAgICAgICAgICAgLyoqIEluZGljYXRlcyB0aGUgbW9kdWxlIGlzIGRlZmluaXRlbHkgbm90IGFsbG93ZWQgY2xpZW50c2lkZSAqL1xuICAgICAgICAgICAgc2VydmVyb25seT86IGJvb2xlYW47XG5cbiAgICAgICAgICAgIC8vIFRPRE86IE1vdmUgc2VxTnVtIGludG8gdGhlIGFjdHVhbCBjb21waWxhdGlvbiwgYW5kIG1ha2UgaXQgaW5jcmVtZW50LFxuICAgICAgICAgICAgLy8gIHNvIHRoZSBjbGllbnRzaWRlIGNhbiBwcm9wZXJseSBoYW5kbGUgcmFjZSBjb25kaXRpb25zIGR1cmluZyBob3QgcmVsb2FkaW5nLlxuICAgICAgICAgICAgLy8gIEFuZC4uLiBtYXliZSBpdCBpcyB1c2VmdWwgaW4gb3RoZXIgY2FzZXM/XG4gICAgICAgICAgICAvKiogVXNlZCBpbnRlcm5hbGx5IGJ5IFJlcXVpcmVDb250cm9sbGVyICovXG4gICAgICAgICAgICByZXF1aXJlQ29udHJvbGxlclNlcU51bT86IG51bWJlcjtcblxuICAgICAgICAgICAgLy8gVGltZXMgYXJlIGJvdGggdW5pcXVlICh0d28gbW9kdWxlcyBldmFsdWF0ZWQgYXQgdGhlIHNhbWUgRGF0ZS5ub3coKSB3aWxsIGhhdmUgZGlmZmVyZW50IHZhbHVlcykuXG4gICAgICAgICAgICBldmFsU3RhcnRUaW1lPzogbnVtYmVyO1xuICAgICAgICAgICAgZXZhbEVuZFRpbWU/OiBudW1iZXI7XG5cbiAgICAgICAgICAgIC8qKiAoUHJlc2VudGx5IG9ubHkgY2FsbGVkIGJ5IHJlcXVpcmUuanMpXG4gICAgICAgICAgICAgKiAgICAgIENhbGxlZCBvbiByZXF1aXJlIGNhbGxzLCB0byBhbGxvdyBwcm92aWRlcnMgdG8gY3JlYXRlIGN1c3RvbSBleHBvcnRzIGRlcGVuZGluZyBvbiB0aGUgY2FsbGVyLlxuICAgICAgICAgICAgICogICAgICAgICAgLSBNb3N0bHkgdXNlZCB0byBhbGxvdyBmdW5jdGlvbnMgdG8ga25vdyB0aGUgY2FsbGluZyBtb2R1bGUuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHJlbWFwRXhwb3J0cz86IChleHBvcnRzOiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfSwgY2FsbGVyTW9kdWxlOiBOb2RlSlMuTW9kdWxlKSA9PiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfTtcblxuICAgICAgICAgICAgLyoqIE9ubHkgc2V0IGlmIGNsaWVudHNpZGUgKGFuZCBhbGxvd2VkIGNsaWVudHNpZGUpICovXG4gICAgICAgICAgICBzb3VyY2U/OiBzdHJpbmc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgICAgIGNsaWVudHNpZGVCb290VGltZTogbnVtYmVyO1xuICAgIH1cbiAgICB2YXIgc3VwcHJlc3NVbmV4cGVjdGVkTW9kdWxlV2FybmluZzogbnVtYmVyIHwgdW5kZWZpbmVkO1xufVxuXG4vKiogSW1wb3J0cyBpdCwgc2VydmVyc2lkZSwgZGVsYXllZC4gRm9yIGR5bmFtaWMgaW1wb3J0cywgd2hpY2ggd2UgbmVlZCB0byBpbmNsdWRlIG9uY2UsIGJ1dCBkb24ndCB3YW50IHRvIGluY2x1ZGVcbiAqICAgICAgaW1tZWRpYXRlbHkgKGR1ZSB0byBjeWNsaWMgaXNzdWVzKSwgYW5kIGlzbid0IGluY2x1ZGVkIGluaXRpYWxseS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxhenlJbXBvcnQoZ2V0TW9kdWxlOiAoKSA9PiBQcm9taXNlPHVua25vd24+KSB7XG4gICAgaWYgKCFpc05vZGUoKSkgcmV0dXJuO1xuICAgIC8vIEltcG9ydCBpdCwgYXN5bmNocm9ub3VzbHksIHNvIGl0IGlzbid0IHByZWxvYWRlZCwgYnV0IGl0IGlzIGF2YWlsYWJsZSBmb3IgY2xpZW50c2lkZSBpbXBvcnRzLlxuICAgIC8vICBOT1RFOiBXZSB0cmFjayBkZWxheWVkIGltcG9ydHMgKHNvbWV3aGVyZSksIGFuZCBkb24ndCBwcmVsb2FkIHRoZW0gYnkgZGVmYXVsdCBpbiBSZXF1aXJlQ29udHJvbGxlci5cbiAgICB2b2lkIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4gZ2V0TW9kdWxlKCkpO1xufVxuXG5cbmxldCBuZXh0TW9kdWxlU2VxTnVtID0gMTtcblxuY29uc3QgcmVxdWlyZVNlcU51bVByb2Nlc3NJZCA9IFwicmVxdWlyZVNlcU51bVByb2Nlc3NJZF9cIiArIERhdGUubm93KCkgKyBcIl9cIiArIE1hdGgucmFuZG9tKCk7XG5cbmNvbnN0IEJFRk9SRV9FTlRSWV9URU1QTEFURSA9IFwiPCEtLSBCRUZPUkVfRU5UUllfVEVNUExBVEUgLS0+XCI7XG5jb25zdCBFTlRSWV9URU1QTEFURSA9IFwiPCEtLSBFTlRSWV9URU1QTEFURSAtLT5cIjtcblxuY29uc3QgcmVzb2x2ZWRIVE1MRmlsZSA9IGxhenkoKCkgPT4ge1xuICAgIGNvbnN0IGJ1ZmZlclNoaW0gPSBmcy5yZWFkRmlsZVN5bmMoX19kaXJuYW1lICsgXCIvYnVmZmVyLmpzXCIpLnRvU3RyaW5nKCk7XG4gICAgcmV0dXJuIGZzLnJlYWRGaWxlU3luYyhfX2Rpcm5hbWUgKyBcIi9yZXF1aXJlLmh0bWxcIikudG9TdHJpbmcoKVxuICAgICAgICAucmVwbGFjZShCRUZPUkVfRU5UUllfVEVNUExBVEUsXG4gICAgICAgICAgICBgXG4gICAgICAgICAgICAgICAgPHNjcmlwdD4ke2J1ZmZlclNoaW19PC9zY3JpcHQ+XG4gICAgICAgICAgICAgICAgPHNjcmlwdD4oJHtyZXF1aXJlTWFpbi50b1N0cmluZygpfSkoKTwvc2NyaXB0PlxuXG4gICAgICAgICAgICAgICAgJHtCRUZPUkVfRU5UUllfVEVNUExBVEV9XG4gICAgICAgICAgICBgXG4gICAgICAgICk7XG59KTtcblxuLy8gQWxsIG9mIHRoZXNlIGFyZSBtdXRhdGVkIGJ5IHRoZSBzdGF0aWMgaGVscGVycyBiZWxvdyAoaW5qZWN0SFRNTEJlZm9yZVN0YXJ0dXAsIGFkZFN0YXRpY1Jvb3QsXG4vLyAgYWRkTWFwR2V0TW9kdWxlcyksIHdoaWNoIGNhbGxlcnMgaW52b2tlIG9uIFJlcXVpcmVDb250cm9sbGVyLiBCdXQgb25seSB0aGUgZmlyc3QtcmVnaXN0ZXJlZFxuLy8gIGNvcHkncyBjb250cm9sbGVyIGFjdHVhbGx5IHNlcnZlcyByZXF1aXJlSFRNTC9nZXRNb2R1bGVzLCBhbmQgaXQgcmVhZHMgdGhlc2UgdmFycy4gU28gdGhleSBtdXN0XG4vLyAgYmUgc2hhcmVkIGFjcm9zcyBjb3BpZXMsIG9yIGEgY2FsbGVyIHVzaW5nIGEgZGlmZmVyZW50IGNvcHkgd291bGQgYWRkIChleCkgYmVmb3JlLWVudHJ5IEhUTUxcbi8vICB0aGF0IHRoZSBzZXJ2aW5nIGNvbnRyb2xsZXIgbmV2ZXIgcmVhZHMuIFNlZSBjcmVhdGVTaW5nbGV0b24uXG5jb25zdCBiZWZvcmVFbnRyeVRleHQgPSBjcmVhdGVTaW5nbGV0b24oXCJSZXF1aXJlQ29udHJvbGxlci5iZWZvcmVFbnRyeVRleHRcIiwgMSwgKCkgPT4gW10gYXMgKHN0cmluZyB8ICgoKSA9PiBQcm9taXNlPHN0cmluZz4pKVtdKS5nZXQoKTtcbmZ1bmN0aW9uIGluamVjdEhUTUxCZWZvcmVTdGFydHVwKHRleHQ6IHN0cmluZyB8ICgoKSA9PiBQcm9taXNlPHN0cmluZz4pKSB7XG4gICAgYmVmb3JlRW50cnlUZXh0LnB1c2godGV4dCk7XG59XG5jb25zdCBzdGF0aWNSb290cyA9IGNyZWF0ZVNpbmdsZXRvbihcIlJlcXVpcmVDb250cm9sbGVyLnN0YXRpY1Jvb3RzXCIsIDEsICgpID0+IFtdIGFzIHN0cmluZ1tdKS5nZXQoKTtcbmZ1bmN0aW9uIGFkZFN0YXRpY1Jvb3Qocm9vdDogc3RyaW5nKSB7XG4gICAgaWYgKCFyb290LmVuZHNXaXRoKFwiL1wiKSkge1xuICAgICAgICByb290ICs9IFwiL1wiO1xuICAgIH1cbiAgICBzdGF0aWNSb290cy5wdXNoKHJvb3QpO1xufVxuXG50eXBlIEdldE1vZHVsZXNSZXN1bHQgPSBSZXR1cm5UeXBlPFJlcXVpcmVDb250cm9sbGVyQmFzZVtcImdldE1vZHVsZXNcIl0+IGV4dGVuZHMgUHJvbWlzZTxpbmZlciBUPiA/IFQgOiBuZXZlcjtcbmV4cG9ydCB0eXBlIEdldE1vZHVsZXNBcmdzID0gUGFyYW1ldGVyczxSZXF1aXJlQ29udHJvbGxlckJhc2VbXCJnZXRNb2R1bGVzXCJdPjtcbmNvbnN0IG1hcEdldE1vZHVsZXMgPSBjcmVhdGVTaW5nbGV0b24oXCJSZXF1aXJlQ29udHJvbGxlci5tYXBHZXRNb2R1bGVzXCIsIDEsICgpID0+IFtdIGFzIHtcbiAgICByZW1hcChyZXN1bHQ6IEdldE1vZHVsZXNSZXN1bHQsIGFyZ3M6IEdldE1vZHVsZXNBcmdzKTogUHJvbWlzZTxHZXRNb2R1bGVzUmVzdWx0PlxufVtdKS5nZXQoKTtcbmZ1bmN0aW9uIGFkZE1hcEdldE1vZHVsZXMocmVtYXA6IHR5cGVvZiBtYXBHZXRNb2R1bGVzW251bWJlcl1bXCJyZW1hcFwiXSkge1xuICAgIG1hcEdldE1vZHVsZXMucHVzaCh7IHJlbWFwIH0pO1xufVxuXG5jbGFzcyBSZXF1aXJlQ29udHJvbGxlckJhc2Uge1xuICAgIHB1YmxpYyByb290UmVzb2x2ZVBhdGggPSBcIlwiO1xuXG4gICAgcHVibGljIGFzeW5jIHJlcXVpcmVIVE1MKGNvbmZpZz86IHtcbiAgICAgICAgcmVxdWlyZUNhbGxzPzogc3RyaW5nW107XG4gICAgICAgIGNhY2hlVGltZT86IG51bWJlcjtcbiAgICB9KTogUHJvbWlzZTxCdWZmZXI+IHtcbiAgICAgICAgbGV0IHsgcmVxdWlyZUNhbGxzLCBjYWNoZVRpbWUgfSA9IGNvbmZpZyB8fCB7fTtcbiAgICAgICAgbGV0IGh0dHBSZXF1ZXN0ID0gZ2V0Q3VycmVudEhUVFBSZXF1ZXN0KCk7XG4gICAgICAgIGxldCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJ0ZXh0L2h0bWxcIlxuICAgICAgICB9O1xuICAgICAgICBpZiAoY2FjaGVUaW1lKSB7XG4gICAgICAgICAgICBoZWFkZXJzW1wiQ2FjaGUtQ29udHJvbFwiXSA9IGBtYXgtYWdlPSR7TWF0aC5mbG9vcihjYWNoZVRpbWUgLyAxMDAwKX1gO1xuICAgICAgICB9XG4gICAgICAgIGlmIChodHRwUmVxdWVzdCkge1xuICAgICAgICAgICAgbGV0IHVybE9iaiA9IG5ldyBVUkwoXCJodHRwczovL1wiICsgaHR0cFJlcXVlc3QuaGVhZGVycy5ob3N0ICsgaHR0cFJlcXVlc3QudXJsKTtcbiAgICAgICAgICAgIGlmICh1cmxPYmoucGF0aG5hbWUgIT09IFwiL1wiICYmIHN0YXRpY1Jvb3RzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBpZiAodXJsT2JqLnBhdGhuYW1lLmluY2x1ZGVzKFwiLi5cIikpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHBhdGgsIG1heSBub3QgaGF2ZSBcIi4uXCIgaW4gdGhlIHBhdGgsICR7dXJsT2JqLnBhdGhuYW1lfWApO1xuICAgICAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdDogQnVmZmVyIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IHJvb3Qgb2Ygc3RhdGljUm9vdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlc29sdmVkID0gcm9vdCArIHVybE9iai5wYXRobmFtZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMocmVzb2x2ZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcm9vdFJlc29sdmVkID0gcGF0aC5yZXNvbHZlKHJlc29sdmVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmaW5hbFJlc29sdmVkID0gcGF0aC5yZXNvbHZlKHJvb3RSZXNvbHZlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZpbmFsUmVzb2x2ZWQuc3RhcnRzV2l0aChyb290UmVzb2x2ZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGFjY2VzcywgZGlkIG5vdCBzdGF5IGluIG5hbWVzcGFjZTogJHtKU09OLnN0cmluZ2lmeShyb290UmVzb2x2ZWQpfSwgYnV0IGVzY2FwZWQ6ICR7SlNPTi5zdHJpbmdpZnkoZmluYWxSZXNvbHZlZCl9YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBhd2FpdCBmcy5wcm9taXNlcy5yZWFkRmlsZShyZXNvbHZlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBjb250ZW50VHlwZSA9IGdldENvbnRlbnRUeXBlRnJvbUJ1ZmZlcihyZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnRlbnRUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXh0ID0gcGF0aC5leHRuYW1lKHVybE9iai5wYXRobmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50VHlwZSA9IGdldEV4dENvbnRlbnRUeXBlKGV4dCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyc1tcIkNvbnRlbnQtVHlwZVwiXSA9IGNvbnRlbnRUeXBlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0SFRUUFJlc3VsdEhlYWRlcnMocmVzdWx0LCBoZWFkZXJzKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gc2V0SFRUUFJlc3VsdEhlYWRlcnMoQnVmZmVyLmZyb20oYFN0YXRpYyBmaWxlIG5vdCBmb3VuZCwgJHt1cmxPYmoucGF0aG5hbWV9LCBoYXZlIHN0YXRpYyByb290czogJHtKU09OLnN0cmluZ2lmeShzdGF0aWNSb290cyl9YCksIGhlYWRlcnMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnJvb3RSZXNvbHZlUGF0aCkge1xuICAgICAgICAgICAgbGV0IGRpciA9IHBhdGgucmVzb2x2ZShcIi5cIik7XG4gICAgICAgICAgICBkaXIgPSBkaXIucmVwbGFjZUFsbChcIlxcXFxcIiwgXCIvXCIpO1xuICAgICAgICAgICAgdGhpcy5yb290UmVzb2x2ZVBhdGggPSBkaXI7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJlc3VsdCA9IHJlc29sdmVkSFRNTEZpbGUoKTtcbiAgICAgICAgaWYgKGJlZm9yZUVudHJ5VGV4dC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBsZXQgcmVzb2x2ZWQ6IHN0cmluZ1tdID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCB0ZXh0IG9mIGJlZm9yZUVudHJ5VGV4dCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGV4dCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlZC5wdXNoKHRleHQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmVkLnB1c2goYXdhaXQgdGV4dCgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZShCRUZPUkVfRU5UUllfVEVNUExBVEUsIHJlc29sdmVkLmpvaW4oXCJcXG5cIikpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXF1aXJlQ2FsbHMpIHtcbiAgICAgICAgICAgIGFzeW5jIGZ1bmN0aW9uIHJlcXVpcmVBbGwoY2FsbHM6IHN0cmluZ1tdKSB7XG4gICAgICAgICAgICAgICAgLy8gTk9URTogYXdhaXRpbmcgaXNuJ3QganVzdCBmb3IgYmV0dGVyIGFuZCBjb25zaXN0ZW50IGxvYWQgb3JkZXIsIGl0IGFsc28gZ3JlYXRseSBpbXByb3ZlcyBsb2FkIGVmZmljaWVuY3ksXG4gICAgICAgICAgICAgICAgLy8gIGFzIHBhcmFsbGVsIGNhbGxzIGNhbid0IGtub3cgd2hhdCBmaWxlcyB3aWxsIGJlIGxvYWRlZCwgc28gdGhlcmUgaXMgYSBsb3Qgb2YgZHVwbGljYXRlIGxvYWRpbmcuIExvYWRpbmdcbiAgICAgICAgICAgICAgICAvLyAgMSBhdCBhIHRpbWUgYWxsb3dzIHJlcXVpcmUgdG8gZWZmaWNpZW50bHkgcmVxdWlyZSBvbmx5IGZpbGVzIHRoYXQgcHJldmlvdXMgaW1wb3J0cyBoYXZlbid0IGxvYWRlZC5cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBjYWxsIG9mIGNhbGxzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCByZXF1aXJlKGNhbGwpO1xuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBEZXRhY2ggdGhlIGVycm9yIHNvIHdlIGNhbiBjb250aW51ZVxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IHRocm93IGU7IH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UoRU5UUllfVEVNUExBVEUsIGA8c2NyaXB0Plxcbigke3JlcXVpcmVBbGwudG9TdHJpbmcoKX0pKCR7SlNPTi5zdHJpbmdpZnkocmVxdWlyZUNhbGxzKX0pO1xcbjwvc2NyaXB0PmApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UoRU5UUllfVEVNUExBVEUsIFwiXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZXRIVFRQUmVzdWx0SGVhZGVycyhCdWZmZXIuZnJvbShyZXN1bHQpLCBoZWFkZXJzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0TW9kdWxlcyhcbiAgICAgICAgcGF0aFJlcXVlc3RzOiBzdHJpbmdbXSxcbiAgICAgICAgYWxyZWFkeUhhdmU/OiB7XG4gICAgICAgICAgICByZXF1aXJlU2VxTnVtUHJvY2Vzc0lkOiBzdHJpbmc7XG4gICAgICAgICAgICAvLyBOT1RFOiBIaWdobHkgb3B0aW1pemVkLCBhcyBvdGhlcndpc2UgdGhpcyBjYW4gZWFzaWx5IGJlIEtCcyAoSSB3YXMgc2VlaW5nIDlLQiksXG4gICAgICAgICAgICAvLyAgd2hpY2ggaXMgdXBsb2FkZWQsIGFuZCBzbyBjYW4gYmUgcXVpdGUgc2xvdyBvbiBzbG93IGNvbm5lY3Rpb25zLlxuICAgICAgICAgICAgc2VxTnVtUmFuZ2VzOiB7XG4gICAgICAgICAgICAgICAgczogbnVtYmVyO1xuICAgICAgICAgICAgICAgIC8vIHVuZGVmaW5lZCBtZWFucyBzICsgMSAoc28ganVzdCBhIHNpbmdsZSBudW1iZXIpXG4gICAgICAgICAgICAgICAgZT86IG51bWJlcjtcbiAgICAgICAgICAgIH1bXTtcbiAgICAgICAgfSxcbiAgICAgICAgY29uZmlnPzoge31cbiAgICApOiBQcm9taXNlPHtcbiAgICAgICAgcmVxdWVzdHNSZXNvbHZlZFBhdGhzOiBzdHJpbmdbXTtcbiAgICAgICAgbW9kdWxlczoge1xuICAgICAgICAgICAgW3Jlc29sdmVkUGF0aDogc3RyaW5nXTogU2VyaWFsaXplZE1vZHVsZTtcbiAgICAgICAgfTtcbiAgICAgICAgcmVxdWlyZVNlcU51bVByb2Nlc3NJZDogc3RyaW5nO1xuICAgIH0+IHtcbiAgICAgICAgbGV0IGh0dHBSZXF1ZXN0ID0gZ2V0Q3VycmVudEhUVFBSZXF1ZXN0KCk7XG5cbiAgICAgICAgbGV0IHNlcU51bXM6IHsgW3NlcU51bTogbnVtYmVyXTogMSB9ID0ge307XG4gICAgICAgIGlmIChhbHJlYWR5SGF2ZT8ucmVxdWlyZVNlcU51bVByb2Nlc3NJZCA9PT0gcmVxdWlyZVNlcU51bVByb2Nlc3NJZCkge1xuICAgICAgICAgICAgZm9yIChsZXQgeyBzLCBlIH0gb2YgYWxyZWFkeUhhdmUuc2VxTnVtUmFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgaWYgKGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBlID0gcyArIDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSBzOyBpIDwgZTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlcU51bXNbaV0gPSAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBtb2R1bGVzOiB7XG4gICAgICAgICAgICBbcmVzb2x2ZWRQYXRoOiBzdHJpbmddOiBTZXJpYWxpemVkTW9kdWxlO1xuICAgICAgICB9ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgZnVuY3Rpb24gYWRkTW9kdWxlKG1vZHVsZTogTm9kZUpTLk1vZHVsZSwgcm9vdEltcG9ydCA9IGZhbHNlKSB7XG4gICAgICAgICAgICBpZiAoIXJvb3RJbXBvcnQgJiYgbW9kdWxlLmxhenlsb2FkKSByZXR1cm47XG4gICAgICAgICAgICBpZiAoIW1vZHVsZS5yZXF1aXJlQ29udHJvbGxlclNlcU51bSkge1xuICAgICAgICAgICAgICAgIG1vZHVsZS5yZXF1aXJlQ29udHJvbGxlclNlcU51bSA9IG5leHRNb2R1bGVTZXFOdW0rKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZXFOdW1zW21vZHVsZS5yZXF1aXJlQ29udHJvbGxlclNlcU51bV0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobW9kdWxlLmZpbGVuYW1lIGluIG1vZHVsZXMpIHJldHVybjtcblxuICAgICAgICAgICAgLy8gVE9ETzogUmVtb3ZlIHVudXNlZCBleHBvcnRzLiBXZSBrbm93IHdoeSB0aGUgbW9kdWxlIGlzIGJlaW5nIHJlcXVlc3RlZCwgc28gd2UgY2FuXG4gICAgICAgICAgICAvLyAgYWN0dWFsbHkgdmVyeSBlZmZlY3RpdmVseSBrbm93IHdoaWNoIGV4cG9ydHMgaXQgaGFzIHdoaWNoIHdpbGwgbmV2ZXIgYmUgdXNlZC5cbiAgICAgICAgICAgIC8vICAtIE9mIGNvdXJzZSwgd2Ugd291bGQgbmVlZCB0byBtYWtlIHRoZSBtb2R1bGUgc3BlY2lhbGx5LCBzbyBpZiBhbnkgbmV3IG1vZHVsZXNcbiAgICAgICAgICAgIC8vICAgICAgdXNlIGl0IHdlIGNhbiBrbm93Li4uIHdoYXQgd2FzIHJlbW92ZWQ/IEl0IGJlY29tZXMgY29tcGxpY2F0ZWQgd2l0aFxuICAgICAgICAgICAgLy8gICAgICBsYXp5IG1vZHVsZXMsIGJ1dC4uLiBpdCBpcyBzdGlsbCB2ZXJ5IGltcG9ydGFudC5cblxuICAgICAgICAgICAgLy8gSU1QT1JUQU5UISBVc2UgbW9kdWxlLmZpbGVuYW1lLCB0byBzdHJpcCB0aGUgXCIuQ0xJRU5UX05BTUVQU0FDRVwiIGV4dGVuc2lvblxuICAgICAgICAgICAgbW9kdWxlc1ttb2R1bGUuZmlsZW5hbWVdID0ge1xuICAgICAgICAgICAgICAgIG9yaWdpbmFsSWQ6IG1vZHVsZS5pZCxcbiAgICAgICAgICAgICAgICBmaWxlbmFtZTogbW9kdWxlLmZpbGVuYW1lLFxuICAgICAgICAgICAgICAgIC8vIE5PVEU6IER1ZSB0byByZWN1cnNpdmUgc2V0cyBvZiBhbGxvd2NsaWVudCwgaXQgaXMgdmVyeSBwb3NzaWJsZSBmb3IgYWxsb3djbGllbnQgJiYgc2VydmVyb25seSB0byBiZSBzZXQuXG4gICAgICAgICAgICAgICAgYWxsb3djbGllbnQ6IGdldElzQWxsb3dDbGllbnQobW9kdWxlKSxcbiAgICAgICAgICAgICAgICBzZXJ2ZXJvbmx5OiBtb2R1bGUuc2VydmVyb25seSxcbiAgICAgICAgICAgICAgICByZXF1ZXN0czogT2JqZWN0LmNyZWF0ZShudWxsKSxcbiAgICAgICAgICAgICAgICBzZXFOdW06IG1vZHVsZS5yZXF1aXJlQ29udHJvbGxlclNlcU51bSxcbiAgICAgICAgICAgICAgICBzaXplOiBtb2R1bGUuc2l6ZSxcbiAgICAgICAgICAgICAgICB2ZXJzaW9uOiBtb2R1bGUudmVyc2lvbixcbiAgICAgICAgICAgICAgICBhc3luY1JlcXVlc3RzOiBtb2R1bGUuYXN5bmNSZXF1aXJlcyB8fCB7fSxcbiAgICAgICAgICAgICAgICBmbGFnczoge30sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbGV0IGZsYWdzID0gbW9kdWxlc1ttb2R1bGUuZmlsZW5hbWVdLmZsYWdzITtcbiAgICAgICAgICAgIGZvciAobGV0IFtmbGFnLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMobW9kdWxlKSkge1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICBmbGFnc1tmbGFnXSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBtb2R1bGVPYmogPSBtb2R1bGVzW21vZHVsZS5maWxlbmFtZV07XG4gICAgICAgICAgICBpZiAobW9kdWxlT2JqLmFsbG93Y2xpZW50KSB7XG4gICAgICAgICAgICAgICAgbW9kdWxlT2JqLnNvdXJjZSA9IG1vZHVsZS5tb2R1bGVDb250ZW50cztcbiAgICAgICAgICAgICAgICBpZiAobW9kdWxlLmZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikgJiYgIW1vZHVsZU9iai5zb3VyY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgbW9kdWxlT2JqLnNvdXJjZSA9IG1vZHVsZS5tb2R1bGVDb250ZW50cyA9IGZzLnJlYWRGaWxlU3luYyhtb2R1bGUuZmlsZW5hbWUpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBOT1RFOiBJdGVyYXRlIG9uIGNoaWxkcmVuIGV2ZW4gaWYgaXQgaXNuJ3QgYWxsb3dlZCBjbGllbnQsIGFzIHRoZSBtb2R1bGUgbWF5IGhhdmUgY2hpbGRyZW5cbiAgICAgICAgICAgIC8vICB0aGF0IGFyZSBhbGxvd2VkIGNsaWVudHNpZGUsIGFuZCB0aGF0IGhhdmUgc2lkZS1lZmZlY3RzISAoTW9zdGx5IGZvciBzdGF0aWMgcmVzb3VyY2VzKVxuICAgICAgICAgICAgLy8gIC0gU3VycHJpc2luZ2x5LCB0aGlzIG9ubHkgaW5jcmVhc2VzIHRoZSByZXR1cm5lZCBzaXplIGJ5IGFib3V0IDglIChwcm9iYWJseSBtb3JlIGxpa2UgMTYlXG4gICAgICAgICAgICAvLyAgICAgIGlmIHdlIHR1cm4gc291cmNlIG1hcHMgb2ZmKSwgc28uLi4gaXQncyBmaW5lLiBBbmQgd2l0aCBjb21wcmVzc2lvbiBtb3N0IG9mIHRoZSBleHRyYVxuICAgICAgICAgICAgLy8gICAgICBzaXplIHdpbGwgZ28gYXdheSwgYXMgcGF0aHMgYXJlIGhpZ2hseSByZXBldGl0aXZlLlxuICAgICAgICAgICAgLy8gICAgICAtIEFuZCBub3cgaXQgaW5jcmVhc2VzIHRoZSBzaXplIGJ5IG11Y2ggbGVzcywgYXMgd2UgaWdub3JlIGFueSBzdWJ0cmVlIHdoaWNoIGFyZSBlbnRpcmVseVxuICAgICAgICAgICAgLy8gICAgICAgICAgbm90IGFsbG93ZWQgb24gdGhlIGNsaWVudC5cbiAgICAgICAgICAgIGZvciAobGV0IHJlcXVlc3QgaW4gbW9kdWxlLnJlcXVpcmVzKSB7XG5cbiAgICAgICAgICAgICAgICBsZXQgcmVxdWlyZVJlc29sdmVkUGF0aCA9IG1vZHVsZS5yZXF1aXJlc1tyZXF1ZXN0XTtcbiAgICAgICAgICAgICAgICBsZXQgcmVxdWlyZWRNb2R1bGUgPSByZXF1aXJlLmNhY2hlW3JlcXVpcmVSZXNvbHZlZFBhdGhdO1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVkTW9kdWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgaW5jbHVkZSBzeW5jaHJvbm91cyBtb2R1bGVzLiBCVVQsIERPIGluY2x1ZGUgdGhlIHJlcXVlc3RzLCBzbyB3aGVuL2lmIHRoZSByZXF1ZXN0IGlzIG1hZGVcbiAgICAgICAgICAgICAgICAgICAgLy8gIGl0IGNhbiBiZSByZXNvbHZlZCBjb3JyZWN0bHkuXG4gICAgICAgICAgICAgICAgICAgIGlmICghbW9kdWxlLmFzeW5jUmVxdWlyZXM/LltyZXF1ZXN0XSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkTW9kdWxlKHJlcXVpcmVkTW9kdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBtb2R1bGVPYmoucmVxdWVzdHNbcmVxdWVzdF0gPSByZXF1aXJlZE1vZHVsZS5maWxlbmFtZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBtb2R1bGVPYmoucmVxdWVzdHNbcmVxdWVzdF0gPSBcIlwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzZWFyY2hQYXRoczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAge1xuICAgICAgICAgICAgc2VhcmNoUGF0aHMucHVzaCh0aGlzLnJvb3RSZXNvbHZlUGF0aCk7XG4gICAgICAgICAgICBsZXQgcGF0aFBhcnRzID0gdGhpcy5yb290UmVzb2x2ZVBhdGgucmVwbGFjZUFsbChcIlxcXFxcIiwgXCIvXCIpLnNwbGl0KFwiL1wiKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGF0aFBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgLy8gU2tpcCBlbXB0eSBwYXRoIHBhcnRzLCB0byBwcmV2ZW50aW5nIHRoZSBjYXNlIHdoZXJlIHRoZSBwYXRoIGVuZHNcbiAgICAgICAgICAgICAgICAvLyAgd2l0aCBhIC8sIHdoaWNoIHdvdWxkIHJlc3VsdCBpbiBcIkQ6L3Rlc3QvL25vZGVfbW9kdWxlc1wiXG4gICAgICAgICAgICAgICAgaWYgKCFwYXRoUGFydHNbaV0pIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIHNlYXJjaFBhdGhzLnB1c2gocGF0aFBhcnRzLnNsaWNlKDAsIGkgKyAxKS5qb2luKFwiL1wiKSArIFwiL25vZGVfbW9kdWxlc1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG5cbiAgICAgICAgbGV0IHJlcXVlc3RzUmVzb2x2ZWRQYXRoczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgcGF0aFJlcXVlc3Qgb2YgcGF0aFJlcXVlc3RzKSB7XG4gICAgICAgICAgICBsZXQgcmVzb2x2ZWRQYXRoID0gXCJcIjtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZWRQYXRoID0gcmVxdWlyZS5yZXNvbHZlKHBhdGhSZXF1ZXN0LCB7IHBhdGhzOiBzZWFyY2hQYXRocyB9KTtcbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG4gICAgICAgICAgICByZXF1ZXN0c1Jlc29sdmVkUGF0aHMucHVzaChyZXNvbHZlZFBhdGgpO1xuXG4gICAgICAgICAgICBmdW5jdGlvbiBjcmVhdGVOb3RGb3VuZE1vZHVsZShlcnJvcjogc3RyaW5nKTogTm9kZUpTLk1vZHVsZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGVycm9yKTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBleHBvcnRzOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZTogcmVzb2x2ZWRQYXRoLFxuICAgICAgICAgICAgICAgICAgICBpZDogcmVzb2x2ZWRQYXRoLFxuICAgICAgICAgICAgICAgICAgICBpc1ByZWxvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlOiBudWxsIGFzIGFueSxcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBsb2FkOiBudWxsIGFzIGFueSxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50OiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIHBhdGg6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgIHBhdGhzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXM6IHt9LFxuICAgICAgICAgICAgICAgICAgICBhc3luY1JlcXVpcmVzOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgYWxsb3djbGllbnQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIG1vZHVsZUNvbnRlbnRzOiBgY29uc29sZS53YXJuKCR7SlNPTi5zdHJpbmdpZnkoZXJyb3IpfSlgLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFRPRE86IFdlIGNvdWxkIHVzZSBpbXBvcnQoKSBoZXJlLi4uIGJ1dCB0aGF0IHdvdWxkIG9ubHkgbWFrZSB0aGUgcm9vdCBjYWxsIGFzeW5jaHJvbm91cyxcbiAgICAgICAgICAgIC8vICB3aGljaCB3b3VsZG4ndCBwcmV2ZW50IHN5bmNocm9ub3VzIGJsb2NraW5nIGJ5IHRoYXQgbXVjaCBhbnl3YXkuLi5cbiAgICAgICAgICAgIC8vcmVxdWlyZShyb290UGF0aCk7XG4gICAgICAgICAgICBsZXQgY2xpZW50TW9kdWxlID0gcmVxdWlyZS5jYWNoZVtyZXNvbHZlZFBhdGhdO1xuICAgICAgICAgICAgaWYgKCFjbGllbnRNb2R1bGUpIHtcbiAgICAgICAgICAgICAgICAvLyBOT1RFOiBSb290IHJlcXVpcmVzIHdpbGwgYmUgYXN5bmNocm9ub3VzLCBzbyB0aHJvd2luZyBzaG91bGQgYmUganVzdCBhcyBnb29kIGFzXG4gICAgICAgICAgICAgICAgLy8gIHdhcm5pbmcsIGV4Y2VwdCB0aHJvd2luZyBjYW4gYmUgY2F1Z2h0IGFuZCByZXRyaWVkIG9uIGFub3RoZXIgc2VydmVyLlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTW9kdWxlICR7cGF0aFJlcXVlc3R9IChyZXNvbHZlZCB0byAke0pTT04uc3RyaW5naWZ5KHJlc29sdmVkUGF0aCl9KSB3YXMgbm90IGluY2x1ZGVkIHNlcnZlcnNpZGUuIFJlc29sdmVkIGZyb20gcm9vdCBkaXIgJHtKU09OLnN0cmluZ2lmeSh0aGlzLnJvb3RSZXNvbHZlUGF0aCl9IChzZXQgYnkgY2FsbCB0byBzZXRSZXF1aXJlQm9vdFJlcXVpcmUpLCByZXNvbHZlIHNlYXJjaCBwYXRoczogJHtKU09OLnN0cmluZ2lmeShzZWFyY2hQYXRocyl9KX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghY2xpZW50TW9kdWxlLmFsbG93Y2xpZW50KSB7XG4gICAgICAgICAgICAgICAgY2xpZW50TW9kdWxlID0gY3JlYXRlTm90Rm91bmRNb2R1bGUoYE1vZHVsZSAke3BhdGhSZXF1ZXN0fSAocmVzb2x2ZWQgdG8gJHtyZXNvbHZlZFBhdGh9KSBpcyBub3QgYWxsb3dlZCBjbGllbnRzaWRlIChzZXQgbW9kdWxlLmFsbG93Y2xpZW50IGluIGl0LCBvciBjYWxsIHNldEZsYWcgd2hlbiBpdCBpcyBpbXBvcnRlZCkuYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGFkZE1vZHVsZShjbGllbnRNb2R1bGUsIHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJlc3VsdDogR2V0TW9kdWxlc1Jlc3VsdCA9IHsgcmVxdWVzdHNSZXNvbHZlZFBhdGhzLCBtb2R1bGVzLCByZXF1aXJlU2VxTnVtUHJvY2Vzc0lkIH07XG4gICAgICAgIGZvciAobGV0IHJlbWFwIG9mIG1hcEdldE1vZHVsZXMpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGF3YWl0IHJlbWFwLnJlbWFwKHJlc3VsdCwgW3BhdGhSZXF1ZXN0cywgYWxyZWFkeUhhdmUsIGNvbmZpZ10pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTk9URTogSGFuZGxpbmcgY29tcHJlc3Npb24gb3Vyc2VsZiBhbGxvd3MgdXMgdG8gZWZmaWNpZW50bHkgY2FjaGUgKG90aGVyd2lzZSBjYWNoaW5nIHdvdWxkIHJlcXVpcmVcbiAgICAgICAgLy8gICAgICBoYXNoaW5nIHRoZSBvdXRwdXQsIHdoaWNoIHRha2VzIGFsbW9zdCBhcyBsb25nIGFzIGNvbXByZXNzaW9uISlcbiAgICAgICAgaWYgKGh0dHBSZXF1ZXN0ICYmIFNvY2tldEZ1bmN0aW9uLkhUVFBfQ09NUFJFU1MgJiYgaHR0cFJlcXVlc3QuaGVhZGVyc1tcImFjY2VwdC1lbmNvZGluZ1wiXT8uaW5jbHVkZXMoXCJnemlwXCIpKSB7XG4gICAgICAgICAgICBsZXQgc2ltcGxpZmllZFJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAgICAgICAgbW9kdWxlczogT2JqZWN0LmVudHJpZXMocmVzdWx0Lm1vZHVsZXMpLm1hcCh4ID0+IFt4WzBdLCB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lOiB4WzFdLmZpbGVuYW1lLFxuICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOiB4WzFdLnZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZUxlbmd0aDogeFsxXS5zb3VyY2U/Lmxlbmd0aCxcbiAgICAgICAgICAgICAgICB9XSksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbGV0IGtleSA9IHNoYTI1Nkhhc2goSlNPTi5zdHJpbmdpZnkoc2ltcGxpZmllZFJlc3VsdCkpO1xuICAgICAgICAgICAgbGV0IHVuY29tcHJlc3NlZEJ1ZmZlciA9IEJ1ZmZlci5mcm9tKEpTT04uc3RyaW5naWZ5KHJlc3VsdCkpO1xuICAgICAgICAgICAgbGV0IGJ1ZmZlciA9IGF3YWl0IGNvbXByZXNzQ2FjaGVkKGtleSwgKCkgPT4gdW5jb21wcmVzc2VkQnVmZmVyKTtcbiAgICAgICAgICAgIHNldEhUVFBSZXN1bHRIZWFkZXJzKGJ1ZmZlciwge1xuICAgICAgICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgICAgICAgIFwiQ29udGVudC1FbmNvZGluZ1wiOiBcImd6aXBcIixcbiAgICAgICAgICAgICAgICBcIkNvbnRlbnQtTGVuZ3RoXCI6IGJ1ZmZlci5sZW5ndGgudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICBcIlgtVW5jb21wcmVzc2VkLUNvbnRlbnQtTGVuZ3RoXCI6IHVuY29tcHJlc3NlZEJ1ZmZlci5sZW5ndGgudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlciBhcyBhbnk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbn1cblxubGV0IGNvbXByZXNzQ2FjaGVTaXplID0gMDtcbmxldCBjb21wcmVzc0NhY2hlID0gbmV3IE1hcDxzdHJpbmcsIEJ1ZmZlcj4oKTtcbmFzeW5jIGZ1bmN0aW9uIGNvbXByZXNzQ2FjaGVkKGJ1ZmZlcktleTogc3RyaW5nLCBidWZmZXI6ICgpID0+IEJ1ZmZlcik6IFByb21pc2U8QnVmZmVyPiB7XG4gICAgbGV0IGNhY2hlZCA9IGNvbXByZXNzQ2FjaGUuZ2V0KGJ1ZmZlcktleSk7XG4gICAgaWYgKCFjYWNoZWQpIHtcbiAgICAgICAgY2FjaGVkID0gYXdhaXQgbmV3IFByb21pc2U8QnVmZmVyPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB6bGliLmd6aXAoYnVmZmVyKCksIHt9LCAoZXJyLCByZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbXByZXNzQ2FjaGVTaXplICs9IGNhY2hlZC5sZW5ndGg7XG4gICAgICAgIC8vIFRPRE86IE1ha2UgdGhlIGNhY2hlIExSVSBldmljdGlvbiwgaW5zdGVhZCBvZiBqdXN0IHJlc2V0dGluZyBpdFxuICAgICAgICBpZiAoY29tcHJlc3NDYWNoZVNpemUgPiBDT01QUkVTU19DQUNIRV9TSVpFKSB7XG4gICAgICAgICAgICBjb21wcmVzc0NhY2hlLmNsZWFyKCk7XG4gICAgICAgICAgICBjb21wcmVzc0NhY2hlU2l6ZSA9IGNhY2hlZC5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgY29tcHJlc3NDYWNoZS5zZXQoYnVmZmVyS2V5LCBjYWNoZWQpO1xuICAgIH1cbiAgICByZXR1cm4gY2FjaGVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SXNBbGxvd0NsaWVudChtb2R1bGU6IE5vZGVKUy5Nb2R1bGUpIHtcbiAgICBpZiAobW9kdWxlLnNlcnZlcm9ubHkpIHJldHVybiBmYWxzZTtcbiAgICAvLyBJTVBPUlRBTlQhIFdlIGRvIG5vdCBhbGxvdyBldmVyeXRoaW5nIGluIG5vZGUgbW9kdWxlcyBieSBkZWZhdWx0LCBhcyBtb3N0IHRoaW5ncyBpbiBub2RlIG1vZHVsZXMsIHlvdSBkb24ndCB3YW50IHRvIGltcG9ydCBjbGllbnQtc2lkZSwgYW5kIGl0IHdpbGwgYnJlYWsgaWYgeW91IGltcG9ydCBpdCBjbGllbnQtc2lkZS4gTWFueSBvZiB0aGVzZSBhcmUgaW1wb3J0ZWQsIGJ1dCB3aWxsIG5ldmVyIGVuZCB1cCBiZWluZyBjYWxsZWQgY2xpZW50LXNpZGUsIHNvIGl0J3MgZmluZSB0byBleGNsdWRlIHRoZW0uXG4gICAgaWYgKGFsbG93QWxsTm9kZU1vZHVsZXNGbGFnLmdldCgpLnZhbHVlICYmIG1vZHVsZS5maWxlbmFtZS5pbmNsdWRlcyhcIm5vZGVfbW9kdWxlc1wiKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIG1vZHVsZS5hbGxvd2NsaWVudDtcbn1cblxudHlwZSBDbGllbnRSZW1hcENhbGxiYWNrID0gKGFyZ3M6IEdldE1vZHVsZXNBcmdzKSA9PiBQcm9taXNlPEdldE1vZHVsZXNBcmdzPjtcbmRlY2xhcmUgZ2xvYmFsIHtcbiAgICAvKiogTXVzdCBiZSBzZXQgY2xpZW50c2lkZSBCRUZPUkUgcmVxdWVzdHMgYXJlIG1hZGUgKHNvIHlvdSBsaWtlbHkgd2FudCB0byB1c2UgUmVxdWlyZUNvbnRyb2xsZXIuYWRkTWFwR2V0TW9kdWxlc1xuICAgICAqICAgICAgdG8gaW5qZWN0IGNvZGUgdGhhdCB3aWxsIHVzZSB0aGlzKSAqL1xuICAgIHZhciByZW1hcEltcG9ydFJlcXVlc3RzQ2xpZW50c2lkZTogdW5kZWZpbmVkIHwgQ2xpZW50UmVtYXBDYWxsYmFja1tdO1xufVxuXG4vLyBTaGFyZWQgYWNyb3NzIGNvcGllcyBvZiB0aGlzIHBhY2thZ2UsIHNvIHRoZSByZWdpc3RlcmVkIGNvbnRyb2xsZXIgYW5kIHJvb3RSZXNvbHZlUGF0aCAoc2V0IGJ5XG4vLyAgc2V0UmVxdWlyZUJvb3RSZXF1aXJlKSBhcmUgdGhlIHNhbWUgaW5zdGFuY2UgZXZlcnlvbmUgcmVhZHMvd3JpdGVzLiBTZWUgY3JlYXRlU2luZ2xldG9uLlxuY29uc3QgYmFzZUNvbnRyb2xsZXIgPSBjcmVhdGVTaW5nbGV0b24oXCJSZXF1aXJlQ29udHJvbGxlci5iYXNlQ29udHJvbGxlclwiLCAxLCAoKSA9PiBuZXcgUmVxdWlyZUNvbnRyb2xsZXJCYXNlKCkpLmdldCgpO1xuLyoqIEBkZXByZWNhdGVkLCBub3QgbmVlZGVkLCBhcyB0aGlzIGRlZmF1bHRzIHRvIFwiLlwiLCB3aGljaCBpcyBhIGxvdCBlYXNpZXIgdG8gcmVhc29uIGFib3V0IGFueXdheXMuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0UmVxdWlyZUJvb3RSZXF1aXJlKGRpcjogc3RyaW5nKSB7XG4gICAgZGlyID0gcGF0aC5yZXNvbHZlKGRpcik7XG4gICAgZGlyID0gZGlyLnJlcGxhY2VBbGwoXCJcXFxcXCIsIFwiL1wiKTtcbiAgICBpZiAoIWRpci5lbmRzV2l0aChcIi9cIikpIHtcbiAgICAgICAgZGlyICs9IFwiL1wiO1xuICAgIH1cbiAgICBiYXNlQ29udHJvbGxlci5yb290UmVzb2x2ZVBhdGggPSBkaXI7XG59XG5cbi8vIFNoYXJlZCBhY3Jvc3MgY29waWVzLCBzbyBjYWxsaW5nIGFsbG93QWxsTm9kZU1vZHVsZXMoKSBvbiBhbnkgY29weSBpcyBzZWVuIGJ5IHRoZSBzZXJ2aW5nXG4vLyAgY29udHJvbGxlcidzIGdldElzQWxsb3dDbGllbnQuIFNlZSBjcmVhdGVTaW5nbGV0b24uXG5jb25zdCBhbGxvd0FsbE5vZGVNb2R1bGVzRmxhZyA9IGNyZWF0ZVNpbmdsZXRvbihcIlJlcXVpcmVDb250cm9sbGVyLmFsbG93QWxsTm9kZU1vZHVsZXNcIiwgMSwgKCkgPT4gKHsgdmFsdWU6IGZhbHNlIH0pKTtcbmV4cG9ydCBmdW5jdGlvbiBhbGxvd0FsbE5vZGVNb2R1bGVzKCkge1xuICAgIGFsbG93QWxsTm9kZU1vZHVsZXNGbGFnLmdldCgpLnZhbHVlID0gdHJ1ZTtcbn1cblxuZXhwb3J0IGNvbnN0IFJlcXVpcmVDb250cm9sbGVyID0gU29ja2V0RnVuY3Rpb24ucmVnaXN0ZXIoXG4gICAgXCJSZXF1aXJlQ29udHJvbGxlci1lMmY4MTFmMy0xNGI4LTQ3NTktYjBkNi03M2YxNDUxNmNmMWRcIixcbiAgICBiYXNlQ29udHJvbGxlcixcbiAgICAoKSA9PiAoe1xuICAgICAgICBnZXRNb2R1bGVzOiB7fSxcbiAgICAgICAgcmVxdWlyZUhUTUw6IHt9LFxuICAgICAgICBidWZmZXJKUzoge30sXG4gICAgICAgIHJlcXVpcmVKUzoge30sXG4gICAgfSksXG4gICAgdW5kZWZpbmVkLFxuICAgIHtcbiAgICAgICAgbm9BdXRvRXhwb3NlOiB0cnVlLFxuICAgICAgICBzdGF0aWNzOiB7XG4gICAgICAgICAgICBpbmplY3RIVE1MQmVmb3JlU3RhcnR1cCxcbiAgICAgICAgICAgIGFkZE1hcEdldE1vZHVsZXMsXG4gICAgICAgICAgICBhZGRTdGF0aWNSb290LFxuICAgICAgICAgICAgYWxsb3dBbGxOb2RlTW9kdWxlcyxcbiAgICAgICAgfVxuICAgIH1cbik7Il19
|
|
386
|
-
/* _JS_SOURCE_HASH = "
|
|
386
|
+
/* _JS_SOURCE_HASH = "fe9fd1e530d2e0b492e48cceb5996f27ce6f6e9ad2503ec764c6cf3661446752"; */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
|
|
1
|
+
"use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
|
|
3
3
|
//exports.setFlag = exports.forceModule = void 0;
|
|
4
4
|
/// <reference path="./RequireController.ts" />
|
|
@@ -38,4 +38,4 @@ function setFlag(require, request, flag, recursive) {
|
|
|
38
38
|
}
|
|
39
39
|
exports.setFlag = setFlag;
|
|
40
40
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZUZsYWdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29tcGlsZUZsYWdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtDQUErQztBQUMvQyxNQUFNLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztBQUUxQjs7OztHQUlHO0FBRUgsdUVBQXVFO0FBQzFELFFBQUEsV0FBVyxHQUFHLElBQUksQ0FBQztBQU1oQyxTQUFTLFlBQVksQ0FBQyxRQUFnQixFQUFFLE1BQXFCO0lBQ3pELElBQUksQ0FBQyxHQUFHLE1BQWEsQ0FBQztJQUN0QixDQUFDLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDO0lBRTFDLElBQUksQ0FBQyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7UUFBRSxPQUFPO0lBRXZDLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBRWxDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLEtBQUssSUFBSSxLQUFLLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLFlBQVksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztBQUNMLENBQUM7QUFFQSxVQUFrQixDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7QUFDdEMsU0FBZ0IsT0FBTyxDQUFDLE9BQW9CLEVBQUUsT0FBZSxFQUFFLElBQVksRUFBRSxTQUFtQjtJQUM1RixJQUFJLFlBQVksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFRLENBQUM7SUFDaEQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1YsT0FBTyxDQUFDLElBQUksQ0FBQyxpQ0FBaUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN6RCxPQUFPO0lBQ1gsQ0FBQztJQUNELElBQUksU0FBUyxFQUFFLENBQUM7UUFDWixZQUFZLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLENBQUM7U0FBTSxDQUFDO1FBQ0osTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDO0FBQ0wsQ0FBQztBQVpELDBCQVlDIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4vUmVxdWlyZUNvbnRyb2xsZXIudHNcIiAvPlxubW9kdWxlLmFsbG93Y2xpZW50ID0gdHJ1ZTtcblxuLyoqXG4gKiAgICAgIEFkZHMgYSBnbG9iYWwgZnVuY3Rpb24gc2V0RmxhZyhyZXF1aXJlLCBcInR5cGVzY3JpcHRcIiwgZmxhZykgd2hpY2ggc2V0cyBhIGZsYWcgb24gdGhlIGNsaWVudFxuICogICAgICAgICAgLSBFeCwgc2V0RmxhZyhyZXF1aXJlLCBcInR5cGVzY3JpcHRcIiwgXCJhbGxvd2NsaWVudFwiKSBzbyBhbGxvd2NsaWVudCA9IHRydWUgb24gdGhlIHR5cGVzY3JpcHQgbW9kdWxlLlxuICogICAgICAgICAgLSBQYXNzaW5nIHRydWUgYXMgdGhlIGZvdXJ0aCBhcmd1bWVudCBzZXRzIGl0IHJlY3Vyc2l2ZWx5XG4gKi9cblxuLy8gV2UgbmVlZCBhdCBsZWFzdCAxIGV4cG9ydCwgdG8gZm9yY2UgdGhpcyB0byBiZSB0cmVhdGVkIGxpa2UgYSBtb2R1bGVcbmV4cG9ydCBjb25zdCBmb3JjZU1vZHVsZSA9IHRydWU7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgICAvL2Z1bmN0aW9uIHNldEZsYWcocmVxdWlyZTogTm9kZVJlcXVpcmUsIHJlcXVlc3Q6IHN0cmluZywgZmxhZzogc3RyaW5nLCByZWN1cnNpdmU/OiBib29sZWFuKTogdm9pZDtcbn1cblxuZnVuY3Rpb24gc2V0UmVjdXJzaXZlKGJhbmdQYXJ0OiBzdHJpbmcsIG1vZHVsZTogTm9kZUpTLk1vZHVsZSkge1xuICAgIGxldCBtID0gbW9kdWxlIGFzIGFueTtcbiAgICBtLnJlY3Vyc2l2ZUJhbmdzID0gbS5yZWN1cnNpdmVCYW5ncyB8fCB7fTtcblxuICAgIGlmIChtLnJlY3Vyc2l2ZUJhbmdzW2JhbmdQYXJ0XSkgcmV0dXJuO1xuXG4gICAgbS5yZWN1cnNpdmVCYW5nc1tiYW5nUGFydF0gPSB0cnVlO1xuXG4gICAgT2JqZWN0LmFzc2lnbihtb2R1bGUsIHsgW2JhbmdQYXJ0XTogdHJ1ZSB9KTtcbiAgICBmb3IgKGxldCBjaGlsZCBvZiBtb2R1bGUuY2hpbGRyZW4pIHtcbiAgICAgICAgc2V0UmVjdXJzaXZlKGJhbmdQYXJ0LCBjaGlsZCk7XG4gICAgfVxufVxuXG4oZ2xvYmFsVGhpcyBhcyBhbnkpLnNldEZsYWcgPSBzZXRGbGFnO1xuZXhwb3J0IGZ1bmN0aW9uIHNldEZsYWcocmVxdWlyZTogTm9kZVJlcXVpcmUsIHJlcXVlc3Q6IHN0cmluZywgZmxhZzogc3RyaW5nLCByZWN1cnNpdmU/OiBib29sZWFuKSB7XG4gICAgbGV0IHJlc29sdmVkUGF0aCA9IHJlcXVpcmUucmVzb2x2ZShyZXF1ZXN0KTtcbiAgICBsZXQgbW9kdWxlID0gcmVxdWlyZS5jYWNoZVtyZXNvbHZlZFBhdGhdIGFzIGFueTtcbiAgICBpZiAoIW1vZHVsZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYHNldEZsYWcgY2Fubm90IHJlc29sdmUgbW9kdWxlICR7cmVxdWVzdH1gKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocmVjdXJzaXZlKSB7XG4gICAgICAgIHNldFJlY3Vyc2l2ZShmbGFnLCBtb2R1bGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG1vZHVsZVtmbGFnXSA9IHRydWU7XG4gICAgfVxufSJdfQ==
|
|
41
|
-
/* _JS_SOURCE_HASH = "
|
|
41
|
+
/* _JS_SOURCE_HASH = "063a6c45a4e2b0ef6a411afcc472c348cb33d746faaa213f659249a8441ac4e3"; */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
|
|
1
|
+
"use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
|
|
3
3
|
//exports.getContentTypeFromBuffer = exports.getExtContentType = void 0;
|
|
4
4
|
function getExtContentType(ext) {
|
|
@@ -365,4 +365,4 @@ function getContentTypeFromBuffer(buffer) {
|
|
|
365
365
|
}
|
|
366
366
|
exports.getContentTypeFromBuffer = getContentTypeFromBuffer;
|
|
367
367
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0TWFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZXh0TWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLFNBQWdCLGlCQUFpQixDQUFDLEdBQVc7SUFDekMsU0FBUztJQUNULElBQUksR0FBRyxLQUFLLE1BQU07UUFBRSxPQUFPLGVBQWUsQ0FBQztJQUMzQyxJQUFJLEdBQUcsS0FBSyxNQUFNO1FBQUUsT0FBTyxjQUFjLENBQUM7SUFDMUMsSUFBSSxHQUFHLEtBQUssTUFBTTtRQUFFLE9BQU8sV0FBVyxDQUFDO0lBQ3ZDLElBQUksR0FBRyxLQUFLLE1BQU07UUFBRSxPQUFPLFlBQVksQ0FBQztJQUN4QyxJQUFJLEdBQUcsS0FBSyxPQUFPO1FBQUUsT0FBTyxZQUFZLENBQUM7SUFDekMsSUFBSSxHQUFHLEtBQUssTUFBTTtRQUFFLE9BQU8sV0FBVyxDQUFDO0lBQ3ZDLElBQUksR0FBRyxLQUFLLE9BQU87UUFBRSxPQUFPLFlBQVksQ0FBQztJQUN6QyxJQUFJLEdBQUcsS0FBSyxPQUFPO1FBQUUsT0FBTyxZQUFZLENBQUM7SUFDekMsSUFBSSxHQUFHLEtBQUssT0FBTztRQUFFLE9BQU8sWUFBWSxDQUFDO0lBQ3pDLElBQUksR0FBRyxLQUFLLE9BQU87UUFBRSxPQUFPLFlBQVksQ0FBQztJQUN6QyxJQUFJLEdBQUcsS0FBSyxNQUFNO1FBQUUsT0FBTyxXQUFXLENBQUM7SUFDdkMsSUFBSSxHQUFHLEtBQUssT0FBTztRQUFFLE9BQU8sWUFBWSxDQUFDO0lBQ3pDLElBQUksR0FBRyxLQUFLLE1BQU07UUFBRSxPQUFPLFlBQVksQ0FBQztJQUN4QyxJQUFJLEdBQUcsS0FBSyxNQUFNO1FBQUUsT0FBTyxXQUFXLENBQUM7SUFFdkMsUUFBUTtJQUNSLElBQUksR0FBRyxLQUFLLE1BQU07UUFBRSxPQUFPLFlBQVksQ0FBQztJQUN4QyxJQUFJLEdBQUcsS0FBSyxNQUFNO1FBQUUsT0FBTyxXQUFXLENBQUM7SUFDdkMsSUFBSSxH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LGtCQUFrQixDQUFDO1FBQzlCLENBQUM7UUFBQyxXQUFNLENBQUM7WUFDTCxXQUFXO1FBQ2YsQ0FBQztJQUNMLENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIsSUFBSSxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUFFLE9BQU8sd0JBQXdCLENBQUM7SUFDMUUsSUFBSSxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUFFLE9BQU8sMkJBQTJCLENBQUM7SUFDN0UsSUFBSSxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUFFLE9BQU8sbUJBQW1CLENBQUM7SUFFekcsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQztBQW5IRCw0REFtSEMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZ2V0RXh0Q29udGVudFR5cGUoZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIEltYWdlc1xuICAgIGlmIChleHQgPT09IFwiLnN2Z1wiKSByZXR1cm4gXCJpbWFnZS9zdmcreG1sXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIuaWNvXCIpIHJldHVybiBcImltYWdlL3gtaWNvblwiO1xuICAgIGlmIChleHQgPT09IFwiLnBuZ1wiKSByZXR1cm4gXCJpbWFnZS9wbmdcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5qcGdcIikgcmV0dXJuIFwiaW1hZ2UvanBlZ1wiO1xuICAgIGlmIChleHQgPT09IFwiLmpwZWdcIikgcmV0dXJuIFwiaW1hZ2UvanBlZ1wiO1xuICAgIGlmIChleHQgPT09IFwiLmdpZlwiKSByZXR1cm4gXCJpbWFnZS9naWZcIjtcbiAgICBpZiAoZXh0ID09PSBcIi53ZWJwXCIpIHJldHVybiBcImltYWdlL3dlYnBcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5hdmlmXCIpIHJldHVybiBcImltYWdlL2F2aWZcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5oZWljXCIpIHJldHVybiBcImltYWdlL2hlaWNcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5oZWlmXCIpIHJldHVybiBcImltYWdlL2hlaWZcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5ibXBcIikgcmV0dXJuIFwiaW1hZ2UvYm1wXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIudGlmZlwiKSByZXR1cm4gXCJpbWFnZS90aWZmXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIudGlmXCIpIHJldHVybiBcImltYWdlL3RpZmZcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5qeGxcIikgcmV0dXJuIFwiaW1hZ2UvanhsXCI7XG5cbiAgICAvLyBBdWRpb1xuICAgIGlmIChleHQgPT09IFwiLm1wM1wiKSByZXR1cm4gXCJhdWRpby9tcGVnXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIud2F2XCIpIHJldHVybiBcImF1ZGlvL3dhdlwiO1xuICAgIGlmIChleHQgPT09IFwiLm9nZ1wiKSByZXR1cm4gXCJhdWRpby9vZ2dcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5tNGFcIikgcmV0dXJuIFwiYXVkaW8vbXA0XCI7XG4gICAgaWYgKGV4dCA9PT0gXCIuYWFjXCIpIHJldHVybiBcImF1ZGlvL2FhY1wiO1xuICAgIGlmIChleHQgPT09IFwiLmZsYWNcIikgcmV0dXJuIFwiYXVkaW8vZmxhY1wiO1xuICAgIGlmIChleHQgPT09IFwiLndtYVwiKSByZXR1cm4gXCJhdWRpby94LW1zLXdtYVwiO1xuICAgIGlmIChleHQgPT09IFwiLm9wdXNcIikgcmV0dXJuIFwiYXVkaW8vb3B1c1wiO1xuXG4gICAgLy8gVmlkZW9cbiAgICBpZiAoZXh0ID09PSBcIi5tcDRcIikgcmV0dXJuIFwidmlkZW8vbXA0XCI7XG4gICAgaWYgKGV4dCA9PT0gXCIud2VibVwiKSByZXR1cm4gXCJ2aWRlby93ZWJtXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIubWt2XCIpIHJldHVybiBcInZpZGVvL3gtbWF0cm9za2FcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5hdmlcIikgcmV0dXJuIFwidmlkZW8veC1tc3ZpZGVvXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIubW92XCIpIHJldHVybiBcInZpZGVvL3F1aWNrdGltZVwiO1xuICAgIGlmIChleHQgPT09IFwiLndtdlwiKSByZXR1cm4gXCJ2aWRlby94LW1zLXdtdlwiO1xuICAgIGlmIChleHQgPT09IFwiLmZsdlwiKSByZXR1cm4gXCJ2aWRlby94LWZsdlwiO1xuICAgIGlmIChleHQgPT09IFwiLm00dlwiKSByZXR1cm4gXCJ2aWRlby94LW00dlwiO1xuXG4gICAgLy8gV2ViIGZpbGVzXG4gICAgaWYgKGV4dCA9PT0gXCIuaHRtbFwiKSByZXR1cm4gXCJ0ZXh0L2h0bWxcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5odG1cIikgcmV0dXJuIFwidGV4dC9odG1sXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIuY3NzXCIpIHJldHVybiBcInRleHQvY3NzXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIuanNcIikgcmV0dXJuIFwidGV4dC9qYXZhc2NyaXB0XCI7XG4gICAgaWYgKGV4dCA9PT0gXCIubWpzXCIpIHJldHVybiBcInRleHQvamF2YXNjcmlwdFwiO1xuICAgIGlmIChleHQgPT09IFwiLmpzb25cIikgcmV0dXJuIFwiYXBwbGljYXRpb24vanNvblwiO1xuICAgIGlmIChleHQgPT09IFwiLnhtbFwiKSByZXR1cm4gXCJhcHBsaWNhdGlvbi94bWxcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5yc3NcIikgcmV0dXJuIFwiYXBwbGljYXRpb24vcnNzK3htbFwiO1xuICAgIGlmIChleHQgPT09IFwiLmF0b21cIikgcmV0dXJuIFwiYXBwbGljYXRpb24vYXRvbSt4bWxcIjtcblxuICAgIC8vIERvY3VtZW50c1xuICAgIGlmIChleHQgPT09IFwiLnBkZlwiKSByZXR1cm4gXCJhcHBsaWNhdGlvbi9wZGZcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5kb2NcIikgcmV0dXJuIFwiYXBwbGljYXRpb24vbXN3b3JkXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIuZG9jeFwiKSByZXR1cm4gXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudFwiO1xuICAgIGlmIChleHQgPT09IFwiLnhsc1wiKSByZXR1cm4gXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWxcIjtcbiAgICBpZiAoZXh0ID09PSBcIi54bHN4XCIpIHJldHVybiBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0XCI7XG4gICAgaWYgKGV4dCA9PT0gXCIucHB0XCIpIHJldHVybiBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50XCI7XG4gICAgaWYgKGV4dCA9PT0gXCIucHB0eFwiKSByZXR1cm4gXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwucHJlc2VudGF0aW9uXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIub2R0XCIpIHJldHVybiBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dFwiO1xuICAgIGlmIChleHQgPT09IFwiLm9kc1wiKSByZXR1cm4gXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0XCI7XG4gICAgaWYgKGV4dCA9PT0gXCIub2RwXCIpIHJldHVybiBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQucHJlc2VudGF0aW9uXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIucnRmXCIpIHJldHVybiBcImFwcGxpY2F0aW9uL3J0ZlwiO1xuXG4gICAgLy8gVGV4dCBmaWxlc1xuICAgIGlmIChleHQgPT09IFwiLnR4dFwiKSByZXR1cm4gXCJ0ZXh0L3BsYWluXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIubWRcIikgcmV0dXJuIFwidGV4dC9tYXJrZG93blwiO1xuICAgIGlmIChleHQgPT09IFwiLmNzdlwiKSByZXR1cm4gXCJ0ZXh0L2NzdlwiO1xuICAgIGlmIChleHQgPT09IFwiLmxvZ1wiKSByZXR1cm4gXCJ0ZXh0L3BsYWluXCI7XG5cbiAgICAvLyBQcm9ncmFtbWluZyBmaWxlc1xuICAgIGlmIChleHQgPT09IFwiLnRzXCIpIHJldHVybiBcInRleHQvdHlwZXNjcmlwdFwiO1xuICAgIGlmIChleHQgPT09IFwiLnRzeFwiKSByZXR1cm4gXCJ0ZXh0L3R5cGVzY3JpcHRcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5qc3hcIikgcmV0dXJuIFwidGV4dC9qYXZhc2NyaXB0XCI7XG4gICAgaWYgKGV4dCA9PT0gXCIucHlcIikgcmV0dXJuIFwidGV4dC94LXB5dGhvblwiO1xuICAgIGlmIChleHQgPT09IFwiLmphdmFcIikgcmV0dXJuIFwidGV4dC94LWphdmEtc291cmNlXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIuY1wiKSByZXR1cm4gXCJ0ZXh0L3gtY1wiO1xuICAgIGlmIChleHQgPT09IFwiLmNwcFwiKSByZXR1cm4gXCJ0ZXh0L3gtYysrXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIuaFwiKSByZXR1cm4gXCJ0ZXh0L3gtY1wiO1xuICAgIGlmIChleHQgPT09IFwiLmhwcFwiKSByZXR1cm4gXCJ0ZXh0L3gtYysrXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIuY3NcIikgcmV0dXJuIFwidGV4dC94LWNzaGFycFwiO1xuICAgIGlmIChleHQgPT09IFwiLnBocFwiKSByZXR1cm4gXCJ0ZXh0L3gtcGhwXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIucmJcIikgcmV0dXJuIFwidGV4dC94LXJ1YnlcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5nb1wiKSByZXR1cm4gXCJ0ZXh0L3gtZ29cIjtcbiAgICBpZiAoZXh0ID09PSBcIi5yc1wiKSByZXR1cm4gXCJ0ZXh0L3gtcnVzdFwiO1xuICAgIGlmIChleHQgPT09IFwiLnN3aWZ0XCIpIHJldHVybiBcInRleHQveC1zd2lmdFwiO1xuICAgIGlmIChleHQgPT09IFwiLmt0XCIpIHJldHVybiBcInRleHQveC1rb3RsaW5cIjtcbiAgICBpZiAoZXh0ID09PSBcIi5zY2FsYVwiKSByZXR1cm4gXCJ0ZXh0L3gtc2NhbGFcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5zaFwiKSByZXR1cm4gXCJ0ZXh0L3gtc2hlbGxzY3JpcHRcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5iYXRcIikgcmV0dXJuIFwidGV4dC94LW1zZG9zLWJhdGNoXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIucHMxXCIpIHJldHVybiBcInRleHQveC1wb3dlcnNoZWxsXCI7XG5cbiAgICAvLyBBcmNoaXZlc1xuICAgIGlmIChleHQgPT09IFwiLnppcFwiKSByZXR1cm4gXCJhcHBsaWNhdGlvbi96aXBcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5yYXJcIikgcmV0dXJuIFwiYXBwbGljYXRpb24vdm5kLnJhclwiO1xuICAgIGlmIChleHQgPT09IFwiLnRhclwiKSByZXR1cm4gXCJhcHBsaWNhdGlvbi94LXRhclwiO1xuICAgIGlmIChleHQgPT09IFwiLmd6XCIpIHJldHVybiBcImFwcGxpY2F0aW9uL2d6aXBcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5iejJcIikgcmV0dXJuIFwiYXBwbGljYXRpb24veC1iemlwMlwiO1xuICAgIGlmIChleHQgPT09IFwiLjd6XCIpIHJldHVybiBcImFwcGxpY2F0aW9uL3gtN3otY29tcHJlc3NlZFwiO1xuICAgIGlmIChleHQgPT09IFwiLnh6XCIpIHJldHVybiBcImFwcGxpY2F0aW9uL3gteHpcIjtcblxuICAgIC8vIEZvbnRzXG4gICAgaWYgKGV4dCA9PT0gXCIudHRmXCIpIHJldHVybiBcImZvbnQvdHRmXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIub3RmXCIpIHJldHVybiBcImZvbnQvb3RmXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIud29mZlwiKSByZXR1cm4gXCJmb250L3dvZmZcIjtcbiAgICBpZiAoZXh0ID09PSBcIi53b2ZmMlwiKSByZXR1cm4gXCJmb250L3dvZmYyXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIuZW90XCIpIHJldHVybiBcImFwcGxpY2F0aW9uL3ZuZC5tcy1mb250b2JqZWN0XCI7XG5cbiAgICAvLyBPdGhlciBjb21tb24gZm9ybWF0c1xuICAgIGlmIChleHQgPT09IFwiLmVwdWJcIikgcmV0dXJuIFwiYXBwbGljYXRpb24vZXB1Yit6aXBcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5tb2JpXCIpIHJldHVybiBcImFwcGxpY2F0aW9uL3gtbW9iaXBvY2tldC1lYm9va1wiO1xuICAgIGlmIChleHQgPT09IFwiLmFwa1wiKSByZXR1cm4gXCJhcHBsaWNhdGlvbi92bmQuYW5kcm9pZC5wYWNrYWdlLWFyY2hpdmVcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5kbWdcIikgcmV0dXJuIFwiYXBwbGljYXRpb24veC1hcHBsZS1kaXNraW1hZ2VcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5pc29cIikgcmV0dXJuIFwiYXBwbGljYXRpb24veC1pc285NjYwLWltYWdlXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIuZXhlXCIpIHJldHVybiBcImFwcGxpY2F0aW9uL3gtbXNkb3dubG9hZFwiO1xuICAgIGlmIChleHQgPT09IFwiLm1zaVwiKSByZXR1cm4gXCJhcHBsaWNhdGlvbi94LW1zaVwiO1xuICAgIGlmIChleHQgPT09IFwiLmRlYlwiKSByZXR1cm4gXCJhcHBsaWNhdGlvbi94LWRlYmlhbi1wYWNrYWdlXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIucnBtXCIpIHJldHVybiBcImFwcGxpY2F0aW9uL3gtcnBtXCI7XG5cbiAgICBjb25zb2xlLndhcm4oYFVua25vd24gZXh0ZW5zaW9uLCAke2V4dH1gKTtcbiAgICByZXR1cm4gXCJ0ZXh0L3BsYWluXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb250ZW50VHlwZUZyb21CdWZmZXIoYnVmZmVyOiBCdWZmZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmIChidWZmZXIubGVuZ3RoIDwgNCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byBjaGVjayBpZiBidWZmZXIgc3RhcnRzIHdpdGggc3BlY2lmaWMgYnl0ZXNcbiAgICBjb25zdCBzdGFydHNXaXRoID0gKGJ5dGVzOiBudW1iZXJbXSk6IGJvb2xlYW4gPT4ge1xuICAgICAgICBpZiAoYnVmZmVyLmxlbmd0aCA8IGJ5dGVzLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoYnVmZmVyW2ldICE9PSBieXRlc1tpXSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG5cbiAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gY2hlY2sgYnl0ZXMgYXQgc3BlY2lmaWMgb2Zmc2V0XG4gICAgY29uc3QgaGFzQXRPZmZzZXQgPSAob2Zmc2V0OiBudW1iZXIsIGJ5dGVzOiBudW1iZXJbXSk6IGJvb2xlYW4gPT4ge1xuICAgICAgICBpZiAoYnVmZmVyLmxlbmd0aCA8IG9mZnNldCArIGJ5dGVzLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoYnVmZmVyW29mZnNldCArIGldICE9PSBieXRlc1tpXSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG5cbiAgICAvLyBJbWFnZXNcbiAgICBpZiAoc3RhcnRzV2l0aChbMHhGRiwgMHhEOCwgMHhGRl0pKSByZXR1cm4gXCJpbWFnZS9qcGVnXCI7XG4gICAgaWYgKHN0YXJ0c1dpdGgoWzB4ODksIDB4NTAsIDB4NEUsIDB4NDcsIDB4MEQsIDB4MEEsIDB4MUEsIDB4MEFdKSkgcmV0dXJuIFwiaW1hZ2UvcG5nXCI7XG4gICAgaWYgKHN0YXJ0c1dpdGgoWzB4NDcsIDB4NDksIDB4NDYsIDB4MzhdKSkgcmV0dXJuIFwiaW1hZ2UvZ2lmXCI7XG4gICAgaWYgKHN0YXJ0c1dpdGgoWzB4NDIsIDB4NERdKSkgcmV0dXJuIFwiaW1hZ2UvYm1wXCI7XG4gICAgaWYgKHN0YXJ0c1dpdGgoWzB4NDksIDB4NDksIDB4MkEsIDB4MDBdKSB8fCBzdGFydHNXaXRoKFsweDRELCAweDRELCAweDAwLCAweDJBXSkpIHJldHVybiBcImltYWdlL3RpZmZcIjtcbiAgICBpZiAoc3RhcnRzV2l0aChbMHgwMCwgMHgwMCwgMHgwMSwgMHgwMF0pKSByZXR1cm4gXCJpbWFnZS94LWljb25cIjtcbiAgICBpZiAoYnVmZmVyLnRvU3RyaW5nKFwiYXNjaWlcIiwgMCwgNCkgPT09IFwiPHN2Z1wiIHx8IGJ1ZmZlci50b1N0cmluZyhcImFzY2lpXCIsIDAsIDUpID09PSBcIjw/eG1sXCIpIHtcbiAgICAgICAgaWYgKGJ1ZmZlci50b1N0cmluZyhcInV0ZjhcIikuaW5jbHVkZXMoXCI8c3ZnXCIpKSByZXR1cm4gXCJpbWFnZS9zdmcreG1sXCI7XG4gICAgfVxuXG4gICAgLy8gV2ViUCBhbmQgbW9kZXJuIGltYWdlIGZvcm1hdHNcbiAgICBpZiAoc3RhcnRzV2l0aChbMHg1MiwgMHg0OSwgMHg0NiwgMHg0Nl0pICYmIGhhc0F0T2Zmc2V0KDgsIFsweDU3LCAweDQ1LCAweDQyLCAweDUwXSkpIHJldHVybiBcImltYWdlL3dlYnBcIjtcbiAgICBpZiAoaGFzQXRPZmZzZXQoNCwgWzB4NjYsIDB4NzQsIDB4NzksIDB4NzAsIDB4NjEsIDB4NzYsIDB4NjksIDB4NjZdKSkgcmV0dXJuIFwiaW1hZ2UvYXZpZlwiO1xuICAgIGlmIChoYXNBdE9mZnNldCg0LCBbMHg2NiwgMHg3NCwgMHg3OSwgMHg3MCwgMHg2OCwgMHg2NSwgMHg2OSwgMHg2M10pKSByZXR1cm4gXCJpbWFnZS9oZWljXCI7XG4gICAgaWYgKGhhc0F0T2Zmc2V0KDQsIFsweDY2LCAweDc0LCAweDc5LCAweDcwLCAweDZELCAweDY5LCAweDY2LCAweDMxXSkpIHJldHVybiBcImltYWdlL2hlaWZcIjtcblxuICAgIC8vIEF1ZGlvXG4gICAgaWYgKHN0YXJ0c1dpdGgoWzB4RkYsIDB4RkJdKSB8fCBzdGFydHNXaXRoKFsweEZGLCAweEYzXSkgfHwgc3RhcnRzV2l0aChbMHhGRiwgMHhGMl0pKSByZXR1cm4gXCJhdWRpby9tcGVnXCI7XG4gICAgaWYgKHN0YXJ0c1dpdGgoWzB4NDksIDB4NDQsIDB4MzNdKSkgcmV0dXJuIFwiYXVkaW8vbXBlZ1wiOyAvLyBNUDMgd2l0aCBJRDNcbiAgICBpZiAoc3RhcnRzV2l0aChbMHg1MiwgMHg0OSwgMHg0NiwgMHg0Nl0pICYmIGhhc0F0T2Zmc2V0KDgsIFsweDU3LCAweDQxLCAweDU2LCAweDQ1XSkpIHJldHVybiBcImF1ZGlvL3dhdlwiO1xuICAgIGlmIChzdGFydHNXaXRoKFsweDRGLCAweDY3LCAweDY3LCAweDUzXSkpIHJldHVybiBcImF1ZGlvL29nZ1wiO1xuICAgIGlmIChzdGFydHNXaXRoKFsweDY2LCAweDRDLCAweDYxLCAweDQzXSkpIHJldHVybiBcImF1ZGlvL2ZsYWNcIjtcbiAgICBpZiAoaGFzQXRPZmZzZXQoNCwgWzB4NjYsIDB4NzQsIDB4NzksIDB4NzAsIDB4NEQsIDB4MzQsIDB4NDFdKSkgcmV0dXJuIFwiYXVkaW8vbXA0XCI7XG5cbiAgICAvLyBWaWRlb1xuICAgIGlmIChoYXNBdE9mZnNldCg0LCBbMHg2NiwgMHg3NCwgMHg3OSwgMHg3MF0pKSB7XG4gICAgICAgIGNvbnN0IGZ0eXAgPSBidWZmZXIudG9TdHJpbmcoXCJhc2NpaVwiLCA4LCAxMik7XG4gICAgICAgIGlmIChmdHlwLnN0YXJ0c1dpdGgoXCJtcDRcIikgfHwgZnR5cC5zdGFydHNXaXRoKFwiaXNvbVwiKSB8fCBmdHlwLnN0YXJ0c1dpdGgoXCJNNFZcIikpIHJldHVybiBcInZpZGVvL21wNFwiO1xuICAgICAgICBpZiAoZnR5cC5zdGFydHNXaXRoKFwicXRcIikpIHJldHVybiBcInZpZGVvL3F1aWNrdGltZVwiO1xuICAgIH1cbiAgICBpZiAoc3RhcnRzV2l0aChbMHgxQSwgMHg0NSwgMHhERiwgMHhBM10pKSByZXR1cm4gXCJ2aWRlby93ZWJtXCI7IC8vIEFsc28gbWt2XG4gICAgaWYgKHN0YXJ0c1dpdGgoWzB4MzAsIDB4MjYsIDB4QjIsIDB4NzUsIDB4OEUsIDB4NjYsIDB4Q0YsIDB4MTFdKSkgcmV0dXJuIFwidmlkZW8veC1tcy13bXZcIjtcbiAgICBpZiAoc3RhcnRzV2l0aChbMHg0NiwgMHg0QywgMHg1NiwgMHgwMV0pKSByZXR1cm4gXCJ2aWRlby94LWZsdlwiO1xuICAgIGlmIChzdGFydHNXaXRoKFsweDUyLCAweDQ5LCAweDQ2LCAweDQ2XSkgJiYgaGFzQXRPZmZzZXQoOCwgWzB4NDEsIDB4NTYsIDB4NDksIDB4MjBdKSkgcmV0dXJuIFwidmlkZW8veC1tc3ZpZGVvXCI7XG5cbiAgICAvLyBEb2N1bWVudHNcbiAgICBpZiAoc3RhcnRzV2l0aChbMHgyNSwgMHg1MCwgMHg0NCwgMHg0Nl0pKSByZXR1cm4gXCJhcHBsaWNhdGlvbi9wZGZcIjtcbiAgICBpZiAoc3RhcnRzV2l0aChbMHg1MCwgMHg0QiwgMHgwMywgMHgwNF0pIHx8IHN0YXJ0c1dpdGgoWzB4NTAsIDB4NEIsIDB4MDUsIDB4MDZdKSB8fCBzdGFydHNXaXRoKFsweDUwLCAweDRCLCAweDA3LCAweDA4XSkpIHtcbiAgICAgICAgLy8gWklQLWJhc2VkIGZvcm1hdHMgLSBuZWVkIHRvIGNoZWNrIGludGVybmFsIHN0cnVjdHVyZVxuICAgICAgICBjb25zdCBjb250ZW50ID0gYnVmZmVyLnRvU3RyaW5nKFwiYXNjaWlcIiwgMzAsIDEwMCk7XG4gICAgICAgIGlmIChjb250ZW50LmluY2x1ZGVzKFwid29yZC9cIikpIHJldHVybiBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50XCI7XG4gICAgICAgIGlmIChjb250ZW50LmluY2x1ZGVzKFwieGwvXCIpKSByZXR1cm4gXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldFwiO1xuICAgICAgICBpZiAoY29udGVudC5pbmNsdWRlcyhcInBwdC9cIikpIHJldHVybiBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVzZW50YXRpb25cIjtcbiAgICAgICAgaWYgKGNvbnRlbnQuaW5jbHVkZXMoXCJNRVRBLUlORi9cIikpIHtcbiAgICAgICAgICAgIGlmIChjb250ZW50LmluY2x1ZGVzKFwiY29udGVudC54bWxcIikpIHJldHVybiBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dFwiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBcImFwcGxpY2F0aW9uL3ppcFwiO1xuICAgIH1cbiAgICBpZiAoc3RhcnRzV2l0aChbMHhEMCwgMHhDRiwgMHgxMSwgMHhFMCwgMHhBMSwgMHhCMSwgMHgxQSwgMHhFMV0pKSB7XG4gICAgICAgIC8vIE1pY3Jvc29mdCBPZmZpY2UgbGVnYWN5IGZvcm1hdHNcbiAgICAgICAgcmV0dXJuIFwiYXBwbGljYXRpb24vbXN3b3JkXCI7IC8vIENvdWxkIGFsc28gYmUgRXhjZWwgb3IgUG93ZXJQb2ludFxuICAgIH1cbiAgICBpZiAoc3RhcnRzV2l0aChbMHg3QiwgMHg1QywgMHg3MiwgMHg3NCwgMHg2Nl0pKSByZXR1cm4gXCJhcHBsaWNhdGlvbi9ydGZcIjtcblxuICAgIC8vIEFyY2hpdmVzXG4gICAgaWYgKHN0YXJ0c1dpdGgoWzB4NTIsIDB4NjEsIDB4NzIsIDB4MjEsIDB4MUEsIDB4MDddKSkgcmV0dXJuIFwiYXBwbGljYXRpb24vdm5kLnJhclwiO1xuICAgIGlmIChzdGFydHNXaXRoKFsweDM3LCAweDdBLCAweEJDLCAweEFGLCAweDI3LCAweDFDXSkpIHJldHVybiBcImFwcGxpY2F0aW9uL3gtN3otY29tcHJlc3NlZFwiO1xuICAgIGlmIChzdGFydHNXaXRoKFsweDFGLCAweDhCXSkpIHJldHVybiBcImFwcGxpY2F0aW9uL2d6aXBcIjtcbiAgICBpZiAoc3RhcnRzV2l0aChbMHg0MiwgMHg1QSwgMHg2OF0pKSByZXR1cm4gXCJhcHBsaWNhdGlvbi94LWJ6aXAyXCI7XG4gICAgaWYgKHN0YXJ0c1dpdGgoWzB4RkQsIDB4MzcsIDB4N0EsIDB4NTgsIDB4NUEsIDB4MDBdKSkgcmV0dXJuIFwiYXBwbGljYXRpb24veC14elwiO1xuICAgIGlmIChzdGFydHNXaXRoKFsweDc1LCAweDczLCAweDc0LCAweDYxLCAweDcyXSkpIHJldHVybiBcImFwcGxpY2F0aW9uL3gtdGFyXCI7XG5cbiAgICAvLyBFeGVjdXRhYmxlc1xuICAgIGlmIChzdGFydHNXaXRoKFsweDRELCAweDVBXSkpIHJldHVybiBcImFwcGxpY2F0aW9uL3gtbXNkb3dubG9hZFwiOyAvLyBXaW5kb3dzIFBFXG4gICAgaWYgKHN0YXJ0c1dpdGgoWzB4N0YsIDB4NDUsIDB4NEMsIDB4NDZdKSkgcmV0dXJuIFwiYXBwbGljYXRpb24veC1leGVjdXRhYmxlXCI7IC8vIExpbnV4IEVMRlxuICAgIGlmIChzdGFydHNXaXRoKFsweENBLCAweEZFLCAweEJBLCAweEJFXSkgfHwgc3RhcnRzV2l0aChbMHhGRSwgMHhFRCwgMHhGQSwgMHhDRV0pKSByZXR1cm4gXCJhcHBsaWNhdGlvbi94LW1hY2gtYmluYXJ5XCI7IC8vIG1hY09TIGJpbmFyeVxuICAgIGlmIChzdGFydHNXaXRoKFsweDUwLCAweDRCLCAweDAzLCAweDA0XSkgJiYgYnVmZmVyLnRvU3RyaW5nKFwiYXNjaWlcIiwgMzAsIDUwKS5pbmNsdWRlcyhcIkFuZHJvaWRNYW5pZmVzdC54bWxcIikpIHJldHVybiBcImFwcGxpY2F0aW9uL3ZuZC5hbmRyb2lkLnBhY2thZ2UtYXJjaGl2ZVwiO1xuXG4gICAgLy8gRm9udHNcbiAgICBpZiAoc3RhcnRzV2l0aChbMHgwMCwgMHgwMSwgMHgwMCwgMHgwMF0pKSByZXR1cm4gXCJmb250L3R0ZlwiO1xuICAgIGlmIChzdGFydHNXaXRoKFsweDRGLCAweDU0LCAweDU0LCAweDRGXSkpIHJldHVybiBcImZvbnQvb3RmXCI7XG4gICAgaWYgKHN0YXJ0c1dpdGgoWzB4NzcsIDB4NEYsIDB4NDYsIDB4NDZdKSkgcmV0dXJuIFwiZm9udC93b2ZmXCI7XG4gICAgaWYgKHN0YXJ0c1dpdGgoWzB4NzcsIDB4NEYsIDB4NDYsIDB4MzJdKSkgcmV0dXJuIFwiZm9udC93b2ZmMlwiO1xuXG4gICAgLy8gV2ViIGZpbGVzICh0ZXh0LWJhc2VkLCBjaGVjayBmb3IgY29tbW9uIHBhdHRlcm5zKVxuICAgIGNvbnN0IHRleHRTdGFydCA9IGJ1ZmZlci50b1N0cmluZyhcInV0ZjhcIiwgMCwgTWF0aC5taW4oMTAwLCBidWZmZXIubGVuZ3RoKSkudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAodGV4dFN0YXJ0LmluY2x1ZGVzKFwiPCFkb2N0eXBlIGh0bWxcIikgfHwgdGV4dFN0YXJ0LmluY2x1ZGVzKFwiPGh0bWxcIikpIHJldHVybiBcInRleHQvaHRtbFwiO1xuICAgIGlmICh0ZXh0U3RhcnQuaW5jbHVkZXMoXCI8P3htbFwiKSkgcmV0dXJuIFwiYXBwbGljYXRpb24veG1sXCI7XG4gICAgaWYgKHRleHRTdGFydC5zdGFydHNXaXRoKFwie1wiKSB8fCB0ZXh0U3RhcnQuc3RhcnRzV2l0aChcIltcIikpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIEpTT04ucGFyc2UoYnVmZmVyLnRvU3RyaW5nKFwidXRmOFwiKSk7XG4gICAgICAgICAgICByZXR1cm4gXCJhcHBsaWNhdGlvbi9qc29uXCI7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgLy8gTm90IEpTT05cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE90aGVyIGZvcm1hdHNcbiAgICBpZiAoc3RhcnRzV2l0aChbMHgyNSwgMHgyMSwgMHg1MCwgMHg1M10pKSByZXR1cm4gXCJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0XCI7XG4gICAgaWYgKHN0YXJ0c1dpdGgoWzB4MzgsIDB4NDIsIDB4NTAsIDB4NTNdKSkgcmV0dXJuIFwiaW1hZ2Uvdm5kLmFkb2JlLnBob3Rvc2hvcFwiO1xuICAgIGlmIChzdGFydHNXaXRoKFsweDQ5LCAweDQ5LCAweDJBLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDQzLCAweDUyXSkpIHJldHVybiBcImltYWdlL3gtY2Fub24tY3IyXCI7XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufSJdfQ==
|
|
368
|
-
/* _JS_SOURCE_HASH = "
|
|
368
|
+
/* _JS_SOURCE_HASH = "66e32b7cef5067e77b95f00bec4f25914748cecfc4aa12ab1b4651458459871f"; */
|