@magic-xpa/engine 4.801.0-dev481.307 → 4.801.0-dev481.310

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.
Files changed (45) hide show
  1. package/esm2020/src/ClientManager.mjs +2 -10
  2. package/esm2020/src/CurrentClientVersion.mjs +2 -2
  3. package/esm2020/src/GUIManager.mjs +1 -2
  4. package/esm2020/src/GuiEventsProcessor.mjs +2 -19
  5. package/esm2020/src/commands/ClientToServer/CommandFactory.mjs +35 -35
  6. package/esm2020/src/commands/ClientToServer/ComputeEventCommand.mjs +1 -1
  7. package/esm2020/src/commands/ClientToServer/ContextTimeoutResetCommand.mjs +7 -7
  8. package/esm2020/src/commands/ClientToServer/QueryCommand.mjs +1 -1
  9. package/esm2020/src/commands/ClientToServer/RecomputeCommand.mjs +2 -2
  10. package/esm2020/src/commands/ServerToClient/ClientTargetedCommandBase.mjs +1 -1
  11. package/esm2020/src/commands/ServerToClient/VerifyCommand.mjs +1 -3
  12. package/esm2020/src/communications/InteractiveCommunicationsFailureHandler.mjs +1 -1
  13. package/esm2020/src/data/DvCache.mjs +4 -29
  14. package/esm2020/src/env/Environment.mjs +2 -5
  15. package/esm2020/src/env/LanguageData.mjs +1 -2
  16. package/esm2020/src/event/Event.mjs +1 -3
  17. package/esm2020/src/event/EventsManager.mjs +2 -16
  18. package/esm2020/src/gui/MgControl.mjs +1 -3
  19. package/esm2020/src/gui/MgForm.mjs +1 -2
  20. package/esm2020/src/http/client/HttpClientBase.mjs +1 -17
  21. package/esm2020/src/remote/RemoteCommandsProcessor.mjs +1 -10
  22. package/esm2020/src/rt/DataviewHeaders.mjs +2 -4
  23. package/esm2020/src/rt/LastFocusedManager.mjs +1 -5
  24. package/esm2020/src/rt/Operation.mjs +2 -12
  25. package/esm2020/src/tasks/Task.mjs +2 -5
  26. package/esm2020/src/util/FlowMonitorQueue.mjs +1 -3
  27. package/esm2020/src/util/MgPriorityBlockingQueue.mjs +1 -3
  28. package/fesm2015/magic-xpa-engine.mjs +162 -286
  29. package/fesm2015/magic-xpa-engine.mjs.map +1 -1
  30. package/fesm2020/magic-xpa-engine.mjs +155 -276
  31. package/fesm2020/magic-xpa-engine.mjs.map +1 -1
  32. package/package.json +4 -4
  33. package/src/ClientManager.d.ts +0 -3
  34. package/src/GuiEventsProcessor.d.ts +0 -2
  35. package/src/commands/ClientToServer/CommandFactory.d.ts +35 -35
  36. package/src/commands/ClientToServer/ContextTimeoutResetCommand.d.ts +2 -2
  37. package/src/commands/ServerToClient/VerifyCommand.d.ts +0 -1
  38. package/src/data/DvCache.d.ts +2 -6
  39. package/src/env/Environment.d.ts +0 -2
  40. package/src/event/Event.d.ts +0 -1
  41. package/src/event/EventsManager.d.ts +0 -1
  42. package/src/http/client/HttpClientBase.d.ts +0 -2
  43. package/src/remote/RemoteCommandsProcessor.d.ts +0 -4
  44. package/src/rt/DataviewHeaders.d.ts +1 -3
  45. package/src/rt/Operation.d.ts +0 -4
@@ -321,12 +321,10 @@ FlowMonitorQueue.ACT_FLW_OPER = 'T';
321
321
  FlowMonitorQueue.LongTimePattern = "HH:mm:ss:SSS";
322
322
  class ActivityItem {
323
323
  constructor(enclosingInstance, type, id) {
324
- this._enclosingInstance = null;
325
324
  this._id = 0;
326
325
  this._type = null;
327
326
  this._info = null;
328
327
  this._time = null;
329
- this._enclosingInstance = enclosingInstance;
330
328
  this._type = type;
331
329
  this._id = id;
332
330
  this.setTime();
@@ -347,4 +345,4 @@ class ActivityItem {
347
345
  message.Append(XMLConstants.TAG_TERM);
348
346
  }
349
347
  }
350
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd01vbml0b3JRdWV1ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvdXRpbC9GbG93TW9uaXRvclF1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxRQUFRLEVBQVEsT0FBTyxFQUFFLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzVFLE9BQU8sRUFBQyxTQUFTLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBRXJILE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUdqRCxNQUFNLE9BQU8sZ0JBQWdCO0lBQTdCO1FBcUNVLFdBQU0sR0FBd0IsSUFBSSxLQUFLLEVBQWdCLENBQUM7UUFDeEQsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDOUIsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUN6QixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUNyQyxvQkFBZSxHQUFZLEtBQUssQ0FBQztJQXlabkMsQ0FBQztJQXZaQyxNQUFNLEtBQUssUUFBUTtRQUNqQixJQUFJLGdCQUFnQixDQUFDLFNBQVMsS0FBSyxJQUFJO1lBQ3JDLGdCQUFnQixDQUFDLFNBQVMsR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFFdEQsT0FBTyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7SUFDcEMsQ0FBQztJQUVELGNBQWMsQ0FBQyxXQUFtQixFQUFFLFFBQWdCO1FBQ2xELElBQUksSUFBSSxHQUFXLHFCQUFxQixDQUFDO1FBQ3pDLElBQUksSUFBSSxDQUFDLFFBQVEsSUFB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QUFLLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDOUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJRmxvd01vbml0b3JRdWV1ZX0gZnJvbSAnQG1hZ2ljLXhwYS9ndWknO1xyXG5pbXBvcnQge0RhdGVUaW1lLCBMaXN0LCBOU3RyaW5nLCBTdHJpbmdCdWlsZGVyfSBmcm9tICdAbWFnaWMteHBhL21zY29yZWxpYic7XHJcbmltcG9ydCB7Q29uc3RhbnRzLCBEYXRlVGltZVV0aWxzLCBJbnRlcm5hbEludGVyZmFjZSwgTG9nZ2VyLCBRdWV1ZSwgWE1MQ29uc3RhbnRzLCBYbWxQYXJzZXJ9IGZyb20gJ0BtYWdpYy14cGEvdXRpbHMnO1xyXG5pbXBvcnQge09wZXJhdGlvbn0gZnJvbSAnLi4vcnQvT3BlcmF0aW9uJztcclxuaW1wb3J0IHtGbG93TW9uaXRvckludGVyZmFjZX0gZnJvbSAnLi4vRmxvd01vbml0b3JJbnRlcmZhY2UnO1xyXG5pbXBvcnQge0NvbnN0SW50ZXJmYWNlfSBmcm9tICcuLi9Db25zdEludGVyZmFjZSc7XHJcblxyXG4vLyBAZHluYW1pY1xyXG5leHBvcnQgY2xhc3MgRmxvd01vbml0b3JRdWV1ZSBpbXBsZW1lbnRzIElGbG93TW9uaXRvclF1ZXVlIHtcclxuICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IEZsb3dNb25pdG9yUXVldWUgPSBudWxsO1xyXG4gIHByaXZhdGUgc3RhdGljIFNfRVZFTlRfU1RSMTogc3RyaW5nID0gXCI+PlN0YXJ0cyBcIjtcclxuICBwcml2YXRlIHN0YXRpYyBTX0VWRU5UX1NUUjI6IHN0cmluZyA9IFwiIEV2ZW50XCI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgU19FVkVOVF9QUk9QQUdBVEVEOiBzdHJpbmcgPSBcIkV2ZW50IHdhcyBwcm9wYWdhdGVkXCI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgRV9FVkVOVF9TVFI6IHN0cmluZyA9IFwiPDxFbmRzIEV2ZW50XCI7XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIFNfUkVDUFJGX1NUUjogc3RyaW5nID0gXCJTdGFydHMgUmVjb3JkIFByZWZpeFwiO1xyXG4gIHByaXZhdGUgc3RhdGljIEVfUkVDUFJGX1NUUjogc3RyaW5nID0gXCJFbmRzIFJlY29yZCBQcmVmaXhcIjtcclxuICBwcml2YXRlIHN0YXRpYyBTX1JFQ1NVRl9TVFI6IHN0cmluZyA9IFwiU3RhcnRzIFJlY29yZCBTdWZmaXhcIjtcclxuICBwcml2YXRlIHN0YXRpYyBFX1JFQ1NVRl9TVFI6IHN0cmluZyA9IFwiRW5kcyBSZWNvcmQgU3VmZml4XCI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgU19UQVNLU1VGX1NUUjogc3RyaW5nID0gXCJTdGFydHMgVGFzayBTdWZmaXhcIjtcclxuICBwcml2YXRlIHN0YXRpYyBFX1RBU0tTVUZfU1RSOiBzdHJpbmcgPSBcIkVuZHMgVGFzayBTdWZmaXhcIjtcclxuICBwcml2YXRlIHN0YXRpYyBTX1RBU0tQUkZfU1RSOiBzdHJpbmcgPSBcIlN0YXJ0cyBUYXNrIFByZWZpeFwiO1xyXG4gIHByaXZhdGUgc3RhdGljIEVfVEFTS1BSRl9TVFI6IHN0cmluZyA9IFwiRW5kcyBUYXNrIFByZWZpeFwiO1xyXG4gIHByaXZhdGUgc3RhdGljIFNfQ1RSTFBSRl9TVFI6IHN0cmluZyA9IFwiU3RhcnRzIENvbnRyb2wgUHJlZml4IC0gXCI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgRV9DVFJMUFJGX1NUUjogc3RyaW5nID0gXCJFbmRzIENvbnRyb2wgUHJlZml4IC0gXCI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgU19DVFJMU1VGX1NUUjogc3RyaW5nID0gXCJTdGFydHMgQ29udHJvbCBTdWZmaXggLSBcIjtcclxuICBwcml2YXRlIHN0YXRpYyBFX0NUUkxTVUZfU1RSOiBzdHJpbmcgPSBcIkVuZHMgQ29udHJvbCBTdWZmaXggLSBcIjtcclxuICBwcml2YXRlIHN0YXRpYyBTX0hBTkRMRVJfU1RSOiBzdHJpbmcgPSBcIlN0YXJ0cyBoYW5kbGluZyBldmVudCB7MH1cIjtcclxuICBwcml2YXRlIHN0YXRpYyBFX0hBTkRMRVJfU1RSOiBzdHJpbmcgPSBcIkVuZHMgaGFuZGxpbmcgZXZlbnQgezB9XCI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgU19DVFJMVkVSX1NUUjogc3RyaW5nID0gXCJTdGFydHMgQ29udHJvbCBWZXJpZmljYXRpb24gZm9yIENvbnRyb2wgLSBcIjtcclxuICBwcml2YXRlIHN0YXRpYyBFX0NUUkxWRVJfU1RSOiBzdHJpbmcgPSBcIkVuZHMgQ29udHJvbCBWZXJpZmljYXRpb24gZm9yIENvbnRyb2wgLSBcIjtcclxuICBwcml2YXRlIHN0YXRpYyBSRUNPTVBfU1RSOiBzdHJpbmcgPSBcIlJlY29tcHV0ZXMgLSBcIjtcclxuICBwcml2YXRlIHN0YXRpYyBTX1ZBUklBQkxFX1NUUjogc3RyaW5nID0gXCJTdGFydHMgVmFyaWFibGUgQ2hhbmdlIC0gXCI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgRV9WQVJJQUJMRV9TVFI6IHN0cmluZyA9IFwiRW5kcyBWYXJpYWJsZSBDaGFuZ2UgLSBcIjtcclxuICBwcml2YXRlIHN0YXRpYyBWQVJJQUJMRV9SRUFTT05fU1RSOiBzdHJpbmcgPSBcIiAtIFJlYXNvbiAtIFByZXZpb3VzIHZhbHVlXCI7XHJcblxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBGTFdfUEVSRklYOiBzdHJpbmcgPSBcIkZsb3cgLSBcIjtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgQUNUX1RBU0s6IHN0cmluZyA9ICdUJztcclxuICBwcml2YXRlIHN0YXRpYyBBQ1RfVEFTS19GTFc6IHN0cmluZyA9ICdGJztcclxuICBwcml2YXRlIHN0YXRpYyBBQ1RfUkVDT01QVVRFOiBzdHJpbmcgPSAnUic7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgQUNUX0ZMV19PUEVSOiBzdHJpbmcgPSAnVCc7XHJcblxyXG4gIHN0YXRpYyBMb25nVGltZVBhdHRlcm4gPSBcIkhIOm1tOnNzOlNTU1wiO1xyXG4gIHByaXZhdGUgX3F1ZXVlOiBRdWV1ZTxBY3Rpdml0eUl0ZW0+ID0gbmV3IFF1ZXVlPEFjdGl2aXR5SXRlbT4oKTtcclxuICBwcml2YXRlIF9lbmFibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfaXNGbG93T3BlcmF0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfaXNSZWNvbXB1dGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9pc1Rhc2s6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9pc1Rhc2tGbG93OiBib29sZWFuID0gZmFsc2U7XHJcbiAgU2hvdWxkU2VyaWFsaXplOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHN0YXRpYyBnZXQgSW5zdGFuY2UoKTogRmxvd01vbml0b3JRdWV1ZSB7XHJcbiAgICBpZiAoRmxvd01vbml0b3JRdWV1ZS5faW5zdGFuY2UgPT09IG51bGwpXHJcbiAgICAgIEZsb3dNb25pdG9yUXVldWUuX2luc3RhbmNlID0gbmV3IEZsb3dNb25pdG9yUXVldWUoKTtcclxuXHJcbiAgICByZXR1cm4gRmxvd01vbml0b3JRdWV1ZS5faW5zdGFuY2U7XHJcbiAgfVxyXG5cclxuICBhZGRUYXNrQ25nTW9kZShuZXdUYXNrTW9kZTogc3RyaW5nLCB0YXNrSW5mbzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBsZXQgaW5mbzogc3RyaW5nID0gXCJUYXNrIE1vZGUgQ2hhbmdlIC0gXCI7XHJcbiAgICBpZiAodGhpcy5fZW5hYmxlZCAmJiB0aGlzLl9pc1Rhc2spIHtcclxuICAgICAgbGV0IGFjdGl2aXR5SXRlbTogQWN0aXZpdHlJdGVtID0gbmV3IEFjdGl2aXR5SXRlbSh0aGlzLCBGbG93TW9uaXRvclF1ZXVlLkFDVF9UQVNLLCBGbG93TW9uaXRvckludGVyZmFjZS5GTFdNVFJfQ0hOR19NT0RFKTtcclxuXHJcbiAgICAgIHN3aXRjaCAobmV3VGFza01vZGUpIHtcclxuICAgICAgICBjYXNlIENvbnN0YW50cy5UQVNLX01PREVfTU9ESUZZOlxyXG4gICAgICAgICAgaW5mbyArPSBcIk1vZGlmeVwiO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG5cclxuICAgICAgICBjYXNlIENvbnN0YW50cy5UQVNLX01PREVfQ1JFQVRFOlxyXG4gICAgICAgICAgaW5mbyArPSBcIkNyZWF0ZVwiO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG5cclxuICAgICAgICBjYXNlIENvbnN0YW50cy5UQVNLX01PREVfREVMRVRFOlxyXG4gICAgICAgICAgaW5mbyArPSBcIkRlbGV0ZVwiO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG5cclxuICAgICAgICBjYXNlIENvbnN0YW50cy5UQVNLX01PREVfUVVFUlk6XHJcbiAgICAgICAgICBpbmZvICs9IFwiUXVlcnlcIjtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuXHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGluZm8gPSBudWxsO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGFjdGl2aXR5SXRlbS5zZXRJbmZvKGluZm8pO1xyXG4gICAgICB0aGlzLl9xdWV1ZS5wdXQoYWN0aXZpdHlJdGVtKTtcclxuXHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZVN1cHBvcnRUb0xvZyh0YXNrSW5mbyArXCI6IFwiICsgaW5mbywgdHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcGFyc2UgdGhlIGRhdGFcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGZpbGxEYXRhKHBhcnNlcjogWG1sUGFyc2VyKTogdm9pZCB7XHJcbiAgICBsZXQgZW5kQ29udGV4dDogbnVtYmVyID0gcGFyc2VyLmdldFhNTGRhdGEoKS5pbmRleE9mKFwiLz5cIiwgcGFyc2VyLmdldEN1cnJJbmRleCgpKTtcclxuICAgIGlmIChlbmRDb250ZXh0ICE9PSAtMSAmJiBlbmRDb250ZXh0IDwgcGFyc2VyLmdldFhNTGRhdGEoKS5sZW5ndGgpIHtcclxuICAgICAgLy8gZmluZCBsYXN0IHBvc2l0aW9uIG9mIGl0cyB0YWdcclxuICAgICAgbGV0IHRhZzogc3RyaW5nID0gcGFyc2VyLmdldFhNTHN1YnN0cmluZyhlbmRDb250ZXh0KTtcclxuICAgICAgcGFyc2VyLmFkZDJDdXJySW5kZXgodGFnLmluZGV4T2YoXCJmbHdtdHJfY29uZmlnXCIpICsgXCJmbHdtdHJfY29uZmlnXCIubGVuZ3RoKTtcclxuXHJcbiAgICAgIGxldCB0b2tlbnM6IExpc3Q8c3RyaW5nPiA9IFhtbFBhcnNlci5nZXRUb2tlbnMocGFyc2VyLmdldFhNTHN1YnN0cmluZyhlbmRDb250ZXh0KSwgWE1MQ29uc3RhbnRzLlhNTF9BVFRSX0RFTElNKTtcclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRGV2VG9Mb2coXCJpbiBGbG93TW9uaXRvclF1ZXVlLkZpbGxEYXRhOiBcIiArIHRva2Vucy50b1N0cmluZygpKTtcclxuXHJcbiAgICAgIHRoaXMuaW5pdEVsZW1lbnRzKHRva2Vucyk7XHJcbiAgICAgIHBhcnNlci5zZXRDdXJySW5kZXgoZW5kQ29udGV4dCArIFhNTENvbnN0YW50cy5UQUdfVEVSTS5sZW5ndGgpOyAvLyB0byBkZWxldGUgXCIvPlwiIHRvb1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coXCJpbiAgRmxvd01vbml0b3JRdWV1ZS5GaWxsRGF0YSgpIG91dCBvZiBzdHJpbmcgYm91bmRzXCIpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHBhcnNlIHRoZSBYTUwgZGF0YVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0b2tlbnNWZWN0b3JcIj5hdHRyaWJ1dGUvdmFsdWUvLi4uYXR0cmlidXRlL3ZhbHVlLyB2ZWN0b3I8L3BhcmFtPlxyXG4gIHByaXZhdGUgaW5pdEVsZW1lbnRzKHRva2Vuc1ZlY3RvcjogTGlzdDxzdHJpbmc+KTogdm9pZCB7XHJcblxyXG4gICAgZm9yIChsZXQgajogbnVtYmVyID0gMDsgaiA8IHRva2Vuc1ZlY3Rvci5sZW5ndGg7IGogPSBqICsgMikge1xyXG4gICAgICBsZXQgYXR0cmlidXRlOiBzdHJpbmcgPSA8c3RyaW5nPnRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqKTtcclxuICAgICAgbGV0IHZhbHVlU3RyOiBzdHJpbmcgPSA8c3RyaW5nPnRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqICsgMSk7XHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZURldlRvTG9nKGF0dHJpYnV0ZSArIFwiIHZhbHVlOiBcIiArIHZhbHVlU3RyKTtcclxuXHJcbiAgICAgIHN3aXRjaCAoYXR0cmlidXRlKSB7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX1RBU0s6XHJcbiAgICAgICAgICB0aGlzLl9pc1Rhc2sgPSBYbWxQYXJzZXIuZ2V0Qm9vbGVhbih2YWx1ZVN0cik7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX1RBU0tGTFc6XHJcbiAgICAgICAgICB0aGlzLl9pc1Rhc2tGbG93ID0gWG1sUGFyc2VyLmdldEJvb2xlYW4odmFsdWVTdHIpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9SRUNPTVA6XHJcbiAgICAgICAgICB0aGlzLl9pc1JlY29tcHV0ZSA9IFhtbFBhcnNlci5nZXRCb29sZWFuKHZhbHVlU3RyKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfRkxXT1A6XHJcbiAgICAgICAgICB0aGlzLl9pc0Zsb3dPcGVyYXRpb24gPSBYbWxQYXJzZXIuZ2V0Qm9vbGVhbih2YWx1ZVN0cik7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0VOQUJMRUQ6XHJcbiAgICAgICAgICB0aGlzLmVuYWJsZShYbWxQYXJzZXIuZ2V0Qm9vbGVhbih2YWx1ZVN0cikpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coXCJpbiBGbG93TW9uaXRvclF1ZXVlLmluaXRFbGVtZW50cygpOiB1bmtub3duICBhdHRyaWJ1dGU6IFwiICsgYXR0cmlidXRlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgYnVpbGQgWE1MIGFuZCBlbXB0eSB0aGUgaW5uZXIgcXVldWVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGJ1aWxkWE1MKG1lc3NhZ2U6IFN0cmluZ0J1aWxkZXIpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5fcXVldWUuaXNFbXB0eSgpICYmIHRoaXMuU2hvdWxkU2VyaWFsaXplKSB7XHJcbiAgICAgIG1lc3NhZ2UuQXBwZW5kKFhNTENvbnN0YW50cy5TVEFSVF9UQUcgKyBDb25zdEludGVyZmFjZS5NR19UQUdfRkxXTVRSX01TRyArIFhNTENvbnN0YW50cy5UQUdfQ0xPU0UpO1xyXG5cclxuICAgICAgd2hpbGUgKCF0aGlzLl9xdWV1ZS5pc0VtcHR5KCkpIHtcclxuICAgICAgICBsZXQgY3VyckFjdDogQWN0aXZpdHlJdGVtID0gPEFjdGl2aXR5SXRlbT50aGlzLl9xdWV1ZS5nZXQoKTtcclxuICAgICAgICBjdXJyQWN0LmJ1aWxkWE1MKG1lc3NhZ2UpO1xyXG4gICAgICB9IC8vIGZpbGwgYWN0aXZpdGllc1xyXG5cclxuICAgICAgbWVzc2FnZS5BcHBlbmQoXCI8L1wiICsgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX0ZMV01UUl9NU0cgKyBYTUxDb25zdGFudHMuVEFHX0NMT1NFKTtcclxuICAgIH0gLy8gdGhlIHF1ZXVlIGlzIG5vdCBlbXB0eVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGlzIHRoZSBGbG93IE1vbml0b3IgUXVldWUgZW1wdHlcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGlzRW1wdHkoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcXVldWUuaXNFbXB0eSgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGVuYWJsZSB0aGUgZmxvdyBtb25pdG9yXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+dGhlIHByZXZpb3VzIHN0YXRlIChlbmFibGVkL2Rpc2FibGVkKTwvcmV0dXJucz5cclxuICBlbmFibGUodmFsdWU6IGJvb2xlYW4pOiBib29sZWFuIHtcclxuICAgIGxldCB3YXNFbmFibGVkOiBib29sZWFuID0gdGhpcy5fZW5hYmxlZDtcclxuICAgIHRoaXMuX2VuYWJsZWQgPSB2YWx1ZTtcclxuICAgIHRoaXMuU2hvdWxkU2VyaWFsaXplID0gdGhpcy5fZW5hYmxlZDtcclxuICAgIHJldHVybiB3YXNFbmFibGVkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGFkZCBBY3Rpdml0aWVzIHRvIHRoZSBxdWV1ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0cmlnZ2VyZWRCeVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdGF0ZVwiPm9mIHRoZSBldmVudCB0YXNrIGFjdGl2aXRpZTwvcGFyYW0+XHJcbiAgYWRkVGFza0V2ZW50KHRyaWdnZXJlZEJ5OiBzdHJpbmcsIHN0YXRlOiBudW1iZXIsIHRhc2tJbmZvOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9lbmFibGVkICYmIHRoaXMuX2lzVGFzaykge1xyXG4gICAgICBsZXQgYWN0OiBBY3Rpdml0eUl0ZW0gPSBuZXcgQWN0aXZpdHlJdGVtKHRoaXMsIEZsb3dNb25pdG9yUXVldWUuQUNUX1RBU0ssIEZsb3dNb25pdG9ySW50ZXJmYWNlLkZMV01UUl9FVkVOVCk7XHJcblxyXG4gICAgICBsZXQgaW5mbzogc3RyaW5nO1xyXG4gICAgICBzd2l0Y2ggKHN0YXRlKSB7XHJcbiAgICAgICAgY2FzZSBGbG93TW9uaXRvckludGVyZmFjZS5GTFdNVFJfU1RBUlQ6XHJcbiAgICAgICAgICBpbmZvID0gRmxvd01vbml0b3JRdWV1ZS5TX0VWRU5UX1NUUjEgKyB0cmlnZ2VyZWRCeSArIEZsb3dNb25pdG9yUXVldWUuU19FVkVOVF9TVFIyO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX0VORDpcclxuICAgICAgICAgIGluZm8gPSBGbG93TW9uaXRvclF1ZXVlLkVfRVZFTlRfU1RSICsgdHJpZ2dlcmVkQnk7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBGbG93TW9uaXRvckludGVyZmFjZS5GTFdNVFJfUFJPUEFHQVRFOlxyXG4gICAgICAgICAgaW5mbyA9IEZsb3dNb25pdG9yUXVldWUuU19FVkVOVF9QUk9QQUdBVEVEO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBpbmZvID0gbnVsbDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBhY3Quc2V0SW5mbyhpbmZvKTtcclxuICAgICAgdGhpcy5fcXVldWUucHV0KGFjdCk7XHJcblxyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVTdXBwb3J0VG9Mb2codGFza0luZm8gK1wiOiBcIiArIGluZm8sIHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGFkZCB0YXNrIGZsb3cgZm9yIHJlY29yZCBwcmVmaXggb3Igc3VmaXhcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaWRcIj5pcyBGTFdNVFJfUFJFRklYIG9yIEZMV01UUl9TVUZGSVhcclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInN0YXRlXCI+b2YgdGhlIGV2ZW50IHRhc2sgYWN0aXZpdGllXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgYWRkVGFza0Zsb3dSZWMoaWQ6IG51bWJlciwgc3RhdGU6IG51bWJlciwgdGFza0luZm86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2VuYWJsZWQgJiYgdGhpcy5faXNUYXNrRmxvdykge1xyXG4gICAgICBsZXQgaW5mbzogc3RyaW5nO1xyXG5cclxuICAgICAgc3dpdGNoIChpZCkge1xyXG4gICAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JFQ19QUkVGSVg6XHJcbiAgICAgICAgICBpbmZvID0gc3RhdGUgPT09IEZsb3dNb25pdG9ySW50ZXJmYWNlLkZMV01UUl9TVEFSVFxyXG4gICAgICAgICAgICA/IEZsb3dNb25pdG9yUXVldWUuU19SRUNQUkZfU1RSXHJcbiAgICAgICAgICAgIDogRmxvd01vbml0b3JRdWV1ZS5FX1JFQ1BSRl9TVFI7XHJcbiAgICAgICAgICBpZCA9IEZsb3dNb25pdG9ySW50ZXJmYWNlLkZMV01UUl9QUkVGSVg7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUkVDX1NVRkZJWDpcclxuICAgICAgICAgIGluZm8gPSBzdGF0ZSA9PT0gRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX1NUQVJUXHJcbiAgICAgICAgICAgID8gRmxvd01vbml0b3JRdWV1ZS5TX1JFQ1NVRl9TVFJcclxuICAgICAgICAgICAgOiBGbG93TW9uaXRvclF1ZXVlLkVfUkVDU1VGX1NUUjtcclxuICAgICAgICAgIGlkID0gRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX1NVRkZJWDtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UQVNLX1BSRUZJWDpcclxuICAgICAgICAgIGluZm8gPSBzdGF0ZSA9PT0gRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX1NUQVJUXHJcbiAgICAgICAgICAgID8gRmxvd01vbml0b3JRdWV1ZS5TX1RBU0tQUkZfU1RSXHJcbiAgICAgICAgICAgIDogRmxvd01vbml0b3JRdWV1ZS5FX1RBU0tQUkZfU1RSO1xyXG4gICAgICAgICAgaWQgPSBGbG93TW9uaXRvckludGVyZmFjZS5GTFdNVFJfUFJFRklYO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RBU0tfU1VGRklYOlxyXG4gICAgICAgICAgaW5mbyA9IHN0YXRlID09PSBGbG93TW9uaXRvckludGVyZmFjZS5GTFdNVFJfU1RBUlRcclxuICAgICAgICAgICAgPyBGbG93TW9uaXRvclF1ZXVlLlNfVEFTS1NVRl9TVFJcclxuICAgICAgICAgICAgOiBGbG93TW9uaXRvclF1ZXVlLkVfVEFTS1NVRl9TVFI7XHJcbiAgICAgICAgICBpZCA9IEZsb3dNb25pdG9ySW50ZXJmYWNlLkZMV01UUl9TVUZGSVg7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGluZm8gPSBudWxsO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBhY3Q6IEFjdGl2aXR5SXRlbSA9IG5ldyBBY3Rpdml0eUl0ZW0odGhpcywgRmxvd01vbml0b3JRdWV1ZS5BQ1RfVEFTS19GTFcsIGlkKTtcclxuICAgICAgYWN0LnNldEluZm8oaW5mbyk7XHJcbiAgICAgIHRoaXMuX3F1ZXVlLnB1dChhY3QpO1xyXG5cclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlU3VwcG9ydFRvTG9nKHRhc2tJbmZvICtcIjogXCIgKyBpbmZvLCB0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaWRcIj5pcyBNR19BQ1RfVkFSSUFCTEU8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZmxkTmFtZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdGF0ZVwiPm9mIHRoZSBldmVudCB0YXNrIGFjdGl2aXRpZTwvcGFyYW0+XHJcbiAgYWRkVGFza0Zsb3dGbGQoaWQ6IG51bWJlciwgZmxkTmFtZTogc3RyaW5nLCBzdGF0ZTogbnVtYmVyLCB0YXNrSW5mbzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmFkZFRhc2tGbG93Q3RybChpZCwgZmxkTmFtZSwgc3RhdGUsIHRhc2tJbmZvKTtcclxuICB9XHJcblxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaWRcIj5pcyBGTFdNVFJfQ1RSTF9QUkVGSVggb3IgRkxXTVRSX0NUUkxfU1VGRklYPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImN0cmxOYW1lXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInN0YXRlXCI+b2YgdGhlIGV2ZW50IHRhc2sgYWN0aXZpdGllPC9wYXJhbT5cclxuICBhZGRUYXNrRmxvd0N0cmwoaWQ6IG51bWJlciwgY3RybE5hbWU6IHN0cmluZywgc3RhdGU6IG51bWJlciwgdGFza0luZm86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2VuYWJsZWQgJiYgdGhpcy5faXNUYXNrRmxvdykge1xyXG4gICAgICBsZXQgaW5mbzogc3RyaW5nO1xyXG5cclxuICAgICAgc3dpdGNoIChpZCkge1xyXG4gICAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1ZBUklBQkxFOlxyXG4gICAgICAgICAgaW5mbyA9IHN0YXRlID09PSBGbG93TW9uaXRvckludGVyZmFjZS5GTFdNVFJfU1RBUlRcclxuICAgICAgICAgICAgPyBGbG93TW9uaXRvclF1ZXVlLlNfVkFSSUFCTEVfU1RSXHJcbiAgICAgICAgICAgIDogRmxvd01vbml0b3JRdWV1ZS5FX1ZBUklBQkxFX1NUUjtcclxuICAgICAgICAgIGlkID0gRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX1ZBUkNIR19WQUxVRTtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1BSRUZJWDpcclxuICAgICAgICAgIGluZm8gPSBzdGF0ZSA9PT0gRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX1NUQVJUXHJcbiAgICAgICAgICAgID8gRmxvd01vbml0b3JRdWV1ZS5TX0NUUkxQUkZfU1RSXHJcbiAgICAgICAgICAgIDogRmxvd01vbml0b3JRdWV1ZS5FX0NUUkxQUkZfU1RSO1xyXG4gICAgICAgICAgaWQgPSBGbG93TW9uaXRvckludGVyZmFjZS5GTFdNVFJfQ1RSTF9QUkVGSVg7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcblxyXG4gICAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NUUkxfU1VGRklYOlxyXG4gICAgICAgICAgaW5mbyA9IHN0YXRlID09PSBGbG93TW9uaXRvckludGVyZmFjZS5GTFdNVFJfU1RBUlRcclxuICAgICAgICAgICAgPyBGbG93TW9uaXRvclF1ZXVlLlNfQ1RSTFNVRl9TVFJcclxuICAgICAgICAgICAgOiBGbG93TW9uaXRvclF1ZXVlLkVfQ1RSTFNVRl9TVFI7XHJcbiAgICAgICAgICBpZCA9IEZsb3dNb25pdG9ySW50ZXJmYWNlLkZMV01UUl9DVFJMX1NVRkZJWDtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1ZFUklGSUNBVElPTjpcclxuICAgICAgICAgIGluZm8gPSBzdGF0ZSA9PT0gRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX1NUQVJUXHJcbiAgICAgICAgICAgID8gRmxvd01vbml0b3JRdWV1ZS5TX0NUUkxWRVJfU1RSXHJcbiAgICAgICAgICAgIDogRmxvd01vbml0b3JRdWV1ZS5FX0NUUkxWRVJfU1RSO1xyXG4gICAgICAgICAgaWQgPSBGbG93TW9uaXRvckludGVyZmFjZS5GTFdNVFJfQ1RSTF9TVUZGSVg7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGluZm8gPSBudWxsO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBhY3Q6IEFjdGl2aXR5SXRlbSA9IG5ldyBBY3Rpdml0eUl0ZW0odGhpcywgRmxvd01vbml0b3JRdWV1ZS5BQ1RfVEFTS19GTFcsIGlkKTtcclxuICAgICAgaWYgKGluZm8gIT09IG51bGwpIHtcclxuICAgICAgICBpbmZvID0gaW5mbyArIGN0cmxOYW1lO1xyXG4gICAgICAgIGlmIChpZCA9PT0gRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX1ZBUkNIR19WQUxVRSAmJiBzdGF0ZSA9PT0gRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX1NUQVJUKVxyXG4gICAgICAgICAgaW5mbyA9IGluZm8gKyBGbG93TW9uaXRvclF1ZXVlLlZBUklBQkxFX1JFQVNPTl9TVFI7XHJcbiAgICAgICAgYWN0LnNldEluZm8oaW5mbyk7XHJcbiAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlU3VwcG9ydFRvTG9nKHRhc2tJbmZvICtcIjogXCIgKyBpbmZvLCB0cnVlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9xdWV1ZS5wdXQoYWN0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaGFuZGxlcklkXCI+aXNpZCBvZiB0aGUgaGFuZGxlclxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3RhdGVcIj5vZiB0aGUgZXZlbnQgdGFzayBhY3Rpdml0aWVcclxuICAvLy8gPC9wYXJhbT5cclxuICBhZGRUYXNrRmxvd0hhbmRsZXIoaGFuZGxlcklkOiBzdHJpbmcsIHN0YXRlOiBudW1iZXIsIHRhc2tJbmZvOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9lbmFibGVkICYmIHRoaXMuX2lzVGFza0Zsb3cpIHtcclxuICAgICAgbGV0IGFjdDogQWN0aXZpdHlJdGVtID0gbmV3IEFjdGl2aXR5SXRlbSh0aGlzLCBGbG93TW9uaXRvclF1ZXVlLkFDVF9UQVNLX0ZMVywgRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX1RTS19IQU5ETEVSKTtcclxuICAgICAgbGV0IGluZm86IHN0cmluZztcclxuXHJcbiAgICAgIHN3aXRjaCAoc3RhdGUpIHtcclxuICAgICAgICBjYXNlIEZsb3dNb25pdG9ySW50ZXJmYWNlLkZMV01UUl9TVEFSVDpcclxuICAgICAgICAgIGluZm8gPSBOU3RyaW5nLkZvcm1hdChGbG93TW9uaXRvclF1ZXVlLlNfSEFORExFUl9TVFIsIGhhbmRsZXJJZCk7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBGbG93TW9uaXRvckludGVyZmFjZS5GTFdNVFJfRU5EOlxyXG4gICAgICAgICAgaW5mbyA9IE5TdHJpbmcuRm9ybWF0KEZsb3dNb25pdG9yUXVldWUuRV9IQU5ETEVSX1NUUiwgaGFuZGxlcklkKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgaW5mbyA9IG51bGw7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGluZm8gIT09IG51bGwpIHtcclxuICAgICAgICAvLyBCUktfTEVWRUxfSEFORExFUl9JTlRFUk5BTCxCUktfTEVWRUxfSEFORExFUl9TWVNURU0sQlJLX0xFVkVMX0hBTkRMRVJfVElNRVJcclxuICAgICAgICAvLyBCUktfTEVWRUxfSEFORExFUl9FWFBSRVNTSU9OLEJSS19MRVZFTF9IQU5ETEVSX0VSUk9SLEJSS19MRVZFTF9IQU5ETEVSX1VTRVJcclxuICAgICAgICBhY3Quc2V0SW5mbyhpbmZvKTtcclxuICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVTdXBwb3J0VG9Mb2codGFza0luZm8gK1wiOiBcIiArIGluZm8sIHRydWUpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX3F1ZXVlLnB1dChhY3QpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0cmlnZ2VyZWRCeVZhck5hbWVcIj52YXIgbmFtZSAsIGhhcyB0cmlnZ2VyZWQgUmVjb21wdXRlXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgYWRkUmVjb21wdXRlKHRyaWdnZXJlZEJ5VmFyTmFtZTogc3RyaW5nLCB0YXNrSW5mbzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fZW5hYmxlZCAmJiB0aGlzLl9pc1JlY29tcHV0ZSkge1xyXG4gICAgICBsZXQgYWN0OiBBY3Rpdml0eUl0ZW0gPSBuZXcgQWN0aXZpdHlJdGVtKHRoaXMsIEZsb3dNb25pdG9yUXVldWUuQUNUX1JFQ09NUFVURSwgRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX1JFQ09NUCk7XHJcbiAgICAgIGxldCBpbmZvID0gRmxvd01vbml0b3JRdWV1ZS5SRUNPTVBfU1RSICsgdHJpZ2dlcmVkQnlWYXJOYW1lO1xyXG4gICAgICBhY3Quc2V0SW5mbyhpbmZvKTtcclxuICAgICAgdGhpcy5fcXVldWUucHV0KGFjdCk7XHJcblxyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVTdXBwb3J0VG9Mb2codGFza0luZm8gK1wiOiBcIiArIGluZm8sIHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEFkZCBhIGZpZWxkIGZsb3cgb3BlcmF0aW9uIGFjdGl2aXR5IGl0ZW0uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm9wZXJcIj5UaGUgb3BlcmF0aW9uIGJlaW5nIGxvZ2dlZC48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiYkV4ZWN1dGVkXCI+V2lsbCB0aGUgb3BlcmF0aW9uIGJlIGV4ZWN1dGVkLjwvcGFyYW0+XHJcbiAgYXN5bmMgYWRkRmxvd0ZpZWxkT3BlcmF0aW9uKG9wZXI6IE9wZXJhdGlvbiwgYkV4ZWN1dGVkOiBib29sZWFuLCB0YXNrSW5mbzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodGhpcy5fZW5hYmxlZCAmJiB0aGlzLl9pc0Zsb3dPcGVyYXRpb24pIHtcclxuICAgICAgbGV0IGFjdDogQWN0aXZpdHlJdGVtID0gbmV3IEFjdGl2aXR5SXRlbSh0aGlzLCBGbG93TW9uaXRvclF1ZXVlLkFDVF9GTFdfT1BFUiwgRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX0RBVEFfT1BFUik7XHJcbiAgICAgIGxldCBidWZmZXI6IFN0cmluZ0J1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcihGbG93TW9uaXRvclF1ZXVlLkZMV19QRVJGSVgpO1xyXG4gICAgICBhd2FpdCBvcGVyLkFkZEZsb3dEZXNjcmlwdGlvbihidWZmZXIpO1xyXG4gICAgICBidWZmZXIuQXBwZW5kKCcgJyk7XHJcblxyXG5cclxuICAgICAgaWYgKCFiRXhlY3V0ZWQpXHJcbiAgICAgICAgYnVmZmVyLkFwcGVuZChcIltOb3QgRXhlY3V0ZWRdXCIpO1xyXG5cclxuICAgICAgbGV0IGluZm8gPSBidWZmZXIuVG9TdHJpbmcoKTtcclxuICAgICAgYWN0LnNldEluZm8oaW5mbyk7XHJcbiAgICAgIHRoaXMuX3F1ZXVlLnB1dChhY3QpO1xyXG5cclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlU3VwcG9ydFRvTG9nKHRhc2tJbmZvICtcIjogXCIgKyBpbmZvLCB0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3RhdGVcIj5vZiB0aGUgdXBkYXRlXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgYWRkRmxvd09wZXJhdGlvblVwZGF0ZShzdGF0ZTogbnVtYmVyLCB0YXNrSW5mbzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fZW5hYmxlZCAmJiB0aGlzLl9pc0Zsb3dPcGVyYXRpb24pIHtcclxuICAgICAgbGV0IGFjdDogQWN0aXZpdHlJdGVtID0gbmV3IEFjdGl2aXR5SXRlbSh0aGlzLCBGbG93TW9uaXRvclF1ZXVlLkFDVF9GTFdfT1BFUiwgRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX0RBVEFfT1BFUik7IC8vIE1HX09QRVJfVVBEQVRFXHJcbiAgICAgIGxldCBpbmZvOiBzdHJpbmc7XHJcbiAgICAgIGlmIChzdGF0ZSA9PT0gRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX1NUQVJUKVxyXG4gICAgICAgIGluZm8gPSBcIlN0YXJ0cyBVcGRhdGVcIjtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIGluZm8gPSAgXCJFbmRzIFVwZGF0ZVwiO1xyXG5cclxuICAgICAgYWN0LnNldEluZm8oaW5mbyk7XHJcbiAgICAgIHRoaXMuX3F1ZXVlLnB1dChhY3QpO1xyXG5cclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlU3VwcG9ydFRvTG9nKHRhc2tJbmZvICtcIjogXCIgKyBpbmZvLCB0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaW5mb1wiPnN0cmluZyBwYXNzZWQgdG8gc3RhdHVzIGxpbmUgdmVyaWZ5IGFjdGlvbjwvcGFyYW0+XHJcbiAgYWRkRmxvd1ZlcmlmeUluZm8oaW5mbzogc3RyaW5nLCB0YXNrSW5mbzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmFkZEZsb3dJbmZvKGluZm8sIHRhc2tJbmZvKTtcclxuICB9XHJcblxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaW5mb1wiPnN0cmluZyBhZGRlZCB0byBmbG93IG1vbml0b3IgcXVldWUgZm9yIEludm9rZU9zPC9wYXJhbT5cclxuICBhZGRGbG93SW52b2tlT3NJbmZvKGluZm86IHN0cmluZywgdGFza0luZm86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5hZGRGbG93SW5mbyhpbmZvLCB0YXNrSW5mbyk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgdXNlciBzdHJpbmcgcGFzc2VkIHRvIHN0YXR1cyBsaW5lIGZvciBhY3Rpb25zXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImluZm9cIj5cclxuICAvLy8gPC9wYXJhbT5cclxuICBwcml2YXRlIGFkZEZsb3dJbmZvKGluZm86IHN0cmluZywgdGFza0luZm86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLl9lbmFibGVkKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgbGV0IGFjdDogQWN0aXZpdHlJdGVtID0gbmV3IEFjdGl2aXR5SXRlbSh0aGlzLCBGbG93TW9uaXRvclF1ZXVlLkFDVF9GTFdfT1BFUiwgRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX0RBVEFfT1BFUik7XHJcbiAgICBsZXQgYnVmZmVyOiBTdHJpbmdCdWlsZGVyID0gbmV3IFN0cmluZ0J1aWxkZXIoXCJcIik7XHJcblxyXG4gICAgaWYgKCEoaW5mbyA9PT0gXCJcIikpIHtcclxuICAgICAgYnVmZmVyLkFwcGVuZChcIiA+PiBJTkZPUk1BVElPTiA+PiBcIik7XHJcbiAgICAgIGJ1ZmZlci5BcHBlbmQoaW5mbyk7XHJcbiAgICB9XHJcbiAgICBsZXQgbmV3SW5mbyA9IGJ1ZmZlci5Ub1N0cmluZygpO1xyXG4gICAgYWN0LnNldEluZm8obmV3SW5mbyk7XHJcbiAgICB0aGlzLl9xdWV1ZS5wdXQoYWN0KTtcclxuXHJcbiAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVTdXBwb3J0VG9Mb2codGFza0luZm8gK1wiOiBcIiArIG5ld0luZm8sIHRydWUpO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gICBhbGwgaW5mb3JtYXRpb24gYWJvdXQgY3VycmVudCBBY3Rpdml0eVxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5jbGFzcyBBY3Rpdml0eUl0ZW0ge1xyXG4gIHByaXZhdGUgX2VuY2xvc2luZ0luc3RhbmNlOiBGbG93TW9uaXRvclF1ZXVlID0gbnVsbDtcclxuICBwcml2YXRlIF9pZDogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIF90eXBlOiBzdHJpbmcgPSBudWxsOyAvLyBBQ1RZX1RBU0t8QUNUX1RBU0tfRkxXfEFDVF9EQVRBVklFV3xBQ1RfUkVDT01QVVRFfEFDVF9GTFdfT1BFUlxyXG4gIHByaXZhdGUgX2luZm86IHN0cmluZyA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfdGltZTogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoZW5jbG9zaW5nSW5zdGFuY2U6IEZsb3dNb25pdG9yUXVldWUsIHR5cGU6IHN0cmluZywgaWQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5fZW5jbG9zaW5nSW5zdGFuY2UgPSBlbmNsb3NpbmdJbnN0YW5jZTtcclxuICAgIHRoaXMuX3R5cGUgPSB0eXBlO1xyXG4gICAgdGhpcy5faWQgPSBpZDtcclxuICAgIHRoaXMuc2V0VGltZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNhdmUgY3VycmVudCB0aW1lIGluIHRoZSBuZWVkZWQgZm9ybWF0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIHNldFRpbWUoKTogdm9pZCB7XHJcbiAgICB0aGlzLl90aW1lID0gRGF0ZVRpbWVVdGlscy5Ub1N0cmluZyhEYXRlVGltZS5Ob3csIEZsb3dNb25pdG9yUXVldWUuTG9uZ1RpbWVQYXR0ZXJuLCBMb2dnZXIuSW5zdGFuY2UpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCBhZGRlZCBpbmZvcm1hdGlvbiBmb3IgdGhlIGFjdGl2aXR5XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzZXRJbmZvKGluZm9fOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX2luZm8gPSAoKGluZm9fICE9PSBudWxsKSA/IFhtbFBhcnNlci5lc2NhcGUoaW5mb18pIDogaW5mb18pO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGJ1aWxkIFhNTCBzdHJpbmcgZm9yIHRoZSBhY3Rpdml0eSBpdGVtXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBidWlsZFhNTChtZXNzYWdlOiBTdHJpbmdCdWlsZGVyKTogdm9pZCB7XHJcbiAgICBtZXNzYWdlLkFwcGVuZChYTUxDb25zdGFudHMuU1RBUlRfVEFHICsgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX0ZMV01UUl9BQ1QpO1xyXG4gICAgbWVzc2FnZS5BcHBlbmQoXCIgXCIgKyBYTUxDb25zdGFudHMuTUdfQVRUUl9UWVBFICsgXCI9XFxcIlwiICsgdGhpcy5fdHlwZSArIFwiXFxcIlwiKTtcclxuICAgIG1lc3NhZ2UuQXBwZW5kKFwiIFwiICsgWE1MQ29uc3RhbnRzLk1HX0FUVFJfSUQgKyBcIj1cXFwiXCIgKyB0aGlzLl9pZCArIFwiXFxcIlwiKTtcclxuICAgIGlmICh0aGlzLl9pbmZvICE9IG51bGwpXHJcbiAgICAgIG1lc3NhZ2UuQXBwZW5kKFwiIFwiICsgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9JTkZPICsgXCI9XFxcIlwiICsgdGhpcy5faW5mbyArIFwiXFxcIlwiKTtcclxuICAgIG1lc3NhZ2UuQXBwZW5kKFwiIFwiICsgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9USU1FICsgXCI9XFxcIlwiICsgdGhpcy5fdGltZSArIFwiXFxcIlwiKTtcclxuICAgIG1lc3NhZ2UuQXBwZW5kKFhNTENvbnN0YW50cy5UQUdfVEVSTSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
348
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd01vbml0b3JRdWV1ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvdXRpbC9GbG93TW9uaXRvclF1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxRQUFRLEVBQVEsT0FBTyxFQUFFLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzVFLE9BQU8sRUFBQyxTQUFTLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBRXJILE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUdqRCxNQUFNLE9BQU8sZ0JBQWdCO0lBQTdCO1FBcUNVLFdBQU0sR0FBd0IsSUFBSSxLQUFLLEVBQWdCLENBQUM7UUFDeEQsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDOUIsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUN6QixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUNyQyxvQkFBZSxHQUFZLEtBQUssQ0FBQztJQXlabkMsQ0FBQztJQXZaQyxNQUFNLEtBQUssUUFBUTtRQUNqQixJQUFJLGdCQUFnQixDQUFDLFNBQVMsS0FBSyxJQUFJO1lBQ3JDLGdCQUFnQixDQUFDLFNBQVMsR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFFdEQsT0FBTyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7SUFDcEMsQ0FBQztJQUVELGNBQWMsQ0FBQyxXQUFtQixFQUFFLFFBQWdCO1FBQ2xELElBQUksSUFBSSxHQUFXLHFCQUFxQixDQUFDO1FBQ3pDLElBQUksSUFBSSxDQUFDLFFBQVEsSUFB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LENBQUM7SUFDeEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJRmxvd01vbml0b3JRdWV1ZX0gZnJvbSAnQG1hZ2ljLXhwYS9ndWknO1xyXG5pbXBvcnQge0RhdGVUaW1lLCBMaXN0LCBOU3RyaW5nLCBTdHJpbmdCdWlsZGVyfSBmcm9tICdAbWFnaWMteHBhL21zY29yZWxpYic7XHJcbmltcG9ydCB7Q29uc3RhbnRzLCBEYXRlVGltZVV0aWxzLCBJbnRlcm5hbEludGVyZmFjZSwgTG9nZ2VyLCBRdWV1ZSwgWE1MQ29uc3RhbnRzLCBYbWxQYXJzZXJ9IGZyb20gJ0BtYWdpYy14cGEvdXRpbHMnO1xyXG5pbXBvcnQge09wZXJhdGlvbn0gZnJvbSAnLi4vcnQvT3BlcmF0aW9uJztcclxuaW1wb3J0IHtGbG93TW9uaXRvckludGVyZmFjZX0gZnJvbSAnLi4vRmxvd01vbml0b3JJbnRlcmZhY2UnO1xyXG5pbXBvcnQge0NvbnN0SW50ZXJmYWNlfSBmcm9tICcuLi9Db25zdEludGVyZmFjZSc7XHJcblxyXG4vLyBAZHluYW1pY1xyXG5leHBvcnQgY2xhc3MgRmxvd01vbml0b3JRdWV1ZSBpbXBsZW1lbnRzIElGbG93TW9uaXRvclF1ZXVlIHtcclxuICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IEZsb3dNb25pdG9yUXVldWUgPSBudWxsO1xyXG4gIHByaXZhdGUgc3RhdGljIFNfRVZFTlRfU1RSMTogc3RyaW5nID0gXCI+PlN0YXJ0cyBcIjtcclxuICBwcml2YXRlIHN0YXRpYyBTX0VWRU5UX1NUUjI6IHN0cmluZyA9IFwiIEV2ZW50XCI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgU19FVkVOVF9QUk9QQUdBVEVEOiBzdHJpbmcgPSBcIkV2ZW50IHdhcyBwcm9wYWdhdGVkXCI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgRV9FVkVOVF9TVFI6IHN0cmluZyA9IFwiPDxFbmRzIEV2ZW50XCI7XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIFNfUkVDUFJGX1NUUjogc3RyaW5nID0gXCJTdGFydHMgUmVjb3JkIFByZWZpeFwiO1xyXG4gIHByaXZhdGUgc3RhdGljIEVfUkVDUFJGX1NUUjogc3RyaW5nID0gXCJFbmRzIFJlY29yZCBQcmVmaXhcIjtcclxuICBwcml2YXRlIHN0YXRpYyBTX1JFQ1NVRl9TVFI6IHN0cmluZyA9IFwiU3RhcnRzIFJlY29yZCBTdWZmaXhcIjtcclxuICBwcml2YXRlIHN0YXRpYyBFX1JFQ1NVRl9TVFI6IHN0cmluZyA9IFwiRW5kcyBSZWNvcmQgU3VmZml4XCI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgU19UQVNLU1VGX1NUUjogc3RyaW5nID0gXCJTdGFydHMgVGFzayBTdWZmaXhcIjtcclxuICBwcml2YXRlIHN0YXRpYyBFX1RBU0tTVUZfU1RSOiBzdHJpbmcgPSBcIkVuZHMgVGFzayBTdWZmaXhcIjtcclxuICBwcml2YXRlIHN0YXRpYyBTX1RBU0tQUkZfU1RSOiBzdHJpbmcgPSBcIlN0YXJ0cyBUYXNrIFByZWZpeFwiO1xyXG4gIHByaXZhdGUgc3RhdGljIEVfVEFTS1BSRl9TVFI6IHN0cmluZyA9IFwiRW5kcyBUYXNrIFByZWZpeFwiO1xyXG4gIHByaXZhdGUgc3RhdGljIFNfQ1RSTFBSRl9TVFI6IHN0cmluZyA9IFwiU3RhcnRzIENvbnRyb2wgUHJlZml4IC0gXCI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgRV9DVFJMUFJGX1NUUjogc3RyaW5nID0gXCJFbmRzIENvbnRyb2wgUHJlZml4IC0gXCI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgU19DVFJMU1VGX1NUUjogc3RyaW5nID0gXCJTdGFydHMgQ29udHJvbCBTdWZmaXggLSBcIjtcclxuICBwcml2YXRlIHN0YXRpYyBFX0NUUkxTVUZfU1RSOiBzdHJpbmcgPSBcIkVuZHMgQ29udHJvbCBTdWZmaXggLSBcIjtcclxuICBwcml2YXRlIHN0YXRpYyBTX0hBTkRMRVJfU1RSOiBzdHJpbmcgPSBcIlN0YXJ0cyBoYW5kbGluZyBldmVudCB7MH1cIjtcclxuICBwcml2YXRlIHN0YXRpYyBFX0hBTkRMRVJfU1RSOiBzdHJpbmcgPSBcIkVuZHMgaGFuZGxpbmcgZXZlbnQgezB9XCI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgU19DVFJMVkVSX1NUUjogc3RyaW5nID0gXCJTdGFydHMgQ29udHJvbCBWZXJpZmljYXRpb24gZm9yIENvbnRyb2wgLSBcIjtcclxuICBwcml2YXRlIHN0YXRpYyBFX0NUUkxWRVJfU1RSOiBzdHJpbmcgPSBcIkVuZHMgQ29udHJvbCBWZXJpZmljYXRpb24gZm9yIENvbnRyb2wgLSBcIjtcclxuICBwcml2YXRlIHN0YXRpYyBSRUNPTVBfU1RSOiBzdHJpbmcgPSBcIlJlY29tcHV0ZXMgLSBcIjtcclxuICBwcml2YXRlIHN0YXRpYyBTX1ZBUklBQkxFX1NUUjogc3RyaW5nID0gXCJTdGFydHMgVmFyaWFibGUgQ2hhbmdlIC0gXCI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgRV9WQVJJQUJMRV9TVFI6IHN0cmluZyA9IFwiRW5kcyBWYXJpYWJsZSBDaGFuZ2UgLSBcIjtcclxuICBwcml2YXRlIHN0YXRpYyBWQVJJQUJMRV9SRUFTT05fU1RSOiBzdHJpbmcgPSBcIiAtIFJlYXNvbiAtIFByZXZpb3VzIHZhbHVlXCI7XHJcblxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBGTFdfUEVSRklYOiBzdHJpbmcgPSBcIkZsb3cgLSBcIjtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgQUNUX1RBU0s6IHN0cmluZyA9ICdUJztcclxuICBwcml2YXRlIHN0YXRpYyBBQ1RfVEFTS19GTFc6IHN0cmluZyA9ICdGJztcclxuICBwcml2YXRlIHN0YXRpYyBBQ1RfUkVDT01QVVRFOiBzdHJpbmcgPSAnUic7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgQUNUX0ZMV19PUEVSOiBzdHJpbmcgPSAnVCc7XHJcblxyXG4gIHN0YXRpYyBMb25nVGltZVBhdHRlcm4gPSBcIkhIOm1tOnNzOlNTU1wiO1xyXG4gIHByaXZhdGUgX3F1ZXVlOiBRdWV1ZTxBY3Rpdml0eUl0ZW0+ID0gbmV3IFF1ZXVlPEFjdGl2aXR5SXRlbT4oKTtcclxuICBwcml2YXRlIF9lbmFibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfaXNGbG93T3BlcmF0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfaXNSZWNvbXB1dGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9pc1Rhc2s6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9pc1Rhc2tGbG93OiBib29sZWFuID0gZmFsc2U7XHJcbiAgU2hvdWxkU2VyaWFsaXplOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHN0YXRpYyBnZXQgSW5zdGFuY2UoKTogRmxvd01vbml0b3JRdWV1ZSB7XHJcbiAgICBpZiAoRmxvd01vbml0b3JRdWV1ZS5faW5zdGFuY2UgPT09IG51bGwpXHJcbiAgICAgIEZsb3dNb25pdG9yUXVldWUuX2luc3RhbmNlID0gbmV3IEZsb3dNb25pdG9yUXVldWUoKTtcclxuXHJcbiAgICByZXR1cm4gRmxvd01vbml0b3JRdWV1ZS5faW5zdGFuY2U7XHJcbiAgfVxyXG5cclxuICBhZGRUYXNrQ25nTW9kZShuZXdUYXNrTW9kZTogc3RyaW5nLCB0YXNrSW5mbzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBsZXQgaW5mbzogc3RyaW5nID0gXCJUYXNrIE1vZGUgQ2hhbmdlIC0gXCI7XHJcbiAgICBpZiAodGhpcy5fZW5hYmxlZCAmJiB0aGlzLl9pc1Rhc2spIHtcclxuICAgICAgbGV0IGFjdGl2aXR5SXRlbTogQWN0aXZpdHlJdGVtID0gbmV3IEFjdGl2aXR5SXRlbSh0aGlzLCBGbG93TW9uaXRvclF1ZXVlLkFDVF9UQVNLLCBGbG93TW9uaXRvckludGVyZmFjZS5GTFdNVFJfQ0hOR19NT0RFKTtcclxuXHJcbiAgICAgIHN3aXRjaCAobmV3VGFza01vZGUpIHtcclxuICAgICAgICBjYXNlIENvbnN0YW50cy5UQVNLX01PREVfTU9ESUZZOlxyXG4gICAgICAgICAgaW5mbyArPSBcIk1vZGlmeVwiO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG5cclxuICAgICAgICBjYXNlIENvbnN0YW50cy5UQVNLX01PREVfQ1JFQVRFOlxyXG4gICAgICAgICAgaW5mbyArPSBcIkNyZWF0ZVwiO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG5cclxuICAgICAgICBjYXNlIENvbnN0YW50cy5UQVNLX01PREVfREVMRVRFOlxyXG4gICAgICAgICAgaW5mbyArPSBcIkRlbGV0ZVwiO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG5cclxuICAgICAgICBjYXNlIENvbnN0YW50cy5UQVNLX01PREVfUVVFUlk6XHJcbiAgICAgICAgICBpbmZvICs9IFwiUXVlcnlcIjtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuXHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGluZm8gPSBudWxsO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGFjdGl2aXR5SXRlbS5zZXRJbmZvKGluZm8pO1xyXG4gICAgICB0aGlzLl9xdWV1ZS5wdXQoYWN0aXZpdHlJdGVtKTtcclxuXHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZVN1cHBvcnRUb0xvZyh0YXNrSW5mbyArXCI6IFwiICsgaW5mbywgdHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcGFyc2UgdGhlIGRhdGFcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGZpbGxEYXRhKHBhcnNlcjogWG1sUGFyc2VyKTogdm9pZCB7XHJcbiAgICBsZXQgZW5kQ29udGV4dDogbnVtYmVyID0gcGFyc2VyLmdldFhNTGRhdGEoKS5pbmRleE9mKFwiLz5cIiwgcGFyc2VyLmdldEN1cnJJbmRleCgpKTtcclxuICAgIGlmIChlbmRDb250ZXh0ICE9PSAtMSAmJiBlbmRDb250ZXh0IDwgcGFyc2VyLmdldFhNTGRhdGEoKS5sZW5ndGgpIHtcclxuICAgICAgLy8gZmluZCBsYXN0IHBvc2l0aW9uIG9mIGl0cyB0YWdcclxuICAgICAgbGV0IHRhZzogc3RyaW5nID0gcGFyc2VyLmdldFhNTHN1YnN0cmluZyhlbmRDb250ZXh0KTtcclxuICAgICAgcGFyc2VyLmFkZDJDdXJySW5kZXgodGFnLmluZGV4T2YoXCJmbHdtdHJfY29uZmlnXCIpICsgXCJmbHdtdHJfY29uZmlnXCIubGVuZ3RoKTtcclxuXHJcbiAgICAgIGxldCB0b2tlbnM6IExpc3Q8c3RyaW5nPiA9IFhtbFBhcnNlci5nZXRUb2tlbnMocGFyc2VyLmdldFhNTHN1YnN0cmluZyhlbmRDb250ZXh0KSwgWE1MQ29uc3RhbnRzLlhNTF9BVFRSX0RFTElNKTtcclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRGV2VG9Mb2coXCJpbiBGbG93TW9uaXRvclF1ZXVlLkZpbGxEYXRhOiBcIiArIHRva2Vucy50b1N0cmluZygpKTtcclxuXHJcbiAgICAgIHRoaXMuaW5pdEVsZW1lbnRzKHRva2Vucyk7XHJcbiAgICAgIHBhcnNlci5zZXRDdXJySW5kZXgoZW5kQ29udGV4dCArIFhNTENvbnN0YW50cy5UQUdfVEVSTS5sZW5ndGgpOyAvLyB0byBkZWxldGUgXCIvPlwiIHRvb1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coXCJpbiAgRmxvd01vbml0b3JRdWV1ZS5GaWxsRGF0YSgpIG91dCBvZiBzdHJpbmcgYm91bmRzXCIpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHBhcnNlIHRoZSBYTUwgZGF0YVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0b2tlbnNWZWN0b3JcIj5hdHRyaWJ1dGUvdmFsdWUvLi4uYXR0cmlidXRlL3ZhbHVlLyB2ZWN0b3I8L3BhcmFtPlxyXG4gIHByaXZhdGUgaW5pdEVsZW1lbnRzKHRva2Vuc1ZlY3RvcjogTGlzdDxzdHJpbmc+KTogdm9pZCB7XHJcblxyXG4gICAgZm9yIChsZXQgajogbnVtYmVyID0gMDsgaiA8IHRva2Vuc1ZlY3Rvci5sZW5ndGg7IGogPSBqICsgMikge1xyXG4gICAgICBsZXQgYXR0cmlidXRlOiBzdHJpbmcgPSA8c3RyaW5nPnRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqKTtcclxuICAgICAgbGV0IHZhbHVlU3RyOiBzdHJpbmcgPSA8c3RyaW5nPnRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqICsgMSk7XHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZURldlRvTG9nKGF0dHJpYnV0ZSArIFwiIHZhbHVlOiBcIiArIHZhbHVlU3RyKTtcclxuXHJcbiAgICAgIHN3aXRjaCAoYXR0cmlidXRlKSB7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX1RBU0s6XHJcbiAgICAgICAgICB0aGlzLl9pc1Rhc2sgPSBYbWxQYXJzZXIuZ2V0Qm9vbGVhbih2YWx1ZVN0cik7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX1RBU0tGTFc6XHJcbiAgICAgICAgICB0aGlzLl9pc1Rhc2tGbG93ID0gWG1sUGFyc2VyLmdldEJvb2xlYW4odmFsdWVTdHIpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9SRUNPTVA6XHJcbiAgICAgICAgICB0aGlzLl9pc1JlY29tcHV0ZSA9IFhtbFBhcnNlci5nZXRCb29sZWFuKHZhbHVlU3RyKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfRkxXT1A6XHJcbiAgICAgICAgICB0aGlzLl9pc0Zsb3dPcGVyYXRpb24gPSBYbWxQYXJzZXIuZ2V0Qm9vbGVhbih2YWx1ZVN0cik7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0VOQUJMRUQ6XHJcbiAgICAgICAgICB0aGlzLmVuYWJsZShYbWxQYXJzZXIuZ2V0Qm9vbGVhbih2YWx1ZVN0cikpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coXCJpbiBGbG93TW9uaXRvclF1ZXVlLmluaXRFbGVtZW50cygpOiB1bmtub3duICBhdHRyaWJ1dGU6IFwiICsgYXR0cmlidXRlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgYnVpbGQgWE1MIGFuZCBlbXB0eSB0aGUgaW5uZXIgcXVldWVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGJ1aWxkWE1MKG1lc3NhZ2U6IFN0cmluZ0J1aWxkZXIpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5fcXVldWUuaXNFbXB0eSgpICYmIHRoaXMuU2hvdWxkU2VyaWFsaXplKSB7XHJcbiAgICAgIG1lc3NhZ2UuQXBwZW5kKFhNTENvbnN0YW50cy5TVEFSVF9UQUcgKyBDb25zdEludGVyZmFjZS5NR19UQUdfRkxXTVRSX01TRyArIFhNTENvbnN0YW50cy5UQUdfQ0xPU0UpO1xyXG5cclxuICAgICAgd2hpbGUgKCF0aGlzLl9xdWV1ZS5pc0VtcHR5KCkpIHtcclxuICAgICAgICBsZXQgY3VyckFjdDogQWN0aXZpdHlJdGVtID0gPEFjdGl2aXR5SXRlbT50aGlzLl9xdWV1ZS5nZXQoKTtcclxuICAgICAgICBjdXJyQWN0LmJ1aWxkWE1MKG1lc3NhZ2UpO1xyXG4gICAgICB9IC8vIGZpbGwgYWN0aXZpdGllc1xyXG5cclxuICAgICAgbWVzc2FnZS5BcHBlbmQoXCI8L1wiICsgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX0ZMV01UUl9NU0cgKyBYTUxDb25zdGFudHMuVEFHX0NMT1NFKTtcclxuICAgIH0gLy8gdGhlIHF1ZXVlIGlzIG5vdCBlbXB0eVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGlzIHRoZSBGbG93IE1vbml0b3IgUXVldWUgZW1wdHlcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGlzRW1wdHkoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcXVldWUuaXNFbXB0eSgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGVuYWJsZSB0aGUgZmxvdyBtb25pdG9yXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+dGhlIHByZXZpb3VzIHN0YXRlIChlbmFibGVkL2Rpc2FibGVkKTwvcmV0dXJucz5cclxuICBlbmFibGUodmFsdWU6IGJvb2xlYW4pOiBib29sZWFuIHtcclxuICAgIGxldCB3YXNFbmFibGVkOiBib29sZWFuID0gdGhpcy5fZW5hYmxlZDtcclxuICAgIHRoaXMuX2VuYWJsZWQgPSB2YWx1ZTtcclxuICAgIHRoaXMuU2hvdWxkU2VyaWFsaXplID0gdGhpcy5fZW5hYmxlZDtcclxuICAgIHJldHVybiB3YXNFbmFibGVkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGFkZCBBY3Rpdml0aWVzIHRvIHRoZSBxdWV1ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0cmlnZ2VyZWRCeVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdGF0ZVwiPm9mIHRoZSBldmVudCB0YXNrIGFjdGl2aXRpZTwvcGFyYW0+XHJcbiAgYWRkVGFza0V2ZW50KHRyaWdnZXJlZEJ5OiBzdHJpbmcsIHN0YXRlOiBudW1iZXIsIHRhc2tJbmZvOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9lbmFibGVkICYmIHRoaXMuX2lzVGFzaykge1xyXG4gICAgICBsZXQgYWN0OiBBY3Rpdml0eUl0ZW0gPSBuZXcgQWN0aXZpdHlJdGVtKHRoaXMsIEZsb3dNb25pdG9yUXVldWUuQUNUX1RBU0ssIEZsb3dNb25pdG9ySW50ZXJmYWNlLkZMV01UUl9FVkVOVCk7XHJcblxyXG4gICAgICBsZXQgaW5mbzogc3RyaW5nO1xyXG4gICAgICBzd2l0Y2ggKHN0YXRlKSB7XHJcbiAgICAgICAgY2FzZSBGbG93TW9uaXRvckludGVyZmFjZS5GTFdNVFJfU1RBUlQ6XHJcbiAgICAgICAgICBpbmZvID0gRmxvd01vbml0b3JRdWV1ZS5TX0VWRU5UX1NUUjEgKyB0cmlnZ2VyZWRCeSArIEZsb3dNb25pdG9yUXVldWUuU19FVkVOVF9TVFIyO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX0VORDpcclxuICAgICAgICAgIGluZm8gPSBGbG93TW9uaXRvclF1ZXVlLkVfRVZFTlRfU1RSICsgdHJpZ2dlcmVkQnk7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBGbG93TW9uaXRvckludGVyZmFjZS5GTFdNVFJfUFJPUEFHQVRFOlxyXG4gICAgICAgICAgaW5mbyA9IEZsb3dNb25pdG9yUXVldWUuU19FVkVOVF9QUk9QQUdBVEVEO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBpbmZvID0gbnVsbDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBhY3Quc2V0SW5mbyhpbmZvKTtcclxuICAgICAgdGhpcy5fcXVldWUucHV0KGFjdCk7XHJcblxyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVTdXBwb3J0VG9Mb2codGFza0luZm8gK1wiOiBcIiArIGluZm8sIHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGFkZCB0YXNrIGZsb3cgZm9yIHJlY29yZCBwcmVmaXggb3Igc3VmaXhcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaWRcIj5pcyBGTFdNVFJfUFJFRklYIG9yIEZMV01UUl9TVUZGSVhcclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInN0YXRlXCI+b2YgdGhlIGV2ZW50IHRhc2sgYWN0aXZpdGllXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgYWRkVGFza0Zsb3dSZWMoaWQ6IG51bWJlciwgc3RhdGU6IG51bWJlciwgdGFza0luZm86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2VuYWJsZWQgJiYgdGhpcy5faXNUYXNrRmxvdykge1xyXG4gICAgICBsZXQgaW5mbzogc3RyaW5nO1xyXG5cclxuICAgICAgc3dpdGNoIChpZCkge1xyXG4gICAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JFQ19QUkVGSVg6XHJcbiAgICAgICAgICBpbmZvID0gc3RhdGUgPT09IEZsb3dNb25pdG9ySW50ZXJmYWNlLkZMV01UUl9TVEFSVFxyXG4gICAgICAgICAgICA/IEZsb3dNb25pdG9yUXVldWUuU19SRUNQUkZfU1RSXHJcbiAgICAgICAgICAgIDogRmxvd01vbml0b3JRdWV1ZS5FX1JFQ1BSRl9TVFI7XHJcbiAgICAgICAgICBpZCA9IEZsb3dNb25pdG9ySW50ZXJmYWNlLkZMV01UUl9QUkVGSVg7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUkVDX1NVRkZJWDpcclxuICAgICAgICAgIGluZm8gPSBzdGF0ZSA9PT0gRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX1NUQVJUXHJcbiAgICAgICAgICAgID8gRmxvd01vbml0b3JRdWV1ZS5TX1JFQ1NVRl9TVFJcclxuICAgICAgICAgICAgOiBGbG93TW9uaXRvclF1ZXVlLkVfUkVDU1VGX1NUUjtcclxuICAgICAgICAgIGlkID0gRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX1NVRkZJWDtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UQVNLX1BSRUZJWDpcclxuICAgICAgICAgIGluZm8gPSBzdGF0ZSA9PT0gRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX1NUQVJUXHJcbiAgICAgICAgICAgID8gRmxvd01vbml0b3JRdWV1ZS5TX1RBU0tQUkZfU1RSXHJcbiAgICAgICAgICAgIDogRmxvd01vbml0b3JRdWV1ZS5FX1RBU0tQUkZfU1RSO1xyXG4gICAgICAgICAgaWQgPSBGbG93TW9uaXRvckludGVyZmFjZS5GTFdNVFJfUFJFRklYO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RBU0tfU1VGRklYOlxyXG4gICAgICAgICAgaW5mbyA9IHN0YXRlID09PSBGbG93TW9uaXRvckludGVyZmFjZS5GTFdNVFJfU1RBUlRcclxuICAgICAgICAgICAgPyBGbG93TW9uaXRvclF1ZXVlLlNfVEFTS1NVRl9TVFJcclxuICAgICAgICAgICAgOiBGbG93TW9uaXRvclF1ZXVlLkVfVEFTS1NVRl9TVFI7XHJcbiAgICAgICAgICBpZCA9IEZsb3dNb25pdG9ySW50ZXJmYWNlLkZMV01UUl9TVUZGSVg7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGluZm8gPSBudWxsO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBhY3Q6IEFjdGl2aXR5SXRlbSA9IG5ldyBBY3Rpdml0eUl0ZW0odGhpcywgRmxvd01vbml0b3JRdWV1ZS5BQ1RfVEFTS19GTFcsIGlkKTtcclxuICAgICAgYWN0LnNldEluZm8oaW5mbyk7XHJcbiAgICAgIHRoaXMuX3F1ZXVlLnB1dChhY3QpO1xyXG5cclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlU3VwcG9ydFRvTG9nKHRhc2tJbmZvICtcIjogXCIgKyBpbmZvLCB0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaWRcIj5pcyBNR19BQ1RfVkFSSUFCTEU8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZmxkTmFtZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdGF0ZVwiPm9mIHRoZSBldmVudCB0YXNrIGFjdGl2aXRpZTwvcGFyYW0+XHJcbiAgYWRkVGFza0Zsb3dGbGQoaWQ6IG51bWJlciwgZmxkTmFtZTogc3RyaW5nLCBzdGF0ZTogbnVtYmVyLCB0YXNrSW5mbzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmFkZFRhc2tGbG93Q3RybChpZCwgZmxkTmFtZSwgc3RhdGUsIHRhc2tJbmZvKTtcclxuICB9XHJcblxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaWRcIj5pcyBGTFdNVFJfQ1RSTF9QUkVGSVggb3IgRkxXTVRSX0NUUkxfU1VGRklYPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImN0cmxOYW1lXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInN0YXRlXCI+b2YgdGhlIGV2ZW50IHRhc2sgYWN0aXZpdGllPC9wYXJhbT5cclxuICBhZGRUYXNrRmxvd0N0cmwoaWQ6IG51bWJlciwgY3RybE5hbWU6IHN0cmluZywgc3RhdGU6IG51bWJlciwgdGFza0luZm86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2VuYWJsZWQgJiYgdGhpcy5faXNUYXNrRmxvdykge1xyXG4gICAgICBsZXQgaW5mbzogc3RyaW5nO1xyXG5cclxuICAgICAgc3dpdGNoIChpZCkge1xyXG4gICAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1ZBUklBQkxFOlxyXG4gICAgICAgICAgaW5mbyA9IHN0YXRlID09PSBGbG93TW9uaXRvckludGVyZmFjZS5GTFdNVFJfU1RBUlRcclxuICAgICAgICAgICAgPyBGbG93TW9uaXRvclF1ZXVlLlNfVkFSSUFCTEVfU1RSXHJcbiAgICAgICAgICAgIDogRmxvd01vbml0b3JRdWV1ZS5FX1ZBUklBQkxFX1NUUjtcclxuICAgICAgICAgIGlkID0gRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX1ZBUkNIR19WQUxVRTtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1BSRUZJWDpcclxuICAgICAgICAgIGluZm8gPSBzdGF0ZSA9PT0gRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX1NUQVJUXHJcbiAgICAgICAgICAgID8gRmxvd01vbml0b3JRdWV1ZS5TX0NUUkxQUkZfU1RSXHJcbiAgICAgICAgICAgIDogRmxvd01vbml0b3JRdWV1ZS5FX0NUUkxQUkZfU1RSO1xyXG4gICAgICAgICAgaWQgPSBGbG93TW9uaXRvckludGVyZmFjZS5GTFdNVFJfQ1RSTF9QUkVGSVg7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcblxyXG4gICAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NUUkxfU1VGRklYOlxyXG4gICAgICAgICAgaW5mbyA9IHN0YXRlID09PSBGbG93TW9uaXRvckludGVyZmFjZS5GTFdNVFJfU1RBUlRcclxuICAgICAgICAgICAgPyBGbG93TW9uaXRvclF1ZXVlLlNfQ1RSTFNVRl9TVFJcclxuICAgICAgICAgICAgOiBGbG93TW9uaXRvclF1ZXVlLkVfQ1RSTFNVRl9TVFI7XHJcbiAgICAgICAgICBpZCA9IEZsb3dNb25pdG9ySW50ZXJmYWNlLkZMV01UUl9DVFJMX1NVRkZJWDtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1ZFUklGSUNBVElPTjpcclxuICAgICAgICAgIGluZm8gPSBzdGF0ZSA9PT0gRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX1NUQVJUXHJcbiAgICAgICAgICAgID8gRmxvd01vbml0b3JRdWV1ZS5TX0NUUkxWRVJfU1RSXHJcbiAgICAgICAgICAgIDogRmxvd01vbml0b3JRdWV1ZS5FX0NUUkxWRVJfU1RSO1xyXG4gICAgICAgICAgaWQgPSBGbG93TW9uaXRvckludGVyZmFjZS5GTFdNVFJfQ1RSTF9TVUZGSVg7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGluZm8gPSBudWxsO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBhY3Q6IEFjdGl2aXR5SXRlbSA9IG5ldyBBY3Rpdml0eUl0ZW0odGhpcywgRmxvd01vbml0b3JRdWV1ZS5BQ1RfVEFTS19GTFcsIGlkKTtcclxuICAgICAgaWYgKGluZm8gIT09IG51bGwpIHtcclxuICAgICAgICBpbmZvID0gaW5mbyArIGN0cmxOYW1lO1xyXG4gICAgICAgIGlmIChpZCA9PT0gRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX1ZBUkNIR19WQUxVRSAmJiBzdGF0ZSA9PT0gRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX1NUQVJUKVxyXG4gICAgICAgICAgaW5mbyA9IGluZm8gKyBGbG93TW9uaXRvclF1ZXVlLlZBUklBQkxFX1JFQVNPTl9TVFI7XHJcbiAgICAgICAgYWN0LnNldEluZm8oaW5mbyk7XHJcbiAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlU3VwcG9ydFRvTG9nKHRhc2tJbmZvICtcIjogXCIgKyBpbmZvLCB0cnVlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9xdWV1ZS5wdXQoYWN0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaGFuZGxlcklkXCI+aXNpZCBvZiB0aGUgaGFuZGxlclxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3RhdGVcIj5vZiB0aGUgZXZlbnQgdGFzayBhY3Rpdml0aWVcclxuICAvLy8gPC9wYXJhbT5cclxuICBhZGRUYXNrRmxvd0hhbmRsZXIoaGFuZGxlcklkOiBzdHJpbmcsIHN0YXRlOiBudW1iZXIsIHRhc2tJbmZvOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9lbmFibGVkICYmIHRoaXMuX2lzVGFza0Zsb3cpIHtcclxuICAgICAgbGV0IGFjdDogQWN0aXZpdHlJdGVtID0gbmV3IEFjdGl2aXR5SXRlbSh0aGlzLCBGbG93TW9uaXRvclF1ZXVlLkFDVF9UQVNLX0ZMVywgRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX1RTS19IQU5ETEVSKTtcclxuICAgICAgbGV0IGluZm86IHN0cmluZztcclxuXHJcbiAgICAgIHN3aXRjaCAoc3RhdGUpIHtcclxuICAgICAgICBjYXNlIEZsb3dNb25pdG9ySW50ZXJmYWNlLkZMV01UUl9TVEFSVDpcclxuICAgICAgICAgIGluZm8gPSBOU3RyaW5nLkZvcm1hdChGbG93TW9uaXRvclF1ZXVlLlNfSEFORExFUl9TVFIsIGhhbmRsZXJJZCk7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBGbG93TW9uaXRvckludGVyZmFjZS5GTFdNVFJfRU5EOlxyXG4gICAgICAgICAgaW5mbyA9IE5TdHJpbmcuRm9ybWF0KEZsb3dNb25pdG9yUXVldWUuRV9IQU5ETEVSX1NUUiwgaGFuZGxlcklkKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgaW5mbyA9IG51bGw7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGluZm8gIT09IG51bGwpIHtcclxuICAgICAgICAvLyBCUktfTEVWRUxfSEFORExFUl9JTlRFUk5BTCxCUktfTEVWRUxfSEFORExFUl9TWVNURU0sQlJLX0xFVkVMX0hBTkRMRVJfVElNRVJcclxuICAgICAgICAvLyBCUktfTEVWRUxfSEFORExFUl9FWFBSRVNTSU9OLEJSS19MRVZFTF9IQU5ETEVSX0VSUk9SLEJSS19MRVZFTF9IQU5ETEVSX1VTRVJcclxuICAgICAgICBhY3Quc2V0SW5mbyhpbmZvKTtcclxuICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVTdXBwb3J0VG9Mb2codGFza0luZm8gK1wiOiBcIiArIGluZm8sIHRydWUpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX3F1ZXVlLnB1dChhY3QpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0cmlnZ2VyZWRCeVZhck5hbWVcIj52YXIgbmFtZSAsIGhhcyB0cmlnZ2VyZWQgUmVjb21wdXRlXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgYWRkUmVjb21wdXRlKHRyaWdnZXJlZEJ5VmFyTmFtZTogc3RyaW5nLCB0YXNrSW5mbzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fZW5hYmxlZCAmJiB0aGlzLl9pc1JlY29tcHV0ZSkge1xyXG4gICAgICBsZXQgYWN0OiBBY3Rpdml0eUl0ZW0gPSBuZXcgQWN0aXZpdHlJdGVtKHRoaXMsIEZsb3dNb25pdG9yUXVldWUuQUNUX1JFQ09NUFVURSwgRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX1JFQ09NUCk7XHJcbiAgICAgIGxldCBpbmZvID0gRmxvd01vbml0b3JRdWV1ZS5SRUNPTVBfU1RSICsgdHJpZ2dlcmVkQnlWYXJOYW1lO1xyXG4gICAgICBhY3Quc2V0SW5mbyhpbmZvKTtcclxuICAgICAgdGhpcy5fcXVldWUucHV0KGFjdCk7XHJcblxyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVTdXBwb3J0VG9Mb2codGFza0luZm8gK1wiOiBcIiArIGluZm8sIHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEFkZCBhIGZpZWxkIGZsb3cgb3BlcmF0aW9uIGFjdGl2aXR5IGl0ZW0uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm9wZXJcIj5UaGUgb3BlcmF0aW9uIGJlaW5nIGxvZ2dlZC48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiYkV4ZWN1dGVkXCI+V2lsbCB0aGUgb3BlcmF0aW9uIGJlIGV4ZWN1dGVkLjwvcGFyYW0+XHJcbiAgYXN5bmMgYWRkRmxvd0ZpZWxkT3BlcmF0aW9uKG9wZXI6IE9wZXJhdGlvbiwgYkV4ZWN1dGVkOiBib29sZWFuLCB0YXNrSW5mbzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodGhpcy5fZW5hYmxlZCAmJiB0aGlzLl9pc0Zsb3dPcGVyYXRpb24pIHtcclxuICAgICAgbGV0IGFjdDogQWN0aXZpdHlJdGVtID0gbmV3IEFjdGl2aXR5SXRlbSh0aGlzLCBGbG93TW9uaXRvclF1ZXVlLkFDVF9GTFdfT1BFUiwgRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX0RBVEFfT1BFUik7XHJcbiAgICAgIGxldCBidWZmZXI6IFN0cmluZ0J1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcihGbG93TW9uaXRvclF1ZXVlLkZMV19QRVJGSVgpO1xyXG4gICAgICBhd2FpdCBvcGVyLkFkZEZsb3dEZXNjcmlwdGlvbihidWZmZXIpO1xyXG4gICAgICBidWZmZXIuQXBwZW5kKCcgJyk7XHJcblxyXG5cclxuICAgICAgaWYgKCFiRXhlY3V0ZWQpXHJcbiAgICAgICAgYnVmZmVyLkFwcGVuZChcIltOb3QgRXhlY3V0ZWRdXCIpO1xyXG5cclxuICAgICAgbGV0IGluZm8gPSBidWZmZXIuVG9TdHJpbmcoKTtcclxuICAgICAgYWN0LnNldEluZm8oaW5mbyk7XHJcbiAgICAgIHRoaXMuX3F1ZXVlLnB1dChhY3QpO1xyXG5cclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlU3VwcG9ydFRvTG9nKHRhc2tJbmZvICtcIjogXCIgKyBpbmZvLCB0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3RhdGVcIj5vZiB0aGUgdXBkYXRlXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgYWRkRmxvd09wZXJhdGlvblVwZGF0ZShzdGF0ZTogbnVtYmVyLCB0YXNrSW5mbzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fZW5hYmxlZCAmJiB0aGlzLl9pc0Zsb3dPcGVyYXRpb24pIHtcclxuICAgICAgbGV0IGFjdDogQWN0aXZpdHlJdGVtID0gbmV3IEFjdGl2aXR5SXRlbSh0aGlzLCBGbG93TW9uaXRvclF1ZXVlLkFDVF9GTFdfT1BFUiwgRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX0RBVEFfT1BFUik7IC8vIE1HX09QRVJfVVBEQVRFXHJcbiAgICAgIGxldCBpbmZvOiBzdHJpbmc7XHJcbiAgICAgIGlmIChzdGF0ZSA9PT0gRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX1NUQVJUKVxyXG4gICAgICAgIGluZm8gPSBcIlN0YXJ0cyBVcGRhdGVcIjtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIGluZm8gPSAgXCJFbmRzIFVwZGF0ZVwiO1xyXG5cclxuICAgICAgYWN0LnNldEluZm8oaW5mbyk7XHJcbiAgICAgIHRoaXMuX3F1ZXVlLnB1dChhY3QpO1xyXG5cclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlU3VwcG9ydFRvTG9nKHRhc2tJbmZvICtcIjogXCIgKyBpbmZvLCB0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaW5mb1wiPnN0cmluZyBwYXNzZWQgdG8gc3RhdHVzIGxpbmUgdmVyaWZ5IGFjdGlvbjwvcGFyYW0+XHJcbiAgYWRkRmxvd1ZlcmlmeUluZm8oaW5mbzogc3RyaW5nLCB0YXNrSW5mbzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmFkZEZsb3dJbmZvKGluZm8sIHRhc2tJbmZvKTtcclxuICB9XHJcblxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaW5mb1wiPnN0cmluZyBhZGRlZCB0byBmbG93IG1vbml0b3IgcXVldWUgZm9yIEludm9rZU9zPC9wYXJhbT5cclxuICBhZGRGbG93SW52b2tlT3NJbmZvKGluZm86IHN0cmluZywgdGFza0luZm86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5hZGRGbG93SW5mbyhpbmZvLCB0YXNrSW5mbyk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgdXNlciBzdHJpbmcgcGFzc2VkIHRvIHN0YXR1cyBsaW5lIGZvciBhY3Rpb25zXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImluZm9cIj5cclxuICAvLy8gPC9wYXJhbT5cclxuICBwcml2YXRlIGFkZEZsb3dJbmZvKGluZm86IHN0cmluZywgdGFza0luZm86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLl9lbmFibGVkKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgbGV0IGFjdDogQWN0aXZpdHlJdGVtID0gbmV3IEFjdGl2aXR5SXRlbSh0aGlzLCBGbG93TW9uaXRvclF1ZXVlLkFDVF9GTFdfT1BFUiwgRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX0RBVEFfT1BFUik7XHJcbiAgICBsZXQgYnVmZmVyOiBTdHJpbmdCdWlsZGVyID0gbmV3IFN0cmluZ0J1aWxkZXIoXCJcIik7XHJcblxyXG4gICAgaWYgKCEoaW5mbyA9PT0gXCJcIikpIHtcclxuICAgICAgYnVmZmVyLkFwcGVuZChcIiA+PiBJTkZPUk1BVElPTiA+PiBcIik7XHJcbiAgICAgIGJ1ZmZlci5BcHBlbmQoaW5mbyk7XHJcbiAgICB9XHJcbiAgICBsZXQgbmV3SW5mbyA9IGJ1ZmZlci5Ub1N0cmluZygpO1xyXG4gICAgYWN0LnNldEluZm8obmV3SW5mbyk7XHJcbiAgICB0aGlzLl9xdWV1ZS5wdXQoYWN0KTtcclxuXHJcbiAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVTdXBwb3J0VG9Mb2codGFza0luZm8gK1wiOiBcIiArIG5ld0luZm8sIHRydWUpO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gICBhbGwgaW5mb3JtYXRpb24gYWJvdXQgY3VycmVudCBBY3Rpdml0eVxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5jbGFzcyBBY3Rpdml0eUl0ZW0ge1xyXG4gIHByaXZhdGUgX2lkOiBudW1iZXIgPSAwO1xyXG4gIHByaXZhdGUgX3R5cGU6IHN0cmluZyA9IG51bGw7IC8vIEFDVFlfVEFTS3xBQ1RfVEFTS19GTFd8QUNUX0RBVEFWSUVXfEFDVF9SRUNPTVBVVEV8QUNUX0ZMV19PUEVSXHJcbiAgcHJpdmF0ZSBfaW5mbzogc3RyaW5nID0gbnVsbDtcclxuICBwcml2YXRlIF90aW1lOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihlbmNsb3NpbmdJbnN0YW5jZTogRmxvd01vbml0b3JRdWV1ZSwgdHlwZTogc3RyaW5nLCBpZDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl90eXBlID0gdHlwZTtcclxuICAgIHRoaXMuX2lkID0gaWQ7XHJcbiAgICB0aGlzLnNldFRpbWUoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzYXZlIGN1cnJlbnQgdGltZSBpbiB0aGUgbmVlZGVkIGZvcm1hdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBzZXRUaW1lKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fdGltZSA9IERhdGVUaW1lVXRpbHMuVG9TdHJpbmcoRGF0ZVRpbWUuTm93LCBGbG93TW9uaXRvclF1ZXVlLkxvbmdUaW1lUGF0dGVybiwgTG9nZ2VyLkluc3RhbmNlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgYWRkZWQgaW5mb3JtYXRpb24gZm9yIHRoZSBhY3Rpdml0eVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc2V0SW5mbyhpbmZvXzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pbmZvID0gKChpbmZvXyAhPT0gbnVsbCkgPyBYbWxQYXJzZXIuZXNjYXBlKGluZm9fKSA6IGluZm9fKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBidWlsZCBYTUwgc3RyaW5nIGZvciB0aGUgYWN0aXZpdHkgaXRlbVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgYnVpbGRYTUwobWVzc2FnZTogU3RyaW5nQnVpbGRlcik6IHZvaWQge1xyXG4gICAgbWVzc2FnZS5BcHBlbmQoWE1MQ29uc3RhbnRzLlNUQVJUX1RBRyArIENvbnN0SW50ZXJmYWNlLk1HX1RBR19GTFdNVFJfQUNUKTtcclxuICAgIG1lc3NhZ2UuQXBwZW5kKFwiIFwiICsgWE1MQ29uc3RhbnRzLk1HX0FUVFJfVFlQRSArIFwiPVxcXCJcIiArIHRoaXMuX3R5cGUgKyBcIlxcXCJcIik7XHJcbiAgICBtZXNzYWdlLkFwcGVuZChcIiBcIiArIFhNTENvbnN0YW50cy5NR19BVFRSX0lEICsgXCI9XFxcIlwiICsgdGhpcy5faWQgKyBcIlxcXCJcIik7XHJcbiAgICBpZiAodGhpcy5faW5mbyAhPSBudWxsKVxyXG4gICAgICBtZXNzYWdlLkFwcGVuZChcIiBcIiArIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfSU5GTyArIFwiPVxcXCJcIiArIHRoaXMuX2luZm8gKyBcIlxcXCJcIik7XHJcbiAgICBtZXNzYWdlLkFwcGVuZChcIiBcIiArIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfVElNRSArIFwiPVxcXCJcIiArIHRoaXMuX3RpbWUgKyBcIlxcXCJcIik7XHJcbiAgICBtZXNzYWdlLkFwcGVuZChYTUxDb25zdGFudHMuVEFHX1RFUk0pO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -59,7 +59,6 @@ export class MgPriorityBlockingQueue {
59
59
  return this._queue.peek();
60
60
  }
61
61
  size() {
62
- let size;
63
62
  return this._queue.Size;
64
63
  }
65
64
  remainingCapacity() {
@@ -69,8 +68,7 @@ export class MgPriorityBlockingQueue {
69
68
  this._queue.clear();
70
69
  }
71
70
  isEmpty() {
72
- let result;
73
71
  return this._queue.isEmpty();
74
72
  }
75
73
  }
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWdQcmlvcml0eUJsb2NraW5nUXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL3V0aWwvTWdQcmlvcml0eUJsb2NraW5nUXVldWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDckUsT0FBTyxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRCxNQUFNLE9BQU8sdUJBQXVCO0lBSWxDO1FBSFEsV0FBTSxHQUFvQixJQUFJLENBQUM7UUFDL0Isb0JBQWUsR0FBVyxDQUFDLENBQUM7UUFHbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxDQUFNO1FBQzlCLElBQUksTUFBTSxHQUFZLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsWUFBWSxnQkFBZ0IsRUFBRTtZQUNqQyxJQUFJLFlBQVksR0FBdUMsQ0FBQyxDQUFDO1lBQ3pELElBQUksWUFBWSxDQUFDLFdBQVcsRUFBRSxLQUFLLFFBQVEsQ0FBQyxNQUFNO2dCQUNoRCxNQUFNLEdBQUcsSUFBSSxDQUFDO1NBQ2pCO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELEtBQUssQ0FBQyxDQUFNO1FBQ1YsSUFBSTtZQUNGLElBQUksU0FBUyxHQUFZLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlDLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxDQUFDLEVBQUU7Z0JBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQzlCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7aUJBQ3JEO2FBQ0Y7WUFDRCxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3hCLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNyQyxPQUFPLElBQUksQ0FBQztTQUNiO2dCQUNPLEdBQUU7SUFDWixDQUFDO0lBRUQsR0FBRyxDQUFDLENBQU07UUFDUixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFHRCxLQUFLLENBQUMsY0FBYztRQUNsQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtZQUMxQixJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQztZQUN6QixNQUFNLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUMzQztJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxNQUFXLENBQUM7UUFDaEIsSUFBSTtZQUNGLElBQUksR0FBRyxHQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO2FBQzFCO1lBQ0QsTUFBTSxHQUFHLEdBQUcsQ0FBQztTQUNkO2dCQUNPLEdBQUU7UUFFVixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsSUFBSTtRQUNBLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksSUFBWSxDQUFDO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFDMUIsQ0FBQztJQUVELGlCQUFpQjtRQUNmLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUN4QixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLE1BQWUsQ0FBQztRQUNwQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDL0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNZ0Jsb2NraW5nUXVldWV9IGZyb20gXCIuL01nQmxvY2tpbmdRdWV1ZVwiO1xyXG5pbXBvcnQge01nUHJpb3JpdHlRdWV1ZX0gZnJvbSBcIi4vTWdQcmlvcml0eVF1ZXVlXCI7XHJcbmltcG9ydCB7UnVuVGltZUV2ZW50QmFzZX0gZnJvbSBcIi4uL2V2ZW50L1J1blRpbWVFdmVudEJhc2VcIjtcclxuaW1wb3J0IHtNaXNjLCBQcmlvcml0eSwgU3luY0V4ZWN1dGlvbkhlbHBlcn0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHtEZWJ1ZywgSW50MzJ9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIE1nUHJpb3JpdHlCbG9ja2luZ1F1ZXVlIGltcGxlbWVudHMgTWdCbG9ja2luZ1F1ZXVlIHtcclxuICBwcml2YXRlIF9xdWV1ZTogTWdQcmlvcml0eVF1ZXVlID0gbnVsbDtcclxuICBwcml2YXRlIF90aW1lRmlyc3RFdmVudDogbnVtYmVyID0gMDtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLl9xdWV1ZSA9IG5ldyBNZ1ByaW9yaXR5UXVldWUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNCYWNrZ3JvdW5kRXZlbnQobzogYW55KTogYm9vbGVhbiB7XHJcbiAgICBsZXQgcmVzdWx0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBpZiAobyBpbnN0YW5jZW9mIFJ1blRpbWVFdmVudEJhc2UpIHtcclxuICAgICAgbGV0IHJ1blRpbWVFdmVudDogUnVuVGltZUV2ZW50QmFzZSA9IDxSdW5UaW1lRXZlbnRCYXNlPm87XHJcbiAgICAgIGlmIChydW5UaW1lRXZlbnQuZ2V0UHJpb3JpdHkoKSA9PT0gUHJpb3JpdHkuTE9XRVNUKVxyXG4gICAgICAgIHJlc3VsdCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIG9mZmVyKG86IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgbGV0IGNvbmRpdGlvbjogYm9vbGVhbiA9IHRoaXMuX3F1ZXVlLm9mZmVyKG8pO1xyXG4gICAgICBpZiAodGhpcy5fdGltZUZpcnN0RXZlbnQgPT09IDApIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNCYWNrZ3JvdW5kRXZlbnQobykpIHtcclxuICAgICAgICAgIHRoaXMuX3RpbWVGaXJzdEV2ZW50ID0gTWlzYy5nZXRTeXN0ZW1NaWxsaXNlY29uZHMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgRGVidWcuQXNzZXJ0KGNvbmRpdGlvbik7XHJcbiAgICAgIFN5bmNFeGVjdXRpb25IZWxwZXIuSW5zdGFuY2UuUHVsc2UoKTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBmaW5hbGx5IHt9XHJcbiAgfVxyXG5cclxuICBwdXQobzogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9mZmVyKG8pO1xyXG4gIH1cclxuXHJcbiAgLy8gVE9ETzogUmVtb3ZlIHRoaXMgbWV0aG9kIGFzIHdvcmtlciB0aHJlYWQgd29uJ3Qgd2FpdCBmb3IgZXZlbnRzIGdldHRpbmcgYWRkZWQgdG8gdGhlIHF1ZXVlLlxyXG4gIGFzeW5jIHdhaXRGb3JFbGVtZW50KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKHRoaXMuX3F1ZXVlLlNpemUgPT09IDApIHtcclxuICAgICAgdGhpcy5fdGltZUZpcnN0RXZlbnQgPSAwO1xyXG4gICAgICBhd2FpdCBTeW5jRXhlY3V0aW9uSGVscGVyLkluc3RhbmNlLldhaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEdldFRpbWUoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl90aW1lRmlyc3RFdmVudDtcclxuICB9XHJcblxyXG4gIHBvbGwoKTogYW55IHtcclxuICAgIGxldCByZXN1bHQ6IGFueTtcclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCBvYmo6IGFueSA9IHRoaXMuX3F1ZXVlLnBvbGwoKTtcclxuICAgICAgaWYgKHRoaXMuaXNCYWNrZ3JvdW5kRXZlbnQob2JqKSkge1xyXG4gICAgICAgIHRoaXMuX3RpbWVGaXJzdEV2ZW50ID0gMDtcclxuICAgICAgfVxyXG4gICAgICByZXN1bHQgPSBvYmo7XHJcbiAgICB9XHJcbiAgICBmaW5hbGx5IHt9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHBlZWsoKTogYW55IHtcclxuICAgICAgcmV0dXJuIHRoaXMuX3F1ZXVlLnBlZWsoKTtcclxuICB9XHJcblxyXG4gIHNpemUoKTogbnVtYmVyIHtcclxuICAgIGxldCBzaXplOiBudW1iZXI7XHJcbiAgICByZXR1cm4gdGhpcy5fcXVldWUuU2l6ZTtcclxuICB9XHJcblxyXG4gIHJlbWFpbmluZ0NhcGFjaXR5KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gSW50MzIuTWF4VmFsdWU7XHJcbiAgfVxyXG5cclxuICBjbGVhcigpOiB2b2lkIHtcclxuICAgIHRoaXMuX3F1ZXVlLmNsZWFyKCk7XHJcbiAgfVxyXG5cclxuICBpc0VtcHR5KCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHJlc3VsdDogYm9vbGVhbjtcclxuICAgIHJldHVybiB0aGlzLl9xdWV1ZS5pc0VtcHR5KCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWdQcmlvcml0eUJsb2NraW5nUXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL3V0aWwvTWdQcmlvcml0eUJsb2NraW5nUXVldWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDckUsT0FBTyxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRCxNQUFNLE9BQU8sdUJBQXVCO0lBSWxDO1FBSFEsV0FBTSxHQUFvQixJQUFJLENBQUM7UUFDL0Isb0JBQWUsR0FBVyxDQUFDLENBQUM7UUFHbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxDQUFNO1FBQzlCLElBQUksTUFBTSxHQUFZLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsWUFBWSxnQkFBZ0IsRUFBRTtZQUNqQyxJQUFJLFlBQVksR0FBdUMsQ0FBQyxDQUFDO1lBQ3pELElBQUksWUFBWSxDQUFDLFdBQVcsRUFBRSxLQUFLLFFBQVEsQ0FBQyxNQUFNO2dCQUNoRCxNQUFNLEdBQUcsSUFBSSxDQUFDO1NBQ2pCO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELEtBQUssQ0FBQyxDQUFNO1FBQ1YsSUFBSTtZQUNGLElBQUksU0FBUyxHQUFZLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlDLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxDQUFDLEVBQUU7Z0JBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQzlCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7aUJBQ3JEO2FBQ0Y7WUFDRCxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3hCLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNyQyxPQUFPLElBQUksQ0FBQztTQUNiO2dCQUNPLEdBQUU7SUFDWixDQUFDO0lBRUQsR0FBRyxDQUFDLENBQU07UUFDUixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFHRCxLQUFLLENBQUMsY0FBYztRQUNsQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtZQUMxQixJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQztZQUN6QixNQUFNLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUMzQztJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxNQUFXLENBQUM7UUFDaEIsSUFBSTtZQUNGLElBQUksR0FBRyxHQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO2FBQzFCO1lBQ0QsTUFBTSxHQUFHLEdBQUcsQ0FBQztTQUNkO2dCQUNPLEdBQUU7UUFFVixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsSUFBSTtRQUNBLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSTtRQUNGLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFDMUIsQ0FBQztJQUVELGlCQUFpQjtRQUNmLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUN4QixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDL0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNZ0Jsb2NraW5nUXVldWV9IGZyb20gXCIuL01nQmxvY2tpbmdRdWV1ZVwiO1xyXG5pbXBvcnQge01nUHJpb3JpdHlRdWV1ZX0gZnJvbSBcIi4vTWdQcmlvcml0eVF1ZXVlXCI7XHJcbmltcG9ydCB7UnVuVGltZUV2ZW50QmFzZX0gZnJvbSBcIi4uL2V2ZW50L1J1blRpbWVFdmVudEJhc2VcIjtcclxuaW1wb3J0IHtNaXNjLCBQcmlvcml0eSwgU3luY0V4ZWN1dGlvbkhlbHBlcn0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHtEZWJ1ZywgSW50MzJ9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIE1nUHJpb3JpdHlCbG9ja2luZ1F1ZXVlIGltcGxlbWVudHMgTWdCbG9ja2luZ1F1ZXVlIHtcclxuICBwcml2YXRlIF9xdWV1ZTogTWdQcmlvcml0eVF1ZXVlID0gbnVsbDtcclxuICBwcml2YXRlIF90aW1lRmlyc3RFdmVudDogbnVtYmVyID0gMDtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLl9xdWV1ZSA9IG5ldyBNZ1ByaW9yaXR5UXVldWUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNCYWNrZ3JvdW5kRXZlbnQobzogYW55KTogYm9vbGVhbiB7XHJcbiAgICBsZXQgcmVzdWx0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBpZiAobyBpbnN0YW5jZW9mIFJ1blRpbWVFdmVudEJhc2UpIHtcclxuICAgICAgbGV0IHJ1blRpbWVFdmVudDogUnVuVGltZUV2ZW50QmFzZSA9IDxSdW5UaW1lRXZlbnRCYXNlPm87XHJcbiAgICAgIGlmIChydW5UaW1lRXZlbnQuZ2V0UHJpb3JpdHkoKSA9PT0gUHJpb3JpdHkuTE9XRVNUKVxyXG4gICAgICAgIHJlc3VsdCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIG9mZmVyKG86IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgbGV0IGNvbmRpdGlvbjogYm9vbGVhbiA9IHRoaXMuX3F1ZXVlLm9mZmVyKG8pO1xyXG4gICAgICBpZiAodGhpcy5fdGltZUZpcnN0RXZlbnQgPT09IDApIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNCYWNrZ3JvdW5kRXZlbnQobykpIHtcclxuICAgICAgICAgIHRoaXMuX3RpbWVGaXJzdEV2ZW50ID0gTWlzYy5nZXRTeXN0ZW1NaWxsaXNlY29uZHMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgRGVidWcuQXNzZXJ0KGNvbmRpdGlvbik7XHJcbiAgICAgIFN5bmNFeGVjdXRpb25IZWxwZXIuSW5zdGFuY2UuUHVsc2UoKTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBmaW5hbGx5IHt9XHJcbiAgfVxyXG5cclxuICBwdXQobzogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9mZmVyKG8pO1xyXG4gIH1cclxuXHJcbiAgLy8gVE9ETzogUmVtb3ZlIHRoaXMgbWV0aG9kIGFzIHdvcmtlciB0aHJlYWQgd29uJ3Qgd2FpdCBmb3IgZXZlbnRzIGdldHRpbmcgYWRkZWQgdG8gdGhlIHF1ZXVlLlxyXG4gIGFzeW5jIHdhaXRGb3JFbGVtZW50KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKHRoaXMuX3F1ZXVlLlNpemUgPT09IDApIHtcclxuICAgICAgdGhpcy5fdGltZUZpcnN0RXZlbnQgPSAwO1xyXG4gICAgICBhd2FpdCBTeW5jRXhlY3V0aW9uSGVscGVyLkluc3RhbmNlLldhaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEdldFRpbWUoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl90aW1lRmlyc3RFdmVudDtcclxuICB9XHJcblxyXG4gIHBvbGwoKTogYW55IHtcclxuICAgIGxldCByZXN1bHQ6IGFueTtcclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCBvYmo6IGFueSA9IHRoaXMuX3F1ZXVlLnBvbGwoKTtcclxuICAgICAgaWYgKHRoaXMuaXNCYWNrZ3JvdW5kRXZlbnQob2JqKSkge1xyXG4gICAgICAgIHRoaXMuX3RpbWVGaXJzdEV2ZW50ID0gMDtcclxuICAgICAgfVxyXG4gICAgICByZXN1bHQgPSBvYmo7XHJcbiAgICB9XHJcbiAgICBmaW5hbGx5IHt9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHBlZWsoKTogYW55IHtcclxuICAgICAgcmV0dXJuIHRoaXMuX3F1ZXVlLnBlZWsoKTtcclxuICB9XHJcblxyXG4gIHNpemUoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9xdWV1ZS5TaXplO1xyXG4gIH1cclxuXHJcbiAgcmVtYWluaW5nQ2FwYWNpdHkoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBJbnQzMi5NYXhWYWx1ZTtcclxuICB9XHJcblxyXG4gIGNsZWFyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcXVldWUuY2xlYXIoKTtcclxuICB9XHJcblxyXG4gIGlzRW1wdHkoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcXVldWUuaXNFbXB0eSgpO1xyXG4gIH1cclxufVxyXG4iXX0=