@rlucan/ui 14.2.3 → 14.2.5

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.
@@ -81,8 +81,8 @@ export class UiFileUploaderComponent extends UiSimpleComponent {
81
81
  }
82
82
  get ngAddStyle() {
83
83
  return {
84
- width: this.fileServiceConfig.imageSizes[this.fileSize][0] + 'px',
85
- height: this.fileServiceConfig.imageSizes[this.fileSize][1] + 'px',
84
+ width: Math.abs(this.fileServiceConfig.imageSizes[this.fileSize][0]) + 'px',
85
+ height: Math.abs(this.fileServiceConfig.imageSizes[this.fileSize][1]) + 'px',
86
86
  };
87
87
  }
88
88
  get aspectRatio() {
@@ -391,4 +391,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImpor
391
391
  }], fileEvent: [{
392
392
  type: Output
393
393
  }] } });
394
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktZmlsZS11cGxvYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2ZpbGUtdXBsb2FkZXIvdWktZmlsZS11cGxvYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2ZpbGUtdXBsb2FkZXIvdWktZmlsZS11cGxvYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixJQUFJLEVBQ0osTUFBTSxFQUNOLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFFBQVEsRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW9CLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckUsT0FBTyxFQUEwQyxjQUFjLEVBQWlCLE1BQU0sNkJBQTZCLENBQUM7QUFFcEgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUF1QixtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7Ozs7OztBQTJCNUYsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGlCQUFpQjtJQWdFNUQsWUFBd0QsaUJBQWlDLEVBQ3pDLGdCQUFxQyxFQUMvQixnQkFBa0MsRUFDcEUsV0FBMEI7UUFFNUMsS0FBSyxDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBTHdCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBZ0I7UUFDekMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFxQjtRQUMvQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ3BFLGdCQUFXLEdBQVgsV0FBVyxDQUFlO1FBakVyQyxhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNoQixTQUFJLEdBQUcsS0FB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QkFBaUI7NEJBQzFCLEtBQUssRUFBRSxJQUFJOzRCQUNYLFdBQVcseUJBQXlCO3lCQUNyQyxDQUFDOzswQkFrRVcsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxjQUFjOzswQkFDakMsTUFBTTsyQkFBQyxtQkFBbUI7OzBCQUMxQixRQUFROzswQkFBSSxJQUFJOzswQkFBSSxRQUFRO3dFQWhFaEMsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBY0csZUFBZTtzQkFBdkIsS0FBSztnQkFFSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdCxcclxuICBJbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPcHRpb25hbCxcclxuICBPdXRwdXQsXHJcbiAgU2tpcFNlbGZcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFVwbG9hZGVyT3B0aW9ucywgVXBsb2FkRmlsZSwgVXBsb2FkSW5wdXQsIFVwbG9hZE91dHB1dCB9IGZyb20gJ25neC11cGxvYWRlcic7XHJcbmltcG9ydCB7IElVaUZpbGVTZXJ2aWNlLCBJVWlGaWxlU2VydmljZU1lc3NhZ2VzLCBVSV9GSUxFU0VSVklDRSwgVWlGaWxlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3VpLWZpbGUuc2VydmljZSc7XHJcbmltcG9ydCB7IERpbWVuc2lvbnMsIEltYWdlQ3JvcHBlZEV2ZW50LCBJbWFnZVRyYW5zZm9ybSB9IGZyb20gJ25neC1pbWFnZS1jcm9wcGVyJztcclxuaW1wb3J0IHsgVWlTaW1wbGVDb21wb25lbnQgfSBmcm9tICcuLi9zaW1wbGUvdWktc2ltcGxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IElVaVRyYW5zbGF0ZVNlcnZpY2UsIFVJX1RSQU5TTEFURVNFUlZJQ0UgfSBmcm9tICcuLi9zZXJ2aWNlcy91aS10cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IHNraXAgfSBmcm9tICdyeGpzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVXBsb2FkT3V0cHV0RXggZXh0ZW5kcyBVcGxvYWRPdXRwdXQge1xyXG4gIGZpbGU6IFVwbG9hZEZpbGVFeDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBVcGxvYWRGaWxlRXggZXh0ZW5kcyBVcGxvYWRGaWxlIHtcclxuICBpbWFnZVByZXZpZXc/OiBhbnk7XHJcbiAgYmFzZTY0PzogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElVaVVwbG9hZGVyVXNlck1lc3NhZ2Uge1xyXG4gIG1lc3NhZ2U6IElVaUZpbGVTZXJ2aWNlTWVzc2FnZXMsXHJcbiAgZGF0YTogYW55XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndWktZmlsZS11cGxvYWRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VpLWZpbGUtdXBsb2FkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWyAnLi91aS1maWxlLXVwbG9hZGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbe1xyXG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICBtdWx0aTogdHJ1ZSxcclxuICAgIHVzZUV4aXN0aW5nOiBVaUZpbGVVcGxvYWRlckNvbXBvbmVudCxcclxuICB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWlGaWxlVXBsb2FkZXJDb21wb25lbnQgZXh0ZW5kcyBVaVNpbXBsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgQElucHV0KCkgbWF4RmlsZXMgPSAxO1xyXG4gIEBJbnB1dCgpIG11bHRpcGxlID0gdHJ1ZTtcclxuICBASW5wdXQoKSBjcm9wID0gZmFsc2U7XHJcbiAgQElucHV0KCkgY3JvcFJvdW5kZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBjcm9wTWF4V2lkdGg7XHJcbiAgQElucHV0KCkgZmlsZVNpemUgPSAnZGVmYXVsdCc7XHJcbiAgQElucHV0KCkgY3VzdG9tRmlsZU1lbnUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBhZGRIaW50O1xyXG4gIEBJbnB1dCgpIG5ld0ZpbGVQb3NpdGlvbjogJ2ZpcnN0JyB8ICdsYXN0JyA9ICdsYXN0JztcclxuXHJcbiAgQElucHV0KCkgdGVtcGxhdGVzOiB7IG1lbnVUZW1wbGF0ZT86IGFueSwgYWRkRmlsZVRlbXBsYXRlPzogYW55LCBmaWxlVGVtcGxhdGU/OiBhbnkgfSA9IHt9XHJcblxyXG4gIGdldCBtZW51VGVtcGxhdGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZXM/Lm1lbnVUZW1wbGF0ZTtcclxuICB9XHJcblxyXG4gIGdldCBhZGRGaWxlVGVtcGxhdGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZXM/LmFkZEZpbGVUZW1wbGF0ZTtcclxuICB9XHJcblxyXG4gIGdldCBmaWxlVGVtcGxhdGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZXM/LmZpbGVUZW1wbGF0ZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHByZXZpZXdQb3NpdGlvbjogJ2xlZnQnIHwgJ2JvdHRvbScgfCAnYWJvdmUnID0gJ2JvdHRvbSc7XHJcblxyXG4gIEBPdXRwdXQoKSBpbWFnZUNyb3BwZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGZpbGVFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8SVVpVXBsb2FkZXJVc2VyTWVzc2FnZT4oKTtcclxuXHJcbiAgdXBsb2FkT3B0aW9uczogVXBsb2FkZXJPcHRpb25zID0ge1xyXG4gICAgY29uY3VycmVuY3k6IHRoaXMuZmlsZVNlcnZpY2VDb25maWcuY29uY3VycmVudFVwbG9hZHNcclxuICB9O1xyXG5cclxuICBwdWJsaWMgdXBsb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gIGNoYW5nZUZpbGVJbmRleDtcclxuXHJcbiAgc2hvd0Nyb3BwZXIgPSBmYWxzZTtcclxuICBtZW51VmlzaWJsZTogYW55O1xyXG4gIHNob3dDcm9wUHJldmlldyA9IHt9O1xyXG4gIGNyb3BQcmV2aWV3VGltZW91dHMgPSB7fTtcclxuICBjcm9wU291cmNlSW1hZ2VzID0ge307XHJcbiAgY3JvcHBlckltYWdlTG9hZGVkID0ge307XHJcbiAgaW1hZ2VzRG9uZSA9IHt9O1xyXG4gIHRyYW5zZm9ybTogSW1hZ2VUcmFuc2Zvcm0gPSB7fTtcclxuICBjYW52YXNSb3RhdGlvbiA9IHt9XHJcblxyXG4gIHB1YmxpYyBmaWxlcyA6IHsgY3VzdG9tPzogYW55LCAkbmV3RmlsZT86IFVwbG9hZEZpbGUgfVtdO1xyXG5cclxuICBwdWJsaWMgcmVzcG9uc2VGaWxlcztcclxuXHJcbiAgcmVmcmVzaEFkZElucHV0ID0gZmFsc2U7XHJcblxyXG4gIGZpbGVNZW51T3BlbmVkO1xyXG5cclxuICBwYXRjaGluZ1ZhbHVlcyA9IGZhbHNlO1xyXG5cclxuICBpbnB1dEFycmF5ID0gZmFsc2U7XHJcbiAgZHJhZ2dpbmcgPSBmYWxzZTtcclxuXHJcbiAgdXBsb2FkZXJJZCA9IE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDEwMDAwMDApO1xyXG5cclxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KFVJX0ZJTEVTRVJWSUNFKSBwcml2YXRlIGZpbGVTZXJ2aWNlQ29uZmlnOiBJVWlGaWxlU2VydmljZSxcclxuICAgICAgICAgICAgICBASW5qZWN0KFVJX1RSQU5TTEFURVNFUlZJQ0UpIHB1YmxpYyB0cmFuc2xhdGVTZXJ2aWNlOiBJVWlUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBIb3N0KCkgQFNraXBTZWxmKCkgcHJvdGVjdGVkIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBmaWxlU2VydmljZTogVWlGaWxlU2VydmljZSkge1xyXG5cclxuICAgIHN1cGVyKG51bGwsIGNvbnRyb2xDb250YWluZXIpO1xyXG5cclxuICAgIHRoaXMuZmlsZVNlcnZpY2UudXBsb2FkU3Vic2NyaXB0aW9uLm5leHQoe2FjdGlvbjogJ3JlZ2lzdGVyJywgZGF0YTogdGhpc30pO1xyXG5cclxuICAgIHRoaXMuZmlsZVNlcnZpY2UudXBsb2FkU3Vic2NyaXB0aW9uLnN1YnNjcmliZSgodjogYW55KSA9PiB7XHJcbiAgICAgIHN3aXRjaCAodi5hY3Rpb24pIHtcclxuICAgICAgICBjYXNlICd1cGxvYWRTdGFydGVkJzogdGhpcy51cGxvYWRpbmcgPSB0cnVlOyBicmVhaztcclxuICAgICAgICBjYXNlICd1cGxvYWRGYWlsZWQnOlxyXG4gICAgICAgIGNhc2UgJ3VwbG9hZFN1Y2Nlc3MnOlxyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudXBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMucGF0Y2hWYWx1ZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgdXBsb2FkSW5wdXQoKTogRXZlbnRFbWl0dGVyPFVwbG9hZElucHV0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5maWxlU2VydmljZS51cGxvYWRJbnB1dDtcclxuICB9XHJcblxyXG4gIGNyb3BwZWRJbWFnZXMgPSB7fTtcclxuXHJcbiAgZ2V0IGVkaXRhYmxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wuZW5hYmxlZDtcclxuICB9XHJcblxyXG4gIGdldCBuZ0FkZFN0eWxlKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgd2lkdGg6IHRoaXMuZmlsZVNlcnZpY2VDb25maWcuaW1hZ2VTaXplc1t0aGlzLmZpbGVTaXplXVswXSArICdweCcsXHJcbiAgICAgIGhlaWdodDogdGhpcy5maWxlU2VydmljZUNvbmZpZy5pbWFnZVNpemVzW3RoaXMuZmlsZVNpemVdWzFdICsgJ3B4JyxcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBhc3BlY3RSYXRpbygpIHtcclxuICAgIHJldHVybiB0aGlzLmZpbGVTZXJ2aWNlQ29uZmlnLmltYWdlU2l6ZXNbdGhpcy5maWxlU2l6ZV1bMF0gLyB0aGlzLmZpbGVTZXJ2aWNlQ29uZmlnLmltYWdlU2l6ZXNbdGhpcy5maWxlU2l6ZV1bMV07XHJcbiAgfVxyXG5cclxuICBnZXQgYWRkRmlsZUltZ1NyYygpIHtcclxuICAgIHJldHVybiB0aGlzLmZpbGVTZXJ2aWNlQ29uZmlnLmFkZEZpbGVJbWdTcmM7XHJcbiAgfVxyXG5cclxuICBjcm9wRG9uZShmKSB7XHJcbiAgICByZXR1cm4gIWYuJG5ld0ZpbGUgfHwgdGhpcy5pbWFnZXNEb25lW2YuJG5ld0ZpbGUuaWRdO1xyXG4gIH1cclxuXHJcbiAgLy8gbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgLy8gICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gIC8vIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbGVTZXJ2aWNlLnVwbG9hZFN1YnNjcmlwdGlvbi5uZXh0KHthY3Rpb246ICdkZXN0cm95JywgZGF0YTogdGhpc30pO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKGY6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKGYuJG5ld0ZpbGUpIHtcclxuICAgICAgdGhpcy51cGxvYWRJbnB1dC5lbWl0KHt0eXBlOiAncmVtb3ZlJywgaWQ6IGYuJG5ld0ZpbGUuaWR9KTtcclxuICAgIH1cclxuICAgIHRoaXMuZmlsZXMuc3BsaWNlKHRoaXMuZmlsZXMuaW5kZXhPZihmKSwgMSk7XHJcbiAgICB0aGlzLnByZXBhcmVSZXNwb25zZSgpO1xyXG4gICAgLy8gdGhpcy5vbkNoYW5nZSh0aGlzLmlucHV0QXJyYXkgPyB0aGlzLmZpbGVzIDogKHRoaXMuZmlsZXMubGVuZ3RoID4gMCA/IHRoaXMuZmlsZXNbMF0gOiBudWxsKSk7XHJcbiAgICB0aGlzLmZpbGVFdmVudC5lbWl0KHsgbWVzc2FnZTogJ2ZpbGVSZW1vdmVkJywgZGF0YTogZiB9KTtcclxuLy8gICAgIHRoaXMucGF0Y2hWYWx1ZXMoKTtcclxuICB9XHJcblxyXG4gIHBhdGNoVmFsdWVzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5wYXRjaGluZ1ZhbHVlcyA9IHRydWU7XHJcbiAgICAvLyBpZiAodGhpcy5pbnB1dEFycmF5KSB7XHJcbiAgICAvLyAgIHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5maWxlcy5tYXAoZiA9PiBmLmN1c3RvbSkpO1xyXG4gICAgLy8gfSBlbHNlIHtcclxuICAgIC8vICAgdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZpbGVzLmxlbmd0aCA9PT0gMCA/IG51bGwgOiB0aGlzLmZpbGVzWzBdLmN1c3RvbSk7XHJcbiAgICAvLyB9XHJcbiAgICB0aGlzLnBhdGNoaW5nVmFsdWVzID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXQgaGFzRmlsZXNUb1VwbG9hZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIXRoaXMuZmlsZXMuZmluZChmID0+IGYuJG5ld0ZpbGUgJiYgZi4kbmV3RmlsZS5wcm9ncmVzcy5zdGF0dXMgIT09IDIpO1xyXG4gIH1cclxuXHJcbiAgY2FuSW1hZ2VQcmV2aWV3KHR5cGU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHR5cGUuc3RhcnRzV2l0aCgnaW1hZ2UvJykgfHwgdHlwZS5zdGFydHNXaXRoKCd2aWRlby8nKTtcclxuICB9XHJcblxyXG4gIG9uVXBsb2FkT3V0cHV0KCRldmVudDogVXBsb2FkT3V0cHV0LCBza2lwQ3VzdG9tVmFsaWRhdGlvbiA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygkZXZlbnQpO1xyXG4gICAgc3dpdGNoICgkZXZlbnQudHlwZSkge1xyXG4gICAgICBjYXNlICdzdGFydCc6XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlICdkcmFnT3Zlcic6XHJcbiAgICAgICAgdGhpcy5kcmFnZ2luZyA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2RyYWdPdXQnOlxyXG4gICAgICBjYXNlICdkcm9wJzpcclxuICAgICAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlICdhZGRlZFRvUXVldWUnOlxyXG4gICAgICAgIGlmICh0aGlzLmNyb3AgJiYgISRldmVudC5maWxlLnR5cGUuc3RhcnRzV2l0aCgnaW1hZ2UvJykpIHtcclxuICAgICAgICAgIHRoaXMudXBsb2FkSW5wdXQuZW1pdCh7IHR5cGU6ICdyZW1vdmUnLCBpZDogJGV2ZW50LmZpbGUuaWQgfSk7XHJcbiAgICAgICAgICB0aGlzLmZpbGVFdmVudC5lbWl0KHsgbWVzc2FnZTogJ2Nyb3BJbnZhbGlkRmlsZVR5cGUnLCBkYXRhOiAkZXZlbnQuZmlsZSB9KTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghc2tpcEN1c3RvbVZhbGlkYXRpb24gJiYgdGhpcy5maWxlU2VydmljZUNvbmZpZy5maWxlVmFsaWRhdGlvbikge1xyXG4gICAgICAgICAgdGhpcy5maWxlU2VydmljZUNvbmZpZy5maWxlVmFsaWRhdGlvbih0aGlzLmZpbGVTaXplLCAkZXZlbnQuZmlsZSkudGhlbih2YWxpZCA9PiB7XHJcbiAgICAgICAgICAgIGlmICh2YWxpZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMub25VcGxvYWRPdXRwdXQoJGV2ZW50LCB0cnVlKVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMudXBsb2FkSW5wdXQuZW1pdCh7IHR5cGU6ICdyZW1vdmUnLCBpZDogJGV2ZW50LmZpbGUuaWQgfSk7XHJcbiAgICAgICAgICAgICAgLy8gdGhpcy5maWxlRXZlbnQuZW1pdCh7IG1lc3NhZ2U6ICdjcm9wSW52YWxpZEZpbGVUeXBlJywgZGF0YTogJGV2ZW50LmZpbGUgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxldCBmO1xyXG4gICAgICAgICAgaWYgKHRoaXMuY2hhbmdlRmlsZUluZGV4ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgZiA9IHRoaXMuZmlsZXNbdGhpcy5jaGFuZ2VGaWxlSW5kZXhdO1xyXG4gICAgICAgICAgICBpZiAoZi4kbmV3RmlsZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMudXBsb2FkSW5wdXQuZW1pdCh7IHR5cGU6ICdyZW1vdmUnLCBpZDogZi4kbmV3RmlsZS5pZCB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmLiRuZXdGaWxlID0gJGV2ZW50LmZpbGU7XHJcbiAgICAgICAgICAgIGYuY3VzdG9tID0gJGV2ZW50LmZpbGU7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRmlsZUluZGV4ID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZiA9IHsgY3VzdG9tOiAkZXZlbnQuZmlsZSwgJG5ld0ZpbGU6ICRldmVudC5maWxlIH07XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm5ld0ZpbGVQb3NpdGlvbiA9PT0gJ2xhc3QnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5maWxlcy5wdXNoKGYpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuZmlsZXMudW5zaGlmdChmKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuY2FuSW1hZ2VQcmV2aWV3KCRldmVudC5maWxlLnR5cGUpKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNyb3ApIHtcclxuICAgICAgICAgICAgICB0aGlzLmNhbnZhc1JvdGF0aW9uWyRldmVudC5maWxlLmlkXSA9IDA7XHJcbiAgICAgICAgICAgICAgdGhpcy5jcm9wU291cmNlSW1hZ2VzWyRldmVudC5maWxlLmlkXSA9ICRldmVudC5maWxlLm5hdGl2ZUZpbGU7XHJcbiAgICAgICAgICAgICAgdGhpcy5jcm9wcGVySW1hZ2VMb2FkZWRbJGV2ZW50LmZpbGUuaWRdID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucHJlcGFyZVJlc3BvbnNlKCk7XHJcbiAgICAgICAgICB0aGlzLmZpbGVFdmVudC5lbWl0KHsgbWVzc2FnZTogJ2ZpbGVBZGRlZCcsIGRhdGE6IGYgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAnZG9uZSc6XHJcbiAgICAgICAgY29uc3QgZGYgPSB0aGlzLmZpbGVzLmZpbmQoZiA9PiBmLiRuZXdGaWxlID09PSAkZXZlbnQuZmlsZSk7XHJcbiAgICAgICAgaWYgKGRmKSB7XHJcbiAgICAgICAgICBpZiAoZGYuJG5ld0ZpbGUucmVzcG9uc2VTdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLmZpbGVzW3RoaXMuZmlsZXMuaW5kZXhPZihkZildLmN1c3RvbSA9IGRmLiRuZXdGaWxlLnJlc3BvbnNlO1xyXG4gICAgICAgICAgICBkZi4kbmV3RmlsZSA9IG51bGw7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnZXJyb3Igb24gdXBsb2FkJywgZGYuJGV2ZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLmhhc0ZpbGVzVG9VcGxvYWQpIHtcclxuICAgICAgICAgIHRoaXMucHJlcGFyZVJlc3BvbnNlKGZhbHNlKTtcclxuICAgICAgICAgIHRoaXMuZmlsZVNlcnZpY2UudXBsb2FkU3Vic2NyaXB0aW9uLm5leHQoe1xyXG4gICAgICAgICAgICBhY3Rpb246IHRoaXMuZmlsZXMuZmluZChmID0+ICEhZi4kbmV3RmlsZSkgPyAndXBsb2FkQ29udHJvbEZhaWxlZCcgOiAndXBsb2FkQ29udHJvbFN1Y2Nlc3MnXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcmVwYXJlUmVzcG9uc2UoZG9lbWl0ID0gdHJ1ZSkge1xyXG4gICAgaWYgKHRoaXMuaW5wdXRBcnJheSkge1xyXG4gICAgICBpZiAoIXRoaXMucmVzcG9uc2VGaWxlcykge1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VGaWxlcyA9IFtdO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVzcG9uc2VGaWxlcy5sZW5ndGggPSAwO1xyXG4gICAgICB0aGlzLmZpbGVzLmZvckVhY2goZiA9PiB0aGlzLnJlc3BvbnNlRmlsZXMucHVzaCh7Li4uZi5jdXN0b20sICRuZXdGaWxlOiBmLiRuZXdGaWxlfSkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuZmlsZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZUZpbGVzID0gbnVsbDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoIXRoaXMucmVzcG9uc2VGaWxlcykge1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zZUZpbGVzID0ge307XHJcbiAgICAgICAgfVxyXG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZmlsZXNbMF0uY3VzdG9tKS5mb3JFYWNoKGsgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zZUZpbGVzW2tdID0gdGhpcy5maWxlc1swXS5jdXN0b21ba107XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZUZpbGVzLiRuZXdGaWxlID0gdGhpcy5maWxlc1swXS4kbmV3RmlsZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGRvZW1pdCkge1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMucmVzcG9uc2VGaWxlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gY29uc29sZS5sb2coJ2VtaXQnLCB0aGlzLmZpbGVzWzFdLCB7IC4uLnRoaXMuZmlsZXNbMV0uY3VzdG9tLCAkbmV3RmlsZTogdGhpcy5maWxlc1sxXS4kbmV3RmlsZSB9KTtcclxuICAgIC8vIHRoaXMub25DaGFuZ2UodGhpcy5pbnB1dEFycmF5ID9cclxuICAgIC8vICAgdGhpcy5maWxlcy5tYXAoZiA9PiAoeyAuLi5mLmN1c3RvbSwgJG5ld0ZpbGU6IGYuJG5ld0ZpbGV9KSkgOlxyXG4gICAgLy8gICAodGhpcy5maWxlcy5sZW5ndGggPiAwID8geyAuLi50aGlzLmZpbGVzWzBdLmN1c3RvbSwgJG5ld0ZpbGU6IHRoaXMuZmlsZXNbMF0uJG5ld0ZpbGUgfSA6IG51bGwpKTtcclxuICAgIC8vIHRoaXMub25DaGFuZ2UodGhpcy5pbnB1dEFycmF5ID9cclxuICAgIC8vICAgdGhpcy5maWxlcyA6XHJcbiAgICAvLyAgICh0aGlzLmZpbGVzLmxlbmd0aCA+IDAgPyB0aGlzLmZpbGVzWzBdIDogbnVsbCkpO1xyXG4gIH1cclxuXHJcbiAgYmVmb3JlU2F2ZSgpIHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzLCByZWopID0+IHtcclxuICAgICAgdGhpcy5maWxlcy5mb3JFYWNoKGYgPT4ge1xyXG4gICAgICAgIGlmIChmLiRuZXdGaWxlICYmIGYuJG5ld0ZpbGUucHJvZ3Jlc3Muc3RhdHVzID09PSAyKSB7XHJcbiAgICAgICAgICBmLiRuZXdGaWxlLnByb2dyZXNzLnN0YXR1cyA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmNyb3AgJiYgZi4kbmV3RmlsZSAmJiAhdGhpcy5pbWFnZXNEb25lW2YuJG5ld0ZpbGUuaWRdKSB7XHJcbiAgICAgICAgICB0aGlzLmNyb3BwZXJEb25lKGYuJG5ld0ZpbGUuaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgcmVzKCdkb25lJyk7XHJcbiAgICAgIH0sIDI1MCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZmlsZUNoYW5nZUV2ZW50KGV2ZW50OiBhbnksIGY6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5jaGFuZ2VGaWxlSW5kZXggPSB0aGlzLmZpbGVzLmluZGV4T2YoZik7XHJcbiAgfVxyXG5cclxuICBzdGFydENyb3BQcmV2aWV3KGlkKSB7XHJcbiAgICBjbGVhclRpbWVvdXQodGhpcy5jcm9wUHJldmlld1RpbWVvdXRzW2lkXSk7XHJcbiAgICB0aGlzLnNob3dDcm9wUHJldmlld1tpZF0gPSAhIXRoaXMuY3JvcFNvdXJjZUltYWdlc1tpZF07XHJcbiAgfVxyXG5cclxuICBzdG9wQ3JvcFByZXZpZXcoaWQpIHtcclxuICAgIHRoaXMuY3JvcFByZXZpZXdUaW1lb3V0c1tpZF0gPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5zaG93Q3JvcFByZXZpZXdbaWRdID0gZmFsc2U7XHJcbiAgICB9LCAyNTApO1xyXG4gIH1cclxuXHJcbiAgem9vbUNyb3BwZWRJbWFnZShkaXIsIGlkKSB7XHJcbiAgICBsZXQgc2NhbGUgPSB0aGlzLnRyYW5zZm9ybVtpZF0uc2NhbGU7XHJcbiAgICBzY2FsZSArPSBkaXI7XHJcbiAgICBpZiAoc2NhbGUgPCAwLjEpIHtcclxuICAgICAgc2NhbGUgPSAwLjE7XHJcbiAgICB9XHJcbiAgICB0aGlzLnRyYW5zZm9ybVtpZF0gPSB7XHJcbiAgICAgIC4uLnRoaXMudHJhbnNmb3JtW2lkXSxcclxuICAgICAgc2NhbGVcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICByb3RhdGVDcm9wcGVkSW1hZ2UoZGlyLCBpZCkge1xyXG4gICAgdGhpcy5jYW52YXNSb3RhdGlvbltpZF0gKz0gZGlyO1xyXG4gICAgY29uc3QgZmxpcHBlZEggPSB0aGlzLnRyYW5zZm9ybVtpZF0uZmxpcEg7XHJcbiAgICBjb25zdCBmbGlwcGVkViA9IHRoaXMudHJhbnNmb3JtW2lkXS5mbGlwVjtcclxuICAgIHRoaXMudHJhbnNmb3JtW2lkXSA9IHtcclxuICAgICAgLi4udGhpcy50cmFuc2Zvcm1baWRdLFxyXG4gICAgICBmbGlwSDogZmxpcHBlZFYsXHJcbiAgICAgIGZsaXBWOiBmbGlwcGVkSFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIG9uSW1hZ2VDcm9wcGVkKGV2ZW50OiBJbWFnZUNyb3BwZWRFdmVudCwgaWQpIHtcclxuICAgIHRoaXMuY3JvcHBlZEltYWdlc1tpZF0gPSBldmVudC5iYXNlNjQ7XHJcbiAgICB0aGlzLmltYWdlQ3JvcHBlZC5lbWl0KGV2ZW50LmJhc2U2NCk7XHJcbiAgfVxyXG5cclxuICBpbWFnZUxvYWRlZChpZCkge1xyXG4gICAgdGhpcy5zaG93Q3JvcHBlciA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy50cmFuc2Zvcm1baWRdID0ge1xyXG4gICAgICAgIHNjYWxlOiAxXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNyb3BwZXJSZWFkeShzb3VyY2VJbWFnZURpbWVuc2lvbnM6IERpbWVuc2lvbnMsIGlkKSB7XHJcbiAgICB0aGlzLmNyb3BwZXJJbWFnZUxvYWRlZFtpZF0gPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgbG9hZEltYWdlRmFpbGVkKCkge1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlTWVudVZpc2liaWxpdHkoZikge1xyXG4gICAgdGhpcy5maWxlTWVudU9wZW5lZCA9IGY7XHJcbiAgfVxyXG5cclxuICBtZW51Q2xpY2soKSB7XHJcbiAgICB0aGlzLmZpbGVNZW51T3BlbmVkID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcblxyXG4gIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5wdXRBcnJheSA9IG9iaiBpbnN0YW5jZW9mIEFycmF5O1xyXG4gICAgaWYgKHRoaXMuaW5wdXRBcnJheSkge1xyXG4gICAgICB0aGlzLmZpbGVzID0gb2JqLm1hcChmID0+ICh7IGN1c3RvbTogZiwgJG5ld0ZpbGU6IG51bGwgfSkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5maWxlcyA9IG9iaiA/IFsgeyBjdXN0b206b2JqLCAkbmV3RmlsZTogbnVsbH0gXSA6IFtdO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jcm9wU291cmNlSW1hZ2VzID0ge307XHJcbiAgfVxyXG5cclxuICBjcm9wcGVyRG9uZShpZCkge1xyXG4gICAgY29uc3QgZiA9IHRoaXMuZmlsZXMuZmluZChmeCA9PiBmeC4kbmV3RmlsZSAmJiBmeC4kbmV3RmlsZS5pZCA9PT0gaWQpO1xyXG4gICAgaWYgKGYpIHtcclxuICAgICAgY29uc3QgdXJsID0gdGhpcy5jcm9wcGVkSW1hZ2VzW2lkXTtcclxuICAgICAgZmV0Y2godXJsKVxyXG4gICAgICAgIC50aGVuKHJlcyA9PiByZXMuYmxvYigpKVxyXG4gICAgICAgIC50aGVuKGJsb2IgPT4ge1xyXG4gICAgICAgICAgZi4kbmV3RmlsZS5uYXRpdmVGaWxlID0gbmV3IEZpbGUoWyBibG9iIF0sICdjcm9wLnBuZycsIHtcclxuICAgICAgICAgICAgdHlwZTogJ2ltYWdlL3BuZydcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgZi4kbmV3RmlsZS5uYW1lID0gJ2Nyb3AucG5nJztcclxuICAgICAgICAgIGYuJG5ld0ZpbGUuc2l6ZSA9IGYuJG5ld0ZpbGUubmF0aXZlRmlsZS5zaXplO1xyXG4gICAgICAgICAgZi4kbmV3RmlsZS50eXBlID0gZi4kbmV3RmlsZS5uYXRpdmVGaWxlLnR5cGU7XHJcbiAgICAgICAgICB0aGlzLmltYWdlc0RvbmVbaWRdID0gdHJ1ZTtcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibGFiZWxcIiAqbmdJZj1cImxhYmVsXCI+XHJcbiAgPGRpdiBjbGFzcz1cInRleHQtY29udGFpbmVyXCIgW21hdFRvb2x0aXBdPVwicmVxdWlyZWQgPyB0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ3VpLmNvbnRyb2xzLnZhbGlkYXRpb24ucmVxdWlyZWQnKSA6IHVuZGVmaW5lZFwiIFttYXRUb29sdGlwUG9zaXRpb25dPVwiJ2Fib3ZlJ1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cInRleHRcIj57e2xhYmVsfX08L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJyZXF1aXJlZFwiIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cImZpbGVzLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cIntkcmFnZ2luZzogZHJhZ2dpbmcsIGRpc2FibGVkOiB1cGxvYWRpbmcgfHwgIWVkaXRhYmxlfVwiPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiZXhpc3RpbmctZmlsZXNcIj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZmlsZS1jb250YWluZXJcIiAqbmdGb3I9XCJsZXQgZiBvZiBmaWxlc1wiPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbGUtbWVudVwiIChjbGljayk9XCJ0b2dnbGVNZW51VmlzaWJpbGl0eShmKVwiICpuZ0lmPVwiIWN1c3RvbUZpbGVNZW51ICYmIGVkaXRhYmxlICYmICF1cGxvYWRpbmdcIj5cclxuICAgICAgICA8bWF0LWljb24+bWVudTwvbWF0LWljb24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1tZW51LWNvbnRhaW5lciBtYXQtZWxldmF0aW9uLXoyXCIgW25nQ2xhc3NdPVwie3Zpc2libGU6IGYgPT09IGZpbGVNZW51T3BlbmVkfVwiIChjbGljayk9XCJtZW51Q2xpY2soKVwiIChtb3VzZWxlYXZlKT1cIm1lbnVDbGljaygpXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtZW51VGVtcGxhdGVcIj5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm1lbnUtaXRlbVwiPnt7IHRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgndWkuY29udHJvbHMudWktZmlsZS11cGxvYWRlci5tZW51LmNoYW5nZScpIH19XHJcbiAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cIiFyZWZyZXNoQWRkSW5wdXRcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgdHlwZT1cImZpbGVcIiBuZ0ZpbGVTZWxlY3QgW29wdGlvbnNdPVwidXBsb2FkT3B0aW9uc1wiIChjaGFuZ2UpPVwiZmlsZUNoYW5nZUV2ZW50KCRldmVudCwgZilcIlxyXG4gICAgICAgICAgICAgICAgICAgKHVwbG9hZE91dHB1dCk9XCJvblVwbG9hZE91dHB1dCgkZXZlbnQpXCIgW3VwbG9hZElucHV0XT1cInVwbG9hZElucHV0XCI+XHJcbiAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtaXRlbVwiIChjbGljayk9XCJyZW1vdmUoZilcIj57eyB0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ3VpLmNvbnRyb2xzLnVpLWZpbGUtdXBsb2FkZXIubWVudS5kZWxldGUnKSB9fTwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZW51VGVtcGxhdGVcIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJtZW51VGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2ZpbGVJbnB1dDogZmlsZUlucHV0fVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2ZpbGVJbnB1dD5cclxuICAgICAgICAgIDxpbnB1dCBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgdHlwZT1cImZpbGVcIiBuZ0ZpbGVTZWxlY3QgW29wdGlvbnNdPVwidXBsb2FkT3B0aW9uc1wiIChjaGFuZ2UpPVwiZmlsZUNoYW5nZUV2ZW50KCRldmVudCwgZilcIlxyXG4gICAgICAgICAgICAgICAgICh1cGxvYWRPdXRwdXQpPVwib25VcGxvYWRPdXRwdXQoJGV2ZW50KVwiIFt1cGxvYWRJbnB1dF09XCJ1cGxvYWRJbnB1dFwiPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiY3JvcCAmJiAhY3JvcERvbmUoZilcIiAobW91c2VlbnRlcik9XCJzdGFydENyb3BQcmV2aWV3KGYuJG5ld0ZpbGUuaWQpXCIgKG1vdXNlbGVhdmUpPVwic3RvcENyb3BQcmV2aWV3KGYuJG5ld0ZpbGUuaWQpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNyb3AtY29udGFpbmVyXCIgW25nU3R5bGVdPVwibmdBZGRTdHlsZVwiPlxyXG5cclxuICAgICAgICAgIDx1aS1maWxlICpuZ0lmPVwiZmFsc2UgJiYgZmlsZXMubGVuZ3RoID4gMCAmJiAhY3JvcFNvdXJjZUltYWdlc1wiIFtmaWxlU2l6ZV09XCJmaWxlU2l6ZVwiIFtzcmNEYXRhXT1cImZpbGVzWzBdLmN1c3RvbVwiIFtuZ0NsYXNzXT1cIntyb3VuZGVkOiBjcm9wUm91bmRlZH1cIj48L3VpLWZpbGU+XHJcblxyXG4gICAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiIWNyb3BwZXJJbWFnZUxvYWRlZFtmLiRuZXdGaWxlLmlkXSAmJiBjcm9wU291cmNlSW1hZ2VzW2YuJG5ld0ZpbGUuaWRdXCIgW2RpYW1ldGVyXT1cIjc1XCI+PC9tYXQtc3Bpbm5lcj5cclxuXHJcbiAgICAgICAgICA8aW1hZ2UtY3JvcHBlciAqbmdJZj1cImNyb3BTb3VyY2VJbWFnZXNbZi4kbmV3RmlsZS5pZF1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2ltYWdlRmlsZV09XCJjcm9wU291cmNlSW1hZ2VzW2YuJG5ld0ZpbGUuaWRdXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFttYWludGFpbkFzcGVjdFJhdGlvXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRhaW5XaXRoaW5Bc3BlY3RSYXRpb109XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbYXNwZWN0UmF0aW9dPVwiYXNwZWN0UmF0aW9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3Jlc2l6ZVRvV2lkdGhdPVwiY3JvcE1heFdpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtvbmx5U2NhbGVEb3duXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3VuZENyb3BwZXJdPVwiY3JvcFJvdW5kZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2NhbnZhc1JvdGF0aW9uXT1cImNhbnZhc1JvdGF0aW9uW2YuJG5ld0ZpbGUuaWRdXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFt0cmFuc2Zvcm1dPVwidHJhbnNmb3JtW2YuJG5ld0ZpbGUuaWRdXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFthbGlnbkltYWdlXT1cIidjZW50ZXInXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cInNob3dDcm9wcGVyID8gbnVsbCA6ICdub25lJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybWF0XT1cIidwbmcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIChpbWFnZUNyb3BwZWQpPVwib25JbWFnZUNyb3BwZWQoJGV2ZW50LCBmLiRuZXdGaWxlLmlkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoaW1hZ2VMb2FkZWQpPVwiaW1hZ2VMb2FkZWQoZi4kbmV3RmlsZS5pZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGNyb3BwZXJSZWFkeSk9XCJjcm9wcGVyUmVhZHkoJGV2ZW50LCBmLiRuZXdGaWxlLmlkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAobG9hZEltYWdlRmFpbGVkKT1cImxvYWRJbWFnZUZhaWxlZCgpXCJcclxuICAgICAgICAgID48L2ltYWdlLWNyb3BwZXI+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNyb3AtcHJldmlldyBtYXQtZWxldmF0aW9uLXoyXCIgW2NsYXNzXT1cInByZXZpZXdQb3NpdGlvblwiICpuZ0lmPVwidHJ1ZSB8fCAoc2hvd0Nyb3BQcmV2aWV3W2YuJG5ld0ZpbGUuaWRdICYmIGNyb3BwZXJJbWFnZUxvYWRlZFtmLiRuZXdGaWxlLmlkXSlcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNyb3AtbWVudVwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbiAoY2xpY2spPVwiem9vbUNyb3BwZWRJbWFnZSguMSwgZi4kbmV3RmlsZS5pZClcIj56b29tX2luPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24gKGNsaWNrKT1cInpvb21Dcm9wcGVkSW1hZ2UoLSAuMSwgZi4kbmV3RmlsZS5pZClcIj56b29tX291dDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uIChjbGljayk9XCJyb3RhdGVDcm9wcGVkSW1hZ2UoLTEsIGYuJG5ld0ZpbGUuaWQpXCI+cm90YXRlX2xlZnQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbiAoY2xpY2spPVwicm90YXRlQ3JvcHBlZEltYWdlKDEsIGYuJG5ld0ZpbGUuaWQpXCI+cm90YXRlX3JpZ2h0PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleDogMSAxIDEwMCVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZW51LWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj51cGxvYWRfZmlsZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIHR5cGU9XCJmaWxlXCIgbmdGaWxlU2VsZWN0IFtvcHRpb25zXT1cInVwbG9hZE9wdGlvbnNcIiAoY2hhbmdlKT1cImZpbGVDaGFuZ2VFdmVudCgkZXZlbnQsIGYpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAodXBsb2FkT3V0cHV0KT1cIm9uVXBsb2FkT3V0cHV0KCRldmVudClcIiBbdXBsb2FkSW5wdXRdPVwidXBsb2FkSW5wdXRcIj5cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbiAoY2xpY2spPVwicmVtb3ZlKGYpXCI+ZGVsZXRlX291dGxpbmU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJmbGV4OiAxIDEgMTAwJVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbiAoY2xpY2spPVwiY3JvcHBlckRvbmUoZi4kbmV3RmlsZS5pZClcIj5kb25lPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxpbWcgW3NyY109XCJjcm9wcGVkSW1hZ2VzW2YuJG5ld0ZpbGUuaWRdXCIgW25nQ2xhc3NdPVwie3JvdW5kZWQ6IGNyb3BSb3VuZGVkfVwiLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNyb3AgfHwgY3JvcERvbmUoZilcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsZVRlbXBsYXRlXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZmlsZVRlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntmaWxlOiBmLCBmaWxlSW5wdXQ6IGZpbGVJbnB1dDJ9XCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZmlsZUlucHV0Mj5cclxuICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiB0eXBlPVwiZmlsZVwiIG5nRmlsZVNlbGVjdCBbb3B0aW9uc109XCJ1cGxvYWRPcHRpb25zXCIgKGNoYW5nZSk9XCJmaWxlQ2hhbmdlRXZlbnQoJGV2ZW50LCBmKVwiXHJcbiAgICAgICAgICAgICAgICAgICAodXBsb2FkT3V0cHV0KT1cIm9uVXBsb2FkT3V0cHV0KCRldmVudClcIiBbdXBsb2FkSW5wdXRdPVwidXBsb2FkSW5wdXRcIj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDx1aS1maWxlICpuZ0lmPVwiIWZpbGVUZW1wbGF0ZVwiIFtmaWxlU2l6ZV09XCJmaWxlU2l6ZVwiIFtzcmNEYXRhXT1cImYuJG5ld0ZpbGUgPyBmLiRuZXdGaWxlOiBmLmN1c3RvbVwiIFtuZ0NsYXNzXT1cIntyb3VuZGVkOiBjcm9wICYmIGNyb3BSb3VuZGVkfVwiPlxyXG4gICAgICAgIDwvdWktZmlsZT5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImYuJG5ld0ZpbGVcIj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJmLiRuZXdGaWxlLnJlc3BvbnNlU3RhdHVzICYmIGYuJG5ld0ZpbGUucmVzcG9uc2VTdGF0dXMgIT09IDIwMFwiIGNsYXNzPVwicHJvZ3Jlc3MtY29udGFpbmVyIGVycm9yXCI+XHJcbiAgICAgICAgICAgIHt7IHRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgndWkuY29udHJvbHMudWktZmlsZS11cGxvYWRlci51cGxvYWRFcnJvcicsIGYuJG5ld0ZpbGUucmVzcG9uc2UpIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZi4kbmV3RmlsZS5yZXNwb25zZVN0YXR1cyAmJiBmLiRuZXdGaWxlLnByb2dyZXNzLnN0YXR1cyA9PT0gMVwiIGNsYXNzPVwicHJvZ3Jlc3MtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc1wiIFtuZ1N0eWxlXT1cInt3aWR0aDogZi4kbmV3RmlsZS5wcm9ncmVzcy5kYXRhLnBlcmNlbnRhZ2UgKyAnJSd9XCI+PC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJmaWxlLWNvbnRhaW5lciBhZGRcIiBuZ0ZpbGVEcm9wICBbb3B0aW9uc109XCJ1cGxvYWRPcHRpb25zXCIgKHVwbG9hZE91dHB1dCk9XCJvblVwbG9hZE91dHB1dCgkZXZlbnQpXCIgW3VwbG9hZElucHV0XT1cInVwbG9hZElucHV0XCIgW25nQ2xhc3NdPVwie3Zpc2libGU6IGZpbGVzLmxlbmd0aCA8IG1heEZpbGVzIHx8IG1heEZpbGVzID09PSAwfVwiIFtuZ1N0eWxlXT1cImFkZEZpbGVUZW1wbGF0ZSA/IHt9IDogbmdBZGRTdHlsZVwiPlxyXG4gICAgPGxhYmVsPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWRkRmlsZVRlbXBsYXRlXCI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImFkZEZpbGVUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWFkZEZpbGVUZW1wbGF0ZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtaW1hZ2UtY29udGFpbmVyXCI+PC9kaXY+XHJcbiAgICAgICAgPGltZyBbc3JjXT1cImFkZEZpbGVJbWdTcmNcIiBbbmdDbGFzc109XCJ7J3dpdGgtaGludCc6IGFkZEhpbnR9XCIgLz5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYWRkSGludFwiIGNsYXNzPVwiYWRkLWhpbnRcIj57e2FkZEhpbnR9fTwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPGlucHV0IHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiB0eXBlPVwiZmlsZVwiIG5nRmlsZVNlbGVjdCBbb3B0aW9uc109XCJ1cGxvYWRPcHRpb25zXCIgKHVwbG9hZE91dHB1dCk9XCJvblVwbG9hZE91dHB1dCgkZXZlbnQpXCIgW3VwbG9hZElucHV0XT1cInVwbG9hZElucHV0XCIgW211bHRpcGxlXT1cIm1heEZpbGVzID09PSAwICYmIG11bHRpcGxlXCI+XHJcbiAgICA8L2xhYmVsPlxyXG4gIDwvZGl2PlxyXG5cclxuPC9kaXY+XHJcbiJdfQ==
394
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktZmlsZS11cGxvYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2ZpbGUtdXBsb2FkZXIvdWktZmlsZS11cGxvYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2ZpbGUtdXBsb2FkZXIvdWktZmlsZS11cGxvYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixJQUFJLEVBQ0osTUFBTSxFQUNOLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFFBQVEsRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW9CLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckUsT0FBTyxFQUEwQyxjQUFjLEVBQWlCLE1BQU0sNkJBQTZCLENBQUM7QUFFcEgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUF1QixtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7Ozs7OztBQTJCNUYsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGlCQUFpQjtJQWdFNUQsWUFBd0QsaUJBQWlDLEVBQ3pDLGdCQUFxQyxFQUMvQixnQkFBa0MsRUFDcEUsV0FBMEI7UUFFNUMsS0FBSyxDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBTHdCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBZ0I7UUFDekMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFxQjtRQUMvQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ3BFLGdCQUFXLEdBQVgsV0FBVyxDQUFlO1FBakVyQyxhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNoQixTQUFJLEdBQUcsS0FB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Vm5DLFNBQVM7K0JBQ0Usa0JBQWtCLGFBR2pCLENBQUM7NEJBQ1YsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsS0FBSyxFQUFFLElBQUk7NEJBQ1gsV0FBVyx5QkFBeUI7eUJBQ3JDLENBQUM7OzBCQWtFVyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGNBQWM7OzBCQUNqQyxNQUFNOzJCQUFDLG1CQUFtQjs7MEJBQzFCLFFBQVE7OzBCQUFJLElBQUk7OzBCQUFJLFFBQVE7d0VBaEVoQyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFjRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVJLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0LFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE9wdGlvbmFsLFxyXG4gIE91dHB1dCxcclxuICBTa2lwU2VsZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sQ29udGFpbmVyLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVXBsb2FkZXJPcHRpb25zLCBVcGxvYWRGaWxlLCBVcGxvYWRJbnB1dCwgVXBsb2FkT3V0cHV0IH0gZnJvbSAnbmd4LXVwbG9hZGVyJztcclxuaW1wb3J0IHsgSVVpRmlsZVNlcnZpY2UsIElVaUZpbGVTZXJ2aWNlTWVzc2FnZXMsIFVJX0ZJTEVTRVJWSUNFLCBVaUZpbGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdWktZmlsZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGltZW5zaW9ucywgSW1hZ2VDcm9wcGVkRXZlbnQsIEltYWdlVHJhbnNmb3JtIH0gZnJvbSAnbmd4LWltYWdlLWNyb3BwZXInO1xyXG5pbXBvcnQgeyBVaVNpbXBsZUNvbXBvbmVudCB9IGZyb20gJy4uL3NpbXBsZS91aS1zaW1wbGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSVVpVHJhbnNsYXRlU2VydmljZSwgVUlfVFJBTlNMQVRFU0VSVklDRSB9IGZyb20gJy4uL3NlcnZpY2VzL3VpLXRyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgc2tpcCB9IGZyb20gJ3J4anMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBVcGxvYWRPdXRwdXRFeCBleHRlbmRzIFVwbG9hZE91dHB1dCB7XHJcbiAgZmlsZTogVXBsb2FkRmlsZUV4O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFVwbG9hZEZpbGVFeCBleHRlbmRzIFVwbG9hZEZpbGUge1xyXG4gIGltYWdlUHJldmlldz86IGFueTtcclxuICBiYXNlNjQ/OiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVVpVXBsb2FkZXJVc2VyTWVzc2FnZSB7XHJcbiAgbWVzc2FnZTogSVVpRmlsZVNlcnZpY2VNZXNzYWdlcyxcclxuICBkYXRhOiBhbnlcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd1aS1maWxlLXVwbG9hZGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdWktZmlsZS11cGxvYWRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbICcuL3VpLWZpbGUtdXBsb2FkZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFt7XHJcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgIG11bHRpOiB0cnVlLFxyXG4gICAgdXNlRXhpc3Rpbmc6IFVpRmlsZVVwbG9hZGVyQ29tcG9uZW50LFxyXG4gIH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVaUZpbGVVcGxvYWRlckNvbXBvbmVudCBleHRlbmRzIFVpU2ltcGxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBASW5wdXQoKSBtYXhGaWxlcyA9IDE7XHJcbiAgQElucHV0KCkgbXVsdGlwbGUgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGNyb3AgPSBmYWxzZTtcclxuICBASW5wdXQoKSBjcm9wUm91bmRlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGNyb3BNYXhXaWR0aDtcclxuICBASW5wdXQoKSBmaWxlU2l6ZSA9ICdkZWZhdWx0JztcclxuICBASW5wdXQoKSBjdXN0b21GaWxlTWVudSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGFkZEhpbnQ7XHJcbiAgQElucHV0KCkgbmV3RmlsZVBvc2l0aW9uOiAnZmlyc3QnIHwgJ2xhc3QnID0gJ2xhc3QnO1xyXG5cclxuICBASW5wdXQoKSB0ZW1wbGF0ZXM6IHsgbWVudVRlbXBsYXRlPzogYW55LCBhZGRGaWxlVGVtcGxhdGU/OiBhbnksIGZpbGVUZW1wbGF0ZT86IGFueSB9ID0ge31cclxuXHJcbiAgZ2V0IG1lbnVUZW1wbGF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnRlbXBsYXRlcz8ubWVudVRlbXBsYXRlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFkZEZpbGVUZW1wbGF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnRlbXBsYXRlcz8uYWRkRmlsZVRlbXBsYXRlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGZpbGVUZW1wbGF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnRlbXBsYXRlcz8uZmlsZVRlbXBsYXRlO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgcHJldmlld1Bvc2l0aW9uOiAnbGVmdCcgfCAnYm90dG9tJyB8ICdhYm92ZScgPSAnYm90dG9tJztcclxuXHJcbiAgQE91dHB1dCgpIGltYWdlQ3JvcHBlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZmlsZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxJVWlVcGxvYWRlclVzZXJNZXNzYWdlPigpO1xyXG5cclxuICB1cGxvYWRPcHRpb25zOiBVcGxvYWRlck9wdGlvbnMgPSB7XHJcbiAgICBjb25jdXJyZW5jeTogdGhpcy5maWxlU2VydmljZUNvbmZpZy5jb25jdXJyZW50VXBsb2Fkc1xyXG4gIH07XHJcblxyXG4gIHB1YmxpYyB1cGxvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgY2hhbmdlRmlsZUluZGV4O1xyXG5cclxuICBzaG93Q3JvcHBlciA9IGZhbHNlO1xyXG4gIG1lbnVWaXNpYmxlOiBhbnk7XHJcbiAgc2hvd0Nyb3BQcmV2aWV3ID0ge307XHJcbiAgY3JvcFByZXZpZXdUaW1lb3V0cyA9IHt9O1xyXG4gIGNyb3BTb3VyY2VJbWFnZXMgPSB7fTtcclxuICBjcm9wcGVySW1hZ2VMb2FkZWQgPSB7fTtcclxuICBpbWFnZXNEb25lID0ge307XHJcbiAgdHJhbnNmb3JtOiBJbWFnZVRyYW5zZm9ybSA9IHt9O1xyXG4gIGNhbnZhc1JvdGF0aW9uID0ge31cclxuXHJcbiAgcHVibGljIGZpbGVzIDogeyBjdXN0b20/OiBhbnksICRuZXdGaWxlPzogVXBsb2FkRmlsZSB9W107XHJcblxyXG4gIHB1YmxpYyByZXNwb25zZUZpbGVzO1xyXG5cclxuICByZWZyZXNoQWRkSW5wdXQgPSBmYWxzZTtcclxuXHJcbiAgZmlsZU1lbnVPcGVuZWQ7XHJcblxyXG4gIHBhdGNoaW5nVmFsdWVzID0gZmFsc2U7XHJcblxyXG4gIGlucHV0QXJyYXkgPSBmYWxzZTtcclxuICBkcmFnZ2luZyA9IGZhbHNlO1xyXG5cclxuICB1cGxvYWRlcklkID0gTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogMTAwMDAwMCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoVUlfRklMRVNFUlZJQ0UpIHByaXZhdGUgZmlsZVNlcnZpY2VDb25maWc6IElVaUZpbGVTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIEBJbmplY3QoVUlfVFJBTlNMQVRFU0VSVklDRSkgcHVibGljIHRyYW5zbGF0ZVNlcnZpY2U6IElVaVRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEhvc3QoKSBAU2tpcFNlbGYoKSBwcm90ZWN0ZWQgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcclxuICAgICAgICAgICAgICBwcml2YXRlIGZpbGVTZXJ2aWNlOiBVaUZpbGVTZXJ2aWNlKSB7XHJcblxyXG4gICAgc3VwZXIobnVsbCwgY29udHJvbENvbnRhaW5lcik7XHJcblxyXG4gICAgdGhpcy5maWxlU2VydmljZS51cGxvYWRTdWJzY3JpcHRpb24ubmV4dCh7YWN0aW9uOiAncmVnaXN0ZXInLCBkYXRhOiB0aGlzfSk7XHJcblxyXG4gICAgdGhpcy5maWxlU2VydmljZS51cGxvYWRTdWJzY3JpcHRpb24uc3Vic2NyaWJlKCh2OiBhbnkpID0+IHtcclxuICAgICAgc3dpdGNoICh2LmFjdGlvbikge1xyXG4gICAgICAgIGNhc2UgJ3VwbG9hZFN0YXJ0ZWQnOiB0aGlzLnVwbG9hZGluZyA9IHRydWU7IGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3VwbG9hZEZhaWxlZCc6XHJcbiAgICAgICAgY2FzZSAndXBsb2FkU3VjY2Vzcyc6XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy51cGxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5wYXRjaFZhbHVlcygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldCB1cGxvYWRJbnB1dCgpOiBFdmVudEVtaXR0ZXI8VXBsb2FkSW5wdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmZpbGVTZXJ2aWNlLnVwbG9hZElucHV0O1xyXG4gIH1cclxuXHJcbiAgY3JvcHBlZEltYWdlcyA9IHt9O1xyXG5cclxuICBnZXQgZWRpdGFibGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC5lbmFibGVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG5nQWRkU3R5bGUoKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB3aWR0aDogTWF0aC5hYnModGhpcy5maWxlU2VydmljZUNvbmZpZy5pbWFnZVNpemVzW3RoaXMuZmlsZVNpemVdWzBdKSArICdweCcsXHJcbiAgICAgIGhlaWdodDogTWF0aC5hYnModGhpcy5maWxlU2VydmljZUNvbmZpZy5pbWFnZVNpemVzW3RoaXMuZmlsZVNpemVdWzFdKSArICdweCcsXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgYXNwZWN0UmF0aW8oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5maWxlU2VydmljZUNvbmZpZy5pbWFnZVNpemVzW3RoaXMuZmlsZVNpemVdWzBdIC8gdGhpcy5maWxlU2VydmljZUNvbmZpZy5pbWFnZVNpemVzW3RoaXMuZmlsZVNpemVdWzFdO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFkZEZpbGVJbWdTcmMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5maWxlU2VydmljZUNvbmZpZy5hZGRGaWxlSW1nU3JjO1xyXG4gIH1cclxuXHJcbiAgY3JvcERvbmUoZikge1xyXG4gICAgcmV0dXJuICFmLiRuZXdGaWxlIHx8IHRoaXMuaW1hZ2VzRG9uZVtmLiRuZXdGaWxlLmlkXTtcclxuICB9XHJcblxyXG4gIC8vIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIC8vICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAvLyB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5maWxlU2VydmljZS51cGxvYWRTdWJzY3JpcHRpb24ubmV4dCh7YWN0aW9uOiAnZGVzdHJveScsIGRhdGE6IHRoaXN9KTtcclxuICB9XHJcblxyXG4gIHJlbW92ZShmOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChmLiRuZXdGaWxlKSB7XHJcbiAgICAgIHRoaXMudXBsb2FkSW5wdXQuZW1pdCh7dHlwZTogJ3JlbW92ZScsIGlkOiBmLiRuZXdGaWxlLmlkfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmZpbGVzLnNwbGljZSh0aGlzLmZpbGVzLmluZGV4T2YoZiksIDEpO1xyXG4gICAgdGhpcy5wcmVwYXJlUmVzcG9uc2UoKTtcclxuICAgIC8vIHRoaXMub25DaGFuZ2UodGhpcy5pbnB1dEFycmF5ID8gdGhpcy5maWxlcyA6ICh0aGlzLmZpbGVzLmxlbmd0aCA+IDAgPyB0aGlzLmZpbGVzWzBdIDogbnVsbCkpO1xyXG4gICAgdGhpcy5maWxlRXZlbnQuZW1pdCh7IG1lc3NhZ2U6ICdmaWxlUmVtb3ZlZCcsIGRhdGE6IGYgfSk7XHJcbi8vICAgICB0aGlzLnBhdGNoVmFsdWVzKCk7XHJcbiAgfVxyXG5cclxuICBwYXRjaFZhbHVlcygpOiB2b2lkIHtcclxuICAgIHRoaXMucGF0Y2hpbmdWYWx1ZXMgPSB0cnVlO1xyXG4gICAgLy8gaWYgKHRoaXMuaW5wdXRBcnJheSkge1xyXG4gICAgLy8gICB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuZmlsZXMubWFwKGYgPT4gZi5jdXN0b20pKTtcclxuICAgIC8vIH0gZWxzZSB7XHJcbiAgICAvLyAgIHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5maWxlcy5sZW5ndGggPT09IDAgPyBudWxsIDogdGhpcy5maWxlc1swXS5jdXN0b20pO1xyXG4gICAgLy8gfVxyXG4gICAgdGhpcy5wYXRjaGluZ1ZhbHVlcyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhhc0ZpbGVzVG9VcGxvYWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLmZpbGVzLmZpbmQoZiA9PiBmLiRuZXdGaWxlICYmIGYuJG5ld0ZpbGUucHJvZ3Jlc3Muc3RhdHVzICE9PSAyKTtcclxuICB9XHJcblxyXG4gIGNhbkltYWdlUHJldmlldyh0eXBlOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0eXBlLnN0YXJ0c1dpdGgoJ2ltYWdlLycpIHx8IHR5cGUuc3RhcnRzV2l0aCgndmlkZW8vJyk7XHJcbiAgfVxyXG5cclxuICBvblVwbG9hZE91dHB1dCgkZXZlbnQ6IFVwbG9hZE91dHB1dCwgc2tpcEN1c3RvbVZhbGlkYXRpb24gPSBmYWxzZSk6IHZvaWQge1xyXG4gICAgLy8gY29uc29sZS5sb2coJGV2ZW50KTtcclxuICAgIHN3aXRjaCAoJGV2ZW50LnR5cGUpIHtcclxuICAgICAgY2FzZSAnc3RhcnQnOlxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAnZHJhZ092ZXInOlxyXG4gICAgICAgIHRoaXMuZHJhZ2dpbmcgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdkcmFnT3V0JzpcclxuICAgICAgY2FzZSAnZHJvcCc6XHJcbiAgICAgICAgdGhpcy5kcmFnZ2luZyA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAnYWRkZWRUb1F1ZXVlJzpcclxuICAgICAgICBpZiAodGhpcy5jcm9wICYmICEkZXZlbnQuZmlsZS50eXBlLnN0YXJ0c1dpdGgoJ2ltYWdlLycpKSB7XHJcbiAgICAgICAgICB0aGlzLnVwbG9hZElucHV0LmVtaXQoeyB0eXBlOiAncmVtb3ZlJywgaWQ6ICRldmVudC5maWxlLmlkIH0pO1xyXG4gICAgICAgICAgdGhpcy5maWxlRXZlbnQuZW1pdCh7IG1lc3NhZ2U6ICdjcm9wSW52YWxpZEZpbGVUeXBlJywgZGF0YTogJGV2ZW50LmZpbGUgfSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXNraXBDdXN0b21WYWxpZGF0aW9uICYmIHRoaXMuZmlsZVNlcnZpY2VDb25maWcuZmlsZVZhbGlkYXRpb24pIHtcclxuICAgICAgICAgIHRoaXMuZmlsZVNlcnZpY2VDb25maWcuZmlsZVZhbGlkYXRpb24odGhpcy5maWxlU2l6ZSwgJGV2ZW50LmZpbGUpLnRoZW4odmFsaWQgPT4ge1xyXG4gICAgICAgICAgICBpZiAodmFsaWQpIHtcclxuICAgICAgICAgICAgICB0aGlzLm9uVXBsb2FkT3V0cHV0KCRldmVudCwgdHJ1ZSlcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnVwbG9hZElucHV0LmVtaXQoeyB0eXBlOiAncmVtb3ZlJywgaWQ6ICRldmVudC5maWxlLmlkIH0pO1xyXG4gICAgICAgICAgICAgIC8vIHRoaXMuZmlsZUV2ZW50LmVtaXQoeyBtZXNzYWdlOiAnY3JvcEludmFsaWRGaWxlVHlwZScsIGRhdGE6ICRldmVudC5maWxlIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBsZXQgZjtcclxuICAgICAgICAgIGlmICh0aGlzLmNoYW5nZUZpbGVJbmRleCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGYgPSB0aGlzLmZpbGVzW3RoaXMuY2hhbmdlRmlsZUluZGV4XTtcclxuICAgICAgICAgICAgaWYgKGYuJG5ld0ZpbGUpIHtcclxuICAgICAgICAgICAgICB0aGlzLnVwbG9hZElucHV0LmVtaXQoeyB0eXBlOiAncmVtb3ZlJywgaWQ6IGYuJG5ld0ZpbGUuaWQgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZi4kbmV3RmlsZSA9ICRldmVudC5maWxlO1xyXG4gICAgICAgICAgICBmLmN1c3RvbSA9ICRldmVudC5maWxlO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZUZpbGVJbmRleCA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGYgPSB7IGN1c3RvbTogJGV2ZW50LmZpbGUsICRuZXdGaWxlOiAkZXZlbnQuZmlsZSB9O1xyXG4gICAgICAgICAgICBpZiAodGhpcy5uZXdGaWxlUG9zaXRpb24gPT09ICdsYXN0Jykge1xyXG4gICAgICAgICAgICAgIHRoaXMuZmlsZXMucHVzaChmKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmZpbGVzLnVuc2hpZnQoZik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLmNhbkltYWdlUHJldmlldygkZXZlbnQuZmlsZS50eXBlKSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jcm9wKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jYW52YXNSb3RhdGlvblskZXZlbnQuZmlsZS5pZF0gPSAwO1xyXG4gICAgICAgICAgICAgIHRoaXMuY3JvcFNvdXJjZUltYWdlc1skZXZlbnQuZmlsZS5pZF0gPSAkZXZlbnQuZmlsZS5uYXRpdmVGaWxlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY3JvcHBlckltYWdlTG9hZGVkWyRldmVudC5maWxlLmlkXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnByZXBhcmVSZXNwb25zZSgpO1xyXG4gICAgICAgICAgdGhpcy5maWxlRXZlbnQuZW1pdCh7IG1lc3NhZ2U6ICdmaWxlQWRkZWQnLCBkYXRhOiBmIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJ2RvbmUnOlxyXG4gICAgICAgIGNvbnN0IGRmID0gdGhpcy5maWxlcy5maW5kKGYgPT4gZi4kbmV3RmlsZSA9PT0gJGV2ZW50LmZpbGUpO1xyXG4gICAgICAgIGlmIChkZikge1xyXG4gICAgICAgICAgaWYgKGRmLiRuZXdGaWxlLnJlc3BvbnNlU3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5maWxlc1t0aGlzLmZpbGVzLmluZGV4T2YoZGYpXS5jdXN0b20gPSBkZi4kbmV3RmlsZS5yZXNwb25zZTtcclxuICAgICAgICAgICAgZGYuJG5ld0ZpbGUgPSBudWxsO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ2Vycm9yIG9uIHVwbG9hZCcsIGRmLiRldmVudCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5oYXNGaWxlc1RvVXBsb2FkKSB7XHJcbiAgICAgICAgICB0aGlzLnByZXBhcmVSZXNwb25zZShmYWxzZSk7XHJcbiAgICAgICAgICB0aGlzLmZpbGVTZXJ2aWNlLnVwbG9hZFN1YnNjcmlwdGlvbi5uZXh0KHtcclxuICAgICAgICAgICAgYWN0aW9uOiB0aGlzLmZpbGVzLmZpbmQoZiA9PiAhIWYuJG5ld0ZpbGUpID8gJ3VwbG9hZENvbnRyb2xGYWlsZWQnIDogJ3VwbG9hZENvbnRyb2xTdWNjZXNzJ1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJlcGFyZVJlc3BvbnNlKGRvZW1pdCA9IHRydWUpIHtcclxuICAgIGlmICh0aGlzLmlucHV0QXJyYXkpIHtcclxuICAgICAgaWYgKCF0aGlzLnJlc3BvbnNlRmlsZXMpIHtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRmlsZXMgPSBbXTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlc3BvbnNlRmlsZXMubGVuZ3RoID0gMDtcclxuICAgICAgdGhpcy5maWxlcy5mb3JFYWNoKGYgPT4gdGhpcy5yZXNwb25zZUZpbGVzLnB1c2goey4uLmYuY3VzdG9tLCAkbmV3RmlsZTogZi4kbmV3RmlsZX0pKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmZpbGVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VGaWxlcyA9IG51bGw7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnJlc3BvbnNlRmlsZXMpIHtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2VGaWxlcyA9IHt9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmZpbGVzWzBdLmN1c3RvbSkuZm9yRWFjaChrID0+IHtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2VGaWxlc1trXSA9IHRoaXMuZmlsZXNbMF0uY3VzdG9tW2tdO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VGaWxlcy4kbmV3RmlsZSA9IHRoaXMuZmlsZXNbMF0uJG5ld0ZpbGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChkb2VtaXQpIHtcclxuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnJlc3BvbnNlRmlsZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGNvbnNvbGUubG9nKCdlbWl0JywgdGhpcy5maWxlc1sxXSwgeyAuLi50aGlzLmZpbGVzWzFdLmN1c3RvbSwgJG5ld0ZpbGU6IHRoaXMuZmlsZXNbMV0uJG5ld0ZpbGUgfSk7XHJcbiAgICAvLyB0aGlzLm9uQ2hhbmdlKHRoaXMuaW5wdXRBcnJheSA/XHJcbiAgICAvLyAgIHRoaXMuZmlsZXMubWFwKGYgPT4gKHsgLi4uZi5jdXN0b20sICRuZXdGaWxlOiBmLiRuZXdGaWxlfSkpIDpcclxuICAgIC8vICAgKHRoaXMuZmlsZXMubGVuZ3RoID4gMCA/IHsgLi4udGhpcy5maWxlc1swXS5jdXN0b20sICRuZXdGaWxlOiB0aGlzLmZpbGVzWzBdLiRuZXdGaWxlIH0gOiBudWxsKSk7XHJcbiAgICAvLyB0aGlzLm9uQ2hhbmdlKHRoaXMuaW5wdXRBcnJheSA/XHJcbiAgICAvLyAgIHRoaXMuZmlsZXMgOlxyXG4gICAgLy8gICAodGhpcy5maWxlcy5sZW5ndGggPiAwID8gdGhpcy5maWxlc1swXSA6IG51bGwpKTtcclxuICB9XHJcblxyXG4gIGJlZm9yZVNhdmUoKSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlcywgcmVqKSA9PiB7XHJcbiAgICAgIHRoaXMuZmlsZXMuZm9yRWFjaChmID0+IHtcclxuICAgICAgICBpZiAoZi4kbmV3RmlsZSAmJiBmLiRuZXdGaWxlLnByb2dyZXNzLnN0YXR1cyA9PT0gMikge1xyXG4gICAgICAgICAgZi4kbmV3RmlsZS5wcm9ncmVzcy5zdGF0dXMgPSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5jcm9wICYmIGYuJG5ld0ZpbGUgJiYgIXRoaXMuaW1hZ2VzRG9uZVtmLiRuZXdGaWxlLmlkXSkge1xyXG4gICAgICAgICAgdGhpcy5jcm9wcGVyRG9uZShmLiRuZXdGaWxlLmlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHJlcygnZG9uZScpO1xyXG4gICAgICB9LCAyNTApO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGZpbGVDaGFuZ2VFdmVudChldmVudDogYW55LCBmOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuY2hhbmdlRmlsZUluZGV4ID0gdGhpcy5maWxlcy5pbmRleE9mKGYpO1xyXG4gIH1cclxuXHJcbiAgc3RhcnRDcm9wUHJldmlldyhpZCkge1xyXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuY3JvcFByZXZpZXdUaW1lb3V0c1tpZF0pO1xyXG4gICAgdGhpcy5zaG93Q3JvcFByZXZpZXdbaWRdID0gISF0aGlzLmNyb3BTb3VyY2VJbWFnZXNbaWRdO1xyXG4gIH1cclxuXHJcbiAgc3RvcENyb3BQcmV2aWV3KGlkKSB7XHJcbiAgICB0aGlzLmNyb3BQcmV2aWV3VGltZW91dHNbaWRdID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2hvd0Nyb3BQcmV2aWV3W2lkXSA9IGZhbHNlO1xyXG4gICAgfSwgMjUwKTtcclxuICB9XHJcblxyXG4gIHpvb21Dcm9wcGVkSW1hZ2UoZGlyLCBpZCkge1xyXG4gICAgbGV0IHNjYWxlID0gdGhpcy50cmFuc2Zvcm1baWRdLnNjYWxlO1xyXG4gICAgc2NhbGUgKz0gZGlyO1xyXG4gICAgaWYgKHNjYWxlIDwgMC4xKSB7XHJcbiAgICAgIHNjYWxlID0gMC4xO1xyXG4gICAgfVxyXG4gICAgdGhpcy50cmFuc2Zvcm1baWRdID0ge1xyXG4gICAgICAuLi50aGlzLnRyYW5zZm9ybVtpZF0sXHJcbiAgICAgIHNjYWxlXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcm90YXRlQ3JvcHBlZEltYWdlKGRpciwgaWQpIHtcclxuICAgIHRoaXMuY2FudmFzUm90YXRpb25baWRdICs9IGRpcjtcclxuICAgIGNvbnN0IGZsaXBwZWRIID0gdGhpcy50cmFuc2Zvcm1baWRdLmZsaXBIO1xyXG4gICAgY29uc3QgZmxpcHBlZFYgPSB0aGlzLnRyYW5zZm9ybVtpZF0uZmxpcFY7XHJcbiAgICB0aGlzLnRyYW5zZm9ybVtpZF0gPSB7XHJcbiAgICAgIC4uLnRoaXMudHJhbnNmb3JtW2lkXSxcclxuICAgICAgZmxpcEg6IGZsaXBwZWRWLFxyXG4gICAgICBmbGlwVjogZmxpcHBlZEhcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBvbkltYWdlQ3JvcHBlZChldmVudDogSW1hZ2VDcm9wcGVkRXZlbnQsIGlkKSB7XHJcbiAgICB0aGlzLmNyb3BwZWRJbWFnZXNbaWRdID0gZXZlbnQuYmFzZTY0O1xyXG4gICAgdGhpcy5pbWFnZUNyb3BwZWQuZW1pdChldmVudC5iYXNlNjQpO1xyXG4gIH1cclxuXHJcbiAgaW1hZ2VMb2FkZWQoaWQpIHtcclxuICAgIHRoaXMuc2hvd0Nyb3BwZXIgPSB0cnVlO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMudHJhbnNmb3JtW2lkXSA9IHtcclxuICAgICAgICBzY2FsZTogMVxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjcm9wcGVyUmVhZHkoc291cmNlSW1hZ2VEaW1lbnNpb25zOiBEaW1lbnNpb25zLCBpZCkge1xyXG4gICAgdGhpcy5jcm9wcGVySW1hZ2VMb2FkZWRbaWRdID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGxvYWRJbWFnZUZhaWxlZCgpIHtcclxuICB9XHJcblxyXG4gIHRvZ2dsZU1lbnVWaXNpYmlsaXR5KGYpIHtcclxuICAgIHRoaXMuZmlsZU1lbnVPcGVuZWQgPSBmO1xyXG4gIH1cclxuXHJcbiAgbWVudUNsaWNrKCkge1xyXG4gICAgdGhpcy5maWxlTWVudU9wZW5lZCA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG5cclxuICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmlucHV0QXJyYXkgPSBvYmogaW5zdGFuY2VvZiBBcnJheTtcclxuICAgIGlmICh0aGlzLmlucHV0QXJyYXkpIHtcclxuICAgICAgdGhpcy5maWxlcyA9IG9iai5tYXAoZiA9PiAoeyBjdXN0b206IGYsICRuZXdGaWxlOiBudWxsIH0pKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsZXMgPSBvYmogPyBbIHsgY3VzdG9tOm9iaiwgJG5ld0ZpbGU6IG51bGx9IF0gOiBbXTtcclxuICAgIH1cclxuICAgIHRoaXMuY3JvcFNvdXJjZUltYWdlcyA9IHt9O1xyXG4gIH1cclxuXHJcbiAgY3JvcHBlckRvbmUoaWQpIHtcclxuICAgIGNvbnN0IGYgPSB0aGlzLmZpbGVzLmZpbmQoZnggPT4gZnguJG5ld0ZpbGUgJiYgZnguJG5ld0ZpbGUuaWQgPT09IGlkKTtcclxuICAgIGlmIChmKSB7XHJcbiAgICAgIGNvbnN0IHVybCA9IHRoaXMuY3JvcHBlZEltYWdlc1tpZF07XHJcbiAgICAgIGZldGNoKHVybClcclxuICAgICAgICAudGhlbihyZXMgPT4gcmVzLmJsb2IoKSlcclxuICAgICAgICAudGhlbihibG9iID0+IHtcclxuICAgICAgICAgIGYuJG5ld0ZpbGUubmF0aXZlRmlsZSA9IG5ldyBGaWxlKFsgYmxvYiBdLCAnY3JvcC5wbmcnLCB7XHJcbiAgICAgICAgICAgIHR5cGU6ICdpbWFnZS9wbmcnXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGYuJG5ld0ZpbGUubmFtZSA9ICdjcm9wLnBuZyc7XHJcbiAgICAgICAgICBmLiRuZXdGaWxlLnNpemUgPSBmLiRuZXdGaWxlLm5hdGl2ZUZpbGUuc2l6ZTtcclxuICAgICAgICAgIGYuJG5ld0ZpbGUudHlwZSA9IGYuJG5ld0ZpbGUubmF0aXZlRmlsZS50eXBlO1xyXG4gICAgICAgICAgdGhpcy5pbWFnZXNEb25lW2lkXSA9IHRydWU7XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImxhYmVsXCIgKm5nSWY9XCJsYWJlbFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ0ZXh0LWNvbnRhaW5lclwiIFttYXRUb29sdGlwXT1cInJlcXVpcmVkID8gdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCd1aS5jb250cm9scy52YWxpZGF0aW9uLnJlcXVpcmVkJykgOiB1bmRlZmluZWRcIiBbbWF0VG9vbHRpcFBvc2l0aW9uXT1cIidhYm92ZSdcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0XCI+e3tsYWJlbH19PC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwicmVxdWlyZWRcIiBjbGFzcz1cInJlcXVpcmVkXCI+KjwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJmaWxlcy1jb250YWluZXJcIiBbbmdDbGFzc109XCJ7ZHJhZ2dpbmc6IGRyYWdnaW5nLCBkaXNhYmxlZDogdXBsb2FkaW5nIHx8ICFlZGl0YWJsZX1cIj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImV4aXN0aW5nLWZpbGVzXCI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImZpbGUtY29udGFpbmVyXCIgKm5nRm9yPVwibGV0IGYgb2YgZmlsZXNcIj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLW1lbnVcIiAoY2xpY2spPVwidG9nZ2xlTWVudVZpc2liaWxpdHkoZilcIiAqbmdJZj1cIiFjdXN0b21GaWxlTWVudSAmJiBlZGl0YWJsZSAmJiAhdXBsb2FkaW5nXCI+XHJcbiAgICAgICAgPG1hdC1pY29uPm1lbnU8L21hdC1pY29uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbGUtbWVudS1jb250YWluZXIgbWF0LWVsZXZhdGlvbi16MlwiIFtuZ0NsYXNzXT1cInt2aXNpYmxlOiBmID09PSBmaWxlTWVudU9wZW5lZH1cIiAoY2xpY2spPVwibWVudUNsaWNrKClcIiAobW91c2VsZWF2ZSk9XCJtZW51Q2xpY2soKVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbWVudVRlbXBsYXRlXCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZW51LWl0ZW1cIj57eyB0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ3VpLmNvbnRyb2xzLnVpLWZpbGUtdXBsb2FkZXIubWVudS5jaGFuZ2UnKSB9fVxyXG4gICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCIhcmVmcmVzaEFkZElucHV0XCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIHR5cGU9XCJmaWxlXCIgbmdGaWxlU2VsZWN0IFtvcHRpb25zXT1cInVwbG9hZE9wdGlvbnNcIiAoY2hhbmdlKT1cImZpbGVDaGFuZ2VFdmVudCgkZXZlbnQsIGYpXCJcclxuICAgICAgICAgICAgICAgICAgICh1cGxvYWRPdXRwdXQpPVwib25VcGxvYWRPdXRwdXQoJGV2ZW50KVwiIFt1cGxvYWRJbnB1dF09XCJ1cGxvYWRJbnB1dFwiPlxyXG4gICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW51LWl0ZW1cIiAoY2xpY2spPVwicmVtb3ZlKGYpXCI+e3sgdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCd1aS5jb250cm9scy51aS1maWxlLXVwbG9hZGVyLm1lbnUuZGVsZXRlJykgfX08L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWVudVRlbXBsYXRlXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibWVudVRlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntmaWxlSW5wdXQ6IGZpbGVJbnB1dH1cIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNmaWxlSW5wdXQ+XHJcbiAgICAgICAgICA8aW5wdXQgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIHR5cGU9XCJmaWxlXCIgbmdGaWxlU2VsZWN0IFtvcHRpb25zXT1cInVwbG9hZE9wdGlvbnNcIiAoY2hhbmdlKT1cImZpbGVDaGFuZ2VFdmVudCgkZXZlbnQsIGYpXCJcclxuICAgICAgICAgICAgICAgICAodXBsb2FkT3V0cHV0KT1cIm9uVXBsb2FkT3V0cHV0KCRldmVudClcIiBbdXBsb2FkSW5wdXRdPVwidXBsb2FkSW5wdXRcIj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiAqbmdJZj1cImNyb3AgJiYgIWNyb3BEb25lKGYpXCIgKG1vdXNlZW50ZXIpPVwic3RhcnRDcm9wUHJldmlldyhmLiRuZXdGaWxlLmlkKVwiIChtb3VzZWxlYXZlKT1cInN0b3BDcm9wUHJldmlldyhmLiRuZXdGaWxlLmlkKVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcm9wLWNvbnRhaW5lclwiIFtuZ1N0eWxlXT1cIm5nQWRkU3R5bGVcIj5cclxuXHJcbiAgICAgICAgICA8dWktZmlsZSAqbmdJZj1cImZhbHNlICYmIGZpbGVzLmxlbmd0aCA+IDAgJiYgIWNyb3BTb3VyY2VJbWFnZXNcIiBbZmlsZVNpemVdPVwiZmlsZVNpemVcIiBbc3JjRGF0YV09XCJmaWxlc1swXS5jdXN0b21cIiBbbmdDbGFzc109XCJ7cm91bmRlZDogY3JvcFJvdW5kZWR9XCI+PC91aS1maWxlPlxyXG5cclxuICAgICAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cIiFjcm9wcGVySW1hZ2VMb2FkZWRbZi4kbmV3RmlsZS5pZF0gJiYgY3JvcFNvdXJjZUltYWdlc1tmLiRuZXdGaWxlLmlkXVwiIFtkaWFtZXRlcl09XCI3NVwiPjwvbWF0LXNwaW5uZXI+XHJcblxyXG4gICAgICAgICAgPGltYWdlLWNyb3BwZXIgKm5nSWY9XCJjcm9wU291cmNlSW1hZ2VzW2YuJG5ld0ZpbGUuaWRdXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtpbWFnZUZpbGVdPVwiY3JvcFNvdXJjZUltYWdlc1tmLiRuZXdGaWxlLmlkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbbWFpbnRhaW5Bc3BlY3RSYXRpb109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtjb250YWluV2l0aGluQXNwZWN0UmF0aW9dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2FzcGVjdFJhdGlvXT1cImFzcGVjdFJhdGlvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXNpemVUb1dpZHRoXT1cImNyb3BNYXhXaWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbb25seVNjYWxlRG93bl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbcm91bmRDcm9wcGVyXT1cImNyb3BSb3VuZGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtjYW52YXNSb3RhdGlvbl09XCJjYW52YXNSb3RhdGlvbltmLiRuZXdGaWxlLmlkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbdHJhbnNmb3JtXT1cInRyYW5zZm9ybVtmLiRuZXdGaWxlLmlkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbYWxpZ25JbWFnZV09XCInY2VudGVyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuZGlzcGxheV09XCJzaG93Q3JvcHBlciA/IG51bGwgOiAnbm9uZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1hdF09XCIncG5nJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoaW1hZ2VDcm9wcGVkKT1cIm9uSW1hZ2VDcm9wcGVkKCRldmVudCwgZi4kbmV3RmlsZS5pZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGltYWdlTG9hZGVkKT1cImltYWdlTG9hZGVkKGYuJG5ld0ZpbGUuaWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIChjcm9wcGVyUmVhZHkpPVwiY3JvcHBlclJlYWR5KCRldmVudCwgZi4kbmV3RmlsZS5pZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxvYWRJbWFnZUZhaWxlZCk9XCJsb2FkSW1hZ2VGYWlsZWQoKVwiXHJcbiAgICAgICAgICA+PC9pbWFnZS1jcm9wcGVyPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcm9wLXByZXZpZXcgbWF0LWVsZXZhdGlvbi16MlwiIFtjbGFzc109XCJwcmV2aWV3UG9zaXRpb25cIiAqbmdJZj1cInRydWUgfHwgKHNob3dDcm9wUHJldmlld1tmLiRuZXdGaWxlLmlkXSAmJiBjcm9wcGVySW1hZ2VMb2FkZWRbZi4kbmV3RmlsZS5pZF0pXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcm9wLW1lbnVcIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24gKGNsaWNrKT1cInpvb21Dcm9wcGVkSW1hZ2UoLjEsIGYuJG5ld0ZpbGUuaWQpXCI+em9vbV9pbjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uIChjbGljayk9XCJ6b29tQ3JvcHBlZEltYWdlKC0gLjEsIGYuJG5ld0ZpbGUuaWQpXCI+em9vbV9vdXQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbiAoY2xpY2spPVwicm90YXRlQ3JvcHBlZEltYWdlKC0xLCBmLiRuZXdGaWxlLmlkKVwiPnJvdGF0ZV9sZWZ0PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24gKGNsaWNrKT1cInJvdGF0ZUNyb3BwZWRJbWFnZSgxLCBmLiRuZXdGaWxlLmlkKVwiPnJvdGF0ZV9yaWdodDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImZsZXg6IDEgMSAxMDAlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibWVudS1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24+dXBsb2FkX2ZpbGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiB0eXBlPVwiZmlsZVwiIG5nRmlsZVNlbGVjdCBbb3B0aW9uc109XCJ1cGxvYWRPcHRpb25zXCIgKGNoYW5nZSk9XCJmaWxlQ2hhbmdlRXZlbnQoJGV2ZW50LCBmKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKHVwbG9hZE91dHB1dCk9XCJvblVwbG9hZE91dHB1dCgkZXZlbnQpXCIgW3VwbG9hZElucHV0XT1cInVwbG9hZElucHV0XCI+XHJcbiAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICA8bWF0LWljb24gKGNsaWNrKT1cInJlbW92ZShmKVwiPmRlbGV0ZV9vdXRsaW5lPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleDogMSAxIDEwMCVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24gKGNsaWNrKT1cImNyb3BwZXJEb25lKGYuJG5ld0ZpbGUuaWQpXCI+ZG9uZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8aW1nIFtzcmNdPVwiY3JvcHBlZEltYWdlc1tmLiRuZXdGaWxlLmlkXVwiIFtuZ0NsYXNzXT1cIntyb3VuZGVkOiBjcm9wUm91bmRlZH1cIi8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuXHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjcm9wIHx8IGNyb3BEb25lKGYpXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbGVUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZpbGVUZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ZmlsZTogZiwgZmlsZUlucHV0OiBmaWxlSW5wdXQyfVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2ZpbGVJbnB1dDI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgdHlwZT1cImZpbGVcIiBuZ0ZpbGVTZWxlY3QgW29wdGlvbnNdPVwidXBsb2FkT3B0aW9uc1wiIChjaGFuZ2UpPVwiZmlsZUNoYW5nZUV2ZW50KCRldmVudCwgZilcIlxyXG4gICAgICAgICAgICAgICAgICAgKHVwbG9hZE91dHB1dCk9XCJvblVwbG9hZE91dHB1dCgkZXZlbnQpXCIgW3VwbG9hZElucHV0XT1cInVwbG9hZElucHV0XCI+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8dWktZmlsZSAqbmdJZj1cIiFmaWxlVGVtcGxhdGVcIiBbZmlsZVNpemVdPVwiZmlsZVNpemVcIiBbc3JjRGF0YV09XCJmLiRuZXdGaWxlID8gZi4kbmV3RmlsZTogZi5jdXN0b21cIiBbbmdDbGFzc109XCJ7cm91bmRlZDogY3JvcCAmJiBjcm9wUm91bmRlZH1cIj5cclxuICAgICAgICA8L3VpLWZpbGU+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmLiRuZXdGaWxlXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZi4kbmV3RmlsZS5yZXNwb25zZVN0YXR1cyAmJiBmLiRuZXdGaWxlLnJlc3BvbnNlU3RhdHVzICE9PSAyMDBcIiBjbGFzcz1cInByb2dyZXNzLWNvbnRhaW5lciBlcnJvclwiPlxyXG4gICAgICAgICAgICB7eyB0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ3VpLmNvbnRyb2xzLnVpLWZpbGUtdXBsb2FkZXIudXBsb2FkRXJyb3InLCBmLiRuZXdGaWxlLnJlc3BvbnNlKSB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWYuJG5ld0ZpbGUucmVzcG9uc2VTdGF0dXMgJiYgZi4kbmV3RmlsZS5wcm9ncmVzcy5zdGF0dXMgPT09IDFcIiBjbGFzcz1cInByb2dyZXNzLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NcIiBbbmdTdHlsZV09XCJ7d2lkdGg6IGYuJG5ld0ZpbGUucHJvZ3Jlc3MuZGF0YS5wZXJjZW50YWdlICsgJyUnfVwiPjwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiZmlsZS1jb250YWluZXIgYWRkXCIgbmdGaWxlRHJvcCAgW29wdGlvbnNdPVwidXBsb2FkT3B0aW9uc1wiICh1cGxvYWRPdXRwdXQpPVwib25VcGxvYWRPdXRwdXQoJGV2ZW50KVwiIFt1cGxvYWRJbnB1dF09XCJ1cGxvYWRJbnB1dFwiIFtuZ0NsYXNzXT1cInt2aXNpYmxlOiBmaWxlcy5sZW5ndGggPCBtYXhGaWxlcyB8fCBtYXhGaWxlcyA9PT0gMH1cIiBbbmdTdHlsZV09XCJhZGRGaWxlVGVtcGxhdGUgPyB7fSA6IG5nQWRkU3R5bGVcIj5cclxuICAgIDxsYWJlbD5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFkZEZpbGVUZW1wbGF0ZVwiPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJhZGRGaWxlVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhZGRGaWxlVGVtcGxhdGVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkLWltYWdlLWNvbnRhaW5lclwiPjwvZGl2PlxyXG4gICAgICAgIDxpbWcgW3NyY109XCJhZGRGaWxlSW1nU3JjXCIgW25nQ2xhc3NdPVwieyd3aXRoLWhpbnQnOiBhZGRIaW50fVwiIC8+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImFkZEhpbnRcIiBjbGFzcz1cImFkZC1oaW50XCI+e3thZGRIaW50fX08L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxpbnB1dCBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgdHlwZT1cImZpbGVcIiBuZ0ZpbGVTZWxlY3QgW29wdGlvbnNdPVwidXBsb2FkT3B0aW9uc1wiICh1cGxvYWRPdXRwdXQpPVwib25VcGxvYWRPdXRwdXQoJGV2ZW50KVwiIFt1cGxvYWRJbnB1dF09XCJ1cGxvYWRJbnB1dFwiIFttdWx0aXBsZV09XCJtYXhGaWxlcyA9PT0gMCAmJiBtdWx0aXBsZVwiPlxyXG4gICAgPC9sYWJlbD5cclxuICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG4iXX0=
@@ -4,42 +4,26 @@ import { UiSimpleComponent } from '../simple/ui-simple.component';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/forms";
6
6
  import * as i2 from "@angular/common";
7
- import * as i3 from "../simple/ui-simple-layout.component";
7
+ import * as i3 from "@angular/material/icon";
8
+ import * as i4 from "@angular/material/tooltip";
9
+ import * as i5 from "../simple/ui-simple-layout.component";
10
+ import * as i6 from "../action-icon/action-icon.component";
8
11
  export class InputComponent extends UiSimpleComponent {
9
12
  constructor(controlContainer) {
10
13
  super(null, controlContainer);
11
14
  this.controlContainer = controlContainer;
12
- // UiSimpleComponent = InputComponent;
13
- // @Input() placeholder = '';
14
- // @Input() label: string | undefined;
15
- // @Input() useInputMessages: 'never' | 'always' | 'ondemand' = 'always';
16
- // @Input() hint: string | undefined;
17
- // @Input() validators: UiValidators | undefined;
18
- // @Input() size: 'small' | 'smaller' | 'normal' | 'larger' | 'large' = 'normal';
19
- // @Input() formControlName;
20
- // componentFormControl: UntypedFormControl;
21
- //
22
- // ngControl: NgControl;
23
- //
24
- // @Input() validators: UiValidators | undefined;
25
- // @Input() formControlName;
26
- //
27
- // @Input() placeholder = '';
28
- // @Input() label: string | undefined;
29
- // @Input() useInputMessages: 'never' | 'always' | 'ondemand' = 'always';
30
- // @Input() hint?: string;
31
- // @Input() size: 'small' | 'smaller' | 'normal' | 'larger' | 'large' = 'normal';
32
- this.prefix = '';
33
- this.suffix = '';
34
15
  this.type = 'text';
35
16
  this.clearButton = false;
36
- this.disableUserInput = false;
17
+ this.activeIcons = true;
18
+ this.forceHasPrefix = false;
19
+ this.forceHasSuffix = false;
37
20
  // @HostBinding('class.centered')
38
21
  this.centered = false;
39
22
  this.focusChanged = new EventEmitter();
40
23
  this.keyPressed = new EventEmitter();
41
24
  // control = new FormControl();
42
25
  this.required = false;
26
+ this.hasFocus = false;
43
27
  // this.componentFormControl = new FormControl();
44
28
  // super();
45
29
  // super(undefined, /*ngControl*/ translateService);
@@ -54,6 +38,12 @@ export class InputComponent extends UiSimpleComponent {
54
38
  // ngControl.valueAccessor = this;
55
39
  // }
56
40
  }
41
+ get hasPrefix() {
42
+ return (this.prefixIcon && this.prefixIcon.icon !== '') || this.prefix?.nativeElement?.innerText !== '' || this.forceHasPrefix;
43
+ }
44
+ get hasSuffix() {
45
+ return (this.suffixIcon && this.suffixIcon.icon !== '') || this.suffix?.nativeElement?.innerText !== '' || this.forceHasSuffix;
46
+ }
57
47
  // control;
58
48
  // onTouched = () => {};
59
49
  // onChange = (value) => {};
@@ -93,8 +83,7 @@ export class InputComponent extends UiSimpleComponent {
93
83
  // return this.control.value && (this.control.value.length > (this.validators?.maxLength || 0));
94
84
  }
95
85
  get showClearButton() {
96
- return false;
97
- // return this.clearButton && this.control?.value !== '';
86
+ return this.clearButton && this.componentFormControl?.value !== '';
98
87
  }
99
88
  ngOnInit() {
100
89
  super.ngOnInit();
@@ -128,13 +117,14 @@ export class InputComponent extends UiSimpleComponent {
128
117
  // }
129
118
  }
130
119
  clearValue() {
131
- // this.control?.setValue('');
120
+ this.componentFormControl?.setValue('');
132
121
  this.input?.nativeElement.focus();
133
122
  }
134
123
  focus() {
135
124
  this.input?.nativeElement.focus();
136
125
  }
137
126
  onFocus(focus) {
127
+ this.hasFocus = focus;
138
128
  this.focusChanged.emit(focus);
139
129
  }
140
130
  onKeypressed($event) {
@@ -203,7 +193,7 @@ export class InputComponent extends UiSimpleComponent {
203
193
  }
204
194
  }
205
195
  InputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: InputComponent, deps: [{ token: i1.ControlContainer, host: true, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
206
- InputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: InputComponent, selector: "ui-input", inputs: { prefix: "prefix", suffix: "suffix", type: "type", clearButton: "clearButton", disableUserInput: "disableUserInput", centered: "centered" }, outputs: { focusChanged: "focusChanged", keyPressed: "keyPressed" }, providers: [
196
+ InputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: InputComponent, selector: "ui-input", inputs: { prefixIcon: "prefixIcon", suffixIcon: "suffixIcon", type: "type", clearButton: "clearButton", activeIcons: "activeIcons", forceHasPrefix: "forceHasPrefix", forceHasSuffix: "forceHasSuffix", centered: "centered" }, outputs: { focusChanged: "focusChanged", keyPressed: "keyPressed" }, providers: [
207
197
  {
208
198
  provide: NG_VALUE_ACCESSOR,
209
199
  multi: true,
@@ -214,7 +204,7 @@ InputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version
214
204
  multi: true,
215
205
  useExisting: InputComponent
216
206
  }
217
- ], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ui-simple-layout [ctx]=\"this\">\r\n\r\n<div class=\"control-container\">\r\n <input #input [ngClass]=\"{centered: centered}\" [type]=\"type\" [formControl]=\"componentFormControl\" [placeholder]=\"placeholder\" (keydown)=\"onKeypressed($event)\" (focus)=\"onFocus(true)\" (blur)=\"onFocus(false)\" />\r\n <ng-content select=\"[slot=prefix]\"></ng-content>\r\n <ng-content select=\"[slot=suffix]\"></ng-content>\r\n</div>\r\n\r\n</ui-simple-layout>\r\n", styles: [":host{width:100%}:host .control-container{width:100%;position:relative}:host ::ng-deep [slot=suffix]{position:absolute;cursor:pointer;user-select:none;transition:color .25s;top:calc(50% - .5em);right:.2em;width:1em;height:1em;font-size:1.5em}:host ::ng-deep [slot=prefix]{position:absolute;cursor:pointer;user-select:none;transition:color .25s;top:calc(50% - .5em);left:.2em;width:1em;height:1em;font-size:1.5em}:host ::ng-deep input,:host ::ng-deep textarea,:host ::ng-deep ::ng-deep .mat-select-trigger,:host ::ng-deep ::ng-deep .mat-mdc-select-trigger{resize:none;width:100%;line-height:1.2em;font-size:1em;outline:none;border-style:solid;transition:border-color 333ms}:host ::ng-deep input.has-suffix,:host ::ng-deep textarea.has-suffix,:host ::ng-deep ::ng-deep .mat-select-trigger.has-suffix,:host ::ng-deep ::ng-deep .mat-mdc-select-trigger.has-suffix{padding-right:1.8em}:host ::ng-deep input.centered,:host ::ng-deep textarea.centered,:host ::ng-deep ::ng-deep .mat-select-trigger.centered,:host ::ng-deep ::ng-deep .mat-mdc-select-trigger.centered{text-align:center}:host ::ng-deep textarea.autoresize{box-sizing:content-box;width:calc(100% - 1.4em)}:host ::ng-deep ::ng-deep .mat-select-trigger,:host ::ng-deep ::ng-deep .mat-mdc-select-trigger{height:100%}:host ::ng-deep ::ng-deep .mat-select-value,:host ::ng-deep ::ng-deep .mat-mdc-select-value{vertical-align:middle}::ng-deep ui-input{display:block}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.UiSimpleLayoutComponent, selector: "ui-simple-layout", inputs: ["ctx"] }] });
207
+ ], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }, { propertyName: "prefix", first: true, predicate: ["prefix"], descendants: true, static: true }, { propertyName: "suffix", first: true, predicate: ["suffix"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ui-simple-layout [ctx]=\"this\">\r\n\r\n<div class=\"control-container\" [ngClass]=\"{'has-suffix': hasSuffix, 'has-prefix': hasPrefix, 'has-clear-icon': showClearButton, 'active-icons': activeIcons, 'has-focus': hasFocus}\">\r\n <input #input [ngClass]=\"{centered: centered}\" [type]=\"type\" [formControl]=\"componentFormControl\" [placeholder]=\"placeholder\" (keydown)=\"onKeypressed($event)\" (focus)=\"onFocus(true)\" (blur)=\"onFocus(false)\" />\r\n <div #prefix><ng-content select=\"[slot=prefix]\"></ng-content></div>\r\n <div #suffix><ng-content select=\"[slot=suffix]\"></ng-content></div>\r\n <mat-icon *ngIf=\"prefixIcon\" class=\"prefix-icon\" [matTooltip]=\"prefixIcon.tooltip\">{{ prefixIcon.icon }}</mat-icon>\r\n <mat-icon *ngIf=\"suffixIcon\" class=\"suffix-icon\" [matTooltip]=\"suffixIcon.tooltip\">{{ suffixIcon.icon }}</mat-icon>\r\n <ui-action-icon [size]=\"'small'\" [color]=\"'warn'\" *ngIf=\"showClearButton\" (click)=\"clearValue()\" [matIcon]=\"'clear'\" class=\"clear-icon\"></ui-action-icon>\r\n</div>\r\n\r\n</ui-simple-layout>\r\n", styles: [":host{width:100%}:host .control-container{width:100%;position:relative}:host .control-container.has-prefix ::ng-deep input,:host .control-container.has-prefix ::ng-deep textarea,:host .control-container.has-prefix ::ng-deep .mat-mdc-select-trigger{padding-left:1.8em}:host .control-container.has-suffix ::ng-deep input,:host .control-container.has-suffix ::ng-deep textarea,:host .control-container.has-suffix ::ng-deep .mat-mdc-select-trigger{padding-right:1.8em}:host .control-container.has-suffix.has-clear-icon ::ng-deep input,:host .control-container.has-suffix.has-clear-icon ::ng-deep textarea,:host .control-container.has-suffix.has-clear-icon ::ng-deep .mat-mdc-select-trigger{padding-right:3.6em}:host .control-container.has-suffix.has-clear-icon ::ng-deep .clear-icon{right:1.4em!important}:host ::ng-deep [slot=suffix],:host ::ng-deep .clear-icon,:host ::ng-deep .suffix-icon{position:absolute;user-select:none;transition:color .25s;top:calc(50% - .5em);right:.2em;width:1em;height:1em;font-size:1.5em}:host ::ng-deep [slot=suffix]:not(.disabled),:host ::ng-deep .clear-icon:not(.disabled),:host ::ng-deep .suffix-icon:not(.disabled){cursor:pointer}:host ::ng-deep [slot=prefix],:host ::ng-deep .prefix-icon{position:absolute;user-select:none;transition:color .25s;top:calc(50% - .5em);left:.2em;width:1em;height:1em;font-size:1.5em}:host ::ng-deep [slot=prefix]:not(.disabled),:host ::ng-deep .prefix-icon:not(.disabled){cursor:pointer}:host ::ng-deep input,:host ::ng-deep textarea,:host ::ng-deep .mat-mdc-select-trigger{resize:none;width:100%;line-height:1.2em;font-size:1em;outline:none;border-style:solid;transition:border-color 333ms}:host ::ng-deep input.centered,:host ::ng-deep textarea.centered,:host ::ng-deep .mat-mdc-select-trigger.centered{text-align:center}:host ::ng-deep textarea.autoresize{box-sizing:content-box;width:calc(100% - 1.4em)}:host ::ng-deep ::ng-deep .mat-select-trigger,:host ::ng-deep ::ng-deep .mat-mdc-select-trigger{height:100%}:host ::ng-deep ::ng-deep .mat-select-value,:host ::ng-deep ::ng-deep .mat-mdc-select-value{vertical-align:middle}::ng-deep ui-input{display:block}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i5.UiSimpleLayoutComponent, selector: "ui-simple-layout", inputs: ["ctx"] }, { kind: "component", type: i6.ActionIconComponent, selector: "ui-action-icon", inputs: ["size", "color", "disabled", "busy", "matIcon"] }] });
218
208
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: InputComponent, decorators: [{
219
209
  type: Component,
220
210
  args: [{ selector: 'ui-input', providers: [
@@ -228,31 +218,41 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImpor
228
218
  multi: true,
229
219
  useExisting: InputComponent
230
220
  }
231
- ], template: "<ui-simple-layout [ctx]=\"this\">\r\n\r\n<div class=\"control-container\">\r\n <input #input [ngClass]=\"{centered: centered}\" [type]=\"type\" [formControl]=\"componentFormControl\" [placeholder]=\"placeholder\" (keydown)=\"onKeypressed($event)\" (focus)=\"onFocus(true)\" (blur)=\"onFocus(false)\" />\r\n <ng-content select=\"[slot=prefix]\"></ng-content>\r\n <ng-content select=\"[slot=suffix]\"></ng-content>\r\n</div>\r\n\r\n</ui-simple-layout>\r\n", styles: [":host{width:100%}:host .control-container{width:100%;position:relative}:host ::ng-deep [slot=suffix]{position:absolute;cursor:pointer;user-select:none;transition:color .25s;top:calc(50% - .5em);right:.2em;width:1em;height:1em;font-size:1.5em}:host ::ng-deep [slot=prefix]{position:absolute;cursor:pointer;user-select:none;transition:color .25s;top:calc(50% - .5em);left:.2em;width:1em;height:1em;font-size:1.5em}:host ::ng-deep input,:host ::ng-deep textarea,:host ::ng-deep ::ng-deep .mat-select-trigger,:host ::ng-deep ::ng-deep .mat-mdc-select-trigger{resize:none;width:100%;line-height:1.2em;font-size:1em;outline:none;border-style:solid;transition:border-color 333ms}:host ::ng-deep input.has-suffix,:host ::ng-deep textarea.has-suffix,:host ::ng-deep ::ng-deep .mat-select-trigger.has-suffix,:host ::ng-deep ::ng-deep .mat-mdc-select-trigger.has-suffix{padding-right:1.8em}:host ::ng-deep input.centered,:host ::ng-deep textarea.centered,:host ::ng-deep ::ng-deep .mat-select-trigger.centered,:host ::ng-deep ::ng-deep .mat-mdc-select-trigger.centered{text-align:center}:host ::ng-deep textarea.autoresize{box-sizing:content-box;width:calc(100% - 1.4em)}:host ::ng-deep ::ng-deep .mat-select-trigger,:host ::ng-deep ::ng-deep .mat-mdc-select-trigger{height:100%}:host ::ng-deep ::ng-deep .mat-select-value,:host ::ng-deep ::ng-deep .mat-mdc-select-value{vertical-align:middle}::ng-deep ui-input{display:block}\n"] }]
221
+ ], template: "<ui-simple-layout [ctx]=\"this\">\r\n\r\n<div class=\"control-container\" [ngClass]=\"{'has-suffix': hasSuffix, 'has-prefix': hasPrefix, 'has-clear-icon': showClearButton, 'active-icons': activeIcons, 'has-focus': hasFocus}\">\r\n <input #input [ngClass]=\"{centered: centered}\" [type]=\"type\" [formControl]=\"componentFormControl\" [placeholder]=\"placeholder\" (keydown)=\"onKeypressed($event)\" (focus)=\"onFocus(true)\" (blur)=\"onFocus(false)\" />\r\n <div #prefix><ng-content select=\"[slot=prefix]\"></ng-content></div>\r\n <div #suffix><ng-content select=\"[slot=suffix]\"></ng-content></div>\r\n <mat-icon *ngIf=\"prefixIcon\" class=\"prefix-icon\" [matTooltip]=\"prefixIcon.tooltip\">{{ prefixIcon.icon }}</mat-icon>\r\n <mat-icon *ngIf=\"suffixIcon\" class=\"suffix-icon\" [matTooltip]=\"suffixIcon.tooltip\">{{ suffixIcon.icon }}</mat-icon>\r\n <ui-action-icon [size]=\"'small'\" [color]=\"'warn'\" *ngIf=\"showClearButton\" (click)=\"clearValue()\" [matIcon]=\"'clear'\" class=\"clear-icon\"></ui-action-icon>\r\n</div>\r\n\r\n</ui-simple-layout>\r\n", styles: [":host{width:100%}:host .control-container{width:100%;position:relative}:host .control-container.has-prefix ::ng-deep input,:host .control-container.has-prefix ::ng-deep textarea,:host .control-container.has-prefix ::ng-deep .mat-mdc-select-trigger{padding-left:1.8em}:host .control-container.has-suffix ::ng-deep input,:host .control-container.has-suffix ::ng-deep textarea,:host .control-container.has-suffix ::ng-deep .mat-mdc-select-trigger{padding-right:1.8em}:host .control-container.has-suffix.has-clear-icon ::ng-deep input,:host .control-container.has-suffix.has-clear-icon ::ng-deep textarea,:host .control-container.has-suffix.has-clear-icon ::ng-deep .mat-mdc-select-trigger{padding-right:3.6em}:host .control-container.has-suffix.has-clear-icon ::ng-deep .clear-icon{right:1.4em!important}:host ::ng-deep [slot=suffix],:host ::ng-deep .clear-icon,:host ::ng-deep .suffix-icon{position:absolute;user-select:none;transition:color .25s;top:calc(50% - .5em);right:.2em;width:1em;height:1em;font-size:1.5em}:host ::ng-deep [slot=suffix]:not(.disabled),:host ::ng-deep .clear-icon:not(.disabled),:host ::ng-deep .suffix-icon:not(.disabled){cursor:pointer}:host ::ng-deep [slot=prefix],:host ::ng-deep .prefix-icon{position:absolute;user-select:none;transition:color .25s;top:calc(50% - .5em);left:.2em;width:1em;height:1em;font-size:1.5em}:host ::ng-deep [slot=prefix]:not(.disabled),:host ::ng-deep .prefix-icon:not(.disabled){cursor:pointer}:host ::ng-deep input,:host ::ng-deep textarea,:host ::ng-deep .mat-mdc-select-trigger{resize:none;width:100%;line-height:1.2em;font-size:1em;outline:none;border-style:solid;transition:border-color 333ms}:host ::ng-deep input.centered,:host ::ng-deep textarea.centered,:host ::ng-deep .mat-mdc-select-trigger.centered{text-align:center}:host ::ng-deep textarea.autoresize{box-sizing:content-box;width:calc(100% - 1.4em)}:host ::ng-deep ::ng-deep .mat-select-trigger,:host ::ng-deep ::ng-deep .mat-mdc-select-trigger{height:100%}:host ::ng-deep ::ng-deep .mat-select-value,:host ::ng-deep ::ng-deep .mat-mdc-select-value{vertical-align:middle}::ng-deep ui-input{display:block}\n"] }]
232
222
  }], ctorParameters: function () { return [{ type: i1.ControlContainer, decorators: [{
233
223
  type: Optional
234
224
  }, {
235
225
  type: Host
236
226
  }, {
237
227
  type: SkipSelf
238
- }] }]; }, propDecorators: { prefix: [{
228
+ }] }]; }, propDecorators: { prefixIcon: [{
239
229
  type: Input
240
- }], suffix: [{
230
+ }], suffixIcon: [{
241
231
  type: Input
242
232
  }], type: [{
243
233
  type: Input
244
234
  }], clearButton: [{
245
235
  type: Input
246
- }], disableUserInput: [{
236
+ }], activeIcons: [{
237
+ type: Input
238
+ }], forceHasPrefix: [{
239
+ type: Input
240
+ }], forceHasSuffix: [{
247
241
  type: Input
248
242
  }], centered: [{
249
243
  type: Input
250
244
  }], input: [{
251
245
  type: ViewChild,
252
246
  args: ['input']
247
+ }], prefix: [{
248
+ type: ViewChild,
249
+ args: ['prefix', { static: true }]
250
+ }], suffix: [{
251
+ type: ViewChild,
252
+ args: ['suffix', { static: true }]
253
253
  }], focusChanged: [{
254
254
  type: Output
255
255
  }], keyPressed: [{
256
256
  type: Output
257
257
  }] } });
258
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dC9pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2lucHV0L2lucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLElBQUksRUFDSixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixRQUFRLEVBQ1IsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBcUMsYUFBYSxFQUFFLGlCQUFpQixFQUFvQixNQUFNLGdCQUFnQixDQUFDO0FBQ3ZILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7OztBQXFCbEUsTUFBTSxPQUFPLGNBQWUsU0FBUSxpQkFBaUI7SUEyRm5ELFlBQXNELGdCQUFrQztRQVV0RixLQUFLLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFWc0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQXhGeEYsc0NBQXNDO1FBRXRDLDZCQUE2QjtRQUM3QixzQ0FBc0M7UUFDdEMseUVBQXlFO1FBQ3pFLHFDQUFxQztRQUNyQyxpREFBaUQ7UUFDakQsaUZBQWlGO1FBQ2pGLDRCQUE0QjtRQUU1Qiw0Q0FBNEM7UUFDNUMsRUFBRTtRQUNGLHdCQUF3QjtRQUN4QixFQUFFO1FBQ0YsaURBQWlEO1FBQ2pELDRCQUE0QjtRQUM1QixFQUFFO1FBQ0YsNkJBQTZCO1FBQzdCLHNDQUFzQztRQUN0Qyx5RUFBeUU7UUFDekUsMEJBQTBCO1FBQzFCLGlGQUFpRjtRQUV4RSxXQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ1osV0FBTSxHQUFHLEVBQUUsQ0FBQztRQUNaLFNBQUksR0FBbUMsTUFBTSxDQUFDO1FBQzlDLGdC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SyxFQUFFLElBQUk7NEJBQ1gsV0FBVyxnQkFBZ0I7eUJBQzVCO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxhQUFhOzRCQUN0QixLQUFLLEVBQUUsSUFBSTs0QkFDWCxXQUFXLGdCQUFnQjt5QkFDNUI7cUJBQ0E7OzBCQTZGWSxRQUFROzswQkFBSSxJQUFJOzswQkFBSSxRQUFROzRDQWpFaEMsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBR0csUUFBUTtzQkFBaEIsS0FBSztnQkFFYyxLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU87Z0JBRVIsWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdCxcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3B0aW9uYWwsXHJcbiAgT3V0cHV0LFxyXG4gIFNraXBTZWxmLFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xDb250YWluZXIsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBVaVNpbXBsZUNvbXBvbmVudCB9IGZyb20gJy4uL3NpbXBsZS91aS1zaW1wbGUuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndWktaW5wdXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC5jb21wb25lbnQuaHRtbCcsXHJcbi8vICAgc3R5bGVVcmxzOiBbICcuL2lucHV0LmNvbXBvbmVudC5zY3NzJyBdLFxyXG4gIHN0eWxlVXJsczogWyAnLi4vc2ltcGxlL3VpLXNpbXBsZS1sYXlvdXQuY29tcG9uZW50LnNjc3MnIF0sXHJcblxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICBtdWx0aTogdHJ1ZSxcclxuICAgIHVzZUV4aXN0aW5nOiBJbnB1dENvbXBvbmVudFxyXG4gIH0sXHJcbiAge1xyXG4gICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcclxuICAgIG11bHRpOiB0cnVlLFxyXG4gICAgdXNlRXhpc3Rpbmc6IElucHV0Q29tcG9uZW50XHJcbiAgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIElucHV0Q29tcG9uZW50IGV4dGVuZHMgVWlTaW1wbGVDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIE9uSW5pdCB7IC8vIH0sIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHsgLy8gfSwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciB7IC8vIH0sIEFmdGVyVmlld0luaXQge1xyXG5cclxuICAvLyBVaVNpbXBsZUNvbXBvbmVudCA9IElucHV0Q29tcG9uZW50O1xyXG5cclxuICAvLyBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xyXG4gIC8vIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgLy8gQElucHV0KCkgdXNlSW5wdXRNZXNzYWdlczogJ25ldmVyJyB8ICdhbHdheXMnIHwgJ29uZGVtYW5kJyA9ICdhbHdheXMnO1xyXG4gIC8vIEBJbnB1dCgpIGhpbnQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICAvLyBASW5wdXQoKSB2YWxpZGF0b3JzOiBVaVZhbGlkYXRvcnMgfCB1bmRlZmluZWQ7XHJcbiAgLy8gQElucHV0KCkgc2l6ZTogJ3NtYWxsJyB8ICdzbWFsbGVyJyB8ICdub3JtYWwnIHwgJ2xhcmdlcicgfCAnbGFyZ2UnID0gJ25vcm1hbCc7XHJcbiAgLy8gQElucHV0KCkgZm9ybUNvbnRyb2xOYW1lO1xyXG5cclxuICAvLyBjb21wb25lbnRGb3JtQ29udHJvbDogVW50eXBlZEZvcm1Db250cm9sO1xyXG4gIC8vXHJcbiAgLy8gbmdDb250cm9sOiBOZ0NvbnRyb2w7XHJcbiAgLy9cclxuICAvLyBASW5wdXQoKSB2YWxpZGF0b3JzOiBVaVZhbGlkYXRvcnMgfCB1bmRlZmluZWQ7XHJcbiAgLy8gQElucHV0KCkgZm9ybUNvbnRyb2xOYW1lO1xyXG4gIC8vXHJcbiAgLy8gQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcclxuICAvLyBASW5wdXQoKSBsYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIC8vIEBJbnB1dCgpIHVzZUlucHV0TWVzc2FnZXM6ICduZXZlcicgfCAnYWx3YXlzJyB8ICdvbmRlbWFuZCcgPSAnYWx3YXlzJztcclxuICAvLyBASW5wdXQoKSBoaW50Pzogc3RyaW5nO1xyXG4gIC8vIEBJbnB1dCgpIHNpemU6ICdzbWFsbCcgfCAnc21hbGxlcicgfCAnbm9ybWFsJyB8ICdsYXJnZXInIHwgJ2xhcmdlJyA9ICdub3JtYWwnO1xyXG5cclxuICBASW5wdXQoKSBwcmVmaXggPSAnJztcclxuICBASW5wdXQoKSBzdWZmaXggPSAnJztcclxuICBASW5wdXQoKSB0eXBlOiAndGV4dCcgfCAnbnVtYmVyJyB8ICdwYXNzd29yZCcgPSAndGV4dCc7XHJcbiAgQElucHV0KCkgY2xlYXJCdXR0b24gPSBmYWxzZTtcclxuICBASW5wdXQoKSBkaXNhYmxlVXNlcklucHV0ID0gZmFsc2U7XHJcblxyXG4gIC8vIEBIb3N0QmluZGluZygnY2xhc3MuY2VudGVyZWQnKVxyXG4gIEBJbnB1dCgpIGNlbnRlcmVkID0gZmFsc2U7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0JykgaW5wdXQ6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XHJcblxyXG4gIEBPdXRwdXQoKSBmb2N1c0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgQE91dHB1dCgpIGtleVByZXNzZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEtleWJvYXJkRXZlbnQ+KCk7XHJcblxyXG4gIC8vIGNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuXHJcbiAgcmVxdWlyZWQgPSBmYWxzZTtcclxuXHJcbiAgdmFsdWU6IHN0cmluZztcclxuXHJcbiAgLy8gY29udHJvbDtcclxuXHJcblxyXG4gIC8vIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xyXG4gIC8vIG9uQ2hhbmdlID0gKHZhbHVlKSA9PiB7fTtcclxuXHJcbiAgLy8gZ2V0IHNob3dJbnZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gIC8vICAgcmV0dXJuIHRydWU7XHJcbiAgLy8gICAvLyByZXR1cm4gdGhpcy5jb250cm9sLnRvdWNoZWQgJiYgISF0aGlzLmNvbnRyb2wuZXJyb3JzO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gZ2V0IHZhbGlkYXRpb25NZXNzYWdlKCk6IHN0cmluZyB7XHJcbiAgLy8gICAvLyBjb25zb2xlLmxvZyh0aGlzLmNvbnRyb2w/LmVycm9ycyk7XHJcbiAgLy8gICBsZXQgZTogYW55ID0ge2NvZGU6ICdOZXpuw6Ftw6EgY2h5YmEnfTtcclxuICAvLyAgIGNvbnN0IGVycm9ycyA9IHRoaXMuY29udHJvbD8uZXJyb3JzIHx8IHt9O1xyXG4gIC8vICAgT2JqZWN0LmtleXMoZXJyb3JzKS5maW5kKGEgPT4ge1xyXG4gIC8vICAgICBlID0ge2NvZGU6IGEsIGRhdGE6IGVycm9yc1thXX07XHJcbiAgLy8gICAgIHJldHVybiB0cnVlO1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gICBzd2l0Y2ggKGUuY29kZSkge1xyXG4gIC8vICAgICBjYXNlICdyZXF1aXJlZCc6XHJcbiAgLy8gICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCd1aS5jb250cm9scy52YWxpZGF0aW9uLnJlcXVpcmVkJyk7XHJcbiAgLy8gICAgIGNhc2UgJ2VtYWlsJzpcclxuICAvLyAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ3VpLmNvbnRyb2xzLnZhbGlkYXRpb24uZW1haWwnKTtcclxuICAvLyAgICAgY2FzZSAnbWF0RGF0ZXBpY2tlclBhcnNlJzpcclxuICAvLyAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ3VpLmNvbnRyb2xzLnZhbGlkYXRpb24ubWF0RGF0ZXBpY2tlclBhcnNlJyk7XHJcbiAgLy8gICAgIGNhc2UgJ21heGxlbmd0aCc6XHJcbiAgLy8gICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCd1aS5jb250cm9scy52YWxpZGF0aW9uLm1heGxlbmd0aCcsIGUuZGF0YSk7XHJcbiAgLy8gICAgIGNhc2UgJ21pbmxlbmd0aCc6XHJcbiAgLy8gICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCd1aS5jb250cm9scy52YWxpZGF0aW9uLm1pbmxlbmd0aCcsIGUuZGF0YSk7XHJcbiAgLy8gICAgIGNhc2UgJ3Bvc2l0aXZlJzpcclxuICAvLyAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoaXNOYU4oTnVtYmVyKGUuZGF0YSkpID8gJ3VpLmNvbnRyb2xzLnZhbGlkYXRpb24uaW52YWxpZE51bWJlcicgOiAndWkuY29udHJvbHMudmFsaWRhdGlvbi5wb3NpdGl2ZScpO1xyXG4gIC8vICAgICBjYXNlICdjdXN0b20nOlxyXG4gIC8vICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChlLmRhdGEpO1xyXG4gIC8vICAgICBkZWZhdWx0OlxyXG4gIC8vICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChlLmNvZGUpO1xyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgZ2V0IG1heExlblJlcXVpcmVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgICAvLyByZXR1cm4gdGhpcy5jb250cm9sLnZhbHVlICYmICh0aGlzLmNvbnRyb2wudmFsdWUubGVuZ3RoID4gKHRoaXMudmFsaWRhdG9ycz8ubWF4TGVuZ3RoIHx8IDApKTtcclxuICB9XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASG9zdCgpIEBTa2lwU2VsZigpIHByb3RlY3RlZCBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxyXG4gICAgLypcclxuICAgIGJ1ZCBwcmVzIEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIGNvbnRyb2w6IE5nQ29udHJvbCBhIGNvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXMgPT4genRyYXRpbWUgYWxlIGN1c3RvbSB2YWxpZGFjaVxyXG4gICAgYW5lYm8gcHJlcyBESSBqYWtvIHByb3ZpZGVycyBhIHBhayB0aGlzLmNvbnRyb2wgPSB2aXogbmdPbkluaXQgLSBwb2t1ZCBqZWogdnViZWMgcG90cmVidWplbVxyXG5cclxuICAgICAqL1xyXG4gICAgLy8gcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgIC8vIEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIGNvbnRyb2w6IE5nQ29udHJvbCxcclxuICAgIC8vIEBTZWxmKCkgcHJpdmF0ZSBjb250cm9sRGlyZWN0aXZlOiBOZ0NvbnRyb2wsXHJcbiAgICkge1xyXG4gICAgc3VwZXIobnVsbCwgY29udHJvbENvbnRhaW5lcik7XHJcblxyXG4gICAgLy8gdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG4gICAgLy8gc3VwZXIoKTtcclxuICAvLyAgc3VwZXIodW5kZWZpbmVkLCAvKm5nQ29udHJvbCovIHRyYW5zbGF0ZVNlcnZpY2UpO1xyXG4gICAgLy8gc3VwZXIoY29udHJvbCk7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhjb250cm9sKTtcclxuICAgIC8vIGlmIChjb250cm9sKSB7XHJcbiAgICAvLyAgIGNvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgLy8gaWYgKG5nQ29udHJvbCAhPSBudWxsKSB7XHJcbiAgICAvLyAgIC8vIFNldHRpbmcgdGhlIHZhbHVlIGFjY2Vzc29yIGRpcmVjdGx5IChpbnN0ZWFkIG9mIHVzaW5nXHJcbiAgICAvLyAgIC8vIHRoZSBwcm92aWRlcnMpIHRvIGF2b2lkIHJ1bm5pbmcgaW50byBhIGNpcmN1bGFyIGltcG9ydC5cclxuICAgIC8vICAgbmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHNob3dDbGVhckJ1dHRvbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICAgIC8vIHJldHVybiB0aGlzLmNsZWFyQnV0dG9uICYmIHRoaXMuY29udHJvbD8udmFsdWUgIT09ICcnO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIC8vIGNvbnNvbGUubG9nKCdwcm9iaWhhIHZ1YmVjIG9uaW5pdD8nKTtcclxuICAgIC8vIGlmICh0aGlzLm5nQ29udHJvbCkge1xyXG4gICAgLy8gICBjb25zb2xlLmxvZygnZnJvbSBuZ0NvbnRyb2wuLi4uPz8nKTtcclxuICAgIC8vICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wpIHtcclxuICAgIC8vICAgICB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sID0gdGhpcy5mb3JtQ29udHJvbDtcclxuICAgIC8vICAgfSBlbHNlIHtcclxuICAgIC8vICAgICB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sID0gdGhpcy5uZ0NvbnRyb2wuY29udHJvbCBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAvLyAgICAgdGhpcy5hcHBseVZhbGlkYXRvcnMoKTtcclxuICAgIC8vICAgfSk7XHJcbiAgICAvLyB9IGVsc2Uge1xyXG4gICAgLy8gICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtQ29udHJvbE5hbWUgP1xyXG4gICAgLy8gICAgICh0aGlzLmNvbnRyb2xDb250YWluZXIgYXMgRm9ybUdyb3VwRGlyZWN0aXZlKS5jb250cm9sLmdldCh0aGlzLmZvcm1Db250cm9sTmFtZSkgOiB0aGlzLmZvcm1Db250cm9sO1xyXG4gICAgLy8gICB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sLnNldFZhbGlkYXRvcnMoY29udHJvbC52YWxpZGF0b3IpO1xyXG4gICAgLy8gICB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodiA9PiBjb25zb2xlLmxvZygnb25pdGluIHN1YicsIHYpKTtcclxuICAgIC8vICAgY29udHJvbC5fY29tcG9uZW50Rm9ybUNvbnRyb2wgPSB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sO1xyXG4gICAgLy8gICBpZiAoY29udHJvbC5fbWFya0FzVG91Y2hlZCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAvLyAgICAgLy8gY29udHJvbC5fY29tcG9uZW50Rm9ybUNvbnRyb2wgPSB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sO1xyXG4gICAgLy8gICAgIGNvbnNvbGUubG9nKCdvdmVycmlkaW5nIG1hcmtBc1RvdWNoZWQgZm9yJywgdGhpcy5mb3JtQ29udHJvbE5hbWUpO1xyXG4gICAgLy8gICAgIGNvbnRyb2wuX21hcmtBc1RvdWNoZWQgPSBjb250cm9sLm1hcmtBc1RvdWNoZWQ7XHJcbiAgICAvLyAgICAgY29udHJvbC5tYXJrQXNUb3VjaGVkID0gKHtvbmx5U2VsZn06IHsgb25seVNlbGY/OiBib29sZWFuIH0gPSB7fSk6IHZvaWQgPT4ge1xyXG4gICAgLy8gICAgICAgY29uc29sZS5sb2coJ21hcmtpbmcgYXMgdG91Y2hlZCcsIHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wudmFsdWUsIGNvbnRyb2wudmFsdWUsIHRoaXMueHh4LnZhbHVlLCBjb250cm9sLl9jb21wb25lbnRGb3JtQ29udHJvbC52YWx1ZSk7XHJcbiAgICAvLyAgICAgICBjb250cm9sLl9tYXJrQXNUb3VjaGVkKHtvbmx5U2VsZn0pO1xyXG4gICAgLy8gICAgICAgc2V0VGltZW91dCgoKSA9PiBjb250cm9sLl9jb21wb25lbnRGb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCksIDEwMDApO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgfVxyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgY2xlYXJWYWx1ZSgpOiB2b2lkIHtcclxuICAgIC8vIHRoaXMuY29udHJvbD8uc2V0VmFsdWUoJycpO1xyXG4gICAgdGhpcy5pbnB1dD8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgZm9jdXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlucHV0Py5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgfVxyXG5cclxuICBvbkZvY3VzKGZvY3VzOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvY3VzQ2hhbmdlZC5lbWl0KGZvY3VzKTtcclxuICB9XHJcblxyXG4gIG9uS2V5cHJlc3NlZCgkZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5rZXlQcmVzc2VkLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIC8vIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6IGFueSk6IHZvaWQge1xyXG4gIC8vICAgdGhpcy5vbkNoYW5nZSA9IG9uQ2hhbmdlO1xyXG4gIC8vIH1cclxuICAvL1xyXG4gIC8vIHJlZ2lzdGVyT25Ub3VjaGVkKG9uVG91Y2hlZDogYW55KTogdm9pZCB7XHJcbiAgLy8gICB0aGlzLm9uVG91Y2hlZCA9IG9uVG91Y2hlZDtcclxuICAvLyB9XHJcblxyXG4gIC8vIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAvLyB9XHJcblxyXG4gIC8vIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gIC8vICAgLy8gaXNEaXNhYmxlZCA/IHRoaXMuY29udHJvbC5kaXNhYmxlKCkgOiB0aGlzLmNvbnRyb2wuZW5hYmxlKCk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgLy8gICAvLyB0aGlzLmNvbnRyb2wgPSBjb250cm9sO1xyXG4gIC8vICAgLy8gY29uc29sZS5sb2coY29udHJvbCwgY29udHJvbC52YWx1ZSwgY29udHJvbC5lcnJvcnMpO1xyXG4gIC8vICAgaWYgKHRoaXMudmFsdWUgPT09ICdlcnJvcicpIHtcclxuICAvLyAgICAgcmV0dXJuIHsgY3VzdG9tRXJyb3I6ICdtdWogZXJyb3InfVxyXG4gIC8vICAgfSBlbHNlIHtcclxuICAvLyAgICAgcmV0dXJuIG51bGw7XHJcbiAgLy8gICB9XHJcbiAgLy8gICAvLyBjb25zb2xlLmxvZygnY3VzdG9tIHZhbGlkYXRlJyk7XHJcbiAgLy8gICAvLyByZXR1cm4gbnVsbDtcclxuICAvLyB9XHJcbiAgLy9cclxuICAvLyB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XHJcbiAgLy8gICBjb25zb2xlLmxvZygnd3JpdGV2YWx1ZTogJywgb2JqKTtcclxuICAvLyAgIHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wuc2V0VmFsdWUob2JqKTtcclxuICAvLyAgIC8vIHRoaXMudmFsdWUgPSBvYmo7XHJcbiAgLy8gICAvLyB0aGlzLmNvbnRyb2wuc2V0VmFsdWUob2JqKTtcclxuICAvLyB9XHJcbiAgLy9cclxuICAvLyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAvLyB9XHJcbiAgLy9cclxuICAvLyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgLy8gfVxyXG4gIC8vXHJcbiAgLy8gc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBtb2RlbENoYW5nZSgkZXZlbnQ6IGFueSkge1xyXG4gIC8vICAgY29uc29sZS5sb2coJGV2ZW50KTtcclxuICAvLyAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgLy8gICB0aGlzLm9uQ2hhbmdlKCRldmVudClcclxuICAvLyB9XHJcblxyXG4gIC8vIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAvLyAgIGNvbnNvbGUubG9nKHRoaXMubGFiZWwsICd2YWxpZGF0ZScpO1xyXG4gIC8vICAgcmV0dXJuIHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wuZXJyb3JzO1xyXG4gIC8vICAgLy8gcmV0dXJuIHVuZGVmaW5lZDtcclxuICAvLyB9XHJcblxyXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGlmICh0aGlzLnBhcmVudEZvcm1Db250cm9sKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnBhcmVudEZvcm1Db250cm9sLl9jb21wb25lbnRGb3JtQ29udHJvbC5lcnJvcnM7XHJcbiAgICB9XHJcbiAgICAvLyBjb25zb2xlLmxvZygndmFsaWRhdGUnLCB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sLmVycm9ycyk7XHJcbiAgICAvLyAvLyB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sLnNldEVycm9ycyggeyBjdXN0b206ICd4eHgnIH0pO1xyXG4gICAgLy8gdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC5zZXRFcnJvcnMoIHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wuZXJyb3JzKTtcclxuICAgIC8vIGNvbnNvbGUubG9nKCd2YWxpZGF0ZSAyJywgdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC5lcnJvcnMpO1xyXG4gICAgLy8gcmV0dXJuIHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wuZXJyb3JzO1xyXG4gICAgLy8gY29uc29sZS5sb2codGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC5lcnJvcnMsIGNvbnRyb2wuZXJyb3JzLCB0aGlzLnBhcmVudEZvcm1Db250cm9sLmVycm9ycywgdGhpcyk7XHJcbiAgICAvLyByZXR1cm4gdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC5lcnJvcnM7XHJcbiAgfVxyXG59XHJcblxyXG4iLCI8dWktc2ltcGxlLWxheW91dCBbY3R4XT1cInRoaXNcIj5cclxuXHJcbjxkaXYgY2xhc3M9XCJjb250cm9sLWNvbnRhaW5lclwiPlxyXG4gIDxpbnB1dCAjaW5wdXQgW25nQ2xhc3NdPVwie2NlbnRlcmVkOiBjZW50ZXJlZH1cIiBbdHlwZV09XCJ0eXBlXCIgW2Zvcm1Db250cm9sXT1cImNvbXBvbmVudEZvcm1Db250cm9sXCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgKGtleWRvd24pPVwib25LZXlwcmVzc2VkKCRldmVudClcIiAoZm9jdXMpPVwib25Gb2N1cyh0cnVlKVwiIChibHVyKT1cIm9uRm9jdXMoZmFsc2UpXCIgLz5cclxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2xvdD1wcmVmaXhdXCI+PC9uZy1jb250ZW50PlxyXG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIltzbG90PXN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XHJcbjwvZGl2PlxyXG5cclxuPC91aS1zaW1wbGUtbGF5b3V0PlxyXG4iXX0=
258
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dC9pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2lucHV0L2lucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLElBQUksRUFDSixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixRQUFRLEVBQ1IsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBcUMsYUFBYSxFQUFFLGlCQUFpQixFQUFvQixNQUFNLGdCQUFnQixDQUFDO0FBQ3ZILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7OztBQXNCbEUsTUFBTSxPQUFPLGNBQWUsU0FBUSxpQkFBaUI7SUF3R25ELFlBQXNELGdCQUFrQztRQVV0RixLQUFLLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFWc0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQTVFL0UsU0FBSSxHQUFtQyxNQUFNLENBQUM7UUFDOUMsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFDbkIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFFaEMsaUNBQWlDO1FBQ3hCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFNaEIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQzNDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQVV6RCwrQkFBK0I7UUFFL0IsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBNkRmLGlEQUFpRDtRQUNqRCxX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VUFiZDtRQUNUO1lBQ0EsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixLQUFLLEVBQUUsSUFBSTtZQUNYLFdBQVcsRUFBRSxjQUFjO1NBQzVCO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsYUFBYTtZQUN0QixLQUFLLEVBQUUsSUFBSTtZQUNYLFdBQVcsRUFBRSxjQUFjO1NBQzVCO0tBQ0EsbVZDakNILGlqQ0FZQTsyRkR1QmEsY0FBYztrQkFuQjFCLFNBQVM7K0JBQ0UsVUFBVSxhQUtUO3dCQUNUOzRCQUNBLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLEtBQUssRUFBRSxJQUFJOzRCQUNYLFdBQVcsZ0JBQWdCO3lCQUM1Qjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsYUFBYTs0QkFDdEIsS0FBSyxFQUFFLElBQUk7NEJBQ1gsV0FBVyxnQkFBZ0I7eUJBQzVCO3FCQUNBOzswQkEwR1ksUUFBUTs7MEJBQUksSUFBSTs7MEJBQUksUUFBUTs0Q0E5RWhDLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVjLEtBQUs7c0JBQXhCLFNBQVM7dUJBQUMsT0FBTztnQkFDcUIsTUFBTTtzQkFBNUMsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNFLE1BQU07c0JBQTVDLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFM0IsWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdCxcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3B0aW9uYWwsXHJcbiAgT3V0cHV0LFxyXG4gIFNraXBTZWxmLFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xDb250YWluZXIsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBVaVNpbXBsZUNvbXBvbmVudCB9IGZyb20gJy4uL3NpbXBsZS91aS1zaW1wbGUuY29tcG9uZW50JztcclxuXHJcbnR5cGUgUHJlZml4U3VmZml4ID0geyBpY29uOiBzdHJpbmcsIHRvb2x0aXA/OiBzdHJpbmcgfTtcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd1aS1pbnB1dCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LmNvbXBvbmVudC5odG1sJyxcclxuLy8gICBzdHlsZVVybHM6IFsgJy4vaW5wdXQuY29tcG9uZW50LnNjc3MnIF0sXHJcbiAgc3R5bGVVcmxzOiBbICcuLi9zaW1wbGUvdWktc2ltcGxlLWxheW91dC5jb21wb25lbnQuc2NzcycgXSxcclxuXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgIG11bHRpOiB0cnVlLFxyXG4gICAgdXNlRXhpc3Rpbmc6IElucHV0Q29tcG9uZW50XHJcbiAgfSxcclxuICB7XHJcbiAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxyXG4gICAgbXVsdGk6IHRydWUsXHJcbiAgICB1c2VFeGlzdGluZzogSW5wdXRDb21wb25lbnRcclxuICB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXRDb21wb25lbnQgZXh0ZW5kcyBVaVNpbXBsZUNvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgT25Jbml0IHsgLy8gfSwgQ29udHJvbFZhbHVlQWNjZXNzb3IgeyAvLyB9LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHsgLy8gfSwgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIC8vIFVpU2ltcGxlQ29tcG9uZW50ID0gSW5wdXRDb21wb25lbnQ7XHJcblxyXG4gIC8vIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJyc7XHJcbiAgLy8gQElucHV0KCkgbGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICAvLyBASW5wdXQoKSB1c2VJbnB1dE1lc3NhZ2VzOiAnbmV2ZXInIHwgJ2Fsd2F5cycgfCAnb25kZW1hbmQnID0gJ2Fsd2F5cyc7XHJcbiAgLy8gQElucHV0KCkgaGludDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIC8vIEBJbnB1dCgpIHZhbGlkYXRvcnM6IFVpVmFsaWRhdG9ycyB8IHVuZGVmaW5lZDtcclxuICAvLyBASW5wdXQoKSBzaXplOiAnc21hbGwnIHwgJ3NtYWxsZXInIHwgJ25vcm1hbCcgfCAnbGFyZ2VyJyB8ICdsYXJnZScgPSAnbm9ybWFsJztcclxuICAvLyBASW5wdXQoKSBmb3JtQ29udHJvbE5hbWU7XHJcblxyXG4gIC8vIGNvbXBvbmVudEZvcm1Db250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcbiAgLy9cclxuICAvLyBuZ0NvbnRyb2w6IE5nQ29udHJvbDtcclxuICAvL1xyXG4gIC8vIEBJbnB1dCgpIHZhbGlkYXRvcnM6IFVpVmFsaWRhdG9ycyB8IHVuZGVmaW5lZDtcclxuICAvLyBASW5wdXQoKSBmb3JtQ29udHJvbE5hbWU7XHJcbiAgLy9cclxuICAvLyBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xyXG4gIC8vIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgLy8gQElucHV0KCkgdXNlSW5wdXRNZXNzYWdlczogJ25ldmVyJyB8ICdhbHdheXMnIHwgJ29uZGVtYW5kJyA9ICdhbHdheXMnO1xyXG4gIC8vIEBJbnB1dCgpIGhpbnQ/OiBzdHJpbmc7XHJcbiAgLy8gQElucHV0KCkgc2l6ZTogJ3NtYWxsJyB8ICdzbWFsbGVyJyB8ICdub3JtYWwnIHwgJ2xhcmdlcicgfCAnbGFyZ2UnID0gJ25vcm1hbCc7XHJcblxyXG4gIEBJbnB1dCgpIHByZWZpeEljb246IFByZWZpeFN1ZmZpeDtcclxuICBASW5wdXQoKSBzdWZmaXhJY29uOiBQcmVmaXhTdWZmaXg7XHJcbiAgQElucHV0KCkgdHlwZTogJ3RleHQnIHwgJ251bWJlcicgfCAncGFzc3dvcmQnID0gJ3RleHQnO1xyXG4gIEBJbnB1dCgpIGNsZWFyQnV0dG9uID0gZmFsc2U7XHJcbiAgQElucHV0KCkgYWN0aXZlSWNvbnMgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGZvcmNlSGFzUHJlZml4ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZm9yY2VIYXNTdWZmaXggPSBmYWxzZTtcclxuXHJcbiAgLy8gQEhvc3RCaW5kaW5nKCdjbGFzcy5jZW50ZXJlZCcpXHJcbiAgQElucHV0KCkgY2VudGVyZWQgPSBmYWxzZTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dDogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcclxuICBAVmlld0NoaWxkKCdwcmVmaXgnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwcmVmaXg6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XHJcbiAgQFZpZXdDaGlsZCgnc3VmZml4JywgeyBzdGF0aWM6IHRydWUgfSkgc3VmZml4OiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xyXG5cclxuICBAT3V0cHV0KCkgZm9jdXNDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIEBPdXRwdXQoKSBrZXlQcmVzc2VkID0gbmV3IEV2ZW50RW1pdHRlcjxLZXlib2FyZEV2ZW50PigpO1xyXG5cclxuICBnZXQgaGFzUHJlZml4KCkge1xyXG4gICAgcmV0dXJuICh0aGlzLnByZWZpeEljb24gJiYgdGhpcy5wcmVmaXhJY29uLmljb24gIT09ICcnKSB8fCB0aGlzLnByZWZpeD8ubmF0aXZlRWxlbWVudD8uaW5uZXJUZXh0ICE9PSAnJyB8fCB0aGlzLmZvcmNlSGFzUHJlZml4O1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhhc1N1ZmZpeCgpIHtcclxuICAgIHJldHVybiAodGhpcy5zdWZmaXhJY29uICYmIHRoaXMuc3VmZml4SWNvbi5pY29uICE9PSAnJykgfHwgdGhpcy5zdWZmaXg/Lm5hdGl2ZUVsZW1lbnQ/LmlubmVyVGV4dCAhPT0gJycgfHwgdGhpcy5mb3JjZUhhc1N1ZmZpeDtcclxuICB9XHJcblxyXG4gIC8vIGNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuXHJcbiAgcmVxdWlyZWQgPSBmYWxzZTtcclxuICBoYXNGb2N1cyA9IGZhbHNlO1xyXG5cclxuICB2YWx1ZTogc3RyaW5nO1xyXG5cclxuICAvLyBjb250cm9sO1xyXG5cclxuXHJcbiAgLy8gb25Ub3VjaGVkID0gKCkgPT4ge307XHJcbiAgLy8gb25DaGFuZ2UgPSAodmFsdWUpID0+IHt9O1xyXG5cclxuICAvLyBnZXQgc2hvd0ludmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgLy8gICByZXR1cm4gdHJ1ZTtcclxuICAvLyAgIC8vIHJldHVybiB0aGlzLmNvbnRyb2wudG91Y2hlZCAmJiAhIXRoaXMuY29udHJvbC5lcnJvcnM7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBnZXQgdmFsaWRhdGlvbk1lc3NhZ2UoKTogc3RyaW5nIHtcclxuICAvLyAgIC8vIGNvbnNvbGUubG9nKHRoaXMuY29udHJvbD8uZXJyb3JzKTtcclxuICAvLyAgIGxldCBlOiBhbnkgPSB7Y29kZTogJ05lem7DoW3DoSBjaHliYSd9O1xyXG4gIC8vICAgY29uc3QgZXJyb3JzID0gdGhpcy5jb250cm9sPy5lcnJvcnMgfHwge307XHJcbiAgLy8gICBPYmplY3Qua2V5cyhlcnJvcnMpLmZpbmQoYSA9PiB7XHJcbiAgLy8gICAgIGUgPSB7Y29kZTogYSwgZGF0YTogZXJyb3JzW2FdfTtcclxuICAvLyAgICAgcmV0dXJuIHRydWU7XHJcbiAgLy8gICB9KTtcclxuICAvLyAgIHN3aXRjaCAoZS5jb2RlKSB7XHJcbiAgLy8gICAgIGNhc2UgJ3JlcXVpcmVkJzpcclxuICAvLyAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ3VpLmNvbnRyb2xzLnZhbGlkYXRpb24ucmVxdWlyZWQnKTtcclxuICAvLyAgICAgY2FzZSAnZW1haWwnOlxyXG4gIC8vICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgndWkuY29udHJvbHMudmFsaWRhdGlvbi5lbWFpbCcpO1xyXG4gIC8vICAgICBjYXNlICdtYXREYXRlcGlja2VyUGFyc2UnOlxyXG4gIC8vICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgndWkuY29udHJvbHMudmFsaWRhdGlvbi5tYXREYXRlcGlja2VyUGFyc2UnKTtcclxuICAvLyAgICAgY2FzZSAnbWF4bGVuZ3RoJzpcclxuICAvLyAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ3VpLmNvbnRyb2xzLnZhbGlkYXRpb24ubWF4bGVuZ3RoJywgZS5kYXRhKTtcclxuICAvLyAgICAgY2FzZSAnbWlubGVuZ3RoJzpcclxuICAvLyAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ3VpLmNvbnRyb2xzLnZhbGlkYXRpb24ubWlubGVuZ3RoJywgZS5kYXRhKTtcclxuICAvLyAgICAgY2FzZSAncG9zaXRpdmUnOlxyXG4gIC8vICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChpc05hTihOdW1iZXIoZS5kYXRhKSkgPyAndWkuY29udHJvbHMudmFsaWRhdGlvbi5pbnZhbGlkTnVtYmVyJyA6ICd1aS5jb250cm9scy52YWxpZGF0aW9uLnBvc2l0aXZlJyk7XHJcbiAgLy8gICAgIGNhc2UgJ2N1c3RvbSc6XHJcbiAgLy8gICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGUuZGF0YSk7XHJcbiAgLy8gICAgIGRlZmF1bHQ6XHJcbiAgLy8gICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGUuY29kZSk7XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICBnZXQgbWF4TGVuUmVxdWlyZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICAgIC8vIHJldHVybiB0aGlzLmNvbnRyb2wudmFsdWUgJiYgKHRoaXMuY29udHJvbC52YWx1ZS5sZW5ndGggPiAodGhpcy52YWxpZGF0b3JzPy5tYXhMZW5ndGggfHwgMCkpO1xyXG4gIH1cclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBIb3N0KCkgQFNraXBTZWxmKCkgcHJvdGVjdGVkIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXHJcbiAgICAvKlxyXG4gICAgYnVkIHByZXMgQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgY29udHJvbDogTmdDb250cm9sIGEgY29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcyA9PiB6dHJhdGltZSBhbGUgY3VzdG9tIHZhbGlkYWNpXHJcbiAgICBhbmVibyBwcmVzIERJIGpha28gcHJvdmlkZXJzIGEgcGFrIHRoaXMuY29udHJvbCA9IHZpeiBuZ09uSW5pdCAtIHBva3VkIGplaiB2dWJlYyBwb3RyZWJ1amVtXHJcblxyXG4gICAgICovXHJcbiAgICAvLyBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgLy8gQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgY29udHJvbDogTmdDb250cm9sLFxyXG4gICAgLy8gQFNlbGYoKSBwcml2YXRlIGNvbnRyb2xEaXJlY3RpdmU6IE5nQ29udHJvbCxcclxuICAgKSB7XHJcbiAgICBzdXBlcihudWxsLCBjb250cm9sQ29udGFpbmVyKTtcclxuXHJcbiAgICAvLyB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgICAvLyBzdXBlcigpO1xyXG4gIC8vICBzdXBlcih1bmRlZmluZWQsIC8qbmdDb250cm9sKi8gdHJhbnNsYXRlU2VydmljZSk7XHJcbiAgICAvLyBzdXBlcihjb250cm9sKTtcclxuICAgIC8vIGNvbnNvbGUubG9nKGNvbnRyb2wpO1xyXG4gICAgLy8gaWYgKGNvbnRyb2wpIHtcclxuICAgIC8vICAgY29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcclxuICAgIC8vIH1cclxuXHJcbiAgICAvLyBpZiAobmdDb250cm9sICE9IG51bGwpIHtcclxuICAgIC8vICAgLy8gU2V0dGluZyB0aGUgdmFsdWUgYWNjZXNzb3IgZGlyZWN0bHkgKGluc3RlYWQgb2YgdXNpbmdcclxuICAgIC8vICAgLy8gdGhlIHByb3ZpZGVycykgdG8gYXZvaWQgcnVubmluZyBpbnRvIGEgY2lyY3VsYXIgaW1wb3J0LlxyXG4gICAgLy8gICBuZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuICBnZXQgc2hvd0NsZWFyQnV0dG9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY2xlYXJCdXR0b24gJiYgdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbD8udmFsdWUgIT09ICcnO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIC8vIGNvbnNvbGUubG9nKCdwcm9iaWhhIHZ1YmVjIG9uaW5pdD8nKTtcclxuICAgIC8vIGlmICh0aGlzLm5nQ29udHJvbCkge1xyXG4gICAgLy8gICBjb25zb2xlLmxvZygnZnJvbSBuZ0NvbnRyb2wuLi4uPz8nKTtcclxuICAgIC8vICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wpIHtcclxuICAgIC8vICAgICB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sID0gdGhpcy5mb3JtQ29udHJvbDtcclxuICAgIC8vICAgfSBlbHNlIHtcclxuICAgIC8vICAgICB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sID0gdGhpcy5uZ0NvbnRyb2wuY29udHJvbCBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAvLyAgICAgdGhpcy5hcHBseVZhbGlkYXRvcnMoKTtcclxuICAgIC8vICAgfSk7XHJcbiAgICAvLyB9IGVsc2Uge1xyXG4gICAgLy8gICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtQ29udHJvbE5hbWUgP1xyXG4gICAgLy8gICAgICh0aGlzLmNvbnRyb2xDb250YWluZXIgYXMgRm9ybUdyb3VwRGlyZWN0aXZlKS5jb250cm9sLmdldCh0aGlzLmZvcm1Db250cm9sTmFtZSkgOiB0aGlzLmZvcm1Db250cm9sO1xyXG4gICAgLy8gICB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sLnNldFZhbGlkYXRvcnMoY29udHJvbC52YWxpZGF0b3IpO1xyXG4gICAgLy8gICB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodiA9PiBjb25zb2xlLmxvZygnb25pdGluIHN1YicsIHYpKTtcclxuICAgIC8vICAgY29udHJvbC5fY29tcG9uZW50Rm9ybUNvbnRyb2wgPSB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sO1xyXG4gICAgLy8gICBpZiAoY29udHJvbC5fbWFya0FzVG91Y2hlZCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAvLyAgICAgLy8gY29udHJvbC5fY29tcG9uZW50Rm9ybUNvbnRyb2wgPSB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sO1xyXG4gICAgLy8gICAgIGNvbnNvbGUubG9nKCdvdmVycmlkaW5nIG1hcmtBc1RvdWNoZWQgZm9yJywgdGhpcy5mb3JtQ29udHJvbE5hbWUpO1xyXG4gICAgLy8gICAgIGNvbnRyb2wuX21hcmtBc1RvdWNoZWQgPSBjb250cm9sLm1hcmtBc1RvdWNoZWQ7XHJcbiAgICAvLyAgICAgY29udHJvbC5tYXJrQXNUb3VjaGVkID0gKHtvbmx5U2VsZn06IHsgb25seVNlbGY/OiBib29sZWFuIH0gPSB7fSk6IHZvaWQgPT4ge1xyXG4gICAgLy8gICAgICAgY29uc29sZS5sb2coJ21hcmtpbmcgYXMgdG91Y2hlZCcsIHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wudmFsdWUsIGNvbnRyb2wudmFsdWUsIHRoaXMueHh4LnZhbHVlLCBjb250cm9sLl9jb21wb25lbnRGb3JtQ29udHJvbC52YWx1ZSk7XHJcbiAgICAvLyAgICAgICBjb250cm9sLl9tYXJrQXNUb3VjaGVkKHtvbmx5U2VsZn0pO1xyXG4gICAgLy8gICAgICAgc2V0VGltZW91dCgoKSA9PiBjb250cm9sLl9jb21wb25lbnRGb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCksIDEwMDApO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgfVxyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgY2xlYXJWYWx1ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2w/LnNldFZhbHVlKCcnKTtcclxuICAgIHRoaXMuaW5wdXQ/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICB9XHJcblxyXG4gIGZvY3VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbnB1dD8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgb25Gb2N1cyhmb2N1czogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5oYXNGb2N1cyA9IGZvY3VzO1xyXG4gICAgdGhpcy5mb2N1c0NoYW5nZWQuZW1pdChmb2N1cyk7XHJcbiAgfVxyXG5cclxuICBvbktleXByZXNzZWQoJGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMua2V5UHJlc3NlZC5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG5cclxuICAvLyByZWdpc3Rlck9uQ2hhbmdlKG9uQ2hhbmdlOiBhbnkpOiB2b2lkIHtcclxuICAvLyAgIHRoaXMub25DaGFuZ2UgPSBvbkNoYW5nZTtcclxuICAvLyB9XHJcbiAgLy9cclxuICAvLyByZWdpc3Rlck9uVG91Y2hlZChvblRvdWNoZWQ6IGFueSk6IHZvaWQge1xyXG4gIC8vICAgdGhpcy5vblRvdWNoZWQgPSBvblRvdWNoZWQ7XHJcbiAgLy8gfVxyXG5cclxuICAvLyByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAvLyAgIC8vIGlzRGlzYWJsZWQgPyB0aGlzLmNvbnRyb2wuZGlzYWJsZSgpIDogdGhpcy5jb250cm9sLmVuYWJsZSgpO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gIC8vICAgLy8gdGhpcy5jb250cm9sID0gY29udHJvbDtcclxuICAvLyAgIC8vIGNvbnNvbGUubG9nKGNvbnRyb2wsIGNvbnRyb2wudmFsdWUsIGNvbnRyb2wuZXJyb3JzKTtcclxuICAvLyAgIGlmICh0aGlzLnZhbHVlID09PSAnZXJyb3InKSB7XHJcbiAgLy8gICAgIHJldHVybiB7IGN1c3RvbUVycm9yOiAnbXVqIGVycm9yJ31cclxuICAvLyAgIH0gZWxzZSB7XHJcbiAgLy8gICAgIHJldHVybiBudWxsO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgLy8gY29uc29sZS5sb2coJ2N1c3RvbSB2YWxpZGF0ZScpO1xyXG4gIC8vICAgLy8gcmV0dXJuIG51bGw7XHJcbiAgLy8gfVxyXG4gIC8vXHJcbiAgLy8gd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xyXG4gIC8vICAgY29uc29sZS5sb2coJ3dyaXRldmFsdWU6ICcsIG9iaik7XHJcbiAgLy8gICB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sLnNldFZhbHVlKG9iaik7XHJcbiAgLy8gICAvLyB0aGlzLnZhbHVlID0gb2JqO1xyXG4gIC8vICAgLy8gdGhpcy5jb250cm9sLnNldFZhbHVlKG9iaik7XHJcbiAgLy8gfVxyXG4gIC8vXHJcbiAgLy8gcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgLy8gfVxyXG4gIC8vXHJcbiAgLy8gcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gIC8vIH1cclxuICAvL1xyXG4gIC8vIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gbW9kZWxDaGFuZ2UoJGV2ZW50OiBhbnkpIHtcclxuICAvLyAgIGNvbnNvbGUubG9nKCRldmVudCk7XHJcbiAgLy8gICB0aGlzLm9uVG91Y2hlZCgpO1xyXG4gIC8vICAgdGhpcy5vbkNoYW5nZSgkZXZlbnQpXHJcbiAgLy8gfVxyXG5cclxuICAvLyB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgLy8gICBjb25zb2xlLmxvZyh0aGlzLmxhYmVsLCAndmFsaWRhdGUnKTtcclxuICAvLyAgIHJldHVybiB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sLmVycm9ycztcclxuICAvLyAgIC8vIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgLy8gfVxyXG5cclxuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICBpZiAodGhpcy5wYXJlbnRGb3JtQ29udHJvbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5wYXJlbnRGb3JtQ29udHJvbC5fY29tcG9uZW50Rm9ybUNvbnRyb2wuZXJyb3JzO1xyXG4gICAgfVxyXG4gICAgLy8gY29uc29sZS5sb2coJ3ZhbGlkYXRlJywgdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC5lcnJvcnMpO1xyXG4gICAgLy8gLy8gdGhpcy5jb21wb25lbnRGb3JtQ29udHJvbC5zZXRFcnJvcnMoIHsgY3VzdG9tOiAneHh4JyB9KTtcclxuICAgIC8vIHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wuc2V0RXJyb3JzKCB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sLmVycm9ycyk7XHJcbiAgICAvLyBjb25zb2xlLmxvZygndmFsaWRhdGUgMicsIHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wuZXJyb3JzKTtcclxuICAgIC8vIHJldHVybiB0aGlzLmNvbXBvbmVudEZvcm1Db250cm9sLmVycm9ycztcclxuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wuZXJyb3JzLCBjb250cm9sLmVycm9ycywgdGhpcy5wYXJlbnRGb3JtQ29udHJvbC5lcnJvcnMsIHRoaXMpO1xyXG4gICAgLy8gcmV0dXJuIHRoaXMuY29tcG9uZW50Rm9ybUNvbnRyb2wuZXJyb3JzO1xyXG4gIH1cclxufVxyXG5cclxuIiwiPHVpLXNpbXBsZS1sYXlvdXQgW2N0eF09XCJ0aGlzXCI+XHJcblxyXG48ZGl2IGNsYXNzPVwiY29udHJvbC1jb250YWluZXJcIiBbbmdDbGFzc109XCJ7J2hhcy1zdWZmaXgnOiBoYXNTdWZmaXgsICdoYXMtcHJlZml4JzogaGFzUHJlZml4LCAnaGFzLWNsZWFyLWljb24nOiBzaG93Q2xlYXJCdXR0b24sICdhY3RpdmUtaWNvbnMnOiBhY3RpdmVJY29ucywgJ2hhcy1mb2N1cyc6IGhhc0ZvY3VzfVwiPlxyXG4gIDxpbnB1dCAjaW5wdXQgW25nQ2xhc3NdPVwie2NlbnRlcmVkOiBjZW50ZXJlZH1cIiBbdHlwZV09XCJ0eXBlXCIgW2Zvcm1Db250cm9sXT1cImNvbXBvbmVudEZvcm1Db250cm9sXCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgKGtleWRvd24pPVwib25LZXlwcmVzc2VkKCRldmVudClcIiAoZm9jdXMpPVwib25Gb2N1cyh0cnVlKVwiIChibHVyKT1cIm9uRm9jdXMoZmFsc2UpXCIgLz5cclxuICA8ZGl2ICNwcmVmaXg+PG5nLWNvbnRlbnQgc2VsZWN0PVwiW3Nsb3Q9cHJlZml4XVwiPjwvbmctY29udGVudD48L2Rpdj5cclxuICA8ZGl2ICNzdWZmaXg+PG5nLWNvbnRlbnQgc2VsZWN0PVwiW3Nsb3Q9c3VmZml4XVwiPjwvbmctY29udGVudD48L2Rpdj5cclxuICA8bWF0LWljb24gKm5nSWY9XCJwcmVmaXhJY29uXCIgY2xhc3M9XCJwcmVmaXgtaWNvblwiIFttYXRUb29sdGlwXT1cInByZWZpeEljb24udG9vbHRpcFwiPnt7IHByZWZpeEljb24uaWNvbiB9fTwvbWF0LWljb24+XHJcbiAgPG1hdC1pY29uICpuZ0lmPVwic3VmZml4SWNvblwiIGNsYXNzPVwic3VmZml4LWljb25cIiBbbWF0VG9vbHRpcF09XCJzdWZmaXhJY29uLnRvb2x0aXBcIj57eyBzdWZmaXhJY29uLmljb24gfX08L21hdC1pY29uPlxyXG4gIDx1aS1hY3Rpb24taWNvbiBbc2l6ZV09XCInc21hbGwnXCIgW2NvbG9yXT1cIid3YXJuJ1wiICpuZ0lmPVwic2hvd0NsZWFyQnV0dG9uXCIgKGNsaWNrKT1cImNsZWFyVmFsdWUoKVwiIFttYXRJY29uXT1cIidjbGVhcidcIiBjbGFzcz1cImNsZWFyLWljb25cIj48L3VpLWFjdGlvbi1pY29uPlxyXG48L2Rpdj5cclxuXHJcbjwvdWktc2ltcGxlLWxheW91dD5cclxuIl19
@@ -51,10 +51,10 @@ export class SelectComponent extends UiSimpleComponent {
51
51
  }
52
52
  }
53
53
  SelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: SelectComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: UI_TRANSLATESERVICE }], target: i0.ɵɵFactoryTarget.Component });
54
- SelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: SelectComponent, selector: "ui-select", inputs: { multiple: "multiple", triggerFormatter: "triggerFormatter", valueAttribute: "valueAttribute", resetText: "resetText", displayAttribute: "displayAttribute", options: "options", optionFormatter: "optionFormatter", optionTemplateRef: "optionTemplateRef", triggerTemplateRef: "triggerTemplateRef", panelClass: "panelClass", allowEmptySelection: "allowEmptySelection" }, viewQueries: [{ propertyName: "select", first: true, predicate: ["select"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ui-simple-layout [ctx]=\"this\">\r\n\r\n<mat-select class=\"control-container\" #select [panelClass]=\"panelClass\" [placeholder]=\"placeholder\" [formControl]=\"componentFormControl\" [multiple]=\"multiple\">\r\n\r\n <mat-select-trigger *ngIf=\"triggerTemplateRef\">\r\n <ng-template [ngTemplateOutlet]=\"triggerTemplateRef\" [ngTemplateOutletContext]=\"{option:componentFormControl?.value}\" ></ng-template>\r\n </mat-select-trigger>\r\n\r\n <mat-select-trigger *ngIf=\"triggerFormatter\">{{componentFormControl?.value ? triggerFormatter(componentFormControl?.value) : ''}}</mat-select-trigger>\r\n\r\n <mat-option *ngIf=\"resetText\">{{resetText}}</mat-option>\r\n\r\n <mat-option *ngFor=\"let o of options\" [value]=\"optionToValue(o)\" >\r\n\r\n <div class=\"option-container\" (mouseenter)=\"overoption = true;\" (mouseleave)=\"overoption = false\">\r\n\r\n <ng-container *ngIf=\"optionTemplateRef\">\r\n <ng-template [ngTemplateOutlet]=\"optionTemplateRef\" [ngTemplateOutletContext]=\"{option:o}\" ></ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!optionTemplateRef\">\r\n {{optionFormatter(o)}}\r\n </ng-container>\r\n\r\n <mat-icon class=\"select-one\" *ngIf=\"multiple && componentFormControl?.value?.length === 0\" (click)=\"selectOption(o, select)\">north_west</mat-icon>\r\n </div>\r\n\r\n </mat-option>\r\n\r\n <div class=\"buttons\" *ngIf=\"multiple\">\r\n <ui-button style=\"margin-right: auto;\" [kind]=\"'basic'\" [size]=\"'smaller'\" [label]=\"translateService.instant('ui.controls.ui-select.clear-selection')\" (click)=\"clearAll()\"></ui-button>\r\n <ui-button [size]=\"'smaller'\" [label]=\"translateService.instant('ui.controls.ui-select.all')\" (click)=\"selectAll()\"></ui-button>\r\n <ui-button [size]=\"'smaller'\" style=\"padding-left: 0.2em;\" [disabled]=\"componentFormControl?.value?.length === 0 && !allowEmptySelection\" [label]=\"translateService.instant('ui.controls.ui-select.apply-selection') + (componentFormControl?.value?.length > 0 ? ' (' + componentFormControl.value.length + ')' : '')\" (click)=\"select.close()\"></ui-button>\r\n </div>\r\n\r\n</mat-select>\r\n\r\n</ui-simple-layout>\r\n", styles: [":host{width:100%}:host .control-container{width:100%;position:relative}:host ::ng-deep [slot=suffix]{position:absolute;cursor:pointer;user-select:none;transition:color .25s;top:calc(50% - .5em);right:.2em;width:1em;height:1em;font-size:1.5em}:host ::ng-deep [slot=prefix]{position:absolute;cursor:pointer;user-select:none;transition:color .25s;top:calc(50% - .5em);left:.2em;width:1em;height:1em;font-size:1.5em}:host ::ng-deep input,:host ::ng-deep textarea,:host ::ng-deep ::ng-deep .mat-select-trigger,:host ::ng-deep ::ng-deep .mat-mdc-select-trigger{resize:none;width:100%;line-height:1.2em;font-size:1em;outline:none;border-style:solid;transition:border-color 333ms}:host ::ng-deep input.has-suffix,:host ::ng-deep textarea.has-suffix,:host ::ng-deep ::ng-deep .mat-select-trigger.has-suffix,:host ::ng-deep ::ng-deep .mat-mdc-select-trigger.has-suffix{padding-right:1.8em}:host ::ng-deep input.centered,:host ::ng-deep textarea.centered,:host ::ng-deep ::ng-deep .mat-select-trigger.centered,:host ::ng-deep ::ng-deep .mat-mdc-select-trigger.centered{text-align:center}:host ::ng-deep textarea.autoresize{box-sizing:content-box;width:calc(100% - 1.4em)}:host ::ng-deep ::ng-deep .mat-select-trigger,:host ::ng-deep ::ng-deep .mat-mdc-select-trigger{height:100%}:host ::ng-deep ::ng-deep .mat-select-value,:host ::ng-deep ::ng-deep .mat-mdc-select-value{vertical-align:middle}::ng-deep ui-input{display:block}\n", "::ng-deep .mat-mdc-select-panel{padding:0!important}::ng-deep .mat-mdc-select-arrow-wrapper{height:1px!important}::ng-deep .mat-select-panel .select-one,::ng-deep .mat-mdc-select-panel .select-one{position:absolute;right:0;top:.3em;display:none}::ng-deep .mat-select-panel .mat-option-text:hover .select-one,::ng-deep .mat-select-panel .mat-mdc-option:hover .select-one,::ng-deep .mat-mdc-select-panel .mat-option-text:hover .select-one,::ng-deep .mat-mdc-select-panel .mat-mdc-option:hover .select-one{display:block}::ng-deep .mat-select-panel .buttons,::ng-deep .mat-mdc-select-panel .buttons{padding:.2em;background-color:#fff;display:flex;position:sticky;bottom:0}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "directive", type: i4.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i6.ButtonComponent, selector: "ui-button", inputs: ["type", "matIconPrefix", "label", "disabled", "busy", "kind", "color", "size", "formInvalid"] }, { kind: "component", type: i7.UiSimpleLayoutComponent, selector: "ui-simple-layout", inputs: ["ctx"] }] });
54
+ SelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: SelectComponent, selector: "ui-select", inputs: { multiple: "multiple", triggerFormatter: "triggerFormatter", valueAttribute: "valueAttribute", resetText: "resetText", displayAttribute: "displayAttribute", options: "options", optionFormatter: "optionFormatter", optionTemplateRef: "optionTemplateRef", triggerTemplateRef: "triggerTemplateRef", panelClass: "panelClass", allowEmptySelection: "allowEmptySelection" }, viewQueries: [{ propertyName: "select", first: true, predicate: ["select"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ui-simple-layout [ctx]=\"this\">\r\n\r\n<mat-select class=\"control-container\" #select [panelClass]=\"panelClass\" [placeholder]=\"placeholder\" [formControl]=\"componentFormControl\" [multiple]=\"multiple\">\r\n\r\n <mat-select-trigger *ngIf=\"triggerTemplateRef\">\r\n <ng-template [ngTemplateOutlet]=\"triggerTemplateRef\" [ngTemplateOutletContext]=\"{option:componentFormControl?.value}\" ></ng-template>\r\n </mat-select-trigger>\r\n\r\n <mat-select-trigger *ngIf=\"triggerFormatter\">{{componentFormControl?.value ? triggerFormatter(componentFormControl?.value) : ''}}</mat-select-trigger>\r\n\r\n <mat-option *ngIf=\"resetText\">{{resetText}}</mat-option>\r\n\r\n <mat-option *ngFor=\"let o of options\" [value]=\"optionToValue(o)\" >\r\n\r\n <div class=\"option-container\" (mouseenter)=\"overoption = true;\" (mouseleave)=\"overoption = false\">\r\n\r\n <ng-container *ngIf=\"optionTemplateRef\">\r\n <ng-template [ngTemplateOutlet]=\"optionTemplateRef\" [ngTemplateOutletContext]=\"{option:o}\" ></ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!optionTemplateRef\">\r\n {{optionFormatter(o)}}\r\n </ng-container>\r\n\r\n <mat-icon class=\"select-one\" *ngIf=\"multiple && componentFormControl?.value?.length === 0\" (click)=\"selectOption(o, select)\">north_west</mat-icon>\r\n </div>\r\n\r\n </mat-option>\r\n\r\n <div class=\"buttons\" *ngIf=\"multiple\">\r\n <ui-button style=\"margin-right: auto;\" [kind]=\"'basic'\" [size]=\"'smaller'\" [label]=\"translateService.instant('ui.controls.ui-select.clear-selection')\" (click)=\"clearAll()\"></ui-button>\r\n <ui-button [size]=\"'smaller'\" [label]=\"translateService.instant('ui.controls.ui-select.all')\" (click)=\"selectAll()\"></ui-button>\r\n <ui-button [size]=\"'smaller'\" style=\"padding-left: 0.2em;\" [disabled]=\"componentFormControl?.value?.length === 0 && !allowEmptySelection\" [label]=\"translateService.instant('ui.controls.ui-select.apply-selection') + (componentFormControl?.value?.length > 0 ? ' (' + componentFormControl.value.length + ')' : '')\" (click)=\"select.close()\"></ui-button>\r\n </div>\r\n\r\n</mat-select>\r\n\r\n</ui-simple-layout>\r\n", styles: [":host{width:100%}:host .control-container{width:100%;position:relative}:host .control-container.has-prefix ::ng-deep input,:host .control-container.has-prefix ::ng-deep textarea,:host .control-container.has-prefix ::ng-deep .mat-mdc-select-trigger{padding-left:1.8em}:host .control-container.has-suffix ::ng-deep input,:host .control-container.has-suffix ::ng-deep textarea,:host .control-container.has-suffix ::ng-deep .mat-mdc-select-trigger{padding-right:1.8em}:host .control-container.has-suffix.has-clear-icon ::ng-deep input,:host .control-container.has-suffix.has-clear-icon ::ng-deep textarea,:host .control-container.has-suffix.has-clear-icon ::ng-deep .mat-mdc-select-trigger{padding-right:3.6em}:host .control-container.has-suffix.has-clear-icon ::ng-deep .clear-icon{right:1.4em!important}:host ::ng-deep [slot=suffix],:host ::ng-deep .clear-icon,:host ::ng-deep .suffix-icon{position:absolute;user-select:none;transition:color .25s;top:calc(50% - .5em);right:.2em;width:1em;height:1em;font-size:1.5em}:host ::ng-deep [slot=suffix]:not(.disabled),:host ::ng-deep .clear-icon:not(.disabled),:host ::ng-deep .suffix-icon:not(.disabled){cursor:pointer}:host ::ng-deep [slot=prefix],:host ::ng-deep .prefix-icon{position:absolute;user-select:none;transition:color .25s;top:calc(50% - .5em);left:.2em;width:1em;height:1em;font-size:1.5em}:host ::ng-deep [slot=prefix]:not(.disabled),:host ::ng-deep .prefix-icon:not(.disabled){cursor:pointer}:host ::ng-deep input,:host ::ng-deep textarea,:host ::ng-deep .mat-mdc-select-trigger{resize:none;width:100%;line-height:1.2em;font-size:1em;outline:none;border-style:solid;transition:border-color 333ms}:host ::ng-deep input.centered,:host ::ng-deep textarea.centered,:host ::ng-deep .mat-mdc-select-trigger.centered{text-align:center}:host ::ng-deep textarea.autoresize{box-sizing:content-box;width:calc(100% - 1.4em)}:host ::ng-deep ::ng-deep .mat-select-trigger,:host ::ng-deep ::ng-deep .mat-mdc-select-trigger{height:100%}:host ::ng-deep ::ng-deep .mat-select-value,:host ::ng-deep ::ng-deep .mat-mdc-select-value{vertical-align:middle}::ng-deep ui-input{display:block}\n", "::ng-deep .mat-mdc-select-panel{padding:0!important}::ng-deep .mat-mdc-select-arrow-wrapper{height:1px!important}::ng-deep .mat-select-panel .select-one,::ng-deep .mat-mdc-select-panel .select-one{position:absolute;right:0;top:.3em;display:none}::ng-deep .mat-select-panel .mat-option-text:hover .select-one,::ng-deep .mat-select-panel .mat-mdc-option:hover .select-one,::ng-deep .mat-mdc-select-panel .mat-option-text:hover .select-one,::ng-deep .mat-mdc-select-panel .mat-mdc-option:hover .select-one{display:block}::ng-deep .mat-select-panel .buttons,::ng-deep .mat-mdc-select-panel .buttons{padding:.2em;background-color:#fff;display:flex;position:sticky;bottom:0}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "directive", type: i4.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i6.ButtonComponent, selector: "ui-button", inputs: ["type", "matIconPrefix", "label", "disabled", "busy", "kind", "color", "size", "formInvalid"] }, { kind: "component", type: i7.UiSimpleLayoutComponent, selector: "ui-simple-layout", inputs: ["ctx"] }] });
55
55
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: SelectComponent, decorators: [{
56
56
  type: Component,
57
- args: [{ selector: 'ui-select', template: "<ui-simple-layout [ctx]=\"this\">\r\n\r\n<mat-select class=\"control-container\" #select [panelClass]=\"panelClass\" [placeholder]=\"placeholder\" [formControl]=\"componentFormControl\" [multiple]=\"multiple\">\r\n\r\n <mat-select-trigger *ngIf=\"triggerTemplateRef\">\r\n <ng-template [ngTemplateOutlet]=\"triggerTemplateRef\" [ngTemplateOutletContext]=\"{option:componentFormControl?.value}\" ></ng-template>\r\n </mat-select-trigger>\r\n\r\n <mat-select-trigger *ngIf=\"triggerFormatter\">{{componentFormControl?.value ? triggerFormatter(componentFormControl?.value) : ''}}</mat-select-trigger>\r\n\r\n <mat-option *ngIf=\"resetText\">{{resetText}}</mat-option>\r\n\r\n <mat-option *ngFor=\"let o of options\" [value]=\"optionToValue(o)\" >\r\n\r\n <div class=\"option-container\" (mouseenter)=\"overoption = true;\" (mouseleave)=\"overoption = false\">\r\n\r\n <ng-container *ngIf=\"optionTemplateRef\">\r\n <ng-template [ngTemplateOutlet]=\"optionTemplateRef\" [ngTemplateOutletContext]=\"{option:o}\" ></ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!optionTemplateRef\">\r\n {{optionFormatter(o)}}\r\n </ng-container>\r\n\r\n <mat-icon class=\"select-one\" *ngIf=\"multiple && componentFormControl?.value?.length === 0\" (click)=\"selectOption(o, select)\">north_west</mat-icon>\r\n </div>\r\n\r\n </mat-option>\r\n\r\n <div class=\"buttons\" *ngIf=\"multiple\">\r\n <ui-button style=\"margin-right: auto;\" [kind]=\"'basic'\" [size]=\"'smaller'\" [label]=\"translateService.instant('ui.controls.ui-select.clear-selection')\" (click)=\"clearAll()\"></ui-button>\r\n <ui-button [size]=\"'smaller'\" [label]=\"translateService.instant('ui.controls.ui-select.all')\" (click)=\"selectAll()\"></ui-button>\r\n <ui-button [size]=\"'smaller'\" style=\"padding-left: 0.2em;\" [disabled]=\"componentFormControl?.value?.length === 0 && !allowEmptySelection\" [label]=\"translateService.instant('ui.controls.ui-select.apply-selection') + (componentFormControl?.value?.length > 0 ? ' (' + componentFormControl.value.length + ')' : '')\" (click)=\"select.close()\"></ui-button>\r\n </div>\r\n\r\n</mat-select>\r\n\r\n</ui-simple-layout>\r\n", styles: [":host{width:100%}:host .control-container{width:100%;position:relative}:host ::ng-deep [slot=suffix]{position:absolute;cursor:pointer;user-select:none;transition:color .25s;top:calc(50% - .5em);right:.2em;width:1em;height:1em;font-size:1.5em}:host ::ng-deep [slot=prefix]{position:absolute;cursor:pointer;user-select:none;transition:color .25s;top:calc(50% - .5em);left:.2em;width:1em;height:1em;font-size:1.5em}:host ::ng-deep input,:host ::ng-deep textarea,:host ::ng-deep ::ng-deep .mat-select-trigger,:host ::ng-deep ::ng-deep .mat-mdc-select-trigger{resize:none;width:100%;line-height:1.2em;font-size:1em;outline:none;border-style:solid;transition:border-color 333ms}:host ::ng-deep input.has-suffix,:host ::ng-deep textarea.has-suffix,:host ::ng-deep ::ng-deep .mat-select-trigger.has-suffix,:host ::ng-deep ::ng-deep .mat-mdc-select-trigger.has-suffix{padding-right:1.8em}:host ::ng-deep input.centered,:host ::ng-deep textarea.centered,:host ::ng-deep ::ng-deep .mat-select-trigger.centered,:host ::ng-deep ::ng-deep .mat-mdc-select-trigger.centered{text-align:center}:host ::ng-deep textarea.autoresize{box-sizing:content-box;width:calc(100% - 1.4em)}:host ::ng-deep ::ng-deep .mat-select-trigger,:host ::ng-deep ::ng-deep .mat-mdc-select-trigger{height:100%}:host ::ng-deep ::ng-deep .mat-select-value,:host ::ng-deep ::ng-deep .mat-mdc-select-value{vertical-align:middle}::ng-deep ui-input{display:block}\n", "::ng-deep .mat-mdc-select-panel{padding:0!important}::ng-deep .mat-mdc-select-arrow-wrapper{height:1px!important}::ng-deep .mat-select-panel .select-one,::ng-deep .mat-mdc-select-panel .select-one{position:absolute;right:0;top:.3em;display:none}::ng-deep .mat-select-panel .mat-option-text:hover .select-one,::ng-deep .mat-select-panel .mat-mdc-option:hover .select-one,::ng-deep .mat-mdc-select-panel .mat-option-text:hover .select-one,::ng-deep .mat-mdc-select-panel .mat-mdc-option:hover .select-one{display:block}::ng-deep .mat-select-panel .buttons,::ng-deep .mat-mdc-select-panel .buttons{padding:.2em;background-color:#fff;display:flex;position:sticky;bottom:0}\n"] }]
57
+ args: [{ selector: 'ui-select', template: "<ui-simple-layout [ctx]=\"this\">\r\n\r\n<mat-select class=\"control-container\" #select [panelClass]=\"panelClass\" [placeholder]=\"placeholder\" [formControl]=\"componentFormControl\" [multiple]=\"multiple\">\r\n\r\n <mat-select-trigger *ngIf=\"triggerTemplateRef\">\r\n <ng-template [ngTemplateOutlet]=\"triggerTemplateRef\" [ngTemplateOutletContext]=\"{option:componentFormControl?.value}\" ></ng-template>\r\n </mat-select-trigger>\r\n\r\n <mat-select-trigger *ngIf=\"triggerFormatter\">{{componentFormControl?.value ? triggerFormatter(componentFormControl?.value) : ''}}</mat-select-trigger>\r\n\r\n <mat-option *ngIf=\"resetText\">{{resetText}}</mat-option>\r\n\r\n <mat-option *ngFor=\"let o of options\" [value]=\"optionToValue(o)\" >\r\n\r\n <div class=\"option-container\" (mouseenter)=\"overoption = true;\" (mouseleave)=\"overoption = false\">\r\n\r\n <ng-container *ngIf=\"optionTemplateRef\">\r\n <ng-template [ngTemplateOutlet]=\"optionTemplateRef\" [ngTemplateOutletContext]=\"{option:o}\" ></ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!optionTemplateRef\">\r\n {{optionFormatter(o)}}\r\n </ng-container>\r\n\r\n <mat-icon class=\"select-one\" *ngIf=\"multiple && componentFormControl?.value?.length === 0\" (click)=\"selectOption(o, select)\">north_west</mat-icon>\r\n </div>\r\n\r\n </mat-option>\r\n\r\n <div class=\"buttons\" *ngIf=\"multiple\">\r\n <ui-button style=\"margin-right: auto;\" [kind]=\"'basic'\" [size]=\"'smaller'\" [label]=\"translateService.instant('ui.controls.ui-select.clear-selection')\" (click)=\"clearAll()\"></ui-button>\r\n <ui-button [size]=\"'smaller'\" [label]=\"translateService.instant('ui.controls.ui-select.all')\" (click)=\"selectAll()\"></ui-button>\r\n <ui-button [size]=\"'smaller'\" style=\"padding-left: 0.2em;\" [disabled]=\"componentFormControl?.value?.length === 0 && !allowEmptySelection\" [label]=\"translateService.instant('ui.controls.ui-select.apply-selection') + (componentFormControl?.value?.length > 0 ? ' (' + componentFormControl.value.length + ')' : '')\" (click)=\"select.close()\"></ui-button>\r\n </div>\r\n\r\n</mat-select>\r\n\r\n</ui-simple-layout>\r\n", styles: [":host{width:100%}:host .control-container{width:100%;position:relative}:host .control-container.has-prefix ::ng-deep input,:host .control-container.has-prefix ::ng-deep textarea,:host .control-container.has-prefix ::ng-deep .mat-mdc-select-trigger{padding-left:1.8em}:host .control-container.has-suffix ::ng-deep input,:host .control-container.has-suffix ::ng-deep textarea,:host .control-container.has-suffix ::ng-deep .mat-mdc-select-trigger{padding-right:1.8em}:host .control-container.has-suffix.has-clear-icon ::ng-deep input,:host .control-container.has-suffix.has-clear-icon ::ng-deep textarea,:host .control-container.has-suffix.has-clear-icon ::ng-deep .mat-mdc-select-trigger{padding-right:3.6em}:host .control-container.has-suffix.has-clear-icon ::ng-deep .clear-icon{right:1.4em!important}:host ::ng-deep [slot=suffix],:host ::ng-deep .clear-icon,:host ::ng-deep .suffix-icon{position:absolute;user-select:none;transition:color .25s;top:calc(50% - .5em);right:.2em;width:1em;height:1em;font-size:1.5em}:host ::ng-deep [slot=suffix]:not(.disabled),:host ::ng-deep .clear-icon:not(.disabled),:host ::ng-deep .suffix-icon:not(.disabled){cursor:pointer}:host ::ng-deep [slot=prefix],:host ::ng-deep .prefix-icon{position:absolute;user-select:none;transition:color .25s;top:calc(50% - .5em);left:.2em;width:1em;height:1em;font-size:1.5em}:host ::ng-deep [slot=prefix]:not(.disabled),:host ::ng-deep .prefix-icon:not(.disabled){cursor:pointer}:host ::ng-deep input,:host ::ng-deep textarea,:host ::ng-deep .mat-mdc-select-trigger{resize:none;width:100%;line-height:1.2em;font-size:1em;outline:none;border-style:solid;transition:border-color 333ms}:host ::ng-deep input.centered,:host ::ng-deep textarea.centered,:host ::ng-deep .mat-mdc-select-trigger.centered{text-align:center}:host ::ng-deep textarea.autoresize{box-sizing:content-box;width:calc(100% - 1.4em)}:host ::ng-deep ::ng-deep .mat-select-trigger,:host ::ng-deep ::ng-deep .mat-mdc-select-trigger{height:100%}:host ::ng-deep ::ng-deep .mat-select-value,:host ::ng-deep ::ng-deep .mat-mdc-select-value{vertical-align:middle}::ng-deep ui-input{display:block}\n", "::ng-deep .mat-mdc-select-panel{padding:0!important}::ng-deep .mat-mdc-select-arrow-wrapper{height:1px!important}::ng-deep .mat-select-panel .select-one,::ng-deep .mat-mdc-select-panel .select-one{position:absolute;right:0;top:.3em;display:none}::ng-deep .mat-select-panel .mat-option-text:hover .select-one,::ng-deep .mat-select-panel .mat-mdc-option:hover .select-one,::ng-deep .mat-mdc-select-panel .mat-option-text:hover .select-one,::ng-deep .mat-mdc-select-panel .mat-mdc-option:hover .select-one{display:block}::ng-deep .mat-select-panel .buttons,::ng-deep .mat-mdc-select-panel .buttons{padding:.2em;background-color:#fff;display:flex;position:sticky;bottom:0}\n"] }]
58
58
  }], ctorParameters: function () { return [{ type: i1.NgControl, decorators: [{
59
59
  type: Optional
60
60
  }, {