@ngutil/layout 0.0.3-dev.9 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,14 @@
1
- import { Component, ElementRef, inject, Input, Output } from "@angular/core";
2
- import { BehaviorSubject, combineLatest, map, of, shareReplay, switchMap } from "rxjs";
1
+ import { Component, ElementRef, inject, Input, Output, ViewChild } from "@angular/core";
2
+ import { BehaviorSubject, combineLatest, map, of, ReplaySubject, shareReplay, switchMap } from "rxjs";
3
3
  import { coerceBoolAttr, Destructible, FastDOM, NumberWithUnit } from "@ngutil/common";
4
+ import { DimensionWatcher } from "@ngutil/style";
4
5
  import { L9Range } from "../l9/range";
5
- import { watchDimension } from "../util";
6
6
  import * as i0 from "@angular/core";
7
7
  const DEFAULT_POSITION = L9Range.coerce("left");
8
+ const HIDDEN_SIZE = new NumberWithUnit(0, "px");
9
+ const AUTO_SIZE = NumberWithUnit.coerce("auto");
8
10
  export class DockingPanelComponent extends Destructible {
11
+ #dimWatcher;
9
12
  set positionInput(val) {
10
13
  const coerced = L9Range.coerce(val);
11
14
  if (coerced.orient === "rect") {
@@ -48,19 +51,31 @@ export class DockingPanelComponent extends Destructible {
48
51
  }
49
52
  #minimizable;
50
53
  #minimizableAuto;
54
+ set backdrop(val) {
55
+ this.#backdrop = coerceBoolAttr(val);
56
+ }
57
+ get backdrop() {
58
+ return this.#backdrop;
59
+ }
60
+ #backdrop;
61
+ #contentSize;
51
62
  #autoSize;
63
+ // TODO: better animation handling in min -> hidden -> min -> full
52
64
  constructor() {
53
65
  super();
54
66
  this.el = inject((ElementRef));
67
+ this.#dimWatcher = inject(DimensionWatcher);
55
68
  this.position = new BehaviorSubject(DEFAULT_POSITION);
56
- this.state = new BehaviorSubject("invisible");
57
- this.mode = new BehaviorSubject("overlay");
58
- this.#fullSize = new BehaviorSubject(NumberWithUnit.coerce(0));
59
- this.#miniSize = new BehaviorSubject(NumberWithUnit.coerce(0));
69
+ this.state = new BehaviorSubject("full");
70
+ this.mode = new BehaviorSubject("rigid");
71
+ this.#fullSize = new BehaviorSubject(AUTO_SIZE);
72
+ this.#miniSize = new BehaviorSubject(HIDDEN_SIZE);
60
73
  this.#minimizable = false;
61
74
  this.#minimizableAuto = true;
75
+ this.#backdrop = false;
76
+ this.#contentSize = new ReplaySubject(1);
62
77
  this.#autoSize = combineLatest({
63
- dim: watchDimension(this.el.nativeElement, "scroll-box"),
78
+ dim: this.#contentSize,
64
79
  pos: this.position
65
80
  }).pipe(map(({ dim, pos }) => {
66
81
  if (pos.orient === "horizontal") {
@@ -91,7 +106,8 @@ export class DockingPanelComponent extends Destructible {
91
106
  state: this.state,
92
107
  mode: this.mode,
93
108
  fullSize: this.fullSize,
94
- miniSize: this.miniSize
109
+ miniSize: this.miniSize,
110
+ contentSize: this.#contentSize
95
111
  });
96
112
  this.d.sub(this.changes).subscribe(changes => {
97
113
  if (this.#minimizableAuto) {
@@ -103,13 +119,51 @@ export class DockingPanelComponent extends Destructible {
103
119
  mode: changes.mode,
104
120
  side: changes.position.orient === "horizontal" ? changes.position.cells[0].v : changes.position.cells[0].h
105
121
  });
122
+ const isHorizontal = changes.position.orient === "horizontal";
123
+ let w = null;
124
+ let h = null;
125
+ // TODO: when change state from mini -> hidden, currently wrong behavior
126
+ // the good behavior is to not gain fullSize ang go to hidden
127
+ if (changes.state === "mini") {
128
+ if (isHorizontal) {
129
+ h = changes.miniSize.unit === "auto" ? changes.contentSize.height : changes.miniSize;
130
+ }
131
+ else {
132
+ w = changes.miniSize.unit === "auto" ? changes.contentSize.width : changes.miniSize;
133
+ }
134
+ }
135
+ else {
136
+ if (isHorizontal) {
137
+ h = changes.fullSize.unit === "auto" ? changes.contentSize.height : changes.fullSize;
138
+ }
139
+ else {
140
+ w = changes.fullSize.unit === "auto" ? changes.contentSize.width : changes.fullSize;
141
+ }
142
+ }
143
+ FastDOM.setStyle(this.el.nativeElement, {
144
+ "--docking-panel-w": w != null ? `${w}` : null,
145
+ "--docking-panel-h": h != null ? `${h}` : null,
146
+ "--docking-panel-content-w": changes.contentSize.width,
147
+ "--docking-panel-content-h": changes.contentSize.height
148
+ }, () => FastDOM.setAttributes(this.el.nativeElement, { animate: "" }));
106
149
  });
107
150
  }
151
+ ngAfterViewInit() {
152
+ this.d
153
+ .sub(this.#dimWatcher.watch(this.content, "scroll-box"))
154
+ .pipe(map(dim => {
155
+ return {
156
+ width: new NumberWithUnit(dim.width, "px"),
157
+ height: new NumberWithUnit(dim.height, "px")
158
+ };
159
+ }))
160
+ .subscribe(this.#contentSize);
161
+ }
108
162
  open() {
109
163
  this.state.next("full");
110
164
  }
111
165
  close() {
112
- this.state.next("invisible");
166
+ this.state.next("hidden");
113
167
  }
114
168
  minimize() {
115
169
  if (this.minimizable) {
@@ -117,12 +171,23 @@ export class DockingPanelComponent extends Destructible {
117
171
  }
118
172
  }
119
173
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DockingPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
120
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: DockingPanelComponent, isStandalone: true, selector: "nu-docking-panel", inputs: { positionInput: ["position", "positionInput"], stateInput: ["state", "stateInput"], modeInput: ["mode", "modeInput"], fullSizeInput: ["fullSize", "fullSizeInput"], miniSizeInput: ["miniSize", "miniSizeInput"], minimizable: "minimizable" }, outputs: { state: "stateChanges" }, exportAs: ["nuDockingPanel"], usesInheritance: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{---docking-panel-t: var(--docking-panel-t, auto);---docking-panel-r: var(--docking-panel-r, auto);---docking-panel-b: var(--docking-panel-b, auto);---docking-panel-l: var(--docking-panel-l, auto);---docking-panel-w: var(--docking-panel-w, auto);---docking-panel-h: var(--docking-panel-h, auto);---docking-panel-real-w: var(--docking-panel-real-w, var(---docking-panel-w));---docking-panel-real-h: var(--docking-panel-real-h, var(---docking-panel-h));display:flex;flex-flow:column nowrap;align-items:stretch;position:absolute;box-sizing:border-box;top:var(---docking-panel-t);right:var(---docking-panel-r);bottom:var(---docking-panel-b);left:var(---docking-panel-l);width:var(---docking-panel-w);height:var(---docking-panel-h);transition:transform var(---docking-layout-anim-duration) var(---docking-layout-anim-ease),width var(---docking-layout-anim-duration) var(---docking-layout-anim-ease),height var(---docking-layout-anim-duration) var(---docking-layout-anim-ease)}:host[side=top],:host[side=left]{---docking-panel-t-hide: -100%;---docking-panel-t-visible: 0%}:host[side=bottom],:host[side=right]{---docking-panel-t-hide: 100%;---docking-panel-t-visible: 0%}:host[state=invisible][orient=horizontal]{transform:translateY(var(---docking-panel-t-hide))}:host[state=invisible][orient=vertical]{transform:translate(var(---docking-panel-t-hide))}:host:not([state=invisible])[orient=horizontal]{transform:translateY(var(---docking-panel-t-visible))}:host:not([state=invisible])[orient=vertical]{transform:translate(var(---docking-panel-t-visible))}\n"] }); }
174
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: DockingPanelComponent, isStandalone: true, selector: "nu-docking-panel", inputs: { positionInput: ["position", "positionInput"], stateInput: ["state", "stateInput"], modeInput: ["mode", "modeInput"], fullSizeInput: ["fullSize", "fullSizeInput"], miniSizeInput: ["miniSize", "miniSizeInput"], minimizable: "minimizable", backdrop: "backdrop" }, outputs: { state: "stateChanges" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, read: ElementRef, static: true }], exportAs: ["nuDockingPanel"], usesInheritance: true, ngImport: i0, template: `
175
+ <div class="content" #content>
176
+ <ng-content></ng-content>
177
+ </div>
178
+ `, isInline: true, styles: [":host{---docking-panel-t: var(--docking-panel-t, auto);---docking-panel-r: var(--docking-panel-r, auto);---docking-panel-b: var(--docking-panel-b, auto);---docking-panel-l: var(--docking-panel-l, auto);---docking-panel-w: var(--docking-panel-w, auto);---docking-panel-h: var(--docking-panel-h, auto);---docking-panel-content-w: var(--docking-panel-content-w, var(---docking-panel-w));---docking-panel-content-g: var(--docking-panel-content-g, var(---docking-panel-h));display:flex;flex-flow:column nowrap;align-items:stretch;position:absolute;box-sizing:border-box;overflow:hidden;top:var(---docking-panel-t);right:var(---docking-panel-r);bottom:var(---docking-panel-b);left:var(---docking-panel-l);width:var(---docking-panel-w);height:var(---docking-panel-h)}:host[animate]{transition:transform var(---docking-layout-anim-duration) var(---docking-layout-anim-ease),width var(---docking-layout-anim-duration) var(---docking-layout-anim-ease),height var(---docking-layout-anim-duration) var(---docking-layout-anim-ease)}:host[side=top],:host[side=left]{---docking-panel-t-hide: -100%;---docking-panel-t-visible: 0%}:host[side=bottom],:host[side=right]{---docking-panel-t-hide: 100%;---docking-panel-t-visible: 0%}:host[state=hidden]{animation:var(---docking-layout-anim-duration) var(---docking-layout-anim-ease) hide;animation-fill-mode:forwards}:host[state=hidden][orient=horizontal]{transform:translateY(var(---docking-panel-t-hide))}:host[state=hidden][orient=vertical]{transform:translate(var(---docking-panel-t-hide))}:host:not([state=hidden]){visibility:visible}:host:not([state=hidden])[orient=horizontal]{transform:translateY(var(---docking-panel-t-visible))}:host:not([state=hidden])[orient=vertical]{transform:translate(var(---docking-panel-t-visible))}:host .content{display:flex;flex-direction:column;align-items:stretch}:host[orient=horizontal] .content{width:100%;min-width:100%;max-width:100%}:host[orient=vertical] .content{height:100%;min-height:100%;max-height:100%}@keyframes hide{99%{visibility:visible}to{visibility:hidden}}\n"] }); }
121
179
  }
122
180
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DockingPanelComponent, decorators: [{
123
181
  type: Component,
124
- args: [{ standalone: true, selector: "nu-docking-panel", exportAs: "nuDockingPanel", template: `<ng-content></ng-content>`, styles: [":host{---docking-panel-t: var(--docking-panel-t, auto);---docking-panel-r: var(--docking-panel-r, auto);---docking-panel-b: var(--docking-panel-b, auto);---docking-panel-l: var(--docking-panel-l, auto);---docking-panel-w: var(--docking-panel-w, auto);---docking-panel-h: var(--docking-panel-h, auto);---docking-panel-real-w: var(--docking-panel-real-w, var(---docking-panel-w));---docking-panel-real-h: var(--docking-panel-real-h, var(---docking-panel-h));display:flex;flex-flow:column nowrap;align-items:stretch;position:absolute;box-sizing:border-box;top:var(---docking-panel-t);right:var(---docking-panel-r);bottom:var(---docking-panel-b);left:var(---docking-panel-l);width:var(---docking-panel-w);height:var(---docking-panel-h);transition:transform var(---docking-layout-anim-duration) var(---docking-layout-anim-ease),width var(---docking-layout-anim-duration) var(---docking-layout-anim-ease),height var(---docking-layout-anim-duration) var(---docking-layout-anim-ease)}:host[side=top],:host[side=left]{---docking-panel-t-hide: -100%;---docking-panel-t-visible: 0%}:host[side=bottom],:host[side=right]{---docking-panel-t-hide: 100%;---docking-panel-t-visible: 0%}:host[state=invisible][orient=horizontal]{transform:translateY(var(---docking-panel-t-hide))}:host[state=invisible][orient=vertical]{transform:translate(var(---docking-panel-t-hide))}:host:not([state=invisible])[orient=horizontal]{transform:translateY(var(---docking-panel-t-visible))}:host:not([state=invisible])[orient=vertical]{transform:translate(var(---docking-panel-t-visible))}\n"] }]
125
- }], ctorParameters: () => [], propDecorators: { positionInput: [{
182
+ args: [{ standalone: true, selector: "nu-docking-panel", exportAs: "nuDockingPanel", template: `
183
+ <div class="content" #content>
184
+ <ng-content></ng-content>
185
+ </div>
186
+ `, styles: [":host{---docking-panel-t: var(--docking-panel-t, auto);---docking-panel-r: var(--docking-panel-r, auto);---docking-panel-b: var(--docking-panel-b, auto);---docking-panel-l: var(--docking-panel-l, auto);---docking-panel-w: var(--docking-panel-w, auto);---docking-panel-h: var(--docking-panel-h, auto);---docking-panel-content-w: var(--docking-panel-content-w, var(---docking-panel-w));---docking-panel-content-g: var(--docking-panel-content-g, var(---docking-panel-h));display:flex;flex-flow:column nowrap;align-items:stretch;position:absolute;box-sizing:border-box;overflow:hidden;top:var(---docking-panel-t);right:var(---docking-panel-r);bottom:var(---docking-panel-b);left:var(---docking-panel-l);width:var(---docking-panel-w);height:var(---docking-panel-h)}:host[animate]{transition:transform var(---docking-layout-anim-duration) var(---docking-layout-anim-ease),width var(---docking-layout-anim-duration) var(---docking-layout-anim-ease),height var(---docking-layout-anim-duration) var(---docking-layout-anim-ease)}:host[side=top],:host[side=left]{---docking-panel-t-hide: -100%;---docking-panel-t-visible: 0%}:host[side=bottom],:host[side=right]{---docking-panel-t-hide: 100%;---docking-panel-t-visible: 0%}:host[state=hidden]{animation:var(---docking-layout-anim-duration) var(---docking-layout-anim-ease) hide;animation-fill-mode:forwards}:host[state=hidden][orient=horizontal]{transform:translateY(var(---docking-panel-t-hide))}:host[state=hidden][orient=vertical]{transform:translate(var(---docking-panel-t-hide))}:host:not([state=hidden]){visibility:visible}:host:not([state=hidden])[orient=horizontal]{transform:translateY(var(---docking-panel-t-visible))}:host:not([state=hidden])[orient=vertical]{transform:translate(var(---docking-panel-t-visible))}:host .content{display:flex;flex-direction:column;align-items:stretch}:host[orient=horizontal] .content{width:100%;min-width:100%;max-width:100%}:host[orient=vertical] .content{height:100%;min-height:100%;max-height:100%}@keyframes hide{99%{visibility:visible}to{visibility:hidden}}\n"] }]
187
+ }], ctorParameters: () => [], propDecorators: { content: [{
188
+ type: ViewChild,
189
+ args: ["content", { read: ElementRef, static: true }]
190
+ }], positionInput: [{
126
191
  type: Input,
127
192
  args: ["position"]
128
193
  }], stateInput: [{
@@ -143,5 +208,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
143
208
  }], minimizable: [{
144
209
  type: Input,
145
210
  args: ["minimizable"]
211
+ }], backdrop: [{
212
+ type: Input,
213
+ args: ["backdrop"]
146
214
  }] } });
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2luZy1wYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL2RvY2tpbmcvZG9ja2luZy1wYW5lbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBRWxHLE9BQU8sRUFFSCxjQUFjLEVBQ2QsWUFBWSxFQUNaLE9BQU8sRUFDUCxjQUFjLEVBRWpCLE1BQU0sZ0JBQWdCLENBQUE7QUFFdkIsT0FBTyxFQUFFLE9BQU8sRUFBZSxNQUFNLGFBQWEsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFBOztBQUt4QyxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7QUFTL0MsTUFBTSxPQUFPLHFCQUFzQixTQUFRLFlBQVk7SUFHbkQsSUFDSSxhQUFhLENBQUMsR0FBMEI7UUFDeEMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNuQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsR0FBRyxFQUFFLENBQUMsQ0FBQTtRQUNyRCxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8s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O2dCQWNiLFVBQVU7c0JBRGIsS0FBSzt1QkFBQyxPQUFPO2dCQU9MLEtBQUs7c0JBRGIsTUFBTTt1QkFBQyxjQUFjO2dCQUlsQixTQUFTO3NCQURaLEtBQUs7dUJBQUMsTUFBTTtnQkFTVCxhQUFhO3NCQURoQixLQUFLO3VCQUFDLFVBQVU7Z0JBVWIsYUFBYTtzQkFEaEIsS0FBSzt1QkFBQyxVQUFVO2dCQVViLFdBQVc7c0JBRGQsS0FBSzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBpbmplY3QsIElucHV0LCBPdXRwdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCB9IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHtcbiAgICBCb29sZWFuSW5wdXQsXG4gICAgY29lcmNlQm9vbEF0dHIsXG4gICAgRGVzdHJ1Y3RpYmxlLFxuICAgIEZhc3RET00sXG4gICAgTnVtYmVyV2l0aFVuaXQsXG4gICAgTnVtYmVyV2l0aFVuaXRJbnB1dFxufSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuXG5pbXBvcnQgeyBMOVJhbmdlLCBMOVJhbmdlTmFtZSB9IGZyb20gXCIuLi9sOS9yYW5nZVwiXG5pbXBvcnQgeyB3YXRjaERpbWVuc2lvbiB9IGZyb20gXCIuLi91dGlsXCJcblxuZXhwb3J0IHR5cGUgRG9ja2luZ1BhbmVsU3RhdGUgPSBcImZ1bGxcIiB8IFwibWluaVwiIHwgXCJpbnZpc2libGVcIlxuZXhwb3J0IHR5cGUgRG9ja2luZ1BhbmVsTW9kZSA9IFwib3ZlcmxheVwiIHwgXCJlbWJlZGRlZFwiXG5cbmNvbnN0IERFRkFVTFRfUE9TSVRJT04gPSBMOVJhbmdlLmNvZXJjZShcImxlZnRcIilcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogXCJudS1kb2NraW5nLXBhbmVsXCIsXG4gICAgZXhwb3J0QXM6IFwibnVEb2NraW5nUGFuZWxcIixcbiAgICBzdHlsZVVybDogXCIuL2RvY2tpbmctcGFuZWwuY29tcG9uZW50LnNjc3NcIixcbiAgICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gXG59KVxuZXhwb3J0IGNsYXNzIERvY2tpbmdQYW5lbENvbXBvbmVudCBleHRlbmRzIERlc3RydWN0aWJsZSB7XG4gICAgcmVhZG9ubHkgZWwgPSBpbmplY3QoRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pXG5cbiAgICBASW5wdXQoXCJwb3NpdGlvblwiKVxuICAgIHNldCBwb3NpdGlvbklucHV0KHZhbDogTDlSYW5nZSB8IEw5UmFuZ2VOYW1lKSB7XG4gICAgICAgIGNvbnN0IGNvZXJjZWQgPSBMOVJhbmdlLmNvZXJjZSh2YWwpXG4gICAgICAgIGlmIChjb2VyY2VkLm9yaWVudCA9PT0gXCJyZWN0XCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwb3NpdGlvbiB2YWx1ZTogJHt2YWx9YClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5wb3NpdGlvbi52YWx1ZS5pc0VxKGNvZXJjZWQpKSB7XG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uLm5leHQoY29lcmNlZClcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWFkb25seSBwb3NpdGlvbiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TDlSYW5nZT4oREVGQVVMVF9QT1NJVElPTilcblxuICAgIEBJbnB1dChcInN0YXRlXCIpXG4gICAgc2V0IHN0YXRlSW5wdXQodmFsOiBEb2NraW5nUGFuZWxTdGF0ZSkge1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS52YWx1ZSAhPT0gdmFsKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLm5leHQodmFsKVxuICAgICAgICB9XG4gICAgfVxuICAgIEBPdXRwdXQoXCJzdGF0ZUNoYW5nZXNcIilcbiAgICByZWFkb25seSBzdGF0ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RG9ja2luZ1BhbmVsU3RhdGU+KFwiaW52aXNpYmxlXCIpXG5cbiAgICBASW5wdXQoXCJtb2RlXCIpXG4gICAgc2V0IG1vZGVJbnB1dCh2YWw6IERvY2tpbmdQYW5lbE1vZGUpIHtcbiAgICAgICAgaWYgKHRoaXMubW9kZS52YWx1ZSAhPT0gdmFsKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGUubmV4dCh2YWwpXG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVhZG9ubHkgbW9kZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RG9ja2luZ1BhbmVsTW9kZT4oXCJvdmVybGF5XCIpXG5cbiAgICBASW5wdXQoXCJmdWxsU2l6ZVwiKVxuICAgIHNldCBmdWxsU2l6ZUlucHV0KHZhbDogTnVtYmVyV2l0aFVuaXRJbnB1dCkge1xuICAgICAgICBjb25zdCBjb2VyY2VkID0gTnVtYmVyV2l0aFVuaXQuY29lcmNlKHZhbCwgXCJweFwiKVxuICAgICAgICBpZiAodGhpcy4jZnVsbFNpemUudmFsdWUgIT09IGNvZXJjZWQpIHtcbiAgICAgICAgICAgIHRoaXMuI2Z1bGxTaXplLm5leHQoY29lcmNlZClcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWFkb25seSAjZnVsbFNpemUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE51bWJlcldpdGhVbml0PihOdW1iZXJXaXRoVW5pdC5jb2VyY2UoMCkpXG5cbiAgICBASW5wdXQoXCJtaW5pU2l6ZVwiKVxuICAgIHNldCBtaW5pU2l6ZUlucHV0KHZhbDogTnVtYmVyV2l0aFVuaXRJbnB1dCkge1xuICAgICAgICBjb25zdCBjb2VyY2VkID0gTnVtYmVyV2l0aFVuaXQuY29lcmNlKHZhbCwgXCJweFwiKVxuICAgICAgICBpZiAodGhpcy4jbWluaVNpemUudmFsdWUgIT09IGNvZXJjZWQpIHtcbiAgICAgICAgICAgIHRoaXMuI21pbmlTaXplLm5leHQoY29lcmNlZClcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWFkb25seSAjbWluaVNpemUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE51bWJlcldpdGhVbml0PihOdW1iZXJXaXRoVW5pdC5jb2VyY2UoMCkpXG5cbiAgICBASW5wdXQoXCJtaW5pbWl6YWJsZVwiKVxuICAgIHNldCBtaW5pbWl6YWJsZSh2YWw6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLiNtaW5pbWl6YWJsZSA9IGNvZXJjZUJvb2xBdHRyKHZhbClcbiAgICAgICAgdGhpcy4jbWluaW1pemFibGVBdXRvID0gZmFsc2VcbiAgICB9XG4gICAgZ2V0IG1pbmltaXphYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy4jbWluaW1pemFibGVcbiAgICB9XG4gICAgI21pbmltaXphYmxlOiBib29sZWFuID0gZmFsc2VcbiAgICAjbWluaW1pemFibGVBdXRvOiBib29sZWFuID0gdHJ1ZVxuXG4gICAgcmVhZG9ubHkgI2F1dG9TaXplID0gY29tYmluZUxhdGVzdCh7XG4gICAgICAgIGRpbTogd2F0Y2hEaW1lbnNpb24odGhpcy5lbC5uYXRpdmVFbGVtZW50LCBcInNjcm9sbC1ib3hcIiksXG4gICAgICAgIHBvczogdGhpcy5wb3NpdGlvblxuICAgIH0pLnBpcGUoXG4gICAgICAgIG1hcCgoeyBkaW0sIHBvcyB9KSA9PiB7XG4gICAgICAgICAgICBpZiAocG9zLm9yaWVudCA9PT0gXCJob3Jpem9udGFsXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGltLmhlaWdodFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGltLndpZHRoXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgIClcblxuICAgIHJlYWRvbmx5IGZ1bGxTaXplID0gdGhpcy4jZnVsbFNpemUucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKHNpemUgPT4ge1xuICAgICAgICAgICAgaWYgKHNpemUudW5pdCA9PT0gXCJhdXRvXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4jYXV0b1NpemVcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKHNpemUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgIClcblxuICAgIHJlYWRvbmx5IG1pbmlTaXplID0gdGhpcy4jbWluaVNpemUucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKHNpemUgPT4ge1xuICAgICAgICAgICAgaWYgKHNpemUudW5pdCA9PT0gXCJhdXRvXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4jYXV0b1NpemVcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKHNpemUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgIClcblxuICAgIHJlYWRvbmx5IGNoYW5nZXMgPSBjb21iaW5lTGF0ZXN0KHtcbiAgICAgICAgcG9zaXRpb246IHRoaXMucG9zaXRpb24sXG4gICAgICAgIHN0YXRlOiB0aGlzLnN0YXRlLFxuICAgICAgICBtb2RlOiB0aGlzLm1vZGUsXG4gICAgICAgIGZ1bGxTaXplOiB0aGlzLmZ1bGxTaXplLFxuICAgICAgICBtaW5pU2l6ZTogdGhpcy5taW5pU2l6ZVxuICAgIH0pXG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKVxuXG4gICAgICAgIHRoaXMuZC5zdWIodGhpcy5jaGFuZ2VzKS5zdWJzY3JpYmUoY2hhbmdlcyA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy4jbWluaW1pemFibGVBdXRvKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4jbWluaW1pemFibGUgPSB0aGlzLiNtaW5pU2l6ZS52YWx1ZS52YWx1ZSAhPT0gMFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBGYXN0RE9NLnNldEF0dHJpYnV0ZXModGhpcy5lbC5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgICAgICAgICAgc3RhdGU6IGNoYW5nZXMuc3RhdGUsXG4gICAgICAgICAgICAgICAgb3JpZW50OiBjaGFuZ2VzLnBvc2l0aW9uLm9yaWVudCxcbiAgICAgICAgICAgICAgICBtb2RlOiBjaGFuZ2VzLm1vZGUsXG4gICAgICAgICAgICAgICAgc2lkZTpcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlcy5wb3NpdGlvbi5vcmllbnQgPT09IFwiaG9yaXpvbnRhbFwiID8gY2hhbmdlcy5wb3NpdGlvbi5jZWxsc1swXS52IDogY2hhbmdlcy5wb3NpdGlvbi5jZWxsc1swXS5oXG4gICAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIG9wZW4oKSB7XG4gICAgICAgIHRoaXMuc3RhdGUubmV4dChcImZ1bGxcIilcbiAgICB9XG5cbiAgICBjbG9zZSgpIHtcbiAgICAgICAgdGhpcy5zdGF0ZS5uZXh0KFwiaW52aXNpYmxlXCIpXG4gICAgfVxuXG4gICAgbWluaW1pemUoKSB7XG4gICAgICAgIGlmICh0aGlzLm1pbmltaXphYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLm5leHQoXCJtaW5pXCIpXG4gICAgICAgIH1cbiAgICB9XG59XG5cbnR5cGUgQ2hhbmdlc09ic2VydmFibGUgPSB0eXBlb2YgRG9ja2luZ1BhbmVsQ29tcG9uZW50LnByb3RvdHlwZS5jaGFuZ2VzXG5leHBvcnQgdHlwZSBEb2NraW5nUGFuZWxDaGFuZ2VzID0gQ2hhbmdlc09ic2VydmFibGUgZXh0ZW5kcyBPYnNlcnZhYmxlPGluZmVyIFQ+ID8gVCA6IG5ldmVyXG4iXX0=
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2luZy1wYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL2RvY2tpbmcvZG9ja2luZy1wYW5lbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUV0RyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBRWpILE9BQU8sRUFFSCxjQUFjLEVBQ2QsWUFBWSxFQUNaLE9BQU8sRUFDUCxjQUFjLEVBRWpCLE1BQU0sZ0JBQWdCLENBQUE7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRWhELE9BQU8sRUFBRSxPQUFPLEVBQWUsTUFBTSxhQUFhLENBQUE7O0FBS2xELE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUMvQyxNQUFNLFdBQVcsR0FBRyxJQUFJLGNBQWMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7QUFDL0MsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQWEvQyxNQUFNLE9BQU8scUJBQXNCLFNBQVEsWUFBWTtJQUUxQyxXQUFXLENBQTJCO0lBSS9DLElBQ0ksYUFBYSxDQUFDLEdBQTBCO1FBQ3hDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDbkMsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQzVCLE1BQU0sSUFBSSxLQUFLLENB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SixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUMzQixDQUFDO0lBQ0wsQ0FBQzs4R0FyTVEscUJBQXFCO2tHQUFyQixxQkFBcUIsOGNBR0EsVUFBVSxnR0FUOUI7Ozs7S0FJVDs7MkZBRVEscUJBQXFCO2tCQVhqQyxTQUFTO2lDQUNNLElBQUksWUFDTixrQkFBa0IsWUFDbEIsZ0JBQWdCLFlBRWhCOzs7O0tBSVQ7d0RBTVEsT0FBTztzQkFEZixTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJcEQsYUFBYTtzQkFEaEIsS0FBSzt1QkFBQyxVQUFVO2dCQWNiLFVBQVU7c0JBRGIsS0FBSzt1QkFBQyxPQUFPO2dCQU9MLEtBQUs7c0JBRGIsTUFBTTt1QkFBQyxjQUFjO2dCQUlsQixTQUFTO3NCQURaLEtBQUs7dUJBQUMsTUFBTTtnQkFTVCxhQUFhO3NCQURoQixLQUFLO3VCQUFDLFVBQVU7Z0JBVWIsYUFBYTtzQkFEaEIsS0FBSzt1QkFBQyxVQUFVO2dCQVViLFdBQVc7c0JBRGQsS0FBSzt1QkFBQyxhQUFhO2dCQVloQixRQUFRO3NCQURYLEtBQUs7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgUmVwbGF5U3ViamVjdCwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCB9IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHtcbiAgICBCb29sZWFuSW5wdXQsXG4gICAgY29lcmNlQm9vbEF0dHIsXG4gICAgRGVzdHJ1Y3RpYmxlLFxuICAgIEZhc3RET00sXG4gICAgTnVtYmVyV2l0aFVuaXQsXG4gICAgTnVtYmVyV2l0aFVuaXRJbnB1dFxufSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuaW1wb3J0IHsgRGltZW5zaW9uV2F0Y2hlciB9IGZyb20gXCJAbmd1dGlsL3N0eWxlXCJcblxuaW1wb3J0IHsgTDlSYW5nZSwgTDlSYW5nZU5hbWUgfSBmcm9tIFwiLi4vbDkvcmFuZ2VcIlxuXG5leHBvcnQgdHlwZSBEb2NraW5nUGFuZWxTdGF0ZSA9IFwiZnVsbFwiIHwgXCJtaW5pXCIgfCBcImhpZGRlblwiXG5leHBvcnQgdHlwZSBEb2NraW5nUGFuZWxNb2RlID0gXCJvdmVyXCIgfCBcInB1c2hcIiB8IFwicmlnaWRcIlxuXG5jb25zdCBERUZBVUxUX1BPU0lUSU9OID0gTDlSYW5nZS5jb2VyY2UoXCJsZWZ0XCIpXG5jb25zdCBISURERU5fU0laRSA9IG5ldyBOdW1iZXJXaXRoVW5pdCgwLCBcInB4XCIpXG5jb25zdCBBVVRPX1NJWkUgPSBOdW1iZXJXaXRoVW5pdC5jb2VyY2UoXCJhdXRvXCIpXG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6IFwibnUtZG9ja2luZy1wYW5lbFwiLFxuICAgIGV4cG9ydEFzOiBcIm51RG9ja2luZ1BhbmVsXCIsXG4gICAgc3R5bGVVcmw6IFwiLi9kb2NraW5nLXBhbmVsLmNvbXBvbmVudC5zY3NzXCIsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIiAjY29udGVudD5cbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgYFxufSlcbmV4cG9ydCBjbGFzcyBEb2NraW5nUGFuZWxDb21wb25lbnQgZXh0ZW5kcyBEZXN0cnVjdGlibGUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICByZWFkb25seSBlbCA9IGluamVjdChFbGVtZW50UmVmPEhUTUxFbGVtZW50PilcbiAgICByZWFkb25seSAjZGltV2F0Y2hlciA9IGluamVjdChEaW1lbnNpb25XYXRjaGVyKVxuICAgIEBWaWV3Q2hpbGQoXCJjb250ZW50XCIsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pXG4gICAgcmVhZG9ubHkgY29udGVudCE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG5cbiAgICBASW5wdXQoXCJwb3NpdGlvblwiKVxuICAgIHNldCBwb3NpdGlvbklucHV0KHZhbDogTDlSYW5nZSB8IEw5UmFuZ2VOYW1lKSB7XG4gICAgICAgIGNvbnN0IGNvZXJjZWQgPSBMOVJhbmdlLmNvZXJjZSh2YWwpXG4gICAgICAgIGlmIChjb2VyY2VkLm9yaWVudCA9PT0gXCJyZWN0XCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwb3NpdGlvbiB2YWx1ZTogJHt2YWx9YClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5wb3NpdGlvbi52YWx1ZS5pc0VxKGNvZXJjZWQpKSB7XG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uLm5leHQoY29lcmNlZClcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWFkb25seSBwb3NpdGlvbiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TDlSYW5nZT4oREVGQVVMVF9QT1NJVElPTilcblxuICAgIEBJbnB1dChcInN0YXRlXCIpXG4gICAgc2V0IHN0YXRlSW5wdXQodmFsOiBEb2NraW5nUGFuZWxTdGF0ZSkge1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS52YWx1ZSAhPT0gdmFsKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLm5leHQodmFsKVxuICAgICAgICB9XG4gICAgfVxuICAgIEBPdXRwdXQoXCJzdGF0ZUNoYW5nZXNcIilcbiAgICByZWFkb25seSBzdGF0ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RG9ja2luZ1BhbmVsU3RhdGU+KFwiZnVsbFwiKVxuXG4gICAgQElucHV0KFwibW9kZVwiKVxuICAgIHNldCBtb2RlSW5wdXQodmFsOiBEb2NraW5nUGFuZWxNb2RlKSB7XG4gICAgICAgIGlmICh0aGlzLm1vZGUudmFsdWUgIT09IHZhbCkge1xuICAgICAgICAgICAgdGhpcy5tb2RlLm5leHQodmFsKVxuICAgICAgICB9XG4gICAgfVxuICAgIHJlYWRvbmx5IG1vZGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERvY2tpbmdQYW5lbE1vZGU+KFwicmlnaWRcIilcblxuICAgIEBJbnB1dChcImZ1bGxTaXplXCIpXG4gICAgc2V0IGZ1bGxTaXplSW5wdXQodmFsOiBOdW1iZXJXaXRoVW5pdElucHV0KSB7XG4gICAgICAgIGNvbnN0IGNvZXJjZWQgPSBOdW1iZXJXaXRoVW5pdC5jb2VyY2UodmFsLCBcInB4XCIpXG4gICAgICAgIGlmICh0aGlzLiNmdWxsU2l6ZS52YWx1ZSAhPT0gY29lcmNlZCkge1xuICAgICAgICAgICAgdGhpcy4jZnVsbFNpemUubmV4dChjb2VyY2VkKVxuICAgICAgICB9XG4gICAgfVxuICAgIHJlYWRvbmx5ICNmdWxsU2l6ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TnVtYmVyV2l0aFVuaXQ+KEFVVE9fU0laRSlcblxuICAgIEBJbnB1dChcIm1pbmlTaXplXCIpXG4gICAgc2V0IG1pbmlTaXplSW5wdXQodmFsOiBOdW1iZXJXaXRoVW5pdElucHV0KSB7XG4gICAgICAgIGNvbnN0IGNvZXJjZWQgPSBOdW1iZXJXaXRoVW5pdC5jb2VyY2UodmFsLCBcInB4XCIpXG4gICAgICAgIGlmICh0aGlzLiNtaW5pU2l6ZS52YWx1ZSAhPT0gY29lcmNlZCkge1xuICAgICAgICAgICAgdGhpcy4jbWluaVNpemUubmV4dChjb2VyY2VkKVxuICAgICAgICB9XG4gICAgfVxuICAgIHJlYWRvbmx5ICNtaW5pU2l6ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TnVtYmVyV2l0aFVuaXQ+KEhJRERFTl9TSVpFKVxuXG4gICAgQElucHV0KFwibWluaW1pemFibGVcIilcbiAgICBzZXQgbWluaW1pemFibGUodmFsOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy4jbWluaW1pemFibGUgPSBjb2VyY2VCb29sQXR0cih2YWwpXG4gICAgICAgIHRoaXMuI21pbmltaXphYmxlQXV0byA9IGZhbHNlXG4gICAgfVxuICAgIGdldCBtaW5pbWl6YWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI21pbmltaXphYmxlXG4gICAgfVxuICAgICNtaW5pbWl6YWJsZTogYm9vbGVhbiA9IGZhbHNlXG4gICAgI21pbmltaXphYmxlQXV0bzogYm9vbGVhbiA9IHRydWVcblxuICAgIEBJbnB1dChcImJhY2tkcm9wXCIpXG4gICAgc2V0IGJhY2tkcm9wKHZhbDogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuI2JhY2tkcm9wID0gY29lcmNlQm9vbEF0dHIodmFsKVxuICAgIH1cbiAgICBnZXQgYmFja2Ryb3AoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLiNiYWNrZHJvcFxuICAgIH1cbiAgICAjYmFja2Ryb3A6IGJvb2xlYW4gPSBmYWxzZVxuXG4gICAgcmVhZG9ubHkgI2NvbnRlbnRTaXplID0gbmV3IFJlcGxheVN1YmplY3Q8eyB3aWR0aDogTnVtYmVyV2l0aFVuaXQ7IGhlaWdodDogTnVtYmVyV2l0aFVuaXQgfT4oMSlcblxuICAgIHJlYWRvbmx5ICNhdXRvU2l6ZSA9IGNvbWJpbmVMYXRlc3Qoe1xuICAgICAgICBkaW06IHRoaXMuI2NvbnRlbnRTaXplLFxuICAgICAgICBwb3M6IHRoaXMucG9zaXRpb25cbiAgICB9KS5waXBlKFxuICAgICAgICBtYXAoKHsgZGltLCBwb3MgfSkgPT4ge1xuICAgICAgICAgICAgaWYgKHBvcy5vcmllbnQgPT09IFwiaG9yaXpvbnRhbFwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRpbS5oZWlnaHRcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRpbS53aWR0aFxuICAgICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApXG5cbiAgICByZWFkb25seSBmdWxsU2l6ZSA9IHRoaXMuI2Z1bGxTaXplLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChzaXplID0+IHtcbiAgICAgICAgICAgIGlmIChzaXplLnVuaXQgPT09IFwiYXV0b1wiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuI2F1dG9TaXplXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBvZihzaXplKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApXG5cbiAgICByZWFkb25seSBtaW5pU2l6ZSA9IHRoaXMuI21pbmlTaXplLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChzaXplID0+IHtcbiAgICAgICAgICAgIGlmIChzaXplLnVuaXQgPT09IFwiYXV0b1wiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuI2F1dG9TaXplXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBvZihzaXplKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApXG5cbiAgICByZWFkb25seSBjaGFuZ2VzID0gY29tYmluZUxhdGVzdCh7XG4gICAgICAgIHBvc2l0aW9uOiB0aGlzLnBvc2l0aW9uLFxuICAgICAgICBzdGF0ZTogdGhpcy5zdGF0ZSxcbiAgICAgICAgbW9kZTogdGhpcy5tb2RlLFxuICAgICAgICBmdWxsU2l6ZTogdGhpcy5mdWxsU2l6ZSxcbiAgICAgICAgbWluaVNpemU6IHRoaXMubWluaVNpemUsXG4gICAgICAgIGNvbnRlbnRTaXplOiB0aGlzLiNjb250ZW50U2l6ZVxuICAgIH0pXG5cbiAgICAvLyBUT0RPOiBiZXR0ZXIgYW5pbWF0aW9uIGhhbmRsaW5nIGluIG1pbiAtPiBoaWRkZW4gLT4gbWluIC0+IGZ1bGxcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKVxuXG4gICAgICAgIHRoaXMuZC5zdWIodGhpcy5jaGFuZ2VzKS5zdWJzY3JpYmUoY2hhbmdlcyA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy4jbWluaW1pemFibGVBdXRvKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4jbWluaW1pemFibGUgPSB0aGlzLiNtaW5pU2l6ZS52YWx1ZS52YWx1ZSAhPT0gMFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBGYXN0RE9NLnNldEF0dHJpYnV0ZXModGhpcy5lbC5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgICAgICAgICAgc3RhdGU6IGNoYW5nZXMuc3RhdGUsXG4gICAgICAgICAgICAgICAgb3JpZW50OiBjaGFuZ2VzLnBvc2l0aW9uLm9yaWVudCxcbiAgICAgICAgICAgICAgICBtb2RlOiBjaGFuZ2VzLm1vZGUsXG4gICAgICAgICAgICAgICAgc2lkZTpcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlcy5wb3NpdGlvbi5vcmllbnQgPT09IFwiaG9yaXpvbnRhbFwiID8gY2hhbmdlcy5wb3NpdGlvbi5jZWxsc1swXS52IDogY2hhbmdlcy5wb3NpdGlvbi5jZWxsc1swXS5oXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICBjb25zdCBpc0hvcml6b250YWwgPSBjaGFuZ2VzLnBvc2l0aW9uLm9yaWVudCA9PT0gXCJob3Jpem9udGFsXCJcbiAgICAgICAgICAgIGxldCB3ID0gbnVsbFxuICAgICAgICAgICAgbGV0IGggPSBudWxsXG5cbiAgICAgICAgICAgIC8vIFRPRE86IHdoZW4gY2hhbmdlIHN0YXRlIGZyb20gbWluaSAtPiBoaWRkZW4sIGN1cnJlbnRseSB3cm9uZyBiZWhhdmlvclxuICAgICAgICAgICAgLy8gdGhlIGdvb2QgYmVoYXZpb3IgaXMgdG8gbm90IGdhaW4gZnVsbFNpemUgYW5nIGdvIHRvIGhpZGRlblxuICAgICAgICAgICAgaWYgKGNoYW5nZXMuc3RhdGUgPT09IFwibWluaVwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkge1xuICAgICAgICAgICAgICAgICAgICBoID0gY2hhbmdlcy5taW5pU2l6ZS51bml0ID09PSBcImF1dG9cIiA/IGNoYW5nZXMuY29udGVudFNpemUuaGVpZ2h0IDogY2hhbmdlcy5taW5pU2l6ZVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHcgPSBjaGFuZ2VzLm1pbmlTaXplLnVuaXQgPT09IFwiYXV0b1wiID8gY2hhbmdlcy5jb250ZW50U2l6ZS53aWR0aCA6IGNoYW5nZXMubWluaVNpemVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChpc0hvcml6b250YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgaCA9IGNoYW5nZXMuZnVsbFNpemUudW5pdCA9PT0gXCJhdXRvXCIgPyBjaGFuZ2VzLmNvbnRlbnRTaXplLmhlaWdodCA6IGNoYW5nZXMuZnVsbFNpemVcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB3ID0gY2hhbmdlcy5mdWxsU2l6ZS51bml0ID09PSBcImF1dG9cIiA/IGNoYW5nZXMuY29udGVudFNpemUud2lkdGggOiBjaGFuZ2VzLmZ1bGxTaXplXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBGYXN0RE9NLnNldFN0eWxlKFxuICAgICAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLXBhbmVsLXdcIjogdyAhPSBudWxsID8gYCR7d31gIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgXCItLWRvY2tpbmctcGFuZWwtaFwiOiBoICE9IG51bGwgPyBgJHtofWAgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBcIi0tZG9ja2luZy1wYW5lbC1jb250ZW50LXdcIjogY2hhbmdlcy5jb250ZW50U2l6ZS53aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgXCItLWRvY2tpbmctcGFuZWwtY29udGVudC1oXCI6IGNoYW5nZXMuY29udGVudFNpemUuaGVpZ2h0XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAoKSA9PiBGYXN0RE9NLnNldEF0dHJpYnV0ZXModGhpcy5lbC5uYXRpdmVFbGVtZW50LCB7IGFuaW1hdGU6IFwiXCIgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZFxuICAgICAgICAgICAgLnN1Yih0aGlzLiNkaW1XYXRjaGVyLndhdGNoKHRoaXMuY29udGVudCwgXCJzY3JvbGwtYm94XCIpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKGRpbSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogbmV3IE51bWJlcldpdGhVbml0KGRpbS53aWR0aCwgXCJweFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogbmV3IE51bWJlcldpdGhVbml0KGRpbS5oZWlnaHQsIFwicHhcIilcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHRoaXMuI2NvbnRlbnRTaXplKVxuICAgIH1cblxuICAgIG9wZW4oKSB7XG4gICAgICAgIHRoaXMuc3RhdGUubmV4dChcImZ1bGxcIilcbiAgICB9XG5cbiAgICBjbG9zZSgpIHtcbiAgICAgICAgdGhpcy5zdGF0ZS5uZXh0KFwiaGlkZGVuXCIpXG4gICAgfVxuXG4gICAgbWluaW1pemUoKSB7XG4gICAgICAgIGlmICh0aGlzLm1pbmltaXphYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLm5leHQoXCJtaW5pXCIpXG4gICAgICAgIH1cbiAgICB9XG59XG5cbnR5cGUgQ2hhbmdlc09ic2VydmFibGUgPSB0eXBlb2YgRG9ja2luZ1BhbmVsQ29tcG9uZW50LnByb3RvdHlwZS5jaGFuZ2VzXG5leHBvcnQgdHlwZSBEb2NraW5nUGFuZWxDaGFuZ2VzID0gQ2hhbmdlc09ic2VydmFibGUgZXh0ZW5kcyBPYnNlcnZhYmxlPGluZmVyIFQ+ID8gVCA6IG5ldmVyXG4iXX0=
package/esm2022/index.mjs CHANGED
@@ -1,5 +1,4 @@
1
- export * from "./util";
2
1
  export * from "./l9";
3
2
  export * from "./docking";
4
3
  export * from "./services/slots.service";
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsUUFBUSxDQUFBO0FBQ3RCLGNBQWMsTUFBTSxDQUFBO0FBQ3BCLGNBQWMsV0FBVyxDQUFBO0FBQ3pCLGNBQWMsMEJBQTBCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi91dGlsXCJcbmV4cG9ydCAqIGZyb20gXCIuL2w5XCJcbmV4cG9ydCAqIGZyb20gXCIuL2RvY2tpbmdcIlxuZXhwb3J0ICogZnJvbSBcIi4vc2VydmljZXMvc2xvdHMuc2VydmljZVwiXG4iXX0=
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsTUFBTSxDQUFBO0FBQ3BCLGNBQWMsV0FBVyxDQUFBO0FBQ3pCLGNBQWMsMEJBQTBCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9sOVwiXG5leHBvcnQgKiBmcm9tIFwiLi9kb2NraW5nXCJcbmV4cG9ydCAqIGZyb20gXCIuL3NlcnZpY2VzL3Nsb3RzLnNlcnZpY2VcIlxuIl19
@@ -1,5 +1,4 @@
1
1
  import { BehaviorSubject, map, shareReplay } from "rxjs";
2
- import { L9Range } from "./range";
3
2
  export class L9State {
4
3
  #dims;
5
4
  constructor(prefix) {
@@ -18,12 +17,5 @@ export class L9State {
18
17
  return res;
19
18
  }), shareReplay(1));
20
19
  }
21
- update(range, dim) {
22
- range = L9Range.coerce(range);
23
- const dims = { ...this.#dims.value };
24
- // for (const cell of range.horizontals) {
25
- // dims[cell] = dim.width
26
- // }
27
- }
28
20
  }
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL2w5L3N0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFjLFdBQVcsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUdwRSxPQUFPLEVBQTRCLE9BQU8sRUFBMkIsTUFBTSxTQUFTLENBQUE7QUFPcEYsTUFBTSxPQUFPLE9BQU87SUFDUCxLQUFLLENBQWtDO0lBcUJoRCxZQUE0QixNQUFTO1FBQVQsV0FBTSxHQUFOLE1BQU0sQ0FBRztRQXJCNUIsVUFBSyxHQUFHLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFBO1FBRXZDLFVBQUssR0FBK0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQ3hELEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNQLE1BQU0sR0FBRyxHQUFtQixFQUFFLENBQUE7WUFFOUIsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ1osU0FBUTtnQkFDWixDQUFDO2dCQUVELE1BQU0sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFDM0MsR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLE1BQU0sSUFBSSxRQUFRLElBQUksVUFBVSxJQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQTtnQkFDekYsR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLE1BQU0sSUFBSSxRQUFRLElBQUksVUFBVSxJQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQTtZQUM5RixDQUFDO1lBRUQsT0FBTyxHQUFHLENBQUE7UUFDZCxDQUFDLENBQUMsRUFDRixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2pCLENBQUE7SUFFdUMsQ0FBQztJQUV6QyxNQUFNLENBQUMsS0FBNEIsRUFBRSxHQUFjO1FBQy9DLEtBQUssR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzdCLE1BQU0sSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQ3BDLDBDQUEwQztRQUMxQyw2QkFBNkI7UUFDN0IsSUFBSTtJQUNSLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgbWFwLCBPYnNlcnZhYmxlLCBzaGFyZVJlcGxheSB9IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHsgRGltZW5zaW9uIH0gZnJvbSBcIi4uL3V0aWxcIlxuaW1wb3J0IHsgTDlDZWxsTmFtZSwgTDlIb3Jpem9udGFsLCBMOVJhbmdlLCBMOVJhbmdlTmFtZSwgTDlWZXJ0aWNhbCB9IGZyb20gXCIuL3JhbmdlXCJcblxuZXhwb3J0IHR5cGUgTDlTdGF0ZVZhcjxUIGV4dGVuZHMgc3RyaW5nPiA9IGAtLSR7VH0tJHtMOVZlcnRpY2FsfS0ke0w5SG9yaXpvbnRhbH0tJHtcIndcIiB8IFwiaFwifWBcbmV4cG9ydCB0eXBlIEw5U3R5bGVWYXJzPFQgZXh0ZW5kcyBzdHJpbmc+ID0geyBba2V5IGluIEw5U3RhdGVWYXI8VD5dPzogc3RyaW5nIH1cblxudHlwZSBMOURpbXMgPSB7IFtrZXkgaW4gTDlDZWxsTmFtZV0/OiBEaW1lbnNpb24gfVxuXG5leHBvcnQgY2xhc3MgTDlTdGF0ZTxUIGV4dGVuZHMgc3RyaW5nPiB7XG4gICAgcmVhZG9ubHkgI2RpbXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEw5RGltcz4oe30pXG5cbiAgICByZWFkb25seSBzdHlsZTogT2JzZXJ2YWJsZTxMOVN0eWxlVmFyczxUPj4gPSB0aGlzLiNkaW1zLnBpcGUoXG4gICAgICAgIG1hcChkaW1zID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlczogTDlTdHlsZVZhcnM8VD4gPSB7fVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhkaW1zKSkge1xuICAgICAgICAgICAgICAgIGlmICh2ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBbdmVydGljYWwsIGhvcml6b250YWxdID0gay5zcGxpdChcIjpcIilcbiAgICAgICAgICAgICAgICByZXNbYC0tJHt0aGlzLnByZWZpeH0tJHt2ZXJ0aWNhbH0tJHtob3Jpem9udGFsfS13YCBhcyBMOVN0YXRlVmFyPFQ+XSA9IHYud2lkdGgudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgIHJlc1tgLS0ke3RoaXMucHJlZml4fS0ke3ZlcnRpY2FsfS0ke2hvcml6b250YWx9LWhgIGFzIEw5U3RhdGVWYXI8VD5dID0gdi5oZWlnaHQudG9TdHJpbmcoKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcmVzXG4gICAgICAgIH0pLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgIClcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBwcmVmaXg6IFQpIHt9XG5cbiAgICB1cGRhdGUocmFuZ2U6IEw5UmFuZ2UgfCBMOVJhbmdlTmFtZSwgZGltOiBEaW1lbnNpb24pIHtcbiAgICAgICAgcmFuZ2UgPSBMOVJhbmdlLmNvZXJjZShyYW5nZSlcbiAgICAgICAgY29uc3QgZGltcyA9IHsgLi4udGhpcy4jZGltcy52YWx1ZSB9XG4gICAgICAgIC8vIGZvciAoY29uc3QgY2VsbCBvZiByYW5nZS5ob3Jpem9udGFscykge1xuICAgICAgICAvLyAgICAgZGltc1tjZWxsXSA9IGRpbS53aWR0aFxuICAgICAgICAvLyB9XG4gICAgfVxufVxuIl19
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL2w5L3N0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFjLFdBQVcsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQVdwRSxNQUFNLE9BQU8sT0FBTztJQUNQLEtBQUssQ0FBa0M7SUFxQmhELFlBQTRCLE1BQVM7UUFBVCxXQUFNLEdBQU4sTUFBTSxDQUFHO1FBckI1QixVQUFLLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUE7UUFFdkMsVUFBSyxHQUErQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDeEQsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ1AsTUFBTSxHQUFHLEdBQW1CLEVBQUUsQ0FBQTtZQUU5QixLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUN4QyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDWixTQUFRO2dCQUNaLENBQUM7Z0JBRUQsTUFBTSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUMzQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTSxJQUFJLFFBQVEsSUFBSSxVQUFVLElBQXFCLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFBO2dCQUN6RixHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTSxJQUFJLFFBQVEsSUFBSSxVQUFVLElBQXFCLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFBO1lBQzlGLENBQUM7WUFFRCxPQUFPLEdBQUcsQ0FBQTtRQUNkLENBQUMsQ0FBQyxFQUNGLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDakIsQ0FBQTtJQUV1QyxDQUFDO0NBQzVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBtYXAsIE9ic2VydmFibGUsIHNoYXJlUmVwbGF5IH0gZnJvbSBcInJ4anNcIlxuXG5pbXBvcnQgeyB0eXBlIERpbWVuc2lvbiB9IGZyb20gXCJAbmd1dGlsL3N0eWxlXCJcblxuaW1wb3J0IHsgTDlDZWxsTmFtZSwgTDlIb3Jpem9udGFsLCBMOVZlcnRpY2FsIH0gZnJvbSBcIi4vcmFuZ2VcIlxuXG5leHBvcnQgdHlwZSBMOVN0YXRlVmFyPFQgZXh0ZW5kcyBzdHJpbmc+ID0gYC0tJHtUfS0ke0w5VmVydGljYWx9LSR7TDlIb3Jpem9udGFsfS0ke1wid1wiIHwgXCJoXCJ9YFxuZXhwb3J0IHR5cGUgTDlTdHlsZVZhcnM8VCBleHRlbmRzIHN0cmluZz4gPSB7IFtrZXkgaW4gTDlTdGF0ZVZhcjxUPl0/OiBzdHJpbmcgfVxuXG50eXBlIEw5RGltcyA9IHsgW2tleSBpbiBMOUNlbGxOYW1lXT86IERpbWVuc2lvbiB9XG5cbmV4cG9ydCBjbGFzcyBMOVN0YXRlPFQgZXh0ZW5kcyBzdHJpbmc+IHtcbiAgICByZWFkb25seSAjZGltcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TDlEaW1zPih7fSlcblxuICAgIHJlYWRvbmx5IHN0eWxlOiBPYnNlcnZhYmxlPEw5U3R5bGVWYXJzPFQ+PiA9IHRoaXMuI2RpbXMucGlwZShcbiAgICAgICAgbWFwKGRpbXMgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzOiBMOVN0eWxlVmFyczxUPiA9IHt9XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKGRpbXMpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHYgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IFt2ZXJ0aWNhbCwgaG9yaXpvbnRhbF0gPSBrLnNwbGl0KFwiOlwiKVxuICAgICAgICAgICAgICAgIHJlc1tgLS0ke3RoaXMucHJlZml4fS0ke3ZlcnRpY2FsfS0ke2hvcml6b250YWx9LXdgIGFzIEw5U3RhdGVWYXI8VD5dID0gdi53aWR0aC50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgcmVzW2AtLSR7dGhpcy5wcmVmaXh9LSR7dmVydGljYWx9LSR7aG9yaXpvbnRhbH0taGAgYXMgTDlTdGF0ZVZhcjxUPl0gPSB2LmhlaWdodC50b1N0cmluZygpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXNcbiAgICAgICAgfSksXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKVxuXG4gICAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHByZWZpeDogVCkge31cbn1cbiJdfQ==