ngx-sumax-erp-components 1.5.0 → 1.6.0-beta.97

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.
@@ -0,0 +1,20 @@
1
+ import { CommonModule } from "@angular/common";
2
+ import { NgModule } from "@angular/core";
3
+ import { MatMenuModule } from "@angular/material/menu";
4
+ import { MatTooltipModule } from "@angular/material/tooltip";
5
+ import { ScCellRendererButtonComponent, ScMenuPanelComponent } from "./sc-cell-render-button.component";
6
+ import * as i0 from "@angular/core";
7
+ export class ScCellRendererButtonModule {
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ScCellRendererButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.11", ngImport: i0, type: ScCellRendererButtonModule, declarations: [ScCellRendererButtonComponent, ScMenuPanelComponent], imports: [CommonModule, MatMenuModule, MatTooltipModule], exports: [ScCellRendererButtonComponent, ScMenuPanelComponent] }); }
10
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ScCellRendererButtonModule, imports: [CommonModule, MatMenuModule, MatTooltipModule] }); }
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ScCellRendererButtonModule, decorators: [{
13
+ type: NgModule,
14
+ args: [{
15
+ declarations: [ScCellRendererButtonComponent, ScMenuPanelComponent],
16
+ imports: [CommonModule, MatMenuModule, MatTooltipModule],
17
+ exports: [ScCellRendererButtonComponent, ScMenuPanelComponent],
18
+ }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2VsbC1yZW5kZXItYnV0dG9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdW1heC1lcnAtY29tcG9uZW50L3NyYy9saWIvc2MtYWctZ3JpZC9jZWxsLXJlbmRlci9zYy1jZWxsLXJlbmRlci1idXR0b24vc2MtY2VsbC1yZW5kZXItYnV0dG9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLDZCQUE2QixFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7O0FBT3hHLE1BQU0sT0FBTywwQkFBMEI7K0dBQTFCLDBCQUEwQjtnSEFBMUIsMEJBQTBCLGlCQUp0Qiw2QkFBNkIsRUFBRSxvQkFBb0IsYUFDeEQsWUFBWSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsYUFDN0MsNkJBQTZCLEVBQUUsb0JBQW9CO2dIQUVsRCwwQkFBMEIsWUFIM0IsWUFBWSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0I7OzRGQUc1QywwQkFBMEI7a0JBTHRDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsNkJBQTZCLEVBQUUsb0JBQW9CLENBQUM7b0JBQ25FLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLENBQUM7b0JBQ3hELE9BQU8sRUFBRSxDQUFDLDZCQUE2QixFQUFFLG9CQUFvQixDQUFDO2lCQUMvRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudVwiO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwXCI7XG5pbXBvcnQgeyBTY0NlbGxSZW5kZXJlckJ1dHRvbkNvbXBvbmVudCwgU2NNZW51UGFuZWxDb21wb25lbnQgfSBmcm9tIFwiLi9zYy1jZWxsLXJlbmRlci1idXR0b24uY29tcG9uZW50XCI7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1NjQ2VsbFJlbmRlcmVyQnV0dG9uQ29tcG9uZW50LCBTY01lbnVQYW5lbENvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdE1lbnVNb2R1bGUsIE1hdFRvb2x0aXBNb2R1bGVdLFxuICBleHBvcnRzOiBbU2NDZWxsUmVuZGVyZXJCdXR0b25Db21wb25lbnQsIFNjTWVudVBhbmVsQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgU2NDZWxsUmVuZGVyZXJCdXR0b25Nb2R1bGUge31cbiJdfQ==
@@ -1,27 +1,27 @@
1
- import { NoRowsOverlayDefaultComponent } from './no-rows-overlay/noRowsOverlayDefault.component';
2
- import { ScCellRendererButtonComponent, ScMenuPanelComponent } from './sc-cell-render-button/sc-cell-render-button.component';
3
- import { ScCellRenderCheckboxListComponent } from './sc-cell-render-checkbox-list/sc-cell-render-checkbox-list.component';
4
- import { ScCellRenderSelectComponent } from './sc-cell-render-select/sc-cell-render-select.component';
5
- import { ScCellRenderToggleComponent } from './sc-cell-render-toggle/sc-cell-render-toggle.component';
1
+ import { NoRowsOverlayDefaultComponent } from "./no-rows-overlay/noRowsOverlayDefault.component";
2
+ import { ScCellRendererButtonComponent, ScMenuPanelComponent } from "./sc-cell-render-button/sc-cell-render-button.component";
3
+ import { ScCellRenderCheckboxListComponent } from "./sc-cell-render-checkbox-list/sc-cell-render-checkbox-list.component";
4
+ import { ScCellRenderSelectComponent } from "./sc-cell-render-select/sc-cell-render-select.component";
5
+ import { ScCellRenderToggleComponent } from "./sc-cell-render-toggle/sc-cell-render-toggle.component";
6
6
  export const scCellRendererFramework = {
7
7
  scCellRendererButtonComponent: ScCellRendererButtonComponent,
8
8
  scCellRenderCheckboxListComponent: ScCellRenderCheckboxListComponent,
9
9
  scCellRenderSelectComponent: ScCellRenderSelectComponent,
10
10
  scCellRenderToggleComponent: ScCellRenderToggleComponent,
11
- noRowsOverlayDefault: NoRowsOverlayDefaultComponent
11
+ noRowsOverlayDefault: NoRowsOverlayDefaultComponent,
12
12
  };
13
13
  export const scCellRendererComponents = [
14
- ScCellRendererButtonComponent,
14
+ // ScCellRendererButtonComponent,
15
15
  ScCellRenderCheckboxListComponent,
16
16
  ScCellRenderSelectComponent,
17
17
  ScCellRenderToggleComponent,
18
- ScMenuPanelComponent
18
+ // ScMenuPanelComponent,
19
19
  ];
20
20
  export const scComponents = {
21
- 'scCellRendererButtonComponent': ScCellRendererButtonComponent,
22
- 'scCellRenderCheckboxListComponent': ScCellRenderCheckboxListComponent,
23
- 'scCellRenderSelectComponent': ScCellRenderSelectComponent,
24
- 'scCellRenderToggleComponent': ScCellRenderToggleComponent,
25
- 'noRowsOverlayDefault': ScMenuPanelComponent
21
+ scCellRendererButtonComponent: ScCellRendererButtonComponent,
22
+ scCellRenderCheckboxListComponent: ScCellRenderCheckboxListComponent,
23
+ scCellRenderSelectComponent: ScCellRenderSelectComponent,
24
+ scCellRenderToggleComponent: ScCellRenderToggleComponent,
25
+ noRowsOverlayDefault: ScMenuPanelComponent,
26
26
  };
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2VsbC1yZW5kZXItY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN1bWF4LWVycC1jb21wb25lbnQvc3JjL2xpYi9zYy1hZy1ncmlkL2NlbGwtcmVuZGVyL3NjLWNlbGwtcmVuZGVyLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUM5SCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx1RUFBdUUsQ0FBQztBQUMxSCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUV0RyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRztJQUN0Qyw2QkFBNkIsRUFBRSw2QkFBNkI7SUFDNUQsaUNBQWlDLEVBQUUsaUNBQWlDO0lBQ3BFLDJCQUEyQixFQUFFLDJCQUEyQjtJQUN4RCwyQkFBMkIsRUFBRSwyQkFBMkI7SUFDeEQsb0JBQW9CLEVBQUUsNkJBQTZCO0NBQ25ELENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRztJQUN2Qyw2QkFBNkI7SUFDN0IsaUNBQWlDO0lBQ2pDLDJCQUEyQjtJQUMzQiwyQkFBMkI7SUFDM0Isb0JBQW9CO0NBQ3BCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUc7SUFDM0IsK0JBQStCLEVBQUcsNkJBQTZCO0lBQy9ELG1DQUFtQyxFQUFHLGlDQUFpQztJQUN2RSw2QkFBNkIsRUFBRywyQkFBMkI7SUFDM0QsNkJBQTZCLEVBQUcsMkJBQTJCO0lBQzNELHNCQUFzQixFQUFHLG9CQUFvQjtDQUM3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTm9Sb3dzT3ZlcmxheURlZmF1bHRDb21wb25lbnQgfSBmcm9tICcuL25vLXJvd3Mtb3ZlcmxheS9ub1Jvd3NPdmVybGF5RGVmYXVsdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2NDZWxsUmVuZGVyZXJCdXR0b25Db21wb25lbnQsIFNjTWVudVBhbmVsQ29tcG9uZW50IH0gZnJvbSAnLi9zYy1jZWxsLXJlbmRlci1idXR0b24vc2MtY2VsbC1yZW5kZXItYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTY0NlbGxSZW5kZXJDaGVja2JveExpc3RDb21wb25lbnQgfSBmcm9tICcuL3NjLWNlbGwtcmVuZGVyLWNoZWNrYm94LWxpc3Qvc2MtY2VsbC1yZW5kZXItY2hlY2tib3gtbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2NDZWxsUmVuZGVyU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9zYy1jZWxsLXJlbmRlci1zZWxlY3Qvc2MtY2VsbC1yZW5kZXItc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTY0NlbGxSZW5kZXJUb2dnbGVDb21wb25lbnQgfSBmcm9tICcuL3NjLWNlbGwtcmVuZGVyLXRvZ2dsZS9zYy1jZWxsLXJlbmRlci10b2dnbGUuY29tcG9uZW50JztcblxuZXhwb3J0IGNvbnN0IHNjQ2VsbFJlbmRlcmVyRnJhbWV3b3JrID0ge1xuXHRzY0NlbGxSZW5kZXJlckJ1dHRvbkNvbXBvbmVudDogU2NDZWxsUmVuZGVyZXJCdXR0b25Db21wb25lbnQsXG5cdHNjQ2VsbFJlbmRlckNoZWNrYm94TGlzdENvbXBvbmVudDogU2NDZWxsUmVuZGVyQ2hlY2tib3hMaXN0Q29tcG9uZW50LFxuXHRzY0NlbGxSZW5kZXJTZWxlY3RDb21wb25lbnQ6IFNjQ2VsbFJlbmRlclNlbGVjdENvbXBvbmVudCxcblx0c2NDZWxsUmVuZGVyVG9nZ2xlQ29tcG9uZW50OiBTY0NlbGxSZW5kZXJUb2dnbGVDb21wb25lbnQsXG5cdG5vUm93c092ZXJsYXlEZWZhdWx0OiBOb1Jvd3NPdmVybGF5RGVmYXVsdENvbXBvbmVudFxufTtcbmV4cG9ydCBjb25zdCBzY0NlbGxSZW5kZXJlckNvbXBvbmVudHMgPSBbXG5cdFNjQ2VsbFJlbmRlcmVyQnV0dG9uQ29tcG9uZW50LFxuXHRTY0NlbGxSZW5kZXJDaGVja2JveExpc3RDb21wb25lbnQsXG5cdFNjQ2VsbFJlbmRlclNlbGVjdENvbXBvbmVudCxcblx0U2NDZWxsUmVuZGVyVG9nZ2xlQ29tcG9uZW50LFxuXHRTY01lbnVQYW5lbENvbXBvbmVudFxuXTtcblxuZXhwb3J0IGNvbnN0IHNjQ29tcG9uZW50cyA9IHtcblx0J3NjQ2VsbFJlbmRlcmVyQnV0dG9uQ29tcG9uZW50JyA6IFNjQ2VsbFJlbmRlcmVyQnV0dG9uQ29tcG9uZW50LFxuXHQnc2NDZWxsUmVuZGVyQ2hlY2tib3hMaXN0Q29tcG9uZW50JyA6IFNjQ2VsbFJlbmRlckNoZWNrYm94TGlzdENvbXBvbmVudCxcblx0J3NjQ2VsbFJlbmRlclNlbGVjdENvbXBvbmVudCcgOiBTY0NlbGxSZW5kZXJTZWxlY3RDb21wb25lbnQsXG5cdCdzY0NlbGxSZW5kZXJUb2dnbGVDb21wb25lbnQnIDogU2NDZWxsUmVuZGVyVG9nZ2xlQ29tcG9uZW50LFxuXHQnbm9Sb3dzT3ZlcmxheURlZmF1bHQnIDogU2NNZW51UGFuZWxDb21wb25lbnRcbn07XG4iXX0=
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2VsbC1yZW5kZXItY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN1bWF4LWVycC1jb21wb25lbnQvc3JjL2xpYi9zYy1hZy1ncmlkL2NlbGwtcmVuZGVyL3NjLWNlbGwtcmVuZGVyLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUM5SCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx1RUFBdUUsQ0FBQztBQUMxSCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUV0RyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRztJQUNyQyw2QkFBNkIsRUFBRSw2QkFBNkI7SUFDNUQsaUNBQWlDLEVBQUUsaUNBQWlDO0lBQ3BFLDJCQUEyQixFQUFFLDJCQUEyQjtJQUN4RCwyQkFBMkIsRUFBRSwyQkFBMkI7SUFDeEQsb0JBQW9CLEVBQUUsNkJBQTZCO0NBQ3BELENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRztJQUN0QyxpQ0FBaUM7SUFDakMsaUNBQWlDO0lBQ2pDLDJCQUEyQjtJQUMzQiwyQkFBMkI7SUFDM0IsMEJBQTBCO0NBQzNCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUc7SUFDMUIsNkJBQTZCLEVBQUUsNkJBQTZCO0lBQzVELGlDQUFpQyxFQUFFLGlDQUFpQztJQUNwRSwyQkFBMkIsRUFBRSwyQkFBMkI7SUFDeEQsMkJBQTJCLEVBQUUsMkJBQTJCO0lBQ3hELG9CQUFvQixFQUFFLG9CQUFvQjtDQUMzQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTm9Sb3dzT3ZlcmxheURlZmF1bHRDb21wb25lbnQgfSBmcm9tIFwiLi9uby1yb3dzLW92ZXJsYXkvbm9Sb3dzT3ZlcmxheURlZmF1bHQuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBTY0NlbGxSZW5kZXJlckJ1dHRvbkNvbXBvbmVudCwgU2NNZW51UGFuZWxDb21wb25lbnQgfSBmcm9tIFwiLi9zYy1jZWxsLXJlbmRlci1idXR0b24vc2MtY2VsbC1yZW5kZXItYnV0dG9uLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgU2NDZWxsUmVuZGVyQ2hlY2tib3hMaXN0Q29tcG9uZW50IH0gZnJvbSBcIi4vc2MtY2VsbC1yZW5kZXItY2hlY2tib3gtbGlzdC9zYy1jZWxsLXJlbmRlci1jaGVja2JveC1saXN0LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgU2NDZWxsUmVuZGVyU2VsZWN0Q29tcG9uZW50IH0gZnJvbSBcIi4vc2MtY2VsbC1yZW5kZXItc2VsZWN0L3NjLWNlbGwtcmVuZGVyLXNlbGVjdC5jb21wb25lbnRcIjtcbmltcG9ydCB7IFNjQ2VsbFJlbmRlclRvZ2dsZUNvbXBvbmVudCB9IGZyb20gXCIuL3NjLWNlbGwtcmVuZGVyLXRvZ2dsZS9zYy1jZWxsLXJlbmRlci10b2dnbGUuY29tcG9uZW50XCI7XG5cbmV4cG9ydCBjb25zdCBzY0NlbGxSZW5kZXJlckZyYW1ld29yayA9IHtcbiAgc2NDZWxsUmVuZGVyZXJCdXR0b25Db21wb25lbnQ6IFNjQ2VsbFJlbmRlcmVyQnV0dG9uQ29tcG9uZW50LFxuICBzY0NlbGxSZW5kZXJDaGVja2JveExpc3RDb21wb25lbnQ6IFNjQ2VsbFJlbmRlckNoZWNrYm94TGlzdENvbXBvbmVudCxcbiAgc2NDZWxsUmVuZGVyU2VsZWN0Q29tcG9uZW50OiBTY0NlbGxSZW5kZXJTZWxlY3RDb21wb25lbnQsXG4gIHNjQ2VsbFJlbmRlclRvZ2dsZUNvbXBvbmVudDogU2NDZWxsUmVuZGVyVG9nZ2xlQ29tcG9uZW50LFxuICBub1Jvd3NPdmVybGF5RGVmYXVsdDogTm9Sb3dzT3ZlcmxheURlZmF1bHRDb21wb25lbnQsXG59O1xuZXhwb3J0IGNvbnN0IHNjQ2VsbFJlbmRlcmVyQ29tcG9uZW50cyA9IFtcbiAgLy8gU2NDZWxsUmVuZGVyZXJCdXR0b25Db21wb25lbnQsXG4gIFNjQ2VsbFJlbmRlckNoZWNrYm94TGlzdENvbXBvbmVudCxcbiAgU2NDZWxsUmVuZGVyU2VsZWN0Q29tcG9uZW50LFxuICBTY0NlbGxSZW5kZXJUb2dnbGVDb21wb25lbnQsXG4gIC8vICAgU2NNZW51UGFuZWxDb21wb25lbnQsXG5dO1xuXG5leHBvcnQgY29uc3Qgc2NDb21wb25lbnRzID0ge1xuICBzY0NlbGxSZW5kZXJlckJ1dHRvbkNvbXBvbmVudDogU2NDZWxsUmVuZGVyZXJCdXR0b25Db21wb25lbnQsXG4gIHNjQ2VsbFJlbmRlckNoZWNrYm94TGlzdENvbXBvbmVudDogU2NDZWxsUmVuZGVyQ2hlY2tib3hMaXN0Q29tcG9uZW50LFxuICBzY0NlbGxSZW5kZXJTZWxlY3RDb21wb25lbnQ6IFNjQ2VsbFJlbmRlclNlbGVjdENvbXBvbmVudCxcbiAgc2NDZWxsUmVuZGVyVG9nZ2xlQ29tcG9uZW50OiBTY0NlbGxSZW5kZXJUb2dnbGVDb21wb25lbnQsXG4gIG5vUm93c092ZXJsYXlEZWZhdWx0OiBTY01lbnVQYW5lbENvbXBvbmVudCxcbn07XG4iXX0=
@@ -0,0 +1,15 @@
1
+ export class FilterPaginable {
2
+ constructor(page, pageSize) {
3
+ this.page = page;
4
+ this.pageSize = pageSize;
5
+ this.sortBy = "";
6
+ this.sortDirection = "";
7
+ }
8
+ getPathFilter() {
9
+ if (this.sortBy === "") {
10
+ return `?page=${this.page}&size=${this.pageSize}`;
11
+ }
12
+ return `?page=${this.page}&size=${this.pageSize}&sortBy=${this.sortBy}&sortDirection=${this.sortDirection}`;
13
+ }
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLWFnLWdyaWQtcGFnaW5hYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN1bWF4LWVycC1jb21wb25lbnQvc3JjL2xpYi9zYy1hZy1ncmlkL3NjLWFnLWdyaWQtcGFnaW5hYmxlL21vZGVscy1hZy1ncmlkLXBhZ2luYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvQkEsTUFBTSxPQUFPLGVBQWU7SUFNMUIsWUFBWSxJQUFZLEVBQUUsUUFBZ0I7UUFDeEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDdkIsT0FBTyxTQUFTLElBQUksQ0FBQyxJQUFJLFNBQVMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3BELENBQUM7UUFDRCxPQUFPLFNBQVMsSUFBSSxDQUFDLElBQUksU0FBUyxJQUFJLENBQUMsUUFBUSxXQUFXLElBQUksQ0FBQyxNQUFNLGtCQUFrQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDOUcsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBQYWdpbmFibGU8VD4ge1xuICBkYXRhPzogVFtdO1xuICAvKipcbiAgICogVG90YWwgZGUgcmVnaXN0cm9zXG4gICAqL1xuICB0b3RhbEl0ZW1zPzogbnVtYmVyO1xuICAvKipcbiAgICogTsO6bWVybyBkZSBww6FnaW5hIGxhIGFjdHVhbFxuICAgKi9cbiAgcGFnZT86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRhbWHDsW8gZGUgbGEgcMOhZ2luYVxuICAgKi9cbiAgc2l6ZT86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRvdGFsIGRlIHDDoWdpbmFzXG4gICAqL1xuICB0b3RhbFBhZ2U/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBGaWx0ZXJQYWdpbmFibGUge1xuICBwYWdlPzogbnVtYmVyO1xuICBwYWdlU2l6ZT86IG51bWJlcjtcbiAgc29ydEJ5Pzogc3RyaW5nO1xuICBzb3J0RGlyZWN0aW9uPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHBhZ2U6IG51bWJlciwgcGFnZVNpemU6IG51bWJlcikge1xuICAgIHRoaXMucGFnZSA9IHBhZ2U7XG4gICAgdGhpcy5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xuICAgIHRoaXMuc29ydEJ5ID0gXCJcIjtcbiAgICB0aGlzLnNvcnREaXJlY3Rpb24gPSBcIlwiO1xuICB9XG5cbiAgZ2V0UGF0aEZpbHRlcigpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnNvcnRCeSA9PT0gXCJcIikge1xuICAgICAgcmV0dXJuIGA/cGFnZT0ke3RoaXMucGFnZX0mc2l6ZT0ke3RoaXMucGFnZVNpemV9YDtcbiAgICB9XG4gICAgcmV0dXJuIGA/cGFnZT0ke3RoaXMucGFnZX0mc2l6ZT0ke3RoaXMucGFnZVNpemV9JnNvcnRCeT0ke3RoaXMuc29ydEJ5fSZzb3J0RGlyZWN0aW9uPSR7dGhpcy5zb3J0RGlyZWN0aW9ufWA7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,341 @@
1
+ import { CommonModule } from "@angular/common";
2
+ import { Component, EventEmitter, inject, Input, Output, ViewChild, } from "@angular/core";
3
+ import { AgGridModule } from "ag-grid-angular";
4
+ import { EMPTY, Subscription, tap } from "rxjs";
5
+ import { EnumButtonType } from "../../utils/IScAgGrid";
6
+ import { ScCellRenderButtonService } from "../cell-render/sc-cell-render-button/sc-cell-render-button.component";
7
+ import { ScCellRendererButtonModule } from "../cell-render/sc-cell-render-button/sc-cell-render-button.module";
8
+ import { scComponents } from "../cell-render/sc-cell-render-config";
9
+ import { FilterPaginable } from "./models-ag-grid-paginable";
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@angular/common";
12
+ import * as i2 from "ag-grid-angular";
13
+ export class ScAgGridPaginableComponent {
14
+ /**
15
+ * @description Componentes de la `grilla`
16
+ * @default undefined
17
+ */
18
+ set frameworkComponents(value) {
19
+ this._frameworkComponents = { ...this._frameworkComponents, ...value };
20
+ }
21
+ /**
22
+ * @description Para poder agregar más objetos al contexto
23
+ */
24
+ set context(value) {
25
+ this._context = { ...this._context, ...value };
26
+ }
27
+ // GETTERS
28
+ getTotalPageList(currentPage) {
29
+ let start = currentPage - this.maxVisiblePages;
30
+ let end = currentPage + this.maxVisiblePages;
31
+ // Ajuste cuando está al inicio
32
+ if (start < 1) {
33
+ start = 1;
34
+ end = this.maxVisiblePages * 2 + 1;
35
+ }
36
+ // Ajuste cuando está al final
37
+ if (end > this.totalPage) {
38
+ end = this.totalPage;
39
+ start = Math.max(1, end - this.maxVisiblePages * 2);
40
+ }
41
+ return Array.from({ length: end - start + 1 }, (_, i) => start + i);
42
+ }
43
+ get suppressRowClickSelection() {
44
+ return this.rowSelection === "single" ? false : true;
45
+ }
46
+ constructor(changeDetectorRef) {
47
+ this.changeDetectorRef = changeDetectorRef;
48
+ // INPUTS
49
+ /**
50
+ * @description Opciones de tamaño de página
51
+ * @default '[5, 10, 15, 20, 25]'
52
+ */
53
+ this.pageSizeOptions = [5, 10, 15, 20, 25, 50];
54
+ /**
55
+ * @description Array de columnas que se mostrara en la `grilla`
56
+ * @default undefined
57
+ */
58
+ this.columnDefs = [];
59
+ /**
60
+ * @description Función que determina si una fila es seleccionable
61
+ * @default () => true
62
+ */
63
+ this.isRowSelectable = () => true;
64
+ /**
65
+ * @description Configuración de selección de filas
66
+ * @default 'single'
67
+ * @enum {'single' | 'multiple'}
68
+ */
69
+ this.rowSelection = "single";
70
+ /**
71
+ * @description Configuración de layout de la `grilla`
72
+ * @default 'normal'
73
+ * @enum {'normal' | 'autoHeight'}
74
+ */
75
+ /**
76
+ * @description Tamaño de la `grilla`
77
+ * @default '20em'
78
+ */
79
+ this.height = "20em";
80
+ this.domLayout = "normal";
81
+ /**
82
+ * @description Función que determina el estilo de una fila
83
+ * @default () => undefined
84
+ */
85
+ this.getRowStyle = () => undefined;
86
+ /**
87
+ * @description Datos de la `grilla`
88
+ * @default undefined
89
+ */
90
+ this.serviceSearch = () => EMPTY;
91
+ /**
92
+ * @description Datos de la búsqueda
93
+ * @default undefined
94
+ */
95
+ this.requestBody = {};
96
+ // OUTPUTS
97
+ /**
98
+ * @description Evento que se dispara cuando se hace clic en una fila
99
+ * @default undefined
100
+ */
101
+ this.rowClicked = new EventEmitter();
102
+ /**
103
+ * @description Evento que se dispara cuando se hace clic doble en una fila
104
+ * @default undefined
105
+ */
106
+ this.rowDoubleClicked = new EventEmitter();
107
+ /**
108
+ * @description Evento que se dispara cuando se selecciona una fila
109
+ * @default undefined
110
+ */
111
+ this.rowSelected = new EventEmitter();
112
+ /**
113
+ * @description Evento que se dispara cuando se hace clic en una acción de la `grilla`
114
+ * @default undefined
115
+ */
116
+ this.buttonActionAgGrid = new EventEmitter();
117
+ /**
118
+ * @description Evento que se dispara cuando se hace clic en una acción de la `cabecera`
119
+ * @default undefined
120
+ */
121
+ this.buttonActionHeader = new EventEmitter();
122
+ /**
123
+ * @description Evento que se dispara cuando se hace clic en una acción de la `grilla`
124
+ * @default undefined
125
+ */
126
+ this.editRow = new EventEmitter();
127
+ /**
128
+ * @description Evento que se dispara cuando se hace clic en una acción de la `grilla`
129
+ * @default undefined
130
+ */
131
+ this.deleteRow = new EventEmitter();
132
+ // VARIABLES
133
+ this.totalItems = 0;
134
+ this.currentPage = 0;
135
+ this.pageSize = 5;
136
+ this.totalPage = 0;
137
+ this.filter = new FilterPaginable(this.currentPage, this.pageSize);
138
+ this._subscription$ = new Subscription();
139
+ this._frameworkComponents = { ...scComponents };
140
+ this._context = { componentParent: this };
141
+ this._configButtonsDefaultAgGrid = [];
142
+ this.columnDefsAndAddCellActions = [];
143
+ this._scCellRenderButtonService = inject(ScCellRenderButtonService);
144
+ this.maxVisiblePages = 2;
145
+ this.overlayNoRowsTemplate = `<span class="ag-overlay-loading-center border-0 bg-transparent shadow-none">
146
+ No se encontraron registros...
147
+ </span>`;
148
+ this.overlayLoadingTemplate = `<span class="ag-overlay-loading-top d-flex align-items-center border-0 bg-white shadow p-4 text-info" style="height: 20px;">
149
+ <img src="assets/media-demo/loading.gif" height="20" width="25" class="mr-2">
150
+ <strong>Cargando registros</strong>
151
+ </span>
152
+ `;
153
+ }
154
+ ngOnInit() {
155
+ this._subscription$.add(this._scCellRenderButtonService.handlerButtonAction$.subscribe(({ index, action, isRightClick }) => {
156
+ if (action == null)
157
+ return;
158
+ if (action.trim() === "")
159
+ return;
160
+ if (index !== -1) {
161
+ this.onButtonActionAgGridEmit(index, action, isRightClick);
162
+ return;
163
+ }
164
+ this.onButtonActionHeaderEmit(action);
165
+ }));
166
+ }
167
+ ngOnChanges(changes) {
168
+ if (changes["configButtonsAction"]) {
169
+ this._initActionButton();
170
+ }
171
+ if (changes["requestBody"] && !changes["requestBody"].firstChange) {
172
+ this._fillAgGrid();
173
+ }
174
+ }
175
+ ngOnDestroy() {
176
+ this._subscriptionRowData$?.unsubscribe();
177
+ this._subscription$.unsubscribe();
178
+ }
179
+ onButtonActionHeaderEmit(typeButton) {
180
+ const rowsSelected = this.agGrid?.api?.getSelectedRows();
181
+ this.buttonActionHeader.emit([typeButton, rowsSelected]);
182
+ }
183
+ onGridReady() {
184
+ this._fillAgGrid();
185
+ }
186
+ _fillAgGrid() {
187
+ this._initActionButton();
188
+ if (this._subscriptionRowData$) {
189
+ this._subscriptionRowData$.unsubscribe();
190
+ this.agGrid?.api.setGridOption("rowData", []);
191
+ this.agGrid?.api?.showLoadingOverlay();
192
+ }
193
+ this._subscriptionRowData$ = this.serviceSearch(this.filter, this.requestBody)
194
+ .pipe(tap((data) => {
195
+ this.totalItems = data.totalItems ?? 0;
196
+ this.currentPage = Number(data.page ?? 0);
197
+ this.pageSize = data.size ?? 0;
198
+ this.totalPage = data.totalPage ?? 0;
199
+ this.agGrid?.api.setGridOption("rowData", data.data ?? []);
200
+ this.changeDetectorRef.detectChanges();
201
+ }))
202
+ .subscribe();
203
+ }
204
+ _initActionButton() {
205
+ this._configButtonsDefaultAgGrid = [...(this.configButtonsAction?.agGrid?.actions || [])];
206
+ if (!this.configButtonsAction?.agGrid?.actions?.length) {
207
+ this.columnDefsAndAddCellActions = [...this.columnDefs];
208
+ return;
209
+ }
210
+ const length = this._configButtonsDefaultAgGrid.filter(({ hide }) => {
211
+ return !this._hideFunc(hide);
212
+ }).length;
213
+ const width = length == 2 ? 90 : 80;
214
+ const minWidth = length > 2 ? length * 33 + 10 : width;
215
+ const newColumns = {
216
+ headerName: "Acciones",
217
+ headerClass: "ag-header__center",
218
+ field: "",
219
+ width: minWidth,
220
+ minWidth,
221
+ maxWidth: minWidth,
222
+ cellClass: ["d-flex", "justify-content-center", "align-items-center"],
223
+ cellStyle: { overflow: "visible" },
224
+ resizable: false,
225
+ sortable: false,
226
+ cellRenderer: "scCellRendererButtonComponent",
227
+ pinned: "right",
228
+ suppressMenu: true,
229
+ lockPosition: true,
230
+ };
231
+ this.columnDefsAndAddCellActions = this._hideAgGridMenuAction() ? [...this.columnDefs] : [...this.columnDefs, newColumns];
232
+ }
233
+ onButtonActionAgGridEmit(rowIndex, typeButton, isRightClick) {
234
+ const IRowNode = this.agGrid?.api?.getDisplayedRowAtIndex(rowIndex);
235
+ if (IRowNode) {
236
+ if (typeButton === EnumButtonType.TYPE_EDIT) {
237
+ this.editRow.emit(IRowNode);
238
+ return;
239
+ }
240
+ if (typeButton === EnumButtonType.TYPE_DELETE) {
241
+ this.deleteRow.emit([this.agGrid?.api, [IRowNode.data]]);
242
+ return;
243
+ }
244
+ this.buttonActionAgGrid.emit([typeButton, IRowNode, isRightClick]);
245
+ }
246
+ }
247
+ _hideFunc(hide) {
248
+ if (hide == null)
249
+ return false;
250
+ if (typeof hide == "function")
251
+ return hide();
252
+ return hide;
253
+ }
254
+ _hideAgGridMenuAction() {
255
+ if (this.configButtonsAction == null)
256
+ return true;
257
+ return (this.configButtonsAction?.agGrid?.actions.every(({ hide }) => {
258
+ return this._hideFunc(hide);
259
+ }) ?? true);
260
+ }
261
+ onSortChanged() {
262
+ const sortModel = this.agGrid.api
263
+ .getColumnState()
264
+ .filter((col) => col.sort != null)
265
+ .map((col) => ({
266
+ field: col.colId,
267
+ sort: col.sort,
268
+ }));
269
+ if (sortModel.length === 0) {
270
+ this.filter.sortBy = "";
271
+ this.filter.sortDirection = "";
272
+ }
273
+ else if (sortModel.length === 1 && sortModel[0].field !== "1") {
274
+ const sortBy = sortModel[0].field;
275
+ const sortDirection = sortModel[0].sort;
276
+ this.filter.sortBy = sortBy;
277
+ this.filter.sortDirection = sortDirection;
278
+ }
279
+ this._fillAgGrid();
280
+ }
281
+ // PAGINATION
282
+ goToPage(page) {
283
+ if (page - 1 === this.currentPage)
284
+ return;
285
+ this.filter.page = page - 1;
286
+ this.currentPage = page - 1;
287
+ this._fillAgGrid();
288
+ }
289
+ changePageSize(event) {
290
+ this.filter.pageSize = Number(event.target.value);
291
+ this._fillAgGrid();
292
+ }
293
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ScAgGridPaginableComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
294
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ScAgGridPaginableComponent, isStandalone: true, selector: "sc-ag-grid-paginable", inputs: { pageSizeOptions: "pageSizeOptions", configButtonsAction: "configButtonsAction", columnDefs: "columnDefs", isRowSelectable: "isRowSelectable", rowSelection: "rowSelection", height: "height", domLayout: "domLayout", getRowStyle: "getRowStyle", serviceSearch: "serviceSearch", requestBody: "requestBody", frameworkComponents: "frameworkComponents", context: "context" }, outputs: { rowClicked: "rowClicked", rowDoubleClicked: "rowDoubleClicked", rowSelected: "rowSelected", buttonActionAgGrid: "buttonActionAgGrid", buttonActionHeader: "buttonActionHeader", editRow: "editRow", deleteRow: "deleteRow" }, viewQueries: [{ propertyName: "agGrid", first: true, predicate: ["agGridPaginable"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-12\" [ngStyle]=\"{ width: '100%', height: this.height }\">\n <ag-grid-angular\n #agGridPaginable\n style=\"width: 100%; height: 100%\"\n class=\"ag-theme-balham\"\n [columnDefs]=\"columnDefsAndAddCellActions\"\n [components]=\"_frameworkComponents\"\n [context]=\"_context\"\n [rowSelection]=\"rowSelection\"\n [isRowSelectable]=\"isRowSelectable\"\n [domLayout]=\"domLayout\"\n [animateRows]=\"true\"\n [suppressMoveWhenRowDragging]=\"false\"\n [getRowStyle]=\"getRowStyle\"\n [enableRangeSelection]=\"false\"\n [suppressRowTransform]=\"false\"\n [overlayNoRowsTemplate]=\"overlayNoRowsTemplate\"\n [overlayLoadingTemplate]=\"overlayLoadingTemplate\"\n [suppressPropertyNamesCheck]=\"true\"\n [suppressRowClickSelection]=\"suppressRowClickSelection\"\n [paginationPageSize]=\"pageSize\"\n [pagination]=\"true\"\n [suppressPaginationPanel]=\"true\"\n (rowClicked)=\"rowClicked.emit($event)\"\n (rowDoubleClicked)=\"rowDoubleClicked.emit($event)\"\n (rowSelected)=\"rowSelected.emit($event)\"\n (gridReady)=\"onGridReady()\"\n (sortChanged)=\"onSortChanged()\"\n oncontextmenu=\"return false;\">\n </ag-grid-angular>\n </div>\n</div>\n\n<div class=\"d-flex mt-2 justify-content-center justify-content-sm-between sc-ag-grid__pagination\">\n <nav class=\"d-flex flex-wrap\" aria-label=\"AgGrid pagination\">\n <ul class=\"pagination p-0 m-0\">\n <li class=\"page-item\" [ngClass]=\"currentPage === 0 ? 'disabled' : ''\">\n <button class=\"page-link\" (click)=\"goToPage(1)\"><em class=\"fa fa-angle-double-left\"></em></button>\n </li>\n <li class=\"page-item\" [ngClass]=\"currentPage === 0 ? 'disabled' : ''\">\n <button class=\"page-link\" (click)=\"goToPage(currentPage)\"><em class=\"fa fa-angle-left\"></em></button>\n </li>\n <li *ngIf=\"currentPage > maxVisiblePages\">\n <button class=\"page-link disabled\">...</button>\n </li>\n <li class=\"page-item\" *ngFor=\"let n of getTotalPageList(currentPage + 1)\" [ngClass]=\"currentPage === n - 1 ? 'active' : ''\">\n <button class=\"page-link\" (click)=\"goToPage(n)\">{{ n }}</button>\n </li>\n <li *ngIf=\"currentPage < totalPage - maxVisiblePages - 1\">\n <button class=\"page-link disabled\">...</button>\n </li>\n <li class=\"page-item\" [ngClass]=\"currentPage === totalPage - 1 ? 'disabled' : ''\">\n <button class=\"page-link\" (click)=\"goToPage(currentPage + 2)\"><em class=\"fa fa-angle-right\"></em></button>\n </li>\n <li class=\"page-item\" [ngClass]=\"currentPage === totalPage - 1 ? 'disabled' : ''\">\n <button class=\"page-link\" (click)=\"goToPage(totalPage)\"><em class=\"fa fa-angle-double-right\"></em></button>\n </li>\n </ul>\n <div class=\"d-flex mx-2 align-items-center input-group-sm\">\n Mostrar\n <select class=\"custom-select mx-2\" (change)=\"changePageSize($event)\">\n <option *ngFor=\"let option of pageSizeOptions\" [value]=\"option\">\n {{ option }}\n </option>\n </select>\n registros\n </div>\n </nav>\n\n <div class=\"d-flex justify-content-end mt-2 mt-sm-0\">\n <div class=\"sc-ag-grid__pagination--total d-flex align-items-center flex-nowrap\">\n <span class=\"value\">{{ totalItems }}&nbsp;{{ totalItems > 1 ? \"Registros.\" : \"Registro.\" }}</span>\n <span class=\"label\">&nbsp;P&aacute;gina&nbsp;</span>\n <span class=\"value\">\n {{ currentPage + 1 }}\n </span>\n <span class=\"label\">&nbsp;de&nbsp;</span>\n <span class=\"value\">\n {{ totalPage }}\n </span>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: AgGridModule }, { kind: "component", type: i2.AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "columnMenu", "suppressMenuHide", "enableBrowserTooltips", "tooltipTrigger", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "tooltipShowMode", "tooltipInteraction", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "suppressCutToClipboard", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "dataTypeDefinitions", "maintainColumnOrder", "suppressFieldDotNotation", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressDragLeaveHidesColumns", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "autoSizeStrategy", "components", "editType", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterMovesDown", "enterMovesDownAfterEdit", "enterNavigatesVertically", "enterNavigatesVerticallyAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "quickFilterText", "cacheQuickFilter", "excludeHiddenColumnsFromQuickFilter", "includeHiddenColumnsInQuickFilter", "quickFilterParser", "quickFilterMatcher", "applyQuickFilterBeforePivotOrAgg", "excludeChildrenWhenTreeDataFiltering", "enableAdvancedFilter", "advancedFilterModel", "includeHiddenColumnsInAdvancedFilter", "advancedFilterParent", "advancedFilterBuilderParams", "suppressAdvancedFilterEval", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "enableChartToolPanelsButton", "suppressChartToolPanelsButton", "chartToolPanelsDef", "chartMenuItems", "loadingCellRenderer", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressParentsInRowNodes", "suppressTouch", "suppressFocusAfterRefresh", "suppressAsyncEvents", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "pagination", "paginationPageSize", "paginationPageSizeSelector", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotMaxGeneratedColumns", "pivotDefaultExpanded", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "suppressAggFuncInHeader", "alwaysAggregateAtRootLevel", "suppressAggAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "enableCellChangeFlash", "cellFlashDuration", "cellFlashDelay", "cellFadeDuration", "cellFadeDelay", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "fullWidthCellRenderer", "fullWidthCellRendererParams", "embedFullWidthRows", "suppressGroupMaintainValueType", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupLockGroupColumns", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupTotalRow", "grandTotalRow", "suppressStickyTotalRow", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "groupAllowUnbalanced", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "rowGroupPanelSuppressSort", "suppressGroupRowsSticky", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "suppressServerSideInfiniteScroll", "suppressServerSideFullWidthLoadingRow", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideEnableClientSideSort", "serverSideOnlyRefreshFilteredGroups", "serverSideFilterAllLevels", "serverSideSortOnServer", "serverSideFilterOnServer", "serverSidePivotResultFieldSeparator", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellFocus", "suppressHeaderFocus", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "gridId", "deltaSort", "treeDataDisplayType", "functionsPassive", "enableGroupEdit", "initialState", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processUnpinnedColumns", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "getLocaleText", "getDocument", "paginationNumberFormatter", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "getChildCount", "getServerSideGroupLevelParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthRow"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "columnMenuVisibleChanged", "contextMenuVisibleChanged", "cutStart", "cutEnd", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "columnHeaderMouseOver", "columnHeaderMouseLeave", "columnHeaderClicked", "columnHeaderContextMenu", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "undoStarted", "undoEnded", "redoStarted", "redoEnded", "rangeDeleteStart", "rangeDeleteEnd", "fillStart", "fillEnd", "filterOpened", "filterChanged", "filterModified", "advancedFilterBuilderVisibleChanged", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "gridReady", "gridPreDestroyed", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "stateUpdated", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pivotMaxColumnsExceeded", "pinnedRowDataChanged", "rowDataUpdated", "asyncTransactionsFlushed", "storeRefreshed", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "tooltipShow", "tooltipHide", "sortChanged", "columnRowGroupChangeRequest", "columnPivotChangeRequest", "columnValueChangeRequest", "columnAggFuncChangeRequest"] }, { kind: "ngmodule", type: ScCellRendererButtonModule }] }); }
295
+ }
296
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ScAgGridPaginableComponent, decorators: [{
297
+ type: Component,
298
+ args: [{ selector: "sc-ag-grid-paginable", standalone: true, imports: [CommonModule, AgGridModule, ScCellRendererButtonModule], template: "<div class=\"row\">\n <div class=\"col-12\" [ngStyle]=\"{ width: '100%', height: this.height }\">\n <ag-grid-angular\n #agGridPaginable\n style=\"width: 100%; height: 100%\"\n class=\"ag-theme-balham\"\n [columnDefs]=\"columnDefsAndAddCellActions\"\n [components]=\"_frameworkComponents\"\n [context]=\"_context\"\n [rowSelection]=\"rowSelection\"\n [isRowSelectable]=\"isRowSelectable\"\n [domLayout]=\"domLayout\"\n [animateRows]=\"true\"\n [suppressMoveWhenRowDragging]=\"false\"\n [getRowStyle]=\"getRowStyle\"\n [enableRangeSelection]=\"false\"\n [suppressRowTransform]=\"false\"\n [overlayNoRowsTemplate]=\"overlayNoRowsTemplate\"\n [overlayLoadingTemplate]=\"overlayLoadingTemplate\"\n [suppressPropertyNamesCheck]=\"true\"\n [suppressRowClickSelection]=\"suppressRowClickSelection\"\n [paginationPageSize]=\"pageSize\"\n [pagination]=\"true\"\n [suppressPaginationPanel]=\"true\"\n (rowClicked)=\"rowClicked.emit($event)\"\n (rowDoubleClicked)=\"rowDoubleClicked.emit($event)\"\n (rowSelected)=\"rowSelected.emit($event)\"\n (gridReady)=\"onGridReady()\"\n (sortChanged)=\"onSortChanged()\"\n oncontextmenu=\"return false;\">\n </ag-grid-angular>\n </div>\n</div>\n\n<div class=\"d-flex mt-2 justify-content-center justify-content-sm-between sc-ag-grid__pagination\">\n <nav class=\"d-flex flex-wrap\" aria-label=\"AgGrid pagination\">\n <ul class=\"pagination p-0 m-0\">\n <li class=\"page-item\" [ngClass]=\"currentPage === 0 ? 'disabled' : ''\">\n <button class=\"page-link\" (click)=\"goToPage(1)\"><em class=\"fa fa-angle-double-left\"></em></button>\n </li>\n <li class=\"page-item\" [ngClass]=\"currentPage === 0 ? 'disabled' : ''\">\n <button class=\"page-link\" (click)=\"goToPage(currentPage)\"><em class=\"fa fa-angle-left\"></em></button>\n </li>\n <li *ngIf=\"currentPage > maxVisiblePages\">\n <button class=\"page-link disabled\">...</button>\n </li>\n <li class=\"page-item\" *ngFor=\"let n of getTotalPageList(currentPage + 1)\" [ngClass]=\"currentPage === n - 1 ? 'active' : ''\">\n <button class=\"page-link\" (click)=\"goToPage(n)\">{{ n }}</button>\n </li>\n <li *ngIf=\"currentPage < totalPage - maxVisiblePages - 1\">\n <button class=\"page-link disabled\">...</button>\n </li>\n <li class=\"page-item\" [ngClass]=\"currentPage === totalPage - 1 ? 'disabled' : ''\">\n <button class=\"page-link\" (click)=\"goToPage(currentPage + 2)\"><em class=\"fa fa-angle-right\"></em></button>\n </li>\n <li class=\"page-item\" [ngClass]=\"currentPage === totalPage - 1 ? 'disabled' : ''\">\n <button class=\"page-link\" (click)=\"goToPage(totalPage)\"><em class=\"fa fa-angle-double-right\"></em></button>\n </li>\n </ul>\n <div class=\"d-flex mx-2 align-items-center input-group-sm\">\n Mostrar\n <select class=\"custom-select mx-2\" (change)=\"changePageSize($event)\">\n <option *ngFor=\"let option of pageSizeOptions\" [value]=\"option\">\n {{ option }}\n </option>\n </select>\n registros\n </div>\n </nav>\n\n <div class=\"d-flex justify-content-end mt-2 mt-sm-0\">\n <div class=\"sc-ag-grid__pagination--total d-flex align-items-center flex-nowrap\">\n <span class=\"value\">{{ totalItems }}&nbsp;{{ totalItems > 1 ? \"Registros.\" : \"Registro.\" }}</span>\n <span class=\"label\">&nbsp;P&aacute;gina&nbsp;</span>\n <span class=\"value\">\n {{ currentPage + 1 }}\n </span>\n <span class=\"label\">&nbsp;de&nbsp;</span>\n <span class=\"value\">\n {{ totalPage }}\n </span>\n </div>\n </div>\n</div>\n" }]
299
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { pageSizeOptions: [{
300
+ type: Input
301
+ }], configButtonsAction: [{
302
+ type: Input
303
+ }], columnDefs: [{
304
+ type: Input
305
+ }], isRowSelectable: [{
306
+ type: Input
307
+ }], rowSelection: [{
308
+ type: Input
309
+ }], height: [{
310
+ type: Input
311
+ }], domLayout: [{
312
+ type: Input
313
+ }], getRowStyle: [{
314
+ type: Input
315
+ }], serviceSearch: [{
316
+ type: Input
317
+ }], requestBody: [{
318
+ type: Input
319
+ }], frameworkComponents: [{
320
+ type: Input
321
+ }], context: [{
322
+ type: Input
323
+ }], rowClicked: [{
324
+ type: Output
325
+ }], rowDoubleClicked: [{
326
+ type: Output
327
+ }], rowSelected: [{
328
+ type: Output
329
+ }], buttonActionAgGrid: [{
330
+ type: Output
331
+ }], buttonActionHeader: [{
332
+ type: Output
333
+ }], editRow: [{
334
+ type: Output
335
+ }], deleteRow: [{
336
+ type: Output
337
+ }], agGrid: [{
338
+ type: ViewChild,
339
+ args: ["agGridPaginable"]
340
+ }] } });
341
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYWctZ3JpZC1wYWdpbmFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN1bWF4LWVycC1jb21wb25lbnQvc3JjL2xpYi9zYy1hZy1ncmlkL3NjLWFnLWdyaWQtcGFnaW5hYmxlL3NjLWFnLWdyaWQtcGFnaW5hYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdW1heC1lcnAtY29tcG9uZW50L3NyYy9saWIvc2MtYWctZ3JpZC9zYy1hZy1ncmlkLXBhZ2luYWJsZS9zYy1hZy1ncmlkLXBhZ2luYWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBaUIsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFOUQsT0FBTyxFQUFFLEtBQUssRUFBYyxZQUFZLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBMEMsY0FBYyxFQUFzQyxNQUFNLHVCQUF1QixDQUFDO0FBQ25JLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNFQUFzRSxDQUFDO0FBQ2pILE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1FQUFtRSxDQUFDO0FBQy9HLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFhLE1BQU0sNEJBQTRCLENBQUM7Ozs7QUFVeEUsTUFBTSxPQUFPLDBCQUEwQjtJQXNEckM7OztPQUdHO0lBQ0gsSUFDSSxtQkFBbUIsQ0FBQyxLQUFVO1FBQ2hDLElBQUks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TW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEFnR3JpZEFuZ3VsYXIsIEFnR3JpZE1vZHVsZSB9IGZyb20gXCJhZy1ncmlkLWFuZ3VsYXJcIjtcbmltcG9ydCB7IENvbERlZiwgR3JpZEFwaSwgSVJvd05vZGUsIElzUm93U2VsZWN0YWJsZSwgUm93Q2xpY2tlZEV2ZW50LCBSb3dEb3VibGVDbGlja2VkRXZlbnQsIFJvd1NlbGVjdGVkRXZlbnQgfSBmcm9tIFwiYWctZ3JpZC1jb21tdW5pdHlcIjtcbmltcG9ydCB7IEVNUFRZLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIHRhcCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBDb25maWdCdXR0b25BY3Rpb24sIENvbmZpZ0J1dHRvbkFnR3JpZCwgRW51bUJ1dHRvblR5cGUsIEdldFJvd1N0eWxlLCBIaWRlRnVjLCBSb3dTZWxlY3Rpb24gfSBmcm9tIFwiLi4vLi4vdXRpbHMvSVNjQWdHcmlkXCI7XG5pbXBvcnQgeyBTY0NlbGxSZW5kZXJCdXR0b25TZXJ2aWNlIH0gZnJvbSBcIi4uL2NlbGwtcmVuZGVyL3NjLWNlbGwtcmVuZGVyLWJ1dHRvbi9zYy1jZWxsLXJlbmRlci1idXR0b24uY29tcG9uZW50XCI7XG5pbXBvcnQgeyBTY0NlbGxSZW5kZXJlckJ1dHRvbk1vZHVsZSB9IGZyb20gXCIuLi9jZWxsLXJlbmRlci9zYy1jZWxsLXJlbmRlci1idXR0b24vc2MtY2VsbC1yZW5kZXItYnV0dG9uLm1vZHVsZVwiO1xuaW1wb3J0IHsgc2NDb21wb25lbnRzIH0gZnJvbSBcIi4uL2NlbGwtcmVuZGVyL3NjLWNlbGwtcmVuZGVyLWNvbmZpZ1wiO1xuaW1wb3J0IHsgRmlsdGVyUGFnaW5hYmxlLCBQYWdpbmFibGUgfSBmcm9tIFwiLi9tb2RlbHMtYWctZ3JpZC1wYWdpbmFibGVcIjtcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiBcInNjLWFnLWdyaWQtcGFnaW5hYmxlXCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEFnR3JpZE1vZHVsZSwgU2NDZWxsUmVuZGVyZXJCdXR0b25Nb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogXCIuL3NjLWFnLWdyaWQtcGFnaW5hYmxlLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsOiBcIi4vc2MtYWctZ3JpZC1wYWdpbmFibGUuY29tcG9uZW50LnNjc3NcIixcbn0pXG5leHBvcnQgY2xhc3MgU2NBZ0dyaWRQYWdpbmFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgLy8gSU5QVVRTXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gIE9wY2lvbmVzIGRlIHRhbWHDsW8gZGUgcMOhZ2luYVxuICAgKiBAZGVmYXVsdCAnWzUsIDEwLCAxNSwgMjAsIDI1XSdcbiAgICovXG4gIEBJbnB1dCgpIHBhZ2VTaXplT3B0aW9ucyA9IFs1LCAxMCwgMTUsIDIwLCAyNSwgNTBdO1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYWNpw7NuIGRlIGFjY2lvbmVzIGRlIGxhIGBncmlsbGFgXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KCkgY29uZmlnQnV0dG9uc0FjdGlvbiE6IENvbmZpZ0J1dHRvbkFjdGlvbjtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBBcnJheSBkZSBjb2x1bW5hcyBxdWUgc2UgbW9zdHJhcmEgZW4gbGEgYGdyaWxsYWBcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKSBjb2x1bW5EZWZzOiBDb2xEZWZbXSA9IFtdO1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEZ1bmNpw7NuIHF1ZSBkZXRlcm1pbmEgc2kgdW5hIGZpbGEgZXMgc2VsZWNjaW9uYWJsZVxuICAgKiBAZGVmYXVsdCAoKSA9PiB0cnVlXG4gICAqL1xuICBASW5wdXQoKSBpc1Jvd1NlbGVjdGFibGU6IElzUm93U2VsZWN0YWJsZSA9ICgpID0+IHRydWU7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhY2nDs24gZGUgc2VsZWNjacOzbiBkZSBmaWxhc1xuICAgKiBAZGVmYXVsdCAnc2luZ2xlJ1xuICAgKiBAZW51bSB7J3NpbmdsZScgfCAnbXVsdGlwbGUnfVxuICAgKi9cbiAgQElucHV0KCkgcm93U2VsZWN0aW9uOiBSb3dTZWxlY3Rpb24gPSBcInNpbmdsZVwiO1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYWNpw7NuIGRlIGxheW91dCBkZSBsYSBgZ3JpbGxhYFxuICAgKiBAZGVmYXVsdCAnbm9ybWFsJ1xuICAgKiBAZW51bSB7J25vcm1hbCcgfCAnYXV0b0hlaWdodCd9XG4gICAqL1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRhbWHDsW8gZGUgbGEgYGdyaWxsYWBcbiAgICogQGRlZmF1bHQgJzIwZW0nXG4gICAqL1xuICBASW5wdXQoKSBoZWlnaHQgPSBcIjIwZW1cIjtcbiAgQElucHV0KCkgZG9tTGF5b3V0OiBcIm5vcm1hbFwiIHwgXCJhdXRvSGVpZ2h0XCIgPSBcIm5vcm1hbFwiO1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEZ1bmNpw7NuIHF1ZSBkZXRlcm1pbmEgZWwgZXN0aWxvIGRlIHVuYSBmaWxhXG4gICAqIEBkZWZhdWx0ICgpID0+IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KCkgZ2V0Um93U3R5bGU6IEdldFJvd1N0eWxlID0gKCkgPT4gdW5kZWZpbmVkO1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERhdG9zIGRlIGxhIGBncmlsbGFgXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KCkgc2VydmljZVNlYXJjaDogKGZpbHRlcjogRmlsdGVyUGFnaW5hYmxlLCBzZWFyY2hCb2R5OiB1bmtub3duKSA9PiBPYnNlcnZhYmxlPFBhZ2luYWJsZTx1bmtub3duPj4gPSAoKSA9PiBFTVBUWTtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEYXRvcyBkZSBsYSBiw7pzcXVlZGFcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKSByZXF1ZXN0Qm9keTogdW5rbm93biA9IHt9O1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbXBvbmVudGVzIGRlIGxhIGBncmlsbGFgXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGZyYW1ld29ya0NvbXBvbmVudHModmFsdWU6IGFueSkge1xuICAgIHRoaXMuX2ZyYW1ld29ya0NvbXBvbmVudHMgPSB7IC4uLnRoaXMuX2ZyYW1ld29ya0NvbXBvbmVudHMsIC4uLnZhbHVlIH07XG4gIH1cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQYXJhIHBvZGVyIGFncmVnYXIgbcOhcyBvYmpldG9zIGFsIGNvbnRleHRvXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgY29udGV4dCh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5fY29udGV4dCA9IHsgLi4udGhpcy5fY29udGV4dCwgLi4udmFsdWUgfTtcbiAgfVxuXG4gIC8vIE9VVFBVVFNcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGhhY2UgY2xpYyBlbiB1bmEgZmlsYVxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBPdXRwdXQoKSByb3dDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxSb3dDbGlja2VkRXZlbnQ+KCk7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRXZlbnRvIHF1ZSBzZSBkaXNwYXJhIGN1YW5kbyBzZSBoYWNlIGNsaWMgZG9ibGUgZW4gdW5hIGZpbGFcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBAT3V0cHV0KCkgcm93RG91YmxlQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Um93RG91YmxlQ2xpY2tlZEV2ZW50PigpO1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2Ugc2VsZWNjaW9uYSB1bmEgZmlsYVxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBPdXRwdXQoKSByb3dTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Um93U2VsZWN0ZWRFdmVudD4oKTtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGhhY2UgY2xpYyBlbiB1bmEgYWNjacOzbiBkZSBsYSBgZ3JpbGxhYFxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBPdXRwdXQoKSBidXR0b25BY3Rpb25BZ0dyaWQgPSBuZXcgRXZlbnRFbWl0dGVyPFtFbnVtQnV0dG9uVHlwZSB8IHN0cmluZywgSVJvd05vZGUsIGJvb2xlYW5dPigpO1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgaGFjZSBjbGljIGVuIHVuYSBhY2Npw7NuIGRlIGxhIGBjYWJlY2VyYWBcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBAT3V0cHV0KCkgYnV0dG9uQWN0aW9uSGVhZGVyID0gbmV3IEV2ZW50RW1pdHRlcjxbRW51bUJ1dHRvblR5cGUgfCBzdHJpbmcsIGFueVtdXT4oKTtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGhhY2UgY2xpYyBlbiB1bmEgYWNjacOzbiBkZSBsYSBgZ3JpbGxhYFxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBPdXRwdXQoKSBlZGl0Um93ID0gbmV3IEV2ZW50RW1pdHRlcjxJUm93Tm9kZT4oKTtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGhhY2UgY2xpYyBlbiB1bmEgYWNjacOzbiBkZSBsYSBgZ3JpbGxhYFxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBPdXRwdXQoKSBkZWxldGVSb3cgPSBuZXcgRXZlbnRFbWl0dGVyPFtHcmlkQXBpLCBhbnlbXV0+KCk7XG5cbiAgLy8gVklFVyBDSElMRFJFTlxuICBAVmlld0NoaWxkKFwiYWdHcmlkUGFnaW5hYmxlXCIpXG4gIGFnR3JpZCE6IEFnR3JpZEFuZ3VsYXI7XG5cbiAgLy8gVkFSSUFCTEVTXG4gIHRvdGFsSXRlbXM6IG51bWJlciA9IDA7XG4gIGN1cnJlbnRQYWdlOiBudW1iZXIgPSAwO1xuICBwYWdlU2l6ZTogbnVtYmVyID0gNTtcbiAgdG90YWxQYWdlOiBudW1iZXIgPSAwO1xuICBmaWx0ZXI6IEZpbHRlclBhZ2luYWJsZSA9IG5ldyBGaWx0ZXJQYWdpbmFibGUodGhpcy5jdXJyZW50UGFnZSwgdGhpcy5wYWdlU2l6ZSk7XG5cbiAgX3N1YnNjcmlwdGlvbiQgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIF9zdWJzY3JpcHRpb25Sb3dEYXRhJD86IFN1YnNjcmlwdGlvbjtcbiAgX2ZyYW1ld29ya0NvbXBvbmVudHMgPSB7IC4uLnNjQ29tcG9uZW50cyB9O1xuICBfY29udGV4dCA9IHsgY29tcG9uZW50UGFyZW50OiB0aGlzIGFzIGFueSB9O1xuICBfY29uZmlnQnV0dG9uc0RlZmF1bHRBZ0dyaWQ6IENvbmZpZ0J1dHRvbkFnR3JpZFtdID0gW107XG4gIGNvbHVtbkRlZnNBbmRBZGRDZWxsQWN0aW9uczogQ29sRGVmW10gPSBbXTtcblxuICBwcml2YXRlIF9zY0NlbGxSZW5kZXJCdXR0b25TZXJ2aWNlID0gaW5qZWN0KFNjQ2VsbFJlbmRlckJ1dHRvblNlcnZpY2UpO1xuICByZWFkb25seSBtYXhWaXNpYmxlUGFnZXMgPSAyO1xuXG4gIHJlYWRvbmx5IG92ZXJsYXlOb1Jvd3NUZW1wbGF0ZTogc3RyaW5nID0gYDxzcGFuIGNsYXNzPVwiYWctb3ZlcmxheS1sb2FkaW5nLWNlbnRlciBib3JkZXItMCBiZy10cmFuc3BhcmVudCBzaGFkb3ctbm9uZVwiPlxuXHRcdFx0Tm8gc2UgZW5jb250cmFyb24gcmVnaXN0cm9zLi4uXG5cdFx0PC9zcGFuPmA7XG4gIHJlYWRvbmx5IG92ZXJsYXlMb2FkaW5nVGVtcGxhdGU6IHN0cmluZyA9IGA8c3BhbiBjbGFzcz1cImFnLW92ZXJsYXktbG9hZGluZy10b3AgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBib3JkZXItMCBiZy13aGl0ZSBzaGFkb3cgcC00IHRleHQtaW5mb1wiIHN0eWxlPVwiaGVpZ2h0OiAyMHB4O1wiPlxuXHRcdFx0PGltZyBzcmM9XCJhc3NldHMvbWVkaWEtZGVtby9sb2FkaW5nLmdpZlwiIGhlaWdodD1cIjIwXCIgd2lkdGg9XCIyNVwiIGNsYXNzPVwibXItMlwiPlxuXHRcdFx0PHN0cm9uZz5DYXJnYW5kbyByZWdpc3Ryb3M8L3N0cm9uZz5cblx0XHQ8L3NwYW4+XG5cdFx0YDtcblxuICAvLyBHRVRURVJTXG4gIGdldFRvdGFsUGFnZUxpc3QoY3VycmVudFBhZ2U6IG51bWJlcik6IG51bWJlcltdIHtcbiAgICBsZXQgc3RhcnQgPSBjdXJyZW50UGFnZSAtIHRoaXMubWF4VmlzaWJsZVBhZ2VzO1xuICAgIGxldCBlbmQgPSBjdXJyZW50UGFnZSArIHRoaXMubWF4VmlzaWJsZVBhZ2VzO1xuXG4gICAgLy8gQWp1c3RlIGN1YW5kbyBlc3TDoSBhbCBpbmljaW9cbiAgICBpZiAoc3RhcnQgPCAxKSB7XG4gICAgICBzdGFydCA9IDE7XG4gICAgICBlbmQgPSB0aGlzLm1heFZpc2libGVQYWdlcyAqIDIgKyAxO1xuICAgIH1cblxuICAgIC8vIEFqdXN0ZSBjdWFuZG8gZXN0w6EgYWwgZmluYWxcbiAgICBpZiAoZW5kID4gdGhpcy50b3RhbFBhZ2UpIHtcbiAgICAgIGVuZCA9IHRoaXMudG90YWxQYWdlO1xuICAgICAgc3RhcnQgPSBNYXRoLm1heCgxLCBlbmQgLSB0aGlzLm1heFZpc2libGVQYWdlcyAqIDIpO1xuICAgIH1cblxuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiBlbmQgLSBzdGFydCArIDEgfSwgKF8sIGkpID0+IHN0YXJ0ICsgaSk7XG4gIH1cblxuICBnZXQgc3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yb3dTZWxlY3Rpb24gPT09IFwic2luZ2xlXCIgPyBmYWxzZSA6IHRydWU7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24kLmFkZChcbiAgICAgIHRoaXMuX3NjQ2VsbFJlbmRlckJ1dHRvblNlcnZpY2UuaGFuZGxlckJ1dHRvbkFjdGlvbiQuc3Vic2NyaWJlKCh7IGluZGV4LCBhY3Rpb24sIGlzUmlnaHRDbGljayB9KSA9PiB7XG4gICAgICAgIGlmIChhY3Rpb24gPT0gbnVsbCkgcmV0dXJuO1xuICAgICAgICBpZiAoYWN0aW9uLnRyaW0oKSA9PT0gXCJcIikgcmV0dXJuO1xuICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgdGhpcy5vbkJ1dHRvbkFjdGlvbkFnR3JpZEVtaXQoaW5kZXgsIGFjdGlvbiwgaXNSaWdodENsaWNrKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9uQnV0dG9uQWN0aW9uSGVhZGVyRW1pdChhY3Rpb24pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzW1wiY29uZmlnQnV0dG9uc0FjdGlvblwiXSkge1xuICAgICAgdGhpcy5faW5pdEFjdGlvbkJ1dHRvbigpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1tcInJlcXVlc3RCb2R5XCJdICYmICFjaGFuZ2VzW1wicmVxdWVzdEJvZHlcIl0uZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMuX2ZpbGxBZ0dyaWQoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25Sb3dEYXRhJD8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24kLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBvbkJ1dHRvbkFjdGlvbkhlYWRlckVtaXQodHlwZUJ1dHRvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgcm93c1NlbGVjdGVkID0gdGhpcy5hZ0dyaWQ/LmFwaT8uZ2V0U2VsZWN0ZWRSb3dzKCk7XG4gICAgdGhpcy5idXR0b25BY3Rpb25IZWFkZXIuZW1pdChbdHlwZUJ1dHRvbiwgcm93c1NlbGVjdGVkXSk7XG4gIH1cblxuICBvbkdyaWRSZWFkeSgpOiB2b2lkIHtcbiAgICB0aGlzLl9maWxsQWdHcmlkKCk7XG4gIH1cblxuICBwcml2YXRlIF9maWxsQWdHcmlkKCk6IHZvaWQge1xuICAgIHRoaXMuX2luaXRBY3Rpb25CdXR0b24oKTtcblxuICAgIGlmICh0aGlzLl9zdWJzY3JpcHRpb25Sb3dEYXRhJCkge1xuICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uUm93RGF0YSQudW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuYWdHcmlkPy5hcGkuc2V0R3JpZE9wdGlvbihcInJvd0RhdGFcIiwgW10pO1xuICAgICAgdGhpcy5hZ0dyaWQ/LmFwaT8uc2hvd0xvYWRpbmdPdmVybGF5KCk7XG4gICAgfVxuICAgIHRoaXMuX3N1YnNjcmlwdGlvblJvd0RhdGEkID0gdGhpcy5zZXJ2aWNlU2VhcmNoKHRoaXMuZmlsdGVyLCB0aGlzLnJlcXVlc3RCb2R5KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoZGF0YSkgPT4ge1xuICAgICAgICAgIHRoaXMudG90YWxJdGVtcyA9IGRhdGEudG90YWxJdGVtcyA/PyAwO1xuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSBOdW1iZXIoZGF0YS5wYWdlID8/IDApO1xuICAgICAgICAgIHRoaXMucGFnZVNpemUgPSBkYXRhLnNpemUgPz8gMDtcbiAgICAgICAgICB0aGlzLnRvdGFsUGFnZSA9IGRhdGEudG90YWxQYWdlID8/IDA7XG4gICAgICAgICAgdGhpcy5hZ0dyaWQ/LmFwaS5zZXRHcmlkT3B0aW9uKFwicm93RGF0YVwiLCBkYXRhLmRhdGEgPz8gW10pO1xuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdEFjdGlvbkJ1dHRvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9jb25maWdCdXR0b25zRGVmYXVsdEFnR3JpZCA9IFsuLi4odGhpcy5jb25maWdCdXR0b25zQWN0aW9uPy5hZ0dyaWQ/LmFjdGlvbnMgfHwgW10pXTtcbiAgICBpZiAoIXRoaXMuY29uZmlnQnV0dG9uc0FjdGlvbj8uYWdHcmlkPy5hY3Rpb25zPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuY29sdW1uRGVmc0FuZEFkZENlbGxBY3Rpb25zID0gWy4uLnRoaXMuY29sdW1uRGVmc107XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGVuZ3RoID0gdGhpcy5fY29uZmlnQnV0dG9uc0RlZmF1bHRBZ0dyaWQuZmlsdGVyKCh7IGhpZGUgfSkgPT4ge1xuICAgICAgcmV0dXJuICF0aGlzLl9oaWRlRnVuYyhoaWRlKTtcbiAgICB9KS5sZW5ndGg7XG5cbiAgICBjb25zdCB3aWR0aCA9IGxlbmd0aCA9PSAyID8gOTAgOiA4MDtcbiAgICBjb25zdCBtaW5XaWR0aCA9IGxlbmd0aCA+IDIgPyBsZW5ndGggKiAzMyArIDEwIDogd2lkdGg7XG5cbiAgICBjb25zdCBuZXdDb2x1bW5zOiBDb2xEZWYgPSB7XG4gICAgICBoZWFkZXJOYW1lOiBcIkFjY2lvbmVzXCIsXG4gICAgICBoZWFkZXJDbGFzczogXCJhZy1oZWFkZXJfX2NlbnRlclwiLFxuICAgICAgZmllbGQ6IFwiXCIsXG4gICAgICB3aWR0aDogbWluV2lkdGgsXG4gICAgICBtaW5XaWR0aCxcbiAgICAgIG1heFdpZHRoOiBtaW5XaWR0aCxcbiAgICAgIGNlbGxDbGFzczogW1wiZC1mbGV4XCIsIFwianVzdGlmeS1jb250ZW50LWNlbnRlclwiLCBcImFsaWduLWl0ZW1zLWNlbnRlclwiXSxcbiAgICAgIGNlbGxTdHlsZTogeyBvdmVyZmxvdzogXCJ2aXNpYmxlXCIgfSxcbiAgICAgIHJlc2l6YWJsZTogZmFsc2UsXG4gICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICBjZWxsUmVuZGVyZXI6IFwic2NDZWxsUmVuZGVyZXJCdXR0b25Db21wb25lbnRcIixcbiAgICAgIHBpbm5lZDogXCJyaWdodFwiLFxuICAgICAgc3VwcHJlc3NNZW51OiB0cnVlLFxuICAgICAgbG9ja1Bvc2l0aW9uOiB0cnVlLFxuICAgIH07XG4gICAgdGhpcy5jb2x1bW5EZWZzQW5kQWRkQ2VsbEFjdGlvbnMgPSB0aGlzLl9oaWRlQWdHcmlkTWVudUFjdGlvbigpID8gWy4uLnRoaXMuY29sdW1uRGVmc10gOiBbLi4udGhpcy5jb2x1bW5EZWZzLCBuZXdDb2x1bW5zXTtcbiAgfVxuXG4gIG9uQnV0dG9uQWN0aW9uQWdHcmlkRW1pdChyb3dJbmRleDogbnVtYmVyLCB0eXBlQnV0dG9uOiBzdHJpbmcsIGlzUmlnaHRDbGljazogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IElSb3dOb2RlID0gdGhpcy5hZ0dyaWQ/LmFwaT8uZ2V0RGlzcGxheWVkUm93QXRJbmRleChyb3dJbmRleCk7XG5cbiAgICBpZiAoSVJvd05vZGUpIHtcbiAgICAgIGlmICh0eXBlQnV0dG9uID09PSBFbnVtQnV0dG9uVHlwZS5UWVBFX0VESVQpIHtcbiAgICAgICAgdGhpcy5lZGl0Um93LmVtaXQoSVJvd05vZGUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodHlwZUJ1dHRvbiA9PT0gRW51bUJ1dHRvblR5cGUuVFlQRV9ERUxFVEUpIHtcbiAgICAgICAgdGhpcy5kZWxldGVSb3cuZW1pdChbdGhpcy5hZ0dyaWQ/LmFwaSwgW0lSb3dOb2RlLmRhdGFdXSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5idXR0b25BY3Rpb25BZ0dyaWQuZW1pdChbdHlwZUJ1dHRvbiwgSVJvd05vZGUsIGlzUmlnaHRDbGlja10pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2hpZGVGdW5jKGhpZGU6IEhpZGVGdWMgfCBib29sZWFuIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgaWYgKGhpZGUgPT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICh0eXBlb2YgaGlkZSA9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBoaWRlKCk7XG5cbiAgICByZXR1cm4gaGlkZTtcbiAgfVxuXG4gIHByaXZhdGUgX2hpZGVBZ0dyaWRNZW51QWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmNvbmZpZ0J1dHRvbnNBY3Rpb24gPT0gbnVsbCkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY29uZmlnQnV0dG9uc0FjdGlvbj8uYWdHcmlkPy5hY3Rpb25zLmV2ZXJ5KCh7IGhpZGUgfSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faGlkZUZ1bmMoaGlkZSk7XG4gICAgICB9KSA/PyB0cnVlXG4gICAgKTtcbiAgfVxuXG4gIG9uU29ydENoYW5nZWQoKTogdm9pZCB7XG4gICAgY29uc3Qgc29ydE1vZGVsID0gdGhpcy5hZ0dyaWQuYXBpXG4gICAgICAuZ2V0Q29sdW1uU3RhdGUoKVxuICAgICAgLmZpbHRlcigoY29sKSA9PiBjb2wuc29ydCAhPSBudWxsKVxuICAgICAgLm1hcCgoY29sKSA9PiAoe1xuICAgICAgICBmaWVsZDogY29sLmNvbElkLFxuICAgICAgICBzb3J0OiBjb2wuc29ydCxcbiAgICAgIH0pKTtcblxuICAgIGlmIChzb3J0TW9kZWwubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmZpbHRlci5zb3J0QnkgPSBcIlwiO1xuICAgICAgdGhpcy5maWx0ZXIuc29ydERpcmVjdGlvbiA9IFwiXCI7XG4gICAgfSBlbHNlIGlmIChzb3J0TW9kZWwubGVuZ3RoID09PSAxICYmIHNvcnRNb2RlbFswXS5maWVsZCAhPT0gXCIxXCIpIHtcbiAgICAgIGNvbnN0IHNvcnRCeSA9IHNvcnRNb2RlbFswXS5maWVsZDtcbiAgICAgIGNvbnN0IHNvcnREaXJlY3Rpb24gPSBzb3J0TW9kZWxbMF0uc29ydCBhcyBzdHJpbmc7XG4gICAgICB0aGlzLmZpbHRlci5zb3J0QnkgPSBzb3J0Qnk7XG4gICAgICB0aGlzLmZpbHRlci5zb3J0RGlyZWN0aW9uID0gc29ydERpcmVjdGlvbjtcbiAgICB9XG5cbiAgICB0aGlzLl9maWxsQWdHcmlkKCk7XG4gIH1cblxuICAvLyBQQUdJTkFUSU9OXG5cbiAgZ29Ub1BhZ2UocGFnZTogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHBhZ2UgLSAxID09PSB0aGlzLmN1cnJlbnRQYWdlKSByZXR1cm47XG4gICAgdGhpcy5maWx0ZXIucGFnZSA9IHBhZ2UgLSAxO1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdlIC0gMTtcbiAgICB0aGlzLl9maWxsQWdHcmlkKCk7XG4gIH1cblxuICBjaGFuZ2VQYWdlU2l6ZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlci5wYWdlU2l6ZSA9IE51bWJlcigoZXZlbnQudGFyZ2V0IGFzIEhUTUxTZWxlY3RFbGVtZW50KS52YWx1ZSk7XG4gICAgdGhpcy5fZmlsbEFnR3JpZCgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicm93XCI+XG4gIDxkaXYgY2xhc3M9XCJjb2wtMTJcIiBbbmdTdHlsZV09XCJ7IHdpZHRoOiAnMTAwJScsIGhlaWdodDogdGhpcy5oZWlnaHQgfVwiPlxuICAgIDxhZy1ncmlkLWFuZ3VsYXJcbiAgICAgICNhZ0dyaWRQYWdpbmFibGVcbiAgICAgIHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJVwiXG4gICAgICBjbGFzcz1cImFnLXRoZW1lLWJhbGhhbVwiXG4gICAgICBbY29sdW1uRGVmc109XCJjb2x1bW5EZWZzQW5kQWRkQ2VsbEFjdGlvbnNcIlxuICAgICAgW2NvbXBvbmVudHNdPVwiX2ZyYW1ld29ya0NvbXBvbmVudHNcIlxuICAgICAgW2NvbnRleHRdPVwiX2NvbnRleHRcIlxuICAgICAgW3Jvd1NlbGVjdGlvbl09XCJyb3dTZWxlY3Rpb25cIlxuICAgICAgW2lzUm93U2VsZWN0YWJsZV09XCJpc1Jvd1NlbGVjdGFibGVcIlxuICAgICAgW2RvbUxheW91dF09XCJkb21MYXlvdXRcIlxuICAgICAgW2FuaW1hdGVSb3dzXT1cInRydWVcIlxuICAgICAgW3N1cHByZXNzTW92ZVdoZW5Sb3dEcmFnZ2luZ109XCJmYWxzZVwiXG4gICAgICBbZ2V0Um93U3R5bGVdPVwiZ2V0Um93U3R5bGVcIlxuICAgICAgW2VuYWJsZVJhbmdlU2VsZWN0aW9uXT1cImZhbHNlXCJcbiAgICAgIFtzdXBwcmVzc1Jvd1RyYW5zZm9ybV09XCJmYWxzZVwiXG4gICAgICBbb3ZlcmxheU5vUm93c1RlbXBsYXRlXT1cIm92ZXJsYXlOb1Jvd3NUZW1wbGF0ZVwiXG4gICAgICBbb3ZlcmxheUxvYWRpbmdUZW1wbGF0ZV09XCJvdmVybGF5TG9hZGluZ1RlbXBsYXRlXCJcbiAgICAgIFtzdXBwcmVzc1Byb3BlcnR5TmFtZXNDaGVja109XCJ0cnVlXCJcbiAgICAgIFtzdXBwcmVzc1Jvd0NsaWNrU2VsZWN0aW9uXT1cInN1cHByZXNzUm93Q2xpY2tTZWxlY3Rpb25cIlxuICAgICAgW3BhZ2luYXRpb25QYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXG4gICAgICBbcGFnaW5hdGlvbl09XCJ0cnVlXCJcbiAgICAgIFtzdXBwcmVzc1BhZ2luYXRpb25QYW5lbF09XCJ0cnVlXCJcbiAgICAgIChyb3dDbGlja2VkKT1cInJvd0NsaWNrZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAgIChyb3dEb3VibGVDbGlja2VkKT1cInJvd0RvdWJsZUNsaWNrZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAgIChyb3dTZWxlY3RlZCk9XCJyb3dTZWxlY3RlZC5lbWl0KCRldmVudClcIlxuICAgICAgKGdyaWRSZWFkeSk9XCJvbkdyaWRSZWFkeSgpXCJcbiAgICAgIChzb3J0Q2hhbmdlZCk9XCJvblNvcnRDaGFuZ2VkKClcIlxuICAgICAgb25jb250ZXh0bWVudT1cInJldHVybiBmYWxzZTtcIj5cbiAgICA8L2FnLWdyaWQtYW5ndWxhcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cImQtZmxleCBtdC0yIGp1c3RpZnktY29udGVudC1jZW50ZXIganVzdGlmeS1jb250ZW50LXNtLWJldHdlZW4gc2MtYWctZ3JpZF9fcGFnaW5hdGlvblwiPlxuICA8bmF2IGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcFwiIGFyaWEtbGFiZWw9XCJBZ0dyaWQgcGFnaW5hdGlvblwiPlxuICAgIDx1bCBjbGFzcz1cInBhZ2luYXRpb24gcC0wIG0tMFwiPlxuICAgICAgPGxpIGNsYXNzPVwicGFnZS1pdGVtXCIgW25nQ2xhc3NdPVwiY3VycmVudFBhZ2UgPT09IDAgPyAnZGlzYWJsZWQnIDogJydcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBhZ2UtbGlua1wiIChjbGljayk9XCJnb1RvUGFnZSgxKVwiPjxlbSBjbGFzcz1cImZhIGZhLWFuZ2xlLWRvdWJsZS1sZWZ0XCI+PC9lbT48L2J1dHRvbj5cbiAgICAgIDwvbGk+XG4gICAgICA8bGkgY2xhc3M9XCJwYWdlLWl0ZW1cIiBbbmdDbGFzc109XCJjdXJyZW50UGFnZSA9PT0gMCA/ICdkaXNhYmxlZCcgOiAnJ1wiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicGFnZS1saW5rXCIgKGNsaWNrKT1cImdvVG9QYWdlKGN1cnJlbnRQYWdlKVwiPjxlbSBjbGFzcz1cImZhIGZhLWFuZ2xlLWxlZnRcIj48L2VtPjwvYnV0dG9uPlxuICAgICAgPC9saT5cbiAgICAgIDxsaSAqbmdJZj1cImN1cnJlbnRQYWdlID4gbWF4VmlzaWJsZVBhZ2VzXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJwYWdlLWxpbmsgZGlzYWJsZWRcIj4uLi48L2J1dHRvbj5cbiAgICAgIDwvbGk+XG4gICAgICA8bGkgY2xhc3M9XCJwYWdlLWl0ZW1cIiAqbmdGb3I9XCJsZXQgbiBvZiBnZXRUb3RhbFBhZ2VMaXN0KGN1cnJlbnRQYWdlICsgMSlcIiBbbmdDbGFzc109XCJjdXJyZW50UGFnZSA9PT0gbiAtIDEgPyAnYWN0aXZlJyA6ICcnXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJwYWdlLWxpbmtcIiAoY2xpY2spPVwiZ29Ub1BhZ2UobilcIj57eyBuIH19PC9idXR0b24+XG4gICAgICA8L2xpPlxuICAgICAgPGxpICpuZ0lmPVwiY3VycmVudFBhZ2UgPCB0b3RhbFBhZ2UgLSBtYXhWaXNpYmxlUGFnZXMgLSAxXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJwYWdlLWxpbmsgZGlzYWJsZWRcIj4uLi48L2J1dHRvbj5cbiAgICAgIDwvbGk+XG4gICAgICA8bGkgY2xhc3M9XCJwYWdlLWl0ZW1cIiBbbmdDbGFzc109XCJjdXJyZW50UGFnZSA9PT0gdG90YWxQYWdlIC0gMSA/ICdkaXNhYmxlZCcgOiAnJ1wiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicGFnZS1saW5rXCIgKGNsaWNrKT1cImdvVG9QYWdlKGN1cnJlbnRQYWdlICsgMilcIj48ZW0gY2xhc3M9XCJmYSBmYS1hbmdsZS1yaWdodFwiPjwvZW0+PC9idXR0b24+XG4gICAgICA8L2xpPlxuICAgICAgPGxpIGNsYXNzPVwicGFnZS1pdGVtXCIgW25nQ2xhc3NdPVwiY3VycmVudFBhZ2UgPT09IHRvdGFsUGFnZSAtIDEgPyAnZGlzYWJsZWQnIDogJydcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBhZ2UtbGlua1wiIChjbGljayk9XCJnb1RvUGFnZSh0b3RhbFBhZ2UpXCI+PGVtIGNsYXNzPVwiZmEgZmEtYW5nbGUtZG91YmxlLXJpZ2h0XCI+PC9lbT48L2J1dHRvbj5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG14LTIgYWxpZ24taXRlbXMtY2VudGVyIGlucHV0LWdyb3VwLXNtXCI+XG4gICAgICBNb3N0cmFyXG4gICAgICA8c2VsZWN0IGNsYXNzPVwiY3VzdG9tLXNlbGVjdCBteC0yXCIgKGNoYW5nZSk9XCJjaGFuZ2VQYWdlU2l6ZSgkZXZlbnQpXCI+XG4gICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwYWdlU2l6ZU9wdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAgICAgICAge3sgb3B0aW9uIH19XG4gICAgICAgIDwvb3B0aW9uPlxuICAgICAgPC9zZWxlY3Q+XG4gICAgICByZWdpc3Ryb3NcbiAgICA8L2Rpdj5cbiAgPC9uYXY+XG5cbiAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIG10LTIgbXQtc20tMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJzYy1hZy1ncmlkX19wYWdpbmF0aW9uLS10b3RhbCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtbm93cmFwXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+e3sgdG90YWxJdGVtcyB9fSZuYnNwO3t7IHRvdGFsSXRlbXMgPiAxID8gXCJSZWdpc3Ryb3MuXCIgOiBcIlJlZ2lzdHJvLlwiIH19PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPiZuYnNwO1AmYWFjdXRlO2dpbmEmbmJzcDs8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgIHt7IGN1cnJlbnRQYWdlICsgMSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPiZuYnNwO2RlJm5ic3A7PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICB7eyB0b3RhbFBhZ2UgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==