asp-lib 1.0.38 → 1.0.40

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.
@@ -35,21 +35,24 @@ export class MenuAdminComponent {
35
35
  this.newNodeIdSubject = new Subject();
36
36
  this.search.valueChanges.pipe(debounceTime(300)).subscribe({
37
37
  next: (newSearch) => {
38
- let newFiltered = new Set();
39
- this.editedTree.forEach(node => {
40
- if (node.label?.toLowerCase().includes(newSearch?.toLowerCase() ?? '')) {
41
- [...(node.ancestorIds ?? []), node.id].forEach(nodeId => newFiltered.add(nodeId));
42
- }
43
- });
44
- this.filterNodes = newFiltered;
45
- if (Boolean(newSearch)) {
46
- this.expandedNodes = new Set(Array.from(newFiltered));
47
- }
48
- else {
49
- this.expandedNodes = new Set();
50
- }
38
+ this.searchFilter(newSearch);
39
+ }
40
+ });
41
+ }
42
+ searchFilter(newSearch) {
43
+ let newFiltered = new Set();
44
+ this.editedTree.forEach(node => {
45
+ if (node.label?.toLowerCase().includes(newSearch?.toLowerCase() ?? '')) {
46
+ [...(node.ancestorIds ?? []), node.id].forEach(nodeId => newFiltered.add(nodeId));
51
47
  }
52
48
  });
49
+ this.filterNodes = newFiltered;
50
+ if (Boolean(newSearch)) {
51
+ this.expandedNodes = new Set(Array.from(newFiltered));
52
+ }
53
+ else {
54
+ this.expandedNodes = new Set();
55
+ }
53
56
  }
54
57
  onKeyUp($event) {
55
58
  }
@@ -120,6 +123,7 @@ export class MenuAdminComponent {
120
123
  if (response.responseCode === 200) {
121
124
  successCount++;
122
125
  changes = changes.map(opt => ({ ...opt, parentId: opt['parentId'] === parentTempId ? response.load.id : opt['parentId'] }));
126
+ option['id'] = response.load.id;
123
127
  }
124
128
  else {
125
129
  errorCount--;
@@ -130,6 +134,7 @@ export class MenuAdminComponent {
130
134
  }
131
135
  }
132
136
  this.validSuccess("Cambios Guardados", "Ocurrió un error al guardar los cambios", successCount, errorCount, changes.length);
137
+ this.searchFilter(null);
133
138
  // changes.forEach((option, index) => {
134
139
  // this.securityAdminService.saveMenuOption(option).subscribe({
135
140
  // next: (response: any) => {
@@ -278,4 +283,4 @@ function flattenTree(tree, mapNode = (node) => node, level = 0, prevAncestors =
278
283
  function unFlatten(flatTree) {
279
284
  let response = flatTree.reduce((acc, current) => [...acc,], []);
280
285
  }
281
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1hZG1pbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3AtbGliL3NyYy9saWIvbWVudS1hZG1pbi9tZW51LWFkbWluLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FzcC1saWIvc3JjL2xpYi9tZW51LWFkbWluL21lbnUtYWRtaW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU83QyxPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHNUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7Ozs7Ozs7Ozs7OztBQWlCeEYsQ0FBQztBQVFGLE1BQU0sT0FBTyxrQkFBa0I7SUFVOUIsSUFBSSx1QkFBdUIsS0FBSyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyx1QkFBdUIsQ0FBQSxDQUFDLENBQUM7SUFHMUYsWUFBb0IsSUFBZ0IsRUFBVSxvQkFBMEMsRUFBVSxRQUF5QixFQUFVLGFBQTRCLEVBQVUsTUFBaUI7UUFBeEssU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQVpuTCxVQUFLLEdBQVcsU0FBUyxDQUFDO1FBQ25DLGFBQVEsR0FBVSxFQUFFLENBQUM7UUFDckIsb0JBQWUsR0FBVSxFQUFFLENBQUM7UUFDNUIsV0FBTSxHQUFHLElBQUksV0FBVyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLGtC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Q0FBQyxFQUFFLGdCQUFtQyxFQUFFO0lBQzVJLElBQUksUUFBUSxHQUFlLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLGFBQWEsQ0FBQyxFQUFFLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxhQUFhLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzVLLE9BQU8sUUFBUSxDQUFDO0FBQ2pCLENBQUM7QUFHRCxTQUFTLFNBQVMsQ0FBQyxRQUFvQjtJQUV0QyxJQUFJLFFBQVEsR0FBZSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0FBQzVFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbGF0VHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRUcmVlRmxhdERhdGFTb3VyY2UsIE1hdFRyZWVGbGF0dGVuZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90cmVlJztcclxuaW1wb3J0IHsgRm9ybUZpZWxkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIENka0Ryb3BMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IFNlY3VyaXR5QWRtaW5TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc2VjdXJpdHktYWRtaW4uc2VydmljZSc7XHJcbmltcG9ydCB7IFNuYWNrYmFyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NuYWNrYmFyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGxhc3RWYWx1ZUZyb20sIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgTW92ZU1lbnVPcHRpb25Db21wb25lbnQgfSBmcm9tICcuLi9tb3ZlLW1lbnUtb3B0aW9uL21vdmUtbWVudS1vcHRpb24uY29tcG9uZW50JztcclxuXHJcblxyXG5pbnRlcmZhY2UgVHJlZU5vZGUge1xyXG5cdGlkOiBudW1iZXIgfCBudWxsLFxyXG5cdHBhcmVudElkOiBudW1iZXIgfCBudWxsO1xyXG5cdGFuY2VzdG9ySWRzOiAobnVtYmVyIHwgbnVsbClbXTtcclxuXHRsYWJlbD86IHN0cmluZyxcclxuXHRuYW1lPzogc3RyaW5nLFxyXG5cdGNoaWxkcmVuOiBUcmVlTm9kZVtdO1xyXG5cdGxldmVsPzogbnVtYmVyO1xyXG59XHJcblxyXG5cclxuaW50ZXJmYWNlIE5vZGVGb3JtIHtcclxuXHR0aXRsZTogeyB0ZXh0OiBzdHJpbmcsIHN0eWxlPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB9LFxyXG5cdGZpZWxkczogRm9ybUZpZWxkW11cclxufTtcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2xpYi1tZW51LWFkbWluJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vbWVudS1hZG1pbi5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4uL2Fzc2V0cy9mb250cy9zdHlsZS5jc3MnLCAnLi4vYXNzZXRzL3RoZW1lLnNjc3MnLCAnLi9tZW51LWFkbWluLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIE1lbnVBZG1pbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblx0QElucHV0KCkgdGhlbWU6IHN0cmluZyA9ICdkZWZhdWx0JztcclxuXHR0cmVlRGF0YTogYW55W10gPSBbXTtcclxuXHR1bmZsYXR0ZW5lZFRyZWU6IGFueVtdID0gW107XHJcblx0c2VhcmNoID0gbmV3IEZvcm1Db250cm9sPHN0cmluZz4oJycpO1xyXG5cdGxvYWRpbmdTdGF0dXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRlZGl0ZWRUcmVlOiBUcmVlTm9kZVtdID0gW107XHJcblx0c2VsZWN0ZWROb2RlOiBUcmVlTm9kZSA9IHsgaWQ6IC0xLCBwYXJlbnRJZDogbnVsbCwgbGFiZWw6ICcnLCBjaGlsZHJlbjogW10sIGFuY2VzdG9ySWRzOiBbXSB9O1xyXG5cdGV4cGFuZGVkTm9kZXMgPSBuZXcgU2V0KCk7XHJcblx0ZmlsdGVyTm9kZXMgPSBuZXcgU2V0KCk7XHJcblx0Z2V0IG1lbnVPcHRpb25Gb3JtQ29tcG9uZW50KCkgeyByZXR1cm4gdGhpcy5zZWN1cml0eUFkbWluU2VydmljZS5tZW51T3B0aW9uRm9ybUNvbXBvbmVudCB9XHJcblxyXG5cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgc2VjdXJpdHlBZG1pblNlcnZpY2U6IFNlY3VyaXR5QWRtaW5TZXJ2aWNlLCBwcml2YXRlIHNuYWNrYmFyOiBTbmFja2JhclNlcnZpY2UsIHByaXZhdGUgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSwgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZykge1xyXG5cdFx0dGhpcy5zZWFyY2gudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpLnN1YnNjcmliZSh7XHJcblx0XHRcdG5leHQ6IChuZXdTZWFyY2gpID0+IHtcclxuXHRcdFx0XHRsZXQgbmV3RmlsdGVyZWQgPSBuZXcgU2V0KCk7XHJcblx0XHRcdFx0dGhpcy5lZGl0ZWRUcmVlLmZvckVhY2gobm9kZSA9PiB7XHJcblx0XHRcdFx0XHRpZiAobm9kZS5sYWJlbD8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhuZXdTZWFyY2g/LnRvTG93ZXJDYXNlKCkgPz8gJycpKSB7XHJcblx0XHRcdFx0XHRcdFsuLi4obm9kZS5hbmNlc3RvcklkcyA/PyBbXSksIG5vZGUuaWRdLmZvckVhY2gobm9kZUlkID0+IG5ld0ZpbHRlcmVkLmFkZChub2RlSWQpKVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdHRoaXMuZmlsdGVyTm9kZXMgPSBuZXdGaWx0ZXJlZDtcclxuXHRcdFx0XHRpZiAoQm9vbGVhbihuZXdTZWFyY2gpKSB7XHJcblx0XHRcdFx0XHR0aGlzLmV4cGFuZGVkTm9kZXMgPSBuZXcgU2V0KEFycmF5LmZyb20obmV3RmlsdGVyZWQpKTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dGhpcy5leHBhbmRlZE5vZGVzID0gbmV3IFNldCgpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSlcclxuXHR9XHJcblxyXG5cdG9uS2V5VXAgKCRldmVudDogYW55KSB7XHJcblx0fVxyXG5cclxuXHRsb2FkVHJlZSgpIHtcclxuXHRcdHRoaXMubG9hZGluZ1N0YXR1cyA9IHRydWU7XHJcblx0XHR0aGlzLnNlY3VyaXR5QWRtaW5TZXJ2aWNlLmdldE1lbnVUcmVlKCkuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHRcdFx0XHRpZiAocmVzcG9uc2UucmVzcG9uc2VDb2RlID09PSAyMDApIHtcclxuXHRcdFx0XHRcdHRoaXMuc2VhcmNoLnNldFZhbHVlKCcnKTtcclxuXHRcdFx0XHRcdHRoaXMudHJlZURhdGEgPSBmbGF0dGVuVHJlZShyZXNwb25zZS5sb2FkKVxyXG5cdFx0XHRcdFx0dGhpcy5lZGl0ZWRUcmVlID0gZmxhdHRlblRyZWUocmVzcG9uc2UubG9hZCwgY29tcGxldGVOb2RlKTtcclxuXHRcdFx0XHRcdHRoaXMudW5mbGF0dGVuZWRUcmVlID0gcmVzcG9uc2UubG9hZDtcclxuXHRcdFx0XHRcdC8vIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gcmVzcG9uc2UubG9hZDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dGhpcy5sb2FkaW5nU3RhdHVzID0gZmFsc2U7XHJcblx0XHRcdH0sXHJcblx0XHRcdGVycm9yOiAoKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5sb2FkaW5nU3RhdHVzID0gZmFsc2U7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHRuZXdOb2RlSWQ6IG51bWJlciA9IC0yO1xyXG5cdG5ld05vZGVJZFN1YmplY3QgPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XHJcblx0bmdPbkluaXQoKSB7XHJcblx0XHR0aGlzLmxvYWRUcmVlKCk7XHJcblx0XHR0aGlzLm5ld05vZGVJZFN1YmplY3Quc3Vic2NyaWJlKHsgbmV4dDogKHZhbHVlOiBudW1iZXIpID0+IHRoaXMubmV3Tm9kZUlkID0gdmFsdWUgfSlcclxuXHR9XHJcblxyXG5cdGFkZE5vZGVUb0N1cnJlbnQoKSB7XHJcblx0XHRsZXQgbmV3Tm9kZTogVHJlZU5vZGUgPSB7IGlkOiB0aGlzLm5ld05vZGVJZCwgbGFiZWw6ICdOdWV2bycsIHBhcmVudElkOiBudWxsLCBhbmNlc3RvcklkczogW10sIGNoaWxkcmVuOiBbXSB9XHJcblx0XHRpZiAodGhpcy5zZWxlY3RlZE5vZGUuaWQgPT09IC0xKSB7XHJcblx0XHRcdHRoaXMuZWRpdGVkVHJlZSA9IFtuZXdOb2RlLCAuLi50aGlzLmVkaXRlZFRyZWVdXHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRsZXQgZm91bmRJZHggPSB0aGlzLmVkaXRlZFRyZWUuZmluZEluZGV4KG5vZGUgPT4gbm9kZS5pZCA9PT0gdGhpcy5zZWxlY3RlZE5vZGUuaWQpO1xyXG5cdFx0XHR0aGlzLmVkaXRlZFRyZWUgPSBbXHJcblx0XHRcdFx0Li4udGhpcy5lZGl0ZWRUcmVlLnNsaWNlKDAsIGZvdW5kSWR4ICsgMSksXHJcblx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0Li4ubmV3Tm9kZSxcclxuXHRcdFx0XHRcdHBhcmVudElkOiB0aGlzLnNlbGVjdGVkTm9kZS5pZCxcclxuXHRcdFx0XHRcdGxldmVsOiAodGhpcy5zZWxlY3RlZE5vZGUubGV2ZWwgPz8gMCkgKyAxLFxyXG5cdFx0XHRcdFx0YW5jZXN0b3JJZHM6IFsuLi4odGhpcy5zZWxlY3RlZE5vZGUuYW5jZXN0b3JJZHMgPz8gW10pLCB0aGlzLnNlbGVjdGVkTm9kZS5pZCA/PyBudWxsXVxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0Li4udGhpcy5lZGl0ZWRUcmVlLnNsaWNlKGZvdW5kSWR4ICsgMSlcclxuXHRcdFx0XVxyXG5cdFx0fVxyXG5cdFx0dGhpcy5uZXdOb2RlSWRTdWJqZWN0Lm5leHQodGhpcy5uZXdOb2RlSWQgLSAxKTtcclxuXHRcdHRoaXMuZmlsdGVyTm9kZXMuYWRkKG5ld05vZGUuaWQpO1xyXG5cdFx0dGhpcy5leHBhbmRlZE5vZGVzLmFkZCh0aGlzLnNlbGVjdGVkTm9kZS5pZCk7XHJcblx0fVxyXG5cclxuXHR2YWxpZFN1Y2Nlc3Moc3VjY2Vzc01lc3NhZ2U6IHN0cmluZywgZXJyb3JNZXNzYWdlOiBzdHJpbmcsIHN1Y2Nlc3NDb3VudDogbnVtYmVyLCBmYWlsQ291bnQ6IG51bWJlciwgdGFyZ2V0Q291bnQ6IG51bWJlciwgdGFyZ2V0PzogYW55KSB7XHJcblx0XHRpZiAoKHN1Y2Nlc3NDb3VudCArIGZhaWxDb3VudCkgPT09IHRhcmdldENvdW50KSB7XHJcblx0XHRcdGlmIChmYWlsQ291bnQgPiAwKSB7XHJcblx0XHRcdFx0dGhpcy5zbmFja2Jhci53YXJuaW5nKGVycm9yTWVzc2FnZSlcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR0aGlzLnNuYWNrYmFyLnN1Y2Nlc3Moc3VjY2Vzc01lc3NhZ2UpXHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGFzeW5jIHNhdmVDaGFuZ2VzKCkge1xyXG5cdFx0dGhpcy5zbmFja2Jhci5pbmZvKCdHdWFyZGFuZG8uLi4nKTtcclxuXHRcdGxldCBjaGFuZ2VzID0gY2hhbmdlZEl0ZW1zKHRoaXMudHJlZURhdGEsIHRoaXMuZWRpdGVkVHJlZSlcclxuXHRcdGxldCBzdWNjZXNzQ291bnQgPSAwO1xyXG5cdFx0bGV0IGVycm9yQ291bnQgPSAwO1xyXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBjaGFuZ2VzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdGxldCBvcHRpb24gPSBjaGFuZ2VzW2ldO1xyXG5cdFx0XHR0cnkge1xyXG5cdFx0XHRcdGxldCBwYXJlbnRUZW1wSWQgPSBvcHRpb25bJ2lkJ107XHJcblx0XHRcdFx0bGV0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBsYXN0VmFsdWVGcm9tKHRoaXMuc2VjdXJpdHlBZG1pblNlcnZpY2Uuc2F2ZU1lbnVPcHRpb24ob3B0aW9uKSk7XHJcblx0XHRcdFx0aWYgKHJlc3BvbnNlLnJlc3BvbnNlQ29kZSA9PT0gMjAwKSB7XHJcblx0XHRcdFx0XHRzdWNjZXNzQ291bnQrKztcclxuXHRcdFx0XHRcdGNoYW5nZXMgPSBjaGFuZ2VzLm1hcChvcHQgPT4gKHsgLi4ub3B0LCBwYXJlbnRJZDogb3B0WydwYXJlbnRJZCddID09PSBwYXJlbnRUZW1wSWQgPyByZXNwb25zZS5sb2FkLmlkIDogb3B0WydwYXJlbnRJZCddIH0pKVxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRlcnJvckNvdW50LS07XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGNhdGNoIChlcnJvcikge1xyXG5cdFx0XHRcdGVycm9yQ291bnQtLTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0dGhpcy52YWxpZFN1Y2Nlc3MoXCJDYW1iaW9zIEd1YXJkYWRvc1wiLCBcIk9jdXJyacOzIHVuIGVycm9yIGFsIGd1YXJkYXIgbG9zIGNhbWJpb3NcIiwgc3VjY2Vzc0NvdW50LCBlcnJvckNvdW50LCBjaGFuZ2VzLmxlbmd0aClcclxuXHJcblxyXG5cclxuXHRcdC8vIGNoYW5nZXMuZm9yRWFjaCgob3B0aW9uLCBpbmRleCkgPT4ge1xyXG5cdFx0Ly8gXHR0aGlzLnNlY3VyaXR5QWRtaW5TZXJ2aWNlLnNhdmVNZW51T3B0aW9uKG9wdGlvbikuc3Vic2NyaWJlKHtcclxuXHRcdC8vIFx0XHRuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0Ly8gXHRcdFx0bGV0IHBhcmVudFJlbGF0aW9uID0gb3B0aW9uWydpZCddO1xyXG5cdFx0Ly8gXHRcdFx0aWYgKHJlc3BvbnNlLnJlc3BvbnNlQ29kZSA9PT0gMjAwKSB7XHJcblx0XHQvLyBcdFx0XHRcdGNoYW5nZXMgPSBjaGFuZ2VzLm1hcChvcHQgPT4gKHsgLi4ub3B0LCBwYXJlbnRJZDogb3B0WydwYXJlbnRJZCddID09PSBwYXJlbnRSZWxhdGlvbiA/IHJlc3BvbnNlLmxvYWQuaWQgOiBvcHRbJ3BhcmVudElkJ10gfSkpXHJcblx0XHQvLyBcdFx0XHRcdHN1Y2Nlc3NDb3VudCsrO1xyXG5cdFx0Ly8gXHRcdFx0fSBlbHNlIHtcclxuXHRcdC8vIFx0XHRcdFx0ZXJyb3JDb3VudCsrO1xyXG5cdFx0Ly8gXHRcdFx0fVxyXG5cdFx0Ly8gXHRcdFx0dGhpcy52YWxpZFN1Y2Nlc3MoXCJDYW1iaW9zIEd1YXJkYWRvc1wiLCBcIk9jdXJyacOzIHVuIGVycm9yIGFsIGd1YXJkYXIgbG9zIGNhbWJpb3NcIiwgc3VjY2Vzc0NvdW50LCBlcnJvckNvdW50LCBjaGFuZ2VzLmxlbmd0aClcclxuXHRcdC8vIFx0XHR9LFxyXG5cdFx0Ly8gXHRcdGVycm9yOiAoKSA9PiB7XHJcblx0XHQvLyBcdFx0XHRlcnJvckNvdW50Kys7XHJcblx0XHQvLyBcdFx0XHR0aGlzLnZhbGlkU3VjY2VzcyhcIkNhbWJpb3MgR3VhcmRhZG9zXCIsIFwiT2N1cnJpw7MgdW4gZXJyb3IgYWwgZ3VhcmRhciBsb3MgY2FtYmlvc1wiLCBzdWNjZXNzQ291bnQsIGVycm9yQ291bnQsIGNoYW5nZXMubGVuZ3RoKVxyXG5cdFx0Ly8gXHRcdH1cclxuXHRcdC8vIFx0fSlcclxuXHRcdC8vIH0pXHJcblxyXG5cdH1cclxuXHJcblx0ZGVsZXRlT3B0aW9uKG9wdGlvbjogVHJlZU5vZGUpIHtcclxuXHRcdHRoaXMuc25hY2tiYXIuaW5mbygnRWxpbWluYW5kby4uLicpXHJcblx0XHRpZiAodGhpcy5lZGl0ZWRUcmVlLnNvbWUobm9kZSA9PiAoKG5vZGUuaWQgPz8gLSAyKSA+IC0xKSAmJiBub2RlLnBhcmVudElkID09PSBvcHRpb24uaWQpKSB7XHJcblx0XHRcdHRoaXMuc25hY2tiYXIud2FybmluZyhgTm8gc2UgcHVlZGUgZWxpbWluYXIgXCIke29wdGlvbi5sYWJlbH1cIiBwb3JxdWUgY29udGllbmUgbcOhcyBvcGNpb25lc2AsIDUwMDApO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHR0aGlzLnNlY3VyaXR5QWRtaW5TZXJ2aWNlLmRlbGV0ZU1lbnVPcHRpb24ob3B0aW9uKS5zdWJzY3JpYmUoe1xyXG5cdFx0XHRuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdHN3aXRjaCAocmVzcG9uc2UucmVzcG9uc2VDb2RlKSB7XHJcblx0XHRcdFx0XHRjYXNlIDIwMDpcclxuXHRcdFx0XHRcdFx0dGhpcy5lZGl0ZWRUcmVlID0gdGhpcy5lZGl0ZWRUcmVlLmZpbHRlcihub2RlID0+IChub2RlLmlkICE9PSBvcHRpb24uaWQpICYmICghbm9kZS5hbmNlc3Rvcklkcy5pbmNsdWRlcyhvcHRpb24uaWQpKSlcclxuXHRcdFx0XHRcdFx0dGhpcy5zbmFja2Jhci5zdWNjZXNzKGBPcGNpw7NuIFwiJHtvcHRpb24ubGFiZWx9XCIgZWxpbWluYWRhYCk7XHJcblx0XHRcdFx0XHRcdHRoaXMucmVzZXRTZWxlY3RlZE5vZGUoKVxyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdGNhc2UgMjA3OlxyXG5cdFx0XHRcdFx0XHR0aGlzLnNuYWNrYmFyLndhcm5pbmcoYE5vIHNlIHB1ZWRlIGVsaW1pbmFyIFwiJHtvcHRpb24ubGFiZWx9XCIgcG9ycXVlIGNvbnRpZW5lIG3DoXMgb3BjaW9uZXNgLCA1MDAwKVxyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHRcdHRoaXMuc25hY2tiYXIud2FybmluZyhcIk9jdXJyacOzIHVuIGVycm9yIGFsIGVsaW1pbmFyIGxhIG9wY2nDs25cIilcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnJvcjogXyA9PiB0aGlzLnNuYWNrYmFyLndhcm5pbmcoXCJPY3VycmnDsyB1biBlcnJvciBhbCBlbGltaW5hciBsYSBvcGNpw7NuXCIpXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGRlbGV0ZUN1cnJlbnROb2RlKCkge1xyXG5cdFx0aWYgKHRoaXMuc2VsZWN0ZWROb2RlLmlkICE9PSAtMSkge1xyXG5cdFx0XHRpZiAoKHRoaXMuc2VsZWN0ZWROb2RlLmlkID8/IC0xKSA+IC0xKSB7XHJcblx0XHRcdFx0dGhpcy5kaWFsb2dTZXJ2aWNlLm11bHRpT3B0aW9uKHtcclxuXHRcdFx0XHRcdG1lc3NhZ2U6IGDCv0Rlc2VhcyBlbGltaW5hciBcIiR7dGhpcy5zZWxlY3RlZE5vZGUubGFiZWx9XCI/YCxcclxuXHRcdFx0XHRcdHRoZW1lOiB0aGlzLnNlY3VyaXR5QWRtaW5TZXJ2aWNlLnRoZW1lLFxyXG5cdFx0XHRcdFx0b3B0aW9uczogW1xyXG5cdFx0XHRcdFx0XHR7IGxhYmVsOiAnRWxpbWluYXInLCBjYWxsYmFjazogKCkgPT4gdGhpcy5kZWxldGVPcHRpb24odGhpcy5zZWxlY3RlZE5vZGUpLCB0eXBlOiAncHJpbWFyeScgfSxcclxuXHRcdFx0XHRcdFx0eyBsYWJlbDogJ0NhbmNlbGFyJywgY2FsbGJhY2s6ICgpID0+IHsgfSwgdHlwZTogJ3NlY29uZGFyeScgfVxyXG5cdFx0XHRcdFx0XVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMuZWRpdGVkVHJlZSA9IHRoaXMuZWRpdGVkVHJlZS5maWx0ZXIobm9kZSA9PiAobm9kZS5pZCAhPT0gdGhpcy5zZWxlY3RlZE5vZGUuaWQpICYmICghbm9kZS5hbmNlc3Rvcklkcy5pbmNsdWRlcyh0aGlzLnNlbGVjdGVkTm9kZS5pZCkpKVxyXG5cdFx0XHRcdHRoaXMucmVzZXRTZWxlY3RlZE5vZGUoKVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRzZWxlY3RlZENsYXNzKG5vZGU6IFRyZWVOb2RlKSB7XHJcblx0XHRyZXR1cm4gbm9kZS5pZCA9PT0gdGhpcy5zZWxlY3RlZE5vZGUuaWQgPyAnc2VsZWN0ZWQnIDogJyc7XHJcblx0fVxyXG5cclxuXHRzZWxlY3ROb2RlKG5vZGU6IFRyZWVOb2RlKSB7XHJcblx0XHR0aGlzLnNlbGVjdGVkTm9kZSA9IG5vZGU7XHJcblx0fVxyXG5cclxuXHRyZXNldFNlbGVjdGVkTm9kZSgpIHtcclxuXHRcdHRoaXMuc2VsZWN0Tm9kZSh7IGlkOiAtMSwgcGFyZW50SWQ6IG51bGwsIGxhYmVsOiAnJywgY2hpbGRyZW46IFtdLCBhbmNlc3RvcklkczogW10gfSk7XHJcblx0fVxyXG5cclxuXHRpc0V4cGFuZGVkKG5vZGU6IFRyZWVOb2RlKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5leHBhbmRlZE5vZGVzLmhhcyhub2RlLmlkKTtcclxuXHR9XHJcblxyXG5cdGdldExldmVsKG5vZGU6IFRyZWVOb2RlKSB7XHJcblx0XHRyZXR1cm4gbm9kZS5hbmNlc3Rvcklkcy5sZW5ndGg7XHJcblx0fVxyXG5cclxuXHR0b2dnbGVOb2RlKG5vZGU6IFRyZWVOb2RlKSB7XHJcblx0XHR0aGlzLmV4cGFuZGVkTm9kZXMuaGFzKG5vZGUuaWQpID8gdGhpcy5leHBhbmRlZE5vZGVzLmRlbGV0ZShub2RlLmlkKSA6IHRoaXMuZXhwYW5kZWROb2Rlcy5hZGQobm9kZS5pZCk7XHJcblx0fVxyXG5cclxuXHRoYXNDaGlsZHJlbihub2RlOiBUcmVlTm9kZSkge1xyXG5cdFx0cmV0dXJuIHRoaXMuZWRpdGVkVHJlZS5maWx0ZXIobm9kZV8gPT4gbm9kZV8ucGFyZW50SWQgPT09IG5vZGUuaWQpLmxlbmd0aCA+IDA7XHJcblx0fVxyXG5cclxuXHRub2RlQ29udGFpbmVyU3R5bGUobm9kZTogVHJlZU5vZGUpIHtcclxuXHRcdHJldHVybiB7ICdwYWRkaW5nLWxlZnQnOiBgJHsyMCAqIChub2RlLmxldmVsID8/IDApfXB4YCB9XHJcblx0fVxyXG5cclxuXHRoaWRlTm9kZShub2RlOiBUcmVlTm9kZSkge1xyXG5cdFx0cmV0dXJuIChub2RlLnBhcmVudElkICE9PSBudWxsKSAmJiAoIShub2RlLmFuY2VzdG9ySWRzLmV2ZXJ5KG5vZGVJZCA9PiB0aGlzLmV4cGFuZGVkTm9kZXMuaGFzKG5vZGVJZCkpKSkgfHwgISh0aGlzLmZpbHRlck5vZGVzLmhhcyhub2RlLmlkKSk7XHJcblx0fVxyXG5cclxuXHRnZXQgZm9ybUNvbXBvbmVudElucHV0cygpIHtcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdG9wdGlvbjogdGhpcy5zZWxlY3RlZE5vZGUsXHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRtb3ZlT3B0aW9uKG5vZGU6IFRyZWVOb2RlKSB7XHJcblx0XHR0aGlzLmRpYWxvZy5vcGVuKE1vdmVNZW51T3B0aW9uQ29tcG9uZW50LHtcclxuXHRcdFx0ZGF0YTp7XHJcblx0XHRcdFx0b3B0aW9uOiBub2RlLFxyXG5cdFx0XHRcdHRyZWU6IHRoaXMudW5mbGF0dGVuZWRUcmVlXHJcblx0XHRcdH1cclxuXHRcdH0pLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKHZhbHVlKSA9PiB7XHJcblx0XHRcdFx0aWYgKHZhbHVlPy5yZWxvYWQpIHtcclxuXHRcdFx0XHRcdHRoaXMubG9hZFRyZWUoKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH0pXHJcblx0fVxyXG5cclxuXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNoYW5nZWRJdGVtcyhwcmV2aW91czogeyBba2V5OiBzdHJpbmddOiBhbnkgfVtdLCBjdXJyZW50OiB7IFtrZXk6IHN0cmluZ106IGFueSB9W10pIHtcclxuXHRsZXQgY2hhbmdlZDogeyBba2V5OiBzdHJpbmddOiBhbnk7IH1bXSA9IFtdO1xyXG5cdGN1cnJlbnQuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcclxuXHRcdGxldCBwcmV2aW91c0l0ZW0gPSBwcmV2aW91cy5maW5kKGkgPT4gaVsnaWQnXSA9PT0gaXRlbVsnaWQnXSk7XHJcblx0XHQvL2NvbnNvbGUuZXJyb3IoJyBmb3IgbG9vcCcsIHByZXZpb3VzSXRlbSwgaXRlbSk7XHJcblx0XHRpZiAocHJldmlvdXNJdGVtKSB7XHJcblx0XHRcdGZvciAobGV0IGtleSBpbiBwcmV2aW91c0l0ZW0pIHtcclxuXHRcdFx0XHRpZiAocHJldmlvdXNJdGVtW2tleV0gIT09IGl0ZW1ba2V5XSkge1xyXG5cdFx0XHRcdFx0Y2hhbmdlZC5wdXNoKGl0ZW0pO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRjaGFuZ2VkLnB1c2goaXRlbSk7XHJcblx0XHR9XHJcblxyXG5cdH0pXHJcblx0cmV0dXJuIGNoYW5nZWQ7XHJcbn1cclxuXHJcbmNvbnN0IGNvbXBsZXRlTm9kZSA9IChub2RlOiBUcmVlTm9kZSwgbGV2ZWw6IG51bWJlciwgcHJldkFuY2VzdG9yczogKG51bWJlciB8IG51bGwpW10pID0+ICh7XHJcblx0Li4ubm9kZSxcclxuXHRsZXZlbDogbGV2ZWwsXHJcblx0YW5jZXN0b3JJZHM6IChub2RlLnBhcmVudElkID09PSBudWxsKSA/IFtdIDogWy4uLnByZXZBbmNlc3RvcnNdLFxyXG59KVxyXG5cclxuZnVuY3Rpb24gZmxhdHRlblRyZWUodHJlZTogVHJlZU5vZGVbXSwgbWFwTm9kZTogRnVuY3Rpb24gPSAobm9kZTogVHJlZU5vZGUpID0+IG5vZGUsIGxldmVsOiBudW1iZXIgPSAwLCBwcmV2QW5jZXN0b3JzOiAobnVtYmVyIHwgbnVsbClbXSA9IFtdKSB7XHJcblx0bGV0IHJlc3BvbnNlOiBUcmVlTm9kZVtdID0gdHJlZS5mbGF0TWFwKG5vZGUgPT4gW21hcE5vZGUobm9kZSwgbGV2ZWwsIHByZXZBbmNlc3RvcnMpLCAuLi5mbGF0dGVuVHJlZShub2RlLmNoaWxkcmVuID8/IFtdLCBtYXBOb2RlLCBsZXZlbCArIDEsIFsuLi5wcmV2QW5jZXN0b3JzLCBub2RlLmlkXSldKVxyXG5cdHJldHVybiByZXNwb25zZTtcclxufVxyXG5cclxuXHJcbmZ1bmN0aW9uIHVuRmxhdHRlbihmbGF0VHJlZTogVHJlZU5vZGVbXSkge1xyXG5cclxuXHRsZXQgcmVzcG9uc2U6IFRyZWVOb2RlW10gPSBmbGF0VHJlZS5yZWR1Y2UoKGFjYywgY3VycmVudCkgPT4gWy4uLmFjYyxdLCBbXSlcclxufVxyXG4iLCI8ZGl2IFthdHRyLmRhdGEtdGhlbWVdPVwidGhlbWVcIiBjbGFzcz1cImxpc3RcIj5cclxuXHQ8ZGl2IGNsYXNzPVwidGl0bGUtaW5mby1oZWFkZXJcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJ0aXRsZS1pbmZvXCI+XHJcblx0XHRcdDxpIGNsYXNzPVwibWVudS1saXN0XCI+PC9pPlxyXG5cdFx0XHQ8c3BhbiBjbGFzcz1cInRpdGxlXCI+e3snTWVudScgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuXHRcdDwvZGl2PlxyXG5cdFx0PGRpdiBjbGFzcz1cImJ1dHRvbnMtc2VjdGlvblwiPlxyXG5cdFx0XHQ8YnV0dG9uIChjbGljayk9XCJhZGROb2RlVG9DdXJyZW50KClcIj48aSBjbGFzcz1cIm1lbnUtcGx1c1wiPjwvaT48L2J1dHRvbj5cclxuXHRcdFx0PGJ1dHRvbiAoY2xpY2spPVwiZGVsZXRlQ3VycmVudE5vZGUoKVwiPjxpIGNsYXNzPVwibWVudS1taW51c1wiPjwvaT48L2J1dHRvbj5cclxuXHRcdFx0PGJ1dHRvbiAoY2xpY2spPVwic2F2ZUNoYW5nZXMoKVwiPjxpIGNsYXNzPVwibWVudS1zYXZlXCI+PC9pPjwvYnV0dG9uPlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcblxyXG5cdDxkaXYgY2xhc3M9XCJzZWFyY2gtY29udGlhbmVyLW5vdGlmaWNhdGlvblwiPlxyXG5cdFx0PGxpYi1pbnB1dCBuZ0RlZmF1bHRDb250cm9sIFtmb3JtQ29udHJvbF09XCJzZWFyY2hcIiBuYW1lPVwic2VhcmNoXCIgW2xhYmVsXT1cIidTZWFyY2guLi4nIHwgdHJhbnNsYXRlXCIgW2NsZWFyQnV0dG9uXT1cInRydWVcIlxyXG5cdFx0XHRpY29uPVwibWVudS1zZWFyY2hcIiBbdGhlbWVdPVwidGhlbWVcIj48L2xpYi1pbnB1dD5cclxuXHQ8L2Rpdj5cclxuXHQ8bGliLWxvYWRlciBbdGhlbWVdPVwidGhlbWVcIiBbdHlwZV09XCInYmFyJ1wiIFtsb2FkaW5nXT1cImxvYWRpbmdTdGF0dXNcIj48L2xpYi1sb2FkZXI+XHJcblx0PGRpdiBjbGFzcz1cInRyZWUtY29udGFpbmVyXCI+XHJcblx0XHQ8IS0tIDxsaWItdHJlZSBbdHJlZV09XCJ0cmVlRGF0YVwiPjwvbGliLXRyZWU+IC0tPlxyXG5cdFx0PGRpdiAqbmdGb3I9XCJsZXQgbm9kZSBvZiBlZGl0ZWRUcmVlXCIgW2NsYXNzXT1cIlsnbm9kZS1jb250YWluZXInLCBoaWRlTm9kZShub2RlKSA/ICdoaWRlJyA6ICcnXVwiXHJcblx0XHRcdFtzdHlsZV09XCJub2RlQ29udGFpbmVyU3R5bGUobm9kZSlcIj5cclxuXHRcdFx0PGRpdiBbY2xhc3NdPVwiWydub2RlJywgc2VsZWN0ZWRDbGFzcyhub2RlKV1cIiAoY2xpY2spPVwic2VsZWN0Tm9kZShub2RlKVwiPlxyXG5cdFx0XHRcdDxkaXYgKm5nSWY9XCJoYXNDaGlsZHJlbihub2RlKVwiIChjbGljayk9XCJ0b2dnbGVOb2RlKG5vZGUpXCJcclxuXHRcdFx0XHRcdFtjbGFzc109XCJbJ3RyZWUtdG9nZ2xlJywgaXNFeHBhbmRlZChub2RlKSA/ICcnOiAncm90YXRlZCddXCI+XHJcblx0XHRcdFx0XHQ8aSBbY2xhc3NdPVwiWydtZW51LWFycm93LWRvd24nXVwiPjwvaT5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8ZGl2ICpuZ0lmPVwiIWhhc0NoaWxkcmVuKG5vZGUpXCIgY2xhc3M9XCJ0cmVlLXRvZ2dsZVwiPlxyXG5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwidHJlZS1ub2RlXCI+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XHJcblx0XHRcdFx0XHRcdDxpbnB1dCAjbm9kZU5hbWVJbnB1dCBuZ0RlZmF1bHRDb250cm9sIFsobmdNb2RlbCldPVwibm9kZS5sYWJlbFwiIC8+XHJcblx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwidHJlZS1uYW1lXCIgKGNsaWNrKT1cIm5vZGVOYW1lSW5wdXQuZm9jdXMoKVwiPnt7bm9kZS5sYWJlbH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8ZGl2ICpuZ0lmPVwiZ2V0TGV2ZWwobm9kZSkgPiAwXCIgY2xhc3M9XCJub2RlLW9wdGlvbnNcIj5cclxuXHRcdFx0XHRcdFx0PHNwYW4gKGNsaWNrKT1cIm1vdmVPcHRpb24obm9kZSlcIj5cclxuXHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cIm1lbnUtZm9sZGVyLXNlbmRcIiAqbmdJZj1cImdldExldmVsKG5vZGUpID4gMFwiPjwvaT5cclxuXHRcdFx0XHRcdFx0PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8IS0tIDxzcGFuPlxyXG5cdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwibWVudS1tb3ZlXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHQ8L3NwYW4+IC0tPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IFthdHRyLmRhdGEtdGhlbWVdPVwidGhlbWVcIiBjbGFzcz1cImVkaXRvci1wYW5lbFwiPlxyXG5cdDxkaXYgY2xhc3M9XCJlZGl0b3ItdGl0bGVcIj5cclxuXHRcdDxzcGFuIGNsYXNzPVwidGl0bGUtbGFiZWxcIj5FZGl0YXIgT3BjacOzbjwvc3Bhbj5cclxuXHRcdDxzcGFuIGNsYXNzPVwidGl0bGUtbmFtZVwiPnt7c2VsZWN0ZWROb2RlLmxhYmVsID8/IHNlbGVjdGVkTm9kZS5uYW1lID8/ICcnfX08L3NwYW4+XHJcblx0PC9kaXY+XHJcblx0PCEtLSB7e2N1cnJlbnROb2RlLm5hbWUgPz8gY3VycmVudE5vZGUubGFiZWx9fSAtLT5cclxuXHQ8bmctY29udGFpbmVyICpuZ0lmPVwibWVudU9wdGlvbkZvcm1Db21wb25lbnRcIj5cclxuXHRcdDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwibWVudU9wdGlvbkZvcm1Db21wb25lbnQ7IGlucHV0czogZm9ybUNvbXBvbmVudElucHV0c1wiPlxyXG5cclxuXHRcdDwvbmctY29udGFpbmVyPlxyXG5cclxuXHQ8L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+Il19
286
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1hZG1pbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3AtbGliL3NyYy9saWIvbWVudS1hZG1pbi9tZW51LWFkbWluLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FzcC1saWIvc3JjL2xpYi9tZW51LWFkbWluL21lbnUtYWRtaW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU83QyxPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHNUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7Ozs7Ozs7Ozs7OztBQWlCeEYsQ0FBQztBQVFGLE1BQU0sT0FBTyxrQkFBa0I7SUFVOUIsSUFBSSx1QkFBdUIsS0FBSyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyx1QkFBdUIsQ0FBQSxDQUFDLENBQUM7SUFHMUYsWUFBb0IsSUFBZ0IsRUFBVSxvQkFBMEMsRUFBVSxRQUF5QixFQUFVLGFBQTRCLEVBQVUsTUFBaUI7UUFBeEssU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQVpuTCxVQUFLLEdBQVcsU0FBUyxDQUFDO1FBQ25DLGFBQVEsR0FBVSxFQUFFLENBQUM7UUFDckIsb0JBQWUsR0FBVSxFQUFFLENBQUM7UUFDNUIsV0FBTSxHQUFHLElBQUksV0FBVyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLGtC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S0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDO0NBQy9ELENBQUMsQ0FBQTtBQUVGLFNBQVMsV0FBVyxDQUFDLElBQWdCLEVBQUUsVUFBb0IsQ0FBQyxJQUFjLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxRQUFnQixDQUFDLEVBQUUsZ0JBQW1DLEVBQUU7SUFDNUksSUFBSSxRQUFRLEdBQWUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsYUFBYSxDQUFDLEVBQUUsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGFBQWEsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDNUssT0FBTyxRQUFRLENBQUM7QUFDakIsQ0FBQztBQUdELFNBQVMsU0FBUyxDQUFDLFFBQW9CO0lBRXRDLElBQUksUUFBUSxHQUFlLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUE7QUFDNUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZsYXRUcmVlQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90cmVlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdFRyZWVGbGF0RGF0YVNvdXJjZSwgTWF0VHJlZUZsYXR0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RyZWUnO1xyXG5pbXBvcnQgeyBGb3JtRmllbGQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBDZGtEcmFnRHJvcCwgQ2RrRHJvcExpc3QgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgU2VjdXJpdHlBZG1pblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zZWN1cml0eS1hZG1pbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU25hY2tiYXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc25hY2tiYXIuc2VydmljZSc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgbGFzdFZhbHVlRnJvbSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBNb3ZlTWVudU9wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL21vdmUtbWVudS1vcHRpb24vbW92ZS1tZW51LW9wdGlvbi5jb21wb25lbnQnO1xyXG5cclxuXHJcbmludGVyZmFjZSBUcmVlTm9kZSB7XHJcblx0aWQ6IG51bWJlciB8IG51bGwsXHJcblx0cGFyZW50SWQ6IG51bWJlciB8IG51bGw7XHJcblx0YW5jZXN0b3JJZHM6IChudW1iZXIgfCBudWxsKVtdO1xyXG5cdGxhYmVsPzogc3RyaW5nLFxyXG5cdG5hbWU/OiBzdHJpbmcsXHJcblx0Y2hpbGRyZW46IFRyZWVOb2RlW107XHJcblx0bGV2ZWw/OiBudW1iZXI7XHJcbn1cclxuXHJcblxyXG5pbnRlcmZhY2UgTm9kZUZvcm0ge1xyXG5cdHRpdGxlOiB7IHRleHQ6IHN0cmluZywgc3R5bGU/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IH0sXHJcblx0ZmllbGRzOiBGb3JtRmllbGRbXVxyXG59O1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnbGliLW1lbnUtYWRtaW4nLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9tZW51LWFkbWluLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi4vYXNzZXRzL2ZvbnRzL3N0eWxlLmNzcycsICcuLi9hc3NldHMvdGhlbWUuc2NzcycsICcuL21lbnUtYWRtaW4uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWVudUFkbWluQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHRASW5wdXQoKSB0aGVtZTogc3RyaW5nID0gJ2RlZmF1bHQnO1xyXG5cdHRyZWVEYXRhOiBhbnlbXSA9IFtdO1xyXG5cdHVuZmxhdHRlbmVkVHJlZTogYW55W10gPSBbXTtcclxuXHRzZWFyY2ggPSBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPignJyk7XHJcblx0bG9hZGluZ1N0YXR1czogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdGVkaXRlZFRyZWU6IFRyZWVOb2RlW10gPSBbXTtcclxuXHRzZWxlY3RlZE5vZGU6IFRyZWVOb2RlID0geyBpZDogLTEsIHBhcmVudElkOiBudWxsLCBsYWJlbDogJycsIGNoaWxkcmVuOiBbXSwgYW5jZXN0b3JJZHM6IFtdIH07XHJcblx0ZXhwYW5kZWROb2RlcyA9IG5ldyBTZXQoKTtcclxuXHRmaWx0ZXJOb2RlcyA9IG5ldyBTZXQoKTtcclxuXHRnZXQgbWVudU9wdGlvbkZvcm1Db21wb25lbnQoKSB7IHJldHVybiB0aGlzLnNlY3VyaXR5QWRtaW5TZXJ2aWNlLm1lbnVPcHRpb25Gb3JtQ29tcG9uZW50IH1cclxuXHJcblxyXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBzZWN1cml0eUFkbWluU2VydmljZTogU2VjdXJpdHlBZG1pblNlcnZpY2UsIHByaXZhdGUgc25hY2tiYXI6IFNuYWNrYmFyU2VydmljZSwgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLCBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nKSB7XHJcblx0XHR0aGlzLnNlYXJjaC52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoMzAwKSkuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKG5ld1NlYXJjaCkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuc2VhcmNoRmlsdGVyKG5ld1NlYXJjaCk7XHJcblx0XHRcdH1cclxuXHRcdH0pXHJcblx0fVxyXG5cclxuXHRzZWFyY2hGaWx0ZXIobmV3U2VhcmNoOmFueSl7XHJcblx0XHRsZXQgbmV3RmlsdGVyZWQgPSBuZXcgU2V0KCk7XHJcblx0XHRcdFx0dGhpcy5lZGl0ZWRUcmVlLmZvckVhY2gobm9kZSA9PiB7XHJcblx0XHRcdFx0XHRpZiAobm9kZS5sYWJlbD8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhuZXdTZWFyY2g/LnRvTG93ZXJDYXNlKCkgPz8gJycpKSB7XHJcblx0XHRcdFx0XHRcdFsuLi4obm9kZS5hbmNlc3RvcklkcyA/PyBbXSksIG5vZGUuaWRdLmZvckVhY2gobm9kZUlkID0+IG5ld0ZpbHRlcmVkLmFkZChub2RlSWQpKVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdHRoaXMuZmlsdGVyTm9kZXMgPSBuZXdGaWx0ZXJlZDtcclxuXHRcdFx0XHRpZiAoQm9vbGVhbihuZXdTZWFyY2gpKSB7XHJcblx0XHRcdFx0XHR0aGlzLmV4cGFuZGVkTm9kZXMgPSBuZXcgU2V0KEFycmF5LmZyb20obmV3RmlsdGVyZWQpKTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dGhpcy5leHBhbmRlZE5vZGVzID0gbmV3IFNldCgpO1xyXG5cdFx0XHRcdH1cclxuXHR9XHJcblxyXG5cdG9uS2V5VXAgKCRldmVudDogYW55KSB7XHJcblx0fVxyXG5cclxuXHRsb2FkVHJlZSgpIHtcclxuXHRcdHRoaXMubG9hZGluZ1N0YXR1cyA9IHRydWU7XHJcblx0XHR0aGlzLnNlY3VyaXR5QWRtaW5TZXJ2aWNlLmdldE1lbnVUcmVlKCkuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHRcdFx0XHRpZiAocmVzcG9uc2UucmVzcG9uc2VDb2RlID09PSAyMDApIHtcclxuXHRcdFx0XHRcdHRoaXMuc2VhcmNoLnNldFZhbHVlKCcnKTtcclxuXHRcdFx0XHRcdHRoaXMudHJlZURhdGEgPSBmbGF0dGVuVHJlZShyZXNwb25zZS5sb2FkKVxyXG5cdFx0XHRcdFx0dGhpcy5lZGl0ZWRUcmVlID0gZmxhdHRlblRyZWUocmVzcG9uc2UubG9hZCwgY29tcGxldGVOb2RlKTtcclxuXHRcdFx0XHRcdHRoaXMudW5mbGF0dGVuZWRUcmVlID0gcmVzcG9uc2UubG9hZDtcclxuXHRcdFx0XHRcdC8vIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gcmVzcG9uc2UubG9hZDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dGhpcy5sb2FkaW5nU3RhdHVzID0gZmFsc2U7XHJcblx0XHRcdH0sXHJcblx0XHRcdGVycm9yOiAoKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5sb2FkaW5nU3RhdHVzID0gZmFsc2U7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHRuZXdOb2RlSWQ6IG51bWJlciA9IC0yO1xyXG5cdG5ld05vZGVJZFN1YmplY3QgPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XHJcblx0bmdPbkluaXQoKSB7XHJcblx0XHR0aGlzLmxvYWRUcmVlKCk7XHJcblx0XHR0aGlzLm5ld05vZGVJZFN1YmplY3Quc3Vic2NyaWJlKHsgbmV4dDogKHZhbHVlOiBudW1iZXIpID0+IHRoaXMubmV3Tm9kZUlkID0gdmFsdWUgfSlcclxuXHR9XHJcblxyXG5cdGFkZE5vZGVUb0N1cnJlbnQoKSB7XHJcblx0XHRsZXQgbmV3Tm9kZTogVHJlZU5vZGUgPSB7IGlkOiB0aGlzLm5ld05vZGVJZCwgbGFiZWw6ICdOdWV2bycsIHBhcmVudElkOiBudWxsLCBhbmNlc3RvcklkczogW10sIGNoaWxkcmVuOiBbXSB9XHJcblx0XHRpZiAodGhpcy5zZWxlY3RlZE5vZGUuaWQgPT09IC0xKSB7XHJcblx0XHRcdHRoaXMuZWRpdGVkVHJlZSA9IFtuZXdOb2RlLCAuLi50aGlzLmVkaXRlZFRyZWVdXHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRsZXQgZm91bmRJZHggPSB0aGlzLmVkaXRlZFRyZWUuZmluZEluZGV4KG5vZGUgPT4gbm9kZS5pZCA9PT0gdGhpcy5zZWxlY3RlZE5vZGUuaWQpO1xyXG5cdFx0XHR0aGlzLmVkaXRlZFRyZWUgPSBbXHJcblx0XHRcdFx0Li4udGhpcy5lZGl0ZWRUcmVlLnNsaWNlKDAsIGZvdW5kSWR4ICsgMSksXHJcblx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0Li4ubmV3Tm9kZSxcclxuXHRcdFx0XHRcdHBhcmVudElkOiB0aGlzLnNlbGVjdGVkTm9kZS5pZCxcclxuXHRcdFx0XHRcdGxldmVsOiAodGhpcy5zZWxlY3RlZE5vZGUubGV2ZWwgPz8gMCkgKyAxLFxyXG5cdFx0XHRcdFx0YW5jZXN0b3JJZHM6IFsuLi4odGhpcy5zZWxlY3RlZE5vZGUuYW5jZXN0b3JJZHMgPz8gW10pLCB0aGlzLnNlbGVjdGVkTm9kZS5pZCA/PyBudWxsXVxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0Li4udGhpcy5lZGl0ZWRUcmVlLnNsaWNlKGZvdW5kSWR4ICsgMSlcclxuXHRcdFx0XVxyXG5cdFx0fVxyXG5cdFx0dGhpcy5uZXdOb2RlSWRTdWJqZWN0Lm5leHQodGhpcy5uZXdOb2RlSWQgLSAxKTtcclxuXHRcdHRoaXMuZmlsdGVyTm9kZXMuYWRkKG5ld05vZGUuaWQpO1xyXG5cdFx0dGhpcy5leHBhbmRlZE5vZGVzLmFkZCh0aGlzLnNlbGVjdGVkTm9kZS5pZCk7XHJcblx0fVxyXG5cclxuXHR2YWxpZFN1Y2Nlc3Moc3VjY2Vzc01lc3NhZ2U6IHN0cmluZywgZXJyb3JNZXNzYWdlOiBzdHJpbmcsIHN1Y2Nlc3NDb3VudDogbnVtYmVyLCBmYWlsQ291bnQ6IG51bWJlciwgdGFyZ2V0Q291bnQ6IG51bWJlciwgdGFyZ2V0PzogYW55KSB7XHJcblx0XHRpZiAoKHN1Y2Nlc3NDb3VudCArIGZhaWxDb3VudCkgPT09IHRhcmdldENvdW50KSB7XHJcblx0XHRcdGlmIChmYWlsQ291bnQgPiAwKSB7XHJcblx0XHRcdFx0dGhpcy5zbmFja2Jhci53YXJuaW5nKGVycm9yTWVzc2FnZSlcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR0aGlzLnNuYWNrYmFyLnN1Y2Nlc3Moc3VjY2Vzc01lc3NhZ2UpXHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGFzeW5jIHNhdmVDaGFuZ2VzKCkge1xyXG5cdFx0dGhpcy5zbmFja2Jhci5pbmZvKCdHdWFyZGFuZG8uLi4nKTtcclxuXHRcdGxldCBjaGFuZ2VzID0gY2hhbmdlZEl0ZW1zKHRoaXMudHJlZURhdGEsIHRoaXMuZWRpdGVkVHJlZSlcclxuXHRcdGxldCBzdWNjZXNzQ291bnQgPSAwO1xyXG5cdFx0bGV0IGVycm9yQ291bnQgPSAwO1xyXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBjaGFuZ2VzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdGxldCBvcHRpb24gPSBjaGFuZ2VzW2ldO1xyXG5cdFx0XHR0cnkge1xyXG5cdFx0XHRcdGxldCBwYXJlbnRUZW1wSWQgPSBvcHRpb25bJ2lkJ107XHJcblx0XHRcdFx0bGV0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBsYXN0VmFsdWVGcm9tKHRoaXMuc2VjdXJpdHlBZG1pblNlcnZpY2Uuc2F2ZU1lbnVPcHRpb24ob3B0aW9uKSk7XHJcblx0XHRcdFx0aWYgKHJlc3BvbnNlLnJlc3BvbnNlQ29kZSA9PT0gMjAwKSB7XHJcblx0XHRcdFx0XHRzdWNjZXNzQ291bnQrKztcclxuXHRcdFx0XHRcdGNoYW5nZXMgPSBjaGFuZ2VzLm1hcChvcHQgPT4gKHsgLi4ub3B0LCBwYXJlbnRJZDogb3B0WydwYXJlbnRJZCddID09PSBwYXJlbnRUZW1wSWQgPyByZXNwb25zZS5sb2FkLmlkIDogb3B0WydwYXJlbnRJZCddIH0pKTtcclxuXHRcdFx0XHRcdG9wdGlvblsnaWQnXSA9IHJlc3BvbnNlLmxvYWQuaWQ7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdGVycm9yQ291bnQtLTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7XHJcblx0XHRcdFx0ZXJyb3JDb3VudC0tO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHR0aGlzLnZhbGlkU3VjY2VzcyhcIkNhbWJpb3MgR3VhcmRhZG9zXCIsIFwiT2N1cnJpw7MgdW4gZXJyb3IgYWwgZ3VhcmRhciBsb3MgY2FtYmlvc1wiLCBzdWNjZXNzQ291bnQsIGVycm9yQ291bnQsIGNoYW5nZXMubGVuZ3RoKVxyXG5cclxuXHRcdHRoaXMuc2VhcmNoRmlsdGVyKG51bGwpO1xyXG5cclxuXHRcdC8vIGNoYW5nZXMuZm9yRWFjaCgob3B0aW9uLCBpbmRleCkgPT4ge1xyXG5cdFx0Ly8gXHR0aGlzLnNlY3VyaXR5QWRtaW5TZXJ2aWNlLnNhdmVNZW51T3B0aW9uKG9wdGlvbikuc3Vic2NyaWJlKHtcclxuXHRcdC8vIFx0XHRuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0Ly8gXHRcdFx0bGV0IHBhcmVudFJlbGF0aW9uID0gb3B0aW9uWydpZCddO1xyXG5cdFx0Ly8gXHRcdFx0aWYgKHJlc3BvbnNlLnJlc3BvbnNlQ29kZSA9PT0gMjAwKSB7XHJcblx0XHQvLyBcdFx0XHRcdGNoYW5nZXMgPSBjaGFuZ2VzLm1hcChvcHQgPT4gKHsgLi4ub3B0LCBwYXJlbnRJZDogb3B0WydwYXJlbnRJZCddID09PSBwYXJlbnRSZWxhdGlvbiA/IHJlc3BvbnNlLmxvYWQuaWQgOiBvcHRbJ3BhcmVudElkJ10gfSkpXHJcblx0XHQvLyBcdFx0XHRcdHN1Y2Nlc3NDb3VudCsrO1xyXG5cdFx0Ly8gXHRcdFx0fSBlbHNlIHtcclxuXHRcdC8vIFx0XHRcdFx0ZXJyb3JDb3VudCsrO1xyXG5cdFx0Ly8gXHRcdFx0fVxyXG5cdFx0Ly8gXHRcdFx0dGhpcy52YWxpZFN1Y2Nlc3MoXCJDYW1iaW9zIEd1YXJkYWRvc1wiLCBcIk9jdXJyacOzIHVuIGVycm9yIGFsIGd1YXJkYXIgbG9zIGNhbWJpb3NcIiwgc3VjY2Vzc0NvdW50LCBlcnJvckNvdW50LCBjaGFuZ2VzLmxlbmd0aClcclxuXHRcdC8vIFx0XHR9LFxyXG5cdFx0Ly8gXHRcdGVycm9yOiAoKSA9PiB7XHJcblx0XHQvLyBcdFx0XHRlcnJvckNvdW50Kys7XHJcblx0XHQvLyBcdFx0XHR0aGlzLnZhbGlkU3VjY2VzcyhcIkNhbWJpb3MgR3VhcmRhZG9zXCIsIFwiT2N1cnJpw7MgdW4gZXJyb3IgYWwgZ3VhcmRhciBsb3MgY2FtYmlvc1wiLCBzdWNjZXNzQ291bnQsIGVycm9yQ291bnQsIGNoYW5nZXMubGVuZ3RoKVxyXG5cdFx0Ly8gXHRcdH1cclxuXHRcdC8vIFx0fSlcclxuXHRcdC8vIH0pXHJcblxyXG5cdH1cclxuXHJcblx0ZGVsZXRlT3B0aW9uKG9wdGlvbjogVHJlZU5vZGUpIHtcclxuXHRcdHRoaXMuc25hY2tiYXIuaW5mbygnRWxpbWluYW5kby4uLicpXHJcblx0XHRpZiAodGhpcy5lZGl0ZWRUcmVlLnNvbWUobm9kZSA9PiAoKG5vZGUuaWQgPz8gLSAyKSA+IC0xKSAmJiBub2RlLnBhcmVudElkID09PSBvcHRpb24uaWQpKSB7XHJcblx0XHRcdHRoaXMuc25hY2tiYXIud2FybmluZyhgTm8gc2UgcHVlZGUgZWxpbWluYXIgXCIke29wdGlvbi5sYWJlbH1cIiBwb3JxdWUgY29udGllbmUgbcOhcyBvcGNpb25lc2AsIDUwMDApO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHR0aGlzLnNlY3VyaXR5QWRtaW5TZXJ2aWNlLmRlbGV0ZU1lbnVPcHRpb24ob3B0aW9uKS5zdWJzY3JpYmUoe1xyXG5cdFx0XHRuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdHN3aXRjaCAocmVzcG9uc2UucmVzcG9uc2VDb2RlKSB7XHJcblx0XHRcdFx0XHRjYXNlIDIwMDpcclxuXHRcdFx0XHRcdFx0dGhpcy5lZGl0ZWRUcmVlID0gdGhpcy5lZGl0ZWRUcmVlLmZpbHRlcihub2RlID0+IChub2RlLmlkICE9PSBvcHRpb24uaWQpICYmICghbm9kZS5hbmNlc3Rvcklkcy5pbmNsdWRlcyhvcHRpb24uaWQpKSlcclxuXHRcdFx0XHRcdFx0dGhpcy5zbmFja2Jhci5zdWNjZXNzKGBPcGNpw7NuIFwiJHtvcHRpb24ubGFiZWx9XCIgZWxpbWluYWRhYCk7XHJcblx0XHRcdFx0XHRcdHRoaXMucmVzZXRTZWxlY3RlZE5vZGUoKVxyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdGNhc2UgMjA3OlxyXG5cdFx0XHRcdFx0XHR0aGlzLnNuYWNrYmFyLndhcm5pbmcoYE5vIHNlIHB1ZWRlIGVsaW1pbmFyIFwiJHtvcHRpb24ubGFiZWx9XCIgcG9ycXVlIGNvbnRpZW5lIG3DoXMgb3BjaW9uZXNgLCA1MDAwKVxyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHRcdHRoaXMuc25hY2tiYXIud2FybmluZyhcIk9jdXJyacOzIHVuIGVycm9yIGFsIGVsaW1pbmFyIGxhIG9wY2nDs25cIilcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnJvcjogXyA9PiB0aGlzLnNuYWNrYmFyLndhcm5pbmcoXCJPY3VycmnDsyB1biBlcnJvciBhbCBlbGltaW5hciBsYSBvcGNpw7NuXCIpXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGRlbGV0ZUN1cnJlbnROb2RlKCkge1xyXG5cdFx0aWYgKHRoaXMuc2VsZWN0ZWROb2RlLmlkICE9PSAtMSkge1xyXG5cdFx0XHRpZiAoKHRoaXMuc2VsZWN0ZWROb2RlLmlkID8/IC0xKSA+IC0xKSB7XHJcblx0XHRcdFx0dGhpcy5kaWFsb2dTZXJ2aWNlLm11bHRpT3B0aW9uKHtcclxuXHRcdFx0XHRcdG1lc3NhZ2U6IGDCv0Rlc2VhcyBlbGltaW5hciBcIiR7dGhpcy5zZWxlY3RlZE5vZGUubGFiZWx9XCI/YCxcclxuXHRcdFx0XHRcdHRoZW1lOiB0aGlzLnNlY3VyaXR5QWRtaW5TZXJ2aWNlLnRoZW1lLFxyXG5cdFx0XHRcdFx0b3B0aW9uczogW1xyXG5cdFx0XHRcdFx0XHR7IGxhYmVsOiAnRWxpbWluYXInLCBjYWxsYmFjazogKCkgPT4gdGhpcy5kZWxldGVPcHRpb24odGhpcy5zZWxlY3RlZE5vZGUpLCB0eXBlOiAncHJpbWFyeScgfSxcclxuXHRcdFx0XHRcdFx0eyBsYWJlbDogJ0NhbmNlbGFyJywgY2FsbGJhY2s6ICgpID0+IHsgfSwgdHlwZTogJ3NlY29uZGFyeScgfVxyXG5cdFx0XHRcdFx0XVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMuZWRpdGVkVHJlZSA9IHRoaXMuZWRpdGVkVHJlZS5maWx0ZXIobm9kZSA9PiAobm9kZS5pZCAhPT0gdGhpcy5zZWxlY3RlZE5vZGUuaWQpICYmICghbm9kZS5hbmNlc3Rvcklkcy5pbmNsdWRlcyh0aGlzLnNlbGVjdGVkTm9kZS5pZCkpKVxyXG5cdFx0XHRcdHRoaXMucmVzZXRTZWxlY3RlZE5vZGUoKVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRzZWxlY3RlZENsYXNzKG5vZGU6IFRyZWVOb2RlKSB7XHJcblx0XHRyZXR1cm4gbm9kZS5pZCA9PT0gdGhpcy5zZWxlY3RlZE5vZGUuaWQgPyAnc2VsZWN0ZWQnIDogJyc7XHJcblx0fVxyXG5cclxuXHRzZWxlY3ROb2RlKG5vZGU6IFRyZWVOb2RlKSB7XHJcblx0XHR0aGlzLnNlbGVjdGVkTm9kZSA9IG5vZGU7XHJcblx0fVxyXG5cclxuXHRyZXNldFNlbGVjdGVkTm9kZSgpIHtcclxuXHRcdHRoaXMuc2VsZWN0Tm9kZSh7IGlkOiAtMSwgcGFyZW50SWQ6IG51bGwsIGxhYmVsOiAnJywgY2hpbGRyZW46IFtdLCBhbmNlc3RvcklkczogW10gfSk7XHJcblx0fVxyXG5cclxuXHRpc0V4cGFuZGVkKG5vZGU6IFRyZWVOb2RlKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5leHBhbmRlZE5vZGVzLmhhcyhub2RlLmlkKTtcclxuXHR9XHJcblxyXG5cdGdldExldmVsKG5vZGU6IFRyZWVOb2RlKSB7XHJcblx0XHRyZXR1cm4gbm9kZS5hbmNlc3Rvcklkcy5sZW5ndGg7XHJcblx0fVxyXG5cclxuXHR0b2dnbGVOb2RlKG5vZGU6IFRyZWVOb2RlKSB7XHJcblx0XHR0aGlzLmV4cGFuZGVkTm9kZXMuaGFzKG5vZGUuaWQpID8gdGhpcy5leHBhbmRlZE5vZGVzLmRlbGV0ZShub2RlLmlkKSA6IHRoaXMuZXhwYW5kZWROb2Rlcy5hZGQobm9kZS5pZCk7XHJcblx0fVxyXG5cclxuXHRoYXNDaGlsZHJlbihub2RlOiBUcmVlTm9kZSkge1xyXG5cdFx0cmV0dXJuIHRoaXMuZWRpdGVkVHJlZS5maWx0ZXIobm9kZV8gPT4gbm9kZV8ucGFyZW50SWQgPT09IG5vZGUuaWQpLmxlbmd0aCA+IDA7XHJcblx0fVxyXG5cclxuXHRub2RlQ29udGFpbmVyU3R5bGUobm9kZTogVHJlZU5vZGUpIHtcclxuXHRcdHJldHVybiB7ICdwYWRkaW5nLWxlZnQnOiBgJHsyMCAqIChub2RlLmxldmVsID8/IDApfXB4YCB9XHJcblx0fVxyXG5cclxuXHRoaWRlTm9kZShub2RlOiBUcmVlTm9kZSkge1xyXG5cdFx0cmV0dXJuIChub2RlLnBhcmVudElkICE9PSBudWxsKSAmJiAoIShub2RlLmFuY2VzdG9ySWRzLmV2ZXJ5KG5vZGVJZCA9PiB0aGlzLmV4cGFuZGVkTm9kZXMuaGFzKG5vZGVJZCkpKSkgfHwgISh0aGlzLmZpbHRlck5vZGVzLmhhcyhub2RlLmlkKSk7XHJcblx0fVxyXG5cclxuXHRnZXQgZm9ybUNvbXBvbmVudElucHV0cygpIHtcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdG9wdGlvbjogdGhpcy5zZWxlY3RlZE5vZGUsXHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRtb3ZlT3B0aW9uKG5vZGU6IFRyZWVOb2RlKSB7XHJcblx0XHR0aGlzLmRpYWxvZy5vcGVuKE1vdmVNZW51T3B0aW9uQ29tcG9uZW50LHtcclxuXHRcdFx0ZGF0YTp7XHJcblx0XHRcdFx0b3B0aW9uOiBub2RlLFxyXG5cdFx0XHRcdHRyZWU6IHRoaXMudW5mbGF0dGVuZWRUcmVlXHJcblx0XHRcdH1cclxuXHRcdH0pLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKHZhbHVlKSA9PiB7XHJcblx0XHRcdFx0aWYgKHZhbHVlPy5yZWxvYWQpIHtcclxuXHRcdFx0XHRcdHRoaXMubG9hZFRyZWUoKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH0pXHJcblx0fVxyXG5cclxuXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNoYW5nZWRJdGVtcyhwcmV2aW91czogeyBba2V5OiBzdHJpbmddOiBhbnkgfVtdLCBjdXJyZW50OiB7IFtrZXk6IHN0cmluZ106IGFueSB9W10pIHtcclxuXHRsZXQgY2hhbmdlZDogeyBba2V5OiBzdHJpbmddOiBhbnk7IH1bXSA9IFtdO1xyXG5cdGN1cnJlbnQuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcclxuXHRcdGxldCBwcmV2aW91c0l0ZW0gPSBwcmV2aW91cy5maW5kKGkgPT4gaVsnaWQnXSA9PT0gaXRlbVsnaWQnXSk7XHJcblx0XHQvL2NvbnNvbGUuZXJyb3IoJyBmb3IgbG9vcCcsIHByZXZpb3VzSXRlbSwgaXRlbSk7XHJcblx0XHRpZiAocHJldmlvdXNJdGVtKSB7XHJcblx0XHRcdGZvciAobGV0IGtleSBpbiBwcmV2aW91c0l0ZW0pIHtcclxuXHRcdFx0XHRpZiAocHJldmlvdXNJdGVtW2tleV0gIT09IGl0ZW1ba2V5XSkge1xyXG5cdFx0XHRcdFx0Y2hhbmdlZC5wdXNoKGl0ZW0pO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRjaGFuZ2VkLnB1c2goaXRlbSk7XHJcblx0XHR9XHJcblxyXG5cdH0pXHJcblx0cmV0dXJuIGNoYW5nZWQ7XHJcbn1cclxuXHJcbmNvbnN0IGNvbXBsZXRlTm9kZSA9IChub2RlOiBUcmVlTm9kZSwgbGV2ZWw6IG51bWJlciwgcHJldkFuY2VzdG9yczogKG51bWJlciB8IG51bGwpW10pID0+ICh7XHJcblx0Li4ubm9kZSxcclxuXHRsZXZlbDogbGV2ZWwsXHJcblx0YW5jZXN0b3JJZHM6IChub2RlLnBhcmVudElkID09PSBudWxsKSA/IFtdIDogWy4uLnByZXZBbmNlc3RvcnNdLFxyXG59KVxyXG5cclxuZnVuY3Rpb24gZmxhdHRlblRyZWUodHJlZTogVHJlZU5vZGVbXSwgbWFwTm9kZTogRnVuY3Rpb24gPSAobm9kZTogVHJlZU5vZGUpID0+IG5vZGUsIGxldmVsOiBudW1iZXIgPSAwLCBwcmV2QW5jZXN0b3JzOiAobnVtYmVyIHwgbnVsbClbXSA9IFtdKSB7XHJcblx0bGV0IHJlc3BvbnNlOiBUcmVlTm9kZVtdID0gdHJlZS5mbGF0TWFwKG5vZGUgPT4gW21hcE5vZGUobm9kZSwgbGV2ZWwsIHByZXZBbmNlc3RvcnMpLCAuLi5mbGF0dGVuVHJlZShub2RlLmNoaWxkcmVuID8/IFtdLCBtYXBOb2RlLCBsZXZlbCArIDEsIFsuLi5wcmV2QW5jZXN0b3JzLCBub2RlLmlkXSldKVxyXG5cdHJldHVybiByZXNwb25zZTtcclxufVxyXG5cclxuXHJcbmZ1bmN0aW9uIHVuRmxhdHRlbihmbGF0VHJlZTogVHJlZU5vZGVbXSkge1xyXG5cclxuXHRsZXQgcmVzcG9uc2U6IFRyZWVOb2RlW10gPSBmbGF0VHJlZS5yZWR1Y2UoKGFjYywgY3VycmVudCkgPT4gWy4uLmFjYyxdLCBbXSlcclxufVxyXG4iLCI8ZGl2IFthdHRyLmRhdGEtdGhlbWVdPVwidGhlbWVcIiBjbGFzcz1cImxpc3RcIj5cclxuXHQ8ZGl2IGNsYXNzPVwidGl0bGUtaW5mby1oZWFkZXJcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJ0aXRsZS1pbmZvXCI+XHJcblx0XHRcdDxpIGNsYXNzPVwibWVudS1saXN0XCI+PC9pPlxyXG5cdFx0XHQ8c3BhbiBjbGFzcz1cInRpdGxlXCI+e3snTWVudScgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuXHRcdDwvZGl2PlxyXG5cdFx0PGRpdiBjbGFzcz1cImJ1dHRvbnMtc2VjdGlvblwiPlxyXG5cdFx0XHQ8YnV0dG9uIChjbGljayk9XCJhZGROb2RlVG9DdXJyZW50KClcIj48aSBjbGFzcz1cIm1lbnUtcGx1c1wiPjwvaT48L2J1dHRvbj5cclxuXHRcdFx0PGJ1dHRvbiAoY2xpY2spPVwiZGVsZXRlQ3VycmVudE5vZGUoKVwiPjxpIGNsYXNzPVwibWVudS1taW51c1wiPjwvaT48L2J1dHRvbj5cclxuXHRcdFx0PGJ1dHRvbiAoY2xpY2spPVwic2F2ZUNoYW5nZXMoKVwiPjxpIGNsYXNzPVwibWVudS1zYXZlXCI+PC9pPjwvYnV0dG9uPlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcblxyXG5cdDxkaXYgY2xhc3M9XCJzZWFyY2gtY29udGlhbmVyLW5vdGlmaWNhdGlvblwiPlxyXG5cdFx0PGxpYi1pbnB1dCBuZ0RlZmF1bHRDb250cm9sIFtmb3JtQ29udHJvbF09XCJzZWFyY2hcIiBuYW1lPVwic2VhcmNoXCIgW2xhYmVsXT1cIidTZWFyY2guLi4nIHwgdHJhbnNsYXRlXCIgW2NsZWFyQnV0dG9uXT1cInRydWVcIlxyXG5cdFx0XHRpY29uPVwibWVudS1zZWFyY2hcIiBbdGhlbWVdPVwidGhlbWVcIj48L2xpYi1pbnB1dD5cclxuXHQ8L2Rpdj5cclxuXHQ8bGliLWxvYWRlciBbdGhlbWVdPVwidGhlbWVcIiBbdHlwZV09XCInYmFyJ1wiIFtsb2FkaW5nXT1cImxvYWRpbmdTdGF0dXNcIj48L2xpYi1sb2FkZXI+XHJcblx0PGRpdiBjbGFzcz1cInRyZWUtY29udGFpbmVyXCI+XHJcblx0XHQ8IS0tIDxsaWItdHJlZSBbdHJlZV09XCJ0cmVlRGF0YVwiPjwvbGliLXRyZWU+IC0tPlxyXG5cdFx0PGRpdiAqbmdGb3I9XCJsZXQgbm9kZSBvZiBlZGl0ZWRUcmVlXCIgW2NsYXNzXT1cIlsnbm9kZS1jb250YWluZXInLCBoaWRlTm9kZShub2RlKSA/ICdoaWRlJyA6ICcnXVwiXHJcblx0XHRcdFtzdHlsZV09XCJub2RlQ29udGFpbmVyU3R5bGUobm9kZSlcIj5cclxuXHRcdFx0PGRpdiBbY2xhc3NdPVwiWydub2RlJywgc2VsZWN0ZWRDbGFzcyhub2RlKV1cIiAoY2xpY2spPVwic2VsZWN0Tm9kZShub2RlKVwiPlxyXG5cdFx0XHRcdDxkaXYgKm5nSWY9XCJoYXNDaGlsZHJlbihub2RlKVwiIChjbGljayk9XCJ0b2dnbGVOb2RlKG5vZGUpXCJcclxuXHRcdFx0XHRcdFtjbGFzc109XCJbJ3RyZWUtdG9nZ2xlJywgaXNFeHBhbmRlZChub2RlKSA/ICcnOiAncm90YXRlZCddXCI+XHJcblx0XHRcdFx0XHQ8aSBbY2xhc3NdPVwiWydtZW51LWFycm93LWRvd24nXVwiPjwvaT5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8ZGl2ICpuZ0lmPVwiIWhhc0NoaWxkcmVuKG5vZGUpXCIgY2xhc3M9XCJ0cmVlLXRvZ2dsZVwiPlxyXG5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwidHJlZS1ub2RlXCI+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XHJcblx0XHRcdFx0XHRcdDxpbnB1dCAjbm9kZU5hbWVJbnB1dCBuZ0RlZmF1bHRDb250cm9sIFsobmdNb2RlbCldPVwibm9kZS5sYWJlbFwiIC8+XHJcblx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwidHJlZS1uYW1lXCIgKGNsaWNrKT1cIm5vZGVOYW1lSW5wdXQuZm9jdXMoKVwiPnt7bm9kZS5sYWJlbH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8ZGl2ICpuZ0lmPVwiZ2V0TGV2ZWwobm9kZSkgPiAwXCIgY2xhc3M9XCJub2RlLW9wdGlvbnNcIj5cclxuXHRcdFx0XHRcdFx0PHNwYW4gKGNsaWNrKT1cIm1vdmVPcHRpb24obm9kZSlcIj5cclxuXHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cIm1lbnUtZm9sZGVyLXNlbmRcIiAqbmdJZj1cImdldExldmVsKG5vZGUpID4gMFwiPjwvaT5cclxuXHRcdFx0XHRcdFx0PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8IS0tIDxzcGFuPlxyXG5cdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwibWVudS1tb3ZlXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHQ8L3NwYW4+IC0tPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IFthdHRyLmRhdGEtdGhlbWVdPVwidGhlbWVcIiBjbGFzcz1cImVkaXRvci1wYW5lbFwiPlxyXG5cdDxkaXYgY2xhc3M9XCJlZGl0b3ItdGl0bGVcIj5cclxuXHRcdDxzcGFuIGNsYXNzPVwidGl0bGUtbGFiZWxcIj5FZGl0YXIgT3BjacOzbjwvc3Bhbj5cclxuXHRcdDxzcGFuIGNsYXNzPVwidGl0bGUtbmFtZVwiPnt7c2VsZWN0ZWROb2RlLmxhYmVsID8/IHNlbGVjdGVkTm9kZS5uYW1lID8/ICcnfX08L3NwYW4+XHJcblx0PC9kaXY+XHJcblx0PCEtLSB7e2N1cnJlbnROb2RlLm5hbWUgPz8gY3VycmVudE5vZGUubGFiZWx9fSAtLT5cclxuXHQ8bmctY29udGFpbmVyICpuZ0lmPVwibWVudU9wdGlvbkZvcm1Db21wb25lbnRcIj5cclxuXHRcdDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwibWVudU9wdGlvbkZvcm1Db21wb25lbnQ7IGlucHV0czogZm9ybUNvbXBvbmVudElucHV0c1wiPlxyXG5cclxuXHRcdDwvbmctY29udGFpbmVyPlxyXG5cclxuXHQ8L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+Il19
@@ -10,6 +10,7 @@ export class SecurityServices {
10
10
  static { this.RESOURCES_BY_USER = '/security/secure/resourcesbyuser'; }
11
11
  static { this.LOGOUT = '/security/secure/logOut'; }
12
12
  static { this.SAVE_HISTORY = '/security/secure/savehistory'; }
13
+ static { this.VERIFY_RESOURCES_BY_USERROLE = '/security/secure/validateresourcesbyRole'; }
13
14
  constructor(http) {
14
15
  this.http = http;
15
16
  }
@@ -33,6 +34,11 @@ export class SecurityServices {
33
34
  getResourcesByUser(baseUrl) {
34
35
  return this.http.get(baseUrl + SecurityServices.RESOURCES_BY_USER);
35
36
  }
37
+ getResourcesByRoleUser(baseUrl, path) {
38
+ const params = new URLSearchParams();
39
+ params.append('path', path);
40
+ return this.http.get(baseUrl + SecurityServices.VERIFY_RESOURCES_BY_USERROLE + '?' + params.toString());
41
+ }
36
42
  logOut(baseUrl) {
37
43
  return this.http.post(baseUrl + SecurityServices.LOGOUT, null);
38
44
  }
@@ -48,4 +54,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
48
54
  providedIn: 'root'
49
55
  }]
50
56
  }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VjdXJpdHlTZXJ2aWNlc0RlZmF1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3AtbGliL3NyYy9saWIvdXRpbHMvc2VydmljZXMvU2VjdXJpdHlTZXJ2aWNlc0RlZmF1bHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBT3pDLE1BQU0sT0FBTyxnQkFBZ0I7YUFFWCxZQUFPLEdBQUcsNkJBQTZCLEFBQWhDLENBQWlDO2FBQ3hDLFlBQU8sR0FBRyxnQ0FBZ0MsQUFBbkMsQ0FBb0M7YUFDM0Msa0JBQWEsR0FBRyxrQ0FBa0MsQUFBckMsQ0FBc0M7YUFDbkQsbUJBQWMsR0FBRyxtQ0FBbUMsQUFBdEMsQ0FBdUM7YUFDckQsZ0JBQVcsR0FBRyxrQ0FBa0MsQUFBckMsQ0FBc0M7YUFDakQsc0JBQWlCLEdBQUcsa0NBQWtDLEFBQXJDLENBQXNDO2FBQ3ZELFdBQU0sR0FBRyx5QkFBeUIsQUFBNUIsQ0FBNkI7YUFDbkMsaUJBQVksR0FBRyw4QkFBOEIsQUFBakMsQ0FBa0M7SUFFOUQsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUNwQyxDQUFDO0lBR0EsVUFBVSxDQUFDLE9BQWM7UUFDdEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxPQUFjLEVBQUMsS0FBVTtRQUMxQyxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLGdCQUFnQixDQUFDLGFBQWEsR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVELGdCQUFnQixDQUFDLE9BQWM7UUFDN0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELGVBQWUsQ0FBQyxPQUFjO1FBQzVCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxPQUFjO1FBQy9CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFjO1FBQ25CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sRUFBQyxJQUFJLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQWMsRUFBQyxNQUFVO1FBQ25DLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLGdCQUFnQixDQUFDLFlBQVksRUFBQyxNQUFNLENBQUMsQ0FBQztJQUN4RSxDQUFDOytHQS9DUSxnQkFBZ0I7bUhBQWhCLGdCQUFnQixjQUZmLE1BQU07OzRGQUVQLGdCQUFnQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBQYXJhbXMsIEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbiAgfSlcclxuICBleHBvcnQgY2xhc3MgU2VjdXJpdHlTZXJ2aWNlcyB7XHJcblxyXG4gICAgc3RhdGljIHJlYWRvbmx5IEhJU1RPUlkgPSAnL3NlY3VyaXR5L3NlY3VyZS9nZXRoaXN0b3J5JztcclxuICAgIHN0YXRpYyByZWFkb25seSBNT0RVTEVTID0gJy9zZWN1cml0eS9zZWN1cmUvbW9kdWxlc2J5dXNlcic7XHJcbiAgICBzdGF0aWMgcmVhZG9ubHkgTU9EVUxFX09QVElPTiA9ICcvc2VjdXJpdHkvc2VjdXJlL29wdGlvbnNieW1vZHVsZSc7XHJcbiAgICBzdGF0aWMgcmVhZG9ubHkgQ09NUEFOSUVTX0lORk8gPSAnL3NlY3VyaXR5L3NlY3VyZS9nZXRDb21wYW5pZXNJbmZvJztcclxuICAgIHN0YXRpYyByZWFkb25seSBWRVJJRllfQVVUSCA9ICcvc2VjdXJpdHkvc2VjdXJlL3ZhbGlkYXRlc2Vzc2lvbic7XHJcbiAgICBzdGF0aWMgcmVhZG9ubHkgUkVTT1VSQ0VTX0JZX1VTRVIgPSAnL3NlY3VyaXR5L3NlY3VyZS9yZXNvdXJjZXNieXVzZXInO1xyXG4gICAgc3RhdGljIHJlYWRvbmx5IExPR09VVCA9ICcvc2VjdXJpdHkvc2VjdXJlL2xvZ091dCc7XHJcbiAgICBzdGF0aWMgcmVhZG9ubHkgU0FWRV9ISVNUT1JZID0gJy9zZWN1cml0eS9zZWN1cmUvc2F2ZWhpc3RvcnknO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAgZ2V0SGlzdG9yeShiYXNlVXJsOnN0cmluZyl7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYmFzZVVybCArIFNlY3VyaXR5U2VydmljZXMuSElTVE9SWSk7XHJcbiAgICAgIH1cclxuICAgIFxyXG4gICAgICBnZXRNb2R1bGVzKGJhc2VVcmw6c3RyaW5nKXtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChiYXNlVXJsICsgU2VjdXJpdHlTZXJ2aWNlcy5NT0RVTEVTKTtcclxuICAgICAgfVxyXG4gICAgXHJcbiAgICAgIG1lbnVNb2R1bGVTZWxlY3RlZChiYXNlVXJsOnN0cmluZyxhcHBJZDogYW55KSB7XHJcbiAgICAgICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xyXG4gICAgICAgIHBhcmFtcy5hcHBlbmQoJ2FwcElkJywgYXBwSWQpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGJhc2VVcmwgKyBTZWN1cml0eVNlcnZpY2VzLk1PRFVMRV9PUFRJT04gKyAnPycgKyBwYXJhbXMudG9TdHJpbmcoKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGdldENvbXBhbmllc0luZm8oYmFzZVVybDpzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChiYXNlVXJsICsgU2VjdXJpdHlTZXJ2aWNlcy5DT01QQU5JRVNfSU5GTyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlzQXV0aGVudGljYXRlZChiYXNlVXJsOnN0cmluZyl7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYmFzZVVybCArIFNlY3VyaXR5U2VydmljZXMuVkVSSUZZX0FVVEgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBnZXRSZXNvdXJjZXNCeVVzZXIoYmFzZVVybDpzdHJpbmcpe1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGJhc2VVcmwgKyBTZWN1cml0eVNlcnZpY2VzLlJFU09VUkNFU19CWV9VU0VSKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbG9nT3V0KGJhc2VVcmw6c3RyaW5nKXtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYmFzZVVybCArIFNlY3VyaXR5U2VydmljZXMuTE9HT1VULG51bGwpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzYXZlSGlzdG9yeShiYXNlVXJsOnN0cmluZyxvcHRpb246YW55KXtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYmFzZVVybCArIFNlY3VyaXR5U2VydmljZXMuU0FWRV9ISVNUT1JZLG9wdGlvbik7XHJcbiAgICAgIH1cclxuXHJcbiAgfSJdfQ==
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VjdXJpdHlTZXJ2aWNlc0RlZmF1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3AtbGliL3NyYy9saWIvdXRpbHMvc2VydmljZXMvU2VjdXJpdHlTZXJ2aWNlc0RlZmF1bHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBT3pDLE1BQU0sT0FBTyxnQkFBZ0I7YUFFWCxZQUFPLEdBQUcsNkJBQTZCLEFBQWhDLENBQWlDO2FBQ3hDLFlBQU8sR0FBRyxnQ0FBZ0MsQUFBbkMsQ0FBb0M7YUFDM0Msa0JBQWEsR0FBRyxrQ0FBa0MsQUFBckMsQ0FBc0M7YUFDbkQsbUJBQWMsR0FBRyxtQ0FBbUMsQUFBdEMsQ0FBdUM7YUFDckQsZ0JBQVcsR0FBRyxrQ0FBa0MsQUFBckMsQ0FBc0M7YUFDakQsc0JBQWlCLEdBQUcsa0NBQWtDLEFBQXJDLENBQXNDO2FBQ3ZELFdBQU0sR0FBRyx5QkFBeUIsQUFBNUIsQ0FBNkI7YUFDbkMsaUJBQVksR0FBRyw4QkFBOEIsQUFBakMsQ0FBa0M7YUFDOUMsaUNBQTRCLEdBQUcsMENBQTBDLEFBQTdDLENBQThDO0lBRTFGLFlBQW9CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7SUFDcEMsQ0FBQztJQUdBLFVBQVUsQ0FBQyxPQUFjO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxVQUFVLENBQUMsT0FBYztRQUN2QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsT0FBYyxFQUFDLEtBQVU7UUFDMUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUNyQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQyxhQUFhLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxPQUFjO1FBQzdCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxlQUFlLENBQUMsT0FBYztRQUM1QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsT0FBYztRQUMvQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxPQUFjLEVBQUMsSUFBUTtRQUM1QyxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzVCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLGdCQUFnQixDQUFDLDRCQUE0QixHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMxRyxDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQWM7UUFDbkIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxFQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBYyxFQUFDLE1BQVU7UUFDbkMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsWUFBWSxFQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hFLENBQUM7K0dBdERRLGdCQUFnQjttSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7NEZBRVAsZ0JBQWdCO2tCQUg5QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcywgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxuICB9KVxyXG4gIGV4cG9ydCBjbGFzcyBTZWN1cml0eVNlcnZpY2VzIHtcclxuXHJcbiAgICBzdGF0aWMgcmVhZG9ubHkgSElTVE9SWSA9ICcvc2VjdXJpdHkvc2VjdXJlL2dldGhpc3RvcnknO1xyXG4gICAgc3RhdGljIHJlYWRvbmx5IE1PRFVMRVMgPSAnL3NlY3VyaXR5L3NlY3VyZS9tb2R1bGVzYnl1c2VyJztcclxuICAgIHN0YXRpYyByZWFkb25seSBNT0RVTEVfT1BUSU9OID0gJy9zZWN1cml0eS9zZWN1cmUvb3B0aW9uc2J5bW9kdWxlJztcclxuICAgIHN0YXRpYyByZWFkb25seSBDT01QQU5JRVNfSU5GTyA9ICcvc2VjdXJpdHkvc2VjdXJlL2dldENvbXBhbmllc0luZm8nO1xyXG4gICAgc3RhdGljIHJlYWRvbmx5IFZFUklGWV9BVVRIID0gJy9zZWN1cml0eS9zZWN1cmUvdmFsaWRhdGVzZXNzaW9uJztcclxuICAgIHN0YXRpYyByZWFkb25seSBSRVNPVVJDRVNfQllfVVNFUiA9ICcvc2VjdXJpdHkvc2VjdXJlL3Jlc291cmNlc2J5dXNlcic7XHJcbiAgICBzdGF0aWMgcmVhZG9ubHkgTE9HT1VUID0gJy9zZWN1cml0eS9zZWN1cmUvbG9nT3V0JztcclxuICAgIHN0YXRpYyByZWFkb25seSBTQVZFX0hJU1RPUlkgPSAnL3NlY3VyaXR5L3NlY3VyZS9zYXZlaGlzdG9yeSc7XHJcbiAgICBzdGF0aWMgcmVhZG9ubHkgVkVSSUZZX1JFU09VUkNFU19CWV9VU0VSUk9MRSA9ICcvc2VjdXJpdHkvc2VjdXJlL3ZhbGlkYXRlcmVzb3VyY2VzYnlSb2xlJztcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHtcclxuICAgIH1cclxuXHJcblxyXG4gICAgIGdldEhpc3RvcnkoYmFzZVVybDpzdHJpbmcpe1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGJhc2VVcmwgKyBTZWN1cml0eVNlcnZpY2VzLkhJU1RPUlkpO1xyXG4gICAgICB9XHJcbiAgICBcclxuICAgICAgZ2V0TW9kdWxlcyhiYXNlVXJsOnN0cmluZyl7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYmFzZVVybCArIFNlY3VyaXR5U2VydmljZXMuTU9EVUxFUyk7XHJcbiAgICAgIH1cclxuICAgIFxyXG4gICAgICBtZW51TW9kdWxlU2VsZWN0ZWQoYmFzZVVybDpzdHJpbmcsYXBwSWQ6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcclxuICAgICAgICBwYXJhbXMuYXBwZW5kKCdhcHBJZCcsIGFwcElkKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChiYXNlVXJsICsgU2VjdXJpdHlTZXJ2aWNlcy5NT0RVTEVfT1BUSU9OICsgJz8nICsgcGFyYW1zLnRvU3RyaW5nKCkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBnZXRDb21wYW5pZXNJbmZvKGJhc2VVcmw6c3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYmFzZVVybCArIFNlY3VyaXR5U2VydmljZXMuQ09NUEFOSUVTX0lORk8pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpc0F1dGhlbnRpY2F0ZWQoYmFzZVVybDpzdHJpbmcpe1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGJhc2VVcmwgKyBTZWN1cml0eVNlcnZpY2VzLlZFUklGWV9BVVRIKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZ2V0UmVzb3VyY2VzQnlVc2VyKGJhc2VVcmw6c3RyaW5nKXtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChiYXNlVXJsICsgU2VjdXJpdHlTZXJ2aWNlcy5SRVNPVVJDRVNfQllfVVNFUik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGdldFJlc291cmNlc0J5Um9sZVVzZXIoYmFzZVVybDpzdHJpbmcscGF0aDphbnkpe1xyXG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcclxuICAgICAgICBwYXJhbXMuYXBwZW5kKCdwYXRoJywgcGF0aCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYmFzZVVybCArIFNlY3VyaXR5U2VydmljZXMuVkVSSUZZX1JFU09VUkNFU19CWV9VU0VSUk9MRSArICc/JyArIHBhcmFtcy50b1N0cmluZygpKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbG9nT3V0KGJhc2VVcmw6c3RyaW5nKXtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYmFzZVVybCArIFNlY3VyaXR5U2VydmljZXMuTE9HT1VULG51bGwpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzYXZlSGlzdG9yeShiYXNlVXJsOnN0cmluZyxvcHRpb246YW55KXtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYmFzZVVybCArIFNlY3VyaXR5U2VydmljZXMuU0FWRV9ISVNUT1JZLG9wdGlvbik7XHJcbiAgICAgIH1cclxuXHJcbiAgfSJdfQ==