@skyux/core 8.10.6 → 8.10.8
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.
- package/documentation.json +574 -515
- package/esm2020/lib/modules/adapter-service/adapter.module.mjs +5 -5
- package/esm2020/lib/modules/adapter-service/adapter.service.mjs +4 -4
- package/esm2020/lib/modules/affix/affix.directive.mjs +4 -4
- package/esm2020/lib/modules/affix/affix.module.mjs +5 -5
- package/esm2020/lib/modules/affix/affix.service.mjs +25 -7
- package/esm2020/lib/modules/affix/affixer.mjs +59 -43
- package/esm2020/lib/modules/affix/dom-utils.mjs +74 -30
- package/esm2020/lib/modules/dock/dock-dom-adapter.service.mjs +4 -4
- package/esm2020/lib/modules/dock/dock.component.mjs +4 -4
- package/esm2020/lib/modules/dock/dock.module.mjs +5 -5
- package/esm2020/lib/modules/dock/dock.service.mjs +4 -4
- package/esm2020/lib/modules/dynamic-component/dynamic-component.module.mjs +5 -5
- package/esm2020/lib/modules/dynamic-component/dynamic-component.service.mjs +7 -5
- package/esm2020/lib/modules/format/app-format.mjs +4 -4
- package/esm2020/lib/modules/id/id.directive.mjs +4 -4
- package/esm2020/lib/modules/id/id.module.mjs +5 -5
- package/esm2020/lib/modules/id/id.service.mjs +4 -4
- package/esm2020/lib/modules/layout-host/layout-host.service.mjs +4 -4
- package/esm2020/lib/modules/live-announcer/live-announcer.service.mjs +4 -4
- package/esm2020/lib/modules/log/log.module.mjs +5 -5
- package/esm2020/lib/modules/log/log.service.mjs +4 -4
- package/esm2020/lib/modules/media-query/media-query.module.mjs +5 -5
- package/esm2020/lib/modules/media-query/media-query.service.mjs +4 -4
- package/esm2020/lib/modules/mutation/mutation-observer-service.mjs +4 -4
- package/esm2020/lib/modules/numeric/numeric.module.mjs +5 -5
- package/esm2020/lib/modules/numeric/numeric.pipe.mjs +4 -4
- package/esm2020/lib/modules/numeric/numeric.service.mjs +4 -4
- package/esm2020/lib/modules/overlay/overlay-adapter.service.mjs +4 -4
- package/esm2020/lib/modules/overlay/overlay.component.mjs +4 -4
- package/esm2020/lib/modules/overlay/overlay.module.mjs +5 -5
- package/esm2020/lib/modules/overlay/overlay.service.mjs +4 -4
- package/esm2020/lib/modules/percent-pipe/percent-pipe.module.mjs +5 -5
- package/esm2020/lib/modules/percent-pipe/percent.pipe.mjs +4 -4
- package/esm2020/lib/modules/resize-observer/resize-observer-media-query.service.mjs +4 -4
- package/esm2020/lib/modules/resize-observer/resize-observer.service.mjs +4 -4
- package/esm2020/lib/modules/scrollable-host/scrollable-host.service.mjs +4 -4
- package/esm2020/lib/modules/shared/sky-core-resources.module.mjs +5 -5
- package/esm2020/lib/modules/title/title.service.mjs +4 -4
- package/esm2020/lib/modules/trim/trim.directive.mjs +4 -4
- package/esm2020/lib/modules/trim/trim.module.mjs +5 -5
- package/esm2020/lib/modules/ui-config/ui-config.service.mjs +4 -4
- package/esm2020/lib/modules/viewkeeper/viewkeeper-host-options.mjs +4 -4
- package/esm2020/lib/modules/viewkeeper/viewkeeper.directive.mjs +4 -4
- package/esm2020/lib/modules/viewkeeper/viewkeeper.module.mjs +5 -5
- package/esm2020/lib/modules/viewkeeper/viewkeeper.service.mjs +4 -4
- package/esm2020/lib/modules/window/window-ref.mjs +4 -4
- package/esm2020/testing/core-testing.module.mjs +5 -5
- package/esm2020/testing/mock-media-query.service.mjs +4 -4
- package/esm2020/testing/mock-ui-config.service.mjs +4 -4
- package/fesm2015/skyux-core-testing.mjs +10 -10
- package/fesm2015/skyux-core-testing.mjs.map +1 -1
- package/fesm2015/skyux-core.mjs +298 -223
- package/fesm2015/skyux-core.mjs.map +1 -1
- package/fesm2020/skyux-core-testing.mjs +10 -10
- package/fesm2020/skyux-core-testing.mjs.map +1 -1
- package/fesm2020/skyux-core.mjs +302 -223
- package/fesm2020/skyux-core.mjs.map +1 -1
- package/lib/modules/affix/affix.service.d.ts +3 -2
- package/lib/modules/affix/affixer.d.ts +1 -1
- package/lib/modules/affix/dom-utils.d.ts +12 -4
- package/package.json +6 -6
@@ -1,9 +1,9 @@
|
|
1
|
-
var _SkyAffixer_instances, _SkyAffixer_config_get, _SkyAffixer_config_set, _SkyAffixer_affixedElement, _SkyAffixer_baseElement, _SkyAffixer_currentOffset, _SkyAffixer_currentPlacement, _SkyAffixer_offsetChange, _SkyAffixer_offsetChangeObs, _SkyAffixer_overflowParents, _SkyAffixer_overflowScroll, _SkyAffixer_overflowScrollObs, _SkyAffixer_placementChange, _SkyAffixer_placementChangeObs, _SkyAffixer_renderer, _SkyAffixer_scrollChange, _SkyAffixer_viewportListeners, _SkyAffixer_viewportRuler, _SkyAffixer_zone, _SkyAffixer__config, _SkyAffixer_scrollChangeListener, _SkyAffixer_affix,
|
1
|
+
var _SkyAffixer_instances, _SkyAffixer_config_get, _SkyAffixer_config_set, _SkyAffixer_affixedElement, _SkyAffixer_baseElement, _SkyAffixer_currentOffset, _SkyAffixer_currentPlacement, _SkyAffixer_layoutViewport, _SkyAffixer_offsetChange, _SkyAffixer_offsetChangeObs, _SkyAffixer_overflowParents, _SkyAffixer_overflowScroll, _SkyAffixer_overflowScrollObs, _SkyAffixer_placementChange, _SkyAffixer_placementChangeObs, _SkyAffixer_renderer, _SkyAffixer_scrollChange, _SkyAffixer_viewportListeners, _SkyAffixer_viewportRuler, _SkyAffixer_zone, _SkyAffixer__config, _SkyAffixer_scrollChangeListener, _SkyAffixer_affix, _SkyAffixer_getOffsetParentRect, _SkyAffixer_getOffset, _SkyAffixer_getPreferredOffset, _SkyAffixer_adjustOffsetToOverflowParent, _SkyAffixer_getImmediateOverflowParent, _SkyAffixer_getAutoFitContextParent, _SkyAffixer_notifyPlacementChange, _SkyAffixer_reset, _SkyAffixer_isNewOffset, _SkyAffixer_isBaseElementVisible, _SkyAffixer_addViewportListeners, _SkyAffixer_removeViewportListeners;
|
2
2
|
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
3
3
|
import { Subject, Subscription } from 'rxjs';
|
4
4
|
import { SkyAffixAutoFitContext } from './affix-auto-fit-context';
|
5
5
|
import { getInversePlacement, getNextPlacement } from './affix-utils';
|
6
|
-
import { getElementOffset, getOverflowParents, isOffsetFullyVisibleWithinParent, isOffsetPartiallyVisibleWithinParent, } from './dom-utils';
|
6
|
+
import { getElementOffset, getOuterRect, getOverflowParents, getVisibleRectForElement, isOffsetFullyVisibleWithinParent, isOffsetPartiallyVisibleWithinParent, } from './dom-utils';
|
7
7
|
const DEFAULT_AFFIX_CONFIG = {
|
8
8
|
autoFitContext: SkyAffixAutoFitContext.OverflowParent,
|
9
9
|
enableAutoFit: false,
|
@@ -33,12 +33,13 @@ export class SkyAffixer {
|
|
33
33
|
get placementChange() {
|
34
34
|
return __classPrivateFieldGet(this, _SkyAffixer_placementChangeObs, "f");
|
35
35
|
}
|
36
|
-
constructor(affixedElement, renderer, viewportRuler, zone) {
|
36
|
+
constructor(affixedElement, renderer, viewportRuler, zone, layoutViewport) {
|
37
37
|
_SkyAffixer_instances.add(this);
|
38
38
|
_SkyAffixer_affixedElement.set(this, void 0);
|
39
39
|
_SkyAffixer_baseElement.set(this, void 0);
|
40
40
|
_SkyAffixer_currentOffset.set(this, void 0);
|
41
41
|
_SkyAffixer_currentPlacement.set(this, void 0);
|
42
|
+
_SkyAffixer_layoutViewport.set(this, void 0);
|
42
43
|
_SkyAffixer_offsetChange.set(this, void 0);
|
43
44
|
_SkyAffixer_offsetChangeObs.set(this, void 0);
|
44
45
|
_SkyAffixer_overflowParents.set(this, []);
|
@@ -55,6 +56,7 @@ export class SkyAffixer {
|
|
55
56
|
_SkyAffixer_scrollChangeListener.set(this, () => __classPrivateFieldGet(this, _SkyAffixer_scrollChange, "f").next());
|
56
57
|
__classPrivateFieldSet(this, _SkyAffixer_affixedElement, affixedElement, "f");
|
57
58
|
__classPrivateFieldSet(this, _SkyAffixer_renderer, renderer, "f");
|
59
|
+
__classPrivateFieldSet(this, _SkyAffixer_layoutViewport, layoutViewport, "f");
|
58
60
|
__classPrivateFieldSet(this, _SkyAffixer_viewportRuler, viewportRuler, "f");
|
59
61
|
__classPrivateFieldSet(this, _SkyAffixer_zone, zone, "f");
|
60
62
|
__classPrivateFieldSet(this, _SkyAffixer_offsetChange, new Subject(), "f");
|
@@ -101,7 +103,7 @@ export class SkyAffixer {
|
|
101
103
|
__classPrivateFieldGet(this, _SkyAffixer_scrollChange, "f").complete();
|
102
104
|
}
|
103
105
|
}
|
104
|
-
_SkyAffixer_affixedElement = new WeakMap(), _SkyAffixer_baseElement = new WeakMap(), _SkyAffixer_currentOffset = new WeakMap(), _SkyAffixer_currentPlacement = new WeakMap(), _SkyAffixer_offsetChange = new WeakMap(), _SkyAffixer_offsetChangeObs = new WeakMap(), _SkyAffixer_overflowParents = new WeakMap(), _SkyAffixer_overflowScroll = new WeakMap(), _SkyAffixer_overflowScrollObs = new WeakMap(), _SkyAffixer_placementChange = new WeakMap(), _SkyAffixer_placementChangeObs = new WeakMap(), _SkyAffixer_renderer = new WeakMap(), _SkyAffixer_scrollChange = new WeakMap(), _SkyAffixer_viewportListeners = new WeakMap(), _SkyAffixer_viewportRuler = new WeakMap(), _SkyAffixer_zone = new WeakMap(), _SkyAffixer__config = new WeakMap(), _SkyAffixer_scrollChangeListener = new WeakMap(), _SkyAffixer_instances = new WeakSet(), _SkyAffixer_config_get = function _SkyAffixer_config_get() {
|
106
|
+
_SkyAffixer_affixedElement = new WeakMap(), _SkyAffixer_baseElement = new WeakMap(), _SkyAffixer_currentOffset = new WeakMap(), _SkyAffixer_currentPlacement = new WeakMap(), _SkyAffixer_layoutViewport = new WeakMap(), _SkyAffixer_offsetChange = new WeakMap(), _SkyAffixer_offsetChangeObs = new WeakMap(), _SkyAffixer_overflowParents = new WeakMap(), _SkyAffixer_overflowScroll = new WeakMap(), _SkyAffixer_overflowScrollObs = new WeakMap(), _SkyAffixer_placementChange = new WeakMap(), _SkyAffixer_placementChangeObs = new WeakMap(), _SkyAffixer_renderer = new WeakMap(), _SkyAffixer_scrollChange = new WeakMap(), _SkyAffixer_viewportListeners = new WeakMap(), _SkyAffixer_viewportRuler = new WeakMap(), _SkyAffixer_zone = new WeakMap(), _SkyAffixer__config = new WeakMap(), _SkyAffixer_scrollChangeListener = new WeakMap(), _SkyAffixer_instances = new WeakSet(), _SkyAffixer_config_get = function _SkyAffixer_config_get() {
|
105
107
|
return __classPrivateFieldGet(this, _SkyAffixer__config, "f");
|
106
108
|
}, _SkyAffixer_config_set = function _SkyAffixer_config_set(value) {
|
107
109
|
const merged = {
|
@@ -118,11 +120,31 @@ _SkyAffixer_affixedElement = new WeakMap(), _SkyAffixer_baseElement = new WeakMa
|
|
118
120
|
__classPrivateFieldSet(this, _SkyAffixer__config, merged, "f");
|
119
121
|
}, _SkyAffixer_affix = function _SkyAffixer_affix() {
|
120
122
|
const offset = __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_getOffset).call(this);
|
123
|
+
const offsetParentRect = __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_getOffsetParentRect).call(this);
|
124
|
+
offset.top = offset.top - offsetParentRect.top;
|
125
|
+
offset.left = offset.left - offsetParentRect.left;
|
126
|
+
offset.bottom = offset.bottom - offsetParentRect.top;
|
127
|
+
offset.right = offset.right - offsetParentRect.left;
|
121
128
|
if (__classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_isNewOffset).call(this, offset)) {
|
122
129
|
__classPrivateFieldGet(this, _SkyAffixer_renderer, "f").setStyle(__classPrivateFieldGet(this, _SkyAffixer_affixedElement, "f"), 'top', `${offset.top}px`);
|
123
130
|
__classPrivateFieldGet(this, _SkyAffixer_renderer, "f").setStyle(__classPrivateFieldGet(this, _SkyAffixer_affixedElement, "f"), 'left', `${offset.left}px`);
|
124
131
|
__classPrivateFieldGet(this, _SkyAffixer_offsetChange, "f").next({ offset });
|
125
132
|
}
|
133
|
+
}, _SkyAffixer_getOffsetParentRect = function _SkyAffixer_getOffsetParentRect() {
|
134
|
+
if (__classPrivateFieldGet(this, _SkyAffixer_affixedElement, "f").offsetParent) {
|
135
|
+
return getOuterRect(__classPrivateFieldGet(this, _SkyAffixer_affixedElement, "f").offsetParent);
|
136
|
+
}
|
137
|
+
else {
|
138
|
+
const layoutRect = getOuterRect(__classPrivateFieldGet(this, _SkyAffixer_layoutViewport, "f"));
|
139
|
+
return {
|
140
|
+
top: layoutRect.top,
|
141
|
+
left: layoutRect.left,
|
142
|
+
height: layoutRect.height,
|
143
|
+
width: layoutRect.width,
|
144
|
+
bottom: layoutRect.top - layoutRect.height,
|
145
|
+
right: layoutRect.left - layoutRect.width,
|
146
|
+
};
|
147
|
+
}
|
126
148
|
}, _SkyAffixer_getOffset = function _SkyAffixer_getOffset() {
|
127
149
|
const parent = __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_getAutoFitContextParent).call(this);
|
128
150
|
const maxAttempts = 4;
|
@@ -130,22 +152,9 @@ _SkyAffixer_affixedElement = new WeakMap(), _SkyAffixer_baseElement = new WeakMa
|
|
130
152
|
let isAffixedElementFullyVisible = false;
|
131
153
|
let offset;
|
132
154
|
let placement = __classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).placement;
|
133
|
-
const autoFitOverflowOffset = __classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).autoFitOverflowOffset || {
|
134
|
-
bottom: 0,
|
135
|
-
left: 0,
|
136
|
-
right: 0,
|
137
|
-
top: 0,
|
138
|
-
};
|
139
|
-
if (__classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).position === 'absolute') {
|
140
|
-
const { top, left } = __classPrivateFieldGet(this, _SkyAffixer_viewportRuler, "f").getViewportScrollPosition();
|
141
|
-
autoFitOverflowOffset.top = (autoFitOverflowOffset.top || 0) + top;
|
142
|
-
autoFitOverflowOffset.left = (autoFitOverflowOffset.left || 0) + left;
|
143
|
-
autoFitOverflowOffset.bottom = (autoFitOverflowOffset.bottom || 0) + top;
|
144
|
-
autoFitOverflowOffset.right = (autoFitOverflowOffset.right || 0) + left;
|
145
|
-
}
|
146
155
|
do {
|
147
156
|
offset = __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_getPreferredOffset).call(this, placement);
|
148
|
-
isAffixedElementFullyVisible = isOffsetFullyVisibleWithinParent(parent, offset, autoFitOverflowOffset);
|
157
|
+
isAffixedElementFullyVisible = isOffsetFullyVisibleWithinParent(__classPrivateFieldGet(this, _SkyAffixer_viewportRuler, "f"), parent, offset, __classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).autoFitOverflowOffset);
|
149
158
|
if (!__classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).enableAutoFit) {
|
150
159
|
break;
|
151
160
|
}
|
@@ -171,30 +180,12 @@ _SkyAffixer_affixedElement = new WeakMap(), _SkyAffixer_baseElement = new WeakMa
|
|
171
180
|
}
|
172
181
|
// No suitable placement was found, so revert to preferred placement.
|
173
182
|
return __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_getPreferredOffset).call(this, __classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).placement);
|
174
|
-
}, _SkyAffixer_getRect = function _SkyAffixer_getRect(baseElement) {
|
175
|
-
const baseDomRect = baseElement.getBoundingClientRect();
|
176
|
-
const baseRect = {
|
177
|
-
top: baseDomRect.top,
|
178
|
-
bottom: baseDomRect.bottom,
|
179
|
-
left: baseDomRect.left,
|
180
|
-
right: baseDomRect.right,
|
181
|
-
width: baseDomRect.width,
|
182
|
-
height: baseDomRect.height,
|
183
|
-
};
|
184
|
-
if (__classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).position === 'absolute') {
|
185
|
-
const { left, top } = __classPrivateFieldGet(this, _SkyAffixer_viewportRuler, "f").getViewportScrollPosition();
|
186
|
-
baseRect.top += top;
|
187
|
-
baseRect.left += left;
|
188
|
-
baseRect.bottom += top;
|
189
|
-
baseRect.right += left;
|
190
|
-
}
|
191
|
-
return baseRect;
|
192
183
|
}, _SkyAffixer_getPreferredOffset = function _SkyAffixer_getPreferredOffset(placement) {
|
193
184
|
if (!__classPrivateFieldGet(this, _SkyAffixer_baseElement, "f")) {
|
194
185
|
return { top: 0, left: 0, bottom: 0, right: 0 };
|
195
186
|
}
|
196
|
-
const affixedRect =
|
197
|
-
const baseRect = __classPrivateFieldGet(this,
|
187
|
+
const affixedRect = getOuterRect(__classPrivateFieldGet(this, _SkyAffixer_affixedElement, "f"));
|
188
|
+
const baseRect = __classPrivateFieldGet(this, _SkyAffixer_baseElement, "f").getBoundingClientRect();
|
198
189
|
const horizontalAlignment = __classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).horizontalAlignment;
|
199
190
|
const verticalAlignment = __classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).verticalAlignment;
|
200
191
|
const enableAutoFit = __classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).enableAutoFit;
|
@@ -272,10 +263,33 @@ _SkyAffixer_affixedElement = new WeakMap(), _SkyAffixer_baseElement = new WeakMa
|
|
272
263
|
offset.right = offset.left + affixedRect.width;
|
273
264
|
return offset;
|
274
265
|
}, _SkyAffixer_adjustOffsetToOverflowParent = function _SkyAffixer_adjustOffsetToOverflowParent(offset, placement, baseElement) {
|
266
|
+
const affixedRect = getOuterRect(__classPrivateFieldGet(this, _SkyAffixer_affixedElement, "f"));
|
267
|
+
const baseRect = baseElement.getBoundingClientRect();
|
275
268
|
const parent = __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_getAutoFitContextParent).call(this);
|
276
|
-
|
277
|
-
|
278
|
-
|
269
|
+
let parentOffset;
|
270
|
+
if (__classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).autoFitContext === SkyAffixAutoFitContext.OverflowParent) {
|
271
|
+
if (__classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).autoFitOverflowOffset) {
|
272
|
+
// When the config contains a specific offset.
|
273
|
+
parentOffset = getElementOffset(parent, __classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).autoFitOverflowOffset);
|
274
|
+
}
|
275
|
+
else if (isOffsetFullyVisibleWithinParent(__classPrivateFieldGet(this, _SkyAffixer_viewportRuler, "f"), parent, baseRect)) {
|
276
|
+
// When the base element is fully visible within the parent, aim for the visible portion of the parent element.
|
277
|
+
parentOffset = getVisibleRectForElement(__classPrivateFieldGet(this, _SkyAffixer_viewportRuler, "f"), parent);
|
278
|
+
}
|
279
|
+
else {
|
280
|
+
// Anywhere in the parent element.
|
281
|
+
parentOffset = getOuterRect(parent);
|
282
|
+
}
|
283
|
+
}
|
284
|
+
else {
|
285
|
+
const viewportRect = __classPrivateFieldGet(this, _SkyAffixer_viewportRuler, "f").getViewportRect();
|
286
|
+
parentOffset = {
|
287
|
+
top: -viewportRect.top,
|
288
|
+
left: -viewportRect.left,
|
289
|
+
bottom: -viewportRect.bottom,
|
290
|
+
right: -viewportRect.right,
|
291
|
+
};
|
292
|
+
}
|
279
293
|
// A pixel value representing the leeway between the edge of the overflow parent and the edge
|
280
294
|
// of the base element before it disappears from view.
|
281
295
|
// If the visible portion of the base element is less than this pixel value, the auto-fit
|
@@ -351,11 +365,13 @@ _SkyAffixer_affixedElement = new WeakMap(), _SkyAffixer_baseElement = new WeakMa
|
|
351
365
|
__classPrivateFieldSet(this, _SkyAffixer_currentOffset, offset, "f");
|
352
366
|
return true;
|
353
367
|
}, _SkyAffixer_isBaseElementVisible = function _SkyAffixer_isBaseElementVisible() {
|
368
|
+
// Can't get here if the base element is undefined.
|
369
|
+
/* istanbul ignore if */
|
354
370
|
if (!__classPrivateFieldGet(this, _SkyAffixer_baseElement, "f")) {
|
355
371
|
return false;
|
356
372
|
}
|
357
373
|
const baseRect = __classPrivateFieldGet(this, _SkyAffixer_baseElement, "f").getBoundingClientRect();
|
358
|
-
return isOffsetPartiallyVisibleWithinParent(__classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_getImmediateOverflowParent).call(this), {
|
374
|
+
return isOffsetPartiallyVisibleWithinParent(__classPrivateFieldGet(this, _SkyAffixer_viewportRuler, "f"), __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_getImmediateOverflowParent).call(this), {
|
359
375
|
top: baseRect.top,
|
360
376
|
left: baseRect.left,
|
361
377
|
right: baseRect.right,
|
@@ -386,4 +402,4 @@ _SkyAffixer_affixedElement = new WeakMap(), _SkyAffixer_baseElement = new WeakMa
|
|
386
402
|
});
|
387
403
|
});
|
388
404
|
};
|
389
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWZmaXhlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9hZmZpeC9hZmZpeGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0EsT0FBTyxFQUFjLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFekQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFPbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLGdDQUFnQyxFQUNoQyxvQ0FBb0MsR0FDckMsTUFBTSxhQUFhLENBQUM7QUFrQnJCLE1BQU0sb0JBQW9CLEdBQTBCO0lBQ2xELGNBQWMsRUFBRSxzQkFBc0IsQ0FBQyxjQUFjO0lBQ3JELGFBQWEsRUFBRSxLQUFLO0lBQ3BCLG1CQUFtQixFQUFFLFFBQVE7SUFDN0IsUUFBUSxFQUFFLEtBQUs7SUFDZixTQUFTLEVBQUUsT0FBTztDQUNuQixDQUFDO0FBRUYsTUFBTSxPQUFPLFVBQVU7SUFDckI7O09BRUc7SUFDSCxJQUFXLFlBQVk7UUFDckIsT0FBTyx1QkFBQSxJQUFJLG1DQUFpQixDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sdUJBQUEsSUFBSSxxQ0FBbUIsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBVyxlQUFlO1FBQ3hCLE9BQU8sdUJBQUEsSUFBSSxzQ0FBb0IsQ0FBQztJQUNsQyxDQUFDO0lBMkRELFlBQ0UsY0FBMkIsRUFDM0IsUUFBbUIsRUFDbkIsYUFBNEIsRUFDNUIsSUFBWTs7UUF4Q2QsNkNBQTZCO1FBRTdCLDBDQUFzQztRQUV0Qyw0Q0FBMkM7UUFFM0MsK0NBQWlEO1FBRWpE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YUFBYSxFQUFFLEVBQUU7WUFDaEIsYUFBYSxFQUFFLGdCQUFnQixDQUFDLFFBQVEsRUFBRSx1QkFBQSxJQUFJLHdDQUFzQixDQUFDLENBQUM7UUFDeEUsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7SUFHQyx1QkFBQSxJQUFJLHFDQUFtQixFQUFFLFdBQVcsRUFBRSxDQUFDO0lBRXZDLHVCQUFBLElBQUksd0JBQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7UUFDaEMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLGNBQWMsRUFBRSxHQUFHLHVCQUFBLElBQUksbUNBQWlCLENBQUMsQ0FBQyxPQUFPLENBQy9ELENBQUMsYUFBYSxFQUFFLEVBQUU7WUFDaEIsYUFBYSxFQUFFLG1CQUFtQixDQUNoQyxRQUFRLEVBQ1IsdUJBQUEsSUFBSSx3Q0FBc0IsQ0FDM0IsQ0FBQztRQUNKLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmlld3BvcnRSdWxlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IE5nWm9uZSwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTa3lBZmZpeEF1dG9GaXRDb250ZXh0IH0gZnJvbSAnLi9hZmZpeC1hdXRvLWZpdC1jb250ZXh0JztcbmltcG9ydCB7IFNreUFmZml4Q29uZmlnIH0gZnJvbSAnLi9hZmZpeC1jb25maWcnO1xuaW1wb3J0IHsgU2t5QWZmaXhPZmZzZXQgfSBmcm9tICcuL2FmZml4LW9mZnNldCc7XG5pbXBvcnQgeyBTa3lBZmZpeE9mZnNldENoYW5nZSB9IGZyb20gJy4vYWZmaXgtb2Zmc2V0LWNoYW5nZSc7XG5pbXBvcnQgeyBTa3lBZmZpeFBsYWNlbWVudCB9IGZyb20gJy4vYWZmaXgtcGxhY2VtZW50JztcbmltcG9ydCB7IFNreUFmZml4UGxhY2VtZW50Q2hhbmdlIH0gZnJvbSAnLi9hZmZpeC1wbGFjZW1lbnQtY2hhbmdlJztcbmltcG9ydCB7IEFmZml4UmVjdCB9IGZyb20gJy4vYWZmaXgtcmVjdCc7XG5pbXBvcnQgeyBnZXRJbnZlcnNlUGxhY2VtZW50LCBnZXROZXh0UGxhY2VtZW50IH0gZnJvbSAnLi9hZmZpeC11dGlscyc7XG5pbXBvcnQge1xuICBnZXRFbGVtZW50T2Zmc2V0LFxuICBnZXRPdmVyZmxvd1BhcmVudHMsXG4gIGlzT2Zmc2V0RnVsbHlWaXNpYmxlV2l0aGluUGFyZW50LFxuICBpc09mZnNldFBhcnRpYWxseVZpc2libGVXaXRoaW5QYXJlbnQsXG59IGZyb20gJy4vZG9tLXV0aWxzJztcblxuLyoqXG4gKiBNYWtlIHNwZWNpZmljIHByb3BlcnRpZXMgcmVxdWlyZWQsIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0b1xuICogZG8gbnVsbCBjaGVja3MgdGhyb3VnaG91dCB0aGlzIGZpbGUuXG4gKi9cbnR5cGUgQWZmaXhDb25maWdPckRlZmF1bHRzID0gU2t5QWZmaXhDb25maWcgJlxuICBSZXF1aXJlZDxcbiAgICBQaWNrPFxuICAgICAgU2t5QWZmaXhDb25maWcsXG4gICAgICB8ICdhdXRvRml0Q29udGV4dCdcbiAgICAgIHwgJ2VuYWJsZUF1dG9GaXQnXG4gICAgICB8ICdob3Jpem9udGFsQWxpZ25tZW50J1xuICAgICAgfCAnaXNTdGlja3knXG4gICAgICB8ICdwbGFjZW1lbnQnXG4gICAgPlxuICA+O1xuXG5jb25zdCBERUZBVUxUX0FGRklYX0NPTkZJRzogQWZmaXhDb25maWdPckRlZmF1bHRzID0ge1xuICBhdXRvRml0Q29udGV4dDogU2t5QWZmaXhBdXRvRml0Q29udGV4dC5PdmVyZmxvd1BhcmVudCxcbiAgZW5hYmxlQXV0b0ZpdDogZmFsc2UsXG4gIGhvcml6b250YWxBbGlnbm1lbnQ6ICdjZW50ZXInLFxuICBpc1N0aWNreTogZmFsc2UsXG4gIHBsYWNlbWVudDogJ2Fib3ZlJyxcbn07XG5cbmV4cG9ydCBjbGFzcyBTa3lBZmZpeGVyIHtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIGFmZml4ZWQgZWxlbWVudCdzIG9mZnNldCBjaGFuZ2VzLlxuICAgKi9cbiAgcHVibGljIGdldCBvZmZzZXRDaGFuZ2UoKTogT2JzZXJ2YWJsZTxTa3lBZmZpeE9mZnNldENoYW5nZT4ge1xuICAgIHJldHVybiB0aGlzLiNvZmZzZXRDaGFuZ2VPYnM7XG4gIH1cblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgYmFzZSBlbGVtZW50J3MgbmVhcmVzdCBvdmVyZmxvdyBwYXJlbnQgaXMgc2Nyb2xsaW5nLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgbmVlZFxuICAgKiB0byBwZXJmb3JtIGFuIGFkZGl0aW9uYWwgYWN0aW9uIGR1cmluZyB0aGUgc2Nyb2xsIGV2ZW50IGJ1dCBkb24ndCB3YW50IHRvIGdlbmVyYXRlIGFub3RoZXJcbiAgICogZXZlbnQgbGlzdGVuZXIuXG4gICAqL1xuICBwdWJsaWMgZ2V0IG92ZXJmbG93U2Nyb2xsKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLiNvdmVyZmxvd1Njcm9sbE9icztcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBwbGFjZW1lbnQgdmFsdWUgY2hhbmdlcy4gQSBgbnVsbGAgdmFsdWUgaW5kaWNhdGVzIHRoYXQgYSBzdWl0YWJsZVxuICAgKiBwbGFjZW1lbnQgY291bGQgbm90IGJlIGZvdW5kLlxuICAgKi9cbiAgcHVibGljIGdldCBwbGFjZW1lbnRDaGFuZ2UoKTogT2JzZXJ2YWJsZTxTa3lBZmZpeFBsYWNlbWVudENoYW5nZT4ge1xuICAgIHJldHVybiB0aGlzLiNwbGFjZW1lbnRDaGFuZ2VPYnM7XG4gIH1cblxuICBnZXQgI2NvbmZpZygpOiBBZmZpeENvbmZpZ09yRGVmYXVsdHMge1xuICAgIHJldHVybiB0aGlzLiNfY29uZmlnO1xuICB9XG5cbiAgc2V0ICNjb25maWcodmFsdWU6IFNreUFmZml4Q29uZmlnIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgbWVyZ2VkOiBBZmZpeENvbmZpZ09yRGVmYXVsdHMgPSB7XG4gICAgICAuLi5ERUZBVUxUX0FGRklYX0NPTkZJRyxcbiAgICAgIC4uLnZhbHVlLFxuICAgIH07XG5cbiAgICAvLyBNYWtlIHN1cmUgbm9uZSBvZiB0aGUgdmFsdWVzIGFyZSB1bmRlZmluZWQuXG4gICAgbGV0IGtleToga2V5b2YgdHlwZW9mIG1lcmdlZDtcbiAgICBmb3IgKGtleSBpbiBtZXJnZWQpIHtcbiAgICAgIGlmIChtZXJnZWRba2V5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIChtZXJnZWQgYXMgYW55KVtrZXldID0gREVGQVVMVF9BRkZJWF9DT05GSUdba2V5XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLiNfY29uZmlnID0gbWVyZ2VkO1xuICB9XG5cbiAgI2FmZml4ZWRFbGVtZW50OiBIVE1MRWxlbWVudDtcblxuICAjYmFzZUVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuXG4gICNjdXJyZW50T2Zmc2V0OiBTa3lBZmZpeE9mZnNldCB8IHVuZGVmaW5lZDtcblxuICAjY3VycmVudFBsYWNlbWVudDogU2t5QWZmaXhQbGFjZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgI29mZnNldENoYW5nZTogU3ViamVjdDxTa3lBZmZpeE9mZnNldENoYW5nZT47XG5cbiAgI29mZnNldENoYW5nZU9iczogT2JzZXJ2YWJsZTxTa3lBZmZpeE9mZnNldENoYW5nZT47XG5cbiAgI292ZXJmbG93UGFyZW50czogSFRNTEVsZW1lbnRbXSA9IFtdO1xuXG4gICNvdmVyZmxvd1Njcm9sbDogU3ViamVjdDx2b2lkPjtcblxuICAjb3ZlcmZsb3dTY3JvbGxPYnM6IE9ic2VydmFibGU8dm9pZD47XG5cbiAgI3BsYWNlbWVudENoYW5nZTogU3ViamVjdDxTa3lBZmZpeFBsYWNlbWVudENoYW5nZT47XG5cbiAgI3BsYWNlbWVudENoYW5nZU9iczogT2JzZXJ2YWJsZTxTa3lBZmZpeFBsYWNlbWVudENoYW5nZT47XG5cbiAgI3JlbmRlcmVyOiBSZW5kZXJlcjI7XG5cbiAgI3Njcm9sbENoYW5nZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgI3ZpZXdwb3J0TGlzdGVuZXJzOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG5cbiAgI3ZpZXdwb3J0UnVsZXI6IFZpZXdwb3J0UnVsZXI7XG5cbiAgI3pvbmU6IE5nWm9uZTtcblxuICAjX2NvbmZpZzogQWZmaXhDb25maWdPckRlZmF1bHRzID0gREVGQVVMVF9BRkZJWF9DT05GSUc7XG5cbiAgI3Njcm9sbENoYW5nZUxpc3RlbmVyOiAoKSA9PiB2b2lkID0gKCkgPT4gdGhpcy4jc2Nyb2xsQ2hhbmdlLm5leHQoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBhZmZpeGVkRWxlbWVudDogSFRNTEVsZW1lbnQsXG4gICAgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICB2aWV3cG9ydFJ1bGVyOiBWaWV3cG9ydFJ1bGVyLFxuICAgIHpvbmU6IE5nWm9uZVxuICApIHtcbiAgICB0aGlzLiNhZmZpeGVkRWxlbWVudCA9IGFmZml4ZWRFbGVtZW50O1xuICAgIHRoaXMuI3JlbmRlcmVyID0gcmVuZGVyZXI7XG4gICAgdGhpcy4jdmlld3BvcnRSdWxlciA9IHZpZXdwb3J0UnVsZXI7XG4gICAgdGhpcy4jem9uZSA9IHpvbmU7XG5cbiAgICB0aGlzLiNvZmZzZXRDaGFuZ2UgPSBuZXcgU3ViamVjdDxTa3lBZmZpeE9mZnNldENoYW5nZT4oKTtcbiAgICB0aGlzLiNvdmVyZmxvd1Njcm9sbCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgdGhpcy4jcGxhY2VtZW50Q2hhbmdlID0gbmV3IFN1YmplY3Q8U2t5QWZmaXhQbGFjZW1lbnRDaGFuZ2U+KCk7XG5cbiAgICB0aGlzLiNvZmZzZXRDaGFuZ2VPYnMgPSB0aGlzLiNvZmZzZXRDaGFuZ2UuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy4jb3ZlcmZsb3dTY3JvbGxPYnMgPSB0aGlzLiNvdmVyZmxvd1Njcm9sbC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLiNwbGFjZW1lbnRDaGFuZ2VPYnMgPSB0aGlzLiNwbGFjZW1lbnRDaGFuZ2UuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogQWZmaXhlcyBhbiBlbGVtZW50IHRvIGEgYmFzZSBlbGVtZW50LlxuICAgKiBAcGFyYW0gYmFzZUVsZW1lbnQgVGhlIGJhc2UgZWxlbWVudC5cbiAgICogQHBhcmFtIGNvbmZpZyBDb25maWd1cmF0aW9uIGZvciB0aGUgYWZmaXggYWN0aW9uLlxuICAgKi9cbiAgcHVibGljIGFmZml4VG8oYmFzZUVsZW1lbnQ6IEhUTUxFbGVtZW50LCBjb25maWc/OiBTa3lBZmZpeENvbmZpZyk6IHZvaWQge1xuICAgIHRoaXMuI3Jlc2V0KCk7XG5cbiAgICB0aGlzLiNjb25maWcgPSBjb25maWc7XG4gICAgdGhpcy4jYmFzZUVsZW1lbnQgPSBiYXNlRWxlbWVudDtcbiAgICB0aGlzLiNvdmVyZmxvd1BhcmVudHMgPSBnZXRPdmVyZmxvd1BhcmVudHMoYmFzZUVsZW1lbnQpO1xuXG4gICAgdGhpcy4jYWZmaXgoKTtcblxuICAgIGlmICh0aGlzLiNjb25maWcuaXNTdGlja3kpIHtcbiAgICAgIHRoaXMuI2FkZFZpZXdwb3J0TGlzdGVuZXJzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldENvbmZpZygpOiBTa3lBZmZpeENvbmZpZyB7XG4gICAgcmV0dXJuIHRoaXMuI2NvbmZpZztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZS1ydW5zIHRoZSBhZmZpeCBjYWxjdWxhdGlvbi5cbiAgICovXG4gIHB1YmxpYyByZWFmZml4KCk6IHZvaWQge1xuICAgIC8vIFJlc2V0IGN1cnJlbnQgcGxhY2VtZW50IHRvIHByZWZlcnJlZCBwbGFjZW1lbnQuXG4gICAgdGhpcy4jY3VycmVudFBsYWNlbWVudCA9IHRoaXMuI2NvbmZpZy5wbGFjZW1lbnQ7XG4gICAgdGhpcy4jYWZmaXgoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyB0aGUgYWZmaXhlci5cbiAgICovXG4gIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI3Jlc2V0KCk7XG4gICAgdGhpcy4jcGxhY2VtZW50Q2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy4jb2Zmc2V0Q2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy4jb3ZlcmZsb3dTY3JvbGwuY29tcGxldGUoKTtcbiAgICB0aGlzLiNzY3JvbGxDaGFuZ2UuY29tcGxldGUoKTtcbiAgfVxuXG4gICNhZmZpeCgpOiB2b2lkIHtcbiAgICBjb25zdCBvZmZzZXQgPSB0aGlzLiNnZXRPZmZzZXQoKTtcblxuICAgIGlmICh0aGlzLiNpc05ld09mZnNldChvZmZzZXQpKSB7XG4gICAgICB0aGlzLiNyZW5kZXJlci5zZXRTdHlsZSh0aGlzLiNhZmZpeGVkRWxlbWVudCwgJ3RvcCcsIGAke29mZnNldC50b3B9cHhgKTtcbiAgICAgIHRoaXMuI3JlbmRlcmVyLnNldFN0eWxlKHRoaXMuI2FmZml4ZWRFbGVtZW50LCAnbGVmdCcsIGAke29mZnNldC5sZWZ0fXB4YCk7XG5cbiAgICAgIHRoaXMuI29mZnNldENoYW5nZS5uZXh0KHsgb2Zmc2V0IH0pO1xuICAgIH1cbiAgfVxuXG4gICNnZXRPZmZzZXQoKTogU2t5QWZmaXhPZmZzZXQge1xuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuI2dldEF1dG9GaXRDb250ZXh0UGFyZW50KCk7XG5cbiAgICBjb25zdCBtYXhBdHRlbXB0cyA9IDQ7XG4gICAgbGV0IGF0dGVtcHRzID0gMDtcblxuICAgIGxldCBpc0FmZml4ZWRFbGVtZW50RnVsbHlWaXNpYmxlID0gZmFsc2U7XG4gICAgbGV0IG9mZnNldDogUmVxdWlyZWQ8U2t5QWZmaXhPZmZzZXQ+O1xuICAgIGxldCBwbGFjZW1lbnQgPSB0aGlzLiNjb25maWcucGxhY2VtZW50O1xuXG4gICAgY29uc3QgYXV0b0ZpdE92ZXJmbG93T2Zmc2V0ID0gdGhpcy4jY29uZmlnLmF1dG9GaXRPdmVyZmxvd09mZnNldCB8fCB7XG4gICAgICBib3R0b206IDAsXG4gICAgICBsZWZ0OiAwLFxuICAgICAgcmlnaHQ6IDAsXG4gICAgICB0b3A6IDAsXG4gICAgfTtcblxuICAgIGlmICh0aGlzLiNjb25maWcucG9zaXRpb24gPT09ICdhYnNvbHV0ZScpIHtcbiAgICAgIGNvbnN0IHsgdG9wLCBsZWZ0IH0gPSB0aGlzLiN2aWV3cG9ydFJ1bGVyLmdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKTtcbiAgICAgIGF1dG9GaXRPdmVyZmxvd09mZnNldC50b3AgPSAoYXV0b0ZpdE92ZXJmbG93T2Zmc2V0LnRvcCB8fCAwKSArIHRvcDtcbiAgICAgIGF1dG9GaXRPdmVyZmxvd09mZnNldC5sZWZ0ID0gKGF1dG9GaXRPdmVyZmxvd09mZnNldC5sZWZ0IHx8IDApICsgbGVmdDtcbiAgICAgIGF1dG9GaXRPdmVyZmxvd09mZnNldC5ib3R0b20gPSAoYXV0b0ZpdE92ZXJmbG93T2Zmc2V0LmJvdHRvbSB8fCAwKSArIHRvcDtcbiAgICAgIGF1dG9GaXRPdmVyZmxvd09mZnNldC5yaWdodCA9IChhdXRvRml0T3ZlcmZsb3dPZmZzZXQucmlnaHQgfHwgMCkgKyBsZWZ0O1xuICAgIH1cblxuICAgIGRvIHtcbiAgICAgIG9mZnNldCA9IHRoaXMuI2dldFByZWZlcnJlZE9mZnNldChwbGFjZW1lbnQpO1xuICAgICAgaXNBZmZpeGVkRWxlbWVudEZ1bGx5VmlzaWJsZSA9IGlzT2Zmc2V0RnVsbHlWaXNpYmxlV2l0aGluUGFyZW50KFxuICAgICAgICBwYXJlbnQsXG4gICAgICAgIG9mZnNldCxcbiAgICAgICAgYXV0b0ZpdE92ZXJmbG93T2Zmc2V0XG4gICAgICApO1xuXG4gICAgICBpZiAoIXRoaXMuI2NvbmZpZy5lbmFibGVBdXRvRml0KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlzQWZmaXhlZEVsZW1lbnRGdWxseVZpc2libGUpIHtcbiAgICAgICAgcGxhY2VtZW50ID1cbiAgICAgICAgICBhdHRlbXB0cyAlIDIgPT09IDBcbiAgICAgICAgICAgID8gZ2V0SW52ZXJzZVBsYWNlbWVudChwbGFjZW1lbnQpXG4gICAgICAgICAgICA6IGdldE5leHRQbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgICAgIH1cblxuICAgICAgYXR0ZW1wdHMrKztcbiAgICB9IHdoaWxlICghaXNBZmZpeGVkRWxlbWVudEZ1bGx5VmlzaWJsZSAmJiBhdHRlbXB0cyA8IG1heEF0dGVtcHRzKTtcblxuICAgIGlmIChpc0FmZml4ZWRFbGVtZW50RnVsbHlWaXNpYmxlKSB7XG4gICAgICBpZiAodGhpcy4jaXNCYXNlRWxlbWVudFZpc2libGUoKSkge1xuICAgICAgICB0aGlzLiNub3RpZnlQbGFjZW1lbnRDaGFuZ2UocGxhY2VtZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuI25vdGlmeVBsYWNlbWVudENoYW5nZShudWxsKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9mZnNldDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy4jY29uZmlnLmVuYWJsZUF1dG9GaXQpIHtcbiAgICAgIHRoaXMuI25vdGlmeVBsYWNlbWVudENoYW5nZShudWxsKTtcbiAgICB9XG5cbiAgICAvLyBObyBzdWl0YWJsZSBwbGFjZW1lbnQgd2FzIGZvdW5kLCBzbyByZXZlcnQgdG8gcHJlZmVycmVkIHBsYWNlbWVudC5cbiAgICByZXR1cm4gdGhpcy4jZ2V0UHJlZmVycmVkT2Zmc2V0KHRoaXMuI2NvbmZpZy5wbGFjZW1lbnQpO1xuICB9XG5cbiAgI2dldFJlY3QoYmFzZUVsZW1lbnQ6IEhUTUxFbGVtZW50KTogQWZmaXhSZWN0IHtcbiAgICBjb25zdCBiYXNlRG9tUmVjdCA9IGJhc2VFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgY29uc3QgYmFzZVJlY3Q6IEFmZml4UmVjdCA9IHtcbiAgICAgIHRvcDogYmFzZURvbVJlY3QudG9wLFxuICAgICAgYm90dG9tOiBiYXNlRG9tUmVjdC5ib3R0b20sXG4gICAgICBsZWZ0OiBiYXNlRG9tUmVjdC5sZWZ0LFxuICAgICAgcmlnaHQ6IGJhc2VEb21SZWN0LnJpZ2h0LFxuICAgICAgd2lkdGg6IGJhc2VEb21SZWN0LndpZHRoLFxuICAgICAgaGVpZ2h0OiBiYXNlRG9tUmVjdC5oZWlnaHQsXG4gICAgfTtcblxuICAgIGlmICh0aGlzLiNjb25maWcucG9zaXRpb24gPT09ICdhYnNvbHV0ZScpIHtcbiAgICAgIGNvbnN0IHsgbGVmdCwgdG9wIH0gPSB0aGlzLiN2aWV3cG9ydFJ1bGVyLmdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKTtcbiAgICAgIGJhc2VSZWN0LnRvcCArPSB0b3A7XG4gICAgICBiYXNlUmVjdC5sZWZ0ICs9IGxlZnQ7XG4gICAgICBiYXNlUmVjdC5ib3R0b20gKz0gdG9wO1xuICAgICAgYmFzZVJlY3QucmlnaHQgKz0gbGVmdDtcbiAgICB9XG5cbiAgICByZXR1cm4gYmFzZVJlY3Q7XG4gIH1cblxuICAjZ2V0UHJlZmVycmVkT2Zmc2V0KHBsYWNlbWVudDogU2t5QWZmaXhQbGFjZW1lbnQpOiBSZXF1aXJlZDxTa3lBZmZpeE9mZnNldD4ge1xuICAgIGlmICghdGhpcy4jYmFzZUVsZW1lbnQpIHtcbiAgICAgIHJldHVybiB7IHRvcDogMCwgbGVmdDogMCwgYm90dG9tOiAwLCByaWdodDogMCB9O1xuICAgIH1cblxuICAgIGNvbnN0IGFmZml4ZWRSZWN0ID0gdGhpcy4jZ2V0UmVjdCh0aGlzLiNhZmZpeGVkRWxlbWVudCk7XG4gICAgY29uc3QgYmFzZVJlY3QgPSB0aGlzLiNnZXRSZWN0KHRoaXMuI2Jhc2VFbGVtZW50KTtcblxuICAgIGNvbnN0IGhvcml6b250YWxBbGlnbm1lbnQgPSB0aGlzLiNjb25maWcuaG9yaXpvbnRhbEFsaWdubWVudDtcbiAgICBjb25zdCB2ZXJ0aWNhbEFsaWdubWVudCA9IHRoaXMuI2NvbmZpZy52ZXJ0aWNhbEFsaWdubWVudDtcbiAgICBjb25zdCBlbmFibGVBdXRvRml0ID0gdGhpcy4jY29uZmlnLmVuYWJsZUF1dG9GaXQ7XG5cbiAgICBsZXQgdG9wOiBudW1iZXI7XG4gICAgbGV0IGxlZnQ6IG51bWJlcjtcblxuICAgIGlmIChwbGFjZW1lbnQgPT09ICdhYm92ZScgfHwgcGxhY2VtZW50ID09PSAnYmVsb3cnKSB7XG4gICAgICBpZiAocGxhY2VtZW50ID09PSAnYWJvdmUnKSB7XG4gICAgICAgIHRvcCA9IGJhc2VSZWN0LnRvcCAtIGFmZml4ZWRSZWN0LmhlaWdodDtcblxuICAgICAgICBzd2l0Y2ggKHZlcnRpY2FsQWxpZ25tZW50KSB7XG4gICAgICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgICAgIHRvcCA9IHRvcCArIGFmZml4ZWRSZWN0LmhlaWdodDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ21pZGRsZSc6XG4gICAgICAgICAgICB0b3AgPSB0b3AgKyBhZmZpeGVkUmVjdC5oZWlnaHQgLyAyO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRvcCA9IGJhc2VSZWN0LmJvdHRvbTtcblxuICAgICAgICBzd2l0Y2ggKHZlcnRpY2FsQWxpZ25tZW50KSB7XG4gICAgICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnbWlkZGxlJzpcbiAgICAgICAgICAgIHRvcCA9IHRvcCAtIGFmZml4ZWRSZWN0LmhlaWdodCAvIDI7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgICAgdG9wID0gdG9wIC0gYWZmaXhlZFJlY3QuaGVpZ2h0O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChob3Jpem9udGFsQWxpZ25tZW50KSB7XG4gICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgIGxlZnQgPSBiYXNlUmVjdC5sZWZ0O1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2NlbnRlcic6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgbGVmdCA9IGJhc2VSZWN0LmxlZnQgKyBiYXNlUmVjdC53aWR0aCAvIDIgLSBhZmZpeGVkUmVjdC53aWR0aCAvIDI7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgIGxlZnQgPSBiYXNlUmVjdC5yaWdodCAtIGFmZml4ZWRSZWN0LndpZHRoO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocGxhY2VtZW50ID09PSAnbGVmdCcpIHtcbiAgICAgICAgbGVmdCA9IGJhc2VSZWN0LmxlZnQgLSBhZmZpeGVkUmVjdC53aWR0aDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxlZnQgPSBiYXNlUmVjdC5yaWdodDtcbiAgICAgIH1cblxuICAgICAgc3dpdGNoICh2ZXJ0aWNhbEFsaWdubWVudCkge1xuICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgIHRvcCA9IGJhc2VSZWN0LnRvcDtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdtaWRkbGUnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRvcCA9IGJhc2VSZWN0LnRvcCArIGJhc2VSZWN0LmhlaWdodCAvIDIgLSBhZmZpeGVkUmVjdC5oZWlnaHQgLyAyO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgdG9wID0gYmFzZVJlY3QuYm90dG9tIC0gYWZmaXhlZFJlY3QuaGVpZ2h0O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG9mZnNldDogUmVxdWlyZWQ8U2t5QWZmaXhPZmZzZXQ+ID0geyB0b3AsIGxlZnQsIGJvdHRvbTogMCwgcmlnaHQ6IDAgfTtcblxuICAgIGlmIChlbmFibGVBdXRvRml0KSB7XG4gICAgICBjb25zdCBhZGp1c3RtZW50cyA9IHRoaXMuI2FkanVzdE9mZnNldFRvT3ZlcmZsb3dQYXJlbnQoXG4gICAgICAgIHsgdG9wLCBsZWZ0IH0sXG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgdGhpcy4jYmFzZUVsZW1lbnRcbiAgICAgICk7XG4gICAgICBvZmZzZXQudG9wID0gYWRqdXN0bWVudHMudG9wO1xuICAgICAgb2Zmc2V0LmxlZnQgPSBhZGp1c3RtZW50cy5sZWZ0O1xuICAgIH1cblxuICAgIG9mZnNldC5ib3R0b20gPSBvZmZzZXQudG9wICsgYWZmaXhlZFJlY3QuaGVpZ2h0O1xuICAgIG9mZnNldC5yaWdodCA9IG9mZnNldC5sZWZ0ICsgYWZmaXhlZFJlY3Qud2lkdGg7XG5cbiAgICByZXR1cm4gb2Zmc2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIFNsaWdodGx5IGFkanVzdCB0aGUgb2Zmc2V0IHRvIGZpdCB3aXRoaW4gdGhlIHNjcm9sbCBwYXJlbnQncyBib3VuZGFyaWVzIGlmXG4gICAqIHRoZSBhZmZpeGVkIGVsZW1lbnQgd291bGQgb3RoZXJ3aXNlIGJlIGNsaXBwZWQuXG4gICAqL1xuICAjYWRqdXN0T2Zmc2V0VG9PdmVyZmxvd1BhcmVudChcbiAgICBvZmZzZXQ6IHsgdG9wOiBudW1iZXI7IGxlZnQ6IG51bWJlciB9LFxuICAgIHBsYWNlbWVudDogU2t5QWZmaXhQbGFjZW1lbnQsXG4gICAgYmFzZUVsZW1lbnQ6IEhUTUxFbGVtZW50XG4gICk6IHsgdG9wOiBudW1iZXI7IGxlZnQ6IG51bWJlciB9IHtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLiNnZXRBdXRvRml0Q29udGV4dFBhcmVudCgpO1xuICAgIGNvbnN0IHBhcmVudE9mZnNldCA9IGdldEVsZW1lbnRPZmZzZXQoXG4gICAgICBwYXJlbnQsXG4gICAgICB0aGlzLiNjb25maWcuYXV0b0ZpdE92ZXJmbG93T2Zmc2V0XG4gICAgKTtcblxuICAgIGNvbnN0IGFmZml4ZWRSZWN0ID0gdGhpcy4jZ2V0UmVjdCh0aGlzLiNhZmZpeGVkRWxlbWVudCk7XG4gICAgY29uc3QgYmFzZVJlY3QgPSB0aGlzLiNnZXRSZWN0KGJhc2VFbGVtZW50KTtcblxuICAgIC8vIEEgcGl4ZWwgdmFsdWUgcmVwcmVzZW50aW5nIHRoZSBsZWV3YXkgYmV0d2VlbiB0aGUgZWRnZSBvZiB0aGUgb3ZlcmZsb3cgcGFyZW50IGFuZCB0aGUgZWRnZVxuICAgIC8vIG9mIHRoZSBiYXNlIGVsZW1lbnQgYmVmb3JlIGl0IGRpc2FwcGVhcnMgZnJvbSB2aWV3LlxuICAgIC8vIElmIHRoZSB2aXNpYmxlIHBvcnRpb24gb2YgdGhlIGJhc2UgZWxlbWVudCBpcyBsZXNzIHRoYW4gdGhpcyBwaXhlbCB2YWx1ZSwgdGhlIGF1dG8tZml0XG4gICAgLy8gZnVuY3Rpb25hbGl0eSBhdHRlbXB0cyB0byBmaW5kIGFub3RoZXIgcGxhY2VtZW50LlxuICAgIGNvbnN0IGRlZmF1bHRQaXhlbFRvbGVyYW5jZSA9IDQwO1xuICAgIGxldCBwaXhlbFRvbGVyYW5jZTogbnVtYmVyO1xuXG4gICAgY29uc3Qgb3JpZ2luYWxPZmZzZXRUb3AgPSBvZmZzZXQudG9wO1xuICAgIGNvbnN0IG9yaWdpbmFsT2Zmc2V0TGVmdCA9IG9mZnNldC5sZWZ0O1xuXG4gICAgc3dpdGNoIChwbGFjZW1lbnQpIHtcbiAgICAgIGNhc2UgJ2Fib3ZlJzpcbiAgICAgIGNhc2UgJ2JlbG93JzpcbiAgICAgICAgLy8gS2VlcCB0aGUgYWZmaXhlZCBlbGVtZW50IHdpdGhpbiB0aGUgb3ZlcmZsb3cgcGFyZW50LlxuICAgICAgICBpZiAob2Zmc2V0LmxlZnQgPCBwYXJlbnRPZmZzZXQubGVmdCkge1xuICAgICAgICAgIG9mZnNldC5sZWZ0ID0gcGFyZW50T2Zmc2V0LmxlZnQ7XG4gICAgICAgIH0gZWxzZSBpZiAob2Zmc2V0LmxlZnQgKyBhZmZpeGVkUmVjdC53aWR0aCA+IHBhcmVudE9mZnNldC5yaWdodCkge1xuICAgICAgICAgIG9mZnNldC5sZWZ0ID0gcGFyZW50T2Zmc2V0LnJpZ2h0IC0gYWZmaXhlZFJlY3Qud2lkdGg7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVc2UgYSBzbWFsbGVyIHBpeGVsIHRvbGVyYW5jZSBpZiB0aGUgYmFzZSBlbGVtZW50IHdpZHRoIGlzIGxlc3MgdGhhbiB0aGUgZGVmYXVsdC5cbiAgICAgICAgcGl4ZWxUb2xlcmFuY2UgPSBNYXRoLm1pbihkZWZhdWx0UGl4ZWxUb2xlcmFuY2UsIGJhc2VSZWN0LndpZHRoKTtcblxuICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGFmZml4ZWQgZWxlbWVudCBuZXZlciBkZXRhY2hlcyBmcm9tIHRoZSBiYXNlIGVsZW1lbnQuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBvZmZzZXQubGVmdCArIHBpeGVsVG9sZXJhbmNlID4gYmFzZVJlY3QucmlnaHQgfHxcbiAgICAgICAgICBvZmZzZXQubGVmdCArIGFmZml4ZWRSZWN0LndpZHRoIC0gcGl4ZWxUb2xlcmFuY2UgPCBiYXNlUmVjdC5sZWZ0XG4gICAgICAgICkge1xuICAgICAgICAgIG9mZnNldC5sZWZ0ID0gb3JpZ2luYWxPZmZzZXRMZWZ0O1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAvLyBLZWVwIHRoZSBhZmZpeGVkIGVsZW1lbnQgd2l0aGluIHRoZSBvdmVyZmxvdyBwYXJlbnQuXG4gICAgICAgIGlmIChvZmZzZXQudG9wIDwgcGFyZW50T2Zmc2V0LnRvcCkge1xuICAgICAgICAgIG9mZnNldC50b3AgPSBwYXJlbnRPZmZzZXQudG9wO1xuICAgICAgICB9IGVsc2UgaWYgKG9mZnNldC50b3AgKyBhZmZpeGVkUmVjdC5oZWlnaHQgPiBwYXJlbnRPZmZzZXQuYm90dG9tKSB7XG4gICAgICAgICAgb2Zmc2V0LnRvcCA9IHBhcmVudE9mZnNldC5ib3R0b20gLSBhZmZpeGVkUmVjdC5oZWlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVc2UgYSBzbWFsbGVyIHBpeGVsIHRvbGVyYW5jZSBpZiB0aGUgYmFzZSBlbGVtZW50IGhlaWdodCBpcyBsZXNzIHRoYW4gdGhlIGRlZmF1bHQuXG4gICAgICAgIHBpeGVsVG9sZXJhbmNlID0gTWF0aC5taW4oZGVmYXVsdFBpeGVsVG9sZXJhbmNlLCBiYXNlUmVjdC5oZWlnaHQpO1xuXG4gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgYWZmaXhlZCBlbGVtZW50IG5ldmVyIGRldGFjaGVzIGZyb20gdGhlIGJhc2UgZWxlbWVudC5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIG9mZnNldC50b3AgKyBwaXhlbFRvbGVyYW5jZSA+IGJhc2VSZWN0LmJvdHRvbSB8fFxuICAgICAgICAgIG9mZnNldC50b3AgKyBhZmZpeGVkUmVjdC5oZWlnaHQgLSBwaXhlbFRvbGVyYW5jZSA8IGJhc2VSZWN0LnRvcFxuICAgICAgICApIHtcbiAgICAgICAgICBvZmZzZXQudG9wID0gb3JpZ2luYWxPZmZzZXRUb3A7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gb2Zmc2V0O1xuICB9XG5cbiAgI2dldEltbWVkaWF0ZU92ZXJmbG93UGFyZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy4jb3ZlcmZsb3dQYXJlbnRzWzBdO1xuICB9XG5cbiAgI2dldEF1dG9GaXRDb250ZXh0UGFyZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBib2R5RWxlbWVudCA9IHRoaXMuI292ZXJmbG93UGFyZW50c1t0aGlzLiNvdmVyZmxvd1BhcmVudHMubGVuZ3RoIC0gMV07XG5cbiAgICByZXR1cm4gdGhpcy4jY29uZmlnLmF1dG9GaXRDb250ZXh0ID09PSBTa3lBZmZpeEF1dG9GaXRDb250ZXh0Lk92ZXJmbG93UGFyZW50XG4gICAgICA/IHRoaXMuI2dldEltbWVkaWF0ZU92ZXJmbG93UGFyZW50KClcbiAgICAgIDogYm9keUVsZW1lbnQ7XG4gIH1cblxuICAjbm90aWZ5UGxhY2VtZW50Q2hhbmdlKHBsYWNlbWVudDogU2t5QWZmaXhQbGFjZW1lbnQgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2N1cnJlbnRQbGFjZW1lbnQgIT09IHBsYWNlbWVudCkge1xuICAgICAgdGhpcy4jY3VycmVudFBsYWNlbWVudCA9IHBsYWNlbWVudCA/PyB1bmRlZmluZWQ7XG4gICAgICB0aGlzLiNwbGFjZW1lbnRDaGFuZ2UubmV4dCh7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gICNyZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLiNyZW1vdmVWaWV3cG9ydExpc3RlbmVycygpO1xuXG4gICAgdGhpcy4jb3ZlcmZsb3dQYXJlbnRzID0gW107XG5cbiAgICB0aGlzLiNjb25maWcgPVxuICAgICAgdGhpcy4jYmFzZUVsZW1lbnQgPVxuICAgICAgdGhpcy4jY3VycmVudFBsYWNlbWVudCA9XG4gICAgICB0aGlzLiNjdXJyZW50T2Zmc2V0ID1cbiAgICAgICAgdW5kZWZpbmVkO1xuICB9XG5cbiAgI2lzTmV3T2Zmc2V0KG9mZnNldDogU2t5QWZmaXhPZmZzZXQpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy4jY3VycmVudE9mZnNldCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLiNjdXJyZW50T2Zmc2V0ID0gb2Zmc2V0O1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy4jY3VycmVudE9mZnNldC50b3AgPT09IG9mZnNldC50b3AgJiZcbiAgICAgIHRoaXMuI2N1cnJlbnRPZmZzZXQubGVmdCA9PT0gb2Zmc2V0LmxlZnRcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLiNjdXJyZW50T2Zmc2V0ID0gb2Zmc2V0O1xuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAjaXNCYXNlRWxlbWVudFZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLiNiYXNlRWxlbWVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGJhc2VSZWN0ID0gdGhpcy4jYmFzZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICByZXR1cm4gaXNPZmZzZXRQYXJ0aWFsbHlWaXNpYmxlV2l0aGluUGFyZW50KFxuICAgICAgdGhpcy4jZ2V0SW1tZWRpYXRlT3ZlcmZsb3dQYXJlbnQoKSxcbiAgICAgIHtcbiAgICAgICAgdG9wOiBiYXNlUmVjdC50b3AsXG4gICAgICAgIGxlZnQ6IGJhc2VSZWN0LmxlZnQsXG4gICAgICAgIHJpZ2h0OiBiYXNlUmVjdC5yaWdodCxcbiAgICAgICAgYm90dG9tOiBiYXNlUmVjdC5ib3R0b20sXG4gICAgICB9LFxuICAgICAgdGhpcy4jY29uZmlnLmF1dG9GaXRPdmVyZmxvd09mZnNldFxuICAgICk7XG4gIH1cblxuICAjYWRkVmlld3BvcnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgdGhpcy4jdmlld3BvcnRMaXN0ZW5lcnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvLyBSZXNpemUgYW5kIG9yaWVudGF0aW9uIGNoYW5nZXMuXG4gICAgdGhpcy4jdmlld3BvcnRMaXN0ZW5lcnMuYWRkKFxuICAgICAgdGhpcy4jdmlld3BvcnRSdWxlci5jaGFuZ2UoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLiNhZmZpeCgpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy4jdmlld3BvcnRMaXN0ZW5lcnMuYWRkKFxuICAgICAgdGhpcy4jc2Nyb2xsQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuI2FmZml4KCk7XG4gICAgICAgIHRoaXMuI292ZXJmbG93U2Nyb2xsLm5leHQoKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIC8vIExpc3RlbiBmb3Igc2Nyb2xsIGV2ZW50cyBvbiB0aGUgd2luZG93LCB2aXN1YWwgdmlld3BvcnQsIGFuZCBhbnkgb3ZlcmZsb3cgcGFyZW50cy5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2Jsb2cvdmlzdWFsLXZpZXdwb3J0LWFwaS8jZXZlbnRzLW9ubHktZmlyZS13aGVuLXRoZS12aXN1YWwtdmlld3BvcnQtY2hhbmdlc1xuICAgIHRoaXMuI3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgW3dpbmRvdywgd2luZG93LnZpc3VhbFZpZXdwb3J0LCAuLi50aGlzLiNvdmVyZmxvd1BhcmVudHNdLmZvckVhY2goXG4gICAgICAgIChwYXJlbnRFbGVtZW50KSA9PiB7XG4gICAgICAgICAgcGFyZW50RWxlbWVudD8uYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy4jc2Nyb2xsQ2hhbmdlTGlzdGVuZXIpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgI3JlbW92ZVZpZXdwb3J0TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuI3ZpZXdwb3J0TGlzdGVuZXJzPy51bnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy4jem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBbd2luZG93LCB3aW5kb3cudmlzdWFsVmlld3BvcnQsIC4uLnRoaXMuI292ZXJmbG93UGFyZW50c10uZm9yRWFjaChcbiAgICAgICAgKHBhcmVudEVsZW1lbnQpID0+IHtcbiAgICAgICAgICBwYXJlbnRFbGVtZW50Py5yZW1vdmVFdmVudExpc3RlbmVyKFxuICAgICAgICAgICAgJ3Njcm9sbCcsXG4gICAgICAgICAgICB0aGlzLiNzY3JvbGxDaGFuZ2VMaXN0ZW5lclxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
405
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWZmaXhlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9hZmZpeC9hZmZpeGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0EsT0FBTyxFQUFjLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFekQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFPbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLGtCQUFrQixFQUNsQix3QkFBd0IsRUFDeEIsZ0NBQWdDLEVBQ2hDLG9DQUFvQyxHQUNyQyxNQUFNLGFBQWEsQ0FBQztBQWtCckIsTUFBTSxvQkFBb0IsR0FBMEI7SUFDbEQsY0FBYyxFQUFFLHNCQUFzQixDQUFDLGNBQWM7SUFDckQsYUFBYSxFQUFFLEtBQUs7SUFDcEIsbUJBQW1CLEVBQUUsUUFBUTtJQUM3QixRQUFRLEVBQUUsS0FBSztJQUNmLFNBQVMsRUFBRSxPQUFPO0NBQ25CLENBQUM7QUFFRixNQUFNLE9BQU8sVUFBVTtJQUNyQjs7T0FFRztJQUNILElBQVcsWUFBWTtRQUNyQixPQUFPLHVCQUFBLElBQUksbUNBQWlCLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFXLGNBQWM7UUFDdkIsT0FBTyx1QkFBQSxJQUFJLHFDQUFtQixDQUFDO0lBQ2pDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFXLGVBQWU7UUFDeEIsT0FBTyx1QkFBQSxJQUFJLHNDQUFvQixDQUFDO0lBQ2xDLENBQUM7SUE2REQsWUFDRSxjQUEyQixFQUMzQixRQUFtQixFQUNuQixhQUE0QixFQUM1QixJQUFZLEVBQ1osY0FBMkI7O1FBM0M3Qiw2Q0FBNkI7UUFFN0IsMENB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Q2hDLHVCQUFBLElBQUksZ0RBQU8sTUFBWCxJQUFJLENBQVMsQ0FBQztRQUNkLHVCQUFBLElBQUksa0NBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDOUIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUVGLHFGQUFxRjtJQUNyRiwyR0FBMkc7SUFDM0csdUJBQUEsSUFBSSx3QkFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtRQUNoQyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsY0FBYyxFQUFFLEdBQUcsdUJBQUEsSUFBSSxtQ0FBaUIsQ0FBQyxDQUFDLE9BQU8sQ0FDL0QsQ0FBQyxhQUFhLEVBQUUsRUFBRTtZQUNoQixhQUFhLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLHVCQUFBLElBQUksd0NBQXNCLENBQUMsQ0FBQztRQUN4RSxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztJQUdDLHVCQUFBLElBQUkscUNBQW1CLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFFdkMsdUJBQUEsSUFBSSx3QkFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtRQUNoQyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsY0FBYyxFQUFFLEdBQUcsdUJBQUEsSUFBSSxtQ0FBaUIsQ0FBQyxDQUFDLE9BQU8sQ0FDL0QsQ0FBQyxhQUFhLEVBQUUsRUFBRTtZQUNoQixhQUFhLEVBQUUsbUJBQW1CLENBQ2hDLFFBQVEsRUFDUix1QkFBQSxJQUFJLHdDQUFzQixDQUMzQixDQUFDO1FBQ0osQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWaWV3cG9ydFJ1bGVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgTmdab25lLCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreUFmZml4QXV0b0ZpdENvbnRleHQgfSBmcm9tICcuL2FmZml4LWF1dG8tZml0LWNvbnRleHQnO1xuaW1wb3J0IHsgU2t5QWZmaXhDb25maWcgfSBmcm9tICcuL2FmZml4LWNvbmZpZyc7XG5pbXBvcnQgeyBTa3lBZmZpeE9mZnNldCB9IGZyb20gJy4vYWZmaXgtb2Zmc2V0JztcbmltcG9ydCB7IFNreUFmZml4T2Zmc2V0Q2hhbmdlIH0gZnJvbSAnLi9hZmZpeC1vZmZzZXQtY2hhbmdlJztcbmltcG9ydCB7IFNreUFmZml4UGxhY2VtZW50IH0gZnJvbSAnLi9hZmZpeC1wbGFjZW1lbnQnO1xuaW1wb3J0IHsgU2t5QWZmaXhQbGFjZW1lbnRDaGFuZ2UgfSBmcm9tICcuL2FmZml4LXBsYWNlbWVudC1jaGFuZ2UnO1xuaW1wb3J0IHsgQWZmaXhSZWN0IH0gZnJvbSAnLi9hZmZpeC1yZWN0JztcbmltcG9ydCB7IGdldEludmVyc2VQbGFjZW1lbnQsIGdldE5leHRQbGFjZW1lbnQgfSBmcm9tICcuL2FmZml4LXV0aWxzJztcbmltcG9ydCB7XG4gIGdldEVsZW1lbnRPZmZzZXQsXG4gIGdldE91dGVyUmVjdCxcbiAgZ2V0T3ZlcmZsb3dQYXJlbnRzLFxuICBnZXRWaXNpYmxlUmVjdEZvckVsZW1lbnQsXG4gIGlzT2Zmc2V0RnVsbHlWaXNpYmxlV2l0aGluUGFyZW50LFxuICBpc09mZnNldFBhcnRpYWxseVZpc2libGVXaXRoaW5QYXJlbnQsXG59IGZyb20gJy4vZG9tLXV0aWxzJztcblxuLyoqXG4gKiBNYWtlIHNwZWNpZmljIHByb3BlcnRpZXMgcmVxdWlyZWQsIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0b1xuICogZG8gbnVsbCBjaGVja3MgdGhyb3VnaG91dCB0aGlzIGZpbGUuXG4gKi9cbnR5cGUgQWZmaXhDb25maWdPckRlZmF1bHRzID0gU2t5QWZmaXhDb25maWcgJlxuICBSZXF1aXJlZDxcbiAgICBQaWNrPFxuICAgICAgU2t5QWZmaXhDb25maWcsXG4gICAgICB8ICdhdXRvRml0Q29udGV4dCdcbiAgICAgIHwgJ2VuYWJsZUF1dG9GaXQnXG4gICAgICB8ICdob3Jpem9udGFsQWxpZ25tZW50J1xuICAgICAgfCAnaXNTdGlja3knXG4gICAgICB8ICdwbGFjZW1lbnQnXG4gICAgPlxuICA+O1xuXG5jb25zdCBERUZBVUxUX0FGRklYX0NPTkZJRzogQWZmaXhDb25maWdPckRlZmF1bHRzID0ge1xuICBhdXRvRml0Q29udGV4dDogU2t5QWZmaXhBdXRvRml0Q29udGV4dC5PdmVyZmxvd1BhcmVudCxcbiAgZW5hYmxlQXV0b0ZpdDogZmFsc2UsXG4gIGhvcml6b250YWxBbGlnbm1lbnQ6ICdjZW50ZXInLFxuICBpc1N0aWNreTogZmFsc2UsXG4gIHBsYWNlbWVudDogJ2Fib3ZlJyxcbn07XG5cbmV4cG9ydCBjbGFzcyBTa3lBZmZpeGVyIHtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIGFmZml4ZWQgZWxlbWVudCdzIG9mZnNldCBjaGFuZ2VzLlxuICAgKi9cbiAgcHVibGljIGdldCBvZmZzZXRDaGFuZ2UoKTogT2JzZXJ2YWJsZTxTa3lBZmZpeE9mZnNldENoYW5nZT4ge1xuICAgIHJldHVybiB0aGlzLiNvZmZzZXRDaGFuZ2VPYnM7XG4gIH1cblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgYmFzZSBlbGVtZW50J3MgbmVhcmVzdCBvdmVyZmxvdyBwYXJlbnQgaXMgc2Nyb2xsaW5nLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgbmVlZFxuICAgKiB0byBwZXJmb3JtIGFuIGFkZGl0aW9uYWwgYWN0aW9uIGR1cmluZyB0aGUgc2Nyb2xsIGV2ZW50IGJ1dCBkb24ndCB3YW50IHRvIGdlbmVyYXRlIGFub3RoZXJcbiAgICogZXZlbnQgbGlzdGVuZXIuXG4gICAqL1xuICBwdWJsaWMgZ2V0IG92ZXJmbG93U2Nyb2xsKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLiNvdmVyZmxvd1Njcm9sbE9icztcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBwbGFjZW1lbnQgdmFsdWUgY2hhbmdlcy4gQSBgbnVsbGAgdmFsdWUgaW5kaWNhdGVzIHRoYXQgYSBzdWl0YWJsZVxuICAgKiBwbGFjZW1lbnQgY291bGQgbm90IGJlIGZvdW5kLlxuICAgKi9cbiAgcHVibGljIGdldCBwbGFjZW1lbnRDaGFuZ2UoKTogT2JzZXJ2YWJsZTxTa3lBZmZpeFBsYWNlbWVudENoYW5nZT4ge1xuICAgIHJldHVybiB0aGlzLiNwbGFjZW1lbnRDaGFuZ2VPYnM7XG4gIH1cblxuICBnZXQgI2NvbmZpZygpOiBBZmZpeENvbmZpZ09yRGVmYXVsdHMge1xuICAgIHJldHVybiB0aGlzLiNfY29uZmlnO1xuICB9XG5cbiAgc2V0ICNjb25maWcodmFsdWU6IFNreUFmZml4Q29uZmlnIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgbWVyZ2VkOiBBZmZpeENvbmZpZ09yRGVmYXVsdHMgPSB7XG4gICAgICAuLi5ERUZBVUxUX0FGRklYX0NPTkZJRyxcbiAgICAgIC4uLnZhbHVlLFxuICAgIH07XG5cbiAgICAvLyBNYWtlIHN1cmUgbm9uZSBvZiB0aGUgdmFsdWVzIGFyZSB1bmRlZmluZWQuXG4gICAgbGV0IGtleToga2V5b2YgdHlwZW9mIG1lcmdlZDtcbiAgICBmb3IgKGtleSBpbiBtZXJnZWQpIHtcbiAgICAgIGlmIChtZXJnZWRba2V5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIChtZXJnZWQgYXMgYW55KVtrZXldID0gREVGQVVMVF9BRkZJWF9DT05GSUdba2V5XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLiNfY29uZmlnID0gbWVyZ2VkO1xuICB9XG5cbiAgI2FmZml4ZWRFbGVtZW50OiBIVE1MRWxlbWVudDtcblxuICAjYmFzZUVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuXG4gICNjdXJyZW50T2Zmc2V0OiBTa3lBZmZpeE9mZnNldCB8IHVuZGVmaW5lZDtcblxuICAjY3VycmVudFBsYWNlbWVudDogU2t5QWZmaXhQbGFjZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgI2xheW91dFZpZXdwb3J0OiBIVE1MRWxlbWVudDtcblxuICAjb2Zmc2V0Q2hhbmdlOiBTdWJqZWN0PFNreUFmZml4T2Zmc2V0Q2hhbmdlPjtcblxuICAjb2Zmc2V0Q2hhbmdlT2JzOiBPYnNlcnZhYmxlPFNreUFmZml4T2Zmc2V0Q2hhbmdlPjtcblxuICAjb3ZlcmZsb3dQYXJlbnRzOiBIVE1MRWxlbWVudFtdID0gW107XG5cbiAgI292ZXJmbG93U2Nyb2xsOiBTdWJqZWN0PHZvaWQ+O1xuXG4gICNvdmVyZmxvd1Njcm9sbE9iczogT2JzZXJ2YWJsZTx2b2lkPjtcblxuICAjcGxhY2VtZW50Q2hhbmdlOiBTdWJqZWN0PFNreUFmZml4UGxhY2VtZW50Q2hhbmdlPjtcblxuICAjcGxhY2VtZW50Q2hhbmdlT2JzOiBPYnNlcnZhYmxlPFNreUFmZml4UGxhY2VtZW50Q2hhbmdlPjtcblxuICAjcmVuZGVyZXI6IFJlbmRlcmVyMjtcblxuICAjc2Nyb2xsQ2hhbmdlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAjdmlld3BvcnRMaXN0ZW5lcnM6IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcblxuICAjdmlld3BvcnRSdWxlcjogVmlld3BvcnRSdWxlcjtcblxuICAjem9uZTogTmdab25lO1xuXG4gICNfY29uZmlnOiBBZmZpeENvbmZpZ09yRGVmYXVsdHMgPSBERUZBVUxUX0FGRklYX0NPTkZJRztcblxuICAjc2Nyb2xsQ2hhbmdlTGlzdGVuZXI6ICgpID0+IHZvaWQgPSAoKSA9PiB0aGlzLiNzY3JvbGxDaGFuZ2UubmV4dCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGFmZml4ZWRFbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgICByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHZpZXdwb3J0UnVsZXI6IFZpZXdwb3J0UnVsZXIsXG4gICAgem9uZTogTmdab25lLFxuICAgIGxheW91dFZpZXdwb3J0OiBIVE1MRWxlbWVudFxuICApIHtcbiAgICB0aGlzLiNhZmZpeGVkRWxlbWVudCA9IGFmZml4ZWRFbGVtZW50O1xuICAgIHRoaXMuI3JlbmRlcmVyID0gcmVuZGVyZXI7XG4gICAgdGhpcy4jbGF5b3V0Vmlld3BvcnQgPSBsYXlvdXRWaWV3cG9ydDtcbiAgICB0aGlzLiN2aWV3cG9ydFJ1bGVyID0gdmlld3BvcnRSdWxlcjtcbiAgICB0aGlzLiN6b25lID0gem9uZTtcblxuICAgIHRoaXMuI29mZnNldENoYW5nZSA9IG5ldyBTdWJqZWN0PFNreUFmZml4T2Zmc2V0Q2hhbmdlPigpO1xuICAgIHRoaXMuI292ZXJmbG93U2Nyb2xsID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICB0aGlzLiNwbGFjZW1lbnRDaGFuZ2UgPSBuZXcgU3ViamVjdDxTa3lBZmZpeFBsYWNlbWVudENoYW5nZT4oKTtcblxuICAgIHRoaXMuI29mZnNldENoYW5nZU9icyA9IHRoaXMuI29mZnNldENoYW5nZS5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLiNvdmVyZmxvd1Njcm9sbE9icyA9IHRoaXMuI292ZXJmbG93U2Nyb2xsLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuI3BsYWNlbWVudENoYW5nZU9icyA9IHRoaXMuI3BsYWNlbWVudENoYW5nZS5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZmZpeGVzIGFuIGVsZW1lbnQgdG8gYSBiYXNlIGVsZW1lbnQuXG4gICAqIEBwYXJhbSBiYXNlRWxlbWVudCBUaGUgYmFzZSBlbGVtZW50LlxuICAgKiBAcGFyYW0gY29uZmlnIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBhZmZpeCBhY3Rpb24uXG4gICAqL1xuICBwdWJsaWMgYWZmaXhUbyhiYXNlRWxlbWVudDogSFRNTEVsZW1lbnQsIGNvbmZpZz86IFNreUFmZml4Q29uZmlnKTogdm9pZCB7XG4gICAgdGhpcy4jcmVzZXQoKTtcblxuICAgIHRoaXMuI2NvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLiNiYXNlRWxlbWVudCA9IGJhc2VFbGVtZW50O1xuICAgIHRoaXMuI292ZXJmbG93UGFyZW50cyA9IGdldE92ZXJmbG93UGFyZW50cyhiYXNlRWxlbWVudCk7XG5cbiAgICB0aGlzLiNhZmZpeCgpO1xuXG4gICAgaWYgKHRoaXMuI2NvbmZpZy5pc1N0aWNreSkge1xuICAgICAgdGhpcy4jYWRkVmlld3BvcnRMaXN0ZW5lcnMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29uZmlnKCk6IFNreUFmZml4Q29uZmlnIHtcbiAgICByZXR1cm4gdGhpcy4jY29uZmlnO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlLXJ1bnMgdGhlIGFmZml4IGNhbGN1bGF0aW9uLlxuICAgKi9cbiAgcHVibGljIHJlYWZmaXgoKTogdm9pZCB7XG4gICAgLy8gUmVzZXQgY3VycmVudCBwbGFjZW1lbnQgdG8gcHJlZmVycmVkIHBsYWNlbWVudC5cbiAgICB0aGlzLiNjdXJyZW50UGxhY2VtZW50ID0gdGhpcy4jY29uZmlnLnBsYWNlbWVudDtcbiAgICB0aGlzLiNhZmZpeCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3lzIHRoZSBhZmZpeGVyLlxuICAgKi9cbiAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jcmVzZXQoKTtcbiAgICB0aGlzLiNwbGFjZW1lbnRDaGFuZ2UuY29tcGxldGUoKTtcbiAgICB0aGlzLiNvZmZzZXRDaGFuZ2UuY29tcGxldGUoKTtcbiAgICB0aGlzLiNvdmVyZmxvd1Njcm9sbC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI3Njcm9sbENoYW5nZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgI2FmZml4KCk6IHZvaWQge1xuICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuI2dldE9mZnNldCgpO1xuXG4gICAgY29uc3Qgb2Zmc2V0UGFyZW50UmVjdCA9IHRoaXMuI2dldE9mZnNldFBhcmVudFJlY3QoKTtcbiAgICBvZmZzZXQudG9wID0gb2Zmc2V0LnRvcCAtIG9mZnNldFBhcmVudFJlY3QudG9wO1xuICAgIG9mZnNldC5sZWZ0ID0gb2Zmc2V0LmxlZnQgLSBvZmZzZXRQYXJlbnRSZWN0LmxlZnQ7XG4gICAgb2Zmc2V0LmJvdHRvbSA9IG9mZnNldC5ib3R0b20gLSBvZmZzZXRQYXJlbnRSZWN0LnRvcDtcbiAgICBvZmZzZXQucmlnaHQgPSBvZmZzZXQucmlnaHQgLSBvZmZzZXRQYXJlbnRSZWN0LmxlZnQ7XG5cbiAgICBpZiAodGhpcy4jaXNOZXdPZmZzZXQob2Zmc2V0KSkge1xuICAgICAgdGhpcy4jcmVuZGVyZXIuc2V0U3R5bGUodGhpcy4jYWZmaXhlZEVsZW1lbnQsICd0b3AnLCBgJHtvZmZzZXQudG9wfXB4YCk7XG4gICAgICB0aGlzLiNyZW5kZXJlci5zZXRTdHlsZSh0aGlzLiNhZmZpeGVkRWxlbWVudCwgJ2xlZnQnLCBgJHtvZmZzZXQubGVmdH1weGApO1xuXG4gICAgICB0aGlzLiNvZmZzZXRDaGFuZ2UubmV4dCh7IG9mZnNldCB9KTtcbiAgICB9XG4gIH1cblxuICAjZ2V0T2Zmc2V0UGFyZW50UmVjdCgpOiBBZmZpeFJlY3Qge1xuICAgIGlmICh0aGlzLiNhZmZpeGVkRWxlbWVudC5vZmZzZXRQYXJlbnQpIHtcbiAgICAgIHJldHVybiBnZXRPdXRlclJlY3QodGhpcy4jYWZmaXhlZEVsZW1lbnQub2Zmc2V0UGFyZW50IGFzIEhUTUxFbGVtZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbGF5b3V0UmVjdCA9IGdldE91dGVyUmVjdCh0aGlzLiNsYXlvdXRWaWV3cG9ydCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0b3A6IGxheW91dFJlY3QudG9wLFxuICAgICAgICBsZWZ0OiBsYXlvdXRSZWN0LmxlZnQsXG4gICAgICAgIGhlaWdodDogbGF5b3V0UmVjdC5oZWlnaHQsXG4gICAgICAgIHdpZHRoOiBsYXlvdXRSZWN0LndpZHRoLFxuICAgICAgICBib3R0b206IGxheW91dFJlY3QudG9wIC0gbGF5b3V0UmVjdC5oZWlnaHQsXG4gICAgICAgIHJpZ2h0OiBsYXlvdXRSZWN0LmxlZnQgLSBsYXlvdXRSZWN0LndpZHRoLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAjZ2V0T2Zmc2V0KCk6IFJlcXVpcmVkPFNreUFmZml4T2Zmc2V0PiB7XG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy4jZ2V0QXV0b0ZpdENvbnRleHRQYXJlbnQoKTtcblxuICAgIGNvbnN0IG1heEF0dGVtcHRzID0gNDtcbiAgICBsZXQgYXR0ZW1wdHMgPSAwO1xuXG4gICAgbGV0IGlzQWZmaXhlZEVsZW1lbnRGdWxseVZpc2libGUgPSBmYWxzZTtcbiAgICBsZXQgb2Zmc2V0OiBSZXF1aXJlZDxTa3lBZmZpeE9mZnNldD47XG4gICAgbGV0IHBsYWNlbWVudCA9IHRoaXMuI2NvbmZpZy5wbGFjZW1lbnQ7XG5cbiAgICBkbyB7XG4gICAgICBvZmZzZXQgPSB0aGlzLiNnZXRQcmVmZXJyZWRPZmZzZXQocGxhY2VtZW50KTtcbiAgICAgIGlzQWZmaXhlZEVsZW1lbnRGdWxseVZpc2libGUgPSBpc09mZnNldEZ1bGx5VmlzaWJsZVdpdGhpblBhcmVudChcbiAgICAgICAgdGhpcy4jdmlld3BvcnRSdWxlcixcbiAgICAgICAgcGFyZW50LFxuICAgICAgICBvZmZzZXQsXG4gICAgICAgIHRoaXMuI2NvbmZpZy5hdXRvRml0T3ZlcmZsb3dPZmZzZXRcbiAgICAgICk7XG5cbiAgICAgIGlmICghdGhpcy4jY29uZmlnLmVuYWJsZUF1dG9GaXQpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNBZmZpeGVkRWxlbWVudEZ1bGx5VmlzaWJsZSkge1xuICAgICAgICBwbGFjZW1lbnQgPVxuICAgICAgICAgIGF0dGVtcHRzICUgMiA9PT0gMFxuICAgICAgICAgICAgPyBnZXRJbnZlcnNlUGxhY2VtZW50KHBsYWNlbWVudClcbiAgICAgICAgICAgIDogZ2V0TmV4dFBsYWNlbWVudChwbGFjZW1lbnQpO1xuICAgICAgfVxuXG4gICAgICBhdHRlbXB0cysrO1xuICAgIH0gd2hpbGUgKCFpc0FmZml4ZWRFbGVtZW50RnVsbHlWaXNpYmxlICYmIGF0dGVtcHRzIDwgbWF4QXR0ZW1wdHMpO1xuXG4gICAgaWYgKGlzQWZmaXhlZEVsZW1lbnRGdWxseVZpc2libGUpIHtcbiAgICAgIGlmICh0aGlzLiNpc0Jhc2VFbGVtZW50VmlzaWJsZSgpKSB7XG4gICAgICAgIHRoaXMuI25vdGlmeVBsYWNlbWVudENoYW5nZShwbGFjZW1lbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4jbm90aWZ5UGxhY2VtZW50Q2hhbmdlKG51bGwpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2Zmc2V0O1xuICAgIH1cblxuICAgIGlmICh0aGlzLiNjb25maWcuZW5hYmxlQXV0b0ZpdCkge1xuICAgICAgdGhpcy4jbm90aWZ5UGxhY2VtZW50Q2hhbmdlKG51bGwpO1xuICAgIH1cblxuICAgIC8vIE5vIHN1aXRhYmxlIHBsYWNlbWVudCB3YXMgZm91bmQsIHNvIHJldmVydCB0byBwcmVmZXJyZWQgcGxhY2VtZW50LlxuICAgIHJldHVybiB0aGlzLiNnZXRQcmVmZXJyZWRPZmZzZXQodGhpcy4jY29uZmlnLnBsYWNlbWVudCk7XG4gIH1cblxuICAjZ2V0UHJlZmVycmVkT2Zmc2V0KHBsYWNlbWVudDogU2t5QWZmaXhQbGFjZW1lbnQpOiBSZXF1aXJlZDxTa3lBZmZpeE9mZnNldD4ge1xuICAgIGlmICghdGhpcy4jYmFzZUVsZW1lbnQpIHtcbiAgICAgIHJldHVybiB7IHRvcDogMCwgbGVmdDogMCwgYm90dG9tOiAwLCByaWdodDogMCB9O1xuICAgIH1cblxuICAgIGNvbnN0IGFmZml4ZWRSZWN0ID0gZ2V0T3V0ZXJSZWN0KHRoaXMuI2FmZml4ZWRFbGVtZW50KTtcbiAgICBjb25zdCBiYXNlUmVjdCA9IHRoaXMuI2Jhc2VFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgY29uc3QgaG9yaXpvbnRhbEFsaWdubWVudCA9IHRoaXMuI2NvbmZpZy5ob3Jpem9udGFsQWxpZ25tZW50O1xuICAgIGNvbnN0IHZlcnRpY2FsQWxpZ25tZW50ID0gdGhpcy4jY29uZmlnLnZlcnRpY2FsQWxpZ25tZW50O1xuICAgIGNvbnN0IGVuYWJsZUF1dG9GaXQgPSB0aGlzLiNjb25maWcuZW5hYmxlQXV0b0ZpdDtcblxuICAgIGxldCB0b3A6IG51bWJlcjtcbiAgICBsZXQgbGVmdDogbnVtYmVyO1xuXG4gICAgaWYgKHBsYWNlbWVudCA9PT0gJ2Fib3ZlJyB8fCBwbGFjZW1lbnQgPT09ICdiZWxvdycpIHtcbiAgICAgIGlmIChwbGFjZW1lbnQgPT09ICdhYm92ZScpIHtcbiAgICAgICAgdG9wID0gYmFzZVJlY3QudG9wIC0gYWZmaXhlZFJlY3QuaGVpZ2h0O1xuXG4gICAgICAgIHN3aXRjaCAodmVydGljYWxBbGlnbm1lbnQpIHtcbiAgICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgICAgdG9wID0gdG9wICsgYWZmaXhlZFJlY3QuaGVpZ2h0O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnbWlkZGxlJzpcbiAgICAgICAgICAgIHRvcCA9IHRvcCArIGFmZml4ZWRSZWN0LmhlaWdodCAvIDI7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdG9wID0gYmFzZVJlY3QuYm90dG9tO1xuXG4gICAgICAgIHN3aXRjaCAodmVydGljYWxBbGlnbm1lbnQpIHtcbiAgICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdtaWRkbGUnOlxuICAgICAgICAgICAgdG9wID0gdG9wIC0gYWZmaXhlZFJlY3QuaGVpZ2h0IC8gMjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgICB0b3AgPSB0b3AgLSBhZmZpeGVkUmVjdC5oZWlnaHQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKGhvcml6b250YWxBbGlnbm1lbnQpIHtcbiAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgbGVmdCA9IGJhc2VSZWN0LmxlZnQ7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnY2VudGVyJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBsZWZ0ID0gYmFzZVJlY3QubGVmdCArIGJhc2VSZWN0LndpZHRoIC8gMiAtIGFmZml4ZWRSZWN0LndpZHRoIC8gMjtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgbGVmdCA9IGJhc2VSZWN0LnJpZ2h0IC0gYWZmaXhlZFJlY3Qud2lkdGg7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwbGFjZW1lbnQgPT09ICdsZWZ0Jykge1xuICAgICAgICBsZWZ0ID0gYmFzZVJlY3QubGVmdCAtIGFmZml4ZWRSZWN0LndpZHRoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGVmdCA9IGJhc2VSZWN0LnJpZ2h0O1xuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKHZlcnRpY2FsQWxpZ25tZW50KSB7XG4gICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgdG9wID0gYmFzZVJlY3QudG9wO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ21pZGRsZSc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdG9wID0gYmFzZVJlY3QudG9wICsgYmFzZVJlY3QuaGVpZ2h0IC8gMiAtIGFmZml4ZWRSZWN0LmhlaWdodCAvIDI7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICB0b3AgPSBiYXNlUmVjdC5ib3R0b20gLSBhZmZpeGVkUmVjdC5oZWlnaHQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgb2Zmc2V0OiBSZXF1aXJlZDxTa3lBZmZpeE9mZnNldD4gPSB7IHRvcCwgbGVmdCwgYm90dG9tOiAwLCByaWdodDogMCB9O1xuXG4gICAgaWYgKGVuYWJsZUF1dG9GaXQpIHtcbiAgICAgIGNvbnN0IGFkanVzdG1lbnRzID0gdGhpcy4jYWRqdXN0T2Zmc2V0VG9PdmVyZmxvd1BhcmVudChcbiAgICAgICAgeyB0b3AsIGxlZnQgfSxcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICB0aGlzLiNiYXNlRWxlbWVudFxuICAgICAgKTtcbiAgICAgIG9mZnNldC50b3AgPSBhZGp1c3RtZW50cy50b3A7XG4gICAgICBvZmZzZXQubGVmdCA9IGFkanVzdG1lbnRzLmxlZnQ7XG4gICAgfVxuXG4gICAgb2Zmc2V0LmJvdHRvbSA9IG9mZnNldC50b3AgKyBhZmZpeGVkUmVjdC5oZWlnaHQ7XG4gICAgb2Zmc2V0LnJpZ2h0ID0gb2Zmc2V0LmxlZnQgKyBhZmZpeGVkUmVjdC53aWR0aDtcblxuICAgIHJldHVybiBvZmZzZXQ7XG4gIH1cblxuICAvKipcbiAgICogU2xpZ2h0bHkgYWRqdXN0IHRoZSBvZmZzZXQgdG8gZml0IHdpdGhpbiB0aGUgc2Nyb2xsIHBhcmVudCdzIGJvdW5kYXJpZXMgaWZcbiAgICogdGhlIGFmZml4ZWQgZWxlbWVudCB3b3VsZCBvdGhlcndpc2UgYmUgY2xpcHBlZC5cbiAgICovXG4gICNhZGp1c3RPZmZzZXRUb092ZXJmbG93UGFyZW50KFxuICAgIG9mZnNldDogeyB0b3A6IG51bWJlcjsgbGVmdDogbnVtYmVyIH0sXG4gICAgcGxhY2VtZW50OiBTa3lBZmZpeFBsYWNlbWVudCxcbiAgICBiYXNlRWxlbWVudDogSFRNTEVsZW1lbnRcbiAgKTogeyB0b3A6IG51bWJlcjsgbGVmdDogbnVtYmVyIH0ge1xuICAgIGNvbnN0IGFmZml4ZWRSZWN0ID0gZ2V0T3V0ZXJSZWN0KHRoaXMuI2FmZml4ZWRFbGVtZW50KTtcbiAgICBjb25zdCBiYXNlUmVjdCA9IGJhc2VFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy4jZ2V0QXV0b0ZpdENvbnRleHRQYXJlbnQoKTtcbiAgICBsZXQgcGFyZW50T2Zmc2V0OiBSZXF1aXJlZDxTa3lBZmZpeE9mZnNldD47XG4gICAgaWYgKHRoaXMuI2NvbmZpZy5hdXRvRml0Q29udGV4dCA9PT0gU2t5QWZmaXhBdXRvRml0Q29udGV4dC5PdmVyZmxvd1BhcmVudCkge1xuICAgICAgaWYgKHRoaXMuI2NvbmZpZy5hdXRvRml0T3ZlcmZsb3dPZmZzZXQpIHtcbiAgICAgICAgLy8gV2hlbiB0aGUgY29uZmlnIGNvbnRhaW5zIGEgc3BlY2lmaWMgb2Zmc2V0LlxuICAgICAgICBwYXJlbnRPZmZzZXQgPSBnZXRFbGVtZW50T2Zmc2V0KFxuICAgICAgICAgIHBhcmVudCxcbiAgICAgICAgICB0aGlzLiNjb25maWcuYXV0b0ZpdE92ZXJmbG93T2Zmc2V0XG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBpc09mZnNldEZ1bGx5VmlzaWJsZVdpdGhpblBhcmVudCh0aGlzLiN2aWV3cG9ydFJ1bGVyLCBwYXJlbnQsIGJhc2VSZWN0KVxuICAgICAgKSB7XG4gICAgICAgIC8vIFdoZW4gdGhlIGJhc2UgZWxlbWVudCBpcyBmdWxseSB2aXNpYmxlIHdpdGhpbiB0aGUgcGFyZW50LCBhaW0gZm9yIHRoZSB2aXNpYmxlIHBvcnRpb24gb2YgdGhlIHBhcmVudCBlbGVtZW50LlxuICAgICAgICBwYXJlbnRPZmZzZXQgPSBnZXRWaXNpYmxlUmVjdEZvckVsZW1lbnQodGhpcy4jdmlld3BvcnRSdWxlciwgcGFyZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEFueXdoZXJlIGluIHRoZSBwYXJlbnQgZWxlbWVudC5cbiAgICAgICAgcGFyZW50T2Zmc2V0ID0gZ2V0T3V0ZXJSZWN0KHBhcmVudCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZpZXdwb3J0UmVjdCA9IHRoaXMuI3ZpZXdwb3J0UnVsZXIuZ2V0Vmlld3BvcnRSZWN0KCk7XG4gICAgICBwYXJlbnRPZmZzZXQgPSB7XG4gICAgICAgIHRvcDogLXZpZXdwb3J0UmVjdC50b3AsXG4gICAgICAgIGxlZnQ6IC12aWV3cG9ydFJlY3QubGVmdCxcbiAgICAgICAgYm90dG9tOiAtdmlld3BvcnRSZWN0LmJvdHRvbSxcbiAgICAgICAgcmlnaHQ6IC12aWV3cG9ydFJlY3QucmlnaHQsXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEEgcGl4ZWwgdmFsdWUgcmVwcmVzZW50aW5nIHRoZSBsZWV3YXkgYmV0d2VlbiB0aGUgZWRnZSBvZiB0aGUgb3ZlcmZsb3cgcGFyZW50IGFuZCB0aGUgZWRnZVxuICAgIC8vIG9mIHRoZSBiYXNlIGVsZW1lbnQgYmVmb3JlIGl0IGRpc2FwcGVhcnMgZnJvbSB2aWV3LlxuICAgIC8vIElmIHRoZSB2aXNpYmxlIHBvcnRpb24gb2YgdGhlIGJhc2UgZWxlbWVudCBpcyBsZXNzIHRoYW4gdGhpcyBwaXhlbCB2YWx1ZSwgdGhlIGF1dG8tZml0XG4gICAgLy8gZnVuY3Rpb25hbGl0eSBhdHRlbXB0cyB0byBmaW5kIGFub3RoZXIgcGxhY2VtZW50LlxuICAgIGNvbnN0IGRlZmF1bHRQaXhlbFRvbGVyYW5jZSA9IDQwO1xuICAgIGxldCBwaXhlbFRvbGVyYW5jZTogbnVtYmVyO1xuXG4gICAgY29uc3Qgb3JpZ2luYWxPZmZzZXRUb3AgPSBvZmZzZXQudG9wO1xuICAgIGNvbnN0IG9yaWdpbmFsT2Zmc2V0TGVmdCA9IG9mZnNldC5sZWZ0O1xuXG4gICAgc3dpdGNoIChwbGFjZW1lbnQpIHtcbiAgICAgIGNhc2UgJ2Fib3ZlJzpcbiAgICAgIGNhc2UgJ2JlbG93JzpcbiAgICAgICAgLy8gS2VlcCB0aGUgYWZmaXhlZCBlbGVtZW50IHdpdGhpbiB0aGUgb3ZlcmZsb3cgcGFyZW50LlxuICAgICAgICBpZiAob2Zmc2V0LmxlZnQgPCBwYXJlbnRPZmZzZXQubGVmdCkge1xuICAgICAgICAgIG9mZnNldC5sZWZ0ID0gcGFyZW50T2Zmc2V0LmxlZnQ7XG4gICAgICAgIH0gZWxzZSBpZiAob2Zmc2V0LmxlZnQgKyBhZmZpeGVkUmVjdC53aWR0aCA+IHBhcmVudE9mZnNldC5yaWdodCkge1xuICAgICAgICAgIG9mZnNldC5sZWZ0ID0gcGFyZW50T2Zmc2V0LnJpZ2h0IC0gYWZmaXhlZFJlY3Qud2lkdGg7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVc2UgYSBzbWFsbGVyIHBpeGVsIHRvbGVyYW5jZSBpZiB0aGUgYmFzZSBlbGVtZW50IHdpZHRoIGlzIGxlc3MgdGhhbiB0aGUgZGVmYXVsdC5cbiAgICAgICAgcGl4ZWxUb2xlcmFuY2UgPSBNYXRoLm1pbihkZWZhdWx0UGl4ZWxUb2xlcmFuY2UsIGJhc2VSZWN0LndpZHRoKTtcblxuICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGFmZml4ZWQgZWxlbWVudCBuZXZlciBkZXRhY2hlcyBmcm9tIHRoZSBiYXNlIGVsZW1lbnQuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBvZmZzZXQubGVmdCArIHBpeGVsVG9sZXJhbmNlID4gYmFzZVJlY3QucmlnaHQgfHxcbiAgICAgICAgICBvZmZzZXQubGVmdCArIGFmZml4ZWRSZWN0LndpZHRoIC0gcGl4ZWxUb2xlcmFuY2UgPCBiYXNlUmVjdC5sZWZ0XG4gICAgICAgICkge1xuICAgICAgICAgIG9mZnNldC5sZWZ0ID0gb3JpZ2luYWxPZmZzZXRMZWZ0O1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAvLyBLZWVwIHRoZSBhZmZpeGVkIGVsZW1lbnQgd2l0aGluIHRoZSBvdmVyZmxvdyBwYXJlbnQuXG4gICAgICAgIGlmIChvZmZzZXQudG9wIDwgcGFyZW50T2Zmc2V0LnRvcCkge1xuICAgICAgICAgIG9mZnNldC50b3AgPSBwYXJlbnRPZmZzZXQudG9wO1xuICAgICAgICB9IGVsc2UgaWYgKG9mZnNldC50b3AgKyBhZmZpeGVkUmVjdC5oZWlnaHQgPiBwYXJlbnRPZmZzZXQuYm90dG9tKSB7XG4gICAgICAgICAgb2Zmc2V0LnRvcCA9IHBhcmVudE9mZnNldC5ib3R0b20gLSBhZmZpeGVkUmVjdC5oZWlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVc2UgYSBzbWFsbGVyIHBpeGVsIHRvbGVyYW5jZSBpZiB0aGUgYmFzZSBlbGVtZW50IGhlaWdodCBpcyBsZXNzIHRoYW4gdGhlIGRlZmF1bHQuXG4gICAgICAgIHBpeGVsVG9sZXJhbmNlID0gTWF0aC5taW4oZGVmYXVsdFBpeGVsVG9sZXJhbmNlLCBiYXNlUmVjdC5oZWlnaHQpO1xuXG4gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgYWZmaXhlZCBlbGVtZW50IG5ldmVyIGRldGFjaGVzIGZyb20gdGhlIGJhc2UgZWxlbWVudC5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIG9mZnNldC50b3AgKyBwaXhlbFRvbGVyYW5jZSA+IGJhc2VSZWN0LmJvdHRvbSB8fFxuICAgICAgICAgIG9mZnNldC50b3AgKyBhZmZpeGVkUmVjdC5oZWlnaHQgLSBwaXhlbFRvbGVyYW5jZSA8IGJhc2VSZWN0LnRvcFxuICAgICAgICApIHtcbiAgICAgICAgICBvZmZzZXQudG9wID0gb3JpZ2luYWxPZmZzZXRUb3A7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gb2Zmc2V0O1xuICB9XG5cbiAgI2dldEltbWVkaWF0ZU92ZXJmbG93UGFyZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy4jb3ZlcmZsb3dQYXJlbnRzWzBdO1xuICB9XG5cbiAgI2dldEF1dG9GaXRDb250ZXh0UGFyZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBib2R5RWxlbWVudCA9IHRoaXMuI292ZXJmbG93UGFyZW50c1t0aGlzLiNvdmVyZmxvd1BhcmVudHMubGVuZ3RoIC0gMV07XG5cbiAgICByZXR1cm4gdGhpcy4jY29uZmlnLmF1dG9GaXRDb250ZXh0ID09PSBTa3lBZmZpeEF1dG9GaXRDb250ZXh0Lk92ZXJmbG93UGFyZW50XG4gICAgICA/IHRoaXMuI2dldEltbWVkaWF0ZU92ZXJmbG93UGFyZW50KClcbiAgICAgIDogYm9keUVsZW1lbnQ7XG4gIH1cblxuICAjbm90aWZ5UGxhY2VtZW50Q2hhbmdlKHBsYWNlbWVudDogU2t5QWZmaXhQbGFjZW1lbnQgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2N1cnJlbnRQbGFjZW1lbnQgIT09IHBsYWNlbWVudCkge1xuICAgICAgdGhpcy4jY3VycmVudFBsYWNlbWVudCA9IHBsYWNlbWVudCA/PyB1bmRlZmluZWQ7XG4gICAgICB0aGlzLiNwbGFjZW1lbnRDaGFuZ2UubmV4dCh7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gICNyZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLiNyZW1vdmVWaWV3cG9ydExpc3RlbmVycygpO1xuXG4gICAgdGhpcy4jb3ZlcmZsb3dQYXJlbnRzID0gW107XG5cbiAgICB0aGlzLiNjb25maWcgPVxuICAgICAgdGhpcy4jYmFzZUVsZW1lbnQgPVxuICAgICAgdGhpcy4jY3VycmVudFBsYWNlbWVudCA9XG4gICAgICB0aGlzLiNjdXJyZW50T2Zmc2V0ID1cbiAgICAgICAgdW5kZWZpbmVkO1xuICB9XG5cbiAgI2lzTmV3T2Zmc2V0KG9mZnNldDogU2t5QWZmaXhPZmZzZXQpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy4jY3VycmVudE9mZnNldCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLiNjdXJyZW50T2Zmc2V0ID0gb2Zmc2V0O1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy4jY3VycmVudE9mZnNldC50b3AgPT09IG9mZnNldC50b3AgJiZcbiAgICAgIHRoaXMuI2N1cnJlbnRPZmZzZXQubGVmdCA9PT0gb2Zmc2V0LmxlZnRcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLiNjdXJyZW50T2Zmc2V0ID0gb2Zmc2V0O1xuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAjaXNCYXNlRWxlbWVudFZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgLy8gQ2FuJ3QgZ2V0IGhlcmUgaWYgdGhlIGJhc2UgZWxlbWVudCBpcyB1bmRlZmluZWQuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCF0aGlzLiNiYXNlRWxlbWVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGJhc2VSZWN0ID0gdGhpcy4jYmFzZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICByZXR1cm4gaXNPZmZzZXRQYXJ0aWFsbHlWaXNpYmxlV2l0aGluUGFyZW50KFxuICAgICAgdGhpcy4jdmlld3BvcnRSdWxlcixcbiAgICAgIHRoaXMuI2dldEltbWVkaWF0ZU92ZXJmbG93UGFyZW50KCksXG4gICAgICB7XG4gICAgICAgIHRvcDogYmFzZVJlY3QudG9wLFxuICAgICAgICBsZWZ0OiBiYXNlUmVjdC5sZWZ0LFxuICAgICAgICByaWdodDogYmFzZVJlY3QucmlnaHQsXG4gICAgICAgIGJvdHRvbTogYmFzZVJlY3QuYm90dG9tLFxuICAgICAgfSxcbiAgICAgIHRoaXMuI2NvbmZpZy5hdXRvRml0T3ZlcmZsb3dPZmZzZXRcbiAgICApO1xuICB9XG5cbiAgI2FkZFZpZXdwb3J0TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuI3ZpZXdwb3J0TGlzdGVuZXJzID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLy8gUmVzaXplIGFuZCBvcmllbnRhdGlvbiBjaGFuZ2VzLlxuICAgIHRoaXMuI3ZpZXdwb3J0TGlzdGVuZXJzLmFkZChcbiAgICAgIHRoaXMuI3ZpZXdwb3J0UnVsZXIuY2hhbmdlKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy4jYWZmaXgoKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuI3ZpZXdwb3J0TGlzdGVuZXJzLmFkZChcbiAgICAgIHRoaXMuI3Njcm9sbENoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLiNhZmZpeCgpO1xuICAgICAgICB0aGlzLiNvdmVyZmxvd1Njcm9sbC5uZXh0KCk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICAvLyBMaXN0ZW4gZm9yIHNjcm9sbCBldmVudHMgb24gdGhlIHdpbmRvdywgdmlzdWFsIHZpZXdwb3J0LCBhbmQgYW55IG92ZXJmbG93IHBhcmVudHMuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9ibG9nL3Zpc3VhbC12aWV3cG9ydC1hcGkvI2V2ZW50cy1vbmx5LWZpcmUtd2hlbi10aGUtdmlzdWFsLXZpZXdwb3J0LWNoYW5nZXNcbiAgICB0aGlzLiN6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIFt3aW5kb3csIHdpbmRvdy52aXN1YWxWaWV3cG9ydCwgLi4udGhpcy4jb3ZlcmZsb3dQYXJlbnRzXS5mb3JFYWNoKFxuICAgICAgICAocGFyZW50RWxlbWVudCkgPT4ge1xuICAgICAgICAgIHBhcmVudEVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuI3Njcm9sbENoYW5nZUxpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gICNyZW1vdmVWaWV3cG9ydExpc3RlbmVycygpOiB2b2lkIHtcbiAgICB0aGlzLiN2aWV3cG9ydExpc3RlbmVycz8udW5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuI3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgW3dpbmRvdywgd2luZG93LnZpc3VhbFZpZXdwb3J0LCAuLi50aGlzLiNvdmVyZmxvd1BhcmVudHNdLmZvckVhY2goXG4gICAgICAgIChwYXJlbnRFbGVtZW50KSA9PiB7XG4gICAgICAgICAgcGFyZW50RWxlbWVudD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAgICdzY3JvbGwnLFxuICAgICAgICAgICAgdGhpcy4jc2Nyb2xsQ2hhbmdlTGlzdGVuZXJcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|
@@ -12,19 +12,11 @@ export function getElementOffset(element, bufferOffset) {
|
|
12
12
|
let left;
|
13
13
|
let right;
|
14
14
|
let bottom;
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
}
|
21
|
-
else {
|
22
|
-
const clientRect = element.getBoundingClientRect();
|
23
|
-
left = clientRect.left;
|
24
|
-
top = clientRect.top;
|
25
|
-
right = clientRect.right;
|
26
|
-
bottom = clientRect.bottom;
|
27
|
-
}
|
15
|
+
const clientRect = element.getBoundingClientRect();
|
16
|
+
left = clientRect.left;
|
17
|
+
top = clientRect.top;
|
18
|
+
right = clientRect.right;
|
19
|
+
bottom = clientRect.bottom;
|
28
20
|
bottom -= bufferOffsetBottom;
|
29
21
|
left += bufferOffsetLeft;
|
30
22
|
right -= bufferOffsetRight;
|
@@ -36,16 +28,53 @@ export function getElementOffset(element, bufferOffset) {
|
|
36
28
|
top,
|
37
29
|
};
|
38
30
|
}
|
31
|
+
/**
|
32
|
+
* Returns an AffixRect that represents the outer dimensions of a given element.
|
33
|
+
*/
|
34
|
+
export function getOuterRect(element) {
|
35
|
+
const rect = element.getBoundingClientRect();
|
36
|
+
const computedStyle = window.getComputedStyle(element, undefined);
|
37
|
+
const marginTop = parseFloat(computedStyle.marginTop);
|
38
|
+
const marginLeft = parseFloat(computedStyle.marginLeft);
|
39
|
+
const marginRight = parseFloat(computedStyle.marginRight);
|
40
|
+
const marginBottom = parseFloat(computedStyle.marginBottom);
|
41
|
+
return {
|
42
|
+
top: rect.top - marginTop,
|
43
|
+
left: rect.left - marginLeft,
|
44
|
+
bottom: rect.top + rect.height + marginBottom,
|
45
|
+
right: rect.left + rect.width + marginLeft + marginRight,
|
46
|
+
width: rect.width + marginLeft + marginRight,
|
47
|
+
height: rect.height + marginTop + marginBottom,
|
48
|
+
};
|
49
|
+
}
|
50
|
+
/**
|
51
|
+
* Returns the visible rect for a given element.
|
52
|
+
*/
|
53
|
+
export function getVisibleRectForElement(viewportRuler, element) {
|
54
|
+
const elementRect = getOuterRect(element);
|
55
|
+
const viewportRect = viewportRuler.getViewportRect();
|
56
|
+
const visibleRect = {
|
57
|
+
top: Math.max(elementRect.top, 0),
|
58
|
+
left: Math.max(elementRect.left, 0),
|
59
|
+
bottom: Math.min(elementRect.bottom, viewportRect.bottom),
|
60
|
+
right: Math.min(elementRect.right, viewportRect.right),
|
61
|
+
};
|
62
|
+
return {
|
63
|
+
...visibleRect,
|
64
|
+
width: visibleRect.right - visibleRect.left,
|
65
|
+
height: visibleRect.bottom - visibleRect.top,
|
66
|
+
};
|
67
|
+
}
|
39
68
|
export function getOverflowParents(child) {
|
40
69
|
const bodyElement = window.document.body;
|
41
70
|
const results = [];
|
42
71
|
let parentElement = child?.parentNode;
|
43
|
-
while (parentElement !== undefined &&
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
72
|
+
while (parentElement !== undefined && parentElement instanceof HTMLElement) {
|
73
|
+
const computedStyle = window.getComputedStyle(parentElement, undefined);
|
74
|
+
const overflowY = computedStyle.overflowY.toLowerCase();
|
75
|
+
if (computedStyle.position === 'fixed' || parentElement.matches('body')) {
|
76
|
+
break;
|
77
|
+
}
|
49
78
|
if (overflowY === 'auto' ||
|
50
79
|
overflowY === 'hidden' ||
|
51
80
|
overflowY === 'scroll') {
|
@@ -58,21 +87,36 @@ export function getOverflowParents(child) {
|
|
58
87
|
}
|
59
88
|
/**
|
60
89
|
* Confirms offset is fully visible within a parent element.
|
61
|
-
* @param parent
|
62
|
-
* @param offset
|
63
90
|
*/
|
64
|
-
export function isOffsetFullyVisibleWithinParent(parent, offset, bufferOffset) {
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
parentOffset
|
69
|
-
|
91
|
+
export function isOffsetFullyVisibleWithinParent(viewportRuler, parent, offset, bufferOffset) {
|
92
|
+
let parentOffset;
|
93
|
+
if (parent.matches('body')) {
|
94
|
+
const viewportRect = viewportRuler.getViewportRect();
|
95
|
+
parentOffset = {
|
96
|
+
top: 0,
|
97
|
+
left: 0,
|
98
|
+
right: viewportRect.right,
|
99
|
+
bottom: viewportRect.bottom,
|
100
|
+
};
|
101
|
+
}
|
102
|
+
else if (bufferOffset) {
|
103
|
+
parentOffset = getElementOffset(parent, bufferOffset);
|
104
|
+
}
|
105
|
+
else {
|
106
|
+
parentOffset = getVisibleRectForElement(viewportRuler, parent);
|
107
|
+
}
|
108
|
+
return (parentOffset.top <= offset.top &&
|
109
|
+
parentOffset.right >= offset.right &&
|
110
|
+
parentOffset.bottom >= offset.bottom &&
|
111
|
+
parentOffset.left <= offset.left);
|
70
112
|
}
|
71
|
-
export function isOffsetPartiallyVisibleWithinParent(parent, offset, bufferOffset) {
|
72
|
-
const parentOffset =
|
113
|
+
export function isOffsetPartiallyVisibleWithinParent(viewportRuler, parent, offset, bufferOffset) {
|
114
|
+
const parentOffset = bufferOffset
|
115
|
+
? getElementOffset(parent, bufferOffset)
|
116
|
+
: getVisibleRectForElement(viewportRuler, parent);
|
73
117
|
return !(parentOffset.top >= offset.bottom ||
|
74
118
|
parentOffset.right <= offset.left ||
|
75
119
|
parentOffset.bottom <= offset.top ||
|
76
120
|
parentOffset.left >= offset.right);
|
77
121
|
}
|
78
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL2FmZml4L2RvbS11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixPQUFvQixFQUNwQixZQUE2QjtJQUU3QixNQUFNLGtCQUFrQixHQUFHLFlBQVksRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDO0lBQ3JELE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxFQUFFLElBQUksSUFBSSxDQUFDLENBQUM7SUFDakQsTUFBTSxpQkFBaUIsR0FBRyxZQUFZLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQztJQUNuRCxNQUFNLGVBQWUsR0FBRyxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUUvQyxJQUFJLEdBQVcsQ0FBQztJQUNoQixJQUFJLElBQVksQ0FBQztJQUNqQixJQUFJLEtBQWEsQ0FBQztJQUNsQixJQUFJLE1BQWMsQ0FBQztJQUVuQixJQUFJLE9BQU8sS0FBSyxRQUFRLENBQUMsSUFBSSxFQUFFO1FBQzdCLElBQUksR0FBRyxDQUFDLENBQUM7UUFDVCxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1IsS0FBSyxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDO1FBQzdDLE1BQU0sR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQztLQUNoRDtTQUFNO1FBQ0wsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDbkQsSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDdkIsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUM7UUFDckIsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFDekIsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7S0FDNUI7SUFFRCxNQUFNLElBQUksa0JBQWtCLENBQUM7SUFDN0IsSUFBSSxJQUFJLGdCQUFnQixDQUFDO0lBQ3pCLEtBQUssSUFBSSxpQkFBaUIsQ0FBQztJQUMzQixHQUFHLElBQUksZUFBZSxDQUFDO0lBRXZCLE9BQU87UUFDTCxNQUFNO1FBQ04sSUFBSTtRQUNKLEtBQUs7UUFDTCxHQUFHO0tBQ0osQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsS0FBa0I7SUFDbkQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDekMsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBRW5CLElBQUksYUFBYSxHQUFHLEtBQUssRUFBRSxVQUFVLENBQUM7SUFFdEMsT0FDRSxhQUFhLEtBQUssU0FBUztRQUMzQixhQUFhLEtBQUssV0FBVztRQUM3QixhQUFhLFlBQVksV0FBVyxFQUNwQztRQUNBLE1BQU0sU0FBUyxHQUFHLE1BQU07YUFDckIsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQzthQUMxQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFM0IsSUFDRSxTQUFTLEtBQUssTUFBTTtZQUNwQixTQUFTLEtBQUssUUFBUTtZQUN0QixTQUFTLEtBQUssUUFBUSxFQUN0QjtZQUNBLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDN0I7UUFFRCxhQUFhLEdBQUcsYUFBYSxDQUFDLFVBQVUsQ0FBQztLQUMxQztJQUVELE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFMUIsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZ0NBQWdDLENBQzlDLE1BQW1CLEVBQ25CLE1BQWdDLEVBQ2hDLFlBQTZCO0lBRTdCLE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztJQUU1RCxPQUFPLENBQUMsQ0FDTixZQUFZLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHO1FBQzdCLFlBQVksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUs7UUFDakMsWUFBWSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTTtRQUNuQyxZQUFZLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQ2hDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLG9DQUFvQyxDQUNsRCxNQUFtQixFQUNuQixNQUFnQyxFQUNoQyxZQUE2QjtJQUU3QixNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFFNUQsT0FBTyxDQUFDLENBQ04sWUFBWSxDQUFDLEdBQUcsSUFBSSxNQUFNLENBQUMsTUFBTTtRQUNqQyxZQUFZLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxJQUFJO1FBQ2pDLFlBQVksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLEdBQUc7UUFDakMsWUFBWSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsS0FBSyxDQUNsQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNreUFmZml4T2Zmc2V0IH0gZnJvbSAnLi9hZmZpeC1vZmZzZXQnO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIG9mZnNldCB2YWx1ZXMgb2YgYSBnaXZlbiBlbGVtZW50LlxuICogQHBhcmFtIGVsZW1lbnQgVGhlIEhUTUwgZWxlbWVudC5cbiAqIEBwYXJhbSBidWZmZXJPZmZzZXQgQW4gb3B0aW9uYWwgb2Zmc2V0IHRvIGFkZC9zdWJ0cmFjdCB0byB0aGUgZWxlbWVudCdzIGFjdHVhbCBvZmZzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbGVtZW50T2Zmc2V0KFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgYnVmZmVyT2Zmc2V0PzogU2t5QWZmaXhPZmZzZXRcbik6IFJlcXVpcmVkPFNreUFmZml4T2Zmc2V0PiB7XG4gIGNvbnN0IGJ1ZmZlck9mZnNldEJvdHRvbSA9IGJ1ZmZlck9mZnNldD8uYm90dG9tIHx8IDA7XG4gIGNvbnN0IGJ1ZmZlck9mZnNldExlZnQgPSBidWZmZXJPZmZzZXQ/LmxlZnQgfHwgMDtcbiAgY29uc3QgYnVmZmVyT2Zmc2V0UmlnaHQgPSBidWZmZXJPZmZzZXQ/LnJpZ2h0IHx8IDA7XG4gIGNvbnN0IGJ1ZmZlck9mZnNldFRvcCA9IGJ1ZmZlck9mZnNldD8udG9wIHx8IDA7XG5cbiAgbGV0IHRvcDogbnVtYmVyO1xuICBsZXQgbGVmdDogbnVtYmVyO1xuICBsZXQgcmlnaHQ6IG51bWJlcjtcbiAgbGV0IGJvdHRvbTogbnVtYmVyO1xuXG4gIGlmIChlbGVtZW50ID09PSBkb2N1bWVudC5ib2R5KSB7XG4gICAgbGVmdCA9IDA7XG4gICAgdG9wID0gMDtcbiAgICByaWdodCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICBib3R0b20gPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGNsaWVudFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGxlZnQgPSBjbGllbnRSZWN0LmxlZnQ7XG4gICAgdG9wID0gY2xpZW50UmVjdC50b3A7XG4gICAgcmlnaHQgPSBjbGllbnRSZWN0LnJpZ2h0O1xuICAgIGJvdHRvbSA9IGNsaWVudFJlY3QuYm90dG9tO1xuICB9XG5cbiAgYm90dG9tIC09IGJ1ZmZlck9mZnNldEJvdHRvbTtcbiAgbGVmdCArPSBidWZmZXJPZmZzZXRMZWZ0O1xuICByaWdodCAtPSBidWZmZXJPZmZzZXRSaWdodDtcbiAgdG9wICs9IGJ1ZmZlck9mZnNldFRvcDtcblxuICByZXR1cm4ge1xuICAgIGJvdHRvbSxcbiAgICBsZWZ0LFxuICAgIHJpZ2h0LFxuICAgIHRvcCxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE92ZXJmbG93UGFyZW50cyhjaGlsZDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudFtdIHtcbiAgY29uc3QgYm9keUVsZW1lbnQgPSB3aW5kb3cuZG9jdW1lbnQuYm9keTtcbiAgY29uc3QgcmVzdWx0cyA9IFtdO1xuXG4gIGxldCBwYXJlbnRFbGVtZW50ID0gY2hpbGQ/LnBhcmVudE5vZGU7XG5cbiAgd2hpbGUgKFxuICAgIHBhcmVudEVsZW1lbnQgIT09IHVuZGVmaW5lZCAmJlxuICAgIHBhcmVudEVsZW1lbnQgIT09IGJvZHlFbGVtZW50ICYmXG4gICAgcGFyZW50RWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50XG4gICkge1xuICAgIGNvbnN0IG92ZXJmbG93WSA9IHdpbmRvd1xuICAgICAgLmdldENvbXB1dGVkU3R5bGUocGFyZW50RWxlbWVudCwgdW5kZWZpbmVkKVxuICAgICAgLm92ZXJmbG93WS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgaWYgKFxuICAgICAgb3ZlcmZsb3dZID09PSAnYXV0bycgfHxcbiAgICAgIG92ZXJmbG93WSA9PT0gJ2hpZGRlbicgfHxcbiAgICAgIG92ZXJmbG93WSA9PT0gJ3Njcm9sbCdcbiAgICApIHtcbiAgICAgIHJlc3VsdHMucHVzaChwYXJlbnRFbGVtZW50KTtcbiAgICB9XG5cbiAgICBwYXJlbnRFbGVtZW50ID0gcGFyZW50RWxlbWVudC5wYXJlbnROb2RlO1xuICB9XG5cbiAgcmVzdWx0cy5wdXNoKGJvZHlFbGVtZW50KTtcblxuICByZXR1cm4gcmVzdWx0cztcbn1cblxuLyoqXG4gKiBDb25maXJtcyBvZmZzZXQgaXMgZnVsbHkgdmlzaWJsZSB3aXRoaW4gYSBwYXJlbnQgZWxlbWVudC5cbiAqIEBwYXJhbSBwYXJlbnRcbiAqIEBwYXJhbSBvZmZzZXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzT2Zmc2V0RnVsbHlWaXNpYmxlV2l0aGluUGFyZW50KFxuICBwYXJlbnQ6IEhUTUxFbGVtZW50LFxuICBvZmZzZXQ6IFJlcXVpcmVkPFNreUFmZml4T2Zmc2V0PixcbiAgYnVmZmVyT2Zmc2V0PzogU2t5QWZmaXhPZmZzZXRcbik6IGJvb2xlYW4ge1xuICBjb25zdCBwYXJlbnRPZmZzZXQgPSBnZXRFbGVtZW50T2Zmc2V0KHBhcmVudCwgYnVmZmVyT2Zmc2V0KTtcblxuICByZXR1cm4gIShcbiAgICBwYXJlbnRPZmZzZXQudG9wID4gb2Zmc2V0LnRvcCB8fFxuICAgIHBhcmVudE9mZnNldC5yaWdodCA8IG9mZnNldC5yaWdodCB8fFxuICAgIHBhcmVudE9mZnNldC5ib3R0b20gPCBvZmZzZXQuYm90dG9tIHx8XG4gICAgcGFyZW50T2Zmc2V0LmxlZnQgPiBvZmZzZXQubGVmdFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNPZmZzZXRQYXJ0aWFsbHlWaXNpYmxlV2l0aGluUGFyZW50KFxuICBwYXJlbnQ6IEhUTUxFbGVtZW50LFxuICBvZmZzZXQ6IFJlcXVpcmVkPFNreUFmZml4T2Zmc2V0PixcbiAgYnVmZmVyT2Zmc2V0PzogU2t5QWZmaXhPZmZzZXRcbik6IGJvb2xlYW4ge1xuICBjb25zdCBwYXJlbnRPZmZzZXQgPSBnZXRFbGVtZW50T2Zmc2V0KHBhcmVudCwgYnVmZmVyT2Zmc2V0KTtcblxuICByZXR1cm4gIShcbiAgICBwYXJlbnRPZmZzZXQudG9wID49IG9mZnNldC5ib3R0b20gfHxcbiAgICBwYXJlbnRPZmZzZXQucmlnaHQgPD0gb2Zmc2V0LmxlZnQgfHxcbiAgICBwYXJlbnRPZmZzZXQuYm90dG9tIDw9IG9mZnNldC50b3AgfHxcbiAgICBwYXJlbnRPZmZzZXQubGVmdCA+PSBvZmZzZXQucmlnaHRcbiAgKTtcbn1cbiJdfQ==
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL2FmZml4L2RvbS11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQTs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixPQUFvQixFQUNwQixZQUE2QjtJQUU3QixNQUFNLGtCQUFrQixHQUFHLFlBQVksRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDO0lBQ3JELE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxFQUFFLElBQUksSUFBSSxDQUFDLENBQUM7SUFDakQsTUFBTSxpQkFBaUIsR0FBRyxZQUFZLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQztJQUNuRCxNQUFNLGVBQWUsR0FBRyxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUUvQyxJQUFJLEdBQVcsQ0FBQztJQUNoQixJQUFJLElBQVksQ0FBQztJQUNqQixJQUFJLEtBQWEsQ0FBQztJQUNsQixJQUFJLE1BQWMsQ0FBQztJQUVuQixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUNuRCxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztJQUN2QixHQUFHLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQztJQUNyQixLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztJQUN6QixNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztJQUUzQixNQUFNLElBQUksa0JBQWtCLENBQUM7SUFDN0IsSUFBSSxJQUFJLGdCQUFnQixDQUFDO0lBQ3pCLEtBQUssSUFBSSxpQkFBaUIsQ0FBQztJQUMzQixHQUFHLElBQUksZUFBZSxDQUFDO0lBRXZCLE9BQU87UUFDTCxNQUFNO1FBQ04sSUFBSTtRQUNKLEtBQUs7UUFDTCxHQUFHO0tBQ0osQ0FBQztBQUNKLENBQUM7QUFFRDs7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RUFDbkIsTUFBZ0MsRUFDaEMsWUFBNkI7SUFFN0IsTUFBTSxZQUFZLEdBQUcsWUFBWTtRQUMvQixDQUFDLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQztRQUN4QyxDQUFDLENBQUMsd0JBQXdCLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRXBELE9BQU8sQ0FBQyxDQUNOLFlBQVksQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLE1BQU07UUFDakMsWUFBWSxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsSUFBSTtRQUNqQyxZQUFZLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxHQUFHO1FBQ2pDLFlBQVksQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLEtBQUssQ0FDbEMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWaWV3cG9ydFJ1bGVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuXG5pbXBvcnQgeyBTa3lBZmZpeE9mZnNldCB9IGZyb20gJy4vYWZmaXgtb2Zmc2V0JztcbmltcG9ydCB7IEFmZml4UmVjdCB9IGZyb20gJy4vYWZmaXgtcmVjdCc7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgb2Zmc2V0IHZhbHVlcyBvZiBhIGdpdmVuIGVsZW1lbnQuXG4gKiBAcGFyYW0gZWxlbWVudCBUaGUgSFRNTCBlbGVtZW50LlxuICogQHBhcmFtIGJ1ZmZlck9mZnNldCBBbiBvcHRpb25hbCBvZmZzZXQgdG8gYWRkL3N1YnRyYWN0IHRvIHRoZSBlbGVtZW50J3MgYWN0dWFsIG9mZnNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVsZW1lbnRPZmZzZXQoXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICBidWZmZXJPZmZzZXQ/OiBTa3lBZmZpeE9mZnNldFxuKTogUmVxdWlyZWQ8U2t5QWZmaXhPZmZzZXQ+IHtcbiAgY29uc3QgYnVmZmVyT2Zmc2V0Qm90dG9tID0gYnVmZmVyT2Zmc2V0Py5ib3R0b20gfHwgMDtcbiAgY29uc3QgYnVmZmVyT2Zmc2V0TGVmdCA9IGJ1ZmZlck9mZnNldD8ubGVmdCB8fCAwO1xuICBjb25zdCBidWZmZXJPZmZzZXRSaWdodCA9IGJ1ZmZlck9mZnNldD8ucmlnaHQgfHwgMDtcbiAgY29uc3QgYnVmZmVyT2Zmc2V0VG9wID0gYnVmZmVyT2Zmc2V0Py50b3AgfHwgMDtcblxuICBsZXQgdG9wOiBudW1iZXI7XG4gIGxldCBsZWZ0OiBudW1iZXI7XG4gIGxldCByaWdodDogbnVtYmVyO1xuICBsZXQgYm90dG9tOiBudW1iZXI7XG5cbiAgY29uc3QgY2xpZW50UmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGxlZnQgPSBjbGllbnRSZWN0LmxlZnQ7XG4gIHRvcCA9IGNsaWVudFJlY3QudG9wO1xuICByaWdodCA9IGNsaWVudFJlY3QucmlnaHQ7XG4gIGJvdHRvbSA9IGNsaWVudFJlY3QuYm90dG9tO1xuXG4gIGJvdHRvbSAtPSBidWZmZXJPZmZzZXRCb3R0b207XG4gIGxlZnQgKz0gYnVmZmVyT2Zmc2V0TGVmdDtcbiAgcmlnaHQgLT0gYnVmZmVyT2Zmc2V0UmlnaHQ7XG4gIHRvcCArPSBidWZmZXJPZmZzZXRUb3A7XG5cbiAgcmV0dXJuIHtcbiAgICBib3R0b20sXG4gICAgbGVmdCxcbiAgICByaWdodCxcbiAgICB0b3AsXG4gIH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhbiBBZmZpeFJlY3QgdGhhdCByZXByZXNlbnRzIHRoZSBvdXRlciBkaW1lbnNpb25zIG9mIGEgZ2l2ZW4gZWxlbWVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE91dGVyUmVjdChlbGVtZW50OiBIVE1MRWxlbWVudCk6IFJlcXVpcmVkPEFmZml4UmVjdD4ge1xuICBjb25zdCByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQsIHVuZGVmaW5lZCk7XG4gIGNvbnN0IG1hcmdpblRvcCA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5tYXJnaW5Ub3ApO1xuICBjb25zdCBtYXJnaW5MZWZ0ID0gcGFyc2VGbG9hdChjb21wdXRlZFN0eWxlLm1hcmdpbkxlZnQpO1xuICBjb25zdCBtYXJnaW5SaWdodCA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5tYXJnaW5SaWdodCk7XG4gIGNvbnN0IG1hcmdpbkJvdHRvbSA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5tYXJnaW5Cb3R0b20pO1xuXG4gIHJldHVybiB7XG4gICAgdG9wOiByZWN0LnRvcCAtIG1hcmdpblRvcCxcbiAgICBsZWZ0OiByZWN0LmxlZnQgLSBtYXJnaW5MZWZ0LFxuICAgIGJvdHRvbTogcmVjdC50b3AgKyByZWN0LmhlaWdodCArIG1hcmdpbkJvdHRvbSxcbiAgICByaWdodDogcmVjdC5sZWZ0ICsgcmVjdC53aWR0aCArIG1hcmdpbkxlZnQgKyBtYXJnaW5SaWdodCxcbiAgICB3aWR0aDogcmVjdC53aWR0aCArIG1hcmdpbkxlZnQgKyBtYXJnaW5SaWdodCxcbiAgICBoZWlnaHQ6IHJlY3QuaGVpZ2h0ICsgbWFyZ2luVG9wICsgbWFyZ2luQm90dG9tLFxuICB9O1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHZpc2libGUgcmVjdCBmb3IgYSBnaXZlbiBlbGVtZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmlzaWJsZVJlY3RGb3JFbGVtZW50KFxuICB2aWV3cG9ydFJ1bGVyOiBWaWV3cG9ydFJ1bGVyLFxuICBlbGVtZW50OiBIVE1MRWxlbWVudFxuKTogUmVxdWlyZWQ8QWZmaXhSZWN0PiB7XG4gIGNvbnN0IGVsZW1lbnRSZWN0ID0gZ2V0T3V0ZXJSZWN0KGVsZW1lbnQpO1xuICBjb25zdCB2aWV3cG9ydFJlY3QgPSB2aWV3cG9ydFJ1bGVyLmdldFZpZXdwb3J0UmVjdCgpO1xuXG4gIGNvbnN0IHZpc2libGVSZWN0ID0ge1xuICAgIHRvcDogTWF0aC5tYXgoZWxlbWVudFJlY3QudG9wLCAwKSxcbiAgICBsZWZ0OiBNYXRoLm1heChlbGVtZW50UmVjdC5sZWZ0LCAwKSxcbiAgICBib3R0b206IE1hdGgubWluKGVsZW1lbnRSZWN0LmJvdHRvbSwgdmlld3BvcnRSZWN0LmJvdHRvbSksXG4gICAgcmlnaHQ6IE1hdGgubWluKGVsZW1lbnRSZWN0LnJpZ2h0LCB2aWV3cG9ydFJlY3QucmlnaHQpLFxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgLi4udmlzaWJsZVJlY3QsXG4gICAgd2lkdGg6IHZpc2libGVSZWN0LnJpZ2h0IC0gdmlzaWJsZVJlY3QubGVmdCxcbiAgICBoZWlnaHQ6IHZpc2libGVSZWN0LmJvdHRvbSAtIHZpc2libGVSZWN0LnRvcCxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE92ZXJmbG93UGFyZW50cyhjaGlsZDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudFtdIHtcbiAgY29uc3QgYm9keUVsZW1lbnQgPSB3aW5kb3cuZG9jdW1lbnQuYm9keTtcbiAgY29uc3QgcmVzdWx0cyA9IFtdO1xuXG4gIGxldCBwYXJlbnRFbGVtZW50ID0gY2hpbGQ/LnBhcmVudE5vZGU7XG5cbiAgd2hpbGUgKHBhcmVudEVsZW1lbnQgIT09IHVuZGVmaW5lZCAmJiBwYXJlbnRFbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICBjb25zdCBjb21wdXRlZFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUocGFyZW50RWxlbWVudCwgdW5kZWZpbmVkKTtcbiAgICBjb25zdCBvdmVyZmxvd1kgPSBjb21wdXRlZFN0eWxlLm92ZXJmbG93WS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgaWYgKGNvbXB1dGVkU3R5bGUucG9zaXRpb24gPT09ICdmaXhlZCcgfHwgcGFyZW50RWxlbWVudC5tYXRjaGVzKCdib2R5JykpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBvdmVyZmxvd1kgPT09ICdhdXRvJyB8fFxuICAgICAgb3ZlcmZsb3dZID09PSAnaGlkZGVuJyB8fFxuICAgICAgb3ZlcmZsb3dZID09PSAnc2Nyb2xsJ1xuICAgICkge1xuICAgICAgcmVzdWx0cy5wdXNoKHBhcmVudEVsZW1lbnQpO1xuICAgIH1cblxuICAgIHBhcmVudEVsZW1lbnQgPSBwYXJlbnRFbGVtZW50LnBhcmVudE5vZGU7XG4gIH1cblxuICByZXN1bHRzLnB1c2goYm9keUVsZW1lbnQpO1xuXG4gIHJldHVybiByZXN1bHRzO1xufVxuXG4vKipcbiAqIENvbmZpcm1zIG9mZnNldCBpcyBmdWxseSB2aXNpYmxlIHdpdGhpbiBhIHBhcmVudCBlbGVtZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNPZmZzZXRGdWxseVZpc2libGVXaXRoaW5QYXJlbnQoXG4gIHZpZXdwb3J0UnVsZXI6IFZpZXdwb3J0UnVsZXIsXG4gIHBhcmVudDogSFRNTEVsZW1lbnQsXG4gIG9mZnNldDogUmVxdWlyZWQ8U2t5QWZmaXhPZmZzZXQ+LFxuICBidWZmZXJPZmZzZXQ/OiBTa3lBZmZpeE9mZnNldFxuKTogYm9vbGVhbiB7XG4gIGxldCBwYXJlbnRPZmZzZXQ6IFJlcXVpcmVkPFNreUFmZml4T2Zmc2V0PjtcblxuICBpZiAocGFyZW50Lm1hdGNoZXMoJ2JvZHknKSkge1xuICAgIGNvbnN0IHZpZXdwb3J0UmVjdCA9IHZpZXdwb3J0UnVsZXIuZ2V0Vmlld3BvcnRSZWN0KCk7XG4gICAgcGFyZW50T2Zmc2V0ID0ge1xuICAgICAgdG9wOiAwLFxuICAgICAgbGVmdDogMCxcbiAgICAgIHJpZ2h0OiB2aWV3cG9ydFJlY3QucmlnaHQsXG4gICAgICBib3R0b206IHZpZXdwb3J0UmVjdC5ib3R0b20sXG4gICAgfTtcbiAgfSBlbHNlIGlmIChidWZmZXJPZmZzZXQpIHtcbiAgICBwYXJlbnRPZmZzZXQgPSBnZXRFbGVtZW50T2Zmc2V0KHBhcmVudCwgYnVmZmVyT2Zmc2V0KTtcbiAgfSBlbHNlIHtcbiAgICBwYXJlbnRPZmZzZXQgPSBnZXRWaXNpYmxlUmVjdEZvckVsZW1lbnQodmlld3BvcnRSdWxlciwgcGFyZW50KTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgcGFyZW50T2Zmc2V0LnRvcCA8PSBvZmZzZXQudG9wICYmXG4gICAgcGFyZW50T2Zmc2V0LnJpZ2h0ID49IG9mZnNldC5yaWdodCAmJlxuICAgIHBhcmVudE9mZnNldC5ib3R0b20gPj0gb2Zmc2V0LmJvdHRvbSAmJlxuICAgIHBhcmVudE9mZnNldC5sZWZ0IDw9IG9mZnNldC5sZWZ0XG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc09mZnNldFBhcnRpYWxseVZpc2libGVXaXRoaW5QYXJlbnQoXG4gIHZpZXdwb3J0UnVsZXI6IFZpZXdwb3J0UnVsZXIsXG4gIHBhcmVudDogSFRNTEVsZW1lbnQsXG4gIG9mZnNldDogUmVxdWlyZWQ8U2t5QWZmaXhPZmZzZXQ+LFxuICBidWZmZXJPZmZzZXQ/OiBTa3lBZmZpeE9mZnNldFxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHBhcmVudE9mZnNldCA9IGJ1ZmZlck9mZnNldFxuICAgID8gZ2V0RWxlbWVudE9mZnNldChwYXJlbnQsIGJ1ZmZlck9mZnNldClcbiAgICA6IGdldFZpc2libGVSZWN0Rm9yRWxlbWVudCh2aWV3cG9ydFJ1bGVyLCBwYXJlbnQpO1xuXG4gIHJldHVybiAhKFxuICAgIHBhcmVudE9mZnNldC50b3AgPj0gb2Zmc2V0LmJvdHRvbSB8fFxuICAgIHBhcmVudE9mZnNldC5yaWdodCA8PSBvZmZzZXQubGVmdCB8fFxuICAgIHBhcmVudE9mZnNldC5ib3R0b20gPD0gb2Zmc2V0LnRvcCB8fFxuICAgIHBhcmVudE9mZnNldC5sZWZ0ID49IG9mZnNldC5yaWdodFxuICApO1xufVxuIl19
|
@@ -75,9 +75,9 @@ _SkyDockDomAdapterService_currentDockHeight = new WeakMap(), _SkyDockDomAdapterS
|
|
75
75
|
}, _SkyDockDomAdapterService_destroyStyleElement = function _SkyDockDomAdapterService_destroyStyleElement() {
|
76
76
|
__classPrivateFieldGet(this, _SkyDockDomAdapterService_renderer, "f").removeChild(document.head, __classPrivateFieldGet(this, _SkyDockDomAdapterService_styleElement, "f"));
|
77
77
|
};
|
78
|
-
SkyDockDomAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
79
|
-
SkyDockDomAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.
|
80
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
78
|
+
SkyDockDomAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SkyDockDomAdapterService, deps: [{ token: i1.SkyMutationObserverService }, { token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable });
|
79
|
+
SkyDockDomAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SkyDockDomAdapterService });
|
80
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SkyDockDomAdapterService, decorators: [{
|
81
81
|
type: Injectable
|
82
82
|
}], ctorParameters: function () { return [{ type: i1.SkyMutationObserverService }, { type: i0.RendererFactory2 }]; } });
|
83
|
-
//# sourceMappingURL=data:application/json;base64,
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jay1kb20tYWRhcHRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL2RvY2svZG9jay1kb20tYWRhcHRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUVMLFVBQVUsR0FJWCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsSUFBSSxtQkFBbUIsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFJekQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sd0JBQXdCO0lBYW5DLFlBQ0UsV0FBdUMsRUFDdkMsZUFBaUM7O1FBZG5DLDhEQUF1QztRQUV2Qyx3REFBeUM7UUFFekMsa0RBQWlCLElBQUksT0FBTyxFQUFRLEVBQUM7UUFFckMscURBQXdDO1FBRXhDLHFEQUFxQjtRQUVyQix5REFBNEM7UUFNMUMsdUJBQUEsSUFBSSx5Q0FBZ0IsV0FBVyxNQUFBLENBQUM7UUFDaEMsdUJBQUEsSUFBSSxzQ0FBYSxlQUFlLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBQSxDQUFDO0lBQ25FLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksdUJBQUEsSUFBSSwwQ0FBVSxFQUFFO1lBQ2xCLHVCQUFBLElBQUksMENBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUM3QjtRQUNELHVCQUFBLElBQUksK0NBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQix1QkFBQSxJQUFJLCtDQUFlLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFL0IsSUFBSSx1QkFBQSxJQUFJLDhDQUFjLEVBQUU7WUFDdEIsdUJBQUEsSUFBSSwwRkFBcUIsTUFBekIsSUFBSSxDQUF1QixDQUFDO1NB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RkFBeEIsd0JBQXdCO2tCQURwQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0YWJsZSxcbiAgT25EZXN0cm95LFxuICBSZW5kZXJlcjIsXG4gIFJlbmRlcmVyRmFjdG9yeTIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0LCBmcm9tRXZlbnQgYXMgb2JzZXJ2YWJsZUZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreU11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vbXV0YXRpb24vbXV0YXRpb24tb2JzZXJ2ZXItc2VydmljZSc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lEb2NrRG9tQWRhcHRlclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAjY3VycmVudERvY2tIZWlnaHQ6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAjbXV0YXRpb25TdmM6IFNreU11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlO1xuXG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAjb2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXIgfCB1bmRlZmluZWQ7XG5cbiAgI3JlbmRlcmVyOiBSZW5kZXJlcjI7XG5cbiAgI3N0eWxlRWxlbWVudDogSFRNTFN0eWxlRWxlbWVudCB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBtdXRhdGlvblN2YzogU2t5TXV0YXRpb25PYnNlcnZlclNlcnZpY2UsXG4gICAgcmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyXG4gICkge1xuICAgIHRoaXMuI211dGF0aW9uU3ZjID0gbXV0YXRpb25TdmM7XG4gICAgdGhpcy4jcmVuZGVyZXIgPSByZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIodW5kZWZpbmVkLCBudWxsKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jb2JzZXJ2ZXIpIHtcbiAgICAgIHRoaXMuI29ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB9XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuXG4gICAgaWYgKHRoaXMuI3N0eWxlRWxlbWVudCkge1xuICAgICAgdGhpcy4jZGVzdHJveVN0eWxlRWxlbWVudCgpO1xuICAgIH1cblxuICAgIHRoaXMuI2N1cnJlbnREb2NrSGVpZ2h0ID0gdGhpcy4jb2JzZXJ2ZXIgPSB0aGlzLiNzdHlsZUVsZW1lbnQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0U3RpY2t5KGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpOiB2b2lkIHtcbiAgICB0aGlzLiNyZW5kZXJlci5hZGRDbGFzcyhlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdza3ktZG9jay1zdGlja3knKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRaSW5kZXgoekluZGV4OiBudW1iZXIsIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpOiB2b2lkIHtcbiAgICB0aGlzLiNyZW5kZXJlci5zZXRTdHlsZShlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd6LWluZGV4JywgekluZGV4KTtcbiAgfVxuXG4gIHB1YmxpYyB1bmJpbmREb2NrKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpOiB2b2lkIHtcbiAgICB0aGlzLiNyZW5kZXJlci5hZGRDbGFzcyhlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdza3ktZG9jay11bmJvdW5kJyk7XG4gIH1cblxuICBwdWJsaWMgd2F0Y2hEb21DaGFuZ2VzKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpOiB2b2lkIHtcbiAgICB0aGlzLiNvYnNlcnZlciA9IHRoaXMuI211dGF0aW9uU3ZjLmNyZWF0ZSgoKSA9PiB7XG4gICAgICB0aGlzLiNhZGp1c3RCb2R5U3R5bGVzKGVsZW1lbnRSZWYpO1xuICAgIH0pO1xuXG4gICAgdGhpcy4jb2JzZXJ2ZXIub2JzZXJ2ZShlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICBjaGFyYWN0ZXJEYXRhOiB0cnVlLFxuICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICB9KTtcblxuICAgIG9ic2VydmFibGVGcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgyNTApLCB0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuI2FkanVzdEJvZHlTdHlsZXMoZWxlbWVudFJlZikpO1xuICB9XG5cbiAgI2FkanVzdEJvZHlTdHlsZXMoZWxlbWVudFJlZjogRWxlbWVudFJlZik6IHZvaWQge1xuICAgIGNvbnN0IGRvY2tIZWlnaHQgPSBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuICAgIGlmIChkb2NrSGVpZ2h0ID09PSB0aGlzLiNjdXJyZW50RG9ja0hlaWdodCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBhIHN0eWxlIGVsZW1lbnQgdG8gYXZvaWQgb3ZlcndyaXRpbmcgYW55IGV4aXN0aW5nIGlubGluZSBib2R5IHN0eWxlcy5cbiAgICBjb25zdCBzdHlsZUVsZW1lbnQgPSB0aGlzLiNyZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgIGNvbnN0IHRleHROb2RlID0gdGhpcy4jcmVuZGVyZXIuY3JlYXRlVGV4dChcbiAgICAgIGBib2R5IHsgbWFyZ2luLWJvdHRvbTogJHtkb2NrSGVpZ2h0fXB4OyB9YFxuICAgICk7XG5cbiAgICAvLyBBcHBseSBhIGBkYXRhLWAgYXR0cmlidXRlIHRvIG1ha2UgdW5pdCB0ZXN0aW5nIGVhc2llci5cbiAgICB0aGlzLiNyZW5kZXJlci5zZXRBdHRyaWJ1dGUoXG4gICAgICBzdHlsZUVsZW1lbnQsXG4gICAgICAnZGF0YS10ZXN0LXNlbGVjdG9yJyxcbiAgICAgICdza3ktbGF5b3V0LWRvY2stYm90dG9tLXN0eWxlcydcbiAgICApO1xuXG4gICAgdGhpcy4jcmVuZGVyZXIuYXBwZW5kQ2hpbGQoc3R5bGVFbGVtZW50LCB0ZXh0Tm9kZSk7XG4gICAgdGhpcy4jcmVuZGVyZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuaGVhZCwgc3R5bGVFbGVtZW50KTtcblxuICAgIGlmICh0aGlzLiNzdHlsZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuI2Rlc3Ryb3lTdHlsZUVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICB0aGlzLiNjdXJyZW50RG9ja0hlaWdodCA9IGRvY2tIZWlnaHQ7XG4gICAgdGhpcy4jc3R5bGVFbGVtZW50ID0gc3R5bGVFbGVtZW50O1xuICB9XG5cbiAgI2Rlc3Ryb3lTdHlsZUVsZW1lbnQoKTogdm9pZCB7XG4gICAgdGhpcy4jcmVuZGVyZXIucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuaGVhZCwgdGhpcy4jc3R5bGVFbGVtZW50KTtcbiAgfVxufVxuIl19
|