@abp/ng.theme.shared 6.0.0-rc.3 → 6.0.0-rc.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) 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 +8 -8
  6. package/esm2020/extensions/lib/components/extensible-form/extensible-form-prop.component.mjs +56 -29
  7. package/esm2020/extensions/lib/components/extensible-form/extensible-form.component.mjs +19 -10
  8. package/esm2020/extensions/lib/components/extensible-table/extensible-table.component.mjs +21 -18
  9. package/esm2020/extensions/lib/components/grid-actions/grid-actions.component.mjs +7 -7
  10. package/esm2020/extensions/lib/components/page-toolbar/page-toolbar.component.mjs +4 -4
  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/models/form-props.mjs +24 -2
  14. package/esm2020/extensions/lib/models/props.mjs +4 -2
  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/tokens/extensible-form-view-provider.token.mjs +3 -0
  18. package/esm2020/extensions/lib/tokens/extensions.token.mjs +3 -1
  19. package/esm2020/extensions/lib/ui-extensions.module.mjs +15 -17
  20. package/esm2020/extensions/lib/utils/form-props.util.mjs +8 -8
  21. package/esm2020/extensions/lib/utils/state.util.mjs +5 -5
  22. package/esm2020/extensions/lib/utils/typeahead.util.mjs +2 -2
  23. package/esm2020/extensions/public-api.mjs +2 -1
  24. package/esm2020/lib/components/breadcrumb/breadcrumb.component.mjs +5 -5
  25. package/esm2020/lib/components/breadcrumb-items/breadcrumb-items.component.mjs +3 -3
  26. package/esm2020/lib/components/button/button.component.mjs +4 -4
  27. package/esm2020/lib/components/confirmation/confirmation.component.mjs +4 -4
  28. package/esm2020/lib/components/http-error-wrapper/http-error-wrapper.component.mjs +3 -3
  29. package/esm2020/lib/components/loader-bar/loader-bar.component.mjs +4 -4
  30. package/esm2020/lib/components/loading/loading.component.mjs +6 -34
  31. package/esm2020/lib/components/modal/modal-close.directive.mjs +3 -3
  32. package/esm2020/lib/components/modal/modal-ref.service.mjs +3 -3
  33. package/esm2020/lib/components/modal/modal.component.mjs +5 -5
  34. package/esm2020/lib/components/toast/toast.component.mjs +4 -4
  35. package/esm2020/lib/components/toast-container/toast-container.component.mjs +6 -6
  36. package/esm2020/lib/constants/styles.mjs +6 -1
  37. package/esm2020/lib/constants/validation.mjs +2 -1
  38. package/esm2020/lib/directives/ellipsis.directive.mjs +7 -7
  39. package/esm2020/lib/directives/loading.directive.mjs +3 -3
  40. package/esm2020/lib/directives/ngx-datatable-default.directive.mjs +3 -3
  41. package/esm2020/lib/directives/ngx-datatable-list.directive.mjs +3 -3
  42. package/esm2020/lib/handlers/document-dir.handler.mjs +3 -3
  43. package/esm2020/lib/handlers/error.handler.mjs +3 -3
  44. package/esm2020/lib/providers/route.provider.mjs +2 -2
  45. package/esm2020/lib/services/confirmation.service.mjs +5 -5
  46. package/esm2020/lib/services/nav-items.service.mjs +3 -3
  47. package/esm2020/lib/services/page-alert.service.mjs +3 -3
  48. package/esm2020/lib/services/toaster.service.mjs +3 -3
  49. package/esm2020/lib/services/user-menu.service.mjs +3 -3
  50. package/esm2020/lib/theme-shared.module.mjs +13 -15
  51. package/esm2020/lib/utils/date-parser-formatter.mjs +3 -3
  52. package/esm2020/testing/lib/theme-shared-testing.module.mjs +5 -5
  53. package/extensions/{abp-ng.theme.shared-extensions.d.ts → index.d.ts} +0 -0
  54. package/extensions/lib/components/abstract-actions/abstract-actions.component.d.ts +1 -1
  55. package/extensions/lib/components/date-time-picker/date-time-picker.component.d.ts +1 -1
  56. package/extensions/lib/components/extensible-form/extensible-form-prop.component.d.ts +9 -6
  57. package/extensions/lib/components/extensible-form/extensible-form.component.d.ts +7 -6
  58. package/extensions/lib/components/extensible-table/extensible-table.component.d.ts +1 -1
  59. package/extensions/lib/components/grid-actions/grid-actions.component.d.ts +1 -1
  60. package/extensions/lib/components/page-toolbar/page-toolbar.component.d.ts +1 -1
  61. package/extensions/lib/directives/disabled.directive.d.ts +1 -1
  62. package/extensions/lib/directives/prop-data.directive.d.ts +1 -1
  63. package/extensions/lib/models/form-props.d.ts +15 -0
  64. package/extensions/lib/models/props.d.ts +3 -1
  65. package/extensions/lib/pipes/create-injector.pipe.d.ts +1 -1
  66. package/extensions/lib/tokens/extensible-form-view-provider.token.d.ts +5 -0
  67. package/extensions/lib/tokens/extensions.token.d.ts +3 -0
  68. package/extensions/lib/utils/form-props.util.d.ts +2 -2
  69. package/extensions/public-api.d.ts +1 -0
  70. package/fesm2015/abp-ng.theme.shared-extensions.mjs +277 -212
  71. package/fesm2015/abp-ng.theme.shared-extensions.mjs.map +1 -1
  72. package/fesm2015/abp-ng.theme.shared-testing.mjs +4 -4
  73. package/fesm2015/abp-ng.theme.shared-testing.mjs.map +1 -1
  74. package/fesm2015/abp-ng.theme.shared.mjs +104 -128
  75. package/fesm2015/abp-ng.theme.shared.mjs.map +1 -1
  76. package/fesm2020/abp-ng.theme.shared-extensions.mjs +191 -128
  77. package/fesm2020/abp-ng.theme.shared-extensions.mjs.map +1 -1
  78. package/fesm2020/abp-ng.theme.shared-testing.mjs +4 -4
  79. package/fesm2020/abp-ng.theme.shared-testing.mjs.map +1 -1
  80. package/fesm2020/abp-ng.theme.shared.mjs +104 -128
  81. package/fesm2020/abp-ng.theme.shared.mjs.map +1 -1
  82. package/{abp-ng.theme.shared.d.ts → index.d.ts} +0 -0
  83. package/lib/components/breadcrumb/breadcrumb.component.d.ts +1 -1
  84. package/lib/components/breadcrumb-items/breadcrumb-items.component.d.ts +1 -1
  85. package/lib/components/button/button.component.d.ts +1 -1
  86. package/lib/components/confirmation/confirmation.component.d.ts +1 -1
  87. package/lib/components/http-error-wrapper/http-error-wrapper.component.d.ts +1 -1
  88. package/lib/components/loader-bar/loader-bar.component.d.ts +1 -1
  89. package/lib/components/loading/loading.component.d.ts +1 -1
  90. package/lib/components/modal/modal-close.directive.d.ts +1 -1
  91. package/lib/components/modal/modal.component.d.ts +1 -1
  92. package/lib/components/toast/toast.component.d.ts +1 -1
  93. package/lib/components/toast-container/toast-container.component.d.ts +1 -1
  94. package/lib/constants/styles.d.ts +1 -1
  95. package/lib/constants/validation.d.ts +1 -0
  96. package/lib/directives/ellipsis.directive.d.ts +1 -1
  97. package/lib/directives/loading.directive.d.ts +1 -1
  98. package/lib/directives/ngx-datatable-default.directive.d.ts +1 -1
  99. package/lib/directives/ngx-datatable-list.directive.d.ts +1 -1
  100. package/package.json +8 -8
  101. package/testing/{abp-ng.theme.shared-testing.d.ts → index.d.ts} +0 -0
  102. package/extensions/package.json +0 -10
  103. package/testing/package.json +0 -10
@@ -2,6 +2,7 @@ import { TrackByService } from '@abp/ng.core';
2
2
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, Optional, QueryList, SkipSelf, ViewChildren, } from '@angular/core';
3
3
  import { ControlContainer } from '@angular/forms';
4
4
  import { EXTRA_PROPERTIES_KEY } from '../../constants/extra-properties';
5
+ import { GroupedFormPropList } from '../../models/form-props';
5
6
  import { ExtensionsService } from '../../services/extensions.service';
6
7
  import { EXTENSIONS_IDENTIFIER } from '../../tokens/extensions.token';
7
8
  import { selfFactory } from '../../utils/factory.util';
@@ -10,10 +11,10 @@ import * as i0 from "@angular/core";
10
11
  import * as i1 from "@abp/ng.core";
11
12
  import * as i2 from "@angular/forms";
12
13
  import * as i3 from "../../services/extensions.service";
13
- import * as i4 from "./extensible-form-prop.component";
14
- import * as i5 from "@angular/common";
15
- import * as i6 from "../../directives/prop-data.directive";
16
- import * as i7 from "@ngx-validate/core";
14
+ import * as i4 from "@angular/common";
15
+ import * as i5 from "@ngx-validate/core";
16
+ import * as i6 from "./extensible-form-prop.component";
17
+ import * as i7 from "../../directives/prop-data.directive";
17
18
  export class ExtensibleFormComponent {
18
19
  constructor(cdRef, track, container, extensions, identifier) {
19
20
  this.cdRef = cdRef;
@@ -25,9 +26,17 @@ export class ExtensibleFormComponent {
25
26
  }
26
27
  set selectedRecord(record) {
27
28
  const type = !record || JSON.stringify(record) === '{}' ? 'create' : 'edit';
28
- this.propList = this.extensions[`${type}FormProps`].get(this.identifier).props;
29
+ const propList = this.extensions[`${type}FormProps`].get(this.identifier).props;
30
+ this.groupedPropList = this.createGroupedList(propList);
29
31
  this.record = record;
30
32
  }
33
+ createGroupedList(propList) {
34
+ const groupedFormPropList = new GroupedFormPropList();
35
+ propList.forEach(item => {
36
+ groupedFormPropList.addItem(item.value);
37
+ });
38
+ return groupedFormPropList;
39
+ }
31
40
  get form() {
32
41
  return (this.container ? this.container.control : { controls: {} });
33
42
  }
@@ -35,15 +44,15 @@ export class ExtensibleFormComponent {
35
44
  return (this.form.controls.extraProperties || { controls: {} });
36
45
  }
37
46
  }
38
- ExtensibleFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: ExtensibleFormComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TrackByService }, { token: i2.ControlContainer }, { token: i3.ExtensionsService }, { token: EXTENSIONS_IDENTIFIER }], target: i0.ɵɵFactoryTarget.Component });
39
- ExtensibleFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.6", 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 <ng-container *abpPropData=\"let data; fromList: propList; withRecord: record\">\r\n <ng-container *ngFor=\"let prop of propList; 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\"></abp-extensible-form-prop>\r\n </ng-container>\r\n\r\n <ng-template #tempDefault>\r\n <abp-extensible-form-prop\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-container>\r\n</ng-container>\r\n", components: [{ type: i4.ExtensibleFormPropComponent, selector: "abp-extensible-form-prop", inputs: ["data", "prop", "first"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.PropDataDirective, selector: "[abpPropData]", inputs: ["abpPropDataFromList", "abpPropDataWithRecord", "abpPropDataAtIndex"], exportAs: ["abpPropData"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { type: i7.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }], viewProviders: [
47
+ ExtensibleFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", 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: "14.2.1", 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: [
40
49
  {
41
50
  provide: ControlContainer,
42
51
  useFactory: selfFactory,
43
52
  deps: [[new Optional(), new SkipSelf(), ControlContainer]],
44
53
  },
45
54
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush });
46
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: ExtensibleFormComponent, decorators: [{
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: ExtensibleFormComponent, decorators: [{
47
56
  type: Component,
48
57
  args: [{ exportAs: 'abpExtensibleForm', selector: 'abp-extensible-form', changeDetection: ChangeDetectionStrategy.OnPush, viewProviders: [
49
58
  {
@@ -51,7 +60,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImpor
51
60
  useFactory: selfFactory,
52
61
  deps: [[new Optional(), new SkipSelf(), ControlContainer]],
53
62
  },
54
- ], template: "<ng-container *ngIf=\"form\">\r\n <ng-container *abpPropData=\"let data; fromList: propList; withRecord: record\">\r\n <ng-container *ngFor=\"let prop of propList; 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\"></abp-extensible-form-prop>\r\n </ng-container>\r\n\r\n <ng-template #tempDefault>\r\n <abp-extensible-form-prop\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-container>\r\n</ng-container>\r\n" }]
63
+ ], 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" }]
55
64
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.TrackByService }, { type: i2.ControlContainer }, { type: i3.ExtensionsService }, { type: undefined, decorators: [{
56
65
  type: Inject,
57
66
  args: [EXTENSIONS_IDENTIFIER]
@@ -61,4 +70,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImpor
61
70
  }], selectedRecord: [{
62
71
  type: Input
63
72
  }] } });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaWJsZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLXNoYXJlZC9leHRlbnNpb25zL3NyYy9saWIvY29tcG9uZW50cy9leHRlbnNpYmxlLWZvcm0vZXh0ZW5zaWJsZS1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLXNoYXJlZC9leHRlbnNpb25zL3NyYy9saWIvY29tcG9uZW50cy9leHRlbnNpYmxlLWZvcm0vZXh0ZW5zaWJsZS1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLFNBQVMsRUFDVCxRQUFRLEVBQ1IsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXhFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7O0FBZS9FLE1BQU0sT0FBTyx1QkFBdUI7SUF1QmxDLFlBQ2tCLEtBQXdCLEVBQ3hCLEtBQXFCLEVBQzdCLFNBQTJCLEVBQzNCLFVBQTZCLEVBQ0UsVUFBa0I7UUFKekMsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDN0IsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFDRSxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBakIzRCx1QkFBa0IsR0FBRyxvQkFBb0IsQ0FBQztJQWtCdkMsQ0FBQztJQXpCSixJQUNJLGNBQWMsQ0FBQyxNQUFTO1FBQzFCLE1BQU0sSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUM1RSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQy9FLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFNRCxJQUFJLElBQUk7UUFDTixPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFjLENBQUM7SUFDbkYsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFjLENBQUM7SUFDL0UsQ0FBQzs7b0hBckJVLHVCQUF1QixrSkE0QnhCLHFCQUFxQjt3R0E1QnBCLHVCQUF1Qix1SUFDcEIsMkJBQTJCLGlGQ2xDM0MsZzdCQXVCQSw2MEJERWlCO1FBQ2I7WUFDRSxPQUFPLEVBQUUsZ0JBQWdCO1lBQ3pCLFVBQVUsRUFBRSxXQUFXO1lBQ3ZCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxJQUFJLFFBQVEsRUFBRSxFQUFFLGdCQUFnQixDQUFDLENBQUM7U0FDM0Q7S0FDRjsyRkFFVSx1QkFBdUI7a0JBYm5DLFNBQVM7K0JBQ0UsbUJBQW1CLFlBQ25CLHFCQUFxQixtQkFFZCx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQzt3QkFDYjs0QkFDRSxPQUFPLEVBQUUsZ0JBQWdCOzRCQUN6QixVQUFVLEVBQUUsV0FBVzs0QkFDdkIsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLElBQUksUUFBUSxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQzt5QkFDM0Q7cUJBQ0Y7OzBCQThCRSxNQUFNOzJCQUFDLHFCQUFxQjs0Q0ExQi9CLFNBQVM7c0JBRFIsWUFBWTt1QkFBQywyQkFBMkI7Z0JBSXJDLGNBQWM7c0JBRGpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFja0J5U2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBPcHRpb25hbCxcclxuICBRdWVyeUxpc3QsXHJcbiAgU2tpcFNlbGYsXHJcbiAgVmlld0NoaWxkcmVuLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sQ29udGFpbmVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEVYVFJBX1BST1BFUlRJRVNfS0VZIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2V4dHJhLXByb3BlcnRpZXMnO1xyXG5pbXBvcnQgeyBGb3JtUHJvcExpc3QgfSBmcm9tICcuLi8uLi9tb2RlbHMvZm9ybS1wcm9wcyc7XHJcbmltcG9ydCB7IEV4dGVuc2lvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXh0ZW5zaW9ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRVhURU5TSU9OU19JREVOVElGSUVSIH0gZnJvbSAnLi4vLi4vdG9rZW5zL2V4dGVuc2lvbnMudG9rZW4nO1xyXG5pbXBvcnQgeyBzZWxmRmFjdG9yeSB9IGZyb20gJy4uLy4uL3V0aWxzL2ZhY3RvcnkudXRpbCc7XHJcbmltcG9ydCB7IEV4dGVuc2libGVGb3JtUHJvcENvbXBvbmVudCB9IGZyb20gJy4vZXh0ZW5zaWJsZS1mb3JtLXByb3AuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIGV4cG9ydEFzOiAnYWJwRXh0ZW5zaWJsZUZvcm0nLFxyXG4gIHNlbGVjdG9yOiAnYWJwLWV4dGVuc2libGUtZm9ybScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2V4dGVuc2libGUtZm9ybS5jb21wb25lbnQuaHRtbCcsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgdmlld1Byb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBDb250cm9sQ29udGFpbmVyLFxyXG4gICAgICB1c2VGYWN0b3J5OiBzZWxmRmFjdG9yeSxcclxuICAgICAgZGVwczogW1tuZXcgT3B0aW9uYWwoKSwgbmV3IFNraXBTZWxmKCksIENvbnRyb2xDb250YWluZXJdXSxcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEV4dGVuc2libGVGb3JtQ29tcG9uZW50PFIgPSBhbnk+IHtcclxuICBAVmlld0NoaWxkcmVuKEV4dGVuc2libGVGb3JtUHJvcENvbXBvbmVudClcclxuICBmb3JtUHJvcHMhOiBRdWVyeUxpc3Q8RXh0ZW5zaWJsZUZvcm1Qcm9wQ29tcG9uZW50PjtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgc2VsZWN0ZWRSZWNvcmQocmVjb3JkOiBSKSB7XHJcbiAgICBjb25zdCB0eXBlID0gIXJlY29yZCB8fCBKU09OLnN0cmluZ2lmeShyZWNvcmQpID09PSAne30nID8gJ2NyZWF0ZScgOiAnZWRpdCc7XHJcbiAgICB0aGlzLnByb3BMaXN0ID0gdGhpcy5leHRlbnNpb25zW2Ake3R5cGV9Rm9ybVByb3BzYF0uZ2V0KHRoaXMuaWRlbnRpZmllcikucHJvcHM7XHJcbiAgICB0aGlzLnJlY29yZCA9IHJlY29yZDtcclxuICB9XHJcblxyXG4gIGV4dHJhUHJvcGVydGllc0tleSA9IEVYVFJBX1BST1BFUlRJRVNfS0VZO1xyXG4gIHByb3BMaXN0ITogRm9ybVByb3BMaXN0PFI+O1xyXG4gIHJlY29yZCE6IFI7XHJcblxyXG4gIGdldCBmb3JtKCk6IEZvcm1Hcm91cCB7XHJcbiAgICByZXR1cm4gKHRoaXMuY29udGFpbmVyID8gdGhpcy5jb250YWluZXIuY29udHJvbCA6IHsgY29udHJvbHM6IHt9IH0pIGFzIEZvcm1Hcm91cDtcclxuICB9XHJcblxyXG4gIGdldCBleHRyYVByb3BlcnRpZXMoKTogRm9ybUdyb3VwIHtcclxuICAgIHJldHVybiAodGhpcy5mb3JtLmNvbnRyb2xzLmV4dHJhUHJvcGVydGllcyB8fCB7IGNvbnRyb2xzOiB7fSB9KSBhcyBGb3JtR3JvdXA7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZWFkb25seSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgdHJhY2s6IFRyYWNrQnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXHJcbiAgICBwcml2YXRlIGV4dGVuc2lvbnM6IEV4dGVuc2lvbnNTZXJ2aWNlLFxyXG4gICAgQEluamVjdChFWFRFTlNJT05TX0lERU5USUZJRVIpIHByaXZhdGUgaWRlbnRpZmllcjogc3RyaW5nLFxyXG4gICkge31cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybVwiPlxyXG4gIDxuZy1jb250YWluZXIgKmFicFByb3BEYXRhPVwibGV0IGRhdGE7IGZyb21MaXN0OiBwcm9wTGlzdDsgd2l0aFJlY29yZDogcmVjb3JkXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwcm9wIG9mIHByb3BMaXN0OyBsZXQgZmlyc3QgPSBmaXJzdDsgdHJhY2tCeTogdHJhY2suYnkoJ25hbWUnKVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicHJvcC52aXNpYmxlKGRhdGEpXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgW2Zvcm1Hcm91cE5hbWVdPVwiZXh0cmFQcm9wZXJ0aWVzS2V5XCJcclxuICAgICAgICAgICpuZ0lmPVwiZXh0cmFQcm9wZXJ0aWVzLmNvbnRyb2xzW3Byb3AubmFtZV07IGVsc2UgdGVtcERlZmF1bHRcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxhYnAtZXh0ZW5zaWJsZS1mb3JtLXByb3AgW3Byb3BdPVwicHJvcFwiIFtkYXRhXT1cImRhdGFcIj48L2FicC1leHRlbnNpYmxlLWZvcm0tcHJvcD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICN0ZW1wRGVmYXVsdD5cclxuICAgICAgICAgIDxhYnAtZXh0ZW5zaWJsZS1mb3JtLXByb3BcclxuICAgICAgICAgICAgKm5nSWY9XCJmb3JtLmdldChwcm9wLm5hbWUpXCJcclxuICAgICAgICAgICAgW3Byb3BdPVwicHJvcFwiXHJcbiAgICAgICAgICAgIFtkYXRhXT1cImRhdGFcIlxyXG4gICAgICAgICAgICBbZmlyc3RdPVwiZmlyc3RcIlxyXG4gICAgICAgICAgPjwvYWJwLWV4dGVuc2libGUtZm9ybS1wcm9wPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvbmctY29udGFpbmVyPlxyXG4iXX0=
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaWJsZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLXNoYXJlZC9leHRlbnNpb25zL3NyYy9saWIvY29tcG9uZW50cy9leHRlbnNpYmxlLWZvcm0vZXh0ZW5zaWJsZS1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLXNoYXJlZC9leHRlbnNpb25zL3NyYy9saWIvY29tcG9uZW50cy9leHRlbnNpYmxlLWZvcm0vZXh0ZW5zaWJsZS1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLFNBQVMsRUFDVCxRQUFRLEVBQ1IsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN4RSxPQUFPLEVBQWdCLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7Ozs7QUFlL0UsTUFBTSxPQUFPLHVCQUF1QjtJQWdDbEMsWUFDa0IsS0FBd0IsRUFDeEIsS0FBcUIsRUFDN0IsU0FBMkIsRUFDM0IsVUFBNkIsRUFDRSxVQUFrQjtRQUp6QyxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUM3QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUNFLGVBQVUsR0FBVixVQUFVLENBQVE7UUF6QjNELHVCQUFrQixHQUFHLG9CQUFvQixDQUFDO0lBMEJ2QyxDQUFDO0lBbENKLElBQ0ksY0FBYyxDQUFDLE1BQVM7UUFDMUIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQzVFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFNRCxpQkFBaUIsQ0FBQyxRQUF5QjtRQUN6QyxNQUFNLG1CQUFtQixHQUFHLElBQUksbUJBQW1CLEVBQUUsQ0FBQztRQUN0RCxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3RCLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFxQixDQUFDO0lBQzFGLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBcUIsQ0FBQztJQUN0RixDQUFDOztvSEE5QlUsdUJBQXVCLGtKQXFDeEIscUJBQXFCO3dHQXJDcEIsdUJBQXVCLHVJQUNwQiwyQkFBMkIsaUZDbEMzQyxxMERBNkNBLDZtQ0RwQmlCO1FBQ2I7WUFDRSxPQUFPLEVBQUUsZ0JBQWdCO1lBQ3pCLFVBQVUsRUFBRSxXQUFXO1lBQ3ZCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxJQUFJLFFBQVEsRUFBRSxFQUFFLGdCQUFnQixDQUFDLENBQUM7U0FDM0Q7S0FDRjsyRkFFVSx1QkFBdUI7a0JBYm5DLFNBQVM7K0JBQ0UsbUJBQW1CLFlBQ25CLHFCQUFxQixtQkFFZCx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQzt3QkFDYjs0QkFDRSxPQUFPLEVBQUUsZ0JBQWdCOzRCQUN6QixVQUFVLEVBQUUsV0FBVzs0QkFDdkIsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLElBQUksUUFBUSxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQzt5QkFDM0Q7cUJBQ0Y7OzBCQXVDRSxNQUFNOzJCQUFDLHFCQUFxQjs0Q0FuQy9CLFNBQVM7c0JBRFIsWUFBWTt1QkFBQywyQkFBMkI7Z0JBSXJDLGNBQWM7c0JBRGpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFja0J5U2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBPcHRpb25hbCxcclxuICBRdWVyeUxpc3QsXHJcbiAgU2tpcFNlbGYsXHJcbiAgVmlld0NoaWxkcmVuLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sQ29udGFpbmVyLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBFWFRSQV9QUk9QRVJUSUVTX0tFWSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9leHRyYS1wcm9wZXJ0aWVzJztcclxuaW1wb3J0IHsgRm9ybVByb3BMaXN0LCBHcm91cGVkRm9ybVByb3BMaXN0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Zvcm0tcHJvcHMnO1xyXG5pbXBvcnQgeyBFeHRlbnNpb25zU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V4dGVuc2lvbnMuc2VydmljZSc7XHJcbmltcG9ydCB7IEVYVEVOU0lPTlNfSURFTlRJRklFUiB9IGZyb20gJy4uLy4uL3Rva2Vucy9leHRlbnNpb25zLnRva2VuJztcclxuaW1wb3J0IHsgc2VsZkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9mYWN0b3J5LnV0aWwnO1xyXG5pbXBvcnQgeyBFeHRlbnNpYmxlRm9ybVByb3BDb21wb25lbnQgfSBmcm9tICcuL2V4dGVuc2libGUtZm9ybS1wcm9wLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBleHBvcnRBczogJ2FicEV4dGVuc2libGVGb3JtJyxcclxuICBzZWxlY3RvcjogJ2FicC1leHRlbnNpYmxlLWZvcm0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9leHRlbnNpYmxlLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHZpZXdQcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lcixcclxuICAgICAgdXNlRmFjdG9yeTogc2VsZkZhY3RvcnksXHJcbiAgICAgIGRlcHM6IFtbbmV3IE9wdGlvbmFsKCksIG5ldyBTa2lwU2VsZigpLCBDb250cm9sQ29udGFpbmVyXV0sXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFeHRlbnNpYmxlRm9ybUNvbXBvbmVudDxSID0gYW55PiB7XHJcbiAgQFZpZXdDaGlsZHJlbihFeHRlbnNpYmxlRm9ybVByb3BDb21wb25lbnQpXHJcbiAgZm9ybVByb3BzITogUXVlcnlMaXN0PEV4dGVuc2libGVGb3JtUHJvcENvbXBvbmVudD47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHNlbGVjdGVkUmVjb3JkKHJlY29yZDogUikge1xyXG4gICAgY29uc3QgdHlwZSA9ICFyZWNvcmQgfHwgSlNPTi5zdHJpbmdpZnkocmVjb3JkKSA9PT0gJ3t9JyA/ICdjcmVhdGUnIDogJ2VkaXQnO1xyXG4gICAgY29uc3QgcHJvcExpc3QgPSB0aGlzLmV4dGVuc2lvbnNbYCR7dHlwZX1Gb3JtUHJvcHNgXS5nZXQodGhpcy5pZGVudGlmaWVyKS5wcm9wcztcclxuICAgIHRoaXMuZ3JvdXBlZFByb3BMaXN0ID0gdGhpcy5jcmVhdGVHcm91cGVkTGlzdChwcm9wTGlzdCk7XHJcbiAgICB0aGlzLnJlY29yZCA9IHJlY29yZDtcclxuICB9XHJcblxyXG4gIGV4dHJhUHJvcGVydGllc0tleSA9IEVYVFJBX1BST1BFUlRJRVNfS0VZO1xyXG4gIGdyb3VwZWRQcm9wTGlzdDogR3JvdXBlZEZvcm1Qcm9wTGlzdDtcclxuICByZWNvcmQhOiBSO1xyXG5cclxuICBjcmVhdGVHcm91cGVkTGlzdChwcm9wTGlzdDogRm9ybVByb3BMaXN0PFI+KSB7XHJcbiAgICBjb25zdCBncm91cGVkRm9ybVByb3BMaXN0ID0gbmV3IEdyb3VwZWRGb3JtUHJvcExpc3QoKTtcclxuICAgIHByb3BMaXN0LmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgIGdyb3VwZWRGb3JtUHJvcExpc3QuYWRkSXRlbShpdGVtLnZhbHVlKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGdyb3VwZWRGb3JtUHJvcExpc3Q7XHJcbiAgfVxyXG5cclxuICBnZXQgZm9ybSgpOiBVbnR5cGVkRm9ybUdyb3VwIHtcclxuICAgIHJldHVybiAodGhpcy5jb250YWluZXIgPyB0aGlzLmNvbnRhaW5lci5jb250cm9sIDogeyBjb250cm9sczoge30gfSkgYXMgVW50eXBlZEZvcm1Hcm91cDtcclxuICB9XHJcblxyXG4gIGdldCBleHRyYVByb3BlcnRpZXMoKTogVW50eXBlZEZvcm1Hcm91cCB7XHJcbiAgICByZXR1cm4gKHRoaXMuZm9ybS5jb250cm9scy5leHRyYVByb3BlcnRpZXMgfHwgeyBjb250cm9sczoge30gfSkgYXMgVW50eXBlZEZvcm1Hcm91cDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHB1YmxpYyByZWFkb25seSB0cmFjazogVHJhY2tCeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcclxuICAgIHByaXZhdGUgZXh0ZW5zaW9uczogRXh0ZW5zaW9uc1NlcnZpY2UsXHJcbiAgICBASW5qZWN0KEVYVEVOU0lPTlNfSURFTlRJRklFUikgcHJpdmF0ZSBpZGVudGlmaWVyOiBzdHJpbmcsXHJcbiAgKSB7fVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJmb3JtXCI+XHJcblxyXG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGdyb3VwZWRQcm9wIG9mIGdyb3VwZWRQcm9wTGlzdC5pdGVtc1wiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqYWJwUHJvcERhdGE9XCJsZXQgZGF0YTsgZnJvbUxpc3Q6IGdyb3VwZWRQcm9wLmZvcm1Qcm9wTGlzdDsgd2l0aFJlY29yZDogcmVjb3JkXCI+XHJcblxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiZ3JvdXBlZFByb3AuZ3JvdXA/LmNsYXNzTmFtZTsgZWxzZSB3aXRob3V0Q2xhc3NOYW1lXCJcclxuICAgICAgICAgICBbY2xhc3NdPVwiZ3JvdXBlZFByb3AuZ3JvdXA/LmNsYXNzTmFtZVwiIFthdHRyLmRhdGEtbmFtZV09XCJncm91cGVkUHJvcC5ncm91cD8uY2xhc3NOYW1lXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJwcm9wTGlzdFRlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntncm91cGVkUHJvcDpncm91cGVkUHJvcCxkYXRhOmRhdGF9XCI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPG5nLXRlbXBsYXRlICN3aXRob3V0Q2xhc3NOYW1lPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwicHJvcExpc3RUZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7Z3JvdXBlZFByb3A6Z3JvdXBlZFByb3AsZGF0YTpkYXRhfVwiPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcblxyXG48bmctdGVtcGxhdGUgbGV0LWdyb3VwZWRQcm9wPVwiZ3JvdXBlZFByb3BcIiBsZXQtZGF0YT1cImRhdGFcIiAjcHJvcExpc3RUZW1wbGF0ZT5cclxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwcm9wIG9mIGdyb3VwZWRQcm9wLmZvcm1Qcm9wTGlzdDsgbGV0IGZpcnN0ID0gZmlyc3Q7IHRyYWNrQnk6IHRyYWNrLmJ5KCduYW1lJylcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9wLnZpc2libGUoZGF0YSlcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgIFtmb3JtR3JvdXBOYW1lXT1cImV4dHJhUHJvcGVydGllc0tleVwiXHJcbiAgICAgICAgKm5nSWY9XCJleHRyYVByb3BlcnRpZXMuY29udHJvbHNbcHJvcC5uYW1lXTsgZWxzZSB0ZW1wRGVmYXVsdFwiXHJcbiAgICAgID5cclxuICAgICAgICA8YWJwLWV4dGVuc2libGUtZm9ybS1wcm9wIFtwcm9wXT1cInByb3BcIiBbZGF0YV09XCJkYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJwcm9wLmNsYXNzTmFtZVwiPlxyXG4gICAgICAgIDwvYWJwLWV4dGVuc2libGUtZm9ybS1wcm9wPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjdGVtcERlZmF1bHQ+XHJcbiAgICAgICAgPGFicC1leHRlbnNpYmxlLWZvcm0tcHJvcFxyXG4gICAgICAgICAgW2NsYXNzXT1cInByb3AuY2xhc3NOYW1lXCJcclxuICAgICAgICAgICpuZ0lmPVwiZm9ybS5nZXQocHJvcC5uYW1lKVwiXHJcbiAgICAgICAgICBbcHJvcF09XCJwcm9wXCJcclxuICAgICAgICAgIFtkYXRhXT1cImRhdGFcIlxyXG4gICAgICAgICAgW2ZpcnN0XT1cImZpcnN0XCJcclxuICAgICAgICA+PC9hYnAtZXh0ZW5zaWJsZS1mb3JtLXByb3A+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
@@ -6,10 +6,10 @@ import { ExtensionsService } from '../../services/extensions.service';
6
6
  import { ENTITY_PROP_TYPE_CLASSES, EXTENSIONS_IDENTIFIER, PROP_DATA_STREAM, } from '../../tokens/extensions.token';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@abp/ng.core";
9
- import * as i2 from "@swimlane/ngx-datatable";
10
- import * as i3 from "../grid-actions/grid-actions.component";
9
+ import * as i2 from "@angular/common";
10
+ import * as i3 from "@swimlane/ngx-datatable";
11
11
  import * as i4 from "@abp/ng.theme.shared";
12
- import * as i5 from "@angular/common";
12
+ import * as i5 from "../grid-actions/grid-actions.component";
13
13
  const DEFAULT_ACTIONS_COLUMN_WIDTH = 150;
14
14
  export class ExtensibleTableComponent {
15
15
  constructor(locale, config, injector) {
@@ -62,15 +62,15 @@ export class ExtensibleTableComponent {
62
62
  getContent(prop, data) {
63
63
  return prop.valueResolver(data).pipe(map(value => {
64
64
  switch (prop.type) {
65
- case "boolean" /* Boolean */:
65
+ case "boolean" /* ePropType.Boolean */:
66
66
  return this.getIcon(value);
67
- case "date" /* Date */:
67
+ case "date" /* ePropType.Date */:
68
68
  return this.getDate(value, getShortDateFormat(this.config));
69
- case "time" /* Time */:
69
+ case "time" /* ePropType.Time */:
70
70
  return this.getDate(value, getShortTimeFormat(this.config));
71
- case "datetime" /* DateTime */:
71
+ case "datetime" /* ePropType.DateTime */:
72
72
  return this.getDate(value, getShortDateShortTimeFormat(this.config));
73
- case "enum" /* Enum */:
73
+ case "enum" /* ePropType.Enum */:
74
74
  return this.getEnum(value, prop.enumList);
75
75
  default:
76
76
  return value;
@@ -91,12 +91,15 @@ export class ExtensibleTableComponent {
91
91
  value,
92
92
  };
93
93
  if (prop.value.component) {
94
- const injector = Injector.create([
95
- {
96
- provide: PROP_DATA_STREAM,
97
- useValue: value,
98
- },
99
- ], this.injector);
94
+ const injector = Injector.create({
95
+ providers: [
96
+ {
97
+ provide: PROP_DATA_STREAM,
98
+ useValue: value,
99
+ },
100
+ ],
101
+ parent: this.injector,
102
+ });
100
103
  record[propKey].injector = injector;
101
104
  record[propKey].component = prop.value.component;
102
105
  }
@@ -105,9 +108,9 @@ export class ExtensibleTableComponent {
105
108
  });
106
109
  }
107
110
  }
108
- ExtensibleTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: ExtensibleTableComponent, deps: [{ token: LOCALE_ID }, { token: i1.ConfigStateService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
109
- ExtensibleTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.6", type: ExtensibleTableComponent, selector: "abp-extensible-table", inputs: { actionsText: "actionsText", data: "data", list: "list", recordsTotal: "recordsTotal", actionsColumnWidth: "actionsColumnWidth", actionsTemplate: "actionsTemplate" }, exportAs: ["abpExtensibleTable"], usesOnChanges: true, ngImport: i0, template: "<ngx-datatable default [rows]=\"data\" [count]=\"recordsTotal\" [list]=\"list\">\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", components: [{ type: i2.DatatableComponent, selector: "ngx-datatable", inputs: ["selected", "scrollbarV", "scrollbarH", "rowHeight", "columnMode", "headerHeight", "footerHeight", "externalPaging", "externalSorting", "loadingIndicator", "reorderable", "swapColumns", "sortType", "sorts", "cssClasses", "messages", "groupExpansionDefault", "selectAllRowsOnPage", "virtualization", "summaryRow", "summaryHeight", "summaryPosition", "rowIdentity", "rows", "groupedRows", "groupRowsBy", "columns", "limit", "count", "offset", "targetMarkerTemplate", "selectionType", "rowClass", "selectCheck", "displayCheck", "trackByProp", "treeFromRelation", "treeToRelation"], outputs: ["scroll", "activate", "select", "sort", "page", "reorder", "resize", "tableContextmenu", "treeAction"] }, { type: i3.GridActionsComponent, selector: "abp-grid-actions", inputs: ["icon", "index", "text"], exportAs: ["abpGridActions"] }], directives: [{ type: i4.NgxDatatableDefaultDirective, selector: "ngx-datatable[default]", inputs: ["class"], exportAs: ["ngxDatatableDefault"] }, { type: i4.NgxDatatableListDirective, selector: "ngx-datatable[list]", inputs: ["list"], exportAs: ["ngxDatatableList"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.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"] }, { type: i2.DataTableColumnCellDirective, selector: "[ngx-datatable-cell-template]" }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModuleFactory"] }], pipes: { "abpLocalization": i1.LocalizationPipe, "async": i5.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
110
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: ExtensibleTableComponent, decorators: [{
111
+ ExtensibleTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: ExtensibleTableComponent, deps: [{ token: LOCALE_ID }, { token: i1.ConfigStateService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
112
+ ExtensibleTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.1", type: ExtensibleTableComponent, selector: "abp-extensible-table", inputs: { actionsText: "actionsText", data: "data", list: "list", recordsTotal: "recordsTotal", actionsColumnWidth: "actionsColumnWidth", actionsTemplate: "actionsTemplate" }, exportAs: ["abpExtensibleTable"], usesOnChanges: true, ngImport: i0, template: "<ngx-datatable default [rows]=\"data\" [count]=\"recordsTotal\" [list]=\"list\">\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: ["selected", "scrollbarV", "scrollbarH", "rowHeight", "columnMode", "headerHeight", "footerHeight", "externalPaging", "externalSorting", "loadingIndicator", "reorderable", "swapColumns", "sortType", "sorts", "cssClasses", "messages", "groupExpansionDefault", "selectAllRowsOnPage", "virtualization", "summaryRow", "summaryHeight", "summaryPosition", "rowIdentity", "rows", "groupedRows", "groupRowsBy", "columns", "limit", "count", "offset", "targetMarkerTemplate", "selectionType", "rowClass", "selectCheck", "displayCheck", "trackByProp", "treeFromRelation", "treeToRelation"], 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 });
113
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: ExtensibleTableComponent, decorators: [{
111
114
  type: Component,
112
115
  args: [{ exportAs: 'abpExtensibleTable', selector: 'abp-extensible-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ngx-datatable default [rows]=\"data\" [count]=\"recordsTotal\" [list]=\"list\">\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" }]
113
116
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
@@ -126,4 +129,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImpor
126
129
  }], actionsTemplate: [{
127
130
  type: Input
128
131
  }] } });
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaWJsZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1zaGFyZWQvZXh0ZW5zaW9ucy9zcmMvbGliL2NvbXBvbmVudHMvZXh0ZW5zaWJsZS10YWJsZS9leHRlbnNpYmxlLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLXNoYXJlZC9leHRlbnNpb25zL3NyYy9saWIvY29tcG9uZW50cy9leHRlbnNpYmxlLXRhYmxlL2V4dGVuc2libGUtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsMkJBQTJCLEVBQzNCLGtCQUFrQixFQUNsQixXQUFXLEVBQ1gsaUJBQWlCLEdBQ2xCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxNQUFNLEVBR04sUUFBUSxFQUNSLEtBQUssRUFDTCxTQUFTLEVBR1QsV0FBVyxHQUdaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUtyQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsd0JBQXdCLEVBRXhCLHFCQUFxQixFQUNyQixnQkFBZ0IsR0FDakIsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7OztBQUV2QyxNQUFNLDRCQUE0QixHQUFHLEdBQUcsQ0FBQztBQVF6QyxNQUFNLE9BQU8sd0JBQXdCO0lBZ0NuQyxZQUM2QixNQUFjLEVBQ2pDLE1BQTBCLEVBQzFCLFFBQWtCO1FBRkMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNq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OzBCQW1DNUMsTUFBTTsyQkFBQyxTQUFTO29HQTlCZixXQUFXO3NCQURkLEtBQUs7Z0JBUUcsSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNPLGtCQUFrQjtzQkFBOUIsS0FBSztnQkFHRyxlQUFlO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBQlAsXHJcbiAgQ29uZmlnU3RhdGVTZXJ2aWNlLFxyXG4gIGdldFNob3J0RGF0ZUZvcm1hdCxcclxuICBnZXRTaG9ydERhdGVTaG9ydFRpbWVGb3JtYXQsXHJcbiAgZ2V0U2hvcnRUaW1lRm9ybWF0LFxyXG4gIExpc3RTZXJ2aWNlLFxyXG4gIFBlcm1pc3Npb25TZXJ2aWNlLFxyXG59IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IGZvcm1hdERhdGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBJbmplY3QsXHJcbiAgSW5qZWN0RmxhZ3MsXHJcbiAgSW5qZWN0aW9uVG9rZW4sXHJcbiAgSW5qZWN0b3IsXHJcbiAgSW5wdXQsXHJcbiAgTE9DQUxFX0lELFxyXG4gIE9uQ2hhbmdlcyxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFRyYWNrQnlGdW5jdGlvbixcclxuICBUeXBlLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgZVByb3BUeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMvcHJvcHMuZW51bSc7XHJcbmltcG9ydCB7IEVudGl0eUFjdGlvbkxpc3QgfSBmcm9tICcuLi8uLi9tb2RlbHMvZW50aXR5LWFjdGlvbnMnO1xyXG5pbXBvcnQgeyBFbnRpdHlQcm9wLCBFbnRpdHlQcm9wTGlzdCB9IGZyb20gJy4uLy4uL21vZGVscy9lbnRpdHktcHJvcHMnO1xyXG5pbXBvcnQgeyBQcm9wRGF0YSB9IGZyb20gJy4uLy4uL21vZGVscy9wcm9wcyc7XHJcbmltcG9ydCB7IEV4dGVuc2lvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXh0ZW5zaW9ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBFTlRJVFlfUFJPUF9UWVBFX0NMQVNTRVMsXHJcbiAgRW50aXR5UHJvcFR5cGVDbGFzcyxcclxuICBFWFRFTlNJT05TX0lERU5USUZJRVIsXHJcbiAgUFJPUF9EQVRBX1NUUkVBTSxcclxufSBmcm9tICcuLi8uLi90b2tlbnMvZXh0ZW5zaW9ucy50b2tlbic7XHJcblxyXG5jb25zdCBERUZBVUxUX0FDVElPTlNfQ09MVU1OX1dJRFRIID0gMTUwO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgZXhwb3J0QXM6ICdhYnBFeHRlbnNpYmxlVGFibGUnLFxyXG4gIHNlbGVjdG9yOiAnYWJwLWV4dGVuc2libGUtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9leHRlbnNpYmxlLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIEV4dGVuc2libGVUYWJsZUNvbXBvbmVudDxSID0gYW55PiBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgcHJvdGVjdGVkIF9hY3Rpb25zVGV4dDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGFjdGlvbnNUZXh0KHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2FjdGlvbnNUZXh0ID0gdmFsdWU7XHJcbiAgfVxyXG4gIGdldCBhY3Rpb25zVGV4dCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FjdGlvbnNUZXh0ID8/ICh0aGlzLmFjdGlvbkxpc3QubGVuZ3RoID4gMSA/ICdBYnBVaTo6QWN0aW9ucycgOiAnJyk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBkYXRhOiBSW107XHJcbiAgQElucHV0KCkgbGlzdDogTGlzdFNlcnZpY2U7XHJcbiAgQElucHV0KCkgcmVjb3Jkc1RvdGFsOiBudW1iZXI7XHJcbiAgQElucHV0KCkgc2V0IGFjdGlvbnNDb2x1bW5XaWR0aCh3aWR0aDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnNldENvbHVtbldpZHRocyh3aWR0aCA/IE51bWJlcih3aWR0aCkgOiB1bmRlZmluZWQpO1xyXG4gIH1cclxuICBASW5wdXQoKSBhY3Rpb25zVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIGdldEluamVjdGVkOiA8VD4odG9rZW46IFR5cGU8VD4gfCBJbmplY3Rpb25Ub2tlbjxUPiwgbm90Rm91bmRWYWx1ZT86IFQsIGZsYWdzPzogSW5qZWN0RmxhZ3MpID0+IFQ7XHJcblxyXG4gIGhhc0F0TGVhc3RPbmVQZXJtaXR0ZWRBY3Rpb246IGJvb2xlYW47XHJcblxyXG4gIGVudGl0eVByb3BUeXBlQ2xhc3NlczogRW50aXR5UHJvcFR5cGVDbGFzcztcclxuXHJcbiAgcmVhZG9ubHkgY29sdW1uV2lkdGhzOiBudW1iZXJbXTtcclxuXHJcbiAgcmVhZG9ubHkgcHJvcExpc3Q6IEVudGl0eVByb3BMaXN0PFI+O1xyXG5cclxuICByZWFkb25seSBhY3Rpb25MaXN0OiBFbnRpdHlBY3Rpb25MaXN0PFI+O1xyXG5cclxuICByZWFkb25seSB0cmFja0J5Rm46IFRyYWNrQnlGdW5jdGlvbjxFbnRpdHlQcm9wPFI+PiA9IChfLCBpdGVtKSA9PiBpdGVtLm5hbWU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChMT0NBTEVfSUQpIHByaXZhdGUgbG9jYWxlOiBzdHJpbmcsXHJcbiAgICBwcml2YXRlIGNvbmZpZzogQ29uZmlnU3RhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgKSB7XHJcbiAgICB0aGlzLmVudGl0eVByb3BUeXBlQ2xhc3NlcyA9IGluamVjdG9yLmdldChFTlRJVFlfUFJPUF9UWVBFX0NMQVNTRVMpO1xyXG4gICAgdGhpcy5nZXRJbmplY3RlZCA9IGluamVjdG9yLmdldC5iaW5kKGluamVjdG9yKTtcclxuICAgIGNvbnN0IGV4dGVuc2lvbnMgPSBpbmplY3Rvci5nZXQoRXh0ZW5zaW9uc1NlcnZpY2UpO1xyXG4gICAgY29uc3QgbmFtZSA9IGluamVjdG9yLmdldChFWFRFTlNJT05TX0lERU5USUZJRVIpO1xyXG4gICAgdGhpcy5wcm9wTGlzdCA9IGV4dGVuc2lvbnMuZW50aXR5UHJvcHMuZ2V0KG5hbWUpLnByb3BzO1xyXG4gICAgdGhpcy5hY3Rpb25MaXN0ID0gZXh0ZW5zaW9uc1snZW50aXR5QWN0aW9ucyddLmdldChuYW1lKVxyXG4gICAgICAuYWN0aW9ucyBhcyB1bmtub3duIGFzIEVudGl0eUFjdGlvbkxpc3Q8Uj47XHJcblxyXG4gICAgY29uc3QgcGVybWlzc2lvblNlcnZpY2UgPSBpbmplY3Rvci5nZXQoUGVybWlzc2lvblNlcnZpY2UpO1xyXG4gICAgdGhpcy5oYXNBdExlYXN0T25lUGVybWl0dGVkQWN0aW9uID1cclxuICAgICAgcGVybWlzc2lvblNlcnZpY2UuZmlsdGVySXRlbXNCeVBvbGljeShcclxuICAgICAgICB0aGlzLmFjdGlvbkxpc3QudG9BcnJheSgpLm1hcChhY3Rpb24gPT4gKHsgcmVxdWlyZWRQb2xpY3k6IGFjdGlvbi5wZXJtaXNzaW9uIH0pKSxcclxuICAgICAgKS5sZW5ndGggPiAwO1xyXG4gICAgdGhpcy5zZXRDb2x1bW5XaWR0aHMoREVGQVVMVF9BQ1RJT05TX0NPTFVNTl9XSURUSCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldENvbHVtbldpZHRocyhhY3Rpb25zQ29sdW1uOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IHdpZHRocyA9IFthY3Rpb25zQ29sdW1uXTtcclxuICAgIHRoaXMucHJvcExpc3QuZm9yRWFjaCgoeyB2YWx1ZTogcHJvcCB9KSA9PiB7XHJcbiAgICAgIHdpZHRocy5wdXNoKHByb3AuY29sdW1uV2lkdGgpO1xyXG4gICAgfSk7XHJcbiAgICAodGhpcy5jb2x1bW5XaWR0aHMgYXMgYW55KSA9IHdpZHRocztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RGF0ZSh2YWx1ZTogRGF0ZSwgZm9ybWF0OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB2YWx1ZSA/IGZvcm1hdERhdGUodmFsdWUsIGZvcm1hdCwgdGhpcy5sb2NhbGUpIDogJyc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEljb24odmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHJldHVybiB2YWx1ZVxyXG4gICAgICA/ICc8ZGl2IGNsYXNzPVwidGV4dC1zdWNjZXNzXCI+PGkgY2xhc3M9XCJmYSBmYS1jaGVja1wiPjwvaT48L2Rpdj4nXHJcbiAgICAgIDogJzxkaXYgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPjxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L2k+PC9kaXY+JztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RW51bShyb3dWYWx1ZTogYW55LCBsaXN0OiBBcnJheTxBQlAuT3B0aW9uPGFueT4+KSB7XHJcbiAgICBpZiAoIWxpc3QpIHJldHVybiByb3dWYWx1ZTtcclxuICAgIGNvbnN0IHsga2V5IH0gPSBsaXN0LmZpbmQoKHsgdmFsdWUgfSkgPT4gdmFsdWUgPT09IHJvd1ZhbHVlKTtcclxuICAgIHJldHVybiBrZXk7XHJcbiAgfVxyXG5cclxuICBnZXRDb250ZW50KHByb3A6IEVudGl0eVByb3A8Uj4sIGRhdGE6IFByb3BEYXRhKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgIHJldHVybiBwcm9wLnZhbHVlUmVzb2x2ZXIoZGF0YSkucGlwZShcclxuICAgICAgbWFwKHZhbHVlID0+IHtcclxuICAgICAgICBzd2l0Y2ggKHByb3AudHlwZSkge1xyXG4gICAgICAgICAgY2FzZSBlUHJvcFR5cGUuQm9vbGVhbjpcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SWNvbih2YWx1ZSk7XHJcbiAgICAgICAgICBjYXNlIGVQcm9wVHlwZS5EYXRlOlxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXREYXRlKHZhbHVlLCBnZXRTaG9ydERhdGVGb3JtYXQodGhpcy5jb25maWcpKTtcclxuICAgICAgICAgIGNhc2UgZVByb3BUeXBlLlRpbWU6XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldERhdGUodmFsdWUsIGdldFNob3J0VGltZUZvcm1hdCh0aGlzLmNvbmZpZykpO1xyXG4gICAgICAgICAgY2FzZSBlUHJvcFR5cGUuRGF0ZVRpbWU6XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldERhdGUodmFsdWUsIGdldFNob3J0RGF0ZVNob3J0VGltZUZvcm1hdCh0aGlzLmNvbmZpZykpO1xyXG4gICAgICAgICAgY2FzZSBlUHJvcFR5cGUuRW51bTpcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RW51bSh2YWx1ZSwgcHJvcC5lbnVtTGlzdCk7XHJcbiAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgICAvLyBNb3JlIHR5cGVzIGNhbiBiZSBoYW5kbGVkIGluIHRoZSBmdXR1cmVcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKHsgZGF0YSB9OiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoIWRhdGE/LmN1cnJlbnRWYWx1ZSkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuZGF0YSA9IGRhdGEuY3VycmVudFZhbHVlLm1hcCgocmVjb3JkLCBpbmRleCkgPT4ge1xyXG4gICAgICB0aGlzLnByb3BMaXN0LmZvckVhY2gocHJvcCA9PiB7XHJcbiAgICAgICAgY29uc3QgcHJvcERhdGEgPSB7IGdldEluamVjdGVkOiB0aGlzLmdldEluamVjdGVkLCByZWNvcmQsIGluZGV4IH0gYXMgYW55O1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRDb250ZW50KHByb3AudmFsdWUsIHByb3BEYXRhKTtcclxuXHJcbiAgICAgICAgY29uc3QgcHJvcEtleSA9IGBfJHtwcm9wLnZhbHVlLm5hbWV9YDtcclxuICAgICAgICByZWNvcmRbcHJvcEtleV0gPSB7XHJcbiAgICAgICAgICB2aXNpYmxlOiBwcm9wLnZhbHVlLnZpc2libGUocHJvcERhdGEpLFxyXG4gICAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAocHJvcC52YWx1ZS5jb21wb25lbnQpIHtcclxuICAgICAgICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKFxyXG4gICAgICAgICAgICBbXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgcHJvdmlkZTogUFJPUF9EQVRBX1NUUkVBTSxcclxuICAgICAgICAgICAgICAgIHVzZVZhbHVlOiB2YWx1ZSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICB0aGlzLmluamVjdG9yLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJlY29yZFtwcm9wS2V5XS5pbmplY3RvciA9IGluamVjdG9yO1xyXG4gICAgICAgICAgcmVjb3JkW3Byb3BLZXldLmNvbXBvbmVudCA9IHByb3AudmFsdWUuY29tcG9uZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICByZXR1cm4gcmVjb3JkO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxuZ3gtZGF0YXRhYmxlIGRlZmF1bHQgW3Jvd3NdPVwiZGF0YVwiIFtjb3VudF09XCJyZWNvcmRzVG90YWxcIiBbbGlzdF09XCJsaXN0XCI+XHJcbiAgPG5neC1kYXRhdGFibGUtY29sdW1uXHJcbiAgICAqbmdJZj1cImFjdGlvbnNUZW1wbGF0ZSB8fCAoYWN0aW9uTGlzdC5sZW5ndGggJiYgaGFzQXRMZWFzdE9uZVBlcm1pdHRlZEFjdGlvbilcIlxyXG4gICAgW25hbWVdPVwiYWN0aW9uc1RleHQgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgW21heFdpZHRoXT1cImNvbHVtbldpZHRoc1swXVwiXHJcbiAgICBbd2lkdGhdPVwiY29sdW1uV2lkdGhzWzBdXCJcclxuICAgIFtzb3J0YWJsZV09XCJmYWxzZVwiXHJcbiAgPlxyXG4gICAgPG5nLXRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIiBsZXQtaT1cInJvd0luZGV4XCIgbmd4LWRhdGF0YWJsZS1jZWxsLXRlbXBsYXRlPlxyXG4gICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhY3Rpb25zVGVtcGxhdGUgfHwgZ3JpZEFjdGlvbnM7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3csIGluZGV4OiBpIH1cIlxyXG4gICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjZ3JpZEFjdGlvbnM+XHJcbiAgICAgICAgPGFicC1ncmlkLWFjdGlvbnMgW2luZGV4XT1cImlcIiBbcmVjb3JkXT1cInJvd1wiIHRleHQ9XCJBYnBVaTo6QWN0aW9uc1wiPjwvYWJwLWdyaWQtYWN0aW9ucz5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9uZ3gtZGF0YXRhYmxlLWNvbHVtbj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcHJvcCBvZiBwcm9wTGlzdDsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUZuXCI+XHJcbiAgICA8bmd4LWRhdGF0YWJsZS1jb2x1bW5cclxuICAgICAgW3dpZHRoXT1cImNvbHVtbldpZHRoc1tpICsgMV0gfHwgMjAwXCJcclxuICAgICAgW25hbWVdPVwicHJvcC5kaXNwbGF5TmFtZSB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgIFtwcm9wXT1cInByb3AubmFtZVwiXHJcbiAgICAgIFtzb3J0YWJsZV09XCJwcm9wLnNvcnRhYmxlXCJcclxuICAgID5cclxuICAgICAgPG5nLXRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIiBsZXQtaT1cImluZGV4XCIgbmd4LWRhdGF0YWJsZS1jZWxsLXRlbXBsYXRlPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKmFicFBlcm1pc3Npb249XCJwcm9wLnBlcm1pc3Npb247IHJ1bkNoYW5nZURldGVjdGlvbjogZmFsc2VcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3dbJ18nICsgcHJvcC5uYW1lXT8udmlzaWJsZVwiPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhcm93WydfJyArIHByb3AubmFtZV0uY29tcG9uZW50OyBlbHNlIGNvbXBvbmVudFwiXHJcbiAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJyb3dbJ18nICsgcHJvcC5uYW1lXT8udmFsdWUgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgcHJvcC5hY3Rpb24gJiYgcHJvcC5hY3Rpb24oeyBnZXRJbmplY3RlZDogZ2V0SW5qZWN0ZWQsIHJlY29yZDogcm93LCBpbmRleDogaSB9KVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZW50aXR5UHJvcFR5cGVDbGFzc2VzW3Byb3AudHlwZV1cIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5wb2ludGVyXT1cInByb3AuYWN0aW9uXCJcclxuICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbXBvbmVudD5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICpuZ0NvbXBvbmVudE91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgcm93WydfJyArIHByb3AubmFtZV0uY29tcG9uZW50O1xyXG4gICAgICAgICAgICAgICAgaW5qZWN0b3I6IHJvd1snXycgKyBwcm9wLm5hbWVdLmluamVjdG9yXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbmd4LWRhdGF0YWJsZS1jb2x1bW4+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvbmd4LWRhdGF0YWJsZT5cclxuIl19
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaWJsZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1zaGFyZWQvZXh0ZW5zaW9ucy9zcmMvbGliL2NvbXBvbmVudHMvZXh0ZW5zaWJsZS10YWJsZS9leHRlbnNpYmxlLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLXNoYXJlZC9leHRlbnNpb25zL3NyYy9saWIvY29tcG9uZW50cy9leHRlbnNpYmxlLXRhYmxlL2V4dGVuc2libGUtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsMkJBQTJCLEVBQzNCLGtCQUFrQixFQUNsQixXQUFXLEVBQ1gsaUJBQWlCLEdBQ2xCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxNQUFNLEVBR04sUUFBUSxFQUNSLEtBQUssRUFDTCxTQUFTLEVBR1QsV0FBVyxHQUdaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUtyQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsd0JBQXdCLEVBRXhCLHFCQUFxQixFQUNyQixnQkFBZ0IsR0FDakIsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7OztBQUV2QyxNQUFNLDRCQUE0QixHQUFHLEdBQUcsQ0FBQztBQVF6QyxNQUFNLE9BQU8sd0JBQXdCO0lBZ0NuQyxZQUM2QixNQUFjLEVBQ2pDLE1BQTBCLEVBQzFCLFFBQWtCO1FBRkMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNqQyxXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQUMxQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBTG5CLGNBQVMsR0FBbUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBTzFFLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQyxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDbkQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7YUFDcEQsT0FBeUMsQ0FBQztRQUU3QyxNQUFNLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsNEJBQTRCO1lBQy9CLGlCQUFpQixDQUFDLG1CQUFtQixDQUNuQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FDakYsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFqREQsSUFDSSxXQUFXLENBQUMsS0FBYTtRQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBQ0QsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUtELElBQWEsa0JBQWtCLENBQUMsS0FBYTtRQUMzQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBc0NPLGVBQWUsQ0FBQyxhQUFxQjtRQUMzQyxNQUFNLE1BQU0sR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtZQUN4QyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFvQixHQUFHLE1BQU0sQ0FBQztJQUN0QyxDQUFDO0lBRU8sT0FBTyxDQUFDLEtBQVcsRUFBRSxNQUFjO1FBQ3pDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM3RCxDQUFDO0lBRU8sT0FBTyxDQUFDLEtBQWM7UUFDNUIsT0FBTyxLQUFLO1lBQ1YsQ0FBQyxDQUFDLDZEQUE2RDtZQUMvRCxDQUFDLENBQUMsNERBQTRELENBQUM7SUFDbkUsQ0FBQztJQUVPLE9BQU8sQ0FBQyxRQUFhLEVBQUUsSUFBNEI7UUFDekQsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLFFBQVEsQ0FBQztRQUMzQixNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQztRQUM3RCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBbUIsRUFBRSxJQUFjO1FBQzVDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQ2xDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNWLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDakI7b0JBQ0UsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM3QjtvQkFDRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUM5RDtvQkFDRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUM5RDtvQkFDRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLDJCQUEyQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUN2RTtvQkFDRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDNUM7b0JBQ0UsT0FBTyxLQUFLLENBQUM7Z0JBQ2YsMENBQTBDO2FBQzNDO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXLENBQUMsRUFBRSxJQUFJLEVBQWlCO1FBQ2pDLElBQUksQ0FBQyxJQUFJLEVBQUUsWUFBWTtZQUFFLE9BQU87UUFFaEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNsRCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDM0IsTUFBTSxRQUFRLEdBQUcsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFTLENBQUM7Z0JBQ3pFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFFcEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN0QyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUc7b0JBQ2hCLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7b0JBQ3JDLEtBQUs7aUJBQ04sQ0FBQztnQkFDRixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFO29CQUV4QixNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO3dCQUMvQixTQUFTLEVBQUU7NEJBQ1Q7Z0NBQ0UsT0FBTyxFQUFFLGdCQUFnQjtnQ0FDekIsUUFBUSxFQUFFLEtBQUs7NkJBQ2hCO3lCQUNGO3dCQUNELE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUTtxQkFDdEIsQ0FBQyxDQUFDO29CQUNILE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO29CQUNwQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO2lCQUNsRDtZQUNILENBQUMsQ0FBQyxDQUFDO1lBRUgsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztxSEFsSVUsd0JBQXdCLGtCQWlDekIsU0FBUzt5R0FqQ1Isd0JBQXdCLG1TQy9DckMsa3NFQW1EQTsyRkRKYSx3QkFBd0I7a0JBTnBDLFNBQVM7K0JBQ0Usb0JBQW9CLFlBQ3BCLHNCQUFzQixtQkFFZix1QkFBdUIsQ0FBQyxNQUFNOzswQkFtQzVDLE1BQU07MkJBQUMsU0FBUztvR0E5QmYsV0FBVztzQkFEZCxLQUFLO2dCQVFHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDTyxrQkFBa0I7c0JBQTlCLEtBQUs7Z0JBR0csZUFBZTtzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQUJQLFxyXG4gIENvbmZpZ1N0YXRlU2VydmljZSxcclxuICBnZXRTaG9ydERhdGVGb3JtYXQsXHJcbiAgZ2V0U2hvcnREYXRlU2hvcnRUaW1lRm9ybWF0LFxyXG4gIGdldFNob3J0VGltZUZvcm1hdCxcclxuICBMaXN0U2VydmljZSxcclxuICBQZXJtaXNzaW9uU2VydmljZSxcclxufSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgSW5qZWN0LFxyXG4gIEluamVjdEZsYWdzLFxyXG4gIEluamVjdGlvblRva2VuLFxyXG4gIEluamVjdG9yLFxyXG4gIElucHV0LFxyXG4gIExPQ0FMRV9JRCxcclxuICBPbkNoYW5nZXMsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBUZW1wbGF0ZVJlZixcclxuICBUcmFja0J5RnVuY3Rpb24sXHJcbiAgVHlwZSxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IGVQcm9wVHlwZSB9IGZyb20gJy4uLy4uL2VudW1zL3Byb3BzLmVudW0nO1xyXG5pbXBvcnQgeyBFbnRpdHlBY3Rpb25MaXN0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VudGl0eS1hY3Rpb25zJztcclxuaW1wb3J0IHsgRW50aXR5UHJvcCwgRW50aXR5UHJvcExpc3QgfSBmcm9tICcuLi8uLi9tb2RlbHMvZW50aXR5LXByb3BzJztcclxuaW1wb3J0IHsgUHJvcERhdGEgfSBmcm9tICcuLi8uLi9tb2RlbHMvcHJvcHMnO1xyXG5pbXBvcnQgeyBFeHRlbnNpb25zU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V4dGVuc2lvbnMuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgRU5USVRZX1BST1BfVFlQRV9DTEFTU0VTLFxyXG4gIEVudGl0eVByb3BUeXBlQ2xhc3MsXHJcbiAgRVhURU5TSU9OU19JREVOVElGSUVSLFxyXG4gIFBST1BfREFUQV9TVFJFQU0sXHJcbn0gZnJvbSAnLi4vLi4vdG9rZW5zL2V4dGVuc2lvbnMudG9rZW4nO1xyXG5cclxuY29uc3QgREVGQVVMVF9BQ1RJT05TX0NPTFVNTl9XSURUSCA9IDE1MDtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIGV4cG9ydEFzOiAnYWJwRXh0ZW5zaWJsZVRhYmxlJyxcclxuICBzZWxlY3RvcjogJ2FicC1leHRlbnNpYmxlLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZXh0ZW5zaWJsZS10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFeHRlbnNpYmxlVGFibGVDb21wb25lbnQ8UiA9IGFueT4gaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gIHByb3RlY3RlZCBfYWN0aW9uc1RleHQ6IHN0cmluZztcclxuICBASW5wdXQoKVxyXG4gIHNldCBhY3Rpb25zVGV4dCh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9hY3Rpb25zVGV4dCA9IHZhbHVlO1xyXG4gIH1cclxuICBnZXQgYWN0aW9uc1RleHQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9hY3Rpb25zVGV4dCA/PyAodGhpcy5hY3Rpb25MaXN0Lmxlbmd0aCA+IDEgPyAnQWJwVWk6OkFjdGlvbnMnIDogJycpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgZGF0YTogUltdO1xyXG4gIEBJbnB1dCgpIGxpc3Q6IExpc3RTZXJ2aWNlO1xyXG4gIEBJbnB1dCgpIHJlY29yZHNUb3RhbDogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHNldCBhY3Rpb25zQ29sdW1uV2lkdGgod2lkdGg6IG51bWJlcikge1xyXG4gICAgdGhpcy5zZXRDb2x1bW5XaWR0aHMod2lkdGggPyBOdW1iZXIod2lkdGgpIDogdW5kZWZpbmVkKTtcclxuICB9XHJcbiAgQElucHV0KCkgYWN0aW9uc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBnZXRJbmplY3RlZDogPFQ+KHRva2VuOiBUeXBlPFQ+IHwgSW5qZWN0aW9uVG9rZW48VD4sIG5vdEZvdW5kVmFsdWU/OiBULCBmbGFncz86IEluamVjdEZsYWdzKSA9PiBUO1xyXG5cclxuICBoYXNBdExlYXN0T25lUGVybWl0dGVkQWN0aW9uOiBib29sZWFuO1xyXG5cclxuICBlbnRpdHlQcm9wVHlwZUNsYXNzZXM6IEVudGl0eVByb3BUeXBlQ2xhc3M7XHJcblxyXG4gIHJlYWRvbmx5IGNvbHVtbldpZHRoczogbnVtYmVyW107XHJcblxyXG4gIHJlYWRvbmx5IHByb3BMaXN0OiBFbnRpdHlQcm9wTGlzdDxSPjtcclxuXHJcbiAgcmVhZG9ubHkgYWN0aW9uTGlzdDogRW50aXR5QWN0aW9uTGlzdDxSPjtcclxuXHJcbiAgcmVhZG9ubHkgdHJhY2tCeUZuOiBUcmFja0J5RnVuY3Rpb248RW50aXR5UHJvcDxSPj4gPSAoXywgaXRlbSkgPT4gaXRlbS5uYW1lO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoTE9DQUxFX0lEKSBwcml2YXRlIGxvY2FsZTogc3RyaW5nLFxyXG4gICAgcHJpdmF0ZSBjb25maWc6IENvbmZpZ1N0YXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICkge1xyXG4gICAgdGhpcy5lbnRpdHlQcm9wVHlwZUNsYXNzZXMgPSBpbmplY3Rvci5nZXQoRU5USVRZX1BST1BfVFlQRV9DTEFTU0VTKTtcclxuICAgIHRoaXMuZ2V0SW5qZWN0ZWQgPSBpbmplY3Rvci5nZXQuYmluZChpbmplY3Rvcik7XHJcbiAgICBjb25zdCBleHRlbnNpb25zID0gaW5qZWN0b3IuZ2V0KEV4dGVuc2lvbnNTZXJ2aWNlKTtcclxuICAgIGNvbnN0IG5hbWUgPSBpbmplY3Rvci5nZXQoRVhURU5TSU9OU19JREVOVElGSUVSKTtcclxuICAgIHRoaXMucHJvcExpc3QgPSBleHRlbnNpb25zLmVudGl0eVByb3BzLmdldChuYW1lKS5wcm9wcztcclxuICAgIHRoaXMuYWN0aW9uTGlzdCA9IGV4dGVuc2lvbnNbJ2VudGl0eUFjdGlvbnMnXS5nZXQobmFtZSlcclxuICAgICAgLmFjdGlvbnMgYXMgdW5rbm93biBhcyBFbnRpdHlBY3Rpb25MaXN0PFI+O1xyXG5cclxuICAgIGNvbnN0IHBlcm1pc3Npb25TZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFBlcm1pc3Npb25TZXJ2aWNlKTtcclxuICAgIHRoaXMuaGFzQXRMZWFzdE9uZVBlcm1pdHRlZEFjdGlvbiA9XHJcbiAgICAgIHBlcm1pc3Npb25TZXJ2aWNlLmZpbHRlckl0ZW1zQnlQb2xpY3koXHJcbiAgICAgICAgdGhpcy5hY3Rpb25MaXN0LnRvQXJyYXkoKS5tYXAoYWN0aW9uID0+ICh7IHJlcXVpcmVkUG9saWN5OiBhY3Rpb24ucGVybWlzc2lvbiB9KSksXHJcbiAgICAgICkubGVuZ3RoID4gMDtcclxuICAgIHRoaXMuc2V0Q29sdW1uV2lkdGhzKERFRkFVTFRfQUNUSU9OU19DT0xVTU5fV0lEVEgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRDb2x1bW5XaWR0aHMoYWN0aW9uc0NvbHVtbjogbnVtYmVyKSB7XHJcbiAgICBjb25zdCB3aWR0aHMgPSBbYWN0aW9uc0NvbHVtbl07XHJcbiAgICB0aGlzLnByb3BMaXN0LmZvckVhY2goKHsgdmFsdWU6IHByb3AgfSkgPT4ge1xyXG4gICAgICB3aWR0aHMucHVzaChwcm9wLmNvbHVtbldpZHRoKTtcclxuICAgIH0pO1xyXG4gICAgKHRoaXMuY29sdW1uV2lkdGhzIGFzIGFueSkgPSB3aWR0aHM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldERhdGUodmFsdWU6IERhdGUsIGZvcm1hdDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdmFsdWUgPyBmb3JtYXREYXRlKHZhbHVlLCBmb3JtYXQsIHRoaXMubG9jYWxlKSA6ICcnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRJY29uKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICByZXR1cm4gdmFsdWVcclxuICAgICAgPyAnPGRpdiBjbGFzcz1cInRleHQtc3VjY2Vzc1wiPjxpIGNsYXNzPVwiZmEgZmEtY2hlY2tcIj48L2k+PC9kaXY+J1xyXG4gICAgICA6ICc8ZGl2IGNsYXNzPVwidGV4dC1kYW5nZXJcIj48aSBjbGFzcz1cImZhIGZhLXRpbWVzXCI+PC9pPjwvZGl2Pic7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEVudW0ocm93VmFsdWU6IGFueSwgbGlzdDogQXJyYXk8QUJQLk9wdGlvbjxhbnk+Pikge1xyXG4gICAgaWYgKCFsaXN0KSByZXR1cm4gcm93VmFsdWU7XHJcbiAgICBjb25zdCB7IGtleSB9ID0gbGlzdC5maW5kKCh7IHZhbHVlIH0pID0+IHZhbHVlID09PSByb3dWYWx1ZSk7XHJcbiAgICByZXR1cm4ga2V5O1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udGVudChwcm9wOiBFbnRpdHlQcm9wPFI+LCBkYXRhOiBQcm9wRGF0YSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gcHJvcC52YWx1ZVJlc29sdmVyKGRhdGEpLnBpcGUoXHJcbiAgICAgIG1hcCh2YWx1ZSA9PiB7XHJcbiAgICAgICAgc3dpdGNoIChwcm9wLnR5cGUpIHtcclxuICAgICAgICAgIGNhc2UgZVByb3BUeXBlLkJvb2xlYW46XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEljb24odmFsdWUpO1xyXG4gICAgICAgICAgY2FzZSBlUHJvcFR5cGUuRGF0ZTpcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF0ZSh2YWx1ZSwgZ2V0U2hvcnREYXRlRm9ybWF0KHRoaXMuY29uZmlnKSk7XHJcbiAgICAgICAgICBjYXNlIGVQcm9wVHlwZS5UaW1lOlxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXREYXRlKHZhbHVlLCBnZXRTaG9ydFRpbWVGb3JtYXQodGhpcy5jb25maWcpKTtcclxuICAgICAgICAgIGNhc2UgZVByb3BUeXBlLkRhdGVUaW1lOlxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXREYXRlKHZhbHVlLCBnZXRTaG9ydERhdGVTaG9ydFRpbWVGb3JtYXQodGhpcy5jb25maWcpKTtcclxuICAgICAgICAgIGNhc2UgZVByb3BUeXBlLkVudW06XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEVudW0odmFsdWUsIHByb3AuZW51bUxpc3QpO1xyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgICAgLy8gTW9yZSB0eXBlcyBjYW4gYmUgaGFuZGxlZCBpbiB0aGUgZnV0dXJlXHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyh7IGRhdGEgfTogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKCFkYXRhPy5jdXJyZW50VmFsdWUpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmRhdGEgPSBkYXRhLmN1cnJlbnRWYWx1ZS5tYXAoKHJlY29yZCwgaW5kZXgpID0+IHtcclxuICAgICAgdGhpcy5wcm9wTGlzdC5mb3JFYWNoKHByb3AgPT4ge1xyXG4gICAgICAgIGNvbnN0IHByb3BEYXRhID0geyBnZXRJbmplY3RlZDogdGhpcy5nZXRJbmplY3RlZCwgcmVjb3JkLCBpbmRleCB9IGFzIGFueTtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0Q29udGVudChwcm9wLnZhbHVlLCBwcm9wRGF0YSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHByb3BLZXkgPSBgXyR7cHJvcC52YWx1ZS5uYW1lfWA7XHJcbiAgICAgICAgcmVjb3JkW3Byb3BLZXldID0ge1xyXG4gICAgICAgICAgdmlzaWJsZTogcHJvcC52YWx1ZS52aXNpYmxlKHByb3BEYXRhKSxcclxuICAgICAgICAgIHZhbHVlLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKHByb3AudmFsdWUuY29tcG9uZW50KSB7XHJcblxyXG4gICAgICAgICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xyXG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBwcm92aWRlOiBQUk9QX0RBVEFfU1RSRUFNLFxyXG4gICAgICAgICAgICAgICAgdXNlVmFsdWU6IHZhbHVlLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIHBhcmVudDogdGhpcy5pbmplY3RvcixcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgcmVjb3JkW3Byb3BLZXldLmluamVjdG9yID0gaW5qZWN0b3I7XHJcbiAgICAgICAgICByZWNvcmRbcHJvcEtleV0uY29tcG9uZW50ID0gcHJvcC52YWx1ZS5jb21wb25lbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHJldHVybiByZWNvcmQ7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPG5neC1kYXRhdGFibGUgZGVmYXVsdCBbcm93c109XCJkYXRhXCIgW2NvdW50XT1cInJlY29yZHNUb3RhbFwiIFtsaXN0XT1cImxpc3RcIj5cclxuICA8bmd4LWRhdGF0YWJsZS1jb2x1bW5cclxuICAgICpuZ0lmPVwiYWN0aW9uc1RlbXBsYXRlIHx8IChhY3Rpb25MaXN0Lmxlbmd0aCAmJiBoYXNBdExlYXN0T25lUGVybWl0dGVkQWN0aW9uKVwiXHJcbiAgICBbbmFtZV09XCJhY3Rpb25zVGV4dCB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICBbbWF4V2lkdGhdPVwiY29sdW1uV2lkdGhzWzBdXCJcclxuICAgIFt3aWR0aF09XCJjb2x1bW5XaWR0aHNbMF1cIlxyXG4gICAgW3NvcnRhYmxlXT1cImZhbHNlXCJcclxuICA+XHJcbiAgICA8bmctdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC1pPVwicm93SW5kZXhcIiBuZ3gtZGF0YXRhYmxlLWNlbGwtdGVtcGxhdGU+XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImFjdGlvbnNUZW1wbGF0ZSB8fCBncmlkQWN0aW9uczsgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvdywgaW5kZXg6IGkgfVwiXHJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNncmlkQWN0aW9ucz5cclxuICAgICAgICA8YWJwLWdyaWQtYWN0aW9ucyBbaW5kZXhdPVwiaVwiIFtyZWNvcmRdPVwicm93XCIgdGV4dD1cIkFicFVpOjpBY3Rpb25zXCI+PC9hYnAtZ3JpZC1hY3Rpb25zPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L25neC1kYXRhdGFibGUtY29sdW1uPlxyXG5cclxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwcm9wIG9mIHByb3BMaXN0OyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cclxuICAgIDxuZ3gtZGF0YXRhYmxlLWNvbHVtblxyXG4gICAgICBbd2lkdGhdPVwiY29sdW1uV2lkdGhzW2kgKyAxXSB8fCAyMDBcIlxyXG4gICAgICBbbmFtZV09XCJwcm9wLmRpc3BsYXlOYW1lIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgW3Byb3BdPVwicHJvcC5uYW1lXCJcclxuICAgICAgW3NvcnRhYmxlXT1cInByb3Auc29ydGFibGVcIlxyXG4gICAgPlxyXG4gICAgICA8bmctdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC1pPVwiaW5kZXhcIiBuZ3gtZGF0YXRhYmxlLWNlbGwtdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqYWJwUGVybWlzc2lvbj1cInByb3AucGVybWlzc2lvbjsgcnVuQ2hhbmdlRGV0ZWN0aW9uOiBmYWxzZVwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvd1snXycgKyBwcm9wLm5hbWVdPy52aXNpYmxlXCI+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAqbmdJZj1cIiFyb3dbJ18nICsgcHJvcC5uYW1lXS5jb21wb25lbnQ7IGVsc2UgY29tcG9uZW50XCJcclxuICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInJvd1snXycgKyBwcm9wLm5hbWVdPy52YWx1ZSB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICBwcm9wLmFjdGlvbiAmJiBwcm9wLmFjdGlvbih7IGdldEluamVjdGVkOiBnZXRJbmplY3RlZCwgcmVjb3JkOiByb3csIGluZGV4OiBpIH0pXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJlbnRpdHlQcm9wVHlwZUNsYXNzZXNbcHJvcC50eXBlXVwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvaW50ZXJdPVwicHJvcC5hY3Rpb25cIlxyXG4gICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29tcG9uZW50PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgKm5nQ29tcG9uZW50T3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICByb3dbJ18nICsgcHJvcC5uYW1lXS5jb21wb25lbnQ7XHJcbiAgICAgICAgICAgICAgICBpbmplY3Rvcjogcm93WydfJyArIHByb3AubmFtZV0uaW5qZWN0b3JcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9uZ3gtZGF0YXRhYmxlLWNvbHVtbj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZ3gtZGF0YXRhYmxlPlxyXG4iXX0=
@@ -3,9 +3,9 @@ import { EXTENSIONS_ACTION_TYPE } from '../../tokens/extensions.token';
3
3
  import { AbstractActionsComponent } from '../abstract-actions/abstract-actions.component';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/common";
6
- import * as i2 from "@ng-bootstrap/ng-bootstrap";
7
- import * as i3 from "@abp/ng.core";
8
- import * as i4 from "@abp/ng.theme.shared";
6
+ import * as i2 from "@abp/ng.core";
7
+ import * as i3 from "@abp/ng.theme.shared";
8
+ import * as i4 from "@ng-bootstrap/ng-bootstrap";
9
9
  export class GridActionsComponent extends AbstractActionsComponent {
10
10
  constructor(injector) {
11
11
  super(injector);
@@ -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: "13.3.6", ngImport: i0, type: GridActionsComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
18
- GridActionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.6", type: GridActionsComponent, selector: "abp-grid-actions", inputs: { icon: "icon", index: "index", text: "text" }, providers: [
17
+ GridActionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: GridActionsComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
18
+ GridActionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.1", 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
- ], 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", directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { type: i2.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { type: i2.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { type: i4.EllipsisDirective, selector: "[abpEllipsis]", inputs: ["abpEllipsis", "title", "abpEllipsisEnabled"] }], pipes: { "abpLocalization": i3.LocalizationPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: GridActionsComponent, decorators: [{
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", "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: "14.2.1", 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: "13.3.6", ngImport: i0, type: PageToolbarComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
18
- PageToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.6", type: PageToolbarComponent, selector: "abp-page-toolbar", providers: [
17
+ PageToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: PageToolbarComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
18
+ PageToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.1", type: PageToolbarComponent, selector: "abp-page-toolbar", providers: [
19
19
  {
20
20
  provide: EXTENSIONS_ACTION_TYPE,
21
21
  useValue: 'toolbarActions',
22
22
  },
23
- ], exportAs: ["abpPageToolbar"], usesInheritance: true, ngImport: i0, template: "<div class=\"row justify-content-end mx-0\" id=\"AbpContentToolbar\">\r\n <div\r\n class=\"col-auto px-1 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 >\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", directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModuleFactory"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "createInjector": i3.CreateInjectorPipe, "abpLocalization": i2.LocalizationPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: PageToolbarComponent, decorators: [{
23
+ ], exportAs: ["abpPageToolbar"], usesInheritance: true, ngImport: i0, template: "<div class=\"row justify-content-end mx-0\" id=\"AbpContentToolbar\">\r\n <div\r\n class=\"col-auto px-1 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 >\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: "14.2.1", 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: "13.3.6", ngImport: i0, type: DisabledDirective, deps: [{ token: i1.NgControl, host: true }], target: i0.ɵɵFactoryTarget.Directive });
18
- DisabledDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.6", type: DisabledDirective, selector: "[abpDisabled]", inputs: { abpDisabled: "abpDisabled" }, usesOnChanges: true, ngImport: i0 });
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: DisabledDirective, decorators: [{
17
+ DisabledDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: DisabledDirective, deps: [{ token: i1.NgControl, host: true }], target: i0.ɵɵFactoryTarget.Directive });
18
+ DisabledDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.1", type: DisabledDirective, selector: "[abpDisabled]", inputs: { abpDisabled: "abpDisabled" }, usesOnChanges: true, ngImport: i0 });
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", 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: "13.3.6", ngImport: i0, type: PropDataDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
24
- PropDataDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.6", 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: "13.3.6", ngImport: i0, type: PropDataDirective, decorators: [{
23
+ PropDataDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", 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: "14.2.1", 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: "14.2.1", ngImport: i0, type: PropDataDirective, decorators: [{
26
26
  type: Directive,
27
27
  args: [{
28
28
  exportAs: 'abpPropData',
@@ -7,6 +7,26 @@ export class FormProps extends Props {
7
7
  this._ctor = FormPropList;
8
8
  }
9
9
  }
10
+ export class GroupedFormPropList {
11
+ constructor() {
12
+ this.items = [];
13
+ }
14
+ addItem(item) {
15
+ const groupName = item.group?.name;
16
+ let group = this.items.find(i => i.group?.name === groupName);
17
+ if (group) {
18
+ group.formPropList.addTail(item);
19
+ }
20
+ else {
21
+ group = {
22
+ formPropList: new FormPropList(),
23
+ group: item.group,
24
+ };
25
+ group.formPropList.addHead(item);
26
+ this.items.push(group);
27
+ }
28
+ }
29
+ }
10
30
  export class CreateFormPropsFactory extends PropsFactory {
11
31
  constructor() {
12
32
  super(...arguments);
@@ -21,7 +41,9 @@ export class EditFormPropsFactory extends PropsFactory {
21
41
  }
22
42
  export class FormProp extends Prop {
23
43
  constructor(options) {
24
- super(options.type, options.name, options.displayName, options.permission, options.visible, options.isExtra);
44
+ super(options.type, options.name, options.displayName, options.permission, options.visible, options.isExtra, options.template, options.className);
45
+ this.group = options.group;
46
+ this.className = options.className;
25
47
  this.asyncValidators = options.asyncValidators || (_ => []);
26
48
  this.validators = options.validators || (_ => []);
27
49
  this.disabled = options.disabled || (_ => false);
@@ -49,4 +71,4 @@ export class FormPropData extends PropData {
49
71
  function isFalsyValue(defaultValue) {
50
72
  return [0, '', false].indexOf(defaultValue) > -1;
51
73
  }
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1wcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLXNoYXJlZC9leHRlbnNpb25zL3NyYy9saWIvbW9kZWxzL2Zvcm0tcHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUNMLElBQUksRUFJSixRQUFRLEVBQ1IsUUFBUSxFQUVSLEtBQUssRUFDTCxZQUFZLEdBQ2IsTUFBTSxTQUFTLENBQUM7QUFFakIsTUFBTSxPQUFPLFlBQXNCLFNBQVEsUUFBd0I7Q0FBRztBQUV0RSxNQUFNLE9BQU8sU0FBbUIsU0FBUSxLQUFzQjtJQUE5RDs7UUFDWSxVQUFLLEdBQTBCLFlBQVksQ0FBQztJQUN4RCxDQUFDO0NBQUE7QUFFRCxNQUFNLE9BQU8sc0JBQWdDLFNBQVEsWUFBMEI7SUFBL0U7O1FBQ1ksVUFBSyxHQUF1QixTQUFTLENBQUM7SUFDbEQsQ0FBQztDQUFBO0FBRUQsTUFBTSxPQUFPLG9CQUE4QixTQUFRLFlBQTBCO0lBQTdFOztRQUNZLFVBQUssR0FBdUIsU0FBUyxDQUFDO0lBQ2xELENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxRQUFrQixTQUFRLElBQU87SUFVNUMsWUFBWSxPQUEyQjtRQUNyQyxLQUFLLENBQ0gsT0FBTyxDQUFDLElBQUksRUFDWixPQUFPLENBQUMsSUFBSSxFQUNaLE9BQU8sQ0FBQyxXQUFXLEVBQ25CLE9BQU8sQ0FBQyxVQUFVLEVBQ2xCLE9BQU8sQ0FBQyxPQUFPLEVBQ2YsT0FBTyxDQUFDLE9BQU8sQ0FDaEIsQ0FBQztRQUVGLElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDLGVBQWUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxJQUFJLEtBQUssQ0FBQztRQUNsRCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDckMsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQztRQUMxQyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDO0lBQ3ZGLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFVLE9BQTJCO1FBQ2hELE9BQU8sSUFBSSxRQUFRLENBQUksT0FBTyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQVUsY0FBb0M7UUFDN0QsT0FBTyxjQUFjLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sWUFBc0IsU0FBUSxRQUFXO0lBR3BELFlBQVksUUFBa0IsRUFBa0IsTUFBUztRQUN2RCxLQUFLLEVBQUUsQ0FBQztRQURzQyxXQUFNLEdBQU4sTUFBTSxDQUFHO1FBR3ZELElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakQsQ0FBQztDQUNGO0FBeUJELFNBQVMsWUFBWSxDQUFDLFlBQXNDO0lBQzFELE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDMUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFCUCB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IEluamVjdG9yLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFzeW5jVmFsaWRhdG9yRm4sIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE8gfSBmcm9tICd0cy10b29sYmVsdCc7XHJcbmltcG9ydCB7XHJcbiAgUHJvcCxcclxuICBQcm9wQ2FsbGJhY2ssXHJcbiAgUHJvcENvbnRyaWJ1dG9yQ2FsbGJhY2ssXHJcbiAgUHJvcENvbnRyaWJ1dG9yQ2FsbGJhY2tzLFxyXG4gIFByb3BEYXRhLFxyXG4gIFByb3BMaXN0LFxyXG4gIFByb3BQcmVkaWNhdGUsXHJcbiAgUHJvcHMsXHJcbiAgUHJvcHNGYWN0b3J5LFxyXG59IGZyb20gJy4vcHJvcHMnO1xyXG5cclxuZXhwb3J0IGNsYXNzIEZvcm1Qcm9wTGlzdDxSID0gYW55PiBleHRlbmRzIFByb3BMaXN0PFIsIEZvcm1Qcm9wPFI+PiB7fVxyXG5cclxuZXhwb3J0IGNsYXNzIEZvcm1Qcm9wczxSID0gYW55PiBleHRlbmRzIFByb3BzPEZvcm1Qcm9wTGlzdDxSPj4ge1xyXG4gIHByb3RlY3RlZCBfY3RvcjogVHlwZTxGb3JtUHJvcExpc3Q8Uj4+ID0gRm9ybVByb3BMaXN0O1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ3JlYXRlRm9ybVByb3BzRmFjdG9yeTxSID0gYW55PiBleHRlbmRzIFByb3BzRmFjdG9yeTxGb3JtUHJvcHM8Uj4+IHtcclxuICBwcm90ZWN0ZWQgX2N0b3I6IFR5cGU8Rm9ybVByb3BzPFI+PiA9IEZvcm1Qcm9wcztcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEVkaXRGb3JtUHJvcHNGYWN0b3J5PFIgPSBhbnk+IGV4dGVuZHMgUHJvcHNGYWN0b3J5PEZvcm1Qcm9wczxSPj4ge1xyXG4gIHByb3RlY3RlZCBfY3RvcjogVHlwZTxGb3JtUHJvcHM8Uj4+ID0gRm9ybVByb3BzO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRm9ybVByb3A8UiA9IGFueT4gZXh0ZW5kcyBQcm9wPFI+IHtcclxuICByZWFkb25seSB2YWxpZGF0b3JzOiBQcm9wQ2FsbGJhY2s8UiwgVmFsaWRhdG9yRm5bXT47XHJcbiAgcmVhZG9ubHkgYXN5bmNWYWxpZGF0b3JzOiBQcm9wQ2FsbGJhY2s8UiwgQXN5bmNWYWxpZGF0b3JGbltdPjtcclxuICByZWFkb25seSBkaXNhYmxlZDogUHJvcFByZWRpY2F0ZTxSPjtcclxuICByZWFkb25seSByZWFkb25seTogUHJvcFByZWRpY2F0ZTxSPjtcclxuICByZWFkb25seSBhdXRvY29tcGxldGU6IHN0cmluZztcclxuICByZWFkb25seSBkZWZhdWx0VmFsdWU6IGJvb2xlYW4gfCBudW1iZXIgfCBzdHJpbmcgfCBEYXRlO1xyXG4gIHJlYWRvbmx5IG9wdGlvbnM6IFByb3BDYWxsYmFjazxSLCBPYnNlcnZhYmxlPEFCUC5PcHRpb248YW55PltdPj4gfCB1bmRlZmluZWQ7XHJcbiAgcmVhZG9ubHkgaWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuXHJcbiAgY29uc3RydWN0b3Iob3B0aW9uczogRm9ybVByb3BPcHRpb25zPFI+KSB7XHJcbiAgICBzdXBlcihcclxuICAgICAgb3B0aW9ucy50eXBlLFxyXG4gICAgICBvcHRpb25zLm5hbWUsXHJcbiAgICAgIG9wdGlvbnMuZGlzcGxheU5hbWUsXHJcbiAgICAgIG9wdGlvbnMucGVybWlzc2lvbixcclxuICAgICAgb3B0aW9ucy52aXNpYmxlLFxyXG4gICAgICBvcHRpb25zLmlzRXh0cmEsXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuYXN5bmNWYWxpZGF0b3JzID0gb3B0aW9ucy5hc3luY1ZhbGlkYXRvcnMgfHwgKF8gPT4gW10pO1xyXG4gICAgdGhpcy52YWxpZGF0b3JzID0gb3B0aW9ucy52YWxpZGF0b3JzIHx8IChfID0+IFtdKTtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBvcHRpb25zLmRpc2FibGVkIHx8IChfID0+IGZhbHNlKTtcclxuICAgIHRoaXMucmVhZG9ubHkgPSBvcHRpb25zLnJlYWRvbmx5IHx8IChfID0+IGZhbHNlKTtcclxuICAgIHRoaXMuYXV0b2NvbXBsZXRlID0gb3B0aW9ucy5hdXRvY29tcGxldGUgfHwgJ29mZic7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zLm9wdGlvbnM7XHJcbiAgICB0aGlzLmlkID0gb3B0aW9ucy5pZCB8fCBvcHRpb25zLm5hbWU7XHJcbiAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBvcHRpb25zLmRlZmF1bHRWYWx1ZTtcclxuICAgIHRoaXMuZGVmYXVsdFZhbHVlID0gaXNGYWxzeVZhbHVlKGRlZmF1bHRWYWx1ZSkgPyBkZWZhdWx0VmFsdWUgOiBkZWZhdWx0VmFsdWUgfHwgbnVsbDtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBjcmVhdGU8UiA9IGFueT4ob3B0aW9uczogRm9ybVByb3BPcHRpb25zPFI+KSB7XHJcbiAgICByZXR1cm4gbmV3IEZvcm1Qcm9wPFI+KG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZU1hbnk8UiA9IGFueT4oYXJyYXlPZk9wdGlvbnM6IEZvcm1Qcm9wT3B0aW9uczxSPltdKSB7XHJcbiAgICByZXR1cm4gYXJyYXlPZk9wdGlvbnMubWFwKEZvcm1Qcm9wLmNyZWF0ZSk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRm9ybVByb3BEYXRhPFIgPSBhbnk+IGV4dGVuZHMgUHJvcERhdGE8Uj4ge1xyXG4gIGdldEluamVjdGVkOiBQcm9wRGF0YTxSPlsnZ2V0SW5qZWN0ZWQnXTtcclxuXHJcbiAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yLCBwdWJsaWMgcmVhZG9ubHkgcmVjb3JkOiBSKSB7XHJcbiAgICBzdXBlcigpO1xyXG5cclxuICAgIHRoaXMuZ2V0SW5qZWN0ZWQgPSBpbmplY3Rvci5nZXQuYmluZChpbmplY3Rvcik7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBGb3JtUHJvcE9wdGlvbnM8UiA9IGFueT4gPSBPLk9wdGlvbmFsPFxyXG4gIE8uV3JpdGFibGU8Rm9ybVByb3A8Uj4+LFxyXG4gIHwgJ3Blcm1pc3Npb24nXHJcbiAgfCAndmlzaWJsZSdcclxuICB8ICdkaXNwbGF5TmFtZSdcclxuICB8ICdpc0V4dHJhJ1xyXG4gIHwgJ3ZhbGlkYXRvcnMnXHJcbiAgfCAnYXN5bmNWYWxpZGF0b3JzJ1xyXG4gIHwgJ2Rpc2FibGVkJ1xyXG4gIHwgJ3JlYWRvbmx5J1xyXG4gIHwgJ2F1dG9jb21wbGV0ZSdcclxuICB8ICdkZWZhdWx0VmFsdWUnXHJcbiAgfCAnb3B0aW9ucydcclxuICB8ICdpZCdcclxuPjtcclxuXHJcbmV4cG9ydCB0eXBlIENyZWF0ZUZvcm1Qcm9wRGVmYXVsdHM8UiA9IGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBGb3JtUHJvcDxSPltdPjtcclxuZXhwb3J0IHR5cGUgQ3JlYXRlRm9ybVByb3BDb250cmlidXRvckNhbGxiYWNrPFIgPSBhbnk+ID0gUHJvcENvbnRyaWJ1dG9yQ2FsbGJhY2s8Rm9ybVByb3BMaXN0PFI+PjtcclxuZXhwb3J0IHR5cGUgQ3JlYXRlRm9ybVByb3BDb250cmlidXRvckNhbGxiYWNrczxSID0gYW55PiA9IFByb3BDb250cmlidXRvckNhbGxiYWNrczxGb3JtUHJvcExpc3Q8Uj4+O1xyXG5leHBvcnQgdHlwZSBFZGl0Rm9ybVByb3BEZWZhdWx0czxSID0gYW55PiA9IFJlY29yZDxzdHJpbmcsIEZvcm1Qcm9wPFI+W10+O1xyXG5leHBvcnQgdHlwZSBFZGl0Rm9ybVByb3BDb250cmlidXRvckNhbGxiYWNrPFIgPSBhbnk+ID0gUHJvcENvbnRyaWJ1dG9yQ2FsbGJhY2s8Rm9ybVByb3BMaXN0PFI+PjtcclxuZXhwb3J0IHR5cGUgRWRpdEZvcm1Qcm9wQ29udHJpYnV0b3JDYWxsYmFja3M8UiA9IGFueT4gPSBQcm9wQ29udHJpYnV0b3JDYWxsYmFja3M8Rm9ybVByb3BMaXN0PFI+PjtcclxuXHJcbmZ1bmN0aW9uIGlzRmFsc3lWYWx1ZShkZWZhdWx0VmFsdWU6IEZvcm1Qcm9wWydkZWZhdWx0VmFsdWUnXSk6IGJvb2xlYW4ge1xyXG4gIHJldHVybiBbMCwgJycsIGZhbHNlXS5pbmRleE9mKGRlZmF1bHRWYWx1ZSBhcyBhbnkpID4gLTE7XHJcbn1cclxuIl19
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1wcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLXNoYXJlZC9leHRlbnNpb25zL3NyYy9saWIvbW9kZWxzL2Zvcm0tcHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUNMLElBQUksRUFJSixRQUFRLEVBQ1IsUUFBUSxFQUVSLEtBQUssRUFDTCxZQUFZLEdBQ2IsTUFBTSxTQUFTLENBQUM7QUFFakIsTUFBTSxPQUFPLFlBQXNCLFNBQVEsUUFBd0I7Q0FBRztBQUV0RSxNQUFNLE9BQU8sU0FBbUIsU0FBUSxLQUFzQjtJQUE5RDs7UUFDWSxVQUFLLEdBQTBCLFlBQVksQ0FBQztJQUN4RCxDQUFDO0NBQUE7QUFPRCxNQUFNLE9BQU8sbUJBQW1CO0lBQWhDO1FBQ2tCLFVBQUssR0FBMEIsRUFBRSxDQUFDO0lBZXBELENBQUM7SUFkQyxPQUFPLENBQUMsSUFBaUI7UUFDdkIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUM7UUFDbkMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQztRQUM5RCxJQUFJLEtBQUssRUFBRTtZQUNULEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2xDO2FBQU07WUFDTCxLQUFLLEdBQUc7Z0JBQ04sWUFBWSxFQUFFLElBQUksWUFBWSxFQUFFO2dCQUNoQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7YUFDbEIsQ0FBQztZQUNGLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztDQUNGO0FBT0QsTUFBTSxPQUFPLHNCQUFnQyxTQUFRLFlBQTBCO0lBQS9FOztRQUNZLFVBQUssR0FBdUIsU0FBUyxDQUFDO0lBQ2xELENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxvQkFBOEIsU0FBUSxZQUEwQjtJQUE3RTs7UUFDWSxVQUFLLEdBQXVCLFNBQVMsQ0FBQztJQUNsRCxDQUFDO0NBQUE7QUFFRCxNQUFNLE9BQU8sUUFBa0IsU0FBUSxJQUFPO0lBYTVDLFlBQVksT0FBMkI7UUFDckMsS0FBSyxDQUNILE9BQU8sQ0FBQyxJQUFJLEVBQ1osT0FBTyxDQUFDLElBQUksRUFDWixPQUFPLENBQUMsV0FBVyxFQUNuQixPQUFPLENBQUMsVUFBVSxFQUNsQixPQUFPLENBQUMsT0FBTyxFQUNmLE9BQU8sQ0FBQyxPQUFPLEVBQ2YsT0FBTyxDQUFDLFFBQVEsRUFDaEIsT0FBTyxDQUFDLFNBQVMsQ0FDbEIsQ0FBQztRQUNGLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFFbkMsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxZQUFZLElBQUksS0FBSyxDQUFDO1FBQ2xELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUMvQixJQUFJLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQztRQUNyQyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQzFDLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUM7SUFDdkYsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQVUsT0FBMkI7UUFDaEQsT0FBTyxJQUFJLFFBQVEsQ0FBSSxPQUFPLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBVSxjQUFvQztRQUM3RCxPQUFPLGNBQWMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxZQUFzQixTQUFRLFFBQVc7SUFHcEQsWUFBWSxRQUFrQixFQUFrQixNQUFTO1FBQ3ZELEtBQUssRUFBRSxDQUFDO1FBRHNDLFdBQU0sR0FBTixNQUFNLENBQUc7UUFHdkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqRCxDQUFDO0NBQ0Y7QUF5QkQsU0FBUyxZQUFZLENBQUMsWUFBc0M7SUFDMUQsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMxRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUJQIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgSW5qZWN0b3IsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXN5bmNWYWxpZGF0b3JGbiwgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTyB9IGZyb20gJ3RzLXRvb2xiZWx0JztcclxuaW1wb3J0IHtcclxuICBQcm9wLFxyXG4gIFByb3BDYWxsYmFjayxcclxuICBQcm9wQ29udHJpYnV0b3JDYWxsYmFjayxcclxuICBQcm9wQ29udHJpYnV0b3JDYWxsYmFja3MsXHJcbiAgUHJvcERhdGEsXHJcbiAgUHJvcExpc3QsXHJcbiAgUHJvcFByZWRpY2F0ZSxcclxuICBQcm9wcyxcclxuICBQcm9wc0ZhY3RvcnksXHJcbn0gZnJvbSAnLi9wcm9wcyc7XHJcblxyXG5leHBvcnQgY2xhc3MgRm9ybVByb3BMaXN0PFIgPSBhbnk+IGV4dGVuZHMgUHJvcExpc3Q8UiwgRm9ybVByb3A8Uj4+IHt9XHJcblxyXG5leHBvcnQgY2xhc3MgRm9ybVByb3BzPFIgPSBhbnk+IGV4dGVuZHMgUHJvcHM8Rm9ybVByb3BMaXN0PFI+PiB7XHJcbiAgcHJvdGVjdGVkIF9jdG9yOiBUeXBlPEZvcm1Qcm9wTGlzdDxSPj4gPSBGb3JtUHJvcExpc3Q7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRm9ybVByb3BHcm91cCB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGNsYXNzTmFtZT86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEdyb3VwZWRGb3JtUHJvcExpc3Q8UiA9IGFueT4ge1xyXG4gIHB1YmxpYyByZWFkb25seSBpdGVtczogR3JvdXBlZEZvcm1Qcm9wSXRlbVtdID0gW107XHJcbiAgYWRkSXRlbShpdGVtOiBGb3JtUHJvcDxSPikge1xyXG4gICAgY29uc3QgZ3JvdXBOYW1lID0gaXRlbS5ncm91cD8ubmFtZTtcclxuICAgIGxldCBncm91cCA9IHRoaXMuaXRlbXMuZmluZChpID0+IGkuZ3JvdXA/Lm5hbWUgPT09IGdyb3VwTmFtZSk7XHJcbiAgICBpZiAoZ3JvdXApIHtcclxuICAgICAgZ3JvdXAuZm9ybVByb3BMaXN0LmFkZFRhaWwoaXRlbSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBncm91cCA9IHtcclxuICAgICAgICBmb3JtUHJvcExpc3Q6IG5ldyBGb3JtUHJvcExpc3QoKSxcclxuICAgICAgICBncm91cDogaXRlbS5ncm91cCxcclxuICAgICAgfTtcclxuICAgICAgZ3JvdXAuZm9ybVByb3BMaXN0LmFkZEhlYWQoaXRlbSk7XHJcbiAgICAgIHRoaXMuaXRlbXMucHVzaChncm91cCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEdyb3VwZWRGb3JtUHJvcEl0ZW0ge1xyXG4gIGdyb3VwOiBGb3JtUHJvcEdyb3VwO1xyXG4gIGZvcm1Qcm9wTGlzdDogRm9ybVByb3BMaXN0O1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ3JlYXRlRm9ybVByb3BzRmFjdG9yeTxSID0gYW55PiBleHRlbmRzIFByb3BzRmFjdG9yeTxGb3JtUHJvcHM8Uj4+IHtcclxuICBwcm90ZWN0ZWQgX2N0b3I6IFR5cGU8Rm9ybVByb3BzPFI+PiA9IEZvcm1Qcm9wcztcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEVkaXRGb3JtUHJvcHNGYWN0b3J5PFIgPSBhbnk+IGV4dGVuZHMgUHJvcHNGYWN0b3J5PEZvcm1Qcm9wczxSPj4ge1xyXG4gIHByb3RlY3RlZCBfY3RvcjogVHlwZTxGb3JtUHJvcHM8Uj4+ID0gRm9ybVByb3BzO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRm9ybVByb3A8UiA9IGFueT4gZXh0ZW5kcyBQcm9wPFI+IHtcclxuICByZWFkb25seSB2YWxpZGF0b3JzOiBQcm9wQ2FsbGJhY2s8UiwgVmFsaWRhdG9yRm5bXT47XHJcbiAgcmVhZG9ubHkgYXN5bmNWYWxpZGF0b3JzOiBQcm9wQ2FsbGJhY2s8UiwgQXN5bmNWYWxpZGF0b3JGbltdPjtcclxuICByZWFkb25seSBkaXNhYmxlZDogUHJvcFByZWRpY2F0ZTxSPjtcclxuICByZWFkb25seSByZWFkb25seTogUHJvcFByZWRpY2F0ZTxSPjtcclxuICByZWFkb25seSBhdXRvY29tcGxldGU6IHN0cmluZztcclxuICByZWFkb25seSBkZWZhdWx0VmFsdWU6IGJvb2xlYW4gfCBudW1iZXIgfCBzdHJpbmcgfCBEYXRlO1xyXG4gIHJlYWRvbmx5IG9wdGlvbnM6IFByb3BDYWxsYmFjazxSLCBPYnNlcnZhYmxlPEFCUC5PcHRpb248YW55PltdPj4gfCB1bmRlZmluZWQ7XHJcbiAgcmVhZG9ubHkgaWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICByZWFkb25seSB0ZW1wbGF0ZT86IFR5cGU8YW55PjtcclxuICByZWFkb25seSBjbGFzc05hbWU/OiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgZ3JvdXA/OiBGb3JtUHJvcEdyb3VwIHwgdW5kZWZpbmVkO1xyXG5cclxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBGb3JtUHJvcE9wdGlvbnM8Uj4pIHtcclxuICAgIHN1cGVyKFxyXG4gICAgICBvcHRpb25zLnR5cGUsXHJcbiAgICAgIG9wdGlvbnMubmFtZSxcclxuICAgICAgb3B0aW9ucy5kaXNwbGF5TmFtZSxcclxuICAgICAgb3B0aW9ucy5wZXJtaXNzaW9uLFxyXG4gICAgICBvcHRpb25zLnZpc2libGUsXHJcbiAgICAgIG9wdGlvbnMuaXNFeHRyYSxcclxuICAgICAgb3B0aW9ucy50ZW1wbGF0ZSxcclxuICAgICAgb3B0aW9ucy5jbGFzc05hbWUsXHJcbiAgICApO1xyXG4gICAgdGhpcy5ncm91cCA9IG9wdGlvbnMuZ3JvdXA7XHJcbiAgICB0aGlzLmNsYXNzTmFtZSA9IG9wdGlvbnMuY2xhc3NOYW1lO1xyXG5cclxuICAgIHRoaXMuYXN5bmNWYWxpZGF0b3JzID0gb3B0aW9ucy5hc3luY1ZhbGlkYXRvcnMgfHwgKF8gPT4gW10pO1xyXG4gICAgdGhpcy52YWxpZGF0b3JzID0gb3B0aW9ucy52YWxpZGF0b3JzIHx8IChfID0+IFtdKTtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBvcHRpb25zLmRpc2FibGVkIHx8IChfID0+IGZhbHNlKTtcclxuICAgIHRoaXMucmVhZG9ubHkgPSBvcHRpb25zLnJlYWRvbmx5IHx8IChfID0+IGZhbHNlKTtcclxuICAgIHRoaXMuYXV0b2NvbXBsZXRlID0gb3B0aW9ucy5hdXRvY29tcGxldGUgfHwgJ29mZic7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zLm9wdGlvbnM7XHJcbiAgICB0aGlzLmlkID0gb3B0aW9ucy5pZCB8fCBvcHRpb25zLm5hbWU7XHJcbiAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBvcHRpb25zLmRlZmF1bHRWYWx1ZTtcclxuICAgIHRoaXMuZGVmYXVsdFZhbHVlID0gaXNGYWxzeVZhbHVlKGRlZmF1bHRWYWx1ZSkgPyBkZWZhdWx0VmFsdWUgOiBkZWZhdWx0VmFsdWUgfHwgbnVsbDtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBjcmVhdGU8UiA9IGFueT4ob3B0aW9uczogRm9ybVByb3BPcHRpb25zPFI+KSB7XHJcbiAgICByZXR1cm4gbmV3IEZvcm1Qcm9wPFI+KG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZU1hbnk8UiA9IGFueT4oYXJyYXlPZk9wdGlvbnM6IEZvcm1Qcm9wT3B0aW9uczxSPltdKSB7XHJcbiAgICByZXR1cm4gYXJyYXlPZk9wdGlvbnMubWFwKEZvcm1Qcm9wLmNyZWF0ZSk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRm9ybVByb3BEYXRhPFIgPSBhbnk+IGV4dGVuZHMgUHJvcERhdGE8Uj4ge1xyXG4gIGdldEluamVjdGVkOiBQcm9wRGF0YTxSPlsnZ2V0SW5qZWN0ZWQnXTtcclxuXHJcbiAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yLCBwdWJsaWMgcmVhZG9ubHkgcmVjb3JkOiBSKSB7XHJcbiAgICBzdXBlcigpO1xyXG5cclxuICAgIHRoaXMuZ2V0SW5qZWN0ZWQgPSBpbmplY3Rvci5nZXQuYmluZChpbmplY3Rvcik7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBGb3JtUHJvcE9wdGlvbnM8UiA9IGFueT4gPSBPLk9wdGlvbmFsPFxyXG4gIE8uV3JpdGFibGU8Rm9ybVByb3A8Uj4+LFxyXG4gIHwgJ3Blcm1pc3Npb24nXHJcbiAgfCAndmlzaWJsZSdcclxuICB8ICdkaXNwbGF5TmFtZSdcclxuICB8ICdpc0V4dHJhJ1xyXG4gIHwgJ3ZhbGlkYXRvcnMnXHJcbiAgfCAnYXN5bmNWYWxpZGF0b3JzJ1xyXG4gIHwgJ2Rpc2FibGVkJ1xyXG4gIHwgJ3JlYWRvbmx5J1xyXG4gIHwgJ2F1dG9jb21wbGV0ZSdcclxuICB8ICdkZWZhdWx0VmFsdWUnXHJcbiAgfCAnb3B0aW9ucydcclxuICB8ICdpZCdcclxuPjtcclxuXHJcbmV4cG9ydCB0eXBlIENyZWF0ZUZvcm1Qcm9wRGVmYXVsdHM8UiA9IGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBGb3JtUHJvcDxSPltdPjtcclxuZXhwb3J0IHR5cGUgQ3JlYXRlRm9ybVByb3BDb250cmlidXRvckNhbGxiYWNrPFIgPSBhbnk+ID0gUHJvcENvbnRyaWJ1dG9yQ2FsbGJhY2s8Rm9ybVByb3BMaXN0PFI+PjtcclxuZXhwb3J0IHR5cGUgQ3JlYXRlRm9ybVByb3BDb250cmlidXRvckNhbGxiYWNrczxSID0gYW55PiA9IFByb3BDb250cmlidXRvckNhbGxiYWNrczxGb3JtUHJvcExpc3Q8Uj4+O1xyXG5leHBvcnQgdHlwZSBFZGl0Rm9ybVByb3BEZWZhdWx0czxSID0gYW55PiA9IFJlY29yZDxzdHJpbmcsIEZvcm1Qcm9wPFI+W10+O1xyXG5leHBvcnQgdHlwZSBFZGl0Rm9ybVByb3BDb250cmlidXRvckNhbGxiYWNrPFIgPSBhbnk+ID0gUHJvcENvbnRyaWJ1dG9yQ2FsbGJhY2s8Rm9ybVByb3BMaXN0PFI+PjtcclxuZXhwb3J0IHR5cGUgRWRpdEZvcm1Qcm9wQ29udHJpYnV0b3JDYWxsYmFja3M8UiA9IGFueT4gPSBQcm9wQ29udHJpYnV0b3JDYWxsYmFja3M8Rm9ybVByb3BMaXN0PFI+PjtcclxuXHJcbmZ1bmN0aW9uIGlzRmFsc3lWYWx1ZShkZWZhdWx0VmFsdWU6IEZvcm1Qcm9wWydkZWZhdWx0VmFsdWUnXSk6IGJvb2xlYW4ge1xyXG4gIHJldHVybiBbMCwgJycsIGZhbHNlXS5pbmRleE9mKGRlZmF1bHRWYWx1ZSBhcyBhbnkpID4gLTE7XHJcbn1cclxuIl19
@@ -11,13 +11,15 @@ export class PropData {
11
11
  }
12
12
  }
13
13
  export class Prop {
14
- constructor(type, name, displayName, permission, visible = _ => true, isExtra = false) {
14
+ constructor(type, name, displayName, permission, visible = _ => true, isExtra = false, template, className) {
15
15
  this.type = type;
16
16
  this.name = name;
17
17
  this.displayName = displayName;
18
18
  this.permission = permission;
19
19
  this.visible = visible;
20
20
  this.isExtra = isExtra;
21
+ this.template = template;
22
+ this.className = className;
21
23
  this.displayName = this.displayName || this.name;
22
24
  }
23
25
  }
@@ -47,4 +49,4 @@ export class Props {
47
49
  this.callbackList.pop();
48
50
  }
49
51
  }
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1zaGFyZWQvZXh0ZW5zaW9ucy9zcmMvbGliL21vZGVscy9wcm9wcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBS3hDLE1BQU0sT0FBZ0IsUUFBK0IsU0FBUSxVQUFhO0NBQUc7QUFFN0UsTUFBTSxPQUFnQixRQUFRO0lBUzVCLElBQUksSUFBSTtRQUNOLE9BQU87WUFDTCxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtTQUNwQixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBSUQsTUFBTSxPQUFnQixJQUFJO0lBQ3hCLFlBQ2tCLElBQWUsRUFDZixJQUFZLEVBQ1osV0FBbUIsRUFDbkIsVUFBa0IsRUFDbEIsVUFBNEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQ3JDLFVBQVUsS0FBSztRQUxmLFNBQUksR0FBSixJQUFJLENBQVc7UUFDZixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNsQixZQUFPLEdBQVAsT0FBTyxDQUE4QjtRQUNyQyxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBRS9CLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25ELENBQUM7Q0FDRjtBQUtELE1BQU0sT0FBZ0IsWUFBWTtJQUFsQztRQUVVLHlCQUFvQixHQUFrRCxFQUFFLENBQUM7SUFPbkYsQ0FBQztJQUxDLEdBQUcsQ0FBQyxJQUFZO1FBQ2QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFeEUsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFnQixLQUFLO0lBV3pCLFlBQTZCLFlBQTBDO1FBQTFDLGlCQUFZLEdBQVosWUFBWSxDQUE4QjtJQUFHLENBQUM7SUFSM0UsSUFBSSxLQUFLO1FBQ1AsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUUxRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBSUQsY0FBYyxDQUFDLGtCQUE4QztRQUMzRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTTtZQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDM0QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGlua2VkTGlzdCB9IGZyb20gJ0BhYnAvdXRpbHMnO1xyXG5pbXBvcnQgeyBJbmplY3RGbGFncywgSW5qZWN0aW9uVG9rZW4sIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTyB9IGZyb20gJ3RzLXRvb2xiZWx0JztcclxuaW1wb3J0IHsgZVByb3BUeXBlIH0gZnJvbSAnLi4vZW51bXMvcHJvcHMuZW51bSc7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUHJvcExpc3Q8UiA9IGFueSwgQSA9IFByb3A8Uj4+IGV4dGVuZHMgTGlua2VkTGlzdDxBPiB7fVxyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFByb3BEYXRhPFIgPSBhbnk+IHtcclxuICBhYnN0cmFjdCBnZXRJbmplY3RlZDogPFQ+KFxyXG4gICAgdG9rZW46IFR5cGU8VD4gfCBJbmplY3Rpb25Ub2tlbjxUPixcclxuICAgIG5vdEZvdW5kVmFsdWU/OiBULFxyXG4gICAgZmxhZ3M/OiBJbmplY3RGbGFncyxcclxuICApID0+IFQ7XHJcbiAgaW5kZXg/OiBudW1iZXI7XHJcbiAgYWJzdHJhY3QgcmVjb3JkOiBSO1xyXG5cclxuICBnZXQgZGF0YSgpOiBSZWFkb25seVByb3BEYXRhPFI+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGdldEluamVjdGVkOiB0aGlzLmdldEluamVjdGVkLFxyXG4gICAgICBpbmRleDogdGhpcy5pbmRleCxcclxuICAgICAgcmVjb3JkOiB0aGlzLnJlY29yZCxcclxuICAgIH07XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBSZWFkb25seVByb3BEYXRhPFIgPSBhbnk+ID0gTy5SZWFkb25seTxPbWl0PFByb3BEYXRhPFI+LCAnZGF0YSc+PjtcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQcm9wPFIgPSBhbnk+IHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZWFkb25seSB0eXBlOiBlUHJvcFR5cGUsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGRpc3BsYXlOYW1lOiBzdHJpbmcsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgcGVybWlzc2lvbjogc3RyaW5nLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IHZpc2libGU6IFByb3BQcmVkaWNhdGU8Uj4gPSBfID0+IHRydWUsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgaXNFeHRyYSA9IGZhbHNlLFxyXG4gICkge1xyXG4gICAgdGhpcy5kaXNwbGF5TmFtZSA9IHRoaXMuZGlzcGxheU5hbWUgfHwgdGhpcy5uYW1lO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUHJvcENhbGxiYWNrPFQsIFIgPSBhbnk+ID0gKGRhdGE6IE9taXQ8UHJvcERhdGE8VD4sICdkYXRhJz4sIGF1eERhdGE/OiBhbnkpID0+IFI7XHJcbmV4cG9ydCB0eXBlIFByb3BQcmVkaWNhdGU8VD4gPSAoZGF0YT86IE9taXQ8UHJvcERhdGE8VD4sICdkYXRhJz4sIGF1eERhdGE/OiBhbnkpID0+IGJvb2xlYW47XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUHJvcHNGYWN0b3J5PEMgZXh0ZW5kcyBQcm9wczxhbnk+PiB7XHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IF9jdG9yOiBUeXBlPEM+O1xyXG4gIHByaXZhdGUgY29udHJpYnV0b3JDYWxsYmFja3M6IFByb3BDb250cmlidXRvckNhbGxiYWNrczxJbmZlcnJlZFByb3BMaXN0PEM+PiA9IHt9O1xyXG5cclxuICBnZXQobmFtZTogc3RyaW5nKTogQyB7XHJcbiAgICB0aGlzLmNvbnRyaWJ1dG9yQ2FsbGJhY2tzW25hbWVdID0gdGhpcy5jb250cmlidXRvckNhbGxiYWNrc1tuYW1lXSB8fCBbXTtcclxuXHJcbiAgICByZXR1cm4gbmV3IHRoaXMuX2N0b3IodGhpcy5jb250cmlidXRvckNhbGxiYWNrc1tuYW1lXSk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUHJvcHM8TCBleHRlbmRzIFByb3BMaXN0PiB7XHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IF9jdG9yOiBUeXBlPEw+O1xyXG5cclxuICBnZXQgcHJvcHMoKTogTCB7XHJcbiAgICBjb25zdCBwcm9wTGlzdCA9IG5ldyB0aGlzLl9jdG9yKCk7XHJcblxyXG4gICAgdGhpcy5jYWxsYmFja0xpc3QuZm9yRWFjaChjYWxsYmFjayA9PiBjYWxsYmFjayhwcm9wTGlzdCkpO1xyXG5cclxuICAgIHJldHVybiBwcm9wTGlzdDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY2FsbGJhY2tMaXN0OiBQcm9wQ29udHJpYnV0b3JDYWxsYmFjazxMPltdKSB7fVxyXG5cclxuICBhZGRDb250cmlidXRvcihjb250cmlidXRlQ2FsbGJhY2s6IFByb3BDb250cmlidXRvckNhbGxiYWNrPEw+KSB7XHJcbiAgICB0aGlzLmNhbGxiYWNrTGlzdC5wdXNoKGNvbnRyaWJ1dGVDYWxsYmFjayk7XHJcbiAgfVxyXG5cclxuICBjbGVhckNvbnRyaWJ1dG9ycygpIHtcclxuICAgIHdoaWxlICh0aGlzLmNhbGxiYWNrTGlzdC5sZW5ndGgpIHRoaXMuY2FsbGJhY2tMaXN0LnBvcCgpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUHJvcENvbnRyaWJ1dG9yQ2FsbGJhY2tzPEwgZXh0ZW5kcyBQcm9wTGlzdDxhbnk+PiA9IFJlY29yZDxcclxuICBzdHJpbmcsXHJcbiAgUHJvcENvbnRyaWJ1dG9yQ2FsbGJhY2s8TD5bXVxyXG4+O1xyXG5cclxuZXhwb3J0IHR5cGUgUHJvcENvbnRyaWJ1dG9yQ2FsbGJhY2s8TCBleHRlbmRzIFByb3BMaXN0PGFueT4+ID0gKHByb3BMaXN0OiBMKSA9PiBhbnk7XHJcblxyXG50eXBlIEluZmVycmVkUHJvcExpc3Q8Qz4gPSBDIGV4dGVuZHMgUHJvcHM8aW5mZXIgTD4gPyBMIDogbmV2ZXI7XHJcbiJdfQ==
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1zaGFyZWQvZXh0ZW5zaW9ucy9zcmMvbGliL21vZGVscy9wcm9wcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBS3hDLE1BQU0sT0FBZ0IsUUFBK0IsU0FBUSxVQUFhO0NBQUc7QUFFN0UsTUFBTSxPQUFnQixRQUFRO0lBUzVCLElBQUksSUFBSTtRQUNOLE9BQU87WUFDTCxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtTQUNwQixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBSUQsTUFBTSxPQUFnQixJQUFJO0lBQ3hCLFlBQ2tCLElBQWUsRUFDZixJQUFZLEVBQ1osV0FBbUIsRUFDbkIsVUFBa0IsRUFDbEIsVUFBNEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQ3JDLFVBQVUsS0FBSyxFQUNmLFFBQW9CLEVBQ3BCLFNBQWtCO1FBUGxCLFNBQUksR0FBSixJQUFJLENBQVc7UUFDZixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNsQixZQUFPLEdBQVAsT0FBTyxDQUE4QjtRQUNyQyxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsYUFBUSxHQUFSLFFBQVEsQ0FBWTtRQUNwQixjQUFTLEdBQVQsU0FBUyxDQUFTO1FBRWxDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25ELENBQUM7Q0FDRjtBQUtELE1BQU0sT0FBZ0IsWUFBWTtJQUFsQztRQUVVLHlCQUFvQixHQUFrRCxFQUFFLENBQUM7SUFPbkYsQ0FBQztJQUxDLEdBQUcsQ0FBQyxJQUFZO1FBQ2QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFeEUsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFnQixLQUFLO0lBV3pCLFlBQTZCLFlBQTBDO1FBQTFDLGlCQUFZLEdBQVosWUFBWSxDQUE4QjtJQUFHLENBQUM7SUFSM0UsSUFBSSxLQUFLO1FBQ1AsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUUxRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBSUQsY0FBYyxDQUFDLGtCQUE4QztRQUMzRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTTtZQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDM0QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGlua2VkTGlzdCB9IGZyb20gJ0BhYnAvdXRpbHMnO1xyXG5pbXBvcnQgeyBJbmplY3RGbGFncywgSW5qZWN0aW9uVG9rZW4sIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTyB9IGZyb20gJ3RzLXRvb2xiZWx0JztcclxuaW1wb3J0IHsgZVByb3BUeXBlIH0gZnJvbSAnLi4vZW51bXMvcHJvcHMuZW51bSc7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUHJvcExpc3Q8UiA9IGFueSwgQSA9IFByb3A8Uj4+IGV4dGVuZHMgTGlua2VkTGlzdDxBPiB7fVxyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFByb3BEYXRhPFIgPSBhbnk+IHtcclxuICBhYnN0cmFjdCBnZXRJbmplY3RlZDogPFQ+KFxyXG4gICAgdG9rZW46IFR5cGU8VD4gfCBJbmplY3Rpb25Ub2tlbjxUPixcclxuICAgIG5vdEZvdW5kVmFsdWU/OiBULFxyXG4gICAgZmxhZ3M/OiBJbmplY3RGbGFncyxcclxuICApID0+IFQ7XHJcbiAgaW5kZXg/OiBudW1iZXI7XHJcbiAgYWJzdHJhY3QgcmVjb3JkOiBSO1xyXG5cclxuICBnZXQgZGF0YSgpOiBSZWFkb25seVByb3BEYXRhPFI+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGdldEluamVjdGVkOiB0aGlzLmdldEluamVjdGVkLFxyXG4gICAgICBpbmRleDogdGhpcy5pbmRleCxcclxuICAgICAgcmVjb3JkOiB0aGlzLnJlY29yZCxcclxuICAgIH07XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBSZWFkb25seVByb3BEYXRhPFIgPSBhbnk+ID0gTy5SZWFkb25seTxPbWl0PFByb3BEYXRhPFI+LCAnZGF0YSc+PjtcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQcm9wPFIgPSBhbnk+IHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZWFkb25seSB0eXBlOiBlUHJvcFR5cGUsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGRpc3BsYXlOYW1lOiBzdHJpbmcsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgcGVybWlzc2lvbjogc3RyaW5nLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IHZpc2libGU6IFByb3BQcmVkaWNhdGU8Uj4gPSBfID0+IHRydWUsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgaXNFeHRyYSA9IGZhbHNlLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IHRlbXBsYXRlPzogVHlwZTxhbnk+LFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGNsYXNzTmFtZT86IHN0cmluZyxcclxuICApIHtcclxuICAgIHRoaXMuZGlzcGxheU5hbWUgPSB0aGlzLmRpc3BsYXlOYW1lIHx8IHRoaXMubmFtZTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFByb3BDYWxsYmFjazxULCBSID0gYW55PiA9IChkYXRhOiBPbWl0PFByb3BEYXRhPFQ+LCAnZGF0YSc+LCBhdXhEYXRhPzogYW55KSA9PiBSO1xyXG5leHBvcnQgdHlwZSBQcm9wUHJlZGljYXRlPFQ+ID0gKGRhdGE/OiBPbWl0PFByb3BEYXRhPFQ+LCAnZGF0YSc+LCBhdXhEYXRhPzogYW55KSA9PiBib29sZWFuO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFByb3BzRmFjdG9yeTxDIGV4dGVuZHMgUHJvcHM8YW55Pj4ge1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBfY3RvcjogVHlwZTxDPjtcclxuICBwcml2YXRlIGNvbnRyaWJ1dG9yQ2FsbGJhY2tzOiBQcm9wQ29udHJpYnV0b3JDYWxsYmFja3M8SW5mZXJyZWRQcm9wTGlzdDxDPj4gPSB7fTtcclxuXHJcbiAgZ2V0KG5hbWU6IHN0cmluZyk6IEMge1xyXG4gICAgdGhpcy5jb250cmlidXRvckNhbGxiYWNrc1tuYW1lXSA9IHRoaXMuY29udHJpYnV0b3JDYWxsYmFja3NbbmFtZV0gfHwgW107XHJcblxyXG4gICAgcmV0dXJuIG5ldyB0aGlzLl9jdG9yKHRoaXMuY29udHJpYnV0b3JDYWxsYmFja3NbbmFtZV0pO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFByb3BzPEwgZXh0ZW5kcyBQcm9wTGlzdD4ge1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBfY3RvcjogVHlwZTxMPjtcclxuXHJcbiAgZ2V0IHByb3BzKCk6IEwge1xyXG4gICAgY29uc3QgcHJvcExpc3QgPSBuZXcgdGhpcy5fY3RvcigpO1xyXG5cclxuICAgIHRoaXMuY2FsbGJhY2tMaXN0LmZvckVhY2goY2FsbGJhY2sgPT4gY2FsbGJhY2socHJvcExpc3QpKTtcclxuXHJcbiAgICByZXR1cm4gcHJvcExpc3Q7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNhbGxiYWNrTGlzdDogUHJvcENvbnRyaWJ1dG9yQ2FsbGJhY2s8TD5bXSkge31cclxuXHJcbiAgYWRkQ29udHJpYnV0b3IoY29udHJpYnV0ZUNhbGxiYWNrOiBQcm9wQ29udHJpYnV0b3JDYWxsYmFjazxMPikge1xyXG4gICAgdGhpcy5jYWxsYmFja0xpc3QucHVzaChjb250cmlidXRlQ2FsbGJhY2spO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJDb250cmlidXRvcnMoKSB7XHJcbiAgICB3aGlsZSAodGhpcy5jYWxsYmFja0xpc3QubGVuZ3RoKSB0aGlzLmNhbGxiYWNrTGlzdC5wb3AoKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFByb3BDb250cmlidXRvckNhbGxiYWNrczxMIGV4dGVuZHMgUHJvcExpc3Q8YW55Pj4gPSBSZWNvcmQ8XHJcbiAgc3RyaW5nLFxyXG4gIFByb3BDb250cmlidXRvckNhbGxiYWNrPEw+W11cclxuPjtcclxuXHJcbmV4cG9ydCB0eXBlIFByb3BDb250cmlidXRvckNhbGxiYWNrPEwgZXh0ZW5kcyBQcm9wTGlzdDxhbnk+PiA9IChwcm9wTGlzdDogTCkgPT4gYW55O1xyXG5cclxudHlwZSBJbmZlcnJlZFByb3BMaXN0PEM+ID0gQyBleHRlbmRzIFByb3BzPGluZmVyIEw+ID8gTCA6IG5ldmVyO1xyXG4iXX0=