sliftutils 1.7.111 → 1.7.113
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/treeSummary.ts.cache +2 -2
- package/index.d.ts +2 -1
- package/misc/dist/environment.ts.cache +2 -2
- package/misc/dist/getSecret.ts.cache +2 -2
- package/misc/dist/strings.ts.cache +2 -2
- package/misc/dist/zip.ts.cache +2 -2
- package/misc/https/dist/certs.ts.cache +2 -2
- package/misc/https/dist/persistentLocalStorage.ts.cache +2 -2
- package/package.json +1 -1
- package/render-utils/dist/observer.tsx.cache +2 -2
- package/storage/ArchivesDisk.ts +8 -7
- package/storage/IArchives.d.ts +1 -0
- package/storage/IArchives.ts +2 -1
- package/storage/TransactionFile.d.ts +1 -1
- package/storage/TransactionFile.ts +13 -2
- package/storage/archiveHelpers.ts +11 -9
- package/storage/dist/ArchivesDisk.ts.cache +10 -9
- package/storage/dist/FileFolderAPI.tsx.cache +2 -2
- package/storage/dist/IArchives.ts.cache +3 -3
- package/storage/dist/IndexedDBFileFolderAPI.ts.cache +2 -2
- package/storage/dist/JSONStorage.ts.cache +2 -2
- package/storage/dist/PendingManager.tsx.cache +2 -2
- package/storage/dist/StreamingLogs.ts.cache +2 -2
- package/storage/dist/TransactionFile.ts.cache +16 -5
- package/storage/dist/TransactionStorage.ts.cache +2 -2
- package/storage/dist/archiveHelpers.ts.cache +13 -11
- package/storage/dist/backblaze.ts.cache +2 -2
- package/storage/dist/fileSystemPointer.ts.cache +2 -2
- package/storage/dist/remoteFileStorage.ts.cache +2 -2
- package/storage/remoteStorage/ArchivesDelayed.ts +3 -3
- package/storage/remoteStorage/ArchivesRemote.ts +2 -2
- package/storage/remoteStorage/blobStore.ts +15 -15
- package/storage/remoteStorage/bucketDisk.ts +2 -1
- package/storage/remoteStorage/chainStartup.ts +2 -2
- package/storage/remoteStorage/createArchives.ts +13 -13
- package/storage/remoteStorage/deployTakeover.ts +1 -1
- package/storage/remoteStorage/dist/ArchivesDelayed.ts.cache +6 -6
- package/storage/remoteStorage/dist/ArchivesRemote.ts.cache +5 -5
- package/storage/remoteStorage/dist/ArchivesUrl.ts.cache +2 -2
- package/storage/remoteStorage/dist/accessStats.ts.cache +2 -2
- package/storage/remoteStorage/dist/blobStore.ts.cache +17 -17
- package/storage/remoteStorage/dist/bucketDisk.ts.cache +5 -4
- package/storage/remoteStorage/dist/certTrustModal.tsx.cache +2 -2
- package/storage/remoteStorage/dist/chainStartup.ts.cache +5 -5
- package/storage/remoteStorage/dist/cliArgs.ts.cache +2 -2
- package/storage/remoteStorage/dist/createArchives.ts.cache +14 -14
- package/storage/remoteStorage/dist/deployTakeover.ts.cache +4 -4
- package/storage/remoteStorage/dist/intermediateManagement.ts.cache +2 -2
- package/storage/remoteStorage/dist/intermediateSources.ts.cache +2 -2
- package/storage/remoteStorage/dist/remoteConfig.ts.cache +4 -4
- package/storage/remoteStorage/dist/serverConfig.ts.cache +2 -2
- package/storage/remoteStorage/dist/sourceWrapper.ts.cache +6 -6
- package/storage/remoteStorage/dist/sourcesList.ts.cache +2 -2
- package/storage/remoteStorage/dist/storageClientController.ts.cache +2 -2
- package/storage/remoteStorage/dist/storageController.ts.cache +7 -7
- package/storage/remoteStorage/dist/storageServerState.ts.cache +4 -4
- package/storage/remoteStorage/dist/storeConfig.ts.cache +2 -2
- package/storage/remoteStorage/dist/storePlan.ts.cache +2 -2
- package/storage/remoteStorage/dist/storeSources.ts.cache +2 -2
- package/storage/remoteStorage/dist/storeSync.ts.cache +11 -11
- package/storage/remoteStorage/dist/validation.ts.cache +2 -2
- package/storage/remoteStorage/remoteConfig.ts +1 -1
- package/storage/remoteStorage/sourceWrapper.ts +3 -3
- package/storage/remoteStorage/storageController.ts +4 -4
- package/storage/remoteStorage/storageServerState.ts +1 -1
- package/storage/remoteStorage/storeSync.ts +10 -10
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"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";
|
|
2
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
3
|
return (mod && mod.__esModule && mod.default) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
@@ -93,7 +93,7 @@ async function detectDeployTakeover() {
|
|
|
93
93
|
exports.detectDeployTakeover = detectDeployTakeover;
|
|
94
94
|
function setAltPort(port) {
|
|
95
95
|
if (!takeover) {
|
|
96
|
-
throw new Error(`
|
|
96
|
+
throw new Error(`Alternate port taken without a detected deploy takeover: port ${port} - detectDeployTakeover must run first`);
|
|
97
97
|
}
|
|
98
98
|
takeover.altPort = port;
|
|
99
99
|
// Needs to be enough after our startup time that the previous node has time to see it's going to be shut down and flush (and so we have time to start up), and enough before the kill time that nodes have time to notice we exist and prepare to connect to us - halfway between now and the kill time satisfies both
|
|
@@ -137,5 +137,5 @@ function getMainPortAcquireDelay() {
|
|
|
137
137
|
return ACQUIRE_SLOW_DELAY;
|
|
138
138
|
}
|
|
139
139
|
exports.getMainPortAcquireDelay = getMainPortAcquireDelay;
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95VGFrZW92ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkZXBsb3lUYWtlb3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw0Q0FBb0I7QUFDcEIsZ0RBQXdCO0FBQ3hCLHFFQUF3RTtBQUV4RSxNQUFNLDhCQUE4QixHQUFHLDBCQUEwQixDQUFDO0FBQ2xFLE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUMzQyxNQUFNLHFCQUFxQixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDeEMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3RDLE1BQU0sZUFBZSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ3ZDLHFNQUFxTTtBQUNyTSxNQUFNLDJCQUEyQixHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ2xELE1BQU0sa0JBQWtCLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUNyQyxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQztBQUNoQyxNQUFNLG1CQUFtQixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFjdEMsSUFBSSxRQUFvQyxDQUFDO0FBRXpDLFNBQVMsR0FBRyxDQUFDLElBQVk7SUFDckIsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUN4QyxDQUFDO0FBRUQsU0FBUyxTQUFTO0lBQ2QsT0FBTyxRQUFRLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUNsQyxDQUFDO0FBRUQsU0FBUyxpQkFBaUI7SUFDdEIsT0FBTyxjQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ25FLENBQUM7QUFFRCxLQUFLLFVBQVUsbUJBQW1COztJQUM5QixJQUFJLE1BQU0sR0FBRyxpQkFBaUIsRUFBRSxDQUFDO0lBQ2pDLElBQUksS0FBZSxDQUFDO0lBQ3BCLElBQUksQ0FBQztRQUNELEtBQUssR0FBRyxNQUFNLFlBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1QsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsRUFBRSw4Q0FBOEMsTUFBTSxLQUFLLE1BQUMsQ0FBVyxDQUFDLEtBQUssbUNBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvRyxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFDRCxJQUFJLE9BQU8sR0FBb0IsRUFBRSxDQUFDO0lBQ2xDLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFBRSxTQUFTO1FBQ3pELElBQUksQ0FBQztZQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLFlBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQWtCLENBQUMsQ0FBQztRQUNqRyxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNULE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLEVBQUUsd0NBQXdDLE1BQU0sR0FBRyxJQUFJLEtBQUssTUFBQyxDQUFXLENBQUMsS0FBSyxtQ0FBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BILENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQztBQUVELGtMQUFrTDtBQUNsTCxTQUFTLGNBQWMsQ0FBQyxPQUF3QjtJQUM1QyxJQUFJLElBQWdDLENBQUM7SUFDckMsS0FBSyxJQUFJLEtBQUssSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN4QixJQUFJLFdBQVcsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztRQUMvQyxJQUFJLFdBQVcsS0FBSyxTQUFTO1lBQUUsU0FBUztRQUN4QyxJQUFJLFdBQVcsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUM7UUFDcEQsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxXQUFXO1lBQUUsU0FBUztRQUN0RCxJQUFJLEdBQUcsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxzVEFBc1Q7QUFDL1MsS0FBSyxVQUFVLG9CQUFvQjtJQUN0QyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxFQUFFLDBIQUEwSCxpQkFBaUIsRUFBRSxpQ0FBaUMsQ0FBQyxDQUFDO0lBQzNNLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN2QixJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDaEIsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUNWLE9BQU8sRUFBRSxDQUFDO1FBQ1YsSUFBSSxPQUFPLEdBQUcsTUFBTSxtQkFBbUIsRUFBRSxDQUFDO1FBQzFDLElBQUksS0FBSyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1IsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxFQUFFLHlDQUF5QyxPQUFPLGdCQUFnQixHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxhQUFhLEtBQUssQ0FBQyxXQUFXLG9EQUFvRCxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLHlCQUF5QixDQUFDLENBQUM7WUFDeFEsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUNELElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDakMsSUFBSSxPQUFPLElBQUkscUJBQXFCLEVBQUUsQ0FBQztZQUNuQyxtTUFBbU07WUFDbk0sT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLFNBQVMsRUFBRSx3REFBd0QsaUJBQWlCLEVBQUUseUNBQXlDLE9BQU8sZ0JBQWdCLE9BQU8seUZBQXlGLG9CQUFvQixLQUFLLENBQUMsQ0FBQztZQUNsUyxNQUFNLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7WUFDeEUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQixDQUFDO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsRUFBRSwrREFBK0QsT0FBTyxLQUFLLE9BQU8sU0FBUyxxQkFBcUIsb0JBQW9CLHlCQUF5QixJQUFJLENBQUMsQ0FBQztRQUM5TCxNQUFNLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSx5QkFBeUIsQ0FBQyxDQUFDLENBQUM7SUFDakYsQ0FBQztBQUNMLENBQUM7QUF2QkQsb0RBdUJDO0FBRUQsU0FBZ0IsVUFBVSxDQUFDLElBQVk7SUFDbkMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsSUFBSSxzRkFBc0YsQ0FBQyxDQUFDO0lBQ3RJLENBQUM7SUFDRCxRQUFRLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztJQUN4Qix1VEFBdVQ7SUFDdlQsUUFBUSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMxRSxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxFQUFFLGdDQUFnQyxJQUFJLDRCQUE0QixHQUFHLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsR0FBRyxDQUFDLGtCQUFrQixFQUFFLENBQUMsaUNBQWlDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVOLElBQUEscURBQTRCLEdBQUUsQ0FBQztBQUNuQyxDQUFDO0FBVEQsZ0NBU0M7QUFFRCxxTkFBcU47QUFDck4sU0FBZ0IsdUJBQXVCO0lBQ25DLElBQUksQ0FBQyxDQUFBLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxPQUFPLENBQUEsSUFBSSxRQUFRLENBQUMsaUJBQWlCLEtBQUssU0FBUztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ3JGLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsRUFBRSxrQkFBa0IsRUFBRSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDdkcsQ0FBQztBQUhELDBEQUdDO0FBRUQsc0tBQXNLO0FBQ3RLLFNBQVMsV0FBVztJQUNoQixJQUFJLENBQUMsUUFBUTtRQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hCLE9BQU8sUUFBUSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDO0FBQ3ZELENBQUM7QUFFRCxTQUFTLGtCQUFrQjtJQUN2QixJQUFJLENBQUMsUUFBUTtRQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hCLE9BQU8sV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDdkYsQ0FBQztBQUVELHlKQUF5SjtBQUN6SixTQUFnQixtQkFBbUI7SUFDL0IsSUFBSSxDQUFDLFFBQVE7UUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsV0FBVyxHQUFHLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxHQUFHLGVBQWUsQ0FBQyxDQUFDO0FBQzdHLENBQUM7QUFIRCxrREFHQztBQUVELGlLQUFpSztBQUNqSyxTQUFnQix1QkFBdUI7SUFDbkMsSUFBSSxDQUFDLFFBQVE7UUFBRSxPQUFPLGtCQUFrQixDQUFDO0lBQ3pDLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLFdBQVcsRUFBRSxHQUFHLG1CQUFtQixFQUFFLENBQUM7UUFDcEQsT0FBTyxrQkFBa0IsQ0FBQztJQUM5QixDQUFDO0lBQ0QsT0FBTyxrQkFBa0IsQ0FBQztBQUM5QixDQUFDO0FBTkQsMERBTUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgc3RhcnRJbnRlcm1lZGlhdGVNYWludGVuYW5jZSB9IGZyb20gXCIuL2ludGVybWVkaWF0ZU1hbmFnZW1lbnRcIjtcblxuY29uc3QgUEFSQU1FVEVSU19USU1FTElORV9GSUxFX1JFR0VYID0gL14oXFxkKyktcGFyYW1ldGVyc1xcLmpzb24kLztcbmNvbnN0IERFUExPWV9ERVRFQ1RfUkVUUllfREVMQVkgPSA1ICogMTAwMDtcbmNvbnN0IERFUExPWV9ERVRFQ1RfVElNRU9VVCA9IDMwICogMTAwMDtcbmNvbnN0IEVYSVRfTE9HX0ZMVVNIX0RFTEFZID0gNSAqIDEwMDA7XG5jb25zdCBBTFRfUE9SVF9MSU5HRVIgPSAzMCAqIDYwICogMTAwMDtcbi8vIFRoZSBlbmQgdGltZSBuZWVkcyB0byBiZSBlbm91Z2ggYWZ0ZXIgdGhlIGtpbGwgdGltZSB0aGF0IHdlIGFyZSBjZXJ0YWluIHdlIHdpbGwgaGF2ZSB0aGUgbWFpbiBwb3J0IGJ5IHRoZW4uIFNjYWxlZCB1cCB3aXRoIHRoZSBvdmVybGFwLCBzbyB1bnVzdWFsbHkgbG9uZyBvdmVybGFwcyBnZXQgYW4gZXF1YWxseSBnZW5lcm91cyBidWZmZXIuXG5jb25zdCBJTlRFUk1FRElBVEVfRU5EX01JTl9CVUZGRVIgPSA1ICogNjAgKiAxMDAwO1xuY29uc3QgQUNRVUlSRV9TTE9XX0RFTEFZID0gMzAgKiAxMDAwO1xuY29uc3QgQUNRVUlSRV9GQVNUX0RFTEFZID0gMTAwMDtcbmNvbnN0IEFDUVVJUkVfRkFTVF9XSU5ET1cgPSA2MCAqIDEwMDA7XG5cbnR5cGUgVGltZWxpbmVFbnRyeSA9IHtcbiAgICBwYXJhbWV0ZXJzOiB7IHJlbGVhc2VUaW1lPzogbnVtYmVyOyBvdmVybGFwVGltZT86IG51bWJlciB9O1xufTtcblxudHlwZSBEZXBsb3lUYWtlb3ZlciA9IHtcbiAgICByZWxlYXNlVGltZTogbnVtYmVyO1xuICAgIG92ZXJsYXBUaW1lOiBudW1iZXI7XG4gICAgYWx0UG9ydD86IG51bWJlcjtcbiAgICAvLyBGcm96ZW4gd2hlbiB0aGUgYWx0IHBvcnQgaXMgdGFrZW4gKGEgbW92aW5nIHN0YXJ0IHdvdWxkIG1ha2UgZXZlcnkgbWFpbnRlbmFuY2UgcGFzcyB3cml0ZSBhIG5ldyBjb25maWcpXG4gICAgaW50ZXJtZWRpYXRlU3RhcnQ/OiBudW1iZXI7XG59O1xuXG5sZXQgdGFrZW92ZXI6IERlcGxveVRha2VvdmVyIHwgdW5kZWZpbmVkO1xuXG5mdW5jdGlvbiBpc28odGltZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IERhdGUodGltZSkudG9JU09TdHJpbmcoKTtcbn1cblxuZnVuY3Rpb24gbG9nUHJlZml4KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBbcGlkICR7cHJvY2Vzcy5waWR9XWA7XG59XG5cbmZ1bmN0aW9uIGdldFRpbWVsaW5lRm9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHBhdGguZGlybmFtZShwcm9jZXNzLmN3ZCgpKS5yZXBsYWNlQWxsKFwiXFxcXFwiLCBcIi9cIikgKyBcIi9cIjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZFRpbWVsaW5lRW50cmllcygpOiBQcm9taXNlPFRpbWVsaW5lRW50cnlbXT4ge1xuICAgIGxldCBmb2xkZXIgPSBnZXRUaW1lbGluZUZvbGRlcigpO1xuICAgIGxldCBmaWxlczogc3RyaW5nW107XG4gICAgdHJ5IHtcbiAgICAgICAgZmlsZXMgPSBhd2FpdCBmcy5wcm9taXNlcy5yZWFkZGlyKGZvbGRlcik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYCR7bG9nUHJlZml4KCl9IENvdWxkIG5vdCByZWFkIHRoZSBkZXBsb3kgdGltZWxpbmUgZm9sZGVyICR7Zm9sZGVyfTogJHsoZSBhcyBFcnJvcikuc3RhY2sgPz8gZX1gKTtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBsZXQgZW50cmllczogVGltZWxpbmVFbnRyeVtdID0gW107XG4gICAgZm9yIChsZXQgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICBpZiAoIVBBUkFNRVRFUlNfVElNRUxJTkVfRklMRV9SRUdFWC50ZXN0KGZpbGUpKSBjb250aW51ZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGVudHJpZXMucHVzaChKU09OLnBhcnNlKGF3YWl0IGZzLnByb21pc2VzLnJlYWRGaWxlKGZvbGRlciArIGZpbGUsIFwidXRmOFwiKSkgYXMgVGltZWxpbmVFbnRyeSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgJHtsb2dQcmVmaXgoKX0gQ291bGQgbm90IHJlYWQgZGVwbG95IHRpbWVsaW5lIGZpbGUgJHtmb2xkZXIgKyBmaWxlfTogJHsoZSBhcyBFcnJvcikuc3RhY2sgPz8gZX1gKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZW50cmllcztcbn1cblxuLy8gVGhlIG5ld2VzdCByZWxlYXNlIGluIHRoZSB0aW1lbGluZSBpcyB0aGUgb25lIHdlIGFyZSBwYXJ0IG9mIC0gdGhlIHRpbWVsaW5lIGlzIGFwcGVuZC1vbmx5IGhpc3RvcnksIHNvIHdoYXRldmVyIHByb2Nlc3Mgc3RhcnRzIHVwIGR1cmluZyBhIHRha2VvdmVyIGJlbG9uZ3MgdG8gaXRzIGxhdGVzdCBlbnRyeVxuZnVuY3Rpb24gZmluZE91clJlbGVhc2UoZW50cmllczogVGltZWxpbmVFbnRyeVtdKTogRGVwbG95VGFrZW92ZXIgfCB1bmRlZmluZWQge1xuICAgIGxldCBiZXN0OiBEZXBsb3lUYWtlb3ZlciB8IHVuZGVmaW5lZDtcbiAgICBmb3IgKGxldCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICAgIGxldCByZWxlYXNlVGltZSA9IGVudHJ5LnBhcmFtZXRlcnMucmVsZWFzZVRpbWU7XG4gICAgICAgIGlmIChyZWxlYXNlVGltZSA9PT0gdW5kZWZpbmVkKSBjb250aW51ZTtcbiAgICAgICAgbGV0IG92ZXJsYXBUaW1lID0gZW50cnkucGFyYW1ldGVycy5vdmVybGFwVGltZSB8fCAwO1xuICAgICAgICBpZiAoYmVzdCAmJiBiZXN0LnJlbGVhc2VUaW1lID49IHJlbGVhc2VUaW1lKSBjb250aW51ZTtcbiAgICAgICAgYmVzdCA9IHsgcmVsZWFzZVRpbWUsIG92ZXJsYXBUaW1lIH07XG4gICAgfVxuICAgIHJldHVybiBiZXN0O1xufVxuXG4vKiogQ2FsbGVkIHdoZW4gdGhlIG1haW4gcG9ydCBpcyBhbHJlYWR5IGluIHVzZSwgd2hpY2ggb24gYSBoZWFsdGh5IG1hY2hpbmUgb25seSBoYXBwZW5zIHdoaWxlIG91ciBwcmVkZWNlc3NvciBpcyBzdGlsbCBydW5uaW5nIGEgZGVwbG95IG92ZXJsYXAuIENvbmZpcm1zIHRoYXQgYWdhaW5zdCB0aGUgZGVwbG95IHRpbWVsaW5lOyBpZiBubyBkZXBsb3kgaXMgaW4gcHJvZ3Jlc3Mgd2UgYXJlIGluIGEgYmFkIHN0YXRlIChzb21lb25lIGVsc2UgaG9sZHMgb3VyIHBvcnQpIGFuZCB0aGUgcHJvY2VzcyBtdXN0IG5vdCBrZWVwIHJ1bm5pbmcuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGV0ZWN0RGVwbG95VGFrZW92ZXIoKTogUHJvbWlzZTxEZXBsb3lUYWtlb3Zlcj4ge1xuICAgIGNvbnNvbGUud2FybihgJHtsb2dQcmVmaXgoKX0gT3VyIG1haW4gcG9ydCBpcyBpbiB1c2UsIHdoaWNoIHNob3VsZCBvbmx5IGhhcHBlbiB3aGlsZSBhIGRlcGxveSBvdmVybGFwIGlzIHJ1bm5pbmcgLSBjaGVja2luZyB0aGUgZGVwbG95IHRpbWVsaW5lIGluICR7Z2V0VGltZWxpbmVGb2xkZXIoKX0gZm9yIHRoZSByZWxlYXNlIHdlIGFyZSBwYXJ0IG9mYCk7XG4gICAgbGV0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgYXR0ZW1wdCA9IDA7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgYXR0ZW1wdCsrO1xuICAgICAgICBsZXQgZW50cmllcyA9IGF3YWl0IHJlYWRUaW1lbGluZUVudHJpZXMoKTtcbiAgICAgICAgbGV0IGZvdW5kID0gZmluZE91clJlbGVhc2UoZW50cmllcyk7XG4gICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgICAgdGFrZW92ZXIgPSBmb3VuZDtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgJHtsb2dQcmVmaXgoKX0gRGVwbG95IHRha2VvdmVyIGNvbmZpcm1lZCBvbiBhdHRlbXB0ICR7YXR0ZW1wdH06IHJlbGVhc2UgYXQgJHtpc28oZm91bmQucmVsZWFzZVRpbWUpfSwgb3ZlcmxhcCAke2ZvdW5kLm92ZXJsYXBUaW1lfW1zLCBzbyBvdXIgcHJlZGVjZXNzb3IgaG9sZHMgdGhlIG1haW4gcG9ydCB1bnRpbCAke2lzbyhmb3VuZC5yZWxlYXNlVGltZSArIGZvdW5kLm92ZXJsYXBUaW1lKX0uIFdlIGFyZSB0aGUgc3VjY2Vzc29yLmApO1xuICAgICAgICAgICAgcmV0dXJuIGZvdW5kO1xuICAgICAgICB9XG4gICAgICAgIGxldCBlbGFwc2VkID0gRGF0ZS5ub3coKSAtIHN0YXJ0O1xuICAgICAgICBpZiAoZWxhcHNlZCA+PSBERVBMT1lfREVURUNUX1RJTUVPVVQpIHtcbiAgICAgICAgICAgIC8vIE5vdCBhIGRlcGxveSwgc28gc29tZXRoaW5nIGVsc2UgaG9sZHMgb3VyIHBvcnQgYW5kIG5vdGhpbmcgd2UgZG8gZnJvbSBoZXJlIGlzIGNvcnJlY3QuIEV4aXQsIGdpdmluZyB0aGUgbG9nIHRpbWUgdG8gcmVhY2ggdGhlIGRpc2sgZmlyc3QgLSB0aGUgbWVzc2FnZSBpcyB0aGUgb25seSB0aGluZyB0aGF0IGV4cGxhaW5zIHRoZSBleGl0LlxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgJHtsb2dQcmVmaXgoKX0gT3VyIG1haW4gcG9ydCBpcyBpbiB1c2UsIGJ1dCB0aGUgZGVwbG95IHRpbWVsaW5lIGluICR7Z2V0VGltZWxpbmVGb2xkZXIoKX0gc2hvd2VkIG5vIHJlbGVhc2UgaW4gcHJvZ3Jlc3MgYWNyb3NzICR7YXR0ZW1wdH0gY2hlY2tzIG92ZXIgJHtlbGFwc2VkfW1zLiBTb21ldGhpbmcgZWxzZSBpcyBob2xkaW5nIG91ciBwb3J0LCBzbyB0aGlzIHByb2Nlc3MgaXMgaW4gYSBiYWQgc3RhdGUuIEV4aXRpbmcgaW4gJHtFWElUX0xPR19GTFVTSF9ERUxBWX1tcy5gKTtcbiAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBFWElUX0xPR19GTFVTSF9ERUxBWSkpO1xuICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUud2FybihgJHtsb2dQcmVmaXgoKX0gTm8gcmVsZWFzZSBpbiBwcm9ncmVzcyBpbiB0aGUgZGVwbG95IHRpbWVsaW5lIHlldCAoYXR0ZW1wdCAke2F0dGVtcHR9LCAke2VsYXBzZWR9bXMgb2YgJHtERVBMT1lfREVURUNUX1RJTUVPVVR9bXMpOyByZXRyeWluZyBpbiAke0RFUExPWV9ERVRFQ1RfUkVUUllfREVMQVl9bXNgKTtcbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIERFUExPWV9ERVRFQ1RfUkVUUllfREVMQVkpKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRBbHRQb3J0KHBvcnQ6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghdGFrZW92ZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBbiBhbHRlcm5hdGUgcG9ydCAoJHtwb3J0fSkgd2FzIHRha2VuIHdpdGhvdXQgYSBkZXRlY3RlZCBkZXBsb3kgdGFrZW92ZXIgLSBkZXRlY3REZXBsb3lUYWtlb3ZlciBtdXN0IHJ1biBmaXJzdGApO1xuICAgIH1cbiAgICB0YWtlb3Zlci5hbHRQb3J0ID0gcG9ydDtcbiAgICAvLyBOZWVkcyB0byBiZSBlbm91Z2ggYWZ0ZXIgb3VyIHN0YXJ0dXAgdGltZSB0aGF0IHRoZSBwcmV2aW91cyBub2RlIGhhcyB0aW1lIHRvIHNlZSBpdCdzIGdvaW5nIHRvIGJlIHNodXQgZG93biBhbmQgZmx1c2ggKGFuZCBzbyB3ZSBoYXZlIHRpbWUgdG8gc3RhcnQgdXApLCBhbmQgZW5vdWdoIGJlZm9yZSB0aGUga2lsbCB0aW1lIHRoYXQgbm9kZXMgaGF2ZSB0aW1lIHRvIG5vdGljZSB3ZSBleGlzdCBhbmQgcHJlcGFyZSB0byBjb25uZWN0IHRvIHVzIC0gaGFsZndheSBiZXR3ZWVuIG5vdyBhbmQgdGhlIGtpbGwgdGltZSBzYXRpc2ZpZXMgYm90aFxuICAgIHRha2VvdmVyLmludGVybWVkaWF0ZVN0YXJ0ID0gTWF0aC5yb3VuZCgoRGF0ZS5ub3coKSArIGdldEtpbGxUaW1lKCkpIC8gMik7XG4gICAgY29uc29sZS53YXJuKGAke2xvZ1ByZWZpeCgpfSBMaXN0ZW5pbmcgb24gYWx0ZXJuYXRlIHBvcnQgJHtwb3J0fTogd3JpdGVzIHJvdXRlIGhlcmUgZnJvbSAke2lzbyh0YWtlb3Zlci5pbnRlcm1lZGlhdGVTdGFydCl9IHVudGlsICR7aXNvKGdldEludGVybWVkaWF0ZUVuZCgpKX0sIGFuZCB3ZSBrZWVwIGxpc3RlbmluZyB1bnRpbCAke2lzbyhnZXRBbHRQb3J0TGlzdGVuRW5kKCkpfWApO1xuICAgIHN0YXJ0SW50ZXJtZWRpYXRlTWFpbnRlbmFuY2UoKTtcbn1cblxuLyoqIFRoZSB3aW5kb3cgaW4gd2hpY2ggd3JpdGVzIGJlbG9uZyB0byBvdXIgYWx0ZXJuYXRlIHBvcnQ6IGZyb20gcGFydHdheSB0aHJvdWdoIHRoZSBvdmVybGFwIChnaXZpbmcgdGhlIHByZWRlY2Vzc29yIG5vdGljZSB0byBmbHVzaCkgdW50aWwgc2FmZWx5IHBhc3QgaXRzIGtpbGwgKGdpdmluZyB1cyB0aW1lIHRvIGFjdHVhbGx5IHRha2UgdGhlIG1haW4gcG9ydCkuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFrZW92ZXJJbnRlcm1lZGlhdGUoKTogeyBzdGFydDogbnVtYmVyOyBlbmQ6IG51bWJlcjsgYWx0UG9ydDogbnVtYmVyIH0gfCB1bmRlZmluZWQge1xuICAgIGlmICghdGFrZW92ZXI/LmFsdFBvcnQgfHwgdGFrZW92ZXIuaW50ZXJtZWRpYXRlU3RhcnQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4geyBzdGFydDogdGFrZW92ZXIuaW50ZXJtZWRpYXRlU3RhcnQsIGVuZDogZ2V0SW50ZXJtZWRpYXRlRW5kKCksIGFsdFBvcnQ6IHRha2VvdmVyLmFsdFBvcnQgfTtcbn1cblxuLyoqIFdoZW4gb3VyIHByZWRlY2Vzc29yIGlzIGtpbGxlZCBhbmQgdGhlIG1haW4gcG9ydCBmcmVlcy4gUG9ydCBhY3F1aXNpdGlvbiBwb2xscyBhZ2FpbnN0IHRoaXMgb24gaXRzIG93biAtIGl0IGlzIGVudGlyZWx5IGluZGVwZW5kZW50IG9mIHRoZSBpbnRlcm1lZGlhdGUgd2luZG93LiAqL1xuZnVuY3Rpb24gZ2V0S2lsbFRpbWUoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRha2VvdmVyKSByZXR1cm4gMDtcbiAgICByZXR1cm4gdGFrZW92ZXIucmVsZWFzZVRpbWUgKyB0YWtlb3Zlci5vdmVybGFwVGltZTtcbn1cblxuZnVuY3Rpb24gZ2V0SW50ZXJtZWRpYXRlRW5kKCk6IG51bWJlciB7XG4gICAgaWYgKCF0YWtlb3ZlcikgcmV0dXJuIDA7XG4gICAgcmV0dXJuIGdldEtpbGxUaW1lKCkgKyBNYXRoLm1heChJTlRFUk1FRElBVEVfRU5EX01JTl9CVUZGRVIsIHRha2VvdmVyLm92ZXJsYXBUaW1lKTtcbn1cblxuLyoqIFdlIG5ldmVyIHN0b3AgbGlzdGVuaW5nIG9uIHRoZSBhbHRlcm5hdGUgcG9ydCB3aGlsZSBpdHMgd2luZG93IGlzIHN0aWxsIHZhbGlkLCBhbmQgaG9sZCBpdCB3ZWxsIHBhc3QgdGhhdCBmb3IgY2xpZW50cyB0aGF0IGhhdmUgbm90IGNhdWdodCB1cCB5ZXQuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWx0UG9ydExpc3RlbkVuZCgpOiBudW1iZXIge1xuICAgIGlmICghdGFrZW92ZXIpIHJldHVybiAwO1xuICAgIHJldHVybiBNYXRoLm1heCh0YWtlb3Zlci5yZWxlYXNlVGltZSArIHRha2VvdmVyLm92ZXJsYXBUaW1lICogMiwgZ2V0SW50ZXJtZWRpYXRlRW5kKCkgKyBBTFRfUE9SVF9MSU5HRVIpO1xufVxuXG4vKiogSG93IGxvbmcgdG8gd2FpdCBiZXR3ZWVuIG1haW4tcG9ydCBhY3F1aXNpdGlvbiBhdHRlbXB0czogdGlnaHQgYXJvdW5kIG91ciBwcmVkZWNlc3NvcidzIHNjaGVkdWxlZCBkZWF0aCAod2hlbiB0aGUgcG9ydCBhY3R1YWxseSBmcmVlcyksIHJlbGF4ZWQgb3RoZXJ3aXNlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1haW5Qb3J0QWNxdWlyZURlbGF5KCk6IG51bWJlciB7XG4gICAgaWYgKCF0YWtlb3ZlcikgcmV0dXJuIEFDUVVJUkVfU0xPV19ERUxBWTtcbiAgICBpZiAoRGF0ZS5ub3coKSA+PSBnZXRLaWxsVGltZSgpIC0gQUNRVUlSRV9GQVNUX1dJTkRPVykge1xuICAgICAgICByZXR1cm4gQUNRVUlSRV9GQVNUX0RFTEFZO1xuICAgIH1cbiAgICByZXR1cm4gQUNRVUlSRV9TTE9XX0RFTEFZO1xufVxuIl19
|
|
141
|
-
/* _JS_SOURCE_HASH = "
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95VGFrZW92ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkZXBsb3lUYWtlb3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw0Q0FBb0I7QUFDcEIsZ0RBQXdCO0FBQ3hCLHFFQUF3RTtBQUV4RSxNQUFNLDhCQUE4QixHQUFHLDBCQUEwQixDQUFDO0FBQ2xFLE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUMzQyxNQUFNLHFCQUFxQixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDeEMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3RDLE1BQU0sZUFBZSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ3ZDLHFNQUFxTTtBQUNyTSxNQUFNLDJCQUEyQixHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ2xELE1BQU0sa0JBQWtCLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUNyQyxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQztBQUNoQyxNQUFNLG1CQUFtQixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFjdEMsSUFBSSxRQUFvQyxDQUFDO0FBRXpDLFNBQVMsR0FBRyxDQUFDLElBQVk7SUFDckIsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUN4QyxDQUFDO0FBRUQsU0FBUyxTQUFTO0lBQ2QsT0FBTyxRQUFRLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUNsQyxDQUFDO0FBRUQsU0FBUyxpQkFBaUI7SUFDdEIsT0FBTyxjQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ25FLENBQUM7QUFFRCxLQUFLLFVBQVUsbUJBQW1COztJQUM5QixJ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LENBQUM7QUFIRCxrREFHQztBQUVELGlLQUFpSztBQUNqSyxTQUFnQix1QkFBdUI7SUFDbkMsSUFBSSxDQUFDLFFBQVE7UUFBRSxPQUFPLGtCQUFrQixDQUFDO0lBQ3pDLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLFdBQVcsRUFBRSxHQUFHLG1CQUFtQixFQUFFLENBQUM7UUFDcEQsT0FBTyxrQkFBa0IsQ0FBQztJQUM5QixDQUFDO0lBQ0QsT0FBTyxrQkFBa0IsQ0FBQztBQUM5QixDQUFDO0FBTkQsMERBTUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgc3RhcnRJbnRlcm1lZGlhdGVNYWludGVuYW5jZSB9IGZyb20gXCIuL2ludGVybWVkaWF0ZU1hbmFnZW1lbnRcIjtcblxuY29uc3QgUEFSQU1FVEVSU19USU1FTElORV9GSUxFX1JFR0VYID0gL14oXFxkKyktcGFyYW1ldGVyc1xcLmpzb24kLztcbmNvbnN0IERFUExPWV9ERVRFQ1RfUkVUUllfREVMQVkgPSA1ICogMTAwMDtcbmNvbnN0IERFUExPWV9ERVRFQ1RfVElNRU9VVCA9IDMwICogMTAwMDtcbmNvbnN0IEVYSVRfTE9HX0ZMVVNIX0RFTEFZID0gNSAqIDEwMDA7XG5jb25zdCBBTFRfUE9SVF9MSU5HRVIgPSAzMCAqIDYwICogMTAwMDtcbi8vIFRoZSBlbmQgdGltZSBuZWVkcyB0byBiZSBlbm91Z2ggYWZ0ZXIgdGhlIGtpbGwgdGltZSB0aGF0IHdlIGFyZSBjZXJ0YWluIHdlIHdpbGwgaGF2ZSB0aGUgbWFpbiBwb3J0IGJ5IHRoZW4uIFNjYWxlZCB1cCB3aXRoIHRoZSBvdmVybGFwLCBzbyB1bnVzdWFsbHkgbG9uZyBvdmVybGFwcyBnZXQgYW4gZXF1YWxseSBnZW5lcm91cyBidWZmZXIuXG5jb25zdCBJTlRFUk1FRElBVEVfRU5EX01JTl9CVUZGRVIgPSA1ICogNjAgKiAxMDAwO1xuY29uc3QgQUNRVUlSRV9TTE9XX0RFTEFZID0gMzAgKiAxMDAwO1xuY29uc3QgQUNRVUlSRV9GQVNUX0RFTEFZID0gMTAwMDtcbmNvbnN0IEFDUVVJUkVfRkFTVF9XSU5ET1cgPSA2MCAqIDEwMDA7XG5cbnR5cGUgVGltZWxpbmVFbnRyeSA9IHtcbiAgICBwYXJhbWV0ZXJzOiB7IHJlbGVhc2VUaW1lPzogbnVtYmVyOyBvdmVybGFwVGltZT86IG51bWJlciB9O1xufTtcblxudHlwZSBEZXBsb3lUYWtlb3ZlciA9IHtcbiAgICByZWxlYXNlVGltZTogbnVtYmVyO1xuICAgIG92ZXJsYXBUaW1lOiBudW1iZXI7XG4gICAgYWx0UG9ydD86IG51bWJlcjtcbiAgICAvLyBGcm96ZW4gd2hlbiB0aGUgYWx0IHBvcnQgaXMgdGFrZW4gKGEgbW92aW5nIHN0YXJ0IHdvdWxkIG1ha2UgZXZlcnkgbWFpbnRlbmFuY2UgcGFzcyB3cml0ZSBhIG5ldyBjb25maWcpXG4gICAgaW50ZXJtZWRpYXRlU3RhcnQ/OiBudW1iZXI7XG59O1xuXG5sZXQgdGFrZW92ZXI6IERlcGxveVRha2VvdmVyIHwgdW5kZWZpbmVkO1xuXG5mdW5jdGlvbiBpc28odGltZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IERhdGUodGltZSkudG9JU09TdHJpbmcoKTtcbn1cblxuZnVuY3Rpb24gbG9nUHJlZml4KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBbcGlkICR7cHJvY2Vzcy5waWR9XWA7XG59XG5cbmZ1bmN0aW9uIGdldFRpbWVsaW5lRm9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHBhdGguZGlybmFtZShwcm9jZXNzLmN3ZCgpKS5yZXBsYWNlQWxsKFwiXFxcXFwiLCBcIi9cIikgKyBcIi9cIjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZFRpbWVsaW5lRW50cmllcygpOiBQcm9taXNlPFRpbWVsaW5lRW50cnlbXT4ge1xuICAgIGxldCBmb2xkZXIgPSBnZXRUaW1lbGluZUZvbGRlcigpO1xuICAgIGxldCBmaWxlczogc3RyaW5nW107XG4gICAgdHJ5IHtcbiAgICAgICAgZmlsZXMgPSBhd2FpdCBmcy5wcm9taXNlcy5yZWFkZGlyKGZvbGRlcik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYCR7bG9nUHJlZml4KCl9IENvdWxkIG5vdCByZWFkIHRoZSBkZXBsb3kgdGltZWxpbmUgZm9sZGVyICR7Zm9sZGVyfTogJHsoZSBhcyBFcnJvcikuc3RhY2sgPz8gZX1gKTtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBsZXQgZW50cmllczogVGltZWxpbmVFbnRyeVtdID0gW107XG4gICAgZm9yIChsZXQgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICBpZiAoIVBBUkFNRVRFUlNfVElNRUxJTkVfRklMRV9SRUdFWC50ZXN0KGZpbGUpKSBjb250aW51ZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGVudHJpZXMucHVzaChKU09OLnBhcnNlKGF3YWl0IGZzLnByb21pc2VzLnJlYWRGaWxlKGZvbGRlciArIGZpbGUsIFwidXRmOFwiKSkgYXMgVGltZWxpbmVFbnRyeSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgJHtsb2dQcmVmaXgoKX0gQ291bGQgbm90IHJlYWQgZGVwbG95IHRpbWVsaW5lIGZpbGUgJHtmb2xkZXIgKyBmaWxlfTogJHsoZSBhcyBFcnJvcikuc3RhY2sgPz8gZX1gKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZW50cmllcztcbn1cblxuLy8gVGhlIG5ld2VzdCByZWxlYXNlIGluIHRoZSB0aW1lbGluZSBpcyB0aGUgb25lIHdlIGFyZSBwYXJ0IG9mIC0gdGhlIHRpbWVsaW5lIGlzIGFwcGVuZC1vbmx5IGhpc3RvcnksIHNvIHdoYXRldmVyIHByb2Nlc3Mgc3RhcnRzIHVwIGR1cmluZyBhIHRha2VvdmVyIGJlbG9uZ3MgdG8gaXRzIGxhdGVzdCBlbnRyeVxuZnVuY3Rpb24gZmluZE91clJlbGVhc2UoZW50cmllczogVGltZWxpbmVFbnRyeVtdKTogRGVwbG95VGFrZW92ZXIgfCB1bmRlZmluZWQge1xuICAgIGxldCBiZXN0OiBEZXBsb3lUYWtlb3ZlciB8IHVuZGVmaW5lZDtcbiAgICBmb3IgKGxldCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICAgIGxldCByZWxlYXNlVGltZSA9IGVudHJ5LnBhcmFtZXRlcnMucmVsZWFzZVRpbWU7XG4gICAgICAgIGlmIChyZWxlYXNlVGltZSA9PT0gdW5kZWZpbmVkKSBjb250aW51ZTtcbiAgICAgICAgbGV0IG92ZXJsYXBUaW1lID0gZW50cnkucGFyYW1ldGVycy5vdmVybGFwVGltZSB8fCAwO1xuICAgICAgICBpZiAoYmVzdCAmJiBiZXN0LnJlbGVhc2VUaW1lID49IHJlbGVhc2VUaW1lKSBjb250aW51ZTtcbiAgICAgICAgYmVzdCA9IHsgcmVsZWFzZVRpbWUsIG92ZXJsYXBUaW1lIH07XG4gICAgfVxuICAgIHJldHVybiBiZXN0O1xufVxuXG4vKiogQ2FsbGVkIHdoZW4gdGhlIG1haW4gcG9ydCBpcyBhbHJlYWR5IGluIHVzZSwgd2hpY2ggb24gYSBoZWFsdGh5IG1hY2hpbmUgb25seSBoYXBwZW5zIHdoaWxlIG91ciBwcmVkZWNlc3NvciBpcyBzdGlsbCBydW5uaW5nIGEgZGVwbG95IG92ZXJsYXAuIENvbmZpcm1zIHRoYXQgYWdhaW5zdCB0aGUgZGVwbG95IHRpbWVsaW5lOyBpZiBubyBkZXBsb3kgaXMgaW4gcHJvZ3Jlc3Mgd2UgYXJlIGluIGEgYmFkIHN0YXRlIChzb21lb25lIGVsc2UgaG9sZHMgb3VyIHBvcnQpIGFuZCB0aGUgcHJvY2VzcyBtdXN0IG5vdCBrZWVwIHJ1bm5pbmcuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGV0ZWN0RGVwbG95VGFrZW92ZXIoKTogUHJvbWlzZTxEZXBsb3lUYWtlb3Zlcj4ge1xuICAgIGNvbnNvbGUud2FybihgJHtsb2dQcmVmaXgoKX0gT3VyIG1haW4gcG9ydCBpcyBpbiB1c2UsIHdoaWNoIHNob3VsZCBvbmx5IGhhcHBlbiB3aGlsZSBhIGRlcGxveSBvdmVybGFwIGlzIHJ1bm5pbmcgLSBjaGVja2luZyB0aGUgZGVwbG95IHRpbWVsaW5lIGluICR7Z2V0VGltZWxpbmVGb2xkZXIoKX0gZm9yIHRoZSByZWxlYXNlIHdlIGFyZSBwYXJ0IG9mYCk7XG4gICAgbGV0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgYXR0ZW1wdCA9IDA7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgYXR0ZW1wdCsrO1xuICAgICAgICBsZXQgZW50cmllcyA9IGF3YWl0IHJlYWRUaW1lbGluZUVudHJpZXMoKTtcbiAgICAgICAgbGV0IGZvdW5kID0gZmluZE91clJlbGVhc2UoZW50cmllcyk7XG4gICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgICAgdGFrZW92ZXIgPSBmb3VuZDtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgJHtsb2dQcmVmaXgoKX0gRGVwbG95IHRha2VvdmVyIGNvbmZpcm1lZCBvbiBhdHRlbXB0ICR7YXR0ZW1wdH06IHJlbGVhc2UgYXQgJHtpc28oZm91bmQucmVsZWFzZVRpbWUpfSwgb3ZlcmxhcCAke2ZvdW5kLm92ZXJsYXBUaW1lfW1zLCBzbyBvdXIgcHJlZGVjZXNzb3IgaG9sZHMgdGhlIG1haW4gcG9ydCB1bnRpbCAke2lzbyhmb3VuZC5yZWxlYXNlVGltZSArIGZvdW5kLm92ZXJsYXBUaW1lKX0uIFdlIGFyZSB0aGUgc3VjY2Vzc29yLmApO1xuICAgICAgICAgICAgcmV0dXJuIGZvdW5kO1xuICAgICAgICB9XG4gICAgICAgIGxldCBlbGFwc2VkID0gRGF0ZS5ub3coKSAtIHN0YXJ0O1xuICAgICAgICBpZiAoZWxhcHNlZCA+PSBERVBMT1lfREVURUNUX1RJTUVPVVQpIHtcbiAgICAgICAgICAgIC8vIE5vdCBhIGRlcGxveSwgc28gc29tZXRoaW5nIGVsc2UgaG9sZHMgb3VyIHBvcnQgYW5kIG5vdGhpbmcgd2UgZG8gZnJvbSBoZXJlIGlzIGNvcnJlY3QuIEV4aXQsIGdpdmluZyB0aGUgbG9nIHRpbWUgdG8gcmVhY2ggdGhlIGRpc2sgZmlyc3QgLSB0aGUgbWVzc2FnZSBpcyB0aGUgb25seSB0aGluZyB0aGF0IGV4cGxhaW5zIHRoZSBleGl0LlxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgJHtsb2dQcmVmaXgoKX0gT3VyIG1haW4gcG9ydCBpcyBpbiB1c2UsIGJ1dCB0aGUgZGVwbG95IHRpbWVsaW5lIGluICR7Z2V0VGltZWxpbmVGb2xkZXIoKX0gc2hvd2VkIG5vIHJlbGVhc2UgaW4gcHJvZ3Jlc3MgYWNyb3NzICR7YXR0ZW1wdH0gY2hlY2tzIG92ZXIgJHtlbGFwc2VkfW1zLiBTb21ldGhpbmcgZWxzZSBpcyBob2xkaW5nIG91ciBwb3J0LCBzbyB0aGlzIHByb2Nlc3MgaXMgaW4gYSBiYWQgc3RhdGUuIEV4aXRpbmcgaW4gJHtFWElUX0xPR19GTFVTSF9ERUxBWX1tcy5gKTtcbiAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBFWElUX0xPR19GTFVTSF9ERUxBWSkpO1xuICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUud2FybihgJHtsb2dQcmVmaXgoKX0gTm8gcmVsZWFzZSBpbiBwcm9ncmVzcyBpbiB0aGUgZGVwbG95IHRpbWVsaW5lIHlldCAoYXR0ZW1wdCAke2F0dGVtcHR9LCAke2VsYXBzZWR9bXMgb2YgJHtERVBMT1lfREVURUNUX1RJTUVPVVR9bXMpOyByZXRyeWluZyBpbiAke0RFUExPWV9ERVRFQ1RfUkVUUllfREVMQVl9bXNgKTtcbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIERFUExPWV9ERVRFQ1RfUkVUUllfREVMQVkpKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRBbHRQb3J0KHBvcnQ6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghdGFrZW92ZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBbHRlcm5hdGUgcG9ydCB0YWtlbiB3aXRob3V0IGEgZGV0ZWN0ZWQgZGVwbG95IHRha2VvdmVyOiBwb3J0ICR7cG9ydH0gLSBkZXRlY3REZXBsb3lUYWtlb3ZlciBtdXN0IHJ1biBmaXJzdGApO1xuICAgIH1cbiAgICB0YWtlb3Zlci5hbHRQb3J0ID0gcG9ydDtcbiAgICAvLyBOZWVkcyB0byBiZSBlbm91Z2ggYWZ0ZXIgb3VyIHN0YXJ0dXAgdGltZSB0aGF0IHRoZSBwcmV2aW91cyBub2RlIGhhcyB0aW1lIHRvIHNlZSBpdCdzIGdvaW5nIHRvIGJlIHNodXQgZG93biBhbmQgZmx1c2ggKGFuZCBzbyB3ZSBoYXZlIHRpbWUgdG8gc3RhcnQgdXApLCBhbmQgZW5vdWdoIGJlZm9yZSB0aGUga2lsbCB0aW1lIHRoYXQgbm9kZXMgaGF2ZSB0aW1lIHRvIG5vdGljZSB3ZSBleGlzdCBhbmQgcHJlcGFyZSB0byBjb25uZWN0IHRvIHVzIC0gaGFsZndheSBiZXR3ZWVuIG5vdyBhbmQgdGhlIGtpbGwgdGltZSBzYXRpc2ZpZXMgYm90aFxuICAgIHRha2VvdmVyLmludGVybWVkaWF0ZVN0YXJ0ID0gTWF0aC5yb3VuZCgoRGF0ZS5ub3coKSArIGdldEtpbGxUaW1lKCkpIC8gMik7XG4gICAgY29uc29sZS53YXJuKGAke2xvZ1ByZWZpeCgpfSBMaXN0ZW5pbmcgb24gYWx0ZXJuYXRlIHBvcnQgJHtwb3J0fTogd3JpdGVzIHJvdXRlIGhlcmUgZnJvbSAke2lzbyh0YWtlb3Zlci5pbnRlcm1lZGlhdGVTdGFydCl9IHVudGlsICR7aXNvKGdldEludGVybWVkaWF0ZUVuZCgpKX0sIGFuZCB3ZSBrZWVwIGxpc3RlbmluZyB1bnRpbCAke2lzbyhnZXRBbHRQb3J0TGlzdGVuRW5kKCkpfWApO1xuICAgIHN0YXJ0SW50ZXJtZWRpYXRlTWFpbnRlbmFuY2UoKTtcbn1cblxuLyoqIFRoZSB3aW5kb3cgaW4gd2hpY2ggd3JpdGVzIGJlbG9uZyB0byBvdXIgYWx0ZXJuYXRlIHBvcnQ6IGZyb20gcGFydHdheSB0aHJvdWdoIHRoZSBvdmVybGFwIChnaXZpbmcgdGhlIHByZWRlY2Vzc29yIG5vdGljZSB0byBmbHVzaCkgdW50aWwgc2FmZWx5IHBhc3QgaXRzIGtpbGwgKGdpdmluZyB1cyB0aW1lIHRvIGFjdHVhbGx5IHRha2UgdGhlIG1haW4gcG9ydCkuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFrZW92ZXJJbnRlcm1lZGlhdGUoKTogeyBzdGFydDogbnVtYmVyOyBlbmQ6IG51bWJlcjsgYWx0UG9ydDogbnVtYmVyIH0gfCB1bmRlZmluZWQge1xuICAgIGlmICghdGFrZW92ZXI/LmFsdFBvcnQgfHwgdGFrZW92ZXIuaW50ZXJtZWRpYXRlU3RhcnQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4geyBzdGFydDogdGFrZW92ZXIuaW50ZXJtZWRpYXRlU3RhcnQsIGVuZDogZ2V0SW50ZXJtZWRpYXRlRW5kKCksIGFsdFBvcnQ6IHRha2VvdmVyLmFsdFBvcnQgfTtcbn1cblxuLyoqIFdoZW4gb3VyIHByZWRlY2Vzc29yIGlzIGtpbGxlZCBhbmQgdGhlIG1haW4gcG9ydCBmcmVlcy4gUG9ydCBhY3F1aXNpdGlvbiBwb2xscyBhZ2FpbnN0IHRoaXMgb24gaXRzIG93biAtIGl0IGlzIGVudGlyZWx5IGluZGVwZW5kZW50IG9mIHRoZSBpbnRlcm1lZGlhdGUgd2luZG93LiAqL1xuZnVuY3Rpb24gZ2V0S2lsbFRpbWUoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRha2VvdmVyKSByZXR1cm4gMDtcbiAgICByZXR1cm4gdGFrZW92ZXIucmVsZWFzZVRpbWUgKyB0YWtlb3Zlci5vdmVybGFwVGltZTtcbn1cblxuZnVuY3Rpb24gZ2V0SW50ZXJtZWRpYXRlRW5kKCk6IG51bWJlciB7XG4gICAgaWYgKCF0YWtlb3ZlcikgcmV0dXJuIDA7XG4gICAgcmV0dXJuIGdldEtpbGxUaW1lKCkgKyBNYXRoLm1heChJTlRFUk1FRElBVEVfRU5EX01JTl9CVUZGRVIsIHRha2VvdmVyLm92ZXJsYXBUaW1lKTtcbn1cblxuLyoqIFdlIG5ldmVyIHN0b3AgbGlzdGVuaW5nIG9uIHRoZSBhbHRlcm5hdGUgcG9ydCB3aGlsZSBpdHMgd2luZG93IGlzIHN0aWxsIHZhbGlkLCBhbmQgaG9sZCBpdCB3ZWxsIHBhc3QgdGhhdCBmb3IgY2xpZW50cyB0aGF0IGhhdmUgbm90IGNhdWdodCB1cCB5ZXQuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWx0UG9ydExpc3RlbkVuZCgpOiBudW1iZXIge1xuICAgIGlmICghdGFrZW92ZXIpIHJldHVybiAwO1xuICAgIHJldHVybiBNYXRoLm1heCh0YWtlb3Zlci5yZWxlYXNlVGltZSArIHRha2VvdmVyLm92ZXJsYXBUaW1lICogMiwgZ2V0SW50ZXJtZWRpYXRlRW5kKCkgKyBBTFRfUE9SVF9MSU5HRVIpO1xufVxuXG4vKiogSG93IGxvbmcgdG8gd2FpdCBiZXR3ZWVuIG1haW4tcG9ydCBhY3F1aXNpdGlvbiBhdHRlbXB0czogdGlnaHQgYXJvdW5kIG91ciBwcmVkZWNlc3NvcidzIHNjaGVkdWxlZCBkZWF0aCAod2hlbiB0aGUgcG9ydCBhY3R1YWxseSBmcmVlcyksIHJlbGF4ZWQgb3RoZXJ3aXNlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1haW5Qb3J0QWNxdWlyZURlbGF5KCk6IG51bWJlciB7XG4gICAgaWYgKCF0YWtlb3ZlcikgcmV0dXJuIEFDUVVJUkVfU0xPV19ERUxBWTtcbiAgICBpZiAoRGF0ZS5ub3coKSA+PSBnZXRLaWxsVGltZSgpIC0gQUNRVUlSRV9GQVNUX1dJTkRPVykge1xuICAgICAgICByZXR1cm4gQUNRVUlSRV9GQVNUX0RFTEFZO1xuICAgIH1cbiAgICByZXR1cm4gQUNRVUlSRV9TTE9XX0RFTEFZO1xufVxuIl19
|
|
141
|
+
/* _JS_SOURCE_HASH = "0f02c9d432f2b38b864503049e55b9eb18faed1f727e9bc4c539523350e962b4"; */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"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";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
|
|
3
3
|
//exports.startIntermediateMaintenance = exports.reinjectIntermediates = exports.scheduleBoundaryWork = void 0;
|
|
4
4
|
const caching_1 = require("socket-function/src/caching");
|
|
@@ -289,4 +289,4 @@ exports.startIntermediateMaintenance = (0, caching_1.lazy)(() => {
|
|
|
289
289
|
(0, batching_1.runInfinitePoll)(INTERMEDIATE_MAINTAIN_INTERVAL, maintainIntermediates);
|
|
290
290
|
});
|
|
291
291
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJtZWRpYXRlTWFuYWdlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImludGVybWVkaWF0ZU1hbmFnZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseURBQW1EO0FBQ25ELDJEQUErRDtBQUUvRCxpREFBK0k7QUFDL0ksK0RBQXdLO0FBQ3hLLHFEQUEyRDtBQUMzRCxpREFBd0Q7QUFDeEQscURBQWlGO0FBQ2pGLDJDQUFvRTtBQUNwRSw2REFBeUc7QUFDekcsNkNBQTBFO0FBQzFFLHVEQUE2RDtBQUM3RCwyQ0FBc0Q7QUFFdEQsb2RBQW9kO0FBRXBkLE1BQU0sZUFBZSxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQztBQUM3Qiw4SkFBOEo7QUFDOUosTUFBTSxxQkFBcUIsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUNoRSxzSEFBc0g7QUFDdEgsTUFBTSxzQkFBc0IsR0FBRywwQ0FBd0IsR0FBRyxtQ0FBdUIsQ0FBQztBQUNsRixNQUFNLDJCQUEyQixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDOUMsTUFBTSx5QkFBeUIsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQzVDLE1BQU0sOEJBQThCLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUVqRCxNQUFNLHNCQUFzQixHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7QUFDakQsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0FBRS9DLGtTQUFrUztBQUNsUyxTQUFnQixvQkFBb0IsQ0FBQyxPQUFlLEVBQUUsVUFBa0IsRUFBRSxPQUFxQjs7SUFDM0YsSUFBSSxHQUFHLEdBQUcsR0FBRyxPQUFPLElBQUksVUFBVSxFQUFFLENBQUM7SUFDckMsSUFBSSxXQUFXLEdB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QUFDLEtBQUssQ0FBQywwREFBMEQsTUFBQSxDQUFDLENBQUMsS0FBSyxtQ0FBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBLEVBQUEsQ0FBQyxDQUFDO0lBQ2xILElBQUEsMEJBQWUsRUFBQyw4QkFBOEIsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0FBQzNFLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbGF6eSB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL2NhY2hpbmdcIjtcbmltcG9ydCB7IHJ1bkluZmluaXRlUG9sbCB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL2JhdGNoaW5nXCI7XG5pbXBvcnQgeyBSZW1vdGVDb25maWcsIFNvdXJjZUNvbmZpZywgSG9zdGVkQ29uZmlnIH0gZnJvbSBcIi4uL0lBcmNoaXZlc1wiO1xuaW1wb3J0IHsgUk9VVElOR19GSUxFLCBnZXRDb25maWdWZXJzaW9uLCBzZXJpYWxpemVSZW1vdGVDb25maWcsIHBhcnNlUm91dGluZ0RhdGEsIHBhcnNlSG9zdGVkVXJsLCByZXBsYWNlSG9zdGVkVXJsUG9ydCB9IGZyb20gXCIuL3JlbW90ZUNvbmZpZ1wiO1xuaW1wb3J0IHsgaW5qZWN0SW50ZXJtZWRpYXRlU291cmNlLCBleHBpcmVJbnRlcm1lZGlhdGVTb3VyY2VzLCBnZXRJbnRlcm1lZGlhdGVTb3VyY2VzLCBuZXh0SW50ZXJtZWRpYXRlVmVyc2lvbiwgSU5URVJNRURJQVRFX0VYUElSRV9HUkFDRSB9IGZyb20gXCIuL2ludGVybWVkaWF0ZVNvdXJjZXNcIjtcbmltcG9ydCB7IGdldFRha2VvdmVySW50ZXJtZWRpYXRlIH0gZnJvbSBcIi4vZGVwbG95VGFrZW92ZXJcIjtcbmltcG9ydCB7IGdldFN0b3JhZ2VTZXJ2ZXJDb25maWcgfSBmcm9tIFwiLi9zZXJ2ZXJDb25maWdcIjtcbmltcG9ydCB7IGNyZWF0ZUFwaUFyY2hpdmVzLCBsaXN0U2VydmVyQWN0aXZlQnVja2V0S2V5cyB9IGZyb20gXCIuL2NyZWF0ZUFyY2hpdmVzXCI7XG5pbXBvcnQgeyBmaW5kU2VsZkluZGV4ZXMsIHByZXZpb3VzV2luZG93T3duZXJzIH0gZnJvbSBcIi4vc3RvcmVQbGFuXCI7XG5pbXBvcnQgeyBnZXRBY3RpdmVCdWNrZXRLZXlzLCBnZXRTdG9yZSwgYWN0aXZhdGVCdWNrZXQsIHdyaXRlUm91dGluZ0NvbmZpZyB9IGZyb20gXCIuL3N0b3JhZ2VTZXJ2ZXJTdGF0ZVwiO1xuaW1wb3J0IHsgcmVhZFJvdXRpbmdGcm9tRGlzaywgcmVhZE5ld2VzdFJvdXRpbmdGaWxlIH0gZnJvbSBcIi4vYnVja2V0RGlza1wiO1xuaW1wb3J0IHsgREVGQVVMVF9GQVNUX1dSSVRFX0RFTEFZIH0gZnJvbSBcIi4vQXJjaGl2ZXNEZWxheWVkXCI7XG5pbXBvcnQgeyBXSU5ET1dfRU5EX0ZMVVNIX01BUkdJTiB9IGZyb20gXCIuL2Jsb2JTdG9yZVwiO1xuXG4vLyBEZXBsb3kgc3dpdGNob3ZlcnMsIGFuZCB0aGUgaGFuZG92ZXJzIHRoZXkgY2F1c2UuIEEgc3dpdGNob3ZlciBpcyBhIHNvdXJjZSBtb3ZpbmcgdG8gYSBuZXcgcG9ydCBmb3IgYSBmZXcgbWludXRlczogd2UgZ2l2ZSBpdCBhIHZpcnR1YWwgdmFsaWQgd2luZG93IG9uIHRoYXQgcG9ydCAoYW4gXCJpbnRlcm1lZGlhdGVcIiksIHdoaWNoIG1lYW5zIHRoZSB3cml0ZSB0YXJnZXQgY2hhbmdlcyB0d2ljZSBpbiBxdWljayBzdWNjZXNzaW9uLCB3aGljaCBtZWFucyB0aGUgc3RvcmUgdGFraW5nIG92ZXIgaGFzIHRvIGdvIGFuZCBjb2xsZWN0IHRoZSB3cml0ZXMgdGhhdCBsYW5kZWQganVzdCBiZWZvcmUgaXQgZGlkLiBOb25lIG9mIHRoYXQgaXMgc3RvcmFnZSAtIGl0IGlzIHNjaGVkdWxpbmcgLSBzbyBpdCBsaXZlcyBoZXJlIHJhdGhlciB0aGFuIGluIHRoZSBzdG9yZSBvciBpbiB0aGUgc2VydmVyJ3MgYnVja2V0IHN0YXRlLlxuXG5jb25zdCBNQVhfVElNRVJfREVMQVkgPSAyICoqIDMxIC0gMTtcbmNvbnN0IEJPVU5EQVJZX0JVRkZFUiA9IDEwMDA7XG4vLyBBIGhhbmRvdmVyIGlzIHNjYW5uZWQganVzdCBiZWZvcmUgdGhlIGJvdW5kYXJ5LCBqdXN0IGFmdGVyLCBhbmQgYWdhaW4gYSBsaXR0bGUgbGF0ZXIgLSB0aGUgbGFzdCB3cml0ZXMgdG8gdGhlIG9sZCB0YXJnZXQgY2FuIGxhbmQgYWZ0ZXIgdGhlIGJvdW5kYXJ5IGl0c2VsZlxuY29uc3QgQk9VTkRBUllfU0NBTl9PRkZTRVRTID0gWy0zMCAqIDEwMDAsIDIgKiAxMDAwLCAzMCAqIDEwMDBdO1xuLy8gSG93IGZhciBiYWNrIGEgYm91bmRhcnkgc2NhbiBhc2tzIGZvciBjaGFuZ2VzOiBldmVyeXRoaW5nIHRoYXQgY291bGQgc3RpbGwgaGF2ZSBiZWVuIGJ1ZmZlcmVkIHdoZW4gdGhlIHdpbmRvdyBlbmRlZFxuY29uc3QgQk9VTkRBUllfU0NBTl9MT09LQkFDSyA9IERFRkFVTFRfRkFTVF9XUklURV9ERUxBWSArIFdJTkRPV19FTkRfRkxVU0hfTUFSR0lOO1xuY29uc3QgU1RBUlRVUF9CT1VOREFSWV9TQ0FOX0RFTEFZID0gMzAgKiAxMDAwO1xuY29uc3QgT1dOX0NPTkZJR19XUklURV9USFJPVFRMRSA9IDMwICogMTAwMDtcbmNvbnN0IElOVEVSTUVESUFURV9NQUlOVEFJTl9JTlRFUlZBTCA9IDYwICogMTAwMDtcblxuY29uc3Qgc2NoZWR1bGVkQm91bmRhcnlTY2FucyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuY29uc3QgYm91bmRhcnlTY2Fuc1J1bm5pbmcgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuLyoqIENhbGxlZCBldmVyeSB0aW1lIGEgc3RvcmUgYXBwbGllcyBhIHJvdXRpbmcgY29uZmlnIHRvIGl0c2VsZiAoc2VlIEJsb2JTdG9yZSdzIG9uUm91dGluZ0FwcGxpZWQpOiBhcm1zIHRoZSBzY2FucyB0aGUgY29uZmlnJ3MgdXBjb21pbmcgd2luZG93IGJvdW5kYXJpZXMgbmVlZC4gRWFjaCBzY2FuIGlzIHNjaGVkdWxlZCBvbmNlIC0gdGhlIGtleSBpbmNsdWRlcyB0aGUgYm91bmRhcnkgaXQgaXMgZm9yIC0gc28gcmUtYXJtaW5nIG9uIGV2ZXJ5IGNvbmZpZyBhcHBsaWNhdGlvbiBpcyBoYXJtbGVzcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzY2hlZHVsZUJvdW5kYXJ5V29yayhhY2NvdW50OiBzdHJpbmcsIGJ1Y2tldE5hbWU6IHN0cmluZywgcm91dGluZzogUmVtb3RlQ29uZmlnKTogdm9pZCB7XG4gICAgbGV0IGtleSA9IGAke2FjY291bnR9LyR7YnVja2V0TmFtZX1gO1xuICAgIGxldCBzZWxmRW50cmllcyA9IGZpbmRTZWxmSW5kZXhlcyhyb3V0aW5nLCBhY2NvdW50LCBidWNrZXROYW1lKS5tYXAoaSA9PiByb3V0aW5nLnNvdXJjZXNbaV0gYXMgSG9zdGVkQ29uZmlnKTtcbiAgICBsZXQgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgc3RhcnRzID0gbmV3IFNldDxudW1iZXI+KCk7XG4gICAgZm9yIChsZXQgc2VsZiBvZiBzZWxmRW50cmllcykge1xuICAgICAgICBsZXQgc3RhcnQgPSBzZWxmLnZhbGlkV2luZG93WzBdO1xuICAgICAgICBpZiAoc3RhcnQgPiBub3cgJiYgc3RhcnQgPCBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikge1xuICAgICAgICAgICAgc3RhcnRzLmFkZChzdGFydCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQSB3aW5kb3cgd2UgaGF2ZSBvbmx5IGp1c3QgdGFrZW4gb3Zlciwgb24gYSBzZXJ2ZXIgdGhhdCBoYXMgb25seSBqdXN0IHN0YXJ0ZWQ6IHRoZSBib3VuZGFyeSBoYXBwZW5lZCB3aGlsZSB3ZSB3ZXJlIG5vdCBydW5uaW5nLCBzbyBpdHMgc2NhbiBzdGlsbCBoYXMgdG8gaGFwcGVuXG4gICAgZm9yIChsZXQgc2VsZiBvZiBzZWxmRW50cmllcykge1xuICAgICAgICBsZXQgW3N0YXJ0LCBlbmRdID0gc2VsZi52YWxpZFdpbmRvdztcbiAgICAgICAgaWYgKCEoc3RhcnQgPD0gbm93ICYmIG5vdyA8IGVuZCkgfHwgc3RhcnQgPD0gMCkgY29udGludWU7XG4gICAgICAgIGlmIChub3cgLSBzdGFydCA+IEJPVU5EQVJZX1NDQU5fTE9PS0JBQ0spIGNvbnRpbnVlO1xuICAgICAgICBsZXQgc2NoZWR1bGVLZXkgPSBgJHtrZXl9fCR7c3RhcnR9fHN0YXJ0dXBgO1xuICAgICAgICBpZiAoc2NoZWR1bGVkQm91bmRhcnlTY2Fucy5oYXMoc2NoZWR1bGVLZXkpKSBjb250aW51ZTtcbiAgICAgICAgc2NoZWR1bGVkQm91bmRhcnlTY2Fucy5hZGQoc2NoZWR1bGVLZXkpO1xuICAgICAgICBsZXQgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHZvaWQgcnVuQm91bmRhcnlTY2FuKGFjY291bnQsIGJ1Y2tldE5hbWUsIHN0YXJ0LCBTVEFSVFVQX0JPVU5EQVJZX1NDQU5fREVMQVksIFwic3RhcnR1cCszMHNcIikuY2F0Y2goKGU6IEVycm9yKSA9PiBjb25zb2xlLmVycm9yKGBCb3VuZGFyeSBzY2FuIGZvciBidWNrZXQgJHtrZXl9IGZhaWxlZDogJHtlLnN0YWNrID8/IGV9YCkpO1xuICAgICAgICB9LCBTVEFSVFVQX0JPVU5EQVJZX1NDQU5fREVMQVkpO1xuICAgICAgICAodGltZXIgYXMgeyB1bnJlZj86ICgpID0+IHZvaWQgfSkudW5yZWY/LigpO1xuICAgIH1cbiAgICBmb3IgKGxldCBzdGFydCBvZiBzdGFydHMpIHtcbiAgICAgICAgZm9yIChsZXQgb2Zmc2V0IG9mIEJPVU5EQVJZX1NDQU5fT0ZGU0VUUykge1xuICAgICAgICAgICAgbGV0IGF0ID0gc3RhcnQgKyBvZmZzZXQ7XG4gICAgICAgICAgICBpZiAoYXQgPD0gbm93KSBjb250aW51ZTtcbiAgICAgICAgICAgIGxldCBzY2hlZHVsZUtleSA9IGAke2tleX18JHtzdGFydH18JHtvZmZzZXR9YDtcbiAgICAgICAgICAgIGlmIChzY2hlZHVsZWRCb3VuZGFyeVNjYW5zLmhhcyhzY2hlZHVsZUtleSkpIGNvbnRpbnVlO1xuICAgICAgICAgICAgc2NoZWR1bGVkQm91bmRhcnlTY2Fucy5hZGQoc2NoZWR1bGVLZXkpO1xuICAgICAgICAgICAgLy8gUmUtYXJtZWQgcmF0aGVyIHRoYW4gdHJ1c3RlZDogYSBsb25nIHRpbWVyIGNhbiBmaXJlIGVhcmx5IGFmdGVyIGEgc3VzcGVuZCwgYW5kIGZpcmluZyBlYXJseSB3b3VsZCBzY2FuIGZvciBhIGhhbmRvdmVyIHRoYXQgaGFzIG5vdCBoYXBwZW5lZFxuICAgICAgICAgICAgbGV0IGFybSA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKERhdGUubm93KCkgPCBhdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJtKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdm9pZCBydW5Cb3VuZGFyeVNjYW4oYWNjb3VudCwgYnVja2V0TmFtZSwgc3RhcnQsIG9mZnNldCkuY2F0Y2goKGU6IEVycm9yKSA9PiBjb25zb2xlLmVycm9yKGBCb3VuZGFyeSBzY2FuIGZvciBidWNrZXQgJHtrZXl9IGZhaWxlZDogJHtlLnN0YWNrID8/IGV9YCkpO1xuICAgICAgICAgICAgICAgIH0sIE1hdGgubWluKGF0IC0gRGF0ZS5ub3coKSwgTUFYX1RJTUVSX0RFTEFZKSk7XG4gICAgICAgICAgICAgICAgKHRpbWVyIGFzIHsgdW5yZWY/OiAoKSA9PiB2b2lkIH0pLnVucmVmPy4oKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBhcm0oKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqIENvbGxlY3RzIHRoZSB3cml0ZXMgdGhhdCBsYW5kZWQgb24gdGhlIHByZXZpb3VzIHdpbmRvdydzIG93bmVycyBqdXN0IGJlZm9yZSBhIGJvdW5kYXJ5LCBpbnRvIHRoZSBzdG9yZSB0aGF0IGhhcyBqdXN0IHRha2VuIG92ZXIuIFdobyBvd25lZCB3aGF0IGlzIHdvcmtlZCBvdXQgcHVyZWx5IGZyb20gdGhlIGNvbmZpZyAoc2VlIHByZXZpb3VzV2luZG93T3duZXJzKTsgdGhpcyBvbmx5IGRvZXMgdGhlIHB1bGxpbmcuIFRoZSBjb25maWcgaXMgcmVhZCBvZmYgdGhlIGRpc2sgYXQgRklSRSB0aW1lLCBub3QgY2FwdHVyZWQgd2hlbiB0aGUgc2NhbiB3YXMgYXJtZWQgLSBpdCBtYXkgaGF2ZSBjaGFuZ2VkIGluIGJldHdlZW4sIGFuZCB0aGUgbmV3ZXN0IGNvcHkgaXMgdGhlIG9uZSB0aGUgaGFuZG92ZXIgYWN0dWFsbHkgaGFwcGVuZWQgdW5kZXIuICovXG5hc3luYyBmdW5jdGlvbiBydW5Cb3VuZGFyeVNjYW4oYWNjb3VudDogc3RyaW5nLCBidWNrZXROYW1lOiBzdHJpbmcsIHdpbmRvd1N0YXJ0OiBudW1iZXIsIG9mZnNldDogbnVtYmVyLCBvZmZzZXRMYWJlbD86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxldCBrZXkgPSBgJHthY2NvdW50fS8ke2J1Y2tldE5hbWV9YDtcbiAgICBsZXQgbGFiZWwgPSBgYnVja2V0ICR7a2V5fSwgd2luZG93IHN0YXJ0aW5nICR7bmV3IERhdGUod2luZG93U3RhcnQpLnRvSVNPU3RyaW5nKCl9LCBvZmZzZXQgJHtvZmZzZXRMYWJlbCB8fCBgJHtvZmZzZXQgLyAxMDAwfXNgfWA7XG4gICAgaWYgKGJvdW5kYXJ5U2NhbnNSdW5uaW5nLmhhcyhrZXkpKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBTa2lwcGluZyBib3VuZGFyeSBzY2FuICgke2xhYmVsfSk6IHRoZSBwcmV2aW91cyBib3VuZGFyeSBzY2FuIGlzIHN0aWxsIHJ1bm5pbmdgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBib3VuZGFyeVNjYW5zUnVubmluZy5hZGQoa2V5KTtcbiAgICB0cnkge1xuICAgICAgICBsZXQgZWZmZWN0aXZlID0gYXdhaXQgcmVhZFJvdXRpbmdGcm9tRGlzayhhY2NvdW50LCBidWNrZXROYW1lKTtcbiAgICAgICAgaWYgKCFlZmZlY3RpdmUpIHJldHVybjtcbiAgICAgICAgbGV0IGhhbmRvdmVycyA9IHByZXZpb3VzV2luZG93T3duZXJzKGVmZmVjdGl2ZSwgd2luZG93U3RhcnQsIGZpbmRTZWxmSW5kZXhlcyhlZmZlY3RpdmUsIGFjY291bnQsIGJ1Y2tldE5hbWUpKTtcbiAgICAgICAgaWYgKCFoYW5kb3ZlcnMubGVuZ3RoKSByZXR1cm47XG4gICAgICAgIGNvbnNvbGUubG9nKGBCb3VuZGFyeSBzY2FuICgke2xhYmVsfSk6ICR7aGFuZG92ZXJzLmxlbmd0aH0gcm91dGUocykgdGFraW5nIG92ZXI6ICR7aGFuZG92ZXJzLm1hcCh4ID0+IGAke0pTT04uc3RyaW5naWZ5KHgucm91dGUpfSBmcm9tICR7eC5zY2FuT3duRGlzayAmJiBcIm91ciBvd24gZGlza1wiIHx8IFwiXCJ9JHt4LnNjYW5Pd25EaXNrICYmIHgucmVtb3Rlcy5zaXplICYmIFwiICsgXCIgfHwgXCJcIn0ke1suLi54LnJlbW90ZXMua2V5cygpXS5tYXAoaSA9PiBgc291cmNlICR7aX1gKS5qb2luKFwiLCBcIil9YCkuam9pbihcIjsgXCIpfWApO1xuICAgICAgICBsZXQgc2luY2UgPSB3aW5kb3dTdGFydCAtIEJPVU5EQVJZX1NDQU5fTE9PS0JBQ0s7XG4gICAgICAgIGZvciAobGV0IGhhbmRvdmVyIG9mIGhhbmRvdmVycykge1xuICAgICAgICAgICAgbGV0IHNlbGZTdG9yZSA9IGdldFN0b3JlKGFjY291bnQsIGJ1Y2tldE5hbWUsIGhhbmRvdmVyLm5hbWUpO1xuICAgICAgICAgICAgaWYgKGhhbmRvdmVyLnNjYW5Pd25EaXNrKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgc2VsZlN0b3JlLnJlc2NhbkJhc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAobGV0IFtzb3VyY2VJbmRleCwgcm91dGVdIG9mIGhhbmRvdmVyLnJlbW90ZXMpIHtcbiAgICAgICAgICAgICAgICBsZXQgb3duZXJTb3VyY2UgPSBlZmZlY3RpdmUuc291cmNlc1tzb3VyY2VJbmRleF07XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvd25lclNvdXJjZSA9PT0gXCJzdHJpbmdcIikgY29udGludWU7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgc2VsZlN0b3JlLmJvdW5kYXJ5U2NhblJlbW90ZShjcmVhdGVBcGlBcmNoaXZlcyhvd25lclNvdXJjZSksIHsgc2luY2UsIHJvdXRlIH0pO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgQm91bmRhcnkgc2NhbiAoJHtsYWJlbH0pIG9mIHByZXZpb3VzLXdpbmRvdyBvd25lciAoc291cmNlIGluZGV4ICR7c291cmNlSW5kZXh9KSBmYWlsZWQ6ICR7KGUgYXMgRXJyb3IpLnN0YWNrID8/IGV9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgICAgYm91bmRhcnlTY2Fuc1J1bm5pbmcuZGVsZXRlKGtleSk7XG4gICAgfVxufVxuXG4vKiogQW4gb3BlcmF0b3IncyBjb25maWcga25vd3Mgbm90aGluZyBhYm91dCBhIHN3aXRjaG92ZXIgdGhhdCBpcyBpbiBmbGlnaHQgcmlnaHQgbm93LCBzbyB3cml0aW5nIGl0IGFzLWlzIHdvdWxkIGNhbmNlbCBvbmUgbWlkLWhhbmRvdmVyLiBUaGUgaW4tZmxpZ2h0IHdpbmRvd3MgYXJlIHB1dCBiYWNrIGludG8gaXQgZmlyc3QuICovXG5leHBvcnQgZnVuY3Rpb24gcmVpbmplY3RJbnRlcm1lZGlhdGVzKGN1cnJlbnQ6IFJlbW90ZUNvbmZpZyB8IHVuZGVmaW5lZCwgaW5jb21pbmc6IFJlbW90ZUNvbmZpZyk6IFJlbW90ZUNvbmZpZyB7XG4gICAgaWYgKCFjdXJyZW50KSByZXR1cm4gaW5jb21pbmc7XG4gICAgbGV0IHN0b3JlZCA9IGluY29taW5nO1xuICAgIGxldCByZWluamVjdGVkID0gMDtcbiAgICBmb3IgKGxldCBpbnRlcm1lZGlhdGUgb2YgZ2V0SW50ZXJtZWRpYXRlU291cmNlcyhleHBpcmVJbnRlcm1lZGlhdGVTb3VyY2VzKGN1cnJlbnQsIERhdGUubm93KCkpKSkge1xuICAgICAgICBzdG9yZWQgPSBpbmplY3RJbnRlcm1lZGlhdGVTb3VyY2Uoc3RvcmVkLCB7XG4gICAgICAgICAgICBzcGxpdFVybDogaW50ZXJtZWRpYXRlLmludGVybWVkaWF0ZSB8fCBpbnRlcm1lZGlhdGUudXJsLFxuICAgICAgICAgICAgaW50ZXJtZWRpYXRlVXJsOiBpbnRlcm1lZGlhdGUudXJsLFxuICAgICAgICAgICAgc3RhcnQ6IGludGVybWVkaWF0ZS52YWxpZFdpbmRvd1swXSxcbiAgICAgICAgICAgIGVuZDogaW50ZXJtZWRpYXRlLnZhbGlkV2luZG93WzFdLFxuICAgICAgICB9KTtcbiAgICAgICAgcmVpbmplY3RlZCsrO1xuICAgIH1cbiAgICBpZiAocmVpbmplY3RlZCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgUmUtaW5qZWN0ZWQgJHtyZWluamVjdGVkfSBpbi1mbGlnaHQgc3dpdGNob3ZlciB3aW5kb3cocykgaW50byBhbiBpbmNvbWluZyByb3V0aW5nIGNvbmZpZyAodmVyc2lvbiAke2dldENvbmZpZ1ZlcnNpb24oaW5jb21pbmcpfSlgKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0b3JlZDtcbn1cblxuLy8gUGVyIGJ1Y2tldCwgbm90IGdsb2JhbDogYSBzd2l0Y2hvdmVyIGhhcyB0byB3cml0ZSBldmVyeSBidWNrZXQncyB3aW5kb3dzIGF0IG9uY2UsIGFuZCBhIHNoYXJlZCB0aHJvdHRsZSB3b3VsZCBsZXQgb25seSBvbmUgYnVja2V0IHRocm91Z2ggcGVyIGludGVydmFsXG5jb25zdCBsYXN0T3duQ29uZmlnV3JpdGUgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuXG5hc3luYyBmdW5jdGlvbiB3cml0ZU93blJvdXRpbmdDb25maWcoY29uZmlnOiB7IGFjY291bnQ6IHN0cmluZzsgYnVja2V0TmFtZTogc3RyaW5nOyBzdG9yZU5hbWU6IHN0cmluZzsgY3VycmVudDogUmVtb3RlQ29uZmlnOyB1cGRhdGVkOiBSZW1vdGVDb25maWc7IHJlYXNvbjogc3RyaW5nIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsZXQgeyBhY2NvdW50LCBidWNrZXROYW1lLCBjdXJyZW50LCB1cGRhdGVkLCByZWFzb24gfSA9IGNvbmZpZztcbiAgICBsZXQga2V5ID0gYCR7YWNjb3VudH0vJHtidWNrZXROYW1lfWA7XG4gICAgbGV0IHNpbmNlTGFzdCA9IERhdGUubm93KCkgLSAobGFzdE93bkNvbmZpZ1dyaXRlLmdldChrZXkpIHx8IDApO1xuICAgIGlmIChzaW5jZUxhc3QgPCBPV05fQ09ORklHX1dSSVRFX1RIUk9UVExFKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBOb3Qgd3JpdGluZyBvdXIgb3duIHJvdXRpbmcgY29uZmlnIHVwZGF0ZSBmb3IgYnVja2V0ICR7a2V5fSAoJHtyZWFzb259KTogdGhlIGxhc3Qgb25lIHdhcyAke3NpbmNlTGFzdH1tcyBhZ28sIHVuZGVyIHRoZSAke09XTl9DT05GSUdfV1JJVEVfVEhST1RUTEV9bXMgdGhyb3R0bGUuIFJldHJ5aW5nIG9uIHRoZSBuZXh0IG1haW50ZW5hbmNlIHBhc3MuYCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGFzdE93bkNvbmZpZ1dyaXRlLnNldChrZXksIERhdGUubm93KCkpO1xuICAgIGxldCBjdXJyZW50VmVyc2lvbiA9IGdldENvbmZpZ1ZlcnNpb24oY3VycmVudCk7XG4gICAgbGV0IHZlcnNpb24gPSBuZXh0SW50ZXJtZWRpYXRlVmVyc2lvbihjdXJyZW50VmVyc2lvbik7XG4gICAgbGV0IG5leHQ6IFJlbW90ZUNvbmZpZyA9IHsgLi4udXBkYXRlZCwgdmVyc2lvbiB9O1xuICAgIGNvbnNvbGUubG9nKGBXcml0aW5nICR7Uk9VVElOR19GSUxFfSBmb3IgYnVja2V0ICR7a2V5fSAoJHtyZWFzb259KSwgdmVyc2lvbiAke2N1cnJlbnRWZXJzaW9ufSAtPiAke3ZlcnNpb259OiAke0pTT04uc3RyaW5naWZ5KG5leHQpfWApO1xuICAgIGxldCBkYXRhID0gQnVmZmVyLmZyb20oc2VyaWFsaXplUmVtb3RlQ29uZmlnKG5leHQpKTtcbiAgICAvLyBJbnRvIHRoZSBzdG9yZSBob2xkaW5nIHRoZSBuZXdlc3QgY29weSAtIGl0IGFwcGxpZXMgaXQgYW5kIGl0cyBwZWVycyBwdWxsIGl0IC0gYW5kIGRpcmVjdGx5IHRvIHRoZSBvdGhlciBzZXJ2ZXJzLCB3aGljaCBpcyB3aGF0IG1ha2VzIGEgc3dpdGNob3ZlciB0YWtlIGVmZmVjdCBpbiBzZWNvbmRzIHJhdGhlciB0aGFuIGF0IHRoZSBuZXh0IHBvbGxcbiAgICBhd2FpdCB3cml0ZVJvdXRpbmdDb25maWcoYWNjb3VudCwgYnVja2V0TmFtZSwgY29uZmlnLnN0b3JlTmFtZSwgZGF0YSk7XG4gICAgYXdhaXQgcHJvcGFnYXRlUm91dGluZ0NvbmZpZyh7IGFjY291bnQsIGJ1Y2tldE5hbWUsIGN1cnJlbnQsIG5leHQsIGRhdGEgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHByb3BhZ2F0ZVJvdXRpbmdDb25maWcoY29uZmlnOiB7IGFjY291bnQ6IHN0cmluZzsgYnVja2V0TmFtZTogc3RyaW5nOyBjdXJyZW50OiBSZW1vdGVDb25maWc7IG5leHQ6IFJlbW90ZUNvbmZpZzsgZGF0YTogQnVmZmVyIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsZXQgdGFyZ2V0cyA9IG5ldyBNYXA8c3RyaW5nLCBTb3VyY2VDb25maWc+KCk7XG4gICAgZm9yIChsZXQgc291cmNlIG9mIFsuLi5jb25maWcuY3VycmVudC5zb3VyY2VzLCAuLi5jb25maWcubmV4dC5zb3VyY2VzXSkge1xuICAgICAgICBpZiAodHlwZW9mIHNvdXJjZSA9PT0gXCJzdHJpbmdcIiB8fCBzb3VyY2UuaW50ZXJtZWRpYXRlKSBjb250aW51ZTtcbiAgICAgICAgaWYgKHNvdXJjZS50eXBlID09PSBcInJlbW90ZVwiKSB7XG4gICAgICAgICAgICBsZXQgcGFyc2VkID0gcGFyc2VIb3N0ZWRVcmwoc291cmNlLnVybCk7XG4gICAgICAgICAgICBpZiAocGFyc2VkLmFjY291bnQgIT09IGNvbmZpZy5hY2NvdW50IHx8IHBhcnNlZC5idWNrZXROYW1lICE9PSBjb25maWcuYnVja2V0TmFtZSkgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRhcmdldHMuaGFzKHNvdXJjZS51cmwpKSBjb250aW51ZTtcbiAgICAgICAgdGFyZ2V0cy5zZXQoc291cmNlLnVybCwgc291cmNlKTtcbiAgICB9XG4gICAgZm9yIChsZXQgW3VybCwgc291cmNlXSBvZiB0YXJnZXRzKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBjcmVhdGVBcGlBcmNoaXZlcyhzb3VyY2UpLnNldChST1VUSU5HX0ZJTEUsIGNvbmZpZy5kYXRhKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBXcm90ZSAke1JPVVRJTkdfRklMRX0gZm9yIGJ1Y2tldCAke2NvbmZpZy5hY2NvdW50fS8ke2NvbmZpZy5idWNrZXROYW1lfSB0byAke3VybH1gKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgUHJvcGFnYXRpbmcgb3VyIHJvdXRpbmcgY29uZmlnIHVwZGF0ZSB0byAke3VybH0gZmFpbGVkOiAkeyhlIGFzIEVycm9yKS5zdGFjayA/PyBlfWApO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiogS2VlcHMgZXZlcnkgYWN0aXZlIGJ1Y2tldCdzIHN3aXRjaG92ZXIgd2luZG93cyBjdXJyZW50OiBnaXZlcyBvdXIgYWx0ZXJuYXRlIHBvcnQgaXRzIHdpbmRvdyB3aGlsZSBhIHRha2VvdmVyIGlzIGluIGZsaWdodCwgYW5kIHRha2VzIGV4cGlyZWQgb25lcyBiYWNrIG91dC4gKi9cbmFzeW5jIGZ1bmN0aW9uIG1haW50YWluSW50ZXJtZWRpYXRlcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsZXQgeyBkb21haW4sIHBvcnQgfSA9IGdldFN0b3JhZ2VTZXJ2ZXJDb25maWcoKTtcbiAgICBsZXQgdGFrZW92ZXIgPSBnZXRUYWtlb3ZlckludGVybWVkaWF0ZSgpO1xuICAgIGxldCB3cml0dGVuOiBzdHJpbmdbXSA9IFtdO1xuICAgIGxldCBhbHJlYWR5Q29ycmVjdDogc3RyaW5nW10gPSBbXTtcbiAgICBsZXQgbm90T3Vyczogc3RyaW5nW10gPSBbXTtcbiAgICAvLyBPTkxZIGJ1Y2tldHMgYWxyZWFkeSBhY3RpdmUuIEEgc3dpdGNob3ZlciBtdXN0IG5ldmVyIGFjdGl2YXRlIGEgYnVja2V0OiB0aGF0IHN0YXJ0cyBpdHMgc3luY2hyb25pemF0aW9uLCBhbmQgYnVja2V0cyBub3RoaW5nIGhhcyB0b3VjaGVkIChsZWdhY3kgb25lcyBlc3BlY2lhbGx5KSBoYXZlIG5vIHdyaXRlcyB0byBoYW5kIG9mZiBpbiB0aGUgZmlyc3QgcGxhY2UuIE9uZSB0aGF0IGRvZXMgZ2V0IHVzZWQgbWlkLXN3aXRjaG92ZXIgYWN0aXZhdGVzIG9uIHRoYXQgYWNjZXNzLCBhbmQgdGhlIG5leHQgcGFzcyBnaXZlcyBpdCBpdHMgd2luZG93LlxuICAgIGxldCBhY3RpdmVLZXlzID0gZ2V0QWN0aXZlQnVja2V0S2V5cygpO1xuICAgIGZvciAobGV0IHsgYWNjb3VudCwgYnVja2V0TmFtZSB9IG9mIGFjdGl2ZUtleXMpIHtcbiAgICAgICAgbGV0IGtleSA9IGAke2FjY291bnR9LyR7YnVja2V0TmFtZX1gO1xuICAgICAgICBsZXQgbmV3ZXN0ID0gYXdhaXQgcmVhZE5ld2VzdFJvdXRpbmdGaWxlKGFjY291bnQsIGJ1Y2tldE5hbWUpO1xuICAgICAgICBpZiAoIW5ld2VzdCkgY29udGludWU7XG4gICAgICAgIGxldCByb3V0aW5nOiBSZW1vdGVDb25maWc7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByb3V0aW5nID0gcGFyc2VSb3V0aW5nRGF0YShuZXdlc3QuZGF0YSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFNraXBwaW5nIHN3aXRjaG92ZXIgbWFpbnRlbmFuY2UgZm9yIGJ1Y2tldCAke2tleX06IGl0cyByb3V0aW5nIGNvbmZpZyBjb3VsZCBub3QgYmUgcGFyc2VkICgkeyhlIGFzIEVycm9yKS5tZXNzYWdlfSlgKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGxldCBleHBpcmVkID0gZXhwaXJlSW50ZXJtZWRpYXRlU291cmNlcyhyb3V0aW5nLCBEYXRlLm5vdygpKTtcbiAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGV4cGlyZWQpICE9PSBKU09OLnN0cmluZ2lmeShyb3V0aW5nKSkge1xuICAgICAgICAgICAgYXdhaXQgd3JpdGVPd25Sb3V0aW5nQ29uZmlnKHsgYWNjb3VudCwgYnVja2V0TmFtZSwgc3RvcmVOYW1lOiBuZXdlc3QubmFtZSwgY3VycmVudDogcm91dGluZywgdXBkYXRlZDogZXhwaXJlZCwgcmVhc29uOiBgc3dpdGNob3ZlciB3aW5kb3dzIGV4cGlyZWQgbW9yZSB0aGFuICR7SU5URVJNRURJQVRFX0VYUElSRV9HUkFDRSAvIDEwMDB9cyBhZ29gIH0pO1xuICAgICAgICAgICAgd3JpdHRlbi5wdXNoKGtleSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRha2VvdmVyKSBjb250aW51ZTtcbiAgICAgICAgbGV0IG1haW5VcmwgPSByb3V0aW5nLnNvdXJjZXMuZmluZCh4ID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgeCA9PT0gXCJzdHJpbmdcIiB8fCB4LnR5cGUgIT09IFwicmVtb3RlXCIgfHwgeC5pbnRlcm1lZGlhdGUpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGxldCBwYXJzZWQgPSBwYXJzZUhvc3RlZFVybCh4LnVybCk7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VkLmFkZHJlc3MgPT09IGRvbWFpbiAmJiBwYXJzZWQucG9ydCA9PT0gcG9ydDtcbiAgICAgICAgfSkgYXMgSG9zdGVkQ29uZmlnIHwgdW5kZWZpbmVkO1xuICAgICAgICBpZiAoIW1haW5VcmwpIHtcbiAgICAgICAgICAgIG5vdE91cnMucHVzaChrZXkpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGluamVjdGVkID0gaW5qZWN0SW50ZXJtZWRpYXRlU291cmNlKHJvdXRpbmcsIHtcbiAgICAgICAgICAgIHNwbGl0VXJsOiBtYWluVXJsLnVybCxcbiAgICAgICAgICAgIGludGVybWVkaWF0ZVVybDogcmVwbGFjZUhvc3RlZFVybFBvcnQobWFpblVybC51cmwsIHRha2VvdmVyLmFsdFBvcnQpLFxuICAgICAgICAgICAgc3RhcnQ6IHRha2VvdmVyLnN0YXJ0LFxuICAgICAgICAgICAgZW5kOiB0YWtlb3Zlci5lbmQsXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkoaW5qZWN0ZWQpID09PSBKU09OLnN0cmluZ2lmeShyb3V0aW5nKSkge1xuICAgICAgICAgICAgYWxyZWFkeUNvcnJlY3QucHVzaChrZXkpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgd3JpdGVPd25Sb3V0aW5nQ29uZmlnKHsgYWNjb3VudCwgYnVja2V0TmFtZSwgc3RvcmVOYW1lOiBuZXdlc3QubmFtZSwgY3VycmVudDogcm91dGluZywgdXBkYXRlZDogaW5qZWN0ZWQsIHJlYXNvbjogYHdlIGFyZSBhIGRlcGxveSBzdWNjZXNzb3I6IHdyaXRlcyByb3V0ZSB0byBvdXIgYWx0ZXJuYXRlIHBvcnQgJHt0YWtlb3Zlci5hbHRQb3J0fSBmcm9tICR7bmV3IERhdGUodGFrZW92ZXIuc3RhcnQpLnRvSVNPU3RyaW5nKCl9IHVudGlsIG91ciBwcmVkZWNlc3NvciBpcyBraWxsZWQgYXQgJHtuZXcgRGF0ZSh0YWtlb3Zlci5lbmQpLnRvSVNPU3RyaW5nKCl9YCB9KTtcbiAgICAgICAgd3JpdHRlbi5wdXNoKGtleSk7XG4gICAgfVxuICAgIGlmICghdGFrZW92ZXIpIHJldHVybjtcbiAgICBpZiAoIWFjdGl2ZUtleXMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBObyBhY3RpdmUgYnVja2V0cywgc28gbm8gY29uZmlnIGZpbGVzIHRvIHdyaXRlIHRoZSBpbnRlcm1lZGlhdGUgaW50byAoYSBidWNrZXQgaXMgb25seSBhY3RpdmUgb25jZSBzb21ldGhpbmcgdXNlcyBpdClgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXdyaXR0ZW4ubGVuZ3RoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBXcm90ZSBubyBjb25maWcgZmlsZXM6IG9mICR7YWN0aXZlS2V5cy5sZW5ndGh9IGFjdGl2ZSBidWNrZXRzLCAke2FscmVhZHlDb3JyZWN0Lmxlbmd0aH0gYWxyZWFkeSBjb250YWluIHRoZSBpbnRlcm1lZGlhdGUgYW5kICR7bm90T3Vycy5sZW5ndGh9IGFyZSBub3QgaG9zdGVkIGJ5IHVzYCk7XG4gICAgfVxufVxuXG4vKiogT3VyIHByZWRlY2Vzc29yIHN0aWxsIGhvbGRzIHRoZSBtYWluIHBvcnQgYW5kIGhhcyBiZWVuIHNlcnZpbmcgYWxsIGFsb25nLCBzbyBpdCAtIG5vdCB1cyAtIGtub3dzIHdoaWNoIGJ1Y2tldHMgYXJlIGluIHVzZS4gV2UgYWN0aXZhdGUgZXhhY3RseSB0aG9zZSwgd2hpY2ggaXMgd2hhdCBtYWtlcyB0aGVpciBjb25maWcgZmlsZXMgZ2V0IHRoZSBpbnRlcm1lZGlhdGU7IG5vdGhpbmcgZWxzZSBvbiBkaXNrIGlzIHRvdWNoZWQuICovXG5hc3luYyBmdW5jdGlvbiBhY3RpdmF0ZVByZWRlY2Vzc29yQnVja2V0cygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsZXQgeyBkb21haW4sIHBvcnQgfSA9IGdldFN0b3JhZ2VTZXJ2ZXJDb25maWcoKTtcbiAgICBsZXQgdXJsID0gYGh0dHBzOi8vJHtkb21haW59OiR7cG9ydH1gO1xuICAgIGxldCBrZXlzOiB7IGFjY291bnQ6IHN0cmluZzsgYnVja2V0TmFtZTogc3RyaW5nIH1bXTtcbiAgICB0cnkge1xuICAgICAgICBrZXlzID0gYXdhaXQgbGlzdFNlcnZlckFjdGl2ZUJ1Y2tldEtleXMoeyB1cmwgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBDb3VsZCBub3QgYXNrIG91ciBwcmVkZWNlc3NvciBvbiAke3VybH0gd2hpY2ggYnVja2V0cyBhcmUgYWN0aXZlLCBzbyBvbmx5IGJ1Y2tldHMgdXNlZCBvbiB0aGlzIHByb2Nlc3MgZ2V0IHRoZSBpbnRlcm1lZGlhdGU6ICR7KGUgYXMgRXJyb3IpLnN0YWNrID8/IGV9YCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFrZXlzLmxlbmd0aCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgT3VyIHByZWRlY2Vzc29yIG9uICR7dXJsfSBoYXMgbm8gYWN0aXZlIGJ1Y2tldHMsIHNvIHRoZXJlIGFyZSBubyBjb25maWcgZmlsZXMgdG8gd3JpdGUgdGhlIGludGVybWVkaWF0ZSBpbnRvYCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc29sZS5sb2coYE91ciBwcmVkZWNlc3NvciBvbiAke3VybH0gaGFzICR7a2V5cy5sZW5ndGh9IGFjdGl2ZSBidWNrZXRzLCBhY3RpdmF0aW5nIHRoZW0gaGVyZSBzbyB0aGVpciBjb25maWcgZmlsZXMgZ2V0IHRoZSBpbnRlcm1lZGlhdGU6ICR7a2V5cy5tYXAoeCA9PiBgJHt4LmFjY291bnR9LyR7eC5idWNrZXROYW1lfWApLmpvaW4oXCIsIFwiKX1gKTtcbiAgICBmb3IgKGxldCB7IGFjY291bnQsIGJ1Y2tldE5hbWUgfSBvZiBrZXlzKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgYWN0aXZhdGVCdWNrZXQoYWNjb3VudCwgYnVja2V0TmFtZSk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEFjdGl2YXRpbmcgYnVja2V0ICR7YWNjb3VudH0vJHtidWNrZXROYW1lfSAoYWN0aXZlIG9uIG91ciBwcmVkZWNlc3NvcikgZmFpbGVkOiAke3Jlc3VsdH1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgQWN0aXZhdGluZyBidWNrZXQgJHthY2NvdW50fS8ke2J1Y2tldE5hbWV9IChhY3RpdmUgb24gb3VyIHByZWRlY2Vzc29yKSBmYWlsZWQ6ICR7KGUgYXMgRXJyb3IpLnN0YWNrID8/IGV9YCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKiBTdGFydGVkIGJ5IGRlcGxveVRha2VvdmVyIG9uY2Ugd2UgYXJlIGFjdHVhbGx5IGEgZGVwbG95IHN1Y2Nlc3NvciBsaXN0ZW5pbmcgb24gYW4gYWx0ZXJuYXRlIHBvcnQuIFVudGlsIHRoZW4gdGhlcmUgYXJlIG5vIHN3aXRjaG92ZXIgd2luZG93cyB0byB3cml0ZSBvciBleHBpcmUsIHNvIG5vdGhpbmcgcG9sbHMuICovXG5leHBvcnQgY29uc3Qgc3RhcnRJbnRlcm1lZGlhdGVNYWludGVuYW5jZSA9IGxhenkoKCkgPT4ge1xuICAgIHZvaWQgKGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgYWN0aXZhdGVQcmVkZWNlc3NvckJ1Y2tldHMoKTtcbiAgICAgICAgYXdhaXQgbWFpbnRhaW5JbnRlcm1lZGlhdGVzKCk7XG4gICAgfSkoKS5jYXRjaCgoZTogRXJyb3IpID0+IGNvbnNvbGUuZXJyb3IoYFdyaXRpbmcgdGhlIGludGVybWVkaWF0ZSBpbnRvIHRoZSBjb25maWcgZmlsZXMgZmFpbGVkOiAke2Uuc3RhY2sgPz8gZX1gKSk7XG4gICAgcnVuSW5maW5pdGVQb2xsKElOVEVSTUVESUFURV9NQUlOVEFJTl9JTlRFUlZBTCwgbWFpbnRhaW5JbnRlcm1lZGlhdGVzKTtcbn0pO1xuIl19
|
|
292
|
-
/* _JS_SOURCE_HASH = "
|
|
292
|
+
/* _JS_SOURCE_HASH = "7fc22866b61036180c82c4ffb9d3cc85282be97bb3c6b055fc636eb8f215a1bb"; */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"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";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
|
|
3
3
|
//exports.expireIntermediateSources = exports.injectIntermediateSource = exports.resolveIntermediateSources = exports.hasIntermediateSources = exports.getIntermediateSources = exports.nextIntermediateVersion = exports.INTERMEDIATE_EXPIRE_GRACE = void 0;
|
|
4
4
|
exports.INTERMEDIATE_EXPIRE_GRACE = 15 * 60 * 1000;
|
|
@@ -111,4 +111,4 @@ function expireIntermediateSources(config, now) {
|
|
|
111
111
|
}
|
|
112
112
|
exports.expireIntermediateSources = expireIntermediateSources;
|
|
113
113
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJtZWRpYXRlU291cmNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImludGVybWVkaWF0ZVNvdXJjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRWEsUUFBQSx5QkFBeUIsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUN4RCxNQUFNLDZCQUE2QixHQUFHLE9BQVMsQ0FBQztBQUVoRCwyUkFBMlI7QUFDM1IsU0FBZ0IsdUJBQXVCLENBQUMsT0FBZTtJQUNuRCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLDZCQUE2QixDQUFDO0lBQzdELElBQUksQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2QsSUFBSSxHQUFHLENBQUMsR0FBRyw2QkFBNkIsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsT0FBTyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQzFCLENBQUM7QUFORCwwREFNQztBQUVELFNBQVMsY0FBYyxDQUFDLE1BQXdCO0lBQzVDLE9BQU8sT0FBTyxNQUFNLEtBQUssUUFBUSxDQUFDO0FBQ3RDLENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxNQUF3QjtJQUN6QyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQztRQUFFLE9BQU8sTUFBTSxDQUFDO0lBQzNDLE9BQU8sRUFBRSxHQUFHLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3RGLENBQUM7QUFFRCxTQUFTLE9BQU8sQ0FBQyxNQUFvQjtJQUNqQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLE1BQU0sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztBQUNqRSxDQUFDO0FBRUQsU0FBZ0Isc0JBQXNCLENB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QztJQUN0QixLQUFLLElBQUksSUFBSSxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDakMsTUFBTSxHQUFHLHdCQUF3QixDQUFDLE1BQU0sRUFBRTtZQUN0Qyw0SEFBNEg7WUFDNUgsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLEdBQUc7WUFDdkMsZUFBZSxFQUFFLElBQUksQ0FBQyxHQUFHO1lBQ3pCLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUMxQixHQUFHLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7U0FDM0IsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUM7QUFoQkQsOERBZ0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVtb3RlQ29uZmlnLCBSZW1vdGVDb25maWdCYXNlLCBTb3VyY2VDb25maWcgfSBmcm9tIFwiLi4vSUFyY2hpdmVzXCI7XG5cbmV4cG9ydCBjb25zdCBJTlRFUk1FRElBVEVfRVhQSVJFX0dSQUNFID0gMTUgKiA2MCAqIDEwMDA7XG5jb25zdCBJTlRFUk1FRElBVEVfVkVSU0lPTl9GUkFDVElPTiA9IDFfMDAwXzAwMDtcblxuLyoqIEFkZGluZyBvciByZW1vdmluZyBpbnRlcm1lZGlhdGVzIGlzIGEgcmVhbCBjb25maWcgdXBkYXRlLCBzbyBpdCB0YWtlcyBhIHJlYWwgdmVyc2lvbiBpbmNyZW1lbnQgLSBidXQgYSBwcm9wb3J0aW9uYWwgb25lLCBzbyBpdCBzdGF5cyBmYXIgYmVsb3cgd2hhdGV2ZXIgdGhlIGF1dGhvcidzIG5leHQgdmVyc2lvbiB3b3VsZCBiZSAod2hldGhlciB0aGV5IGNvdW50IDEsIDIsIDMgb3IgdXNlIHRpbWVzdGFtcHMpLCBhbmQgYSBtaWxsaW9uIG9mIHRoZW0gc3RpbGwgZml0IHVuZGVyIGl0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5leHRJbnRlcm1lZGlhdGVWZXJzaW9uKHZlcnNpb246IG51bWJlcik6IG51bWJlciB7XG4gICAgbGV0IHN0ZXAgPSBNYXRoLmFicyh2ZXJzaW9uKSAvIElOVEVSTUVESUFURV9WRVJTSU9OX0ZSQUNUSU9OO1xuICAgIGlmICghKHN0ZXAgPiAwKSkge1xuICAgICAgICBzdGVwID0gMSAvIElOVEVSTUVESUFURV9WRVJTSU9OX0ZSQUNUSU9OO1xuICAgIH1cbiAgICByZXR1cm4gdmVyc2lvbiArIHN0ZXA7XG59XG5cbmZ1bmN0aW9uIGlzU291cmNlQ29uZmlnKHNvdXJjZTogUmVtb3RlQ29uZmlnQmFzZSk6IHNvdXJjZSBpcyBTb3VyY2VDb25maWcge1xuICAgIHJldHVybiB0eXBlb2Ygc291cmNlICE9PSBcInN0cmluZ1wiO1xufVxuXG5mdW5jdGlvbiBjbG9uZVNvdXJjZShzb3VyY2U6IFJlbW90ZUNvbmZpZ0Jhc2UpOiBSZW1vdGVDb25maWdCYXNlIHtcbiAgICBpZiAoIWlzU291cmNlQ29uZmlnKHNvdXJjZSkpIHJldHVybiBzb3VyY2U7XG4gICAgcmV0dXJuIHsgLi4uc291cmNlLCB2YWxpZFdpbmRvdzogW3NvdXJjZS52YWxpZFdpbmRvd1swXSwgc291cmNlLnZhbGlkV2luZG93WzFdXSB9O1xufVxuXG5mdW5jdGlvbiBqb2luS2V5KHNvdXJjZTogU291cmNlQ29uZmlnKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoeyAuLi5zb3VyY2UsIHZhbGlkV2luZG93OiB1bmRlZmluZWQgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnRlcm1lZGlhdGVTb3VyY2VzKGNvbmZpZzogUmVtb3RlQ29uZmlnKTogU291cmNlQ29uZmlnW10ge1xuICAgIHJldHVybiBjb25maWcuc291cmNlcy5maWx0ZXIoeCA9PiBpc1NvdXJjZUNvbmZpZyh4KSAmJiB4LmludGVybWVkaWF0ZSkgYXMgU291cmNlQ29uZmlnW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNJbnRlcm1lZGlhdGVTb3VyY2VzKGNvbmZpZzogUmVtb3RlQ29uZmlnKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGNvbmZpZy5zb3VyY2VzLnNvbWUoeCA9PiBpc1NvdXJjZUNvbmZpZyh4KSAmJiB4LmludGVybWVkaWF0ZSk7XG59XG5cbi8qKiBSZW1vdmVzIGV2ZXJ5IGludGVybWVkaWF0ZSBlbnRyeSBhbmQgcmVqb2lucyB0aGUgd2luZG93cyBpdCBzcGxpdCwgZ2l2aW5nIGJhY2sgdGhlIHVuZGVybHlpbmcgY29uZmlndXJhdGlvbi4gVHdvIGNvbmZpZ3MgdGhhdCByZXNvbHZlIGVxdWFsIGRpZmZlciBvbmx5IGJ5IGludGVybWVkaWF0ZXMuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUludGVybWVkaWF0ZVNvdXJjZXMoY29uZmlnOiBSZW1vdGVDb25maWcpOiBSZW1vdGVDb25maWcge1xuICAgIGlmICghaGFzSW50ZXJtZWRpYXRlU291cmNlcyhjb25maWcpKSByZXR1cm4gY29uZmlnO1xuICAgIGxldCByZW1vdmVkID0gZ2V0SW50ZXJtZWRpYXRlU291cmNlcyhjb25maWcpO1xuICAgIGxldCBzb3VyY2VzID0gY29uZmlnLnNvdXJjZXMuZmlsdGVyKHggPT4gIWlzU291cmNlQ29uZmlnKHgpIHx8ICF4LmludGVybWVkaWF0ZSkubWFwKGNsb25lU291cmNlKTtcbiAgICBmb3IgKGxldCBnYXAgb2YgcmVtb3ZlZCkge1xuICAgICAgICBsZXQgW2dhcFN0YXJ0LCBnYXBFbmRdID0gZ2FwLnZhbGlkV2luZG93O1xuICAgICAgICBsZXQgYmVmb3JlID0gc291cmNlcy5maW5kKHggPT4gaXNTb3VyY2VDb25maWcoeCkgJiYgeC52YWxpZFdpbmRvd1sxXSA9PT0gZ2FwU3RhcnQpIGFzIFNvdXJjZUNvbmZpZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgbGV0IGFmdGVyID0gc291cmNlcy5maW5kKHggPT4gaXNTb3VyY2VDb25maWcoeCkgJiYgeC52YWxpZFdpbmRvd1swXSA9PT0gZ2FwRW5kKSBhcyBTb3VyY2VDb25maWcgfCB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChiZWZvcmUgJiYgYWZ0ZXIgJiYgam9pbktleShiZWZvcmUpID09PSBqb2luS2V5KGFmdGVyKSkge1xuICAgICAgICAgICAgYmVmb3JlLnZhbGlkV2luZG93ID0gW2JlZm9yZS52YWxpZFdpbmRvd1swXSwgYWZ0ZXIudmFsaWRXaW5kb3dbMV1dO1xuICAgICAgICAgICAgc291cmNlcy5zcGxpY2Uoc291cmNlcy5pbmRleE9mKGFmdGVyKSwgMSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYmVmb3JlKSB7XG4gICAgICAgICAgICBiZWZvcmUudmFsaWRXaW5kb3cgPSBbYmVmb3JlLnZhbGlkV2luZG93WzBdLCBnYXBFbmRdO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFmdGVyKSB7XG4gICAgICAgICAgICBhZnRlci52YWxpZFdpbmRvdyA9IFtnYXBTdGFydCwgYWZ0ZXIudmFsaWRXaW5kb3dbMV1dO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IHZlcnNpb246IGNvbmZpZy52ZXJzaW9uLCBzb3VyY2VzIH07XG59XG5cbi8qKiBTcGxpdHMgZXZlcnkgc291cmNlIGF0IHNwbGl0VXJsIGNvdmVyaW5nIFtzdGFydCwgZW5kKSBzbyB0aGF0IG1pZGRsZSB3aW5kb3cgcG9pbnRzIGF0IGludGVybWVkaWF0ZVVybCBpbnN0ZWFkLCBmbGFnZ2VkIGFzIGludGVybWVkaWF0ZS4gSWRlbXBvdGVudDogYSBjb25maWcgdGhhdCBhbHJlYWR5IGNvbnRhaW5zIHRoZSBleGFjdCBpbnRlcm1lZGlhdGUgY29tZXMgYmFjayB1bmNoYW5nZWQuICovXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0SW50ZXJtZWRpYXRlU291cmNlKGNvbmZpZzogUmVtb3RlQ29uZmlnLCBpbmplY3Q6IHsgc3BsaXRVcmw6IHN0cmluZzsgaW50ZXJtZWRpYXRlVXJsOiBzdHJpbmc7IHN0YXJ0OiBudW1iZXI7IGVuZDogbnVtYmVyIH0pOiBSZW1vdGVDb25maWcge1xuICAgIGxldCB7IHNwbGl0VXJsLCBpbnRlcm1lZGlhdGVVcmwsIHN0YXJ0LCBlbmQgfSA9IGluamVjdDtcbiAgICBpZiAoc3RhcnQgPj0gZW5kKSByZXR1cm4gY29uZmlnO1xuICAgIGlmIChjb25maWcuc291cmNlcy5zb21lKHggPT4gaXNTb3VyY2VDb25maWcoeCkgJiYgeC5pbnRlcm1lZGlhdGUgJiYgeC51cmwgPT09IGludGVybWVkaWF0ZVVybCAmJiB4LnZhbGlkV2luZG93WzBdID09PSBzdGFydCAmJiB4LnZhbGlkV2luZG93WzFdID09PSBlbmQpKSB7XG4gICAgICAgIHJldHVybiBjb25maWc7XG4gICAgfVxuICAgIGxldCBzb3VyY2VzOiBSZW1vdGVDb25maWdCYXNlW10gPSBbXTtcbiAgICBmb3IgKGxldCBzb3VyY2Ugb2YgY29uZmlnLnNvdXJjZXMpIHtcbiAgICAgICAgaWYgKCFpc1NvdXJjZUNvbmZpZyhzb3VyY2UpIHx8IHNvdXJjZS51cmwgIT09IHNwbGl0VXJsIHx8IHNvdXJjZS5pbnRlcm1lZGlhdGUpIHtcbiAgICAgICAgICAgIHNvdXJjZXMucHVzaChjbG9uZVNvdXJjZShzb3VyY2UpKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGxldCBbd2luZG93U3RhcnQsIHdpbmRvd0VuZF0gPSBzb3VyY2UudmFsaWRXaW5kb3c7XG4gICAgICAgIGlmICh3aW5kb3dFbmQgPD0gc3RhcnQgfHwgd2luZG93U3RhcnQgPj0gZW5kKSB7XG4gICAgICAgICAgICBzb3VyY2VzLnB1c2goY2xvbmVTb3VyY2Uoc291cmNlKSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbWlkZGxlU3RhcnQgPSBNYXRoLm1heCh3aW5kb3dTdGFydCwgc3RhcnQpO1xuICAgICAgICBsZXQgbWlkZGxlRW5kID0gTWF0aC5taW4od2luZG93RW5kLCBlbmQpO1xuICAgICAgICBpZiAobWlkZGxlU3RhcnQgPiB3aW5kb3dTdGFydCkge1xuICAgICAgICAgICAgc291cmNlcy5wdXNoKHsgLi4uc291cmNlLCB2YWxpZFdpbmRvdzogW3dpbmRvd1N0YXJ0LCBtaWRkbGVTdGFydF0gfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gaW50ZXJtZWRpYXRlID0gdGhlIHVybCB0aGlzIGVudHJ5IHdhcyBzcGxpdCBvdXQgb2YsIHNvIGEgcmVxdWVzdCBuYW1pbmcgdGhlIGludGVybWVkaWF0ZSBzdGlsbCByZXNvbHZlcyB0byB0aGUgb3JpZ2luYWwgc291cmNlXG4gICAgICAgIHNvdXJjZXMucHVzaCh7IC4uLnNvdXJjZSwgdXJsOiBpbnRlcm1lZGlhdGVVcmwsIHZhbGlkV2luZG93OiBbbWlkZGxlU3RhcnQsIG1pZGRsZUVuZF0sIGludGVybWVkaWF0ZTogc3BsaXRVcmwgfSk7XG4gICAgICAgIGlmICh3aW5kb3dFbmQgPiBtaWRkbGVFbmQpIHtcbiAgICAgICAgICAgIHNvdXJjZXMucHVzaCh7IC4uLnNvdXJjZSwgdmFsaWRXaW5kb3c6IFttaWRkbGVFbmQsIHdpbmRvd0VuZF0gfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgdmVyc2lvbjogY29uZmlnLnZlcnNpb24sIHNvdXJjZXMgfTtcbn1cblxuLyoqIEludGVybWVkaWF0ZXMgd2hvc2Ugd2luZG93IGVuZGVkIG1vcmUgdGhhbiBJTlRFUk1FRElBVEVfRVhQSVJFX0dSQUNFIGFnbyBhcmUgcmVtb3ZlZCwgYW5kIHRoZSB3aW5kb3dzIHRoZXkgc3BsaXQgYXJlIHJlam9pbmVkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4cGlyZUludGVybWVkaWF0ZVNvdXJjZXMoY29uZmlnOiBSZW1vdGVDb25maWcsIG5vdzogbnVtYmVyKTogUmVtb3RlQ29uZmlnIHtcbiAgICBsZXQgZXhwaXJlZCA9IGdldEludGVybWVkaWF0ZVNvdXJjZXMoY29uZmlnKS5maWx0ZXIoeCA9PiB4LnZhbGlkV2luZG93WzFdICsgSU5URVJNRURJQVRFX0VYUElSRV9HUkFDRSA8IG5vdyk7XG4gICAgaWYgKCFleHBpcmVkLmxlbmd0aCkgcmV0dXJuIGNvbmZpZztcbiAgICBsZXQga2VwdEludGVybWVkaWF0ZXMgPSBnZXRJbnRlcm1lZGlhdGVTb3VyY2VzKGNvbmZpZykuZmlsdGVyKHggPT4gIWV4cGlyZWQuaW5jbHVkZXMoeCkpO1xuICAgIGxldCByZXNvbHZlZCA9IHJlc29sdmVJbnRlcm1lZGlhdGVTb3VyY2VzKGNvbmZpZyk7XG4gICAgbGV0IHJlc3VsdCA9IHJlc29sdmVkO1xuICAgIGZvciAobGV0IGtlZXAgb2Yga2VwdEludGVybWVkaWF0ZXMpIHtcbiAgICAgICAgcmVzdWx0ID0gaW5qZWN0SW50ZXJtZWRpYXRlU291cmNlKHJlc3VsdCwge1xuICAgICAgICAgICAgLy8gVGhlIGludGVybWVkaWF0ZSBjYXJyaWVzIHRoZSB1cmwgaXQgd2FzIHNwbGl0IG91dCBvZjsgZmFsbCBiYWNrIHRvIGl0cyBvd24gdXJsIG9ubHkgZm9yIGEgbGVnYWN5IGVudHJ5IHRoYXQgcHJlZGF0ZXMgdGhhdFxuICAgICAgICAgICAgc3BsaXRVcmw6IGtlZXAuaW50ZXJtZWRpYXRlIHx8IGtlZXAudXJsLFxuICAgICAgICAgICAgaW50ZXJtZWRpYXRlVXJsOiBrZWVwLnVybCxcbiAgICAgICAgICAgIHN0YXJ0OiBrZWVwLnZhbGlkV2luZG93WzBdLFxuICAgICAgICAgICAgZW5kOiBrZWVwLnZhbGlkV2luZG93WzFdLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdfQ==
|
|
114
|
-
/* _JS_SOURCE_HASH = "
|
|
114
|
+
/* _JS_SOURCE_HASH = "1db9e76c42f6bf2b1ce3613626d8046635b0a8a88b5abfa1ae1ea2a0410433c4"; */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"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";
|
|
2
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
3
|
return (mod && mod.__esModule && mod.default) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
@@ -265,7 +265,7 @@ function assertValidRemoteConfig(config) {
|
|
|
265
265
|
if (storeIdentity(a) !== storeIdentity(b))
|
|
266
266
|
continue;
|
|
267
267
|
if (a.validWindow[0] < b.validWindow[1] && b.validWindow[0] < a.validWindow[1]) {
|
|
268
|
-
throw new Error(`The name ${JSON.stringify(a.name)} is
|
|
268
|
+
throw new Error(`Store name reused with conflicting configurations. The name ${JSON.stringify(a.name)} is used by multiple sources at the same time:\n ${JSON.stringify(a)}\n ${JSON.stringify(b)}\nA name is one store - one folder, one index - so it can only be configured one way at a time. Give them non-overlapping valid windows, or different names if they are meant to be different storage.`);
|
|
269
269
|
}
|
|
270
270
|
}
|
|
271
271
|
}
|
|
@@ -320,5 +320,5 @@ function serializeRemoteConfig(config) {
|
|
|
320
320
|
return Buffer.from(JSON.stringify(config, undefined, 4));
|
|
321
321
|
}
|
|
322
322
|
exports.serializeRemoteConfig = serializeRemoteConfig;
|
|
323
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlQ29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicmVtb3RlQ29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQUFnRDtBQUNoRCxtREFBd0Q7QUFDeEQsdUVBQStEO0FBQy9ELDBEQUFpQztBQUNqQyw0Q0FBZ0s7QUFDaEssNkNBQXFEO0FBRXJELElBQUEsc0JBQU8sRUFBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUVuRCxzU0FBc1M7QUFFelIsUUFBQSxZQUFZLEdBQUcsNkJBQTZCLENBQUM7QUFDMUQsTUFBTSxjQUFjLEdBQUcsR0FBRyxHQUFHLG9CQUFZLENBQUM7QUFFMUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFFM0Msb0xBQW9MO0FBQ3BMLFNBQWdCLGtCQUFrQixDQUFDLEdBQVc7SUFDMUMsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQywwQkFBYyxDQUFDLENBQUM7SUFDeEMsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDbkMsSUFBSSxLQUFLLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLDBCQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMvRSxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzdCLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckIsQ0FBQztBQU5ELGdEQU1DO0FBRUQsd0dBQXdHO0FBQ3hHLFNBQWdCLFFBQVEsQ0FBQyxHQUFXO0lBQ2hDLElBQUksUUFBUSxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLElBQUksUUFBUSxLQUFLLFNBQVM7UUFBRSxPQUFPLFFBQVEsQ0FBQztJQUM1Qyx3RkFBd0Y7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LEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwRyxDQUFDO0lBQ0QsSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQzFFLE1BQU0sSUFBSSxLQUFLLENBQUMsNERBQTRELElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0RyxDQUFDO0lBQ0QsT0FBTyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBWkQsNENBWUM7QUFFRCxTQUFnQixxQkFBcUIsQ0FBQyxNQUFvQjtJQUN0RCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUZELHNEQUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc29ydCB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL21pc2NcIjtcbmltcG9ydCB7IGdldEJ1ZmZlckludCB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL2JpdHNcIjtcbmltcG9ydCB7IHNldEZsYWcgfSBmcm9tIFwic29ja2V0LWZ1bmN0aW9uL3JlcXVpcmUvY29tcGlsZUZsYWdzXCI7XG5pbXBvcnQganNTaGEyNTYgZnJvbSBcImpzLXNoYTI1NlwiO1xuaW1wb3J0IHsgUmVtb3RlQ29uZmlnLCBSZW1vdGVDb25maWdCYXNlLCBTb3VyY2VDb25maWcsIEFyY2hpdmVGaWxlSW5mbywgQ2hhbmdlc0FmdGVyQ29uZmlnLCBGVUxMX1ZBTElEX1dJTkRPVywgRlVMTF9ST1VURSwgVkFSSUFCTEVfU0hBUkQgfSBmcm9tIFwiLi4vSUFyY2hpdmVzXCI7XG5pbXBvcnQgeyBhc3NlcnRWYWxpZFNvdXJjZU5hbWUgfSBmcm9tIFwiLi92YWxpZGF0aW9uXCI7XG5cbnNldEZsYWcocmVxdWlyZSwgXCJqcy1zaGEyNTZcIiwgXCJhbGxvd2NsaWVudFwiLCB0cnVlKTtcblxuLy8gUGFyc2luZyAvIG5vcm1hbGl6YXRpb24gb2YgUmVtb3RlQ29uZmlnIChzZWUgSUFyY2hpdmVzLnRzKS4gRXZlcnkgYnVja2V0IHN0b3JlcyBpdHMgb3duIGNvbmZpZ3VyYXRpb24gKGEgUmVtb3RlQ29uZmlnKSBpbnNpZGUgaXRzZWxmLCBhdCBST1VUSU5HX0ZJTEUuIFdyaXRpbmcgdGhhdCBmaWxlIGNyZWF0ZXMgdGhlIGJ1Y2tldCAvIHJlY29uZmlndXJlcyBpdCAoc2VlIHN0b3JhZ2VTZXJ2ZXJTdGF0ZS50cyk7IGNsaWVudHMgcmVjb25jaWxlIGl0IGJ5IHZlcnNpb24gKHNlZSBjcmVhdGVBcmNoaXZlcy50cykuXG5cbmV4cG9ydCBjb25zdCBST1VUSU5HX0ZJTEUgPSBcInN0b3JhZ2Uvc3RvcmFnZXJvdXRpbmcuanNvblwiO1xuY29uc3QgUk9VVElOR19TVUZGSVggPSBcIi9cIiArIFJPVVRJTkdfRklMRTtcblxuY29uc3QgUk9VVEVfUFJFQ0lTSU9OID0gMTAwMCAqIDEwMDAgKiAxMDAwO1xuXG4vKiogVGhlIHZhcmlhYmxlLXNoYXJkIHJvdXRlIG92ZXJyaWRlIGVtYmVkZGVkIGluIHRoZSBrZXkgKFwiPHNlbnRpbmVsPl88dmFsdWU+XCIsIHNlZSBWQVJJQUJMRV9TSEFSRCksIG9yIHVuZGVmaW5lZCB3aGVuIHRoZSBrZXkgaGFzIG5vIHNlbnRpbmVsIG9yIHRoZSBzZW50aW5lbCBoYXMgbm8gdmFsdWUgeWV0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVmFyaWFibGVSb3V0ZShrZXk6IHN0cmluZyk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IGluZGV4ID0ga2V5LmluZGV4T2YoVkFSSUFCTEVfU0hBUkQpO1xuICAgIGlmIChpbmRleCA9PT0gLTEpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgbGV0IG1hdGNoID0gL15fKFxcZCsoPzpcXC5cXGQrKT8pLy5leGVjKGtleS5zbGljZShpbmRleCArIFZBUklBQkxFX1NIQVJELmxlbmd0aCkpO1xuICAgIGlmICghbWF0Y2gpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuICttYXRjaFsxXTtcbn1cblxuLyoqIFdoZXJlIGEga2V5IHJvdXRlcyBpbiBbMCwgMSkuIEEgbWF0ZXJpYWxpemVkIHZhcmlhYmxlLXNoYXJkIHN1ZmZpeCBjb21wbGV0ZWx5IG92ZXJyaWRlcyB0aGUgaGFzaC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb3V0ZShrZXk6IHN0cmluZyk6IG51bWJlciB7XG4gICAgbGV0IG92ZXJyaWRlID0gcGFyc2VWYXJpYWJsZVJvdXRlKGtleSk7XG4gICAgaWYgKG92ZXJyaWRlICE9PSB1bmRlZmluZWQpIHJldHVybiBvdmVycmlkZTtcbiAgICAvLyBQdXJlIEpTLCBzbyByb3V0aW5nIHdvcmtzIGNsaWVudHNpZGUgdG9vIChub2RlJ3MgY3J5cHRvIGhhc2hpbmcgaXMgdW5hdmFpbGFibGUgdGhlcmUpXG4gICAgbGV0IGhhc2ggPSBnZXRCdWZmZXJJbnQoQnVmZmVyLmZyb20oanNTaGEyNTYuc2hhMjU2LmFycmF5KGtleSkpKTtcbiAgICByZXR1cm4gaGFzaCAlIFJPVVRFX1BSRUNJU0lPTiAvIFJPVVRFX1BSRUNJU0lPTjtcbn1cblxuLyoqIFRoZSBpbi1tZW1vcnkgZ2V0Q2hhbmdlc0FmdGVyMiBlbXVsYXRpb24sIGZvciBiYWNrZW5kcyB3aXRob3V0IGEgbmF0aXZlIGNoYW5nZSBmZWVkOiBhIGZ1bGwgbGlzdGluZyBmaWx0ZXJlZCBkb3duIHRvIGZpbGVzIHdyaXR0ZW4gYWZ0ZXIgY29uZmlnLnRpbWUgd2hvc2Uga2V5cyByb3V0ZSBpbnRvIGNvbmZpZy5yb3V0ZXMuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyQ2hhbmdlcyhmaWxlczogQXJjaGl2ZUZpbGVJbmZvW10sIGNvbmZpZzogQ2hhbmdlc0FmdGVyQ29uZmlnKTogQXJjaGl2ZUZpbGVJbmZvW10ge1xuICAgIHJldHVybiBmaWxlcy5maWx0ZXIoZmlsZSA9PiB7XG4gICAgICAgIGlmIChmaWxlLmNyZWF0ZVRpbWUgPD0gY29uZmlnLnRpbWUpIHJldHVybiBmYWxzZTtcbiAgICAgICAgbGV0IHJvdXRlcyA9IGNvbmZpZy5yb3V0ZXM7XG4gICAgICAgIGlmIChyb3V0ZXMgJiYgIXJvdXRlcy5zb21lKHJvdXRlID0+IHJvdXRlQ29udGFpbnMocm91dGUsIGdldFJvdXRlKGZpbGUucGF0aCkpKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbn1cblxuLy8gUm91dGUgcmFuZ2VzIGFyZSBbc3RhcnQsIGVuZCkgLSBpbmNsdXNpdmUgc3RhcnQsIGV4Y2x1c2l2ZSBlbmRcbmV4cG9ydCBmdW5jdGlvbiByb3V0ZUNvbnRhaW5zKHJvdXRlOiBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkLCB2YWx1ZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgaWYgKCFyb3V0ZSkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIHJvdXRlWzBdIDw9IHZhbHVlICYmIHZhbHVlIDwgcm91dGVbMV07XG59XG5leHBvcnQgZnVuY3Rpb24gcm91dGVzT3ZlcmxhcChhOiBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkLCBiOiBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgbGV0IFthU3RhcnQsIGFFbmRdID0gYSB8fCBGVUxMX1JPVVRFO1xuICAgIGxldCBbYlN0YXJ0LCBiRW5kXSA9IGIgfHwgRlVMTF9ST1VURTtcbiAgICByZXR1cm4gYVN0YXJ0IDwgYkVuZCAmJiBiU3RhcnQgPCBhRW5kO1xufVxuLyoqIFRoZSBvdmVybGFwIG9mIHR3byByb3V0ZSByYW5nZXMsIG9yIHVuZGVmaW5lZCB3aGVuIHRoZXkgZG9uJ3Qgb3ZlcmxhcC4gKi9cbmV4cG9ydCBmdW5jdGlvbiByb3V0ZUludGVyc2VjdGlvbihhOiBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkLCBiOiBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkKTogW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IFthU3RhcnQsIGFFbmRdID0gYSB8fCBGVUxMX1JPVVRFO1xuICAgIGxldCBbYlN0YXJ0LCBiRW5kXSA9IGIgfHwgRlVMTF9ST1VURTtcbiAgICBsZXQgc3RhcnQgPSBNYXRoLm1heChhU3RhcnQsIGJTdGFydCk7XG4gICAgbGV0IGVuZCA9IE1hdGgubWluKGFFbmQsIGJFbmQpO1xuICAgIGlmIChzdGFydCA+PSBlbmQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIFtzdGFydCwgZW5kXTtcbn1cblxuLy8gQSBtaXNzaW5nIHZlcnNpb24gY291bnRzIGFzIC0xLCBzbyBhbnkgZXhwbGljaXRseSB2ZXJzaW9uZWQgY29uZmlnIGJlYXRzIGFuIHVudmVyc2lvbmVkIG9uZVxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbmZpZ1ZlcnNpb24oY29uZmlnOiBSZW1vdGVDb25maWcpOiBudW1iZXIge1xuICAgIHJldHVybiBjb25maWcudmVyc2lvbiA/PyAtMTtcbn1cblxuLyoqIFN0cmlwcyB0aGUgcm91dGluZy1maWxlIHN1ZmZpeCwgbGVhdmluZyB0aGUgYnVja2V0J3MgcHVibGljIGJhc2UgVVJMIChmaWxlIHBhdGhzIGFwcGVuZCB0byBpdCkuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QnVja2V0QmFzZVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCF1cmwuZW5kc1dpdGgoUk9VVElOR19TVUZGSVgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgYSBidWNrZXQgcm91dGluZyBVUkwgZW5kaW5nIHdpdGggJHtKU09OLnN0cmluZ2lmeShST1VUSU5HX1NVRkZJWCl9LCB3YXMgJHtKU09OLnN0cmluZ2lmeSh1cmwpfWApO1xuICAgIH1cbiAgICByZXR1cm4gdXJsLnNsaWNlKDAsIC1ST1VUSU5HX1NVRkZJWC5sZW5ndGgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRGaWxlVXJsKGJhc2VVcmw6IHN0cmluZywgZmlsZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGJhc2VVcmwgKyBcIi9cIiArIGZpbGVQYXRoLnNwbGl0KFwiL1wiKS5tYXAoZW5jb2RlVVJJQ29tcG9uZW50KS5qb2luKFwiL1wiKTtcbn1cblxuLy8gRXg6IGh0dHBzOi8vc3RvcmFnZTIudmlkZ3JpZHdlYi5jb206NDQ0NS9maWxlL2V4YW1wbGVhY2NvdW50L2V4YW1wbGVidWNrZXQvc3RvcmFnZS9zdG9yYWdlcm91dGluZy5qc29uXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VIb3N0ZWRVcmwodXJsOiBzdHJpbmcpOiB7IGFkZHJlc3M6IHN0cmluZzsgcG9ydDogbnVtYmVyOyBhY2NvdW50OiBzdHJpbmc7IGJ1Y2tldE5hbWU6IHN0cmluZyB9IHtcbiAgICBsZXQgYmFzZSA9IGdldEJ1Y2tldEJhc2VVcmwodXJsKTtcbiAgICBsZXQgdSA9IG5ldyBVUkwoYmFzZSk7XG4gICAgaWYgKHUucHJvdG9jb2wgIT09IFwiaHR0cHM6XCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTdG9yYWdlIFVSTCBtdXN0IHVzZSBodHRwcywgZ290ICR7SlNPTi5zdHJpbmdpZnkodS5wcm90b2NvbCl9IGluICR7SlNPTi5zdHJpbmdpZnkodXJsKX1gKTtcbiAgICB9XG4gICAgbGV0IHBhcnRzID0gdS5wYXRobmFtZS5zcGxpdChcIi9cIikuZmlsdGVyKHggPT4geCk7XG4gICAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gMyB8fCBwYXJ0c1swXSAhPT0gXCJmaWxlXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhIGhvc3RlZCBidWNrZXQgVVJMIGxpa2UgaHR0cHM6Ly9ob3N0OnBvcnQvZmlsZS88YWNjb3VudD4vPGJ1Y2tldE5hbWU+JHtST1VUSU5HX1NVRkZJWH0sIHdhcyAke0pTT04uc3RyaW5naWZ5KHVybCl9YCk7XG4gICAgfVxuICAgIHJldHVybiB7IGFkZHJlc3M6IHUuaG9zdG5hbWUsIHBvcnQ6ICt1LnBvcnQgfHwgNDQzLCBhY2NvdW50OiBkZWNvZGVVUklDb21wb25lbnQocGFydHNbMV0pLCBidWNrZXROYW1lOiBkZWNvZGVVUklDb21wb25lbnQocGFydHNbMl0pIH07XG59XG5cbi8vIEV4OiBodHRwczovL2YwMDIuYmFja2JsYXplYjIuY29tL2ZpbGUvcXVlcnlzdWJ0ZXN0LWNvbS1wdWJsaWMtaW1tdXRhYmxlL3N0b3JhZ2Uvc3RvcmFnZXJvdXRpbmcuanNvblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQmFja2JsYXplVXJsKHVybDogc3RyaW5nKTogeyBidWNrZXROYW1lOiBzdHJpbmcgfSB7XG4gICAgbGV0IGJhc2UgPSBnZXRCdWNrZXRCYXNlVXJsKHVybCk7XG4gICAgbGV0IHUgPSBuZXcgVVJMKGJhc2UpO1xuICAgIGxldCBwYXJ0cyA9IHUucGF0aG5hbWUuc3BsaXQoXCIvXCIpLmZpbHRlcih4ID0+IHgpO1xuICAgIGlmIChwYXJ0cy5sZW5ndGggIT09IDIgfHwgcGFydHNbMF0gIT09IFwiZmlsZVwiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgYSBiYWNrYmxhemUgYnVja2V0IFVSTCBsaWtlIGh0dHBzOi8vZjAwMi5iYWNrYmxhemViMi5jb20vZmlsZS88YnVja2V0TmFtZT4ke1JPVVRJTkdfU1VGRklYfSwgd2FzICR7SlNPTi5zdHJpbmdpZnkodXJsKX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgYnVja2V0TmFtZTogZGVjb2RlVVJJQ29tcG9uZW50KHBhcnRzWzFdKSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZUhvc3RlZFVybFBvcnQodXJsOiBzdHJpbmcsIHBvcnQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgbGV0IHUgPSBuZXcgVVJMKHVybCk7XG4gICAgdS5wb3J0ID0gU3RyaW5nKHBvcnQpO1xuICAgIHJldHVybiB1LnRvU3RyaW5nKCk7XG59XG5cbi8qKlxuICogUHV0cyBhIHNvdXJjZSBpbnRvIHRoZSBzaGFwZSB0aGUgY29kZSBleHBlY3RzLiBJdCBkb2VzIE5PVCBqdWRnZSBpdDogdGhpcyBydW5zIGV2ZXJ5IHRpbWUgYSBjb25maWdcbiAqIGlzIFJFQUQsIGFuZCBhIGNvbmZpZyB0aGF0IGlzIGFscmVhZHkgb24gZGlzayBoYXMgdG8ga2VlcCB3b3JraW5nIC0gYSBzZXJ2ZXIgdGhhdCBjYW5ub3QgcGFyc2UgaXRzXG4gKiBvd24gcm91dGluZyBmaWxlIGlzIGEgc2VydmVyIHRoYXQgY2Fubm90IHNlcnZlLCBhbmQgaXQgd291bGQgc3RheSB0aGF0IHdheSBmb3JldmVyLiBBbnl0aGluZ1xuICogbWlzc2luZyBvciB1bnVzYWJsZSBpcyBmaWxsZWQgaW4gd2l0aCB0aGUgc2FmZXN0IGVxdWl2YWxlbnQgaW5zdGVhZCwgbG91ZGx5IHdoZXJlIGl0IG1hdHRlcnMuXG4gKlxuICogSnVkZ2luZyBoYXBwZW5zIG9uIHRoZSB3YXkgSU4sIGluIGFzc2VydFZhbGlkUmVtb3RlQ29uZmlnLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplU291cmNlKHNvdXJjZTogUmVtb3RlQ29uZmlnQmFzZSk6IFNvdXJjZUNvbmZpZyB7XG4gICAgaWYgKHR5cGVvZiBzb3VyY2UgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgbGV0IG5vcm1hbGl6ZWQgPSB7IC4uLnNvdXJjZSB9O1xuICAgICAgICAvLyBDb25maWdzIHdyaXR0ZW4gYmVmb3JlIG5hbWVzIGV4aXN0ZWQgaGF2ZSBub25lLCBhbmQgYSBuYW1lIHRoYXQgY291bGQgbm90IGJlIGEgZm9sZGVyIGNhbm5vdCBiZSB1c2VkIGFzIG9uZS4gQm90aCBnZXQgdGhlIGRlcml2ZWQgbmFtZTogZGV0ZXJtaW5pc3RpYywgc28gZXZlcnkgc2VydmVyIHBpY2tzIHRoZSBzYW1lIG9uZSBmb3IgdGhlIHNhbWUgZW50cnkuXG4gICAgICAgIGlmICghaXNVc2FibGVTb3VyY2VOYW1lKG5vcm1hbGl6ZWQubmFtZSkpIHtcbiAgICAgICAgICAgIGxldCBkZXJpdmVkID0gZGVyaXZlZFNvdXJjZU5hbWUobm9ybWFsaXplZCk7XG4gICAgICAgICAgICBpZiAobm9ybWFsaXplZC5uYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBTb3VyY2UgbmFtZSAke0pTT04uc3RyaW5naWZ5KG5vcm1hbGl6ZWQubmFtZSl9IGluIGEgcm91dGluZyBjb25maWcgY2Fubm90IGJlIHVzZWQgYXMgYSBmb2xkZXIgbmFtZSwgc28gdGhpcyBlbnRyeSBpcyBiZWluZyByZWFkIGFzICR7SlNPTi5zdHJpbmdpZnkoZGVyaXZlZCl9OiAke0pTT04uc3RyaW5naWZ5KHNvdXJjZSkuc2xpY2UoMCwgNTAwKX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5vcm1hbGl6ZWQubmFtZSA9IGRlcml2ZWQ7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHdpbmRvdyA9IG5vcm1hbGl6ZWQudmFsaWRXaW5kb3c7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh3aW5kb3cpIHx8IHdpbmRvdy5sZW5ndGggIT09IDIgfHwgIXdpbmRvdy5ldmVyeSh4ID0+IHR5cGVvZiB4ID09PSBcIm51bWJlclwiKSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgU291cmNlICR7SlNPTi5zdHJpbmdpZnkobm9ybWFsaXplZC5uYW1lKX0gaGFzIG5vIHVzYWJsZSB2YWxpZFdpbmRvdyAoJHtKU09OLnN0cmluZ2lmeSh3aW5kb3cpfSksIHJlYWRpbmcgaXQgYXMgYWx3YXlzIHZhbGlkOiAke0pTT04uc3RyaW5naWZ5KHNvdXJjZSkuc2xpY2UoMCwgNTAwKX1gKTtcbiAgICAgICAgICAgIG5vcm1hbGl6ZWQudmFsaWRXaW5kb3cgPSBGVUxMX1ZBTElEX1dJTkRPVztcbiAgICAgICAgfVxuICAgICAgICBsZXQgcm91dGUgPSBub3JtYWxpemVkLnJvdXRlO1xuICAgICAgICBpZiAocm91dGUgIT09IHVuZGVmaW5lZCAmJiAhaXNVc2FibGVSb3V0ZShyb3V0ZSkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFNvdXJjZSAke0pTT04uc3RyaW5naWZ5KG5vcm1hbGl6ZWQubmFtZSl9IGhhcyBhbiB1bnVzYWJsZSByb3V0ZSAoJHtKU09OLnN0cmluZ2lmeShyb3V0ZSl9KSwgcmVhZGluZyBpdCBhcyB0aGUgd2hvbGUga2V5IHNwYWNlOiAke0pTT04uc3RyaW5naWZ5KHNvdXJjZSkuc2xpY2UoMCwgNTAwKX1gKTtcbiAgICAgICAgICAgIG5vcm1hbGl6ZWQucm91dGUgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWQ7XG4gICAgfVxuICAgIGxldCBob3N0bmFtZSA9IG5ldyBVUkwoc291cmNlKS5ob3N0bmFtZTtcbiAgICBpZiAoaG9zdG5hbWUuZW5kc1dpdGgoXCIuYmFja2JsYXplYjIuY29tXCIpKSB7XG4gICAgICAgIC8vIFZhbGlkYXRlcyB0aGUgVVJMICh0aHJvd3Mgb24gbWFsZm9ybWVkKSBiZWZvcmUgaXQncyBzdG9yZWQ7IHRoZSBidWNrZXQgbmFtZSBpcyByZWFkIGJhY2sgb3V0IG9mIHRoZSBVUkwgYXQgdXNlIHNpdGVzLCBuZXZlciBzdG9yZWQgb24gdGhlIGNvbmZpZy5cbiAgICAgICAgbGV0IHBhcnNlZCA9IHBhcnNlQmFja2JsYXplVXJsKHNvdXJjZSk7XG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwiYmFja2JsYXplXCIsIHVybDogc291cmNlLCBuYW1lOiBzYW5pdGl6ZVNvdXJjZU5hbWUocGFyc2VkLmJ1Y2tldE5hbWUpLCB2YWxpZFdpbmRvdzogRlVMTF9WQUxJRF9XSU5ET1csIHB1YmxpYzogdHJ1ZSB9O1xuICAgIH1cbiAgICBsZXQgcGFyc2VkID0gcGFyc2VIb3N0ZWRVcmwoc291cmNlKTtcbiAgICByZXR1cm4geyB0eXBlOiBcInJlbW90ZVwiLCB1cmw6IHNvdXJjZSwgbmFtZTogc2FuaXRpemVTb3VyY2VOYW1lKGAke3BhcnNlZC5hZGRyZXNzfS0ke3BhcnNlZC5wb3J0fWApLCB2YWxpZFdpbmRvdzogRlVMTF9WQUxJRF9XSU5ET1csIHB1YmxpYzogdHJ1ZSB9O1xufVxuXG5mdW5jdGlvbiBpc1VzYWJsZVNvdXJjZU5hbWUobmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgaWYgKCFuYW1lKSByZXR1cm4gZmFsc2U7XG4gICAgdHJ5IHtcbiAgICAgICAgYXNzZXJ0VmFsaWRTb3VyY2VOYW1lKG5hbWUpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gaXNVc2FibGVSb3V0ZShyb3V0ZTogW251bWJlciwgbnVtYmVyXSk6IGJvb2xlYW4ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShyb3V0ZSkgfHwgcm91dGUubGVuZ3RoICE9PSAyIHx8ICFyb3V0ZS5ldmVyeSh4ID0+IHR5cGVvZiB4ID09PSBcIm51bWJlclwiKSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiByb3V0ZVswXSA+PSAwICYmIHJvdXRlWzFdIDw9IDEgJiYgcm91dGVbMF0gPCByb3V0ZVsxXTtcbn1cblxuLyoqIFRoZSBuYW1lIGFuIGVudHJ5IGdldHMgd2hlbiBpdCBoYXMgbm8gdXNhYmxlIG9uZSBvZiBpdHMgb3duOiB0aGUgZW5kcG9pbnQgaXQgcG9pbnRzIGF0LCBwbHVzIGl0cyByb3V0ZSB3aGVuIGl0IGhhcyBvbmUgLSBzbyBlbnRyaWVzIHRoYXQgd2VyZSBkaXN0aW5jdCBzdG9yYWdlIGJlZm9yZSBuYW1lcyBleGlzdGVkIHN0YXkgZGlzdGluY3Qgbm93LiAqL1xuZnVuY3Rpb24gZGVyaXZlZFNvdXJjZU5hbWUoc291cmNlOiBTb3VyY2VDb25maWcpOiBzdHJpbmcge1xuICAgIGxldCBlbmRwb2ludCA9IHNvdXJjZS51cmw7XG4gICAgaWYgKHNvdXJjZS50eXBlID09PSBcInJlbW90ZVwiKSB7XG4gICAgICAgIGxldCBwYXJzZWQgPSBwYXJzZUhvc3RlZFVybChzb3VyY2UudXJsKTtcbiAgICAgICAgZW5kcG9pbnQgPSBgJHtwYXJzZWQuYWRkcmVzc30tJHtwYXJzZWQucG9ydH1gO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGVuZHBvaW50ID0gcGFyc2VCYWNrYmxhemVVcmwoc291cmNlLnVybCkuYnVja2V0TmFtZTtcbiAgICB9XG4gICAgbGV0IHJvdXRlID0gc291cmNlLnJvdXRlO1xuICAgIGlmIChyb3V0ZSAmJiBpc1VzYWJsZVJvdXRlKHJvdXRlKSAmJiAhKHJvdXRlWzBdID09PSBGVUxMX1JPVVRFWzBdICYmIHJvdXRlWzFdID09PSBGVUxMX1JPVVRFWzFdKSkge1xuICAgICAgICBlbmRwb2ludCArPSBgLXJvdXRlLSR7cm91dGVbMF19LSR7cm91dGVbMV19YDtcbiAgICB9XG4gICAgcmV0dXJuIHNhbml0aXplU291cmNlTmFtZShlbmRwb2ludCk7XG59XG5cbi8qKiBBIG5hbWUgYnVpbHQgZnJvbSBzb21ldGhpbmcgdGhhdCB3YXMgbmV2ZXIgbWVhbnQgdG8gYmUgb25lIChhIGhvc3QsIGEgYnVja2V0KSwgbWFkZSB1c2FibGUgYXMgYSBmb2xkZXIuIFBlcmlvZHMgc3Vydml2ZSwgc28gaXQgc3RpbGwgcmVhZHMgYXMgd2hhdCBpdCBjYW1lIGZyb20uICovXG5mdW5jdGlvbiBzYW5pdGl6ZVNvdXJjZU5hbWUoZnJvbTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgbmFtZSA9IGZyb20ucmVwbGFjZSgvW15cXHcuLV0vZywgXCItXCIpLnNsaWNlKDAsIDY0KTtcbiAgICBpZiAoIWlzVXNhYmxlU291cmNlTmFtZShuYW1lKSkge1xuICAgICAgICAvLyBPbmx5IHJlYWNoYWJsZSBmcm9tIHNvbWV0aGluZyB3aXRoIG5vIHVzYWJsZSBjaGFyYWN0ZXJzIGF0IGFsbDsgdGhlIG5hbWUgc3RpbGwgaGFzIHRvIGV4aXN0XG4gICAgICAgIHJldHVybiBcInNvdXJjZVwiO1xuICAgIH1cbiAgICByZXR1cm4gbmFtZTtcbn1cblxuLyoqIEhvdyBmYXIgdXAgZnJvbSAwIHRoZSBzb3VyY2VzJyByb3V0ZXMgcmVhY2ggd2l0aG91dCBhIGdhcCAoMSBtZWFucyB0aGUgd2hvbGUga2V5IHNwYWNlKS4gKi9cbmZ1bmN0aW9uIGdldFJvdXRlQ292ZXJhZ2Uoc291cmNlczogU291cmNlQ29uZmlnW10pOiBudW1iZXIge1xuICAgIGxldCByb3V0ZXMgPSBzb3VyY2VzLm1hcCh4ID0+IHgucm91dGUgfHwgRlVMTF9ST1VURSk7XG4gICAgc29ydChyb3V0ZXMsIHggPT4geFswXSk7XG4gICAgbGV0IGNvdmVyZWQgPSAwO1xuICAgIGZvciAobGV0IHJvdXRlIG9mIHJvdXRlcykge1xuICAgICAgICBpZiAocm91dGVbMF0gPiBjb3ZlcmVkKSBicmVhaztcbiAgICAgICAgY292ZXJlZCA9IE1hdGgubWF4KGNvdmVyZWQsIHJvdXRlWzFdKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvdmVyZWQ7XG59XG5cbi8qKiBQdXRzIGEgd2hvbGUgY29uZmlnIGludG8gdGhlIHNoYXBlIHRoZSBjb2RlIGV4cGVjdHMsIHdpdGhvdXQganVkZ2luZyBpdCAtIHNlZSBub3JtYWxpemVTb3VyY2UsIGFuZCBzZWUgYXNzZXJ0VmFsaWRSZW1vdGVDb25maWcgZm9yIHRoZSBqdWRnaW5nLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVJlbW90ZUNvbmZpZyhjb25maWc6IFJlbW90ZUNvbmZpZyB8IFJlbW90ZUNvbmZpZ0Jhc2UpOiBSZW1vdGVDb25maWcge1xuICAgIGlmICh0eXBlb2YgY29uZmlnICE9PSBcInN0cmluZ1wiICYmIFwic291cmNlc1wiIGluIGNvbmZpZykge1xuICAgICAgICByZXR1cm4geyB2ZXJzaW9uOiBjb25maWcudmVyc2lvbiwgc291cmNlczogY29uZmlnLnNvdXJjZXMubWFwKG5vcm1hbGl6ZVNvdXJjZSkgfTtcbiAgICB9XG4gICAgcmV0dXJuIHsgc291cmNlczogW25vcm1hbGl6ZVNvdXJjZShjb25maWcpXSB9O1xufVxuXG4vKipcbiAqIFdoZXRoZXIgYSBjb25maWcgbWF5IGJlIFdSSVRURU4uIEV2ZXJ5dGhpbmcgaGVyZSBpcyBhIHJ1bGUgYWJvdXQgdGhlIGNvbmZpZyBhcyBhIHdob2xlLCB3aGljaCBpc1xuICogZXhhY3RseSB3aHkgaXQgY2Fubm90IHJ1biBvbiByZWFkOiBhIGNvbmZpZyB0aGF0IGlzIGFscmVhZHkgc3RvcmVkIHNvbWV3aGVyZSBoYXMgdG8ga2VlcCBiZWluZ1xuICogcmVhZGFibGUsIG9yIGEgc2VydmVyIHRoYXQgb25jZSBhY2NlcHRlZCBhIGJhZCBvbmUgY291bGQgbmV2ZXIgc3RhcnQgYWdhaW4uIFJlamVjdGluZyBpdCBhdCB0aGVcbiAqIHBvaW50IGl0IGlzIGludHJvZHVjZWQgaXMgd2hhdCBrZWVwcyBhIGJhZCBvbmUgZnJvbSBldmVyIGJlaW5nIHN0b3JlZCBpbiB0aGUgZmlyc3QgcGxhY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRWYWxpZFJlbW90ZUNvbmZpZyhjb25maWc6IFJlbW90ZUNvbmZpZyk6IHZvaWQge1xuICAgIGxldCBzb3VyY2VzID0gY29uZmlnLnNvdXJjZXMubWFwKG5vcm1hbGl6ZVNvdXJjZSk7XG4gICAgLy8gTWl4ZWQgaW1tdXRhYmlsaXR5IG1ha2VzIG5vIHNlbnNlIEFNT05HIHNvdXJjZXMgdmFsaWQgYXQgdGhlIHNhbWUgdGltZTogYSBtdXRhYmxlIHNvdXJjZSB3b3VsZCBhY2NlcHQgb3ZlcndyaXRlcyB0aGF0IGl0cyBpbW11dGFibGUgcGVlcnMgcmVmdXNlIHRvIHN5bmNocm9uaXplLCBmb3JraW5nIHRoZWlyIGNvbnRlbnRzLiBTb3VyY2VzIGFyZSBncm91cGVkIGJ5IHRyYW5zaXRpdmVseSBvdmVybGFwcGluZyB2YWxpZCB3aW5kb3dzIChhYnNvcmIgZXZlcnl0aGluZyBvdmVybGFwcGluZyB0aGUgZ3JvdXAsIGV4dGVuZCB0aGUgZ3JvdXAncyBlbmQsIHJlcGVhdCkgLSBhIHNvZnQgY2hlY2sgdGhhdCBpcyBjb3JyZWN0IGFzIGxvbmcgYXMgd2luZG93cyBoYXZlIGNsZWFuIGJyZWFrcyAoYSBncm91cCBlbmRzIGV4YWN0bHkgd2hlcmUgdGhlIG5leHQgYmVnaW5zKS5cbiAgICBsZXQgc29ydGVkID0gWy4uLnNvdXJjZXNdO1xuICAgIHNvcnQoc29ydGVkLCB4ID0+IHgudmFsaWRXaW5kb3dbMF0pO1xuICAgIGxldCBncm91cDogdHlwZW9mIHNvdXJjZXMgPSBbXTtcbiAgICBsZXQgZ3JvdXBFbmQgPSAwO1xuICAgIGZ1bmN0aW9uIGNoZWNrR3JvdXAoKSB7XG4gICAgICAgIGxldCBpbW11dGFibGVDb3VudCA9IGdyb3VwLmZpbHRlcih4ID0+IHguaW1tdXRhYmxlKS5sZW5ndGg7XG4gICAgICAgIGlmIChpbW11dGFibGVDb3VudCAmJiBpbW11dGFibGVDb3VudCAhPT0gZ3JvdXAubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNvdXJjZXMgd2l0aCBvdmVybGFwcGluZyB2YWxpZCB3aW5kb3dzIG11c3QgYWdyZWUgb24gaW1tdXRhYmlsaXR5OiAke2ltbXV0YWJsZUNvdW50fSBvZiAke2dyb3VwLmxlbmd0aH0gYXJlIGltbXV0YWJsZS4gU291cmNlczogJHtKU09OLnN0cmluZ2lmeShncm91cC5tYXAoeCA9PiAoeyB1cmw6IHgudXJsLCB2YWxpZFdpbmRvdzogeC52YWxpZFdpbmRvdywgaW1tdXRhYmxlOiAhIXguaW1tdXRhYmxlIH0pKSl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVGhlIHNvdXJjZXMgdmFsaWQgYXQgYW55IGluc3RhbnQgbXVzdCBjb3ZlciB0aGUgd2hvbGUga2V5IHNwYWNlLCBvciBrZXlzIHJvdXRpbmcgaW50byBhIGdhcCBjb3VsZCBuZXZlciBiZSByZWFkXG4gICAgICAgIGxldCBjb3ZlcmVkID0gZ2V0Um91dGVDb3ZlcmFnZShncm91cCk7XG4gICAgICAgIGlmIChjb3ZlcmVkIDwgMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTb3VyY2VzIHdpdGggb3ZlcmxhcHBpbmcgdmFsaWQgd2luZG93cyBtdXN0IGNvdmVyIHRoZSBmdWxsIHJvdXRlIHNwYWNlIFswLCAxKTsgY292ZXJhZ2Ugc3RvcHMgYXQgJHtjb3ZlcmVkfS4gU291cmNlczogJHtKU09OLnN0cmluZ2lmeShncm91cC5tYXAoeCA9PiAoeyB1cmw6IHgudXJsLCB2YWxpZFdpbmRvdzogeC52YWxpZFdpbmRvdywgcm91dGU6IHgucm91dGUgfHwgRlVMTF9ST1VURSB9KSkpfWApO1xuICAgICAgICB9XG4gICAgICAgIC8vIEEgc3RvcmUgaXMgTk9UIHJlcXVpcmVkIHRvIGNvdmVyIHRoZSB3aG9sZSBrZXkgc3BhY2Ugb24gaXRzIG93bi4gSXQgb25jZSB3YXMsIGJlY2F1c2UgYSBzdG9yZSB0aGF0IGhvbGRzIGtleXMgb3V0c2lkZSB0aGUgcm91dGUgaXQgc3luY2hyb25pemVzIG5ldmVyIGxlYXJucyBvZiB0aGVpciBkZWxldGlvbnMgYW5kIGV2ZW50dWFsbHkgcmVzdXJyZWN0cyB0aGVtIC0gYnV0IGEgc3RvcmUncyBkYXRhIG5vdyBsaXZlcyB1bmRlciBpdHMgbmFtZSByYXRoZXIgdGhhbiBpdHMgcm91dGUsIGFuZCBhIHNjYW4gb25seSBldmVyIGluZGV4ZXMga2V5cyBpbnNpZGUgdGhlIHJvdXRlIHRoZSBzdG9yZSBpcyBjb25maWd1cmVkIGZvciwgc28ga2V5cyBvdXRzaWRlIGl0IGFyZSBuZXZlciB0YWtlbiBpbnRvIHRoZSBpbmRleCB0aGF0IGNvdWxkIHJlc3VycmVjdCB0aGVtLiBXaGF0IHJlcGxhY2VzIHRoYXQgcnVsZSBpcyB0aGUgbmFtaW5nIGRpc2NpcGxpbmU6IGEgbmFtZSBpcyBvbmUgc3RvcmFnZSwgYW5kIHBvaW50aW5nIGEgbmFtZSBhdCBhIGRpZmZlcmVudCByb3V0ZSBsYXRlciBpcyB3aGF0IHdvdWxkIGhhbmQgaXQga2V5cyBpdCBuZXZlciBzeW5jaHJvbml6ZWQuXG4gICAgfVxuICAgIGZvciAobGV0IHNvdXJjZSBvZiBzb3J0ZWQpIHtcbiAgICAgICAgaWYgKGdyb3VwLmxlbmd0aCAmJiBzb3VyY2UudmFsaWRXaW5kb3dbMF0gPj0gZ3JvdXBFbmQpIHtcbiAgICAgICAgICAgIGNoZWNrR3JvdXAoKTtcbiAgICAgICAgICAgIGdyb3VwID0gW107XG4gICAgICAgIH1cbiAgICAgICAgZ3JvdXAucHVzaChzb3VyY2UpO1xuICAgICAgICBncm91cEVuZCA9IE1hdGgubWF4KGdyb3VwRW5kLCBzb3VyY2UudmFsaWRXaW5kb3dbMV0pO1xuICAgIH1cbiAgICBjaGVja0dyb3VwKCk7XG4gICAgLy8gT05FIGVudHJ5IHBlciBzdG9yZSBhdCBhbnkgaW5zdGFudC4gQSBuYW1lIGlzIGEgc3RvcmUgLSBvbmUgZm9sZGVyLCBvbmUgaW5kZXggLSBzbyB0d28gZW50cmllcyBuYW1pbmcgaXQgYXQgdGhlIHNhbWUgdGltZSB3b3VsZCBiZSB0d28gYW5zd2VycyB0byBcIndoYXQgaXMgdGhpcyBzdG9yZSBjb25maWd1cmVkIHRvIGJlIHJpZ2h0IG5vd1wiLCBhbmQgZXZlcnkgcm91dGUgYW5kIGZsYWcgaXQgcmVhZHMgd291bGQgZGVwZW5kIG9uIHdoaWNoIGVudHJ5IHlvdSBoYXBwZW5lZCB0byBsb29rIGF0LiBOb24tb3ZlcmxhcHBpbmcgd2luZG93cyBhcmUgZmluZSwgYW5kIGFyZSBob3cgYSBzdG9yZSdzIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyBvdmVyIHRpbWUuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3VyY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IHNvdXJjZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgIGxldCBhID0gc291cmNlc1tpXTtcbiAgICAgICAgICAgIGxldCBiID0gc291cmNlc1tqXTtcbiAgICAgICAgICAgIGlmIChzdG9yZUlkZW50aXR5KGEpICE9PSBzdG9yZUlkZW50aXR5KGIpKSBjb250aW51ZTtcbiAgICAgICAgICAgIGlmIChhLnZhbGlkV2luZG93WzBdIDwgYi52YWxpZFdpbmRvd1sxXSAmJiBiLnZhbGlkV2luZG93WzBdIDwgYS52YWxpZFdpbmRvd1sxXSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIG5hbWUgJHtKU09OLnN0cmluZ2lmeShhLm5hbWUpfSBpcyByZXVzZWQgd2l0aCBtdWx0aXBsZSBzb3VyY2UgY29uZmlndXJhdGlvbnMgYXQgdGhlIHNhbWUgdGltZTpcXG4gICAgJHtKU09OLnN0cmluZ2lmeShhKX1cXG4gICAgJHtKU09OLnN0cmluZ2lmeShiKX1cXG5BIG5hbWUgaXMgb25lIHN0b3JlIC0gb25lIGZvbGRlciwgb25lIGluZGV4IC0gc28gaXQgY2FuIG9ubHkgYmUgY29uZmlndXJlZCBvbmUgd2F5IGF0IGEgdGltZS4gR2l2ZSB0aGVtIG5vbi1vdmVybGFwcGluZyB2YWxpZCB3aW5kb3dzLCBvciBkaWZmZXJlbnQgbmFtZXMgaWYgdGhleSBhcmUgbWVhbnQgdG8gYmUgZGlmZmVyZW50IHN0b3JhZ2UuYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKlxuICogVGhlIGlkZW50aXR5IG9mIG9uZSBvZiBhIHN0b3JlJ3MgU09VUkNFIFNMT1RTIC0gd2hpY2ggaXMgdGhlIGVuZHBvaW50IGl0IHRhbGtzIHRvLCBhbmQgbm90IHRoZSBzYW1lXG4gKiBxdWVzdGlvbiBhcyB3aGljaCBzdG9yZSB0aGlzIGlzICh0aGF0IGlzIENvbW1vbkNvbmZpZy5uYW1lKS4gQSBzd2l0Y2hvdmVyJ3MgYWx0ZXJuYXRlIHBvcnQgaXMgYVxuICogZGlzdGluY3Qgc2xvdCBldmVuIHRob3VnaCBpdCBuYW1lcyB0aGUgc2FtZSBzdG9yYWdlLCBiZWNhdXNlIGEgc2xvdCBob2xkcyBhIGNvbm5lY3Rpb24gdG8gYSBwb3J0LlxuICpcbiAqIE9OTFkgdGhlIHR5cGUsIHRoZSB1cmwsIGFuZCB0aGUgaW50ZXJtZWRpYXRlJ3MgYWx0ZXJuYXRlIHBvcnQgYXJlIHBhcnQgb2YgaXQ6IGV2ZXJ5dGhpbmcgZWxzZSBpc1xuICogcG9saWN5IGFib3V0IGhvdyB3ZSBVU0UgdGhlIGVuZHBvaW50LCBhbmQgY2hhbmdpbmcgcG9saWN5IG11c3QgbmV2ZXIgbWFrZSBhIHN0b3JlIGJlbGlldmUgaXQgaXNcbiAqIGxvb2tpbmcgYXQgYSBORVcgc291cmNlIC0gdGhhdCB3b3VsZCBkcm9wIGV2ZXJ5IGluZGV4IGVudHJ5IHRoZSBvbGQgb25lIGhlbGQgYW5kIHJlc2NhbiBpdCBmcm9tXG4gKiBzY3JhdGNoLCBzbyB0aGUgZmlsZXMgaXQgaG9sZHMgZ28gbWlzc2luZyBmcm9tIGxpc3RpbmdzIHVudGlsIHRoZSByZXNjYW4gZmluaXNoZXMsIGZvciBhIGZsYWcgZmxpcC5cbiAqXG4gKiBCdWlsdCBieSBoYW5kIHJhdGhlciB0aGFuIGJ5IHNlcmlhbGl6aW5nIHRoZSBjb25maWcsIHNvIGl0IGNhbm5vdCBjaGFuZ2UganVzdCBiZWNhdXNlIHRoZSByb3V0aW5nXG4gKiBmaWxlIHdhcyB3cml0dGVuIHdpdGggaXRzIGtleXMgaW4gYSBkaWZmZXJlbnQgb3JkZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzb3VyY2VJZGVudGl0eShzb3VyY2VDb25maWc6IFNvdXJjZUNvbmZpZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gICAgaWYgKCFzb3VyY2VDb25maWcpIHJldHVybiBcImRpc2tcIjtcbiAgICByZXR1cm4gYCR7c291cmNlQ29uZmlnLnR5cGV9fCR7c291cmNlQ29uZmlnLnVybH18JHtzb3VyY2VDb25maWcuaW50ZXJtZWRpYXRlIHx8IFwiXCJ9YDtcbn1cblxuLyoqIFdoYXQgYW4gaW5kZXggZW50cnkgcmVjb3JkcyBhcyB0aGUgaG9sZGVyIG9mIGl0cyBieXRlcyAoc2VlIEFyY2hpdmVzU291cmNlLnVybCksIHNvIGl0IG11c3QgbmFtZSB0aGUgZW5kcG9pbnQgRk9SRVZFUi4gQW4gaW50ZXJtZWRpYXRlIGlzIGEgc3dpdGNob3ZlcidzIHRlbXBvcmFyeSBhbHRlcm5hdGUgcG9ydCBvbnRvIGFub3RoZXIgc291cmNlLCBhbmQgdGhhdCBwb3J0IGlzIGdvbmUgZm9yIGdvb2Qgb25jZSBpdHMgd2luZG93IHBhc3NlcyAtIHNvIGl0IGlzIHJlY29yZGVkIGFzIHRoZSBzb3VyY2UgaXQgd2FzIHNwbGl0IG91dCBvZiwgd2hpY2ggaG9sZHMgdGhlIHNhbWUgYnVja2V0IGFuZCBvdXRsaXZlcyBpdC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzb3VyY2VQZXJzaXN0ZW50VXJsKHNvdXJjZUNvbmZpZzogU291cmNlQ29uZmlnIHwgdW5kZWZpbmVkLCBmb2xkZXI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFzb3VyY2VDb25maWcpIHJldHVybiBmb2xkZXI7XG4gICAgcmV0dXJuIHNvdXJjZUNvbmZpZy5pbnRlcm1lZGlhdGUgfHwgc291cmNlQ29uZmlnLnVybDtcbn1cblxuLyoqIFdoaWNoIHN0b3JlIGFuIGVudHJ5IGNvbmZpZ3VyZXM6IGl0cyBuYW1lLCBvbiB0aGUgc2VydmVyIGl0IHBvaW50cyBhdC4gQSBzd2l0Y2hvdmVyJ3MgYWx0ZXJuYXRlIHBvcnQgaXMgdGhlIHNhbWUgc2VydmVyIChzbyBpdCBpcyBjb21wYXJlZCBhZ2FpbnN0IHRoZSBlbnRyeSBpdCB3YXMgc3BsaXQgb3V0IG9mLCB3aG9zZSB3aW5kb3cgaXQgbXVzdCBub3Qgb3ZlcmxhcCk7IGEgZ2VudWluZWx5IGRpZmZlcmVudCBzZXJ2ZXIgd2l0aCB0aGUgc2FtZSBuYW1lIGlzIGEgZGlmZmVyZW50IHN0b3JlLCBvbiBhIGRpZmZlcmVudCBtYWNoaW5lLiAqL1xuZnVuY3Rpb24gc3RvcmVJZGVudGl0eShzb3VyY2U6IFNvdXJjZUNvbmZpZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3NvdXJjZS5pbnRlcm1lZGlhdGUgfHwgc291cmNlLnVybH18JHtzb3VyY2UubmFtZX1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VSb3V0aW5nRGF0YShkYXRhOiBCdWZmZXIpOiBSZW1vdGVDb25maWcge1xuICAgIGxldCB0ZXh0ID0gZGF0YS50b1N0cmluZygpO1xuICAgIGxldCBwYXJzZWQ6IFJlbW90ZUNvbmZpZztcbiAgICB0cnkge1xuICAgICAgICBwYXJzZWQgPSBKU09OLnBhcnNlKHRleHQpIGFzIFJlbW90ZUNvbmZpZztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgUm91dGluZyBjb25maWcgaXMgbm90IHZhbGlkIEpTT04gKCR7U3RyaW5nKGUpfSkuIERhdGE6ICR7dGV4dC5zbGljZSgwLCA1MDApfWApO1xuICAgIH1cbiAgICBpZiAoIXBhcnNlZCB8fCB0eXBlb2YgcGFyc2VkICE9PSBcIm9iamVjdFwiIHx8ICFBcnJheS5pc0FycmF5KHBhcnNlZC5zb3VyY2VzKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFJvdXRpbmcgY29uZmlnIG11c3QgYmUgeyB2ZXJzaW9uPywgc291cmNlczogWy4uLl0gfSwgd2FzICR7dGV4dC5zbGljZSgwLCA1MDApfWApO1xuICAgIH1cbiAgICByZXR1cm4gbm9ybWFsaXplUmVtb3RlQ29uZmlnKHBhcnNlZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVSZW1vdGVDb25maWcoY29uZmlnOiBSZW1vdGVDb25maWcpOiBCdWZmZXIge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeShjb25maWcsIHVuZGVmaW5lZCwgNCkpO1xufVxuIl19
|
|
324
|
-
/* _JS_SOURCE_HASH = "
|
|
323
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlQ29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicmVtb3RlQ29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQUFnRDtBQUNoRCxtREFBd0Q7QUFDeEQsdUVBQStEO0FBQy9ELDBEQUFpQztBQUNqQyw0Q0FBZ0s7QUFDaEssNkNBQXFEO0FBRXJELElBQUEsc0JBQU8sRUFBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUVuRCxzU0FBc1M7QUFFelIsUUFBQSxZQUFZLEdBQUcsNkJBQTZCLENBQUM7QUFDMUQsTUFBTSxjQUFjLEdBQUcsR0FBRyxHQUFHLG9CQUFZLENBQUM7QUFFMUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFFM0Msb0xBQW9MO0FBQ3BMLFNBQWdCLGtCQUFrQixDQUFDLEdBQVc7SUFDMUMsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQywwQkFBYyxDQUFDLENBQUM7SUFDeEMsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDbkMsSUFBSSxLQUFLLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLDBCQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMvRSxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzdCLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckIsQ0FBQztBQU5ELGdEQU1DO0FBRUQsd0dBQXdHO0FBQ3hHLFNBQWdCLFFBQVEsQ0FBQyxHQUFXO0lBQ2hDLElBQUksUUFBUSxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLElBQUksUUFBUSxLQUFLLFNBQVM7UUFBRSxPQUFPLFFBQVEsQ0FBQztJQUM1Qyx3RkFBd0Y7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QUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BHLENBQUM7SUFDRCxJQUFJLENBQUMsTUFBTSxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDMUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw0REFBNEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RHLENBQUM7SUFDRCxPQUFPLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFaRCw0Q0FZQztBQUVELFNBQWdCLHFCQUFxQixDQUFDLE1BQW9CO0lBQ3RELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3RCxDQUFDO0FBRkQsc0RBRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzb3J0IH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvbWlzY1wiO1xuaW1wb3J0IHsgZ2V0QnVmZmVySW50IH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvYml0c1wiO1xuaW1wb3J0IHsgc2V0RmxhZyB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vcmVxdWlyZS9jb21waWxlRmxhZ3NcIjtcbmltcG9ydCBqc1NoYTI1NiBmcm9tIFwianMtc2hhMjU2XCI7XG5pbXBvcnQgeyBSZW1vdGVDb25maWcsIFJlbW90ZUNvbmZpZ0Jhc2UsIFNvdXJjZUNvbmZpZywgQXJjaGl2ZUZpbGVJbmZvLCBDaGFuZ2VzQWZ0ZXJDb25maWcsIEZVTExfVkFMSURfV0lORE9XLCBGVUxMX1JPVVRFLCBWQVJJQUJMRV9TSEFSRCB9IGZyb20gXCIuLi9JQXJjaGl2ZXNcIjtcbmltcG9ydCB7IGFzc2VydFZhbGlkU291cmNlTmFtZSB9IGZyb20gXCIuL3ZhbGlkYXRpb25cIjtcblxuc2V0RmxhZyhyZXF1aXJlLCBcImpzLXNoYTI1NlwiLCBcImFsbG93Y2xpZW50XCIsIHRydWUpO1xuXG4vLyBQYXJzaW5nIC8gbm9ybWFsaXphdGlvbiBvZiBSZW1vdGVDb25maWcgKHNlZSBJQXJjaGl2ZXMudHMpLiBFdmVyeSBidWNrZXQgc3RvcmVzIGl0cyBvd24gY29uZmlndXJhdGlvbiAoYSBSZW1vdGVDb25maWcpIGluc2lkZSBpdHNlbGYsIGF0IFJPVVRJTkdfRklMRS4gV3JpdGluZyB0aGF0IGZpbGUgY3JlYXRlcyB0aGUgYnVja2V0IC8gcmVjb25maWd1cmVzIGl0IChzZWUgc3RvcmFnZVNlcnZlclN0YXRlLnRzKTsgY2xpZW50cyByZWNvbmNpbGUgaXQgYnkgdmVyc2lvbiAoc2VlIGNyZWF0ZUFyY2hpdmVzLnRzKS5cblxuZXhwb3J0IGNvbnN0IFJPVVRJTkdfRklMRSA9IFwic3RvcmFnZS9zdG9yYWdlcm91dGluZy5qc29uXCI7XG5jb25zdCBST1VUSU5HX1NVRkZJWCA9IFwiL1wiICsgUk9VVElOR19GSUxFO1xuXG5jb25zdCBST1VURV9QUkVDSVNJT04gPSAxMDAwICogMTAwMCAqIDEwMDA7XG5cbi8qKiBUaGUgdmFyaWFibGUtc2hhcmQgcm91dGUgb3ZlcnJpZGUgZW1iZWRkZWQgaW4gdGhlIGtleSAoXCI8c2VudGluZWw+Xzx2YWx1ZT5cIiwgc2VlIFZBUklBQkxFX1NIQVJEKSwgb3IgdW5kZWZpbmVkIHdoZW4gdGhlIGtleSBoYXMgbm8gc2VudGluZWwgb3IgdGhlIHNlbnRpbmVsIGhhcyBubyB2YWx1ZSB5ZXQuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VWYXJpYWJsZVJvdXRlKGtleTogc3RyaW5nKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgaW5kZXggPSBrZXkuaW5kZXhPZihWQVJJQUJMRV9TSEFSRCk7XG4gICAgaWYgKGluZGV4ID09PSAtMSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBsZXQgbWF0Y2ggPSAvXl8oXFxkKyg/OlxcLlxcZCspPykvLmV4ZWMoa2V5LnNsaWNlKGluZGV4ICsgVkFSSUFCTEVfU0hBUkQubGVuZ3RoKSk7XG4gICAgaWYgKCFtYXRjaCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gK21hdGNoWzFdO1xufVxuXG4vKiogV2hlcmUgYSBrZXkgcm91dGVzIGluIFswLCAxKS4gQSBtYXRlcmlhbGl6ZWQgdmFyaWFibGUtc2hhcmQgc3VmZml4IGNvbXBsZXRlbHkgb3ZlcnJpZGVzIHRoZSBoYXNoLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJvdXRlKGtleTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBsZXQgb3ZlcnJpZGUgPSBwYXJzZVZhcmlhYmxlUm91dGUoa2V5KTtcbiAgICBpZiAob3ZlcnJpZGUgIT09IHVuZGVmaW5lZCkgcmV0dXJuIG92ZXJyaWRlO1xuICAgIC8vIFB1cmUgSlMsIHNvIHJvdXRpbmcgd29ya3MgY2xpZW50c2lkZSB0b28gKG5vZGUncyBjcnlwdG8gaGFzaGluZyBpcyB1bmF2YWlsYWJsZSB0aGVyZSlcbiAgICBsZXQgaGFzaCA9IGdldEJ1ZmZlckludChCdWZmZXIuZnJvbShqc1NoYTI1Ni5zaGEyNTYuYXJyYXkoa2V5KSkpO1xuICAgIHJldHVybiBoYXNoICUgUk9VVEVfUFJFQ0lTSU9OIC8gUk9VVEVfUFJFQ0lTSU9OO1xufVxuXG4vKiogVGhlIGluLW1lbW9yeSBnZXRDaGFuZ2VzQWZ0ZXIyIGVtdWxhdGlvbiwgZm9yIGJhY2tlbmRzIHdpdGhvdXQgYSBuYXRpdmUgY2hhbmdlIGZlZWQ6IGEgZnVsbCBsaXN0aW5nIGZpbHRlcmVkIGRvd24gdG8gZmlsZXMgd3JpdHRlbiBhZnRlciBjb25maWcudGltZSB3aG9zZSBrZXlzIHJvdXRlIGludG8gY29uZmlnLnJvdXRlcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJDaGFuZ2VzKGZpbGVzOiBBcmNoaXZlRmlsZUluZm9bXSwgY29uZmlnOiBDaGFuZ2VzQWZ0ZXJDb25maWcpOiBBcmNoaXZlRmlsZUluZm9bXSB7XG4gICAgcmV0dXJuIGZpbGVzLmZpbHRlcihmaWxlID0+IHtcbiAgICAgICAgaWYgKGZpbGUuY3JlYXRlVGltZSA8PSBjb25maWcudGltZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBsZXQgcm91dGVzID0gY29uZmlnLnJvdXRlcztcbiAgICAgICAgaWYgKHJvdXRlcyAmJiAhcm91dGVzLnNvbWUocm91dGUgPT4gcm91dGVDb250YWlucyhyb3V0ZSwgZ2V0Um91dGUoZmlsZS5wYXRoKSkpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xufVxuXG4vLyBSb3V0ZSByYW5nZXMgYXJlIFtzdGFydCwgZW5kKSAtIGluY2x1c2l2ZSBzdGFydCwgZXhjbHVzaXZlIGVuZFxuZXhwb3J0IGZ1bmN0aW9uIHJvdXRlQ29udGFpbnMocm91dGU6IFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQsIHZhbHVlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAoIXJvdXRlKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gcm91dGVbMF0gPD0gdmFsdWUgJiYgdmFsdWUgPCByb3V0ZVsxXTtcbn1cbmV4cG9ydCBmdW5jdGlvbiByb3V0ZXNPdmVybGFwKGE6IFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQsIGI6IFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICBsZXQgW2FTdGFydCwgYUVuZF0gPSBhIHx8IEZVTExfUk9VVEU7XG4gICAgbGV0IFtiU3RhcnQsIGJFbmRdID0gYiB8fCBGVUxMX1JPVVRFO1xuICAgIHJldHVybiBhU3RhcnQgPCBiRW5kICYmIGJTdGFydCA8IGFFbmQ7XG59XG4vKiogVGhlIG92ZXJsYXAgb2YgdHdvIHJvdXRlIHJhbmdlcywgb3IgdW5kZWZpbmVkIHdoZW4gdGhleSBkb24ndCBvdmVybGFwLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJvdXRlSW50ZXJzZWN0aW9uKGE6IFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQsIGI6IFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQpOiBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgW2FTdGFydCwgYUVuZF0gPSBhIHx8IEZVTExfUk9VVEU7XG4gICAgbGV0IFtiU3RhcnQsIGJFbmRdID0gYiB8fCBGVUxMX1JPVVRFO1xuICAgIGxldCBzdGFydCA9IE1hdGgubWF4KGFTdGFydCwgYlN0YXJ0KTtcbiAgICBsZXQgZW5kID0gTWF0aC5taW4oYUVuZCwgYkVuZCk7XG4gICAgaWYgKHN0YXJ0ID49IGVuZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gW3N0YXJ0LCBlbmRdO1xufVxuXG4vLyBBIG1pc3NpbmcgdmVyc2lvbiBjb3VudHMgYXMgLTEsIHNvIGFueSBleHBsaWNpdGx5IHZlcnNpb25lZCBjb25maWcgYmVhdHMgYW4gdW52ZXJzaW9uZWQgb25lXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29uZmlnVmVyc2lvbihjb25maWc6IFJlbW90ZUNvbmZpZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIGNvbmZpZy52ZXJzaW9uID8/IC0xO1xufVxuXG4vKiogU3RyaXBzIHRoZSByb3V0aW5nLWZpbGUgc3VmZml4LCBsZWF2aW5nIHRoZSBidWNrZXQncyBwdWJsaWMgYmFzZSBVUkwgKGZpbGUgcGF0aHMgYXBwZW5kIHRvIGl0KS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCdWNrZXRCYXNlVXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXVybC5lbmRzV2l0aChST1VUSU5HX1NVRkZJWCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhIGJ1Y2tldCByb3V0aW5nIFVSTCBlbmRpbmcgd2l0aCAke0pTT04uc3RyaW5naWZ5KFJPVVRJTkdfU1VGRklYKX0sIHdhcyAke0pTT04uc3RyaW5naWZ5KHVybCl9YCk7XG4gICAgfVxuICAgIHJldHVybiB1cmwuc2xpY2UoMCwgLVJPVVRJTkdfU1VGRklYLmxlbmd0aCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEZpbGVVcmwoYmFzZVVybDogc3RyaW5nLCBmaWxlUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYmFzZVVybCArIFwiL1wiICsgZmlsZVBhdGguc3BsaXQoXCIvXCIpLm1hcChlbmNvZGVVUklDb21wb25lbnQpLmpvaW4oXCIvXCIpO1xufVxuXG4vLyBFeDogaHR0cHM6Ly9zdG9yYWdlMi52aWRncmlkd2ViLmNvbTo0NDQ1L2ZpbGUvZXhhbXBsZWFjY291bnQvZXhhbXBsZWJ1Y2tldC9zdG9yYWdlL3N0b3JhZ2Vyb3V0aW5nLmpzb25cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUhvc3RlZFVybCh1cmw6IHN0cmluZyk6IHsgYWRkcmVzczogc3RyaW5nOyBwb3J0OiBudW1iZXI7IGFjY291bnQ6IHN0cmluZzsgYnVja2V0TmFtZTogc3RyaW5nIH0ge1xuICAgIGxldCBiYXNlID0gZ2V0QnVja2V0QmFzZVVybCh1cmwpO1xuICAgIGxldCB1ID0gbmV3IFVSTChiYXNlKTtcbiAgICBpZiAodS5wcm90b2NvbCAhPT0gXCJodHRwczpcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFN0b3JhZ2UgVVJMIG11c3QgdXNlIGh0dHBzLCBnb3QgJHtKU09OLnN0cmluZ2lmeSh1LnByb3RvY29sKX0gaW4gJHtKU09OLnN0cmluZ2lmeSh1cmwpfWApO1xuICAgIH1cbiAgICBsZXQgcGFydHMgPSB1LnBhdGhuYW1lLnNwbGl0KFwiL1wiKS5maWx0ZXIoeCA9PiB4KTtcbiAgICBpZiAocGFydHMubGVuZ3RoICE9PSAzIHx8IHBhcnRzWzBdICE9PSBcImZpbGVcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGEgaG9zdGVkIGJ1Y2tldCBVUkwgbGlrZSBodHRwczovL2hvc3Q6cG9ydC9maWxlLzxhY2NvdW50Pi88YnVja2V0TmFtZT4ke1JPVVRJTkdfU1VGRklYfSwgd2FzICR7SlNPTi5zdHJpbmdpZnkodXJsKX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgYWRkcmVzczogdS5ob3N0bmFtZSwgcG9ydDogK3UucG9ydCB8fCA0NDMsIGFjY291bnQ6IGRlY29kZVVSSUNvbXBvbmVudChwYXJ0c1sxXSksIGJ1Y2tldE5hbWU6IGRlY29kZVVSSUNvbXBvbmVudChwYXJ0c1syXSkgfTtcbn1cblxuLy8gRXg6IGh0dHBzOi8vZjAwMi5iYWNrYmxhemViMi5jb20vZmlsZS9xdWVyeXN1YnRlc3QtY29tLXB1YmxpYy1pbW11dGFibGUvc3RvcmFnZS9zdG9yYWdlcm91dGluZy5qc29uXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VCYWNrYmxhemVVcmwodXJsOiBzdHJpbmcpOiB7IGJ1Y2tldE5hbWU6IHN0cmluZyB9IHtcbiAgICBsZXQgYmFzZSA9IGdldEJ1Y2tldEJhc2VVcmwodXJsKTtcbiAgICBsZXQgdSA9IG5ldyBVUkwoYmFzZSk7XG4gICAgbGV0IHBhcnRzID0gdS5wYXRobmFtZS5zcGxpdChcIi9cIikuZmlsdGVyKHggPT4geCk7XG4gICAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gMiB8fCBwYXJ0c1swXSAhPT0gXCJmaWxlXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhIGJhY2tibGF6ZSBidWNrZXQgVVJMIGxpa2UgaHR0cHM6Ly9mMDAyLmJhY2tibGF6ZWIyLmNvbS9maWxlLzxidWNrZXROYW1lPiR7Uk9VVElOR19TVUZGSVh9LCB3YXMgJHtKU09OLnN0cmluZ2lmeSh1cmwpfWApO1xuICAgIH1cbiAgICByZXR1cm4geyBidWNrZXROYW1lOiBkZWNvZGVVUklDb21wb25lbnQocGFydHNbMV0pIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlSG9zdGVkVXJsUG9ydCh1cmw6IHN0cmluZywgcG9ydDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBsZXQgdSA9IG5ldyBVUkwodXJsKTtcbiAgICB1LnBvcnQgPSBTdHJpbmcocG9ydCk7XG4gICAgcmV0dXJuIHUudG9TdHJpbmcoKTtcbn1cblxuLyoqXG4gKiBQdXRzIGEgc291cmNlIGludG8gdGhlIHNoYXBlIHRoZSBjb2RlIGV4cGVjdHMuIEl0IGRvZXMgTk9UIGp1ZGdlIGl0OiB0aGlzIHJ1bnMgZXZlcnkgdGltZSBhIGNvbmZpZ1xuICogaXMgUkVBRCwgYW5kIGEgY29uZmlnIHRoYXQgaXMgYWxyZWFkeSBvbiBkaXNrIGhhcyB0byBrZWVwIHdvcmtpbmcgLSBhIHNlcnZlciB0aGF0IGNhbm5vdCBwYXJzZSBpdHNcbiAqIG93biByb3V0aW5nIGZpbGUgaXMgYSBzZXJ2ZXIgdGhhdCBjYW5ub3Qgc2VydmUsIGFuZCBpdCB3b3VsZCBzdGF5IHRoYXQgd2F5IGZvcmV2ZXIuIEFueXRoaW5nXG4gKiBtaXNzaW5nIG9yIHVudXNhYmxlIGlzIGZpbGxlZCBpbiB3aXRoIHRoZSBzYWZlc3QgZXF1aXZhbGVudCBpbnN0ZWFkLCBsb3VkbHkgd2hlcmUgaXQgbWF0dGVycy5cbiAqXG4gKiBKdWRnaW5nIGhhcHBlbnMgb24gdGhlIHdheSBJTiwgaW4gYXNzZXJ0VmFsaWRSZW1vdGVDb25maWcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVTb3VyY2Uoc291cmNlOiBSZW1vdGVDb25maWdCYXNlKTogU291cmNlQ29uZmlnIHtcbiAgICBpZiAodHlwZW9mIHNvdXJjZSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICBsZXQgbm9ybWFsaXplZCA9IHsgLi4uc291cmNlIH07XG4gICAgICAgIC8vIENvbmZpZ3Mgd3JpdHRlbiBiZWZvcmUgbmFtZXMgZXhpc3RlZCBoYXZlIG5vbmUsIGFuZCBhIG5hbWUgdGhhdCBjb3VsZCBub3QgYmUgYSBmb2xkZXIgY2Fubm90IGJlIHVzZWQgYXMgb25lLiBCb3RoIGdldCB0aGUgZGVyaXZlZCBuYW1lOiBkZXRlcm1pbmlzdGljLCBzbyBldmVyeSBzZXJ2ZXIgcGlja3MgdGhlIHNhbWUgb25lIGZvciB0aGUgc2FtZSBlbnRyeS5cbiAgICAgICAgaWYgKCFpc1VzYWJsZVNvdXJjZU5hbWUobm9ybWFsaXplZC5uYW1lKSkge1xuICAgICAgICAgICAgbGV0IGRlcml2ZWQgPSBkZXJpdmVkU291cmNlTmFtZShub3JtYWxpemVkKTtcbiAgICAgICAgICAgIGlmIChub3JtYWxpemVkLm5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFNvdXJjZSBuYW1lICR7SlNPTi5zdHJpbmdpZnkobm9ybWFsaXplZC5uYW1lKX0gaW4gYSByb3V0aW5nIGNvbmZpZyBjYW5ub3QgYmUgdXNlZCBhcyBhIGZvbGRlciBuYW1lLCBzbyB0aGlzIGVudHJ5IGlzIGJlaW5nIHJlYWQgYXMgJHtKU09OLnN0cmluZ2lmeShkZXJpdmVkKX06ICR7SlNPTi5zdHJpbmdpZnkoc291cmNlKS5zbGljZSgwLCA1MDApfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbm9ybWFsaXplZC5uYW1lID0gZGVyaXZlZDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgd2luZG93ID0gbm9ybWFsaXplZC52YWxpZFdpbmRvdztcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHdpbmRvdykgfHwgd2luZG93Lmxlbmd0aCAhPT0gMiB8fCAhd2luZG93LmV2ZXJ5KHggPT4gdHlwZW9mIHggPT09IFwibnVtYmVyXCIpKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBTb3VyY2UgJHtKU09OLnN0cmluZ2lmeShub3JtYWxpemVkLm5hbWUpfSBoYXMgbm8gdXNhYmxlIHZhbGlkV2luZG93ICgke0pTT04uc3RyaW5naWZ5KHdpbmRvdyl9KSwgcmVhZGluZyBpdCBhcyBhbHdheXMgdmFsaWQ6ICR7SlNPTi5zdHJpbmdpZnkoc291cmNlKS5zbGljZSgwLCA1MDApfWApO1xuICAgICAgICAgICAgbm9ybWFsaXplZC52YWxpZFdpbmRvdyA9IEZVTExfVkFMSURfV0lORE9XO1xuICAgICAgICB9XG4gICAgICAgIGxldCByb3V0ZSA9IG5vcm1hbGl6ZWQucm91dGU7XG4gICAgICAgIGlmIChyb3V0ZSAhPT0gdW5kZWZpbmVkICYmICFpc1VzYWJsZVJvdXRlKHJvdXRlKSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgU291cmNlICR7SlNPTi5zdHJpbmdpZnkobm9ybWFsaXplZC5uYW1lKX0gaGFzIGFuIHVudXNhYmxlIHJvdXRlICgke0pTT04uc3RyaW5naWZ5KHJvdXRlKX0pLCByZWFkaW5nIGl0IGFzIHRoZSB3aG9sZSBrZXkgc3BhY2U6ICR7SlNPTi5zdHJpbmdpZnkoc291cmNlKS5zbGljZSgwLCA1MDApfWApO1xuICAgICAgICAgICAgbm9ybWFsaXplZC5yb3V0ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbm9ybWFsaXplZDtcbiAgICB9XG4gICAgbGV0IGhvc3RuYW1lID0gbmV3IFVSTChzb3VyY2UpLmhvc3RuYW1lO1xuICAgIGlmIChob3N0bmFtZS5lbmRzV2l0aChcIi5iYWNrYmxhemViMi5jb21cIikpIHtcbiAgICAgICAgLy8gVmFsaWRhdGVzIHRoZSBVUkwgKHRocm93cyBvbiBtYWxmb3JtZWQpIGJlZm9yZSBpdCdzIHN0b3JlZDsgdGhlIGJ1Y2tldCBuYW1lIGlzIHJlYWQgYmFjayBvdXQgb2YgdGhlIFVSTCBhdCB1c2Ugc2l0ZXMsIG5ldmVyIHN0b3JlZCBvbiB0aGUgY29uZmlnLlxuICAgICAgICBsZXQgcGFyc2VkID0gcGFyc2VCYWNrYmxhemVVcmwoc291cmNlKTtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJiYWNrYmxhemVcIiwgdXJsOiBzb3VyY2UsIG5hbWU6IHNhbml0aXplU291cmNlTmFtZShwYXJzZWQuYnVja2V0TmFtZSksIHZhbGlkV2luZG93OiBGVUxMX1ZBTElEX1dJTkRPVywgcHVibGljOiB0cnVlIH07XG4gICAgfVxuICAgIGxldCBwYXJzZWQgPSBwYXJzZUhvc3RlZFVybChzb3VyY2UpO1xuICAgIHJldHVybiB7IHR5cGU6IFwicmVtb3RlXCIsIHVybDogc291cmNlLCBuYW1lOiBzYW5pdGl6ZVNvdXJjZU5hbWUoYCR7cGFyc2VkLmFkZHJlc3N9LSR7cGFyc2VkLnBvcnR9YCksIHZhbGlkV2luZG93OiBGVUxMX1ZBTElEX1dJTkRPVywgcHVibGljOiB0cnVlIH07XG59XG5cbmZ1bmN0aW9uIGlzVXNhYmxlU291cmNlTmFtZShuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICBpZiAoIW5hbWUpIHJldHVybiBmYWxzZTtcbiAgICB0cnkge1xuICAgICAgICBhc3NlcnRWYWxpZFNvdXJjZU5hbWUobmFtZSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBpc1VzYWJsZVJvdXRlKHJvdXRlOiBbbnVtYmVyLCBudW1iZXJdKTogYm9vbGVhbiB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHJvdXRlKSB8fCByb3V0ZS5sZW5ndGggIT09IDIgfHwgIXJvdXRlLmV2ZXJ5KHggPT4gdHlwZW9mIHggPT09IFwibnVtYmVyXCIpKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHJvdXRlWzBdID49IDAgJiYgcm91dGVbMV0gPD0gMSAmJiByb3V0ZVswXSA8IHJvdXRlWzFdO1xufVxuXG4vKiogVGhlIG5hbWUgYW4gZW50cnkgZ2V0cyB3aGVuIGl0IGhhcyBubyB1c2FibGUgb25lIG9mIGl0cyBvd246IHRoZSBlbmRwb2ludCBpdCBwb2ludHMgYXQsIHBsdXMgaXRzIHJvdXRlIHdoZW4gaXQgaGFzIG9uZSAtIHNvIGVudHJpZXMgdGhhdCB3ZXJlIGRpc3RpbmN0IHN0b3JhZ2UgYmVmb3JlIG5hbWVzIGV4aXN0ZWQgc3RheSBkaXN0aW5jdCBub3cuICovXG5mdW5jdGlvbiBkZXJpdmVkU291cmNlTmFtZShzb3VyY2U6IFNvdXJjZUNvbmZpZyk6IHN0cmluZyB7XG4gICAgbGV0IGVuZHBvaW50ID0gc291cmNlLnVybDtcbiAgICBpZiAoc291cmNlLnR5cGUgPT09IFwicmVtb3RlXCIpIHtcbiAgICAgICAgbGV0IHBhcnNlZCA9IHBhcnNlSG9zdGVkVXJsKHNvdXJjZS51cmwpO1xuICAgICAgICBlbmRwb2ludCA9IGAke3BhcnNlZC5hZGRyZXNzfS0ke3BhcnNlZC5wb3J0fWA7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZW5kcG9pbnQgPSBwYXJzZUJhY2tibGF6ZVVybChzb3VyY2UudXJsKS5idWNrZXROYW1lO1xuICAgIH1cbiAgICBsZXQgcm91dGUgPSBzb3VyY2Uucm91dGU7XG4gICAgaWYgKHJvdXRlICYmIGlzVXNhYmxlUm91dGUocm91dGUpICYmICEocm91dGVbMF0gPT09IEZVTExfUk9VVEVbMF0gJiYgcm91dGVbMV0gPT09IEZVTExfUk9VVEVbMV0pKSB7XG4gICAgICAgIGVuZHBvaW50ICs9IGAtcm91dGUtJHtyb3V0ZVswXX0tJHtyb3V0ZVsxXX1gO1xuICAgIH1cbiAgICByZXR1cm4gc2FuaXRpemVTb3VyY2VOYW1lKGVuZHBvaW50KTtcbn1cblxuLyoqIEEgbmFtZSBidWlsdCBmcm9tIHNvbWV0aGluZyB0aGF0IHdhcyBuZXZlciBtZWFudCB0byBiZSBvbmUgKGEgaG9zdCwgYSBidWNrZXQpLCBtYWRlIHVzYWJsZSBhcyBhIGZvbGRlci4gUGVyaW9kcyBzdXJ2aXZlLCBzbyBpdCBzdGlsbCByZWFkcyBhcyB3aGF0IGl0IGNhbWUgZnJvbS4gKi9cbmZ1bmN0aW9uIHNhbml0aXplU291cmNlTmFtZShmcm9tOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCBuYW1lID0gZnJvbS5yZXBsYWNlKC9bXlxcdy4tXS9nLCBcIi1cIikuc2xpY2UoMCwgNjQpO1xuICAgIGlmICghaXNVc2FibGVTb3VyY2VOYW1lKG5hbWUpKSB7XG4gICAgICAgIC8vIE9ubHkgcmVhY2hhYmxlIGZyb20gc29tZXRoaW5nIHdpdGggbm8gdXNhYmxlIGNoYXJhY3RlcnMgYXQgYWxsOyB0aGUgbmFtZSBzdGlsbCBoYXMgdG8gZXhpc3RcbiAgICAgICAgcmV0dXJuIFwic291cmNlXCI7XG4gICAgfVxuICAgIHJldHVybiBuYW1lO1xufVxuXG4vKiogSG93IGZhciB1cCBmcm9tIDAgdGhlIHNvdXJjZXMnIHJvdXRlcyByZWFjaCB3aXRob3V0IGEgZ2FwICgxIG1lYW5zIHRoZSB3aG9sZSBrZXkgc3BhY2UpLiAqL1xuZnVuY3Rpb24gZ2V0Um91dGVDb3ZlcmFnZShzb3VyY2VzOiBTb3VyY2VDb25maWdbXSk6IG51bWJlciB7XG4gICAgbGV0IHJvdXRlcyA9IHNvdXJjZXMubWFwKHggPT4geC5yb3V0ZSB8fCBGVUxMX1JPVVRFKTtcbiAgICBzb3J0KHJvdXRlcywgeCA9PiB4WzBdKTtcbiAgICBsZXQgY292ZXJlZCA9IDA7XG4gICAgZm9yIChsZXQgcm91dGUgb2Ygcm91dGVzKSB7XG4gICAgICAgIGlmIChyb3V0ZVswXSA+IGNvdmVyZWQpIGJyZWFrO1xuICAgICAgICBjb3ZlcmVkID0gTWF0aC5tYXgoY292ZXJlZCwgcm91dGVbMV0pO1xuICAgIH1cbiAgICByZXR1cm4gY292ZXJlZDtcbn1cblxuLyoqIFB1dHMgYSB3aG9sZSBjb25maWcgaW50byB0aGUgc2hhcGUgdGhlIGNvZGUgZXhwZWN0cywgd2l0aG91dCBqdWRnaW5nIGl0IC0gc2VlIG5vcm1hbGl6ZVNvdXJjZSwgYW5kIHNlZSBhc3NlcnRWYWxpZFJlbW90ZUNvbmZpZyBmb3IgdGhlIGp1ZGdpbmcuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplUmVtb3RlQ29uZmlnKGNvbmZpZzogUmVtb3RlQ29uZmlnIHwgUmVtb3RlQ29uZmlnQmFzZSk6IFJlbW90ZUNvbmZpZyB7XG4gICAgaWYgKHR5cGVvZiBjb25maWcgIT09IFwic3RyaW5nXCIgJiYgXCJzb3VyY2VzXCIgaW4gY29uZmlnKSB7XG4gICAgICAgIHJldHVybiB7IHZlcnNpb246IGNvbmZpZy52ZXJzaW9uLCBzb3VyY2VzOiBjb25maWcuc291cmNlcy5tYXAobm9ybWFsaXplU291cmNlKSB9O1xuICAgIH1cbiAgICByZXR1cm4geyBzb3VyY2VzOiBbbm9ybWFsaXplU291cmNlKGNvbmZpZyldIH07XG59XG5cbi8qKlxuICogV2hldGhlciBhIGNvbmZpZyBtYXkgYmUgV1JJVFRFTi4gRXZlcnl0aGluZyBoZXJlIGlzIGEgcnVsZSBhYm91dCB0aGUgY29uZmlnIGFzIGEgd2hvbGUsIHdoaWNoIGlzXG4gKiBleGFjdGx5IHdoeSBpdCBjYW5ub3QgcnVuIG9uIHJlYWQ6IGEgY29uZmlnIHRoYXQgaXMgYWxyZWFkeSBzdG9yZWQgc29tZXdoZXJlIGhhcyB0byBrZWVwIGJlaW5nXG4gKiByZWFkYWJsZSwgb3IgYSBzZXJ2ZXIgdGhhdCBvbmNlIGFjY2VwdGVkIGEgYmFkIG9uZSBjb3VsZCBuZXZlciBzdGFydCBhZ2Fpbi4gUmVqZWN0aW5nIGl0IGF0IHRoZVxuICogcG9pbnQgaXQgaXMgaW50cm9kdWNlZCBpcyB3aGF0IGtlZXBzIGEgYmFkIG9uZSBmcm9tIGV2ZXIgYmVpbmcgc3RvcmVkIGluIHRoZSBmaXJzdCBwbGFjZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFZhbGlkUmVtb3RlQ29uZmlnKGNvbmZpZzogUmVtb3RlQ29uZmlnKTogdm9pZCB7XG4gICAgbGV0IHNvdXJjZXMgPSBjb25maWcuc291cmNlcy5tYXAobm9ybWFsaXplU291cmNlKTtcbiAgICAvLyBNaXhlZCBpbW11dGFiaWxpdHkgbWFrZXMgbm8gc2Vuc2UgQU1PTkcgc291cmNlcyB2YWxpZCBhdCB0aGUgc2FtZSB0aW1lOiBhIG11dGFibGUgc291cmNlIHdvdWxkIGFjY2VwdCBvdmVyd3JpdGVzIHRoYXQgaXRzIGltbXV0YWJsZSBwZWVycyByZWZ1c2UgdG8gc3luY2hyb25pemUsIGZvcmtpbmcgdGhlaXIgY29udGVudHMuIFNvdXJjZXMgYXJlIGdyb3VwZWQgYnkgdHJhbnNpdGl2ZWx5IG92ZXJsYXBwaW5nIHZhbGlkIHdpbmRvd3MgKGFic29yYiBldmVyeXRoaW5nIG92ZXJsYXBwaW5nIHRoZSBncm91cCwgZXh0ZW5kIHRoZSBncm91cCdzIGVuZCwgcmVwZWF0KSAtIGEgc29mdCBjaGVjayB0aGF0IGlzIGNvcnJlY3QgYXMgbG9uZyBhcyB3aW5kb3dzIGhhdmUgY2xlYW4gYnJlYWtzIChhIGdyb3VwIGVuZHMgZXhhY3RseSB3aGVyZSB0aGUgbmV4dCBiZWdpbnMpLlxuICAgIGxldCBzb3J0ZWQgPSBbLi4uc291cmNlc107XG4gICAgc29ydChzb3J0ZWQsIHggPT4geC52YWxpZFdpbmRvd1swXSk7XG4gICAgbGV0IGdyb3VwOiB0eXBlb2Ygc291cmNlcyA9IFtdO1xuICAgIGxldCBncm91cEVuZCA9IDA7XG4gICAgZnVuY3Rpb24gY2hlY2tHcm91cCgpIHtcbiAgICAgICAgbGV0IGltbXV0YWJsZUNvdW50ID0gZ3JvdXAuZmlsdGVyKHggPT4geC5pbW11dGFibGUpLmxlbmd0aDtcbiAgICAgICAgaWYgKGltbXV0YWJsZUNvdW50ICYmIGltbXV0YWJsZUNvdW50ICE9PSBncm91cC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgU291cmNlcyB3aXRoIG92ZXJsYXBwaW5nIHZhbGlkIHdpbmRvd3MgbXVzdCBhZ3JlZSBvbiBpbW11dGFiaWxpdHk6ICR7aW1tdXRhYmxlQ291bnR9IG9mICR7Z3JvdXAubGVuZ3RofSBhcmUgaW1tdXRhYmxlLiBTb3VyY2VzOiAke0pTT04uc3RyaW5naWZ5KGdyb3VwLm1hcCh4ID0+ICh7IHVybDogeC51cmwsIHZhbGlkV2luZG93OiB4LnZhbGlkV2luZG93LCBpbW11dGFibGU6ICEheC5pbW11dGFibGUgfSkpKX1gKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGUgc291cmNlcyB2YWxpZCBhdCBhbnkgaW5zdGFudCBtdXN0IGNvdmVyIHRoZSB3aG9sZSBrZXkgc3BhY2UsIG9yIGtleXMgcm91dGluZyBpbnRvIGEgZ2FwIGNvdWxkIG5ldmVyIGJlIHJlYWRcbiAgICAgICAgbGV0IGNvdmVyZWQgPSBnZXRSb3V0ZUNvdmVyYWdlKGdyb3VwKTtcbiAgICAgICAgaWYgKGNvdmVyZWQgPCAxKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNvdXJjZXMgd2l0aCBvdmVybGFwcGluZyB2YWxpZCB3aW5kb3dzIG11c3QgY292ZXIgdGhlIGZ1bGwgcm91dGUgc3BhY2UgWzAsIDEpOyBjb3ZlcmFnZSBzdG9wcyBhdCAke2NvdmVyZWR9LiBTb3VyY2VzOiAke0pTT04uc3RyaW5naWZ5KGdyb3VwLm1hcCh4ID0+ICh7IHVybDogeC51cmwsIHZhbGlkV2luZG93OiB4LnZhbGlkV2luZG93LCByb3V0ZTogeC5yb3V0ZSB8fCBGVUxMX1JPVVRFIH0pKSl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQSBzdG9yZSBpcyBOT1QgcmVxdWlyZWQgdG8gY292ZXIgdGhlIHdob2xlIGtleSBzcGFjZSBvbiBpdHMgb3duLiBJdCBvbmNlIHdhcywgYmVjYXVzZSBhIHN0b3JlIHRoYXQgaG9sZHMga2V5cyBvdXRzaWRlIHRoZSByb3V0ZSBpdCBzeW5jaHJvbml6ZXMgbmV2ZXIgbGVhcm5zIG9mIHRoZWlyIGRlbGV0aW9ucyBhbmQgZXZlbnR1YWxseSByZXN1cnJlY3RzIHRoZW0gLSBidXQgYSBzdG9yZSdzIGRhdGEgbm93IGxpdmVzIHVuZGVyIGl0cyBuYW1lIHJhdGhlciB0aGFuIGl0cyByb3V0ZSwgYW5kIGEgc2NhbiBvbmx5IGV2ZXIgaW5kZXhlcyBrZXlzIGluc2lkZSB0aGUgcm91dGUgdGhlIHN0b3JlIGlzIGNvbmZpZ3VyZWQgZm9yLCBzbyBrZXlzIG91dHNpZGUgaXQgYXJlIG5ldmVyIHRha2VuIGludG8gdGhlIGluZGV4IHRoYXQgY291bGQgcmVzdXJyZWN0IHRoZW0uIFdoYXQgcmVwbGFjZXMgdGhhdCBydWxlIGlzIHRoZSBuYW1pbmcgZGlzY2lwbGluZTogYSBuYW1lIGlzIG9uZSBzdG9yYWdlLCBhbmQgcG9pbnRpbmcgYSBuYW1lIGF0IGEgZGlmZmVyZW50IHJvdXRlIGxhdGVyIGlzIHdoYXQgd291bGQgaGFuZCBpdCBrZXlzIGl0IG5ldmVyIHN5bmNocm9uaXplZC5cbiAgICB9XG4gICAgZm9yIChsZXQgc291cmNlIG9mIHNvcnRlZCkge1xuICAgICAgICBpZiAoZ3JvdXAubGVuZ3RoICYmIHNvdXJjZS52YWxpZFdpbmRvd1swXSA+PSBncm91cEVuZCkge1xuICAgICAgICAgICAgY2hlY2tHcm91cCgpO1xuICAgICAgICAgICAgZ3JvdXAgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBncm91cC5wdXNoKHNvdXJjZSk7XG4gICAgICAgIGdyb3VwRW5kID0gTWF0aC5tYXgoZ3JvdXBFbmQsIHNvdXJjZS52YWxpZFdpbmRvd1sxXSk7XG4gICAgfVxuICAgIGNoZWNrR3JvdXAoKTtcbiAgICAvLyBPTkUgZW50cnkgcGVyIHN0b3JlIGF0IGFueSBpbnN0YW50LiBBIG5hbWUgaXMgYSBzdG9yZSAtIG9uZSBmb2xkZXIsIG9uZSBpbmRleCAtIHNvIHR3byBlbnRyaWVzIG5hbWluZyBpdCBhdCB0aGUgc2FtZSB0aW1lIHdvdWxkIGJlIHR3byBhbnN3ZXJzIHRvIFwid2hhdCBpcyB0aGlzIHN0b3JlIGNvbmZpZ3VyZWQgdG8gYmUgcmlnaHQgbm93XCIsIGFuZCBldmVyeSByb3V0ZSBhbmQgZmxhZyBpdCByZWFkcyB3b3VsZCBkZXBlbmQgb24gd2hpY2ggZW50cnkgeW91IGhhcHBlbmVkIHRvIGxvb2sgYXQuIE5vbi1vdmVybGFwcGluZyB3aW5kb3dzIGFyZSBmaW5lLCBhbmQgYXJlIGhvdyBhIHN0b3JlJ3MgY29uZmlndXJhdGlvbiBjaGFuZ2VzIG92ZXIgdGltZS5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNvdXJjZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgc291cmNlcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgbGV0IGEgPSBzb3VyY2VzW2ldO1xuICAgICAgICAgICAgbGV0IGIgPSBzb3VyY2VzW2pdO1xuICAgICAgICAgICAgaWYgKHN0b3JlSWRlbnRpdHkoYSkgIT09IHN0b3JlSWRlbnRpdHkoYikpIGNvbnRpbnVlO1xuICAgICAgICAgICAgaWYgKGEudmFsaWRXaW5kb3dbMF0gPCBiLnZhbGlkV2luZG93WzFdICYmIGIudmFsaWRXaW5kb3dbMF0gPCBhLnZhbGlkV2luZG93WzFdKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTdG9yZSBuYW1lIHJldXNlZCB3aXRoIGNvbmZsaWN0aW5nIGNvbmZpZ3VyYXRpb25zLiBUaGUgbmFtZSAke0pTT04uc3RyaW5naWZ5KGEubmFtZSl9IGlzIHVzZWQgYnkgbXVsdGlwbGUgc291cmNlcyBhdCB0aGUgc2FtZSB0aW1lOlxcbiAgICAke0pTT04uc3RyaW5naWZ5KGEpfVxcbiAgICAke0pTT04uc3RyaW5naWZ5KGIpfVxcbkEgbmFtZSBpcyBvbmUgc3RvcmUgLSBvbmUgZm9sZGVyLCBvbmUgaW5kZXggLSBzbyBpdCBjYW4gb25seSBiZSBjb25maWd1cmVkIG9uZSB3YXkgYXQgYSB0aW1lLiBHaXZlIHRoZW0gbm9uLW92ZXJsYXBwaW5nIHZhbGlkIHdpbmRvd3MsIG9yIGRpZmZlcmVudCBuYW1lcyBpZiB0aGV5IGFyZSBtZWFudCB0byBiZSBkaWZmZXJlbnQgc3RvcmFnZS5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgaWRlbnRpdHkgb2Ygb25lIG9mIGEgc3RvcmUncyBTT1VSQ0UgU0xPVFMgLSB3aGljaCBpcyB0aGUgZW5kcG9pbnQgaXQgdGFsa3MgdG8sIGFuZCBub3QgdGhlIHNhbWVcbiAqIHF1ZXN0aW9uIGFzIHdoaWNoIHN0b3JlIHRoaXMgaXMgKHRoYXQgaXMgQ29tbW9uQ29uZmlnLm5hbWUpLiBBIHN3aXRjaG92ZXIncyBhbHRlcm5hdGUgcG9ydCBpcyBhXG4gKiBkaXN0aW5jdCBzbG90IGV2ZW4gdGhvdWdoIGl0IG5hbWVzIHRoZSBzYW1lIHN0b3JhZ2UsIGJlY2F1c2UgYSBzbG90IGhvbGRzIGEgY29ubmVjdGlvbiB0byBhIHBvcnQuXG4gKlxuICogT05MWSB0aGUgdHlwZSwgdGhlIHVybCwgYW5kIHRoZSBpbnRlcm1lZGlhdGUncyBhbHRlcm5hdGUgcG9ydCBhcmUgcGFydCBvZiBpdDogZXZlcnl0aGluZyBlbHNlIGlzXG4gKiBwb2xpY3kgYWJvdXQgaG93IHdlIFVTRSB0aGUgZW5kcG9pbnQsIGFuZCBjaGFuZ2luZyBwb2xpY3kgbXVzdCBuZXZlciBtYWtlIGEgc3RvcmUgYmVsaWV2ZSBpdCBpc1xuICogbG9va2luZyBhdCBhIE5FVyBzb3VyY2UgLSB0aGF0IHdvdWxkIGRyb3AgZXZlcnkgaW5kZXggZW50cnkgdGhlIG9sZCBvbmUgaGVsZCBhbmQgcmVzY2FuIGl0IGZyb21cbiAqIHNjcmF0Y2gsIHNvIHRoZSBmaWxlcyBpdCBob2xkcyBnbyBtaXNzaW5nIGZyb20gbGlzdGluZ3MgdW50aWwgdGhlIHJlc2NhbiBmaW5pc2hlcywgZm9yIGEgZmxhZyBmbGlwLlxuICpcbiAqIEJ1aWx0IGJ5IGhhbmQgcmF0aGVyIHRoYW4gYnkgc2VyaWFsaXppbmcgdGhlIGNvbmZpZywgc28gaXQgY2Fubm90IGNoYW5nZSBqdXN0IGJlY2F1c2UgdGhlIHJvdXRpbmdcbiAqIGZpbGUgd2FzIHdyaXR0ZW4gd2l0aCBpdHMga2V5cyBpbiBhIGRpZmZlcmVudCBvcmRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNvdXJjZUlkZW50aXR5KHNvdXJjZUNvbmZpZzogU291cmNlQ29uZmlnIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgICBpZiAoIXNvdXJjZUNvbmZpZykgcmV0dXJuIFwiZGlza1wiO1xuICAgIHJldHVybiBgJHtzb3VyY2VDb25maWcudHlwZX18JHtzb3VyY2VDb25maWcudXJsfXwke3NvdXJjZUNvbmZpZy5pbnRlcm1lZGlhdGUgfHwgXCJcIn1gO1xufVxuXG4vKiogV2hhdCBhbiBpbmRleCBlbnRyeSByZWNvcmRzIGFzIHRoZSBob2xkZXIgb2YgaXRzIGJ5dGVzIChzZWUgQXJjaGl2ZXNTb3VyY2UudXJsKSwgc28gaXQgbXVzdCBuYW1lIHRoZSBlbmRwb2ludCBGT1JFVkVSLiBBbiBpbnRlcm1lZGlhdGUgaXMgYSBzd2l0Y2hvdmVyJ3MgdGVtcG9yYXJ5IGFsdGVybmF0ZSBwb3J0IG9udG8gYW5vdGhlciBzb3VyY2UsIGFuZCB0aGF0IHBvcnQgaXMgZ29uZSBmb3IgZ29vZCBvbmNlIGl0cyB3aW5kb3cgcGFzc2VzIC0gc28gaXQgaXMgcmVjb3JkZWQgYXMgdGhlIHNvdXJjZSBpdCB3YXMgc3BsaXQgb3V0IG9mLCB3aGljaCBob2xkcyB0aGUgc2FtZSBidWNrZXQgYW5kIG91dGxpdmVzIGl0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNvdXJjZVBlcnNpc3RlbnRVcmwoc291cmNlQ29uZmlnOiBTb3VyY2VDb25maWcgfCB1bmRlZmluZWQsIGZvbGRlcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXNvdXJjZUNvbmZpZykgcmV0dXJuIGZvbGRlcjtcbiAgICByZXR1cm4gc291cmNlQ29uZmlnLmludGVybWVkaWF0ZSB8fCBzb3VyY2VDb25maWcudXJsO1xufVxuXG4vKiogV2hpY2ggc3RvcmUgYW4gZW50cnkgY29uZmlndXJlczogaXRzIG5hbWUsIG9uIHRoZSBzZXJ2ZXIgaXQgcG9pbnRzIGF0LiBBIHN3aXRjaG92ZXIncyBhbHRlcm5hdGUgcG9ydCBpcyB0aGUgc2FtZSBzZXJ2ZXIgKHNvIGl0IGlzIGNvbXBhcmVkIGFnYWluc3QgdGhlIGVudHJ5IGl0IHdhcyBzcGxpdCBvdXQgb2YsIHdob3NlIHdpbmRvdyBpdCBtdXN0IG5vdCBvdmVybGFwKTsgYSBnZW51aW5lbHkgZGlmZmVyZW50IHNlcnZlciB3aXRoIHRoZSBzYW1lIG5hbWUgaXMgYSBkaWZmZXJlbnQgc3RvcmUsIG9uIGEgZGlmZmVyZW50IG1hY2hpbmUuICovXG5mdW5jdGlvbiBzdG9yZUlkZW50aXR5KHNvdXJjZTogU291cmNlQ29uZmlnKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7c291cmNlLmludGVybWVkaWF0ZSB8fCBzb3VyY2UudXJsfXwke3NvdXJjZS5uYW1lfWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVJvdXRpbmdEYXRhKGRhdGE6IEJ1ZmZlcik6IFJlbW90ZUNvbmZpZyB7XG4gICAgbGV0IHRleHQgPSBkYXRhLnRvU3RyaW5nKCk7XG4gICAgbGV0IHBhcnNlZDogUmVtb3RlQ29uZmlnO1xuICAgIHRyeSB7XG4gICAgICAgIHBhcnNlZCA9IEpTT04ucGFyc2UodGV4dCkgYXMgUmVtb3RlQ29uZmlnO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBSb3V0aW5nIGNvbmZpZyBpcyBub3QgdmFsaWQgSlNPTiAoJHtTdHJpbmcoZSl9KS4gRGF0YTogJHt0ZXh0LnNsaWNlKDAsIDUwMCl9YCk7XG4gICAgfVxuICAgIGlmICghcGFyc2VkIHx8IHR5cGVvZiBwYXJzZWQgIT09IFwib2JqZWN0XCIgfHwgIUFycmF5LmlzQXJyYXkocGFyc2VkLnNvdXJjZXMpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgUm91dGluZyBjb25maWcgbXVzdCBiZSB7IHZlcnNpb24/LCBzb3VyY2VzOiBbLi4uXSB9LCB3YXMgJHt0ZXh0LnNsaWNlKDAsIDUwMCl9YCk7XG4gICAgfVxuICAgIHJldHVybiBub3JtYWxpemVSZW1vdGVDb25maWcocGFyc2VkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZVJlbW90ZUNvbmZpZyhjb25maWc6IFJlbW90ZUNvbmZpZyk6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKEpTT04uc3RyaW5naWZ5KGNvbmZpZywgdW5kZWZpbmVkLCA0KSk7XG59XG4iXX0=
|
|
324
|
+
/* _JS_SOURCE_HASH = "0dc4e61a4561d935395e2909647740c7abeb317d5a6235993c5c0e71225331b3"; */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"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";
|
|
2
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
3
|
return (mod && mod.__esModule && mod.default) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
@@ -113,4 +113,4 @@ function isOwnAddress(address, port) {
|
|
|
113
113
|
}
|
|
114
114
|
exports.isOwnAddress = isOwnAddress;
|
|
115
115
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyQ29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2VydmVyQ29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGdEQUF3QjtBQUN4QixvREFBeUQ7QUFDekQsOERBQTJEO0FBQzNELGdEQUE2QztBQUc3Qyx1Q0FBbUM7QUFhbkMsSUFBSSxNQUF1QyxDQUFDO0FBQzVDLFNBQWdCLHNCQUFzQixDQUFDLEtBQTBCO0lBQzdELE1BQU0sR0FBRyxLQUFLLENBQUM7QUFDbkIsQ0FBQztBQUZELHdEQUVDO0FBQ0QsU0FBZ0Isc0JBQXNCO0lBQ2xDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsK0VBQStFLENBQUMsQ0FBQztJQUNyRyxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztBQUxELHdEQUtDO0FBQ0QsU0FBZ0IsOEJBQThCO0lBQzFDLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUM7QUFGRCx3RUFFQztBQUVELElBQUksb0JBQXdDLENBQUM7QUFDN0MsU0FBZ0IsdUJBQXVCLENBQUMsTUFBMEI7SUFDOUQsb0JBQW9CLEdBQUcsTUFBTSxDQUFDO0FBQ2xDLENBQUM7QUFGRCwwREFFQztBQUNELFNBQWdCLHVCQUF1QjtJQUNuQyxPQUFPLG9CQUFvQixDQUFDO0FBQ2hDLENBQUM7QUFGRCwwREFFQztBQUNELFNBQWdCLG1CQUFtQjtJQUMvQixJQUFJLG9CQUFvQjtRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUNwRSxDQUFDO0FBRkQsa0RBRUM7QUFFRCxTQUFnQixnQkFBZ0I7SUFDNUIsSUFBSSxNQUFNLEdBQUcsOEJBQThCLEVBQUUsQ0FBQztJQUM5QyxJQUFJLE1BQU07UUFBRSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDakMsSUFBSSxNQUFNLEdBQUcsSUFBQSxnQkFBTSxFQUFDLFFBQVEsQ0FBQyxDQUFD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LEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0csQ0FBQztBQUNMLENBQUM7QUFsQkQsZ0RBa0JDO0FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0FBQzNDLFNBQWdCLGtCQUFrQixDQUFDLElBQVk7SUFDM0MsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFGRCxnREFFQztBQUNELFNBQWdCLHFCQUFxQixDQUFDLElBQVk7SUFDOUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFGRCxzREFFQztBQUNELG9ZQUFvWTtBQUNwWSxTQUFnQixZQUFZLENBQUMsT0FBZSxFQUFFLElBQVk7SUFDdEQsSUFBSSxNQUFNLEdBQUcsOEJBQThCLEVBQUUsQ0FBQztJQUM5QyxJQUFJLENBQUMsTUFBTTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQzFCLElBQUksT0FBTyxLQUFLLE1BQU0sQ0FBQyxNQUFNO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDNUMsT0FBTyxJQUFJLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUxELG9DQUtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IGdldEZpbGVTdG9yYWdlTmVzdGVkMiB9IGZyb20gXCIuLi9GaWxlRm9sZGVyQVBJXCI7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblN0b3JhZ2UgfSBmcm9tIFwiLi4vVHJhbnNhY3Rpb25TdG9yYWdlXCI7XG5pbXBvcnQgeyBKU09OU3RvcmFnZSB9IGZyb20gXCIuLi9KU09OU3RvcmFnZVwiO1xuaW1wb3J0IHR5cGUgeyBJU3RvcmFnZSB9IGZyb20gXCIuLi9JU3RvcmFnZVwiO1xuaW1wb3J0IHR5cGUgeyBBY2Nlc3NSZXF1ZXN0LCBUcnVzdFJlY29yZCB9IGZyb20gXCIuL3N0b3JhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgeyBnZXRBcmcgfSBmcm9tIFwiLi9jbGlBcmdzXCI7XG5cbi8vIFRoZSBzdG9yYWdlIHNlcnZlcidzIHByb2Nlc3MtbGV2ZWwgaWRlbnRpdHkgYW5kIHN5c3RlbSBzdGF0ZTogd2hpY2ggc2VydmVyIHdlIGFyZSAoY29uZmlnLCBleHRyYSBwb3J0cyksIHdoZXRoZXIgd3JpdGVzIGFyZSBhbGxvd2VkLCBhbmQgdGhlIHRydXN0L3JlcXVlc3Qgc3RvcmVzLlxuXG5leHBvcnQgdHlwZSBTdG9yYWdlU2VydmVyQ29uZmlnID0ge1xuICAgIGRvbWFpbjogc3RyaW5nO1xuICAgIHBvcnQ6IG51bWJlcjtcbiAgICByb290RG9tYWluOiBzdHJpbmc7XG4gICAgc3NoVGFyZ2V0OiBzdHJpbmc7XG4gICAgc2VydmVyQ29tbWFuZDogc3RyaW5nO1xuICAgIGZvbGRlcjogc3RyaW5nO1xufTtcblxubGV0IGNvbmZpZzogU3RvcmFnZVNlcnZlckNvbmZpZyB8IHVuZGVmaW5lZDtcbmV4cG9ydCBmdW5jdGlvbiBzZXRTdG9yYWdlU2VydmVyQ29uZmlnKHZhbHVlOiBTdG9yYWdlU2VydmVyQ29uZmlnKTogdm9pZCB7XG4gICAgY29uZmlnID0gdmFsdWU7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RvcmFnZVNlcnZlckNvbmZpZygpOiBTdG9yYWdlU2VydmVyQ29uZmlnIHtcbiAgICBpZiAoIWNvbmZpZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFN0b3JhZ2Ugc2VydmVyIGlzIG5vdCBpbml0aWFsaXplZCAodGhpcyBBUEkgb25seSB3b3JrcyBvbiB0aGUgc3RvcmFnZSBzZXJ2ZXIpYCk7XG4gICAgfVxuICAgIHJldHVybiBjb25maWc7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RvcmFnZVNlcnZlckNvbmZpZ09wdGlvbmFsKCk6IFN0b3JhZ2VTZXJ2ZXJDb25maWcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBjb25maWc7XG59XG5cbmxldCB3cml0ZXNSZWplY3RlZFJlYXNvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuZXhwb3J0IGZ1bmN0aW9uIHNldFdyaXRlc1JlamVjdGVkUmVhc29uKHJlYXNvbjogc3RyaW5nIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgd3JpdGVzUmVqZWN0ZWRSZWFzb24gPSByZWFzb247XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0V3JpdGVzUmVqZWN0ZWRSZWFzb24oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gd3JpdGVzUmVqZWN0ZWRSZWFzb247XG59XG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0V3JpdGVzQWxsb3dlZCgpOiB2b2lkIHtcbiAgICBpZiAod3JpdGVzUmVqZWN0ZWRSZWFzb24pIHRocm93IG5ldyBFcnJvcih3cml0ZXNSZWplY3RlZFJlYXNvbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdG9yYWdlRm9sZGVyKCk6IHN0cmluZyB7XG4gICAgbGV0IGNvbmZpZyA9IGdldFN0b3JhZ2VTZXJ2ZXJDb25maWdPcHRpb25hbCgpO1xuICAgIGlmIChjb25maWcpIHJldHVybiBjb25maWcuZm9sZGVyO1xuICAgIGxldCBmb2xkZXIgPSBnZXRBcmcoXCJmb2xkZXJcIik7XG4gICAgaWYgKCFmb2xkZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTdG9yYWdlIHNlcnZlciBpcyBub3QgaW5pdGlhbGl6ZWQgYW5kIHRoZXJlIGlzIG5vIC0tZm9sZGVyIGFyZywgc28gdGhlIHN0b3JhZ2UgZm9sZGVyIGlzIHVua25vd25gKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhdGgucmVzb2x2ZShmb2xkZXIpO1xufVxuXG5jb25zdCBzeXN0ZW1TdG9yYWdlcyA9IG5ldyBNYXA8c3RyaW5nLCBQcm9taXNlPElTdG9yYWdlPHVua25vd24+Pj4oKTtcbmZ1bmN0aW9uIGdldFN5c3RlbVN0b3JhZ2U8VD4obmFtZTogc3RyaW5nKTogUHJvbWlzZTxJU3RvcmFnZTxUPj4ge1xuICAgIGxldCBzdG9yYWdlID0gc3lzdGVtU3RvcmFnZXMuZ2V0KG5hbWUpO1xuICAgIGlmICghc3RvcmFnZSkge1xuICAgICAgICBzdG9yYWdlID0gKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGxldCByb290ID0gYXdhaXQgZ2V0RmlsZVN0b3JhZ2VOZXN0ZWQyKGdldFN0b3JhZ2VGb2xkZXIoKSk7XG4gICAgICAgICAgICBsZXQgc3lzdGVtID0gYXdhaXQgcm9vdC5mb2xkZXIuZ2V0U3RvcmFnZShcInN5c3RlbTJcIik7XG4gICAgICAgICAgICBsZXQgdHJhbnNhY3Rpb25OYW1lID0gXCJzdG9yYWdlXCIgKyBuYW1lWzBdLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKDEpO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBKU09OU3RvcmFnZTx1bmtub3duPihuZXcgVHJhbnNhY3Rpb25TdG9yYWdlKGF3YWl0IHN5c3RlbS5mb2xkZXIuZ2V0U3RvcmFnZShuYW1lKSwgdHJhbnNhY3Rpb25OYW1lKSk7XG4gICAgICAgIH0pKCk7XG4gICAgICAgIHN5c3RlbVN0b3JhZ2VzLnNldChuYW1lLCBzdG9yYWdlKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0b3JhZ2UgYXMgUHJvbWlzZTxJU3RvcmFnZTxUPj47XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJ1c3QoKTogUHJvbWlzZTxJU3RvcmFnZTxUcnVzdFJlY29yZD4+IHtcbiAgICByZXR1cm4gZ2V0U3lzdGVtU3RvcmFnZTxUcnVzdFJlY29yZD4oXCJ0cnVzdFwiKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXF1ZXN0cygpOiBQcm9taXNlPElTdG9yYWdlPEFjY2Vzc1JlcXVlc3RbXT4+IHtcbiAgICByZXR1cm4gZ2V0U3lzdGVtU3RvcmFnZTxBY2Nlc3NSZXF1ZXN0W10+KFwicmVxdWVzdHNcIik7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZXRUcnVzdGVkTWFjaGluZXMoY29uZmlnOiB7IGFjY291bnQ6IHN0cmluZzsgbWFjaGluZUlkczogc3RyaW5nW10gfSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxldCB0cnVzdCA9IGF3YWl0IGdldFRydXN0KCk7XG4gICAgbGV0IHByZWZpeCA9IGAke2NvbmZpZy5hY2NvdW50fXxgO1xuICAgIGxldCBkZXNpcmVkID0gbmV3IFNldChjb25maWcubWFjaGluZUlkcyk7XG4gICAgZm9yIChsZXQga2V5IG9mIGF3YWl0IHRydXN0LmdldEtleXMoKSkge1xuICAgICAgICBpZiAoIWtleS5zdGFydHNXaXRoKHByZWZpeCkpIGNvbnRpbnVlO1xuICAgICAgICBsZXQgbWFjaGluZUlkID0ga2V5LnNsaWNlKHByZWZpeC5sZW5ndGgpO1xuICAgICAgICBpZiAoZGVzaXJlZC5oYXMobWFjaGluZUlkKSkge1xuICAgICAgICAgICAgZGVzaXJlZC5kZWxldGUobWFjaGluZUlkKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKGBSZW1vdmluZyB0cnVzdCBmb3IgbWFjaGluZSAke21hY2hpbmVJZH0gb24gYWNjb3VudCAke2NvbmZpZy5hY2NvdW50fWApO1xuICAgICAgICBhd2FpdCB0cnVzdC5yZW1vdmUoa2V5KTtcbiAgICB9XG4gICAgZm9yIChsZXQgbWFjaGluZUlkIG9mIGRlc2lyZWQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYEFkZGluZyB0cnVzdCBmb3IgbWFjaGluZSAke21hY2hpbmVJZH0gb24gYWNjb3VudCAke2NvbmZpZy5hY2NvdW50fWApO1xuICAgICAgICBhd2FpdCB0cnVzdC5zZXQoYCR7cHJlZml4fSR7bWFjaGluZUlkfWAsIHsgYWNjb3VudDogY29uZmlnLmFjY291bnQsIG1hY2hpbmVJZCwgaXA6IFwiXCIsIHRpbWU6IERhdGUubm93KCkgfSk7XG4gICAgfVxufVxuXG5jb25zdCBleHRyYUxpc3RlblBvcnRzID0gbmV3IFNldDxudW1iZXI+KCk7XG5leHBvcnQgZnVuY3Rpb24gYWRkRXh0cmFMaXN0ZW5Qb3J0KHBvcnQ6IG51bWJlcik6IHZvaWQge1xuICAgIGV4dHJhTGlzdGVuUG9ydHMuYWRkKHBvcnQpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUV4dHJhTGlzdGVuUG9ydChwb3J0OiBudW1iZXIpOiB2b2lkIHtcbiAgICBleHRyYUxpc3RlblBvcnRzLmRlbGV0ZShwb3J0KTtcbn1cbi8qKiBXaGV0aGVyIGFkZHJlc3M6cG9ydCBpcyB0aGlzIHNlcnZlciBwcm9jZXNzLCBpbmNsdWRpbmcgaXRzIGV4dHJhIGxpc3RlbiBwb3J0cyAoYSBkZXBsb3kgc3dpdGNob3ZlcidzIGFsdGVybmF0ZSBwb3J0IGlzIHN0aWxsIHVzKS4gVXNlZCB0byB0ZWxsIHdoaWNoIGNvbmZpZyBlbnRyaWVzIGFyZSBPVVIgY29weSBvZiBhIGJ1Y2tldCAtIHRoZSBzdG9yZXMgd2UgcnVuIC0gYXMgb3Bwb3NlZCB0byBwZWVycyB3ZSBzeW5jaHJvbml6ZSB3aXRoLiBUYWxraW5nIHRvIG91cnNlbHZlcyBpcyBub3Qgb25lIG9mIHRoZSB0aGluZ3MgaXQgcHJldmVudHM6IGEgc291cmNlIHRoYXQgaGFwcGVucyB0byBiZSB1cyBpcyByZWFjaGVkIG92ZXIgdGhlIEFQSSBsaWtlIGFueSBvdGhlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc093bkFkZHJlc3MoYWRkcmVzczogc3RyaW5nLCBwb3J0OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBsZXQgY29uZmlnID0gZ2V0U3RvcmFnZVNlcnZlckNvbmZpZ09wdGlvbmFsKCk7XG4gICAgaWYgKCFjb25maWcpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoYWRkcmVzcyAhPT0gY29uZmlnLmRvbWFpbikgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBwb3J0ID09PSBjb25maWcucG9ydCB8fCBleHRyYUxpc3RlblBvcnRzLmhhcyhwb3J0KTtcbn1cbiJdfQ==
|
|
116
|
-
/* _JS_SOURCE_HASH = "
|
|
116
|
+
/* _JS_SOURCE_HASH = "6a688ca70c8605fa9af982c78e5fba48740ce64745c6450a4ac56d973d851dde"; */
|