ngx-histaff-alpha 3.7.4 → 3.7.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.
@@ -1,4 +1,5 @@
1
1
  import { Component, Input, ViewChild, ViewEncapsulation } from '@angular/core';
2
+ import { BehaviorSubject, buffer, debounceTime, filter, map } from 'rxjs';
2
3
  import { RouterModule } from '@angular/router';
3
4
  import { CommonModule } from '@angular/common';
4
5
  import { TooltipDirective } from '../../tooltip/tooltip.directive';
@@ -10,7 +11,7 @@ import * as i3 from "../../../services/multi-language.service";
10
11
  import * as i4 from "../../../services/layout.service";
11
12
  import * as i5 from "../../../services/menu.service";
12
13
  import * as i6 from "@angular/common";
13
- const DEFAULT_SVG = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-help-circle"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>';
14
+ export const DEFAULT_SVG = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-help-circle"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>';
14
15
  export class ItemComponent {
15
16
  constructor(router, navigatorService, mls, layoutService, menuService) {
16
17
  this.router = router;
@@ -23,6 +24,7 @@ export class ItemComponent {
23
24
  this.expanded = false;
24
25
  this.subscriptions = [];
25
26
  this.currentWidth = 66;
27
+ this.iconClickStream$ = new BehaviorSubject('');
26
28
  this.navigatorService.wideMode$.subscribe(x => this.wideMode = x);
27
29
  this.layoutService.leftBarCurrentWidth$.subscribe(x => {
28
30
  this.currentWidth = x;
@@ -32,6 +34,7 @@ export class ItemComponent {
32
34
  ngOnChanges(changes) {
33
35
  if (changes['item']) {
34
36
  const it = changes['item'].currentValue;
37
+ this.hasChildren = it?.tree$Children?.length > 0;
35
38
  this.caption = this.caption = this.mls.trans(this.item.code);
36
39
  }
37
40
  }
@@ -129,8 +132,9 @@ export class ItemComponent {
129
132
  }
130
133
  }
131
134
  onModuleIconClick(event, item) {
132
- console.log("onModuleIconClick triggered");
133
135
  event.stopPropagation();
136
+ this.navigatorService.clickedModuleItem$.next(item);
137
+ this.iconClickStream$.next(crypto.randomUUID());
134
138
  if (!this.navigatorService.clickedItem$.value) {
135
139
  this.navigatorService.clickedItem$.next(item);
136
140
  this.navigatorService.activeItems$.next([item]);
@@ -157,6 +161,10 @@ export class ItemComponent {
157
161
  }
158
162
  ngAfterViewInit() {
159
163
  setTimeout(() => {
164
+ this.subscriptions.push(this.iconClickStream$.pipe(buffer(this.iconClickStream$.pipe(debounceTime(250))), map(clicks => clicks.length), filter(clicksLength => clicksLength >= 5))
165
+ .subscribe(_ => {
166
+ this.navigatorService.showEditSvg$.next(true);
167
+ }));
160
168
  this.me.nativeElement.style.setProperty('--bg-color', this.navigatorService.backgroundColor);
161
169
  this.me.nativeElement.style.setProperty('--color', this.navigatorService.color);
162
170
  this.me.nativeElement.style.setProperty('--hover-bg-color', this.navigatorService.hoverBackgroundColor);
@@ -196,4 +204,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
196
204
  type: ViewChild,
197
205
  args: ['subArrow']
198
206
  }] } });
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvbmF2aWdhdG9yL25hdmlnYXRvci9pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9uYXZpZ2F0b3IvbmF2aWdhdG9yL2l0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQXFCLFNBQVMsRUFBRSxpQkFBaUIsRUFBdUYsTUFBTSxlQUFlLENBQUM7QUFFbk0sT0FBTyxFQUFVLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBTXZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7Ozs7O0FBRXJFLE1BQU0sV0FBVyxHQUFHLCtXQUErVyxDQUFBO0FBZ0JuWSxNQUFNLE9BQU8sYUFBYTtJQXNCeEIsWUFDVSxNQUFjLEVBQ2YsZ0JBQWtDLEVBQ2pDLEdBQXlCLEVBQzFCLGFBQTRCLEVBQzNCLFdBQXdCO1FBSnhCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2pDLFFBQUcsR0FBSCxHQUFHLENBQXNCO1FBQzFCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzNCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBakJsQyxlQUFVLEdBQUcsV0FBVyxDQUFBO1FBRXhCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBRTdCLGFBQVEsR0FB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Q1osWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLGNBQWM7cUJBRWYsaUJBR2MsaUJBQWlCLENBQUMsSUFBSTttTUFJNUIsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDVyxFQUFFO3NCQUFsQixTQUFTO3VCQUFDLElBQUk7Z0JBQ1EsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUNGLElBQUk7c0JBQXRCLFNBQVM7dUJBQUMsTUFBTTtnQkFDTSxRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQsIE9uRGVzdHJveSwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIEFmdGVyVmlld0luaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFJvdXRlciwgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTmF2aWdhdG9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTXVsdGlMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tdWx0aS1sYW5ndWFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xheW91dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSU5hdmlnYXRvckl0ZW0gfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL0lOYXZpZ2F0b3JJdGVtJztcclxuaW1wb3J0IHsgTWVudVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tZW51LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vdG9vbHRpcC90b29sdGlwLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFN0cmluZ0h0bWxQaXBlIH0gZnJvbSAnLi4vLi4vLi4vYXBwLXBpcGVzL3N0cmluZy1odG1sLnBpcGUnO1xyXG5cclxuY29uc3QgREVGQVVMVF9TVkcgPSAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIGNsYXNzPVwiZmVhdGhlciBmZWF0aGVyLWhlbHAtY2lyY2xlXCI+PGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiPjwvY2lyY2xlPjxwYXRoIGQ9XCJNOS4wOSA5YTMgMyAwIDAgMSA1LjgzIDFjMCAyLTMgMy0zIDNcIj48L3BhdGg+PGxpbmUgeDE9XCIxMlwiIHkxPVwiMTdcIiB4Mj1cIjEyLjAxXCIgeTI9XCIxN1wiPjwvbGluZT48L3N2Zz4nXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1pdGVtJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFJvdXRlck1vZHVsZSxcclxuICAgIFRvb2x0aXBEaXJlY3RpdmUsXHJcbiAgICBTdHJpbmdIdG1sUGlwZSxcclxuICAgIFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2l0ZW0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2l0ZW0uY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBJbnB1dCgpIGl0ZW0hOiBJTmF2aWdhdG9ySXRlbTtcclxuICBASW5wdXQoKSBsZXZlbCE6IG51bWJlcjtcclxuICBAVmlld0NoaWxkKCdtZScpIG1lITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdjaGlsZHJlbicpIGNoaWxkcmVuITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdsaW5rJykgbGluayE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnc3ViQXJyb3cnKSBzdWJBcnJvdyE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGNhcHRpb24hOiBzdHJpbmc7XHJcbiAgZGVmYXVsdFN2ZyA9IERFRkFVTFRfU1ZHXHJcblxyXG4gIGhhc0NoaWxkcmVuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbWFpbldpbmRvd1N0YXRlITogc3RyaW5nO1xyXG4gIGV4cGFuZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbGVmdGJhclJlZHVjZWQhOiBib29sZWFuO1xyXG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIHdpZGVNb2RlITogYm9vbGVhbjtcclxuICBjdXJyZW50V2lkdGg6IG51bWJlciA9IDY2O1xyXG4gIGFjdGl2ZSE6IGJvb2xlYW47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHB1YmxpYyBuYXZpZ2F0b3JTZXJ2aWNlOiBOYXZpZ2F0b3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHVibGljIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1lbnVTZXJ2aWNlOiBNZW51U2VydmljZSxcclxuICApIHtcclxuICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS53aWRlTW9kZSQuc3Vic2NyaWJlKHggPT4gdGhpcy53aWRlTW9kZSA9IHgpO1xyXG4gICAgdGhpcy5sYXlvdXRTZXJ2aWNlLmxlZnRCYXJDdXJyZW50V2lkdGgkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgdGhpcy5jdXJyZW50V2lkdGggPSB4O1xyXG4gICAgICB0aGlzLm1lPy5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWxlZnQtYmFyLWN1cnJlbnQtd2lkdGgnLCB4ICsgJ3B4JylcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2l0ZW0nXSkge1xyXG4gICAgICBjb25zdCBpdCA9IGNoYW5nZXNbJ2l0ZW0nXS5jdXJyZW50VmFsdWU7XHJcbiAgICAgIHRoaXMuY2FwdGlvbiA9IHRoaXMuY2FwdGlvbiA9IHRoaXMubWxzLnRyYW5zKHRoaXMuaXRlbSEuY29kZSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuaXRlbSkge1xyXG4gICAgICBpZiAodGhpcy5pdGVtLnRyZWUkQ2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmFjdGl2ZUl0ZW1zJC5zdWJzY3JpYmUoYyA9PiB7XHJcbiAgICAgIGlmICghYykgcmV0dXJuO1xyXG4gICAgICB0aGlzLmFjdGl2ZSA9ICEhYy5maWx0ZXIoeCA9PiB4LmlkID09PSB0aGlzLml0ZW0/LmlkKS5sZW5ndGhcclxuICAgICAgaWYgKCEhdGhpcy5hY3RpdmUpIHtcclxuICAgICAgICB0aGlzLm1lPy5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJhY3RpdmVcIilcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1lPy5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJhY3RpdmVcIilcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5tbHMubGFuZyQuc3Vic2NyaWJlKF8gPT4ge1xyXG4gICAgICAgIHRoaXMuY2FwdGlvbiA9IHRoaXMubWxzLnRyYW5zKHRoaXMuaXRlbSEuY29kZSlcclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLmxlZnRiYXJSZWR1Y2VkJC5zdWJzY3JpYmUoeCA9PiB0aGlzLmxlZnRiYXJSZWR1Y2VkID0geClcclxuICAgIClcclxuICB9XHJcblxyXG4gIHN1YkFycm93Q2xpY2tlZChldmVudDogRXZlbnQsIGl0ZW06IElOYXZpZ2F0b3JJdGVtKSB7XHJcblxyXG4gICAgY29uc29sZS5sb2coXCJzdWJBcnJvd0NsaWNrZWQgdHJpZ2dlcmVkXCIpXHJcblxyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgaWYgKCF0aGlzLndpZGVNb2RlKSB7XHJcbiAgICAgIGxldCBuZXdBY3RpdmVJdGVtcyA9IHRoaXMubmF2aWdhdG9yU2VydmljZS5hY3RpdmVJdGVtcyQudmFsdWU7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwic3ViQXJyb3dDbGlja2VkIG5ld0FjdGl2ZUl0ZW1zIGJlNCBmaWx0ZXJpbmdcIiwgbmV3QWN0aXZlSXRlbXMpXHJcbiAgICAgIG5ld0FjdGl2ZUl0ZW1zID0gbmV3QWN0aXZlSXRlbXMuZmlsdGVyKHggPT4geC50cmVlJFRpZXIhIDwgaXRlbS50cmVlJFRpZXIhKTtcclxuICAgICAgbmV3QWN0aXZlSXRlbXMucHVzaChpdGVtKTtcclxuICAgICAgY29uc29sZS5sb2coXCJzdWJBcnJvd0NsaWNrZWQgbmV3QWN0aXZlSXRlbXNcIiwgbmV3QWN0aXZlSXRlbXMpXHJcbiAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5hY3RpdmVJdGVtcyQubmV4dChuZXdBY3RpdmVJdGVtcyk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGlmICh0aGlzLmNoaWxkcmVuLm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lID09PSAnY2hpbGQgc3ViLW1lbnUnKSB7XHJcbiAgICAgIHRoaXMuY2hpbGRyZW4ubmF0aXZlRWxlbWVudC5jbGFzc05hbWUgPSAnY2hpbGQgc3ViLW1lbnUgZXhwYW5kZWQnO1xyXG4gICAgICB0aGlzLnN1YkFycm93Lm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lID0gdGhpcy5zdWJBcnJvdy5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZS5yZXBsYWNlKCcgcGx1cycsICcnKSArICcgbWludXMnO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmNoaWxkcmVuLm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lID09PSAnY2hpbGQgc3ViLW1lbnUgZXhwYW5kZWQnKSB7XHJcbiAgICAgIHRoaXMuY2hpbGRyZW4ubmF0aXZlRWxlbWVudC5jbGFzc05hbWUgPSAnY2hpbGQgc3ViLW1lbnUnO1xyXG4gICAgICB0aGlzLnN1YkFycm93Lm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lID0gdGhpcy5zdWJBcnJvdy5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZS5yZXBsYWNlKCcgbWludXMnLCAnJykgKyAnIHBsdXMnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DbGljayhldmVudDogYW55LCBpdGVtOiBJTmF2aWdhdG9ySXRlbSkge1xyXG5cclxuICAgIGNvbnNvbGUubG9nKFwib25DbGljayB0cmlnZ2VyZWRcIilcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBpZiAoIXRoaXMud2lkZU1vZGUpIHtcclxuXHJcbiAgICAgIHRoaXMub25Nb2R1bGVJY29uQ2xpY2soZXZlbnQsIGl0ZW0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCEhdGhpcy53aWRlTW9kZSAmJiB0aGlzLml0ZW0hLnRyZWUkU2VsZWN0ZWQgPT0gdHJ1ZSAmJiAhIXRoaXMuaXRlbSEudHJlZSRQYXJlbnQgJiYgKHRoaXMuaXRlbSEudHJlZSRUaWVyICE9IDIgfHwgdGhpcy5pdGVtIS50cmVlJFRpZXIgPT0gMiAmJiB0aGlzLml0ZW0hLnRyZWUkQ2hpbGRyZW4ubGVuZ3RoID09IDApKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLndpZGVNb2RlKSB7XHJcbiAgICAgIGlmICh0aGlzLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgY29uc3QgZWwgPSB0aGlzLmNoaWxkcmVuLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgY29uc3QgcmVjdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgIGNvbnN0IGhlaWdodCA9IHJlY3QuaGVpZ2h0O1xyXG4gICAgICAgIGlmIChoZWlnaHQgPT09IDApIHtcclxuICAgICAgICAgIGl0ZW0udHJlZSRTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGl0ZW0udHJlZSRUaWVyID09IDEgfHwgaXRlbS50cmVlJFRpZXIgPT0gMikge1xyXG4gICAgICAgICAgICBpdGVtLnRyZWUkU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5tZS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWNoaWxkcmVuLWhlaWdodCcsIGhlaWdodCArICdweCcpXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaXRlbS50cmVlJFNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm1lbnVTZXJ2aWNlLm5hdmlnYXRpb24kLnZhbHVlLm1hcCh4ID0+IHtcclxuICAgICAgICAgIGlmICh4LnRyZWUkQ2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgeC50cmVlJENoaWxkcmVuLm1hcCgoeTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHkudHJlZSRDaGlsZHJlbikge1xyXG4gICAgICAgICAgICAgICAgeS50cmVlJENoaWxkcmVuLm1hcCgoejogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh6ICE9IGl0ZW0pIHtcclxuICAgICAgICAgICAgICAgICAgICB6LnRyZWUkU2VsZWN0ZWQgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoeSAhPSBpdGVtKSB7XHJcbiAgICAgICAgICAgICAgICB5LnRyZWUkU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY2xpY2tlZEl0ZW0kLm5leHQoaXRlbSlcclxuXHJcbiAgICBpZiAoISFpdGVtLnRyZWUkUGFyZW50KSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdtZW51Q3VycmVudENsaWNrZWQnLCBKU09OLnN0cmluZ2lmeShpdGVtKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbk1vZHVsZUljb25DbGljayhldmVudDogYW55LCBpdGVtOiBJTmF2aWdhdG9ySXRlbSkge1xyXG4gICAgY29uc29sZS5sb2coXCJvbk1vZHVsZUljb25DbGljayB0cmlnZ2VyZWRcIilcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGlmICghdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmNsaWNrZWRJdGVtJC52YWx1ZSkge1xyXG4gICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY2xpY2tlZEl0ZW0kLm5leHQoaXRlbSk7XHJcbiAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5hY3RpdmVJdGVtcyQubmV4dChbaXRlbV0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMud2lkZU1vZGUpIHtcclxuICAgICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY2xpY2tlZEl0ZW0kLm5leHQoaXRlbSk7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmFjdGl2ZUl0ZW1zJC5uZXh0KFtpdGVtXSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMubmF2aWdhdG9yU2VydmljZS5jbGlja2VkSXRlbSQudmFsdWUuaWQgIT09IGl0ZW0uaWQpIHtcclxuICAgICAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5jbGlja2VkSXRlbSQubmV4dChpdGVtKTtcclxuICAgICAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5hY3RpdmVJdGVtcyQubmV4dChbaXRlbV0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY2xpY2tlZEl0ZW0kLm5leHQobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuYWN0aXZlSXRlbXMkLm5leHQoW10pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGNoZWNrQWN0aXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMubWUubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1iZy1jb2xvcicsIHRoaXMubmF2aWdhdG9yU2VydmljZS5iYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICB0aGlzLm1lLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tY29sb3InLCB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY29sb3IpO1xyXG4gICAgICB0aGlzLm1lLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0taG92ZXItYmctY29sb3InLCB0aGlzLm5hdmlnYXRvclNlcnZpY2UuaG92ZXJCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICB0aGlzLm1lLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0taG92ZXItY29sb3InLCB0aGlzLm5hdmlnYXRvclNlcnZpY2UuaG92ZXJDb2xvcik7XHJcbiAgICAgIHRoaXMubWUubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1pY29uLWJvcmRlci1yYWRpdXMnLCB0aGlzLm5hdmlnYXRvclNlcnZpY2UuaWNvbkJvcmRlclJhZGl1cyArICdweCcpO1xyXG4gICAgICB0aGlzLm1lLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0taWNvbi1ndXR0ZXIteScsIHRoaXMubmF2aWdhdG9yU2VydmljZS5pY29uR3V0dGVyWSArICdweCcpO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLm1hcCh4ID0+IHgudW5zdWJzY3JpYmUoKSlcclxuICB9XHJcblxyXG59XHJcbiIsIjxsaSAjbWUgW2lkXT1cIidtYWluLW1lbnUtJyArIGl0ZW0uaWRcIiBjbGFzcz1cInBhcmVudFwiIFthdHRyLmRhdGEtbGV2ZWxdPVwibGV2ZWxcIiBbY2xhc3MucmVkdWNlZF09XCJsZWZ0YmFyUmVkdWNlZFwiXHJcbiAgICBbY2xhc3MuYWN0aXZlXT1cIiF3aWRlTW9kZSAmJiBhY3RpdmVcIiBbY2xhc3MuZXhwYW5kZWRdPVwiaXRlbS50cmVlJEV4cGFuZGVkXCJcclxuICAgIFtjbGFzcy5oaWdobGlnaHRlZF09XCJpdGVtLnRyZWUkSGlnaGxpZ2h0ZWRcIiBbY2xhc3MubGktdGhpbi1tb2RlXT1cIiF3aWRlTW9kZVwiIFtjbGFzcy5tZW51LWl0ZW1dPVwiIXdpZGVNb2RlXCJcclxuICAgIFthcHBUb29sdGlwXT1cImxldmVsPT09MSAmJiAhYWN0aXZlID8gY2FwdGlvbiA6IHVuZGVmaW5lZFwiIFtwb3NpdGlvbl09XCIncmlnaHQnXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgIG1hcmdpblRvcDogKGxldmVsPT09MSAmJiAhd2lkZU1vZGUpID8gbmF2aWdhdG9yU2VydmljZS5pY29uR3V0dGVyWSArICdweCcgOiAnJyxcclxuICAgICAgICBtYXJnaW5Cb3R0b206IChsZXZlbD09PTEgJiYgIXdpZGVNb2RlKSA/IG5hdmlnYXRvclNlcnZpY2UuaWNvbkd1dHRlclkgKyAncHgnIDogJydcclxuICAgIH1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtZW51LWl0ZW0td3JhcHBlclwiIFthdHRyLmRhdGEtbGV2ZWxdPVwibGV2ZWxcIiAoY2xpY2spPVwib25DbGljaygkZXZlbnQsIGl0ZW0pXCJcclxuICAgICAgICBbY2xhc3MubW9kdWxlLXRoaW4tbW9kZV09XCIhd2lkZU1vZGUgJiYgbGV2ZWw9PT0xXCIgW2NsYXNzLnRoaW4tYnJhbmNoXT1cIiF3aWRlTW9kZSAmJiBsZXZlbCA+IDFcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czogKGxldmVsPT09MSAmJiAhd2lkZU1vZGUpID8gbmF2aWdhdG9yU2VydmljZS5pY29uQm9yZGVyUmFkaXVzICsgJ3B4JyA6ICcnXHJcbiAgICAgICAgfVwiPlxyXG5cclxuICAgICAgICBAaWYgKHdpZGVNb2RlKSB7XHJcbiAgICAgICAgQGlmICghISFsZWZ0YmFyUmVkdWNlZCkge1xyXG4gICAgICAgIEBpZiAoISFoYXNDaGlsZHJlbikge1xyXG4gICAgICAgIEBpZiAoIWl0ZW0udHJlZSRTZWxlY3RlZCkge1xyXG4gICAgICAgIDxpIFthdHRyLmRhdGEtbGV2ZWxdPVwibGV2ZWxcIiBjbGFzcz1cImN1c3RvbS1pY29uLXBhcmVudC1yaWdodFwiPjwvaT5cclxuICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICA8aSBbYXR0ci5kYXRhLWxldmVsXT1cImxldmVsXCIgY2xhc3M9XCJjdXN0b20taWNvbi1wYXJlbnQtZG93blwiPjwvaT5cclxuICAgICAgICB9XHJcbiAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgQGlmIChpdGVtLnRyZWUkU2VsZWN0ZWQgJiYgaXRlbS5jb2RlICE9PSAnTUVOVS5EQVNIQk9BUkQnICYmIGl0ZW0uY29kZSAhPT0gJ01FTlUuSE9NRScpIHtcclxuICAgICAgICA8aSBbYXR0ci5kYXRhLWxldmVsXT1cImxldmVsXCIgY2xhc3M9XCJjdXN0b20taWNvbi1jaGlsZC1yaWdodFwiPjwvaT5cclxuICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBpZiAoISFpdGVtLmljb25TdmcpIHtcclxuICAgICAgICA8aSBbYXR0ci5kYXRhLWxldmVsXT1cImxldmVsXCIgY2xhc3M9XCInbW9kdWxlLWljb24nXCJcclxuICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwid2lkZU1vZGUgPyBjYXB0aW9uIDogdW5kZWZpbmVkXCIgKGNsaWNrKT1cIm9uTW9kdWxlSWNvbkNsaWNrKCRldmVudCwgaXRlbSk7ZmFsc2VcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcclxuICAgICAgICAgICAgICAgIGxlZnQ6IHdpZGVNb2RlID8gJzIwcHgnIDogJ3Vuc2V0J1xyXG4gICAgICAgICAgICB9XCI+PHNwYW4gW2lubmVySHRtbF09XCJpdGVtLmljb25TdmcgfCBzdHJpbmdIdG1sXCI+PC9zcGFuPjwvaT5cclxuXHJcbiAgICAgICAgPCEtLSA8c3BhbiBbaW5uZXJIdG1sXT1cIml0ZW0uaWNvblN2ZyB8IHN0cmluZ0h0bWxcIj48L3NwYW4+IC0tPlxyXG4gICAgICAgIH0gQGVsc2UgaWYgKCEhaXRlbS5pY29uQ2xhc3MpIHtcclxuICAgICAgICA8aSBbYXR0ci5kYXRhLWxldmVsXT1cImxldmVsXCIgW2NsYXNzXT1cIml0ZW0uaWNvbkNsYXNzICsgJyBtb2R1bGUtaWNvbidcIlxyXG4gICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJ3aWRlTW9kZSA/IGNhcHRpb24gOiB1bmRlZmluZWRcIiAoY2xpY2spPVwib25Nb2R1bGVJY29uQ2xpY2soJGV2ZW50LCBpdGVtKTtmYWxzZVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgIGxlZnQ6IHdpZGVNb2RlID8gJzIwcHgnIDogJ3Vuc2V0J1xyXG4gICAgICAgICAgICB9XCI+PC9pPlxyXG4gICAgICAgIH0gQGVsc2UgaWYgKCFpdGVtLnBhcmVudCkge1xyXG4gICAgICAgICAgICA8aSBbYXR0ci5kYXRhLWxldmVsXT1cImxldmVsXCIgY2xhc3M9XCInbW9kdWxlLWljb24nXCJcclxuICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwid2lkZU1vZGUgPyBjYXB0aW9uIDogdW5kZWZpbmVkXCIgKGNsaWNrKT1cIm9uTW9kdWxlSWNvbkNsaWNrKCRldmVudCwgaXRlbSk7ZmFsc2VcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcclxuICAgICAgICAgICAgICAgIGxlZnQ6IHdpZGVNb2RlID8gJzIwcHgnIDogJ3Vuc2V0J1xyXG4gICAgICAgICAgICB9XCI+PHNwYW4gW2lubmVySHRtbF09XCJkZWZhdWx0U3ZnIHwgc3RyaW5nSHRtbFwiPjwvc3Bhbj48L2k+ICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBAaWYgKCF3aWRlTW9kZSB8fCAoIWxlZnRiYXJSZWR1Y2VkICYmIGhhc0NoaWxkcmVuKSkge1xyXG4gICAgICAgIDxhICNsaW5rIFthdHRyLmRhdGEtbGV2ZWxdPVwibGV2ZWxcIiBjbGFzcz1cImhhcy1zdWJtZW51XCIgW2FwcFRvb2x0aXBdPVwibGV2ZWwgPiAxID8gY2FwdGlvbiA6IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgICAgIFtjbGFzcy50aGluLW1vZGVdPVwiIXdpZGVNb2RlXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKGNsaWNrKT1cInN1YkFycm93Q2xpY2tlZCgkZXZlbnQsIGl0ZW0pO2ZhbHNlXCI+IDwhLS1mYWxzZSBpcyBpbXBvcnRhbnQgaGVyZS0tPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gI3N1YkFycm93ICpuZ0lmPVwiKCEhaXRlbS5waWN0dXJlQmFzZTY0IHx8ICEhaXRlbS5waWN0dXJlVXJpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIidpbWctc3BhbiBwbHVzIGxldmVsJyArIGxldmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cIml0ZW0ucGljdHVyZUJhc2U2NCB8fCBpdGVtLnBpY3R1cmVVcmlcIiAqbmdJZj1cIiEhaXRlbS5waWN0dXJlQmFzZTY0XCI+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAjc3ViQXJyb3cgKm5nSWY9XCIhISFpdGVtLnBpY3R1cmVCYXNlNjQgJiYgISEhaXRlbS5waWN0dXJlVXJpXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiJ3BsdXMgbGV2ZWwnICsgbGV2ZWxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPGltZyAqbmdJZj1cIighIWl0ZW0ucGljdHVyZUJhc2U2NCB8fCAhIWl0ZW0ucGljdHVyZVVyaSlcIiBbc3JjXT1cIml0ZW0ucGljdHVyZUJhc2U2NCB8fCBpdGVtLnBpY3R1cmVVcmlcIj5cclxuXHJcbiAgICAgICAgICAgIHt7IGNhcHRpb24gfX1cclxuXHJcbiAgICAgICAgPC9hPlxyXG4gICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIDxhIFthdHRyLmRhdGEtbGV2ZWxdPVwibGV2ZWxcIiBbcm91dGVyTGlua109XCJpdGVtLnVybFwiIChjbGljayk9XCJvbkNsaWNrKCRldmVudCwgaXRlbSlcIlxyXG4gICAgICAgICAgICBbY2xhc3MudGhpbi1tb2RlXT1cIiF3aWRlTW9kZVwiIFthcHBUb29sdGlwXT1cIndpZGVNb2RlID8gY2FwdGlvbiA6IHVuZGVmaW5lZFwiPlxyXG4gICAgICAgICAgICB7eyBjYXB0aW9uIH19XHJcbiAgICAgICAgPC9hPlxyXG4gICAgICAgIH1cclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICBAaWYgKCEhd2lkZU1vZGUgJiYgISFoYXNDaGlsZHJlbiAmJiAhIWl0ZW0udHJlZSRDaGlsZHJlbiEubGVuZ3RoICYmICEhIWxlZnRiYXJSZWR1Y2VkKSB7XHJcbiAgICA8dWwgI2NoaWxkcmVuIFtjbGFzcy5leHBhbmRlZF09XCIhd2lkZU1vZGUgfHwgaXRlbS50cmVlJEV4cGFuZGVkXCIgW2NsYXNzLnVsLXRoaW4tbW9kZV09XCIhd2lkZU1vZGVcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDAsXHJcbiAgICAgICAgICAgIHdpZHRoOiAhIXdpZGVNb2RlID8gKGxheW91dFNlcnZpY2UubGVmdEJhckN1cnJlbnRXaWR0aCQudmFsdWUgLSBsYXlvdXRTZXJ2aWNlLmJhc2ljU3BhY2luZyAtIGxheW91dFNlcnZpY2Uuc2Nyb2xsQmFyV2lkdGggKyA1ICsgJ3B4JykgOiAoIGxheW91dFNlcnZpY2UubGVmdEJhcldpZGVXaWR0aCQudmFsdWUgKyAncHgnICksXHJcbiAgICAgICAgfVwiIFtjbGFzcy5zdWJtZW51XT1cIiF3aWRlTW9kZVwiPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIEBmb3IgKGNoaWxkIG9mIGl0ZW0udHJlZSRDaGlsZHJlbjsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgIDxhcHAtaXRlbSBbaXRlbV09XCJjaGlsZFwiIFtsZXZlbF09XCJsZXZlbCsxXCIgKGNsaWNrZWQpPVwib25DbGljaygkZXZlbnQsIGNoaWxkKVwiPjwvYXBwLWl0ZW0+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvdWw+XHJcbiAgICB9XHJcblxyXG48L2xpPiJdfQ==
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvbmF2aWdhdG9yL25hdmlnYXRvci9pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9uYXZpZ2F0b3IvbmF2aWdhdG9yL2l0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQXFCLFNBQVMsRUFBRSxpQkFBaUIsRUFBdUYsTUFBTSxlQUFlLENBQUM7QUFDbk0sT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3hGLE9BQU8sRUFBVSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQU12RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7OztBQUVyRSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsK1dBQStXLENBQUE7QUFnQjFZLE1BQU0sT0FBTyxhQUFhO0lBd0J4QixZQUNVLE1BQWMsRUFDZixnQkFBa0MsRUFDakMsR0FBeUIsRUFDMUIsYUFBNEIsRUFDM0IsV0FBd0I7UUFKeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNmLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDakMsUUFBRyxHQUFILEdBQUcsQ0FBc0I7UUFDMUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFD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OUIsU0FBUzt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24sIENoYW5nZURldGVjdG9yUmVmLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBBZnRlclZpZXdJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgYnVmZmVyLCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBOYXZpZ2F0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbmF2aWdhdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJTmF2aWdhdG9ySXRlbSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvSU5hdmlnYXRvckl0ZW0nO1xyXG5pbXBvcnQgeyBNZW51U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21lbnUuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU3RyaW5nSHRtbFBpcGUgfSBmcm9tICcuLi8uLi8uLi9hcHAtcGlwZXMvc3RyaW5nLWh0bWwucGlwZSc7XHJcblxyXG5leHBvcnQgY29uc3QgREVGQVVMVF9TVkcgPSAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIGNsYXNzPVwiZmVhdGhlciBmZWF0aGVyLWhlbHAtY2lyY2xlXCI+PGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiPjwvY2lyY2xlPjxwYXRoIGQ9XCJNOS4wOSA5YTMgMyAwIDAgMSA1LjgzIDFjMCAyLTMgMy0zIDNcIj48L3BhdGg+PGxpbmUgeDE9XCIxMlwiIHkxPVwiMTdcIiB4Mj1cIjEyLjAxXCIgeTI9XCIxN1wiPjwvbGluZT48L3N2Zz4nXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1pdGVtJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFJvdXRlck1vZHVsZSxcclxuICAgIFRvb2x0aXBEaXJlY3RpdmUsXHJcbiAgICBTdHJpbmdIdG1sUGlwZSxcclxuXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vaXRlbS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaXRlbS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIEl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgQElucHV0KCkgaXRlbSE6IElOYXZpZ2F0b3JJdGVtO1xyXG4gIEBJbnB1dCgpIGxldmVsITogbnVtYmVyO1xyXG4gIEBWaWV3Q2hpbGQoJ21lJykgbWUhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2NoaWxkcmVuJykgY2hpbGRyZW4hOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2xpbmsnKSBsaW5rITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdzdWJBcnJvdycpIHN1YkFycm93ITogRWxlbWVudFJlZjtcclxuXHJcbiAgY2FwdGlvbiE6IHN0cmluZztcclxuICBkZWZhdWx0U3ZnID0gREVGQVVMVF9TVkdcclxuXHJcbiAgaGFzQ2hpbGRyZW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICBtYWluV2luZG93U3RhdGUhOiBzdHJpbmc7XHJcbiAgZXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBsZWZ0YmFyUmVkdWNlZCE6IGJvb2xlYW47XHJcbiAgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgd2lkZU1vZGUhOiBib29sZWFuO1xyXG4gIGN1cnJlbnRXaWR0aDogbnVtYmVyID0gNjY7XHJcbiAgYWN0aXZlITogYm9vbGVhbjtcclxuXHJcbiAgaWNvbkNsaWNrU3RyZWFtJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHB1YmxpYyBuYXZpZ2F0b3JTZXJ2aWNlOiBOYXZpZ2F0b3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHVibGljIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1lbnVTZXJ2aWNlOiBNZW51U2VydmljZSxcclxuICApIHtcclxuICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS53aWRlTW9kZSQuc3Vic2NyaWJlKHggPT4gdGhpcy53aWRlTW9kZSA9IHgpO1xyXG4gICAgdGhpcy5sYXlvdXRTZXJ2aWNlLmxlZnRCYXJDdXJyZW50V2lkdGgkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgdGhpcy5jdXJyZW50V2lkdGggPSB4O1xyXG4gICAgICB0aGlzLm1lPy5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWxlZnQtYmFyLWN1cnJlbnQtd2lkdGgnLCB4ICsgJ3B4JylcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2l0ZW0nXSkge1xyXG4gICAgICBjb25zdCBpdDogSU5hdmlnYXRvckl0ZW0gPSBjaGFuZ2VzWydpdGVtJ10uY3VycmVudFZhbHVlO1xyXG4gICAgICB0aGlzLmhhc0NoaWxkcmVuID0gaXQ/LnRyZWUkQ2hpbGRyZW4/Lmxlbmd0aCA+IDA7XHJcbiAgICAgIHRoaXMuY2FwdGlvbiA9IHRoaXMuY2FwdGlvbiA9IHRoaXMubWxzLnRyYW5zKHRoaXMuaXRlbSEuY29kZSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuaXRlbSkge1xyXG4gICAgICBpZiAodGhpcy5pdGVtLnRyZWUkQ2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmFjdGl2ZUl0ZW1zJC5zdWJzY3JpYmUoYyA9PiB7XHJcbiAgICAgIGlmICghYykgcmV0dXJuO1xyXG4gICAgICB0aGlzLmFjdGl2ZSA9ICEhYy5maWx0ZXIoeCA9PiB4LmlkID09PSB0aGlzLml0ZW0/LmlkKS5sZW5ndGhcclxuICAgICAgaWYgKCEhdGhpcy5hY3RpdmUpIHtcclxuICAgICAgICB0aGlzLm1lPy5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJhY3RpdmVcIilcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1lPy5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJhY3RpdmVcIilcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5tbHMubGFuZyQuc3Vic2NyaWJlKF8gPT4ge1xyXG4gICAgICAgIHRoaXMuY2FwdGlvbiA9IHRoaXMubWxzLnRyYW5zKHRoaXMuaXRlbSEuY29kZSlcclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLmxlZnRiYXJSZWR1Y2VkJC5zdWJzY3JpYmUoeCA9PiB0aGlzLmxlZnRiYXJSZWR1Y2VkID0geClcclxuICAgIClcclxuICB9XHJcblxyXG4gIHN1YkFycm93Q2xpY2tlZChldmVudDogRXZlbnQsIGl0ZW06IElOYXZpZ2F0b3JJdGVtKSB7XHJcblxyXG4gICAgY29uc29sZS5sb2coXCJzdWJBcnJvd0NsaWNrZWQgdHJpZ2dlcmVkXCIpXHJcblxyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgaWYgKCF0aGlzLndpZGVNb2RlKSB7XHJcbiAgICAgIGxldCBuZXdBY3RpdmVJdGVtcyA9IHRoaXMubmF2aWdhdG9yU2VydmljZS5hY3RpdmVJdGVtcyQudmFsdWU7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwic3ViQXJyb3dDbGlja2VkIG5ld0FjdGl2ZUl0ZW1zIGJlNCBmaWx0ZXJpbmdcIiwgbmV3QWN0aXZlSXRlbXMpXHJcbiAgICAgIG5ld0FjdGl2ZUl0ZW1zID0gbmV3QWN0aXZlSXRlbXMuZmlsdGVyKHggPT4geC50cmVlJFRpZXIhIDwgaXRlbS50cmVlJFRpZXIhKTtcclxuICAgICAgbmV3QWN0aXZlSXRlbXMucHVzaChpdGVtKTtcclxuICAgICAgY29uc29sZS5sb2coXCJzdWJBcnJvd0NsaWNrZWQgbmV3QWN0aXZlSXRlbXNcIiwgbmV3QWN0aXZlSXRlbXMpXHJcbiAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5hY3RpdmVJdGVtcyQubmV4dChuZXdBY3RpdmVJdGVtcyk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGlmICh0aGlzLmNoaWxkcmVuLm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lID09PSAnY2hpbGQgc3ViLW1lbnUnKSB7XHJcbiAgICAgIHRoaXMuY2hpbGRyZW4ubmF0aXZlRWxlbWVudC5jbGFzc05hbWUgPSAnY2hpbGQgc3ViLW1lbnUgZXhwYW5kZWQnO1xyXG4gICAgICB0aGlzLnN1YkFycm93Lm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lID0gdGhpcy5zdWJBcnJvdy5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZS5yZXBsYWNlKCcgcGx1cycsICcnKSArICcgbWludXMnO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmNoaWxkcmVuLm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lID09PSAnY2hpbGQgc3ViLW1lbnUgZXhwYW5kZWQnKSB7XHJcbiAgICAgIHRoaXMuY2hpbGRyZW4ubmF0aXZlRWxlbWVudC5jbGFzc05hbWUgPSAnY2hpbGQgc3ViLW1lbnUnO1xyXG4gICAgICB0aGlzLnN1YkFycm93Lm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lID0gdGhpcy5zdWJBcnJvdy5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZS5yZXBsYWNlKCcgbWludXMnLCAnJykgKyAnIHBsdXMnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DbGljayhldmVudDogYW55LCBpdGVtOiBJTmF2aWdhdG9ySXRlbSkge1xyXG5cclxuICAgIGNvbnNvbGUubG9nKFwib25DbGljayB0cmlnZ2VyZWRcIilcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBpZiAoIXRoaXMud2lkZU1vZGUpIHtcclxuXHJcbiAgICAgIHRoaXMub25Nb2R1bGVJY29uQ2xpY2soZXZlbnQsIGl0ZW0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCEhdGhpcy53aWRlTW9kZSAmJiB0aGlzLml0ZW0hLnRyZWUkU2VsZWN0ZWQgPT0gdHJ1ZSAmJiAhIXRoaXMuaXRlbSEudHJlZSRQYXJlbnQgJiYgKHRoaXMuaXRlbSEudHJlZSRUaWVyICE9IDIgfHwgdGhpcy5pdGVtIS50cmVlJFRpZXIgPT0gMiAmJiB0aGlzLml0ZW0hLnRyZWUkQ2hpbGRyZW4ubGVuZ3RoID09IDApKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLndpZGVNb2RlKSB7XHJcbiAgICAgIGlmICh0aGlzLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgY29uc3QgZWwgPSB0aGlzLmNoaWxkcmVuLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgY29uc3QgcmVjdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgIGNvbnN0IGhlaWdodCA9IHJlY3QuaGVpZ2h0O1xyXG4gICAgICAgIGlmIChoZWlnaHQgPT09IDApIHtcclxuICAgICAgICAgIGl0ZW0udHJlZSRTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGl0ZW0udHJlZSRUaWVyID09IDEgfHwgaXRlbS50cmVlJFRpZXIgPT0gMikge1xyXG4gICAgICAgICAgICBpdGVtLnRyZWUkU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5tZS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWNoaWxkcmVuLWhlaWdodCcsIGhlaWdodCArICdweCcpXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaXRlbS50cmVlJFNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm1lbnVTZXJ2aWNlLm5hdmlnYXRpb24kLnZhbHVlLm1hcCh4ID0+IHtcclxuICAgICAgICAgIGlmICh4LnRyZWUkQ2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgeC50cmVlJENoaWxkcmVuLm1hcCgoeTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHkudHJlZSRDaGlsZHJlbikge1xyXG4gICAgICAgICAgICAgICAgeS50cmVlJENoaWxkcmVuLm1hcCgoejogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh6ICE9IGl0ZW0pIHtcclxuICAgICAgICAgICAgICAgICAgICB6LnRyZWUkU2VsZWN0ZWQgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoeSAhPSBpdGVtKSB7XHJcbiAgICAgICAgICAgICAgICB5LnRyZWUkU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY2xpY2tlZEl0ZW0kLm5leHQoaXRlbSlcclxuXHJcbiAgICBpZiAoISFpdGVtLnRyZWUkUGFyZW50KSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdtZW51Q3VycmVudENsaWNrZWQnLCBKU09OLnN0cmluZ2lmeShpdGVtKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbk1vZHVsZUljb25DbGljayhldmVudDogYW55LCBpdGVtOiBJTmF2aWdhdG9ySXRlbSkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY2xpY2tlZE1vZHVsZUl0ZW0kLm5leHQoaXRlbSk7XHJcbiAgICB0aGlzLmljb25DbGlja1N0cmVhbSQubmV4dChjcnlwdG8ucmFuZG9tVVVJRCgpKTtcclxuXHJcbiAgICBpZiAoIXRoaXMubmF2aWdhdG9yU2VydmljZS5jbGlja2VkSXRlbSQudmFsdWUpIHtcclxuICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmNsaWNrZWRJdGVtJC5uZXh0KGl0ZW0pO1xyXG4gICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuYWN0aXZlSXRlbXMkLm5leHQoW2l0ZW1dKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLndpZGVNb2RlKSB7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmNsaWNrZWRJdGVtJC5uZXh0KGl0ZW0pO1xyXG4gICAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5hY3RpdmVJdGVtcyQubmV4dChbaXRlbV0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLm5hdmlnYXRvclNlcnZpY2UuY2xpY2tlZEl0ZW0kLnZhbHVlLmlkICE9PSBpdGVtLmlkKSB7XHJcbiAgICAgICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY2xpY2tlZEl0ZW0kLm5leHQoaXRlbSk7XHJcbiAgICAgICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuYWN0aXZlSXRlbXMkLm5leHQoW2l0ZW1dKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmNsaWNrZWRJdGVtJC5uZXh0KG51bGwpO1xyXG4gICAgICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmFjdGl2ZUl0ZW1zJC5uZXh0KFtdKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBjaGVja0FjdGl2ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmFjdGl2ZTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5pY29uQ2xpY2tTdHJlYW0kLnBpcGUoXHJcbiAgICAgICAgICBidWZmZXIodGhpcy5pY29uQ2xpY2tTdHJlYW0kLnBpcGUoZGVib3VuY2VUaW1lKDI1MCkpKSxcclxuICAgICAgICAgIG1hcChjbGlja3MgPT4gY2xpY2tzLmxlbmd0aCksXHJcbiAgICAgICAgICBmaWx0ZXIoY2xpY2tzTGVuZ3RoID0+IGNsaWNrc0xlbmd0aCA+PSA1KSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUoXyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5zaG93RWRpdFN2ZyQubmV4dCh0cnVlKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgIClcclxuXHJcbiAgICB0aGlzLm1lLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tYmctY29sb3InLCB0aGlzLm5hdmlnYXRvclNlcnZpY2UuYmFja2dyb3VuZENvbG9yKTtcclxuICAgIHRoaXMubWUubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1jb2xvcicsIHRoaXMubmF2aWdhdG9yU2VydmljZS5jb2xvcik7XHJcbiAgICB0aGlzLm1lLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0taG92ZXItYmctY29sb3InLCB0aGlzLm5hdmlnYXRvclNlcnZpY2UuaG92ZXJCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgdGhpcy5tZS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWhvdmVyLWNvbG9yJywgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmhvdmVyQ29sb3IpO1xyXG4gICAgdGhpcy5tZS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWljb24tYm9yZGVyLXJhZGl1cycsIHRoaXMubmF2aWdhdG9yU2VydmljZS5pY29uQm9yZGVyUmFkaXVzICsgJ3B4Jyk7XHJcbiAgICB0aGlzLm1lLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0taWNvbi1ndXR0ZXIteScsIHRoaXMubmF2aWdhdG9yU2VydmljZS5pY29uR3V0dGVyWSArICdweCcpO1xyXG4gIH0pXHJcbn1cclxuXHJcbm5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gIHRoaXMuc3Vic2NyaXB0aW9ucy5tYXAoeCA9PiB4LnVuc3Vic2NyaWJlKCkpXHJcbn1cclxuXHJcbn1cclxuIiwiPGxpICNtZSBbaWRdPVwiJ21haW4tbWVudS0nICsgaXRlbS5pZFwiIGNsYXNzPVwicGFyZW50XCIgW2F0dHIuZGF0YS1sZXZlbF09XCJsZXZlbFwiIFtjbGFzcy5yZWR1Y2VkXT1cImxlZnRiYXJSZWR1Y2VkXCJcclxuICAgIFtjbGFzcy5hY3RpdmVdPVwiIXdpZGVNb2RlICYmIGFjdGl2ZVwiIFtjbGFzcy5leHBhbmRlZF09XCJpdGVtLnRyZWUkRXhwYW5kZWRcIlxyXG4gICAgW2NsYXNzLmhpZ2hsaWdodGVkXT1cIml0ZW0udHJlZSRIaWdobGlnaHRlZFwiIFtjbGFzcy5saS10aGluLW1vZGVdPVwiIXdpZGVNb2RlXCIgW2NsYXNzLm1lbnUtaXRlbV09XCIhd2lkZU1vZGVcIlxyXG4gICAgW2FwcFRvb2x0aXBdPVwibGV2ZWw9PT0xICYmICFhY3RpdmUgPyBjYXB0aW9uIDogdW5kZWZpbmVkXCIgW3Bvc2l0aW9uXT1cIidyaWdodCdcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgbWFyZ2luVG9wOiAobGV2ZWw9PT0xICYmICF3aWRlTW9kZSkgPyBuYXZpZ2F0b3JTZXJ2aWNlLmljb25HdXR0ZXJZICsgJ3B4JyA6ICcnLFxyXG4gICAgICAgIG1hcmdpbkJvdHRvbTogKGxldmVsPT09MSAmJiAhd2lkZU1vZGUpID8gbmF2aWdhdG9yU2VydmljZS5pY29uR3V0dGVyWSArICdweCcgOiAnJ1xyXG4gICAgfVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1lbnUtaXRlbS13cmFwcGVyXCIgW2F0dHIuZGF0YS1sZXZlbF09XCJsZXZlbFwiIChjbGljayk9XCJvbkNsaWNrKCRldmVudCwgaXRlbSlcIlxyXG4gICAgICAgIFtjbGFzcy5tb2R1bGUtdGhpbi1tb2RlXT1cIiF3aWRlTW9kZSAmJiBsZXZlbD09PTFcIiBbY2xhc3MudGhpbi1icmFuY2hdPVwiIXdpZGVNb2RlICYmIGxldmVsID4gMVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAobGV2ZWw9PT0xICYmICF3aWRlTW9kZSkgPyBuYXZpZ2F0b3JTZXJ2aWNlLmljb25Cb3JkZXJSYWRpdXMgKyAncHgnIDogJydcclxuICAgICAgICB9XCI+XHJcblxyXG4gICAgICAgIEBpZiAod2lkZU1vZGUpIHtcclxuICAgICAgICBAaWYgKCEhIWxlZnRiYXJSZWR1Y2VkKSB7XHJcbiAgICAgICAgQGlmICghIWhhc0NoaWxkcmVuKSB7XHJcbiAgICAgICAgQGlmICghaXRlbS50cmVlJFNlbGVjdGVkKSB7XHJcbiAgICAgICAgPGkgW2F0dHIuZGF0YS1sZXZlbF09XCJsZXZlbFwiIGNsYXNzPVwiY3VzdG9tLWljb24tcGFyZW50LXJpZ2h0XCI+PC9pPlxyXG4gICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIDxpIFthdHRyLmRhdGEtbGV2ZWxdPVwibGV2ZWxcIiBjbGFzcz1cImN1c3RvbS1pY29uLXBhcmVudC1kb3duXCI+PC9pPlxyXG4gICAgICAgIH1cclxuICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICBAaWYgKGl0ZW0udHJlZSRTZWxlY3RlZCAmJiBpdGVtLmNvZGUgIT09ICdNRU5VLkRBU0hCT0FSRCcgJiYgaXRlbS5jb2RlICE9PSAnTUVOVS5IT01FJykge1xyXG4gICAgICAgIDxpIFthdHRyLmRhdGEtbGV2ZWxdPVwibGV2ZWxcIiBjbGFzcz1cImN1c3RvbS1pY29uLWNoaWxkLXJpZ2h0XCI+PC9pPlxyXG4gICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgQGlmICghIWl0ZW0uaWNvblN2Zykge1xyXG4gICAgICAgIDxpIFthdHRyLmRhdGEtbGV2ZWxdPVwibGV2ZWxcIiBjbGFzcz1cIidtb2R1bGUtaWNvbidcIlxyXG4gICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJ3aWRlTW9kZSA/IGNhcHRpb24gOiB1bmRlZmluZWRcIiAoY2xpY2spPVwib25Nb2R1bGVJY29uQ2xpY2soJGV2ZW50LCBpdGVtKTtmYWxzZVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxyXG4gICAgICAgICAgICAgICAgbGVmdDogd2lkZU1vZGUgPyAnMjBweCcgOiAndW5zZXQnXHJcbiAgICAgICAgICAgIH1cIj48c3BhbiBbaW5uZXJIdG1sXT1cIml0ZW0uaWNvblN2ZyB8IHN0cmluZ0h0bWxcIj48L3NwYW4+PC9pPlxyXG5cclxuICAgICAgICA8IS0tIDxzcGFuIFtpbm5lckh0bWxdPVwiaXRlbS5pY29uU3ZnIHwgc3RyaW5nSHRtbFwiPjwvc3Bhbj4gLS0+XHJcbiAgICAgICAgfSBAZWxzZSBpZiAoISFpdGVtLmljb25DbGFzcykge1xyXG4gICAgICAgIDxpIFthdHRyLmRhdGEtbGV2ZWxdPVwibGV2ZWxcIiBbY2xhc3NdPVwiaXRlbS5pY29uQ2xhc3MgKyAnIG1vZHVsZS1pY29uJ1wiXHJcbiAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIndpZGVNb2RlID8gY2FwdGlvbiA6IHVuZGVmaW5lZFwiIChjbGljayk9XCJvbk1vZHVsZUljb25DbGljaygkZXZlbnQsIGl0ZW0pO2ZhbHNlXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgbGVmdDogd2lkZU1vZGUgPyAnMjBweCcgOiAndW5zZXQnXHJcbiAgICAgICAgICAgIH1cIj48L2k+XHJcbiAgICAgICAgfSBAZWxzZSBpZiAoIWl0ZW0ucGFyZW50KSB7XHJcbiAgICAgICAgICAgIDxpIFthdHRyLmRhdGEtbGV2ZWxdPVwibGV2ZWxcIiBjbGFzcz1cIidtb2R1bGUtaWNvbidcIlxyXG4gICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJ3aWRlTW9kZSA/IGNhcHRpb24gOiB1bmRlZmluZWRcIiAoY2xpY2spPVwib25Nb2R1bGVJY29uQ2xpY2soJGV2ZW50LCBpdGVtKTtmYWxzZVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxyXG4gICAgICAgICAgICAgICAgbGVmdDogd2lkZU1vZGUgPyAnMjBweCcgOiAndW5zZXQnXHJcbiAgICAgICAgICAgIH1cIj48c3BhbiBbaW5uZXJIdG1sXT1cImRlZmF1bHRTdmcgfCBzdHJpbmdIdG1sXCI+PC9zcGFuPjwvaT4gICAgICAgICAgICBcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBpZiAoIXdpZGVNb2RlIHx8ICghbGVmdGJhclJlZHVjZWQgJiYgaGFzQ2hpbGRyZW4pKSB7XHJcbiAgICAgICAgPGEgI2xpbmsgW2F0dHIuZGF0YS1sZXZlbF09XCJsZXZlbFwiIGNsYXNzPVwiaGFzLXN1Ym1lbnVcIiBbYXBwVG9vbHRpcF09XCJsZXZlbCA+IDEgPyBjYXB0aW9uIDogdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgW2NsYXNzLnRoaW4tbW9kZV09XCIhd2lkZU1vZGVcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAoY2xpY2spPVwic3ViQXJyb3dDbGlja2VkKCRldmVudCwgaXRlbSk7ZmFsc2VcIj4gPCEtLWZhbHNlIGlzIGltcG9ydGFudCBoZXJlLS0+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAjc3ViQXJyb3cgKm5nSWY9XCIoISFpdGVtLnBpY3R1cmVCYXNlNjQgfHwgISFpdGVtLnBpY3R1cmVVcmkpXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiJ2ltZy1zcGFuIHBsdXMgbGV2ZWwnICsgbGV2ZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiaXRlbS5waWN0dXJlQmFzZTY0IHx8IGl0ZW0ucGljdHVyZVVyaVwiICpuZ0lmPVwiISFpdGVtLnBpY3R1cmVCYXNlNjRcIj5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICNzdWJBcnJvdyAqbmdJZj1cIiEhIWl0ZW0ucGljdHVyZUJhc2U2NCAmJiAhISFpdGVtLnBpY3R1cmVVcmlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCIncGx1cyBsZXZlbCcgKyBsZXZlbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICA8aW1nICpuZ0lmPVwiKCEhaXRlbS5waWN0dXJlQmFzZTY0IHx8ICEhaXRlbS5waWN0dXJlVXJpKVwiIFtzcmNdPVwiaXRlbS5waWN0dXJlQmFzZTY0IHx8IGl0ZW0ucGljdHVyZVVyaVwiPlxyXG5cclxuICAgICAgICAgICAge3sgY2FwdGlvbiB9fVxyXG5cclxuICAgICAgICA8L2E+XHJcbiAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgPGEgW2F0dHIuZGF0YS1sZXZlbF09XCJsZXZlbFwiIFtyb3V0ZXJMaW5rXT1cIml0ZW0udXJsXCIgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50LCBpdGVtKVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy50aGluLW1vZGVdPVwiIXdpZGVNb2RlXCIgW2FwcFRvb2x0aXBdPVwid2lkZU1vZGUgPyBjYXB0aW9uIDogdW5kZWZpbmVkXCI+XHJcbiAgICAgICAgICAgIHt7IGNhcHRpb24gfX1cclxuICAgICAgICA8L2E+XHJcbiAgICAgICAgfVxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIEBpZiAoISF3aWRlTW9kZSAmJiAhIWhhc0NoaWxkcmVuICYmICEhaXRlbS50cmVlJENoaWxkcmVuIS5sZW5ndGggJiYgISEhbGVmdGJhclJlZHVjZWQpIHtcclxuICAgIDx1bCAjY2hpbGRyZW4gW2NsYXNzLmV4cGFuZGVkXT1cIiF3aWRlTW9kZSB8fCBpdGVtLnRyZWUkRXhwYW5kZWRcIiBbY2xhc3MudWwtdGhpbi1tb2RlXT1cIiF3aWRlTW9kZVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgcGFkZGluZzogMCxcclxuICAgICAgICAgICAgd2lkdGg6ICEhd2lkZU1vZGUgPyAobGF5b3V0U2VydmljZS5sZWZ0QmFyQ3VycmVudFdpZHRoJC52YWx1ZSAtIGxheW91dFNlcnZpY2UuYmFzaWNTcGFjaW5nIC0gbGF5b3V0U2VydmljZS5zY3JvbGxCYXJXaWR0aCArIDUgKyAncHgnKSA6ICggbGF5b3V0U2VydmljZS5sZWZ0QmFyV2lkZVdpZHRoJC52YWx1ZSArICdweCcgKSxcclxuICAgICAgICB9XCIgW2NsYXNzLnN1Ym1lbnVdPVwiIXdpZGVNb2RlXCI+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgQGZvciAoY2hpbGQgb2YgaXRlbS50cmVlJENoaWxkcmVuOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgPGFwcC1pdGVtIFtpdGVtXT1cImNoaWxkXCIgW2xldmVsXT1cImxldmVsKzFcIiAoY2xpY2tlZCk9XCJvbkNsaWNrKCRldmVudCwgY2hpbGQpXCI+PC9hcHAtaXRlbT5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC91bD5cclxuICAgIH1cclxuXHJcbjwvbGk+Il19
@@ -0,0 +1,134 @@
1
+ import { NgStyle } from '@angular/common';
2
+ import { Component } from '@angular/core';
3
+ import { FormsModule } from '@angular/forms';
4
+ import { CorePageHeaderComponent } from '../../../core-page-header/core-page-header/core-page-header.component';
5
+ import { DEFAULT_SVG } from '../item.component';
6
+ import { StringHtmlPipe } from '../../../../app-pipes/string-html.pipe';
7
+ import { CoreButtonGroupVnsComponent } from '../../../core-button-group-vns/core-button-group-vns/core-button-group-vns.component';
8
+ import { EnumCoreButtonVNSCode } from '../../../core-button-group-vns/core-button-group-vns/EnumCoreButtonVNSCode';
9
+ import { BaseComponent } from '../../../base-component/base/base.component';
10
+ import { TranslatePipe } from '../../../../app-pipes/translate.pipe';
11
+ import { alertOptions } from '../../../../constants/alertOptions';
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "../../../../services/multi-language.service";
14
+ import * as i2 from "../../../../services/navigator.service";
15
+ import * as i3 from "../../../../services/app.service";
16
+ import * as i4 from "../../../alert/alert.service";
17
+ import * as i5 from "@angular/forms";
18
+ export class MenuItemSvgEditComponent extends BaseComponent {
19
+ constructor(mls, navigatorService, appService, alertService) {
20
+ super(mls);
21
+ this.mls = mls;
22
+ this.navigatorService = navigatorService;
23
+ this.appService = appService;
24
+ this.alertService = alertService;
25
+ this.buttonItems = [
26
+ EnumCoreButtonVNSCode.NONE_HEADER_SAVE,
27
+ EnumCoreButtonVNSCode.NONE_HEADER_CANCEL,
28
+ ];
29
+ this.navigatorService.clickedModuleItem$.subscribe(x => {
30
+ this.id = x?.id;
31
+ this.code = x?.code;
32
+ this.svg = x?.iconSvg || DEFAULT_SVG;
33
+ });
34
+ }
35
+ onButtonClick(e) {
36
+ switch (e.code) {
37
+ case EnumCoreButtonVNSCode.NONE_HEADER_CANCEL:
38
+ this.navigatorService.showEditSvg$.next(false);
39
+ break;
40
+ case EnumCoreButtonVNSCode.NONE_HEADER_SAVE:
41
+ const result = this.validateSvg(this.svg);
42
+ if (!result.isValid) {
43
+ // Inform the user about the errors
44
+ console.log('SVG is invalid due to the following errors:');
45
+ result.errors.forEach(error => this.alertService.error(error, alertOptions));
46
+ break;
47
+ }
48
+ if (!!this.navigatorService.clickedItem$.value?.id) {
49
+ const request = {
50
+ id: this.navigatorService.clickedItem$.value?.id,
51
+ iconSvg: this.svg
52
+ };
53
+ this.subscriptions.push(this.appService.post("/api/SysMenu/UpdateIconSvg", request).subscribe(x => {
54
+ if (x.ok && x.status === 200 && x.body?.statusCode === 200) {
55
+ // Update UI icon
56
+ // Find the li element by id
57
+ const liElement = document.getElementById("main-menu-" + x.body.innerBody?.id);
58
+ // Check if the li element exists
59
+ if (liElement) {
60
+ // Find the closest child <svg> element inside the <i> tag within the liElement
61
+ const svgElement = liElement.querySelector(":scope > div i > span > svg");
62
+ // Check if the svg element exists
63
+ if (svgElement) {
64
+ // Get the new SVG markup from your data (e.g., x.body.innerBody?.iconSvg)
65
+ const newSvgMarkup = x.body.innerBody?.iconSvg || DEFAULT_SVG;
66
+ // Check if the newSvgMarkup exists and is not empty
67
+ if (newSvgMarkup) {
68
+ // Replace the old <svg> with the new SVG markup directly
69
+ svgElement.outerHTML = newSvgMarkup;
70
+ }
71
+ }
72
+ }
73
+ this.navigatorService.showEditSvg$.next(false);
74
+ }
75
+ }));
76
+ }
77
+ break;
78
+ default:
79
+ break;
80
+ }
81
+ }
82
+ validateSvg(svgString) {
83
+ if (!svgString)
84
+ return { isValid: true, errors: [] };
85
+ const errors = [];
86
+ // Create a temporary DOM element to parse the string
87
+ const parser = new DOMParser();
88
+ const svgDoc = parser.parseFromString(svgString, 'image/svg+xml');
89
+ const svgElement = svgDoc.querySelector('svg');
90
+ // If there is no <svg> element, return an error
91
+ if (!svgElement) {
92
+ errors.push('The provided string does not contain a valid <svg> element.');
93
+ return { isValid: false, errors };
94
+ }
95
+ // Check for the width, height, and viewBox attributes
96
+ const width = svgElement.getAttribute('width');
97
+ const height = svgElement.getAttribute('height');
98
+ const viewBox = svgElement.getAttribute('viewBox');
99
+ const stroke = svgElement.getAttribute('stroke');
100
+ // Validate each attribute and push corresponding errors if invalid
101
+ if (width !== '24') {
102
+ errors.push(`Expected width="24", but found width="${width}".`);
103
+ }
104
+ if (height !== '24') {
105
+ errors.push(`Expected height="24", but found height="${height}".`);
106
+ }
107
+ if (viewBox !== '0 0 24 24') {
108
+ errors.push(`Expected viewBox="0 0 24 24", but found viewBox="${viewBox}".`);
109
+ }
110
+ if (stroke !== 'currentColor' && stroke !== 'currentcolor') {
111
+ errors.push(`Expected stroke="currentColor" or stroke="currentcolor", but found stroke="${stroke}".`);
112
+ }
113
+ // If there are errors, return them along with isValid: false
114
+ if (errors.length > 0) {
115
+ return { isValid: false, errors };
116
+ }
117
+ // If everything is valid, return isValid: true with no errors
118
+ return { isValid: true, errors };
119
+ }
120
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: MenuItemSvgEditComponent, deps: [{ token: i1.MultiLanguageService }, { token: i2.NavigatorService }, { token: i3.AppService }, { token: i4.AlertService }], target: i0.ɵɵFactoryTarget.Component }); }
121
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: MenuItemSvgEditComponent, isStandalone: true, selector: "menu-item-svg-edit", usesInheritance: true, ngImport: i0, template: "<div class=\"modal-container\">\r\n <div class=\"modal-container-root\">\r\n <div class=\"edit-container\">\r\n\r\n <core-page-header [title]=\"'EDIT_MENU_ITEM_SVG_ICON'\" [hideButtonGroup]=\"true\"></core-page-header>\r\n\r\n <div class=\"object-property w-100 fw700 color-gray\">\r\n <div>{{ id }} <span> \u2022 </span> {{ code }} <span> \u2022 </span> {{ (code || '') | translate: lang }} </div>\r\n </div>\r\n\r\n <div class=\"h15\"></div>\r\n\r\n <div class=\"d-flex d-flex-between\">\r\n\r\n <div class=\"entry\">\r\n <div class=\"label\">Enter Svg element here:</div>\r\n <textarea class=\"form-control\" [(ngModel)]=\"svg\" [rows]=\"'10'\"\r\n [ngStyle]=\"{ height: 'unset'}\"></textarea>\r\n </div>\r\n <div class=\"preview d-flex d-flex-v d-flex-between\">\r\n <div class=\"label\">Preview:</div>\r\n <div class=\"preview-icon\" [innerHtml]=\"svg | stringHtml\">\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"h15\"></div>\r\n <div class=\"d-flex d-flex-end\">\r\n <core-button-group-vns [showCaption]=\"true\" [forHeader]=\"false\" (buttonClick)=\"onButtonClick($event)\"\r\n [shownItems]=\"buttonItems\" class=\"buttonGroupCustom\"></core-button-group-vns>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".edit-container{width:800px;height:385px;padding:0 15px 15px;background-color:#fff}.edit-container .entry{width:655px}.edit-container .preview{width:100px;height:100px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: CorePageHeaderComponent, selector: "core-page-header", inputs: ["instanceNumber", "shownItems", "title", "hideButtonGroup"], outputs: ["buttonClick"] }, { kind: "pipe", type: StringHtmlPipe, name: "stringHtml" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: CoreButtonGroupVnsComponent, selector: "core-button-group-vns", inputs: ["height", "instanceNumber", "forHeader", "fixedShow", "shownItems", "showCaption"], outputs: ["buttonClick"] }] }); }
122
+ }
123
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: MenuItemSvgEditComponent, decorators: [{
124
+ type: Component,
125
+ args: [{ selector: 'menu-item-svg-edit', standalone: true, imports: [
126
+ FormsModule,
127
+ NgStyle,
128
+ CorePageHeaderComponent,
129
+ StringHtmlPipe,
130
+ TranslatePipe,
131
+ CoreButtonGroupVnsComponent
132
+ ], template: "<div class=\"modal-container\">\r\n <div class=\"modal-container-root\">\r\n <div class=\"edit-container\">\r\n\r\n <core-page-header [title]=\"'EDIT_MENU_ITEM_SVG_ICON'\" [hideButtonGroup]=\"true\"></core-page-header>\r\n\r\n <div class=\"object-property w-100 fw700 color-gray\">\r\n <div>{{ id }} <span> \u2022 </span> {{ code }} <span> \u2022 </span> {{ (code || '') | translate: lang }} </div>\r\n </div>\r\n\r\n <div class=\"h15\"></div>\r\n\r\n <div class=\"d-flex d-flex-between\">\r\n\r\n <div class=\"entry\">\r\n <div class=\"label\">Enter Svg element here:</div>\r\n <textarea class=\"form-control\" [(ngModel)]=\"svg\" [rows]=\"'10'\"\r\n [ngStyle]=\"{ height: 'unset'}\"></textarea>\r\n </div>\r\n <div class=\"preview d-flex d-flex-v d-flex-between\">\r\n <div class=\"label\">Preview:</div>\r\n <div class=\"preview-icon\" [innerHtml]=\"svg | stringHtml\">\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"h15\"></div>\r\n <div class=\"d-flex d-flex-end\">\r\n <core-button-group-vns [showCaption]=\"true\" [forHeader]=\"false\" (buttonClick)=\"onButtonClick($event)\"\r\n [shownItems]=\"buttonItems\" class=\"buttonGroupCustom\"></core-button-group-vns>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".edit-container{width:800px;height:385px;padding:0 15px 15px;background-color:#fff}.edit-container .entry{width:655px}.edit-container .preview{width:100px;height:100px}\n"] }]
133
+ }], ctorParameters: () => [{ type: i1.MultiLanguageService }, { type: i2.NavigatorService }, { type: i3.AppService }, { type: i4.AlertService }] });
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1pdGVtLXN2Zy1lZGl0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9uYXZpZ2F0b3IvbmF2aWdhdG9yL21lbnUtaXRlbS1zdmctZWRpdC9tZW51LWl0ZW0tc3ZnLWVkaXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL25hdmlnYXRvci9uYXZpZ2F0b3IvbWVudS1pdGVtLXN2Zy1lZGl0L21lbnUtaXRlbS1zdmctZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUVBQXVFLENBQUM7QUFFaEgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxzRkFBc0YsQ0FBQztBQUVuSSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0RUFBNEUsQ0FBQztBQUNuSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFNUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBR3JFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7OztBQXFCbEUsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGFBQWE7SUFZekQsWUFDa0IsR0FBeUIsRUFDakMsZ0JBQWtDLEVBQ2xDLFVBQXNCLEVBQ3RCLFlBQTBCO1FBRWxDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUxLLFFBQUcsR0FBSCxHQUFHLENBQXNCO1FBQ2pDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQVRwQyxnQkFBVyxHQUE0QjtZQUNyQyxxQkFBcUIsQ0FBQyxnQkFBZ0I7WUFDdEMscUJBQXFCLENBQUMsa0JBQWtCO1NBQ3pDLENBQUE7UUFTQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3JELElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUM7WUFDcEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsT0FBTyxJQUFJLFdBQVcsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxhQUFhLENBQUMsQ0FBaUI7UUFFN0IsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFO1lBQ2QsS0FBSyxxQkFBcUIsQ0FBQyxrQkFBa0I7Z0JBQzNDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMvQyxNQUFNO1lBQ1IsS0FBSyxxQkFBcUIsQ0FBQyxnQkFBZ0I7Z0JBRXpDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUUxQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRTtvQkFDbkIsbUNBQW1DO29CQUNuQyxPQUFPLENBQUMsR0FBRyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7b0JBQzNELE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7b0JBQzdFLE1BQU07aUJBQ1A7Z0JBRUQsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO29CQUNsRCxNQUFNLE9BQU8sR0FBMEI7d0JBQ3JDLEVBQUUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxFQUFFO3dCQUNoRCxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUc7cUJBQ2xCLENBQUE7b0JBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLDRCQUE0QixFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTt3QkFDeEUsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxLQUFLLEdBQUcsRUFBRTs0QkFFMUQsaUJBQWlCOzRCQUNqQiw0QkFBNEI7NEJBQzVCLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDOzRCQUUvRSxpQ0FBaUM7NEJBQ2pDLElBQUksU0FBUyxFQUFFO2dDQUNiLCtFQUErRTtnQ0FDL0UsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO2dDQUUxRSxrQ0FBa0M7Z0NBQ2xDLElBQUksVUFBVSxFQUFFO29DQUNkLDBFQUEwRTtvQ0FDMUUsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxJQUFJLFdBQVcsQ0FBQztvQ0FFOUQsb0RBQW9EO29DQUNwRCxJQUFJLFlBQVksRUFBRTt3Q0FDaEIseURBQXlEO3dDQUN6RCxVQUFVLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQztxQ0FDckM7aUNBQ0Y7NkJBQ0Y7NEJBRUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7eUJBQ2hEO29CQUNILENBQUMsQ0FBQyxDQUNILENBQUE7aUJBQ0Y7Z0JBQ0QsTUFBTTtZQUNSO2dCQUNFLE1BQU07U0FDVDtJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsU0FBNkI7UUFFdkMsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUE7UUFFcEQsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO1FBRTVCLHFEQUFxRDtRQUNyRCxNQUFNLE1BQU0sR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQy9CLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFL0MsZ0RBQWdEO1FBQ2hELElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDZixNQUFNLENBQUMsSUFBSSxDQUFDLDZEQUE2RCxDQUFDLENBQUM7WUFDM0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7U0FDbkM7UUFFRCxzREFBc0Q7UUFDdEQsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQyxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkQsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVqRCxtRUFBbUU7UUFDbkUsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQ2xCLE1BQU0sQ0FBQyxJQUFJLENBQUMseUNBQXlDLEtBQUssSUFBSSxDQUFDLENBQUM7U0FDakU7UUFDRCxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7WUFDbkIsTUFBTSxDQUFDLElBQUksQ0FBQywyQ0FBMkMsTUFBTSxJQUFJLENBQUMsQ0FBQztTQUNwRTtRQUNELElBQUksT0FBTyxLQUFLLFdBQVcsRUFBRTtZQUMzQixNQUFNLENBQUMsSUFBSSxDQUFDLG9EQUFvRCxPQUFPLElBQUksQ0FBQyxDQUFDO1NBQzlFO1FBQ0QsSUFBSSxNQUFNLEtBQUssY0FBYyxJQUFJLE1BQU0sS0FBSyxjQUFjLEVBQUU7WUFDMUQsTUFBTSxDQUFDLElBQUksQ0FBQyw4RUFBOEUsTUFBTSxJQUFJLENBQUMsQ0FBQztTQUN2RztRQUVELDZEQUE2RDtRQUM3RCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3JCLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO1NBQ25DO1FBRUQsOERBQThEO1FBQzlELE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQ25DLENBQUM7OEdBaklVLHdCQUF3QjtrR0FBeEIsd0JBQXdCLHFHQ3BDckMsc2lEQW1DTSxtT0RURixXQUFXLCttQkFDWCxPQUFPLDJFQUNQLHVCQUF1Qix3SkFDdkIsY0FBYyw4Q0FDZCxhQUFhLGtEQUNiLDJCQUEyQjs7MkZBS2xCLHdCQUF3QjtrQkFkcEMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQO3dCQUNQLFdBQVc7d0JBQ1gsT0FBTzt3QkFDUCx1QkFBdUI7d0JBQ3ZCLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYiwyQkFBMkI7cUJBQzVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdTdHlsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29yZVBhZ2VIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb3JlLXBhZ2UtaGVhZGVyL2NvcmUtcGFnZS1oZWFkZXIvY29yZS1wYWdlLWhlYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvbmF2aWdhdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBERUZBVUxUX1NWRyB9IGZyb20gJy4uL2l0ZW0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgU3RyaW5nSHRtbFBpcGUgfSBmcm9tICcuLi8uLi8uLi8uLi9hcHAtcGlwZXMvc3RyaW5nLWh0bWwucGlwZSc7XHJcbmltcG9ydCB7IENvcmVCdXR0b25Hcm91cFZuc0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IElDb3JlQnV0dG9uVk5TIH0gZnJvbSAnLi4vLi4vLi4vY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9JQ29yZUJ1dHRvblZOUyc7XHJcbmltcG9ydCB7IEVudW1Db3JlQnV0dG9uVk5TQ29kZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9jb3JlLWJ1dHRvbi1ncm91cC12bnMvRW51bUNvcmVCdXR0b25WTlNDb2RlJztcclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2Jhc2UtY29tcG9uZW50L2Jhc2UvYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vYXBwLXBpcGVzL3RyYW5zbGF0ZS5waXBlJztcclxuaW1wb3J0IHsgQXBwU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL2FwcC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYWxlcnQvYWxlcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IGFsZXJ0T3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbnN0YW50cy9hbGVydE9wdGlvbnMnO1xyXG5cclxuaW50ZXJmYWNlIElVcGRhdGVJY29uU3ZnUmVxdWVzdCB7XHJcbiAgaWQ6IG51bWJlcjtcclxuICBpY29uU3ZnOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbWVudS1pdGVtLXN2Zy1lZGl0JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgTmdTdHlsZSxcclxuICAgIENvcmVQYWdlSGVhZGVyQ29tcG9uZW50LFxyXG4gICAgU3RyaW5nSHRtbFBpcGUsXHJcbiAgICBUcmFuc2xhdGVQaXBlLFxyXG4gICAgQ29yZUJ1dHRvbkdyb3VwVm5zQ29tcG9uZW50XHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vbWVudS1pdGVtLXN2Zy1lZGl0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vbWVudS1pdGVtLXN2Zy1lZGl0LmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTWVudUl0ZW1TdmdFZGl0Q29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XHJcblxyXG4gIGlkOiBudW1iZXIgfCB1bmRlZmluZWQ7XHJcbiAgY29kZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cclxuICBzdmchOiBzdHJpbmc7XHJcblxyXG4gIGJ1dHRvbkl0ZW1zOiBFbnVtQ29yZUJ1dHRvblZOU0NvZGVbXSA9IFtcclxuICAgIEVudW1Db3JlQnV0dG9uVk5TQ29kZS5OT05FX0hFQURFUl9TQVZFLFxyXG4gICAgRW51bUNvcmVCdXR0b25WTlNDb2RlLk5PTkVfSEVBREVSX0NBTkNFTCxcclxuICBdXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIG92ZXJyaWRlIG1sczogTXVsdGlMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5hdmlnYXRvclNlcnZpY2U6IE5hdmlnYXRvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwcFNlcnZpY2U6IEFwcFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihtbHMpO1xyXG4gICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmNsaWNrZWRNb2R1bGVJdGVtJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgIHRoaXMuaWQgPSB4Py5pZDtcclxuICAgICAgdGhpcy5jb2RlID0geD8uY29kZTtcclxuICAgICAgdGhpcy5zdmcgPSB4Py5pY29uU3ZnIHx8IERFRkFVTFRfU1ZHO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIG9uQnV0dG9uQ2xpY2soZTogSUNvcmVCdXR0b25WTlMpOiB2b2lkIHtcclxuXHJcbiAgICBzd2l0Y2ggKGUuY29kZSkge1xyXG4gICAgICBjYXNlIEVudW1Db3JlQnV0dG9uVk5TQ29kZS5OT05FX0hFQURFUl9DQU5DRUw6XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLnNob3dFZGl0U3ZnJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtQ29yZUJ1dHRvblZOU0NvZGUuTk9ORV9IRUFERVJfU0FWRTpcclxuXHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy52YWxpZGF0ZVN2Zyh0aGlzLnN2Zyk7XHJcblxyXG4gICAgICAgIGlmICghcmVzdWx0LmlzVmFsaWQpIHtcclxuICAgICAgICAgIC8vIEluZm9ybSB0aGUgdXNlciBhYm91dCB0aGUgZXJyb3JzXHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnU1ZHIGlzIGludmFsaWQgZHVlIHRvIHRoZSBmb2xsb3dpbmcgZXJyb3JzOicpO1xyXG4gICAgICAgICAgcmVzdWx0LmVycm9ycy5mb3JFYWNoKGVycm9yID0+IHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKGVycm9yLCBhbGVydE9wdGlvbnMpKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCEhdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmNsaWNrZWRJdGVtJC52YWx1ZT8uaWQpIHtcclxuICAgICAgICAgIGNvbnN0IHJlcXVlc3Q6IElVcGRhdGVJY29uU3ZnUmVxdWVzdCA9IHtcclxuICAgICAgICAgICAgaWQ6IHRoaXMubmF2aWdhdG9yU2VydmljZS5jbGlja2VkSXRlbSQudmFsdWU/LmlkLFxyXG4gICAgICAgICAgICBpY29uU3ZnOiB0aGlzLnN2Z1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuYXBwU2VydmljZS5wb3N0KFwiL2FwaS9TeXNNZW51L1VwZGF0ZUljb25TdmdcIiwgcmVxdWVzdCkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgICAgIGlmICh4Lm9rICYmIHguc3RhdHVzID09PSAyMDAgJiYgeC5ib2R5Py5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBVcGRhdGUgVUkgaWNvblxyXG4gICAgICAgICAgICAgICAgLy8gRmluZCB0aGUgbGkgZWxlbWVudCBieSBpZFxyXG4gICAgICAgICAgICAgICAgY29uc3QgbGlFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJtYWluLW1lbnUtXCIgKyB4LmJvZHkuaW5uZXJCb2R5Py5pZCk7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGxpIGVsZW1lbnQgZXhpc3RzXHJcbiAgICAgICAgICAgICAgICBpZiAobGlFbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgIC8vIEZpbmQgdGhlIGNsb3Nlc3QgY2hpbGQgPHN2Zz4gZWxlbWVudCBpbnNpZGUgdGhlIDxpPiB0YWcgd2l0aGluIHRoZSBsaUVsZW1lbnRcclxuICAgICAgICAgICAgICAgICAgY29uc3Qgc3ZnRWxlbWVudCA9IGxpRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiOnNjb3BlID4gZGl2IGkgPiBzcGFuID4gc3ZnXCIpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHN2ZyBlbGVtZW50IGV4aXN0c1xyXG4gICAgICAgICAgICAgICAgICBpZiAoc3ZnRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIEdldCB0aGUgbmV3IFNWRyBtYXJrdXAgZnJvbSB5b3VyIGRhdGEgKGUuZy4sIHguYm9keS5pbm5lckJvZHk/Lmljb25TdmcpXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3U3ZnTWFya3VwID0geC5ib2R5LmlubmVyQm9keT8uaWNvblN2ZyB8fCBERUZBVUxUX1NWRztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIG5ld1N2Z01hcmt1cCBleGlzdHMgYW5kIGlzIG5vdCBlbXB0eVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdTdmdNYXJrdXApIHtcclxuICAgICAgICAgICAgICAgICAgICAgIC8vIFJlcGxhY2UgdGhlIG9sZCA8c3ZnPiB3aXRoIHRoZSBuZXcgU1ZHIG1hcmt1cCBkaXJlY3RseVxyXG4gICAgICAgICAgICAgICAgICAgICAgc3ZnRWxlbWVudC5vdXRlckhUTUwgPSBuZXdTdmdNYXJrdXA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLnNob3dFZGl0U3ZnJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVTdmcoc3ZnU3RyaW5nOiBzdHJpbmcgfCB1bmRlZmluZWQpOiB7IGlzVmFsaWQ6IGJvb2xlYW47IGVycm9yczogc3RyaW5nW10gfSB7XHJcblxyXG4gICAgaWYgKCFzdmdTdHJpbmcpIHJldHVybiB7IGlzVmFsaWQ6IHRydWUsIGVycm9yczogW10gfVxyXG5cclxuICAgIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICAvLyBDcmVhdGUgYSB0ZW1wb3JhcnkgRE9NIGVsZW1lbnQgdG8gcGFyc2UgdGhlIHN0cmluZ1xyXG4gICAgY29uc3QgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpO1xyXG4gICAgY29uc3Qgc3ZnRG9jID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZyhzdmdTdHJpbmcsICdpbWFnZS9zdmcreG1sJyk7XHJcbiAgICBjb25zdCBzdmdFbGVtZW50ID0gc3ZnRG9jLnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpO1xyXG5cclxuICAgIC8vIElmIHRoZXJlIGlzIG5vIDxzdmc+IGVsZW1lbnQsIHJldHVybiBhbiBlcnJvclxyXG4gICAgaWYgKCFzdmdFbGVtZW50KSB7XHJcbiAgICAgIGVycm9ycy5wdXNoKCdUaGUgcHJvdmlkZWQgc3RyaW5nIGRvZXMgbm90IGNvbnRhaW4gYSB2YWxpZCA8c3ZnPiBlbGVtZW50LicpO1xyXG4gICAgICByZXR1cm4geyBpc1ZhbGlkOiBmYWxzZSwgZXJyb3JzIH07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ2hlY2sgZm9yIHRoZSB3aWR0aCwgaGVpZ2h0LCBhbmQgdmlld0JveCBhdHRyaWJ1dGVzXHJcbiAgICBjb25zdCB3aWR0aCA9IHN2Z0VsZW1lbnQuZ2V0QXR0cmlidXRlKCd3aWR0aCcpO1xyXG4gICAgY29uc3QgaGVpZ2h0ID0gc3ZnRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2hlaWdodCcpO1xyXG4gICAgY29uc3Qgdmlld0JveCA9IHN2Z0VsZW1lbnQuZ2V0QXR0cmlidXRlKCd2aWV3Qm94Jyk7XHJcbiAgICBjb25zdCBzdHJva2UgPSBzdmdFbGVtZW50LmdldEF0dHJpYnV0ZSgnc3Ryb2tlJyk7XHJcblxyXG4gICAgLy8gVmFsaWRhdGUgZWFjaCBhdHRyaWJ1dGUgYW5kIHB1c2ggY29ycmVzcG9uZGluZyBlcnJvcnMgaWYgaW52YWxpZFxyXG4gICAgaWYgKHdpZHRoICE9PSAnMjQnKSB7XHJcbiAgICAgIGVycm9ycy5wdXNoKGBFeHBlY3RlZCB3aWR0aD1cIjI0XCIsIGJ1dCBmb3VuZCB3aWR0aD1cIiR7d2lkdGh9XCIuYCk7XHJcbiAgICB9XHJcbiAgICBpZiAoaGVpZ2h0ICE9PSAnMjQnKSB7XHJcbiAgICAgIGVycm9ycy5wdXNoKGBFeHBlY3RlZCBoZWlnaHQ9XCIyNFwiLCBidXQgZm91bmQgaGVpZ2h0PVwiJHtoZWlnaHR9XCIuYCk7XHJcbiAgICB9XHJcbiAgICBpZiAodmlld0JveCAhPT0gJzAgMCAyNCAyNCcpIHtcclxuICAgICAgZXJyb3JzLnB1c2goYEV4cGVjdGVkIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiwgYnV0IGZvdW5kIHZpZXdCb3g9XCIke3ZpZXdCb3h9XCIuYCk7XHJcbiAgICB9XHJcbiAgICBpZiAoc3Ryb2tlICE9PSAnY3VycmVudENvbG9yJyAmJiBzdHJva2UgIT09ICdjdXJyZW50Y29sb3InKSB7XHJcbiAgICAgIGVycm9ycy5wdXNoKGBFeHBlY3RlZCBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBvciBzdHJva2U9XCJjdXJyZW50Y29sb3JcIiwgYnV0IGZvdW5kIHN0cm9rZT1cIiR7c3Ryb2tlfVwiLmApO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIElmIHRoZXJlIGFyZSBlcnJvcnMsIHJldHVybiB0aGVtIGFsb25nIHdpdGggaXNWYWxpZDogZmFsc2VcclxuICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICByZXR1cm4geyBpc1ZhbGlkOiBmYWxzZSwgZXJyb3JzIH07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWYgZXZlcnl0aGluZyBpcyB2YWxpZCwgcmV0dXJuIGlzVmFsaWQ6IHRydWUgd2l0aCBubyBlcnJvcnNcclxuICAgIHJldHVybiB7IGlzVmFsaWQ6IHRydWUsIGVycm9ycyB9O1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibW9kYWwtY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGFpbmVyLXJvb3RcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZWRpdC1jb250YWluZXJcIj5cclxuXHJcbiAgICAgICAgICAgIDxjb3JlLXBhZ2UtaGVhZGVyIFt0aXRsZV09XCInRURJVF9NRU5VX0lURU1fU1ZHX0lDT04nXCIgW2hpZGVCdXR0b25Hcm91cF09XCJ0cnVlXCI+PC9jb3JlLXBhZ2UtaGVhZGVyPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9iamVjdC1wcm9wZXJ0eSB3LTEwMCBmdzcwMCBjb2xvci1ncmF5XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2Pnt7IGlkIH19IDxzcGFuPiDigKIgPC9zcGFuPiB7eyBjb2RlIH19IDxzcGFuPiDigKIgPC9zcGFuPiB7eyAoY29kZSB8fCAnJykgfCB0cmFuc2xhdGU6IGxhbmcgfX0gPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgxNVwiPjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBkLWZsZXgtYmV0d2VlblwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiPkVudGVyIFN2ZyBlbGVtZW50IGhlcmU6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJzdmdcIiBbcm93c109XCInMTAnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyBoZWlnaHQ6ICd1bnNldCd9XCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXcgZC1mbGV4IGQtZmxleC12IGQtZmxleC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCI+UHJldmlldzo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJldmlldy1pY29uXCIgW2lubmVySHRtbF09XCJzdmcgfCBzdHJpbmdIdG1sXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoMTVcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBkLWZsZXgtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8Y29yZS1idXR0b24tZ3JvdXAtdm5zIFtzaG93Q2FwdGlvbl09XCJ0cnVlXCIgW2ZvckhlYWRlcl09XCJmYWxzZVwiIChidXR0b25DbGljayk9XCJvbkJ1dHRvbkNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzaG93bkl0ZW1zXT1cImJ1dHRvbkl0ZW1zXCIgY2xhc3M9XCJidXR0b25Hcm91cEN1c3RvbVwiPjwvY29yZS1idXR0b24tZ3JvdXAtdm5zPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=