@bizdoc/core 1.10.5 → 1.10.7

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.
@@ -38,12 +38,13 @@ export declare class AddressInput implements MatFormFieldControl<string>, Contro
38
38
  describedBy: string;
39
39
  setDescribedByIds(ids: string[]): void;
40
40
  onContainerClick(): void;
41
- writeValue(obj: any): void;
41
+ writeValue(val: any): void;
42
42
  registerOnChange(fn: any): void;
43
43
  registerOnTouched(fn: any): void;
44
44
  setDisabledState?(isDisabled: boolean): void;
45
45
  get value(): string;
46
46
  set value(val: string);
47
+ private _setValue;
47
48
  onFocus(): void;
48
49
  onBlur(): void;
49
50
  displayFn(address: google.maps.places.QueryAutocompletePrediction | string): string;
@@ -13,15 +13,20 @@ export interface CubeData {
13
13
  }
14
14
  export interface CubeDataOptions {
15
15
  cube?: string;
16
+ /** columns axes */
16
17
  xAxis: string;
18
+ /** rows axes */
17
19
  series: string;
20
+ /** one or more index name */
18
21
  indices?: string[] | string;
19
22
  view?: string;
20
23
  /** one or more axis */
21
24
  filters?: string[] | string;
22
- /** */
25
+ /** axes to exclude */
23
26
  aggregate?: string[] | string;
27
+ /** summary rows / columns */
24
28
  sum?: SumSettings | SumSettings[];
29
+ /** label */
25
30
  available?: string;
26
31
  }
27
32
  export interface ExploreOptions {
@@ -10,6 +10,7 @@ export declare abstract class CubeMatrixBase {
10
10
  private _ds;
11
11
  protected _session: SessionService;
12
12
  table: CubeMatrixComponent;
13
+ availableLabel: string;
13
14
  loading: boolean;
14
15
  private _axes;
15
16
  private _originalAxes;
@@ -12,7 +12,6 @@ export declare class CubeMatrixPaneComponent extends CubeMatrixBase implements O
12
12
  private _pane;
13
13
  private _router;
14
14
  private _translate;
15
- available: string;
16
15
  /** cube-info ctor */
17
16
  constructor(_pane: PaneRef<CubeMatrixPaneComponent>, _router: PanesRouter, _translate: TranslateService, service: CubeService, ds: DatasourceService, session: SessionService);
18
17
  ngOnInit(): void;
@@ -16,7 +16,7 @@ export declare class CubeMatrixComponent implements OnChanges {
16
16
  CURRENCY: string;
17
17
  SYMBOL: string;
18
18
  tableElement: ElementRef<HTMLTableElement>;
19
- available: string;
19
+ availableLabel: string;
20
20
  _cube?: string;
21
21
  _xAxis: string;
22
22
  _series: string;
@@ -58,7 +58,7 @@ export declare class CubeMatrixComponent implements OnChanges {
58
58
  explore(column: HeaderInfo, row: HeaderInfo): void;
59
59
  move(x: any, y: any): void;
60
60
  static ɵfac: i0.ɵɵFactoryDeclaration<CubeMatrixComponent, never>;
61
- static ɵcmp: i0.ɵɵComponentDeclaration<CubeMatrixComponent, "bizdoc-cube-matrix", never, { "available": "available"; "_cube": "cube"; "_xAxis": "xAxis"; "_series": "series"; "_indices": "indices"; "scope": "scope"; "sum": "sum"; "filters": "filters"; "loading": "loading"; "interactive": "interactive"; }, { "onExplore": "explore"; "loadingChange": "loadingChange"; }, never, never>;
61
+ static ɵcmp: i0.ɵɵComponentDeclaration<CubeMatrixComponent, "bizdoc-cube-matrix", never, { "availableLabel": "availableLabel"; "_cube": "cube"; "_xAxis": "xAxis"; "_series": "series"; "_indices": "indices"; "scope": "scope"; "sum": "sum"; "filters": "filters"; "loading": "loading"; "interactive": "interactive"; }, { "onExplore": "explore"; "loadingChange": "loadingChange"; }, never, never>;
62
62
  }
63
63
  export declare type SumSettings = {
64
64
  value?: string | number;
@@ -142,7 +142,7 @@ import * as i138 from "./home/about/about.dialog";
142
142
  import * as i139 from "./compose/action/action.dialog";
143
143
  import * as i140 from "./impersonate/impersonate.component";
144
144
  import * as i141 from "./chat/conversation.component";
145
- import * as i142 from "./cube/matrix/matrix.component";
145
+ import * as i142 from "./cube/matrix/popup.component";
146
146
  import * as i143 from "./compose/version-compare/version-compare.component";
147
147
  import * as i144 from "./cube/explore/document-item.component";
148
148
  import * as i145 from "./reports/tasks/tasks.component";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bizdoc/core",
3
- "version": "1.10.5",
3
+ "version": "1.10.7",
4
4
  "author": "Moding Ltd.",
5
5
  "homepage": "https://github.com/moding-il/bizdoc.core",
6
6
  "license": "https://github.com/moding-il/bizdoc.core/blob/master/License.md",
@@ -10,23 +10,23 @@
10
10
  },
11
11
  "dependencies": {
12
12
  "@ctrl/ngx-emoji-mart": "^6.1.1",
13
- "@microsoft/signalr": "^6.0.0",
14
- "@syncfusion/ej2": "^19.3.57",
15
- "@syncfusion/ej2-angular-charts": "^19.3.55",
13
+ "@microsoft/signalr": "^6.0.1",
14
+ "@syncfusion/ej2": "^19.3.59",
15
+ "@syncfusion/ej2-angular-charts": "^19.3.59",
16
16
  "@syncfusion/ej2-angular-circulargauge": "^19.3.53",
17
- "@syncfusion/ej2-angular-diagrams": "^19.3.56",
17
+ "@syncfusion/ej2-angular-diagrams": "^19.3.59",
18
18
  "@syncfusion/ej2-angular-gantt": "^19.3.57",
19
19
  "@syncfusion/ej2-angular-grids": "^19.3.57",
20
20
  "@syncfusion/ej2-angular-kanban": "^19.3.55",
21
21
  "@syncfusion/ej2-angular-pivotview": "^19.3.57",
22
22
  "@syncfusion/ej2-angular-richtexteditor": "^19.3.57",
23
23
  "@syncfusion/ej2-angular-schedule": "^19.3.55",
24
- "@syncfusion/ej2-angular-spreadsheet": "^19.3.57",
25
- "@syncfusion/ej2-base": "^19.3.56",
24
+ "@syncfusion/ej2-angular-spreadsheet": "^19.3.59",
25
+ "@syncfusion/ej2-base": "^19.3.57",
26
26
  "@teamhive/lottie-player": "^1.0.0",
27
27
  "brace": "^0.11.1",
28
28
  "cookie": "^0.4.1",
29
- "firebase": "^9.6.0",
29
+ "firebase": "^9.6.1",
30
30
  "hammerjs": "~2",
31
31
  "lottie-web": "^5.8.1",
32
32
  "ngx-cookie-service": "13",
@@ -1,66 +0,0 @@
1
- import { Component, Inject, ViewChild } from '@angular/core';
2
- import { filter, first } from 'rxjs';
3
- import { CubeMatrixComponent } from './table.component';
4
- import { POPUP_DATA } from '../../core/popup/popup.component';
5
- import { PopupRef } from "../../core/popup/popup-ref";
6
- import { CubeMatrixBase } from './matrix.base';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "../../cube/cube.service";
9
- import * as i2 from "../../core/datasource.service";
10
- import * as i3 from "../../core/session.service";
11
- import * as i4 from "../../core/prompt.service";
12
- import * as i5 from "@angular/material/progress-bar";
13
- import * as i6 from "@angular/material/button";
14
- import * as i7 from "@angular/material/icon";
15
- import * as i8 from "@angular/material/menu";
16
- import * as i9 from "./table.component";
17
- import * as i10 from "@angular/common";
18
- import * as i11 from "../../core/popup/tooltip.directive";
19
- import * as i12 from "../../core/pipes/translate.pipe";
20
- import * as i13 from "../../core/pipes/type-value.pipe";
21
- import * as i14 from "../../core/popup/popup-ref";
22
- /** cube matrix component*/
23
- export class CubeMatrixPopupComponent extends CubeMatrixBase {
24
- /** filters */
25
- /** cube-info ctor */
26
- constructor(_ref, data, service, ds, session, _sb) {
27
- super(service, ds, session);
28
- this._ref = _ref;
29
- this._sb = _sb;
30
- this.preloading = true;
31
- if (!data.options)
32
- throw 'no data options';
33
- const { axes: base, options: { indices, xAxis, series, filters, cube, sum } } = data;
34
- this.cube = cube;
35
- this.series = series;
36
- this.xAxis = xAxis;
37
- this.sum = sum;
38
- this.indices = indices;
39
- this.selection = filters;
40
- this.axes = base;
41
- this.originalAxes = base;
42
- }
43
- ngOnInit() {
44
- this.table.loadingChange.pipe(filter(ok => !ok), first()).subscribe(() => this.preloading = false, (e) => {
45
- if (e.status === 401)
46
- this._ref.close();
47
- this._sb.error(e.status === 401 ? 'Unauthorized' : null);
48
- });
49
- }
50
- }
51
- CubeMatrixPopupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: CubeMatrixPopupComponent, deps: [{ token: PopupRef }, { token: POPUP_DATA }, { token: i1.CubeService }, { token: i2.DatasourceService }, { token: i3.SessionService }, { token: i4.PromptService }], target: i0.ɵɵFactoryTarget.Component });
52
- CubeMatrixPopupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.0", type: CubeMatrixPopupComponent, selector: "ng-component", viewQueries: [{ propertyName: "table", first: true, predicate: CubeMatrixComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<div class=\"container\">\r\n <div class=\"row\" *ngIf=\"!preloading\">\r\n <span class=\"divider\"></span>\r\n <!-- title -->\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\" *ngIf=\"patterns && patterns.length\"><mat-icon [class.filled]=\"pattern\">filter_alt</mat-icon></button>\r\n <mat-menu #options xPosition=\"before\">\r\n <!-- patterns -->\r\n <button mat-menu-item *ngFor=\"let p of patterns\" (click)=\"aggregate(p)\">{{p.title}}</button>\r\n </mat-menu>\r\n <button mat-icon-button (click)=\"reset()\" [disabled]=\"!pattern\" [bizdocTooltip]=\"'Clear' | translate\">\r\n <mat-icon>clear_all</mat-icon>\r\n </button>\r\n <!-- filters -->\r\n <ng-container *ngFor=\"let f of filters\">\r\n <button mat-button [matMenuTriggerFor]=\"fmenu\">{{values[f.name]| typeValue : f.dataType | async}} <mat-icon>arrow_drop_down</mat-icon></button>\r\n <mat-menu #fmenu xPosition=\"before\">\r\n <button mat-menu-item *ngFor=\"let kv of sources[f.name] | async\"\r\n (click)=\"filter(f.name, kv.key, kv.value)\">\r\n {{kv.value}}\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n </div>\r\n <bizdoc-cube-matrix [cube]=\"cube\" [xAxis]=\"xAxis\" [series]=\"series\" [indices]=\"indices\" [sum]=sum [interactive]=\"false\"\r\n [filters]=\"axes\" [(loading)]=\"loading\"></bizdoc-cube-matrix>\r\n</div>\r\n", styles: [".container{padding:8px}\n"], components: [{ type: i5.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i9.CubeMatrixComponent, selector: "bizdoc-cube-matrix", inputs: ["available", "cube", "xAxis", "series", "indices", "scope", "sum", "filters", "loading", "interactive"], outputs: ["explore", "loadingChange"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }], pipes: { "translate": i12.TranslatePipe, "async": i10.AsyncPipe, "typeValue": i13.TypeValuePipe } });
53
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: CubeMatrixPopupComponent, decorators: [{
54
- type: Component,
55
- args: [{ template: "<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<div class=\"container\">\r\n <div class=\"row\" *ngIf=\"!preloading\">\r\n <span class=\"divider\"></span>\r\n <!-- title -->\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\" *ngIf=\"patterns && patterns.length\"><mat-icon [class.filled]=\"pattern\">filter_alt</mat-icon></button>\r\n <mat-menu #options xPosition=\"before\">\r\n <!-- patterns -->\r\n <button mat-menu-item *ngFor=\"let p of patterns\" (click)=\"aggregate(p)\">{{p.title}}</button>\r\n </mat-menu>\r\n <button mat-icon-button (click)=\"reset()\" [disabled]=\"!pattern\" [bizdocTooltip]=\"'Clear' | translate\">\r\n <mat-icon>clear_all</mat-icon>\r\n </button>\r\n <!-- filters -->\r\n <ng-container *ngFor=\"let f of filters\">\r\n <button mat-button [matMenuTriggerFor]=\"fmenu\">{{values[f.name]| typeValue : f.dataType | async}} <mat-icon>arrow_drop_down</mat-icon></button>\r\n <mat-menu #fmenu xPosition=\"before\">\r\n <button mat-menu-item *ngFor=\"let kv of sources[f.name] | async\"\r\n (click)=\"filter(f.name, kv.key, kv.value)\">\r\n {{kv.value}}\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n </div>\r\n <bizdoc-cube-matrix [cube]=\"cube\" [xAxis]=\"xAxis\" [series]=\"series\" [indices]=\"indices\" [sum]=sum [interactive]=\"false\"\r\n [filters]=\"axes\" [(loading)]=\"loading\"></bizdoc-cube-matrix>\r\n</div>\r\n", styles: [".container{padding:8px}\n"] }]
56
- }], ctorParameters: function () { return [{ type: i14.PopupRef, decorators: [{
57
- type: Inject,
58
- args: [PopupRef]
59
- }] }, { type: undefined, decorators: [{
60
- type: Inject,
61
- args: [POPUP_DATA]
62
- }] }, { type: i1.CubeService }, { type: i2.DatasourceService }, { type: i3.SessionService }, { type: i4.PromptService }]; }, propDecorators: { table: [{
63
- type: ViewChild,
64
- args: [CubeMatrixComponent, { static: true }]
65
- }] } });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0cml4LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY3ViZS9tYXRyaXgvbWF0cml4LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY3ViZS9tYXRyaXgvbWF0cml4LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQU1yQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFL0MsMkJBQTJCO0FBSzNCLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxjQUFjO0lBRzFELGNBQWM7SUFFZCxxQkFBcUI7SUFDckIsWUFDNEIsSUFBYyxFQUNwQixJQUFjLEVBQ2xDLE9BQW9CLEVBQ3BCLEVBQXFCLEVBQ3JCLE9BQXVCLEVBQ2YsR0FBa0I7UUFDMUIsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFORixTQUFJLEdBQUosSUFBSSxDQUFVO1FBS2hDLFFBQUcsR0FBSCxHQUFHLENBQWU7UUFWNUIsZUFBVSxHQUFZLElBQUksQ0FBQztRQVl6QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFDZixNQUFNLGlCQUFpQixDQUFDO1FBQzFCLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDckYsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQztRQUN6QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUMzQixDQUFDO0lBQ0QsUUFBUTtRQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUN2RSxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssRUFBRSxDQUFDLENBQW9CLEVBQUUsRUFBRTtZQUNoRCxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssR0FBRztnQkFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O3FIQWpDVSx3QkFBd0Isa0JBT3pCLFFBQVEsYUFDUixVQUFVO3lHQVJULHdCQUF3QiwyRkFDeEIsbUJBQW1CLHFGQ25CaEMsaWhEQTJCQTsyRkRUYSx3QkFBd0I7a0JBSnBDLFNBQVM7OzswQkFXTCxNQUFNOzJCQUFDLFFBQVE7OzBCQUNmLE1BQU07MkJBQUMsVUFBVTsrSkFQOEIsS0FBSztzQkFBdEQsU0FBUzt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5qZWN0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGZpbHRlciwgZmlyc3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ3ViZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jdWJlL2N1YmUuc2VydmljZSc7XHJcbmltcG9ydCB7IEN1YmVEYXRhIH0gZnJvbSAnLi4vY3ViZS1pbmZvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0YXNvdXJjZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2RhdGFzb3VyY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Byb21wdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ3ViZU1hdHJpeENvbXBvbmVudCB9IGZyb20gJy4vdGFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUE9QVVBfREFUQSB9IGZyb20gJy4uLy4uL2NvcmUvcG9wdXAvcG9wdXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUG9wdXBSZWYgfSBmcm9tIFwiLi4vLi4vY29yZS9wb3B1cC9wb3B1cC1yZWZcIjtcclxuaW1wb3J0IHsgQ3ViZU1hdHJpeEJhc2UgfSBmcm9tICcuL21hdHJpeC5iYXNlJztcclxuXHJcbi8qKiBjdWJlIG1hdHJpeCBjb21wb25lbnQqL1xyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZVVybDogJy4vbWF0cml4LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9tYXRyaXguY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3ViZU1hdHJpeFBvcHVwQ29tcG9uZW50IGV4dGVuZHMgQ3ViZU1hdHJpeEJhc2UgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGQoQ3ViZU1hdHJpeENvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgdGFibGU6IEN1YmVNYXRyaXhDb21wb25lbnQ7XHJcbiAgcHJlbG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcbiAgLyoqIGZpbHRlcnMgKi9cclxuXHJcbiAgLyoqIGN1YmUtaW5mbyBjdG9yICovXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KFBvcHVwUmVmKSBwcml2YXRlIF9yZWY6IFBvcHVwUmVmLFxyXG4gICAgQEluamVjdChQT1BVUF9EQVRBKSBkYXRhOiBDdWJlRGF0YSxcclxuICAgIHNlcnZpY2U6IEN1YmVTZXJ2aWNlLFxyXG4gICAgZHM6IERhdGFzb3VyY2VTZXJ2aWNlLFxyXG4gICAgc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zYjogUHJvbXB0U2VydmljZSkge1xyXG4gICAgc3VwZXIoc2VydmljZSwgZHMsIHNlc3Npb24pO1xyXG4gICAgaWYgKCFkYXRhLm9wdGlvbnMpXHJcbiAgICAgIHRocm93ICdubyBkYXRhIG9wdGlvbnMnO1xyXG4gICAgY29uc3QgeyBheGVzOiBiYXNlLCBvcHRpb25zOiB7IGluZGljZXMsIHhBeGlzLCBzZXJpZXMsIGZpbHRlcnMsIGN1YmUsIHN1bSB9IH0gPSBkYXRhO1xyXG4gICAgdGhpcy5jdWJlID0gY3ViZTtcclxuICAgIHRoaXMuc2VyaWVzID0gc2VyaWVzO1xyXG4gICAgdGhpcy54QXhpcyA9IHhBeGlzO1xyXG4gICAgdGhpcy5zdW0gPSBzdW07XHJcbiAgICB0aGlzLmluZGljZXMgPSBpbmRpY2VzO1xyXG4gICAgdGhpcy5zZWxlY3Rpb24gPSBmaWx0ZXJzO1xyXG4gICAgdGhpcy5heGVzID0gYmFzZTtcclxuICAgIHRoaXMub3JpZ2luYWxBeGVzID0gYmFzZTtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRhYmxlLmxvYWRpbmdDaGFuZ2UucGlwZShmaWx0ZXIob2sgPT4gIW9rKSwgZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+XHJcbiAgICAgIHRoaXMucHJlbG9hZGluZyA9IGZhbHNlLCAoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAoZS5zdGF0dXMgPT09IDQwMSlcclxuICAgICAgICAgIHRoaXMuX3JlZi5jbG9zZSgpO1xyXG4gICAgICAgIHRoaXMuX3NiLmVycm9yKGUuc3RhdHVzID09PSA0MDEgPyAnVW5hdXRob3JpemVkJyA6IG51bGwpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cInF1ZXJ5XCIgW3N0eWxlLnZpc2liaWxpdHldPVwibG9hZGluZyA/ICd2aXNpYmxlJzonaGlkZGVuJ1wiPjwvbWF0LXByb2dyZXNzLWJhcj5cclxuPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG4gIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cIiFwcmVsb2FkaW5nXCI+XHJcbiAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8IS0tIHRpdGxlIC0tPlxyXG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm9wdGlvbnNcIiAqbmdJZj1cInBhdHRlcm5zICYmIHBhdHRlcm5zLmxlbmd0aFwiPjxtYXQtaWNvbiBbY2xhc3MuZmlsbGVkXT1cInBhdHRlcm5cIj5maWx0ZXJfYWx0PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgIDxtYXQtbWVudSAjb3B0aW9ucyB4UG9zaXRpb249XCJiZWZvcmVcIj5cclxuICAgICAgPCEtLSBwYXR0ZXJucyAtLT5cclxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtICpuZ0Zvcj1cImxldCBwIG9mIHBhdHRlcm5zXCIgKGNsaWNrKT1cImFnZ3JlZ2F0ZShwKVwiPnt7cC50aXRsZX19PC9idXR0b24+XHJcbiAgICA8L21hdC1tZW51PlxyXG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInJlc2V0KClcIiBbZGlzYWJsZWRdPVwiIXBhdHRlcm5cIiBbYml6ZG9jVG9vbHRpcF09XCInQ2xlYXInIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgIDxtYXQtaWNvbj5jbGVhcl9hbGw8L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8IS0tIGZpbHRlcnMgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmIG9mIGZpbHRlcnNcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJmbWVudVwiPnt7dmFsdWVzW2YubmFtZV18IHR5cGVWYWx1ZSA6IGYuZGF0YVR5cGUgfCBhc3luY319IDxtYXQtaWNvbj5hcnJvd19kcm9wX2Rvd248L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICA8bWF0LW1lbnUgI2ZtZW51IHhQb3NpdGlvbj1cImJlZm9yZVwiPlxyXG4gICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAqbmdGb3I9XCJsZXQga3Ygb2Ygc291cmNlc1tmLm5hbWVdIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImZpbHRlcihmLm5hbWUsIGt2LmtleSwga3YudmFsdWUpXCI+XHJcbiAgICAgICAgICB7e2t2LnZhbHVlfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9tYXQtbWVudT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG4gIDxiaXpkb2MtY3ViZS1tYXRyaXggW2N1YmVdPVwiY3ViZVwiIFt4QXhpc109XCJ4QXhpc1wiIFtzZXJpZXNdPVwic2VyaWVzXCIgW2luZGljZXNdPVwiaW5kaWNlc1wiIFtzdW1dPXN1bSBbaW50ZXJhY3RpdmVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpbHRlcnNdPVwiYXhlc1wiIFsobG9hZGluZyldPVwibG9hZGluZ1wiPjwvYml6ZG9jLWN1YmUtbWF0cml4PlxyXG48L2Rpdj5cclxuIl19