dcl-npc-toolkit 1.1.2-20230605195454.commit-2733b0c → 1.1.2-20230607201542.commit-694c6e0

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 CHANGED
@@ -64,6 +64,7 @@ export function addDialog(npc, sound, defaultPortrait) {
64
64
  displayPortrait: defaultPortrait ? true : false,
65
65
  defaultPortrait: defaultPortrait ? defaultPortrait : null,
66
66
  defaultPortraitTexture: defaultPortrait ? defaultPortrait.path : lightTheme,
67
+ currentPortrait: defaultPortrait ? defaultPortrait.path : lightTheme,
67
68
  portraitWidth: defaultPortrait && defaultPortrait.width ? defaultPortrait.width * UIscaleMultiplier : portraitScale,
68
69
  portraitHeight: defaultPortrait && defaultPortrait.height ? defaultPortrait.height * UIscaleMultiplier : portraitScale,
69
70
  portraitX: defaultPortrait && defaultPortrait.offsetX ? defaultPortrait.offsetX * UIscaleMultiplier + portraitXPos : portraitXPos,
@@ -120,7 +121,7 @@ export function imageHeight() {
120
121
  return activeNPC == 0 || !npcDialogComponent.has(activeNPC) ? "" : npcDialogComponent.get(activeNPC).imageHeight;
121
122
  }
122
123
  export function getPortrait() {
123
- return activeNPC == 0 || !npcDialogComponent.has(activeNPC) ? "" : npcDialogComponent.get(activeNPC).defaultPortraitTexture;
124
+ return activeNPC == 0 || !npcDialogComponent.has(activeNPC) ? "" : npcDialogComponent.get(activeNPC).currentPortrait;
124
125
  }
125
126
  export function getImage() {
126
127
  return activeNPC == 0 || !npcDialogComponent.has(activeNPC) ? "" : npcDialogComponent.get(activeNPC).dialogImageTexture;
@@ -256,7 +257,7 @@ function beginTyping(npc) {
256
257
  dialogData.skipable = false;
257
258
  let currentText = dialogData.script[dialogData.index] ? dialogData.script[dialogData.index] : { text: '' };
258
259
  if (currentText.portrait) {
259
- dialogData.defaultPortraitTexture = currentText.portrait.path;
260
+ dialogData.currentPortrait = currentText.portrait.path;
260
261
  dialogData.portraitX = currentText.portrait.offsetX
261
262
  ? currentText.portrait.offsetX * UIscaleMultiplier + portraitXPos
262
263
  : portraitXPos;
@@ -268,6 +269,7 @@ function beginTyping(npc) {
268
269
  dialogData.displayPortrait = true;
269
270
  }
270
271
  else if (dialogData.defaultPortrait) {
272
+ dialogData.currentPortrait = dialogData.defaultPortraitTexture;
271
273
  dialogData.displayPortrait = true;
272
274
  }
273
275
  else {
@@ -470,4 +472,4 @@ export function findDialogByName(dialogs, name) {
470
472
  }
471
473
  return 0;
472
474
  }
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
475
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2RpYWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssS0FBSyxNQUFNLGdCQUFnQixDQUFBO0FBRXZDLE9BQU8sRUFBRSxXQUFXLEVBQVUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFjLGdCQUFnQixFQUFZLFdBQVcsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNwSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTlDLE9BQU8sRUFBcUIsUUFBUSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hJLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3ZDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFxQixJQUFJLEdBQUcsRUFBRSxDQUFBO0FBQzdELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFxQixJQUFJLEdBQUcsRUFBRSxDQUFBO0FBQ2pFLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFvQixJQUFJLEdBQUcsRUFBRSxDQUFBO0FBRWhFLE1BQU0sQ0FBTixJQUFZLFdBTVQ7QUFOSCxXQUFZLFdBQVc7SUFDbkIsbURBQVcsQ0FBQTtJQUNYLGlEQUFVLENBQUE7SUFDViw2Q0FBUSxDQUFBO0lBQ1IsbURBQVcsQ0FBQTtJQUNYLG1EQUFXLENBQUE7QUFDYixDQUFDLEVBTlMsV0FBVyxLQUFYLFdBQVcsUUFNcEI7QUFFSCxNQUFNLENBQUMsSUFBSSxpQkFBaUIsR0FBRyxJQUFJLENB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RUQsVUFBVSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBO0lBQzVDLElBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFDO1FBQzVDLFVBQVUsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFBO0tBQ3JFO0lBRUQsSUFBRyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUM7UUFDOUMsVUFBVSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUE7S0FDM0I7U0FDRztRQUNGLFVBQVUsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFBO0tBQzVCO0lBRUQsSUFBRyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUM7UUFDM0MsVUFBVSxDQUFDLGtCQUFrQixHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUE7UUFDOUUsVUFBVSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7UUFDL0osVUFBVSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFL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ckMsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQTtBQUM1QyxDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxNQUFjO0lBQ3ZDLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUE7QUFDL0MsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxPQUFpQixFQUFFLElBQVk7SUFDOUQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDdkMsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxFQUFFO1lBQzlDLE9BQU8sQ0FBQyxDQUFBO1NBQ1Q7S0FDRjtJQUNELE9BQU8sQ0FBQyxDQUFBO0FBQ1YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0aWxzIGZyb20gJ0BkY2wtc2RrL3V0aWxzJ1xuXG5pbXBvcnQgeyBBdWRpb1NvdXJjZSwgRW50aXR5LCBlbmdpbmUgfSBmcm9tIFwiQGRjbC9zZGsvZWNzXCI7XG5pbXBvcnQgeyBhY3RpdmVOUEMsIGNsZWFyTlBDLCBjbG9zZURpYWxvZ1dpbmRvdywgZm9sbG93UGF0aCwgbnBjRGF0YUNvbXBvbmVudCwgc3RvcFBhdGgsIHN0b3BXYWxraW5nIH0gZnJvbSBcIi4vbnBjXCI7XG5pbXBvcnQgeyBJc1R5cGluZ0RpYWxvZyB9IGZyb20gXCIuL2NvbXBvbmVudHNcIjtcbmltcG9ydCB7IGhhbmRsZURpYWxvZ1R5cGluZyB9IGZyb20gXCIuL3N5c3RlbXNcIjtcbmltcG9ydCB7IERpYWxvZywgSW1hZ2VEYXRhLCBOUENTdGF0ZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBsZWZ0Q2xpY2tTZWN0aW9uLCBsZWZ0Q2xpY2tTZWN0aW9uYkJsYWNrLCBsaWdodFRoZW1lLCBzZWN0aW9uLCBza2lwQnV0dG9uU2VjdGlvbiwgc2tpcEJ1dHRvblNlY3Rpb25CbGFjayB9IGZyb20gJy4vdWknO1xuaW1wb3J0IHsgZ2V0QnViYmxlVGV4dExlbmd0aCB9IGZyb20gJy4vYnViYmxlJztcbmltcG9ydCB7IENvbG9yNCB9IGZyb20gJ0BkY2wvc2RrL21hdGgnO1xuXG5cbmV4cG9ydCBjb25zdCBucGNEaWFsb2dDb21wb25lbnQ6IE1hcDxFbnRpdHksIGFueT4gPSBuZXcgTWFwKClcbmV4cG9ydCBjb25zdCBucGNEaWFsb2dUeXBpbmdTeXN0ZW1zOiBNYXA8RW50aXR5LCBhbnk+ID0gbmV3IE1hcCgpXG5leHBvcnQgY29uc3QgbnBjRGlhbG9nSW5wdXRMaXN0ZW5lcjogTWFwPEVudGl0eSxhbnk+ID0gbmV3IE1hcCgpXG5cbmV4cG9ydCBlbnVtIENvbmZpcm1Nb2RlIHtcbiAgICBDb25maXJtID0gMCxcbiAgICBDYW5jZWwgPSAxLFxuICAgIE5leHQgPSAyLFxuICAgIEJ1dHRvbjMgPSAzLFxuICAgIEJ1dHRvbjQgPSA0XG4gIH1cblxuZXhwb3J0IGxldCBVSXNjYWxlTXVsdGlwbGllciA9IDAuNzVcblxubGV0IHBvcnRyYWl0WFBvcyA9IC01MCAqIFVJc2NhbGVNdWx0aXBsaWVyIFxubGV0IHBvcnRyYWl0WVBvcyA9IDIwICogVUlzY2FsZU11bHRpcGxpZXJcblxubGV0IGltYWdlWFBvcyA9IDM1MCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgaW1hZ2VZUG9zID0gNTAgKiBVSXNjYWxlTXVsdGlwbGllclxuXG5sZXQgcG9ydHJhaXRTY2FsZSA9IDI1NiAqIFVJc2NhbGVNdWx0aXBsaWVyIFxubGV0IGltYWdlU2NhbGUgPSAyNTYgKiBVSXNjYWxlTXVsdGlwbGllciBcblxubGV0IHRleHRTaXplID0gMjQgKiBVSXNjYWxlTXVsdGlwbGllclxubGV0IHRleHRZUG9zID0gMTAgKiBVSXNjYWxlTXVsdGlwbGllclxuXG5sZXQgYnV0dG9uV2lkdGggPSAxNzQqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgYnV0dG9uSGVpZ2h0ID0gNDYqIFVJc2NhbGVNdWx0aXBsaWVyXG5cblxubGV0IGJ1dHRvblRleHRTaXplID0gMjAgKiBVSXNjYWxlTXVsdGlwbGllclxuXG5sZXQgYnV0dG9uMVhQb3MgPSAxNTAgKiBVSXNjYWxlTXVsdGlwbGllclxubGV0IGJ1dHRvbjJYUG9zID0gLTgwICogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBidXR0b24zWFBvcyA9IC04MCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgYnV0dG9uNFhQb3MgPSAxNTAgKiBVSXNjYWxlTXVsdGlwbGllclxuXG5sZXQgYnV0dG9uMVlQb3MgPSAtNjUgKiBVSXNjYWxlTXVsdGlwbGllclxubGV0IGJ1dHRvbjJZUG9zID0gLTY1ICogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBidXR0b24xWVBvczQgPSAtMjAgKiBVSXNjYWxlTXVsdGlwbGllclxubGV0IGJ1dHRvbjJZUG9zNCA9IC0yMCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgYnV0dG9uM1lQb3MgPSAtODAgKiBVSXNjYWxlTXVsdGlwbGllclxubGV0IGJ1dHRvbjRZUG9zID0gLTgwICogVUlzY2FsZU11bHRpcGxpZXJcblxubGV0IHNraXBCdXR0b25YUG9zID0gLTMwMCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgc2tpcEJ1dHRvbllQb3MgPSAtMTAwICogVUlzY2FsZU11bHRpcGxpZXJcblxubGV0IGJ1dHRvbkljb25XaWR0aCA9IDI2ICogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBidXR0b25JY29uSGVpZ2h0ID0gMjYgKiBVSXNjYWxlTXVsdGlwbGllclxuXG5leHBvcnQgZnVuY3Rpb24gYWRkRGlhbG9nKG5wYzpFbnRpdHksIHNvdW5kPzpzdHJpbmcsIGRlZmF1bHRQb3J0cmFpdD86SW1hZ2VEYXRhKXtcbiAgICBjb25zb2xlLmxvZygnYWRkaW5nIGRpYWxvZyBmb3IgbnBjJywgbnBjKVxuICAgIG5wY0RpYWxvZ0NvbXBvbmVudC5zZXQobnBjLCB7XG4gICAgICAgIHR5cGluZzp0cnVlLFxuICAgICAgICB2aXNpYmxlOmZhbHNlLFxuICAgICAgICB2aXNpYmxlVGV4dDpcIlwiLFxuICAgICAgICB2aXNpYmxlQ2hhcnM6MCxcbiAgICAgICAgZnVsbFRleHQ6XCJcIixcbiAgICAgICAgdGltZXI6MCxcbiAgICAgICAgc3BlZWQ6MzAsXG4gICAgICAgIG9yaWdpbmFsU2NyaXB0OltdLFxuICAgICAgICBzY3JpcHQ6W10sXG4gICAgICAgIGluZGV4OjAsXG4gICAgICAgIHNvdW5kOiBzb3VuZCA/IHNvdW5kIDogdW5kZWZpbmVkLFxuICAgICAgICBzb3VuZFBsYXllcjogc291bmQgPyBlbmdpbmUuYWRkRW50aXR5KCkgOiB1bmRlZmluZWQsXG4gICAgICAgIGZvbnRTaXplOjIyLFxuICAgICAgICBpc1F1ZXN0aW9uOmZhbHNlLFxuICAgICAgICBidXR0b25zOjAsXG4gICAgICAgIGRpc3BsYXlQb3J0cmFpdDogZGVmYXVsdFBvcnRyYWl0ID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0UG9ydHJhaXQ6IGRlZmF1bHRQb3J0cmFpdCA/IGRlZmF1bHRQb3J0cmFpdCA6IG51bGwsXG4gICAgICAgIGRlZmF1bHRQb3J0cmFpdFRleHR1cmU6IGRlZmF1bHRQb3J0cmFpdCA/IGRlZmF1bHRQb3J0cmFpdC5wYXRoIDogbGlnaHRUaGVtZSxcbiAgICAgICAgY3VycmVudFBvcnRyYWl0OiBkZWZhdWx0UG9ydHJhaXQgPyBkZWZhdWx0UG9ydHJhaXQucGF0aCA6IGxpZ2h0VGhlbWUsXG4gICAgICAgIHBvcnRyYWl0V2lkdGg6IGRlZmF1bHRQb3J0cmFpdCAmJiBkZWZhdWx0UG9ydHJhaXQud2lkdGggPyBkZWZhdWx0UG9ydHJhaXQud2lkdGggKiBVSXNjYWxlTXVsdGlwbGllciA6IHBvcnRyYWl0U2NhbGUsXG4gICAgICAgIHBvcnRyYWl0SGVpZ2h0OiBkZWZhdWx0UG9ydHJhaXQgJiYgZGVmYXVsdFBvcnRyYWl0LmhlaWdodCA/IGRlZmF1bHRQb3J0cmFpdC5oZWlnaHQgKiBVSXNjYWxlTXVsdGlwbGllciA6IHBvcnRyYWl0U2NhbGUsXG4gICAgICAgIHBvcnRyYWl0WDogZGVmYXVsdFBvcnRyYWl0ICYmIGRlZmF1bHRQb3J0cmFpdC5vZmZzZXRYID8gZGVmYXVsdFBvcnRyYWl0Lm9mZnNldFggKiBVSXNjYWxlTXVsdGlwbGllciArIHBvcnRyYWl0WFBvcyA6IHBvcnRyYWl0WFBvcyxcbiAgICAgICAgcG9ydHJhaXRZOiAgZGVmYXVsdFBvcnRyYWl0ICYmIGRlZmF1bHRQb3J0cmFpdC5vZmZzZXRZID8gZGVmYXVsdFBvcnRyYWl0Lm9mZnNldFkgKiBVSXNjYWxlTXVsdGlwbGllciArIHBvcnRyYWl0WVBvcyA6IHBvcnRyYWl0WVBvcyxcbiAgICAgICAgcG9ydGFpdFNIZWlnaHQ6IGRlZmF1bHRQb3J0cmFpdCAmJiBkZWZhdWx0UG9ydHJhaXQuc2VjdGlvbiAmJiBkZWZhdWx0UG9ydHJhaXQuc2VjdGlvbi5zb3VyY2VIZWlnaHQgPyBkZWZhdWx0UG9ydHJhaXQuc2VjdGlvbi5zb3VyY2VIZWlnaHQgOiAyNTYsXG4gICAgICAgIHBvcnRyYWl0U1dpZHRoOiBkZWZhdWx0UG9ydHJhaXQgJiYgZGVmYXVsdFBvcnRyYWl0LnNlY3Rpb24gJiYgZGVmYXVsdFBvcnRyYWl0LnNlY3Rpb24uc291cmNlV2lkdGggPyBkZWZhdWx0UG9ydHJhaXQuc2VjdGlvbi5zb3VyY2VXaWR0aCA6IDI1NixcbiAgICAgICAgcG9ydGFpdFNUb3A6IGRlZmF1bHRQb3J0cmFpdCAmJiBkZWZhdWx0UG9ydHJhaXQuc2VjdGlvbiAmJiBkZWZhdWx0UG9ydHJhaXQuc2VjdGlvbi5zb3VyY2VUb3AgPyBkZWZhdWx0UG9ydHJhaXQuc2VjdGlvbi5zb3VyY2VUb3AgOiAwLFxuICAgICAgICBwb3J0cmFpdFNMZWZ0OiBkZWZhdWx0UG9ydHJhaXQgJiYgZGVmYXVsdFBvcnRyYWl0LnNlY3Rpb24gJiYgZGVmYXVsdFBvcnRyYWl0LnNlY3Rpb24uc291cmNlTGVmdCA/IGRlZmF1bHRQb3J0cmFpdC5zZWN0aW9uLnNvdXJjZUxlZnQgOiAwXG4gICAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3BsYXlJbWFnZSgpe1xuICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyBmYWxzZSA6IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkuZGlzcGxheUltYWdlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXNwbGF5UG9ydHJhaXQoKXtcbiAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gZmFsc2UgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLmRpc3BsYXlQb3J0cmFpdFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGxheVNraXBhYmxlKCl7XG4gIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IGZhbHNlIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5za2lwYWJsZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2tpcGFibGVUaGVtZSgpe1xuICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyBza2lwQnV0dG9uU2VjdGlvbkJsYWNrIDogbnBjRGF0YUNvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkudGhlbWUgPT0gbGlnaHRUaGVtZSA/IHNraXBCdXR0b25TZWN0aW9uQmxhY2sgOiBza2lwQnV0dG9uU2VjdGlvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGVmdENsaWNrVGhlbWUoKXtcbiAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gbGVmdENsaWNrU2VjdGlvbiA6IG5wY0RhdGFDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLnRoZW1lID09IGxpZ2h0VGhlbWUgPyBsZWZ0Q2xpY2tTZWN0aW9uIDogbGVmdENsaWNrU2VjdGlvbmJCbGFja1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9zaXRpb25UZXh0WCgpe1xuICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyBcIlwiIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5wb3NpdGlvblhcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvc2l0aW9uVGV4dFkoKXtcbiAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gXCJcIiA6IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkucG9zaXRpb25ZXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3NpdGlvblBvcnRhaXRYKCl7XG4gIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLnBvcnRyYWl0WFxufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9zaXRpb25Qb3J0YWl0WSgpe1xuICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyBcIlwiIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5wb3J0cmFpdFlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvcnRyYWl0V2lkdGgoKXtcbiAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gXCJcIiA6IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkucG9ydHJhaXRXaWR0aFxufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9ydHJhaXRIZWlnaHQoKXtcbiAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gXCJcIiA6IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkucG9ydHJhaXRIZWlnaHRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvc2l0aW9uSW1hZ2VYKCl7XG4gIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLmltYWdlWFxufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9zaXRpb25JbWFnZVkoKXtcbiAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gXCJcIiA6IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkuaW1hZ2VZXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbWFnZVdpZHRoKCl7XG4gIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLmltYWdlV2lkdGhcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGltYWdlSGVpZ2h0KCl7XG4gIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLmltYWdlSGVpZ2h0XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQb3J0cmFpdCgpe1xuICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyBcIlwiIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5jdXJyZW50UG9ydHJhaXRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEltYWdlKCl7XG4gIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLmRpYWxvZ0ltYWdlVGV4dHVyZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGV4dCgpe1xuICAgIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLnZpc2libGVUZXh0XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZXh0Q29sb3IoKXtcbiAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gQ29sb3I0LkJsYWNrKCkgOiBucGNEYXRhQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS50aGVtZSA9PSBsaWdodFRoZW1lID8gQ29sb3I0LkJsYWNrKCkgOiBDb2xvcjQuV2hpdGUoKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGhlbWUoKXtcbiAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gbGlnaHRUaGVtZSA6IG5wY0RhdGFDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLnRoZW1lXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRCdXR0b25UZXh0KGJ1dHRvbjpudW1iZXIpe1xuICAgIGxldCB0ZXh0ID0gXCJcIlxuXG4gICAgaWYoYWN0aXZlTlBDICE9IDAgJiYgbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSl7XG4gICAgICAgIGxldCBkaWFsb2dEYXRhID0gbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KVxuICAgICAgICBpZihkaWFsb2dEYXRhLmlzUXVlc3Rpb24gJiYgZGlhbG9nRGF0YS5idXR0b25zID4gYnV0dG9uKXtcbiAgICAgICAgICAgIHRleHQgPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5idXR0b25zW2J1dHRvbl0ubGFiZWxcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGV4dFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9udFNpemUoKXtcbiAgICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyAyMiA6IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkuZm9udFNpemVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3BsYXlEaWFsb2coKXtcbiAgICByZXR1cm4gYWN0aXZlTlBDID09IDAgfHwgIW5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDIGFzIEVudGl0eSkgPyBmYWxzZSA6ICBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLnZpc2libGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3BsYXlCdXR0b24oYnV0dG9uOm51bWJlcil7XG4gICAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8gZmFsc2UgOiAgbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMgYXMgRW50aXR5KS5pc1F1ZXN0aW9uICYmIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkuYnV0dG9ucyA+PSBidXR0b25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3BsYXlGaXJzdEJ1dHRvbkNvbnRhaW5lcigpe1xuICAgIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IGZhbHNlIDogIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkuaXNRdWVzdGlvbiAmJiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLmJ1dHRvbnMgPj0gMVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGxheVNlY29uZEJ1dHRvbkNvbnRhaW5lcigpe1xuICAgIHJldHVybiBhY3RpdmVOUEMgPT0gMCB8fCAhbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMgYXMgRW50aXR5KSA/IGZhbHNlIDogIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkuaXNRdWVzdGlvbiAmJiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLmJ1dHRvbnMgPj0gM1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGV4dFBvc2l0aW9uKCl7XG4gICAgLy9jb25zb2xlLmxvZyhucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLmJ1dHRvbnMpXG4gICAgcmV0dXJuIGFjdGl2ZU5QQyA9PSAwIHx8ICFucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpID8ge3RvcDowLCBsZWZ0OjB9IDoge3RvcDpucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLm1hcmdpbiArIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDIGFzIEVudGl0eSkucG9zaXRpb25ZLCBsZWZ0OiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyBhcyBFbnRpdHkpLnBvc2l0aW9uWH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1dHRvbkNsaWNrKGJ1dHRvbjpudW1iZXIpe1xuICAgIGlmKGFjdGl2ZU5QQyAhPSAwICYmIG5wY0RhdGFDb21wb25lbnQuaGFzKGFjdGl2ZU5QQyBhcyBFbnRpdHkpKXtcbiAgICAgICAgY29uZmlybVRleHQoYWN0aXZlTlBDIGFzIEVudGl0eSwgYnV0dG9uKVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsb3NlRGlhbG9nKG5wYzpFbnRpdHkpe1xuICAgIGxldCBkaWFsb2dEYXRhID0gbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpXG4gICAgZGlhbG9nRGF0YS52aXNpYmxlID0gZmFsc2VcbiAgICBkaWFsb2dEYXRhLnR5cGluZyA9IGZhbHNlXG4gICAgZGlhbG9nRGF0YS52aXNpYmxlVGV4dCA9IFwiXCJcbiAgICBkaWFsb2dEYXRhLnZpc2libGVDaGFycyA9IDBcbiAgICBkaWFsb2dEYXRhLmZ1bGxUZXh0ID0gXCJcIlxuICAgIGRpYWxvZ0RhdGEudGltZXIgPSAwXG4gICAgZGlhbG9nRGF0YS5pbmRleCA9IDBcbiAgICBkaWFsb2dEYXRhLnNjcmlwdC5sZW5ndGggPSAwXG4gICAgZGlhbG9nRGF0YS5idXR0b25zID0gMFxuICAgIGRpYWxvZ0RhdGEubWFyZ2luID0gMFxuICAgIGRpYWxvZ0RhdGEuZGlzcGxheVBvcnRyYWl0ID0gZmFsc2VcbiAgICBkaWFsb2dEYXRhLnNraXBhYmxlID0gZmFsc2VcbiAgICBkaWFsb2dEYXRhLmRpc3BsYXlJbWFnZSA9IGZhbHNlXG4gICAgY29uc29sZS5sb2coJ2RpYWxvZyBkYXRhIGlzIG5vdyAnLCBkaWFsb2dEYXRhKVxuXG4gICAgaWYoSXNUeXBpbmdEaWFsb2cuaGFzKG5wYykpe1xuICAgICAgSXNUeXBpbmdEaWFsb2cuZGVsZXRlRnJvbShucGMpXG4gICAgfVxuICAgIC8vIGlmKG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykubWFudWFsU3RvcCl7XG4gICAgLy8gICBjb25zb2xlLmxvZygnZGlhbG9nIGVuZGVkLCBuZWVkdG8gd2FsayBhZ2FpbicpXG4gICAgLy8gICBmb2xsb3dQYXRoKG5wYylcbiAgICAvLyB9XG4gICAgY2xlYXJOUEMoKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFsayhucGM6RW50aXR5LCBkaWFsb2c6RGlhbG9nW10sIHN0YXJ0SW5kZXg/Om51bWJlciB8IHN0cmluZywgZHVyYXRpb24/Om51bWJlcil7XG4gICAgbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS5pbnRyb2R1Y2VkID0gdHJ1ZVxuICAgIGlmKG5wY0RpYWxvZ0NvbXBvbmVudC5oYXMobnBjKSl7XG5cbiAgICAgICAgaWYobnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS5zdGF0ZSA9PSBOUENTdGF0ZS5GT0xMT1dQQVRIKXtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcInNwZWFraW5nIGRpYWxvZywgbmVlZCB0byBzdG9wIHBhdGhcIilcbiAgICAgICAgICBzdG9wV2Fsa2luZyhucGMpXG4gICAgICAgIH1cblxuICAgICAgICBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLnN0YXRlID0gTlBDU3RhdGUuVEFMS0lOR1xuXG5cbiAgICAgICAgbGV0IGluZGV4OmFueVxuXG4gICAgICAgIGlmICghc3RhcnRJbmRleCkge1xuICAgICAgICAgIGluZGV4ID0gMFxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBzdGFydEluZGV4ID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIGluZGV4ID0gc3RhcnRJbmRleFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGluZGV4ID0gZmluZERpYWxvZ0J5TmFtZShkaWFsb2csIHN0YXJ0SW5kZXgpXG4gICAgICAgIH1cblxuICAgICAgICBvcGVuRGlhbG9nKG5wYyxkaWFsb2csIGluZGV4KVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9wZW5EaWFsb2cobnBjOkVudGl0eSwgZGlhbG9nOkRpYWxvZ1tdLCBzdGFydEluZGV4Om51bWJlcil7XG4gICAgY29uc29sZS5sb2coJ3NjcmlwdCB0byB0YWxrIGlzJywgZGlhbG9nKVxuICAgIGxldCBkaWFsb2dEYXRhID0gbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpXG4gICAgZGlhbG9nRGF0YS5zY3JpcHQgPSBkaWFsb2cuc2xpY2UoKVxuICAgIGRpYWxvZ0RhdGEuaW5kZXggPSBzdGFydEluZGV4XG5cbiAgICBjb25zb2xlLmxvZygnZGlhbG9nIGRhdGEgaXMgbm93JywgZGlhbG9nRGF0YSlcbiAgICBcbiAgICBsZXQgY3VycmVudFRleHQ6IERpYWxvZyA9IGRpYWxvZ1tzdGFydEluZGV4XSA/IGRpYWxvZ1tzdGFydEluZGV4XSA6IHsgdGV4dDogJycgfVxuXG4gICAgaWYgKGN1cnJlbnRUZXh0LmF1ZGlvKSB7XG4gICAgICAgIEF1ZGlvU291cmNlLmNyZWF0ZU9yUmVwbGFjZShkaWFsb2dEYXRhLnNvdW5kUGxheWVyLCB7XG4gICAgICAgICAgICBhdWRpb0NsaXBVcmw6IGN1cnJlbnRUZXh0LmF1ZGlvLFxuICAgICAgICAgICAgbG9vcDogZmFsc2UsXG4gICAgICAgICAgICBwbGF5aW5nOiBmYWxzZVxuICAgICAgICB9KVxuICAgICAgICBsZXQgYXVkaW8gPSBBdWRpb1NvdXJjZS5nZXRNdXRhYmxlKGRpYWxvZ0RhdGEuc291bmRQbGF5ZXIpXG4gICAgICAgIGF1ZGlvLnZvbHVtZSA9IDAuNVxuICAgICAgICBhdWRpby5wbGF5aW5nID0gdHJ1ZVxuICAgIH0gZWxzZSBpZiAoZGlhbG9nRGF0YS5zb3VuZCkge1xuICAgICAgICBBdWRpb1NvdXJjZS5jcmVhdGVPclJlcGxhY2UoZGlhbG9nRGF0YS5zb3VuZFBsYXllciwge1xuICAgICAgICAgICAgYXVkaW9DbGlwVXJsOiBkaWFsb2dEYXRhLnNvdW5kLFxuICAgICAgICAgICAgbG9vcDogZmFsc2UsXG4gICAgICAgICAgICBwbGF5aW5nOiBmYWxzZVxuICAgICAgICB9KVxuICAgICAgICBsZXQgYXVkaW8gPSBBdWRpb1NvdXJjZS5nZXRNdXRhYmxlKGRpYWxvZ0RhdGEuc291bmRQbGF5ZXIpXG4gICAgICAgIGF1ZGlvLnZvbHVtZSA9IDAuNVxuICAgICAgICBhdWRpby5wbGF5aW5nID0gdHJ1ZVxuICAgIH1cblxuICAgIC8vVE9ET1xuICAgIC8vc2V0IGltYWdlIG9uIHRoZSByaWdodFxuICAgIC8vc2V0IHRleHRcbiAgICBiZWdpblR5cGluZyhucGMpXG59IFxuXG5leHBvcnQgZnVuY3Rpb24gYWRkTGluZUJyZWFrKHRleHQ6c3RyaW5nLCBidWJibGU/OmJvb2xlYW4pe1xuICByZXR1cm4gbGluZUJyZWFrKHRleHQsIGJ1YmJsZT8gZ2V0QnViYmxlVGV4dExlbmd0aCh0ZXh0KSEgOiA0NSlcbn1cblxuZnVuY3Rpb24gYmVnaW5UeXBpbmcobnBjOkVudGl0eSl7XG4gICAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYylcbiAgICBkaWFsb2dEYXRhLmZ1bGxUZXh0ID0gYWRkTGluZUJyZWFrKGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLnRleHQpIC8vZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0udGV4dFxuICAgIGRpYWxvZ0RhdGEudmlzaWJsZSA9IHRydWVcbiAgICBkaWFsb2dEYXRhLnR5cGluZyA9IHRydWVcbiAgICBkaWFsb2dEYXRhLnZpc2libGVUZXh0ID0gXCJcIlxuICAgIGRpYWxvZ0RhdGEudmlzaWJsZUNoYXJzID0gMFxuICAgIGRpYWxvZ0RhdGEudGltZXIgPSAwXG4gICAgZGlhbG9nRGF0YS5pc1F1ZXN0aW9uID0gZmFsc2VcbiAgICBkaWFsb2dEYXRhLmJ1dHRvbnMgPSAwXG4gICAgZGlhbG9nRGF0YS5kaXNwbGF5UG9ydHJhaXQgPSBmYWxzZVxuICAgIGRpYWxvZ0RhdGEuZGlzcGxheUltYWdlID0gZmFsc2VcbiAgICBkaWFsb2dEYXRhLnNraXBhYmxlID0gZmFsc2VcblxuICAgIGxldCBjdXJyZW50VGV4dDogRGlhbG9nID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0gPyBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XSA6IHsgdGV4dDogJycgfVxuICAgIGlmKGN1cnJlbnRUZXh0LnBvcnRyYWl0KXtcbiAgICAgIGRpYWxvZ0RhdGEuY3VycmVudFBvcnRyYWl0ID0gY3VycmVudFRleHQucG9ydHJhaXQucGF0aFxuXG4gICAgICBkaWFsb2dEYXRhLnBvcnRyYWl0WCA9IGN1cnJlbnRUZXh0LnBvcnRyYWl0Lm9mZnNldFhcbiAgICAgID8gY3VycmVudFRleHQucG9ydHJhaXQub2Zmc2V0WCAqIFVJc2NhbGVNdWx0aXBsaWVyICsgcG9ydHJhaXRYUG9zXG4gICAgICA6IHBvcnRyYWl0WFBvc1xuXG4gICAgICBkaWFsb2dEYXRhLnBvcnRyYWl0WSA9IGN1cnJlbnRUZXh0LnBvcnRyYWl0Lm9mZnNldFlcbiAgICAgID8gY3VycmVudFRleHQucG9ydHJhaXQub2Zmc2V0WSAqIFVJc2NhbGVNdWx0aXBsaWVyICsgcG9ydHJhaXRZUG9zXG4gICAgICA6IHBvcnRyYWl0WVBvc1xuXG4gICAgICBkaWFsb2dEYXRhLnBvcnRyYWl0V2lkdGggPSBjdXJyZW50VGV4dC5wb3J0cmFpdC53aWR0aCA/IGN1cnJlbnRUZXh0LnBvcnRyYWl0LndpZHRoICogVUlzY2FsZU11bHRpcGxpZXIgOiBwb3J0cmFpdFNjYWxlXG5cbiAgICAgIGRpYWxvZ0RhdGEucG9ydHJhaXRIZWlnaHQgPSBjdXJyZW50VGV4dC5wb3J0cmFpdC5oZWlnaHQgPyBjdXJyZW50VGV4dC5wb3J0cmFpdC5oZWlnaHQgKiBVSXNjYWxlTXVsdGlwbGllciA6IHBvcnRyYWl0U2NhbGVcbiAgICAgIGRpYWxvZ0RhdGEuZGlzcGxheVBvcnRyYWl0ID0gdHJ1ZVxuICAgIH1lbHNlIGlmKGRpYWxvZ0RhdGEuZGVmYXVsdFBvcnRyYWl0KXtcbiAgICAgIGRpYWxvZ0RhdGEuY3VycmVudFBvcnRyYWl0ID0gZGlhbG9nRGF0YS5kZWZhdWx0UG9ydHJhaXRUZXh0dXJlXG4gICAgICBkaWFsb2dEYXRhLmRpc3BsYXlQb3J0cmFpdCA9IHRydWVcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgIGRpYWxvZ0RhdGEuZGlzcGxheVBvcnRyYWl0ID0gZmFsc2VcbiAgICB9XG5cbiAgICBpZihkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5pc1F1ZXN0aW9uKXtcbiAgICAgICAgZGlhbG9nRGF0YS5idXR0b25zID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uYnV0dG9ucy5sZW5ndGhcbiAgICAgICAgaWYoZGlhbG9nRGF0YS5idXR0b25zID49IDMpe1xuICAgICAgICAgICAgZGlhbG9nRGF0YS5tYXJnaW4gPSAtMjVcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmKGRpYWxvZ0RhdGEuYnV0dG9ucyA+PTEpe1xuICAgICAgICAgICAgZGlhbG9nRGF0YS5tYXJnaW4gPSAtMjVcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKGRpYWxvZ0RhdGEpXG4gICAgICAgIHV0aWxzLnRpbWVycy5zZXRUaW1lb3V0KFxuICAgICAgICAgICAgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3NldHRpbmcgcXVlc3Rpb24gdG8gdHJ1ZScpXG4gICAgICAgICAgICAgICAgZGlhbG9nRGF0YS5pc1F1ZXN0aW9uID0gdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIDcwMFxuICAgICAgICAgIClcbiAgICB9XG5cbiAgICBkaWFsb2dEYXRhLm9wZW5UaW1lID0gTWF0aC5mbG9vcihEYXRlLm5vdygpKVxuICAgIGlmKGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmZvbnRTaXplKXtcbiAgICAgICAgZGlhbG9nRGF0YS5mb250U2l6ZSA9IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmZvbnRTaXplXG4gICAgfVxuXG4gICAgaWYoZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uc2tpcGFibGUpe1xuICAgICAgZGlhbG9nRGF0YS5za2lwYWJsZSA9IHRydWVcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgIGRpYWxvZ0RhdGEuc2tpcGFibGUgPSBmYWxzZVxuICAgIH1cblxuICAgIGlmKGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmltYWdlKXtcbiAgICAgIGRpYWxvZ0RhdGEuZGlhbG9nSW1hZ2VUZXh0dXJlID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uaW1hZ2UucGF0aFxuICAgICAgZGlhbG9nRGF0YS5pbWFnZVggPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5pbWFnZS5vZmZzZXRYID8gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uaW1hZ2Uub2Zmc2V0WCAqIFVJc2NhbGVNdWx0aXBsaWVyICsgaW1hZ2VYUG9zIDogLTQwXG4gICAgICBkaWFsb2dEYXRhLmltYWdlWSA9IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmltYWdlLm9mZnNldFkgPyBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5pbWFnZS5vZmZzZXRZICogVUlzY2FsZU11bHRpcGxpZXIgKyBpbWFnZVlQb3MgOiA0MFxuICAgICAgZGlhbG9nRGF0YS5pbWFnZUhlaWdodCA9IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmltYWdlLmhlaWdodCA/IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmhlaWdodCAqIFVJc2NhbGVNdWx0aXBsaWVyIDogaW1hZ2VTY2FsZVxuICAgICAgZGlhbG9nRGF0YS5pbWFnZVdpZHRoID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uaW1hZ2Uud2lkdGggPyBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS53aWR0aCAqIFVJc2NhbGVNdWx0aXBsaWVyIDogaW1hZ2VTY2FsZVxuICAgICAgZGlhbG9nRGF0YS5kaXNwbGF5SW1hZ2UgPSB0cnVlXG4gICAgfVxuXG4gICAgZGlhbG9nRGF0YS5wb3NpdGlvblggPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5vZmZzZXRYID8gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0ub2Zmc2V0WCAqIFVJc2NhbGVNdWx0aXBsaWVyIDogJzIyJSdcbiAgICBkaWFsb2dEYXRhLnBvc2l0aW9uWSA9IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLm9mZnNldFkgPyBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5vZmZzZXRZICogVUlzY2FsZU11bHRpcGxpZXIgKyB0ZXh0WVBvcyA6IHRleHRZUG9zXG4gICAgXG4gICAgaWYoZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uaGFzT3duUHJvcGVydHkoXCJ0eXBlU3BlZWRcIikpe1xuICAgICAgICBkaWFsb2dEYXRhLnNwZWVkID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0udHlwZVNwZWVkXG4gICAgfVxuICAgIGVsc2V7XG4gICAgICAgIGRpYWxvZ0RhdGEuc3BlZWQgPSAzMFxuICAgIH1cblxuICAgIGlmKGRpYWxvZ0RhdGEuc3BlZWQgPD0gMCl7XG4gICAgICAgIHJ1c2hUZXh0KG5wYylcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgICAgaWYoIUlzVHlwaW5nRGlhbG9nLmhhcyhucGMpKXtcbiAgICAgICAgICAgIElzVHlwaW5nRGlhbG9nLmNyZWF0ZShucGMpXG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgLy8gaWYoIW5wY0RpYWxvZ1R5cGluZ1N5c3RlbXMuaGFzKG5wYykpe1xuICAgICAgICAvLyAgICAgbnBjRGlhbG9nVHlwaW5nU3lzdGVtcy5zZXQobnBjLGVuZ2luZS5hZGRTeXN0ZW0oaGFuZGxlRGlhbG9nVHlwaW5nKSlcbiAgICAgICAgLy8gfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZExpbmVCcmVha3MoZGlhbG9nOkRpYWxvZ1tdLCBidWJibGU/OmJvb2xlYW4pe1xuICAgIGxldCBjbGVhbmVkOkRpYWxvZ1tdID0gZGlhbG9nLnNsaWNlKClcbiAgICBjbGVhbmVkLmZvckVhY2goKGQpPT57XG4gICAgICBkLnRleHQgPSBsaW5lQnJlYWsoZC50ZXh0LCBidWJibGU/IGdldEJ1YmJsZVRleHRMZW5ndGgoZC50ZXh0KSEgOiA1MClcbiAgICB9KVxuICAgIHJldHVybiBjbGVhbmVkXG59XG5cbmZ1bmN0aW9uIGxpbmVCcmVhayh0ZXh0OiBzdHJpbmcsIG1heExpbmVMZW5ndGg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3Qgd29yZHMgPSB0ZXh0LnNwbGl0KCcgJyk7XG4gICAgbGV0IGN1cnJlbnRMaW5lID0gJyc7XG4gICAgY29uc3QgbGluZXMgPSBbXTtcbiAgXG4gICAgZm9yIChjb25zdCB3b3JkIG9mIHdvcmRzKSB7XG4gICAgICBpZiAoY3VycmVudExpbmUubGVuZ3RoICsgd29yZC5sZW5ndGggKyAxIDw9IG1heExpbmVMZW5ndGgpIHtcbiAgICAgICAgY3VycmVudExpbmUgKz0gYCR7d29yZH0gYDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxpbmVzLnB1c2goY3VycmVudExpbmUudHJpbSgpKTtcbiAgICAgICAgY3VycmVudExpbmUgPSBgJHt3b3JkfSBgO1xuICAgICAgfVxuICAgIH1cbiAgICBsaW5lcy5wdXNoKGN1cnJlbnRMaW5lLnRyaW0oKSk7XG4gICAgcmV0dXJuIGxpbmVzLmpvaW4oJ1xcbicpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlRGlhbG9nQ2xpY2soKXtcbiAgY29uc29sZS5sb2coJ2hhbmRsaW5nIGNsaWNrJylcbiAgICBsZXQgbnBjID0gYWN0aXZlTlBDIGFzIEVudGl0eVxuICAgIGlmKG5wY0RpYWxvZ0NvbXBvbmVudC5oYXMobnBjKSl7XG4gICAgICAgIGxldCBkaWFsb2dEYXRhID0gbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpXG4gICAgICAgIGlmKCFkaWFsb2dEYXRhLnZpc2libGUgfHwgKE1hdGguZmxvb3IoRGF0ZS5ub3coKSkgLSBkaWFsb2dEYXRhLm9wZW5UaW1lICA8IDEwMCkpIHJldHVyblxuICAgICAgICBcbiAgICAgICAgaWYoZGlhbG9nRGF0YS50eXBpbmcpe1xuICAgICAgICAgICAgcnVzaFRleHQobnBjKVxuICAgICAgICB9XG4gICAgICAgIGVsc2V7XG4gICAgICAgICAgICBjb25maXJtVGV4dChucGMsIENvbmZpcm1Nb2RlLk5leHQpXG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBydXNoVGV4dChucGM6RW50aXR5KXtcbiAgICBsZXQgZGlhbG9nRGF0YSA9IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQobnBjKVxuICAgIGRpYWxvZ0RhdGEudHlwaW5nID0gZmFsc2VcbiAgICBkaWFsb2dEYXRhLnRpbWVyID0gMFxuICAgIGRpYWxvZ0RhdGEudmlzaWJsZUNoYXJzID0gZGlhbG9nRGF0YS5mdWxsVGV4dC5sZW5ndGhcbiAgICBkaWFsb2dEYXRhLnZpc2libGVUZXh0ID0gZGlhbG9nRGF0YS5mdWxsVGV4dFxuICAgIC8vZW5naW5lLnJlbW92ZVN5c3RlbShucGNEaWFsb2dUeXBpbmdTeXN0ZW1zLmdldChucGMpKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uZmlybVRleHQobnBjOkVudGl0eSwgbW9kZTogQ29uZmlybU1vZGUpOiB2b2lkIHtcbiAgY29uc29sZS5sb2coJ2NvbmZpcm0gdGV4dCcpXG4gICAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYylcbiAgICBkaWFsb2dEYXRhLm9wZW5UaW1lID0gTWF0aC5mbG9vcihEYXRlLm5vdygpKVxuXG4gICAgbGV0IGN1cnJlbnRUZXh0ID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF1cbiAgICAvLyBVcGRhdGUgYWN0aXZlIHRleHRcbiAgICBpZiAobW9kZSA9PSBDb25maXJtTW9kZS5OZXh0KSB7XG4gICAgICAgIGlmICghY3VycmVudFRleHQuaXNRdWVzdGlvbikge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRUZXh0LnRyaWdnZXJlZEJ5TmV4dCkge1xuICAgICAgICAgICAgY3VycmVudFRleHQudHJpZ2dlcmVkQnlOZXh0KClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjdXJyZW50VGV4dC5pc0VuZE9mRGlhbG9nKSB7XG4gICAgICAgICAgICBjbG9zZURpYWxvZyhucGMpXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRpYWxvZ0RhdGEuaW5kZXgrK1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1vZGUgPT0gQ29uZmlybU1vZGUuQ29uZmlybSkge1xuICAgICAgICBpZiAoY3VycmVudFRleHQuYnV0dG9ucyAmJiBjdXJyZW50VGV4dC5idXR0b25zLmxlbmd0aCA+PSAxKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBjdXJyZW50VGV4dC5idXR0b25zWzBdLmdvVG9EaWFsb2cgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBkaWFsb2dEYXRhLmluZGV4ID0gY3VycmVudFRleHQuYnV0dG9uc1swXS5nb1RvRGlhbG9nXG4gICAgICAgICAgfSBcblxuICAgICAgICAgIC8vVE9ET1xuICAgICAgICAgIC8vYWxsb3cgZGlhbG9ncyB0byBiZSBpbmRleCBieSBuYW1lXG4gICAgICAgIC8vICAgZWxzZSB7XG4gICAgICAgIC8vICAgICB0aGlzLmFjdGl2ZVRleHRJZCA9IGZpbmREaWFsb2dCeU5hbWUodGhpcy5OUENTY3JpcHQsIGN1cnJlbnRUZXh0LmJ1dHRvbnNbMF0uZ29Ub0RpYWxvZylcbiAgICAgICAgLy8gICB9XG4gICAgICAgICAgaWYgKGN1cnJlbnRUZXh0LmJ1dHRvbnNbMF0udHJpZ2dlcmVkQWN0aW9ucykge1xuICAgICAgICAgICAgY3VycmVudFRleHQuYnV0dG9uc1swXS50cmlnZ2VyZWRBY3Rpb25zKClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kZSA9PSBDb25maXJtTW9kZS5DYW5jZWwpIHtcbiAgICAgICAgaWYgKGN1cnJlbnRUZXh0LmJ1dHRvbnMgJiYgY3VycmVudFRleHQuYnV0dG9ucy5sZW5ndGggPj0gMSkge1xuICAgICAgICAgIGlmICh0eXBlb2YgY3VycmVudFRleHQuYnV0dG9uc1sxXS5nb1RvRGlhbG9nID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgZGlhbG9nRGF0YS5pbmRleCA9IGN1cnJlbnRUZXh0LmJ1dHRvbnNbMV0uZ29Ub0RpYWxvZ1xuICAgICAgICAgIH0gXG5cbiAgICAgICAgICAvL1RPRE9cbiAgICAgICAgICAvL2FsbG93IGRpYWxvZ3MgdG8gYmUgaW5kZXggYnkgbmFtZVxuICAgICAgICAvLyAgIGVsc2Uge1xuICAgICAgICAvLyAgICAgdGhpcy5hY3RpdmVUZXh0SWQgPSBmaW5kRGlhbG9nQnlOYW1lKHRoaXMuTlBDU2NyaXB0LCBjdXJyZW50VGV4dC5idXR0b25zWzBdLmdvVG9EaWFsb2cpXG4gICAgICAgIC8vICAgfVxuICAgICAgICAgIGlmIChjdXJyZW50VGV4dC5idXR0b25zWzFdLnRyaWdnZXJlZEFjdGlvbnMpIHtcbiAgICAgICAgICAgIGN1cnJlbnRUZXh0LmJ1dHRvbnNbMV0udHJpZ2dlcmVkQWN0aW9ucygpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1vZGUgPT0gQ29uZmlybU1vZGUuQnV0dG9uMykge1xuICAgICAgICBpZiAoY3VycmVudFRleHQuYnV0dG9ucyAmJiBjdXJyZW50VGV4dC5idXR0b25zLmxlbmd0aCA+PSAxKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBjdXJyZW50VGV4dC5idXR0b25zWzJdLmdvVG9EaWFsb2cgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBkaWFsb2dEYXRhLmluZGV4ID0gY3VycmVudFRleHQuYnV0dG9uc1syXS5nb1RvRGlhbG9nXG4gICAgICAgICAgfSBcblxuICAgICAgICAgIC8vVE9ET1xuICAgICAgICAgIC8vYWxsb3cgZGlhbG9ncyB0byBiZSBpbmRleCBieSBuYW1lXG4gICAgICAgIC8vICAgZWxzZSB7XG4gICAgICAgIC8vICAgICB0aGlzLmFjdGl2ZVRleHRJZCA9IGZpbmREaWFsb2dCeU5hbWUodGhpcy5OUENTY3JpcHQsIGN1cnJlbnRUZXh0LmJ1dHRvbnNbMF0uZ29Ub0RpYWxvZylcbiAgICAgICAgLy8gICB9XG4gICAgICAgICAgaWYgKGN1cnJlbnRUZXh0LmJ1dHRvbnNbMl0udHJpZ2dlcmVkQWN0aW9ucykge1xuICAgICAgICAgICAgY3VycmVudFRleHQuYnV0dG9uc1syXS50cmlnZ2VyZWRBY3Rpb25zKClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kZSA9PSBDb25maXJtTW9kZS5CdXR0b240KSB7XG4gICAgICAgIGlmIChjdXJyZW50VGV4dC5idXR0b25zICYmIGN1cnJlbnRUZXh0LmJ1dHRvbnMubGVuZ3RoID49IDEpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGN1cnJlbnRUZXh0LmJ1dHRvbnNbM10uZ29Ub0RpYWxvZyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIGRpYWxvZ0RhdGEuaW5kZXggPSBjdXJyZW50VGV4dC5idXR0b25zWzNdLmdvVG9EaWFsb2dcbiAgICAgICAgICB9IFxuXG4gICAgICAgICAgLy9UT0RPXG4gICAgICAgICAgLy9hbGxvdyBkaWFsb2dzIHRvIGJlIGluZGV4IGJ5IG5hbWVcbiAgICAgICAgLy8gICBlbHNlIHtcbiAgICAgICAgLy8gICAgIHRoaXMuYWN0aXZlVGV4dElkID0gZmluZERpYWxvZ0J5TmFtZSh0aGlzLk5QQ1NjcmlwdCwgY3VycmVudFRleHQuYnV0dG9uc1swXS5nb1RvRGlhbG9nKVxuICAgICAgICAvLyAgIH1cbiAgICAgICAgICBpZiAoY3VycmVudFRleHQuYnV0dG9uc1szXS50cmlnZ2VyZWRBY3Rpb25zKSB7XG4gICAgICAgICAgICBjdXJyZW50VGV4dC5idXR0b25zWzNdLnRyaWdnZXJlZEFjdGlvbnMoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgYmVnaW5UeXBpbmcobnBjKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2tpcERpYWxvZ3MobnBjOkVudGl0eSkge1xuICBsZXQgZGlhbG9nRGF0YSA9IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQobnBjKVxuICBpZiAoIWRpYWxvZ0RhdGEudmlzaWJsZSB8fCArRGF0ZS5ub3coKSAtIGRpYWxvZ0RhdGEub3BlblRpbWUgPCAxMDApIHJldHVyblxuXG4gIHdoaWxlIChcbiAgICBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XSAmJlxuICAgICAgZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uc2tpcGFibGUgJiZcbiAgICAgICAgZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uaXNRdWVzdGlvblxuICApe1xuICAgIGlmKGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLnRyaWdnZXJlZEJ5TmV4dCl7XG4gICAgICBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS50cmlnZ2VyZWRCeU5leHQoKVxuICAgIH1cblxuICAgIGlmKGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLnNraXBhYmxlICYmXG4gICAgICBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5pc0VuZE9mRGlhbG9nXG4gICAgICApe1xuICAgICAgICBjbG9zZURpYWxvZ1dpbmRvdyhucGMpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIFxuICAgICAgZGlhbG9nRGF0YS5pbmRleCArPSAxXG4gIH1cbiAgY29uZmlybVRleHQobnBjLCBDb25maXJtTW9kZS5OZXh0KVxufVxuXG5leHBvcnQgdHlwZSBJbWFnZUF0bGFzRGF0YSA9IHtcbiAgICBhdGxhc1dpZHRoOiBudW1iZXI7XG4gICAgYXRsYXNIZWlnaHQ6IG51bWJlcjtcbiAgICBzb3VyY2VXaWR0aDogbnVtYmVyO1xuICAgIHNvdXJjZUhlaWdodDogbnVtYmVyO1xuICAgIHNvdXJjZUxlZnQ6IG51bWJlcjtcbiAgICBzb3VyY2VUb3A6IG51bWJlcjtcbiAgfVxuICBcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEltYWdlQXRsYXNNYXBwaW5nKGRhdGE/OiBJbWFnZUF0bGFzRGF0YSk6IG51bWJlcltdIHtcbiAgICBpZiAoIWRhdGEpIHJldHVybiBbXVxuICBcbiAgICBjb25zdCB7XG4gICAgICBhdGxhc1dpZHRoLFxuICAgICAgYXRsYXNIZWlnaHQsXG4gICAgICBzb3VyY2VXaWR0aCxcbiAgICAgIHNvdXJjZUhlaWdodCxcbiAgICAgIHNvdXJjZVRvcCxcbiAgICAgIHNvdXJjZUxlZnQsXG4gICAgfSA9IGRhdGFcbiAgXG4gICAgcmV0dXJuIFtcbiAgICAgIHNvdXJjZUxlZnQgLyBhdGxhc1dpZHRoLCAoYXRsYXNIZWlnaHQgLSBzb3VyY2VUb3AgLSBzb3VyY2VIZWlnaHQpIC8gYXRsYXNIZWlnaHQsXG4gICAgICBzb3VyY2VMZWZ0IC8gYXRsYXNXaWR0aCwgKGF0bGFzSGVpZ2h0IC0gc291cmNlVG9wKSAvIGF0bGFzSGVpZ2h0LFxuICAgICAgKHNvdXJjZUxlZnQgKyBzb3VyY2VXaWR0aCkgLyBhdGxhc1dpZHRoLCAoYXRsYXNIZWlnaHQgLSBzb3VyY2VUb3ApIC8gYXRsYXNIZWlnaHQsXG4gICAgICAoc291cmNlTGVmdCArIHNvdXJjZVdpZHRoKSAvIGF0bGFzV2lkdGgsIChhdGxhc0hlaWdodCAtIHNvdXJjZVRvcCAtIHNvdXJjZUhlaWdodCkgLyBhdGxhc0hlaWdodCxcbiAgICBdXG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gcmVhbFdpZHRoKHdpZHRoPzpudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB3aWR0aCA/IHdpZHRoIDogc2VjdGlvbi5zb3VyY2VXaWR0aFxuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIHJlYWxIZWlnaHQoaGVpZ2h0PzpudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBoZWlnaHQgPyBoZWlnaHQgOiBzZWN0aW9uLnNvdXJjZUhlaWdodFxuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGZpbmREaWFsb2dCeU5hbWUoZGlhbG9nczogRGlhbG9nW10sIG5hbWU6IHN0cmluZykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlhbG9ncy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGRpYWxvZ3NbaV0ubmFtZSAmJiBkaWFsb2dzW2ldLm5hbWUgPT0gbmFtZSkge1xuICAgICAgICByZXR1cm4gaVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gMFxuICB9XG4gICJdfQ==
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
- id: "npc",
105
- name: "NPC",
106
- bodyShape: "urn:decentraland:off-chain:base-avatars:BaseMale",
107
- emotes: [],
108
- wearables: [
109
- "urn:decentraland:off-chain:base-avatars:f_eyes_00",
110
- "urn:decentraland:off-chain:base-avatars:f_eyebrows_00",
111
- "urn:decentraland:off-chain:base-avatars:f_mouth_00",
112
- "urn:decentraland:off-chain:base-avatars:comfy_sport_sandals",
113
- "urn:decentraland:off-chain:base-avatars:soccer_pants",
114
- "urn:decentraland:off-chain:base-avatars:elegant_sweater",
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',
@@ -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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LEdBQUcsQ0FBQyxDQUFBO1NBQ1Y7YUFBTSxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsRUFBRTtZQUN6QyxLQUFLLEdBQUcsVUFBVSxDQUFBO1NBQ25CO2FBQU07WUFDTCxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFBO1NBQzdDO1FBQ0QsVUFBVSxDQUFDLEdBQUcsRUFBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUE7S0FDaEM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLE1BQWE7SUFDM0MsSUFBSSxNQUFNLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzNDLElBQUcsTUFBTSxFQUFDO1FBQ04sV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0tBQ3RCO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdEVjcyBmcm9tICdAZGNsL3Nkay9yZWFjdC1lY3MnXG5pbXBvcnQgeyBBbmltYXRvciwgQXZhdGFyU2hhcGUsIGVuZ2luZSwgRW50aXR5LCBHbHRmQ29udGFpbmVyLCBJbnB1dEFjdGlvbixNZXNoQ29sbGlkZXIsTWVzaFJlbmRlcmVyLHBvaW50ZXJFdmVudHNTeXN0ZW0sVHJhbnNmb3JtLCBUcmFuc2Zvcm1UeXBlIH0gZnJvbSAnQGRjbC9zZGsvZWNzJ1xuaW1wb3J0IHsgQ29sb3IzLCBRdWF0ZXJuaW9uLCBWZWN0b3IzIH0gZnJvbSAnQGRjbC9zZGsvbWF0aCdcbmltcG9ydCB7IERpYWxvZywgRm9sbG93UGF0aERhdGEsIEltYWdlRGF0YSwgTlBDRGF0YSwgTlBDUGF0aFR5cGUsIE5QQ1N0YXRlLCBOUENUeXBlLCBUcmlnZ2VyRGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnQGRjbC1zZGsvdXRpbHMnXG5pbXBvcnQgeyBJc0ZvbGxvd2luZ1BhdGgsIFRyYWNrVXNlckZsYWcgfSBmcm9tICcuL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgZmFjZVVzZXJTeXN0ZW0sIGhhbmRsZUJ1YmJsZXR5cGluZywgaGFuZGxlRGlhbG9nVHlwaW5nLCBoYW5kbGVQYXRoVGltZXMsIGlucHV0TGlzdGVuZXJTeXN0ZW0gfSBmcm9tICcuL3N5c3RlbXMnO1xuaW1wb3J0IHsgYWRkRGlhbG9nLCBjbG9zZURpYWxvZywgZmluZERpYWxvZ0J5TmFtZSwgbnBjRGlhbG9nQ29tcG9uZW50LCBvcGVuRGlhbG9nIH0gZnJvbSAnLi9kaWFsb2cnO1xuaW1wb3J0IHsgYnViYmxlcywgY2xvc2VCdWJibGUsIGNyZWF0ZURpYWxvZ0J1YmJsZSwgb3BlbkJ1YmJsZSB9IGZyb20gJy4vYnViYmxlJztcbmltcG9ydCB7IGRhcmtUaGVtZSwgbGlnaHRUaGVtZSB9IGZyb20gJy4vdWknO1xuXG5leHBvcnQgY29uc3Qgd2Fsa2luZ1RpbWVyczogTWFwPEVudGl0eSxudW1iZXI+ID0gbmV3IE1hcCgpXG5leHBvcnQgY29uc3QgbnBjRGF0YUNvbXBvbmVudDogTWFwPEVudGl0eSwgYW55PiA9IG5ldyBNYXAoKVxuZXhwb3J0IGxldCBhY3RpdmVOUEM6bnVtYmVyID0gMFxuZXhwb3J0IGxldCBibGFua0RpYWxvZzpudW1iZXIgPSAwXG5cbmVuZ2luZS5hZGRTeXN0ZW0oaGFuZGxlUGF0aFRpbWVzKVxuZW5naW5lLmFkZFN5c3RlbShoYW5kbGVEaWFsb2dUeXBpbmcpXG5lbmdpbmUuYWRkU3lzdGVtKGhhbmRsZUJ1YmJsZXR5cGluZylcbmVuZ2luZS5hZGRTeXN0ZW0oZmFjZVVzZXJTeXN0ZW0pXG5lbmdpbmUuYWRkU3lzdGVtKGlucHV0TGlzdGVuZXJTeXN0ZW0pXG5cbmNvbnN0IGlzQ29vbGRvd246IE1hcDxFbnRpdHksIGFueT4gPSBuZXcgTWFwKClcbmNvbnN0IG9uQWN0aXZhdGVDYnM6IE1hcDxFbnRpdHksIGFueT4gPSBuZXcgTWFwKClcbmNvbnN0IG9uV2Fsa0F3YXlDYnM6IE1hcDxFbnRpdHksIGFueT4gPSBuZXcgTWFwKClcbmNvbnN0IGFuaW1UaW1lcnM6IE1hcDxFbnRpdHksYW55PiA9IG5ldyBNYXAoKVxuY29uc3QgcG9pbnRSZWFjaGVkQ2FsbGJhY2tzOiBNYXA8RW50aXR5LCBhbnk+ID0gbmV3IE1hcCgpXG5jb25zdCBvbkZpbmlzaENhbGxiYWNrczogTWFwPEVudGl0eSwgYW55PiA9IG5ldyBNYXAoKVxuXG5leHBvcnQgZnVuY3Rpb24gc2hvd0RlYnVnKGRlYnVnOmJvb2xlYW4pe1xuICAgIHV0aWxzLnRyaWdnZXJzLmVuYWJsZURlYnVnRHJhdyhkZWJ1Zylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERhdGEobnBjOkVudGl0eSl7XG4gICAgcmV0dXJuIG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZShcbiAgICB0cmFuc2Zvcm06IGFueSxcbiAgICBkYXRhOiBOUENEYXRhXG4pe1xuICAgIGxldCBucGMgPSBlbmdpbmUuYWRkRW50aXR5KClcblxuICAgIGxldCB0OlRyYW5zZm9ybVR5cGUgPSB7cG9zaXRpb246IHRyYW5zZm9ybS5wb3NpdGlvbiA/IHRyYW5zZm9ybS5wb3NpdGlvbiA6IFZlY3RvcjMuY3JlYXRlKDAsMCwwKSwgcm90YXRpb246IHRyYW5zZm9ybS5yb3RhdGlvbiA/IHRyYW5zZm9ybS5yb3RhdGlvbiA6IFF1YXRlcm5pb24uWmVybygpLCBzY2FsZTogdHJhbnNmb3JtLnNjYWxlID8gdHJhbnNmb3JtLnNjYWxlIDogVmVjdG9yMy5PbmUoKX1cbiAgICBUcmFuc2Zvcm0uY3JlYXRlKG5wYywgdClcblxuICAgIG5wY0RhdGFDb21wb25lbnQuc2V0KG5wYyx7XG4gICAgICAgIGludHJvZHVjZWQ6IGZhbHNlLFxuICAgICAgICBpbkNvb2xkb3duOiBmYWxzZSxcbiAgICAgICAgY29vbERvd25EdXJhdGlvbjogZGF0YSAmJiBkYXRhLmNvb2xEb3duRHVyYXRpb24gPyBkYXRhLmNvb2xEb3duRHVyYXRpb24gOiA1LFxuICAgICAgICBmYWNlVXNlcjogZGF0YSAmJiBkYXRhLmZhY2VVc2VyID8gZGF0YS5mYWNlVXNlciA6IHVuZGVmaW5lZCxcbiAgICAgICAgd2Fsa2luZ1NwZWVkOjIsXG4gICAgICAgIHdhbGtpbmdBbmltOiBkYXRhICYmIGRhdGEud2Fsa2luZ0FuaW0gPyBkYXRhLndhbGtpbmdBbmltIDogdW5kZWZpbmVkLFxuICAgICAgICBwYXRoRGF0YTogZGF0YS5wYXRoRGF0YSA/IGRhdGEucGF0aERhdGEgOiB1bmRlZmluZWQsXG4gICAgICAgIGN1cnJlbnRQYXRoRGF0YTogW10sXG4gICAgICAgIG1hbnVhbFN0b3A6ZmFsc2UsXG4gICAgICAgIHBhdGhJbmRleDowLFxuICAgICAgICBzdGF0ZTpOUENTdGF0ZS5TVEFORElORyxcbiAgICAgICAgaWRsZUFuaW06IGRhdGEgJiYgZGF0YS5pZGxlQW5pbSA/IGRhdGEuaWRsZUFuaW0gOiBcIklkbGVcIixcbiAgICAgICAgYnViYmxlSGVpZ2h0OiBkYXRhICYmIGRhdGEudGV4dEJ1YmJsZSAmJiBkYXRhLmJ1YmJsZUhlaWdodCA/IGRhdGEuYnViYmxlSGVpZ2h0IDogdW5kZWZpbmVkLFxuICAgICAgICBidWJibGVTb3VuZDogZGF0YS5kaWFsb2dTb3VuZCA/IGRhdGEuZGlhbG9nU291bmQgOiB1bmRlZmluZWQsXG4gICAgICAgIGhhc0J1YmJsZTogZGF0YSAmJiBkYXRhLnRleHRCdWJibGUgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgIHR1cm5TcGVlZDogZGF0YSAmJiBkYXRhLnR1cm5pbmdTcGVlZCA/IGRhdGEudHVybmluZ1NwZWVkIDogMixcbiAgICAgICAgdGhlbWU6IGRhdGEuZGFya1VJID8gZGFya1RoZW1lIDogbGlnaHRUaGVtZVxuICAgIH0pXG5cbiAgICBpZihkYXRhICYmIGRhdGEubm9VSSl7fVxuICAgIGVsc2UgaWYoZGF0YSAmJiBkYXRhLnBvcnRyYWl0KXtcbiAgICAgICAgICAgIGFkZERpYWxvZyhucGMsIGRhdGEgJiYgZGF0YS5kaWFsb2dTb3VuZCA/IGRhdGEuZGlhbG9nU291bmQgOiB1bmRlZmluZWQsIHR5cGVvZiBkYXRhLnBvcnRyYWl0ID09PSBgc3RyaW5nYCA/IHsgcGF0aDogZGF0YS5wb3J0cmFpdCB9IDogZGF0YS5wb3J0cmFpdClcbiAgICAgICAgfVxuICAgIGVsc2V7XG4gICAgICAgIGFkZERpYWxvZyhucGMsIGRhdGEgJiYgZGF0YS5kaWFsb2dTb3VuZCA/IGRhdGEuZGlhbG9nU291bmQgOiB1bmRlZmluZWQpXG4gICAgfVxuXG4gICAgaWYgKGRhdGEgJiYgZGF0YS50ZXh0QnViYmxlKSB7XG4gICAgICAgIGNyZWF0ZURpYWxvZ0J1YmJsZShucGMsIG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykuYnViYmxlSGVpZ2h0KVxuICAgICAgfVxuXG4gICAgb25BY3RpdmF0ZUNicy5zZXQobnBjLCAoKT0+e1xuICAgICAgICBkYXRhLm9uQWN0aXZhdGUoKVxuICAgIH0pXG5cbiAgICBpZiAoZGF0YSAmJiBkYXRhLmhhc093blByb3BlcnR5KFwib25XYWxrQXdheVwiKSkge1xuICAgICAgICBvbldhbGtBd2F5Q2JzLnNldChucGMsICgpPT57XG4gICAgICAgICAgICBpZighZGF0YSB8fCAhZGF0YS5jb250aW51ZU9uV2Fsa0F3YXkpe1xuICAgICAgICAgICAgICAgIGlmKG5wY0RpYWxvZ0NvbXBvbmVudC5oYXMobnBjKSl7XG4gICAgICAgICAgICAgICAgICAgIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQobnBjKS52aXNpYmxlID0gZmFsc2VcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNle1xuICAgICAgICAgICAgICAgIGlmKG5wY0RpYWxvZ0NvbXBvbmVudC5oYXMobnBjKSl7XG4gICAgICAgICAgICAgICAgICAgIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQobnBjKS52aXNpYmxlID0gZmFsc2VcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkYXRhLm9uV2Fsa0F3YXkhKClcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBhZGROUENCb25lcyhucGMsIGRhdGEpXG4gICAgYWRkQ2xpY2tSZWFjdGlvbnMobnBjLCBkYXRhKVxuICAgIGFkZFRyaWdnZXJBcmVhKG5wYywgZGF0YSlcbiAgICBcbiAgICBpZiAoZGF0YSAmJiBkYXRhLnBhdGhEYXRhICYmIGRhdGEucGF0aERhdGEuc3BlZWQpIHtcbiAgICAgICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgICAgIG5wY0RhdGEud2Fsa2luZ1NwZWVkID0gZGF0YS5wYXRoRGF0YS5zcGVlZFxuICAgIH1cblxuICAgIGlmIChkYXRhICYmIGRhdGEuY29vbERvd25EdXJhdGlvbikge1xuICAgICAgICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgICAgICAgbnBjRGF0YS5jb29sRG93bkR1cmF0aW9uID0gZGF0YS5jb29sRG93bkR1cmF0aW9uXG4gICAgfVxuXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5wYXRoRGF0YSl7XG4gICAgICAgIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgICAgICBucGNEYXRhLnBhdGhEYXRhLmxvb3AgPSB0cnVlXG4gICAgICAgIGZvbGxvd1BhdGgobnBjLCBucGNEYXRhLnBhdGhEYXRhKVxuICAgIH1cblxuICAgIHJldHVybiBucGNcbn1cblxuZnVuY3Rpb24gYWRkTlBDQm9uZXMobnBjOkVudGl0eSwgZGF0YTpOUENEYXRhKXtcbiAgICBzd2l0Y2goZGF0YS50eXBlKXtcbiAgICAgICAgY2FzZSBOUENUeXBlLkFWQVRBUjpcbiAgICAgICAgICAgIEF2YXRhclNoYXBlLmNyZWF0ZShucGMsIHtcbiAgICAgICAgICAgICAgICBpZDogXCJucGNcIixcbiAgICAgICAgICAgICAgICBuYW1lOiBcIk5QQ1wiLFxuICAgICAgICAgICAgICAgIGJvZHlTaGFwZTpcInVybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczpCYXNlTWFsZVwiLFxuICAgICAgICAgICAgICAgIGVtb3RlczogW10sXG4gICAgICAgICAgICAgICAgd2VhcmFibGVzOiBbXG4gICAgICAgICAgICAgICAgICAgIFwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOmZfZXllc18wMFwiLFxuICAgICAgICAgICAgICAgICAgICBcInVybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczpmX2V5ZWJyb3dzXzAwXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOmZfbW91dGhfMDBcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ1cm46ZGVjZW50cmFsYW5kOm9mZi1jaGFpbjpiYXNlLWF2YXRhcnM6Y29tZnlfc3BvcnRfc2FuZGFsc1wiLFxuICAgICAgICAgICAgICAgICAgICBcInVybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczpzb2NjZXJfcGFudHNcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ1cm46ZGVjZW50cmFsYW5kOm9mZi1jaGFpbjpiYXNlLWF2YXRhcnM6ZWxlZ2FudF9zd2VhdGVyXCIsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBOUENUeXBlLkNVU1RPTTpcbiAgICAgICAgICAgIEdsdGZDb250YWluZXIuY3JlYXRlKG5wYywgeyBcbiAgICAgICAgICAgICAgICBzcmM6IGRhdGEgJiYgZGF0YS5tb2RlbCA/IGRhdGEubW9kZWwgOiBcIlwiIFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIEFuaW1hdG9yLmNyZWF0ZShucGMsIHtcbiAgICAgICAgICAgICAgICBzdGF0ZXM6W3tcbiAgICAgICAgICAgICAgICAgICAgbmFtZTpkYXRhICYmIGRhdGEuaWRsZUFuaW0gPyBkYXRhLmlkbGVBbmltIDogJ0lkbGUnLFxuICAgICAgICAgICAgICAgICAgICBjbGlwOmRhdGEgJiYgZGF0YS5pZGxlQW5pbSA/IGRhdGEuaWRsZUFuaW0gOiAnSWRsZScsXG4gICAgICAgICAgICAgICAgICAgIGxvb3A6dHJ1ZVxuICAgICAgICAgICAgICAgIH1dXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgICAgICAgICAgIG5wY0RhdGEuaWRsZUFuaW0gPSBkYXRhICYmIGRhdGEuaWRsZUFuaW0gPyBkYXRhLmlkbGVBbmltIDogJ0lkbGUnXG4gICAgICAgICAgICBucGNEYXRhLmxhc3RQbGF5ZWRBbmltID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS5pZGxlQW5pbVxuXG4gICAgICAgICAgICBBbmltYXRvci5wbGF5U2luZ2xlQW5pbWF0aW9uKG5wYywgbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS5pZGxlQW5pbSlcblxuXG4gICAgICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLndhbGtpbmdBbmltKSB7XG4gICAgICAgICAgICAgICAgbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS53YWxraW5nQW5pbSA9IGRhdGEud2Fsa2luZ0FuaW1cbiAgICAgICAgICAgICAgICBsZXQgYW5pbWF0aW9ucyA9IEFuaW1hdG9yLmdldE11dGFibGUobnBjKVxuICAgICAgICAgICAgICAgIGFuaW1hdGlvbnMuc3RhdGVzLnB1c2goe25hbWU6ZGF0YS53YWxraW5nQW5pbSwgY2xpcDogZGF0YS53YWxraW5nQW5pbSwgbG9vcDp0cnVlfSlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBOUENUeXBlLkJMQU5LOlxuICAgICAgICAgICAgTWVzaFJlbmRlcmVyLnNldEJveChucGMpXG4gICAgICAgICAgICBNZXNoQ29sbGlkZXIuc2V0Qm94KG5wYylcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgfVxufVxuXG5mdW5jdGlvbiBhZGRDbGlja1JlYWN0aW9ucyhucGM6RW50aXR5LCBkYXRhOk5QQ0RhdGEpe1xuICAgIGxldCBhY3RpdmF0ZUJ1dHRvbiA9IGRhdGEgJiYgZGF0YS5vbmx5Q2xpY2tUcmlnZ2VyID8gSW5wdXRBY3Rpb24uSUFfUE9JTlRFUiA6IElucHV0QWN0aW9uLklBX1BSSU1BUllcblxuICAgIHBvaW50ZXJFdmVudHNTeXN0ZW0ub25Qb2ludGVyRG93bihcbiAgICAgICAgbnBjLFxuICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoaXNDb29sZG93bi5oYXMobnBjKSB8fCAobnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpLnZpc2libGUpKSByZXR1cm5cbiAgICAgICAgICAgIGFjdGl2YXRlKG5wYylcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgYnV0dG9uOiBhY3RpdmF0ZUJ1dHRvbixcbiAgICAgICAgICAgIGhvdmVyVGV4dDogZGF0YSAmJiBkYXRhLmhvdmVyVGV4dCA/IGRhdGEuaG92ZXJUZXh0IDogJ1RhbGsnLFxuICAgICAgICAgICAgc2hvd0ZlZWRiYWNrOiBkYXRhICYmIGRhdGEub25seUV4dGVybmFsVHJpZ2dlciA/IGZhbHNlIDogdHJ1ZSxcbiAgICAgICAgfVxuICAgICAgICApXG5cbiAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5vbmx5RXh0ZXJuYWxUcmlnZ2VyKSB7XG4gICAgICAgIHBvaW50ZXJFdmVudHNTeXN0ZW0ucmVtb3ZlT25Qb2ludGVyRG93bihucGMpXG4gICAgICAgIH0gXG59XG5cbmZ1bmN0aW9uIGFkZFRyaWdnZXJBcmVhKG5wYzpFbnRpdHksIGRhdGE6TlBDRGF0YSl7XG5cbiAgICAgICAgbGV0IHRyaWdnZXJEYXRhOiBUcmlnZ2VyRGF0YSA9IHt9XG5cbiAgICAgICAgaWYgKCFkYXRhIHx8IChkYXRhICYmICFkYXRhLm9ubHlFeHRlcm5hbFRyaWdnZXIgJiYgIWRhdGEub25seUNsaWNrVHJpZ2dlciAmJiAhZGF0YS5vbmx5RVRyaWdnZXIpKXtcbiAgICAgICAgb25BY3RpdmF0ZUNicy5zZXQobnBjLCAoKT0+e1xuICAgICAgICAgICAgaWYgKGlzQ29vbGRvd24uaGFzKG5wYykpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhucGMsICcgaW4gY29vbGRvd24nKVxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfSBcbiAgICAgICAgICAgIGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIChucGNEaWFsb2dDb21wb25lbnQuaGFzKG5wYykgJiYgbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpLnZpc2libGUpIHx8XG4gICAgICAgICAgICAgICAgKGRhdGEgJiYgZGF0YS5vbmx5RXh0ZXJuYWxUcmlnZ2VyKSB8fFxuICAgICAgICAgICAgICAgIChkYXRhICYmIGRhdGEub25seUNsaWNrVHJpZ2dlcilcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGF0YS5vbkFjdGl2YXRlKClcbiAgICAgICAgfSlcbiAgICAgICAgdHJpZ2dlckRhdGEub25DYW1lcmFFbnRlciA9IG9uQWN0aXZhdGVDYnMuZ2V0KG5wYylcbiAgICAgICAgfVxuXG4gICAgLy8gd2hlbiBleGl0aW5nIHRyaWdnZXJcbiAgICBpZiAoIWRhdGEgfHwgKGRhdGEgJiYgIWRhdGEuY29udGludWVPbldhbGtBd2F5KSkge1xuICAgICAgICB0cmlnZ2VyRGF0YS5vbkNhbWVyYUV4aXQgPSAoKSA9PiB7XG4gICAgICAgICAgICBoYW5kbGVXYWxrQXdheShucGMpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB3aGVuIGVudGVyaW5nIHRyaWdnZXJcbiAgICBpZiAoXG4gICAgICAgICFkYXRhIHx8XG4gICAgICAgIChkYXRhICYmICFkYXRhLm9ubHlFeHRlcm5hbFRyaWdnZXIgJiYgIWRhdGEub25seUNsaWNrVHJpZ2dlciAmJiAhZGF0YS5vbmx5RVRyaWdnZXIpXG4gICAgKSB7XG4gICAgICAgIHRyaWdnZXJEYXRhLm9uQ2FtZXJhRW50ZXIgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNDb29sZG93bi5oYXMobnBjKSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKG5wYywgJyBpbiBjb29sZG93bicpXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9IFxuICAgICAgICAgICAgLy8gZWxzZSBpZiAoXG4gICAgICAgICAgICAvLyAgICAgKHRoaXMuZGlhbG9nICYmIHRoaXMuZGlhbG9nLmlzRGlhbG9nT3BlbikgfHxcbiAgICAgICAgICAgIC8vICAgICAoZGF0YSAmJiBkYXRhLm9ubHlFeHRlcm5hbFRyaWdnZXIpIHx8XG4gICAgICAgICAgICAvLyAgICAgKGRhdGEgJiYgZGF0YS5vbmx5Q2xpY2tUcmlnZ2VyKVxuICAgICAgICAgICAgLy8gKSB7XG4gICAgICAgICAgICAvLyAgICAgcmV0dXJuXG4gICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICBhY3RpdmF0ZShucGMpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBhZGQgdHJpZ2dlclxuICAgIGlmICh0cmlnZ2VyRGF0YS5vbkNhbWVyYUVudGVyIHx8IHRyaWdnZXJEYXRhLm9uQ2FtZXJhRXhpdCkge1xuICAgICAgICB1dGlscy50cmlnZ2Vycy5hZGRUcmlnZ2VyKG5wYywyNTQsMSxbe3R5cGU6J3NwaGVyZScsIHBvc2l0aW9uOiBWZWN0b3IzLlplcm8oKSwgcmFkaXVzOiBkYXRhLnJlYWN0RGlzdGFuY2UgIT0gdW5kZWZpbmVkID8gZGF0YS5yZWFjdERpc3RhbmNlIDogNn1dLCB0cmlnZ2VyRGF0YS5vbkNhbWVyYUVudGVyID8gdHJpZ2dlckRhdGEub25DYW1lcmFFbnRlciA6IHVuZGVmaW5lZCwgdHJpZ2dlckRhdGEub25DYW1lcmFFeGl0ID8gdHJpZ2dlckRhdGEub25DYW1lcmFFeGl0IDogdW5kZWZpbmVkLCBDb2xvcjMuUmVkKCkpXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9sbG93UGF0aChucGM6RW50aXR5LCBkYXRhPzpGb2xsb3dQYXRoRGF0YSl7XG4gICAgICAgIFxuICAgIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgIGxldCBwYXRoOmFueVtdID1bXVxuXG4gICAgaWYobnBjRGF0YS5mYWNlVXNlcil7XG4gICAgICAgIGlmKFRyYWNrVXNlckZsYWcuaGFzKG5wYykpe1xuICAgICAgICAgICAgVHJhY2tVc2VyRmxhZy5kZWxldGVGcm9tKG5wYylcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmKG5wY0RhdGEubWFudWFsU3RvcCl7XG4gICAgICAgIGxldCBkdXJhdGlvbiA9IG5wY0RhdGEucGF0aERhdGEudG90YWxEdXJhdGlvblxuICAgICAgICBsZXQgY3VycmVudFRpbWVyOm51bWJlciA9IHdhbGtpbmdUaW1lcnMuZ2V0KG5wYykhXG4gICAgICAgIGNvbnNvbGUubG9nKCdjdXJyZW50IHRpbWUgaXMnLCBjdXJyZW50VGltZXIpXG4gICAgICAgIGlmKGN1cnJlbnRUaW1lcil7XG4gICAgICAgICAgICBkdXJhdGlvbiAtPSBjdXJyZW50VGltZXJcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwYXRoOmFueVtdID0gW11cbiAgICAgICAgbnBjRGF0YS5wYXRoRGF0YS5wYXRoLmZvckVhY2goKHA6YW55KT0+e1xuICAgICAgICAgICAgcGF0aC5wdXNoKHApXG4gICAgICAgIH0pXG4gICAgICAgIHBhdGguc3BsaWNlKDAsbnBjRGF0YS5wYXRoSW5kZXgpXG5cbiAgICAgICAgbGV0IHBvcyA9IFRyYW5zZm9ybS5nZXQobnBjKS5wb3NpdGlvblxuICAgICAgICBwYXRoLnVuc2hpZnQoVmVjdG9yMy5jcmVhdGUocG9zLngsIHBvcy55LCBwb3MueikpXG4gICAgICAgIHdhbGtOUEMobnBjLG5wY0RhdGEsIG5wY0RhdGEucGF0aERhdGEucGF0aFR5cGUsIGR1cmF0aW9uLCBwYXRoLCBwb2ludFJlYWNoZWRDYWxsYmFja3MuZ2V0KG5wYyksIG9uRmluaXNoQ2FsbGJhY2tzLmdldChucGMpKSAgICBcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgICAgaWYoZGF0YSl7XG4gICAgICAgICAgICBucGNEYXRhLnBhdGhEYXRhID0gZGF0YVxuICAgIFxuICAgICAgICAgICAgaWYoZGF0YS5zdGFydGluZ1BvaW50KXtcbiAgICAgICAgICAgICAgICBkYXRhLnBhdGg/LnNwbGljZSgwLGRhdGEuc3RhcnRpbmdQb2ludCAtIDEpXG4gICAgICAgICAgICB9XG4gICAgXG4gICAgICAgICAgICBsZXQgcG9zID0gVHJhbnNmb3JtLmdldChucGMpLnBvc2l0aW9uXG4gICAgICAgICAgICBwYXRoLnB1c2goVmVjdG9yMy5jcmVhdGUocG9zLngsIHBvcy55LCBwb3MueikpXG4gICAgICAgICAgICBkYXRhLnBhdGg/LmZvckVhY2goKHApPT57XG4gICAgICAgICAgICAgICAgcGF0aC5wdXNoKHApXG4gICAgICAgICAgICB9KVxuICAgIFxuICAgICAgICAgICAgb25GaW5pc2hDYWxsYmFja3Muc2V0KG5wYywoKT0+e1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdvbiBmaW5pc2hlZCBjYWxsYmFjaycpXG4gICAgICAgICAgICAgICAgaWYoZGF0YSAmJiBkYXRhLm9uRmluaXNoQ2FsbGJhY2sgJiYgIWRhdGEubG9vcCl7XG4gICAgICAgICAgICAgICAgICAgIGRhdGEub25GaW5pc2hDYWxsYmFjaygpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN0b3BQYXRoKG5wYylcbiAgICAgICAgICAgIH0pXG4gICAgXG4gICAgICAgICAgICBwb2ludFJlYWNoZWRDYWxsYmFja3Muc2V0KG5wYywgKCk9PntcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnb24gcG9pbnQgcmVhY2hlZCBjYWxsYmFjaycpXG4gICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgICAgICAgICAgICAgZGF0YS5wYXRoSW5kZXggKz0gMVxuICAgICAgICAgICAgICAgIGRhdGEub25SZWFjaGVkUG9pbnRDYWxsYmFjayA/IGRhdGEub25SZWFjaGVkUG9pbnRDYWxsYmFjayA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHdhbGtOUEMobnBjLCBucGNEYXRhLCBkYXRhLnBhdGhUeXBlISwgZGF0YS50b3RhbER1cmF0aW9uLCBwYXRoLCBwb2ludFJlYWNoZWRDYWxsYmFja3MuZ2V0KG5wYyksIG9uRmluaXNoQ2FsbGJhY2tzLmdldChucGMpKVxuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIGlmKG5wY0RhdGEubWFudWFsU3RvcCl7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3dlIGhhdmUgbWFudWFsIHN0b3AsIG5lZWQgdG8gcGljayBiYWNrIHVwIHdoZXJlIHdlIGxlZnQgb2ZmJylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3dlIGFyZSB0cnlpbmcgdG8gZm9sbG93IGEgcGF0aCB3aXRvdXQgc3RhcnRpbmcgb25lIHByaW9yJylcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgXG4gICAgfVxuXG4gICBcbiAgICB9XG5cbmZ1bmN0aW9uIHdhbGtOUEMobnBjOkVudGl0eSwgbnBjRGF0YTphbnksIHR5cGU6TlBDUGF0aFR5cGUsIGR1cmF0aW9uOm51bWJlciwgcGF0aDpWZWN0b3IzW10sIHBvaW50UmVhY2hlZENhbGxiYWNrPzphbnksIGZpbmlzaGVkQ2FsbGJhY2s/OmFueSl7XG4gICAgXG4gICAgaWYoSXNGb2xsb3dpbmdQYXRoLmhhcyhucGMpKXtcbiAgICAgICAgSXNGb2xsb3dpbmdQYXRoLmRlbGV0ZUZyb20obnBjKVxuICAgICAgICB3YWxraW5nVGltZXJzLmRlbGV0ZShucGMpXG4gICAgfVxuICAgIElzRm9sbG93aW5nUGF0aC5jcmVhdGUobnBjKVxuXG4gICAgaWYodHlwZSl7XG4gICAgICAgIGlmKHR5cGU9PSBOUENQYXRoVHlwZS5SSUdJRF9QQVRIKXtcbiAgICAgICAgICAgIHV0aWxzLnBhdGhzLnN0YXJ0U3RyYWlnaHRQYXRoKG5wYywgcGF0aCwgZHVyYXRpb24sdHJ1ZSxcbiAgICAgICAgICAgICAgICAoKT0+e2ZpbmlzaGVkQ2FsbGJhY2soKX0sICgpPT57cG9pbnRSZWFjaGVkQ2FsbGJhY2soKX0pXG4gICAgICAgIH1cbiAgICAgICAgZWxzZXtcbiAgICAgICAgICAgIHV0aWxzLnBhdGhzLnN0YXJ0U21vb3RoUGF0aChucGMsIHBhdGgsIGR1cmF0aW9uLCAzMCwgdHJ1ZSwgXG4gICAgICAgICAgICAgICAgKCk9PntmaW5pc2hlZENhbGxiYWNrKCl9LCAoKT0+e3BvaW50UmVhY2hlZENhbGxiYWNrKCl9KVxuICAgICAgICAgICAgfVxuICAgIH1cbiAgICBlbHNle1xuICAgICAgICB1dGlscy5wYXRocy5zdGFydFNtb290aFBhdGgobnBjLCBwYXRoLCBkdXJhdGlvbiwgMjAsIHRydWUsIFxuICAgICAgICAgICAgKCk9PntmaW5pc2hlZENhbGxiYWNrKCl9LCAoKT0+e3BvaW50UmVhY2hlZENhbGxiYWNrKCl9KVxuICAgIH0gICBcblxuICAgIGlmIChucGNEYXRhLndhbGtpbmdBbmltKSB7XG4gICAgICAgIEFuaW1hdG9yLnBsYXlTaW5nbGVBbmltYXRpb24obnBjLCBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLndhbGtpbmdBbmltLCB0cnVlKVxuICAgICAgICBucGNEYXRhLmxhc3RQbGF5ZWRBbmltID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS53YWxraW5nQW5pbVxuICAgICAgfVxuICAgIG5wY0RhdGEuc3RhdGUgPSBOUENTdGF0ZS5GT0xMT1dQQVRIXG4gICAgbnBjRGF0YS5tYW51YWxTdG9wID0gZmFsc2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0b3BXYWxraW5nKG5wYzpFbnRpdHksIGR1cmF0aW9uPzogbnVtYmVyLCBmaW5pc2hlZD86Ym9vbGVhbikge1xuICAgIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgIG5wY0RhdGEuc3RhdGUgPSBOUENTdGF0ZS5TVEFORElOR1xuICAgIG5wY0RhdGEubWFudWFsU3RvcCA9IHRydWVcblxuICAgIHN0b3BQYXRoKG5wYylcblxuICAgIGlmIChkdXJhdGlvbikge1xuICAgICAgICB1dGlscy50aW1lcnMuc2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgLy9pZiAodGhpcy5kaWFsb2cgJiYgdGhpcy5kaWFsb2cuaXNEaWFsb2dPcGVuKSByZXR1cm5cbiAgICAgICAgICAgIGlmKG5wY0RhdGEucGF0aCl7XG4gICAgICAgICAgICAgICAgQW5pbWF0b3Iuc3RvcEFsbEFuaW1hdGlvbnMobnBjLCB0cnVlKVxuICAgICAgICAgICAgICAgIGlmKG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykud2Fsa2luZ0FuaW0pe1xuICAgICAgICAgICAgICAgICAgICBBbmltYXRvci5wbGF5U2luZ2xlQW5pbWF0aW9uKG5wYywgbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS53YWxraW5nQW5pbSx0cnVlKVxuICAgICAgICAgICAgICAgICAgICBucGNEYXRhLmxhc3RQbGF5ZWRBbmltID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS53YWxraW5nQW5pbVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgZHVyYXRpb24gPSBucGNEYXRhLnBhdGhEYXRhLnRvdGFsRHVyYXRpb25cbiAgICAgICAgICAgICAgICBsZXQgY3VycmVudFRpbWVyOm51bWJlciA9IHdhbGtpbmdUaW1lcnMuZ2V0KG5wYykhXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2N1cnJlbnQgdGltZSBpcycsIGN1cnJlbnRUaW1lcilcbiAgICAgICAgICAgICAgICBpZihjdXJyZW50VGltZXIpe1xuICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbiAtPSBjdXJyZW50VGltZXJcbiAgICAgICAgICAgICAgICB9XG4gICAgXG4gICAgICAgICAgICAgICAgbGV0IHBhdGg6YW55W10gPSBbXVxuICAgICAgICAgICAgICAgIG5wY0RhdGEucGF0aERhdGEucGF0aC5mb3JFYWNoKChwOmFueSk9PntcbiAgICAgICAgICAgICAgICAgICAgcGF0aC5wdXNoKHApXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBwYXRoLnNwbGljZSgwLG5wY0RhdGEucGF0aEluZGV4KVxuICAgIFxuICAgICAgICAgICAgICAgIGxldCBwb3MgPSBUcmFuc2Zvcm0uZ2V0KG5wYykucG9zaXRpb25cbiAgICAgICAgICAgICAgICBwYXRoLnVuc2hpZnQoVmVjdG9yMy5jcmVhdGUocG9zLngsIHBvcy55LCBwb3MueikpXG4gICAgXG4gICAgICAgICAgICAgICAgLy9ucGNEYXRhLm1hbnVhbFN0b3AgPSBmYWxzZVxuICAgICAgICAgICAgICAgIHdhbGtOUEMobnBjLG5wY0RhdGEsIG5wY0RhdGEucGF0aERhdGEucGF0aFR5cGUsIGR1cmF0aW9uLCBwYXRoLCBwb2ludFJlYWNoZWRDYWxsYmFja3MuZ2V0KG5wYyksIG9uRmluaXNoQ2FsbGJhY2tzLmdldChucGMpKSAgICBcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LGR1cmF0aW9uICogMTAwMClcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdG9wUGF0aChucGM6RW50aXR5KXtcbiAgICB1dGlscy5wYXRocy5zdG9wUGF0aChucGMpXG4gICAgSXNGb2xsb3dpbmdQYXRoLmRlbGV0ZUZyb20obnBjKVxuXG4gICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgaWYgKG5wY0RhdGEud2Fsa2luZ0FuaW0pIHtcbiAgICAgICAgQW5pbWF0b3IucGxheVNpbmdsZUFuaW1hdGlvbihucGMsIG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykuaWRsZUFuaW0pXG4gICAgICAgIG5wY0RhdGEubGFzdFBsYXllZEFuaW0gPSBucGNEYXRhLmlkbGVBbmltXG4gICAgfVxuXG4gICAgaWYoIW5wY0RhdGEubWFudWFsU3RvcCl7XG4gICAgICAgIGlmKG5wY0RhdGEucGF0aERhdGEubG9vcCl7XG4gICAgICAgICAgICBucGNEYXRhLnBhdGhJbmRleCA9IDBcbiAgICAgICAgICAgIHdhbGtpbmdUaW1lcnMuZGVsZXRlKG5wYylcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCd3ZSBhcmUgbG9vcGluZyBwYXRoJywgbnBjRGF0YSlcbiAgICAgICAgICAgIGZvbGxvd1BhdGgobnBjLCBucGNEYXRhLnBhdGhEYXRhKVxuICAgICAgICAgICAgY29uc29sZS5sb2cobnBjRGF0YSlcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyTlBDKCl7XG4gICAgYWN0aXZlTlBDID0gMFxufVxuXG4vKipcbiAqIENhbGxzIHRoZSBOUEMncyBhY3RpdmF0aW9uIGZ1bmN0aW9uIChzZXQgb24gTlBDIGRlZmluaXRpb24pLiBJZiBOUEMgaGFzIGBmYWNlVXNlcmAgPSB0cnVlLCBpdCB3aWxsIHJvdGF0ZSB0byBmYWNlIHRoZSBwbGF5ZXIuIEl0IHN0YXJ0cyBhIGNvb2xkb3duIGNvdW50ZXIgdG8gYXZvaWQgcmVhY3RpdmF0aW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWN0aXZhdGUobnBjOkVudGl0eSkge1xuXG4gICAgaWYoYWN0aXZlTlBDICE9IDApe1xuICAgICAgICBjb25zb2xlLmxvZygnd2UgaGF2ZSBhIGN1cnJlbnQgbnBjLCBuZWVkdG8gcmVtb3ZlJylcbiAgICAgICAgZW5kSW50ZXJhY3Rpb24oYWN0aXZlTlBDIGFzIEVudGl0eSlcbiAgICAgICAgLy8gY2xvc2VEaWFsb2coYWN0aXZlTlBDIGFzIEVudGl0eSlcbiAgICB9XG5cbiAgICBhY3RpdmVOUEMgPSBucGNcbiAgICBvbkFjdGl2YXRlQ2JzLmdldChucGMpKClcblxuICAgIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgIGlmIChucGNEYXRhLmZhY2VVc2VyKSB7XG4gICAgICAgIGlmKFRyYWNrVXNlckZsYWcuaGFzKG5wYykpe1xuICAgICAgICAgICAgVHJhY2tVc2VyRmxhZy5kZWxldGVGcm9tKG5wYylcbiAgICAgICAgfVxuXG4gICAgICAgIFRyYWNrVXNlckZsYWcuY3JlYXRlKG5wYyx7XG4gICAgICAgICAgICBsb2NrWFpSb3RhdGlvbjp0cnVlLFxuICAgICAgICAgICAgYWN0aXZlOnRydWUsXG4gICAgICAgICAgICByb3RTcGVlZDpucGNEYXRhLnR1cm5TcGVlZFxuICAgICAgICB9KVxuICAgIH1cbiAgICBpc0Nvb2xkb3duLnNldChucGMsIHRydWUpXG4gICAgbnBjRGF0YS5pbkNvb2xkb3duID0gdHJ1ZVxuXG4gICAgdXRpbHMudGltZXJzLnNldFRpbWVvdXQoXG4gICAgICAgIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgaXNDb29sZG93bi5kZWxldGUobnBjKVxuICAgICAgICAgICAgbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS5pbkNvb2xkb3duID0gZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgMTAwMCAqIG5wY0RhdGEuY29vbERvd25EdXJhdGlvblxuICAgIClcbiAgICBjb25zb2xlLmxvZygnYWN0aXZhdGVkIG5wYywnLCBucGNEYXRhQ29tcG9uZW50LmdldChucGMpKVxufVxuXG5mdW5jdGlvbiBlbmRJbnRlcmFjdGlvbihucGM6RW50aXR5KSB7XG4gICAgIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgICBucGNEYXRhLnN0YXRlID0gTlBDU3RhdGUuU1RBTkRJTkdcblxuICAgICAgICBpZiAobnBjRGlhbG9nQ29tcG9uZW50LmhhcyhucGMpKXsvL30gJiYgbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpLnZpc2libGUpIHtcbiAgICAgICAgICAgIGNsb3NlRGlhbG9nKG5wYylcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKG5wY0RhdGEuZmFjZVVzZXIpe1xuICAgICAgICAgICAgaWYoVHJhY2tVc2VyRmxhZy5oYXMobnBjKSl7XG4gICAgICAgICAgICAgICAgVHJhY2tVc2VyRmxhZy5kZWxldGVGcm9tKG5wYylcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKCdlbmRpbmcgaW50ZXJhY3Rpb24nLCBucGNEYXRhLCBidWJibGVzLmdldChucGMpKVxuICAgICAgICBpZihucGNEYXRhLmhhc0J1YmJsZSAmJiBidWJibGVzLmdldChucGMpLmlzQnViYmxlT3Blbil7XG4gICAgICAgICAgICBjbG9zZUJ1YmJsZShucGMpXG4gICAgICAgIH1cbn1cblxuLyoqXG4gKiBFbmRzIGludGVyYWN0aW9uIGFuZCBjYWxscyB0aGUgb25XYWxrQXdheSBmdW5jdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlV2Fsa0F3YXkobnBjOkVudGl0eSkge1xuICAgIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgIGlmIChucGNEYXRhLnN0YXRlID09IE5QQ1N0YXRlLkZPTExPV1BBVEgpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgZW5kSW50ZXJhY3Rpb24obnBjKVxuXG4gICAgaWYgKG9uV2Fsa0F3YXlDYnMuZ2V0KG5wYykpIHtcbiAgICAgICAgb25XYWxrQXdheUNicy5nZXQobnBjKSgpXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGxheUFuaW1hdGlvbihucGM6RW50aXR5LCBhbmltOnN0cmluZywgbm9Mb29wPzpib29sZWFuLCBkdXJhdGlvbj86bnVtYmVyKXtcbiAgICBsZXQgYW5pbWF0aW9ucyA9IEFuaW1hdG9yLmdldE11dGFibGUobnBjKVxuICAgIGlmKGFuaW1hdGlvbnMuc3RhdGVzLmZpbHRlcigoYW5pbWF0aW9uKT0+IGFuaW1hdGlvbi5uYW1lID09PSBhbmltKS5sZW5ndGggPT0gMCl7XG4gICAgICAgIGFuaW1hdGlvbnMuc3RhdGVzLnB1c2goe25hbWU6YW5pbSwgY2xpcDphbmltLCBsb29wOiBub0xvb3A/IGZhbHNlIDogdHJ1ZX0pXG4gICAgfVxuXG4gICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgaWYobnBjRGF0YS5zdGF0ZSA9PSBOUENTdGF0ZS5GT0xMT1dQQVRIKXtcbiAgICAgICAgdXRpbHMucGF0aHMuc3RvcFBhdGgobnBjKVxuICAgIH1cblxuICAgIGlmKGFuaW1UaW1lcnMuaGFzKG5wYykpe1xuICAgICAgICB1dGlscy50aW1lcnMuY2xlYXJUaW1lb3V0KGFuaW1UaW1lcnMuZ2V0KG5wYykpXG4gICAgICAgIGFuaW1UaW1lcnMuZGVsZXRlKG5wYylcbiAgICB9XG5cbiAgICBBbmltYXRvci5zdG9wQWxsQW5pbWF0aW9ucyhucGMsIHRydWUpXG4gICAgQW5pbWF0b3IucGxheVNpbmdsZUFuaW1hdGlvbihucGMsIGFuaW0sIHRydWUpXG4gICAgaWYoZHVyYXRpb24pe1xuICAgICAgICBjb25zb2xlLmxvZygnaGF2ZSBhIGR1cmF0aW9uIHRvIHBsYXkgYW5pbWF0aW9uJylcbiAgICAgICAgaWYoYW5pbVRpbWVycy5oYXMobnBjKSl7XG4gICAgICAgICAgICB1dGlscy50aW1lcnMuY2xlYXJUaW1lb3V0KGFuaW1UaW1lcnMuZ2V0KG5wYykpXG4gICAgICAgICAgICBhbmltVGltZXJzLmRlbGV0ZShucGMpXG4gICAgICAgIH1cbiAgICAgICAgYW5pbVRpbWVycy5zZXQobnBjLCB1dGlscy50aW1lcnMuc2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgYW5pbVRpbWVycy5kZWxldGUobnBjKVxuICAgICAgICAgICAgQW5pbWF0b3Iuc3RvcEFsbEFuaW1hdGlvbnMobnBjLCB0cnVlKVxuICAgICAgICAgICAgaWYobnBjRGF0YS5pZGxlQW5pbSl7XG4gICAgICAgICAgICAgICAgQW5pbWF0b3IucGxheVNpbmdsZUFuaW1hdGlvbihucGMsIG5wY0RhdGEuaWRsZUFuaW0pXG4gICAgICAgICAgICAgICAgbnBjRGF0YS5sYXN0UGxheWVkQW5pbSA9IG5wY0RhdGEuaWRsZUFuaW1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMTAwMCAqIGR1cmF0aW9uKSkvL1xuICAgIH0gXG5cbiAgICBucGNEYXRhLmxhc3RQbGF5ZWRBbmltID0gYW5pbVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hhbmdlSWRsZUFuaW0obnBjOkVudGl0eSwgYW5pbWF0aW9uOnN0cmluZywgcGxheT86Ym9vbGVhbil7XG4gICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgbnBjRGF0YS5pZGxlQW5pbSA9IGFuaW1hdGlvblxuXG4gICAgbGV0IGFuaW1hdGlvbnMgPSBBbmltYXRvci5nZXRNdXRhYmxlKG5wYylcbiAgICBpZihhbmltYXRpb25zLnN0YXRlcy5maWx0ZXIoKGFuaW0pPT4gYW5pbS5uYW1lID09PSBhbmltYXRpb24pLmxlbmd0aCA9PSAwKXtcbiAgICAgICAgYW5pbWF0aW9ucy5zdGF0ZXMucHVzaCh7bmFtZTphbmltYXRpb24sIGNsaXA6YW5pbWF0aW9uLCBsb29wOiB0cnVlfSlcbiAgICB9XG5cbiAgICBpZihwbGF5KXtcbiAgICAgICAgcGxheUFuaW1hdGlvbihucGMsIGFuaW1hdGlvbiwgdHJ1ZSlcbiAgICAgICAgbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS5sYXN0UGxheWVkQW5pbSA9IGFuaW1hdGlvblxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhbGtCdWJibGUobnBjOkVudGl0eSwgc2NyaXB0OkRpYWxvZ1tdLCBzdGFydEluZGV4PzpudW1iZXIgfCBzdHJpbmcpe1xuICAgIG9wZW5CdWJibGUobnBjLCBzY3JpcHQsc3RhcnRJbmRleClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURpYWxvZ1dpbmRvdyhkZWZhdWx0UG9ydHJhaXQ/OkltYWdlRGF0YSwgc291bmQ/OnN0cmluZyl7XG4gICAgbGV0IGRpYWxvZyA9IGVuZ2luZS5hZGRFbnRpdHkoKVxuICAgIGFkZERpYWxvZyhkaWFsb2csc291bmQsIGRlZmF1bHRQb3J0cmFpdClcbiAgICByZXR1cm4gZGlhbG9nXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvcGVuRGlhbG9nV2luZG93KG5wYzpFbnRpdHksIGRpYWxvZzpEaWFsb2dbXSwgc3RhcnRJbmRleD86bnVtYmVyIHwgc3RyaW5nKXtcbiAgICBhY3RpdmVOUEMgPSBucGNcblxuICAgIGlmKG5wY0RpYWxvZ0NvbXBvbmVudC5oYXMobnBjKSl7XG4gICAgICAgIGxldCBpbmRleDphbnlcbiAgICAgICAgaWYgKCFzdGFydEluZGV4KSB7XG4gICAgICAgICAgaW5kZXggPSAwXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHN0YXJ0SW5kZXggPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgaW5kZXggPSBzdGFydEluZGV4XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaW5kZXggPSBmaW5kRGlhbG9nQnlOYW1lKGRpYWxvZywgc3RhcnRJbmRleClcbiAgICAgICAgfVxuICAgICAgICBvcGVuRGlhbG9nKG5wYyxkaWFsb2csIGluZGV4KVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsb3NlRGlhbG9nV2luZG93KHdpbmRvdzpFbnRpdHkpe1xuICAgIGxldCBkaWFsb2cgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KHdpbmRvdylcbiAgICBpZih3aW5kb3cpe1xuICAgICAgICBjbG9zZURpYWxvZyhkaWFsb2cpXG4gICAgfVxufSJdfQ==
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-20230605195454.commit-2733b0c",
3
+ "version": "1.1.2-20230607201542.commit-694c6e0",
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": "2733b0c7315333d508a28bfb7c3fe92f8a4e5c04"
36
+ "commit": "694c6e0bf963b00f5241c4704eaf077d0fa2cc74"
37
37
  }