angular-debug-recorder 1.0.0 → 1.0.2

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.
@@ -3,24 +3,39 @@ import * as i0 from "@angular/core";
3
3
  export class RrwebRecorderService {
4
4
  constructor(zone) {
5
5
  this.zone = zone;
6
- this._events = signal([]);
6
+ // Plain array — cheap push, no O(n) spread on every event
7
+ this._eventsArray = [];
8
+ // Signal only for reactive count display in templates
9
+ this._eventCount = signal(0);
7
10
  this._isRecording = signal(false);
8
- this.events = this._events.asReadonly();
11
+ this.eventCount = this._eventCount.asReadonly();
9
12
  this.isRecording = this._isRecording.asReadonly();
10
13
  }
14
+ hasEvents() {
15
+ return this._eventsArray.length > 0;
16
+ }
17
+ getEvents() {
18
+ return this._eventsArray;
19
+ }
11
20
  async startRecording() {
12
- // Dynamically import rrweb to avoid SSR issues and reduce initial bundle
13
21
  const { record } = await import('rrweb');
14
- this._events.set([]);
22
+ this._eventsArray = [];
23
+ this._eventCount.set(0);
15
24
  this._isRecording.set(true);
16
25
  this.stopFn = record({
17
26
  emit: (event) => {
18
- this.zone.run(() => {
19
- this._events.update(ev => [...ev, event]);
27
+ // Push outside Angular zone no change detection per event
28
+ this.zone.runOutsideAngular(() => {
29
+ this._eventsArray.push(event);
20
30
  });
31
+ // Update count signal only every 10 events to keep UI responsive
32
+ const len = this._eventsArray.length;
33
+ if (len === 1 || len % 10 === 0) {
34
+ this.zone.run(() => this._eventCount.set(len));
35
+ }
21
36
  },
22
- // Note: blockSelector is omitted — rrweb 2.0.0-alpha.4 calls node.matches()
23
- // on TextNodes/CommentNodes which don't have that method, crashing the recorder.
37
+ // Note: blockSelector omitted — rrweb 2.0.0-alpha.4 calls node.matches()
38
+ // on TextNodes/CommentNodes which crash the recorder.
24
39
  maskTextSelector: 'input[type="password"]',
25
40
  checkoutEveryNth: 200,
26
41
  });
@@ -31,24 +46,19 @@ export class RrwebRecorderService {
31
46
  this.stopFn = undefined;
32
47
  }
33
48
  this._isRecording.set(false);
34
- return this._events();
35
- }
36
- getEvents() {
37
- return this._events();
49
+ this._eventCount.set(this._eventsArray.length);
50
+ return this._eventsArray;
38
51
  }
39
52
  clearEvents() {
40
- this._events.set([]);
41
- }
42
- hasEvents() {
43
- return this._events().length > 0;
53
+ this._eventsArray = [];
54
+ this._eventCount.set(0);
44
55
  }
45
56
  // ─── Replay ──────────────────────────────────────────────────────────────
46
57
  async startReplay(container, events) {
47
58
  const { Replayer } = await import('rrweb');
48
- const eventsToReplay = events ?? this._events();
59
+ const eventsToReplay = events ?? this._eventsArray;
49
60
  if (eventsToReplay.length === 0)
50
61
  return;
51
- // Destroy previous replayer
52
62
  this.destroyReplayer();
53
63
  this.replayer = new Replayer(eventsToReplay, {
54
64
  root: container,
@@ -76,7 +86,7 @@ export class RrwebRecorderService {
76
86
  }
77
87
  // ─── Export ───────────────────────────────────────────────────────────────
78
88
  exportEvents() {
79
- return JSON.stringify(this._events(), null, 2);
89
+ return JSON.stringify(this._eventsArray, null, 2);
80
90
  }
81
91
  downloadEvents(filename = 'rrweb-session.json') {
82
92
  const blob = new Blob([this.exportEvents()], { type: 'application/json' });
@@ -90,7 +100,8 @@ export class RrwebRecorderService {
90
100
  importEvents(json) {
91
101
  try {
92
102
  const events = JSON.parse(json);
93
- this._events.set(events);
103
+ this._eventsArray = events;
104
+ this._eventCount.set(events.length);
94
105
  return events;
95
106
  }
96
107
  catch {
@@ -105,4 +116,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
105
116
  type: Injectable,
106
117
  args: [{ providedIn: 'root' }]
107
118
  }], ctorParameters: () => [{ type: i0.NgZone }] });
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnJ3ZWItcmVjb3JkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RlYnVnLXJlY29yZGVyL3NyYy9saWIvc2VydmljZXMvcnJ3ZWItcmVjb3JkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFJM0QsTUFBTSxPQUFPLG9CQUFvQjtJQVMvQixZQUFvQixJQUFZO1FBQVosU0FBSSxHQUFKLElBQUksQ0FBUTtRQVJ4QixZQUFPLEdBQUcsTUFBTSxDQUFrQixFQUFFLENBQUMsQ0FBQztRQUN0QyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUlyQyxXQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNuQyxnQkFBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7SUFFVixDQUFDO0lBRXBDLEtBQUssQ0FBQyxjQUFjO1FBQ2xCLHlFQUF5RTtRQUN6RSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFNUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7WUFDbkIsSUFBSSxFQUFFLENBQUMsS0FBb0IsRUFBRSxFQUFFO2dCQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7b0JBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLENBQUMs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UUFDdEIsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1YsR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsWUFBWSxDQUFDLElBQVk7UUFDdkIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQW9CLENBQUM7WUFDbkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDekIsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztZQUMzQyxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDOytHQWpIVSxvQkFBb0I7bUhBQXBCLG9CQUFvQixjQURQLE1BQU07OzRGQUNuQixvQkFBb0I7a0JBRGhDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHR5cGUgeyBldmVudFdpdGhUaW1lIH0gZnJvbSAnQHJyd2ViL3R5cGVzJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBScndlYlJlY29yZGVyU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBfZXZlbnRzID0gc2lnbmFsPGV2ZW50V2l0aFRpbWVbXT4oW10pO1xyXG4gIHByaXZhdGUgX2lzUmVjb3JkaW5nID0gc2lnbmFsKGZhbHNlKTtcclxuICBwcml2YXRlIHN0b3BGbj86ICgpID0+IHZvaWQ7XHJcbiAgcHJpdmF0ZSByZXBsYXllcj86IGFueTtcclxuXHJcbiAgZXZlbnRzID0gdGhpcy5fZXZlbnRzLmFzUmVhZG9ubHkoKTtcclxuICBpc1JlY29yZGluZyA9IHRoaXMuX2lzUmVjb3JkaW5nLmFzUmVhZG9ubHkoKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB6b25lOiBOZ1pvbmUpIHt9XHJcblxyXG4gIGFzeW5jIHN0YXJ0UmVjb3JkaW5nKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgLy8gRHluYW1pY2FsbHkgaW1wb3J0IHJyd2ViIHRvIGF2b2lkIFNTUiBpc3N1ZXMgYW5kIHJlZHVjZSBpbml0aWFsIGJ1bmRsZVxyXG4gICAgY29uc3QgeyByZWNvcmQgfSA9IGF3YWl0IGltcG9ydCgncnJ3ZWInKTtcclxuICAgIHRoaXMuX2V2ZW50cy5zZXQoW10pO1xyXG4gICAgdGhpcy5faXNSZWNvcmRpbmcuc2V0KHRydWUpO1xyXG5cclxuICAgIHRoaXMuc3RvcEZuID0gcmVjb3JkKHtcclxuICAgICAgZW1pdDogKGV2ZW50OiBldmVudFdpdGhUaW1lKSA9PiB7XHJcbiAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9ldmVudHMudXBkYXRlKGV2ID0+IFsuLi5ldiwgZXZlbnRdKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgICAgLy8gTm90ZTogYmxvY2tTZWxlY3RvciBpcyBvbWl0dGVkIOKAlCBycndlYiAyLjAuMC1hbHBoYS40IGNhbGxzIG5vZGUubWF0Y2hlcygpXHJcbiAgICAgIC8vIG9uIFRleHROb2Rlcy9Db21tZW50Tm9kZXMgd2hpY2ggZG9uJ3QgaGF2ZSB0aGF0IG1ldGhvZCwgY3Jhc2hpbmcgdGhlIHJlY29yZGVyLlxyXG4gICAgICBtYXNrVGV4dFNlbGVjdG9yOiAnaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdJyxcclxuICAgICAgY2hlY2tvdXRFdmVyeU50aDogMjAwLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzdG9wUmVjb3JkaW5nKCk6IGV2ZW50V2l0aFRpbWVbXSB7XHJcbiAgICBpZiAodGhpcy5zdG9wRm4pIHtcclxuICAgICAgdGhpcy5zdG9wRm4oKTtcclxuICAgICAgdGhpcy5zdG9wRm4gPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9pc1JlY29yZGluZy5zZXQoZmFsc2UpO1xyXG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50cygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RXZlbnRzKCk6IGV2ZW50V2l0aFRpbWVbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZXZlbnRzKCk7XHJcbiAgfVxyXG5cclxuICBjbGVhckV2ZW50cygpOiB2b2lkIHtcclxuICAgIHRoaXMuX2V2ZW50cy5zZXQoW10pO1xyXG4gIH1cclxuXHJcbiAgaGFzRXZlbnRzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50cygpLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICAvLyDilIDilIDilIAgUmVwbGF5IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuICBhc3luYyBzdGFydFJlcGxheShjb250YWluZXI6IEhUTUxFbGVtZW50LCBldmVudHM/OiBldmVudFdpdGhUaW1lW10pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IHsgUmVwbGF5ZXIgfSA9IGF3YWl0IGltcG9ydCgncnJ3ZWInKTtcclxuICAgIGNvbnN0IGV2ZW50c1RvUmVwbGF5ID0gZXZlbnRzID8/IHRoaXMuX2V2ZW50cygpO1xyXG5cclxuICAgIGlmIChldmVudHNUb1JlcGxheS5sZW5ndGggPT09IDApIHJldHVybjtcclxuXHJcbiAgICAvLyBEZXN0cm95IHByZXZpb3VzIHJlcGxheWVyXHJcbiAgICB0aGlzLmRlc3Ryb3lSZXBsYXllcigpO1xyXG5cclxuICAgIHRoaXMucmVwbGF5ZXIgPSBuZXcgUmVwbGF5ZXIoZXZlbnRzVG9SZXBsYXksIHtcclxuICAgICAgcm9vdDogY29udGFpbmVyLFxyXG4gICAgICBza2lwSW5hY3RpdmU6IHRydWUsXHJcbiAgICAgIHNob3dXYXJuaW5nOiBmYWxzZSxcclxuICAgICAgc2hvd0RlYnVnOiBmYWxzZSxcclxuICAgICAgYmxvY2tDbGFzczogJ2RlYnVnLXBhbmVsJyxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucmVwbGF5ZXIucGxheSgpO1xyXG4gIH1cclxuXHJcbiAgcGF1c2VSZXBsYXkoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcGxheWVyPy5wYXVzZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVzdW1lUmVwbGF5KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXBsYXllcj8ucGxheSgpO1xyXG4gIH1cclxuXHJcbiAgZGVzdHJveVJlcGxheWVyKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucmVwbGF5ZXIpIHtcclxuICAgICAgdHJ5IHsgdGhpcy5yZXBsYXllci5wYXVzZSgpOyB9IGNhdGNoIHt9XHJcbiAgICAgIHRoaXMucmVwbGF5ZXIgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyDilIDilIDilIAgRXhwb3J0IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuICBleHBvcnRFdmVudHMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLl9ldmVudHMoKSwgbnVsbCwgMik7XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZEV2ZW50cyhmaWxlbmFtZSA9ICdycndlYi1zZXNzaW9uLmpzb24nKTogdm9pZCB7XHJcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3RoaXMuZXhwb3J0RXZlbnRzKCldLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyB9KTtcclxuICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgYS5ocmVmID0gdXJsO1xyXG4gICAgYS5kb3dubG9hZCA9IGZpbGVuYW1lO1xyXG4gICAgYS5jbGljaygpO1xyXG4gICAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xyXG4gIH1cclxuXHJcbiAgaW1wb3J0RXZlbnRzKGpzb246IHN0cmluZyk6IGV2ZW50V2l0aFRpbWVbXSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBldmVudHMgPSBKU09OLnBhcnNlKGpzb24pIGFzIGV2ZW50V2l0aFRpbWVbXTtcclxuICAgICAgdGhpcy5fZXZlbnRzLnNldChldmVudHMpO1xyXG4gICAgICByZXR1cm4gZXZlbnRzO1xyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ludmFsaWQgcnJ3ZWIgZXZlbnRzIEpTT04nKTtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnJ3ZWItcmVjb3JkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RlYnVnLXJlY29yZGVyL3NyYy9saWIvc2VydmljZXMvcnJ3ZWItcmVjb3JkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFJM0QsTUFBTSxPQUFPLG9CQUFvQjtJQVkvQixZQUFvQixJQUFZO1FBQVosU0FBSSxHQUFKLElBQUksQ0FBUTtRQVhoQywwREFBMEQ7UUFDbEQsaUJBQVksR0FBb0IsRUFBRSxDQUFDO1FBQzNDLHNEQUFzRDtRQUM5QyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QixpQkFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUlyQyxlQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMzQyxnQkFBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7SUFFVixDQUFDO0lBRXBDLFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWM7UUFDbEIsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1lBQ25CLElBQUksRUFBRSxDQUFDLEtBQW9CLEVBQUUsRUFBRTtnQkFDN0IsNERBQTREO2dCQUM1RCxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtvQkFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2hDLENBQUMsQ0FBQyxDQUFDO2dCQUNILGlFQUFpRTtnQkFDakUsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7Z0JBQ3JDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxHQUFHLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNqRCxDQUFDO1lBQ0gsQ0FBQztZQUNELHlFQUF5RTtZQUN6RSxzREFBc0Q7WUFDdEQsZ0JBQWdCLEVBQUUsd0JBQXdCO1lBQzFDLGdCQUFnQixFQUFFLEdBQUc7U0FDdEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztRQUMxQixDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsNEVBQTRFO0lBRTVFLEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBc0IsRUFBRSxNQUF3QjtRQUNoRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0MsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUM7UUFFbkQsSUFBSSxjQUFjLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPO1FBRXhDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV2QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDLGNBQWMsRUFBRTtZQUMzQyxJQUFJLEVBQUUsU0FBUztZQUNmLFlBQVksRUFBRSxJQUFJO1lBQ2xCLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLFVBQVUsRUFBRSxhQUFhO1NBQzFCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQztnQkFBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQUMsQ0FBQztZQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUM7WUFDdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7SUFFRCw2RUFBNkU7SUFFN0UsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsY0FBYyxDQUFDLFFBQVEsR0FBRyxvQkFBb0I7UUFDNUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7UUFDM0UsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QyxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ2IsQ0FBQyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDdEIsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1YsR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsWUFBWSxDQUFDLElBQVk7UUFDdkIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQW9CLENBQUM7WUFDbkQsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUM7WUFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3BDLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxPQUFPLENBQUMsS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7WUFDM0MsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO0lBQ0gsQ0FBQzsrR0E1SFUsb0JBQW9CO21IQUFwQixvQkFBb0IsY0FEUCxNQUFNOzs0RkFDbkIsb0JBQW9CO2tCQURoQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE5nWm9uZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB0eXBlIHsgZXZlbnRXaXRoVGltZSB9IGZyb20gJ0BycndlYi90eXBlcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgUnJ3ZWJSZWNvcmRlclNlcnZpY2Uge1xyXG4gIC8vIFBsYWluIGFycmF5IOKAlCBjaGVhcCBwdXNoLCBubyBPKG4pIHNwcmVhZCBvbiBldmVyeSBldmVudFxyXG4gIHByaXZhdGUgX2V2ZW50c0FycmF5OiBldmVudFdpdGhUaW1lW10gPSBbXTtcclxuICAvLyBTaWduYWwgb25seSBmb3IgcmVhY3RpdmUgY291bnQgZGlzcGxheSBpbiB0ZW1wbGF0ZXNcclxuICBwcml2YXRlIF9ldmVudENvdW50ID0gc2lnbmFsKDApO1xyXG4gIHByaXZhdGUgX2lzUmVjb3JkaW5nID0gc2lnbmFsKGZhbHNlKTtcclxuICBwcml2YXRlIHN0b3BGbj86ICgpID0+IHZvaWQ7XHJcbiAgcHJpdmF0ZSByZXBsYXllcj86IGFueTtcclxuXHJcbiAgZXZlbnRDb3VudCA9IHRoaXMuX2V2ZW50Q291bnQuYXNSZWFkb25seSgpO1xyXG4gIGlzUmVjb3JkaW5nID0gdGhpcy5faXNSZWNvcmRpbmcuYXNSZWFkb25seSgpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHpvbmU6IE5nWm9uZSkge31cclxuXHJcbiAgaGFzRXZlbnRzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50c0FycmF5Lmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICBnZXRFdmVudHMoKTogZXZlbnRXaXRoVGltZVtdIHtcclxuICAgIHJldHVybiB0aGlzLl9ldmVudHNBcnJheTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHN0YXJ0UmVjb3JkaW5nKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgeyByZWNvcmQgfSA9IGF3YWl0IGltcG9ydCgncnJ3ZWInKTtcclxuICAgIHRoaXMuX2V2ZW50c0FycmF5ID0gW107XHJcbiAgICB0aGlzLl9ldmVudENvdW50LnNldCgwKTtcclxuICAgIHRoaXMuX2lzUmVjb3JkaW5nLnNldCh0cnVlKTtcclxuXHJcbiAgICB0aGlzLnN0b3BGbiA9IHJlY29yZCh7XHJcbiAgICAgIGVtaXQ6IChldmVudDogZXZlbnRXaXRoVGltZSkgPT4ge1xyXG4gICAgICAgIC8vIFB1c2ggb3V0c2lkZSBBbmd1bGFyIHpvbmUg4oCUIG5vIGNoYW5nZSBkZXRlY3Rpb24gcGVyIGV2ZW50XHJcbiAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuX2V2ZW50c0FycmF5LnB1c2goZXZlbnQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8vIFVwZGF0ZSBjb3VudCBzaWduYWwgb25seSBldmVyeSAxMCBldmVudHMgdG8ga2VlcCBVSSByZXNwb25zaXZlXHJcbiAgICAgICAgY29uc3QgbGVuID0gdGhpcy5fZXZlbnRzQXJyYXkubGVuZ3RoO1xyXG4gICAgICAgIGlmIChsZW4gPT09IDEgfHwgbGVuICUgMTAgPT09IDApIHtcclxuICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4gdGhpcy5fZXZlbnRDb3VudC5zZXQobGVuKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAvLyBOb3RlOiBibG9ja1NlbGVjdG9yIG9taXR0ZWQg4oCUIHJyd2ViIDIuMC4wLWFscGhhLjQgY2FsbHMgbm9kZS5tYXRjaGVzKClcclxuICAgICAgLy8gb24gVGV4dE5vZGVzL0NvbW1lbnROb2RlcyB3aGljaCBjcmFzaCB0aGUgcmVjb3JkZXIuXHJcbiAgICAgIG1hc2tUZXh0U2VsZWN0b3I6ICdpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl0nLFxyXG4gICAgICBjaGVja291dEV2ZXJ5TnRoOiAyMDAsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN0b3BSZWNvcmRpbmcoKTogZXZlbnRXaXRoVGltZVtdIHtcclxuICAgIGlmICh0aGlzLnN0b3BGbikge1xyXG4gICAgICB0aGlzLnN0b3BGbigpO1xyXG4gICAgICB0aGlzLnN0b3BGbiA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIHRoaXMuX2lzUmVjb3JkaW5nLnNldChmYWxzZSk7XHJcbiAgICB0aGlzLl9ldmVudENvdW50LnNldCh0aGlzLl9ldmVudHNBcnJheS5sZW5ndGgpO1xyXG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50c0FycmF5O1xyXG4gIH1cclxuXHJcbiAgY2xlYXJFdmVudHMoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9ldmVudHNBcnJheSA9IFtdO1xyXG4gICAgdGhpcy5fZXZlbnRDb3VudC5zZXQoMCk7XHJcbiAgfVxyXG5cclxuICAvLyDilIDilIDilIAgUmVwbGF5IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuICBhc3luYyBzdGFydFJlcGxheShjb250YWluZXI6IEhUTUxFbGVtZW50LCBldmVudHM/OiBldmVudFdpdGhUaW1lW10pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IHsgUmVwbGF5ZXIgfSA9IGF3YWl0IGltcG9ydCgncnJ3ZWInKTtcclxuICAgIGNvbnN0IGV2ZW50c1RvUmVwbGF5ID0gZXZlbnRzID8/IHRoaXMuX2V2ZW50c0FycmF5O1xyXG5cclxuICAgIGlmIChldmVudHNUb1JlcGxheS5sZW5ndGggPT09IDApIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmRlc3Ryb3lSZXBsYXllcigpO1xyXG5cclxuICAgIHRoaXMucmVwbGF5ZXIgPSBuZXcgUmVwbGF5ZXIoZXZlbnRzVG9SZXBsYXksIHtcclxuICAgICAgcm9vdDogY29udGFpbmVyLFxyXG4gICAgICBza2lwSW5hY3RpdmU6IHRydWUsXHJcbiAgICAgIHNob3dXYXJuaW5nOiBmYWxzZSxcclxuICAgICAgc2hvd0RlYnVnOiBmYWxzZSxcclxuICAgICAgYmxvY2tDbGFzczogJ2RlYnVnLXBhbmVsJyxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucmVwbGF5ZXIucGxheSgpO1xyXG4gIH1cclxuXHJcbiAgcGF1c2VSZXBsYXkoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcGxheWVyPy5wYXVzZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVzdW1lUmVwbGF5KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXBsYXllcj8ucGxheSgpO1xyXG4gIH1cclxuXHJcbiAgZGVzdHJveVJlcGxheWVyKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucmVwbGF5ZXIpIHtcclxuICAgICAgdHJ5IHsgdGhpcy5yZXBsYXllci5wYXVzZSgpOyB9IGNhdGNoIHt9XHJcbiAgICAgIHRoaXMucmVwbGF5ZXIgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyDilIDilIDilIAgRXhwb3J0IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuICBleHBvcnRFdmVudHMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLl9ldmVudHNBcnJheSwgbnVsbCwgMik7XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZEV2ZW50cyhmaWxlbmFtZSA9ICdycndlYi1zZXNzaW9uLmpzb24nKTogdm9pZCB7XHJcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3RoaXMuZXhwb3J0RXZlbnRzKCldLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyB9KTtcclxuICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgYS5ocmVmID0gdXJsO1xyXG4gICAgYS5kb3dubG9hZCA9IGZpbGVuYW1lO1xyXG4gICAgYS5jbGljaygpO1xyXG4gICAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xyXG4gIH1cclxuXHJcbiAgaW1wb3J0RXZlbnRzKGpzb246IHN0cmluZyk6IGV2ZW50V2l0aFRpbWVbXSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBldmVudHMgPSBKU09OLnBhcnNlKGpzb24pIGFzIGV2ZW50V2l0aFRpbWVbXTtcclxuICAgICAgdGhpcy5fZXZlbnRzQXJyYXkgPSBldmVudHM7XHJcbiAgICAgIHRoaXMuX2V2ZW50Q291bnQuc2V0KGV2ZW50cy5sZW5ndGgpO1xyXG4gICAgICByZXR1cm4gZXZlbnRzO1xyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ludmFsaWQgcnJ3ZWIgZXZlbnRzIEpTT04nKTtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -70,97 +70,97 @@ export class SessionReplayComponent {
70
70
  this.rrweb.destroyReplayer();
71
71
  }
72
72
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SessionReplayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
73
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: SessionReplayComponent, isStandalone: true, selector: "app-session-replay", viewQueries: [{ propertyName: "replayContainer", first: true, predicate: ["replayContainer"], descendants: true }], ngImport: i0, template: `
74
- <div class="replay-panel" data-debug-panel>
75
- @if (!rrweb.hasEvents()) {
76
- <div class="replay-empty">
77
- <div class="replay-icon">📽️</div>
78
- <p>Kein Replay verfügbar.</p>
79
- <p class="hint">Starte eine Aufnahme — rrweb zeichnet den DOM parallel mit.</p>
80
- </div>
81
- } @else {
82
- <div class="replay-info">
83
- <span class="event-count">{{ rrweb.events().length }} Events aufgezeichnet</span>
84
- </div>
85
- <div class="replay-actions">
86
- <button class="replay-btn primary" (click)="openOverlay()">
87
- ▶ Replay abspielen
88
- </button>
89
- <button class="replay-btn" (click)="exportSession()">
90
- 💾 JSON exportieren
91
- </button>
92
- </div>
93
- <p class="replay-hint">
94
- Der Replay öffnet sich als Vollbild-Overlay über der aktuellen Seite.
95
- </p>
96
- }
97
- </div>
98
-
99
- <!-- Fullscreen Replay Overlay -->
100
- @if (overlayOpen()) {
101
- <div class="replay-overlay" data-debug-panel>
102
- <div class="overlay-header" data-debug-panel>
103
- <span class="overlay-title">📽️ Session Replay</span>
104
- <div class="overlay-controls" data-debug-panel>
105
- <button class="ovl-btn" (click)="pauseResume()">
106
- {{ isPlaying() ? '⏸ Pause' : '▶ Play' }}
107
- </button>
108
- <button class="ovl-btn" (click)="restart()">⟳ Neustart</button>
109
- <button class="ovl-btn close-ovl" (click)="closeOverlay()">✕ Schließen</button>
110
- </div>
111
- </div>
112
- <div #replayContainer class="overlay-stage" data-debug-panel></div>
113
- </div>
114
- }
73
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: SessionReplayComponent, isStandalone: true, selector: "app-session-replay", viewQueries: [{ propertyName: "replayContainer", first: true, predicate: ["replayContainer"], descendants: true }], ngImport: i0, template: `
74
+ <div class="replay-panel" data-debug-panel>
75
+ @if (!rrweb.hasEvents()) {
76
+ <div class="replay-empty">
77
+ <div class="replay-icon">📽️</div>
78
+ <p>Kein Replay verfügbar.</p>
79
+ <p class="hint">Starte eine Aufnahme — rrweb zeichnet den DOM parallel mit.</p>
80
+ </div>
81
+ } @else {
82
+ <div class="replay-info">
83
+ <span class="event-count">{{ rrweb.eventCount() }} Events aufgezeichnet</span>
84
+ </div>
85
+ <div class="replay-actions">
86
+ <button class="replay-btn primary" (click)="openOverlay()">
87
+ ▶ Replay abspielen
88
+ </button>
89
+ <button class="replay-btn" (click)="exportSession()">
90
+ 💾 JSON exportieren
91
+ </button>
92
+ </div>
93
+ <p class="replay-hint">
94
+ Der Replay öffnet sich als Vollbild-Overlay über der aktuellen Seite.
95
+ </p>
96
+ }
97
+ </div>
98
+
99
+ <!-- Fullscreen Replay Overlay -->
100
+ @if (overlayOpen()) {
101
+ <div class="replay-overlay" data-debug-panel>
102
+ <div class="overlay-header" data-debug-panel>
103
+ <span class="overlay-title">📽️ Session Replay</span>
104
+ <div class="overlay-controls" data-debug-panel>
105
+ <button class="ovl-btn" (click)="pauseResume()">
106
+ {{ isPlaying() ? '⏸ Pause' : '▶ Play' }}
107
+ </button>
108
+ <button class="ovl-btn" (click)="restart()">⟳ Neustart</button>
109
+ <button class="ovl-btn close-ovl" (click)="closeOverlay()">✕ Schließen</button>
110
+ </div>
111
+ </div>
112
+ <div #replayContainer class="overlay-stage" data-debug-panel></div>
113
+ </div>
114
+ }
115
115
  `, isInline: true, styles: [".replay-panel{padding:20px 16px;display:flex;flex-direction:column;gap:14px}.replay-empty{text-align:center;padding:20px 0;color:#64748b}.replay-icon{font-size:36px;margin-bottom:8px}.replay-empty p{margin:4px 0;font-size:13px}.hint{font-size:11px;color:#475569}.replay-info{background:#1e293b;border-radius:6px;padding:8px 12px}.event-count{font-size:12px;color:#6ee7b7;font-weight:600}.replay-actions{display:flex;gap:8px}.replay-btn{background:#334155;border:none;color:#cbd5e1;padding:8px 14px;border-radius:6px;font-size:12px;font-weight:600;cursor:pointer;transition:background .15s}.replay-btn:hover{background:#475569}.replay-btn.primary{background:#1d4ed8;color:#fff}.replay-btn.primary:hover{background:#2563eb}.replay-hint{font-size:11px;color:#475569;margin:0}.replay-overlay{position:fixed;inset:0;z-index:99997;background:#000;display:flex;flex-direction:column}.overlay-header{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:#0f172a;border-bottom:1px solid #1e293b;flex-shrink:0}.overlay-title{font-size:14px;font-weight:600;color:#f1f5f9}.overlay-controls{display:flex;gap:8px}.ovl-btn{background:#1e293b;border:1px solid #334155;color:#cbd5e1;padding:5px 12px;border-radius:5px;font-size:12px;font-weight:600;cursor:pointer;transition:background .15s}.ovl-btn:hover{background:#334155}.close-ovl{color:#fca5a5}.close-ovl:hover{background:#dc262633}.overlay-stage{flex:1;overflow:hidden;position:relative;background:#f8fafc}:host ::ng-deep .replayer-wrapper{position:absolute!important;top:0!important;left:0!important;transform-origin:top left!important}:host ::ng-deep .replayer-wrapper iframe{pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
116
116
  }
117
117
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SessionReplayComponent, decorators: [{
118
118
  type: Component,
119
- args: [{ selector: 'app-session-replay', standalone: true, imports: [CommonModule], template: `
120
- <div class="replay-panel" data-debug-panel>
121
- @if (!rrweb.hasEvents()) {
122
- <div class="replay-empty">
123
- <div class="replay-icon">📽️</div>
124
- <p>Kein Replay verfügbar.</p>
125
- <p class="hint">Starte eine Aufnahme — rrweb zeichnet den DOM parallel mit.</p>
126
- </div>
127
- } @else {
128
- <div class="replay-info">
129
- <span class="event-count">{{ rrweb.events().length }} Events aufgezeichnet</span>
130
- </div>
131
- <div class="replay-actions">
132
- <button class="replay-btn primary" (click)="openOverlay()">
133
- ▶ Replay abspielen
134
- </button>
135
- <button class="replay-btn" (click)="exportSession()">
136
- 💾 JSON exportieren
137
- </button>
138
- </div>
139
- <p class="replay-hint">
140
- Der Replay öffnet sich als Vollbild-Overlay über der aktuellen Seite.
141
- </p>
142
- }
143
- </div>
144
-
145
- <!-- Fullscreen Replay Overlay -->
146
- @if (overlayOpen()) {
147
- <div class="replay-overlay" data-debug-panel>
148
- <div class="overlay-header" data-debug-panel>
149
- <span class="overlay-title">📽️ Session Replay</span>
150
- <div class="overlay-controls" data-debug-panel>
151
- <button class="ovl-btn" (click)="pauseResume()">
152
- {{ isPlaying() ? '⏸ Pause' : '▶ Play' }}
153
- </button>
154
- <button class="ovl-btn" (click)="restart()">⟳ Neustart</button>
155
- <button class="ovl-btn close-ovl" (click)="closeOverlay()">✕ Schließen</button>
156
- </div>
157
- </div>
158
- <div #replayContainer class="overlay-stage" data-debug-panel></div>
159
- </div>
160
- }
119
+ args: [{ selector: 'app-session-replay', standalone: true, imports: [CommonModule], template: `
120
+ <div class="replay-panel" data-debug-panel>
121
+ @if (!rrweb.hasEvents()) {
122
+ <div class="replay-empty">
123
+ <div class="replay-icon">📽️</div>
124
+ <p>Kein Replay verfügbar.</p>
125
+ <p class="hint">Starte eine Aufnahme — rrweb zeichnet den DOM parallel mit.</p>
126
+ </div>
127
+ } @else {
128
+ <div class="replay-info">
129
+ <span class="event-count">{{ rrweb.eventCount() }} Events aufgezeichnet</span>
130
+ </div>
131
+ <div class="replay-actions">
132
+ <button class="replay-btn primary" (click)="openOverlay()">
133
+ ▶ Replay abspielen
134
+ </button>
135
+ <button class="replay-btn" (click)="exportSession()">
136
+ 💾 JSON exportieren
137
+ </button>
138
+ </div>
139
+ <p class="replay-hint">
140
+ Der Replay öffnet sich als Vollbild-Overlay über der aktuellen Seite.
141
+ </p>
142
+ }
143
+ </div>
144
+
145
+ <!-- Fullscreen Replay Overlay -->
146
+ @if (overlayOpen()) {
147
+ <div class="replay-overlay" data-debug-panel>
148
+ <div class="overlay-header" data-debug-panel>
149
+ <span class="overlay-title">📽️ Session Replay</span>
150
+ <div class="overlay-controls" data-debug-panel>
151
+ <button class="ovl-btn" (click)="pauseResume()">
152
+ {{ isPlaying() ? '⏸ Pause' : '▶ Play' }}
153
+ </button>
154
+ <button class="ovl-btn" (click)="restart()">⟳ Neustart</button>
155
+ <button class="ovl-btn close-ovl" (click)="closeOverlay()">✕ Schließen</button>
156
+ </div>
157
+ </div>
158
+ <div #replayContainer class="overlay-stage" data-debug-panel></div>
159
+ </div>
160
+ }
161
161
  `, styles: [".replay-panel{padding:20px 16px;display:flex;flex-direction:column;gap:14px}.replay-empty{text-align:center;padding:20px 0;color:#64748b}.replay-icon{font-size:36px;margin-bottom:8px}.replay-empty p{margin:4px 0;font-size:13px}.hint{font-size:11px;color:#475569}.replay-info{background:#1e293b;border-radius:6px;padding:8px 12px}.event-count{font-size:12px;color:#6ee7b7;font-weight:600}.replay-actions{display:flex;gap:8px}.replay-btn{background:#334155;border:none;color:#cbd5e1;padding:8px 14px;border-radius:6px;font-size:12px;font-weight:600;cursor:pointer;transition:background .15s}.replay-btn:hover{background:#475569}.replay-btn.primary{background:#1d4ed8;color:#fff}.replay-btn.primary:hover{background:#2563eb}.replay-hint{font-size:11px;color:#475569;margin:0}.replay-overlay{position:fixed;inset:0;z-index:99997;background:#000;display:flex;flex-direction:column}.overlay-header{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:#0f172a;border-bottom:1px solid #1e293b;flex-shrink:0}.overlay-title{font-size:14px;font-weight:600;color:#f1f5f9}.overlay-controls{display:flex;gap:8px}.ovl-btn{background:#1e293b;border:1px solid #334155;color:#cbd5e1;padding:5px 12px;border-radius:5px;font-size:12px;font-weight:600;cursor:pointer;transition:background .15s}.ovl-btn:hover{background:#334155}.close-ovl{color:#fca5a5}.close-ovl:hover{background:#dc262633}.overlay-stage{flex:1;overflow:hidden;position:relative;background:#f8fafc}:host ::ng-deep .replayer-wrapper{position:absolute!important;top:0!important;left:0!important;transform-origin:top left!important}:host ::ng-deep .replayer-wrapper iframe{pointer-events:none}\n"] }]
162
162
  }], propDecorators: { replayContainer: [{
163
163
  type: ViewChild,
164
164
  args: ['replayContainer']
165
165
  }] } });
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1yZXBsYXkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVidWctcmVjb3JkZXIvc3JjL2xpYi9zZXNzaW9uLXJlcGxheS9zZXNzaW9uLXJlcGxheS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFBYyxTQUFTLEVBQWEsTUFBTSxFQUFFLE1BQU0sR0FDNUQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQWlKMUUsTUFBTSxPQUFPLHNCQUFzQjtJQS9JbkM7UUFrSkUsVUFBSyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3JDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLGNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7S0F3RTNCO0lBdEVDLEtBQUssQ0FBQyxXQUFXO1FBQ2YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIseUNBQXlDO1FBQ3pDLE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUMsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FB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R0FBdEIsc0JBQXNCLGtNQTNJdkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBDVCxzdERBM0NTLFlBQVk7OzRGQTRJWCxzQkFBc0I7a0JBL0lsQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsWUFDYjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMENUOzhCQWtHNkIsZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgT25EZXN0cm95LCBpbmplY3QsIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUnJ3ZWJSZWNvcmRlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9ycndlYi1yZWNvcmRlci5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXNlc3Npb24tcmVwbGF5JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInJlcGxheS1wYW5lbFwiIGRhdGEtZGVidWctcGFuZWw+XG4gICAgICBAaWYgKCFycndlYi5oYXNFdmVudHMoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicmVwbGF5LWVtcHR5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlcGxheS1pY29uXCI+8J+Tve+4jzwvZGl2PlxuICAgICAgICAgIDxwPktlaW4gUmVwbGF5IHZlcmbDvGdiYXIuPC9wPlxuICAgICAgICAgIDxwIGNsYXNzPVwiaGludFwiPlN0YXJ0ZSBlaW5lIEF1Zm5haG1lIOKAlCBycndlYiB6ZWljaG5ldCBkZW4gRE9NIHBhcmFsbGVsIG1pdC48L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZXBsYXktaW5mb1wiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXZlbnQtY291bnRcIj57eyBycndlYi5ldmVudHMoKS5sZW5ndGggfX0gRXZlbnRzIGF1ZmdlemVpY2huZXQ8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVwbGF5LWFjdGlvbnNcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicmVwbGF5LWJ0biBwcmltYXJ5XCIgKGNsaWNrKT1cIm9wZW5PdmVybGF5KClcIj5cbiAgICAgICAgICAgIOKWtiBSZXBsYXkgYWJzcGllbGVuXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlcGxheS1idG5cIiAoY2xpY2spPVwiZXhwb3J0U2Vzc2lvbigpXCI+XG4gICAgICAgICAgICDwn5K+IEpTT04gZXhwb3J0aWVyZW5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxwIGNsYXNzPVwicmVwbGF5LWhpbnRcIj5cbiAgICAgICAgICBEZXIgUmVwbGF5IMO2ZmZuZXQgc2ljaCBhbHMgVm9sbGJpbGQtT3ZlcmxheSDDvGJlciBkZXIgYWt0dWVsbGVuIFNlaXRlLlxuICAgICAgICA8L3A+XG4gICAgICB9XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEZ1bGxzY3JlZW4gUmVwbGF5IE92ZXJsYXkgLS0+XG4gICAgQGlmIChvdmVybGF5T3BlbigpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwicmVwbGF5LW92ZXJsYXlcIiBkYXRhLWRlYnVnLXBhbmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheS1oZWFkZXJcIiBkYXRhLWRlYnVnLXBhbmVsPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3ZlcmxheS10aXRsZVwiPvCfk73vuI8gU2Vzc2lvbiBSZXBsYXk8L3NwYW4+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsYXktY29udHJvbHNcIiBkYXRhLWRlYnVnLXBhbmVsPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm92bC1idG5cIiAoY2xpY2spPVwicGF1c2VSZXN1bWUoKVwiPlxuICAgICAgICAgICAgICB7eyBpc1BsYXlpbmcoKSA/ICfij7ggUGF1c2UnIDogJ+KWtiBQbGF5JyB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwib3ZsLWJ0blwiIChjbGljayk9XCJyZXN0YXJ0KClcIj7in7MgTmV1c3RhcnQ8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJvdmwtYnRuIGNsb3NlLW92bFwiIChjbGljayk9XCJjbG9zZU92ZXJsYXkoKVwiPuKclSBTY2hsaWXDn2VuPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICNyZXBsYXlDb250YWluZXIgY2xhc3M9XCJvdmVybGF5LXN0YWdlXCIgZGF0YS1kZWJ1Zy1wYW5lbD48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgYCxcbiAgc3R5bGVzOiBbYFxuICAgIC5yZXBsYXktcGFuZWwge1xuICAgICAgcGFkZGluZzogMjBweCAxNnB4O1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBnYXA6IDE0cHg7XG4gICAgfVxuXG4gICAgLnJlcGxheS1lbXB0eSB7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBwYWRkaW5nOiAyMHB4IDA7XG4gICAgICBjb2xvcjogIzY0NzQ4YjtcbiAgICB9XG4gICAgLnJlcGxheS1pY29uIHsgZm9udC1zaXplOiAzNnB4OyBtYXJnaW4tYm90dG9tOiA4cHg7IH1cbiAgICAucmVwbGF5LWVtcHR5IHAgeyBtYXJnaW46IDRweCAwOyBmb250LXNpemU6IDEzcHg7IH1cbiAgICAuaGludCB7IGZvbnQtc2l6ZTogMTFweDsgY29sb3I6ICM0NzU1Njk7IH1cblxuICAgIC5yZXBsYXktaW5mbyB7XG4gICAgICBiYWNrZ3JvdW5kOiAjMWUyOTNiO1xuICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgcGFkZGluZzogOHB4IDEycHg7XG4gICAgfVxuICAgIC5ldmVudC1jb3VudCB7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6ICM2ZWU3Yjc7IGZvbnQtd2VpZ2h0OiA2MDA7IH1cblxuICAgIC5yZXBsYXktYWN0aW9ucyB7IGRpc3BsYXk6IGZsZXg7IGdhcDogOHB4OyB9XG4gICAgLnJlcGxheS1idG4ge1xuICAgICAgYmFja2dyb3VuZDogIzMzNDE1NTtcbiAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIGNvbG9yOiAjY2JkNWUxO1xuICAgICAgcGFkZGluZzogOHB4IDE0cHg7XG4gICAgICBib3JkZXItcmFkaXVzOiA2cHg7XG4gICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cztcbiAgICB9XG4gICAgLnJlcGxheS1idG46aG92ZXIgeyBiYWNrZ3JvdW5kOiAjNDc1NTY5OyB9XG4gICAgLnJlcGxheS1idG4ucHJpbWFyeSB7IGJhY2tncm91bmQ6ICMxZDRlZDg7IGNvbG9yOiAjZmZmOyB9XG4gICAgLnJlcGxheS1idG4ucHJpbWFyeTpob3ZlciB7IGJhY2tncm91bmQ6ICMyNTYzZWI7IH1cblxuICAgIC5yZXBsYXktaGludCB7IGZvbnQtc2l6ZTogMTFweDsgY29sb3I6ICM0NzU1Njk7IG1hcmdpbjogMDsgfVxuXG4gICAgLyog4pSA4pSAIEZ1bGxzY3JlZW4gT3ZlcmxheSDilIDilIAgKi9cbiAgICAucmVwbGF5LW92ZXJsYXkge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgaW5zZXQ6IDA7XG4gICAgICB6LWluZGV4OiA5OTk5NztcbiAgICAgIGJhY2tncm91bmQ6ICMwMDA7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICB9XG4gICAgLm92ZXJsYXktaGVhZGVyIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgcGFkZGluZzogMTBweCAxNnB4O1xuICAgICAgYmFja2dyb3VuZDogIzBmMTcyYTtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjMWUyOTNiO1xuICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxuICAgIC5vdmVybGF5LXRpdGxlIHsgZm9udC1zaXplOiAxNHB4OyBmb250LXdlaWdodDogNjAwOyBjb2xvcjogI2YxZjVmOTsgfVxuICAgIC5vdmVybGF5LWNvbnRyb2xzIHsgZGlzcGxheTogZmxleDsgZ2FwOiA4cHg7IH1cbiAgICAub3ZsLWJ0biB7XG4gICAgICBiYWNrZ3JvdW5kOiAjMWUyOTNiO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgIzMzNDE1NTtcbiAgICAgIGNvbG9yOiAjY2JkNWUxO1xuICAgICAgcGFkZGluZzogNXB4IDEycHg7XG4gICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cztcbiAgICB9XG4gICAgLm92bC1idG46aG92ZXIgeyBiYWNrZ3JvdW5kOiAjMzM0MTU1OyB9XG4gICAgLmNsb3NlLW92bCB7IGNvbG9yOiAjZmNhNWE1OyB9XG4gICAgLmNsb3NlLW92bDpob3ZlciB7IGJhY2tncm91bmQ6IHJnYmEoMjIwLDM4LDM4LDAuMik7IH1cblxuICAgIC5vdmVybGF5LXN0YWdlIHtcbiAgICAgIGZsZXg6IDE7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgYmFja2dyb3VuZDogI2Y4ZmFmYztcbiAgICB9XG5cbiAgICAvKiBTY2FsZSB0aGUgcnJ3ZWIgaWZyYW1lIHRvIGZpbGwgYXZhaWxhYmxlIHNwYWNlICovXG4gICAgOmhvc3QgOjpuZy1kZWVwIC5yZXBsYXllci13cmFwcGVyIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xuICAgICAgdG9wOiAwICFpbXBvcnRhbnQ7XG4gICAgICBsZWZ0OiAwICFpbXBvcnRhbnQ7XG4gICAgICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgbGVmdCAhaW1wb3J0YW50O1xuICAgIH1cbiAgICA6aG9zdCA6Om5nLWRlZXAgLnJlcGxheWVyLXdyYXBwZXIgaWZyYW1lIHtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cbiAgYF0sXG59KVxuZXhwb3J0IGNsYXNzIFNlc3Npb25SZXBsYXlDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKCdyZXBsYXlDb250YWluZXInKSByZXBsYXlDb250YWluZXI/OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICBycndlYiA9IGluamVjdChScndlYlJlY29yZGVyU2VydmljZSk7XG4gIG92ZXJsYXlPcGVuID0gc2lnbmFsKGZhbHNlKTtcbiAgaXNQbGF5aW5nID0gc2lnbmFsKGZhbHNlKTtcblxuICBhc3luYyBvcGVuT3ZlcmxheSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLm92ZXJsYXlPcGVuLnNldCh0cnVlKTtcbiAgICB0aGlzLmlzUGxheWluZy5zZXQoZmFsc2UpO1xuICAgIC8vIFdhaXQgZm9yIHRoZSBET00gdG8gcmVuZGVyIHRoZSBvdmVybGF5XG4gICAgYXdhaXQgbmV3IFByb21pc2UociA9PiBzZXRUaW1lb3V0KHIsIDUwKSk7XG4gICAgYXdhaXQgdGhpcy5zdGFydFBsYXkoKTtcbiAgfVxuXG4gIGNsb3NlT3ZlcmxheSgpOiB2b2lkIHtcbiAgICB0aGlzLnJyd2ViLmRlc3Ryb3lSZXBsYXllcigpO1xuICAgIHRoaXMub3ZlcmxheU9wZW4uc2V0KGZhbHNlKTtcbiAgICB0aGlzLmlzUGxheWluZy5zZXQoZmFsc2UpO1xuICB9XG5cbiAgYXN5bmMgcGF1c2VSZXN1bWUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaXNQbGF5aW5nKCkpIHtcbiAgICAgIHRoaXMucnJ3ZWIucGF1c2VSZXBsYXkoKTtcbiAgICAgIHRoaXMuaXNQbGF5aW5nLnNldChmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucnJ3ZWIucmVzdW1lUmVwbGF5KCk7XG4gICAgICB0aGlzLmlzUGxheWluZy5zZXQodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcmVzdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnJyd2ViLmRlc3Ryb3lSZXBsYXllcigpO1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKHIgPT4gc2V0VGltZW91dChyLCA1MCkpO1xuICAgIGF3YWl0IHRoaXMuc3RhcnRQbGF5KCk7XG4gIH1cblxuICBleHBvcnRTZXNzaW9uKCk6IHZvaWQge1xuICAgIHRoaXMucnJ3ZWIuZG93bmxvYWRFdmVudHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc3RhcnRQbGF5KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5yZXBsYXlDb250YWluZXIpIHJldHVybjtcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLnJlcGxheUNvbnRhaW5lci5uYXRpdmVFbGVtZW50O1xuXG4gICAgYXdhaXQgdGhpcy5ycndlYi5zdGFydFJlcGxheShjb250YWluZXIpO1xuXG4gICAgLy8gU2NhbGUgaWZyYW1lIHRvIGZpbGwgdGhlIHN0YWdlIGNvbnRhaW5lclxuICAgIHRoaXMuc2NhbGVSZXBsYXllcihjb250YWluZXIpO1xuICAgIHRoaXMuaXNQbGF5aW5nLnNldCh0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgc2NhbGVSZXBsYXllcihjb250YWluZXI6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgLy8gcnJ3ZWIgaW5qZWN0cyAucmVwbGF5ZXItd3JhcHBlciB3aXRoIGFuIGlmcmFtZSBzaXplZCB0byB0aGUgcmVjb3JkZWQgdmlld3BvcnRcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IHdyYXBwZXIgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignLnJlcGxheWVyLXdyYXBwZXInKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGlmICghd3JhcHBlcikgcmV0dXJuO1xuXG4gICAgICBjb25zdCBpZnJhbWUgPSB3cmFwcGVyLnF1ZXJ5U2VsZWN0b3IoJ2lmcmFtZScpIGFzIEhUTUxJRnJhbWVFbGVtZW50O1xuICAgICAgY29uc3Qgd3JhcFcgPSBpZnJhbWU/Lm9mZnNldFdpZHRoICB8fCB3cmFwcGVyLm9mZnNldFdpZHRoICB8fCAxMjgwO1xuICAgICAgY29uc3Qgd3JhcEggPSBpZnJhbWU/Lm9mZnNldEhlaWdodCB8fCB3cmFwcGVyLm9mZnNldEhlaWdodCB8fCA3MjA7XG4gICAgICBjb25zdCBzdGFnZVcgPSBjb250YWluZXIub2Zmc2V0V2lkdGg7XG4gICAgICBjb25zdCBzdGFnZUggPSBjb250YWluZXIub2Zmc2V0SGVpZ2h0O1xuXG4gICAgICBpZiAoIXN0YWdlVyB8fCAhc3RhZ2VIIHx8ICF3cmFwVyB8fCAhd3JhcEgpIHJldHVybjtcblxuICAgICAgY29uc3Qgc2NhbGUgPSBNYXRoLm1pbihzdGFnZVcgLyB3cmFwVywgc3RhZ2VIIC8gd3JhcEgpO1xuICAgICAgY29uc3Qgb2Zmc2V0WCA9IChzdGFnZVcgLSB3cmFwVyAqIHNjYWxlKSAvIDI7XG4gICAgICBjb25zdCBvZmZzZXRZID0gKHN0YWdlSCAtIHdyYXBIICogc2NhbGUpIC8gMjtcblxuICAgICAgd3JhcHBlci5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlKCR7b2Zmc2V0WH1weCwgJHtvZmZzZXRZfXB4KSBzY2FsZSgke3NjYWxlfSlgO1xuICAgIH0sIDMwMCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJyd2ViLmRlc3Ryb3lSZXBsYXllcigpO1xuICB9XG59XG4iXX0=
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1yZXBsYXkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVidWctcmVjb3JkZXIvc3JjL2xpYi9zZXNzaW9uLXJlcGxheS9zZXNzaW9uLXJlcGxheS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFBYyxTQUFTLEVBQWEsTUFBTSxFQUFFLE1BQU0sR0FDNUQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQWlKMUUsTUFBTSxPQUFPLHNCQUFzQjtJQS9JbkM7UUFrSkUsVUFBSyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3JDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLGNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7S0F3RTNCO0lBdEVDLEtBQUssQ0FBQyxXQUFXO1FBQ2YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIseUNBQXlDO1FBQ3pDLE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUMsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FB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R0FBdEIsc0JBQXNCLGtNQTNJdkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBDVCxzdERBM0NTLFlBQVk7OzRGQTRJWCxzQkFBc0I7a0JBL0lsQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsWUFDYjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMENUOzhCQWtHNkIsZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBPbkRlc3Ryb3ksIGluamVjdCwgc2lnbmFsLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBScndlYlJlY29yZGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Jyd2ViLXJlY29yZGVyLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtc2Vzc2lvbi1yZXBsYXknLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJyZXBsYXktcGFuZWxcIiBkYXRhLWRlYnVnLXBhbmVsPlxyXG4gICAgICBAaWYgKCFycndlYi5oYXNFdmVudHMoKSkge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZXBsYXktZW1wdHlcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXBsYXktaWNvblwiPvCfk73vuI88L2Rpdj5cclxuICAgICAgICAgIDxwPktlaW4gUmVwbGF5IHZlcmbDvGdiYXIuPC9wPlxyXG4gICAgICAgICAgPHAgY2xhc3M9XCJoaW50XCI+U3RhcnRlIGVpbmUgQXVmbmFobWUg4oCUIHJyd2ViIHplaWNobmV0IGRlbiBET00gcGFyYWxsZWwgbWl0LjwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJlcGxheS1pbmZvXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImV2ZW50LWNvdW50XCI+e3sgcnJ3ZWIuZXZlbnRDb3VudCgpIH19IEV2ZW50cyBhdWZnZXplaWNobmV0PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZXBsYXktYWN0aW9uc1wiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlcGxheS1idG4gcHJpbWFyeVwiIChjbGljayk9XCJvcGVuT3ZlcmxheSgpXCI+XHJcbiAgICAgICAgICAgIOKWtiBSZXBsYXkgYWJzcGllbGVuXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJyZXBsYXktYnRuXCIgKGNsaWNrKT1cImV4cG9ydFNlc3Npb24oKVwiPlxyXG4gICAgICAgICAgICDwn5K+IEpTT04gZXhwb3J0aWVyZW5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxwIGNsYXNzPVwicmVwbGF5LWhpbnRcIj5cclxuICAgICAgICAgIERlciBSZXBsYXkgw7ZmZm5ldCBzaWNoIGFscyBWb2xsYmlsZC1PdmVybGF5IMO8YmVyIGRlciBha3R1ZWxsZW4gU2VpdGUuXHJcbiAgICAgICAgPC9wPlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIEZ1bGxzY3JlZW4gUmVwbGF5IE92ZXJsYXkgLS0+XHJcbiAgICBAaWYgKG92ZXJsYXlPcGVuKCkpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cInJlcGxheS1vdmVybGF5XCIgZGF0YS1kZWJ1Zy1wYW5lbD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheS1oZWFkZXJcIiBkYXRhLWRlYnVnLXBhbmVsPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJvdmVybGF5LXRpdGxlXCI+8J+Tve+4jyBTZXNzaW9uIFJlcGxheTwvc3Bhbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdmVybGF5LWNvbnRyb2xzXCIgZGF0YS1kZWJ1Zy1wYW5lbD5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm92bC1idG5cIiAoY2xpY2spPVwicGF1c2VSZXN1bWUoKVwiPlxyXG4gICAgICAgICAgICAgIHt7IGlzUGxheWluZygpID8gJ+KPuCBQYXVzZScgOiAn4pa2IFBsYXknIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwib3ZsLWJ0blwiIChjbGljayk9XCJyZXN0YXJ0KClcIj7in7MgTmV1c3RhcnQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm92bC1idG4gY2xvc2Utb3ZsXCIgKGNsaWNrKT1cImNsb3NlT3ZlcmxheSgpXCI+4pyVIFNjaGxpZcOfZW48L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgI3JlcGxheUNvbnRhaW5lciBjbGFzcz1cIm92ZXJsYXktc3RhZ2VcIiBkYXRhLWRlYnVnLXBhbmVsPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICBgLFxyXG4gIHN0eWxlczogW2BcclxuICAgIC5yZXBsYXktcGFuZWwge1xyXG4gICAgICBwYWRkaW5nOiAyMHB4IDE2cHg7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgIGdhcDogMTRweDtcclxuICAgIH1cclxuXHJcbiAgICAucmVwbGF5LWVtcHR5IHtcclxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICBwYWRkaW5nOiAyMHB4IDA7XHJcbiAgICAgIGNvbG9yOiAjNjQ3NDhiO1xyXG4gICAgfVxyXG4gICAgLnJlcGxheS1pY29uIHsgZm9udC1zaXplOiAzNnB4OyBtYXJnaW4tYm90dG9tOiA4cHg7IH1cclxuICAgIC5yZXBsYXktZW1wdHkgcCB7IG1hcmdpbjogNHB4IDA7IGZvbnQtc2l6ZTogMTNweDsgfVxyXG4gICAgLmhpbnQgeyBmb250LXNpemU6IDExcHg7IGNvbG9yOiAjNDc1NTY5OyB9XHJcblxyXG4gICAgLnJlcGxheS1pbmZvIHtcclxuICAgICAgYmFja2dyb3VuZDogIzFlMjkzYjtcclxuICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xyXG4gICAgICBwYWRkaW5nOiA4cHggMTJweDtcclxuICAgIH1cclxuICAgIC5ldmVudC1jb3VudCB7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6ICM2ZWU3Yjc7IGZvbnQtd2VpZ2h0OiA2MDA7IH1cclxuXHJcbiAgICAucmVwbGF5LWFjdGlvbnMgeyBkaXNwbGF5OiBmbGV4OyBnYXA6IDhweDsgfVxyXG4gICAgLnJlcGxheS1idG4ge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAjMzM0MTU1O1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgIGNvbG9yOiAjY2JkNWUxO1xyXG4gICAgICBwYWRkaW5nOiA4cHggMTRweDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xyXG4gICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cztcclxuICAgIH1cclxuICAgIC5yZXBsYXktYnRuOmhvdmVyIHsgYmFja2dyb3VuZDogIzQ3NTU2OTsgfVxyXG4gICAgLnJlcGxheS1idG4ucHJpbWFyeSB7IGJhY2tncm91bmQ6ICMxZDRlZDg7IGNvbG9yOiAjZmZmOyB9XHJcbiAgICAucmVwbGF5LWJ0bi5wcmltYXJ5OmhvdmVyIHsgYmFja2dyb3VuZDogIzI1NjNlYjsgfVxyXG5cclxuICAgIC5yZXBsYXktaGludCB7IGZvbnQtc2l6ZTogMTFweDsgY29sb3I6ICM0NzU1Njk7IG1hcmdpbjogMDsgfVxyXG5cclxuICAgIC8qIOKUgOKUgCBGdWxsc2NyZWVuIE92ZXJsYXkg4pSA4pSAICovXHJcbiAgICAucmVwbGF5LW92ZXJsYXkge1xyXG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICAgIGluc2V0OiAwO1xyXG4gICAgICB6LWluZGV4OiA5OTk5NztcclxuICAgICAgYmFja2dyb3VuZDogIzAwMDtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIH1cclxuICAgIC5vdmVybGF5LWhlYWRlciB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgICAgcGFkZGluZzogMTBweCAxNnB4O1xyXG4gICAgICBiYWNrZ3JvdW5kOiAjMGYxNzJhO1xyXG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzFlMjkzYjtcclxuICAgICAgZmxleC1zaHJpbms6IDA7XHJcbiAgICB9XHJcbiAgICAub3ZlcmxheS10aXRsZSB7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDYwMDsgY29sb3I6ICNmMWY1Zjk7IH1cclxuICAgIC5vdmVybGF5LWNvbnRyb2xzIHsgZGlzcGxheTogZmxleDsgZ2FwOiA4cHg7IH1cclxuICAgIC5vdmwtYnRuIHtcclxuICAgICAgYmFja2dyb3VuZDogIzFlMjkzYjtcclxuICAgICAgYm9yZGVyOiAxcHggc29saWQgIzMzNDE1NTtcclxuICAgICAgY29sb3I6ICNjYmQ1ZTE7XHJcbiAgICAgIHBhZGRpbmc6IDVweCAxMnB4O1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTVzO1xyXG4gICAgfVxyXG4gICAgLm92bC1idG46aG92ZXIgeyBiYWNrZ3JvdW5kOiAjMzM0MTU1OyB9XHJcbiAgICAuY2xvc2Utb3ZsIHsgY29sb3I6ICNmY2E1YTU7IH1cclxuICAgIC5jbG9zZS1vdmw6aG92ZXIgeyBiYWNrZ3JvdW5kOiByZ2JhKDIyMCwzOCwzOCwwLjIpOyB9XHJcblxyXG4gICAgLm92ZXJsYXktc3RhZ2Uge1xyXG4gICAgICBmbGV4OiAxO1xyXG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIGJhY2tncm91bmQ6ICNmOGZhZmM7XHJcbiAgICB9XHJcblxyXG4gICAgLyogU2NhbGUgdGhlIHJyd2ViIGlmcmFtZSB0byBmaWxsIGF2YWlsYWJsZSBzcGFjZSAqL1xyXG4gICAgOmhvc3QgOjpuZy1kZWVwIC5yZXBsYXllci13cmFwcGVyIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XHJcbiAgICAgIHRvcDogMCAhaW1wb3J0YW50O1xyXG4gICAgICBsZWZ0OiAwICFpbXBvcnRhbnQ7XHJcbiAgICAgIHRyYW5zZm9ybS1vcmlnaW46IHRvcCBsZWZ0ICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbiAgICA6aG9zdCA6Om5nLWRlZXAgLnJlcGxheWVyLXdyYXBwZXIgaWZyYW1lIHtcclxuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XHJcbiAgICB9XHJcbiAgYF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZXNzaW9uUmVwbGF5Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKCdyZXBsYXlDb250YWluZXInKSByZXBsYXlDb250YWluZXI/OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHJcbiAgcnJ3ZWIgPSBpbmplY3QoUnJ3ZWJSZWNvcmRlclNlcnZpY2UpO1xyXG4gIG92ZXJsYXlPcGVuID0gc2lnbmFsKGZhbHNlKTtcclxuICBpc1BsYXlpbmcgPSBzaWduYWwoZmFsc2UpO1xyXG5cclxuICBhc3luYyBvcGVuT3ZlcmxheSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMub3ZlcmxheU9wZW4uc2V0KHRydWUpO1xyXG4gICAgdGhpcy5pc1BsYXlpbmcuc2V0KGZhbHNlKTtcclxuICAgIC8vIFdhaXQgZm9yIHRoZSBET00gdG8gcmVuZGVyIHRoZSBvdmVybGF5XHJcbiAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgNTApKTtcclxuICAgIGF3YWl0IHRoaXMuc3RhcnRQbGF5KCk7XHJcbiAgfVxyXG5cclxuICBjbG9zZU92ZXJsYXkoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJyd2ViLmRlc3Ryb3lSZXBsYXllcigpO1xyXG4gICAgdGhpcy5vdmVybGF5T3Blbi5zZXQoZmFsc2UpO1xyXG4gICAgdGhpcy5pc1BsYXlpbmcuc2V0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHBhdXNlUmVzdW1lKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKHRoaXMuaXNQbGF5aW5nKCkpIHtcclxuICAgICAgdGhpcy5ycndlYi5wYXVzZVJlcGxheSgpO1xyXG4gICAgICB0aGlzLmlzUGxheWluZy5zZXQoZmFsc2UpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5ycndlYi5yZXN1bWVSZXBsYXkoKTtcclxuICAgICAgdGhpcy5pc1BsYXlpbmcuc2V0KHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgcmVzdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMucnJ3ZWIuZGVzdHJveVJlcGxheWVyKCk7XHJcbiAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgNTApKTtcclxuICAgIGF3YWl0IHRoaXMuc3RhcnRQbGF5KCk7XHJcbiAgfVxyXG5cclxuICBleHBvcnRTZXNzaW9uKCk6IHZvaWQge1xyXG4gICAgdGhpcy5ycndlYi5kb3dubG9hZEV2ZW50cygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBzdGFydFBsYXkoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoIXRoaXMucmVwbGF5Q29udGFpbmVyKSByZXR1cm47XHJcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLnJlcGxheUNvbnRhaW5lci5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgIGF3YWl0IHRoaXMucnJ3ZWIuc3RhcnRSZXBsYXkoY29udGFpbmVyKTtcclxuXHJcbiAgICAvLyBTY2FsZSBpZnJhbWUgdG8gZmlsbCB0aGUgc3RhZ2UgY29udGFpbmVyXHJcbiAgICB0aGlzLnNjYWxlUmVwbGF5ZXIoY29udGFpbmVyKTtcclxuICAgIHRoaXMuaXNQbGF5aW5nLnNldCh0cnVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2NhbGVSZXBsYXllcihjb250YWluZXI6IEhUTUxFbGVtZW50KTogdm9pZCB7XHJcbiAgICAvLyBycndlYiBpbmplY3RzIC5yZXBsYXllci13cmFwcGVyIHdpdGggYW4gaWZyYW1lIHNpemVkIHRvIHRoZSByZWNvcmRlZCB2aWV3cG9ydFxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHdyYXBwZXIgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignLnJlcGxheWVyLXdyYXBwZXInKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgaWYgKCF3cmFwcGVyKSByZXR1cm47XHJcblxyXG4gICAgICBjb25zdCBpZnJhbWUgPSB3cmFwcGVyLnF1ZXJ5U2VsZWN0b3IoJ2lmcmFtZScpIGFzIEhUTUxJRnJhbWVFbGVtZW50O1xyXG4gICAgICBjb25zdCB3cmFwVyA9IGlmcmFtZT8ub2Zmc2V0V2lkdGggIHx8IHdyYXBwZXIub2Zmc2V0V2lkdGggIHx8IDEyODA7XHJcbiAgICAgIGNvbnN0IHdyYXBIID0gaWZyYW1lPy5vZmZzZXRIZWlnaHQgfHwgd3JhcHBlci5vZmZzZXRIZWlnaHQgfHwgNzIwO1xyXG4gICAgICBjb25zdCBzdGFnZVcgPSBjb250YWluZXIub2Zmc2V0V2lkdGg7XHJcbiAgICAgIGNvbnN0IHN0YWdlSCA9IGNvbnRhaW5lci5vZmZzZXRIZWlnaHQ7XHJcblxyXG4gICAgICBpZiAoIXN0YWdlVyB8fCAhc3RhZ2VIIHx8ICF3cmFwVyB8fCAhd3JhcEgpIHJldHVybjtcclxuXHJcbiAgICAgIGNvbnN0IHNjYWxlID0gTWF0aC5taW4oc3RhZ2VXIC8gd3JhcFcsIHN0YWdlSCAvIHdyYXBIKTtcclxuICAgICAgY29uc3Qgb2Zmc2V0WCA9IChzdGFnZVcgLSB3cmFwVyAqIHNjYWxlKSAvIDI7XHJcbiAgICAgIGNvbnN0IG9mZnNldFkgPSAoc3RhZ2VIIC0gd3JhcEggKiBzY2FsZSkgLyAyO1xyXG5cclxuICAgICAgd3JhcHBlci5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlKCR7b2Zmc2V0WH1weCwgJHtvZmZzZXRZfXB4KSBzY2FsZSgke3NjYWxlfSlgO1xyXG4gICAgfSwgMzAwKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5ycndlYi5kZXN0cm95UmVwbGF5ZXIoKTtcclxuICB9XHJcbn1cclxuIl19
@@ -20,86 +20,86 @@ export class SettingsDialogComponent {
20
20
  }
21
21
  }
22
22
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SettingsDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
23
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SettingsDialogComponent, isStandalone: true, selector: "app-settings-dialog", outputs: { close: "close" }, ngImport: i0, template: `
24
- <div class="overlay" data-debug-panel (click)="onOverlayClick($event)">
25
- <div class="dialog" data-debug-panel>
26
- <div class="dialog-header">
27
- <h2>⚙️ Einstellungen</h2>
28
- <button class="close-btn" (click)="close.emit()">✕</button>
29
- </div>
30
-
31
- <div class="dialog-body">
32
- <div class="field-group">
33
- <label>KI Webhook-URL</label>
34
- <input
35
- data-debug-panel
36
- class="field-input"
37
- type="url"
38
- [(ngModel)]="localUrl"
39
- placeholder="https://deine-ki-api.de/generate"
40
- />
41
- <p class="field-hint">
42
- Die aufgezeichnete Session wird als JSON per POST an diese URL gesendet.
43
- Die Antwort wird als Cypress-Test angezeigt.
44
- </p>
45
- </div>
46
-
47
- <div class="info-box">
48
- <p>📦 POST-Body: Die Session als JSON (<code>actions</code>, <code>startUrl</code>, ...)</p>
49
- <p>📄 Erwartete Antwort: Cypress-Test-Code als Plain-Text</p>
50
- <p>⌨️ Shortcuts: <kbd>Ctrl+Shift+D</kbd> Panel &nbsp; <kbd>Ctrl+Shift+R</kbd> Aufnahme</p>
51
- </div>
52
- </div>
53
-
54
- <div class="dialog-footer">
55
- <button class="btn-cancel" (click)="close.emit()">Abbrechen</button>
56
- <button class="btn-save" (click)="save()">💾 Speichern</button>
57
- </div>
58
- </div>
59
- </div>
23
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SettingsDialogComponent, isStandalone: true, selector: "app-settings-dialog", outputs: { close: "close" }, ngImport: i0, template: `
24
+ <div class="overlay" data-debug-panel (click)="onOverlayClick($event)">
25
+ <div class="dialog" data-debug-panel>
26
+ <div class="dialog-header">
27
+ <h2>⚙️ Einstellungen</h2>
28
+ <button class="close-btn" (click)="close.emit()">✕</button>
29
+ </div>
30
+
31
+ <div class="dialog-body">
32
+ <div class="field-group">
33
+ <label>KI Webhook-URL</label>
34
+ <input
35
+ data-debug-panel
36
+ class="field-input"
37
+ type="url"
38
+ [(ngModel)]="localUrl"
39
+ placeholder="https://deine-ki-api.de/generate"
40
+ />
41
+ <p class="field-hint">
42
+ Die aufgezeichnete Session wird als JSON per POST an diese URL gesendet.
43
+ Die Antwort wird als Cypress-Test angezeigt.
44
+ </p>
45
+ </div>
46
+
47
+ <div class="info-box">
48
+ <p>📦 POST-Body: Die Session als JSON (<code>actions</code>, <code>startUrl</code>, ...)</p>
49
+ <p>📄 Erwartete Antwort: Cypress-Test-Code als Plain-Text</p>
50
+ <p>⌨️ Shortcuts: <kbd>Ctrl+Shift+D</kbd> Panel &nbsp; <kbd>Ctrl+Shift+R</kbd> Aufnahme</p>
51
+ </div>
52
+ </div>
53
+
54
+ <div class="dialog-footer">
55
+ <button class="btn-cancel" (click)="close.emit()">Abbrechen</button>
56
+ <button class="btn-save" (click)="save()">💾 Speichern</button>
57
+ </div>
58
+ </div>
59
+ </div>
60
60
  `, isInline: true, styles: [".overlay{position:fixed;inset:0;background:#000000b3;z-index:100000;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.dialog{background:#0f172a;border:1px solid #1e3a5f;border-radius:12px;width:440px;max-width:95vw;display:flex;flex-direction:column;box-shadow:0 25px 60px #0009;overflow:hidden}.dialog-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;background:#1e293b;border-bottom:1px solid #334155}.dialog-header h2{margin:0;font-size:15px;color:#f1f5f9;font-weight:600}.close-btn{background:none;border:none;color:#94a3b8;cursor:pointer;font-size:16px;padding:4px;border-radius:4px}.close-btn:hover{color:#f1f5f9;background:#334155}.dialog-body{padding:18px;display:flex;flex-direction:column;gap:16px}.field-group{display:flex;flex-direction:column;gap:6px}label{font-size:12px;font-weight:600;color:#94a3b8;text-transform:uppercase;letter-spacing:.05em}.field-input{background:#1e293b;border:1px solid #334155;color:#e2e8f0;border-radius:6px;padding:10px 12px;font-size:13px;width:100%;box-sizing:border-box}.field-input:focus{outline:none;border-color:#3b82f6}.field-hint{font-size:11px;color:#64748b;margin:0;line-height:1.5}.info-box{background:#1e293b80;border:1px solid #1e3a5f;border-radius:8px;padding:12px;display:flex;flex-direction:column;gap:6px}.info-box p{margin:0;font-size:11px;color:#64748b}.info-box code{background:#1e293b;color:#34d399;padding:1px 4px;border-radius:3px;font-family:monospace}kbd{background:#1e293b;border:1px solid #334155;color:#94a3b8;padding:1px 5px;border-radius:3px;font-size:10px}.dialog-footer{display:flex;gap:8px;justify-content:flex-end;padding:14px 18px;background:#1e293b;border-top:1px solid #334155}.btn-cancel,.btn-save{padding:8px 20px;border-radius:6px;font-size:13px;font-weight:600;cursor:pointer;border:none;transition:filter .15s}.btn-cancel{background:#334155;color:#94a3b8}.btn-cancel:hover{filter:brightness(1.2)}.btn-save{background:#2563eb;color:#fff}.btn-save:hover{filter:brightness(1.1)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
61
61
  }
62
62
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SettingsDialogComponent, decorators: [{
63
63
  type: Component,
64
- args: [{ selector: 'app-settings-dialog', standalone: true, imports: [CommonModule, FormsModule], template: `
65
- <div class="overlay" data-debug-panel (click)="onOverlayClick($event)">
66
- <div class="dialog" data-debug-panel>
67
- <div class="dialog-header">
68
- <h2>⚙️ Einstellungen</h2>
69
- <button class="close-btn" (click)="close.emit()">✕</button>
70
- </div>
71
-
72
- <div class="dialog-body">
73
- <div class="field-group">
74
- <label>KI Webhook-URL</label>
75
- <input
76
- data-debug-panel
77
- class="field-input"
78
- type="url"
79
- [(ngModel)]="localUrl"
80
- placeholder="https://deine-ki-api.de/generate"
81
- />
82
- <p class="field-hint">
83
- Die aufgezeichnete Session wird als JSON per POST an diese URL gesendet.
84
- Die Antwort wird als Cypress-Test angezeigt.
85
- </p>
86
- </div>
87
-
88
- <div class="info-box">
89
- <p>📦 POST-Body: Die Session als JSON (<code>actions</code>, <code>startUrl</code>, ...)</p>
90
- <p>📄 Erwartete Antwort: Cypress-Test-Code als Plain-Text</p>
91
- <p>⌨️ Shortcuts: <kbd>Ctrl+Shift+D</kbd> Panel &nbsp; <kbd>Ctrl+Shift+R</kbd> Aufnahme</p>
92
- </div>
93
- </div>
94
-
95
- <div class="dialog-footer">
96
- <button class="btn-cancel" (click)="close.emit()">Abbrechen</button>
97
- <button class="btn-save" (click)="save()">💾 Speichern</button>
98
- </div>
99
- </div>
100
- </div>
64
+ args: [{ selector: 'app-settings-dialog', standalone: true, imports: [CommonModule, FormsModule], template: `
65
+ <div class="overlay" data-debug-panel (click)="onOverlayClick($event)">
66
+ <div class="dialog" data-debug-panel>
67
+ <div class="dialog-header">
68
+ <h2>⚙️ Einstellungen</h2>
69
+ <button class="close-btn" (click)="close.emit()">✕</button>
70
+ </div>
71
+
72
+ <div class="dialog-body">
73
+ <div class="field-group">
74
+ <label>KI Webhook-URL</label>
75
+ <input
76
+ data-debug-panel
77
+ class="field-input"
78
+ type="url"
79
+ [(ngModel)]="localUrl"
80
+ placeholder="https://deine-ki-api.de/generate"
81
+ />
82
+ <p class="field-hint">
83
+ Die aufgezeichnete Session wird als JSON per POST an diese URL gesendet.
84
+ Die Antwort wird als Cypress-Test angezeigt.
85
+ </p>
86
+ </div>
87
+
88
+ <div class="info-box">
89
+ <p>📦 POST-Body: Die Session als JSON (<code>actions</code>, <code>startUrl</code>, ...)</p>
90
+ <p>📄 Erwartete Antwort: Cypress-Test-Code als Plain-Text</p>
91
+ <p>⌨️ Shortcuts: <kbd>Ctrl+Shift+D</kbd> Panel &nbsp; <kbd>Ctrl+Shift+R</kbd> Aufnahme</p>
92
+ </div>
93
+ </div>
94
+
95
+ <div class="dialog-footer">
96
+ <button class="btn-cancel" (click)="close.emit()">Abbrechen</button>
97
+ <button class="btn-save" (click)="save()">💾 Speichern</button>
98
+ </div>
99
+ </div>
100
+ </div>
101
101
  `, styles: [".overlay{position:fixed;inset:0;background:#000000b3;z-index:100000;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.dialog{background:#0f172a;border:1px solid #1e3a5f;border-radius:12px;width:440px;max-width:95vw;display:flex;flex-direction:column;box-shadow:0 25px 60px #0009;overflow:hidden}.dialog-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;background:#1e293b;border-bottom:1px solid #334155}.dialog-header h2{margin:0;font-size:15px;color:#f1f5f9;font-weight:600}.close-btn{background:none;border:none;color:#94a3b8;cursor:pointer;font-size:16px;padding:4px;border-radius:4px}.close-btn:hover{color:#f1f5f9;background:#334155}.dialog-body{padding:18px;display:flex;flex-direction:column;gap:16px}.field-group{display:flex;flex-direction:column;gap:6px}label{font-size:12px;font-weight:600;color:#94a3b8;text-transform:uppercase;letter-spacing:.05em}.field-input{background:#1e293b;border:1px solid #334155;color:#e2e8f0;border-radius:6px;padding:10px 12px;font-size:13px;width:100%;box-sizing:border-box}.field-input:focus{outline:none;border-color:#3b82f6}.field-hint{font-size:11px;color:#64748b;margin:0;line-height:1.5}.info-box{background:#1e293b80;border:1px solid #1e3a5f;border-radius:8px;padding:12px;display:flex;flex-direction:column;gap:6px}.info-box p{margin:0;font-size:11px;color:#64748b}.info-box code{background:#1e293b;color:#34d399;padding:1px 4px;border-radius:3px;font-family:monospace}kbd{background:#1e293b;border:1px solid #334155;color:#94a3b8;padding:1px 5px;border-radius:3px;font-size:10px}.dialog-footer{display:flex;gap:8px;justify-content:flex-end;padding:14px 18px;background:#1e293b;border-top:1px solid #334155}.btn-cancel,.btn-save{padding:8px 20px;border-radius:6px;font-size:13px;font-weight:600;cursor:pointer;border:none;transition:filter .15s}.btn-cancel{background:#334155;color:#94a3b8}.btn-cancel:hover{filter:brightness(1.2)}.btn-save{background:#2563eb;color:#fff}.btn-save:hover{filter:brightness(1.1)}\n"] }]
102
102
  }], propDecorators: { close: [{
103
103
  type: Output
104
104
  }] } });
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RlYnVnLXJlY29yZGVyL3NyYy9saWIvc2V0dGluZ3MtZGlhbG9nL3NldHRpbmdzLWRpYWxvZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7QUF5R3RFLE1BQU0sT0FBTyx1QkFBdUI7SUF2R3BDO1FBd0dZLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ25DLE9BQUUsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN4QyxhQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztLQVlqQztJQVZDLElBQUk7UUFDRixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsY0FBYyxDQUFDLENBQWE7UUFDMUIsSUFBSyxDQUFDLENBQUMsTUFBc0IsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDNUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQzsrR0FkVSx1QkFBdUI7bUdBQXZCLHVCQUF1Qiw0R0FuR3hCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNULDJsRUF0Q1MsWUFBWSw4QkFBRSxXQUFXOzs0RkFvR3hCLHVCQUF1QjtrQkF2R25DLFNBQVM7K0JBQ0UscUJBQXFCLGNBQ25CLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUMsWUFDMUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQ1Q7OEJBK0RTLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWlHZW5lcmF0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYWktZ2VuZXJhdG9yLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtc2V0dGluZ3MtZGlhbG9nJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJvdmVybGF5XCIgZGF0YS1kZWJ1Zy1wYW5lbCAoY2xpY2spPVwib25PdmVybGF5Q2xpY2soJGV2ZW50KVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImRpYWxvZ1wiIGRhdGEtZGVidWctcGFuZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctaGVhZGVyXCI+XG4gICAgICAgICAgPGgyPuKame+4jyBFaW5zdGVsbHVuZ2VuPC9oMj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2xvc2UtYnRuXCIgKGNsaWNrKT1cImNsb3NlLmVtaXQoKVwiPuKclTwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWJvZHlcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtZ3JvdXBcIj5cbiAgICAgICAgICAgIDxsYWJlbD5LSSBXZWJob29rLVVSTDwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgZGF0YS1kZWJ1Zy1wYW5lbFxuICAgICAgICAgICAgICBjbGFzcz1cImZpZWxkLWlucHV0XCJcbiAgICAgICAgICAgICAgdHlwZT1cInVybFwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibG9jYWxVcmxcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImh0dHBzOi8vZGVpbmUta2ktYXBpLmRlL2dlbmVyYXRlXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8cCBjbGFzcz1cImZpZWxkLWhpbnRcIj5cbiAgICAgICAgICAgICAgRGllIGF1ZmdlemVpY2huZXRlIFNlc3Npb24gd2lyZCBhbHMgSlNPTiBwZXIgUE9TVCBhbiBkaWVzZSBVUkwgZ2VzZW5kZXQuXG4gICAgICAgICAgICAgIERpZSBBbnR3b3J0IHdpcmQgYWxzIEN5cHJlc3MtVGVzdCBhbmdlemVpZ3QuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1ib3hcIj5cbiAgICAgICAgICAgIDxwPvCfk6YgUE9TVC1Cb2R5OiBEaWUgU2Vzc2lvbiBhbHMgSlNPTiAoPGNvZGU+YWN0aW9uczwvY29kZT4sIDxjb2RlPnN0YXJ0VXJsPC9jb2RlPiwgLi4uKTwvcD5cbiAgICAgICAgICAgIDxwPvCfk4QgRXJ3YXJ0ZXRlIEFudHdvcnQ6IEN5cHJlc3MtVGVzdC1Db2RlIGFscyBQbGFpbi1UZXh0PC9wPlxuICAgICAgICAgICAgPHA+4oyo77iPIFNob3J0Y3V0czogPGtiZD5DdHJsK1NoaWZ0K0Q8L2tiZD4gUGFuZWwgJm5ic3A7IDxrYmQ+Q3RybCtTaGlmdCtSPC9rYmQ+IEF1Zm5haG1lPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWZvb3RlclwiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tY2FuY2VsXCIgKGNsaWNrKT1cImNsb3NlLmVtaXQoKVwiPkFiYnJlY2hlbjwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tc2F2ZVwiIChjbGljayk9XCJzYXZlKClcIj7wn5K+IFNwZWljaGVybjwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtgXG4gICAgLm92ZXJsYXkge1xuICAgICAgcG9zaXRpb246IGZpeGVkOyBpbnNldDogMDsgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjcpO1xuICAgICAgei1pbmRleDogMTAwMDAwOyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig0cHgpO1xuICAgIH1cbiAgICAuZGlhbG9nIHtcbiAgICAgIGJhY2tncm91bmQ6ICMwZjE3MmE7IGJvcmRlcjogMXB4IHNvbGlkICMxZTNhNWY7IGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgICB3aWR0aDogNDQwcHg7IG1heC13aWR0aDogOTV2dzsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIGJveC1zaGFkb3c6IDAgMjVweCA2MHB4IHJnYmEoMCwwLDAsMC42KTsgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9XG4gICAgLmRpYWxvZy1oZWFkZXIge1xuICAgICAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgcGFkZGluZzogMTRweCAxOHB4OyBiYWNrZ3JvdW5kOiAjMWUyOTNiOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzMzNDE1NTtcbiAgICB9XG4gICAgLmRpYWxvZy1oZWFkZXIgaDIgeyBtYXJnaW46IDA7IGZvbnQtc2l6ZTogMTVweDsgY29sb3I6ICNmMWY1Zjk7IGZvbnQtd2VpZ2h0OiA2MDA7IH1cbiAgICAuY2xvc2UtYnRuIHtcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7IGJvcmRlcjogbm9uZTsgY29sb3I6ICM5NGEzYjg7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7IGZvbnQtc2l6ZTogMTZweDsgcGFkZGluZzogNHB4OyBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgfVxuICAgIC5jbG9zZS1idG46aG92ZXIgeyBjb2xvcjogI2YxZjVmOTsgYmFja2dyb3VuZDogIzMzNDE1NTsgfVxuICAgIC5kaWFsb2ctYm9keSB7IHBhZGRpbmc6IDE4cHg7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogMTZweDsgfVxuICAgIC5maWVsZC1ncm91cCB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogNnB4OyB9XG4gICAgbGFiZWwge1xuICAgICAgZm9udC1zaXplOiAxMnB4OyBmb250LXdlaWdodDogNjAwOyBjb2xvcjogIzk0YTNiODtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgfVxuICAgIC5maWVsZC1pbnB1dCB7XG4gICAgICBiYWNrZ3JvdW5kOiAjMWUyOTNiOyBib3JkZXI6IDFweCBzb2xpZCAjMzM0MTU1OyBjb2xvcjogI2UyZThmMDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsgcGFkZGluZzogMTBweCAxMnB4OyBmb250LXNpemU6IDEzcHg7XG4gICAgICB3aWR0aDogMTAwJTsgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB9XG4gICAgLmZpZWxkLWlucHV0OmZvY3VzIHsgb3V0bGluZTogbm9uZTsgYm9yZGVyLWNvbG9yOiAjM2I4MmY2OyB9XG4gICAgLmZpZWxkLWhpbnQgeyBmb250LXNpemU6IDExcHg7IGNvbG9yOiAjNjQ3NDhiOyBtYXJnaW46IDA7IGxpbmUtaGVpZ2h0OiAxLjU7IH1cbiAgICAuaW5mby1ib3gge1xuICAgICAgYmFja2dyb3VuZDogcmdiYSgzMCw0MSw1OSwwLjUpOyBib3JkZXI6IDFweCBzb2xpZCAjMWUzYTVmO1xuICAgICAgYm9yZGVyLXJhZGl1czogOHB4OyBwYWRkaW5nOiAxMnB4OyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDZweDtcbiAgICB9XG4gICAgLmluZm8tYm94IHAgeyBtYXJnaW46IDA7IGZvbnQtc2l6ZTogMTFweDsgY29sb3I6ICM2NDc0OGI7IH1cbiAgICAuaW5mby1ib3ggY29kZSB7XG4gICAgICBiYWNrZ3JvdW5kOiAjMWUyOTNiOyBjb2xvcjogIzM0ZDM5OTsgcGFkZGluZzogMXB4IDRweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcbiAgICB9XG4gICAga2JkIHtcbiAgICAgIGJhY2tncm91bmQ6ICMxZTI5M2I7IGJvcmRlcjogMXB4IHNvbGlkICMzMzQxNTU7IGNvbG9yOiAjOTRhM2I4O1xuICAgICAgcGFkZGluZzogMXB4IDVweDsgYm9yZGVyLXJhZGl1czogM3B4OyBmb250LXNpemU6IDEwcHg7XG4gICAgfVxuICAgIC5kaWFsb2ctZm9vdGVyIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7IGdhcDogOHB4OyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgcGFkZGluZzogMTRweCAxOHB4OyBiYWNrZ3JvdW5kOiAjMWUyOTNiOyBib3JkZXItdG9wOiAxcHggc29saWQgIzMzNDE1NTtcbiAgICB9XG4gICAgLmJ0bi1jYW5jZWwsIC5idG4tc2F2ZSB7XG4gICAgICBwYWRkaW5nOiA4cHggMjBweDsgYm9yZGVyLXJhZGl1czogNnB4OyBmb250LXNpemU6IDEzcHg7XG4gICAgICBmb250LXdlaWdodDogNjAwOyBjdXJzb3I6IHBvaW50ZXI7IGJvcmRlcjogbm9uZTsgdHJhbnNpdGlvbjogZmlsdGVyIDAuMTVzO1xuICAgIH1cbiAgICAuYnRuLWNhbmNlbCB7IGJhY2tncm91bmQ6ICMzMzQxNTU7IGNvbG9yOiAjOTRhM2I4OyB9XG4gICAgLmJ0bi1jYW5jZWw6aG92ZXIgeyBmaWx0ZXI6IGJyaWdodG5lc3MoMS4yKTsgfVxuICAgIC5idG4tc2F2ZSB7IGJhY2tncm91bmQ6ICMyNTYzZWI7IGNvbG9yOiAjZmZmOyB9XG4gICAgLmJ0bi1zYXZlOmhvdmVyIHsgZmlsdGVyOiBicmlnaHRuZXNzKDEuMSk7IH1cbiAgYF0sXG59KVxuZXhwb3J0IGNsYXNzIFNldHRpbmdzRGlhbG9nQ29tcG9uZW50IHtcbiAgQE91dHB1dCgpIGNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBwcml2YXRlIGFpID0gaW5qZWN0KEFpR2VuZXJhdG9yU2VydmljZSk7XG4gIGxvY2FsVXJsID0gdGhpcy5haS53ZWJob29rVXJsKCk7XG5cbiAgc2F2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmFpLnNldFdlYmhvb2tVcmwodGhpcy5sb2NhbFVybC50cmltKCkpO1xuICAgIHRoaXMuY2xvc2UuZW1pdCgpO1xuICB9XG5cbiAgb25PdmVybGF5Q2xpY2soZTogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICgoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsYXNzTGlzdC5jb250YWlucygnb3ZlcmxheScpKSB7XG4gICAgICB0aGlzLmNsb3NlLmVtaXQoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RlYnVnLXJlY29yZGVyL3NyYy9saWIvc2V0dGluZ3MtZGlhbG9nL3NldHRpbmdzLWRpYWxvZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7QUF5R3RFLE1BQU0sT0FBTyx1QkFBdUI7SUF2R3BDO1FBd0dZLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ25DLE9BQUUsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN4QyxhQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztLQVlqQztJQVZDLElBQUk7UUFDRixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsY0FBYyxDQUFDLENBQWE7UUFDMUIsSUFBSyxDQUFDLENBQUMsTUFBc0IsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDNUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQzsrR0FkVSx1QkFBdUI7bUdBQXZCLHVCQUF1Qiw0R0FuR3hCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNULDJsRUF0Q1MsWUFBWSw4QkFBRSxXQUFXOzs0RkFvR3hCLHVCQUF1QjtrQkF2R25DLFNBQVM7K0JBQ0UscUJBQXFCLGNBQ25CLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUMsWUFDMUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQ1Q7OEJBK0RTLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWlHZW5lcmF0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYWktZ2VuZXJhdG9yLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtc2V0dGluZ3MtZGlhbG9nJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlXSxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBjbGFzcz1cIm92ZXJsYXlcIiBkYXRhLWRlYnVnLXBhbmVsIChjbGljayk9XCJvbk92ZXJsYXlDbGljaygkZXZlbnQpXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkaWFsb2dcIiBkYXRhLWRlYnVnLXBhbmVsPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctaGVhZGVyXCI+XHJcbiAgICAgICAgICA8aDI+4pqZ77iPIEVpbnN0ZWxsdW5nZW48L2gyPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNsb3NlLWJ0blwiIChjbGljayk9XCJjbG9zZS5lbWl0KClcIj7inJU8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRpYWxvZy1ib2R5XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtZ3JvdXBcIj5cclxuICAgICAgICAgICAgPGxhYmVsPktJIFdlYmhvb2stVVJMPC9sYWJlbD5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgZGF0YS1kZWJ1Zy1wYW5lbFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZmllbGQtaW5wdXRcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJ1cmxcIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibG9jYWxVcmxcIlxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiaHR0cHM6Ly9kZWluZS1raS1hcGkuZGUvZ2VuZXJhdGVcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImZpZWxkLWhpbnRcIj5cclxuICAgICAgICAgICAgICBEaWUgYXVmZ2V6ZWljaG5ldGUgU2Vzc2lvbiB3aXJkIGFscyBKU09OIHBlciBQT1NUIGFuIGRpZXNlIFVSTCBnZXNlbmRldC5cclxuICAgICAgICAgICAgICBEaWUgQW50d29ydCB3aXJkIGFscyBDeXByZXNzLVRlc3QgYW5nZXplaWd0LlxyXG4gICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1ib3hcIj5cclxuICAgICAgICAgICAgPHA+8J+TpiBQT1NULUJvZHk6IERpZSBTZXNzaW9uIGFscyBKU09OICg8Y29kZT5hY3Rpb25zPC9jb2RlPiwgPGNvZGU+c3RhcnRVcmw8L2NvZGU+LCAuLi4pPC9wPlxyXG4gICAgICAgICAgICA8cD7wn5OEIEVyd2FydGV0ZSBBbnR3b3J0OiBDeXByZXNzLVRlc3QtQ29kZSBhbHMgUGxhaW4tVGV4dDwvcD5cclxuICAgICAgICAgICAgPHA+4oyo77iPIFNob3J0Y3V0czogPGtiZD5DdHJsK1NoaWZ0K0Q8L2tiZD4gUGFuZWwgJm5ic3A7IDxrYmQ+Q3RybCtTaGlmdCtSPC9rYmQ+IEF1Zm5haG1lPC9wPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctZm9vdGVyXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLWNhbmNlbFwiIChjbGljayk9XCJjbG9zZS5lbWl0KClcIj5BYmJyZWNoZW48L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tc2F2ZVwiIChjbGljayk9XCJzYXZlKClcIj7wn5K+IFNwZWljaGVybjwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbYFxyXG4gICAgLm92ZXJsYXkge1xyXG4gICAgICBwb3NpdGlvbjogZml4ZWQ7IGluc2V0OiAwOyBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuNyk7XHJcbiAgICAgIHotaW5kZXg6IDEwMDAwMDsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig0cHgpO1xyXG4gICAgfVxyXG4gICAgLmRpYWxvZyB7XHJcbiAgICAgIGJhY2tncm91bmQ6ICMwZjE3MmE7IGJvcmRlcjogMXB4IHNvbGlkICMxZTNhNWY7IGJvcmRlci1yYWRpdXM6IDEycHg7XHJcbiAgICAgIHdpZHRoOiA0NDBweDsgbWF4LXdpZHRoOiA5NXZ3OyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICBib3gtc2hhZG93OiAwIDI1cHggNjBweCByZ2JhKDAsMCwwLDAuNik7IG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICB9XHJcbiAgICAuZGlhbG9nLWhlYWRlciB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgICAgcGFkZGluZzogMTRweCAxOHB4OyBiYWNrZ3JvdW5kOiAjMWUyOTNiOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzMzNDE1NTtcclxuICAgIH1cclxuICAgIC5kaWFsb2ctaGVhZGVyIGgyIHsgbWFyZ2luOiAwOyBmb250LXNpemU6IDE1cHg7IGNvbG9yOiAjZjFmNWY5OyBmb250LXdlaWdodDogNjAwOyB9XHJcbiAgICAuY2xvc2UtYnRuIHtcclxuICAgICAgYmFja2dyb3VuZDogbm9uZTsgYm9yZGVyOiBub25lOyBjb2xvcjogIzk0YTNiODtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyOyBmb250LXNpemU6IDE2cHg7IHBhZGRpbmc6IDRweDsgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgfVxyXG4gICAgLmNsb3NlLWJ0bjpob3ZlciB7IGNvbG9yOiAjZjFmNWY5OyBiYWNrZ3JvdW5kOiAjMzM0MTU1OyB9XHJcbiAgICAuZGlhbG9nLWJvZHkgeyBwYWRkaW5nOiAxOHB4OyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDE2cHg7IH1cclxuICAgIC5maWVsZC1ncm91cCB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogNnB4OyB9XHJcbiAgICBsYWJlbCB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTJweDsgZm9udC13ZWlnaHQ6IDYwMDsgY29sb3I6ICM5NGEzYjg7XHJcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XHJcbiAgICB9XHJcbiAgICAuZmllbGQtaW5wdXQge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAjMWUyOTNiOyBib3JkZXI6IDFweCBzb2xpZCAjMzM0MTU1OyBjb2xvcjogI2UyZThmMDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogNnB4OyBwYWRkaW5nOiAxMHB4IDEycHg7IGZvbnQtc2l6ZTogMTNweDtcclxuICAgICAgd2lkdGg6IDEwMCU7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICB9XHJcbiAgICAuZmllbGQtaW5wdXQ6Zm9jdXMgeyBvdXRsaW5lOiBub25lOyBib3JkZXItY29sb3I6ICMzYjgyZjY7IH1cclxuICAgIC5maWVsZC1oaW50IHsgZm9udC1zaXplOiAxMXB4OyBjb2xvcjogIzY0NzQ4YjsgbWFyZ2luOiAwOyBsaW5lLWhlaWdodDogMS41OyB9XHJcbiAgICAuaW5mby1ib3gge1xyXG4gICAgICBiYWNrZ3JvdW5kOiByZ2JhKDMwLDQxLDU5LDAuNSk7IGJvcmRlcjogMXB4IHNvbGlkICMxZTNhNWY7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsgcGFkZGluZzogMTJweDsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiA2cHg7XHJcbiAgICB9XHJcbiAgICAuaW5mby1ib3ggcCB7IG1hcmdpbjogMDsgZm9udC1zaXplOiAxMXB4OyBjb2xvcjogIzY0NzQ4YjsgfVxyXG4gICAgLmluZm8tYm94IGNvZGUge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAjMWUyOTNiOyBjb2xvcjogIzM0ZDM5OTsgcGFkZGluZzogMXB4IDRweDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogM3B4OyBmb250LWZhbWlseTogbW9ub3NwYWNlO1xyXG4gICAgfVxyXG4gICAga2JkIHtcclxuICAgICAgYmFja2dyb3VuZDogIzFlMjkzYjsgYm9yZGVyOiAxcHggc29saWQgIzMzNDE1NTsgY29sb3I6ICM5NGEzYjg7XHJcbiAgICAgIHBhZGRpbmc6IDFweCA1cHg7IGJvcmRlci1yYWRpdXM6IDNweDsgZm9udC1zaXplOiAxMHB4O1xyXG4gICAgfVxyXG4gICAgLmRpYWxvZy1mb290ZXIge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4OyBnYXA6IDhweDsganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcclxuICAgICAgcGFkZGluZzogMTRweCAxOHB4OyBiYWNrZ3JvdW5kOiAjMWUyOTNiOyBib3JkZXItdG9wOiAxcHggc29saWQgIzMzNDE1NTtcclxuICAgIH1cclxuICAgIC5idG4tY2FuY2VsLCAuYnRuLXNhdmUge1xyXG4gICAgICBwYWRkaW5nOiA4cHggMjBweDsgYm9yZGVyLXJhZGl1czogNnB4OyBmb250LXNpemU6IDEzcHg7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7IGN1cnNvcjogcG9pbnRlcjsgYm9yZGVyOiBub25lOyB0cmFuc2l0aW9uOiBmaWx0ZXIgMC4xNXM7XHJcbiAgICB9XHJcbiAgICAuYnRuLWNhbmNlbCB7IGJhY2tncm91bmQ6ICMzMzQxNTU7IGNvbG9yOiAjOTRhM2I4OyB9XHJcbiAgICAuYnRuLWNhbmNlbDpob3ZlciB7IGZpbHRlcjogYnJpZ2h0bmVzcygxLjIpOyB9XHJcbiAgICAuYnRuLXNhdmUgeyBiYWNrZ3JvdW5kOiAjMjU2M2ViOyBjb2xvcjogI2ZmZjsgfVxyXG4gICAgLmJ0bi1zYXZlOmhvdmVyIHsgZmlsdGVyOiBicmlnaHRuZXNzKDEuMSk7IH1cclxuICBgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNldHRpbmdzRGlhbG9nQ29tcG9uZW50IHtcclxuICBAT3V0cHV0KCkgY2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSBhaSA9IGluamVjdChBaUdlbmVyYXRvclNlcnZpY2UpO1xyXG4gIGxvY2FsVXJsID0gdGhpcy5haS53ZWJob29rVXJsKCk7XHJcblxyXG4gIHNhdmUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFpLnNldFdlYmhvb2tVcmwodGhpcy5sb2NhbFVybC50cmltKCkpO1xyXG4gICAgdGhpcy5jbG9zZS5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvbk92ZXJsYXlDbGljayhlOiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAoKGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbGFzc0xpc3QuY29udGFpbnMoJ292ZXJsYXknKSkge1xyXG4gICAgICB0aGlzLmNsb3NlLmVtaXQoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19