@ng-nest/ui 15.0.9 → 15.0.11

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 (56) hide show
  1. package/date-picker/date-picker-portal.component.d.ts +3 -1
  2. package/date-picker/date-picker.module.d.ts +2 -1
  3. package/date-picker/date-picker.property.d.ts +29 -3
  4. package/date-picker/date-range-portal.component.d.ts +6 -2
  5. package/esm2020/color-picker/color-picker-portal.component.mjs +3 -3
  6. package/esm2020/date-picker/date-picker-portal.component.mjs +10 -6
  7. package/esm2020/date-picker/date-picker.component.mjs +2 -1
  8. package/esm2020/date-picker/date-picker.module.mjs +8 -4
  9. package/esm2020/date-picker/date-picker.property.mjs +18 -4
  10. package/esm2020/date-picker/date-range-portal.component.mjs +42 -8
  11. package/esm2020/date-picker/date-range.component.mjs +3 -2
  12. package/esm2020/i18n/i18n.property.mjs +1 -1
  13. package/esm2020/i18n/languages/en_GB.mjs +10 -1
  14. package/esm2020/i18n/languages/en_US.mjs +10 -1
  15. package/esm2020/i18n/languages/zh_CN.mjs +10 -1
  16. package/esm2020/i18n/languages/zh_TW.mjs +10 -1
  17. package/esm2020/tree/tree-node.component.mjs +6 -2
  18. package/esm2020/tree/tree.component.mjs +18 -1
  19. package/esm2020/tree-file/tree-file.component.mjs +2 -2
  20. package/fesm2015/ng-nest-ui-base-form.mjs +1 -0
  21. package/fesm2015/ng-nest-ui-color-picker.mjs +2 -2
  22. package/fesm2015/ng-nest-ui-color-picker.mjs.map +1 -1
  23. package/fesm2015/ng-nest-ui-core.mjs +1 -0
  24. package/fesm2015/ng-nest-ui-date-picker.mjs +72 -15
  25. package/fesm2015/ng-nest-ui-date-picker.mjs.map +1 -1
  26. package/fesm2015/ng-nest-ui-i18n.mjs +37 -0
  27. package/fesm2015/ng-nest-ui-i18n.mjs.map +1 -1
  28. package/fesm2015/ng-nest-ui-link.mjs +1 -0
  29. package/fesm2015/ng-nest-ui-slider.mjs +1 -0
  30. package/fesm2015/ng-nest-ui-time-picker.mjs +1 -0
  31. package/fesm2015/ng-nest-ui-tree-file.mjs +1 -1
  32. package/fesm2015/ng-nest-ui-tree-file.mjs.map +1 -1
  33. package/fesm2015/ng-nest-ui-tree.mjs +22 -1
  34. package/fesm2015/ng-nest-ui-tree.mjs.map +1 -1
  35. package/fesm2020/ng-nest-ui-base-form.mjs +1 -0
  36. package/fesm2020/ng-nest-ui-color-picker.mjs +2 -2
  37. package/fesm2020/ng-nest-ui-color-picker.mjs.map +1 -1
  38. package/fesm2020/ng-nest-ui-core.mjs +1 -0
  39. package/fesm2020/ng-nest-ui-date-picker.mjs +72 -15
  40. package/fesm2020/ng-nest-ui-date-picker.mjs.map +1 -1
  41. package/fesm2020/ng-nest-ui-i18n.mjs +37 -0
  42. package/fesm2020/ng-nest-ui-i18n.mjs.map +1 -1
  43. package/fesm2020/ng-nest-ui-link.mjs +1 -0
  44. package/fesm2020/ng-nest-ui-slider.mjs +1 -0
  45. package/fesm2020/ng-nest-ui-time-picker.mjs +1 -0
  46. package/fesm2020/ng-nest-ui-tree-file.mjs +1 -1
  47. package/fesm2020/ng-nest-ui-tree-file.mjs.map +1 -1
  48. package/fesm2020/ng-nest-ui-tree.mjs +22 -1
  49. package/fesm2020/ng-nest-ui-tree.mjs.map +1 -1
  50. package/i18n/i18n.property.d.ts +9 -0
  51. package/i18n/languages/en_GB.d.ts +9 -0
  52. package/i18n/languages/en_US.d.ts +9 -0
  53. package/i18n/languages/zh_CN.d.ts +9 -0
  54. package/i18n/languages/zh_TW.d.ts +9 -0
  55. package/package.json +1 -1
  56. package/tree/tree.component.d.ts +1 -0
@@ -61,6 +61,7 @@ export class XTreeNodeComponent extends XTreeNodeProperty {
61
61
  this.tree.nodeOpen && !node.leaf && this.tree.onToggle(event, node);
62
62
  const onChange = () => {
63
63
  change && change();
64
+ event.preventDefault();
64
65
  event.stopPropagation();
65
66
  this.cdr.detectChanges();
66
67
  };
@@ -88,13 +89,16 @@ export class XTreeNodeComponent extends XTreeNodeProperty {
88
89
  this.tree.activatedId.push(node.id);
89
90
  }
90
91
  }
91
- this.tree.activatedIdChange.emit(this.tree.activatedId);
92
+ }
93
+ else {
94
+ this.tree.activatedId = node.id;
92
95
  }
93
96
  if (this.tree.activatedNode) {
94
97
  if (this.tree.activatedNode.id === node.id && !this.tree.allowManyActivated)
95
98
  return;
96
99
  }
97
100
  this.tree.activatedNode = node;
101
+ this.tree.activatedIdChange.emit(this.tree.activatedId);
98
102
  this.tree.activatedChange.emit(node);
99
103
  this.tree.nodeClick.emit(node);
100
104
  onChange();
@@ -183,4 +187,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImpor
183
187
  type: HostBinding,
184
188
  args: ['class.x-tree-node']
185
189
  }] } });
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ub2RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3RyZWUvdHJlZS1ub2RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3RyZWUvdHJlZS1ub2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBSWpCLHVCQUF1QixFQUN2QixXQUFXLEVBQ1gsS0FBSyxFQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQWEsaUJBQWlCLEVBQWUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RixPQUFPLEVBQUUsUUFBUSxFQUE0QixNQUFNLGtCQUFrQixDQUFDOzs7Ozs7Ozs7O0FBU3RFLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxpQkFBaUI7SUE0QnZELFlBQ1MsUUFBbUIsRUFDbkIsVUFBbUMsRUFDbkMsR0FBc0IsRUFDdEIsYUFBNkI7UUFFcEMsS0FBSyxFQUFFLENBQUM7UUFMRCxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQ25DLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGtCQUFhLEdBQWIsYUFBYSxDQUFnQjtRQTlCSixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQzNDLGFBQVEsR0FBRyxLQUFLLENBQUM7SUFnQ3pCLENBQUM7SUEvQkQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBQ0QsSUFBVyxPQUFPLENBQUMsS0FBSztRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLE1BQU0sQ0FBQyxJ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Q2hDLE9BQU8sUUFBb0IsQ0FBQztJQUM5QixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVksRUFBRSxNQUFtQixFQUFFLElBQWU7UUFDekQsTUFBTSxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWMsRUFBRSxJQUE2QjtRQUN2RCxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDakIsQ0FBQzs7a0lBL0pVLGtCQUFrQjtzSEFBbEIsa0JBQWtCLG9MQ3BCL0IsMGdFQW1EQTsyRkQvQmEsa0JBQWtCO2tCQVA5QixTQUFTOytCQUNFLEdBQUcsZUFBZSxNQUFNLGVBQWUsR0FBRyxpQkFHckMsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTTtzTEFHdEMsSUFBSTtzQkFBWixLQUFLO2dCQUM0QixTQUFTO3NCQUExQyxXQUFXO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIFJlbmRlcmVyMixcclxuICBFbGVtZW50UmVmLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIElucHV0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFhUcmVlTm9kZVByZWZpeCwgWFRyZWVOb2RlLCBYVHJlZU5vZGVQcm9wZXJ0eSwgWFRyZWVBY3Rpb24gfSBmcm9tICcuL3RyZWUucHJvcGVydHknO1xyXG5pbXBvcnQgeyBYSXNFbXB0eSwgWENvbmZpZ1NlcnZpY2UsIFhCb29sZWFuIH0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogYCR7WFRyZWVOb2RlUHJlZml4fSwgWyR7WFRyZWVOb2RlUHJlZml4fV1gLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cmVlLW5vZGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RyZWUtbm9kZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFhUcmVlTm9kZUNvbXBvbmVudCBleHRlbmRzIFhUcmVlTm9kZVByb3BlcnR5IHtcclxuICBASW5wdXQoKSB0cmVlOiBhbnk7XHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy54LXRyZWUtbm9kZScpIHJvb3RDbGFzcyA9IHRydWU7XHJcbiAgcHJpdmF0ZSBfbG9hZGluZyA9IGZhbHNlO1xyXG4gIHB1YmxpYyBnZXQgbG9hZGluZygpIHtcclxuICAgIHJldHVybiB0aGlzLl9sb2FkaW5nO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IGxvYWRpbmcodmFsdWUpIHtcclxuICAgIHRoaXMuX2xvYWRpbmcgPSB2YWx1ZTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGdldCBwYWRkaW5nTGVmdCgpIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5ub2RlPy5sZXZlbCA/IHRoaXMubm9kZS5sZXZlbCA6IDApICogTnVtYmVyKHRoaXMudHJlZS5zcGFjaW5nKTtcclxuICB9XHJcblxyXG4gIGdldCBnZXRBY3RpdmF0ZWQoKSB7XHJcbiAgICBpZiAodGhpcy50cmVlLm11bHRpcGxlKSB7XHJcbiAgICAgIGlmICh0aGlzLnRyZWUub2JqZWN0QXJyYXkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy50cmVlLmFjdGl2YXRlZElkPy5tYXAoKHg6IFhUcmVlTm9kZSkgPT4geC5pZCkuaW5jbHVkZXModGhpcy5ub2RlLmlkKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy50cmVlLmFjdGl2YXRlZElkPy5pbmNsdWRlcyh0aGlzLm5vZGUuaWQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy50cmVlLmFjdGl2YXRlZElkID09PSB0aGlzLm5vZGUuaWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxyXG4gICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgY29uZmlnU2VydmljZTogWENvbmZpZ1NlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMubm9kZS5jaGFuZ2UgPSAoY2hlY2s6IGJvb2xlYW4pID0+IHtcclxuICAgICAgaWYgKGNoZWNrKSB0aGlzLnNldENoZWNrYm94KCk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH07XHJcbiAgICB0aGlzLmxldmVsID0gdGhpcy5ub2RlPy5sZXZlbCA/IHRoaXMubm9kZS5sZXZlbCA6IDA7XHJcbiAgICBpZiAoIXRoaXMudHJlZS5sZXZlbENoZWNrKSByZXR1cm47XHJcbiAgICBpZiAodGhpcy5ub2RlLmNoZWNrZWQpIHRoaXMuc2V0Q2hlY2tib3goKTtcclxuICAgIHRoaXMuc2V0SW5kZXRlcm1pbmF0ZSh0aGlzLm5vZGUpO1xyXG4gIH1cclxuXHJcbiAgb25BY3RpdmF0ZShldmVudDogRXZlbnQsIG5vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgY29uc3QgY2hhbmdlOiBGdW5jdGlvbiA9IHRoaXMudHJlZS5hY3RpdmF0ZWROb2RlPy5jaGFuZ2UgYXMgRnVuY3Rpb247XHJcbiAgICB0aGlzLnRyZWUubm9kZU9wZW4gJiYgIW5vZGUubGVhZiAmJiB0aGlzLnRyZWUub25Ub2dnbGUoZXZlbnQsIG5vZGUpO1xyXG4gICAgY29uc3Qgb25DaGFuZ2UgPSAoKSA9PiB7XHJcbiAgICAgIGNoYW5nZSAmJiBjaGFuZ2UoKTtcclxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH07XHJcbiAgICBpZiAodGhpcy50cmVlLm9ubHlMZWFmICYmICFub2RlLmxlYWYpIHtcclxuICAgICAgb25DaGFuZ2UoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudHJlZS5tdWx0aXBsZSkge1xyXG4gICAgICBpZiAoIXRoaXMudHJlZS5hY3RpdmF0ZWRJZCkgdGhpcy50cmVlLmFjdGl2YXRlZElkID0gW107XHJcbiAgICAgIGlmICh0aGlzLnRyZWUub2JqZWN0QXJyYXkpIHtcclxuICAgICAgICBjb25zdCBpZHMgPSB0aGlzLnRyZWUuYWN0aXZhdGVkSWQubWFwKCh4OiBYVHJlZU5vZGUpID0+IHguaWQpO1xyXG4gICAgICAgIGlmIChpZHMuaW5jbHVkZXMobm9kZS5pZCkpIHtcclxuICAgICAgICAgIHRoaXMudHJlZS5hY3RpdmF0ZWRJZC5zcGxpY2UoaWRzLmluZGV4T2Yobm9kZS5pZCksIDEpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnRyZWUuYWN0aXZhdGVkSWQucHVzaChub2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMudHJlZS5hY3RpdmF0ZWRJZC5pbmNsdWRlcyhub2RlLmlkKSkge1xyXG4gICAgICAgICAgdGhpcy50cmVlLmFjdGl2YXRlZElkLnNwbGljZSh0aGlzLnRyZWUuYWN0aXZhdGVkSWQuaW5kZXhPZihub2RlLmlkKSwgMSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudHJlZS5hY3RpdmF0ZWRJZC5wdXNoKG5vZGUuaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnRyZWUuYWN0aXZhdGVkSWRDaGFuZ2UuZW1pdCh0aGlzLnRyZWUuYWN0aXZhdGVkSWQpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudHJlZS5hY3RpdmF0ZWROb2RlKSB7XHJcbiAgICAgIGlmICh0aGlzLnRyZWUuYWN0aXZhdGVkTm9kZS5pZCA9PT0gbm9kZS5pZCAmJiAhdGhpcy50cmVlLmFsbG93TWFueUFjdGl2YXRlZCkgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy50cmVlLmFjdGl2YXRlZE5vZGUgPSBub2RlO1xyXG4gICAgdGhpcy50cmVlLmFjdGl2YXRlZENoYW5nZS5lbWl0KG5vZGUpO1xyXG4gICAgdGhpcy50cmVlLm5vZGVDbGljay5lbWl0KG5vZGUpO1xyXG4gICAgb25DaGFuZ2UoKTtcclxuICB9XHJcblxyXG4gIG9uQ2hlY2tib3hDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLnNldENoZWNrYm94KCk7XHJcbiAgICB0aGlzLnRyZWUuY2hlY2tib3hDaGFuZ2UuZW1pdCh0aGlzLm5vZGUpO1xyXG4gIH1cclxuXHJcbiAgc2V0Q2hlY2tib3goKSB7XHJcbiAgICBpZiAoIXRoaXMudHJlZS5sZXZlbENoZWNrKSByZXR1cm47XHJcbiAgICB0aGlzLm5vZGUuaW5kZXRlcm1pbmF0ZSA9IHRoaXMubm9kZS5jaGVja2VkO1xyXG4gICAgdGhpcy5ub2RlLmNoaWxkcmVuICYmIHRoaXMuc2V0Q2hpbGRyZW5DaGVja2JveCh0aGlzLm5vZGUuY2hlY2tlZCBhcyBib29sZWFuKTtcclxuICAgIGNvbnN0IHNldFBhcmVudCA9IChub2RlOiBYVHJlZU5vZGUpID0+IHtcclxuICAgICAgbGV0IHBhcmVudCA9IHRoaXMudHJlZS5ub2Rlcy5maW5kKCh4OiBYVHJlZU5vZGUpID0+IHguaWQgPT09IG5vZGUucGlkKTtcclxuICAgICAgaWYgKCFwYXJlbnQgfHwgWElzRW1wdHkocGFyZW50LmNoaWxkcmVuKSkgcmV0dXJuO1xyXG4gICAgICBsZXQgY2hlY2tlZExpc3QgPSBwYXJlbnQuY2hpbGRyZW4/LmZpbHRlcigoeTogWFRyZWVOb2RlKSA9PiB5LmNoZWNrZWQpO1xyXG4gICAgICBsZXQgaW5kZXRlcm1pbmF0ZUxpc3QgPSBwYXJlbnQuY2hpbGRyZW4/LmZpbHRlcigoeTogWFRyZWVOb2RlKSA9PiB5LmluZGV0ZXJtaW5hdGUpO1xyXG4gICAgICBwYXJlbnQuY2hlY2tlZCA9IGNoZWNrZWRMaXN0Py5sZW5ndGggPT09IHBhcmVudC5jaGlsZHJlbj8ubGVuZ3RoO1xyXG4gICAgICBwYXJlbnQuaW5kZXRlcm1pbmF0ZSA9IChjaGVja2VkTGlzdCBhcyBYVHJlZU5vZGVbXSkubGVuZ3RoID4gMCB8fCAoaW5kZXRlcm1pbmF0ZUxpc3QgYXMgWFRyZWVOb2RlW10pLmxlbmd0aCA+IDA7XHJcbiAgICAgIHBhcmVudC5jaGFuZ2UgJiYgcGFyZW50LmNoYW5nZSgpO1xyXG4gICAgICBzZXRQYXJlbnQocGFyZW50KTtcclxuICAgIH07XHJcbiAgICBzZXRQYXJlbnQodGhpcy5ub2RlKTtcclxuICB9XHJcblxyXG4gIHNldENoaWxkcmVuQ2hlY2tib3goY2hlY2tlZDogYm9vbGVhbikge1xyXG4gICAgY29uc3Qgc2V0Q2hpbGRyZW4gPSAoY2hpbGRyZW46IFhUcmVlTm9kZVtdLCBpc0NoZWNrZWQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgaWYgKFhJc0VtcHR5KGNoaWxkcmVuKSkgcmV0dXJuO1xyXG4gICAgICBmb3IgKGxldCB4IG9mIGNoaWxkcmVuKSB7XHJcbiAgICAgICAgaWYgKHguZGlzYWJsZWQpIGNvbnRpbnVlO1xyXG4gICAgICAgIHguY2hlY2tlZCA9IGlzQ2hlY2tlZDtcclxuICAgICAgICB4LmluZGV0ZXJtaW5hdGUgPSBpc0NoZWNrZWQ7XHJcbiAgICAgICAgeC5jaGFuZ2UgJiYgeC5jaGFuZ2UoKTtcclxuICAgICAgICBzZXRDaGlsZHJlbih4LmNoaWxkcmVuIGFzIFhUcmVlTm9kZVtdLCBpc0NoZWNrZWQpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgc2V0Q2hpbGRyZW4odGhpcy5ub2RlLmNoaWxkcmVuIGFzIFhUcmVlTm9kZVtdLCBjaGVja2VkKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHNldFBhcmVudENoZWNrYm94KCkge1xyXG4gICAgaWYgKFhJc0VtcHR5KHRoaXMubm9kZS5jaGlsZHJlbikpIHJldHVybjtcclxuICAgIGxldCBjaGVja2VkTGlzdCA9IHRoaXMubm9kZS5jaGlsZHJlbj8uZmlsdGVyKCh4KSA9PiB4LmNoZWNrZWQpO1xyXG4gICAgbGV0IGluZGV0ZXJtaW5hdGVMaXN0ID0gdGhpcy5ub2RlLmNoaWxkcmVuPy5maWx0ZXIoKHgpID0+IHguaW5kZXRlcm1pbmF0ZSk7XHJcbiAgICB0aGlzLm5vZGUuY2hlY2tlZCA9IGNoZWNrZWRMaXN0Py5sZW5ndGggPT09IHRoaXMubm9kZS5jaGlsZHJlbj8ubGVuZ3RoO1xyXG4gICAgdGhpcy5ub2RlLmluZGV0ZXJtaW5hdGUgPSAoY2hlY2tlZExpc3QgYXMgWFRyZWVOb2RlW10pLmxlbmd0aCA+IDAgfHwgKGluZGV0ZXJtaW5hdGVMaXN0IGFzIFhUcmVlTm9kZVtdKS5sZW5ndGggPiAwO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2V0SW5kZXRlcm1pbmF0ZShub2RlOiBYVHJlZU5vZGUpIHtcclxuICAgIGNvbnN0IGdldENoaWxkcmVuID0gKGNoaWxkcmVuOiBYVHJlZU5vZGVbXSkgPT4ge1xyXG4gICAgICBpZiAoWElzRW1wdHkoY2hpbGRyZW4pKSByZXR1cm47XHJcbiAgICAgIGNoaWxkcmVuLmZvckVhY2goKHgpID0+IHtcclxuICAgICAgICBpZiAoeC5pbmRldGVybWluYXRlIHx8IHguY2hlY2tlZCkge1xyXG4gICAgICAgICAgbm9kZS5pbmRldGVybWluYXRlID0gdHJ1ZTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZ2V0Q2hpbGRyZW4oeC5jaGlsZHJlbiBhcyBYVHJlZU5vZGVbXSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIGdldENoaWxkcmVuKG5vZGUuY2hpbGRyZW4gYXMgWFRyZWVOb2RlW10pO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Tm9kZURpc2FibGVkKGRpc2FibGVkPzogYm9vbGVhbikge1xyXG4gICAgcmV0dXJuIGRpc2FibGVkIGFzIFhCb29sZWFuO1xyXG4gIH1cclxuXHJcbiAgb25BY3Rpb24oZXZlbnQ6IEV2ZW50LCBhY3Rpb246IFhUcmVlQWN0aW9uLCBub2RlOiBYVHJlZU5vZGUpIHtcclxuICAgIGFjdGlvbi5oYW5kbGVyICYmIGFjdGlvbi5oYW5kbGVyKG5vZGUpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5SXRlbShfaW5kZXg6IG51bWJlciwgaXRlbTogWFRyZWVBY3Rpb24gfCBYVHJlZU5vZGUpIHtcclxuICAgIHJldHVybiBpdGVtLmlkO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgY2xhc3M9XCJ4LXRyZWUtbm9kZS1jb250ZW50XCJcclxuICBbY2xhc3MueC1hY3RpdmF0ZWRdPVwiZ2V0QWN0aXZhdGVkXCJcclxuICBbY2xhc3MueC1kaXNhYmxlZF09XCJub2RlLmRpc2FibGVkXCJcclxuICBbY2xhc3MueC10cmVlLW5vZGUtc3ViXT1cIiFub2RlLmxlYWZcIlxyXG4gIFtzdHlsZS5wYWRkaW5nLWxlZnQucmVtXT1cInBhZGRpbmdMZWZ0XCJcclxuICBbc3R5bGUuaGVpZ2h0LnJlbV09XCJub2RlLmhlaWdodCA/IG5vZGUuaGVpZ2h0IDogbm9kZUhlaWdodCA/IG5vZGVIZWlnaHQgOiAnJ1wiXHJcbiAgW3N0eWxlLmFsaWduLWl0ZW1zXT1cIm5vZGUuYWxpZ25JdGVtcyA/IG5vZGUuYWxpZ25JdGVtcyA6IG5vZGVBbGlnbkl0ZW1zXCJcclxuICAoY2xpY2spPVwiIW5vZGUuZGlzYWJsZWQgJiYgb25BY3RpdmF0ZSgkZXZlbnQsIG5vZGUpXCJcclxuPlxyXG4gIDx4LWljb25cclxuICAgICpuZ0lmPVwiIW5vZGUubG9hZGluZ1wiXHJcbiAgICBbY2xhc3MuaXMtbGVhZl09XCJub2RlLmxlYWZcIlxyXG4gICAgW2NsYXNzLmlzLW9wZW5dPVwibm9kZS5vcGVuXCJcclxuICAgIHR5cGU9XCJmdG8tY2hldnJvbi1yaWdodFwiXHJcbiAgICBjbGFzcz1cIngtdHJlZS1ub2RlLXJpZ2h0XCJcclxuICAgIChjbGljayk9XCIhdHJlZS5ub2RlT3BlbiAmJiB0cmVlLm9uVG9nZ2xlKCRldmVudCwgbm9kZSlcIlxyXG4gID48L3gtaWNvbj5cclxuICA8eC1pY29uIGNsYXNzPVwieC10cmVlLW5vZGUtbG9hZGluZ1wiICpuZ0lmPVwibm9kZS5sb2FkaW5nXCIgdHlwZT1cImZ0by1sb2FkZXJcIiBbc3Bpbl09XCJub2RlLmxvYWRpbmdcIj48L3gtaWNvbj5cclxuICA8eC1jaGVja2JveFxyXG4gICAgKm5nSWY9XCJ0cmVlLmNoZWNrYm94XCJcclxuICAgIFtkYXRhXT1cIlt7IGxhYmVsOiAnJywgaWQ6IG5vZGUuaWQgfV1cIlxyXG4gICAgWyhuZ01vZGVsKV09XCJub2RlLmNoZWNrZWRcIlxyXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGVja2JveENoYW5nZSgpXCJcclxuICAgIFtpbmRldGVybWluYXRlXT1cIm5vZGUuaW5kZXRlcm1pbmF0ZVwiXHJcbiAgICBbZGlzYWJsZWRdPVwibm9kZS5kaXNhYmxlZCFcIlxyXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgPjwveC1jaGVja2JveD5cclxuICA8c3BhblxyXG4gICAgY2xhc3M9XCJ4LXRyZWUtbm9kZS1sYWJlbFwiXHJcbiAgICBbY2xhc3Mubm93cmFwXT1cIm5vZGUubm93cmFwID09PSBmYWxzZSB8fCBub2RlLm5vd3JhcCA9PT0gdHJ1ZSA/IG5vZGUubm93cmFwIDogbm9kZU5vd3JhcFwiXHJcbiAgICBbdGl0bGVdPVwibm9kZS5sYWJlbFwiXHJcbiAgICB4LWtleXdvcmRcclxuICAgIFt0ZXh0XT1cInRyZWUua2V5d29yZFRleHRcIlxyXG4gICAgW2Nhc2VTZW5zaXRpdmVdPVwidHJlZS5jYXNlU2Vuc2l0aXZlXCJcclxuICAgICpuZ0lmPVwiIXRyZWUubGFiZWxUcGw7IGVsc2UgbGFiZWxUcGxcIlxyXG4gICAgPnt7IG5vZGUubGFiZWwgfX08L3NwYW5cclxuICA+XHJcbiAgPG5nLXRlbXBsYXRlICNsYWJlbFRwbD5cclxuICAgIDxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJ0cmVlLmxhYmVsVHBsOyBjb250ZXh0OiB7ICRub2RlOiBub2RlIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gIDxzcGFuIGNsYXNzPVwieC10cmVlLW5vZGUtb3BlcmF0aW9uc1wiPlxyXG4gICAgPHgtbGlua1xyXG4gICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIHRyZWUuYWN0aW9uczsgdHJhY2tCeTogdHJhY2tCeUl0ZW1cIlxyXG4gICAgICBbaWNvbl09XCJhY3Rpb24uaWNvblwiXHJcbiAgICAgIFt0aXRsZV09XCJhY3Rpb24ubGFiZWxcIlxyXG4gICAgICAoY2xpY2spPVwib25BY3Rpb24oJGV2ZW50LCBhY3Rpb24sIG5vZGUpXCJcclxuICAgID48L3gtbGluaz5cclxuICA8L3NwYW4+XHJcbiAgPHgtaWNvbiBjbGFzcz1cIngtdHJlZS1ub2RlLWNoZWNrZWRcIiB0eXBlPVwiZnRvLWNoZWNrXCIgKm5nSWY9XCJ0cmVlLm11bHRpcGxlICYmIGdldEFjdGl2YXRlZFwiPjwveC1pY29uPlxyXG48L2Rpdj5cclxuIl19
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ub2RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3RyZWUvdHJlZS1ub2RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3RyZWUvdHJlZS1ub2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBSWpCLHVCQUF1QixFQUN2QixXQUFXLEVBQ1gsS0FBSyxFQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQWEsaUJBQWlCLEVBQWUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RixPQUFPLEVBQUUsUUFBUSxFQUE0QixNQUFNLGtCQUFrQixDQUFDOzs7Ozs7Ozs7O0FBU3RFLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxpQkFBaUI7SUE0QnZELFlBQ1MsUUFBbUIsRUFDbkIsVUFBbUMsRUFDbkMsR0FBc0IsRUFDdEIsYUFBNkI7UUFFcEMsS0FBSyxFQUFFLENBQUM7UUFMRCxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQ25DLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGtCQUFhLEdBQWIsYUFBYSxDQUFnQjtRQTlCSixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQzNDLGFBQVEsR0FBRyxLQUFLLENBQUM7SUFnQ3pCLENBQUM7SUEvQkQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBQ0QsSUFBVyxPQUFPLENBQUMsS0FBSztRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLE1BQU0sQ0FBQyxJ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LENBQUMsUUFBdUIsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGVBQWUsQ0FBQyxRQUFrQjtRQUNoQyxPQUFPLFFBQW9CLENBQUM7SUFDOUIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFZLEVBQUUsTUFBbUIsRUFBRSxJQUFlO1FBQ3pELE1BQU0sQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFjLEVBQUUsSUFBNkI7UUFDdkQsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7O2tJQWxLVSxrQkFBa0I7c0hBQWxCLGtCQUFrQixvTENwQi9CLDBnRUFtREE7MkZEL0JhLGtCQUFrQjtrQkFQOUIsU0FBUzsrQkFDRSxHQUFHLGVBQWUsTUFBTSxlQUFlLEdBQUcsaUJBR3JDLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07c0xBR3RDLElBQUk7c0JBQVosS0FBSztnQkFDNEIsU0FBUztzQkFBMUMsV0FBVzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBSZW5kZXJlcjIsXHJcbiAgRWxlbWVudFJlZixcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBIb3N0QmluZGluZyxcclxuICBJbnB1dFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBYVHJlZU5vZGVQcmVmaXgsIFhUcmVlTm9kZSwgWFRyZWVOb2RlUHJvcGVydHksIFhUcmVlQWN0aW9uIH0gZnJvbSAnLi90cmVlLnByb3BlcnR5JztcclxuaW1wb3J0IHsgWElzRW1wdHksIFhDb25maWdTZXJ2aWNlLCBYQm9vbGVhbiB9IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IGAke1hUcmVlTm9kZVByZWZpeH0sIFske1hUcmVlTm9kZVByZWZpeH1dYCxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHJlZS1ub2RlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90cmVlLW5vZGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBYVHJlZU5vZGVDb21wb25lbnQgZXh0ZW5kcyBYVHJlZU5vZGVQcm9wZXJ0eSB7XHJcbiAgQElucHV0KCkgdHJlZTogYW55O1xyXG4gIEBIb3N0QmluZGluZygnY2xhc3MueC10cmVlLW5vZGUnKSByb290Q2xhc3MgPSB0cnVlO1xyXG4gIHByaXZhdGUgX2xvYWRpbmcgPSBmYWxzZTtcclxuICBwdWJsaWMgZ2V0IGxvYWRpbmcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbG9hZGluZztcclxuICB9XHJcbiAgcHVibGljIHNldCBsb2FkaW5nKHZhbHVlKSB7XHJcbiAgICB0aGlzLl9sb2FkaW5nID0gdmFsdWU7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgcGFkZGluZ0xlZnQoKSB7XHJcbiAgICByZXR1cm4gTnVtYmVyKHRoaXMubm9kZT8ubGV2ZWwgPyB0aGlzLm5vZGUubGV2ZWwgOiAwKSAqIE51bWJlcih0aGlzLnRyZWUuc3BhY2luZyk7XHJcbiAgfVxyXG5cclxuICBnZXQgZ2V0QWN0aXZhdGVkKCkge1xyXG4gICAgaWYgKHRoaXMudHJlZS5tdWx0aXBsZSkge1xyXG4gICAgICBpZiAodGhpcy50cmVlLm9iamVjdEFycmF5KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudHJlZS5hY3RpdmF0ZWRJZD8ubWFwKCh4OiBYVHJlZU5vZGUpID0+IHguaWQpLmluY2x1ZGVzKHRoaXMubm9kZS5pZCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudHJlZS5hY3RpdmF0ZWRJZD8uaW5jbHVkZXModGhpcy5ub2RlLmlkKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMudHJlZS5hY3RpdmF0ZWRJZCA9PT0gdGhpcy5ub2RlLmlkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcclxuICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHVibGljIGNvbmZpZ1NlcnZpY2U6IFhDb25maWdTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLm5vZGUuY2hhbmdlID0gKGNoZWNrOiBib29sZWFuKSA9PiB7XHJcbiAgICAgIGlmIChjaGVjaykgdGhpcy5zZXRDaGVja2JveCgpO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9O1xyXG4gICAgdGhpcy5sZXZlbCA9IHRoaXMubm9kZT8ubGV2ZWwgPyB0aGlzLm5vZGUubGV2ZWwgOiAwO1xyXG4gICAgaWYgKCF0aGlzLnRyZWUubGV2ZWxDaGVjaykgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMubm9kZS5jaGVja2VkKSB0aGlzLnNldENoZWNrYm94KCk7XHJcbiAgICB0aGlzLnNldEluZGV0ZXJtaW5hdGUodGhpcy5ub2RlKTtcclxuICB9XHJcblxyXG4gIG9uQWN0aXZhdGUoZXZlbnQ6IEV2ZW50LCBub2RlOiBYVHJlZU5vZGUpIHtcclxuICAgIGNvbnN0IGNoYW5nZTogRnVuY3Rpb24gPSB0aGlzLnRyZWUuYWN0aXZhdGVkTm9kZT8uY2hhbmdlIGFzIEZ1bmN0aW9uO1xyXG4gICAgdGhpcy50cmVlLm5vZGVPcGVuICYmICFub2RlLmxlYWYgJiYgdGhpcy50cmVlLm9uVG9nZ2xlKGV2ZW50LCBub2RlKTtcclxuICAgIGNvbnN0IG9uQ2hhbmdlID0gKCkgPT4ge1xyXG4gICAgICBjaGFuZ2UgJiYgY2hhbmdlKCk7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9O1xyXG4gICAgaWYgKHRoaXMudHJlZS5vbmx5TGVhZiAmJiAhbm9kZS5sZWFmKSB7XHJcbiAgICAgIG9uQ2hhbmdlKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnRyZWUubXVsdGlwbGUpIHtcclxuICAgICAgaWYgKCF0aGlzLnRyZWUuYWN0aXZhdGVkSWQpIHRoaXMudHJlZS5hY3RpdmF0ZWRJZCA9IFtdO1xyXG4gICAgICBpZiAodGhpcy50cmVlLm9iamVjdEFycmF5KSB7XHJcbiAgICAgICAgY29uc3QgaWRzID0gdGhpcy50cmVlLmFjdGl2YXRlZElkLm1hcCgoeDogWFRyZWVOb2RlKSA9PiB4LmlkKTtcclxuICAgICAgICBpZiAoaWRzLmluY2x1ZGVzKG5vZGUuaWQpKSB7XHJcbiAgICAgICAgICB0aGlzLnRyZWUuYWN0aXZhdGVkSWQuc3BsaWNlKGlkcy5pbmRleE9mKG5vZGUuaWQpLCAxKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50cmVlLmFjdGl2YXRlZElkLnB1c2gobm9kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLnRyZWUuYWN0aXZhdGVkSWQuaW5jbHVkZXMobm9kZS5pZCkpIHtcclxuICAgICAgICAgIHRoaXMudHJlZS5hY3RpdmF0ZWRJZC5zcGxpY2UodGhpcy50cmVlLmFjdGl2YXRlZElkLmluZGV4T2Yobm9kZS5pZCksIDEpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnRyZWUuYWN0aXZhdGVkSWQucHVzaChub2RlLmlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudHJlZS5hY3RpdmF0ZWRJZCA9IG5vZGUuaWQ7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy50cmVlLmFjdGl2YXRlZE5vZGUpIHtcclxuICAgICAgaWYgKHRoaXMudHJlZS5hY3RpdmF0ZWROb2RlLmlkID09PSBub2RlLmlkICYmICF0aGlzLnRyZWUuYWxsb3dNYW55QWN0aXZhdGVkKSByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnRyZWUuYWN0aXZhdGVkTm9kZSA9IG5vZGU7XHJcbiAgICB0aGlzLnRyZWUuYWN0aXZhdGVkSWRDaGFuZ2UuZW1pdCh0aGlzLnRyZWUuYWN0aXZhdGVkSWQpO1xyXG4gICAgdGhpcy50cmVlLmFjdGl2YXRlZENoYW5nZS5lbWl0KG5vZGUpO1xyXG4gICAgdGhpcy50cmVlLm5vZGVDbGljay5lbWl0KG5vZGUpO1xyXG4gICAgb25DaGFuZ2UoKTtcclxuICB9XHJcblxyXG4gIG9uQ2hlY2tib3hDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLnNldENoZWNrYm94KCk7XHJcbiAgICB0aGlzLnRyZWUuY2hlY2tib3hDaGFuZ2UuZW1pdCh0aGlzLm5vZGUpO1xyXG4gIH1cclxuXHJcbiAgc2V0Q2hlY2tib3goKSB7XHJcbiAgICBpZiAoIXRoaXMudHJlZS5sZXZlbENoZWNrKSByZXR1cm47XHJcbiAgICB0aGlzLm5vZGUuaW5kZXRlcm1pbmF0ZSA9IHRoaXMubm9kZS5jaGVja2VkO1xyXG4gICAgdGhpcy5ub2RlLmNoaWxkcmVuICYmIHRoaXMuc2V0Q2hpbGRyZW5DaGVja2JveCh0aGlzLm5vZGUuY2hlY2tlZCBhcyBib29sZWFuKTtcclxuICAgIGNvbnN0IHNldFBhcmVudCA9IChub2RlOiBYVHJlZU5vZGUpID0+IHtcclxuICAgICAgbGV0IHBhcmVudCA9IHRoaXMudHJlZS5ub2Rlcy5maW5kKCh4OiBYVHJlZU5vZGUpID0+IHguaWQgPT09IG5vZGUucGlkKTtcclxuICAgICAgaWYgKCFwYXJlbnQgfHwgWElzRW1wdHkocGFyZW50LmNoaWxkcmVuKSkgcmV0dXJuO1xyXG4gICAgICBsZXQgY2hlY2tlZExpc3QgPSBwYXJlbnQuY2hpbGRyZW4/LmZpbHRlcigoeTogWFRyZWVOb2RlKSA9PiB5LmNoZWNrZWQpO1xyXG4gICAgICBsZXQgaW5kZXRlcm1pbmF0ZUxpc3QgPSBwYXJlbnQuY2hpbGRyZW4/LmZpbHRlcigoeTogWFRyZWVOb2RlKSA9PiB5LmluZGV0ZXJtaW5hdGUpO1xyXG4gICAgICBwYXJlbnQuY2hlY2tlZCA9IGNoZWNrZWRMaXN0Py5sZW5ndGggPT09IHBhcmVudC5jaGlsZHJlbj8ubGVuZ3RoO1xyXG4gICAgICBwYXJlbnQuaW5kZXRlcm1pbmF0ZSA9IChjaGVja2VkTGlzdCBhcyBYVHJlZU5vZGVbXSkubGVuZ3RoID4gMCB8fCAoaW5kZXRlcm1pbmF0ZUxpc3QgYXMgWFRyZWVOb2RlW10pLmxlbmd0aCA+IDA7XHJcbiAgICAgIHBhcmVudC5jaGFuZ2UgJiYgcGFyZW50LmNoYW5nZSgpO1xyXG4gICAgICBzZXRQYXJlbnQocGFyZW50KTtcclxuICAgIH07XHJcbiAgICBzZXRQYXJlbnQodGhpcy5ub2RlKTtcclxuICB9XHJcblxyXG4gIHNldENoaWxkcmVuQ2hlY2tib3goY2hlY2tlZDogYm9vbGVhbikge1xyXG4gICAgY29uc3Qgc2V0Q2hpbGRyZW4gPSAoY2hpbGRyZW46IFhUcmVlTm9kZVtdLCBpc0NoZWNrZWQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgaWYgKFhJc0VtcHR5KGNoaWxkcmVuKSkgcmV0dXJuO1xyXG4gICAgICBmb3IgKGxldCB4IG9mIGNoaWxkcmVuKSB7XHJcbiAgICAgICAgaWYgKHguZGlzYWJsZWQpIGNvbnRpbnVlO1xyXG4gICAgICAgIHguY2hlY2tlZCA9IGlzQ2hlY2tlZDtcclxuICAgICAgICB4LmluZGV0ZXJtaW5hdGUgPSBpc0NoZWNrZWQ7XHJcbiAgICAgICAgeC5jaGFuZ2UgJiYgeC5jaGFuZ2UoKTtcclxuICAgICAgICBzZXRDaGlsZHJlbih4LmNoaWxkcmVuIGFzIFhUcmVlTm9kZVtdLCBpc0NoZWNrZWQpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgc2V0Q2hpbGRyZW4odGhpcy5ub2RlLmNoaWxkcmVuIGFzIFhUcmVlTm9kZVtdLCBjaGVja2VkKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHNldFBhcmVudENoZWNrYm94KCkge1xyXG4gICAgaWYgKFhJc0VtcHR5KHRoaXMubm9kZS5jaGlsZHJlbikpIHJldHVybjtcclxuICAgIGxldCBjaGVja2VkTGlzdCA9IHRoaXMubm9kZS5jaGlsZHJlbj8uZmlsdGVyKCh4KSA9PiB4LmNoZWNrZWQpO1xyXG4gICAgbGV0IGluZGV0ZXJtaW5hdGVMaXN0ID0gdGhpcy5ub2RlLmNoaWxkcmVuPy5maWx0ZXIoKHgpID0+IHguaW5kZXRlcm1pbmF0ZSk7XHJcbiAgICB0aGlzLm5vZGUuY2hlY2tlZCA9IGNoZWNrZWRMaXN0Py5sZW5ndGggPT09IHRoaXMubm9kZS5jaGlsZHJlbj8ubGVuZ3RoO1xyXG4gICAgdGhpcy5ub2RlLmluZGV0ZXJtaW5hdGUgPSAoY2hlY2tlZExpc3QgYXMgWFRyZWVOb2RlW10pLmxlbmd0aCA+IDAgfHwgKGluZGV0ZXJtaW5hdGVMaXN0IGFzIFhUcmVlTm9kZVtdKS5sZW5ndGggPiAwO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2V0SW5kZXRlcm1pbmF0ZShub2RlOiBYVHJlZU5vZGUpIHtcclxuICAgIGNvbnN0IGdldENoaWxkcmVuID0gKGNoaWxkcmVuOiBYVHJlZU5vZGVbXSkgPT4ge1xyXG4gICAgICBpZiAoWElzRW1wdHkoY2hpbGRyZW4pKSByZXR1cm47XHJcbiAgICAgIGNoaWxkcmVuLmZvckVhY2goKHgpID0+IHtcclxuICAgICAgICBpZiAoeC5pbmRldGVybWluYXRlIHx8IHguY2hlY2tlZCkge1xyXG4gICAgICAgICAgbm9kZS5pbmRldGVybWluYXRlID0gdHJ1ZTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZ2V0Q2hpbGRyZW4oeC5jaGlsZHJlbiBhcyBYVHJlZU5vZGVbXSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIGdldENoaWxkcmVuKG5vZGUuY2hpbGRyZW4gYXMgWFRyZWVOb2RlW10pO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Tm9kZURpc2FibGVkKGRpc2FibGVkPzogYm9vbGVhbikge1xyXG4gICAgcmV0dXJuIGRpc2FibGVkIGFzIFhCb29sZWFuO1xyXG4gIH1cclxuXHJcbiAgb25BY3Rpb24oZXZlbnQ6IEV2ZW50LCBhY3Rpb246IFhUcmVlQWN0aW9uLCBub2RlOiBYVHJlZU5vZGUpIHtcclxuICAgIGFjdGlvbi5oYW5kbGVyICYmIGFjdGlvbi5oYW5kbGVyKG5vZGUpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5SXRlbShfaW5kZXg6IG51bWJlciwgaXRlbTogWFRyZWVBY3Rpb24gfCBYVHJlZU5vZGUpIHtcclxuICAgIHJldHVybiBpdGVtLmlkO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgY2xhc3M9XCJ4LXRyZWUtbm9kZS1jb250ZW50XCJcclxuICBbY2xhc3MueC1hY3RpdmF0ZWRdPVwiZ2V0QWN0aXZhdGVkXCJcclxuICBbY2xhc3MueC1kaXNhYmxlZF09XCJub2RlLmRpc2FibGVkXCJcclxuICBbY2xhc3MueC10cmVlLW5vZGUtc3ViXT1cIiFub2RlLmxlYWZcIlxyXG4gIFtzdHlsZS5wYWRkaW5nLWxlZnQucmVtXT1cInBhZGRpbmdMZWZ0XCJcclxuICBbc3R5bGUuaGVpZ2h0LnJlbV09XCJub2RlLmhlaWdodCA/IG5vZGUuaGVpZ2h0IDogbm9kZUhlaWdodCA/IG5vZGVIZWlnaHQgOiAnJ1wiXHJcbiAgW3N0eWxlLmFsaWduLWl0ZW1zXT1cIm5vZGUuYWxpZ25JdGVtcyA/IG5vZGUuYWxpZ25JdGVtcyA6IG5vZGVBbGlnbkl0ZW1zXCJcclxuICAoY2xpY2spPVwiIW5vZGUuZGlzYWJsZWQgJiYgb25BY3RpdmF0ZSgkZXZlbnQsIG5vZGUpXCJcclxuPlxyXG4gIDx4LWljb25cclxuICAgICpuZ0lmPVwiIW5vZGUubG9hZGluZ1wiXHJcbiAgICBbY2xhc3MuaXMtbGVhZl09XCJub2RlLmxlYWZcIlxyXG4gICAgW2NsYXNzLmlzLW9wZW5dPVwibm9kZS5vcGVuXCJcclxuICAgIHR5cGU9XCJmdG8tY2hldnJvbi1yaWdodFwiXHJcbiAgICBjbGFzcz1cIngtdHJlZS1ub2RlLXJpZ2h0XCJcclxuICAgIChjbGljayk9XCIhdHJlZS5ub2RlT3BlbiAmJiB0cmVlLm9uVG9nZ2xlKCRldmVudCwgbm9kZSlcIlxyXG4gID48L3gtaWNvbj5cclxuICA8eC1pY29uIGNsYXNzPVwieC10cmVlLW5vZGUtbG9hZGluZ1wiICpuZ0lmPVwibm9kZS5sb2FkaW5nXCIgdHlwZT1cImZ0by1sb2FkZXJcIiBbc3Bpbl09XCJub2RlLmxvYWRpbmdcIj48L3gtaWNvbj5cclxuICA8eC1jaGVja2JveFxyXG4gICAgKm5nSWY9XCJ0cmVlLmNoZWNrYm94XCJcclxuICAgIFtkYXRhXT1cIlt7IGxhYmVsOiAnJywgaWQ6IG5vZGUuaWQgfV1cIlxyXG4gICAgWyhuZ01vZGVsKV09XCJub2RlLmNoZWNrZWRcIlxyXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGVja2JveENoYW5nZSgpXCJcclxuICAgIFtpbmRldGVybWluYXRlXT1cIm5vZGUuaW5kZXRlcm1pbmF0ZVwiXHJcbiAgICBbZGlzYWJsZWRdPVwibm9kZS5kaXNhYmxlZCFcIlxyXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgPjwveC1jaGVja2JveD5cclxuICA8c3BhblxyXG4gICAgY2xhc3M9XCJ4LXRyZWUtbm9kZS1sYWJlbFwiXHJcbiAgICBbY2xhc3Mubm93cmFwXT1cIm5vZGUubm93cmFwID09PSBmYWxzZSB8fCBub2RlLm5vd3JhcCA9PT0gdHJ1ZSA/IG5vZGUubm93cmFwIDogbm9kZU5vd3JhcFwiXHJcbiAgICBbdGl0bGVdPVwibm9kZS5sYWJlbFwiXHJcbiAgICB4LWtleXdvcmRcclxuICAgIFt0ZXh0XT1cInRyZWUua2V5d29yZFRleHRcIlxyXG4gICAgW2Nhc2VTZW5zaXRpdmVdPVwidHJlZS5jYXNlU2Vuc2l0aXZlXCJcclxuICAgICpuZ0lmPVwiIXRyZWUubGFiZWxUcGw7IGVsc2UgbGFiZWxUcGxcIlxyXG4gICAgPnt7IG5vZGUubGFiZWwgfX08L3NwYW5cclxuICA+XHJcbiAgPG5nLXRlbXBsYXRlICNsYWJlbFRwbD5cclxuICAgIDxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJ0cmVlLmxhYmVsVHBsOyBjb250ZXh0OiB7ICRub2RlOiBub2RlIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gIDxzcGFuIGNsYXNzPVwieC10cmVlLW5vZGUtb3BlcmF0aW9uc1wiPlxyXG4gICAgPHgtbGlua1xyXG4gICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIHRyZWUuYWN0aW9uczsgdHJhY2tCeTogdHJhY2tCeUl0ZW1cIlxyXG4gICAgICBbaWNvbl09XCJhY3Rpb24uaWNvblwiXHJcbiAgICAgIFt0aXRsZV09XCJhY3Rpb24ubGFiZWxcIlxyXG4gICAgICAoY2xpY2spPVwib25BY3Rpb24oJGV2ZW50LCBhY3Rpb24sIG5vZGUpXCJcclxuICAgID48L3gtbGluaz5cclxuICA8L3NwYW4+XHJcbiAgPHgtaWNvbiBjbGFzcz1cIngtdHJlZS1ub2RlLWNoZWNrZWRcIiB0eXBlPVwiZnRvLWNoZWNrXCIgKm5nSWY9XCJ0cmVlLm11bHRpcGxlICYmIGdldEFjdGl2YXRlZFwiPjwveC1pY29uPlxyXG48L2Rpdj5cclxuIl19
@@ -223,6 +223,8 @@ export class XTreeComponent extends XTreeProperty {
223
223
  if (node.open) {
224
224
  let addNodes = [];
225
225
  const getNodes = (nd) => {
226
+ if (XIsEmpty(nd.children))
227
+ return;
226
228
  for (let child of nd.children) {
227
229
  addNodes.push(child);
228
230
  child.open && getNodes(child);
@@ -234,6 +236,8 @@ export class XTreeComponent extends XTreeProperty {
234
236
  else {
235
237
  let delCount = 0;
236
238
  const getCount = (nd) => {
239
+ if (XIsEmpty(nd.children))
240
+ return;
237
241
  delCount += nd.children.length;
238
242
  for (let child of nd.children) {
239
243
  child.open && getCount(child);
@@ -242,8 +246,21 @@ export class XTreeComponent extends XTreeProperty {
242
246
  getCount(node);
243
247
  this.nodes.splice(index + 1, delCount);
244
248
  }
249
+ this.addOrRemoveExpanded(node);
245
250
  this.nodes = [...this.nodes];
246
251
  }
252
+ addOrRemoveExpanded(node) {
253
+ if (node.open) {
254
+ if (!this.expanded.includes(node.id)) {
255
+ this.expanded.push(node.id);
256
+ }
257
+ }
258
+ else {
259
+ if (this.expanded.includes(node.id)) {
260
+ this.expanded.splice(this.expanded.indexOf(node.id), 1);
261
+ }
262
+ }
263
+ }
247
264
  setActivatedNode(nodes) {
248
265
  if (XIsEmpty(this.activatedId) && this.multiple) {
249
266
  this.activatedId = [];
@@ -449,4 +466,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImpor
449
466
  type: ViewChildren,
450
467
  args: [XTreeNodeComponent]
451
468
  }] } });
452
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS90cmVlL3RyZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdHJlZS90cmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBSWpCLHVCQUF1QixFQUN2QixTQUFTLEVBSVQsWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQWEsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQWtCLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JILE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7QUFTM0QsTUFBTSxPQUFPLGNBQWUsU0FBUSxhQUFhO0lBaUIvQyxZQUNTLFFBQW1CLEVBQ25CLFVBQW1DLEVBQ25DLEdBQXNCLEVBQ3RCLGFBQTZCO1FBRXBDLEtBQUssRUFBRSxDQUFDO1FBTEQsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUNuQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUFidEMsVUFBSyxHQUFnQixFQUFFLENBQUM7UUFDeEIsaUJBQVksR0FBZ0IsRUFBRSxDQUFDO1FBRS9CLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixhQUFRLEdBQWdCLEVBQUUs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LENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUMxQjtJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsSUFBZSxFQUFFLE9BQWtCO1FBQzVDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxXQUFXLENBQUMsTUFBYyxFQUFFLElBQWU7UUFDekMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7OzhIQXBiVSxjQUFjO2tIQUFkLGNBQWMsNFFBSVgsa0JBQWtCLDRGQzlCbEMsNnhDQXNDQTsyRkRaYSxjQUFjO2tCQVAxQixTQUFTOytCQUNFLEdBQUcsV0FBVyxFQUFFLGlCQUdYLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07c0xBR1YsSUFBSTtzQkFBeEMsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNULFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFHYixlQUFlO3NCQUR6QixZQUFZO3VCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIFJlbmRlcmVyMixcclxuICBFbGVtZW50UmVmLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIFZpZXdDaGlsZCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIE9uQ2hhbmdlcyxcclxuICBRdWVyeUxpc3QsXHJcbiAgVmlld0NoaWxkcmVuXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFhUcmVlUHJlZml4LCBYVHJlZU5vZGUsIFhUcmVlUHJvcGVydHkgfSBmcm9tICcuL3RyZWUucHJvcGVydHknO1xyXG5pbXBvcnQgeyBYSXNFbXB0eSwgWElzRnVuY3Rpb24sIFhJc1VuZGVmaW5lZCwgWElzQ2hhbmdlLCBYU2V0RGF0YSwgWENvbmZpZ1NlcnZpY2UsIFhSZXNpemUgfSBmcm9tICdAbmctbmVzdC91aS9jb3JlJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIE9ic2VydmFibGUsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcclxuaW1wb3J0IHsgWFRyZWVOb2RlQ29tcG9uZW50IH0gZnJvbSAnLi90cmVlLW5vZGUuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBgJHtYVHJlZVByZWZpeH1gLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cmVlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90cmVlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWFRyZWVDb21wb25lbnQgZXh0ZW5kcyBYVHJlZVByb3BlcnR5IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICBAVmlld0NoaWxkKCd0cmVlJywgeyBzdGF0aWM6IHRydWUgfSkgdHJlZSE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ3ZpcnR1YWxCb2R5JykgdmlydHVhbEJvZHkhOiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XHJcbiAgbm9kZUNvbXBvbmVudHMhOiBRdWVyeUxpc3Q8WFRyZWVOb2RlQ29tcG9uZW50PjtcclxuICBAVmlld0NoaWxkcmVuKFhUcmVlTm9kZUNvbXBvbmVudClcclxuICBwdWJsaWMgc2V0IF9ub2RlQ29tcG9uZW50cyh2YWx1ZTogUXVlcnlMaXN0PFhUcmVlTm9kZUNvbXBvbmVudD4pIHtcclxuICAgIHRoaXMubm9kZUNvbXBvbmVudHMgPSB2YWx1ZTtcclxuICB9XHJcbiAgbm9kZXM6IFhUcmVlTm9kZVtdID0gW107XHJcbiAgdmlydHVhbE5vZGVzOiBYVHJlZU5vZGVbXSA9IFtdO1xyXG4gIGFjdGl2YXRlZE5vZGUhOiBYVHJlZU5vZGU7XHJcbiAgZGF0YUlzRnVuYyA9IGZhbHNlO1xyXG4gIGdldHRpbmcgPSBmYWxzZTtcclxuICB0cmVlRGF0YTogWFRyZWVOb2RlW10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBfdW5TdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcml2YXRlIF9yZXNpemVPYnNlcnZlciE6IFJlc2l6ZU9ic2VydmVyO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXHJcbiAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHB1YmxpYyBjb25maWdTZXJ2aWNlOiBYQ29uZmlnU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGNvbnN0IHsgZXhwYW5kZWRBbGwsIGRhdGEsIGFjdGl2YXRlZElkLCBjaGVja2VkLCBtYW51YWwgfSA9IGNoYW5nZXM7XHJcbiAgICBYSXNDaGFuZ2UoZGF0YSkgJiYgdGhpcy5zZXREYXRhKCk7XHJcbiAgICBYSXNDaGFuZ2UoYWN0aXZhdGVkSWQpICYmIHRoaXMuc2V0QWN0aXZhdGVkTm9kZSh0aGlzLnRyZWVEYXRhKTtcclxuICAgIFhJc0NoYW5nZShleHBhbmRlZEFsbCkgJiYgdGhpcy5zZXRFeHBhbmRlZEFsbCgpO1xyXG4gICAgWElzQ2hhbmdlKGNoZWNrZWQpICYmIHRoaXMuc2V0Q2hlY2tlZEtleXModGhpcy5jaGVja2VkKTtcclxuICAgIFhJc0NoYW5nZShtYW51YWwpICYmIHRoaXMuc2V0TWFudWFsKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBpZiAodGhpcy52aXJ0dWFsU2Nyb2xsICYmIHRoaXMuaGVpZ2h0QWRhcHRpb24pIHtcclxuICAgICAgdGhpcy5zZXRWaXJ0dWFsU2Nyb2xsSGVpZ2h0KCk7XHJcbiAgICAgIFhSZXNpemUodGhpcy5oZWlnaHRBZGFwdGlvbiBhcyBIVE1MRWxlbWVudClcclxuICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMzApLCB0YWtlVW50aWwodGhpcy5fdW5TdWJqZWN0KSlcclxuICAgICAgICAuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9yZXNpemVPYnNlcnZlciA9IHgucmVzaXplT2JzZXJ2ZXI7XHJcbiAgICAgICAgICB0aGlzLnNldFZpcnR1YWxTY3JvbGxIZWlnaHQoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0U2NvcmxsVG9wKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3VuU3ViamVjdC5uZXh0KCk7XHJcbiAgICB0aGlzLl91blN1YmplY3QudW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuX3Jlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XHJcbiAgfVxyXG5cclxuICBzZXREYXRhKCkge1xyXG4gICAgaWYgKHR5cGVvZiB0aGlzLmRhdGEgPT09ICd1bmRlZmluZWQnKSByZXR1cm47XHJcbiAgICB0aGlzLmRhdGFJc0Z1bmMgPSBmYWxzZTtcclxuICAgIGlmIChYSXNGdW5jdGlvbih0aGlzLmRhdGEpKSB7XHJcbiAgICAgIHRoaXMuZGF0YUlzRnVuYyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZ2V0RGF0YUJ5RnVuYygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgWFNldERhdGE8WFRyZWVOb2RlPih0aGlzLmRhdGEsIHRoaXMuX3VuU3ViamVjdCkuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXREYXRhQ2hhbmdlKHgpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VmlydHVhbFNjcm9sbEhlaWdodCgpIHtcclxuICAgIHRoaXMudmlydHVhbFNjcm9sbEhlaWdodCA9ICh0aGlzLmhlaWdodEFkYXB0aW9uIGFzIEhUTUxFbGVtZW50KS5jbGllbnRIZWlnaHQ7XHJcbiAgICB0aGlzLm1pbkJ1ZmZlclB4ID0gdGhpcy52aXJ0dWFsU2Nyb2xsSGVpZ2h0O1xyXG4gICAgdGhpcy5tYXhCdWZmZXJQeCA9IHRoaXMudmlydHVhbFNjcm9sbEhlaWdodCAqIDEuMjtcclxuICAgIHRoaXMudmlydHVhbEJvZHlbJ19zY3JvbGxTdHJhdGVneSddWydfbWluQnVmZmVyUHgnXSA9IHRoaXMubWluQnVmZmVyUHg7XHJcbiAgICB0aGlzLnZpcnR1YWxCb2R5Wydfc2Nyb2xsU3RyYXRlZ3knXVsnX21heEJ1ZmZlclB4J10gPSB0aGlzLm1heEJ1ZmZlclB4O1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRNYW51YWwoKSB7XHJcbiAgICBpZiAodGhpcy5kYXRhSXNGdW5jKSB0aGlzLmdldERhdGFCeUZ1bmMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RGF0YUJ5RnVuYygpIHtcclxuICAgIGlmICghdGhpcy5tYW51YWwpIHJldHVybjtcclxuICAgIFhTZXREYXRhPFhUcmVlTm9kZT4oKHRoaXMuZGF0YSBhcyBGdW5jdGlvbikoKSwgdGhpcy5fdW5TdWJqZWN0KS5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgdGhpcy5zZXREYXRhQ2hhbmdlKHgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldERhdGFDaGFuZ2UodmFsdWU6IFhUcmVlTm9kZVtdKSB7XHJcbiAgICBpZiAoWElzRW1wdHkodGhpcy5jaGVja2VkKSkgdGhpcy5jaGVja2VkID0gW107XHJcbiAgICBjb25zdCBnZXRDaGlsZHJlbiA9IChub2RlOiBYVHJlZU5vZGUsIGxldmVsOiBudW1iZXIpID0+IHtcclxuICAgICAgbm9kZS5sZXZlbCA9IGxldmVsO1xyXG4gICAgICBub2RlLm9wZW4gPSBCb29sZWFuKHRoaXMuZXhwYW5kZWRBbGwpIHx8IGxldmVsIDw9IHRoaXMuZXhwYW5kZWRMZXZlbCB8fCB0aGlzLmV4cGFuZGVkLmluZGV4T2Yobm9kZS5pZCkgPj0gMCB8fCBub2RlLm9wZW47XHJcbiAgICAgIG5vZGUuY2hlY2tlZCA9IHRoaXMuY2hlY2tlZC5pbmRleE9mKG5vZGUuaWQpID49IDA7XHJcbiAgICAgIG5vZGUuY2hpbGRyZW5Mb2FkZWQgPSBub2RlLm9wZW47XHJcbiAgICAgIGlmIChYSXNVbmRlZmluZWQobm9kZS5jaGlsZHJlbikpIHtcclxuICAgICAgICBub2RlLmNoaWxkcmVuID0gdmFsdWUuZmlsdGVyKCh5KSA9PiB5LnBpZCA9PT0gbm9kZS5pZCk7XHJcbiAgICAgICAgaWYgKHRoaXMubGV2ZWxDaGVjayAmJiBub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hlY2tlZCkge1xyXG4gICAgICAgICAgZm9yIChsZXQgbmQgb2Ygbm9kZS5jaGlsZHJlbikge1xyXG4gICAgICAgICAgICBuZC5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jaGVja2VkLnB1c2gobmQuaWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoWElzVW5kZWZpbmVkKG5vZGUubGVhZikpIG5vZGUubGVhZiA9IChub2RlLmNoaWxkcmVuPy5sZW5ndGggYXMgbnVtYmVyKSA9PT0gMDtcclxuICAgICAgaWYgKCFub2RlLmxlYWYpIG5vZGUuY2hpbGRyZW4/Lm1hcCgoeSkgPT4gZ2V0Q2hpbGRyZW4oeSwgbGV2ZWwgKyAxKSk7XHJcbiAgICAgIHJldHVybiBub2RlO1xyXG4gICAgfTtcclxuICAgIHRoaXMudHJlZURhdGEgPSB2YWx1ZTtcclxuICAgIHRoaXMubm9kZXMgPSB2YWx1ZS5maWx0ZXIoKHgpID0+IFhJc0VtcHR5KHgucGlkKSkubWFwKCh4KSA9PiBnZXRDaGlsZHJlbih4LCAwKSk7XHJcbiAgICBmb3IgKGxldCBpdGVtIG9mIHZhbHVlKSB7XHJcbiAgICAgIGlmIChpdGVtLm9wZW4pIHtcclxuICAgICAgICB0aGlzLnNldFBhcmVudE9wZW4odmFsdWUsIGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldEV4cGFuZGVkKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzZXRTY29ybGxUb3AoKSB7XHJcbiAgICBpZiAoIXRoaXMuc2Nyb2xsRWxlbWVudCB8fCAhdGhpcy5hY3RpdmF0ZWROb2RlKSByZXR1cm47XHJcbiAgICBsZXQgaW54ID0gdGhpcy5ub2Rlcy5pbmRleE9mKHRoaXMuYWN0aXZhdGVkTm9kZSk7XHJcbiAgICBsZXQgY29tID0gdGhpcy5ub2RlQ29tcG9uZW50cy5nZXQoaW54KTtcclxuICAgIGlmICghY29tKSByZXR1cm47XHJcbiAgICBsZXQgZWxlID0gY29tLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGxldCBzY3JvbGxFbGUgPSB0aGlzLnNjcm9sbEVsZW1lbnQ7XHJcbiAgICBsZXQgbWluID0gc2Nyb2xsRWxlLnNjcm9sbFRvcDtcclxuICAgIGxldCBtYXggPSBzY3JvbGxFbGUuc2Nyb2xsVG9wICsgc2Nyb2xsRWxlLmNsaWVudEhlaWdodDtcclxuICAgIGlmIChlbGUub2Zmc2V0VG9wICsgZWxlLmNsaWVudEhlaWdodCA+IG1heCkge1xyXG4gICAgICBsZXQgc2Nyb2xsVG9wID0gZWxlLm9mZnNldFRvcCArIGVsZS5jbGllbnRIZWlnaHQgLSBzY3JvbGxFbGUuY2xpZW50SGVpZ2h0O1xyXG4gICAgICBzY3JvbGxFbGUuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xyXG4gICAgfVxyXG4gICAgaWYgKGVsZS5vZmZzZXRUb3AgPCBtaW4pIHtcclxuICAgICAgc2Nyb2xsRWxlLnNjcm9sbFRvcCA9IGVsZS5vZmZzZXRUb3A7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDaGVja2VkTm9kZXMoKTogWFRyZWVOb2RlW10ge1xyXG4gICAgbGV0IHJlc3VsdDogWFRyZWVOb2RlW10gPSBbXTtcclxuICAgIGNvbnN0IGdldENoaWxkcmVuID0gKG5vZGVzOiBYVHJlZU5vZGVbXSkgPT4ge1xyXG4gICAgICBpZiAoWElzRW1wdHkobm9kZXMpKSByZXR1cm47XHJcbiAgICAgIG5vZGVzLmZvckVhY2goKHgpID0+IHtcclxuICAgICAgICBpZiAoeC5jaGVja2VkICYmICFyZXN1bHQuaW5jbHVkZXMoeCkpIHtcclxuICAgICAgICAgIHJlc3VsdCA9IFsuLi5yZXN1bHQsIHhdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBnZXRDaGlsZHJlbih4LmNoaWxkcmVuIGFzIFhUcmVlTm9kZVtdKTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgZ2V0Q2hpbGRyZW4odGhpcy5ub2Rlcyk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2hlY2tlZEtleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDaGVja2VkTm9kZXMoKS5tYXAoKHgpID0+IHguaWQpO1xyXG4gIH1cclxuXHJcbiAgc2V0Q2hlY2tlZEtleXMoa2V5czogYW55W10gPSBbXSkge1xyXG4gICAgY29uc3Qgc2V0Q2hpbGRyZW4gPSAobm9kZXM6IFhUcmVlTm9kZVtdLCBjbGVhciA9IGZhbHNlKSA9PiB7XHJcbiAgICAgIGlmIChYSXNFbXB0eShub2RlcykpIHJldHVybjtcclxuICAgICAgbm9kZXMuZm9yRWFjaCgoeCkgPT4ge1xyXG4gICAgICAgIHguY2hlY2tlZCA9ICFjbGVhciAmJiBrZXlzLmluY2x1ZGVzKHguaWQpO1xyXG4gICAgICAgIHguY2hhbmdlICYmIHguY2hhbmdlKHRydWUpO1xyXG4gICAgICAgIHNldENoaWxkcmVuKHguY2hpbGRyZW4gYXMgWFRyZWVOb2RlW10sIGNsZWFyKTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgc2V0Q2hpbGRyZW4odGhpcy5ub2RlcywgWElzRW1wdHkoa2V5cykpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2V0RXhwYW5kZWRBbGwoKSB7XHJcbiAgICBpZiAodGhpcy5leHBhbmRlZEFsbCAmJiB0aGlzLnRyZWVEYXRhLmxlbmd0aCA9PT0gdGhpcy5ub2Rlcy5sZW5ndGgpIHJldHVybjtcclxuICAgIGNvbnN0IHNldENoaWxkcmVuID0gKG5vZGVzOiBYVHJlZU5vZGVbXSkgPT4ge1xyXG4gICAgICBpZiAoWElzRW1wdHkobm9kZXMpKSByZXR1cm47XHJcbiAgICAgIG5vZGVzLmZvckVhY2goKHgpID0+IHtcclxuICAgICAgICB4Lm9wZW4gPSBCb29sZWFuKHRoaXMuZXhwYW5kZWRBbGwpO1xyXG4gICAgICAgIHguY2hhbmdlICYmIHguY2hhbmdlKCk7XHJcbiAgICAgICAgc2V0Q2hpbGRyZW4oeC5jaGlsZHJlbiBhcyBYVHJlZU5vZGVbXSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIHNldENoaWxkcmVuKHRoaXMubm9kZXMpO1xyXG5cclxuICAgIGlmICh0aGlzLmV4cGFuZGVkQWxsID09PSBmYWxzZSkge1xyXG4gICAgICB0aGlzLm5vZGVzID0gdGhpcy50cmVlRGF0YS5maWx0ZXIoKHgpID0+IFhJc0VtcHR5KHgucGlkKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy52aXJ0dWFsTm9kZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy52aXJ0dWFsTm9kZXMgPSBbLi4udGhpcy5ub2Rlc107XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5ub2RlcyA9IFsuLi50aGlzLnZpcnR1YWxOb2Rlc107XHJcbiAgICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy52aXJ0dWFsTm9kZXMpIHtcclxuICAgICAgICB0aGlzLnNldFZpcnR1YWxFeHBhbmRlZEFsbChpdGVtLCB0aGlzLmV4cGFuZGVkQWxsIGFzIGJvb2xlYW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRFeHBhbmRlZCgpIHtcclxuICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy5ub2Rlcykge1xyXG4gICAgICBpZiAoaXRlbS5vcGVuICYmIGl0ZW0uY2hpbGRyZW4pIHtcclxuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLm5vZGVzLmluZGV4T2YoaXRlbSk7XHJcbiAgICAgICAgdGhpcy5ub2Rlcy5zcGxpY2UoaW5kZXggKyAxLCAwLCAuLi4oaXRlbS5jaGlsZHJlbiBhcyBYVHJlZU5vZGVbXSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGl0ZW0uY2hhbmdlICYmIGl0ZW0uY2hhbmdlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm5vZGVzID0gWy4uLnRoaXMubm9kZXNdO1xyXG4gIH1cclxuXHJcbiAgc2V0VmlydHVhbEV4cGFuZGVkQWxsKGl0ZW06IFhUcmVlTm9kZSwgZXhwYW5kZWRBbGw6IGJvb2xlYW4pIHtcclxuICAgIGxldCBpbmRleCA9IHRoaXMubm9kZXMuaW5kZXhPZihpdGVtKTtcclxuICAgIGlmIChleHBhbmRlZEFsbCkge1xyXG4gICAgICBsZXQgYWRkTm9kZXM6IFhUcmVlTm9kZVtdID0gW107XHJcbiAgICAgIGNvbnN0IGdldE5vZGVzID0gKG5kOiBYVHJlZU5vZGUpID0+IHtcclxuICAgICAgICBmb3IgKGxldCBjaGlsZCBvZiBuZC5jaGlsZHJlbiEpIHtcclxuICAgICAgICAgIGFkZE5vZGVzLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgZ2V0Tm9kZXMoY2hpbGQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgICAgZ2V0Tm9kZXMoaXRlbSk7XHJcbiAgICAgIHRoaXMubm9kZXMuc3BsaWNlKGluZGV4ICsgMSwgMCwgLi4uYWRkTm9kZXMpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5ub2RlcyA9IFsuLi50aGlzLm5vZGVzXTtcclxuICB9XHJcblxyXG4gIHZpcnR1YWxUb2dnbGUobm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICBsZXQgaW5kZXggPSB0aGlzLm5vZGVzLmluZGV4T2Yobm9kZSk7XHJcbiAgICBpZiAobm9kZS5vcGVuKSB7XHJcbiAgICAgIGxldCBhZGROb2RlczogWFRyZWVOb2RlW10gPSBbXTtcclxuICAgICAgY29uc3QgZ2V0Tm9kZXMgPSAobmQ6IFhUcmVlTm9kZSkgPT4ge1xyXG4gICAgICAgIGZvciAobGV0IGNoaWxkIG9mIG5kLmNoaWxkcmVuISkge1xyXG4gICAgICAgICAgYWRkTm9kZXMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICBjaGlsZC5vcGVuICYmIGdldE5vZGVzKGNoaWxkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICAgIGdldE5vZGVzKG5vZGUpO1xyXG4gICAgICB0aGlzLm5vZGVzLnNwbGljZShpbmRleCArIDEsIDAsIC4uLmFkZE5vZGVzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBkZWxDb3VudCA9IDA7XHJcbiAgICAgIGNvbnN0IGdldENvdW50ID0gKG5kOiBYVHJlZU5vZGUpID0+IHtcclxuICAgICAgICBkZWxDb3VudCArPSBuZC5jaGlsZHJlbiEubGVuZ3RoO1xyXG4gICAgICAgIGZvciAobGV0IGNoaWxkIG9mIG5kLmNoaWxkcmVuISkge1xyXG4gICAgICAgICAgY2hpbGQub3BlbiAmJiBnZXRDb3VudChjaGlsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgICBnZXRDb3VudChub2RlKTtcclxuICAgICAgdGhpcy5ub2Rlcy5zcGxpY2UoaW5kZXggKyAxLCBkZWxDb3VudCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm5vZGVzID0gWy4uLnRoaXMubm9kZXNdO1xyXG4gIH1cclxuXHJcbiAgc2V0QWN0aXZhdGVkTm9kZShub2RlczogWFRyZWVOb2RlW10pIHtcclxuICAgIGlmIChYSXNFbXB0eSh0aGlzLmFjdGl2YXRlZElkKSAmJiB0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZhdGVkSWQgPSBbXTtcclxuICAgIH1cclxuICAgIGxldCBiZWZvcmUgPSB0aGlzLmFjdGl2YXRlZE5vZGU7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICBpZiAodGhpcy5hY3RpdmF0ZWRJZC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgbGV0IGlkcyA9IHRoaXMub2JqZWN0QXJyYXkgPyB0aGlzLmFjdGl2YXRlZElkLm1hcCgoeDogWFRyZWVOb2RlKSA9PiB4LmlkKSA6IHRoaXMuYWN0aXZhdGVkSWQ7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpZHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBub2RlID0gbm9kZXMuZmluZCgoeCkgPT4geC5pZCA9PT0gaWRzW2ldKSBhcyBYVHJlZU5vZGU7XHJcbiAgICAgICAgICBpZiAobm9kZSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFBhcmVudE9wZW4obm9kZXMsIG5vZGUpO1xyXG4gICAgICAgICAgICBpZiAoaSA9PT0gaWRzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgICB0aGlzLmFjdGl2YXRlZE5vZGUgPSBub2RlO1xyXG4gICAgICAgICAgICAgIHRoaXMuYWN0aXZhdGVkQ2hhbmdlLmVtaXQodGhpcy5hY3RpdmF0ZWROb2RlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGFjdGl2YXRlZElkID0gdGhpcy5hY3RpdmF0ZWRJZDtcclxuICAgICAgdGhpcy5hY3RpdmF0ZWROb2RlID0gbm9kZXMuZmluZCgoeCkgPT4geC5pZCA9PSBhY3RpdmF0ZWRJZCkgYXMgWFRyZWVOb2RlO1xyXG4gICAgICBpZiAodGhpcy5hY3RpdmF0ZWROb2RlKSB7XHJcbiAgICAgICAgdGhpcy5zZXRQYXJlbnRPcGVuKG5vZGVzLCB0aGlzLmFjdGl2YXRlZE5vZGUpO1xyXG4gICAgICAgIHRoaXMuYWN0aXZhdGVkQ2hhbmdlLmVtaXQodGhpcy5hY3RpdmF0ZWROb2RlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGJlZm9yZSkge1xyXG4gICAgICBiZWZvcmUuY2hhbmdlICYmIGJlZm9yZS5jaGFuZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIVhJc0VtcHR5KG5vZGVzKSkge1xyXG4gICAgICB0aGlzLnNldERhdGFDaGFuZ2Uobm9kZXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0UGFyZW50T3Blbihub2RlczogWFRyZWVOb2RlW10sIG5vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgY29uc3QgZ2V0UGFyZW50ID0gKGNoaWxkOiBYVHJlZU5vZGUpID0+IHtcclxuICAgICAgaWYgKFhJc0VtcHR5KGNoaWxkLnBpZCkpIHJldHVybjtcclxuICAgICAgY29uc3QgcGFyZW50ID0gbm9kZXMuZmluZCgoeCkgPT4geC5pZCA9PT0gY2hpbGQucGlkKSBhcyBYVHJlZU5vZGU7XHJcbiAgICAgIGlmICghWElzRW1wdHkocGFyZW50KSkge1xyXG4gICAgICAgIGlmICghdGhpcy5leHBhbmRlZC5pbmNsdWRlcyhwYXJlbnQuaWQpKSB7XHJcbiAgICAgICAgICB0aGlzLmV4cGFuZGVkID0gWy4uLnRoaXMuZXhwYW5kZWQsIHBhcmVudC5pZF07XHJcbiAgICAgICAgICBwYXJlbnQub3BlbiA9IHRydWU7XHJcbiAgICAgICAgICBwYXJlbnQuY2hhbmdlICYmIHBhcmVudC5jaGFuZ2UoKTtcclxuICAgICAgICAgIGdldFBhcmVudChwYXJlbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGdldFBhcmVudChub2RlKTtcclxuICB9XHJcblxyXG4gIHNldFBhcmVudENoZWNrKG5vZGVzOiBYVHJlZU5vZGVbXSwgbm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICBjb25zdCBnZXRQYXJlbnQgPSAoY2hpbGQ6IFhUcmVlTm9kZSkgPT4ge1xyXG4gICAgICBpZiAoWElzRW1wdHkoY2hpbGQucGlkKSkgcmV0dXJuO1xyXG4gICAgICBjb25zdCBwYXJlbnQgPSBub2Rlcy5maW5kKCh4KSA9PiB4LmlkID09PSBjaGlsZC5waWQpIGFzIFhUcmVlTm9kZTtcclxuICAgICAgaWYgKCFYSXNFbXB0eShwYXJlbnQpKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmV4cGFuZGVkLmluY2x1ZGVzKHBhcmVudC5pZCkpIHtcclxuICAgICAgICAgIHRoaXMuZXhwYW5kZWQgPSBbLi4udGhpcy5leHBhbmRlZCwgcGFyZW50LmlkXTtcclxuICAgICAgICAgIHBhcmVudC5vcGVuID0gdHJ1ZTtcclxuICAgICAgICAgIHBhcmVudC5jaGFuZ2UgJiYgcGFyZW50LmNoYW5nZSgpO1xyXG4gICAgICAgICAgZ2V0UGFyZW50KHBhcmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgZ2V0UGFyZW50KG5vZGUpO1xyXG4gIH1cclxuXHJcbiAgb25Ub2dnbGUoZXZlbnQ6IEV2ZW50LCBub2RlOiBYVHJlZU5vZGUpIHtcclxuICAgIG5vZGUub3BlbiA9ICFub2RlLm9wZW47XHJcbiAgICBpZiAodGhpcy5sYXp5ICYmICFub2RlLmNoaWxkcmVuTG9hZGVkKSB7XHJcbiAgICAgIHRoaXMuZ2V0TGF6eURhdGEobm9kZSwgKCkgPT4gdGhpcy52aXJ0dWFsVG9nZ2xlKG5vZGUpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudmlydHVhbFRvZ2dsZShub2RlKTtcclxuICAgIH1cclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGdldExhenlEYXRhKG5vZGU6IFhUcmVlTm9kZSwgY2FsbEJhY2s/OiAoKSA9PiB2b2lkKSB7XHJcbiAgICBub2RlLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgbm9kZS5jaGFuZ2UgJiYgbm9kZS5jaGFuZ2UoKTtcclxuICAgICh0aGlzLmRhdGEgYXMgKHBpZD86IGFueSkgPT4gT2JzZXJ2YWJsZTxYVHJlZU5vZGVbXT4pKG5vZGUuaWQpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgoeCkgPT5cclxuICAgICAgICAgIHgubWFwKCh5KSA9PiB7XHJcbiAgICAgICAgICAgIHkubGV2ZWwgPSAobm9kZS5sZXZlbCBhcyBudW1iZXIpICsgMTtcclxuICAgICAgICAgICAgeS5jaGVja2VkID0gbm9kZS5jaGVja2VkO1xyXG4gICAgICAgICAgICByZXR1cm4geTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICBub2RlLmNoaWxkcmVuID0geDtcclxuICAgICAgICBub2RlLmNoaWxkcmVuTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICBub2RlLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBpZiAoY2FsbEJhY2spIGNhbGxCYWNrKCk7XHJcbiAgICAgICAgbm9kZS5jaGFuZ2UgJiYgbm9kZS5jaGFuZ2UoKTtcclxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYWRkTm9kZShub2RlOiBYVHJlZU5vZGUpIHtcclxuICAgIGxldCBwYXJlbnQgPSB0aGlzLnRyZWVEYXRhLmZpbmQoKHgpID0+IHguaWQgPT09IG5vZGUucGlkKTtcclxuICAgIGNvbnN0IF9hZGROb2RlID0gKCkgPT4ge1xyXG4gICAgICBpZiAocGFyZW50KSB7XHJcbiAgICAgICAgaWYgKCFwYXJlbnQuY2hpbGRyZW4pIHBhcmVudC5jaGlsZHJlbiA9IFtdO1xyXG4gICAgICAgIHRoaXMuZXhwYW5kZWQgPSBbLi4udGhpcy5leHBhbmRlZCwgcGFyZW50LmlkXTtcclxuICAgICAgICB0aGlzLnNldEFjdGl2YXRlZElkKG5vZGUpO1xyXG4gICAgICAgIG5vZGUubGV2ZWwgPSBOdW1iZXIocGFyZW50LmxldmVsKSArIDE7XHJcbiAgICAgICAgbm9kZS5waWQgPSBwYXJlbnQuaWQ7XHJcbiAgICAgICAgdGhpcy50cmVlRGF0YS5wdXNoKG5vZGUpO1xyXG4gICAgICAgIHRoaXMuc2V0QWN0aXZhdGVkTm9kZSh0aGlzLnRyZWVEYXRhKTtcclxuICAgICAgICBwYXJlbnQub3BlbiA9IHRydWU7XHJcbiAgICAgICAgcGFyZW50LmxlYWYgPSBmYWxzZTtcclxuICAgICAgICBwYXJlbnQuY2hpbGRyZW4gPSBbLi4ucGFyZW50LmNoaWxkcmVuLCBub2RlXTtcclxuICAgICAgICB0aGlzLnZpcnR1YWxUb2dnbGUocGFyZW50KTtcclxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgcGFyZW50LmNoYW5nZSAmJiBwYXJlbnQuY2hhbmdlKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoWElzRW1wdHkobm9kZS5waWQpKSB7XHJcbiAgICAgICAgdGhpcy5zZXRBY3RpdmF0ZWRJZChub2RlKTtcclxuICAgICAgICBub2RlLmxldmVsID0gMDtcclxuICAgICAgICB0aGlzLnRyZWVEYXRhID0gWy4uLnRoaXMudHJlZURhdGEsIG5vZGVdO1xyXG4gICAgICAgIHRoaXMubm9kZXMgPSBbLi4udGhpcy5ub2Rlcywgbm9kZV07XHJcbiAgICAgICAgdGhpcy5zZXRBY3RpdmF0ZWROb2RlKHRoaXMudHJlZURhdGEpO1xyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGlmICh0aGlzLmxhenkgJiYgcGFyZW50ICYmICFwYXJlbnQuY2hpbGRyZW5Mb2FkZWQpIHtcclxuICAgICAgdGhpcy5nZXRMYXp5RGF0YShwYXJlbnQsICgpID0+IHtcclxuICAgICAgICBfYWRkTm9kZSgpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIF9hZGROb2RlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRBY3RpdmF0ZWRJZChub2RlOiBYVHJlZU5vZGUpIHtcclxuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgIGlmICh0aGlzLm9iamVjdEFycmF5KSB7XHJcbiAgICAgICAgdGhpcy5hY3RpdmF0ZWRJZCA9IFtub2RlXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmFjdGl2YXRlZElkID0gW25vZGUuaWRdO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFjdGl2YXRlZElkID0gbm9kZS5pZDtcclxuICAgIH1cclxuICAgIHRoaXMuYWN0aXZhdGVkSWRDaGFuZ2UuZW1pdCh0aGlzLmFjdGl2YXRlZElkKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZU5vZGUobm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICBsZXQgcGFyZW50ID0gdGhpcy50cmVlRGF0YS5maW5kKCh4KSA9PiB4LmlkID09PSBub2RlLnBpZCk7XHJcbiAgICBpZiAocGFyZW50KSB7XHJcbiAgICAgIGlmICghcGFyZW50LmNoaWxkcmVuKSBwYXJlbnQuY2hpbGRyZW4gPSBbXTtcclxuICAgICAgcGFyZW50LmNoaWxkcmVuLnNwbGljZShwYXJlbnQuY2hpbGRyZW4uaW5kZXhPZihub2RlKSwgMSk7XHJcbiAgICAgIHBhcmVudC5sZWFmID0gcGFyZW50LmNoaWxkcmVuLmxlbmd0aCA9PT0gMDtcclxuICAgICAgaWYgKHBhcmVudC5sZWFmKSB7XHJcbiAgICAgICAgdGhpcy5zZXRBY3RpdmF0ZWRJZChwYXJlbnQpO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBpbmRleCA9IHRoaXMubm9kZXMuaW5kZXhPZihub2RlKTtcclxuICAgICAgbGV0IGFpbmRleCA9IGluZGV4IC0gMTtcclxuICAgICAgaWYgKGluZGV4ID09PSAwICYmIHRoaXMubm9kZXMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIGFpbmRleCA9IDE7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGFjdGl2YXRlZE5vZGUgPSB0aGlzLm5vZGVzW2FpbmRleF07XHJcbiAgICAgIHRoaXMuc2V0QWN0aXZhdGVkSWQoYWN0aXZhdGVkTm9kZSk7XHJcbiAgICAgIHRoaXMuc2V0QWN0aXZhdGVkTm9kZSh0aGlzLm5vZGVzKTtcclxuICAgICAgdGhpcy5ub2Rlcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB0aGlzLm5vZGVzID0gWy4uLnRoaXMubm9kZXNdO1xyXG4gICAgICBpZiAoYWN0aXZhdGVkTm9kZSkge1xyXG4gICAgICAgIGFjdGl2YXRlZE5vZGUuY2hhbmdlICYmIGFjdGl2YXRlZE5vZGUuY2hhbmdlKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICBwYXJlbnQuY2hhbmdlICYmIHBhcmVudC5jaGFuZ2UoKTtcclxuICAgIH0gZWxzZSBpZiAoWElzRW1wdHkobm9kZS5waWQpKSB7XHJcbiAgICAgIHRoaXMudHJlZURhdGEuc3BsaWNlKHRoaXMudHJlZURhdGEuaW5kZXhPZihub2RlKSwgMSk7XHJcbiAgICAgIHRoaXMubm9kZXMuc3BsaWNlKHRoaXMubm9kZXMuaW5kZXhPZihub2RlKSwgMSk7XHJcbiAgICAgIHRoaXMubm9kZXMgPSBbLi4udGhpcy5ub2Rlc107XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZU5vZGUobm9kZTogWFRyZWVOb2RlLCBub3dOb2RlOiBYVHJlZU5vZGUpIHtcclxuICAgIE9iamVjdC5hc3NpZ24obm9kZSwgbm93Tm9kZSk7XHJcbiAgICBub2RlLmNoYW5nZSAmJiBub2RlLmNoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUl0ZW0oX2luZGV4OiBudW1iZXIsIGl0ZW06IFhUcmVlTm9kZSkge1xyXG4gICAgcmV0dXJuIGl0ZW0uaWQ7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgI3RyZWUgY2xhc3M9XCJ4LXRyZWVcIiBbY2xhc3MueC10cmVlLW9ubHktbGVhZl09XCJvbmx5TGVhZlwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdmlydHVhbFNjcm9sbDsgZWxzZSB2aXJ0dWFsU2Nyb2xsVHBsXCI+XHJcbiAgICA8eC10cmVlLW5vZGVcclxuICAgICAgKm5nRm9yPVwibGV0IG5vZGUgb2Ygbm9kZXM7IHRyYWNrQnk6IHRyYWNrQnlJdGVtXCJcclxuICAgICAgW25vZGVdPVwibm9kZVwiXHJcbiAgICAgIFtsYXp5XT1cImxhenlcIlxyXG4gICAgICBbbGF6eURhdGFdPVwiZGF0YVwiXHJcbiAgICAgIFtub2RlSGVpZ2h0XT1cIm5vZGVIZWlnaHRcIlxyXG4gICAgICBbbm9kZU5vd3JhcF09XCJub2RlTm93cmFwXCJcclxuICAgICAgW25vZGVBbGlnbkl0ZW1zXT1cIm5vZGVBbGlnbkl0ZW1zXCJcclxuICAgICAgW3RyZWVdPVwidGhpc1wiXHJcbiAgICA+PC94LXRyZWUtbm9kZT5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI3ZpcnR1YWxTY3JvbGxUcGw+XHJcbiAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydFxyXG4gICAgI3ZpcnR1YWxCb2R5XHJcbiAgICBbaXRlbVNpemVdPVwiaXRlbVNpemVcIlxyXG4gICAgW21pbkJ1ZmZlclB4XT1cIm1pbkJ1ZmZlclB4XCJcclxuICAgIFttYXhCdWZmZXJQeF09XCJtYXhCdWZmZXJQeFwiXHJcbiAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInZpcnR1YWxTY3JvbGxIZWlnaHRcIlxyXG4gID5cclxuICAgIDx4LXRyZWUtbm9kZVxyXG4gICAgICAqY2RrVmlydHVhbEZvcj1cImxldCBub2RlIG9mIG5vZGVzOyB0ZW1wbGF0ZUNhY2hlU2l6ZTogMDsgdHJhY2tCeTogdHJhY2tCeUl0ZW1cIlxyXG4gICAgICBbbm9kZV09XCJub2RlXCJcclxuICAgICAgW2xhenldPVwibGF6eVwiXHJcbiAgICAgIFtsYXp5RGF0YV09XCJkYXRhXCJcclxuICAgICAgW25vZGVIZWlnaHRdPVwibm9kZUhlaWdodFwiXHJcbiAgICAgIFtub2RlTm93cmFwXT1cIm5vZGVOb3dyYXBcIlxyXG4gICAgICBbbm9kZUFsaWduSXRlbXNdPVwibm9kZUFsaWduSXRlbXNcIlxyXG4gICAgICBbdHJlZV09XCJ0aGlzXCJcclxuICAgID48L3gtdHJlZS1ub2RlPlxyXG4gIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSDmj5DliY3liqDovb1sb2FkaW5n55qE5Zu+5qCHLS0+XHJcbjx4LWljb24gKm5nSWY9XCJsYXp5XCIgW3N0eWxlLmRpc3BsYXldPVwiJ25vbmUnXCIgdHlwZT1cImZ0by1sb2FkZXJcIj48L3gtaWNvbj5cclxuIl19
469
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS90cmVlL3RyZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdHJlZS90cmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBSWpCLHVCQUF1QixFQUN2QixTQUFTLEVBSVQsWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQWEsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQWtCLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JILE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7QUFTM0QsTUFBTSxPQUFPLGNBQWUsU0FBUSxhQUFhO0lBaUIvQyxZQUNTLFFBQW1CLEVBQ25CLFVBQW1DLEVBQ25DLEdBQXNCLEVBQ3RCLGFBQTZCO1FBRXBDLEtBQUssRUFBRSxDQUFDO1FBTEQsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUNuQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUFidEMsVUFBSyxHQUFnQixFQUFFLENBQUM7UUFDeEIsaUJBQVksR0FBZ0IsRUFBRSxDQUFDO1FBRS9CLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixhQUFRLEdBQWdCLEVBQUUs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O2tCQVAxQixTQUFTOytCQUNFLEdBQUcsV0FBVyxFQUFFLGlCQUdYLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07c0xBR1YsSUFBSTtzQkFBeEMsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNULFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFHYixlQUFlO3NCQUR6QixZQUFZO3VCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIFJlbmRlcmVyMixcclxuICBFbGVtZW50UmVmLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIFZpZXdDaGlsZCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIE9uQ2hhbmdlcyxcclxuICBRdWVyeUxpc3QsXHJcbiAgVmlld0NoaWxkcmVuXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFhUcmVlUHJlZml4LCBYVHJlZU5vZGUsIFhUcmVlUHJvcGVydHkgfSBmcm9tICcuL3RyZWUucHJvcGVydHknO1xyXG5pbXBvcnQgeyBYSXNFbXB0eSwgWElzRnVuY3Rpb24sIFhJc1VuZGVmaW5lZCwgWElzQ2hhbmdlLCBYU2V0RGF0YSwgWENvbmZpZ1NlcnZpY2UsIFhSZXNpemUgfSBmcm9tICdAbmctbmVzdC91aS9jb3JlJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIE9ic2VydmFibGUsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcclxuaW1wb3J0IHsgWFRyZWVOb2RlQ29tcG9uZW50IH0gZnJvbSAnLi90cmVlLW5vZGUuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBgJHtYVHJlZVByZWZpeH1gLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cmVlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90cmVlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWFRyZWVDb21wb25lbnQgZXh0ZW5kcyBYVHJlZVByb3BlcnR5IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICBAVmlld0NoaWxkKCd0cmVlJywgeyBzdGF0aWM6IHRydWUgfSkgdHJlZSE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ3ZpcnR1YWxCb2R5JykgdmlydHVhbEJvZHkhOiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XHJcbiAgbm9kZUNvbXBvbmVudHMhOiBRdWVyeUxpc3Q8WFRyZWVOb2RlQ29tcG9uZW50PjtcclxuICBAVmlld0NoaWxkcmVuKFhUcmVlTm9kZUNvbXBvbmVudClcclxuICBwdWJsaWMgc2V0IF9ub2RlQ29tcG9uZW50cyh2YWx1ZTogUXVlcnlMaXN0PFhUcmVlTm9kZUNvbXBvbmVudD4pIHtcclxuICAgIHRoaXMubm9kZUNvbXBvbmVudHMgPSB2YWx1ZTtcclxuICB9XHJcbiAgbm9kZXM6IFhUcmVlTm9kZVtdID0gW107XHJcbiAgdmlydHVhbE5vZGVzOiBYVHJlZU5vZGVbXSA9IFtdO1xyXG4gIGFjdGl2YXRlZE5vZGUhOiBYVHJlZU5vZGU7XHJcbiAgZGF0YUlzRnVuYyA9IGZhbHNlO1xyXG4gIGdldHRpbmcgPSBmYWxzZTtcclxuICB0cmVlRGF0YTogWFRyZWVOb2RlW10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBfdW5TdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcml2YXRlIF9yZXNpemVPYnNlcnZlciE6IFJlc2l6ZU9ic2VydmVyO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXHJcbiAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHB1YmxpYyBjb25maWdTZXJ2aWNlOiBYQ29uZmlnU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGNvbnN0IHsgZXhwYW5kZWRBbGwsIGRhdGEsIGFjdGl2YXRlZElkLCBjaGVja2VkLCBtYW51YWwgfSA9IGNoYW5nZXM7XHJcbiAgICBYSXNDaGFuZ2UoZGF0YSkgJiYgdGhpcy5zZXREYXRhKCk7XHJcbiAgICBYSXNDaGFuZ2UoYWN0aXZhdGVkSWQpICYmIHRoaXMuc2V0QWN0aXZhdGVkTm9kZSh0aGlzLnRyZWVEYXRhKTtcclxuICAgIFhJc0NoYW5nZShleHBhbmRlZEFsbCkgJiYgdGhpcy5zZXRFeHBhbmRlZEFsbCgpO1xyXG4gICAgWElzQ2hhbmdlKGNoZWNrZWQpICYmIHRoaXMuc2V0Q2hlY2tlZEtleXModGhpcy5jaGVja2VkKTtcclxuICAgIFhJc0NoYW5nZShtYW51YWwpICYmIHRoaXMuc2V0TWFudWFsKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBpZiAodGhpcy52aXJ0dWFsU2Nyb2xsICYmIHRoaXMuaGVpZ2h0QWRhcHRpb24pIHtcclxuICAgICAgdGhpcy5zZXRWaXJ0dWFsU2Nyb2xsSGVpZ2h0KCk7XHJcbiAgICAgIFhSZXNpemUodGhpcy5oZWlnaHRBZGFwdGlvbiBhcyBIVE1MRWxlbWVudClcclxuICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMzApLCB0YWtlVW50aWwodGhpcy5fdW5TdWJqZWN0KSlcclxuICAgICAgICAuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9yZXNpemVPYnNlcnZlciA9IHgucmVzaXplT2JzZXJ2ZXI7XHJcbiAgICAgICAgICB0aGlzLnNldFZpcnR1YWxTY3JvbGxIZWlnaHQoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0U2NvcmxsVG9wKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3VuU3ViamVjdC5uZXh0KCk7XHJcbiAgICB0aGlzLl91blN1YmplY3QudW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuX3Jlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XHJcbiAgfVxyXG5cclxuICBzZXREYXRhKCkge1xyXG4gICAgaWYgKHR5cGVvZiB0aGlzLmRhdGEgPT09ICd1bmRlZmluZWQnKSByZXR1cm47XHJcbiAgICB0aGlzLmRhdGFJc0Z1bmMgPSBmYWxzZTtcclxuICAgIGlmIChYSXNGdW5jdGlvbih0aGlzLmRhdGEpKSB7XHJcbiAgICAgIHRoaXMuZGF0YUlzRnVuYyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZ2V0RGF0YUJ5RnVuYygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgWFNldERhdGE8WFRyZWVOb2RlPih0aGlzLmRhdGEsIHRoaXMuX3VuU3ViamVjdCkuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXREYXRhQ2hhbmdlKHgpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VmlydHVhbFNjcm9sbEhlaWdodCgpIHtcclxuICAgIHRoaXMudmlydHVhbFNjcm9sbEhlaWdodCA9ICh0aGlzLmhlaWdodEFkYXB0aW9uIGFzIEhUTUxFbGVtZW50KS5jbGllbnRIZWlnaHQ7XHJcbiAgICB0aGlzLm1pbkJ1ZmZlclB4ID0gdGhpcy52aXJ0dWFsU2Nyb2xsSGVpZ2h0O1xyXG4gICAgdGhpcy5tYXhCdWZmZXJQeCA9IHRoaXMudmlydHVhbFNjcm9sbEhlaWdodCAqIDEuMjtcclxuICAgIHRoaXMudmlydHVhbEJvZHlbJ19zY3JvbGxTdHJhdGVneSddWydfbWluQnVmZmVyUHgnXSA9IHRoaXMubWluQnVmZmVyUHg7XHJcbiAgICB0aGlzLnZpcnR1YWxCb2R5Wydfc2Nyb2xsU3RyYXRlZ3knXVsnX21heEJ1ZmZlclB4J10gPSB0aGlzLm1heEJ1ZmZlclB4O1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRNYW51YWwoKSB7XHJcbiAgICBpZiAodGhpcy5kYXRhSXNGdW5jKSB0aGlzLmdldERhdGFCeUZ1bmMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RGF0YUJ5RnVuYygpIHtcclxuICAgIGlmICghdGhpcy5tYW51YWwpIHJldHVybjtcclxuICAgIFhTZXREYXRhPFhUcmVlTm9kZT4oKHRoaXMuZGF0YSBhcyBGdW5jdGlvbikoKSwgdGhpcy5fdW5TdWJqZWN0KS5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgdGhpcy5zZXREYXRhQ2hhbmdlKHgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldERhdGFDaGFuZ2UodmFsdWU6IFhUcmVlTm9kZVtdKSB7XHJcbiAgICBpZiAoWElzRW1wdHkodGhpcy5jaGVja2VkKSkgdGhpcy5jaGVja2VkID0gW107XHJcbiAgICBjb25zdCBnZXRDaGlsZHJlbiA9IChub2RlOiBYVHJlZU5vZGUsIGxldmVsOiBudW1iZXIpID0+IHtcclxuICAgICAgbm9kZS5sZXZlbCA9IGxldmVsO1xyXG4gICAgICBub2RlLm9wZW4gPSBCb29sZWFuKHRoaXMuZXhwYW5kZWRBbGwpIHx8IGxldmVsIDw9IHRoaXMuZXhwYW5kZWRMZXZlbCB8fCB0aGlzLmV4cGFuZGVkLmluZGV4T2Yobm9kZS5pZCkgPj0gMCB8fCBub2RlLm9wZW47XHJcbiAgICAgIG5vZGUuY2hlY2tlZCA9IHRoaXMuY2hlY2tlZC5pbmRleE9mKG5vZGUuaWQpID49IDA7XHJcbiAgICAgIG5vZGUuY2hpbGRyZW5Mb2FkZWQgPSBub2RlLm9wZW47XHJcbiAgICAgIGlmIChYSXNVbmRlZmluZWQobm9kZS5jaGlsZHJlbikpIHtcclxuICAgICAgICBub2RlLmNoaWxkcmVuID0gdmFsdWUuZmlsdGVyKCh5KSA9PiB5LnBpZCA9PT0gbm9kZS5pZCk7XHJcbiAgICAgICAgaWYgKHRoaXMubGV2ZWxDaGVjayAmJiBub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hlY2tlZCkge1xyXG4gICAgICAgICAgZm9yIChsZXQgbmQgb2Ygbm9kZS5jaGlsZHJlbikge1xyXG4gICAgICAgICAgICBuZC5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jaGVja2VkLnB1c2gobmQuaWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoWElzVW5kZWZpbmVkKG5vZGUubGVhZikpIG5vZGUubGVhZiA9IChub2RlLmNoaWxkcmVuPy5sZW5ndGggYXMgbnVtYmVyKSA9PT0gMDtcclxuICAgICAgaWYgKCFub2RlLmxlYWYpIG5vZGUuY2hpbGRyZW4/Lm1hcCgoeSkgPT4gZ2V0Q2hpbGRyZW4oeSwgbGV2ZWwgKyAxKSk7XHJcbiAgICAgIHJldHVybiBub2RlO1xyXG4gICAgfTtcclxuICAgIHRoaXMudHJlZURhdGEgPSB2YWx1ZTtcclxuICAgIHRoaXMubm9kZXMgPSB2YWx1ZS5maWx0ZXIoKHgpID0+IFhJc0VtcHR5KHgucGlkKSkubWFwKCh4KSA9PiBnZXRDaGlsZHJlbih4LCAwKSk7XHJcbiAgICBmb3IgKGxldCBpdGVtIG9mIHZhbHVlKSB7XHJcbiAgICAgIGlmIChpdGVtLm9wZW4pIHtcclxuICAgICAgICB0aGlzLnNldFBhcmVudE9wZW4odmFsdWUsIGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldEV4cGFuZGVkKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzZXRTY29ybGxUb3AoKSB7XHJcbiAgICBpZiAoIXRoaXMuc2Nyb2xsRWxlbWVudCB8fCAhdGhpcy5hY3RpdmF0ZWROb2RlKSByZXR1cm47XHJcbiAgICBsZXQgaW54ID0gdGhpcy5ub2Rlcy5pbmRleE9mKHRoaXMuYWN0aXZhdGVkTm9kZSk7XHJcbiAgICBsZXQgY29tID0gdGhpcy5ub2RlQ29tcG9uZW50cy5nZXQoaW54KTtcclxuICAgIGlmICghY29tKSByZXR1cm47XHJcbiAgICBsZXQgZWxlID0gY29tLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGxldCBzY3JvbGxFbGUgPSB0aGlzLnNjcm9sbEVsZW1lbnQ7XHJcbiAgICBsZXQgbWluID0gc2Nyb2xsRWxlLnNjcm9sbFRvcDtcclxuICAgIGxldCBtYXggPSBzY3JvbGxFbGUuc2Nyb2xsVG9wICsgc2Nyb2xsRWxlLmNsaWVudEhlaWdodDtcclxuICAgIGlmIChlbGUub2Zmc2V0VG9wICsgZWxlLmNsaWVudEhlaWdodCA+IG1heCkge1xyXG4gICAgICBsZXQgc2Nyb2xsVG9wID0gZWxlLm9mZnNldFRvcCArIGVsZS5jbGllbnRIZWlnaHQgLSBzY3JvbGxFbGUuY2xpZW50SGVpZ2h0O1xyXG4gICAgICBzY3JvbGxFbGUuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xyXG4gICAgfVxyXG4gICAgaWYgKGVsZS5vZmZzZXRUb3AgPCBtaW4pIHtcclxuICAgICAgc2Nyb2xsRWxlLnNjcm9sbFRvcCA9IGVsZS5vZmZzZXRUb3A7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDaGVja2VkTm9kZXMoKTogWFRyZWVOb2RlW10ge1xyXG4gICAgbGV0IHJlc3VsdDogWFRyZWVOb2RlW10gPSBbXTtcclxuICAgIGNvbnN0IGdldENoaWxkcmVuID0gKG5vZGVzOiBYVHJlZU5vZGVbXSkgPT4ge1xyXG4gICAgICBpZiAoWElzRW1wdHkobm9kZXMpKSByZXR1cm47XHJcbiAgICAgIG5vZGVzLmZvckVhY2goKHgpID0+IHtcclxuICAgICAgICBpZiAoeC5jaGVja2VkICYmICFyZXN1bHQuaW5jbHVkZXMoeCkpIHtcclxuICAgICAgICAgIHJlc3VsdCA9IFsuLi5yZXN1bHQsIHhdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBnZXRDaGlsZHJlbih4LmNoaWxkcmVuIGFzIFhUcmVlTm9kZVtdKTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgZ2V0Q2hpbGRyZW4odGhpcy5ub2Rlcyk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2hlY2tlZEtleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDaGVja2VkTm9kZXMoKS5tYXAoKHgpID0+IHguaWQpO1xyXG4gIH1cclxuXHJcbiAgc2V0Q2hlY2tlZEtleXMoa2V5czogYW55W10gPSBbXSkge1xyXG4gICAgY29uc3Qgc2V0Q2hpbGRyZW4gPSAobm9kZXM6IFhUcmVlTm9kZVtdLCBjbGVhciA9IGZhbHNlKSA9PiB7XHJcbiAgICAgIGlmIChYSXNFbXB0eShub2RlcykpIHJldHVybjtcclxuICAgICAgbm9kZXMuZm9yRWFjaCgoeCkgPT4ge1xyXG4gICAgICAgIHguY2hlY2tlZCA9ICFjbGVhciAmJiBrZXlzLmluY2x1ZGVzKHguaWQpO1xyXG4gICAgICAgIHguY2hhbmdlICYmIHguY2hhbmdlKHRydWUpO1xyXG4gICAgICAgIHNldENoaWxkcmVuKHguY2hpbGRyZW4gYXMgWFRyZWVOb2RlW10sIGNsZWFyKTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgc2V0Q2hpbGRyZW4odGhpcy5ub2RlcywgWElzRW1wdHkoa2V5cykpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2V0RXhwYW5kZWRBbGwoKSB7XHJcbiAgICBpZiAodGhpcy5leHBhbmRlZEFsbCAmJiB0aGlzLnRyZWVEYXRhLmxlbmd0aCA9PT0gdGhpcy5ub2Rlcy5sZW5ndGgpIHJldHVybjtcclxuICAgIGNvbnN0IHNldENoaWxkcmVuID0gKG5vZGVzOiBYVHJlZU5vZGVbXSkgPT4ge1xyXG4gICAgICBpZiAoWElzRW1wdHkobm9kZXMpKSByZXR1cm47XHJcbiAgICAgIG5vZGVzLmZvckVhY2goKHgpID0+IHtcclxuICAgICAgICB4Lm9wZW4gPSBCb29sZWFuKHRoaXMuZXhwYW5kZWRBbGwpO1xyXG4gICAgICAgIHguY2hhbmdlICYmIHguY2hhbmdlKCk7XHJcbiAgICAgICAgc2V0Q2hpbGRyZW4oeC5jaGlsZHJlbiBhcyBYVHJlZU5vZGVbXSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIHNldENoaWxkcmVuKHRoaXMubm9kZXMpO1xyXG5cclxuICAgIGlmICh0aGlzLmV4cGFuZGVkQWxsID09PSBmYWxzZSkge1xyXG4gICAgICB0aGlzLm5vZGVzID0gdGhpcy50cmVlRGF0YS5maWx0ZXIoKHgpID0+IFhJc0VtcHR5KHgucGlkKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy52aXJ0dWFsTm9kZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy52aXJ0dWFsTm9kZXMgPSBbLi4udGhpcy5ub2Rlc107XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5ub2RlcyA9IFsuLi50aGlzLnZpcnR1YWxOb2Rlc107XHJcbiAgICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy52aXJ0dWFsTm9kZXMpIHtcclxuICAgICAgICB0aGlzLnNldFZpcnR1YWxFeHBhbmRlZEFsbChpdGVtLCB0aGlzLmV4cGFuZGVkQWxsIGFzIGJvb2xlYW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRFeHBhbmRlZCgpIHtcclxuICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy5ub2Rlcykge1xyXG4gICAgICBpZiAoaXRlbS5vcGVuICYmIGl0ZW0uY2hpbGRyZW4pIHtcclxuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLm5vZGVzLmluZGV4T2YoaXRlbSk7XHJcbiAgICAgICAgdGhpcy5ub2Rlcy5zcGxpY2UoaW5kZXggKyAxLCAwLCAuLi4oaXRlbS5jaGlsZHJlbiBhcyBYVHJlZU5vZGVbXSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGl0ZW0uY2hhbmdlICYmIGl0ZW0uY2hhbmdlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm5vZGVzID0gWy4uLnRoaXMubm9kZXNdO1xyXG4gIH1cclxuXHJcbiAgc2V0VmlydHVhbEV4cGFuZGVkQWxsKGl0ZW06IFhUcmVlTm9kZSwgZXhwYW5kZWRBbGw6IGJvb2xlYW4pIHtcclxuICAgIGxldCBpbmRleCA9IHRoaXMubm9kZXMuaW5kZXhPZihpdGVtKTtcclxuICAgIGlmIChleHBhbmRlZEFsbCkge1xyXG4gICAgICBsZXQgYWRkTm9kZXM6IFhUcmVlTm9kZVtdID0gW107XHJcbiAgICAgIGNvbnN0IGdldE5vZGVzID0gKG5kOiBYVHJlZU5vZGUpID0+IHtcclxuICAgICAgICBmb3IgKGxldCBjaGlsZCBvZiBuZC5jaGlsZHJlbiEpIHtcclxuICAgICAgICAgIGFkZE5vZGVzLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgZ2V0Tm9kZXMoY2hpbGQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgICAgZ2V0Tm9kZXMoaXRlbSk7XHJcbiAgICAgIHRoaXMubm9kZXMuc3BsaWNlKGluZGV4ICsgMSwgMCwgLi4uYWRkTm9kZXMpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5ub2RlcyA9IFsuLi50aGlzLm5vZGVzXTtcclxuICB9XHJcblxyXG4gIHZpcnR1YWxUb2dnbGUobm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICBsZXQgaW5kZXggPSB0aGlzLm5vZGVzLmluZGV4T2Yobm9kZSk7XHJcbiAgICBpZiAobm9kZS5vcGVuKSB7XHJcbiAgICAgIGxldCBhZGROb2RlczogWFRyZWVOb2RlW10gPSBbXTtcclxuICAgICAgY29uc3QgZ2V0Tm9kZXMgPSAobmQ6IFhUcmVlTm9kZSkgPT4ge1xyXG4gICAgICAgIGlmIChYSXNFbXB0eShuZC5jaGlsZHJlbikpIHJldHVybjtcclxuICAgICAgICBmb3IgKGxldCBjaGlsZCBvZiBuZC5jaGlsZHJlbiEpIHtcclxuICAgICAgICAgIGFkZE5vZGVzLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgY2hpbGQub3BlbiAmJiBnZXROb2RlcyhjaGlsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgICBnZXROb2Rlcyhub2RlKTtcclxuICAgICAgdGhpcy5ub2Rlcy5zcGxpY2UoaW5kZXggKyAxLCAwLCAuLi5hZGROb2Rlcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgZGVsQ291bnQgPSAwO1xyXG4gICAgICBjb25zdCBnZXRDb3VudCA9IChuZDogWFRyZWVOb2RlKSA9PiB7XHJcbiAgICAgICAgaWYgKFhJc0VtcHR5KG5kLmNoaWxkcmVuKSkgcmV0dXJuO1xyXG4gICAgICAgIGRlbENvdW50ICs9IG5kLmNoaWxkcmVuIS5sZW5ndGg7XHJcbiAgICAgICAgZm9yIChsZXQgY2hpbGQgb2YgbmQuY2hpbGRyZW4hKSB7XHJcbiAgICAgICAgICBjaGlsZC5vcGVuICYmIGdldENvdW50KGNoaWxkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICAgIGdldENvdW50KG5vZGUpO1xyXG4gICAgICB0aGlzLm5vZGVzLnNwbGljZShpbmRleCArIDEsIGRlbENvdW50KTtcclxuICAgIH1cclxuICAgIHRoaXMuYWRkT3JSZW1vdmVFeHBhbmRlZChub2RlKTtcclxuICAgIHRoaXMubm9kZXMgPSBbLi4udGhpcy5ub2Rlc107XHJcbiAgfVxyXG5cclxuICBhZGRPclJlbW92ZUV4cGFuZGVkKG5vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgaWYgKG5vZGUub3Blbikge1xyXG4gICAgICBpZiAoIXRoaXMuZXhwYW5kZWQuaW5jbHVkZXMobm9kZS5pZCkpIHtcclxuICAgICAgICB0aGlzLmV4cGFuZGVkLnB1c2gobm9kZS5pZCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmV4cGFuZGVkLmluY2x1ZGVzKG5vZGUuaWQpKSB7XHJcbiAgICAgICAgdGhpcy5leHBhbmRlZC5zcGxpY2UodGhpcy5leHBhbmRlZC5pbmRleE9mKG5vZGUuaWQpLCAxKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0QWN0aXZhdGVkTm9kZShub2RlczogWFRyZWVOb2RlW10pIHtcclxuICAgIGlmIChYSXNFbXB0eSh0aGlzLmFjdGl2YXRlZElkKSAmJiB0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZhdGVkSWQgPSBbXTtcclxuICAgIH1cclxuICAgIGxldCBiZWZvcmUgPSB0aGlzLmFjdGl2YXRlZE5vZGU7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICBpZiAodGhpcy5hY3RpdmF0ZWRJZC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgbGV0IGlkcyA9IHRoaXMub2JqZWN0QXJyYXkgPyB0aGlzLmFjdGl2YXRlZElkLm1hcCgoeDogWFRyZWVOb2RlKSA9PiB4LmlkKSA6IHRoaXMuYWN0aXZhdGVkSWQ7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpZHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBub2RlID0gbm9kZXMuZmluZCgoeCkgPT4geC5pZCA9PT0gaWRzW2ldKSBhcyBYVHJlZU5vZGU7XHJcbiAgICAgICAgICBpZiAobm9kZSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFBhcmVudE9wZW4obm9kZXMsIG5vZGUpO1xyXG4gICAgICAgICAgICBpZiAoaSA9PT0gaWRzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgICB0aGlzLmFjdGl2YXRlZE5vZGUgPSBub2RlO1xyXG4gICAgICAgICAgICAgIHRoaXMuYWN0aXZhdGVkQ2hhbmdlLmVtaXQodGhpcy5hY3RpdmF0ZWROb2RlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGFjdGl2YXRlZElkID0gdGhpcy5hY3RpdmF0ZWRJZDtcclxuICAgICAgdGhpcy5hY3RpdmF0ZWROb2RlID0gbm9kZXMuZmluZCgoeCkgPT4geC5pZCA9PSBhY3RpdmF0ZWRJZCkgYXMgWFRyZWVOb2RlO1xyXG4gICAgICBpZiAodGhpcy5hY3RpdmF0ZWROb2RlKSB7XHJcbiAgICAgICAgdGhpcy5zZXRQYXJlbnRPcGVuKG5vZGVzLCB0aGlzLmFjdGl2YXRlZE5vZGUpO1xyXG4gICAgICAgIHRoaXMuYWN0aXZhdGVkQ2hhbmdlLmVtaXQodGhpcy5hY3RpdmF0ZWROb2RlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGJlZm9yZSkge1xyXG4gICAgICBiZWZvcmUuY2hhbmdlICYmIGJlZm9yZS5jaGFuZ2UoKTtcclxuICAgIH1cclxuICAgIGlmICghWElzRW1wdHkobm9kZXMpKSB7XHJcbiAgICAgIHRoaXMuc2V0RGF0YUNoYW5nZShub2Rlcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRQYXJlbnRPcGVuKG5vZGVzOiBYVHJlZU5vZGVbXSwgbm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICBjb25zdCBnZXRQYXJlbnQgPSAoY2hpbGQ6IFhUcmVlTm9kZSkgPT4ge1xyXG4gICAgICBpZiAoWElzRW1wdHkoY2hpbGQucGlkKSkgcmV0dXJuO1xyXG4gICAgICBjb25zdCBwYXJlbnQgPSBub2Rlcy5maW5kKCh4KSA9PiB4LmlkID09PSBjaGlsZC5waWQpIGFzIFhUcmVlTm9kZTtcclxuICAgICAgaWYgKCFYSXNFbXB0eShwYXJlbnQpKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmV4cGFuZGVkLmluY2x1ZGVzKHBhcmVudC5pZCkpIHtcclxuICAgICAgICAgIHRoaXMuZXhwYW5kZWQgPSBbLi4udGhpcy5leHBhbmRlZCwgcGFyZW50LmlkXTtcclxuICAgICAgICAgIHBhcmVudC5vcGVuID0gdHJ1ZTtcclxuICAgICAgICAgIHBhcmVudC5jaGFuZ2UgJiYgcGFyZW50LmNoYW5nZSgpO1xyXG4gICAgICAgICAgZ2V0UGFyZW50KHBhcmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgZ2V0UGFyZW50KG5vZGUpO1xyXG4gIH1cclxuXHJcbiAgc2V0UGFyZW50Q2hlY2sobm9kZXM6IFhUcmVlTm9kZVtdLCBub2RlOiBYVHJlZU5vZGUpIHtcclxuICAgIGNvbnN0IGdldFBhcmVudCA9IChjaGlsZDogWFRyZWVOb2RlKSA9PiB7XHJcbiAgICAgIGlmIChYSXNFbXB0eShjaGlsZC5waWQpKSByZXR1cm47XHJcbiAgICAgIGNvbnN0IHBhcmVudCA9IG5vZGVzLmZpbmQoKHgpID0+IHguaWQgPT09IGNoaWxkLnBpZCkgYXMgWFRyZWVOb2RlO1xyXG4gICAgICBpZiAoIVhJc0VtcHR5KHBhcmVudCkpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZXhwYW5kZWQuaW5jbHVkZXMocGFyZW50LmlkKSkge1xyXG4gICAgICAgICAgdGhpcy5leHBhbmRlZCA9IFsuLi50aGlzLmV4cGFuZGVkLCBwYXJlbnQuaWRdO1xyXG4gICAgICAgICAgcGFyZW50Lm9wZW4gPSB0cnVlO1xyXG4gICAgICAgICAgcGFyZW50LmNoYW5nZSAmJiBwYXJlbnQuY2hhbmdlKCk7XHJcbiAgICAgICAgICBnZXRQYXJlbnQocGFyZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICBnZXRQYXJlbnQobm9kZSk7XHJcbiAgfVxyXG5cclxuICBvblRvZ2dsZShldmVudDogRXZlbnQsIG5vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgbm9kZS5vcGVuID0gIW5vZGUub3BlbjtcclxuICAgIGlmICh0aGlzLmxhenkgJiYgIW5vZGUuY2hpbGRyZW5Mb2FkZWQpIHtcclxuICAgICAgdGhpcy5nZXRMYXp5RGF0YShub2RlLCAoKSA9PiB0aGlzLnZpcnR1YWxUb2dnbGUobm9kZSkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy52aXJ0dWFsVG9nZ2xlKG5vZGUpO1xyXG4gICAgfVxyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TGF6eURhdGEobm9kZTogWFRyZWVOb2RlLCBjYWxsQmFjaz86ICgpID0+IHZvaWQpIHtcclxuICAgIG5vZGUubG9hZGluZyA9IHRydWU7XHJcbiAgICBub2RlLmNoYW5nZSAmJiBub2RlLmNoYW5nZSgpO1xyXG4gICAgKHRoaXMuZGF0YSBhcyAocGlkPzogYW55KSA9PiBPYnNlcnZhYmxlPFhUcmVlTm9kZVtdPikobm9kZS5pZClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKCh4KSA9PlxyXG4gICAgICAgICAgeC5tYXAoKHkpID0+IHtcclxuICAgICAgICAgICAgeS5sZXZlbCA9IChub2RlLmxldmVsIGFzIG51bWJlcikgKyAxO1xyXG4gICAgICAgICAgICB5LmNoZWNrZWQgPSBub2RlLmNoZWNrZWQ7XHJcbiAgICAgICAgICAgIHJldHVybiB5O1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgIG5vZGUuY2hpbGRyZW4gPSB4O1xyXG4gICAgICAgIG5vZGUuY2hpbGRyZW5Mb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIG5vZGUubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChjYWxsQmFjaykgY2FsbEJhY2soKTtcclxuICAgICAgICBub2RlLmNoYW5nZSAmJiBub2RlLmNoYW5nZSgpO1xyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBhZGROb2RlKG5vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgbGV0IHBhcmVudCA9IHRoaXMudHJlZURhdGEuZmluZCgoeCkgPT4geC5pZCA9PT0gbm9kZS5waWQpO1xyXG4gICAgY29uc3QgX2FkZE5vZGUgPSAoKSA9PiB7XHJcbiAgICAgIGlmIChwYXJlbnQpIHtcclxuICAgICAgICBpZiAoIXBhcmVudC5jaGlsZHJlbikgcGFyZW50LmNoaWxkcmVuID0gW107XHJcbiAgICAgICAgdGhpcy5leHBhbmRlZCA9IFsuLi50aGlzLmV4cGFuZGVkLCBwYXJlbnQuaWRdO1xyXG4gICAgICAgIHRoaXMuc2V0QWN0aXZhdGVkSWQobm9kZSk7XHJcbiAgICAgICAgbm9kZS5sZXZlbCA9IE51bWJlcihwYXJlbnQubGV2ZWwpICsgMTtcclxuICAgICAgICBub2RlLnBpZCA9IHBhcmVudC5pZDtcclxuICAgICAgICB0aGlzLnRyZWVEYXRhLnB1c2gobm9kZSk7XHJcbiAgICAgICAgdGhpcy5zZXRBY3RpdmF0ZWROb2RlKHRoaXMudHJlZURhdGEpO1xyXG4gICAgICAgIHBhcmVudC5vcGVuID0gdHJ1ZTtcclxuICAgICAgICBwYXJlbnQubGVhZiA9IGZhbHNlO1xyXG4gICAgICAgIHBhcmVudC5jaGlsZHJlbiA9IFsuLi5wYXJlbnQuY2hpbGRyZW4sIG5vZGVdO1xyXG4gICAgICAgIHRoaXMudmlydHVhbFRvZ2dsZShwYXJlbnQpO1xyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICBwYXJlbnQuY2hhbmdlICYmIHBhcmVudC5jaGFuZ2UoKTtcclxuICAgICAgfSBlbHNlIGlmIChYSXNFbXB0eShub2RlLnBpZCkpIHtcclxuICAgICAgICB0aGlzLnNldEFjdGl2YXRlZElkKG5vZGUpO1xyXG4gICAgICAgIG5vZGUubGV2ZWwgPSAwO1xyXG4gICAgICAgIHRoaXMudHJlZURhdGEgPSBbLi4udGhpcy50cmVlRGF0YSwgbm9kZV07XHJcbiAgICAgICAgdGhpcy5ub2RlcyA9IFsuLi50aGlzLm5vZGVzLCBub2RlXTtcclxuICAgICAgICB0aGlzLnNldEFjdGl2YXRlZE5vZGUodGhpcy50cmVlRGF0YSk7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgaWYgKHRoaXMubGF6eSAmJiBwYXJlbnQgJiYgIXBhcmVudC5jaGlsZHJlbkxvYWRlZCkge1xyXG4gICAgICB0aGlzLmdldExhenlEYXRhKHBhcmVudCwgKCkgPT4ge1xyXG4gICAgICAgIF9hZGROb2RlKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgX2FkZE5vZGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEFjdGl2YXRlZElkKG5vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgaWYgKHRoaXMub2JqZWN0QXJyYXkpIHtcclxuICAgICAgICB0aGlzLmFjdGl2YXRlZElkID0gW25vZGVdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYWN0aXZhdGVkSWQgPSBbbm9kZS5pZF07XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWN0aXZhdGVkSWQgPSBub2RlLmlkO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hY3RpdmF0ZWRJZENoYW5nZS5lbWl0KHRoaXMuYWN0aXZhdGVkSWQpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlTm9kZShub2RlOiBYVHJlZU5vZGUpIHtcclxuICAgIGxldCBwYXJlbnQgPSB0aGlzLnRyZWVEYXRhLmZpbmQoKHgpID0+IHguaWQgPT09IG5vZGUucGlkKTtcclxuICAgIGlmIChwYXJlbnQpIHtcclxuICAgICAgaWYgKCFwYXJlbnQuY2hpbGRyZW4pIHBhcmVudC5jaGlsZHJlbiA9IFtdO1xyXG4gICAgICBwYXJlbnQuY2hpbGRyZW4uc3BsaWNlKHBhcmVudC5jaGlsZHJlbi5pbmRleE9mKG5vZGUpLCAxKTtcclxuICAgICAgcGFyZW50LmxlYWYgPSBwYXJlbnQuY2hpbGRyZW4ubGVuZ3RoID09PSAwO1xyXG4gICAgICBpZiAocGFyZW50LmxlYWYpIHtcclxuICAgICAgICB0aGlzLnNldEFjdGl2YXRlZElkKHBhcmVudCk7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGluZGV4ID0gdGhpcy5ub2Rlcy5pbmRleE9mKG5vZGUpO1xyXG4gICAgICBsZXQgYWluZGV4ID0gaW5kZXggLSAxO1xyXG4gICAgICBpZiAoaW5kZXggPT09IDAgJiYgdGhpcy5ub2Rlcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgYWluZGV4ID0gMTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgYWN0aXZhdGVkTm9kZSA9IHRoaXMubm9kZXNbYWluZGV4XTtcclxuICAgICAgdGhpcy5zZXRBY3RpdmF0ZWRJZChhY3RpdmF0ZWROb2RlKTtcclxuICAgICAgdGhpcy5zZXRBY3RpdmF0ZWROb2RlKHRoaXMubm9kZXMpO1xyXG4gICAgICB0aGlzLm5vZGVzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIHRoaXMubm9kZXMgPSBbLi4udGhpcy5ub2Rlc107XHJcbiAgICAgIGlmIChhY3RpdmF0ZWROb2RlKSB7XHJcbiAgICAgICAgYWN0aXZhdGVkTm9kZS5jaGFuZ2UgJiYgYWN0aXZhdGVkTm9kZS5jaGFuZ2UoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHBhcmVudC5jaGFuZ2UgJiYgcGFyZW50LmNoYW5nZSgpO1xyXG4gICAgfSBlbHNlIGlmIChYSXNFbXB0eShub2RlLnBpZCkpIHtcclxuICAgICAgdGhpcy50cmVlRGF0YS5zcGxpY2UodGhpcy50cmVlRGF0YS5pbmRleE9mKG5vZGUpLCAxKTtcclxuICAgICAgdGhpcy5ub2Rlcy5zcGxpY2UodGhpcy5ub2Rlcy5pbmRleE9mKG5vZGUpLCAxKTtcclxuICAgICAgdGhpcy5ub2RlcyA9IFsuLi50aGlzLm5vZGVzXTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlTm9kZShub2RlOiBYVHJlZU5vZGUsIG5vd05vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgT2JqZWN0LmFzc2lnbihub2RlLCBub3dOb2RlKTtcclxuICAgIG5vZGUuY2hhbmdlICYmIG5vZGUuY2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5SXRlbShfaW5kZXg6IG51bWJlciwgaXRlbTogWFRyZWVOb2RlKSB7XHJcbiAgICByZXR1cm4gaXRlbS5pZDtcclxuICB9XHJcbn1cclxuIiwiPGRpdiAjdHJlZSBjbGFzcz1cIngtdHJlZVwiIFtjbGFzcy54LXRyZWUtb25seS1sZWFmXT1cIm9ubHlMZWFmXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF2aXJ0dWFsU2Nyb2xsOyBlbHNlIHZpcnR1YWxTY3JvbGxUcGxcIj5cclxuICAgIDx4LXRyZWUtbm9kZVxyXG4gICAgICAqbmdGb3I9XCJsZXQgbm9kZSBvZiBub2RlczsgdHJhY2tCeTogdHJhY2tCeUl0ZW1cIlxyXG4gICAgICBbbm9kZV09XCJub2RlXCJcclxuICAgICAgW2xhenldPVwibGF6eVwiXHJcbiAgICAgIFtsYXp5RGF0YV09XCJkYXRhXCJcclxuICAgICAgW25vZGVIZWlnaHRdPVwibm9kZUhlaWdodFwiXHJcbiAgICAgIFtub2RlTm93cmFwXT1cIm5vZGVOb3dyYXBcIlxyXG4gICAgICBbbm9kZUFsaWduSXRlbXNdPVwibm9kZUFsaWduSXRlbXNcIlxyXG4gICAgICBbdHJlZV09XCJ0aGlzXCJcclxuICAgID48L3gtdHJlZS1ub2RlPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdmlydHVhbFNjcm9sbFRwbD5cclxuICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XHJcbiAgICAjdmlydHVhbEJvZHlcclxuICAgIFtpdGVtU2l6ZV09XCJpdGVtU2l6ZVwiXHJcbiAgICBbbWluQnVmZmVyUHhdPVwibWluQnVmZmVyUHhcIlxyXG4gICAgW21heEJ1ZmZlclB4XT1cIm1heEJ1ZmZlclB4XCJcclxuICAgIFtzdHlsZS5oZWlnaHQucHhdPVwidmlydHVhbFNjcm9sbEhlaWdodFwiXHJcbiAgPlxyXG4gICAgPHgtdHJlZS1ub2RlXHJcbiAgICAgICpjZGtWaXJ0dWFsRm9yPVwibGV0IG5vZGUgb2Ygbm9kZXM7IHRlbXBsYXRlQ2FjaGVTaXplOiAwOyB0cmFja0J5OiB0cmFja0J5SXRlbVwiXHJcbiAgICAgIFtub2RlXT1cIm5vZGVcIlxyXG4gICAgICBbbGF6eV09XCJsYXp5XCJcclxuICAgICAgW2xhenlEYXRhXT1cImRhdGFcIlxyXG4gICAgICBbbm9kZUhlaWdodF09XCJub2RlSGVpZ2h0XCJcclxuICAgICAgW25vZGVOb3dyYXBdPVwibm9kZU5vd3JhcFwiXHJcbiAgICAgIFtub2RlQWxpZ25JdGVtc109XCJub2RlQWxpZ25JdGVtc1wiXHJcbiAgICAgIFt0cmVlXT1cInRoaXNcIlxyXG4gICAgPjwveC10cmVlLW5vZGU+XHJcbiAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIOaPkOWJjeWKoOi9vWxvYWRpbmfnmoTlm77moIctLT5cclxuPHgtaWNvbiAqbmdJZj1cImxhenlcIiBbc3R5bGUuZGlzcGxheV09XCInbm9uZSdcIiB0eXBlPVwiZnRvLWxvYWRlclwiPjwveC1pY29uPlxyXG4iXX0=
@@ -44,7 +44,7 @@ export class XTreeFileComponent extends XTreeFileProperty {
44
44
  }
45
45
  }
46
46
  catalogChange(node) {
47
- if (node?.leaf)
47
+ if (!node?.leaf)
48
48
  return;
49
49
  if (node.url && !node.contentLoaded) {
50
50
  this.time = new Date().getTime();
@@ -107,4 +107,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImpor
107
107
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.HttpClient, decorators: [{
108
108
  type: Optional
109
109
  }] }, { type: i2.XConfigService }]; } });
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1maWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3RyZWUtZmlsZS90cmVlLWZpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdHJlZS1maWxlL3RyZWUtZmlsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUE0Qyx1QkFBdUIsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUksT0FBTyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBaUIsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFeEcsT0FBTyxFQUFFLFFBQVEsRUFBa0IsTUFBTSxrQkFBa0IsQ0FBQztBQUU1RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7O0FBVXZDLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxpQkFBaUI7SUFzQnZELFlBQ1MsUUFBbUIsRUFDbkIsVUFBbUMsRUFDbkMsR0FBc0IsRUFDVixJQUFnQixFQUM1QixhQUE2QjtRQUVwQyxLQUFLLEVBQUUsQ0FBQztRQU5ELGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFDbkMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDVixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQzVCLGtCQUFhLEdBQWIsYUFBYSxDQUFnQjtRQXpCdEMsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUV6QixZQUFPLEdBQVcsR0FBRyxDQUFDO1FBMEJwQixJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLGVBQWUsa0ZBQWtGLENBQUMsQ0FBQztTQUN2SDtJQUNILENBQUM7SUEzQkQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsU0FBeUIsQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLGNBQWlDLENBQUM7SUFDL0QsQ0FBQztJQWVELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUUsSUFBSSxDQUFDLElBQXdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQWtCLENBQUMsQ0FBQztTQUMzRztJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsSUFBbUI7UUFDL0IsSUFBSSxJQUFJLEVBQUUsSUFBSTtZQUFFLE9BQU87UUFDdkIsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNuQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztZQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUUsSUFBSSxDQUFDLElBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUNuRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzFGLFFBQVEsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDckIsS0FBSyxNQUFNO29CQUNULElBQUksQ0FBQyxJQUFJO3lCQUNOLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDO3lCQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7eUJBQ2xILFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO3dCQUNmLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO3dCQUNqQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQzt3QkFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7d0JBQ3JCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQzNCLENBQUMsQ0FBQyxDQUFDO29CQUNMLE1BQU07Z0JBQ1IsS0FBSyxLQUFLO29CQUNSLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ3pCLE1BQU07YUFDVDtTQUNGO2FBQU07WUFDTCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztZQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBbUI7UUFDOUIsSUFBSSxTQUFTLEdBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDbkUsTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFvQixFQUFFLEVBQUU7WUFDekMsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztnQkFBRSxPQUFPO1lBQ2hDLE1BQU0sTUFBTSxHQUFJLElBQUksQ0FBQyxJQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxDQUFrQixDQUFDO1lBQy9GLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3JCLFNBQVMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDO2dCQUNuRSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDbkI7UUFDSCxDQUFDLENBQUM7UUFDRixTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFaEIsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7O2tJQWhHVSxrQkFBa0I7c0hBQWxCLGtCQUFrQiwwRUNmL0IsbThDQWdDQTsyRkRqQmEsa0JBQWtCO2tCQVA5QixTQUFTOytCQUNFLEdBQUcsZUFBZSxFQUFFLGlCQUdmLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07OzBCQTRCNUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24sIFJlbmRlcmVyMiwgRWxlbWVudFJlZiwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBYVHJlZUZpbGVQcmVmaXgsIFhUcmVlRmlsZVByb3BlcnR5LCBYVHJlZUZpbGVOb2RlLCBYVHJlZUZpbGVJbWdzIH0gZnJvbSAnLi90cmVlLWZpbGUucHJvcGVydHknO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBYSXNFbXB0eSwgWENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAbmctbmVzdC91aS9jb3JlJztcclxuaW1wb3J0IHsgWENydW1iTm9kZSB9IGZyb20gJ0BuZy1uZXN0L3VpL2NydW1iJztcclxuaW1wb3J0IHsgZGVsYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFhIaWdobGlnaHRMaW5lcyB9IGZyb20gJ0BuZy1uZXN0L3VpL2hpZ2hsaWdodCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogYCR7WFRyZWVGaWxlUHJlZml4fWAsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RyZWUtZmlsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHJlZS1maWxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWFRyZWVGaWxlQ29tcG9uZW50IGV4dGVuZHMgWFRyZWVGaWxlUHJvcGVydHkge1xyXG4gIGFjdGl2YXRlZE5vZGU/OiBYVHJlZUZpbGVOb2RlO1xyXG4gIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB0aW1lITogbnVtYmVyO1xyXG4gIHRpbWVvdXQ6IG51bWJlciA9IDIwMDtcclxuXHJcbiAgZ2V0IGNhdGFsb2dIZWlnaHQoKSB7XHJcbiAgICByZXR1cm4gTnVtYmVyKHRoaXMubWF4SGVpZ2h0KTtcclxuICB9XHJcblxyXG4gIGdldCBjb2RlSGVpZ2h0KCkge1xyXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLm1heEhlaWdodCkgLSAoQm9vbGVhbih0aGlzLnNob3dDcnVtYikgPyAxLjUgOiAwKTtcclxuICB9XHJcblxyXG4gIGdldCBnZXRDcnVtYkRhdGEoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmF0ZWROb2RlPy5jcnVtYkRhdGEgYXMgWENydW1iTm9kZVtdO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGdldEhpZ2hsaWdodExpbmVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWN0aXZhdGVkTm9kZT8uaGlnaGxpZ2h0TGluZXMgYXMgWEhpZ2hsaWdodExpbmVzO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcclxuICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwdWJsaWMgY29uZmlnU2VydmljZTogWENvbmZpZ1NlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICBpZiAoIWh0dHApIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke1hUcmVlRmlsZVByZWZpeH06IE5vdCBmb3VuZCAnSHR0cENsaWVudCcsIFlvdSBjYW4gaW1wb3J0ICdIdHRwQ2xpZW50TW9kdWxlJyBpbiB5b3VyIHJvb3QgbW9kdWxlLmApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAoIXRoaXMuc2hvd1RyZWUgJiYgdGhpcy5hY3RpdmF0ZWRJZCkge1xyXG4gICAgICB0aGlzLmNhdGFsb2dDaGFuZ2UoKHRoaXMuZGF0YSBhcyBYVHJlZUZpbGVOb2RlW10pLmZpbmQoKHgpID0+IHguaWQgPT0gdGhpcy5hY3RpdmF0ZWRJZCkgYXMgWFRyZWVGaWxlTm9kZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYXRhbG9nQ2hhbmdlKG5vZGU6IFhUcmVlRmlsZU5vZGUpIHtcclxuICAgIGlmIChub2RlPy5sZWFmKSByZXR1cm47XHJcbiAgICBpZiAobm9kZS51cmwgJiYgIW5vZGUuY29udGVudExvYWRlZCkge1xyXG4gICAgICB0aGlzLnRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmFjdGl2YXRlZE5vZGUgPSBub2RlO1xyXG4gICAgICBub2RlLmZpbGVUeXBlID0gWFRyZWVGaWxlSW1ncy5pbmRleE9mKChub2RlLnR5cGUgYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpKSAhPT0gLTEgPyAnaW1nJyA6ICdjb2RlJztcclxuICAgICAgbm9kZS5jcnVtYkRhdGEgPSB0aGlzLnNldEN1cm1iRGF0YShub2RlKTtcclxuICAgICAgbm9kZS51cmwgPSBub2RlLnVybD8uaW5kZXhPZih0aGlzLmRvbWFpbikgPT09IDAgPyBub2RlLnVybCA6IGAke3RoaXMuZG9tYWlufS8ke25vZGUudXJsfWA7XHJcbiAgICAgIHN3aXRjaCAobm9kZS5maWxlVHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ2NvZGUnOlxyXG4gICAgICAgICAgdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5nZXQobm9kZS51cmwsIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcclxuICAgICAgICAgICAgLnBpcGUoZGVsYXkobmV3IERhdGUoKS5nZXRUaW1lKCkgLSB0aGlzLnRpbWUgPiB0aGlzLnRpbWVvdXQgPyAwIDogdGhpcy50aW1lb3V0IC0gbmV3IERhdGUoKS5nZXRUaW1lKCkgKyB0aGlzLnRpbWUpKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgICAgICAgbm9kZS5jb250ZW50ID0geDtcclxuICAgICAgICAgICAgICBub2RlLmNvbnRlbnRMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdpbWcnOlxyXG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWN0aXZhdGVkTm9kZSA9IG5vZGU7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGltZ09ubG9hZCgpIHtcclxuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2V0Q3VybWJEYXRhKG5vZGU6IFhUcmVlRmlsZU5vZGUpIHtcclxuICAgIGxldCBjcnVtYkRhdGE6IFhDcnVtYk5vZGVbXSA9IFt7IGlkOiBub2RlLmlkLCBsYWJlbDogbm9kZS5sYWJlbCB9XTtcclxuICAgIGNvbnN0IGdldFBhcmVudCA9IChjaGlsZDogWFRyZWVGaWxlTm9kZSkgPT4ge1xyXG4gICAgICBpZiAoWElzRW1wdHkoY2hpbGQucGlkKSkgcmV0dXJuO1xyXG4gICAgICBjb25zdCBwYXJlbnQgPSAodGhpcy5kYXRhIGFzIFhUcmVlRmlsZU5vZGVbXSkuZmluZCgoeCkgPT4geC5pZCA9PT0gY2hpbGQucGlkKSBhcyBYVHJlZUZpbGVOb2RlO1xyXG4gICAgICBpZiAoIVhJc0VtcHR5KHBhcmVudCkpIHtcclxuICAgICAgICBjcnVtYkRhdGEgPSBbeyBpZDogcGFyZW50LmlkLCBsYWJlbDogcGFyZW50LmxhYmVsIH0sIC4uLmNydW1iRGF0YV07XHJcbiAgICAgICAgZ2V0UGFyZW50KHBhcmVudCk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICBnZXRQYXJlbnQobm9kZSk7XHJcblxyXG4gICAgcmV0dXJuIGNydW1iRGF0YTtcclxuICB9XHJcblxyXG4gIG1lbnVUb2dnbGUoKSB7XHJcbiAgICB0aGlzLnRvZ2dsZSA9ICF0aGlzLnRvZ2dsZTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiAjdHJlZUZpbGUgY2xhc3M9XCJ4LXRyZWUtZmlsZVwiIFtuZ0NsYXNzXT1cImNsYXNzTWFwXCIgW2NsYXNzLngtdHJlZS1maWxlLXRvZ2dsZV09XCJ0b2dnbGVcIj5cclxuICA8ZGl2IGNsYXNzPVwieC10cmVlLWZpbGUtY2F0YWxvZ1wiIFtzdHlsZS5tYXgtaGVpZ2h0LnJlbV09XCJjYXRhbG9nSGVpZ2h0XCIgKm5nSWY9XCJzaG93VHJlZVwiPlxyXG4gICAgPHgtdHJlZVxyXG4gICAgICBbZGF0YV09XCJkYXRhXCJcclxuICAgICAgKGFjdGl2YXRlZENoYW5nZSk9XCJjYXRhbG9nQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICBub2RlT3BlblxyXG4gICAgICBbZXhwYW5kZWRBbGxdPVwiZXhwYW5kZWRBbGxcIlxyXG4gICAgICBbZXhwYW5kZWRMZXZlbF09XCJleHBhbmRlZExldmVsXCJcclxuICAgICAgW2V4cGFuZGVkXT1cImV4cGFuZGVkXCJcclxuICAgICAgW3NwYWNpbmddPVwic3BhY2luZ1wiXHJcbiAgICAgIFthY3RpdmF0ZWRJZF09XCJhY3RpdmF0ZWRJZFwiXHJcbiAgICA+PC94LXRyZWU+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIngtdHJlZS1maWxlLWJvZHlcIiBbeC1sb2FkaW5nXT1cImxvYWRpbmdcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ4LXRyZWUtZmlsZS1jcnVtYlwiICpuZ0lmPVwic2hvd0NydW1iXCI+XHJcbiAgICAgIDx4LWxpbmsgaWNvbj1cImZ0by1tZW51XCIgKm5nSWY9XCJzaG93VG9nZ2xlICYmIHNob3dUcmVlXCIgKGNsaWNrKT1cIm1lbnVUb2dnbGUoKVwiPjwveC1saW5rPlxyXG4gICAgICA8eC1jcnVtYiBbZGF0YV09XCJnZXRDcnVtYkRhdGFcIiBbc2VwYXJhdG9yXT1cInNlcGFyYXRvclRwbFwiPjwveC1jcnVtYj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNzZXBhcmF0b3JUcGw+XHJcbiAgICAgICAgPHgtaWNvbiB0eXBlPVwiZnRvLWNoZXZyb24tcmlnaHRcIj48L3gtaWNvbj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIngtdHJlZS1maWxlLWNvbnRlbnRcIiBbc3R5bGUubWF4LWhlaWdodC5yZW1dPVwiY29kZUhlaWdodFwiIFtuZ1N3aXRjaF09XCJhY3RpdmF0ZWROb2RlPy5maWxlVHlwZVwiPlxyXG4gICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInaW1nJ1wiIGNsYXNzPVwieC10cmVlLWZpbGUtaW1nXCI+PGltZyBbc3JjXT1cImFjdGl2YXRlZE5vZGU/LnVybFwiIChsb2FkKT1cImltZ09ubG9hZCgpXCIvPjwvZGl2PlxyXG4gICAgICA8eC1oaWdobGlnaHRcclxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2NvZGUnXCJcclxuICAgICAgICBbdHlwZV09XCJhY3RpdmF0ZWROb2RlPy50eXBlXCJcclxuICAgICAgICBbZGF0YV09XCJhY3RpdmF0ZWROb2RlPy5jb250ZW50XCJcclxuICAgICAgICBbaGlnaGxpZ2h0TGluZXNdPVwiZ2V0SGlnaGxpZ2h0TGluZXNcIlxyXG4gICAgICA+PC94LWhpZ2hsaWdodD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1maWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3RyZWUtZmlsZS90cmVlLWZpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdHJlZS1maWxlL3RyZWUtZmlsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUE0Qyx1QkFBdUIsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUksT0FBTyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBaUIsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFeEcsT0FBTyxFQUFFLFFBQVEsRUFBa0IsTUFBTSxrQkFBa0IsQ0FBQztBQUU1RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7O0FBVXZDLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxpQkFBaUI7SUFzQnZELFlBQ1MsUUFBbUIsRUFDbkIsVUFBbUMsRUFDbkMsR0FBc0IsRUFDVixJQUFnQixFQUM1QixhQUE2QjtRQUVwQyxLQUFLLEVBQUUsQ0FBQztRQU5ELGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFDbkMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDVixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQzVCLGtCQUFhLEdBQWIsYUFBYSxDQUFnQjtRQXpCdEMsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUV6QixZQUFPLEdBQVcsR0FBRyxDQUFDO1FBMEJwQixJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLGVBQWUsa0ZBQWtGLENBQUMsQ0FBQztTQUN2SDtJQUNILENBQUM7SUEzQkQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxNQUFNLENB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LEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7a0lBaEdVLGtCQUFrQjtzSEFBbEIsa0JBQWtCLDBFQ2YvQixtOENBZ0NBOzJGRGpCYSxrQkFBa0I7a0JBUDlCLFNBQVM7K0JBQ0UsR0FBRyxlQUFlLEVBQUUsaUJBR2YsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTTs7MEJBNEI1QyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiwgUmVuZGVyZXIyLCBFbGVtZW50UmVmLCBDaGFuZ2VEZXRlY3RvclJlZiwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFhUcmVlRmlsZVByZWZpeCwgWFRyZWVGaWxlUHJvcGVydHksIFhUcmVlRmlsZU5vZGUsIFhUcmVlRmlsZUltZ3MgfSBmcm9tICcuL3RyZWUtZmlsZS5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IFhJc0VtcHR5LCBYQ29uZmlnU2VydmljZSB9IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBYQ3J1bWJOb2RlIH0gZnJvbSAnQG5nLW5lc3QvdWkvY3J1bWInO1xyXG5pbXBvcnQgeyBkZWxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgWEhpZ2hsaWdodExpbmVzIH0gZnJvbSAnQG5nLW5lc3QvdWkvaGlnaGxpZ2h0JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBgJHtYVHJlZUZpbGVQcmVmaXh9YCxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHJlZS1maWxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90cmVlLWZpbGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBYVHJlZUZpbGVDb21wb25lbnQgZXh0ZW5kcyBYVHJlZUZpbGVQcm9wZXJ0eSB7XHJcbiAgYWN0aXZhdGVkTm9kZT86IFhUcmVlRmlsZU5vZGU7XHJcbiAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRpbWUhOiBudW1iZXI7XHJcbiAgdGltZW91dDogbnVtYmVyID0gMjAwO1xyXG5cclxuICBnZXQgY2F0YWxvZ0hlaWdodCgpIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5tYXhIZWlnaHQpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNvZGVIZWlnaHQoKSB7XHJcbiAgICByZXR1cm4gTnVtYmVyKHRoaXMubWF4SGVpZ2h0KSAtIChCb29sZWFuKHRoaXMuc2hvd0NydW1iKSA/IDEuNSA6IDApO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGdldENydW1iRGF0YSgpIHtcclxuICAgIHJldHVybiB0aGlzLmFjdGl2YXRlZE5vZGU/LmNydW1iRGF0YSBhcyBYQ3J1bWJOb2RlW107XHJcbiAgfVxyXG5cclxuICBnZXQgZ2V0SGlnaGxpZ2h0TGluZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmF0ZWROb2RlPy5oaWdobGlnaHRMaW5lcyBhcyBYSGlnaGxpZ2h0TGluZXM7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxyXG4gICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBAT3B0aW9uYWwoKSBwdWJsaWMgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHB1YmxpYyBjb25maWdTZXJ2aWNlOiBYQ29uZmlnU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIGlmICghaHR0cCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7WFRyZWVGaWxlUHJlZml4fTogTm90IGZvdW5kICdIdHRwQ2xpZW50JywgWW91IGNhbiBpbXBvcnQgJ0h0dHBDbGllbnRNb2R1bGUnIGluIHlvdXIgcm9vdCBtb2R1bGUuYCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICghdGhpcy5zaG93VHJlZSAmJiB0aGlzLmFjdGl2YXRlZElkKSB7XHJcbiAgICAgIHRoaXMuY2F0YWxvZ0NoYW5nZSgodGhpcy5kYXRhIGFzIFhUcmVlRmlsZU5vZGVbXSkuZmluZCgoeCkgPT4geC5pZCA9PSB0aGlzLmFjdGl2YXRlZElkKSBhcyBYVHJlZUZpbGVOb2RlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNhdGFsb2dDaGFuZ2Uobm9kZTogWFRyZWVGaWxlTm9kZSkge1xyXG4gICAgaWYgKCFub2RlPy5sZWFmKSByZXR1cm47XHJcbiAgICBpZiAobm9kZS51cmwgJiYgIW5vZGUuY29udGVudExvYWRlZCkge1xyXG4gICAgICB0aGlzLnRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmFjdGl2YXRlZE5vZGUgPSBub2RlO1xyXG4gICAgICBub2RlLmZpbGVUeXBlID0gWFRyZWVGaWxlSW1ncy5pbmRleE9mKChub2RlLnR5cGUgYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpKSAhPT0gLTEgPyAnaW1nJyA6ICdjb2RlJztcclxuICAgICAgbm9kZS5jcnVtYkRhdGEgPSB0aGlzLnNldEN1cm1iRGF0YShub2RlKTtcclxuICAgICAgbm9kZS51cmwgPSBub2RlLnVybD8uaW5kZXhPZih0aGlzLmRvbWFpbikgPT09IDAgPyBub2RlLnVybCA6IGAke3RoaXMuZG9tYWlufS8ke25vZGUudXJsfWA7XHJcbiAgICAgIHN3aXRjaCAobm9kZS5maWxlVHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ2NvZGUnOlxyXG4gICAgICAgICAgdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5nZXQobm9kZS51cmwsIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcclxuICAgICAgICAgICAgLnBpcGUoZGVsYXkobmV3IERhdGUoKS5nZXRUaW1lKCkgLSB0aGlzLnRpbWUgPiB0aGlzLnRpbWVvdXQgPyAwIDogdGhpcy50aW1lb3V0IC0gbmV3IERhdGUoKS5nZXRUaW1lKCkgKyB0aGlzLnRpbWUpKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgICAgICAgbm9kZS5jb250ZW50ID0geDtcclxuICAgICAgICAgICAgICBub2RlLmNvbnRlbnRMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdpbWcnOlxyXG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWN0aXZhdGVkTm9kZSA9IG5vZGU7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGltZ09ubG9hZCgpIHtcclxuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2V0Q3VybWJEYXRhKG5vZGU6IFhUcmVlRmlsZU5vZGUpIHtcclxuICAgIGxldCBjcnVtYkRhdGE6IFhDcnVtYk5vZGVbXSA9IFt7IGlkOiBub2RlLmlkLCBsYWJlbDogbm9kZS5sYWJlbCB9XTtcclxuICAgIGNvbnN0IGdldFBhcmVudCA9IChjaGlsZDogWFRyZWVGaWxlTm9kZSkgPT4ge1xyXG4gICAgICBpZiAoWElzRW1wdHkoY2hpbGQucGlkKSkgcmV0dXJuO1xyXG4gICAgICBjb25zdCBwYXJlbnQgPSAodGhpcy5kYXRhIGFzIFhUcmVlRmlsZU5vZGVbXSkuZmluZCgoeCkgPT4geC5pZCA9PT0gY2hpbGQucGlkKSBhcyBYVHJlZUZpbGVOb2RlO1xyXG4gICAgICBpZiAoIVhJc0VtcHR5KHBhcmVudCkpIHtcclxuICAgICAgICBjcnVtYkRhdGEgPSBbeyBpZDogcGFyZW50LmlkLCBsYWJlbDogcGFyZW50LmxhYmVsIH0sIC4uLmNydW1iRGF0YV07XHJcbiAgICAgICAgZ2V0UGFyZW50KHBhcmVudCk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICBnZXRQYXJlbnQobm9kZSk7XHJcblxyXG4gICAgcmV0dXJuIGNydW1iRGF0YTtcclxuICB9XHJcblxyXG4gIG1lbnVUb2dnbGUoKSB7XHJcbiAgICB0aGlzLnRvZ2dsZSA9ICF0aGlzLnRvZ2dsZTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiAjdHJlZUZpbGUgY2xhc3M9XCJ4LXRyZWUtZmlsZVwiIFtuZ0NsYXNzXT1cImNsYXNzTWFwXCIgW2NsYXNzLngtdHJlZS1maWxlLXRvZ2dsZV09XCJ0b2dnbGVcIj5cclxuICA8ZGl2IGNsYXNzPVwieC10cmVlLWZpbGUtY2F0YWxvZ1wiIFtzdHlsZS5tYXgtaGVpZ2h0LnJlbV09XCJjYXRhbG9nSGVpZ2h0XCIgKm5nSWY9XCJzaG93VHJlZVwiPlxyXG4gICAgPHgtdHJlZVxyXG4gICAgICBbZGF0YV09XCJkYXRhXCJcclxuICAgICAgKGFjdGl2YXRlZENoYW5nZSk9XCJjYXRhbG9nQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICBub2RlT3BlblxyXG4gICAgICBbZXhwYW5kZWRBbGxdPVwiZXhwYW5kZWRBbGxcIlxyXG4gICAgICBbZXhwYW5kZWRMZXZlbF09XCJleHBhbmRlZExldmVsXCJcclxuICAgICAgW2V4cGFuZGVkXT1cImV4cGFuZGVkXCJcclxuICAgICAgW3NwYWNpbmddPVwic3BhY2luZ1wiXHJcbiAgICAgIFthY3RpdmF0ZWRJZF09XCJhY3RpdmF0ZWRJZFwiXHJcbiAgICA+PC94LXRyZWU+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIngtdHJlZS1maWxlLWJvZHlcIiBbeC1sb2FkaW5nXT1cImxvYWRpbmdcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ4LXRyZWUtZmlsZS1jcnVtYlwiICpuZ0lmPVwic2hvd0NydW1iXCI+XHJcbiAgICAgIDx4LWxpbmsgaWNvbj1cImZ0by1tZW51XCIgKm5nSWY9XCJzaG93VG9nZ2xlICYmIHNob3dUcmVlXCIgKGNsaWNrKT1cIm1lbnVUb2dnbGUoKVwiPjwveC1saW5rPlxyXG4gICAgICA8eC1jcnVtYiBbZGF0YV09XCJnZXRDcnVtYkRhdGFcIiBbc2VwYXJhdG9yXT1cInNlcGFyYXRvclRwbFwiPjwveC1jcnVtYj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNzZXBhcmF0b3JUcGw+XHJcbiAgICAgICAgPHgtaWNvbiB0eXBlPVwiZnRvLWNoZXZyb24tcmlnaHRcIj48L3gtaWNvbj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIngtdHJlZS1maWxlLWNvbnRlbnRcIiBbc3R5bGUubWF4LWhlaWdodC5yZW1dPVwiY29kZUhlaWdodFwiIFtuZ1N3aXRjaF09XCJhY3RpdmF0ZWROb2RlPy5maWxlVHlwZVwiPlxyXG4gICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInaW1nJ1wiIGNsYXNzPVwieC10cmVlLWZpbGUtaW1nXCI+PGltZyBbc3JjXT1cImFjdGl2YXRlZE5vZGU/LnVybFwiIChsb2FkKT1cImltZ09ubG9hZCgpXCIvPjwvZGl2PlxyXG4gICAgICA8eC1oaWdobGlnaHRcclxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2NvZGUnXCJcclxuICAgICAgICBbdHlwZV09XCJhY3RpdmF0ZWROb2RlPy50eXBlXCJcclxuICAgICAgICBbZGF0YV09XCJhY3RpdmF0ZWROb2RlPy5jb250ZW50XCJcclxuICAgICAgICBbaGlnaGxpZ2h0TGluZXNdPVwiZ2V0SGlnaGxpZ2h0TGluZXNcIlxyXG4gICAgICA+PC94LWhpZ2hsaWdodD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
@@ -232,3 +232,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImpor
232
232
 
233
233
  export { XBaseFormModule, XControlValueAccessor, XFormInputValidator, XFormProp, XValueAccessor };
234
234
  //# sourceMappingURL=ng-nest-ui-base-form.mjs.map
235
+ //# sourceMappingURL=ng-nest-ui-base-form.mjs.map
@@ -411,10 +411,10 @@ class XColorPickerPortalComponent {
411
411
  }
412
412
  }
413
413
  /** @nocollapse */ XColorPickerPortalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XColorPickerPortalComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DOCUMENT }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i1.DecimalPipe }, { token: i1.PercentPipe }], target: i0.ɵɵFactoryTarget.Component });
414
- /** @nocollapse */ XColorPickerPortalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: XColorPickerPortalComponent, selector: "x-color-picker-portal", host: { listeners: { "@x-connect-base-animation.done": "done($event)", "@x-connect-base-animation.start": "start($event)" }, properties: { "@x-connect-base-animation": "this.placement" } }, providers: [DecimalPipe, PercentPipe], viewQueries: [{ propertyName: "panelRef", first: true, predicate: ["panelRef"], descendants: true, static: true }, { propertyName: "plateRef", first: true, predicate: ["plateRef"], descendants: true, static: true }, { propertyName: "transparentCom", first: true, predicate: ["transparentCom"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"x-color-picker-portal\" tabindex=\"-1\" (click)=\"stopPropagation($event)\">\r\n <div #panelRef class=\"x-color-picker-portal-panel\">\r\n <div #plateRef class=\"x-color-picker-portal-plate\" (click)=\"plateClick($event)\">\r\n <div class=\"x-color-picker-portal-white\"></div>\r\n <div class=\"x-color-picker-portal-black\"></div>\r\n <div\r\n #dragCom\r\n class=\"x-color-picker-portal-cursor\"\r\n [style.left.px]=\"transform.x\"\r\n [style.top.px]=\"transform.y\"\r\n cdkDrag\r\n [cdkDragBoundary]=\"panelRef\"\r\n (cdkDragStarted)=\"started()\"\r\n (cdkDragEnded)=\"ended()\"\r\n (cdkDragMoved)=\"moved($event)\"\r\n ></div>\r\n </div>\r\n </div>\r\n <div class=\"x-color-picker-portal-tool\">\r\n <div class=\"x-color-picker-portal-operations\">\r\n <!-- <x-button icon=\"fto-edit-2\" onlyIcon></x-button> -->\r\n <div class=\"x-color-picker-portal-selected\">\r\n <div [style.background-color]=\"value\"></div>\r\n </div>\r\n <div class=\"x-color-picker-portal-area\">\r\n <div class=\"x-color-picker-portal-slider\">\r\n <x-slider-select\r\n [style.width.%]=\"100\"\r\n [(ngModel)]=\"hsla.h\"\r\n min=\"0\"\r\n max=\"360\"\r\n step=\"1\"\r\n (dragStartEmit)=\"started()\"\r\n (dragEndEmit)=\"ended()\"\r\n (ngModelChange)=\"hueChange()\"\r\n ></x-slider-select>\r\n </div>\r\n <div class=\"x-color-picker-portal-transparent\">\r\n <x-slider-select\r\n [style.width.%]=\"100\"\r\n #transparentCom\r\n [(ngModel)]=\"hsla.a\"\r\n min=\"0\"\r\n max=\"1\"\r\n step=\"0.01\"\r\n (dragStarted)=\"started()\"\r\n (dragEnded)=\"ended()\"\r\n (ngModelChange)=\"transparentChange()\"\r\n ></x-slider-select>\r\n <div class=\"x-color-picker-portal-alpha\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"x-color-picker-portal-type\">\r\n <x-tabs animated=\"false\" justify=\"center\">\r\n <x-tab label=\"HEX\">\r\n <div class=\"x-color-picker-portal-type-content\">\r\n <x-input [style.width.%]=\"100\" [(ngModel)]=\"hex\" (ngModelChange)=\"hexChange()\"></x-input>\r\n </div>\r\n </x-tab>\r\n <x-tab label=\"RGBA\">\r\n <div class=\"x-color-picker-portal-type-content\">\r\n <x-input [(ngModel)]=\"rgba.r\" [disabled]=\"true\"></x-input>\r\n <x-input [(ngModel)]=\"rgba.g\" [disabled]=\"true\"></x-input>\r\n <x-input [(ngModel)]=\"rgba.b\" [disabled]=\"true\"></x-input>\r\n <x-input [(ngModel)]=\"rgba.a\" [disabled]=\"true\"></x-input>\r\n </div>\r\n </x-tab>\r\n <x-tab label=\"HSLA\">\r\n <div class=\"x-color-picker-portal-type-content\">\r\n <x-input [(ngModel)]=\"hsla.h\" [disabled]=\"true\"></x-input>\r\n <x-input [(ngModel)]=\"hsla.sp\" [disabled]=\"true\"></x-input>\r\n <x-input [(ngModel)]=\"hsla.lp\" [disabled]=\"true\"></x-input>\r\n <x-input [(ngModel)]=\"hsla.a\" [disabled]=\"true\"></x-input>\r\n </div>\r\n </x-tab>\r\n </x-tabs>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.x-color-picker-portal{margin:.0625rem 0;font-size:var(--x-font-size);color:var(--x-text);border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) var(--x-box-shadow-light-color);background-color:var(--x-background);width:15rem;overflow:hidden}.x-color-picker-portal:focus{outline:none}.x-color-picker-portal-panel{padding:.375rem;margin:-.375rem}.x-color-picker-portal-plate{width:100%;height:8rem;display:flex;border-radius:var(--x-border-radius);position:relative}.x-color-picker-portal-white,.x-color-picker-portal-black{position:absolute;inset:0}.x-color-picker-portal-white{background:linear-gradient(90deg,#fff,hsla(0deg,0%,100%,0))}.x-color-picker-portal-black{background:linear-gradient(0deg,#000,transparent)}.x-color-picker-portal-cursor{position:absolute;width:.75rem;height:.75rem;display:inline-block;border-radius:50%;border:.0625rem solid var(--x-background-100)}.x-color-picker-portal-tool{padding:.4rem}.x-color-picker-portal-operations{display:flex;align-items:center;padding:.4rem 0}.x-color-picker-portal-selected{margin-left:.4rem;width:2rem;height:2rem;border-radius:2rem;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.x-color-picker-portal-selected>div{width:2rem;height:2rem;border-radius:2rem}.x-color-picker-portal-area{margin-left:.4rem;position:relative;flex:1}.x-color-picker-portal-area .x-slider-select>.x-slider-select-inner>.x-slider-select-rail{height:.75rem}.x-color-picker-portal-area .x-slider-select>.x-slider-select-inner>.x-slider-select-track>.x-slider-select-process{background-color:transparent}.x-color-picker-portal-area .x-slider-select>.x-slider-select-inner>.x-slider-select-drags>.x-slider-select-drag>.x-slider-select-button{border-color:var(--x-border);box-shadow:var(--x-box-shadow) var(--x-box-shadow-light-color)}.x-color-picker-portal-slider{position:relative;width:100%}.x-color-picker-portal-slider .x-slider-select>.x-slider-select-inner>.x-slider-select-rail{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.x-color-picker-portal-transparent{margin-top:.4rem;position:relative;width:100%}.x-color-picker-portal-transparent .x-slider-select>.x-slider-select-inner>.x-slider-select-rail{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.x-color-picker-portal-transparent .x-slider-select>.x-slider-select-inner>.x-slider-select-rail:after{content:\"\";height:100%;display:block}.x-color-picker-portal-type{height:5rem}.x-color-picker-portal-type .x-tabs .x-tabs-list{display:flex;justify-content:center}.x-color-picker-portal-type-content{padding:.8rem .4rem;display:flex}.x-color-picker-portal-type-content .x-input .x-input-row input{text-align:center}\n"], dependencies: [{ kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3$1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i4.XSliderSelectComponent, selector: "x-slider-select" }, { kind: "component", type: i5.XTabsComponent, selector: "x-tabs" }, { kind: "component", type: i5.XTabComponent, selector: "x-tab" }, { kind: "component", type: i6.XInputComponent, selector: "x-input" }], animations: [XConnectBaseAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
414
+ /** @nocollapse */ XColorPickerPortalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: XColorPickerPortalComponent, selector: "x-color-picker-portal", host: { listeners: { "@x-connect-base-animation.done": "done($event)", "@x-connect-base-animation.start": "start($event)" }, properties: { "@x-connect-base-animation": "this.placement" } }, providers: [DecimalPipe, PercentPipe], viewQueries: [{ propertyName: "panelRef", first: true, predicate: ["panelRef"], descendants: true, static: true }, { propertyName: "plateRef", first: true, predicate: ["plateRef"], descendants: true, static: true }, { propertyName: "transparentCom", first: true, predicate: ["transparentCom"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"x-color-picker-portal\" tabindex=\"-1\" (click)=\"stopPropagation($event)\">\r\n <div #panelRef class=\"x-color-picker-portal-panel\">\r\n <div #plateRef class=\"x-color-picker-portal-plate\" (click)=\"plateClick($event)\">\r\n <div class=\"x-color-picker-portal-white\"></div>\r\n <div class=\"x-color-picker-portal-black\"></div>\r\n <div\r\n #dragCom\r\n class=\"x-color-picker-portal-cursor\"\r\n [style.left.px]=\"transform.x\"\r\n [style.top.px]=\"transform.y\"\r\n cdkDrag\r\n [cdkDragBoundary]=\"panelRef\"\r\n (cdkDragStarted)=\"started()\"\r\n (cdkDragEnded)=\"ended()\"\r\n (cdkDragMoved)=\"moved($event)\"\r\n ></div>\r\n </div>\r\n </div>\r\n <div class=\"x-color-picker-portal-tool\">\r\n <div class=\"x-color-picker-portal-operations\">\r\n <!-- <x-button icon=\"fto-edit-2\" onlyIcon></x-button> -->\r\n <div class=\"x-color-picker-portal-selected\">\r\n <div [style.background-color]=\"value\"></div>\r\n </div>\r\n <div class=\"x-color-picker-portal-area\">\r\n <div class=\"x-color-picker-portal-slider\">\r\n <x-slider-select\r\n [style.width.%]=\"100\"\r\n [(ngModel)]=\"hsla.h\"\r\n min=\"0\"\r\n max=\"360\"\r\n step=\"1\"\r\n (dragStartEmit)=\"started()\"\r\n (dragEndEmit)=\"ended()\"\r\n (ngModelChange)=\"hueChange()\"\r\n ></x-slider-select>\r\n </div>\r\n <div class=\"x-color-picker-portal-transparent\">\r\n <x-slider-select\r\n [style.width.%]=\"100\"\r\n #transparentCom\r\n [(ngModel)]=\"hsla.a\"\r\n min=\"0\"\r\n max=\"1\"\r\n step=\"0.01\"\r\n (dragStarted)=\"started()\"\r\n (dragEnded)=\"ended()\"\r\n (ngModelChange)=\"transparentChange()\"\r\n ></x-slider-select>\r\n <div class=\"x-color-picker-portal-alpha\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"x-color-picker-portal-type\">\r\n <x-tabs animated=\"false\" justify=\"center\">\r\n <x-tab label=\"HEX\">\r\n <div class=\"x-color-picker-portal-type-content\">\r\n <x-input [style.width.%]=\"100\" [(ngModel)]=\"hex\" (ngModelChange)=\"hexChange()\"></x-input>\r\n </div>\r\n </x-tab>\r\n <x-tab label=\"RGBA\">\r\n <div class=\"x-color-picker-portal-type-content\">\r\n <x-input [(ngModel)]=\"rgba.r\" [disabled]=\"true\"></x-input>\r\n <x-input [(ngModel)]=\"rgba.g\" [disabled]=\"true\"></x-input>\r\n <x-input [(ngModel)]=\"rgba.b\" [disabled]=\"true\"></x-input>\r\n <x-input [(ngModel)]=\"rgba.a\" [disabled]=\"true\"></x-input>\r\n </div>\r\n </x-tab>\r\n <x-tab label=\"HSLA\">\r\n <div class=\"x-color-picker-portal-type-content\">\r\n <x-input [(ngModel)]=\"hsla.h\" [disabled]=\"true\"></x-input>\r\n <x-input [(ngModel)]=\"hsla.sp\" [disabled]=\"true\"></x-input>\r\n <x-input [(ngModel)]=\"hsla.lp\" [disabled]=\"true\"></x-input>\r\n <x-input [(ngModel)]=\"hsla.a\" [disabled]=\"true\"></x-input>\r\n </div>\r\n </x-tab>\r\n </x-tabs>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.x-color-picker-portal{margin:.0625rem 0;font-size:var(--x-font-size);color:var(--x-text);border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) var(--x-box-shadow-light-color);background-color:var(--x-background);width:15rem;overflow:hidden}.x-color-picker-portal:focus{outline:none}.x-color-picker-portal-panel{padding:.375rem;margin:-.375rem}.x-color-picker-portal-plate{width:100%;height:8rem;display:flex;border-radius:var(--x-border-radius);position:relative}.x-color-picker-portal-white,.x-color-picker-portal-black{position:absolute;inset:0}.x-color-picker-portal-white{background:linear-gradient(90deg,#fff,hsla(0deg,0%,100%,0))}.x-color-picker-portal-black{background:linear-gradient(0deg,#000,transparent)}.x-color-picker-portal-cursor{position:absolute;width:.75rem;height:.75rem;display:inline-block;border-radius:50%;border:.0625rem solid var(--x-background-100)}.x-color-picker-portal-tool{padding:.4rem}.x-color-picker-portal-operations{display:flex;align-items:center;padding:.4rem 0}.x-color-picker-portal-selected{margin-left:.4rem;width:2rem;height:2rem;border-radius:2rem;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.x-color-picker-portal-selected>div{width:2rem;height:2rem;border-radius:2rem}.x-color-picker-portal-area{margin-left:.4rem;position:relative;flex:1}.x-color-picker-portal-area .x-slider-select:hover:not(.x-disabled) .x-slider-select-track{background-color:transparent}.x-color-picker-portal-area .x-slider-select>.x-slider-select-inner>.x-slider-select-rail{height:.75rem}.x-color-picker-portal-area .x-slider-select>.x-slider-select-inner>.x-slider-select-track>.x-slider-select-process{background-color:transparent}.x-color-picker-portal-area .x-slider-select>.x-slider-select-inner>.x-slider-select-drags>.x-slider-select-drag>.x-slider-select-button{border-color:var(--x-border);box-shadow:var(--x-box-shadow) var(--x-box-shadow-light-color)}.x-color-picker-portal-slider{position:relative;width:100%}.x-color-picker-portal-slider .x-slider-select>.x-slider-select-inner>.x-slider-select-rail{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.x-color-picker-portal-transparent{margin-top:.4rem;position:relative;width:100%}.x-color-picker-portal-transparent .x-slider-select>.x-slider-select-inner>.x-slider-select-rail{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.x-color-picker-portal-transparent .x-slider-select>.x-slider-select-inner>.x-slider-select-rail:after{content:\"\";height:100%;display:block}.x-color-picker-portal-type{height:5rem}.x-color-picker-portal-type .x-tabs .x-tabs-list{display:flex;justify-content:center}.x-color-picker-portal-type-content{padding:.8rem .4rem;display:flex}.x-color-picker-portal-type-content .x-input .x-input-row input{text-align:center}\n"], dependencies: [{ kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3$1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i4.XSliderSelectComponent, selector: "x-slider-select" }, { kind: "component", type: i5.XTabsComponent, selector: "x-tabs" }, { kind: "component", type: i5.XTabComponent, selector: "x-tab" }, { kind: "component", type: i6.XInputComponent, selector: "x-input" }], animations: [XConnectBaseAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
415
415
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XColorPickerPortalComponent, decorators: [{
416
416
  type: Component,
417
- args: [{ selector: `${XColorPickerPortalPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [DecimalPipe, PercentPipe], animations: [XConnectBaseAnimation], template: "<div class=\"x-color-picker-portal\" tabindex=\"-1\" (click)=\"stopPropagation($event)\">\r\n <div #panelRef class=\"x-color-picker-portal-panel\">\r\n <div #plateRef class=\"x-color-picker-portal-plate\" (click)=\"plateClick($event)\">\r\n <div class=\"x-color-picker-portal-white\"></div>\r\n <div class=\"x-color-picker-portal-black\"></div>\r\n <div\r\n #dragCom\r\n class=\"x-color-picker-portal-cursor\"\r\n [style.left.px]=\"transform.x\"\r\n [style.top.px]=\"transform.y\"\r\n cdkDrag\r\n [cdkDragBoundary]=\"panelRef\"\r\n (cdkDragStarted)=\"started()\"\r\n (cdkDragEnded)=\"ended()\"\r\n (cdkDragMoved)=\"moved($event)\"\r\n ></div>\r\n </div>\r\n </div>\r\n <div class=\"x-color-picker-portal-tool\">\r\n <div class=\"x-color-picker-portal-operations\">\r\n <!-- <x-button icon=\"fto-edit-2\" onlyIcon></x-button> -->\r\n <div class=\"x-color-picker-portal-selected\">\r\n <div [style.background-color]=\"value\"></div>\r\n </div>\r\n <div class=\"x-color-picker-portal-area\">\r\n <div class=\"x-color-picker-portal-slider\">\r\n <x-slider-select\r\n [style.width.%]=\"100\"\r\n [(ngModel)]=\"hsla.h\"\r\n min=\"0\"\r\n max=\"360\"\r\n step=\"1\"\r\n (dragStartEmit)=\"started()\"\r\n (dragEndEmit)=\"ended()\"\r\n (ngModelChange)=\"hueChange()\"\r\n ></x-slider-select>\r\n </div>\r\n <div class=\"x-color-picker-portal-transparent\">\r\n <x-slider-select\r\n [style.width.%]=\"100\"\r\n #transparentCom\r\n [(ngModel)]=\"hsla.a\"\r\n min=\"0\"\r\n max=\"1\"\r\n step=\"0.01\"\r\n (dragStarted)=\"started()\"\r\n (dragEnded)=\"ended()\"\r\n (ngModelChange)=\"transparentChange()\"\r\n ></x-slider-select>\r\n <div class=\"x-color-picker-portal-alpha\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"x-color-picker-portal-type\">\r\n <x-tabs animated=\"false\" justify=\"center\">\r\n <x-tab label=\"HEX\">\r\n <div class=\"x-color-picker-portal-type-content\">\r\n <x-input [style.width.%]=\"100\" [(ngModel)]=\"hex\" (ngModelChange)=\"hexChange()\"></x-input>\r\n </div>\r\n </x-tab>\r\n <x-tab label=\"RGBA\">\r\n <div class=\"x-color-picker-portal-type-content\">\r\n <x-input [(ngModel)]=\"rgba.r\" [disabled]=\"true\"></x-input>\r\n <x-input [(ngModel)]=\"rgba.g\" [disabled]=\"true\"></x-input>\r\n <x-input [(ngModel)]=\"rgba.b\" [disabled]=\"true\"></x-input>\r\n <x-input [(ngModel)]=\"rgba.a\" [disabled]=\"true\"></x-input>\r\n </div>\r\n </x-tab>\r\n <x-tab label=\"HSLA\">\r\n <div class=\"x-color-picker-portal-type-content\">\r\n <x-input [(ngModel)]=\"hsla.h\" [disabled]=\"true\"></x-input>\r\n <x-input [(ngModel)]=\"hsla.sp\" [disabled]=\"true\"></x-input>\r\n <x-input [(ngModel)]=\"hsla.lp\" [disabled]=\"true\"></x-input>\r\n <x-input [(ngModel)]=\"hsla.a\" [disabled]=\"true\"></x-input>\r\n </div>\r\n </x-tab>\r\n </x-tabs>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.x-color-picker-portal{margin:.0625rem 0;font-size:var(--x-font-size);color:var(--x-text);border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) var(--x-box-shadow-light-color);background-color:var(--x-background);width:15rem;overflow:hidden}.x-color-picker-portal:focus{outline:none}.x-color-picker-portal-panel{padding:.375rem;margin:-.375rem}.x-color-picker-portal-plate{width:100%;height:8rem;display:flex;border-radius:var(--x-border-radius);position:relative}.x-color-picker-portal-white,.x-color-picker-portal-black{position:absolute;inset:0}.x-color-picker-portal-white{background:linear-gradient(90deg,#fff,hsla(0deg,0%,100%,0))}.x-color-picker-portal-black{background:linear-gradient(0deg,#000,transparent)}.x-color-picker-portal-cursor{position:absolute;width:.75rem;height:.75rem;display:inline-block;border-radius:50%;border:.0625rem solid var(--x-background-100)}.x-color-picker-portal-tool{padding:.4rem}.x-color-picker-portal-operations{display:flex;align-items:center;padding:.4rem 0}.x-color-picker-portal-selected{margin-left:.4rem;width:2rem;height:2rem;border-radius:2rem;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.x-color-picker-portal-selected>div{width:2rem;height:2rem;border-radius:2rem}.x-color-picker-portal-area{margin-left:.4rem;position:relative;flex:1}.x-color-picker-portal-area .x-slider-select>.x-slider-select-inner>.x-slider-select-rail{height:.75rem}.x-color-picker-portal-area .x-slider-select>.x-slider-select-inner>.x-slider-select-track>.x-slider-select-process{background-color:transparent}.x-color-picker-portal-area .x-slider-select>.x-slider-select-inner>.x-slider-select-drags>.x-slider-select-drag>.x-slider-select-button{border-color:var(--x-border);box-shadow:var(--x-box-shadow) var(--x-box-shadow-light-color)}.x-color-picker-portal-slider{position:relative;width:100%}.x-color-picker-portal-slider .x-slider-select>.x-slider-select-inner>.x-slider-select-rail{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.x-color-picker-portal-transparent{margin-top:.4rem;position:relative;width:100%}.x-color-picker-portal-transparent .x-slider-select>.x-slider-select-inner>.x-slider-select-rail{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.x-color-picker-portal-transparent .x-slider-select>.x-slider-select-inner>.x-slider-select-rail:after{content:\"\";height:100%;display:block}.x-color-picker-portal-type{height:5rem}.x-color-picker-portal-type .x-tabs .x-tabs-list{display:flex;justify-content:center}.x-color-picker-portal-type-content{padding:.8rem .4rem;display:flex}.x-color-picker-portal-type-content .x-input .x-input-row input{text-align:center}\n"] }]
417
+ args: [{ selector: `${XColorPickerPortalPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [DecimalPipe, PercentPipe], animations: [XConnectBaseAnimation], template: "<div class=\"x-color-picker-portal\" tabindex=\"-1\" (click)=\"stopPropagation($event)\">\r\n <div #panelRef class=\"x-color-picker-portal-panel\">\r\n <div #plateRef class=\"x-color-picker-portal-plate\" (click)=\"plateClick($event)\">\r\n <div class=\"x-color-picker-portal-white\"></div>\r\n <div class=\"x-color-picker-portal-black\"></div>\r\n <div\r\n #dragCom\r\n class=\"x-color-picker-portal-cursor\"\r\n [style.left.px]=\"transform.x\"\r\n [style.top.px]=\"transform.y\"\r\n cdkDrag\r\n [cdkDragBoundary]=\"panelRef\"\r\n (cdkDragStarted)=\"started()\"\r\n (cdkDragEnded)=\"ended()\"\r\n (cdkDragMoved)=\"moved($event)\"\r\n ></div>\r\n </div>\r\n </div>\r\n <div class=\"x-color-picker-portal-tool\">\r\n <div class=\"x-color-picker-portal-operations\">\r\n <!-- <x-button icon=\"fto-edit-2\" onlyIcon></x-button> -->\r\n <div class=\"x-color-picker-portal-selected\">\r\n <div [style.background-color]=\"value\"></div>\r\n </div>\r\n <div class=\"x-color-picker-portal-area\">\r\n <div class=\"x-color-picker-portal-slider\">\r\n <x-slider-select\r\n [style.width.%]=\"100\"\r\n [(ngModel)]=\"hsla.h\"\r\n min=\"0\"\r\n max=\"360\"\r\n step=\"1\"\r\n (dragStartEmit)=\"started()\"\r\n (dragEndEmit)=\"ended()\"\r\n (ngModelChange)=\"hueChange()\"\r\n ></x-slider-select>\r\n </div>\r\n <div class=\"x-color-picker-portal-transparent\">\r\n <x-slider-select\r\n [style.width.%]=\"100\"\r\n #transparentCom\r\n [(ngModel)]=\"hsla.a\"\r\n min=\"0\"\r\n max=\"1\"\r\n step=\"0.01\"\r\n (dragStarted)=\"started()\"\r\n (dragEnded)=\"ended()\"\r\n (ngModelChange)=\"transparentChange()\"\r\n ></x-slider-select>\r\n <div class=\"x-color-picker-portal-alpha\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"x-color-picker-portal-type\">\r\n <x-tabs animated=\"false\" justify=\"center\">\r\n <x-tab label=\"HEX\">\r\n <div class=\"x-color-picker-portal-type-content\">\r\n <x-input [style.width.%]=\"100\" [(ngModel)]=\"hex\" (ngModelChange)=\"hexChange()\"></x-input>\r\n </div>\r\n </x-tab>\r\n <x-tab label=\"RGBA\">\r\n <div class=\"x-color-picker-portal-type-content\">\r\n <x-input [(ngModel)]=\"rgba.r\" [disabled]=\"true\"></x-input>\r\n <x-input [(ngModel)]=\"rgba.g\" [disabled]=\"true\"></x-input>\r\n <x-input [(ngModel)]=\"rgba.b\" [disabled]=\"true\"></x-input>\r\n <x-input [(ngModel)]=\"rgba.a\" [disabled]=\"true\"></x-input>\r\n </div>\r\n </x-tab>\r\n <x-tab label=\"HSLA\">\r\n <div class=\"x-color-picker-portal-type-content\">\r\n <x-input [(ngModel)]=\"hsla.h\" [disabled]=\"true\"></x-input>\r\n <x-input [(ngModel)]=\"hsla.sp\" [disabled]=\"true\"></x-input>\r\n <x-input [(ngModel)]=\"hsla.lp\" [disabled]=\"true\"></x-input>\r\n <x-input [(ngModel)]=\"hsla.a\" [disabled]=\"true\"></x-input>\r\n </div>\r\n </x-tab>\r\n </x-tabs>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.x-color-picker-portal{margin:.0625rem 0;font-size:var(--x-font-size);color:var(--x-text);border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) var(--x-box-shadow-light-color);background-color:var(--x-background);width:15rem;overflow:hidden}.x-color-picker-portal:focus{outline:none}.x-color-picker-portal-panel{padding:.375rem;margin:-.375rem}.x-color-picker-portal-plate{width:100%;height:8rem;display:flex;border-radius:var(--x-border-radius);position:relative}.x-color-picker-portal-white,.x-color-picker-portal-black{position:absolute;inset:0}.x-color-picker-portal-white{background:linear-gradient(90deg,#fff,hsla(0deg,0%,100%,0))}.x-color-picker-portal-black{background:linear-gradient(0deg,#000,transparent)}.x-color-picker-portal-cursor{position:absolute;width:.75rem;height:.75rem;display:inline-block;border-radius:50%;border:.0625rem solid var(--x-background-100)}.x-color-picker-portal-tool{padding:.4rem}.x-color-picker-portal-operations{display:flex;align-items:center;padding:.4rem 0}.x-color-picker-portal-selected{margin-left:.4rem;width:2rem;height:2rem;border-radius:2rem;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.x-color-picker-portal-selected>div{width:2rem;height:2rem;border-radius:2rem}.x-color-picker-portal-area{margin-left:.4rem;position:relative;flex:1}.x-color-picker-portal-area .x-slider-select:hover:not(.x-disabled) .x-slider-select-track{background-color:transparent}.x-color-picker-portal-area .x-slider-select>.x-slider-select-inner>.x-slider-select-rail{height:.75rem}.x-color-picker-portal-area .x-slider-select>.x-slider-select-inner>.x-slider-select-track>.x-slider-select-process{background-color:transparent}.x-color-picker-portal-area .x-slider-select>.x-slider-select-inner>.x-slider-select-drags>.x-slider-select-drag>.x-slider-select-button{border-color:var(--x-border);box-shadow:var(--x-box-shadow) var(--x-box-shadow-light-color)}.x-color-picker-portal-slider{position:relative;width:100%}.x-color-picker-portal-slider .x-slider-select>.x-slider-select-inner>.x-slider-select-rail{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.x-color-picker-portal-transparent{margin-top:.4rem;position:relative;width:100%}.x-color-picker-portal-transparent .x-slider-select>.x-slider-select-inner>.x-slider-select-rail{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.x-color-picker-portal-transparent .x-slider-select>.x-slider-select-inner>.x-slider-select-rail:after{content:\"\";height:100%;display:block}.x-color-picker-portal-type{height:5rem}.x-color-picker-portal-type .x-tabs .x-tabs-list{display:flex;justify-content:center}.x-color-picker-portal-type-content{padding:.8rem .4rem;display:flex}.x-color-picker-portal-type-content .x-input .x-input-row input{text-align:center}\n"] }]
418
418
  }], ctorParameters: function () {
419
419
  return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
420
420
  type: Inject,