@recursyve/nice-data-filter-kit 13.0.1 → 13.0.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.
Files changed (20) hide show
  1. package/esm2020/lib/components/base-list/base-list.component.mjs +13 -15
  2. package/esm2020/lib/components/base-list/store/base-list.service.mjs +4 -4
  3. package/esm2020/lib/components/multi-state-list/multi-state-list.component.mjs +11 -12
  4. package/esm2020/lib/components/query-builder/filter-selection/filter-selection.component.mjs +3 -3
  5. package/esm2020/lib/components/query-builder/rule/components/date/date-filter.component.mjs +3 -3
  6. package/esm2020/lib/components/query-builder/rule/components/number/number-filter.component.mjs +3 -3
  7. package/esm2020/lib/components/query-builder/rule/components/radio/radio-filter.component.mjs +3 -3
  8. package/esm2020/lib/components/query-builder/rule/components/select/select-filter.component.mjs +3 -3
  9. package/esm2020/lib/components/query-builder/rule/components/text/text-filter.component.mjs +3 -3
  10. package/esm2020/lib/components/query-builder/rule/rule.component.mjs +3 -3
  11. package/fesm2015/recursyve-nice-data-filter-kit.mjs +34 -35
  12. package/fesm2015/recursyve-nice-data-filter-kit.mjs.map +1 -1
  13. package/fesm2020/recursyve-nice-data-filter-kit.mjs +34 -35
  14. package/fesm2020/recursyve-nice-data-filter-kit.mjs.map +1 -1
  15. package/lib/components/base-list/base-list.component.d.ts +3 -4
  16. package/lib/components/multi-state-list/multi-state-list.component.d.ts +2 -2
  17. package/package.json +7 -8
  18. package/src/lib/components/query-builder/filter-selection/filter-selection.theme.scss +41 -0
  19. package/src/lib/components/query-builder/query-builder.theme.scss +2 -0
  20. package/src/lib/components/query-builder/rule/rule.theme.scss +82 -0
@@ -102,15 +102,15 @@ export class NiceBaseListService {
102
102
  const { disabled } = this.store.getValue();
103
103
  try {
104
104
  const filterParameters = this.mergeParameters(parameters);
105
+ if (filterParameters) {
106
+ this.setParameters(filterParameters, disabled ? false : updateQueryParams);
107
+ }
105
108
  if (!disabled) {
106
109
  this.store.setLoading(true);
107
110
  this.loadingData = true;
108
111
  const result = await firstValueFrom(this.filterService.filter(this.getParameters(filterParameters)));
109
112
  this.store.setResult(result, reset);
110
113
  }
111
- if (filterParameters) {
112
- this.setParameters(filterParameters, disabled ? false : updateQueryParams);
113
- }
114
114
  }
115
115
  catch (e) {
116
116
  this.store.setError(e);
@@ -338,4 +338,4 @@ NiceBaseListService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0",
338
338
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: NiceBaseListService, decorators: [{
339
339
  type: Injectable
340
340
  }], ctorParameters: function () { return [{ type: i1.NiceBaseListStore }, { type: i2.NiceFilterService }, { type: i3.ActivatedRoute }, { type: i3.Router }, { type: i0.ApplicationRef }]; } });
341
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1saXN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uaWNlLWRhdGEtZmlsdGVyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvYmFzZS1saXN0L3N0b3JlL2Jhc2UtbGlzdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdoRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7OztBQUd0RCxNQUFNLE9BQU8sbUJBQW1CO0lBTzVCLFlBQ2MsS0FBd0IsRUFDeEIsYUFBcUMsRUFDckMsY0FBOEIsRUFDOUIsTUFBYyxFQUNkLE1BQXNCO1FBSnRCLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLGtCQUFhLEdBQWIsYUFBYSxDQUF3QjtRQUNyQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7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QWlDLEVBQUUsb0JBQTZCLElBQUk7UUFDdEYsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckMsSUFBSSxpQkFBaUIsRUFBRTtZQUNuQixJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsMkJBQTJCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztTQUNwRjtJQUNMLENBQUM7O2dIQXpXUSxtQkFBbUI7b0hBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwbGljYXRpb25SZWYsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7IGFycmF5UmVtb3ZlLCBhcnJheVVwc2VydCB9IGZyb20gXCJAZGF0b3JhbWEvYWtpdGFcIjtcbmltcG9ydCB7IEZpbGVVdGlscyB9IGZyb20gXCJAcmVjdXJzeXZlL25pY2UtdWkta2l0LnYyXCI7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBtYXAsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgRmlsdGVyQ29uZmlndXJhdGlvbk1vZGVsLCBGaWx0ZXJQYXJhbWV0ZXJzTW9kZWwgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2ZpbHRlci5tb2RlbFwiO1xuaW1wb3J0IHsgUXVlcnlNb2RlbCwgUXVlcnlSdWxlTW9kZWwgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL3F1ZXJ5Lm1vZGVsXCI7XG5pbXBvcnQgeyBGaWx0ZXJVdGlscyB9IGZyb20gXCIuLi8uLi8uLi91dGlscy9maWx0ZXIudXRpbHNcIjtcbmltcG9ydCB7IFF1ZXJ5UGFyYW1zVXRpbHMgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvcXVlcnktcGFyYW1zLnV0aWxzXCI7XG5pbXBvcnQgeyBRQkZpbHRlclV0aWxzIH0gZnJvbSBcIi4uLy4uL3F1ZXJ5LWJ1aWxkZXIvdXRpbHMvcWItZmlsdGVyLnV0aWxzXCI7XG5pbXBvcnQgeyBOaWNlRmlsdGVyU2VydmljZSB9IGZyb20gXCIuLi9wcm92aWRlcnMvYmFzZS1maWx0ZXIuc2VydmljZVwiO1xuaW1wb3J0IHsgTmljZUJhc2VMaXN0U3RvcmUgfSBmcm9tIFwiLi9iYXNlLWxpc3Quc3RvcmVcIjtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5pY2VCYXNlTGlzdFNlcnZpY2Uge1xuICAgIHB1YmxpYyBxdWVyeVBhcmFtc0xvYWRlZCQgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgcHJvdGVjdGVkIGRvd25sb2FkRmlsZU5hbWUgPSBcImRhdGFcIjtcbiAgICBwcm90ZWN0ZWQgdW5zdWJzY3JpYmVBbGwkID0gbmV3IFN1YmplY3QoKTtcbiAgICBwcm90ZWN0ZWQgbG9hZGluZ0RhdGEgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgc3RvcmU6IE5pY2VCYXNlTGlzdFN0b3JlLFxuICAgICAgICBwcm90ZWN0ZWQgZmlsdGVyU2VydmljZTogTmljZUZpbHRlclNlcnZpY2U8YW55PixcbiAgICAgICAgcHJvdGVjdGVkIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcm90ZWN0ZWQgYXBwUmVmOiBBcHBsaWNhdGlvblJlZlxuICAgICkge1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLnN0b3JlLnNldEZpbHRlckNvbmZpZ0xvYWRpbmcodHJ1ZSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJDb25maWcgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmZpbHRlclNlcnZpY2UuZ2V0RmlsdGVyQ29uZmlnKCkpO1xuICAgICAgICAgICAgdGhpcy5zdG9yZS51cGRhdGUoe1xuICAgICAgICAgICAgICAgIGZpbHRlckNvbmZpZ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuc2V0RXJyb3IoZSk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNldEZpbHRlckNvbmZpZ0xvYWRpbmcoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlc2V0U3RvcmUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmUucmVzZXQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXREYXRhKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JlLnVwZGF0ZSh7XG4gICAgICAgICAgICBmaWx0ZXJSZXN1bHQ6IG51bGxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsb3NlU3Vic2NyaXB0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZUFsbCQubmV4dChudWxsKTtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZUFsbCQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5xdWVyeVBhcmFtc0xvYWRlZCQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGlzYWJsZUxpc3QoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmUudXBkYXRlKHtcbiAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBlbmFibGVMaXN0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JlLnVwZGF0ZSh7XG4gICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldExvYWRpbmcobG9hZGluZzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JlLnNldExvYWRpbmcobG9hZGluZyk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldE1vZGUobW9kZTogXCJub3JtYWxcIiB8IFwiaW5maW5pdGUtc2Nyb2xsXCIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdG9yZS51cGRhdGUoe1xuICAgICAgICAgICAgbWVyZ2VQYWdlUmVzdWx0czogbW9kZSA9PT0gXCJpbmZpbml0ZS1zY3JvbGxcIlxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9hZFF1ZXJ5UGFyYW1zKGF1dG9Mb2FkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aXZhdGVkUm91dGU/LnF1ZXJ5UGFyYW1zXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZUFsbCQpLFxuICAgICAgICAgICAgICAgIG1hcCgocGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IFF1ZXJ5UGFyYW1zVXRpbHMuZXh0cmFjdEZpbHRlclBhcmFtZXRlcnMocGFyYW1zKVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh7IHBhcmFtcyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFwYXJhbXMgfHwgT2JqZWN0LmtleXMocGFyYW1zKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zID0gdGhpcy5zdG9yZS5nZXRWYWx1ZSgpLmZpbHRlclBhcmFtZXRlcnM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHsgZmlsdGVyUGFyYW1ldGVycywgZmlsdGVyUmVzdWx0IH0gPSB0aGlzLnN0b3JlLmdldFZhbHVlKCk7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBGaWx0ZXJVdGlscy5maWx0ZXJDaGFuZ2VOZWVkc1JlZnJlc2goZmlsdGVyUGFyYW1ldGVycywgcGFyYW1zKSB8fFxuICAgICAgICAgICAgICAgICAgICAhZmlsdGVyUmVzdWx0XG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhdXRvTG9hZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkRGF0YShwYXJhbXMsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UGFyYW1ldGVycyhwYXJhbXMsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMucXVlcnlQYXJhbXNMb2FkZWQkLm5leHQobnVsbCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVzZXRBbmRMb2FkRGF0YShwYXJhbWV0ZXJzPzogRmlsdGVyUGFyYW1ldGVyc01vZGVsLCB1cGRhdGVRdWVyeVBhcmFtczogYm9vbGVhbiA9IHRydWUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZERhdGEocGFyYW1ldGVycywgdXBkYXRlUXVlcnlQYXJhbXMsIHRydWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBsb2FkRGF0YShwYXJhbWV0ZXJzPzogRmlsdGVyUGFyYW1ldGVyc01vZGVsLCB1cGRhdGVRdWVyeVBhcmFtczogYm9vbGVhbiA9IHRydWUsIHJlc2V0OiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgeyBkaXNhYmxlZCB9ID0gdGhpcy5zdG9yZS5nZXRWYWx1ZSgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyUGFyYW1ldGVycyA9IHRoaXMubWVyZ2VQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpO1xuICAgICAgICAgICAgaWYgKCFkaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUuc2V0TG9hZGluZyh0cnVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmdEYXRhID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyKHRoaXMuZ2V0UGFyYW1ldGVycyhmaWx0ZXJQYXJhbWV0ZXJzKSkpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUuc2V0UmVzdWx0KHJlc3VsdCwgcmVzZXQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZmlsdGVyUGFyYW1ldGVycykge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0UGFyYW1ldGVycyhmaWx0ZXJQYXJhbWV0ZXJzLCBkaXNhYmxlZCA/IGZhbHNlIDogdXBkYXRlUXVlcnlQYXJhbXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNldEVycm9yKGUpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5zZXRMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ0RhdGEgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZWFyY2hEYXRhKHNlYXJjaDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHsgZmlsdGVyUGFyYW1ldGVycyB9ID0gdGhpcy5zdG9yZS5nZXRWYWx1ZSgpO1xuICAgICAgICBhd2FpdCB0aGlzLmxvYWREYXRhKHtcbiAgICAgICAgICAgIC4uLmZpbHRlclBhcmFtZXRlcnMsXG4gICAgICAgICAgICBzZWFyY2hcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGxvYWROZXdQYWdlKHN0YXJ0OiBudW1iZXIsIGxlbmd0aDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHsgZmlsdGVyUGFyYW1ldGVycyB9ID0gdGhpcy5zdG9yZS5nZXRWYWx1ZSgpO1xuICAgICAgICBhd2FpdCB0aGlzLmxvYWREYXRhKHtcbiAgICAgICAgICAgIC4uLmZpbHRlclBhcmFtZXRlcnMsXG4gICAgICAgICAgICBzdGFydCxcbiAgICAgICAgICAgIGxlbmd0aFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgbG9hZE5leHRQYWdlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB7IGZpbHRlclBhcmFtZXRlcnMgfSA9IHRoaXMuc3RvcmUuZ2V0VmFsdWUoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5sb2FkRGF0YSh7XG4gICAgICAgICAgICAuLi5maWx0ZXJQYXJhbWV0ZXJzLFxuICAgICAgICAgICAgc3RhcnQ6IGZpbHRlclBhcmFtZXRlcnMuc3RhcnQgKyBmaWx0ZXJQYXJhbWV0ZXJzLmxlbmd0aFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVzZXRQYWdpbmcoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHsgZmlsdGVyUGFyYW1ldGVycyB9ID0gdGhpcy5zdG9yZS5nZXRWYWx1ZSgpO1xuICAgICAgICB0aGlzLnN0b3JlLnNldFBhcmFtZXRlcnMoe1xuICAgICAgICAgICAgLi4uZmlsdGVyUGFyYW1ldGVycyxcbiAgICAgICAgICAgIHN0YXJ0OiAwXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnN0b3JlLnVwZGF0ZSh7XG4gICAgICAgICAgICByZXNldFBhZ2luZzogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZG93bmxvYWREYXRhKFxuICAgICAgICB0eXBlOiBzdHJpbmcsXG4gICAgICAgIHBhcmFtZXRlcnM/OiBGaWx0ZXJQYXJhbWV0ZXJzTW9kZWwsXG4gICAgICAgIHVwZGF0ZVF1ZXJ5UGFyYW1zOiBib29sZWFuID0gdHJ1ZVxuICAgICk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5zZXRMb2FkaW5nKHRydWUpO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nRGF0YSA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJQYXJhbWV0ZXJzID0gdGhpcy5tZXJnZVBhcmFtZXRlcnMocGFyYW1ldGVycyk7XG4gICAgICAgICAgICBpZiAoZmlsdGVyUGFyYW1ldGVycykge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0UGFyYW1ldGVycyhmaWx0ZXJQYXJhbWV0ZXJzLCB1cGRhdGVRdWVyeVBhcmFtcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmZpbHRlclNlcnZpY2UuZ2V0RmlsZSh0eXBlLCB0aGlzLmdldFBhcmFtZXRlcnMoZmlsdGVyUGFyYW1ldGVycykpKTtcbiAgICAgICAgICAgIEZpbGVVdGlscy5kb3dubG9hZEZpbGUoYCR7dGhpcy5kb3dubG9hZEZpbGVOYW1lfS4ke3R5cGV9YCwgcmVzdWx0KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5zZXRFcnJvcihlKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdEYXRhID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcHJpbnREYXRhKHBhcmFtZXRlcnM/OiBGaWx0ZXJQYXJhbWV0ZXJzTW9kZWwsIHVwZGF0ZVF1ZXJ5UGFyYW1zOiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5zZXRMb2FkaW5nKHRydWUpO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nRGF0YSA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJQYXJhbWV0ZXJzID0gdGhpcy5tZXJnZVBhcmFtZXRlcnMocGFyYW1ldGVycyk7XG4gICAgICAgICAgICBpZiAoZmlsdGVyUGFyYW1ldGVycykge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0UGFyYW1ldGVycyhmaWx0ZXJQYXJhbWV0ZXJzLCB1cGRhdGVRdWVyeVBhcmFtcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmZpbHRlclNlcnZpY2UuZ2V0UHJpbnRhYmxlSHRtbCh0aGlzLmdldFBhcmFtZXRlcnMoZmlsdGVyUGFyYW1ldGVycykpKTtcbiAgICAgICAgICAgIEZpbGVVdGlscy5vcGVuUHJpbnRhYmxlV2luZG93KHJlc3VsdCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuc2V0RXJyb3IoZSk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNldExvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nRGF0YSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZVJ1bGUoaWQ6IHN0cmluZywgbmV3UnVsZTogUXVlcnlSdWxlTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBmaWx0ZXJQYXJhbWV0ZXJzIH0gPSB0aGlzLnN0b3JlLmdldFZhbHVlKCk7XG4gICAgICAgIGNvbnN0IHJ1bGVzID0gZmlsdGVyUGFyYW1ldGVycy5ydWxlcz8uWzBdO1xuICAgICAgICBpZiAoIXJ1bGVzIHx8IHJ1bGVzLnJ1bGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVSdWxlcyhbbmV3UnVsZV0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb2xkUnVsZSA9IHJ1bGVzLnJ1bGVzLmZpbmQoKHIpID0+IChyIGFzIFF1ZXJ5UnVsZU1vZGVsKS5pZCA9PT0gaWQpIGFzIFF1ZXJ5UnVsZU1vZGVsO1xuICAgICAgICBsZXQgbmV3UnVsZXMgPSBydWxlcy5ydWxlcztcbiAgICAgICAgaWYgKG9sZFJ1bGUpIHtcbiAgICAgICAgICAgIGlmIChuZXdSdWxlKSB7XG4gICAgICAgICAgICAgICAgLy8gQXJyYXkgcmVwbGFjZVxuICAgICAgICAgICAgICAgIG5ld1J1bGVzID0gW1xuICAgICAgICAgICAgICAgICAgICAuLi5ydWxlcy5ydWxlcy5zbGljZSgwLCBydWxlcy5ydWxlcy5pbmRleE9mKG9sZFJ1bGUpKSxcbiAgICAgICAgICAgICAgICAgICAgbmV3UnVsZSxcbiAgICAgICAgICAgICAgICAgICAgLi4ucnVsZXMucnVsZXMuc2xpY2UocnVsZXMucnVsZXMuaW5kZXhPZihvbGRSdWxlKSArIDEsIHJ1bGVzLnJ1bGVzLmxlbmd0aClcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXdSdWxlcyA9IHJ1bGVzLnJ1bGVzLmZpbHRlcigocikgPT4gKHIgYXMgUXVlcnlSdWxlTW9kZWwpLmlkICE9PSBpZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdSdWxlcyA9IFsuLi5uZXdSdWxlcywgbmV3UnVsZV07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVSdWxlcyhuZXdSdWxlcyBhcyBRdWVyeVJ1bGVNb2RlbFtdKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlRGVmYXVsdFJ1bGVzKHJ1bGU6IChRdWVyeVJ1bGVNb2RlbCB8IFF1ZXJ5TW9kZWwpW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdG9yZS51cGRhdGUoe1xuICAgICAgICAgICAgZGVmYXVsdFJ1bGVzOiBydWxlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyB1cGRhdGVHbG9iYWxSdWxlcyhydWxlczogUXVlcnlNb2RlbFtdLCB1cGRhdGVRdWVyeVBhcmFtcyA9IHRydWUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgeyBmaWx0ZXJQYXJhbWV0ZXJzIH0gPSB0aGlzLnN0b3JlLmdldFZhbHVlKCk7XG4gICAgICAgIGNvbnN0IG5ld1J1bGVzOiBGaWx0ZXJQYXJhbWV0ZXJzTW9kZWwgPSB7XG4gICAgICAgICAgICAuLi5maWx0ZXJQYXJhbWV0ZXJzLFxuICAgICAgICAgICAgcnVsZXNcbiAgICAgICAgfTtcblxuICAgICAgICBhd2FpdCB0aGlzLmxvYWREYXRhKG5ld1J1bGVzLCB1cGRhdGVRdWVyeVBhcmFtcyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZFJ1bGVGcm9tQ29uZmlnKGNvbmZpZzogRmlsdGVyQ29uZmlndXJhdGlvbk1vZGVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgZmlsdGVyUGFyYW1ldGVycyB9ID0gdGhpcy5zdG9yZS5nZXRWYWx1ZSgpO1xuXG4gICAgICAgIGNvbnN0IG5ld1J1bGVzOiBGaWx0ZXJQYXJhbWV0ZXJzTW9kZWwgPSB7XG4gICAgICAgICAgICAuLi5maWx0ZXJQYXJhbWV0ZXJzLFxuICAgICAgICAgICAgcnVsZXM6IFtcbiAgICAgICAgICAgICAgICAuLi4oZmlsdGVyUGFyYW1ldGVycy5ydWxlcyBhcyBRdWVyeU1vZGVsW10pLFxuICAgICAgICAgICAgICAgIFFCRmlsdGVyVXRpbHMuY3JlYXRlUXVlcnlNb2RlbChjb25maWcpXG4gICAgICAgICAgICBdXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5zdG9yZS51cGRhdGUoe1xuICAgICAgICAgICAgc2hvd1F1ZXJ5QnVpbGRlcjogdHJ1ZVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmxvYWREYXRhKG5ld1J1bGVzLCB0cnVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlUnVsZXMocnVsZXM6IFF1ZXJ5UnVsZU1vZGVsW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBmaWx0ZXJQYXJhbWV0ZXJzIH0gPSB0aGlzLnN0b3JlLmdldFZhbHVlKCk7XG4gICAgICAgIGNvbnN0IG5ld1J1bGVzOiBGaWx0ZXJQYXJhbWV0ZXJzTW9kZWwgPSB7XG4gICAgICAgICAgICBvcmRlcjogZmlsdGVyUGFyYW1ldGVycy5vcmRlcixcbiAgICAgICAgICAgIHJ1bGVzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb246IFwiYW5kXCIsXG4gICAgICAgICAgICAgICAgICAgIHJ1bGVzXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMubG9hZERhdGEobmV3UnVsZXMsIHRydWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b2dnbGVRdWVyeUJ1aWxkZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmUudXBkYXRlKChzdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgIHNob3dRdWVyeUJ1aWxkZXI6ICFzdGF0ZS5zaG93UXVlcnlCdWlsZGVyXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlTGlzdFZhbHVlKHZhbHVlOiBhbnksIGtleSA9IFwiaWRcIik6IHZvaWQge1xuICAgICAgICBjb25zdCB7IGZpbHRlclJlc3VsdCB9ID0gdGhpcy5zdG9yZS5nZXRWYWx1ZSgpO1xuICAgICAgICBpZiAoIWZpbHRlclJlc3VsdCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdG9yZS51cGRhdGUoe1xuICAgICAgICAgICAgZmlsdGVyUmVzdWx0OiB7XG4gICAgICAgICAgICAgICAgLi4uZmlsdGVyUmVzdWx0LFxuICAgICAgICAgICAgICAgIHZhbHVlczogYXJyYXlVcHNlcnQoZmlsdGVyUmVzdWx0LnZhbHVlcywgdmFsdWVba2V5XSwgdmFsdWUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVMaXN0VmFsdWUodmFsdWU6IGFueSwga2V5ID0gXCJpZFwiKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgZmlsdGVyUmVzdWx0IH0gPSB0aGlzLnN0b3JlLmdldFZhbHVlKCk7XG4gICAgICAgIGlmICghZmlsdGVyUmVzdWx0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN0b3JlLnVwZGF0ZSh7XG4gICAgICAgICAgICBmaWx0ZXJSZXN1bHQ6IHtcbiAgICAgICAgICAgICAgICAuLi5maWx0ZXJSZXN1bHQsXG4gICAgICAgICAgICAgICAgdmFsdWVzOiBhcnJheVJlbW92ZShmaWx0ZXJSZXN1bHQudmFsdWVzLCB2YWx1ZVtrZXldKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgdXBkYXRlUXVlcnlQYXJhbXMocXVlcnlQYXJhbXM6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoIXRoaXMuYWN0aXZhdGVkUm91dGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7XG4gICAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlLFxuICAgICAgICAgICAgcXVlcnlQYXJhbXMsXG4gICAgICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiBcIm1lcmdlXCJcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQYXJhbWV0ZXJzKGZpbHRlclBhcmFtZXRlcnM/OiBGaWx0ZXJQYXJhbWV0ZXJzTW9kZWwpOiBGaWx0ZXJQYXJhbWV0ZXJzTW9kZWwge1xuICAgICAgICBjb25zdCB7IGRlZmF1bHRSdWxlcyB9ID0gdGhpcy5zdG9yZS5nZXRWYWx1ZSgpO1xuICAgICAgICBjb25zdCBwYXJhbWV0ZXJzID0ge1xuICAgICAgICAgICAgLi4uZmlsdGVyUGFyYW1ldGVycyxcbiAgICAgICAgICAgIHJ1bGVzOiBmaWx0ZXJQYXJhbWV0ZXJzPy5ydWxlcyA/IFsuLi5maWx0ZXJQYXJhbWV0ZXJzLnJ1bGVzXSA6IFtdXG4gICAgICAgIH07XG4gICAgICAgIGlmIChkZWZhdWx0UnVsZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcGFyYW1ldGVycy5ydWxlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBjb25kaXRpb246IFwiYW5kXCIsXG4gICAgICAgICAgICAgICAgcnVsZXM6IGRlZmF1bHRSdWxlc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtZXJnZVBhcmFtZXRlcnMocGFyYW1ldGVycz86IEZpbHRlclBhcmFtZXRlcnNNb2RlbCk6IEZpbHRlclBhcmFtZXRlcnNNb2RlbCB7XG4gICAgICAgIGNvbnN0IHsgZmlsdGVyUGFyYW1ldGVycyB9ID0gdGhpcy5zdG9yZS5nZXRWYWx1ZSgpO1xuICAgICAgICBpZiAoIXBhcmFtZXRlcnMpIHtcbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXJQYXJhbWV0ZXJzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmZpbHRlclBhcmFtZXRlcnMsXG4gICAgICAgICAgICAuLi5wYXJhbWV0ZXJzLFxuICAgICAgICAgICAgb3JkZXI6XG4gICAgICAgICAgICAgICAgZmlsdGVyUGFyYW1ldGVycy5vcmRlciAmJiAhcGFyYW1ldGVycy5vcmRlclxuICAgICAgICAgICAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpbHRlclBhcmFtZXRlcnMub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5wYXJhbWV0ZXJzLm9yZGVyXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFBhcmFtZXRlcnMocGFyYW1ldGVyczogRmlsdGVyUGFyYW1ldGVyc01vZGVsLCB1cGRhdGVRdWVyeVBhcmFtczogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdG9yZS5zZXRQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpO1xuICAgICAgICBpZiAodXBkYXRlUXVlcnlQYXJhbXMpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUXVlcnlQYXJhbXMoUXVlcnlQYXJhbXNVdGlscy5maWx0ZXJQYXJhbWV0ZXJzVG9QYXJhbXNNYXAocGFyYW1ldGVycykpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
341
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1saXN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uaWNlLWRhdGEtZmlsdGVyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvYmFzZS1saXN0L3N0b3JlL2Jhc2UtbGlzdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdoRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7OztBQUd0RCxNQUFNLE9BQU8sbUJBQW1CO0lBTzVCLFlBQ2MsS0FBd0IsRUFDeEIsYUFBcUMsRUFDckMsY0FBOEIsRUFDOUIsTUFBYyxFQUNkLE1BQXNCO1FBSnRCLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLGtCQUFhLEdBQWIsYUFBYSxDQUF3QjtRQUNyQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7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QWlDLEVBQUUsb0JBQTZCLElBQUk7UUFDdEYsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckMsSUFBSSxpQkFBaUIsRUFBRTtZQUNuQixJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsMkJBQTJCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztTQUNwRjtJQUNMLENBQUM7O2dIQXhXUSxtQkFBbUI7b0hBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwbGljYXRpb25SZWYsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7IGFycmF5UmVtb3ZlLCBhcnJheVVwc2VydCB9IGZyb20gXCJAZGF0b3JhbWEvYWtpdGFcIjtcbmltcG9ydCB7IEZpbGVVdGlscyB9IGZyb20gXCJAcmVjdXJzeXZlL25pY2UtdWkta2l0LnYyXCI7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBtYXAsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgRmlsdGVyQ29uZmlndXJhdGlvbk1vZGVsLCBGaWx0ZXJQYXJhbWV0ZXJzTW9kZWwgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2ZpbHRlci5tb2RlbFwiO1xuaW1wb3J0IHsgUXVlcnlNb2RlbCwgUXVlcnlSdWxlTW9kZWwgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL3F1ZXJ5Lm1vZGVsXCI7XG5pbXBvcnQgeyBGaWx0ZXJVdGlscyB9IGZyb20gXCIuLi8uLi8uLi91dGlscy9maWx0ZXIudXRpbHNcIjtcbmltcG9ydCB7IFF1ZXJ5UGFyYW1zVXRpbHMgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvcXVlcnktcGFyYW1zLnV0aWxzXCI7XG5pbXBvcnQgeyBRQkZpbHRlclV0aWxzIH0gZnJvbSBcIi4uLy4uL3F1ZXJ5LWJ1aWxkZXIvdXRpbHMvcWItZmlsdGVyLnV0aWxzXCI7XG5pbXBvcnQgeyBOaWNlRmlsdGVyU2VydmljZSB9IGZyb20gXCIuLi9wcm92aWRlcnMvYmFzZS1maWx0ZXIuc2VydmljZVwiO1xuaW1wb3J0IHsgTmljZUJhc2VMaXN0U3RvcmUgfSBmcm9tIFwiLi9iYXNlLWxpc3Quc3RvcmVcIjtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5pY2VCYXNlTGlzdFNlcnZpY2Uge1xuICAgIHB1YmxpYyBxdWVyeVBhcmFtc0xvYWRlZCQgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgcHJvdGVjdGVkIGRvd25sb2FkRmlsZU5hbWUgPSBcImRhdGFcIjtcbiAgICBwcm90ZWN0ZWQgdW5zdWJzY3JpYmVBbGwkID0gbmV3IFN1YmplY3QoKTtcbiAgICBwcm90ZWN0ZWQgbG9hZGluZ0RhdGEgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgc3RvcmU6IE5pY2VCYXNlTGlzdFN0b3JlLFxuICAgICAgICBwcm90ZWN0ZWQgZmlsdGVyU2VydmljZTogTmljZUZpbHRlclNlcnZpY2U8YW55PixcbiAgICAgICAgcHJvdGVjdGVkIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcm90ZWN0ZWQgYXBwUmVmOiBBcHBsaWNhdGlvblJlZlxuICAgICkge1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLnN0b3JlLnNldEZpbHRlckNvbmZpZ0xvYWRpbmcodHJ1ZSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJDb25maWcgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmZpbHRlclNlcnZpY2UuZ2V0RmlsdGVyQ29uZmlnKCkpO1xuICAgICAgICAgICAgdGhpcy5zdG9yZS51cGRhdGUoe1xuICAgICAgICAgICAgICAgIGZpbHRlckNvbmZpZ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuc2V0RXJyb3IoZSk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNldEZpbHRlckNvbmZpZ0xvYWRpbmcoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlc2V0U3RvcmUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmUucmVzZXQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXREYXRhKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JlLnVwZGF0ZSh7XG4gICAgICAgICAgICBmaWx0ZXJSZXN1bHQ6IG51bGxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsb3NlU3Vic2NyaXB0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZUFsbCQubmV4dChudWxsKTtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZUFsbCQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5xdWVyeVBhcmFtc0xvYWRlZCQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGlzYWJsZUxpc3QoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmUudXBkYXRlKHtcbiAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBlbmFibGVMaXN0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JlLnVwZGF0ZSh7XG4gICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldExvYWRpbmcobG9hZGluZzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JlLnNldExvYWRpbmcobG9hZGluZyk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldE1vZGUobW9kZTogXCJub3JtYWxcIiB8IFwiaW5maW5pdGUtc2Nyb2xsXCIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdG9yZS51cGRhdGUoe1xuICAgICAgICAgICAgbWVyZ2VQYWdlUmVzdWx0czogbW9kZSA9PT0gXCJpbmZpbml0ZS1zY3JvbGxcIlxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9hZFF1ZXJ5UGFyYW1zKGF1dG9Mb2FkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aXZhdGVkUm91dGU/LnF1ZXJ5UGFyYW1zXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZUFsbCQpLFxuICAgICAgICAgICAgICAgIG1hcCgocGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IFF1ZXJ5UGFyYW1zVXRpbHMuZXh0cmFjdEZpbHRlclBhcmFtZXRlcnMocGFyYW1zKVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh7IHBhcmFtcyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFwYXJhbXMgfHwgT2JqZWN0LmtleXMocGFyYW1zKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zID0gdGhpcy5zdG9yZS5nZXRWYWx1ZSgpLmZpbHRlclBhcmFtZXRlcnM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHsgZmlsdGVyUGFyYW1ldGVycywgZmlsdGVyUmVzdWx0IH0gPSB0aGlzLnN0b3JlLmdldFZhbHVlKCk7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBGaWx0ZXJVdGlscy5maWx0ZXJDaGFuZ2VOZWVkc1JlZnJlc2goZmlsdGVyUGFyYW1ldGVycywgcGFyYW1zKSB8fFxuICAgICAgICAgICAgICAgICAgICAhZmlsdGVyUmVzdWx0XG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhdXRvTG9hZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkRGF0YShwYXJhbXMsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UGFyYW1ldGVycyhwYXJhbXMsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMucXVlcnlQYXJhbXNMb2FkZWQkLm5leHQobnVsbCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVzZXRBbmRMb2FkRGF0YShwYXJhbWV0ZXJzPzogRmlsdGVyUGFyYW1ldGVyc01vZGVsLCB1cGRhdGVRdWVyeVBhcmFtczogYm9vbGVhbiA9IHRydWUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZERhdGEocGFyYW1ldGVycywgdXBkYXRlUXVlcnlQYXJhbXMsIHRydWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBsb2FkRGF0YShwYXJhbWV0ZXJzPzogRmlsdGVyUGFyYW1ldGVyc01vZGVsLCB1cGRhdGVRdWVyeVBhcmFtczogYm9vbGVhbiA9IHRydWUsIHJlc2V0OiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgeyBkaXNhYmxlZCB9ID0gdGhpcy5zdG9yZS5nZXRWYWx1ZSgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyUGFyYW1ldGVycyA9IHRoaXMubWVyZ2VQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpO1xuICAgICAgICAgICAgaWYgKGZpbHRlclBhcmFtZXRlcnMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFBhcmFtZXRlcnMoZmlsdGVyUGFyYW1ldGVycywgZGlzYWJsZWQgPyBmYWxzZSA6IHVwZGF0ZVF1ZXJ5UGFyYW1zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLnNldExvYWRpbmcodHJ1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nRGF0YSA9IHRydWU7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlcih0aGlzLmdldFBhcmFtZXRlcnMoZmlsdGVyUGFyYW1ldGVycykpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLnNldFJlc3VsdChyZXN1bHQsIHJlc2V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5zZXRFcnJvcihlKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdEYXRhID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2VhcmNoRGF0YShzZWFyY2g6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB7IGZpbHRlclBhcmFtZXRlcnMgfSA9IHRoaXMuc3RvcmUuZ2V0VmFsdWUoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5sb2FkRGF0YSh7XG4gICAgICAgICAgICAuLi5maWx0ZXJQYXJhbWV0ZXJzLFxuICAgICAgICAgICAgc2VhcmNoXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBsb2FkTmV3UGFnZShzdGFydDogbnVtYmVyLCBsZW5ndGg6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB7IGZpbHRlclBhcmFtZXRlcnMgfSA9IHRoaXMuc3RvcmUuZ2V0VmFsdWUoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5sb2FkRGF0YSh7XG4gICAgICAgICAgICAuLi5maWx0ZXJQYXJhbWV0ZXJzLFxuICAgICAgICAgICAgc3RhcnQsXG4gICAgICAgICAgICBsZW5ndGhcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGxvYWROZXh0UGFnZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgeyBmaWx0ZXJQYXJhbWV0ZXJzIH0gPSB0aGlzLnN0b3JlLmdldFZhbHVlKCk7XG4gICAgICAgIGF3YWl0IHRoaXMubG9hZERhdGEoe1xuICAgICAgICAgICAgLi4uZmlsdGVyUGFyYW1ldGVycyxcbiAgICAgICAgICAgIHN0YXJ0OiBmaWx0ZXJQYXJhbWV0ZXJzLnN0YXJ0ICsgZmlsdGVyUGFyYW1ldGVycy5sZW5ndGhcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlc2V0UGFnaW5nKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB7IGZpbHRlclBhcmFtZXRlcnMgfSA9IHRoaXMuc3RvcmUuZ2V0VmFsdWUoKTtcbiAgICAgICAgdGhpcy5zdG9yZS5zZXRQYXJhbWV0ZXJzKHtcbiAgICAgICAgICAgIC4uLmZpbHRlclBhcmFtZXRlcnMsXG4gICAgICAgICAgICBzdGFydDogMFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zdG9yZS51cGRhdGUoe1xuICAgICAgICAgICAgcmVzZXRQYWdpbmc6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGRvd25sb2FkRGF0YShcbiAgICAgICAgdHlwZTogc3RyaW5nLFxuICAgICAgICBwYXJhbWV0ZXJzPzogRmlsdGVyUGFyYW1ldGVyc01vZGVsLFxuICAgICAgICB1cGRhdGVRdWVyeVBhcmFtczogYm9vbGVhbiA9IHRydWVcbiAgICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuc2V0TG9hZGluZyh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ0RhdGEgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyUGFyYW1ldGVycyA9IHRoaXMubWVyZ2VQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpO1xuICAgICAgICAgICAgaWYgKGZpbHRlclBhcmFtZXRlcnMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFBhcmFtZXRlcnMoZmlsdGVyUGFyYW1ldGVycywgdXBkYXRlUXVlcnlQYXJhbXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5maWx0ZXJTZXJ2aWNlLmdldEZpbGUodHlwZSwgdGhpcy5nZXRQYXJhbWV0ZXJzKGZpbHRlclBhcmFtZXRlcnMpKSk7XG4gICAgICAgICAgICBGaWxlVXRpbHMuZG93bmxvYWRGaWxlKGAke3RoaXMuZG93bmxvYWRGaWxlTmFtZX0uJHt0eXBlfWAsIHJlc3VsdCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuc2V0RXJyb3IoZSk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNldExvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nRGF0YSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHByaW50RGF0YShwYXJhbWV0ZXJzPzogRmlsdGVyUGFyYW1ldGVyc01vZGVsLCB1cGRhdGVRdWVyeVBhcmFtczogYm9vbGVhbiA9IHRydWUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuc2V0TG9hZGluZyh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ0RhdGEgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyUGFyYW1ldGVycyA9IHRoaXMubWVyZ2VQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpO1xuICAgICAgICAgICAgaWYgKGZpbHRlclBhcmFtZXRlcnMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFBhcmFtZXRlcnMoZmlsdGVyUGFyYW1ldGVycywgdXBkYXRlUXVlcnlQYXJhbXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5maWx0ZXJTZXJ2aWNlLmdldFByaW50YWJsZUh0bWwodGhpcy5nZXRQYXJhbWV0ZXJzKGZpbHRlclBhcmFtZXRlcnMpKSk7XG4gICAgICAgICAgICBGaWxlVXRpbHMub3BlblByaW50YWJsZVdpbmRvdyhyZXN1bHQpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNldEVycm9yKGUpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5zZXRMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ0RhdGEgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGVSdWxlKGlkOiBzdHJpbmcsIG5ld1J1bGU6IFF1ZXJ5UnVsZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgZmlsdGVyUGFyYW1ldGVycyB9ID0gdGhpcy5zdG9yZS5nZXRWYWx1ZSgpO1xuICAgICAgICBjb25zdCBydWxlcyA9IGZpbHRlclBhcmFtZXRlcnMucnVsZXM/LlswXTtcbiAgICAgICAgaWYgKCFydWxlcyB8fCBydWxlcy5ydWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUnVsZXMoW25ld1J1bGVdKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9sZFJ1bGUgPSBydWxlcy5ydWxlcy5maW5kKChyKSA9PiAociBhcyBRdWVyeVJ1bGVNb2RlbCkuaWQgPT09IGlkKSBhcyBRdWVyeVJ1bGVNb2RlbDtcbiAgICAgICAgbGV0IG5ld1J1bGVzID0gcnVsZXMucnVsZXM7XG4gICAgICAgIGlmIChvbGRSdWxlKSB7XG4gICAgICAgICAgICBpZiAobmV3UnVsZSkge1xuICAgICAgICAgICAgICAgIC8vIEFycmF5IHJlcGxhY2VcbiAgICAgICAgICAgICAgICBuZXdSdWxlcyA9IFtcbiAgICAgICAgICAgICAgICAgICAgLi4ucnVsZXMucnVsZXMuc2xpY2UoMCwgcnVsZXMucnVsZXMuaW5kZXhPZihvbGRSdWxlKSksXG4gICAgICAgICAgICAgICAgICAgIG5ld1J1bGUsXG4gICAgICAgICAgICAgICAgICAgIC4uLnJ1bGVzLnJ1bGVzLnNsaWNlKHJ1bGVzLnJ1bGVzLmluZGV4T2Yob2xkUnVsZSkgKyAxLCBydWxlcy5ydWxlcy5sZW5ndGgpXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV3UnVsZXMgPSBydWxlcy5ydWxlcy5maWx0ZXIoKHIpID0+IChyIGFzIFF1ZXJ5UnVsZU1vZGVsKS5pZCAhPT0gaWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3UnVsZXMgPSBbLi4ubmV3UnVsZXMsIG5ld1J1bGVdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlUnVsZXMobmV3UnVsZXMgYXMgUXVlcnlSdWxlTW9kZWxbXSk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZURlZmF1bHRSdWxlcyhydWxlOiAoUXVlcnlSdWxlTW9kZWwgfCBRdWVyeU1vZGVsKVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmUudXBkYXRlKHtcbiAgICAgICAgICAgIGRlZmF1bHRSdWxlczogcnVsZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgdXBkYXRlR2xvYmFsUnVsZXMocnVsZXM6IFF1ZXJ5TW9kZWxbXSwgdXBkYXRlUXVlcnlQYXJhbXMgPSB0cnVlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHsgZmlsdGVyUGFyYW1ldGVycyB9ID0gdGhpcy5zdG9yZS5nZXRWYWx1ZSgpO1xuICAgICAgICBjb25zdCBuZXdSdWxlczogRmlsdGVyUGFyYW1ldGVyc01vZGVsID0ge1xuICAgICAgICAgICAgLi4uZmlsdGVyUGFyYW1ldGVycyxcbiAgICAgICAgICAgIHJ1bGVzXG4gICAgICAgIH07XG5cbiAgICAgICAgYXdhaXQgdGhpcy5sb2FkRGF0YShuZXdSdWxlcywgdXBkYXRlUXVlcnlQYXJhbXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRSdWxlRnJvbUNvbmZpZyhjb25maWc6IEZpbHRlckNvbmZpZ3VyYXRpb25Nb2RlbCk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IGZpbHRlclBhcmFtZXRlcnMgfSA9IHRoaXMuc3RvcmUuZ2V0VmFsdWUoKTtcblxuICAgICAgICBjb25zdCBuZXdSdWxlczogRmlsdGVyUGFyYW1ldGVyc01vZGVsID0ge1xuICAgICAgICAgICAgLi4uZmlsdGVyUGFyYW1ldGVycyxcbiAgICAgICAgICAgIHJ1bGVzOiBbXG4gICAgICAgICAgICAgICAgLi4uKGZpbHRlclBhcmFtZXRlcnMucnVsZXMgYXMgUXVlcnlNb2RlbFtdKSxcbiAgICAgICAgICAgICAgICBRQkZpbHRlclV0aWxzLmNyZWF0ZVF1ZXJ5TW9kZWwoY29uZmlnKVxuICAgICAgICAgICAgXVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuc3RvcmUudXBkYXRlKHtcbiAgICAgICAgICAgIHNob3dRdWVyeUJ1aWxkZXI6IHRydWVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5sb2FkRGF0YShuZXdSdWxlcywgdHJ1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZVJ1bGVzKHJ1bGVzOiBRdWVyeVJ1bGVNb2RlbFtdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgZmlsdGVyUGFyYW1ldGVycyB9ID0gdGhpcy5zdG9yZS5nZXRWYWx1ZSgpO1xuICAgICAgICBjb25zdCBuZXdSdWxlczogRmlsdGVyUGFyYW1ldGVyc01vZGVsID0ge1xuICAgICAgICAgICAgb3JkZXI6IGZpbHRlclBhcmFtZXRlcnMub3JkZXIsXG4gICAgICAgICAgICBydWxlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uOiBcImFuZFwiLFxuICAgICAgICAgICAgICAgICAgICBydWxlc1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmxvYWREYXRhKG5ld1J1bGVzLCB0cnVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9nZ2xlUXVlcnlCdWlsZGVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JlLnVwZGF0ZSgoc3RhdGUpID0+ICh7XG4gICAgICAgICAgICBzaG93UXVlcnlCdWlsZGVyOiAhc3RhdGUuc2hvd1F1ZXJ5QnVpbGRlclxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZUxpc3RWYWx1ZSh2YWx1ZTogYW55LCBrZXkgPSBcImlkXCIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBmaWx0ZXJSZXN1bHQgfSA9IHRoaXMuc3RvcmUuZ2V0VmFsdWUoKTtcbiAgICAgICAgaWYgKCFmaWx0ZXJSZXN1bHQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3RvcmUudXBkYXRlKHtcbiAgICAgICAgICAgIGZpbHRlclJlc3VsdDoge1xuICAgICAgICAgICAgICAgIC4uLmZpbHRlclJlc3VsdCxcbiAgICAgICAgICAgICAgICB2YWx1ZXM6IGFycmF5VXBzZXJ0KGZpbHRlclJlc3VsdC52YWx1ZXMsIHZhbHVlW2tleV0sIHZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlTGlzdFZhbHVlKHZhbHVlOiBhbnksIGtleSA9IFwiaWRcIik6IHZvaWQge1xuICAgICAgICBjb25zdCB7IGZpbHRlclJlc3VsdCB9ID0gdGhpcy5zdG9yZS5nZXRWYWx1ZSgpO1xuICAgICAgICBpZiAoIWZpbHRlclJlc3VsdCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdG9yZS51cGRhdGUoe1xuICAgICAgICAgICAgZmlsdGVyUmVzdWx0OiB7XG4gICAgICAgICAgICAgICAgLi4uZmlsdGVyUmVzdWx0LFxuICAgICAgICAgICAgICAgIHZhbHVlczogYXJyYXlSZW1vdmUoZmlsdGVyUmVzdWx0LnZhbHVlcywgdmFsdWVba2V5XSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIHVwZGF0ZVF1ZXJ5UGFyYW1zKHF1ZXJ5UGFyYW1zOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKCF0aGlzLmFjdGl2YXRlZFJvdXRlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge1xuICAgICAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5hY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zLFxuICAgICAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogXCJtZXJnZVwiXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UGFyYW1ldGVycyhmaWx0ZXJQYXJhbWV0ZXJzPzogRmlsdGVyUGFyYW1ldGVyc01vZGVsKTogRmlsdGVyUGFyYW1ldGVyc01vZGVsIHtcbiAgICAgICAgY29uc3QgeyBkZWZhdWx0UnVsZXMgfSA9IHRoaXMuc3RvcmUuZ2V0VmFsdWUoKTtcbiAgICAgICAgY29uc3QgcGFyYW1ldGVycyA9IHtcbiAgICAgICAgICAgIC4uLmZpbHRlclBhcmFtZXRlcnMsXG4gICAgICAgICAgICBydWxlczogZmlsdGVyUGFyYW1ldGVycz8ucnVsZXMgPyBbLi4uZmlsdGVyUGFyYW1ldGVycy5ydWxlc10gOiBbXVxuICAgICAgICB9O1xuICAgICAgICBpZiAoZGVmYXVsdFJ1bGVzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHBhcmFtZXRlcnMucnVsZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgY29uZGl0aW9uOiBcImFuZFwiLFxuICAgICAgICAgICAgICAgIHJ1bGVzOiBkZWZhdWx0UnVsZXNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXJhbWV0ZXJzO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWVyZ2VQYXJhbWV0ZXJzKHBhcmFtZXRlcnM/OiBGaWx0ZXJQYXJhbWV0ZXJzTW9kZWwpOiBGaWx0ZXJQYXJhbWV0ZXJzTW9kZWwge1xuICAgICAgICBjb25zdCB7IGZpbHRlclBhcmFtZXRlcnMgfSA9IHRoaXMuc3RvcmUuZ2V0VmFsdWUoKTtcbiAgICAgICAgaWYgKCFwYXJhbWV0ZXJzKSB7XG4gICAgICAgICAgICByZXR1cm4gZmlsdGVyUGFyYW1ldGVycztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5maWx0ZXJQYXJhbWV0ZXJzLFxuICAgICAgICAgICAgLi4ucGFyYW1ldGVycyxcbiAgICAgICAgICAgIG9yZGVyOlxuICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtZXRlcnMub3JkZXIgJiYgIXBhcmFtZXRlcnMub3JkZXJcbiAgICAgICAgICAgICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5maWx0ZXJQYXJhbWV0ZXJzLm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4ucGFyYW1ldGVycy5vcmRlclxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRQYXJhbWV0ZXJzKHBhcmFtZXRlcnM6IEZpbHRlclBhcmFtZXRlcnNNb2RlbCwgdXBkYXRlUXVlcnlQYXJhbXM6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmUuc2V0UGFyYW1ldGVycyhwYXJhbWV0ZXJzKTtcbiAgICAgICAgaWYgKHVwZGF0ZVF1ZXJ5UGFyYW1zKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVF1ZXJ5UGFyYW1zKFF1ZXJ5UGFyYW1zVXRpbHMuZmlsdGVyUGFyYW1ldGVyc1RvUGFyYW1zTWFwKHBhcmFtZXRlcnMpKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import { Component, Inject, Input, Optional } from "@angular/core";
2
- import { MediaObserver } from "@angular/flex-layout";
3
2
  import { MatBottomSheet } from "@angular/material/bottom-sheet";
4
3
  import { ActivatedRoute, Router } from "@angular/router";
4
+ import { NiceMediaWatcherService } from "@recursyve/nice-ui-kit.v2";
5
5
  import { NiceBaseListComponent } from "../base-list/base-list.component";
6
6
  import { BASE_LIST_LAYOUT, ENABLE_QUERY_BUILDER, EXPORTS_SETTINGS } from "../base-list/base-list.constant";
7
7
  import { NiceMultiStateListQuery } from "./store/multi-state-list.query";
@@ -11,7 +11,7 @@ import * as i0 from "@angular/core";
11
11
  import * as i1 from "./store/multi-state-list.query";
12
12
  import * as i2 from "@angular/router";
13
13
  import * as i3 from "@angular/material/bottom-sheet";
14
- import * as i4 from "@angular/flex-layout";
14
+ import * as i4 from "@recursyve/nice-ui-kit.v2";
15
15
  import * as i5 from "./store/multi-state-list.service";
16
16
  import * as i6 from "@angular/material/icon";
17
17
  import * as i7 from "@angular/material/button";
@@ -25,12 +25,11 @@ import * as i14 from "@angular/forms";
25
25
  import * as i15 from "../query-builder/query-builder-trigger.directive";
26
26
  import * as i16 from "@angular/material/tooltip";
27
27
  import * as i17 from "@angular/material/badge";
28
- import * as i18 from "@recursyve/nice-ui-kit.v2";
29
- import * as i19 from "@angular/material/core";
30
- import * as i20 from "@ngx-translate/core";
28
+ import * as i18 from "@angular/material/core";
29
+ import * as i19 from "@ngx-translate/core";
31
30
  export class NiceMultiStateListComponent extends NiceBaseListComponent {
32
- constructor(enableQueryBuilder, listLayout, exportsSetting, query, activatedRoute, bottomSheet, router, mediaObserver, multiStateListService) {
33
- super(enableQueryBuilder, listLayout, [], exportsSetting, query, multiStateListService, activatedRoute, bottomSheet, router, mediaObserver);
31
+ constructor(enableQueryBuilder, listLayout, exportsSetting, query, activatedRoute, bottomSheet, router, mediaWatcher, multiStateListService) {
32
+ super(enableQueryBuilder, listLayout, [], exportsSetting, query, multiStateListService, activatedRoute, bottomSheet, router, mediaWatcher);
34
33
  this.multiStateListService = multiStateListService;
35
34
  }
36
35
  set state(state) {
@@ -41,19 +40,19 @@ export class NiceMultiStateListComponent extends NiceBaseListComponent {
41
40
  this.setColumn(columns);
42
41
  }
43
42
  }
44
- NiceMultiStateListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: NiceMultiStateListComponent, deps: [{ token: ENABLE_QUERY_BUILDER, optional: true }, { token: BASE_LIST_LAYOUT }, { token: EXPORTS_SETTINGS }, { token: i1.NiceMultiStateListQuery }, { token: i2.ActivatedRoute }, { token: i3.MatBottomSheet }, { token: i2.Router }, { token: i4.MediaObserver }, { token: i5.NiceMultiStateListService }], target: i0.ɵɵFactoryTarget.Component });
43
+ NiceMultiStateListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: NiceMultiStateListComponent, deps: [{ token: ENABLE_QUERY_BUILDER, optional: true }, { token: BASE_LIST_LAYOUT }, { token: EXPORTS_SETTINGS }, { token: i1.NiceMultiStateListQuery }, { token: i2.ActivatedRoute }, { token: i3.MatBottomSheet }, { token: i2.Router }, { token: i4.NiceMediaWatcherService }, { token: i5.NiceMultiStateListService }], target: i0.ɵɵFactoryTarget.Component });
45
44
  NiceMultiStateListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: NiceMultiStateListComponent, selector: "nice-multi-state-list", inputs: { state: "state" }, providers: [
46
45
  NiceMultiStateListQuery,
47
46
  NiceMultiStateListService,
48
47
  NiceMultiStateListStore
49
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"list page-layout carded fullwidth inner-scroll\" *ngIf=\"layout === 'page'; else content\">\n <div class=\"center\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n</div>\n\n<ng-template #content>\n <ng-container *ngIf=\"listLayout.xl\">\n <div class=\"hidden xl:block\">\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.xl }\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"listLayout.lg\">\n <div class=\"hidden lg:block xl:hidden\">\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.lg }\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"listLayout.md\">\n <div class=\"hidden md:block lg:hidden\">\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.md }\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"listLayout.sm\">\n <div class=\"hidden sm:block md:hidden\">\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.sm }\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"listLayout.xs\">\n <div class=\"block sm:hidden\">\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.xs }\"></ng-container>\n </div>\n </ng-container>\n\n <div\n [class.hidden]=\"!!listLayout.xs\"\n [class.block]=\"!listLayout.xs\"\n [class.sm:hidden]=\"!!listLayout.sm\"\n [class.sm:block]=\"!listLayout.sm\"\n [class.md:hidden]=\"!!listLayout.md\"\n [class.md:block]=\"!listLayout.md\"\n [class.lg:hidden]=\"!!listLayout.lg\"\n [class.lg:block]=\"!listLayout.lg\"\n [class.xl:hidden]=\"!!listLayout.xl\"\n [class.xl:block]=\"!listLayout.xl\"\n >\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.default }\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #pageLayout let-layout=\"layout\">\n <ng-container *ngIf=\"layout?.length; else isObject\">\n <ng-container *ngTemplateOutlet=\"contentLayout; context: { layout: { classes: ['flex flex-col'], items: layout } }\"></ng-container>\n </ng-container>\n\n <ng-template #isObject>\n <ng-container *ngTemplateOutlet=\"contentLayout; context: { layout: layout }\"></ng-container>\n </ng-template>\n</ng-template>\n\n<ng-template #contentLayout let-layout=\"layout\">\n <div [ngClass]=\"layout.classes\">\n <ng-container *ngFor=\"let item of layout.items\">\n <ng-container *ngIf=\"item.name; else childIsLayout\">\n <ng-container *ngTemplateOutlet=\"layoutItem; context: { item: item }\"></ng-container>\n </ng-container>\n <ng-template #childIsLayout>\n <ng-container *ngTemplateOutlet=\"contentLayout; context: { layout: item }\"></ng-container>\n </ng-template>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #layoutItem let-item=\"item\">\n <ng-container *ngIf=\"item.name === 'title' && title\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngTemplateOutlet=\"title\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'search'\">\n <div [ngClass]=\"item.classes\">\n <div class=\"search-wrapper mx-md-0\">\n <div class=\"search flex flex-auto justify-start items-center\">\n <mat-icon>search</mat-icon>\n <input [ngModel]=\"searchQuery$ | async\" (ngModelChange)=\"onUpdateSearch($event)\" [placeholder]=\"'general.search' | translate\" />\n <ng-container *ngIf=\"enableQueryBuilder\">\n <button\n *ngIf=\"!(showQueryBuilder$ | async) && !(rulesCount$ | async)\"\n mat-icon-button\n niceQueryBuilderTrigger\n [queryBuilderFilters]=\"filterConfig$ | async\"\n [queryBuilderFiltersLoading]=\"(filterConfigLoading$ | async) || false\"\n (queryBuilderFilterSelected)=\"onQueryBuilderFilterSelected($event)\"\n [matTooltip]=\"'general.query_builder.show_advanced_search' | translate\"\n >\n <mat-icon\n [matBadge]=\"rulesCount$ | async\"\n [matBadgeHidden]=\"!(rulesCount$ | async)\"\n matBadgeColor=\"accent\"\n >\n filter_list\n </mat-icon>\n </button>\n <button\n mat-icon-button\n *ngIf=\"!(showQueryBuilder$ | async) && (rulesCount$ | async)\"\n [disabled]=\"filterConfigLoading$ | async\"\n (click)=\"clickToggleShowQueryBuilder()\"\n [matTooltip]=\"'general.query_builder.show_advanced_search' | translate\"\n >\n <mat-icon\n [matBadge]=\"rulesCount$ | async\"\n [matBadgeHidden]=\"!(rulesCount$ | async)\"\n matBadgeColor=\"accent\"\n >\n filter_list\n </mat-icon>\n </button>\n <button\n mat-icon-button\n *ngIf=\"showQueryBuilder$ | async\"\n (click)=\"clickToggleShowQueryBuilder()\"\n [matTooltip]=\"'general.query_builder.close_advanced_search' | translate\"\n >\n <mat-icon>\n clear\n </mat-icon>\n </button>\n </ng-container>\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'prefixButtons' && prefixButtons\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngTemplateOutlet=\"prefixButtons\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'suffixButtons' && suffixButtons\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngTemplateOutlet=\"suffixButtons\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'exportButtons' && canExport\">\n <div [ngClass]=\"item.classes\" [class.mr-2]=\"!!suffixButtons\" [class.ml-2]=\"!!prefixButtons\">\n <button\n (click)=\"clickPrint()\"\n [disabled]=\"loading$ | async\"\n [matTooltip]=\"'general.print' | translate\"\n class=\"list-button mr-2\"\n mat-mini-fab\n >\n <mat-icon>print</mat-icon>\n </button>\n\n <button\n (click)=\"clickExport()\"\n [disabled]=\"loading$ | async\"\n [matTooltip]=\"'general.export' | translate\"\n class=\"list-button mr-2\"\n mat-mini-fab\n >\n <mat-icon>cloud_download</mat-icon>\n </button>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'content'\">\n <ng-container *ngIf=\"layoutContent === 'table' && table\">\n <ng-container *ngTemplateOutlet=\"tableLayout; context: { item: item }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"layoutContent === 'cards' && cards\">\n <ng-container *ngTemplateOutlet=\"cardsLayout; context: { item: item }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"layoutContent === 'custom' && customContent\">\n <ng-container *ngTemplateOutlet=\"customLayout; context: { item: item }\"></ng-container>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'pagination' && layoutContent !== 'custom'\">\n <div [ngClass]=\"item.classes\">\n <mat-paginator\n (page)=\"onUpdatePage($event)\"\n [length]=\"recordsFiltered$ | async\"\n [pageIndex]=\"index$ | async\"\n [pageSizeOptions]=\"defaultPageSizeOptions\"\n [pageSize]=\"length$ | async\"\n [showFirstLastButtons]=\"true\"\n >\n </mat-paginator>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'queryBuilder' && enableQueryBuilder\">\n <div class=\"flex flex-col\" *ngIf=\"showQueryBuilder$ | async\">\n <mat-card class=\"my-4\" [niceLoadingOverlay]=\"filterConfigLoading$ | async\">\n <mat-card-content class=\"flex flex-col\">\n <div class=\"flex flex-auto\">\n <nice-query-builder\n [filterConfigs]=\"filterConfig$ | async\"\n [ngModel]=\"rules$ | async\"\n (ngModelChange)=\"onUpdateRules($event)\"\n (close)=\"clickToggleShowQueryBuilder()\"\n ></nice-query-builder>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'filters' && filters\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngTemplateOutlet=\"filters\"></ng-container>\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #tableLayout let-item=\"item\">\n <div [ngClass]=\"item.classes\">\n <div\n [niceLoadingOverlay]=\"loading$ | async\"\n class=\"content-card base-list flex flex-col justify-between\"\n >\n <mat-table\n (matSortChange)=\"onUpdateSort($event)\"\n [dataSource]=\"data$\"\n [matSortActive]=\"(sortColumn$ | async) || ''\"\n [matSortDirection]=\"(sortDirection$ | async) || ''\"\n class=\"flex flex-col flex-auto\"\n matSort\n >\n <mat-header-row *matHeaderRowDef=\"columnNames; sticky: true\"></mat-header-row>\n\n <ng-container *ngFor=\"let column of columns\" [matColumnDef]=\"column.id\">\n <ng-container *ngIf=\"column.sortable\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>\n <ng-container\n *ngTemplateOutlet=\"table; context: { column: column.id, header: true }\"\n ></ng-container>\n </mat-header-cell>\n </ng-container>\n <ng-container *ngIf=\"!column.sortable\">\n <mat-header-cell *matHeaderCellDef>\n <ng-container\n *ngTemplateOutlet=\"table; context: { column: column.id, header: true }\"\n ></ng-container>\n </mat-header-cell>\n </ng-container>\n\n <mat-cell *matCellDef=\"let item\">\n <ng-container\n *ngTemplateOutlet=\"table; context: { column: column.id, data: true, item: item }\"\n ></ng-container>\n </mat-cell>\n </ng-container>\n\n <ng-container *ngIf=\"disableRouting; else withRouting\">\n <mat-row *matRowDef=\"let item; columns: columnNames;\" class=\"item\"></mat-row>\n </ng-container>\n\n <ng-template #withRouting>\n <mat-row\n *matRowDef=\"let item; columns: columnNames;\"\n (click)=\"navigate(item)\"\n class=\"item clickable\"\n matRipple\n >\n </mat-row>\n </ng-template>\n </mat-table>\n </div>\n </div>\n</ng-template>\n\n<ng-template #cardsLayout let-item=\"item\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngFor=\"let data of data$ | async\">\n <ng-container *ngTemplateOutlet=\"cards; context: { item: data }\"></ng-container>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #customLayout let-item=\"item\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngTemplateOutlet=\"customContent; context: { data: data$ | async }\"></ng-container>\n </div>\n</ng-template>\n", components: [{ type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { type: i9.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i10.QueryBuilderComponent, selector: "nice-query-builder", inputs: ["filterConfigs", "currentSavedReport", "loading"], outputs: ["close", "createReport", "updateReport"] }, { type: i11.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i11.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i12.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: i11.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }], directives: [{ type: i13.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i13.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i13.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i13.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i14.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i14.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i14.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i15.QueryBuilderTriggerDirective, selector: "[niceQueryBuilderTrigger]", inputs: ["queryBuilderFilters", "queryBuilderFiltersLoading"], outputs: ["queryBuilderFilterSelected"] }, { type: i16.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i17.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { type: i18.NiceLoadingDirective, selector: "[niceLoadingOverlay]", inputs: ["niceLoadingOverlay"] }, { type: i9.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { type: i12.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i11.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i11.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i11.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i11.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i11.MatCellDef, selector: "[matCellDef]" }, { type: i11.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i11.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i19.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }], pipes: { "async": i13.AsyncPipe, "translate": i20.TranslatePipe } });
48
+ ], usesInheritance: true, ngImport: i0, template: "<div class=\"list page-layout carded fullwidth inner-scroll\" *ngIf=\"layout === 'page'; else content\">\n <div class=\"center\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n</div>\n\n<ng-template #content>\n <ng-container *ngIf=\"listLayout.xl\">\n <div class=\"hidden xl:block\">\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.xl }\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"listLayout.lg\">\n <div class=\"hidden lg:block xl:hidden\">\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.lg }\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"listLayout.md\">\n <div class=\"hidden md:block lg:hidden\">\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.md }\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"listLayout.sm\">\n <div class=\"hidden sm:block md:hidden\">\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.sm }\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"listLayout.xs\">\n <div class=\"block sm:hidden\">\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.xs }\"></ng-container>\n </div>\n </ng-container>\n\n <div\n [class.hidden]=\"!!listLayout.xs\"\n [class.block]=\"!listLayout.xs\"\n [class.sm:hidden]=\"!!listLayout.sm\"\n [class.sm:block]=\"!listLayout.sm\"\n [class.md:hidden]=\"!!listLayout.md\"\n [class.md:block]=\"!listLayout.md\"\n [class.lg:hidden]=\"!!listLayout.lg\"\n [class.lg:block]=\"!listLayout.lg\"\n [class.xl:hidden]=\"!!listLayout.xl\"\n [class.xl:block]=\"!listLayout.xl\"\n >\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.default }\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #pageLayout let-layout=\"layout\">\n <ng-container *ngIf=\"layout?.length; else isObject\">\n <ng-container *ngTemplateOutlet=\"contentLayout; context: { layout: { classes: ['flex flex-col'], items: layout } }\"></ng-container>\n </ng-container>\n\n <ng-template #isObject>\n <ng-container *ngTemplateOutlet=\"contentLayout; context: { layout: layout }\"></ng-container>\n </ng-template>\n</ng-template>\n\n<ng-template #contentLayout let-layout=\"layout\">\n <div [ngClass]=\"layout.classes\">\n <ng-container *ngFor=\"let item of layout.items\">\n <ng-container *ngIf=\"item.name; else childIsLayout\">\n <ng-container *ngTemplateOutlet=\"layoutItem; context: { item: item }\"></ng-container>\n </ng-container>\n <ng-template #childIsLayout>\n <ng-container *ngTemplateOutlet=\"contentLayout; context: { layout: item }\"></ng-container>\n </ng-template>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #layoutItem let-item=\"item\">\n <ng-container *ngIf=\"item.name === 'title' && title\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngTemplateOutlet=\"title\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'search'\">\n <div [ngClass]=\"item.classes\">\n <div class=\"search-wrapper mx-md-0\">\n <div class=\"search flex flex-auto justify-start items-center\">\n <mat-icon>search</mat-icon>\n <input [ngModel]=\"searchQuery$ | async\" (ngModelChange)=\"onUpdateSearch($event)\" [placeholder]=\"'general.search' | translate\" />\n <ng-container *ngIf=\"enableQueryBuilder\">\n <button\n *ngIf=\"!(showQueryBuilder$ | async) && !(rulesCount$ | async)\"\n mat-icon-button\n niceQueryBuilderTrigger\n [queryBuilderFilters]=\"filterConfig$ | async\"\n [queryBuilderFiltersLoading]=\"(filterConfigLoading$ | async) || false\"\n (queryBuilderFilterSelected)=\"onQueryBuilderFilterSelected($event)\"\n [matTooltip]=\"'general.query_builder.show_advanced_search' | translate\"\n >\n <mat-icon\n [matBadge]=\"rulesCount$ | async\"\n [matBadgeHidden]=\"!(rulesCount$ | async)\"\n matBadgeColor=\"accent\"\n >\n filter_list\n </mat-icon>\n </button>\n <button\n mat-icon-button\n *ngIf=\"!(showQueryBuilder$ | async) && (rulesCount$ | async)\"\n [disabled]=\"filterConfigLoading$ | async\"\n (click)=\"clickToggleShowQueryBuilder()\"\n [matTooltip]=\"'general.query_builder.show_advanced_search' | translate\"\n >\n <mat-icon\n [matBadge]=\"rulesCount$ | async\"\n [matBadgeHidden]=\"!(rulesCount$ | async)\"\n matBadgeColor=\"accent\"\n >\n filter_list\n </mat-icon>\n </button>\n <button\n mat-icon-button\n *ngIf=\"showQueryBuilder$ | async\"\n (click)=\"clickToggleShowQueryBuilder()\"\n [matTooltip]=\"'general.query_builder.close_advanced_search' | translate\"\n >\n <mat-icon>\n clear\n </mat-icon>\n </button>\n </ng-container>\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'prefixButtons' && prefixButtons\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngTemplateOutlet=\"prefixButtons\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'suffixButtons' && suffixButtons\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngTemplateOutlet=\"suffixButtons\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'exportButtons' && canExport\">\n <div [ngClass]=\"item.classes\" [class.mr-2]=\"!!suffixButtons\" [class.ml-2]=\"!!prefixButtons\">\n <button\n (click)=\"clickPrint()\"\n [disabled]=\"loading$ | async\"\n [matTooltip]=\"'general.print' | translate\"\n class=\"list-button mr-2\"\n mat-mini-fab\n >\n <mat-icon>print</mat-icon>\n </button>\n\n <button\n (click)=\"clickExport()\"\n [disabled]=\"loading$ | async\"\n [matTooltip]=\"'general.export' | translate\"\n class=\"list-button mr-2\"\n mat-mini-fab\n >\n <mat-icon>cloud_download</mat-icon>\n </button>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'content'\">\n <ng-container *ngIf=\"layoutContent === 'table' && table\">\n <ng-container *ngTemplateOutlet=\"tableLayout; context: { item: item }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"layoutContent === 'cards' && cards\">\n <ng-container *ngTemplateOutlet=\"cardsLayout; context: { item: item }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"layoutContent === 'custom' && customContent\">\n <ng-container *ngTemplateOutlet=\"customLayout; context: { item: item }\"></ng-container>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'pagination' && layoutContent !== 'custom'\">\n <div [ngClass]=\"item.classes\">\n <mat-paginator\n (page)=\"onUpdatePage($event)\"\n [length]=\"recordsFiltered$ | async\"\n [pageIndex]=\"index$ | async\"\n [pageSizeOptions]=\"defaultPageSizeOptions\"\n [pageSize]=\"length$ | async\"\n [showFirstLastButtons]=\"true\"\n >\n </mat-paginator>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'queryBuilder' && enableQueryBuilder\">\n <div class=\"flex flex-col\" *ngIf=\"showQueryBuilder$ | async\">\n <mat-card class=\"my-4\" [niceLoadingOverlay]=\"filterConfigLoading$ | async\">\n <mat-card-content class=\"flex flex-col\">\n <div class=\"flex-auto\">\n <nice-query-builder\n [filterConfigs]=\"filterConfig$ | async\"\n [ngModel]=\"rules$ | async\"\n (ngModelChange)=\"onUpdateRules($event)\"\n (close)=\"clickToggleShowQueryBuilder()\"\n ></nice-query-builder>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'filters' && filters\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngTemplateOutlet=\"filters\"></ng-container>\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #tableLayout let-item=\"item\">\n <div [ngClass]=\"item.classes\">\n <div\n [niceLoadingOverlay]=\"loading$ | async\"\n class=\"content-card base-list flex flex-col justify-between\"\n >\n <mat-table\n (matSortChange)=\"onUpdateSort($event)\"\n [dataSource]=\"data$\"\n [matSortActive]=\"(sortColumn$ | async) || ''\"\n [matSortDirection]=\"(sortDirection$ | async) || ''\"\n class=\"flex flex-col flex-auto\"\n matSort\n >\n <mat-header-row *matHeaderRowDef=\"columnNames; sticky: true\"></mat-header-row>\n\n <ng-container *ngFor=\"let column of columns\" [matColumnDef]=\"column.id\">\n <ng-container *ngIf=\"column.sortable\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>\n <ng-container\n *ngTemplateOutlet=\"table; context: { column: column.id, header: true }\"\n ></ng-container>\n </mat-header-cell>\n </ng-container>\n <ng-container *ngIf=\"!column.sortable\">\n <mat-header-cell *matHeaderCellDef>\n <ng-container\n *ngTemplateOutlet=\"table; context: { column: column.id, header: true }\"\n ></ng-container>\n </mat-header-cell>\n </ng-container>\n\n <mat-cell *matCellDef=\"let item\">\n <ng-container\n *ngTemplateOutlet=\"table; context: { column: column.id, data: true, item: item }\"\n ></ng-container>\n </mat-cell>\n </ng-container>\n\n <ng-container *ngIf=\"disableRouting; else withRouting\">\n <mat-row *matRowDef=\"let item; columns: columnNames;\" class=\"item\"></mat-row>\n </ng-container>\n\n <ng-template #withRouting>\n <mat-row\n *matRowDef=\"let item; columns: columnNames;\"\n (click)=\"navigate(item)\"\n class=\"item clickable\"\n matRipple\n >\n </mat-row>\n </ng-template>\n </mat-table>\n </div>\n </div>\n</ng-template>\n\n<ng-template #cardsLayout let-item=\"item\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngFor=\"let data of data$ | async\">\n <ng-container *ngTemplateOutlet=\"cards; context: { item: data }\"></ng-container>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #customLayout let-item=\"item\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngTemplateOutlet=\"customContent; context: { data: data$ | async }\"></ng-container>\n </div>\n</ng-template>\n", components: [{ type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { type: i9.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i10.QueryBuilderComponent, selector: "nice-query-builder", inputs: ["filterConfigs", "currentSavedReport", "loading"], outputs: ["close", "createReport", "updateReport"] }, { type: i11.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i11.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i12.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: i11.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }], directives: [{ type: i13.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i13.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i13.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i13.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i14.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i14.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i14.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i15.QueryBuilderTriggerDirective, selector: "[niceQueryBuilderTrigger]", inputs: ["queryBuilderFilters", "queryBuilderFiltersLoading"], outputs: ["queryBuilderFilterSelected"] }, { type: i16.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i17.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { type: i4.NiceLoadingDirective, selector: "[niceLoadingOverlay]", inputs: ["niceLoadingOverlay"] }, { type: i9.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { type: i12.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i11.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i11.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i11.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i11.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i11.MatCellDef, selector: "[matCellDef]" }, { type: i11.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i11.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i18.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }], pipes: { "async": i13.AsyncPipe, "translate": i19.TranslatePipe } });
50
49
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: NiceMultiStateListComponent, decorators: [{
51
50
  type: Component,
52
51
  args: [{ selector: "nice-multi-state-list", providers: [
53
52
  NiceMultiStateListQuery,
54
53
  NiceMultiStateListService,
55
54
  NiceMultiStateListStore
56
- ], template: "<div class=\"list page-layout carded fullwidth inner-scroll\" *ngIf=\"layout === 'page'; else content\">\n <div class=\"center\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n</div>\n\n<ng-template #content>\n <ng-container *ngIf=\"listLayout.xl\">\n <div class=\"hidden xl:block\">\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.xl }\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"listLayout.lg\">\n <div class=\"hidden lg:block xl:hidden\">\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.lg }\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"listLayout.md\">\n <div class=\"hidden md:block lg:hidden\">\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.md }\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"listLayout.sm\">\n <div class=\"hidden sm:block md:hidden\">\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.sm }\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"listLayout.xs\">\n <div class=\"block sm:hidden\">\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.xs }\"></ng-container>\n </div>\n </ng-container>\n\n <div\n [class.hidden]=\"!!listLayout.xs\"\n [class.block]=\"!listLayout.xs\"\n [class.sm:hidden]=\"!!listLayout.sm\"\n [class.sm:block]=\"!listLayout.sm\"\n [class.md:hidden]=\"!!listLayout.md\"\n [class.md:block]=\"!listLayout.md\"\n [class.lg:hidden]=\"!!listLayout.lg\"\n [class.lg:block]=\"!listLayout.lg\"\n [class.xl:hidden]=\"!!listLayout.xl\"\n [class.xl:block]=\"!listLayout.xl\"\n >\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.default }\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #pageLayout let-layout=\"layout\">\n <ng-container *ngIf=\"layout?.length; else isObject\">\n <ng-container *ngTemplateOutlet=\"contentLayout; context: { layout: { classes: ['flex flex-col'], items: layout } }\"></ng-container>\n </ng-container>\n\n <ng-template #isObject>\n <ng-container *ngTemplateOutlet=\"contentLayout; context: { layout: layout }\"></ng-container>\n </ng-template>\n</ng-template>\n\n<ng-template #contentLayout let-layout=\"layout\">\n <div [ngClass]=\"layout.classes\">\n <ng-container *ngFor=\"let item of layout.items\">\n <ng-container *ngIf=\"item.name; else childIsLayout\">\n <ng-container *ngTemplateOutlet=\"layoutItem; context: { item: item }\"></ng-container>\n </ng-container>\n <ng-template #childIsLayout>\n <ng-container *ngTemplateOutlet=\"contentLayout; context: { layout: item }\"></ng-container>\n </ng-template>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #layoutItem let-item=\"item\">\n <ng-container *ngIf=\"item.name === 'title' && title\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngTemplateOutlet=\"title\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'search'\">\n <div [ngClass]=\"item.classes\">\n <div class=\"search-wrapper mx-md-0\">\n <div class=\"search flex flex-auto justify-start items-center\">\n <mat-icon>search</mat-icon>\n <input [ngModel]=\"searchQuery$ | async\" (ngModelChange)=\"onUpdateSearch($event)\" [placeholder]=\"'general.search' | translate\" />\n <ng-container *ngIf=\"enableQueryBuilder\">\n <button\n *ngIf=\"!(showQueryBuilder$ | async) && !(rulesCount$ | async)\"\n mat-icon-button\n niceQueryBuilderTrigger\n [queryBuilderFilters]=\"filterConfig$ | async\"\n [queryBuilderFiltersLoading]=\"(filterConfigLoading$ | async) || false\"\n (queryBuilderFilterSelected)=\"onQueryBuilderFilterSelected($event)\"\n [matTooltip]=\"'general.query_builder.show_advanced_search' | translate\"\n >\n <mat-icon\n [matBadge]=\"rulesCount$ | async\"\n [matBadgeHidden]=\"!(rulesCount$ | async)\"\n matBadgeColor=\"accent\"\n >\n filter_list\n </mat-icon>\n </button>\n <button\n mat-icon-button\n *ngIf=\"!(showQueryBuilder$ | async) && (rulesCount$ | async)\"\n [disabled]=\"filterConfigLoading$ | async\"\n (click)=\"clickToggleShowQueryBuilder()\"\n [matTooltip]=\"'general.query_builder.show_advanced_search' | translate\"\n >\n <mat-icon\n [matBadge]=\"rulesCount$ | async\"\n [matBadgeHidden]=\"!(rulesCount$ | async)\"\n matBadgeColor=\"accent\"\n >\n filter_list\n </mat-icon>\n </button>\n <button\n mat-icon-button\n *ngIf=\"showQueryBuilder$ | async\"\n (click)=\"clickToggleShowQueryBuilder()\"\n [matTooltip]=\"'general.query_builder.close_advanced_search' | translate\"\n >\n <mat-icon>\n clear\n </mat-icon>\n </button>\n </ng-container>\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'prefixButtons' && prefixButtons\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngTemplateOutlet=\"prefixButtons\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'suffixButtons' && suffixButtons\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngTemplateOutlet=\"suffixButtons\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'exportButtons' && canExport\">\n <div [ngClass]=\"item.classes\" [class.mr-2]=\"!!suffixButtons\" [class.ml-2]=\"!!prefixButtons\">\n <button\n (click)=\"clickPrint()\"\n [disabled]=\"loading$ | async\"\n [matTooltip]=\"'general.print' | translate\"\n class=\"list-button mr-2\"\n mat-mini-fab\n >\n <mat-icon>print</mat-icon>\n </button>\n\n <button\n (click)=\"clickExport()\"\n [disabled]=\"loading$ | async\"\n [matTooltip]=\"'general.export' | translate\"\n class=\"list-button mr-2\"\n mat-mini-fab\n >\n <mat-icon>cloud_download</mat-icon>\n </button>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'content'\">\n <ng-container *ngIf=\"layoutContent === 'table' && table\">\n <ng-container *ngTemplateOutlet=\"tableLayout; context: { item: item }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"layoutContent === 'cards' && cards\">\n <ng-container *ngTemplateOutlet=\"cardsLayout; context: { item: item }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"layoutContent === 'custom' && customContent\">\n <ng-container *ngTemplateOutlet=\"customLayout; context: { item: item }\"></ng-container>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'pagination' && layoutContent !== 'custom'\">\n <div [ngClass]=\"item.classes\">\n <mat-paginator\n (page)=\"onUpdatePage($event)\"\n [length]=\"recordsFiltered$ | async\"\n [pageIndex]=\"index$ | async\"\n [pageSizeOptions]=\"defaultPageSizeOptions\"\n [pageSize]=\"length$ | async\"\n [showFirstLastButtons]=\"true\"\n >\n </mat-paginator>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'queryBuilder' && enableQueryBuilder\">\n <div class=\"flex flex-col\" *ngIf=\"showQueryBuilder$ | async\">\n <mat-card class=\"my-4\" [niceLoadingOverlay]=\"filterConfigLoading$ | async\">\n <mat-card-content class=\"flex flex-col\">\n <div class=\"flex flex-auto\">\n <nice-query-builder\n [filterConfigs]=\"filterConfig$ | async\"\n [ngModel]=\"rules$ | async\"\n (ngModelChange)=\"onUpdateRules($event)\"\n (close)=\"clickToggleShowQueryBuilder()\"\n ></nice-query-builder>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'filters' && filters\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngTemplateOutlet=\"filters\"></ng-container>\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #tableLayout let-item=\"item\">\n <div [ngClass]=\"item.classes\">\n <div\n [niceLoadingOverlay]=\"loading$ | async\"\n class=\"content-card base-list flex flex-col justify-between\"\n >\n <mat-table\n (matSortChange)=\"onUpdateSort($event)\"\n [dataSource]=\"data$\"\n [matSortActive]=\"(sortColumn$ | async) || ''\"\n [matSortDirection]=\"(sortDirection$ | async) || ''\"\n class=\"flex flex-col flex-auto\"\n matSort\n >\n <mat-header-row *matHeaderRowDef=\"columnNames; sticky: true\"></mat-header-row>\n\n <ng-container *ngFor=\"let column of columns\" [matColumnDef]=\"column.id\">\n <ng-container *ngIf=\"column.sortable\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>\n <ng-container\n *ngTemplateOutlet=\"table; context: { column: column.id, header: true }\"\n ></ng-container>\n </mat-header-cell>\n </ng-container>\n <ng-container *ngIf=\"!column.sortable\">\n <mat-header-cell *matHeaderCellDef>\n <ng-container\n *ngTemplateOutlet=\"table; context: { column: column.id, header: true }\"\n ></ng-container>\n </mat-header-cell>\n </ng-container>\n\n <mat-cell *matCellDef=\"let item\">\n <ng-container\n *ngTemplateOutlet=\"table; context: { column: column.id, data: true, item: item }\"\n ></ng-container>\n </mat-cell>\n </ng-container>\n\n <ng-container *ngIf=\"disableRouting; else withRouting\">\n <mat-row *matRowDef=\"let item; columns: columnNames;\" class=\"item\"></mat-row>\n </ng-container>\n\n <ng-template #withRouting>\n <mat-row\n *matRowDef=\"let item; columns: columnNames;\"\n (click)=\"navigate(item)\"\n class=\"item clickable\"\n matRipple\n >\n </mat-row>\n </ng-template>\n </mat-table>\n </div>\n </div>\n</ng-template>\n\n<ng-template #cardsLayout let-item=\"item\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngFor=\"let data of data$ | async\">\n <ng-container *ngTemplateOutlet=\"cards; context: { item: data }\"></ng-container>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #customLayout let-item=\"item\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngTemplateOutlet=\"customContent; context: { data: data$ | async }\"></ng-container>\n </div>\n</ng-template>\n" }]
55
+ ], template: "<div class=\"list page-layout carded fullwidth inner-scroll\" *ngIf=\"layout === 'page'; else content\">\n <div class=\"center\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n</div>\n\n<ng-template #content>\n <ng-container *ngIf=\"listLayout.xl\">\n <div class=\"hidden xl:block\">\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.xl }\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"listLayout.lg\">\n <div class=\"hidden lg:block xl:hidden\">\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.lg }\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"listLayout.md\">\n <div class=\"hidden md:block lg:hidden\">\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.md }\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"listLayout.sm\">\n <div class=\"hidden sm:block md:hidden\">\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.sm }\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"listLayout.xs\">\n <div class=\"block sm:hidden\">\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.xs }\"></ng-container>\n </div>\n </ng-container>\n\n <div\n [class.hidden]=\"!!listLayout.xs\"\n [class.block]=\"!listLayout.xs\"\n [class.sm:hidden]=\"!!listLayout.sm\"\n [class.sm:block]=\"!listLayout.sm\"\n [class.md:hidden]=\"!!listLayout.md\"\n [class.md:block]=\"!listLayout.md\"\n [class.lg:hidden]=\"!!listLayout.lg\"\n [class.lg:block]=\"!listLayout.lg\"\n [class.xl:hidden]=\"!!listLayout.xl\"\n [class.xl:block]=\"!listLayout.xl\"\n >\n <ng-container *ngTemplateOutlet=\"pageLayout; context: { layout: listLayout.default }\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #pageLayout let-layout=\"layout\">\n <ng-container *ngIf=\"layout?.length; else isObject\">\n <ng-container *ngTemplateOutlet=\"contentLayout; context: { layout: { classes: ['flex flex-col'], items: layout } }\"></ng-container>\n </ng-container>\n\n <ng-template #isObject>\n <ng-container *ngTemplateOutlet=\"contentLayout; context: { layout: layout }\"></ng-container>\n </ng-template>\n</ng-template>\n\n<ng-template #contentLayout let-layout=\"layout\">\n <div [ngClass]=\"layout.classes\">\n <ng-container *ngFor=\"let item of layout.items\">\n <ng-container *ngIf=\"item.name; else childIsLayout\">\n <ng-container *ngTemplateOutlet=\"layoutItem; context: { item: item }\"></ng-container>\n </ng-container>\n <ng-template #childIsLayout>\n <ng-container *ngTemplateOutlet=\"contentLayout; context: { layout: item }\"></ng-container>\n </ng-template>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #layoutItem let-item=\"item\">\n <ng-container *ngIf=\"item.name === 'title' && title\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngTemplateOutlet=\"title\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'search'\">\n <div [ngClass]=\"item.classes\">\n <div class=\"search-wrapper mx-md-0\">\n <div class=\"search flex flex-auto justify-start items-center\">\n <mat-icon>search</mat-icon>\n <input [ngModel]=\"searchQuery$ | async\" (ngModelChange)=\"onUpdateSearch($event)\" [placeholder]=\"'general.search' | translate\" />\n <ng-container *ngIf=\"enableQueryBuilder\">\n <button\n *ngIf=\"!(showQueryBuilder$ | async) && !(rulesCount$ | async)\"\n mat-icon-button\n niceQueryBuilderTrigger\n [queryBuilderFilters]=\"filterConfig$ | async\"\n [queryBuilderFiltersLoading]=\"(filterConfigLoading$ | async) || false\"\n (queryBuilderFilterSelected)=\"onQueryBuilderFilterSelected($event)\"\n [matTooltip]=\"'general.query_builder.show_advanced_search' | translate\"\n >\n <mat-icon\n [matBadge]=\"rulesCount$ | async\"\n [matBadgeHidden]=\"!(rulesCount$ | async)\"\n matBadgeColor=\"accent\"\n >\n filter_list\n </mat-icon>\n </button>\n <button\n mat-icon-button\n *ngIf=\"!(showQueryBuilder$ | async) && (rulesCount$ | async)\"\n [disabled]=\"filterConfigLoading$ | async\"\n (click)=\"clickToggleShowQueryBuilder()\"\n [matTooltip]=\"'general.query_builder.show_advanced_search' | translate\"\n >\n <mat-icon\n [matBadge]=\"rulesCount$ | async\"\n [matBadgeHidden]=\"!(rulesCount$ | async)\"\n matBadgeColor=\"accent\"\n >\n filter_list\n </mat-icon>\n </button>\n <button\n mat-icon-button\n *ngIf=\"showQueryBuilder$ | async\"\n (click)=\"clickToggleShowQueryBuilder()\"\n [matTooltip]=\"'general.query_builder.close_advanced_search' | translate\"\n >\n <mat-icon>\n clear\n </mat-icon>\n </button>\n </ng-container>\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'prefixButtons' && prefixButtons\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngTemplateOutlet=\"prefixButtons\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'suffixButtons' && suffixButtons\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngTemplateOutlet=\"suffixButtons\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'exportButtons' && canExport\">\n <div [ngClass]=\"item.classes\" [class.mr-2]=\"!!suffixButtons\" [class.ml-2]=\"!!prefixButtons\">\n <button\n (click)=\"clickPrint()\"\n [disabled]=\"loading$ | async\"\n [matTooltip]=\"'general.print' | translate\"\n class=\"list-button mr-2\"\n mat-mini-fab\n >\n <mat-icon>print</mat-icon>\n </button>\n\n <button\n (click)=\"clickExport()\"\n [disabled]=\"loading$ | async\"\n [matTooltip]=\"'general.export' | translate\"\n class=\"list-button mr-2\"\n mat-mini-fab\n >\n <mat-icon>cloud_download</mat-icon>\n </button>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'content'\">\n <ng-container *ngIf=\"layoutContent === 'table' && table\">\n <ng-container *ngTemplateOutlet=\"tableLayout; context: { item: item }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"layoutContent === 'cards' && cards\">\n <ng-container *ngTemplateOutlet=\"cardsLayout; context: { item: item }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"layoutContent === 'custom' && customContent\">\n <ng-container *ngTemplateOutlet=\"customLayout; context: { item: item }\"></ng-container>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'pagination' && layoutContent !== 'custom'\">\n <div [ngClass]=\"item.classes\">\n <mat-paginator\n (page)=\"onUpdatePage($event)\"\n [length]=\"recordsFiltered$ | async\"\n [pageIndex]=\"index$ | async\"\n [pageSizeOptions]=\"defaultPageSizeOptions\"\n [pageSize]=\"length$ | async\"\n [showFirstLastButtons]=\"true\"\n >\n </mat-paginator>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'queryBuilder' && enableQueryBuilder\">\n <div class=\"flex flex-col\" *ngIf=\"showQueryBuilder$ | async\">\n <mat-card class=\"my-4\" [niceLoadingOverlay]=\"filterConfigLoading$ | async\">\n <mat-card-content class=\"flex flex-col\">\n <div class=\"flex-auto\">\n <nice-query-builder\n [filterConfigs]=\"filterConfig$ | async\"\n [ngModel]=\"rules$ | async\"\n (ngModelChange)=\"onUpdateRules($event)\"\n (close)=\"clickToggleShowQueryBuilder()\"\n ></nice-query-builder>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.name === 'filters' && filters\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngTemplateOutlet=\"filters\"></ng-container>\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #tableLayout let-item=\"item\">\n <div [ngClass]=\"item.classes\">\n <div\n [niceLoadingOverlay]=\"loading$ | async\"\n class=\"content-card base-list flex flex-col justify-between\"\n >\n <mat-table\n (matSortChange)=\"onUpdateSort($event)\"\n [dataSource]=\"data$\"\n [matSortActive]=\"(sortColumn$ | async) || ''\"\n [matSortDirection]=\"(sortDirection$ | async) || ''\"\n class=\"flex flex-col flex-auto\"\n matSort\n >\n <mat-header-row *matHeaderRowDef=\"columnNames; sticky: true\"></mat-header-row>\n\n <ng-container *ngFor=\"let column of columns\" [matColumnDef]=\"column.id\">\n <ng-container *ngIf=\"column.sortable\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>\n <ng-container\n *ngTemplateOutlet=\"table; context: { column: column.id, header: true }\"\n ></ng-container>\n </mat-header-cell>\n </ng-container>\n <ng-container *ngIf=\"!column.sortable\">\n <mat-header-cell *matHeaderCellDef>\n <ng-container\n *ngTemplateOutlet=\"table; context: { column: column.id, header: true }\"\n ></ng-container>\n </mat-header-cell>\n </ng-container>\n\n <mat-cell *matCellDef=\"let item\">\n <ng-container\n *ngTemplateOutlet=\"table; context: { column: column.id, data: true, item: item }\"\n ></ng-container>\n </mat-cell>\n </ng-container>\n\n <ng-container *ngIf=\"disableRouting; else withRouting\">\n <mat-row *matRowDef=\"let item; columns: columnNames;\" class=\"item\"></mat-row>\n </ng-container>\n\n <ng-template #withRouting>\n <mat-row\n *matRowDef=\"let item; columns: columnNames;\"\n (click)=\"navigate(item)\"\n class=\"item clickable\"\n matRipple\n >\n </mat-row>\n </ng-template>\n </mat-table>\n </div>\n </div>\n</ng-template>\n\n<ng-template #cardsLayout let-item=\"item\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngFor=\"let data of data$ | async\">\n <ng-container *ngTemplateOutlet=\"cards; context: { item: data }\"></ng-container>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #customLayout let-item=\"item\">\n <div [ngClass]=\"item.classes\">\n <ng-container *ngTemplateOutlet=\"customContent; context: { data: data$ | async }\"></ng-container>\n </div>\n</ng-template>\n" }]
57
56
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
58
57
  type: Optional
59
58
  }, {
@@ -65,7 +64,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
65
64
  }] }, { type: undefined, decorators: [{
66
65
  type: Inject,
67
66
  args: [EXPORTS_SETTINGS]
68
- }] }, { type: i1.NiceMultiStateListQuery }, { type: i2.ActivatedRoute }, { type: i3.MatBottomSheet }, { type: i2.Router }, { type: i4.MediaObserver }, { type: i5.NiceMultiStateListService }]; }, propDecorators: { state: [{
67
+ }] }, { type: i1.NiceMultiStateListQuery }, { type: i2.ActivatedRoute }, { type: i3.MatBottomSheet }, { type: i2.Router }, { type: i4.NiceMediaWatcherService }, { type: i5.NiceMultiStateListService }]; }, propDecorators: { state: [{
69
68
  type: Input
70
69
  }] } });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc3RhdGUtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uaWNlLWRhdGEtZmlsdGVyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvbXVsdGktc3RhdGUtbGlzdC9tdWx0aS1zdGF0ZS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtZGF0YS1maWx0ZXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9iYXNlLWxpc3QvYmFzZS1saXN0LnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHM0csT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDekUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDN0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFXekUsTUFBTSxPQUFPLDJCQUE0QixTQUFRLHFCQUFxQjtJQU1sRSxZQUM4QyxrQkFBMkIsRUFDM0MsVUFBMEIsRUFDMUIsY0FBOEIsRUFDeEQsS0FBOEIsRUFDOUIsY0FBOEIsRUFDOUIsV0FBMkIsRUFDM0IsTUFBYyxFQUNkLGFBQTRCLEVBQ3BCLHFCQUFnRDtRQUV4RCxLQUFLLENBQ0Qsa0JBQWtCLEVBQ2xCLFVBQVUsRUFDVixFQUFFLEVBQ0YsY0FBYyxFQUNkLEtBQUssRUFDTCxxQkFBcUIsRUFDckIsY0FBYyxFQUNkLFdBQVcsRUFDWCxNQUFNLEVBQ04sYUFBYSxDQUNoQixDQUFDO1FBYk0sMEJBQXFCLEdBQXJCLHFCQUFxQixDQUEyQjtJQWM1RCxDQUFDO0lBNUJELElBQ1csS0FBSyxDQUFDLEtBQWE7UUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBMkJPLFdBQVcsQ0FBQyxLQUFhO1FBQzdCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QixDQUFDOzt3SEFsQ1EsMkJBQTJCLGtCQU9aLG9CQUFvQiw2QkFDaEMsZ0JBQWdCLGFBQ2hCLGdCQUFnQjs0R0FUbkIsMkJBQTJCLDRFQU56QjtRQUNQLHVCQUF1QjtRQUN2Qix5QkFBeUI7UUFDekIsdUJBQXVCO0tBQzFCLGlEQ25CTCw4OVpBc1NBOzJGRGpSYSwyQkFBMkI7a0JBVHZDLFNBQVM7K0JBQ0ksdUJBQXVCLGFBRXRCO3dCQUNQLHVCQUF1Qjt3QkFDdkIseUJBQXlCO3dCQUN6Qix1QkFBdUI7cUJBQzFCOzswQkFTSSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLG9CQUFvQjs7MEJBQ3ZDLE1BQU07MkJBQUMsZ0JBQWdCOzswQkFDdkIsTUFBTTsyQkFBQyxnQkFBZ0I7cU9BUGpCLEtBQUs7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCwgT3B0aW9uYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTWVkaWFPYnNlcnZlciB9IGZyb20gXCJAYW5ndWxhci9mbGV4LWxheW91dFwiO1xuaW1wb3J0IHsgTWF0Qm90dG9tU2hlZXQgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYm90dG9tLXNoZWV0XCI7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHsgTmljZUJhc2VMaXN0Q29tcG9uZW50IH0gZnJvbSBcIi4uL2Jhc2UtbGlzdC9iYXNlLWxpc3QuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBCQVNFX0xJU1RfTEFZT1VULCBFTkFCTEVfUVVFUllfQlVJTERFUiwgRVhQT1JUU19TRVRUSU5HUyB9IGZyb20gXCIuLi9iYXNlLWxpc3QvYmFzZS1saXN0LmNvbnN0YW50XCI7XG5pbXBvcnQgeyBFeHBvcnRTZXR0aW5ncyB9IGZyb20gXCIuLi9iYXNlLWxpc3QvbW9kZWxzL2V4cG9ydC5tb2RlbFwiO1xuaW1wb3J0IHsgQmFzZUxpc3RMYXlvdXQgfSBmcm9tIFwiLi4vYmFzZS1saXN0L21vZGVscy9sYXlvdXQubW9kZWxcIjtcbmltcG9ydCB7IE5pY2VNdWx0aVN0YXRlTGlzdFF1ZXJ5IH0gZnJvbSBcIi4vc3RvcmUvbXVsdGktc3RhdGUtbGlzdC5xdWVyeVwiO1xuaW1wb3J0IHsgTmljZU11bHRpU3RhdGVMaXN0U2VydmljZSB9IGZyb20gXCIuL3N0b3JlL211bHRpLXN0YXRlLWxpc3Quc2VydmljZVwiO1xuaW1wb3J0IHsgTmljZU11bHRpU3RhdGVMaXN0U3RvcmUgfSBmcm9tIFwiLi9zdG9yZS9tdWx0aS1zdGF0ZS1saXN0LnN0b3JlXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcIm5pY2UtbXVsdGktc3RhdGUtbGlzdFwiLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4uL2Jhc2UtbGlzdC9iYXNlLWxpc3QudGVtcGxhdGUuaHRtbFwiLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBOaWNlTXVsdGlTdGF0ZUxpc3RRdWVyeSxcbiAgICAgICAgTmljZU11bHRpU3RhdGVMaXN0U2VydmljZSxcbiAgICAgICAgTmljZU11bHRpU3RhdGVMaXN0U3RvcmVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE5pY2VNdWx0aVN0YXRlTGlzdENvbXBvbmVudCBleHRlbmRzIE5pY2VCYXNlTGlzdENvbXBvbmVudCB7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHN0YXRlKHN0YXRlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zd2l0Y2hTdGF0ZShzdGF0ZSk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRU5BQkxFX1FVRVJZX0JVSUxERVIpIGVuYWJsZVF1ZXJ5QnVpbGRlcjogYm9vbGVhbixcbiAgICAgICAgQEluamVjdChCQVNFX0xJU1RfTEFZT1VUKSBsaXN0TGF5b3V0OiBCYXNlTGlzdExheW91dCxcbiAgICAgICAgQEluamVjdChFWFBPUlRTX1NFVFRJTkdTKSBleHBvcnRzU2V0dGluZzogRXhwb3J0U2V0dGluZ3MsXG4gICAgICAgIHF1ZXJ5OiBOaWNlTXVsdGlTdGF0ZUxpc3RRdWVyeSxcbiAgICAgICAgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBib3R0b21TaGVldDogTWF0Qm90dG9tU2hlZXQsXG4gICAgICAgIHJvdXRlcjogUm91dGVyLFxuICAgICAgICBtZWRpYU9ic2VydmVyOiBNZWRpYU9ic2VydmVyLFxuICAgICAgICBwcml2YXRlIG11bHRpU3RhdGVMaXN0U2VydmljZTogTmljZU11bHRpU3RhdGVMaXN0U2VydmljZSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoXG4gICAgICAgICAgICBlbmFibGVRdWVyeUJ1aWxkZXIsXG4gICAgICAgICAgICBsaXN0TGF5b3V0LFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBleHBvcnRzU2V0dGluZyxcbiAgICAgICAgICAgIHF1ZXJ5LFxuICAgICAgICAgICAgbXVsdGlTdGF0ZUxpc3RTZXJ2aWNlLFxuICAgICAgICAgICAgYWN0aXZhdGVkUm91dGUsXG4gICAgICAgICAgICBib3R0b21TaGVldCxcbiAgICAgICAgICAgIHJvdXRlcixcbiAgICAgICAgICAgIG1lZGlhT2JzZXJ2ZXJcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN3aXRjaFN0YXRlKHN0YXRlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29sdW1ucyA9IHRoaXMubXVsdGlTdGF0ZUxpc3RTZXJ2aWNlLnN3aXRjaFN0YXRlKHN0YXRlKTtcbiAgICAgICAgdGhpcy5zZXRDb2x1bW4oY29sdW1ucyk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImxpc3QgcGFnZS1sYXlvdXQgY2FyZGVkIGZ1bGx3aWR0aCBpbm5lci1zY3JvbGxcIiAqbmdJZj1cImxheW91dCA9PT0gJ3BhZ2UnOyBlbHNlIGNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2VudGVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNjb250ZW50PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsaXN0TGF5b3V0LnhsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoaWRkZW4geGw6YmxvY2tcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwYWdlTGF5b3V0OyBjb250ZXh0OiB7IGxheW91dDogbGlzdExheW91dC54bCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxpc3RMYXlvdXQubGdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhpZGRlbiBsZzpibG9jayB4bDpoaWRkZW5cIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwYWdlTGF5b3V0OyBjb250ZXh0OiB7IGxheW91dDogbGlzdExheW91dC5sZyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxpc3RMYXlvdXQubWRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhpZGRlbiBtZDpibG9jayBsZzpoaWRkZW5cIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwYWdlTGF5b3V0OyBjb250ZXh0OiB7IGxheW91dDogbGlzdExheW91dC5tZCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxpc3RMYXlvdXQuc21cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhpZGRlbiBzbTpibG9jayBtZDpoaWRkZW5cIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwYWdlTGF5b3V0OyBjb250ZXh0OiB7IGxheW91dDogbGlzdExheW91dC5zbSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxpc3RMYXlvdXQueHNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJsb2NrIHNtOmhpZGRlblwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBhZ2VMYXlvdXQ7IGNvbnRleHQ6IHsgbGF5b3V0OiBsaXN0TGF5b3V0LnhzIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2XG4gICAgICAgIFtjbGFzcy5oaWRkZW5dPVwiISFsaXN0TGF5b3V0LnhzXCJcbiAgICAgICAgW2NsYXNzLmJsb2NrXT1cIiFsaXN0TGF5b3V0LnhzXCJcbiAgICAgICAgW2NsYXNzLnNtOmhpZGRlbl09XCIhIWxpc3RMYXlvdXQuc21cIlxuICAgICAgICBbY2xhc3Muc206YmxvY2tdPVwiIWxpc3RMYXlvdXQuc21cIlxuICAgICAgICBbY2xhc3MubWQ6aGlkZGVuXT1cIiEhbGlzdExheW91dC5tZFwiXG4gICAgICAgIFtjbGFzcy5tZDpibG9ja109XCIhbGlzdExheW91dC5tZFwiXG4gICAgICAgIFtjbGFzcy5sZzpoaWRkZW5dPVwiISFsaXN0TGF5b3V0LmxnXCJcbiAgICAgICAgW2NsYXNzLmxnOmJsb2NrXT1cIiFsaXN0TGF5b3V0LmxnXCJcbiAgICAgICAgW2NsYXNzLnhsOmhpZGRlbl09XCIhIWxpc3RMYXlvdXQueGxcIlxuICAgICAgICBbY2xhc3MueGw6YmxvY2tdPVwiIWxpc3RMYXlvdXQueGxcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBhZ2VMYXlvdXQ7IGNvbnRleHQ6IHsgbGF5b3V0OiBsaXN0TGF5b3V0LmRlZmF1bHQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNwYWdlTGF5b3V0IGxldC1sYXlvdXQ9XCJsYXlvdXRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGF5b3V0Py5sZW5ndGg7IGVsc2UgaXNPYmplY3RcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRMYXlvdXQ7IGNvbnRleHQ6IHsgbGF5b3V0OiB7IGNsYXNzZXM6IFsnZmxleCBmbGV4LWNvbCddLCBpdGVtczogbGF5b3V0IH0gfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNpc09iamVjdD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRMYXlvdXQ7IGNvbnRleHQ6IHsgbGF5b3V0OiBsYXlvdXQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NvbnRlbnRMYXlvdXQgbGV0LWxheW91dD1cImxheW91dFwiPlxuICAgIDxkaXYgW25nQ2xhc3NdPVwibGF5b3V0LmNsYXNzZXNcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsYXlvdXQuaXRlbXNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLm5hbWU7IGVsc2UgY2hpbGRJc0xheW91dFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsYXlvdXRJdGVtOyBjb250ZXh0OiB7IGl0ZW06IGl0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NoaWxkSXNMYXlvdXQ+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRMYXlvdXQ7IGNvbnRleHQ6IHsgbGF5b3V0OiBpdGVtIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNsYXlvdXRJdGVtIGxldC1pdGVtPVwiaXRlbVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLm5hbWUgPT09ICd0aXRsZScgJiYgdGl0bGVcIj5cbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJpdGVtLmNsYXNzZXNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aXRsZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLm5hbWUgPT09ICdzZWFyY2gnXCI+XG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiaXRlbS5jbGFzc2VzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLXdyYXBwZXIgbXgtbWQtMFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2ggZmxleCBmbGV4LWF1dG8ganVzdGlmeS1zdGFydCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnNlYXJjaDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbbmdNb2RlbF09XCJzZWFyY2hRdWVyeSQgfCBhc3luY1wiIChuZ01vZGVsQ2hhbmdlKT1cIm9uVXBkYXRlU2VhcmNoKCRldmVudClcIiBbcGxhY2Vob2xkZXJdPVwiJ2dlbmVyYWwuc2VhcmNoJyB8IHRyYW5zbGF0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbmFibGVRdWVyeUJ1aWxkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhKHNob3dRdWVyeUJ1aWxkZXIkIHwgYXN5bmMpICYmICEocnVsZXNDb3VudCQgfCBhc3luYylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmljZVF1ZXJ5QnVpbGRlclRyaWdnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3F1ZXJ5QnVpbGRlckZpbHRlcnNdPVwiZmlsdGVyQ29uZmlnJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3F1ZXJ5QnVpbGRlckZpbHRlcnNMb2FkaW5nXT1cIihmaWx0ZXJDb25maWdMb2FkaW5nJCB8IGFzeW5jKSB8fCBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChxdWVyeUJ1aWxkZXJGaWx0ZXJTZWxlY3RlZCk9XCJvblF1ZXJ5QnVpbGRlckZpbHRlclNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCInZ2VuZXJhbC5xdWVyeV9idWlsZGVyLnNob3dfYWR2YW5jZWRfc2VhcmNoJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZV09XCJydWxlc0NvdW50JCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlSGlkZGVuXT1cIiEocnVsZXNDb3VudCQgfCBhc3luYylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRCYWRnZUNvbG9yPVwiYWNjZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcl9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhKHNob3dRdWVyeUJ1aWxkZXIkIHwgYXN5bmMpICYmIChydWxlc0NvdW50JCB8IGFzeW5jKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWx0ZXJDb25maWdMb2FkaW5nJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrVG9nZ2xlU2hvd1F1ZXJ5QnVpbGRlcigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ2dlbmVyYWwucXVlcnlfYnVpbGRlci5zaG93X2FkdmFuY2VkX3NlYXJjaCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VdPVwicnVsZXNDb3VudCQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZUhpZGRlbl09XCIhKHJ1bGVzQ291bnQkIHwgYXN5bmMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0QmFkZ2VDb2xvcj1cImFjY2VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dRdWVyeUJ1aWxkZXIkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGlja1RvZ2dsZVNob3dRdWVyeUJ1aWxkZXIoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ2dlbmVyYWwucXVlcnlfYnVpbGRlci5jbG9zZV9hZHZhbmNlZF9zZWFyY2gnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLm5hbWUgPT09ICdwcmVmaXhCdXR0b25zJyAmJiBwcmVmaXhCdXR0b25zXCI+XG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiaXRlbS5jbGFzc2VzXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJlZml4QnV0dG9uc1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLm5hbWUgPT09ICdzdWZmaXhCdXR0b25zJyAmJiBzdWZmaXhCdXR0b25zXCI+XG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiaXRlbS5jbGFzc2VzXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3VmZml4QnV0dG9uc1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLm5hbWUgPT09ICdleHBvcnRCdXR0b25zJyAmJiBjYW5FeHBvcnRcIj5cbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJpdGVtLmNsYXNzZXNcIiBbY2xhc3MubXItMl09XCIhIXN1ZmZpeEJ1dHRvbnNcIiBbY2xhc3MubWwtMl09XCIhIXByZWZpeEJ1dHRvbnNcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrUHJpbnQoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ2dlbmVyYWwucHJpbnQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsaXN0LWJ1dHRvbiBtci0yXCJcbiAgICAgICAgICAgICAgICAgICAgbWF0LW1pbmktZmFiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPnByaW50PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGlja0V4cG9ydCgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmckIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCInZ2VuZXJhbC5leHBvcnQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsaXN0LWJ1dHRvbiBtci0yXCJcbiAgICAgICAgICAgICAgICAgICAgbWF0LW1pbmktZmFiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3VkX2Rvd25sb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLm5hbWUgPT09ICdjb250ZW50J1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGF5b3V0Q29udGVudCA9PT0gJ3RhYmxlJyAmJiB0YWJsZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlTGF5b3V0OyBjb250ZXh0OiB7IGl0ZW06IGl0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxheW91dENvbnRlbnQgPT09ICdjYXJkcycgJiYgY2FyZHNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjYXJkc0xheW91dDsgY29udGV4dDogeyBpdGVtOiBpdGVtIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsYXlvdXRDb250ZW50ID09PSAnY3VzdG9tJyAmJiBjdXN0b21Db250ZW50XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tTGF5b3V0OyBjb250ZXh0OiB7IGl0ZW06IGl0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLm5hbWUgPT09ICdwYWdpbmF0aW9uJyAmJiBsYXlvdXRDb250ZW50ICE9PSAnY3VzdG9tJ1wiPlxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cIml0ZW0uY2xhc3Nlc1wiPlxuICAgICAgICAgICAgPG1hdC1wYWdpbmF0b3JcbiAgICAgICAgICAgICAgICAocGFnZSk9XCJvblVwZGF0ZVBhZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW2xlbmd0aF09XCJyZWNvcmRzRmlsdGVyZWQkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgIFtwYWdlSW5kZXhdPVwiaW5kZXgkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwiZGVmYXVsdFBhZ2VTaXplT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgW3BhZ2VTaXplXT1cImxlbmd0aCQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgW3Nob3dGaXJzdExhc3RCdXR0b25zXT1cInRydWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9tYXQtcGFnaW5hdG9yPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLm5hbWUgPT09ICdxdWVyeUJ1aWxkZXInICYmIGVuYWJsZVF1ZXJ5QnVpbGRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiICpuZ0lmPVwic2hvd1F1ZXJ5QnVpbGRlciQgfCBhc3luY1wiPlxuICAgICAgICAgICAgPG1hdC1jYXJkIGNsYXNzPVwibXktNFwiIFtuaWNlTG9hZGluZ092ZXJsYXldPVwiZmlsdGVyQ29uZmlnTG9hZGluZyQgfCBhc3luY1wiPlxuICAgICAgICAgICAgICAgIDxtYXQtY2FyZC1jb250ZW50IGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuaWNlLXF1ZXJ5LWJ1aWxkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmlsdGVyQ29uZmlnc109XCJmaWx0ZXJDb25maWckIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInJ1bGVzJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblVwZGF0ZVJ1bGVzKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbG9zZSk9XCJjbGlja1RvZ2dsZVNob3dRdWVyeUJ1aWxkZXIoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uaWNlLXF1ZXJ5LWJ1aWxkZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICAgICAgICAgIDwvbWF0LWNhcmQ+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0ubmFtZSA9PT0gJ2ZpbHRlcnMnICYmIGZpbHRlcnNcIj5cbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJpdGVtLmNsYXNzZXNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWx0ZXJzXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0YWJsZUxheW91dCBsZXQtaXRlbT1cIml0ZW1cIj5cbiAgICA8ZGl2IFtuZ0NsYXNzXT1cIml0ZW0uY2xhc3Nlc1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgW25pY2VMb2FkaW5nT3ZlcmxheV09XCJsb2FkaW5nJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvbnRlbnQtY2FyZCBiYXNlLWxpc3QgZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW5cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bWF0LXRhYmxlXG4gICAgICAgICAgICAgICAgICAgIChtYXRTb3J0Q2hhbmdlKT1cIm9uVXBkYXRlU29ydCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwiZGF0YSRcIlxuICAgICAgICAgICAgICAgICAgICBbbWF0U29ydEFjdGl2ZV09XCIoc29ydENvbHVtbiQgfCBhc3luYykgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICBbbWF0U29ydERpcmVjdGlvbl09XCIoc29ydERpcmVjdGlvbiQgfCBhc3luYykgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgZmxleC1hdXRvXCJcbiAgICAgICAgICAgICAgICAgICAgbWF0U29ydFxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiY29sdW1uTmFtZXM7IHN0aWNreTogdHJ1ZVwiPjwvbWF0LWhlYWRlci1yb3c+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uc1wiIFttYXRDb2x1bW5EZWZdPVwiY29sdW1uLmlkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4uc29ydGFibGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGU7IGNvbnRleHQ6IHsgY29sdW1uOiBjb2x1bW4uaWQsIGhlYWRlcjogdHJ1ZSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1oZWFkZXItY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29sdW1uLnNvcnRhYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGU7IGNvbnRleHQ6IHsgY29sdW1uOiBjb2x1bW4uaWQsIGhlYWRlcjogdHJ1ZSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1oZWFkZXItY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZTsgY29udGV4dDogeyBjb2x1bW46IGNvbHVtbi5pZCwgZGF0YTogdHJ1ZSwgaXRlbTogaXRlbSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2VsbD5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNhYmxlUm91dGluZzsgZWxzZSB3aXRoUm91dGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IGl0ZW07IGNvbHVtbnM6IGNvbHVtbk5hbWVzO1wiIGNsYXNzPVwiaXRlbVwiPjwvbWF0LXJvdz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjd2l0aFJvdXRpbmc+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtcm93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm1hdFJvd0RlZj1cImxldCBpdGVtOyBjb2x1bW5zOiBjb2x1bW5OYW1lcztcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJuYXZpZ2F0ZShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpdGVtIGNsaWNrYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0UmlwcGxlXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtcm93PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L21hdC10YWJsZT5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NhcmRzTGF5b3V0IGxldC1pdGVtPVwiaXRlbVwiPlxuICAgIDxkaXYgW25nQ2xhc3NdPVwiaXRlbS5jbGFzc2VzXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRhdGEgb2YgZGF0YSQgfCBhc3luY1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNhcmRzOyBjb250ZXh0OiB7IGl0ZW06IGRhdGEgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY3VzdG9tTGF5b3V0IGxldC1pdGVtPVwiaXRlbVwiPlxuICAgIDxkaXYgW25nQ2xhc3NdPVwiaXRlbS5jbGFzc2VzXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21Db250ZW50OyBjb250ZXh0OiB7IGRhdGE6IGRhdGEkIHwgYXN5bmMgfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc3RhdGUtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uaWNlLWRhdGEtZmlsdGVyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvbXVsdGktc3RhdGUtbGlzdC9tdWx0aS1zdGF0ZS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtZGF0YS1maWx0ZXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9iYXNlLWxpc3QvYmFzZS1saXN0LnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUczRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBV3pFLE1BQU0sT0FBTywyQkFBNEIsU0FBUSxxQkFBcUI7SUFNbEUsWUFDOEMsa0JBQTJCLEVBQzNDLFVBQTBCLEVBQzFCLGNBQThCLEVBQ3hELEtBQThCLEVBQzlCLGNBQThCLEVBQzlCLFdBQTJCLEVBQzNCLE1BQWMsRUFDZCxZQUFxQyxFQUM3QixxQkFBZ0Q7UUFFeEQsS0FBSyxDQUNELGtCQUFrQixFQUNsQixVQUFVLEVBQ1YsRUFBRSxFQUNGLGNBQWMsRUFDZCxLQUFLLEVBQ0wscUJBQXFCLEVBQ3JCLGNBQWMsRUFDZCxXQUFXLEVBQ1gsTUFBTSxFQUNOLFlBQVksQ0FDZixDQUFDO1FBYk0sMEJBQXFCLEdBQXJCLHFCQUFxQixDQUEyQjtJQWM1RCxDQUFDO0lBNUJELElBQ1csS0FBSyxDQUFDLEtBQWE7UUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBMkJPLFdBQVcsQ0FBQyxLQUFhO1FBQzdCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QixDQUFDOzt3SEFsQ1EsMkJBQTJCLGtCQU9aLG9CQUFvQiw2QkFDaEMsZ0JBQWdCLGFBQ2hCLGdCQUFnQjs0R0FUbkIsMkJBQTJCLDRFQU56QjtRQUNQLHVCQUF1QjtRQUN2Qix5QkFBeUI7UUFDekIsdUJBQXVCO0tBQzFCLGlEQ25CTCx5OVpBc1NBOzJGRGpSYSwyQkFBMkI7a0JBVHZDLFNBQVM7K0JBQ0ksdUJBQXVCLGFBRXRCO3dCQUNQLHVCQUF1Qjt3QkFDdkIseUJBQXlCO3dCQUN6Qix1QkFBdUI7cUJBQzFCOzswQkFTSSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLG9CQUFvQjs7MEJBQ3ZDLE1BQU07MkJBQUMsZ0JBQWdCOzswQkFDdkIsTUFBTTsyQkFBQyxnQkFBZ0I7K09BUGpCLEtBQUs7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCwgT3B0aW9uYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTWF0Qm90dG9tU2hlZXQgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYm90dG9tLXNoZWV0XCI7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHsgTmljZU1lZGlhV2F0Y2hlclNlcnZpY2UgfSBmcm9tIFwiQHJlY3Vyc3l2ZS9uaWNlLXVpLWtpdC52MlwiO1xuaW1wb3J0IHsgTmljZUJhc2VMaXN0Q29tcG9uZW50IH0gZnJvbSBcIi4uL2Jhc2UtbGlzdC9iYXNlLWxpc3QuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBCQVNFX0xJU1RfTEFZT1VULCBFTkFCTEVfUVVFUllfQlVJTERFUiwgRVhQT1JUU19TRVRUSU5HUyB9IGZyb20gXCIuLi9iYXNlLWxpc3QvYmFzZS1saXN0LmNvbnN0YW50XCI7XG5pbXBvcnQgeyBFeHBvcnRTZXR0aW5ncyB9IGZyb20gXCIuLi9iYXNlLWxpc3QvbW9kZWxzL2V4cG9ydC5tb2RlbFwiO1xuaW1wb3J0IHsgQmFzZUxpc3RMYXlvdXQgfSBmcm9tIFwiLi4vYmFzZS1saXN0L21vZGVscy9sYXlvdXQubW9kZWxcIjtcbmltcG9ydCB7IE5pY2VNdWx0aVN0YXRlTGlzdFF1ZXJ5IH0gZnJvbSBcIi4vc3RvcmUvbXVsdGktc3RhdGUtbGlzdC5xdWVyeVwiO1xuaW1wb3J0IHsgTmljZU11bHRpU3RhdGVMaXN0U2VydmljZSB9IGZyb20gXCIuL3N0b3JlL211bHRpLXN0YXRlLWxpc3Quc2VydmljZVwiO1xuaW1wb3J0IHsgTmljZU11bHRpU3RhdGVMaXN0U3RvcmUgfSBmcm9tIFwiLi9zdG9yZS9tdWx0aS1zdGF0ZS1saXN0LnN0b3JlXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcIm5pY2UtbXVsdGktc3RhdGUtbGlzdFwiLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4uL2Jhc2UtbGlzdC9iYXNlLWxpc3QudGVtcGxhdGUuaHRtbFwiLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBOaWNlTXVsdGlTdGF0ZUxpc3RRdWVyeSxcbiAgICAgICAgTmljZU11bHRpU3RhdGVMaXN0U2VydmljZSxcbiAgICAgICAgTmljZU11bHRpU3RhdGVMaXN0U3RvcmVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE5pY2VNdWx0aVN0YXRlTGlzdENvbXBvbmVudCBleHRlbmRzIE5pY2VCYXNlTGlzdENvbXBvbmVudCB7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHN0YXRlKHN0YXRlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zd2l0Y2hTdGF0ZShzdGF0ZSk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRU5BQkxFX1FVRVJZX0JVSUxERVIpIGVuYWJsZVF1ZXJ5QnVpbGRlcjogYm9vbGVhbixcbiAgICAgICAgQEluamVjdChCQVNFX0xJU1RfTEFZT1VUKSBsaXN0TGF5b3V0OiBCYXNlTGlzdExheW91dCxcbiAgICAgICAgQEluamVjdChFWFBPUlRTX1NFVFRJTkdTKSBleHBvcnRzU2V0dGluZzogRXhwb3J0U2V0dGluZ3MsXG4gICAgICAgIHF1ZXJ5OiBOaWNlTXVsdGlTdGF0ZUxpc3RRdWVyeSxcbiAgICAgICAgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBib3R0b21TaGVldDogTWF0Qm90dG9tU2hlZXQsXG4gICAgICAgIHJvdXRlcjogUm91dGVyLFxuICAgICAgICBtZWRpYVdhdGNoZXI6IE5pY2VNZWRpYVdhdGNoZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG11bHRpU3RhdGVMaXN0U2VydmljZTogTmljZU11bHRpU3RhdGVMaXN0U2VydmljZSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoXG4gICAgICAgICAgICBlbmFibGVRdWVyeUJ1aWxkZXIsXG4gICAgICAgICAgICBsaXN0TGF5b3V0LFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBleHBvcnRzU2V0dGluZyxcbiAgICAgICAgICAgIHF1ZXJ5LFxuICAgICAgICAgICAgbXVsdGlTdGF0ZUxpc3RTZXJ2aWNlLFxuICAgICAgICAgICAgYWN0aXZhdGVkUm91dGUsXG4gICAgICAgICAgICBib3R0b21TaGVldCxcbiAgICAgICAgICAgIHJvdXRlcixcbiAgICAgICAgICAgIG1lZGlhV2F0Y2hlclxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3dpdGNoU3RhdGUoc3RhdGU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5tdWx0aVN0YXRlTGlzdFNlcnZpY2Uuc3dpdGNoU3RhdGUoc3RhdGUpO1xuICAgICAgICB0aGlzLnNldENvbHVtbihjb2x1bW5zKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibGlzdCBwYWdlLWxheW91dCBjYXJkZWQgZnVsbHdpZHRoIGlubmVyLXNjcm9sbFwiICpuZ0lmPVwibGF5b3V0ID09PSAncGFnZSc7IGVsc2UgY29udGVudFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjZW50ZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2NvbnRlbnQ+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxpc3RMYXlvdXQueGxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhpZGRlbiB4bDpibG9ja1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBhZ2VMYXlvdXQ7IGNvbnRleHQ6IHsgbGF5b3V0OiBsaXN0TGF5b3V0LnhsIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGlzdExheW91dC5sZ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGlkZGVuIGxnOmJsb2NrIHhsOmhpZGRlblwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBhZ2VMYXlvdXQ7IGNvbnRleHQ6IHsgbGF5b3V0OiBsaXN0TGF5b3V0LmxnIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGlzdExheW91dC5tZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGlkZGVuIG1kOmJsb2NrIGxnOmhpZGRlblwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBhZ2VMYXlvdXQ7IGNvbnRleHQ6IHsgbGF5b3V0OiBsaXN0TGF5b3V0Lm1kIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGlzdExheW91dC5zbVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGlkZGVuIHNtOmJsb2NrIG1kOmhpZGRlblwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBhZ2VMYXlvdXQ7IGNvbnRleHQ6IHsgbGF5b3V0OiBsaXN0TGF5b3V0LnNtIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGlzdExheW91dC54c1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmxvY2sgc206aGlkZGVuXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFnZUxheW91dDsgY29udGV4dDogeyBsYXlvdXQ6IGxpc3RMYXlvdXQueHMgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxkaXZcbiAgICAgICAgW2NsYXNzLmhpZGRlbl09XCIhIWxpc3RMYXlvdXQueHNcIlxuICAgICAgICBbY2xhc3MuYmxvY2tdPVwiIWxpc3RMYXlvdXQueHNcIlxuICAgICAgICBbY2xhc3Muc206aGlkZGVuXT1cIiEhbGlzdExheW91dC5zbVwiXG4gICAgICAgIFtjbGFzcy5zbTpibG9ja109XCIhbGlzdExheW91dC5zbVwiXG4gICAgICAgIFtjbGFzcy5tZDpoaWRkZW5dPVwiISFsaXN0TGF5b3V0Lm1kXCJcbiAgICAgICAgW2NsYXNzLm1kOmJsb2NrXT1cIiFsaXN0TGF5b3V0Lm1kXCJcbiAgICAgICAgW2NsYXNzLmxnOmhpZGRlbl09XCIhIWxpc3RMYXlvdXQubGdcIlxuICAgICAgICBbY2xhc3MubGc6YmxvY2tdPVwiIWxpc3RMYXlvdXQubGdcIlxuICAgICAgICBbY2xhc3MueGw6aGlkZGVuXT1cIiEhbGlzdExheW91dC54bFwiXG4gICAgICAgIFtjbGFzcy54bDpibG9ja109XCIhbGlzdExheW91dC54bFwiXG4gICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFnZUxheW91dDsgY29udGV4dDogeyBsYXlvdXQ6IGxpc3RMYXlvdXQuZGVmYXVsdCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3BhZ2VMYXlvdXQgbGV0LWxheW91dD1cImxheW91dFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsYXlvdXQ/Lmxlbmd0aDsgZWxzZSBpc09iamVjdFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudExheW91dDsgY29udGV4dDogeyBsYXlvdXQ6IHsgY2xhc3NlczogWydmbGV4IGZsZXgtY29sJ10sIGl0ZW1zOiBsYXlvdXQgfSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctdGVtcGxhdGUgI2lzT2JqZWN0PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudExheW91dDsgY29udGV4dDogeyBsYXlvdXQ6IGxheW91dCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY29udGVudExheW91dCBsZXQtbGF5b3V0PVwibGF5b3V0XCI+XG4gICAgPGRpdiBbbmdDbGFzc109XCJsYXlvdXQuY2xhc3Nlc1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGxheW91dC5pdGVtc1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0ubmFtZTsgZWxzZSBjaGlsZElzTGF5b3V0XCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxheW91dEl0ZW07IGNvbnRleHQ6IHsgaXRlbTogaXRlbSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2hpbGRJc0xheW91dD5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudExheW91dDsgY29udGV4dDogeyBsYXlvdXQ6IGl0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2xheW91dEl0ZW0gbGV0LWl0ZW09XCJpdGVtXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0ubmFtZSA9PT0gJ3RpdGxlJyAmJiB0aXRsZVwiPlxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cIml0ZW0uY2xhc3Nlc1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRpdGxlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0ubmFtZSA9PT0gJ3NlYXJjaCdcIj5cbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJpdGVtLmNsYXNzZXNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtd3JhcHBlciBteC1tZC0wXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaCBmbGV4IGZsZXgtYXV0byBqdXN0aWZ5LXN0YXJ0IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+c2VhcmNoPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IFtuZ01vZGVsXT1cInNlYXJjaFF1ZXJ5JCB8IGFzeW5jXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25VcGRhdGVTZWFyY2goJGV2ZW50KVwiIFtwbGFjZWhvbGRlcl09XCInZ2VuZXJhbC5zZWFyY2gnIHwgdHJhbnNsYXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVuYWJsZVF1ZXJ5QnVpbGRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiEoc2hvd1F1ZXJ5QnVpbGRlciQgfCBhc3luYykgJiYgIShydWxlc0NvdW50JCB8IGFzeW5jKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWNlUXVlcnlCdWlsZGVyVHJpZ2dlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcXVlcnlCdWlsZGVyRmlsdGVyc109XCJmaWx0ZXJDb25maWckIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcXVlcnlCdWlsZGVyRmlsdGVyc0xvYWRpbmddPVwiKGZpbHRlckNvbmZpZ0xvYWRpbmckIHwgYXN5bmMpIHx8IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHF1ZXJ5QnVpbGRlckZpbHRlclNlbGVjdGVkKT1cIm9uUXVlcnlCdWlsZGVyRmlsdGVyU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIidnZW5lcmFsLnF1ZXJ5X2J1aWxkZXIuc2hvd19hZHZhbmNlZF9zZWFyY2gnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlXT1cInJ1bGVzQ291bnQkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VIaWRkZW5dPVwiIShydWxlc0NvdW50JCB8IGFzeW5jKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdEJhZGdlQ29sb3I9XCJhY2NlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyX2xpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiEoc2hvd1F1ZXJ5QnVpbGRlciQgfCBhc3luYykgJiYgKHJ1bGVzQ291bnQkIHwgYXN5bmMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpbHRlckNvbmZpZ0xvYWRpbmckIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tUb2dnbGVTaG93UXVlcnlCdWlsZGVyKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCInZ2VuZXJhbC5xdWVyeV9idWlsZGVyLnNob3dfYWR2YW5jZWRfc2VhcmNoJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZV09XCJydWxlc0NvdW50JCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlSGlkZGVuXT1cIiEocnVsZXNDb3VudCQgfCBhc3luYylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRCYWRnZUNvbG9yPVwiYWNjZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcl9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd1F1ZXJ5QnVpbGRlciQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrVG9nZ2xlU2hvd1F1ZXJ5QnVpbGRlcigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCInZ2VuZXJhbC5xdWVyeV9idWlsZGVyLmNsb3NlX2FkdmFuY2VkX3NlYXJjaCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0ubmFtZSA9PT0gJ3ByZWZpeEJ1dHRvbnMnICYmIHByZWZpeEJ1dHRvbnNcIj5cbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJpdGVtLmNsYXNzZXNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcmVmaXhCdXR0b25zXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0ubmFtZSA9PT0gJ3N1ZmZpeEJ1dHRvbnMnICYmIHN1ZmZpeEJ1dHRvbnNcIj5cbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJpdGVtLmNsYXNzZXNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdWZmaXhCdXR0b25zXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0ubmFtZSA9PT0gJ2V4cG9ydEJ1dHRvbnMnICYmIGNhbkV4cG9ydFwiPlxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cIml0ZW0uY2xhc3Nlc1wiIFtjbGFzcy5tci0yXT1cIiEhc3VmZml4QnV0dG9uc1wiIFtjbGFzcy5tbC0yXT1cIiEhcHJlZml4QnV0dG9uc1wiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tQcmludCgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmckIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCInZ2VuZXJhbC5wcmludCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxpc3QtYnV0dG9uIG1yLTJcIlxuICAgICAgICAgICAgICAgICAgICBtYXQtbWluaS1mYWJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+cHJpbnQ8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrRXhwb3J0KClcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIidnZW5lcmFsLmV4cG9ydCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxpc3QtYnV0dG9uIG1yLTJcIlxuICAgICAgICAgICAgICAgICAgICBtYXQtbWluaS1mYWJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvdWRfZG93bmxvYWQ8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0ubmFtZSA9PT0gJ2NvbnRlbnQnXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsYXlvdXRDb250ZW50ID09PSAndGFibGUnICYmIHRhYmxlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVMYXlvdXQ7IGNvbnRleHQ6IHsgaXRlbTogaXRlbSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGF5b3V0Q29udGVudCA9PT0gJ2NhcmRzJyAmJiBjYXJkc1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNhcmRzTGF5b3V0OyBjb250ZXh0OiB7IGl0ZW06IGl0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxheW91dENvbnRlbnQgPT09ICdjdXN0b20nICYmIGN1c3RvbUNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21MYXlvdXQ7IGNvbnRleHQ6IHsgaXRlbTogaXRlbSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0ubmFtZSA9PT0gJ3BhZ2luYXRpb24nICYmIGxheW91dENvbnRlbnQgIT09ICdjdXN0b20nXCI+XG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiaXRlbS5jbGFzc2VzXCI+XG4gICAgICAgICAgICA8bWF0LXBhZ2luYXRvclxuICAgICAgICAgICAgICAgIChwYWdlKT1cIm9uVXBkYXRlUGFnZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbbGVuZ3RoXT1cInJlY29yZHNGaWx0ZXJlZCQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgW3BhZ2VJbmRleF09XCJpbmRleCQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgW3BhZ2VTaXplT3B0aW9uc109XCJkZWZhdWx0UGFnZVNpemVPcHRpb25zXCJcbiAgICAgICAgICAgICAgICBbcGFnZVNpemVdPVwibGVuZ3RoJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICBbc2hvd0ZpcnN0TGFzdEJ1dHRvbnNdPVwidHJ1ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L21hdC1wYWdpbmF0b3I+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0ubmFtZSA9PT0gJ3F1ZXJ5QnVpbGRlcicgJiYgZW5hYmxlUXVlcnlCdWlsZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sXCIgKm5nSWY9XCJzaG93UXVlcnlCdWlsZGVyJCB8IGFzeW5jXCI+XG4gICAgICAgICAgICA8bWF0LWNhcmQgY2xhc3M9XCJteS00XCIgW25pY2VMb2FkaW5nT3ZlcmxheV09XCJmaWx0ZXJDb25maWdMb2FkaW5nJCB8IGFzeW5jXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuaWNlLXF1ZXJ5LWJ1aWxkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmlsdGVyQ29uZmlnc109XCJmaWx0ZXJDb25maWckIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInJ1bGVzJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblVwZGF0ZVJ1bGVzKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbG9zZSk9XCJjbGlja1RvZ2dsZVNob3dRdWVyeUJ1aWxkZXIoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uaWNlLXF1ZXJ5LWJ1aWxkZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICAgICAgICAgIDwvbWF0LWNhcmQ+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0ubmFtZSA9PT0gJ2ZpbHRlcnMnICYmIGZpbHRlcnNcIj5cbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJpdGVtLmNsYXNzZXNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWx0ZXJzXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0YWJsZUxheW91dCBsZXQtaXRlbT1cIml0ZW1cIj5cbiAgICA8ZGl2IFtuZ0NsYXNzXT1cIml0ZW0uY2xhc3Nlc1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgW25pY2VMb2FkaW5nT3ZlcmxheV09XCJsb2FkaW5nJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvbnRlbnQtY2FyZCBiYXNlLWxpc3QgZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW5cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bWF0LXRhYmxlXG4gICAgICAgICAgICAgICAgICAgIChtYXRTb3J0Q2hhbmdlKT1cIm9uVXBkYXRlU29ydCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwiZGF0YSRcIlxuICAgICAgICAgICAgICAgICAgICBbbWF0U29ydEFjdGl2ZV09XCIoc29ydENvbHVtbiQgfCBhc3luYykgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICBbbWF0U29ydERpcmVjdGlvbl09XCIoc29ydERpcmVjdGlvbiQgfCBhc3luYykgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgZmxleC1hdXRvXCJcbiAgICAgICAgICAgICAgICAgICAgbWF0U29ydFxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiY29sdW1uTmFtZXM7IHN0aWNreTogdHJ1ZVwiPjwvbWF0LWhlYWRlci1yb3c+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uc1wiIFttYXRDb2x1bW5EZWZdPVwiY29sdW1uLmlkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4uc29ydGFibGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGU7IGNvbnRleHQ6IHsgY29sdW1uOiBjb2x1bW4uaWQsIGhlYWRlcjogdHJ1ZSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1oZWFkZXItY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29sdW1uLnNvcnRhYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGU7IGNvbnRleHQ6IHsgY29sdW1uOiBjb2x1bW4uaWQsIGhlYWRlcjogdHJ1ZSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1oZWFkZXItY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZTsgY29udGV4dDogeyBjb2x1bW46IGNvbHVtbi5pZCwgZGF0YTogdHJ1ZSwgaXRlbTogaXRlbSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2VsbD5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNhYmxlUm91dGluZzsgZWxzZSB3aXRoUm91dGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IGl0ZW07IGNvbHVtbnM6IGNvbHVtbk5hbWVzO1wiIGNsYXNzPVwiaXRlbVwiPjwvbWF0LXJvdz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjd2l0aFJvdXRpbmc+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtcm93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm1hdFJvd0RlZj1cImxldCBpdGVtOyBjb2x1bW5zOiBjb2x1bW5OYW1lcztcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJuYXZpZ2F0ZShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpdGVtIGNsaWNrYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0UmlwcGxlXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtcm93PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L21hdC10YWJsZT5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NhcmRzTGF5b3V0IGxldC1pdGVtPVwiaXRlbVwiPlxuICAgIDxkaXYgW25nQ2xhc3NdPVwiaXRlbS5jbGFzc2VzXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRhdGEgb2YgZGF0YSQgfCBhc3luY1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNhcmRzOyBjb250ZXh0OiB7IGl0ZW06IGRhdGEgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY3VzdG9tTGF5b3V0IGxldC1pdGVtPVwiaXRlbVwiPlxuICAgIDxkaXYgW25nQ2xhc3NdPVwiaXRlbS5jbGFzc2VzXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21Db250ZW50OyBjb250ZXh0OiB7IGRhdGE6IGRhdGEkIHwgYXN5bmMgfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -27,10 +27,10 @@ export class FilterSelectionComponent {
27
27
  }
28
28
  }
29
29
  FilterSelectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: FilterSelectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
30
- FilterSelectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: FilterSelectionComponent, selector: "nice-filter-selection", inputs: { filterConfigs: "filterConfigs", loading: "loading" }, outputs: { filterSelected: "filterSelected" }, ngImport: i0, template: "<mat-card class=\"flex flex-row flex-wrap filter-selection-container\" [niceLoadingOverlay]=\"loading\">\n <mat-list class=\"flex flex-col flex-full\" [class.double-groups]=\"filterGroups.length > 1\" *ngFor=\"let group of filterGroups\">\n <mat-list-item>\n <i mat-list-icon class=\"text-accent fal\" [ngClass]=\"group[0].key | filterGroupIcon\"></i>\n <strong mat-line>{{ group[0].name }}</strong>\n </mat-list-item>\n <mat-list-item (click)=\"selectFilter(filter)\" mat-ripple class=\"filter\" *ngFor=\"let filter of group[1]\">\n {{ filter?.name }}\n </mat-list-item>\n </mat-list>\n</mat-card>\n", styles: ["nice-filter-selection .filter-selection-container{min-width:150px;min-height:150px;max-width:600px;padding:8px}nice-filter-selection .filter-selection-container .mat-list.double-groups{max-width:50%}nice-filter-selection .filter-selection-container .mat-list:not(.double-groups){max-width:100%}nice-filter-selection .mat-list-item{height:auto!important;min-height:32px!important;padding:16px}nice-filter-selection .mat-list-item strong{font-weight:700!important}nice-filter-selection .mat-list-item.filter{padding:8px 48px;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:14px!important}@media screen and (max-width: 959px){nice-filter-selection .mat-list-item.filter{padding:8px 24px}}\n"], components: [{ type: i1.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i2.MatList, selector: "mat-list, mat-action-list", inputs: ["disableRipple", "disabled"], exportAs: ["matList"] }, { type: i2.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }], directives: [{ type: i3.NiceLoadingDirective, selector: "[niceLoadingOverlay]", inputs: ["niceLoadingOverlay"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.MatListIconCssMatStyler, selector: "[mat-list-icon], [matListIcon]" }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.MatLine, selector: "[mat-line], [matLine]" }, { type: i5.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }], pipes: { "filterGroupIcon": i6.FilterGroupIconPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
30
+ FilterSelectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: FilterSelectionComponent, selector: "nice-filter-selection", inputs: { filterConfigs: "filterConfigs", loading: "loading" }, outputs: { filterSelected: "filterSelected" }, ngImport: i0, template: "<mat-card class=\"flex flex-row flex-wrap filter-selection-container\" [niceLoadingOverlay]=\"loading\">\n <mat-list class=\"flex flex-col flex-full\" [class.double-groups]=\"filterGroups.length > 1\" *ngFor=\"let group of filterGroups\">\n <mat-list-item>\n <i mat-list-icon class=\"text-accent fal\" [ngClass]=\"group[0].key | filterGroupIcon\"></i>\n <strong mat-line>{{ group[0].name }}</strong>\n </mat-list-item>\n <mat-list-item (click)=\"selectFilter(filter)\" mat-ripple class=\"filter\" *ngFor=\"let filter of group[1]\">\n {{ filter?.name }}\n </mat-list-item>\n </mat-list>\n</mat-card>\n", components: [{ type: i1.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i2.MatList, selector: "mat-list, mat-action-list", inputs: ["disableRipple", "disabled"], exportAs: ["matList"] }, { type: i2.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }], directives: [{ type: i3.NiceLoadingDirective, selector: "[niceLoadingOverlay]", inputs: ["niceLoadingOverlay"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.MatListIconCssMatStyler, selector: "[mat-list-icon], [matListIcon]" }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.MatLine, selector: "[mat-line], [matLine]" }, { type: i5.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }], pipes: { "filterGroupIcon": i6.FilterGroupIconPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
31
31
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: FilterSelectionComponent, decorators: [{
32
32
  type: Component,
33
- args: [{ selector: "nice-filter-selection", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-card class=\"flex flex-row flex-wrap filter-selection-container\" [niceLoadingOverlay]=\"loading\">\n <mat-list class=\"flex flex-col flex-full\" [class.double-groups]=\"filterGroups.length > 1\" *ngFor=\"let group of filterGroups\">\n <mat-list-item>\n <i mat-list-icon class=\"text-accent fal\" [ngClass]=\"group[0].key | filterGroupIcon\"></i>\n <strong mat-line>{{ group[0].name }}</strong>\n </mat-list-item>\n <mat-list-item (click)=\"selectFilter(filter)\" mat-ripple class=\"filter\" *ngFor=\"let filter of group[1]\">\n {{ filter?.name }}\n </mat-list-item>\n </mat-list>\n</mat-card>\n", styles: ["nice-filter-selection .filter-selection-container{min-width:150px;min-height:150px;max-width:600px;padding:8px}nice-filter-selection .filter-selection-container .mat-list.double-groups{max-width:50%}nice-filter-selection .filter-selection-container .mat-list:not(.double-groups){max-width:100%}nice-filter-selection .mat-list-item{height:auto!important;min-height:32px!important;padding:16px}nice-filter-selection .mat-list-item strong{font-weight:700!important}nice-filter-selection .mat-list-item.filter{padding:8px 48px;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:14px!important}@media screen and (max-width: 959px){nice-filter-selection .mat-list-item.filter{padding:8px 24px}}\n"] }]
33
+ args: [{ selector: "nice-filter-selection", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-card class=\"flex flex-row flex-wrap filter-selection-container\" [niceLoadingOverlay]=\"loading\">\n <mat-list class=\"flex flex-col flex-full\" [class.double-groups]=\"filterGroups.length > 1\" *ngFor=\"let group of filterGroups\">\n <mat-list-item>\n <i mat-list-icon class=\"text-accent fal\" [ngClass]=\"group[0].key | filterGroupIcon\"></i>\n <strong mat-line>{{ group[0].name }}</strong>\n </mat-list-item>\n <mat-list-item (click)=\"selectFilter(filter)\" mat-ripple class=\"filter\" *ngFor=\"let filter of group[1]\">\n {{ filter?.name }}\n </mat-list-item>\n </mat-list>\n</mat-card>\n" }]
34
34
  }], propDecorators: { filterConfigs: [{
35
35
  type: Input
36
36
  }], loading: [{
@@ -38,4 +38,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
38
38
  }], filterSelected: [{
39
39
  type: Output
40
40
  }] } });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXNlbGVjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uaWNlLWRhdGEtZmlsdGVyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvcXVlcnktYnVpbGRlci9maWx0ZXItc2VsZWN0aW9uL2ZpbHRlci1zZWxlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmljZS1kYXRhLWZpbHRlci1raXQvc3JjL2xpYi9jb21wb25lbnRzL3F1ZXJ5LWJ1aWxkZXIvZmlsdGVyLXNlbGVjdGlvbi9maWx0ZXItc2VsZWN0aW9uLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7O0FBVXZELE1BQU0sT0FBTyx3QkFBd0I7SUFQckM7UUFlVyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUE0QixDQUFDO0tBb0J4RTtJQWxCRyxJQUFXLFlBQVk7UUFDbkIsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUUzRixNQUFNLE1BQU0sR0FBNkQsRUFBRSxDQUFDO1FBQzVFLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ1IsU0FBUzthQUNaO1lBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxLQUFLLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDcEY7UUFFRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRU0sWUFBWSxDQUFDLHdCQUFrRDtRQUNsRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7O3FIQTNCUSx3QkFBd0I7eUdBQXhCLHdCQUF3Qiw0S0NYckMsNnBCQVdBOzJGREFhLHdCQUF3QjtrQkFQcEMsU0FBUzsrQkFDSSx1QkFBdUIsaUJBR2xCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07OEJBSXhDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBSUMsT0FBTztzQkFEYixLQUFLO2dCQUlDLGNBQWM7c0JBRHBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEFycmF5VXRpbHMgfSBmcm9tIFwiQHJlY3Vyc3l2ZS9uaWNlLXVpLWtpdC52MlwiO1xuaW1wb3J0IHsgRmlsdGVyQ29uZmlndXJhdGlvbk1vZGVsLCBGaWx0ZXJHcm91cENvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2ZpbHRlci5tb2RlbFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJuaWNlLWZpbHRlci1zZWxlY3Rpb25cIixcbiAgICB0ZW1wbGF0ZVVybDogXCJmaWx0ZXItc2VsZWN0aW9uLnRlbXBsYXRlLmh0bWxcIixcbiAgICBzdHlsZVVybHM6IFtcIi4vZmlsdGVyLXNlbGVjdGlvbi5zdHlsZS5zY3NzXCJdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRmlsdGVyU2VsZWN0aW9uQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmaWx0ZXJDb25maWdzOiBGaWx0ZXJDb25maWd1cmF0aW9uTW9kZWxbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGxvYWRpbmc6IGJvb2xlYW47XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgZmlsdGVyU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbHRlckNvbmZpZ3VyYXRpb25Nb2RlbD4oKTtcblxuICAgIHB1YmxpYyBnZXQgZmlsdGVyR3JvdXBzKCk6IFtGaWx0ZXJHcm91cENvbmZpZ3VyYXRpb24sIEZpbHRlckNvbmZpZ3VyYXRpb25Nb2RlbFtdXVtdIHtcbiAgICAgICAgY29uc3QgZ3JvdXBzID0gQXJyYXlVdGlscy51bmlxdWVPYmplY3RzKHRoaXMuZmlsdGVyQ29uZmlncy5tYXAoeCA9PiB4Lmdyb3VwKSwgeCA9PiB4Py5rZXkpO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdDogW0ZpbHRlckdyb3VwQ29uZmlndXJhdGlvbiwgRmlsdGVyQ29uZmlndXJhdGlvbk1vZGVsW11dW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBncm91cCBvZiBncm91cHMpIHtcbiAgICAgICAgICAgIGlmICghZ3JvdXApIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdWx0LnB1c2goW2dyb3VwLCB0aGlzLmZpbHRlckNvbmZpZ3MuZmlsdGVyKHggPT4geC5ncm91cD8ua2V5ID09PSBncm91cC5rZXkpXSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0LnNvcnQoKFssIGFdLCBbLCBiXSkgPT4gYi5sZW5ndGggLSBhLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbGVjdEZpbHRlcihmaWx0ZXJDb25maWd1cmF0aW9uTW9kZWw6IEZpbHRlckNvbmZpZ3VyYXRpb25Nb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlclNlbGVjdGVkLmVtaXQoZmlsdGVyQ29uZmlndXJhdGlvbk1vZGVsKTtcbiAgICB9XG59XG4iLCI8bWF0LWNhcmQgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGZsZXgtd3JhcCBmaWx0ZXItc2VsZWN0aW9uLWNvbnRhaW5lclwiIFtuaWNlTG9hZGluZ092ZXJsYXldPVwibG9hZGluZ1wiPlxuICAgIDxtYXQtbGlzdCBjbGFzcz1cImZsZXggZmxleC1jb2wgZmxleC1mdWxsXCIgW2NsYXNzLmRvdWJsZS1ncm91cHNdPVwiZmlsdGVyR3JvdXBzLmxlbmd0aCA+IDFcIiAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgZmlsdGVyR3JvdXBzXCI+XG4gICAgICAgIDxtYXQtbGlzdC1pdGVtPlxuICAgICAgICAgICAgPGkgbWF0LWxpc3QtaWNvbiBjbGFzcz1cInRleHQtYWNjZW50IGZhbFwiIFtuZ0NsYXNzXT1cImdyb3VwWzBdLmtleSB8IGZpbHRlckdyb3VwSWNvblwiPjwvaT5cbiAgICAgICAgICAgIDxzdHJvbmcgbWF0LWxpbmU+e3sgZ3JvdXBbMF0ubmFtZSB9fTwvc3Ryb25nPlxuICAgICAgICA8L21hdC1saXN0LWl0ZW0+XG4gICAgICAgIDxtYXQtbGlzdC1pdGVtIChjbGljayk9XCJzZWxlY3RGaWx0ZXIoZmlsdGVyKVwiIG1hdC1yaXBwbGUgY2xhc3M9XCJmaWx0ZXJcIiAqbmdGb3I9XCJsZXQgZmlsdGVyIG9mIGdyb3VwWzFdXCI+XG4gICAgICAgICAgICB7eyBmaWx0ZXI/Lm5hbWUgfX1cbiAgICAgICAgPC9tYXQtbGlzdC1pdGVtPlxuICAgIDwvbWF0LWxpc3Q+XG48L21hdC1jYXJkPlxuIl19
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXNlbGVjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uaWNlLWRhdGEtZmlsdGVyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvcXVlcnktYnVpbGRlci9maWx0ZXItc2VsZWN0aW9uL2ZpbHRlci1zZWxlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmljZS1kYXRhLWZpbHRlci1raXQvc3JjL2xpYi9jb21wb25lbnRzL3F1ZXJ5LWJ1aWxkZXIvZmlsdGVyLXNlbGVjdGlvbi9maWx0ZXItc2VsZWN0aW9uLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7O0FBU3ZELE1BQU0sT0FBTyx3QkFBd0I7SUFOckM7UUFjVyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUE0QixDQUFDO0tBb0J4RTtJQWxCRyxJQUFXLFlBQVk7UUFDbkIsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUUzRixNQUFNLE1BQU0sR0FBNkQsRUFBRSxDQUFDO1FBQzVFLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ1IsU0FBUzthQUNaO1lBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxLQUFLLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDcEY7UUFFRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRU0sWUFBWSxDQUFDLHdCQUFrRDtRQUNsRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7O3FIQTNCUSx3QkFBd0I7eUdBQXhCLHdCQUF3Qiw0S0NWckMsNnBCQVdBOzJGRERhLHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDSSx1QkFBdUIsaUJBRWxCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07OEJBSXhDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBSUMsT0FBTztzQkFEYixLQUFLO2dCQUlDLGNBQWM7c0JBRHBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEFycmF5VXRpbHMgfSBmcm9tIFwiQHJlY3Vyc3l2ZS9uaWNlLXVpLWtpdC52MlwiO1xuaW1wb3J0IHsgRmlsdGVyQ29uZmlndXJhdGlvbk1vZGVsLCBGaWx0ZXJHcm91cENvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2ZpbHRlci5tb2RlbFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJuaWNlLWZpbHRlci1zZWxlY3Rpb25cIixcbiAgICB0ZW1wbGF0ZVVybDogXCJmaWx0ZXItc2VsZWN0aW9uLnRlbXBsYXRlLmh0bWxcIixcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEZpbHRlclNlbGVjdGlvbkNvbXBvbmVudCB7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZmlsdGVyQ29uZmlnczogRmlsdGVyQ29uZmlndXJhdGlvbk1vZGVsW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsb2FkaW5nOiBib29sZWFuO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGZpbHRlclNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxGaWx0ZXJDb25maWd1cmF0aW9uTW9kZWw+KCk7XG5cbiAgICBwdWJsaWMgZ2V0IGZpbHRlckdyb3VwcygpOiBbRmlsdGVyR3JvdXBDb25maWd1cmF0aW9uLCBGaWx0ZXJDb25maWd1cmF0aW9uTW9kZWxbXV1bXSB7XG4gICAgICAgIGNvbnN0IGdyb3VwcyA9IEFycmF5VXRpbHMudW5pcXVlT2JqZWN0cyh0aGlzLmZpbHRlckNvbmZpZ3MubWFwKHggPT4geC5ncm91cCksIHggPT4geD8ua2V5KTtcblxuICAgICAgICBjb25zdCByZXN1bHQ6IFtGaWx0ZXJHcm91cENvbmZpZ3VyYXRpb24sIEZpbHRlckNvbmZpZ3VyYXRpb25Nb2RlbFtdXVtdID0gW107XG4gICAgICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgZ3JvdXBzKSB7XG4gICAgICAgICAgICBpZiAoIWdyb3VwKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKFtncm91cCwgdGhpcy5maWx0ZXJDb25maWdzLmZpbHRlcih4ID0+IHguZ3JvdXA/LmtleSA9PT0gZ3JvdXAua2V5KV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdC5zb3J0KChbLCBhXSwgWywgYl0pID0+IGIubGVuZ3RoIC0gYS5sZW5ndGgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZWxlY3RGaWx0ZXIoZmlsdGVyQ29uZmlndXJhdGlvbk1vZGVsOiBGaWx0ZXJDb25maWd1cmF0aW9uTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXJTZWxlY3RlZC5lbWl0KGZpbHRlckNvbmZpZ3VyYXRpb25Nb2RlbCk7XG4gICAgfVxufVxuIiwiPG1hdC1jYXJkIGNsYXNzPVwiZmxleCBmbGV4LXJvdyBmbGV4LXdyYXAgZmlsdGVyLXNlbGVjdGlvbi1jb250YWluZXJcIiBbbmljZUxvYWRpbmdPdmVybGF5XT1cImxvYWRpbmdcIj5cbiAgICA8bWF0LWxpc3QgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtZnVsbFwiIFtjbGFzcy5kb3VibGUtZ3JvdXBzXT1cImZpbHRlckdyb3Vwcy5sZW5ndGggPiAxXCIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGZpbHRlckdyb3Vwc1wiPlxuICAgICAgICA8bWF0LWxpc3QtaXRlbT5cbiAgICAgICAgICAgIDxpIG1hdC1saXN0LWljb24gY2xhc3M9XCJ0ZXh0LWFjY2VudCBmYWxcIiBbbmdDbGFzc109XCJncm91cFswXS5rZXkgfCBmaWx0ZXJHcm91cEljb25cIj48L2k+XG4gICAgICAgICAgICA8c3Ryb25nIG1hdC1saW5lPnt7IGdyb3VwWzBdLm5hbWUgfX08L3N0cm9uZz5cbiAgICAgICAgPC9tYXQtbGlzdC1pdGVtPlxuICAgICAgICA8bWF0LWxpc3QtaXRlbSAoY2xpY2spPVwic2VsZWN0RmlsdGVyKGZpbHRlcilcIiBtYXQtcmlwcGxlIGNsYXNzPVwiZmlsdGVyXCIgKm5nRm9yPVwibGV0IGZpbHRlciBvZiBncm91cFsxXVwiPlxuICAgICAgICAgICAge3sgZmlsdGVyPy5uYW1lIH19XG4gICAgICAgIDwvbWF0LWxpc3QtaXRlbT5cbiAgICA8L21hdC1saXN0PlxuPC9tYXQtY2FyZD5cbiJdfQ==