@magic-xpa/engine 4.1100.0-dev4110.252 → 4.1100.0-dev4110.256

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. package/esm2022/src/ClientManager.mjs +2 -2
  2. package/esm2022/src/CommandsProcessorBase.mjs +1 -1
  3. package/esm2022/src/CommandsProcessorManager.mjs +1 -1
  4. package/esm2022/src/CommandsTable.mjs +1 -1
  5. package/esm2022/src/CurrentClientVersion.mjs +2 -2
  6. package/esm2022/src/GUIManager.mjs +1 -1
  7. package/esm2022/src/GuiEventsProcessor.mjs +1 -1
  8. package/esm2022/src/ServerConfig.mjs +1 -1
  9. package/esm2022/src/commands/ClientToServer/ClientOriginatedCommandSerializer.mjs +1 -1
  10. package/esm2022/src/commands/ClientToServer/CommandFactory.mjs +1 -1
  11. package/esm2022/src/commands/ClientToServer/CommandSerializationHelper.mjs +1 -1
  12. package/esm2022/src/commands/ClientToServer/EvaluateCommand.mjs +1 -1
  13. package/esm2022/src/commands/ClientToServer/ExecOperCommand.mjs +1 -1
  14. package/esm2022/src/commands/ClientToServer/RollbackEventCommand.mjs +1 -1
  15. package/esm2022/src/commands/ServerToClient/AbortCommand.mjs +1 -1
  16. package/esm2022/src/commands/ServerToClient/AddRangeCommand.mjs +1 -1
  17. package/esm2022/src/commands/ServerToClient/AddSortCommand.mjs +1 -1
  18. package/esm2022/src/commands/ServerToClient/ClientRefreshCommand.mjs +1 -1
  19. package/esm2022/src/commands/ServerToClient/ClientTargetedCommandBase.mjs +1 -1
  20. package/esm2022/src/commands/ServerToClient/EnhancedVerifyCommand.mjs +1 -1
  21. package/esm2022/src/commands/ServerToClient/OpenURLCommand.mjs +1 -1
  22. package/esm2022/src/commands/ServerToClient/ResultCommand.mjs +1 -1
  23. package/esm2022/src/commands/ServerToClient/VerifyCommand.mjs +1 -1
  24. package/esm2022/src/commands/ServerToClient/XMLBasedCommandBuilder.mjs +1 -1
  25. package/esm2022/src/data/DataView.mjs +1 -1
  26. package/esm2022/src/data/DvCache.mjs +1 -1
  27. package/esm2022/src/data/Field.mjs +1 -1
  28. package/esm2022/src/data/FieldsTable.mjs +1 -1
  29. package/esm2022/src/data/Key.mjs +1 -1
  30. package/esm2022/src/data/Record.mjs +2 -2
  31. package/esm2022/src/data/RecordsTable.mjs +1 -1
  32. package/esm2022/src/data/TaskTransactionManager.mjs +1 -1
  33. package/esm2022/src/data/XMLBasedDcValuesBuilder.mjs +1 -1
  34. package/esm2022/src/env/EnvVariablesTable.mjs +1 -1
  35. package/esm2022/src/env/Environment.mjs +1 -1
  36. package/esm2022/src/env/LanguageData.mjs +1 -1
  37. package/esm2022/src/env/MirrorString.mjs +1 -1
  38. package/esm2022/src/event/ActionManager.mjs +1 -1
  39. package/esm2022/src/event/Event.mjs +1 -1
  40. package/esm2022/src/event/EventHandler.mjs +1 -1
  41. package/esm2022/src/event/EventHandlerPosition.mjs +1 -1
  42. package/esm2022/src/event/EventsManager.mjs +1 -1
  43. package/esm2022/src/event/RunTimeEvent.mjs +1 -1
  44. package/esm2022/src/event/UserEventsTable.mjs +1 -1
  45. package/esm2022/src/exp/ExpTable.mjs +1 -1
  46. package/esm2022/src/exp/Expression.mjs +1 -1
  47. package/esm2022/src/exp/ExpressionEvaluator.mjs +1 -1
  48. package/esm2022/src/exp/ExpressionLocalJpn.mjs +1 -1
  49. package/esm2022/src/exp/GlobalParamsTable.mjs +1 -1
  50. package/esm2022/src/exp/YesNoExp.mjs +1 -1
  51. package/esm2022/src/gui/FormsTable.mjs +1 -1
  52. package/esm2022/src/gui/MgControl.mjs +1 -1
  53. package/esm2022/src/gui/MgForm.mjs +1 -1
  54. package/esm2022/src/http/HttpManager.mjs +1 -1
  55. package/esm2022/src/http/client/HttpClientAsync.mjs +1 -1
  56. package/esm2022/src/http/client/HttpClientBase.mjs +1 -1
  57. package/esm2022/src/http/client/HttpClientEvents.mjs +1 -1
  58. package/esm2022/src/http/client/HttpClientSync.mjs +1 -1
  59. package/esm2022/src/http/client/HttpUtility.mjs +1 -1
  60. package/esm2022/src/remote/AddUserLocateRemoteDataViewCommand.mjs +1 -1
  61. package/esm2022/src/remote/AddUserRangeRemoteDataViewCommand.mjs +1 -1
  62. package/esm2022/src/remote/AddUserSortRemoteDataViewCommand.mjs +1 -1
  63. package/esm2022/src/remote/RemoteCommandsProcessor.mjs +1 -1
  64. package/esm2022/src/remote/RemoteControlItemsRefreshCommand.mjs +1 -1
  65. package/esm2022/src/remote/RemoteDataViewCommandBase.mjs +1 -1
  66. package/esm2022/src/remote/RemoteDataViewCommandFactory.mjs +1 -1
  67. package/esm2022/src/remote/ResetUserLocateRemoteDataviewCommand.mjs +1 -1
  68. package/esm2022/src/remote/ResetUserSortRemoteDataviewCommand.mjs +1 -1
  69. package/esm2022/src/remote/ServerError.mjs +1 -1
  70. package/esm2022/src/remote/SetTransactionStateRemoteDataViewCommand.mjs +1 -1
  71. package/esm2022/src/rt/Argument.mjs +1 -1
  72. package/esm2022/src/rt/ArgumentsList.mjs +1 -1
  73. package/esm2022/src/rt/Boundary.mjs +1 -1
  74. package/esm2022/src/rt/CompMainPrgTable.mjs +1 -1
  75. package/esm2022/src/rt/DataviewHeaderBase.mjs +1 -1
  76. package/esm2022/src/rt/DataviewHeaders.mjs +1 -1
  77. package/esm2022/src/rt/DataviewHeadersSaxHandler.mjs +1 -1
  78. package/esm2022/src/rt/ExecutionStack.mjs +1 -1
  79. package/esm2022/src/rt/HandlersTable.mjs +1 -1
  80. package/esm2022/src/rt/LastFocusedManager.mjs +1 -1
  81. package/esm2022/src/rt/Operation.mjs +1 -1
  82. package/esm2022/src/rt/OperationTable.mjs +1 -1
  83. package/esm2022/src/rt/Recompute.mjs +1 -1
  84. package/esm2022/src/rt/RecomputeTable.mjs +1 -1
  85. package/esm2022/src/rt/RemoteDataviewHeader.mjs +1 -1
  86. package/esm2022/src/rt/TableCache.mjs +1 -1
  87. package/esm2022/src/rt/TableCacheManager.mjs +1 -1
  88. package/esm2022/src/rt/Transaction.mjs +1 -1
  89. package/esm2022/src/security/UserDetails.mjs +1 -1
  90. package/esm2022/src/tasks/MGData.mjs +1 -1
  91. package/esm2022/src/tasks/MGDataCollection.mjs +1 -1
  92. package/esm2022/src/tasks/RCTimer.mjs +1 -1
  93. package/esm2022/src/tasks/RemoteTaskService.mjs +1 -1
  94. package/esm2022/src/tasks/Task.mjs +1 -1
  95. package/esm2022/src/tasks/TaskBase.mjs +1 -1
  96. package/esm2022/src/tasks/TaskServiceBase.mjs +1 -1
  97. package/esm2022/src/tasks/TasksTable.mjs +1 -1
  98. package/esm2022/src/tasks/sort/SortCollection.mjs +1 -1
  99. package/esm2022/src/util/ConstUtils.mjs +1 -1
  100. package/esm2022/src/util/FlowMonitorQueue.mjs +1 -1
  101. package/esm2022/src/util/HeapSort.mjs +1 -1
  102. package/esm2022/src/util/MgPriorityBlockingQueue.mjs +1 -1
  103. package/esm2022/src/util/MgPriorityQueue.mjs +1 -1
  104. package/esm2022/src/util/PrmMap.mjs +1 -1
  105. package/esm2022/src/util/Scrambler.mjs +1 -1
  106. package/esm2022/src/util/UniqueIDUtils.mjs +1 -1
  107. package/esm2022/src/util/cookie.service.mjs +1 -1
  108. package/fesm2022/magic-xpa-engine.mjs +3 -3
  109. package/fesm2022/magic-xpa-engine.mjs.map +1 -1
  110. package/package.json +4 -4
@@ -264,4 +264,4 @@ export class RecordsTable {
264
264
  this.removeAll();
265
265
  }
266
266
  }
267
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjb3Jkc1RhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW5naW5lL3NyYy9kYXRhL1JlY29yZHNUYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRWhDLE9BQU8sRUFBQyxxQkFBcUIsRUFBNkIsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBQUMsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQWdCLE1BQU0sc0JBQXNCLENBQUM7QUFDakcsT0FBTyxFQUFDLE1BQU0sRUFBWSxNQUFNLGtCQUFrQixDQUFDO0FBR25ELE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLE1BQU0sQ0FBQyxhQUFhLEdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDMUIsY0FBYyxHQUFZLEtBQUssQ0FBQztJQUNoQyxRQUFRLEdBQThCLElBQUksQ0FBQztJQUMzQyxpQkFBaUIsR0FBVyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQzNDLFFBQVEsR0FBaUIsSUFBSSxDQUFDO0lBQzlCLGNBQWMsR0FBVyxJQUFJLENBQUM7SUFLdEMsb0JBQW9CLEdBQVcsQ0FBQyxDQUFDO0lBVWpDLFlBQVksMkJBQWtEO1FBQzVELElBQUksMkJBQTJCLENBQUMsV0FBVyxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ3hELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxJQUFJLEVBQVUsQ0FBQztZQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksU0FBUyxDQUFpQixHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDeEQsSUFBSSxDQUFDLGNBQWMsR0FBWSwyQkFBMkIsQ0FBQztZQUMzRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUM3QyxDQUFDOztZQUVDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFF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SUFBSSxDQUFDLENBQUM7UUFDeEQsWUFBWSxDQUFDLFFBQVEsR0FBRyxJQUFJLElBQUksRUFBVSxDQUFDO1FBQzNDLFlBQVksQ0FBQyxRQUFRLEdBQUcsSUFBSSxTQUFTLENBQWlCLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUVoRSxLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM1RCxJQUFJLE1BQU0sR0FBVyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMzRCxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNuQyxZQUFZLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUVELE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFNRCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELFdBQVcsQ0FBQyxHQUFXO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJUmVjb3Jkc1RhYmxlfSBmcm9tIFwiLi9JUmVjb3Jkc1RhYmxlXCI7XHJcbmltcG9ydCB7UmVjb3JkfSBmcm9tIFwiLi9SZWNvcmRcIjtcclxuaW1wb3J0IHtEYXRhVmlld30gZnJvbSBcIi4vRGF0YVZpZXdcIjtcclxuaW1wb3J0IHtEYXRhTW9kaWZpY2F0aW9uVHlwZXMsIE9iamVjdFJlZmVyZW5jZXNDb2xsZWN0aW9ufSBmcm9tIFwiQG1hZ2ljLXhwYS9ndWlcIjtcclxuaW1wb3J0IHtBcHBsaWNhdGlvbkV4Y2VwdGlvbiwgSGFzaHRhYmxlLCBJbnQzMiwgTGlzdCwgU3RyaW5nQnVpbGRlcn0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7TG9nZ2VyLCBYbWxQYXJzZXJ9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcblxyXG4vLy8gICBhbiBvYmplY3Qgb2YgdGhpcyBjbGFzcyBob2xkcyBhIGNvbGxlY3Rpb24gb2YgcmVjb3Jkc1xyXG5leHBvcnQgY2xhc3MgUmVjb3Jkc1RhYmxlIGltcGxlbWVudHMgSVJlY29yZHNUYWJsZSB7XHJcbiAgc3RhdGljIFJFQ19OT1RfRk9VTkQ6IG51bWJlciA9IC0xO1xyXG4gIHByaXZhdGUgX3VzZUxpbmtlZExpc3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9oYXNoVGFiOiBIYXNodGFibGU8bnVtYmVyLCBSZWNvcmQ+ID0gbnVsbDtcclxuICBwcml2YXRlIF9pbml0aWFsQ3VyclJlY0lkOiBudW1iZXIgPSBJbnQzMi5NaW5WYWx1ZTtcclxuICBwcml2YXRlIF9yZWNvcmRzOiBMaXN0PFJlY29yZD4gPSBudWxsO1xyXG4gIHByaXZhdGUgX3NlcnZlckN1cnJSZWM6IFJlY29yZCA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSBudW1iZXIgb2YgcmVjb3JkcyBpbnNlcnRlZCBpbiB0aGUgYmVnaW5pbmcgb2YgdGhlIHRhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBJbnNlcnRlZFJlY29yZHNDb3VudDogbnVtYmVyID0gMDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENUT1JcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwid2l0aExpbmtlZExpc3RcIj5tYWludGFpbiB0YWJsZSBhcyBhIGxpbmtlZCBsaXN0XHJcbiAgLy8vICAgZnJvbSBvbmUgaXRlbSB0byBhbm90aGVyXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgY29uc3RydWN0b3Iod2l0aExpbmtlZExpc3Q6IGJvb2xlYW4pO1xyXG4gIGNvbnN0cnVjdG9yKHJlY29yZFRhYmxlOiBSZWNvcmRzVGFibGUpO1xyXG4gIGNvbnN0cnVjdG9yKHdpdGhMaW5rZWRMaXN0T3JSZWNvcmRUYWJsZTogUmVjb3Jkc1RhYmxlfCBib29sZWFuKSB7XHJcbiAgICBpZiAod2l0aExpbmtlZExpc3RPclJlY29yZFRhYmxlLmNvbnN0cnVjdG9yID09PSBCb29sZWFuKSB7XHJcbiAgICAgIHRoaXMuX3JlY29yZHMgPSBuZXcgTGlzdDxSZWNvcmQ+KCk7XHJcbiAgICAgIHRoaXMuX2hhc2hUYWIgPSBuZXcgSGFzaHRhYmxlPG51bWJlciwgUmVjb3JkPigxMDAsIDAuNyk7XHJcbiAgICAgIHRoaXMuX3VzZUxpbmtlZExpc3QgPSA8Ym9vbGVhbj53aXRoTGlua2VkTGlzdE9yUmVjb3JkVGFibGU7XHJcbiAgICAgIHRoaXMuSW5zZXJ0ZWRSZWNvcmRzQ291bnQgPSBJbnQzMi5NaW5WYWx1ZTtcclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCB3aXRoTGlua2VkTGlzdE9yUmVjb3JkVGFibGUpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHBhcnNlIGlucHV0IHN0cmluZyBhbmQgZmlsbCBpbm5lciBkYXRhIC0gcmV0dXJucyB0aGUgcmVmcmVzaCB0eXBlIGZvciB0aGUgdGFza1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJkYXRhdmlld1wiPmEgcmVmZXJlbmNlIHRvIHRoZSBkYXRhdmlld1xyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIGZpbGxEYXRhKGRhdGF2aWV3OiBEYXRhVmlldywgaW5zZXJ0QXQ6IHN0cmluZywgcGFyc2VyOiBYbWxQYXJzZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IGM6IHN0cmluZyA9ICdOJztcclxuICAgIGxldCByZWNvcmQ6IFJlY29yZCA9IG51bGw7XHJcbiAgICBsZXQgZmxhZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5JbnNlcnRlZFJlY29yZHNDb3VudCA9IDA7XHJcbiAgICB0aGlzLl9pbml0aWFsQ3VyclJlY0lkID0gSW50MzIuTWluVmFsdWU7XHJcbiAgICBsZXQgbmV4dFRhZzogc3RyaW5nID0gcGFyc2VyLmdldE5leHRUYWcoKTtcclxuICAgIHdoaWxlIChuZXh0VGFnICE9PSBudWxsICYmIG5leHRUYWcgPT09IFwicmVjXCIpIHtcclxuICAgICAgbGV0IHJlY29yZDI6IFJlY29yZCA9IG5ldyBSZWNvcmQoZGF0YXZpZXcpO1xyXG4gICAgICByZWNvcmQyLkluaXRpYWxpemUoKTtcclxuICAgICAgbGV0IGlzQ3VyclJlYzogYm9vbGVhbiA9IHJlY29yZDIuZmlsbERhdGEocGFyc2VyKTtcclxuICAgICAgaWYgKGlzQ3VyclJlYyAmJiAhZGF0YXZpZXcuSGFzTWFpblRhYmxlKSB7XHJcbiAgICAgICAgbGV0IGRjUmVmczI6IE9iamVjdFJlZmVyZW5jZXNDb2xsZWN0aW9uO1xyXG4gICAgICAgIGxldCBkY1JlZnM6IE9iamVjdFJlZmVyZW5jZXNDb2xsZWN0aW9uID0gZGNSZWZzMiA9IHJlY29yZDIuZ2V0RGNSZWZzKCk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCB0aGlzLmdldFNpemUoKTsgaSA9IGkgKyAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0UmVjQnlJZHgoaSkuc2V0RGNSZWZzKGRjUmVmcyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkge1xyXG4gICAgICAgICAgaWYgKGRjUmVmczIgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgKGRjUmVmczIpLkRpc3Bvc2UoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGlzQ3VyclJlYykge1xyXG4gICAgICAgIGlmIChkYXRhdmlldy5nZXRUYXNrKCkuZ2V0TW9kZSgpICE9PSAnQycpIHtcclxuICAgICAgICAgIHJlY29yZDIuc2V0T2xkUmVjKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2luaXRpYWxDdXJyUmVjSWQgPSByZWNvcmQyLmdldElkKCk7XHJcblxyXG4gICAgICAgIC8vIHNhdmUgdGhlIGN1cnJlbnQgcmVjb3JkIGFzIHNlbnQgYnkgdGhlIHNlcnZlci5cclxuICAgICAgICB0aGlzLl9zZXJ2ZXJDdXJyUmVjID0gcmVjb3JkMi5yZXBsaWNhdGUoKTtcclxuICAgICAgICBpZiAoYyA9PT0gJ04nKSB7XHJcbiAgICAgICAgICBjID0gJ0MnLyonQycqLztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjID0gJ0YnLyonRicqLztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgcmVjb3JkMi5zZXRPbGRSZWMoKTtcclxuICAgICAgICBjID0gJ1QnLyonVCcqLztcclxuICAgICAgfVxyXG4gICAgICBsZXQgZm91bmRSZWM6IFJlY29yZCA9IHRoaXMuZ2V0UmVjb3JkKHJlY29yZDIuZ2V0SWQoKSk7XHJcbiAgICAgIGlmIChmb3VuZFJlYyAhPT0gbnVsbCkge1xyXG4gICAgICAgIGxldCB1cGRhdGVkOiBib29sZWFuID0gZm91bmRSZWMuVXBkYXRlZDtcclxuICAgICAgICBsZXQgbW9kaWZpZWQ6IGJvb2xlYW4gPSBmb3VuZFJlYy5Nb2RpZmllZDtcclxuICAgICAgICAvLyBsZXQgbW9kZTogRGF0YU1vZGlmaWNhdGlvblR5cGVzID0gZm91bmRSZWMuZ2V0TW9kZSgpO1xyXG4gICAgICAgIGxldCBjb21wdXRlZDogYm9vbGVhbiA9IGZvdW5kUmVjLmlzQ29tcHV0ZWQoKTtcclxuICAgICAgICBsZXQgcHJldlJlYzogUmVjb3JkID0gZm91bmRSZWMuZ2V0UHJldlJlYygpO1xyXG4gICAgICAgIGxldCBuZXh0UmVjOiBSZWNvcmQgPSBmb3VuZFJlYy5nZXROZXh0UmVjKCk7XHJcbiAgICAgICAgZm91bmRSZWMuc2V0U2FtZUFzKHJlY29yZDIsIGZhbHNlKTtcclxuICAgICAgICBmb3VuZFJlYy5zZXRQcmV2UmVjKHByZXZSZWMpO1xyXG4gICAgICAgIGZvdW5kUmVjLnNldE5leHRSZWMobmV4dFJlYyk7XHJcbiAgICAgICAgZm91bmRSZWMuc2V0Q29tcHV0ZWQoY29tcHV0ZWQpO1xyXG4gICAgICAgIGlmIChtb2RpZmllZClcclxuICAgICAgICAgIGZvdW5kUmVjLnNldE1vZGlmaWVkKCk7XHJcbiAgICAgICAgaWYgKHVwZGF0ZWQpXHJcbiAgICAgICAgICBmb3VuZFJlYy5zZXRVcGRhdGVkKCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5JbnNlcnRSZWNvcmQoaW5zZXJ0QXQsIHJlY29yZDIpO1xyXG5cclxuICAgICAgICAvLyBJZiByZWNvcmQgYmVpbmcgYWRkZWQgYXQgdGhlIHRvcCAoMHRoIHBvc2l0aW9uKSwgZGVjcmVtZW50IHRoZSByZWNvcmRzYmVmb3JlQ3VycmVudFZpZXcuXHJcbiAgICAgICAgaWYgKGRhdGF2aWV3LmdldFRhc2soKS5pc1RhYmxlV2l0aEFic29sdXRlc1Njcm9sbGJhcigpICkge1xyXG5cclxuICAgICAgICAgIC8vIEVtcHR5IGRhdGF2aWV3IGluaXRpYWwgdmFsdWUgb2YgVG90YWxSZWNvcmRzQ291bnQgaXMgemVyby4gQW5kIHdoZW4gZmlyc3QgcmVjb3JkIGJlaW5nIGluc2VydGVkLFxyXG4gICAgICAgICAgLy8gdGhyb3VnaCBUYXNrLmluc2VydFJlY29yZFRhYmxlKCkuIEVsc2UsIHRoZSBUb3RhbFJlY29yZHNDb3VudCBnZXRzIGluY3JlbWVudGVkIHRocm91Z2ggTWdGb3JtLkFkZHJlYygpXHJcbiAgICAgICAgICBpZiAoZGF0YXZpZXcuVG90YWxSZWNvcmRzQ291bnQgPT09IDAgJiYgZGF0YXZpZXcuUmVjb3Jkc0JlZm9yZUN1cnJlbnRWaWV3ID09IDApXHJcbiAgICAgICAgICAgIGRhdGF2aWV3LlRvdGFsUmVjb3Jkc0NvdW50ID0gZGF0YXZpZXcuVG90YWxSZWNvcmRzQ291bnQgKyAxO1xyXG5cclxuICAgICAgICAgIC8vIEhhdmluZyBsb2NhdGUgb3BlcmF0aW9uIHdpdGggUmVjb3Jkc0JlZm9yZUN1cnJlbnRWaWV3ID4gMCBhbmQgaWYgbW92aW5nIGluIHJldmVyc2UgZGlyZWN0aW9uLCB0aGUgdXBkYXRlZFxyXG4gICAgICAgICAgLy8gY291bnRzIGFyZSBub3QgcmV0cmlldmVkIGFnYWluLiBIZW5jZSwgZGVjcmVtZW50IFJlY29yZHNCZWZvcmVDdXJyZW50VmlldyBhcyByZWNvcmQgZ2V0cyBhZGRlZCBpbiBkYXRhdmlldy5cclxuICAgICAgICAgIGlmIChkYXRhdmlldy5SZWNvcmRzQmVmb3JlQ3VycmVudFZpZXcgPiAwICYmICBpbnNlcnRBdCA9PT0gJ0InKVxyXG4gICAgICAgICAgICBkYXRhdmlldy5SZWNvcmRzQmVmb3JlQ3VycmVudFZpZXcgPSBkYXRhdmlldy5SZWNvcmRzQmVmb3JlQ3VycmVudFZpZXcgLSAxO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gbWFrZSBzdXJlIHRoYXQgYSBuZXcgcmVjb3JkIGNyZWF0ZWQgYnkgdGhlIHNlcnZlciBpcyBpbiAnaW5zZXJ0JyBtb2RlXHJcbiAgICAgICAgLy8gYW5kIG1hcmsgaXQgYXMgYSAnY29tcHV0ZWQnIHJlY29yZFxyXG4gICAgICAgIGlmIChpc0N1cnJSZWMgJiYgZGF0YXZpZXcuZ2V0VGFzaygpLmdldE1vZGUoKSA9PT0gJ0MnKVxyXG4gICAgICAgICAgcmVjb3JkMi5zZXRNb2RlKERhdGFNb2RpZmljYXRpb25UeXBlcy5JbnNlcnQpO1xyXG4gICAgICAgIHJlY29yZDIuc2V0Q29tcHV0ZWQodHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgICAgbmV4dFRhZyA9IHBhcnNlci5nZXROZXh0VGFnKCk7XHJcbiAgICAgIGlmICghaXNDdXJyUmVjKVxyXG4gICAgICAgIHJlY29yZCA9IHJlY29yZDI7XHJcblxyXG4gICAgICBmbGFnID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBDdXJyZW50bHkgUmVjb3Jkc1RhYmxlIGluY2x1ZGUgbG9uZWx5IHJlY29yZFxyXG4gICAgLy8gV2UgZHVwbGljYXRlIGl0IHJlY29yZCBkdWUgdG8gZnVsbCBjaHVua1xyXG4gICAgLy8gVGhpcyBtZWNoYW5pc20gaXMgZm9yIE5vX21haW5fdGFibGUgY2FzZSBvbmx5XHJcbiAgICBsZXQgbnVtOiBudW1iZXIgPSAwO1xyXG4gICAgd2hpbGUgKCFkYXRhdmlldy5IYXNNYWluVGFibGUgJiYgcmVjb3JkICE9PSBudWxsICYmIG51bSA8IGRhdGF2aWV3LmdldENodW5rU2l6ZSgpIC0gMSkge1xyXG4gICAgICBsZXQgcmVjb3JkNDogUmVjb3JkID0gbmV3IFJlY29yZChkYXRhdmlldyk7XHJcbiAgICAgIHJlY29yZDQuSW5pdGlhbGl6ZSgpO1xyXG4gICAgICByZWNvcmQ0LnNldFNhbWVBcyhyZWNvcmQsIGZhbHNlLCByZWNvcmQuZ2V0SWQoKSArIG51bSArIDEpO1xyXG4gICAgICByZWNvcmQ0LnNldE9sZFJlYygpO1xyXG4gICAgICB0aGlzLmFkZFJlYyhyZWNvcmQ0KTtcclxuICAgICAgbnVtID0gbnVtICsgMTtcclxuICAgIH1cclxuICAgIC8vIGlmIHNlcnZlciBzZW50IHVzIGEgY3VyciByZWMsIHRoZW4gd2UgYWxyZWFkeSBoYXZlIGl0LlxyXG4gICAgLy8gaWYgbm8gY3VyciByZWMgd2FzIHNlbnQsIGJ1dCBvdGhlciBkYXRhIHdhcyBzZW50OiB3ZSBubyBsb25nZXIga25vd1xyXG4gICAgLy8gICAgd2hhdCBjdXJyIHJlYyB0aGUgc2VydmVyIGhhcyAtPiBkaXNjYXJkIG91ciBjdXJyIHJlY1xyXG4gICAgLy8gaWYgbm8gZGF0YSB3YXMgc2VudCwgdGhlIHNlcnZlciBjdXJyIHJlYyBpcyB3aGF0IHdlIHNlbnQgaXQgbGFzdCB0aW1lLlxyXG4gICAgaWYgKHRoaXMuX2luaXRpYWxDdXJyUmVjSWQgPT09IEludDMyLk1pblZhbHVlKSB7XHJcbiAgICAgIGlmIChmbGFnKVxyXG4gICAgICAgIHRoaXMuX3NlcnZlckN1cnJSZWMgPSBudWxsO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpZiAoZGF0YXZpZXcuZ2V0Q3VyclJlYygpICE9PSBudWxsKVxyXG4gICAgICAgICAgdGhpcy5fc2VydmVyQ3VyclJlYyA9IChkYXRhdmlldy5nZXRDdXJyUmVjKCkpLnJlcGxpY2F0ZSgpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHRoaXMuX3NlcnZlckN1cnJSZWMgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gaW5zZXJ0IFJlY29yZCBpbnRvIHJlY29yZHMgVGFibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImluc2VydEF0XCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJyZWNvcmRcIj48L3BhcmFtPlxyXG4gIEluc2VydFJlY29yZChpbnNlcnRBdDogc3RyaW5nLCByZWNvcmQ6IFJlY29yZCk6IHZvaWQge1xyXG4gICAgaWYgKGluc2VydEF0ID09PSAnQicpIHtcclxuICAgICAgbGV0IGluc2VydGVkUmVjb3Jkc0NvdW50OiBudW1iZXIgPSB0aGlzLkluc2VydGVkUmVjb3Jkc0NvdW50O1xyXG4gICAgICB0aGlzLkluc2VydGVkUmVjb3Jkc0NvdW50ID0gaW5zZXJ0ZWRSZWNvcmRzQ291bnQgKyAxO1xyXG4gICAgICB0aGlzLmluc2VydFJlY29yZChyZWNvcmQsIDApO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmFkZFJlYyhyZWNvcmQpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGJ1aWxkIFhNTCBzdHJpbmcgZm9yIHRoZSByZWNvcmRzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImZpZWxkc1RhYlwiPnRoZSBmaWVsZHMgdGFibGUgZm9yIHRoZSByZWNvcmRzIHRhYmxlXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJtZXNzYWdlXCI+dG8gYnVpbGQsIGFkZCBwYXJ0c1xyXG4gIC8vLyAgIDxwYXJhbSBuYW1lID0gXCJza2lwQ3VyclJlY1wiPlNraXAgY3VycmVudCByZWNvcmRcclxuICAvLy8gICAgIDxwYXJhbSBuYW1lID0gXCJjdXJyUmVjSWRcIj5DdXJyZW50IHJlY29yZCBJRFxyXG4gIC8vLyAgICAgPC9wYXJhbT5cclxuICBidWlsZFhNTCggbWVzc2FnZTogU3RyaW5nQnVpbGRlciwgc2tpcEN1cnJSZWM6IGJvb2xlYW4sIGN1cnJSZWNJZDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgdGhpcy5fcmVjb3Jkcy5sZW5ndGg7IGkgPSBpICsgMSkge1xyXG4gICAgICAvLyBJbiBjYXNlIHRoZSBwcmV2aW91cyByZWNvcmQgaXMgbm90IGtub3duIHRvIHRoZSBzZXJ2ZXIgKE9QX0lOU0VSVCdlZCkgYW5kIGlzIHRvIGJlXHJcbiAgICAgIC8vIGR1bXBlZCBvbmx5IGFmdGVyIHRoaXMgcmVjb3JkIChpdCdzIGlkeCBpcyBncmVhdGVyIHRoZW4gJ2knKSwgdGhlbiB0ZW1wb3JhcnkgY2hhbmdlXHJcbiAgICAgIC8vIG15IHByZXYgcmVjb3JkIHNvIHRoZSBzZXJ2ZXIgd29uJ3QgZ2V0IGNvbmZ1c2VkLlxyXG4gICAgICBsZXQgcmVjb3JkOiBSZWNvcmQgPSB0aGlzLl9yZWNvcmRzLmdldF9JdGVtKGkpO1xyXG5cclxuICAgICAgaWYgKCFyZWNvcmQuU2VuZFRvU2VydmVyIHx8IChza2lwQ3VyclJlYyAmJiByZWNvcmQuZ2V0SWQoKSA9PT0gY3VyclJlY0lkKSlcclxuICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgIGxldCBwcmV2UmVjOiBSZWNvcmQ7XHJcbiAgICAgIGxldCByZWNvcmQyOiBSZWNvcmQgPSBwcmV2UmVjID0gcmVjb3JkLmdldFByZXZSZWMoKTtcclxuICAgICAgbGV0IHJlY0lkeDogbnVtYmVyO1xyXG4gICAgICAvLyBRQ1IgIzUwNTI3NzogVGhlIHByZXZpb3VzIHJlY29yZCBtYXkgYmUgdW5rbm93biB0byB0aGUgc2VydmVyIGJ1dCBub3QgaW5cclxuICAgICAgLy8gdGhlIG1vZGlmaWVkIGxpc3QgeWV0LiBUaGVyZWZvcmUsIGlmIHRoZSBwcmV2aW91cyByZWNvcmQgd2FzIG5vdCBmb3VuZFxyXG4gICAgICAvLyBpbiB0aGF0IGxpc3QgdGhlbiBkbyBhbm90aGVyIGl0ZXJhdGlvbiBvZiB0aGUgbG9vcC5cclxuICAgICAgd2hpbGUgKHByZXZSZWMgIT09IG51bGwgJiYgdHlwZW9mIHByZXZSZWMgIT09IFwidW5kZWZpbmVkXCIgJiZcclxuICAgICAgICAgICAgIChwcmV2UmVjLmdldE1vZGUoKSA9PT0gRGF0YU1vZGlmaWNhdGlvblR5cGVzLkluc2VydCB8fCAhcHJldlJlYy5TZW5kVG9TZXJ2ZXIpICYmXHJcbiAgICAgICAgICAgICByZWNvcmQuZ2V0TW9kZSgpID09PSBEYXRhTW9kaWZpY2F0aW9uVHlwZXMuSW5zZXJ0ICYmXHJcbiAgICAgICAgICAgICAoKHJlY0lkeCA9IHRoaXMuZ2V0UmVjSWR4KHByZXZSZWMuZ2V0SWQoKSkpID4gaSB8fCByZWNJZHggPT09IFJlY29yZHNUYWJsZS5SRUNfTk9UX0ZPVU5EIHx8ICFwcmV2UmVjLlNlbmRUb1NlcnZlcikpIHtcclxuICAgICAgICBwcmV2UmVjID0gcHJldlJlYy5nZXRQcmV2UmVjKCk7XHJcbiAgICAgICAgcmVjb3JkLnNldFByZXZSZWMocHJldlJlYyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJlY29yZC5idWlsZFhNTChtZXNzYWdlLCBmYWxzZSk7XHJcbiAgICAgIGlmIChwcmV2UmVjICE9PSByZWNvcmQyKSB7XHJcbiAgICAgICAgcmVjb3JkLnNldFByZXZSZWMocmVjb3JkMik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm4gYSByZWNvcmQgYnkgaXRzIGlkIG9yIG51bGwgaWYgdGhlIHJlY29yZCB3YXMgbm90IGZvdW5kXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImlkXCI+dGhlIGlkIG9mIHRoZSByZWNvcmRcclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IFJlY29yZCB0aGUgcmVxdWVzdGVkIHJlY29yZFxyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgZ2V0UmVjb3JkKGlkOiBudW1iZXIpOiBSZWNvcmQge1xyXG4gICAgcmV0dXJuIDxSZWNvcmQ+dGhpcy5faGFzaFRhYi5nZXRfSXRlbShpZCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIGEgcmVjb3JkIGluZGV4IGJ5IGl0cyBpZCAtIGlmIG5vIHJlY29yZCB3YXMgZm91bmQgKFJFQ19OT1RfRk9VTkQpIGlzIHJldHVybmVkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImlkXCI+aXMgdGhlIGlkIG9mIHRoZSByZWNvcmRcclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHRoZSByZXF1ZXN0ZWQgcmVjb3JkIGluZGV4XHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBnZXRSZWNJZHgoaWQ6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICBsZXQgcmVzdWx0OiBudW1iZXIgPSBSZWNvcmRzVGFibGUuUkVDX05PVF9GT1VORDtcclxuICAgIGxldCByZWNvcmQ6IFJlY29yZCA9IHRoaXMuZ2V0UmVjb3JkKGlkKTtcclxuICAgIGlmIChyZWNvcmQgIT09IG51bGwpIHtcclxuICAgICAgcmVzdWx0ID0gdGhpcy5fcmVjb3Jkcy5pbmRleE9mKHJlY29yZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgYSByZWNvcmQgYnkgaXRzIGluZGV4IGluIHRoZSB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpbnRcIj5pcyB0aGUgcmVjb3JkIGluZGV4IGluIHRoZSB0YWJsZVxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gUmVjb3JkIGlzIHRoZSByZXF1ZXN0ZWQgcmVjb3JkXHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBnZXRSZWNCeUlkeChpZHg6IG51bWJlcik6IFJlY29yZCB7XHJcbiAgICBpZiAoaWR4IDwgMCB8fCBpZHggPj0gdGhpcy5fcmVjb3Jkcy5sZW5ndGgpIHtcclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRGV2VG9Mb2coXCJpbiBSZWNvcmRzVGFibGUuZ2V0UmVjQnlJZHgoKSBpbmRleCBvdXQgb2YgYm91bmRzOiBcIiArIGlkeCk7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLl9yZWNvcmRzLmdldF9JdGVtKGlkeCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmVtb3ZlIGFsbCB0aGUgcmVjb3JkcyBmcm9tIHRoZSB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcmVtb3ZlQWxsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcmVjb3Jkcy5DbGVhcigpO1xyXG4gICAgdGhpcy5faGFzaFRhYi5DbGVhcigpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCB0aGUgbnVtYmVyIG9mIHJlY29yZHMgaW4gdGhlIHRhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRTaXplKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmVjb3Jkcy5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgY3VycmVudCByZWNvcmQsIGFzIHdhcyBzZXQgYnkgdGhlIFhNTCAoYXJyaXZpbmcgZnJvbSB0aGUgc2VydmVyKS5cclxuICAvLy8gICBBIEludGVnZXIuTUlOX1ZBTFVFIGluZGljYXRlcyB0aGF0IGl0IHdhcyBub3Qgc2V0IGF0IGFsbC5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldEluaXRpYWxDdXJyUmVjSWQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9pbml0aWFsQ3VyclJlY0lkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGFkZCBhIHJlY29yZCB0byB0aGUgZW5kIG9mIHRoZSB0YWJsZSAtIHVubGVzcyBpdCBpcyBhbHJlYWR5IGluIHRoZSB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJyZWNcIj50aGUgcmVjb3JkIHRvIGFkZFxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIGFkZFJlY29yZChyZWM6IFJlY29yZCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX3JlY29yZHMuaW5kZXhPZihyZWMpIDwgMCkge1xyXG4gICAgICB0aGlzLmFkZFJlYyhyZWMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGFkZHMgYSByZWNvcmQgdG8gdGhlIHJlY29yZHMgdGFibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgYWRkUmVjKHJlYzogUmVjb3JkKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fdXNlTGlua2VkTGlzdCAmJiB0aGlzLl9yZWNvcmRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IHJlY29yZDogUmVjb3JkID0gdGhpcy5fcmVjb3Jkcy5nZXRfSXRlbSh0aGlzLl9yZWNvcmRzLmxlbmd0aCAtIDEpO1xyXG4gICAgICByZWNvcmQuc2V0TmV4dFJlYyhyZWMpO1xyXG4gICAgICByZWMuc2V0UHJldlJlYyhyZWNvcmQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3JlY29yZHMucHVzaChyZWMpO1xyXG4gICAgdGhpcy5faGFzaFRhYi5zZXRfSXRlbShyZWMuZ2V0SGFzaEtleSgpLCByZWMpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGluc2VydCBhIHJlY29yZCBhdCB0aGUgc3BlY2lmaWVkIGluZGV4XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInJlY1wiPnRoZSByZWNvcmQgdG8gaW5zZXJ0XHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpZHhcIj50aGUgaW5kZXggb2YgdGhlIG5ldyByZWNvcmRcclxuICAvLy8gPC9wYXJhbT5cclxuICBpbnNlcnRSZWNvcmQocmVjOiBSZWNvcmQsIGlkeDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fdXNlTGlua2VkTGlzdCkge1xyXG4gICAgICBpZiAoaWR4ID4gMCkge1xyXG4gICAgICAgIGxldCByZWNvcmQ6IFJlY29yZCA9IHRoaXMuX3JlY29yZHMuZ2V0X0l0ZW0oaWR4IC0gMSk7XHJcbiAgICAgICAgcmVjLnNldFByZXZSZWMocmVjb3JkKTtcclxuICAgICAgICByZWNvcmQuc2V0TmV4dFJlYyhyZWMpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaWR4ICE9PSB0aGlzLl9yZWNvcmRzLmxlbmd0aCkge1xyXG4gICAgICAgIGxldCByZWNvcmQyOiBSZWNvcmQgPSB0aGlzLl9yZWNvcmRzLmdldF9JdGVtKGlkeCk7XHJcbiAgICAgICAgcmVjLnNldE5leHRSZWMocmVjb3JkMik7XHJcbiAgICAgICAgcmVjb3JkMi5zZXRQcmV2UmVjKHJlYyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9yZWNvcmRzLkluc2VydChpZHgsIHJlYyk7XHJcbiAgICB0aGlzLl9oYXNoVGFiLnNldF9JdGVtKHJlYy5nZXRIYXNoS2V5KCksIHJlYyk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmVtb3ZlIGEgcmVjb3JkIGZyb20gdGhlIHRhYmxlIGJ5IGl0cyBpbmRleCBpbiB0aGUgdGFibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicmVjSWR4XCI+cmVjb3JkIGluZGV4XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJyZWNcIj5hIHJlZmVyZW5jZSB0byB0aGUgcmVjb3JkIHRvIHJlbW92ZVxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIHJlbW92ZVJlY29yZChyZWNJZHg6IG51bWJlcik6IHZvaWQ7XHJcbiAgcmVtb3ZlUmVjb3JkKHJlYzogUmVjb3JkKTogdm9pZDtcclxuICByZW1vdmVSZWNvcmQocmVjSWR4T3JSZWM6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEgJiYgKHJlY0lkeE9yUmVjID09PSBudWxsIHx8IHJlY0lkeE9yUmVjLmNvbnN0cnVjdG9yID09PSBOdW1iZXIpKSB7XHJcbiAgICAgIHRoaXMucmVtb3ZlUmVjb3JkXzAocmVjSWR4T3JSZWMpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZW1vdmVSZWNvcmRfMShyZWNJZHhPclJlYyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbW92ZVJlY29yZF8wKHJlY0lkeDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAocmVjSWR4ID49IDAgJiYgcmVjSWR4IDwgdGhpcy5fcmVjb3Jkcy5sZW5ndGgpIHtcclxuICAgICAgbGV0IHJlY29yZDogUmVjb3JkID0gdGhpcy5fcmVjb3Jkcy5nZXRfSXRlbShyZWNJZHgpO1xyXG4gICAgICBsZXQgdXNlTGlua2VkTGlzdDogYm9vbGVhbiA9IHRoaXMuX3VzZUxpbmtlZExpc3Q7XHJcbiAgICAgIGlmICh1c2VMaW5rZWRMaXN0KSB7XHJcbiAgICAgICAgaWYgKHJlY0lkeCA+IDApIHtcclxuICAgICAgICAgIGxldCByZWNvcmQyOiBSZWNvcmQgPSB0aGlzLl9yZWNvcmRzLmdldF9JdGVtKHJlY0lkeCAtIDEpO1xyXG4gICAgICAgICAgcmVjb3JkMi5zZXROZXh0UmVjKHJlY29yZC5nZXROZXh0UmVjKCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocmVjSWR4ICsgMSA8IHRoaXMuX3JlY29yZHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICBsZXQgcmVjb3JkMjogUmVjb3JkID0gdGhpcy5fcmVjb3Jkcy5nZXRfSXRlbShyZWNJZHggKyAxKTtcclxuICAgICAgICAgIHJlY29yZDIuc2V0UHJldlJlYyhyZWNvcmQuZ2V0UHJldlJlYygpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuX2hhc2hUYWIuUmVtb3ZlKHJlY29yZC5nZXRIYXNoS2V5KCkpO1xyXG4gICAgICB0aGlzLl9yZWNvcmRzLlJlbW92ZUF0KHJlY0lkeCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aHJvdyBuZXcgQXBwbGljYXRpb25FeGNlcHRpb24oXCJpbiBSZWNvcmRzVGFibGUucmVtb3ZlUmVjb3JkKCk6IGludmFsaWQgaW5kZXg6IFwiICsgcmVjSWR4KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlUmVjb3JkXzEocmVjOiBSZWNvcmQpOiB2b2lkIHtcclxuICAgIGxldCBudW06IG51bWJlciA9IHRoaXMuX3JlY29yZHMuaW5kZXhPZihyZWMpO1xyXG4gICAgaWYgKG51bSA+PSAwKSB7XHJcbiAgICAgIHRoaXMucmVtb3ZlUmVjb3JkKG51bSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgY2xvbmVzIHRoaXMgUmVjb3JkcyBUYWJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHJlcGxpY2F0ZSgpOiBSZWNvcmRzVGFibGUge1xyXG4gICAgbGV0IHJlY29yZHNUYWJsZTogUmVjb3Jkc1RhYmxlID0gbmV3IFJlY29yZHNUYWJsZSh0aGlzKTtcclxuICAgIHJlY29yZHNUYWJsZS5fcmVjb3JkcyA9IG5ldyBMaXN0PFJlY29yZD4oKTtcclxuICAgIHJlY29yZHNUYWJsZS5faGFzaFRhYiA9IG5ldyBIYXNodGFibGU8bnVtYmVyLCBSZWNvcmQ+KDEwMCwgMC43KTtcclxuXHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgdGhpcy5fcmVjb3Jkcy5sZW5ndGg7IGkgPSBpICsgMSkge1xyXG4gICAgICBsZXQgcmVjb3JkOiBSZWNvcmQgPSB0aGlzLl9yZWNvcmRzLmdldF9JdGVtKGkpLnJlcGxpY2F0ZSgpO1xyXG4gICAgICByZWNvcmRzVGFibGUuX3JlY29yZHMucHVzaChyZWNvcmQpO1xyXG4gICAgICByZWNvcmRzVGFibGUuX2hhc2hUYWIuc2V0X0l0ZW0ocmVjb3JkLmdldEhhc2hLZXkoKSwgcmVjb3JkKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVjb3Jkc1RhYmxlO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VydmVyQ3VyclJlYygpOiBSZWNvcmQge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlcnZlckN1cnJSZWM7XHJcbiAgfVxyXG5cclxuICB6ZXJvU2VydmVyQ3VyclJlYygpOiB2b2lkIHtcclxuICAgIHRoaXMuX3NlcnZlckN1cnJSZWMgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vL1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBHZXRTaXplKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRTaXplKCk7XHJcbiAgfVxyXG5cclxuICBHZXRSZWNCeUlkeChpZHg6IG51bWJlcik6IFJlY29yZCB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRSZWNCeUlkeChpZHgpO1xyXG4gIH1cclxuXHJcbiAgUmVtb3ZlQWxsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZW1vdmVBbGwoKTtcclxuICB9XHJcbn1cclxuIl19
267
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjb3Jkc1RhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW5naW5lL3NyYy9kYXRhL1JlY29yZHNUYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRWhDLE9BQU8sRUFBQyxxQkFBcUIsRUFBNkIsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBQUMsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQWdCLE1BQU0sc0JBQXNCLENBQUM7QUFDakcsT0FBTyxFQUFDLE1BQU0sRUFBWSxNQUFNLGtCQUFrQixDQUFDO0FBR25ELE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLE1BQU0sQ0FBQyxhQUFhLEdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDMUIsY0FBYyxHQUFZLEtBQUssQ0FBQztJQUNoQyxRQUFRLEdBQThCLElBQUksQ0FBQztJQUMzQyxpQkFBaUIsR0FBVyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQzNDLFFBQVEsR0FBaUIsSUFBSSxDQUFDO0lBQzlCLGNBQWMsR0FBVyxJQUFJLENBQUM7SUFLdEMsb0JBQW9CLEdBQVcsQ0FBQyxDQUFDO0lBVWpDLFlBQVksMkJBQWtEO1FBQzVELElBQUksMkJBQTJCLENBQUMsV0FBVyxLQUFLLE9BQU8sRUFBRTtZQUN2RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksSUFBSSxFQUFVLENBQUM7WUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLFNBQVMsQ0FBaUIsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxjQUFjLEdBQVksMkJBQTJCLENBQUM7WUFDM0QsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7U0FDNUM7O1lBRUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsMkJBQTJCLENB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TUFBTSxDQUFDLENBQUM7WUFDbkMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQzdEO1FBRUQsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQU1ELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQVc7UUFDckIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0lSZWNvcmRzVGFibGV9IGZyb20gXCIuL0lSZWNvcmRzVGFibGVcIjtcclxuaW1wb3J0IHtSZWNvcmR9IGZyb20gXCIuL1JlY29yZFwiO1xyXG5pbXBvcnQge0RhdGFWaWV3fSBmcm9tIFwiLi9EYXRhVmlld1wiO1xyXG5pbXBvcnQge0RhdGFNb2RpZmljYXRpb25UeXBlcywgT2JqZWN0UmVmZXJlbmNlc0NvbGxlY3Rpb259IGZyb20gXCJAbWFnaWMteHBhL2d1aVwiO1xyXG5pbXBvcnQge0FwcGxpY2F0aW9uRXhjZXB0aW9uLCBIYXNodGFibGUsIEludDMyLCBMaXN0LCBTdHJpbmdCdWlsZGVyfSBmcm9tIFwiQG1hZ2ljLXhwYS9tc2NvcmVsaWJcIjtcclxuaW1wb3J0IHtMb2dnZXIsIFhtbFBhcnNlcn0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuXHJcbi8vLyAgIGFuIG9iamVjdCBvZiB0aGlzIGNsYXNzIGhvbGRzIGEgY29sbGVjdGlvbiBvZiByZWNvcmRzXHJcbmV4cG9ydCBjbGFzcyBSZWNvcmRzVGFibGUgaW1wbGVtZW50cyBJUmVjb3Jkc1RhYmxlIHtcclxuICBzdGF0aWMgUkVDX05PVF9GT1VORDogbnVtYmVyID0gLTE7XHJcbiAgcHJpdmF0ZSBfdXNlTGlua2VkTGlzdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2hhc2hUYWI6IEhhc2h0YWJsZTxudW1iZXIsIFJlY29yZD4gPSBudWxsO1xyXG4gIHByaXZhdGUgX2luaXRpYWxDdXJyUmVjSWQ6IG51bWJlciA9IEludDMyLk1pblZhbHVlO1xyXG4gIHByaXZhdGUgX3JlY29yZHM6IExpc3Q8UmVjb3JkPiA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfc2VydmVyQ3VyclJlYzogUmVjb3JkID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIG51bWJlciBvZiByZWNvcmRzIGluc2VydGVkIGluIHRoZSBiZWdpbmluZyBvZiB0aGUgdGFibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIEluc2VydGVkUmVjb3Jkc0NvdW50OiBudW1iZXIgPSAwO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgQ1RPUlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ3aXRoTGlua2VkTGlzdFwiPm1haW50YWluIHRhYmxlIGFzIGEgbGlua2VkIGxpc3RcclxuICAvLy8gICBmcm9tIG9uZSBpdGVtIHRvIGFub3RoZXJcclxuICAvLy8gPC9wYXJhbT5cclxuICBjb25zdHJ1Y3Rvcih3aXRoTGlua2VkTGlzdDogYm9vbGVhbik7XHJcbiAgY29uc3RydWN0b3IocmVjb3JkVGFibGU6IFJlY29yZHNUYWJsZSk7XHJcbiAgY29uc3RydWN0b3Iod2l0aExpbmtlZExpc3RPclJlY29yZFRhYmxlOiBSZWNvcmRzVGFibGV8IGJvb2xlYW4pIHtcclxuICAgIGlmICh3aXRoTGlua2VkTGlzdE9yUmVjb3JkVGFibGUuY29uc3RydWN0b3IgPT09IEJvb2xlYW4pIHtcclxuICAgICAgdGhpcy5fcmVjb3JkcyA9IG5ldyBMaXN0PFJlY29yZD4oKTtcclxuICAgICAgdGhpcy5faGFzaFRhYiA9IG5ldyBIYXNodGFibGU8bnVtYmVyLCBSZWNvcmQ+KDEwMCwgMC43KTtcclxuICAgICAgdGhpcy5fdXNlTGlua2VkTGlzdCA9IDxib29sZWFuPndpdGhMaW5rZWRMaXN0T3JSZWNvcmRUYWJsZTtcclxuICAgICAgdGhpcy5JbnNlcnRlZFJlY29yZHNDb3VudCA9IEludDMyLk1pblZhbHVlO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMsIHdpdGhMaW5rZWRMaXN0T3JSZWNvcmRUYWJsZSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcGFyc2UgaW5wdXQgc3RyaW5nIGFuZCBmaWxsIGlubmVyIGRhdGEgLSByZXR1cm5zIHRoZSByZWZyZXNoIHR5cGUgZm9yIHRoZSB0YXNrXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImRhdGF2aWV3XCI+YSByZWZlcmVuY2UgdG8gdGhlIGRhdGF2aWV3XHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgZmlsbERhdGEoZGF0YXZpZXc6IERhdGFWaWV3LCBpbnNlcnRBdDogc3RyaW5nLCBwYXJzZXI6IFhtbFBhcnNlcik6IHN0cmluZyB7XHJcbiAgICBsZXQgYzogc3RyaW5nID0gJ04nO1xyXG4gICAgbGV0IHJlY29yZDogUmVjb3JkID0gbnVsbDtcclxuICAgIGxldCBmbGFnOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICB0aGlzLkluc2VydGVkUmVjb3Jkc0NvdW50ID0gMDtcclxuICAgIHRoaXMuX2luaXRpYWxDdXJyUmVjSWQgPSBJbnQzMi5NaW5WYWx1ZTtcclxuICAgIGxldCBuZXh0VGFnOiBzdHJpbmcgPSBwYXJzZXIuZ2V0TmV4dFRhZygpO1xyXG4gICAgd2hpbGUgKG5leHRUYWcgIT09IG51bGwgJiYgbmV4dFRhZyA9PT0gXCJyZWNcIikge1xyXG4gICAgICBsZXQgcmVjb3JkMjogUmVjb3JkID0gbmV3IFJlY29yZChkYXRhdmlldyk7XHJcbiAgICAgIHJlY29yZDIuSW5pdGlhbGl6ZSgpO1xyXG4gICAgICBsZXQgaXNDdXJyUmVjOiBib29sZWFuID0gcmVjb3JkMi5maWxsRGF0YShwYXJzZXIpO1xyXG4gICAgICBpZiAoaXNDdXJyUmVjICYmICFkYXRhdmlldy5IYXNNYWluVGFibGUpIHtcclxuICAgICAgICBsZXQgZGNSZWZzMjogT2JqZWN0UmVmZXJlbmNlc0NvbGxlY3Rpb247XHJcbiAgICAgICAgbGV0IGRjUmVmczogT2JqZWN0UmVmZXJlbmNlc0NvbGxlY3Rpb24gPSBkY1JlZnMyID0gcmVjb3JkMi5nZXREY1JlZnMoKTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHRoaXMuZ2V0U2l6ZSgpOyBpID0gaSArIDEpIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRSZWNCeUlkeChpKS5zZXREY1JlZnMoZGNSZWZzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZmluYWxseSB7XHJcbiAgICAgICAgICBpZiAoZGNSZWZzMiAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAoZGNSZWZzMikuRGlzcG9zZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoaXNDdXJyUmVjKSB7XHJcbiAgICAgICAgaWYgKGRhdGF2aWV3LmdldFRhc2soKS5nZXRNb2RlKCkgIT09ICdDJykge1xyXG4gICAgICAgICAgcmVjb3JkMi5zZXRPbGRSZWMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5faW5pdGlhbEN1cnJSZWNJZCA9IHJlY29yZDIuZ2V0SWQoKTtcclxuXHJcbiAgICAgICAgLy8gc2F2ZSB0aGUgY3VycmVudCByZWNvcmQgYXMgc2VudCBieSB0aGUgc2VydmVyLlxyXG4gICAgICAgIHRoaXMuX3NlcnZlckN1cnJSZWMgPSByZWNvcmQyLnJlcGxpY2F0ZSgpO1xyXG4gICAgICAgIGlmIChjID09PSAnTicpIHtcclxuICAgICAgICAgIGMgPSAnQycvKidDJyovO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGMgPSAnRicvKidGJyovO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICByZWNvcmQyLnNldE9sZFJlYygpO1xyXG4gICAgICAgIGMgPSAnVCcvKidUJyovO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBmb3VuZFJlYzogUmVjb3JkID0gdGhpcy5nZXRSZWNvcmQocmVjb3JkMi5nZXRJZCgpKTtcclxuICAgICAgaWYgKGZvdW5kUmVjICE9PSBudWxsKSB7XHJcbiAgICAgICAgbGV0IHVwZGF0ZWQ6IGJvb2xlYW4gPSBmb3VuZFJlYy5VcGRhdGVkO1xyXG4gICAgICAgIGxldCBtb2RpZmllZDogYm9vbGVhbiA9IGZvdW5kUmVjLk1vZGlmaWVkO1xyXG4gICAgICAgIC8vIGxldCBtb2RlOiBEYXRhTW9kaWZpY2F0aW9uVHlwZXMgPSBmb3VuZFJlYy5nZXRNb2RlKCk7XHJcbiAgICAgICAgbGV0IGNvbXB1dGVkOiBib29sZWFuID0gZm91bmRSZWMuaXNDb21wdXRlZCgpO1xyXG4gICAgICAgIGxldCBwcmV2UmVjOiBSZWNvcmQgPSBmb3VuZFJlYy5nZXRQcmV2UmVjKCk7XHJcbiAgICAgICAgbGV0IG5leHRSZWM6IFJlY29yZCA9IGZvdW5kUmVjLmdldE5leHRSZWMoKTtcclxuICAgICAgICBmb3VuZFJlYy5zZXRTYW1lQXMocmVjb3JkMiwgZmFsc2UpO1xyXG4gICAgICAgIGZvdW5kUmVjLnNldFByZXZSZWMocHJldlJlYyk7XHJcbiAgICAgICAgZm91bmRSZWMuc2V0TmV4dFJlYyhuZXh0UmVjKTtcclxuICAgICAgICBmb3VuZFJlYy5zZXRDb21wdXRlZChjb21wdXRlZCk7XHJcbiAgICAgICAgaWYgKG1vZGlmaWVkKVxyXG4gICAgICAgICAgZm91bmRSZWMuc2V0TW9kaWZpZWQoKTtcclxuICAgICAgICBpZiAodXBkYXRlZClcclxuICAgICAgICAgIGZvdW5kUmVjLnNldFVwZGF0ZWQoKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLkluc2VydFJlY29yZChpbnNlcnRBdCwgcmVjb3JkMik7XHJcblxyXG4gICAgICAgIC8vIElmIHJlY29yZCBiZWluZyBhZGRlZCBhdCB0aGUgdG9wICgwdGggcG9zaXRpb24pLCBkZWNyZW1lbnQgdGhlIHJlY29yZHNiZWZvcmVDdXJyZW50Vmlldy5cclxuICAgICAgICBpZiAoZGF0YXZpZXcuZ2V0VGFzaygpLmlzVGFibGVXaXRoQWJzb2x1dGVzU2Nyb2xsYmFyKCkgKSB7XHJcblxyXG4gICAgICAgICAgLy8gRW1wdHkgZGF0YXZpZXcgaW5pdGlhbCB2YWx1ZSBvZiBUb3RhbFJlY29yZHNDb3VudCBpcyB6ZXJvLiBBbmQgd2hlbiBmaXJzdCByZWNvcmQgYmVpbmcgaW5zZXJ0ZWQsXHJcbiAgICAgICAgICAvLyB0aHJvdWdoIFRhc2suaW5zZXJ0UmVjb3JkVGFibGUoKS4gRWxzZSwgdGhlIFRvdGFsUmVjb3Jkc0NvdW50IGdldHMgaW5jcmVtZW50ZWQgdGhyb3VnaCBNZ0Zvcm0uQWRkcmVjKClcclxuICAgICAgICAgIGlmIChkYXRhdmlldy5Ub3RhbFJlY29yZHNDb3VudCA9PT0gMCAmJiBkYXRhdmlldy5SZWNvcmRzQmVmb3JlQ3VycmVudFZpZXcgPT0gMClcclxuICAgICAgICAgICAgZGF0YXZpZXcuVG90YWxSZWNvcmRzQ291bnQgPSBkYXRhdmlldy5Ub3RhbFJlY29yZHNDb3VudCArIDE7XHJcblxyXG4gICAgICAgICAgLy8gSGF2aW5nIGxvY2F0ZSBvcGVyYXRpb24gd2l0aCBSZWNvcmRzQmVmb3JlQ3VycmVudFZpZXcgPiAwIGFuZCBpZiBtb3ZpbmcgaW4gcmV2ZXJzZSBkaXJlY3Rpb24sIHRoZSB1cGRhdGVkXHJcbiAgICAgICAgICAvLyBjb3VudHMgYXJlIG5vdCByZXRyaWV2ZWQgYWdhaW4uIEhlbmNlLCBkZWNyZW1lbnQgUmVjb3Jkc0JlZm9yZUN1cnJlbnRWaWV3IGFzIHJlY29yZCBnZXRzIGFkZGVkIGluIGRhdGF2aWV3LlxyXG4gICAgICAgICAgaWYgKGRhdGF2aWV3LlJlY29yZHNCZWZvcmVDdXJyZW50VmlldyA+IDAgJiYgIGluc2VydEF0ID09PSAnQicpXHJcbiAgICAgICAgICAgIGRhdGF2aWV3LlJlY29yZHNCZWZvcmVDdXJyZW50VmlldyA9IGRhdGF2aWV3LlJlY29yZHNCZWZvcmVDdXJyZW50VmlldyAtIDE7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBtYWtlIHN1cmUgdGhhdCBhIG5ldyByZWNvcmQgY3JlYXRlZCBieSB0aGUgc2VydmVyIGlzIGluICdpbnNlcnQnIG1vZGVcclxuICAgICAgICAvLyBhbmQgbWFyayBpdCBhcyBhICdjb21wdXRlZCcgcmVjb3JkXHJcbiAgICAgICAgaWYgKGlzQ3VyclJlYyAmJiBkYXRhdmlldy5nZXRUYXNrKCkuZ2V0TW9kZSgpID09PSAnQycpXHJcbiAgICAgICAgICByZWNvcmQyLnNldE1vZGUoRGF0YU1vZGlmaWNhdGlvblR5cGVzLkluc2VydCk7XHJcbiAgICAgICAgcmVjb3JkMi5zZXRDb21wdXRlZCh0cnVlKTtcclxuICAgICAgfVxyXG4gICAgICBuZXh0VGFnID0gcGFyc2VyLmdldE5leHRUYWcoKTtcclxuICAgICAgaWYgKCFpc0N1cnJSZWMpXHJcbiAgICAgICAgcmVjb3JkID0gcmVjb3JkMjtcclxuXHJcbiAgICAgIGZsYWcgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEN1cnJlbnRseSBSZWNvcmRzVGFibGUgaW5jbHVkZSBsb25lbHkgcmVjb3JkXHJcbiAgICAvLyBXZSBkdXBsaWNhdGUgaXQgcmVjb3JkIGR1ZSB0byBmdWxsIGNodW5rXHJcbiAgICAvLyBUaGlzIG1lY2hhbmlzbSBpcyBmb3IgTm9fbWFpbl90YWJsZSBjYXNlIG9ubHlcclxuICAgIGxldCBudW06IG51bWJlciA9IDA7XHJcbiAgICB3aGlsZSAoIWRhdGF2aWV3Lkhhc01haW5UYWJsZSAmJiByZWNvcmQgIT09IG51bGwgJiYgbnVtIDwgZGF0YXZpZXcuZ2V0Q2h1bmtTaXplKCkgLSAxKSB7XHJcbiAgICAgIGxldCByZWNvcmQ0OiBSZWNvcmQgPSBuZXcgUmVjb3JkKGRhdGF2aWV3KTtcclxuICAgICAgcmVjb3JkNC5Jbml0aWFsaXplKCk7XHJcbiAgICAgIHJlY29yZDQuc2V0U2FtZUFzKHJlY29yZCwgZmFsc2UsIHJlY29yZC5nZXRJZCgpICsgbnVtICsgMSk7XHJcbiAgICAgIHJlY29yZDQuc2V0T2xkUmVjKCk7XHJcbiAgICAgIHRoaXMuYWRkUmVjKHJlY29yZDQpO1xyXG4gICAgICBudW0gPSBudW0gKyAxO1xyXG4gICAgfVxyXG4gICAgLy8gaWYgc2VydmVyIHNlbnQgdXMgYSBjdXJyIHJlYywgdGhlbiB3ZSBhbHJlYWR5IGhhdmUgaXQuXHJcbiAgICAvLyBpZiBubyBjdXJyIHJlYyB3YXMgc2VudCwgYnV0IG90aGVyIGRhdGEgd2FzIHNlbnQ6IHdlIG5vIGxvbmdlciBrbm93XHJcbiAgICAvLyAgICB3aGF0IGN1cnIgcmVjIHRoZSBzZXJ2ZXIgaGFzIC0+IGRpc2NhcmQgb3VyIGN1cnIgcmVjXHJcbiAgICAvLyBpZiBubyBkYXRhIHdhcyBzZW50LCB0aGUgc2VydmVyIGN1cnIgcmVjIGlzIHdoYXQgd2Ugc2VudCBpdCBsYXN0IHRpbWUuXHJcbiAgICBpZiAodGhpcy5faW5pdGlhbEN1cnJSZWNJZCA9PT0gSW50MzIuTWluVmFsdWUpIHtcclxuICAgICAgaWYgKGZsYWcpXHJcbiAgICAgICAgdGhpcy5fc2VydmVyQ3VyclJlYyA9IG51bGw7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChkYXRhdmlldy5nZXRDdXJyUmVjKCkgIT09IG51bGwpXHJcbiAgICAgICAgICB0aGlzLl9zZXJ2ZXJDdXJyUmVjID0gKGRhdGF2aWV3LmdldEN1cnJSZWMoKSkucmVwbGljYXRlKCk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdGhpcy5fc2VydmVyQ3VyclJlYyA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBjO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBpbnNlcnQgUmVjb3JkIGludG8gcmVjb3JkcyBUYWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaW5zZXJ0QXRcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInJlY29yZFwiPjwvcGFyYW0+XHJcbiAgSW5zZXJ0UmVjb3JkKGluc2VydEF0OiBzdHJpbmcsIHJlY29yZDogUmVjb3JkKTogdm9pZCB7XHJcbiAgICBpZiAoaW5zZXJ0QXQgPT09ICdCJykge1xyXG4gICAgICBsZXQgaW5zZXJ0ZWRSZWNvcmRzQ291bnQ6IG51bWJlciA9IHRoaXMuSW5zZXJ0ZWRSZWNvcmRzQ291bnQ7XHJcbiAgICAgIHRoaXMuSW5zZXJ0ZWRSZWNvcmRzQ291bnQgPSBpbnNlcnRlZFJlY29yZHNDb3VudCArIDE7XHJcbiAgICAgIHRoaXMuaW5zZXJ0UmVjb3JkKHJlY29yZCwgMCk7XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuYWRkUmVjKHJlY29yZCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgYnVpbGQgWE1MIHN0cmluZyBmb3IgdGhlIHJlY29yZHNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZmllbGRzVGFiXCI+dGhlIGZpZWxkcyB0YWJsZSBmb3IgdGhlIHJlY29yZHMgdGFibGVcclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm1lc3NhZ2VcIj50byBidWlsZCwgYWRkIHBhcnRzXHJcbiAgLy8vICAgPHBhcmFtIG5hbWUgPSBcInNraXBDdXJyUmVjXCI+U2tpcCBjdXJyZW50IHJlY29yZFxyXG4gIC8vLyAgICAgPHBhcmFtIG5hbWUgPSBcImN1cnJSZWNJZFwiPkN1cnJlbnQgcmVjb3JkIElEXHJcbiAgLy8vICAgICA8L3BhcmFtPlxyXG4gIGJ1aWxkWE1MKCBtZXNzYWdlOiBTdHJpbmdCdWlsZGVyLCBza2lwQ3VyclJlYzogYm9vbGVhbiwgY3VyclJlY0lkOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCB0aGlzLl9yZWNvcmRzLmxlbmd0aDsgaSA9IGkgKyAxKSB7XHJcbiAgICAgIC8vIEluIGNhc2UgdGhlIHByZXZpb3VzIHJlY29yZCBpcyBub3Qga25vd24gdG8gdGhlIHNlcnZlciAoT1BfSU5TRVJUJ2VkKSBhbmQgaXMgdG8gYmVcclxuICAgICAgLy8gZHVtcGVkIG9ubHkgYWZ0ZXIgdGhpcyByZWNvcmQgKGl0J3MgaWR4IGlzIGdyZWF0ZXIgdGhlbiAnaScpLCB0aGVuIHRlbXBvcmFyeSBjaGFuZ2VcclxuICAgICAgLy8gbXkgcHJldiByZWNvcmQgc28gdGhlIHNlcnZlciB3b24ndCBnZXQgY29uZnVzZWQuXHJcbiAgICAgIGxldCByZWNvcmQ6IFJlY29yZCA9IHRoaXMuX3JlY29yZHMuZ2V0X0l0ZW0oaSk7XHJcblxyXG4gICAgICBpZiAoIXJlY29yZC5TZW5kVG9TZXJ2ZXIgfHwgKHNraXBDdXJyUmVjICYmIHJlY29yZC5nZXRJZCgpID09PSBjdXJyUmVjSWQpKVxyXG4gICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgbGV0IHByZXZSZWM6IFJlY29yZDtcclxuICAgICAgbGV0IHJlY29yZDI6IFJlY29yZCA9IHByZXZSZWMgPSByZWNvcmQuZ2V0UHJldlJlYygpO1xyXG4gICAgICBsZXQgcmVjSWR4OiBudW1iZXI7XHJcbiAgICAgIC8vIFFDUiAjNTA1Mjc3OiBUaGUgcHJldmlvdXMgcmVjb3JkIG1heSBiZSB1bmtub3duIHRvIHRoZSBzZXJ2ZXIgYnV0IG5vdCBpblxyXG4gICAgICAvLyB0aGUgbW9kaWZpZWQgbGlzdCB5ZXQuIFRoZXJlZm9yZSwgaWYgdGhlIHByZXZpb3VzIHJlY29yZCB3YXMgbm90IGZvdW5kXHJcbiAgICAgIC8vIGluIHRoYXQgbGlzdCB0aGVuIGRvIGFub3RoZXIgaXRlcmF0aW9uIG9mIHRoZSBsb29wLlxyXG4gICAgICB3aGlsZSAocHJldlJlYyAhPT0gbnVsbCAmJiB0eXBlb2YgcHJldlJlYyAhPT0gXCJ1bmRlZmluZWRcIiAmJlxyXG4gICAgICAgICAgICAgKHByZXZSZWMuZ2V0TW9kZSgpID09PSBEYXRhTW9kaWZpY2F0aW9uVHlwZXMuSW5zZXJ0IHx8ICFwcmV2UmVjLlNlbmRUb1NlcnZlcikgJiZcclxuICAgICAgICAgICAgIHJlY29yZC5nZXRNb2RlKCkgPT09IERhdGFNb2RpZmljYXRpb25UeXBlcy5JbnNlcnQgJiZcclxuICAgICAgICAgICAgICgocmVjSWR4ID0gdGhpcy5nZXRSZWNJZHgocHJldlJlYy5nZXRJZCgpKSkgPiBpIHx8IHJlY0lkeCA9PT0gUmVjb3Jkc1RhYmxlLlJFQ19OT1RfRk9VTkQgfHwgIXByZXZSZWMuU2VuZFRvU2VydmVyKSkge1xyXG4gICAgICAgIHByZXZSZWMgPSBwcmV2UmVjLmdldFByZXZSZWMoKTtcclxuICAgICAgICByZWNvcmQuc2V0UHJldlJlYyhwcmV2UmVjKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmVjb3JkLmJ1aWxkWE1MKG1lc3NhZ2UsIGZhbHNlKTtcclxuICAgICAgaWYgKHByZXZSZWMgIT09IHJlY29yZDIpIHtcclxuICAgICAgICByZWNvcmQuc2V0UHJldlJlYyhyZWNvcmQyKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiBhIHJlY29yZCBieSBpdHMgaWQgb3IgbnVsbCBpZiB0aGUgcmVjb3JkIHdhcyBub3QgZm91bmRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaWRcIj50aGUgaWQgb2YgdGhlIHJlY29yZFxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gUmVjb3JkIHRoZSByZXF1ZXN0ZWQgcmVjb3JkXHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBnZXRSZWNvcmQoaWQ6IG51bWJlcik6IFJlY29yZCB7XHJcbiAgICByZXR1cm4gPFJlY29yZD50aGlzLl9oYXNoVGFiLmdldF9JdGVtKGlkKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm4gYSByZWNvcmQgaW5kZXggYnkgaXRzIGlkIC0gaWYgbm8gcmVjb3JkIHdhcyBmb3VuZCAoUkVDX05PVF9GT1VORCkgaXMgcmV0dXJuZWRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaWRcIj5pcyB0aGUgaWQgb2YgdGhlIHJlY29yZFxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIHJlcXVlc3RlZCByZWNvcmQgaW5kZXhcclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIGdldFJlY0lkeChpZDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGxldCByZXN1bHQ6IG51bWJlciA9IFJlY29yZHNUYWJsZS5SRUNfTk9UX0ZPVU5EO1xyXG4gICAgbGV0IHJlY29yZDogUmVjb3JkID0gdGhpcy5nZXRSZWNvcmQoaWQpO1xyXG4gICAgaWYgKHJlY29yZCAhPT0gbnVsbCkge1xyXG4gICAgICByZXN1bHQgPSB0aGlzLl9yZWNvcmRzLmluZGV4T2YocmVjb3JkKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCBhIHJlY29yZCBieSBpdHMgaW5kZXggaW4gdGhlIHRhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImludFwiPmlzIHRoZSByZWNvcmQgaW5kZXggaW4gdGhlIHRhYmxlXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBSZWNvcmQgaXMgdGhlIHJlcXVlc3RlZCByZWNvcmRcclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIGdldFJlY0J5SWR4KGlkeDogbnVtYmVyKTogUmVjb3JkIHtcclxuICAgIGlmIChpZHggPCAwIHx8IGlkeCA+PSB0aGlzLl9yZWNvcmRzLmxlbmd0aCkge1xyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVEZXZUb0xvZyhcImluIFJlY29yZHNUYWJsZS5nZXRSZWNCeUlkeCgpIGluZGV4IG91dCBvZiBib3VuZHM6IFwiICsgaWR4KTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX3JlY29yZHMuZ2V0X0l0ZW0oaWR4KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZW1vdmUgYWxsIHRoZSByZWNvcmRzIGZyb20gdGhlIHRhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICByZW1vdmVBbGwoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZWNvcmRzLkNsZWFyKCk7XHJcbiAgICB0aGlzLl9oYXNoVGFiLkNsZWFyKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSBudW1iZXIgb2YgcmVjb3JkcyBpbiB0aGUgdGFibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldFNpemUoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9yZWNvcmRzLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSBjdXJyZW50IHJlY29yZCwgYXMgd2FzIHNldCBieSB0aGUgWE1MIChhcnJpdmluZyBmcm9tIHRoZSBzZXJ2ZXIpLlxyXG4gIC8vLyAgIEEgSW50ZWdlci5NSU5fVkFMVUUgaW5kaWNhdGVzIHRoYXQgaXQgd2FzIG5vdCBzZXQgYXQgYWxsLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0SW5pdGlhbEN1cnJSZWNJZCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2luaXRpYWxDdXJyUmVjSWQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgYWRkIGEgcmVjb3JkIHRvIHRoZSBlbmQgb2YgdGhlIHRhYmxlIC0gdW5sZXNzIGl0IGlzIGFscmVhZHkgaW4gdGhlIHRhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInJlY1wiPnRoZSByZWNvcmQgdG8gYWRkXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgYWRkUmVjb3JkKHJlYzogUmVjb3JkKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fcmVjb3Jkcy5pbmRleE9mKHJlYykgPCAwKSB7XHJcbiAgICAgIHRoaXMuYWRkUmVjKHJlYyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgYWRkcyBhIHJlY29yZCB0byB0aGUgcmVjb3JkcyB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBhZGRSZWMocmVjOiBSZWNvcmQpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl91c2VMaW5rZWRMaXN0ICYmIHRoaXMuX3JlY29yZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgcmVjb3JkOiBSZWNvcmQgPSB0aGlzLl9yZWNvcmRzLmdldF9JdGVtKHRoaXMuX3JlY29yZHMubGVuZ3RoIC0gMSk7XHJcbiAgICAgIHJlY29yZC5zZXROZXh0UmVjKHJlYyk7XHJcbiAgICAgIHJlYy5zZXRQcmV2UmVjKHJlY29yZCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fcmVjb3Jkcy5wdXNoKHJlYyk7XHJcbiAgICB0aGlzLl9oYXNoVGFiLnNldF9JdGVtKHJlYy5nZXRIYXNoS2V5KCksIHJlYyk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgaW5zZXJ0IGEgcmVjb3JkIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXhcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicmVjXCI+dGhlIHJlY29yZCB0byBpbnNlcnRcclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImlkeFwiPnRoZSBpbmRleCBvZiB0aGUgbmV3IHJlY29yZFxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIGluc2VydFJlY29yZChyZWM6IFJlY29yZCwgaWR4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl91c2VMaW5rZWRMaXN0KSB7XHJcbiAgICAgIGlmIChpZHggPiAwKSB7XHJcbiAgICAgICAgbGV0IHJlY29yZDogUmVjb3JkID0gdGhpcy5fcmVjb3Jkcy5nZXRfSXRlbShpZHggLSAxKTtcclxuICAgICAgICByZWMuc2V0UHJldlJlYyhyZWNvcmQpO1xyXG4gICAgICAgIHJlY29yZC5zZXROZXh0UmVjKHJlYyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChpZHggIT09IHRoaXMuX3JlY29yZHMubGVuZ3RoKSB7XHJcbiAgICAgICAgbGV0IHJlY29yZDI6IFJlY29yZCA9IHRoaXMuX3JlY29yZHMuZ2V0X0l0ZW0oaWR4KTtcclxuICAgICAgICByZWMuc2V0TmV4dFJlYyhyZWNvcmQyKTtcclxuICAgICAgICByZWNvcmQyLnNldFByZXZSZWMocmVjKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3JlY29yZHMuSW5zZXJ0KGlkeCwgcmVjKTtcclxuICAgIHRoaXMuX2hhc2hUYWIuc2V0X0l0ZW0ocmVjLmdldEhhc2hLZXkoKSwgcmVjKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZW1vdmUgYSByZWNvcmQgZnJvbSB0aGUgdGFibGUgYnkgaXRzIGluZGV4IGluIHRoZSB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJyZWNJZHhcIj5yZWNvcmQgaW5kZXhcclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInJlY1wiPmEgcmVmZXJlbmNlIHRvIHRoZSByZWNvcmQgdG8gcmVtb3ZlXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgcmVtb3ZlUmVjb3JkKHJlY0lkeDogbnVtYmVyKTogdm9pZDtcclxuICByZW1vdmVSZWNvcmQocmVjOiBSZWNvcmQpOiB2b2lkO1xyXG4gIHJlbW92ZVJlY29yZChyZWNJZHhPclJlYzogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSAmJiAocmVjSWR4T3JSZWMgPT09IG51bGwgfHwgcmVjSWR4T3JSZWMuY29uc3RydWN0b3IgPT09IE51bWJlcikpIHtcclxuICAgICAgdGhpcy5yZW1vdmVSZWNvcmRfMChyZWNJZHhPclJlYyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJlbW92ZVJlY29yZF8xKHJlY0lkeE9yUmVjKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlUmVjb3JkXzAocmVjSWR4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmIChyZWNJZHggPj0gMCAmJiByZWNJZHggPCB0aGlzLl9yZWNvcmRzLmxlbmd0aCkge1xyXG4gICAgICBsZXQgcmVjb3JkOiBSZWNvcmQgPSB0aGlzLl9yZWNvcmRzLmdldF9JdGVtKHJlY0lkeCk7XHJcbiAgICAgIGxldCB1c2VMaW5rZWRMaXN0OiBib29sZWFuID0gdGhpcy5fdXNlTGlua2VkTGlzdDtcclxuICAgICAgaWYgKHVzZUxpbmtlZExpc3QpIHtcclxuICAgICAgICBpZiAocmVjSWR4ID4gMCkge1xyXG4gICAgICAgICAgbGV0IHJlY29yZDI6IFJlY29yZCA9IHRoaXMuX3JlY29yZHMuZ2V0X0l0ZW0ocmVjSWR4IC0gMSk7XHJcbiAgICAgICAgICByZWNvcmQyLnNldE5leHRSZWMocmVjb3JkLmdldE5leHRSZWMoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyZWNJZHggKyAxIDwgdGhpcy5fcmVjb3Jkcy5sZW5ndGgpIHtcclxuICAgICAgICAgIGxldCByZWNvcmQyOiBSZWNvcmQgPSB0aGlzLl9yZWNvcmRzLmdldF9JdGVtKHJlY0lkeCArIDEpO1xyXG4gICAgICAgICAgcmVjb3JkMi5zZXRQcmV2UmVjKHJlY29yZC5nZXRQcmV2UmVjKCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5faGFzaFRhYi5SZW1vdmUocmVjb3JkLmdldEhhc2hLZXkoKSk7XHJcbiAgICAgIHRoaXMuX3JlY29yZHMuUmVtb3ZlQXQocmVjSWR4KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRocm93IG5ldyBBcHBsaWNhdGlvbkV4Y2VwdGlvbihcImluIFJlY29yZHNUYWJsZS5yZW1vdmVSZWNvcmQoKTogaW52YWxpZCBpbmRleDogXCIgKyByZWNJZHgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVSZWNvcmRfMShyZWM6IFJlY29yZCk6IHZvaWQge1xyXG4gICAgbGV0IG51bTogbnVtYmVyID0gdGhpcy5fcmVjb3Jkcy5pbmRleE9mKHJlYyk7XHJcbiAgICBpZiAobnVtID49IDApIHtcclxuICAgICAgdGhpcy5yZW1vdmVSZWNvcmQobnVtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBjbG9uZXMgdGhpcyBSZWNvcmRzIFRhYlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcmVwbGljYXRlKCk6IFJlY29yZHNUYWJsZSB7XHJcbiAgICBsZXQgcmVjb3Jkc1RhYmxlOiBSZWNvcmRzVGFibGUgPSBuZXcgUmVjb3Jkc1RhYmxlKHRoaXMpO1xyXG4gICAgcmVjb3Jkc1RhYmxlLl9yZWNvcmRzID0gbmV3IExpc3Q8UmVjb3JkPigpO1xyXG4gICAgcmVjb3Jkc1RhYmxlLl9oYXNoVGFiID0gbmV3IEhhc2h0YWJsZTxudW1iZXIsIFJlY29yZD4oMTAwLCAwLjcpO1xyXG5cclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCB0aGlzLl9yZWNvcmRzLmxlbmd0aDsgaSA9IGkgKyAxKSB7XHJcbiAgICAgIGxldCByZWNvcmQ6IFJlY29yZCA9IHRoaXMuX3JlY29yZHMuZ2V0X0l0ZW0oaSkucmVwbGljYXRlKCk7XHJcbiAgICAgIHJlY29yZHNUYWJsZS5fcmVjb3Jkcy5wdXNoKHJlY29yZCk7XHJcbiAgICAgIHJlY29yZHNUYWJsZS5faGFzaFRhYi5zZXRfSXRlbShyZWNvcmQuZ2V0SGFzaEtleSgpLCByZWNvcmQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZWNvcmRzVGFibGU7XHJcbiAgfVxyXG5cclxuICBnZXRTZXJ2ZXJDdXJyUmVjKCk6IFJlY29yZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VydmVyQ3VyclJlYztcclxuICB9XHJcblxyXG4gIHplcm9TZXJ2ZXJDdXJyUmVjKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc2VydmVyQ3VyclJlYyA9IG51bGw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIEdldFNpemUoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmdldFNpemUoKTtcclxuICB9XHJcblxyXG4gIEdldFJlY0J5SWR4KGlkeDogbnVtYmVyKTogUmVjb3JkIHtcclxuICAgIHJldHVybiB0aGlzLmdldFJlY0J5SWR4KGlkeCk7XHJcbiAgfVxyXG5cclxuICBSZW1vdmVBbGwoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlbW92ZUFsbCgpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -104,4 +104,4 @@ export class TaskTransactionManager {
104
104
  }
105
105
  }
106
106
  }
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFza1RyYW5zYWN0aW9uTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvZGF0YS9UYXNrVHJhbnNhY3Rpb25NYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxhQUFhLEVBQVcsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQy9FLE9BQU8sRUFBQyx3Q0FBd0MsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBR2xGLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUd6RSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRTlDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBSTNELE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsSUFBSSxHQUFTLElBQUksQ0FBQztJQUdsQixJQUFZLG9CQUFvQjtRQUU5QixPQUFPLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUMsU0FBUyxDQUFDO0lBQzFFLENBQUM7SUFFRCxZQUFZLElBQVU7UUFDcEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUdELGdCQUFnQixDQUFDLFVBQWtCLEVBQUUsUUFBaUI7UUFDcEQsSUFBSSxNQUFlLENBQUM7UUFDcEIsSUFBSSxRQUFRO1lBQ1YsTUFBTSxHQUFHLENBQUMsVUFBVSxLQUFLLGNBQWMsQ0FBQyxpQkFBaUIsSUFBSSxVQUFVLEtBQUssY0FBYyxDQUFDLG1CQUFtQixDQUFDLENBQUM7O1lBRWhILE1BQU0sR0FBRyxDQUFDLFVBQVUsS0FBSyxjQUFjLENBQUMsaUJBQWlCLElBQUksVUFBVSxLQUFLLGNBQWMsQ0FBQyxtQkFBbUIsSUFBSSxVQUFVLEtBQUssY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTlKLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCw0QkFBNEIsQ0FBQyxXQUF3QixFQUFFLFFBQWlCO1FBQ3RFLElBQUkscUJBQXFCLEdBQVcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVFLElBQUksSUFBSSxHQUFZLFdBQVcsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ25HLElBQUksSUFBSTtZQUNOLFdBQVcsQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsd0JBQXdCLENBQUMsUUFBaUI7UUFDeEMsSUFBSSxNQUFNLEdBQVcsY0FBYyxDQUFDLFVBQVUsQ0FBQztRQUMvQyxJQUFJLElBQUksR0FBYSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUNqRixJQUFJLElBQUksS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNsQixJQUFJLFlBQVksR0FBVyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ2pGLElBQUksWUFBWSxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUMxQixNQUFNLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsQyxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFPTSxLQUFLLENBQUMsY0FBYyxDQUFDLGNBQXVCLEVBQUUsS0FBYSxFQUFFLE9BQWdCO1FBRWxGLElBQUksSUFBSSxHQUFXLE9BQU8sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQztRQUN0RixJQUFJLE1BQU0sR0FBaUIsTUFBTSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUVuRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBR3BCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWE7Z0JBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDcEIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsSUFBSSxTQUFTLEdBQTJCLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTdELElBQUksR0FBRyxHQUFZLE1BQU0sSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ2pKLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBR3pCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUdULElBQUksS0FBSyxLQUFLLGNBQWMsQ0FBQyxtQkFBbUIsSUFBZSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVMsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLENBQUMsSUFBZSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDOUosSUFBSSxDQUFDO29CQUNILElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztvQkFDaEMsTUFBTSx1QkFBdUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsd0NBQXdDLENBQUMsa0JBQWtCLENBQUMsQ0FBQztnQkFDbkgsQ0FBQzt3QkFFTyxDQUFDO29CQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztnQkFDbkMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBSUQsS0FBSyxDQUFDLDBCQUEwQjtRQUM5QixJQUFJLE9BQU8sR0FBbUIsY0FBYyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsbUJBQW1CLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNwSSxPQUFPLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFVRCxLQUFLLENBQUMseUJBQXlCLENBQUMsZUFBb0MsRUFBRSxjQUF1QixFQUFFLEtBQWEsRUFBRSxJQUFZLEVBQUUsU0FBaUM7UUFDM0osU0FBUyxDQUFDLEtBQUssR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3JDLElBQUksV0FBVyxHQUFZLEtBQUssQ0FBQztRQUVqQyxJQUFJLGtCQUFrQixHQUFnQixlQUFlLENBQUMsV0FBVyxDQUFDO1FBQ2xFLElBQUksa0JBQWtCLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDdEQsa0JBQWtCLENBQUMsUUFBUSxFQUFFLElBQUksa0JBQWtCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDdEUsa0JBQWtCLENBQUMsUUFBUSxFQUFFLEtBQUssS0FBSyxFQUFFLENBQUM7WUFFNUMsSUFBSSxhQUFhLEdBQVUsRUFBRSxDQUFDO1lBQzlCLElBQUksT0FBTyxHQUFzQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsRSxJQUFHLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxLQUFLLEdBQUc7Z0JBQ3RDLGFBQWEsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUU3QyxJQUFJLEdBQUcsR0FBbUIsY0FBYyxDQUFDLHdCQUF3QixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFHdEksSUFBRyxJQUFJLENBQUMsb0JBQW9CLElBQUksZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxhQUFhO2dCQUNsRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFOUMsSUFBSSxDQUFDO2dCQUNILElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztnQkFFaEMsSUFBRyxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixJQUFJLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUMsYUFBYSxDQUFDO29CQUNyRyxTQUFTLENBQUMsS0FBSyxHQUFHLE1BQU0sZUFBZSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN6RCxDQUFDO29CQUNPLENBQUM7Z0JBRVAsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1lBQ25DLENBQUM7WUFFRCxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLENBQUM7UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBUUQsb0NBQW9DLENBQUMsVUFBb0I7UUFDdkQsSUFBSSxJQUFJLEdBQWEsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMvQixJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDN0UsSUFBSSxDQUFDLDhCQUE4QixHQUFHLElBQUksV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUMvRSxJQUFJLENBQUMsOEJBQThCLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQ3RGLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUMsbUJBQW1CLENBQUM7UUFDckQsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UHJvcEludGVyZmFjZSwgUHJvcGVydHl9IGZyb20gXCJAbWFnaWMteHBhL2d1aVwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9ufSBmcm9tIFwiLi4vcnQvVHJhbnNhY3Rpb25cIjtcclxuaW1wb3J0IHtSZXR1cm5SZXN1bHR9IGZyb20gXCIuLi91dGlsL1JldHVyblJlc3VsdFwiO1xyXG5pbXBvcnQge0RhdGFWaWV3Q29tbWFuZFR5cGV9IGZyb20gXCIuLi9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9EYXRhdmlld0NvbW1hbmRcIjtcclxuaW1wb3J0IHtDb21tYW5kc1Byb2Nlc3NvckJhc2VfU2VuZGluZ0luc3RydWN0aW9ufSBmcm9tIFwiLi4vQ29tbWFuZHNQcm9jZXNzb3JCYXNlXCI7XHJcbmltcG9ydCB7SUNsaWVudENvbW1hbmR9IGZyb20gXCIuLi9jb21tYW5kcy9JQ2xpZW50Q29tbWFuZFwiO1xyXG5pbXBvcnQge0RhdGF2aWV3TWFuYWdlckJhc2V9IGZyb20gXCIuL0RhdGF2aWV3TWFuYWdlckJhc2VcIjtcclxuaW1wb3J0IHtDb21tYW5kRmFjdG9yeX0gZnJvbSBcIi4uL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL0NvbW1hbmRGYWN0b3J5XCI7XHJcbmltcG9ydCB7RGF0YVZpZXd9IGZyb20gXCIuL0RhdGFWaWV3XCI7XHJcbmltcG9ydCB7VGFza30gZnJvbSBcIi4uL3Rhc2tzL1Rhc2tcIjtcclxuaW1wb3J0IHtDb25zdEludGVyZmFjZX0gZnJvbSBcIi4uL0NvbnN0SW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7UmVmUGFyYW19IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQgeyBUYXNrQmFzZSB9IGZyb20gXCIuLi90YXNrcy9UYXNrQmFzZVwiO1xyXG5pbXBvcnQgeyBSZW1vdGVDb21tYW5kc1Byb2Nlc3NvciB9IGZyb20gXCIuLi9yZW1vdGUvUmVtb3RlQ29tbWFuZHNQcm9jZXNzb3JcIjtcclxuaW1wb3J0IHtNR0RhdGFDb2xsZWN0aW9ufSBmcm9tIFwiLi4vdGFza3MvTUdEYXRhQ29sbGVjdGlvblwiO1xyXG5pbXBvcnQge1JlY29yZH0gZnJvbSBcIi4vUmVjb3JkXCI7XHJcblxyXG4vLy8gbG9jYWwgdHJhbnNhY3Rpb24gbWFuYWdlclxyXG5leHBvcnQgY2xhc3MgVGFza1RyYW5zYWN0aW9uTWFuYWdlciB7XHJcbiAgdGFzazogVGFzayA9IG51bGw7XHJcblxyXG5cclxuICBwcml2YXRlIGdldCBpc0Nsb3NpbmdUb3Btb3N0VGFzaygpOiBib29sZWFuXHJcbiAge1xyXG4gICAgcmV0dXJuIE1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuU3RhcnR1cE1nRGF0YS5nZXRGaXJzdFRhc2soKS5JbkVuZFRhc2s7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcih0YXNrOiBUYXNrKSB7XHJcbiAgICB0aGlzLnRhc2sgPSB0YXNrO1xyXG4gIH1cclxuXHJcbiAgLy8vIHJldHVybiB0cnVlIGlmIHRoZSB0cmFuc2FjdGlvbiBiZWdhaW4gc3VwcG9ydGVkXHJcbiAgQWxsb3dUcmFuc2FjdGlvbih0cmFuc0JlZ2luOiBzdHJpbmcsIGZvckxvY2FsOiBib29sZWFuKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgcmVzdWx0OiBib29sZWFuO1xyXG4gICAgaWYgKGZvckxvY2FsKVxyXG4gICAgICByZXN1bHQgPSAodHJhbnNCZWdpbiA9PT0gQ29uc3RJbnRlcmZhY2UuVFJBTlNfVEFTS19QUkVGSVggfHwgdHJhbnNCZWdpbiA9PT0gQ29uc3RJbnRlcmZhY2UuVFJBTlNfUkVDT1JEX1BSRUZJWCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHJlc3VsdCA9ICh0cmFuc0JlZ2luID09PSBDb25zdEludGVyZmFjZS5UUkFOU19UQVNLX1BSRUZJWCB8fCB0cmFuc0JlZ2luID09PSBDb25zdEludGVyZmFjZS5UUkFOU19SRUNPUkRfUFJFRklYIHx8IHRyYW5zQmVnaW4gPT09IENvbnN0SW50ZXJmYWNlLlRSQU5TX05PTkUpO1xyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBQcmVwYXJlVHJhbnNhY3Rpb25Qcm9wZXJ0aWVzKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbiwgZm9yTG9jYWw6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGxldCB0cmFuc2FjdGlvbkJlZ2luVmFsdWU6IHN0cmluZyA9IHRoaXMuR2V0VHJhbnNhY3Rpb25CZWdpblZhbHVlKGZvckxvY2FsKTtcclxuICAgIGxldCBmbGFnOiBib29sZWFuID0gdHJhbnNhY3Rpb24gIT09IG51bGwgJiYgdGhpcy5BbGxvd1RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uQmVnaW5WYWx1ZSwgZm9yTG9jYWwpO1xyXG4gICAgaWYgKGZsYWcpXHJcbiAgICAgIHRyYW5zYWN0aW9uLnNldFRyYW5zQmVnaW4odHJhbnNhY3Rpb25CZWdpblZhbHVlKTtcclxuICB9XHJcblxyXG4gIEdldFRyYW5zYWN0aW9uQmVnaW5WYWx1ZShmb3JMb2NhbDogYm9vbGVhbik6IHN0cmluZyB7XHJcbiAgICBsZXQgcmVzdWx0OiBzdHJpbmcgPSBDb25zdEludGVyZmFjZS5UUkFOU19OT05FO1xyXG4gICAgbGV0IHByb3A6IFByb3BlcnR5ID0gdGhpcy50YXNrLmdldFByb3AoUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfVFJBU0FDVElPTl9CRUdJTik7XHJcbiAgICBpZiAocHJvcCAhPT0gbnVsbCkge1xyXG4gICAgICBsZXQgcHJvcGdldFZhbHVlOiBzdHJpbmcgPSBmb3JMb2NhbCA/IHByb3AuU3R1ZGlvVmFsdWUgOiBwcm9wLkdldENvbXB1dGVkVmFsdWUoKTtcclxuICAgICAgaWYgKHByb3BnZXRWYWx1ZSAhPT0gbnVsbCkge1xyXG4gICAgICAgIHJlc3VsdCA9IHByb3BnZXRWYWx1ZS5jaGFyQXQoMCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGNoZWNrIGlmIGFsbCB0aGUgY29uZGl0aW9ucyBpbXBseSBhIGNvbW1pdCBhbmQgZG8gdGhlIGNvbW1pdCByZXR1cm4gdHJ1ZSBpZiBhIGNvbW1pdCB3YXMgZXhlY3V0ZWRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicmV2ZXJzaWJsZUV4aXRcIj5pZiB0cnVlIHRoZW4gdGhlIHRhc2sgZXhpdCBpcyBub24gcmV2ZXJzaWJsZTwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJsZXZlbFwiPm9mIHRoZSBkeW5hbWljRGVmLnRyYW5zYWN0aW9uIHRvIGNvbW1pdCAodGFzayAvIHJlY29yZCk8L3BhcmFtPlxyXG4gIHB1YmxpYyBhc3luYyBjaGVja0FuZENvbW1pdChyZXZlcnNpYmxlRXhpdDogYm9vbGVhbiwgbGV2ZWw6IHN0cmluZywgaXNBYm9ydDogYm9vbGVhbik6IFByb21pc2U8Ym9vbGVhbj5cclxuICB7XHJcbiAgICBsZXQgb3Blcjogc3RyaW5nID0gaXNBYm9ydCA/IENvbnN0SW50ZXJmYWNlLlRSQU5TX0FCT1JUIDogQ29uc3RJbnRlcmZhY2UuVFJBTlNfQ09NTUlUO1xyXG4gICAgbGV0IHJlc3VsdDogUmV0dXJuUmVzdWx0ID0gYXdhaXQgdGhpcy5FeGVjdXRlTG9jYWxVcGRhdGVzQ29tbWFuZCgpO1xyXG4gICAgLy8gaXMgZmFpbGVkIHRoZSByZXR1cm5cclxuICAgIGlmICghcmVzdWx0LlN1Y2Nlc3MpIHtcclxuICAgICAgLy8gVE9ETzogQ2hlY2sgaWYgdGhpcyBjb2RlIGlzIG5lZWRlZFxyXG4gICAgICAvLyBkZWZpbml0aW9uIDogZm9yIG5vbiBJbnRlcmFjdGl2ZSBhbmQgd2UgZ2V0IHByb2JsZW0gd2l0aCBFeGVjdXRlTG9jYWxVcGRhdGVzIGNvbW1hbmQgd2UgbmVlZCB0byBhYm9ydCB0aGUgdGFzay5cclxuICAgICAgaWYgKCF0aGlzLnRhc2suSXNJbnRlcmFjdGl2ZSlcclxuICAgICAgICB0aGlzLnRhc2suYWJvcnQoKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCByZWZSZXN1bHQ6IFJlZlBhcmFtPFJldHVyblJlc3VsdD4gPSBuZXcgUmVmUGFyYW0ocmVzdWx0KTtcclxuXHJcbiAgICBsZXQgcmV0OiBib29sZWFuID0gYXdhaXQgdGhpcy5jaGVja0FuZENvbW1pdFBlckRhdGF2aWV3KHRoaXMudGFzay5EYXRhdmlld01hbmFnZXIuUmVtb3RlRGF0YXZpZXdNYW5hZ2VyLCByZXZlcnNpYmxlRXhpdCwgbGV2ZWwsIG9wZXIsIHJlZlJlc3VsdCk7XHJcbiAgICByZXN1bHQgPSByZWZSZXN1bHQudmFsdWU7XHJcblxyXG4gICAgLy8vIHJlbGV2YW50IGZvciByZW1vdGUgb25seVxyXG4gICAgaWYgKCFyZXQpIHtcclxuICAgICAgLy8gSWYgd2UgbW9kaWZpZWQgdGhlIHJlY29yZCBidXQgZGlkbid0IGZsdXNoIGl0IHlldCBldmVuIHRob3VnaCB3ZSBzaG91bGQgaGF2ZSAtXHJcbiAgICAgIC8vIHNlbmQgaXQgbm93LlxyXG4gICAgICBpZiAobGV2ZWwgPT09IENvbnN0SW50ZXJmYWNlLlRSQU5TX1JFQ09SRF9QUkVGSVggJiYgKDxEYXRhVmlldz50aGlzLnRhc2suRGF0YVZpZXcpLm1vZGlmaWVkUmVjb3Jkc051bWJlcigpID4gMCAmJiAoPERhdGFWaWV3PnRoaXMudGFzay5EYXRhVmlldykuRmx1c2hVcGRhdGVzKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIHRoaXMudGFzay5UcnlpbmdUb0NvbW1pdCA9IHRydWU7XHJcbiAgICAgICAgICBhd2FpdCBSZW1vdGVDb21tYW5kc1Byb2Nlc3Nvci5HZXRJbnN0YW5jZSgpLkV4ZWN1dGUoQ29tbWFuZHNQcm9jZXNzb3JCYXNlX1NlbmRpbmdJbnN0cnVjdGlvbi5UQVNLU19BTkRfQ09NTUFORFMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZmluYWxseSB7XHJcbiAgICAgICAgICB0aGlzLnRhc2suVHJ5aW5nVG9Db21taXQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vIFRPRE86IENoZWNrIGlmIHRoaXMgbWV0aG9kIGlzIG5lZWRlZFxyXG4gIC8vLyBleGVjdXRlIHRoZSBsb2NhbCB1cGRmYXRlcyBjb21tYW5kXHJcbiAgYXN5bmMgRXhlY3V0ZUxvY2FsVXBkYXRlc0NvbW1hbmQoKTogUHJvbWlzZTxSZXR1cm5SZXN1bHQ+IHtcclxuICAgIGxldCBjb21tYW5kOiBJQ2xpZW50Q29tbWFuZCA9IENvbW1hbmRGYWN0b3J5LkNyZWF0ZURhdGFWaWV3Q29tbWFuZCh0aGlzLnRhc2suZ2V0VGFza1RhZygpLCBEYXRhVmlld0NvbW1hbmRUeXBlLkV4ZWN1dGVMb2NhbFVwZGF0ZXMpO1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMudGFzay5EYXRhdmlld01hbmFnZXIuRXhlY3V0ZShjb21tYW5kKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy9cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImRhdGF2aWV3bWFuYWdlclwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicmV2ZXJzaWJsZUV4aXRcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImxldmVsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJvcGVyXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIGFzeW5jIGNoZWNrQW5kQ29tbWl0UGVyRGF0YXZpZXcoZGF0YXZpZXdtYW5hZ2VyOiBEYXRhdmlld01hbmFnZXJCYXNlLCByZXZlcnNpYmxlRXhpdDogYm9vbGVhbiwgbGV2ZWw6IHN0cmluZywgb3Blcjogc3RyaW5nLCByZWZSZXN1bHQ6IFJlZlBhcmFtPFJldHVyblJlc3VsdD4pOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIHJlZlJlc3VsdC52YWx1ZSA9IG5ldyBSZXR1cm5SZXN1bHQoKTtcclxuICAgIGxldCByZXR1cm5WYWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIGxldCBjdXJyZW50VHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uID0gZGF0YXZpZXdtYW5hZ2VyLlRyYW5zYWN0aW9uO1xyXG4gICAgaWYgKGN1cnJlbnRUcmFuc2FjdGlvbiAhPT0gbnVsbCAmJiAhdGhpcy50YXNrLmlzQWJvcnRpbmcoKSAmJlxyXG4gICAgICAgIGN1cnJlbnRUcmFuc2FjdGlvbi5pc09wZW5lZCgpICYmIGN1cnJlbnRUcmFuc2FjdGlvbi5pc093bmVyKHRoaXMudGFzaykgJiZcclxuICAgICAgICBjdXJyZW50VHJhbnNhY3Rpb24uZ2V0TGV2ZWwoKSA9PT0gbGV2ZWwpIHtcclxuXHJcbiAgICAgIGxldCB1cGRhdGVkRmllbGRzOnN0cmluZyA9ICcnO1xyXG4gICAgICBsZXQgY3VyclJlYzogUmVjb3JkID0gKDxEYXRhVmlldz50aGlzLnRhc2suRGF0YVZpZXcpLmdldEN1cnJSZWMoKTtcclxuICAgICAgaWYoY3VycmVudFRyYW5zYWN0aW9uLmdldExldmVsKCkgPT09IFwiUFwiKVxyXG4gICAgICAgIHVwZGF0ZWRGaWVsZHMgPSBjdXJyUmVjLmdldFVwZGF0ZWRGaWVsZHMoKTtcclxuXHJcbiAgICAgIGxldCBjbWQ6IElDbGllbnRDb21tYW5kID0gQ29tbWFuZEZhY3RvcnkuQ3JlYXRlVHJhbnNhY3Rpb25Db21tYW5kKG9wZXIsIHRoaXMudGFzay5nZXRUYXNrVGFnKCksIHJldmVyc2libGVFeGl0LCBsZXZlbCwgdXBkYXRlZEZpZWxkcyk7XHJcblxyXG4gICAgICAvLyBXaGlsZSBjb21taXR0aW5nIHRoZSB0cmFuc2FjdGlvbiBpbiBsYXN0IHJlcXVlc3QsIGp1c3Qgc2VyaWFsaXplIHRoZSBjb21tYW5kIGFuZCBkb24ndCBleGVjdXRlIGl0IGltbWVkaWF0ZWx5XHJcbiAgICAgIGlmKHRoaXMuaXNDbG9zaW5nVG9wbW9zdFRhc2sgJiYgTUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZS5TdGFydHVwTWdEYXRhLmdldEZpcnN0VGFzaygpLkNsb3NpbmdGb3JtVUkpXHJcbiAgICAgICAgdGhpcy50YXNrLmdldE1HRGF0YSgpLkNtZHNUb1NlcnZlci5BZGQoY21kKTtcclxuXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgdGhpcy50YXNrLlRyeWluZ1RvQ29tbWl0ID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgaWYoISh0aGlzLmlzQ2xvc2luZ1RvcG1vc3RUYXNrICYmIE1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuU3RhcnR1cE1nRGF0YS5nZXRGaXJzdFRhc2soKS5DbG9zaW5nRm9ybVVJKSlcclxuICAgICAgICAgIHJlZlJlc3VsdC52YWx1ZSA9IGF3YWl0IGRhdGF2aWV3bWFuYWdlci5FeGVjdXRlKGNtZCk7XHJcbiAgICAgIH1cclxuICAgICAgZmluYWxseSB7XHJcbiAgICAgICAgLy8gRG9uJ3QgY2F0Y2ggYW55IGV4Y2VwdGlvbiBoZXJlLiBKdXN0IHR1cm4gb2ZmIHRoZSBcInRyeWluZ1RvQ29tbWl0XCIgZmxhZy5cclxuICAgICAgICB0aGlzLnRhc2suVHJ5aW5nVG9Db21taXQgPSBmYWxzZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuVmFsdWUgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXR1cm5WYWx1ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLyB3aGlsZSB3ZSBkb24ndCBoYXZlIHRyYW5zYWN0aW9uIHdlIG11c3QgZmFpbGQgc3RhY2sgb24gdGhlIHJlY29yZChzYW1lIGFzIHdlIGRvaW5nIGZvciBkdXBsaWNhdGUgaW5kZXgpXHJcbiAgLy8gc28gd2UgY3JlYXRlIFRyYW5zYWN0aW9uRXJyb3JIYW5kbGluZ3NSZXRyeSBhbmQgd2UgdXNlIHRoaXMgZHVtbXkgdHJhbnNhY3Rpb25cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInRyYW5zQmVnaW5cIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgSGFuZGVsVHJhbnNhY3Rpb25FcnJvckhhbmRsaW5nc1JldHJ5KHRyYW5zQmVnaW46IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICBsZXQgdGFzazogVGFza0Jhc2UgPSB0aGlzLnRhc2s7XHJcbiAgICBpZiAodGFzay5UcmFuc2FjdGlvbiA9PT0gbnVsbCAmJiB0cmFuc0JlZ2luWzBdID09PSBDb25zdEludGVyZmFjZS5UUkFOU19OT05FKSB7XHJcbiAgICAgIHRhc2suVHJhbnNhY3Rpb25FcnJvckhhbmRsaW5nc1JldHJ5ID0gbmV3IFRyYW5zYWN0aW9uKHRhc2ssIHRhc2suZ2V0VGFza1RhZygpKTtcclxuICAgICAgdGFzay5UcmFuc2FjdGlvbkVycm9ySGFuZGxpbmdzUmV0cnkuc2V0VHJhbnNCZWdpbihDb25zdEludGVyZmFjZS5UUkFOU19SRUNPUkRfUFJFRklYKTtcclxuICAgICAgdHJhbnNCZWdpblswXSA9IENvbnN0SW50ZXJmYWNlLlRSQU5TX1JFQ09SRF9QUkVGSVg7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFza1RyYW5zYWN0aW9uTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvZGF0YS9UYXNrVHJhbnNhY3Rpb25NYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxhQUFhLEVBQVcsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQy9FLE9BQU8sRUFBQyx3Q0FBd0MsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBR2xGLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUd6RSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRTlDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBSTNELE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsSUFBSSxHQUFTLElBQUksQ0FBQztJQUdsQixJQUFZLG9CQUFvQjtRQUU5QixPQUFPLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUMsU0FBUyxDQUFDO0lBQzFFLENBQUM7SUFFRCxZQUFZLElBQVU7UUFDcEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUdELGdCQUFnQixDQUFDLFVBQWtCLEVBQUUsUUFBaUI7UUFDcEQsSUFBSSxNQUFlLENBQUM7UUFDcEIsSUFBSSxRQUFRO1lBQ1YsTUFBTSxHQUFH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QUMsbUJBQW1CLENBQUM7U0FDcEQ7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1Byb3BJbnRlcmZhY2UsIFByb3BlcnR5fSBmcm9tIFwiQG1hZ2ljLXhwYS9ndWlcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbn0gZnJvbSBcIi4uL3J0L1RyYW5zYWN0aW9uXCI7XHJcbmltcG9ydCB7UmV0dXJuUmVzdWx0fSBmcm9tIFwiLi4vdXRpbC9SZXR1cm5SZXN1bHRcIjtcclxuaW1wb3J0IHtEYXRhVmlld0NvbW1hbmRUeXBlfSBmcm9tIFwiLi4vY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvRGF0YXZpZXdDb21tYW5kXCI7XHJcbmltcG9ydCB7Q29tbWFuZHNQcm9jZXNzb3JCYXNlX1NlbmRpbmdJbnN0cnVjdGlvbn0gZnJvbSBcIi4uL0NvbW1hbmRzUHJvY2Vzc29yQmFzZVwiO1xyXG5pbXBvcnQge0lDbGllbnRDb21tYW5kfSBmcm9tIFwiLi4vY29tbWFuZHMvSUNsaWVudENvbW1hbmRcIjtcclxuaW1wb3J0IHtEYXRhdmlld01hbmFnZXJCYXNlfSBmcm9tIFwiLi9EYXRhdmlld01hbmFnZXJCYXNlXCI7XHJcbmltcG9ydCB7Q29tbWFuZEZhY3Rvcnl9IGZyb20gXCIuLi9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9Db21tYW5kRmFjdG9yeVwiO1xyXG5pbXBvcnQge0RhdGFWaWV3fSBmcm9tIFwiLi9EYXRhVmlld1wiO1xyXG5pbXBvcnQge1Rhc2t9IGZyb20gXCIuLi90YXNrcy9UYXNrXCI7XHJcbmltcG9ydCB7Q29uc3RJbnRlcmZhY2V9IGZyb20gXCIuLi9Db25zdEludGVyZmFjZVwiO1xyXG5pbXBvcnQge1JlZlBhcmFtfSBmcm9tIFwiQG1hZ2ljLXhwYS9tc2NvcmVsaWJcIjtcclxuaW1wb3J0IHsgVGFza0Jhc2UgfSBmcm9tIFwiLi4vdGFza3MvVGFza0Jhc2VcIjtcclxuaW1wb3J0IHsgUmVtb3RlQ29tbWFuZHNQcm9jZXNzb3IgfSBmcm9tIFwiLi4vcmVtb3RlL1JlbW90ZUNvbW1hbmRzUHJvY2Vzc29yXCI7XHJcbmltcG9ydCB7TUdEYXRhQ29sbGVjdGlvbn0gZnJvbSBcIi4uL3Rhc2tzL01HRGF0YUNvbGxlY3Rpb25cIjtcclxuaW1wb3J0IHtSZWNvcmR9IGZyb20gXCIuL1JlY29yZFwiO1xyXG5cclxuLy8vIGxvY2FsIHRyYW5zYWN0aW9uIG1hbmFnZXJcclxuZXhwb3J0IGNsYXNzIFRhc2tUcmFuc2FjdGlvbk1hbmFnZXIge1xyXG4gIHRhc2s6IFRhc2sgPSBudWxsO1xyXG5cclxuXHJcbiAgcHJpdmF0ZSBnZXQgaXNDbG9zaW5nVG9wbW9zdFRhc2soKTogYm9vbGVhblxyXG4gIHtcclxuICAgIHJldHVybiBNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLlN0YXJ0dXBNZ0RhdGEuZ2V0Rmlyc3RUYXNrKCkuSW5FbmRUYXNrO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IodGFzazogVGFzaykge1xyXG4gICAgdGhpcy50YXNrID0gdGFzaztcclxuICB9XHJcblxyXG4gIC8vLyByZXR1cm4gdHJ1ZSBpZiB0aGUgdHJhbnNhY3Rpb24gYmVnYWluIHN1cHBvcnRlZFxyXG4gIEFsbG93VHJhbnNhY3Rpb24odHJhbnNCZWdpbjogc3RyaW5nLCBmb3JMb2NhbDogYm9vbGVhbik6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHJlc3VsdDogYm9vbGVhbjtcclxuICAgIGlmIChmb3JMb2NhbClcclxuICAgICAgcmVzdWx0ID0gKHRyYW5zQmVnaW4gPT09IENvbnN0SW50ZXJmYWNlLlRSQU5TX1RBU0tfUFJFRklYIHx8IHRyYW5zQmVnaW4gPT09IENvbnN0SW50ZXJmYWNlLlRSQU5TX1JFQ09SRF9QUkVGSVgpO1xyXG4gICAgZWxzZVxyXG4gICAgICByZXN1bHQgPSAodHJhbnNCZWdpbiA9PT0gQ29uc3RJbnRlcmZhY2UuVFJBTlNfVEFTS19QUkVGSVggfHwgdHJhbnNCZWdpbiA9PT0gQ29uc3RJbnRlcmZhY2UuVFJBTlNfUkVDT1JEX1BSRUZJWCB8fCB0cmFuc0JlZ2luID09PSBDb25zdEludGVyZmFjZS5UUkFOU19OT05FKTtcclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgUHJlcGFyZVRyYW5zYWN0aW9uUHJvcGVydGllcyh0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24sIGZvckxvY2FsOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBsZXQgdHJhbnNhY3Rpb25CZWdpblZhbHVlOiBzdHJpbmcgPSB0aGlzLkdldFRyYW5zYWN0aW9uQmVnaW5WYWx1ZShmb3JMb2NhbCk7XHJcbiAgICBsZXQgZmxhZzogYm9vbGVhbiA9IHRyYW5zYWN0aW9uICE9PSBudWxsICYmIHRoaXMuQWxsb3dUcmFuc2FjdGlvbih0cmFuc2FjdGlvbkJlZ2luVmFsdWUsIGZvckxvY2FsKTtcclxuICAgIGlmIChmbGFnKVxyXG4gICAgICB0cmFuc2FjdGlvbi5zZXRUcmFuc0JlZ2luKHRyYW5zYWN0aW9uQmVnaW5WYWx1ZSk7XHJcbiAgfVxyXG5cclxuICBHZXRUcmFuc2FjdGlvbkJlZ2luVmFsdWUoZm9yTG9jYWw6IGJvb2xlYW4pOiBzdHJpbmcge1xyXG4gICAgbGV0IHJlc3VsdDogc3RyaW5nID0gQ29uc3RJbnRlcmZhY2UuVFJBTlNfTk9ORTtcclxuICAgIGxldCBwcm9wOiBQcm9wZXJ0eSA9IHRoaXMudGFzay5nZXRQcm9wKFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1RSQVNBQ1RJT05fQkVHSU4pO1xyXG4gICAgaWYgKHByb3AgIT09IG51bGwpIHtcclxuICAgICAgbGV0IHByb3BnZXRWYWx1ZTogc3RyaW5nID0gZm9yTG9jYWwgPyBwcm9wLlN0dWRpb1ZhbHVlIDogcHJvcC5HZXRDb21wdXRlZFZhbHVlKCk7XHJcbiAgICAgIGlmIChwcm9wZ2V0VmFsdWUgIT09IG51bGwpIHtcclxuICAgICAgICByZXN1bHQgPSBwcm9wZ2V0VmFsdWUuY2hhckF0KDApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBjaGVjayBpZiBhbGwgdGhlIGNvbmRpdGlvbnMgaW1wbHkgYSBjb21taXQgYW5kIGRvIHRoZSBjb21taXQgcmV0dXJuIHRydWUgaWYgYSBjb21taXQgd2FzIGV4ZWN1dGVkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInJldmVyc2libGVFeGl0XCI+aWYgdHJ1ZSB0aGVuIHRoZSB0YXNrIGV4aXQgaXMgbm9uIHJldmVyc2libGU8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibGV2ZWxcIj5vZiB0aGUgZHluYW1pY0RlZi50cmFuc2FjdGlvbiB0byBjb21taXQgKHRhc2sgLyByZWNvcmQpPC9wYXJhbT5cclxuICBwdWJsaWMgYXN5bmMgY2hlY2tBbmRDb21taXQocmV2ZXJzaWJsZUV4aXQ6IGJvb2xlYW4sIGxldmVsOiBzdHJpbmcsIGlzQWJvcnQ6IGJvb2xlYW4pOiBQcm9taXNlPGJvb2xlYW4+XHJcbiAge1xyXG4gICAgbGV0IG9wZXI6IHN0cmluZyA9IGlzQWJvcnQgPyBDb25zdEludGVyZmFjZS5UUkFOU19BQk9SVCA6IENvbnN0SW50ZXJmYWNlLlRSQU5TX0NPTU1JVDtcclxuICAgIGxldCByZXN1bHQ6IFJldHVyblJlc3VsdCA9IGF3YWl0IHRoaXMuRXhlY3V0ZUxvY2FsVXBkYXRlc0NvbW1hbmQoKTtcclxuICAgIC8vIGlzIGZhaWxlZCB0aGUgcmV0dXJuXHJcbiAgICBpZiAoIXJlc3VsdC5TdWNjZXNzKSB7XHJcbiAgICAgIC8vIFRPRE86IENoZWNrIGlmIHRoaXMgY29kZSBpcyBuZWVkZWRcclxuICAgICAgLy8gZGVmaW5pdGlvbiA6IGZvciBub24gSW50ZXJhY3RpdmUgYW5kIHdlIGdldCBwcm9ibGVtIHdpdGggRXhlY3V0ZUxvY2FsVXBkYXRlcyBjb21tYW5kIHdlIG5lZWQgdG8gYWJvcnQgdGhlIHRhc2suXHJcbiAgICAgIGlmICghdGhpcy50YXNrLklzSW50ZXJhY3RpdmUpXHJcbiAgICAgICAgdGhpcy50YXNrLmFib3J0KCk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgcmVmUmVzdWx0OiBSZWZQYXJhbTxSZXR1cm5SZXN1bHQ+ID0gbmV3IFJlZlBhcmFtKHJlc3VsdCk7XHJcblxyXG4gICAgbGV0IHJldDogYm9vbGVhbiA9IGF3YWl0IHRoaXMuY2hlY2tBbmRDb21taXRQZXJEYXRhdmlldyh0aGlzLnRhc2suRGF0YXZpZXdNYW5hZ2VyLlJlbW90ZURhdGF2aWV3TWFuYWdlciwgcmV2ZXJzaWJsZUV4aXQsIGxldmVsLCBvcGVyLCByZWZSZXN1bHQpO1xyXG4gICAgcmVzdWx0ID0gcmVmUmVzdWx0LnZhbHVlO1xyXG5cclxuICAgIC8vLyByZWxldmFudCBmb3IgcmVtb3RlIG9ubHlcclxuICAgIGlmICghcmV0KSB7XHJcbiAgICAgIC8vIElmIHdlIG1vZGlmaWVkIHRoZSByZWNvcmQgYnV0IGRpZG4ndCBmbHVzaCBpdCB5ZXQgZXZlbiB0aG91Z2ggd2Ugc2hvdWxkIGhhdmUgLVxyXG4gICAgICAvLyBzZW5kIGl0IG5vdy5cclxuICAgICAgaWYgKGxldmVsID09PSBDb25zdEludGVyZmFjZS5UUkFOU19SRUNPUkRfUFJFRklYICYmICg8RGF0YVZpZXc+dGhpcy50YXNrLkRhdGFWaWV3KS5tb2RpZmllZFJlY29yZHNOdW1iZXIoKSA+IDAgJiYgKDxEYXRhVmlldz50aGlzLnRhc2suRGF0YVZpZXcpLkZsdXNoVXBkYXRlcykge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICB0aGlzLnRhc2suVHJ5aW5nVG9Db21taXQgPSB0cnVlO1xyXG4gICAgICAgICAgYXdhaXQgUmVtb3RlQ29tbWFuZHNQcm9jZXNzb3IuR2V0SW5zdGFuY2UoKS5FeGVjdXRlKENvbW1hbmRzUHJvY2Vzc29yQmFzZV9TZW5kaW5nSW5zdHJ1Y3Rpb24uVEFTS1NfQU5EX0NPTU1BTkRTKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZpbmFsbHkge1xyXG4gICAgICAgICAgdGhpcy50YXNrLlRyeWluZ1RvQ29tbWl0ID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvLyBUT0RPOiBDaGVjayBpZiB0aGlzIG1ldGhvZCBpcyBuZWVkZWRcclxuICAvLy8gZXhlY3V0ZSB0aGUgbG9jYWwgdXBkZmF0ZXMgY29tbWFuZFxyXG4gIGFzeW5jIEV4ZWN1dGVMb2NhbFVwZGF0ZXNDb21tYW5kKCk6IFByb21pc2U8UmV0dXJuUmVzdWx0PiB7XHJcbiAgICBsZXQgY29tbWFuZDogSUNsaWVudENvbW1hbmQgPSBDb21tYW5kRmFjdG9yeS5DcmVhdGVEYXRhVmlld0NvbW1hbmQodGhpcy50YXNrLmdldFRhc2tUYWcoKSwgRGF0YVZpZXdDb21tYW5kVHlwZS5FeGVjdXRlTG9jYWxVcGRhdGVzKTtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLnRhc2suRGF0YXZpZXdNYW5hZ2VyLkV4ZWN1dGUoY29tbWFuZCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJkYXRhdmlld21hbmFnZXJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInJldmVyc2libGVFeGl0XCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsZXZlbFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwib3BlclwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBhc3luYyBjaGVja0FuZENvbW1pdFBlckRhdGF2aWV3KGRhdGF2aWV3bWFuYWdlcjogRGF0YXZpZXdNYW5hZ2VyQmFzZSwgcmV2ZXJzaWJsZUV4aXQ6IGJvb2xlYW4sIGxldmVsOiBzdHJpbmcsIG9wZXI6IHN0cmluZywgcmVmUmVzdWx0OiBSZWZQYXJhbTxSZXR1cm5SZXN1bHQ+KTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICByZWZSZXN1bHQudmFsdWUgPSBuZXcgUmV0dXJuUmVzdWx0KCk7XHJcbiAgICBsZXQgcmV0dXJuVmFsdWU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBsZXQgY3VycmVudFRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbiA9IGRhdGF2aWV3bWFuYWdlci5UcmFuc2FjdGlvbjtcclxuICAgIGlmIChjdXJyZW50VHJhbnNhY3Rpb24gIT09IG51bGwgJiYgIXRoaXMudGFzay5pc0Fib3J0aW5nKCkgJiZcclxuICAgICAgICBjdXJyZW50VHJhbnNhY3Rpb24uaXNPcGVuZWQoKSAmJiBjdXJyZW50VHJhbnNhY3Rpb24uaXNPd25lcih0aGlzLnRhc2spICYmXHJcbiAgICAgICAgY3VycmVudFRyYW5zYWN0aW9uLmdldExldmVsKCkgPT09IGxldmVsKSB7XHJcblxyXG4gICAgICBsZXQgdXBkYXRlZEZpZWxkczpzdHJpbmcgPSAnJztcclxuICAgICAgbGV0IGN1cnJSZWM6IFJlY29yZCA9ICg8RGF0YVZpZXc+dGhpcy50YXNrLkRhdGFWaWV3KS5nZXRDdXJyUmVjKCk7XHJcbiAgICAgIGlmKGN1cnJlbnRUcmFuc2FjdGlvbi5nZXRMZXZlbCgpID09PSBcIlBcIilcclxuICAgICAgICB1cGRhdGVkRmllbGRzID0gY3VyclJlYy5nZXRVcGRhdGVkRmllbGRzKCk7XHJcblxyXG4gICAgICBsZXQgY21kOiBJQ2xpZW50Q29tbWFuZCA9IENvbW1hbmRGYWN0b3J5LkNyZWF0ZVRyYW5zYWN0aW9uQ29tbWFuZChvcGVyLCB0aGlzLnRhc2suZ2V0VGFza1RhZygpLCByZXZlcnNpYmxlRXhpdCwgbGV2ZWwsIHVwZGF0ZWRGaWVsZHMpO1xyXG5cclxuICAgICAgLy8gV2hpbGUgY29tbWl0dGluZyB0aGUgdHJhbnNhY3Rpb24gaW4gbGFzdCByZXF1ZXN0LCBqdXN0IHNlcmlhbGl6ZSB0aGUgY29tbWFuZCBhbmQgZG9uJ3QgZXhlY3V0ZSBpdCBpbW1lZGlhdGVseVxyXG4gICAgICBpZih0aGlzLmlzQ2xvc2luZ1RvcG1vc3RUYXNrICYmIE1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuU3RhcnR1cE1nRGF0YS5nZXRGaXJzdFRhc2soKS5DbG9zaW5nRm9ybVVJKVxyXG4gICAgICAgIHRoaXMudGFzay5nZXRNR0RhdGEoKS5DbWRzVG9TZXJ2ZXIuQWRkKGNtZCk7XHJcblxyXG4gICAgICB0cnkge1xyXG4gICAgICAgIHRoaXMudGFzay5UcnlpbmdUb0NvbW1pdCA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmKCEodGhpcy5pc0Nsb3NpbmdUb3Btb3N0VGFzayAmJiBNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLlN0YXJ0dXBNZ0RhdGEuZ2V0Rmlyc3RUYXNrKCkuQ2xvc2luZ0Zvcm1VSSkpXHJcbiAgICAgICAgICByZWZSZXN1bHQudmFsdWUgPSBhd2FpdCBkYXRhdmlld21hbmFnZXIuRXhlY3V0ZShjbWQpO1xyXG4gICAgICB9XHJcbiAgICAgIGZpbmFsbHkge1xyXG4gICAgICAgIC8vIERvbid0IGNhdGNoIGFueSBleGNlcHRpb24gaGVyZS4gSnVzdCB0dXJuIG9mZiB0aGUgXCJ0cnlpbmdUb0NvbW1pdFwiIGZsYWcuXHJcbiAgICAgICAgdGhpcy50YXNrLlRyeWluZ1RvQ29tbWl0ID0gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVyblZhbHVlID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmV0dXJuVmFsdWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8gd2hpbGUgd2UgZG9uJ3QgaGF2ZSB0cmFuc2FjdGlvbiB3ZSBtdXN0IGZhaWxkIHN0YWNrIG9uIHRoZSByZWNvcmQoc2FtZSBhcyB3ZSBkb2luZyBmb3IgZHVwbGljYXRlIGluZGV4KVxyXG4gIC8vIHNvIHdlIGNyZWF0ZSBUcmFuc2FjdGlvbkVycm9ySGFuZGxpbmdzUmV0cnkgYW5kIHdlIHVzZSB0aGlzIGR1bW15IHRyYW5zYWN0aW9uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ0cmFuc0JlZ2luXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIEhhbmRlbFRyYW5zYWN0aW9uRXJyb3JIYW5kbGluZ3NSZXRyeSh0cmFuc0JlZ2luOiBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgbGV0IHRhc2s6IFRhc2tCYXNlID0gdGhpcy50YXNrO1xyXG4gICAgaWYgKHRhc2suVHJhbnNhY3Rpb24gPT09IG51bGwgJiYgdHJhbnNCZWdpblswXSA9PT0gQ29uc3RJbnRlcmZhY2UuVFJBTlNfTk9ORSkge1xyXG4gICAgICB0YXNrLlRyYW5zYWN0aW9uRXJyb3JIYW5kbGluZ3NSZXRyeSA9IG5ldyBUcmFuc2FjdGlvbih0YXNrLCB0YXNrLmdldFRhc2tUYWcoKSk7XHJcbiAgICAgIHRhc2suVHJhbnNhY3Rpb25FcnJvckhhbmRsaW5nc1JldHJ5LnNldFRyYW5zQmVnaW4oQ29uc3RJbnRlcmZhY2UuVFJBTlNfUkVDT1JEX1BSRUZJWCk7XHJcbiAgICAgIHRyYW5zQmVnaW5bMF0gPSBDb25zdEludGVyZmFjZS5UUkFOU19SRUNPUkRfUFJFRklYO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -71,4 +71,4 @@ export class XMLBasedDcValuesBuilder extends DcValuesBuilderBase {
71
71
  return super.ParseValues(valueStr, dataType, useHex);
72
72
  }
73
73
  }
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWE1MQmFzZWREY1ZhbHVlc0J1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL2RhdGEvWE1MQmFzZWREY1ZhbHVlc0J1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFXLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0QsT0FBTyxFQUFDLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFbkYsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQU0vQyxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsbUJBQW1CO0lBQ3RELEdBQUcsR0FBYSxJQUFJLENBQUM7SUFDckIsTUFBTSxHQUFjLElBQUksQ0FBQztJQUVqQyxJQUFJLGdCQUFnQixDQUFDLEtBQWE7UUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztRQUNoQixJQUFJLFVBQVUsR0FBVyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUU3RyxJQUFJLFVBQVUsS0FBSyxDQUFDLENBQUMsSUFBSSxVQUFVLEdB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QUFFLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBU1MsV0FBVyxDQUFDLFFBQWdCLEVBQUUsUUFBMEI7UUFDaEUsSUFBSSxNQUFNLEdBQVksS0FBSyxDQUFDO1FBQzVCLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDO1lBQzFDLFFBQVEsS0FBSyxnQkFBZ0IsQ0FBQyxLQUFLLElBQUksUUFBUSxLQUFLLGdCQUFnQixDQUFDLE9BQU8sSUFBSSxRQUFRLEtBQUssZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDeEgsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNoQixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdkQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEY1ZhbHVlcywgRGNWYWx1ZXNCdWlsZGVyQmFzZX0gZnJvbSBcIkBtYWdpYy14cGEvZ3VpXCI7XHJcbmltcG9ydCB7TG9nZ2VyLCBTdG9yYWdlQXR0cmlidXRlLCBYTUxDb25zdGFudHMsIFhtbFBhcnNlcn0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHtMaXN0fSBmcm9tIFwiQG1hZ2ljLXhwYS9tc2NvcmVsaWJcIjtcclxuaW1wb3J0IHtDb25zdEludGVyZmFjZX0gZnJvbSBcIi4uL0NvbnN0SW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7RW52aXJvbm1lbnR9IGZyb20gXCIuLi9lbnYvRW52aXJvbm1lbnRcIjtcclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vICAgYSBjbGFzcyB0aGF0IGhvbGRzIGEgZGF0YSBjb250cm9scyBkaXNwbGF5ZWQgYW5kIGxpbmtlZCB2YWx1ZXMgZWFjaCBpbnN0YW5jZSBpcyBhIHVuaXF1ZSBzZXQgb2YgdmFsdWVzXHJcbi8vLyAgIGlkZW50aWZpZWQgYnkgYSB1bmlxdWUgaWRcclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGNsYXNzIFhNTEJhc2VkRGNWYWx1ZXNCdWlsZGVyIGV4dGVuZHMgRGNWYWx1ZXNCdWlsZGVyQmFzZSB7XHJcbiAgcHJpdmF0ZSBkY3Y6IERjVmFsdWVzID0gbnVsbDtcclxuICBwcml2YXRlIHBhcnNlcjogWG1sUGFyc2VyID0gbnVsbDtcclxuXHJcbiAgc2V0IFNlcmlhbGl6ZWREQ1ZhbHModmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5wYXJzZXIuc2V0WE1MZGF0YSh2YWx1ZSk7XHJcbiAgICB0aGlzLnBhcnNlci5zZXRDdXJySW5kZXgoMCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLnBhcnNlciA9IG5ldyBYbWxQYXJzZXIoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBCdWlsZCgpOiBEY1ZhbHVlcyB7XHJcbiAgICB0aGlzLmRjdiA9IG51bGw7XHJcbiAgICBsZXQgZW5kQ29udGV4dDogbnVtYmVyID0gdGhpcy5wYXJzZXIuZ2V0WE1MZGF0YSgpLmluZGV4T2YoWE1MQ29uc3RhbnRzLlRBR19URVJNLCB0aGlzLnBhcnNlci5nZXRDdXJySW5kZXgoKSk7XHJcblxyXG4gICAgaWYgKGVuZENvbnRleHQgIT09IC0xICYmIGVuZENvbnRleHQgPCB0aGlzLnBhcnNlci5nZXRYTUxkYXRhKCkubGVuZ3RoKSB7XHJcbiAgICAgIC8vIGxhc3QgcG9zaXRpb24gb2YgaXRzIHRhZ1xyXG4gICAgICBsZXQgdGFnOiBTdHJpbmcgPSB0aGlzLnBhcnNlci5nZXRYTUxzdWJzdHJpbmcoZW5kQ29udGV4dCk7XHJcbiAgICAgIHRoaXMucGFyc2VyLmFkZDJDdXJySW5kZXgodGFnLmluZGV4T2YoQ29uc3RJbnRlcmZhY2UuTUdfVEFHX0RDX1ZBTFMpICsgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX0RDX1ZBTFMubGVuZ3RoKTtcclxuXHJcbiAgICAgIGxldCB0b2tlbnNWZWN0b3I6IExpc3Q8c3RyaW5nPiA9IFhtbFBhcnNlci5nZXRUb2tlbnModGhpcy5wYXJzZXIuZ2V0WE1Mc3Vic3RyaW5nKGVuZENvbnRleHQpLCBYTUxDb25zdGFudHMuWE1MX0FUVFJfREVMSU0pO1xyXG4gICAgICB0aGlzLmRjdiA9IDxEY1ZhbHVlcz50aGlzLkNyZWF0ZURjVmFsdWVzKCk7XHJcbiAgICAgIHRoaXMuSW5pdERDVmFsdWVzKHRoaXMuZGN2LCB0b2tlbnNWZWN0b3IpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZGN2O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBJbml0aWFsaXplIHRoZSBEY1ZhbHVlcyBhY2NvcmRpbmcgdG8gdGhlIHZhbHVlcyBzZXQgaW4gdGhlIHRva2VucyB2ZWN0b3IuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ0b2tlbnNWZWN0b3JcIj5BIHNldCBvZiBhdHRyaWJ1dGUgdmFsdWUgcGFpcnMgYnVpbHQgYnkgdGhlIFhtbFBhcnNlci48L3BhcmFtPlxyXG4gIHByaXZhdGUgSW5pdERDVmFsdWVzKGRjdjogRGNWYWx1ZXMsIHRva2Vuc1ZlY3RvcjogTGlzdDxzdHJpbmc+KTogdm9pZCB7XHJcbiAgICBsZXQgdHlwZTogU3RvcmFnZUF0dHJpYnV0ZSA9IFN0b3JhZ2VBdHRyaWJ1dGUuTk9ORTtcclxuICAgIGxldCBkaXNwbGF5VmFsdWVzOiBzdHJpbmdbXSA9IG51bGw7XHJcbiAgICBsZXQgc2VyaWFsaXplZExpbmtWYWx1ZXM6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gICAgZm9yIChsZXQgajogbnVtYmVyID0gMDsgaiA8IHRva2Vuc1ZlY3Rvci5sZW5ndGg7IGogKz0gMikge1xyXG4gICAgICBsZXQgYXR0cmlidXRlOiBTdHJpbmcgPSAodG9rZW5zVmVjdG9yLmdldF9JdGVtKGopKTtcclxuICAgICAgbGV0IHZhbHVlU3RyOiBzdHJpbmcgPSAodG9rZW5zVmVjdG9yLmdldF9JdGVtKGogKyAxKSk7XHJcblxyXG4gICAgICBzd2l0Y2ggKGF0dHJpYnV0ZSkge1xyXG4gICAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfSUQ6XHJcbiAgICAgICAgICB0aGlzLlNldElkKGRjdiwgWG1sUGFyc2VyLmdldEludCh2YWx1ZVN0cikpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9UWVBFOlxyXG4gICAgICAgICAgdHlwZSA9IDxTdG9yYWdlQXR0cmlidXRlPnZhbHVlU3RyWzBdO1xyXG4gICAgICAgICAgdGhpcy5TZXRUeXBlKGRjdiwgdHlwZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfRElTUDpcclxuICAgICAgICAgIHZhbHVlU3RyID0gWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKTtcclxuICAgICAgICAgIGRpc3BsYXlWYWx1ZXMgPSB0aGlzLlBhcnNlVmFsdWVzKHZhbHVlU3RyLCBTdG9yYWdlQXR0cmlidXRlLlVOSUNPREUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0xJTktFRDpcclxuICAgICAgICAgIHZhbHVlU3RyID0gWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKTtcclxuICAgICAgICAgIHNlcmlhbGl6ZWRMaW5rVmFsdWVzID0gdmFsdWVTdHI7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfTlVMTF9GTEFHUzpcclxuICAgICAgICAgIHRoaXMuU2V0TnVsbEZsYWdzKGRjdiwgdmFsdWVTdHIpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUV4Y2VwdGlvblRvTG9nV2l0aE1zZyhcImluIERjVmFsdWVzLmluaXRFbGVtZW50cygpIHVua25vd24gYXR0cmlidXRlOiBcIiArIGF0dHJpYnV0ZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5TZXREaXNwbGF5VmFsdWVzKGRjdiwgZGlzcGxheVZhbHVlcyk7XHJcbiAgICBpZiAoc2VyaWFsaXplZExpbmtWYWx1ZXMgPT0gbnVsbClcclxuICAgICAgdGhpcy5TZXRMaW5rVmFsdWVzKGRjdiwgZGlzcGxheVZhbHVlcyk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuU2V0TGlua1ZhbHVlcyhkY3YsIHRoaXMuUGFyc2VWYWx1ZXMoc2VyaWFsaXplZExpbmtWYWx1ZXMsIHR5cGUpKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gVGhpcyBvdmVybG9hZCBvZiB0aGUgUGFyc2VWYWx1ZXMgbWV0aG9kIHNpbXBsaWZpZXMgdGhlIHVzZSBvZiB0aGUgb3JpZ2luYWwgbWV0aG9kIGJ5XHJcbiAgLy8vIGRldGVybWluaW5nIHRoZSB2YWx1ZSBvZiB0aGUgJ3VzZUhleCcgcGFyYW1ldGVyIGJhc2VkIG9uIHRoZSBDbGllbnRNYW5hZ2VyJ3MgbG9nIGxldmVsIGFuZFxyXG4gIC8vLyB0aGUgdHlwZSBvZiB0aGUgc2VyaWFsaXplZCB2YWx1ZXMuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInZhbHVlU3RyXCI+VGhlIHNlcmlhbGl6ZWQgdmFsdWVzIGFzIHJlY2VpdmVkIGZyb20gdGhlIFhNTDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJkYXRhVHlwZVwiPlRoZSBzdG9yYWdlIHR5cGUgb2YgdGhlIHNlcnZpYWxpemVkIHZhbHVlcy48L3BhcmFtPlxyXG4gIHByb3RlY3RlZCBQYXJzZVZhbHVlcyh2YWx1ZVN0cjogc3RyaW5nLCBkYXRhVHlwZTogU3RvcmFnZUF0dHJpYnV0ZSk6IHN0cmluZ1tdIHtcclxuICAgIGxldCB1c2VIZXg6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGlmIChFbnZpcm9ubWVudC5JbnN0YW5jZS5HZXREZWJ1Z0xldmVsKCkgPiAxIHx8XHJcbiAgICAgIGRhdGFUeXBlID09PSBTdG9yYWdlQXR0cmlidXRlLkFMUEhBIHx8IGRhdGFUeXBlID09PSBTdG9yYWdlQXR0cmlidXRlLlVOSUNPREUgfHwgZGF0YVR5cGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQk9PTEVBTikge1xyXG4gICAgICB1c2VIZXggPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN1cGVyLlBhcnNlVmFsdWVzKHZhbHVlU3RyLCBkYXRhVHlwZSwgdXNlSGV4KTtcclxuICB9XHJcbn1cclxuIl19
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWE1MQmFzZWREY1ZhbHVlc0J1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL2RhdGEvWE1MQmFzZWREY1ZhbHVlc0J1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFXLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0QsT0FBTyxFQUFDLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFbkYsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQU0vQyxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsbUJBQW1CO0lBQ3RELEdBQUcsR0FBYSxJQUFJLENBQUM7SUFDckIsTUFBTSxHQUFjLElBQUksQ0FBQztJQUVqQyxJQUFJLGdCQUFnQixDQUFDLEtBQWE7UUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztRQUNoQixJQUFJLFVBQVUsR0FBVyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUU3RyxJQUFJLFVBQVUsS0FBSyxDQUFDLENBQUMsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNLEVBQUU7WUFFckUsSUFBSSxHQUFHLEdBQVcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDMUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLEdBQUcsY0FBYyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUU3RyxJQUFJLFlBQVksR0FBaUIsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsRUFBRSxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDM0gsSUFBSSxDQUFDLEdBQUcsR0FBYSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDO1NBQzNDO1FBQ0QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2xCLENBQUM7SUFNTyxZQUFZLENBQUMsR0FBYSxFQUFFLFlBQTBCO1FBQzVELElBQUksSUFBSSxHQUFxQixnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7UUFDbkQsSUFBSSxhQUFhLEdBQWEsSUFBSSxDQUFDO1FBQ25DLElBQUksb0JBQW9CLEdBQVcsSUFBSSxDQUFDO1FBRXhDLEtBQUssSUFBSSxDQUFDLEdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDdkQsSUFBSSxTQUFTLEdBQVcsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkQsSUFBSSxRQUFRLEdBQVcsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXRELFFBQVEsU0FBUyxFQUFFO2dCQUNqQixLQUFLLFlBQVksQ0FBQyxVQUFVO29CQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7b0JBQzVDLE1BQU07Z0JBQ1IsS0FBSyxZQUFZLENBQUMsWUFBWTtvQkFDNUIsSUFBSSxHQUFxQixRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3JDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUN4QixNQUFNO2dCQUNSLEtBQUssY0FBYyxDQUFDLFlBQVk7b0JBQzlCLFFBQVEsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUN4QyxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ3JFLE1BQU07Z0JBQ1IsS0FBSyxjQUFjLENBQUMsY0FBYztvQkFDaEMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ3hDLG9CQUFvQixHQUFHLFFBQVEsQ0FBQztvQkFDaEMsTUFBTTtnQkFDUixLQUFLLGNBQWMsQ0FBQyxrQkFBa0I7b0JBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO29CQUNqQyxNQUFNO2dCQUNSO29CQUNFLE1BQU0sQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUMsZ0RBQWdELEdBQUcsU0FBUyxDQUFDLENBQUM7b0JBQ3pHLE1BQU07YUFDVDtTQUNGO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUMxQyxJQUFJLG9CQUFvQixJQUFJLElBQUk7WUFDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsYUFBYSxDQUFDLENBQUM7O1lBRXZDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBU1MsV0FBVyxDQUFDLFFBQWdCLEVBQUUsUUFBMEI7UUFDaEUsSUFBSSxNQUFNLEdBQVksS0FBSyxDQUFDO1FBQzVCLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDO1lBQzFDLFFBQVEsS0FBSyxnQkFBZ0IsQ0FBQyxLQUFLLElBQUksUUFBUSxLQUFLLGdCQUFnQixDQUFDLE9BQU8sSUFBSSxRQUFRLEtBQUssZ0JBQWdCLENBQUMsT0FBTyxFQUFFO1lBQ3ZILE1BQU0sR0FBRyxJQUFJLENBQUM7U0FDZjtRQUNELE9BQU8sS0FBSyxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGNWYWx1ZXMsIERjVmFsdWVzQnVpbGRlckJhc2V9IGZyb20gXCJAbWFnaWMteHBhL2d1aVwiO1xyXG5pbXBvcnQge0xvZ2dlciwgU3RvcmFnZUF0dHJpYnV0ZSwgWE1MQ29uc3RhbnRzLCBYbWxQYXJzZXJ9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcbmltcG9ydCB7TGlzdH0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7Q29uc3RJbnRlcmZhY2V9IGZyb20gXCIuLi9Db25zdEludGVyZmFjZVwiO1xyXG5pbXBvcnQge0Vudmlyb25tZW50fSBmcm9tIFwiLi4vZW52L0Vudmlyb25tZW50XCI7XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyAgIGEgY2xhc3MgdGhhdCBob2xkcyBhIGRhdGEgY29udHJvbHMgZGlzcGxheWVkIGFuZCBsaW5rZWQgdmFsdWVzIGVhY2ggaW5zdGFuY2UgaXMgYSB1bmlxdWUgc2V0IG9mIHZhbHVlc1xyXG4vLy8gICBpZGVudGlmaWVkIGJ5IGEgdW5pcXVlIGlkXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBYTUxCYXNlZERjVmFsdWVzQnVpbGRlciBleHRlbmRzIERjVmFsdWVzQnVpbGRlckJhc2Uge1xyXG4gIHByaXZhdGUgZGN2OiBEY1ZhbHVlcyA9IG51bGw7XHJcbiAgcHJpdmF0ZSBwYXJzZXI6IFhtbFBhcnNlciA9IG51bGw7XHJcblxyXG4gIHNldCBTZXJpYWxpemVkRENWYWxzKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMucGFyc2VyLnNldFhNTGRhdGEodmFsdWUpO1xyXG4gICAgdGhpcy5wYXJzZXIuc2V0Q3VyckluZGV4KDApO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5wYXJzZXIgPSBuZXcgWG1sUGFyc2VyKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgQnVpbGQoKTogRGNWYWx1ZXMge1xyXG4gICAgdGhpcy5kY3YgPSBudWxsO1xyXG4gICAgbGV0IGVuZENvbnRleHQ6IG51bWJlciA9IHRoaXMucGFyc2VyLmdldFhNTGRhdGEoKS5pbmRleE9mKFhNTENvbnN0YW50cy5UQUdfVEVSTSwgdGhpcy5wYXJzZXIuZ2V0Q3VyckluZGV4KCkpO1xyXG5cclxuICAgIGlmIChlbmRDb250ZXh0ICE9PSAtMSAmJiBlbmRDb250ZXh0IDwgdGhpcy5wYXJzZXIuZ2V0WE1MZGF0YSgpLmxlbmd0aCkge1xyXG4gICAgICAvLyBsYXN0IHBvc2l0aW9uIG9mIGl0cyB0YWdcclxuICAgICAgbGV0IHRhZzogU3RyaW5nID0gdGhpcy5wYXJzZXIuZ2V0WE1Mc3Vic3RyaW5nKGVuZENvbnRleHQpO1xyXG4gICAgICB0aGlzLnBhcnNlci5hZGQyQ3VyckluZGV4KHRhZy5pbmRleE9mKENvbnN0SW50ZXJmYWNlLk1HX1RBR19EQ19WQUxTKSArIENvbnN0SW50ZXJmYWNlLk1HX1RBR19EQ19WQUxTLmxlbmd0aCk7XHJcblxyXG4gICAgICBsZXQgdG9rZW5zVmVjdG9yOiBMaXN0PHN0cmluZz4gPSBYbWxQYXJzZXIuZ2V0VG9rZW5zKHRoaXMucGFyc2VyLmdldFhNTHN1YnN0cmluZyhlbmRDb250ZXh0KSwgWE1MQ29uc3RhbnRzLlhNTF9BVFRSX0RFTElNKTtcclxuICAgICAgdGhpcy5kY3YgPSA8RGNWYWx1ZXM+dGhpcy5DcmVhdGVEY1ZhbHVlcygpO1xyXG4gICAgICB0aGlzLkluaXREQ1ZhbHVlcyh0aGlzLmRjdiwgdG9rZW5zVmVjdG9yKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmRjdjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gSW5pdGlhbGl6ZSB0aGUgRGNWYWx1ZXMgYWNjb3JkaW5nIHRvIHRoZSB2YWx1ZXMgc2V0IGluIHRoZSB0b2tlbnMgdmVjdG9yLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidG9rZW5zVmVjdG9yXCI+QSBzZXQgb2YgYXR0cmlidXRlIHZhbHVlIHBhaXJzIGJ1aWx0IGJ5IHRoZSBYbWxQYXJzZXIuPC9wYXJhbT5cclxuICBwcml2YXRlIEluaXREQ1ZhbHVlcyhkY3Y6IERjVmFsdWVzLCB0b2tlbnNWZWN0b3I6IExpc3Q8c3RyaW5nPik6IHZvaWQge1xyXG4gICAgbGV0IHR5cGU6IFN0b3JhZ2VBdHRyaWJ1dGUgPSBTdG9yYWdlQXR0cmlidXRlLk5PTkU7XHJcbiAgICBsZXQgZGlzcGxheVZhbHVlczogc3RyaW5nW10gPSBudWxsO1xyXG4gICAgbGV0IHNlcmlhbGl6ZWRMaW5rVmFsdWVzOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICAgIGZvciAobGV0IGo6IG51bWJlciA9IDA7IGogPCB0b2tlbnNWZWN0b3IubGVuZ3RoOyBqICs9IDIpIHtcclxuICAgICAgbGV0IGF0dHJpYnV0ZTogU3RyaW5nID0gKHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqKSk7XHJcbiAgICAgIGxldCB2YWx1ZVN0cjogc3RyaW5nID0gKHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqICsgMSkpO1xyXG5cclxuICAgICAgc3dpdGNoIChhdHRyaWJ1dGUpIHtcclxuICAgICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX0lEOlxyXG4gICAgICAgICAgdGhpcy5TZXRJZChkY3YsIFhtbFBhcnNlci5nZXRJbnQodmFsdWVTdHIpKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfVFlQRTpcclxuICAgICAgICAgIHR5cGUgPSA8U3RvcmFnZUF0dHJpYnV0ZT52YWx1ZVN0clswXTtcclxuICAgICAgICAgIHRoaXMuU2V0VHlwZShkY3YsIHR5cGUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0RJU1A6XHJcbiAgICAgICAgICB2YWx1ZVN0ciA9IFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cik7XHJcbiAgICAgICAgICBkaXNwbGF5VmFsdWVzID0gdGhpcy5QYXJzZVZhbHVlcyh2YWx1ZVN0ciwgU3RvcmFnZUF0dHJpYnV0ZS5VTklDT0RFKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9MSU5LRUQ6XHJcbiAgICAgICAgICB2YWx1ZVN0ciA9IFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cik7XHJcbiAgICAgICAgICBzZXJpYWxpemVkTGlua1ZhbHVlcyA9IHZhbHVlU3RyO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX05VTExfRkxBR1M6XHJcbiAgICAgICAgICB0aGlzLlNldE51bGxGbGFncyhkY3YsIHZhbHVlU3RyKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coXCJpbiBEY1ZhbHVlcy5pbml0RWxlbWVudHMoKSB1bmtub3duIGF0dHJpYnV0ZTogXCIgKyBhdHRyaWJ1dGUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuU2V0RGlzcGxheVZhbHVlcyhkY3YsIGRpc3BsYXlWYWx1ZXMpO1xyXG4gICAgaWYgKHNlcmlhbGl6ZWRMaW5rVmFsdWVzID09IG51bGwpXHJcbiAgICAgIHRoaXMuU2V0TGlua1ZhbHVlcyhkY3YsIGRpc3BsYXlWYWx1ZXMpO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLlNldExpbmtWYWx1ZXMoZGN2LCB0aGlzLlBhcnNlVmFsdWVzKHNlcmlhbGl6ZWRMaW5rVmFsdWVzLCB0eXBlKSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFRoaXMgb3ZlcmxvYWQgb2YgdGhlIFBhcnNlVmFsdWVzIG1ldGhvZCBzaW1wbGlmaWVzIHRoZSB1c2Ugb2YgdGhlIG9yaWdpbmFsIG1ldGhvZCBieVxyXG4gIC8vLyBkZXRlcm1pbmluZyB0aGUgdmFsdWUgb2YgdGhlICd1c2VIZXgnIHBhcmFtZXRlciBiYXNlZCBvbiB0aGUgQ2xpZW50TWFuYWdlcidzIGxvZyBsZXZlbCBhbmRcclxuICAvLy8gdGhlIHR5cGUgb2YgdGhlIHNlcmlhbGl6ZWQgdmFsdWVzLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ2YWx1ZVN0clwiPlRoZSBzZXJpYWxpemVkIHZhbHVlcyBhcyByZWNlaXZlZCBmcm9tIHRoZSBYTUw8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZGF0YVR5cGVcIj5UaGUgc3RvcmFnZSB0eXBlIG9mIHRoZSBzZXJ2aWFsaXplZCB2YWx1ZXMuPC9wYXJhbT5cclxuICBwcm90ZWN0ZWQgUGFyc2VWYWx1ZXModmFsdWVTdHI6IHN0cmluZywgZGF0YVR5cGU6IFN0b3JhZ2VBdHRyaWJ1dGUpOiBzdHJpbmdbXSB7XHJcbiAgICBsZXQgdXNlSGV4OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBpZiAoRW52aXJvbm1lbnQuSW5zdGFuY2UuR2V0RGVidWdMZXZlbCgpID4gMSB8fFxyXG4gICAgICBkYXRhVHlwZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5BTFBIQSB8fCBkYXRhVHlwZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5VTklDT0RFIHx8IGRhdGFUeXBlID09PSBTdG9yYWdlQXR0cmlidXRlLkJPT0xFQU4pIHtcclxuICAgICAgdXNlSGV4ID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBzdXBlci5QYXJzZVZhbHVlcyh2YWx1ZVN0ciwgZGF0YVR5cGUsIHVzZUhleCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -337,4 +337,4 @@ export class EnvParamsTable extends MirrorPrmMap {
337
337
  return offset;
338
338
  }
339
339
  }
340
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW52VmFyaWFibGVzVGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL2Vudi9FbnZWYXJpYWJsZXNUYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsd0NBQXdDLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFckUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBRWpELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUN6RSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFLNUMsTUFBTSxPQUFPLGNBQWUsU0FBUSxZQUEwQjtJQUU1RCxNQUFNLENBQUMsUUFBUSxHQUFtQixJQUFJLGNBQWMsRUFBRSxDQUFDO0lBSXZEO1FBQ0UsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsY0FBYyxDQUFDLGdCQUFnQixDQUFDO0lBQ3BELENBQUM7SUFLRCxHQUFHLENBQUMsQ0FBUztRQUNYLElBQUksT0FBTyxHQUFXLElBQUksQ0FBQztRQUMzQixJQUFJLEdBQUcsR0FB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a0NBQWtDO2dCQUNqRSxVQUFVLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMzRCxJQUFJLEtBQUssR0FBVyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBR2xDLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNuQixVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO2dCQUN0RyxNQUFNLElBQUksQ0FBQyxDQUFDO1lBQ2QsQ0FBQztpQkFDSSxDQUFDO2dCQUNKLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsTUFBTSxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUN0RixNQUFNLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO1lBQzNCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tbWFuZHNQcm9jZXNzb3JCYXNlX1NlbmRpbmdJbnN0cnVjdGlvbn0gZnJvbSBcIi4uL0NvbW1hbmRzUHJvY2Vzc29yQmFzZVwiO1xyXG5pbXBvcnQge01pcnJvclBybU1hcH0gZnJvbSBcIi4uL3V0aWwvUHJtTWFwXCI7XHJcbmltcG9ydCB7Tk51bWJlciwgTlN0cmluZywgU3RyaW5nQnVpbGRlcn0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcblxyXG5pbXBvcnQge0Rpc3BsYXlDb252ZXJ0b3J9IGZyb20gXCJAbWFnaWMteHBhL2d1aVwiO1xyXG5pbXBvcnQge0NvbnN0SW50ZXJmYWNlfSBmcm9tIFwiLi4vQ29uc3RJbnRlcmZhY2VcIjtcclxuaW1wb3J0IHtJQ2xpZW50Q29tbWFuZH0gZnJvbSBcIi4uL2NvbW1hbmRzL0lDbGllbnRDb21tYW5kXCI7XHJcbmltcG9ydCB7Q29tbWFuZEZhY3Rvcnl9IGZyb20gXCIuLi9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9Db21tYW5kRmFjdG9yeVwiO1xyXG5pbXBvcnQge1JlbW90ZUNvbW1hbmRzUHJvY2Vzc29yfSBmcm9tIFwiLi4vcmVtb3RlL1JlbW90ZUNvbW1hbmRzUHJvY2Vzc29yXCI7XHJcbmltcG9ydCB7RW52aXJvbm1lbnR9IGZyb20gXCIuL0Vudmlyb25tZW50XCI7XHJcbmltcG9ydCB7TGFzdEZvY3VzZWRNYW5hZ2VyfSBmcm9tIFwiLi4vcnQvTGFzdEZvY3VzZWRNYW5hZ2VyXCI7XHJcbmltcG9ydCB7QWNjZXNzSGVscGVyfSBmcm9tIFwiLi4vQWNjZXNzSGVscGVyXCI7XHJcbmltcG9ydCB7TWlycm9yU3RyaW5nfSBmcm9tIFwiLi9NaXJyb3JTdHJpbmdcIjtcclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vICAgbWFuYWdlciBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZXNcclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGNsYXNzIEVudlBhcmFtc1RhYmxlIGV4dGVuZHMgTWlycm9yUHJtTWFwPE1pcnJvclN0cmluZz4ge1xyXG5cclxuICBzdGF0aWMgSW5zdGFuY2U6IEVudlBhcmFtc1RhYmxlID0gbmV3IEVudlBhcmFtc1RhYmxlKCk7XHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENUT1JcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcihNaXJyb3JTdHJpbmcpO1xyXG4gICAgdGhpcy5taXJyb3JlZElEID0gQ29uc3RJbnRlcmZhY2UuTUdfVEFHX0VOVl9QQVJBTTtcclxuICB9XHJcblxyXG4gIC8vIENoZWNrIGlmIHRoZSB2YWx1ZSBzaG91bGQgYmUgcmV0dXJuZWQgZnJvbSB0aGUgZW52aXJvbm1lbnQuXHJcbiAgLy8gVmVyaWZ5IHRoZSBzZWN0aW9uIG5hbWUgZXhpc3RzIGJlZm9yZSBnZXR0aW5nIHRoZSB2YWx1ZSBmcm9tIHRoZSBiYXNlIGNsYXNzLlxyXG4gIC8vIFJldHVybiBudWxsIGlmIHRoZSB2YWx1ZSBkb2VzIG5vdCBleGlzdC5cclxuICBnZXQoczogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCB2YWxOYW1lOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgbGV0IHJldDogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgICAvLyBJZiBzZWN0aW9uIGlzIG5vdCBkZWZpbmVkLCBhZGQgdGhlIGRlZmF1bHQgc2VjdGlvblxyXG4gICAgaWYgKHMuY2hhckF0KDApICE9PSAnWycpIHtcclxuICAgICAgdmFsTmFtZSA9IHM7XHJcbiAgICAgIHMgPSBOU3RyaW5nLkluc2VydChzLCAwLCBDb25zdEludGVyZmFjZS5JTklfU0VDVElPTl9NQUdJQ19FTlZfQlJBQ0tFVFMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGlmIHdlIGRvIGhhdmUgdGhlIHNlY3Rpb24gbmFtZSxhYW5kIGl0IGlzIE1BR0lDX0VOViwgd2UgbmVlZCB0aGUgdmFyaWFibGUncyBuYW1lXHJcbiAgICBlbHNlIGlmIChzLnN0YXJ0c1dpdGgoQ29uc3RJbnRlcmZhY2UuSU5JX1NFQ1RJT05fTUFHSUNfRU5WX0JSQUNLRVRTKSlcclxuICAgICAgdmFsTmFtZSA9IHMuc3Vic3RyKENvbnN0SW50ZXJmYWNlLklOSV9TRUNUSU9OX01BR0lDX0VOVl9CUkFDS0VUUy5sZW5ndGgpO1xyXG5cclxuICAgIC8vIGlmIGl0IGlzIG5vdCBhIGxvZ2ljYWwgbmFtZSwgaXQgaXMgY2FzZSBpbnNlbnNpdGl2ZVxyXG4gICAgaWYgKCFzLnN0YXJ0c1dpdGgoQ29uc3RJbnRlcmZhY2UuSU5JX1NFQ1RJT05fTE9HSUNBTF9OQU1FU19CUkFDS0VUUykpXHJcbiAgICAgIHMgPSBzLnRvVXBwZXJDYXNlKCk7XHJcbiAgICAvLyBjaGVjayB0aGUgdmFsdWUncyBuYW1lIHRvIHNlZSBpZiB3ZSBuZWVkIHRvIGdldCBpdCBmcm9tIHRoZSBydW50aW1lIGVudmlyb25tZW50XHJcbiAgICBpZiAodmFsTmFtZSAhPT0gbnVsbClcclxuICAgICAgcmV0ID0gdGhpcy5nZXRGcm9tRW52aXJvbm1lbnQodmFsTmFtZSk7XHJcblxyXG4gICAgaWYgKHJldCAhPT0gbnVsbClcclxuICAgICAgcmV0dXJuIHJldDtcclxuXHJcbiAgICAvLyB2YWx1ZSBub3QgaW4gcnVudGltZSBlbnZpcm9ubWVudCAtIGdldCBpdCBmcm9tIHRoZSB0YWJsZVxyXG4gICAgdHJ5IHtcclxuICAgICAgbGV0IHJlc3VsdE9iamVjdDogTWlycm9yU3RyaW5nID0gc3VwZXIuZ2V0dmFsdWUocyk7XHJcblxyXG4gICAgICBpZiAocmVzdWx0T2JqZWN0ICE9PSBudWxsKSB7XHJcbiAgICAgICAgcmV0ID0gcmVzdWx0T2JqZWN0LlRvU3RyaW5nKCk7XHJcblxyXG4gICAgICAgIC8vIElmIGl0IG1heSBiZSBhIHZhcmlhYmxlIHRoYXQgYmVsb25ncyB0byB0aGUgc2VydmVyJ3MgY29udGV4dC9jb21wb25lbnQsIHByb2Nlc3MgaXRcclxuICAgICAgICBpZiAodmFsTmFtZSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgcmV0ID0gdGhpcy5nZXRQcm9jZXNzZWRWYWx1ZSh2YWxOYW1lLCByZXQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4X0JFKSB7XHJcbiAgICAgIC8vIGlmIHN0cmluZyBub3QgaW4gZGljdGlvbmFyeVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJldDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm4gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGluIHBsYWNlIFwibnVtYmVyXCIgaW4gc2VjdGlvbiBcInNlY3Rpb25cIlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzZWN0aW9uXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm51bWJlclwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBnZXRsbihzZWN0aW9uOiBzdHJpbmcsIG51bWJlcjogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHNlY3Rpb24gPSBzZWN0aW9uLnRvVXBwZXJDYXNlKCkudHJpbSgpO1xyXG4gICAgbGV0IHNlY3Rpb25Gb3VuZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIGxldCBrZXlzOiBzdHJpbmdbXSA9IHRoaXMudmFsdWVzLktleXM7XHJcblxyXG4gICAgLy8gTG9vcCBvdmVyIGtleXMsIGZpbmQgdGhvc2UgdGhhdCBzdGFydCB3aXRoIG91ciBzZWN0aW9uIG5hbWVcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQga2V5OiBzdHJpbmcgPSBrZXlzW2ldO1xyXG5cclxuICAgICAgaWYgKGtleS5zdGFydHNXaXRoKHNlY3Rpb24pKSB7XHJcbiAgICAgICAgc2VjdGlvbkZvdW5kID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgaWYgKG51bWJlciA+IDEpXHJcbiAgICAgICAgICBudW1iZXItLTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgLy8gZm91bmQgd2hhdCB3ZSBuZWVkZWQsIGJ1aWxkIHRoZSBcIm5hbWU9dmFsdWVcIiBzdHJpbmdcclxuICAgICAgICAgIHJldHVybiBrZXkuc3Vic3RyKHNlY3Rpb24ubGVuZ3RoKSArIFwiPVwiICsgdGhpcy52YWx1ZXMuZ2V0X0l0ZW0oa2V5KTtcclxuICAgICAgfVxyXG4gICAgICAvLyBJZiB3ZSBnb3QgdG8gdGhlIHJpZ2h0IHNlY3Rpb24gYW5kIHBhc3NlZCBpdCwgbm8gbmVlZCB0byBjb250aW51ZSBsb29raW5nXHJcbiAgICAgIGVsc2UgaWYgKHNlY3Rpb25Gb3VuZClcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICB0cnkgYW5kIGdldCB0aGUgZW52IHZhcmlhYmxlJ3MgdmFsdWUgZnJvbSB0aGUgcnVudGltZSBlbnZpcm9ubWVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ2YWxOYW1lXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgZ2V0RnJvbUVudmlyb25tZW50KHZhbE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKHZhbE5hbWUudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfREVDSU1BTF9TRVBBUkFUT1I6XHJcbiAgICAgICAgcmV0dXJuIEVudmlyb25tZW50Lkluc3RhbmNlLkdldERlY2ltYWwoKTtcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0RBVEU6XHJcbiAgICAgICAgcmV0dXJuIERpc3BsYXlDb252ZXJ0b3IuSW5zdGFuY2UuZ2V0RGF0ZUNoYXIoKS50b1N0cmluZygpO1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfVElNRTpcclxuICAgICAgICByZXR1cm4gRW52aXJvbm1lbnQuSW5zdGFuY2UuR2V0VGltZSgpO1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfT1dORVI6XHJcbiAgICAgICAgcmV0dXJuIEVudmlyb25tZW50Lkluc3RhbmNlLmdldE93bmVyKCk7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9EQVRFTU9ERTpcclxuICAgICAgICByZXR1cm4gRW52aXJvbm1lbnQuSW5zdGFuY2UuR2V0RGF0ZU1vZGUoTGFzdEZvY3VzZWRNYW5hZ2VyLkluc3RhbmNlLmdldEN1cnJUYXNrKCkuZ2V0Q29tcElkeCgpKTtcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0NFTlRVUlk6XHJcbiAgICAgICAgcmV0dXJuIEVudmlyb25tZW50Lkluc3RhbmNlLkdldENlbnR1cnkoTGFzdEZvY3VzZWRNYW5hZ2VyLkluc3RhbmNlLmdldEN1cnJUYXNrKCkuZ2V0Q29tcElkeCgpKS50b1N0cmluZygpO1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfSURMRVRJTUU6XHJcbiAgICAgICAgcmV0dXJuIEVudmlyb25tZW50Lkluc3RhbmNlLmdldElkbGVUaW1lKExhc3RGb2N1c2VkTWFuYWdlci5JbnN0YW5jZS5nZXRDdXJyVGFzaygpLmdldENvbXBJZHgoKSkudG9TdHJpbmcoKTtcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX1VQRF9JTl9RVUVSWTpcclxuICAgICAgICByZXR1cm4gRW52aXJvbm1lbnQuSW5zdGFuY2UuYWxsb3dVcGRhdGVJblF1ZXJ5TW9kZShMYXN0Rm9jdXNlZE1hbmFnZXIuSW5zdGFuY2UuZ2V0Q3VyclRhc2soKS5nZXRDb21wSWR4KCkpLnRvU3RyaW5nKCk7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9DUkVfSU5fTU9ESUZZOlxyXG4gICAgICAgIHJldHVybiBFbnZpcm9ubWVudC5JbnN0YW5jZS5hbGxvd0NyZWF0ZUluTW9kaWZ5TW9kZShMYXN0Rm9jdXNlZE1hbmFnZXIuSW5zdGFuY2UuZ2V0Q3VyclRhc2soKS5nZXRDb21wSWR4KCkpLnRvU3RyaW5nKCk7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9DT05URVhUX0lOQUNUSVZJVFlfVElNRU9VVDpcclxuICAgICAgICByZXR1cm4gRW52aXJvbm1lbnQuSW5zdGFuY2UuZ2V0Q29udGV4dEluYWN0aXZpdHlUaW1lb3V0KCkudG9TdHJpbmcoKTtcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0NPTlRFWFRfVU5MT0FEX1RJTUVPVVQ6XHJcbiAgICAgICAgcmV0dXJuIEVudmlyb25tZW50Lkluc3RhbmNlLmdldENvbnRleHRVbmxvYWRUaW1lb3V0KCkudG9TdHJpbmcoKTtcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX1RFUk1JTkFMOlxyXG4gICAgICAgIHJldHVybiBFbnZpcm9ubWVudC5JbnN0YW5jZS5nZXRUZXJtaW5hbCgpLnRvU3RyaW5nKCk7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9XRUJDTElFTlRfUkVJTklUX1NFU1NJT046XHJcbiAgICAgICAgcmV0dXJuIEVudmlyb25tZW50Lkluc3RhbmNlLmdldFdlYkNsaWVudFJlaW5pdFNlc3Npb24oKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFRoZSBmdW5jdGlvbiBwcm9jZXNzZXMgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlJ3MgdmFsdWUsIHRvIHJldHVybiBpdCBpbiB0aGUgcmlnaHRcclxuICAvLy8gICBmb3JtYXQgZm9yIGNvbnRleHQvY29tcG9uZW50IHZhbHVlcyB0aGF0IGFyZSBub3QgdXNlZCBieSB0aGUgY2xpZW50LlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ2YWxOYW1lXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgZ2V0UHJvY2Vzc2VkVmFsdWUodmFsTmFtZTogc3RyaW5nLCB2YWw6IHN0cmluZyk6IHN0cmluZyB7XHJcblxyXG4gICAgLy8gVGhlIGxpc3Qgb2YgdmFyaWFibGVzIGlzIHNpbWlsYXIgdG8gdGhhdCBpbiB0aGUgc2VydmVyLCBpbiBlbnZfY29tcC5jcHAsIEVOVjo6ZW52X3ZhbF90b19zdHJcclxuICAgIHN3aXRjaCAodmFsTmFtZS50b0xvd2VyQ2FzZSgpKSB7XHJcblxyXG4gICAgICAvLyB2YXJpYWJsZSBpcyBpbnRlZ2VyXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9IVFRQX1RJTUVPVVQ6XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9SVEZfQlVGRkVSX1NJWkU6XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9SQU5HRV9QT1BfVElNRTpcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX1RFTVBfUE9QX1RJTUU6XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9CQVRDSF9QQUlOVF9USU1FOlxyXG4gICAgICAgIHJldHVybiBOTnVtYmVyLlBhcnNlKHZhbCkudG9TdHJpbmcoKTtcclxuXHJcbiAgICAgIC8vIHZhcmlhYmxlIGlzIGJvb2xlYW5cclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX1VTRV9TSUdORURfQlJPV1NFUl9DTElFTlQ6XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9DTE9TRV9QUklOVEVEX1RBQkxFU19JTl9TVUJUQVNLUzpcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0dFTkVSSUNfVEVYVF9QUklOVElORzpcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0hJR0hfUkVTT0xVVElPTl9QUklOVDpcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX01FUkdFX1RSSU06XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9PUklHSU5BTF9JTUFHRV9MT0FEOlxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfUFJJTlRfREFUQV9UUklNOlxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfUFNDUklQVF9QUklOVF9OVDpcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX1NQRUNJQUxfQ09OVl9BRERfU0xBU0g6XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9TUEVDSUFMX0ZVTExfRVhQQU5EX1BSSU5UOlxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfU1BFQ0lBTF9GVUxMX1RFWFQ6XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9TUEVDSUFMX0xBU1RfTElORV9QUklOVDpcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX1NQRUNJQUxfUFJJTlRFUl9PRU06XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9FTUJFRF9GT05UUzpcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0NFTlRFUl9TQ1JFRU5fSU5fT05MSU5FOlxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfUkVQT1NJVElPTl9BRlRFUl9NT0RJRlk6XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9JU0FNX1RSQU5TQUNUSU9OOlxyXG4gICAgICAgIHJldHVybiAodmFsWzBdID09PSAnWScgfHwgdmFsWzBdID09PSAnMScpID8gXCJZXCIgOiBcIk5cIjtcclxuXHJcbiAgICAgIC8vIHZhcmlhYmxlIGlzIGEgY2hhcmFjdGVyXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9USU1FX1NFUEFSQVRPUjpcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0lPVElNSU5HOlxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfVEhPVVNBTkRfU0VQQVJBVE9SOlxyXG4gICAgICAgIHJldHVybiB2YWxbMF0udG9TdHJpbmcoKTtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gdmFsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFNldCB0aGUgdmFyaWFibGU6XHJcbiAgLy8vICAgMS4gcGFyc2UgdGhlIHN0cmluZ1xyXG4gIC8vLyAgIDIuIGNyZWF0ZSB0aGUgcGFyYW0vdmFsdWUgY291cGxlc1xyXG4gIC8vLyAgIDMuIGZvciBlYWNoIGNvdXBsZTpcclxuICAvLy8gICAzYS4gdmVyaWZ5IHRoZSBzZWN0aW9uIG5hbWUgZXhpc3RzXHJcbiAgLy8vICAgM2IuIHZlcmlmeSB0aGUgdmFyaWFibGUgaXMgbm90IHVubW9kaWZpZWFibGVcclxuICAvLy8gICAzYy4gc2V0IHRoZSB2YXJpYWJsZSBpbiB0aGUgYmFzZSBjbGFzc1xyXG4gIC8vLyAgIDNkLiBjaGVjayBhbmQgY2hhbmdlIHRoZSBlbnZpcm9ubWVudCBkYXRhIGlmIG5lZWRlZFxyXG4gIC8vLyAgIDQuIElmIHJlcXVpcmVkLCBzZW5kIHRoZSBkYXRhIHRvIHRoZSBzZXJ2ZXJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic1wiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ1cGRhdGVJbmlcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgcHVibGljIGFzeW5jIHNldChzOiBzdHJpbmcsIHVwZGF0ZUluaTogYm9vbGVhbik6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgbGV0IGFsbE9LOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIGxldCBzZW5kVG9TZXJ2ZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxldCBuYW1lOiBzdHJpbmcsIHZhbDtcclxuICAgIGxldCBpOiBudW1iZXI7XHJcbiAgICBsZXQgc2VydmVyVmFsOiBzdHJpbmcgPSBzO1xyXG5cclxuICAgIC8vIFN0cmluZyBwYXJzaW5nOiBldmVyeSBudW1iZXIgaW4gJ29mZnNldHMnIHNob3dzIHRoZSBvZmZzZXQgdG8gdGhlIGJlZ2lubmluZyBvZiBhIG5hbWUgb3IgdmFsdWVcclxuICAgIC8vIDFzdCBvZmZzZXQgaXMgYWx3YXlzIDBcclxuICAgIGxldCBvZmZzZXRzOiBudW1iZXJbXSA9IG5ldyBBcnJheShzLmxlbmd0aCArIDEpO1xyXG4gICAgbGV0IG9mZnNldHNDaGFyczogc3RyaW5nW10gPSBuZXcgQXJyYXkocy5sZW5ndGggKyAxKTtcclxuXHJcbiAgICBvZmZzZXRzWzBdID0gMDtcclxuICAgIG9mZnNldHNDaGFyc1swXSA9ICdzJztcclxuICAgIGxldCBuZXh0T2Zmc2V0OiBudW1iZXIgPSAxO1xyXG5cclxuICAgIC8vIExvb3Agb3ZlciBzdHJpbmcsIGZpbmQgYWxsIHRoZSAnPScsICcsJyBhbmQgJyonIHRoYXQgYXJlIG5vdCBwcmVjZWVkZWQgYnkgYSAnXFwnLlxyXG4gICAgZm9yIChpID0gMTsgaSA8IHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKChzW2ldID09PSAnPScgfHwgc1tpXSA9PT0gJywnKSAmJiBzW2kgLSAxXSAhPT0gJ1xcXFwnKSB7XHJcbiAgICAgICAgb2Zmc2V0c1tuZXh0T2Zmc2V0XSA9IGkgKyAxO1xyXG4gICAgICAgIG9mZnNldHNDaGFyc1tuZXh0T2Zmc2V0XSA9IHNbaV07XHJcbiAgICAgICAgbmV4dE9mZnNldCsrO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChzW2ldID09PSAnKicpIHtcclxuICAgICAgICBzID0gTlN0cmluZy5SZW1vdmUocywgaSwgMSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHNbaV0gPT09ICdcXFxcJykge1xyXG4gICAgICAgIHMgPSBOU3RyaW5nLlJlbW92ZShzLCBpLCAxKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIGFkZCB0aGUgZmluYWwgb2Zmc2V0IGZvciB0aGUgZW5kIG9mIHRoZSBzdHJpbmdcclxuICAgIG9mZnNldHNbbmV4dE9mZnNldF0gPSBzLmxlbmd0aCArIDE7XHJcbiAgICBvZmZzZXRzQ2hhcnNbbmV4dE9mZnNldF0gPSAnXFwwJztcclxuICAgIG5leHRPZmZzZXQrKztcclxuXHJcbiAgICAvLyBnbyBvdmVyIHRoZSBjYWxjdWxhdGVkIG9mZnNldHMuIHRoZSBsYXN0IG9uZSBpcyB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHNvIGl0IGlzIGlnbm9yZWRcclxuICAgIGZvciAoaSA9IDA7IGkgPCBuZXh0T2Zmc2V0IC0gMTsgaSsrKSB7XHJcbiAgICAgIC8vIGdldCB0aGUgdmFyaWFibGUgbmFtZVxyXG4gICAgICBuYW1lID0gcy5zdWJzdHIob2Zmc2V0c1tpXSwgb2Zmc2V0c1tpICsgMV0gLSBvZmZzZXRzW2ldIC0gMSk7XHJcblxyXG4gICAgICAvLyBpcyB0aGVyZSBhIHZhbHVlLCBvciBpcyBpdCBhbiBlbXB0eSB2YXJpYWJsZT9cclxuICAgICAgaWYgKHNbb2Zmc2V0c1tpICsgMV0gLSAxXSA9PT0gJz0nKSB7XHJcbiAgICAgICAgaSsrO1xyXG4gICAgICAgIGxldCB2YWxJbml0OiBudW1iZXIgPSBpO1xyXG4gICAgICAgIGxldCBhbGxvd2VkU2VwYXJhdG9yczogbnVtYmVyID0gdGhpcy5nZXRBbGxvd2VkU2VwYXJhdG9ycyhuYW1lKTtcclxuICAgICAgICBmb3IgKGxldCBzZXA6IG51bWJlciA9IDA7IHNlcCA8IGFsbG93ZWRTZXBhcmF0b3JzOyBzZXArKykge1xyXG4gICAgICAgICAgaWYgKG9mZnNldHNDaGFyc1tpICsgMV0gPT09ICcsJylcclxuICAgICAgICAgICAgaSsrO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gZ2V0IHRoZSB2YWx1ZVxyXG4gICAgICAgIHZhbCA9IHMuc3Vic3RyKG9mZnNldHNbdmFsSW5pdF0sIG9mZnNldHNbaSArIDFdIC0gb2Zmc2V0c1t2YWxJbml0XSAtIDEpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB2YWwgPSBudWxsO1xyXG5cclxuICAgICAgLy8gaXMgaXQgYSByZXNlcnZlZCB2YXJpYWJsZT9cclxuICAgICAgaWYgKHRoaXMuaXNSZXNlcnZlZExvZ2ljYWxOYW1lKG5hbWUpKSB7XHJcbiAgICAgICAgYWxsT0sgPSBmYWxzZTtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gaWYgdGhlcmUncyBubyBzZWN0aW9uIG5hbWUsIGFkZCB0aGUgZGVmYXVsdCBvbmVcclxuICAgICAgaWYgKG5hbWVbMF0gIT09ICdbJylcclxuICAgICAgICBuYW1lID0gTlN0cmluZy5JbnNlcnQobmFtZSwgMCwgQ29uc3RJbnRlcmZhY2UuSU5JX1NFQ1RJT05fTUFHSUNfRU5WX0JSQUNLRVRTKTtcclxuXHJcbiAgICAgIC8vIElmIGl0J3Mgbm90IGEgbG9naWNhbCBuYW1lLCBpdCBpcyBjYXNlIGluc2Vuc2l0aXZlXHJcbiAgICAgIGlmICghbmFtZS5zdGFydHNXaXRoKENvbnN0SW50ZXJmYWNlLklOSV9TRUNUSU9OX0xPR0lDQUxfTkFNRVNfQlJBQ0tFVFMpKVxyXG4gICAgICAgIG5hbWUgPSBuYW1lLnRvVXBwZXJDYXNlKCk7XHJcbiAgICAgIG5hbWUgPSBuYW1lLnRyaW0oKTtcclxuICAgICAgdmFsID0gdmFsLnRyaW0oKTtcclxuICAgICAgc2VuZFRvU2VydmVyID0gdHJ1ZTtcclxuICAgICAgaWYgKCFOU3RyaW5nLklzTnVsbE9yRW1wdHkodmFsKSB8fFxyXG4gICAgICAgIG5hbWUuc3RhcnRzV2l0aChDb25zdEludGVyZmFjZS5JTklfU0VDVElPTl9MT0dJQ0FMX05BTUVTX0JSQUNLRVRTKSkge1xyXG4gICAgICAgIC8vIElmIHdlJ3JlIGdvaW5nIHRvIHNlbmQgaXQgdG8gdGhlIHNlcnZlciBOT1csIHdlIGRvbid0IG5lZWQgaXQgaW4gdGhlIGNoYW5nZXMgbGlzdFxyXG4gICAgICAgIHN1cGVyLnNldFZhbHVlKG5hbWUsIG5ldyBNaXJyb3JTdHJpbmcodmFsKSwgIXVwZGF0ZUluaSk7XHJcbiAgICAgICAgdGhpcy5jaGVja1NldEluRW52aXJvbm1lbnQobmFtZSwgdmFsKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlXHJcbiAgICAgICAgc3VwZXIucmVtb3ZlKG5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGlmIHNob3VsZCB1cGRhdGUgdGhlIGluaSBmaWxlLCBhbmQgd2UgaGF2ZSBtb2RpZmllZCB2YXJpYWJsZXMsIHVwZGF0ZSB0aGUgc2VydmVyLlxyXG4gICAgaWYgKHVwZGF0ZUluaSAmJiBzZW5kVG9TZXJ2ZXIpIHtcclxuICAgICAgbGV0IGNtZDogSUNsaWVudENvbW1hbmQgPSBDb21tYW5kRmFjdG9yeS5DcmVhdGVJbmlwdXRGb3JjZVdyaXRlQ29tbWFuZChzZXJ2ZXJWYWwpO1xyXG4gICAgICBBY2Nlc3NIZWxwZXIubWdEYXRhVGFibGUuZ2V0TUdEYXRhKDApLkNtZHNUb1NlcnZlci5BZGQoY21kKTtcclxuXHJcbiAgICAgIC8vIGV4ZWN1dGUgY2xpZW50IHRvIHNlcnZlciBjb21tYW5kc1xyXG4gICAgICBhd2FpdCBSZW1vdGVDb21tYW5kc1Byb2Nlc3Nvci5HZXRJbnN0YW5jZSgpLkV4ZWN1dGUoQ29tbWFuZHNQcm9jZXNzb3JCYXNlX1NlbmRpbmdJbnN0cnVjdGlvbi5PTkxZX0NPTU1BTkRTKTtcclxuICAgIH1cclxuICAgIHJldHVybiBhbGxPSztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBDaGVja3MgaWYgdGhlIHZhcmlhYmxlIGlzIGEgcmVzZXJ2ZWQgbG9naWNhbCBuYW1lXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm5hbWVcIj4gZW52IHZhcmlhYmxlIG5hbWUgPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHRydWUgaWYgaXQgaXMgcmVzZXJ2ZWQgPC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgaXNSZXNlcnZlZExvZ2ljYWxOYW1lKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG5cclxuICAgIC8vIFJlc2VydmVkIGxvZ2ljYWwgbmFtZXMgbWF5IGJlIGFjY2Vzc2VkIHdpdGhvdXQgYSBzZWN0aW9uIG5hbWUsIGJ1dCBhcmUgc3RvcmVkIGFzIGxvZ2ljYWwgbmFtZXMsXHJcbiAgICAvLyBzbyBpZiB3ZSBkb24ndCBoYXZlIGEgc2VjdGlvbiBuYW1lLCBpbnNlcnQgdGhlIGxvZ2ljYWwgc2VjdGlvbiBhbmQgc2VhcmNoIHRoZSB0YWJsZVxyXG4gICAgaWYgKCFuYW1lLnN0YXJ0c1dpdGgoXCJbXCIpKSB7XHJcbiAgICAgIG5hbWUgPSBOU3RyaW5nLkluc2VydChuYW1lLCAwLCBDb25zdEludGVyZmFjZS5JTklfU0VDVElPTl9MT0dJQ0FMX05BTUVTX0JSQUNLRVRTKTtcclxuICAgICAgaWYgKHRoaXMudmFsdWVzLkNvbnRhaW5zS2V5KG5hbWUpICYmIHRoaXMudmFsdWVzLmdldF9JdGVtKG5hbWUpLmlzUmVzZXJ2ZWQoKSlcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSBudW1iZXIgb2Ygc2VwZXJhdG9ycyBhbGxvd2VkIGZvciBlbnRyaWVzIG9mIHRoaXMgc2VjdGlvbi4gbnVtYmVyIGFyZSBiYXNlZCBvblxyXG4gIC8vLyAgIGRhdGEgaW4gZW52X2tlcm4uY3BwOiBlbnZfZGVmX3BhcnNlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm5hbWVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBnZXRBbGxvd2VkU2VwYXJhdG9ycyhuYW1lOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgaWYgKG5hbWUuY2hhckF0KDApICE9PSAnWycpXHJcbiAgICAgIHJldHVybiAwO1xyXG5cclxuICAgIGxldCBzZWN0aW9uOiBzdHJpbmcgPSBuYW1lLnN1YnN0cigxLCBuYW1lLmluZGV4T2YoJ10nKSAvKiddJyovIC0gMSk7XHJcbiAgICBsZXQgcGFyYW06IHN0cmluZyA9IG5hbWUuc3Vic3RyKG5hbWUuaW5kZXhPZignXScpIC8qJ10nKi8gKyAxKTtcclxuXHJcbiAgICBzd2l0Y2ggKHNlY3Rpb24udG9VcHBlckNhc2UoKSkge1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLklOSV9TRUNUSU9OX01BR0lDX0VOVjpcclxuICAgICAgICBpZiAocGFyYW0udG9VcHBlckNhc2UoKSA9PT0gQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9MQU5HVUFHRS50b1VwcGVyQ2FzZSgpKVxyXG4gICAgICAgICAgcmV0dXJuIDk5OTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5JTklfU0VDVElPTl9NQUdJQ19TWVNURU1TOlxyXG4gICAgICAgIHJldHVybiA4O1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLklOSV9TRUNUSU9OX01BR0lDX0RCTVM6XHJcbiAgICAgICAgcmV0dXJuIDEzO1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLklOSV9TRUNUSU9OX01BR0lDX1NFUlZFUlM6XHJcbiAgICAgICAgcmV0dXJuIDY7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuSU5JX1NFQ1RJT05fTUFHSUNfQ09NTVM6XHJcbiAgICAgICAgcmV0dXJuIDI7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuSU5JX1NFQ1RJT05fTUFHSUNfUFJJTlRFUlM6XHJcbiAgICAgICAgcmV0dXJuIDM7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuSU5JX1NFQ1RJT05fTUFHSUNfU1lTVEVNX01FTlU6XHJcbiAgICAgICAgcmV0dXJuIDExO1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLklOSV9TRUNUSU9OX01BR0lDX0RBVEFCQVNFUzpcclxuICAgICAgICByZXR1cm4gMjE7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuSU5JX1NFQ1RJT05fTUFHSUNfTEFOR1VBR0U6XHJcbiAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuSU5JX1NFQ1RJT05fTUFHSUNfU0VSVklDRVM6XHJcbiAgICAgICAgcmV0dXJuIDg7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuSU5JX1NFQ1RJT05fVE9PTFNfTUVOVTpcclxuICAgICAgICByZXR1cm4gNztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBDaGVjayBpZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgY2hhbmdlIGFmZmVjdHMgdGhlIGVudmlyb25tZW50IHZhbHVlcyxcclxuICAvLy8gICBhbmQgY2hhbmdlIHRoZSBlbnZpcm9ubWVudCBkYXRhIGFjY29yZGluZ2x5XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm5hbWVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidmFsXCI+PC9wYXJhbT5cclxuICBwcml2YXRlIGNoZWNrU2V0SW5FbnZpcm9ubWVudChuYW1lOiBzdHJpbmcsIHZhbDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAobmFtZS5zdGFydHNXaXRoKENvbnN0SW50ZXJmYWNlLklOSV9TRUNUSU9OX01BR0lDX0VOVl9CUkFDS0VUUykpIHtcclxuICAgICAgbmFtZSA9IG5hbWUuc3Vic3RyKENvbnN0SW50ZXJmYWNlLklOSV9TRUNUSU9OX01BR0lDX0VOVl9CUkFDS0VUUy5sZW5ndGgpO1xyXG5cclxuICAgICAgc3dpdGNoIChuYW1lLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfREVDSU1BTF9TRVBBUkFUT1I6XHJcbiAgICAgICAgICBFbnZpcm9ubWVudC5JbnN0YW5jZS5zZXREZWNpbWFsU2VwYXJhdG9yKHZhbFswXSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfREFURTpcclxuICAgICAgICAgIERpc3BsYXlDb252ZXJ0b3IuSW5zdGFuY2Uuc2V0RGF0ZUNoYXIodmFsWzBdLmNoYXJDb2RlQXQoMCkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX1RJTUU6XHJcbiAgICAgICAgICBFbnZpcm9ubWVudC5JbnN0YW5jZS5zZXRUaW1lU2VwYXJhdG9yKHZhbFswXSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfT1dORVI6XHJcbiAgICAgICAgICBFbnZpcm9ubWVudC5JbnN0YW5jZS5zZXRPd25lcih2YWwpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0RBVEVNT0RFOlxyXG4gICAgICAgICAgRW52aXJvbm1lbnQuSW5zdGFuY2Uuc2V0RGF0ZU1vZGUoTGFzdEZvY3VzZWRNYW5hZ2VyLkluc3RhbmNlLmdldEN1cnJUYXNrKCkuZ2V0Q29tcElkeCgpLCB2YWxbMF0pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0NFTlRVUlk6XHJcbiAgICAgICAgICBFbnZpcm9ubWVudC5JbnN0YW5jZS5zZXRDZW50dXJ5KExhc3RGb2N1c2VkTWFuYWdlci5JbnN0YW5jZS5nZXRDdXJyVGFzaygpLmdldENvbXBJZHgoKSwgTk51bWJlci5QYXJzZSh2YWwpKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9JRExFVElNRTpcclxuICAgICAgICAgIEVudmlyb25tZW50Lkluc3RhbmNlLnNldElkbGVUaW1lKExhc3RGb2N1c2VkTWFuYWdlci5JbnN0YW5jZS5nZXRDdXJyVGFzaygpLmdldENvbXBJZHgoKSwgTk51bWJlci5QYXJzZSh2YWwpKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9VUERfSU5fUVVFUllfTE9XRVI6XHJcbiAgICAgICAgICBFbnZpcm9ubWVudC5JbnN0YW5jZS5zZXRBbGxvd1VwZGF0ZUluUXVlcnlNb2RlKExhc3RGb2N1c2VkTWFuYWdlci5JbnN0YW5jZS5nZXRDdXJyVGFzaygpLmdldENvbXBJZHgoKSxcclxuICAgICAgICAgICAgdmFsWzBdID09PSAnMScpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0NSRV9JTl9NT0RJRllfTE9XRVI6XHJcbiAgICAgICAgICBFbnZpcm9ubWVudC5JbnN0YW5jZS5zZXRBbGxvd0NyZWF0ZUluTW9kaWZ5TW9kZShMYXN0Rm9jdXNlZE1hbmFnZXIuSW5zdGFuY2UuZ2V0Q3VyclRhc2soKS5nZXRDb21wSWR4KCksXHJcbiAgICAgICAgICAgIHZhbFswXSA9PT0gJzEnKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9DT05URVhUX0lOQUNUSVZJVFlfVElNRU9VVF9MT1dFUjpcclxuICAgICAgICAgIEVudmlyb25tZW50Lkluc3RhbmNlLnNldENvbnRleHRJbmFjdGl2aXR5VGltZW91dChOTnVtYmVyLlBhcnNlKHZhbCkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0NPTlRFWFRfSU5BQ1RJVklUWV9XQVJOSU5HX1RJTUVfTE9XRVI6XHJcbiAgICAgICAgICBFbnZpcm9ubWVudC5JbnN0YW5jZS5zZXRDb250ZXh0SW5hY3Rpdml0eVdhcm5pbmdUaW1lKE5OdW1iZXIuUGFyc2UodmFsKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfQ09OVEVYVF9VTkxPQURfVElNRU9VVF9MT1dFUjpcclxuICAgICAgICAgIEVudmlyb25tZW50Lkluc3RhbmNlLnNldENvbnRleHRVbmxvYWRUaW1lb3V0KE5OdW1iZXIuUGFyc2UodmFsKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfVEVSTUlOQUw6XHJcbiAgICAgICAgICBFbnZpcm9ubWVudC5JbnN0YW5jZS5zZXRUZXJtaW5hbChOTnVtYmVyLlBhcnNlKHZhbCkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICB0cmFuc2xhdGUgbG9naWNhbCBuYW1lXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImlkeFwiPmluZGV4IG9mIHRoZSBsb2dpY2FsIG5hbWU8L3BhcmFtPlxyXG4gIHRyYW5zbGF0ZShsb2dpY2FsTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCBzdHJpbmdCdWlsZGVyOiBTdHJpbmdCdWlsZGVyID0gbmV3IFN0cmluZ0J1aWxkZXIobG9naWNhbE5hbWUpO1xyXG4gICAgdGhpcy5sb2coc3RyaW5nQnVpbGRlcik7XHJcbiAgICByZXR1cm4gc3RyaW5nQnVpbGRlci5Ub1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5Pjwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInN0cmluZ0JsZHJcIj48L3BhcmFtPlxyXG4gIHByaXZhdGUgbG9nKHN0cmluZ0JsZHI6IFN0cmluZ0J1aWxkZXIpOiB2b2lkIHtcclxuICAgIGxldCBmaW5pc2hlZDogYm9vbGVhbjtcclxuICAgIGRvIHtcclxuICAgICAgbGV0IG9mZnNldDogbnVtYmVyID0gMDtcclxuICAgICAgZmluaXNoZWQgPSB0cnVlO1xyXG4gICAgICB3aGlsZSAob2Zmc2V0IDwgc3RyaW5nQmxkci5MZW5ndGggJiYgc3RyaW5nQmxkci5nZXRfSXRlbShvZmZzZXQpID4gJ1xcMCcvKidcdTAwMDAnKi8pIHtcclxuXHJcbiAgICAgICAgLy8gJyQnIHdhcyBkZWZpbmUgdGhlIGxvZ2ljYWwgbmFtZSwgbm90IHVzZWQgYW55IG1vcmVcclxuICAgICAgICBpZiAoc3RyaW5nQmxkci5nZXRfSXRlbShvZmZzZXQpID09PSAnJScpIHtcclxuICAgICAgICAgIGxldCBvbGRMZW5ndGg6IG51bWJlciA9IHN0cmluZ0JsZHIuTGVuZ3RoO1xyXG4gICAgICAgICAgb2Zmc2V0ID0gdGhpcy5sb2dfdHJhbnMoc3RyaW5nQmxkciwgb2Zmc2V0KTtcclxuICAgICAgICAgIGlmIChvbGRMZW5ndGggIT09IHN0cmluZ0JsZHIuTGVuZ3RoKVxyXG4gICAgICAgICAgICBmaW5pc2hlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBvZmZzZXQgPSBvZmZzZXQgKyAxO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB3aGlsZSAoIWZpbmlzaGVkKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT48L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdHJpbmdCbGRyXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm9mZnNldFwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBsb2dfdHJhbnMoc3RyaW5nQmxkcjogU3RyaW5nQnVpbGRlciwgb2Zmc2V0OiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgbGV0IGlnbm9yZVRyYW5zOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBsZXQgc3RhcnRTeW06IG51bWJlciA9IG9mZnNldDtcclxuICAgIGxldCBlbmRTeW06IG51bWJlciA9IG9mZnNldCArIDE7XHJcblxyXG4gICAgLy8gZmluZCB0aGUgZW5kIG9mIHRoZSBzeW1ib2xcclxuICAgIHdoaWxlIChlbmRTeW0gPCBzdHJpbmdCbGRyLkxlbmd0aCkge1xyXG4gICAgICBpZiAoc3RyaW5nQmxkci5nZXRfSXRlbShlbmRTeW0pID09PSAnJScpXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGVuZFN5bSsrO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGFkZCAxIHRvIHRoZSBsZW4gdG8gZ2V0IHRvIHRoZSBlbmQgb2YgdGhlIHN5bWJvbCBvciBpZiBubyBlbmQgc3ltYm9sIHdhcyBmb3VuZCBhZGRcclxuICAgIGlmIChlbmRTeW0gPj0gc3RyaW5nQmxkci5MZW5ndGgpIHtcclxuICAgICAgb2Zmc2V0ID0gZW5kU3ltO1xyXG4gICAgICBpZ25vcmVUcmFucyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChzdHJpbmdCbGRyLmdldF9JdGVtKGVuZFN5bSkgIT09ICclJylcclxuICAgICAgb2Zmc2V0Kys7XHJcblxyXG4gICAgaWYgKCFpZ25vcmVUcmFucykge1xyXG4gICAgICBsZXQgc3ltOiBzdHJpbmcgPSBDb25zdEludGVyZmFjZS5JTklfU0VDVElPTl9MT0dJQ0FMX05BTUVTX0JSQUNLRVRTICtcclxuICAgICAgICBzdHJpbmdCbGRyLlRvU3RyaW5nKHN0YXJ0U3ltICsgMSwgZW5kU3ltIC0gc3RhcnRTeW0gLSAxKTtcclxuICAgICAgbGV0IHRyYW5zOiBzdHJpbmcgPSB0aGlzLmdldChzeW0pO1xyXG5cclxuICAgICAgLy8gc2V0IHRoZSBvZmZzZXQgdG8gdGhlIG5leHQgY2hhciBhZnRlciB0aGUgZW5kaW5nICUgb2YgdGhlIG5hbWVcclxuICAgICAgaWYgKHRyYW5zID09PSBudWxsKSB7XHJcbiAgICAgICAgc3RyaW5nQmxkci5SZXBsYWNlKHN0cmluZ0JsZHIuVG9TdHJpbmcob2Zmc2V0LCBlbmRTeW0gKyAxIC0gb2Zmc2V0KSwgXCJcIiwgb2Zmc2V0LCBlbmRTeW0gKyAxIC0gb2Zmc2V0KTtcclxuICAgICAgICBvZmZzZXQgKz0gMTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBzdHJpbmdCbGRyLlJlcGxhY2Uoc3RyaW5nQmxkci5Ub1N0cmluZyhzdGFydFN5bSwgZW5kU3ltICsgMSAtIHN0YXJ0U3ltKSwgdHJhbnMsIHN0YXJ0U3ltLFxyXG4gICAgICAgICAgZW5kU3ltICsgMSAtIHN0YXJ0U3ltKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG9mZnNldDtcclxuICB9XHJcbn1cclxuIl19
340
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW52VmFyaWFibGVzVGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL2Vudi9FbnZWYXJpYWJsZXNUYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsd0NBQXdDLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFckUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBRWpELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUN6RSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFLNUMsTUFBTSxPQUFPLGNBQWUsU0FBUSxZQUEwQjtJQUU1RCxNQUFNLENBQUMsUUFBUSxHQUFtQixJQUFJLGNBQWMsRUFBRSxDQUFDO0lBSXZEO1FBQ0UsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsY0FBYyxDQUFDLGdCQUFnQixDQUFDO0lBQ3BELENBQUM7SUFLRCxHQUFHLENBQUMsQ0FBUztRQUNYLElBQUksT0FBTyxHQUFXLElBQUksQ0FBQztRQUMzQixJQUFJLEdBQUcsR0FB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RSxNQUFNLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO2dCQUN0RyxNQUFNLElBQUksQ0FBQyxDQUFDO2FBQ2I7aUJBQ0k7Z0JBQ0gsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxNQUFNLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQ3RGLE1BQU0sR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7YUFDMUI7U0FDRjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbW1hbmRzUHJvY2Vzc29yQmFzZV9TZW5kaW5nSW5zdHJ1Y3Rpb259IGZyb20gXCIuLi9Db21tYW5kc1Byb2Nlc3NvckJhc2VcIjtcclxuaW1wb3J0IHtNaXJyb3JQcm1NYXB9IGZyb20gXCIuLi91dGlsL1BybU1hcFwiO1xyXG5pbXBvcnQge05OdW1iZXIsIE5TdHJpbmcsIFN0cmluZ0J1aWxkZXJ9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5cclxuaW1wb3J0IHtEaXNwbGF5Q29udmVydG9yfSBmcm9tIFwiQG1hZ2ljLXhwYS9ndWlcIjtcclxuaW1wb3J0IHtDb25zdEludGVyZmFjZX0gZnJvbSBcIi4uL0NvbnN0SW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7SUNsaWVudENvbW1hbmR9IGZyb20gXCIuLi9jb21tYW5kcy9JQ2xpZW50Q29tbWFuZFwiO1xyXG5pbXBvcnQge0NvbW1hbmRGYWN0b3J5fSBmcm9tIFwiLi4vY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvQ29tbWFuZEZhY3RvcnlcIjtcclxuaW1wb3J0IHtSZW1vdGVDb21tYW5kc1Byb2Nlc3Nvcn0gZnJvbSBcIi4uL3JlbW90ZS9SZW1vdGVDb21tYW5kc1Byb2Nlc3NvclwiO1xyXG5pbXBvcnQge0Vudmlyb25tZW50fSBmcm9tIFwiLi9FbnZpcm9ubWVudFwiO1xyXG5pbXBvcnQge0xhc3RGb2N1c2VkTWFuYWdlcn0gZnJvbSBcIi4uL3J0L0xhc3RGb2N1c2VkTWFuYWdlclwiO1xyXG5pbXBvcnQge0FjY2Vzc0hlbHBlcn0gZnJvbSBcIi4uL0FjY2Vzc0hlbHBlclwiO1xyXG5pbXBvcnQge01pcnJvclN0cmluZ30gZnJvbSBcIi4vTWlycm9yU3RyaW5nXCI7XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyAgIG1hbmFnZXIgb2YgZW52aXJvbm1lbnQgdmFyaWFibGVzXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBFbnZQYXJhbXNUYWJsZSBleHRlbmRzIE1pcnJvclBybU1hcDxNaXJyb3JTdHJpbmc+IHtcclxuXHJcbiAgc3RhdGljIEluc3RhbmNlOiBFbnZQYXJhbXNUYWJsZSA9IG5ldyBFbnZQYXJhbXNUYWJsZSgpO1xyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBDVE9SXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoTWlycm9yU3RyaW5nKTtcclxuICAgIHRoaXMubWlycm9yZWRJRCA9IENvbnN0SW50ZXJmYWNlLk1HX1RBR19FTlZfUEFSQU07XHJcbiAgfVxyXG5cclxuICAvLyBDaGVjayBpZiB0aGUgdmFsdWUgc2hvdWxkIGJlIHJldHVybmVkIGZyb20gdGhlIGVudmlyb25tZW50LlxyXG4gIC8vIFZlcmlmeSB0aGUgc2VjdGlvbiBuYW1lIGV4aXN0cyBiZWZvcmUgZ2V0dGluZyB0aGUgdmFsdWUgZnJvbSB0aGUgYmFzZSBjbGFzcy5cclxuICAvLyBSZXR1cm4gbnVsbCBpZiB0aGUgdmFsdWUgZG9lcyBub3QgZXhpc3QuXHJcbiAgZ2V0KHM6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgdmFsTmFtZTogc3RyaW5nID0gbnVsbDtcclxuICAgIGxldCByZXQ6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gICAgLy8gSWYgc2VjdGlvbiBpcyBub3QgZGVmaW5lZCwgYWRkIHRoZSBkZWZhdWx0IHNlY3Rpb25cclxuICAgIGlmIChzLmNoYXJBdCgwKSAhPT0gJ1snKSB7XHJcbiAgICAgIHZhbE5hbWUgPSBzO1xyXG4gICAgICBzID0gTlN0cmluZy5JbnNlcnQocywgMCwgQ29uc3RJbnRlcmZhY2UuSU5JX1NFQ1RJT05fTUFHSUNfRU5WX0JSQUNLRVRTKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBpZiB3ZSBkbyBoYXZlIHRoZSBzZWN0aW9uIG5hbWUsYWFuZCBpdCBpcyBNQUdJQ19FTlYsIHdlIG5lZWQgdGhlIHZhcmlhYmxlJ3MgbmFtZVxyXG4gICAgZWxzZSBpZiAocy5zdGFydHNXaXRoKENvbnN0SW50ZXJmYWNlLklOSV9TRUNUSU9OX01BR0lDX0VOVl9CUkFDS0VUUykpXHJcbiAgICAgIHZhbE5hbWUgPSBzLnN1YnN0cihDb25zdEludGVyZmFjZS5JTklfU0VDVElPTl9NQUdJQ19FTlZfQlJBQ0tFVFMubGVuZ3RoKTtcclxuXHJcbiAgICAvLyBpZiBpdCBpcyBub3QgYSBsb2dpY2FsIG5hbWUsIGl0IGlzIGNhc2UgaW5zZW5zaXRpdmVcclxuICAgIGlmICghcy5zdGFydHNXaXRoKENvbnN0SW50ZXJmYWNlLklOSV9TRUNUSU9OX0xPR0lDQUxfTkFNRVNfQlJBQ0tFVFMpKVxyXG4gICAgICBzID0gcy50b1VwcGVyQ2FzZSgpO1xyXG4gICAgLy8gY2hlY2sgdGhlIHZhbHVlJ3MgbmFtZSB0byBzZWUgaWYgd2UgbmVlZCB0byBnZXQgaXQgZnJvbSB0aGUgcnVudGltZSBlbnZpcm9ubWVudFxyXG4gICAgaWYgKHZhbE5hbWUgIT09IG51bGwpXHJcbiAgICAgIHJldCA9IHRoaXMuZ2V0RnJvbUVudmlyb25tZW50KHZhbE5hbWUpO1xyXG5cclxuICAgIGlmIChyZXQgIT09IG51bGwpXHJcbiAgICAgIHJldHVybiByZXQ7XHJcblxyXG4gICAgLy8gdmFsdWUgbm90IGluIHJ1bnRpbWUgZW52aXJvbm1lbnQgLSBnZXQgaXQgZnJvbSB0aGUgdGFibGVcclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCByZXN1bHRPYmplY3Q6IE1pcnJvclN0cmluZyA9IHN1cGVyLmdldHZhbHVlKHMpO1xyXG5cclxuICAgICAgaWYgKHJlc3VsdE9iamVjdCAhPT0gbnVsbCkge1xyXG4gICAgICAgIHJldCA9IHJlc3VsdE9iamVjdC5Ub1N0cmluZygpO1xyXG5cclxuICAgICAgICAvLyBJZiBpdCBtYXkgYmUgYSB2YXJpYWJsZSB0aGF0IGJlbG9uZ3MgdG8gdGhlIHNlcnZlcidzIGNvbnRleHQvY29tcG9uZW50LCBwcm9jZXNzIGl0XHJcbiAgICAgICAgaWYgKHZhbE5hbWUgIT09IG51bGwpIHtcclxuICAgICAgICAgIHJldCA9IHRoaXMuZ2V0UHJvY2Vzc2VkVmFsdWUodmFsTmFtZSwgcmV0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleF9CRSkge1xyXG4gICAgICAvLyBpZiBzdHJpbmcgbm90IGluIGRpY3Rpb25hcnlcclxuICAgIH1cclxuICAgIHJldHVybiByZXQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpbiBwbGFjZSBcIm51bWJlclwiIGluIHNlY3Rpb24gXCJzZWN0aW9uXCJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic2VjdGlvblwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJudW1iZXJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgZ2V0bG4oc2VjdGlvbjogc3RyaW5nLCBudW1iZXI6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBzZWN0aW9uID0gc2VjdGlvbi50b1VwcGVyQ2FzZSgpLnRyaW0oKTtcclxuICAgIGxldCBzZWN0aW9uRm91bmQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBsZXQga2V5czogc3RyaW5nW10gPSB0aGlzLnZhbHVlcy5LZXlzO1xyXG5cclxuICAgIC8vIExvb3Agb3ZlciBrZXlzLCBmaW5kIHRob3NlIHRoYXQgc3RhcnQgd2l0aCBvdXIgc2VjdGlvbiBuYW1lXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGtleTogc3RyaW5nID0ga2V5c1tpXTtcclxuXHJcbiAgICAgIGlmIChrZXkuc3RhcnRzV2l0aChzZWN0aW9uKSkge1xyXG4gICAgICAgIHNlY3Rpb25Gb3VuZCA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmIChudW1iZXIgPiAxKVxyXG4gICAgICAgICAgbnVtYmVyLS07XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgIC8vIGZvdW5kIHdoYXQgd2UgbmVlZGVkLCBidWlsZCB0aGUgXCJuYW1lPXZhbHVlXCIgc3RyaW5nXHJcbiAgICAgICAgICByZXR1cm4ga2V5LnN1YnN0cihzZWN0aW9uLmxlbmd0aCkgKyBcIj1cIiArIHRoaXMudmFsdWVzLmdldF9JdGVtKGtleSk7XHJcbiAgICAgIH1cclxuICAgICAgLy8gSWYgd2UgZ290IHRvIHRoZSByaWdodCBzZWN0aW9uIGFuZCBwYXNzZWQgaXQsIG5vIG5lZWQgdG8gY29udGludWUgbG9va2luZ1xyXG4gICAgICBlbHNlIGlmIChzZWN0aW9uRm91bmQpXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgdHJ5IGFuZCBnZXQgdGhlIGVudiB2YXJpYWJsZSdzIHZhbHVlIGZyb20gdGhlIHJ1bnRpbWUgZW52aXJvbm1lbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidmFsTmFtZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBwcml2YXRlIGdldEZyb21FbnZpcm9ubWVudCh2YWxOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgc3dpdGNoICh2YWxOYW1lLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0RFQ0lNQUxfU0VQQVJBVE9SOlxyXG4gICAgICAgIHJldHVybiBFbnZpcm9ubWVudC5JbnN0YW5jZS5HZXREZWNpbWFsKCk7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9EQVRFOlxyXG4gICAgICAgIHJldHVybiBEaXNwbGF5Q29udmVydG9yLkluc3RhbmNlLmdldERhdGVDaGFyKCkudG9TdHJpbmcoKTtcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX1RJTUU6XHJcbiAgICAgICAgcmV0dXJuIEVudmlyb25tZW50Lkluc3RhbmNlLkdldFRpbWUoKTtcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX09XTkVSOlxyXG4gICAgICAgIHJldHVybiBFbnZpcm9ubWVudC5JbnN0YW5jZS5nZXRPd25lcigpO1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfREFURU1PREU6XHJcbiAgICAgICAgcmV0dXJuIEVudmlyb25tZW50Lkluc3RhbmNlLkdldERhdGVNb2RlKExhc3RGb2N1c2VkTWFuYWdlci5JbnN0YW5jZS5nZXRDdXJyVGFzaygpLmdldENvbXBJZHgoKSk7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9DRU5UVVJZOlxyXG4gICAgICAgIHJldHVybiBFbnZpcm9ubWVudC5JbnN0YW5jZS5HZXRDZW50dXJ5KExhc3RGb2N1c2VkTWFuYWdlci5JbnN0YW5jZS5nZXRDdXJyVGFzaygpLmdldENvbXBJZHgoKSkudG9TdHJpbmcoKTtcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0lETEVUSU1FOlxyXG4gICAgICAgIHJldHVybiBFbnZpcm9ubWVudC5JbnN0YW5jZS5nZXRJZGxlVGltZShMYXN0Rm9jdXNlZE1hbmFnZXIuSW5zdGFuY2UuZ2V0Q3VyclRhc2soKS5nZXRDb21wSWR4KCkpLnRvU3RyaW5nKCk7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9VUERfSU5fUVVFUlk6XHJcbiAgICAgICAgcmV0dXJuIEVudmlyb25tZW50Lkluc3RhbmNlLmFsbG93VXBkYXRlSW5RdWVyeU1vZGUoTGFzdEZvY3VzZWRNYW5hZ2VyLkluc3RhbmNlLmdldEN1cnJUYXNrKCkuZ2V0Q29tcElkeCgpKS50b1N0cmluZygpO1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfQ1JFX0lOX01PRElGWTpcclxuICAgICAgICByZXR1cm4gRW52aXJvbm1lbnQuSW5zdGFuY2UuYWxsb3dDcmVhdGVJbk1vZGlmeU1vZGUoTGFzdEZvY3VzZWRNYW5hZ2VyLkluc3RhbmNlLmdldEN1cnJUYXNrKCkuZ2V0Q29tcElkeCgpKS50b1N0cmluZygpO1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfQ09OVEVYVF9JTkFDVElWSVRZX1RJTUVPVVQ6XHJcbiAgICAgICAgcmV0dXJuIEVudmlyb25tZW50Lkluc3RhbmNlLmdldENvbnRleHRJbmFjdGl2aXR5VGltZW91dCgpLnRvU3RyaW5nKCk7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9DT05URVhUX1VOTE9BRF9USU1FT1VUOlxyXG4gICAgICAgIHJldHVybiBFbnZpcm9ubWVudC5JbnN0YW5jZS5nZXRDb250ZXh0VW5sb2FkVGltZW91dCgpLnRvU3RyaW5nKCk7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9URVJNSU5BTDpcclxuICAgICAgICByZXR1cm4gRW52aXJvbm1lbnQuSW5zdGFuY2UuZ2V0VGVybWluYWwoKS50b1N0cmluZygpO1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfV0VCQ0xJRU5UX1JFSU5JVF9TRVNTSU9OOlxyXG4gICAgICAgIHJldHVybiBFbnZpcm9ubWVudC5JbnN0YW5jZS5nZXRXZWJDbGllbnRSZWluaXRTZXNzaW9uKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBUaGUgZnVuY3Rpb24gcHJvY2Vzc2VzIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSdzIHZhbHVlLCB0byByZXR1cm4gaXQgaW4gdGhlIHJpZ2h0XHJcbiAgLy8vICAgZm9ybWF0IGZvciBjb250ZXh0L2NvbXBvbmVudCB2YWx1ZXMgdGhhdCBhcmUgbm90IHVzZWQgYnkgdGhlIGNsaWVudC5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidmFsTmFtZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBwcml2YXRlIGdldFByb2Nlc3NlZFZhbHVlKHZhbE5hbWU6IHN0cmluZywgdmFsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG5cclxuICAgIC8vIFRoZSBsaXN0IG9mIHZhcmlhYmxlcyBpcyBzaW1pbGFyIHRvIHRoYXQgaW4gdGhlIHNlcnZlciwgaW4gZW52X2NvbXAuY3BwLCBFTlY6OmVudl92YWxfdG9fc3RyXHJcbiAgICBzd2l0Y2ggKHZhbE5hbWUudG9Mb3dlckNhc2UoKSkge1xyXG5cclxuICAgICAgLy8gdmFyaWFibGUgaXMgaW50ZWdlclxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfSFRUUF9USU1FT1VUOlxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfUlRGX0JVRkZFUl9TSVpFOlxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfUkFOR0VfUE9QX1RJTUU6XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9URU1QX1BPUF9USU1FOlxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfQkFUQ0hfUEFJTlRfVElNRTpcclxuICAgICAgICByZXR1cm4gTk51bWJlci5QYXJzZSh2YWwpLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgICAvLyB2YXJpYWJsZSBpcyBib29sZWFuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9VU0VfU0lHTkVEX0JST1dTRVJfQ0xJRU5UOlxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfQ0xPU0VfUFJJTlRFRF9UQUJMRVNfSU5fU1VCVEFTS1M6XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9HRU5FUklDX1RFWFRfUFJJTlRJTkc6XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9ISUdIX1JFU09MVVRJT05fUFJJTlQ6XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9NRVJHRV9UUklNOlxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfT1JJR0lOQUxfSU1BR0VfTE9BRDpcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX1BSSU5UX0RBVEFfVFJJTTpcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX1BTQ1JJUFRfUFJJTlRfTlQ6XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9TUEVDSUFMX0NPTlZfQUREX1NMQVNIOlxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfU1BFQ0lBTF9GVUxMX0VYUEFORF9QUklOVDpcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX1NQRUNJQUxfRlVMTF9URVhUOlxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfU1BFQ0lBTF9MQVNUX0xJTkVfUFJJTlQ6XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9TUEVDSUFMX1BSSU5URVJfT0VNOlxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfRU1CRURfRk9OVFM6XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9DRU5URVJfU0NSRUVOX0lOX09OTElORTpcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX1JFUE9TSVRJT05fQUZURVJfTU9ESUZZOlxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfSVNBTV9UUkFOU0FDVElPTjpcclxuICAgICAgICByZXR1cm4gKHZhbFswXSA9PT0gJ1knIHx8IHZhbFswXSA9PT0gJzEnKSA/IFwiWVwiIDogXCJOXCI7XHJcblxyXG4gICAgICAvLyB2YXJpYWJsZSBpcyBhIGNoYXJhY3RlclxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfVElNRV9TRVBBUkFUT1I6XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9JT1RJTUlORzpcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX1RIT1VTQU5EX1NFUEFSQVRPUjpcclxuICAgICAgICByZXR1cm4gdmFsWzBdLnRvU3RyaW5nKCk7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIHZhbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBTZXQgdGhlIHZhcmlhYmxlOlxyXG4gIC8vLyAgIDEuIHBhcnNlIHRoZSBzdHJpbmdcclxuICAvLy8gICAyLiBjcmVhdGUgdGhlIHBhcmFtL3ZhbHVlIGNvdXBsZXNcclxuICAvLy8gICAzLiBmb3IgZWFjaCBjb3VwbGU6XHJcbiAgLy8vICAgM2EuIHZlcmlmeSB0aGUgc2VjdGlvbiBuYW1lIGV4aXN0c1xyXG4gIC8vLyAgIDNiLiB2ZXJpZnkgdGhlIHZhcmlhYmxlIGlzIG5vdCB1bm1vZGlmaWVhYmxlXHJcbiAgLy8vICAgM2MuIHNldCB0aGUgdmFyaWFibGUgaW4gdGhlIGJhc2UgY2xhc3NcclxuICAvLy8gICAzZC4gY2hlY2sgYW5kIGNoYW5nZSB0aGUgZW52aXJvbm1lbnQgZGF0YSBpZiBuZWVkZWRcclxuICAvLy8gICA0LiBJZiByZXF1aXJlZCwgc2VuZCB0aGUgZGF0YSB0byB0aGUgc2VydmVyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInNcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidXBkYXRlSW5pXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHB1YmxpYyBhc3luYyBzZXQoczogc3RyaW5nLCB1cGRhdGVJbmk6IGJvb2xlYW4pOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGxldCBhbGxPSzogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBsZXQgc2VuZFRvU2VydmVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBsZXQgbmFtZTogc3RyaW5nLCB2YWw7XHJcbiAgICBsZXQgaTogbnVtYmVyO1xyXG4gICAgbGV0IHNlcnZlclZhbDogc3RyaW5nID0gcztcclxuXHJcbiAgICAvLyBTdHJpbmcgcGFyc2luZzogZXZlcnkgbnVtYmVyIGluICdvZmZzZXRzJyBzaG93cyB0aGUgb2Zmc2V0IHRvIHRoZSBiZWdpbm5pbmcgb2YgYSBuYW1lIG9yIHZhbHVlXHJcbiAgICAvLyAxc3Qgb2Zmc2V0IGlzIGFsd2F5cyAwXHJcbiAgICBsZXQgb2Zmc2V0czogbnVtYmVyW10gPSBuZXcgQXJyYXkocy5sZW5ndGggKyAxKTtcclxuICAgIGxldCBvZmZzZXRzQ2hhcnM6IHN0cmluZ1tdID0gbmV3IEFycmF5KHMubGVuZ3RoICsgMSk7XHJcblxyXG4gICAgb2Zmc2V0c1swXSA9IDA7XHJcbiAgICBvZmZzZXRzQ2hhcnNbMF0gPSAncyc7XHJcbiAgICBsZXQgbmV4dE9mZnNldDogbnVtYmVyID0gMTtcclxuXHJcbiAgICAvLyBMb29wIG92ZXIgc3RyaW5nLCBmaW5kIGFsbCB0aGUgJz0nLCAnLCcgYW5kICcqJyB0aGF0IGFyZSBub3QgcHJlY2VlZGVkIGJ5IGEgJ1xcJy5cclxuICAgIGZvciAoaSA9IDE7IGkgPCBzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmICgoc1tpXSA9PT0gJz0nIHx8IHNbaV0gPT09ICcsJykgJiYgc1tpIC0gMV0gIT09ICdcXFxcJykge1xyXG4gICAgICAgIG9mZnNldHNbbmV4dE9mZnNldF0gPSBpICsgMTtcclxuICAgICAgICBvZmZzZXRzQ2hhcnNbbmV4dE9mZnNldF0gPSBzW2ldO1xyXG4gICAgICAgIG5leHRPZmZzZXQrKztcclxuICAgICAgfVxyXG4gICAgICBpZiAoc1tpXSA9PT0gJyonKSB7XHJcbiAgICAgICAgcyA9IE5TdHJpbmcuUmVtb3ZlKHMsIGksIDEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChzW2ldID09PSAnXFxcXCcpIHtcclxuICAgICAgICBzID0gTlN0cmluZy5SZW1vdmUocywgaSwgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBhZGQgdGhlIGZpbmFsIG9mZnNldCBmb3IgdGhlIGVuZCBvZiB0aGUgc3RyaW5nXHJcbiAgICBvZmZzZXRzW25leHRPZmZzZXRdID0gcy5sZW5ndGggKyAxO1xyXG4gICAgb2Zmc2V0c0NoYXJzW25leHRPZmZzZXRdID0gJ1xcMCc7XHJcbiAgICBuZXh0T2Zmc2V0Kys7XHJcblxyXG4gICAgLy8gZ28gb3ZlciB0aGUgY2FsY3VsYXRlZCBvZmZzZXRzLiB0aGUgbGFzdCBvbmUgaXMgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCBzbyBpdCBpcyBpZ25vcmVkXHJcbiAgICBmb3IgKGkgPSAwOyBpIDwgbmV4dE9mZnNldCAtIDE7IGkrKykge1xyXG4gICAgICAvLyBnZXQgdGhlIHZhcmlhYmxlIG5hbWVcclxuICAgICAgbmFtZSA9IHMuc3Vic3RyKG9mZnNldHNbaV0sIG9mZnNldHNbaSArIDFdIC0gb2Zmc2V0c1tpXSAtIDEpO1xyXG5cclxuICAgICAgLy8gaXMgdGhlcmUgYSB2YWx1ZSwgb3IgaXMgaXQgYW4gZW1wdHkgdmFyaWFibGU/XHJcbiAgICAgIGlmIChzW29mZnNldHNbaSArIDFdIC0gMV0gPT09ICc9Jykge1xyXG4gICAgICAgIGkrKztcclxuICAgICAgICBsZXQgdmFsSW5pdDogbnVtYmVyID0gaTtcclxuICAgICAgICBsZXQgYWxsb3dlZFNlcGFyYXRvcnM6IG51bWJlciA9IHRoaXMuZ2V0QWxsb3dlZFNlcGFyYXRvcnMobmFtZSk7XHJcbiAgICAgICAgZm9yIChsZXQgc2VwOiBudW1iZXIgPSAwOyBzZXAgPCBhbGxvd2VkU2VwYXJhdG9yczsgc2VwKyspIHtcclxuICAgICAgICAgIGlmIChvZmZzZXRzQ2hhcnNbaSArIDFdID09PSAnLCcpXHJcbiAgICAgICAgICAgIGkrKztcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGdldCB0aGUgdmFsdWVcclxuICAgICAgICB2YWwgPSBzLnN1YnN0cihvZmZzZXRzW3ZhbEluaXRdLCBvZmZzZXRzW2kgKyAxXSAtIG9mZnNldHNbdmFsSW5pdF0gLSAxKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdmFsID0gbnVsbDtcclxuXHJcbiAgICAgIC8vIGlzIGl0IGEgcmVzZXJ2ZWQgdmFyaWFibGU/XHJcbiAgICAgIGlmICh0aGlzLmlzUmVzZXJ2ZWRMb2dpY2FsTmFtZShuYW1lKSkge1xyXG4gICAgICAgIGFsbE9LID0gZmFsc2U7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIGlmIHRoZXJlJ3Mgbm8gc2VjdGlvbiBuYW1lLCBhZGQgdGhlIGRlZmF1bHQgb25lXHJcbiAgICAgIGlmIChuYW1lWzBdICE9PSAnWycpXHJcbiAgICAgICAgbmFtZSA9IE5TdHJpbmcuSW5zZXJ0KG5hbWUsIDAsIENvbnN0SW50ZXJmYWNlLklOSV9TRUNUSU9OX01BR0lDX0VOVl9CUkFDS0VUUyk7XHJcblxyXG4gICAgICAvLyBJZiBpdCdzIG5vdCBhIGxvZ2ljYWwgbmFtZSwgaXQgaXMgY2FzZSBpbnNlbnNpdGl2ZVxyXG4gICAgICBpZiAoIW5hbWUuc3RhcnRzV2l0aChDb25zdEludGVyZmFjZS5JTklfU0VDVElPTl9MT0dJQ0FMX05BTUVTX0JSQUNLRVRTKSlcclxuICAgICAgICBuYW1lID0gbmFtZS50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICBuYW1lID0gbmFtZS50cmltKCk7XHJcbiAgICAgIHZhbCA9IHZhbC50cmltKCk7XHJcbiAgICAgIHNlbmRUb1NlcnZlciA9IHRydWU7XHJcbiAgICAgIGlmICghTlN0cmluZy5Jc051bGxPckVtcHR5KHZhbCkgfHxcclxuICAgICAgICBuYW1lLnN0YXJ0c1dpdGgoQ29uc3RJbnRlcmZhY2UuSU5JX1NFQ1RJT05fTE9HSUNBTF9OQU1FU19CUkFDS0VUUykpIHtcclxuICAgICAgICAvLyBJZiB3ZSdyZSBnb2luZyB0byBzZW5kIGl0IHRvIHRoZSBzZXJ2ZXIgTk9XLCB3ZSBkb24ndCBuZWVkIGl0IGluIHRoZSBjaGFuZ2VzIGxpc3RcclxuICAgICAgICBzdXBlci5zZXRWYWx1ZShuYW1lLCBuZXcgTWlycm9yU3RyaW5nKHZhbCksICF1cGRhdGVJbmkpO1xyXG4gICAgICAgIHRoaXMuY2hlY2tTZXRJbkVudmlyb25tZW50KG5hbWUsIHZhbCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZVxyXG4gICAgICAgIHN1cGVyLnJlbW92ZShuYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBpZiBzaG91bGQgdXBkYXRlIHRoZSBpbmkgZmlsZSwgYW5kIHdlIGhhdmUgbW9kaWZpZWQgdmFyaWFibGVzLCB1cGRhdGUgdGhlIHNlcnZlci5cclxuICAgIGlmICh1cGRhdGVJbmkgJiYgc2VuZFRvU2VydmVyKSB7XHJcbiAgICAgIGxldCBjbWQ6IElDbGllbnRDb21tYW5kID0gQ29tbWFuZEZhY3RvcnkuQ3JlYXRlSW5pcHV0Rm9yY2VXcml0ZUNvbW1hbmQoc2VydmVyVmFsKTtcclxuICAgICAgQWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLmdldE1HRGF0YSgwKS5DbWRzVG9TZXJ2ZXIuQWRkKGNtZCk7XHJcblxyXG4gICAgICAvLyBleGVjdXRlIGNsaWVudCB0byBzZXJ2ZXIgY29tbWFuZHNcclxuICAgICAgYXdhaXQgUmVtb3RlQ29tbWFuZHNQcm9jZXNzb3IuR2V0SW5zdGFuY2UoKS5FeGVjdXRlKENvbW1hbmRzUHJvY2Vzc29yQmFzZV9TZW5kaW5nSW5zdHJ1Y3Rpb24uT05MWV9DT01NQU5EUyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYWxsT0s7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgQ2hlY2tzIGlmIHRoZSB2YXJpYWJsZSBpcyBhIHJlc2VydmVkIGxvZ2ljYWwgbmFtZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJuYW1lXCI+IGVudiB2YXJpYWJsZSBuYW1lIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0cnVlIGlmIGl0IGlzIHJlc2VydmVkIDwvcmV0dXJucz5cclxuICBwcml2YXRlIGlzUmVzZXJ2ZWRMb2dpY2FsTmFtZShuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuXHJcbiAgICAvLyBSZXNlcnZlZCBsb2dpY2FsIG5hbWVzIG1heSBiZSBhY2Nlc3NlZCB3aXRob3V0IGEgc2VjdGlvbiBuYW1lLCBidXQgYXJlIHN0b3JlZCBhcyBsb2dpY2FsIG5hbWVzLFxyXG4gICAgLy8gc28gaWYgd2UgZG9uJ3QgaGF2ZSBhIHNlY3Rpb24gbmFtZSwgaW5zZXJ0IHRoZSBsb2dpY2FsIHNlY3Rpb24gYW5kIHNlYXJjaCB0aGUgdGFibGVcclxuICAgIGlmICghbmFtZS5zdGFydHNXaXRoKFwiW1wiKSkge1xyXG4gICAgICBuYW1lID0gTlN0cmluZy5JbnNlcnQobmFtZSwgMCwgQ29uc3RJbnRlcmZhY2UuSU5JX1NFQ1RJT05fTE9HSUNBTF9OQU1FU19CUkFDS0VUUyk7XHJcbiAgICAgIGlmICh0aGlzLnZhbHVlcy5Db250YWluc0tleShuYW1lKSAmJiB0aGlzLnZhbHVlcy5nZXRfSXRlbShuYW1lKS5pc1Jlc2VydmVkKCkpXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgbnVtYmVyIG9mIHNlcGVyYXRvcnMgYWxsb3dlZCBmb3IgZW50cmllcyBvZiB0aGlzIHNlY3Rpb24uIG51bWJlciBhcmUgYmFzZWQgb25cclxuICAvLy8gICBkYXRhIGluIGVudl9rZXJuLmNwcDogZW52X2RlZl9wYXJzZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJuYW1lXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgZ2V0QWxsb3dlZFNlcGFyYXRvcnMobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgIGlmIChuYW1lLmNoYXJBdCgwKSAhPT0gJ1snKVxyXG4gICAgICByZXR1cm4gMDtcclxuXHJcbiAgICBsZXQgc2VjdGlvbjogc3RyaW5nID0gbmFtZS5zdWJzdHIoMSwgbmFtZS5pbmRleE9mKCddJykgLyonXScqLyAtIDEpO1xyXG4gICAgbGV0IHBhcmFtOiBzdHJpbmcgPSBuYW1lLnN1YnN0cihuYW1lLmluZGV4T2YoJ10nKSAvKiddJyovICsgMSk7XHJcblxyXG4gICAgc3dpdGNoIChzZWN0aW9uLnRvVXBwZXJDYXNlKCkpIHtcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5JTklfU0VDVElPTl9NQUdJQ19FTlY6XHJcbiAgICAgICAgaWYgKHBhcmFtLnRvVXBwZXJDYXNlKCkgPT09IENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfTEFOR1VBR0UudG9VcHBlckNhc2UoKSlcclxuICAgICAgICAgIHJldHVybiA5OTk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuSU5JX1NFQ1RJT05fTUFHSUNfU1lTVEVNUzpcclxuICAgICAgICByZXR1cm4gODtcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5JTklfU0VDVElPTl9NQUdJQ19EQk1TOlxyXG4gICAgICAgIHJldHVybiAxMztcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5JTklfU0VDVElPTl9NQUdJQ19TRVJWRVJTOlxyXG4gICAgICAgIHJldHVybiA2O1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLklOSV9TRUNUSU9OX01BR0lDX0NPTU1TOlxyXG4gICAgICAgIHJldHVybiAyO1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLklOSV9TRUNUSU9OX01BR0lDX1BSSU5URVJTOlxyXG4gICAgICAgIHJldHVybiAzO1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLklOSV9TRUNUSU9OX01BR0lDX1NZU1RFTV9NRU5VOlxyXG4gICAgICAgIHJldHVybiAxMTtcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5JTklfU0VDVElPTl9NQUdJQ19EQVRBQkFTRVM6XHJcbiAgICAgICAgcmV0dXJuIDIxO1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLklOSV9TRUNUSU9OX01BR0lDX0xBTkdVQUdFOlxyXG4gICAgICAgIHJldHVybiAxO1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLklOSV9TRUNUSU9OX01BR0lDX1NFUlZJQ0VTOlxyXG4gICAgICAgIHJldHVybiA4O1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLklOSV9TRUNUSU9OX1RPT0xTX01FTlU6XHJcbiAgICAgICAgcmV0dXJuIDc7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgQ2hlY2sgaWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGNoYW5nZSBhZmZlY3RzIHRoZSBlbnZpcm9ubWVudCB2YWx1ZXMsXHJcbiAgLy8vICAgYW5kIGNoYW5nZSB0aGUgZW52aXJvbm1lbnQgZGF0YSBhY2NvcmRpbmdseVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJuYW1lXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInZhbFwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBjaGVja1NldEluRW52aXJvbm1lbnQobmFtZTogc3RyaW5nLCB2YWw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKG5hbWUuc3RhcnRzV2l0aChDb25zdEludGVyZmFjZS5JTklfU0VDVElPTl9NQUdJQ19FTlZfQlJBQ0tFVFMpKSB7XHJcbiAgICAgIG5hbWUgPSBuYW1lLnN1YnN0cihDb25zdEludGVyZmFjZS5JTklfU0VDVElPTl9NQUdJQ19FTlZfQlJBQ0tFVFMubGVuZ3RoKTtcclxuXHJcbiAgICAgIHN3aXRjaCAobmFtZS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0RFQ0lNQUxfU0VQQVJBVE9SOlxyXG4gICAgICAgICAgRW52aXJvbm1lbnQuSW5zdGFuY2Uuc2V0RGVjaW1hbFNlcGFyYXRvcih2YWxbMF0pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0RBVEU6XHJcbiAgICAgICAgICBEaXNwbGF5Q29udmVydG9yLkluc3RhbmNlLnNldERhdGVDaGFyKHZhbFswXS5jaGFyQ29kZUF0KDApKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9USU1FOlxyXG4gICAgICAgICAgRW52aXJvbm1lbnQuSW5zdGFuY2Uuc2V0VGltZVNlcGFyYXRvcih2YWxbMF0pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX09XTkVSOlxyXG4gICAgICAgICAgRW52aXJvbm1lbnQuSW5zdGFuY2Uuc2V0T3duZXIodmFsKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9EQVRFTU9ERTpcclxuICAgICAgICAgIEVudmlyb25tZW50Lkluc3RhbmNlLnNldERhdGVNb2RlKExhc3RGb2N1c2VkTWFuYWdlci5JbnN0YW5jZS5nZXRDdXJyVGFzaygpLmdldENvbXBJZHgoKSwgdmFsWzBdKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9DRU5UVVJZOlxyXG4gICAgICAgICAgRW52aXJvbm1lbnQuSW5zdGFuY2Uuc2V0Q2VudHVyeShMYXN0Rm9jdXNlZE1hbmFnZXIuSW5zdGFuY2UuZ2V0Q3VyclRhc2soKS5nZXRDb21wSWR4KCksIE5OdW1iZXIuUGFyc2UodmFsKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfSURMRVRJTUU6XHJcbiAgICAgICAgICBFbnZpcm9ubWVudC5JbnN0YW5jZS5zZXRJZGxlVGltZShMYXN0Rm9jdXNlZE1hbmFnZXIuSW5zdGFuY2UuZ2V0Q3VyclRhc2soKS5nZXRDb21wSWR4KCksIE5OdW1iZXIuUGFyc2UodmFsKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfVVBEX0lOX1FVRVJZX0xPV0VSOlxyXG4gICAgICAgICAgRW52aXJvbm1lbnQuSW5zdGFuY2Uuc2V0QWxsb3dVcGRhdGVJblF1ZXJ5TW9kZShMYXN0Rm9jdXNlZE1hbmFnZXIuSW5zdGFuY2UuZ2V0Q3VyclRhc2soKS5nZXRDb21wSWR4KCksXHJcbiAgICAgICAgICAgIHZhbFswXSA9PT0gJzEnKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9DUkVfSU5fTU9ESUZZX0xPV0VSOlxyXG4gICAgICAgICAgRW52aXJvbm1lbnQuSW5zdGFuY2Uuc2V0QWxsb3dDcmVhdGVJbk1vZGlmeU1vZGUoTGFzdEZvY3VzZWRNYW5hZ2VyLkluc3RhbmNlLmdldEN1cnJUYXNrKCkuZ2V0Q29tcElkeCgpLFxyXG4gICAgICAgICAgICB2YWxbMF0gPT09ICcxJyk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfQ09OVEVYVF9JTkFDVElWSVRZX1RJTUVPVVRfTE9XRVI6XHJcbiAgICAgICAgICBFbnZpcm9ubWVudC5JbnN0YW5jZS5zZXRDb250ZXh0SW5hY3Rpdml0eVRpbWVvdXQoTk51bWJlci5QYXJzZSh2YWwpKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9DT05URVhUX0lOQUNUSVZJVFlfV0FSTklOR19USU1FX0xPV0VSOlxyXG4gICAgICAgICAgRW52aXJvbm1lbnQuSW5zdGFuY2Uuc2V0Q29udGV4dEluYWN0aXZpdHlXYXJuaW5nVGltZShOTnVtYmVyLlBhcnNlKHZhbCkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0NPTlRFWFRfVU5MT0FEX1RJTUVPVVRfTE9XRVI6XHJcbiAgICAgICAgICBFbnZpcm9ubWVudC5JbnN0YW5jZS5zZXRDb250ZXh0VW5sb2FkVGltZW91dChOTnVtYmVyLlBhcnNlKHZhbCkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX1RFUk1JTkFMOlxyXG4gICAgICAgICAgRW52aXJvbm1lbnQuSW5zdGFuY2Uuc2V0VGVybWluYWwoTk51bWJlci5QYXJzZSh2YWwpKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgdHJhbnNsYXRlIGxvZ2ljYWwgbmFtZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpZHhcIj5pbmRleCBvZiB0aGUgbG9naWNhbCBuYW1lPC9wYXJhbT5cclxuICB0cmFuc2xhdGUobG9naWNhbE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgc3RyaW5nQnVpbGRlcjogU3RyaW5nQnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKGxvZ2ljYWxOYW1lKTtcclxuICAgIHRoaXMubG9nKHN0cmluZ0J1aWxkZXIpO1xyXG4gICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIuVG9TdHJpbmcoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT48L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdHJpbmdCbGRyXCI+PC9wYXJhbT5cclxuICBwcml2YXRlIGxvZyhzdHJpbmdCbGRyOiBTdHJpbmdCdWlsZGVyKTogdm9pZCB7XHJcbiAgICBsZXQgZmluaXNoZWQ6IGJvb2xlYW47XHJcbiAgICBkbyB7XHJcbiAgICAgIGxldCBvZmZzZXQ6IG51bWJlciA9IDA7XHJcbiAgICAgIGZpbmlzaGVkID0gdHJ1ZTtcclxuICAgICAgd2hpbGUgKG9mZnNldCA8IHN0cmluZ0JsZHIuTGVuZ3RoICYmIHN0cmluZ0JsZHIuZ2V0X0l0ZW0ob2Zmc2V0KSA+ICdcXDAnLyonXHUwMDAwJyovKSB7XHJcblxyXG4gICAgICAgIC8vICckJyB3YXMgZGVmaW5lIHRoZSBsb2dpY2FsIG5hbWUsIG5vdCB1c2VkIGFueSBtb3JlXHJcbiAgICAgICAgaWYgKHN0cmluZ0JsZHIuZ2V0X0l0ZW0ob2Zmc2V0KSA9PT0gJyUnKSB7XHJcbiAgICAgICAgICBsZXQgb2xkTGVuZ3RoOiBudW1iZXIgPSBzdHJpbmdCbGRyLkxlbmd0aDtcclxuICAgICAgICAgIG9mZnNldCA9IHRoaXMubG9nX3RyYW5zKHN0cmluZ0JsZHIsIG9mZnNldCk7XHJcbiAgICAgICAgICBpZiAob2xkTGVuZ3RoICE9PSBzdHJpbmdCbGRyLkxlbmd0aClcclxuICAgICAgICAgICAgZmluaXNoZWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgb2Zmc2V0ID0gb2Zmc2V0ICsgMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgd2hpbGUgKCFmaW5pc2hlZCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3RyaW5nQmxkclwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJvZmZzZXRcIj48L3BhcmFtPlxyXG4gIHByaXZhdGUgbG9nX3RyYW5zKHN0cmluZ0JsZHI6IFN0cmluZ0J1aWxkZXIsIG9mZnNldDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGxldCBpZ25vcmVUcmFuczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgbGV0IHN0YXJ0U3ltOiBudW1iZXIgPSBvZmZzZXQ7XHJcbiAgICBsZXQgZW5kU3ltOiBudW1iZXIgPSBvZmZzZXQgKyAxO1xyXG5cclxuICAgIC8vIGZpbmQgdGhlIGVuZCBvZiB0aGUgc3ltYm9sXHJcbiAgICB3aGlsZSAoZW5kU3ltIDwgc3RyaW5nQmxkci5MZW5ndGgpIHtcclxuICAgICAgaWYgKHN0cmluZ0JsZHIuZ2V0X0l0ZW0oZW5kU3ltKSA9PT0gJyUnKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBlbmRTeW0rKztcclxuICAgIH1cclxuXHJcbiAgICAvLyBhZGQgMSB0byB0aGUgbGVuIHRvIGdldCB0byB0aGUgZW5kIG9mIHRoZSBzeW1ib2wgb3IgaWYgbm8gZW5kIHN5bWJvbCB3YXMgZm91bmQgYWRkXHJcbiAgICBpZiAoZW5kU3ltID49IHN0cmluZ0JsZHIuTGVuZ3RoKSB7XHJcbiAgICAgIG9mZnNldCA9IGVuZFN5bTtcclxuICAgICAgaWdub3JlVHJhbnMgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoc3RyaW5nQmxkci5nZXRfSXRlbShlbmRTeW0pICE9PSAnJScpXHJcbiAgICAgIG9mZnNldCsrO1xyXG5cclxuICAgIGlmICghaWdub3JlVHJhbnMpIHtcclxuICAgICAgbGV0IHN5bTogc3RyaW5nID0gQ29uc3RJbnRlcmZhY2UuSU5JX1NFQ1RJT05fTE9HSUNBTF9OQU1FU19CUkFDS0VUUyArXHJcbiAgICAgICAgc3RyaW5nQmxkci5Ub1N0cmluZyhzdGFydFN5bSArIDEsIGVuZFN5bSAtIHN0YXJ0U3ltIC0gMSk7XHJcbiAgICAgIGxldCB0cmFuczogc3RyaW5nID0gdGhpcy5nZXQoc3ltKTtcclxuXHJcbiAgICAgIC8vIHNldCB0aGUgb2Zmc2V0IHRvIHRoZSBuZXh0IGNoYXIgYWZ0ZXIgdGhlIGVuZGluZyAlIG9mIHRoZSBuYW1lXHJcbiAgICAgIGlmICh0cmFucyA9PT0gbnVsbCkge1xyXG4gICAgICAgIHN0cmluZ0JsZHIuUmVwbGFjZShzdHJpbmdCbGRyLlRvU3RyaW5nKG9mZnNldCwgZW5kU3ltICsgMSAtIG9mZnNldCksIFwiXCIsIG9mZnNldCwgZW5kU3ltICsgMSAtIG9mZnNldCk7XHJcbiAgICAgICAgb2Zmc2V0ICs9IDE7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgc3RyaW5nQmxkci5SZXBsYWNlKHN0cmluZ0JsZHIuVG9TdHJpbmcoc3RhcnRTeW0sIGVuZFN5bSArIDEgLSBzdGFydFN5bSksIHRyYW5zLCBzdGFydFN5bSxcclxuICAgICAgICAgIGVuZFN5bSArIDEgLSBzdGFydFN5bSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBvZmZzZXQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==