@abp/ng.theme.shared 7.0.0-rc.4 → 7.0.0-rc.6

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 (65) hide show
  1. package/esm2020/extensions/lib/adapters/date-time.adapter.mjs +3 -3
  2. package/esm2020/extensions/lib/adapters/date.adapter.mjs +3 -3
  3. package/esm2020/extensions/lib/adapters/time.adapter.mjs +3 -3
  4. package/esm2020/extensions/lib/components/abstract-actions/abstract-actions.component.mjs +3 -3
  5. package/esm2020/extensions/lib/components/date-time-picker/date-time-picker.component.mjs +3 -3
  6. package/esm2020/extensions/lib/components/extensible-form/extensible-form-prop.component.mjs +14 -8
  7. package/esm2020/extensions/lib/components/extensible-form/extensible-form.component.mjs +3 -3
  8. package/esm2020/extensions/lib/components/extensible-table/extensible-table.component.mjs +3 -3
  9. package/esm2020/extensions/lib/components/grid-actions/grid-actions.component.mjs +3 -3
  10. package/esm2020/extensions/lib/components/page-toolbar/page-toolbar.component.mjs +3 -3
  11. package/esm2020/extensions/lib/directives/disabled.directive.mjs +3 -3
  12. package/esm2020/extensions/lib/directives/prop-data.directive.mjs +3 -3
  13. package/esm2020/extensions/lib/enums/components.mjs +2 -0
  14. package/esm2020/extensions/lib/enums/props.enum.mjs +1 -1
  15. package/esm2020/extensions/lib/pipes/create-injector.pipe.mjs +3 -3
  16. package/esm2020/extensions/lib/services/extensions.service.mjs +3 -3
  17. package/esm2020/extensions/lib/ui-extensions.module.mjs +8 -8
  18. package/esm2020/extensions/public-api.mjs +2 -1
  19. package/esm2020/lib/components/breadcrumb/breadcrumb.component.mjs +3 -3
  20. package/esm2020/lib/components/breadcrumb-items/breadcrumb-items.component.mjs +3 -3
  21. package/esm2020/lib/components/button/button.component.mjs +3 -3
  22. package/esm2020/lib/components/confirmation/confirmation.component.mjs +3 -3
  23. package/esm2020/lib/components/http-error-wrapper/http-error-wrapper.component.mjs +3 -3
  24. package/esm2020/lib/components/index.mjs +2 -1
  25. package/esm2020/lib/components/loader-bar/loader-bar.component.mjs +3 -3
  26. package/esm2020/lib/components/loading/loading.component.mjs +3 -3
  27. package/esm2020/lib/components/modal/modal-close.directive.mjs +3 -3
  28. package/esm2020/lib/components/modal/modal-ref.service.mjs +3 -3
  29. package/esm2020/lib/components/modal/modal.component.mjs +3 -3
  30. package/esm2020/lib/components/password/password.component.mjs +38 -0
  31. package/esm2020/lib/components/toast/toast.component.mjs +3 -3
  32. package/esm2020/lib/components/toast-container/toast-container.component.mjs +3 -3
  33. package/esm2020/lib/directives/ellipsis.directive.mjs +7 -7
  34. package/esm2020/lib/directives/loading.directive.mjs +3 -3
  35. package/esm2020/lib/directives/ngx-datatable-default.directive.mjs +3 -3
  36. package/esm2020/lib/directives/ngx-datatable-list.directive.mjs +3 -3
  37. package/esm2020/lib/handlers/document-dir.handler.mjs +3 -3
  38. package/esm2020/lib/handlers/error.handler.mjs +6 -5
  39. package/esm2020/lib/services/confirmation.service.mjs +3 -3
  40. package/esm2020/lib/services/nav-items.service.mjs +3 -3
  41. package/esm2020/lib/services/page-alert.service.mjs +3 -3
  42. package/esm2020/lib/services/toaster.service.mjs +3 -3
  43. package/esm2020/lib/services/user-menu.service.mjs +3 -3
  44. package/esm2020/lib/theme-shared.module.mjs +17 -13
  45. package/esm2020/lib/utils/date-parser-formatter.mjs +3 -3
  46. package/esm2020/testing/lib/theme-shared-testing.module.mjs +4 -4
  47. package/extensions/lib/components/extensible-form/extensible-form-prop.component.d.ts +2 -0
  48. package/extensions/lib/enums/components.d.ts +3 -0
  49. package/extensions/lib/enums/props.enum.d.ts +1 -0
  50. package/extensions/public-api.d.ts +1 -0
  51. package/fesm2015/abp-ng.theme.shared-extensions.mjs +58 -53
  52. package/fesm2015/abp-ng.theme.shared-extensions.mjs.map +1 -1
  53. package/fesm2015/abp-ng.theme.shared-testing.mjs +4 -4
  54. package/fesm2015/abp-ng.theme.shared.mjs +130 -93
  55. package/fesm2015/abp-ng.theme.shared.mjs.map +1 -1
  56. package/fesm2020/abp-ng.theme.shared-extensions.mjs +57 -52
  57. package/fesm2020/abp-ng.theme.shared-extensions.mjs.map +1 -1
  58. package/fesm2020/abp-ng.theme.shared-testing.mjs +4 -4
  59. package/fesm2020/abp-ng.theme.shared.mjs +130 -93
  60. package/fesm2020/abp-ng.theme.shared.mjs.map +1 -1
  61. package/lib/components/index.d.ts +1 -0
  62. package/lib/components/password/password.component.d.ts +12 -0
  63. package/lib/handlers/error.handler.d.ts +1 -0
  64. package/lib/theme-shared.module.d.ts +12 -11
  65. package/package.json +8 -5
@@ -36,9 +36,9 @@ export class DateTimeAdapter {
36
36
  return new Date(date).toISOString();
37
37
  }
38
38
  }
39
- DateTimeAdapter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: DateTimeAdapter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
40
- DateTimeAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: DateTimeAdapter });
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: DateTimeAdapter, decorators: [{
39
+ DateTimeAdapter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DateTimeAdapter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
40
+ DateTimeAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DateTimeAdapter });
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DateTimeAdapter, decorators: [{
42
42
  type: Injectable
43
43
  }] });
44
44
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLmFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1zaGFyZWQvZXh0ZW5zaW9ucy9zcmMvbGliL2FkYXB0ZXJzL2RhdGUtdGltZS5hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSTNDLE1BQU0sT0FBTyxlQUFlO0lBRzFCLFNBQVMsQ0FBQyxLQUFvQjtRQUM1QixJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXhCLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTdCLElBQUksS0FBSyxDQUFDLElBQXlCLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUVsRCxJQUFJLENBQUMsS0FBSyxHQUFHO1lBQ1gsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDeEIsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDO1lBQzFCLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ25CLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3JCLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3pCLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFO1NBQzFCLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUErQjtRQUNyQyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRXRCLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFFdkIsS0FBSyxHQUFHO1lBQ04sbUNBQW1DO1lBQ25DLElBQUksRUFBRSxHQUFHLENBQUMsY0FBYyxFQUFFO1lBQzFCLEtBQUssRUFBRSxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQztZQUN6QixHQUFHLEVBQUUsR0FBRyxDQUFDLE9BQU8sRUFBRTtZQUNsQixJQUFJLEVBQUUsQ0FBQztZQUNQLE1BQU0sRUFBRSxDQUFDO1lBQ1QsTUFBTSxFQUFFLENBQUM7WUFDVCxHQUFHLElBQUksQ0FBQyxLQUFLO1lBQ2IsR0FBRyxLQUFLO1NBQ1QsQ0FBQztRQUVGLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUNuQixLQUFLLENBQUMsSUFBSSxFQUNWLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUNmLEtBQUssQ0FBQyxHQUFHLEVBQ1QsS0FBSyxDQUFDLElBQUksRUFDVixLQUFLLENBQUMsTUFBTSxFQUNaLEtBQUssQ0FBQyxNQUFNLENBQ2IsQ0FBQztRQUVGLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdEMsQ0FBQzs7NEdBakRVLGVBQWU7Z0hBQWYsZUFBZTsyRkFBZixlQUFlO2tCQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ2JEYXRlU3RydWN0LCBOZ2JUaW1lU3RydWN0IH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRGF0ZVRpbWVBZGFwdGVyIHtcclxuICB2YWx1ZSE6IE5nYkRhdGVUaW1lU3RydWN0O1xyXG5cclxuICBmcm9tTW9kZWwodmFsdWU6IHN0cmluZyB8IERhdGUpOiBOZ2JEYXRlVGltZVN0cnVjdCB8IG51bGwge1xyXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHZhbHVlKTtcclxuXHJcbiAgICBpZiAoaXNOYU4oZGF0ZSBhcyB1bmtub3duIGFzIG51bWJlcikpIHJldHVybiBudWxsO1xyXG5cclxuICAgIHRoaXMudmFsdWUgPSB7XHJcbiAgICAgIHllYXI6IGRhdGUuZ2V0RnVsbFllYXIoKSxcclxuICAgICAgbW9udGg6IGRhdGUuZ2V0TW9udGgoKSArIDEsXHJcbiAgICAgIGRheTogZGF0ZS5nZXREYXRlKCksXHJcbiAgICAgIGhvdXI6IGRhdGUuZ2V0SG91cnMoKSxcclxuICAgICAgbWludXRlOiBkYXRlLmdldE1pbnV0ZXMoKSxcclxuICAgICAgc2Vjb25kOiBkYXRlLmdldFNlY29uZHMoKSxcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHRoaXMudmFsdWU7XHJcbiAgfVxyXG5cclxuICB0b01vZGVsKHZhbHVlOiBOZ2JEYXRlVGltZVN0cnVjdCB8IG51bGwpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuICcnO1xyXG5cclxuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XHJcblxyXG4gICAgdmFsdWUgPSB7XHJcbiAgICAgIC8vIFRPRE8gbG9vayBmb3Igc3RyaWN0IG1vZGUgZXJyb3JzXHJcbiAgICAgIHllYXI6IG5vdy5nZXRVVENGdWxsWWVhcigpLFxyXG4gICAgICBtb250aDogbm93LmdldE1vbnRoKCkgKyAxLFxyXG4gICAgICBkYXk6IG5vdy5nZXREYXRlKCksXHJcbiAgICAgIGhvdXI6IDAsXHJcbiAgICAgIG1pbnV0ZTogMCxcclxuICAgICAgc2Vjb25kOiAwLFxyXG4gICAgICAuLi50aGlzLnZhbHVlLFxyXG4gICAgICAuLi52YWx1ZSxcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKFxyXG4gICAgICB2YWx1ZS55ZWFyLFxyXG4gICAgICB2YWx1ZS5tb250aCAtIDEsXHJcbiAgICAgIHZhbHVlLmRheSxcclxuICAgICAgdmFsdWUuaG91cixcclxuICAgICAgdmFsdWUubWludXRlLFxyXG4gICAgICB2YWx1ZS5zZWNvbmQsXHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiBuZXcgRGF0ZShkYXRlKS50b0lTT1N0cmluZygpO1xyXG4gIH1cclxufVxyXG5cclxudHlwZSBOZ2JEYXRlVGltZVN0cnVjdCA9IE5nYkRhdGVTdHJ1Y3QgJiBOZ2JUaW1lU3RydWN0O1xyXG4iXX0=
@@ -33,9 +33,9 @@ export class DateAdapter extends NgbDateAdapter {
33
33
  return new Date(dateUtc.getTime() + Math.abs(dateUtc.getTimezoneOffset() * 60000));
34
34
  }
35
35
  }
36
- DateAdapter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: DateAdapter, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
37
- DateAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: DateAdapter });
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: DateAdapter, decorators: [{
36
+ DateAdapter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DateAdapter, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
37
+ DateAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DateAdapter });
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DateAdapter, decorators: [{
39
39
  type: Injectable
40
40
  }] });
41
41
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUtc2hhcmVkL2V4dGVuc2lvbnMvc3JjL2xpYi9hZGFwdGVycy9kYXRlLmFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBaUIsTUFBTSw0QkFBNEIsQ0FBQzs7QUFHM0UsTUFBTSxPQUFPLFdBQVksU0FBUSxjQUE2QjtJQUM1RCxTQUFTLENBQUMsS0FBb0I7UUFDNUIsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLElBQUksQ0FBQztRQUV4QixJQUFJLElBQVUsQ0FBQztRQUVmLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzdCLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzNCO2FBQU07WUFDTCxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDeEI7UUFFRCxJQUFJLEtBQUssQ0FBQyxJQUF5QixDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFbEQsT0FBTztZQUNMLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ25CLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQztZQUMxQixJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRTtTQUN6QixDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUEyQjtRQUNqQyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRXRCLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlELE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRTNELE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFUyxNQUFNLENBQUMsS0FBYTtRQUM1QixNQUFNLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDNUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7O3dHQWpDVSxXQUFXOzRHQUFYLFdBQVc7MkZBQVgsV0FBVztrQkFEdkIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvcm1hdERhdGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nYkRhdGVBZGFwdGVyLCBOZ2JEYXRlU3RydWN0IH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRGF0ZUFkYXB0ZXIgZXh0ZW5kcyBOZ2JEYXRlQWRhcHRlcjxzdHJpbmcgfCBEYXRlPiB7XHJcbiAgZnJvbU1vZGVsKHZhbHVlOiBzdHJpbmcgfCBEYXRlKTogTmdiRGF0ZVN0cnVjdCB8IG51bGwge1xyXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgbGV0IGRhdGU6IERhdGU7XHJcblxyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgZGF0ZSA9IHRoaXMuZGF0ZU9mKHZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRhdGUgPSBuZXcgRGF0ZSh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGlzTmFOKGRhdGUgYXMgdW5rbm93biBhcyBudW1iZXIpKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBkYXk6IGRhdGUuZ2V0RGF0ZSgpLFxyXG4gICAgICBtb250aDogZGF0ZS5nZXRNb250aCgpICsgMSxcclxuICAgICAgeWVhcjogZGF0ZS5nZXRGdWxsWWVhcigpLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHRvTW9kZWwodmFsdWU6IE5nYkRhdGVTdHJ1Y3QgfCBudWxsKTogc3RyaW5nIHtcclxuICAgIGlmICghdmFsdWUpIHJldHVybiAnJztcclxuXHJcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodmFsdWUueWVhciwgdmFsdWUubW9udGggLSAxLCB2YWx1ZS5kYXkpO1xyXG4gICAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IGZvcm1hdERhdGUoZGF0ZSwgJ3l5eXktTU0tZGQnLCAnZW4nKTtcclxuXHJcbiAgICByZXR1cm4gZm9ybWF0dGVkRGF0ZTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBkYXRlT2YodmFsdWU6IHN0cmluZyk6IERhdGUge1xyXG4gICAgY29uc3QgZGF0ZVV0YyA9IG5ldyBEYXRlKERhdGUucGFyc2UodmFsdWUpKTtcclxuICAgIHJldHVybiBuZXcgRGF0ZShkYXRlVXRjLmdldFRpbWUoKSArIE1hdGguYWJzKGRhdGVVdGMuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwMDAwKSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -25,9 +25,9 @@ export class TimeAdapter extends NgbTimeAdapter {
25
25
  return formattedDate;
26
26
  }
27
27
  }
28
- TimeAdapter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: TimeAdapter, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
29
- TimeAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: TimeAdapter });
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: TimeAdapter, decorators: [{
28
+ TimeAdapter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: TimeAdapter, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
29
+ TimeAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: TimeAdapter });
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: TimeAdapter, decorators: [{
31
31
  type: Injectable
32
32
  }] });
33
33
  function isTimeStr(value) {
@@ -15,9 +15,9 @@ export class AbstractActionsComponent extends ActionData {
15
15
  this.actionList = extensions[type].get(name).actions;
16
16
  }
17
17
  }
18
- AbstractActionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: AbstractActionsComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
19
- AbstractActionsComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.3", type: AbstractActionsComponent, inputs: { record: "record" }, usesInheritance: true, ngImport: i0 });
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: AbstractActionsComponent, decorators: [{
18
+ AbstractActionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbstractActionsComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
19
+ AbstractActionsComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: AbstractActionsComponent, inputs: { record: "record" }, usesInheritance: true, ngImport: i0 });
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbstractActionsComponent, decorators: [{
21
21
  type: Directive
22
22
  }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { record: [{
23
23
  type: Input
@@ -20,8 +20,8 @@ export class DateTimePickerComponent {
20
20
  this.time.writeValue(datestr);
21
21
  }
22
22
  }
23
- DateTimePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: DateTimePickerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
24
- DateTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.3", type: DateTimePickerComponent, selector: "abp-date-time-picker", inputs: { prop: "prop", meridian: "meridian" }, viewQueries: [{ propertyName: "date", first: true, predicate: NgbInputDatepicker, descendants: true }, { propertyName: "time", first: true, predicate: NgbTimepicker, descendants: true }], exportAs: ["abpDateTimePicker"], ngImport: i0, template: `
23
+ DateTimePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DateTimePickerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
24
+ DateTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: DateTimePickerComponent, selector: "abp-date-time-picker", inputs: { prop: "prop", meridian: "meridian" }, viewQueries: [{ propertyName: "date", first: true, predicate: NgbInputDatepicker, descendants: true }, { propertyName: "time", first: true, predicate: NgbTimepicker, descendants: true }], exportAs: ["abpDateTimePicker"], ngImport: i0, template: `
25
25
  <input
26
26
  [id]="prop.id"
27
27
  [formControlName]="prop.name"
@@ -54,7 +54,7 @@ DateTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
54
54
  useClass: DateTimeAdapter,
55
55
  },
56
56
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush });
57
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: DateTimePickerComponent, decorators: [{
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DateTimePickerComponent, decorators: [{
58
58
  type: Component,
59
59
  args: [{
60
60
  exportAs: 'abpDateTimePicker',
@@ -17,9 +17,10 @@ import * as i1 from "@abp/ng.core";
17
17
  import * as i2 from "@angular/forms";
18
18
  import * as i3 from "@angular/common";
19
19
  import * as i4 from "@ngx-validate/core";
20
- import * as i5 from "@ng-bootstrap/ng-bootstrap";
21
- import * as i6 from "../date-time-picker/date-time-picker.component";
22
- import * as i7 from "../../directives/disabled.directive";
20
+ import * as i5 from "@abp/ng.theme.shared";
21
+ import * as i6 from "@ng-bootstrap/ng-bootstrap";
22
+ import * as i7 from "../date-time-picker/date-time-picker.component";
23
+ import * as i8 from "../../directives/disabled.directive";
23
24
  export class ExtensibleFormPropComponent {
24
25
  constructor(cdRef, track, configState, groupDirective, injector) {
25
26
  this.cdRef = cdRef;
@@ -30,6 +31,7 @@ export class ExtensibleFormPropComponent {
30
31
  this.containerClassName = 'mb-3';
31
32
  this.options$ = of([]);
32
33
  this.validators = [];
34
+ this.passwordKey = "ThemeShared.Extensions.PasswordComponent" /* eThemeSharedComponents.PasswordComponent */;
33
35
  this.disabledFn = (data) => false;
34
36
  this.search = (text$) => text$
35
37
  ? text$.pipe(debounceTime(300), distinctUntilChanged(), switchMap(text => this.prop.options(this.data, text)))
@@ -94,6 +96,8 @@ export class ExtensibleFormPropComponent {
94
96
  return 'time';
95
97
  case "typeahead" /* ePropType.Typeahead */:
96
98
  return 'typeahead';
99
+ case "passwordinputgroup" /* ePropType.PasswordInputGroup */:
100
+ return 'passwordinputgroup';
97
101
  default:
98
102
  return prop.options ? 'select' : 'input';
99
103
  }
@@ -111,6 +115,8 @@ export class ExtensibleFormPropComponent {
111
115
  return 'email';
112
116
  case "password" /* ePropType.Password */:
113
117
  return 'password';
118
+ case "passwordinputgroup" /* ePropType.PasswordInputGroup */:
119
+ return 'passwordinputgroup';
114
120
  default:
115
121
  return 'hidden';
116
122
  }
@@ -153,8 +159,8 @@ export class ExtensibleFormPropComponent {
153
159
  this.typeaheadModel = { key: keyControl.value, value: valueControl.value };
154
160
  }
155
161
  }
156
- ExtensibleFormPropComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: ExtensibleFormPropComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TrackByService }, { token: i1.ConfigStateService }, { token: i2.FormGroupDirective }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
157
- ExtensibleFormPropComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.3", type: ExtensibleFormPropComponent, selector: "abp-extensible-form-prop", inputs: { data: "data", prop: "prop", first: "first" }, viewQueries: [{ propertyName: "fieldRef", first: true, predicate: ["field"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container\r\n [ngSwitch]=\"getComponent(prop)\"\r\n *abpPermission=\"prop.permission; runChangeDetection: false\"\r\n>\r\n <ng-template ngSwitchCase=\"template\">\r\n <ng-container *ngComponentOutlet=\"prop.template; injector: injectorForCustomComponent\">\r\n </ng-container>\r\n </ng-template>\r\n\r\n <div [ngClass]=\"containerClassName\" class=\"mb-3\">\r\n <ng-template ngSwitchCase=\"input\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <input\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [autocomplete]=\"prop.autocomplete\"\r\n [type]=\"getType(prop)\"\r\n [abpDisabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n class=\"form-control\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"hidden\">\r\n <input [formControlName]=\"prop.name\" type=\"hidden\" />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"checkbox\">\r\n <div class=\"form-check\" validationTarget>\r\n <input\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n type=\"checkbox\"\r\n class=\"form-check-input\"\r\n />\r\n <ng-template\r\n [ngTemplateOutlet]=\"label\"\r\n [ngTemplateOutletContext]=\"{ $implicit: 'form-check-label' }\"\r\n ></ng-template>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"select\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <select\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n class=\"form-select form-control\"\r\n >\r\n <option\r\n *ngFor=\"let option of options$ | async; trackBy: track.by('value')\"\r\n [ngValue]=\"option.value\"\r\n >\r\n {{ option.key }}\r\n </option>\r\n </select>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"multiselect\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <select\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n multiple=\"multiple\"\r\n class=\"form-select form-control\"\r\n >\r\n <option\r\n *ngFor=\"let option of options$ | async; trackBy: track.by('value')\"\r\n [ngValue]=\"option.value\"\r\n >\r\n {{ option.key }}\r\n </option>\r\n </select>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"typeahead\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <div #typeahead class=\"position-relative\" validationStyle validationTarget>\r\n <input\r\n #field\r\n [id]=\"prop.id\"\r\n [autocomplete]=\"prop.autocomplete\"\r\n [abpDisabled]=\"disabled\"\r\n [ngbTypeahead]=\"search\"\r\n [editable]=\"false\"\r\n [inputFormatter]=\"typeaheadFormatter\"\r\n [resultFormatter]=\"typeaheadFormatter\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n [(ngModel)]=\"typeaheadModel\"\r\n (selectItem)=\"setTypeaheadValue($event.item)\"\r\n (blur)=\"setTypeaheadValue(typeaheadModel)\"\r\n [class.is-invalid]=\"typeahead.classList.contains('is-invalid')\"\r\n class=\"form-control\"\r\n />\r\n <input [formControlName]=\"prop.name\" type=\"hidden\" />\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"date\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <input\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n (click)=\"datepicker.open()\"\r\n (keyup.space)=\"datepicker.open()\"\r\n ngbDatepicker\r\n #datepicker=\"ngbDatepicker\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"time\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <ngb-timepicker [formControlName]=\"prop.name\"></ngb-timepicker>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"dateTime\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <abp-date-time-picker [prop]=\"prop\" [meridian]=\"meridian\"></abp-date-time-picker>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"textarea\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <textarea\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n class=\"form-control\"\r\n ></textarea>\r\n </ng-template>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-template #label let-classes>\r\n <label [htmlFor]=\"prop.id\" [ngClass]=\"classes || 'form-label'\">\r\n <ng-container *ngIf=\"prop.displayTextResolver; else displayNameTemplate\">\r\n {{ prop.displayTextResolver(data) | abpLocalization }}\r\n </ng-container>\r\n <ng-template #displayNameTemplate> {{ prop.displayName | abpLocalization }}</ng-template>\r\n {{ asterisk }}\r\n </label>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.SelectMultipleControlValueAccessor, selector: "select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { kind: "directive", type: i4.ValidationStyleDirective, selector: "[validationStyle]", exportAs: ["validationStyle"] }, { kind: "directive", type: i4.ValidationTargetDirective, selector: "[validationTarget]", exportAs: ["validationTarget"] }, { kind: "directive", type: i4.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "directive", type: i5.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "popperOptions", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { kind: "component", type: i5.NgbTimepicker, selector: "ngb-timepicker", inputs: ["meridian", "spinners", "seconds", "hourStep", "minuteStep", "secondStep", "readonlyInputs", "size"], exportAs: ["ngbTimepicker"] }, { kind: "directive", type: i5.NgbTypeahead, selector: "input[ngbTypeahead]", inputs: ["autocomplete", "container", "editable", "focusFirst", "inputFormatter", "ngbTypeahead", "resultFormatter", "resultTemplate", "showHint", "placement", "popperOptions", "popupClass"], outputs: ["selectItem"], exportAs: ["ngbTypeahead"] }, { kind: "component", type: i6.DateTimePickerComponent, selector: "abp-date-time-picker", inputs: ["prop", "meridian"], exportAs: ["abpDateTimePicker"] }, { kind: "directive", type: i7.DisabledDirective, selector: "[abpDisabled]", inputs: ["abpDisabled"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }], viewProviders: [
162
+ ExtensibleFormPropComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ExtensibleFormPropComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TrackByService }, { token: i1.ConfigStateService }, { token: i2.FormGroupDirective }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
163
+ ExtensibleFormPropComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ExtensibleFormPropComponent, selector: "abp-extensible-form-prop", inputs: { data: "data", prop: "prop", first: "first" }, viewQueries: [{ propertyName: "fieldRef", first: true, predicate: ["field"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container\r\n [ngSwitch]=\"getComponent(prop)\"\r\n *abpPermission=\"prop.permission; runChangeDetection: false\"\r\n>\r\n <ng-template ngSwitchCase=\"template\">\r\n <ng-container *ngComponentOutlet=\"prop.template; injector: injectorForCustomComponent\">\r\n </ng-container>\r\n </ng-template>\r\n\r\n <div [ngClass]=\"containerClassName\" class=\"mb-3\">\r\n <ng-template ngSwitchCase=\"input\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <input\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [autocomplete]=\"prop.autocomplete\"\r\n [type]=\"getType(prop)\"\r\n [abpDisabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n class=\"form-control\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"hidden\">\r\n <input [formControlName]=\"prop.name\" type=\"hidden\" />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"checkbox\">\r\n <div class=\"form-check\" validationTarget>\r\n <input\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n type=\"checkbox\"\r\n class=\"form-check-input\"\r\n />\r\n <ng-template\r\n [ngTemplateOutlet]=\"label\"\r\n [ngTemplateOutletContext]=\"{ $implicit: 'form-check-label' }\"\r\n ></ng-template>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"select\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <select\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n class=\"form-select form-control\"\r\n >\r\n <option\r\n *ngFor=\"let option of options$ | async; trackBy: track.by('value')\"\r\n [ngValue]=\"option.value\"\r\n >\r\n {{ option.key }}\r\n </option>\r\n </select>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"multiselect\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <select\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n multiple=\"multiple\"\r\n class=\"form-select form-control\"\r\n >\r\n <option\r\n *ngFor=\"let option of options$ | async; trackBy: track.by('value')\"\r\n [ngValue]=\"option.value\"\r\n >\r\n {{ option.key }}\r\n </option>\r\n </select>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"typeahead\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <div #typeahead class=\"position-relative\" validationStyle validationTarget>\r\n <input\r\n #field\r\n [id]=\"prop.id\"\r\n [autocomplete]=\"prop.autocomplete\"\r\n [abpDisabled]=\"disabled\"\r\n [ngbTypeahead]=\"search\"\r\n [editable]=\"false\"\r\n [inputFormatter]=\"typeaheadFormatter\"\r\n [resultFormatter]=\"typeaheadFormatter\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n [(ngModel)]=\"typeaheadModel\"\r\n (selectItem)=\"setTypeaheadValue($event.item)\"\r\n (blur)=\"setTypeaheadValue(typeaheadModel)\"\r\n [class.is-invalid]=\"typeahead.classList.contains('is-invalid')\"\r\n class=\"form-control\"\r\n />\r\n <input [formControlName]=\"prop.name\" type=\"hidden\" />\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"date\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <input\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n (click)=\"datepicker.open()\"\r\n (keyup.space)=\"datepicker.open()\"\r\n ngbDatepicker\r\n #datepicker=\"ngbDatepicker\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"time\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <ngb-timepicker [formControlName]=\"prop.name\"></ngb-timepicker>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"dateTime\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <abp-date-time-picker [prop]=\"prop\" [meridian]=\"meridian\"></abp-date-time-picker>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"textarea\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <textarea\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n class=\"form-control\"\r\n ></textarea>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"passwordinputgroup\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <abp-password\r\n *abpReplaceableTemplate=\"{\r\n componentKey: passwordKey,\r\n inputs: {\r\n inputId: { value: prop.id },\r\n formControlName: { value: prop.name }\r\n }\r\n }\"\r\n [inputId]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n ></abp-password>\r\n </ng-template>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-template #label let-classes>\r\n <label [htmlFor]=\"prop.id\" [ngClass]=\"classes || 'form-label'\">\r\n <ng-container *ngIf=\"prop.displayTextResolver; else displayNameTemplate\">\r\n {{ prop.displayTextResolver(data) | abpLocalization }}\r\n </ng-container>\r\n <ng-template #displayNameTemplate> {{ prop.displayName | abpLocalization }}</ng-template>\r\n {{ asterisk }}\r\n </label>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.SelectMultipleControlValueAccessor, selector: "select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { kind: "directive", type: i1.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { kind: "directive", type: i4.ValidationStyleDirective, selector: "[validationStyle]", exportAs: ["validationStyle"] }, { kind: "directive", type: i4.ValidationTargetDirective, selector: "[validationTarget]", exportAs: ["validationTarget"] }, { kind: "directive", type: i4.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "component", type: i5.PasswordComponent, selector: "abp-password", inputs: ["inputId", "formControlName"] }, { kind: "directive", type: i6.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "popperOptions", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { kind: "component", type: i6.NgbTimepicker, selector: "ngb-timepicker", inputs: ["meridian", "spinners", "seconds", "hourStep", "minuteStep", "secondStep", "readonlyInputs", "size"], exportAs: ["ngbTimepicker"] }, { kind: "directive", type: i6.NgbTypeahead, selector: "input[ngbTypeahead]", inputs: ["autocomplete", "container", "editable", "focusFirst", "inputFormatter", "ngbTypeahead", "resultFormatter", "resultTemplate", "showHint", "placement", "popperOptions", "popupClass"], outputs: ["selectItem"], exportAs: ["ngbTypeahead"] }, { kind: "component", type: i7.DateTimePickerComponent, selector: "abp-date-time-picker", inputs: ["prop", "meridian"], exportAs: ["abpDateTimePicker"] }, { kind: "directive", type: i8.DisabledDirective, selector: "[abpDisabled]", inputs: ["abpDisabled"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }], viewProviders: [
158
164
  {
159
165
  provide: ControlContainer,
160
166
  useFactory: selfFactory,
@@ -163,7 +169,7 @@ ExtensibleFormPropComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.
163
169
  { provide: NgbDateAdapter, useClass: DateAdapter },
164
170
  { provide: NgbTimeAdapter, useClass: TimeAdapter },
165
171
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush });
166
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: ExtensibleFormPropComponent, decorators: [{
172
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ExtensibleFormPropComponent, decorators: [{
167
173
  type: Component,
168
174
  args: [{ selector: 'abp-extensible-form-prop', changeDetection: ChangeDetectionStrategy.OnPush, viewProviders: [
169
175
  {
@@ -173,7 +179,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImpor
173
179
  },
174
180
  { provide: NgbDateAdapter, useClass: DateAdapter },
175
181
  { provide: NgbTimeAdapter, useClass: TimeAdapter },
176
- ], template: "<ng-container\r\n [ngSwitch]=\"getComponent(prop)\"\r\n *abpPermission=\"prop.permission; runChangeDetection: false\"\r\n>\r\n <ng-template ngSwitchCase=\"template\">\r\n <ng-container *ngComponentOutlet=\"prop.template; injector: injectorForCustomComponent\">\r\n </ng-container>\r\n </ng-template>\r\n\r\n <div [ngClass]=\"containerClassName\" class=\"mb-3\">\r\n <ng-template ngSwitchCase=\"input\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <input\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [autocomplete]=\"prop.autocomplete\"\r\n [type]=\"getType(prop)\"\r\n [abpDisabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n class=\"form-control\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"hidden\">\r\n <input [formControlName]=\"prop.name\" type=\"hidden\" />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"checkbox\">\r\n <div class=\"form-check\" validationTarget>\r\n <input\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n type=\"checkbox\"\r\n class=\"form-check-input\"\r\n />\r\n <ng-template\r\n [ngTemplateOutlet]=\"label\"\r\n [ngTemplateOutletContext]=\"{ $implicit: 'form-check-label' }\"\r\n ></ng-template>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"select\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <select\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n class=\"form-select form-control\"\r\n >\r\n <option\r\n *ngFor=\"let option of options$ | async; trackBy: track.by('value')\"\r\n [ngValue]=\"option.value\"\r\n >\r\n {{ option.key }}\r\n </option>\r\n </select>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"multiselect\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <select\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n multiple=\"multiple\"\r\n class=\"form-select form-control\"\r\n >\r\n <option\r\n *ngFor=\"let option of options$ | async; trackBy: track.by('value')\"\r\n [ngValue]=\"option.value\"\r\n >\r\n {{ option.key }}\r\n </option>\r\n </select>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"typeahead\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <div #typeahead class=\"position-relative\" validationStyle validationTarget>\r\n <input\r\n #field\r\n [id]=\"prop.id\"\r\n [autocomplete]=\"prop.autocomplete\"\r\n [abpDisabled]=\"disabled\"\r\n [ngbTypeahead]=\"search\"\r\n [editable]=\"false\"\r\n [inputFormatter]=\"typeaheadFormatter\"\r\n [resultFormatter]=\"typeaheadFormatter\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n [(ngModel)]=\"typeaheadModel\"\r\n (selectItem)=\"setTypeaheadValue($event.item)\"\r\n (blur)=\"setTypeaheadValue(typeaheadModel)\"\r\n [class.is-invalid]=\"typeahead.classList.contains('is-invalid')\"\r\n class=\"form-control\"\r\n />\r\n <input [formControlName]=\"prop.name\" type=\"hidden\" />\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"date\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <input\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n (click)=\"datepicker.open()\"\r\n (keyup.space)=\"datepicker.open()\"\r\n ngbDatepicker\r\n #datepicker=\"ngbDatepicker\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"time\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <ngb-timepicker [formControlName]=\"prop.name\"></ngb-timepicker>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"dateTime\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <abp-date-time-picker [prop]=\"prop\" [meridian]=\"meridian\"></abp-date-time-picker>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"textarea\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <textarea\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n class=\"form-control\"\r\n ></textarea>\r\n </ng-template>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-template #label let-classes>\r\n <label [htmlFor]=\"prop.id\" [ngClass]=\"classes || 'form-label'\">\r\n <ng-container *ngIf=\"prop.displayTextResolver; else displayNameTemplate\">\r\n {{ prop.displayTextResolver(data) | abpLocalization }}\r\n </ng-container>\r\n <ng-template #displayNameTemplate> {{ prop.displayName | abpLocalization }}</ng-template>\r\n {{ asterisk }}\r\n </label>\r\n</ng-template>\r\n" }]
182
+ ], template: "<ng-container\r\n [ngSwitch]=\"getComponent(prop)\"\r\n *abpPermission=\"prop.permission; runChangeDetection: false\"\r\n>\r\n <ng-template ngSwitchCase=\"template\">\r\n <ng-container *ngComponentOutlet=\"prop.template; injector: injectorForCustomComponent\">\r\n </ng-container>\r\n </ng-template>\r\n\r\n <div [ngClass]=\"containerClassName\" class=\"mb-3\">\r\n <ng-template ngSwitchCase=\"input\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <input\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [autocomplete]=\"prop.autocomplete\"\r\n [type]=\"getType(prop)\"\r\n [abpDisabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n class=\"form-control\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"hidden\">\r\n <input [formControlName]=\"prop.name\" type=\"hidden\" />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"checkbox\">\r\n <div class=\"form-check\" validationTarget>\r\n <input\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n type=\"checkbox\"\r\n class=\"form-check-input\"\r\n />\r\n <ng-template\r\n [ngTemplateOutlet]=\"label\"\r\n [ngTemplateOutletContext]=\"{ $implicit: 'form-check-label' }\"\r\n ></ng-template>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"select\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <select\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n class=\"form-select form-control\"\r\n >\r\n <option\r\n *ngFor=\"let option of options$ | async; trackBy: track.by('value')\"\r\n [ngValue]=\"option.value\"\r\n >\r\n {{ option.key }}\r\n </option>\r\n </select>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"multiselect\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <select\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n multiple=\"multiple\"\r\n class=\"form-select form-control\"\r\n >\r\n <option\r\n *ngFor=\"let option of options$ | async; trackBy: track.by('value')\"\r\n [ngValue]=\"option.value\"\r\n >\r\n {{ option.key }}\r\n </option>\r\n </select>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"typeahead\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <div #typeahead class=\"position-relative\" validationStyle validationTarget>\r\n <input\r\n #field\r\n [id]=\"prop.id\"\r\n [autocomplete]=\"prop.autocomplete\"\r\n [abpDisabled]=\"disabled\"\r\n [ngbTypeahead]=\"search\"\r\n [editable]=\"false\"\r\n [inputFormatter]=\"typeaheadFormatter\"\r\n [resultFormatter]=\"typeaheadFormatter\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n [(ngModel)]=\"typeaheadModel\"\r\n (selectItem)=\"setTypeaheadValue($event.item)\"\r\n (blur)=\"setTypeaheadValue(typeaheadModel)\"\r\n [class.is-invalid]=\"typeahead.classList.contains('is-invalid')\"\r\n class=\"form-control\"\r\n />\r\n <input [formControlName]=\"prop.name\" type=\"hidden\" />\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"date\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <input\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n (click)=\"datepicker.open()\"\r\n (keyup.space)=\"datepicker.open()\"\r\n ngbDatepicker\r\n #datepicker=\"ngbDatepicker\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"time\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <ngb-timepicker [formControlName]=\"prop.name\"></ngb-timepicker>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"dateTime\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <abp-date-time-picker [prop]=\"prop\" [meridian]=\"meridian\"></abp-date-time-picker>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"textarea\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <textarea\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n class=\"form-control\"\r\n ></textarea>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"passwordinputgroup\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <abp-password\r\n *abpReplaceableTemplate=\"{\r\n componentKey: passwordKey,\r\n inputs: {\r\n inputId: { value: prop.id },\r\n formControlName: { value: prop.name }\r\n }\r\n }\"\r\n [inputId]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n ></abp-password>\r\n </ng-template>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-template #label let-classes>\r\n <label [htmlFor]=\"prop.id\" [ngClass]=\"classes || 'form-label'\">\r\n <ng-container *ngIf=\"prop.displayTextResolver; else displayNameTemplate\">\r\n {{ prop.displayTextResolver(data) | abpLocalization }}\r\n </ng-container>\r\n <ng-template #displayNameTemplate> {{ prop.displayName | abpLocalization }}</ng-template>\r\n {{ asterisk }}\r\n </label>\r\n</ng-template>\r\n" }]
177
183
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.TrackByService }, { type: i1.ConfigStateService }, { type: i2.FormGroupDirective }, { type: i0.Injector }]; }, propDecorators: { data: [{
178
184
  type: Input
179
185
  }], prop: [{
@@ -189,4 +195,4 @@ function isRequired(validator) {
189
195
  validator === AbpValidators.required ||
190
196
  validator.name === 'required');
191
197
  }
192
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaWJsZS1mb3JtLXByb3AuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUtc2hhcmVkL2V4dGVuc2lvbnMvc3JjL2xpYi9jb21wb25lbnRzL2V4dGVuc2libGUtZm9ybS9leHRlbnNpYmxlLWZvcm0tcHJvcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1zaGFyZWQvZXh0ZW5zaW9ucy9zcmMvbGliL2NvbXBvbmVudHMvZXh0ZW5zaWJsZS1mb3JtL2V4dGVuc2libGUtZm9ybS1wcm9wLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xHLE9BQU8sRUFBTyxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RGLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsUUFBUSxFQUNSLEtBQUssRUFFTCxRQUFRLEVBRVIsUUFBUSxFQUNSLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUdsQixVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVFLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdB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TyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFO1FBQ2xELEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFO0tBQ25EOzJGQUVVLDJCQUEyQjtrQkFkdkMsU0FBUzsrQkFDRSwwQkFBMEIsbUJBRW5CLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDO3dCQUNiOzRCQUNFLE9BQU8sRUFBRSxnQkFBZ0I7NEJBQ3pCLFVBQVUsRUFBRSxXQUFXOzRCQUN2QixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsSUFBSSxRQUFRLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO3lCQUMzRDt3QkFDRCxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTt3QkFDbEQsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUU7cUJBQ25EOzhOQUdRLElBQUk7c0JBQVosS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVzQixRQUFRO3NCQUFuQyxTQUFTO3VCQUFDLE9BQU87O0FBMEtwQixTQUFTLFVBQVUsQ0FBQyxTQUFzQjtJQUN4QyxPQUFPLENBQ0wsU0FBUyxLQUFLLFVBQVUsQ0FBQyxRQUFRO1FBQ2pDLFNBQVMsS0FBSyxhQUFhLENBQUMsUUFBUTtRQUNwQyxTQUFTLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FDOUIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFWFRFTlNJT05TX0ZPUk1fUFJPUCwgRVhURU5TSU9OU19GT1JNX1BST1BfREFUQSB9IGZyb20gJy4vLi4vLi4vdG9rZW5zL2V4dGVuc2lvbnMudG9rZW4nO1xyXG5pbXBvcnQgeyBBQlAsIEFicFZhbGlkYXRvcnMsIENvbmZpZ1N0YXRlU2VydmljZSwgVHJhY2tCeVNlcnZpY2UgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSW5qZWN0b3IsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9wdGlvbmFsLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgU2tpcFNlbGYsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIENvbnRyb2xDb250YWluZXIsXHJcbiAgRm9ybUdyb3VwRGlyZWN0aXZlLFxyXG4gIFVudHlwZWRGb3JtR3JvdXAsXHJcbiAgVmFsaWRhdG9yRm4sXHJcbiAgVmFsaWRhdG9ycyxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE5nYkRhdGVBZGFwdGVyLCBOZ2JUaW1lQWRhcHRlciB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBEYXRlQWRhcHRlciB9IGZyb20gJy4uLy4uL2FkYXB0ZXJzL2RhdGUuYWRhcHRlcic7XHJcbmltcG9ydCB7IFRpbWVBZGFwdGVyIH0gZnJvbSAnLi4vLi4vYWRhcHRlcnMvdGltZS5hZGFwdGVyJztcclxuaW1wb3J0IHsgRVhUUkFfUFJPUEVSVElFU19LRVkgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvZXh0cmEtcHJvcGVydGllcyc7XHJcbmltcG9ydCB7IGVQcm9wVHlwZSB9IGZyb20gJy4uLy4uL2VudW1zL3Byb3BzLmVudW0nO1xyXG5pbXBvcnQgeyBGb3JtUHJvcCB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLXByb3BzJztcclxuaW1wb3J0IHsgUHJvcERhdGEgfSBmcm9tICcuLi8uLi9tb2RlbHMvcHJvcHMnO1xyXG5pbXBvcnQgeyBzZWxmRmFjdG9yeSB9IGZyb20gJy4uLy4uL3V0aWxzL2ZhY3RvcnkudXRpbCc7XHJcbmltcG9ydCB7IGFkZFR5cGVhaGVhZFRleHRTdWZmaXggfSBmcm9tICcuLi8uLi91dGlscy90eXBlYWhlYWQudXRpbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FicC1leHRlbnNpYmxlLWZvcm0tcHJvcCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2V4dGVuc2libGUtZm9ybS1wcm9wLmNvbXBvbmVudC5odG1sJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICB2aWV3UHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IENvbnRyb2xDb250YWluZXIsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IHNlbGZGYWN0b3J5LFxyXG4gICAgICBkZXBzOiBbW25ldyBPcHRpb25hbCgpLCBuZXcgU2tpcFNlbGYoKSwgQ29udHJvbENvbnRhaW5lcl1dLFxyXG4gICAgfSxcclxuICAgIHsgcHJvdmlkZTogTmdiRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBEYXRlQWRhcHRlciB9LFxyXG4gICAgeyBwcm92aWRlOiBOZ2JUaW1lQWRhcHRlciwgdXNlQ2xhc3M6IFRpbWVBZGFwdGVyIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEV4dGVuc2libGVGb3JtUHJvcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQElucHV0KCkgZGF0YSE6IFByb3BEYXRhO1xyXG5cclxuICBASW5wdXQoKSBwcm9wITogRm9ybVByb3A7XHJcblxyXG4gIEBJbnB1dCgpIGZpcnN0PzogYm9vbGVhbjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZmllbGQnKSBwcml2YXRlIGZpZWxkUmVmITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcblxyXG4gIHB1YmxpYyBpbmplY3RvckZvckN1c3RvbUNvbXBvbmVudDogSW5qZWN0b3I7XHJcblxyXG4gIGFzdGVyaXNrID0gJyc7XHJcblxyXG4gIGNvbnRhaW5lckNsYXNzTmFtZSA9ICdtYi0zJztcclxuXHJcbiAgb3B0aW9ucyQ6IE9ic2VydmFibGU8QUJQLk9wdGlvbjxhbnk+W10+ID0gb2YoW10pO1xyXG5cclxuICB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XHJcblxyXG4gIHJlYWRvbmx5ITogYm9vbGVhbjtcclxuXHJcbiAgdHlwZWFoZWFkTW9kZWw6IGFueTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xyXG5cclxuICBkaXNhYmxlZEZuID0gKGRhdGE6IFByb3BEYXRhKSA9PiBmYWxzZTtcclxuXHJcbiAgZ2V0IGRpc2FibGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWRGbih0aGlzLmRhdGEpO1xyXG4gIH1cclxuXHJcbiAgc2V0VHlwZWFoZWFkVmFsdWUoc2VsZWN0ZWRPcHRpb246IEFCUC5PcHRpb248c3RyaW5nPikge1xyXG4gICAgdGhpcy50eXBlYWhlYWRNb2RlbCA9IHNlbGVjdGVkT3B0aW9uIHx8IHsga2V5OiBudWxsLCB2YWx1ZTogbnVsbCB9O1xyXG4gICAgY29uc3QgeyBrZXksIHZhbHVlIH0gPSB0aGlzLnR5cGVhaGVhZE1vZGVsO1xyXG4gICAgY29uc3QgW2tleUNvbnRyb2wsIHZhbHVlQ29udHJvbF0gPSB0aGlzLmdldFR5cGVhaGVhZENvbnRyb2xzKCk7XHJcbiAgICBpZiAodmFsdWVDb250cm9sPy52YWx1ZSAmJiAhdmFsdWUpIHZhbHVlQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xyXG4gICAga2V5Q29udHJvbD8uc2V0VmFsdWUoa2V5KTtcclxuICAgIHZhbHVlQ29udHJvbD8uc2V0VmFsdWUodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgc2VhcmNoID0gKHRleHQkOiBPYnNlcnZhYmxlPHN0cmluZz4pID0+XHJcbiAgICB0ZXh0JFxyXG4gICAgICA/IHRleHQkLnBpcGUoXHJcbiAgICAgICAgICBkZWJvdW5jZVRpbWUoMzAwKSxcclxuICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgICAgICBzd2l0Y2hNYXAodGV4dCA9PiB0aGlzLnByb3Aub3B0aW9ucyh0aGlzLmRhdGEsIHRleHQpKSxcclxuICAgICAgICApXHJcbiAgICAgIDogb2YoW10pO1xyXG5cclxuICB0eXBlYWhlYWRGb3JtYXR0ZXIgPSAob3B0aW9uOiBBQlAuT3B0aW9uPGFueT4pID0+IG9wdGlvbi5rZXk7XHJcblxyXG4gIGdldCBtZXJpZGlhbigpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuY29uZmlnU3RhdGUuZ2V0RGVlcCgnbG9jYWxpemF0aW9uLmN1cnJlbnRDdWx0dXJlLmRhdGVUaW1lRm9ybWF0LnNob3J0VGltZVBhdHRlcm4nKSB8fCAnJ1xyXG4gICAgKS5pbmNsdWRlcygndHQnKTtcclxuICB9XHJcblxyXG4gIGdldCBpc0ludmFsaWQoKSB7XHJcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldCh0aGlzLnByb3AubmFtZSk7XHJcbiAgICByZXR1cm4gY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuaW52YWxpZDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHB1YmxpYyByZWFkb25seSB0cmFjazogVHJhY2tCeVNlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgY29uZmlnU3RhdGU6IENvbmZpZ1N0YXRlU2VydmljZSxcclxuICAgIGdyb3VwRGlyZWN0aXZlOiBGb3JtR3JvdXBEaXJlY3RpdmUsXHJcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcclxuICApIHtcclxuICAgIHRoaXMuZm9ybSA9IGdyb3VwRGlyZWN0aXZlLmZvcm07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFR5cGVhaGVhZENvbnRyb2xzKCkge1xyXG4gICAgY29uc3QgeyBuYW1lIH0gPSB0aGlzLnByb3A7XHJcbiAgICBjb25zdCBleHRyYVByb3BOYW1lID0gYCR7RVhUUkFfUFJPUEVSVElFU19LRVl9LiR7bmFtZX1gO1xyXG4gICAgY29uc3Qga2V5Q29udHJvbCA9XHJcbiAgICAgIHRoaXMuZm9ybS5nZXQoYWRkVHlwZWFoZWFkVGV4dFN1ZmZpeChleHRyYVByb3BOYW1lKSkgfHxcclxuICAgICAgdGhpcy5mb3JtLmdldChhZGRUeXBlYWhlYWRUZXh0U3VmZml4KG5hbWUpKTtcclxuICAgIGNvbnN0IHZhbHVlQ29udHJvbCA9IHRoaXMuZm9ybS5nZXQoZXh0cmFQcm9wTmFtZSkgfHwgdGhpcy5mb3JtLmdldChuYW1lKTtcclxuICAgIHJldHVybiBba2V5Q29udHJvbCwgdmFsdWVDb250cm9sXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0QXN0ZXJpc2soKSB7XHJcbiAgICB0aGlzLmFzdGVyaXNrID0gdGhpcy52YWxpZGF0b3JzLnNvbWUoaXNSZXF1aXJlZCkgPyAnKicgOiAnJztcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGlmICh0aGlzLmZpcnN0ICYmIHRoaXMuZmllbGRSZWYpIHtcclxuICAgICAgdGhpcy5maWVsZFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Q29tcG9uZW50KHByb3A6IEZvcm1Qcm9wKTogc3RyaW5nIHtcclxuICAgIGlmIChwcm9wLnRlbXBsYXRlKSB7XHJcbiAgICAgIHJldHVybiAndGVtcGxhdGUnO1xyXG4gICAgfVxyXG4gICAgc3dpdGNoIChwcm9wLnR5cGUpIHtcclxuICAgICAgY2FzZSBlUHJvcFR5cGUuQm9vbGVhbjpcclxuICAgICAgICByZXR1cm4gJ2NoZWNrYm94JztcclxuICAgICAgY2FzZSBlUHJvcFR5cGUuRGF0ZTpcclxuICAgICAgICByZXR1cm4gJ2RhdGUnO1xyXG4gICAgICBjYXNlIGVQcm9wVHlwZS5EYXRlVGltZTpcclxuICAgICAgICByZXR1cm4gJ2RhdGVUaW1lJztcclxuICAgICAgY2FzZSBlUHJvcFR5cGUuSGlkZGVuOlxyXG4gICAgICAgIHJldHVybiAnaGlkZGVuJztcclxuICAgICAgY2FzZSBlUHJvcFR5cGUuTXVsdGlTZWxlY3Q6XHJcbiAgICAgICAgcmV0dXJuICdtdWx0aXNlbGVjdCc7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLlRleHQ6XHJcbiAgICAgICAgcmV0dXJuICd0ZXh0YXJlYSc7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLlRpbWU6XHJcbiAgICAgICAgcmV0dXJuICd0aW1lJztcclxuICAgICAgY2FzZSBlUHJvcFR5cGUuVHlwZWFoZWFkOlxyXG4gICAgICAgIHJldHVybiAndHlwZWFoZWFkJztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gcHJvcC5vcHRpb25zID8gJ3NlbGVjdCcgOiAnaW5wdXQnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0VHlwZShwcm9wOiBGb3JtUHJvcCk6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKHByb3AudHlwZSkge1xyXG4gICAgICBjYXNlIGVQcm9wVHlwZS5EYXRlOlxyXG4gICAgICBjYXNlIGVQcm9wVHlwZS5TdHJpbmc6XHJcbiAgICAgICAgcmV0dXJuICd0ZXh0JztcclxuICAgICAgY2FzZSBlUHJvcFR5cGUuQm9vbGVhbjpcclxuICAgICAgICByZXR1cm4gJ2NoZWNrYm94JztcclxuICAgICAgY2FzZSBlUHJvcFR5cGUuTnVtYmVyOlxyXG4gICAgICAgIHJldHVybiAnbnVtYmVyJztcclxuICAgICAgY2FzZSBlUHJvcFR5cGUuRW1haWw6XHJcbiAgICAgICAgcmV0dXJuICdlbWFpbCc7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLlBhc3N3b3JkOlxyXG4gICAgICAgIHJldHVybiAncGFzc3dvcmQnO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiAnaGlkZGVuJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKHsgcHJvcCwgZGF0YSB9OiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBjb25zdCBjdXJyZW50UHJvcCA9IHByb3A/LmN1cnJlbnRWYWx1ZSBhcyBGb3JtUHJvcDtcclxuICAgIGNvbnN0IHsgb3B0aW9ucywgcmVhZG9ubHksIGRpc2FibGVkLCB2YWxpZGF0b3JzLCBjbGFzc05hbWUsIHRlbXBsYXRlIH0gPSBjdXJyZW50UHJvcCB8fCB7fTtcclxuICAgIGlmICh0ZW1wbGF0ZSkge1xyXG4gICAgICB0aGlzLmluamVjdG9yRm9yQ3VzdG9tQ29tcG9uZW50ID0gSW5qZWN0b3IuY3JlYXRlKHtcclxuICAgICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogRVhURU5TSU9OU19GT1JNX1BST1AsXHJcbiAgICAgICAgICAgIHVzZVZhbHVlOiBjdXJyZW50UHJvcCxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IEVYVEVOU0lPTlNfRk9STV9QUk9QX0RBVEEsXHJcbiAgICAgICAgICAgIHVzZVZhbHVlOiAoZGF0YT8uY3VycmVudFZhbHVlIGFzIFByb3BEYXRhKT8ucmVjb3JkLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHsgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lciwgdXNlRXhpc3Rpbmc6IEZvcm1Hcm91cERpcmVjdGl2ZSB9LFxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAob3B0aW9ucykgdGhpcy5vcHRpb25zJCA9IG9wdGlvbnModGhpcy5kYXRhKTtcclxuICAgIGlmIChyZWFkb25seSkgdGhpcy5yZWFkb25seSA9IHJlYWRvbmx5KHRoaXMuZGF0YSk7XHJcblxyXG4gICAgaWYgKGRpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuZGlzYWJsZWRGbiA9IGRpc2FibGVkO1xyXG4gICAgfVxyXG4gICAgaWYgKHZhbGlkYXRvcnMpIHtcclxuICAgICAgdGhpcy52YWxpZGF0b3JzID0gdmFsaWRhdG9ycyh0aGlzLmRhdGEpO1xyXG4gICAgICB0aGlzLnNldEFzdGVyaXNrKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoY2xhc3NOYW1lICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5jb250YWluZXJDbGFzc05hbWUgPSBjbGFzc05hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgW2tleUNvbnRyb2wsIHZhbHVlQ29udHJvbF0gPSB0aGlzLmdldFR5cGVhaGVhZENvbnRyb2xzKCk7XHJcbiAgICBpZiAoa2V5Q29udHJvbCAmJiB2YWx1ZUNvbnRyb2wpXHJcbiAgICAgIHRoaXMudHlwZWFoZWFkTW9kZWwgPSB7IGtleToga2V5Q29udHJvbC52YWx1ZSwgdmFsdWU6IHZhbHVlQ29udHJvbC52YWx1ZSB9O1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gaXNSZXF1aXJlZCh2YWxpZGF0b3I6IFZhbGlkYXRvckZuKSB7XHJcbiAgcmV0dXJuIChcclxuICAgIHZhbGlkYXRvciA9PT0gVmFsaWRhdG9ycy5yZXF1aXJlZCB8fFxyXG4gICAgdmFsaWRhdG9yID09PSBBYnBWYWxpZGF0b3JzLnJlcXVpcmVkIHx8XHJcbiAgICB2YWxpZGF0b3IubmFtZSA9PT0gJ3JlcXVpcmVkJ1xyXG4gICk7XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lclxyXG4gIFtuZ1N3aXRjaF09XCJnZXRDb21wb25lbnQocHJvcClcIlxyXG4gICphYnBQZXJtaXNzaW9uPVwicHJvcC5wZXJtaXNzaW9uOyBydW5DaGFuZ2VEZXRlY3Rpb246IGZhbHNlXCJcclxuPlxyXG4gIDxuZy10ZW1wbGF0ZSBuZ1N3aXRjaENhc2U9XCJ0ZW1wbGF0ZVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdDb21wb25lbnRPdXRsZXQ9XCJwcm9wLnRlbXBsYXRlOyBpbmplY3RvcjogaW5qZWN0b3JGb3JDdXN0b21Db21wb25lbnRcIj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxkaXYgW25nQ2xhc3NdPVwiY29udGFpbmVyQ2xhc3NOYW1lXCIgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICA8bmctdGVtcGxhdGUgbmdTd2l0Y2hDYXNlPVwiaW5wdXRcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhYmVsXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgI2ZpZWxkXHJcbiAgICAgICAgW2lkXT1cInByb3AuaWRcIlxyXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcC5uYW1lXCJcclxuICAgICAgICBbYXV0b2NvbXBsZXRlXT1cInByb3AuYXV0b2NvbXBsZXRlXCJcclxuICAgICAgICBbdHlwZV09XCJnZXRUeXBlKHByb3ApXCJcclxuICAgICAgICBbYWJwRGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAvPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgbmdTd2l0Y2hDYXNlPVwiaGlkZGVuXCI+XHJcbiAgICAgIDxpbnB1dCBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3AubmFtZVwiIHR5cGU9XCJoaWRkZW5cIiAvPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgbmdTd2l0Y2hDYXNlPVwiY2hlY2tib3hcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2tcIiB2YWxpZGF0aW9uVGFyZ2V0PlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgI2ZpZWxkXHJcbiAgICAgICAgICBbaWRdPVwicHJvcC5pZFwiXHJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3AubmFtZVwiXHJcbiAgICAgICAgICBbYWJwRGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhYmVsXCJcclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogJ2Zvcm0tY2hlY2stbGFiZWwnIH1cIlxyXG4gICAgICAgID48L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIG5nU3dpdGNoQ2FzZT1cInNlbGVjdFwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibGFiZWxcIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICA8c2VsZWN0XHJcbiAgICAgICAgI2ZpZWxkXHJcbiAgICAgICAgW2lkXT1cInByb3AuaWRcIlxyXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcC5uYW1lXCJcclxuICAgICAgICBbYWJwRGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1jb250cm9sXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxvcHRpb25cclxuICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9ucyQgfCBhc3luYzsgdHJhY2tCeTogdHJhY2suYnkoJ3ZhbHVlJylcIlxyXG4gICAgICAgICAgW25nVmFsdWVdPVwib3B0aW9uLnZhbHVlXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBvcHRpb24ua2V5IH19XHJcbiAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgIDwvc2VsZWN0PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgbmdTd2l0Y2hDYXNlPVwibXVsdGlzZWxlY3RcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhYmVsXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPHNlbGVjdFxyXG4gICAgICAgICNmaWVsZFxyXG4gICAgICAgIFtpZF09XCJwcm9wLmlkXCJcclxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3AubmFtZVwiXHJcbiAgICAgICAgW2FicERpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICBtdWx0aXBsZT1cIm11bHRpcGxlXCJcclxuICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tY29udHJvbFwiXHJcbiAgICAgID5cclxuICAgICAgICA8b3B0aW9uXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnMkIHwgYXN5bmM7IHRyYWNrQnk6IHRyYWNrLmJ5KCd2YWx1ZScpXCJcclxuICAgICAgICAgIFtuZ1ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgb3B0aW9uLmtleSB9fVxyXG4gICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICA8L3NlbGVjdD5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIG5nU3dpdGNoQ2FzZT1cInR5cGVhaGVhZFwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibGFiZWxcIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICA8ZGl2ICN0eXBlYWhlYWQgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiIHZhbGlkYXRpb25TdHlsZSB2YWxpZGF0aW9uVGFyZ2V0PlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgI2ZpZWxkXHJcbiAgICAgICAgICBbaWRdPVwicHJvcC5pZFwiXHJcbiAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cInByb3AuYXV0b2NvbXBsZXRlXCJcclxuICAgICAgICAgIFthYnBEaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICBbbmdiVHlwZWFoZWFkXT1cInNlYXJjaFwiXHJcbiAgICAgICAgICBbZWRpdGFibGVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW2lucHV0Rm9ybWF0dGVyXT1cInR5cGVhaGVhZEZvcm1hdHRlclwiXHJcbiAgICAgICAgICBbcmVzdWx0Rm9ybWF0dGVyXT1cInR5cGVhaGVhZEZvcm1hdHRlclwiXHJcbiAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJ0eXBlYWhlYWRNb2RlbFwiXHJcbiAgICAgICAgICAoc2VsZWN0SXRlbSk9XCJzZXRUeXBlYWhlYWRWYWx1ZSgkZXZlbnQuaXRlbSlcIlxyXG4gICAgICAgICAgKGJsdXIpPVwic2V0VHlwZWFoZWFkVmFsdWUodHlwZWFoZWFkTW9kZWwpXCJcclxuICAgICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cInR5cGVhaGVhZC5jbGFzc0xpc3QuY29udGFpbnMoJ2lzLWludmFsaWQnKVwiXHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8aW5wdXQgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wLm5hbWVcIiB0eXBlPVwiaGlkZGVuXCIgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBuZ1N3aXRjaENhc2U9XCJkYXRlXCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsYWJlbFwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIFtpZF09XCJwcm9wLmlkXCJcclxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3AubmFtZVwiXHJcbiAgICAgICAgKGNsaWNrKT1cImRhdGVwaWNrZXIub3BlbigpXCJcclxuICAgICAgICAoa2V5dXAuc3BhY2UpPVwiZGF0ZXBpY2tlci5vcGVuKClcIlxyXG4gICAgICAgIG5nYkRhdGVwaWNrZXJcclxuICAgICAgICAjZGF0ZXBpY2tlcj1cIm5nYkRhdGVwaWNrZXJcIlxyXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgIC8+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBuZ1N3aXRjaENhc2U9XCJ0aW1lXCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsYWJlbFwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxuZ2ItdGltZXBpY2tlciBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3AubmFtZVwiPjwvbmdiLXRpbWVwaWNrZXI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBuZ1N3aXRjaENhc2U9XCJkYXRlVGltZVwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibGFiZWxcIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICA8YWJwLWRhdGUtdGltZS1waWNrZXIgW3Byb3BdPVwicHJvcFwiIFttZXJpZGlhbl09XCJtZXJpZGlhblwiPjwvYWJwLWRhdGUtdGltZS1waWNrZXI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBuZ1N3aXRjaENhc2U9XCJ0ZXh0YXJlYVwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibGFiZWxcIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICA8dGV4dGFyZWFcclxuICAgICAgICAjZmllbGRcclxuICAgICAgICBbaWRdPVwicHJvcC5pZFwiXHJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wLm5hbWVcIlxyXG4gICAgICAgIFthYnBEaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgID48L3RleHRhcmVhPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48bmctdGVtcGxhdGUgI2xhYmVsIGxldC1jbGFzc2VzPlxyXG4gIDxsYWJlbCBbaHRtbEZvcl09XCJwcm9wLmlkXCIgW25nQ2xhc3NdPVwiY2xhc3NlcyB8fCAnZm9ybS1sYWJlbCdcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9wLmRpc3BsYXlUZXh0UmVzb2x2ZXI7IGVsc2UgZGlzcGxheU5hbWVUZW1wbGF0ZVwiPlxyXG4gICAgICB7eyBwcm9wLmRpc3BsYXlUZXh0UmVzb2x2ZXIoZGF0YSkgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLXRlbXBsYXRlICNkaXNwbGF5TmFtZVRlbXBsYXRlPiB7eyBwcm9wLmRpc3BsYXlOYW1lIHwgYWJwTG9jYWxpemF0aW9uIH19PC9uZy10ZW1wbGF0ZT5cclxuICAgIHt7IGFzdGVyaXNrIH19XHJcbiAgPC9sYWJlbD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaWJsZS1mb3JtLXByb3AuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUtc2hhcmVkL2V4dGVuc2lvbnMvc3JjL2xpYi9jb21wb25lbnRzL2V4dGVuc2libGUtZm9ybS9leHRlbnNpYmxlLWZvcm0tcHJvcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1zaGFyZWQvZXh0ZW5zaW9ucy9zcmMvbGliL2NvbXBvbmVudHMvZXh0ZW5zaWJsZS1mb3JtL2V4dGVuc2libGUtZm9ybS1wcm9wLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xHLE9BQU8sRUFBTyxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RGLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsUUFBUSxFQUNSLEtBQUssRUFFTCxRQUFRLEVBRVIsUUFBUSxFQUNSLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUdsQixVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVFLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdB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QyxJQUFJLFFBQVEsRUFBRSxFQUFFLElBQUksUUFBUSxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztTQUMzRDtRQUNELEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFO1FBQ2xELEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFO0tBQ25EOzJGQUVVLDJCQUEyQjtrQkFkdkMsU0FBUzsrQkFDRSwwQkFBMEIsbUJBRW5CLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDO3dCQUNiOzRCQUNFLE9BQU8sRUFBRSxnQkFBZ0I7NEJBQ3pCLFVBQVUsRUFBRSxXQUFXOzRCQUN2QixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsSUFBSSxRQUFRLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO3lCQUMzRDt3QkFDRCxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTt3QkFDbEQsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUU7cUJBQ25EOzhOQUdRLElBQUk7c0JBQVosS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVzQixRQUFRO3NCQUFuQyxTQUFTO3VCQUFDLE9BQU87O0FBZ0xwQixTQUFTLFVBQVUsQ0FBQyxTQUFzQjtJQUN4QyxPQUFPLENBQ0wsU0FBUyxLQUFLLFVBQVUsQ0FBQyxRQUFRO1FBQ2pDLFNBQVMsS0FBSyxhQUFhLENBQUMsUUFBUTtRQUNwQyxTQUFTLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FDOUIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFWFRFTlNJT05TX0ZPUk1fUFJPUCwgRVhURU5TSU9OU19GT1JNX1BST1BfREFUQSB9IGZyb20gJy4vLi4vLi4vdG9rZW5zL2V4dGVuc2lvbnMudG9rZW4nO1xyXG5pbXBvcnQgeyBBQlAsIEFicFZhbGlkYXRvcnMsIENvbmZpZ1N0YXRlU2VydmljZSwgVHJhY2tCeVNlcnZpY2UgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSW5qZWN0b3IsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9wdGlvbmFsLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgU2tpcFNlbGYsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIENvbnRyb2xDb250YWluZXIsXHJcbiAgRm9ybUdyb3VwRGlyZWN0aXZlLFxyXG4gIFVudHlwZWRGb3JtR3JvdXAsXHJcbiAgVmFsaWRhdG9yRm4sXHJcbiAgVmFsaWRhdG9ycyxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE5nYkRhdGVBZGFwdGVyLCBOZ2JUaW1lQWRhcHRlciB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBEYXRlQWRhcHRlciB9IGZyb20gJy4uLy4uL2FkYXB0ZXJzL2RhdGUuYWRhcHRlcic7XHJcbmltcG9ydCB7IFRpbWVBZGFwdGVyIH0gZnJvbSAnLi4vLi4vYWRhcHRlcnMvdGltZS5hZGFwdGVyJztcclxuaW1wb3J0IHsgRVhUUkFfUFJPUEVSVElFU19LRVkgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvZXh0cmEtcHJvcGVydGllcyc7XHJcbmltcG9ydCB7IGVQcm9wVHlwZSB9IGZyb20gJy4uLy4uL2VudW1zL3Byb3BzLmVudW0nO1xyXG5pbXBvcnQgeyBGb3JtUHJvcCB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLXByb3BzJztcclxuaW1wb3J0IHsgUHJvcERhdGEgfSBmcm9tICcuLi8uLi9tb2RlbHMvcHJvcHMnO1xyXG5pbXBvcnQgeyBzZWxmRmFjdG9yeSB9IGZyb20gJy4uLy4uL3V0aWxzL2ZhY3RvcnkudXRpbCc7XHJcbmltcG9ydCB7IGFkZFR5cGVhaGVhZFRleHRTdWZmaXggfSBmcm9tICcuLi8uLi91dGlscy90eXBlYWhlYWQudXRpbCc7XHJcbmltcG9ydCB7IGVUaGVtZVNoYXJlZENvbXBvbmVudHMgfSBmcm9tICcuLi8uLi9lbnVtcy9jb21wb25lbnRzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYWJwLWV4dGVuc2libGUtZm9ybS1wcm9wJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZXh0ZW5zaWJsZS1mb3JtLXByb3AuY29tcG9uZW50Lmh0bWwnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHZpZXdQcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lcixcclxuICAgICAgdXNlRmFjdG9yeTogc2VsZkZhY3RvcnksXHJcbiAgICAgIGRlcHM6IFtbbmV3IE9wdGlvbmFsKCksIG5ldyBTa2lwU2VsZigpLCBDb250cm9sQ29udGFpbmVyXV0sXHJcbiAgICB9LFxyXG4gICAgeyBwcm92aWRlOiBOZ2JEYXRlQWRhcHRlciwgdXNlQ2xhc3M6IERhdGVBZGFwdGVyIH0sXHJcbiAgICB7IHByb3ZpZGU6IE5nYlRpbWVBZGFwdGVyLCB1c2VDbGFzczogVGltZUFkYXB0ZXIgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXh0ZW5zaWJsZUZvcm1Qcm9wQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcclxuICBASW5wdXQoKSBkYXRhITogUHJvcERhdGE7XHJcblxyXG4gIEBJbnB1dCgpIHByb3AhOiBGb3JtUHJvcDtcclxuXHJcbiAgQElucHV0KCkgZmlyc3Q/OiBib29sZWFuO1xyXG5cclxuICBAVmlld0NoaWxkKCdmaWVsZCcpIHByaXZhdGUgZmllbGRSZWYhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuXHJcbiAgcHVibGljIGluamVjdG9yRm9yQ3VzdG9tQ29tcG9uZW50OiBJbmplY3RvcjtcclxuXHJcbiAgYXN0ZXJpc2sgPSAnJztcclxuXHJcbiAgY29udGFpbmVyQ2xhc3NOYW1lID0gJ21iLTMnO1xyXG5cclxuICBvcHRpb25zJDogT2JzZXJ2YWJsZTxBQlAuT3B0aW9uPGFueT5bXT4gPSBvZihbXSk7XHJcblxyXG4gIHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcclxuXHJcbiAgcmVhZG9ubHkhOiBib29sZWFuO1xyXG5cclxuICB0eXBlYWhlYWRNb2RlbDogYW55O1xyXG5cclxuICBwYXNzd29yZEtleSA9IGVUaGVtZVNoYXJlZENvbXBvbmVudHMuUGFzc3dvcmRDb21wb25lbnQ7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcclxuXHJcbiAgZGlzYWJsZWRGbiA9IChkYXRhOiBQcm9wRGF0YSkgPT4gZmFsc2U7XHJcblxyXG4gIGdldCBkaXNhYmxlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmRpc2FibGVkRm4odGhpcy5kYXRhKTtcclxuICB9XHJcblxyXG4gIHNldFR5cGVhaGVhZFZhbHVlKHNlbGVjdGVkT3B0aW9uOiBBQlAuT3B0aW9uPHN0cmluZz4pIHtcclxuICAgIHRoaXMudHlwZWFoZWFkTW9kZWwgPSBzZWxlY3RlZE9wdGlvbiB8fCB7IGtleTogbnVsbCwgdmFsdWU6IG51bGwgfTtcclxuICAgIGNvbnN0IHsga2V5LCB2YWx1ZSB9ID0gdGhpcy50eXBlYWhlYWRNb2RlbDtcclxuICAgIGNvbnN0IFtrZXlDb250cm9sLCB2YWx1ZUNvbnRyb2xdID0gdGhpcy5nZXRUeXBlYWhlYWRDb250cm9scygpO1xyXG4gICAgaWYgKHZhbHVlQ29udHJvbD8udmFsdWUgJiYgIXZhbHVlKSB2YWx1ZUNvbnRyb2wubWFya0FzRGlydHkoKTtcclxuICAgIGtleUNvbnRyb2w/LnNldFZhbHVlKGtleSk7XHJcbiAgICB2YWx1ZUNvbnRyb2w/LnNldFZhbHVlKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIHNlYXJjaCA9ICh0ZXh0JDogT2JzZXJ2YWJsZTxzdHJpbmc+KSA9PlxyXG4gICAgdGV4dCRcclxuICAgICAgPyB0ZXh0JC5waXBlKFxyXG4gICAgICAgICAgZGVib3VuY2VUaW1lKDMwMCksXHJcbiAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICAgICAgc3dpdGNoTWFwKHRleHQgPT4gdGhpcy5wcm9wLm9wdGlvbnModGhpcy5kYXRhLCB0ZXh0KSksXHJcbiAgICAgICAgKVxyXG4gICAgICA6IG9mKFtdKTtcclxuXHJcbiAgdHlwZWFoZWFkRm9ybWF0dGVyID0gKG9wdGlvbjogQUJQLk9wdGlvbjxhbnk+KSA9PiBvcHRpb24ua2V5O1xyXG5cclxuICBnZXQgbWVyaWRpYW4oKSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmNvbmZpZ1N0YXRlLmdldERlZXAoJ2xvY2FsaXphdGlvbi5jdXJyZW50Q3VsdHVyZS5kYXRlVGltZUZvcm1hdC5zaG9ydFRpbWVQYXR0ZXJuJykgfHwgJydcclxuICAgICkuaW5jbHVkZXMoJ3R0Jyk7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNJbnZhbGlkKCkge1xyXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5nZXQodGhpcy5wcm9wLm5hbWUpO1xyXG4gICAgcmV0dXJuIGNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmludmFsaWQ7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZWFkb25seSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgdHJhY2s6IFRyYWNrQnlTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIGNvbmZpZ1N0YXRlOiBDb25maWdTdGF0ZVNlcnZpY2UsXHJcbiAgICBncm91cERpcmVjdGl2ZTogRm9ybUdyb3VwRGlyZWN0aXZlLFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgKSB7XHJcbiAgICB0aGlzLmZvcm0gPSBncm91cERpcmVjdGl2ZS5mb3JtO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRUeXBlYWhlYWRDb250cm9scygpIHtcclxuICAgIGNvbnN0IHsgbmFtZSB9ID0gdGhpcy5wcm9wO1xyXG4gICAgY29uc3QgZXh0cmFQcm9wTmFtZSA9IGAke0VYVFJBX1BST1BFUlRJRVNfS0VZfS4ke25hbWV9YDtcclxuICAgIGNvbnN0IGtleUNvbnRyb2wgPVxyXG4gICAgICB0aGlzLmZvcm0uZ2V0KGFkZFR5cGVhaGVhZFRleHRTdWZmaXgoZXh0cmFQcm9wTmFtZSkpIHx8XHJcbiAgICAgIHRoaXMuZm9ybS5nZXQoYWRkVHlwZWFoZWFkVGV4dFN1ZmZpeChuYW1lKSk7XHJcbiAgICBjb25zdCB2YWx1ZUNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KGV4dHJhUHJvcE5hbWUpIHx8IHRoaXMuZm9ybS5nZXQobmFtZSk7XHJcbiAgICByZXR1cm4gW2tleUNvbnRyb2wsIHZhbHVlQ29udHJvbF07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEFzdGVyaXNrKCkge1xyXG4gICAgdGhpcy5hc3RlcmlzayA9IHRoaXMudmFsaWRhdG9ycy5zb21lKGlzUmVxdWlyZWQpID8gJyonIDogJyc7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBpZiAodGhpcy5maXJzdCAmJiB0aGlzLmZpZWxkUmVmKSB7XHJcbiAgICAgIHRoaXMuZmllbGRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldENvbXBvbmVudChwcm9wOiBGb3JtUHJvcCk6IHN0cmluZyB7XHJcbiAgICBpZiAocHJvcC50ZW1wbGF0ZSkge1xyXG4gICAgICByZXR1cm4gJ3RlbXBsYXRlJztcclxuICAgIH1cclxuICAgIHN3aXRjaCAocHJvcC50eXBlKSB7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLkJvb2xlYW46XHJcbiAgICAgICAgcmV0dXJuICdjaGVja2JveCc7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLkRhdGU6XHJcbiAgICAgICAgcmV0dXJuICdkYXRlJztcclxuICAgICAgY2FzZSBlUHJvcFR5cGUuRGF0ZVRpbWU6XHJcbiAgICAgICAgcmV0dXJuICdkYXRlVGltZSc7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLkhpZGRlbjpcclxuICAgICAgICByZXR1cm4gJ2hpZGRlbic7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLk11bHRpU2VsZWN0OlxyXG4gICAgICAgIHJldHVybiAnbXVsdGlzZWxlY3QnO1xyXG4gICAgICBjYXNlIGVQcm9wVHlwZS5UZXh0OlxyXG4gICAgICAgIHJldHVybiAndGV4dGFyZWEnO1xyXG4gICAgICBjYXNlIGVQcm9wVHlwZS5UaW1lOlxyXG4gICAgICAgIHJldHVybiAndGltZSc7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLlR5cGVhaGVhZDpcclxuICAgICAgICByZXR1cm4gJ3R5cGVhaGVhZCc7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLlBhc3N3b3JkSW5wdXRHcm91cDpcclxuICAgICAgICByZXR1cm4gJ3Bhc3N3b3JkaW5wdXRncm91cCc7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIHByb3Aub3B0aW9ucyA/ICdzZWxlY3QnIDogJ2lucHV0JztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFR5cGUocHJvcDogRm9ybVByb3ApOiBzdHJpbmcge1xyXG4gICAgc3dpdGNoIChwcm9wLnR5cGUpIHtcclxuICAgICAgY2FzZSBlUHJvcFR5cGUuRGF0ZTpcclxuICAgICAgY2FzZSBlUHJvcFR5cGUuU3RyaW5nOlxyXG4gICAgICAgIHJldHVybiAndGV4dCc7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLkJvb2xlYW46XHJcbiAgICAgICAgcmV0dXJuICdjaGVja2JveCc7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLk51bWJlcjpcclxuICAgICAgICByZXR1cm4gJ251bWJlcic7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLkVtYWlsOlxyXG4gICAgICAgIHJldHVybiAnZW1haWwnO1xyXG4gICAgICBjYXNlIGVQcm9wVHlwZS5QYXNzd29yZDpcclxuICAgICAgICByZXR1cm4gJ3Bhc3N3b3JkJztcclxuICAgICAgY2FzZSBlUHJvcFR5cGUuUGFzc3dvcmRJbnB1dEdyb3VwOlxyXG4gICAgICAgIHJldHVybiAncGFzc3dvcmRpbnB1dGdyb3VwJztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJ2hpZGRlbic7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyh7IHByb3AsIGRhdGEgfTogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgY29uc3QgY3VycmVudFByb3AgPSBwcm9wPy5jdXJyZW50VmFsdWUgYXMgRm9ybVByb3A7XHJcbiAgICBjb25zdCB7IG9wdGlvbnMsIHJlYWRvbmx5LCBkaXNhYmxlZCwgdmFsaWRhdG9ycywgY2xhc3NOYW1lLCB0ZW1wbGF0ZSB9ID0gY3VycmVudFByb3AgfHwge307XHJcbiAgICBpZiAodGVtcGxhdGUpIHtcclxuICAgICAgdGhpcy5pbmplY3RvckZvckN1c3RvbUNvbXBvbmVudCA9IEluamVjdG9yLmNyZWF0ZSh7XHJcbiAgICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IEVYVEVOU0lPTlNfRk9STV9QUk9QLFxyXG4gICAgICAgICAgICB1c2VWYWx1ZTogY3VycmVudFByb3AsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBFWFRFTlNJT05TX0ZPUk1fUFJPUF9EQVRBLFxyXG4gICAgICAgICAgICB1c2VWYWx1ZTogKGRhdGE/LmN1cnJlbnRWYWx1ZSBhcyBQcm9wRGF0YSk/LnJlY29yZCxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7IHByb3ZpZGU6IENvbnRyb2xDb250YWluZXIsIHVzZUV4aXN0aW5nOiBGb3JtR3JvdXBEaXJlY3RpdmUgfSxcclxuICAgICAgICBdLFxyXG4gICAgICAgIHBhcmVudDogdGhpcy5pbmplY3RvcixcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9wdGlvbnMpIHRoaXMub3B0aW9ucyQgPSBvcHRpb25zKHRoaXMuZGF0YSk7XHJcbiAgICBpZiAocmVhZG9ubHkpIHRoaXMucmVhZG9ubHkgPSByZWFkb25seSh0aGlzLmRhdGEpO1xyXG5cclxuICAgIGlmIChkaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmRpc2FibGVkRm4gPSBkaXNhYmxlZDtcclxuICAgIH1cclxuICAgIGlmICh2YWxpZGF0b3JzKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdG9ycyA9IHZhbGlkYXRvcnModGhpcy5kYXRhKTtcclxuICAgICAgdGhpcy5zZXRBc3RlcmlzaygpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNsYXNzTmFtZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuY29udGFpbmVyQ2xhc3NOYW1lID0gY2xhc3NOYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IFtrZXlDb250cm9sLCB2YWx1ZUNvbnRyb2xdID0gdGhpcy5nZXRUeXBlYWhlYWRDb250cm9scygpO1xyXG4gICAgaWYgKGtleUNvbnRyb2wgJiYgdmFsdWVDb250cm9sKVxyXG4gICAgICB0aGlzLnR5cGVhaGVhZE1vZGVsID0geyBrZXk6IGtleUNvbnRyb2wudmFsdWUsIHZhbHVlOiB2YWx1ZUNvbnRyb2wudmFsdWUgfTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzUmVxdWlyZWQodmFsaWRhdG9yOiBWYWxpZGF0b3JGbikge1xyXG4gIHJldHVybiAoXHJcbiAgICB2YWxpZGF0b3IgPT09IFZhbGlkYXRvcnMucmVxdWlyZWQgfHxcclxuICAgIHZhbGlkYXRvciA9PT0gQWJwVmFsaWRhdG9ycy5yZXF1aXJlZCB8fFxyXG4gICAgdmFsaWRhdG9yLm5hbWUgPT09ICdyZXF1aXJlZCdcclxuICApO1xyXG59XHJcbiIsIjxuZy1jb250YWluZXJcclxuICBbbmdTd2l0Y2hdPVwiZ2V0Q29tcG9uZW50KHByb3ApXCJcclxuICAqYWJwUGVybWlzc2lvbj1cInByb3AucGVybWlzc2lvbjsgcnVuQ2hhbmdlRGV0ZWN0aW9uOiBmYWxzZVwiXHJcbj5cclxuICA8bmctdGVtcGxhdGUgbmdTd2l0Y2hDYXNlPVwidGVtcGxhdGVcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwicHJvcC50ZW1wbGF0ZTsgaW5qZWN0b3I6IGluamVjdG9yRm9yQ3VzdG9tQ29tcG9uZW50XCI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8ZGl2IFtuZ0NsYXNzXT1cImNvbnRhaW5lckNsYXNzTmFtZVwiIGNsYXNzPVwibWItM1wiPlxyXG4gICAgPG5nLXRlbXBsYXRlIG5nU3dpdGNoQ2FzZT1cImlucHV0XCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsYWJlbFwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgICNmaWVsZFxyXG4gICAgICAgIFtpZF09XCJwcm9wLmlkXCJcclxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3AubmFtZVwiXHJcbiAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJwcm9wLmF1dG9jb21wbGV0ZVwiXHJcbiAgICAgICAgW3R5cGVdPVwiZ2V0VHlwZShwcm9wKVwiXHJcbiAgICAgICAgW2FicERpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgLz5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIG5nU3dpdGNoQ2FzZT1cImhpZGRlblwiPlxyXG4gICAgICA8aW5wdXQgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wLm5hbWVcIiB0eXBlPVwiaGlkZGVuXCIgLz5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIG5nU3dpdGNoQ2FzZT1cImNoZWNrYm94XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCIgdmFsaWRhdGlvblRhcmdldD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICNmaWVsZFxyXG4gICAgICAgICAgW2lkXT1cInByb3AuaWRcIlxyXG4gICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wLm5hbWVcIlxyXG4gICAgICAgICAgW2FicERpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJsYWJlbFwiXHJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6ICdmb3JtLWNoZWNrLWxhYmVsJyB9XCJcclxuICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBuZ1N3aXRjaENhc2U9XCJzZWxlY3RcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhYmVsXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPHNlbGVjdFxyXG4gICAgICAgICNmaWVsZFxyXG4gICAgICAgIFtpZF09XCJwcm9wLmlkXCJcclxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3AubmFtZVwiXHJcbiAgICAgICAgW2FicERpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tY29udHJvbFwiXHJcbiAgICAgID5cclxuICAgICAgICA8b3B0aW9uXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnMkIHwgYXN5bmM7IHRyYWNrQnk6IHRyYWNrLmJ5KCd2YWx1ZScpXCJcclxuICAgICAgICAgIFtuZ1ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgb3B0aW9uLmtleSB9fVxyXG4gICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICA8L3NlbGVjdD5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIG5nU3dpdGNoQ2FzZT1cIm11bHRpc2VsZWN0XCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsYWJlbFwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxzZWxlY3RcclxuICAgICAgICAjZmllbGRcclxuICAgICAgICBbaWRdPVwicHJvcC5pZFwiXHJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wLm5hbWVcIlxyXG4gICAgICAgIFthYnBEaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgbXVsdGlwbGU9XCJtdWx0aXBsZVwiXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLWNvbnRyb2xcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG9wdGlvblxyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zJCB8IGFzeW5jOyB0cmFja0J5OiB0cmFjay5ieSgndmFsdWUnKVwiXHJcbiAgICAgICAgICBbbmdWYWx1ZV09XCJvcHRpb24udmFsdWVcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IG9wdGlvbi5rZXkgfX1cclxuICAgICAgICA8L29wdGlvbj5cclxuICAgICAgPC9zZWxlY3Q+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBuZ1N3aXRjaENhc2U9XCJ0eXBlYWhlYWRcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhYmVsXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPGRpdiAjdHlwZWFoZWFkIGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIiB2YWxpZGF0aW9uU3R5bGUgdmFsaWRhdGlvblRhcmdldD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICNmaWVsZFxyXG4gICAgICAgICAgW2lkXT1cInByb3AuaWRcIlxyXG4gICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJwcm9wLmF1dG9jb21wbGV0ZVwiXHJcbiAgICAgICAgICBbYWJwRGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgW25nYlR5cGVhaGVhZF09XCJzZWFyY2hcIlxyXG4gICAgICAgICAgW2VkaXRhYmxlXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtpbnB1dEZvcm1hdHRlcl09XCJ0eXBlYWhlYWRGb3JtYXR0ZXJcIlxyXG4gICAgICAgICAgW3Jlc3VsdEZvcm1hdHRlcl09XCJ0eXBlYWhlYWRGb3JtYXR0ZXJcIlxyXG4gICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSB9XCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwidHlwZWFoZWFkTW9kZWxcIlxyXG4gICAgICAgICAgKHNlbGVjdEl0ZW0pPVwic2V0VHlwZWFoZWFkVmFsdWUoJGV2ZW50Lml0ZW0pXCJcclxuICAgICAgICAgIChibHVyKT1cInNldFR5cGVhaGVhZFZhbHVlKHR5cGVhaGVhZE1vZGVsKVwiXHJcbiAgICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJ0eXBlYWhlYWQuY2xhc3NMaXN0LmNvbnRhaW5zKCdpcy1pbnZhbGlkJylcIlxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPGlucHV0IFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcC5uYW1lXCIgdHlwZT1cImhpZGRlblwiIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgbmdTd2l0Y2hDYXNlPVwiZGF0ZVwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibGFiZWxcIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICBbaWRdPVwicHJvcC5pZFwiXHJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wLm5hbWVcIlxyXG4gICAgICAgIChjbGljayk9XCJkYXRlcGlja2VyLm9wZW4oKVwiXHJcbiAgICAgICAgKGtleXVwLnNwYWNlKT1cImRhdGVwaWNrZXIub3BlbigpXCJcclxuICAgICAgICBuZ2JEYXRlcGlja2VyXHJcbiAgICAgICAgI2RhdGVwaWNrZXI9XCJuZ2JEYXRlcGlja2VyXCJcclxuICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAvPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgbmdTd2l0Y2hDYXNlPVwidGltZVwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibGFiZWxcIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICA8bmdiLXRpbWVwaWNrZXIgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wLm5hbWVcIj48L25nYi10aW1lcGlja2VyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgbmdTd2l0Y2hDYXNlPVwiZGF0ZVRpbWVcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhYmVsXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPGFicC1kYXRlLXRpbWUtcGlja2VyIFtwcm9wXT1cInByb3BcIiBbbWVyaWRpYW5dPVwibWVyaWRpYW5cIj48L2FicC1kYXRlLXRpbWUtcGlja2VyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgbmdTd2l0Y2hDYXNlPVwidGV4dGFyZWFcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhYmVsXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPHRleHRhcmVhXHJcbiAgICAgICAgI2ZpZWxkXHJcbiAgICAgICAgW2lkXT1cInByb3AuaWRcIlxyXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcC5uYW1lXCJcclxuICAgICAgICBbYWJwRGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICA+PC90ZXh0YXJlYT5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIG5nU3dpdGNoQ2FzZT1cInBhc3N3b3JkaW5wdXRncm91cFwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibGFiZWxcIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICA8YWJwLXBhc3N3b3JkXHJcbiAgICAgICAgKmFicFJlcGxhY2VhYmxlVGVtcGxhdGU9XCJ7XHJcbiAgICAgICAgICBjb21wb25lbnRLZXk6IHBhc3N3b3JkS2V5LFxyXG4gICAgICAgICAgaW5wdXRzOiB7XHJcbiAgICAgICAgICAgIGlucHV0SWQ6IHsgdmFsdWU6IHByb3AuaWQgfSxcclxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lOiB7IHZhbHVlOiBwcm9wLm5hbWUgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cIlxyXG4gICAgICAgIFtpbnB1dElkXT1cInByb3AuaWRcIlxyXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcC5uYW1lXCJcclxuICAgICAgPjwvYWJwLXBhc3N3b3JkPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48bmctdGVtcGxhdGUgI2xhYmVsIGxldC1jbGFzc2VzPlxyXG4gIDxsYWJlbCBbaHRtbEZvcl09XCJwcm9wLmlkXCIgW25nQ2xhc3NdPVwiY2xhc3NlcyB8fCAnZm9ybS1sYWJlbCdcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9wLmRpc3BsYXlUZXh0UmVzb2x2ZXI7IGVsc2UgZGlzcGxheU5hbWVUZW1wbGF0ZVwiPlxyXG4gICAgICB7eyBwcm9wLmRpc3BsYXlUZXh0UmVzb2x2ZXIoZGF0YSkgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLXRlbXBsYXRlICNkaXNwbGF5TmFtZVRlbXBsYXRlPiB7eyBwcm9wLmRpc3BsYXlOYW1lIHwgYWJwTG9jYWxpemF0aW9uIH19PC9uZy10ZW1wbGF0ZT5cclxuICAgIHt7IGFzdGVyaXNrIH19XHJcbiAgPC9sYWJlbD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
@@ -44,15 +44,15 @@ export class ExtensibleFormComponent {
44
44
  return (this.form.controls.extraProperties || { controls: {} });
45
45
  }
46
46
  }
47
- ExtensibleFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: ExtensibleFormComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TrackByService }, { token: i2.ControlContainer }, { token: i3.ExtensionsService }, { token: EXTENSIONS_IDENTIFIER }], target: i0.ɵɵFactoryTarget.Component });
48
- ExtensibleFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.3", type: ExtensibleFormComponent, selector: "abp-extensible-form", inputs: { selectedRecord: "selectedRecord" }, viewQueries: [{ propertyName: "formProps", predicate: ExtensibleFormPropComponent, descendants: true }], exportAs: ["abpExtensibleForm"], ngImport: i0, template: "<ng-container *ngIf=\"form\">\r\n\r\n <ng-container *ngFor=\"let groupedProp of groupedPropList.items\">\r\n <ng-container *abpPropData=\"let data; fromList: groupedProp.formPropList; withRecord: record\">\r\n\r\n <div *ngIf=\"groupedProp.group?.className; else withoutClassName\"\r\n [class]=\"groupedProp.group?.className\" [attr.data-name]=\"groupedProp.group?.className\">\r\n <ng-container [ngTemplateOutlet]=\"propListTemplate\" [ngTemplateOutletContext]=\"{groupedProp:groupedProp,data:data}\">\r\n </ng-container>\r\n </div>\r\n\r\n <ng-template #withoutClassName>\r\n <ng-container [ngTemplateOutlet]=\"propListTemplate\" [ngTemplateOutletContext]=\"{groupedProp:groupedProp,data:data}\">\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n </ng-container>\r\n</ng-container>\r\n\r\n\r\n<ng-template let-groupedProp=\"groupedProp\" let-data=\"data\" #propListTemplate>\r\n <ng-container *ngFor=\"let prop of groupedProp.formPropList; let first = first; trackBy: track.by('name')\">\r\n <ng-container *ngIf=\"prop.visible(data)\">\r\n <ng-container\r\n [formGroupName]=\"extraPropertiesKey\"\r\n *ngIf=\"extraProperties.controls[prop.name]; else tempDefault\"\r\n >\r\n <abp-extensible-form-prop [prop]=\"prop\" [data]=\"data\"\r\n [class]=\"prop.className\">\r\n </abp-extensible-form-prop>\r\n </ng-container>\r\n\r\n <ng-template #tempDefault>\r\n <abp-extensible-form-prop\r\n [class]=\"prop.className\"\r\n *ngIf=\"form.get(prop.name)\"\r\n [prop]=\"prop\"\r\n [data]=\"data\"\r\n [first]=\"first\"\r\n ></abp-extensible-form-prop>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i5.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "component", type: i6.ExtensibleFormPropComponent, selector: "abp-extensible-form-prop", inputs: ["data", "prop", "first"] }, { kind: "directive", type: i7.PropDataDirective, selector: "[abpPropData]", inputs: ["abpPropDataFromList", "abpPropDataWithRecord", "abpPropDataAtIndex"], exportAs: ["abpPropData"] }], viewProviders: [
47
+ ExtensibleFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ExtensibleFormComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TrackByService }, { token: i2.ControlContainer }, { token: i3.ExtensionsService }, { token: EXTENSIONS_IDENTIFIER }], target: i0.ɵɵFactoryTarget.Component });
48
+ ExtensibleFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ExtensibleFormComponent, selector: "abp-extensible-form", inputs: { selectedRecord: "selectedRecord" }, viewQueries: [{ propertyName: "formProps", predicate: ExtensibleFormPropComponent, descendants: true }], exportAs: ["abpExtensibleForm"], ngImport: i0, template: "<ng-container *ngIf=\"form\">\r\n\r\n <ng-container *ngFor=\"let groupedProp of groupedPropList.items\">\r\n <ng-container *abpPropData=\"let data; fromList: groupedProp.formPropList; withRecord: record\">\r\n\r\n <div *ngIf=\"groupedProp.group?.className; else withoutClassName\"\r\n [class]=\"groupedProp.group?.className\" [attr.data-name]=\"groupedProp.group?.className\">\r\n <ng-container [ngTemplateOutlet]=\"propListTemplate\" [ngTemplateOutletContext]=\"{groupedProp:groupedProp,data:data}\">\r\n </ng-container>\r\n </div>\r\n\r\n <ng-template #withoutClassName>\r\n <ng-container [ngTemplateOutlet]=\"propListTemplate\" [ngTemplateOutletContext]=\"{groupedProp:groupedProp,data:data}\">\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n </ng-container>\r\n</ng-container>\r\n\r\n\r\n<ng-template let-groupedProp=\"groupedProp\" let-data=\"data\" #propListTemplate>\r\n <ng-container *ngFor=\"let prop of groupedProp.formPropList; let first = first; trackBy: track.by('name')\">\r\n <ng-container *ngIf=\"prop.visible(data)\">\r\n <ng-container\r\n [formGroupName]=\"extraPropertiesKey\"\r\n *ngIf=\"extraProperties.controls[prop.name]; else tempDefault\"\r\n >\r\n <abp-extensible-form-prop [prop]=\"prop\" [data]=\"data\"\r\n [class]=\"prop.className\">\r\n </abp-extensible-form-prop>\r\n </ng-container>\r\n\r\n <ng-template #tempDefault>\r\n <abp-extensible-form-prop\r\n [class]=\"prop.className\"\r\n *ngIf=\"form.get(prop.name)\"\r\n [prop]=\"prop\"\r\n [data]=\"data\"\r\n [first]=\"first\"\r\n ></abp-extensible-form-prop>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i5.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "component", type: i6.ExtensibleFormPropComponent, selector: "abp-extensible-form-prop", inputs: ["data", "prop", "first"] }, { kind: "directive", type: i7.PropDataDirective, selector: "[abpPropData]", inputs: ["abpPropDataFromList", "abpPropDataWithRecord", "abpPropDataAtIndex"], exportAs: ["abpPropData"] }], viewProviders: [
49
49
  {
50
50
  provide: ControlContainer,
51
51
  useFactory: selfFactory,
52
52
  deps: [[new Optional(), new SkipSelf(), ControlContainer]],
53
53
  },
54
54
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush });
55
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: ExtensibleFormComponent, decorators: [{
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ExtensibleFormComponent, decorators: [{
56
56
  type: Component,
57
57
  args: [{ exportAs: 'abpExtensibleForm', selector: 'abp-extensible-form', changeDetection: ChangeDetectionStrategy.OnPush, viewProviders: [
58
58
  {
@@ -109,9 +109,9 @@ export class ExtensibleTableComponent {
109
109
  });
110
110
  }
111
111
  }
112
- ExtensibleTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: ExtensibleTableComponent, deps: [{ token: LOCALE_ID }, { token: i1.ConfigStateService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
113
- ExtensibleTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.3", type: ExtensibleTableComponent, selector: "abp-extensible-table", inputs: { actionsText: "actionsText", data: "data", list: "list", recordsTotal: "recordsTotal", actionsColumnWidth: "actionsColumnWidth", actionsTemplate: "actionsTemplate" }, outputs: { tableActivate: "tableActivate" }, exportAs: ["abpExtensibleTable"], usesOnChanges: true, ngImport: i0, template: "<ngx-datatable\r\n default\r\n [rows]=\"data\"\r\n [count]=\"recordsTotal\"\r\n [list]=\"list\"\r\n (activate)=\"tableActivate.emit($event)\"\r\n>\r\n <ngx-datatable-column\r\n *ngIf=\"actionsTemplate || (actionList.length && hasAtLeastOnePermittedAction)\"\r\n [name]=\"actionsText | abpLocalization\"\r\n [maxWidth]=\"columnWidths[0]\"\r\n [width]=\"columnWidths[0]\"\r\n [sortable]=\"false\"\r\n >\r\n <ng-template let-row=\"row\" let-i=\"rowIndex\" ngx-datatable-cell-template>\r\n <ng-container\r\n *ngTemplateOutlet=\"actionsTemplate || gridActions; context: { $implicit: row, index: i }\"\r\n ></ng-container>\r\n <ng-template #gridActions>\r\n <abp-grid-actions [index]=\"i\" [record]=\"row\" text=\"AbpUi::Actions\"></abp-grid-actions>\r\n </ng-template>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n\r\n <ng-container *ngFor=\"let prop of propList; let i = index; trackBy: trackByFn\">\r\n <ngx-datatable-column\r\n [width]=\"columnWidths[i + 1] || 200\"\r\n [name]=\"prop.displayName | abpLocalization\"\r\n [prop]=\"prop.name\"\r\n [sortable]=\"prop.sortable\"\r\n >\r\n <ng-template let-row=\"row\" let-i=\"index\" ngx-datatable-cell-template>\r\n <ng-container *abpPermission=\"prop.permission; runChangeDetection: false\">\r\n <ng-container *ngIf=\"row['_' + prop.name]?.visible\">\r\n <div\r\n *ngIf=\"!row['_' + prop.name].component; else component\"\r\n [innerHTML]=\"row['_' + prop.name]?.value | async\"\r\n (click)=\"\r\n prop.action && prop.action({ getInjected: getInjected, record: row, index: i })\r\n \"\r\n [ngClass]=\"entityPropTypeClasses[prop.type]\"\r\n [class.pointer]=\"prop.action\"\r\n ></div>\r\n </ng-container>\r\n <ng-template #component>\r\n <ng-container\r\n *ngComponentOutlet=\"\r\n row['_' + prop.name].component;\r\n injector: row['_' + prop.name].injector\r\n \"\r\n ></ng-container>\r\n </ng-template>\r\n </ng-container>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n </ng-container>\r\n</ngx-datatable>\r\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { kind: "component", type: i3.DatatableComponent, selector: "ngx-datatable", inputs: ["targetMarkerTemplate", "rows", "groupRowsBy", "groupedRows", "columns", "selected", "scrollbarV", "scrollbarH", "rowHeight", "columnMode", "headerHeight", "footerHeight", "externalPaging", "externalSorting", "limit", "count", "offset", "loadingIndicator", "selectionType", "reorderable", "swapColumns", "sortType", "sorts", "cssClasses", "messages", "rowClass", "selectCheck", "displayCheck", "groupExpansionDefault", "trackByProp", "selectAllRowsOnPage", "virtualization", "treeFromRelation", "treeToRelation", "summaryRow", "summaryHeight", "summaryPosition", "rowIdentity"], outputs: ["scroll", "activate", "select", "sort", "page", "reorder", "resize", "tableContextmenu", "treeAction"] }, { kind: "directive", type: i3.DataTableColumnDirective, selector: "ngx-datatable-column", inputs: ["name", "prop", "frozenLeft", "frozenRight", "flexGrow", "resizeable", "comparator", "pipe", "sortable", "draggable", "canAutoResize", "minWidth", "width", "maxWidth", "checkboxable", "headerCheckboxable", "headerClass", "cellClass", "isTreeColumn", "treeLevelIndent", "summaryFunc", "summaryTemplate", "cellTemplate", "headerTemplate", "treeToggleTemplate"] }, { kind: "directive", type: i3.DataTableColumnCellDirective, selector: "[ngx-datatable-cell-template]" }, { kind: "directive", type: i4.NgxDatatableDefaultDirective, selector: "ngx-datatable[default]", inputs: ["class"], exportAs: ["ngxDatatableDefault"] }, { kind: "directive", type: i4.NgxDatatableListDirective, selector: "ngx-datatable[list]", inputs: ["list"], exportAs: ["ngxDatatableList"] }, { kind: "component", type: i5.GridActionsComponent, selector: "abp-grid-actions", inputs: ["icon", "index", "text"], exportAs: ["abpGridActions"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
114
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: ExtensibleTableComponent, decorators: [{
112
+ ExtensibleTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ExtensibleTableComponent, deps: [{ token: LOCALE_ID }, { token: i1.ConfigStateService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
113
+ ExtensibleTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ExtensibleTableComponent, selector: "abp-extensible-table", inputs: { actionsText: "actionsText", data: "data", list: "list", recordsTotal: "recordsTotal", actionsColumnWidth: "actionsColumnWidth", actionsTemplate: "actionsTemplate" }, outputs: { tableActivate: "tableActivate" }, exportAs: ["abpExtensibleTable"], usesOnChanges: true, ngImport: i0, template: "<ngx-datatable\r\n default\r\n [rows]=\"data\"\r\n [count]=\"recordsTotal\"\r\n [list]=\"list\"\r\n (activate)=\"tableActivate.emit($event)\"\r\n>\r\n <ngx-datatable-column\r\n *ngIf=\"actionsTemplate || (actionList.length && hasAtLeastOnePermittedAction)\"\r\n [name]=\"actionsText | abpLocalization\"\r\n [maxWidth]=\"columnWidths[0]\"\r\n [width]=\"columnWidths[0]\"\r\n [sortable]=\"false\"\r\n >\r\n <ng-template let-row=\"row\" let-i=\"rowIndex\" ngx-datatable-cell-template>\r\n <ng-container\r\n *ngTemplateOutlet=\"actionsTemplate || gridActions; context: { $implicit: row, index: i }\"\r\n ></ng-container>\r\n <ng-template #gridActions>\r\n <abp-grid-actions [index]=\"i\" [record]=\"row\" text=\"AbpUi::Actions\"></abp-grid-actions>\r\n </ng-template>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n\r\n <ng-container *ngFor=\"let prop of propList; let i = index; trackBy: trackByFn\">\r\n <ngx-datatable-column\r\n [width]=\"columnWidths[i + 1] || 200\"\r\n [name]=\"prop.displayName | abpLocalization\"\r\n [prop]=\"prop.name\"\r\n [sortable]=\"prop.sortable\"\r\n >\r\n <ng-template let-row=\"row\" let-i=\"index\" ngx-datatable-cell-template>\r\n <ng-container *abpPermission=\"prop.permission; runChangeDetection: false\">\r\n <ng-container *ngIf=\"row['_' + prop.name]?.visible\">\r\n <div\r\n *ngIf=\"!row['_' + prop.name].component; else component\"\r\n [innerHTML]=\"row['_' + prop.name]?.value | async\"\r\n (click)=\"\r\n prop.action && prop.action({ getInjected: getInjected, record: row, index: i })\r\n \"\r\n [ngClass]=\"entityPropTypeClasses[prop.type]\"\r\n [class.pointer]=\"prop.action\"\r\n ></div>\r\n </ng-container>\r\n <ng-template #component>\r\n <ng-container\r\n *ngComponentOutlet=\"\r\n row['_' + prop.name].component;\r\n injector: row['_' + prop.name].injector\r\n \"\r\n ></ng-container>\r\n </ng-template>\r\n </ng-container>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n </ng-container>\r\n</ngx-datatable>\r\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { kind: "component", type: i3.DatatableComponent, selector: "ngx-datatable", inputs: ["targetMarkerTemplate", "rows", "groupRowsBy", "groupedRows", "columns", "selected", "scrollbarV", "scrollbarH", "rowHeight", "columnMode", "headerHeight", "footerHeight", "externalPaging", "externalSorting", "limit", "count", "offset", "loadingIndicator", "selectionType", "reorderable", "swapColumns", "sortType", "sorts", "cssClasses", "messages", "rowClass", "selectCheck", "displayCheck", "groupExpansionDefault", "trackByProp", "selectAllRowsOnPage", "virtualization", "treeFromRelation", "treeToRelation", "summaryRow", "summaryHeight", "summaryPosition", "rowIdentity"], outputs: ["scroll", "activate", "select", "sort", "page", "reorder", "resize", "tableContextmenu", "treeAction"] }, { kind: "directive", type: i3.DataTableColumnDirective, selector: "ngx-datatable-column", inputs: ["name", "prop", "frozenLeft", "frozenRight", "flexGrow", "resizeable", "comparator", "pipe", "sortable", "draggable", "canAutoResize", "minWidth", "width", "maxWidth", "checkboxable", "headerCheckboxable", "headerClass", "cellClass", "isTreeColumn", "treeLevelIndent", "summaryFunc", "summaryTemplate", "cellTemplate", "headerTemplate", "treeToggleTemplate"] }, { kind: "directive", type: i3.DataTableColumnCellDirective, selector: "[ngx-datatable-cell-template]" }, { kind: "directive", type: i4.NgxDatatableDefaultDirective, selector: "ngx-datatable[default]", inputs: ["class"], exportAs: ["ngxDatatableDefault"] }, { kind: "directive", type: i4.NgxDatatableListDirective, selector: "ngx-datatable[list]", inputs: ["list"], exportAs: ["ngxDatatableList"] }, { kind: "component", type: i5.GridActionsComponent, selector: "abp-grid-actions", inputs: ["icon", "index", "text"], exportAs: ["abpGridActions"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ExtensibleTableComponent, decorators: [{
115
115
  type: Component,
116
116
  args: [{ exportAs: 'abpExtensibleTable', selector: 'abp-extensible-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ngx-datatable\r\n default\r\n [rows]=\"data\"\r\n [count]=\"recordsTotal\"\r\n [list]=\"list\"\r\n (activate)=\"tableActivate.emit($event)\"\r\n>\r\n <ngx-datatable-column\r\n *ngIf=\"actionsTemplate || (actionList.length && hasAtLeastOnePermittedAction)\"\r\n [name]=\"actionsText | abpLocalization\"\r\n [maxWidth]=\"columnWidths[0]\"\r\n [width]=\"columnWidths[0]\"\r\n [sortable]=\"false\"\r\n >\r\n <ng-template let-row=\"row\" let-i=\"rowIndex\" ngx-datatable-cell-template>\r\n <ng-container\r\n *ngTemplateOutlet=\"actionsTemplate || gridActions; context: { $implicit: row, index: i }\"\r\n ></ng-container>\r\n <ng-template #gridActions>\r\n <abp-grid-actions [index]=\"i\" [record]=\"row\" text=\"AbpUi::Actions\"></abp-grid-actions>\r\n </ng-template>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n\r\n <ng-container *ngFor=\"let prop of propList; let i = index; trackBy: trackByFn\">\r\n <ngx-datatable-column\r\n [width]=\"columnWidths[i + 1] || 200\"\r\n [name]=\"prop.displayName | abpLocalization\"\r\n [prop]=\"prop.name\"\r\n [sortable]=\"prop.sortable\"\r\n >\r\n <ng-template let-row=\"row\" let-i=\"index\" ngx-datatable-cell-template>\r\n <ng-container *abpPermission=\"prop.permission; runChangeDetection: false\">\r\n <ng-container *ngIf=\"row['_' + prop.name]?.visible\">\r\n <div\r\n *ngIf=\"!row['_' + prop.name].component; else component\"\r\n [innerHTML]=\"row['_' + prop.name]?.value | async\"\r\n (click)=\"\r\n prop.action && prop.action({ getInjected: getInjected, record: row, index: i })\r\n \"\r\n [ngClass]=\"entityPropTypeClasses[prop.type]\"\r\n [class.pointer]=\"prop.action\"\r\n ></div>\r\n </ng-container>\r\n <ng-template #component>\r\n <ng-container\r\n *ngComponentOutlet=\"\r\n row['_' + prop.name].component;\r\n injector: row['_' + prop.name].injector\r\n \"\r\n ></ng-container>\r\n </ng-template>\r\n </ng-container>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n </ng-container>\r\n</ngx-datatable>\r\n" }]
117
117
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
@@ -14,14 +14,14 @@ export class GridActionsComponent extends AbstractActionsComponent {
14
14
  this.trackByFn = (_, item) => item.text;
15
15
  }
16
16
  }
17
- GridActionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: GridActionsComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
18
- GridActionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.3", type: GridActionsComponent, selector: "abp-grid-actions", inputs: { icon: "icon", index: "index", text: "text" }, providers: [
17
+ GridActionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: GridActionsComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
18
+ GridActionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: GridActionsComponent, selector: "abp-grid-actions", inputs: { icon: "icon", index: "index", text: "text" }, providers: [
19
19
  {
20
20
  provide: EXTENSIONS_ACTION_TYPE,
21
21
  useValue: 'entityActions',
22
22
  },
23
23
  ], exportAs: ["abpGridActions"], usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"actionList.length > 1\" ngbDropdown container=\"body\" class=\"d-inline-block\">\r\n <button\r\n class=\"btn btn-primary btn-sm dropdown-toggle\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n ngbDropdownToggle\r\n >\r\n <i [ngClass]=\"icon\" [class.me-1]=\"icon\"></i>{{ text | abpLocalization }}\r\n </button>\r\n <div ngbDropdownMenu>\r\n <ng-container\r\n *ngFor=\"let action of actionList; trackBy: trackByFn\"\r\n [ngTemplateOutlet]=\"dropDownBtnItemTmp\"\r\n [ngTemplateOutletContext]=\"{ $implicit: action }\"\r\n >\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<ng-container\r\n *ngIf=\"actionList.length === 1\"\r\n [ngTemplateOutlet]=\"btnTmp\"\r\n [ngTemplateOutletContext]=\"{ $implicit: actionList.get(0).value }\"\r\n></ng-container>\r\n\r\n<ng-template #dropDownBtnItemTmp let-action>\r\n <ng-container *ngIf=\"action.visible(data)\">\r\n <button\r\n ngbDropdownItem\r\n *abpPermission=\"action.permission; runChangeDetection: false\"\r\n (click)=\"action.action(data)\"\r\n type=\"button\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"buttonContentTmp; context: { $implicit: action }\"\r\n ></ng-container>\r\n </button>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #buttonContentTmp let-action>\r\n <i [ngClass]=\"action.icon\" [class.me-1]=\"action.icon\"></i>\r\n <span *ngIf=\"action.icon; else ellipsis\">{{ action.text | abpLocalization }}</span>\r\n <ng-template #ellipsis>\r\n <div abpEllipsis>{{ action.text | abpLocalization }}</div>\r\n </ng-template>\r\n</ng-template>\r\n\r\n<ng-template #btnTmp let-action>\r\n <ng-container *ngIf=\"action.visible(data)\">\r\n <button\r\n *abpPermission=\"action.permission; runChangeDetection: false\"\r\n (click)=\"action.action(data)\"\r\n type=\"button\"\r\n class=\"btn btn-primary text-center\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"buttonContentTmp; context: { $implicit: action }\"\r\n ></ng-container>\r\n </button>\r\n </ng-container>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { kind: "directive", type: i3.EllipsisDirective, selector: "[abpEllipsis]", inputs: ["abpEllipsis", "title", "abpEllipsisEnabled"] }, { kind: "directive", type: i4.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i4.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i4.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i4.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { kind: "pipe", type: i2.LocalizationPipe, name: "abpLocalization" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: GridActionsComponent, decorators: [{
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: GridActionsComponent, decorators: [{
25
25
  type: Component,
26
26
  args: [{ exportAs: 'abpGridActions', selector: 'abp-grid-actions', providers: [
27
27
  {
@@ -14,14 +14,14 @@ export class PageToolbarComponent extends AbstractActionsComponent {
14
14
  this.trackByFn = (_, item) => item.action || item.component;
15
15
  }
16
16
  }
17
- PageToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: PageToolbarComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
18
- PageToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.3", type: PageToolbarComponent, selector: "abp-page-toolbar", providers: [
17
+ PageToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PageToolbarComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
18
+ PageToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: PageToolbarComponent, selector: "abp-page-toolbar", providers: [
19
19
  {
20
20
  provide: EXTENSIONS_ACTION_TYPE,
21
21
  useValue: 'toolbarActions',
22
22
  },
23
23
  ], exportAs: ["abpPageToolbar"], usesInheritance: true, ngImport: i0, template: "<div class=\"row justify-content-end mx-0 gap-2\" id=\"AbpContentToolbar\">\r\n <div\r\n class=\"col-auto px-0 pt-0 pt-md-2\"\r\n [class.pe-0]=\"last\"\r\n *ngFor=\"let action of actionList; trackBy: trackByFn; let last = last\"\r\n >\r\n <ng-container *ngIf=\"action.visible(data)\">\r\n <ng-container *abpPermission=\"action.permission;runChangeDetection: false\">\r\n <ng-container *ngIf=\"action.component as component; else button\">\r\n <ng-container\r\n *ngComponentOutlet=\"component; injector: record | createInjector: action:this\"\r\n ></ng-container>\r\n </ng-container>\r\n\r\n <ng-template #button>\r\n <button\r\n (click)=\"action.action(data)\"\r\n type=\"button\"\r\n [ngClass]=\"action.btnClass ? action.btnClass : defaultBtnClass\"\r\n class=\"d-inline-flex align-items-center gap-1\"\r\n >\r\n <i [ngClass]=\"action.icon\" [class.me-1]=\"action.icon\"></i>\r\n {{ action.text | abpLocalization }}\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { kind: "pipe", type: i2.LocalizationPipe, name: "abpLocalization" }, { kind: "pipe", type: i3.CreateInjectorPipe, name: "createInjector" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: PageToolbarComponent, decorators: [{
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PageToolbarComponent, decorators: [{
25
25
  type: Component,
26
26
  args: [{ exportAs: 'abpPageToolbar', selector: 'abp-page-toolbar', providers: [
27
27
  {
@@ -14,9 +14,9 @@ export class DisabledDirective {
14
14
  }
15
15
  }
16
16
  }
17
- DisabledDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: DisabledDirective, deps: [{ token: i1.NgControl, host: true }], target: i0.ɵɵFactoryTarget.Directive });
18
- DisabledDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.3", type: DisabledDirective, selector: "[abpDisabled]", inputs: { abpDisabled: "abpDisabled" }, usesOnChanges: true, ngImport: i0 });
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: DisabledDirective, decorators: [{
17
+ DisabledDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DisabledDirective, deps: [{ token: i1.NgControl, host: true }], target: i0.ɵɵFactoryTarget.Directive });
18
+ DisabledDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: DisabledDirective, selector: "[abpDisabled]", inputs: { abpDisabled: "abpDisabled" }, usesOnChanges: true, ngImport: i0 });
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DisabledDirective, decorators: [{
20
20
  type: Directive,
21
21
  args: [{
22
22
  selector: '[abpDisabled]',
@@ -20,9 +20,9 @@ export class PropDataDirective extends PropData {
20
20
  this.vcRef.clear();
21
21
  }
22
22
  }
23
- PropDataDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: PropDataDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
24
- PropDataDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.3", type: PropDataDirective, selector: "[abpPropData]", inputs: { propList: ["abpPropDataFromList", "propList"], record: ["abpPropDataWithRecord", "record"], index: ["abpPropDataAtIndex", "index"] }, exportAs: ["abpPropData"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: PropDataDirective, decorators: [{
23
+ PropDataDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PropDataDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
24
+ PropDataDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: PropDataDirective, selector: "[abpPropData]", inputs: { propList: ["abpPropDataFromList", "propList"], record: ["abpPropDataWithRecord", "record"], index: ["abpPropDataAtIndex", "index"] }, exportAs: ["abpPropData"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PropDataDirective, decorators: [{
26
26
  type: Directive,
27
27
  args: [{
28
28
  exportAs: 'abpPropData',
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLXNoYXJlZC9leHRlbnNpb25zL3NyYy9saWIvZW51bXMvY29tcG9uZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGVudW0gZVRoZW1lU2hhcmVkQ29tcG9uZW50cyB7XHJcbiAgUGFzc3dvcmRDb21wb25lbnQgPSAnVGhlbWVTaGFyZWQuRXh0ZW5zaW9ucy5QYXNzd29yZENvbXBvbmVudCcsXHJcbn1cclxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcHMuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLXNoYXJlZC9leHRlbnNpb25zL3NyYy9saWIvZW51bXMvcHJvcHMuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGVudW0gZVByb3BUeXBlIHtcclxuICBCb29sZWFuID0gJ2Jvb2xlYW4nLFxyXG4gIERhdGUgPSAnZGF0ZScsXHJcbiAgRGF0ZVRpbWUgPSAnZGF0ZXRpbWUnLFxyXG4gIEVtYWlsID0gJ2VtYWlsJyxcclxuICBFbnVtID0gJ2VudW0nLFxyXG4gIEhpZGRlbiA9ICdoaWRkZW4nLFxyXG4gIE11bHRpU2VsZWN0ID0gJ211bHRpc2VsZWN0JyxcclxuICBOdW1iZXIgPSAnbnVtYmVyJyxcclxuICBQYXNzd29yZCA9ICdwYXNzd29yZCcsXHJcbiAgU3RyaW5nID0gJ3N0cmluZycsXHJcbiAgVGV4dCA9ICd0ZXh0JyxcclxuICBUaW1lID0gJ3RpbWUnLFxyXG4gIFR5cGVhaGVhZCA9ICd0eXBlYWhlYWQnLFxyXG59XHJcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcHMuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLXNoYXJlZC9leHRlbnNpb25zL3NyYy9saWIvZW51bXMvcHJvcHMuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGVudW0gZVByb3BUeXBlIHtcclxuICBCb29sZWFuID0gJ2Jvb2xlYW4nLFxyXG4gIERhdGUgPSAnZGF0ZScsXHJcbiAgRGF0ZVRpbWUgPSAnZGF0ZXRpbWUnLFxyXG4gIEVtYWlsID0gJ2VtYWlsJyxcclxuICBFbnVtID0gJ2VudW0nLFxyXG4gIEhpZGRlbiA9ICdoaWRkZW4nLFxyXG4gIE11bHRpU2VsZWN0ID0gJ211bHRpc2VsZWN0JyxcclxuICBOdW1iZXIgPSAnbnVtYmVyJyxcclxuICBQYXNzd29yZCA9ICdwYXNzd29yZCcsXHJcbiAgUGFzc3dvcmRJbnB1dEdyb3VwID0gJ3Bhc3N3b3JkaW5wdXRncm91cCcsXHJcbiAgU3RyaW5nID0gJ3N0cmluZycsXHJcbiAgVGV4dCA9ICd0ZXh0JyxcclxuICBUaW1lID0gJ3RpbWUnLFxyXG4gIFR5cGVhaGVhZCA9ICd0eXBlYWhlYWQnLFxyXG59XHJcbiJdfQ==
@@ -25,9 +25,9 @@ export class CreateInjectorPipe {
25
25
  return { get };
26
26
  }
27
27
  }
28
- CreateInjectorPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: CreateInjectorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
29
- CreateInjectorPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.3", ngImport: i0, type: CreateInjectorPipe, name: "createInjector" });
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: CreateInjectorPipe, decorators: [{
28
+ CreateInjectorPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CreateInjectorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
29
+ CreateInjectorPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: CreateInjectorPipe, name: "createInjector" });
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CreateInjectorPipe, decorators: [{
31
31
  type: Pipe,
32
32
  args: [{
33
33
  name: 'createInjector',