tnx-shared 5.3.363 → 5.3.365

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.
@@ -1,12 +1,25 @@
1
1
  import { ElementRef, OnInit } from '@angular/core';
2
2
  import { ComponentContextService } from '../../app-context/component-context.service';
3
+ import { ActivatedRoute, Router } from '@angular/router';
4
+ import { ApplicationContextService } from '../../app-context/application-context.service';
5
+ import { StorageService } from '../../services/storage.service';
6
+ import { ModuleConfigService } from '../../services/module-config.service';
3
7
  export declare class CommonLibComponent implements OnInit {
4
8
  _componentContextService: ComponentContextService;
9
+ private _router;
10
+ private _activatedRoute;
11
+ private _applicationContext;
12
+ private _storageService;
13
+ private _moduleConfigService;
5
14
  okButton: ElementRef;
6
15
  cancelButton: ElementRef;
7
16
  showRejectConfirm: boolean;
8
- constructor(_componentContextService: ComponentContextService);
17
+ rootData: any;
18
+ environment: any;
19
+ appCode: string;
20
+ constructor(_componentContextService: ComponentContextService, _router: Router, _activatedRoute: ActivatedRoute, _applicationContext: ApplicationContextService, _storageService: StorageService, _moduleConfigService: ModuleConfigService);
9
21
  ngOnInit(): void;
10
22
  focusTrap(event: any, direct: any): void;
23
+ private addGuard;
11
24
  }
12
25
  //# sourceMappingURL=common-lib.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"common-lib.component.d.ts","sourceRoot":"","sources":["../../../../projects/tnx-shared/src/lib/components/common-lib/common-lib.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAE,MAAM,EAAa,MAAM,eAAe,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AAGtF,qBAMa,kBAAmB,YAAW,MAAM;IAMlC,wBAAwB,EAAE,uBAAuB;IALrC,QAAQ,EAAE,UAAU,CAAC;IACjB,YAAY,EAAE,UAAU,CAAC;IACpD,iBAAiB,UAAQ;gBAGd,wBAAwB,EAAE,uBAAuB;IAO5D,QAAQ;IAGR,SAAS,CAAC,KAAK,KAAA,EAAE,MAAM,KAAA;CAS1B"}
1
+ {"version":3,"file":"common-lib.component.d.ts","sourceRoot":"","sources":["../../../../projects/tnx-shared/src/lib/components/common-lib/common-lib.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAE,MAAM,EAAa,MAAM,eAAe,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AAEtF,OAAO,EAAE,cAAc,EAAS,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGhE,OAAO,EAAE,yBAAyB,EAAE,MAAM,+CAA+C,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAE3E,qBAMa,kBAAmB,YAAW,MAAM;IASlC,wBAAwB,EAAE,uBAAuB;IACxD,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,mBAAmB;IAC3B,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,oBAAoB;IAbT,QAAQ,EAAE,UAAU,CAAC;IACjB,YAAY,EAAE,UAAU,CAAC;IACpD,iBAAiB,UAAQ;IACzB,QAAQ,EAAE,GAAG,CAAC;IACd,WAAW,EAAE,GAAG,CAAC;IACjB,OAAO,SAAM;gBAGF,wBAAwB,EAAE,uBAAuB,EAChD,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,cAAc,EAC/B,mBAAmB,EAAE,yBAAyB,EAC9C,eAAe,EAAE,cAAc,EAC/B,oBAAoB,EAAE,mBAAmB;IAiBrD,QAAQ;IAQR,SAAS,CAAC,KAAK,KAAA,EAAE,MAAM,KAAA;IAUvB,OAAO,CAAC,QAAQ;CAanB"}
@@ -1,9 +1,9 @@
1
1
  import { HttpClient } from '@angular/common/http';
2
2
  import { Injector } from '@angular/core';
3
+ import { FileTypeFlag } from '../../../models/file-type';
3
4
  import { ResponseResult } from '../../../models/response-result';
4
5
  import { BaseService } from '../../../services/base.service';
5
6
  import { ModuleConfigService } from '../../../services/module-config.service';
6
- import { FileTypeFlag } from '../../../models/file-type';
7
7
  export declare class FileObjectService extends BaseService {
8
8
  private _moduleConfigService;
9
9
  thumborEndpoint: string;
@@ -1 +1 @@
1
- {"version":3,"file":"file-object.service.d.ts","sourceRoot":"","sources":["../../../../../projects/tnx-shared/src/lib/components/file-explorer/services/file-object.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAc,QAAQ,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAmC,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE1F,qBAGa,iBAAkB,SAAQ,WAAW;IAM1C,OAAO,CAAC,oBAAoB;IALhC,eAAe,SAAM;IACrB,uBAAuB,SAAM;IAC7B,gBAAgB,SAAM;gBAEV,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EACpC,oBAAoB,EAAE,mBAAmB;IAQrD,qBAAqB,CAAC,MAAM,KAAA,EAAE,KAAK,SAAI,EAAE,MAAM,SAAI;IAKnD,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAInC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM;IAKvD,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;IAKnD,YAAY;IAIZ,oBAAoB;IAIpB,4BAA4B;IAI5B,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IA6BhD,gBAAgB,CAAC,QAAQ,EAAE,MAAM;IAcjC,WAAW,CAAC,aAAa,EAAE,MAAM;IAgCjC,cAAc,CAAC,QAAQ,EAAE,MAAM;IAe/B,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,KAAA;IAItC,0BAA0B,CAAC,QAAQ,KAAA;IAMnC,qBAAqB,CAAC,KAAK,KAAA;IAM3B,0BAA0B,CAAC,KAAK,KAAA;IAMhC,iBAAiB,CAAC,oBAAoB,EAAE,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC;IAM1E,oBAAoB,CAAC,mBAAmB,EAAE,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC;IAMvE,yBAAyB,CAAC,aAAa,EAAE,MAAM;IAK/C,qBAAqB,CAAC,eAAe,EAAE,YAAY;IAoBnD,0BAA0B,CAAC,eAAe,EAAE,YAAY;IAoBxD,mBAAmB,CAAC,IAAI,KAAA;CAM3B"}
1
+ {"version":3,"file":"file-object.service.d.ts","sourceRoot":"","sources":["../../../../../projects/tnx-shared/src/lib/components/file-explorer/services/file-object.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAc,QAAQ,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAmC,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAE9E,qBAGa,iBAAkB,SAAQ,WAAW;IAM1C,OAAO,CAAC,oBAAoB;IALhC,eAAe,SAAM;IACrB,uBAAuB,SAAM;IAC7B,gBAAgB,SAAM;gBAEV,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EACpC,oBAAoB,EAAE,mBAAmB;IAQrD,qBAAqB,CAAC,MAAM,KAAA,EAAE,KAAK,SAAI,EAAE,MAAM,SAAI;IAKnD,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAInC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM;IAKvD,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;IAKnD,YAAY;IAIZ,oBAAoB;IAIpB,4BAA4B;IAI5B,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IA6BhD,gBAAgB,CAAC,QAAQ,EAAE,MAAM;IAcjC,WAAW,CAAC,aAAa,EAAE,MAAM;IAgCjC,cAAc,CAAC,QAAQ,EAAE,MAAM;IAe/B,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,KAAA;IAItC,0BAA0B,CAAC,QAAQ,KAAA;IAMnC,qBAAqB,CAAC,KAAK,KAAA;IAM3B,0BAA0B,CAAC,KAAK,KAAA;IAMhC,iBAAiB,CAAC,oBAAoB,EAAE,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC;IAM1E,oBAAoB,CAAC,mBAAmB,EAAE,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC;IAMvE,yBAAyB,CAAC,aAAa,EAAE,MAAM;IAK/C,qBAAqB,CAAC,eAAe,EAAE,YAAY;IAoBnD,0BAA0B,CAAC,eAAe,EAAE,YAAY;IAoBxD,mBAAmB,CAAC,IAAI,KAAA;CAM3B"}
@@ -1,15 +1,39 @@
1
1
  import { Component, ElementRef, ViewChild } from '@angular/core';
2
2
  import { ComponentContextService } from '../../app-context/component-context.service';
3
3
  import { ComCtxConstants } from '../../configs/component-context.constant';
4
+ import { ActivatedRoute, Router } from '@angular/router';
5
+ import { GenericGuardChildService } from '../../services/generic-guard-child.service';
6
+ import { GenericGuardService } from '../../services/generic-guard.service';
7
+ import { ApplicationContextService } from '../../app-context/application-context.service';
8
+ import { StorageService } from '../../services/storage.service';
9
+ import { ModuleConfigService } from '../../services/module-config.service';
4
10
  export class CommonLibComponent {
5
- constructor(_componentContextService) {
11
+ constructor(_componentContextService, _router, _activatedRoute, _applicationContext, _storageService, _moduleConfigService) {
6
12
  this._componentContextService = _componentContextService;
13
+ this._router = _router;
14
+ this._activatedRoute = _activatedRoute;
15
+ this._applicationContext = _applicationContext;
16
+ this._storageService = _storageService;
17
+ this._moduleConfigService = _moduleConfigService;
7
18
  this.showRejectConfirm = true;
19
+ this.appCode = '';
20
+ this.environment = this._moduleConfigService.getConfig().environment;
21
+ this.appCode = this._moduleConfigService.getConfig().appCode;
8
22
  this._componentContextService.subscribe(ComCtxConstants.ROOT.SHOW_REJECT_CONFIRM, data => {
9
23
  this.showRejectConfirm = data;
10
24
  });
25
+ this._applicationContext.addRootContext(this._componentContextService, _activatedRoute);
26
+ this._componentContextService.data.personalize = this._storageService.getObjectAny('personalize');
27
+ if (!this._componentContextService.data.personalize) {
28
+ this._componentContextService.data.personalize = {};
29
+ }
11
30
  }
12
31
  ngOnInit() {
32
+ const root = this._applicationContext.getRootContext();
33
+ this.rootData = root.data;
34
+ root.data.currentAppMetadata = this.environment.appMetadata.appSwitcher.find(x => x.code.toLowerCase() == this.appCode.toLowerCase());
35
+ root.data.appOrigin = this.environment.enableBaseHref ? `/${root.data.currentAppMetadata.code.toLowerCase()}/` : '/';
36
+ this._router.config.forEach(route => this.addGuard(route));
13
37
  }
14
38
  focusTrap(event, direct) {
15
39
  event.preventDefault();
@@ -20,6 +44,19 @@ export class CommonLibComponent {
20
44
  this.cancelButton.nativeElement.focus();
21
45
  }
22
46
  }
47
+ addGuard(route) {
48
+ if (route.path === '' || route.path === '/') {
49
+ return;
50
+ }
51
+ else {
52
+ if (route.loadChildren) {
53
+ route.canActivateChild = route.canActivateChild ? route.canActivateChild : [GenericGuardChildService];
54
+ }
55
+ else {
56
+ route.canActivate = route.canActivate ? route.canActivate : [GenericGuardService];
57
+ }
58
+ }
59
+ }
23
60
  }
24
61
  CommonLibComponent.decorators = [
25
62
  { type: Component, args: [{
@@ -30,10 +67,15 @@ CommonLibComponent.decorators = [
30
67
  },] }
31
68
  ];
32
69
  CommonLibComponent.ctorParameters = () => [
33
- { type: ComponentContextService }
70
+ { type: ComponentContextService },
71
+ { type: Router },
72
+ { type: ActivatedRoute },
73
+ { type: ApplicationContextService },
74
+ { type: StorageService },
75
+ { type: ModuleConfigService }
34
76
  ];
35
77
  CommonLibComponent.propDecorators = {
36
78
  okButton: [{ type: ViewChild, args: ['okButton',] }],
37
79
  cancelButton: [{ type: ViewChild, args: ['cancelButton',] }]
38
80
  };
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLWxpYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bngtc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9jb21tb24tbGliL2NvbW1vbi1saWIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFRM0UsTUFBTSxPQUFPLGtCQUFrQjtJQUszQixZQUNXLHdCQUFpRDtRQUFqRCw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQXlCO1FBSDVELHNCQUFpQixHQUFHLElBQUksQ0FBQztRQUtyQixJQUFJLENBQUMsd0JBQXdCLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDckYsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxRQUFRO0lBQ1IsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTTtRQUNuQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxNQUFNLEVBQUU7WUFDUixJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUN2QzthQUNJO1lBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDM0M7SUFDTCxDQUFDOzs7WUE5QkosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxZQUFZO2dCQUN0QixtdkJBQTBDO2dCQUUxQyxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzs7YUFDdkM7OztZQVJRLHVCQUF1Qjs7O3VCQVUzQixTQUFTLFNBQUMsVUFBVTsyQkFDcEIsU0FBUyxTQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcC1jb250ZXh0L2NvbXBvbmVudC1jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tQ3R4Q29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vY29uZmlncy9jb21wb25lbnQtY29udGV4dC5jb25zdGFudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnY29tbW9uLWxpYicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbW1vbi1saWIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NvbW1vbi1saWIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtDb21wb25lbnRDb250ZXh0U2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgQ29tbW9uTGliQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBAVmlld0NoaWxkKCdva0J1dHRvbicpIG9rQnV0dG9uOiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ2NhbmNlbEJ1dHRvbicpIGNhbmNlbEJ1dHRvbjogRWxlbWVudFJlZjtcbiAgICBzaG93UmVqZWN0Q29uZmlybSA9IHRydWU7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIF9jb21wb25lbnRDb250ZXh0U2VydmljZTogQ29tcG9uZW50Q29udGV4dFNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5fY29tcG9uZW50Q29udGV4dFNlcnZpY2Uuc3Vic2NyaWJlKENvbUN0eENvbnN0YW50cy5ST09ULlNIT1dfUkVKRUNUX0NPTkZJUk0sIGRhdGEgPT4ge1xuICAgICAgICAgICAgdGhpcy5zaG93UmVqZWN0Q29uZmlybSA9IGRhdGE7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgIH1cblxuICAgIGZvY3VzVHJhcChldmVudCwgZGlyZWN0KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmIChkaXJlY3QpIHtcbiAgICAgICAgICAgIHRoaXMub2tCdXR0b24ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jYW5jZWxCdXR0b24ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLWxpYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bngtc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9jb21tb24tbGliL2NvbW1vbi1saWIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGNBQWMsRUFBUyxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUMxRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFRM0UsTUFBTSxPQUFPLGtCQUFrQjtJQVEzQixZQUNXLHdCQUFpRCxFQUNoRCxPQUFlLEVBQ2YsZUFBK0IsRUFDL0IsbUJBQThDLEVBQzlDLGVBQStCLEVBQy9CLG9CQUF5QztRQUwxQyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQXlCO1FBQ2hELFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFDL0Isd0JBQW1CLEdBQW5CLG1CQUFtQixDQUEyQjtRQUM5QyxvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFDL0IseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQVhyRCxzQkFB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RjtTQUNKO0lBQ0wsQ0FBQzs7O1lBbkVKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsWUFBWTtnQkFDdEIsbXZCQUEwQztnQkFFMUMsU0FBUyxFQUFFLENBQUMsdUJBQXVCLENBQUM7O2FBQ3ZDOzs7WUFkUSx1QkFBdUI7WUFFQSxNQUFNO1lBQTdCLGNBQWM7WUFHZCx5QkFBeUI7WUFDekIsY0FBYztZQUNkLG1CQUFtQjs7O3VCQVN2QixTQUFTLFNBQUMsVUFBVTsyQkFDcEIsU0FBUyxTQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcC1jb250ZXh0L2NvbXBvbmVudC1jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tQ3R4Q29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vY29uZmlncy9jb21wb25lbnQtY29udGV4dC5jb25zdGFudCc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBHZW5lcmljR3VhcmRDaGlsZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9nZW5lcmljLWd1YXJkLWNoaWxkLnNlcnZpY2UnO1xuaW1wb3J0IHsgR2VuZXJpY0d1YXJkU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2dlbmVyaWMtZ3VhcmQuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBwLWNvbnRleHQvYXBwbGljYXRpb24tY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IE1vZHVsZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tb2R1bGUtY29uZmlnLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2NvbW1vbi1saWInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb21tb24tbGliLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb21tb24tbGliLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbQ29tcG9uZW50Q29udGV4dFNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIENvbW1vbkxpYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQFZpZXdDaGlsZCgnb2tCdXR0b24nKSBva0J1dHRvbjogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdjYW5jZWxCdXR0b24nKSBjYW5jZWxCdXR0b246IEVsZW1lbnRSZWY7XG4gICAgc2hvd1JlamVjdENvbmZpcm0gPSB0cnVlO1xuICAgIHJvb3REYXRhOiBhbnk7XG4gICAgZW52aXJvbm1lbnQ6IGFueTtcbiAgICBhcHBDb2RlID0gJyc7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIF9jb21wb25lbnRDb250ZXh0U2VydmljZTogQ29tcG9uZW50Q29udGV4dFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIF9hY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgIHByaXZhdGUgX2FwcGxpY2F0aW9uQ29udGV4dDogQXBwbGljYXRpb25Db250ZXh0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9tb2R1bGVDb25maWdTZXJ2aWNlOiBNb2R1bGVDb25maWdTZXJ2aWNlLFxuICAgICkge1xuICAgICAgICB0aGlzLmVudmlyb25tZW50ID0gdGhpcy5fbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudDtcbiAgICAgICAgdGhpcy5hcHBDb2RlID0gdGhpcy5fbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5hcHBDb2RlO1xuICAgICAgICB0aGlzLl9jb21wb25lbnRDb250ZXh0U2VydmljZS5zdWJzY3JpYmUoQ29tQ3R4Q29uc3RhbnRzLlJPT1QuU0hPV19SRUpFQ1RfQ09ORklSTSwgZGF0YSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNob3dSZWplY3RDb25maXJtID0gZGF0YTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2FwcGxpY2F0aW9uQ29udGV4dC5hZGRSb290Q29udGV4dChcbiAgICAgICAgICAgIHRoaXMuX2NvbXBvbmVudENvbnRleHRTZXJ2aWNlLFxuICAgICAgICAgICAgX2FjdGl2YXRlZFJvdXRlLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9jb21wb25lbnRDb250ZXh0U2VydmljZS5kYXRhLnBlcnNvbmFsaXplID0gdGhpcy5fc3RvcmFnZVNlcnZpY2UuZ2V0T2JqZWN0QW55KCdwZXJzb25hbGl6ZScpO1xuICAgICAgICBpZiAoIXRoaXMuX2NvbXBvbmVudENvbnRleHRTZXJ2aWNlLmRhdGEucGVyc29uYWxpemUpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbXBvbmVudENvbnRleHRTZXJ2aWNlLmRhdGEucGVyc29uYWxpemUgPSB7fTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBjb25zdCByb290ID0gdGhpcy5fYXBwbGljYXRpb25Db250ZXh0LmdldFJvb3RDb250ZXh0KCk7XG4gICAgICAgIHRoaXMucm9vdERhdGEgPSByb290LmRhdGE7XG4gICAgICAgIHJvb3QuZGF0YS5jdXJyZW50QXBwTWV0YWRhdGEgPSB0aGlzLmVudmlyb25tZW50LmFwcE1ldGFkYXRhLmFwcFN3aXRjaGVyLmZpbmQoeCA9PiB4LmNvZGUudG9Mb3dlckNhc2UoKSA9PSB0aGlzLmFwcENvZGUudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIHJvb3QuZGF0YS5hcHBPcmlnaW4gPSB0aGlzLmVudmlyb25tZW50LmVuYWJsZUJhc2VIcmVmID8gYC8ke3Jvb3QuZGF0YS5jdXJyZW50QXBwTWV0YWRhdGEuY29kZS50b0xvd2VyQ2FzZSgpfS9gIDogJy8nO1xuICAgICAgICB0aGlzLl9yb3V0ZXIuY29uZmlnLmZvckVhY2gocm91dGUgPT4gdGhpcy5hZGRHdWFyZChyb3V0ZSkpO1xuICAgIH1cblxuICAgIGZvY3VzVHJhcChldmVudCwgZGlyZWN0KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmIChkaXJlY3QpIHtcbiAgICAgICAgICAgIHRoaXMub2tCdXR0b24ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jYW5jZWxCdXR0b24ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRHdWFyZChyb3V0ZTogUm91dGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHJvdXRlLnBhdGggPT09ICcnIHx8IHJvdXRlLnBhdGggPT09ICcvJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKHJvdXRlLmxvYWRDaGlsZHJlbikge1xuICAgICAgICAgICAgICAgIHJvdXRlLmNhbkFjdGl2YXRlQ2hpbGQgPSByb3V0ZS5jYW5BY3RpdmF0ZUNoaWxkID8gcm91dGUuY2FuQWN0aXZhdGVDaGlsZCA6IFtHZW5lcmljR3VhcmRDaGlsZFNlcnZpY2VdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcm91dGUuY2FuQWN0aXZhdGUgPSByb3V0ZS5jYW5BY3RpdmF0ZSA/IHJvdXRlLmNhbkFjdGl2YXRlIDogW0dlbmVyaWNHdWFyZFNlcnZpY2VdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -1,9 +1,9 @@
1
1
  import { HttpClient } from '@angular/common/http';
2
2
  import { Injectable, Injector } from '@angular/core';
3
3
  import { FILE_TYPES } from '../../../classes/constants';
4
+ import { ExtensionsConst, FileExtensions, FileTypeFlag } from '../../../models/file-type';
4
5
  import { BaseService } from '../../../services/base.service';
5
6
  import { ModuleConfigService } from '../../../services/module-config.service';
6
- import { ExtensionsConst, FileExtensions, FileTypeFlag } from '../../../models/file-type';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@angular/common/http";
9
9
  import * as i2 from "../../../services/module-config.service";
@@ -120,7 +120,7 @@ export class FileObjectService extends BaseService {
120
120
  const arr = fileExtension.split('.');
121
121
  fileExtension = arr[arr.length - 1];
122
122
  }
123
- if ((/(pdf|doc|docx)$/i).test(fileExtension)) {
123
+ if ((/(pdf|doc|docx|xlsx|xls)$/i).test(fileExtension)) {
124
124
  return true;
125
125
  }
126
126
  }
@@ -208,4 +208,4 @@ FileObjectService.ctorParameters = () => [
208
208
  { type: Injector },
209
209
  { type: ModuleConfigService }
210
210
  ];
211
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1vYmplY3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2ZpbGUtZXhwbG9yZXIvc2VydmljZXMvZmlsZS1vYmplY3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXhELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7OztBQUsxRixNQUFNLE9BQU8saUJBQWtCLFNBQVEsV0FBVztJQUs5QyxZQUFZLElBQWdCLEVBQUUsUUFBa0IsRUFDcEMsb0JBQXlDO1FBQ2pELEtBQUssQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxZQUFZLElBQUksb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsYUFBYSxDQUFDLENBQUM7UUFEOUoseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQUxyRCxvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQiw0QkFBdUIsR0FBRyxFQUFFLENBQUM7UUFDN0IscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBS2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUM7UUFDcEYsSUFBSSxDQUFDLHVCQUF1QixHQUFHLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUM7UUFDOUcsSUFBSSxDQUFDLGVBQWUsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztRQUN0RixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQztJQUNwRyxDQUFDO0lBRUQscUJBQXFCLENBQUMsTUFBTSxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLENBQUM7UUFDL0MsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsZUFBZSxXQUFXLEtBQUssSUFBSSxNQUFNLFVBQVUsSUFBSSxDQUFDLHVCQUF1Qix5QkFBeUIsTUFBTSxXQUFXLENBQUM7UUFDOUksT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWM7UUFDdEIsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLFdBQVcsTUFBTSxXQUFXLENBQUM7SUFDMUQsQ0FBQztJQUVELGdCQUFnQixDQUFDLE9BQWlCLEVBQUUsV0FBbUI7UUFDbkQsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxvQ0FBb0MsV0FBVyxFQUFFLENBQUM7UUFDaEYsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsY0FBYyxDQUFDLElBQVksRUFBRSxjQUFzQjtRQUMvQyxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLDBCQUEwQixJQUFJLG1CQUFtQixjQUFjLEVBQUUsQ0FBQztRQUNoRyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELFlBQVk7UUFDUixPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsdUJBQXVCLENBQUM7SUFDckQsQ0FBQztJQUVELG9CQUFvQjtRQUNoQixPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsd0JBQXdCLENBQUM7SUFDdEQsQ0FBQztJQUVELDRCQUE0QjtRQUN4QixPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsNkJBQTZCLENBQUM7SUFDM0QsQ0FBQztJQUVELHFCQUFxQixDQUFDLFFBQWdCO1FBQ2xDLElBQUksUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUNsQyxPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUVELE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVuRSxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDOUMsT0FBTyxJQUFJLENBQUM7U0FDZjthQUNJLElBQUksQ0FBQyxxRkFBcUYsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUM3RyxPQUFPLElBQUksQ0FBQztTQUNmO2FBQ0ksSUFBSSxDQUFDLGtEQUFrRCxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzFFLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7YUFDSSxJQUFJLENBQUMsNERBQTRELENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDcEYsT0FBTyxJQUFJLENBQUM7U0FDZjthQUNJLElBQUksQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUM1RCxPQUFPLElBQUksQ0FBQztTQUNmO2FBQ0ksSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2pELE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsUUFBZ0I7UUFDN0IsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNYLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFDRCxRQUFRLEdBQUcsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEMsSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNoQixPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQzlCO2FBQ0k7WUFDRCxPQUFPLEVBQUUsQ0FBQztTQUNiO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxhQUFxQjtRQUM3QixJQUFJLGFBQWEsRUFBRTtZQUNmLGFBQWEsR0FBRyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDNUMsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUNqQyxNQUFNLEdBQUcsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNyQyxhQUFhLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDdkM7WUFDRCxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUU7Z0JBQ25ELE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQzthQUMzQjtpQkFDSSxJQUFJLENBQUMsaUZBQWlGLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUU7Z0JBQzlHLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQzthQUMxQjtpQkFDSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUN0QyxPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUM7YUFDekI7aUJBQ0ksSUFBSSxDQUFDLGtEQUFrRCxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUMvRSxPQUFPLFVBQVUsQ0FBQyxXQUFXLENBQUM7YUFDakM7aUJBQ0ksSUFBSSxDQUFDLDREQUE0RCxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUN6RixPQUFPLFVBQVUsQ0FBQyxZQUFZLENBQUM7YUFDbEM7aUJBQ0ksSUFBSSxDQUFDLG9DQUFvQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUNqRSxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUM7YUFDM0I7aUJBQ0ksSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUN0RCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUM7YUFDM0I7U0FDSjtRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELGNBQWMsQ0FBQyxRQUFnQjtRQUMzQixJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEQsSUFBSSxhQUFhLEVBQUU7WUFDZixhQUFhLEdBQUcsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzVDLElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDakMsTUFBTSxHQUFHLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDckMsYUFBYSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ3ZDO1lBQ0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUMxQyxPQUFPLElBQUksQ0FBQzthQUNmO1NBQ0o7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsVUFBVSxDQUFDLGFBQXFCLEVBQUUsSUFBSTtRQUNsQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssSUFBSSxDQUFDO0lBQ3BELENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxRQUFRO1FBQy9CLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsNkJBQTZCLENBQUM7UUFFNUQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQscUJBQXFCLENBQUMsS0FBSztRQUN2QixNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLHdCQUF3QixDQUFDO1FBRXZELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELDBCQUEwQixDQUFDLEtBQUs7UUFDNUIsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSw2QkFBNkIsQ0FBQztRQUU1RCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxvQkFBOEI7UUFDNUMsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxvQkFBb0IsQ0FBQztRQUVuRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELG9CQUFvQixDQUFDLG1CQUF3QjtRQUN6QyxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLHVCQUF1QixDQUFDO1FBRXRELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQseUJBQXlCLENBQUMsYUFBcUI7UUFDM0MsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLHNCQUFzQixhQUFhLEVBQUUsQ0FBQztJQUNwRSxDQUFDO0lBR0QscUJBQXFCLENBQUMsZUFBNkI7UUFDL0MsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxlQUFlLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM5QyxNQUFNLElBQUksY0FBYyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7U0FDeEM7UUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDOUMsTUFBTSxJQUFJLGNBQWMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO1NBQ3hDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzVDLE1BQU0sSUFBSSxjQUFjLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztTQUN0QztRQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM5QyxNQUFNLElBQUksY0FBYyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7U0FDeEM7UUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDbkQsTUFBTSxJQUFJLGNBQWMsQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO1NBQzdDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVELDBCQUEwQixDQUFDLGVBQTZCO1FBQ3BELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsZUFBZSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDOUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLGVBQWUsQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUNuRDtRQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM5QyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQ25EO1FBQ0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzVDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDakQ7UUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDOUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLGVBQWUsQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUNuRDtRQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNuRCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsZUFBZSxDQUFDLG9CQUFvQixDQUFDLENBQUM7U0FDeEQ7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQsbUJBQW1CLENBQUMsSUFBSTtRQUNwQixNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQy9CLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsc0JBQXNCLENBQUM7UUFDckQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDaEYsQ0FBQzs7OztZQTlOSixVQUFVLFNBQUM7Z0JBQ1IsVUFBVSxFQUFFLE1BQU07YUFDckI7OztZQVZRLFVBQVU7WUFDRSxRQUFRO1lBSXBCLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRklMRV9UWVBFUyB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvY29uc3RhbnRzJztcbmltcG9ydCB7IFJlc3BvbnNlUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3Jlc3BvbnNlLXJlc3VsdCc7XG5pbXBvcnQgeyBCYXNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Jhc2Uuc2VydmljZSc7XG5pbXBvcnQgeyBNb2R1bGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbW9kdWxlLWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IEV4dGVuc2lvbnNDb25zdCwgRmlsZUV4dGVuc2lvbnMsIEZpbGVUeXBlRmxhZyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9maWxlLXR5cGUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVPYmplY3RTZXJ2aWNlIGV4dGVuZHMgQmFzZVNlcnZpY2Uge1xuICAgIHRodW1ib3JFbmRwb2ludCA9ICcnO1xuICAgIGZpbGVXaXRoVGh1bWJvckVuZHBvaW50ID0gJyc7XG4gICAgZmlsZVBhdGhFbmRwb2ludCA9ICcnO1xuXG4gICAgY29uc3RydWN0b3IoaHR0cDogSHR0cENsaWVudCwgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIF9tb2R1bGVDb25maWdTZXJ2aWNlOiBNb2R1bGVDb25maWdTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKGh0dHAsIGluamVjdG9yLCBgJHtfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlEb21haW4uZmlsZUVuZHBvaW50fS8ke19tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50LmFwaVZlcnNpb259L0ZpbGVPYmplY3RgKTtcbiAgICAgICAgdGhpcy5lbmRQb2ludCA9IF9tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50LmFwaURvbWFpbi5maWxlRW5kcG9pbnQ7XG4gICAgICAgIHRoaXMuZmlsZVdpdGhUaHVtYm9yRW5kcG9pbnQgPSBfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlEb21haW4uZmlsZVdpdGhUaHVtYm9yRW5kcG9pbnQ7XG4gICAgICAgIHRoaXMudGh1bWJvckVuZHBvaW50ID0gX21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpRG9tYWluLnRodW1ib3I7XG4gICAgICAgIHRoaXMuZmlsZVBhdGhFbmRwb2ludCA9IF9tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50LmFwaURvbWFpbi5maWxlUGF0aEVuZHBvaW50O1xuICAgIH1cblxuICAgIGdldEZpbGVVcmxXaXRoVGh1bWJvcihmaWxlSWQsIHdpZHRoID0gMCwgaGVpZ2h0ID0gMCkge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnRodW1ib3JFbmRwb2ludH0vdW5zYWZlLyR7d2lkdGh9eCR7aGVpZ2h0fS9zbWFydC8ke3RoaXMuZmlsZVdpdGhUaHVtYm9yRW5kcG9pbnR9L3Y1L0ZpbGVPYmplY3QvcHVibGljLyR7ZmlsZUlkfS9kb3dubG9hZGA7XG4gICAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuXG4gICAgZ2V0VXJsSW1hZ2UoZmlsZUlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5zZXJ2aWNlVXJpfS9wdWJsaWMvJHtmaWxlSWR9L0Rvd25sb2FkYDtcbiAgICB9XG5cbiAgICBjb3B5TXVsdGlwbGVGaWxlKGlkc0ZpbGU6IHN0cmluZ1tdLCBpZERlc0ZvbGRlcjogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vQ29weU11bHRpcGxlRmlsZT9wYXJlbnRGb2xkZXJJZD0ke2lkRGVzRm9sZGVyfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KHVybCwgaWRzRmlsZSk7XG4gICAgfVxuXG4gICAgY29weUZpbGVCeUhhc2goaGFzaDogc3RyaW5nLCBwYXJlbnRGb2xkZXJJZDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vQ29weUZpbGVGcm9tSGFzaD9oYXNoPSR7aGFzaH0mcGFyZW50Rm9sZGVySWQ9JHtwYXJlbnRGb2xkZXJJZH1gO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KHVybCk7XG4gICAgfVxuXG4gICAgZ2V0VXBsb2FkVXJsKCkge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5zZXJ2aWNlVXJpfS9VcGxvYWRGaWxlSW50b0ZvbGRlcmA7XG4gICAgfVxuXG4gICAgZ2V0VXBsb2FkTXVsdGlwbGVVcmwoKSB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLnNlcnZpY2VVcml9L1VwbG9hZEZpbGVzSW50b0ZvbGRlcmA7XG4gICAgfVxuXG4gICAgZ2V0VXBsb2FkSW50b1NoYXJlZEZvbGRlclVybCgpIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuc2VydmljZVVyaX0vVXBsb2FkRmlsZUludG9TaGFyZWRGb2xkZXJgO1xuICAgIH1cblxuICAgIGlzU3VwcG9ydGVkVmlld09ubGluZShmaWxlTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChmaWxlTmFtZS5sYXN0SW5kZXhPZignLicpID09PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlsZVR5cGUgPSBmaWxlTmFtZS5zdWJzdHJpbmcoZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKSArIDEpO1xuXG4gICAgICAgIGlmICgoLyhnaWZ8anBnfGpwZWd8dGlmZnxwbmcpJC9pKS50ZXN0KGZpbGVUeXBlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoKC8oZG9jfGRvY218ZG9jeHxkb3R8ZG90bXxkb3R4fGVwdWJ8Zm9kdHxodG18aHRtbHxtaHR8b2R0fG90dHxwZGZ8cnRmfHR4dHxkanZ1fHhwcykkL2kpLnRlc3QoZmlsZVR5cGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICgoLyhjc3Z8Zm9kc3xvZHN8b3RzfHhsc3x4bHNtfHhsc3h8eGx0fHhsdG18eGx0eCkkL2kpLnRlc3QoZmlsZVR5cGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICgoLyhmb2RwfG9kcHxvdHB8cG90fHBvdG18cG90eHxwcHN8cHBzbXxwcHN4fHBwdHxwcHRtfHBwdHgpJC9pKS50ZXN0KGZpbGVUeXBlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoKC8obXA0fG1vdnxhdml8d212fHZvYnxybXxhc2Z8M2dwKSQvaSkudGVzdChmaWxlVHlwZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCgvKG1wM3x3bWF8d2F2fHdtdnxvZ2cpJC9pKS50ZXN0KGZpbGVUeXBlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0RmlsZUV4dGVuc2lvbihmaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghZmlsZU5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICAgICBmaWxlTmFtZSA9IGZpbGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGNvbnN0IGFyciA9IGZpbGVOYW1lLnNwbGl0KCcuJyk7XG4gICAgICAgIGlmIChhcnIubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgcmV0dXJuIGFyclthcnIubGVuZ3RoIC0gMV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRGaWxlVHlwZShmaWxlRXh0ZW5zaW9uOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKGZpbGVFeHRlbnNpb24pIHtcbiAgICAgICAgICAgIGZpbGVFeHRlbnNpb24gPSBmaWxlRXh0ZW5zaW9uLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBpZiAoZmlsZUV4dGVuc2lvbi5pbmRleE9mKCcuJykgPiAtMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFyciA9IGZpbGVFeHRlbnNpb24uc3BsaXQoJy4nKTtcbiAgICAgICAgICAgICAgICBmaWxlRXh0ZW5zaW9uID0gYXJyW2Fyci5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgoLyhnaWZ8anBnfGpwZWd8dGlmZnxwbmcpJC9pKS50ZXN0KGZpbGVFeHRlbnNpb24pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZJTEVfVFlQRVMuSU1BR0U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICgoLyhkb2N8ZG9jbXxkb2N4fGRvdHxkb3RtfGRvdHh8ZXB1Ynxmb2R0fGh0bXxodG1sfG1odHxvZHR8b3R0fHJ0Znx0eHR8ZGp2dXx4cHMpJC9pKS50ZXN0KGZpbGVFeHRlbnNpb24pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZJTEVfVFlQRVMuVEVYVDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCgvKHBkZikkL2kpLnRlc3QoZmlsZUV4dGVuc2lvbikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gRklMRV9UWVBFUy5QREY7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICgoLyhjc3Z8Zm9kc3xvZHN8b3RzfHhsc3x4bHNtfHhsc3h8eGx0fHhsdG18eGx0eCkkL2kpLnRlc3QoZmlsZUV4dGVuc2lvbikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gRklMRV9UWVBFUy5TUFJFQURTSEVFVDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCgvKGZvZHB8b2RwfG90cHxwb3R8cG90bXxwb3R4fHBwc3xwcHNtfHBwc3h8cHB0fHBwdG18cHB0eCkkL2kpLnRlc3QoZmlsZUV4dGVuc2lvbikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gRklMRV9UWVBFUy5QUkVTRU5UQVRJT047XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICgoLyhtcDR8bW92fGF2aXx3bXZ8dm9ifHJtfGFzZnwzZ3ApJC9pKS50ZXN0KGZpbGVFeHRlbnNpb24pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZJTEVfVFlQRVMuVklERU87XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICgoLyhtcDN8d21hfHdhdnx3bXZ8b2dnKSQvaSkudGVzdChmaWxlRXh0ZW5zaW9uKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBGSUxFX1RZUEVTLkFVRElPO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBpc1R5cGVGaWxlS3lTbyhmaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGxldCBmaWxlRXh0ZW5zaW9uID0gdGhpcy5nZXRGaWxlRXh0ZW5zaW9uKGZpbGVOYW1lKTtcbiAgICAgICAgaWYgKGZpbGVFeHRlbnNpb24pIHtcbiAgICAgICAgICAgIGZpbGVFeHRlbnNpb24gPSBmaWxlRXh0ZW5zaW9uLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBpZiAoZmlsZUV4dGVuc2lvbi5pbmRleE9mKCcuJykgPiAtMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFyciA9IGZpbGVFeHRlbnNpb24uc3BsaXQoJy4nKTtcbiAgICAgICAgICAgICAgICBmaWxlRXh0ZW5zaW9uID0gYXJyW2Fyci5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgoLyhwZGZ8ZG9jfGRvY3gpJC9pKS50ZXN0KGZpbGVFeHRlbnNpb24pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlzRmlsZVR5cGUoZmlsZUV4dGVuc2lvbjogc3RyaW5nLCB0eXBlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEZpbGVUeXBlKGZpbGVFeHRlbnNpb24pID09PSB0eXBlO1xuICAgIH1cblxuICAgIGNyZWF0ZUZpbGVJbnRvU2hhcmVkRm9sZGVyKGZvcm1EYXRhKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vVXBsb2FkRmlsZUludG9TaGFyZWRGb2xkZXJgO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KHVybCwgZm9ybURhdGEpO1xuICAgIH1cblxuICAgIGdldEZpbGVJblNoYXJlZEZvbGRlcihtb2RlbCkge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldEZpbGVJblNoYXJlZEZvbGRlcmA7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QodXJsLCBtb2RlbCk7XG4gICAgfVxuXG4gICAgZGVsZXRlRmlsZUZyb21TaGFyZWRGb2xkZXIobW9kZWwpIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9EZWxldGVGaWxlRnJvbVNoYXJlZEZvbGRlcmA7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QodXJsLCBtb2RlbCk7XG4gICAgfVxuXG4gICAgY3JlYXRlU2VydmljZUZpbGUoc2VydmljZUZpbGVPYmplY3REVE86IEZvcm1EYXRhKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0NyZWF0ZVNlcnZpY2VGaWxlYDtcblxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdCh1cmwsIHNlcnZpY2VGaWxlT2JqZWN0RFRPKTtcbiAgICB9XG5cbiAgICBnZXRTaW5nbGVTZXJ2aWNlRmlsZShzZXJ2aWNlUmVxdWVzdE1vZGVsOiBhbnkpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0U2luZ2xlU2VydmljZUZpbGVgO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KHVybCwgc2VydmljZVJlcXVlc3RNb2RlbCk7XG4gICAgfVxuXG4gICAgZ2V0U2NhbkZpbGVVcGxvYWRFbmRwb2ludChjb3JyZWxhdGlvbklkOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuc2VydmljZUNvZGV9L0NyZWF0ZVNjYW5uZWRGaWxlLyR7Y29ycmVsYXRpb25JZH1gO1xuICAgIH1cblxuXG4gICAgZ2V0QWNjZXB0ZWRFeHRlbnNpb25zKGFjY2VwdEZpbGVUeXBlczogRmlsZVR5cGVGbGFnKSB7XG4gICAgICAgIGxldCBhY2NlcHQgPSAnJztcbiAgICAgICAgaWYgKChhY2NlcHRGaWxlVHlwZXMgJiBGaWxlVHlwZUZsYWcuVklERU8pICE9PSAwKSB7XG4gICAgICAgICAgICBhY2NlcHQgKz0gRmlsZUV4dGVuc2lvbnMuVklERU8gKyAnLCc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKChhY2NlcHRGaWxlVHlwZXMgJiBGaWxlVHlwZUZsYWcuSU1BR0UpICE9PSAwKSB7XG4gICAgICAgICAgICBhY2NlcHQgKz0gRmlsZUV4dGVuc2lvbnMuSU1BR0UgKyAnLCc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKChhY2NlcHRGaWxlVHlwZXMgJiBGaWxlVHlwZUZsYWcuRE9DKSAhPT0gMCkge1xuICAgICAgICAgICAgYWNjZXB0ICs9IEZpbGVFeHRlbnNpb25zLkRPQyArICcsJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoKGFjY2VwdEZpbGVUeXBlcyAmIEZpbGVUeXBlRmxhZy5BVURJTykgIT09IDApIHtcbiAgICAgICAgICAgIGFjY2VwdCArPSBGaWxlRXh0ZW5zaW9ucy5BVURJTyArICcsJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoKGFjY2VwdEZpbGVUeXBlcyAmIEZpbGVUeXBlRmxhZy5DT01QUkVTU0VEKSAhPT0gMCkge1xuICAgICAgICAgICAgYWNjZXB0ICs9IEZpbGVFeHRlbnNpb25zLkNPTVBSRVNTRUQgKyAnLCc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjY2VwdDtcbiAgICB9XG5cbiAgICBnZXRBY2NlcHRlZEV4dGVuc2lvbnNBcnJheShhY2NlcHRGaWxlVHlwZXM6IEZpbGVUeXBlRmxhZykge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICAgICAgaWYgKChhY2NlcHRGaWxlVHlwZXMgJiBGaWxlVHlwZUZsYWcuVklERU8pICE9PSAwKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCguLi5FeHRlbnNpb25zQ29uc3QuVmlkZW9FeHRlbnNpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKGFjY2VwdEZpbGVUeXBlcyAmIEZpbGVUeXBlRmxhZy5JTUFHRSkgIT09IDApIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLkV4dGVuc2lvbnNDb25zdC5JbWFnZUV4dGVuc2lvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgoYWNjZXB0RmlsZVR5cGVzICYgRmlsZVR5cGVGbGFnLkRPQykgIT09IDApIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLkV4dGVuc2lvbnNDb25zdC5Eb2NFeHRlbnNpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKGFjY2VwdEZpbGVUeXBlcyAmIEZpbGVUeXBlRmxhZy5BVURJTykgIT09IDApIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLkV4dGVuc2lvbnNDb25zdC5BdWRpb0V4dGVuc2lvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgoYWNjZXB0RmlsZVR5cGVzICYgRmlsZVR5cGVGbGFnLkNPTVBSRVNTRUQpICE9PSAwKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCguLi5FeHRlbnNpb25zQ29uc3QuQ29tcHJlc3NlZEV4dGVuc2lvbnMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgdXBsb2FkV2l0aEJ5dGVBcnJheShmaWxlKSB7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZXMnLCBmaWxlKTtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9VcGxvYWRXaXRoQnl0ZUFycmF5YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdCh1cmwsIGZvcm1EYXRhLCB7IHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pLnRvUHJvbWlzZSgpO1xuICAgIH1cbn1cbiJdfQ==
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1vYmplY3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2ZpbGUtZXhwbG9yZXIvc2VydmljZXMvZmlsZS1vYmplY3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTFGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7OztBQUs5RSxNQUFNLE9BQU8saUJBQWtCLFNBQVEsV0FBVztJQUs5QyxZQUFZLElBQWdCLEVBQUUsUUFBa0IsRUFDcEMsb0JBQXlDO1FBQ2pELEtBQUssQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxZQUFZLElBQUksb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsYUFBYSxDQUFDLENBQUM7UUFEOUoseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQUxyRCxvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQiw0QkFBdUIsR0FBRyxFQUFFLENBQUM7UUFDN0IscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBS2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFNB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Q0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzVDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDakQ7UUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDOUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLGVBQWUsQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUNuRDtRQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNuRCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsZUFBZSxDQUFDLG9CQUFvQixDQUFDLENBQUM7U0FDeEQ7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQsbUJBQW1CLENBQUMsSUFBSTtRQUNwQixNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQy9CLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsc0JBQXNCLENBQUM7UUFDckQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDaEYsQ0FBQzs7OztZQTlOSixVQUFVLFNBQUM7Z0JBQ1IsVUFBVSxFQUFFLE1BQU07YUFDckI7OztZQVZRLFVBQVU7WUFDRSxRQUFRO1lBS3BCLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRklMRV9UWVBFUyB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvY29uc3RhbnRzJztcbmltcG9ydCB7IEV4dGVuc2lvbnNDb25zdCwgRmlsZUV4dGVuc2lvbnMsIEZpbGVUeXBlRmxhZyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9maWxlLXR5cGUnO1xuaW1wb3J0IHsgUmVzcG9uc2VSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmVzcG9uc2UtcmVzdWx0JztcbmltcG9ydCB7IEJhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYmFzZS5zZXJ2aWNlJztcbmltcG9ydCB7IE1vZHVsZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tb2R1bGUtY29uZmlnLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVPYmplY3RTZXJ2aWNlIGV4dGVuZHMgQmFzZVNlcnZpY2Uge1xuICAgIHRodW1ib3JFbmRwb2ludCA9ICcnO1xuICAgIGZpbGVXaXRoVGh1bWJvckVuZHBvaW50ID0gJyc7XG4gICAgZmlsZVBhdGhFbmRwb2ludCA9ICcnO1xuXG4gICAgY29uc3RydWN0b3IoaHR0cDogSHR0cENsaWVudCwgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIF9tb2R1bGVDb25maWdTZXJ2aWNlOiBNb2R1bGVDb25maWdTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKGh0dHAsIGluamVjdG9yLCBgJHtfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlEb21haW4uZmlsZUVuZHBvaW50fS8ke19tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50LmFwaVZlcnNpb259L0ZpbGVPYmplY3RgKTtcbiAgICAgICAgdGhpcy5lbmRQb2ludCA9IF9tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50LmFwaURvbWFpbi5maWxlRW5kcG9pbnQ7XG4gICAgICAgIHRoaXMuZmlsZVdpdGhUaHVtYm9yRW5kcG9pbnQgPSBfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlEb21haW4uZmlsZVdpdGhUaHVtYm9yRW5kcG9pbnQ7XG4gICAgICAgIHRoaXMudGh1bWJvckVuZHBvaW50ID0gX21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpRG9tYWluLnRodW1ib3I7XG4gICAgICAgIHRoaXMuZmlsZVBhdGhFbmRwb2ludCA9IF9tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50LmFwaURvbWFpbi5maWxlUGF0aEVuZHBvaW50O1xuICAgIH1cblxuICAgIGdldEZpbGVVcmxXaXRoVGh1bWJvcihmaWxlSWQsIHdpZHRoID0gMCwgaGVpZ2h0ID0gMCkge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnRodW1ib3JFbmRwb2ludH0vdW5zYWZlLyR7d2lkdGh9eCR7aGVpZ2h0fS9zbWFydC8ke3RoaXMuZmlsZVdpdGhUaHVtYm9yRW5kcG9pbnR9L3Y1L0ZpbGVPYmplY3QvcHVibGljLyR7ZmlsZUlkfS9kb3dubG9hZGA7XG4gICAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuXG4gICAgZ2V0VXJsSW1hZ2UoZmlsZUlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5zZXJ2aWNlVXJpfS9wdWJsaWMvJHtmaWxlSWR9L0Rvd25sb2FkYDtcbiAgICB9XG5cbiAgICBjb3B5TXVsdGlwbGVGaWxlKGlkc0ZpbGU6IHN0cmluZ1tdLCBpZERlc0ZvbGRlcjogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vQ29weU11bHRpcGxlRmlsZT9wYXJlbnRGb2xkZXJJZD0ke2lkRGVzRm9sZGVyfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KHVybCwgaWRzRmlsZSk7XG4gICAgfVxuXG4gICAgY29weUZpbGVCeUhhc2goaGFzaDogc3RyaW5nLCBwYXJlbnRGb2xkZXJJZDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vQ29weUZpbGVGcm9tSGFzaD9oYXNoPSR7aGFzaH0mcGFyZW50Rm9sZGVySWQ9JHtwYXJlbnRGb2xkZXJJZH1gO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KHVybCk7XG4gICAgfVxuXG4gICAgZ2V0VXBsb2FkVXJsKCkge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5zZXJ2aWNlVXJpfS9VcGxvYWRGaWxlSW50b0ZvbGRlcmA7XG4gICAgfVxuXG4gICAgZ2V0VXBsb2FkTXVsdGlwbGVVcmwoKSB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLnNlcnZpY2VVcml9L1VwbG9hZEZpbGVzSW50b0ZvbGRlcmA7XG4gICAgfVxuXG4gICAgZ2V0VXBsb2FkSW50b1NoYXJlZEZvbGRlclVybCgpIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuc2VydmljZVVyaX0vVXBsb2FkRmlsZUludG9TaGFyZWRGb2xkZXJgO1xuICAgIH1cblxuICAgIGlzU3VwcG9ydGVkVmlld09ubGluZShmaWxlTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChmaWxlTmFtZS5sYXN0SW5kZXhPZignLicpID09PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlsZVR5cGUgPSBmaWxlTmFtZS5zdWJzdHJpbmcoZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKSArIDEpO1xuXG4gICAgICAgIGlmICgoLyhnaWZ8anBnfGpwZWd8dGlmZnxwbmcpJC9pKS50ZXN0KGZpbGVUeXBlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoKC8oZG9jfGRvY218ZG9jeHxkb3R8ZG90bXxkb3R4fGVwdWJ8Zm9kdHxodG18aHRtbHxtaHR8b2R0fG90dHxwZGZ8cnRmfHR4dHxkanZ1fHhwcykkL2kpLnRlc3QoZmlsZVR5cGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICgoLyhjc3Z8Zm9kc3xvZHN8b3RzfHhsc3x4bHNtfHhsc3h8eGx0fHhsdG18eGx0eCkkL2kpLnRlc3QoZmlsZVR5cGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICgoLyhmb2RwfG9kcHxvdHB8cG90fHBvdG18cG90eHxwcHN8cHBzbXxwcHN4fHBwdHxwcHRtfHBwdHgpJC9pKS50ZXN0KGZpbGVUeXBlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoKC8obXA0fG1vdnxhdml8d212fHZvYnxybXxhc2Z8M2dwKSQvaSkudGVzdChmaWxlVHlwZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCgvKG1wM3x3bWF8d2F2fHdtdnxvZ2cpJC9pKS50ZXN0KGZpbGVUeXBlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0RmlsZUV4dGVuc2lvbihmaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghZmlsZU5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICAgICBmaWxlTmFtZSA9IGZpbGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGNvbnN0IGFyciA9IGZpbGVOYW1lLnNwbGl0KCcuJyk7XG4gICAgICAgIGlmIChhcnIubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgcmV0dXJuIGFyclthcnIubGVuZ3RoIC0gMV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRGaWxlVHlwZShmaWxlRXh0ZW5zaW9uOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKGZpbGVFeHRlbnNpb24pIHtcbiAgICAgICAgICAgIGZpbGVFeHRlbnNpb24gPSBmaWxlRXh0ZW5zaW9uLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBpZiAoZmlsZUV4dGVuc2lvbi5pbmRleE9mKCcuJykgPiAtMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFyciA9IGZpbGVFeHRlbnNpb24uc3BsaXQoJy4nKTtcbiAgICAgICAgICAgICAgICBmaWxlRXh0ZW5zaW9uID0gYXJyW2Fyci5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgoLyhnaWZ8anBnfGpwZWd8dGlmZnxwbmcpJC9pKS50ZXN0KGZpbGVFeHRlbnNpb24pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZJTEVfVFlQRVMuSU1BR0U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICgoLyhkb2N8ZG9jbXxkb2N4fGRvdHxkb3RtfGRvdHh8ZXB1Ynxmb2R0fGh0bXxodG1sfG1odHxvZHR8b3R0fHJ0Znx0eHR8ZGp2dXx4cHMpJC9pKS50ZXN0KGZpbGVFeHRlbnNpb24pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZJTEVfVFlQRVMuVEVYVDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCgvKHBkZikkL2kpLnRlc3QoZmlsZUV4dGVuc2lvbikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gRklMRV9UWVBFUy5QREY7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICgoLyhjc3Z8Zm9kc3xvZHN8b3RzfHhsc3x4bHNtfHhsc3h8eGx0fHhsdG18eGx0eCkkL2kpLnRlc3QoZmlsZUV4dGVuc2lvbikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gRklMRV9UWVBFUy5TUFJFQURTSEVFVDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCgvKGZvZHB8b2RwfG90cHxwb3R8cG90bXxwb3R4fHBwc3xwcHNtfHBwc3h8cHB0fHBwdG18cHB0eCkkL2kpLnRlc3QoZmlsZUV4dGVuc2lvbikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gRklMRV9UWVBFUy5QUkVTRU5UQVRJT047XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICgoLyhtcDR8bW92fGF2aXx3bXZ8dm9ifHJtfGFzZnwzZ3ApJC9pKS50ZXN0KGZpbGVFeHRlbnNpb24pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZJTEVfVFlQRVMuVklERU87XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICgoLyhtcDN8d21hfHdhdnx3bXZ8b2dnKSQvaSkudGVzdChmaWxlRXh0ZW5zaW9uKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBGSUxFX1RZUEVTLkFVRElPO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBpc1R5cGVGaWxlS3lTbyhmaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGxldCBmaWxlRXh0ZW5zaW9uID0gdGhpcy5nZXRGaWxlRXh0ZW5zaW9uKGZpbGVOYW1lKTtcbiAgICAgICAgaWYgKGZpbGVFeHRlbnNpb24pIHtcbiAgICAgICAgICAgIGZpbGVFeHRlbnNpb24gPSBmaWxlRXh0ZW5zaW9uLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBpZiAoZmlsZUV4dGVuc2lvbi5pbmRleE9mKCcuJykgPiAtMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFyciA9IGZpbGVFeHRlbnNpb24uc3BsaXQoJy4nKTtcbiAgICAgICAgICAgICAgICBmaWxlRXh0ZW5zaW9uID0gYXJyW2Fyci5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgoLyhwZGZ8ZG9jfGRvY3h8eGxzeHx4bHMpJC9pKS50ZXN0KGZpbGVFeHRlbnNpb24pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlzRmlsZVR5cGUoZmlsZUV4dGVuc2lvbjogc3RyaW5nLCB0eXBlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEZpbGVUeXBlKGZpbGVFeHRlbnNpb24pID09PSB0eXBlO1xuICAgIH1cblxuICAgIGNyZWF0ZUZpbGVJbnRvU2hhcmVkRm9sZGVyKGZvcm1EYXRhKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vVXBsb2FkRmlsZUludG9TaGFyZWRGb2xkZXJgO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KHVybCwgZm9ybURhdGEpO1xuICAgIH1cblxuICAgIGdldEZpbGVJblNoYXJlZEZvbGRlcihtb2RlbCkge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldEZpbGVJblNoYXJlZEZvbGRlcmA7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QodXJsLCBtb2RlbCk7XG4gICAgfVxuXG4gICAgZGVsZXRlRmlsZUZyb21TaGFyZWRGb2xkZXIobW9kZWwpIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9EZWxldGVGaWxlRnJvbVNoYXJlZEZvbGRlcmA7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QodXJsLCBtb2RlbCk7XG4gICAgfVxuXG4gICAgY3JlYXRlU2VydmljZUZpbGUoc2VydmljZUZpbGVPYmplY3REVE86IEZvcm1EYXRhKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0NyZWF0ZVNlcnZpY2VGaWxlYDtcblxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdCh1cmwsIHNlcnZpY2VGaWxlT2JqZWN0RFRPKTtcbiAgICB9XG5cbiAgICBnZXRTaW5nbGVTZXJ2aWNlRmlsZShzZXJ2aWNlUmVxdWVzdE1vZGVsOiBhbnkpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0U2luZ2xlU2VydmljZUZpbGVgO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KHVybCwgc2VydmljZVJlcXVlc3RNb2RlbCk7XG4gICAgfVxuXG4gICAgZ2V0U2NhbkZpbGVVcGxvYWRFbmRwb2ludChjb3JyZWxhdGlvbklkOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuc2VydmljZUNvZGV9L0NyZWF0ZVNjYW5uZWRGaWxlLyR7Y29ycmVsYXRpb25JZH1gO1xuICAgIH1cblxuXG4gICAgZ2V0QWNjZXB0ZWRFeHRlbnNpb25zKGFjY2VwdEZpbGVUeXBlczogRmlsZVR5cGVGbGFnKSB7XG4gICAgICAgIGxldCBhY2NlcHQgPSAnJztcbiAgICAgICAgaWYgKChhY2NlcHRGaWxlVHlwZXMgJiBGaWxlVHlwZUZsYWcuVklERU8pICE9PSAwKSB7XG4gICAgICAgICAgICBhY2NlcHQgKz0gRmlsZUV4dGVuc2lvbnMuVklERU8gKyAnLCc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKChhY2NlcHRGaWxlVHlwZXMgJiBGaWxlVHlwZUZsYWcuSU1BR0UpICE9PSAwKSB7XG4gICAgICAgICAgICBhY2NlcHQgKz0gRmlsZUV4dGVuc2lvbnMuSU1BR0UgKyAnLCc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKChhY2NlcHRGaWxlVHlwZXMgJiBGaWxlVHlwZUZsYWcuRE9DKSAhPT0gMCkge1xuICAgICAgICAgICAgYWNjZXB0ICs9IEZpbGVFeHRlbnNpb25zLkRPQyArICcsJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoKGFjY2VwdEZpbGVUeXBlcyAmIEZpbGVUeXBlRmxhZy5BVURJTykgIT09IDApIHtcbiAgICAgICAgICAgIGFjY2VwdCArPSBGaWxlRXh0ZW5zaW9ucy5BVURJTyArICcsJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoKGFjY2VwdEZpbGVUeXBlcyAmIEZpbGVUeXBlRmxhZy5DT01QUkVTU0VEKSAhPT0gMCkge1xuICAgICAgICAgICAgYWNjZXB0ICs9IEZpbGVFeHRlbnNpb25zLkNPTVBSRVNTRUQgKyAnLCc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjY2VwdDtcbiAgICB9XG5cbiAgICBnZXRBY2NlcHRlZEV4dGVuc2lvbnNBcnJheShhY2NlcHRGaWxlVHlwZXM6IEZpbGVUeXBlRmxhZykge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICAgICAgaWYgKChhY2NlcHRGaWxlVHlwZXMgJiBGaWxlVHlwZUZsYWcuVklERU8pICE9PSAwKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCguLi5FeHRlbnNpb25zQ29uc3QuVmlkZW9FeHRlbnNpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKGFjY2VwdEZpbGVUeXBlcyAmIEZpbGVUeXBlRmxhZy5JTUFHRSkgIT09IDApIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLkV4dGVuc2lvbnNDb25zdC5JbWFnZUV4dGVuc2lvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgoYWNjZXB0RmlsZVR5cGVzICYgRmlsZVR5cGVGbGFnLkRPQykgIT09IDApIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLkV4dGVuc2lvbnNDb25zdC5Eb2NFeHRlbnNpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKGFjY2VwdEZpbGVUeXBlcyAmIEZpbGVUeXBlRmxhZy5BVURJTykgIT09IDApIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLkV4dGVuc2lvbnNDb25zdC5BdWRpb0V4dGVuc2lvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgoYWNjZXB0RmlsZVR5cGVzICYgRmlsZVR5cGVGbGFnLkNPTVBSRVNTRUQpICE9PSAwKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCguLi5FeHRlbnNpb25zQ29uc3QuQ29tcHJlc3NlZEV4dGVuc2lvbnMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgdXBsb2FkV2l0aEJ5dGVBcnJheShmaWxlKSB7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZXMnLCBmaWxlKTtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9VcGxvYWRXaXRoQnl0ZUFycmF5YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdCh1cmwsIGZvcm1EYXRhLCB7IHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pLnRvUHJvbWlzZSgpO1xuICAgIH1cbn1cbiJdfQ==