fabrikantencore 2.1.2 → 2.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-eigenschap/beheer-products-eigenschap.component.mjs +7 -3
  2. package/esm2020/src/app/modules/fabrikantencore/components/fab-filter-colour/fab-filter-colour-dialog/fab-filter-colour-dialog.component.mjs +6 -1
  3. package/esm2020/src/app/modules/fabrikantencore/components/fab-filter-colour/fab-filter-colour.component.mjs +3 -3
  4. package/esm2020/src/app/modules/fabrikantencore/components/fab-product/fab-product.component.mjs +4 -3
  5. package/esm2020/src/app/modules/fabrikantencore/components/fab-product/fab-toebehoren/fab-toebehoren.component.mjs +135 -0
  6. package/esm2020/src/app/modules/fabrikantencore/components/fab-svg-viewer/fab-svg-viewer.component.mjs +3 -3
  7. package/esm2020/src/app/modules/fabrikantencore/components/fab-webgl-viewer/fab-webgl-viewer.component.mjs +3 -3
  8. package/esm2020/src/app/modules/fabrikantencore/fabrikantencore.module.mjs +6 -3
  9. package/esm2020/src/app/modules/fabrikantencore/services/fabrikanten.service.mjs +26 -9
  10. package/esm2020/src/app/modules/fabrikantencore/services/importsets.service.mjs +2 -2
  11. package/esm2020/src/app/modules/fabrikantencore/services/projectsetting.service.mjs +4 -1
  12. package/esm2020/src/app/modules/fabrikantencore/services/translate.service.mjs +18 -1
  13. package/esm2020/src/app/modules/fabrikantencore/swagger/SwaggerClient.mjs +133 -3
  14. package/fesm2015/fabrikantencore.mjs +363 -63
  15. package/fesm2015/fabrikantencore.mjs.map +1 -1
  16. package/fesm2020/fabrikantencore.mjs +359 -62
  17. package/fesm2020/fabrikantencore.mjs.map +1 -1
  18. package/package.json +1 -1
  19. package/src/app/modules/fabrikantencore/components/fab-product/fab-toebehoren/fab-toebehoren.component.d.ts +33 -0
  20. package/src/app/modules/fabrikantencore/fabrikantencore.module.d.ts +26 -25
  21. package/src/app/modules/fabrikantencore/services/fabrikanten.service.d.ts +9 -8
  22. package/src/app/modules/fabrikantencore/services/translate.service.d.ts +2 -0
  23. package/src/app/modules/fabrikantencore/swagger/SwaggerClient.d.ts +60 -2
@@ -118,6 +118,23 @@ export class TranslateService {
118
118
  }
119
119
  return "";
120
120
  }
121
+ GetActiveValueBCBEigenschapToebehoren(bcbEigenschapToebehorenId) {
122
+ if (this.ActiveLanguage != null) {
123
+ return this.GetValueBCBEigenschapToebehoren(this.ActiveLanguage, bcbEigenschapToebehorenId);
124
+ }
125
+ return "";
126
+ }
127
+ GetValueBCBEigenschapToebehoren(language, bcbEigenschapToebehorenId) {
128
+ var bcbeigenschaparray = language.bcbEigenschapToebehorenEntries;
129
+ if (bcbeigenschaparray != null) {
130
+ for (var i = 0; i < bcbeigenschaparray.length; i++) {
131
+ if (bcbeigenschaparray[i].bcbEigenschapToebehorenId == bcbEigenschapToebehorenId) {
132
+ return bcbeigenschaparray[i].value;
133
+ }
134
+ }
135
+ }
136
+ return "";
137
+ }
121
138
  GetActiveValueProduct(productId) {
122
139
  if (this.ActiveLanguage != null) {
123
140
  return this.GetValueProduct(this.ActiveLanguage, productId);
@@ -265,4 +282,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImpor
265
282
  type: Injectable,
266
283
  args: [{ providedIn: 'root' }]
267
284
  }], ctorParameters: function () { return [{ type: i1.TranslateApiClient }, { type: i2.NavigateService }]; } });
268
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL3NlcnZpY2VzL3RyYW5zbGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBTzlELE1BQU0sT0FBTyxnQkFBZ0I7SUFjM0IsWUFBb0Isa0JBQXNDLEVBQVMsZUFBZ0M7UUFBL0UsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUFTLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQVozRixTQUFJLEdBQVksS0FBSyxDQUFDO1FBRXZCLFlBQU8sR0FBWSxJQUFJLENBQUM7UUFJdkIsdUJBQWtCLEdBQVcsRUFBRSxDQUFDO1FBR2pDLHFCQUFnQixHQUFXLFFBQVEsQ0FBQztRQUl6QyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUMvQyxDQUFDO0lBRU0sY0FBYyxDQUFDLFFBQTJCLEVBQUUsaUJBQW9DO1FBQ3JGLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxRQUFRLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUNwRCxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUVqQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRU0saUJBQWlCLENBQUMsY0FBOEI7UUFDckQsSUFBSSxXQUFXLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRW5FLElBQUksV0FBVyxJQUFJLElBQUksSUFBSSxXQUFXLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxXQUFXLEVBQUU7WUFDdEYsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFdBQVcsQ0FBQztZQUN0QyxJQUFJ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QUFFLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxFQUFFO3dCQUN2SCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUM5RDtpQkFDRjthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBRU8saUJBQWlCLENBQUMsUUFBMkI7UUFDbkQsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLFFBQVEsRUFBRTtZQUNuQyxJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQztZQUUvQixJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQzs7NkdBbFVVLGdCQUFnQjtpSEFBaEIsZ0JBQWdCLGNBREgsTUFBTTsyRkFDbkIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IExhbmd1YWdlc1ZpZXdNb2RlbCwgTGFuZ3VhZ2VWaWV3TW9kZWwsIFRyYW5zbGF0ZUFwaUNsaWVudCwgVHJhbnNsYXRlS2V5Q2F0ZWdvcnlWaWV3TW9kZWwsIFRyYW5zbGF0ZUtleVZpZXdNb2RlbCB9IGZyb20gJy4uL3N3YWdnZXIvU3dhZ2dlckNsaWVudCc7XHJcbmltcG9ydCB7IE5hdmlnYXRlU2VydmljZSB9IGZyb20gJy4vbmF2aWdhdGUuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRlU2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgSW5pdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgTG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIHB1YmxpYyBMYW5ndWFnZXNWaWV3TW9kZWw6IExhbmd1YWdlc1ZpZXdNb2RlbDtcclxuXHJcbiAgcHJpdmF0ZSBEZXNpcmVkQ291bnRyeUNvZGU6IHN0cmluZyA9IFwiXCI7XHJcbiAgcHVibGljIEFjdGl2ZUxhbmd1YWdlOiBMYW5ndWFnZVZpZXdNb2RlbDtcclxuXHJcbiAgcHVibGljIFNlbGVjdGVkQ2F0ZWdvcnk6IHN0cmluZyA9IFwiQ29tbW9uXCI7XHJcbiAgcHVibGljIENhdGVnb3JpZXM6IEFycmF5PHN0cmluZz47XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgVHJhbnNsYXRlQXBpQ2xpZW50OiBUcmFuc2xhdGVBcGlDbGllbnQsIHB1YmxpYyBOYXZpZ2F0ZVNlcnZpY2U6IE5hdmlnYXRlU2VydmljZSkge1xyXG4gICAgdGhpcy5OYXZpZ2F0ZVNlcnZpY2UuVHJhbnNsYXRlU2VydmljZSA9IHRoaXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2VsZWN0TGFuZ3VhZ2UobGFuZ3VhZ2U6IExhbmd1YWdlVmlld01vZGVsLCBDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcclxuICAgIHRoaXMuRGVzaXJlZENvdW50cnlDb2RlID0gbGFuZ3VhZ2UuY291bnRyeUNvZGUgKyBcIlwiO1xyXG4gICAgdGhpcy5Qcm9jZXNzRGVzaXJlZENvdW50cnlDb2RlKCk7XHJcblxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFByb2Nlc3NQYXJhbWV0ZXJzKEFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IHZvaWQge1xyXG4gICAgdmFyIGNvdW50cnljb2RlID0gQWN0aXZhdGVkUm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KFwibGFuZ3VhZ2VcIik7XHJcblxyXG4gICAgaWYgKGNvdW50cnljb2RlICE9IG51bGwgJiYgY291bnRyeWNvZGUgIT0gXCJcIiAmJiB0aGlzLkRlc2lyZWRDb3VudHJ5Q29kZSAhPSBjb3VudHJ5Y29kZSkge1xyXG4gICAgICB0aGlzLkRlc2lyZWRDb3VudHJ5Q29kZSA9IGNvdW50cnljb2RlO1xyXG4gICAgICB0aGlzLlByb2Nlc3NEZXNpcmVkQ291bnRyeUNvZGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBMb2FkVHJhbnNsYXRpb25zKENoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZik6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLkluaXQpIHtcclxuICAgICAgdGhpcy5Jbml0ID0gdHJ1ZTtcclxuICAgICAgdGhpcy5Mb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgICAgdGhpcy5UcmFuc2xhdGVBcGlDbGllbnQuZ2V0TGFuZ3VhZ2VzVmlld01vZGVsKCkuc3Vic2NyaWJlKChtb2RlbDogTGFuZ3VhZ2VzVmlld01vZGVsKSA9PiB7XHJcbiAgICAgICAgdGhpcy5MYW5ndWFnZXNWaWV3TW9kZWwgPSBtb2RlbDtcclxuXHJcbiAgICAgICAgdmFyIGNhdHMgPSB0aGlzLkdldENhdGVnb3JpZXMoKTtcclxuICAgICAgICB0aGlzLkNhdGVnb3JpZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xyXG5cclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIHRoaXMuQ2F0ZWdvcmllcy5wdXNoKGNhdHNbaV0ubmFtZSBhcyBzdHJpbmcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5DYXRlZ29yaWVzLnB1c2goXCJDYXRlZ29yaWVzXCIpO1xyXG4gICAgICAgIHRoaXMuQ2F0ZWdvcmllcy5wdXNoKFwiUHJvZHVjdHNcIik7XHJcbiAgICAgICAgdGhpcy5DYXRlZ29yaWVzLnB1c2goXCJEZXNjcmlwdGlvblwiKTtcclxuICAgICAgICB0aGlzLkNhdGVnb3JpZXMucHVzaChcIkFmYmVlbGRpbmdcIik7XHJcbiAgICAgICAgdGhpcy5DYXRlZ29yaWVzLnB1c2goXCJGaWx0ZXJcIik7XHJcblxyXG4gICAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgICAgICB0aGlzLlByb2Nlc3NEZXNpcmVkQ291bnRyeUNvZGUoKTtcclxuXHJcbiAgICAgICAgdGhpcy5OYXZpZ2F0ZVNlcnZpY2UuUmVmcmVzaFBhZ2UoKTtcclxuXHJcbiAgICAgICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgICBhbGVydChlcnJvci5qc29uKCkpO1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgICAgYWxlcnQoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93U3BlY2lmaWNhdGlvbigpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLkFjdGl2ZUxhbmd1YWdlICE9IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuQWN0aXZlTGFuZ3VhZ2Uuc2hvd1NwZWNpZmljYXRpb247XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3coKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5Mb2FkaW5nKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5MYW5ndWFnZXNWaWV3TW9kZWw/Lmxhbmd1YWdlcyAhPSBudWxsKSB7XHJcbiAgICAgIGlmICh0aGlzLkxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXMubGVuZ3RoIDwgMikge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldEFjdGl2ZVZhbHVlKGNhdGVnb3J5OiBzdHJpbmcsIGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLkFjdGl2ZUxhbmd1YWdlICE9IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuR2V0VmFsdWUodGhpcy5BY3RpdmVMYW5ndWFnZSwgY2F0ZWdvcnksIGtleSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0VmFsdWUobGFuZ3VhZ2U6IExhbmd1YWdlVmlld01vZGVsLCBjYXRlZ29yeTogc3RyaW5nLCBrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICB2YXIgY2F0YXJyYXkgPSBsYW5ndWFnZS5jYXRlZ29yaWVzO1xyXG4gICAgaWYgKGNhdGFycmF5ICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYXRhcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChjYXRhcnJheVtpXS5uYW1lPy50b0xvd2VyQ2FzZSgpID09IGNhdGVnb3J5LnRvTG93ZXJDYXNlKCkpIHtcclxuXHJcbiAgICAgICAgICB2YXIga2V5c2FycmF5ID0gY2F0YXJyYXlbaV0ua2V5c1xyXG4gICAgICAgICAgaWYgKGtleXNhcnJheSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwga2V5c2FycmF5Lmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGtleXNhcnJheVtqXS5uYW1lPy50b0xvd2VyQ2FzZSgpID09IGtleS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZW50cmllc2FycmF5ID0ga2V5c2FycmF5W2pdLmVudHJpZXM7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGVudHJpZXNhcnJheSAhPSBudWxsICYmIGVudHJpZXNhcnJheS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyaWVzYXJyYXlbMF0udmFsdWUgYXMgc3RyaW5nO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjYXRlZ29yeSArIFwiLVwiICsga2V5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldEFjdGl2ZVZhbHVlQ2F0ZWdvcnkoY2F0SWQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5BY3RpdmVMYW5ndWFnZSAhPSBudWxsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLkdldFZhbHVlQ2F0ZWdvcnkodGhpcy5BY3RpdmVMYW5ndWFnZSwgY2F0SWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldFZhbHVlQ2F0ZWdvcnkobGFuZ3VhZ2U6IExhbmd1YWdlVmlld01vZGVsLCBjYXRJZDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHZhciBjYXRhcnJheSA9IGxhbmd1YWdlLmNhdGVnb3J5RW50cmllcztcclxuICAgIGlmIChjYXRhcnJheSAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2F0YXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoY2F0YXJyYXlbaV0uY2F0ZWdvcnlJZCA9PSBjYXRJZCkge1xyXG4gICAgICAgICAgcmV0dXJuIGNhdGFycmF5W2ldLnZhbHVlIGFzIHN0cmluZztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRBY3RpdmVWYWx1ZVByb2R1Y3QocHJvZHVjdElkOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuQWN0aXZlTGFuZ3VhZ2UgIT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5HZXRWYWx1ZVByb2R1Y3QodGhpcy5BY3RpdmVMYW5ndWFnZSwgcHJvZHVjdElkKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRWYWx1ZVByb2R1Y3QobGFuZ3VhZ2U6IExhbmd1YWdlVmlld01vZGVsLCBwcm9kdWN0SWQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICB2YXIgcHJvZGFycmF5ID0gbGFuZ3VhZ2UucHJvZHVjdEVudHJpZXM7XHJcbiAgICBpZiAocHJvZGFycmF5ICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9kYXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAocHJvZGFycmF5W2ldLnByb2R1Y3RJZCA9PSBwcm9kdWN0SWQpIHtcclxuICAgICAgICAgIHJldHVybiBwcm9kYXJyYXlbaV0udmFsdWUgYXMgc3RyaW5nO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldEFjdGl2ZVZhbHVlUmFuZ2VJbnB1dChyYW5nZUlucHV0SWQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5BY3RpdmVMYW5ndWFnZSAhPSBudWxsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLkdldFZhbHVlUmFuZ2VJbnB1dCh0aGlzLkFjdGl2ZUxhbmd1YWdlLCByYW5nZUlucHV0SWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldFZhbHVlUmFuZ2VJbnB1dChsYW5ndWFnZTogTGFuZ3VhZ2VWaWV3TW9kZWwsIHJhbmdlSW5wdXRJZDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHZhciByYW5nZWFycmF5ID0gbGFuZ3VhZ2UucmFuZ2VJbnB1dEVudHJpZXM7XHJcbiAgICBpZiAocmFuZ2VhcnJheSAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmFuZ2VhcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChyYW5nZWFycmF5W2ldLnJhbmdlSW5wdXRJZCA9PSByYW5nZUlucHV0SWQpIHtcclxuICAgICAgICAgIHJldHVybiByYW5nZWFycmF5W2ldLnZhbHVlIGFzIHN0cmluZztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRBY3RpdmVWYWx1ZUZpbHRlcihmaWx0ZXJJZDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLkFjdGl2ZUxhbmd1YWdlICE9IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuR2V0VmFsdWVGaWx0ZXIodGhpcy5BY3RpdmVMYW5ndWFnZSwgZmlsdGVySWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldFZhbHVlRmlsdGVyKGxhbmd1YWdlOiBMYW5ndWFnZVZpZXdNb2RlbCwgZmlsdGVySWQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICB2YXIgZmlsdGVyYXJyYXkgPSBsYW5ndWFnZS5maWx0ZXJFbnRyaWVzO1xyXG4gICAgaWYgKGZpbHRlcmFycmF5ICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWx0ZXJhcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChmaWx0ZXJhcnJheVtpXS5maWx0ZXJJZCA9PSBmaWx0ZXJJZCkge1xyXG4gICAgICAgICAgcmV0dXJuIGZpbHRlcmFycmF5W2ldLnZhbHVlIGFzIHN0cmluZztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRBY3RpdmVWYWx1ZUZpbHRlck9wdGlvbihmaWx0ZXJPcHRpb25JZDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLkFjdGl2ZUxhbmd1YWdlICE9IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuR2V0VmFsdWVGaWx0ZXJPcHRpb24odGhpcy5BY3RpdmVMYW5ndWFnZSwgZmlsdGVyT3B0aW9uSWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldFZhbHVlRmlsdGVyT3B0aW9uKGxhbmd1YWdlOiBMYW5ndWFnZVZpZXdNb2RlbCwgZmlsdGVyT3B0aW9uSWQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICB2YXIgZmlsdGVyYXJyYXkgPSBsYW5ndWFnZS5maWx0ZXJPcHRpb25FbnRyaWVzO1xyXG4gICAgaWYgKGZpbHRlcmFycmF5ICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWx0ZXJhcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChmaWx0ZXJhcnJheVtpXS5maWx0ZXJPcHRpb25JZCA9PSBmaWx0ZXJPcHRpb25JZCkge1xyXG4gICAgICAgICAgcmV0dXJuIGZpbHRlcmFycmF5W2ldLnZhbHVlIGFzIHN0cmluZztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRBY3RpdmVWYWx1ZURlc2NyaXB0aW9uKGJjYlByb2R1Y3RJZDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLkFjdGl2ZUxhbmd1YWdlICE9IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuR2V0VmFsdWVEZXNjcmlwdGlvbih0aGlzLkFjdGl2ZUxhbmd1YWdlLCBiY2JQcm9kdWN0SWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldFZhbHVlRGVzY3JpcHRpb24obGFuZ3VhZ2U6IExhbmd1YWdlVmlld01vZGVsLCBiY2JQcm9kdWN0SWQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICB2YXIgZGVzY3JpcHRpb25hcnJheSA9IGxhbmd1YWdlLmRlc2NyaXB0aW9uRW50cmllcztcclxuICAgIGlmIChkZXNjcmlwdGlvbmFycmF5ICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZXNjcmlwdGlvbmFycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGRlc2NyaXB0aW9uYXJyYXlbaV0uYmNiUHJvZHVjdElkID09IGJjYlByb2R1Y3RJZCkge1xyXG4gICAgICAgICAgcmV0dXJuIGRlc2NyaXB0aW9uYXJyYXlbaV0udmFsdWUgYXMgc3RyaW5nO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldEFjdGl2ZVZhbHVlQWZiZWVsZGluZyhiY2JQcm9kdWN0QWZiZWVsZGluZ0lkOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuQWN0aXZlTGFuZ3VhZ2UgIT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5HZXRWYWx1ZUFmYmVlbGRpbmcodGhpcy5BY3RpdmVMYW5ndWFnZSwgYmNiUHJvZHVjdEFmYmVlbGRpbmdJZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0VmFsdWVBZmJlZWxkaW5nKGxhbmd1YWdlOiBMYW5ndWFnZVZpZXdNb2RlbCwgYmNiUHJvZHVjdEFmYmVlbGRpbmdJZDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHZhciBhZmJlZWxkaW5nYXJyYXkgPSBsYW5ndWFnZS5hZmJlZWxkaW5nRW50cmllcztcclxuICAgIGlmIChhZmJlZWxkaW5nYXJyYXkgIT0gbnVsbCkge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFmYmVlbGRpbmdhcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChhZmJlZWxkaW5nYXJyYXlbaV0uYmNiUHJvZHVjdEFmYmVlbGRpbmdJZCA9PSBiY2JQcm9kdWN0QWZiZWVsZGluZ0lkKSB7XHJcbiAgICAgICAgICByZXR1cm4gYWZiZWVsZGluZ2FycmF5W2ldLnZhbHVlIGFzIHN0cmluZztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRDYXRlZ29yaWVzKCk6IEFycmF5PFRyYW5zbGF0ZUtleUNhdGVnb3J5Vmlld01vZGVsPiB7XHJcblxyXG4gICAgaWYgKHRoaXMuTGFuZ3VhZ2VzVmlld01vZGVsPy5sYW5ndWFnZXMgIT0gbnVsbCAmJiB0aGlzLkxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXMubGVuZ3RoID4gMCAmJiB0aGlzLkxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXNbMF0uY2F0ZWdvcmllcyAhPSBudWxsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLkxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXNbMF0uY2F0ZWdvcmllcztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gbmV3IEFycmF5PFRyYW5zbGF0ZUtleUNhdGVnb3J5Vmlld01vZGVsPigpOztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRBY3RpdmVDYXRlZ29yaWUoKTogVHJhbnNsYXRlS2V5Q2F0ZWdvcnlWaWV3TW9kZWwgfCBudWxsIHtcclxuICAgIHZhciBjYXRzID0gdGhpcy5HZXRDYXRlZ29yaWVzKCk7XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYXRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmIChjYXRzW2ldLm5hbWUgPT0gdGhpcy5TZWxlY3RlZENhdGVnb3J5KSB7XHJcbiAgICAgICAgcmV0dXJuIGNhdHNbaV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgUHJvY2Vzc0Rlc2lyZWRDb3VudHJ5Q29kZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLkxhbmd1YWdlc1ZpZXdNb2RlbD8ubGFuZ3VhZ2VzICE9IG51bGwpIHtcclxuICAgICAgaWYgKHRoaXMuRGVzaXJlZENvdW50cnlDb2RlID09IFwiXCIpIHtcclxuICAgICAgICB0aGlzLlNldEFjdGl2ZUxhbmd1YWdlKHRoaXMuTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlc1swXSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLkxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmICh0aGlzLkxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXNbaV0uY291bnRyeUNvZGU/LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSB0aGlzLkRlc2lyZWRDb3VudHJ5Q29kZS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuU2V0QWN0aXZlTGFuZ3VhZ2UodGhpcy5MYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzW2ldKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgU2V0QWN0aXZlTGFuZ3VhZ2UobGFuZ3VhZ2U6IExhbmd1YWdlVmlld01vZGVsKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5BY3RpdmVMYW5ndWFnZSAhPSBsYW5ndWFnZSkge1xyXG4gICAgICB0aGlzLkFjdGl2ZUxhbmd1YWdlID0gbGFuZ3VhZ2U7XHJcblxyXG4gICAgICB0aGlzLk5hdmlnYXRlU2VydmljZS5SZWZyZXNoUGFnZSgpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
285
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL3NlcnZpY2VzL3RyYW5zbGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBTzlELE1BQU0sT0FBTyxnQkFBZ0I7SUFjM0IsWUFBb0Isa0JBQXNDLEVBQVMsZUFBZ0M7UUFBL0UsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUFTLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQVozRixTQUFJLEdBQVksS0FBSyxDQUFDO1FBRXZCLFlBQU8sR0FBWSxJQUFJLENBQUM7UUFJdkIsdUJBQWtCLEdBQVcsRUFBRSxDQUFDO1FBR2pDLHFCQUFnQixHQUFXLFFBQVEsQ0FBQztRQUl6QyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUMvQyxDQUFDO0lBRU0sY0FBYyxDQUFDLFFBQTJCLEVBQUUsaUJBQW9DO1FBQ3JGLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxRQUFRLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUNwRCxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUVqQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRU0saUJBQWlCLENBQUMsY0FBOEI7UUFDckQsSUFBSSxXQUFXLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRW5FLElBQUksV0FBVyxJQUFJLElBQUksSUFBSSxXQUFXLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxXQUFXLEVBQUU7WUFDdEYsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFdBQVcsQ0FBQztZQUN0QyxJQUFJ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NUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBMYW5ndWFnZXNWaWV3TW9kZWwsIExhbmd1YWdlVmlld01vZGVsLCBUcmFuc2xhdGVBcGlDbGllbnQsIFRyYW5zbGF0ZUtleUNhdGVnb3J5Vmlld01vZGVsLCBUcmFuc2xhdGVLZXlWaWV3TW9kZWwgfSBmcm9tICcuLi9zd2FnZ2VyL1N3YWdnZXJDbGllbnQnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0ZVNlcnZpY2UgfSBmcm9tICcuL25hdmlnYXRlLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIFRyYW5zbGF0ZVNlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIEluaXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIExvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBwdWJsaWMgTGFuZ3VhZ2VzVmlld01vZGVsOiBMYW5ndWFnZXNWaWV3TW9kZWw7XHJcblxyXG4gIHByaXZhdGUgRGVzaXJlZENvdW50cnlDb2RlOiBzdHJpbmcgPSBcIlwiO1xyXG4gIHB1YmxpYyBBY3RpdmVMYW5ndWFnZTogTGFuZ3VhZ2VWaWV3TW9kZWw7XHJcblxyXG4gIHB1YmxpYyBTZWxlY3RlZENhdGVnb3J5OiBzdHJpbmcgPSBcIkNvbW1vblwiO1xyXG4gIHB1YmxpYyBDYXRlZ29yaWVzOiBBcnJheTxzdHJpbmc+O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIFRyYW5zbGF0ZUFwaUNsaWVudDogVHJhbnNsYXRlQXBpQ2xpZW50LCBwdWJsaWMgTmF2aWdhdGVTZXJ2aWNlOiBOYXZpZ2F0ZVNlcnZpY2UpIHtcclxuICAgIHRoaXMuTmF2aWdhdGVTZXJ2aWNlLlRyYW5zbGF0ZVNlcnZpY2UgPSB0aGlzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNlbGVjdExhbmd1YWdlKGxhbmd1YWdlOiBMYW5ndWFnZVZpZXdNb2RlbCwgQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKTogdm9pZCB7XHJcbiAgICB0aGlzLkRlc2lyZWRDb3VudHJ5Q29kZSA9IGxhbmd1YWdlLmNvdW50cnlDb2RlICsgXCJcIjtcclxuICAgIHRoaXMuUHJvY2Vzc0Rlc2lyZWRDb3VudHJ5Q29kZSgpO1xyXG5cclxuICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBQcm9jZXNzUGFyYW1ldGVycyhBY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUpOiB2b2lkIHtcclxuICAgIHZhciBjb3VudHJ5Y29kZSA9IEFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldChcImxhbmd1YWdlXCIpO1xyXG5cclxuICAgIGlmIChjb3VudHJ5Y29kZSAhPSBudWxsICYmIGNvdW50cnljb2RlICE9IFwiXCIgJiYgdGhpcy5EZXNpcmVkQ291bnRyeUNvZGUgIT0gY291bnRyeWNvZGUpIHtcclxuICAgICAgdGhpcy5EZXNpcmVkQ291bnRyeUNvZGUgPSBjb3VudHJ5Y29kZTtcclxuICAgICAgdGhpcy5Qcm9jZXNzRGVzaXJlZENvdW50cnlDb2RlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgTG9hZFRyYW5zbGF0aW9ucyhDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5Jbml0KSB7XHJcbiAgICAgIHRoaXMuSW5pdCA9IHRydWU7XHJcbiAgICAgIHRoaXMuTG9hZGluZyA9IHRydWU7XHJcbiAgICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICAgIHRoaXMuVHJhbnNsYXRlQXBpQ2xpZW50LmdldExhbmd1YWdlc1ZpZXdNb2RlbCgpLnN1YnNjcmliZSgobW9kZWw6IExhbmd1YWdlc1ZpZXdNb2RlbCkgPT4ge1xyXG4gICAgICAgIHRoaXMuTGFuZ3VhZ2VzVmlld01vZGVsID0gbW9kZWw7XHJcblxyXG4gICAgICAgIHZhciBjYXRzID0gdGhpcy5HZXRDYXRlZ29yaWVzKCk7XHJcbiAgICAgICAgdGhpcy5DYXRlZ29yaWVzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcclxuXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYXRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICB0aGlzLkNhdGVnb3JpZXMucHVzaChjYXRzW2ldLm5hbWUgYXMgc3RyaW5nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuQ2F0ZWdvcmllcy5wdXNoKFwiQ2F0ZWdvcmllc1wiKTtcclxuICAgICAgICB0aGlzLkNhdGVnb3JpZXMucHVzaChcIlByb2R1Y3RzXCIpO1xyXG4gICAgICAgIHRoaXMuQ2F0ZWdvcmllcy5wdXNoKFwiRGVzY3JpcHRpb25cIik7XHJcbiAgICAgICAgdGhpcy5DYXRlZ29yaWVzLnB1c2goXCJBZmJlZWxkaW5nXCIpO1xyXG4gICAgICAgIHRoaXMuQ2F0ZWdvcmllcy5wdXNoKFwiRmlsdGVyXCIpO1xyXG5cclxuICAgICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgdGhpcy5Qcm9jZXNzRGVzaXJlZENvdW50cnlDb2RlKCk7XHJcblxyXG4gICAgICAgIHRoaXMuTmF2aWdhdGVTZXJ2aWNlLlJlZnJlc2hQYWdlKCk7XHJcblxyXG4gICAgICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgICAgYWxlcnQoZXJyb3IuanNvbigpKTtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICAgIGFsZXJ0KGVycm9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvd1NwZWNpZmljYXRpb24oKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5BY3RpdmVMYW5ndWFnZSAhPSBudWxsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLkFjdGl2ZUxhbmd1YWdlLnNob3dTcGVjaWZpY2F0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93KCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuTG9hZGluZykge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuTGFuZ3VhZ2VzVmlld01vZGVsPy5sYW5ndWFnZXMgIT0gbnVsbCkge1xyXG4gICAgICBpZiAodGhpcy5MYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzLmxlbmd0aCA8IDIpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRBY3RpdmVWYWx1ZShjYXRlZ29yeTogc3RyaW5nLCBrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5BY3RpdmVMYW5ndWFnZSAhPSBudWxsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLkdldFZhbHVlKHRoaXMuQWN0aXZlTGFuZ3VhZ2UsIGNhdGVnb3J5LCBrZXkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldFZhbHVlKGxhbmd1YWdlOiBMYW5ndWFnZVZpZXdNb2RlbCwgY2F0ZWdvcnk6IHN0cmluZywga2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgdmFyIGNhdGFycmF5ID0gbGFuZ3VhZ2UuY2F0ZWdvcmllcztcclxuICAgIGlmIChjYXRhcnJheSAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2F0YXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoY2F0YXJyYXlbaV0ubmFtZT8udG9Mb3dlckNhc2UoKSA9PSBjYXRlZ29yeS50b0xvd2VyQ2FzZSgpKSB7XHJcblxyXG4gICAgICAgICAgdmFyIGtleXNhcnJheSA9IGNhdGFycmF5W2ldLmtleXNcclxuICAgICAgICAgIGlmIChrZXlzYXJyYXkgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGtleXNhcnJheS5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgIGlmIChrZXlzYXJyYXlbal0ubmFtZT8udG9Mb3dlckNhc2UoKSA9PSBrZXkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGVudHJpZXNhcnJheSA9IGtleXNhcnJheVtqXS5lbnRyaWVzO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChlbnRyaWVzYXJyYXkgIT0gbnVsbCAmJiBlbnRyaWVzYXJyYXkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gZW50cmllc2FycmF5WzBdLnZhbHVlIGFzIHN0cmluZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY2F0ZWdvcnkgKyBcIi1cIiArIGtleTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRBY3RpdmVWYWx1ZUNhdGVnb3J5KGNhdElkOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuQWN0aXZlTGFuZ3VhZ2UgIT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5HZXRWYWx1ZUNhdGVnb3J5KHRoaXMuQWN0aXZlTGFuZ3VhZ2UsIGNhdElkKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRWYWx1ZUNhdGVnb3J5KGxhbmd1YWdlOiBMYW5ndWFnZVZpZXdNb2RlbCwgY2F0SWQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICB2YXIgY2F0YXJyYXkgPSBsYW5ndWFnZS5jYXRlZ29yeUVudHJpZXM7XHJcbiAgICBpZiAoY2F0YXJyYXkgIT0gbnVsbCkge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhdGFycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGNhdGFycmF5W2ldLmNhdGVnb3J5SWQgPT0gY2F0SWQpIHtcclxuICAgICAgICAgIHJldHVybiBjYXRhcnJheVtpXS52YWx1ZSBhcyBzdHJpbmc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0QWN0aXZlVmFsdWVCQ0JFaWdlbnNjaGFwVG9lYmVob3JlbihiY2JFaWdlbnNjaGFwVG9lYmVob3JlbklkOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuQWN0aXZlTGFuZ3VhZ2UgIT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5HZXRWYWx1ZUJDQkVpZ2Vuc2NoYXBUb2ViZWhvcmVuKHRoaXMuQWN0aXZlTGFuZ3VhZ2UsIGJjYkVpZ2Vuc2NoYXBUb2ViZWhvcmVuSWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldFZhbHVlQkNCRWlnZW5zY2hhcFRvZWJlaG9yZW4obGFuZ3VhZ2U6IExhbmd1YWdlVmlld01vZGVsLCBiY2JFaWdlbnNjaGFwVG9lYmVob3JlbklkOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgdmFyIGJjYmVpZ2Vuc2NoYXBhcnJheSA9IGxhbmd1YWdlLmJjYkVpZ2Vuc2NoYXBUb2ViZWhvcmVuRW50cmllcztcclxuICAgIGlmIChiY2JlaWdlbnNjaGFwYXJyYXkgIT0gbnVsbCkge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJjYmVpZ2Vuc2NoYXBhcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChiY2JlaWdlbnNjaGFwYXJyYXlbaV0uYmNiRWlnZW5zY2hhcFRvZWJlaG9yZW5JZCA9PSBiY2JFaWdlbnNjaGFwVG9lYmVob3JlbklkKSB7XHJcbiAgICAgICAgICByZXR1cm4gYmNiZWlnZW5zY2hhcGFycmF5W2ldLnZhbHVlIGFzIHN0cmluZztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRBY3RpdmVWYWx1ZVByb2R1Y3QocHJvZHVjdElkOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuQWN0aXZlTGFuZ3VhZ2UgIT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5HZXRWYWx1ZVByb2R1Y3QodGhpcy5BY3RpdmVMYW5ndWFnZSwgcHJvZHVjdElkKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRWYWx1ZVByb2R1Y3QobGFuZ3VhZ2U6IExhbmd1YWdlVmlld01vZGVsLCBwcm9kdWN0SWQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICB2YXIgcHJvZGFycmF5ID0gbGFuZ3VhZ2UucHJvZHVjdEVudHJpZXM7XHJcbiAgICBpZiAocHJvZGFycmF5ICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9kYXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAocHJvZGFycmF5W2ldLnByb2R1Y3RJZCA9PSBwcm9kdWN0SWQpIHtcclxuICAgICAgICAgIHJldHVybiBwcm9kYXJyYXlbaV0udmFsdWUgYXMgc3RyaW5nO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldEFjdGl2ZVZhbHVlUmFuZ2VJbnB1dChyYW5nZUlucHV0SWQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5BY3RpdmVMYW5ndWFnZSAhPSBudWxsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLkdldFZhbHVlUmFuZ2VJbnB1dCh0aGlzLkFjdGl2ZUxhbmd1YWdlLCByYW5nZUlucHV0SWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldFZhbHVlUmFuZ2VJbnB1dChsYW5ndWFnZTogTGFuZ3VhZ2VWaWV3TW9kZWwsIHJhbmdlSW5wdXRJZDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHZhciByYW5nZWFycmF5ID0gbGFuZ3VhZ2UucmFuZ2VJbnB1dEVudHJpZXM7XHJcbiAgICBpZiAocmFuZ2VhcnJheSAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmFuZ2VhcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChyYW5nZWFycmF5W2ldLnJhbmdlSW5wdXRJZCA9PSByYW5nZUlucHV0SWQpIHtcclxuICAgICAgICAgIHJldHVybiByYW5nZWFycmF5W2ldLnZhbHVlIGFzIHN0cmluZztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRBY3RpdmVWYWx1ZUZpbHRlcihmaWx0ZXJJZDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLkFjdGl2ZUxhbmd1YWdlICE9IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuR2V0VmFsdWVGaWx0ZXIodGhpcy5BY3RpdmVMYW5ndWFnZSwgZmlsdGVySWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldFZhbHVlRmlsdGVyKGxhbmd1YWdlOiBMYW5ndWFnZVZpZXdNb2RlbCwgZmlsdGVySWQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICB2YXIgZmlsdGVyYXJyYXkgPSBsYW5ndWFnZS5maWx0ZXJFbnRyaWVzO1xyXG4gICAgaWYgKGZpbHRlcmFycmF5ICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWx0ZXJhcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChmaWx0ZXJhcnJheVtpXS5maWx0ZXJJZCA9PSBmaWx0ZXJJZCkge1xyXG4gICAgICAgICAgcmV0dXJuIGZpbHRlcmFycmF5W2ldLnZhbHVlIGFzIHN0cmluZztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRBY3RpdmVWYWx1ZUZpbHRlck9wdGlvbihmaWx0ZXJPcHRpb25JZDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLkFjdGl2ZUxhbmd1YWdlICE9IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuR2V0VmFsdWVGaWx0ZXJPcHRpb24odGhpcy5BY3RpdmVMYW5ndWFnZSwgZmlsdGVyT3B0aW9uSWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldFZhbHVlRmlsdGVyT3B0aW9uKGxhbmd1YWdlOiBMYW5ndWFnZVZpZXdNb2RlbCwgZmlsdGVyT3B0aW9uSWQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICB2YXIgZmlsdGVyYXJyYXkgPSBsYW5ndWFnZS5maWx0ZXJPcHRpb25FbnRyaWVzO1xyXG4gICAgaWYgKGZpbHRlcmFycmF5ICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWx0ZXJhcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChmaWx0ZXJhcnJheVtpXS5maWx0ZXJPcHRpb25JZCA9PSBmaWx0ZXJPcHRpb25JZCkge1xyXG4gICAgICAgICAgcmV0dXJuIGZpbHRlcmFycmF5W2ldLnZhbHVlIGFzIHN0cmluZztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRBY3RpdmVWYWx1ZURlc2NyaXB0aW9uKGJjYlByb2R1Y3RJZDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLkFjdGl2ZUxhbmd1YWdlICE9IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuR2V0VmFsdWVEZXNjcmlwdGlvbih0aGlzLkFjdGl2ZUxhbmd1YWdlLCBiY2JQcm9kdWN0SWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldFZhbHVlRGVzY3JpcHRpb24obGFuZ3VhZ2U6IExhbmd1YWdlVmlld01vZGVsLCBiY2JQcm9kdWN0SWQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICB2YXIgZGVzY3JpcHRpb25hcnJheSA9IGxhbmd1YWdlLmRlc2NyaXB0aW9uRW50cmllcztcclxuICAgIGlmIChkZXNjcmlwdGlvbmFycmF5ICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZXNjcmlwdGlvbmFycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGRlc2NyaXB0aW9uYXJyYXlbaV0uYmNiUHJvZHVjdElkID09IGJjYlByb2R1Y3RJZCkge1xyXG4gICAgICAgICAgcmV0dXJuIGRlc2NyaXB0aW9uYXJyYXlbaV0udmFsdWUgYXMgc3RyaW5nO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldEFjdGl2ZVZhbHVlQWZiZWVsZGluZyhiY2JQcm9kdWN0QWZiZWVsZGluZ0lkOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuQWN0aXZlTGFuZ3VhZ2UgIT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5HZXRWYWx1ZUFmYmVlbGRpbmcodGhpcy5BY3RpdmVMYW5ndWFnZSwgYmNiUHJvZHVjdEFmYmVlbGRpbmdJZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0VmFsdWVBZmJlZWxkaW5nKGxhbmd1YWdlOiBMYW5ndWFnZVZpZXdNb2RlbCwgYmNiUHJvZHVjdEFmYmVlbGRpbmdJZDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHZhciBhZmJlZWxkaW5nYXJyYXkgPSBsYW5ndWFnZS5hZmJlZWxkaW5nRW50cmllcztcclxuICAgIGlmIChhZmJlZWxkaW5nYXJyYXkgIT0gbnVsbCkge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFmYmVlbGRpbmdhcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChhZmJlZWxkaW5nYXJyYXlbaV0uYmNiUHJvZHVjdEFmYmVlbGRpbmdJZCA9PSBiY2JQcm9kdWN0QWZiZWVsZGluZ0lkKSB7XHJcbiAgICAgICAgICByZXR1cm4gYWZiZWVsZGluZ2FycmF5W2ldLnZhbHVlIGFzIHN0cmluZztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRDYXRlZ29yaWVzKCk6IEFycmF5PFRyYW5zbGF0ZUtleUNhdGVnb3J5Vmlld01vZGVsPiB7XHJcblxyXG4gICAgaWYgKHRoaXMuTGFuZ3VhZ2VzVmlld01vZGVsPy5sYW5ndWFnZXMgIT0gbnVsbCAmJiB0aGlzLkxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXMubGVuZ3RoID4gMCAmJiB0aGlzLkxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXNbMF0uY2F0ZWdvcmllcyAhPSBudWxsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLkxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXNbMF0uY2F0ZWdvcmllcztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gbmV3IEFycmF5PFRyYW5zbGF0ZUtleUNhdGVnb3J5Vmlld01vZGVsPigpOztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRBY3RpdmVDYXRlZ29yaWUoKTogVHJhbnNsYXRlS2V5Q2F0ZWdvcnlWaWV3TW9kZWwgfCBudWxsIHtcclxuICAgIHZhciBjYXRzID0gdGhpcy5HZXRDYXRlZ29yaWVzKCk7XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYXRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmIChjYXRzW2ldLm5hbWUgPT0gdGhpcy5TZWxlY3RlZENhdGVnb3J5KSB7XHJcbiAgICAgICAgcmV0dXJuIGNhdHNbaV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgUHJvY2Vzc0Rlc2lyZWRDb3VudHJ5Q29kZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLkxhbmd1YWdlc1ZpZXdNb2RlbD8ubGFuZ3VhZ2VzICE9IG51bGwpIHtcclxuICAgICAgaWYgKHRoaXMuRGVzaXJlZENvdW50cnlDb2RlID09IFwiXCIpIHtcclxuICAgICAgICB0aGlzLlNldEFjdGl2ZUxhbmd1YWdlKHRoaXMuTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlc1swXSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLkxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmICh0aGlzLkxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXNbaV0uY291bnRyeUNvZGU/LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSB0aGlzLkRlc2lyZWRDb3VudHJ5Q29kZS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuU2V0QWN0aXZlTGFuZ3VhZ2UodGhpcy5MYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzW2ldKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgU2V0QWN0aXZlTGFuZ3VhZ2UobGFuZ3VhZ2U6IExhbmd1YWdlVmlld01vZGVsKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5BY3RpdmVMYW5ndWFnZSAhPSBsYW5ndWFnZSkge1xyXG4gICAgICB0aGlzLkFjdGl2ZUxhbmd1YWdlID0gbGFuZ3VhZ2U7XHJcblxyXG4gICAgICB0aGlzLk5hdmlnYXRlU2VydmljZS5SZWZyZXNoUGFnZSgpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=