@seniorsistemas/components-ai 1.1.0 → 1.1.1-master-e6e3fa22

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.
@@ -6,17 +6,33 @@ import { DynamicFieldWrapperComponent } from './dynamic-field-wrapper.component'
6
6
  import { DynamicFieldBaseComponent } from './dynamic-field-base.component';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "../../../services/translation.service";
9
- import * as i2 from "@angular/forms";
10
- import * as i3 from "primeng/calendar";
9
+ import * as i2 from "../../../services/locale.service";
10
+ import * as i3 from "@angular/forms";
11
+ import * as i4 from "primeng/calendar";
11
12
  export class DynamicFieldDateComponent extends DynamicFieldBaseComponent {
12
- constructor(translationService) {
13
+ localeService;
14
+ currentDateFormat = 'dd/mm/yy';
15
+ langSub;
16
+ constructor(translationService, localeService) {
13
17
  super(translationService);
18
+ this.localeService = localeService;
19
+ }
20
+ ngOnInit() {
21
+ this.updateDateFormat();
22
+ this.langSub = this.translationService.currentLanguage$.subscribe(() => {
23
+ this.updateDateFormat();
24
+ });
25
+ }
26
+ ngOnDestroy() {
27
+ this.langSub?.unsubscribe();
28
+ }
29
+ updateDateFormat() {
30
+ this.currentDateFormat = this.field?.dateFormat || this.localeService.getPrimeNGDateFormat();
14
31
  }
15
- // Override para passar isSelect=true
16
32
  getPlaceholder() {
17
33
  return super.getPlaceholder(true);
18
34
  }
19
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DynamicFieldDateComponent, deps: [{ token: i1.TranslationService }], target: i0.ɵɵFactoryTarget.Component });
35
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DynamicFieldDateComponent, deps: [{ token: i1.TranslationService }, { token: i2.LocaleService }], target: i0.ɵɵFactoryTarget.Component });
20
36
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: DynamicFieldDateComponent, isStandalone: true, selector: "sia-dynamic-field-date", usesInheritance: true, ngImport: i0, template: `
21
37
  <sia-dynamic-field-wrapper [field]="field" [form]="form" [mode]="mode">
22
38
  <div [formGroup]="form">
@@ -24,7 +40,7 @@ export class DynamicFieldDateComponent extends DynamicFieldBaseComponent {
24
40
  [inputId]="field.field"
25
41
  [formControlName]="field.field"
26
42
  [placeholder]="getPlaceholder()"
27
- [dateFormat]="field.dateFormat || 'dd/mm/yy'"
43
+ [dateFormat]="currentDateFormat"
28
44
  [showIcon]="true"
29
45
  [showButtonBar]="true"
30
46
  [class.ng-invalid]="isFieldInvalid()"
@@ -34,7 +50,7 @@ export class DynamicFieldDateComponent extends DynamicFieldBaseComponent {
34
50
  </p-calendar>
35
51
  </div>
36
52
  </sia-dynamic-field-wrapper>
37
- `, isInline: true, styles: ["::ng-deep p-calendar{width:100%;.p-calendar,input{width:100%}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: CalendarModule }, { kind: "component", type: i3.Calendar, selector: "p-calendar", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "fluid", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "component", type: DynamicFieldWrapperComponent, selector: "sia-dynamic-field-wrapper", inputs: ["field", "form", "mode"] }] });
53
+ `, isInline: true, styles: ["::ng-deep p-calendar{width:100%;.p-calendar,input{width:100%}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: CalendarModule }, { kind: "component", type: i4.Calendar, selector: "p-calendar", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "fluid", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "component", type: DynamicFieldWrapperComponent, selector: "sia-dynamic-field-wrapper", inputs: ["field", "form", "mode"] }] });
38
54
  }
39
55
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DynamicFieldDateComponent, decorators: [{
40
56
  type: Component,
@@ -50,7 +66,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
50
66
  [inputId]="field.field"
51
67
  [formControlName]="field.field"
52
68
  [placeholder]="getPlaceholder()"
53
- [dateFormat]="field.dateFormat || 'dd/mm/yy'"
69
+ [dateFormat]="currentDateFormat"
54
70
  [showIcon]="true"
55
71
  [showButtonBar]="true"
56
72
  [class.ng-invalid]="isFieldInvalid()"
@@ -61,5 +77,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
61
77
  </div>
62
78
  </sia-dynamic-field-wrapper>
63
79
  `, styles: ["::ng-deep p-calendar{width:100%;.p-calendar,input{width:100%}}\n"] }]
64
- }], ctorParameters: () => [{ type: i1.TranslationService }] });
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1maWVsZC1kYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMtYWkvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9maWVsZHMvZHluYW1pYy1maWVsZC1kYXRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFbEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDakYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7O0FBMkMzRSxNQUFNLE9BQU8seUJBQTBCLFNBQVEseUJBQXlCO0lBQ3RFLFlBQVksa0JBQXNDO1FBQ2hELEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxxQ0FBcUM7SUFDNUIsY0FBYztRQUNyQixPQUFPLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQzt3R0FSVSx5QkFBeUI7NEZBQXpCLHlCQUF5Qix5R0FoQzFCOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCVCx5SUF0QkMsWUFBWSw4QkFDWixtQkFBbUIsbWxCQUNuQixjQUFjLGt6Q0FDZCw0QkFBNEI7OzRGQWtDbkIseUJBQXlCO2tCQXpDckMsU0FBUzsrQkFDRSx3QkFBd0IsY0FDdEIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLDRCQUE0QjtxQkFDN0IsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQlQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ2FsZW5kYXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NhbGVuZGFyJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgRHluYW1pY0ZpZWxkV3JhcHBlckNvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1maWVsZC13cmFwcGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljRmllbGRCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLWZpZWxkLWJhc2UuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2lhLWR5bmFtaWMtZmllbGQtZGF0ZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBDYWxlbmRhck1vZHVsZSxcbiAgICBEeW5hbWljRmllbGRXcmFwcGVyQ29tcG9uZW50XG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPHNpYS1keW5hbWljLWZpZWxkLXdyYXBwZXIgW2ZpZWxkXT1cImZpZWxkXCIgW2Zvcm1dPVwiZm9ybVwiIFttb2RlXT1cIm1vZGVcIj5cbiAgICAgIDxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgICAgIDxwLWNhbGVuZGFyXG4gICAgICAgICAgW2lucHV0SWRdPVwiZmllbGQuZmllbGRcIlxuICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuZmllbGRcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJnZXRQbGFjZWhvbGRlcigpXCJcbiAgICAgICAgICBbZGF0ZUZvcm1hdF09XCJmaWVsZC5kYXRlRm9ybWF0IHx8ICdkZC9tbS95eSdcIlxuICAgICAgICAgIFtzaG93SWNvbl09XCJ0cnVlXCJcbiAgICAgICAgICBbc2hvd0J1dHRvbkJhcl09XCJ0cnVlXCJcbiAgICAgICAgICBbY2xhc3MubmctaW52YWxpZF09XCJpc0ZpZWxkSW52YWxpZCgpXCJcbiAgICAgICAgICBbY2xhc3MubmctZGlydHldPVwiaXNGaWVsZERpcnR5KClcIlxuICAgICAgICAgIFthcHBlbmRUb109XCInYm9keSdcIlxuICAgICAgICAgIHN0eWxlQ2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgPC9wLWNhbGVuZGFyPlxuICAgICAgPC9kaXY+XG4gICAgPC9zaWEtZHluYW1pYy1maWVsZC13cmFwcGVyPlxuICBgLFxuICBzdHlsZXM6IFtgXG4gICAgOjpuZy1kZWVwIHAtY2FsZW5kYXIge1xuICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgIC5wLWNhbGVuZGFyIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIGlucHV0IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG4gICAgfVxuICBgXVxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljRmllbGREYXRlQ29tcG9uZW50IGV4dGVuZHMgRHluYW1pY0ZpZWxkQmFzZUNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHRyYW5zbGF0aW9uU2VydmljZTogVHJhbnNsYXRpb25TZXJ2aWNlKSB7XG4gICAgc3VwZXIodHJhbnNsYXRpb25TZXJ2aWNlKTtcbiAgfVxuXG4gIC8vIE92ZXJyaWRlIHBhcmEgcGFzc2FyIGlzU2VsZWN0PXRydWVcbiAgb3ZlcnJpZGUgZ2V0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc3VwZXIuZ2V0UGxhY2Vob2xkZXIodHJ1ZSk7XG4gIH1cbn1cbiJdfQ==
80
+ }], ctorParameters: () => [{ type: i1.TranslationService }, { type: i2.LocaleService }] });
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1maWVsZC1kYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMtYWkvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9maWVsZHMvZHluYW1pYy1maWVsZC1kYXRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSWxELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7QUFxQzNFLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSx5QkFBeUI7SUFNNUQ7SUFMVixpQkFBaUIsR0FBRyxVQUFVLENBQUM7SUFDdkIsT0FBTyxDQUFnQjtJQUUvQixZQUNFLGtCQUFzQyxFQUM5QixhQUE0QjtRQUVwQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUZsQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUd0QyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDckUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQy9GLENBQUM7SUFFUSxjQUFjO1FBQ3JCLE9BQU8sS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO3dHQTVCVSx5QkFBeUI7NEZBQXpCLHlCQUF5Qix5R0ExQjFCOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCVCx5SUF0QkMsWUFBWSw4QkFDWixtQkFBbUIsbWxCQUNuQixjQUFjLGt6Q0FDZCw0QkFBNEI7OzRGQTRCbkIseUJBQXlCO2tCQW5DckMsU0FBUzsrQkFDRSx3QkFBd0IsY0FDdEIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLDRCQUE0QjtxQkFDN0IsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQlQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENhbGVuZGFyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jYWxlbmRhcic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9jYWxlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xvY2FsZS5zZXJ2aWNlJztcbmltcG9ydCB7IER5bmFtaWNGaWVsZFdyYXBwZXJDb21wb25lbnQgfSBmcm9tICcuL2R5bmFtaWMtZmllbGQtd3JhcHBlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHluYW1pY0ZpZWxkQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1maWVsZC1iYXNlLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NpYS1keW5hbWljLWZpZWxkLWRhdGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgQ2FsZW5kYXJNb2R1bGUsXG4gICAgRHluYW1pY0ZpZWxkV3JhcHBlckNvbXBvbmVudFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxzaWEtZHluYW1pYy1maWVsZC13cmFwcGVyIFtmaWVsZF09XCJmaWVsZFwiIFtmb3JtXT1cImZvcm1cIiBbbW9kZV09XCJtb2RlXCI+XG4gICAgICA8ZGl2IFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICAgICAgICA8cC1jYWxlbmRhclxuICAgICAgICAgIFtpbnB1dElkXT1cImZpZWxkLmZpZWxkXCJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmZpZWxkXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZ2V0UGxhY2Vob2xkZXIoKVwiXG4gICAgICAgICAgW2RhdGVGb3JtYXRdPVwiY3VycmVudERhdGVGb3JtYXRcIlxuICAgICAgICAgIFtzaG93SWNvbl09XCJ0cnVlXCJcbiAgICAgICAgICBbc2hvd0J1dHRvbkJhcl09XCJ0cnVlXCJcbiAgICAgICAgICBbY2xhc3MubmctaW52YWxpZF09XCJpc0ZpZWxkSW52YWxpZCgpXCJcbiAgICAgICAgICBbY2xhc3MubmctZGlydHldPVwiaXNGaWVsZERpcnR5KClcIlxuICAgICAgICAgIFthcHBlbmRUb109XCInYm9keSdcIlxuICAgICAgICAgIHN0eWxlQ2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgPC9wLWNhbGVuZGFyPlxuICAgICAgPC9kaXY+XG4gICAgPC9zaWEtZHluYW1pYy1maWVsZC13cmFwcGVyPlxuICBgLFxuICBzdHlsZXM6IFtgXG4gICAgOjpuZy1kZWVwIHAtY2FsZW5kYXIge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAucC1jYWxlbmRhciB7IHdpZHRoOiAxMDAlOyB9XG4gICAgICBpbnB1dCB7IHdpZHRoOiAxMDAlOyB9XG4gICAgfVxuICBgXVxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljRmllbGREYXRlQ29tcG9uZW50IGV4dGVuZHMgRHluYW1pY0ZpZWxkQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgY3VycmVudERhdGVGb3JtYXQgPSAnZGQvbW0veXknO1xuICBwcml2YXRlIGxhbmdTdWI/OiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgdHJhbnNsYXRpb25TZXJ2aWNlOiBUcmFuc2xhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsb2NhbGVTZXJ2aWNlOiBMb2NhbGVTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKHRyYW5zbGF0aW9uU2VydmljZSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZURhdGVGb3JtYXQoKTtcbiAgICB0aGlzLmxhbmdTdWIgPSB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS5jdXJyZW50TGFuZ3VhZ2UkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZURhdGVGb3JtYXQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubGFuZ1N1Yj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRGF0ZUZvcm1hdCgpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnREYXRlRm9ybWF0ID0gdGhpcy5maWVsZD8uZGF0ZUZvcm1hdCB8fCB0aGlzLmxvY2FsZVNlcnZpY2UuZ2V0UHJpbWVOR0RhdGVGb3JtYXQoKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldFBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHN1cGVyLmdldFBsYWNlaG9sZGVyKHRydWUpO1xuICB9XG59XG4iXX0=
@@ -1,8 +1,9 @@
1
- import { makeEnvironmentProviders } from '@angular/core';
1
+ import { makeEnvironmentProviders, APP_INITIALIZER, Injector } from '@angular/core';
2
2
  import { providePrimeNG } from 'primeng/config';
3
3
  import Aura from '@primeuix/themes/aura';
4
4
  import { definePreset } from '@primeuix/themes';
5
5
  import { ConfirmationService, MessageService } from 'primeng/api';
6
+ import { LocaleService } from '../services/locale.service';
6
7
  /**
7
8
  * Preset customizado do tema Aura para Senior Sistemas
8
9
  * Baseado nas cores e design system da empresa
@@ -135,6 +136,13 @@ export function provideSeniorPrimeNG(config) {
135
136
  if (includeServices) {
136
137
  providers.push(ConfirmationService, MessageService);
137
138
  }
139
+ // Inicializar LocaleService para configurar locale do PrimeNG automaticamente
140
+ providers.push({
141
+ provide: APP_INITIALIZER,
142
+ useFactory: (injector) => () => { injector.get(LocaleService); },
143
+ deps: [Injector],
144
+ multi: true
145
+ });
138
146
  return makeEnvironmentProviders(providers);
139
147
  }
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzLWFpL3NyYy9saWIvY29uZmlnL3ByaW1lbmcuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBd0Isd0JBQXdCLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sSUFBSSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWxFOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFFO0lBQzdDLFFBQVEsRUFBRTtRQUNSLE9BQU8sRUFBRTtZQUNQLEVBQUUsRUFBRSxTQUFTO1lBQ2IsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7U0FDZjtRQUNELFNBQVMsRUFBRTtZQUNULEVBQUUsRUFBRSxTQUFTO1lBQ2IsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7U0FDZjtRQUNELE1BQU0sRUFBRTtZQUNOLEVBQUUsRUFBRSxTQUFTO1lBQ2IsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7U0FDZjtRQUNELE9BQU8sRUFBRTtZQUNQLEVBQUUsRUFBRSxTQUFTO1lBQ2IsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7U0FDZjtRQUNELE9BQU8sRUFBRTtZQUNQLEVBQUUsRUFBRSxTQUFTO1lBQ2IsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7U0FDZjtRQUNELElBQUksRUFBRTtZQUNKLEVBQUUsRUFBRSxTQUFTO1lBQ2IsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7U0FDZjtLQUNGO0NBQ0YsQ0FBQyxDQUFDO0FBMkNIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsTUFBNEI7SUFDL0QsTUFBTSxFQUNKLE1BQU0sR0FBRyxZQUFZLEVBQ3JCLGdCQUFnQixHQUFHLFNBQVMsRUFDNUIsUUFBUSxHQUFHLEtBQUssRUFDaEIsTUFBTSxHQUFHLEdBQUcsRUFDWixNQUFNLEdBQUcsSUFBSSxFQUNiLGVBQWUsR0FBRyxJQUFJLEVBQ3ZCLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUVqQixNQUFNLFNBQVMsR0FBd0M7UUFDckQsY0FBYyxDQUFDO1lBQ2IsS0FBSyxFQUFFO2dCQUNMLE1BQU07Z0JBQ04sT0FBTyxFQUFFO29CQUNQLGdCQUFnQjtvQkFDaEIsUUFBUTtvQkFDUixNQUFNO2lCQUNQO2FBQ0Y7WUFDRCxNQUFNO1NBQ1AsQ0FBQztLQUNILENBQUM7SUFFRixJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ3BCLFNBQVMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELE9BQU8sd0JBQXdCLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudmlyb25tZW50UHJvdmlkZXJzLCBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMsIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBwcm92aWRlUHJpbWVORyB9IGZyb20gJ3ByaW1lbmcvY29uZmlnJztcbmltcG9ydCBBdXJhIGZyb20gJ0BwcmltZXVpeC90aGVtZXMvYXVyYSc7XG5pbXBvcnQgeyBkZWZpbmVQcmVzZXQgfSBmcm9tICdAcHJpbWV1aXgvdGhlbWVzJztcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuXG4vKipcbiAqIFByZXNldCBjdXN0b21pemFkbyBkbyB0ZW1hIEF1cmEgcGFyYSBTZW5pb3IgU2lzdGVtYXNcbiAqIEJhc2VhZG8gbmFzIGNvcmVzIGUgZGVzaWduIHN5c3RlbSBkYSBlbXByZXNhXG4gKi9cbmV4cG9ydCBjb25zdCBTZW5pb3JQcmVzZXQgPSBkZWZpbmVQcmVzZXQoQXVyYSwge1xuICBzZW1hbnRpYzoge1xuICAgIHByaW1hcnk6IHtcbiAgICAgIDUwOiAnI2U4ZjJmOScsXG4gICAgICAxMDA6ICcjYzdlMWYxJyxcbiAgICAgIDIwMDogJyNhM2NmZTgnLFxuICAgICAgMzAwOiAnIzdmYmRkZicsXG4gICAgICA0MDA6ICcjNjFhNGQ1JyxcbiAgICAgIDUwMDogJyM0MjhCQ0EnLFxuICAgICAgNjAwOiAnIzNjN2ZiOCcsXG4gICAgICA3MDA6ICcjMzM2ZmEzJyxcbiAgICAgIDgwMDogJyMyYjVmOGUnLFxuICAgICAgOTAwOiAnIzFmNDQ2OScsXG4gICAgICA5NTA6ICcjMTYzMDRhJ1xuICAgIH0sXG4gICAgc2Vjb25kYXJ5OiB7XG4gICAgICA1MDogJyNmMGYzZjUnLFxuICAgICAgMTAwOiAnI2RjZTNlNycsXG4gICAgICAyMDA6ICcjYmFjOGQwJyxcbiAgICAgIDMwMDogJyM5N2FkYjknLFxuICAgICAgNDAwOiAnIzc4OTJBMScsXG4gICAgICA1MDA6ICcjNzg5MkExJyxcbiAgICAgIDYwMDogJyM2YTgyOTEnLFxuICAgICAgNzAwOiAnIzVhNmU3YScsXG4gICAgICA4MDA6ICcjNGE1YTYzJyxcbiAgICAgIDkwMDogJyMzYTQ2NGQnLFxuICAgICAgOTUwOiAnIzJhMzMzNydcbiAgICB9LFxuICAgIGRhbmdlcjoge1xuICAgICAgNTA6ICcjZmVmMmYwJyxcbiAgICAgIDEwMDogJyNmZGU0ZTAnLFxuICAgICAgMjAwOiAnI2ZiY2RjNicsXG4gICAgICAzMDA6ICcjZjdhYjlmJyxcbiAgICAgIDQwMDogJyNmMTdkNjgnLFxuICAgICAgNTAwOiAnI0MxMzAxOCcsXG4gICAgICA2MDA6ICcjYWQyYjE2JyxcbiAgICAgIDcwMDogJyM5MTI0MTMnLFxuICAgICAgODAwOiAnIzc4MWYxMCcsXG4gICAgICA5MDA6ICcjNjMxYjBlJyxcbiAgICAgIDk1MDogJyM0YTE0MGEnXG4gICAgfSxcbiAgICB3YXJuaW5nOiB7XG4gICAgICA1MDogJyNmZWY4ZWQnLFxuICAgICAgMTAwOiAnI2ZkZWZkMScsXG4gICAgICAyMDA6ICcjZmJkZGEzJyxcbiAgICAgIDMwMDogJyNmOWM2NmEnLFxuICAgICAgNDAwOiAnI0Y4OTMxRicsXG4gICAgICA1MDA6ICcjRjg5MzFGJyxcbiAgICAgIDYwMDogJyNkZjg0MWMnLFxuICAgICAgNzAwOiAnI2JhNmYxNycsXG4gICAgICA4MDA6ICcjOTg1YjEzJyxcbiAgICAgIDkwMDogJyM3ZDRiMTAnLFxuICAgICAgOTUwOiAnIzVlMzgwYydcbiAgICB9LFxuICAgIHN1Y2Nlc3M6IHtcbiAgICAgIDUwOiAnI2U4ZjdmMCcsXG4gICAgICAxMDA6ICcjYzdlZGQ5JyxcbiAgICAgIDIwMDogJyM5MmRiYjgnLFxuICAgICAgMzAwOiAnIzVjYzU5MycsXG4gICAgICA0MDA6ICcjMmZhZTZmJyxcbiAgICAgIDUwMDogJyMwQzkzNDgnLFxuICAgICAgNjAwOiAnIzBiODQ0MScsXG4gICAgICA3MDA6ICcjMDk2ZTM2JyxcbiAgICAgIDgwMDogJyMwNzU5MmMnLFxuICAgICAgOTAwOiAnIzA2NDkyNCcsXG4gICAgICA5NTA6ICcjMDQzNjFiJ1xuICAgIH0sXG4gICAgaW5mbzoge1xuICAgICAgNTA6ICcjZThmMmY5JyxcbiAgICAgIDEwMDogJyNjN2UxZjEnLFxuICAgICAgMjAwOiAnI2EzY2ZlOCcsXG4gICAgICAzMDA6ICcjN2ZiZGRmJyxcbiAgICAgIDQwMDogJyM2MWE0ZDUnLFxuICAgICAgNTAwOiAnIzQyOEJDQScsXG4gICAgICA2MDA6ICcjM2M3ZmI4JyxcbiAgICAgIDcwMDogJyMzMzZmYTMnLFxuICAgICAgODAwOiAnIzJiNWY4ZScsXG4gICAgICA5MDA6ICcjMWY0NDY5JyxcbiAgICAgIDk1MDogJyMxNjMwNGEnXG4gICAgfVxuICB9XG59KTtcblxuLyoqXG4gKiBPcMOnw7VlcyBkZSBjb25maWd1cmHDp8OjbyBwYXJhIG8gUHJpbWVOR1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlbmlvclByaW1lTkdDb25maWcge1xuICAvKipcbiAgICogUHJlc2V0IGRvIHRlbWEgYSBzZXIgdXNhZG9cbiAgICogQGRlZmF1bHQgU2VuaW9yUHJlc2V0XG4gICAqL1xuICBwcmVzZXQ/OiBhbnk7XG4gIFxuICAvKipcbiAgICogU2VsZXRvciBDU1MgcGFyYSBtb2RvIGVzY3Vyb1xuICAgKiBAZGVmYXVsdCAnLnAtZGFyaydcbiAgICovXG4gIGRhcmtNb2RlU2VsZWN0b3I/OiBzdHJpbmc7XG4gIFxuICAvKipcbiAgICogU2UgZGV2ZSB1c2FyIENTUyBMYXllclxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgY3NzTGF5ZXI/OiBib29sZWFuO1xuICBcbiAgLyoqXG4gICAqIFByZWZpeG8gcGFyYSBjbGFzc2VzIENTU1xuICAgKiBAZGVmYXVsdCAncCdcbiAgICovXG4gIHByZWZpeD86IHN0cmluZztcbiAgXG4gIC8qKlxuICAgKiBTZSBkZXZlIGhhYmlsaXRhciBlZmVpdG8gcmlwcGxlXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJpcHBsZT86IGJvb2xlYW47XG4gIFxuICAvKipcbiAgICogU2UgZGV2ZSBpbmNsdWlyIG9zIHNlcnZpw6dvcyBDb25maXJtYXRpb25TZXJ2aWNlIGUgTWVzc2FnZVNlcnZpY2VcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgaW5jbHVkZVNlcnZpY2VzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQcm92w6ogYSBjb25maWd1cmHDp8OjbyBwYWRyw6NvIGRvIFByaW1lTkcgcGFyYSBhcGxpY2HDp8O1ZXMgU2VuaW9yIFNpc3RlbWFzXG4gKiBcbiAqIEBwYXJhbSBjb25maWcgQ29uZmlndXJhw6fDo28gb3BjaW9uYWwgcGFyYSBjdXN0b21pemFyIG8gY29tcG9ydGFtZW50b1xuICogQHJldHVybnMgRW52aXJvbm1lbnRQcm92aWRlcnMgcGFyYSB1c28gbm8gYXBwLmNvbmZpZy50c1xuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gYXBwLmNvbmZpZy50c1xuICogaW1wb3J0IHsgcHJvdmlkZVNlbmlvclByaW1lTkcgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvY29tcG9uZW50cy1haSc7XG4gKiBcbiAqIGV4cG9ydCBjb25zdCBhcHBDb25maWc6IEFwcGxpY2F0aW9uQ29uZmlnID0ge1xuICogICBwcm92aWRlcnM6IFtcbiAqICAgICAvLyAuLi4gb3V0cm9zIHByb3ZpZGVyc1xuICogICAgIHByb3ZpZGVTZW5pb3JQcmltZU5HKClcbiAqICAgXVxuICogfTtcbiAqIGBgYFxuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gQ29tIGN1c3RvbWl6YcOnw6NvXG4gKiBwcm92aWRlU2VuaW9yUHJpbWVORyh7XG4gKiAgIGRhcmtNb2RlU2VsZWN0b3I6ICcuYXBwLWRhcmsnLFxuICogICByaXBwbGU6IGZhbHNlXG4gKiB9KVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlU2VuaW9yUHJpbWVORyhjb25maWc/OiBTZW5pb3JQcmltZU5HQ29uZmlnKTogRW52aXJvbm1lbnRQcm92aWRlcnMge1xuICBjb25zdCB7XG4gICAgcHJlc2V0ID0gU2VuaW9yUHJlc2V0LFxuICAgIGRhcmtNb2RlU2VsZWN0b3IgPSAnLnAtZGFyaycsXG4gICAgY3NzTGF5ZXIgPSBmYWxzZSxcbiAgICBwcmVmaXggPSAncCcsXG4gICAgcmlwcGxlID0gdHJ1ZSxcbiAgICBpbmNsdWRlU2VydmljZXMgPSB0cnVlXG4gIH0gPSBjb25maWcgfHwge307XG5cbiAgY29uc3QgcHJvdmlkZXJzOiAoUHJvdmlkZXIgfCBFbnZpcm9ubWVudFByb3ZpZGVycylbXSA9IFtcbiAgICBwcm92aWRlUHJpbWVORyh7XG4gICAgICB0aGVtZToge1xuICAgICAgICBwcmVzZXQsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBkYXJrTW9kZVNlbGVjdG9yLFxuICAgICAgICAgIGNzc0xheWVyLFxuICAgICAgICAgIHByZWZpeFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcmlwcGxlXG4gICAgfSlcbiAgXTtcblxuICBpZiAoaW5jbHVkZVNlcnZpY2VzKSB7XG4gICAgcHJvdmlkZXJzLnB1c2goQ29uZmlybWF0aW9uU2VydmljZSwgTWVzc2FnZVNlcnZpY2UpO1xuICB9XG5cbiAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhwcm92aWRlcnMpO1xufVxuIl19
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzLWFpL3NyYy9saWIvY29uZmlnL3ByaW1lbmcuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBd0Isd0JBQXdCLEVBQVksZUFBZSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxJQUFJLE1BQU0sdUJBQXVCLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTNEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFFO0lBQzdDLFFBQVEsRUFBRTtRQUNSLE9BQU8sRUFBRTtZQUNQLEVBQUUsRUFBRSxTQUFTO1lBQ2IsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7U0FDZjtRQUNELFNBQVMsRUFBRTtZQUNULEVBQUUsRUFBRSxTQUFTO1lBQ2IsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7U0FDZjtRQUNELE1BQU0sRUFBRTtZQUNOLEVBQUUsRUFBRSxTQUFTO1lBQ2IsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7U0FDZjtRQUNELE9BQU8sRUFBRTtZQUNQLEVBQUUsRUFBRSxTQUFTO1lBQ2IsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7U0FDZjtRQUNELE9BQU8sRUFBRTtZQUNQLEVBQUUsRUFBRSxTQUFTO1lBQ2IsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7U0FDZjtRQUNELElBQUksRUFBRTtZQUNKLEVBQUUsRUFBRSxTQUFTO1lBQ2IsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7U0FDZjtLQUNGO0NBQ0YsQ0FBQyxDQUFDO0FBMkNIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsTUFBNEI7SUFDL0QsTUFBTSxFQUNKLE1BQU0sR0FBRyxZQUFZLEVBQ3JCLGdCQUFnQixHQUFHLFNBQVMsRUFDNUIsUUFBUSxHQUFHLEtBQUssRUFDaEIsTUFBTSxHQUFHLEdBQUcsRUFDWixNQUFNLEdBQUcsSUFBSSxFQUNiLGVBQWUsR0FBRyxJQUFJLEVBQ3ZCLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUVqQixNQUFNLFNBQVMsR0FBd0M7UUFDckQsY0FBYyxDQUFDO1lBQ2IsS0FBSyxFQUFFO2dCQUNMLE1BQU07Z0JBQ04sT0FBTyxFQUFFO29CQUNQLGdCQUFnQjtvQkFDaEIsUUFBUTtvQkFDUixNQUFNO2lCQUNQO2FBQ0Y7WUFDRCxNQUFNO1NBQ1AsQ0FBQztLQUNILENBQUM7SUFFRixJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ3BCLFNBQVMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELDhFQUE4RTtJQUM5RSxTQUFTLENBQUMsSUFBSSxDQUFDO1FBQ2IsT0FBTyxFQUFFLGVBQWU7UUFDeEIsVUFBVSxFQUFFLENBQUMsUUFBa0IsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUUsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDO1FBQ2hCLEtBQUssRUFBRSxJQUFJO0tBQ1osQ0FBQyxDQUFDO0lBRUgsT0FBTyx3QkFBd0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW52aXJvbm1lbnRQcm92aWRlcnMsIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycywgUHJvdmlkZXIsIEFQUF9JTklUSUFMSVpFUiwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHByb3ZpZGVQcmltZU5HIH0gZnJvbSAncHJpbWVuZy9jb25maWcnO1xuaW1wb3J0IEF1cmEgZnJvbSAnQHByaW1ldWl4L3RoZW1lcy9hdXJhJztcbmltcG9ydCB7IGRlZmluZVByZXNldCB9IGZyb20gJ0BwcmltZXVpeC90aGVtZXMnO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbG9jYWxlLnNlcnZpY2UnO1xuXG4vKipcbiAqIFByZXNldCBjdXN0b21pemFkbyBkbyB0ZW1hIEF1cmEgcGFyYSBTZW5pb3IgU2lzdGVtYXNcbiAqIEJhc2VhZG8gbmFzIGNvcmVzIGUgZGVzaWduIHN5c3RlbSBkYSBlbXByZXNhXG4gKi9cbmV4cG9ydCBjb25zdCBTZW5pb3JQcmVzZXQgPSBkZWZpbmVQcmVzZXQoQXVyYSwge1xuICBzZW1hbnRpYzoge1xuICAgIHByaW1hcnk6IHtcbiAgICAgIDUwOiAnI2U4ZjJmOScsXG4gICAgICAxMDA6ICcjYzdlMWYxJyxcbiAgICAgIDIwMDogJyNhM2NmZTgnLFxuICAgICAgMzAwOiAnIzdmYmRkZicsXG4gICAgICA0MDA6ICcjNjFhNGQ1JyxcbiAgICAgIDUwMDogJyM0MjhCQ0EnLFxuICAgICAgNjAwOiAnIzNjN2ZiOCcsXG4gICAgICA3MDA6ICcjMzM2ZmEzJyxcbiAgICAgIDgwMDogJyMyYjVmOGUnLFxuICAgICAgOTAwOiAnIzFmNDQ2OScsXG4gICAgICA5NTA6ICcjMTYzMDRhJ1xuICAgIH0sXG4gICAgc2Vjb25kYXJ5OiB7XG4gICAgICA1MDogJyNmMGYzZjUnLFxuICAgICAgMTAwOiAnI2RjZTNlNycsXG4gICAgICAyMDA6ICcjYmFjOGQwJyxcbiAgICAgIDMwMDogJyM5N2FkYjknLFxuICAgICAgNDAwOiAnIzc4OTJBMScsXG4gICAgICA1MDA6ICcjNzg5MkExJyxcbiAgICAgIDYwMDogJyM2YTgyOTEnLFxuICAgICAgNzAwOiAnIzVhNmU3YScsXG4gICAgICA4MDA6ICcjNGE1YTYzJyxcbiAgICAgIDkwMDogJyMzYTQ2NGQnLFxuICAgICAgOTUwOiAnIzJhMzMzNydcbiAgICB9LFxuICAgIGRhbmdlcjoge1xuICAgICAgNTA6ICcjZmVmMmYwJyxcbiAgICAgIDEwMDogJyNmZGU0ZTAnLFxuICAgICAgMjAwOiAnI2ZiY2RjNicsXG4gICAgICAzMDA6ICcjZjdhYjlmJyxcbiAgICAgIDQwMDogJyNmMTdkNjgnLFxuICAgICAgNTAwOiAnI0MxMzAxOCcsXG4gICAgICA2MDA6ICcjYWQyYjE2JyxcbiAgICAgIDcwMDogJyM5MTI0MTMnLFxuICAgICAgODAwOiAnIzc4MWYxMCcsXG4gICAgICA5MDA6ICcjNjMxYjBlJyxcbiAgICAgIDk1MDogJyM0YTE0MGEnXG4gICAgfSxcbiAgICB3YXJuaW5nOiB7XG4gICAgICA1MDogJyNmZWY4ZWQnLFxuICAgICAgMTAwOiAnI2ZkZWZkMScsXG4gICAgICAyMDA6ICcjZmJkZGEzJyxcbiAgICAgIDMwMDogJyNmOWM2NmEnLFxuICAgICAgNDAwOiAnI0Y4OTMxRicsXG4gICAgICA1MDA6ICcjRjg5MzFGJyxcbiAgICAgIDYwMDogJyNkZjg0MWMnLFxuICAgICAgNzAwOiAnI2JhNmYxNycsXG4gICAgICA4MDA6ICcjOTg1YjEzJyxcbiAgICAgIDkwMDogJyM3ZDRiMTAnLFxuICAgICAgOTUwOiAnIzVlMzgwYydcbiAgICB9LFxuICAgIHN1Y2Nlc3M6IHtcbiAgICAgIDUwOiAnI2U4ZjdmMCcsXG4gICAgICAxMDA6ICcjYzdlZGQ5JyxcbiAgICAgIDIwMDogJyM5MmRiYjgnLFxuICAgICAgMzAwOiAnIzVjYzU5MycsXG4gICAgICA0MDA6ICcjMmZhZTZmJyxcbiAgICAgIDUwMDogJyMwQzkzNDgnLFxuICAgICAgNjAwOiAnIzBiODQ0MScsXG4gICAgICA3MDA6ICcjMDk2ZTM2JyxcbiAgICAgIDgwMDogJyMwNzU5MmMnLFxuICAgICAgOTAwOiAnIzA2NDkyNCcsXG4gICAgICA5NTA6ICcjMDQzNjFiJ1xuICAgIH0sXG4gICAgaW5mbzoge1xuICAgICAgNTA6ICcjZThmMmY5JyxcbiAgICAgIDEwMDogJyNjN2UxZjEnLFxuICAgICAgMjAwOiAnI2EzY2ZlOCcsXG4gICAgICAzMDA6ICcjN2ZiZGRmJyxcbiAgICAgIDQwMDogJyM2MWE0ZDUnLFxuICAgICAgNTAwOiAnIzQyOEJDQScsXG4gICAgICA2MDA6ICcjM2M3ZmI4JyxcbiAgICAgIDcwMDogJyMzMzZmYTMnLFxuICAgICAgODAwOiAnIzJiNWY4ZScsXG4gICAgICA5MDA6ICcjMWY0NDY5JyxcbiAgICAgIDk1MDogJyMxNjMwNGEnXG4gICAgfVxuICB9XG59KTtcblxuLyoqXG4gKiBPcMOnw7VlcyBkZSBjb25maWd1cmHDp8OjbyBwYXJhIG8gUHJpbWVOR1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlbmlvclByaW1lTkdDb25maWcge1xuICAvKipcbiAgICogUHJlc2V0IGRvIHRlbWEgYSBzZXIgdXNhZG9cbiAgICogQGRlZmF1bHQgU2VuaW9yUHJlc2V0XG4gICAqL1xuICBwcmVzZXQ/OiBhbnk7XG4gIFxuICAvKipcbiAgICogU2VsZXRvciBDU1MgcGFyYSBtb2RvIGVzY3Vyb1xuICAgKiBAZGVmYXVsdCAnLnAtZGFyaydcbiAgICovXG4gIGRhcmtNb2RlU2VsZWN0b3I/OiBzdHJpbmc7XG4gIFxuICAvKipcbiAgICogU2UgZGV2ZSB1c2FyIENTUyBMYXllclxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgY3NzTGF5ZXI/OiBib29sZWFuO1xuICBcbiAgLyoqXG4gICAqIFByZWZpeG8gcGFyYSBjbGFzc2VzIENTU1xuICAgKiBAZGVmYXVsdCAncCdcbiAgICovXG4gIHByZWZpeD86IHN0cmluZztcbiAgXG4gIC8qKlxuICAgKiBTZSBkZXZlIGhhYmlsaXRhciBlZmVpdG8gcmlwcGxlXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJpcHBsZT86IGJvb2xlYW47XG4gIFxuICAvKipcbiAgICogU2UgZGV2ZSBpbmNsdWlyIG9zIHNlcnZpw6dvcyBDb25maXJtYXRpb25TZXJ2aWNlIGUgTWVzc2FnZVNlcnZpY2VcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgaW5jbHVkZVNlcnZpY2VzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQcm92w6ogYSBjb25maWd1cmHDp8OjbyBwYWRyw6NvIGRvIFByaW1lTkcgcGFyYSBhcGxpY2HDp8O1ZXMgU2VuaW9yIFNpc3RlbWFzXG4gKiBcbiAqIEBwYXJhbSBjb25maWcgQ29uZmlndXJhw6fDo28gb3BjaW9uYWwgcGFyYSBjdXN0b21pemFyIG8gY29tcG9ydGFtZW50b1xuICogQHJldHVybnMgRW52aXJvbm1lbnRQcm92aWRlcnMgcGFyYSB1c28gbm8gYXBwLmNvbmZpZy50c1xuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gYXBwLmNvbmZpZy50c1xuICogaW1wb3J0IHsgcHJvdmlkZVNlbmlvclByaW1lTkcgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvY29tcG9uZW50cy1haSc7XG4gKiBcbiAqIGV4cG9ydCBjb25zdCBhcHBDb25maWc6IEFwcGxpY2F0aW9uQ29uZmlnID0ge1xuICogICBwcm92aWRlcnM6IFtcbiAqICAgICAvLyAuLi4gb3V0cm9zIHByb3ZpZGVyc1xuICogICAgIHByb3ZpZGVTZW5pb3JQcmltZU5HKClcbiAqICAgXVxuICogfTtcbiAqIGBgYFxuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gQ29tIGN1c3RvbWl6YcOnw6NvXG4gKiBwcm92aWRlU2VuaW9yUHJpbWVORyh7XG4gKiAgIGRhcmtNb2RlU2VsZWN0b3I6ICcuYXBwLWRhcmsnLFxuICogICByaXBwbGU6IGZhbHNlXG4gKiB9KVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlU2VuaW9yUHJpbWVORyhjb25maWc/OiBTZW5pb3JQcmltZU5HQ29uZmlnKTogRW52aXJvbm1lbnRQcm92aWRlcnMge1xuICBjb25zdCB7XG4gICAgcHJlc2V0ID0gU2VuaW9yUHJlc2V0LFxuICAgIGRhcmtNb2RlU2VsZWN0b3IgPSAnLnAtZGFyaycsXG4gICAgY3NzTGF5ZXIgPSBmYWxzZSxcbiAgICBwcmVmaXggPSAncCcsXG4gICAgcmlwcGxlID0gdHJ1ZSxcbiAgICBpbmNsdWRlU2VydmljZXMgPSB0cnVlXG4gIH0gPSBjb25maWcgfHwge307XG5cbiAgY29uc3QgcHJvdmlkZXJzOiAoUHJvdmlkZXIgfCBFbnZpcm9ubWVudFByb3ZpZGVycylbXSA9IFtcbiAgICBwcm92aWRlUHJpbWVORyh7XG4gICAgICB0aGVtZToge1xuICAgICAgICBwcmVzZXQsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBkYXJrTW9kZVNlbGVjdG9yLFxuICAgICAgICAgIGNzc0xheWVyLFxuICAgICAgICAgIHByZWZpeFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcmlwcGxlXG4gICAgfSlcbiAgXTtcblxuICBpZiAoaW5jbHVkZVNlcnZpY2VzKSB7XG4gICAgcHJvdmlkZXJzLnB1c2goQ29uZmlybWF0aW9uU2VydmljZSwgTWVzc2FnZVNlcnZpY2UpO1xuICB9XG5cbiAgLy8gSW5pY2lhbGl6YXIgTG9jYWxlU2VydmljZSBwYXJhIGNvbmZpZ3VyYXIgbG9jYWxlIGRvIFByaW1lTkcgYXV0b21hdGljYW1lbnRlXG4gIHByb3ZpZGVycy5wdXNoKHtcbiAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXG4gICAgdXNlRmFjdG9yeTogKGluamVjdG9yOiBJbmplY3RvcikgPT4gKCkgPT4geyBpbmplY3Rvci5nZXQoTG9jYWxlU2VydmljZSk7IH0sXG4gICAgZGVwczogW0luamVjdG9yXSxcbiAgICBtdWx0aTogdHJ1ZVxuICB9KTtcblxuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKHByb3ZpZGVycyk7XG59XG4iXX0=
@@ -0,0 +1,81 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../services/locale.service";
4
+ import * as i2 from "../services/translation.service";
5
+ /**
6
+ * Pipe para formatar datas respeitando o idioma configurado
7
+ *
8
+ * Uso: {{ '2026-03-04' | dateFormat }} -> 04/03/2026 (pt-BR)
9
+ * Uso: {{ dateObj | dateFormat }} -> 04/03/2026 (pt-BR)
10
+ * Uso: {{ '2026-03-04' | dateFormat:'short' }} -> 04/03/26 (pt-BR)
11
+ * Uso: {{ '2026-03-04' | dateFormat:'long' }} -> 4 de março de 2026 (pt-BR)
12
+ */
13
+ export class DateFormatPipe {
14
+ localeService;
15
+ translationService;
16
+ cdr;
17
+ subscription;
18
+ lastValue;
19
+ lastFormat;
20
+ lastResult = '';
21
+ constructor(localeService, translationService, cdr) {
22
+ this.localeService = localeService;
23
+ this.translationService = translationService;
24
+ this.cdr = cdr;
25
+ }
26
+ transform(value, format) {
27
+ if (!value)
28
+ return '';
29
+ if (this.shouldUpdate(value, format)) {
30
+ this.updateResult(value, format);
31
+ }
32
+ return this.lastResult;
33
+ }
34
+ ngOnDestroy() {
35
+ this.subscription?.unsubscribe();
36
+ }
37
+ shouldUpdate(value, format) {
38
+ const valueStr = value instanceof Date ? value.toISOString() : value;
39
+ const lastStr = this.lastValue instanceof Date ? this.lastValue.toISOString() : this.lastValue;
40
+ return valueStr !== lastStr || format !== this.lastFormat || !this.subscription;
41
+ }
42
+ updateResult(value, format) {
43
+ this.lastValue = value;
44
+ this.lastFormat = format;
45
+ this.subscription?.unsubscribe();
46
+ this.subscription = this.translationService.currentLanguage$.subscribe(() => {
47
+ this.lastResult = this.formatValue(value, format);
48
+ this.cdr.markForCheck();
49
+ });
50
+ }
51
+ formatValue(value, format) {
52
+ if (!value)
53
+ return '';
54
+ const date = typeof value === 'string'
55
+ ? new Date(value + (value.length === 10 ? 'T00:00:00' : ''))
56
+ : value;
57
+ if (isNaN(date.getTime()))
58
+ return String(value);
59
+ const locale = this.localeService.getIntlLocale();
60
+ switch (format) {
61
+ case 'short':
62
+ return date.toLocaleDateString(locale, { day: '2-digit', month: '2-digit', year: '2-digit' });
63
+ case 'long':
64
+ return date.toLocaleDateString(locale, { day: 'numeric', month: 'long', year: 'numeric' });
65
+ case 'medium':
66
+ default:
67
+ return date.toLocaleDateString(locale);
68
+ }
69
+ }
70
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DateFormatPipe, deps: [{ token: i1.LocaleService }, { token: i2.TranslationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe });
71
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: DateFormatPipe, isStandalone: true, name: "dateFormat", pure: false });
72
+ }
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DateFormatPipe, decorators: [{
74
+ type: Pipe,
75
+ args: [{
76
+ name: 'dateFormat',
77
+ pure: false,
78
+ standalone: true
79
+ }]
80
+ }], ctorParameters: () => [{ type: i1.LocaleService }, { type: i2.TranslationService }, { type: i0.ChangeDetectorRef }] });
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1mb3JtYXQucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMtYWkvc3JjL2xpYi9waXBlcy9kYXRlLWZvcm1hdC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQStDLE1BQU0sZUFBZSxDQUFDOzs7O0FBS2xGOzs7Ozs7O0dBT0c7QUFNSCxNQUFNLE9BQU8sY0FBYztJQU9mO0lBQ0E7SUFDQTtJQVJGLFlBQVksQ0FBZ0I7SUFDNUIsU0FBUyxDQUF3QjtJQUNqQyxVQUFVLENBQVU7SUFDcEIsVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUV4QixZQUNVLGFBQTRCLEVBQzVCLGtCQUFzQyxFQUN0QyxHQUFzQjtRQUZ0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLFFBQUcsR0FBSCxHQUFHLENBQW1CO0lBQzdCLENBQUM7SUFFSixTQUFTLENBQUMsS0FBdUMsRUFBRSxNQUFvQztRQUNyRixJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRXRCLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRU8sWUFBWSxDQUFDLEtBQXVDLEVBQUUsTUFBZTtRQUMzRSxNQUFNLFFBQVEsR0FBRyxLQUFLLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNyRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUMvRixPQUFPLFFBQVEsS0FBSyxPQUFPLElBQUksTUFBTSxLQUFLLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQ2xGLENBQUM7SUFFTyxZQUFZLENBQUMsS0FBdUMsRUFBRSxNQUFvQztRQUNoRyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztRQUV6QixJQUFJLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBRWpDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDMUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNsRCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUF1QyxFQUFFLE1BQW9DO1FBQy9GLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFdEIsTUFBTSxJQUFJLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUTtZQUNwQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUQsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUVWLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUFFLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWhELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFbEQsUUFBUSxNQUFNLEVBQUUsQ0FBQztZQUNmLEtBQUssT0FBTztnQkFDVixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDaEcsS0FBSyxNQUFNO2dCQUNULE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUM3RixLQUFLLFFBQVEsQ0FBQztZQUNkO2dCQUNFLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNDLENBQUM7SUFDSCxDQUFDO3dHQWhFVSxjQUFjO3NHQUFkLGNBQWM7OzRGQUFkLGNBQWM7a0JBTDFCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLElBQUksRUFBRSxLQUFLO29CQUNYLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0sIE9uRGVzdHJveSwgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTG9jYWxlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2xvY2FsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9uLnNlcnZpY2UnO1xuXG4vKipcbiAqIFBpcGUgcGFyYSBmb3JtYXRhciBkYXRhcyByZXNwZWl0YW5kbyBvIGlkaW9tYSBjb25maWd1cmFkb1xuICogXG4gKiBVc286IHt7ICcyMDI2LTAzLTA0JyB8IGRhdGVGb3JtYXQgfX0gICAgICAgICAgIC0+IDA0LzAzLzIwMjYgKHB0LUJSKVxuICogVXNvOiB7eyBkYXRlT2JqIHwgZGF0ZUZvcm1hdCB9fSAgICAgICAgICAgICAgICAgLT4gMDQvMDMvMjAyNiAocHQtQlIpXG4gKiBVc286IHt7ICcyMDI2LTAzLTA0JyB8IGRhdGVGb3JtYXQ6J3Nob3J0JyB9fSAgICAtPiAwNC8wMy8yNiAocHQtQlIpXG4gKiBVc286IHt7ICcyMDI2LTAzLTA0JyB8IGRhdGVGb3JtYXQ6J2xvbmcnIH19ICAgICAtPiA0IGRlIG1hcsOnbyBkZSAyMDI2IChwdC1CUilcbiAqL1xuQFBpcGUoe1xuICBuYW1lOiAnZGF0ZUZvcm1hdCcsXG4gIHB1cmU6IGZhbHNlLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIERhdGVGb3JtYXRQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgbGFzdFZhbHVlPzogc3RyaW5nIHwgRGF0ZSB8IG51bGw7XG4gIHByaXZhdGUgbGFzdEZvcm1hdD86IHN0cmluZztcbiAgcHJpdmF0ZSBsYXN0UmVzdWx0ID0gJyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBsb2NhbGVTZXJ2aWNlOiBMb2NhbGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRpb25TZXJ2aWNlOiBUcmFuc2xhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZyB8IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkLCBmb3JtYXQ/OiAnc2hvcnQnIHwgJ21lZGl1bScgfCAnbG9uZycpOiBzdHJpbmcge1xuICAgIGlmICghdmFsdWUpIHJldHVybiAnJztcblxuICAgIGlmICh0aGlzLnNob3VsZFVwZGF0ZSh2YWx1ZSwgZm9ybWF0KSkge1xuICAgICAgdGhpcy51cGRhdGVSZXN1bHQodmFsdWUsIGZvcm1hdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubGFzdFJlc3VsdDtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGRVcGRhdGUodmFsdWU6IHN0cmluZyB8IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkLCBmb3JtYXQ/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCB2YWx1ZVN0ciA9IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlLnRvSVNPU3RyaW5nKCkgOiB2YWx1ZTtcbiAgICBjb25zdCBsYXN0U3RyID0gdGhpcy5sYXN0VmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdGhpcy5sYXN0VmFsdWUudG9JU09TdHJpbmcoKSA6IHRoaXMubGFzdFZhbHVlO1xuICAgIHJldHVybiB2YWx1ZVN0ciAhPT0gbGFzdFN0ciB8fCBmb3JtYXQgIT09IHRoaXMubGFzdEZvcm1hdCB8fCAhdGhpcy5zdWJzY3JpcHRpb247XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVJlc3VsdCh2YWx1ZTogc3RyaW5nIHwgRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQsIGZvcm1hdD86ICdzaG9ydCcgfCAnbWVkaXVtJyB8ICdsb25nJyk6IHZvaWQge1xuICAgIHRoaXMubGFzdFZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5sYXN0Rm9ybWF0ID0gZm9ybWF0O1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmN1cnJlbnRMYW5ndWFnZSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMubGFzdFJlc3VsdCA9IHRoaXMuZm9ybWF0VmFsdWUodmFsdWUsIGZvcm1hdCk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0VmFsdWUodmFsdWU6IHN0cmluZyB8IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkLCBmb3JtYXQ/OiAnc2hvcnQnIHwgJ21lZGl1bScgfCAnbG9uZycpOiBzdHJpbmcge1xuICAgIGlmICghdmFsdWUpIHJldHVybiAnJztcblxuICAgIGNvbnN0IGRhdGUgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnXG4gICAgICA/IG5ldyBEYXRlKHZhbHVlICsgKHZhbHVlLmxlbmd0aCA9PT0gMTAgPyAnVDAwOjAwOjAwJyA6ICcnKSlcbiAgICAgIDogdmFsdWU7XG5cbiAgICBpZiAoaXNOYU4oZGF0ZS5nZXRUaW1lKCkpKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcblxuICAgIGNvbnN0IGxvY2FsZSA9IHRoaXMubG9jYWxlU2VydmljZS5nZXRJbnRsTG9jYWxlKCk7XG5cbiAgICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgICAgY2FzZSAnc2hvcnQnOlxuICAgICAgICByZXR1cm4gZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcobG9jYWxlLCB7IGRheTogJzItZGlnaXQnLCBtb250aDogJzItZGlnaXQnLCB5ZWFyOiAnMi1kaWdpdCcgfSk7XG4gICAgICBjYXNlICdsb25nJzpcbiAgICAgICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKGxvY2FsZSwgeyBkYXk6ICdudW1lcmljJywgbW9udGg6ICdsb25nJywgeWVhcjogJ251bWVyaWMnIH0pO1xuICAgICAgY2FzZSAnbWVkaXVtJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyhsb2NhbGUpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -102,18 +102,44 @@ export class EntityService {
102
102
  return this.http.get(`${this.entityUrl}/${id}`)
103
103
  .pipe(catchError(this.handleError));
104
104
  }
105
+ /**
106
+ * Sanitiza uma entidade antes de enviar para a API.
107
+ * Objetos aninhados com `id` são reduzidos a `{ id }` para evitar
108
+ * problemas com referências circulares ($ref) e dados desnecessários.
109
+ */
110
+ sanitizeEntity(entity) {
111
+ if (!entity || typeof entity !== 'object')
112
+ return entity;
113
+ const sanitized = {};
114
+ for (const key of Object.keys(entity)) {
115
+ const value = entity[key];
116
+ if (value === null || value === undefined) {
117
+ sanitized[key] = value;
118
+ }
119
+ else if (Array.isArray(value)) {
120
+ sanitized[key] = value.map((item) => item && typeof item === 'object' && item.id ? { id: item.id } : item);
121
+ }
122
+ else if (typeof value === 'object' && value.id && key !== '_discriminator') {
123
+ sanitized[key] = { id: value.id };
124
+ }
125
+ else {
126
+ sanitized[key] = value;
127
+ }
128
+ }
129
+ return sanitized;
130
+ }
105
131
  /**
106
132
  * Create new entity
107
133
  */
108
134
  insert(entity) {
109
- return this.http.post(this.entityUrl, entity)
135
+ return this.http.post(this.entityUrl, this.sanitizeEntity(entity))
110
136
  .pipe(catchError(this.handleError));
111
137
  }
112
138
  /**
113
139
  * Update existing entity
114
140
  */
115
141
  update(id, entity) {
116
- return this.http.put(`${this.entityUrl}/${id}`, entity)
142
+ return this.http.put(`${this.entityUrl}/${id}`, this.sanitizeEntity(entity))
117
143
  .pipe(catchError(this.handleError));
118
144
  }
119
145
  /**
@@ -170,4 +196,4 @@ export class EntityService {
170
196
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EntityService, decorators: [{
171
197
  type: Injectable
172
198
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined }] });
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzLWFpL3NyYy9saWIvc2VydmljZXMvZW50aXR5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUF1Q2pELE1BQU0sT0FBZ0IsYUFBYTtJQU1yQjtJQUNBO0lBSkYsVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUVsQyxZQUNZLElBQWdCLEVBQ2hCLGtCQUF1QztRQUR2QyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBcUI7UUFFakQseURBQXlEO1FBQ3pELDZEQUE2RDtJQUMvRCxDQUFDO0lBRUQ7O09BRUc7SUFDTyxpQkFBaUI7UUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVEOztPQUVHO0lBQ08sa0JBQWtCLENBQUMsVUFBc0I7UUFDakQsTUFBTSxFQUFFLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLFdBQVcsR0FBRyxFQUFFLEVBQUUsYUFBYSxHQUFHLEVBQUUsRUFBRSxHQUFHLFVBQVUsQ0FBQztRQUM1RixJQUFJLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBRTlCLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENB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UUFDWixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxFQUFFLEVBQUUsQ0FBQzthQUM3QyxJQUFJLENBQ0gsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUNmLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDekIsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pCLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVUsQ0FBQyxHQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxhQUFhLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQzthQUMzRixJQUFJLENBQ0gsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUNwQixVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUM3QixDQUFDO0lBQ04sQ0FBQzt3R0E5TG1CLGFBQWE7NEdBQWIsYUFBYTs7NEZBQWIsYUFBYTtrQkFEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU29ydE1ldGEge1xuICBmaWVsZDogc3RyaW5nO1xuICBvcmRlcjogbnVtYmVyOyAvLyAxIGZvciBhc2MsIC0xIGZvciBkZXNjXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdFBhcmFtcyB7XG4gIHBhZ2U/OiBudW1iZXI7XG4gIHNpemU/OiBudW1iZXI7XG4gIHNvcnQ/OiBTb3J0TWV0YVtdO1xuICBmaWx0ZXJRdWVyeT86IHN0cmluZztcbiAgZGlzcGxheUZpZWxkcz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJvZHlQYXJhbXMge1xuICBvZmZzZXQ/OiBudW1iZXI7XG4gIHNpemU/OiBudW1iZXI7XG4gIG9yZGVyQnk/OiBzdHJpbmc7XG4gIGZpbHRlcj86IHN0cmluZztcbiAgZGlzcGxheWZpZWxkcz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlMaXN0UmVzcG9uc2U8VD4ge1xuICBjb250ZW50czogVFtdO1xuICB0b3RhbEVsZW1lbnRzOiBudW1iZXI7XG4gIHRvdGFsUGFnZXM6IG51bWJlcjtcbiAgc2l6ZT86IG51bWJlcjtcbiAgbnVtYmVyPzogbnVtYmVyO1xuICBmaXJzdD86IGJvb2xlYW47XG4gIGxhc3Q/OiBib29sZWFuO1xufVxuXG4vLyBJbnRlcmZhY2UgcGFyYSBvIHNlcnZpw6dvIGRlIHRyYWR1w6fDo28gKGR1Y2sgdHlwaW5nKVxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2xhdGlvblNlcnZpY2Uge1xuICB0cmFuc2xhdGUoa2V5OiBzdHJpbmcsIHBhcmFtcz86IGFueSk6IHN0cmluZztcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEVudGl0eVNlcnZpY2U8VD4ge1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZW50aXR5VXJsOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBhY3Rpb25zVXJsOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBxdWVyaWVzVXJsOiBzdHJpbmcgPSAnJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcm90ZWN0ZWQgdHJhbnNsYXRpb25TZXJ2aWNlPzogVHJhbnNsYXRpb25TZXJ2aWNlXG4gICkge1xuICAgIC8vIEluaXRpYWxpemUgcXVlcmllc1VybCBpbiBuZ09uSW5pdCBvciBhIHNlcGFyYXRlIG1ldGhvZFxuICAgIC8vIHNpbmNlIGFic3RyYWN0IHByb3BlcnRpZXMgY2FuJ3QgYmUgYWNjZXNzZWQgaW4gY29uc3RydWN0b3JcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBzZXJ2aWNlIC0gY2FsbCB0aGlzIGFmdGVyIHNldHRpbmcgYWN0aW9uc1VybFxuICAgKi9cbiAgcHJvdGVjdGVkIGluaXRpYWxpemVTZXJ2aWNlKCk6IHZvaWQge1xuICAgIHRoaXMucXVlcmllc1VybCA9IHRoaXMuYWN0aW9uc1VybC5yZXBsYWNlKCdhY3Rpb25zJywgJ3F1ZXJpZXMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IExpc3RQYXJhbXMgdG8gSHR0cFBhcmFtcyBmb3IgR0VUIHJlcXVlc3RzXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0TGlzdFF1ZXJ5UGFyYW1zKGxpc3RQYXJhbXM6IExpc3RQYXJhbXMpOiBIdHRwUGFyYW1zIHtcbiAgICBjb25zdCB7IHBhZ2UgPSAwLCBzaXplID0gMTAsIHNvcnQgPSBbXSwgZmlsdGVyUXVlcnkgPSAnJywgZGlzcGxheUZpZWxkcyA9IFtdIH0gPSBsaXN0UGFyYW1zO1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIFxuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3NpemUnLCBTdHJpbmcoc2l6ZSkpO1xuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ29mZnNldCcsIFN0cmluZyhwYWdlKSk7XG4gICAgXG4gICAgaWYgKHNvcnQgJiYgc29ydC5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IG9yZGVyQnkgPSBzb3J0XG4gICAgICAgIC5tYXAoKHMpID0+IHtcbiAgICAgICAgICBsZXQgb3JkZXIgPSAnJztcbiAgICAgICAgICBpZiAocy5vcmRlciA9PT0gMSkgb3JkZXIgPSAnIGFzYyc7XG4gICAgICAgICAgZWxzZSBpZiAocy5vcmRlciA9PT0gLTEpIG9yZGVyID0gJyBkZXNjJztcbiAgICAgICAgICByZXR1cm4gYCR7cy5maWVsZH0ke29yZGVyfWA7XG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKCcsICcpO1xuICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnb3JkZXJieScsIG9yZGVyQnkpO1xuICAgIH1cblxuICAgIGlmIChmaWx0ZXJRdWVyeSkge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnZmlsdGVyJywgZmlsdGVyUXVlcnkpO1xuICAgIH1cblxuICAgIGlmIChkaXNwbGF5RmllbGRzICYmIGRpc3BsYXlGaWVsZHMubGVuZ3RoKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdkaXNwbGF5ZmllbGRzJywgZGlzcGxheUZpZWxkcy5qb2luKCcsJykpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJhbXM7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBMaXN0UGFyYW1zIHRvIGJvZHkgcGFyYW1ldGVycyBmb3IgUE9TVCByZXF1ZXN0c1xuICAgKi9cbiAgcHJvdGVjdGVkIGdldEJvZHlQYXJhbXMobGlzdFBhcmFtczogTGlzdFBhcmFtcyk6IEJvZHlQYXJhbXMge1xuICAgIGNvbnN0IHsgcGFnZSA9IDAsIHNpemUgPSAxMCwgc29ydCA9IFtdLCBmaWx0ZXJRdWVyeSA9ICcnLCBkaXNwbGF5RmllbGRzID0gW10gfSA9IGxpc3RQYXJhbXM7XG4gICAgY29uc3QgYm9keVBhcmFtczogQm9keVBhcmFtcyA9IHt9O1xuXG4gICAgYm9keVBhcmFtcy5zaXplID0gc2l6ZTtcbiAgICBib2R5UGFyYW1zLm9mZnNldCA9IHBhZ2U7XG5cbiAgICBpZiAoc29ydCAmJiBzb3J0Lmxlbmd0aCkge1xuICAgICAgYm9keVBhcmFtcy5vcmRlckJ5ID0gc29ydFxuICAgICAgICAubWFwKChzKSA9PiB7XG4gICAgICAgICAgbGV0IG9yZGVyID0gJyc7XG4gICAgICAgICAgaWYgKHMub3JkZXIgPT09IDEpIG9yZGVyID0gJyBhc2MnO1xuICAgICAgICAgIGVsc2UgaWYgKHMub3JkZXIgPT09IC0xKSBvcmRlciA9ICcgZGVzYyc7XG4gICAgICAgICAgcmV0dXJuIGAke3MuZmllbGR9JHtvcmRlcn1gO1xuICAgICAgICB9KVxuICAgICAgICAuam9pbignLCAnKTtcbiAgICB9XG5cbiAgICBpZiAoZmlsdGVyUXVlcnkpIHtcbiAgICAgIGJvZHlQYXJhbXMuZmlsdGVyID0gZmlsdGVyUXVlcnk7XG4gICAgfVxuXG4gICAgaWYgKGRpc3BsYXlGaWVsZHMgJiYgZGlzcGxheUZpZWxkcy5sZW5ndGgpIHtcbiAgICAgIGJvZHlQYXJhbXMuZGlzcGxheWZpZWxkcyA9IGRpc3BsYXlGaWVsZHMuam9pbignLCcpO1xuICAgIH1cblxuICAgIHJldHVybiBib2R5UGFyYW1zO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgZXJyb3IgaGFuZGxlclxuICAgKiBOb3RlOiBUaGlzIGp1c3QgbG9ncyB0aGUgZXJyb3IgYW5kIHJlLXRocm93cyB0aGUgb3JpZ2luYWwgSHR0cEVycm9yUmVzcG9uc2VcbiAgICogc28gdGhhdCB0aGUgSFRUUCBpbnRlcmNlcHRvciBjYW4gaGFuZGxlIGl0IHByb3Blcmx5IChzaG93IHRvYXN0LCBldGMuKVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZUVycm9yID0gKGVycm9yOiBhbnkpOiBPYnNlcnZhYmxlPG5ldmVyPiA9PiB7XG4gICAgY29uc29sZS5lcnJvcignRW50aXR5U2VydmljZSBFcnJvcjonLCBlcnJvcik7XG4gICAgLy8gUmUtdGhyb3cgdGhlIG9yaWdpbmFsIGVycm9yIHNvIHRoZSBpbnRlcmNlcHRvciBjYW4gaGFuZGxlIGl0XG4gICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBMaXN0IGVudGl0aWVzIHdpdGggcGFnaW5hdGlvbiwgc29ydGluZywgYW5kIGZpbHRlcmluZ1xuICAgKi9cbiAgbGlzdChsaXN0UGFyYW1zOiBMaXN0UGFyYW1zID0ge30pOiBPYnNlcnZhYmxlPEVudGl0eUxpc3RSZXNwb25zZTxUPj4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuZ2V0TGlzdFF1ZXJ5UGFyYW1zKGxpc3RQYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEVudGl0eUxpc3RSZXNwb25zZTxUPj4odGhpcy5lbnRpdHlVcmwsIHsgcGFyYW1zIH0pXG4gICAgICAucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZW50aXR5IGJ5IElEXG4gICAqL1xuICBnZXQoaWQ6IGFueSk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFQ+KGAke3RoaXMuZW50aXR5VXJsfS8ke2lkfWApXG4gICAgICAucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgbmV3IGVudGl0eVxuICAgKi9cbiAgaW5zZXJ0KGVudGl0eTogVCk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxUPih0aGlzLmVudGl0eVVybCwgZW50aXR5KVxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGV4aXN0aW5nIGVudGl0eVxuICAgKi9cbiAgdXBkYXRlKGlkOiBhbnksIGVudGl0eTogVCk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PFQ+KGAke3RoaXMuZW50aXR5VXJsfS8ke2lkfWAsIGVudGl0eSlcbiAgICAgIC5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBlbnRpdHkgYnkgSURcbiAgICovXG4gIGRlbGV0ZShpZDogYW55KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8dm9pZD4oYCR7dGhpcy5lbnRpdHlVcmx9LyR7aWR9YCwgeyBvYnNlcnZlOiAncmVzcG9uc2UnIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCgpID0+IHVuZGVmaW5lZCksXG4gICAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZSBjdXN0b20gZmlsdGVyIGFjdGlvblxuICAgKi9cbiAgbGlzdEN1c3RvbUZpbHRlcihsaXN0UGFyYW1zOiBMaXN0UGFyYW1zLCBhY3Rpb246IHN0cmluZyk6IE9ic2VydmFibGU8RW50aXR5TGlzdFJlc3BvbnNlPFQ+PiB7XG4gICAgY29uc3QgYm9keVBhcmFtcyA9IHRoaXMuZ2V0Qm9keVBhcmFtcyhsaXN0UGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8RW50aXR5TGlzdFJlc3BvbnNlPFQ+PihgJHt0aGlzLmFjdGlvbnNVcmx9LyR7YWN0aW9ufWAsIGJvZHlQYXJhbXMpXG4gICAgICAucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIGN1c3RvbSBxdWVyeVxuICAgKi9cbiAgZXhlY3V0ZVF1ZXJ5KHF1ZXJ5TmFtZTogc3RyaW5nLCBwYXJhbXM6IGFueSA9IHt9KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLnF1ZXJpZXNVcmx9LyR7cXVlcnlOYW1lfWAsIHBhcmFtcylcbiAgICAgIC5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgY3VzdG9tIGFjdGlvblxuICAgKi9cbiAgZXhlY3V0ZUFjdGlvbihhY3Rpb25OYW1lOiBzdHJpbmcsIHBhcmFtczogYW55ID0ge30pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMuYWN0aW9uc1VybH0vJHthY3Rpb25OYW1lfWAsIHBhcmFtcylcbiAgICAgIC5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGVudGl0eSBleGlzdHMgYnkgSURcbiAgICovXG4gIGV4aXN0cyhpZDogYW55KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5oZWFkKGAke3RoaXMuZW50aXR5VXJsfS8ke2lkfWApXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCgpID0+IHRydWUpLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwNCkge1xuICAgICAgICAgICAgcmV0dXJuIFtmYWxzZV07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUVycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQnVsayBkZWxldGUgZW50aXRpZXNcbiAgICovXG4gIGJ1bGtEZWxldGUoaWRzOiBhbnlbXSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDx2b2lkPihgJHt0aGlzLmFjdGlvbnNVcmx9L2J1bGtEZWxldGVgLCB7IGlkcyB9LCB7IG9ic2VydmU6ICdyZXNwb25zZScgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKCkgPT4gdW5kZWZpbmVkKSxcbiAgICAgICAgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKVxuICAgICAgKTtcbiAgfVxufVxuIl19
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzLWFpL3NyYy9saWIvc2VydmljZXMvZW50aXR5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUF1Q2pELE1BQU0sT0FBZ0IsYUFBYTtJQU1yQjtJQUNBO0lBSkYsVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUVsQyxZQUNZLElBQWdCLEVBQ2hCLGtCQUF1QztRQUR2QyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBcUI7UUFFakQseURBQXlEO1FBQ3pELDZEQUE2RDtJQUMvRCxDQUFDO0lBRUQ7O09BRUc7SUFDTyxpQkFBaUI7UUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVEOztPQUVHO0lBQ08sa0JBQWtCLENBQUMsVUFBc0I7UUFDakQsTUFBTSxFQUFFLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLFdBQVcsR0FBRyxFQUFFLEVBQUUsYUFBYSxHQUFHLEVBQUUsRUFBRSxHQUFHLFVBQVUsQ0FBQztRQUM1RixJQUFJLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBRTlCLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENB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QUN4QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsRUFBTztRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLEVBQUUsRUFBRSxDQUFDO2FBQzdDLElBQUksQ0FDSCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQ2YsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUN6QixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakIsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVSxDQUFDLEdBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLGFBQWEsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDO2FBQzNGLElBQUksQ0FDSCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQ3BCLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQzdCLENBQUM7SUFDTixDQUFDO3dHQXhObUIsYUFBYTs0R0FBYixhQUFhOzs0RkFBYixhQUFhO2tCQURsQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IGludGVyZmFjZSBTb3J0TWV0YSB7XG4gIGZpZWxkOiBzdHJpbmc7XG4gIG9yZGVyOiBudW1iZXI7IC8vIDEgZm9yIGFzYywgLTEgZm9yIGRlc2Ncbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0UGFyYW1zIHtcbiAgcGFnZT86IG51bWJlcjtcbiAgc2l6ZT86IG51bWJlcjtcbiAgc29ydD86IFNvcnRNZXRhW107XG4gIGZpbHRlclF1ZXJ5Pzogc3RyaW5nO1xuICBkaXNwbGF5RmllbGRzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQm9keVBhcmFtcyB7XG4gIG9mZnNldD86IG51bWJlcjtcbiAgc2l6ZT86IG51bWJlcjtcbiAgb3JkZXJCeT86IHN0cmluZztcbiAgZmlsdGVyPzogc3RyaW5nO1xuICBkaXNwbGF5ZmllbGRzPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eUxpc3RSZXNwb25zZTxUPiB7XG4gIGNvbnRlbnRzOiBUW107XG4gIHRvdGFsRWxlbWVudHM6IG51bWJlcjtcbiAgdG90YWxQYWdlczogbnVtYmVyO1xuICBzaXplPzogbnVtYmVyO1xuICBudW1iZXI/OiBudW1iZXI7XG4gIGZpcnN0PzogYm9vbGVhbjtcbiAgbGFzdD86IGJvb2xlYW47XG59XG5cbi8vIEludGVyZmFjZSBwYXJhIG8gc2VydmnDp28gZGUgdHJhZHXDp8OjbyAoZHVjayB0eXBpbmcpXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zbGF0aW9uU2VydmljZSB7XG4gIHRyYW5zbGF0ZShrZXk6IHN0cmluZywgcGFyYW1zPzogYW55KTogc3RyaW5nO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRW50aXR5U2VydmljZTxUPiB7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBlbnRpdHlVcmw6IHN0cmluZztcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGFjdGlvbnNVcmw6IHN0cmluZztcbiAgcHJvdGVjdGVkIHF1ZXJpZXNVcmw6IHN0cmluZyA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGlvblNlcnZpY2U/OiBUcmFuc2xhdGlvblNlcnZpY2VcbiAgKSB7XG4gICAgLy8gSW5pdGlhbGl6ZSBxdWVyaWVzVXJsIGluIG5nT25Jbml0IG9yIGEgc2VwYXJhdGUgbWV0aG9kXG4gICAgLy8gc2luY2UgYWJzdHJhY3QgcHJvcGVydGllcyBjYW4ndCBiZSBhY2Nlc3NlZCBpbiBjb25zdHJ1Y3RvclxuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIHNlcnZpY2UgLSBjYWxsIHRoaXMgYWZ0ZXIgc2V0dGluZyBhY3Rpb25zVXJsXG4gICAqL1xuICBwcm90ZWN0ZWQgaW5pdGlhbGl6ZVNlcnZpY2UoKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyaWVzVXJsID0gdGhpcy5hY3Rpb25zVXJsLnJlcGxhY2UoJ2FjdGlvbnMnLCAncXVlcmllcycpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgTGlzdFBhcmFtcyB0byBIdHRwUGFyYW1zIGZvciBHRVQgcmVxdWVzdHNcbiAgICovXG4gIHByb3RlY3RlZCBnZXRMaXN0UXVlcnlQYXJhbXMobGlzdFBhcmFtczogTGlzdFBhcmFtcyk6IEh0dHBQYXJhbXMge1xuICAgIGNvbnN0IHsgcGFnZSA9IDAsIHNpemUgPSAxMCwgc29ydCA9IFtdLCBmaWx0ZXJRdWVyeSA9ICcnLCBkaXNwbGF5RmllbGRzID0gW10gfSA9IGxpc3RQYXJhbXM7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgXG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnc2l6ZScsIFN0cmluZyhzaXplKSk7XG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnb2Zmc2V0JywgU3RyaW5nKHBhZ2UpKTtcbiAgICBcbiAgICBpZiAoc29ydCAmJiBzb3J0Lmxlbmd0aCkge1xuICAgICAgY29uc3Qgb3JkZXJCeSA9IHNvcnRcbiAgICAgICAgLm1hcCgocykgPT4ge1xuICAgICAgICAgIGxldCBvcmRlciA9ICcnO1xuICAgICAgICAgIGlmIChzLm9yZGVyID09PSAxKSBvcmRlciA9ICcgYXNjJztcbiAgICAgICAgICBlbHNlIGlmIChzLm9yZGVyID09PSAtMSkgb3JkZXIgPSAnIGRlc2MnO1xuICAgICAgICAgIHJldHVybiBgJHtzLmZpZWxkfSR7b3JkZXJ9YDtcbiAgICAgICAgfSlcbiAgICAgICAgLmpvaW4oJywgJyk7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdvcmRlcmJ5Jywgb3JkZXJCeSk7XG4gICAgfVxuXG4gICAgaWYgKGZpbHRlclF1ZXJ5KSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdmaWx0ZXInLCBmaWx0ZXJRdWVyeSk7XG4gICAgfVxuXG4gICAgaWYgKGRpc3BsYXlGaWVsZHMgJiYgZGlzcGxheUZpZWxkcy5sZW5ndGgpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ2Rpc3BsYXlmaWVsZHMnLCBkaXNwbGF5RmllbGRzLmpvaW4oJywnKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IExpc3RQYXJhbXMgdG8gYm9keSBwYXJhbWV0ZXJzIGZvciBQT1NUIHJlcXVlc3RzXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0Qm9keVBhcmFtcyhsaXN0UGFyYW1zOiBMaXN0UGFyYW1zKTogQm9keVBhcmFtcyB7XG4gICAgY29uc3QgeyBwYWdlID0gMCwgc2l6ZSA9IDEwLCBzb3J0ID0gW10sIGZpbHRlclF1ZXJ5ID0gJycsIGRpc3BsYXlGaWVsZHMgPSBbXSB9ID0gbGlzdFBhcmFtcztcbiAgICBjb25zdCBib2R5UGFyYW1zOiBCb2R5UGFyYW1zID0ge307XG5cbiAgICBib2R5UGFyYW1zLnNpemUgPSBzaXplO1xuICAgIGJvZHlQYXJhbXMub2Zmc2V0ID0gcGFnZTtcblxuICAgIGlmIChzb3J0ICYmIHNvcnQubGVuZ3RoKSB7XG4gICAgICBib2R5UGFyYW1zLm9yZGVyQnkgPSBzb3J0XG4gICAgICAgIC5tYXAoKHMpID0+IHtcbiAgICAgICAgICBsZXQgb3JkZXIgPSAnJztcbiAgICAgICAgICBpZiAocy5vcmRlciA9PT0gMSkgb3JkZXIgPSAnIGFzYyc7XG4gICAgICAgICAgZWxzZSBpZiAocy5vcmRlciA9PT0gLTEpIG9yZGVyID0gJyBkZXNjJztcbiAgICAgICAgICByZXR1cm4gYCR7cy5maWVsZH0ke29yZGVyfWA7XG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKCcsICcpO1xuICAgIH1cblxuICAgIGlmIChmaWx0ZXJRdWVyeSkge1xuICAgICAgYm9keVBhcmFtcy5maWx0ZXIgPSBmaWx0ZXJRdWVyeTtcbiAgICB9XG5cbiAgICBpZiAoZGlzcGxheUZpZWxkcyAmJiBkaXNwbGF5RmllbGRzLmxlbmd0aCkge1xuICAgICAgYm9keVBhcmFtcy5kaXNwbGF5ZmllbGRzID0gZGlzcGxheUZpZWxkcy5qb2luKCcsJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJvZHlQYXJhbXM7XG4gIH1cblxuICAvKipcbiAgICogRGVmYXVsdCBlcnJvciBoYW5kbGVyXG4gICAqIE5vdGU6IFRoaXMganVzdCBsb2dzIHRoZSBlcnJvciBhbmQgcmUtdGhyb3dzIHRoZSBvcmlnaW5hbCBIdHRwRXJyb3JSZXNwb25zZVxuICAgKiBzbyB0aGF0IHRoZSBIVFRQIGludGVyY2VwdG9yIGNhbiBoYW5kbGUgaXQgcHJvcGVybHkgKHNob3cgdG9hc3QsIGV0Yy4pXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlRXJyb3IgPSAoZXJyb3I6IGFueSk6IE9ic2VydmFibGU8bmV2ZXI+ID0+IHtcbiAgICBjb25zb2xlLmVycm9yKCdFbnRpdHlTZXJ2aWNlIEVycm9yOicsIGVycm9yKTtcbiAgICAvLyBSZS10aHJvdyB0aGUgb3JpZ2luYWwgZXJyb3Igc28gdGhlIGludGVyY2VwdG9yIGNhbiBoYW5kbGUgaXRcbiAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gIH07XG5cbiAgLyoqXG4gICAqIExpc3QgZW50aXRpZXMgd2l0aCBwYWdpbmF0aW9uLCBzb3J0aW5nLCBhbmQgZmlsdGVyaW5nXG4gICAqL1xuICBsaXN0KGxpc3RQYXJhbXM6IExpc3RQYXJhbXMgPSB7fSk6IE9ic2VydmFibGU8RW50aXR5TGlzdFJlc3BvbnNlPFQ+PiB7XG4gICAgY29uc3QgcGFyYW1zID0gdGhpcy5nZXRMaXN0UXVlcnlQYXJhbXMobGlzdFBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8RW50aXR5TGlzdFJlc3BvbnNlPFQ+Pih0aGlzLmVudGl0eVVybCwgeyBwYXJhbXMgfSlcbiAgICAgIC5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBlbnRpdHkgYnkgSURcbiAgICovXG4gIGdldChpZDogYW55KTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8VD4oYCR7dGhpcy5lbnRpdHlVcmx9LyR7aWR9YClcbiAgICAgIC5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhbml0aXphIHVtYSBlbnRpZGFkZSBhbnRlcyBkZSBlbnZpYXIgcGFyYSBhIEFQSS5cbiAgICogT2JqZXRvcyBhbmluaGFkb3MgY29tIGBpZGAgc8OjbyByZWR1emlkb3MgYSBgeyBpZCB9YCBwYXJhIGV2aXRhclxuICAgKiBwcm9ibGVtYXMgY29tIHJlZmVyw6puY2lhcyBjaXJjdWxhcmVzICgkcmVmKSBlIGRhZG9zIGRlc25lY2Vzc8Ohcmlvcy5cbiAgICovXG4gIHByb3RlY3RlZCBzYW5pdGl6ZUVudGl0eShlbnRpdHk6IGFueSk6IGFueSB7XG4gICAgaWYgKCFlbnRpdHkgfHwgdHlwZW9mIGVudGl0eSAhPT0gJ29iamVjdCcpIHJldHVybiBlbnRpdHk7XG5cbiAgICBjb25zdCBzYW5pdGl6ZWQ6IGFueSA9IHt9O1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGVudGl0eSkpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gZW50aXR5W2tleV07XG4gICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzYW5pdGl6ZWRba2V5XSA9IHZhbHVlO1xuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICBzYW5pdGl6ZWRba2V5XSA9IHZhbHVlLm1hcCgoaXRlbTogYW55KSA9PlxuICAgICAgICAgIGl0ZW0gJiYgdHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmIGl0ZW0uaWQgPyB7IGlkOiBpdGVtLmlkIH0gOiBpdGVtXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUuaWQgJiYga2V5ICE9PSAnX2Rpc2NyaW1pbmF0b3InKSB7XG4gICAgICAgIHNhbml0aXplZFtrZXldID0geyBpZDogdmFsdWUuaWQgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNhbml0aXplZFtrZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzYW5pdGl6ZWQ7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIG5ldyBlbnRpdHlcbiAgICovXG4gIGluc2VydChlbnRpdHk6IFQpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8VD4odGhpcy5lbnRpdHlVcmwsIHRoaXMuc2FuaXRpemVFbnRpdHkoZW50aXR5KSlcbiAgICAgIC5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBleGlzdGluZyBlbnRpdHlcbiAgICovXG4gIHVwZGF0ZShpZDogYW55LCBlbnRpdHk6IFQpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxUPihgJHt0aGlzLmVudGl0eVVybH0vJHtpZH1gLCB0aGlzLnNhbml0aXplRW50aXR5KGVudGl0eSkpXG4gICAgICAucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgZW50aXR5IGJ5IElEXG4gICAqL1xuICBkZWxldGUoaWQ6IGFueSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPHZvaWQ+KGAke3RoaXMuZW50aXR5VXJsfS8ke2lkfWAsIHsgb2JzZXJ2ZTogJ3Jlc3BvbnNlJyB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoKSA9PiB1bmRlZmluZWQpLFxuICAgICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgY3VzdG9tIGZpbHRlciBhY3Rpb25cbiAgICovXG4gIGxpc3RDdXN0b21GaWx0ZXIobGlzdFBhcmFtczogTGlzdFBhcmFtcywgYWN0aW9uOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEVudGl0eUxpc3RSZXNwb25zZTxUPj4ge1xuICAgIGNvbnN0IGJvZHlQYXJhbXMgPSB0aGlzLmdldEJvZHlQYXJhbXMobGlzdFBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEVudGl0eUxpc3RSZXNwb25zZTxUPj4oYCR7dGhpcy5hY3Rpb25zVXJsfS8ke2FjdGlvbn1gLCBib2R5UGFyYW1zKVxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZSBjdXN0b20gcXVlcnlcbiAgICovXG4gIGV4ZWN1dGVRdWVyeShxdWVyeU5hbWU6IHN0cmluZywgcGFyYW1zOiBhbnkgPSB7fSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy5xdWVyaWVzVXJsfS8ke3F1ZXJ5TmFtZX1gLCBwYXJhbXMpXG4gICAgICAucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIGN1c3RvbSBhY3Rpb25cbiAgICovXG4gIGV4ZWN1dGVBY3Rpb24oYWN0aW9uTmFtZTogc3RyaW5nLCBwYXJhbXM6IGFueSA9IHt9KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLmFjdGlvbnNVcmx9LyR7YWN0aW9uTmFtZX1gLCBwYXJhbXMpXG4gICAgICAucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBlbnRpdHkgZXhpc3RzIGJ5IElEXG4gICAqL1xuICBleGlzdHMoaWQ6IGFueSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuaGVhZChgJHt0aGlzLmVudGl0eVVybH0vJHtpZH1gKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoKSA9PiB0cnVlKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgICAgIHJldHVybiBbZmFsc2VdO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVFcnJvcihlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1bGsgZGVsZXRlIGVudGl0aWVzXG4gICAqL1xuICBidWxrRGVsZXRlKGlkczogYW55W10pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8dm9pZD4oYCR7dGhpcy5hY3Rpb25zVXJsfS9idWxrRGVsZXRlYCwgeyBpZHMgfSwgeyBvYnNlcnZlOiAncmVzcG9uc2UnIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCgpID0+IHVuZGVmaW5lZCksXG4gICAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcbiAgICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,200 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "primeng/config";
4
+ import * as i2 from "./translation.service";
5
+ /**
6
+ * Mapa de traduções do PrimeNG Calendar por idioma
7
+ */
8
+ const PRIMENG_LOCALE = {
9
+ 'pt-BR': {
10
+ dayNames: ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado'],
11
+ dayNamesShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb'],
12
+ dayNamesMin: ['Do', 'Se', 'Te', 'Qa', 'Qi', 'Sx', 'Sa'],
13
+ monthNames: ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'],
14
+ monthNamesShort: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'],
15
+ today: 'Hoje',
16
+ clear: 'Limpar',
17
+ weekHeader: 'Sm',
18
+ firstDayOfWeek: 0,
19
+ dateFormat: 'dd/mm/yy',
20
+ accept: 'Sim',
21
+ reject: 'Não',
22
+ choose: 'Escolher',
23
+ upload: 'Enviar',
24
+ cancel: 'Cancelar',
25
+ pending: 'Pendente',
26
+ emptyMessage: 'Nenhum resultado encontrado',
27
+ emptyFilterMessage: 'Nenhum resultado encontrado',
28
+ chooseYear: 'Escolher ano',
29
+ chooseMonth: 'Escolher mês',
30
+ chooseDate: 'Escolher data',
31
+ prevDecade: 'Década anterior',
32
+ nextDecade: 'Próxima década',
33
+ prevYear: 'Ano anterior',
34
+ nextYear: 'Próximo ano',
35
+ prevMonth: 'Mês anterior',
36
+ nextMonth: 'Próximo mês',
37
+ prevHour: 'Hora anterior',
38
+ nextHour: 'Próxima hora',
39
+ prevMinute: 'Minuto anterior',
40
+ nextMinute: 'Próximo minuto',
41
+ prevSecond: 'Segundo anterior',
42
+ nextSecond: 'Próximo segundo',
43
+ am: 'AM',
44
+ pm: 'PM'
45
+ },
46
+ 'en-US': {
47
+ dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
48
+ dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
49
+ dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
50
+ monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
51
+ monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
52
+ today: 'Today',
53
+ clear: 'Clear',
54
+ weekHeader: 'Wk',
55
+ firstDayOfWeek: 0,
56
+ dateFormat: 'mm/dd/yy',
57
+ accept: 'Yes',
58
+ reject: 'No',
59
+ choose: 'Choose',
60
+ upload: 'Upload',
61
+ cancel: 'Cancel',
62
+ pending: 'Pending',
63
+ emptyMessage: 'No results found',
64
+ emptyFilterMessage: 'No results found',
65
+ chooseYear: 'Choose Year',
66
+ chooseMonth: 'Choose Month',
67
+ chooseDate: 'Choose Date',
68
+ prevDecade: 'Previous Decade',
69
+ nextDecade: 'Next Decade',
70
+ prevYear: 'Previous Year',
71
+ nextYear: 'Next Year',
72
+ prevMonth: 'Previous Month',
73
+ nextMonth: 'Next Month',
74
+ prevHour: 'Previous Hour',
75
+ nextHour: 'Next Hour',
76
+ prevMinute: 'Previous Minute',
77
+ nextMinute: 'Next Minute',
78
+ prevSecond: 'Previous Second',
79
+ nextSecond: 'Next Second',
80
+ am: 'AM',
81
+ pm: 'PM'
82
+ },
83
+ 'es-ES': {
84
+ dayNames: ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'],
85
+ dayNamesShort: ['Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb'],
86
+ dayNamesMin: ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'],
87
+ monthNames: ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'],
88
+ monthNamesShort: ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'],
89
+ today: 'Hoy',
90
+ clear: 'Limpiar',
91
+ weekHeader: 'Sm',
92
+ firstDayOfWeek: 1,
93
+ dateFormat: 'dd/mm/yy',
94
+ accept: 'Sí',
95
+ reject: 'No',
96
+ choose: 'Elegir',
97
+ upload: 'Subir',
98
+ cancel: 'Cancelar',
99
+ pending: 'Pendiente',
100
+ emptyMessage: 'No se encontraron resultados',
101
+ emptyFilterMessage: 'No se encontraron resultados',
102
+ chooseYear: 'Elegir año',
103
+ chooseMonth: 'Elegir mes',
104
+ chooseDate: 'Elegir fecha',
105
+ prevDecade: 'Década anterior',
106
+ nextDecade: 'Siguiente década',
107
+ prevYear: 'Año anterior',
108
+ nextYear: 'Siguiente año',
109
+ prevMonth: 'Mes anterior',
110
+ nextMonth: 'Siguiente mes',
111
+ prevHour: 'Hora anterior',
112
+ nextHour: 'Siguiente hora',
113
+ prevMinute: 'Minuto anterior',
114
+ nextMinute: 'Siguiente minuto',
115
+ prevSecond: 'Segundo anterior',
116
+ nextSecond: 'Siguiente segundo',
117
+ am: 'AM',
118
+ pm: 'PM'
119
+ }
120
+ };
121
+ /**
122
+ * Formatos de data por idioma para uso em pipes e formatação
123
+ */
124
+ const DATE_FORMATS = {
125
+ 'pt-BR': 'dd/MM/yyyy',
126
+ 'en-US': 'MM/dd/yyyy',
127
+ 'es-ES': 'dd/MM/yyyy'
128
+ };
129
+ /**
130
+ * Locales do Intl por idioma
131
+ */
132
+ const INTL_LOCALES = {
133
+ 'pt-BR': 'pt-BR',
134
+ 'en-US': 'en-US',
135
+ 'es-ES': 'es-ES'
136
+ };
137
+ export class LocaleService {
138
+ primeNG;
139
+ translationService;
140
+ initialized = false;
141
+ constructor(primeNG, translationService) {
142
+ this.primeNG = primeNG;
143
+ this.translationService = translationService;
144
+ this.init();
145
+ }
146
+ init() {
147
+ if (this.initialized)
148
+ return;
149
+ this.initialized = true;
150
+ // Aplicar locale inicial
151
+ this.applyLocale(this.translationService.getCurrentLanguage());
152
+ // Reagir a mudanças de idioma
153
+ this.translationService.currentLanguage$.subscribe((language) => {
154
+ this.applyLocale(language);
155
+ });
156
+ }
157
+ applyLocale(language) {
158
+ const locale = PRIMENG_LOCALE[language] || PRIMENG_LOCALE['pt-BR'];
159
+ this.primeNG.setTranslation(locale);
160
+ }
161
+ /**
162
+ * Retorna o formato de data PrimeNG (p-calendar) para o idioma atual
163
+ */
164
+ getPrimeNGDateFormat() {
165
+ const language = this.translationService.getCurrentLanguage();
166
+ return PRIMENG_LOCALE[language]?.dateFormat || 'dd/mm/yy';
167
+ }
168
+ /**
169
+ * Retorna o formato de data Angular (DatePipe) para o idioma atual
170
+ */
171
+ getDateFormat() {
172
+ return DATE_FORMATS[this.translationService.getCurrentLanguage()] || DATE_FORMATS['pt-BR'];
173
+ }
174
+ /**
175
+ * Retorna o locale Intl para o idioma atual
176
+ */
177
+ getIntlLocale() {
178
+ return INTL_LOCALES[this.translationService.getCurrentLanguage()] || INTL_LOCALES['pt-BR'];
179
+ }
180
+ /**
181
+ * Formata uma data string (yyyy-MM-dd ou ISO) para o formato do idioma atual
182
+ */
183
+ formatDate(value) {
184
+ if (!value)
185
+ return '';
186
+ const date = typeof value === 'string' ? new Date(value + (value.length === 10 ? 'T00:00:00' : '')) : value;
187
+ if (isNaN(date.getTime()))
188
+ return String(value);
189
+ return date.toLocaleDateString(this.getIntlLocale());
190
+ }
191
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LocaleService, deps: [{ token: i1.PrimeNG }, { token: i2.TranslationService }], target: i0.ɵɵFactoryTarget.Injectable });
192
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LocaleService, providedIn: 'root' });
193
+ }
194
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LocaleService, decorators: [{
195
+ type: Injectable,
196
+ args: [{
197
+ providedIn: 'root'
198
+ }]
199
+ }], ctorParameters: () => [{ type: i1.PrimeNG }, { type: i2.TranslationService }] });
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzLWFpL3NyYy9saWIvc2VydmljZXMvbG9jYWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQUszQzs7R0FFRztBQUNILE1BQU0sY0FBYyxHQUEyQztJQUM3RCxPQUFPLEVBQUU7UUFDUCxRQUFRLEVBQUUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUM7UUFDaEYsYUFBYSxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDO1FBQ2hFLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQztRQUN2RCxVQUFVLEVBQUUsQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQztRQUN6SSxlQUFlLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQztRQUNyRyxLQUFLLEVBQUUsTUFBTTtRQUNiLEtBQUssRUFBRSxRQUFRO1FBQ2YsVUFBVSxFQUFFLElBQUk7UUFDaEIsY0FBYyxFQUFFLENBQUM7UUFDakIsVUFB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QUFDLENBQUMsS0FBSyxDQUFDO1FBQzVHLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUFFLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7d0dBMURVLGFBQWE7NEdBQWIsYUFBYSxjQUZaLE1BQU07OzRGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJpbWVORyB9IGZyb20gJ3ByaW1lbmcvY29uZmlnJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25TZXJ2aWNlLCBTdXBwb3J0ZWRMYW5ndWFnZSB9IGZyb20gJy4vdHJhbnNsYXRpb24uc2VydmljZSc7XG5cbi8qKlxuICogTWFwYSBkZSB0cmFkdcOnw7VlcyBkbyBQcmltZU5HIENhbGVuZGFyIHBvciBpZGlvbWFcbiAqL1xuY29uc3QgUFJJTUVOR19MT0NBTEU6IFJlY29yZDxTdXBwb3J0ZWRMYW5ndWFnZSwgVHJhbnNsYXRpb24+ID0ge1xuICAncHQtQlInOiB7XG4gICAgZGF5TmFtZXM6IFsnRG9taW5nbycsICdTZWd1bmRhJywgJ1RlcsOnYScsICdRdWFydGEnLCAnUXVpbnRhJywgJ1NleHRhJywgJ1PDoWJhZG8nXSxcbiAgICBkYXlOYW1lc1Nob3J0OiBbJ0RvbScsICdTZWcnLCAnVGVyJywgJ1F1YScsICdRdWknLCAnU2V4JywgJ1PDoWInXSxcbiAgICBkYXlOYW1lc01pbjogWydEbycsICdTZScsICdUZScsICdRYScsICdRaScsICdTeCcsICdTYSddLFxuICAgIG1vbnRoTmFtZXM6IFsnSmFuZWlybycsICdGZXZlcmVpcm8nLCAnTWFyw6dvJywgJ0FicmlsJywgJ01haW8nLCAnSnVuaG8nLCAnSnVsaG8nLCAnQWdvc3RvJywgJ1NldGVtYnJvJywgJ091dHVicm8nLCAnTm92ZW1icm8nLCAnRGV6ZW1icm8nXSxcbiAgICBtb250aE5hbWVzU2hvcnQ6IFsnSmFuJywgJ0ZldicsICdNYXInLCAnQWJyJywgJ01haScsICdKdW4nLCAnSnVsJywgJ0FnbycsICdTZXQnLCAnT3V0JywgJ05vdicsICdEZXonXSxcbiAgICB0b2RheTogJ0hvamUnLFxuICAgIGNsZWFyOiAnTGltcGFyJyxcbiAgICB3ZWVrSGVhZGVyOiAnU20nLFxuICAgIGZpcnN0RGF5T2ZXZWVrOiAwLFxuICAgIGRhdGVGb3JtYXQ6ICdkZC9tbS95eScsXG4gICAgYWNjZXB0OiAnU2ltJyxcbiAgICByZWplY3Q6ICdOw6NvJyxcbiAgICBjaG9vc2U6ICdFc2NvbGhlcicsXG4gICAgdXBsb2FkOiAnRW52aWFyJyxcbiAgICBjYW5jZWw6ICdDYW5jZWxhcicsXG4gICAgcGVuZGluZzogJ1BlbmRlbnRlJyxcbiAgICBlbXB0eU1lc3NhZ2U6ICdOZW5odW0gcmVzdWx0YWRvIGVuY29udHJhZG8nLFxuICAgIGVtcHR5RmlsdGVyTWVzc2FnZTogJ05lbmh1bSByZXN1bHRhZG8gZW5jb250cmFkbycsXG4gICAgY2hvb3NlWWVhcjogJ0VzY29saGVyIGFubycsXG4gICAgY2hvb3NlTW9udGg6ICdFc2NvbGhlciBtw6pzJyxcbiAgICBjaG9vc2VEYXRlOiAnRXNjb2xoZXIgZGF0YScsXG4gICAgcHJldkRlY2FkZTogJ0TDqWNhZGEgYW50ZXJpb3InLFxuICAgIG5leHREZWNhZGU6ICdQcsOzeGltYSBkw6ljYWRhJyxcbiAgICBwcmV2WWVhcjogJ0FubyBhbnRlcmlvcicsXG4gICAgbmV4dFllYXI6ICdQcsOzeGltbyBhbm8nLFxuICAgIHByZXZNb250aDogJ03DqnMgYW50ZXJpb3InLFxuICAgIG5leHRNb250aDogJ1Byw7N4aW1vIG3DqnMnLFxuICAgIHByZXZIb3VyOiAnSG9yYSBhbnRlcmlvcicsXG4gICAgbmV4dEhvdXI6ICdQcsOzeGltYSBob3JhJyxcbiAgICBwcmV2TWludXRlOiAnTWludXRvIGFudGVyaW9yJyxcbiAgICBuZXh0TWludXRlOiAnUHLDs3hpbW8gbWludXRvJyxcbiAgICBwcmV2U2Vjb25kOiAnU2VndW5kbyBhbnRlcmlvcicsXG4gICAgbmV4dFNlY29uZDogJ1Byw7N4aW1vIHNlZ3VuZG8nLFxuICAgIGFtOiAnQU0nLFxuICAgIHBtOiAnUE0nXG4gIH0sXG4gICdlbi1VUyc6IHtcbiAgICBkYXlOYW1lczogWydTdW5kYXknLCAnTW9uZGF5JywgJ1R1ZXNkYXknLCAnV2VkbmVzZGF5JywgJ1RodXJzZGF5JywgJ0ZyaWRheScsICdTYXR1cmRheSddLFxuICAgIGRheU5hbWVzU2hvcnQ6IFsnU3VuJywgJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0J10sXG4gICAgZGF5TmFtZXNNaW46IFsnU3UnLCAnTW8nLCAnVHUnLCAnV2UnLCAnVGgnLCAnRnInLCAnU2EnXSxcbiAgICBtb250aE5hbWVzOiBbJ0phbnVhcnknLCAnRmVicnVhcnknLCAnTWFyY2gnLCAnQXByaWwnLCAnTWF5JywgJ0p1bmUnLCAnSnVseScsICdBdWd1c3QnLCAnU2VwdGVtYmVyJywgJ09jdG9iZXInLCAnTm92ZW1iZXInLCAnRGVjZW1iZXInXSxcbiAgICBtb250aE5hbWVzU2hvcnQ6IFsnSmFuJywgJ0ZlYicsICdNYXInLCAnQXByJywgJ01heScsICdKdW4nLCAnSnVsJywgJ0F1ZycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEZWMnXSxcbiAgICB0b2RheTogJ1RvZGF5JyxcbiAgICBjbGVhcjogJ0NsZWFyJyxcbiAgICB3ZWVrSGVhZGVyOiAnV2snLFxuICAgIGZpcnN0RGF5T2ZXZWVrOiAwLFxuICAgIGRhdGVGb3JtYXQ6ICdtbS9kZC95eScsXG4gICAgYWNjZXB0OiAnWWVzJyxcbiAgICByZWplY3Q6ICdObycsXG4gICAgY2hvb3NlOiAnQ2hvb3NlJyxcbiAgICB1cGxvYWQ6ICdVcGxvYWQnLFxuICAgIGNhbmNlbDogJ0NhbmNlbCcsXG4gICAgcGVuZGluZzogJ1BlbmRpbmcnLFxuICAgIGVtcHR5TWVzc2FnZTogJ05vIHJlc3VsdHMgZm91bmQnLFxuICAgIGVtcHR5RmlsdGVyTWVzc2FnZTogJ05vIHJlc3VsdHMgZm91bmQnLFxuICAgIGNob29zZVllYXI6ICdDaG9vc2UgWWVhcicsXG4gICAgY2hvb3NlTW9udGg6ICdDaG9vc2UgTW9udGgnLFxuICAgIGNob29zZURhdGU6ICdDaG9vc2UgRGF0ZScsXG4gICAgcHJldkRlY2FkZTogJ1ByZXZpb3VzIERlY2FkZScsXG4gICAgbmV4dERlY2FkZTogJ05leHQgRGVjYWRlJyxcbiAgICBwcmV2WWVhcjogJ1ByZXZpb3VzIFllYXInLFxuICAgIG5leHRZZWFyOiAnTmV4dCBZZWFyJyxcbiAgICBwcmV2TW9udGg6ICdQcmV2aW91cyBNb250aCcsXG4gICAgbmV4dE1vbnRoOiAnTmV4dCBNb250aCcsXG4gICAgcHJldkhvdXI6ICdQcmV2aW91cyBIb3VyJyxcbiAgICBuZXh0SG91cjogJ05leHQgSG91cicsXG4gICAgcHJldk1pbnV0ZTogJ1ByZXZpb3VzIE1pbnV0ZScsXG4gICAgbmV4dE1pbnV0ZTogJ05leHQgTWludXRlJyxcbiAgICBwcmV2U2Vjb25kOiAnUHJldmlvdXMgU2Vjb25kJyxcbiAgICBuZXh0U2Vjb25kOiAnTmV4dCBTZWNvbmQnLFxuICAgIGFtOiAnQU0nLFxuICAgIHBtOiAnUE0nXG4gIH0sXG4gICdlcy1FUyc6IHtcbiAgICBkYXlOYW1lczogWydEb21pbmdvJywgJ0x1bmVzJywgJ01hcnRlcycsICdNacOpcmNvbGVzJywgJ0p1ZXZlcycsICdWaWVybmVzJywgJ1PDoWJhZG8nXSxcbiAgICBkYXlOYW1lc1Nob3J0OiBbJ0RvbScsICdMdW4nLCAnTWFyJywgJ01pw6knLCAnSnVlJywgJ1ZpZScsICdTw6FiJ10sXG4gICAgZGF5TmFtZXNNaW46IFsnRG8nLCAnTHUnLCAnTWEnLCAnTWknLCAnSnUnLCAnVmknLCAnU2EnXSxcbiAgICBtb250aE5hbWVzOiBbJ0VuZXJvJywgJ0ZlYnJlcm8nLCAnTWFyem8nLCAnQWJyaWwnLCAnTWF5bycsICdKdW5pbycsICdKdWxpbycsICdBZ29zdG8nLCAnU2VwdGllbWJyZScsICdPY3R1YnJlJywgJ05vdmllbWJyZScsICdEaWNpZW1icmUnXSxcbiAgICBtb250aE5hbWVzU2hvcnQ6IFsnRW5lJywgJ0ZlYicsICdNYXInLCAnQWJyJywgJ01heScsICdKdW4nLCAnSnVsJywgJ0FnbycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEaWMnXSxcbiAgICB0b2RheTogJ0hveScsXG4gICAgY2xlYXI6ICdMaW1waWFyJyxcbiAgICB3ZWVrSGVhZGVyOiAnU20nLFxuICAgIGZpcnN0RGF5T2ZXZWVrOiAxLFxuICAgIGRhdGVGb3JtYXQ6ICdkZC9tbS95eScsXG4gICAgYWNjZXB0OiAnU8OtJyxcbiAgICByZWplY3Q6ICdObycsXG4gICAgY2hvb3NlOiAnRWxlZ2lyJyxcbiAgICB1cGxvYWQ6ICdTdWJpcicsXG4gICAgY2FuY2VsOiAnQ2FuY2VsYXInLFxuICAgIHBlbmRpbmc6ICdQZW5kaWVudGUnLFxuICAgIGVtcHR5TWVzc2FnZTogJ05vIHNlIGVuY29udHJhcm9uIHJlc3VsdGFkb3MnLFxuICAgIGVtcHR5RmlsdGVyTWVzc2FnZTogJ05vIHNlIGVuY29udHJhcm9uIHJlc3VsdGFkb3MnLFxuICAgIGNob29zZVllYXI6ICdFbGVnaXIgYcOxbycsXG4gICAgY2hvb3NlTW9udGg6ICdFbGVnaXIgbWVzJyxcbiAgICBjaG9vc2VEYXRlOiAnRWxlZ2lyIGZlY2hhJyxcbiAgICBwcmV2RGVjYWRlOiAnRMOpY2FkYSBhbnRlcmlvcicsXG4gICAgbmV4dERlY2FkZTogJ1NpZ3VpZW50ZSBkw6ljYWRhJyxcbiAgICBwcmV2WWVhcjogJ0HDsW8gYW50ZXJpb3InLFxuICAgIG5leHRZZWFyOiAnU2lndWllbnRlIGHDsW8nLFxuICAgIHByZXZNb250aDogJ01lcyBhbnRlcmlvcicsXG4gICAgbmV4dE1vbnRoOiAnU2lndWllbnRlIG1lcycsXG4gICAgcHJldkhvdXI6ICdIb3JhIGFudGVyaW9yJyxcbiAgICBuZXh0SG91cjogJ1NpZ3VpZW50ZSBob3JhJyxcbiAgICBwcmV2TWludXRlOiAnTWludXRvIGFudGVyaW9yJyxcbiAgICBuZXh0TWludXRlOiAnU2lndWllbnRlIG1pbnV0bycsXG4gICAgcHJldlNlY29uZDogJ1NlZ3VuZG8gYW50ZXJpb3InLFxuICAgIG5leHRTZWNvbmQ6ICdTaWd1aWVudGUgc2VndW5kbycsXG4gICAgYW06ICdBTScsXG4gICAgcG06ICdQTSdcbiAgfVxufTtcblxuLyoqXG4gKiBGb3JtYXRvcyBkZSBkYXRhIHBvciBpZGlvbWEgcGFyYSB1c28gZW0gcGlwZXMgZSBmb3JtYXRhw6fDo29cbiAqL1xuY29uc3QgREFURV9GT1JNQVRTOiBSZWNvcmQ8U3VwcG9ydGVkTGFuZ3VhZ2UsIHN0cmluZz4gPSB7XG4gICdwdC1CUic6ICdkZC9NTS95eXl5JyxcbiAgJ2VuLVVTJzogJ01NL2RkL3l5eXknLFxuICAnZXMtRVMnOiAnZGQvTU0veXl5eSdcbn07XG5cbi8qKlxuICogTG9jYWxlcyBkbyBJbnRsIHBvciBpZGlvbWFcbiAqL1xuY29uc3QgSU5UTF9MT0NBTEVTOiBSZWNvcmQ8U3VwcG9ydGVkTGFuZ3VhZ2UsIHN0cmluZz4gPSB7XG4gICdwdC1CUic6ICdwdC1CUicsXG4gICdlbi1VUyc6ICdlbi1VUycsXG4gICdlcy1FUyc6ICdlcy1FUydcbn07XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIExvY2FsZVNlcnZpY2Uge1xuICBwcml2YXRlIGluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwcmltZU5HOiBQcmltZU5HLFxuICAgIHByaXZhdGUgdHJhbnNsYXRpb25TZXJ2aWNlOiBUcmFuc2xhdGlvblNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBwcml2YXRlIGluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHJldHVybjtcbiAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcblxuICAgIC8vIEFwbGljYXIgbG9jYWxlIGluaWNpYWxcbiAgICB0aGlzLmFwcGx5TG9jYWxlKHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmdldEN1cnJlbnRMYW5ndWFnZSgpKTtcblxuICAgIC8vIFJlYWdpciBhIG11ZGFuw6dhcyBkZSBpZGlvbWFcbiAgICB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS5jdXJyZW50TGFuZ3VhZ2UkLnN1YnNjcmliZSgobGFuZ3VhZ2UpID0+IHtcbiAgICAgIHRoaXMuYXBwbHlMb2NhbGUobGFuZ3VhZ2UpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUxvY2FsZShsYW5ndWFnZTogU3VwcG9ydGVkTGFuZ3VhZ2UpOiB2b2lkIHtcbiAgICBjb25zdCBsb2NhbGUgPSBQUklNRU5HX0xPQ0FMRVtsYW5ndWFnZV0gfHwgUFJJTUVOR19MT0NBTEVbJ3B0LUJSJ107XG4gICAgdGhpcy5wcmltZU5HLnNldFRyYW5zbGF0aW9uKGxvY2FsZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0b3JuYSBvIGZvcm1hdG8gZGUgZGF0YSBQcmltZU5HIChwLWNhbGVuZGFyKSBwYXJhIG8gaWRpb21hIGF0dWFsXG4gICAqL1xuICBnZXRQcmltZU5HRGF0ZUZvcm1hdCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGxhbmd1YWdlID0gdGhpcy50cmFuc2xhdGlvblNlcnZpY2UuZ2V0Q3VycmVudExhbmd1YWdlKCk7XG4gICAgcmV0dXJuIFBSSU1FTkdfTE9DQUxFW2xhbmd1YWdlXT8uZGF0ZUZvcm1hdCB8fCAnZGQvbW0veXknO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldG9ybmEgbyBmb3JtYXRvIGRlIGRhdGEgQW5ndWxhciAoRGF0ZVBpcGUpIHBhcmEgbyBpZGlvbWEgYXR1YWxcbiAgICovXG4gIGdldERhdGVGb3JtYXQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gREFURV9GT1JNQVRTW3RoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmdldEN1cnJlbnRMYW5ndWFnZSgpXSB8fCBEQVRFX0ZPUk1BVFNbJ3B0LUJSJ107XG4gIH1cblxuICAvKipcbiAgICogUmV0b3JuYSBvIGxvY2FsZSBJbnRsIHBhcmEgbyBpZGlvbWEgYXR1YWxcbiAgICovXG4gIGdldEludGxMb2NhbGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSU5UTF9MT0NBTEVTW3RoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmdldEN1cnJlbnRMYW5ndWFnZSgpXSB8fCBJTlRMX0xPQ0FMRVNbJ3B0LUJSJ107XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0YSB1bWEgZGF0YSBzdHJpbmcgKHl5eXktTU0tZGQgb3UgSVNPKSBwYXJhIG8gZm9ybWF0byBkbyBpZGlvbWEgYXR1YWxcbiAgICovXG4gIGZvcm1hdERhdGUodmFsdWU6IHN0cmluZyB8IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gJyc7XG4gICAgY29uc3QgZGF0ZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyBuZXcgRGF0ZSh2YWx1ZSArICh2YWx1ZS5sZW5ndGggPT09IDEwID8gJ1QwMDowMDowMCcgOiAnJykpIDogdmFsdWU7XG4gICAgaWYgKGlzTmFOKGRhdGUuZ2V0VGltZSgpKSkgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMuZ2V0SW50bExvY2FsZSgpKTtcbiAgfVxufVxuIl19