@skyux/modals 6.13.0 → 6.16.0

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 (44) hide show
  1. package/documentation.json +340 -529
  2. package/esm2020/lib/modules/confirm/confirm-config-token.mjs +6 -0
  3. package/esm2020/lib/modules/confirm/confirm.component.mjs +103 -97
  4. package/esm2020/lib/modules/confirm/confirm.service.mjs +9 -5
  5. package/esm2020/lib/modules/modal/modal-adapter.service.mjs +20 -15
  6. package/esm2020/lib/modules/modal/modal-close-args.mjs +1 -1
  7. package/esm2020/lib/modules/modal/modal-component-adapter.service.mjs +17 -13
  8. package/esm2020/lib/modules/modal/modal-host-context-args.mjs +2 -0
  9. package/esm2020/lib/modules/modal/modal-host-context.mjs +9 -6
  10. package/esm2020/lib/modules/modal/modal-host.component.mjs +41 -14
  11. package/esm2020/lib/modules/modal/modal-host.service.mjs +21 -15
  12. package/esm2020/lib/modules/modal/modal-instance.mjs +31 -29
  13. package/esm2020/lib/modules/modal/modal-scroll-shadow.directive.mjs +71 -65
  14. package/esm2020/lib/modules/modal/modal.component.mjs +59 -74
  15. package/esm2020/lib/modules/modal/modal.service.mjs +50 -42
  16. package/esm2020/testing/modal-fixture.mjs +60 -84
  17. package/fesm2015/skyux-modals-testing.mjs +60 -83
  18. package/fesm2015/skyux-modals-testing.mjs.map +1 -1
  19. package/fesm2015/skyux-modals.mjs +412 -368
  20. package/fesm2015/skyux-modals.mjs.map +1 -1
  21. package/fesm2020/skyux-modals-testing.mjs +60 -83
  22. package/fesm2020/skyux-modals-testing.mjs.map +1 -1
  23. package/fesm2020/skyux-modals.mjs +409 -368
  24. package/fesm2020/skyux-modals.mjs.map +1 -1
  25. package/lib/modules/confirm/confirm-config-token.d.ts +6 -0
  26. package/lib/modules/confirm/confirm.component.d.ts +6 -12
  27. package/lib/modules/confirm/confirm.service.d.ts +1 -1
  28. package/lib/modules/modal/modal-adapter.service.d.ts +1 -5
  29. package/lib/modules/modal/modal-close-args.d.ts +1 -1
  30. package/lib/modules/modal/modal-component-adapter.service.d.ts +1 -2
  31. package/lib/modules/modal/modal-host-context-args.d.ts +7 -0
  32. package/lib/modules/modal/modal-host-context.d.ts +3 -2
  33. package/lib/modules/modal/modal-host.component.d.ts +1 -6
  34. package/lib/modules/modal/modal-host.service.d.ts +2 -2
  35. package/lib/modules/modal/modal-instance.d.ts +1 -5
  36. package/lib/modules/modal/modal-scroll-shadow.directive.d.ts +1 -13
  37. package/lib/modules/modal/modal.component.d.ts +12 -23
  38. package/lib/modules/modal/modal.service.d.ts +1 -3
  39. package/package.json +5 -6
  40. package/testing/modal-fixture.d.ts +6 -8
  41. package/esm2020/lib/modules/confirm/confirm-modal-context.mjs +0 -6
  42. package/esm2020/lib/modules/modal/modal-state-animation.mjs +0 -8
  43. package/lib/modules/confirm/confirm-modal-context.d.ts +0 -13
  44. package/lib/modules/modal/modal-state-animation.d.ts +0 -1
@@ -1,3 +1,5 @@
1
+ var _SkyModalScrollShadowDirective_instances, _SkyModalScrollShadowDirective_currentShadow, _SkyModalScrollShadowDirective_currentTheme, _SkyModalScrollShadowDirective_mutationObserver, _SkyModalScrollShadowDirective_ngUnsubscribe, _SkyModalScrollShadowDirective_elRef, _SkyModalScrollShadowDirective_mutationObserverSvc, _SkyModalScrollShadowDirective_ngZone, _SkyModalScrollShadowDirective_themeSvc, _SkyModalScrollShadowDirective_initMutationObserver, _SkyModalScrollShadowDirective_destroyMutationObserver, _SkyModalScrollShadowDirective_checkForShadow, _SkyModalScrollShadowDirective_buildShadowStyle, _SkyModalScrollShadowDirective_emitShadow;
2
+ import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
1
3
  import { Directive, ElementRef, EventEmitter, HostListener, NgZone, Optional, Output, } from '@angular/core';
2
4
  import { MutationObserverService } from '@skyux/core';
3
5
  import { SkyTheme, SkyThemeService } from '@skyux/theme';
@@ -13,94 +15,98 @@ import * as i2 from "@skyux/theme";
13
15
  */
14
16
  export class SkyModalScrollShadowDirective {
15
17
  constructor(elRef, mutationObserverSvc, ngZone, themeSvc) {
16
- this.elRef = elRef;
17
- this.mutationObserverSvc = mutationObserverSvc;
18
- this.ngZone = ngZone;
19
- this.themeSvc = themeSvc;
18
+ _SkyModalScrollShadowDirective_instances.add(this);
20
19
  this.skyModalScrollShadow = new EventEmitter();
21
- this.ngUnsubscribe = new Subject();
20
+ _SkyModalScrollShadowDirective_currentShadow.set(this, void 0);
21
+ _SkyModalScrollShadowDirective_currentTheme.set(this, void 0);
22
+ _SkyModalScrollShadowDirective_mutationObserver.set(this, void 0);
23
+ _SkyModalScrollShadowDirective_ngUnsubscribe.set(this, new Subject());
24
+ _SkyModalScrollShadowDirective_elRef.set(this, void 0);
25
+ _SkyModalScrollShadowDirective_mutationObserverSvc.set(this, void 0);
26
+ _SkyModalScrollShadowDirective_ngZone.set(this, void 0);
27
+ _SkyModalScrollShadowDirective_themeSvc.set(this, void 0);
28
+ __classPrivateFieldSet(this, _SkyModalScrollShadowDirective_elRef, elRef, "f");
29
+ __classPrivateFieldSet(this, _SkyModalScrollShadowDirective_mutationObserverSvc, mutationObserverSvc, "f");
30
+ __classPrivateFieldSet(this, _SkyModalScrollShadowDirective_ngZone, ngZone, "f");
31
+ __classPrivateFieldSet(this, _SkyModalScrollShadowDirective_themeSvc, themeSvc, "f");
22
32
  }
23
33
  windowResize() {
24
- this.checkForShadow();
34
+ __classPrivateFieldGet(this, _SkyModalScrollShadowDirective_instances, "m", _SkyModalScrollShadowDirective_checkForShadow).call(this);
25
35
  }
26
36
  scroll() {
27
- this.checkForShadow();
37
+ __classPrivateFieldGet(this, _SkyModalScrollShadowDirective_instances, "m", _SkyModalScrollShadowDirective_checkForShadow).call(this);
28
38
  }
29
39
  ngOnInit() {
30
- if (this.themeSvc) {
31
- this.themeSvc.settingsChange
32
- .pipe(takeUntil(this.ngUnsubscribe))
40
+ if (__classPrivateFieldGet(this, _SkyModalScrollShadowDirective_themeSvc, "f")) {
41
+ __classPrivateFieldGet(this, _SkyModalScrollShadowDirective_themeSvc, "f").settingsChange
42
+ .pipe(takeUntil(__classPrivateFieldGet(this, _SkyModalScrollShadowDirective_ngUnsubscribe, "f")))
33
43
  .subscribe((themeSettings) => {
34
- this.currentTheme = themeSettings.currentSettings.theme;
35
- if (this.currentTheme === SkyTheme.presets.modern) {
36
- this.initMutationObserver();
44
+ __classPrivateFieldSet(this, _SkyModalScrollShadowDirective_currentTheme, themeSettings.currentSettings.theme, "f");
45
+ if (__classPrivateFieldGet(this, _SkyModalScrollShadowDirective_currentTheme, "f") === SkyTheme.presets.modern) {
46
+ __classPrivateFieldGet(this, _SkyModalScrollShadowDirective_instances, "m", _SkyModalScrollShadowDirective_initMutationObserver).call(this);
37
47
  }
38
48
  else {
39
- this.emitShadow({
49
+ __classPrivateFieldGet(this, _SkyModalScrollShadowDirective_instances, "m", _SkyModalScrollShadowDirective_emitShadow).call(this, {
40
50
  bottomShadow: 'none',
41
51
  topShadow: 'none',
42
52
  });
43
- this.destroyMutationObserver();
53
+ __classPrivateFieldGet(this, _SkyModalScrollShadowDirective_instances, "m", _SkyModalScrollShadowDirective_destroyMutationObserver).call(this);
44
54
  }
45
55
  });
46
56
  }
47
57
  }
48
58
  ngOnDestroy() {
49
- this.ngUnsubscribe.next();
50
- this.ngUnsubscribe.complete();
51
- this.destroyMutationObserver();
59
+ __classPrivateFieldGet(this, _SkyModalScrollShadowDirective_ngUnsubscribe, "f").next();
60
+ __classPrivateFieldGet(this, _SkyModalScrollShadowDirective_ngUnsubscribe, "f").complete();
61
+ __classPrivateFieldGet(this, _SkyModalScrollShadowDirective_instances, "m", _SkyModalScrollShadowDirective_destroyMutationObserver).call(this);
52
62
  }
53
- initMutationObserver() {
54
- if (!this.mutationObserver) {
55
- const el = this.elRef.nativeElement;
56
- // MutationObserver is patched by Zone.js and therefore becomes part of the
57
- // Angular change detection cycle, but this can lead to infinite loops in some
58
- // secnarios. This will keep MutationObserver from triggering change detection.
59
- this.ngZone.runOutsideAngular(() => {
60
- this.mutationObserver = this.mutationObserverSvc.create(() => {
61
- this.checkForShadow();
62
- });
63
- this.mutationObserver.observe(el, {
64
- attributes: true,
65
- characterData: true,
66
- childList: true,
67
- subtree: true,
68
- });
63
+ }
64
+ _SkyModalScrollShadowDirective_currentShadow = new WeakMap(), _SkyModalScrollShadowDirective_currentTheme = new WeakMap(), _SkyModalScrollShadowDirective_mutationObserver = new WeakMap(), _SkyModalScrollShadowDirective_ngUnsubscribe = new WeakMap(), _SkyModalScrollShadowDirective_elRef = new WeakMap(), _SkyModalScrollShadowDirective_mutationObserverSvc = new WeakMap(), _SkyModalScrollShadowDirective_ngZone = new WeakMap(), _SkyModalScrollShadowDirective_themeSvc = new WeakMap(), _SkyModalScrollShadowDirective_instances = new WeakSet(), _SkyModalScrollShadowDirective_initMutationObserver = function _SkyModalScrollShadowDirective_initMutationObserver() {
65
+ if (!__classPrivateFieldGet(this, _SkyModalScrollShadowDirective_mutationObserver, "f")) {
66
+ const el = __classPrivateFieldGet(this, _SkyModalScrollShadowDirective_elRef, "f").nativeElement;
67
+ // MutationObserver is patched by Zone.js and therefore becomes part of the
68
+ // Angular change detection cycle, but this can lead to infinite loops in some
69
+ // secnarios. This will keep MutationObserver from triggering change detection.
70
+ __classPrivateFieldGet(this, _SkyModalScrollShadowDirective_ngZone, "f").runOutsideAngular(() => {
71
+ __classPrivateFieldSet(this, _SkyModalScrollShadowDirective_mutationObserver, __classPrivateFieldGet(this, _SkyModalScrollShadowDirective_mutationObserverSvc, "f").create(() => {
72
+ __classPrivateFieldGet(this, _SkyModalScrollShadowDirective_instances, "m", _SkyModalScrollShadowDirective_checkForShadow).call(this);
73
+ }), "f");
74
+ __classPrivateFieldGet(this, _SkyModalScrollShadowDirective_mutationObserver, "f").observe(el, {
75
+ attributes: true,
76
+ characterData: true,
77
+ childList: true,
78
+ subtree: true,
69
79
  });
70
- }
71
- }
72
- destroyMutationObserver() {
73
- if (this.mutationObserver) {
74
- this.mutationObserver.disconnect();
75
- this.mutationObserver = undefined;
76
- }
80
+ });
77
81
  }
78
- checkForShadow() {
79
- if (this.currentTheme === SkyTheme.presets.modern) {
80
- const el = this.elRef.nativeElement;
81
- const topShadow = this.buildShadowStyle(el.scrollTop);
82
- const bottomShadow = this.buildShadowStyle(el.scrollHeight - el.scrollTop - el.clientHeight);
83
- this.emitShadow({
84
- bottomShadow,
85
- topShadow,
86
- });
87
- }
82
+ }, _SkyModalScrollShadowDirective_destroyMutationObserver = function _SkyModalScrollShadowDirective_destroyMutationObserver() {
83
+ if (__classPrivateFieldGet(this, _SkyModalScrollShadowDirective_mutationObserver, "f")) {
84
+ __classPrivateFieldGet(this, _SkyModalScrollShadowDirective_mutationObserver, "f").disconnect();
85
+ __classPrivateFieldSet(this, _SkyModalScrollShadowDirective_mutationObserver, undefined, "f");
88
86
  }
89
- buildShadowStyle(pixelsFromEnd) {
90
- // Progressively darken the shadow until the user scrolls 30 pixels from the top or bottom
91
- // of the scrollable element, with a max opacity of 0.3.
92
- const opacity = Math.min(pixelsFromEnd / 30, 1) * 0.3;
93
- return opacity > 0 ? `0px 1px 8px 0px rgba(0, 0, 0, ${opacity})` : 'none';
87
+ }, _SkyModalScrollShadowDirective_checkForShadow = function _SkyModalScrollShadowDirective_checkForShadow() {
88
+ if (__classPrivateFieldGet(this, _SkyModalScrollShadowDirective_currentTheme, "f") === SkyTheme.presets.modern) {
89
+ const el = __classPrivateFieldGet(this, _SkyModalScrollShadowDirective_elRef, "f").nativeElement;
90
+ const topShadow = __classPrivateFieldGet(this, _SkyModalScrollShadowDirective_instances, "m", _SkyModalScrollShadowDirective_buildShadowStyle).call(this, el.scrollTop);
91
+ const bottomShadow = __classPrivateFieldGet(this, _SkyModalScrollShadowDirective_instances, "m", _SkyModalScrollShadowDirective_buildShadowStyle).call(this, el.scrollHeight - el.scrollTop - el.clientHeight);
92
+ __classPrivateFieldGet(this, _SkyModalScrollShadowDirective_instances, "m", _SkyModalScrollShadowDirective_emitShadow).call(this, {
93
+ bottomShadow,
94
+ topShadow,
95
+ });
94
96
  }
95
- emitShadow(shadow) {
96
- if (!this.currentShadow ||
97
- this.currentShadow.bottomShadow !== shadow.bottomShadow ||
98
- this.currentShadow.topShadow !== shadow.topShadow) {
99
- this.skyModalScrollShadow.emit(shadow);
100
- this.currentShadow = shadow;
101
- }
97
+ }, _SkyModalScrollShadowDirective_buildShadowStyle = function _SkyModalScrollShadowDirective_buildShadowStyle(pixelsFromEnd) {
98
+ // Progressively darken the shadow until the user scrolls 30 pixels from the top or bottom
99
+ // of the scrollable element, with a max opacity of 0.3.
100
+ const opacity = Math.min(pixelsFromEnd / 30, 1) * 0.3;
101
+ return opacity > 0 ? `0px 1px 8px 0px rgba(0, 0, 0, ${opacity})` : 'none';
102
+ }, _SkyModalScrollShadowDirective_emitShadow = function _SkyModalScrollShadowDirective_emitShadow(shadow) {
103
+ if (!__classPrivateFieldGet(this, _SkyModalScrollShadowDirective_currentShadow, "f") ||
104
+ __classPrivateFieldGet(this, _SkyModalScrollShadowDirective_currentShadow, "f").bottomShadow !== shadow.bottomShadow ||
105
+ __classPrivateFieldGet(this, _SkyModalScrollShadowDirective_currentShadow, "f").topShadow !== shadow.topShadow) {
106
+ this.skyModalScrollShadow.emit(shadow);
107
+ __classPrivateFieldSet(this, _SkyModalScrollShadowDirective_currentShadow, shadow, "f");
102
108
  }
103
- }
109
+ };
104
110
  SkyModalScrollShadowDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyModalScrollShadowDirective, deps: [{ token: i0.ElementRef }, { token: i1.MutationObserverService }, { token: i0.NgZone }, { token: i2.SkyThemeService, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
105
111
  SkyModalScrollShadowDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.2", type: SkyModalScrollShadowDirective, selector: "[skyModalScrollShadow]", outputs: { skyModalScrollShadow: "skyModalScrollShadow" }, host: { listeners: { "window:resize": "windowResize()", "scroll": "scroll()" } }, ngImport: i0 });
106
112
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyModalScrollShadowDirective, decorators: [{
@@ -119,4 +125,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
119
125
  type: HostListener,
120
126
  args: ['scroll']
121
127
  }] } });
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtc2Nyb2xsLXNoYWRvdy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbW9kYWxzL3NyYy9saWIvbW9kdWxlcy9tb2RhbC9tb2RhbC1zY3JvbGwtc2hhZG93LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLE1BQU0sRUFHTixRQUFRLEVBQ1IsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0RCxPQUFPLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUkzQzs7OztHQUlHO0FBSUgsTUFBTSxPQUFPLDZCQUE2QjtJQVl4QyxZQUNVLEtBQWlCLEVBQ2pCLG1CQUE0QyxFQUM1QyxNQUFjLEVBQ0YsUUFBMEI7UUFIdEMsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXlCO1FBQzVDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDRixhQUFRLEdBQVIsUUFBUSxDQUFrQjtRQWR6Qyx5QkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBaUMsQ0FBQztRQVF4RSxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFPekMsQ0FBQztJQUdHLFlBQVk7UUFDakIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFHTSxNQUFNO1FBQ1gsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxJ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aUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUM1RSxDQUFDO0lBRU8sVUFBVSxDQUFDLE1BQXFDO1FBQ3RELElBQ0UsQ0FBQyxJQUFJLENBQUMsYUFBYTtZQUNuQixJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksS0FBSyxNQUFNLENBQUMsWUFBWTtZQUN2RCxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsS0FBSyxNQUFNLENBQUMsU0FBUyxFQUNqRDtZQUNBLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUM7U0FDN0I7SUFDSCxDQUFDOzswSEF4SFUsNkJBQTZCOzhHQUE3Qiw2QkFBNkI7MkZBQTdCLDZCQUE2QjtrQkFIekMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO2lCQUNuQzs7MEJBaUJJLFFBQVE7NENBZEosb0JBQW9CO3NCQUQxQixNQUFNO2dCQW1CQSxZQUFZO3NCQURsQixZQUFZO3VCQUFDLGVBQWU7Z0JBTXRCLE1BQU07c0JBRFosWUFBWTt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNdXRhdGlvbk9ic2VydmVyU2VydmljZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7IFNreVRoZW1lLCBTa3lUaGVtZVNlcnZpY2UgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreU1vZGFsU2Nyb2xsU2hhZG93RXZlbnRBcmdzIH0gZnJvbSAnLi9tb2RhbC1zY3JvbGwtc2hhZG93LWV2ZW50LWFyZ3MnO1xuXG4vKipcbiAqIFJhaXNlcyBhbiBldmVudCB3aGVuIHRoZSBib3ggc2hhZG93IGZvciB0aGUgbW9kYWwgaGVhZGVyIG9yIGZvb3RlciBzaG91bGQgYmUgYWRqdXN0ZWRcbiAqIGJhc2VkIG9uIHRoZSBzY3JvbGwgcG9zaXRpb24gb2YgdGhlIGhvc3QgZWxlbWVudC5cbiAqIEBpbnRlcm5hbFxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbc2t5TW9kYWxTY3JvbGxTaGFkb3ddJyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5TW9kYWxTY3JvbGxTaGFkb3dEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2t5TW9kYWxTY3JvbGxTaGFkb3cgPSBuZXcgRXZlbnRFbWl0dGVyPFNreU1vZGFsU2Nyb2xsU2hhZG93RXZlbnRBcmdzPigpO1xuXG4gIHByaXZhdGUgY3VycmVudFNoYWRvdzogU2t5TW9kYWxTY3JvbGxTaGFkb3dFdmVudEFyZ3M7XG5cbiAgcHJpdmF0ZSBjdXJyZW50VGhlbWU6IFNreVRoZW1lO1xuXG4gIHByaXZhdGUgbXV0YXRpb25PYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlcjtcblxuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBtdXRhdGlvbk9ic2VydmVyU3ZjOiBNdXRhdGlvbk9ic2VydmVyU2VydmljZSxcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgdGhlbWVTdmM/OiBTa3lUaGVtZVNlcnZpY2VcbiAgKSB7fVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxuICBwdWJsaWMgd2luZG93UmVzaXplKCk6IHZvaWQge1xuICAgIHRoaXMuY2hlY2tGb3JTaGFkb3coKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3Njcm9sbCcpXG4gIHB1YmxpYyBzY3JvbGwoKTogdm9pZCB7XG4gICAgdGhpcy5jaGVja0ZvclNoYWRvdygpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRoZW1lU3ZjKSB7XG4gICAgICB0aGlzLnRoZW1lU3ZjLnNldHRpbmdzQ2hhbmdlXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKCh0aGVtZVNldHRpbmdzKSA9PiB7XG4gICAgICAgICAgdGhpcy5jdXJyZW50VGhlbWUgPSB0aGVtZVNldHRpbmdzLmN1cnJlbnRTZXR0aW5ncy50aGVtZTtcblxuICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRUaGVtZSA9PT0gU2t5VGhlbWUucHJlc2V0cy5tb2Rlcm4pIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdE11dGF0aW9uT2JzZXJ2ZXIoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5lbWl0U2hhZG93KHtcbiAgICAgICAgICAgICAgYm90dG9tU2hhZG93OiAnbm9uZScsXG4gICAgICAgICAgICAgIHRvcFNoYWRvdzogJ25vbmUnLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuZGVzdHJveU11dGF0aW9uT2JzZXJ2ZXIoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuXG4gICAgdGhpcy5kZXN0cm95TXV0YXRpb25PYnNlcnZlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0TXV0YXRpb25PYnNlcnZlcigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubXV0YXRpb25PYnNlcnZlcikge1xuICAgICAgY29uc3QgZWwgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgIC8vIE11dGF0aW9uT2JzZXJ2ZXIgaXMgcGF0Y2hlZCBieSBab25lLmpzIGFuZCB0aGVyZWZvcmUgYmVjb21lcyBwYXJ0IG9mIHRoZVxuICAgICAgLy8gQW5ndWxhciBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlLCBidXQgdGhpcyBjYW4gbGVhZCB0byBpbmZpbml0ZSBsb29wcyBpbiBzb21lXG4gICAgICAvLyBzZWNuYXJpb3MuIFRoaXMgd2lsbCBrZWVwIE11dGF0aW9uT2JzZXJ2ZXIgZnJvbSB0cmlnZ2VyaW5nIGNoYW5nZSBkZXRlY3Rpb24uXG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHRoaXMubXV0YXRpb25PYnNlcnZlciA9IHRoaXMubXV0YXRpb25PYnNlcnZlclN2Yy5jcmVhdGUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY2hlY2tGb3JTaGFkb3coKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyLm9ic2VydmUoZWwsIHtcbiAgICAgICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgICAgIGNoYXJhY3RlckRhdGE6IHRydWUsXG4gICAgICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95TXV0YXRpb25PYnNlcnZlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tdXRhdGlvbk9ic2VydmVyKSB7XG4gICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tGb3JTaGFkb3coKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY3VycmVudFRoZW1lID09PSBTa3lUaGVtZS5wcmVzZXRzLm1vZGVybikge1xuICAgICAgY29uc3QgZWwgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgIGNvbnN0IHRvcFNoYWRvdyA9IHRoaXMuYnVpbGRTaGFkb3dTdHlsZShlbC5zY3JvbGxUb3ApO1xuXG4gICAgICBjb25zdCBib3R0b21TaGFkb3cgPSB0aGlzLmJ1aWxkU2hhZG93U3R5bGUoXG4gICAgICAgIGVsLnNjcm9sbEhlaWdodCAtIGVsLnNjcm9sbFRvcCAtIGVsLmNsaWVudEhlaWdodFxuICAgICAgKTtcblxuICAgICAgdGhpcy5lbWl0U2hhZG93KHtcbiAgICAgICAgYm90dG9tU2hhZG93LFxuICAgICAgICB0b3BTaGFkb3csXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkU2hhZG93U3R5bGUocGl4ZWxzRnJvbUVuZDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAvLyBQcm9ncmVzc2l2ZWx5IGRhcmtlbiB0aGUgc2hhZG93IHVudGlsIHRoZSB1c2VyIHNjcm9sbHMgMzAgcGl4ZWxzIGZyb20gdGhlIHRvcCBvciBib3R0b21cbiAgICAvLyBvZiB0aGUgc2Nyb2xsYWJsZSBlbGVtZW50LCB3aXRoIGEgbWF4IG9wYWNpdHkgb2YgMC4zLlxuICAgIGNvbnN0IG9wYWNpdHkgPSBNYXRoLm1pbihwaXhlbHNGcm9tRW5kIC8gMzAsIDEpICogMC4zO1xuXG4gICAgcmV0dXJuIG9wYWNpdHkgPiAwID8gYDBweCAxcHggOHB4IDBweCByZ2JhKDAsIDAsIDAsICR7b3BhY2l0eX0pYCA6ICdub25lJztcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFNoYWRvdyhzaGFkb3c6IFNreU1vZGFsU2Nyb2xsU2hhZG93RXZlbnRBcmdzKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgIXRoaXMuY3VycmVudFNoYWRvdyB8fFxuICAgICAgdGhpcy5jdXJyZW50U2hhZG93LmJvdHRvbVNoYWRvdyAhPT0gc2hhZG93LmJvdHRvbVNoYWRvdyB8fFxuICAgICAgdGhpcy5jdXJyZW50U2hhZG93LnRvcFNoYWRvdyAhPT0gc2hhZG93LnRvcFNoYWRvd1xuICAgICkge1xuICAgICAgdGhpcy5za3lNb2RhbFNjcm9sbFNoYWRvdy5lbWl0KHNoYWRvdyk7XG4gICAgICB0aGlzLmN1cnJlbnRTaGFkb3cgPSBzaGFkb3c7XG4gICAgfVxuICB9XG59XG4iXX0=
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtc2Nyb2xsLXNoYWRvdy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbW9kYWxzL3NyYy9saWIvbW9kdWxlcy9tb2RhbC9tb2RhbC1zY3JvbGwtc2hhZG93LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUdOLFFBQVEsRUFDUixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXpELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBSTNDOzs7O0dBSUc7QUFJSCxNQUFNLE9BQU8sNkJBQTZCO0lBaUJ4QyxZQUNFLEtBQWlCLEVBQ2pCLG1CQUE0QyxFQUM1QyxNQUFjLEVBQ0YsUUFBMEI7O1FBbkJqQyx5QkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBaUMsQ0FBQztRQUVoRiwrREFBMEQ7UUFFMUQsOERBQW9DO1FBRXBDLGtFQUFnRDtRQUVoRCx1REFBaUIsSUFBSSxPQUFPLEVBQVEsRUFBQztRQUVyQyx1REFBbUI7UUFDbkIscUVBQThDO1FBQzlDLHdEQUFnQjtRQUNoQiwwREFBdUM7UUFRckMsdUJBQUEsSUFBSSx3Q0FBVSxLQUFLLE1BQUEsQ0FBQztRQUNwQix1QkFBQSxJQUFJLHNEQUF3QixtQkFBbUIsTUFBQSxDQUFDO1FBQ2hELHVCQUFBLElBQUkseUNBQVcsTUFBTSxNQUFBLENBQUM7UUFDdEIsdUJBQUEsSUFBSSwyQ0FBYSxRQUFRLE1BQUEsQ0FBQztJQUM1QixDQUFDO0lBR00sWUFBWTtRQUNqQix1QkFBQSxJQUFJLCtGQUFnQixNQUFwQixJQUFJLENBQWtCLENBQUM7SUFDekIsQ0FBQztJQUdNLE1BQU07UUFDWCx1QkFBQSxJQUFJLCtGQUFnQixNQUFwQixJQUFJLENBQWtCLENBQUM7SUFDekIsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLHVCQUFBLElBQUksK0NBQVUsRUFBRTtZQUNsQix1QkFBQSxJQUFJLCtDQUFVLENBQUMsY0FBYztpQkFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBQSxJQUFJLG9EQUFlLENBQUMsQ0FBQztpQkFDcEMsU0FBUyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUU7Z0JBQzNCLHVCQUFBLElBQUksK0NBQWlCLGFBQWEsQ0FBQyxlQUFlLENBQUMsS0FBSyxNQUFBLENBQUM7Z0JBRXpELElBQUksdUJBQUEsSUFBSSxtREFBYyxLQUFLLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFO29CQUNsRCx1QkFBQSxJQUFJLHFHQUFzQixNQUExQixJQUFJLENBQXdCLENBQUM7aUJBQzlCO3FCQUFNO29CQUNMLHVCQUFBLElBQUksMkZBQVksTUFBaEIsSUFBSSxFQUFhO3dCQUNmLFlBQVksRUFBRSxNQUFNO3dCQUNwQixTQUFTLEVBQUUsTUFBTTtxQkFDbEIsQ0FBQyxDQUFDO29CQUVILHVCQUFBLElBQUksd0dBQXlCLE1BQTdCLElBQUksQ0FBMkIsQ0FBQztpQkFDakM7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsdUJBQUEsSUFBSSxvREFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLHVCQUFBLElBQUksb0RBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUUvQix1QkFBQSxJQUFJLHdHQUF5QixNQUE3QixJQUFJLENBQTJCLENBQUM7SUFDbEMsQ0FBQzs7O0lBR0MsSUFBSSxDQUFDLHVCQUFBLElBQUksdURBQWtCLEVBQUU7UUFDM0IsTUFBTSxFQUFFLEdBQUcsdUJBQUEsSUFBSSw0Q0FBTyxDQUFDLGFBQWEsQ0FBQztRQUVyQywyRUFBMkU7UUFDM0UsOEVBQThFO1FBQzlFLCtFQUErRTtRQUMvRSx1QkFBQSxJQUFJLDZDQUFRLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQ2xDLHVCQUFBLElBQUksbURBQXFCLHVCQUFBLElBQUksMERBQXFCLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtnQkFDN0QsdUJBQUEsSUFBSSwrRkFBZ0IsTUFBcEIsSUFBSSxDQUFrQixDQUFDO1lBQ3pCLENBQUMsQ0FBQyxNQUFBLENBQUM7WUFFSCx1QkFBQSxJQUFJLHVEQUFrQixDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUU7Z0JBQ2pDLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixhQUFhLEVBQUUsSUFBSTtnQkFDbkIsU0FBUyxFQUFFLElBQUk7Z0JBQ2YsT0FBTyxFQUFFLElBQUk7YUFDZCxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztLQUNKO0FBQ0gsQ0FBQztJQUdDLElBQUksdUJBQUEsSUFBSSx1REFBa0IsRUFBRTtRQUMxQix1QkFBQSxJQUFJLHVEQUFrQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BDLHVCQUFBLElBQUksbURBQXFCLFNBQVMsTUFBQSxDQUFDO0tBQ3BDO0FBQ0gsQ0FBQztJQUdDLElBQUksdUJBQUEsSUFBSSxtREFBYyxLQUFLLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFO1FBQ2xELE1BQU0sRUFBRSxHQUFHLHVCQUFBLElBQUksNENBQU8sQ0FBQyxhQUFhLENBQUM7UUFFckMsTUFBTSxTQUFTLEdBQUcsdUJBQUEsSUFBSSxpR0FBa0IsTUFBdEIsSUFBSSxFQUFtQixFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFdkQsTUFBTSxZQUFZLEdBQUcsdUJBQUEsSUFBSSxpR0FBa0IsTUFBdEIsSUFBSSxFQUN2QixFQUFFLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FDakQsQ0FBQztRQUVGLHVCQUFBLElBQUksMkZBQVksTUFBaEIsSUFBSSxFQUFhO1lBQ2YsWUFBWTtZQUNaLFNBQVM7U0FDVixDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsNkdBRWlCLGFBQXFCO0lBQ3JDLDBGQUEwRjtJQUMxRix3REFBd0Q7SUFDeEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUV0RCxPQUFPLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlDQUFpQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQzVFLENBQUMsaUdBRVcsTUFBcUM7SUFDL0MsSUFDRSxDQUFDLHVCQUFBLElBQUksb0RBQWU7UUFDcEIsdUJBQUEsSUFBSSxvREFBZSxDQUFDLFlBQVksS0FBSyxNQUFNLENBQUMsWUFBWTtRQUN4RCx1QkFBQSxJQUFJLG9EQUFlLENBQUMsU0FBUyxLQUFLLE1BQU0sQ0FBQyxTQUFTLEVBQ2xEO1FBQ0EsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2Qyx1QkFBQSxJQUFJLGdEQUFrQixNQUFNLE1BQUEsQ0FBQztLQUM5QjtBQUNILENBQUM7MEhBbElVLDZCQUE2Qjs4R0FBN0IsNkJBQTZCOzJGQUE3Qiw2QkFBNkI7a0JBSHpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHdCQUF3QjtpQkFDbkM7OzBCQXNCSSxRQUFROzRDQW5CSixvQkFBb0I7c0JBRDFCLE1BQU07Z0JBNkJBLFlBQVk7c0JBRGxCLFlBQVk7dUJBQUMsZUFBZTtnQkFNdEIsTUFBTTtzQkFEWixZQUFZO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHsgU2t5VGhlbWUsIFNreVRoZW1lU2VydmljZSB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5TW9kYWxTY3JvbGxTaGFkb3dFdmVudEFyZ3MgfSBmcm9tICcuL21vZGFsLXNjcm9sbC1zaGFkb3ctZXZlbnQtYXJncyc7XG5cbi8qKlxuICogUmFpc2VzIGFuIGV2ZW50IHdoZW4gdGhlIGJveCBzaGFkb3cgZm9yIHRoZSBtb2RhbCBoZWFkZXIgb3IgZm9vdGVyIHNob3VsZCBiZSBhZGp1c3RlZFxuICogYmFzZWQgb24gdGhlIHNjcm9sbCBwb3NpdGlvbiBvZiB0aGUgaG9zdCBlbGVtZW50LlxuICogQGludGVybmFsXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tza3lNb2RhbFNjcm9sbFNoYWRvd10nLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lNb2RhbFNjcm9sbFNoYWRvd0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBza3lNb2RhbFNjcm9sbFNoYWRvdyA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5TW9kYWxTY3JvbGxTaGFkb3dFdmVudEFyZ3M+KCk7XG5cbiAgI2N1cnJlbnRTaGFkb3c6IFNreU1vZGFsU2Nyb2xsU2hhZG93RXZlbnRBcmdzIHwgdW5kZWZpbmVkO1xuXG4gICNjdXJyZW50VGhlbWU6IFNreVRoZW1lIHwgdW5kZWZpbmVkO1xuXG4gICNtdXRhdGlvbk9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyIHwgdW5kZWZpbmVkO1xuXG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAjZWxSZWY6IEVsZW1lbnRSZWY7XG4gICNtdXRhdGlvbk9ic2VydmVyU3ZjOiBNdXRhdGlvbk9ic2VydmVyU2VydmljZTtcbiAgI25nWm9uZTogTmdab25lO1xuICAjdGhlbWVTdmM6IFNreVRoZW1lU2VydmljZSB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBlbFJlZjogRWxlbWVudFJlZixcbiAgICBtdXRhdGlvbk9ic2VydmVyU3ZjOiBNdXRhdGlvbk9ic2VydmVyU2VydmljZSxcbiAgICBuZ1pvbmU6IE5nWm9uZSxcbiAgICBAT3B0aW9uYWwoKSB0aGVtZVN2Yz86IFNreVRoZW1lU2VydmljZVxuICApIHtcbiAgICB0aGlzLiNlbFJlZiA9IGVsUmVmO1xuICAgIHRoaXMuI211dGF0aW9uT2JzZXJ2ZXJTdmMgPSBtdXRhdGlvbk9ic2VydmVyU3ZjO1xuICAgIHRoaXMuI25nWm9uZSA9IG5nWm9uZTtcbiAgICB0aGlzLiN0aGVtZVN2YyA9IHRoZW1lU3ZjO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXG4gIHB1YmxpYyB3aW5kb3dSZXNpemUoKTogdm9pZCB7XG4gICAgdGhpcy4jY2hlY2tGb3JTaGFkb3coKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3Njcm9sbCcpXG4gIHB1YmxpYyBzY3JvbGwoKTogdm9pZCB7XG4gICAgdGhpcy4jY2hlY2tGb3JTaGFkb3coKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jdGhlbWVTdmMpIHtcbiAgICAgIHRoaXMuI3RoZW1lU3ZjLnNldHRpbmdzQ2hhbmdlXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgodGhlbWVTZXR0aW5ncykgPT4ge1xuICAgICAgICAgIHRoaXMuI2N1cnJlbnRUaGVtZSA9IHRoZW1lU2V0dGluZ3MuY3VycmVudFNldHRpbmdzLnRoZW1lO1xuXG4gICAgICAgICAgaWYgKHRoaXMuI2N1cnJlbnRUaGVtZSA9PT0gU2t5VGhlbWUucHJlc2V0cy5tb2Rlcm4pIHtcbiAgICAgICAgICAgIHRoaXMuI2luaXRNdXRhdGlvbk9ic2VydmVyKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuI2VtaXRTaGFkb3coe1xuICAgICAgICAgICAgICBib3R0b21TaGFkb3c6ICdub25lJyxcbiAgICAgICAgICAgICAgdG9wU2hhZG93OiAnbm9uZScsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy4jZGVzdHJveU11dGF0aW9uT2JzZXJ2ZXIoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG5cbiAgICB0aGlzLiNkZXN0cm95TXV0YXRpb25PYnNlcnZlcigpO1xuICB9XG5cbiAgI2luaXRNdXRhdGlvbk9ic2VydmVyKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy4jbXV0YXRpb25PYnNlcnZlcikge1xuICAgICAgY29uc3QgZWwgPSB0aGlzLiNlbFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAvLyBNdXRhdGlvbk9ic2VydmVyIGlzIHBhdGNoZWQgYnkgWm9uZS5qcyBhbmQgdGhlcmVmb3JlIGJlY29tZXMgcGFydCBvZiB0aGVcbiAgICAgIC8vIEFuZ3VsYXIgY2hhbmdlIGRldGVjdGlvbiBjeWNsZSwgYnV0IHRoaXMgY2FuIGxlYWQgdG8gaW5maW5pdGUgbG9vcHMgaW4gc29tZVxuICAgICAgLy8gc2VjbmFyaW9zLiBUaGlzIHdpbGwga2VlcCBNdXRhdGlvbk9ic2VydmVyIGZyb20gdHJpZ2dlcmluZyBjaGFuZ2UgZGV0ZWN0aW9uLlxuICAgICAgdGhpcy4jbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgdGhpcy4jbXV0YXRpb25PYnNlcnZlciA9IHRoaXMuI211dGF0aW9uT2JzZXJ2ZXJTdmMuY3JlYXRlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLiNjaGVja0ZvclNoYWRvdygpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLiNtdXRhdGlvbk9ic2VydmVyLm9ic2VydmUoZWwsIHtcbiAgICAgICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgICAgIGNoYXJhY3RlckRhdGE6IHRydWUsXG4gICAgICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgI2Rlc3Ryb3lNdXRhdGlvbk9ic2VydmVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNtdXRhdGlvbk9ic2VydmVyKSB7XG4gICAgICB0aGlzLiNtdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIHRoaXMuI211dGF0aW9uT2JzZXJ2ZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgI2NoZWNrRm9yU2hhZG93KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNjdXJyZW50VGhlbWUgPT09IFNreVRoZW1lLnByZXNldHMubW9kZXJuKSB7XG4gICAgICBjb25zdCBlbCA9IHRoaXMuI2VsUmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgIGNvbnN0IHRvcFNoYWRvdyA9IHRoaXMuI2J1aWxkU2hhZG93U3R5bGUoZWwuc2Nyb2xsVG9wKTtcblxuICAgICAgY29uc3QgYm90dG9tU2hhZG93ID0gdGhpcy4jYnVpbGRTaGFkb3dTdHlsZShcbiAgICAgICAgZWwuc2Nyb2xsSGVpZ2h0IC0gZWwuc2Nyb2xsVG9wIC0gZWwuY2xpZW50SGVpZ2h0XG4gICAgICApO1xuXG4gICAgICB0aGlzLiNlbWl0U2hhZG93KHtcbiAgICAgICAgYm90dG9tU2hhZG93LFxuICAgICAgICB0b3BTaGFkb3csXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAjYnVpbGRTaGFkb3dTdHlsZShwaXhlbHNGcm9tRW5kOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIC8vIFByb2dyZXNzaXZlbHkgZGFya2VuIHRoZSBzaGFkb3cgdW50aWwgdGhlIHVzZXIgc2Nyb2xscyAzMCBwaXhlbHMgZnJvbSB0aGUgdG9wIG9yIGJvdHRvbVxuICAgIC8vIG9mIHRoZSBzY3JvbGxhYmxlIGVsZW1lbnQsIHdpdGggYSBtYXggb3BhY2l0eSBvZiAwLjMuXG4gICAgY29uc3Qgb3BhY2l0eSA9IE1hdGgubWluKHBpeGVsc0Zyb21FbmQgLyAzMCwgMSkgKiAwLjM7XG5cbiAgICByZXR1cm4gb3BhY2l0eSA+IDAgPyBgMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgJHtvcGFjaXR5fSlgIDogJ25vbmUnO1xuICB9XG5cbiAgI2VtaXRTaGFkb3coc2hhZG93OiBTa3lNb2RhbFNjcm9sbFNoYWRvd0V2ZW50QXJncyk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgICF0aGlzLiNjdXJyZW50U2hhZG93IHx8XG4gICAgICB0aGlzLiNjdXJyZW50U2hhZG93LmJvdHRvbVNoYWRvdyAhPT0gc2hhZG93LmJvdHRvbVNoYWRvdyB8fFxuICAgICAgdGhpcy4jY3VycmVudFNoYWRvdy50b3BTaGFkb3cgIT09IHNoYWRvdy50b3BTaGFkb3dcbiAgICApIHtcbiAgICAgIHRoaXMuc2t5TW9kYWxTY3JvbGxTaGFkb3cuZW1pdChzaGFkb3cpO1xuICAgICAgdGhpcy4jY3VycmVudFNoYWRvdyA9IHNoYWRvdztcbiAgICB9XG4gIH1cbn1cbiJdfQ==