gamma-app-controller 1.2.3 → 1.2.5

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 (27) hide show
  1. package/esm2020/lib/application-controller/support-components/dash-chart/dash-chart.component.mjs +4 -3
  2. package/esm2020/lib/shared/advanced-component/gamma-advance-operator-table/gamma-advance-operator-table.component.mjs +4 -4
  3. package/esm2020/lib/template-module/bookmarked-template/bookmarked-template.component.mjs +7 -11
  4. package/esm2020/lib/template-module/defaulLandingComponent/landing-component.component.mjs +7 -11
  5. package/esm2020/lib/template-module/kpiWithMultiLayout/kpi-with-multilayout.component.mjs +2 -2
  6. package/esm2020/lib/template-module/kpiWithMultiLayout/kpiWithMultiayout.module.mjs +2 -2
  7. package/esm2020/lib/template-module/kpiWithMultiLayout/muili.tokenStorage.servce.mjs +36 -0
  8. package/esm2020/lib/template-module/kpiWithSingleLayout/kpi-with-dataset.component.mjs +140 -42
  9. package/esm2020/lib/template-module/kpiWithSingleLayout/kpiWithSingleLayout.module.mjs +4 -3
  10. package/esm2020/lib/template-module/kpiWithSingleLayout/single-layout-dataset-call.service.mjs +3 -2
  11. package/esm2020/lib/template-module/kpiWithSingleLayout/single.tokenStorage.servce.mjs +36 -0
  12. package/esm2020/public-api.mjs +3 -3
  13. package/fesm2015/gamma-app-controller.mjs +155 -60
  14. package/fesm2015/gamma-app-controller.mjs.map +1 -1
  15. package/fesm2020/gamma-app-controller.mjs +154 -60
  16. package/fesm2020/gamma-app-controller.mjs.map +1 -1
  17. package/lib/shared/advanced-component/gamma-advance-operator-table/gamma-advance-operator-table.component.d.ts +1 -1
  18. package/lib/template-module/bookmarked-template/bookmarked-template.component.d.ts +1 -3
  19. package/lib/template-module/defaulLandingComponent/landing-component.component.d.ts +1 -3
  20. package/lib/template-module/kpiWithMultiLayout/kpi-with-multilayout.component.d.ts +1 -1
  21. package/lib/template-module/kpiWithSingleLayout/kpi-with-dataset.component.d.ts +6 -2
  22. package/package.json +1 -1
  23. package/public-api.d.ts +2 -2
  24. package/esm2020/lib/template-module/kpiWithMultiLayout/tokenStorage.servce.mjs +0 -36
  25. package/esm2020/lib/template-module/kpiWithSingleLayout/tokenStorage.servce.mjs +0 -36
  26. /package/lib/template-module/kpiWithMultiLayout/{tokenStorage.servce.d.ts → muili.tokenStorage.servce.d.ts} +0 -0
  27. /package/lib/template-module/kpiWithSingleLayout/{tokenStorage.servce.d.ts → single.tokenStorage.servce.d.ts} +0 -0
@@ -32,5 +32,5 @@ export declare class GammaAdvanceOperatorTableComponent implements OnInit {
32
32
  callServiceFunction(functionName: string, value: any): any;
33
33
  shouldShowColumn(field: string): boolean;
34
34
  static ɵfac: i0.ɵɵFactoryDeclaration<GammaAdvanceOperatorTableComponent, never>;
35
- static ɵcmp: i0.ɵɵComponentDeclaration<GammaAdvanceOperatorTableComponent, "app-gamma-advance-operator-table", never, { "rightClickEnable": "rightClickEnable"; "chartDataSource": "chartDataSource"; }, { "getTableConfigOutPut": "getTableConfigOutPut"; "oRowClick": "oRowClick"; "onrightClickContextSelection": "onrightClickContextSelection"; }, never, never, false>;
35
+ static ɵcmp: i0.ɵɵComponentDeclaration<GammaAdvanceOperatorTableComponent, "app-gamma-advance-operator-table", never, { "chartDataSource": "chartDataSource"; }, { "getTableConfigOutPut": "getTableConfigOutPut"; "oRowClick": "oRowClick"; "onrightClickContextSelection": "onrightClickContextSelection"; }, never, never, false>;
36
36
  }
@@ -11,7 +11,6 @@ import { AdvanceWidgetHeaderFilterComponent } from '../../shared/advanced-compon
11
11
  import { BookmarkedApplicationDatssetsCall } from './bookmarked-dataset-call.service';
12
12
  import { ToastrService } from 'ngx-toastr';
13
13
  import { BookmarkedService } from './bookmarked-layout.service';
14
- import { AppLocalStorage } from '../../application-controller/tokenStorage.servce';
15
14
  import * as i0 from "@angular/core";
16
15
  export declare class BookmarkedTemplateComponent implements OnInit {
17
16
  commonService: CommonService;
@@ -22,7 +21,6 @@ export declare class BookmarkedTemplateComponent implements OnInit {
22
21
  private toastr;
23
22
  private router;
24
23
  private datasetService;
25
- private storage;
26
24
  dashbord_container: any;
27
25
  selected_width: any;
28
26
  widget_width: string[];
@@ -80,7 +78,7 @@ export declare class BookmarkedTemplateComponent implements OnInit {
80
78
  globalDefaultFilter: any;
81
79
  pageId: any;
82
80
  kpi_breadcrumbs_container: any;
83
- constructor(commonService: CommonService, activatedRoute: ActivatedRoute, viewContainerRef: ViewContainerRef, componentFactoryResolver: ComponentFactoryResolver, service: BookmarkedService, toastr: ToastrService, router: Router, datasetService: BookmarkedApplicationDatssetsCall, storage: AppLocalStorage);
81
+ constructor(commonService: CommonService, activatedRoute: ActivatedRoute, viewContainerRef: ViewContainerRef, componentFactoryResolver: ComponentFactoryResolver, service: BookmarkedService, toastr: ToastrService, router: Router, datasetService: BookmarkedApplicationDatssetsCall);
84
82
  ngOnInit(): void;
85
83
  getFiltersForTemplate(filter: any): Promise<void>;
86
84
  getPadeDataSource(context: any): Promise<void>;
@@ -11,7 +11,6 @@ import { AdvanceWidgetHeaderFilterComponent } from '../../shared/advanced-compon
11
11
  import { ToastrService } from 'ngx-toastr';
12
12
  import { LandingComponentService } from './landing-component.service';
13
13
  import { LandingApplicationDatssetsCall } from './landing-dataset-call.service';
14
- import { AppLocalStorage } from '../../application-controller/tokenStorage.servce';
15
14
  import * as i0 from "@angular/core";
16
15
  export declare class LandingComponentComponent implements OnInit {
17
16
  commonService: CommonService;
@@ -22,7 +21,6 @@ export declare class LandingComponentComponent implements OnInit {
22
21
  private toastr;
23
22
  private router;
24
23
  private datasetService;
25
- private storage;
26
24
  dashbord_container: any;
27
25
  selected_width: any;
28
26
  widget_width: string[];
@@ -80,7 +78,7 @@ export declare class LandingComponentComponent implements OnInit {
80
78
  globalDefaultFilter: any;
81
79
  pageId: any;
82
80
  kpi_breadcrumbs_container: any;
83
- constructor(commonService: CommonService, activatedRoute: ActivatedRoute, viewContainerRef: ViewContainerRef, componentFactoryResolver: ComponentFactoryResolver, service: LandingComponentService, toastr: ToastrService, router: Router, datasetService: LandingApplicationDatssetsCall, storage: AppLocalStorage);
81
+ constructor(commonService: CommonService, activatedRoute: ActivatedRoute, viewContainerRef: ViewContainerRef, componentFactoryResolver: ComponentFactoryResolver, service: LandingComponentService, toastr: ToastrService, router: Router, datasetService: LandingApplicationDatssetsCall);
84
82
  ngOnInit(): void;
85
83
  getFiltersForTemplate(filter: any): Promise<void>;
86
84
  getPadeDataSource(context: any): Promise<void>;
@@ -13,7 +13,7 @@ import { GammaGeoChartComponent } from '../../shared/advanced-component/gamma-ge
13
13
  import { GammaHeatChartComponent } from '../../shared/advanced-component/gamma-heatmap/gamma-heatmap.component';
14
14
  import { KpiWithMultiLayoutService } from './kpi-multi-layout.service';
15
15
  import { MultilayoutApplicationDatssetsCall } from './multi-layout-dataset-call.service';
16
- import { AppMultiLayoutLocalStorage } from './tokenStorage.servce';
16
+ import { AppMultiLayoutLocalStorage } from './muili.tokenStorage.servce';
17
17
  import * as i0 from "@angular/core";
18
18
  export declare class KpiWithMultilayoutSetTestComponent implements OnInit {
19
19
  commonService: CommonService;
@@ -14,7 +14,7 @@ import { GammaHeatChartComponent } from '../../shared/advanced-component/gamma-h
14
14
  import { KpiWithSingleLayoutService } from './kpi-single-layout.service';
15
15
  import { SingleLayoutApplicationDatssetsCall } from './single-layout-dataset-call.service';
16
16
  import { ApplicationChatApiCallService } from './application-chat-api-call.service';
17
- import { AppSingleLayoutLocalStorage } from './tokenStorage.servce';
17
+ import { AppSingleLayoutLocalStorage } from './single.tokenStorage.servce';
18
18
  import * as i0 from "@angular/core";
19
19
  export declare class KpiWithDataSetTestComponent implements OnInit {
20
20
  commonService: CommonService;
@@ -99,6 +99,7 @@ export declare class KpiWithDataSetTestComponent implements OnInit {
99
99
  };
100
100
  };
101
101
  isDefaultFilterParams: boolean;
102
+ viewParams: any;
102
103
  constructor(commonService: CommonService, activatedRoute: ActivatedRoute, viewContainerRef: ViewContainerRef, componentFactoryResolver: ComponentFactoryResolver, service: KpiWithSingleLayoutService, toastr: ToastrService, router: Router, datasetService: SingleLayoutApplicationDatssetsCall, chatApiService: ApplicationChatApiCallService, storage: AppSingleLayoutLocalStorage);
103
104
  ngOnInit(): void;
104
105
  getFiltersForTemplate(filter: any): Promise<void>;
@@ -117,7 +118,6 @@ export declare class KpiWithDataSetTestComponent implements OnInit {
117
118
  getViewByRowCLickForHourlyChart(event: any, node: any): void;
118
119
  getModalViewByRowCLick(event: any, view: any): Promise<void>;
119
120
  getViewByRowCLick(event: any, view: any): Promise<void>;
120
- getFiltersForQueryParams(operators: any, filters: any): void;
121
121
  scrollToBottom(container: HTMLElement): void;
122
122
  findWidgetById(configs: any[], id: string): any | undefined;
123
123
  updateOperatorData(key_name: string[], value_data: any): any;
@@ -130,6 +130,10 @@ export declare class KpiWithDataSetTestComponent implements OnInit {
130
130
  loadDataByOperator(opName: any): Promise<void>;
131
131
  getContextFilterData(value: any): Promise<void>;
132
132
  parseInput(input: any): any;
133
+ getDrilldownDisplayByUrlParams(all_views: any): void;
134
+ getFiltersForQueryParams(operators: any, filters: any, viewParams: any): void;
135
+ getDrildownFilter(drildownFilter: any, defaultFilter: any): any;
136
+ getTitleParams(items: any): string;
133
137
  static ɵfac: i0.ɵɵFactoryDeclaration<KpiWithDataSetTestComponent, never>;
134
138
  static ɵcmp: i0.ɵɵComponentDeclaration<KpiWithDataSetTestComponent, "app-kpi-with-dataset", never, {}, {}, never, never, false>;
135
139
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gamma-app-controller",
3
- "version": "1.2.3",
3
+ "version": "1.2.5",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^14.0.0",
6
6
  "@angular/core": "^14.0.0",
package/public-api.d.ts CHANGED
@@ -77,13 +77,13 @@ export * from './lib/template-module/kpiWithSingleLayout/dynamin-modal.component
77
77
  export * from './lib/template-module/kpiWithSingleLayout/kpi-single-layout.service';
78
78
  export * from './lib/template-module/kpiWithSingleLayout/application-chat-api-call.service';
79
79
  export * from './lib/template-module/kpiWithSingleLayout/single-layout-dataset-call.service';
80
- export * from './lib/template-module/kpiWithSingleLayout/tokenStorage.servce';
80
+ export * from './lib/template-module/kpiWithSingleLayout/single.tokenStorage.servce';
81
81
  export * from './lib/template-module/kpiWithMultiLayout/dynamin-modal-multi.component';
82
82
  export * from './lib/template-module/kpiWithMultiLayout/kpi-with-multilayout.component';
83
83
  export * from './lib/template-module/kpiWithMultiLayout/kpiWithMultiayout.module';
84
84
  export * from './lib/template-module/kpiWithMultiLayout/kpi-multi-layout.service';
85
85
  export * from './lib/template-module/kpiWithMultiLayout/multi-layout-dataset-call.service';
86
- export * from './lib/template-module/kpiWithMultiLayout/tokenStorage.servce';
86
+ export * from './lib/template-module/kpiWithMultiLayout/muili.tokenStorage.servce';
87
87
  export * from './lib/template-module/defaulLandingComponent/landing-component.component';
88
88
  export * from './lib/template-module/defaulLandingComponent/defaultLandingComponent.module';
89
89
  export * from './lib/template-module/defaulLandingComponent/landing-component.service';
@@ -1,36 +0,0 @@
1
- import { Inject, Injectable } from '@angular/core';
2
- import { APP_ENVIRONMENT } from '../../application-controller/environment';
3
- import * as i0 from "@angular/core";
4
- const TOKEN_KEY = 'x-auth-token';
5
- export class AppMultiLayoutLocalStorage {
6
- constructor(environment) {
7
- this.environment = environment;
8
- }
9
- save(type, token) {
10
- window.localStorage[this.getAppVariableName(type)] = token;
11
- }
12
- get(type) {
13
- return window.localStorage[this.getAppVariableName(type)];
14
- }
15
- delete(type) {
16
- return window.localStorage.removeItem[this.getAppVariableName(type)];
17
- }
18
- destroy() {
19
- window.localStorage.removeItem(TOKEN_KEY);
20
- }
21
- getAppVariableName(attributeName) {
22
- return this.environment.appName + '__' + attributeName;
23
- }
24
- }
25
- AppMultiLayoutLocalStorage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AppMultiLayoutLocalStorage, deps: [{ token: APP_ENVIRONMENT }], target: i0.ɵɵFactoryTarget.Injectable });
26
- AppMultiLayoutLocalStorage.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AppMultiLayoutLocalStorage, providedIn: 'root' });
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AppMultiLayoutLocalStorage, decorators: [{
28
- type: Injectable,
29
- args: [{
30
- providedIn: 'root',
31
- }]
32
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
33
- type: Inject,
34
- args: [APP_ENVIRONMENT]
35
- }] }]; } });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5TdG9yYWdlLnNlcnZjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvdGVtcGxhdGUtbW9kdWxlL2twaVdpdGhNdWx0aUxheW91dC90b2tlblN0b3JhZ2Uuc2VydmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7QUFFM0UsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFDO0FBSWpDLE1BQU0sT0FBTywwQkFBMEI7SUFFbkMsWUFBNkMsV0FBZ0I7UUFBaEIsZ0JBQVcsR0FBWCxXQUFXLENBQUs7SUFDN0QsQ0FBQztJQUVELElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSztRQUNaLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQy9ELENBQUM7SUFFRCxHQUFHLENBQUMsSUFBSTtRQUNKLE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQUk7UUFDUCxPQUFPLE1BQU0sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxPQUFPO1FBQ0gsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELGtCQUFrQixDQUFDLGFBQXFCO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxHQUFHLGFBQWEsQ0FBQztJQUMzRCxDQUFDOzt1SEF2QlEsMEJBQTBCLGtCQUVmLGVBQWU7MkhBRjFCLDBCQUEwQixjQUZ2QixNQUFNOzJGQUVULDBCQUEwQjtrQkFIdEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQUdnQixNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFQUF9FTlZJUk9OTUVOVCB9IGZyb20gJy4uLy4uL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvZW52aXJvbm1lbnQnO1xuXG5jb25zdCBUT0tFTl9LRVkgPSAneC1hdXRoLXRva2VuJztcbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFwcE11bHRpTGF5b3V0TG9jYWxTdG9yYWdlIHtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoQVBQX0VOVklST05NRU5UKSBwcml2YXRlIGVudmlyb25tZW50OiBhbnkpIHtcbiAgICB9XG5cbiAgICBzYXZlKHR5cGUsIHRva2VuKTogdm9pZCB7XG4gICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2VbdGhpcy5nZXRBcHBWYXJpYWJsZU5hbWUodHlwZSldID0gdG9rZW47XG4gICAgfVxuXG4gICAgZ2V0KHR5cGUpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gd2luZG93LmxvY2FsU3RvcmFnZVt0aGlzLmdldEFwcFZhcmlhYmxlTmFtZSh0eXBlKV07XG4gICAgfVxuXG4gICAgZGVsZXRlKHR5cGUpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtW3RoaXMuZ2V0QXBwVmFyaWFibGVOYW1lKHR5cGUpXTtcbiAgICB9XG5cbiAgICBkZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oVE9LRU5fS0VZKTtcbiAgICB9XG5cbiAgICBnZXRBcHBWYXJpYWJsZU5hbWUoYXR0cmlidXRlTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVudmlyb25tZW50LmFwcE5hbWUgKyAnX18nICsgYXR0cmlidXRlTmFtZTtcbiAgICB9XG59XG4iXX0=
@@ -1,36 +0,0 @@
1
- import { Inject, Injectable } from '@angular/core';
2
- import { APP_ENVIRONMENT } from '../../application-controller/environment';
3
- import * as i0 from "@angular/core";
4
- const TOKEN_KEY = 'x-auth-token';
5
- export class AppSingleLayoutLocalStorage {
6
- constructor(environment) {
7
- this.environment = environment;
8
- }
9
- save(type, token) {
10
- window.localStorage[this.getAppVariableName(type)] = token;
11
- }
12
- get(type) {
13
- return window.localStorage[this.getAppVariableName(type)];
14
- }
15
- delete(type) {
16
- return window.localStorage.removeItem[this.getAppVariableName(type)];
17
- }
18
- destroy() {
19
- window.localStorage.removeItem(TOKEN_KEY);
20
- }
21
- getAppVariableName(attributeName) {
22
- return this.environment.appName + '__' + attributeName;
23
- }
24
- }
25
- AppSingleLayoutLocalStorage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AppSingleLayoutLocalStorage, deps: [{ token: APP_ENVIRONMENT }], target: i0.ɵɵFactoryTarget.Injectable });
26
- AppSingleLayoutLocalStorage.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AppSingleLayoutLocalStorage, providedIn: 'root' });
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AppSingleLayoutLocalStorage, decorators: [{
28
- type: Injectable,
29
- args: [{
30
- providedIn: 'root',
31
- }]
32
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
33
- type: Inject,
34
- args: [APP_ENVIRONMENT]
35
- }] }]; } });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5TdG9yYWdlLnNlcnZjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvdGVtcGxhdGUtbW9kdWxlL2twaVdpdGhTaW5nbGVMYXlvdXQvdG9rZW5TdG9yYWdlLnNlcnZjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7O0FBRTNFLE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQztBQUlqQyxNQUFNLE9BQU8sMkJBQTJCO0lBRXBDLFlBQTZDLFdBQWdCO1FBQWhCLGdCQUFXLEdBQVgsV0FBVyxDQUFLO0lBQzdELENBQUM7SUFFRCxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUs7UUFDWixNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUMvRCxDQUFDO0lBRUQsR0FBRyxDQUFDLElBQUk7UUFDSixPQUFPLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFJO1FBQ1AsT0FBTyxNQUFNLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsT0FBTztRQUNILE1BQU0sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxhQUFxQjtRQUNwQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxHQUFHLElBQUksR0FBRyxhQUFhLENBQUM7SUFDM0QsQ0FBQzs7d0hBdkJRLDJCQUEyQixrQkFFaEIsZUFBZTs0SEFGMUIsMkJBQTJCLGNBRnhCLE1BQU07MkZBRVQsMkJBQTJCO2tCQUh2QyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBR2dCLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVBQX0VOVklST05NRU5UIH0gZnJvbSAnLi4vLi4vYXBwbGljYXRpb24tY29udHJvbGxlci9lbnZpcm9ubWVudCc7XG5cbmNvbnN0IFRPS0VOX0tFWSA9ICd4LWF1dGgtdG9rZW4nO1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQXBwU2luZ2xlTGF5b3V0TG9jYWxTdG9yYWdlIHtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoQVBQX0VOVklST05NRU5UKSBwcml2YXRlIGVudmlyb25tZW50OiBhbnkpIHtcbiAgICB9XG5cbiAgICBzYXZlKHR5cGUsIHRva2VuKTogdm9pZCB7XG4gICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2VbdGhpcy5nZXRBcHBWYXJpYWJsZU5hbWUodHlwZSldID0gdG9rZW47XG4gICAgfVxuXG4gICAgZ2V0KHR5cGUpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gd2luZG93LmxvY2FsU3RvcmFnZVt0aGlzLmdldEFwcFZhcmlhYmxlTmFtZSh0eXBlKV07XG4gICAgfVxuXG4gICAgZGVsZXRlKHR5cGUpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtW3RoaXMuZ2V0QXBwVmFyaWFibGVOYW1lKHR5cGUpXTtcbiAgICB9XG5cbiAgICBkZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oVE9LRU5fS0VZKTtcbiAgICB9XG5cbiAgICBnZXRBcHBWYXJpYWJsZU5hbWUoYXR0cmlidXRlTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVudmlyb25tZW50LmFwcE5hbWUgKyAnX18nICsgYXR0cmlidXRlTmFtZTtcbiAgICB9XG59XG4iXX0=