@vendure/admin-ui 2.0.0-next.4 → 2.0.0-next.8

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 (109) hide show
  1. package/catalog/catalog.module.d.ts +10 -11
  2. package/catalog/components/collection-contents/collection-contents.component.d.ts +3 -1
  3. package/catalog/components/collection-detail/collection-detail.component.d.ts +2 -0
  4. package/catalog/components/product-variants-editor/product-variants-editor.component.d.ts +13 -10
  5. package/catalog/public_api.d.ts +0 -1
  6. package/core/common/generated-types.d.ts +5 -0
  7. package/core/common/utilities/selection-manager.d.ts +23 -0
  8. package/core/common/version.d.ts +1 -1
  9. package/core/components/app-shell/app-shell.component.d.ts +1 -0
  10. package/core/public_api.d.ts +5 -0
  11. package/core/shared/components/asset-gallery/asset-gallery.component.d.ts +27 -3
  12. package/core/shared/components/configurable-input/configurable-input.component.d.ts +8 -3
  13. package/core/shared/components/data-table/data-table.component.d.ts +5 -2
  14. package/core/shared/components/product-multi-selector-dialog/product-multi-selector-dialog.component.d.ts +38 -0
  15. package/{catalog → core/shared}/components/product-search-input/product-search-input.component.d.ts +1 -1
  16. package/core/shared/components/select-toggle/select-toggle.component.d.ts +2 -1
  17. package/core/shared/dynamic-form-inputs/combination-mode-form-input/combination-mode-form-input.component.d.ts +28 -0
  18. package/core/shared/dynamic-form-inputs/product-multi-selector-form-input/product-multi-selector-form-input.component.d.ts +23 -0
  19. package/core/shared/dynamic-form-inputs/register-dynamic-input-components.d.ts +3 -1
  20. package/core/shared/dynamic-form-inputs/relation-form-input/asset/relation-asset-input.component.d.ts +6 -3
  21. package/core/shared/shared.module.d.ts +32 -28
  22. package/esm2020/catalog/catalog.module.mjs +1 -5
  23. package/esm2020/catalog/components/assets/assets.component.mjs +2 -2
  24. package/esm2020/catalog/components/collection-contents/collection-contents.component.mjs +12 -4
  25. package/esm2020/catalog/components/collection-detail/collection-detail.component.mjs +21 -6
  26. package/esm2020/catalog/components/collection-list/collection-list.component.mjs +1 -1
  27. package/esm2020/catalog/components/product-detail/product-detail.component.mjs +2 -2
  28. package/esm2020/catalog/components/product-list/product-list.component.mjs +7 -8
  29. package/esm2020/catalog/components/product-variants-editor/product-variants-editor.component.mjs +8 -3
  30. package/esm2020/catalog/components/product-variants-list/product-variants-list.component.mjs +2 -2
  31. package/esm2020/catalog/public_api.mjs +1 -2
  32. package/esm2020/core/common/generated-types.mjs +1 -1
  33. package/esm2020/core/common/utilities/configurable-operation-utils.mjs +2 -2
  34. package/esm2020/core/common/utilities/selection-manager.mjs +64 -0
  35. package/esm2020/core/common/version.mjs +2 -2
  36. package/esm2020/core/components/app-shell/app-shell.component.mjs +6 -5
  37. package/esm2020/core/components/main-nav/main-nav.component.mjs +3 -3
  38. package/esm2020/core/data/definitions/order-definitions.mjs +431 -430
  39. package/esm2020/core/public_api.mjs +6 -1
  40. package/esm2020/core/shared/components/address-form/address-form.component.mjs +3 -3
  41. package/esm2020/core/shared/components/asset-gallery/asset-gallery.component.mjs +33 -50
  42. package/esm2020/core/shared/components/configurable-input/configurable-input.component.mjs +15 -4
  43. package/esm2020/core/shared/components/data-table/data-table.component.mjs +10 -3
  44. package/esm2020/core/shared/components/formatted-address/formatted-address.component.mjs +3 -3
  45. package/esm2020/core/shared/components/product-multi-selector-dialog/product-multi-selector-dialog.component.mjs +135 -0
  46. package/esm2020/core/shared/components/product-search-input/product-search-input.component.mjs +108 -0
  47. package/esm2020/core/shared/components/rich-text-editor/rich-text-editor.component.mjs +2 -2
  48. package/esm2020/core/shared/components/select-toggle/select-toggle.component.mjs +6 -3
  49. package/esm2020/core/shared/dynamic-form-inputs/combination-mode-form-input/combination-mode-form-input.component.mjs +45 -0
  50. package/esm2020/core/shared/dynamic-form-inputs/product-multi-selector-form-input/product-multi-selector-form-input.component.mjs +48 -0
  51. package/esm2020/core/shared/dynamic-form-inputs/register-dynamic-input-components.mjs +5 -1
  52. package/esm2020/core/shared/dynamic-form-inputs/relation-form-input/asset/relation-asset-input.component.mjs +11 -9
  53. package/esm2020/core/shared/shared.module.mjs +21 -5
  54. package/esm2020/dashboard/components/dashboard/dashboard.component.mjs +2 -2
  55. package/esm2020/dashboard/components/dashboard-widget/dashboard-widget.component.mjs +2 -2
  56. package/esm2020/dashboard/widgets/order-summary-widget/order-summary-widget.component.mjs +2 -2
  57. package/esm2020/login/components/login/login.component.mjs +3 -3
  58. package/esm2020/marketing/components/promotion-detail/promotion-detail.component.mjs +3 -3
  59. package/esm2020/order/components/fulfill-order-dialog/fulfill-order-dialog.component.mjs +1 -1
  60. package/esm2020/order/components/order-list/order-list.component.mjs +3 -3
  61. package/esm2020/settings/components/payment-method-detail/payment-method-detail.component.mjs +1 -1
  62. package/esm2020/settings/components/permission-grid/permission-grid.component.mjs +1 -1
  63. package/esm2020/settings/components/shipping-method-detail/shipping-method-detail.component.mjs +1 -1
  64. package/fesm2015/vendure-admin-ui-catalog.mjs +48 -123
  65. package/fesm2015/vendure-admin-ui-catalog.mjs.map +1 -1
  66. package/fesm2015/vendure-admin-ui-core.mjs +2140 -1758
  67. package/fesm2015/vendure-admin-ui-core.mjs.map +1 -1
  68. package/fesm2015/vendure-admin-ui-dashboard.mjs +5 -5
  69. package/fesm2015/vendure-admin-ui-dashboard.mjs.map +1 -1
  70. package/fesm2015/vendure-admin-ui-login.mjs +2 -2
  71. package/fesm2015/vendure-admin-ui-login.mjs.map +1 -1
  72. package/fesm2015/vendure-admin-ui-marketing.mjs +2 -2
  73. package/fesm2015/vendure-admin-ui-marketing.mjs.map +1 -1
  74. package/fesm2015/vendure-admin-ui-order.mjs +3 -3
  75. package/fesm2015/vendure-admin-ui-order.mjs.map +1 -1
  76. package/fesm2015/vendure-admin-ui-settings.mjs +3 -3
  77. package/fesm2020/vendure-admin-ui-catalog.mjs +48 -123
  78. package/fesm2020/vendure-admin-ui-catalog.mjs.map +1 -1
  79. package/fesm2020/vendure-admin-ui-core.mjs +1942 -1564
  80. package/fesm2020/vendure-admin-ui-core.mjs.map +1 -1
  81. package/fesm2020/vendure-admin-ui-dashboard.mjs +5 -5
  82. package/fesm2020/vendure-admin-ui-dashboard.mjs.map +1 -1
  83. package/fesm2020/vendure-admin-ui-login.mjs +2 -2
  84. package/fesm2020/vendure-admin-ui-login.mjs.map +1 -1
  85. package/fesm2020/vendure-admin-ui-marketing.mjs +2 -2
  86. package/fesm2020/vendure-admin-ui-marketing.mjs.map +1 -1
  87. package/fesm2020/vendure-admin-ui-order.mjs +3 -3
  88. package/fesm2020/vendure-admin-ui-order.mjs.map +1 -1
  89. package/fesm2020/vendure-admin-ui-settings.mjs +3 -3
  90. package/package.json +2 -2
  91. package/static/i18n-messages/cs.json +11 -0
  92. package/static/i18n-messages/de.json +13 -0
  93. package/static/i18n-messages/en.json +12 -1
  94. package/static/i18n-messages/es.json +11 -0
  95. package/static/i18n-messages/fr.json +11 -0
  96. package/static/i18n-messages/it.json +11 -0
  97. package/static/i18n-messages/pl.json +11 -0
  98. package/static/i18n-messages/pt_BR.json +11 -0
  99. package/static/i18n-messages/pt_PT.json +11 -0
  100. package/static/i18n-messages/ru.json +11 -0
  101. package/static/i18n-messages/uk.json +11 -0
  102. package/static/i18n-messages/zh_Hans.json +11 -0
  103. package/static/i18n-messages/zh_Hant.json +11 -0
  104. package/static/styles/global/_forms.scss +1 -1
  105. package/static/styles/global/_overrides.scss +5 -1
  106. package/static/styles/global/_utilities.scss +9 -0
  107. package/static/styles/theme/default.scss +13 -1
  108. package/static/theme.min.css +1 -1
  109. package/esm2020/catalog/components/product-search-input/product-search-input.component.mjs +0 -107
@@ -1,5 +1,6 @@
1
1
  import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, Input, Output, } from '@angular/core';
2
2
  import { FormControl, FormGroup, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validators, } from '@angular/forms';
3
+ import { BehaviorSubject } from 'rxjs';
3
4
  import { getDefaultConfigArgValue } from '../../../common/utilities/configurable-operation-utils';
4
5
  import { interpolateDescription } from '../../../common/utilities/interpolate-description';
5
6
  import * as i0 from "@angular/core";
@@ -17,9 +18,11 @@ export class ConfigurableInputComponent {
17
18
  constructor() {
18
19
  this.readonly = false;
19
20
  this.removable = true;
21
+ this.position = 0;
20
22
  this.remove = new EventEmitter();
21
23
  this.argValues = {};
22
24
  this.form = new FormGroup({});
25
+ this.positionChangeSubject = new BehaviorSubject(0);
23
26
  }
24
27
  interpolateDescription() {
25
28
  if (this.operationDefinition) {
@@ -29,10 +32,16 @@ export class ConfigurableInputComponent {
29
32
  return '';
30
33
  }
31
34
  }
35
+ ngOnInit() {
36
+ this.positionChange$ = this.positionChangeSubject.asObservable();
37
+ }
32
38
  ngOnChanges(changes) {
33
39
  if ('operation' in changes || 'operationDefinition' in changes) {
34
40
  this.createForm();
35
41
  }
42
+ if ('position' in changes) {
43
+ this.positionChangeSubject.next(this.position);
44
+ }
36
45
  }
37
46
  ngOnDestroy() {
38
47
  if (this.subscription) {
@@ -105,7 +114,7 @@ export class ConfigurableInputComponent {
105
114
  }
106
115
  }
107
116
  ConfigurableInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ConfigurableInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
108
- ConfigurableInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: ConfigurableInputComponent, selector: "vdr-configurable-input", inputs: { operation: "operation", operationDefinition: "operationDefinition", readonly: "readonly", removable: "removable" }, outputs: { remove: "remove" }, providers: [
117
+ ConfigurableInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: ConfigurableInputComponent, selector: "vdr-configurable-input", inputs: { operation: "operation", operationDefinition: "operationDefinition", readonly: "readonly", removable: "removable", position: "position" }, outputs: { remove: "remove" }, providers: [
109
118
  {
110
119
  provide: NG_VALUE_ACCESSOR,
111
120
  useExisting: ConfigurableInputComponent,
@@ -116,7 +125,7 @@ ConfigurableInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0
116
125
  useExisting: forwardRef(() => ConfigurableInputComponent),
117
126
  multi: true,
118
127
  },
119
- ], usesOnChanges: true, ngImport: i0, template: "<div class=\"card\" *ngIf=\"operation\">\r\n <div class=\"card-block\">{{ interpolateDescription() }}</div>\r\n <div class=\"card-block\" *ngIf=\"operation.args?.length\">\r\n <form [formGroup]=\"form\" *ngIf=\"operation\" class=\"operation-inputs\">\r\n <div *ngFor=\"let arg of operation.args; trackBy: trackByName\" class=\"arg-row\">\r\n <ng-container *ngIf=\"form.get(arg.name) && getArgDef(arg) as argDef\">\r\n <label class=\"clr-control-label\">{{ argDef.label || (arg.name | sentenceCase) }}</label>\r\n <vdr-help-tooltip\r\n class=\"mr3\"\r\n *ngIf=\"argDef.description\"\r\n [content]=\"argDef.description\"\r\n ></vdr-help-tooltip>\r\n <vdr-dynamic-form-input\r\n [def]=\"getArgDef(arg)\"\r\n [readonly]=\"readonly\"\r\n [control]=\"form.get(arg.name)\"\r\n [formControlName]=\"arg.name\"\r\n ></vdr-dynamic-form-input>\r\n </ng-container>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"card-footer\" *ngIf=\"!readonly && removable\">\r\n <button class=\"btn btn-sm btn-link btn-warning\" (click)=\"remove.emit(operation)\">\r\n <clr-icon shape=\"times\"></clr-icon>\r\n {{ 'common.remove' | translate }}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;margin-bottom:12px}:host>.card{margin-top:6px}.operation-inputs{padding-top:0}.operation-inputs .arg-row:not(:last-child){margin-bottom:12px}.operation-inputs .arg-row{display:flex;flex-wrap:wrap;align-items:center}.operation-inputs .arg-row label{margin-right:6px}.operation-inputs .hidden{display:none}\n"], components: [{ type: i1.HelpTooltipComponent, selector: "vdr-help-tooltip", inputs: ["content", "position"] }, { type: i2.DynamicFormInputComponent, selector: "vdr-dynamic-form-input", inputs: ["def", "readonly", "control"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.ClrDatagridItemsTrackBy, selector: "[ngForTrackBy]", inputs: ["ngForTrackBy"] }, { type: i5.ClrLabel, selector: "label", inputs: ["for"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i5.ClrIconCustomTag, selector: "clr-icon" }], pipes: { "sentenceCase": i6.SentenceCasePipe, "translate": i7.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
128
+ ], usesOnChanges: true, ngImport: i0, template: "<div class=\"card\" *ngIf=\"operation\">\r\n <div class=\"card-block\">{{ interpolateDescription() }}</div>\r\n <div class=\"card-block\" *ngIf=\"operation.args?.length\">\r\n <form [formGroup]=\"form\" *ngIf=\"operation\" class=\"operation-inputs\">\r\n <div *ngFor=\"let arg of operation.args; trackBy: trackByName\" class=\"arg-row\">\r\n <ng-container *ngIf=\"form.get(arg.name) && getArgDef(arg) as argDef\">\r\n <label class=\"clr-control-label\">{{ argDef.label || (arg.name | sentenceCase) }}</label>\r\n <vdr-help-tooltip\r\n class=\"mr3\"\r\n *ngIf=\"argDef.description\"\r\n [content]=\"argDef.description\"\r\n ></vdr-help-tooltip>\r\n <vdr-dynamic-form-input\r\n [def]=\"getArgDef(arg)\"\r\n [readonly]=\"readonly\"\r\n [control]=\"form.get(arg.name)\"\r\n [formControlName]=\"arg.name\"\r\n ></vdr-dynamic-form-input>\r\n </ng-container>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"card-footer\" *ngIf=\"!readonly && removable\">\r\n <button class=\"btn btn-sm btn-link btn-warning\" (click)=\"remove.emit(operation)\">\r\n <clr-icon shape=\"times\"></clr-icon>\r\n {{ 'common.remove' | translate }}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;margin-bottom:12px}:host>.card{margin-top:6px}.operation-inputs{padding-top:0}.operation-inputs .arg-row:not(:last-child){margin-bottom:12px}.operation-inputs .arg-row{display:flex;flex-wrap:wrap;align-items:center}.operation-inputs .arg-row label{margin-right:6px}.operation-inputs .hidden{display:none}.operation-inputs label{min-width:130px;display:inline-block}\n"], components: [{ type: i1.HelpTooltipComponent, selector: "vdr-help-tooltip", inputs: ["content", "position"] }, { type: i2.DynamicFormInputComponent, selector: "vdr-dynamic-form-input", inputs: ["def", "readonly", "control"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.ClrDatagridItemsTrackBy, selector: "[ngForTrackBy]", inputs: ["ngForTrackBy"] }, { type: i5.ClrLabel, selector: "label", inputs: ["for"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i5.ClrIconCustomTag, selector: "clr-icon" }], pipes: { "sentenceCase": i6.SentenceCasePipe, "translate": i7.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
120
129
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ConfigurableInputComponent, decorators: [{
121
130
  type: Component,
122
131
  args: [{ selector: 'vdr-configurable-input', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
@@ -130,7 +139,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
130
139
  useExisting: forwardRef(() => ConfigurableInputComponent),
131
140
  multi: true,
132
141
  },
133
- ], template: "<div class=\"card\" *ngIf=\"operation\">\r\n <div class=\"card-block\">{{ interpolateDescription() }}</div>\r\n <div class=\"card-block\" *ngIf=\"operation.args?.length\">\r\n <form [formGroup]=\"form\" *ngIf=\"operation\" class=\"operation-inputs\">\r\n <div *ngFor=\"let arg of operation.args; trackBy: trackByName\" class=\"arg-row\">\r\n <ng-container *ngIf=\"form.get(arg.name) && getArgDef(arg) as argDef\">\r\n <label class=\"clr-control-label\">{{ argDef.label || (arg.name | sentenceCase) }}</label>\r\n <vdr-help-tooltip\r\n class=\"mr3\"\r\n *ngIf=\"argDef.description\"\r\n [content]=\"argDef.description\"\r\n ></vdr-help-tooltip>\r\n <vdr-dynamic-form-input\r\n [def]=\"getArgDef(arg)\"\r\n [readonly]=\"readonly\"\r\n [control]=\"form.get(arg.name)\"\r\n [formControlName]=\"arg.name\"\r\n ></vdr-dynamic-form-input>\r\n </ng-container>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"card-footer\" *ngIf=\"!readonly && removable\">\r\n <button class=\"btn btn-sm btn-link btn-warning\" (click)=\"remove.emit(operation)\">\r\n <clr-icon shape=\"times\"></clr-icon>\r\n {{ 'common.remove' | translate }}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;margin-bottom:12px}:host>.card{margin-top:6px}.operation-inputs{padding-top:0}.operation-inputs .arg-row:not(:last-child){margin-bottom:12px}.operation-inputs .arg-row{display:flex;flex-wrap:wrap;align-items:center}.operation-inputs .arg-row label{margin-right:6px}.operation-inputs .hidden{display:none}\n"] }]
142
+ ], template: "<div class=\"card\" *ngIf=\"operation\">\r\n <div class=\"card-block\">{{ interpolateDescription() }}</div>\r\n <div class=\"card-block\" *ngIf=\"operation.args?.length\">\r\n <form [formGroup]=\"form\" *ngIf=\"operation\" class=\"operation-inputs\">\r\n <div *ngFor=\"let arg of operation.args; trackBy: trackByName\" class=\"arg-row\">\r\n <ng-container *ngIf=\"form.get(arg.name) && getArgDef(arg) as argDef\">\r\n <label class=\"clr-control-label\">{{ argDef.label || (arg.name | sentenceCase) }}</label>\r\n <vdr-help-tooltip\r\n class=\"mr3\"\r\n *ngIf=\"argDef.description\"\r\n [content]=\"argDef.description\"\r\n ></vdr-help-tooltip>\r\n <vdr-dynamic-form-input\r\n [def]=\"getArgDef(arg)\"\r\n [readonly]=\"readonly\"\r\n [control]=\"form.get(arg.name)\"\r\n [formControlName]=\"arg.name\"\r\n ></vdr-dynamic-form-input>\r\n </ng-container>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"card-footer\" *ngIf=\"!readonly && removable\">\r\n <button class=\"btn btn-sm btn-link btn-warning\" (click)=\"remove.emit(operation)\">\r\n <clr-icon shape=\"times\"></clr-icon>\r\n {{ 'common.remove' | translate }}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;margin-bottom:12px}:host>.card{margin-top:6px}.operation-inputs{padding-top:0}.operation-inputs .arg-row:not(:last-child){margin-bottom:12px}.operation-inputs .arg-row{display:flex;flex-wrap:wrap;align-items:center}.operation-inputs .arg-row label{margin-right:6px}.operation-inputs .hidden{display:none}.operation-inputs label{min-width:130px;display:inline-block}\n"] }]
134
143
  }], propDecorators: { operation: [{
135
144
  type: Input
136
145
  }], operationDefinition: [{
@@ -139,7 +148,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
139
148
  type: Input
140
149
  }], removable: [{
141
150
  type: Input
151
+ }], position: [{
152
+ type: Input
142
153
  }], remove: [{
143
154
  type: Output
144
155
  }] } });
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhYmxlLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvc2hhcmVkL2NvbXBvbmVudHMvY29uZmlndXJhYmxlLWlucHV0L2NvbmZpZ3VyYWJsZS1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL2NvbmZpZ3VyYWJsZS1pbnB1dC9jb25maWd1cmFibGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBR0wsTUFBTSxHQUVULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHSCxXQUFXLEVBQ1gsU0FBUyxFQUNULGFBQWEsRUFDYixpQkFBaUIsRUFHakIsVUFBVSxHQUNiLE1BQU0sZ0JBQWdCLENBQUM7QUFZeEIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDbEcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbURBQW1ELENBQUM7Ozs7Ozs7OztBQUUzRjs7R0FFRztBQW1CSCxNQUFNLE9BQU8sMEJBQTBCO0lBbEJ2QztRQXFCYSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDaEIsV0FBTSxHQUFHLElBQUksWUFBWSxFQUF5QixDQUFDO1FBQzdELGNBQVMsR0FBNEIsRUFBRSxDQUFDO1FBR3hDLFNBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztLQStGNUI7SUE1Rkcsc0JBQXNCO1FBQ2xCLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzFCLE9BQU8sc0JBQXNCLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLElB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LEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwyQkFBMkIsQ0FBQzs0QkFDekQsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7cUJBQ0o7OEJBR1EsU0FBUztzQkFBakIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdENvbnRyb2wsXG4gICAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gICAgRm9ybUNvbnRyb2wsXG4gICAgRm9ybUdyb3VwLFxuICAgIE5HX1ZBTElEQVRPUlMsXG4gICAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgVmFsaWRhdGlvbkVycm9ycyxcbiAgICBWYWxpZGF0b3IsXG4gICAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29uZmlnQXJnVHlwZSB9IGZyb20gJ0B2ZW5kdXJlL2NvbW1vbi9saWIvc2hhcmVkLXR5cGVzJztcbmltcG9ydCB7IGFzc2VydE5ldmVyIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi9zaGFyZWQtdXRpbHMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IElucHV0Q29tcG9uZW50Q29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2NvbXBvbmVudC1yZWdpc3RyeS10eXBlcyc7XG5pbXBvcnQge1xuICAgIENvbmZpZ0FyZyxcbiAgICBDb25maWdBcmdEZWZpbml0aW9uLFxuICAgIENvbmZpZ3VyYWJsZU9wZXJhdGlvbixcbiAgICBDb25maWd1cmFibGVPcGVyYXRpb25EZWZpbml0aW9uLFxufSBmcm9tICcuLi8uLi8uLi9jb21tb24vZ2VuZXJhdGVkLXR5cGVzJztcbmltcG9ydCB7IGdldERlZmF1bHRDb25maWdBcmdWYWx1ZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi91dGlsaXRpZXMvY29uZmlndXJhYmxlLW9wZXJhdGlvbi11dGlscyc7XG5pbXBvcnQgeyBpbnRlcnBvbGF0ZURlc2NyaXB0aW9uIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3V0aWxpdGllcy9pbnRlcnBvbGF0ZS1kZXNjcmlwdGlvbic7XG5cbi8qKlxuICogQSBmb3JtIGlucHV0IHdoaWNoIHJlbmRlcnMgYSBjYXJkIHdpdGggdGhlIGludGVybmFsIGZvcm0gZmllbGRzIG9mIHRoZSBnaXZlbiBDb25maWd1cmFibGVPcGVyYXRpb24uXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndmRyLWNvbmZpZ3VyYWJsZS1pbnB1dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbmZpZ3VyYWJsZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY29uZmlndXJhYmxlLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IENvbmZpZ3VyYWJsZUlucHV0Q29tcG9uZW50LFxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDb25maWd1cmFibGVJbnB1dENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDb25maWd1cmFibGVJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHtcbiAgICBASW5wdXQoKSBvcGVyYXRpb24/OiBDb25maWd1cmFibGVPcGVyYXRpb247XG4gICAgQElucHV0KCkgb3BlcmF0aW9uRGVmaW5pdGlvbj86IENvbmZpZ3VyYWJsZU9wZXJhdGlvbkRlZmluaXRpb247XG4gICAgQElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZTtcbiAgICBASW5wdXQoKSByZW1vdmFibGUgPSB0cnVlO1xuICAgIEBPdXRwdXQoKSByZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPENvbmZpZ3VyYWJsZU9wZXJhdGlvbj4oKTtcbiAgICBhcmdWYWx1ZXM6IHsgW25hbWU6IHN0cmluZ106IGFueSB9ID0ge307XG4gICAgb25DaGFuZ2U6ICh2YWw6IGFueSkgPT4gdm9pZDtcbiAgICBvblRvdWNoOiAoKSA9PiB2b2lkO1xuICAgIGZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgaW50ZXJwb2xhdGVEZXNjcmlwdGlvbigpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5vcGVyYXRpb25EZWZpbml0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gaW50ZXJwb2xhdGVEZXNjcmlwdGlvbih0aGlzLm9wZXJhdGlvbkRlZmluaXRpb24sIHRoaXMuZm9ybS52YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmICgnb3BlcmF0aW9uJyBpbiBjaGFuZ2VzIHx8ICdvcGVyYXRpb25EZWZpbml0aW9uJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUZvcm0oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcbiAgICAgICAgdGhpcy5vblRvdWNoID0gZm47XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0uZGlzYWJsZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mb3JtLmVuYWJsZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUodmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdHJhY2tCeU5hbWUoaW5kZXg6IG51bWJlciwgYXJnOiBDb25maWdBcmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYXJnLm5hbWU7XG4gICAgfVxuXG4gICAgZ2V0QXJnRGVmKGFyZzogQ29uZmlnQXJnKTogQ29uZmlnQXJnRGVmaW5pdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wZXJhdGlvbkRlZmluaXRpb24/LmFyZ3MuZmluZChhID0+IGEubmFtZSA9PT0gYXJnLm5hbWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlRm9ybSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLm9wZXJhdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgICAgICAgKHRoaXMuZm9ybSBhcyBhbnkpLl9faWQgPSBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMTApO1xuXG4gICAgICAgIGlmICh0aGlzLm9wZXJhdGlvbi5hcmdzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGFyZyBvZiB0aGlzLm9wZXJhdGlvbkRlZmluaXRpb24/LmFyZ3MgfHwgW10pIHtcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWU6IGFueSA9IHRoaXMub3BlcmF0aW9uLmFyZ3MuZmluZChhID0+IGEubmFtZSA9PT0gYXJnLm5hbWUpPy52YWx1ZTtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGdldERlZmF1bHRDb25maWdBcmdWYWx1ZShhcmcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gYXJnLmxpc3QgPyB1bmRlZmluZWQgOiBhcmcucmVxdWlyZWQgPyBWYWxpZGF0b3JzLnJlcXVpcmVkIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKGFyZy5uYW1lLCBuZXcgRm9ybUNvbnRyb2wodmFsdWUsIHZhbGlkYXRvcnMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMub25DaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHtcbiAgICAgICAgICAgICAgICAgICAgY29kZTogdGhpcy5vcGVyYXRpb24gJiYgdGhpcy5vcGVyYXRpb24uY29kZSxcbiAgICAgICAgICAgICAgICAgICAgYXJnczogdmFsdWUsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5vblRvdWNoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vblRvdWNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhbGlkYXRlKGM6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY2FyZFwiICpuZ0lmPVwib3BlcmF0aW9uXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9ja1wiPnt7IGludGVycG9sYXRlRGVzY3JpcHRpb24oKSB9fTwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYmxvY2tcIiAqbmdJZj1cIm9wZXJhdGlvbi5hcmdzPy5sZW5ndGhcIj5cclxuICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAqbmdJZj1cIm9wZXJhdGlvblwiIGNsYXNzPVwib3BlcmF0aW9uLWlucHV0c1wiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBhcmcgb2Ygb3BlcmF0aW9uLmFyZ3M7IHRyYWNrQnk6IHRyYWNrQnlOYW1lXCIgY2xhc3M9XCJhcmctcm93XCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybS5nZXQoYXJnLm5hbWUpICYmIGdldEFyZ0RlZihhcmcpIGFzIGFyZ0RlZlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNsci1jb250cm9sLWxhYmVsXCI+e3sgYXJnRGVmLmxhYmVsIHx8IChhcmcubmFtZSB8IHNlbnRlbmNlQ2FzZSkgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItaGVscC10b29sdGlwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXIzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhcmdEZWYuZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29udGVudF09XCJhcmdEZWYuZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgID48L3Zkci1oZWxwLXRvb2x0aXA+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1keW5hbWljLWZvcm0taW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2RlZl09XCJnZXRBcmdEZWYoYXJnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImZvcm0uZ2V0KGFyZy5uYW1lKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiYXJnLm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgID48L3Zkci1keW5hbWljLWZvcm0taW5wdXQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9mb3JtPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXJcIiAqbmdJZj1cIiFyZWFkb25seSAmJiByZW1vdmFibGVcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGluayBidG4td2FybmluZ1wiIChjbGljayk9XCJyZW1vdmUuZW1pdChvcGVyYXRpb24pXCI+XHJcbiAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cInRpbWVzXCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAge3sgJ2NvbW1vbi5yZW1vdmUnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhYmxlLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvc2hhcmVkL2NvbXBvbmVudHMvY29uZmlndXJhYmxlLWlucHV0L2NvbmZpZ3VyYWJsZS1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL2NvbmZpZ3VyYWJsZS1pbnB1dC9jb25maWd1cmFibGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBSUwsTUFBTSxHQUVULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHSCxXQUFXLEVBQ1gsU0FBUyxFQUNULGFBQWEsRUFDYixpQkFBaUIsRUFHakIsVUFBVSxHQUNiLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEIsT0FBTyxFQUFFLGVBQWUsRUFBNEIsTUFBTSxNQUFNLENBQUM7QUFTakUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDbEcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbURBQW1ELENBQUM7Ozs7Ozs7OztBQUUzRjs7R0FFRztBQW1CSCxNQUFNLE9BQU8sMEJBQTBCO0lBbEJ2QztRQXVCYSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsYUFBUSxHQUFHLENBQUMsQ0FBQztRQUNaLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBeUIsQ0FBQztRQUM3RCxjQUFTLEdBQTRCLEVBQUUsQ0FBQztRQUd4QyxTQUFJLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFakIsMEJBQXFCLEdBQUcsSUFBSSxlQUFlLENBQVMs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QUFPLEVBQUUsYUFBYTtZQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDBCQUEwQixDQUFDO1lBQ3pELEtBQUssRUFBRSxJQUFJO1NBQ2Q7S0FDSiwrQ0N4REwsOC9DQTZCQTsyRkQ2QmEsMEJBQTBCO2tCQWxCdEMsU0FBUzsrQkFDSSx3QkFBd0IsbUJBR2pCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyw0QkFBNEI7NEJBQ3ZDLEtBQUssRUFBRSxJQUFJO3lCQUNkO3dCQUNEOzRCQUNJLE9BQU8sRUFBRSxhQUFhOzRCQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwyQkFBMkIsQ0FBQzs0QkFDekQsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7cUJBQ0o7OEJBS1EsU0FBUztzQkFBakIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0ksTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgZm9yd2FyZFJlZixcclxuICAgIElucHV0LFxyXG4gICAgT25DaGFuZ2VzLFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgT25Jbml0LFxyXG4gICAgT3V0cHV0LFxyXG4gICAgU2ltcGxlQ2hhbmdlcyxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICAgIEFic3RyYWN0Q29udHJvbCxcclxuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxyXG4gICAgRm9ybUNvbnRyb2wsXHJcbiAgICBGb3JtR3JvdXAsXHJcbiAgICBOR19WQUxJREFUT1JTLFxyXG4gICAgTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICBWYWxpZGF0aW9uRXJyb3JzLFxyXG4gICAgVmFsaWRhdG9yLFxyXG4gICAgVmFsaWRhdG9ycyxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbmZpZ0FyZ1R5cGUgfSBmcm9tICdAdmVuZHVyZS9jb21tb24vbGliL3NoYXJlZC10eXBlcyc7XHJcbmltcG9ydCB7IGFzc2VydE5ldmVyIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi9zaGFyZWQtdXRpbHMnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgSW5wdXRDb21wb25lbnRDb25maWcgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vY29tcG9uZW50LXJlZ2lzdHJ5LXR5cGVzJztcclxuaW1wb3J0IHtcclxuICAgIENvbmZpZ0FyZyxcclxuICAgIENvbmZpZ0FyZ0RlZmluaXRpb24sXHJcbiAgICBDb25maWd1cmFibGVPcGVyYXRpb24sXHJcbiAgICBDb25maWd1cmFibGVPcGVyYXRpb25EZWZpbml0aW9uLFxyXG59IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9nZW5lcmF0ZWQtdHlwZXMnO1xyXG5pbXBvcnQgeyBnZXREZWZhdWx0Q29uZmlnQXJnVmFsdWUgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdXRpbGl0aWVzL2NvbmZpZ3VyYWJsZS1vcGVyYXRpb24tdXRpbHMnO1xyXG5pbXBvcnQgeyBpbnRlcnBvbGF0ZURlc2NyaXB0aW9uIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3V0aWxpdGllcy9pbnRlcnBvbGF0ZS1kZXNjcmlwdGlvbic7XHJcblxyXG4vKipcclxuICogQSBmb3JtIGlucHV0IHdoaWNoIHJlbmRlcnMgYSBjYXJkIHdpdGggdGhlIGludGVybmFsIGZvcm0gZmllbGRzIG9mIHRoZSBnaXZlbiBDb25maWd1cmFibGVPcGVyYXRpb24uXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmRyLWNvbmZpZ3VyYWJsZS1pbnB1dCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29uZmlndXJhYmxlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2NvbmZpZ3VyYWJsZS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogQ29uZmlndXJhYmxlSW5wdXRDb21wb25lbnQsXHJcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxyXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDb25maWd1cmFibGVJbnB1dENvbXBvbmVudCksXHJcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29uZmlndXJhYmxlSW5wdXRDb21wb25lbnRcclxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvclxyXG57XHJcbiAgICBASW5wdXQoKSBvcGVyYXRpb24/OiBDb25maWd1cmFibGVPcGVyYXRpb247XHJcbiAgICBASW5wdXQoKSBvcGVyYXRpb25EZWZpbml0aW9uPzogQ29uZmlndXJhYmxlT3BlcmF0aW9uRGVmaW5pdGlvbjtcclxuICAgIEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSByZW1vdmFibGUgPSB0cnVlO1xyXG4gICAgQElucHV0KCkgcG9zaXRpb24gPSAwO1xyXG4gICAgQE91dHB1dCgpIHJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q29uZmlndXJhYmxlT3BlcmF0aW9uPigpO1xyXG4gICAgYXJnVmFsdWVzOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSA9IHt9O1xyXG4gICAgb25DaGFuZ2U6ICh2YWw6IGFueSkgPT4gdm9pZDtcclxuICAgIG9uVG91Y2g6ICgpID0+IHZvaWQ7XHJcbiAgICBmb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgICBwb3NpdGlvbkNoYW5nZSQ6IE9ic2VydmFibGU8bnVtYmVyPjtcclxuICAgIHByaXZhdGUgcG9zaXRpb25DaGFuZ2VTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xyXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgICBpbnRlcnBvbGF0ZURlc2NyaXB0aW9uKCk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKHRoaXMub3BlcmF0aW9uRGVmaW5pdGlvbikge1xyXG4gICAgICAgICAgICByZXR1cm4gaW50ZXJwb2xhdGVEZXNjcmlwdGlvbih0aGlzLm9wZXJhdGlvbkRlZmluaXRpb24sIHRoaXMuZm9ybS52YWx1ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLnBvc2l0aW9uQ2hhbmdlJCA9IHRoaXMucG9zaXRpb25DaGFuZ2VTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgICBpZiAoJ29wZXJhdGlvbicgaW4gY2hhbmdlcyB8fCAnb3BlcmF0aW9uRGVmaW5pdGlvbicgaW4gY2hhbmdlcykge1xyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUZvcm0oKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCdwb3NpdGlvbicgaW4gY2hhbmdlcykge1xyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uQ2hhbmdlU3ViamVjdC5uZXh0KHRoaXMucG9zaXRpb24pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcclxuICAgICAgICB0aGlzLm9uVG91Y2ggPSBmbjtcclxuICAgIH1cclxuXHJcbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcclxuICAgICAgICBpZiAoaXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZGlzYWJsZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5lbmFibGUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdHJhY2tCeU5hbWUoaW5kZXg6IG51bWJlciwgYXJnOiBDb25maWdBcmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBhcmcubmFtZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBcmdEZWYoYXJnOiBDb25maWdBcmcpOiBDb25maWdBcmdEZWZpbml0aW9uIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5vcGVyYXRpb25EZWZpbml0aW9uPy5hcmdzLmZpbmQoYSA9PiBhLm5hbWUgPT09IGFyZy5uYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNyZWF0ZUZvcm0oKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLm9wZXJhdGlvbikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICAgICAgICAodGhpcy5mb3JtIGFzIGFueSkuX19pZCA9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigxMCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm9wZXJhdGlvbi5hcmdzKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgYXJnIG9mIHRoaXMub3BlcmF0aW9uRGVmaW5pdGlvbj8uYXJncyB8fCBbXSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlOiBhbnkgPSB0aGlzLm9wZXJhdGlvbi5hcmdzLmZpbmQoYSA9PiBhLm5hbWUgPT09IGFyZy5uYW1lKT8udmFsdWU7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZ2V0RGVmYXVsdENvbmZpZ0FyZ1ZhbHVlKGFyZyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gYXJnLmxpc3QgPyB1bmRlZmluZWQgOiBhcmcucmVxdWlyZWQgPyBWYWxpZGF0b3JzLnJlcXVpcmVkIDogdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLmFkZENvbnRyb2woYXJnLm5hbWUsIG5ldyBGb3JtQ29udHJvbCh2YWx1ZSwgdmFsaWRhdG9ycykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMub25DaGFuZ2UpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2Uoe1xyXG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IHRoaXMub3BlcmF0aW9uICYmIHRoaXMub3BlcmF0aW9uLmNvZGUsXHJcbiAgICAgICAgICAgICAgICAgICAgYXJnczogdmFsdWUsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5vblRvdWNoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uVG91Y2goKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHZhbGlkYXRlKGM6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgICAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2FyZFwiICpuZ0lmPVwib3BlcmF0aW9uXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9ja1wiPnt7IGludGVycG9sYXRlRGVzY3JpcHRpb24oKSB9fTwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYmxvY2tcIiAqbmdJZj1cIm9wZXJhdGlvbi5hcmdzPy5sZW5ndGhcIj5cclxuICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAqbmdJZj1cIm9wZXJhdGlvblwiIGNsYXNzPVwib3BlcmF0aW9uLWlucHV0c1wiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBhcmcgb2Ygb3BlcmF0aW9uLmFyZ3M7IHRyYWNrQnk6IHRyYWNrQnlOYW1lXCIgY2xhc3M9XCJhcmctcm93XCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybS5nZXQoYXJnLm5hbWUpICYmIGdldEFyZ0RlZihhcmcpIGFzIGFyZ0RlZlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNsci1jb250cm9sLWxhYmVsXCI+e3sgYXJnRGVmLmxhYmVsIHx8IChhcmcubmFtZSB8IHNlbnRlbmNlQ2FzZSkgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItaGVscC10b29sdGlwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXIzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhcmdEZWYuZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29udGVudF09XCJhcmdEZWYuZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgID48L3Zkci1oZWxwLXRvb2x0aXA+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1keW5hbWljLWZvcm0taW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2RlZl09XCJnZXRBcmdEZWYoYXJnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImZvcm0uZ2V0KGFyZy5uYW1lKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiYXJnLm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgID48L3Zkci1keW5hbWljLWZvcm0taW5wdXQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9mb3JtPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXJcIiAqbmdJZj1cIiFyZWFkb25seSAmJiByZW1vdmFibGVcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGluayBidG4td2FybmluZ1wiIChjbGljayk9XCJyZW1vdmUuZW1pdChvcGVyYXRpb24pXCI+XHJcbiAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cInRpbWVzXCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAge3sgJ2NvbW1vbi5yZW1vdmUnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -9,6 +9,7 @@ import * as i4 from "@angular/common";
9
9
  import * as i5 from "../form-field/form-field-control.directive";
10
10
  import * as i6 from "@clr/angular";
11
11
  import * as i7 from "ngx-pagination";
12
+ import * as i8 from "@ngx-translate/core";
12
13
  /**
13
14
  * @description
14
15
  * A table for displaying PaginatedList results. It is designed to be used inside components which
@@ -86,12 +87,18 @@ export class DataTableComponent {
86
87
  return index;
87
88
  }
88
89
  }
90
+ ngOnChanges(changes) {
91
+ if (changes.items) {
92
+ this.currentStart = this.itemsPerPage * (this.currentPage - 1);
93
+ this.currentEnd = this.currentStart + changes.items.currentValue?.length;
94
+ }
95
+ }
89
96
  }
90
97
  DataTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: DataTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
91
- DataTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: DataTableComponent, selector: "vdr-data-table", inputs: { items: "items", itemsPerPage: "itemsPerPage", currentPage: "currentPage", totalItems: "totalItems", allSelected: "allSelected", isRowSelectedFn: "isRowSelectedFn", emptyStateLabel: "emptyStateLabel" }, outputs: { allSelectChange: "allSelectChange", rowSelectChange: "rowSelectChange", pageChange: "pageChange", itemsPerPageChange: "itemsPerPageChange" }, providers: [PaginationService], queries: [{ propertyName: "columns", predicate: DataTableColumnComponent }, { propertyName: "templateRefs", predicate: TemplateRef }], ngImport: i0, template: "<ng-container *ngIf=\"!items || (items && items.length); else emptyPlaceholder\">\r\n <table class=\"table\">\r\n <thead>\r\n <tr>\r\n <th *ngIf=\"isRowSelectedFn\" class=\"align-middle\">\r\n <input\r\n type=\"checkbox\"\r\n clrCheckbox\r\n [checked]=\"allSelected\"\r\n (change)=\"allSelectChange.emit()\"\r\n />\r\n </th>\r\n <th *ngFor=\"let header of columns?.toArray()\" class=\"left\" [class.expand]=\"header.expand\">\r\n <ng-container *ngTemplateOutlet=\"header.template\"></ng-container>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"\r\n let item of items\r\n | paginate\r\n : {\r\n itemsPerPage: itemsPerPage,\r\n currentPage: currentPage,\r\n totalItems: totalItems\r\n };\r\n index as i;\r\n trackBy: trackByFn\r\n \"\r\n >\r\n <td *ngIf=\"isRowSelectedFn\" class=\"align-middle\">\r\n <input\r\n type=\"checkbox\"\r\n clrCheckbox\r\n [checked]=\"isRowSelectedFn(item)\"\r\n (change)=\"rowSelectChange.emit(item)\"\r\n />\r\n </td>\r\n <ng-container\r\n *ngTemplateOutlet=\"rowTemplate; context: { item: item, index: i }\"\r\n ></ng-container>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div class=\"table-footer\">\r\n <vdr-items-per-page-controls\r\n *ngIf=\"totalItems\"\r\n [itemsPerPage]=\"itemsPerPage\"\r\n (itemsPerPageChange)=\"itemsPerPageChange.emit($event)\"\r\n ></vdr-items-per-page-controls>\r\n\r\n <vdr-pagination-controls\r\n *ngIf=\"totalItems\"\r\n [currentPage]=\"currentPage\"\r\n [itemsPerPage]=\"itemsPerPage\"\r\n [totalItems]=\"totalItems\"\r\n (pageChange)=\"pageChange.emit($event)\"\r\n ></vdr-pagination-controls>\r\n </div>\r\n</ng-container>\r\n<ng-template #emptyPlaceholder>\r\n <vdr-empty-placeholder [emptyStateLabel]=\"emptyStateLabel\"></vdr-empty-placeholder>\r\n</ng-template>\r\n", styles: [":host{display:block;max-width:100%;overflow:auto}thead th{position:sticky;top:24px;z-index:1}thead th.expand{width:100%}.table-footer{display:flex;align-items:baseline;justify-content:space-between;margin-top:6px}\n"], components: [{ type: i1.ItemsPerPageControlsComponent, selector: "vdr-items-per-page-controls", inputs: ["itemsPerPage"], outputs: ["itemsPerPageChange"] }, { type: i2.PaginationControlsComponent, selector: "vdr-pagination-controls", inputs: ["id", "currentPage", "itemsPerPage", "totalItems"], outputs: ["pageChange"] }, { type: i3.EmptyPlaceholderComponent, selector: "vdr-empty-placeholder", inputs: ["emptyStateLabel"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.FormFieldControlDirective, selector: "input, textarea, select" }, { type: i6.ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i6.ClrDatagridItemsTrackBy, selector: "[ngForTrackBy]", inputs: ["ngForTrackBy"] }], pipes: { "paginate": i7.PaginatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
98
+ DataTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: DataTableComponent, selector: "vdr-data-table", inputs: { items: "items", itemsPerPage: "itemsPerPage", currentPage: "currentPage", totalItems: "totalItems", allSelected: "allSelected", isRowSelectedFn: "isRowSelectedFn", emptyStateLabel: "emptyStateLabel" }, outputs: { allSelectChange: "allSelectChange", rowSelectChange: "rowSelectChange", pageChange: "pageChange", itemsPerPageChange: "itemsPerPageChange" }, providers: [PaginationService], queries: [{ propertyName: "columns", predicate: DataTableColumnComponent }, { propertyName: "templateRefs", predicate: TemplateRef }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!items || (items && items.length); else emptyPlaceholder\">\r\n <table class=\"table\">\r\n <thead>\r\n <tr>\r\n <th *ngIf=\"isRowSelectedFn\" class=\"align-middle\">\r\n <input\r\n type=\"checkbox\"\r\n clrCheckbox\r\n [checked]=\"allSelected\"\r\n (change)=\"allSelectChange.emit()\"\r\n />\r\n </th>\r\n <th *ngFor=\"let header of columns?.toArray()\" class=\"left\" [class.expand]=\"header.expand\">\r\n <ng-container *ngTemplateOutlet=\"header.template\"></ng-container>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"\r\n let item of items\r\n | paginate\r\n : {\r\n itemsPerPage: itemsPerPage,\r\n currentPage: currentPage,\r\n totalItems: totalItems\r\n };\r\n index as i;\r\n trackBy: trackByFn\r\n \"\r\n >\r\n <td *ngIf=\"isRowSelectedFn\" class=\"align-middle\">\r\n <input\r\n type=\"checkbox\"\r\n clrCheckbox\r\n [checked]=\"isRowSelectedFn(item)\"\r\n (change)=\"rowSelectChange.emit(item)\"\r\n />\r\n </td>\r\n <ng-container\r\n *ngTemplateOutlet=\"rowTemplate; context: { item: item, index: i }\"\r\n ></ng-container>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div class=\"table-footer\">\r\n <vdr-items-per-page-controls\r\n *ngIf=\"totalItems\"\r\n [itemsPerPage]=\"itemsPerPage\"\r\n (itemsPerPageChange)=\"itemsPerPageChange.emit($event)\"\r\n ></vdr-items-per-page-controls>\r\n <div>\r\n {{ 'common.total-items' | translate: { currentStart, currentEnd, totalItems } }}\r\n </div>\r\n\r\n <vdr-pagination-controls\r\n *ngIf=\"totalItems\"\r\n [currentPage]=\"currentPage\"\r\n [itemsPerPage]=\"itemsPerPage\"\r\n [totalItems]=\"totalItems\"\r\n (pageChange)=\"pageChange.emit($event)\"\r\n ></vdr-pagination-controls>\r\n </div>\r\n</ng-container>\r\n<ng-template #emptyPlaceholder>\r\n <vdr-empty-placeholder [emptyStateLabel]=\"emptyStateLabel\"></vdr-empty-placeholder>\r\n</ng-template>\r\n", styles: [":host{display:block;max-width:100%;overflow:auto}thead th{position:sticky;top:24px;z-index:1}thead th.expand{width:100%}.table-footer{display:flex;align-items:baseline;justify-content:space-between;margin-top:6px}\n"], components: [{ type: i1.ItemsPerPageControlsComponent, selector: "vdr-items-per-page-controls", inputs: ["itemsPerPage"], outputs: ["itemsPerPageChange"] }, { type: i2.PaginationControlsComponent, selector: "vdr-pagination-controls", inputs: ["id", "currentPage", "itemsPerPage", "totalItems"], outputs: ["pageChange"] }, { type: i3.EmptyPlaceholderComponent, selector: "vdr-empty-placeholder", inputs: ["emptyStateLabel"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.FormFieldControlDirective, selector: "input, textarea, select" }, { type: i6.ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i6.ClrDatagridItemsTrackBy, selector: "[ngForTrackBy]", inputs: ["ngForTrackBy"] }], pipes: { "paginate": i7.PaginatePipe, "translate": i8.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
92
99
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: DataTableComponent, decorators: [{
93
100
  type: Component,
94
- args: [{ selector: 'vdr-data-table', changeDetection: ChangeDetectionStrategy.OnPush, providers: [PaginationService], template: "<ng-container *ngIf=\"!items || (items && items.length); else emptyPlaceholder\">\r\n <table class=\"table\">\r\n <thead>\r\n <tr>\r\n <th *ngIf=\"isRowSelectedFn\" class=\"align-middle\">\r\n <input\r\n type=\"checkbox\"\r\n clrCheckbox\r\n [checked]=\"allSelected\"\r\n (change)=\"allSelectChange.emit()\"\r\n />\r\n </th>\r\n <th *ngFor=\"let header of columns?.toArray()\" class=\"left\" [class.expand]=\"header.expand\">\r\n <ng-container *ngTemplateOutlet=\"header.template\"></ng-container>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"\r\n let item of items\r\n | paginate\r\n : {\r\n itemsPerPage: itemsPerPage,\r\n currentPage: currentPage,\r\n totalItems: totalItems\r\n };\r\n index as i;\r\n trackBy: trackByFn\r\n \"\r\n >\r\n <td *ngIf=\"isRowSelectedFn\" class=\"align-middle\">\r\n <input\r\n type=\"checkbox\"\r\n clrCheckbox\r\n [checked]=\"isRowSelectedFn(item)\"\r\n (change)=\"rowSelectChange.emit(item)\"\r\n />\r\n </td>\r\n <ng-container\r\n *ngTemplateOutlet=\"rowTemplate; context: { item: item, index: i }\"\r\n ></ng-container>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div class=\"table-footer\">\r\n <vdr-items-per-page-controls\r\n *ngIf=\"totalItems\"\r\n [itemsPerPage]=\"itemsPerPage\"\r\n (itemsPerPageChange)=\"itemsPerPageChange.emit($event)\"\r\n ></vdr-items-per-page-controls>\r\n\r\n <vdr-pagination-controls\r\n *ngIf=\"totalItems\"\r\n [currentPage]=\"currentPage\"\r\n [itemsPerPage]=\"itemsPerPage\"\r\n [totalItems]=\"totalItems\"\r\n (pageChange)=\"pageChange.emit($event)\"\r\n ></vdr-pagination-controls>\r\n </div>\r\n</ng-container>\r\n<ng-template #emptyPlaceholder>\r\n <vdr-empty-placeholder [emptyStateLabel]=\"emptyStateLabel\"></vdr-empty-placeholder>\r\n</ng-template>\r\n", styles: [":host{display:block;max-width:100%;overflow:auto}thead th{position:sticky;top:24px;z-index:1}thead th.expand{width:100%}.table-footer{display:flex;align-items:baseline;justify-content:space-between;margin-top:6px}\n"] }]
101
+ args: [{ selector: 'vdr-data-table', changeDetection: ChangeDetectionStrategy.OnPush, providers: [PaginationService], template: "<ng-container *ngIf=\"!items || (items && items.length); else emptyPlaceholder\">\r\n <table class=\"table\">\r\n <thead>\r\n <tr>\r\n <th *ngIf=\"isRowSelectedFn\" class=\"align-middle\">\r\n <input\r\n type=\"checkbox\"\r\n clrCheckbox\r\n [checked]=\"allSelected\"\r\n (change)=\"allSelectChange.emit()\"\r\n />\r\n </th>\r\n <th *ngFor=\"let header of columns?.toArray()\" class=\"left\" [class.expand]=\"header.expand\">\r\n <ng-container *ngTemplateOutlet=\"header.template\"></ng-container>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"\r\n let item of items\r\n | paginate\r\n : {\r\n itemsPerPage: itemsPerPage,\r\n currentPage: currentPage,\r\n totalItems: totalItems\r\n };\r\n index as i;\r\n trackBy: trackByFn\r\n \"\r\n >\r\n <td *ngIf=\"isRowSelectedFn\" class=\"align-middle\">\r\n <input\r\n type=\"checkbox\"\r\n clrCheckbox\r\n [checked]=\"isRowSelectedFn(item)\"\r\n (change)=\"rowSelectChange.emit(item)\"\r\n />\r\n </td>\r\n <ng-container\r\n *ngTemplateOutlet=\"rowTemplate; context: { item: item, index: i }\"\r\n ></ng-container>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div class=\"table-footer\">\r\n <vdr-items-per-page-controls\r\n *ngIf=\"totalItems\"\r\n [itemsPerPage]=\"itemsPerPage\"\r\n (itemsPerPageChange)=\"itemsPerPageChange.emit($event)\"\r\n ></vdr-items-per-page-controls>\r\n <div>\r\n {{ 'common.total-items' | translate: { currentStart, currentEnd, totalItems } }}\r\n </div>\r\n\r\n <vdr-pagination-controls\r\n *ngIf=\"totalItems\"\r\n [currentPage]=\"currentPage\"\r\n [itemsPerPage]=\"itemsPerPage\"\r\n [totalItems]=\"totalItems\"\r\n (pageChange)=\"pageChange.emit($event)\"\r\n ></vdr-pagination-controls>\r\n </div>\r\n</ng-container>\r\n<ng-template #emptyPlaceholder>\r\n <vdr-empty-placeholder [emptyStateLabel]=\"emptyStateLabel\"></vdr-empty-placeholder>\r\n</ng-template>\r\n", styles: [":host{display:block;max-width:100%;overflow:auto}thead th{position:sticky;top:24px;z-index:1}thead th.expand{width:100%}.table-footer{display:flex;align-items:baseline;justify-content:space-between;margin-top:6px}\n"] }]
95
102
  }], propDecorators: { items: [{
96
103
  type: Input
97
104
  }], itemsPerPage: [{
@@ -121,4 +128,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
121
128
  type: ContentChildren,
122
129
  args: [TemplateRef]
123
130
  }] } });
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBRU4sV0FBVyxHQUNkLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7QUFFekU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwREc7QUFRSCxNQUFNLE9BQU8sa0JBQWtCO0lBUC9CO1FBZWMsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQzNDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQUssQ0FBQztRQUN4QyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN4Qyx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0tBZ0I3RDtJQVhHLGtCQUFrQjtRQUNkLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7SUFDOUMsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFhLEVBQUUsSUFBUztRQUM5QixJQUFLLElBQVksQ0FBQyxFQUFFLElBQUksSUFBSSxFQUFFO1lBQzFCLE9BQVEsSUFBWSxDQUFDLEVBQUUsQ0FBQztTQUMzQjthQUFNO1lBQ0gsT0FBTyxLQUFLLENBQUM7U0FDaEI7SUFDTCxDQUFDOzsrR0ExQlEsa0JBQWtCO21HQUFsQixrQkFBa0Isc1pBRmhCLENBQUMsaUJBQWlCLENBQUMsa0RBY2Isd0JBQXdCLCtDQUN4QixXQUFXLDZCQy9GaEMsMGxGQWdFQTsyRkRrQmEsa0JBQWtCO2tCQVA5QixTQUFTOytCQUNJLGdCQUFnQixtQkFHVCx1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsaUJBQWlCLENBQUM7OEJBR3JCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ29DLE9BQU87c0JBQWpELGVBQWU7dUJBQUMsd0JBQXdCO2dCQUNYLFlBQVk7c0JBQXpDLGVBQWU7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBBZnRlckNvbnRlbnRJbml0LFxyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBDb250ZW50Q2hpbGQsXHJcbiAgICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBJbnB1dCxcclxuICAgIE91dHB1dCxcclxuICAgIFF1ZXJ5TGlzdCxcclxuICAgIFRlbXBsYXRlUmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQYWdpbmF0aW9uU2VydmljZSB9IGZyb20gJ25neC1wYWdpbmF0aW9uJztcclxuXHJcbmltcG9ydCB7IERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vZGF0YS10YWJsZS1jb2x1bW4uY29tcG9uZW50JztcclxuXHJcbi8qKlxyXG4gKiBAZGVzY3JpcHRpb25cclxuICogQSB0YWJsZSBmb3IgZGlzcGxheWluZyBQYWdpbmF0ZWRMaXN0IHJlc3VsdHMuIEl0IGlzIGRlc2lnbmVkIHRvIGJlIHVzZWQgaW5zaWRlIGNvbXBvbmVudHMgd2hpY2hcclxuICogZXh0ZW5kIHRoZSB7QGxpbmsgQmFzZUxpc3RDb21wb25lbnR9IGNsYXNzLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGBIVE1MXHJcbiAqIDx2ZHItZGF0YS10YWJsZVxyXG4gKiAgIFtpdGVtc109XCJpdGVtcyQgfCBhc3luY1wiXHJcbiAqICAgW2l0ZW1zUGVyUGFnZV09XCJpdGVtc1BlclBhZ2UkIHwgYXN5bmNcIlxyXG4gKiAgIFt0b3RhbEl0ZW1zXT1cInRvdGFsSXRlbXMkIHwgYXN5bmNcIlxyXG4gKiAgIFtjdXJyZW50UGFnZV09XCJjdXJyZW50UGFnZSQgfCBhc3luY1wiXHJcbiAqICAgKHBhZ2VDaGFuZ2UpPVwic2V0UGFnZU51bWJlcigkZXZlbnQpXCJcclxuICogICAoaXRlbXNQZXJQYWdlQ2hhbmdlKT1cInNldEl0ZW1zUGVyUGFnZSgkZXZlbnQpXCJcclxuICogPlxyXG4gKiAgIDwhLS0gVGhlIGhlYWRlciBjb2x1bW5zIGFyZSBkZWZpbmVkIGZpcnN0IC0tPlxyXG4gKiAgIDx2ZHItZHQtY29sdW1uPnt7ICdjb21tb24ubmFtZScgfCB0cmFuc2xhdGUgfX08L3Zkci1kdC1jb2x1bW4+XHJcbiAqICAgPHZkci1kdC1jb2x1bW4+PC92ZHItZHQtY29sdW1uPlxyXG4gKiAgIDx2ZHItZHQtY29sdW1uPjwvdmRyLWR0LWNvbHVtbj5cclxuICpcclxuICogICA8IS0tIFRoZW4gd2UgZGVmaW5lIGhvdyBhIHJvdyBpcyByZW5kZXJlZCAtLT5cclxuICogICA8bmctdGVtcGxhdGUgbGV0LXRheFJhdGU9XCJpdGVtXCI+XHJcbiAqICAgICA8dGQgY2xhc3M9XCJsZWZ0IGFsaWduLW1pZGRsZVwiPnt7IHRheFJhdGUubmFtZSB9fTwvdGQ+XHJcbiAqICAgICA8dGQgY2xhc3M9XCJsZWZ0IGFsaWduLW1pZGRsZVwiPnt7IHRheFJhdGUuY2F0ZWdvcnkubmFtZSB9fTwvdGQ+XHJcbiAqICAgICA8dGQgY2xhc3M9XCJsZWZ0IGFsaWduLW1pZGRsZVwiPnt7IHRheFJhdGUuem9uZS5uYW1lIH19PC90ZD5cclxuICogICAgIDx0ZCBjbGFzcz1cImxlZnQgYWxpZ24tbWlkZGxlXCI+e3sgdGF4UmF0ZS52YWx1ZSB9fSU8L3RkPlxyXG4gKiAgICAgPHRkIGNsYXNzPVwicmlnaHQgYWxpZ24tbWlkZGxlXCI+XHJcbiAqICAgICAgIDx2ZHItdGFibGUtcm93LWFjdGlvblxyXG4gKiAgICAgICAgIGljb25TaGFwZT1cImVkaXRcIlxyXG4gKiAgICAgICAgIFtsYWJlbF09XCInY29tbW9uLmVkaXQnIHwgdHJhbnNsYXRlXCJcclxuICogICAgICAgICBbbGlua1RvXT1cIlsnLi8nLCB0YXhSYXRlLmlkXVwiXHJcbiAqICAgICAgID48L3Zkci10YWJsZS1yb3ctYWN0aW9uPlxyXG4gKiAgICAgPC90ZD5cclxuICogICAgIDx0ZCBjbGFzcz1cInJpZ2h0IGFsaWduLW1pZGRsZVwiPlxyXG4gKiAgICAgICA8dmRyLWRyb3Bkb3duPlxyXG4gKiAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1saW5rIGJ0bi1zbVwiIHZkckRyb3Bkb3duVHJpZ2dlcj5cclxuICogICAgICAgICAgIHt7ICdjb21tb24uYWN0aW9ucycgfCB0cmFuc2xhdGUgfX1cclxuICogICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cImNhcmV0IGRvd25cIj48L2Nsci1pY29uPlxyXG4gKiAgICAgICAgIDwvYnV0dG9uPlxyXG4gKiAgICAgICAgIDx2ZHItZHJvcGRvd24tbWVudSB2ZHJQb3NpdGlvbj1cImJvdHRvbS1yaWdodFwiPlxyXG4gKiAgICAgICAgICAgPGJ1dHRvblxyXG4gKiAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gKiAgICAgICAgICAgICAgIGNsYXNzPVwiZGVsZXRlLWJ1dHRvblwiXHJcbiAqICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZVRheFJhdGUodGF4UmF0ZSlcIlxyXG4gKiAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhKFsnRGVsZXRlU2V0dGluZ3MnLCAnRGVsZXRlVGF4UmF0ZSddIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gKiAgICAgICAgICAgICAgIHZkckRyb3Bkb3duSXRlbVxyXG4gKiAgICAgICAgICAgPlxyXG4gKiAgICAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cInRyYXNoXCIgY2xhc3M9XCJpcy1kYW5nZXJcIj48L2Nsci1pY29uPlxyXG4gKiAgICAgICAgICAgICAgIHt7ICdjb21tb24uZGVsZXRlJyB8IHRyYW5zbGF0ZSB9fVxyXG4gKiAgICAgICAgICAgPC9idXR0b24+XHJcbiAqICAgICAgICAgPC92ZHItZHJvcGRvd24tbWVudT5cclxuICogICAgICAgPC92ZHItZHJvcGRvd24+XHJcbiAqICAgICA8L3RkPlxyXG4gKiAgIDwvbmctdGVtcGxhdGU+XHJcbiAqIDwvdmRyLWRhdGEtdGFibGU+XHJcbiAqIGBgYFxyXG4gKlxyXG4gKiBAZG9jc0NhdGVnb3J5IGNvbXBvbmVudHNcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd2ZHItZGF0YS10YWJsZScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJ2RhdGEtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJ2RhdGEtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgcHJvdmlkZXJzOiBbUGFnaW5hdGlvblNlcnZpY2VdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0YVRhYmxlQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XHJcbiAgICBASW5wdXQoKSBpdGVtczogVFtdO1xyXG4gICAgQElucHV0KCkgaXRlbXNQZXJQYWdlOiBudW1iZXI7XHJcbiAgICBASW5wdXQoKSBjdXJyZW50UGFnZTogbnVtYmVyO1xyXG4gICAgQElucHV0KCkgdG90YWxJdGVtczogbnVtYmVyO1xyXG4gICAgQElucHV0KCkgYWxsU2VsZWN0ZWQ6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBpc1Jvd1NlbGVjdGVkRm46IChpdGVtOiBUKSA9PiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgZW1wdHlTdGF0ZUxhYmVsOiBzdHJpbmc7XHJcbiAgICBAT3V0cHV0KCkgYWxsU2VsZWN0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gICAgQE91dHB1dCgpIHJvd1NlbGVjdENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcclxuICAgIEBPdXRwdXQoKSBwYWdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcbiAgICBAT3V0cHV0KCkgaXRlbXNQZXJQYWdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcbiAgICBAQ29udGVudENoaWxkcmVuKERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCkgY29sdW1uczogUXVlcnlMaXN0PERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudD47XHJcbiAgICBAQ29udGVudENoaWxkcmVuKFRlbXBsYXRlUmVmKSB0ZW1wbGF0ZVJlZnM6IFF1ZXJ5TGlzdDxUZW1wbGF0ZVJlZjxhbnk+PjtcclxuICAgIHJvd1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnJvd1RlbXBsYXRlID0gdGhpcy50ZW1wbGF0ZVJlZnMubGFzdDtcclxuICAgIH1cclxuXHJcbiAgICB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgaXRlbTogYW55KSB7XHJcbiAgICAgICAgaWYgKChpdGVtIGFzIGFueSkuaWQgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gKGl0ZW0gYXMgYW55KS5pZDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gaW5kZXg7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIhaXRlbXMgfHwgKGl0ZW1zICYmIGl0ZW1zLmxlbmd0aCk7IGVsc2UgZW1wdHlQbGFjZWhvbGRlclwiPlxyXG4gICAgPHRhYmxlIGNsYXNzPVwidGFibGVcIj5cclxuICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cImlzUm93U2VsZWN0ZWRGblwiIGNsYXNzPVwiYWxpZ24tbWlkZGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsckNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImFsbFNlbGVjdGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJhbGxTZWxlY3RDaGFuZ2UuZW1pdCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgaGVhZGVyIG9mIGNvbHVtbnM/LnRvQXJyYXkoKVwiIGNsYXNzPVwibGVmdFwiIFtjbGFzcy5leHBhbmRdPVwiaGVhZGVyLmV4cGFuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXIudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC90aGVhZD5cclxuICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgIDx0clxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW0gb2YgaXRlbXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWdpbmF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc1BlclBhZ2U6IGl0ZW1zUGVyUGFnZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlOiBjdXJyZW50UGFnZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsSXRlbXM6IHRvdGFsSXRlbXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICBpbmRleCBhcyBpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGblxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiaXNSb3dTZWxlY3RlZEZuXCIgY2xhc3M9XCJhbGlnbi1taWRkbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xyQ2hlY2tib3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNSb3dTZWxlY3RlZEZuKGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJyb3dTZWxlY3RDaGFuZ2UuZW1pdChpdGVtKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyb3dUZW1wbGF0ZTsgY29udGV4dDogeyBpdGVtOiBpdGVtLCBpbmRleDogaSB9XCJcclxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICA8L3Rib2R5PlxyXG4gICAgPC90YWJsZT5cclxuICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1mb290ZXJcIj5cclxuICAgICAgICA8dmRyLWl0ZW1zLXBlci1wYWdlLWNvbnRyb2xzXHJcbiAgICAgICAgICAgICpuZ0lmPVwidG90YWxJdGVtc1wiXHJcbiAgICAgICAgICAgIFtpdGVtc1BlclBhZ2VdPVwiaXRlbXNQZXJQYWdlXCJcclxuICAgICAgICAgICAgKGl0ZW1zUGVyUGFnZUNoYW5nZSk9XCJpdGVtc1BlclBhZ2VDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICA+PC92ZHItaXRlbXMtcGVyLXBhZ2UtY29udHJvbHM+XHJcblxyXG4gICAgICAgIDx2ZHItcGFnaW5hdGlvbi1jb250cm9sc1xyXG4gICAgICAgICAgICAqbmdJZj1cInRvdGFsSXRlbXNcIlxyXG4gICAgICAgICAgICBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2VcIlxyXG4gICAgICAgICAgICBbaXRlbXNQZXJQYWdlXT1cIml0ZW1zUGVyUGFnZVwiXHJcbiAgICAgICAgICAgIFt0b3RhbEl0ZW1zXT1cInRvdGFsSXRlbXNcIlxyXG4gICAgICAgICAgICAocGFnZUNoYW5nZSk9XCJwYWdlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgPjwvdmRyLXBhZ2luYXRpb24tY29udHJvbHM+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcbjxuZy10ZW1wbGF0ZSAjZW1wdHlQbGFjZWhvbGRlcj5cclxuICAgIDx2ZHItZW1wdHktcGxhY2Vob2xkZXIgW2VtcHR5U3RhdGVMYWJlbF09XCJlbXB0eVN0YXRlTGFiZWxcIj48L3Zkci1lbXB0eS1wbGFjZWhvbGRlcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBR04sV0FBVyxHQUNkLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7O0FBRXpFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMERHO0FBUUgsTUFBTSxPQUFPLGtCQUFrQjtJQVAvQjtRQWVjLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUMzQyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFLLENBQUM7UUFDeEMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDeEMsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztLQXlCN0Q7SUFsQkcsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztJQUM5QyxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQWEsRUFBRSxJQUFTO1FBQzlCLElBQUssSUFBWSxDQUFDLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDMUIsT0FBUSxJQUFZLENBQUMsRUFBRSxDQUFDO1NBQzNCO2FBQU07WUFDSCxPQUFPLEtBQUssQ0FBQztTQUNoQjtJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQ2YsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDO1NBQzVFO0lBQ0wsQ0FBQzs7K0dBbkNRLGtCQUFrQjttR0FBbEIsa0JBQWtCLHNaQUZoQixDQUFDLGlCQUFpQixDQUFDLGtEQWNiLHdCQUF3QiwrQ0FDeEIsV0FBVyxrRENoR2hDLDZ0RkFtRUE7MkZEZ0JhLGtCQUFrQjtrQkFQOUIsU0FBUzsrQkFDSSxnQkFBZ0IsbUJBR1QsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLGlCQUFpQixDQUFDOzhCQUdyQixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0ksZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNvQyxPQUFPO3NCQUFqRCxlQUFlO3VCQUFDLHdCQUF3QjtnQkFDWCxZQUFZO3NCQUF6QyxlQUFlO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgQ29udGVudENoaWxkcmVuLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBRdWVyeUxpc3QsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgVGVtcGxhdGVSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFBhZ2luYXRpb25TZXJ2aWNlIH0gZnJvbSAnbmd4LXBhZ2luYXRpb24nO1xyXG5cclxuaW1wb3J0IHsgRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRhLXRhYmxlLWNvbHVtbi5jb21wb25lbnQnO1xyXG5cclxuLyoqXHJcbiAqIEBkZXNjcmlwdGlvblxyXG4gKiBBIHRhYmxlIGZvciBkaXNwbGF5aW5nIFBhZ2luYXRlZExpc3QgcmVzdWx0cy4gSXQgaXMgZGVzaWduZWQgdG8gYmUgdXNlZCBpbnNpZGUgY29tcG9uZW50cyB3aGljaFxyXG4gKiBleHRlbmQgdGhlIHtAbGluayBCYXNlTGlzdENvbXBvbmVudH0gY2xhc3MuXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYEhUTUxcclxuICogPHZkci1kYXRhLXRhYmxlXHJcbiAqICAgW2l0ZW1zXT1cIml0ZW1zJCB8IGFzeW5jXCJcclxuICogICBbaXRlbXNQZXJQYWdlXT1cIml0ZW1zUGVyUGFnZSQgfCBhc3luY1wiXHJcbiAqICAgW3RvdGFsSXRlbXNdPVwidG90YWxJdGVtcyQgfCBhc3luY1wiXHJcbiAqICAgW2N1cnJlbnRQYWdlXT1cImN1cnJlbnRQYWdlJCB8IGFzeW5jXCJcclxuICogICAocGFnZUNoYW5nZSk9XCJzZXRQYWdlTnVtYmVyKCRldmVudClcIlxyXG4gKiAgIChpdGVtc1BlclBhZ2VDaGFuZ2UpPVwic2V0SXRlbXNQZXJQYWdlKCRldmVudClcIlxyXG4gKiA+XHJcbiAqICAgPCEtLSBUaGUgaGVhZGVyIGNvbHVtbnMgYXJlIGRlZmluZWQgZmlyc3QgLS0+XHJcbiAqICAgPHZkci1kdC1jb2x1bW4+e3sgJ2NvbW1vbi5uYW1lJyB8IHRyYW5zbGF0ZSB9fTwvdmRyLWR0LWNvbHVtbj5cclxuICogICA8dmRyLWR0LWNvbHVtbj48L3Zkci1kdC1jb2x1bW4+XHJcbiAqICAgPHZkci1kdC1jb2x1bW4+PC92ZHItZHQtY29sdW1uPlxyXG4gKlxyXG4gKiAgIDwhLS0gVGhlbiB3ZSBkZWZpbmUgaG93IGEgcm93IGlzIHJlbmRlcmVkIC0tPlxyXG4gKiAgIDxuZy10ZW1wbGF0ZSBsZXQtdGF4UmF0ZT1cIml0ZW1cIj5cclxuICogICAgIDx0ZCBjbGFzcz1cImxlZnQgYWxpZ24tbWlkZGxlXCI+e3sgdGF4UmF0ZS5uYW1lIH19PC90ZD5cclxuICogICAgIDx0ZCBjbGFzcz1cImxlZnQgYWxpZ24tbWlkZGxlXCI+e3sgdGF4UmF0ZS5jYXRlZ29yeS5uYW1lIH19PC90ZD5cclxuICogICAgIDx0ZCBjbGFzcz1cImxlZnQgYWxpZ24tbWlkZGxlXCI+e3sgdGF4UmF0ZS56b25lLm5hbWUgfX08L3RkPlxyXG4gKiAgICAgPHRkIGNsYXNzPVwibGVmdCBhbGlnbi1taWRkbGVcIj57eyB0YXhSYXRlLnZhbHVlIH19JTwvdGQ+XHJcbiAqICAgICA8dGQgY2xhc3M9XCJyaWdodCBhbGlnbi1taWRkbGVcIj5cclxuICogICAgICAgPHZkci10YWJsZS1yb3ctYWN0aW9uXHJcbiAqICAgICAgICAgaWNvblNoYXBlPVwiZWRpdFwiXHJcbiAqICAgICAgICAgW2xhYmVsXT1cIidjb21tb24uZWRpdCcgfCB0cmFuc2xhdGVcIlxyXG4gKiAgICAgICAgIFtsaW5rVG9dPVwiWycuLycsIHRheFJhdGUuaWRdXCJcclxuICogICAgICAgPjwvdmRyLXRhYmxlLXJvdy1hY3Rpb24+XHJcbiAqICAgICA8L3RkPlxyXG4gKiAgICAgPHRkIGNsYXNzPVwicmlnaHQgYWxpZ24tbWlkZGxlXCI+XHJcbiAqICAgICAgIDx2ZHItZHJvcGRvd24+XHJcbiAqICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpbmsgYnRuLXNtXCIgdmRyRHJvcGRvd25UcmlnZ2VyPlxyXG4gKiAgICAgICAgICAge3sgJ2NvbW1vbi5hY3Rpb25zJyB8IHRyYW5zbGF0ZSB9fVxyXG4gKiAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwiY2FyZXQgZG93blwiPjwvY2xyLWljb24+XHJcbiAqICAgICAgICAgPC9idXR0b24+XHJcbiAqICAgICAgICAgPHZkci1kcm9wZG93bi1tZW51IHZkclBvc2l0aW9uPVwiYm90dG9tLXJpZ2h0XCI+XHJcbiAqICAgICAgICAgICA8YnV0dG9uXHJcbiAqICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAqICAgICAgICAgICAgICAgY2xhc3M9XCJkZWxldGUtYnV0dG9uXCJcclxuICogICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlVGF4UmF0ZSh0YXhSYXRlKVwiXHJcbiAqICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiEoWydEZWxldGVTZXR0aW5ncycsICdEZWxldGVUYXhSYXRlJ10gfCBoYXNQZXJtaXNzaW9uKVwiXHJcbiAqICAgICAgICAgICAgICAgdmRyRHJvcGRvd25JdGVtXHJcbiAqICAgICAgICAgICA+XHJcbiAqICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwidHJhc2hcIiBjbGFzcz1cImlzLWRhbmdlclwiPjwvY2xyLWljb24+XHJcbiAqICAgICAgICAgICAgICAge3sgJ2NvbW1vbi5kZWxldGUnIHwgdHJhbnNsYXRlIH19XHJcbiAqICAgICAgICAgICA8L2J1dHRvbj5cclxuICogICAgICAgICA8L3Zkci1kcm9wZG93bi1tZW51PlxyXG4gKiAgICAgICA8L3Zkci1kcm9wZG93bj5cclxuICogICAgIDwvdGQ+XHJcbiAqICAgPC9uZy10ZW1wbGF0ZT5cclxuICogPC92ZHItZGF0YS10YWJsZT5cclxuICogYGBgXHJcbiAqXHJcbiAqIEBkb2NzQ2F0ZWdvcnkgY29tcG9uZW50c1xyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3Zkci1kYXRhLXRhYmxlJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnZGF0YS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBwcm92aWRlcnM6IFtQYWdpbmF0aW9uU2VydmljZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYXRhVGFibGVDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkNoYW5nZXMge1xyXG4gICAgQElucHV0KCkgaXRlbXM6IFRbXTtcclxuICAgIEBJbnB1dCgpIGl0ZW1zUGVyUGFnZTogbnVtYmVyO1xyXG4gICAgQElucHV0KCkgY3VycmVudFBhZ2U6IG51bWJlcjtcclxuICAgIEBJbnB1dCgpIHRvdGFsSXRlbXM6IG51bWJlcjtcclxuICAgIEBJbnB1dCgpIGFsbFNlbGVjdGVkOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgaXNSb3dTZWxlY3RlZEZuOiAoaXRlbTogVCkgPT4gYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGVtcHR5U3RhdGVMYWJlbDogc3RyaW5nO1xyXG4gICAgQE91dHB1dCgpIGFsbFNlbGVjdENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICAgIEBPdXRwdXQoKSByb3dTZWxlY3RDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XHJcbiAgICBAT3V0cHV0KCkgcGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG4gICAgQE91dHB1dCgpIGl0ZW1zUGVyUGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG4gICAgQENvbnRlbnRDaGlsZHJlbihEYXRhVGFibGVDb2x1bW5Db21wb25lbnQpIGNvbHVtbnM6IFF1ZXJ5TGlzdDxEYXRhVGFibGVDb2x1bW5Db21wb25lbnQ+O1xyXG4gICAgQENvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZVJlZikgdGVtcGxhdGVSZWZzOiBRdWVyeUxpc3Q8VGVtcGxhdGVSZWY8YW55Pj47XHJcbiAgICByb3dUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICAgIGN1cnJlbnRTdGFydDogbnVtYmVyO1xyXG4gICAgY3VycmVudEVuZDogbnVtYmVyO1xyXG5cclxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnJvd1RlbXBsYXRlID0gdGhpcy50ZW1wbGF0ZVJlZnMubGFzdDtcclxuICAgIH1cclxuXHJcbiAgICB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgaXRlbTogYW55KSB7XHJcbiAgICAgICAgaWYgKChpdGVtIGFzIGFueSkuaWQgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gKGl0ZW0gYXMgYW55KS5pZDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gaW5kZXg7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgICBpZiAoY2hhbmdlcy5pdGVtcykge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTdGFydCA9IHRoaXMuaXRlbXNQZXJQYWdlICogKHRoaXMuY3VycmVudFBhZ2UgLSAxKTtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50RW5kID0gdGhpcy5jdXJyZW50U3RhcnQgKyBjaGFuZ2VzLml0ZW1zLmN1cnJlbnRWYWx1ZT8ubGVuZ3RoO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW1zIHx8IChpdGVtcyAmJiBpdGVtcy5sZW5ndGgpOyBlbHNlIGVtcHR5UGxhY2Vob2xkZXJcIj5cclxuICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlXCI+XHJcbiAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJpc1Jvd1NlbGVjdGVkRm5cIiBjbGFzcz1cImFsaWduLW1pZGRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbHJDaGVja2JveFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhbGxTZWxlY3RlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiYWxsU2VsZWN0Q2hhbmdlLmVtaXQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGhlYWRlciBvZiBjb2x1bW5zPy50b0FycmF5KClcIiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuZXhwYW5kXT1cImhlYWRlci5leHBhbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICA8dHJcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtIG9mIGl0ZW1zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFnaW5hdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNQZXJQYWdlOiBpdGVtc1BlclBhZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UGFnZTogY3VycmVudFBhZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbEl0ZW1zOiB0b3RhbEl0ZW1zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgaW5kZXggYXMgaTtcclxuICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5Rm5cclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImlzUm93U2VsZWN0ZWRGblwiIGNsYXNzPVwiYWxpZ24tbWlkZGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsckNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzUm93U2VsZWN0ZWRGbihpdGVtKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwicm93U2VsZWN0Q2hhbmdlLmVtaXQoaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwicm93VGVtcGxhdGU7IGNvbnRleHQ6IHsgaXRlbTogaXRlbSwgaW5kZXg6IGkgfVwiXHJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC90Ym9keT5cclxuICAgIDwvdGFibGU+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGFibGUtZm9vdGVyXCI+XHJcbiAgICAgICAgPHZkci1pdGVtcy1wZXItcGFnZS1jb250cm9sc1xyXG4gICAgICAgICAgICAqbmdJZj1cInRvdGFsSXRlbXNcIlxyXG4gICAgICAgICAgICBbaXRlbXNQZXJQYWdlXT1cIml0ZW1zUGVyUGFnZVwiXHJcbiAgICAgICAgICAgIChpdGVtc1BlclBhZ2VDaGFuZ2UpPVwiaXRlbXNQZXJQYWdlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgPjwvdmRyLWl0ZW1zLXBlci1wYWdlLWNvbnRyb2xzPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIHt7ICdjb21tb24udG90YWwtaXRlbXMnIHwgdHJhbnNsYXRlOiB7IGN1cnJlbnRTdGFydCwgY3VycmVudEVuZCwgdG90YWxJdGVtcyB9IH19XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDx2ZHItcGFnaW5hdGlvbi1jb250cm9sc1xyXG4gICAgICAgICAgICAqbmdJZj1cInRvdGFsSXRlbXNcIlxyXG4gICAgICAgICAgICBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2VcIlxyXG4gICAgICAgICAgICBbaXRlbXNQZXJQYWdlXT1cIml0ZW1zUGVyUGFnZVwiXHJcbiAgICAgICAgICAgIFt0b3RhbEl0ZW1zXT1cInRvdGFsSXRlbXNcIlxyXG4gICAgICAgICAgICAocGFnZUNoYW5nZSk9XCJwYWdlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgPjwvdmRyLXBhZ2luYXRpb24tY29udHJvbHM+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcbjxuZy10ZW1wbGF0ZSAjZW1wdHlQbGFjZWhvbGRlcj5cclxuICAgIDx2ZHItZW1wdHktcGxhY2Vob2xkZXIgW2VtcHR5U3RhdGVMYWJlbF09XCJlbXB0eVN0YXRlTGFiZWxcIj48L3Zkci1lbXB0eS1wbGFjZWhvbGRlcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
@@ -28,11 +28,11 @@ export class FormattedAddressComponent {
28
28
  }
29
29
  }
30
30
  FormattedAddressComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: FormattedAddressComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
31
- FormattedAddressComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: FormattedAddressComponent, selector: "vdr-formatted-address", inputs: { address: "address" }, ngImport: i0, template: "<ul class=\"address-lines\">\r\n <li *ngIf=\"address.fullName\">{{ address.fullName }}</li>\r\n <li *ngIf=\"address.streetLine1\">{{ address.streetLine1 }}</li>\r\n <li *ngIf=\"address.streetLine2\">{{ address.streetLine2 }}</li>\r\n <li *ngIf=\"address.city\">{{ address.city }}</li>\r\n <li *ngIf=\"address.province\">{{ address.province }}</li>\r\n <li *ngIf=\"address.postalCode\">{{ address.postalCode }}</li>\r\n <li *ngIf=\"address.country\">\r\n <clr-icon shape=\"world\" size=\"12\"></clr-icon>\r\n {{ getCountryName() }}\r\n </li>\r\n <li *ngIf=\"address.phoneNumber\">\r\n <clr-icon shape=\"phone-handset\" size=\"12\"></clr-icon>\r\n {{ address.phoneNumber }}\r\n </li>\r\n <li *ngFor=\"let customField of getCustomFields()\" class=\"custom-field\">\r\n <vdr-labeled-data [label]=\"customField.key\">{{ customField.value }}</vdr-labeled-data>\r\n </li>\r\n</ul>\r\n", styles: [".address-lines{list-style-type:none;line-height:1.2em}.custom-field{margin-top:6px}\n"], components: [{ type: i1.LabeledDataComponent, selector: "vdr-labeled-data", inputs: ["label"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.ClrIconCustomTag, selector: "clr-icon" }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
31
+ FormattedAddressComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: FormattedAddressComponent, selector: "vdr-formatted-address", inputs: { address: "address" }, ngImport: i0, template: "<ul class=\"address-lines\">\r\n <li *ngIf=\"address.fullName\">{{ address.fullName }}</li>\r\n <li *ngIf=\"address.company\">{{ address.company }}</li>\r\n <li *ngIf=\"address.streetLine1\">{{ address.streetLine1 }}</li>\r\n <li *ngIf=\"address.streetLine2\">{{ address.streetLine2 }}</li>\r\n <li *ngIf=\"address.city\">{{ address.city }}</li>\r\n <li *ngIf=\"address.province\">{{ address.province }}</li>\r\n <li *ngIf=\"address.postalCode\">{{ address.postalCode }}</li>\r\n <li *ngIf=\"address.country\">\r\n <clr-icon shape=\"world\" size=\"12\"></clr-icon>\r\n {{ getCountryName() }}\r\n </li>\r\n <li *ngIf=\"address.phoneNumber\">\r\n <clr-icon shape=\"phone-handset\" size=\"12\"></clr-icon>\r\n {{ address.phoneNumber }}\r\n </li>\r\n <li *ngFor=\"let customField of getCustomFields()\" class=\"custom-field\">\r\n <vdr-labeled-data [label]=\"customField.key\">{{ customField.value }}</vdr-labeled-data>\r\n </li>\r\n</ul>\r\n", styles: [".address-lines{list-style-type:none;line-height:1.2em}.custom-field{margin-top:6px}\n"], components: [{ type: i1.LabeledDataComponent, selector: "vdr-labeled-data", inputs: ["label"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.ClrIconCustomTag, selector: "clr-icon" }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
32
32
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: FormattedAddressComponent, decorators: [{
33
33
  type: Component,
34
- args: [{ selector: 'vdr-formatted-address', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ul class=\"address-lines\">\r\n <li *ngIf=\"address.fullName\">{{ address.fullName }}</li>\r\n <li *ngIf=\"address.streetLine1\">{{ address.streetLine1 }}</li>\r\n <li *ngIf=\"address.streetLine2\">{{ address.streetLine2 }}</li>\r\n <li *ngIf=\"address.city\">{{ address.city }}</li>\r\n <li *ngIf=\"address.province\">{{ address.province }}</li>\r\n <li *ngIf=\"address.postalCode\">{{ address.postalCode }}</li>\r\n <li *ngIf=\"address.country\">\r\n <clr-icon shape=\"world\" size=\"12\"></clr-icon>\r\n {{ getCountryName() }}\r\n </li>\r\n <li *ngIf=\"address.phoneNumber\">\r\n <clr-icon shape=\"phone-handset\" size=\"12\"></clr-icon>\r\n {{ address.phoneNumber }}\r\n </li>\r\n <li *ngFor=\"let customField of getCustomFields()\" class=\"custom-field\">\r\n <vdr-labeled-data [label]=\"customField.key\">{{ customField.value }}</vdr-labeled-data>\r\n </li>\r\n</ul>\r\n", styles: [".address-lines{list-style-type:none;line-height:1.2em}.custom-field{margin-top:6px}\n"] }]
34
+ args: [{ selector: 'vdr-formatted-address', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ul class=\"address-lines\">\r\n <li *ngIf=\"address.fullName\">{{ address.fullName }}</li>\r\n <li *ngIf=\"address.company\">{{ address.company }}</li>\r\n <li *ngIf=\"address.streetLine1\">{{ address.streetLine1 }}</li>\r\n <li *ngIf=\"address.streetLine2\">{{ address.streetLine2 }}</li>\r\n <li *ngIf=\"address.city\">{{ address.city }}</li>\r\n <li *ngIf=\"address.province\">{{ address.province }}</li>\r\n <li *ngIf=\"address.postalCode\">{{ address.postalCode }}</li>\r\n <li *ngIf=\"address.country\">\r\n <clr-icon shape=\"world\" size=\"12\"></clr-icon>\r\n {{ getCountryName() }}\r\n </li>\r\n <li *ngIf=\"address.phoneNumber\">\r\n <clr-icon shape=\"phone-handset\" size=\"12\"></clr-icon>\r\n {{ address.phoneNumber }}\r\n </li>\r\n <li *ngFor=\"let customField of getCustomFields()\" class=\"custom-field\">\r\n <vdr-labeled-data [label]=\"customField.key\">{{ customField.value }}</vdr-labeled-data>\r\n </li>\r\n</ul>\r\n", styles: [".address-lines{list-style-type:none;line-height:1.2em}.custom-field{margin-top:6px}\n"] }]
35
35
  }], propDecorators: { address: [{
36
36
  type: Input
37
37
  }] } });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVkLWFkZHJlc3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL3NyYy9zaGFyZWQvY29tcG9uZW50cy9mb3JtYXR0ZWQtYWRkcmVzcy9mb3JtYXR0ZWQtYWRkcmVzcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL2Zvcm1hdHRlZC1hZGRyZXNzL2Zvcm1hdHRlZC1hZGRyZXNzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQVUxRSxNQUFNLE9BQU8seUJBQXlCO0lBR2xDLGNBQWM7UUFDVixJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDdEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7U0FDcEM7YUFBTTtZQUNILE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1NBQ3JDO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDWCxNQUFNLFlBQVksR0FBSSxJQUFJLENBQUMsT0FBZSxDQUFDLFlBQVksQ0FBQztRQUN4RCxJQUFJLFlBQVksRUFBRTtZQUNkLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7aUJBQzlCLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxZQUFZLENBQUM7aUJBQ3ZDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRyxLQUFhLEVBQUUsUUFBUSxFQUFFLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ25GO2FBQU07WUFDSCxPQUFPLEVBQUUsQ0FBQztTQUNiO0lBQ0wsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEtBQXFDO1FBQzNELE9BQU8sT0FBTyxLQUFLLENBQUMsT0FBTyxLQUFLLFFBQVEsQ0FBQztJQUM3QyxDQUFDOztzSEF4QlEseUJBQXlCOzBHQUF6Qix5QkFBeUIsNkZDVnRDLHM3QkFtQkE7MkZEVGEseUJBQXlCO2tCQU5yQyxTQUFTOytCQUNJLHVCQUF1QixtQkFHaEIsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEFkZHJlc3NGcmFnbWVudCwgT3JkZXJBZGRyZXNzIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2dlbmVyYXRlZC10eXBlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmRyLWZvcm1hdHRlZC1hZGRyZXNzJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb3JtYXR0ZWQtYWRkcmVzcy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9mb3JtYXR0ZWQtYWRkcmVzcy5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtYXR0ZWRBZGRyZXNzQ29tcG9uZW50IHtcclxuICAgIEBJbnB1dCgpIGFkZHJlc3M6IEFkZHJlc3NGcmFnbWVudCB8IE9yZGVyQWRkcmVzcztcclxuXHJcbiAgICBnZXRDb3VudHJ5TmFtZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICh0aGlzLmlzQWRkcmVzc0ZyYWdtZW50KHRoaXMuYWRkcmVzcykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRkcmVzcy5jb3VudHJ5Lm5hbWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRkcmVzcy5jb3VudHJ5IHx8ICcnO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRDdXN0b21GaWVsZHMoKTogQXJyYXk8eyBrZXk6IHN0cmluZzsgdmFsdWU6IGFueSB9PiB7XHJcbiAgICAgICAgY29uc3QgY3VzdG9tRmllbGRzID0gKHRoaXMuYWRkcmVzcyBhcyBhbnkpLmN1c3RvbUZpZWxkcztcclxuICAgICAgICBpZiAoY3VzdG9tRmllbGRzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyhjdXN0b21GaWVsZHMpXHJcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChba2V5XSkgPT4ga2V5ICE9PSAnX190eXBlbmFtZScpXHJcbiAgICAgICAgICAgICAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+ICh7IGtleSwgdmFsdWU6ICh2YWx1ZSBhcyBhbnkpPy50b1N0cmluZygpID8/ICctJyB9KSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzQWRkcmVzc0ZyYWdtZW50KGlucHV0OiBBZGRyZXNzRnJhZ21lbnQgfCBPcmRlckFkZHJlc3MpOiBpbnB1dCBpcyBBZGRyZXNzRnJhZ21lbnQge1xyXG4gICAgICAgIHJldHVybiB0eXBlb2YgaW5wdXQuY291bnRyeSAhPT0gJ3N0cmluZyc7XHJcbiAgICB9XHJcbn1cclxuIiwiPHVsIGNsYXNzPVwiYWRkcmVzcy1saW5lc1wiPlxyXG4gICAgPGxpICpuZ0lmPVwiYWRkcmVzcy5mdWxsTmFtZVwiPnt7IGFkZHJlc3MuZnVsbE5hbWUgfX08L2xpPlxyXG4gICAgPGxpICpuZ0lmPVwiYWRkcmVzcy5zdHJlZXRMaW5lMVwiPnt7IGFkZHJlc3Muc3RyZWV0TGluZTEgfX08L2xpPlxyXG4gICAgPGxpICpuZ0lmPVwiYWRkcmVzcy5zdHJlZXRMaW5lMlwiPnt7IGFkZHJlc3Muc3RyZWV0TGluZTIgfX08L2xpPlxyXG4gICAgPGxpICpuZ0lmPVwiYWRkcmVzcy5jaXR5XCI+e3sgYWRkcmVzcy5jaXR5IH19PC9saT5cclxuICAgIDxsaSAqbmdJZj1cImFkZHJlc3MucHJvdmluY2VcIj57eyBhZGRyZXNzLnByb3ZpbmNlIH19PC9saT5cclxuICAgIDxsaSAqbmdJZj1cImFkZHJlc3MucG9zdGFsQ29kZVwiPnt7IGFkZHJlc3MucG9zdGFsQ29kZSB9fTwvbGk+XHJcbiAgICA8bGkgKm5nSWY9XCJhZGRyZXNzLmNvdW50cnlcIj5cclxuICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJ3b3JsZFwiIHNpemU9XCIxMlwiPjwvY2xyLWljb24+XHJcbiAgICAgICAge3sgZ2V0Q291bnRyeU5hbWUoKSB9fVxyXG4gICAgPC9saT5cclxuICAgIDxsaSAqbmdJZj1cImFkZHJlc3MucGhvbmVOdW1iZXJcIj5cclxuICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJwaG9uZS1oYW5kc2V0XCIgc2l6ZT1cIjEyXCI+PC9jbHItaWNvbj5cclxuICAgICAgICB7eyBhZGRyZXNzLnBob25lTnVtYmVyIH19XHJcbiAgICA8L2xpPlxyXG4gICAgPGxpICpuZ0Zvcj1cImxldCBjdXN0b21GaWVsZCBvZiBnZXRDdXN0b21GaWVsZHMoKVwiIGNsYXNzPVwiY3VzdG9tLWZpZWxkXCI+XHJcbiAgICAgICAgPHZkci1sYWJlbGVkLWRhdGEgW2xhYmVsXT1cImN1c3RvbUZpZWxkLmtleVwiPnt7IGN1c3RvbUZpZWxkLnZhbHVlIH19PC92ZHItbGFiZWxlZC1kYXRhPlxyXG4gICAgPC9saT5cclxuPC91bD5cclxuIl19
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVkLWFkZHJlc3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL3NyYy9zaGFyZWQvY29tcG9uZW50cy9mb3JtYXR0ZWQtYWRkcmVzcy9mb3JtYXR0ZWQtYWRkcmVzcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL2Zvcm1hdHRlZC1hZGRyZXNzL2Zvcm1hdHRlZC1hZGRyZXNzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQVUxRSxNQUFNLE9BQU8seUJBQXlCO0lBR2xDLGNBQWM7UUFDVixJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDdEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7U0FDcEM7YUFBTTtZQUNILE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1NBQ3JDO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDWCxNQUFNLFlBQVksR0FBSSxJQUFJLENBQUMsT0FBZSxDQUFDLFlBQVksQ0FBQztRQUN4RCxJQUFJLFlBQVksRUFBRTtZQUNkLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7aUJBQzlCLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxZQUFZLENBQUM7aUJBQ3ZDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRyxLQUFhLEVBQUUsUUFBUSxFQUFFLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ25GO2FBQU07WUFDSCxPQUFPLEVBQUUsQ0FBQztTQUNiO0lBQ0wsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEtBQXFDO1FBQzNELE9BQU8sT0FBTyxLQUFLLENBQUMsT0FBTyxLQUFLLFFBQVEsQ0FBQztJQUM3QyxDQUFDOztzSEF4QlEseUJBQXlCOzBHQUF6Qix5QkFBeUIsNkZDVnRDLHMvQkFvQkE7MkZEVmEseUJBQXlCO2tCQU5yQyxTQUFTOytCQUNJLHVCQUF1QixtQkFHaEIsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEFkZHJlc3NGcmFnbWVudCwgT3JkZXJBZGRyZXNzIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2dlbmVyYXRlZC10eXBlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmRyLWZvcm1hdHRlZC1hZGRyZXNzJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb3JtYXR0ZWQtYWRkcmVzcy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9mb3JtYXR0ZWQtYWRkcmVzcy5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtYXR0ZWRBZGRyZXNzQ29tcG9uZW50IHtcclxuICAgIEBJbnB1dCgpIGFkZHJlc3M6IEFkZHJlc3NGcmFnbWVudCB8IE9yZGVyQWRkcmVzcztcclxuXHJcbiAgICBnZXRDb3VudHJ5TmFtZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICh0aGlzLmlzQWRkcmVzc0ZyYWdtZW50KHRoaXMuYWRkcmVzcykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRkcmVzcy5jb3VudHJ5Lm5hbWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRkcmVzcy5jb3VudHJ5IHx8ICcnO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRDdXN0b21GaWVsZHMoKTogQXJyYXk8eyBrZXk6IHN0cmluZzsgdmFsdWU6IGFueSB9PiB7XHJcbiAgICAgICAgY29uc3QgY3VzdG9tRmllbGRzID0gKHRoaXMuYWRkcmVzcyBhcyBhbnkpLmN1c3RvbUZpZWxkcztcclxuICAgICAgICBpZiAoY3VzdG9tRmllbGRzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyhjdXN0b21GaWVsZHMpXHJcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChba2V5XSkgPT4ga2V5ICE9PSAnX190eXBlbmFtZScpXHJcbiAgICAgICAgICAgICAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+ICh7IGtleSwgdmFsdWU6ICh2YWx1ZSBhcyBhbnkpPy50b1N0cmluZygpID8/ICctJyB9KSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzQWRkcmVzc0ZyYWdtZW50KGlucHV0OiBBZGRyZXNzRnJhZ21lbnQgfCBPcmRlckFkZHJlc3MpOiBpbnB1dCBpcyBBZGRyZXNzRnJhZ21lbnQge1xyXG4gICAgICAgIHJldHVybiB0eXBlb2YgaW5wdXQuY291bnRyeSAhPT0gJ3N0cmluZyc7XHJcbiAgICB9XHJcbn1cclxuIiwiPHVsIGNsYXNzPVwiYWRkcmVzcy1saW5lc1wiPlxyXG4gICAgPGxpICpuZ0lmPVwiYWRkcmVzcy5mdWxsTmFtZVwiPnt7IGFkZHJlc3MuZnVsbE5hbWUgfX08L2xpPlxyXG4gICAgPGxpICpuZ0lmPVwiYWRkcmVzcy5jb21wYW55XCI+e3sgYWRkcmVzcy5jb21wYW55IH19PC9saT5cclxuICAgIDxsaSAqbmdJZj1cImFkZHJlc3Muc3RyZWV0TGluZTFcIj57eyBhZGRyZXNzLnN0cmVldExpbmUxIH19PC9saT5cclxuICAgIDxsaSAqbmdJZj1cImFkZHJlc3Muc3RyZWV0TGluZTJcIj57eyBhZGRyZXNzLnN0cmVldExpbmUyIH19PC9saT5cclxuICAgIDxsaSAqbmdJZj1cImFkZHJlc3MuY2l0eVwiPnt7IGFkZHJlc3MuY2l0eSB9fTwvbGk+XHJcbiAgICA8bGkgKm5nSWY9XCJhZGRyZXNzLnByb3ZpbmNlXCI+e3sgYWRkcmVzcy5wcm92aW5jZSB9fTwvbGk+XHJcbiAgICA8bGkgKm5nSWY9XCJhZGRyZXNzLnBvc3RhbENvZGVcIj57eyBhZGRyZXNzLnBvc3RhbENvZGUgfX08L2xpPlxyXG4gICAgPGxpICpuZ0lmPVwiYWRkcmVzcy5jb3VudHJ5XCI+XHJcbiAgICAgICAgPGNsci1pY29uIHNoYXBlPVwid29ybGRcIiBzaXplPVwiMTJcIj48L2Nsci1pY29uPlxyXG4gICAgICAgIHt7IGdldENvdW50cnlOYW1lKCkgfX1cclxuICAgIDwvbGk+XHJcbiAgICA8bGkgKm5nSWY9XCJhZGRyZXNzLnBob25lTnVtYmVyXCI+XHJcbiAgICAgICAgPGNsci1pY29uIHNoYXBlPVwicGhvbmUtaGFuZHNldFwiIHNpemU9XCIxMlwiPjwvY2xyLWljb24+XHJcbiAgICAgICAge3sgYWRkcmVzcy5waG9uZU51bWJlciB9fVxyXG4gICAgPC9saT5cclxuICAgIDxsaSAqbmdGb3I9XCJsZXQgY3VzdG9tRmllbGQgb2YgZ2V0Q3VzdG9tRmllbGRzKClcIiBjbGFzcz1cImN1c3RvbS1maWVsZFwiPlxyXG4gICAgICAgIDx2ZHItbGFiZWxlZC1kYXRhIFtsYWJlbF09XCJjdXN0b21GaWVsZC5rZXlcIj57eyBjdXN0b21GaWVsZC52YWx1ZSB9fTwvdmRyLWxhYmVsZWQtZGF0YT5cclxuICAgIDwvbGk+XHJcbjwvdWw+XHJcbiJdfQ==
@@ -0,0 +1,135 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { BehaviorSubject, combineLatest } from 'rxjs';
3
+ import { map, tap } from 'rxjs/operators';
4
+ import { SelectionManager } from '../../../common/utilities/selection-manager';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../../../data/providers/data.service";
7
+ import * as i2 from "../product-search-input/product-search-input.component";
8
+ import * as i3 from "../select-toggle/select-toggle.component";
9
+ import * as i4 from "../items-per-page-controls/items-per-page-controls.component";
10
+ import * as i5 from "../pagination-controls/pagination-controls.component";
11
+ import * as i6 from "../modal-dialog/dialog-title.directive";
12
+ import * as i7 from "@angular/common";
13
+ import * as i8 from "@clr/angular";
14
+ import * as i9 from "../modal-dialog/dialog-buttons.directive";
15
+ import * as i10 from "@ngx-translate/core";
16
+ import * as i11 from "ngx-pagination";
17
+ import * as i12 from "../../pipes/asset-preview.pipe";
18
+ export class ProductMultiSelectorDialogComponent {
19
+ constructor(dataService, changeDetector) {
20
+ this.dataService = dataService;
21
+ this.changeDetector = changeDetector;
22
+ this.mode = 'product';
23
+ this.initialSelectionIds = [];
24
+ this.searchTerm$ = new BehaviorSubject('');
25
+ this.searchFacetValueIds$ = new BehaviorSubject([]);
26
+ this.paginationConfig = {
27
+ currentPage: 1,
28
+ itemsPerPage: 25,
29
+ totalItems: 1,
30
+ };
31
+ this.paginationConfig$ = new BehaviorSubject(this.paginationConfig);
32
+ }
33
+ ngOnInit() {
34
+ const idFn = this.mode === 'product'
35
+ ? (a, b) => a.productId === b.productId
36
+ : (a, b) => a.productVariantId === b.productVariantId;
37
+ this.selectionManager = new SelectionManager({
38
+ multiSelect: true,
39
+ itemsAreEqual: idFn,
40
+ additiveMode: true,
41
+ });
42
+ const searchQueryResult = this.dataService.product.searchProducts('', this.paginationConfig.itemsPerPage, 0);
43
+ const result$ = combineLatest(this.searchTerm$, this.searchFacetValueIds$, this.paginationConfig$).subscribe(([term, facetValueIds, pagination]) => {
44
+ const take = +pagination.itemsPerPage;
45
+ const skip = (pagination.currentPage - 1) * take;
46
+ return searchQueryResult.ref.refetch({
47
+ input: { skip, take, term, facetValueIds, groupByProduct: this.mode === 'product' },
48
+ });
49
+ });
50
+ this.items$ = searchQueryResult.stream$.pipe(tap(data => {
51
+ this.paginationConfig.totalItems = data.search.totalItems;
52
+ this.selectionManager.setCurrentItems(data.search.items);
53
+ }), map(data => data.search.items));
54
+ this.facetValues$ = searchQueryResult.stream$.pipe(map(data => data.search.facetValues));
55
+ if (this.initialSelectionIds.length) {
56
+ if (this.mode === 'product') {
57
+ this.dataService.product
58
+ .getProducts({
59
+ filter: {
60
+ id: {
61
+ in: this.initialSelectionIds,
62
+ },
63
+ },
64
+ })
65
+ .single$.subscribe(({ products }) => {
66
+ this.selectionManager.selectMultiple(products.items.map(product => ({
67
+ productId: product.id,
68
+ productName: product.name,
69
+ })));
70
+ this.changeDetector.markForCheck();
71
+ });
72
+ }
73
+ else {
74
+ this.dataService.product
75
+ .getProductVariants({
76
+ filter: {
77
+ id: {
78
+ in: this.initialSelectionIds,
79
+ },
80
+ },
81
+ })
82
+ .single$.subscribe(({ productVariants }) => {
83
+ this.selectionManager.selectMultiple(productVariants.items.map(variant => ({
84
+ productVariantId: variant.id,
85
+ productVariantName: variant.name,
86
+ })));
87
+ this.changeDetector.markForCheck();
88
+ });
89
+ }
90
+ }
91
+ }
92
+ trackByFn(index, item) {
93
+ return item.productId;
94
+ }
95
+ setSearchTerm(term) {
96
+ this.searchTerm$.next(term);
97
+ }
98
+ setFacetValueIds(ids) {
99
+ this.searchFacetValueIds$.next(ids);
100
+ }
101
+ toggleSelection(item, event) {
102
+ this.selectionManager.toggleSelection(item, event);
103
+ }
104
+ clearSelection() {
105
+ this.selectionManager.selectMultiple([]);
106
+ }
107
+ isSelected(item) {
108
+ return this.selectionManager.isSelected(item);
109
+ }
110
+ entityInfoClick(event) {
111
+ event.preventDefault();
112
+ event.stopPropagation();
113
+ }
114
+ pageChange(page) {
115
+ this.paginationConfig.currentPage = page;
116
+ this.paginationConfig$.next(this.paginationConfig);
117
+ }
118
+ itemsPerPageChange(itemsPerPage) {
119
+ this.paginationConfig.itemsPerPage = itemsPerPage;
120
+ this.paginationConfig$.next(this.paginationConfig);
121
+ }
122
+ select() {
123
+ this.resolveWith(this.selectionManager.selection);
124
+ }
125
+ cancel() {
126
+ this.resolveWith();
127
+ }
128
+ }
129
+ ProductMultiSelectorDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ProductMultiSelectorDialogComponent, deps: [{ token: i1.DataService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
130
+ ProductMultiSelectorDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: ProductMultiSelectorDialogComponent, selector: "vdr-product-multi-selector-dialog", ngImport: i0, template: "<ng-template vdrDialogTitle>\r\n <div class=\"title-row\">\r\n <span *ngIf=\"mode === 'product'\">{{ 'common.select-products' | translate }}</span>\r\n <span *ngIf=\"mode === 'variant'\">{{ 'common.select-variants' | translate }}</span>\r\n </div>\r\n</ng-template>\r\n<vdr-product-search-input\r\n #productSearchInputComponent\r\n [facetValueResults]=\"facetValues$ | async\"\r\n (searchTermChange)=\"setSearchTerm($event)\"\r\n (facetValueChange)=\"setFacetValueIds($event)\"\r\n></vdr-product-search-input>\r\n<div class=\"flex-wrapper\">\r\n <div class=\"gallery\">\r\n <div\r\n class=\"card\"\r\n *ngFor=\"let item of (items$ | async) || [] | paginate: paginationConfig; trackBy: trackByFn\"\r\n (click)=\"toggleSelection(item, $event)\"\r\n [class.selected]=\"isSelected(item)\"\r\n >\r\n <div class=\"card-img\">\r\n <vdr-select-toggle\r\n [selected]=\"isSelected(item)\"\r\n [disabled]=\"true\"\r\n [hiddenWhenOff]=\"true\"\r\n ></vdr-select-toggle>\r\n <img\r\n [src]=\"\r\n (mode === 'product'\r\n ? item.productAsset\r\n : item.productVariantAsset || item.productAsset\r\n ) | assetPreview: 'thumb'\r\n \"\r\n />\r\n </div>\r\n <div class=\"detail\">\r\n <span [title]=\"mode === 'product' ? item.productName : item.productVariantName\">{{\r\n mode === 'product' ? item.productName : item.productVariantName\r\n }}</span>\r\n <div *ngIf=\"mode === 'variant'\"><small>{{ item.sku }}</small></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"selection\">\r\n <div class=\"m2 flex center\">\r\n <div>\r\n {{ 'common.items-selected-count' | translate: { count: selectionManager.selection.length } }}\r\n </div>\r\n <div class=\"flex-spacer\"></div>\r\n <button class=\"btn btn-sm btn-link\" (click)=\"clearSelection()\">\r\n <cds-icon shape=\"times\"></cds-icon> {{ 'common.clear-selection' | translate }}\r\n </button>\r\n </div>\r\n <div class=\"selected-items\">\r\n <div *ngFor=\"let item of selectionManager.selection\" class=\"flex item-row\">\r\n <div class=\"\">{{ mode === 'product' ? item.productName : item.productVariantName }}</div>\r\n <div class=\"flex-spacer\"></div>\r\n <div>\r\n <button class=\"icon-button\" (click)=\"toggleSelection(item, $event)\">\r\n <cds-icon shape=\"times\"></cds-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"paging-controls\">\r\n <vdr-items-per-page-controls\r\n [itemsPerPage]=\"paginationConfig.itemsPerPage\"\r\n (itemsPerPageChange)=\"itemsPerPageChange($event)\"\r\n ></vdr-items-per-page-controls>\r\n\r\n <vdr-pagination-controls\r\n [currentPage]=\"paginationConfig.currentPage\"\r\n [itemsPerPage]=\"paginationConfig.itemsPerPage\"\r\n [totalItems]=\"paginationConfig.totalItems\"\r\n (pageChange)=\"pageChange($event)\"\r\n ></vdr-pagination-controls>\r\n</div>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button\r\n type=\"submit\"\r\n (click)=\"select()\"\r\n class=\"btn btn-primary\"\r\n [disabled]=\"selectionManager.selection.length === 0\"\r\n >\r\n {{ 'common.select-items-with-count' | translate: { count: selectionManager.selection.length } }}\r\n </button>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;flex-direction:1;height:70vh}.flex-wrapper{display:flex;overflow-y:hidden}.gallery{flex:1;display:grid;grid-template-columns:repeat(auto-fill,125px);grid-template-rows:repeat(auto-fill,200px);grid-gap:10px 20px;padding-left:12px;padding-top:12px;padding-bottom:64px;overflow-y:auto}.gallery .card:hover{box-shadow:0 .125rem 0 0 var(--color-primary-500);border:1px solid var(--color-primary-500)}.detail{margin:0 3px;font-size:12px;line-height:.8rem}vdr-select-toggle{position:absolute;top:-12px;left:-12px}vdr-select-toggle ::ng-deep .toggle{box-shadow:0 5px 5px -4px #000000bf}.card.selected{box-shadow:0 .125rem 0 0 var(--color-primary-500);border:1px solid var(--color-primary-500)}.card.selected .selected-checkbox{opacity:1}.selection{width:23vw;max-width:400px;padding:6px;display:flex;flex-direction:column}.selection .selected-items{flex:1;overflow-y:auto}.selection .selected-items .item-row{padding-left:3px}.selection .selected-items .item-row:hover{background-color:var(--color-component-bg-200)}.paging-controls{display:flex;align-items:center;justify-content:space-between}\n"], components: [{ type: i2.ProductSearchInputComponent, selector: "vdr-product-search-input", inputs: ["facetValueResults"], outputs: ["searchTermChange", "facetValueChange"] }, { type: i3.SelectToggleComponent, selector: "vdr-select-toggle", inputs: ["size", "selected", "hiddenWhenOff", "disabled", "label"], outputs: ["selectedChange"] }, { type: i4.ItemsPerPageControlsComponent, selector: "vdr-items-per-page-controls", inputs: ["itemsPerPage"], outputs: ["itemsPerPageChange"] }, { type: i5.PaginationControlsComponent, selector: "vdr-pagination-controls", inputs: ["id", "currentPage", "itemsPerPage", "totalItems"], outputs: ["pageChange"] }], directives: [{ type: i6.DialogTitleDirective, selector: "[vdrDialogTitle]" }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.ClrDatagridItemsTrackBy, selector: "[ngForTrackBy]", inputs: ["ngForTrackBy"] }, { type: i8.CdsIconCustomTag, selector: "cds-icon" }, { type: i9.DialogButtonsDirective, selector: "[vdrDialogButtons]" }], pipes: { "translate": i10.TranslatePipe, "async": i7.AsyncPipe, "paginate": i11.PaginatePipe, "assetPreview": i12.AssetPreviewPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
131
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ProductMultiSelectorDialogComponent, decorators: [{
132
+ type: Component,
133
+ args: [{ selector: 'vdr-product-multi-selector-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template vdrDialogTitle>\r\n <div class=\"title-row\">\r\n <span *ngIf=\"mode === 'product'\">{{ 'common.select-products' | translate }}</span>\r\n <span *ngIf=\"mode === 'variant'\">{{ 'common.select-variants' | translate }}</span>\r\n </div>\r\n</ng-template>\r\n<vdr-product-search-input\r\n #productSearchInputComponent\r\n [facetValueResults]=\"facetValues$ | async\"\r\n (searchTermChange)=\"setSearchTerm($event)\"\r\n (facetValueChange)=\"setFacetValueIds($event)\"\r\n></vdr-product-search-input>\r\n<div class=\"flex-wrapper\">\r\n <div class=\"gallery\">\r\n <div\r\n class=\"card\"\r\n *ngFor=\"let item of (items$ | async) || [] | paginate: paginationConfig; trackBy: trackByFn\"\r\n (click)=\"toggleSelection(item, $event)\"\r\n [class.selected]=\"isSelected(item)\"\r\n >\r\n <div class=\"card-img\">\r\n <vdr-select-toggle\r\n [selected]=\"isSelected(item)\"\r\n [disabled]=\"true\"\r\n [hiddenWhenOff]=\"true\"\r\n ></vdr-select-toggle>\r\n <img\r\n [src]=\"\r\n (mode === 'product'\r\n ? item.productAsset\r\n : item.productVariantAsset || item.productAsset\r\n ) | assetPreview: 'thumb'\r\n \"\r\n />\r\n </div>\r\n <div class=\"detail\">\r\n <span [title]=\"mode === 'product' ? item.productName : item.productVariantName\">{{\r\n mode === 'product' ? item.productName : item.productVariantName\r\n }}</span>\r\n <div *ngIf=\"mode === 'variant'\"><small>{{ item.sku }}</small></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"selection\">\r\n <div class=\"m2 flex center\">\r\n <div>\r\n {{ 'common.items-selected-count' | translate: { count: selectionManager.selection.length } }}\r\n </div>\r\n <div class=\"flex-spacer\"></div>\r\n <button class=\"btn btn-sm btn-link\" (click)=\"clearSelection()\">\r\n <cds-icon shape=\"times\"></cds-icon> {{ 'common.clear-selection' | translate }}\r\n </button>\r\n </div>\r\n <div class=\"selected-items\">\r\n <div *ngFor=\"let item of selectionManager.selection\" class=\"flex item-row\">\r\n <div class=\"\">{{ mode === 'product' ? item.productName : item.productVariantName }}</div>\r\n <div class=\"flex-spacer\"></div>\r\n <div>\r\n <button class=\"icon-button\" (click)=\"toggleSelection(item, $event)\">\r\n <cds-icon shape=\"times\"></cds-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"paging-controls\">\r\n <vdr-items-per-page-controls\r\n [itemsPerPage]=\"paginationConfig.itemsPerPage\"\r\n (itemsPerPageChange)=\"itemsPerPageChange($event)\"\r\n ></vdr-items-per-page-controls>\r\n\r\n <vdr-pagination-controls\r\n [currentPage]=\"paginationConfig.currentPage\"\r\n [itemsPerPage]=\"paginationConfig.itemsPerPage\"\r\n [totalItems]=\"paginationConfig.totalItems\"\r\n (pageChange)=\"pageChange($event)\"\r\n ></vdr-pagination-controls>\r\n</div>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button\r\n type=\"submit\"\r\n (click)=\"select()\"\r\n class=\"btn btn-primary\"\r\n [disabled]=\"selectionManager.selection.length === 0\"\r\n >\r\n {{ 'common.select-items-with-count' | translate: { count: selectionManager.selection.length } }}\r\n </button>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;flex-direction:1;height:70vh}.flex-wrapper{display:flex;overflow-y:hidden}.gallery{flex:1;display:grid;grid-template-columns:repeat(auto-fill,125px);grid-template-rows:repeat(auto-fill,200px);grid-gap:10px 20px;padding-left:12px;padding-top:12px;padding-bottom:64px;overflow-y:auto}.gallery .card:hover{box-shadow:0 .125rem 0 0 var(--color-primary-500);border:1px solid var(--color-primary-500)}.detail{margin:0 3px;font-size:12px;line-height:.8rem}vdr-select-toggle{position:absolute;top:-12px;left:-12px}vdr-select-toggle ::ng-deep .toggle{box-shadow:0 5px 5px -4px #000000bf}.card.selected{box-shadow:0 .125rem 0 0 var(--color-primary-500);border:1px solid var(--color-primary-500)}.card.selected .selected-checkbox{opacity:1}.selection{width:23vw;max-width:400px;padding:6px;display:flex;flex-direction:column}.selection .selected-items{flex:1;overflow-y:auto}.selection .selected-items .item-row{padding-left:3px}.selection .selected-items .item-row:hover{background-color:var(--color-component-bg-200)}.paging-controls{display:flex;align-items:center;justify-content:space-between}\n"] }]
134
+ }], ctorParameters: function () { return [{ type: i1.DataService }, { type: i0.ChangeDetectorRef }]; } });
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1tdWx0aS1zZWxlY3Rvci1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL3NyYy9zaGFyZWQvY29tcG9uZW50cy9wcm9kdWN0LW11bHRpLXNlbGVjdG9yLWRpYWxvZy9wcm9kdWN0LW11bHRpLXNlbGVjdG9yLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL3Byb2R1Y3QtbXVsdGktc2VsZWN0b3ItZGlhbG9nL3Byb2R1Y3QtbXVsdGktc2VsZWN0b3ItZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTlGLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHMUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBWS9FLE1BQU0sT0FBTyxtQ0FBbUM7SUFpQjVDLFlBQW9CLFdBQXdCLEVBQVUsY0FBaUM7UUFBbkUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFoQnZGLFNBQUksR0FBMEIsU0FBUyxDQUFDO1FBQ3hDLHdCQUFtQixHQUFhLEVBQUUsQ0FBQztRQUduQyxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLHlCQUFvQixHQUFHLElBQUksZUFBZSxDQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELHFCQUFnQixHQUF1QjtZQUNuQyxXQUFXLEVBQUUsQ0FBQztZQUNkLFlBQVksRUFB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OytCQUNJLG1DQUFtQyxtQkFHNUIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUGFnaW5hdGlvbkluc3RhbmNlIH0gZnJvbSAnbmd4LXBhZ2luYXRpb24nO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBTZWFyY2hQcm9kdWN0c1F1ZXJ5IH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2dlbmVyYXRlZC10eXBlcyc7XHJcbmltcG9ydCB7IFNlbGVjdGlvbk1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdXRpbGl0aWVzL3NlbGVjdGlvbi1tYW5hZ2VyJztcclxuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9kYXRhL3Byb3ZpZGVycy9kYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaWFsb2cgfSBmcm9tICcuLi8uLi8uLi9wcm92aWRlcnMvbW9kYWwvbW9kYWwudHlwZXMnO1xyXG5cclxuZXhwb3J0IHR5cGUgU2VhcmNoSXRlbSA9IFNlYXJjaFByb2R1Y3RzUXVlcnlbJ3NlYXJjaCddWydpdGVtcyddW251bWJlcl07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmRyLXByb2R1Y3QtbXVsdGktc2VsZWN0b3ItZGlhbG9nJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9wcm9kdWN0LW11bHRpLXNlbGVjdG9yLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9wcm9kdWN0LW11bHRpLXNlbGVjdG9yLWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9kdWN0TXVsdGlTZWxlY3RvckRpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgRGlhbG9nPFNlYXJjaEl0ZW1bXT4ge1xyXG4gICAgbW9kZTogJ3Byb2R1Y3QnIHwgJ3ZhcmlhbnQnID0gJ3Byb2R1Y3QnO1xyXG4gICAgaW5pdGlhbFNlbGVjdGlvbklkczogc3RyaW5nW10gPSBbXTtcclxuICAgIGl0ZW1zJDogT2JzZXJ2YWJsZTxTZWFyY2hJdGVtW10+O1xyXG4gICAgZmFjZXRWYWx1ZXMkOiBPYnNlcnZhYmxlPFNlYXJjaFByb2R1Y3RzUXVlcnlbJ3NlYXJjaCddWydmYWNldFZhbHVlcyddPjtcclxuICAgIHNlYXJjaFRlcm0kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcclxuICAgIHNlYXJjaEZhY2V0VmFsdWVJZHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmdbXT4oW10pO1xyXG4gICAgcGFnaW5hdGlvbkNvbmZpZzogUGFnaW5hdGlvbkluc3RhbmNlID0ge1xyXG4gICAgICAgIGN1cnJlbnRQYWdlOiAxLFxyXG4gICAgICAgIGl0ZW1zUGVyUGFnZTogMjUsXHJcbiAgICAgICAgdG90YWxJdGVtczogMSxcclxuICAgIH07XHJcbiAgICBzZWxlY3Rpb25NYW5hZ2VyOiBTZWxlY3Rpb25NYW5hZ2VyPFNlYXJjaEl0ZW0+O1xyXG5cclxuICAgIHJlc29sdmVXaXRoOiAocmVzdWx0PzogU2VhcmNoSXRlbVtdKSA9PiB2b2lkO1xyXG4gICAgcHJpdmF0ZSBwYWdpbmF0aW9uQ29uZmlnJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UGFnaW5hdGlvbkluc3RhbmNlPih0aGlzLnBhZ2luYXRpb25Db25maWcpO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLCBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZikge31cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBpZEZuID1cclxuICAgICAgICAgICAgdGhpcy5tb2RlID09PSAncHJvZHVjdCdcclxuICAgICAgICAgICAgICAgID8gKGE6IFNlYXJjaEl0ZW0sIGI6IFNlYXJjaEl0ZW0pID0+IGEucHJvZHVjdElkID09PSBiLnByb2R1Y3RJZFxyXG4gICAgICAgICAgICAgICAgOiAoYTogU2VhcmNoSXRlbSwgYjogU2VhcmNoSXRlbSkgPT4gYS5wcm9kdWN0VmFyaWFudElkID09PSBiLnByb2R1Y3RWYXJpYW50SWQ7XHJcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25NYW5hZ2VyID0gbmV3IFNlbGVjdGlvbk1hbmFnZXI8U2VhcmNoSXRlbT4oe1xyXG4gICAgICAgICAgICBtdWx0aVNlbGVjdDogdHJ1ZSxcclxuICAgICAgICAgICAgaXRlbXNBcmVFcXVhbDogaWRGbixcclxuICAgICAgICAgICAgYWRkaXRpdmVNb2RlOiB0cnVlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IHNlYXJjaFF1ZXJ5UmVzdWx0ID0gdGhpcy5kYXRhU2VydmljZS5wcm9kdWN0LnNlYXJjaFByb2R1Y3RzKFxyXG4gICAgICAgICAgICAnJyxcclxuICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uQ29uZmlnLml0ZW1zUGVyUGFnZSxcclxuICAgICAgICAgICAgMCxcclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCQgPSBjb21iaW5lTGF0ZXN0KFxyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaFRlcm0kLFxyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaEZhY2V0VmFsdWVJZHMkLFxyXG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRpb25Db25maWckLFxyXG4gICAgICAgICkuc3Vic2NyaWJlKChbdGVybSwgZmFjZXRWYWx1ZUlkcywgcGFnaW5hdGlvbl0pID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdGFrZSA9ICtwYWdpbmF0aW9uLml0ZW1zUGVyUGFnZTtcclxuICAgICAgICAgICAgY29uc3Qgc2tpcCA9IChwYWdpbmF0aW9uLmN1cnJlbnRQYWdlIC0gMSkgKiB0YWtlO1xyXG4gICAgICAgICAgICByZXR1cm4gc2VhcmNoUXVlcnlSZXN1bHQucmVmLnJlZmV0Y2goe1xyXG4gICAgICAgICAgICAgICAgaW5wdXQ6IHsgc2tpcCwgdGFrZSwgdGVybSwgZmFjZXRWYWx1ZUlkcywgZ3JvdXBCeVByb2R1Y3Q6IHRoaXMubW9kZSA9PT0gJ3Byb2R1Y3QnIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLml0ZW1zJCA9IHNlYXJjaFF1ZXJ5UmVzdWx0LnN0cmVhbSQucGlwZShcclxuICAgICAgICAgICAgdGFwKGRhdGEgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsSXRlbXMgPSBkYXRhLnNlYXJjaC50b3RhbEl0ZW1zO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25NYW5hZ2VyLnNldEN1cnJlbnRJdGVtcyhkYXRhLnNlYXJjaC5pdGVtcyk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBtYXAoZGF0YSA9PiBkYXRhLnNlYXJjaC5pdGVtcyksXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5mYWNldFZhbHVlcyQgPSBzZWFyY2hRdWVyeVJlc3VsdC5zdHJlYW0kLnBpcGUobWFwKGRhdGEgPT4gZGF0YS5zZWFyY2guZmFjZXRWYWx1ZXMpKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbFNlbGVjdGlvbklkcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ3Byb2R1Y3QnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLnByb2R1Y3RcclxuICAgICAgICAgICAgICAgICAgICAuZ2V0UHJvZHVjdHMoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW46IHRoaXMuaW5pdGlhbFNlbGVjdGlvbklkcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAuc2luZ2xlJC5zdWJzY3JpYmUoKHsgcHJvZHVjdHMgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbk1hbmFnZXIuc2VsZWN0TXVsdGlwbGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0cy5pdGVtcy5tYXAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdCA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdElkOiBwcm9kdWN0LmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdE5hbWU6IHByb2R1Y3QubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBhcyBTZWFyY2hJdGVtKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLnByb2R1Y3RcclxuICAgICAgICAgICAgICAgICAgICAuZ2V0UHJvZHVjdFZhcmlhbnRzKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluOiB0aGlzLmluaXRpYWxTZWxlY3Rpb25JZHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgLnNpbmdsZSQuc3Vic2NyaWJlKCh7IHByb2R1Y3RWYXJpYW50cyB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uTWFuYWdlci5zZWxlY3RNdWx0aXBsZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3RWYXJpYW50cy5pdGVtcy5tYXAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudCA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdFZhcmlhbnRJZDogdmFyaWFudC5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3RWYXJpYW50TmFtZTogdmFyaWFudC5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGFzIFNlYXJjaEl0ZW0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgaXRlbTogU2VhcmNoSXRlbSkge1xyXG4gICAgICAgIHJldHVybiBpdGVtLnByb2R1Y3RJZDtcclxuICAgIH1cclxuXHJcbiAgICBzZXRTZWFyY2hUZXJtKHRlcm06IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoVGVybSQubmV4dCh0ZXJtKTtcclxuICAgIH1cclxuICAgIHNldEZhY2V0VmFsdWVJZHMoaWRzOiBzdHJpbmdbXSkge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoRmFjZXRWYWx1ZUlkcyQubmV4dChpZHMpO1xyXG4gICAgfVxyXG5cclxuICAgIHRvZ2dsZVNlbGVjdGlvbihpdGVtOiBTZWFyY2hJdGVtLCBldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uTWFuYWdlci50b2dnbGVTZWxlY3Rpb24oaXRlbSwgZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyU2VsZWN0aW9uKCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uTWFuYWdlci5zZWxlY3RNdWx0aXBsZShbXSk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNTZWxlY3RlZChpdGVtOiBTZWFyY2hJdGVtKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uTWFuYWdlci5pc1NlbGVjdGVkKGl0ZW0pO1xyXG4gICAgfVxyXG5cclxuICAgIGVudGl0eUluZm9DbGljayhldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcGFnZUNoYW5nZShwYWdlOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb25Db25maWcuY3VycmVudFBhZ2UgPSBwYWdlO1xyXG4gICAgICAgIHRoaXMucGFnaW5hdGlvbkNvbmZpZyQubmV4dCh0aGlzLnBhZ2luYXRpb25Db25maWcpO1xyXG4gICAgfVxyXG5cclxuICAgIGl0ZW1zUGVyUGFnZUNoYW5nZShpdGVtc1BlclBhZ2U6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMucGFnaW5hdGlvbkNvbmZpZy5pdGVtc1BlclBhZ2UgPSBpdGVtc1BlclBhZ2U7XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uQ29uZmlnJC5uZXh0KHRoaXMucGFnaW5hdGlvbkNvbmZpZyk7XHJcbiAgICB9XHJcblxyXG4gICAgc2VsZWN0KCkge1xyXG4gICAgICAgIHRoaXMucmVzb2x2ZVdpdGgodGhpcy5zZWxlY3Rpb25NYW5hZ2VyLnNlbGVjdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgY2FuY2VsKCkge1xyXG4gICAgICAgIHRoaXMucmVzb2x2ZVdpdGgoKTtcclxuICAgIH1cclxufVxyXG4iLCI8bmctdGVtcGxhdGUgdmRyRGlhbG9nVGl0bGU+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGl0bGUtcm93XCI+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJtb2RlID09PSAncHJvZHVjdCdcIj57eyAnY29tbW9uLnNlbGVjdC1wcm9kdWN0cycgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJtb2RlID09PSAndmFyaWFudCdcIj57eyAnY29tbW9uLnNlbGVjdC12YXJpYW50cycgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPHZkci1wcm9kdWN0LXNlYXJjaC1pbnB1dFxyXG4gICAgI3Byb2R1Y3RTZWFyY2hJbnB1dENvbXBvbmVudFxyXG4gICAgW2ZhY2V0VmFsdWVSZXN1bHRzXT1cImZhY2V0VmFsdWVzJCB8IGFzeW5jXCJcclxuICAgIChzZWFyY2hUZXJtQ2hhbmdlKT1cInNldFNlYXJjaFRlcm0oJGV2ZW50KVwiXHJcbiAgICAoZmFjZXRWYWx1ZUNoYW5nZSk9XCJzZXRGYWNldFZhbHVlSWRzKCRldmVudClcIlxyXG4+PC92ZHItcHJvZHVjdC1zZWFyY2gtaW5wdXQ+XHJcbjxkaXYgY2xhc3M9XCJmbGV4LXdyYXBwZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJnYWxsZXJ5XCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImNhcmRcIlxyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiAoaXRlbXMkIHwgYXN5bmMpIHx8IFtdIHwgcGFnaW5hdGU6IHBhZ2luYXRpb25Db25maWc7IHRyYWNrQnk6IHRyYWNrQnlGblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTZWxlY3Rpb24oaXRlbSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJpc1NlbGVjdGVkKGl0ZW0pXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWltZ1wiPlxyXG4gICAgICAgICAgICAgICAgPHZkci1zZWxlY3QtdG9nZ2xlXHJcbiAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cImlzU2VsZWN0ZWQoaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbaGlkZGVuV2hlbk9mZl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgID48L3Zkci1zZWxlY3QtdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlID09PSAncHJvZHVjdCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbS5wcm9kdWN0QXNzZXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaXRlbS5wcm9kdWN0VmFyaWFudEFzc2V0IHx8IGl0ZW0ucHJvZHVjdEFzc2V0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICkgfCBhc3NldFByZXZpZXc6ICd0aHVtYidcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWxcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIFt0aXRsZV09XCJtb2RlID09PSAncHJvZHVjdCcgPyBpdGVtLnByb2R1Y3ROYW1lIDogaXRlbS5wcm9kdWN0VmFyaWFudE5hbWVcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgIG1vZGUgPT09ICdwcm9kdWN0JyA/IGl0ZW0ucHJvZHVjdE5hbWUgOiBpdGVtLnByb2R1Y3RWYXJpYW50TmFtZVxyXG4gICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibW9kZSA9PT0gJ3ZhcmlhbnQnXCI+PHNtYWxsPnt7IGl0ZW0uc2t1IH19PC9zbWFsbD48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Rpb25cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibTIgZmxleCBjZW50ZXJcIj5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIHt7ICdjb21tb24uaXRlbXMtc2VsZWN0ZWQtY291bnQnIHwgdHJhbnNsYXRlOiB7IGNvdW50OiBzZWxlY3Rpb25NYW5hZ2VyLnNlbGVjdGlvbi5sZW5ndGggfSB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtc3BhY2VyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saW5rXCIgKGNsaWNrKT1cImNsZWFyU2VsZWN0aW9uKClcIj5cclxuICAgICAgICAgICAgICAgIDxjZHMtaWNvbiBzaGFwZT1cInRpbWVzXCI+PC9jZHMtaWNvbj4ge3sgJ2NvbW1vbi5jbGVhci1zZWxlY3Rpb24nIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZC1pdGVtc1wiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGlvbk1hbmFnZXIuc2VsZWN0aW9uXCIgY2xhc3M9XCJmbGV4IGl0ZW0tcm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+e3sgbW9kZSA9PT0gJ3Byb2R1Y3QnID8gaXRlbS5wcm9kdWN0TmFtZSA6IGl0ZW0ucHJvZHVjdFZhcmlhbnROYW1lIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1zcGFjZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImljb24tYnV0dG9uXCIgKGNsaWNrKT1cInRvZ2dsZVNlbGVjdGlvbihpdGVtLCAkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjZHMtaWNvbiBzaGFwZT1cInRpbWVzXCI+PC9jZHMtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJwYWdpbmctY29udHJvbHNcIj5cclxuICAgIDx2ZHItaXRlbXMtcGVyLXBhZ2UtY29udHJvbHNcclxuICAgICAgICBbaXRlbXNQZXJQYWdlXT1cInBhZ2luYXRpb25Db25maWcuaXRlbXNQZXJQYWdlXCJcclxuICAgICAgICAoaXRlbXNQZXJQYWdlQ2hhbmdlKT1cIml0ZW1zUGVyUGFnZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgID48L3Zkci1pdGVtcy1wZXItcGFnZS1jb250cm9scz5cclxuXHJcbiAgICA8dmRyLXBhZ2luYXRpb24tY29udHJvbHNcclxuICAgICAgICBbY3VycmVudFBhZ2VdPVwicGFnaW5hdGlvbkNvbmZpZy5jdXJyZW50UGFnZVwiXHJcbiAgICAgICAgW2l0ZW1zUGVyUGFnZV09XCJwYWdpbmF0aW9uQ29uZmlnLml0ZW1zUGVyUGFnZVwiXHJcbiAgICAgICAgW3RvdGFsSXRlbXNdPVwicGFnaW5hdGlvbkNvbmZpZy50b3RhbEl0ZW1zXCJcclxuICAgICAgICAocGFnZUNoYW5nZSk9XCJwYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgPjwvdmRyLXBhZ2luYXRpb24tY29udHJvbHM+XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlIHZkckRpYWxvZ0J1dHRvbnM+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0blwiIChjbGljayk9XCJjYW5jZWwoKVwiPnt7ICdjb21tb24uY2FuY2VsJyB8IHRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICAgIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICAgIChjbGljayk9XCJzZWxlY3QoKVwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJzZWxlY3Rpb25NYW5hZ2VyLnNlbGVjdGlvbi5sZW5ndGggPT09IDBcIlxyXG4gICAgPlxyXG4gICAgICAgIHt7ICdjb21tb24uc2VsZWN0LWl0ZW1zLXdpdGgtY291bnQnIHwgdHJhbnNsYXRlOiB7IGNvdW50OiBzZWxlY3Rpb25NYW5hZ2VyLnNlbGVjdGlvbi5sZW5ndGggfSB9fVxyXG4gICAgPC9idXR0b24+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==