@acorex/components 20.1.37 → 20.1.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/button-group/index.d.ts +2 -1
  2. package/decorators/index.d.ts +2 -2
  3. package/fesm2022/acorex-components-button-group.mjs +5 -3
  4. package/fesm2022/acorex-components-button-group.mjs.map +1 -1
  5. package/fesm2022/acorex-components-decorators.mjs +3 -3
  6. package/fesm2022/acorex-components-decorators.mjs.map +1 -1
  7. package/fesm2022/acorex-components-image-editor.mjs +75 -58
  8. package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
  9. package/fesm2022/acorex-components-map.mjs +5 -4
  10. package/fesm2022/acorex-components-map.mjs.map +1 -1
  11. package/fesm2022/acorex-components-menu.mjs +4 -4
  12. package/fesm2022/acorex-components-menu.mjs.map +1 -1
  13. package/fesm2022/{acorex-components-modal-acorex-components-modal-DTUAOsgv.mjs → acorex-components-modal-acorex-components-modal-Bqiz74D1.mjs} +2 -2
  14. package/fesm2022/{acorex-components-modal-acorex-components-modal-DTUAOsgv.mjs.map → acorex-components-modal-acorex-components-modal-Bqiz74D1.mjs.map} +1 -1
  15. package/fesm2022/{acorex-components-modal-modal-content.component-Co2yaRpp.mjs → acorex-components-modal-modal-content.component-B-FWjSBZ.mjs} +4 -4
  16. package/fesm2022/acorex-components-modal-modal-content.component-B-FWjSBZ.mjs.map +1 -0
  17. package/fesm2022/acorex-components-modal.mjs +1 -1
  18. package/fesm2022/acorex-components-query-builder.mjs +1 -1
  19. package/fesm2022/acorex-components-query-builder.mjs.map +1 -1
  20. package/fesm2022/acorex-components-rrule.mjs +220 -100
  21. package/fesm2022/acorex-components-rrule.mjs.map +1 -1
  22. package/fesm2022/acorex-components-selection-list-2.mjs +2 -2
  23. package/fesm2022/acorex-components-selection-list-2.mjs.map +1 -1
  24. package/fesm2022/acorex-components-wysiwyg.mjs +13 -2
  25. package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
  26. package/image-editor/index.d.ts +6 -10
  27. package/map/index.d.ts +2 -1
  28. package/package.json +9 -9
  29. package/rrule/index.d.ts +40 -17
  30. package/wysiwyg/index.d.ts +3 -0
  31. package/fesm2022/acorex-components-modal-modal-content.component-Co2yaRpp.mjs.map +0 -1
@@ -24,8 +24,8 @@ declare class AXImageEditorService {
24
24
  userInteract: boolean;
25
25
  }>;
26
26
  isImageLoad: _angular_core.WritableSignal<boolean>;
27
- newImage: _angular_core.WritableSignal<HTMLImageElement>;
28
- initialImage: _angular_core.WritableSignal<HTMLImageElement>;
27
+ newImage: HTMLImageElement | null;
28
+ initialImage: HTMLImageElement | null;
29
29
  imageBlob: _angular_core.WritableSignal<Blob[]>;
30
30
  undoPressed: _angular_core.WritableSignal<boolean>;
31
31
  redoPressed: _angular_core.WritableSignal<boolean>;
@@ -109,8 +109,6 @@ declare class AXImageEditorViewComponent extends MXBaseComponent implements OnDe
109
109
  /** @ignore */
110
110
  protected renderer: Renderer2;
111
111
  /** @ignore */
112
- protected imageAspect: _angular_core.Signal<number>;
113
- /** @ignore */
114
112
  protected imageEditorHistory: _angular_core.WritableSignal<HTMLImageElement[]>;
115
113
  /** @ignore */
116
114
  protected imageEditorHistoryPointer: _angular_core.WritableSignal<number>;
@@ -118,6 +116,9 @@ declare class AXImageEditorViewComponent extends MXBaseComponent implements OnDe
118
116
  private resizeEventListener;
119
117
  /** @ignore */
120
118
  private imageLoadEventListener;
119
+ private originalWidth;
120
+ private originalHeight;
121
+ private scale;
121
122
  /** @ignore */
122
123
  protected resizeWindow(): void;
123
124
  /** @ignore */
@@ -126,15 +127,12 @@ declare class AXImageEditorViewComponent extends MXBaseComponent implements OnDe
126
127
  constructor();
127
128
  /** @ignore */
128
129
  ngOnDestroy(): void;
129
- /** @ignore */
130
- protected imageLoaded(): void;
130
+ private setInitialImage;
131
131
  /** @ignore */
132
132
  protected imageChanged(): void;
133
133
  /** @ignore */
134
134
  protected penConfigHandler(penType: 'pen' | 'highlight'): void;
135
135
  /** @ignore */
136
- protected getBoundingCanvasHandler(): DOMRect;
137
- /** @ignore */
138
136
  protected mouseDownHandler(e: MouseEvent): void;
139
137
  /** @ignore */
140
138
  protected mouseMoveHandler(e: MouseEvent): void;
@@ -146,8 +144,6 @@ declare class AXImageEditorViewComponent extends MXBaseComponent implements OnDe
146
144
  protected rotateImage(): void;
147
145
  /** @ignore */
148
146
  protected saveImageChange(): void;
149
- /** @ignore */
150
- private get __hostStyle();
151
147
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXImageEditorViewComponent, never>;
152
148
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXImageEditorViewComponent, "ax-image-editor-view", never, { "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "src": { "alias": "src"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
153
149
  }
package/map/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { OnDestroy, InjectionToken, EventEmitter } from '@angular/core';
3
+ import { NXComponent } from '@acorex/cdk/common';
3
4
  import * as i1 from '@angular/common';
4
5
  import * as leaflet from 'leaflet';
5
6
 
@@ -75,7 +76,7 @@ type AXMapControlPlace = 'topleft' | 'topright' | 'bottomleft' | 'bottomright';
75
76
  * @example
76
77
  * <ax-map [latitude]="51.505" [longitude]="-0.09" [zoomLevel]="13" [hasMarker]="true"></ax-map>
77
78
  */
78
- declare class AXMapComponent implements OnDestroy {
79
+ declare class AXMapComponent extends NXComponent implements OnDestroy {
79
80
  #private;
80
81
  /**
81
82
  * @description
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acorex/components",
3
- "version": "20.1.37",
3
+ "version": "20.1.39",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.0.0",
6
6
  "@angular/core": "^20.0.0",
@@ -407,14 +407,14 @@
407
407
  "types": "./tabs/index.d.ts",
408
408
  "default": "./fesm2022/acorex-components-tabs.mjs"
409
409
  },
410
- "./tag": {
411
- "types": "./tag/index.d.ts",
412
- "default": "./fesm2022/acorex-components-tag.mjs"
413
- },
414
410
  "./tag-box": {
415
411
  "types": "./tag-box/index.d.ts",
416
412
  "default": "./fesm2022/acorex-components-tag-box.mjs"
417
413
  },
414
+ "./tag": {
415
+ "types": "./tag/index.d.ts",
416
+ "default": "./fesm2022/acorex-components-tag.mjs"
417
+ },
418
418
  "./text-area": {
419
419
  "types": "./text-area/index.d.ts",
420
420
  "default": "./fesm2022/acorex-components-text-area.mjs"
@@ -447,14 +447,14 @@
447
447
  "types": "./tree-view/index.d.ts",
448
448
  "default": "./fesm2022/acorex-components-tree-view.mjs"
449
449
  },
450
- "./uploader": {
451
- "types": "./uploader/index.d.ts",
452
- "default": "./fesm2022/acorex-components-uploader.mjs"
453
- },
454
450
  "./video-player": {
455
451
  "types": "./video-player/index.d.ts",
456
452
  "default": "./fesm2022/acorex-components-video-player.mjs"
457
453
  },
454
+ "./uploader": {
455
+ "types": "./uploader/index.d.ts",
456
+ "default": "./fesm2022/acorex-components-uploader.mjs"
457
+ },
458
458
  "./wysiwyg": {
459
459
  "types": "./wysiwyg/index.d.ts",
460
460
  "default": "./fesm2022/acorex-components-wysiwyg.mjs"
package/rrule/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
- import * as _angular_core from '@angular/core';
2
1
  import * as rrule from 'rrule';
2
+ import * as _angular_core from '@angular/core';
3
+ import { OnInit } from '@angular/core';
3
4
 
4
5
  type AXROptionsType = rrule.Options;
5
6
  interface AXParsedOptionsType extends AXROptionsType {
@@ -20,6 +21,38 @@ type AXRRuleType = rrule.RRule;
20
21
  declare const defaultOptions: AXROptionsType;
21
22
  declare const defaultRrule = "RRULE:FREQ=WEEKLY;INTERVAL=1;WKST=MO;COUNT=5";
22
23
 
24
+ declare class AXRruleService {
25
+ rruleFromOptions(options: Partial<AXROptionsType>): Promise<AXRRuleType>;
26
+ rruleFromString(ruleString: string): Promise<AXRRuleType>;
27
+ rruleFromText(ruleText: string): Promise<AXRRuleType>;
28
+ rruleToOptions(rule: AXRRuleType): AXParsedOptionsType;
29
+ rruleToString(rule: AXRRuleType): string;
30
+ rruleToText(rule: AXRRuleType): string;
31
+ rruleGetAll(rule: AXRRuleType, limit?: number): Date[];
32
+ rruleGetBetween(rule: AXRRuleType, after: Date, before: Date, inclusive?: boolean): Date[];
33
+ rruleGetBefore(rule: AXRRuleType, date: Date, inclusive?: boolean): Date | null;
34
+ rruleGetAfter(rule: AXRRuleType, date: Date, inclusive?: boolean): Date | null;
35
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXRruleService, never>;
36
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXRruleService>;
37
+ }
38
+
39
+ declare class AXRrulePreviewComponent implements OnInit {
40
+ value: _angular_core.InputSignal<string>;
41
+ repeat: _angular_core.InputSignal<number>;
42
+ format: _angular_core.InputSignal<string>;
43
+ protected rruleService: AXRruleService;
44
+ protected rrule: _angular_core.WritableSignal<rrule.RRule>;
45
+ protected timeZone: _angular_core.WritableSignal<string>;
46
+ protected text: _angular_core.Signal<string>;
47
+ protected string: _angular_core.Signal<string>;
48
+ protected dates: _angular_core.Signal<Date[]>;
49
+ protected options: _angular_core.Signal<{}>;
50
+ eff: _angular_core.EffectRef;
51
+ ngOnInit(): void;
52
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXRrulePreviewComponent, never>;
53
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXRrulePreviewComponent, "ax-rrule-preview", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "repeat": { "alias": "repeat"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
54
+ }
55
+
23
56
  declare class AXRruleComponent {
24
57
  #private;
25
58
  value: _angular_core.ModelSignal<string | rrule.Options>;
@@ -54,6 +87,11 @@ declare class AXRruleComponent {
54
87
  protected text: _angular_core.Signal<string>;
55
88
  private rruleService;
56
89
  private _isUpdating;
90
+ private _applyToken;
91
+ private _scheduleApplyIncoming;
92
+ private _applyIncomingAsync;
93
+ private _emitAll;
94
+ private _areOptionValuesEqual;
57
95
  private _clearOptions;
58
96
  updateOption<K extends keyof AXROptionsType>(key: K, value: AXROptionsType[K]): Promise<void>;
59
97
  resetOptions(): Promise<void>;
@@ -61,20 +99,5 @@ declare class AXRruleComponent {
61
99
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXRruleComponent, "ax-rrule", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "rruleChange": "rruleChange"; "optionsChange": "optionsChange"; "stringChange": "stringChange"; "textChange": "textChange"; }, never, never, true, never>;
62
100
  }
63
101
 
64
- declare class AXRruleService {
65
- rruleFromOptions(options: Partial<AXROptionsType>): Promise<AXRRuleType>;
66
- rruleFromString(ruleString: string): Promise<AXRRuleType>;
67
- rruleFromText(ruleText: string): Promise<AXRRuleType>;
68
- rruleToOptions(rule: AXRRuleType): AXParsedOptionsType;
69
- rruleToString(rule: AXRRuleType): string;
70
- rruleToText(rule: AXRRuleType): string;
71
- rruleGetAll(rule: AXRRuleType, limit?: number): Date[];
72
- rruleGetBetween(rule: AXRRuleType, after: Date, before: Date, inclusive?: boolean): Date[];
73
- rruleGetBefore(rule: AXRRuleType, date: Date, inclusive?: boolean): Date | null;
74
- rruleGetAfter(rule: AXRRuleType, date: Date, inclusive?: boolean): Date | null;
75
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXRruleService, never>;
76
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXRruleService>;
77
- }
78
-
79
- export { AXRruleComponent, AXRruleService, defaultOptions, defaultRrule };
102
+ export { AXRruleComponent, AXRrulePreviewComponent, AXRruleService, defaultOptions, defaultRrule };
80
103
  export type { AXParsedOptionsType, AXROptionsType, AXRRuleType };
@@ -209,8 +209,10 @@ declare class AXWysiwygHistoryComponent {
209
209
  * @category Components
210
210
  */
211
211
  declare class AXWysiwygInsertComponent {
212
+ #private;
212
213
  /** @ignore */
213
214
  service: AXWysiwygService;
215
+ protected isCodeActive: _angular_core.WritableSignal<boolean>;
214
216
  /** @ignore */
215
217
  textBoxOptions: {
216
218
  text: string;
@@ -227,6 +229,7 @@ declare class AXWysiwygInsertComponent {
227
229
  };
228
230
  /** @ignore */
229
231
  protected submitLink(): void;
232
+ protected codeBlock(): void;
230
233
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXWysiwygInsertComponent, never>;
231
234
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXWysiwygInsertComponent, "ax-wysiwyg-insert", never, {}, {}, never, never, true, never>;
232
235
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-components-modal-modal-content.component-Co2yaRpp.mjs","sources":["../tmp-esm2022/modal/lib/modal-content/modal-content.component.js"],"sourcesContent":["import { AXComponent, NXComponent } from '@acorex/cdk/common';\nimport { AXFocusTrapDirective } from '@acorex/cdk/focus-trap';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport { afterNextRender, ChangeDetectionStrategy, Component, computed, effect, HostBinding, HostListener, inject, input, model, signal, TemplateRef, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { AXModalFooterComponent } from '../modal-footer/modal-footer.component';\nimport { AXModalStateService } from '../modal-state.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/cdk/focus-trap\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"@acorex/components/decorators\";\nexport class AXModalContentComponent extends NXComponent {\n constructor() {\n super(...arguments);\n this.__content__ = input.required(...(ngDevMode ? [{ debugName: \"__content__\" }] : []));\n this.id = input(...(ngDevMode ? [undefined, { debugName: \"id\" }] : []));\n this.inputs = model(...(ngDevMode ? [undefined, { debugName: \"inputs\" }] : []));\n this.serviceState = inject(AXModalStateService);\n this.sanitizer = inject(DomSanitizer);\n this.modalContainer = viewChild('c', ...(ngDevMode ? [{ debugName: \"modalContainer\" }] : []));\n this.footer = viewChild(AXModalFooterComponent, ...(ngDevMode ? [{ debugName: \"footer\" }] : []));\n this.isTemplate = computed(() => this.__content__() instanceof TemplateRef, ...(ngDevMode ? [{ debugName: \"isTemplate\" }] : []));\n this.isHtmlElement = computed(() => this.__content__() instanceof HTMLElement, ...(ngDevMode ? [{ debugName: \"isHtmlElement\" }] : []));\n this.component = computed(() => this.__content__(), ...(ngDevMode ? [{ debugName: \"component\" }] : []));\n this.template = computed(() => this.__content__(), ...(ngDevMode ? [{ debugName: \"template\" }] : []));\n this.element = computed(() => this.__content__(), ...(ngDevMode ? [{ debugName: \"element\" }] : []));\n this.modalSizeState = signal('normal', ...(ngDevMode ? [{ debugName: \"modalSizeState\" }] : []));\n this.fullScreenState = signal(false, ...(ngDevMode ? [{ debugName: \"fullScreenState\" }] : []));\n this.isMouseDown = signal(false, ...(ngDevMode ? [{ debugName: \"isMouseDown\" }] : []));\n this.offsetX = signal(0, ...(ngDevMode ? [{ debugName: \"offsetX\" }] : []));\n this.offsetY = signal(0, ...(ngDevMode ? [{ debugName: \"offsetY\" }] : []));\n this.prevLeft = signal('', ...(ngDevMode ? [{ debugName: \"prevLeft\" }] : []));\n this.prevTop = signal('', ...(ngDevMode ? [{ debugName: \"prevTop\" }] : []));\n this.backdropState = computed(() => this.serviceState.modalOption()?.backdrop?.enabled ?? true, ...(ngDevMode ? [{ debugName: \"backdropState\" }] : []));\n this.closeOnEscape = computed(() => this.serviceState.modalOption()?.closeOnEscape ?? true, ...(ngDevMode ? [{ debugName: \"closeOnEscape\" }] : []));\n this.panelClass = computed(() => this.serviceState.modalOption()?.panelClass ?? '', ...(ngDevMode ? [{ debugName: \"panelClass\" }] : []));\n this.headerState = computed(() => this.serviceState.modalOption()?.header ?? false, ...(ngDevMode ? [{ debugName: \"headerState\" }] : []));\n this.footerState = computed(() => this.serviceState.modalOption()?.footer ?? false, ...(ngDevMode ? [{ debugName: \"footerState\" }] : []));\n this.closeHeaderButton = computed(() => this.serviceState.modalOption()?.buttons?.close ?? true, ...(ngDevMode ? [{ debugName: \"closeHeaderButton\" }] : []));\n this.backdropBackground = computed(() => this.serviceState.modalOption()?.backdrop?.background ?? true, ...(ngDevMode ? [{ debugName: \"backdropBackground\" }] : []));\n this.backdropClass = computed(() => this.serviceState.modalOption()?.backdrop?.backdropClass ?? '', ...(ngDevMode ? [{ debugName: \"backdropClass\" }] : []));\n this.backdropCloseOnClick = computed(() => this.serviceState.modalOption()?.backdrop?.closeOnClick ?? true, ...(ngDevMode ? [{ debugName: \"backdropCloseOnClick\" }] : []));\n this.minimizePosition = computed(() => this.serviceState.modalOption()?.buttons?.minimize?.position ?? 'bottom-right', ...(ngDevMode ? [{ debugName: \"minimizePosition\" }] : []));\n this.minimizeState = computed(() => this.serviceState.modalOption()?.buttons?.minimize?.enable ?? false, ...(ngDevMode ? [{ debugName: \"minimizeState\" }] : []));\n this.maximizeState = computed(() => this.serviceState.modalOption()?.buttons?.maximize ?? false, ...(ngDevMode ? [{ debugName: \"maximizeState\" }] : []));\n this.modalSize = computed(() => this.serviceState.modalOption()?.size ?? 'lg', ...(ngDevMode ? [{ debugName: \"modalSize\" }] : []));\n this.headerTitle = computed(() => this.serviceState.modalOption()?.title ?? '', ...(ngDevMode ? [{ debugName: \"headerTitle\" }] : []));\n this.draggable = computed(() => this.serviceState.modalOption()?.draggable ?? true, ...(ngDevMode ? [{ debugName: \"draggable\" }] : []));\n this.#init = afterNextRender(() => {\n this.nativeElement.focus();\n const popFooter = this.nativeElement.querySelector('.ax-modal-footer');\n const footer = this.nativeElement.querySelector('.ax-modal-content ax-modal-footer');\n if (footer) {\n popFooter?.append(footer);\n }\n });\n this.#eff = effect(() => {\n const host = this.nativeElement;\n if (this.draggable())\n host.classList.add('ax-draggable');\n if (!this.backdropState())\n return;\n this.addBackdrop();\n if (!this.backdropBackground())\n return;\n }, ...(ngDevMode ? [{ debugName: \"#eff\" }] : []));\n }\n #init;\n close() {\n this.serviceState.close(this.id());\n }\n minimize() {\n if (this.fullScreenState())\n document.exitFullscreen();\n this.modalContainer().nativeElement.style.transition = 'all 200ms ease-out';\n this.modalContainer().nativeElement.style.top = `auto`;\n this.modalContainer().nativeElement.style.bottom = `0`;\n if (this.backdropState())\n this.removeBackdrop();\n this.modalContainer().nativeElement.classList.remove('ax-normal-modal');\n this.modalContainer().nativeElement.classList.add('ax-minimize-modal');\n requestAnimationFrame(() => {\n const width = this.modalContainer().nativeElement.offsetWidth;\n const index = this.serviceState.getMapIndexOf(this.id());\n if (this.minimizePosition() === 'bottom-right') {\n this.modalContainer().nativeElement.style.left = `auto`;\n this.modalContainer().nativeElement.style.right = `${index * (width + 10)}px`;\n }\n else {\n this.modalContainer().nativeElement.style.right = `auto`;\n this.modalContainer().nativeElement.style.left = `${index * (width + 10)}px`;\n }\n });\n this.modalSizeState.set('minimize');\n }\n maximize() {\n this.modalContainer().nativeElement.style.transition = 'none';\n if (this.modalSizeState() === 'minimize')\n this.restore();\n if (!document.fullscreenElement) {\n this.modalContainer().nativeElement.requestFullscreen();\n this.fullScreenState.set(true);\n }\n else {\n document.exitFullscreen();\n }\n document.addEventListener('fullscreenchange', () => {\n if (!document.fullscreenElement) {\n this.fullScreenState.set(false);\n }\n });\n }\n restore() {\n setTimeout(() => {\n this.modalContainer().nativeElement.style.transition = 'none';\n }, 200);\n if (this.fullScreenState()) {\n document.exitFullscreen();\n return;\n }\n this.modalContainer().nativeElement.style.bottom = `auto`;\n this.modalContainer().nativeElement.style.right = `auto`;\n this.modalContainer().nativeElement.style.left = this.prevLeft();\n this.modalContainer().nativeElement.style.top = this.prevTop();\n if (this.backdropState())\n this.addBackdrop();\n this.modalContainer().nativeElement.classList.remove(`ax-minimize-modal`);\n this.modalContainer().nativeElement.classList.add('ax-normal-modal');\n this.modalSizeState.set('normal');\n }\n pointerDownHandler(e) {\n if (!this.draggable() || this.modalSizeState() === 'minimize' || this.fullScreenState())\n return;\n this.isMouseDown.set(true);\n this.offsetX.set(e.clientX - this.modalContainer().nativeElement.offsetLeft);\n this.offsetY.set(e.clientY - this.modalContainer().nativeElement.offsetTop);\n }\n addBackdrop() {\n const backdropElem = document.createElement('div');\n backdropElem.classList.add('ax-modal-drawer-backdrop');\n if (this.backdropClass()) {\n backdropElem.classList.add(...this.backdropClass().split(' '));\n }\n else {\n backdropElem.classList.add('ax-default-backdrop');\n }\n backdropElem.addEventListener('pointerdown', (e) => {\n if (!this.backdropCloseOnClick())\n return;\n if (e.target === e.currentTarget) {\n this.close();\n }\n });\n this.nativeElement.appendChild(backdropElem);\n }\n removeBackdrop() {\n const backdropElem = this.nativeElement.querySelector('.ax-modal-drawer-backdrop');\n if (backdropElem) {\n backdropElem.remove();\n }\n }\n pointerMoveHandler(e) {\n if (!this.draggable() || this.modalSizeState() === 'minimize' || this.fullScreenState())\n return;\n if (!this.isMouseDown())\n return;\n this.modalContainer().nativeElement.style.left = `${e.clientX - this.offsetX()}px`;\n this.modalContainer().nativeElement.style.top = `${e.clientY - this.offsetY()}px`;\n this.prevLeft.set(`${e.clientX - this.offsetX()}px`);\n this.prevTop.set(`${e.clientY - this.offsetY()}px`);\n }\n pointerUpHandler() {\n if (!this.draggable() || this.modalSizeState() === 'minimize' || this.fullScreenState())\n return;\n this.isMouseDown.set(false);\n }\n get role() {\n return '0';\n }\n escapeHandler(e) {\n if (e.key === 'Escape' && this.closeOnEscape()) {\n this.close();\n }\n }\n #eff;\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: AXModalContentComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.2.4\", type: AXModalContentComponent, isStandalone: true, selector: \"ax-modal-content\", inputs: { __content__: { classPropertyName: \"__content__\", publicName: \"__content__\", isSignal: true, isRequired: true, transformFunction: null }, id: { classPropertyName: \"id\", publicName: \"id\", isSignal: true, isRequired: false, transformFunction: null }, inputs: { classPropertyName: \"inputs\", publicName: \"inputs\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { inputs: \"inputsChange\" }, host: { listeners: { \"pointermove\": \"pointerMoveHandler($event)\", \"pointerup\": \"pointerUpHandler($event)\", \"pointerleave\": \"pointerUpHandler($event)\", \"keydown\": \"escapeHandler($event)\" }, properties: { \"attr.tabindex\": \"this.role\" } }, providers: [{ provide: AXComponent, useExisting: AXModalContentComponent }], viewQueries: [{ propertyName: \"modalContainer\", first: true, predicate: [\"c\"], descendants: true, isSignal: true }, { propertyName: \"footer\", first: true, predicate: AXModalFooterComponent, descendants: true, isSignal: true }], usesInheritance: true, hostDirectives: [{ directive: i1.AXFocusTrapDirective }], ngImport: i0, template: \"<div\\n #c\\n class=\\\"ax-modal-container ax-{{ modalSizeState() }}-modal ax-modal-{{ modalSize() }} {{ panelClass() }}\\\"\\n [@modalAnimation]\\n>\\n @if (headerState()) {\\n <div (pointerdown)=\\\"pointerDownHandler($event)\\\" class=\\\"ax-modal-header\\\">\\n <ax-text>{{ headerTitle() }}</ax-text>\\n\\n <div>\\n @if (minimizeState()) {\\n <ax-button class=\\\"ax-sm\\\" (onClick)=\\\"minimize()\\\" look=\\\"blank\\\" color=\\\"default\\\">\\n <ax-icon class=\\\"ax-icon ax-icon-minimize\\\"> </ax-icon>\\n </ax-button>\\n }\\n\\n @if (modalSizeState() !== 'normal' || fullScreenState()) {\\n <ax-button class=\\\"ax-sm\\\" (onClick)=\\\"restore()\\\" look=\\\"blank\\\" color=\\\"default\\\">\\n <ax-icon class=\\\"ax-icon ax-icon-maximize\\\"> </ax-icon>\\n </ax-button>\\n }\\n\\n @if (maximizeState()) {\\n <ax-button class=\\\"ax-sm\\\" (onClick)=\\\"maximize()\\\" look=\\\"blank\\\" color=\\\"default\\\">\\n <ax-icon class=\\\"ax-icon ax-icon-full-screen\\\"> </ax-icon>\\n </ax-button>\\n }\\n\\n @if (closeHeaderButton()) {\\n <ax-button class=\\\"ax-sm\\\" look=\\\"blank\\\" (onClick)=\\\"close()\\\" color=\\\"default\\\">\\n <ax-icon class=\\\"ax-icon ax-icon-close\\\"> </ax-icon>\\n </ax-button>\\n }\\n </div>\\n </div>\\n }\\n\\n <div class=\\\"ax-modal-content\\\">\\n @if (isTemplate()) {\\n <ng-container [ngTemplateOutlet]=\\\"this.template()\\\" [ngTemplateOutletContext]=\\\"inputs()\\\"></ng-container>\\n } @else if (isHtmlElement()) {\\n <div [innerHTML]=\\\"sanitizer.bypassSecurityTrustHtml(this.element().outerHTML)\\\"></div>\\n } @else {\\n <ng-container [ngComponentOutlet]=\\\"this.component()\\\" [ngComponentOutletInputs]=\\\"inputs()\\\"></ng-container>\\n }\\n </div>\\n\\n @if (footerState()) {\\n <div class=\\\"ax-modal-footer\\\"></div>\\n }\\n</div>\\n\", styles: [\"ax-modal-content{touch-action:none;-webkit-user-select:none;user-select:none}ax-modal-content .ax-modal-drawer-backdrop{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:50}ax-modal-content .ax-modal-drawer-backdrop.ax-default-backdrop{background-color:#00000080}ax-modal-content.ax-draggable .ax-modal-header:hover{cursor:move}ax-modal-content .ax-modal-container{position:fixed;z-index:55;background-color:rgba(var(--ax-comp-modal-bg-color, var(--ax-sys-color-lightest-surface)));display:flex;flex-direction:column;justify-content:space-between;border-radius:var(--ax-comp-modal-border-radius, var(--ax-sys-border-radius));border:var(--ax-comp-modal-border-width, 1px) solid rgba(var(--ax-comp-modal-border-color, var(--ax-sys-color-border-lightest-surface)));max-height:90vh;max-width:100vw}ax-modal-content .ax-modal-container.ax-modal-full{max-height:100vh!important;width:100%;height:100%}ax-modal-content .ax-modal-container.ax-modal-fit{width:fit-content}@media (min-width: 320px) and (max-width: 640px){ax-modal-content .ax-modal-container.ax-modal-sm,ax-modal-content .ax-modal-container.ax-modal-md,ax-modal-content .ax-modal-container.ax-modal-lg,ax-modal-content .ax-modal-container.ax-modal-fit{width:93vw}}@media (min-width: 768px){ax-modal-content .ax-modal-container.ax-modal-sm{width:55vw}ax-modal-content .ax-modal-container.ax-modal-md{width:65vw}ax-modal-content .ax-modal-container.ax-modal-lg{width:75vw}}@media (min-width: 1280px){ax-modal-content .ax-modal-container.ax-modal-sm{width:30vw}ax-modal-content .ax-modal-container.ax-modal-md{width:50vw}ax-modal-content .ax-modal-container.ax-modal-lg{width:85vw}}@media (min-width: 1536px){ax-modal-content .ax-modal-container.ax-modal-sm{width:25vw}ax-modal-content .ax-modal-container.ax-modal-md{width:40vw}ax-modal-content .ax-modal-container.ax-modal-lg{width:65vw}}ax-modal-content .ax-modal-container.ax-normal-modal{top:50%;left:50%;transform:translate(-50%,-50%)}ax-modal-content .ax-modal-container.ax-normal-modal .ax-modal-content{display:block}ax-modal-content .ax-modal-container.ax-normal-modal .ax-modal-footer{display:block}ax-modal-content .ax-modal-container.ax-minimize-modal{width:fit-content}ax-modal-content .ax-modal-container.ax-minimize-modal .ax-modal-content{display:none}ax-modal-content .ax-modal-container.ax-minimize-modal .ax-modal-footer{display:none}ax-modal-content .ax-modal-container .ax-modal-header,ax-modal-content .ax-modal-container .ax-modal-footer{padding:.5rem}ax-modal-content .ax-modal-container .ax-modal-header,ax-modal-content .ax-modal-container .ax-modal-footer{height:fit-content}ax-modal-content .ax-modal-container .ax-modal-content{flex-grow:1}ax-modal-content .ax-modal-container .ax-modal-header{display:flex;justify-content:space-between;align-items:center;gap:.5rem;border-bottom:1px solid rgba(var(--ax-sys-color-border-lightest-surface))}ax-modal-content .ax-modal-container .ax-modal-footer{border-top:1px solid rgba(var(--ax-sys-color-border-lightest-surface))}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i2.NgComponentOutlet, selector: \"[ngComponentOutlet]\", inputs: [\"ngComponentOutlet\", \"ngComponentOutletInputs\", \"ngComponentOutletInjector\", \"ngComponentOutletEnvironmentInjector\", \"ngComponentOutletContent\", \"ngComponentOutletNgModule\", \"ngComponentOutletNgModuleFactory\"], exportAs: [\"ngComponentOutlet\"] }, { kind: \"directive\", type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i3.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i3.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }], animations: [\n trigger('modalAnimation', [\n transition(':enter', [\n style({ opacity: 0, scale: 0.8, transformOrigin: 'top left' }),\n animate('200ms ease-out', style({ opacity: 1, scale: 1, transformOrigin: 'top left' })),\n ]),\n transition(':leave', [\n style({ opacity: 1, scale: 1, transformOrigin: 'top left' }),\n animate('200ms ease-out', style({ opacity: 0, scale: 0.8, transformOrigin: 'top left' })),\n ]),\n ]),\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: AXModalContentComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-modal-content', imports: [CommonModule, AXButtonComponent, AXDecoratorModule], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [AXFocusTrapDirective], animations: [\n trigger('modalAnimation', [\n transition(':enter', [\n style({ opacity: 0, scale: 0.8, transformOrigin: 'top left' }),\n animate('200ms ease-out', style({ opacity: 1, scale: 1, transformOrigin: 'top left' })),\n ]),\n transition(':leave', [\n style({ opacity: 1, scale: 1, transformOrigin: 'top left' }),\n animate('200ms ease-out', style({ opacity: 0, scale: 0.8, transformOrigin: 'top left' })),\n ]),\n ]),\n ], providers: [{ provide: AXComponent, useExisting: AXModalContentComponent }], template: \"<div\\n #c\\n class=\\\"ax-modal-container ax-{{ modalSizeState() }}-modal ax-modal-{{ modalSize() }} {{ panelClass() }}\\\"\\n [@modalAnimation]\\n>\\n @if (headerState()) {\\n <div (pointerdown)=\\\"pointerDownHandler($event)\\\" class=\\\"ax-modal-header\\\">\\n <ax-text>{{ headerTitle() }}</ax-text>\\n\\n <div>\\n @if (minimizeState()) {\\n <ax-button class=\\\"ax-sm\\\" (onClick)=\\\"minimize()\\\" look=\\\"blank\\\" color=\\\"default\\\">\\n <ax-icon class=\\\"ax-icon ax-icon-minimize\\\"> </ax-icon>\\n </ax-button>\\n }\\n\\n @if (modalSizeState() !== 'normal' || fullScreenState()) {\\n <ax-button class=\\\"ax-sm\\\" (onClick)=\\\"restore()\\\" look=\\\"blank\\\" color=\\\"default\\\">\\n <ax-icon class=\\\"ax-icon ax-icon-maximize\\\"> </ax-icon>\\n </ax-button>\\n }\\n\\n @if (maximizeState()) {\\n <ax-button class=\\\"ax-sm\\\" (onClick)=\\\"maximize()\\\" look=\\\"blank\\\" color=\\\"default\\\">\\n <ax-icon class=\\\"ax-icon ax-icon-full-screen\\\"> </ax-icon>\\n </ax-button>\\n }\\n\\n @if (closeHeaderButton()) {\\n <ax-button class=\\\"ax-sm\\\" look=\\\"blank\\\" (onClick)=\\\"close()\\\" color=\\\"default\\\">\\n <ax-icon class=\\\"ax-icon ax-icon-close\\\"> </ax-icon>\\n </ax-button>\\n }\\n </div>\\n </div>\\n }\\n\\n <div class=\\\"ax-modal-content\\\">\\n @if (isTemplate()) {\\n <ng-container [ngTemplateOutlet]=\\\"this.template()\\\" [ngTemplateOutletContext]=\\\"inputs()\\\"></ng-container>\\n } @else if (isHtmlElement()) {\\n <div [innerHTML]=\\\"sanitizer.bypassSecurityTrustHtml(this.element().outerHTML)\\\"></div>\\n } @else {\\n <ng-container [ngComponentOutlet]=\\\"this.component()\\\" [ngComponentOutletInputs]=\\\"inputs()\\\"></ng-container>\\n }\\n </div>\\n\\n @if (footerState()) {\\n <div class=\\\"ax-modal-footer\\\"></div>\\n }\\n</div>\\n\", styles: [\"ax-modal-content{touch-action:none;-webkit-user-select:none;user-select:none}ax-modal-content .ax-modal-drawer-backdrop{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:50}ax-modal-content .ax-modal-drawer-backdrop.ax-default-backdrop{background-color:#00000080}ax-modal-content.ax-draggable .ax-modal-header:hover{cursor:move}ax-modal-content .ax-modal-container{position:fixed;z-index:55;background-color:rgba(var(--ax-comp-modal-bg-color, var(--ax-sys-color-lightest-surface)));display:flex;flex-direction:column;justify-content:space-between;border-radius:var(--ax-comp-modal-border-radius, var(--ax-sys-border-radius));border:var(--ax-comp-modal-border-width, 1px) solid rgba(var(--ax-comp-modal-border-color, var(--ax-sys-color-border-lightest-surface)));max-height:90vh;max-width:100vw}ax-modal-content .ax-modal-container.ax-modal-full{max-height:100vh!important;width:100%;height:100%}ax-modal-content .ax-modal-container.ax-modal-fit{width:fit-content}@media (min-width: 320px) and (max-width: 640px){ax-modal-content .ax-modal-container.ax-modal-sm,ax-modal-content .ax-modal-container.ax-modal-md,ax-modal-content .ax-modal-container.ax-modal-lg,ax-modal-content .ax-modal-container.ax-modal-fit{width:93vw}}@media (min-width: 768px){ax-modal-content .ax-modal-container.ax-modal-sm{width:55vw}ax-modal-content .ax-modal-container.ax-modal-md{width:65vw}ax-modal-content .ax-modal-container.ax-modal-lg{width:75vw}}@media (min-width: 1280px){ax-modal-content .ax-modal-container.ax-modal-sm{width:30vw}ax-modal-content .ax-modal-container.ax-modal-md{width:50vw}ax-modal-content .ax-modal-container.ax-modal-lg{width:85vw}}@media (min-width: 1536px){ax-modal-content .ax-modal-container.ax-modal-sm{width:25vw}ax-modal-content .ax-modal-container.ax-modal-md{width:40vw}ax-modal-content .ax-modal-container.ax-modal-lg{width:65vw}}ax-modal-content .ax-modal-container.ax-normal-modal{top:50%;left:50%;transform:translate(-50%,-50%)}ax-modal-content .ax-modal-container.ax-normal-modal .ax-modal-content{display:block}ax-modal-content .ax-modal-container.ax-normal-modal .ax-modal-footer{display:block}ax-modal-content .ax-modal-container.ax-minimize-modal{width:fit-content}ax-modal-content .ax-modal-container.ax-minimize-modal .ax-modal-content{display:none}ax-modal-content .ax-modal-container.ax-minimize-modal .ax-modal-footer{display:none}ax-modal-content .ax-modal-container .ax-modal-header,ax-modal-content .ax-modal-container .ax-modal-footer{padding:.5rem}ax-modal-content .ax-modal-container .ax-modal-header,ax-modal-content .ax-modal-container .ax-modal-footer{height:fit-content}ax-modal-content .ax-modal-container .ax-modal-content{flex-grow:1}ax-modal-content .ax-modal-container .ax-modal-header{display:flex;justify-content:space-between;align-items:center;gap:.5rem;border-bottom:1px solid rgba(var(--ax-sys-color-border-lightest-surface))}ax-modal-content .ax-modal-container .ax-modal-footer{border-top:1px solid rgba(var(--ax-sys-color-border-lightest-surface))}\\n\"] }]\n }], propDecorators: { pointerMoveHandler: [{\n type: HostListener,\n args: ['pointermove', ['$event']]\n }], pointerUpHandler: [{\n type: HostListener,\n args: ['pointerup', ['$event']]\n }, {\n type: HostListener,\n args: ['pointerleave', ['$event']]\n }], role: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], escapeHandler: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtY29udGVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL21vZGFsL3NyYy9saWIvbW9kYWwtY29udGVudC9tb2RhbC1jb250ZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvbW9kYWwvc3JjL2xpYi9tb2RhbC1jb250ZW50L21vZGFsLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUVOLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3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YWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQVhGb2N1c1RyYXBEaXJlY3RpdmUgfSBmcm9tICdAYWNvcmV4L2Nkay9mb2N1cy10cmFwJztcbmltcG9ydCB7IEFYQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYQ29tcG9uZW50Q29udGVudCwgQVhDb21wb25lbnRJbnB1dHMsIEFYQ29tcG9uZW50VHlwZSB9IGZyb20gJ0BhY29yZXgvY29yZS9jb21wb25lbnRzJztcbmltcG9ydCB7IGFuaW1hdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBtb2RlbCxcbiAgc2lnbmFsLFxuICBUZW1wbGF0ZVJlZixcbiAgdmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IEFYTW9kYWxGb290ZXJDb21wb25lbnQgfSBmcm9tICcuLi9tb2RhbC1mb290ZXIvbW9kYWwtZm9vdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWE1vZGFsU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vbW9kYWwtc3RhdGUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LW1vZGFsLWNvbnRlbnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kYWwtY29udGVudC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9tb2RhbC1jb250ZW50LmNvbXBvbmVudC5zY3NzJyxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQVhCdXR0b25Db21wb25lbnQsIEFYRGVjb3JhdG9yTW9kdWxlXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3REaXJlY3RpdmVzOiBbQVhGb2N1c1RyYXBEaXJlY3RpdmVdLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignbW9kYWxBbmltYXRpb24nLCBbXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgc2NhbGU6IDAuOCwgdHJhbnNmb3JtT3JpZ2luOiAndG9wIGxlZnQnIH0pLFxuICAgICAgICBhbmltYXRlKCcyMDBtcyBlYXNlLW91dCcsIHN0eWxlKHsgb3BhY2l0eTogMSwgc2NhbGU6IDEsIHRyYW5zZm9ybU9yaWdpbjogJ3RvcCBsZWZ0JyB9KSksXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcbiAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCBzY2FsZTogMSwgdHJhbnNmb3JtT3JpZ2luOiAndG9wIGxlZnQnIH0pLFxuICAgICAgICBhbmltYXRlKCcyMDBtcyBlYXNlLW91dCcsIHN0eWxlKHsgb3BhY2l0eTogMCwgc2NhbGU6IDAuOCwgdHJhbnNmb3JtT3JpZ2luOiAndG9wIGxlZnQnIH0pKSxcbiAgICAgIF0pLFxuICAgIF0pLFxuICBdLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEFYQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhNb2RhbENvbnRlbnRDb21wb25lbnQgfV0sXG59KVxuZXhwb3J0IGNsYXNzIEFYTW9kYWxDb250ZW50Q29tcG9uZW50IGV4dGVuZHMgTlhDb21wb25lbnQge1xuICBfX2NvbnRlbnRfXyA9IGlucHV0LnJlcXVpcmVkPEFYQ29tcG9uZW50Q29udGVudCB8IEhUTUxFbGVtZW50PigpO1xuICBwdWJsaWMgaWQgPSBpbnB1dDxudW1iZXI+KCk7XG4gIHB1YmxpYyBpbnB1dHMgPSBtb2RlbDxBWENvbXBvbmVudElucHV0cz4oKTtcbiAgcHJpdmF0ZSBzZXJ2aWNlU3RhdGUgPSBpbmplY3QoQVhNb2RhbFN0YXRlU2VydmljZSk7XG4gIHByb3RlY3RlZCBzYW5pdGl6ZXIgPSBpbmplY3QoRG9tU2FuaXRpemVyKTtcblxuICBwcm90ZWN0ZWQgbW9kYWxDb250YWluZXIgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ2MnKTtcbiAgcHJvdGVjdGVkIGZvb3RlciA9IHZpZXdDaGlsZDxBWE1vZGFsRm9vdGVyQ29tcG9uZW50PihBWE1vZGFsRm9vdGVyQ29tcG9uZW50KTtcblxuICBwcm90ZWN0ZWQgaXNUZW1wbGF0ZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX19jb250ZW50X18oKSBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmKTtcbiAgcHJvdGVjdGVkIGlzSHRtbEVsZW1lbnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9fY29udGVudF9fKCkgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCk7XG5cbiAgcHVibGljIGNvbXBvbmVudCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX19jb250ZW50X18oKSBhcyBBWENvbXBvbmVudFR5cGU8YW55Pik7XG4gIHB1YmxpYyB0ZW1wbGF0ZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX19jb250ZW50X18oKSBhcyBUZW1wbGF0ZVJlZjxhbnk+KTtcbiAgcHVibGljIGVsZW1lbnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9fY29udGVudF9fKCkgYXMgSFRNTEVsZW1lbnQpO1xuXG4gIHByb3RlY3RlZCBtb2RhbFNpemVTdGF0ZSA9IHNpZ25hbDwnbWluaW1pemUnIHwgJ25vcm1hbCc+KCdub3JtYWwnKTtcbiAgcHJvdGVjdGVkIGZ1bGxTY3JlZW5TdGF0ZSA9IHNpZ25hbChmYWxzZSk7XG4gIHByaXZhdGUgaXNNb3VzZURvd24gPSBzaWduYWwoZmFsc2UpO1xuICBwcml2YXRlIG9mZnNldFggPSBzaWduYWwoMCk7XG4gIHByaXZhdGUgb2Zmc2V0WSA9IHNpZ25hbCgwKTtcbiAgcHJpdmF0ZSBwcmV2TGVmdCA9IHNpZ25hbCgnJyk7XG4gIHByaXZhdGUgcHJldlRvcCA9IHNpZ25hbCgnJyk7XG4gIHByaXZhdGUgYmFja2Ryb3BTdGF0ZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2VydmljZVN0YXRlLm1vZGFsT3B0aW9uKCk/LmJhY2tkcm9wPy5lbmFibGVkID8/IHRydWUpO1xuICBwcml2YXRlIGNsb3NlT25Fc2NhcGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNlcnZpY2VTdGF0ZS5tb2RhbE9wdGlvbigpPy5jbG9zZU9uRXNjYXBlID8/IHRydWUpO1xuICBwcm90ZWN0ZWQgcGFuZWxDbGFzcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2VydmljZVN0YXRlLm1vZGFsT3B0aW9uKCk/LnBhbmVsQ2xhc3MgPz8gJycpO1xuICBwcm90ZWN0ZWQgaGVhZGVyU3RhdGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNlcnZpY2VTdGF0ZS5tb2RhbE9wdGlvbigpPy5oZWFkZXIgPz8gZmFsc2UpO1xuICBwcm90ZWN0ZWQgZm9vdGVyU3RhdGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNlcnZpY2VTdGF0ZS5tb2RhbE9wdGlvbigpPy5mb290ZXIgPz8gZmFsc2UpO1xuICBwcm90ZWN0ZWQgY2xvc2VIZWFkZXJCdXR0b24gPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNlcnZpY2VTdGF0ZS5tb2RhbE9wdGlvbigpPy5idXR0b25zPy5jbG9zZSA/PyB0cnVlKTtcbiAgcHJpdmF0ZSBiYWNrZHJvcEJhY2tncm91bmQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNlcnZpY2VTdGF0ZS5tb2RhbE9wdGlvbigpPy5iYWNrZHJvcD8uYmFja2dyb3VuZCA/PyB0cnVlKTtcbiAgcHJpdmF0ZSBiYWNrZHJvcENsYXNzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zZXJ2aWNlU3RhdGUubW9kYWxPcHRpb24oKT8uYmFja2Ryb3A/LmJhY2tkcm9wQ2xhc3MgPz8gJycpO1xuICBwcml2YXRlIGJhY2tkcm9wQ2xvc2VPbkNsaWNrID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zZXJ2aWNlU3RhdGUubW9kYWxPcHRpb24oKT8uYmFja2Ryb3A/LmNsb3NlT25DbGljayA/PyB0cnVlKTtcbiAgcHJpdmF0ZSBtaW5pbWl6ZVBvc2l0aW9uID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gdGhpcy5zZXJ2aWNlU3RhdGUubW9kYWxPcHRpb24oKT8uYnV0dG9ucz8ubWluaW1pemU/LnBvc2l0aW9uID8/ICdib3R0b20tcmlnaHQnLFxuICApO1xuICBwcm90ZWN0ZWQgbWluaW1pemVTdGF0ZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2VydmljZVN0YXRlLm1vZGFsT3B0aW9uKCk/LmJ1dHRvbnM/Lm1pbmltaXplPy5lbmFibGUgPz8gZmFsc2UpO1xuICBwcm90ZWN0ZWQgbWF4aW1pemVTdGF0ZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2VydmljZVN0YXRlLm1vZGFsT3B0aW9uKCk/LmJ1dHRvbnM/Lm1heGltaXplID8/IGZhbHNlKTtcbiAgcHJvdGVjdGVkIG1vZGFsU2l6ZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2VydmljZVN0YXRlLm1vZGFsT3B0aW9uKCk/LnNpemUgPz8gJ2xnJyk7XG4gIHByb3RlY3RlZCBoZWFkZXJUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2VydmljZVN0YXRlLm1vZGFsT3B0aW9uKCk/LnRpdGxlID8/ICcnKTtcbiAgcHJpdmF0ZSBkcmFnZ2FibGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNlcnZpY2VTdGF0ZS5tb2RhbE9wdGlvbigpPy5kcmFnZ2FibGUgPz8gdHJ1ZSk7XG5cbiAgI2luaXQgPSBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgIHRoaXMubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIGNvbnN0IHBvcEZvb3RlciA9IHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yPEhUTUxEaXZFbGVtZW50PignLmF4LW1vZGFsLWZvb3RlcicpO1xuICAgIGNvbnN0IGZvb3RlciA9IHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yPEhUTUxEaXZFbGVtZW50PignLmF4LW1vZGFsLWNvbnRlbnQgYXgtbW9kYWwtZm9vdGVyJyk7XG4gICAgaWYgKGZvb3Rlcikge1xuICAgICAgcG9wRm9vdGVyPy5hcHBlbmQoZm9vdGVyKTtcbiAgICB9XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBjbG9zZSgpIHtcbiAgICB0aGlzLnNlcnZpY2VTdGF0ZS5jbG9zZSh0aGlzLmlkKCkpO1xuICB9XG5cbiAgbWluaW1pemUoKSB7XG4gICAgaWYgKHRoaXMuZnVsbFNjcmVlblN0YXRlKCkpIGRvY3VtZW50LmV4aXRGdWxsc2NyZWVuKCk7XG4gICAgdGhpcy5tb2RhbENvbnRhaW5lcigpLm5hdGl2ZUVsZW1lbnQuc3R5bGUudHJhbnNpdGlvbiA9ICdhbGwgMjAwbXMgZWFzZS1vdXQnO1xuXG4gICAgdGhpcy5tb2RhbENvbnRhaW5lcigpLm5hdGl2ZUVsZW1lbnQuc3R5bGUudG9wID0gYGF1dG9gO1xuICAgIHRoaXMubW9kYWxDb250YWluZXIoKS5uYXRpdmVFbGVtZW50LnN0eWxlLmJvdHRvbSA9IGAwYDtcblxuICAgIGlmICh0aGlzLmJhY2tkcm9wU3RhdGUoKSkgdGhpcy5yZW1vdmVCYWNrZHJvcCgpO1xuICAgIHRoaXMubW9kYWxDb250YWluZXIoKS5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2F4LW5vcm1hbC1tb2RhbCcpO1xuICAgIHRoaXMubW9kYWxDb250YWluZXIoKS5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2F4LW1pbmltaXplLW1vZGFsJyk7XG5cbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLm1vZGFsQ29udGFpbmVyKCkubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZXJ2aWNlU3RhdGUuZ2V0TWFwSW5kZXhPZih0aGlzLmlkKCkpO1xuXG4gICAgICBpZiAodGhpcy5taW5pbWl6ZVBvc2l0aW9uKCkgPT09ICdib3R0b20tcmlnaHQnKSB7XG4gICAgICAgIHRoaXMubW9kYWxDb250YWluZXIoKS5uYXRpdmVFbGVtZW50LnN0eWxlLmxlZnQgPSBgYXV0b2A7XG4gICAgICAgIHRoaXMubW9kYWxDb250YWluZXIoKS5uYXRpdmVFbGVtZW50LnN0eWxlLnJpZ2h0ID0gYCR7aW5kZXggKiAod2lkdGggKyAxMCl9cHhgO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5tb2RhbENvbnRhaW5lcigpLm5hdGl2ZUVsZW1lbnQuc3R5bGUucmlnaHQgPSBgYXV0b2A7XG4gICAgICAgIHRoaXMubW9kYWxDb250YWluZXIoKS5uYXRpdmVFbGVtZW50LnN0eWxlLmxlZnQgPSBgJHtpbmRleCAqICh3aWR0aCArIDEwKX1weGA7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLm1vZGFsU2l6ZVN0YXRlLnNldCgnbWluaW1pemUnKTtcbiAgfVxuXG4gIG1heGltaXplKCkge1xuICAgIHRoaXMubW9kYWxDb250YWluZXIoKS5uYXRpdmVFbGVtZW50LnN0eWxlLnRyYW5zaXRpb24gPSAnbm9uZSc7XG5cbiAgICBpZiAodGhpcy5tb2RhbFNpemVTdGF0ZSgpID09PSAnbWluaW1pemUnKSB0aGlzLnJlc3RvcmUoKTtcblxuICAgIGlmICghZG9jdW1lbnQuZnVsbHNjcmVlbkVsZW1lbnQpIHtcbiAgICAgIHRoaXMubW9kYWxDb250YWluZXIoKS5uYXRpdmVFbGVtZW50LnJlcXVlc3RGdWxsc2NyZWVuKCk7XG4gICAgICB0aGlzLmZ1bGxTY3JlZW5TdGF0ZS5zZXQodHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmV4aXRGdWxsc2NyZWVuKCk7XG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZnVsbHNjcmVlbmNoYW5nZScsICgpID0+IHtcbiAgICAgIGlmICghZG9jdW1lbnQuZnVsbHNjcmVlbkVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5mdWxsU2NyZWVuU3RhdGUuc2V0KGZhbHNlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJlc3RvcmUoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm1vZGFsQ29udGFpbmVyKCkubmF0aXZlRWxlbWVudC5zdHlsZS50cmFuc2l0aW9uID0gJ25vbmUnO1xuICAgIH0sIDIwMCk7XG5cbiAgICBpZiAodGhpcy5mdWxsU2NyZWVuU3RhdGUoKSkge1xuICAgICAgZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm1vZGFsQ29udGFpbmVyKCkubmF0aXZlRWxlbWVudC5zdHlsZS5ib3R0b20gPSBgYXV0b2A7XG4gICAgdGhpcy5tb2RhbENvbnRhaW5lcigpLm5hdGl2ZUVsZW1lbnQuc3R5bGUucmlnaHQgPSBgYXV0b2A7XG4gICAgdGhpcy5tb2RhbENvbnRhaW5lcigpLm5hdGl2ZUVsZW1lbnQuc3R5bGUubGVmdCA9IHRoaXMucHJldkxlZnQoKTtcbiAgICB0aGlzLm1vZGFsQ29udGFpbmVyKCkubmF0aXZlRWxlbWVudC5zdHlsZS50b3AgPSB0aGlzLnByZXZUb3AoKTtcblxuICAgIGlmICh0aGlzLmJhY2tkcm9wU3RhdGUoKSkgdGhpcy5hZGRCYWNrZHJvcCgpO1xuICAgIHRoaXMubW9kYWxDb250YWluZXIoKS5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoYGF4LW1pbmltaXplLW1vZGFsYCk7XG4gICAgdGhpcy5tb2RhbENvbnRhaW5lcigpLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnYXgtbm9ybWFsLW1vZGFsJyk7XG4gICAgdGhpcy5tb2RhbFNpemVTdGF0ZS5zZXQoJ25vcm1hbCcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBvaW50ZXJEb3duSGFuZGxlcihlOiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmRyYWdnYWJsZSgpIHx8IHRoaXMubW9kYWxTaXplU3RhdGUoKSA9PT0gJ21pbmltaXplJyB8fCB0aGlzLmZ1bGxTY3JlZW5TdGF0ZSgpKSByZXR1cm47XG4gICAgdGhpcy5pc01vdXNlRG93bi5zZXQodHJ1ZSk7XG4gICAgdGhpcy5vZmZzZXRYLnNldChlLmNsaWVudFggLSB0aGlzLm1vZGFsQ29udGFpbmVyKCkubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0KTtcbiAgICB0aGlzLm9mZnNldFkuc2V0KGUuY2xpZW50WSAtIHRoaXMubW9kYWxDb250YWluZXIoKS5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcCk7XG4gIH1cblxuICBwcml2YXRlIGFkZEJhY2tkcm9wKCkge1xuICAgIGNvbnN0IGJhY2tkcm9wRWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGJhY2tkcm9wRWxlbS5jbGFzc0xpc3QuYWRkKCdheC1tb2RhbC1kcmF3ZXItYmFja2Ryb3AnKTtcblxuICAgIGlmICh0aGlzLmJhY2tkcm9wQ2xhc3MoKSkge1xuICAgICAgYmFja2Ryb3BFbGVtLmNsYXNzTGlzdC5hZGQoLi4udGhpcy5iYWNrZHJvcENsYXNzKCkuc3BsaXQoJyAnKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJhY2tkcm9wRWxlbS5jbGFzc0xpc3QuYWRkKCdheC1kZWZhdWx0LWJhY2tkcm9wJyk7XG4gICAgfVxuXG4gICAgYmFja2Ryb3BFbGVtLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmICghdGhpcy5iYWNrZHJvcENsb3NlT25DbGljaygpKSByZXR1cm47XG4gICAgICBpZiAoZS50YXJnZXQgPT09IGUuY3VycmVudFRhcmdldCkge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoYmFja2Ryb3BFbGVtKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlQmFja2Ryb3AoKSB7XG4gICAgY29uc3QgYmFja2Ryb3BFbGVtID0gdGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5heC1tb2RhbC1kcmF3ZXItYmFja2Ryb3AnKTtcbiAgICBpZiAoYmFja2Ryb3BFbGVtKSB7XG4gICAgICBiYWNrZHJvcEVsZW0ucmVtb3ZlKCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigncG9pbnRlcm1vdmUnLCBbJyRldmVudCddKVxuICBwcm90ZWN0ZWQgcG9pbnRlck1vdmVIYW5kbGVyKGU6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuZHJhZ2dhYmxlKCkgfHwgdGhpcy5tb2RhbFNpemVTdGF0ZSgpID09PSAnbWluaW1pemUnIHx8IHRoaXMuZnVsbFNjcmVlblN0YXRlKCkpIHJldHVybjtcbiAgICBpZiAoIXRoaXMuaXNNb3VzZURvd24oKSkgcmV0dXJuO1xuICAgIHRoaXMubW9kYWxDb250YWluZXIoKS5uYXRpdmVFbGVtZW50LnN0eWxlLmxlZnQgPSBgJHtlLmNsaWVudFggLSB0aGlzLm9mZnNldFgoKX1weGA7XG4gICAgdGhpcy5tb2RhbENvbnRhaW5lcigpLm5hdGl2ZUVsZW1lbnQuc3R5bGUudG9wID0gYCR7ZS5jbGllbnRZIC0gdGhpcy5vZmZzZXRZKCl9cHhgO1xuICAgIHRoaXMucHJldkxlZnQuc2V0KGAke2UuY2xpZW50WCAtIHRoaXMub2Zmc2V0WCgpfXB4YCk7XG4gICAgdGhpcy5wcmV2VG9wLnNldChgJHtlLmNsaWVudFkgLSB0aGlzLm9mZnNldFkoKX1weGApO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigncG9pbnRlcnVwJywgWyckZXZlbnQnXSlcbiAgQEhvc3RMaXN0ZW5lcigncG9pbnRlcmxlYXZlJywgWyckZXZlbnQnXSlcbiAgcHJvdGVjdGVkIHBvaW50ZXJVcEhhbmRsZXIoKSB7XG4gICAgaWYgKCF0aGlzLmRyYWdnYWJsZSgpIHx8IHRoaXMubW9kYWxTaXplU3RhdGUoKSA9PT0gJ21pbmltaXplJyB8fCB0aGlzLmZ1bGxTY3JlZW5TdGF0ZSgpKSByZXR1cm47XG4gICAgdGhpcy5pc01vdXNlRG93bi5zZXQoZmFsc2UpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JykgZ2V0IHJvbGUoKSB7XG4gICAgcmV0dXJuICcwJztcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICBwcm90ZWN0ZWQgZXNjYXBlSGFuZGxlcihlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJyAmJiB0aGlzLmNsb3NlT25Fc2NhcGUoKSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gICNlZmYgPSBlZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhvc3QgPSB0aGlzLm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKHRoaXMuZHJhZ2dhYmxlKCkpIGhvc3QuY2xhc3NMaXN0LmFkZCgnYXgtZHJhZ2dhYmxlJyk7XG4gICAgaWYgKCF0aGlzLmJhY2tkcm9wU3RhdGUoKSkgcmV0dXJuO1xuICAgIHRoaXMuYWRkQmFja2Ryb3AoKTtcbiAgICBpZiAoIXRoaXMuYmFja2Ryb3BCYWNrZ3JvdW5kKCkpIHJldHVybjtcbiAgfSk7XG59XG4iLCI8ZGl2XG4gICNjXG4gIGNsYXNzPVwiYXgtbW9kYWwtY29udGFpbmVyIGF4LXt7IG1vZGFsU2l6ZVN0YXRlKCkgfX0tbW9kYWwgIGF4LW1vZGFsLXt7IG1vZGFsU2l6ZSgpIH19IHt7IHBhbmVsQ2xhc3MoKSB9fVwiXG4gIFtAbW9kYWxBbmltYXRpb25dXG4+XG4gIEBpZiAoaGVhZGVyU3RhdGUoKSkge1xuICAgIDxkaXYgKHBvaW50ZXJkb3duKT1cInBvaW50ZXJEb3duSGFuZGxlcigkZXZlbnQpXCIgY2xhc3M9XCJheC1tb2RhbC1oZWFkZXJcIj5cbiAgICAgIDxheC10ZXh0Pnt7IGhlYWRlclRpdGxlKCkgfX08L2F4LXRleHQ+XG5cbiAgICAgIDxkaXY+XG4gICAgICAgIEBpZiAobWluaW1pemVTdGF0ZSgpKSB7XG4gICAgICAgICAgPGF4LWJ1dHRvbiBjbGFzcz1cImF4LXNtXCIgKG9uQ2xpY2spPVwibWluaW1pemUoKVwiIGxvb2s9XCJibGFua1wiIGNvbG9yPVwiZGVmYXVsdFwiPlxuICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJheC1pY29uIGF4LWljb24tbWluaW1pemVcIj4gPC9heC1pY29uPlxuICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChtb2RhbFNpemVTdGF0ZSgpICE9PSAnbm9ybWFsJyB8fCBmdWxsU2NyZWVuU3RhdGUoKSkge1xuICAgICAgICAgIDxheC1idXR0b24gY2xhc3M9XCJheC1zbVwiIChvbkNsaWNrKT1cInJlc3RvcmUoKVwiIGxvb2s9XCJibGFua1wiIGNvbG9yPVwiZGVmYXVsdFwiPlxuICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJheC1pY29uIGF4LWljb24tbWF4aW1pemVcIj4gPC9heC1pY29uPlxuICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChtYXhpbWl6ZVN0YXRlKCkpIHtcbiAgICAgICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgtc21cIiAob25DbGljayk9XCJtYXhpbWl6ZSgpXCIgbG9vaz1cImJsYW5rXCIgY29sb3I9XCJkZWZhdWx0XCI+XG4gICAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1mdWxsLXNjcmVlblwiPiA8L2F4LWljb24+XG4gICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKGNsb3NlSGVhZGVyQnV0dG9uKCkpIHtcbiAgICAgICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgtc21cIiBsb29rPVwiYmxhbmtcIiAob25DbGljayk9XCJjbG9zZSgpXCIgY29sb3I9XCJkZWZhdWx0XCI+XG4gICAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1jbG9zZVwiPiA8L2F4LWljb24+XG4gICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICB9XG5cbiAgPGRpdiBjbGFzcz1cImF4LW1vZGFsLWNvbnRlbnRcIj5cbiAgICBAaWYgKGlzVGVtcGxhdGUoKSkge1xuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0aGlzLnRlbXBsYXRlKClcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwiaW5wdXRzKClcIj48L25nLWNvbnRhaW5lcj5cbiAgICB9IEBlbHNlIGlmIChpc0h0bWxFbGVtZW50KCkpIHtcbiAgICAgIDxkaXYgW2lubmVySFRNTF09XCJzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwodGhpcy5lbGVtZW50KCkub3V0ZXJIVE1MKVwiPjwvZGl2PlxuICAgIH0gQGVsc2Uge1xuICAgICAgPG5nLWNvbnRhaW5lciBbbmdDb21wb25lbnRPdXRsZXRdPVwidGhpcy5jb21wb25lbnQoKVwiIFtuZ0NvbXBvbmVudE91dGxldElucHV0c109XCJpbnB1dHMoKVwiPjwvbmctY29udGFpbmVyPlxuICAgIH1cbiAgPC9kaXY+XG5cbiAgQGlmIChmb290ZXJTdGF0ZSgpKSB7XG4gICAgPGRpdiBjbGFzcz1cImF4LW1vZGFsLWZvb3RlclwiPjwvZGl2PlxuICB9XG48L2Rpdj5cbiJdfQ=="],"names":[],"mappings":"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"}