@softpak/components 0.1.7 → 0.1.8-beta.10

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 (40) hide show
  1. package/esm2022/spx-change-details/spx-change-details.component.mjs +92 -85
  2. package/esm2022/spx-channel-selection/src/spx-welcome.component.mjs +42 -42
  3. package/esm2022/spx-form-view/public-api.mjs +4 -1
  4. package/esm2022/spx-form-view/spx-form-button-type.enum.mjs +6 -0
  5. package/esm2022/spx-form-view/spx-form-button.interface.mjs +2 -0
  6. package/esm2022/spx-form-view/spx-form-view.component.mjs +29 -7
  7. package/esm2022/spx-form-view/spx-form.interface.mjs +2 -0
  8. package/esm2022/spx-pagination/public-api.mjs +2 -0
  9. package/esm2022/spx-pagination/softpak-components-spx-pagination.mjs +5 -0
  10. package/esm2022/spx-pagination/spx-pagination.component.mjs +33 -0
  11. package/esm2022/spx-stock-info/public-api.mjs +3 -0
  12. package/esm2022/spx-stock-info/softpak-components-spx-stock-info.mjs +5 -0
  13. package/esm2022/spx-stock-info/spx-stock-info-value.interface.mjs +2 -0
  14. package/esm2022/spx-stock-info/spx-stock-info.component.mjs +243 -0
  15. package/fesm2022/softpak-components-spx-change-details.mjs +91 -84
  16. package/fesm2022/softpak-components-spx-change-details.mjs.map +1 -1
  17. package/fesm2022/softpak-components-spx-channel-selection.mjs +41 -41
  18. package/fesm2022/softpak-components-spx-channel-selection.mjs.map +1 -1
  19. package/fesm2022/softpak-components-spx-form-view.mjs +35 -7
  20. package/fesm2022/softpak-components-spx-form-view.mjs.map +1 -1
  21. package/fesm2022/softpak-components-spx-pagination.mjs +40 -0
  22. package/fesm2022/softpak-components-spx-pagination.mjs.map +1 -0
  23. package/fesm2022/softpak-components-spx-stock-info.mjs +250 -0
  24. package/fesm2022/softpak-components-spx-stock-info.mjs.map +1 -0
  25. package/package.json +24 -12
  26. package/spx-change-details/spx-change-details.component.d.ts +12 -16
  27. package/spx-channel-selection/src/spx-welcome.component.d.ts +6 -7
  28. package/spx-form-view/public-api.d.ts +3 -0
  29. package/spx-form-view/spx-form-button-type.enum.d.ts +4 -0
  30. package/spx-form-view/spx-form-button.interface.d.ts +8 -0
  31. package/spx-form-view/spx-form-view.component.d.ts +3 -2
  32. package/spx-form-view/spx-form.interface.d.ts +6 -0
  33. package/spx-pagination/index.d.ts +5 -0
  34. package/spx-pagination/public-api.d.ts +1 -0
  35. package/spx-pagination/spx-pagination.component.d.ts +13 -0
  36. package/spx-stock-info/index.d.ts +5 -0
  37. package/spx-stock-info/public-api.d.ts +2 -0
  38. package/spx-stock-info/spx-stock-info-value.interface.d.ts +10 -0
  39. package/spx-stock-info/spx-stock-info.component.d.ts +59 -0
  40. package/tailwind.css +1 -1
@@ -98,7 +98,7 @@ export class SpxFormViewComponent {
98
98
  this.typeOverlayNumber = SpxInputTypeEnum.overlayNumber;
99
99
  }
100
100
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: SpxFormViewComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
101
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: SpxFormViewComponent, isStandalone: true, selector: "spx-form-view", inputs: { spxFormGroup: "spxFormGroup", spxSections: "spxSections", spxSuggestions: "spxSuggestions" }, outputs: { spxBlur: "spxBlur", spxClick: "spxClick", spxSearch: "spxSearch" }, viewQueries: [{ propertyName: "spxInputs", predicate: SpxInputComponent, descendants: true }], ngImport: i0, template: `<spx-autocomplete-search
101
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: SpxFormViewComponent, isStandalone: true, selector: "spx-form-view", inputs: { spxFormGroup: "spxFormGroup", spxForm: "spxForm", spxSuggestions: "spxSuggestions" }, outputs: { spxBlur: "spxBlur", spxClick: "spxClick", spxSearch: "spxSearch" }, viewQueries: [{ propertyName: "spxInputs", predicate: SpxInputComponent, descendants: true }], ngImport: i0, template: `<spx-autocomplete-search
102
102
  *ngIf="autocompleteField"
103
103
  [spxField]="autocompleteField"
104
104
  [spxSuggestions]="this.spxSuggestions[autocompleteField.key]"
@@ -110,8 +110,9 @@ export class SpxFormViewComponent {
110
110
  (spxSearch)="onAutocompleteSearch($event)"
111
111
  (spxSubmit)="onAutocompleteSave($event)">
112
112
  </spx-autocomplete-search>
113
+ <div class="flex flex-col gap-3">
113
114
  <spx-form-section
114
- *ngFor="let spxSection of spxSections; let spxSectionIndex = index;"
115
+ *ngFor="let spxSection of spxForm.sections; let spxSectionIndex = index;"
115
116
  [spxShowTitle]="!spxSection.showTitle || spxSection.showTitle()"
116
117
  [spxIndex]="spxSectionIndex + 1"
117
118
  [spxTitle]="spxSection.title ? (spxSection.title() | translate | capitalize) : undefined">
@@ -162,7 +163,17 @@ export class SpxFormViewComponent {
162
163
  </spx-input>
163
164
  </ng-container>
164
165
  </ng-container>
165
- </spx-form-section>`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: SpxAutocompleteSearchComponent, selector: "spx-autocomplete-search", inputs: ["spxSuggestions", "spxField", "txtOptions", "txtQuery", "txtSubmit", "spxValuePair"], outputs: ["spxCancel", "spxSearch", "spxSubmit"] }, { kind: "component", type: SpxButtonComponent, selector: "spx-button", inputs: ["spxDisabled", "spxClass", "spxClassObject", "spxForm", "spxFullHeight", "spxFullWidth", "spxSeverity", "spxSize", "spxTabIndex", "spxType"], outputs: ["spxClick"] }, { kind: "pipe", type: SpxCapitalizePipe, name: "capitalize" }, { kind: "component", type: SpxFormSectionComponent, selector: "spx-form-section", inputs: ["spxIndex", "spxIndexSecondary", "spxTitle", "spxShowTitle"] }, { kind: "component", type: SpxInputComponent, selector: "spx-input", inputs: ["spxLabel", "spxMax", "spxMin", "spxName", "spxReadonly", "spxAutofocus", "spxInputMode", "spxPattern", "spxRequired", "spxSelectMonth", "spxSelectDay", "spxShowEdit", "spxShowHelp", "spxShowLabel", "spxCompact", "spxShowClear", "spxShowSearch", "spxShowValidationMessages", "spxStep", "spxSuggestions", "spxType", "spxValidators", "value", "spxCapitalize", "spxFocused"], outputs: ["spxBlur", "spxClear", "spxChange", "spxFocus", "spxEdit", "spxHelp", "spxSearch"] }, { kind: "component", type: SpxValidateControlComponent, selector: "spx-validate-control", inputs: ["control", "label", "submitTried"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
166
+ </spx-form-section>
167
+
168
+ <spx-button *ngFor="let spxButton of spxForm.buttons"
169
+ [spxFullWidth]="true"
170
+ [spxSeverity]="spxButton.severity"
171
+ [spxType]="spxButton.type"
172
+ (spxClick)="spxButton.onClick ? spxButton.onClick() : undefined">
173
+ {{ ((spxButton && spxButton.label) ? spxButton.label() : '') | translate | capitalize }}
174
+ </spx-button>
175
+ </div>
176
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: SpxAutocompleteSearchComponent, selector: "spx-autocomplete-search", inputs: ["spxSuggestions", "spxField", "txtOptions", "txtQuery", "txtSubmit", "spxValuePair"], outputs: ["spxCancel", "spxSearch", "spxSubmit"] }, { kind: "component", type: SpxButtonComponent, selector: "spx-button", inputs: ["spxDisabled", "spxClass", "spxClassObject", "spxForm", "spxFullHeight", "spxFullWidth", "spxSeverity", "spxSize", "spxTabIndex", "spxType"], outputs: ["spxClick"] }, { kind: "pipe", type: SpxCapitalizePipe, name: "capitalize" }, { kind: "component", type: SpxFormSectionComponent, selector: "spx-form-section", inputs: ["spxIndex", "spxIndexSecondary", "spxTitle", "spxShowTitle"] }, { kind: "component", type: SpxInputComponent, selector: "spx-input", inputs: ["spxLabel", "spxMax", "spxMin", "spxName", "spxReadonly", "spxAutofocus", "spxInputMode", "spxPattern", "spxRequired", "spxSelectMonth", "spxSelectDay", "spxShowEdit", "spxShowHelp", "spxShowLabel", "spxCompact", "spxShowClear", "spxShowSearch", "spxShowValidationMessages", "spxStep", "spxSuggestions", "spxType", "spxValidators", "value", "spxCapitalize", "spxFocused"], outputs: ["spxBlur", "spxClear", "spxChange", "spxFocus", "spxEdit", "spxHelp", "spxSearch"] }, { kind: "component", type: SpxValidateControlComponent, selector: "spx-validate-control", inputs: ["control", "label", "submitTried"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
166
177
  }
167
178
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: SpxFormViewComponent, decorators: [{
168
179
  type: Component,
@@ -195,8 +206,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImpor
195
206
  (spxSearch)="onAutocompleteSearch($event)"
196
207
  (spxSubmit)="onAutocompleteSave($event)">
197
208
  </spx-autocomplete-search>
209
+ <div class="flex flex-col gap-3">
198
210
  <spx-form-section
199
- *ngFor="let spxSection of spxSections; let spxSectionIndex = index;"
211
+ *ngFor="let spxSection of spxForm.sections; let spxSectionIndex = index;"
200
212
  [spxShowTitle]="!spxSection.showTitle || spxSection.showTitle()"
201
213
  [spxIndex]="spxSectionIndex + 1"
202
214
  [spxTitle]="spxSection.title ? (spxSection.title() | translate | capitalize) : undefined">
@@ -247,11 +259,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImpor
247
259
  </spx-input>
248
260
  </ng-container>
249
261
  </ng-container>
250
- </spx-form-section>`,
262
+ </spx-form-section>
263
+
264
+ <spx-button *ngFor="let spxButton of spxForm.buttons"
265
+ [spxFullWidth]="true"
266
+ [spxSeverity]="spxButton.severity"
267
+ [spxType]="spxButton.type"
268
+ (spxClick)="spxButton.onClick ? spxButton.onClick() : undefined">
269
+ {{ ((spxButton && spxButton.label) ? spxButton.label() : '') | translate | capitalize }}
270
+ </spx-button>
271
+ </div>
272
+ `,
251
273
  }]
252
274
  }], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { spxFormGroup: [{
253
275
  type: Input
254
- }], spxSections: [{
276
+ }], spxForm: [{
255
277
  type: Input
256
278
  }], spxSuggestions: [{
257
279
  type: Input
@@ -265,4 +287,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImpor
265
287
  type: ViewChildren,
266
288
  args: [SpxInputComponent]
267
289
  }] } });
268
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LWZvcm0tdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWZvcm0tdmlldy9zcHgtZm9ybS12aWV3LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUF3QixZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0csT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFnQixNQUFNLGdDQUFnQyxDQUFDO0FBQ25HLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBMkMsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0csT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDckYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDakYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7O0FBcUZwRSxNQUFNLE9BQU8sb0JBQW9CO0lBb0IvQixZQUFZLENBQUMsR0FBVztRQUN0QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDbEUsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLEtB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RWxCLFdBQVcsc0lBQ1gsbUJBQW1CLGtOQUVuQixJQUFJLDZGQUNKLEtBQUssbUhBQ0wsOEJBQThCLHFOQUM5QixrQkFBa0IsZ09BQ2xCLGlCQUFpQixtREFDakIsdUJBQXVCLG9JQUN2QixpQkFBaUIsa2hCQUNqQiwyQkFBMkIsNkdBQzNCLGVBQWU7OzJGQW9FTixvQkFBb0I7a0JBbkZoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFO3dCQUNQLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixRQUFRO3dCQUNSLElBQUk7d0JBQ0osS0FBSzt3QkFDTCw4QkFBOEI7d0JBQzlCLGtCQUFrQjt3QkFDbEIsaUJBQWlCO3dCQUNqQix1QkFBdUI7d0JBQ3ZCLGlCQUFpQjt3QkFDakIsMkJBQTJCO3dCQUMzQixlQUFlO3FCQUNoQjtvQkFDRCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7c0JBZ0VVO2lCQUNyQjtnRkFFVSxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDSSxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDMEIsU0FBUztzQkFBekMsWUFBWTt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBKc29uUGlwZSwgTmdGb3IsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNweEZvcm1TZWN0aW9uSSB9IGZyb20gJy4vc3B4LWZvcm0tc2VjdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU3B4Rm9ybVNlY3Rpb25Db21wb25lbnQgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1mb3JtLXNlY3Rpb24nO1xuaW1wb3J0IHsgU3B4SW5wdXRDb21wb25lbnQsIFNweElucHV0VHlwZUVudW0sIFNweFZhbHVlUGFpciB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWlucHV0cyc7XG5pbXBvcnQgeyBTcHhDYXBpdGFsaXplUGlwZSB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWNhcGl0YWxpemUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNweEZvcm1GaWVsZEkgfSBmcm9tICcuL3NweC1mb3JtLWZpZWxkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTcHhBdXRvY29tcGxldGVTZWFyY2hDb21wb25lbnQgfSBmcm9tICcuL3NweC1hdXRvY29tcGxldGUtc2VhcmNoLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTcHhWYWxpZGF0ZUNvbnRyb2xDb21wb25lbnQgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC12YWxpZGF0aW9uJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU3B4QnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtYnV0dG9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3B4LWZvcm0tdmlldycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEpzb25QaXBlLFxuICAgIE5nSWYsXG4gICAgTmdGb3IsXG4gICAgU3B4QXV0b2NvbXBsZXRlU2VhcmNoQ29tcG9uZW50LFxuICAgIFNweEJ1dHRvbkNvbXBvbmVudCxcbiAgICBTcHhDYXBpdGFsaXplUGlwZSxcbiAgICBTcHhGb3JtU2VjdGlvbkNvbXBvbmVudCxcbiAgICBTcHhJbnB1dENvbXBvbmVudCxcbiAgICBTcHhWYWxpZGF0ZUNvbnRyb2xDb21wb25lbnQsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICBdLFxuICB0ZW1wbGF0ZTogYDxzcHgtYXV0b2NvbXBsZXRlLXNlYXJjaFxuICAgICpuZ0lmPVwiYXV0b2NvbXBsZXRlRmllbGRcIlxuICAgIFtzcHhGaWVsZF09XCJhdXRvY29tcGxldGVGaWVsZFwiXG4gICAgW3NweFN1Z2dlc3Rpb25zXT1cInRoaXMuc3B4U3VnZ2VzdGlvbnNbYXV0b2NvbXBsZXRlRmllbGQua2V5XVwiXG4gICAgW3NweFZhbHVlUGFpcl09XCIkYW55KHRoaXMuc3B4Rm9ybUdyb3VwLmdldChhdXRvY29tcGxldGVGaWVsZC5rZXkpKS52YWx1ZVwiXG4gICAgW3R4dE9wdGlvbnNdPVwiJ09wdGlvbnMnXCJcbiAgICBbdHh0UXVlcnldPVwiJ1F1ZXJ5J1wiXG4gICAgW3R4dFN1Ym1pdF09XCInU2F2ZSdcIlxuICAgIChzcHhDYW5jZWwpPVwib25BdXRvY29tcGxldGVDYW5jZWwoKVwiXG4gICAgKHNweFNlYXJjaCk9XCJvbkF1dG9jb21wbGV0ZVNlYXJjaCgkZXZlbnQpXCJcbiAgICAoc3B4U3VibWl0KT1cIm9uQXV0b2NvbXBsZXRlU2F2ZSgkZXZlbnQpXCI+XG4gIDwvc3B4LWF1dG9jb21wbGV0ZS1zZWFyY2g+XG4gICAgPHNweC1mb3JtLXNlY3Rpb25cbiAgICAqbmdGb3I9XCJsZXQgc3B4U2VjdGlvbiBvZiBzcHhTZWN0aW9uczsgbGV0IHNweFNlY3Rpb25JbmRleCA9IGluZGV4O1wiXG4gICAgW3NweFNob3dUaXRsZV09XCIhc3B4U2VjdGlvbi5zaG93VGl0bGUgfHwgc3B4U2VjdGlvbi5zaG93VGl0bGUoKVwiXG4gICAgW3NweEluZGV4XT1cInNweFNlY3Rpb25JbmRleCArIDFcIlxuICAgIFtzcHhUaXRsZV09XCJzcHhTZWN0aW9uLnRpdGxlID8gKHNweFNlY3Rpb24udGl0bGUoKSB8IHRyYW5zbGF0ZSB8IGNhcGl0YWxpemUpIDogdW5kZWZpbmVkXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3B4RmllbGQgb2Ygc3B4U2VjdGlvbi5maWVsZHM7IGxldCBzcHhGaWVsZEluZGV4ID0gaW5kZXg7XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3B4RmllbGQuc2hvdyA9PT0gdW5kZWZpbmVkIHx8IHNweEZpZWxkLnNob3coKVwiPlxuICAgICAgICA8c3B4LWJ1dHRvbiAqbmdJZj1cInNweEZpZWxkLnR5cGUoKSA9PT0gdHlwZUJ1dHRvblwiXG4gICAgICAgICAgW3NweEZ1bGxXaWR0aF09XCJ0cnVlXCJcbiAgICAgICAgICBbc3B4U2V2ZXJpdHldPVwic3B4RmllbGQuc2V2ZXJpdHkgPyBzcHhGaWVsZC5zZXZlcml0eSgpIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICBbc3B4VHlwZV09XCInYnV0dG9uJ1wiXG4gICAgICAgICAgKHNweENsaWNrKT1cIm9uQ2xpY2soc3B4RmllbGQpXCJcbiAgICAgICAgICA+e3sgKHNweEZpZWxkLmxhYmVsID8gc3B4RmllbGQubGFiZWwoKSA6IHNweEZpZWxkLmtleSkgfCB0cmFuc2xhdGUgIHwgY2FwaXRhbGl6ZSB9fTwvc3B4LWJ1dHRvbj5cblxuICAgICAgICA8c3B4LWlucHV0XG4gICAgICAgICAgKm5nSWY9XCJzcHhGaWVsZC50eXBlKCkgPT09IHR5cGVPdmVybGF5IHx8IHNweEZpZWxkLnR5cGUoKSA9PT0gdHlwZU92ZXJsYXlOdW1iZXIgfHwgc3B4RmllbGQudHlwZSgpID09PSB0eXBlRmxvYXQgfHwgc3B4RmllbGQudHlwZSgpID09PSB0eXBlTnVtYmVyIHx8IHNweEZpZWxkLnR5cGUoKSA9PT0gdHlwZVRleHQgfHwgc3B4RmllbGQudHlwZSgpID09PSB0eXBlQXV0b2NvbXBsZXRlIHx8IHNweEZpZWxkLnR5cGUoKSA9PT0gdHlwZU51bWVyaWNLZXlib2FyZFwiXG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cIiRhbnkodGhpcy5zcHhGb3JtR3JvdXAuZ2V0KHNweEZpZWxkLmtleSkpXCJcbiAgICAgICAgICBbc3B4QXV0b2ZvY3VzXT1cInNweEZpZWxkLmF1dG9mb2N1cyA/IHNweEZpZWxkLmF1dG9mb2N1cygpIDogZmFsc2VcIlxuICAgICAgICAgIFtzcHhDYXBpdGFsaXplXT1cInNweEZpZWxkLmNhcGl0YWxpemUgPyBzcHhGaWVsZC5jYXBpdGFsaXplKCkgOiBmYWxzZVwiXG4gICAgICAgICAgW3NweExhYmVsXT1cIihzcHhGaWVsZC5sYWJlbCA/IHNweEZpZWxkLmxhYmVsKCkgOiBzcHhGaWVsZC5rZXkpIHwgdHJhbnNsYXRlICB8IGNhcGl0YWxpemVcIlxuICAgICAgICAgIFtzcHhOYW1lXT1cInNweEZpZWxkLmtleVwiXG4gICAgICAgICAgW3NweFBhdHRlcm5dPVwic3B4RmllbGQudHlwZSgpID09PSB0eXBlTnVtZXJpY0tleWJvYXJkID8gJ1xcXFxkKicgOiB1bmRlZmluZWRcIlxuICAgICAgICAgIFtzcHhSZWFkb25seV09XCJzcHhGaWVsZC5yZWFkb25seSA/IHNweEZpZWxkLnJlYWRvbmx5KCkgOiBmYWxzZVwiXG4gICAgICAgICAgW3NweFJlcXVpcmVkXT1cImhhc1JlcXVpcmVkRmllbGQodGhpcy5zcHhGb3JtR3JvdXAuZ2V0KHNweEZpZWxkLmtleSkhKVwiXG4gICAgICAgICAgW3NweFNob3dTZWFyY2hdPVwic3B4RmllbGQudHlwZSgpID09PSB0eXBlQXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICBbc3B4U2hvd0hlbHBdPVwiZmFsc2VcIlxuICAgICAgICAgIFtzcHhTaG93VmFsaWRhdGlvbk1lc3NhZ2VzXT1cInRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpISAmJiB0aGlzLnNweEZvcm1Hcm91cC5nZXQoc3B4RmllbGQua2V5KSEuZXJyb3JzICYmIHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpIS50b3VjaGVkXCJcbiAgICAgICAgICBbc3B4U3RlcF09XCJzcHhGaWVsZC5zdGVwID8gc3B4RmllbGQuc3RlcCgpIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICBbc3B4VHlwZV09XCJzcHhGaWVsZC50eXBlKClcIlxuICAgICAgICAgIFtzcHhWYWxpZGF0b3JzXT1cImdldFJhd1ZhbGlkYXRvcnModGhpcy5zcHhGb3JtR3JvdXAuZ2V0KHNweEZpZWxkLmtleSkhKVwiXG4gICAgICAgICAgW3NweFN1Z2dlc3Rpb25zXT1cInNweEZpZWxkLnN1Z2dlc3Rpb25zRml4ZWQgPyBzcHhGaWVsZC5zdWdnZXN0aW9uc0ZpeGVkKCkgOiB0aGlzLnNweFN1Z2dlc3Rpb25zW3NweEZpZWxkLmtleV1cIlxuICAgICAgICAgIChzcHhCbHVyKT1cIm9uQmx1cihzcHhGaWVsZClcIlxuICAgICAgICAgIChzcHhTZWFyY2gpPVwib25TZWFyY2goc3B4RmllbGQpXCI+XG4gICAgICAgICAgPHNweC12YWxpZGF0ZS1jb250cm9sIFtjb250cm9sXT1cIiRhbnkodGhpcy5zcHhGb3JtR3JvdXAuZ2V0KHNweEZpZWxkLmtleSkpXCIgW2xhYmVsXT1cIihzcHhGaWVsZC5sYWJlbCA/IHNweEZpZWxkLmxhYmVsKCkgOiBzcHhGaWVsZC5rZXkpfCB0cmFuc2xhdGUgIHwgY2FwaXRhbGl6ZVwiPjwvc3B4LXZhbGlkYXRlLWNvbnRyb2w+XG4gICAgICAgIDwvc3B4LWlucHV0PlxuXG4gICAgICAgIDxzcHgtaW5wdXRcbiAgICAgICAgICAqbmdJZj1cInNweEZpZWxkLnR5cGUoKSA9PT0gdHlwZVJhZGlvXCJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiJGFueSh0aGlzLnNweEZvcm1Hcm91cC5nZXQoc3B4RmllbGQua2V5KSlcIlxuICAgICAgICAgIFtzcHhMYWJlbF09XCIoc3B4RmllbGQubGFiZWwgPyBzcHhGaWVsZC5sYWJlbCgpIDogc3B4RmllbGQua2V5KSB8IHRyYW5zbGF0ZSB8IGNhcGl0YWxpemVcIlxuICAgICAgICAgIFtzcHhOYW1lXT1cInNweEZpZWxkLmtleVwiXG4gICAgICAgICAgW3NweFJlYWRvbmx5XT1cInNweEZpZWxkLnJlYWRvbmx5ID8gc3B4RmllbGQucmVhZG9ubHkoKSA6IGZhbHNlXCJcbiAgICAgICAgICBbc3B4UmVxdWlyZWRdPVwiaGFzUmVxdWlyZWRGaWVsZCh0aGlzLnNweEZvcm1Hcm91cC5nZXQoc3B4RmllbGQua2V5KSEpXCJcbiAgICAgICAgICBbc3B4U2hvd0hlbHBdPVwiZmFsc2VcIlxuICAgICAgICAgIFtzcHhTaG93VmFsaWRhdGlvbk1lc3NhZ2VzXT1cInRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpISAmJiB0aGlzLnNweEZvcm1Hcm91cC5nZXQoc3B4RmllbGQua2V5KSEuZXJyb3JzICYmIHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpIS50b3VjaGVkXCJcbiAgICAgICAgICBbc3B4U3VnZ2VzdGlvbnNdPVwic3B4RmllbGQuc3VnZ2VzdGlvbnNGaXhlZCA/IHNweEZpZWxkLnN1Z2dlc3Rpb25zRml4ZWQoKSA6IHRoaXMuc3B4U3VnZ2VzdGlvbnNbc3B4RmllbGQua2V5XVwiXG4gICAgICAgICAgW3NweFR5cGVdPVwidHlwZVJhZGlvXCJcbiAgICAgICAgICBbc3B4VmFsaWRhdG9yc109XCJnZXRSYXdWYWxpZGF0b3JzKHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpISlcIj5cbiAgICAgICAgICA8c3B4LXZhbGlkYXRlLWNvbnRyb2wgW2NvbnRyb2xdPVwiJGFueSh0aGlzLnNweEZvcm1Hcm91cC5nZXQoc3B4RmllbGQua2V5KSlcIiBbbGFiZWxdPVwiKHNweEZpZWxkLmxhYmVsID8gc3B4RmllbGQubGFiZWwoKSA6IHNweEZpZWxkLmtleSkgfCB0cmFuc2xhdGUgfCBjYXBpdGFsaXplXCI+PC9zcHgtdmFsaWRhdGUtY29udHJvbD5cbiAgICAgICAgPC9zcHgtaW5wdXQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9zcHgtZm9ybS1zZWN0aW9uPmAsXG59KVxuZXhwb3J0IGNsYXNzIFNweEZvcm1WaWV3Q29tcG9uZW50IHtcbiAgQElucHV0KCkgc3B4Rm9ybUdyb3VwITogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBzcHhTZWN0aW9ucyE6IFNweEZvcm1TZWN0aW9uSVtdO1xuICBASW5wdXQoKSBzcHhTdWdnZXN0aW9ucyE6IGFueTtcbiAgQE91dHB1dCgpIHNweEJsdXI6IEV2ZW50RW1pdHRlcjx7IGZpZWxkOiBTcHhGb3JtRmllbGRJLCB2YWx1ZVBhaXI6IFNweFZhbHVlUGFpcjxhbnk+IH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7IGZpZWxkOiBTcHhGb3JtRmllbGRJLCB2YWx1ZVBhaXI6IFNweFZhbHVlUGFpcjxhbnk+IH0+KCk7XG4gIEBPdXRwdXQoKSBzcHhDbGljazogRXZlbnRFbWl0dGVyPHsgZmllbGQ6IFNweEZvcm1GaWVsZEkgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHsgZmllbGQ6IFNweEZvcm1GaWVsZEkgfT4oKTtcbiAgQE91dHB1dCgpIHNweFNlYXJjaDogRXZlbnRFbWl0dGVyPHsgZmllbGQ6IFNweEZvcm1GaWVsZEksIHZhbHVlUGFpcjogU3B4VmFsdWVQYWlyPGFueT4gfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHsgZmllbGQ6IFNweEZvcm1GaWVsZEksIHZhbHVlUGFpcjogU3B4VmFsdWVQYWlyPGFueT4gfT4oKTtcbiAgQFZpZXdDaGlsZHJlbihTcHhJbnB1dENvbXBvbmVudCkgc3B4SW5wdXRzITogUXVlcnlMaXN0PFNweElucHV0Q29tcG9uZW50PjtcbiAgYXV0b2NvbXBsZXRlRmllbGQ/OiBTcHhGb3JtRmllbGRJO1xuXG4gIHR5cGVBdXRvY29tcGxldGUgPSBTcHhJbnB1dFR5cGVFbnVtLmF1dG9jb21wbGV0ZTtcbiAgdHlwZUJ1dHRvbiA9IFNweElucHV0VHlwZUVudW0uYnV0dG9uO1xuICB0eXBlRmxvYXQgPSBTcHhJbnB1dFR5cGVFbnVtLmZsb2F0O1xuICB0eXBlTnVtYmVyID0gU3B4SW5wdXRUeXBlRW51bS5udW1iZXI7XG4gIHR5cGVSYWRpbyA9IFNweElucHV0VHlwZUVudW0ucmFkaW87XG4gIHR5cGVUZXh0ID0gU3B4SW5wdXRUeXBlRW51bS50ZXh0O1xuICB0eXBlTnVtZXJpY0tleWJvYXJkID0gU3B4SW5wdXRUeXBlRW51bS50ZXh0TnVtZXJpY0tleWJvYXJkO1xuICB0eXBlT3ZlcmxheSA9IFNweElucHV0VHlwZUVudW0ub3ZlcmxheTtcbiAgdHlwZU92ZXJsYXlOdW1iZXIgPSBTcHhJbnB1dFR5cGVFbnVtLm92ZXJsYXlOdW1iZXI7XG5cbiAgc2V0QXV0b2ZvY3VzKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgZmllbGQgPSB0aGlzLnNweElucHV0cy5maW5kKGlucHV0ID0+IGlucHV0LnNweE5hbWUgPT09IGtleSk7XG4gICAgaWYgKGZpZWxkKSB7XG4gICAgICBmaWVsZC5zZXRGb2N1c0luKCk7XG4gICAgfVxuICB9XG5cbiAgb25CbHVyKGZpZWxkOiBTcHhGb3JtRmllbGRJKSB7XG4gICAgdGhpcy5zcHhCbHVyLmVtaXQoe1xuICAgICAgZmllbGQsXG4gICAgICB2YWx1ZVBhaXI6IHRoaXMuc3B4Rm9ybUdyb3VwLmdldChmaWVsZC5rZXkpIS52YWx1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIG9uQ2xpY2soZmllbGQ6IFNweEZvcm1GaWVsZEkpIHtcbiAgICB0aGlzLnNweENsaWNrLmVtaXQoe1xuICAgICAgZmllbGQsXG4gICAgfSk7XG4gIH1cblxuICBvbkF1dG9jb21wbGV0ZUNhbmNlbCgpOiB2b2lkIHtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZUZpZWxkID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgb25BdXRvY29tcGxldGVTZWFyY2godmFsdWVQYWlyOiBTcHhWYWx1ZVBhaXI8YW55Pik6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdzcHhGb3JtVmlldyAtIG9uQXV0b2NvbXBsZXRlU2VhcmNoOiAnLCB2YWx1ZVBhaXIsIHRoaXMuYXV0b2NvbXBsZXRlRmllbGQpO1xuICAgIGlmICh0aGlzLmF1dG9jb21wbGV0ZUZpZWxkKSB7XG4gICAgICB0aGlzLnNweFNlYXJjaC5lbWl0KHtcbiAgICAgICAgZmllbGQ6IHRoaXMuYXV0b2NvbXBsZXRlRmllbGQsXG4gICAgICAgIHZhbHVlUGFpcixcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9uQXV0b2NvbXBsZXRlU2F2ZSh2YWx1ZVBhaXI6IFNweFZhbHVlUGFpcjxhbnk+KSB7XG4gICAgdGhpcy5zcHhGb3JtR3JvdXAuZ2V0KHRoaXMuYXV0b2NvbXBsZXRlRmllbGQhLmtleSk/LnNldFZhbHVlKHZhbHVlUGFpcik7XG4gICAgdGhpcy5hdXRvY29tcGxldGVGaWVsZCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIG9uU2VhcmNoKGZpZWxkOiBTcHhGb3JtRmllbGRJKSB7XG4gICAgdGhpcy5hdXRvY29tcGxldGVGaWVsZCA9IGZpZWxkO1xuICB9XG5cbiAgZ2V0UmF3VmFsaWRhdG9ycyhmb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVyc2NvcmUtZGFuZ2xlXG4gICAgcmV0dXJuIChmb3JtQ29udHJvbCBhcyBhbnkpLl9yYXdWYWxpZGF0b3JzO1xuICB9XG5cbiAgaGFzUmVxdWlyZWRGaWVsZChhYnN0cmFjdENvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IGJvb2xlYW4ge1xuICAgIGlmIChhYnN0cmFjdENvbnRyb2wudmFsaWRhdG9yKSB7XG4gICAgICBjb25zdCB2YWxpZGF0b3IgPSBhYnN0cmFjdENvbnRyb2wudmFsaWRhdG9yKHt9IGFzIEFic3RyYWN0Q29udHJvbCk7XG4gICAgICBpZiAodmFsaWRhdG9yICYmIHZhbGlkYXRvclsncmVxdWlyZWQnXSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKChhYnN0cmFjdENvbnRyb2wgYXMgYW55KVsnY29udHJvbHMnXSkge1xuICAgICAgZm9yIChjb25zdCBjb250cm9sTmFtZSBpbiAoYWJzdHJhY3RDb250cm9sIGFzIGFueSlbJ2NvbnRyb2xzJ10pIHtcbiAgICAgICAgaWYgKChhYnN0cmFjdENvbnRyb2wgYXMgYW55KVsnY29udHJvbHMnXVtjb250cm9sTmFtZV0pIHtcbiAgICAgICAgICBpZiAodGhpcy5oYXNSZXF1aXJlZEZpZWxkKChhYnN0cmFjdENvbnRyb2wgYXMgYW55KVsnY29udHJvbHMnXVtjb250cm9sTmFtZV0pKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3RhdGljIGluaXRpYWxGb3JtVmFsdWUoc2VjdGlvbnM6IFNweEZvcm1TZWN0aW9uSVtdKSB7XG4gICAgY29uc3QgZm9ybU9iamVjdDogYW55ID0ge307XG4gICAgc2VjdGlvbnMuZm9yRWFjaChzZWN0aW9uID0+IHtcbiAgICAgIHNlY3Rpb24uZmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICBmb3JtT2JqZWN0W2ZpZWxkLmtleV0gPSBbZmllbGQuZGVmYXVsdFZhbHVlID8gZmllbGQuZGVmYXVsdFZhbHVlKCkgOiBudWxsLCBmaWVsZC52YWxpZGF0b3JzID8gWy4uLmZpZWxkLnZhbGlkYXRvcnMoKV0gOiBbXV07XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gZm9ybU9iamVjdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVGb3JtKGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlciwgc2VjdGlvbnM6IFNweEZvcm1TZWN0aW9uSVtdKTogRm9ybUdyb3VwIHtcbiAgICByZXR1cm4gZm9ybUJ1aWxkZXIuZ3JvdXAodGhpcy5pbml0aWFsRm9ybVZhbHVlKHNlY3Rpb25zKSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIpIHtcbiAgfVxufVxuIl19
290
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LWZvcm0tdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWZvcm0tdmlldy9zcHgtZm9ybS12aWV3LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUF3QixZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0csT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFnQixNQUFNLGdDQUFnQyxDQUFDO0FBQ25HLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBMkMsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0csT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDckYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDakYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7O0FBaUdwRSxNQUFNLE9BQU8sb0JBQW9CO0lBb0IvQixZQUFZLENBQUMsR0FBVztRQUN0QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDbEUsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLEtB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R0EyRVQsMkRBeEZDLFdBQVcsc0lBQ1gsbUJBQW1CLGtOQUVuQixJQUFJLDZGQUNKLEtBQUssbUhBQ0wsOEJBQThCLHFOQUM5QixrQkFBa0IsZ09BQ2xCLGlCQUFpQixtREFDakIsdUJBQXVCLG9JQUN2QixpQkFBaUIsa2hCQUNqQiwyQkFBMkIsNkdBQzNCLGVBQWU7OzJGQStFTixvQkFBb0I7a0JBOUZoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFO3dCQUNQLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixRQUFRO3dCQUNSLElBQUk7d0JBQ0osS0FBSzt3QkFDTCw4QkFBOEI7d0JBQzlCLGtCQUFrQjt3QkFDbEIsaUJBQWlCO3dCQUNqQix1QkFBdUI7d0JBQ3ZCLGlCQUFpQjt3QkFDakIsMkJBQTJCO3dCQUMzQixlQUFlO3FCQUNoQjtvQkFDRCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJFVDtpQkFDRjtnRkFFVSxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNJLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUMwQixTQUFTO3NCQUF6QyxZQUFZO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEpzb25QaXBlLCBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3B4Rm9ybVNlY3Rpb25JIH0gZnJvbSAnLi9zcHgtZm9ybS1zZWN0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTcHhGb3JtU2VjdGlvbkNvbXBvbmVudCB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWZvcm0tc2VjdGlvbic7XG5pbXBvcnQgeyBTcHhJbnB1dENvbXBvbmVudCwgU3B4SW5wdXRUeXBlRW51bSwgU3B4VmFsdWVQYWlyIH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtaW5wdXRzJztcbmltcG9ydCB7IFNweENhcGl0YWxpemVQaXBlIH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtY2FwaXRhbGl6ZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3B4Rm9ybUZpZWxkSSB9IGZyb20gJy4vc3B4LWZvcm0tZmllbGQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFNweEF1dG9jb21wbGV0ZVNlYXJjaENvbXBvbmVudCB9IGZyb20gJy4vc3B4LWF1dG9jb21wbGV0ZS1zZWFyY2guY29tcG9uZW50JztcbmltcG9ydCB7IFNweFZhbGlkYXRlQ29udHJvbENvbXBvbmVudCB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LXZhbGlkYXRpb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBTcHhCdXR0b25Db21wb25lbnQgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1idXR0b24nO1xuaW1wb3J0IHsgU3B4Rm9ybUkgfSBmcm9tICcuL3NweC1mb3JtLmludGVyZmFjZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NweC1mb3JtLXZpZXcnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBKc29uUGlwZSxcbiAgICBOZ0lmLFxuICAgIE5nRm9yLFxuICAgIFNweEF1dG9jb21wbGV0ZVNlYXJjaENvbXBvbmVudCxcbiAgICBTcHhCdXR0b25Db21wb25lbnQsXG4gICAgU3B4Q2FwaXRhbGl6ZVBpcGUsXG4gICAgU3B4Rm9ybVNlY3Rpb25Db21wb25lbnQsXG4gICAgU3B4SW5wdXRDb21wb25lbnQsXG4gICAgU3B4VmFsaWRhdGVDb250cm9sQ29tcG9uZW50LFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgXSxcbiAgdGVtcGxhdGU6IGA8c3B4LWF1dG9jb21wbGV0ZS1zZWFyY2hcbiAgICAqbmdJZj1cImF1dG9jb21wbGV0ZUZpZWxkXCJcbiAgICBbc3B4RmllbGRdPVwiYXV0b2NvbXBsZXRlRmllbGRcIlxuICAgIFtzcHhTdWdnZXN0aW9uc109XCJ0aGlzLnNweFN1Z2dlc3Rpb25zW2F1dG9jb21wbGV0ZUZpZWxkLmtleV1cIlxuICAgIFtzcHhWYWx1ZVBhaXJdPVwiJGFueSh0aGlzLnNweEZvcm1Hcm91cC5nZXQoYXV0b2NvbXBsZXRlRmllbGQua2V5KSkudmFsdWVcIlxuICAgIFt0eHRPcHRpb25zXT1cIidPcHRpb25zJ1wiXG4gICAgW3R4dFF1ZXJ5XT1cIidRdWVyeSdcIlxuICAgIFt0eHRTdWJtaXRdPVwiJ1NhdmUnXCJcbiAgICAoc3B4Q2FuY2VsKT1cIm9uQXV0b2NvbXBsZXRlQ2FuY2VsKClcIlxuICAgIChzcHhTZWFyY2gpPVwib25BdXRvY29tcGxldGVTZWFyY2goJGV2ZW50KVwiXG4gICAgKHNweFN1Ym1pdCk9XCJvbkF1dG9jb21wbGV0ZVNhdmUoJGV2ZW50KVwiPlxuICA8L3NweC1hdXRvY29tcGxldGUtc2VhcmNoPlxuICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtM1wiPlxuICAgIDxzcHgtZm9ybS1zZWN0aW9uXG4gICAgKm5nRm9yPVwibGV0IHNweFNlY3Rpb24gb2Ygc3B4Rm9ybS5zZWN0aW9uczsgbGV0IHNweFNlY3Rpb25JbmRleCA9IGluZGV4O1wiXG4gICAgW3NweFNob3dUaXRsZV09XCIhc3B4U2VjdGlvbi5zaG93VGl0bGUgfHwgc3B4U2VjdGlvbi5zaG93VGl0bGUoKVwiXG4gICAgW3NweEluZGV4XT1cInNweFNlY3Rpb25JbmRleCArIDFcIlxuICAgIFtzcHhUaXRsZV09XCJzcHhTZWN0aW9uLnRpdGxlID8gKHNweFNlY3Rpb24udGl0bGUoKSB8IHRyYW5zbGF0ZSB8IGNhcGl0YWxpemUpIDogdW5kZWZpbmVkXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3B4RmllbGQgb2Ygc3B4U2VjdGlvbi5maWVsZHM7IGxldCBzcHhGaWVsZEluZGV4ID0gaW5kZXg7XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3B4RmllbGQuc2hvdyA9PT0gdW5kZWZpbmVkIHx8IHNweEZpZWxkLnNob3coKVwiPlxuICAgICAgICA8c3B4LWJ1dHRvbiAqbmdJZj1cInNweEZpZWxkLnR5cGUoKSA9PT0gdHlwZUJ1dHRvblwiXG4gICAgICAgICAgW3NweEZ1bGxXaWR0aF09XCJ0cnVlXCJcbiAgICAgICAgICBbc3B4U2V2ZXJpdHldPVwic3B4RmllbGQuc2V2ZXJpdHkgPyBzcHhGaWVsZC5zZXZlcml0eSgpIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICBbc3B4VHlwZV09XCInYnV0dG9uJ1wiXG4gICAgICAgICAgKHNweENsaWNrKT1cIm9uQ2xpY2soc3B4RmllbGQpXCJcbiAgICAgICAgICA+e3sgKHNweEZpZWxkLmxhYmVsID8gc3B4RmllbGQubGFiZWwoKSA6IHNweEZpZWxkLmtleSkgfCB0cmFuc2xhdGUgIHwgY2FwaXRhbGl6ZSB9fTwvc3B4LWJ1dHRvbj5cblxuICAgICAgICA8c3B4LWlucHV0XG4gICAgICAgICAgKm5nSWY9XCJzcHhGaWVsZC50eXBlKCkgPT09IHR5cGVPdmVybGF5IHx8IHNweEZpZWxkLnR5cGUoKSA9PT0gdHlwZU92ZXJsYXlOdW1iZXIgfHwgc3B4RmllbGQudHlwZSgpID09PSB0eXBlRmxvYXQgfHwgc3B4RmllbGQudHlwZSgpID09PSB0eXBlTnVtYmVyIHx8IHNweEZpZWxkLnR5cGUoKSA9PT0gdHlwZVRleHQgfHwgc3B4RmllbGQudHlwZSgpID09PSB0eXBlQXV0b2NvbXBsZXRlIHx8IHNweEZpZWxkLnR5cGUoKSA9PT0gdHlwZU51bWVyaWNLZXlib2FyZFwiXG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cIiRhbnkodGhpcy5zcHhGb3JtR3JvdXAuZ2V0KHNweEZpZWxkLmtleSkpXCJcbiAgICAgICAgICBbc3B4QXV0b2ZvY3VzXT1cInNweEZpZWxkLmF1dG9mb2N1cyA/IHNweEZpZWxkLmF1dG9mb2N1cygpIDogZmFsc2VcIlxuICAgICAgICAgIFtzcHhDYXBpdGFsaXplXT1cInNweEZpZWxkLmNhcGl0YWxpemUgPyBzcHhGaWVsZC5jYXBpdGFsaXplKCkgOiBmYWxzZVwiXG4gICAgICAgICAgW3NweExhYmVsXT1cIihzcHhGaWVsZC5sYWJlbCA/IHNweEZpZWxkLmxhYmVsKCkgOiBzcHhGaWVsZC5rZXkpIHwgdHJhbnNsYXRlICB8IGNhcGl0YWxpemVcIlxuICAgICAgICAgIFtzcHhOYW1lXT1cInNweEZpZWxkLmtleVwiXG4gICAgICAgICAgW3NweFBhdHRlcm5dPVwic3B4RmllbGQudHlwZSgpID09PSB0eXBlTnVtZXJpY0tleWJvYXJkID8gJ1xcXFxkKicgOiB1bmRlZmluZWRcIlxuICAgICAgICAgIFtzcHhSZWFkb25seV09XCJzcHhGaWVsZC5yZWFkb25seSA/IHNweEZpZWxkLnJlYWRvbmx5KCkgOiBmYWxzZVwiXG4gICAgICAgICAgW3NweFJlcXVpcmVkXT1cImhhc1JlcXVpcmVkRmllbGQodGhpcy5zcHhGb3JtR3JvdXAuZ2V0KHNweEZpZWxkLmtleSkhKVwiXG4gICAgICAgICAgW3NweFNob3dTZWFyY2hdPVwic3B4RmllbGQudHlwZSgpID09PSB0eXBlQXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICBbc3B4U2hvd0hlbHBdPVwiZmFsc2VcIlxuICAgICAgICAgIFtzcHhTaG93VmFsaWRhdGlvbk1lc3NhZ2VzXT1cInRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpISAmJiB0aGlzLnNweEZvcm1Hcm91cC5nZXQoc3B4RmllbGQua2V5KSEuZXJyb3JzICYmIHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpIS50b3VjaGVkXCJcbiAgICAgICAgICBbc3B4U3RlcF09XCJzcHhGaWVsZC5zdGVwID8gc3B4RmllbGQuc3RlcCgpIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICBbc3B4VHlwZV09XCJzcHhGaWVsZC50eXBlKClcIlxuICAgICAgICAgIFtzcHhWYWxpZGF0b3JzXT1cImdldFJhd1ZhbGlkYXRvcnModGhpcy5zcHhGb3JtR3JvdXAuZ2V0KHNweEZpZWxkLmtleSkhKVwiXG4gICAgICAgICAgW3NweFN1Z2dlc3Rpb25zXT1cInNweEZpZWxkLnN1Z2dlc3Rpb25zRml4ZWQgPyBzcHhGaWVsZC5zdWdnZXN0aW9uc0ZpeGVkKCkgOiB0aGlzLnNweFN1Z2dlc3Rpb25zW3NweEZpZWxkLmtleV1cIlxuICAgICAgICAgIChzcHhCbHVyKT1cIm9uQmx1cihzcHhGaWVsZClcIlxuICAgICAgICAgIChzcHhTZWFyY2gpPVwib25TZWFyY2goc3B4RmllbGQpXCI+XG4gICAgICAgICAgPHNweC12YWxpZGF0ZS1jb250cm9sIFtjb250cm9sXT1cIiRhbnkodGhpcy5zcHhGb3JtR3JvdXAuZ2V0KHNweEZpZWxkLmtleSkpXCIgW2xhYmVsXT1cIihzcHhGaWVsZC5sYWJlbCA/IHNweEZpZWxkLmxhYmVsKCkgOiBzcHhGaWVsZC5rZXkpfCB0cmFuc2xhdGUgIHwgY2FwaXRhbGl6ZVwiPjwvc3B4LXZhbGlkYXRlLWNvbnRyb2w+XG4gICAgICAgIDwvc3B4LWlucHV0PlxuXG4gICAgICAgIDxzcHgtaW5wdXRcbiAgICAgICAgICAqbmdJZj1cInNweEZpZWxkLnR5cGUoKSA9PT0gdHlwZVJhZGlvXCJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiJGFueSh0aGlzLnNweEZvcm1Hcm91cC5nZXQoc3B4RmllbGQua2V5KSlcIlxuICAgICAgICAgIFtzcHhMYWJlbF09XCIoc3B4RmllbGQubGFiZWwgPyBzcHhGaWVsZC5sYWJlbCgpIDogc3B4RmllbGQua2V5KSB8IHRyYW5zbGF0ZSB8IGNhcGl0YWxpemVcIlxuICAgICAgICAgIFtzcHhOYW1lXT1cInNweEZpZWxkLmtleVwiXG4gICAgICAgICAgW3NweFJlYWRvbmx5XT1cInNweEZpZWxkLnJlYWRvbmx5ID8gc3B4RmllbGQucmVhZG9ubHkoKSA6IGZhbHNlXCJcbiAgICAgICAgICBbc3B4UmVxdWlyZWRdPVwiaGFzUmVxdWlyZWRGaWVsZCh0aGlzLnNweEZvcm1Hcm91cC5nZXQoc3B4RmllbGQua2V5KSEpXCJcbiAgICAgICAgICBbc3B4U2hvd0hlbHBdPVwiZmFsc2VcIlxuICAgICAgICAgIFtzcHhTaG93VmFsaWRhdGlvbk1lc3NhZ2VzXT1cInRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpISAmJiB0aGlzLnNweEZvcm1Hcm91cC5nZXQoc3B4RmllbGQua2V5KSEuZXJyb3JzICYmIHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpIS50b3VjaGVkXCJcbiAgICAgICAgICBbc3B4U3VnZ2VzdGlvbnNdPVwic3B4RmllbGQuc3VnZ2VzdGlvbnNGaXhlZCA/IHNweEZpZWxkLnN1Z2dlc3Rpb25zRml4ZWQoKSA6IHRoaXMuc3B4U3VnZ2VzdGlvbnNbc3B4RmllbGQua2V5XVwiXG4gICAgICAgICAgW3NweFR5cGVdPVwidHlwZVJhZGlvXCJcbiAgICAgICAgICBbc3B4VmFsaWRhdG9yc109XCJnZXRSYXdWYWxpZGF0b3JzKHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpISlcIj5cbiAgICAgICAgICA8c3B4LXZhbGlkYXRlLWNvbnRyb2wgW2NvbnRyb2xdPVwiJGFueSh0aGlzLnNweEZvcm1Hcm91cC5nZXQoc3B4RmllbGQua2V5KSlcIiBbbGFiZWxdPVwiKHNweEZpZWxkLmxhYmVsID8gc3B4RmllbGQubGFiZWwoKSA6IHNweEZpZWxkLmtleSkgfCB0cmFuc2xhdGUgfCBjYXBpdGFsaXplXCI+PC9zcHgtdmFsaWRhdGUtY29udHJvbD5cbiAgICAgICAgPC9zcHgtaW5wdXQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9zcHgtZm9ybS1zZWN0aW9uPlxuICBcbiAgPHNweC1idXR0b24gKm5nRm9yPVwibGV0IHNweEJ1dHRvbiBvZiBzcHhGb3JtLmJ1dHRvbnNcIlxuICAgIFtzcHhGdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgW3NweFNldmVyaXR5XT1cInNweEJ1dHRvbi5zZXZlcml0eVwiXG4gICAgW3NweFR5cGVdPVwic3B4QnV0dG9uLnR5cGVcIlxuICAgIChzcHhDbGljayk9XCJzcHhCdXR0b24ub25DbGljayA/IHNweEJ1dHRvbi5vbkNsaWNrKCkgOiB1bmRlZmluZWRcIj5cbiAgICB7eyAoKHNweEJ1dHRvbiAmJiBzcHhCdXR0b24ubGFiZWwpID8gc3B4QnV0dG9uLmxhYmVsKCkgOiAnJykgfCB0cmFuc2xhdGUgfCBjYXBpdGFsaXplIH19XG4gIDwvc3B4LWJ1dHRvbj5cbjwvZGl2PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBTcHhGb3JtVmlld0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHNweEZvcm1Hcm91cCE6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgc3B4Rm9ybSE6IFNweEZvcm1JO1xuICBASW5wdXQoKSBzcHhTdWdnZXN0aW9ucyE6IGFueTtcbiAgQE91dHB1dCgpIHNweEJsdXI6IEV2ZW50RW1pdHRlcjx7IGZpZWxkOiBTcHhGb3JtRmllbGRJLCB2YWx1ZVBhaXI6IFNweFZhbHVlUGFpcjxhbnk+IH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7IGZpZWxkOiBTcHhGb3JtRmllbGRJLCB2YWx1ZVBhaXI6IFNweFZhbHVlUGFpcjxhbnk+IH0+KCk7XG4gIEBPdXRwdXQoKSBzcHhDbGljazogRXZlbnRFbWl0dGVyPHsgZmllbGQ6IFNweEZvcm1GaWVsZEkgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHsgZmllbGQ6IFNweEZvcm1GaWVsZEkgfT4oKTtcbiAgQE91dHB1dCgpIHNweFNlYXJjaDogRXZlbnRFbWl0dGVyPHsgZmllbGQ6IFNweEZvcm1GaWVsZEksIHZhbHVlUGFpcjogU3B4VmFsdWVQYWlyPGFueT4gfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHsgZmllbGQ6IFNweEZvcm1GaWVsZEksIHZhbHVlUGFpcjogU3B4VmFsdWVQYWlyPGFueT4gfT4oKTtcbiAgQFZpZXdDaGlsZHJlbihTcHhJbnB1dENvbXBvbmVudCkgc3B4SW5wdXRzITogUXVlcnlMaXN0PFNweElucHV0Q29tcG9uZW50PjtcbiAgYXV0b2NvbXBsZXRlRmllbGQ/OiBTcHhGb3JtRmllbGRJO1xuXG4gIHR5cGVBdXRvY29tcGxldGUgPSBTcHhJbnB1dFR5cGVFbnVtLmF1dG9jb21wbGV0ZTtcbiAgdHlwZUJ1dHRvbiA9IFNweElucHV0VHlwZUVudW0uYnV0dG9uO1xuICB0eXBlRmxvYXQgPSBTcHhJbnB1dFR5cGVFbnVtLmZsb2F0O1xuICB0eXBlTnVtYmVyID0gU3B4SW5wdXRUeXBlRW51bS5udW1iZXI7XG4gIHR5cGVSYWRpbyA9IFNweElucHV0VHlwZUVudW0ucmFkaW87XG4gIHR5cGVUZXh0ID0gU3B4SW5wdXRUeXBlRW51bS50ZXh0O1xuICB0eXBlTnVtZXJpY0tleWJvYXJkID0gU3B4SW5wdXRUeXBlRW51bS50ZXh0TnVtZXJpY0tleWJvYXJkO1xuICB0eXBlT3ZlcmxheSA9IFNweElucHV0VHlwZUVudW0ub3ZlcmxheTtcbiAgdHlwZU92ZXJsYXlOdW1iZXIgPSBTcHhJbnB1dFR5cGVFbnVtLm92ZXJsYXlOdW1iZXI7XG5cbiAgc2V0QXV0b2ZvY3VzKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgZmllbGQgPSB0aGlzLnNweElucHV0cy5maW5kKGlucHV0ID0+IGlucHV0LnNweE5hbWUgPT09IGtleSk7XG4gICAgaWYgKGZpZWxkKSB7XG4gICAgICBmaWVsZC5zZXRGb2N1c0luKCk7XG4gICAgfVxuICB9XG5cbiAgb25CbHVyKGZpZWxkOiBTcHhGb3JtRmllbGRJKSB7XG4gICAgdGhpcy5zcHhCbHVyLmVtaXQoe1xuICAgICAgZmllbGQsXG4gICAgICB2YWx1ZVBhaXI6IHRoaXMuc3B4Rm9ybUdyb3VwLmdldChmaWVsZC5rZXkpIS52YWx1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIG9uQ2xpY2soZmllbGQ6IFNweEZvcm1GaWVsZEkpIHtcbiAgICB0aGlzLnNweENsaWNrLmVtaXQoe1xuICAgICAgZmllbGQsXG4gICAgfSk7XG4gIH1cblxuICBvbkF1dG9jb21wbGV0ZUNhbmNlbCgpOiB2b2lkIHtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZUZpZWxkID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgb25BdXRvY29tcGxldGVTZWFyY2godmFsdWVQYWlyOiBTcHhWYWx1ZVBhaXI8YW55Pik6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdzcHhGb3JtVmlldyAtIG9uQXV0b2NvbXBsZXRlU2VhcmNoOiAnLCB2YWx1ZVBhaXIsIHRoaXMuYXV0b2NvbXBsZXRlRmllbGQpO1xuICAgIGlmICh0aGlzLmF1dG9jb21wbGV0ZUZpZWxkKSB7XG4gICAgICB0aGlzLnNweFNlYXJjaC5lbWl0KHtcbiAgICAgICAgZmllbGQ6IHRoaXMuYXV0b2NvbXBsZXRlRmllbGQsXG4gICAgICAgIHZhbHVlUGFpcixcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9uQXV0b2NvbXBsZXRlU2F2ZSh2YWx1ZVBhaXI6IFNweFZhbHVlUGFpcjxhbnk+KSB7XG4gICAgdGhpcy5zcHhGb3JtR3JvdXAuZ2V0KHRoaXMuYXV0b2NvbXBsZXRlRmllbGQhLmtleSk/LnNldFZhbHVlKHZhbHVlUGFpcik7XG4gICAgdGhpcy5hdXRvY29tcGxldGVGaWVsZCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIG9uU2VhcmNoKGZpZWxkOiBTcHhGb3JtRmllbGRJKSB7XG4gICAgdGhpcy5hdXRvY29tcGxldGVGaWVsZCA9IGZpZWxkO1xuICB9XG5cbiAgZ2V0UmF3VmFsaWRhdG9ycyhmb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVyc2NvcmUtZGFuZ2xlXG4gICAgcmV0dXJuIChmb3JtQ29udHJvbCBhcyBhbnkpLl9yYXdWYWxpZGF0b3JzO1xuICB9XG5cbiAgaGFzUmVxdWlyZWRGaWVsZChhYnN0cmFjdENvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IGJvb2xlYW4ge1xuICAgIGlmIChhYnN0cmFjdENvbnRyb2wudmFsaWRhdG9yKSB7XG4gICAgICBjb25zdCB2YWxpZGF0b3IgPSBhYnN0cmFjdENvbnRyb2wudmFsaWRhdG9yKHt9IGFzIEFic3RyYWN0Q29udHJvbCk7XG4gICAgICBpZiAodmFsaWRhdG9yICYmIHZhbGlkYXRvclsncmVxdWlyZWQnXSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKChhYnN0cmFjdENvbnRyb2wgYXMgYW55KVsnY29udHJvbHMnXSkge1xuICAgICAgZm9yIChjb25zdCBjb250cm9sTmFtZSBpbiAoYWJzdHJhY3RDb250cm9sIGFzIGFueSlbJ2NvbnRyb2xzJ10pIHtcbiAgICAgICAgaWYgKChhYnN0cmFjdENvbnRyb2wgYXMgYW55KVsnY29udHJvbHMnXVtjb250cm9sTmFtZV0pIHtcbiAgICAgICAgICBpZiAodGhpcy5oYXNSZXF1aXJlZEZpZWxkKChhYnN0cmFjdENvbnRyb2wgYXMgYW55KVsnY29udHJvbHMnXVtjb250cm9sTmFtZV0pKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3RhdGljIGluaXRpYWxGb3JtVmFsdWUoc2VjdGlvbnM6IFNweEZvcm1TZWN0aW9uSVtdKSB7XG4gICAgY29uc3QgZm9ybU9iamVjdDogYW55ID0ge307XG4gICAgc2VjdGlvbnMuZm9yRWFjaChzZWN0aW9uID0+IHtcbiAgICAgIHNlY3Rpb24uZmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICBmb3JtT2JqZWN0W2ZpZWxkLmtleV0gPSBbZmllbGQuZGVmYXVsdFZhbHVlID8gZmllbGQuZGVmYXVsdFZhbHVlKCkgOiBudWxsLCBmaWVsZC52YWxpZGF0b3JzID8gWy4uLmZpZWxkLnZhbGlkYXRvcnMoKV0gOiBbXV07XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gZm9ybU9iamVjdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVGb3JtKGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlciwgc2VjdGlvbnM6IFNweEZvcm1TZWN0aW9uSVtdKTogRm9ybUdyb3VwIHtcbiAgICByZXR1cm4gZm9ybUJ1aWxkZXIuZ3JvdXAodGhpcy5pbml0aWFsRm9ybVZhbHVlKHNlY3Rpb25zKSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIpIHtcbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LWZvcm0uaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc29mdHBhay9jb21wb25lbnRzL3NweC1mb3JtLXZpZXcvc3B4LWZvcm0uaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTcHhGb3JtQnV0dG9uSSB9IGZyb20gXCIuL3NweC1mb3JtLWJ1dHRvbi5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IFNweEZvcm1TZWN0aW9uSSB9IGZyb20gXCIuL3NweC1mb3JtLXNlY3Rpb24uaW50ZXJmYWNlXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3B4Rm9ybUkge1xuICAgIGJ1dHRvbnM6IFNweEZvcm1CdXR0b25JW107XG4gICAgc2VjdGlvbnM6IFNweEZvcm1TZWN0aW9uSVtdO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export * from './spx-pagination.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NvZnRwYWsvY29tcG9uZW50cy9zcHgtcGFnaW5hdGlvbi9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNEJBQTRCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NweC1wYWdpbmF0aW9uLmNvbXBvbmVudCc7XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29mdHBhay1jb21wb25lbnRzLXNweC1wYWdpbmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc29mdHBhay9jb21wb25lbnRzL3NweC1wYWdpbmF0aW9uL3NvZnRwYWstY29tcG9uZW50cy1zcHgtcGFnaW5hdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -0,0 +1,33 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { SpxButtonComponent } from '@softpak/components/spx-button';
3
+ import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@fortawesome/angular-fontawesome";
6
+ export class SpxPaginationComponent {
7
+ constructor() {
8
+ this.spxPageChange = new EventEmitter();
9
+ }
10
+ onPageChange(page) {
11
+ this.spxPageChange.emit(page);
12
+ }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: SpxPaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: SpxPaginationComponent, isStandalone: true, selector: "spx-pagination", inputs: { faArrowLeft: "faArrowLeft", faArrowRight: "faArrowRight", spxPage: "spxPage", spxMaxPages: "spxMaxPages" }, outputs: { spxPageChange: "spxPageChange" }, ngImport: i0, template: "<div class=\"inline mx-auto flex gap-3 items-center font-bold\">\n <spx-button (click)=\"onPageChange(spxPage - 1)\" [spxDisabled]=\"spxPage === 1\">\n <fa-icon [icon]=\"faArrowLeft\"></fa-icon> Previous\n </spx-button>\n Page {{ spxPage }}\n <spx-button [spxDisabled]=\"spxMaxPages < (spxPage + 1)\" (click)=\"onPageChange(spxPage + 1)\">\n Next <fa-icon [icon]=\"faArrowRight\"></fa-icon>\n </spx-button>\n</div>", dependencies: [{ kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i1.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { kind: "component", type: SpxButtonComponent, selector: "spx-button", inputs: ["spxDisabled", "spxClass", "spxClassObject", "spxForm", "spxFullHeight", "spxFullWidth", "spxSeverity", "spxSize", "spxTabIndex", "spxType"], outputs: ["spxClick"] }] }); }
15
+ }
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: SpxPaginationComponent, decorators: [{
17
+ type: Component,
18
+ args: [{ selector: 'spx-pagination', standalone: true, imports: [
19
+ FontAwesomeModule,
20
+ SpxButtonComponent,
21
+ ], template: "<div class=\"inline mx-auto flex gap-3 items-center font-bold\">\n <spx-button (click)=\"onPageChange(spxPage - 1)\" [spxDisabled]=\"spxPage === 1\">\n <fa-icon [icon]=\"faArrowLeft\"></fa-icon> Previous\n </spx-button>\n Page {{ spxPage }}\n <spx-button [spxDisabled]=\"spxMaxPages < (spxPage + 1)\" (click)=\"onPageChange(spxPage + 1)\">\n Next <fa-icon [icon]=\"faArrowRight\"></fa-icon>\n </spx-button>\n</div>" }]
22
+ }], propDecorators: { faArrowLeft: [{
23
+ type: Input
24
+ }], faArrowRight: [{
25
+ type: Input
26
+ }], spxPage: [{
27
+ type: Input
28
+ }], spxMaxPages: [{
29
+ type: Input
30
+ }], spxPageChange: [{
31
+ type: Output
32
+ }] } });
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LXBhZ2luYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc29mdHBhay9jb21wb25lbnRzL3NweC1wYWdpbmF0aW9uL3NweC1wYWdpbmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NvZnRwYWsvY29tcG9uZW50cy9zcHgtcGFnaW5hdGlvbi9zcHgtcGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7QUFZckUsTUFBTSxPQUFPLHNCQUFzQjtJQVRuQztRQWVZLGtCQUFhLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7S0FLNUU7SUFIQyxZQUFZLENBQUMsSUFBWTtRQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDOzhHQVZVLHNCQUFzQjtrR0FBdEIsc0JBQXNCLDZPQ2RuQywyYUFRTSwyQ0RFRixpQkFBaUIsNlBBQ2pCLGtCQUFrQjs7MkZBR1Qsc0JBQXNCO2tCQVRsQyxTQUFTOytCQUNFLGdCQUFnQixjQUVkLElBQUksV0FDUDt3QkFDUCxpQkFBaUI7d0JBQ2pCLGtCQUFrQjtxQkFDbkI7OEJBR1EsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNJLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3B4QnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtYnV0dG9uJztcbmltcG9ydCB7IEZvbnRBd2Vzb21lTW9kdWxlIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xuaW1wb3J0IHsgSWNvblByb3AgfSBmcm9tICdAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZS90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NweC1wYWdpbmF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NweC1wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEZvbnRBd2Vzb21lTW9kdWxlLFxuICAgIFNweEJ1dHRvbkNvbXBvbmVudCxcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTcHhQYWdpbmF0aW9uQ29tcG9uZW50IHtcbiAgQElucHV0KCkgZmFBcnJvd0xlZnQhOiBJY29uUHJvcDtcblxuICBASW5wdXQoKSBmYUFycm93UmlnaHQhOiBJY29uUHJvcDtcbiAgQElucHV0KCkgc3B4UGFnZSE6IG51bWJlcjtcbiAgQElucHV0KCkgc3B4TWF4UGFnZXMhOiBudW1iZXI7XG4gIEBPdXRwdXQoKSBzcHhQYWdlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIG9uUGFnZUNoYW5nZShwYWdlOiBudW1iZXIpIHtcbiAgICB0aGlzLnNweFBhZ2VDaGFuZ2UuZW1pdChwYWdlKTtcbiAgfVxufSIsIjxkaXYgY2xhc3M9XCJpbmxpbmUgbXgtYXV0byBmbGV4IGdhcC0zIGl0ZW1zLWNlbnRlciBmb250LWJvbGRcIj5cbiAgPHNweC1idXR0b24gKGNsaWNrKT1cIm9uUGFnZUNoYW5nZShzcHhQYWdlIC0gMSlcIiBbc3B4RGlzYWJsZWRdPVwic3B4UGFnZSA9PT0gMVwiPlxuICAgIDxmYS1pY29uIFtpY29uXT1cImZhQXJyb3dMZWZ0XCI+PC9mYS1pY29uPiBQcmV2aW91c1xuICA8L3NweC1idXR0b24+XG4gIFBhZ2Uge3sgc3B4UGFnZSB9fVxuICA8c3B4LWJ1dHRvbiBbc3B4RGlzYWJsZWRdPVwic3B4TWF4UGFnZXMgPCAoc3B4UGFnZSArIDEpXCIgKGNsaWNrKT1cIm9uUGFnZUNoYW5nZShzcHhQYWdlICsgMSlcIj5cbiAgICBOZXh0IDxmYS1pY29uIFtpY29uXT1cImZhQXJyb3dSaWdodFwiPjwvZmEtaWNvbj5cbiAgPC9zcHgtYnV0dG9uPlxuPC9kaXY+Il19
@@ -0,0 +1,3 @@
1
+ export * from './spx-stock-info-value.interface';
2
+ export * from './spx-stock-info.component';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NvZnRwYWsvY29tcG9uZW50cy9zcHgtc3RvY2staW5mby9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc3B4LXN0b2NrLWluZm8tdmFsdWUuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc3B4LXN0b2NrLWluZm8uY29tcG9uZW50JztcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29mdHBhay1jb21wb25lbnRzLXNweC1zdG9jay1pbmZvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc29mdHBhay9jb21wb25lbnRzL3NweC1zdG9jay1pbmZvL3NvZnRwYWstY29tcG9uZW50cy1zcHgtc3RvY2staW5mby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -0,0 +1,2 @@
1
+ import { ctrlCategory, ctrlContainerStatus, ctrlContainerType, ctrlCustomer, ctrlDepot, ctrlLocation } from "./spx-stock-info.component";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LXN0b2NrLWluZm8tdmFsdWUuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc29mdHBhay9jb21wb25lbnRzL3NweC1zdG9jay1pbmZvL3NweC1zdG9jay1pbmZvLXZhbHVlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTcHhWYWx1ZVBhaXIgfSBmcm9tIFwiQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtaW5wdXRzXCI7XG5pbXBvcnQgeyBjdHJsQ2F0ZWdvcnksIGN0cmxDb250YWluZXJTdGF0dXMsIGN0cmxDb250YWluZXJUeXBlLCBjdHJsQ3VzdG9tZXIsIGN0cmxEZXBvdCwgY3RybExvY2F0aW9uIH0gZnJvbSBcIi4vc3B4LXN0b2NrLWluZm8uY29tcG9uZW50XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3B4U3RvY2tJbmZvVmFsdWVJIHtcbiAgICBbY3RybENhdGVnb3J5XT86IFNweFZhbHVlUGFpcjxzdHJpbmc+O1xuICAgIFtjdHJsQ29udGFpbmVyU3RhdHVzXT86IFNweFZhbHVlUGFpcjxzdHJpbmc+O1xuICAgIFtjdHJsQ29udGFpbmVyVHlwZV0/OiBTcHhWYWx1ZVBhaXI8c3RyaW5nPjtcbiAgICBbY3RybEN1c3RvbWVyXT86IFNweFZhbHVlUGFpcjxzdHJpbmc+O1xuICAgIFtjdHJsRGVwb3RdOiBTcHhWYWx1ZVBhaXI8c3RyaW5nPjtcbiAgICBbY3RybExvY2F0aW9uXT86IFNweFZhbHVlUGFpcjxzdHJpbmc+O1xufVxuIl19
@@ -0,0 +1,243 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
3
+ import { spxValidatorRequired, SpxValidateControlComponent } from '@softpak/components/spx-validation';
4
+ import { CommonModule } from '@angular/common';
5
+ import { SpxInputComponent, SpxInputTypeEnum } from '@softpak/components/spx-inputs';
6
+ import { SpxFormButtonTypeEnum, SpxFormViewComponent } from '@softpak/components/spx-form-view';
7
+ import { SpxButtonComponent } from '@softpak/components/spx-button';
8
+ import { SpxSeverityEnum } from '@softpak/components/spx-helpers';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@angular/forms";
11
+ export const ctrlCategory = 'ctrlCategory';
12
+ export const ctrlContainerStatus = 'ctrlContainerStatus';
13
+ export const ctrlContainerType = 'ctrlContainerType';
14
+ export const ctrlCustomer = 'ctrlCustomer';
15
+ export const ctrlDepot = 'ctrlDepot';
16
+ export const ctrlLocation = 'ctrlLocation';
17
+ export const sectionContainerInfo = 'sectionContainerInfo';
18
+ export const sectionCustomer = 'sectionCustomer';
19
+ export const sectionLocation = 'sectionLocation';
20
+ export class SpxStockInfoComponent {
21
+ get ctrlCategory() { return this.formGroup.get(ctrlCategory); }
22
+ get ctrlContainerStatus() { return this.formGroup.get(ctrlContainerStatus); }
23
+ get ctrlContainerType() { return this.formGroup.get(ctrlContainerType); }
24
+ get ctrlCustomer() { return this.formGroup.get(ctrlCustomer); }
25
+ get ctrlDepot() { return this.formGroup.get(ctrlDepot); }
26
+ get ctrlLocation() { return this.formGroup.get(ctrlLocation); }
27
+ constructor(formBuilder) {
28
+ this.formBuilder = formBuilder;
29
+ this.suggestions = {};
30
+ this.spxBlurCategory = new EventEmitter();
31
+ this.spxBlurContainerStatus = new EventEmitter();
32
+ this.spxBlurContainerType = new EventEmitter();
33
+ this.spxBlurCustomer = new EventEmitter();
34
+ this.spxSearchCategory = new EventEmitter();
35
+ this.spxSearchContainerType = new EventEmitter();
36
+ this.spxSearchContainerStatus = new EventEmitter();
37
+ this.spxSearchCustomer = new EventEmitter();
38
+ this.submit = new EventEmitter();
39
+ this.form = {
40
+ buttons: [
41
+ {
42
+ severity: SpxSeverityEnum.success,
43
+ type: SpxFormButtonTypeEnum.submit,
44
+ label: () => this.textSearch,
45
+ }
46
+ ],
47
+ sections: [
48
+ {
49
+ key: sectionLocation,
50
+ show: () => true,
51
+ title: () => this.textLocation,
52
+ fields: [
53
+ {
54
+ key: ctrlDepot,
55
+ label: () => this.textDepot,
56
+ type: () => SpxInputTypeEnum.text,
57
+ defaultValue: () => this.depot,
58
+ validators: () => [spxValidatorRequired()],
59
+ readonly: () => true,
60
+ suggestions: () => false,
61
+ afterValueChange: undefined,
62
+ show: () => true,
63
+ capitalize: () => true,
64
+ },
65
+ {
66
+ key: ctrlLocation,
67
+ label: () => this.textLocation,
68
+ type: () => SpxInputTypeEnum.text,
69
+ defaultValue: () => null,
70
+ validators: () => [],
71
+ readonly: () => false,
72
+ suggestions: () => false,
73
+ afterValueChange: undefined,
74
+ show: () => true,
75
+ capitalize: () => true,
76
+ },
77
+ ]
78
+ },
79
+ {
80
+ key: sectionCustomer,
81
+ show: () => true,
82
+ title: () => this.textCustomer,
83
+ fields: [
84
+ {
85
+ key: ctrlCustomer,
86
+ label: () => this.textCustomer,
87
+ type: () => SpxInputTypeEnum.autocomplete,
88
+ defaultValue: () => null,
89
+ validators: () => [],
90
+ readonly: () => false,
91
+ suggestions: () => true,
92
+ afterValueChange: undefined,
93
+ show: () => true,
94
+ capitalize: () => true,
95
+ },
96
+ ]
97
+ },
98
+ {
99
+ key: sectionContainerInfo,
100
+ show: () => true,
101
+ title: () => this.textContainerInfo,
102
+ fields: [
103
+ {
104
+ key: ctrlCategory,
105
+ label: () => this.textCategory,
106
+ type: () => SpxInputTypeEnum.autocomplete,
107
+ defaultValue: () => null,
108
+ validators: () => [],
109
+ readonly: () => false,
110
+ suggestions: () => true,
111
+ afterValueChange: undefined,
112
+ show: () => true,
113
+ capitalize: () => true,
114
+ },
115
+ {
116
+ key: ctrlContainerStatus,
117
+ label: () => this.textContainerStatus,
118
+ type: () => SpxInputTypeEnum.autocomplete,
119
+ defaultValue: () => null,
120
+ validators: () => [],
121
+ readonly: () => false,
122
+ suggestions: () => true,
123
+ afterValueChange: undefined,
124
+ show: () => true,
125
+ capitalize: () => true,
126
+ },
127
+ {
128
+ key: ctrlContainerType,
129
+ label: () => this.textContainerType,
130
+ type: () => SpxInputTypeEnum.autocomplete,
131
+ defaultValue: () => null,
132
+ validators: () => [],
133
+ readonly: () => false,
134
+ suggestions: () => true,
135
+ afterValueChange: undefined,
136
+ show: () => true,
137
+ capitalize: () => true,
138
+ },
139
+ ]
140
+ },
141
+ ]
142
+ };
143
+ }
144
+ createForm() {
145
+ return SpxFormViewComponent.createForm(this.formBuilder, this.form.sections);
146
+ }
147
+ getRawValidators(formControl) {
148
+ return formControl._rawValidators;
149
+ }
150
+ onBlur(data) {
151
+ if (data.field.key === ctrlCategory) {
152
+ this.spxBlurCategory.emit(data.valuePair);
153
+ }
154
+ if (data.field.key === ctrlContainerStatus) {
155
+ this.spxBlurContainerStatus.emit(data.valuePair);
156
+ }
157
+ if (data.field.key === ctrlContainerType) {
158
+ this.spxBlurContainerType.emit(data.valuePair);
159
+ }
160
+ if (data.field.key === ctrlCustomer) {
161
+ this.spxBlurCustomer.emit(data.valuePair);
162
+ }
163
+ }
164
+ onSearch(data) {
165
+ if (data.field.key === ctrlCategory) {
166
+ this.spxSearchCategory.emit(data.valuePair);
167
+ }
168
+ if (data.field.key === ctrlContainerType) {
169
+ this.spxSearchContainerType.emit(data.valuePair);
170
+ }
171
+ if (data.field.key === ctrlContainerStatus) {
172
+ this.spxSearchContainerStatus.emit(data.valuePair);
173
+ }
174
+ if (data.field.key === ctrlCustomer) {
175
+ this.spxSearchCustomer.emit(data.valuePair);
176
+ }
177
+ }
178
+ onSubmit() {
179
+ this.submit.emit({
180
+ ctrlCategory: this.ctrlCategory.value,
181
+ ctrlContainerStatus: this.ctrlContainerStatus.value,
182
+ ctrlContainerType: this.ctrlContainerType.value,
183
+ ctrlCustomer: this.ctrlContainerType.value,
184
+ ctrlDepot: this.ctrlDepot.value,
185
+ ctrlLocation: this.ctrlLocation.value,
186
+ });
187
+ }
188
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: SpxStockInfoComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
189
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: SpxStockInfoComponent, isStandalone: true, selector: "spx-stock-info", inputs: { formGroup: "formGroup", depot: "depot", suggestions: "suggestions", textLocation: "textLocation", textDepot: "textDepot", textCustomer: "textCustomer", textContainerInfo: "textContainerInfo", textCategory: "textCategory", textContainerStatus: "textContainerStatus", textContainerType: "textContainerType", textSearch: "textSearch" }, outputs: { spxBlurCategory: "spxBlurCategory", spxBlurContainerStatus: "spxBlurContainerStatus", spxBlurContainerType: "spxBlurContainerType", spxBlurCustomer: "spxBlurCustomer", spxSearchCategory: "spxSearchCategory", spxSearchContainerType: "spxSearchContainerType", spxSearchContainerStatus: "spxSearchContainerStatus", spxSearchCustomer: "spxSearchCustomer", submit: "submit" }, ngImport: i0, template: "<form [formGroup]=\"formGroup\" class=\"max-w-lg mx-auto flex flex-col gap-3\" (ngSubmit)=\"onSubmit()\">\n <spx-form-view\n [spxFormGroup]=\"formGroup\"\n [spxForm]=\"form\"\n [spxSuggestions]=\"suggestions\"\n (spxBlur)=\"onBlur($event)\"\n (spxSearch)=\"onSearch($event)\">\n </spx-form-view>\n</form>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: SpxFormViewComponent, selector: "spx-form-view", inputs: ["spxFormGroup", "spxForm", "spxSuggestions"], outputs: ["spxBlur", "spxClick", "spxSearch"] }] }); }
190
+ }
191
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: SpxStockInfoComponent, decorators: [{
192
+ type: Component,
193
+ args: [{ selector: 'spx-stock-info', standalone: true, imports: [
194
+ CommonModule,
195
+ FormsModule,
196
+ ReactiveFormsModule,
197
+ SpxButtonComponent,
198
+ SpxFormViewComponent,
199
+ SpxInputComponent,
200
+ SpxValidateControlComponent,
201
+ ], template: "<form [formGroup]=\"formGroup\" class=\"max-w-lg mx-auto flex flex-col gap-3\" (ngSubmit)=\"onSubmit()\">\n <spx-form-view\n [spxFormGroup]=\"formGroup\"\n [spxForm]=\"form\"\n [spxSuggestions]=\"suggestions\"\n (spxBlur)=\"onBlur($event)\"\n (spxSearch)=\"onSearch($event)\">\n </spx-form-view>\n</form>" }]
202
+ }], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { formGroup: [{
203
+ type: Input
204
+ }], depot: [{
205
+ type: Input
206
+ }], suggestions: [{
207
+ type: Input
208
+ }], textLocation: [{
209
+ type: Input
210
+ }], textDepot: [{
211
+ type: Input
212
+ }], textCustomer: [{
213
+ type: Input
214
+ }], textContainerInfo: [{
215
+ type: Input
216
+ }], textCategory: [{
217
+ type: Input
218
+ }], textContainerStatus: [{
219
+ type: Input
220
+ }], textContainerType: [{
221
+ type: Input
222
+ }], textSearch: [{
223
+ type: Input
224
+ }], spxBlurCategory: [{
225
+ type: Output
226
+ }], spxBlurContainerStatus: [{
227
+ type: Output
228
+ }], spxBlurContainerType: [{
229
+ type: Output
230
+ }], spxBlurCustomer: [{
231
+ type: Output
232
+ }], spxSearchCategory: [{
233
+ type: Output
234
+ }], spxSearchContainerType: [{
235
+ type: Output
236
+ }], spxSearchContainerStatus: [{
237
+ type: Output
238
+ }], spxSearchCustomer: [{
239
+ type: Output
240
+ }], submit: [{
241
+ type: Output
242
+ }] } });
243
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LXN0b2NrLWluZm8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc29mdHBhay9jb21wb25lbnRzL3NweC1zdG9jay1pbmZvL3NweC1zdG9jay1pbmZvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NvZnRwYWsvY29tcG9uZW50cy9zcHgtc3RvY2staW5mby9zcHgtc3RvY2staW5mby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBdUMsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBZ0IsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRyxPQUFPLEVBQUUscUJBQXFCLEVBQTJCLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDekgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7QUFHbEUsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQztBQUMzQyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxxQkFBcUIsQ0FBQztBQUN6RCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxtQkFBbUIsQ0FBQztBQUNyRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDO0FBQzNDLE1BQU0sQ0FBQyxN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LHNCQUFzQjtzQkFBL0IsTUFBTTtnQkFDRyx3QkFBd0I7c0JBQWpDLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBzcHhWYWxpZGF0b3JSZXF1aXJlZCwgU3B4VmFsaWRhdGVDb250cm9sQ29tcG9uZW50IH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU3B4SW5wdXRDb21wb25lbnQsIFNweElucHV0VHlwZUVudW0sIFNweFZhbHVlUGFpciB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWlucHV0cyc7XG5pbXBvcnQgeyBTcHhGb3JtQnV0dG9uVHlwZUVudW0sIFNweEZvcm1GaWVsZEksIFNweEZvcm1JLCBTcHhGb3JtVmlld0NvbXBvbmVudCB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWZvcm0tdmlldyc7XG5pbXBvcnQgeyBTcHhCdXR0b25Db21wb25lbnQgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1idXR0b24nO1xuaW1wb3J0IHsgU3B4U2V2ZXJpdHlFbnVtIH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtaGVscGVycyc7XG5pbXBvcnQgeyBTcHhTdG9ja0luZm9WYWx1ZUkgfSBmcm9tICcuL3NweC1zdG9jay1pbmZvLXZhbHVlLmludGVyZmFjZSc7XG5cbmV4cG9ydCBjb25zdCBjdHJsQ2F0ZWdvcnkgPSAnY3RybENhdGVnb3J5JztcbmV4cG9ydCBjb25zdCBjdHJsQ29udGFpbmVyU3RhdHVzID0gJ2N0cmxDb250YWluZXJTdGF0dXMnO1xuZXhwb3J0IGNvbnN0IGN0cmxDb250YWluZXJUeXBlID0gJ2N0cmxDb250YWluZXJUeXBlJztcbmV4cG9ydCBjb25zdCBjdHJsQ3VzdG9tZXIgPSAnY3RybEN1c3RvbWVyJztcbmV4cG9ydCBjb25zdCBjdHJsRGVwb3QgPSAnY3RybERlcG90JztcbmV4cG9ydCBjb25zdCBjdHJsTG9jYXRpb24gPSAnY3RybExvY2F0aW9uJztcbmV4cG9ydCBjb25zdCBzZWN0aW9uQ29udGFpbmVySW5mbyA9ICdzZWN0aW9uQ29udGFpbmVySW5mbyc7XG5leHBvcnQgY29uc3Qgc2VjdGlvbkN1c3RvbWVyID0gJ3NlY3Rpb25DdXN0b21lcic7XG5leHBvcnQgY29uc3Qgc2VjdGlvbkxvY2F0aW9uID0gJ3NlY3Rpb25Mb2NhdGlvbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NweC1zdG9jay1pbmZvJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NweC1zdG9jay1pbmZvLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFNweEJ1dHRvbkNvbXBvbmVudCxcbiAgICBTcHhGb3JtVmlld0NvbXBvbmVudCxcbiAgICBTcHhJbnB1dENvbXBvbmVudCxcbiAgICBTcHhWYWxpZGF0ZUNvbnRyb2xDb21wb25lbnQsXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU3B4U3RvY2tJbmZvQ29tcG9uZW50IHtcbiAgQElucHV0KCkgZm9ybUdyb3VwITogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBkZXBvdCE6IHN0cmluZztcbiAgQElucHV0KCkgc3VnZ2VzdGlvbnM6IGFueSA9IHt9O1xuICBASW5wdXQoKSB0ZXh0TG9jYXRpb24hOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRleHREZXBvdCE6IHN0cmluZztcbiAgQElucHV0KCkgdGV4dEN1c3RvbWVyITogc3RyaW5nO1xuICBASW5wdXQoKSB0ZXh0Q29udGFpbmVySW5mbyE6IHN0cmluZztcbiAgQElucHV0KCkgdGV4dENhdGVnb3J5ITogc3RyaW5nO1xuICBASW5wdXQoKSB0ZXh0Q29udGFpbmVyU3RhdHVzITogc3RyaW5nO1xuICBASW5wdXQoKSB0ZXh0Q29udGFpbmVyVHlwZSE6IHN0cmluZztcbiAgQElucHV0KCkgdGV4dFNlYXJjaCE6IHN0cmluZztcbiAgQE91dHB1dCgpIHNweEJsdXJDYXRlZ29yeTogRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxzdHJpbmc+PiA9IG5ldyBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPHN0cmluZz4+KCk7XG4gIEBPdXRwdXQoKSBzcHhCbHVyQ29udGFpbmVyU3RhdHVzOiBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPHN0cmluZz4+ID0gbmV3IEV2ZW50RW1pdHRlcjxTcHhWYWx1ZVBhaXI8c3RyaW5nPj4oKTtcbiAgQE91dHB1dCgpIHNweEJsdXJDb250YWluZXJUeXBlOiBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPHN0cmluZz4+ID0gbmV3IEV2ZW50RW1pdHRlcjxTcHhWYWx1ZVBhaXI8c3RyaW5nPj4oKTtcbiAgQE91dHB1dCgpIHNweEJsdXJDdXN0b21lcjogRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxzdHJpbmc+PiA9IG5ldyBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPHN0cmluZz4+KCk7XG4gIEBPdXRwdXQoKSBzcHhTZWFyY2hDYXRlZ29yeTogRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxzdHJpbmc+PiA9IG5ldyBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPHN0cmluZz4+KCk7XG4gIEBPdXRwdXQoKSBzcHhTZWFyY2hDb250YWluZXJUeXBlOiBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPHN0cmluZz4+ID0gbmV3IEV2ZW50RW1pdHRlcjxTcHhWYWx1ZVBhaXI8c3RyaW5nPj4oKTtcbiAgQE91dHB1dCgpIHNweFNlYXJjaENvbnRhaW5lclN0YXR1czogRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxzdHJpbmc+PiA9IG5ldyBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPHN0cmluZz4+KCk7XG4gIEBPdXRwdXQoKSBzcHhTZWFyY2hDdXN0b21lcjogRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxzdHJpbmc+PiA9IG5ldyBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPHN0cmluZz4+KCk7XG4gIEBPdXRwdXQoKSBzdWJtaXQ6IEV2ZW50RW1pdHRlcjxTcHhTdG9ja0luZm9WYWx1ZUk+ID0gbmV3IEV2ZW50RW1pdHRlcjxTcHhTdG9ja0luZm9WYWx1ZUk+KCk7XG5cbiAgZm9ybTogU3B4Rm9ybUkgPSB7XG4gICAgYnV0dG9uczogW1xuICAgICAge1xuICAgICAgICBzZXZlcml0eTogU3B4U2V2ZXJpdHlFbnVtLnN1Y2Nlc3MsXG4gICAgICAgIHR5cGU6IFNweEZvcm1CdXR0b25UeXBlRW51bS5zdWJtaXQsXG4gICAgICAgIGxhYmVsOiAoKSA9PiB0aGlzLnRleHRTZWFyY2gsXG4gICAgICB9XG4gICAgXSxcbiAgICBzZWN0aW9uczogW1xuICAgICAge1xuICAgICAgICBrZXk6IHNlY3Rpb25Mb2NhdGlvbixcbiAgICAgICAgc2hvdzogKCkgPT4gdHJ1ZSxcbiAgICAgICAgdGl0bGU6ICgpID0+IHRoaXMudGV4dExvY2F0aW9uLFxuICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IGN0cmxEZXBvdCxcbiAgICAgICAgICAgIGxhYmVsOiAoKSA9PiB0aGlzLnRleHREZXBvdCxcbiAgICAgICAgICAgIHR5cGU6ICgpID0+IFNweElucHV0VHlwZUVudW0udGV4dCxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogKCkgPT4gdGhpcy5kZXBvdCxcbiAgICAgICAgICAgIHZhbGlkYXRvcnM6ICgpID0+IFtzcHhWYWxpZGF0b3JSZXF1aXJlZCgpXSxcbiAgICAgICAgICAgIHJlYWRvbmx5OiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM6ICgpID0+IGZhbHNlLFxuICAgICAgICAgICAgYWZ0ZXJWYWx1ZUNoYW5nZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgc2hvdzogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICAgIGNhcGl0YWxpemU6ICgpID0+IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IGN0cmxMb2NhdGlvbixcbiAgICAgICAgICAgIGxhYmVsOiAoKSA9PiB0aGlzLnRleHRMb2NhdGlvbixcbiAgICAgICAgICAgIHR5cGU6ICgpID0+IFNweElucHV0VHlwZUVudW0udGV4dCxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogKCkgPT4gbnVsbCxcbiAgICAgICAgICAgIHZhbGlkYXRvcnM6ICgpID0+IFtdLFxuICAgICAgICAgICAgcmVhZG9ubHk6ICgpID0+IGZhbHNlLFxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM6ICgpID0+IGZhbHNlLFxuICAgICAgICAgICAgYWZ0ZXJWYWx1ZUNoYW5nZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgc2hvdzogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICAgIGNhcGl0YWxpemU6ICgpID0+IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiBzZWN0aW9uQ3VzdG9tZXIsXG4gICAgICAgIHNob3c6ICgpID0+IHRydWUsXG4gICAgICAgIHRpdGxlOiAoKSA9PiB0aGlzLnRleHRDdXN0b21lcixcbiAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBjdHJsQ3VzdG9tZXIsXG4gICAgICAgICAgICBsYWJlbDogKCkgPT4gdGhpcy50ZXh0Q3VzdG9tZXIsXG4gICAgICAgICAgICB0eXBlOiAoKSA9PiBTcHhJbnB1dFR5cGVFbnVtLmF1dG9jb21wbGV0ZSxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogKCkgPT4gbnVsbCxcbiAgICAgICAgICAgIHZhbGlkYXRvcnM6ICgpID0+IFtdLFxuICAgICAgICAgICAgcmVhZG9ubHk6ICgpID0+IGZhbHNlLFxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM6ICgpID0+IHRydWUsXG4gICAgICAgICAgICBhZnRlclZhbHVlQ2hhbmdlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBzaG93OiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgY2FwaXRhbGl6ZTogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6IHNlY3Rpb25Db250YWluZXJJbmZvLFxuICAgICAgICBzaG93OiAoKSA9PiB0cnVlLFxuICAgICAgICB0aXRsZTogKCkgPT4gdGhpcy50ZXh0Q29udGFpbmVySW5mbyxcbiAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBjdHJsQ2F0ZWdvcnksXG4gICAgICAgICAgICBsYWJlbDogKCkgPT4gdGhpcy50ZXh0Q2F0ZWdvcnksXG4gICAgICAgICAgICB0eXBlOiAoKSA9PiBTcHhJbnB1dFR5cGVFbnVtLmF1dG9jb21wbGV0ZSxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogKCkgPT4gbnVsbCxcbiAgICAgICAgICAgIHZhbGlkYXRvcnM6ICgpID0+IFtdLFxuICAgICAgICAgICAgcmVhZG9ubHk6ICgpID0+IGZhbHNlLFxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM6ICgpID0+IHRydWUsXG4gICAgICAgICAgICBhZnRlclZhbHVlQ2hhbmdlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBzaG93OiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgY2FwaXRhbGl6ZTogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogY3RybENvbnRhaW5lclN0YXR1cyxcbiAgICAgICAgICAgIGxhYmVsOiAoKSA9PiB0aGlzLnRleHRDb250YWluZXJTdGF0dXMsXG4gICAgICAgICAgICB0eXBlOiAoKSA9PiBTcHhJbnB1dFR5cGVFbnVtLmF1dG9jb21wbGV0ZSxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogKCkgPT4gbnVsbCxcbiAgICAgICAgICAgIHZhbGlkYXRvcnM6ICgpID0+IFtdLFxuICAgICAgICAgICAgcmVhZG9ubHk6ICgpID0+IGZhbHNlLFxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM6ICgpID0+IHRydWUsXG4gICAgICAgICAgICBhZnRlclZhbHVlQ2hhbmdlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBzaG93OiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgY2FwaXRhbGl6ZTogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogY3RybENvbnRhaW5lclR5cGUsXG4gICAgICAgICAgICBsYWJlbDogKCkgPT4gdGhpcy50ZXh0Q29udGFpbmVyVHlwZSxcbiAgICAgICAgICAgIHR5cGU6ICgpID0+IFNweElucHV0VHlwZUVudW0uYXV0b2NvbXBsZXRlLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiAoKSA9PiBudWxsLFxuICAgICAgICAgICAgdmFsaWRhdG9yczogKCkgPT4gW10sXG4gICAgICAgICAgICByZWFkb25seTogKCkgPT4gZmFsc2UsXG4gICAgICAgICAgICBzdWdnZXN0aW9uczogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICAgIGFmdGVyVmFsdWVDaGFuZ2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHNob3c6ICgpID0+IHRydWUsXG4gICAgICAgICAgICBjYXBpdGFsaXplOiAoKSA9PiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgXVxuICB9O1xuXG4gIGdldCBjdHJsQ2F0ZWdvcnkoKTogRm9ybUNvbnRyb2wgeyByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KGN0cmxDYXRlZ29yeSkgYXMgRm9ybUNvbnRyb2w7IH1cbiAgZ2V0IGN0cmxDb250YWluZXJTdGF0dXMoKTogRm9ybUNvbnRyb2wgeyByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KGN0cmxDb250YWluZXJTdGF0dXMpIGFzIEZvcm1Db250cm9sOyB9XG4gIGdldCBjdHJsQ29udGFpbmVyVHlwZSgpOiBGb3JtQ29udHJvbCB7IHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoY3RybENvbnRhaW5lclR5cGUpIGFzIEZvcm1Db250cm9sOyB9XG4gIGdldCBjdHJsQ3VzdG9tZXIoKTogRm9ybUNvbnRyb2wgeyByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KGN0cmxDdXN0b21lcikgYXMgRm9ybUNvbnRyb2w7IH1cbiAgZ2V0IGN0cmxEZXBvdCgpOiBGb3JtQ29udHJvbCB7IHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoY3RybERlcG90KSBhcyBGb3JtQ29udHJvbDsgfVxuICBnZXQgY3RybExvY2F0aW9uKCk6IEZvcm1Db250cm9sIHsgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldChjdHJsTG9jYXRpb24pIGFzIEZvcm1Db250cm9sOyB9XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyKSB7XG4gIH1cblxuICBjcmVhdGVGb3JtKCk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIFNweEZvcm1WaWV3Q29tcG9uZW50LmNyZWF0ZUZvcm0odGhpcy5mb3JtQnVpbGRlciwgdGhpcy5mb3JtLnNlY3Rpb25zKTtcbiAgfVxuXG4gIGdldFJhd1ZhbGlkYXRvcnMoZm9ybUNvbnRyb2w6IEZvcm1Db250cm9sKSB7XG4gICAgcmV0dXJuIChmb3JtQ29udHJvbCBhcyBhbnkpLl9yYXdWYWxpZGF0b3JzO1xuICB9XG5cbiAgb25CbHVyKGRhdGE6IHsgZmllbGQ6IFNweEZvcm1GaWVsZEksIHZhbHVlUGFpcjogU3B4VmFsdWVQYWlyPGFueT4gfSkge1xuICAgIGlmIChkYXRhLmZpZWxkLmtleSA9PT0gY3RybENhdGVnb3J5KSB7XG4gICAgICB0aGlzLnNweEJsdXJDYXRlZ29yeS5lbWl0KGRhdGEudmFsdWVQYWlyKTtcbiAgICB9XG4gICAgaWYgKGRhdGEuZmllbGQua2V5ID09PSBjdHJsQ29udGFpbmVyU3RhdHVzKSB7XG4gICAgICB0aGlzLnNweEJsdXJDb250YWluZXJTdGF0dXMuZW1pdChkYXRhLnZhbHVlUGFpcik7XG4gICAgfVxuICAgIGlmIChkYXRhLmZpZWxkLmtleSA9PT0gY3RybENvbnRhaW5lclR5cGUpIHtcbiAgICAgIHRoaXMuc3B4Qmx1ckNvbnRhaW5lclR5cGUuZW1pdChkYXRhLnZhbHVlUGFpcik7XG4gICAgfVxuICAgIGlmIChkYXRhLmZpZWxkLmtleSA9PT0gY3RybEN1c3RvbWVyKSB7XG4gICAgICB0aGlzLnNweEJsdXJDdXN0b21lci5lbWl0KGRhdGEudmFsdWVQYWlyKTtcbiAgICB9XG4gIH1cblxuICBvblNlYXJjaChkYXRhOiB7IGZpZWxkOiBTcHhGb3JtRmllbGRJLCB2YWx1ZVBhaXI6IFNweFZhbHVlUGFpcjxhbnk+IH0pIHtcbiAgICBpZiAoZGF0YS5maWVsZC5rZXkgPT09IGN0cmxDYXRlZ29yeSkge1xuICAgICAgdGhpcy5zcHhTZWFyY2hDYXRlZ29yeS5lbWl0KGRhdGEudmFsdWVQYWlyKTtcbiAgICB9XG4gICAgaWYgKGRhdGEuZmllbGQua2V5ID09PSBjdHJsQ29udGFpbmVyVHlwZSkge1xuICAgICAgdGhpcy5zcHhTZWFyY2hDb250YWluZXJUeXBlLmVtaXQoZGF0YS52YWx1ZVBhaXIpO1xuICAgIH1cbiAgICBpZiAoZGF0YS5maWVsZC5rZXkgPT09IGN0cmxDb250YWluZXJTdGF0dXMpIHtcbiAgICAgIHRoaXMuc3B4U2VhcmNoQ29udGFpbmVyU3RhdHVzLmVtaXQoZGF0YS52YWx1ZVBhaXIpO1xuICAgIH1cbiAgICBpZiAoZGF0YS5maWVsZC5rZXkgPT09IGN0cmxDdXN0b21lcikge1xuICAgICAgdGhpcy5zcHhTZWFyY2hDdXN0b21lci5lbWl0KGRhdGEudmFsdWVQYWlyKTtcbiAgICB9XG4gIH1cblxuICBvblN1Ym1pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1Ym1pdC5lbWl0KHtcbiAgICAgIGN0cmxDYXRlZ29yeTogdGhpcy5jdHJsQ2F0ZWdvcnkudmFsdWUsXG4gICAgICBjdHJsQ29udGFpbmVyU3RhdHVzOiB0aGlzLmN0cmxDb250YWluZXJTdGF0dXMudmFsdWUsXG4gICAgICBjdHJsQ29udGFpbmVyVHlwZTogdGhpcy5jdHJsQ29udGFpbmVyVHlwZS52YWx1ZSxcbiAgICAgIGN0cmxDdXN0b21lcjogdGhpcy5jdHJsQ29udGFpbmVyVHlwZS52YWx1ZSxcbiAgICAgIGN0cmxEZXBvdDogdGhpcy5jdHJsRGVwb3QudmFsdWUsXG4gICAgICBjdHJsTG9jYXRpb246IHRoaXMuY3RybExvY2F0aW9uLnZhbHVlLFxuICAgIH0pO1xuICB9XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIGNsYXNzPVwibWF4LXctbGcgbXgtYXV0byBmbGV4IGZsZXgtY29sIGdhcC0zXCIgKG5nU3VibWl0KT1cIm9uU3VibWl0KClcIj5cbiAgPHNweC1mb3JtLXZpZXdcbiAgICBbc3B4Rm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiXG4gICAgW3NweEZvcm1dPVwiZm9ybVwiXG4gICAgW3NweFN1Z2dlc3Rpb25zXT1cInN1Z2dlc3Rpb25zXCJcbiAgICAoc3B4Qmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXG4gICAgKHNweFNlYXJjaCk9XCJvblNlYXJjaCgkZXZlbnQpXCI+XG4gIDwvc3B4LWZvcm0tdmlldz5cbjwvZm9ybT4iXX0=