sliftutils 1.7.37 → 1.7.38
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/allowclient.flag +0 -0
- package/electron/electronRenderer.tsx +2 -0
- package/examplestorage/browser.tsx +1 -1
- package/index.d.ts +0 -1
- package/misc/apiKeys.tsx +2 -0
- package/misc/dist/getSecret.ts.cache +2 -2
- package/misc/dist/strings.ts.cache +3 -4
- package/misc/https/certs.ts +0 -2
- package/misc/https/dist/certs.ts.cache +3 -4
- package/misc/https/dist/hostServer.ts.cache +49 -3
- package/misc/https/dist/httpsCerts.ts.cache +5 -11
- package/misc/https/dist/persistentLocalStorage.ts.cache +3 -4
- package/misc/https/persistentLocalStorage.ts +0 -2
- package/misc/strings.ts +0 -2
- package/package.json +1 -1
- package/render-utils/DropdownCustom.tsx +2 -0
- package/render-utils/FullscreenModal.tsx +2 -0
- package/render-utils/Input.tsx +0 -2
- package/render-utils/InputLabel.tsx +1 -1
- package/render-utils/InputPicker.tsx +2 -0
- package/render-utils/LocalStorageParam.ts +2 -0
- package/render-utils/SyncedController.ts +2 -0
- package/render-utils/Table.tsx +2 -0
- package/render-utils/URLParam.ts +2 -0
- package/render-utils/asyncObservable.ts +2 -0
- package/render-utils/colors.tsx +0 -2
- package/render-utils/dist/observer.tsx.cache +3 -3
- package/render-utils/mobxTyped.ts +2 -0
- package/render-utils/modal.tsx +2 -0
- package/render-utils/observer.tsx +1 -1
- package/storage/FileFolderAPI.tsx +2 -0
- package/storage/IArchives.ts +0 -2
- package/storage/PendingManager.tsx +2 -0
- package/storage/StorageObservable.ts +2 -0
- package/storage/dist/FileFolderAPI.tsx.cache +3 -2
- package/storage/dist/IArchives.ts.cache +4 -5
- package/storage/dist/PendingManager.tsx.cache +3 -2
- package/storage/dist/backblaze.ts.cache +2 -2
- package/storage/remoteStorage/ArchivesRemote.ts +0 -2
- package/storage/remoteStorage/ArchivesUrl.ts +0 -2
- package/storage/remoteStorage/accessPage.tsx +1 -1
- package/storage/remoteStorage/createArchives.ts +0 -2
- package/storage/remoteStorage/dist/ArchivesRemote.ts.cache +2 -3
- package/storage/remoteStorage/dist/ArchivesUrl.ts.cache +2 -3
- package/storage/remoteStorage/dist/accessPage.tsx.cache +4 -8
- package/storage/remoteStorage/dist/createArchives.ts.cache +2 -3
- package/storage/remoteStorage/dist/productionEnv.ts.cache +5 -0
- package/storage/remoteStorage/dist/remoteConfig.ts.cache +2 -3
- package/storage/remoteStorage/dist/sourceWrapper.ts.cache +2 -3
- package/storage/remoteStorage/dist/storageController.ts.cache +2 -3
- package/storage/remoteStorage/dist/storageServer.ts.cache +31 -18
- package/storage/remoteStorage/dist/storageServerCli.ts.cache +2 -3
- package/storage/remoteStorage/remoteConfig.ts +0 -2
- package/storage/remoteStorage/sourceWrapper.ts +0 -2
- package/storage/remoteStorage/storageController.ts +0 -2
- package/storage/remoteStorage/storageServer.d.ts +0 -1
- package/storage/remoteStorage/storageServer.ts +2 -2
- package/testsite/browser.tsx +1 -1
- package/testsite/serverInfoController.ts +0 -2
- package/web/ExamplePage.tsx +2 -0
- package/web/browser.tsx +2 -0
- package/storage/remoteStorage/productionEnv.ts +0 -2
|
@@ -1,7 +1,6 @@
|
|
|
1
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";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
|
|
3
3
|
//exports.serializeRemoteConfig = exports.parseRoutingData = exports.normalizeRemoteConfig = exports.normalizeSource = exports.replaceHostedUrlPort = exports.parseBackblazeUrl = exports.parseHostedUrl = exports.buildFileUrl = exports.getBucketBaseUrl = exports.getConfigVersion = exports.routeIntersection = exports.routesOverlap = exports.routeContains = exports.getRoute = exports.parseVariableRoute = exports.ROUTING_FILE = void 0;
|
|
4
|
-
module.allowclient = true;
|
|
5
4
|
const misc_1 = require("socket-function/src/misc");
|
|
6
5
|
const bits_1 = require("socket-function/src/bits");
|
|
7
6
|
const IArchives_1 = require("../IArchives");
|
|
@@ -220,5 +219,5 @@ function serializeRemoteConfig(config) {
|
|
|
220
219
|
return Buffer.from(JSON.stringify(config, undefined, 4));
|
|
221
220
|
}
|
|
222
221
|
exports.serializeRemoteConfig = serializeRemoteConfig;
|
|
223
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlQ29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicmVtb3RlQ29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0FBRTFCLG1EQUFrRTtBQUNsRSxtREFBd0Q7QUFDeEQsNENBQTRJO0FBRTVJLHNTQUFzUztBQUV6UixRQUFBLFlBQVksR0FBRyw2QkFBNkIsQ0FBQztBQUMxRCxNQUFNLGNBQWMsR0FBRyxHQUFHLEdBQUcsb0JBQVksQ0FBQztBQUUxQyxNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUUzQyxvTEFBb0w7QUFDcEwsU0FBZ0Isa0JBQWtCLENBQUMsR0FBVztJQUMxQyxJQUFJLEtBQUssR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLDBCQUFjLENBQUMsQ0FBQztJQUN4QyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUNuQyxJQUFJLEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsMEJBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQy9FLElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDN0IsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyQixDQUFDO0FBTkQsZ0RBTUM7QUFFRCx3R0FBd0c7QUFDeEcsU0FBZ0IsUUFBUSxDQUFDLEdBQVc7SUFDaEMsSUFBSSxRQUFRLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsSUFBSSxRQUFRLEtBQUssU0FBUztRQUFFLE9BQU8sUUFBUSxDQUFDO0lBQzVDLElBQUksSUFBSSxHQUFHLElBQUEsbUJBQVksRUFBQyxJQUFBLHVCQUFnQixFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDL0MsT0FBTyxJQUFJLEdBQUcsZUFBZSxHQUFHLGVBQWUsQ0FBQztBQUNwRCxDQUFDO0FBTEQsNEJBS0M7QUFFRCxpRUFBaUU7QUFDakUsU0FBZ0IsYUFBYSxDQUFDLEtBQW1DLEVBQUUsS0FBYTtJQUM1RSxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3hCLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFIRCxzQ0FHQztBQUNELFNBQWdCLGFBQWEsQ0FBQyxDQUErQixFQUFFLENBQStCO0lBQzFGLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLHNCQUFVLENBQUM7SUFDckMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksc0JBQVUsQ0FBQztJQUNyQyxPQUFPLE1BQU0sR0FBRyxJQUFJLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQztBQUMxQyxDQUFDO0FBSkQsc0NBSUM7QUFDRCw2RUFBNkU7QUFDN0UsU0FBZ0IsaUJBQWlCLENBQUMsQ0FBK0IsRUFBRSxDQUErQjtJQUM5RixJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxzQkFBVSxDQUFDO0lBQ3JDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLHNCQUFVLENBQUM7SUFDckMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDckMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDL0IsSUFBSSxLQUFLLElBQUksR0FBRztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ25DLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDeEIsQ0FBQztBQVBELDhDQU9DO0FBRUQsOEZBQThGO0FBQzlGLFNBQWdCLGdCQUFnQixDQUFDLE1BQW9COztJQUNqRCxPQUFPLE1BQUEsTUFBTSxDQUFDLE9BQU8sbUNBQUksQ0FBQyxDQUFDLENBQUM7QUFDaEMsQ0FBQztBQUZELDRDQUVDO0FBRUQsc0dBQXNHO0FBQ3RHLFNBQWdCLGdCQUFnQixDQUFDLEdBQVc7SUFDeEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztRQUNoQyxNQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxTQUFTLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9ILENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFMRCw0Q0FLQztBQUVELFNBQWdCLFlBQVksQ0FBQyxPQUFlLEVBQUUsUUFBZ0I7SUFDMUQsT0FBTyxPQUFPLEdBQUcsR0FBRyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pGLENBQUM7QUFGRCxvQ0FFQztBQUVELHlHQUF5RztBQUN6RyxTQUFnQixjQUFjLENBQUMsR0FBVztJQUN0QyxJQUFJLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QixJQUFJLENBQUMsQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0csQ0FBQztJQUNELElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sRUFBRSxDQUFDO1FBQzVDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0ZBQWtGLGNBQWMsU0FBUyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwSixDQUFDO0lBQ0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksR0FBRyxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUMxSSxDQUFDO0FBWEQsd0NBV0M7QUFFRCxzR0FBc0c7QUFDdEcsU0FBZ0IsaUJBQWlCLENBQUMsR0FBVztJQUN6QyxJQUFJLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxNQUFNLEVBQUUsQ0FBQztRQUM1QyxNQUFNLElBQUksS0FBSyxDQUFDLHNGQUFzRixjQUFjLFNBQVMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEosQ0FBQztJQUNELE9BQU8sRUFBRSxVQUFVLEVBQUUsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN4RCxDQUFDO0FBUkQsOENBUUM7QUFFRCxTQUFnQixvQkFBb0IsQ0FBQyxHQUFXLEVBQUUsSUFBWTtJQUMxRCxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQixDQUFDLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QixPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUN4QixDQUFDO0FBSkQsb0RBSUM7QUFFRCxTQUFnQixlQUFlLENBQUMsTUFBd0I7SUFDcEQsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM3QixJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDN0YsTUFBTSxJQUFJLEtBQUssQ0FBQyw2T0FBNk8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RVLENBQUM7UUFDRCxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ3pCLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDM0ssTUFBTSxJQUFJLEtBQUssQ0FBQywwRkFBMEYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xMLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxlQUFlLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDdkMsSUFBSSxPQUFPLE1BQU0sQ0FBQyxlQUFlLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxlQUFlLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzVFLE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDL0osQ0FBQztZQUNELElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUdBQWlHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDN0osQ0FBQztRQUNMLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDM0Isb0ZBQW9GO1lBQ3BGLGNBQWMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFDRCxJQUFJLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDeEMsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztRQUN4QyxvSkFBb0o7UUFDcEosaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUIsT0FBTyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsNkJBQWlCLEVBQUUsQ0FBQztJQUM5RSxDQUFDO0lBQ0QsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZCLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLDZCQUFpQixFQUFFLENBQUM7QUFDM0UsQ0FBQztBQWhDRCwwQ0FnQ0M7QUFFRCwrRkFBK0Y7QUFDL0YsU0FBUyxnQkFBZ0IsQ0FBQyxPQUEyQztJQUNqRSxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxzQkFBVSxDQUFDLENBQUM7SUFDckQsSUFBQSxXQUFJLEVBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEIsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ2hCLEtBQUssSUFBSSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUM7UUFDdkIsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTztZQUFFLE1BQU07UUFDOUIsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNuQixDQUFDO0FBRUQsU0FBZ0IscUJBQXFCLENBQUMsTUFBdUM7SUFDekUsSUFBSSxNQUFvQixDQUFDO0lBQ3pCLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxJQUFJLFNBQVMsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNwRCxNQUFNLEdBQUcsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztJQUN2RixDQUFDO1NBQU0sQ0FBQztRQUNKLE1BQU0sR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUNELHFiQUFxYjtJQUNyYixJQUFJLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNsRCxJQUFJLE1BQU0sR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDMUIsSUFBQSxXQUFJLEVBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLElBQUksS0FBSyxHQUFtQixFQUFFLENBQUM7SUFDL0IsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQ2pCLFNBQVMsVUFBVTtRQUNmLElBQUksY0FBYyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQzNELElBQUksY0FBYyxJQUFJLGNBQWMsS0FBSyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxzRUFBc0UsY0FBYyxPQUFPLEtBQUssQ0FBQyxNQUFNLDRCQUE0QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pRLENBQUM7UUFDRCxrSEFBa0g7UUFDbEgsSUFBSSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLG9HQUFvRyxPQUFPLGNBQWMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLHNCQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM1AsQ0FBQztRQUNELDhqQkFBOGpCO1FBQzlqQixJQUFJLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBd0IsQ0FBQztRQUM1QyxLQUFLLElBQUksTUFBTSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3ZCLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDWCxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNiLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNuQyxDQUFDO1lBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QixDQUFDO1FBQ0QsS0FBSyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQy9CLElBQUksVUFBVSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNDLElBQUksVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLGtIQUFrSCxHQUFHLHNCQUFzQixVQUFVLGlCQUFpQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLHNCQUFVLENBQUMsQ0FBQyxrWEFBa1gsQ0FBQyxDQUFDO1lBQ3JtQixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFDRCxLQUFLLElBQUksTUFBTSxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ3hCLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ3BELFVBQVUsRUFBRSxDQUFDO1lBQ2IsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNmLENBQUM7UUFDRCxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25CLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUNELFVBQVUsRUFBRSxDQUFDO0lBQ2IsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztBQWxERCxzREFrREM7QUFFRCxTQUFnQixnQkFBZ0IsQ0FBQyxJQUFZO0lBQ3pDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixJQUFJLE1BQW9CLENBQUM7SUFDekIsSUFBSSxDQUFDO1FBQ0QsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFpQixDQUFDO0lBQzlDLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1QsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwRyxDQUFDO0lBQ0QsSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQzFFLE1BQU0sSUFBSSxLQUFLLENBQUMsNERBQTRELElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0RyxDQUFDO0lBQ0QsT0FBTyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBWkQsNENBWUM7QUFFRCxTQUFnQixxQkFBcUIsQ0FBQyxNQUFvQjtJQUN0RCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUZELHNEQUVDIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmFsbG93Y2xpZW50ID0gdHJ1ZTtcblxuaW1wb3J0IHsgc29ydCwgc2hhMjU2SGFzaEJ1ZmZlciB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL21pc2NcIjtcbmltcG9ydCB7IGdldEJ1ZmZlckludCB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL2JpdHNcIjtcbmltcG9ydCB7IFJlbW90ZUNvbmZpZywgUmVtb3RlQ29uZmlnQmFzZSwgSG9zdGVkQ29uZmlnLCBCYWNrYmxhemVDb25maWcsIEZVTExfVkFMSURfV0lORE9XLCBGVUxMX1JPVVRFLCBWQVJJQUJMRV9TSEFSRCB9IGZyb20gXCIuLi9JQXJjaGl2ZXNcIjtcblxuLy8gUGFyc2luZyAvIG5vcm1hbGl6YXRpb24gb2YgUmVtb3RlQ29uZmlnIChzZWUgSUFyY2hpdmVzLnRzKS4gRXZlcnkgYnVja2V0IHN0b3JlcyBpdHMgb3duIGNvbmZpZ3VyYXRpb24gKGEgUmVtb3RlQ29uZmlnKSBpbnNpZGUgaXRzZWxmLCBhdCBST1VUSU5HX0ZJTEUuIFdyaXRpbmcgdGhhdCBmaWxlIGNyZWF0ZXMgdGhlIGJ1Y2tldCAvIHJlY29uZmlndXJlcyBpdCAoc2VlIHN0b3JhZ2VTZXJ2ZXJTdGF0ZS50cyk7IGNsaWVudHMgcmVjb25jaWxlIGl0IGJ5IHZlcnNpb24gKHNlZSBjcmVhdGVBcmNoaXZlcy50cykuXG5cbmV4cG9ydCBjb25zdCBST1VUSU5HX0ZJTEUgPSBcInN0b3JhZ2Uvc3RvcmFnZXJvdXRpbmcuanNvblwiO1xuY29uc3QgUk9VVElOR19TVUZGSVggPSBcIi9cIiArIFJPVVRJTkdfRklMRTtcblxuY29uc3QgUk9VVEVfUFJFQ0lTSU9OID0gMTAwMCAqIDEwMDAgKiAxMDAwO1xuXG4vKiogVGhlIHZhcmlhYmxlLXNoYXJkIHJvdXRlIG92ZXJyaWRlIGVtYmVkZGVkIGluIHRoZSBrZXkgKFwiPHNlbnRpbmVsPl88dmFsdWU+XCIsIHNlZSBWQVJJQUJMRV9TSEFSRCksIG9yIHVuZGVmaW5lZCB3aGVuIHRoZSBrZXkgaGFzIG5vIHNlbnRpbmVsIG9yIHRoZSBzZW50aW5lbCBoYXMgbm8gdmFsdWUgeWV0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVmFyaWFibGVSb3V0ZShrZXk6IHN0cmluZyk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IGluZGV4ID0ga2V5LmluZGV4T2YoVkFSSUFCTEVfU0hBUkQpO1xuICAgIGlmIChpbmRleCA9PT0gLTEpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgbGV0IG1hdGNoID0gL15fKFxcZCsoPzpcXC5cXGQrKT8pLy5leGVjKGtleS5zbGljZShpbmRleCArIFZBUklBQkxFX1NIQVJELmxlbmd0aCkpO1xuICAgIGlmICghbWF0Y2gpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuICttYXRjaFsxXTtcbn1cblxuLyoqIFdoZXJlIGEga2V5IHJvdXRlcyBpbiBbMCwgMSkuIEEgbWF0ZXJpYWxpemVkIHZhcmlhYmxlLXNoYXJkIHN1ZmZpeCBjb21wbGV0ZWx5IG92ZXJyaWRlcyB0aGUgaGFzaC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb3V0ZShrZXk6IHN0cmluZyk6IG51bWJlciB7XG4gICAgbGV0IG92ZXJyaWRlID0gcGFyc2VWYXJpYWJsZVJvdXRlKGtleSk7XG4gICAgaWYgKG92ZXJyaWRlICE9PSB1bmRlZmluZWQpIHJldHVybiBvdmVycmlkZTtcbiAgICBsZXQgaGFzaCA9IGdldEJ1ZmZlckludChzaGEyNTZIYXNoQnVmZmVyKGtleSkpO1xuICAgIHJldHVybiBoYXNoICUgUk9VVEVfUFJFQ0lTSU9OIC8gUk9VVEVfUFJFQ0lTSU9OO1xufVxuXG4vLyBSb3V0ZSByYW5nZXMgYXJlIFtzdGFydCwgZW5kKSAtIGluY2x1c2l2ZSBzdGFydCwgZXhjbHVzaXZlIGVuZFxuZXhwb3J0IGZ1bmN0aW9uIHJvdXRlQ29udGFpbnMocm91dGU6IFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQsIHZhbHVlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAoIXJvdXRlKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gcm91dGVbMF0gPD0gdmFsdWUgJiYgdmFsdWUgPCByb3V0ZVsxXTtcbn1cbmV4cG9ydCBmdW5jdGlvbiByb3V0ZXNPdmVybGFwKGE6IFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQsIGI6IFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICBsZXQgW2FTdGFydCwgYUVuZF0gPSBhIHx8IEZVTExfUk9VVEU7XG4gICAgbGV0IFtiU3RhcnQsIGJFbmRdID0gYiB8fCBGVUxMX1JPVVRFO1xuICAgIHJldHVybiBhU3RhcnQgPCBiRW5kICYmIGJTdGFydCA8IGFFbmQ7XG59XG4vKiogVGhlIG92ZXJsYXAgb2YgdHdvIHJvdXRlIHJhbmdlcywgb3IgdW5kZWZpbmVkIHdoZW4gdGhleSBkb24ndCBvdmVybGFwLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJvdXRlSW50ZXJzZWN0aW9uKGE6IFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQsIGI6IFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQpOiBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgW2FTdGFydCwgYUVuZF0gPSBhIHx8IEZVTExfUk9VVEU7XG4gICAgbGV0IFtiU3RhcnQsIGJFbmRdID0gYiB8fCBGVUxMX1JPVVRFO1xuICAgIGxldCBzdGFydCA9IE1hdGgubWF4KGFTdGFydCwgYlN0YXJ0KTtcbiAgICBsZXQgZW5kID0gTWF0aC5taW4oYUVuZCwgYkVuZCk7XG4gICAgaWYgKHN0YXJ0ID49IGVuZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gW3N0YXJ0LCBlbmRdO1xufVxuXG4vLyBBIG1pc3NpbmcgdmVyc2lvbiBjb3VudHMgYXMgLTEsIHNvIGFueSBleHBsaWNpdGx5IHZlcnNpb25lZCBjb25maWcgYmVhdHMgYW4gdW52ZXJzaW9uZWQgb25lXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29uZmlnVmVyc2lvbihjb25maWc6IFJlbW90ZUNvbmZpZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIGNvbmZpZy52ZXJzaW9uID8/IC0xO1xufVxuXG4vKiogU3RyaXBzIHRoZSByb3V0aW5nLWZpbGUgc3VmZml4LCBsZWF2aW5nIHRoZSBidWNrZXQncyBwdWJsaWMgYmFzZSBVUkwgKGZpbGUgcGF0aHMgYXBwZW5kIHRvIGl0KS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCdWNrZXRCYXNlVXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXVybC5lbmRzV2l0aChST1VUSU5HX1NVRkZJWCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhIGJ1Y2tldCByb3V0aW5nIFVSTCBlbmRpbmcgd2l0aCAke0pTT04uc3RyaW5naWZ5KFJPVVRJTkdfU1VGRklYKX0sIHdhcyAke0pTT04uc3RyaW5naWZ5KHVybCl9YCk7XG4gICAgfVxuICAgIHJldHVybiB1cmwuc2xpY2UoMCwgLVJPVVRJTkdfU1VGRklYLmxlbmd0aCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEZpbGVVcmwoYmFzZVVybDogc3RyaW5nLCBmaWxlUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYmFzZVVybCArIFwiL1wiICsgZmlsZVBhdGguc3BsaXQoXCIvXCIpLm1hcChlbmNvZGVVUklDb21wb25lbnQpLmpvaW4oXCIvXCIpO1xufVxuXG4vLyBFeDogaHR0cHM6Ly9zdG9yYWdlMi52aWRncmlkd2ViLmNvbTo0NDQ1L2ZpbGUvZXhhbXBsZWFjY291bnQvZXhhbXBsZWJ1Y2tldC9zdG9yYWdlL3N0b3JhZ2Vyb3V0aW5nLmpzb25cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUhvc3RlZFVybCh1cmw6IHN0cmluZyk6IHsgYWRkcmVzczogc3RyaW5nOyBwb3J0OiBudW1iZXI7IGFjY291bnQ6IHN0cmluZzsgYnVja2V0TmFtZTogc3RyaW5nIH0ge1xuICAgIGxldCBiYXNlID0gZ2V0QnVja2V0QmFzZVVybCh1cmwpO1xuICAgIGxldCB1ID0gbmV3IFVSTChiYXNlKTtcbiAgICBpZiAodS5wcm90b2NvbCAhPT0gXCJodHRwczpcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFN0b3JhZ2UgVVJMIG11c3QgdXNlIGh0dHBzLCBnb3QgJHtKU09OLnN0cmluZ2lmeSh1LnByb3RvY29sKX0gaW4gJHtKU09OLnN0cmluZ2lmeSh1cmwpfWApO1xuICAgIH1cbiAgICBsZXQgcGFydHMgPSB1LnBhdGhuYW1lLnNwbGl0KFwiL1wiKS5maWx0ZXIoeCA9PiB4KTtcbiAgICBpZiAocGFydHMubGVuZ3RoICE9PSAzIHx8IHBhcnRzWzBdICE9PSBcImZpbGVcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGEgaG9zdGVkIGJ1Y2tldCBVUkwgbGlrZSBodHRwczovL2hvc3Q6cG9ydC9maWxlLzxhY2NvdW50Pi88YnVja2V0TmFtZT4ke1JPVVRJTkdfU1VGRklYfSwgd2FzICR7SlNPTi5zdHJpbmdpZnkodXJsKX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgYWRkcmVzczogdS5ob3N0bmFtZSwgcG9ydDogK3UucG9ydCB8fCA0NDMsIGFjY291bnQ6IGRlY29kZVVSSUNvbXBvbmVudChwYXJ0c1sxXSksIGJ1Y2tldE5hbWU6IGRlY29kZVVSSUNvbXBvbmVudChwYXJ0c1syXSkgfTtcbn1cblxuLy8gRXg6IGh0dHBzOi8vZjAwMi5iYWNrYmxhemViMi5jb20vZmlsZS9xdWVyeXN1YnRlc3QtY29tLXB1YmxpYy1pbW11dGFibGUvc3RvcmFnZS9zdG9yYWdlcm91dGluZy5qc29uXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VCYWNrYmxhemVVcmwodXJsOiBzdHJpbmcpOiB7IGJ1Y2tldE5hbWU6IHN0cmluZyB9IHtcbiAgICBsZXQgYmFzZSA9IGdldEJ1Y2tldEJhc2VVcmwodXJsKTtcbiAgICBsZXQgdSA9IG5ldyBVUkwoYmFzZSk7XG4gICAgbGV0IHBhcnRzID0gdS5wYXRobmFtZS5zcGxpdChcIi9cIikuZmlsdGVyKHggPT4geCk7XG4gICAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gMiB8fCBwYXJ0c1swXSAhPT0gXCJmaWxlXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhIGJhY2tibGF6ZSBidWNrZXQgVVJMIGxpa2UgaHR0cHM6Ly9mMDAyLmJhY2tibGF6ZWIyLmNvbS9maWxlLzxidWNrZXROYW1lPiR7Uk9VVElOR19TVUZGSVh9LCB3YXMgJHtKU09OLnN0cmluZ2lmeSh1cmwpfWApO1xuICAgIH1cbiAgICByZXR1cm4geyBidWNrZXROYW1lOiBkZWNvZGVVUklDb21wb25lbnQocGFydHNbMV0pIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlSG9zdGVkVXJsUG9ydCh1cmw6IHN0cmluZywgcG9ydDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBsZXQgdSA9IG5ldyBVUkwodXJsKTtcbiAgICB1LnBvcnQgPSBTdHJpbmcocG9ydCk7XG4gICAgcmV0dXJuIHUudG9TdHJpbmcoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVNvdXJjZShzb3VyY2U6IFJlbW90ZUNvbmZpZ0Jhc2UpOiBIb3N0ZWRDb25maWcgfCBCYWNrYmxhemVDb25maWcge1xuICAgIGlmICh0eXBlb2Ygc291cmNlICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGxldCB3aW5kb3cgPSBzb3VyY2UudmFsaWRXaW5kb3c7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh3aW5kb3cpIHx8IHdpbmRvdy5sZW5ndGggIT09IDIgfHwgIXdpbmRvdy5ldmVyeSh4ID0+IHR5cGVvZiB4ID09PSBcIm51bWJlclwiKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBPYmplY3Qgc291cmNlIGNvbmZpZ3MgbXVzdCBzcGVjaWZ5IHZhbGlkV2luZG93IChbc3RhcnRNcywgZW5kTXNdIG9mIHRoZSB3cml0ZSB0aW1lcyB0aGUgc291cmNlIGlzIHZhbGlkIGZvcikgLSBjb25maWd1cmF0aW9uIGNoYW5nZXMgbXVzdCBiZSBzY2hlZHVsZWQsIG5vdCBmbGlwcGVkIGluc3RhbnRseS4gVXNlIEZVTExfVkFMSURfV0lORE9XIHdoZW4gdGhlIHNvdXJjZSBpcyBhbHdheXMgdmFsaWQuIFdhcyAke0pTT04uc3RyaW5naWZ5KHdpbmRvdyl9IG9uICR7SlNPTi5zdHJpbmdpZnkoc291cmNlKS5zbGljZSgwLCA1MDApfWApO1xuICAgICAgICB9XG4gICAgICAgIGxldCByb3V0ZSA9IHNvdXJjZS5yb3V0ZTtcbiAgICAgICAgaWYgKHJvdXRlICE9PSB1bmRlZmluZWQgJiYgKCFBcnJheS5pc0FycmF5KHJvdXRlKSB8fCByb3V0ZS5sZW5ndGggIT09IDIgfHwgIXJvdXRlLmV2ZXJ5KHggPT4gdHlwZW9mIHggPT09IFwibnVtYmVyXCIpIHx8IHJvdXRlWzBdIDwgMCB8fCByb3V0ZVsxXSA+IDEgfHwgcm91dGVbMF0gPj0gcm91dGVbMV0pKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNvdXJjZSByb3V0ZSBtdXN0IGJlIGEgW3N0YXJ0LCBlbmQpIGZyYWN0aW9uIHJhbmdlIHdpdGhpbiBbMCwgMV0gd2l0aCBzdGFydCA8IGVuZCwgd2FzICR7SlNPTi5zdHJpbmdpZnkocm91dGUpfSBvbiAke0pTT04uc3RyaW5naWZ5KHNvdXJjZSkuc2xpY2UoMCwgNTAwKX1gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc291cmNlLnJlYWRlckRpc2tMaW1pdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHNvdXJjZS5yZWFkZXJEaXNrTGltaXQgIT09IFwibnVtYmVyXCIgfHwgc291cmNlLnJlYWRlckRpc2tMaW1pdCA8PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGByZWFkZXJEaXNrTGltaXQgbXVzdCBiZSBhIHBvc2l0aXZlIGJ5dGUgY291bnQsIHdhcyAke0pTT04uc3RyaW5naWZ5KHNvdXJjZS5yZWFkZXJEaXNrTGltaXQpfSBvbiAke0pTT04uc3RyaW5naWZ5KHNvdXJjZSkuc2xpY2UoMCwgNTAwKX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghc291cmNlLm5vRnVsbFN5bmMpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHJlYWRlckRpc2tMaW1pdCByZXF1aXJlcyBub0Z1bGxTeW5jOiBhIGZ1bGwgY29weSBjYW5ub3QgYmUgYm91bmRlZCwgb25seSBhIHJlYWQgY2FjaGUgY2FuLiBPbiAke0pTT04uc3RyaW5naWZ5KHNvdXJjZSkuc2xpY2UoMCwgNTAwKX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoc291cmNlLnR5cGUgPT09IFwicmVtb3RlXCIpIHtcbiAgICAgICAgICAgIC8vIFRocm93cyBpZiB0aGUgVVJMIGlzIG1hbGZvcm1lZCwgc28gYmFkIGNvbmZpZ3MgYXJlIHJlamVjdGVkIGJlZm9yZSB0aGV5J3JlIHN0b3JlZFxuICAgICAgICAgICAgcGFyc2VIb3N0ZWRVcmwoc291cmNlLnVybCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICB9XG4gICAgbGV0IGhvc3RuYW1lID0gbmV3IFVSTChzb3VyY2UpLmhvc3RuYW1lO1xuICAgIGlmIChob3N0bmFtZS5lbmRzV2l0aChcIi5iYWNrYmxhemViMi5jb21cIikpIHtcbiAgICAgICAgLy8gVmFsaWRhdGVzIHRoZSBVUkwgKHRocm93cyBvbiBtYWxmb3JtZWQpIGJlZm9yZSBpdCdzIHN0b3JlZDsgdGhlIGJ1Y2tldCBuYW1lIGlzIHJlYWQgYmFjayBvdXQgb2YgdGhlIFVSTCBhdCB1c2Ugc2l0ZXMsIG5ldmVyIHN0b3JlZCBvbiB0aGUgY29uZmlnLlxuICAgICAgICBwYXJzZUJhY2tibGF6ZVVybChzb3VyY2UpO1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcImJhY2tibGF6ZVwiLCB1cmw6IHNvdXJjZSwgdmFsaWRXaW5kb3c6IEZVTExfVkFMSURfV0lORE9XIH07XG4gICAgfVxuICAgIHBhcnNlSG9zdGVkVXJsKHNvdXJjZSk7XG4gICAgcmV0dXJuIHsgdHlwZTogXCJyZW1vdGVcIiwgdXJsOiBzb3VyY2UsIHZhbGlkV2luZG93OiBGVUxMX1ZBTElEX1dJTkRPVyB9O1xufVxuXG4vKiogSG93IGZhciB1cCBmcm9tIDAgdGhlIHNvdXJjZXMnIHJvdXRlcyByZWFjaCB3aXRob3V0IGEgZ2FwICgxIG1lYW5zIHRoZSB3aG9sZSBrZXkgc3BhY2UpLiAqL1xuZnVuY3Rpb24gZ2V0Um91dGVDb3ZlcmFnZShzb3VyY2VzOiAoSG9zdGVkQ29uZmlnIHwgQmFja2JsYXplQ29uZmlnKVtdKTogbnVtYmVyIHtcbiAgICBsZXQgcm91dGVzID0gc291cmNlcy5tYXAoeCA9PiB4LnJvdXRlIHx8IEZVTExfUk9VVEUpO1xuICAgIHNvcnQocm91dGVzLCB4ID0+IHhbMF0pO1xuICAgIGxldCBjb3ZlcmVkID0gMDtcbiAgICBmb3IgKGxldCByb3V0ZSBvZiByb3V0ZXMpIHtcbiAgICAgICAgaWYgKHJvdXRlWzBdID4gY292ZXJlZCkgYnJlYWs7XG4gICAgICAgIGNvdmVyZWQgPSBNYXRoLm1heChjb3ZlcmVkLCByb3V0ZVsxXSk7XG4gICAgfVxuICAgIHJldHVybiBjb3ZlcmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplUmVtb3RlQ29uZmlnKGNvbmZpZzogUmVtb3RlQ29uZmlnIHwgUmVtb3RlQ29uZmlnQmFzZSk6IFJlbW90ZUNvbmZpZyB7XG4gICAgbGV0IHJlc3VsdDogUmVtb3RlQ29uZmlnO1xuICAgIGlmICh0eXBlb2YgY29uZmlnICE9PSBcInN0cmluZ1wiICYmIFwic291cmNlc1wiIGluIGNvbmZpZykge1xuICAgICAgICByZXN1bHQgPSB7IHZlcnNpb246IGNvbmZpZy52ZXJzaW9uLCBzb3VyY2VzOiBjb25maWcuc291cmNlcy5tYXAobm9ybWFsaXplU291cmNlKSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IHsgc291cmNlczogW25vcm1hbGl6ZVNvdXJjZShjb25maWcpXSB9O1xuICAgIH1cbiAgICAvLyBNaXhlZCBpbW11dGFiaWxpdHkgbWFrZXMgbm8gc2Vuc2UgQU1PTkcgc291cmNlcyB2YWxpZCBhdCB0aGUgc2FtZSB0aW1lOiBhIG11dGFibGUgc291cmNlIHdvdWxkIGFjY2VwdCBvdmVyd3JpdGVzIHRoYXQgaXRzIGltbXV0YWJsZSBwZWVycyByZWZ1c2UgdG8gc3luY2hyb25pemUsIGZvcmtpbmcgdGhlaXIgY29udGVudHMuIFNvdXJjZXMgYXJlIGdyb3VwZWQgYnkgdHJhbnNpdGl2ZWx5IG92ZXJsYXBwaW5nIHZhbGlkIHdpbmRvd3MgKGFic29yYiBldmVyeXRoaW5nIG92ZXJsYXBwaW5nIHRoZSBncm91cCwgZXh0ZW5kIHRoZSBncm91cCdzIGVuZCwgcmVwZWF0KSAtIGEgc29mdCBjaGVjayB0aGF0IGlzIGNvcnJlY3QgYXMgbG9uZyBhcyB3aW5kb3dzIGhhdmUgY2xlYW4gYnJlYWtzIChhIGdyb3VwIGVuZHMgZXhhY3RseSB3aGVyZSB0aGUgbmV4dCBiZWdpbnMpLlxuICAgIGxldCBzb3VyY2VzID0gcmVzdWx0LnNvdXJjZXMubWFwKG5vcm1hbGl6ZVNvdXJjZSk7XG4gICAgbGV0IHNvcnRlZCA9IFsuLi5zb3VyY2VzXTtcbiAgICBzb3J0KHNvcnRlZCwgeCA9PiB4LnZhbGlkV2luZG93WzBdKTtcbiAgICBsZXQgZ3JvdXA6IHR5cGVvZiBzb3VyY2VzID0gW107XG4gICAgbGV0IGdyb3VwRW5kID0gMDtcbiAgICBmdW5jdGlvbiBjaGVja0dyb3VwKCkge1xuICAgICAgICBsZXQgaW1tdXRhYmxlQ291bnQgPSBncm91cC5maWx0ZXIoeCA9PiB4LmltbXV0YWJsZSkubGVuZ3RoO1xuICAgICAgICBpZiAoaW1tdXRhYmxlQ291bnQgJiYgaW1tdXRhYmxlQ291bnQgIT09IGdyb3VwLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTb3VyY2VzIHdpdGggb3ZlcmxhcHBpbmcgdmFsaWQgd2luZG93cyBtdXN0IGFncmVlIG9uIGltbXV0YWJpbGl0eTogJHtpbW11dGFibGVDb3VudH0gb2YgJHtncm91cC5sZW5ndGh9IGFyZSBpbW11dGFibGUuIFNvdXJjZXM6ICR7SlNPTi5zdHJpbmdpZnkoZ3JvdXAubWFwKHggPT4gKHsgdXJsOiB4LnVybCwgdmFsaWRXaW5kb3c6IHgudmFsaWRXaW5kb3csIGltbXV0YWJsZTogISF4LmltbXV0YWJsZSB9KSkpfWApO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRoZSBzb3VyY2VzIHZhbGlkIGF0IGFueSBpbnN0YW50IG11c3QgY292ZXIgdGhlIHdob2xlIGtleSBzcGFjZSwgb3Iga2V5cyByb3V0aW5nIGludG8gYSBnYXAgY291bGQgbmV2ZXIgYmUgcmVhZFxuICAgICAgICBsZXQgY292ZXJlZCA9IGdldFJvdXRlQ292ZXJhZ2UoZ3JvdXApO1xuICAgICAgICBpZiAoY292ZXJlZCA8IDEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgU291cmNlcyB3aXRoIG92ZXJsYXBwaW5nIHZhbGlkIHdpbmRvd3MgbXVzdCBjb3ZlciB0aGUgZnVsbCByb3V0ZSBzcGFjZSBbMCwgMSk7IGNvdmVyYWdlIHN0b3BzIGF0ICR7Y292ZXJlZH0uIFNvdXJjZXM6ICR7SlNPTi5zdHJpbmdpZnkoZ3JvdXAubWFwKHggPT4gKHsgdXJsOiB4LnVybCwgdmFsaWRXaW5kb3c6IHgudmFsaWRXaW5kb3csIHJvdXRlOiB4LnJvdXRlIHx8IEZVTExfUk9VVEUgfSkpKX1gKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBFdmVyeSBidWNrZXQgbXVzdCBBTFNPIGNvdmVyIHRoZSBmdWxsIHJvdXRlIHNwYWNlIGFjcm9zcyBpdHMgb3duIGVudHJpZXMsIGJlY2F1c2UgYWxsIG9mIGEgYnVja2V0J3MgZW50cmllcyBzaGFyZSBvbmUgZGlzay4gQSBidWNrZXQgdGhhdCBvbmx5IGV2ZXIgc3luY2hyb25pemVzIHBhcnQgb2YgdGhlIGtleSBzcGFjZSBuZXZlciBsZWFybnMgYWJvdXQgZGVsZXRpb25zIGluIHRoZSByZXN0IG9mIGl0IC0gYW5kIHRvbWJzdG9uZXMgZXhwaXJlLCBzbyBmaWxlcyBpdCBzdGlsbCBob2xkcyBmcm9tIGEgcm91dGUgaXQgbm8gbG9uZ2VyIHNlcnZlcyBldmVudHVhbGx5IGxvb2sgbGlrZSBsaXZlIGZpbGVzIGFnYWluLCBhbmQgZ2V0IHJlc3VycmVjdGVkIGludG8gdGhlIGNoYWluIGJ5IGl0cyBuZXh0IHNjYW4uIEFuIGVudHJ5IHdpdGggbm8gcm91dGUgKGltcGxpY2l0bHkgdGhlIGZ1bGwgc3BhY2UpIHNhdGlzZmllcyB0aGlzIG9uIGl0cyBvd24sIHdoaWNoIGlzIHdoeSB0aGUgdXN1YWwgY29uZmlndXJhdGlvbiBsaXN0cyBlYWNoIGJ1Y2tldCBvbmNlIHBlciBzaGFyZCBBTkQgb25jZSB1bnNoYXJkZWQuXG4gICAgICAgIGxldCBieVVybCA9IG5ldyBNYXA8c3RyaW5nLCB0eXBlb2YgZ3JvdXA+KCk7XG4gICAgICAgIGZvciAobGV0IHNvdXJjZSBvZiBncm91cCkge1xuICAgICAgICAgICAgbGV0IGVudHJpZXMgPSBieVVybC5nZXQoc291cmNlLnVybCk7XG4gICAgICAgICAgICBpZiAoIWVudHJpZXMpIHtcbiAgICAgICAgICAgICAgICBlbnRyaWVzID0gW107XG4gICAgICAgICAgICAgICAgYnlVcmwuc2V0KHNvdXJjZS51cmwsIGVudHJpZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZW50cmllcy5wdXNoKHNvdXJjZSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgW3VybCwgZW50cmllc10gb2YgYnlVcmwpIHtcbiAgICAgICAgICAgIGxldCB1cmxDb3ZlcmVkID0gZ2V0Um91dGVDb3ZlcmFnZShlbnRyaWVzKTtcbiAgICAgICAgICAgIGlmICh1cmxDb3ZlcmVkIDwgMSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXZlcnkgYnVja2V0IG11c3QgY292ZXIgdGhlIGZ1bGwgcm91dGUgc3BhY2UgWzAsIDEpIGFjcm9zcyBpdHMgb3duIGVudHJpZXMgd2l0aCBvdmVybGFwcGluZyB2YWxpZCB3aW5kb3dzLCBidXQgJHt1cmx9IG9ubHkgY292ZXJzIHVwIHRvICR7dXJsQ292ZXJlZH0gKGl0cyByb3V0ZXM6ICR7SlNPTi5zdHJpbmdpZnkoZW50cmllcy5tYXAoeCA9PiB4LnJvdXRlIHx8IEZVTExfUk9VVEUpKX0pLiBBZGQgYW4gZW50cnkgZm9yIGl0IHdpdGggbm8gcm91dGUgKG9yIGVudHJpZXMgd2hvc2Ugcm91dGVzIHNwYW4gdGhlIHJlc3QpLCBhbG9uZ3NpZGUgaXRzIHNoYXJkZWQgZW50cmllcy4gVGhpcyBpcyBlbmZvcmNlZCBiZWNhdXNlIGEgYnVja2V0J3MgZW50cmllcyBhbGwgc2hhcmUgb25lIGRpc2s6IGlmIGl0IG9ubHkgZXZlciBzeW5jaHJvbml6ZXMgcGFydCBvZiB0aGUga2V5IHNwYWNlLCBpdCBuZXZlciBzZWVzIGRlbGV0aW9ucyBpbiB0aGUgcmVzdCwgYW5kIG9uY2UgdGhvc2UgdG9tYnN0b25lcyBleHBpcmUgdGhlIGZpbGVzIGl0IHN0aWxsIGhvbGRzIGFyZSByZXN1cnJlY3RlZCBpbnRvIHRoZSBjaGFpbiBieSBpdHMgbmV4dCBzY2FuLmApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGZvciAobGV0IHNvdXJjZSBvZiBzb3J0ZWQpIHtcbiAgICAgICAgaWYgKGdyb3VwLmxlbmd0aCAmJiBzb3VyY2UudmFsaWRXaW5kb3dbMF0gPj0gZ3JvdXBFbmQpIHtcbiAgICAgICAgICAgIGNoZWNrR3JvdXAoKTtcbiAgICAgICAgICAgIGdyb3VwID0gW107XG4gICAgICAgIH1cbiAgICAgICAgZ3JvdXAucHVzaChzb3VyY2UpO1xuICAgICAgICBncm91cEVuZCA9IE1hdGgubWF4KGdyb3VwRW5kLCBzb3VyY2UudmFsaWRXaW5kb3dbMV0pO1xuICAgIH1cbiAgICBjaGVja0dyb3VwKCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUm91dGluZ0RhdGEoZGF0YTogQnVmZmVyKTogUmVtb3RlQ29uZmlnIHtcbiAgICBsZXQgdGV4dCA9IGRhdGEudG9TdHJpbmcoKTtcbiAgICBsZXQgcGFyc2VkOiBSZW1vdGVDb25maWc7XG4gICAgdHJ5IHtcbiAgICAgICAgcGFyc2VkID0gSlNPTi5wYXJzZSh0ZXh0KSBhcyBSZW1vdGVDb25maWc7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFJvdXRpbmcgY29uZmlnIGlzIG5vdCB2YWxpZCBKU09OICgke1N0cmluZyhlKX0pLiBEYXRhOiAke3RleHQuc2xpY2UoMCwgNTAwKX1gKTtcbiAgICB9XG4gICAgaWYgKCFwYXJzZWQgfHwgdHlwZW9mIHBhcnNlZCAhPT0gXCJvYmplY3RcIiB8fCAhQXJyYXkuaXNBcnJheShwYXJzZWQuc291cmNlcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBSb3V0aW5nIGNvbmZpZyBtdXN0IGJlIHsgdmVyc2lvbj8sIHNvdXJjZXM6IFsuLi5dIH0sIHdhcyAke3RleHQuc2xpY2UoMCwgNTAwKX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIG5vcm1hbGl6ZVJlbW90ZUNvbmZpZyhwYXJzZWQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplUmVtb3RlQ29uZmlnKGNvbmZpZzogUmVtb3RlQ29uZmlnKTogQnVmZmVyIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkoY29uZmlnLCB1bmRlZmluZWQsIDQpKTtcbn1cbiJdfQ==
|
|
224
|
-
/* _JS_SOURCE_HASH = "
|
|
222
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlQ29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicmVtb3RlQ29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUFrRTtBQUNsRSxtREFBd0Q7QUFDeEQsNENBQTRJO0FBRTVJLHNTQUFzUztBQUV6UixRQUFBLFlBQVksR0FBRyw2QkFBNkIsQ0FBQztBQUMxRCxNQUFNLGNBQWMsR0FBRyxHQUFHLEdBQUcsb0JBQVksQ0FBQztBQUUxQyxNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUUzQyxvTEFBb0w7QUFDcEwsU0FBZ0Isa0JBQWtCLENBQUMsR0FBVztJQUMxQyxJQUFJLEtBQUssR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLDBCQUFjLENBQUMsQ0FBQztJQUN4QyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUNuQyxJQUFJLEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsMEJBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQy9FLElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDN0IsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyQixDQUFDO0FBTkQsZ0RBTUM7QUFFRCx3R0FBd0c7QUFDeEcsU0FBZ0IsUUFBUSxDQUFDLEdBQVc7SUFDaEMsSUFBSSxRQUFRLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsSUFBSSxRQUFRLEtBQUssU0FBUztRQUFFLE9BQU8sUUFBUSxDQUFDO0lBQzVDLElBQUksSUFBSSxHQUFHLElBQUEsbUJBQVksRUFBQyxJQUFBLHVCQUFnQixFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDL0MsT0FBTyxJQUFJLEdBQUcsZUFBZSxHQUFHLGVBQWUsQ0FBQztBQUNwRCxD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LEtBQUssQ0FBQyxxQ0FBcUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwRyxDQUFDO0lBQ0QsSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQzFFLE1BQU0sSUFBSSxLQUFLLENBQUMsNERBQTRELElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0RyxDQUFDO0lBQ0QsT0FBTyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBWkQsNENBWUM7QUFFRCxTQUFnQixxQkFBcUIsQ0FBQyxNQUFvQjtJQUN0RCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUZELHNEQUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc29ydCwgc2hhMjU2SGFzaEJ1ZmZlciB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL21pc2NcIjtcbmltcG9ydCB7IGdldEJ1ZmZlckludCB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL2JpdHNcIjtcbmltcG9ydCB7IFJlbW90ZUNvbmZpZywgUmVtb3RlQ29uZmlnQmFzZSwgSG9zdGVkQ29uZmlnLCBCYWNrYmxhemVDb25maWcsIEZVTExfVkFMSURfV0lORE9XLCBGVUxMX1JPVVRFLCBWQVJJQUJMRV9TSEFSRCB9IGZyb20gXCIuLi9JQXJjaGl2ZXNcIjtcblxuLy8gUGFyc2luZyAvIG5vcm1hbGl6YXRpb24gb2YgUmVtb3RlQ29uZmlnIChzZWUgSUFyY2hpdmVzLnRzKS4gRXZlcnkgYnVja2V0IHN0b3JlcyBpdHMgb3duIGNvbmZpZ3VyYXRpb24gKGEgUmVtb3RlQ29uZmlnKSBpbnNpZGUgaXRzZWxmLCBhdCBST1VUSU5HX0ZJTEUuIFdyaXRpbmcgdGhhdCBmaWxlIGNyZWF0ZXMgdGhlIGJ1Y2tldCAvIHJlY29uZmlndXJlcyBpdCAoc2VlIHN0b3JhZ2VTZXJ2ZXJTdGF0ZS50cyk7IGNsaWVudHMgcmVjb25jaWxlIGl0IGJ5IHZlcnNpb24gKHNlZSBjcmVhdGVBcmNoaXZlcy50cykuXG5cbmV4cG9ydCBjb25zdCBST1VUSU5HX0ZJTEUgPSBcInN0b3JhZ2Uvc3RvcmFnZXJvdXRpbmcuanNvblwiO1xuY29uc3QgUk9VVElOR19TVUZGSVggPSBcIi9cIiArIFJPVVRJTkdfRklMRTtcblxuY29uc3QgUk9VVEVfUFJFQ0lTSU9OID0gMTAwMCAqIDEwMDAgKiAxMDAwO1xuXG4vKiogVGhlIHZhcmlhYmxlLXNoYXJkIHJvdXRlIG92ZXJyaWRlIGVtYmVkZGVkIGluIHRoZSBrZXkgKFwiPHNlbnRpbmVsPl88dmFsdWU+XCIsIHNlZSBWQVJJQUJMRV9TSEFSRCksIG9yIHVuZGVmaW5lZCB3aGVuIHRoZSBrZXkgaGFzIG5vIHNlbnRpbmVsIG9yIHRoZSBzZW50aW5lbCBoYXMgbm8gdmFsdWUgeWV0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVmFyaWFibGVSb3V0ZShrZXk6IHN0cmluZyk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IGluZGV4ID0ga2V5LmluZGV4T2YoVkFSSUFCTEVfU0hBUkQpO1xuICAgIGlmIChpbmRleCA9PT0gLTEpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgbGV0IG1hdGNoID0gL15fKFxcZCsoPzpcXC5cXGQrKT8pLy5leGVjKGtleS5zbGljZShpbmRleCArIFZBUklBQkxFX1NIQVJELmxlbmd0aCkpO1xuICAgIGlmICghbWF0Y2gpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuICttYXRjaFsxXTtcbn1cblxuLyoqIFdoZXJlIGEga2V5IHJvdXRlcyBpbiBbMCwgMSkuIEEgbWF0ZXJpYWxpemVkIHZhcmlhYmxlLXNoYXJkIHN1ZmZpeCBjb21wbGV0ZWx5IG92ZXJyaWRlcyB0aGUgaGFzaC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb3V0ZShrZXk6IHN0cmluZyk6IG51bWJlciB7XG4gICAgbGV0IG92ZXJyaWRlID0gcGFyc2VWYXJpYWJsZVJvdXRlKGtleSk7XG4gICAgaWYgKG92ZXJyaWRlICE9PSB1bmRlZmluZWQpIHJldHVybiBvdmVycmlkZTtcbiAgICBsZXQgaGFzaCA9IGdldEJ1ZmZlckludChzaGEyNTZIYXNoQnVmZmVyKGtleSkpO1xuICAgIHJldHVybiBoYXNoICUgUk9VVEVfUFJFQ0lTSU9OIC8gUk9VVEVfUFJFQ0lTSU9OO1xufVxuXG4vLyBSb3V0ZSByYW5nZXMgYXJlIFtzdGFydCwgZW5kKSAtIGluY2x1c2l2ZSBzdGFydCwgZXhjbHVzaXZlIGVuZFxuZXhwb3J0IGZ1bmN0aW9uIHJvdXRlQ29udGFpbnMocm91dGU6IFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQsIHZhbHVlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAoIXJvdXRlKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gcm91dGVbMF0gPD0gdmFsdWUgJiYgdmFsdWUgPCByb3V0ZVsxXTtcbn1cbmV4cG9ydCBmdW5jdGlvbiByb3V0ZXNPdmVybGFwKGE6IFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQsIGI6IFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICBsZXQgW2FTdGFydCwgYUVuZF0gPSBhIHx8IEZVTExfUk9VVEU7XG4gICAgbGV0IFtiU3RhcnQsIGJFbmRdID0gYiB8fCBGVUxMX1JPVVRFO1xuICAgIHJldHVybiBhU3RhcnQgPCBiRW5kICYmIGJTdGFydCA8IGFFbmQ7XG59XG4vKiogVGhlIG92ZXJsYXAgb2YgdHdvIHJvdXRlIHJhbmdlcywgb3IgdW5kZWZpbmVkIHdoZW4gdGhleSBkb24ndCBvdmVybGFwLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJvdXRlSW50ZXJzZWN0aW9uKGE6IFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQsIGI6IFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQpOiBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgW2FTdGFydCwgYUVuZF0gPSBhIHx8IEZVTExfUk9VVEU7XG4gICAgbGV0IFtiU3RhcnQsIGJFbmRdID0gYiB8fCBGVUxMX1JPVVRFO1xuICAgIGxldCBzdGFydCA9IE1hdGgubWF4KGFTdGFydCwgYlN0YXJ0KTtcbiAgICBsZXQgZW5kID0gTWF0aC5taW4oYUVuZCwgYkVuZCk7XG4gICAgaWYgKHN0YXJ0ID49IGVuZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gW3N0YXJ0LCBlbmRdO1xufVxuXG4vLyBBIG1pc3NpbmcgdmVyc2lvbiBjb3VudHMgYXMgLTEsIHNvIGFueSBleHBsaWNpdGx5IHZlcnNpb25lZCBjb25maWcgYmVhdHMgYW4gdW52ZXJzaW9uZWQgb25lXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29uZmlnVmVyc2lvbihjb25maWc6IFJlbW90ZUNvbmZpZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIGNvbmZpZy52ZXJzaW9uID8/IC0xO1xufVxuXG4vKiogU3RyaXBzIHRoZSByb3V0aW5nLWZpbGUgc3VmZml4LCBsZWF2aW5nIHRoZSBidWNrZXQncyBwdWJsaWMgYmFzZSBVUkwgKGZpbGUgcGF0aHMgYXBwZW5kIHRvIGl0KS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCdWNrZXRCYXNlVXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXVybC5lbmRzV2l0aChST1VUSU5HX1NVRkZJWCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhIGJ1Y2tldCByb3V0aW5nIFVSTCBlbmRpbmcgd2l0aCAke0pTT04uc3RyaW5naWZ5KFJPVVRJTkdfU1VGRklYKX0sIHdhcyAke0pTT04uc3RyaW5naWZ5KHVybCl9YCk7XG4gICAgfVxuICAgIHJldHVybiB1cmwuc2xpY2UoMCwgLVJPVVRJTkdfU1VGRklYLmxlbmd0aCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEZpbGVVcmwoYmFzZVVybDogc3RyaW5nLCBmaWxlUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYmFzZVVybCArIFwiL1wiICsgZmlsZVBhdGguc3BsaXQoXCIvXCIpLm1hcChlbmNvZGVVUklDb21wb25lbnQpLmpvaW4oXCIvXCIpO1xufVxuXG4vLyBFeDogaHR0cHM6Ly9zdG9yYWdlMi52aWRncmlkd2ViLmNvbTo0NDQ1L2ZpbGUvZXhhbXBsZWFjY291bnQvZXhhbXBsZWJ1Y2tldC9zdG9yYWdlL3N0b3JhZ2Vyb3V0aW5nLmpzb25cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUhvc3RlZFVybCh1cmw6IHN0cmluZyk6IHsgYWRkcmVzczogc3RyaW5nOyBwb3J0OiBudW1iZXI7IGFjY291bnQ6IHN0cmluZzsgYnVja2V0TmFtZTogc3RyaW5nIH0ge1xuICAgIGxldCBiYXNlID0gZ2V0QnVja2V0QmFzZVVybCh1cmwpO1xuICAgIGxldCB1ID0gbmV3IFVSTChiYXNlKTtcbiAgICBpZiAodS5wcm90b2NvbCAhPT0gXCJodHRwczpcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFN0b3JhZ2UgVVJMIG11c3QgdXNlIGh0dHBzLCBnb3QgJHtKU09OLnN0cmluZ2lmeSh1LnByb3RvY29sKX0gaW4gJHtKU09OLnN0cmluZ2lmeSh1cmwpfWApO1xuICAgIH1cbiAgICBsZXQgcGFydHMgPSB1LnBhdGhuYW1lLnNwbGl0KFwiL1wiKS5maWx0ZXIoeCA9PiB4KTtcbiAgICBpZiAocGFydHMubGVuZ3RoICE9PSAzIHx8IHBhcnRzWzBdICE9PSBcImZpbGVcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGEgaG9zdGVkIGJ1Y2tldCBVUkwgbGlrZSBodHRwczovL2hvc3Q6cG9ydC9maWxlLzxhY2NvdW50Pi88YnVja2V0TmFtZT4ke1JPVVRJTkdfU1VGRklYfSwgd2FzICR7SlNPTi5zdHJpbmdpZnkodXJsKX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgYWRkcmVzczogdS5ob3N0bmFtZSwgcG9ydDogK3UucG9ydCB8fCA0NDMsIGFjY291bnQ6IGRlY29kZVVSSUNvbXBvbmVudChwYXJ0c1sxXSksIGJ1Y2tldE5hbWU6IGRlY29kZVVSSUNvbXBvbmVudChwYXJ0c1syXSkgfTtcbn1cblxuLy8gRXg6IGh0dHBzOi8vZjAwMi5iYWNrYmxhemViMi5jb20vZmlsZS9xdWVyeXN1YnRlc3QtY29tLXB1YmxpYy1pbW11dGFibGUvc3RvcmFnZS9zdG9yYWdlcm91dGluZy5qc29uXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VCYWNrYmxhemVVcmwodXJsOiBzdHJpbmcpOiB7IGJ1Y2tldE5hbWU6IHN0cmluZyB9IHtcbiAgICBsZXQgYmFzZSA9IGdldEJ1Y2tldEJhc2VVcmwodXJsKTtcbiAgICBsZXQgdSA9IG5ldyBVUkwoYmFzZSk7XG4gICAgbGV0IHBhcnRzID0gdS5wYXRobmFtZS5zcGxpdChcIi9cIikuZmlsdGVyKHggPT4geCk7XG4gICAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gMiB8fCBwYXJ0c1swXSAhPT0gXCJmaWxlXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhIGJhY2tibGF6ZSBidWNrZXQgVVJMIGxpa2UgaHR0cHM6Ly9mMDAyLmJhY2tibGF6ZWIyLmNvbS9maWxlLzxidWNrZXROYW1lPiR7Uk9VVElOR19TVUZGSVh9LCB3YXMgJHtKU09OLnN0cmluZ2lmeSh1cmwpfWApO1xuICAgIH1cbiAgICByZXR1cm4geyBidWNrZXROYW1lOiBkZWNvZGVVUklDb21wb25lbnQocGFydHNbMV0pIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlSG9zdGVkVXJsUG9ydCh1cmw6IHN0cmluZywgcG9ydDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBsZXQgdSA9IG5ldyBVUkwodXJsKTtcbiAgICB1LnBvcnQgPSBTdHJpbmcocG9ydCk7XG4gICAgcmV0dXJuIHUudG9TdHJpbmcoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVNvdXJjZShzb3VyY2U6IFJlbW90ZUNvbmZpZ0Jhc2UpOiBIb3N0ZWRDb25maWcgfCBCYWNrYmxhemVDb25maWcge1xuICAgIGlmICh0eXBlb2Ygc291cmNlICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGxldCB3aW5kb3cgPSBzb3VyY2UudmFsaWRXaW5kb3c7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh3aW5kb3cpIHx8IHdpbmRvdy5sZW5ndGggIT09IDIgfHwgIXdpbmRvdy5ldmVyeSh4ID0+IHR5cGVvZiB4ID09PSBcIm51bWJlclwiKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBPYmplY3Qgc291cmNlIGNvbmZpZ3MgbXVzdCBzcGVjaWZ5IHZhbGlkV2luZG93IChbc3RhcnRNcywgZW5kTXNdIG9mIHRoZSB3cml0ZSB0aW1lcyB0aGUgc291cmNlIGlzIHZhbGlkIGZvcikgLSBjb25maWd1cmF0aW9uIGNoYW5nZXMgbXVzdCBiZSBzY2hlZHVsZWQsIG5vdCBmbGlwcGVkIGluc3RhbnRseS4gVXNlIEZVTExfVkFMSURfV0lORE9XIHdoZW4gdGhlIHNvdXJjZSBpcyBhbHdheXMgdmFsaWQuIFdhcyAke0pTT04uc3RyaW5naWZ5KHdpbmRvdyl9IG9uICR7SlNPTi5zdHJpbmdpZnkoc291cmNlKS5zbGljZSgwLCA1MDApfWApO1xuICAgICAgICB9XG4gICAgICAgIGxldCByb3V0ZSA9IHNvdXJjZS5yb3V0ZTtcbiAgICAgICAgaWYgKHJvdXRlICE9PSB1bmRlZmluZWQgJiYgKCFBcnJheS5pc0FycmF5KHJvdXRlKSB8fCByb3V0ZS5sZW5ndGggIT09IDIgfHwgIXJvdXRlLmV2ZXJ5KHggPT4gdHlwZW9mIHggPT09IFwibnVtYmVyXCIpIHx8IHJvdXRlWzBdIDwgMCB8fCByb3V0ZVsxXSA+IDEgfHwgcm91dGVbMF0gPj0gcm91dGVbMV0pKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNvdXJjZSByb3V0ZSBtdXN0IGJlIGEgW3N0YXJ0LCBlbmQpIGZyYWN0aW9uIHJhbmdlIHdpdGhpbiBbMCwgMV0gd2l0aCBzdGFydCA8IGVuZCwgd2FzICR7SlNPTi5zdHJpbmdpZnkocm91dGUpfSBvbiAke0pTT04uc3RyaW5naWZ5KHNvdXJjZSkuc2xpY2UoMCwgNTAwKX1gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc291cmNlLnJlYWRlckRpc2tMaW1pdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHNvdXJjZS5yZWFkZXJEaXNrTGltaXQgIT09IFwibnVtYmVyXCIgfHwgc291cmNlLnJlYWRlckRpc2tMaW1pdCA8PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGByZWFkZXJEaXNrTGltaXQgbXVzdCBiZSBhIHBvc2l0aXZlIGJ5dGUgY291bnQsIHdhcyAke0pTT04uc3RyaW5naWZ5KHNvdXJjZS5yZWFkZXJEaXNrTGltaXQpfSBvbiAke0pTT04uc3RyaW5naWZ5KHNvdXJjZSkuc2xpY2UoMCwgNTAwKX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghc291cmNlLm5vRnVsbFN5bmMpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHJlYWRlckRpc2tMaW1pdCByZXF1aXJlcyBub0Z1bGxTeW5jOiBhIGZ1bGwgY29weSBjYW5ub3QgYmUgYm91bmRlZCwgb25seSBhIHJlYWQgY2FjaGUgY2FuLiBPbiAke0pTT04uc3RyaW5naWZ5KHNvdXJjZSkuc2xpY2UoMCwgNTAwKX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoc291cmNlLnR5cGUgPT09IFwicmVtb3RlXCIpIHtcbiAgICAgICAgICAgIC8vIFRocm93cyBpZiB0aGUgVVJMIGlzIG1hbGZvcm1lZCwgc28gYmFkIGNvbmZpZ3MgYXJlIHJlamVjdGVkIGJlZm9yZSB0aGV5J3JlIHN0b3JlZFxuICAgICAgICAgICAgcGFyc2VIb3N0ZWRVcmwoc291cmNlLnVybCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICB9XG4gICAgbGV0IGhvc3RuYW1lID0gbmV3IFVSTChzb3VyY2UpLmhvc3RuYW1lO1xuICAgIGlmIChob3N0bmFtZS5lbmRzV2l0aChcIi5iYWNrYmxhemViMi5jb21cIikpIHtcbiAgICAgICAgLy8gVmFsaWRhdGVzIHRoZSBVUkwgKHRocm93cyBvbiBtYWxmb3JtZWQpIGJlZm9yZSBpdCdzIHN0b3JlZDsgdGhlIGJ1Y2tldCBuYW1lIGlzIHJlYWQgYmFjayBvdXQgb2YgdGhlIFVSTCBhdCB1c2Ugc2l0ZXMsIG5ldmVyIHN0b3JlZCBvbiB0aGUgY29uZmlnLlxuICAgICAgICBwYXJzZUJhY2tibGF6ZVVybChzb3VyY2UpO1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcImJhY2tibGF6ZVwiLCB1cmw6IHNvdXJjZSwgdmFsaWRXaW5kb3c6IEZVTExfVkFMSURfV0lORE9XIH07XG4gICAgfVxuICAgIHBhcnNlSG9zdGVkVXJsKHNvdXJjZSk7XG4gICAgcmV0dXJuIHsgdHlwZTogXCJyZW1vdGVcIiwgdXJsOiBzb3VyY2UsIHZhbGlkV2luZG93OiBGVUxMX1ZBTElEX1dJTkRPVyB9O1xufVxuXG4vKiogSG93IGZhciB1cCBmcm9tIDAgdGhlIHNvdXJjZXMnIHJvdXRlcyByZWFjaCB3aXRob3V0IGEgZ2FwICgxIG1lYW5zIHRoZSB3aG9sZSBrZXkgc3BhY2UpLiAqL1xuZnVuY3Rpb24gZ2V0Um91dGVDb3ZlcmFnZShzb3VyY2VzOiAoSG9zdGVkQ29uZmlnIHwgQmFja2JsYXplQ29uZmlnKVtdKTogbnVtYmVyIHtcbiAgICBsZXQgcm91dGVzID0gc291cmNlcy5tYXAoeCA9PiB4LnJvdXRlIHx8IEZVTExfUk9VVEUpO1xuICAgIHNvcnQocm91dGVzLCB4ID0+IHhbMF0pO1xuICAgIGxldCBjb3ZlcmVkID0gMDtcbiAgICBmb3IgKGxldCByb3V0ZSBvZiByb3V0ZXMpIHtcbiAgICAgICAgaWYgKHJvdXRlWzBdID4gY292ZXJlZCkgYnJlYWs7XG4gICAgICAgIGNvdmVyZWQgPSBNYXRoLm1heChjb3ZlcmVkLCByb3V0ZVsxXSk7XG4gICAgfVxuICAgIHJldHVybiBjb3ZlcmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplUmVtb3RlQ29uZmlnKGNvbmZpZzogUmVtb3RlQ29uZmlnIHwgUmVtb3RlQ29uZmlnQmFzZSk6IFJlbW90ZUNvbmZpZyB7XG4gICAgbGV0IHJlc3VsdDogUmVtb3RlQ29uZmlnO1xuICAgIGlmICh0eXBlb2YgY29uZmlnICE9PSBcInN0cmluZ1wiICYmIFwic291cmNlc1wiIGluIGNvbmZpZykge1xuICAgICAgICByZXN1bHQgPSB7IHZlcnNpb246IGNvbmZpZy52ZXJzaW9uLCBzb3VyY2VzOiBjb25maWcuc291cmNlcy5tYXAobm9ybWFsaXplU291cmNlKSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IHsgc291cmNlczogW25vcm1hbGl6ZVNvdXJjZShjb25maWcpXSB9O1xuICAgIH1cbiAgICAvLyBNaXhlZCBpbW11dGFiaWxpdHkgbWFrZXMgbm8gc2Vuc2UgQU1PTkcgc291cmNlcyB2YWxpZCBhdCB0aGUgc2FtZSB0aW1lOiBhIG11dGFibGUgc291cmNlIHdvdWxkIGFjY2VwdCBvdmVyd3JpdGVzIHRoYXQgaXRzIGltbXV0YWJsZSBwZWVycyByZWZ1c2UgdG8gc3luY2hyb25pemUsIGZvcmtpbmcgdGhlaXIgY29udGVudHMuIFNvdXJjZXMgYXJlIGdyb3VwZWQgYnkgdHJhbnNpdGl2ZWx5IG92ZXJsYXBwaW5nIHZhbGlkIHdpbmRvd3MgKGFic29yYiBldmVyeXRoaW5nIG92ZXJsYXBwaW5nIHRoZSBncm91cCwgZXh0ZW5kIHRoZSBncm91cCdzIGVuZCwgcmVwZWF0KSAtIGEgc29mdCBjaGVjayB0aGF0IGlzIGNvcnJlY3QgYXMgbG9uZyBhcyB3aW5kb3dzIGhhdmUgY2xlYW4gYnJlYWtzIChhIGdyb3VwIGVuZHMgZXhhY3RseSB3aGVyZSB0aGUgbmV4dCBiZWdpbnMpLlxuICAgIGxldCBzb3VyY2VzID0gcmVzdWx0LnNvdXJjZXMubWFwKG5vcm1hbGl6ZVNvdXJjZSk7XG4gICAgbGV0IHNvcnRlZCA9IFsuLi5zb3VyY2VzXTtcbiAgICBzb3J0KHNvcnRlZCwgeCA9PiB4LnZhbGlkV2luZG93WzBdKTtcbiAgICBsZXQgZ3JvdXA6IHR5cGVvZiBzb3VyY2VzID0gW107XG4gICAgbGV0IGdyb3VwRW5kID0gMDtcbiAgICBmdW5jdGlvbiBjaGVja0dyb3VwKCkge1xuICAgICAgICBsZXQgaW1tdXRhYmxlQ291bnQgPSBncm91cC5maWx0ZXIoeCA9PiB4LmltbXV0YWJsZSkubGVuZ3RoO1xuICAgICAgICBpZiAoaW1tdXRhYmxlQ291bnQgJiYgaW1tdXRhYmxlQ291bnQgIT09IGdyb3VwLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTb3VyY2VzIHdpdGggb3ZlcmxhcHBpbmcgdmFsaWQgd2luZG93cyBtdXN0IGFncmVlIG9uIGltbXV0YWJpbGl0eTogJHtpbW11dGFibGVDb3VudH0gb2YgJHtncm91cC5sZW5ndGh9IGFyZSBpbW11dGFibGUuIFNvdXJjZXM6ICR7SlNPTi5zdHJpbmdpZnkoZ3JvdXAubWFwKHggPT4gKHsgdXJsOiB4LnVybCwgdmFsaWRXaW5kb3c6IHgudmFsaWRXaW5kb3csIGltbXV0YWJsZTogISF4LmltbXV0YWJsZSB9KSkpfWApO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRoZSBzb3VyY2VzIHZhbGlkIGF0IGFueSBpbnN0YW50IG11c3QgY292ZXIgdGhlIHdob2xlIGtleSBzcGFjZSwgb3Iga2V5cyByb3V0aW5nIGludG8gYSBnYXAgY291bGQgbmV2ZXIgYmUgcmVhZFxuICAgICAgICBsZXQgY292ZXJlZCA9IGdldFJvdXRlQ292ZXJhZ2UoZ3JvdXApO1xuICAgICAgICBpZiAoY292ZXJlZCA8IDEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgU291cmNlcyB3aXRoIG92ZXJsYXBwaW5nIHZhbGlkIHdpbmRvd3MgbXVzdCBjb3ZlciB0aGUgZnVsbCByb3V0ZSBzcGFjZSBbMCwgMSk7IGNvdmVyYWdlIHN0b3BzIGF0ICR7Y292ZXJlZH0uIFNvdXJjZXM6ICR7SlNPTi5zdHJpbmdpZnkoZ3JvdXAubWFwKHggPT4gKHsgdXJsOiB4LnVybCwgdmFsaWRXaW5kb3c6IHgudmFsaWRXaW5kb3csIHJvdXRlOiB4LnJvdXRlIHx8IEZVTExfUk9VVEUgfSkpKX1gKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBFdmVyeSBidWNrZXQgbXVzdCBBTFNPIGNvdmVyIHRoZSBmdWxsIHJvdXRlIHNwYWNlIGFjcm9zcyBpdHMgb3duIGVudHJpZXMsIGJlY2F1c2UgYWxsIG9mIGEgYnVja2V0J3MgZW50cmllcyBzaGFyZSBvbmUgZGlzay4gQSBidWNrZXQgdGhhdCBvbmx5IGV2ZXIgc3luY2hyb25pemVzIHBhcnQgb2YgdGhlIGtleSBzcGFjZSBuZXZlciBsZWFybnMgYWJvdXQgZGVsZXRpb25zIGluIHRoZSByZXN0IG9mIGl0IC0gYW5kIHRvbWJzdG9uZXMgZXhwaXJlLCBzbyBmaWxlcyBpdCBzdGlsbCBob2xkcyBmcm9tIGEgcm91dGUgaXQgbm8gbG9uZ2VyIHNlcnZlcyBldmVudHVhbGx5IGxvb2sgbGlrZSBsaXZlIGZpbGVzIGFnYWluLCBhbmQgZ2V0IHJlc3VycmVjdGVkIGludG8gdGhlIGNoYWluIGJ5IGl0cyBuZXh0IHNjYW4uIEFuIGVudHJ5IHdpdGggbm8gcm91dGUgKGltcGxpY2l0bHkgdGhlIGZ1bGwgc3BhY2UpIHNhdGlzZmllcyB0aGlzIG9uIGl0cyBvd24sIHdoaWNoIGlzIHdoeSB0aGUgdXN1YWwgY29uZmlndXJhdGlvbiBsaXN0cyBlYWNoIGJ1Y2tldCBvbmNlIHBlciBzaGFyZCBBTkQgb25jZSB1bnNoYXJkZWQuXG4gICAgICAgIGxldCBieVVybCA9IG5ldyBNYXA8c3RyaW5nLCB0eXBlb2YgZ3JvdXA+KCk7XG4gICAgICAgIGZvciAobGV0IHNvdXJjZSBvZiBncm91cCkge1xuICAgICAgICAgICAgbGV0IGVudHJpZXMgPSBieVVybC5nZXQoc291cmNlLnVybCk7XG4gICAgICAgICAgICBpZiAoIWVudHJpZXMpIHtcbiAgICAgICAgICAgICAgICBlbnRyaWVzID0gW107XG4gICAgICAgICAgICAgICAgYnlVcmwuc2V0KHNvdXJjZS51cmwsIGVudHJpZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZW50cmllcy5wdXNoKHNvdXJjZSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgW3VybCwgZW50cmllc10gb2YgYnlVcmwpIHtcbiAgICAgICAgICAgIGxldCB1cmxDb3ZlcmVkID0gZ2V0Um91dGVDb3ZlcmFnZShlbnRyaWVzKTtcbiAgICAgICAgICAgIGlmICh1cmxDb3ZlcmVkIDwgMSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXZlcnkgYnVja2V0IG11c3QgY292ZXIgdGhlIGZ1bGwgcm91dGUgc3BhY2UgWzAsIDEpIGFjcm9zcyBpdHMgb3duIGVudHJpZXMgd2l0aCBvdmVybGFwcGluZyB2YWxpZCB3aW5kb3dzLCBidXQgJHt1cmx9IG9ubHkgY292ZXJzIHVwIHRvICR7dXJsQ292ZXJlZH0gKGl0cyByb3V0ZXM6ICR7SlNPTi5zdHJpbmdpZnkoZW50cmllcy5tYXAoeCA9PiB4LnJvdXRlIHx8IEZVTExfUk9VVEUpKX0pLiBBZGQgYW4gZW50cnkgZm9yIGl0IHdpdGggbm8gcm91dGUgKG9yIGVudHJpZXMgd2hvc2Ugcm91dGVzIHNwYW4gdGhlIHJlc3QpLCBhbG9uZ3NpZGUgaXRzIHNoYXJkZWQgZW50cmllcy4gVGhpcyBpcyBlbmZvcmNlZCBiZWNhdXNlIGEgYnVja2V0J3MgZW50cmllcyBhbGwgc2hhcmUgb25lIGRpc2s6IGlmIGl0IG9ubHkgZXZlciBzeW5jaHJvbml6ZXMgcGFydCBvZiB0aGUga2V5IHNwYWNlLCBpdCBuZXZlciBzZWVzIGRlbGV0aW9ucyBpbiB0aGUgcmVzdCwgYW5kIG9uY2UgdGhvc2UgdG9tYnN0b25lcyBleHBpcmUgdGhlIGZpbGVzIGl0IHN0aWxsIGhvbGRzIGFyZSByZXN1cnJlY3RlZCBpbnRvIHRoZSBjaGFpbiBieSBpdHMgbmV4dCBzY2FuLmApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGZvciAobGV0IHNvdXJjZSBvZiBzb3J0ZWQpIHtcbiAgICAgICAgaWYgKGdyb3VwLmxlbmd0aCAmJiBzb3VyY2UudmFsaWRXaW5kb3dbMF0gPj0gZ3JvdXBFbmQpIHtcbiAgICAgICAgICAgIGNoZWNrR3JvdXAoKTtcbiAgICAgICAgICAgIGdyb3VwID0gW107XG4gICAgICAgIH1cbiAgICAgICAgZ3JvdXAucHVzaChzb3VyY2UpO1xuICAgICAgICBncm91cEVuZCA9IE1hdGgubWF4KGdyb3VwRW5kLCBzb3VyY2UudmFsaWRXaW5kb3dbMV0pO1xuICAgIH1cbiAgICBjaGVja0dyb3VwKCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUm91dGluZ0RhdGEoZGF0YTogQnVmZmVyKTogUmVtb3RlQ29uZmlnIHtcbiAgICBsZXQgdGV4dCA9IGRhdGEudG9TdHJpbmcoKTtcbiAgICBsZXQgcGFyc2VkOiBSZW1vdGVDb25maWc7XG4gICAgdHJ5IHtcbiAgICAgICAgcGFyc2VkID0gSlNPTi5wYXJzZSh0ZXh0KSBhcyBSZW1vdGVDb25maWc7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFJvdXRpbmcgY29uZmlnIGlzIG5vdCB2YWxpZCBKU09OICgke1N0cmluZyhlKX0pLiBEYXRhOiAke3RleHQuc2xpY2UoMCwgNTAwKX1gKTtcbiAgICB9XG4gICAgaWYgKCFwYXJzZWQgfHwgdHlwZW9mIHBhcnNlZCAhPT0gXCJvYmplY3RcIiB8fCAhQXJyYXkuaXNBcnJheShwYXJzZWQuc291cmNlcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBSb3V0aW5nIGNvbmZpZyBtdXN0IGJlIHsgdmVyc2lvbj8sIHNvdXJjZXM6IFsuLi5dIH0sIHdhcyAke3RleHQuc2xpY2UoMCwgNTAwKX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIG5vcm1hbGl6ZVJlbW90ZUNvbmZpZyhwYXJzZWQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplUmVtb3RlQ29uZmlnKGNvbmZpZzogUmVtb3RlQ29uZmlnKTogQnVmZmVyIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkoY29uZmlnLCB1bmRlZmluZWQsIDQpKTtcbn1cbiJdfQ==
|
|
223
|
+
/* _JS_SOURCE_HASH = "573c047018a4f3f6b6e8a0fde26482eb120c37a914de797798ba5e3e705b06fe"; */
|
|
@@ -1,7 +1,6 @@
|
|
|
1
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";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
|
|
3
3
|
//exports.SourceWrapper = exports.RETRY_GROWTH = exports.RETRY_MAX_DELAY = exports.RETRY_START_DELAY = void 0;
|
|
4
|
-
module.allowclient = true;
|
|
5
4
|
const misc_1 = require("socket-function/src/misc");
|
|
6
5
|
const batching_1 = require("socket-function/src/batching");
|
|
7
6
|
const getSecret_1 = require("../../misc/getSecret");
|
|
@@ -245,5 +244,5 @@ class SourceWrapper {
|
|
|
245
244
|
}
|
|
246
245
|
}
|
|
247
246
|
exports.SourceWrapper = SourceWrapper;
|
|
248
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlV3JhcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNvdXJjZVdyYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsTUFBTSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7QUFFMUIsbURBQXdEO0FBQ3hELDJEQUFxRDtBQUNyRCxvREFBaUQ7QUFFakQsaURBQXFIO0FBQ3JILHFEQUFrRDtBQUNsRCwrQ0FBNEM7QUFDNUMsNENBQWlEO0FBQ2pELDZEQUF3RjtBQUUzRSxRQUFBLGlCQUFpQixHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDN0IsUUFBQSxlQUFlLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDaEMsUUFBQSxZQUFZLEdBQUcsR0FBRyxDQUFDO0FBQ2hDLE1BQU0sdUJBQXVCLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUMxQyxNQUFNLGFBQWEsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ2hDLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQztBQUV4QixLQUFLLFVBQVUsaUJBQWlCO0lBQzVCLElBQUksQ0FBQyxJQUFBLGFBQU0sR0FBRTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQzVCLElBQUksQ0FBQztRQUNELE1BQU0sSUFBQSxxQkFBUyxFQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDbkQsTUFBTSxJQUFBLHFCQUFTLEVBQUMsK0JBQStCLENBQUMsQ0FBQztRQUNqRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQUMsV0FBTSxDQUFDO1FBQ0wsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztBQUNMLENBQUM7QUFFRCxzakJBQXNqQjtBQUN0akIsTUFBYSxhQUFhO0lBU3RCLFlBQ1csTUFBc0M7SUFDN0Msb0ZBQW9GO0lBQzVFLFVBQW1CO1FBRnBCLFdBQU0sR0FBTixNQUFNLENBQWdDO1FBRXJDLGVBQVUsR0FBVixVQUFVLENBQVM7UUFQdkIsYUFBUSxHQUFHLEtB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TUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUNELElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1AsTUFBTSxJQUFJLEtBQUssQ0FBQyxVQUFVLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxnREFBZ0QsQ0FBQyxDQUFDO1FBQy9GLENBQUM7UUFDRCxJQUFJLE1BQU0sR0FBRyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDekQsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVNLE9BQU87UUFDVixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7SUFDTCxDQUFDO0NBQ0o7QUExTkQsc0NBME5DIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmFsbG93Y2xpZW50ID0gdHJ1ZTtcblxuaW1wb3J0IHsgaXNOb2RlLCBzb3J0IH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvbWlzY1wiO1xuaW1wb3J0IHsgZGVsYXkgfSBmcm9tIFwic29ja2V0LWZ1bmN0aW9uL3NyYy9iYXRjaGluZ1wiO1xuaW1wb3J0IHsgZ2V0U2VjcmV0IH0gZnJvbSBcIi4uLy4uL21pc2MvZ2V0U2VjcmV0XCI7XG5pbXBvcnQgeyBJQXJjaGl2ZXMsIEhvc3RlZENvbmZpZywgQmFja2JsYXplQ29uZmlnLCBSZW1vdGVDb25maWcgfSBmcm9tIFwiLi4vSUFyY2hpdmVzXCI7XG5pbXBvcnQgeyBST1VUSU5HX0ZJTEUsIGdldEJ1Y2tldEJhc2VVcmwsIHBhcnNlSG9zdGVkVXJsLCBwYXJzZUJhY2tibGF6ZVVybCwgcGFyc2VSb3V0aW5nRGF0YSB9IGZyb20gXCIuL3JlbW90ZUNvbmZpZ1wiO1xuaW1wb3J0IHsgQXJjaGl2ZXNSZW1vdGUgfSBmcm9tIFwiLi9BcmNoaXZlc1JlbW90ZVwiO1xuaW1wb3J0IHsgQXJjaGl2ZXNVcmwgfSBmcm9tIFwiLi9BcmNoaXZlc1VybFwiO1xuaW1wb3J0IHsgQXJjaGl2ZXNCYWNrYmxhemUgfSBmcm9tIFwiLi4vYmFja2JsYXplXCI7XG5pbXBvcnQgeyBnZXRTdG9yYWdlU2VydmVyQ29uZmlnT3B0aW9uYWwsIGdldExvY2FsQXJjaGl2ZXMgfSBmcm9tIFwiLi9zdG9yYWdlU2VydmVyU3RhdGVcIjtcblxuZXhwb3J0IGNvbnN0IFJFVFJZX1NUQVJUX0RFTEFZID0gMiAqIDEwMDA7XG5leHBvcnQgY29uc3QgUkVUUllfTUFYX0RFTEFZID0gNSAqIDYwICogMTAwMDtcbmV4cG9ydCBjb25zdCBSRVRSWV9HUk9XVEggPSAxLjU7XG5jb25zdCBBQ0NFU1NfUkVDSEVDS19JTlRFUlZBTCA9IDYwICogMTAwMDtcbmNvbnN0IFBJTkdfSU5URVJWQUwgPSA2MCAqIDEwMDA7XG5jb25zdCBQSU5HX0hJU1RPUlkgPSAxMDtcblxuYXN5bmMgZnVuY3Rpb24gaGFzQmFja2JsYXplQ3JlZHMoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKCFpc05vZGUoKSkgcmV0dXJuIGZhbHNlO1xuICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGdldFNlY3JldChcImJhY2tibGF6ZS5qc29uLmFwcGxpY2F0aW9uS2V5SWRcIik7XG4gICAgICAgIGF3YWl0IGdldFNlY3JldChcImJhY2tibGF6ZS5qc29uLmFwcGxpY2F0aW9uS2V5XCIpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cblxuLy8gT25lIHNvdXJjZSBvZiBhIFJlbW90ZUNvbmZpZywgYXMgYSB1c2FibGUgSUFyY2hpdmVzLiBSZWFkcyBmYWxsIGJhY2sgdG8gdGhlIHB1YmxpYy1VUkwgZm9ybSB3aGVuIHdlIGRvbid0IGhhdmUgQVBJIGFjY2Vzczsgd3JpdGVzIGFsd2F5cyBhdHRlbXB0IHRoZSBBUEkgKHNvIGFjY2VzcyBncmFudGVkIGxhdGVyIGlzIHBpY2tlZCB1cCBvbiB0aGUgbmV4dCB3cml0ZSkuIFdoZW4gYSBjYWxsIGZhaWxzIHdoaWxlIHRoZSBXZWJTb2NrZXQgaXMgZG93biwgbm90ZUZhaWx1cmUgc3RhcnRzIGEgYmFja2dyb3VuZCByZWNvbm5lY3QgbG9vcCB3aXRoIGEgcmFtcGluZyBkZWxheSAtIGl0IG5ldmVyIGJsb2NrcyBjYWxsZXJzLCBpdCBqdXN0IGtlZXBzIHRyeWluZyBzbyB0aGUgY29ubmVjdGlvbiBldmVudHVhbGx5IGNvbWVzIGJhY2suIFNvdXJjZXMgd2l0aG91dCBhIFdlYlNvY2tldCAoYmFja2JsYXplLCBVUkwtZm9ybSwgb3VyIG93biBsb2NhbCBzZXJ2ZXIpIHJlcG9ydCBhbHdheXMtY29ubmVjdGVkOiB0aGV5J3JlIGxhc3QtcmVzb3J0IHNvdXJjZXMgd2hlcmUgdGhyb3dpbmcgaXMgZmluZS5cbmV4cG9ydCBjbGFzcyBTb3VyY2VXcmFwcGVyIHtcbiAgICBwdWJsaWMgYXBpPzogSUFyY2hpdmVzO1xuICAgIHB1YmxpYyB1cmw/OiBBcmNoaXZlc1VybDtcbiAgICBwdWJsaWMgd3JpdGVCbG9ja2VkPzogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVtb3RlPzogQXJjaGl2ZXNSZW1vdGU7XG4gICAgcHJpdmF0ZSBkaXNwb3NlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVjb25uZWN0UnVubmluZyA9IGZhbHNlO1xuICAgIHByaXZhdGUgYWNjZXNzQ2FjaGU/OiB7IGhhc0FjY2VzczogYm9vbGVhbjsgdGltZTogbnVtYmVyIH07XG5cbiAgICBwcml2YXRlIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgY29uZmlnOiBIb3N0ZWRDb25maWcgfCBCYWNrYmxhemVDb25maWcsXG4gICAgICAgIC8vIGZhbHNlIGZvciBzaG9ydC1saXZlZCBwcm9iZSBpbnN0YW5jZXMsIHdoaWNoIG11c3QgbmV2ZXIgbGVhdmUgYSByZXRyeSBsb29wIGJlaGluZFxuICAgICAgICBwcml2YXRlIGJhY2tncm91bmQ6IGJvb2xlYW4sXG4gICAgKSB7IH1cblxuICAgIC8qKiBDb25maWcgdXBkYXRlcyByb3V0aW5lbHkganVzdCBtb3ZlIGEgc291cmNlJ3MgdmFsaWQgd2luZG93ICh0aGUgbGFzdCB3aW5kb3cgZXh0ZW5kcyBmb3JldmVyLCB0aGVuIGdldHMgcmVkdWNlZCB3aGVuIGEgbmV3IGVudHJ5IGlzIGFwcGVuZGVkKS4gVGhlIHdyYXBwZXIgc3Vydml2ZXMgdGhhdDogb25seSB0aGUgd2luZG93IGNoYW5nZXMsIGtlZXBpbmcgdGhlIGNvbm5lY3Rpb24sIHBpbmdzLCBhbmQgbGF0ZW5jeSBoaXN0b3J5LiAqL1xuICAgIHB1YmxpYyB1cGRhdGVWYWxpZFdpbmRvdyh2YWxpZFdpbmRvdzogW251bWJlciwgbnVtYmVyXSk6IHZvaWQge1xuICAgICAgICBsZXQgb2xkID0gdGhpcy5jb25maWcudmFsaWRXaW5kb3c7XG4gICAgICAgIGlmIChvbGRbMF0gPT09IHZhbGlkV2luZG93WzBdICYmIG9sZFsxXSA9PT0gdmFsaWRXaW5kb3dbMV0pIHJldHVybjtcbiAgICAgICAgY29uc29sZS5sb2coYFZhbGlkIHdpbmRvdyBjaGFuZ2VkIGZvciAke3RoaXMuZ2V0RGVidWdOYW1lKCl9OiBbJHtvbGQuam9pbihcIiwgXCIpfV0gLT4gWyR7dmFsaWRXaW5kb3cuam9pbihcIiwgXCIpfV1gKTtcbiAgICAgICAgdGhpcy5jb25maWcudmFsaWRXaW5kb3cgPSB2YWxpZFdpbmRvdztcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGFzeW5jIGNyZWF0ZShjb25maWc6IEhvc3RlZENvbmZpZyB8IEJhY2tibGF6ZUNvbmZpZywgb3B0aW9ucz86IHsgYmFja2dyb3VuZD86IGJvb2xlYW4gfSk6IFByb21pc2U8U291cmNlV3JhcHBlcj4ge1xuICAgICAgICBsZXQgd3JhcHBlciA9IG5ldyBTb3VyY2VXcmFwcGVyKGNvbmZpZywgb3B0aW9ucz8uYmFja2dyb3VuZCAhPT0gZmFsc2UpO1xuICAgICAgICBpZiAoY29uZmlnLnR5cGUgPT09IFwiYmFja2JsYXplXCIpIHtcbiAgICAgICAgICAgIGlmIChhd2FpdCBoYXNCYWNrYmxhemVDcmVkcygpKSB7XG4gICAgICAgICAgICAgICAgd3JhcHBlci5hcGkgPSBuZXcgQXJjaGl2ZXNCYWNrYmxhemUoeyBidWNrZXROYW1lOiBwYXJzZUJhY2tibGF6ZVVybChjb25maWcudXJsKS5idWNrZXROYW1lLCBwdWJsaWM6IGNvbmZpZy5wdWJsaWMsIGltbXV0YWJsZTogY29uZmlnLmltbXV0YWJsZSwgYWxsb3dlZE9yaWdpbnM6IGNvbmZpZy5hbGxvd2VkT3JpZ2lucyB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNOb2RlKCkpIHtcbiAgICAgICAgICAgICAgICB3cmFwcGVyLndyaXRlQmxvY2tlZCA9IGBObyBiYWNrYmxhemUgY3JlZGVudGlhbHMgZm9yICR7Y29uZmlnLnVybH0uIFByb3ZpZGUgYmFja2JsYXplLmpzb24uYXBwbGljYXRpb25LZXlJZCBhbmQgYmFja2JsYXplLmpzb24uYXBwbGljYXRpb25LZXkgdmlhIGdldFNlY3JldCB0byBlbmFibGUgQVBJIGFjY2Vzcy5gO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB3cmFwcGVyLndyaXRlQmxvY2tlZCA9IGBCcm93c2VycyBjYW5ub3Qgd3JpdGUgdG8gYmFja2JsYXplIChidWNrZXQgJHtjb25maWcudXJsfSlgO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF3cmFwcGVyLmFwaSAmJiBjb25maWcucHVibGljICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIHdyYXBwZXIudXJsID0gbmV3IEFyY2hpdmVzVXJsKGdldEJ1Y2tldEJhc2VVcmwoY29uZmlnLnVybCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHBhcnNlZCA9IHBhcnNlSG9zdGVkVXJsKGNvbmZpZy51cmwpO1xuICAgICAgICBsZXQgc2VydmVyID0gaXNOb2RlKCkgJiYgZ2V0U3RvcmFnZVNlcnZlckNvbmZpZ09wdGlvbmFsKCkgfHwgdW5kZWZpbmVkO1xuICAgICAgICBpZiAoc2VydmVyICYmIHBhcnNlZC5hZGRyZXNzID09PSBzZXJ2ZXIuZG9tYWluICYmIHBhcnNlZC5wb3J0ID09PSBzZXJ2ZXIucG9ydCkge1xuICAgICAgICAgICAgLy8gQSBidWNrZXQgaG9zdGVkIGJ5IG91ciBvd24gcHJvY2VzcyAtIHVzZSBpdCBkaXJlY3RseSBpbnN0ZWFkIG9mIGNhbGxpbmcgb3Vyc2VsdmVzXG4gICAgICAgICAgICB3cmFwcGVyLmFwaSA9IGdldExvY2FsQXJjaGl2ZXMocGFyc2VkLmFjY291bnQsIHBhcnNlZC5idWNrZXROYW1lKTtcbiAgICAgICAgICAgIHJldHVybiB3cmFwcGVyO1xuICAgICAgICB9XG4gICAgICAgIHdyYXBwZXIucmVtb3RlID0gbmV3IEFyY2hpdmVzUmVtb3RlKHsgdXJsOiBjb25maWcudXJsLCB3YWl0Rm9yQWNjZXNzOiBmYWxzZSB9KTtcbiAgICAgICAgd3JhcHBlci5hcGkgPSB3cmFwcGVyLnJlbW90ZTtcbiAgICAgICAgaWYgKGNvbmZpZy5wdWJsaWMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICB3cmFwcGVyLnVybCA9IG5ldyBBcmNoaXZlc1VybChnZXRCdWNrZXRCYXNlVXJsKGNvbmZpZy51cmwpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gd3JhcHBlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RGVidWdOYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIC8vIFRoZSBzYW1lIFVSTCBjYW4gYXBwZWFyIGFzIG11bHRpcGxlIHNvdXJjZXMgKGRpZmZlcmVudCByb3V0ZXMgLyB2YWxpZCB3aW5kb3dzKSwgc28gdGhlIGRpc3Rpbmd1aXNoaW5nIHNsaWNlIGlzIHBhcnQgb2YgdGhlIG5hbWVcbiAgICAgICAgbGV0IHBhcnRzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBsZXQgcm91dGUgPSB0aGlzLmNvbmZpZy5yb3V0ZTtcbiAgICAgICAgaWYgKHJvdXRlKSB7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKGByb3V0ZSBbJHtyb3V0ZVswXX0sICR7cm91dGVbMV19KWApO1xuICAgICAgICB9XG4gICAgICAgIGxldCBbc3RhcnQsIGVuZF0gPSB0aGlzLmNvbmZpZy52YWxpZFdpbmRvdztcbiAgICAgICAgaWYgKHN0YXJ0ICE9PSAwIHx8IGVuZCAhPT0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpIHtcbiAgICAgICAgICAgIGxldCBzdGFydFRleHQgPSBzdGFydCA9PT0gMCAmJiBcIjBcIiB8fCBuZXcgRGF0ZShzdGFydCkudG9JU09TdHJpbmcoKTtcbiAgICAgICAgICAgIGxldCBlbmRUZXh0ID0gZW5kID09PSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiAmJiBcImZvcmV2ZXJcIiB8fCBuZXcgRGF0ZShlbmQpLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKGB2YWxpZFdpbmRvdyBbJHtzdGFydFRleHR9LCAke2VuZFRleHR9XWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgc291cmNlICR7dGhpcy5jb25maWcudXJsfSR7cGFydHMubGVuZ3RoICYmIGAgKCR7cGFydHMuam9pbihcIiwgXCIpfSlgIHx8IFwiXCJ9YDtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNDb25uZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5yZW1vdGUpIHJldHVybiB0cnVlO1xuICAgICAgICByZXR1cm4gdGhpcy5yZW1vdGUuaXNDb25uZWN0ZWQoKTtcbiAgICB9XG5cbiAgICAvKiogQ2FsbCBhZnRlciBhIHJlcXVlc3QgZmFpbGVkIHdoaWxlIGlzQ29ubmVjdGVkKCkgd2FzIGZhbHNlOiBzdGFydHMgKGlmIG5vdCBhbHJlYWR5IHJ1bm5pbmcpIHRoZSBiYWNrZ3JvdW5kIHJlY29ubmVjdCBsb29wLiBOZXZlciBibG9ja3MgLSB0aGUgZmFpbGVkIHJlcXVlc3Qgc3RpbGwgdGhyb3dzLiAqL1xuICAgIHB1YmxpYyBub3RlRmFpbHVyZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmJhY2tncm91bmQgfHwgdGhpcy5kaXNwb3NlZCB8fCB0aGlzLnJlY29ubmVjdFJ1bm5pbmcpIHJldHVybjtcbiAgICAgICAgaWYgKHRoaXMuaXNDb25uZWN0ZWQoKSkgcmV0dXJuO1xuICAgICAgICBjb25zb2xlLmVycm9yKGBDYW5ub3QgY29ubmVjdCB0byBzdG9yYWdlICR7dGhpcy5nZXREZWJ1Z05hbWUoKX1gKTtcbiAgICAgICAgdGhpcy5yZWNvbm5lY3RSdW5uaW5nID0gdHJ1ZTtcbiAgICAgICAgdm9pZCB0aGlzLnJlY29ubmVjdExvb3AoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHJlY29ubmVjdExvb3AoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGxldCByZXRyeURlbGF5ID0gUkVUUllfU1RBUlRfREVMQVk7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICBhd2FpdCBkZWxheShyZXRyeURlbGF5KTtcbiAgICAgICAgICAgIGlmICh0aGlzLmRpc3Bvc2VkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWNvbm5lY3RSdW5uaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuaXNDb25uZWN0ZWQoKSkgYnJlYWs7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIC8vIEFueSBjYWxsIHJlLWVzdGFibGlzaGVzIHRoZSBXZWJTb2NrZXQ7IHRoZSByZXN1bHQgZG9lc24ndCBtYXR0ZXJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnJlbW90ZT8uZ2V0SW5mbyhST1VUSU5HX0ZJTEUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIC8vIEV2ZW4gYSBmYWlsaW5nIGNhbGwgKGUuZy4gYWNjZXNzIGRlbmllZCkgcHJvdmVzIHRoZSBjb25uZWN0aW9uIGlzIGJhY2tcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0Nvbm5lY3RlZCgpKSBicmVhaztcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYENhbm5vdCBjb25uZWN0IHRvIHN0b3JhZ2UgJHt0aGlzLmdldERlYnVnTmFtZSgpfSwgcmV0cnlpbmcgaW4gJHtNYXRoLnJvdW5kKHJldHJ5RGVsYXkgLyAxMDAwKX1zLiAkeyhlIGFzIEVycm9yKS5zdGFjayA/PyBlfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0cnlEZWxheSA9IE1hdGgubWluKFJFVFJZX01BWF9ERUxBWSwgcmV0cnlEZWxheSAqIFJFVFJZX0dST1dUSCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZWNvbm5lY3RSdW5uaW5nID0gZmFsc2U7XG4gICAgICAgIGNvbnNvbGUubG9nKGBSZWNvbm5lY3RlZCB0byBzdG9yYWdlICR7dGhpcy5nZXREZWJ1Z05hbWUoKX1gKTtcbiAgICB9XG5cbiAgICAvLyBGb3IgaG9zdGVkIHNvdXJjZXM6IGNhY2hlZCBhY2Nlc3MgY2hlY2ssIHNvIHJlYWRzIGtub3cgd2hldGhlciB0byB1c2UgdGhlIEFQSSBvciB0aGUgcHVibGljIFVSTCBmb3JtLiBBY2Nlc3MsIG9uY2Ugc2VlbiwgaXMgYXNzdW1lZCB0byBzdGljazsgbm8tYWNjZXNzIGlzIHJlLWNoZWNrZWQgcGVyaW9kaWNhbGx5ICh0aGUgY2hlY2sgYWxzbyByZWdpc3RlcnMgb3VyIGFjY2VzcyByZXF1ZXN0IHNlcnZlci1zaWRlLCB3aGljaCBsb2dzIHRoZSBncmFudCBsaW5rKS5cbiAgICBwcml2YXRlIGFzeW5jIGNoZWNrQWNjZXNzKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBsZXQgcmVtb3RlID0gdGhpcy5yZW1vdGU7XG4gICAgICAgIGlmICghcmVtb3RlKSByZXR1cm4gISF0aGlzLmFwaTtcbiAgICAgICAgbGV0IGNhY2hlZCA9IHRoaXMuYWNjZXNzQ2FjaGU7XG4gICAgICAgIGlmIChjYWNoZWQgJiYgKGNhY2hlZC5oYXNBY2Nlc3MgfHwgRGF0ZS5ub3coKSAtIGNhY2hlZC50aW1lIDwgQUNDRVNTX1JFQ0hFQ0tfSU5URVJWQUwpKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkLmhhc0FjY2VzcztcbiAgICAgICAgfVxuICAgICAgICBsZXQgd2FpdGluZyA9IGF3YWl0IHJlbW90ZS53YWl0aW5nRm9yQWNjZXNzKCk7XG4gICAgICAgIHRoaXMuYWNjZXNzQ2FjaGUgPSB7IGhhc0FjY2VzczogIXdhaXRpbmcsIHRpbWU6IERhdGUubm93KCkgfTtcbiAgICAgICAgaWYgKHdhaXRpbmcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgTm8gYWNjZXNzIHRvIHN0b3JhZ2UgYWNjb3VudCBmb3IgJHt0aGlzLmNvbmZpZy51cmx9IChvdXIgbWFjaGluZSAke3dhaXRpbmcubWFjaGluZUlkfSwgaXAgJHt3YWl0aW5nLmlwfSkuIFJlYWRpbmcgdmlhIHRoZSBwdWJsaWMgVVJMIGZvcm0gd2hlcmUgcG9zc2libGUuIEdyYW50IGFjY2VzcyBhdCAke3dhaXRpbmcubGlua31gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gIXdhaXRpbmc7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlYWQ8VD4ocnVuOiAoYXJjaGl2ZXM6IElBcmNoaXZlcykgPT4gUHJvbWlzZTxUPik6IFByb21pc2U8VD4ge1xuICAgICAgICBpZiAodGhpcy5hcGkgJiYgYXdhaXQgdGhpcy5jaGVja0FjY2VzcygpKSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgcnVuKHRoaXMuYXBpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy51cmwpIHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBydW4odGhpcy51cmwpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmFwaSkge1xuICAgICAgICAgICAgLy8gTm8gcHVibGljIFVSTCBmb3JtIC0gbGV0IHRoZSBBUEkgY2FsbCB0aHJvdyBpdHMgb3duIGVycm9yICh3aGljaCBpbmNsdWRlcyB0aGUgYWNjZXNzIGluc3RydWN0aW9ucyBmb3IgaG9zdGVkIHNvdXJjZXMpXG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgcnVuKHRoaXMuYXBpKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNvdXJjZSAke3RoaXMuY29uZmlnLnVybH0gaGFzIG5vIEFQSSBhY2Nlc3MgYW5kIG5vIHB1YmxpYyBVUkwgZm9ybSAocHVibGljOiBmYWxzZSlgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVhZFJvdXRpbmdDb25maWcoKTogUHJvbWlzZTxSZW1vdGVDb25maWcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgbGV0IGRhdGEgPSBhd2FpdCB0aGlzLnJlYWQoYXJjaGl2ZXMgPT4gYXJjaGl2ZXMuZ2V0KFJPVVRJTkdfRklMRSkpO1xuICAgICAgICByZXR1cm4gZGF0YSAmJiBwYXJzZVJvdXRpbmdEYXRhKGRhdGEpIHx8IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgaGFzV3JpdGVBY2Nlc3MoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGlmICh0aGlzLndyaXRlQmxvY2tlZCB8fCAhdGhpcy5hcGkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYXBpLmhhc1dyaXRlQWNjZXNzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwaW5nczogbnVtYmVyW10gPSBbXTtcbiAgICBwcml2YXRlIHBpbmdUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+IHwgdW5kZWZpbmVkO1xuICAgIHByaXZhdGUgbG9nZ2VkQ29ubmVjdGVkID0gZmFsc2U7XG5cbiAgICAvKiogU3RhcnRzIG1lYXN1cmluZyB0aGlzIHNvdXJjZSdzIGxhdGVuY3kgKGZvciB2YXJpYWJsZS1zaGFyZCB0YXJnZXQgcHJlZmVyZW5jZSkuIE9ubHkgaG9zdGVkIHJlbW90ZXMgYXJlIHBpbmdlZDsgb3VyIG93biBsb2NhbCBzZXJ2ZXIgY291bnRzIGFzIDAsIGV2ZXJ5dGhpbmcgZWxzZSBhcyBJbmZpbml0eS4gKi9cbiAgICBwdWJsaWMgc3RhcnRQaW5naW5nKCk6IHZvaWQge1xuICAgICAgICBjb25zdCByZW1vdGUgPSB0aGlzLnJlbW90ZTtcbiAgICAgICAgaWYgKCFyZW1vdGUgfHwgdGhpcy5waW5nVGltZXIgfHwgdGhpcy5kaXNwb3NlZCkgcmV0dXJuO1xuICAgICAgICBsZXQgbWVhc3VyZSA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGxldCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHJlbW90ZS5waW5nKCk7XG4gICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgICAvLyBBIGZhaWxlZCBwaW5nIGlzIGFsc28gb3VyIGVhcmxpZXN0IGRvd24tZGV0ZWN0aW9uXG4gICAgICAgICAgICAgICAgdGhpcy5ub3RlRmFpbHVyZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5sb2dnZWRDb25uZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlZENvbm5lY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYENvbm5lY3RlZCB0byBzdG9yYWdlICR7dGhpcy5nZXREZWJ1Z05hbWUoKX0gKCR7RGF0ZS5ub3coKSAtIHN0YXJ0fW1zKWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5waW5ncy5wdXNoKERhdGUubm93KCkgLSBzdGFydCk7XG4gICAgICAgICAgICBpZiAodGhpcy5waW5ncy5sZW5ndGggPiBQSU5HX0hJU1RPUlkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBpbmdzLnNoaWZ0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZvaWQgbWVhc3VyZSgpO1xuICAgICAgICB0aGlzLnBpbmdUaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgICAgIHZvaWQgbWVhc3VyZSgpO1xuICAgICAgICB9LCBQSU5HX0lOVEVSVkFMKTtcbiAgICAgICAgKHRoaXMucGluZ1RpbWVyIGFzIHsgdW5yZWY/OiAoKSA9PiB2b2lkIH0pLnVucmVmPy4oKTtcbiAgICB9XG5cbiAgICAvKiogU2VlZHMgdGhlIGxhdGVuY3kgZXN0aW1hdGUgYmVmb3JlIHRoZSBmaXJzdCBwaW5nIGxhbmRzIChlLmcuIGZyb20gdGhlIGluaXRpYWwgcm91dGluZyBmZXRjaCksIHNvIHZhcmlhYmxlLXNoYXJkIHBpY2tpbmcgaGFzIHNvbWV0aGluZyBpbW1lZGlhdGVseS4gUmVhbCBwaW5ncyB0YWtlIG92ZXIgZnJvbSB0aGUgZmlyc3QgbWVhc3VyZW1lbnQgb24uICovXG4gICAgcHVibGljIHNlZWRMYXRlbmN5KG1zOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucGluZ3MubGVuZ3RoKSByZXR1cm47XG4gICAgICAgIHRoaXMucGluZ3MucHVzaChtcyk7XG4gICAgfVxuXG4gICAgLyoqIE1lZGlhbiBvZiB0aGUgcmVjZW50IHBpbmdzLiBTb3VyY2VzIHRoYXQgY2FuJ3QgYmUgcGluZ2VkIHNvcnQgbGFzdCAoSW5maW5pdHkpLCBleGNlcHQgb3VyIG93biBpbi1wcm9jZXNzIHNlcnZlciwgd2hpY2ggaXMgdGhlIGJlc3QgcG9zc2libGUgdGFyZ2V0ICgwKS4gKi9cbiAgICBwdWJsaWMgZ2V0TGF0ZW5jeSgpOiBudW1iZXIge1xuICAgICAgICBpZiAoIXRoaXMucmVtb3RlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jb25maWcudHlwZSA9PT0gXCJyZW1vdGVcIiAmJiB0aGlzLmFwaSkgcmV0dXJuIDA7XG4gICAgICAgICAgICByZXR1cm4gSW5maW5pdHk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnBpbmdzLmxlbmd0aCkgcmV0dXJuIEluZmluaXR5O1xuICAgICAgICBsZXQgc29ydGVkID0gWy4uLnRoaXMucGluZ3NdO1xuICAgICAgICBzb3J0KHNvcnRlZCwgeCA9PiB4KTtcbiAgICAgICAgcmV0dXJuIHNvcnRlZFtNYXRoLmZsb29yKHNvcnRlZC5sZW5ndGggLyAyKV07XG4gICAgfVxuXG4gICAgLyoqIFdyaXRlcyBhbHdheXMgZ28gdGhyb3VnaCB0aGUgQVBJLCBzbyBhIHBlcm1pc3Npb24gZXJyb3IgdGhyb3dzIHRvIHRoZSBjYWxsZXIgb24gZXZlcnkgd3JpdGUgKGFuZCBhY2Nlc3MgZ3JhbnRlZCBpbiB0aGUgbWVhbnRpbWUgaXMgcGlja2VkIHVwIGF1dG9tYXRpY2FsbHkpLiAqL1xuICAgIHB1YmxpYyBhc3luYyB3cml0ZTxUPihydW46IChhcmNoaXZlczogSUFyY2hpdmVzKSA9PiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgICAgIGlmICh0aGlzLndyaXRlQmxvY2tlZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMud3JpdGVCbG9ja2VkKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgYXBpID0gdGhpcy5hcGk7XG4gICAgICAgIGlmICghYXBpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNvdXJjZSAke3RoaXMuY29uZmlnLnVybH0gaGFzIG5vIEFQSSBhY2Nlc3MsIHNvIGl0IGNhbm5vdCBhY2NlcHQgd3JpdGVzYCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IHJ1bihhcGkpO1xuICAgICAgICB0aGlzLmFjY2Vzc0NhY2hlID0geyBoYXNBY2Nlc3M6IHRydWUsIHRpbWU6IERhdGUubm93KCkgfTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNwb3NlZCA9IHRydWU7XG4gICAgICAgIGlmICh0aGlzLnBpbmdUaW1lcikge1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnBpbmdUaW1lcik7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
249
|
-
/* _JS_SOURCE_HASH = "
|
|
247
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlV3JhcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNvdXJjZVdyYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQXdEO0FBQ3hELDJEQUFxRDtBQUNyRCxvREFBaUQ7QUFFakQsaURBQXFIO0FBQ3JILHFEQUFrRDtBQUNsRCwrQ0FBNEM7QUFDNUMsNENBQWlEO0FBQ2pELDZEQUF3RjtBQUUzRSxRQUFBLGlCQUFpQixHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDN0IsUUFBQSxlQUFlLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDaEMsUUFBQSxZQUFZLEdBQUcsR0FBRyxDQUFDO0FBQ2hDLE1BQU0sdUJBQXVCLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUMxQyxNQUFNLGFBQWEsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ2hDLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQztBQUV4QixLQUFLLFVBQVUsaUJBQWlCO0lBQzVCLElBQUksQ0FBQyxJQUFBLGFBQU0sR0FBRTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQzVCLElBQUksQ0FBQztRQUNELE1BQU0sSUFBQSxxQkFBUyxFQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDbkQsTUFBTSxJQUFBLHFCQUFTLEVBQUMsK0JBQStCLENBQUMsQ0FBQztRQUNqRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQUMsV0FBTSxDQUFDO1FBQ0wsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztBQUNMLENBQUM7QUFFRCxzakJBQXNqQjtBQUN0akIsTUFBYSxhQUFhO0lBU3RCLFlBQ1csTUFBc0M7SUFDN0Msb0ZBQW9GO0lBQzVFLFVBQW1CO1FBRnBCLFdBQU0sR0FBTixNQUFNLENBQWdDO1FBRXJDLGVBQVUsR0FBVixVQUFVLENBQVM7UUFQdkIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7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QUFDLENBQUM7UUFDdkMsQ0FBQztRQUNELElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1AsTUFBTSxJQUFJLEtBQUssQ0FBQyxVQUFVLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxnREFBZ0QsQ0FBQyxDQUFDO1FBQy9GLENBQUM7UUFDRCxJQUFJLE1BQU0sR0FBRyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDekQsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVNLE9BQU87UUFDVixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7SUFDTCxDQUFDO0NBQ0o7QUExTkQsc0NBME5DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNOb2RlLCBzb3J0IH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvbWlzY1wiO1xuaW1wb3J0IHsgZGVsYXkgfSBmcm9tIFwic29ja2V0LWZ1bmN0aW9uL3NyYy9iYXRjaGluZ1wiO1xuaW1wb3J0IHsgZ2V0U2VjcmV0IH0gZnJvbSBcIi4uLy4uL21pc2MvZ2V0U2VjcmV0XCI7XG5pbXBvcnQgeyBJQXJjaGl2ZXMsIEhvc3RlZENvbmZpZywgQmFja2JsYXplQ29uZmlnLCBSZW1vdGVDb25maWcgfSBmcm9tIFwiLi4vSUFyY2hpdmVzXCI7XG5pbXBvcnQgeyBST1VUSU5HX0ZJTEUsIGdldEJ1Y2tldEJhc2VVcmwsIHBhcnNlSG9zdGVkVXJsLCBwYXJzZUJhY2tibGF6ZVVybCwgcGFyc2VSb3V0aW5nRGF0YSB9IGZyb20gXCIuL3JlbW90ZUNvbmZpZ1wiO1xuaW1wb3J0IHsgQXJjaGl2ZXNSZW1vdGUgfSBmcm9tIFwiLi9BcmNoaXZlc1JlbW90ZVwiO1xuaW1wb3J0IHsgQXJjaGl2ZXNVcmwgfSBmcm9tIFwiLi9BcmNoaXZlc1VybFwiO1xuaW1wb3J0IHsgQXJjaGl2ZXNCYWNrYmxhemUgfSBmcm9tIFwiLi4vYmFja2JsYXplXCI7XG5pbXBvcnQgeyBnZXRTdG9yYWdlU2VydmVyQ29uZmlnT3B0aW9uYWwsIGdldExvY2FsQXJjaGl2ZXMgfSBmcm9tIFwiLi9zdG9yYWdlU2VydmVyU3RhdGVcIjtcblxuZXhwb3J0IGNvbnN0IFJFVFJZX1NUQVJUX0RFTEFZID0gMiAqIDEwMDA7XG5leHBvcnQgY29uc3QgUkVUUllfTUFYX0RFTEFZID0gNSAqIDYwICogMTAwMDtcbmV4cG9ydCBjb25zdCBSRVRSWV9HUk9XVEggPSAxLjU7XG5jb25zdCBBQ0NFU1NfUkVDSEVDS19JTlRFUlZBTCA9IDYwICogMTAwMDtcbmNvbnN0IFBJTkdfSU5URVJWQUwgPSA2MCAqIDEwMDA7XG5jb25zdCBQSU5HX0hJU1RPUlkgPSAxMDtcblxuYXN5bmMgZnVuY3Rpb24gaGFzQmFja2JsYXplQ3JlZHMoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKCFpc05vZGUoKSkgcmV0dXJuIGZhbHNlO1xuICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGdldFNlY3JldChcImJhY2tibGF6ZS5qc29uLmFwcGxpY2F0aW9uS2V5SWRcIik7XG4gICAgICAgIGF3YWl0IGdldFNlY3JldChcImJhY2tibGF6ZS5qc29uLmFwcGxpY2F0aW9uS2V5XCIpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cblxuLy8gT25lIHNvdXJjZSBvZiBhIFJlbW90ZUNvbmZpZywgYXMgYSB1c2FibGUgSUFyY2hpdmVzLiBSZWFkcyBmYWxsIGJhY2sgdG8gdGhlIHB1YmxpYy1VUkwgZm9ybSB3aGVuIHdlIGRvbid0IGhhdmUgQVBJIGFjY2Vzczsgd3JpdGVzIGFsd2F5cyBhdHRlbXB0IHRoZSBBUEkgKHNvIGFjY2VzcyBncmFudGVkIGxhdGVyIGlzIHBpY2tlZCB1cCBvbiB0aGUgbmV4dCB3cml0ZSkuIFdoZW4gYSBjYWxsIGZhaWxzIHdoaWxlIHRoZSBXZWJTb2NrZXQgaXMgZG93biwgbm90ZUZhaWx1cmUgc3RhcnRzIGEgYmFja2dyb3VuZCByZWNvbm5lY3QgbG9vcCB3aXRoIGEgcmFtcGluZyBkZWxheSAtIGl0IG5ldmVyIGJsb2NrcyBjYWxsZXJzLCBpdCBqdXN0IGtlZXBzIHRyeWluZyBzbyB0aGUgY29ubmVjdGlvbiBldmVudHVhbGx5IGNvbWVzIGJhY2suIFNvdXJjZXMgd2l0aG91dCBhIFdlYlNvY2tldCAoYmFja2JsYXplLCBVUkwtZm9ybSwgb3VyIG93biBsb2NhbCBzZXJ2ZXIpIHJlcG9ydCBhbHdheXMtY29ubmVjdGVkOiB0aGV5J3JlIGxhc3QtcmVzb3J0IHNvdXJjZXMgd2hlcmUgdGhyb3dpbmcgaXMgZmluZS5cbmV4cG9ydCBjbGFzcyBTb3VyY2VXcmFwcGVyIHtcbiAgICBwdWJsaWMgYXBpPzogSUFyY2hpdmVzO1xuICAgIHB1YmxpYyB1cmw/OiBBcmNoaXZlc1VybDtcbiAgICBwdWJsaWMgd3JpdGVCbG9ja2VkPzogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVtb3RlPzogQXJjaGl2ZXNSZW1vdGU7XG4gICAgcHJpdmF0ZSBkaXNwb3NlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVjb25uZWN0UnVubmluZyA9IGZhbHNlO1xuICAgIHByaXZhdGUgYWNjZXNzQ2FjaGU/OiB7IGhhc0FjY2VzczogYm9vbGVhbjsgdGltZTogbnVtYmVyIH07XG5cbiAgICBwcml2YXRlIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgY29uZmlnOiBIb3N0ZWRDb25maWcgfCBCYWNrYmxhemVDb25maWcsXG4gICAgICAgIC8vIGZhbHNlIGZvciBzaG9ydC1saXZlZCBwcm9iZSBpbnN0YW5jZXMsIHdoaWNoIG11c3QgbmV2ZXIgbGVhdmUgYSByZXRyeSBsb29wIGJlaGluZFxuICAgICAgICBwcml2YXRlIGJhY2tncm91bmQ6IGJvb2xlYW4sXG4gICAgKSB7IH1cblxuICAgIC8qKiBDb25maWcgdXBkYXRlcyByb3V0aW5lbHkganVzdCBtb3ZlIGEgc291cmNlJ3MgdmFsaWQgd2luZG93ICh0aGUgbGFzdCB3aW5kb3cgZXh0ZW5kcyBmb3JldmVyLCB0aGVuIGdldHMgcmVkdWNlZCB3aGVuIGEgbmV3IGVudHJ5IGlzIGFwcGVuZGVkKS4gVGhlIHdyYXBwZXIgc3Vydml2ZXMgdGhhdDogb25seSB0aGUgd2luZG93IGNoYW5nZXMsIGtlZXBpbmcgdGhlIGNvbm5lY3Rpb24sIHBpbmdzLCBhbmQgbGF0ZW5jeSBoaXN0b3J5LiAqL1xuICAgIHB1YmxpYyB1cGRhdGVWYWxpZFdpbmRvdyh2YWxpZFdpbmRvdzogW251bWJlciwgbnVtYmVyXSk6IHZvaWQge1xuICAgICAgICBsZXQgb2xkID0gdGhpcy5jb25maWcudmFsaWRXaW5kb3c7XG4gICAgICAgIGlmIChvbGRbMF0gPT09IHZhbGlkV2luZG93WzBdICYmIG9sZFsxXSA9PT0gdmFsaWRXaW5kb3dbMV0pIHJldHVybjtcbiAgICAgICAgY29uc29sZS5sb2coYFZhbGlkIHdpbmRvdyBjaGFuZ2VkIGZvciAke3RoaXMuZ2V0RGVidWdOYW1lKCl9OiBbJHtvbGQuam9pbihcIiwgXCIpfV0gLT4gWyR7dmFsaWRXaW5kb3cuam9pbihcIiwgXCIpfV1gKTtcbiAgICAgICAgdGhpcy5jb25maWcudmFsaWRXaW5kb3cgPSB2YWxpZFdpbmRvdztcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGFzeW5jIGNyZWF0ZShjb25maWc6IEhvc3RlZENvbmZpZyB8IEJhY2tibGF6ZUNvbmZpZywgb3B0aW9ucz86IHsgYmFja2dyb3VuZD86IGJvb2xlYW4gfSk6IFByb21pc2U8U291cmNlV3JhcHBlcj4ge1xuICAgICAgICBsZXQgd3JhcHBlciA9IG5ldyBTb3VyY2VXcmFwcGVyKGNvbmZpZywgb3B0aW9ucz8uYmFja2dyb3VuZCAhPT0gZmFsc2UpO1xuICAgICAgICBpZiAoY29uZmlnLnR5cGUgPT09IFwiYmFja2JsYXplXCIpIHtcbiAgICAgICAgICAgIGlmIChhd2FpdCBoYXNCYWNrYmxhemVDcmVkcygpKSB7XG4gICAgICAgICAgICAgICAgd3JhcHBlci5hcGkgPSBuZXcgQXJjaGl2ZXNCYWNrYmxhemUoeyBidWNrZXROYW1lOiBwYXJzZUJhY2tibGF6ZVVybChjb25maWcudXJsKS5idWNrZXROYW1lLCBwdWJsaWM6IGNvbmZpZy5wdWJsaWMsIGltbXV0YWJsZTogY29uZmlnLmltbXV0YWJsZSwgYWxsb3dlZE9yaWdpbnM6IGNvbmZpZy5hbGxvd2VkT3JpZ2lucyB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNOb2RlKCkpIHtcbiAgICAgICAgICAgICAgICB3cmFwcGVyLndyaXRlQmxvY2tlZCA9IGBObyBiYWNrYmxhemUgY3JlZGVudGlhbHMgZm9yICR7Y29uZmlnLnVybH0uIFByb3ZpZGUgYmFja2JsYXplLmpzb24uYXBwbGljYXRpb25LZXlJZCBhbmQgYmFja2JsYXplLmpzb24uYXBwbGljYXRpb25LZXkgdmlhIGdldFNlY3JldCB0byBlbmFibGUgQVBJIGFjY2Vzcy5gO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB3cmFwcGVyLndyaXRlQmxvY2tlZCA9IGBCcm93c2VycyBjYW5ub3Qgd3JpdGUgdG8gYmFja2JsYXplIChidWNrZXQgJHtjb25maWcudXJsfSlgO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF3cmFwcGVyLmFwaSAmJiBjb25maWcucHVibGljICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIHdyYXBwZXIudXJsID0gbmV3IEFyY2hpdmVzVXJsKGdldEJ1Y2tldEJhc2VVcmwoY29uZmlnLnVybCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHBhcnNlZCA9IHBhcnNlSG9zdGVkVXJsKGNvbmZpZy51cmwpO1xuICAgICAgICBsZXQgc2VydmVyID0gaXNOb2RlKCkgJiYgZ2V0U3RvcmFnZVNlcnZlckNvbmZpZ09wdGlvbmFsKCkgfHwgdW5kZWZpbmVkO1xuICAgICAgICBpZiAoc2VydmVyICYmIHBhcnNlZC5hZGRyZXNzID09PSBzZXJ2ZXIuZG9tYWluICYmIHBhcnNlZC5wb3J0ID09PSBzZXJ2ZXIucG9ydCkge1xuICAgICAgICAgICAgLy8gQSBidWNrZXQgaG9zdGVkIGJ5IG91ciBvd24gcHJvY2VzcyAtIHVzZSBpdCBkaXJlY3RseSBpbnN0ZWFkIG9mIGNhbGxpbmcgb3Vyc2VsdmVzXG4gICAgICAgICAgICB3cmFwcGVyLmFwaSA9IGdldExvY2FsQXJjaGl2ZXMocGFyc2VkLmFjY291bnQsIHBhcnNlZC5idWNrZXROYW1lKTtcbiAgICAgICAgICAgIHJldHVybiB3cmFwcGVyO1xuICAgICAgICB9XG4gICAgICAgIHdyYXBwZXIucmVtb3RlID0gbmV3IEFyY2hpdmVzUmVtb3RlKHsgdXJsOiBjb25maWcudXJsLCB3YWl0Rm9yQWNjZXNzOiBmYWxzZSB9KTtcbiAgICAgICAgd3JhcHBlci5hcGkgPSB3cmFwcGVyLnJlbW90ZTtcbiAgICAgICAgaWYgKGNvbmZpZy5wdWJsaWMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICB3cmFwcGVyLnVybCA9IG5ldyBBcmNoaXZlc1VybChnZXRCdWNrZXRCYXNlVXJsKGNvbmZpZy51cmwpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gd3JhcHBlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RGVidWdOYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIC8vIFRoZSBzYW1lIFVSTCBjYW4gYXBwZWFyIGFzIG11bHRpcGxlIHNvdXJjZXMgKGRpZmZlcmVudCByb3V0ZXMgLyB2YWxpZCB3aW5kb3dzKSwgc28gdGhlIGRpc3Rpbmd1aXNoaW5nIHNsaWNlIGlzIHBhcnQgb2YgdGhlIG5hbWVcbiAgICAgICAgbGV0IHBhcnRzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBsZXQgcm91dGUgPSB0aGlzLmNvbmZpZy5yb3V0ZTtcbiAgICAgICAgaWYgKHJvdXRlKSB7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKGByb3V0ZSBbJHtyb3V0ZVswXX0sICR7cm91dGVbMV19KWApO1xuICAgICAgICB9XG4gICAgICAgIGxldCBbc3RhcnQsIGVuZF0gPSB0aGlzLmNvbmZpZy52YWxpZFdpbmRvdztcbiAgICAgICAgaWYgKHN0YXJ0ICE9PSAwIHx8IGVuZCAhPT0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpIHtcbiAgICAgICAgICAgIGxldCBzdGFydFRleHQgPSBzdGFydCA9PT0gMCAmJiBcIjBcIiB8fCBuZXcgRGF0ZShzdGFydCkudG9JU09TdHJpbmcoKTtcbiAgICAgICAgICAgIGxldCBlbmRUZXh0ID0gZW5kID09PSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiAmJiBcImZvcmV2ZXJcIiB8fCBuZXcgRGF0ZShlbmQpLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKGB2YWxpZFdpbmRvdyBbJHtzdGFydFRleHR9LCAke2VuZFRleHR9XWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgc291cmNlICR7dGhpcy5jb25maWcudXJsfSR7cGFydHMubGVuZ3RoICYmIGAgKCR7cGFydHMuam9pbihcIiwgXCIpfSlgIHx8IFwiXCJ9YDtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNDb25uZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5yZW1vdGUpIHJldHVybiB0cnVlO1xuICAgICAgICByZXR1cm4gdGhpcy5yZW1vdGUuaXNDb25uZWN0ZWQoKTtcbiAgICB9XG5cbiAgICAvKiogQ2FsbCBhZnRlciBhIHJlcXVlc3QgZmFpbGVkIHdoaWxlIGlzQ29ubmVjdGVkKCkgd2FzIGZhbHNlOiBzdGFydHMgKGlmIG5vdCBhbHJlYWR5IHJ1bm5pbmcpIHRoZSBiYWNrZ3JvdW5kIHJlY29ubmVjdCBsb29wLiBOZXZlciBibG9ja3MgLSB0aGUgZmFpbGVkIHJlcXVlc3Qgc3RpbGwgdGhyb3dzLiAqL1xuICAgIHB1YmxpYyBub3RlRmFpbHVyZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmJhY2tncm91bmQgfHwgdGhpcy5kaXNwb3NlZCB8fCB0aGlzLnJlY29ubmVjdFJ1bm5pbmcpIHJldHVybjtcbiAgICAgICAgaWYgKHRoaXMuaXNDb25uZWN0ZWQoKSkgcmV0dXJuO1xuICAgICAgICBjb25zb2xlLmVycm9yKGBDYW5ub3QgY29ubmVjdCB0byBzdG9yYWdlICR7dGhpcy5nZXREZWJ1Z05hbWUoKX1gKTtcbiAgICAgICAgdGhpcy5yZWNvbm5lY3RSdW5uaW5nID0gdHJ1ZTtcbiAgICAgICAgdm9pZCB0aGlzLnJlY29ubmVjdExvb3AoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHJlY29ubmVjdExvb3AoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGxldCByZXRyeURlbGF5ID0gUkVUUllfU1RBUlRfREVMQVk7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICBhd2FpdCBkZWxheShyZXRyeURlbGF5KTtcbiAgICAgICAgICAgIGlmICh0aGlzLmRpc3Bvc2VkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWNvbm5lY3RSdW5uaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuaXNDb25uZWN0ZWQoKSkgYnJlYWs7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIC8vIEFueSBjYWxsIHJlLWVzdGFibGlzaGVzIHRoZSBXZWJTb2NrZXQ7IHRoZSByZXN1bHQgZG9lc24ndCBtYXR0ZXJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnJlbW90ZT8uZ2V0SW5mbyhST1VUSU5HX0ZJTEUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIC8vIEV2ZW4gYSBmYWlsaW5nIGNhbGwgKGUuZy4gYWNjZXNzIGRlbmllZCkgcHJvdmVzIHRoZSBjb25uZWN0aW9uIGlzIGJhY2tcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0Nvbm5lY3RlZCgpKSBicmVhaztcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYENhbm5vdCBjb25uZWN0IHRvIHN0b3JhZ2UgJHt0aGlzLmdldERlYnVnTmFtZSgpfSwgcmV0cnlpbmcgaW4gJHtNYXRoLnJvdW5kKHJldHJ5RGVsYXkgLyAxMDAwKX1zLiAkeyhlIGFzIEVycm9yKS5zdGFjayA/PyBlfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0cnlEZWxheSA9IE1hdGgubWluKFJFVFJZX01BWF9ERUxBWSwgcmV0cnlEZWxheSAqIFJFVFJZX0dST1dUSCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZWNvbm5lY3RSdW5uaW5nID0gZmFsc2U7XG4gICAgICAgIGNvbnNvbGUubG9nKGBSZWNvbm5lY3RlZCB0byBzdG9yYWdlICR7dGhpcy5nZXREZWJ1Z05hbWUoKX1gKTtcbiAgICB9XG5cbiAgICAvLyBGb3IgaG9zdGVkIHNvdXJjZXM6IGNhY2hlZCBhY2Nlc3MgY2hlY2ssIHNvIHJlYWRzIGtub3cgd2hldGhlciB0byB1c2UgdGhlIEFQSSBvciB0aGUgcHVibGljIFVSTCBmb3JtLiBBY2Nlc3MsIG9uY2Ugc2VlbiwgaXMgYXNzdW1lZCB0byBzdGljazsgbm8tYWNjZXNzIGlzIHJlLWNoZWNrZWQgcGVyaW9kaWNhbGx5ICh0aGUgY2hlY2sgYWxzbyByZWdpc3RlcnMgb3VyIGFjY2VzcyByZXF1ZXN0IHNlcnZlci1zaWRlLCB3aGljaCBsb2dzIHRoZSBncmFudCBsaW5rKS5cbiAgICBwcml2YXRlIGFzeW5jIGNoZWNrQWNjZXNzKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBsZXQgcmVtb3RlID0gdGhpcy5yZW1vdGU7XG4gICAgICAgIGlmICghcmVtb3RlKSByZXR1cm4gISF0aGlzLmFwaTtcbiAgICAgICAgbGV0IGNhY2hlZCA9IHRoaXMuYWNjZXNzQ2FjaGU7XG4gICAgICAgIGlmIChjYWNoZWQgJiYgKGNhY2hlZC5oYXNBY2Nlc3MgfHwgRGF0ZS5ub3coKSAtIGNhY2hlZC50aW1lIDwgQUNDRVNTX1JFQ0hFQ0tfSU5URVJWQUwpKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkLmhhc0FjY2VzcztcbiAgICAgICAgfVxuICAgICAgICBsZXQgd2FpdGluZyA9IGF3YWl0IHJlbW90ZS53YWl0aW5nRm9yQWNjZXNzKCk7XG4gICAgICAgIHRoaXMuYWNjZXNzQ2FjaGUgPSB7IGhhc0FjY2VzczogIXdhaXRpbmcsIHRpbWU6IERhdGUubm93KCkgfTtcbiAgICAgICAgaWYgKHdhaXRpbmcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgTm8gYWNjZXNzIHRvIHN0b3JhZ2UgYWNjb3VudCBmb3IgJHt0aGlzLmNvbmZpZy51cmx9IChvdXIgbWFjaGluZSAke3dhaXRpbmcubWFjaGluZUlkfSwgaXAgJHt3YWl0aW5nLmlwfSkuIFJlYWRpbmcgdmlhIHRoZSBwdWJsaWMgVVJMIGZvcm0gd2hlcmUgcG9zc2libGUuIEdyYW50IGFjY2VzcyBhdCAke3dhaXRpbmcubGlua31gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gIXdhaXRpbmc7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlYWQ8VD4ocnVuOiAoYXJjaGl2ZXM6IElBcmNoaXZlcykgPT4gUHJvbWlzZTxUPik6IFByb21pc2U8VD4ge1xuICAgICAgICBpZiAodGhpcy5hcGkgJiYgYXdhaXQgdGhpcy5jaGVja0FjY2VzcygpKSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgcnVuKHRoaXMuYXBpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy51cmwpIHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBydW4odGhpcy51cmwpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmFwaSkge1xuICAgICAgICAgICAgLy8gTm8gcHVibGljIFVSTCBmb3JtIC0gbGV0IHRoZSBBUEkgY2FsbCB0aHJvdyBpdHMgb3duIGVycm9yICh3aGljaCBpbmNsdWRlcyB0aGUgYWNjZXNzIGluc3RydWN0aW9ucyBmb3IgaG9zdGVkIHNvdXJjZXMpXG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgcnVuKHRoaXMuYXBpKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNvdXJjZSAke3RoaXMuY29uZmlnLnVybH0gaGFzIG5vIEFQSSBhY2Nlc3MgYW5kIG5vIHB1YmxpYyBVUkwgZm9ybSAocHVibGljOiBmYWxzZSlgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVhZFJvdXRpbmdDb25maWcoKTogUHJvbWlzZTxSZW1vdGVDb25maWcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgbGV0IGRhdGEgPSBhd2FpdCB0aGlzLnJlYWQoYXJjaGl2ZXMgPT4gYXJjaGl2ZXMuZ2V0KFJPVVRJTkdfRklMRSkpO1xuICAgICAgICByZXR1cm4gZGF0YSAmJiBwYXJzZVJvdXRpbmdEYXRhKGRhdGEpIHx8IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgaGFzV3JpdGVBY2Nlc3MoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGlmICh0aGlzLndyaXRlQmxvY2tlZCB8fCAhdGhpcy5hcGkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYXBpLmhhc1dyaXRlQWNjZXNzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwaW5nczogbnVtYmVyW10gPSBbXTtcbiAgICBwcml2YXRlIHBpbmdUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+IHwgdW5kZWZpbmVkO1xuICAgIHByaXZhdGUgbG9nZ2VkQ29ubmVjdGVkID0gZmFsc2U7XG5cbiAgICAvKiogU3RhcnRzIG1lYXN1cmluZyB0aGlzIHNvdXJjZSdzIGxhdGVuY3kgKGZvciB2YXJpYWJsZS1zaGFyZCB0YXJnZXQgcHJlZmVyZW5jZSkuIE9ubHkgaG9zdGVkIHJlbW90ZXMgYXJlIHBpbmdlZDsgb3VyIG93biBsb2NhbCBzZXJ2ZXIgY291bnRzIGFzIDAsIGV2ZXJ5dGhpbmcgZWxzZSBhcyBJbmZpbml0eS4gKi9cbiAgICBwdWJsaWMgc3RhcnRQaW5naW5nKCk6IHZvaWQge1xuICAgICAgICBjb25zdCByZW1vdGUgPSB0aGlzLnJlbW90ZTtcbiAgICAgICAgaWYgKCFyZW1vdGUgfHwgdGhpcy5waW5nVGltZXIgfHwgdGhpcy5kaXNwb3NlZCkgcmV0dXJuO1xuICAgICAgICBsZXQgbWVhc3VyZSA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGxldCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHJlbW90ZS5waW5nKCk7XG4gICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgICAvLyBBIGZhaWxlZCBwaW5nIGlzIGFsc28gb3VyIGVhcmxpZXN0IGRvd24tZGV0ZWN0aW9uXG4gICAgICAgICAgICAgICAgdGhpcy5ub3RlRmFpbHVyZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5sb2dnZWRDb25uZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlZENvbm5lY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYENvbm5lY3RlZCB0byBzdG9yYWdlICR7dGhpcy5nZXREZWJ1Z05hbWUoKX0gKCR7RGF0ZS5ub3coKSAtIHN0YXJ0fW1zKWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5waW5ncy5wdXNoKERhdGUubm93KCkgLSBzdGFydCk7XG4gICAgICAgICAgICBpZiAodGhpcy5waW5ncy5sZW5ndGggPiBQSU5HX0hJU1RPUlkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBpbmdzLnNoaWZ0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZvaWQgbWVhc3VyZSgpO1xuICAgICAgICB0aGlzLnBpbmdUaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgICAgIHZvaWQgbWVhc3VyZSgpO1xuICAgICAgICB9LCBQSU5HX0lOVEVSVkFMKTtcbiAgICAgICAgKHRoaXMucGluZ1RpbWVyIGFzIHsgdW5yZWY/OiAoKSA9PiB2b2lkIH0pLnVucmVmPy4oKTtcbiAgICB9XG5cbiAgICAvKiogU2VlZHMgdGhlIGxhdGVuY3kgZXN0aW1hdGUgYmVmb3JlIHRoZSBmaXJzdCBwaW5nIGxhbmRzIChlLmcuIGZyb20gdGhlIGluaXRpYWwgcm91dGluZyBmZXRjaCksIHNvIHZhcmlhYmxlLXNoYXJkIHBpY2tpbmcgaGFzIHNvbWV0aGluZyBpbW1lZGlhdGVseS4gUmVhbCBwaW5ncyB0YWtlIG92ZXIgZnJvbSB0aGUgZmlyc3QgbWVhc3VyZW1lbnQgb24uICovXG4gICAgcHVibGljIHNlZWRMYXRlbmN5KG1zOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucGluZ3MubGVuZ3RoKSByZXR1cm47XG4gICAgICAgIHRoaXMucGluZ3MucHVzaChtcyk7XG4gICAgfVxuXG4gICAgLyoqIE1lZGlhbiBvZiB0aGUgcmVjZW50IHBpbmdzLiBTb3VyY2VzIHRoYXQgY2FuJ3QgYmUgcGluZ2VkIHNvcnQgbGFzdCAoSW5maW5pdHkpLCBleGNlcHQgb3VyIG93biBpbi1wcm9jZXNzIHNlcnZlciwgd2hpY2ggaXMgdGhlIGJlc3QgcG9zc2libGUgdGFyZ2V0ICgwKS4gKi9cbiAgICBwdWJsaWMgZ2V0TGF0ZW5jeSgpOiBudW1iZXIge1xuICAgICAgICBpZiAoIXRoaXMucmVtb3RlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jb25maWcudHlwZSA9PT0gXCJyZW1vdGVcIiAmJiB0aGlzLmFwaSkgcmV0dXJuIDA7XG4gICAgICAgICAgICByZXR1cm4gSW5maW5pdHk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnBpbmdzLmxlbmd0aCkgcmV0dXJuIEluZmluaXR5O1xuICAgICAgICBsZXQgc29ydGVkID0gWy4uLnRoaXMucGluZ3NdO1xuICAgICAgICBzb3J0KHNvcnRlZCwgeCA9PiB4KTtcbiAgICAgICAgcmV0dXJuIHNvcnRlZFtNYXRoLmZsb29yKHNvcnRlZC5sZW5ndGggLyAyKV07XG4gICAgfVxuXG4gICAgLyoqIFdyaXRlcyBhbHdheXMgZ28gdGhyb3VnaCB0aGUgQVBJLCBzbyBhIHBlcm1pc3Npb24gZXJyb3IgdGhyb3dzIHRvIHRoZSBjYWxsZXIgb24gZXZlcnkgd3JpdGUgKGFuZCBhY2Nlc3MgZ3JhbnRlZCBpbiB0aGUgbWVhbnRpbWUgaXMgcGlja2VkIHVwIGF1dG9tYXRpY2FsbHkpLiAqL1xuICAgIHB1YmxpYyBhc3luYyB3cml0ZTxUPihydW46IChhcmNoaXZlczogSUFyY2hpdmVzKSA9PiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgICAgIGlmICh0aGlzLndyaXRlQmxvY2tlZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMud3JpdGVCbG9ja2VkKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgYXBpID0gdGhpcy5hcGk7XG4gICAgICAgIGlmICghYXBpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNvdXJjZSAke3RoaXMuY29uZmlnLnVybH0gaGFzIG5vIEFQSSBhY2Nlc3MsIHNvIGl0IGNhbm5vdCBhY2NlcHQgd3JpdGVzYCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IHJ1bihhcGkpO1xuICAgICAgICB0aGlzLmFjY2Vzc0NhY2hlID0geyBoYXNBY2Nlc3M6IHRydWUsIHRpbWU6IERhdGUubm93KCkgfTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNwb3NlZCA9IHRydWU7XG4gICAgICAgIGlmICh0aGlzLnBpbmdUaW1lcikge1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnBpbmdUaW1lcik7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
248
|
+
/* _JS_SOURCE_HASH = "d93f6875530eacc88f88a24ccb5cd1593f0922836706b234eafd6511c649956e"; */
|