dcl-npc-toolkit 1.1.2-20230602183251.commit-e0a2727 → 1.1.2-20230606173914.commit-599f64e
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/dialog.js +2 -6
- package/dist/npc.js +24 -20
- package/dist/types.d.ts +2 -1
- package/dist/types.js +1 -1
- package/package.json +2 -2
package/dist/dialog.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as utils from '@dcl-sdk/utils';
|
|
2
2
|
import { AudioSource, engine } from "@dcl/sdk/ecs";
|
|
3
|
-
import { activeNPC, clearNPC, closeDialogWindow,
|
|
3
|
+
import { activeNPC, clearNPC, closeDialogWindow, npcDataComponent, stopWalking } from "./npc";
|
|
4
4
|
import { IsTypingDialog } from "./components";
|
|
5
5
|
import { NPCState } from "./types";
|
|
6
6
|
import { leftClickSection, leftClickSectionbBlack, lightTheme, section, skipButtonSection, skipButtonSectionBlack } from './ui';
|
|
@@ -186,10 +186,6 @@ export function closeDialog(npc) {
|
|
|
186
186
|
if (IsTypingDialog.has(npc)) {
|
|
187
187
|
IsTypingDialog.deleteFrom(npc);
|
|
188
188
|
}
|
|
189
|
-
if (npcDataComponent.get(npc).manualStop) {
|
|
190
|
-
console.log('dialog ended, needto walk again');
|
|
191
|
-
followPath(npc);
|
|
192
|
-
}
|
|
193
189
|
clearNPC();
|
|
194
190
|
}
|
|
195
191
|
export function talk(npc, dialog, startIndex, duration) {
|
|
@@ -474,4 +470,4 @@ export function findDialogByName(dialogs, name) {
|
|
|
474
470
|
}
|
|
475
471
|
return 0;
|
|
476
472
|
}
|
|
477
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2RpYWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssS0FBSyxNQUFNLGdCQUFnQixDQUFBO0FBRXZDLE9BQU8sRUFBRSxXQUFXLEVBQVUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBWSxXQUFXLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDcEgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5QyxPQUFPLEVBQXFCLFFBQVEsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoSSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDL0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd2QyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBcUIsSUFBSSxHQUFHLEVBQUUsQ0FBQTtBQUM3RCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBcUIsSUFBSSxHQUFHLEVBQUUsQ0FBQTtBQUNqRSxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBb0IsSUFBSSxHQUFHLEVBQUUsQ0FBQTtBQUVoRSxNQUFNLENBQU4sSUFBWSxXQU1UO0FBTkgsV0FBWSxXQUFXO0lBQ25CLG1EQUFXLENBQUE7SUFDWCxpREFBVSxDQUFBO0lBQ1YsNkNBQVEsQ0FBQTtJQUNSLG1EQUFXLENBQUE7SUFDWCxtREFBVyxDQUFBO0FBQ2IsQ0FBQyxFQU5TLFdBQVcsS0FBWCxXQUFXLFFBTXBCO0FBRUgsTUFBTSxDQUFDLElBQUksaUJBQWlCLEdB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QUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxTQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFNBQW1CLENBQUMsQ0FBQyxTQUFTLENBQUE7QUFDcEksQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhO0lBQzNCLE9BQU8sU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxTQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFNBQW1CLENBQUMsQ0FBQyxhQUFhLENBQUE7QUFDeEksQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjO0lBQzVCLE9BQU8sU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxTQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFNBQW1CLENBQUMsQ0FBQyxjQUFjLENBQUE7QUFDekksQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjO0lBQzVCLE9BQU8sU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxTQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFNBQW1CLENBQUMsQ0FBQyxNQUFNLENBQUE7QUFDakksQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjO0lBQzVCLE9BQU8sU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxTQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFNBQW1CLENBQUMsQ0FBQyxNQUFNLENBQUE7QUFDakksQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVO0lBQ3hCLE9BQU8sU0FBUyxJ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Q0FBQyxFQUNELEdBQUcsQ0FDSixDQUFBO0tBQ047SUFFRCxVQUFVLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUE7SUFDNUMsSUFBRyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUM7UUFDNUMsVUFBVSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUE7S0FDckU7SUFFRCxJQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBQztRQUM5QyxVQUFVLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQTtLQUMzQjtTQUNHO1FBQ0YsVUFBVSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUE7S0FDNUI7SUFFRCxJQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBQztRQUMzQyxVQUFVLENBQUMsa0JBQWtCLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQTtRQUM5RSxVQUFVLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsaUJBQWlCLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUMvSixVQUFVLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENB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QUVELE1BQU0sVUFBVSxTQUFTLENBQUMsS0FBYTtJQUNyQyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFBO0FBQzVDLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLE1BQWM7SUFDdkMsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQTtBQUMvQyxDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLE9BQWlCLEVBQUUsSUFBWTtJQUM5RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUN2QyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUU7WUFDOUMsT0FBTyxDQUFDLENBQUE7U0FDVDtLQUNGO0lBQ0QsT0FBTyxDQUFDLENBQUE7QUFDVixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnQGRjbC1zZGsvdXRpbHMnXG5cbmltcG9ydCB7IEF1ZGlvU291cmNlLCBFbnRpdHksIGVuZ2luZSB9IGZyb20gXCJAZGNsL3Nkay9lY3NcIjtcbmltcG9ydCB7IGFjdGl2ZU5QQywgY2xlYXJOUEMsIGNsb3NlRGlhbG9nV2luZG93LCBmb2xsb3dQYXRoLCBucGNEYXRhQ29tcG9uZW50LCBzdG9wUGF0aCwgc3RvcFdhbGtpbmcgfSBmcm9tIFwiLi9ucGNcIjtcbmltcG9ydCB7IElzVHlwaW5nRGlhbG9nIH0gZnJvbSBcIi4vY29tcG9uZW50c1wiO1xuaW1wb3J0IHsgaGFuZGxlRGlhbG9nVHlwaW5nIH0gZnJvbSBcIi4vc3lzdGVtc1wiO1xuaW1wb3J0IHsgRGlhbG9nLCBJbWFnZURhdGEsIE5QQ1N0YXRlIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IGxlZnRDbGlja1NlY3Rpb24sIGxlZnRDbGlja1NlY3Rpb25iQmxhY2ssIGxpZ2h0VGhlbWUsIHNlY3Rpb24sIHNraXBCdXR0b25TZWN0aW9uLCBza2lwQnV0dG9uU2VjdGlvbkJsYWNrIH0gZnJvbSAnLi91aSc7XG5pbXBvcnQgeyBnZXRCdWJibGVUZXh0TGVuZ3RoIH0gZnJvbSAnLi9idWJibGUnO1xuaW1wb3J0IHsgQ29sb3I0IH0gZnJvbSAnQGRjbC9zZGsvbWF0aCc7XG5cblxuZXhwb3J0IGNvbnN0IG5wY0RpYWxvZ0NvbXBvbmVudDogTWFwPEVudGl0eSwgYW55PiA9IG5ldyBNYXAoKVxuZXhwb3J0IGNvbnN0IG5wY0RpYWxvZ1R5cGluZ1N5c3RlbXM6IE1hcDxFbnRpdHksIGFueT4gPSBuZXcgTWFwKClcbmV4cG9ydCBjb25zdCBucGNEaWFsb2dJbnB1dExpc3RlbmVyOiBNYXA8RW50aXR5LGFueT4gPSBuZXcgTWFwKClcblxuZXhwb3J0IGVudW0gQ29uZmlybU1vZGUge1xuICAgIENvbmZpcm0gPSAwLFxuICAgIENhbmNlbCA9IDEsXG4gICAgTmV4dCA9IDIsXG4gICAgQnV0dG9uMyA9IDMsXG4gICAgQnV0dG9uNCA9IDRcbiAgfVxuXG5leHBvcnQgbGV0IFVJc2NhbGVNdWx0aXBsaWVyID0gMC43NVxuXG5sZXQgcG9ydHJhaXRYUG9zID0gLTUwICogVUlzY2FsZU11bHRpcGxpZXIgXG5sZXQgcG9ydHJhaXRZUG9zID0gMjAgKiBVSXNjYWxlTXVsdGlwbGllclxuXG5sZXQgaW1hZ2VYUG9zID0gMzUwICogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBpbWFnZVlQb3MgPSA1MCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5cbmxldCBwb3J0cmFpdFNjYWxlID0gMjU2ICogVUlzY2FsZU11bHRpcGxpZXIgXG5sZXQgaW1hZ2VTY2FsZSA9IDI1NiAqIFVJc2NhbGVNdWx0aXBsaWVyIFxuXG5sZXQgdGV4dFNpemUgPSAyNCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgdGV4dFlQb3MgPSAxMCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5cbmxldCBidXR0b25XaWR0aCA9IDE3NCogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBidXR0b25IZWlnaHQgPSA0NiogVUlzY2FsZU11bHRpcGxpZXJcblxuXG5sZXQgYnV0dG9uVGV4dFNpemUgPSAyMCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5cbmxldCBidXR0b24xWFBvcyA9IDE1MCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgYnV0dG9uMlhQb3MgPSAtODAgKiBVSXNjYWxlTXVsdGlwbGllclxubGV0IGJ1dHRvbjNYUG9zID0gLTgwICogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBidXR0b240WFBvcyA9IDE1MCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5cbmxldCBidXR0b24xWVBvcyA9IC02NSAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgYnV0dG9uMllQb3MgPSAtNjUgKiBVSXNjYWxlTXVsdGlwbGllclxubGV0IGJ1dHRvbjFZUG9zNCA9IC0yMCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgYnV0dG9uMllQb3M0ID0gLTIwICogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBidXR0b24zWVBvcyA9IC04MCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgYnV0dG9uNFlQb3MgPSAtODAgKiBVSXNjYWxlTXVsdGlwbGllclxuXG5sZXQgc2tpcEJ1dHRvblhQb3MgPSAtMzAwICogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBza2lwQnV0dG9uWVBvcyA9IC0xMDAgKiBVSXNjYWxlTXVsdGlwbGllclxuXG5sZXQgYnV0dG9uSWNvbldpZHRoID0gMjYgKiBVSXNjYWxlTXVsdGlwbGllclxubGV0IGJ1dHRvbkljb25IZWlnaHQgPSAyNiAqIFVJc2NhbGVNdWx0aXBsaWVyXG5cbmV4cG9ydCBmdW5jdGlvbiBhZGREaWFsb2cobnBjOkVudGl0eSwgc291bmQ/OnN0cmluZywgZGVmYXVsdFBvcnRyYWl0PzpJbWFnZURhdGEpe1xuICAgIGNvbnNvbGUubG9nKCdhZGRpbmcgZGlhbG9nIGZvciBucGMnLCBucGMpXG4gICAgbnBjRGlhbG9nQ29tcG9uZW50LnNldChucGMsIHtcbiAgICAgICAgdHlwaW5nOnRydWUsXG4gICAgICAgIHZpc2libGU6ZmFsc2UsXG4gICAgICAgIHZpc2libGVUZXh0OlwiXCIsXG4gICAgICAgIHZpc2libGVDaGFyczowLFxuICAgICAgICBmdWxsVGV4dDpcIlwiLFxuICAgICAgICB0aW1lcjowLFxuICAgICAgICBzcGVlZDozMCxcbiAgICAgICAgb3JpZ2luYWxTY3JpcHQ6W10sXG4gICAgICAgIHNjcmlwdDpbXSxcbiAgICAgICAgaW5kZXg6MCxcbiAgICAgICAgc291bmQ6IHNvdW5kID8gc291bmQgOiB1bmRlZmluZWQsXG4gICAgICAgIHNvdW5kUGxheWVyOiBzb3VuZCA/IGVuZ2luZS5hZGRFbnRpdHkoKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZm9udFNpemU6MjIsXG4gICAgICAgIGlzUXVlc3Rpb246ZmFsc2UsXG4gICAgICAgIGJ1dHRvbnM6MCxcbiAgICAgICAgZGlzcGxheVBvcnRyYWl0OiBkZWZhdWx0UG9ydHJhaXQgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHRQb3J0cmFpdDogZGVmYXVsdFBvcnRyYWl0ID8gZGVmYXVsdFBvcnRyYWl0IDogbnVsbCxcbiAgICAgICAgZGVmYXVsdFBvcnRyYWl0VGV4dHVyZTogZGVmYXVsdFBvcnRyYWl0ID8gZGVmYXVsdFBvcnRyYWl0LnBhdGggOiBsaWdodFRoZW1lLFxuICAgICAgICBwb3J0cmFpdFdpZHRoOiBkZWZhdWx0UG9ydHJhaXQgJiYgZGVmYXVsdFBvcnRyYWl0LndpZHRoID8gZGVmYXVsdFBvcnRyYWl0LndpZHRoICogVUlzY2FsZU11bHRpcGxpZXIgOiBwb3J0cmFpdFNjYWxlLFxuICAgICAgICBwb3J0cmFpdEhlaWdodDogZGVmYXVsdFBvcnRyYWl0ICYmIGRlZmF1bHRQb3J0cmFpdC5oZWlnaHQgPyBkZWZhdWx0UG9ydHJhaXQuaGVpZ2h0ICogVUlzY2FsZU11bHRpcGxpZXIgOiBwb3J0cmFpdFNjYWxlLFxuICAgICAgICBwb3J0cmFpdFg6IGRlZmF1bHRQb3J0cmFpdCAmJiBkZWZhdWx0UG9ydHJhaXQub2Zmc2V0WCA/IGRlZmF1bHRQb3J0cmFpdC5vZmZzZXRYICogVUlzY2FsZU11bHRpcGxpZXIgKyBwb3J0cmFpdFhQb3MgOiBwb3J0cmFpdFhQb3MsXG4gICAgICAgIHBvcnRyYWl0WTogIGRlZmF1bHRQb3J0cmFpdCAmJiBkZWZhdWx0UG9ydHJhaXQub2Zmc2V0WSA/IGRlZmF1bHRQb3J0cmFpdC5vZmZzZXRZICogVUlzY2FsZU11bHRpcGxpZXIgKyBwb3J0cmFpdFlQb3MgOiBwb3J0cmFpdFlQb3MsXG4gICAgICAgIHBvcnRhaXRTSGVpZ2h0OiBkZWZhdWx0UG9ydHJhaXQgJiYgZGVmYXVsdFBvcnRyYWl0LnNlY3Rpb24gJiYgZGVmYXVsdFBvcnRyYWl0LnNlY3Rpb24uc291cmNlSGVpZ2h0ID8gZGVmYXVsdFBvcnRyYWl0LnNlY3Rpb24uc291cmNlSGVpZ2h0IDogMjU2LFxuICAgICAgICBwb3J0cmFpdFNXaWR0aDogZGVmYXVsdFBvcnRyYWl0ICYmIGRlZmF1bHRQb3J0cmFpdC5zZWN0aW9uICYmIGRlZmF1bHRQb3J0cmFpdC5zZWN0aW9uLnNvdXJjZVdpZHRoID8gZGVmYXVsdFBvcnRyYWl0LnNlY3Rpb24uc291cmNlV2lkdGggOiAyNTYsXG4gICAgICAgIHBvcnRhaXRTVG9wOiBkZWZhdWx0UG9ydHJhaXQgJiYgZGVmYXVsdFBvcnRyYWl0LnNlY3Rpb24gJiYgZGVmYXVsdFBvcnRyYWl0LnNlY3Rpb24uc291cmNlVG9wID8gZGVmYXVsdFBvcnRyYWl0LnNlY3Rpb24uc291cmNlVG9wIDogMCxcbiAgICAgICAgcG9ydHJhaXRTTGVmdDogZGVmYXVsdFBvcnRyYWl0ICYmIGRlZmF1bHRQb3J0cmFpdC5zZWN0aW9uICYmIGRlZmF1bHRQb3J0cmFpdC5zZWN0aW9uLnNvdXJjZUxlZnQgPyBkZWZhdWx0UG9ydHJhaXQuc2VjdGlvbi5zb3VyY2VMZWZ0IDogMFxuICAgIH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXNwbGF5SW1hZ2UoKXtcbiAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gZmFsc2UgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLmRpc3BsYXlJbWFnZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGxheVBvcnRyYWl0KCl7XG4gIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IGZhbHNlIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5kaXNwbGF5UG9ydHJhaXRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3BsYXlTa2lwYWJsZSgpe1xuICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyBmYWxzZSA6IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkuc2tpcGFibGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNraXBhYmxlVGhlbWUoKXtcbiAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gc2tpcEJ1dHRvblNlY3Rpb25CbGFjayA6IG5wY0RhdGFDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLnRoZW1lID09IGxpZ2h0VGhlbWUgPyBza2lwQnV0dG9uU2VjdGlvbkJsYWNrIDogc2tpcEJ1dHRvblNlY3Rpb25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExlZnRDbGlja1RoZW1lKCl7XG4gIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IGxlZnRDbGlja1NlY3Rpb24gOiBucGNEYXRhQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS50aGVtZSA9PSBsaWdodFRoZW1lID8gbGVmdENsaWNrU2VjdGlvbiA6IGxlZnRDbGlja1NlY3Rpb25iQmxhY2tcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvc2l0aW9uVGV4dFgoKXtcbiAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gXCJcIiA6IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkucG9zaXRpb25YXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3NpdGlvblRleHRZKCl7XG4gIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLnBvc2l0aW9uWVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9zaXRpb25Qb3J0YWl0WCgpe1xuICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyBcIlwiIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5wb3J0cmFpdFhcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvc2l0aW9uUG9ydGFpdFkoKXtcbiAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gXCJcIiA6IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkucG9ydHJhaXRZXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3J0cmFpdFdpZHRoKCl7XG4gIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLnBvcnRyYWl0V2lkdGhcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvcnRyYWl0SGVpZ2h0KCl7XG4gIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLnBvcnRyYWl0SGVpZ2h0XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3NpdGlvbkltYWdlWCgpe1xuICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyBcIlwiIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5pbWFnZVhcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvc2l0aW9uSW1hZ2VZKCl7XG4gIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLmltYWdlWVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW1hZ2VXaWR0aCgpe1xuICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyBcIlwiIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5pbWFnZVdpZHRoXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbWFnZUhlaWdodCgpe1xuICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyBcIlwiIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5pbWFnZUhlaWdodFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UG9ydHJhaXQoKXtcbiAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gXCJcIiA6IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkuZGVmYXVsdFBvcnRyYWl0VGV4dHVyZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW1hZ2UoKXtcbiAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gXCJcIiA6IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkuZGlhbG9nSW1hZ2VUZXh0dXJlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZXh0KCl7XG4gICAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gXCJcIiA6IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkudmlzaWJsZVRleHRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRleHRDb2xvcigpe1xuICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyBDb2xvcjQuQmxhY2soKSA6IG5wY0RhdGFDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLnRoZW1lID09IGxpZ2h0VGhlbWUgPyBDb2xvcjQuQmxhY2soKSA6IENvbG9yNC5XaGl0ZSgpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUaGVtZSgpe1xuICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyBsaWdodFRoZW1lIDogbnBjRGF0YUNvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkudGhlbWVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEJ1dHRvblRleHQoYnV0dG9uOm51bWJlcil7XG4gICAgbGV0IHRleHQgPSBcIlwiXG5cbiAgICBpZihhY3RpdmVOUEMgIT0gMCAmJiBucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpKXtcbiAgICAgICAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpXG4gICAgICAgIGlmKGRpYWxvZ0RhdGEuaXNRdWVzdGlvbiAmJiBkaWFsb2dEYXRhLmJ1dHRvbnMgPiBidXR0b24pe1xuICAgICAgICAgICAgdGV4dCA9IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmJ1dHRvbnNbYnV0dG9uXS5sYWJlbFxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0ZXh0XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb250U2l6ZSgpe1xuICAgIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IDIyIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5mb250U2l6ZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGxheURpYWxvZygpe1xuICAgIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IGZhbHNlIDogIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkudmlzaWJsZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGxheUJ1dHRvbihidXR0b246bnVtYmVyKXtcbiAgICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyBmYWxzZSA6ICBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLmlzUXVlc3Rpb24gJiYgbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5idXR0b25zID49IGJ1dHRvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGxheUZpcnN0QnV0dG9uQ29udGFpbmVyKCl7XG4gICAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gZmFsc2UgOiAgbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5pc1F1ZXN0aW9uICYmIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkuYnV0dG9ucyA+PSAxXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXNwbGF5U2Vjb25kQnV0dG9uQ29udGFpbmVyKCl7XG4gICAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gZmFsc2UgOiAgbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5pc1F1ZXN0aW9uICYmIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkuYnV0dG9ucyA+PSAzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZXh0UG9zaXRpb24oKXtcbiAgICAvL2NvbnNvbGUubG9nKG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkuYnV0dG9ucylcbiAgICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyB7dG9wOjAsIGxlZnQ6MH0gOiB7dG9wOm5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkubWFyZ2luICsgbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5wb3NpdGlvblksIGxlZnQ6IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkucG9zaXRpb25YfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnV0dG9uQ2xpY2soYnV0dG9uOm51bWJlcil7XG4gICAgaWYoYWN0aXZlTlBDICE9IDAgJiYgbnBjRGF0YUNvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkpe1xuICAgICAgICBjb25maXJtVGV4dChhY3RpdmVOUEMgYXMgRW50aXR5LCBidXR0b24pXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xvc2VEaWFsb2cobnBjOkVudGl0eSl7XG4gICAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYylcbiAgICBkaWFsb2dEYXRhLnZpc2libGUgPSBmYWxzZVxuICAgIGRpYWxvZ0RhdGEudHlwaW5nID0gZmFsc2VcbiAgICBkaWFsb2dEYXRhLnZpc2libGVUZXh0ID0gXCJcIlxuICAgIGRpYWxvZ0RhdGEudmlzaWJsZUNoYXJzID0gMFxuICAgIGRpYWxvZ0RhdGEuZnVsbFRleHQgPSBcIlwiXG4gICAgZGlhbG9nRGF0YS50aW1lciA9IDBcbiAgICBkaWFsb2dEYXRhLmluZGV4ID0gMFxuICAgIGRpYWxvZ0RhdGEuc2NyaXB0Lmxlbmd0aCA9IDBcbiAgICBkaWFsb2dEYXRhLmJ1dHRvbnMgPSAwXG4gICAgZGlhbG9nRGF0YS5tYXJnaW4gPSAwXG4gICAgZGlhbG9nRGF0YS5kaXNwbGF5UG9ydHJhaXQgPSBmYWxzZVxuICAgIGRpYWxvZ0RhdGEuc2tpcGFibGUgPSBmYWxzZVxuICAgIGRpYWxvZ0RhdGEuZGlzcGxheUltYWdlID0gZmFsc2VcbiAgICBjb25zb2xlLmxvZygnZGlhbG9nIGRhdGEgaXMgbm93ICcsIGRpYWxvZ0RhdGEpXG5cbiAgICBpZihJc1R5cGluZ0RpYWxvZy5oYXMobnBjKSl7XG4gICAgICBJc1R5cGluZ0RpYWxvZy5kZWxldGVGcm9tKG5wYylcbiAgICB9XG4gICAgaWYobnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS5tYW51YWxTdG9wKXtcbiAgICAgIGNvbnNvbGUubG9nKCdkaWFsb2cgZW5kZWQsIG5lZWR0byB3YWxrIGFnYWluJylcbiAgICAgIGZvbGxvd1BhdGgobnBjKVxuICAgIH1cbiAgICBjbGVhck5QQygpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWxrKG5wYzpFbnRpdHksIGRpYWxvZzpEaWFsb2dbXSwgc3RhcnRJbmRleD86bnVtYmVyIHwgc3RyaW5nLCBkdXJhdGlvbj86bnVtYmVyKXtcbiAgICBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLmludHJvZHVjZWQgPSB0cnVlXG4gICAgaWYobnBjRGlhbG9nQ29tcG9uZW50LmhhcyhucGMpKXtcblxuICAgICAgICBpZihucGNEYXRhQ29tcG9uZW50LmdldChucGMpLnN0YXRlID09IE5QQ1N0YXRlLkZPTExPV1BBVEgpe1xuICAgICAgICAgIGNvbnNvbGUubG9nKFwic3BlYWtpbmcgZGlhbG9nLCBuZWVkIHRvIHN0b3AgcGF0aFwiKVxuICAgICAgICAgIHN0b3BXYWxraW5nKG5wYylcbiAgICAgICAgfVxuXG4gICAgICAgIG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykuc3RhdGUgPSBOUENTdGF0ZS5UQUxLSU5HXG5cblxuICAgICAgICBsZXQgaW5kZXg6YW55XG5cbiAgICAgICAgaWYgKCFzdGFydEluZGV4KSB7XG4gICAgICAgICAgaW5kZXggPSAwXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHN0YXJ0SW5kZXggPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgaW5kZXggPSBzdGFydEluZGV4XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaW5kZXggPSBmaW5kRGlhbG9nQnlOYW1lKGRpYWxvZywgc3RhcnRJbmRleClcbiAgICAgICAgfVxuXG4gICAgICAgIG9wZW5EaWFsb2cobnBjLGRpYWxvZywgaW5kZXgpXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gb3BlbkRpYWxvZyhucGM6RW50aXR5LCBkaWFsb2c6RGlhbG9nW10sIHN0YXJ0SW5kZXg6bnVtYmVyKXtcbiAgICBjb25zb2xlLmxvZygnc2NyaXB0IHRvIHRhbGsgaXMnLCBkaWFsb2cpXG4gICAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYylcbiAgICBkaWFsb2dEYXRhLnNjcmlwdCA9IGRpYWxvZy5zbGljZSgpXG4gICAgZGlhbG9nRGF0YS5pbmRleCA9IHN0YXJ0SW5kZXhcblxuICAgIGNvbnNvbGUubG9nKCdkaWFsb2cgZGF0YSBpcyBub3cnLCBkaWFsb2dEYXRhKVxuICAgIFxuICAgIGxldCBjdXJyZW50VGV4dDogRGlhbG9nID0gZGlhbG9nW3N0YXJ0SW5kZXhdID8gZGlhbG9nW3N0YXJ0SW5kZXhdIDogeyB0ZXh0OiAnJyB9XG5cbiAgICBpZiAoY3VycmVudFRleHQuYXVkaW8pIHtcbiAgICAgICAgQXVkaW9Tb3VyY2UuY3JlYXRlT3JSZXBsYWNlKGRpYWxvZ0RhdGEuc291bmRQbGF5ZXIsIHtcbiAgICAgICAgICAgIGF1ZGlvQ2xpcFVybDogY3VycmVudFRleHQuYXVkaW8sXG4gICAgICAgICAgICBsb29wOiBmYWxzZSxcbiAgICAgICAgICAgIHBsYXlpbmc6IGZhbHNlXG4gICAgICAgIH0pXG4gICAgICAgIGxldCBhdWRpbyA9IEF1ZGlvU291cmNlLmdldE11dGFibGUoZGlhbG9nRGF0YS5zb3VuZFBsYXllcilcbiAgICAgICAgYXVkaW8udm9sdW1lID0gMC41XG4gICAgICAgIGF1ZGlvLnBsYXlpbmcgPSB0cnVlXG4gICAgfSBlbHNlIGlmIChkaWFsb2dEYXRhLnNvdW5kKSB7XG4gICAgICAgIEF1ZGlvU291cmNlLmNyZWF0ZU9yUmVwbGFjZShkaWFsb2dEYXRhLnNvdW5kUGxheWVyLCB7XG4gICAgICAgICAgICBhdWRpb0NsaXBVcmw6IGRpYWxvZ0RhdGEuc291bmQsXG4gICAgICAgICAgICBsb29wOiBmYWxzZSxcbiAgICAgICAgICAgIHBsYXlpbmc6IGZhbHNlXG4gICAgICAgIH0pXG4gICAgICAgIGxldCBhdWRpbyA9IEF1ZGlvU291cmNlLmdldE11dGFibGUoZGlhbG9nRGF0YS5zb3VuZFBsYXllcilcbiAgICAgICAgYXVkaW8udm9sdW1lID0gMC41XG4gICAgICAgIGF1ZGlvLnBsYXlpbmcgPSB0cnVlXG4gICAgfVxuXG4gICAgLy9UT0RPXG4gICAgLy9zZXQgaW1hZ2Ugb24gdGhlIHJpZ2h0XG4gICAgLy9zZXQgdGV4dFxuICAgIGJlZ2luVHlwaW5nKG5wYylcbn0gXG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRMaW5lQnJlYWsodGV4dDpzdHJpbmcsIGJ1YmJsZT86Ym9vbGVhbil7XG4gIHJldHVybiBsaW5lQnJlYWsodGV4dCwgYnViYmxlPyBnZXRCdWJibGVUZXh0TGVuZ3RoKHRleHQpISA6IDQ1KVxufVxuXG5mdW5jdGlvbiBiZWdpblR5cGluZyhucGM6RW50aXR5KXtcbiAgICBsZXQgZGlhbG9nRGF0YSA9IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQobnBjKVxuICAgIGRpYWxvZ0RhdGEuZnVsbFRleHQgPSBhZGRMaW5lQnJlYWsoZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0udGV4dCkgLy9kaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS50ZXh0XG4gICAgZGlhbG9nRGF0YS52aXNpYmxlID0gdHJ1ZVxuICAgIGRpYWxvZ0RhdGEudHlwaW5nID0gdHJ1ZVxuICAgIGRpYWxvZ0RhdGEudmlzaWJsZVRleHQgPSBcIlwiXG4gICAgZGlhbG9nRGF0YS52aXNpYmxlQ2hhcnMgPSAwXG4gICAgZGlhbG9nRGF0YS50aW1lciA9IDBcbiAgICBkaWFsb2dEYXRhLmlzUXVlc3Rpb24gPSBmYWxzZVxuICAgIGRpYWxvZ0RhdGEuYnV0dG9ucyA9IDBcbiAgICBkaWFsb2dEYXRhLmRpc3BsYXlQb3J0cmFpdCA9IGZhbHNlXG4gICAgZGlhbG9nRGF0YS5kaXNwbGF5SW1hZ2UgPSBmYWxzZVxuICAgIGRpYWxvZ0RhdGEuc2tpcGFibGUgPSBmYWxzZVxuXG4gICAgbGV0IGN1cnJlbnRUZXh0OiBEaWFsb2cgPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XSA/IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdIDogeyB0ZXh0OiAnJyB9XG4gICAgaWYoY3VycmVudFRleHQucG9ydHJhaXQpe1xuICAgICAgZGlhbG9nRGF0YS5kZWZhdWx0UG9ydHJhaXRUZXh0dXJlID0gY3VycmVudFRleHQucG9ydHJhaXQucGF0aFxuXG4gICAgICBkaWFsb2dEYXRhLnBvcnRyYWl0WCA9IGN1cnJlbnRUZXh0LnBvcnRyYWl0Lm9mZnNldFhcbiAgICAgID8gY3VycmVudFRleHQucG9ydHJhaXQub2Zmc2V0WCAqIFVJc2NhbGVNdWx0aXBsaWVyICsgcG9ydHJhaXRYUG9zXG4gICAgICA6IHBvcnRyYWl0WFBvc1xuXG4gICAgICBkaWFsb2dEYXRhLnBvcnRyYWl0WSA9IGN1cnJlbnRUZXh0LnBvcnRyYWl0Lm9mZnNldFlcbiAgICAgID8gY3VycmVudFRleHQucG9ydHJhaXQub2Zmc2V0WSAqIFVJc2NhbGVNdWx0aXBsaWVyICsgcG9ydHJhaXRZUG9zXG4gICAgICA6IHBvcnRyYWl0WVBvc1xuXG4gICAgICBkaWFsb2dEYXRhLnBvcnRyYWl0V2lkdGggPSBjdXJyZW50VGV4dC5wb3J0cmFpdC53aWR0aCA/IGN1cnJlbnRUZXh0LnBvcnRyYWl0LndpZHRoICogVUlzY2FsZU11bHRpcGxpZXIgOiBwb3J0cmFpdFNjYWxlXG5cbiAgICAgIGRpYWxvZ0RhdGEucG9ydHJhaXRIZWlnaHQgPSBjdXJyZW50VGV4dC5wb3J0cmFpdC5oZWlnaHQgPyBjdXJyZW50VGV4dC5wb3J0cmFpdC5oZWlnaHQgKiBVSXNjYWxlTXVsdGlwbGllciA6IHBvcnRyYWl0U2NhbGVcbiAgICAgIGRpYWxvZ0RhdGEuZGlzcGxheVBvcnRyYWl0ID0gdHJ1ZVxuICAgIH1lbHNlIGlmKGRpYWxvZ0RhdGEuZGVmYXVsdFBvcnRyYWl0KXtcbiAgICAgIGRpYWxvZ0RhdGEuZGlzcGxheVBvcnRyYWl0ID0gdHJ1ZVxuICAgIH1cbiAgICBlbHNle1xuICAgICAgZGlhbG9nRGF0YS5kaXNwbGF5UG9ydHJhaXQgPSBmYWxzZVxuICAgIH1cblxuICAgIGlmKGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmlzUXVlc3Rpb24pe1xuICAgICAgICBkaWFsb2dEYXRhLmJ1dHRvbnMgPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5idXR0b25zLmxlbmd0aFxuICAgICAgICBpZihkaWFsb2dEYXRhLmJ1dHRvbnMgPj0gMyl7XG4gICAgICAgICAgICBkaWFsb2dEYXRhLm1hcmdpbiA9IC0yNVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYoZGlhbG9nRGF0YS5idXR0b25zID49MSl7XG4gICAgICAgICAgICBkaWFsb2dEYXRhLm1hcmdpbiA9IC0yNVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coZGlhbG9nRGF0YSlcbiAgICAgICAgdXRpbHMudGltZXJzLnNldFRpbWVvdXQoXG4gICAgICAgICAgICBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnc2V0dGluZyBxdWVzdGlvbiB0byB0cnVlJylcbiAgICAgICAgICAgICAgICBkaWFsb2dEYXRhLmlzUXVlc3Rpb24gPSB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgNzAwXG4gICAgICAgICAgKVxuICAgIH1cblxuICAgIGRpYWxvZ0RhdGEub3BlblRpbWUgPSBNYXRoLmZsb29yKERhdGUubm93KCkpXG4gICAgaWYoZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uZm9udFNpemUpe1xuICAgICAgICBkaWFsb2dEYXRhLmZvbnRTaXplID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uZm9udFNpemVcbiAgICB9XG5cbiAgICBpZihkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5za2lwYWJsZSl7XG4gICAgICBkaWFsb2dEYXRhLnNraXBhYmxlID0gdHJ1ZVxuICAgIH1cbiAgICBlbHNle1xuICAgICAgZGlhbG9nRGF0YS5za2lwYWJsZSA9IGZhbHNlXG4gICAgfVxuXG4gICAgaWYoZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uaW1hZ2Upe1xuICAgICAgZGlhbG9nRGF0YS5kaWFsb2dJbWFnZVRleHR1cmUgPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5pbWFnZS5wYXRoXG4gICAgICBkaWFsb2dEYXRhLmltYWdlWCA9IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmltYWdlLm9mZnNldFggPyBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5pbWFnZS5vZmZzZXRYICogVUlzY2FsZU11bHRpcGxpZXIgKyBpbWFnZVhQb3MgOiAtNDBcbiAgICAgIGRpYWxvZ0RhdGEuaW1hZ2VZID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uaW1hZ2Uub2Zmc2V0WSA/IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmltYWdlLm9mZnNldFkgKiBVSXNjYWxlTXVsdGlwbGllciArIGltYWdlWVBvcyA6IDQwXG4gICAgICBkaWFsb2dEYXRhLmltYWdlSGVpZ2h0ID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uaW1hZ2UuaGVpZ2h0ID8gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uaGVpZ2h0ICogVUlzY2FsZU11bHRpcGxpZXIgOiBpbWFnZVNjYWxlXG4gICAgICBkaWFsb2dEYXRhLmltYWdlV2lkdGggPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5pbWFnZS53aWR0aCA/IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLndpZHRoICogVUlzY2FsZU11bHRpcGxpZXIgOiBpbWFnZVNjYWxlXG4gICAgICBkaWFsb2dEYXRhLmRpc3BsYXlJbWFnZSA9IHRydWVcbiAgICB9XG5cbiAgICBkaWFsb2dEYXRhLnBvc2l0aW9uWCA9IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLm9mZnNldFggPyBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5vZmZzZXRYICogVUlzY2FsZU11bHRpcGxpZXIgOiAnMjIlJ1xuICAgIGRpYWxvZ0RhdGEucG9zaXRpb25ZID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0ub2Zmc2V0WSA/IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLm9mZnNldFkgKiBVSXNjYWxlTXVsdGlwbGllciArIHRleHRZUG9zIDogdGV4dFlQb3NcbiAgICBcbiAgICBpZihkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5oYXNPd25Qcm9wZXJ0eShcInR5cGVTcGVlZFwiKSl7XG4gICAgICAgIGRpYWxvZ0RhdGEuc3BlZWQgPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS50eXBlU3BlZWRcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgICAgZGlhbG9nRGF0YS5zcGVlZCA9IDMwXG4gICAgfVxuXG4gICAgaWYoZGlhbG9nRGF0YS5zcGVlZCA8PSAwKXtcbiAgICAgICAgcnVzaFRleHQobnBjKVxuICAgIH1cbiAgICBlbHNle1xuICAgICAgICBpZighSXNUeXBpbmdEaWFsb2cuaGFzKG5wYykpe1xuICAgICAgICAgICAgSXNUeXBpbmdEaWFsb2cuY3JlYXRlKG5wYylcbiAgICAgICAgfVxuICAgIFxuICAgICAgICAvLyBpZighbnBjRGlhbG9nVHlwaW5nU3lzdGVtcy5oYXMobnBjKSl7XG4gICAgICAgIC8vICAgICBucGNEaWFsb2dUeXBpbmdTeXN0ZW1zLnNldChucGMsZW5naW5lLmFkZFN5c3RlbShoYW5kbGVEaWFsb2dUeXBpbmcpKVxuICAgICAgICAvLyB9XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkTGluZUJyZWFrcyhkaWFsb2c6RGlhbG9nW10sIGJ1YmJsZT86Ym9vbGVhbil7XG4gICAgbGV0IGNsZWFuZWQ6RGlhbG9nW10gPSBkaWFsb2cuc2xpY2UoKVxuICAgIGNsZWFuZWQuZm9yRWFjaCgoZCk9PntcbiAgICAgIGQudGV4dCA9IGxpbmVCcmVhayhkLnRleHQsIGJ1YmJsZT8gZ2V0QnViYmxlVGV4dExlbmd0aChkLnRleHQpISA6IDUwKVxuICAgIH0pXG4gICAgcmV0dXJuIGNsZWFuZWRcbn1cblxuZnVuY3Rpb24gbGluZUJyZWFrKHRleHQ6IHN0cmluZywgbWF4TGluZUxlbmd0aDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCB3b3JkcyA9IHRleHQuc3BsaXQoJyAnKTtcbiAgICBsZXQgY3VycmVudExpbmUgPSAnJztcbiAgICBjb25zdCBsaW5lcyA9IFtdO1xuICBcbiAgICBmb3IgKGNvbnN0IHdvcmQgb2Ygd29yZHMpIHtcbiAgICAgIGlmIChjdXJyZW50TGluZS5sZW5ndGggKyB3b3JkLmxlbmd0aCArIDEgPD0gbWF4TGluZUxlbmd0aCkge1xuICAgICAgICBjdXJyZW50TGluZSArPSBgJHt3b3JkfSBgO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGluZXMucHVzaChjdXJyZW50TGluZS50cmltKCkpO1xuICAgICAgICBjdXJyZW50TGluZSA9IGAke3dvcmR9IGA7XG4gICAgICB9XG4gICAgfVxuICAgIGxpbmVzLnB1c2goY3VycmVudExpbmUudHJpbSgpKTtcbiAgICByZXR1cm4gbGluZXMuam9pbignXFxuJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVEaWFsb2dDbGljaygpe1xuICBjb25zb2xlLmxvZygnaGFuZGxpbmcgY2xpY2snKVxuICAgIGxldCBucGMgPSBhY3RpdmVOUEMgYXMgRW50aXR5XG4gICAgaWYobnBjRGlhbG9nQ29tcG9uZW50LmhhcyhucGMpKXtcbiAgICAgICAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYylcbiAgICAgICAgaWYoIWRpYWxvZ0RhdGEudmlzaWJsZSB8fCAoTWF0aC5mbG9vcihEYXRlLm5vdygpKSAtIGRpYWxvZ0RhdGEub3BlblRpbWUgIDwgMTAwKSkgcmV0dXJuXG4gICAgICAgIFxuICAgICAgICBpZihkaWFsb2dEYXRhLnR5cGluZyl7XG4gICAgICAgICAgICBydXNoVGV4dChucGMpXG4gICAgICAgIH1cbiAgICAgICAgZWxzZXtcbiAgICAgICAgICAgIGNvbmZpcm1UZXh0KG5wYywgQ29uZmlybU1vZGUuTmV4dClcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1c2hUZXh0KG5wYzpFbnRpdHkpe1xuICAgIGxldCBkaWFsb2dEYXRhID0gbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpXG4gICAgZGlhbG9nRGF0YS50eXBpbmcgPSBmYWxzZVxuICAgIGRpYWxvZ0RhdGEudGltZXIgPSAwXG4gICAgZGlhbG9nRGF0YS52aXNpYmxlQ2hhcnMgPSBkaWFsb2dEYXRhLmZ1bGxUZXh0Lmxlbmd0aFxuICAgIGRpYWxvZ0RhdGEudmlzaWJsZVRleHQgPSBkaWFsb2dEYXRhLmZ1bGxUZXh0XG4gICAgLy9lbmdpbmUucmVtb3ZlU3lzdGVtKG5wY0RpYWxvZ1R5cGluZ1N5c3RlbXMuZ2V0KG5wYykpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25maXJtVGV4dChucGM6RW50aXR5LCBtb2RlOiBDb25maXJtTW9kZSk6IHZvaWQge1xuICBjb25zb2xlLmxvZygnY29uZmlybSB0ZXh0JylcbiAgICBsZXQgZGlhbG9nRGF0YSA9IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQobnBjKVxuICAgIGRpYWxvZ0RhdGEub3BlblRpbWUgPSBNYXRoLmZsb29yKERhdGUubm93KCkpXG5cbiAgICBsZXQgY3VycmVudFRleHQgPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XVxuICAgIC8vIFVwZGF0ZSBhY3RpdmUgdGV4dFxuICAgIGlmIChtb2RlID09IENvbmZpcm1Nb2RlLk5leHQpIHtcbiAgICAgICAgaWYgKCFjdXJyZW50VGV4dC5pc1F1ZXN0aW9uKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFRleHQudHJpZ2dlcmVkQnlOZXh0KSB7XG4gICAgICAgICAgICBjdXJyZW50VGV4dC50cmlnZ2VyZWRCeU5leHQoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGN1cnJlbnRUZXh0LmlzRW5kT2ZEaWFsb2cpIHtcbiAgICAgICAgICAgIGNsb3NlRGlhbG9nKG5wYylcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGlhbG9nRGF0YS5pbmRleCsrXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kZSA9PSBDb25maXJtTW9kZS5Db25maXJtKSB7XG4gICAgICAgIGlmIChjdXJyZW50VGV4dC5idXR0b25zICYmIGN1cnJlbnRUZXh0LmJ1dHRvbnMubGVuZ3RoID49IDEpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGN1cnJlbnRUZXh0LmJ1dHRvbnNbMF0uZ29Ub0RpYWxvZyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIGRpYWxvZ0RhdGEuaW5kZXggPSBjdXJyZW50VGV4dC5idXR0b25zWzBdLmdvVG9EaWFsb2dcbiAgICAgICAgICB9IFxuXG4gICAgICAgICAgLy9UT0RPXG4gICAgICAgICAgLy9hbGxvdyBkaWFsb2dzIHRvIGJlIGluZGV4IGJ5IG5hbWVcbiAgICAgICAgLy8gICBlbHNlIHtcbiAgICAgICAgLy8gICAgIHRoaXMuYWN0aXZlVGV4dElkID0gZmluZERpYWxvZ0J5TmFtZSh0aGlzLk5QQ1NjcmlwdCwgY3VycmVudFRleHQuYnV0dG9uc1swXS5nb1RvRGlhbG9nKVxuICAgICAgICAvLyAgIH1cbiAgICAgICAgICBpZiAoY3VycmVudFRleHQuYnV0dG9uc1swXS50cmlnZ2VyZWRBY3Rpb25zKSB7XG4gICAgICAgICAgICBjdXJyZW50VGV4dC5idXR0b25zWzBdLnRyaWdnZXJlZEFjdGlvbnMoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtb2RlID09IENvbmZpcm1Nb2RlLkNhbmNlbCkge1xuICAgICAgICBpZiAoY3VycmVudFRleHQuYnV0dG9ucyAmJiBjdXJyZW50VGV4dC5idXR0b25zLmxlbmd0aCA+PSAxKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBjdXJyZW50VGV4dC5idXR0b25zWzFdLmdvVG9EaWFsb2cgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBkaWFsb2dEYXRhLmluZGV4ID0gY3VycmVudFRleHQuYnV0dG9uc1sxXS5nb1RvRGlhbG9nXG4gICAgICAgICAgfSBcblxuICAgICAgICAgIC8vVE9ET1xuICAgICAgICAgIC8vYWxsb3cgZGlhbG9ncyB0byBiZSBpbmRleCBieSBuYW1lXG4gICAgICAgIC8vICAgZWxzZSB7XG4gICAgICAgIC8vICAgICB0aGlzLmFjdGl2ZVRleHRJZCA9IGZpbmREaWFsb2dCeU5hbWUodGhpcy5OUENTY3JpcHQsIGN1cnJlbnRUZXh0LmJ1dHRvbnNbMF0uZ29Ub0RpYWxvZylcbiAgICAgICAgLy8gICB9XG4gICAgICAgICAgaWYgKGN1cnJlbnRUZXh0LmJ1dHRvbnNbMV0udHJpZ2dlcmVkQWN0aW9ucykge1xuICAgICAgICAgICAgY3VycmVudFRleHQuYnV0dG9uc1sxXS50cmlnZ2VyZWRBY3Rpb25zKClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kZSA9PSBDb25maXJtTW9kZS5CdXR0b24zKSB7XG4gICAgICAgIGlmIChjdXJyZW50VGV4dC5idXR0b25zICYmIGN1cnJlbnRUZXh0LmJ1dHRvbnMubGVuZ3RoID49IDEpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGN1cnJlbnRUZXh0LmJ1dHRvbnNbMl0uZ29Ub0RpYWxvZyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIGRpYWxvZ0RhdGEuaW5kZXggPSBjdXJyZW50VGV4dC5idXR0b25zWzJdLmdvVG9EaWFsb2dcbiAgICAgICAgICB9IFxuXG4gICAgICAgICAgLy9UT0RPXG4gICAgICAgICAgLy9hbGxvdyBkaWFsb2dzIHRvIGJlIGluZGV4IGJ5IG5hbWVcbiAgICAgICAgLy8gICBlbHNlIHtcbiAgICAgICAgLy8gICAgIHRoaXMuYWN0aXZlVGV4dElkID0gZmluZERpYWxvZ0J5TmFtZSh0aGlzLk5QQ1NjcmlwdCwgY3VycmVudFRleHQuYnV0dG9uc1swXS5nb1RvRGlhbG9nKVxuICAgICAgICAvLyAgIH1cbiAgICAgICAgICBpZiAoY3VycmVudFRleHQuYnV0dG9uc1syXS50cmlnZ2VyZWRBY3Rpb25zKSB7XG4gICAgICAgICAgICBjdXJyZW50VGV4dC5idXR0b25zWzJdLnRyaWdnZXJlZEFjdGlvbnMoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtb2RlID09IENvbmZpcm1Nb2RlLkJ1dHRvbjQpIHtcbiAgICAgICAgaWYgKGN1cnJlbnRUZXh0LmJ1dHRvbnMgJiYgY3VycmVudFRleHQuYnV0dG9ucy5sZW5ndGggPj0gMSkge1xuICAgICAgICAgIGlmICh0eXBlb2YgY3VycmVudFRleHQuYnV0dG9uc1szXS5nb1RvRGlhbG9nID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgZGlhbG9nRGF0YS5pbmRleCA9IGN1cnJlbnRUZXh0LmJ1dHRvbnNbM10uZ29Ub0RpYWxvZ1xuICAgICAgICAgIH0gXG5cbiAgICAgICAgICAvL1RPRE9cbiAgICAgICAgICAvL2FsbG93IGRpYWxvZ3MgdG8gYmUgaW5kZXggYnkgbmFtZVxuICAgICAgICAvLyAgIGVsc2Uge1xuICAgICAgICAvLyAgICAgdGhpcy5hY3RpdmVUZXh0SWQgPSBmaW5kRGlhbG9nQnlOYW1lKHRoaXMuTlBDU2NyaXB0LCBjdXJyZW50VGV4dC5idXR0b25zWzBdLmdvVG9EaWFsb2cpXG4gICAgICAgIC8vICAgfVxuICAgICAgICAgIGlmIChjdXJyZW50VGV4dC5idXR0b25zWzNdLnRyaWdnZXJlZEFjdGlvbnMpIHtcbiAgICAgICAgICAgIGN1cnJlbnRUZXh0LmJ1dHRvbnNbM10udHJpZ2dlcmVkQWN0aW9ucygpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICBiZWdpblR5cGluZyhucGMpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBza2lwRGlhbG9ncyhucGM6RW50aXR5KSB7XG4gIGxldCBkaWFsb2dEYXRhID0gbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpXG4gIGlmICghZGlhbG9nRGF0YS52aXNpYmxlIHx8ICtEYXRlLm5vdygpIC0gZGlhbG9nRGF0YS5vcGVuVGltZSA8IDEwMCkgcmV0dXJuXG5cbiAgd2hpbGUgKFxuICAgIGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdICYmXG4gICAgICBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5za2lwYWJsZSAmJlxuICAgICAgICBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5pc1F1ZXN0aW9uXG4gICl7XG4gICAgaWYoZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0udHJpZ2dlcmVkQnlOZXh0KXtcbiAgICAgIGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLnRyaWdnZXJlZEJ5TmV4dCgpXG4gICAgfVxuXG4gICAgaWYoZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uc2tpcGFibGUgJiZcbiAgICAgIGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmlzRW5kT2ZEaWFsb2dcbiAgICAgICl7XG4gICAgICAgIGNsb3NlRGlhbG9nV2luZG93KG5wYylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgXG4gICAgICBkaWFsb2dEYXRhLmluZGV4ICs9IDFcbiAgfVxuICBjb25maXJtVGV4dChucGMsIENvbmZpcm1Nb2RlLk5leHQpXG59XG5cbmV4cG9ydCB0eXBlIEltYWdlQXRsYXNEYXRhID0ge1xuICAgIGF0bGFzV2lkdGg6IG51bWJlcjtcbiAgICBhdGxhc0hlaWdodDogbnVtYmVyO1xuICAgIHNvdXJjZVdpZHRoOiBudW1iZXI7XG4gICAgc291cmNlSGVpZ2h0OiBudW1iZXI7XG4gICAgc291cmNlTGVmdDogbnVtYmVyO1xuICAgIHNvdXJjZVRvcDogbnVtYmVyO1xuICB9XG4gIFxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW1hZ2VBdGxhc01hcHBpbmcoZGF0YT86IEltYWdlQXRsYXNEYXRhKTogbnVtYmVyW10ge1xuICAgIGlmICghZGF0YSkgcmV0dXJuIFtdXG4gIFxuICAgIGNvbnN0IHtcbiAgICAgIGF0bGFzV2lkdGgsXG4gICAgICBhdGxhc0hlaWdodCxcbiAgICAgIHNvdXJjZVdpZHRoLFxuICAgICAgc291cmNlSGVpZ2h0LFxuICAgICAgc291cmNlVG9wLFxuICAgICAgc291cmNlTGVmdCxcbiAgICB9ID0gZGF0YVxuICBcbiAgICByZXR1cm4gW1xuICAgICAgc291cmNlTGVmdCAvIGF0bGFzV2lkdGgsIChhdGxhc0hlaWdodCAtIHNvdXJjZVRvcCAtIHNvdXJjZUhlaWdodCkgLyBhdGxhc0hlaWdodCxcbiAgICAgIHNvdXJjZUxlZnQgLyBhdGxhc1dpZHRoLCAoYXRsYXNIZWlnaHQgLSBzb3VyY2VUb3ApIC8gYXRsYXNIZWlnaHQsXG4gICAgICAoc291cmNlTGVmdCArIHNvdXJjZVdpZHRoKSAvIGF0bGFzV2lkdGgsIChhdGxhc0hlaWdodCAtIHNvdXJjZVRvcCkgLyBhdGxhc0hlaWdodCxcbiAgICAgIChzb3VyY2VMZWZ0ICsgc291cmNlV2lkdGgpIC8gYXRsYXNXaWR0aCwgKGF0bGFzSGVpZ2h0IC0gc291cmNlVG9wIC0gc291cmNlSGVpZ2h0KSAvIGF0bGFzSGVpZ2h0LFxuICAgIF1cbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiByZWFsV2lkdGgod2lkdGg/Om51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHdpZHRoID8gd2lkdGggOiBzZWN0aW9uLnNvdXJjZVdpZHRoXG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gcmVhbEhlaWdodChoZWlnaHQ/Om51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGhlaWdodCA/IGhlaWdodCA6IHNlY3Rpb24uc291cmNlSGVpZ2h0XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gZmluZERpYWxvZ0J5TmFtZShkaWFsb2dzOiBEaWFsb2dbXSwgbmFtZTogc3RyaW5nKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaWFsb2dzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoZGlhbG9nc1tpXS5uYW1lICYmIGRpYWxvZ3NbaV0ubmFtZSA9PSBuYW1lKSB7XG4gICAgICAgIHJldHVybiBpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAwXG4gIH1cbiAgIl19
|
|
473
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2RpYWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssS0FBSyxNQUFNLGdCQUFnQixDQUFBO0FBRXZDLE9BQU8sRUFBRSxXQUFXLEVBQVUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFjLGdCQUFnQixFQUFZLFdBQVcsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNwSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTlDLE9BQU8sRUFBcUIsUUFBUSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hJLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3ZDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFxQixJQUFJLEdBQUcsRUFBRSxDQUFBO0FBQzdELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFxQixJQUFJLEdBQUcsRUFBRSxDQUFBO0FBQ2pFLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFvQixJQUFJLEdBQUcsRUFBRSxDQUFBO0FBRWhFLE1BQU0sQ0FBTixJQUFZLFdBTVQ7QUFOSCxXQUFZLFdBQVc7SUFDbkIsbURBQVcsQ0FBQTtJQUNYLGlEQUFVLENBQUE7SUFDViw2Q0FBUSxDQUFBO0lBQ1IsbURBQVcsQ0FBQTtJQUNYLG1EQUFXLENBQUE7QUFDYixDQUFDLEVBTlMsV0FBVyxLQUFYLFdBQVcsUUFNcEI7QUFFSCxNQUFNLENBQUMsSUFBSSxpQkFBaUIsR0FBRyxJQUFJLENB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LENBQUMsR0FBRyxDQUFDLFNBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsU0FBbUIsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtBQUNwSSxDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWE7SUFDM0IsT0FBTyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFNBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsU0FBbUIsQ0FBQyxDQUFDLGFBQWEsQ0FBQTtBQUN4SSxDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWM7SUFDNUIsT0FBTyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFNBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsU0FBbUIsQ0FBQyxDQUFDLGNBQWMsQ0FBQTtBQUN6SSxDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWM7SUFDNUIsT0FBTyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFNBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsU0FBbUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQTtBQUNqSSxDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWM7SUFDNUIsT0FBTyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFNBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsU0FBbUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQTtBQUNqSSxDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVU7SUFDeEIsT0FBTyxTQUFTLElBQUksQ0FBQyxJ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QUFLLENBQUMsQ0FBQyxRQUFRLEVBQUM7UUFDNUMsVUFBVSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUE7S0FDckU7SUFFRCxJQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBQztRQUM5QyxVQUFVLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQTtLQUMzQjtTQUNHO1FBQ0YsVUFBVSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUE7S0FDNUI7SUFFRCxJQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBQztRQUMzQyxVQUFVLENBQUMsa0JBQWtCLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQTtRQUM5RSxVQUFVLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsaUJBQWlCLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUMvSixVQUFVLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsaUJBQWlCLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7UUFDOUosVUFBVSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxL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T0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQTtBQUMvQyxDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLE9BQWlCLEVBQUUsSUFBWTtJQUM5RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUN2QyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUU7WUFDOUMsT0FBTyxDQUFDLENBQUE7U0FDVDtLQUNGO0lBQ0QsT0FBTyxDQUFDLENBQUE7QUFDVixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnQGRjbC1zZGsvdXRpbHMnXG5cbmltcG9ydCB7IEF1ZGlvU291cmNlLCBFbnRpdHksIGVuZ2luZSB9IGZyb20gXCJAZGNsL3Nkay9lY3NcIjtcbmltcG9ydCB7IGFjdGl2ZU5QQywgY2xlYXJOUEMsIGNsb3NlRGlhbG9nV2luZG93LCBmb2xsb3dQYXRoLCBucGNEYXRhQ29tcG9uZW50LCBzdG9wUGF0aCwgc3RvcFdhbGtpbmcgfSBmcm9tIFwiLi9ucGNcIjtcbmltcG9ydCB7IElzVHlwaW5nRGlhbG9nIH0gZnJvbSBcIi4vY29tcG9uZW50c1wiO1xuaW1wb3J0IHsgaGFuZGxlRGlhbG9nVHlwaW5nIH0gZnJvbSBcIi4vc3lzdGVtc1wiO1xuaW1wb3J0IHsgRGlhbG9nLCBJbWFnZURhdGEsIE5QQ1N0YXRlIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IGxlZnRDbGlja1NlY3Rpb24sIGxlZnRDbGlja1NlY3Rpb25iQmxhY2ssIGxpZ2h0VGhlbWUsIHNlY3Rpb24sIHNraXBCdXR0b25TZWN0aW9uLCBza2lwQnV0dG9uU2VjdGlvbkJsYWNrIH0gZnJvbSAnLi91aSc7XG5pbXBvcnQgeyBnZXRCdWJibGVUZXh0TGVuZ3RoIH0gZnJvbSAnLi9idWJibGUnO1xuaW1wb3J0IHsgQ29sb3I0IH0gZnJvbSAnQGRjbC9zZGsvbWF0aCc7XG5cblxuZXhwb3J0IGNvbnN0IG5wY0RpYWxvZ0NvbXBvbmVudDogTWFwPEVudGl0eSwgYW55PiA9IG5ldyBNYXAoKVxuZXhwb3J0IGNvbnN0IG5wY0RpYWxvZ1R5cGluZ1N5c3RlbXM6IE1hcDxFbnRpdHksIGFueT4gPSBuZXcgTWFwKClcbmV4cG9ydCBjb25zdCBucGNEaWFsb2dJbnB1dExpc3RlbmVyOiBNYXA8RW50aXR5LGFueT4gPSBuZXcgTWFwKClcblxuZXhwb3J0IGVudW0gQ29uZmlybU1vZGUge1xuICAgIENvbmZpcm0gPSAwLFxuICAgIENhbmNlbCA9IDEsXG4gICAgTmV4dCA9IDIsXG4gICAgQnV0dG9uMyA9IDMsXG4gICAgQnV0dG9uNCA9IDRcbiAgfVxuXG5leHBvcnQgbGV0IFVJc2NhbGVNdWx0aXBsaWVyID0gMC43NVxuXG5sZXQgcG9ydHJhaXRYUG9zID0gLTUwICogVUlzY2FsZU11bHRpcGxpZXIgXG5sZXQgcG9ydHJhaXRZUG9zID0gMjAgKiBVSXNjYWxlTXVsdGlwbGllclxuXG5sZXQgaW1hZ2VYUG9zID0gMzUwICogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBpbWFnZVlQb3MgPSA1MCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5cbmxldCBwb3J0cmFpdFNjYWxlID0gMjU2ICogVUlzY2FsZU11bHRpcGxpZXIgXG5sZXQgaW1hZ2VTY2FsZSA9IDI1NiAqIFVJc2NhbGVNdWx0aXBsaWVyIFxuXG5sZXQgdGV4dFNpemUgPSAyNCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgdGV4dFlQb3MgPSAxMCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5cbmxldCBidXR0b25XaWR0aCA9IDE3NCogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBidXR0b25IZWlnaHQgPSA0NiogVUlzY2FsZU11bHRpcGxpZXJcblxuXG5sZXQgYnV0dG9uVGV4dFNpemUgPSAyMCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5cbmxldCBidXR0b24xWFBvcyA9IDE1MCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgYnV0dG9uMlhQb3MgPSAtODAgKiBVSXNjYWxlTXVsdGlwbGllclxubGV0IGJ1dHRvbjNYUG9zID0gLTgwICogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBidXR0b240WFBvcyA9IDE1MCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5cbmxldCBidXR0b24xWVBvcyA9IC02NSAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgYnV0dG9uMllQb3MgPSAtNjUgKiBVSXNjYWxlTXVsdGlwbGllclxubGV0IGJ1dHRvbjFZUG9zNCA9IC0yMCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgYnV0dG9uMllQb3M0ID0gLTIwICogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBidXR0b24zWVBvcyA9IC04MCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgYnV0dG9uNFlQb3MgPSAtODAgKiBVSXNjYWxlTXVsdGlwbGllclxuXG5sZXQgc2tpcEJ1dHRvblhQb3MgPSAtMzAwICogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBza2lwQnV0dG9uWVBvcyA9IC0xMDAgKiBVSXNjYWxlTXVsdGlwbGllclxuXG5sZXQgYnV0dG9uSWNvbldpZHRoID0gMjYgKiBVSXNjYWxlTXVsdGlwbGllclxubGV0IGJ1dHRvbkljb25IZWlnaHQgPSAyNiAqIFVJc2NhbGVNdWx0aXBsaWVyXG5cbmV4cG9ydCBmdW5jdGlvbiBhZGREaWFsb2cobnBjOkVudGl0eSwgc291bmQ/OnN0cmluZywgZGVmYXVsdFBvcnRyYWl0PzpJbWFnZURhdGEpe1xuICAgIGNvbnNvbGUubG9nKCdhZGRpbmcgZGlhbG9nIGZvciBucGMnLCBucGMpXG4gICAgbnBjRGlhbG9nQ29tcG9uZW50LnNldChucGMsIHtcbiAgICAgICAgdHlwaW5nOnRydWUsXG4gICAgICAgIHZpc2libGU6ZmFsc2UsXG4gICAgICAgIHZpc2libGVUZXh0OlwiXCIsXG4gICAgICAgIHZpc2libGVDaGFyczowLFxuICAgICAgICBmdWxsVGV4dDpcIlwiLFxuICAgICAgICB0aW1lcjowLFxuICAgICAgICBzcGVlZDozMCxcbiAgICAgICAgb3JpZ2luYWxTY3JpcHQ6W10sXG4gICAgICAgIHNjcmlwdDpbXSxcbiAgICAgICAgaW5kZXg6MCxcbiAgICAgICAgc291bmQ6IHNvdW5kID8gc291bmQgOiB1bmRlZmluZWQsXG4gICAgICAgIHNvdW5kUGxheWVyOiBzb3VuZCA/IGVuZ2luZS5hZGRFbnRpdHkoKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZm9udFNpemU6MjIsXG4gICAgICAgIGlzUXVlc3Rpb246ZmFsc2UsXG4gICAgICAgIGJ1dHRvbnM6MCxcbiAgICAgICAgZGlzcGxheVBvcnRyYWl0OiBkZWZhdWx0UG9ydHJhaXQgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHRQb3J0cmFpdDogZGVmYXVsdFBvcnRyYWl0ID8gZGVmYXVsdFBvcnRyYWl0IDogbnVsbCxcbiAgICAgICAgZGVmYXVsdFBvcnRyYWl0VGV4dHVyZTogZGVmYXVsdFBvcnRyYWl0ID8gZGVmYXVsdFBvcnRyYWl0LnBhdGggOiBsaWdodFRoZW1lLFxuICAgICAgICBwb3J0cmFpdFdpZHRoOiBkZWZhdWx0UG9ydHJhaXQgJiYgZGVmYXVsdFBvcnRyYWl0LndpZHRoID8gZGVmYXVsdFBvcnRyYWl0LndpZHRoICogVUlzY2FsZU11bHRpcGxpZXIgOiBwb3J0cmFpdFNjYWxlLFxuICAgICAgICBwb3J0cmFpdEhlaWdodDogZGVmYXVsdFBvcnRyYWl0ICYmIGRlZmF1bHRQb3J0cmFpdC5oZWlnaHQgPyBkZWZhdWx0UG9ydHJhaXQuaGVpZ2h0ICogVUlzY2FsZU11bHRpcGxpZXIgOiBwb3J0cmFpdFNjYWxlLFxuICAgICAgICBwb3J0cmFpdFg6IGRlZmF1bHRQb3J0cmFpdCAmJiBkZWZhdWx0UG9ydHJhaXQub2Zmc2V0WCA/IGRlZmF1bHRQb3J0cmFpdC5vZmZzZXRYICogVUlzY2FsZU11bHRpcGxpZXIgKyBwb3J0cmFpdFhQb3MgOiBwb3J0cmFpdFhQb3MsXG4gICAgICAgIHBvcnRyYWl0WTogIGRlZmF1bHRQb3J0cmFpdCAmJiBkZWZhdWx0UG9ydHJhaXQub2Zmc2V0WSA/IGRlZmF1bHRQb3J0cmFpdC5vZmZzZXRZICogVUlzY2FsZU11bHRpcGxpZXIgKyBwb3J0cmFpdFlQb3MgOiBwb3J0cmFpdFlQb3MsXG4gICAgICAgIHBvcnRhaXRTSGVpZ2h0OiBkZWZhdWx0UG9ydHJhaXQgJiYgZGVmYXVsdFBvcnRyYWl0LnNlY3Rpb24gJiYgZGVmYXVsdFBvcnRyYWl0LnNlY3Rpb24uc291cmNlSGVpZ2h0ID8gZGVmYXVsdFBvcnRyYWl0LnNlY3Rpb24uc291cmNlSGVpZ2h0IDogMjU2LFxuICAgICAgICBwb3J0cmFpdFNXaWR0aDogZGVmYXVsdFBvcnRyYWl0ICYmIGRlZmF1bHRQb3J0cmFpdC5zZWN0aW9uICYmIGRlZmF1bHRQb3J0cmFpdC5zZWN0aW9uLnNvdXJjZVdpZHRoID8gZGVmYXVsdFBvcnRyYWl0LnNlY3Rpb24uc291cmNlV2lkdGggOiAyNTYsXG4gICAgICAgIHBvcnRhaXRTVG9wOiBkZWZhdWx0UG9ydHJhaXQgJiYgZGVmYXVsdFBvcnRyYWl0LnNlY3Rpb24gJiYgZGVmYXVsdFBvcnRyYWl0LnNlY3Rpb24uc291cmNlVG9wID8gZGVmYXVsdFBvcnRyYWl0LnNlY3Rpb24uc291cmNlVG9wIDogMCxcbiAgICAgICAgcG9ydHJhaXRTTGVmdDogZGVmYXVsdFBvcnRyYWl0ICYmIGRlZmF1bHRQb3J0cmFpdC5zZWN0aW9uICYmIGRlZmF1bHRQb3J0cmFpdC5zZWN0aW9uLnNvdXJjZUxlZnQgPyBkZWZhdWx0UG9ydHJhaXQuc2VjdGlvbi5zb3VyY2VMZWZ0IDogMFxuICAgIH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXNwbGF5SW1hZ2UoKXtcbiAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gZmFsc2UgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLmRpc3BsYXlJbWFnZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGxheVBvcnRyYWl0KCl7XG4gIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IGZhbHNlIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5kaXNwbGF5UG9ydHJhaXRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3BsYXlTa2lwYWJsZSgpe1xuICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyBmYWxzZSA6IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkuc2tpcGFibGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNraXBhYmxlVGhlbWUoKXtcbiAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gc2tpcEJ1dHRvblNlY3Rpb25CbGFjayA6IG5wY0RhdGFDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLnRoZW1lID09IGxpZ2h0VGhlbWUgPyBza2lwQnV0dG9uU2VjdGlvbkJsYWNrIDogc2tpcEJ1dHRvblNlY3Rpb25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExlZnRDbGlja1RoZW1lKCl7XG4gIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IGxlZnRDbGlja1NlY3Rpb24gOiBucGNEYXRhQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS50aGVtZSA9PSBsaWdodFRoZW1lID8gbGVmdENsaWNrU2VjdGlvbiA6IGxlZnRDbGlja1NlY3Rpb25iQmxhY2tcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvc2l0aW9uVGV4dFgoKXtcbiAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gXCJcIiA6IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkucG9zaXRpb25YXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3NpdGlvblRleHRZKCl7XG4gIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLnBvc2l0aW9uWVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9zaXRpb25Qb3J0YWl0WCgpe1xuICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyBcIlwiIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5wb3J0cmFpdFhcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvc2l0aW9uUG9ydGFpdFkoKXtcbiAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gXCJcIiA6IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkucG9ydHJhaXRZXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3J0cmFpdFdpZHRoKCl7XG4gIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLnBvcnRyYWl0V2lkdGhcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvcnRyYWl0SGVpZ2h0KCl7XG4gIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLnBvcnRyYWl0SGVpZ2h0XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3NpdGlvbkltYWdlWCgpe1xuICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyBcIlwiIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5pbWFnZVhcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvc2l0aW9uSW1hZ2VZKCl7XG4gIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLmltYWdlWVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW1hZ2VXaWR0aCgpe1xuICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyBcIlwiIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5pbWFnZVdpZHRoXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbWFnZUhlaWdodCgpe1xuICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyBcIlwiIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5pbWFnZUhlaWdodFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UG9ydHJhaXQoKXtcbiAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gXCJcIiA6IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkuZGVmYXVsdFBvcnRyYWl0VGV4dHVyZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW1hZ2UoKXtcbiAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gXCJcIiA6IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkuZGlhbG9nSW1hZ2VUZXh0dXJlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZXh0KCl7XG4gICAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gXCJcIiA6IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkudmlzaWJsZVRleHRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRleHRDb2xvcigpe1xuICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyBDb2xvcjQuQmxhY2soKSA6IG5wY0RhdGFDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLnRoZW1lID09IGxpZ2h0VGhlbWUgPyBDb2xvcjQuQmxhY2soKSA6IENvbG9yNC5XaGl0ZSgpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUaGVtZSgpe1xuICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyBsaWdodFRoZW1lIDogbnBjRGF0YUNvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkudGhlbWVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEJ1dHRvblRleHQoYnV0dG9uOm51bWJlcil7XG4gICAgbGV0IHRleHQgPSBcIlwiXG5cbiAgICBpZihhY3RpdmVOUEMgIT0gMCAmJiBucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpKXtcbiAgICAgICAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpXG4gICAgICAgIGlmKGRpYWxvZ0RhdGEuaXNRdWVzdGlvbiAmJiBkaWFsb2dEYXRhLmJ1dHRvbnMgPiBidXR0b24pe1xuICAgICAgICAgICAgdGV4dCA9IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmJ1dHRvbnNbYnV0dG9uXS5sYWJlbFxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0ZXh0XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb250U2l6ZSgpe1xuICAgIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IDIyIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5mb250U2l6ZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGxheURpYWxvZygpe1xuICAgIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IGZhbHNlIDogIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkudmlzaWJsZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGxheUJ1dHRvbihidXR0b246bnVtYmVyKXtcbiAgICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyBmYWxzZSA6ICBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLmlzUXVlc3Rpb24gJiYgbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5idXR0b25zID49IGJ1dHRvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGxheUZpcnN0QnV0dG9uQ29udGFpbmVyKCl7XG4gICAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gZmFsc2UgOiAgbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5pc1F1ZXN0aW9uICYmIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkuYnV0dG9ucyA+PSAxXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXNwbGF5U2Vjb25kQnV0dG9uQ29udGFpbmVyKCl7XG4gICAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gZmFsc2UgOiAgbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5pc1F1ZXN0aW9uICYmIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkuYnV0dG9ucyA+PSAzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZXh0UG9zaXRpb24oKXtcbiAgICAvL2NvbnNvbGUubG9nKG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkuYnV0dG9ucylcbiAgICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyB7dG9wOjAsIGxlZnQ6MH0gOiB7dG9wOm5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkubWFyZ2luICsgbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5wb3NpdGlvblksIGxlZnQ6IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkucG9zaXRpb25YfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnV0dG9uQ2xpY2soYnV0dG9uOm51bWJlcil7XG4gICAgaWYoYWN0aXZlTlBDICE9IDAgJiYgbnBjRGF0YUNvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkpe1xuICAgICAgICBjb25maXJtVGV4dChhY3RpdmVOUEMgYXMgRW50aXR5LCBidXR0b24pXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xvc2VEaWFsb2cobnBjOkVudGl0eSl7XG4gICAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYylcbiAgICBkaWFsb2dEYXRhLnZpc2libGUgPSBmYWxzZVxuICAgIGRpYWxvZ0RhdGEudHlwaW5nID0gZmFsc2VcbiAgICBkaWFsb2dEYXRhLnZpc2libGVUZXh0ID0gXCJcIlxuICAgIGRpYWxvZ0RhdGEudmlzaWJsZUNoYXJzID0gMFxuICAgIGRpYWxvZ0RhdGEuZnVsbFRleHQgPSBcIlwiXG4gICAgZGlhbG9nRGF0YS50aW1lciA9IDBcbiAgICBkaWFsb2dEYXRhLmluZGV4ID0gMFxuICAgIGRpYWxvZ0RhdGEuc2NyaXB0Lmxlbmd0aCA9IDBcbiAgICBkaWFsb2dEYXRhLmJ1dHRvbnMgPSAwXG4gICAgZGlhbG9nRGF0YS5tYXJnaW4gPSAwXG4gICAgZGlhbG9nRGF0YS5kaXNwbGF5UG9ydHJhaXQgPSBmYWxzZVxuICAgIGRpYWxvZ0RhdGEuc2tpcGFibGUgPSBmYWxzZVxuICAgIGRpYWxvZ0RhdGEuZGlzcGxheUltYWdlID0gZmFsc2VcbiAgICBjb25zb2xlLmxvZygnZGlhbG9nIGRhdGEgaXMgbm93ICcsIGRpYWxvZ0RhdGEpXG5cbiAgICBpZihJc1R5cGluZ0RpYWxvZy5oYXMobnBjKSl7XG4gICAgICBJc1R5cGluZ0RpYWxvZy5kZWxldGVGcm9tKG5wYylcbiAgICB9XG4gICAgLy8gaWYobnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS5tYW51YWxTdG9wKXtcbiAgICAvLyAgIGNvbnNvbGUubG9nKCdkaWFsb2cgZW5kZWQsIG5lZWR0byB3YWxrIGFnYWluJylcbiAgICAvLyAgIGZvbGxvd1BhdGgobnBjKVxuICAgIC8vIH1cbiAgICBjbGVhck5QQygpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWxrKG5wYzpFbnRpdHksIGRpYWxvZzpEaWFsb2dbXSwgc3RhcnRJbmRleD86bnVtYmVyIHwgc3RyaW5nLCBkdXJhdGlvbj86bnVtYmVyKXtcbiAgICBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLmludHJvZHVjZWQgPSB0cnVlXG4gICAgaWYobnBjRGlhbG9nQ29tcG9uZW50LmhhcyhucGMpKXtcblxuICAgICAgICBpZihucGNEYXRhQ29tcG9uZW50LmdldChucGMpLnN0YXRlID09IE5QQ1N0YXRlLkZPTExPV1BBVEgpe1xuICAgICAgICAgIGNvbnNvbGUubG9nKFwic3BlYWtpbmcgZGlhbG9nLCBuZWVkIHRvIHN0b3AgcGF0aFwiKVxuICAgICAgICAgIHN0b3BXYWxraW5nKG5wYylcbiAgICAgICAgfVxuXG4gICAgICAgIG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykuc3RhdGUgPSBOUENTdGF0ZS5UQUxLSU5HXG5cblxuICAgICAgICBsZXQgaW5kZXg6YW55XG5cbiAgICAgICAgaWYgKCFzdGFydEluZGV4KSB7XG4gICAgICAgICAgaW5kZXggPSAwXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHN0YXJ0SW5kZXggPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgaW5kZXggPSBzdGFydEluZGV4XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaW5kZXggPSBmaW5kRGlhbG9nQnlOYW1lKGRpYWxvZywgc3RhcnRJbmRleClcbiAgICAgICAgfVxuXG4gICAgICAgIG9wZW5EaWFsb2cobnBjLGRpYWxvZywgaW5kZXgpXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gb3BlbkRpYWxvZyhucGM6RW50aXR5LCBkaWFsb2c6RGlhbG9nW10sIHN0YXJ0SW5kZXg6bnVtYmVyKXtcbiAgICBjb25zb2xlLmxvZygnc2NyaXB0IHRvIHRhbGsgaXMnLCBkaWFsb2cpXG4gICAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYylcbiAgICBkaWFsb2dEYXRhLnNjcmlwdCA9IGRpYWxvZy5zbGljZSgpXG4gICAgZGlhbG9nRGF0YS5pbmRleCA9IHN0YXJ0SW5kZXhcblxuICAgIGNvbnNvbGUubG9nKCdkaWFsb2cgZGF0YSBpcyBub3cnLCBkaWFsb2dEYXRhKVxuICAgIFxuICAgIGxldCBjdXJyZW50VGV4dDogRGlhbG9nID0gZGlhbG9nW3N0YXJ0SW5kZXhdID8gZGlhbG9nW3N0YXJ0SW5kZXhdIDogeyB0ZXh0OiAnJyB9XG5cbiAgICBpZiAoY3VycmVudFRleHQuYXVkaW8pIHtcbiAgICAgICAgQXVkaW9Tb3VyY2UuY3JlYXRlT3JSZXBsYWNlKGRpYWxvZ0RhdGEuc291bmRQbGF5ZXIsIHtcbiAgICAgICAgICAgIGF1ZGlvQ2xpcFVybDogY3VycmVudFRleHQuYXVkaW8sXG4gICAgICAgICAgICBsb29wOiBmYWxzZSxcbiAgICAgICAgICAgIHBsYXlpbmc6IGZhbHNlXG4gICAgICAgIH0pXG4gICAgICAgIGxldCBhdWRpbyA9IEF1ZGlvU291cmNlLmdldE11dGFibGUoZGlhbG9nRGF0YS5zb3VuZFBsYXllcilcbiAgICAgICAgYXVkaW8udm9sdW1lID0gMC41XG4gICAgICAgIGF1ZGlvLnBsYXlpbmcgPSB0cnVlXG4gICAgfSBlbHNlIGlmIChkaWFsb2dEYXRhLnNvdW5kKSB7XG4gICAgICAgIEF1ZGlvU291cmNlLmNyZWF0ZU9yUmVwbGFjZShkaWFsb2dEYXRhLnNvdW5kUGxheWVyLCB7XG4gICAgICAgICAgICBhdWRpb0NsaXBVcmw6IGRpYWxvZ0RhdGEuc291bmQsXG4gICAgICAgICAgICBsb29wOiBmYWxzZSxcbiAgICAgICAgICAgIHBsYXlpbmc6IGZhbHNlXG4gICAgICAgIH0pXG4gICAgICAgIGxldCBhdWRpbyA9IEF1ZGlvU291cmNlLmdldE11dGFibGUoZGlhbG9nRGF0YS5zb3VuZFBsYXllcilcbiAgICAgICAgYXVkaW8udm9sdW1lID0gMC41XG4gICAgICAgIGF1ZGlvLnBsYXlpbmcgPSB0cnVlXG4gICAgfVxuXG4gICAgLy9UT0RPXG4gICAgLy9zZXQgaW1hZ2Ugb24gdGhlIHJpZ2h0XG4gICAgLy9zZXQgdGV4dFxuICAgIGJlZ2luVHlwaW5nKG5wYylcbn0gXG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRMaW5lQnJlYWsodGV4dDpzdHJpbmcsIGJ1YmJsZT86Ym9vbGVhbil7XG4gIHJldHVybiBsaW5lQnJlYWsodGV4dCwgYnViYmxlPyBnZXRCdWJibGVUZXh0TGVuZ3RoKHRleHQpISA6IDQ1KVxufVxuXG5mdW5jdGlvbiBiZWdpblR5cGluZyhucGM6RW50aXR5KXtcbiAgICBsZXQgZGlhbG9nRGF0YSA9IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQobnBjKVxuICAgIGRpYWxvZ0RhdGEuZnVsbFRleHQgPSBhZGRMaW5lQnJlYWsoZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0udGV4dCkgLy9kaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS50ZXh0XG4gICAgZGlhbG9nRGF0YS52aXNpYmxlID0gdHJ1ZVxuICAgIGRpYWxvZ0RhdGEudHlwaW5nID0gdHJ1ZVxuICAgIGRpYWxvZ0RhdGEudmlzaWJsZVRleHQgPSBcIlwiXG4gICAgZGlhbG9nRGF0YS52aXNpYmxlQ2hhcnMgPSAwXG4gICAgZGlhbG9nRGF0YS50aW1lciA9IDBcbiAgICBkaWFsb2dEYXRhLmlzUXVlc3Rpb24gPSBmYWxzZVxuICAgIGRpYWxvZ0RhdGEuYnV0dG9ucyA9IDBcbiAgICBkaWFsb2dEYXRhLmRpc3BsYXlQb3J0cmFpdCA9IGZhbHNlXG4gICAgZGlhbG9nRGF0YS5kaXNwbGF5SW1hZ2UgPSBmYWxzZVxuICAgIGRpYWxvZ0RhdGEuc2tpcGFibGUgPSBmYWxzZVxuXG4gICAgbGV0IGN1cnJlbnRUZXh0OiBEaWFsb2cgPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XSA/IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdIDogeyB0ZXh0OiAnJyB9XG4gICAgaWYoY3VycmVudFRleHQucG9ydHJhaXQpe1xuICAgICAgZGlhbG9nRGF0YS5kZWZhdWx0UG9ydHJhaXRUZXh0dXJlID0gY3VycmVudFRleHQucG9ydHJhaXQucGF0aFxuXG4gICAgICBkaWFsb2dEYXRhLnBvcnRyYWl0WCA9IGN1cnJlbnRUZXh0LnBvcnRyYWl0Lm9mZnNldFhcbiAgICAgID8gY3VycmVudFRleHQucG9ydHJhaXQub2Zmc2V0WCAqIFVJc2NhbGVNdWx0aXBsaWVyICsgcG9ydHJhaXRYUG9zXG4gICAgICA6IHBvcnRyYWl0WFBvc1xuXG4gICAgICBkaWFsb2dEYXRhLnBvcnRyYWl0WSA9IGN1cnJlbnRUZXh0LnBvcnRyYWl0Lm9mZnNldFlcbiAgICAgID8gY3VycmVudFRleHQucG9ydHJhaXQub2Zmc2V0WSAqIFVJc2NhbGVNdWx0aXBsaWVyICsgcG9ydHJhaXRZUG9zXG4gICAgICA6IHBvcnRyYWl0WVBvc1xuXG4gICAgICBkaWFsb2dEYXRhLnBvcnRyYWl0V2lkdGggPSBjdXJyZW50VGV4dC5wb3J0cmFpdC53aWR0aCA/IGN1cnJlbnRUZXh0LnBvcnRyYWl0LndpZHRoICogVUlzY2FsZU11bHRpcGxpZXIgOiBwb3J0cmFpdFNjYWxlXG5cbiAgICAgIGRpYWxvZ0RhdGEucG9ydHJhaXRIZWlnaHQgPSBjdXJyZW50VGV4dC5wb3J0cmFpdC5oZWlnaHQgPyBjdXJyZW50VGV4dC5wb3J0cmFpdC5oZWlnaHQgKiBVSXNjYWxlTXVsdGlwbGllciA6IHBvcnRyYWl0U2NhbGVcbiAgICAgIGRpYWxvZ0RhdGEuZGlzcGxheVBvcnRyYWl0ID0gdHJ1ZVxuICAgIH1lbHNlIGlmKGRpYWxvZ0RhdGEuZGVmYXVsdFBvcnRyYWl0KXtcbiAgICAgIGRpYWxvZ0RhdGEuZGlzcGxheVBvcnRyYWl0ID0gdHJ1ZVxuICAgIH1cbiAgICBlbHNle1xuICAgICAgZGlhbG9nRGF0YS5kaXNwbGF5UG9ydHJhaXQgPSBmYWxzZVxuICAgIH1cblxuICAgIGlmKGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmlzUXVlc3Rpb24pe1xuICAgICAgICBkaWFsb2dEYXRhLmJ1dHRvbnMgPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5idXR0b25zLmxlbmd0aFxuICAgICAgICBpZihkaWFsb2dEYXRhLmJ1dHRvbnMgPj0gMyl7XG4gICAgICAgICAgICBkaWFsb2dEYXRhLm1hcmdpbiA9IC0yNVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYoZGlhbG9nRGF0YS5idXR0b25zID49MSl7XG4gICAgICAgICAgICBkaWFsb2dEYXRhLm1hcmdpbiA9IC0yNVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coZGlhbG9nRGF0YSlcbiAgICAgICAgdXRpbHMudGltZXJzLnNldFRpbWVvdXQoXG4gICAgICAgICAgICBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnc2V0dGluZyBxdWVzdGlvbiB0byB0cnVlJylcbiAgICAgICAgICAgICAgICBkaWFsb2dEYXRhLmlzUXVlc3Rpb24gPSB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgNzAwXG4gICAgICAgICAgKVxuICAgIH1cblxuICAgIGRpYWxvZ0RhdGEub3BlblRpbWUgPSBNYXRoLmZsb29yKERhdGUubm93KCkpXG4gICAgaWYoZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uZm9udFNpemUpe1xuICAgICAgICBkaWFsb2dEYXRhLmZvbnRTaXplID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uZm9udFNpemVcbiAgICB9XG5cbiAgICBpZihkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5za2lwYWJsZSl7XG4gICAgICBkaWFsb2dEYXRhLnNraXBhYmxlID0gdHJ1ZVxuICAgIH1cbiAgICBlbHNle1xuICAgICAgZGlhbG9nRGF0YS5za2lwYWJsZSA9IGZhbHNlXG4gICAgfVxuXG4gICAgaWYoZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uaW1hZ2Upe1xuICAgICAgZGlhbG9nRGF0YS5kaWFsb2dJbWFnZVRleHR1cmUgPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5pbWFnZS5wYXRoXG4gICAgICBkaWFsb2dEYXRhLmltYWdlWCA9IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmltYWdlLm9mZnNldFggPyBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5pbWFnZS5vZmZzZXRYICogVUlzY2FsZU11bHRpcGxpZXIgKyBpbWFnZVhQb3MgOiAtNDBcbiAgICAgIGRpYWxvZ0RhdGEuaW1hZ2VZID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uaW1hZ2Uub2Zmc2V0WSA/IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmltYWdlLm9mZnNldFkgKiBVSXNjYWxlTXVsdGlwbGllciArIGltYWdlWVBvcyA6IDQwXG4gICAgICBkaWFsb2dEYXRhLmltYWdlSGVpZ2h0ID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uaW1hZ2UuaGVpZ2h0ID8gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uaGVpZ2h0ICogVUlzY2FsZU11bHRpcGxpZXIgOiBpbWFnZVNjYWxlXG4gICAgICBkaWFsb2dEYXRhLmltYWdlV2lkdGggPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5pbWFnZS53aWR0aCA/IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLndpZHRoICogVUlzY2FsZU11bHRpcGxpZXIgOiBpbWFnZVNjYWxlXG4gICAgICBkaWFsb2dEYXRhLmRpc3BsYXlJbWFnZSA9IHRydWVcbiAgICB9XG5cbiAgICBkaWFsb2dEYXRhLnBvc2l0aW9uWCA9IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLm9mZnNldFggPyBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5vZmZzZXRYICogVUlzY2FsZU11bHRpcGxpZXIgOiAnMjIlJ1xuICAgIGRpYWxvZ0RhdGEucG9zaXRpb25ZID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0ub2Zmc2V0WSA/IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLm9mZnNldFkgKiBVSXNjYWxlTXVsdGlwbGllciArIHRleHRZUG9zIDogdGV4dFlQb3NcbiAgICBcbiAgICBpZihkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5oYXNPd25Qcm9wZXJ0eShcInR5cGVTcGVlZFwiKSl7XG4gICAgICAgIGRpYWxvZ0RhdGEuc3BlZWQgPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS50eXBlU3BlZWRcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgICAgZGlhbG9nRGF0YS5zcGVlZCA9IDMwXG4gICAgfVxuXG4gICAgaWYoZGlhbG9nRGF0YS5zcGVlZCA8PSAwKXtcbiAgICAgICAgcnVzaFRleHQobnBjKVxuICAgIH1cbiAgICBlbHNle1xuICAgICAgICBpZighSXNUeXBpbmdEaWFsb2cuaGFzKG5wYykpe1xuICAgICAgICAgICAgSXNUeXBpbmdEaWFsb2cuY3JlYXRlKG5wYylcbiAgICAgICAgfVxuICAgIFxuICAgICAgICAvLyBpZighbnBjRGlhbG9nVHlwaW5nU3lzdGVtcy5oYXMobnBjKSl7XG4gICAgICAgIC8vICAgICBucGNEaWFsb2dUeXBpbmdTeXN0ZW1zLnNldChucGMsZW5naW5lLmFkZFN5c3RlbShoYW5kbGVEaWFsb2dUeXBpbmcpKVxuICAgICAgICAvLyB9XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkTGluZUJyZWFrcyhkaWFsb2c6RGlhbG9nW10sIGJ1YmJsZT86Ym9vbGVhbil7XG4gICAgbGV0IGNsZWFuZWQ6RGlhbG9nW10gPSBkaWFsb2cuc2xpY2UoKVxuICAgIGNsZWFuZWQuZm9yRWFjaCgoZCk9PntcbiAgICAgIGQudGV4dCA9IGxpbmVCcmVhayhkLnRleHQsIGJ1YmJsZT8gZ2V0QnViYmxlVGV4dExlbmd0aChkLnRleHQpISA6IDUwKVxuICAgIH0pXG4gICAgcmV0dXJuIGNsZWFuZWRcbn1cblxuZnVuY3Rpb24gbGluZUJyZWFrKHRleHQ6IHN0cmluZywgbWF4TGluZUxlbmd0aDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCB3b3JkcyA9IHRleHQuc3BsaXQoJyAnKTtcbiAgICBsZXQgY3VycmVudExpbmUgPSAnJztcbiAgICBjb25zdCBsaW5lcyA9IFtdO1xuICBcbiAgICBmb3IgKGNvbnN0IHdvcmQgb2Ygd29yZHMpIHtcbiAgICAgIGlmIChjdXJyZW50TGluZS5sZW5ndGggKyB3b3JkLmxlbmd0aCArIDEgPD0gbWF4TGluZUxlbmd0aCkge1xuICAgICAgICBjdXJyZW50TGluZSArPSBgJHt3b3JkfSBgO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGluZXMucHVzaChjdXJyZW50TGluZS50cmltKCkpO1xuICAgICAgICBjdXJyZW50TGluZSA9IGAke3dvcmR9IGA7XG4gICAgICB9XG4gICAgfVxuICAgIGxpbmVzLnB1c2goY3VycmVudExpbmUudHJpbSgpKTtcbiAgICByZXR1cm4gbGluZXMuam9pbignXFxuJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVEaWFsb2dDbGljaygpe1xuICBjb25zb2xlLmxvZygnaGFuZGxpbmcgY2xpY2snKVxuICAgIGxldCBucGMgPSBhY3RpdmVOUEMgYXMgRW50aXR5XG4gICAgaWYobnBjRGlhbG9nQ29tcG9uZW50LmhhcyhucGMpKXtcbiAgICAgICAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYylcbiAgICAgICAgaWYoIWRpYWxvZ0RhdGEudmlzaWJsZSB8fCAoTWF0aC5mbG9vcihEYXRlLm5vdygpKSAtIGRpYWxvZ0RhdGEub3BlblRpbWUgIDwgMTAwKSkgcmV0dXJuXG4gICAgICAgIFxuICAgICAgICBpZihkaWFsb2dEYXRhLnR5cGluZyl7XG4gICAgICAgICAgICBydXNoVGV4dChucGMpXG4gICAgICAgIH1cbiAgICAgICAgZWxzZXtcbiAgICAgICAgICAgIGNvbmZpcm1UZXh0KG5wYywgQ29uZmlybU1vZGUuTmV4dClcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1c2hUZXh0KG5wYzpFbnRpdHkpe1xuICAgIGxldCBkaWFsb2dEYXRhID0gbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpXG4gICAgZGlhbG9nRGF0YS50eXBpbmcgPSBmYWxzZVxuICAgIGRpYWxvZ0RhdGEudGltZXIgPSAwXG4gICAgZGlhbG9nRGF0YS52aXNpYmxlQ2hhcnMgPSBkaWFsb2dEYXRhLmZ1bGxUZXh0Lmxlbmd0aFxuICAgIGRpYWxvZ0RhdGEudmlzaWJsZVRleHQgPSBkaWFsb2dEYXRhLmZ1bGxUZXh0XG4gICAgLy9lbmdpbmUucmVtb3ZlU3lzdGVtKG5wY0RpYWxvZ1R5cGluZ1N5c3RlbXMuZ2V0KG5wYykpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25maXJtVGV4dChucGM6RW50aXR5LCBtb2RlOiBDb25maXJtTW9kZSk6IHZvaWQge1xuICBjb25zb2xlLmxvZygnY29uZmlybSB0ZXh0JylcbiAgICBsZXQgZGlhbG9nRGF0YSA9IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQobnBjKVxuICAgIGRpYWxvZ0RhdGEub3BlblRpbWUgPSBNYXRoLmZsb29yKERhdGUubm93KCkpXG5cbiAgICBsZXQgY3VycmVudFRleHQgPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XVxuICAgIC8vIFVwZGF0ZSBhY3RpdmUgdGV4dFxuICAgIGlmIChtb2RlID09IENvbmZpcm1Nb2RlLk5leHQpIHtcbiAgICAgICAgaWYgKCFjdXJyZW50VGV4dC5pc1F1ZXN0aW9uKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFRleHQudHJpZ2dlcmVkQnlOZXh0KSB7XG4gICAgICAgICAgICBjdXJyZW50VGV4dC50cmlnZ2VyZWRCeU5leHQoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGN1cnJlbnRUZXh0LmlzRW5kT2ZEaWFsb2cpIHtcbiAgICAgICAgICAgIGNsb3NlRGlhbG9nKG5wYylcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGlhbG9nRGF0YS5pbmRleCsrXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kZSA9PSBDb25maXJtTW9kZS5Db25maXJtKSB7XG4gICAgICAgIGlmIChjdXJyZW50VGV4dC5idXR0b25zICYmIGN1cnJlbnRUZXh0LmJ1dHRvbnMubGVuZ3RoID49IDEpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGN1cnJlbnRUZXh0LmJ1dHRvbnNbMF0uZ29Ub0RpYWxvZyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIGRpYWxvZ0RhdGEuaW5kZXggPSBjdXJyZW50VGV4dC5idXR0b25zWzBdLmdvVG9EaWFsb2dcbiAgICAgICAgICB9IFxuXG4gICAgICAgICAgLy9UT0RPXG4gICAgICAgICAgLy9hbGxvdyBkaWFsb2dzIHRvIGJlIGluZGV4IGJ5IG5hbWVcbiAgICAgICAgLy8gICBlbHNlIHtcbiAgICAgICAgLy8gICAgIHRoaXMuYWN0aXZlVGV4dElkID0gZmluZERpYWxvZ0J5TmFtZSh0aGlzLk5QQ1NjcmlwdCwgY3VycmVudFRleHQuYnV0dG9uc1swXS5nb1RvRGlhbG9nKVxuICAgICAgICAvLyAgIH1cbiAgICAgICAgICBpZiAoY3VycmVudFRleHQuYnV0dG9uc1swXS50cmlnZ2VyZWRBY3Rpb25zKSB7XG4gICAgICAgICAgICBjdXJyZW50VGV4dC5idXR0b25zWzBdLnRyaWdnZXJlZEFjdGlvbnMoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtb2RlID09IENvbmZpcm1Nb2RlLkNhbmNlbCkge1xuICAgICAgICBpZiAoY3VycmVudFRleHQuYnV0dG9ucyAmJiBjdXJyZW50VGV4dC5idXR0b25zLmxlbmd0aCA+PSAxKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBjdXJyZW50VGV4dC5idXR0b25zWzFdLmdvVG9EaWFsb2cgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBkaWFsb2dEYXRhLmluZGV4ID0gY3VycmVudFRleHQuYnV0dG9uc1sxXS5nb1RvRGlhbG9nXG4gICAgICAgICAgfSBcblxuICAgICAgICAgIC8vVE9ET1xuICAgICAgICAgIC8vYWxsb3cgZGlhbG9ncyB0byBiZSBpbmRleCBieSBuYW1lXG4gICAgICAgIC8vICAgZWxzZSB7XG4gICAgICAgIC8vICAgICB0aGlzLmFjdGl2ZVRleHRJZCA9IGZpbmREaWFsb2dCeU5hbWUodGhpcy5OUENTY3JpcHQsIGN1cnJlbnRUZXh0LmJ1dHRvbnNbMF0uZ29Ub0RpYWxvZylcbiAgICAgICAgLy8gICB9XG4gICAgICAgICAgaWYgKGN1cnJlbnRUZXh0LmJ1dHRvbnNbMV0udHJpZ2dlcmVkQWN0aW9ucykge1xuICAgICAgICAgICAgY3VycmVudFRleHQuYnV0dG9uc1sxXS50cmlnZ2VyZWRBY3Rpb25zKClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kZSA9PSBDb25maXJtTW9kZS5CdXR0b24zKSB7XG4gICAgICAgIGlmIChjdXJyZW50VGV4dC5idXR0b25zICYmIGN1cnJlbnRUZXh0LmJ1dHRvbnMubGVuZ3RoID49IDEpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGN1cnJlbnRUZXh0LmJ1dHRvbnNbMl0uZ29Ub0RpYWxvZyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIGRpYWxvZ0RhdGEuaW5kZXggPSBjdXJyZW50VGV4dC5idXR0b25zWzJdLmdvVG9EaWFsb2dcbiAgICAgICAgICB9IFxuXG4gICAgICAgICAgLy9UT0RPXG4gICAgICAgICAgLy9hbGxvdyBkaWFsb2dzIHRvIGJlIGluZGV4IGJ5IG5hbWVcbiAgICAgICAgLy8gICBlbHNlIHtcbiAgICAgICAgLy8gICAgIHRoaXMuYWN0aXZlVGV4dElkID0gZmluZERpYWxvZ0J5TmFtZSh0aGlzLk5QQ1NjcmlwdCwgY3VycmVudFRleHQuYnV0dG9uc1swXS5nb1RvRGlhbG9nKVxuICAgICAgICAvLyAgIH1cbiAgICAgICAgICBpZiAoY3VycmVudFRleHQuYnV0dG9uc1syXS50cmlnZ2VyZWRBY3Rpb25zKSB7XG4gICAgICAgICAgICBjdXJyZW50VGV4dC5idXR0b25zWzJdLnRyaWdnZXJlZEFjdGlvbnMoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtb2RlID09IENvbmZpcm1Nb2RlLkJ1dHRvbjQpIHtcbiAgICAgICAgaWYgKGN1cnJlbnRUZXh0LmJ1dHRvbnMgJiYgY3VycmVudFRleHQuYnV0dG9ucy5sZW5ndGggPj0gMSkge1xuICAgICAgICAgIGlmICh0eXBlb2YgY3VycmVudFRleHQuYnV0dG9uc1szXS5nb1RvRGlhbG9nID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgZGlhbG9nRGF0YS5pbmRleCA9IGN1cnJlbnRUZXh0LmJ1dHRvbnNbM10uZ29Ub0RpYWxvZ1xuICAgICAgICAgIH0gXG5cbiAgICAgICAgICAvL1RPRE9cbiAgICAgICAgICAvL2FsbG93IGRpYWxvZ3MgdG8gYmUgaW5kZXggYnkgbmFtZVxuICAgICAgICAvLyAgIGVsc2Uge1xuICAgICAgICAvLyAgICAgdGhpcy5hY3RpdmVUZXh0SWQgPSBmaW5kRGlhbG9nQnlOYW1lKHRoaXMuTlBDU2NyaXB0LCBjdXJyZW50VGV4dC5idXR0b25zWzBdLmdvVG9EaWFsb2cpXG4gICAgICAgIC8vICAgfVxuICAgICAgICAgIGlmIChjdXJyZW50VGV4dC5idXR0b25zWzNdLnRyaWdnZXJlZEFjdGlvbnMpIHtcbiAgICAgICAgICAgIGN1cnJlbnRUZXh0LmJ1dHRvbnNbM10udHJpZ2dlcmVkQWN0aW9ucygpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICBiZWdpblR5cGluZyhucGMpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBza2lwRGlhbG9ncyhucGM6RW50aXR5KSB7XG4gIGxldCBkaWFsb2dEYXRhID0gbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpXG4gIGlmICghZGlhbG9nRGF0YS52aXNpYmxlIHx8ICtEYXRlLm5vdygpIC0gZGlhbG9nRGF0YS5vcGVuVGltZSA8IDEwMCkgcmV0dXJuXG5cbiAgd2hpbGUgKFxuICAgIGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdICYmXG4gICAgICBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5za2lwYWJsZSAmJlxuICAgICAgICBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5pc1F1ZXN0aW9uXG4gICl7XG4gICAgaWYoZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0udHJpZ2dlcmVkQnlOZXh0KXtcbiAgICAgIGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLnRyaWdnZXJlZEJ5TmV4dCgpXG4gICAgfVxuXG4gICAgaWYoZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uc2tpcGFibGUgJiZcbiAgICAgIGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmlzRW5kT2ZEaWFsb2dcbiAgICAgICl7XG4gICAgICAgIGNsb3NlRGlhbG9nV2luZG93KG5wYylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgXG4gICAgICBkaWFsb2dEYXRhLmluZGV4ICs9IDFcbiAgfVxuICBjb25maXJtVGV4dChucGMsIENvbmZpcm1Nb2RlLk5leHQpXG59XG5cbmV4cG9ydCB0eXBlIEltYWdlQXRsYXNEYXRhID0ge1xuICAgIGF0bGFzV2lkdGg6IG51bWJlcjtcbiAgICBhdGxhc0hlaWdodDogbnVtYmVyO1xuICAgIHNvdXJjZVdpZHRoOiBudW1iZXI7XG4gICAgc291cmNlSGVpZ2h0OiBudW1iZXI7XG4gICAgc291cmNlTGVmdDogbnVtYmVyO1xuICAgIHNvdXJjZVRvcDogbnVtYmVyO1xuICB9XG4gIFxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW1hZ2VBdGxhc01hcHBpbmcoZGF0YT86IEltYWdlQXRsYXNEYXRhKTogbnVtYmVyW10ge1xuICAgIGlmICghZGF0YSkgcmV0dXJuIFtdXG4gIFxuICAgIGNvbnN0IHtcbiAgICAgIGF0bGFzV2lkdGgsXG4gICAgICBhdGxhc0hlaWdodCxcbiAgICAgIHNvdXJjZVdpZHRoLFxuICAgICAgc291cmNlSGVpZ2h0LFxuICAgICAgc291cmNlVG9wLFxuICAgICAgc291cmNlTGVmdCxcbiAgICB9ID0gZGF0YVxuICBcbiAgICByZXR1cm4gW1xuICAgICAgc291cmNlTGVmdCAvIGF0bGFzV2lkdGgsIChhdGxhc0hlaWdodCAtIHNvdXJjZVRvcCAtIHNvdXJjZUhlaWdodCkgLyBhdGxhc0hlaWdodCxcbiAgICAgIHNvdXJjZUxlZnQgLyBhdGxhc1dpZHRoLCAoYXRsYXNIZWlnaHQgLSBzb3VyY2VUb3ApIC8gYXRsYXNIZWlnaHQsXG4gICAgICAoc291cmNlTGVmdCArIHNvdXJjZVdpZHRoKSAvIGF0bGFzV2lkdGgsIChhdGxhc0hlaWdodCAtIHNvdXJjZVRvcCkgLyBhdGxhc0hlaWdodCxcbiAgICAgIChzb3VyY2VMZWZ0ICsgc291cmNlV2lkdGgpIC8gYXRsYXNXaWR0aCwgKGF0bGFzSGVpZ2h0IC0gc291cmNlVG9wIC0gc291cmNlSGVpZ2h0KSAvIGF0bGFzSGVpZ2h0LFxuICAgIF1cbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiByZWFsV2lkdGgod2lkdGg/Om51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHdpZHRoID8gd2lkdGggOiBzZWN0aW9uLnNvdXJjZVdpZHRoXG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gcmVhbEhlaWdodChoZWlnaHQ/Om51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGhlaWdodCA/IGhlaWdodCA6IHNlY3Rpb24uc291cmNlSGVpZ2h0XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gZmluZERpYWxvZ0J5TmFtZShkaWFsb2dzOiBEaWFsb2dbXSwgbmFtZTogc3RyaW5nKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaWFsb2dzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoZGlhbG9nc1tpXS5uYW1lICYmIGRpYWxvZ3NbaV0ubmFtZSA9PSBuYW1lKSB7XG4gICAgICAgIHJldHVybiBpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAwXG4gIH1cbiAgIl19
|
package/dist/npc.js
CHANGED
|
@@ -98,27 +98,31 @@ export function create(transform, data) {
|
|
|
98
98
|
return npc;
|
|
99
99
|
}
|
|
100
100
|
function addNPCBones(npc, data) {
|
|
101
|
+
const modelIsString = data && data.model && typeof data.model === `string`;
|
|
102
|
+
const modelAvatarData = modelIsString ? undefined : data.model && data.model.bodyShape ? data.model : undefined;
|
|
103
|
+
const modelGLTFData = modelIsString ? undefined : data.model && data.model.src ? data.model : undefined;
|
|
101
104
|
switch (data.type) {
|
|
102
105
|
case NPCType.AVATAR:
|
|
103
|
-
AvatarShape.create(npc,
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
106
|
+
AvatarShape.create(npc, !data || !data.model || !modelAvatarData ?
|
|
107
|
+
{
|
|
108
|
+
id: "npc",
|
|
109
|
+
name: "NPC",
|
|
110
|
+
bodyShape: "urn:decentraland:off-chain:base-avatars:BaseMale",
|
|
111
|
+
emotes: [],
|
|
112
|
+
wearables: [
|
|
113
|
+
"urn:decentraland:off-chain:base-avatars:f_eyes_00",
|
|
114
|
+
"urn:decentraland:off-chain:base-avatars:f_eyebrows_00",
|
|
115
|
+
"urn:decentraland:off-chain:base-avatars:f_mouth_00",
|
|
116
|
+
"urn:decentraland:off-chain:base-avatars:comfy_sport_sandals",
|
|
117
|
+
"urn:decentraland:off-chain:base-avatars:soccer_pants",
|
|
118
|
+
"urn:decentraland:off-chain:base-avatars:elegant_sweater",
|
|
119
|
+
],
|
|
120
|
+
} : modelAvatarData);
|
|
117
121
|
break;
|
|
118
122
|
case NPCType.CUSTOM:
|
|
119
|
-
GltfContainer.create(npc,
|
|
120
|
-
src: data && data.model ? data.model : ""
|
|
121
|
-
|
|
123
|
+
GltfContainer.create(npc, modelIsString && typeof data.model === `string` ?
|
|
124
|
+
{ src: data && data.model ? data.model : "" }
|
|
125
|
+
: modelGLTFData);
|
|
122
126
|
Animator.create(npc, {
|
|
123
127
|
states: [{
|
|
124
128
|
name: data && data.idleAnim ? data.idleAnim : 'Idle',
|
|
@@ -231,7 +235,7 @@ export function followPath(npc, data) {
|
|
|
231
235
|
onFinishCallbacks.set(npc, () => {
|
|
232
236
|
console.log('on finished callback');
|
|
233
237
|
if (data && data.onFinishCallback && !data.loop) {
|
|
234
|
-
data.onFinishCallback;
|
|
238
|
+
data.onFinishCallback();
|
|
235
239
|
}
|
|
236
240
|
stopPath(npc);
|
|
237
241
|
});
|
|
@@ -275,6 +279,7 @@ function walkNPC(npc, npcData, type, duration, path, pointReachedCallback, finis
|
|
|
275
279
|
npcData.lastPlayedAnim = npcDataComponent.get(npc).walkingAnim;
|
|
276
280
|
}
|
|
277
281
|
npcData.state = NPCState.FOLLOWPATH;
|
|
282
|
+
npcData.manualStop = false;
|
|
278
283
|
}
|
|
279
284
|
export function stopWalking(npc, duration, finished) {
|
|
280
285
|
let npcData = npcDataComponent.get(npc);
|
|
@@ -302,7 +307,6 @@ export function stopWalking(npc, duration, finished) {
|
|
|
302
307
|
path.splice(0, npcData.pathIndex);
|
|
303
308
|
let pos = Transform.get(npc).position;
|
|
304
309
|
path.unshift(Vector3.create(pos.x, pos.y, pos.z));
|
|
305
|
-
npcData.manualStop = false;
|
|
306
310
|
walkNPC(npc, npcData, npcData.pathData.pathType, duration, path, pointReachedCallbacks.get(npc), onFinishCallbacks.get(npc));
|
|
307
311
|
}
|
|
308
312
|
}, duration * 1000);
|
|
@@ -455,4 +459,4 @@ export function closeDialogWindow(window) {
|
|
|
455
459
|
closeDialog(dialog);
|
|
456
460
|
}
|
|
457
461
|
}
|
|
458
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL25wYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQVUsYUFBYSxFQUFjLFlBQVksRUFBQyxZQUFZLEVBQUMsbUJBQW1CLEVBQUMsU0FBUyxFQUFpQixNQUFNLGNBQWMsQ0FBQTtBQUN2SyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDM0QsT0FBTyxFQUE4QyxXQUFXLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBZSxNQUFNLFNBQVMsQ0FBQztBQUNsSCxPQUFPLEtBQUssS0FBSyxNQUFNLGdCQUFnQixDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pILE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwRyxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDaEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFN0MsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUF1QixJQUFJLEdBQUcsRUFBRSxDQUFBO0FBQzFELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFxQixJQUFJLEdBQUcsRUFBRSxDQUFBO0FBQzNELE1BQU0sQ0FBQyxJQUFJLFNBQVMsR0FBVSxDQUFDLENBQUE7QUFDL0IsTUFBTSxDQUFDLElBQUksV0FBVyxHQUFVLENBQUMs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RyxDQUFDLENBQUE7U0FDVjthQUFNLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxFQUFFO1lBQ3pDLEtBQUssR0FBRyxVQUFVLENBQUE7U0FDbkI7YUFBTTtZQUNMLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUE7U0FDN0M7UUFDRCxVQUFVLENBQUMsR0FBRyxFQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQTtLQUNoQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsTUFBYTtJQUMzQyxJQUFJLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDM0MsSUFBRyxNQUFNLEVBQUM7UUFDTixXQUFXLENBQUMsTUFBTSxDQUFDLENBQUE7S0FDdEI7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0RWNzIGZyb20gJ0BkY2wvc2RrL3JlYWN0LWVjcydcbmltcG9ydCB7IEFuaW1hdG9yLCBBdmF0YXJTaGFwZSwgZW5naW5lLCBFbnRpdHksIEdsdGZDb250YWluZXIsIElucHV0QWN0aW9uLE1lc2hDb2xsaWRlcixNZXNoUmVuZGVyZXIscG9pbnRlckV2ZW50c1N5c3RlbSxUcmFuc2Zvcm0sIFRyYW5zZm9ybVR5cGUgfSBmcm9tICdAZGNsL3Nkay9lY3MnXG5pbXBvcnQgeyBDb2xvcjMsIFF1YXRlcm5pb24sIFZlY3RvcjMgfSBmcm9tICdAZGNsL3Nkay9tYXRoJ1xuaW1wb3J0IHsgRGlhbG9nLCBGb2xsb3dQYXRoRGF0YSwgSW1hZ2VEYXRhLCBOUENEYXRhLCBOUENQYXRoVHlwZSwgTlBDU3RhdGUsIE5QQ1R5cGUsIFRyaWdnZXJEYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tICdAZGNsLXNkay91dGlscydcbmltcG9ydCB7IElzRm9sbG93aW5nUGF0aCwgVHJhY2tVc2VyRmxhZyB9IGZyb20gJy4vY29tcG9uZW50cyc7XG5pbXBvcnQgeyBmYWNlVXNlclN5c3RlbSwgaGFuZGxlQnViYmxldHlwaW5nLCBoYW5kbGVEaWFsb2dUeXBpbmcsIGhhbmRsZVBhdGhUaW1lcywgaW5wdXRMaXN0ZW5lclN5c3RlbSB9IGZyb20gJy4vc3lzdGVtcyc7XG5pbXBvcnQgeyBhZGREaWFsb2csIGNsb3NlRGlhbG9nLCBmaW5kRGlhbG9nQnlOYW1lLCBucGNEaWFsb2dDb21wb25lbnQsIG9wZW5EaWFsb2cgfSBmcm9tICcuL2RpYWxvZyc7XG5pbXBvcnQgeyBidWJibGVzLCBjbG9zZUJ1YmJsZSwgY3JlYXRlRGlhbG9nQnViYmxlLCBvcGVuQnViYmxlIH0gZnJvbSAnLi9idWJibGUnO1xuaW1wb3J0IHsgZGFya1RoZW1lLCBsaWdodFRoZW1lIH0gZnJvbSAnLi91aSc7XG5cbmV4cG9ydCBjb25zdCB3YWxraW5nVGltZXJzOiBNYXA8RW50aXR5LG51bWJlcj4gPSBuZXcgTWFwKClcbmV4cG9ydCBjb25zdCBucGNEYXRhQ29tcG9uZW50OiBNYXA8RW50aXR5LCBhbnk+ID0gbmV3IE1hcCgpXG5leHBvcnQgbGV0IGFjdGl2ZU5QQzpudW1iZXIgPSAwXG5leHBvcnQgbGV0IGJsYW5rRGlhbG9nOm51bWJlciA9IDBcblxuZW5naW5lLmFkZFN5c3RlbShoYW5kbGVQYXRoVGltZXMpXG5lbmdpbmUuYWRkU3lzdGVtKGhhbmRsZURpYWxvZ1R5cGluZylcbmVuZ2luZS5hZGRTeXN0ZW0oaGFuZGxlQnViYmxldHlwaW5nKVxuZW5naW5lLmFkZFN5c3RlbShmYWNlVXNlclN5c3RlbSlcbmVuZ2luZS5hZGRTeXN0ZW0oaW5wdXRMaXN0ZW5lclN5c3RlbSlcblxuY29uc3QgaXNDb29sZG93bjogTWFwPEVudGl0eSwgYW55PiA9IG5ldyBNYXAoKVxuY29uc3Qgb25BY3RpdmF0ZUNiczogTWFwPEVudGl0eSwgYW55PiA9IG5ldyBNYXAoKVxuY29uc3Qgb25XYWxrQXdheUNiczogTWFwPEVudGl0eSwgYW55PiA9IG5ldyBNYXAoKVxuY29uc3QgYW5pbVRpbWVyczogTWFwPEVudGl0eSxhbnk+ID0gbmV3IE1hcCgpXG5jb25zdCBwb2ludFJlYWNoZWRDYWxsYmFja3M6IE1hcDxFbnRpdHksIGFueT4gPSBuZXcgTWFwKClcbmNvbnN0IG9uRmluaXNoQ2FsbGJhY2tzOiBNYXA8RW50aXR5LCBhbnk+ID0gbmV3IE1hcCgpXG5cbmV4cG9ydCBmdW5jdGlvbiBzaG93RGVidWcoZGVidWc6Ym9vbGVhbil7XG4gICAgdXRpbHMudHJpZ2dlcnMuZW5hYmxlRGVidWdEcmF3KGRlYnVnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF0YShucGM6RW50aXR5KXtcbiAgICByZXR1cm4gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlKFxuICAgIHRyYW5zZm9ybTogYW55LFxuICAgIGRhdGE6IE5QQ0RhdGFcbil7XG4gICAgbGV0IG5wYyA9IGVuZ2luZS5hZGRFbnRpdHkoKVxuXG4gICAgbGV0IHQ6VHJhbnNmb3JtVHlwZSA9IHtwb3NpdGlvbjogdHJhbnNmb3JtLnBvc2l0aW9uID8gdHJhbnNmb3JtLnBvc2l0aW9uIDogVmVjdG9yMy5jcmVhdGUoMCwwLDApLCByb3RhdGlvbjogdHJhbnNmb3JtLnJvdGF0aW9uID8gdHJhbnNmb3JtLnJvdGF0aW9uIDogUXVhdGVybmlvbi5aZXJvKCksIHNjYWxlOiB0cmFuc2Zvcm0uc2NhbGUgPyB0cmFuc2Zvcm0uc2NhbGUgOiBWZWN0b3IzLk9uZSgpfVxuICAgIFRyYW5zZm9ybS5jcmVhdGUobnBjLCB0KVxuXG4gICAgbnBjRGF0YUNvbXBvbmVudC5zZXQobnBjLHtcbiAgICAgICAgaW50cm9kdWNlZDogZmFsc2UsXG4gICAgICAgIGluQ29vbGRvd246IGZhbHNlLFxuICAgICAgICBjb29sRG93bkR1cmF0aW9uOiBkYXRhICYmIGRhdGEuY29vbERvd25EdXJhdGlvbiA/IGRhdGEuY29vbERvd25EdXJhdGlvbiA6IDUsXG4gICAgICAgIGZhY2VVc2VyOiBkYXRhICYmIGRhdGEuZmFjZVVzZXIgPyBkYXRhLmZhY2VVc2VyIDogdW5kZWZpbmVkLFxuICAgICAgICB3YWxraW5nU3BlZWQ6MixcbiAgICAgICAgd2Fsa2luZ0FuaW06IGRhdGEgJiYgZGF0YS53YWxraW5nQW5pbSA/IGRhdGEud2Fsa2luZ0FuaW0gOiB1bmRlZmluZWQsXG4gICAgICAgIHBhdGhEYXRhOiBkYXRhLnBhdGhEYXRhID8gZGF0YS5wYXRoRGF0YSA6IHVuZGVmaW5lZCxcbiAgICAgICAgY3VycmVudFBhdGhEYXRhOiBbXSxcbiAgICAgICAgbWFudWFsU3RvcDpmYWxzZSxcbiAgICAgICAgcGF0aEluZGV4OjAsXG4gICAgICAgIHN0YXRlOk5QQ1N0YXRlLlNUQU5ESU5HLFxuICAgICAgICBpZGxlQW5pbTogZGF0YSAmJiBkYXRhLmlkbGVBbmltID8gZGF0YS5pZGxlQW5pbSA6IFwiSWRsZVwiLFxuICAgICAgICBidWJibGVIZWlnaHQ6IGRhdGEgJiYgZGF0YS50ZXh0QnViYmxlICYmIGRhdGEuYnViYmxlSGVpZ2h0ID8gZGF0YS5idWJibGVIZWlnaHQgOiB1bmRlZmluZWQsXG4gICAgICAgIGJ1YmJsZVNvdW5kOiBkYXRhLmRpYWxvZ1NvdW5kID8gZGF0YS5kaWFsb2dTb3VuZCA6IHVuZGVmaW5lZCxcbiAgICAgICAgaGFzQnViYmxlOiBkYXRhICYmIGRhdGEudGV4dEJ1YmJsZSA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgdHVyblNwZWVkOiBkYXRhICYmIGRhdGEudHVybmluZ1NwZWVkID8gZGF0YS50dXJuaW5nU3BlZWQgOiAyLFxuICAgICAgICB0aGVtZTogZGF0YS5kYXJrVUkgPyBkYXJrVGhlbWUgOiBsaWdodFRoZW1lXG4gICAgfSlcblxuICAgIGlmKGRhdGEgJiYgZGF0YS5ub1VJKXt9XG4gICAgZWxzZSBpZihkYXRhICYmIGRhdGEucG9ydHJhaXQpe1xuICAgICAgICAgICAgYWRkRGlhbG9nKG5wYywgZGF0YSAmJiBkYXRhLmRpYWxvZ1NvdW5kID8gZGF0YS5kaWFsb2dTb3VuZCA6IHVuZGVmaW5lZCwgdHlwZW9mIGRhdGEucG9ydHJhaXQgPT09IGBzdHJpbmdgID8geyBwYXRoOiBkYXRhLnBvcnRyYWl0IH0gOiBkYXRhLnBvcnRyYWl0KVxuICAgICAgICB9XG4gICAgZWxzZXtcbiAgICAgICAgYWRkRGlhbG9nKG5wYywgZGF0YSAmJiBkYXRhLmRpYWxvZ1NvdW5kID8gZGF0YS5kaWFsb2dTb3VuZCA6IHVuZGVmaW5lZClcbiAgICB9XG5cbiAgICBpZiAoZGF0YSAmJiBkYXRhLnRleHRCdWJibGUpIHtcbiAgICAgICAgY3JlYXRlRGlhbG9nQnViYmxlKG5wYywgbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS5idWJibGVIZWlnaHQpXG4gICAgICB9XG5cbiAgICBvbkFjdGl2YXRlQ2JzLnNldChucGMsICgpPT57XG4gICAgICAgIGRhdGEub25BY3RpdmF0ZSgpXG4gICAgfSlcblxuICAgIGlmIChkYXRhICYmIGRhdGEuaGFzT3duUHJvcGVydHkoXCJvbldhbGtBd2F5XCIpKSB7XG4gICAgICAgIG9uV2Fsa0F3YXlDYnMuc2V0KG5wYywgKCk9PntcbiAgICAgICAgICAgIGlmKCFkYXRhIHx8ICFkYXRhLmNvbnRpbnVlT25XYWxrQXdheSl7XG4gICAgICAgICAgICAgICAgaWYobnBjRGlhbG9nQ29tcG9uZW50LmhhcyhucGMpKXtcbiAgICAgICAgICAgICAgICAgICAgbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpLnZpc2libGUgPSBmYWxzZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICAgICAgaWYobnBjRGlhbG9nQ29tcG9uZW50LmhhcyhucGMpKXtcbiAgICAgICAgICAgICAgICAgICAgbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpLnZpc2libGUgPSBmYWxzZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRhdGEub25XYWxrQXdheSEoKVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIGFkZE5QQ0JvbmVzKG5wYywgZGF0YSlcbiAgICBhZGRDbGlja1JlYWN0aW9ucyhucGMsIGRhdGEpXG4gICAgYWRkVHJpZ2dlckFyZWEobnBjLCBkYXRhKVxuICAgIFxuICAgIGlmIChkYXRhICYmIGRhdGEucGF0aERhdGEgJiYgZGF0YS5wYXRoRGF0YS5zcGVlZCkge1xuICAgICAgICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgICAgICAgbnBjRGF0YS53YWxraW5nU3BlZWQgPSBkYXRhLnBhdGhEYXRhLnNwZWVkXG4gICAgfVxuXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5jb29sRG93bkR1cmF0aW9uKSB7XG4gICAgICAgIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgICAgICBucGNEYXRhLmNvb2xEb3duRHVyYXRpb24gPSBkYXRhLmNvb2xEb3duRHVyYXRpb25cbiAgICB9XG5cbiAgICBpZiAoZGF0YSAmJiBkYXRhLnBhdGhEYXRhKXtcbiAgICAgICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgICAgIG5wY0RhdGEucGF0aERhdGEubG9vcCA9IHRydWVcbiAgICAgICAgZm9sbG93UGF0aChucGMsIG5wY0RhdGEucGF0aERhdGEpXG4gICAgfVxuXG4gICAgcmV0dXJuIG5wY1xufVxuXG5mdW5jdGlvbiBhZGROUENCb25lcyhucGM6RW50aXR5LCBkYXRhOk5QQ0RhdGEpe1xuICAgIHN3aXRjaChkYXRhLnR5cGUpe1xuICAgICAgICBjYXNlIE5QQ1R5cGUuQVZBVEFSOlxuICAgICAgICAgICAgQXZhdGFyU2hhcGUuY3JlYXRlKG5wYywge1xuICAgICAgICAgICAgICAgIGlkOiBcIm5wY1wiLFxuICAgICAgICAgICAgICAgIG5hbWU6IFwiTlBDXCIsXG4gICAgICAgICAgICAgICAgYm9keVNoYXBlOlwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOkJhc2VNYWxlXCIsXG4gICAgICAgICAgICAgICAgZW1vdGVzOiBbXSxcbiAgICAgICAgICAgICAgICB3ZWFyYWJsZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgXCJ1cm46ZGVjZW50cmFsYW5kOm9mZi1jaGFpbjpiYXNlLWF2YXRhcnM6Zl9leWVzXzAwXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOmZfZXllYnJvd3NfMDBcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ1cm46ZGVjZW50cmFsYW5kOm9mZi1jaGFpbjpiYXNlLWF2YXRhcnM6Zl9tb3V0aF8wMFwiLFxuICAgICAgICAgICAgICAgICAgICBcInVybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczpjb21meV9zcG9ydF9zYW5kYWxzXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOnNvY2Nlcl9wYW50c1wiLFxuICAgICAgICAgICAgICAgICAgICBcInVybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczplbGVnYW50X3N3ZWF0ZXJcIixcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIE5QQ1R5cGUuQ1VTVE9NOlxuICAgICAgICAgICAgR2x0ZkNvbnRhaW5lci5jcmVhdGUobnBjLCB7IFxuICAgICAgICAgICAgICAgIHNyYzogZGF0YSAmJiBkYXRhLm1vZGVsID8gZGF0YS5tb2RlbCA6IFwiXCIgXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgQW5pbWF0b3IuY3JlYXRlKG5wYywge1xuICAgICAgICAgICAgICAgIHN0YXRlczpbe1xuICAgICAgICAgICAgICAgICAgICBuYW1lOmRhdGEgJiYgZGF0YS5pZGxlQW5pbSA/IGRhdGEuaWRsZUFuaW0gOiAnSWRsZScsXG4gICAgICAgICAgICAgICAgICAgIGNsaXA6ZGF0YSAmJiBkYXRhLmlkbGVBbmltID8gZGF0YS5pZGxlQW5pbSA6ICdJZGxlJyxcbiAgICAgICAgICAgICAgICAgICAgbG9vcDp0cnVlXG4gICAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgICAgICAgICAgbnBjRGF0YS5pZGxlQW5pbSA9IGRhdGEgJiYgZGF0YS5pZGxlQW5pbSA/IGRhdGEuaWRsZUFuaW0gOiAnSWRsZSdcbiAgICAgICAgICAgIG5wY0RhdGEubGFzdFBsYXllZEFuaW0gPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLmlkbGVBbmltXG5cbiAgICAgICAgICAgIEFuaW1hdG9yLnBsYXlTaW5nbGVBbmltYXRpb24obnBjLCBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLmlkbGVBbmltKVxuXG5cbiAgICAgICAgICAgIGlmIChkYXRhICYmIGRhdGEud2Fsa2luZ0FuaW0pIHtcbiAgICAgICAgICAgICAgICBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLndhbGtpbmdBbmltID0gZGF0YS53YWxraW5nQW5pbVxuICAgICAgICAgICAgICAgIGxldCBhbmltYXRpb25zID0gQW5pbWF0b3IuZ2V0TXV0YWJsZShucGMpXG4gICAgICAgICAgICAgICAgYW5pbWF0aW9ucy5zdGF0ZXMucHVzaCh7bmFtZTpkYXRhLndhbGtpbmdBbmltLCBjbGlwOiBkYXRhLndhbGtpbmdBbmltLCBsb29wOnRydWV9KVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIE5QQ1R5cGUuQkxBTks6XG4gICAgICAgICAgICBNZXNoUmVuZGVyZXIuc2V0Qm94KG5wYylcbiAgICAgICAgICAgIE1lc2hDb2xsaWRlci5zZXRCb3gobnBjKVxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICB9XG59XG5cbmZ1bmN0aW9uIGFkZENsaWNrUmVhY3Rpb25zKG5wYzpFbnRpdHksIGRhdGE6TlBDRGF0YSl7XG4gICAgbGV0IGFjdGl2YXRlQnV0dG9uID0gZGF0YSAmJiBkYXRhLm9ubHlDbGlja1RyaWdnZXIgPyBJbnB1dEFjdGlvbi5JQV9QT0lOVEVSIDogSW5wdXRBY3Rpb24uSUFfUFJJTUFSWVxuXG4gICAgcG9pbnRlckV2ZW50c1N5c3RlbS5vblBvaW50ZXJEb3duKFxuICAgICAgICBucGMsXG4gICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChpc0Nvb2xkb3duLmhhcyhucGMpIHx8IChucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYykudmlzaWJsZSkpIHJldHVyblxuICAgICAgICAgICAgYWN0aXZhdGUobnBjKVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBidXR0b246IGFjdGl2YXRlQnV0dG9uLFxuICAgICAgICAgICAgaG92ZXJUZXh0OiBkYXRhICYmIGRhdGEuaG92ZXJUZXh0ID8gZGF0YS5ob3ZlclRleHQgOiAnVGFsaycsXG4gICAgICAgICAgICBzaG93RmVlZGJhY2s6IGRhdGEgJiYgZGF0YS5vbmx5RXh0ZXJuYWxUcmlnZ2VyID8gZmFsc2UgOiB0cnVlLFxuICAgICAgICB9XG4gICAgICAgIClcblxuICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLm9ubHlFeHRlcm5hbFRyaWdnZXIpIHtcbiAgICAgICAgcG9pbnRlckV2ZW50c1N5c3RlbS5yZW1vdmVPblBvaW50ZXJEb3duKG5wYylcbiAgICAgICAgfSBcbn1cblxuZnVuY3Rpb24gYWRkVHJpZ2dlckFyZWEobnBjOkVudGl0eSwgZGF0YTpOUENEYXRhKXtcblxuICAgICAgICBsZXQgdHJpZ2dlckRhdGE6IFRyaWdnZXJEYXRhID0ge31cblxuICAgICAgICBpZiAoIWRhdGEgfHwgKGRhdGEgJiYgIWRhdGEub25seUV4dGVybmFsVHJpZ2dlciAmJiAhZGF0YS5vbmx5Q2xpY2tUcmlnZ2VyICYmICFkYXRhLm9ubHlFVHJpZ2dlcikpe1xuICAgICAgICBvbkFjdGl2YXRlQ2JzLnNldChucGMsICgpPT57XG4gICAgICAgICAgICBpZiAoaXNDb29sZG93bi5oYXMobnBjKSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKG5wYywgJyBpbiBjb29sZG93bicpXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9IFxuICAgICAgICAgICAgZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgKG5wY0RpYWxvZ0NvbXBvbmVudC5oYXMobnBjKSAmJiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYykudmlzaWJsZSkgfHxcbiAgICAgICAgICAgICAgICAoZGF0YSAmJiBkYXRhLm9ubHlFeHRlcm5hbFRyaWdnZXIpIHx8XG4gICAgICAgICAgICAgICAgKGRhdGEgJiYgZGF0YS5vbmx5Q2xpY2tUcmlnZ2VyKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkYXRhLm9uQWN0aXZhdGUoKVxuICAgICAgICB9KVxuICAgICAgICB0cmlnZ2VyRGF0YS5vbkNhbWVyYUVudGVyID0gb25BY3RpdmF0ZUNicy5nZXQobnBjKVxuICAgICAgICB9XG5cbiAgICAvLyB3aGVuIGV4aXRpbmcgdHJpZ2dlclxuICAgIGlmICghZGF0YSB8fCAoZGF0YSAmJiAhZGF0YS5jb250aW51ZU9uV2Fsa0F3YXkpKSB7XG4gICAgICAgIHRyaWdnZXJEYXRhLm9uQ2FtZXJhRXhpdCA9ICgpID0+IHtcbiAgICAgICAgICAgIGhhbmRsZVdhbGtBd2F5KG5wYylcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHdoZW4gZW50ZXJpbmcgdHJpZ2dlclxuICAgIGlmIChcbiAgICAgICAgIWRhdGEgfHxcbiAgICAgICAgKGRhdGEgJiYgIWRhdGEub25seUV4dGVybmFsVHJpZ2dlciAmJiAhZGF0YS5vbmx5Q2xpY2tUcmlnZ2VyICYmICFkYXRhLm9ubHlFVHJpZ2dlcilcbiAgICApIHtcbiAgICAgICAgdHJpZ2dlckRhdGEub25DYW1lcmFFbnRlciA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChpc0Nvb2xkb3duLmhhcyhucGMpKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2cobnBjLCAnIGluIGNvb2xkb3duJylcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH0gXG4gICAgICAgICAgICAvLyBlbHNlIGlmIChcbiAgICAgICAgICAgIC8vICAgICAodGhpcy5kaWFsb2cgJiYgdGhpcy5kaWFsb2cuaXNEaWFsb2dPcGVuKSB8fFxuICAgICAgICAgICAgLy8gICAgIChkYXRhICYmIGRhdGEub25seUV4dGVybmFsVHJpZ2dlcikgfHxcbiAgICAgICAgICAgIC8vICAgICAoZGF0YSAmJiBkYXRhLm9ubHlDbGlja1RyaWdnZXIpXG4gICAgICAgICAgICAvLyApIHtcbiAgICAgICAgICAgIC8vICAgICByZXR1cm5cbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgIGFjdGl2YXRlKG5wYylcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGFkZCB0cmlnZ2VyXG4gICAgaWYgKHRyaWdnZXJEYXRhLm9uQ2FtZXJhRW50ZXIgfHwgdHJpZ2dlckRhdGEub25DYW1lcmFFeGl0KSB7XG4gICAgICAgIHV0aWxzLnRyaWdnZXJzLmFkZFRyaWdnZXIobnBjLDI1NCwxLFt7dHlwZTonc3BoZXJlJywgcG9zaXRpb246IFZlY3RvcjMuWmVybygpLCByYWRpdXM6IGRhdGEucmVhY3REaXN0YW5jZSAhPSB1bmRlZmluZWQgPyBkYXRhLnJlYWN0RGlzdGFuY2UgOiA2fV0sIHRyaWdnZXJEYXRhLm9uQ2FtZXJhRW50ZXIgPyB0cmlnZ2VyRGF0YS5vbkNhbWVyYUVudGVyIDogdW5kZWZpbmVkLCB0cmlnZ2VyRGF0YS5vbkNhbWVyYUV4aXQgPyB0cmlnZ2VyRGF0YS5vbkNhbWVyYUV4aXQgOiB1bmRlZmluZWQsIENvbG9yMy5SZWQoKSlcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb2xsb3dQYXRoKG5wYzpFbnRpdHksIGRhdGE/OkZvbGxvd1BhdGhEYXRhKXtcbiAgICAgICAgXG4gICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgbGV0IHBhdGg6YW55W10gPVtdXG5cbiAgICBpZihucGNEYXRhLmZhY2VVc2VyKXtcbiAgICAgICAgaWYoVHJhY2tVc2VyRmxhZy5oYXMobnBjKSl7XG4gICAgICAgICAgICBUcmFja1VzZXJGbGFnLmRlbGV0ZUZyb20obnBjKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYobnBjRGF0YS5tYW51YWxTdG9wKXtcbiAgICAgICAgbGV0IGR1cmF0aW9uID0gbnBjRGF0YS5wYXRoRGF0YS50b3RhbER1cmF0aW9uXG4gICAgICAgIGxldCBjdXJyZW50VGltZXI6bnVtYmVyID0gd2Fsa2luZ1RpbWVycy5nZXQobnBjKSFcbiAgICAgICAgY29uc29sZS5sb2coJ2N1cnJlbnQgdGltZSBpcycsIGN1cnJlbnRUaW1lcilcbiAgICAgICAgaWYoY3VycmVudFRpbWVyKXtcbiAgICAgICAgICAgIGR1cmF0aW9uIC09IGN1cnJlbnRUaW1lclxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHBhdGg6YW55W10gPSBbXVxuICAgICAgICBucGNEYXRhLnBhdGhEYXRhLnBhdGguZm9yRWFjaCgocDphbnkpPT57XG4gICAgICAgICAgICBwYXRoLnB1c2gocClcbiAgICAgICAgfSlcbiAgICAgICAgcGF0aC5zcGxpY2UoMCxucGNEYXRhLnBhdGhJbmRleClcblxuICAgICAgICBsZXQgcG9zID0gVHJhbnNmb3JtLmdldChucGMpLnBvc2l0aW9uXG4gICAgICAgIHBhdGgudW5zaGlmdChWZWN0b3IzLmNyZWF0ZShwb3MueCwgcG9zLnksIHBvcy56KSlcbiAgICAgICAgd2Fsa05QQyhucGMsbnBjRGF0YSwgbnBjRGF0YS5wYXRoRGF0YS5wYXRoVHlwZSwgZHVyYXRpb24sIHBhdGgsIHBvaW50UmVhY2hlZENhbGxiYWNrcy5nZXQobnBjKSwgb25GaW5pc2hDYWxsYmFja3MuZ2V0KG5wYykpICAgIFxuICAgIH1cbiAgICBlbHNle1xuICAgICAgICBpZihkYXRhKXtcbiAgICAgICAgICAgIG5wY0RhdGEucGF0aERhdGEgPSBkYXRhXG4gICAgXG4gICAgICAgICAgICBpZihkYXRhLnN0YXJ0aW5nUG9pbnQpe1xuICAgICAgICAgICAgICAgIGRhdGEucGF0aD8uc3BsaWNlKDAsZGF0YS5zdGFydGluZ1BvaW50IC0gMSlcbiAgICAgICAgICAgIH1cbiAgICBcbiAgICAgICAgICAgIGxldCBwb3MgPSBUcmFuc2Zvcm0uZ2V0KG5wYykucG9zaXRpb25cbiAgICAgICAgICAgIHBhdGgucHVzaChWZWN0b3IzLmNyZWF0ZShwb3MueCwgcG9zLnksIHBvcy56KSlcbiAgICAgICAgICAgIGRhdGEucGF0aD8uZm9yRWFjaCgocCk9PntcbiAgICAgICAgICAgICAgICBwYXRoLnB1c2gocClcbiAgICAgICAgICAgIH0pXG4gICAgXG4gICAgICAgICAgICBvbkZpbmlzaENhbGxiYWNrcy5zZXQobnBjLCgpPT57XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ29uIGZpbmlzaGVkIGNhbGxiYWNrJylcbiAgICAgICAgICAgICAgICBpZihkYXRhICYmIGRhdGEub25GaW5pc2hDYWxsYmFjayAmJiAhZGF0YS5sb29wKXtcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5vbkZpbmlzaENhbGxiYWNrXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN0b3BQYXRoKG5wYylcbiAgICAgICAgICAgIH0pXG4gICAgXG4gICAgICAgICAgICBwb2ludFJlYWNoZWRDYWxsYmFja3Muc2V0KG5wYywgKCk9PntcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnb24gcG9pbnQgcmVhY2hlZCBjYWxsYmFjaycpXG4gICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgICAgICAgICAgICAgZGF0YS5wYXRoSW5kZXggKz0gMVxuICAgICAgICAgICAgICAgIGRhdGEub25SZWFjaGVkUG9pbnRDYWxsYmFjayA/IGRhdGEub25SZWFjaGVkUG9pbnRDYWxsYmFjayA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHdhbGtOUEMobnBjLCBucGNEYXRhLCBkYXRhLnBhdGhUeXBlISwgZGF0YS50b3RhbER1cmF0aW9uLCBwYXRoLCBwb2ludFJlYWNoZWRDYWxsYmFja3MuZ2V0KG5wYyksIG9uRmluaXNoQ2FsbGJhY2tzLmdldChucGMpKVxuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIGlmKG5wY0RhdGEubWFudWFsU3RvcCl7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3dlIGhhdmUgbWFudWFsIHN0b3AsIG5lZWQgdG8gcGljayBiYWNrIHVwIHdoZXJlIHdlIGxlZnQgb2ZmJylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3dlIGFyZSB0cnlpbmcgdG8gZm9sbG93IGEgcGF0aCB3aXRvdXQgc3RhcnRpbmcgb25lIHByaW9yJylcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgXG4gICAgfVxuXG4gICBcbiAgICB9XG5cbmZ1bmN0aW9uIHdhbGtOUEMobnBjOkVudGl0eSwgbnBjRGF0YTphbnksIHR5cGU6TlBDUGF0aFR5cGUsIGR1cmF0aW9uOm51bWJlciwgcGF0aDpWZWN0b3IzW10sIHBvaW50UmVhY2hlZENhbGxiYWNrPzphbnksIGZpbmlzaGVkQ2FsbGJhY2s/OmFueSl7XG4gICAgXG4gICAgaWYoSXNGb2xsb3dpbmdQYXRoLmhhcyhucGMpKXtcbiAgICAgICAgSXNGb2xsb3dpbmdQYXRoLmRlbGV0ZUZyb20obnBjKVxuICAgICAgICB3YWxraW5nVGltZXJzLmRlbGV0ZShucGMpXG4gICAgfVxuICAgIElzRm9sbG93aW5nUGF0aC5jcmVhdGUobnBjKVxuXG4gICAgaWYodHlwZSl7XG4gICAgICAgIGlmKHR5cGU9PSBOUENQYXRoVHlwZS5SSUdJRF9QQVRIKXtcbiAgICAgICAgICAgIHV0aWxzLnBhdGhzLnN0YXJ0U3RyYWlnaHRQYXRoKG5wYywgcGF0aCwgZHVyYXRpb24sdHJ1ZSxcbiAgICAgICAgICAgICAgICAoKT0+e2ZpbmlzaGVkQ2FsbGJhY2soKX0sICgpPT57cG9pbnRSZWFjaGVkQ2FsbGJhY2soKX0pXG4gICAgICAgIH1cbiAgICAgICAgZWxzZXtcbiAgICAgICAgICAgIHV0aWxzLnBhdGhzLnN0YXJ0U21vb3RoUGF0aChucGMsIHBhdGgsIGR1cmF0aW9uLCAzMCwgdHJ1ZSwgXG4gICAgICAgICAgICAgICAgKCk9PntmaW5pc2hlZENhbGxiYWNrKCl9LCAoKT0+e3BvaW50UmVhY2hlZENhbGxiYWNrKCl9KVxuICAgICAgICAgICAgfVxuICAgIH1cbiAgICBlbHNle1xuICAgICAgICB1dGlscy5wYXRocy5zdGFydFNtb290aFBhdGgobnBjLCBwYXRoLCBkdXJhdGlvbiwgMjAsIHRydWUsIFxuICAgICAgICAgICAgKCk9PntmaW5pc2hlZENhbGxiYWNrKCl9LCAoKT0+e3BvaW50UmVhY2hlZENhbGxiYWNrKCl9KVxuICAgIH0gICBcblxuICAgIGlmIChucGNEYXRhLndhbGtpbmdBbmltKSB7XG4gICAgICAgIEFuaW1hdG9yLnBsYXlTaW5nbGVBbmltYXRpb24obnBjLCBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLndhbGtpbmdBbmltLCB0cnVlKVxuICAgICAgICBucGNEYXRhLmxhc3RQbGF5ZWRBbmltID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS53YWxraW5nQW5pbVxuICAgICAgfVxuICAgIG5wY0RhdGEuc3RhdGUgPSBOUENTdGF0ZS5GT0xMT1dQQVRIXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdG9wV2Fsa2luZyhucGM6RW50aXR5LCBkdXJhdGlvbj86IG51bWJlciwgZmluaXNoZWQ/OmJvb2xlYW4pIHtcbiAgICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgICBucGNEYXRhLnN0YXRlID0gTlBDU3RhdGUuU1RBTkRJTkdcbiAgICBucGNEYXRhLm1hbnVhbFN0b3AgPSB0cnVlXG5cbiAgICBzdG9wUGF0aChucGMpXG5cbiAgICBpZiAoZHVyYXRpb24pIHtcbiAgICAgICAgdXRpbHMudGltZXJzLnNldFRpbWVvdXQoKCk9PntcbiAgICAgICAgICAgIC8vaWYgKHRoaXMuZGlhbG9nICYmIHRoaXMuZGlhbG9nLmlzRGlhbG9nT3BlbikgcmV0dXJuXG4gICAgICAgICAgICBpZihucGNEYXRhLnBhdGgpe1xuICAgICAgICAgICAgICAgIEFuaW1hdG9yLnN0b3BBbGxBbmltYXRpb25zKG5wYywgdHJ1ZSlcbiAgICAgICAgICAgICAgICBpZihucGNEYXRhQ29tcG9uZW50LmdldChucGMpLndhbGtpbmdBbmltKXtcbiAgICAgICAgICAgICAgICAgICAgQW5pbWF0b3IucGxheVNpbmdsZUFuaW1hdGlvbihucGMsIG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykud2Fsa2luZ0FuaW0sdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgbnBjRGF0YS5sYXN0UGxheWVkQW5pbSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykud2Fsa2luZ0FuaW1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IGR1cmF0aW9uID0gbnBjRGF0YS5wYXRoRGF0YS50b3RhbER1cmF0aW9uXG4gICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRUaW1lcjpudW1iZXIgPSB3YWxraW5nVGltZXJzLmdldChucGMpIVxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjdXJyZW50IHRpbWUgaXMnLCBjdXJyZW50VGltZXIpXG4gICAgICAgICAgICAgICAgaWYoY3VycmVudFRpbWVyKXtcbiAgICAgICAgICAgICAgICAgICAgZHVyYXRpb24gLT0gY3VycmVudFRpbWVyXG4gICAgICAgICAgICAgICAgfVxuICAgIFxuICAgICAgICAgICAgICAgIGxldCBwYXRoOmFueVtdID0gW11cbiAgICAgICAgICAgICAgICBucGNEYXRhLnBhdGhEYXRhLnBhdGguZm9yRWFjaCgocDphbnkpPT57XG4gICAgICAgICAgICAgICAgICAgIHBhdGgucHVzaChwKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgcGF0aC5zcGxpY2UoMCxucGNEYXRhLnBhdGhJbmRleClcbiAgICBcbiAgICAgICAgICAgICAgICBsZXQgcG9zID0gVHJhbnNmb3JtLmdldChucGMpLnBvc2l0aW9uXG4gICAgICAgICAgICAgICAgcGF0aC51bnNoaWZ0KFZlY3RvcjMuY3JlYXRlKHBvcy54LCBwb3MueSwgcG9zLnopKVxuICAgIFxuICAgICAgICAgICAgICAgIG5wY0RhdGEubWFudWFsU3RvcCA9IGZhbHNlXG4gICAgICAgICAgICAgICAgd2Fsa05QQyhucGMsbnBjRGF0YSwgbnBjRGF0YS5wYXRoRGF0YS5wYXRoVHlwZSwgZHVyYXRpb24sIHBhdGgsIHBvaW50UmVhY2hlZENhbGxiYWNrcy5nZXQobnBjKSwgb25GaW5pc2hDYWxsYmFja3MuZ2V0KG5wYykpICAgIFxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sZHVyYXRpb24gKiAxMDAwKVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0b3BQYXRoKG5wYzpFbnRpdHkpe1xuICAgIHV0aWxzLnBhdGhzLnN0b3BQYXRoKG5wYylcbiAgICBJc0ZvbGxvd2luZ1BhdGguZGVsZXRlRnJvbShucGMpXG5cbiAgICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgICBpZiAobnBjRGF0YS53YWxraW5nQW5pbSkge1xuICAgICAgICBBbmltYXRvci5wbGF5U2luZ2xlQW5pbWF0aW9uKG5wYywgbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS5pZGxlQW5pbSlcbiAgICAgICAgbnBjRGF0YS5sYXN0UGxheWVkQW5pbSA9IG5wY0RhdGEuaWRsZUFuaW1cbiAgICB9XG5cbiAgICBpZighbnBjRGF0YS5tYW51YWxTdG9wKXtcbiAgICAgICAgaWYobnBjRGF0YS5wYXRoRGF0YS5sb29wKXtcbiAgICAgICAgICAgIG5wY0RhdGEucGF0aEluZGV4ID0gMFxuICAgICAgICAgICAgd2Fsa2luZ1RpbWVycy5kZWxldGUobnBjKVxuICAgICAgICAgICAgY29uc29sZS5sb2coJ3dlIGFyZSBsb29waW5nIHBhdGgnLCBucGNEYXRhKVxuICAgICAgICAgICAgZm9sbG93UGF0aChucGMsIG5wY0RhdGEucGF0aERhdGEpXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhucGNEYXRhKVxuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJOUEMoKXtcbiAgICBhY3RpdmVOUEMgPSAwXG59XG5cbi8qKlxuICogQ2FsbHMgdGhlIE5QQydzIGFjdGl2YXRpb24gZnVuY3Rpb24gKHNldCBvbiBOUEMgZGVmaW5pdGlvbikuIElmIE5QQyBoYXMgYGZhY2VVc2VyYCA9IHRydWUsIGl0IHdpbGwgcm90YXRlIHRvIGZhY2UgdGhlIHBsYXllci4gSXQgc3RhcnRzIGEgY29vbGRvd24gY291bnRlciB0byBhdm9pZCByZWFjdGl2YXRpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhY3RpdmF0ZShucGM6RW50aXR5KSB7XG5cbiAgICBpZihhY3RpdmVOUEMgIT0gMCl7XG4gICAgICAgIGNvbnNvbGUubG9nKCd3ZSBoYXZlIGEgY3VycmVudCBucGMsIG5lZWR0byByZW1vdmUnKVxuICAgICAgICBlbmRJbnRlcmFjdGlvbihhY3RpdmVOUEMgYXMgRW50aXR5KVxuICAgICAgICAvLyBjbG9zZURpYWxvZyhhY3RpdmVOUEMgYXMgRW50aXR5KVxuICAgIH1cblxuICAgIGFjdGl2ZU5QQyA9IG5wY1xuICAgIG9uQWN0aXZhdGVDYnMuZ2V0KG5wYykoKVxuXG4gICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgaWYgKG5wY0RhdGEuZmFjZVVzZXIpIHtcbiAgICAgICAgaWYoVHJhY2tVc2VyRmxhZy5oYXMobnBjKSl7XG4gICAgICAgICAgICBUcmFja1VzZXJGbGFnLmRlbGV0ZUZyb20obnBjKVxuICAgICAgICB9XG5cbiAgICAgICAgVHJhY2tVc2VyRmxhZy5jcmVhdGUobnBjLHtcbiAgICAgICAgICAgIGxvY2tYWlJvdGF0aW9uOnRydWUsXG4gICAgICAgICAgICBhY3RpdmU6dHJ1ZSxcbiAgICAgICAgICAgIHJvdFNwZWVkOm5wY0RhdGEudHVyblNwZWVkXG4gICAgICAgIH0pXG4gICAgfVxuICAgIGlzQ29vbGRvd24uc2V0KG5wYywgdHJ1ZSlcbiAgICBucGNEYXRhLmluQ29vbGRvd24gPSB0cnVlXG5cbiAgICB1dGlscy50aW1lcnMuc2V0VGltZW91dChcbiAgICAgICAgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBpc0Nvb2xkb3duLmRlbGV0ZShucGMpXG4gICAgICAgICAgICBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLmluQ29vbGRvd24gPSBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICAxMDAwICogbnBjRGF0YS5jb29sRG93bkR1cmF0aW9uXG4gICAgKVxuICAgIGNvbnNvbGUubG9nKCdhY3RpdmF0ZWQgbnBjLCcsIG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykpXG59XG5cbmZ1bmN0aW9uIGVuZEludGVyYWN0aW9uKG5wYzpFbnRpdHkpIHtcbiAgICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgIG5wY0RhdGEuc3RhdGUgPSBOUENTdGF0ZS5TVEFORElOR1xuXG4gICAgICAgIGlmIChucGNEaWFsb2dDb21wb25lbnQuaGFzKG5wYykpey8vfSAmJiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYykudmlzaWJsZSkge1xuICAgICAgICAgICAgY2xvc2VEaWFsb2cobnBjKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYobnBjRGF0YS5mYWNlVXNlcil7XG4gICAgICAgICAgICBpZihUcmFja1VzZXJGbGFnLmhhcyhucGMpKXtcbiAgICAgICAgICAgICAgICBUcmFja1VzZXJGbGFnLmRlbGV0ZUZyb20obnBjKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coJ2VuZGluZyBpbnRlcmFjdGlvbicsIG5wY0RhdGEsIGJ1YmJsZXMuZ2V0KG5wYykpXG4gICAgICAgIGlmKG5wY0RhdGEuaGFzQnViYmxlICYmIGJ1YmJsZXMuZ2V0KG5wYykuaXNCdWJibGVPcGVuKXtcbiAgICAgICAgICAgIGNsb3NlQnViYmxlKG5wYylcbiAgICAgICAgfVxufVxuXG4vKipcbiAqIEVuZHMgaW50ZXJhY3Rpb24gYW5kIGNhbGxzIHRoZSBvbldhbGtBd2F5IGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVXYWxrQXdheShucGM6RW50aXR5KSB7XG4gICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgaWYgKG5wY0RhdGEuc3RhdGUgPT0gTlBDU3RhdGUuRk9MTE9XUEFUSCkge1xuICAgICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBlbmRJbnRlcmFjdGlvbihucGMpXG5cbiAgICBpZiAob25XYWxrQXdheUNicy5nZXQobnBjKSkge1xuICAgICAgICBvbldhbGtBd2F5Q2JzLmdldChucGMpKClcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwbGF5QW5pbWF0aW9uKG5wYzpFbnRpdHksIGFuaW06c3RyaW5nLCBub0xvb3A/OmJvb2xlYW4sIGR1cmF0aW9uPzpudW1iZXIpe1xuICAgIGxldCBhbmltYXRpb25zID0gQW5pbWF0b3IuZ2V0TXV0YWJsZShucGMpXG4gICAgaWYoYW5pbWF0aW9ucy5zdGF0ZXMuZmlsdGVyKChhbmltYXRpb24pPT4gYW5pbWF0aW9uLm5hbWUgPT09IGFuaW0pLmxlbmd0aCA9PSAwKXtcbiAgICAgICAgYW5pbWF0aW9ucy5zdGF0ZXMucHVzaCh7bmFtZTphbmltLCBjbGlwOmFuaW0sIGxvb3A6IG5vTG9vcD8gZmFsc2UgOiB0cnVlfSlcbiAgICB9XG5cbiAgICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgICBpZihucGNEYXRhLnN0YXRlID09IE5QQ1N0YXRlLkZPTExPV1BBVEgpe1xuICAgICAgICB1dGlscy5wYXRocy5zdG9wUGF0aChucGMpXG4gICAgfVxuXG4gICAgaWYoYW5pbVRpbWVycy5oYXMobnBjKSl7XG4gICAgICAgIHV0aWxzLnRpbWVycy5jbGVhclRpbWVvdXQoYW5pbVRpbWVycy5nZXQobnBjKSlcbiAgICAgICAgYW5pbVRpbWVycy5kZWxldGUobnBjKVxuICAgIH1cblxuICAgIEFuaW1hdG9yLnN0b3BBbGxBbmltYXRpb25zKG5wYywgdHJ1ZSlcbiAgICBBbmltYXRvci5wbGF5U2luZ2xlQW5pbWF0aW9uKG5wYywgYW5pbSwgdHJ1ZSlcbiAgICBpZihkdXJhdGlvbil7XG4gICAgICAgIGNvbnNvbGUubG9nKCdoYXZlIGEgZHVyYXRpb24gdG8gcGxheSBhbmltYXRpb24nKVxuICAgICAgICBpZihhbmltVGltZXJzLmhhcyhucGMpKXtcbiAgICAgICAgICAgIHV0aWxzLnRpbWVycy5jbGVhclRpbWVvdXQoYW5pbVRpbWVycy5nZXQobnBjKSlcbiAgICAgICAgICAgIGFuaW1UaW1lcnMuZGVsZXRlKG5wYylcbiAgICAgICAgfVxuXG4gICAgICAgIGFuaW1UaW1lcnMuc2V0KG5wYywgdXRpbHMudGltZXJzLnNldFRpbWVvdXQoKCk9PntcbiAgICAgICAgICAgIGFuaW1UaW1lcnMuZGVsZXRlKG5wYylcbiAgICAgICAgICAgIEFuaW1hdG9yLnN0b3BBbGxBbmltYXRpb25zKG5wYywgdHJ1ZSlcbiAgICAgICAgICAgIGlmKG5wY0RhdGEuaWRsZUFuaW0pe1xuICAgICAgICAgICAgICAgIEFuaW1hdG9yLnBsYXlTaW5nbGVBbmltYXRpb24obnBjLCBucGNEYXRhLmlkbGVBbmltKVxuICAgICAgICAgICAgICAgIG5wY0RhdGEubGFzdFBsYXllZEFuaW0gPSBucGNEYXRhLmlkbGVBbmltXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDEwMDAgKiBkdXJhdGlvbikpLy9cbiAgICB9IFxuXG4gICAgbnBjRGF0YS5sYXN0UGxheWVkQW5pbSA9IGFuaW1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoYW5nZUlkbGVBbmltKG5wYzpFbnRpdHksIGFuaW1hdGlvbjpzdHJpbmcsIHBsYXk/OmJvb2xlYW4pe1xuICAgIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgIG5wY0RhdGEuaWRsZUFuaW0gPSBhbmltYXRpb25cblxuICAgIGxldCBhbmltYXRpb25zID0gQW5pbWF0b3IuZ2V0TXV0YWJsZShucGMpXG4gICAgaWYoYW5pbWF0aW9ucy5zdGF0ZXMuZmlsdGVyKChhbmltKT0+IGFuaW0ubmFtZSA9PT0gYW5pbWF0aW9uKS5sZW5ndGggPT0gMCl7XG4gICAgICAgIGFuaW1hdGlvbnMuc3RhdGVzLnB1c2goe25hbWU6YW5pbWF0aW9uLCBjbGlwOmFuaW1hdGlvbiwgbG9vcDogdHJ1ZX0pXG4gICAgfVxuXG4gICAgaWYocGxheSl7XG4gICAgICAgIHBsYXlBbmltYXRpb24obnBjLCBhbmltYXRpb24sIHRydWUpXG4gICAgICAgIG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykubGFzdFBsYXllZEFuaW0gPSBhbmltYXRpb25cbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWxrQnViYmxlKG5wYzpFbnRpdHksIHNjcmlwdDpEaWFsb2dbXSwgc3RhcnRJbmRleD86bnVtYmVyIHwgc3RyaW5nKXtcbiAgICBvcGVuQnViYmxlKG5wYywgc2NyaXB0LHN0YXJ0SW5kZXgpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEaWFsb2dXaW5kb3coZGVmYXVsdFBvcnRyYWl0PzpJbWFnZURhdGEsIHNvdW5kPzpzdHJpbmcpe1xuICAgIGxldCBkaWFsb2cgPSBlbmdpbmUuYWRkRW50aXR5KClcbiAgICBhZGREaWFsb2coZGlhbG9nLHNvdW5kLCBkZWZhdWx0UG9ydHJhaXQpXG4gICAgcmV0dXJuIGRpYWxvZ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb3BlbkRpYWxvZ1dpbmRvdyhucGM6RW50aXR5LCBkaWFsb2c6RGlhbG9nW10sIHN0YXJ0SW5kZXg/Om51bWJlciB8IHN0cmluZyl7XG4gICAgYWN0aXZlTlBDID0gbnBjXG5cbiAgICBpZihucGNEaWFsb2dDb21wb25lbnQuaGFzKG5wYykpe1xuICAgICAgICBsZXQgaW5kZXg6YW55XG4gICAgICAgIGlmICghc3RhcnRJbmRleCkge1xuICAgICAgICAgIGluZGV4ID0gMFxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBzdGFydEluZGV4ID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIGluZGV4ID0gc3RhcnRJbmRleFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGluZGV4ID0gZmluZERpYWxvZ0J5TmFtZShkaWFsb2csIHN0YXJ0SW5kZXgpXG4gICAgICAgIH1cbiAgICAgICAgb3BlbkRpYWxvZyhucGMsZGlhbG9nLCBpbmRleClcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbG9zZURpYWxvZ1dpbmRvdyh3aW5kb3c6RW50aXR5KXtcbiAgICBsZXQgZGlhbG9nID0gbnBjRGlhbG9nQ29tcG9uZW50LmdldCh3aW5kb3cpXG4gICAgaWYod2luZG93KXtcbiAgICAgICAgY2xvc2VEaWFsb2coZGlhbG9nKVxuICAgIH1cbn0iXX0=
|
|
462
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL25wYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQVUsYUFBYSxFQUFjLFlBQVksRUFBQyxZQUFZLEVBQStCLG1CQUFtQixFQUFDLFNBQVMsRUFBaUIsTUFBTSxjQUFjLENBQUE7QUFDck0sT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzNELE9BQU8sRUFBOEMsV0FBVyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQWUsTUFBTSxTQUFTLENBQUM7QUFDbEgsT0FBTyxLQUFLLEtBQUssTUFBTSxnQkFBZ0IsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6SCxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTdDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBdUIsSUFBSSxHQUFHLEVBQUUsQ0FBQTtBQUMxRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBcUIsSUFBSSxHQUFHLEVBQUUsQ0FBQTtBQUMzRCxNQUFNLENBQUMsSUFBSSxTQUFTLEdBQVUsQ0FBQyxDQUFBO0FBQy9CLE1BQU0sQ0FBQyxJQUFJLFdBQVcsR0FBVSxDQUFD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QUFJLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQzFGLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQzVELFNBQVMsRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLO1FBQ2pELFNBQVMsRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1RCxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxVQUFVO0tBQzlDLENBQUMsQ0FBQTtJQUVGLElBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUMsR0FBRTtTQUNsQixJQUFHLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFDO1FBQ3RCLFNBQVMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtLQUN2SjtTQUNEO1FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUE7S0FDMUU7SUFFRCxJQUFJLElBQUksSUFBSSxJQUFJLENB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QU0sRUFBQztRQUNOLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtLQUN0QjtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3RFY3MgZnJvbSAnQGRjbC9zZGsvcmVhY3QtZWNzJ1xuaW1wb3J0IHsgQW5pbWF0b3IsIEF2YXRhclNoYXBlLCBlbmdpbmUsIEVudGl0eSwgR2x0ZkNvbnRhaW5lciwgSW5wdXRBY3Rpb24sTWVzaENvbGxpZGVyLE1lc2hSZW5kZXJlcixQQkF2YXRhclNoYXBlLFBCR2x0ZkNvbnRhaW5lcixwb2ludGVyRXZlbnRzU3lzdGVtLFRyYW5zZm9ybSwgVHJhbnNmb3JtVHlwZSB9IGZyb20gJ0BkY2wvc2RrL2VjcydcbmltcG9ydCB7IENvbG9yMywgUXVhdGVybmlvbiwgVmVjdG9yMyB9IGZyb20gJ0BkY2wvc2RrL21hdGgnXG5pbXBvcnQgeyBEaWFsb2csIEZvbGxvd1BhdGhEYXRhLCBJbWFnZURhdGEsIE5QQ0RhdGEsIE5QQ1BhdGhUeXBlLCBOUENTdGF0ZSwgTlBDVHlwZSwgVHJpZ2dlckRhdGEgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gJ0BkY2wtc2RrL3V0aWxzJ1xuaW1wb3J0IHsgSXNGb2xsb3dpbmdQYXRoLCBUcmFja1VzZXJGbGFnIH0gZnJvbSAnLi9jb21wb25lbnRzJztcbmltcG9ydCB7IGZhY2VVc2VyU3lzdGVtLCBoYW5kbGVCdWJibGV0eXBpbmcsIGhhbmRsZURpYWxvZ1R5cGluZywgaGFuZGxlUGF0aFRpbWVzLCBpbnB1dExpc3RlbmVyU3lzdGVtIH0gZnJvbSAnLi9zeXN0ZW1zJztcbmltcG9ydCB7IGFkZERpYWxvZywgY2xvc2VEaWFsb2csIGZpbmREaWFsb2dCeU5hbWUsIG5wY0RpYWxvZ0NvbXBvbmVudCwgb3BlbkRpYWxvZyB9IGZyb20gJy4vZGlhbG9nJztcbmltcG9ydCB7IGJ1YmJsZXMsIGNsb3NlQnViYmxlLCBjcmVhdGVEaWFsb2dCdWJibGUsIG9wZW5CdWJibGUgfSBmcm9tICcuL2J1YmJsZSc7XG5pbXBvcnQgeyBkYXJrVGhlbWUsIGxpZ2h0VGhlbWUgfSBmcm9tICcuL3VpJztcblxuZXhwb3J0IGNvbnN0IHdhbGtpbmdUaW1lcnM6IE1hcDxFbnRpdHksbnVtYmVyPiA9IG5ldyBNYXAoKVxuZXhwb3J0IGNvbnN0IG5wY0RhdGFDb21wb25lbnQ6IE1hcDxFbnRpdHksIGFueT4gPSBuZXcgTWFwKClcbmV4cG9ydCBsZXQgYWN0aXZlTlBDOm51bWJlciA9IDBcbmV4cG9ydCBsZXQgYmxhbmtEaWFsb2c6bnVtYmVyID0gMFxuXG5lbmdpbmUuYWRkU3lzdGVtKGhhbmRsZVBhdGhUaW1lcylcbmVuZ2luZS5hZGRTeXN0ZW0oaGFuZGxlRGlhbG9nVHlwaW5nKVxuZW5naW5lLmFkZFN5c3RlbShoYW5kbGVCdWJibGV0eXBpbmcpXG5lbmdpbmUuYWRkU3lzdGVtKGZhY2VVc2VyU3lzdGVtKVxuZW5naW5lLmFkZFN5c3RlbShpbnB1dExpc3RlbmVyU3lzdGVtKVxuXG5jb25zdCBpc0Nvb2xkb3duOiBNYXA8RW50aXR5LCBhbnk+ID0gbmV3IE1hcCgpXG5jb25zdCBvbkFjdGl2YXRlQ2JzOiBNYXA8RW50aXR5LCBhbnk+ID0gbmV3IE1hcCgpXG5jb25zdCBvbldhbGtBd2F5Q2JzOiBNYXA8RW50aXR5LCBhbnk+ID0gbmV3IE1hcCgpXG5jb25zdCBhbmltVGltZXJzOiBNYXA8RW50aXR5LGFueT4gPSBuZXcgTWFwKClcbmNvbnN0IHBvaW50UmVhY2hlZENhbGxiYWNrczogTWFwPEVudGl0eSwgYW55PiA9IG5ldyBNYXAoKVxuY29uc3Qgb25GaW5pc2hDYWxsYmFja3M6IE1hcDxFbnRpdHksIGFueT4gPSBuZXcgTWFwKClcblxuZXhwb3J0IGZ1bmN0aW9uIHNob3dEZWJ1ZyhkZWJ1Zzpib29sZWFuKXtcbiAgICB1dGlscy50cmlnZ2Vycy5lbmFibGVEZWJ1Z0RyYXcoZGVidWcpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREYXRhKG5wYzpFbnRpdHkpe1xuICAgIHJldHVybiBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGUoXG4gICAgdHJhbnNmb3JtOiBhbnksXG4gICAgZGF0YTogTlBDRGF0YVxuKXtcbiAgICBsZXQgbnBjID0gZW5naW5lLmFkZEVudGl0eSgpXG5cbiAgICBsZXQgdDpUcmFuc2Zvcm1UeXBlID0ge3Bvc2l0aW9uOiB0cmFuc2Zvcm0ucG9zaXRpb24gPyB0cmFuc2Zvcm0ucG9zaXRpb24gOiBWZWN0b3IzLmNyZWF0ZSgwLDAsMCksIHJvdGF0aW9uOiB0cmFuc2Zvcm0ucm90YXRpb24gPyB0cmFuc2Zvcm0ucm90YXRpb24gOiBRdWF0ZXJuaW9uLlplcm8oKSwgc2NhbGU6IHRyYW5zZm9ybS5zY2FsZSA/IHRyYW5zZm9ybS5zY2FsZSA6IFZlY3RvcjMuT25lKCl9XG4gICAgVHJhbnNmb3JtLmNyZWF0ZShucGMsIHQpXG5cbiAgICBucGNEYXRhQ29tcG9uZW50LnNldChucGMse1xuICAgICAgICBpbnRyb2R1Y2VkOiBmYWxzZSxcbiAgICAgICAgaW5Db29sZG93bjogZmFsc2UsXG4gICAgICAgIGNvb2xEb3duRHVyYXRpb246IGRhdGEgJiYgZGF0YS5jb29sRG93bkR1cmF0aW9uID8gZGF0YS5jb29sRG93bkR1cmF0aW9uIDogNSxcbiAgICAgICAgZmFjZVVzZXI6IGRhdGEgJiYgZGF0YS5mYWNlVXNlciA/IGRhdGEuZmFjZVVzZXIgOiB1bmRlZmluZWQsXG4gICAgICAgIHdhbGtpbmdTcGVlZDoyLFxuICAgICAgICB3YWxraW5nQW5pbTogZGF0YSAmJiBkYXRhLndhbGtpbmdBbmltID8gZGF0YS53YWxraW5nQW5pbSA6IHVuZGVmaW5lZCxcbiAgICAgICAgcGF0aERhdGE6IGRhdGEucGF0aERhdGEgPyBkYXRhLnBhdGhEYXRhIDogdW5kZWZpbmVkLFxuICAgICAgICBjdXJyZW50UGF0aERhdGE6IFtdLFxuICAgICAgICBtYW51YWxTdG9wOmZhbHNlLFxuICAgICAgICBwYXRoSW5kZXg6MCxcbiAgICAgICAgc3RhdGU6TlBDU3RhdGUuU1RBTkRJTkcsXG4gICAgICAgIGlkbGVBbmltOiBkYXRhICYmIGRhdGEuaWRsZUFuaW0gPyBkYXRhLmlkbGVBbmltIDogXCJJZGxlXCIsXG4gICAgICAgIGJ1YmJsZUhlaWdodDogZGF0YSAmJiBkYXRhLnRleHRCdWJibGUgJiYgZGF0YS5idWJibGVIZWlnaHQgPyBkYXRhLmJ1YmJsZUhlaWdodCA6IHVuZGVmaW5lZCxcbiAgICAgICAgYnViYmxlU291bmQ6IGRhdGEuZGlhbG9nU291bmQgPyBkYXRhLmRpYWxvZ1NvdW5kIDogdW5kZWZpbmVkLFxuICAgICAgICBoYXNCdWJibGU6IGRhdGEgJiYgZGF0YS50ZXh0QnViYmxlID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICB0dXJuU3BlZWQ6IGRhdGEgJiYgZGF0YS50dXJuaW5nU3BlZWQgPyBkYXRhLnR1cm5pbmdTcGVlZCA6IDIsXG4gICAgICAgIHRoZW1lOiBkYXRhLmRhcmtVSSA/IGRhcmtUaGVtZSA6IGxpZ2h0VGhlbWVcbiAgICB9KVxuXG4gICAgaWYoZGF0YSAmJiBkYXRhLm5vVUkpe31cbiAgICBlbHNlIGlmKGRhdGEgJiYgZGF0YS5wb3J0cmFpdCl7XG4gICAgICAgICAgICBhZGREaWFsb2cobnBjLCBkYXRhICYmIGRhdGEuZGlhbG9nU291bmQgPyBkYXRhLmRpYWxvZ1NvdW5kIDogdW5kZWZpbmVkLCB0eXBlb2YgZGF0YS5wb3J0cmFpdCA9PT0gYHN0cmluZ2AgPyB7IHBhdGg6IGRhdGEucG9ydHJhaXQgfSA6IGRhdGEucG9ydHJhaXQpXG4gICAgICAgIH1cbiAgICBlbHNle1xuICAgICAgICBhZGREaWFsb2cobnBjLCBkYXRhICYmIGRhdGEuZGlhbG9nU291bmQgPyBkYXRhLmRpYWxvZ1NvdW5kIDogdW5kZWZpbmVkKVxuICAgIH1cblxuICAgIGlmIChkYXRhICYmIGRhdGEudGV4dEJ1YmJsZSkge1xuICAgICAgICBjcmVhdGVEaWFsb2dCdWJibGUobnBjLCBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLmJ1YmJsZUhlaWdodClcbiAgICAgIH1cblxuICAgIG9uQWN0aXZhdGVDYnMuc2V0KG5wYywgKCk9PntcbiAgICAgICAgZGF0YS5vbkFjdGl2YXRlKClcbiAgICB9KVxuXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5oYXNPd25Qcm9wZXJ0eShcIm9uV2Fsa0F3YXlcIikpIHtcbiAgICAgICAgb25XYWxrQXdheUNicy5zZXQobnBjLCAoKT0+e1xuICAgICAgICAgICAgaWYoIWRhdGEgfHwgIWRhdGEuY29udGludWVPbldhbGtBd2F5KXtcbiAgICAgICAgICAgICAgICBpZihucGNEaWFsb2dDb21wb25lbnQuaGFzKG5wYykpe1xuICAgICAgICAgICAgICAgICAgICBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYykudmlzaWJsZSA9IGZhbHNlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZXtcbiAgICAgICAgICAgICAgICBpZihucGNEaWFsb2dDb21wb25lbnQuaGFzKG5wYykpe1xuICAgICAgICAgICAgICAgICAgICBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYykudmlzaWJsZSA9IGZhbHNlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGF0YS5vbldhbGtBd2F5ISgpXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgYWRkTlBDQm9uZXMobnBjLCBkYXRhKVxuICAgIGFkZENsaWNrUmVhY3Rpb25zKG5wYywgZGF0YSlcbiAgICBhZGRUcmlnZ2VyQXJlYShucGMsIGRhdGEpXG4gICAgXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5wYXRoRGF0YSAmJiBkYXRhLnBhdGhEYXRhLnNwZWVkKSB7XG4gICAgICAgIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgICAgICBucGNEYXRhLndhbGtpbmdTcGVlZCA9IGRhdGEucGF0aERhdGEuc3BlZWRcbiAgICB9XG5cbiAgICBpZiAoZGF0YSAmJiBkYXRhLmNvb2xEb3duRHVyYXRpb24pIHtcbiAgICAgICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgICAgIG5wY0RhdGEuY29vbERvd25EdXJhdGlvbiA9IGRhdGEuY29vbERvd25EdXJhdGlvblxuICAgIH1cblxuICAgIGlmIChkYXRhICYmIGRhdGEucGF0aERhdGEpe1xuICAgICAgICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgICAgICAgbnBjRGF0YS5wYXRoRGF0YS5sb29wID0gdHJ1ZVxuICAgICAgICBmb2xsb3dQYXRoKG5wYywgbnBjRGF0YS5wYXRoRGF0YSlcbiAgICB9XG5cbiAgICByZXR1cm4gbnBjXG59XG5cbmZ1bmN0aW9uIGFkZE5QQ0JvbmVzKG5wYzpFbnRpdHksIGRhdGE6TlBDRGF0YSl7XG4gICAgY29uc3QgbW9kZWxJc1N0cmluZyA9IGRhdGEgJiYgZGF0YS5tb2RlbCAmJiB0eXBlb2YgZGF0YS5tb2RlbCA9PT0gYHN0cmluZ2BcbiAgICBjb25zdCBtb2RlbEF2YXRhckRhdGE6UEJBdmF0YXJTaGFwZXx1bmRlZmluZWQgPSBtb2RlbElzU3RyaW5nID8gdW5kZWZpbmVkIDogZGF0YS5tb2RlbCAmJiAoZGF0YS5tb2RlbCBhcyBhbnkpLmJvZHlTaGFwZSA/IGRhdGEubW9kZWwgYXMgUEJBdmF0YXJTaGFwZSA6IHVuZGVmaW5lZFxuICAgIGNvbnN0IG1vZGVsR0xURkRhdGE6UEJHbHRmQ29udGFpbmVyfHVuZGVmaW5lZCA9IG1vZGVsSXNTdHJpbmcgPyB1bmRlZmluZWQgOiBkYXRhLm1vZGVsICYmIChkYXRhLm1vZGVsIGFzIGFueSkuc3JjID8gZGF0YS5tb2RlbCBhcyBQQkdsdGZDb250YWluZXIgOiB1bmRlZmluZWRcblxuICAgIHN3aXRjaChkYXRhLnR5cGUpe1xuICAgICAgICBjYXNlIE5QQ1R5cGUuQVZBVEFSOlxuICAgICAgICAgICAgQXZhdGFyU2hhcGUuY3JlYXRlKG5wYywgXG4gICAgICAgICAgICAgICAgIWRhdGEgfHwgIWRhdGEubW9kZWwgfHwgIW1vZGVsQXZhdGFyRGF0YSA/IFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogXCJucGNcIixcbiAgICAgICAgICAgICAgICBuYW1lOiBcIk5QQ1wiLFxuICAgICAgICAgICAgICAgIGJvZHlTaGFwZTpcInVybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczpCYXNlTWFsZVwiLFxuICAgICAgICAgICAgICAgIGVtb3RlczogW10sXG4gICAgICAgICAgICAgICAgd2VhcmFibGVzOiBbXG4gICAgICAgICAgICAgICAgICAgIFwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOmZfZXllc18wMFwiLFxuICAgICAgICAgICAgICAgICAgICBcInVybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczpmX2V5ZWJyb3dzXzAwXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOmZfbW91dGhfMDBcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ1cm46ZGVjZW50cmFsYW5kOm9mZi1jaGFpbjpiYXNlLWF2YXRhcnM6Y29tZnlfc3BvcnRfc2FuZGFsc1wiLFxuICAgICAgICAgICAgICAgICAgICBcInVybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczpzb2NjZXJfcGFudHNcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ1cm46ZGVjZW50cmFsYW5kOm9mZi1jaGFpbjpiYXNlLWF2YXRhcnM6ZWxlZ2FudF9zd2VhdGVyXCIsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSA6IG1vZGVsQXZhdGFyRGF0YVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBOUENUeXBlLkNVU1RPTTpcbiAgICAgICAgICAgIEdsdGZDb250YWluZXIuY3JlYXRlKG5wYywgXG4gICAgICAgICAgICAgICAgbW9kZWxJc1N0cmluZyAmJiB0eXBlb2YgZGF0YS5tb2RlbCA9PT0gYHN0cmluZ2AgPyBcbiAgICAgICAgICAgICAgICAgICAgeyAgIHNyYzogZGF0YSAmJiBkYXRhLm1vZGVsID8gZGF0YS5tb2RlbCA6IFwiXCIgIH1cbiAgICAgICAgICAgICAgICAgICAgOiBtb2RlbEdMVEZEYXRhXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgQW5pbWF0b3IuY3JlYXRlKG5wYywge1xuICAgICAgICAgICAgICAgIHN0YXRlczpbe1xuICAgICAgICAgICAgICAgICAgICBuYW1lOmRhdGEgJiYgZGF0YS5pZGxlQW5pbSA/IGRhdGEuaWRsZUFuaW0gOiAnSWRsZScsXG4gICAgICAgICAgICAgICAgICAgIGNsaXA6ZGF0YSAmJiBkYXRhLmlkbGVBbmltID8gZGF0YS5pZGxlQW5pbSA6ICdJZGxlJyxcbiAgICAgICAgICAgICAgICAgICAgbG9vcDp0cnVlXG4gICAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgICAgICAgICAgbnBjRGF0YS5pZGxlQW5pbSA9IGRhdGEgJiYgZGF0YS5pZGxlQW5pbSA/IGRhdGEuaWRsZUFuaW0gOiAnSWRsZSdcbiAgICAgICAgICAgIG5wY0RhdGEubGFzdFBsYXllZEFuaW0gPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLmlkbGVBbmltXG5cbiAgICAgICAgICAgIEFuaW1hdG9yLnBsYXlTaW5nbGVBbmltYXRpb24obnBjLCBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLmlkbGVBbmltKVxuXG5cbiAgICAgICAgICAgIGlmIChkYXRhICYmIGRhdGEud2Fsa2luZ0FuaW0pIHtcbiAgICAgICAgICAgICAgICBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLndhbGtpbmdBbmltID0gZGF0YS53YWxraW5nQW5pbVxuICAgICAgICAgICAgICAgIGxldCBhbmltYXRpb25zID0gQW5pbWF0b3IuZ2V0TXV0YWJsZShucGMpXG4gICAgICAgICAgICAgICAgYW5pbWF0aW9ucy5zdGF0ZXMucHVzaCh7bmFtZTpkYXRhLndhbGtpbmdBbmltLCBjbGlwOiBkYXRhLndhbGtpbmdBbmltLCBsb29wOnRydWV9KVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIE5QQ1R5cGUuQkxBTks6XG4gICAgICAgICAgICBNZXNoUmVuZGVyZXIuc2V0Qm94KG5wYylcbiAgICAgICAgICAgIE1lc2hDb2xsaWRlci5zZXRCb3gobnBjKVxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICB9XG59XG5cbmZ1bmN0aW9uIGFkZENsaWNrUmVhY3Rpb25zKG5wYzpFbnRpdHksIGRhdGE6TlBDRGF0YSl7XG4gICAgbGV0IGFjdGl2YXRlQnV0dG9uID0gZGF0YSAmJiBkYXRhLm9ubHlDbGlja1RyaWdnZXIgPyBJbnB1dEFjdGlvbi5JQV9QT0lOVEVSIDogSW5wdXRBY3Rpb24uSUFfUFJJTUFSWVxuXG4gICAgcG9pbnRlckV2ZW50c1N5c3RlbS5vblBvaW50ZXJEb3duKFxuICAgICAgICBucGMsXG4gICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChpc0Nvb2xkb3duLmhhcyhucGMpIHx8IChucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYykudmlzaWJsZSkpIHJldHVyblxuICAgICAgICAgICAgYWN0aXZhdGUobnBjKVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBidXR0b246IGFjdGl2YXRlQnV0dG9uLFxuICAgICAgICAgICAgaG92ZXJUZXh0OiBkYXRhICYmIGRhdGEuaG92ZXJUZXh0ID8gZGF0YS5ob3ZlclRleHQgOiAnVGFsaycsXG4gICAgICAgICAgICBzaG93RmVlZGJhY2s6IGRhdGEgJiYgZGF0YS5vbmx5RXh0ZXJuYWxUcmlnZ2VyID8gZmFsc2UgOiB0cnVlLFxuICAgICAgICB9XG4gICAgICAgIClcblxuICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLm9ubHlFeHRlcm5hbFRyaWdnZXIpIHtcbiAgICAgICAgcG9pbnRlckV2ZW50c1N5c3RlbS5yZW1vdmVPblBvaW50ZXJEb3duKG5wYylcbiAgICAgICAgfSBcbn1cblxuZnVuY3Rpb24gYWRkVHJpZ2dlckFyZWEobnBjOkVudGl0eSwgZGF0YTpOUENEYXRhKXtcblxuICAgICAgICBsZXQgdHJpZ2dlckRhdGE6IFRyaWdnZXJEYXRhID0ge31cblxuICAgICAgICBpZiAoIWRhdGEgfHwgKGRhdGEgJiYgIWRhdGEub25seUV4dGVybmFsVHJpZ2dlciAmJiAhZGF0YS5vbmx5Q2xpY2tUcmlnZ2VyICYmICFkYXRhLm9ubHlFVHJpZ2dlcikpe1xuICAgICAgICBvbkFjdGl2YXRlQ2JzLnNldChucGMsICgpPT57XG4gICAgICAgICAgICBpZiAoaXNDb29sZG93bi5oYXMobnBjKSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKG5wYywgJyBpbiBjb29sZG93bicpXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9IFxuICAgICAgICAgICAgZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgKG5wY0RpYWxvZ0NvbXBvbmVudC5oYXMobnBjKSAmJiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYykudmlzaWJsZSkgfHxcbiAgICAgICAgICAgICAgICAoZGF0YSAmJiBkYXRhLm9ubHlFeHRlcm5hbFRyaWdnZXIpIHx8XG4gICAgICAgICAgICAgICAgKGRhdGEgJiYgZGF0YS5vbmx5Q2xpY2tUcmlnZ2VyKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkYXRhLm9uQWN0aXZhdGUoKVxuICAgICAgICB9KVxuICAgICAgICB0cmlnZ2VyRGF0YS5vbkNhbWVyYUVudGVyID0gb25BY3RpdmF0ZUNicy5nZXQobnBjKVxuICAgICAgICB9XG5cbiAgICAvLyB3aGVuIGV4aXRpbmcgdHJpZ2dlclxuICAgIGlmICghZGF0YSB8fCAoZGF0YSAmJiAhZGF0YS5jb250aW51ZU9uV2Fsa0F3YXkpKSB7XG4gICAgICAgIHRyaWdnZXJEYXRhLm9uQ2FtZXJhRXhpdCA9ICgpID0+IHtcbiAgICAgICAgICAgIGhhbmRsZVdhbGtBd2F5KG5wYylcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHdoZW4gZW50ZXJpbmcgdHJpZ2dlclxuICAgIGlmIChcbiAgICAgICAgIWRhdGEgfHxcbiAgICAgICAgKGRhdGEgJiYgIWRhdGEub25seUV4dGVybmFsVHJpZ2dlciAmJiAhZGF0YS5vbmx5Q2xpY2tUcmlnZ2VyICYmICFkYXRhLm9ubHlFVHJpZ2dlcilcbiAgICApIHtcbiAgICAgICAgdHJpZ2dlckRhdGEub25DYW1lcmFFbnRlciA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChpc0Nvb2xkb3duLmhhcyhucGMpKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2cobnBjLCAnIGluIGNvb2xkb3duJylcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH0gXG4gICAgICAgICAgICAvLyBlbHNlIGlmIChcbiAgICAgICAgICAgIC8vICAgICAodGhpcy5kaWFsb2cgJiYgdGhpcy5kaWFsb2cuaXNEaWFsb2dPcGVuKSB8fFxuICAgICAgICAgICAgLy8gICAgIChkYXRhICYmIGRhdGEub25seUV4dGVybmFsVHJpZ2dlcikgfHxcbiAgICAgICAgICAgIC8vICAgICAoZGF0YSAmJiBkYXRhLm9ubHlDbGlja1RyaWdnZXIpXG4gICAgICAgICAgICAvLyApIHtcbiAgICAgICAgICAgIC8vICAgICByZXR1cm5cbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgIGFjdGl2YXRlKG5wYylcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGFkZCB0cmlnZ2VyXG4gICAgaWYgKHRyaWdnZXJEYXRhLm9uQ2FtZXJhRW50ZXIgfHwgdHJpZ2dlckRhdGEub25DYW1lcmFFeGl0KSB7XG4gICAgICAgIHV0aWxzLnRyaWdnZXJzLmFkZFRyaWdnZXIobnBjLDI1NCwxLFt7dHlwZTonc3BoZXJlJywgcG9zaXRpb246IFZlY3RvcjMuWmVybygpLCByYWRpdXM6IGRhdGEucmVhY3REaXN0YW5jZSAhPSB1bmRlZmluZWQgPyBkYXRhLnJlYWN0RGlzdGFuY2UgOiA2fV0sIHRyaWdnZXJEYXRhLm9uQ2FtZXJhRW50ZXIgPyB0cmlnZ2VyRGF0YS5vbkNhbWVyYUVudGVyIDogdW5kZWZpbmVkLCB0cmlnZ2VyRGF0YS5vbkNhbWVyYUV4aXQgPyB0cmlnZ2VyRGF0YS5vbkNhbWVyYUV4aXQgOiB1bmRlZmluZWQsIENvbG9yMy5SZWQoKSlcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb2xsb3dQYXRoKG5wYzpFbnRpdHksIGRhdGE/OkZvbGxvd1BhdGhEYXRhKXtcbiAgICAgICAgXG4gICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgbGV0IHBhdGg6YW55W10gPVtdXG5cbiAgICBpZihucGNEYXRhLmZhY2VVc2VyKXtcbiAgICAgICAgaWYoVHJhY2tVc2VyRmxhZy5oYXMobnBjKSl7XG4gICAgICAgICAgICBUcmFja1VzZXJGbGFnLmRlbGV0ZUZyb20obnBjKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYobnBjRGF0YS5tYW51YWxTdG9wKXtcbiAgICAgICAgbGV0IGR1cmF0aW9uID0gbnBjRGF0YS5wYXRoRGF0YS50b3RhbER1cmF0aW9uXG4gICAgICAgIGxldCBjdXJyZW50VGltZXI6bnVtYmVyID0gd2Fsa2luZ1RpbWVycy5nZXQobnBjKSFcbiAgICAgICAgY29uc29sZS5sb2coJ2N1cnJlbnQgdGltZSBpcycsIGN1cnJlbnRUaW1lcilcbiAgICAgICAgaWYoY3VycmVudFRpbWVyKXtcbiAgICAgICAgICAgIGR1cmF0aW9uIC09IGN1cnJlbnRUaW1lclxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHBhdGg6YW55W10gPSBbXVxuICAgICAgICBucGNEYXRhLnBhdGhEYXRhLnBhdGguZm9yRWFjaCgocDphbnkpPT57XG4gICAgICAgICAgICBwYXRoLnB1c2gocClcbiAgICAgICAgfSlcbiAgICAgICAgcGF0aC5zcGxpY2UoMCxucGNEYXRhLnBhdGhJbmRleClcblxuICAgICAgICBsZXQgcG9zID0gVHJhbnNmb3JtLmdldChucGMpLnBvc2l0aW9uXG4gICAgICAgIHBhdGgudW5zaGlmdChWZWN0b3IzLmNyZWF0ZShwb3MueCwgcG9zLnksIHBvcy56KSlcbiAgICAgICAgd2Fsa05QQyhucGMsbnBjRGF0YSwgbnBjRGF0YS5wYXRoRGF0YS5wYXRoVHlwZSwgZHVyYXRpb24sIHBhdGgsIHBvaW50UmVhY2hlZENhbGxiYWNrcy5nZXQobnBjKSwgb25GaW5pc2hDYWxsYmFja3MuZ2V0KG5wYykpICAgIFxuICAgIH1cbiAgICBlbHNle1xuICAgICAgICBpZihkYXRhKXtcbiAgICAgICAgICAgIG5wY0RhdGEucGF0aERhdGEgPSBkYXRhXG4gICAgXG4gICAgICAgICAgICBpZihkYXRhLnN0YXJ0aW5nUG9pbnQpe1xuICAgICAgICAgICAgICAgIGRhdGEucGF0aD8uc3BsaWNlKDAsZGF0YS5zdGFydGluZ1BvaW50IC0gMSlcbiAgICAgICAgICAgIH1cbiAgICBcbiAgICAgICAgICAgIGxldCBwb3MgPSBUcmFuc2Zvcm0uZ2V0KG5wYykucG9zaXRpb25cbiAgICAgICAgICAgIHBhdGgucHVzaChWZWN0b3IzLmNyZWF0ZShwb3MueCwgcG9zLnksIHBvcy56KSlcbiAgICAgICAgICAgIGRhdGEucGF0aD8uZm9yRWFjaCgocCk9PntcbiAgICAgICAgICAgICAgICBwYXRoLnB1c2gocClcbiAgICAgICAgICAgIH0pXG4gICAgXG4gICAgICAgICAgICBvbkZpbmlzaENhbGxiYWNrcy5zZXQobnBjLCgpPT57XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ29uIGZpbmlzaGVkIGNhbGxiYWNrJylcbiAgICAgICAgICAgICAgICBpZihkYXRhICYmIGRhdGEub25GaW5pc2hDYWxsYmFjayAmJiAhZGF0YS5sb29wKXtcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5vbkZpbmlzaENhbGxiYWNrKClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3RvcFBhdGgobnBjKVxuICAgICAgICAgICAgfSlcbiAgICBcbiAgICAgICAgICAgIHBvaW50UmVhY2hlZENhbGxiYWNrcy5zZXQobnBjLCAoKT0+e1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdvbiBwb2ludCByZWFjaGVkIGNhbGxiYWNrJylcbiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgICAgICAgICAgICAgICBkYXRhLnBhdGhJbmRleCArPSAxXG4gICAgICAgICAgICAgICAgZGF0YS5vblJlYWNoZWRQb2ludENhbGxiYWNrID8gZGF0YS5vblJlYWNoZWRQb2ludENhbGxiYWNrIDogdW5kZWZpbmVkXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgd2Fsa05QQyhucGMsIG5wY0RhdGEsIGRhdGEucGF0aFR5cGUhLCBkYXRhLnRvdGFsRHVyYXRpb24sIHBhdGgsIHBvaW50UmVhY2hlZENhbGxiYWNrcy5nZXQobnBjKSwgb25GaW5pc2hDYWxsYmFja3MuZ2V0KG5wYykpXG4gICAgICAgIH1lbHNle1xuICAgICAgICAgICAgaWYobnBjRGF0YS5tYW51YWxTdG9wKXtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnd2UgaGF2ZSBtYW51YWwgc3RvcCwgbmVlZCB0byBwaWNrIGJhY2sgdXAgd2hlcmUgd2UgbGVmdCBvZmYnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZXtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnd2UgYXJlIHRyeWluZyB0byBmb2xsb3cgYSBwYXRoIHdpdG91dCBzdGFydGluZyBvbmUgcHJpb3InKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICBcbiAgICB9XG5cbiAgIFxuICAgIH1cblxuZnVuY3Rpb24gd2Fsa05QQyhucGM6RW50aXR5LCBucGNEYXRhOmFueSwgdHlwZTpOUENQYXRoVHlwZSwgZHVyYXRpb246bnVtYmVyLCBwYXRoOlZlY3RvcjNbXSwgcG9pbnRSZWFjaGVkQ2FsbGJhY2s/OmFueSwgZmluaXNoZWRDYWxsYmFjaz86YW55KXtcbiAgICBcbiAgICBpZihJc0ZvbGxvd2luZ1BhdGguaGFzKG5wYykpe1xuICAgICAgICBJc0ZvbGxvd2luZ1BhdGguZGVsZXRlRnJvbShucGMpXG4gICAgICAgIHdhbGtpbmdUaW1lcnMuZGVsZXRlKG5wYylcbiAgICB9XG4gICAgSXNGb2xsb3dpbmdQYXRoLmNyZWF0ZShucGMpXG5cbiAgICBpZih0eXBlKXtcbiAgICAgICAgaWYodHlwZT09IE5QQ1BhdGhUeXBlLlJJR0lEX1BBVEgpe1xuICAgICAgICAgICAgdXRpbHMucGF0aHMuc3RhcnRTdHJhaWdodFBhdGgobnBjLCBwYXRoLCBkdXJhdGlvbix0cnVlLFxuICAgICAgICAgICAgICAgICgpPT57ZmluaXNoZWRDYWxsYmFjaygpfSwgKCk9Pntwb2ludFJlYWNoZWRDYWxsYmFjaygpfSlcbiAgICAgICAgfVxuICAgICAgICBlbHNle1xuICAgICAgICAgICAgdXRpbHMucGF0aHMuc3RhcnRTbW9vdGhQYXRoKG5wYywgcGF0aCwgZHVyYXRpb24sIDMwLCB0cnVlLCBcbiAgICAgICAgICAgICAgICAoKT0+e2ZpbmlzaGVkQ2FsbGJhY2soKX0sICgpPT57cG9pbnRSZWFjaGVkQ2FsbGJhY2soKX0pXG4gICAgICAgICAgICB9XG4gICAgfVxuICAgIGVsc2V7XG4gICAgICAgIHV0aWxzLnBhdGhzLnN0YXJ0U21vb3RoUGF0aChucGMsIHBhdGgsIGR1cmF0aW9uLCAyMCwgdHJ1ZSwgXG4gICAgICAgICAgICAoKT0+e2ZpbmlzaGVkQ2FsbGJhY2soKX0sICgpPT57cG9pbnRSZWFjaGVkQ2FsbGJhY2soKX0pXG4gICAgfSAgIFxuXG4gICAgaWYgKG5wY0RhdGEud2Fsa2luZ0FuaW0pIHtcbiAgICAgICAgQW5pbWF0b3IucGxheVNpbmdsZUFuaW1hdGlvbihucGMsIG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykud2Fsa2luZ0FuaW0sIHRydWUpXG4gICAgICAgIG5wY0RhdGEubGFzdFBsYXllZEFuaW0gPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLndhbGtpbmdBbmltXG4gICAgICB9XG4gICAgbnBjRGF0YS5zdGF0ZSA9IE5QQ1N0YXRlLkZPTExPV1BBVEhcbiAgICBucGNEYXRhLm1hbnVhbFN0b3AgPSBmYWxzZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RvcFdhbGtpbmcobnBjOkVudGl0eSwgZHVyYXRpb24/OiBudW1iZXIsIGZpbmlzaGVkPzpib29sZWFuKSB7XG4gICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgbnBjRGF0YS5zdGF0ZSA9IE5QQ1N0YXRlLlNUQU5ESU5HXG4gICAgbnBjRGF0YS5tYW51YWxTdG9wID0gdHJ1ZVxuXG4gICAgc3RvcFBhdGgobnBjKVxuXG4gICAgaWYgKGR1cmF0aW9uKSB7XG4gICAgICAgIHV0aWxzLnRpbWVycy5zZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICAvL2lmICh0aGlzLmRpYWxvZyAmJiB0aGlzLmRpYWxvZy5pc0RpYWxvZ09wZW4pIHJldHVyblxuICAgICAgICAgICAgaWYobnBjRGF0YS5wYXRoKXtcbiAgICAgICAgICAgICAgICBBbmltYXRvci5zdG9wQWxsQW5pbWF0aW9ucyhucGMsIHRydWUpXG4gICAgICAgICAgICAgICAgaWYobnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS53YWxraW5nQW5pbSl7XG4gICAgICAgICAgICAgICAgICAgIEFuaW1hdG9yLnBsYXlTaW5nbGVBbmltYXRpb24obnBjLCBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLndhbGtpbmdBbmltLHRydWUpXG4gICAgICAgICAgICAgICAgICAgIG5wY0RhdGEubGFzdFBsYXllZEFuaW0gPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLndhbGtpbmdBbmltXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCBkdXJhdGlvbiA9IG5wY0RhdGEucGF0aERhdGEudG90YWxEdXJhdGlvblxuICAgICAgICAgICAgICAgIGxldCBjdXJyZW50VGltZXI6bnVtYmVyID0gd2Fsa2luZ1RpbWVycy5nZXQobnBjKSFcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnY3VycmVudCB0aW1lIGlzJywgY3VycmVudFRpbWVyKVxuICAgICAgICAgICAgICAgIGlmKGN1cnJlbnRUaW1lcil7XG4gICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uIC09IGN1cnJlbnRUaW1lclxuICAgICAgICAgICAgICAgIH1cbiAgICBcbiAgICAgICAgICAgICAgICBsZXQgcGF0aDphbnlbXSA9IFtdXG4gICAgICAgICAgICAgICAgbnBjRGF0YS5wYXRoRGF0YS5wYXRoLmZvckVhY2goKHA6YW55KT0+e1xuICAgICAgICAgICAgICAgICAgICBwYXRoLnB1c2gocClcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIHBhdGguc3BsaWNlKDAsbnBjRGF0YS5wYXRoSW5kZXgpXG4gICAgXG4gICAgICAgICAgICAgICAgbGV0IHBvcyA9IFRyYW5zZm9ybS5nZXQobnBjKS5wb3NpdGlvblxuICAgICAgICAgICAgICAgIHBhdGgudW5zaGlmdChWZWN0b3IzLmNyZWF0ZShwb3MueCwgcG9zLnksIHBvcy56KSlcbiAgICBcbiAgICAgICAgICAgICAgICAvL25wY0RhdGEubWFudWFsU3RvcCA9IGZhbHNlXG4gICAgICAgICAgICAgICAgd2Fsa05QQyhucGMsbnBjRGF0YSwgbnBjRGF0YS5wYXRoRGF0YS5wYXRoVHlwZSwgZHVyYXRpb24sIHBhdGgsIHBvaW50UmVhY2hlZENhbGxiYWNrcy5nZXQobnBjKSwgb25GaW5pc2hDYWxsYmFja3MuZ2V0KG5wYykpICAgIFxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sZHVyYXRpb24gKiAxMDAwKVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0b3BQYXRoKG5wYzpFbnRpdHkpe1xuICAgIHV0aWxzLnBhdGhzLnN0b3BQYXRoKG5wYylcbiAgICBJc0ZvbGxvd2luZ1BhdGguZGVsZXRlRnJvbShucGMpXG5cbiAgICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgICBpZiAobnBjRGF0YS53YWxraW5nQW5pbSkge1xuICAgICAgICBBbmltYXRvci5wbGF5U2luZ2xlQW5pbWF0aW9uKG5wYywgbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS5pZGxlQW5pbSlcbiAgICAgICAgbnBjRGF0YS5sYXN0UGxheWVkQW5pbSA9IG5wY0RhdGEuaWRsZUFuaW1cbiAgICB9XG5cbiAgICBpZighbnBjRGF0YS5tYW51YWxTdG9wKXtcbiAgICAgICAgaWYobnBjRGF0YS5wYXRoRGF0YS5sb29wKXtcbiAgICAgICAgICAgIG5wY0RhdGEucGF0aEluZGV4ID0gMFxuICAgICAgICAgICAgd2Fsa2luZ1RpbWVycy5kZWxldGUobnBjKVxuICAgICAgICAgICAgY29uc29sZS5sb2coJ3dlIGFyZSBsb29waW5nIHBhdGgnLCBucGNEYXRhKVxuICAgICAgICAgICAgZm9sbG93UGF0aChucGMsIG5wY0RhdGEucGF0aERhdGEpXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhucGNEYXRhKVxuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJOUEMoKXtcbiAgICBhY3RpdmVOUEMgPSAwXG59XG5cbi8qKlxuICogQ2FsbHMgdGhlIE5QQydzIGFjdGl2YXRpb24gZnVuY3Rpb24gKHNldCBvbiBOUEMgZGVmaW5pdGlvbikuIElmIE5QQyBoYXMgYGZhY2VVc2VyYCA9IHRydWUsIGl0IHdpbGwgcm90YXRlIHRvIGZhY2UgdGhlIHBsYXllci4gSXQgc3RhcnRzIGEgY29vbGRvd24gY291bnRlciB0byBhdm9pZCByZWFjdGl2YXRpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhY3RpdmF0ZShucGM6RW50aXR5KSB7XG5cbiAgICBpZihhY3RpdmVOUEMgIT0gMCl7XG4gICAgICAgIGNvbnNvbGUubG9nKCd3ZSBoYXZlIGEgY3VycmVudCBucGMsIG5lZWR0byByZW1vdmUnKVxuICAgICAgICBlbmRJbnRlcmFjdGlvbihhY3RpdmVOUEMgYXMgRW50aXR5KVxuICAgICAgICAvLyBjbG9zZURpYWxvZyhhY3RpdmVOUEMgYXMgRW50aXR5KVxuICAgIH1cblxuICAgIGFjdGl2ZU5QQyA9IG5wY1xuICAgIG9uQWN0aXZhdGVDYnMuZ2V0KG5wYykoKVxuXG4gICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgaWYgKG5wY0RhdGEuZmFjZVVzZXIpIHtcbiAgICAgICAgaWYoVHJhY2tVc2VyRmxhZy5oYXMobnBjKSl7XG4gICAgICAgICAgICBUcmFja1VzZXJGbGFnLmRlbGV0ZUZyb20obnBjKVxuICAgICAgICB9XG5cbiAgICAgICAgVHJhY2tVc2VyRmxhZy5jcmVhdGUobnBjLHtcbiAgICAgICAgICAgIGxvY2tYWlJvdGF0aW9uOnRydWUsXG4gICAgICAgICAgICBhY3RpdmU6dHJ1ZSxcbiAgICAgICAgICAgIHJvdFNwZWVkOm5wY0RhdGEudHVyblNwZWVkXG4gICAgICAgIH0pXG4gICAgfVxuICAgIGlzQ29vbGRvd24uc2V0KG5wYywgdHJ1ZSlcbiAgICBucGNEYXRhLmluQ29vbGRvd24gPSB0cnVlXG5cbiAgICB1dGlscy50aW1lcnMuc2V0VGltZW91dChcbiAgICAgICAgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBpc0Nvb2xkb3duLmRlbGV0ZShucGMpXG4gICAgICAgICAgICBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLmluQ29vbGRvd24gPSBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICAxMDAwICogbnBjRGF0YS5jb29sRG93bkR1cmF0aW9uXG4gICAgKVxuICAgIGNvbnNvbGUubG9nKCdhY3RpdmF0ZWQgbnBjLCcsIG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykpXG59XG5cbmZ1bmN0aW9uIGVuZEludGVyYWN0aW9uKG5wYzpFbnRpdHkpIHtcbiAgICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgIG5wY0RhdGEuc3RhdGUgPSBOUENTdGF0ZS5TVEFORElOR1xuXG4gICAgICAgIGlmIChucGNEaWFsb2dDb21wb25lbnQuaGFzKG5wYykpey8vfSAmJiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYykudmlzaWJsZSkge1xuICAgICAgICAgICAgY2xvc2VEaWFsb2cobnBjKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYobnBjRGF0YS5mYWNlVXNlcil7XG4gICAgICAgICAgICBpZihUcmFja1VzZXJGbGFnLmhhcyhucGMpKXtcbiAgICAgICAgICAgICAgICBUcmFja1VzZXJGbGFnLmRlbGV0ZUZyb20obnBjKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coJ2VuZGluZyBpbnRlcmFjdGlvbicsIG5wY0RhdGEsIGJ1YmJsZXMuZ2V0KG5wYykpXG4gICAgICAgIGlmKG5wY0RhdGEuaGFzQnViYmxlICYmIGJ1YmJsZXMuZ2V0KG5wYykuaXNCdWJibGVPcGVuKXtcbiAgICAgICAgICAgIGNsb3NlQnViYmxlKG5wYylcbiAgICAgICAgfVxufVxuXG4vKipcbiAqIEVuZHMgaW50ZXJhY3Rpb24gYW5kIGNhbGxzIHRoZSBvbldhbGtBd2F5IGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVXYWxrQXdheShucGM6RW50aXR5KSB7XG4gICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgaWYgKG5wY0RhdGEuc3RhdGUgPT0gTlBDU3RhdGUuRk9MTE9XUEFUSCkge1xuICAgICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBlbmRJbnRlcmFjdGlvbihucGMpXG5cbiAgICBpZiAob25XYWxrQXdheUNicy5nZXQobnBjKSkge1xuICAgICAgICBvbldhbGtBd2F5Q2JzLmdldChucGMpKClcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwbGF5QW5pbWF0aW9uKG5wYzpFbnRpdHksIGFuaW06c3RyaW5nLCBub0xvb3A/OmJvb2xlYW4sIGR1cmF0aW9uPzpudW1iZXIpe1xuICAgIGxldCBhbmltYXRpb25zID0gQW5pbWF0b3IuZ2V0TXV0YWJsZShucGMpXG4gICAgaWYoYW5pbWF0aW9ucy5zdGF0ZXMuZmlsdGVyKChhbmltYXRpb24pPT4gYW5pbWF0aW9uLm5hbWUgPT09IGFuaW0pLmxlbmd0aCA9PSAwKXtcbiAgICAgICAgYW5pbWF0aW9ucy5zdGF0ZXMucHVzaCh7bmFtZTphbmltLCBjbGlwOmFuaW0sIGxvb3A6IG5vTG9vcD8gZmFsc2UgOiB0cnVlfSlcbiAgICB9XG5cbiAgICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgICBpZihucGNEYXRhLnN0YXRlID09IE5QQ1N0YXRlLkZPTExPV1BBVEgpe1xuICAgICAgICB1dGlscy5wYXRocy5zdG9wUGF0aChucGMpXG4gICAgfVxuXG4gICAgaWYoYW5pbVRpbWVycy5oYXMobnBjKSl7XG4gICAgICAgIHV0aWxzLnRpbWVycy5jbGVhclRpbWVvdXQoYW5pbVRpbWVycy5nZXQobnBjKSlcbiAgICAgICAgYW5pbVRpbWVycy5kZWxldGUobnBjKVxuICAgIH1cblxuICAgIEFuaW1hdG9yLnN0b3BBbGxBbmltYXRpb25zKG5wYywgdHJ1ZSlcbiAgICBBbmltYXRvci5wbGF5U2luZ2xlQW5pbWF0aW9uKG5wYywgYW5pbSwgdHJ1ZSlcbiAgICBpZihkdXJhdGlvbil7XG4gICAgICAgIGNvbnNvbGUubG9nKCdoYXZlIGEgZHVyYXRpb24gdG8gcGxheSBhbmltYXRpb24nKVxuICAgICAgICBpZihhbmltVGltZXJzLmhhcyhucGMpKXtcbiAgICAgICAgICAgIHV0aWxzLnRpbWVycy5jbGVhclRpbWVvdXQoYW5pbVRpbWVycy5nZXQobnBjKSlcbiAgICAgICAgICAgIGFuaW1UaW1lcnMuZGVsZXRlKG5wYylcbiAgICAgICAgfVxuICAgICAgICBhbmltVGltZXJzLnNldChucGMsIHV0aWxzLnRpbWVycy5zZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICBhbmltVGltZXJzLmRlbGV0ZShucGMpXG4gICAgICAgICAgICBBbmltYXRvci5zdG9wQWxsQW5pbWF0aW9ucyhucGMsIHRydWUpXG4gICAgICAgICAgICBpZihucGNEYXRhLmlkbGVBbmltKXtcbiAgICAgICAgICAgICAgICBBbmltYXRvci5wbGF5U2luZ2xlQW5pbWF0aW9uKG5wYywgbnBjRGF0YS5pZGxlQW5pbSlcbiAgICAgICAgICAgICAgICBucGNEYXRhLmxhc3RQbGF5ZWRBbmltID0gbnBjRGF0YS5pZGxlQW5pbVxuICAgICAgICAgICAgfVxuICAgICAgICB9LCAxMDAwICogZHVyYXRpb24pKS8vXG4gICAgfSBcblxuICAgIG5wY0RhdGEubGFzdFBsYXllZEFuaW0gPSBhbmltXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGFuZ2VJZGxlQW5pbShucGM6RW50aXR5LCBhbmltYXRpb246c3RyaW5nLCBwbGF5Pzpib29sZWFuKXtcbiAgICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgICBucGNEYXRhLmlkbGVBbmltID0gYW5pbWF0aW9uXG5cbiAgICBsZXQgYW5pbWF0aW9ucyA9IEFuaW1hdG9yLmdldE11dGFibGUobnBjKVxuICAgIGlmKGFuaW1hdGlvbnMuc3RhdGVzLmZpbHRlcigoYW5pbSk9PiBhbmltLm5hbWUgPT09IGFuaW1hdGlvbikubGVuZ3RoID09IDApe1xuICAgICAgICBhbmltYXRpb25zLnN0YXRlcy5wdXNoKHtuYW1lOmFuaW1hdGlvbiwgY2xpcDphbmltYXRpb24sIGxvb3A6IHRydWV9KVxuICAgIH1cblxuICAgIGlmKHBsYXkpe1xuICAgICAgICBwbGF5QW5pbWF0aW9uKG5wYywgYW5pbWF0aW9uLCB0cnVlKVxuICAgICAgICBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLmxhc3RQbGF5ZWRBbmltID0gYW5pbWF0aW9uXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFsa0J1YmJsZShucGM6RW50aXR5LCBzY3JpcHQ6RGlhbG9nW10sIHN0YXJ0SW5kZXg/Om51bWJlciB8IHN0cmluZyl7XG4gICAgb3BlbkJ1YmJsZShucGMsIHNjcmlwdCxzdGFydEluZGV4KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGlhbG9nV2luZG93KGRlZmF1bHRQb3J0cmFpdD86SW1hZ2VEYXRhLCBzb3VuZD86c3RyaW5nKXtcbiAgICBsZXQgZGlhbG9nID0gZW5naW5lLmFkZEVudGl0eSgpXG4gICAgYWRkRGlhbG9nKGRpYWxvZyxzb3VuZCwgZGVmYXVsdFBvcnRyYWl0KVxuICAgIHJldHVybiBkaWFsb2dcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9wZW5EaWFsb2dXaW5kb3cobnBjOkVudGl0eSwgZGlhbG9nOkRpYWxvZ1tdLCBzdGFydEluZGV4PzpudW1iZXIgfCBzdHJpbmcpe1xuICAgIGFjdGl2ZU5QQyA9IG5wY1xuXG4gICAgaWYobnBjRGlhbG9nQ29tcG9uZW50LmhhcyhucGMpKXtcbiAgICAgICAgbGV0IGluZGV4OmFueVxuICAgICAgICBpZiAoIXN0YXJ0SW5kZXgpIHtcbiAgICAgICAgICBpbmRleCA9IDBcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygc3RhcnRJbmRleCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICBpbmRleCA9IHN0YXJ0SW5kZXhcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpbmRleCA9IGZpbmREaWFsb2dCeU5hbWUoZGlhbG9nLCBzdGFydEluZGV4KVxuICAgICAgICB9XG4gICAgICAgIG9wZW5EaWFsb2cobnBjLGRpYWxvZywgaW5kZXgpXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xvc2VEaWFsb2dXaW5kb3cod2luZG93OkVudGl0eSl7XG4gICAgbGV0IGRpYWxvZyA9IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQod2luZG93KVxuICAgIGlmKHdpbmRvdyl7XG4gICAgICAgIGNsb3NlRGlhbG9nKGRpYWxvZylcbiAgICB9XG59Il19
|
package/dist/types.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { PBAvatarShape, PBGltfContainer } from "@dcl/sdk/ecs";
|
|
1
2
|
import { Vector3 } from "@dcl/sdk/math";
|
|
2
3
|
export type Dialog = {
|
|
3
4
|
text: string;
|
|
@@ -52,7 +53,7 @@ export declare enum ButtonStyles {
|
|
|
52
53
|
export type NPCData = {
|
|
53
54
|
type: NPCType;
|
|
54
55
|
body?: NPCBodyType;
|
|
55
|
-
model?: string;
|
|
56
|
+
model?: string | PBGltfContainer | PBAvatarShape;
|
|
56
57
|
walkingAnim?: string;
|
|
57
58
|
portrait?: string | ImageData;
|
|
58
59
|
reactDistance?: number;
|
package/dist/types.js
CHANGED
|
@@ -36,4 +36,4 @@ export var NPCPathType;
|
|
|
36
36
|
NPCPathType["SMOOTH_PATH"] = "smooth";
|
|
37
37
|
NPCPathType["RIGID_PATH"] = "rigid";
|
|
38
38
|
})(NPCPathType || (NPCPathType = {}));
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBbUZFLE1BQU0sQ0FBTixJQUFZLFlBY1g7QUFkRCxXQUFZLFlBQVk7SUFDdEIsdUJBQU8sQ0FBQTtJQUNQLHVCQUFPLENBQUE7SUFDUCw2QkFBYSxDQUFBO0lBQ2IsMkJBQVcsQ0FBQTtJQUNYLHlDQUF5QixDQUFBO0lBQ3pCLHlDQUF5QixDQUFBO0lBQ3pCLDJDQUEyQixDQUFBO0lBQzNCLHVDQUF1QixDQUFBO0lBQ3ZCLDJDQUEyQixDQUFBO0lBQzNCLDJDQUEyQixDQUFBO0lBQzNCLDZDQUE2QixDQUFBO0lBQzdCLHlDQUF5QixDQUFBO0lBQ3pCLCtCQUFlLENBQUE7QUFDakIsQ0FBQyxFQWRXLFlBQVksS0FBWixZQUFZLFFBY3ZCO0FBMEhELE1BQU0sQ0FBTixJQUFZLFFBS1g7QUFMRCxXQUFZLFFBQVE7SUFDbEIsaUNBQXFCLENBQUE7SUFDckIsK0JBQW1CLENBQUE7SUFDbkIscUNBQXlCLENBQUE7QUFFM0IsQ0FBQyxFQUxXLFFBQVEsS0FBUixRQUFRLFFBS25CO0FBRUQsTUFBTSxDQUFOLElBQVksV0FHWDtBQUhELFdBQVksV0FBVztJQUNyQixnQ0FBZ0IsQ0FBQTtJQUNoQixvQ0FBb0IsQ0FBQTtBQUN0QixDQUFDLEVBSFcsV0FBVyxLQUFYLFdBQVcsUUFHdEI7QUFFRCxNQUFNLENBQU4sSUFBWSxPQUlYO0FBSkQsV0FBWSxPQUFPO0lBQ2pCLDBCQUFlLENBQUE7SUFDZiw0QkFBaUIsQ0FBQTtJQUNqQiw0QkFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBSlcsT0FBTyxLQUFQLE9BQU8sUUFJbEI7QUFHRCxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLHFDQUFzQixDQUFBO0lBQ3RCLG1DQUFvQixDQUFBO0FBQ3RCLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZlY3RvcjMgfSBmcm9tIFwiQGRjbC9zZGsvbWF0aFwiXG5cbi8qKlxuICogRnJhZ21lbnQgb2YgYSBjb252ZXJzYXRpb24gd2l0aCBhbiBOUENcbiAqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBEaWFsb2cgLSBBbiBlbnRyeSBpbiBhbiBOUEMgY29udmVyc2F0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdGV4dCBUaGUgZGlhbG9nIHRleHRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBuYW1lIE9wdGlvbmFsIG5hbWUgb2YgdGhlIGRpYWxvZyBlbnRyeSwgdG8gbGluayBvdGhlciBlbnRyaWVzIHRvIHRoaXMgb25lIGFuZCBub3Qgd29ycnkgYWJvdXQgY2hhbmdlcyBpbiB0aGUgYXJyYXkgbGVuZ3RoXG4gKiBAcHJvcGVydHkge251bWJlcn0gZm9udFNpemUgU2l6ZSBvZiB0aGUgdGV4dFxuICogQHByb3BlcnR5IHtudW1iZXJ9IG9mZnNldFggT2Zmc2V0IG9mIHRoZSB0ZXh0IG9uIHRoZSBYIGF4aXMsIHJlbGF0aXZlIHRvIGl0cyBub3JtYWwgcG9zaXRpb24uXG4gKiBAcHJvcGVydHkge251bWJlcn0gb2Zmc2V0WSBPZmZzZXQgb2YgdGhlIHRleHQgb24gdGhlIFkgYXhpcywgcmVsYXRpdmUgdG8gaXRzIG5vcm1hbCBwb3NpdGlvbi5cbiAqIEBwcm9wZXJ0eSB7SW1hZ2VEYXRhfSBwb3J0cmFpdCBTZXRzIHRoZSBwb3J0cmFpdCBpbWFnZSB0byB1c2Ugb24gdGhlIGxlZnQuIFRoaXMgZmllbGQgZXhwZWN0cyBhIGBQb3J0cmFpdGAgb2JqZWN0LlxuICogQHByb3BlcnR5IHtJbWFnZURhdGF9IGltYWdlIFNldHMgYSBzZWNvbmQgaW1hZ2UgdG8gdXNlIG9uIHRoZSByaWdodCBvZiB0aGUgZGlhbG9nLCBhbmQgc2xpZ2h0bHkgdXAuIFRoaXMgZmllbGQgZXhwZWN0cyBhbiBgSW1hZ2VEYXRhYCBvYmplY3QuXG4gKiBAcHJvcGVydHkge251bWJlcn0gdHlwZVNwZWVkIFRoZSB0ZXh0IGFwcGVhcnMgb25lIGNoYXJhY3RlciBhdCBhIHRpbWUsIHNpbXVsYXRpbmcgdHlwaW5nLiBQbGF5ZXJzIGNhbiBjbGljayB0byBza2lwIHRoZSBhbmltYXRpb24uIFR1bmUgdGhlIHNwZWVkIG9mIHRoaXMgdHlwaW5nICgzMCBieSBkZWZhdWx0KSB0byBnbyBzbG93ZXIgb3IgZmFzdGVyLiBTZXQgdG8gXy0xXyB0byBza2lwIHRoZSBhbmltYXRpb24uXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGlzUXVlc3Rpb24gSWYgdHJ1ZSwgYWxsb3dzIHRvIHVzZSBidXR0b25zIHRvIHRyaWdnZXIgZGlmZmVyZW50IGFjdGlvbnNcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gaXNGaXhlZFNjcmVlbiBJZiB0cnVlLCBoYXMgbm8gYnV0dG9ucyBvciBcIm5leHQgcGFnZVwiIGZ1bmN0aW9uYWxpdHlcbiAqIEBwcm9wZXJ0eSB7QnV0dG9uRGF0YVtdfSBidXR0b25zIEFuIGFycmF5IG9mIGJ1dHRvbnMgYEJ1dHRvbkRhdGFgIG9iamVjdHMgdG8gdXNlIGluIGEgcXVlc3Rpb24gZW50cnlcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhdWRpbyBQYXRoIHRvIHNvdW5kIGZpbGUgdG8gcGxheSB3aGVuIHRoZSBkaWFsb2cgaXMgc2hvd24gaW4gdGhlIFVJXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHNraXBhYmxlIElmIHRydWUsIGEgXCJTa2lwXCIgYnV0dG9uIG9uIHRoZSBVSSBsZXRzIHBsYXllcnMgc2tpcCB0byB0aGUgbmV4dCBub24tc2tpcGFibGUgZW50cnkuXG4gKiBAcHJvcGVydHkge251bWJlcn0gdGltZU9uIEhvdyBsb25nIHRvIGtlZXAgdGhlIHRleHQgdmlzaWJsZSBiZWZvcmUgbW92aW5nIG9uIHRvIHRoZSBuZXh0IGVudHJ5LiBPbmx5IGZvciBidWJibGUgZGlhbG9ncyFcbiAqXG4gKi9cbmV4cG9ydCB0eXBlIERpYWxvZyA9IHtcbiAgICB0ZXh0OiBzdHJpbmdcbiAgICBuYW1lPzogc3RyaW5nXG4gICAgZm9udFNpemU/OiBudW1iZXJcbiAgICBvZmZzZXRYPzogbnVtYmVyXG4gICAgb2Zmc2V0WT86IG51bWJlclxuICAgIHR5cGVTcGVlZD86IG51bWJlclxuICAgIGlzRW5kT2ZEaWFsb2c/OiBib29sZWFuXG4gICAgdHJpZ2dlcmVkQnlOZXh0PzogKCkgPT4gdm9pZFxuICAgIHBvcnRyYWl0PzogSW1hZ2VEYXRhXG4gICAgaW1hZ2U/OiBJbWFnZURhdGFcbiAgICBpc1F1ZXN0aW9uPzogYm9vbGVhblxuICAgIGlzRml4ZWRTY3JlZW4/OiBib29sZWFuXG4gICAgYnV0dG9ucz86IEJ1dHRvbkRhdGFbXVxuICAgIGF1ZGlvPzogc3RyaW5nXG4gICAgc2tpcGFibGU/OiBib29sZWFuXG4gICAgdGltZU9uPzogbnVtYmVyXG4gIH1cbiAgXG4gIC8qKlxuICAgKlxuICAgKiBAdHlwZWRlZiB7T2JqZWN0fSBUcmlnZ2VyRGF0YSAtIE9iamVjdCB3aXRoIGRhdGEgZm9yIGEgTlBDVHJpZ2dlckNvbXBvbmVudFxuICAgKiBAcHJvcGVydHkge251bWJlcn0gbGF5ZXIgIGxheWVyIG9mIHRoZSBUcmlnZ2VyLCB1c2VmdWwgdG8gZGlzY3JpbWluYXRlIGJldHdlZW4gdHJpZ2dlciBldmVudHMuIFlvdSBjYW4gc2V0IG11bHRpcGxlIGxheWVycyBieSB1c2luZyBhIHwgc3ltYm9sLlxuICAgKiBAcHJvcGVydHkge251bWJlcn0gdHJpZ2dlcmVkQnlMYXllciBhZ2FpbnN0IHdoaWNoIGxheWVycyB0byBjaGVjayBjb2xsaXNpb25zXG4gICAqIEBwcm9wZXJ0eSB7KGVudGl0eTogRW50aXR5KSA9PiB2b2lkIH0gb25UcmlnZ2VyRW50ZXIgY2FsbGJhY2sgd2hlbiBhbiBlbnRpdHkgb2YgYSB2YWxpZCBsYXllciBlbnRlcnMgdGhlIHRyaWdnZXIgYXJlYVxuICAgKiBAcHJvcGVydHkgeyhlbnRpdHk6IEVudGl0eSkgPT4gdm9pZH0gb25UcmlnZ2VyRXhpdCBjYWxsYmFjayB3aGVuIGFuIGVudGl0eSBvZiBhIHZhbGlkIGxheWVyIGxlYXZlcyB0aGUgdHJpZ2dlciBhcmVhXG4gICAqIEBwcm9wZXJ0eSB7KCkgPT4gdm9pZH0gb25DYW1lcmFFbnRlciBjYWxsYmFjayB3aGVuIHRoZSBwbGF5ZXIgZW50ZXJzIHRoZSB0cmlnZ2VyIGFyZWFcbiAgICogQHByb3BlcnR5IHsoKSA9PiB2b2lkfSBvbkNhbWVyYUV4aXQgY2FsbGJhY2sgd2hlbiB0aGUgcGxheWVyIGxlYXZlcyB0aGUgdHJpZ2dlciBhcmVhXG4gICAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZW5hYmxlRGVidWcgd2hlbiB0cnVlIG1ha2VzIHRoZSB0cmlnZ2VyIGFyZWEgdmlzaWJsZSBmb3IgZGVidWcgcHVycG9zZXMuXG4gICAqL1xuICBleHBvcnQgdHlwZSBUcmlnZ2VyRGF0YSA9IHtcbiAgICBsYXllcj86IG51bWJlclxuICAgIHRyaWdnZXJlZEJ5TGF5ZXI/OiBudW1iZXJcbiAgICBvblRyaWdnZXJFbnRlcj86ICgpID0+IHZvaWRcbiAgICBvblRyaWdnZXJFeGl0PzogKCkgPT4gdm9pZFxuICAgIG9uQ2FtZXJhRW50ZXI/OiAoKSA9PiB2b2lkXG4gICAgb25DYW1lcmFFeGl0PzogKCkgPT4gdm9pZFxuICAgIGVuYWJsZURlYnVnPzogYm9vbGVhblxuICB9XG4gIFxuICAvKipcbiAgICogRGF0YSBmb3IgQnV0dG9uIHRvIHNob3cgb24gYSBxdWVzdGlvbiBpbiBhIERpYWxvZyBlbnRyeVxuICAgKlxuICAgKiBAdHlwZWRlZiB7T2JqZWN0fSBCdXR0b25EYXRhIC0gT2JqZWN0IHdpdGggZGF0YSBmb3IgYSBEaWFsb2cgVUkgYnV0dG9uXG4gICAqIEBwcm9wZXJ0eSB7c3RyaW5nfG51bWJlcn0gZ29Ub0RpYWxvZyBUaGUgaW5kZXggb3IgbmFtZSBvZiB0aGUgbmV4dCBkaWFsb2cgZW50cnkgdG8gZGlzcGxheSB3aGVuIGFjdGl2YXRlZC5cbiAgICogQHByb3BlcnR5IHtzdHJpbmd9IGxhYmVsIFRoZSBsYWJlbCB0byBzaG93IG9uIHRoZSBidXR0b24uXG4gICAqIEBwcm9wZXJ0eSB7KCkgPT4gdm9pZH0gdHJpZ2dlcmVkQWN0aW9ucyBBbiBhZGRpdGlvbmFsIGZ1bmN0aW9uIHRvIHJ1biB3aGVuZXZlciB0aGUgYnV0dG9uIGlzIGFjdGl2YXRlZFxuICAgKiBAcHJvcGVydHkge251bWJlcn0gZm9udFNpemUgRm9udCBzaXplIG9mIHRoZSB0ZXh0XG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfW9mZnNldFggT2Zmc2V0IG9mIHRoZSB0ZXh0IG9uIHRoZSBYIGF4aXMsIHJlbGF0aXZlIHRvIGl0cyBub3JtYWwgcG9zaXRpb24uXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBvZmZzZXRZIE9mZnNldCBvZiB0aGUgdGV4dCBvbiB0aGUgWSBheGlzLCByZWxhdGl2ZSB0byBpdHMgbm9ybWFsIHBvc2l0aW9uLlxuICAgKlxuICAgKi9cbiAgZXhwb3J0IHR5cGUgQnV0dG9uRGF0YSA9IHtcbiAgICBnb1RvRGlhbG9nOiBudW1iZXIgfCBzdHJpbmdcbiAgICBsYWJlbDogc3RyaW5nXG4gICAgdHJpZ2dlcmVkQWN0aW9ucz86ICgpID0+IHZvaWRcbiAgICBmb250U2l6ZT86IG51bWJlclxuICAgIG9mZnNldFg/OiBudW1iZXJcbiAgICBvZmZzZXRZPzogbnVtYmVyXG4gIH1cbiAgXG4gIGV4cG9ydCBlbnVtIEJ1dHRvblN0eWxlcyB7XG4gICAgRSA9IGBlYCxcbiAgICBGID0gYGZgLFxuICAgIERBUksgPSBgZGFya2AsXG4gICAgUkVEID0gYHJlZGAsXG4gICAgUk9VTkRCTEFDSyA9IGByb3VuZGJsYWNrYCxcbiAgICBST1VORFdISVRFID0gYHJvdW5kd2hpdGVgLFxuICAgIFJPVU5EU0lMVkVSID0gYHJvdW5kc2lsdmVyYCxcbiAgICBST1VOREdPTEQgPSBgcm91bmRnb2xkYCxcbiAgICBTUVVBUkVCTEFDSyA9IGBzcXVhcmVibGFja2AsXG4gICAgU1FVQVJFV0hJVEUgPSBgc3F1YXJld2hpdGVgLFxuICAgIFNRVUFSRVNJTFZFUiA9IGBzcXVhcmVzaWx2ZXJgLFxuICAgIFNRVUFSRUdPTEQgPSBgc3F1YXJlZ29sZGAsXG4gICAgV0hJVEUgPSBgd2hpdGVgXG4gIH1cbiAgXG4gIC8qKlxuICAgKiBBbiBOUEMgY2FwYWJsZSBvZiBoYXZpbmcgY29udmVyc2F0aW9ucyB3aXRoIHRoZSBwbGF5ZXIsIGFuZCBwbGF5IGRpZmZlcmVudCBhbmltYXRpb25zLlxuICAgKlxuICAgKiBAdHlwZWRlZiB7T2JqZWN0fSBOUENEYXRhIE9iamVjdCB3aXRoIGRhdGEgdG8gaW5zdGFuY2UgYSBuZXcgTlBDXG4gICAqIEBwcm9wZXJ0eSB7c3RyaW5nfEltYWdlRGF0YX0gcG9ydHJhaXQgMkQgaW1hZ2UgdG8gc2hvdyBvbiB0aGUgbGVmdC1oYW5kIHNpZGUgb2YgdGhlIGRpYWxvZyB3aW5kb3cuIFRoZSBzdHJ1Y3R1cmUgb2YgYW4gYEltYWdlRGF0YWAgb2JqZWN0IGlzIGRlc2NyaWJlZCBpbiBkZXRhaWwgYmVsb3cuXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSByZWFjdERpc3RhbmNlIFJhZGl1cyBpbiBtZXRlcnMgZm9yIHRoZSBwbGF5ZXIgdG8gYWN0aXZhdGUgdGhlIE5QQyBvciB0cmlnZ2VyIHRoZSBgb25XYWxrQXdheSgpYCBmdW5jdGlvbiB3aGVuIGxlYXZpbmcgdGhlIHJhZGl1cy5cbiAgICogQHByb3BlcnR5IHtzdHJpbmd9IGlkbGVBbmltIE5hbWUgb2YgdGhlIGlkbGUgYW5pbWF0aW9uIGluIHRoZSBtb2RlbC4gVGhpcyBhbmltYXRpb24gaXMgYWx3YXlzIGxvb3BlZC4gQWZ0ZXIgcGxheWluZyBhIG5vbi1sb29waW5nIGFuaW1hdGlvbiBpdCByZXR1cm5zIHRvIGxvb3BpbmcgdGhpcyBvbmUuXG4gICAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZmFjZVVzZXIgU2V0IGlmIHRoZSBOUEMgcm90YXRlcyB0byBmYWNlIHRoZSB1c2VyIHdoaWxlIGFjdGl2ZS5cbiAgICogQHByb3BlcnR5IHtib29sZWFufSBvbmx5RXh0ZXJuYWxUcmlnZ2VyIElmIHRydWUsIHRoZSBOUEMgY2FuJ3QgYmUgYWN0aXZhdGVkIGJ5IGNsaWNraW5nIG9yIHdhbGtpbmcgbmVhci4gSnVzdCBieSBjYWxsaW5nIGl0cyBgYWN0aXZhdGUoKWAgZnVuY3Rpb24uXG4gICAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gb25seUNsaWNrVHJpZ2dlciBJZiB0cnVlLCB0aGUgTlBDIGNhbid0IGJlIGFjdGl2YXRlZCBieSB3YWxraW5nIG5lYXIuIEp1c3QgYnkgY2xpY2tpbmcgb24gaXQgb3IgY2FsbGluZyBpdHMgYGFjdGl2YXRlKClgIGZ1bmN0aW9uLlxuICAgKiBAcHJvcGVydHkge2Jvb2xlYW59IG9ubHlFVHJpZ2dlciBJZiB0cnVlLCB0aGUgTlBDIGNhbid0IGJlIGFjdGl2YXRlZCBieSB3YWxraW5nIG5lYXIuIEp1c3QgYnkgcHJlc3NpbmcgRSBvbiBpdCBvciBjYWxsaW5nIGl0cyBgYWN0aXZhdGUoKWAgZnVuY3Rpb24uXG4gICAqIEBwcm9wZXJ0eSB7KCkgPT4gdm9pZH0gb25XYWxrQXdheSBGdW5jdGlvbiB0byBjYWxsIGV2ZXJ5IHRpbWUgdGhlIHBsYXllciB3YWxrcyBvdXQgb2YgdGhlIGByZWFjdERpc3RhbmNlYCByYWRpdXMuXG4gICAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gY29udGludWVPbldhbGtBd2F5IGYgdHJ1ZSx3aGVuIHRoZSBwbGF5ZXIgd2Fsa3Mgb3V0IG9mIHRoZSBgcmVhY3REaXN0YW5jZWAgcmFkaXVzLCB0aGUgZGlhbG9nIHdpbmRvdyBzdGF5cyBvcGVuIGFuZCB0aGUgTlBDIGtlZXBzIHR1cm5pbmcgdG8gZmFjZSB0aGUgcGxheWVyIChpZiBhcHBsaWNhYmxlKS4gSXQgZG9lc24ndCBhZmZlY3QgdGhlIHRyaWdnZXJpbmcgb2YgdGhlIGBvbldhbGtBd2F5KClgIGZ1bmN0aW9uLlxuICAgKiBAcHJvcGVydHkge2Jvb2xlYW59IGRhcmtVSSBJZiB0cnVlLCB0aGUgZGlhbG9nIFVJIHVzZXMgdGhlIGRhcmsgdGhlbWUuXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBjb29sRG93bkR1cmF0aW9uIENoYW5nZSB0aGUgY29vbGRvd24gcGVyaW9kIGZvciBhY3RpdmF0aW5nIHRoZSBOUEMgYWdhaW4uIFRoZSBudW1iZXIgaXMgaW4gc2Vjb25kcy5cbiAgICogQHByb3BlcnR5IHtzdHJpbmd9IGhvdmVyVGV4dCBTZXQgdGhlIFVJIGhvdmVyIGZlZWRiYWNrIHdoZW4gcG9pbnRpbmcgdGhlIGN1cnNvciBhdCB0aGUgTlBDLiBfVEFMS18gYnkgZGVmYXVsdC5cbiAgICogQHByb3BlcnR5IHtzdHJpbmd9IGRpYWxvZ1NvdW5kIFBhdGggdG8gc291bmQgZmlsZSB0byBwbGF5IG9uY2UgZm9yIGV2ZXJ5IGxpbmUgb2YgZGlhbG9nIHJlYWQgb24gdGhlIFVJLlxuICAgKiBAcHJvcGVydHkge3N0cmluZ30gd2Fsa2luZ0FuaW0gQW5pbWF0aW9uIHRvIHBsYXkgd2hlbiB3YWxraW5nIHdpdGggZm9sbG93UGF0aFxuICAgKiBAcHJvcGVydHkge251bWJlcn0gd2Fsa2luZ1NwZWVkIERlZmF1bHQgc3BlZWQgdG8gdXNlIHdoZW4gd2Fsa2luZyB3aXRoIGZvbGxvd1BhdGhcbiAgICogQHByb3BlcnR5IHtWZWN0b3IzW119IHBhdGggQXJyYXkgb2YgVmVjdG9yMyBwb2ludHMgcmVwcmVzZW50aW5nIHRoZSBkZWZhdWx0IHBhdGggdG8gd2FsayBvdmVyLiBUaGUgTlBDIHdpbGwgd2FsayBsb29waW5nIG92ZXIgdGhlc2UgcG9pbnRzXG4gICogQHByb3BlcnR5IHtib29sZWFufSB0ZXh0QnViYmxlIElmIHRydWUsIHRoZSBOUEMgY2FuIGRpc3BsYXkgdGV4dCBidWJibGVzIHdpdGggZGlhbG9nc1xuICAgKiBAcHJvcGVydHkge251bWJlcn0gYnViYmxlSGVpZ2h0IFRoZSBkZWZhdWx0IGhlaWdodCB0byBkaXNwbGF5IHRleHQgYnViYmxlcyBvdmVyIHRoZSBOUEMncyBwb3NpdGlvblxuICAgKiBAcHJvcGVydHkge2Jvb2xlYW59IG5vVUkgSWYgdHJ1ZSwgbm8gVUkgZGlhbG9nIGVsZW1lbnRzIGFyZSBjb25zdHJ1Y3RlZC4gVGhlIE5QQyBjYW4gdXNlIHNwZWVjaCBidWJibGVzLlxuICAqXG4gICAqL1xuICBleHBvcnQgdHlwZSBOUENEYXRhID0ge1xuXG4gICAgdHlwZTpOUENUeXBlXG4gICAgYm9keT86TlBDQm9keVR5cGVcbiAgICBtb2RlbD86c3RyaW5nXG5cblxuICAgIHdhbGtpbmdBbmltPzpzdHJpbmdcbiAgICBwb3J0cmFpdD86IHN0cmluZyB8IEltYWdlRGF0YVxuICAgIHJlYWN0RGlzdGFuY2U/OiBudW1iZXJcbiAgICBpZGxlQW5pbT86IHN0cmluZ1xuICAgIGZhY2VVc2VyPzogYm9vbGVhblxuICAgIHR1cm5pbmdTcGVlZD86IG51bWJlclxuICAgIG9ubHlFeHRlcm5hbFRyaWdnZXI/OiBib29sZWFuXG4gICAgb25seUNsaWNrVHJpZ2dlcj86IGJvb2xlYW5cbiAgICBvbmx5RVRyaWdnZXI/OiBib29sZWFuXG4gICAgb25BY3RpdmF0ZTogKCkgPT4gdm9pZFxuICAgIG9uV2Fsa0F3YXk/OiAoKSA9PiB2b2lkXG4gICAgY29udGludWVPbldhbGtBd2F5PzogYm9vbGVhblxuICAgIGRhcmtVST86IGJvb2xlYW5cbiAgICBjb29sRG93bkR1cmF0aW9uPzogbnVtYmVyXG4gICAgaG92ZXJUZXh0Pzogc3RyaW5nXG4gICAgZGlhbG9nU291bmQ/OiBzdHJpbmdcbiAgICAvL2RpYWxvZ0N1c3RvbVRoZW1lPzogVGV4dHVyZVxuICAgIHRleHRCdWJibGU/OiBib29sZWFuXG4gICAgYnViYmxlSGVpZ2h0PzogbnVtYmVyXG4gICAgbm9VST86IGJvb2xlYW5cblxuICAgIHBhdGhEYXRhPzpGb2xsb3dQYXRoRGF0YVxuICB9XG4gIFxuICAvKipcbiAgICogTWFrZSBhbiBOUEMgd2FsayBmb2xsb3dpbmcgYSBwYXRoXG4gICAqXG4gICAqIEB0eXBlZGVmIHtPYmplY3R9IEZvbGxvd1BhdGhEYXRhIC0gT2JqZWN0IHdpdGggZGF0YSB0byBkZXNjcmliZSBhIHBhdGggdGhhdCBhbiBOUEMgY2FuIHdhbGtcbiAgICogQHByb3BlcnR5IHtWZWN0b3IzW119IHBhdGggQXJyYXkgb2YgYFZlY3RvcjNgIHBvc2l0aW9ucyB0byB3YWxrIG92ZXIuXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBzcGVlZCBTcGVlZCB0byBtb3ZlIGF0IHdoaWxlIHdhbGtpbmcgdGhpcyBwYXRoLiBJZiBubyBgc3BlZWRgIG9yIGB0b3RhbER1cmF0aW9uYCBpcyBwcm92aWRlZCwgaXQgdXNlcyB0aGUgTlBDJ3MgYHdhbGtpbmdTcGVlZGAsIHdoaWNoIGlzIF8yXyBieSBkZWZhdWx0LlxuICAgKiBAcHJvcGVydHkge251bWJlcn0gdG90YWxEdXJhdGlvbiBUaGUgZHVyYXRpb24gaW4gX3NlY29uZHNfIHRoYXQgdGhlIHdob2xlIHBhdGggc2hvdWxkIHRha2UuIFRoZSBOUEMgd2lsbCBtb3ZlIGF0IHRoZSBjb25zdGFudCBzcGVlZCByZXF1aXJlZCB0byBmaW5pc2ggaW4gdGhhdCB0aW1lLiBUaGlzIHZhbHVlIG92ZXJyaWRlcyB0aGF0IG9mIHRoZSBfc3BlZWRfLlxuICAgKiBAcHJvcGVydHkge2Jvb2xlYW59IGxvb3AgX2Jvb2xlYW5fIElmIHRydWUsIHRoZSBOUEMgd2Fsa3MgaW4gY2lyY2xlcyBvdmVyIHRoZSBwcm92aWRlZCBzZXQgb2YgcG9pbnRzIGluIHRoZSBwYXRoLiBfZmFsc2VfIGJ5IGRlZmF1bHQsIHVubGVzcyB0aGUgTlBDIGlzIGluaXRpYXRlZCB3aXRoIGEgYHBhdGhgLCBpbiB3aGljaCBjYXNlIGl0IHN0YXJ0cyBhcyBfdHJ1ZV8uXG4gICAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gY3VydmUgX2Jvb2xlYW5fIElmIHRydWUsIHRoZSBwYXRoIGlzIHRyYWNlZCBhIHNpbmdsZSBzbW9vdGggY3VydmUgdGhhdCBwYXNzZXMgb3ZlciBlYWNoIG9mIHRoZSBpbmRpY2F0ZWQgcG9pbnRzLiBUaGUgY3VydmUgaXMgbWFkZSBvdXQgb2Ygc3RyYWlnaHQtbGluZSBzZWdtZW50cywgdGhlIHBhdGggaXMgc3RvcmVkIHdpdGggNCB0aW1lcyBhcyBtYW55IHBvaW50cyBhcyBvcmlnaW5hbGx5IGRlZmluZWQuIF9mYWxzZV8gYnkgZGVmYXVsdC5cbiAgICogQHByb3BlcnR5IHtudW1iZXJ9IHN0YXJ0aW5nUG9pbnQgSW5kZXggcG9zaXRpb24gZm9yIHdoYXQgcG9pbnQgdG8gc3RhcnQgZnJvbSBvbiB0aGUgcGF0aC4gXzBfIGJ5IGRlZmF1bHQuXG4gICAqIEBwcm9wZXJ0eSB7KCkgPT4gdm9pZH0gb25GaW5pc2hDYWxsYmFjayBGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIE5QQyBmaW5pc2hlZCB3YWxraW5nIG92ZXIgYWxsIHRoZSBwb2ludHMgb24gdGhlIHBhdGguIFRoaXMgaXMgb25seSBjYWxsZWQgd2hlbiBgbG9vcGAgaXMgX2ZhbHNlXy5cbiAgICogQHByb3BlcnR5IHsoKSA9PiB2b2lkfSBvblJlYWNoZWRQb2ludENhbGxiYWNrIEZ1bmN0aW9uIHRvIGNhbGwgb25jZSBldmVyeSB0aW1lIHRoZSBOUEMgcmVhY2hlcyBhIHBvaW50IGluIHRoZSBwYXRoLlxuICAgKlxuICAgKi9cbiAgZXhwb3J0IHR5cGUgRm9sbG93UGF0aERhdGEgPSB7XG4gICAgc3RhcnRpbmdQb2ludD86IG51bWJlclxuICAgIGxvb3A/OiBib29sZWFuXG4gICAgY3VydmU/OiBib29sZWFuXG4gICAgdG90YWxEdXJhdGlvbjogbnVtYmVyXG4gICAgc3BlZWQ/OiBudW1iZXJcbiAgICBwYXRoPzogVmVjdG9yM1tdXG4gICAgcGF0aFR5cGU/OiBOUENQYXRoVHlwZVxuICAgIG9uRmluaXNoQ2FsbGJhY2s/OiAoKSA9PiB2b2lkXG4gICAgb25SZWFjaGVkUG9pbnRDYWxsYmFjaz86ICgpID0+IHZvaWRcbiAgfVxuICBcbiAgLyoqXG4gICAqIEN1dCBvdXQgYSBzZWN0aW9uIG9mIGFuIGltYWdlIGZpbGVcbiAgICpcbiAgICogQHR5cGVkZWYge09iamVjdH0gSW1hZ2VTZWN0aW9uIC0gT2JqZWN0IHdpdGggZGF0YSB0byBvbmx5IGRpc3BsYXkgYSBzZWN0aW9uIG9mIGFuIGltYWdlXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBzb3VyY2VXaWR0aCBXaWR0aCBpbiBwaXhlbHMgdG8gc2VsZWN0IGZyb20gaW1hZ2UsIHN0YXJ0aW5nIGZyb20gdGhlIHNvdXJjZUxlZnQsIGdvaW5nIHJpZ2h0XG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBzb3VyY2VIZWlnaHQgSGVpZ2h0IGluIHBpeGVscyB0byBzZWxlY3QgZnJvbSBpbWFnZSwgc3RhcnRpbmcgZnJvbSB0aGUgc291cmNlVG9wLCBnb2luZyBkb3duXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBzb3VyY2VMZWZ0IExlZnRtb3N0IHBpeGVsIHRvIHNlbGVjdCBmcm9tIGltYWdlXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBzb3VyY2VUb3AgVG9wbW9zdCBwaXhlbCB0byBzZWxlY3QgZnJvbSBpbWFnZVxuICAgKlxuICAgKi9cbiAgZXhwb3J0IHR5cGUgSW1hZ2VTZWN0aW9uID0ge1xuICAgIHNvdXJjZVdpZHRoOiBudW1iZXJcbiAgICBzb3VyY2VIZWlnaHQ6IG51bWJlclxuICAgIHNvdXJjZUxlZnQ/OiBudW1iZXJcbiAgICBzb3VyY2VUb3A/OiBudW1iZXJcbiAgfVxuICBcbiAgLyoqXG4gICAqXG4gICAqXG4gICAqIEB0eXBlZGVmIHtPYmplY3R9IEltYWdlRGF0YSAtIE9iamVjdCB3aXRoIGRhdGEgZm9yIGRpc3BsYXlpbmcgYW4gaW1hZ2VcbiAgICogQHByb3BlcnR5IHtzdHJpbmd9IHBhdGggUGF0aCB0byB0aGUgaW1hZ2UgZmlsZS5cbiAgICogQHByb3BlcnR5IHtudW1iZXJ9IG9mZnNldFggT2Zmc2V0IG9uIFgsIHJlbGF0aXZlIHRvIHRoZSBub3JtYWwgcG9zaXRpb24gb2YgdGhlIGltYWdlLlxuICAgKiBAcHJvcGVydHkge251bWJlcn0gb2Zmc2V0WSBPZmZzZXQgb24gWSwgcmVsYXRpdmUgdG8gdGhlIG5vcm1hbCBwb3NpdGlvbiBvZiB0aGUgaW1hZ2UuXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBoZWlnaHQgVGhlIGhlaWdodCB0byBzaG93IHRoZSBpbWFnZSBvbnNjcmVlbi5cbiAgICogQHByb3BlcnR5IHtudW1iZXJ9IHdpZHRoIFRoZSB3aWR0aCB0byBzaG93IHRoZSBpbWFnZSBvbnNjcmVlbi5cbiAgICogQHByb3BlcnR5IHtJbWFnZVNlY3Rpb259IHNlY3Rpb24gVXNlIG9ubHkgYSBzZWN0aW9uIG9mIHRoZSBpbWFnZSBmaWxlLCB1c2VmdWwgd2hlbiBhcnJhbmdpbmcgbXVsdGlwbGUgaWNvbnMgaW50byBhbiBpbWFnZSBhdGxhcy4gVGhpcyBmaWVsZCB0YWtlcyBhbiBgSW1hZ2VTZWN0aW9uYCBvYmplY3QsIHNwZWNpZnlpbmcgYHNvdXJjZVdpZHRoYCBhbmQgYHNvdXJjZUhlaWdodGAsIGFuZCBvcHRpb25hbGx5IGFsc28gYHNvdXJjZUxlZnRgIGFuZCBgc291cmNlVG9wYC5cbiAgICpcbiAgICovXG4gIGV4cG9ydCB0eXBlIEltYWdlRGF0YSA9IHtcbiAgICBwYXRoOiBzdHJpbmdcbiAgICBvZmZzZXRYPzogbnVtYmVyXG4gICAgb2Zmc2V0WT86IG51bWJlclxuICAgIGhlaWdodD86IG51bWJlclxuICAgIHdpZHRoPzogbnVtYmVyXG4gICAgc2VjdGlvbj86IEltYWdlU2VjdGlvblxuICB9XG4gIFxuICBleHBvcnQgZW51bSBOUENTdGF0ZSB7XG4gICAgU1RBTkRJTkcgPSAnc3RhbmRpbmcnLFxuICAgIFRBTEtJTkcgPSAndGFsa2luZycsXG4gICAgRk9MTE9XUEFUSCA9ICdmb2xsb3dQYXRoJ1xuICAgIC8vRk9MTE9XUExBWUVSID0gJ2ZvbGxvd1BsYXllcidcbiAgfVxuXG4gIGV4cG9ydCBlbnVtIE5QQ0JvZHlUeXBlIHtcbiAgICBNQUxFPSBcIkJhc2VNYWxlXCIsXG4gICAgRkVNQUxFPSBcIkJhc2VGZW1hbGVcIlxuICB9XG5cbiAgZXhwb3J0IGVudW0gTlBDVHlwZSB7XG4gICAgQkxBTksgPSBcImJsYW5rXCIsXG4gICAgQ1VTVE9NID0gXCJjdXN0b21cIixcbiAgICBBVkFUQVIgPSAnYXZhdGFyJ1xuICB9XG4gIFxuICBcbiAgZXhwb3J0IGVudW0gTlBDUGF0aFR5cGUge1xuICAgIFNNT09USF9QQVRIID0gJ3Ntb290aCcsIC8vd2lsbCBmb2xsb3cgdGhlIHBhdGggYnV0IGNhbiBjdXQgc2hhcnAgY29ybmVyc1xuICAgIFJJR0lEX1BBVEggPSAncmlnaWQnLCAvL3dpbGwgZW5zdXJlIGVhY2ggY29ybmVyIGlzIGhpdFxuICB9XG4gICJdfQ==
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBb0ZFLE1BQU0sQ0FBTixJQUFZLFlBY1g7QUFkRCxXQUFZLFlBQVk7SUFDdEIsdUJBQU8sQ0FBQTtJQUNQLHVCQUFPLENBQUE7SUFDUCw2QkFBYSxDQUFBO0lBQ2IsMkJBQVcsQ0FBQTtJQUNYLHlDQUF5QixDQUFBO0lBQ3pCLHlDQUF5QixDQUFBO0lBQ3pCLDJDQUEyQixDQUFBO0lBQzNCLHVDQUF1QixDQUFBO0lBQ3ZCLDJDQUEyQixDQUFBO0lBQzNCLDJDQUEyQixDQUFBO0lBQzNCLDZDQUE2QixDQUFBO0lBQzdCLHlDQUF5QixDQUFBO0lBQ3pCLCtCQUFlLENBQUE7QUFDakIsQ0FBQyxFQWRXLFlBQVksS0FBWixZQUFZLFFBY3ZCO0FBMkhELE1BQU0sQ0FBTixJQUFZLFFBS1g7QUFMRCxXQUFZLFFBQVE7SUFDbEIsaUNBQXFCLENBQUE7SUFDckIsK0JBQW1CLENBQUE7SUFDbkIscUNBQXlCLENBQUE7QUFFM0IsQ0FBQyxFQUxXLFFBQVEsS0FBUixRQUFRLFFBS25CO0FBRUQsTUFBTSxDQUFOLElBQVksV0FHWDtBQUhELFdBQVksV0FBVztJQUNyQixnQ0FBZ0IsQ0FBQTtJQUNoQixvQ0FBb0IsQ0FBQTtBQUN0QixDQUFDLEVBSFcsV0FBVyxLQUFYLFdBQVcsUUFHdEI7QUFFRCxNQUFNLENBQU4sSUFBWSxPQUlYO0FBSkQsV0FBWSxPQUFPO0lBQ2pCLDBCQUFlLENBQUE7SUFDZiw0QkFBaUIsQ0FBQTtJQUNqQiw0QkFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBSlcsT0FBTyxLQUFQLE9BQU8sUUFJbEI7QUFHRCxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLHFDQUFzQixDQUFBO0lBQ3RCLG1DQUFvQixDQUFBO0FBQ3RCLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBCQXZhdGFyU2hhcGUsIFBCR2x0ZkNvbnRhaW5lciB9IGZyb20gXCJAZGNsL3Nkay9lY3NcIlxuaW1wb3J0IHsgVmVjdG9yMyB9IGZyb20gXCJAZGNsL3Nkay9tYXRoXCJcblxuLyoqXG4gKiBGcmFnbWVudCBvZiBhIGNvbnZlcnNhdGlvbiB3aXRoIGFuIE5QQ1xuICpcbiAqIEB0eXBlZGVmIHtPYmplY3R9IERpYWxvZyAtIEFuIGVudHJ5IGluIGFuIE5QQyBjb252ZXJzYXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB0ZXh0IFRoZSBkaWFsb2cgdGV4dFxuICogQHByb3BlcnR5IHtzdHJpbmd9IG5hbWUgT3B0aW9uYWwgbmFtZSBvZiB0aGUgZGlhbG9nIGVudHJ5LCB0byBsaW5rIG90aGVyIGVudHJpZXMgdG8gdGhpcyBvbmUgYW5kIG5vdCB3b3JyeSBhYm91dCBjaGFuZ2VzIGluIHRoZSBhcnJheSBsZW5ndGhcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBmb250U2l6ZSBTaXplIG9mIHRoZSB0ZXh0XG4gKiBAcHJvcGVydHkge251bWJlcn0gb2Zmc2V0WCBPZmZzZXQgb2YgdGhlIHRleHQgb24gdGhlIFggYXhpcywgcmVsYXRpdmUgdG8gaXRzIG5vcm1hbCBwb3NpdGlvbi5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBvZmZzZXRZIE9mZnNldCBvZiB0aGUgdGV4dCBvbiB0aGUgWSBheGlzLCByZWxhdGl2ZSB0byBpdHMgbm9ybWFsIHBvc2l0aW9uLlxuICogQHByb3BlcnR5IHtJbWFnZURhdGF9IHBvcnRyYWl0IFNldHMgdGhlIHBvcnRyYWl0IGltYWdlIHRvIHVzZSBvbiB0aGUgbGVmdC4gVGhpcyBmaWVsZCBleHBlY3RzIGEgYFBvcnRyYWl0YCBvYmplY3QuXG4gKiBAcHJvcGVydHkge0ltYWdlRGF0YX0gaW1hZ2UgU2V0cyBhIHNlY29uZCBpbWFnZSB0byB1c2Ugb24gdGhlIHJpZ2h0IG9mIHRoZSBkaWFsb2csIGFuZCBzbGlnaHRseSB1cC4gVGhpcyBmaWVsZCBleHBlY3RzIGFuIGBJbWFnZURhdGFgIG9iamVjdC5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB0eXBlU3BlZWQgVGhlIHRleHQgYXBwZWFycyBvbmUgY2hhcmFjdGVyIGF0IGEgdGltZSwgc2ltdWxhdGluZyB0eXBpbmcuIFBsYXllcnMgY2FuIGNsaWNrIHRvIHNraXAgdGhlIGFuaW1hdGlvbi4gVHVuZSB0aGUgc3BlZWQgb2YgdGhpcyB0eXBpbmcgKDMwIGJ5IGRlZmF1bHQpIHRvIGdvIHNsb3dlciBvciBmYXN0ZXIuIFNldCB0byBfLTFfIHRvIHNraXAgdGhlIGFuaW1hdGlvbi5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gaXNRdWVzdGlvbiBJZiB0cnVlLCBhbGxvd3MgdG8gdXNlIGJ1dHRvbnMgdG8gdHJpZ2dlciBkaWZmZXJlbnQgYWN0aW9uc1xuICogQHByb3BlcnR5IHtib29sZWFufSBpc0ZpeGVkU2NyZWVuIElmIHRydWUsIGhhcyBubyBidXR0b25zIG9yIFwibmV4dCBwYWdlXCIgZnVuY3Rpb25hbGl0eVxuICogQHByb3BlcnR5IHtCdXR0b25EYXRhW119IGJ1dHRvbnMgQW4gYXJyYXkgb2YgYnV0dG9ucyBgQnV0dG9uRGF0YWAgb2JqZWN0cyB0byB1c2UgaW4gYSBxdWVzdGlvbiBlbnRyeVxuICogQHByb3BlcnR5IHtzdHJpbmd9IGF1ZGlvIFBhdGggdG8gc291bmQgZmlsZSB0byBwbGF5IHdoZW4gdGhlIGRpYWxvZyBpcyBzaG93biBpbiB0aGUgVUlcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gc2tpcGFibGUgSWYgdHJ1ZSwgYSBcIlNraXBcIiBidXR0b24gb24gdGhlIFVJIGxldHMgcGxheWVycyBza2lwIHRvIHRoZSBuZXh0IG5vbi1za2lwYWJsZSBlbnRyeS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB0aW1lT24gSG93IGxvbmcgdG8ga2VlcCB0aGUgdGV4dCB2aXNpYmxlIGJlZm9yZSBtb3Zpbmcgb24gdG8gdGhlIG5leHQgZW50cnkuIE9ubHkgZm9yIGJ1YmJsZSBkaWFsb2dzIVxuICpcbiAqL1xuZXhwb3J0IHR5cGUgRGlhbG9nID0ge1xuICAgIHRleHQ6IHN0cmluZ1xuICAgIG5hbWU/OiBzdHJpbmdcbiAgICBmb250U2l6ZT86IG51bWJlclxuICAgIG9mZnNldFg/OiBudW1iZXJcbiAgICBvZmZzZXRZPzogbnVtYmVyXG4gICAgdHlwZVNwZWVkPzogbnVtYmVyXG4gICAgaXNFbmRPZkRpYWxvZz86IGJvb2xlYW5cbiAgICB0cmlnZ2VyZWRCeU5leHQ/OiAoKSA9PiB2b2lkXG4gICAgcG9ydHJhaXQ/OiBJbWFnZURhdGFcbiAgICBpbWFnZT86IEltYWdlRGF0YVxuICAgIGlzUXVlc3Rpb24/OiBib29sZWFuXG4gICAgaXNGaXhlZFNjcmVlbj86IGJvb2xlYW5cbiAgICBidXR0b25zPzogQnV0dG9uRGF0YVtdXG4gICAgYXVkaW8/OiBzdHJpbmdcbiAgICBza2lwYWJsZT86IGJvb2xlYW5cbiAgICB0aW1lT24/OiBudW1iZXJcbiAgfVxuICBcbiAgLyoqXG4gICAqXG4gICAqIEB0eXBlZGVmIHtPYmplY3R9IFRyaWdnZXJEYXRhIC0gT2JqZWN0IHdpdGggZGF0YSBmb3IgYSBOUENUcmlnZ2VyQ29tcG9uZW50XG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBsYXllciAgbGF5ZXIgb2YgdGhlIFRyaWdnZXIsIHVzZWZ1bCB0byBkaXNjcmltaW5hdGUgYmV0d2VlbiB0cmlnZ2VyIGV2ZW50cy4gWW91IGNhbiBzZXQgbXVsdGlwbGUgbGF5ZXJzIGJ5IHVzaW5nIGEgfCBzeW1ib2wuXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB0cmlnZ2VyZWRCeUxheWVyIGFnYWluc3Qgd2hpY2ggbGF5ZXJzIHRvIGNoZWNrIGNvbGxpc2lvbnNcbiAgICogQHByb3BlcnR5IHsoZW50aXR5OiBFbnRpdHkpID0+IHZvaWQgfSBvblRyaWdnZXJFbnRlciBjYWxsYmFjayB3aGVuIGFuIGVudGl0eSBvZiBhIHZhbGlkIGxheWVyIGVudGVycyB0aGUgdHJpZ2dlciBhcmVhXG4gICAqIEBwcm9wZXJ0eSB7KGVudGl0eTogRW50aXR5KSA9PiB2b2lkfSBvblRyaWdnZXJFeGl0IGNhbGxiYWNrIHdoZW4gYW4gZW50aXR5IG9mIGEgdmFsaWQgbGF5ZXIgbGVhdmVzIHRoZSB0cmlnZ2VyIGFyZWFcbiAgICogQHByb3BlcnR5IHsoKSA9PiB2b2lkfSBvbkNhbWVyYUVudGVyIGNhbGxiYWNrIHdoZW4gdGhlIHBsYXllciBlbnRlcnMgdGhlIHRyaWdnZXIgYXJlYVxuICAgKiBAcHJvcGVydHkgeygpID0+IHZvaWR9IG9uQ2FtZXJhRXhpdCBjYWxsYmFjayB3aGVuIHRoZSBwbGF5ZXIgbGVhdmVzIHRoZSB0cmlnZ2VyIGFyZWFcbiAgICogQHByb3BlcnR5IHtib29sZWFufSBlbmFibGVEZWJ1ZyB3aGVuIHRydWUgbWFrZXMgdGhlIHRyaWdnZXIgYXJlYSB2aXNpYmxlIGZvciBkZWJ1ZyBwdXJwb3Nlcy5cbiAgICovXG4gIGV4cG9ydCB0eXBlIFRyaWdnZXJEYXRhID0ge1xuICAgIGxheWVyPzogbnVtYmVyXG4gICAgdHJpZ2dlcmVkQnlMYXllcj86IG51bWJlclxuICAgIG9uVHJpZ2dlckVudGVyPzogKCkgPT4gdm9pZFxuICAgIG9uVHJpZ2dlckV4aXQ/OiAoKSA9PiB2b2lkXG4gICAgb25DYW1lcmFFbnRlcj86ICgpID0+IHZvaWRcbiAgICBvbkNhbWVyYUV4aXQ/OiAoKSA9PiB2b2lkXG4gICAgZW5hYmxlRGVidWc/OiBib29sZWFuXG4gIH1cbiAgXG4gIC8qKlxuICAgKiBEYXRhIGZvciBCdXR0b24gdG8gc2hvdyBvbiBhIHF1ZXN0aW9uIGluIGEgRGlhbG9nIGVudHJ5XG4gICAqXG4gICAqIEB0eXBlZGVmIHtPYmplY3R9IEJ1dHRvbkRhdGEgLSBPYmplY3Qgd2l0aCBkYXRhIGZvciBhIERpYWxvZyBVSSBidXR0b25cbiAgICogQHByb3BlcnR5IHtzdHJpbmd8bnVtYmVyfSBnb1RvRGlhbG9nIFRoZSBpbmRleCBvciBuYW1lIG9mIHRoZSBuZXh0IGRpYWxvZyBlbnRyeSB0byBkaXNwbGF5IHdoZW4gYWN0aXZhdGVkLlxuICAgKiBAcHJvcGVydHkge3N0cmluZ30gbGFiZWwgVGhlIGxhYmVsIHRvIHNob3cgb24gdGhlIGJ1dHRvbi5cbiAgICogQHByb3BlcnR5IHsoKSA9PiB2b2lkfSB0cmlnZ2VyZWRBY3Rpb25zIEFuIGFkZGl0aW9uYWwgZnVuY3Rpb24gdG8gcnVuIHdoZW5ldmVyIHRoZSBidXR0b24gaXMgYWN0aXZhdGVkXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBmb250U2l6ZSBGb250IHNpemUgb2YgdGhlIHRleHRcbiAgICogQHByb3BlcnR5IHtudW1iZXJ9b2Zmc2V0WCBPZmZzZXQgb2YgdGhlIHRleHQgb24gdGhlIFggYXhpcywgcmVsYXRpdmUgdG8gaXRzIG5vcm1hbCBwb3NpdGlvbi5cbiAgICogQHByb3BlcnR5IHtudW1iZXJ9IG9mZnNldFkgT2Zmc2V0IG9mIHRoZSB0ZXh0IG9uIHRoZSBZIGF4aXMsIHJlbGF0aXZlIHRvIGl0cyBub3JtYWwgcG9zaXRpb24uXG4gICAqXG4gICAqL1xuICBleHBvcnQgdHlwZSBCdXR0b25EYXRhID0ge1xuICAgIGdvVG9EaWFsb2c6IG51bWJlciB8IHN0cmluZ1xuICAgIGxhYmVsOiBzdHJpbmdcbiAgICB0cmlnZ2VyZWRBY3Rpb25zPzogKCkgPT4gdm9pZFxuICAgIGZvbnRTaXplPzogbnVtYmVyXG4gICAgb2Zmc2V0WD86IG51bWJlclxuICAgIG9mZnNldFk/OiBudW1iZXJcbiAgfVxuICBcbiAgZXhwb3J0IGVudW0gQnV0dG9uU3R5bGVzIHtcbiAgICBFID0gYGVgLFxuICAgIEYgPSBgZmAsXG4gICAgREFSSyA9IGBkYXJrYCxcbiAgICBSRUQgPSBgcmVkYCxcbiAgICBST1VOREJMQUNLID0gYHJvdW5kYmxhY2tgLFxuICAgIFJPVU5EV0hJVEUgPSBgcm91bmR3aGl0ZWAsXG4gICAgUk9VTkRTSUxWRVIgPSBgcm91bmRzaWx2ZXJgLFxuICAgIFJPVU5ER09MRCA9IGByb3VuZGdvbGRgLFxuICAgIFNRVUFSRUJMQUNLID0gYHNxdWFyZWJsYWNrYCxcbiAgICBTUVVBUkVXSElURSA9IGBzcXVhcmV3aGl0ZWAsXG4gICAgU1FVQVJFU0lMVkVSID0gYHNxdWFyZXNpbHZlcmAsXG4gICAgU1FVQVJFR09MRCA9IGBzcXVhcmVnb2xkYCxcbiAgICBXSElURSA9IGB3aGl0ZWBcbiAgfVxuICBcbiAgLyoqXG4gICAqIEFuIE5QQyBjYXBhYmxlIG9mIGhhdmluZyBjb252ZXJzYXRpb25zIHdpdGggdGhlIHBsYXllciwgYW5kIHBsYXkgZGlmZmVyZW50IGFuaW1hdGlvbnMuXG4gICAqXG4gICAqIEB0eXBlZGVmIHtPYmplY3R9IE5QQ0RhdGEgT2JqZWN0IHdpdGggZGF0YSB0byBpbnN0YW5jZSBhIG5ldyBOUENcbiAgICogQHByb3BlcnR5IHtzdHJpbmd8SW1hZ2VEYXRhfSBwb3J0cmFpdCAyRCBpbWFnZSB0byBzaG93IG9uIHRoZSBsZWZ0LWhhbmQgc2lkZSBvZiB0aGUgZGlhbG9nIHdpbmRvdy4gVGhlIHN0cnVjdHVyZSBvZiBhbiBgSW1hZ2VEYXRhYCBvYmplY3QgaXMgZGVzY3JpYmVkIGluIGRldGFpbCBiZWxvdy5cbiAgICogQHByb3BlcnR5IHtudW1iZXJ9IHJlYWN0RGlzdGFuY2UgUmFkaXVzIGluIG1ldGVycyBmb3IgdGhlIHBsYXllciB0byBhY3RpdmF0ZSB0aGUgTlBDIG9yIHRyaWdnZXIgdGhlIGBvbldhbGtBd2F5KClgIGZ1bmN0aW9uIHdoZW4gbGVhdmluZyB0aGUgcmFkaXVzLlxuICAgKiBAcHJvcGVydHkge3N0cmluZ30gaWRsZUFuaW0gTmFtZSBvZiB0aGUgaWRsZSBhbmltYXRpb24gaW4gdGhlIG1vZGVsLiBUaGlzIGFuaW1hdGlvbiBpcyBhbHdheXMgbG9vcGVkLiBBZnRlciBwbGF5aW5nIGEgbm9uLWxvb3BpbmcgYW5pbWF0aW9uIGl0IHJldHVybnMgdG8gbG9vcGluZyB0aGlzIG9uZS5cbiAgICogQHByb3BlcnR5IHtib29sZWFufSBmYWNlVXNlciBTZXQgaWYgdGhlIE5QQyByb3RhdGVzIHRvIGZhY2UgdGhlIHVzZXIgd2hpbGUgYWN0aXZlLlxuICAgKiBAcHJvcGVydHkge2Jvb2xlYW59IG9ubHlFeHRlcm5hbFRyaWdnZXIgSWYgdHJ1ZSwgdGhlIE5QQyBjYW4ndCBiZSBhY3RpdmF0ZWQgYnkgY2xpY2tpbmcgb3Igd2Fsa2luZyBuZWFyLiBKdXN0IGJ5IGNhbGxpbmcgaXRzIGBhY3RpdmF0ZSgpYCBmdW5jdGlvbi5cbiAgICogQHByb3BlcnR5IHtib29sZWFufSBvbmx5Q2xpY2tUcmlnZ2VyIElmIHRydWUsIHRoZSBOUEMgY2FuJ3QgYmUgYWN0aXZhdGVkIGJ5IHdhbGtpbmcgbmVhci4gSnVzdCBieSBjbGlja2luZyBvbiBpdCBvciBjYWxsaW5nIGl0cyBgYWN0aXZhdGUoKWAgZnVuY3Rpb24uXG4gICAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gb25seUVUcmlnZ2VyIElmIHRydWUsIHRoZSBOUEMgY2FuJ3QgYmUgYWN0aXZhdGVkIGJ5IHdhbGtpbmcgbmVhci4gSnVzdCBieSBwcmVzc2luZyBFIG9uIGl0IG9yIGNhbGxpbmcgaXRzIGBhY3RpdmF0ZSgpYCBmdW5jdGlvbi5cbiAgICogQHByb3BlcnR5IHsoKSA9PiB2b2lkfSBvbldhbGtBd2F5IEZ1bmN0aW9uIHRvIGNhbGwgZXZlcnkgdGltZSB0aGUgcGxheWVyIHdhbGtzIG91dCBvZiB0aGUgYHJlYWN0RGlzdGFuY2VgIHJhZGl1cy5cbiAgICogQHByb3BlcnR5IHtib29sZWFufSBjb250aW51ZU9uV2Fsa0F3YXkgZiB0cnVlLHdoZW4gdGhlIHBsYXllciB3YWxrcyBvdXQgb2YgdGhlIGByZWFjdERpc3RhbmNlYCByYWRpdXMsIHRoZSBkaWFsb2cgd2luZG93IHN0YXlzIG9wZW4gYW5kIHRoZSBOUEMga2VlcHMgdHVybmluZyB0byBmYWNlIHRoZSBwbGF5ZXIgKGlmIGFwcGxpY2FibGUpLiBJdCBkb2Vzbid0IGFmZmVjdCB0aGUgdHJpZ2dlcmluZyBvZiB0aGUgYG9uV2Fsa0F3YXkoKWAgZnVuY3Rpb24uXG4gICAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZGFya1VJIElmIHRydWUsIHRoZSBkaWFsb2cgVUkgdXNlcyB0aGUgZGFyayB0aGVtZS5cbiAgICogQHByb3BlcnR5IHtudW1iZXJ9IGNvb2xEb3duRHVyYXRpb24gQ2hhbmdlIHRoZSBjb29sZG93biBwZXJpb2QgZm9yIGFjdGl2YXRpbmcgdGhlIE5QQyBhZ2Fpbi4gVGhlIG51bWJlciBpcyBpbiBzZWNvbmRzLlxuICAgKiBAcHJvcGVydHkge3N0cmluZ30gaG92ZXJUZXh0IFNldCB0aGUgVUkgaG92ZXIgZmVlZGJhY2sgd2hlbiBwb2ludGluZyB0aGUgY3Vyc29yIGF0IHRoZSBOUEMuIF9UQUxLXyBieSBkZWZhdWx0LlxuICAgKiBAcHJvcGVydHkge3N0cmluZ30gZGlhbG9nU291bmQgUGF0aCB0byBzb3VuZCBmaWxlIHRvIHBsYXkgb25jZSBmb3IgZXZlcnkgbGluZSBvZiBkaWFsb2cgcmVhZCBvbiB0aGUgVUkuXG4gICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB3YWxraW5nQW5pbSBBbmltYXRpb24gdG8gcGxheSB3aGVuIHdhbGtpbmcgd2l0aCBmb2xsb3dQYXRoXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB3YWxraW5nU3BlZWQgRGVmYXVsdCBzcGVlZCB0byB1c2Ugd2hlbiB3YWxraW5nIHdpdGggZm9sbG93UGF0aFxuICAgKiBAcHJvcGVydHkge1ZlY3RvcjNbXX0gcGF0aCBBcnJheSBvZiBWZWN0b3IzIHBvaW50cyByZXByZXNlbnRpbmcgdGhlIGRlZmF1bHQgcGF0aCB0byB3YWxrIG92ZXIuIFRoZSBOUEMgd2lsbCB3YWxrIGxvb3Bpbmcgb3ZlciB0aGVzZSBwb2ludHNcbiAgKiBAcHJvcGVydHkge2Jvb2xlYW59IHRleHRCdWJibGUgSWYgdHJ1ZSwgdGhlIE5QQyBjYW4gZGlzcGxheSB0ZXh0IGJ1YmJsZXMgd2l0aCBkaWFsb2dzXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBidWJibGVIZWlnaHQgVGhlIGRlZmF1bHQgaGVpZ2h0IHRvIGRpc3BsYXkgdGV4dCBidWJibGVzIG92ZXIgdGhlIE5QQydzIHBvc2l0aW9uXG4gICAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gbm9VSSBJZiB0cnVlLCBubyBVSSBkaWFsb2cgZWxlbWVudHMgYXJlIGNvbnN0cnVjdGVkLiBUaGUgTlBDIGNhbiB1c2Ugc3BlZWNoIGJ1YmJsZXMuXG4gICpcbiAgICovXG5cbiAgZXhwb3J0IHR5cGUgTlBDRGF0YSA9IHtcblxuICAgIHR5cGU6TlBDVHlwZVxuICAgIGJvZHk/Ok5QQ0JvZHlUeXBlXG4gICAgbW9kZWw/OnN0cmluZyB8IFBCR2x0ZkNvbnRhaW5lciB8IFBCQXZhdGFyU2hhcGVcblxuXG4gICAgd2Fsa2luZ0FuaW0/OnN0cmluZ1xuICAgIHBvcnRyYWl0Pzogc3RyaW5nIHwgSW1hZ2VEYXRhXG4gICAgcmVhY3REaXN0YW5jZT86IG51bWJlclxuICAgIGlkbGVBbmltPzogc3RyaW5nXG4gICAgZmFjZVVzZXI/OiBib29sZWFuXG4gICAgdHVybmluZ1NwZWVkPzogbnVtYmVyXG4gICAgb25seUV4dGVybmFsVHJpZ2dlcj86IGJvb2xlYW5cbiAgICBvbmx5Q2xpY2tUcmlnZ2VyPzogYm9vbGVhblxuICAgIG9ubHlFVHJpZ2dlcj86IGJvb2xlYW5cbiAgICBvbkFjdGl2YXRlOiAoKSA9PiB2b2lkXG4gICAgb25XYWxrQXdheT86ICgpID0+IHZvaWRcbiAgICBjb250aW51ZU9uV2Fsa0F3YXk/OiBib29sZWFuXG4gICAgZGFya1VJPzogYm9vbGVhblxuICAgIGNvb2xEb3duRHVyYXRpb24/OiBudW1iZXJcbiAgICBob3ZlclRleHQ/OiBzdHJpbmdcbiAgICBkaWFsb2dTb3VuZD86IHN0cmluZ1xuICAgIC8vZGlhbG9nQ3VzdG9tVGhlbWU/OiBUZXh0dXJlXG4gICAgdGV4dEJ1YmJsZT86IGJvb2xlYW5cbiAgICBidWJibGVIZWlnaHQ/OiBudW1iZXJcbiAgICBub1VJPzogYm9vbGVhblxuXG4gICAgcGF0aERhdGE/OkZvbGxvd1BhdGhEYXRhXG4gIH1cbiAgXG4gIC8qKlxuICAgKiBNYWtlIGFuIE5QQyB3YWxrIGZvbGxvd2luZyBhIHBhdGhcbiAgICpcbiAgICogQHR5cGVkZWYge09iamVjdH0gRm9sbG93UGF0aERhdGEgLSBPYmplY3Qgd2l0aCBkYXRhIHRvIGRlc2NyaWJlIGEgcGF0aCB0aGF0IGFuIE5QQyBjYW4gd2Fsa1xuICAgKiBAcHJvcGVydHkge1ZlY3RvcjNbXX0gcGF0aCBBcnJheSBvZiBgVmVjdG9yM2AgcG9zaXRpb25zIHRvIHdhbGsgb3Zlci5cbiAgICogQHByb3BlcnR5IHtudW1iZXJ9IHNwZWVkIFNwZWVkIHRvIG1vdmUgYXQgd2hpbGUgd2Fsa2luZyB0aGlzIHBhdGguIElmIG5vIGBzcGVlZGAgb3IgYHRvdGFsRHVyYXRpb25gIGlzIHByb3ZpZGVkLCBpdCB1c2VzIHRoZSBOUEMncyBgd2Fsa2luZ1NwZWVkYCwgd2hpY2ggaXMgXzJfIGJ5IGRlZmF1bHQuXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB0b3RhbER1cmF0aW9uIFRoZSBkdXJhdGlvbiBpbiBfc2Vjb25kc18gdGhhdCB0aGUgd2hvbGUgcGF0aCBzaG91bGQgdGFrZS4gVGhlIE5QQyB3aWxsIG1vdmUgYXQgdGhlIGNvbnN0YW50IHNwZWVkIHJlcXVpcmVkIHRvIGZpbmlzaCBpbiB0aGF0IHRpbWUuIFRoaXMgdmFsdWUgb3ZlcnJpZGVzIHRoYXQgb2YgdGhlIF9zcGVlZF8uXG4gICAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gbG9vcCBfYm9vbGVhbl8gSWYgdHJ1ZSwgdGhlIE5QQyB3YWxrcyBpbiBjaXJjbGVzIG92ZXIgdGhlIHByb3ZpZGVkIHNldCBvZiBwb2ludHMgaW4gdGhlIHBhdGguIF9mYWxzZV8gYnkgZGVmYXVsdCwgdW5sZXNzIHRoZSBOUEMgaXMgaW5pdGlhdGVkIHdpdGggYSBgcGF0aGAsIGluIHdoaWNoIGNhc2UgaXQgc3RhcnRzIGFzIF90cnVlXy5cbiAgICogQHByb3BlcnR5IHtib29sZWFufSBjdXJ2ZSBfYm9vbGVhbl8gSWYgdHJ1ZSwgdGhlIHBhdGggaXMgdHJhY2VkIGEgc2luZ2xlIHNtb290aCBjdXJ2ZSB0aGF0IHBhc3NlcyBvdmVyIGVhY2ggb2YgdGhlIGluZGljYXRlZCBwb2ludHMuIFRoZSBjdXJ2ZSBpcyBtYWRlIG91dCBvZiBzdHJhaWdodC1saW5lIHNlZ21lbnRzLCB0aGUgcGF0aCBpcyBzdG9yZWQgd2l0aCA0IHRpbWVzIGFzIG1hbnkgcG9pbnRzIGFzIG9yaWdpbmFsbHkgZGVmaW5lZC4gX2ZhbHNlXyBieSBkZWZhdWx0LlxuICAgKiBAcHJvcGVydHkge251bWJlcn0gc3RhcnRpbmdQb2ludCBJbmRleCBwb3NpdGlvbiBmb3Igd2hhdCBwb2ludCB0byBzdGFydCBmcm9tIG9uIHRoZSBwYXRoLiBfMF8gYnkgZGVmYXVsdC5cbiAgICogQHByb3BlcnR5IHsoKSA9PiB2b2lkfSBvbkZpbmlzaENhbGxiYWNrIEZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgTlBDIGZpbmlzaGVkIHdhbGtpbmcgb3ZlciBhbGwgdGhlIHBvaW50cyBvbiB0aGUgcGF0aC4gVGhpcyBpcyBvbmx5IGNhbGxlZCB3aGVuIGBsb29wYCBpcyBfZmFsc2VfLlxuICAgKiBAcHJvcGVydHkgeygpID0+IHZvaWR9IG9uUmVhY2hlZFBvaW50Q2FsbGJhY2sgRnVuY3Rpb24gdG8gY2FsbCBvbmNlIGV2ZXJ5IHRpbWUgdGhlIE5QQyByZWFjaGVzIGEgcG9pbnQgaW4gdGhlIHBhdGguXG4gICAqXG4gICAqL1xuICBleHBvcnQgdHlwZSBGb2xsb3dQYXRoRGF0YSA9IHtcbiAgICBzdGFydGluZ1BvaW50PzogbnVtYmVyXG4gICAgbG9vcD86IGJvb2xlYW5cbiAgICBjdXJ2ZT86IGJvb2xlYW5cbiAgICB0b3RhbER1cmF0aW9uOiBudW1iZXJcbiAgICBzcGVlZD86IG51bWJlclxuICAgIHBhdGg/OiBWZWN0b3IzW11cbiAgICBwYXRoVHlwZT86IE5QQ1BhdGhUeXBlXG4gICAgb25GaW5pc2hDYWxsYmFjaz86ICgpID0+IHZvaWRcbiAgICBvblJlYWNoZWRQb2ludENhbGxiYWNrPzogKCkgPT4gdm9pZFxuICB9XG4gIFxuICAvKipcbiAgICogQ3V0IG91dCBhIHNlY3Rpb24gb2YgYW4gaW1hZ2UgZmlsZVxuICAgKlxuICAgKiBAdHlwZWRlZiB7T2JqZWN0fSBJbWFnZVNlY3Rpb24gLSBPYmplY3Qgd2l0aCBkYXRhIHRvIG9ubHkgZGlzcGxheSBhIHNlY3Rpb24gb2YgYW4gaW1hZ2VcbiAgICogQHByb3BlcnR5IHtudW1iZXJ9IHNvdXJjZVdpZHRoIFdpZHRoIGluIHBpeGVscyB0byBzZWxlY3QgZnJvbSBpbWFnZSwgc3RhcnRpbmcgZnJvbSB0aGUgc291cmNlTGVmdCwgZ29pbmcgcmlnaHRcbiAgICogQHByb3BlcnR5IHtudW1iZXJ9IHNvdXJjZUhlaWdodCBIZWlnaHQgaW4gcGl4ZWxzIHRvIHNlbGVjdCBmcm9tIGltYWdlLCBzdGFydGluZyBmcm9tIHRoZSBzb3VyY2VUb3AsIGdvaW5nIGRvd25cbiAgICogQHByb3BlcnR5IHtudW1iZXJ9IHNvdXJjZUxlZnQgTGVmdG1vc3QgcGl4ZWwgdG8gc2VsZWN0IGZyb20gaW1hZ2VcbiAgICogQHByb3BlcnR5IHtudW1iZXJ9IHNvdXJjZVRvcCBUb3Btb3N0IHBpeGVsIHRvIHNlbGVjdCBmcm9tIGltYWdlXG4gICAqXG4gICAqL1xuICBleHBvcnQgdHlwZSBJbWFnZVNlY3Rpb24gPSB7XG4gICAgc291cmNlV2lkdGg6IG51bWJlclxuICAgIHNvdXJjZUhlaWdodDogbnVtYmVyXG4gICAgc291cmNlTGVmdD86IG51bWJlclxuICAgIHNvdXJjZVRvcD86IG51bWJlclxuICB9XG4gIFxuICAvKipcbiAgICpcbiAgICpcbiAgICogQHR5cGVkZWYge09iamVjdH0gSW1hZ2VEYXRhIC0gT2JqZWN0IHdpdGggZGF0YSBmb3IgZGlzcGxheWluZyBhbiBpbWFnZVxuICAgKiBAcHJvcGVydHkge3N0cmluZ30gcGF0aCBQYXRoIHRvIHRoZSBpbWFnZSBmaWxlLlxuICAgKiBAcHJvcGVydHkge251bWJlcn0gb2Zmc2V0WCBPZmZzZXQgb24gWCwgcmVsYXRpdmUgdG8gdGhlIG5vcm1hbCBwb3NpdGlvbiBvZiB0aGUgaW1hZ2UuXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBvZmZzZXRZIE9mZnNldCBvbiBZLCByZWxhdGl2ZSB0byB0aGUgbm9ybWFsIHBvc2l0aW9uIG9mIHRoZSBpbWFnZS5cbiAgICogQHByb3BlcnR5IHtudW1iZXJ9IGhlaWdodCBUaGUgaGVpZ2h0IHRvIHNob3cgdGhlIGltYWdlIG9uc2NyZWVuLlxuICAgKiBAcHJvcGVydHkge251bWJlcn0gd2lkdGggVGhlIHdpZHRoIHRvIHNob3cgdGhlIGltYWdlIG9uc2NyZWVuLlxuICAgKiBAcHJvcGVydHkge0ltYWdlU2VjdGlvbn0gc2VjdGlvbiBVc2Ugb25seSBhIHNlY3Rpb24gb2YgdGhlIGltYWdlIGZpbGUsIHVzZWZ1bCB3aGVuIGFycmFuZ2luZyBtdWx0aXBsZSBpY29ucyBpbnRvIGFuIGltYWdlIGF0bGFzLiBUaGlzIGZpZWxkIHRha2VzIGFuIGBJbWFnZVNlY3Rpb25gIG9iamVjdCwgc3BlY2lmeWluZyBgc291cmNlV2lkdGhgIGFuZCBgc291cmNlSGVpZ2h0YCwgYW5kIG9wdGlvbmFsbHkgYWxzbyBgc291cmNlTGVmdGAgYW5kIGBzb3VyY2VUb3BgLlxuICAgKlxuICAgKi9cbiAgZXhwb3J0IHR5cGUgSW1hZ2VEYXRhID0ge1xuICAgIHBhdGg6IHN0cmluZ1xuICAgIG9mZnNldFg/OiBudW1iZXJcbiAgICBvZmZzZXRZPzogbnVtYmVyXG4gICAgaGVpZ2h0PzogbnVtYmVyXG4gICAgd2lkdGg/OiBudW1iZXJcbiAgICBzZWN0aW9uPzogSW1hZ2VTZWN0aW9uXG4gIH1cbiAgXG4gIGV4cG9ydCBlbnVtIE5QQ1N0YXRlIHtcbiAgICBTVEFORElORyA9ICdzdGFuZGluZycsXG4gICAgVEFMS0lORyA9ICd0YWxraW5nJyxcbiAgICBGT0xMT1dQQVRIID0gJ2ZvbGxvd1BhdGgnXG4gICAgLy9GT0xMT1dQTEFZRVIgPSAnZm9sbG93UGxheWVyJ1xuICB9XG5cbiAgZXhwb3J0IGVudW0gTlBDQm9keVR5cGUge1xuICAgIE1BTEU9IFwiQmFzZU1hbGVcIixcbiAgICBGRU1BTEU9IFwiQmFzZUZlbWFsZVwiXG4gIH1cblxuICBleHBvcnQgZW51bSBOUENUeXBlIHtcbiAgICBCTEFOSyA9IFwiYmxhbmtcIixcbiAgICBDVVNUT00gPSBcImN1c3RvbVwiLFxuICAgIEFWQVRBUiA9ICdhdmF0YXInXG4gIH1cbiAgXG4gIFxuICBleHBvcnQgZW51bSBOUENQYXRoVHlwZSB7XG4gICAgU01PT1RIX1BBVEggPSAnc21vb3RoJywgLy93aWxsIGZvbGxvdyB0aGUgcGF0aCBidXQgY2FuIGN1dCBzaGFycCBjb3JuZXJzXG4gICAgUklHSURfUEFUSCA9ICdyaWdpZCcsIC8vd2lsbCBlbnN1cmUgZWFjaCBjb3JuZXIgaXMgaGl0XG4gIH1cbiAgIl19
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dcl-npc-toolkit",
|
|
3
|
-
"version": "1.1.2-
|
|
3
|
+
"version": "1.1.2-20230606173914.commit-599f64e",
|
|
4
4
|
"description": "A collection of tools for creating Non-Player-Characters (NPCs). These are capable of having conversations with the player, and play different animations.",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"typings": "./dist/index.d.ts",
|
|
@@ -33,5 +33,5 @@
|
|
|
33
33
|
"files": [
|
|
34
34
|
"dist"
|
|
35
35
|
],
|
|
36
|
-
"commit": "
|
|
36
|
+
"commit": "599f64e57c7796ab367bc37cdfbbcf7e71ef5ad3"
|
|
37
37
|
}
|