@skyux/core 6.16.0 → 6.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/documentation.json +1042 -892
- package/esm2020/lib/modules/adapter-service/adapter.service.mjs +21 -22
- package/esm2020/lib/modules/affix/affix-offset.mjs +1 -1
- package/esm2020/lib/modules/affix/affix.directive.mjs +38 -23
- package/esm2020/lib/modules/affix/affixer.mjs +266 -260
- package/esm2020/lib/modules/affix/dom-utils.mjs +7 -7
- package/esm2020/lib/modules/dock/dock-dom-adapter.service.mjs +48 -44
- package/esm2020/lib/modules/dock/dock-item.mjs +10 -5
- package/esm2020/lib/modules/dock/dock.component.mjs +55 -31
- package/esm2020/lib/modules/dock/dock.service.mjs +40 -36
- package/esm2020/lib/modules/dynamic-component/dynamic-component.service.mjs +37 -22
- package/esm2020/lib/modules/log/log.service.mjs +37 -37
- package/esm2020/lib/modules/media-query/media-query.service.mjs +50 -47
- package/esm2020/lib/modules/mutation/mutation-observer-service.mjs +3 -1
- package/esm2020/lib/modules/numeric/numeric.pipe.mjs +26 -19
- package/esm2020/lib/modules/numeric/numeric.service.mjs +84 -99
- package/esm2020/lib/modules/overlay/overlay-adapter.service.mjs +23 -17
- package/esm2020/lib/modules/overlay/overlay-instance.mjs +18 -9
- package/esm2020/lib/modules/overlay/overlay.component.mjs +79 -55
- package/esm2020/lib/modules/overlay/overlay.service.mjs +55 -49
- package/esm2020/lib/modules/percent-pipe/percent.pipe.mjs +32 -21
- package/esm2020/lib/modules/resize-observer/resize-observer-media-query.service.mjs +38 -46
- package/esm2020/lib/modules/scrollable-host/scrollable-host.service.mjs +66 -67
- package/esm2020/lib/modules/title/title.service.mjs +8 -4
- package/esm2020/lib/modules/trim/trim.directive.mjs +10 -11
- package/esm2020/lib/modules/viewkeeper/viewkeeper-boundary-info.mjs +1 -1
- package/esm2020/lib/modules/viewkeeper/viewkeeper.directive.mjs +75 -60
- package/esm2020/lib/modules/viewkeeper/viewkeeper.mjs +166 -156
- package/esm2020/lib/modules/viewkeeper/viewkeeper.service.mjs +7 -3
- package/esm2020/testing/core-testing.module.mjs +4 -1
- package/esm2020/testing/mock-media-query.service.mjs +4 -1
- package/esm2020/testing/mock-ui-config.service.mjs +4 -1
- package/esm2020/testing/overlay/overlay-harness-filters.mjs +1 -1
- package/esm2020/testing/overlay/overlay-harness.mjs +2 -1
- package/esm2020/testing/shared/component-harness.mjs +4 -1
- package/esm2020/testing/shared/harness-filters.mjs +1 -1
- package/fesm2015/skyux-core-testing.mjs +13 -0
- package/fesm2015/skyux-core-testing.mjs.map +1 -1
- package/fesm2015/skyux-core.mjs +1276 -1151
- package/fesm2015/skyux-core.mjs.map +1 -1
- package/fesm2020/skyux-core-testing.mjs +13 -0
- package/fesm2020/skyux-core-testing.mjs.map +1 -1
- package/fesm2020/skyux-core.mjs +1278 -1150
- package/fesm2020/skyux-core.mjs.map +1 -1
- package/lib/modules/adapter-service/adapter.service.d.ts +3 -5
- package/lib/modules/affix/affix-offset.d.ts +1 -1
- package/lib/modules/affix/affix.directive.d.ts +12 -13
- package/lib/modules/affix/affixer.d.ts +2 -34
- package/lib/modules/affix/dom-utils.d.ts +3 -3
- package/lib/modules/dock/dock-dom-adapter.service.d.ts +2 -9
- package/lib/modules/dock/dock-item.d.ts +1 -1
- package/lib/modules/dock/dock.component.d.ts +2 -10
- package/lib/modules/dock/dock.service.d.ts +2 -5
- package/lib/modules/dynamic-component/dynamic-component.service.d.ts +2 -7
- package/lib/modules/log/log.service.d.ts +2 -6
- package/lib/modules/media-query/media-query.service.d.ts +1 -8
- package/lib/modules/numeric/numeric.pipe.d.ts +2 -8
- package/lib/modules/numeric/numeric.service.d.ts +3 -36
- package/lib/modules/overlay/overlay-adapter.service.d.ts +1 -3
- package/lib/modules/overlay/overlay-instance.d.ts +1 -2
- package/lib/modules/overlay/overlay.component.d.ts +1 -14
- package/lib/modules/overlay/overlay.service.d.ts +1 -7
- package/lib/modules/percent-pipe/percent.pipe.d.ts +2 -9
- package/lib/modules/resize-observer/resize-observer-media-query.service.d.ts +2 -7
- package/lib/modules/scrollable-host/scrollable-host.service.d.ts +2 -11
- package/lib/modules/title/title.service.d.ts +2 -2
- package/lib/modules/trim/trim.directive.d.ts +0 -2
- package/lib/modules/viewkeeper/viewkeeper-boundary-info.d.ts +1 -1
- package/lib/modules/viewkeeper/viewkeeper.d.ts +2 -24
- package/lib/modules/viewkeeper/viewkeeper.directive.d.ts +4 -16
- package/lib/modules/viewkeeper/viewkeeper.service.d.ts +1 -1
- package/package.json +2 -2
- package/testing/core-testing.module.d.ts +3 -0
- package/testing/mock-media-query.service.d.ts +3 -0
- package/testing/mock-ui-config.service.d.ts +3 -0
- package/testing/overlay/overlay-harness-filters.d.ts +1 -0
- package/testing/overlay/overlay-harness.d.ts +1 -0
- package/testing/shared/component-harness.d.ts +3 -0
- package/testing/shared/harness-filters.d.ts +1 -0
@@ -1,4 +1,4 @@
|
|
1
|
-
var _SkyCoreAdapterService_renderer;
|
1
|
+
var _SkyCoreAdapterService_instances, _SkyCoreAdapterService_renderer, _SkyCoreAdapterService_focusFirstElement, _SkyCoreAdapterService_isVisible;
|
2
2
|
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
3
3
|
import { Injectable, RendererFactory2, } from '@angular/core';
|
4
4
|
import { SkyMediaBreakpoints } from '../media-query/media-breakpoints';
|
@@ -19,6 +19,7 @@ const SKY_TABBABLE_SELECTOR = [
|
|
19
19
|
export class SkyCoreAdapterService {
|
20
20
|
constructor(rendererFactory) {
|
21
21
|
this.rendererFactory = rendererFactory;
|
22
|
+
_SkyCoreAdapterService_instances.add(this);
|
22
23
|
_SkyCoreAdapterService_renderer.set(this, void 0);
|
23
24
|
__classPrivateFieldSet(this, _SkyCoreAdapterService_renderer, this.rendererFactory.createRenderer(undefined, null), "f");
|
24
25
|
}
|
@@ -104,7 +105,7 @@ export class SkyCoreAdapterService {
|
|
104
105
|
if (containerElement) {
|
105
106
|
const focusableChildren = this.getFocusableChildren(containerElement);
|
106
107
|
// Focus first focusable child if available. Otherwise, set focus on container.
|
107
|
-
if (!this.
|
108
|
+
if (!__classPrivateFieldGet(this, _SkyCoreAdapterService_instances, "m", _SkyCoreAdapterService_focusFirstElement).call(this, focusableChildren) &&
|
108
109
|
focusOnContainerIfNoChildrenFound) {
|
109
110
|
containerElement.focus();
|
110
111
|
}
|
@@ -130,7 +131,7 @@ export class SkyCoreAdapterService {
|
|
130
131
|
// Unless ignoreVisibility = true, filter out elements that are not visible.
|
131
132
|
if (!options || !options.ignoreVisibility) {
|
132
133
|
elements = elements.filter((el) => {
|
133
|
-
return this.
|
134
|
+
return __classPrivateFieldGet(this, _SkyCoreAdapterService_instances, "m", _SkyCoreAdapterService_isVisible).call(this, el);
|
134
135
|
});
|
135
136
|
}
|
136
137
|
return elements;
|
@@ -198,26 +199,24 @@ export class SkyCoreAdapterService {
|
|
198
199
|
}
|
199
200
|
}
|
200
201
|
}
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
return false;
|
202
|
+
}
|
203
|
+
_SkyCoreAdapterService_renderer = new WeakMap(), _SkyCoreAdapterService_instances = new WeakSet(), _SkyCoreAdapterService_focusFirstElement = function _SkyCoreAdapterService_focusFirstElement(list) {
|
204
|
+
if (list.length > 0) {
|
205
|
+
list[0].focus();
|
206
|
+
return true;
|
207
207
|
}
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
const hasBounds = !!(element.offsetWidth ||
|
215
|
-
element.offsetHeight ||
|
216
|
-
element.getClientRects().length);
|
217
|
-
return hasBounds;
|
208
|
+
return false;
|
209
|
+
}, _SkyCoreAdapterService_isVisible = function _SkyCoreAdapterService_isVisible(element) {
|
210
|
+
const style = window.getComputedStyle(element);
|
211
|
+
const isHidden = style.display === 'none' || style.visibility === 'hidden';
|
212
|
+
if (isHidden) {
|
213
|
+
return false;
|
218
214
|
}
|
219
|
-
|
220
|
-
|
215
|
+
const hasBounds = !!(element.offsetWidth ||
|
216
|
+
element.offsetHeight ||
|
217
|
+
element.getClientRects().length);
|
218
|
+
return hasBounds;
|
219
|
+
};
|
221
220
|
SkyCoreAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyCoreAdapterService, deps: [{ token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable });
|
222
221
|
SkyCoreAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyCoreAdapterService, providedIn: 'root' });
|
223
222
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyCoreAdapterService, decorators: [{
|
@@ -226,4 +225,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
|
|
226
225
|
providedIn: 'root',
|
227
226
|
}]
|
228
227
|
}], ctorParameters: function () { return [{ type: i0.RendererFactory2 }]; } });
|
229
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL2FkYXB0ZXItc2VydmljZS9hZGFwdGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBRUwsVUFBVSxFQUVWLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFJdkUsTUFBTSxxQkFBcUIsR0FBRztJQUM1QixTQUFTO0lBQ1QsWUFBWTtJQUNaLHVCQUF1QjtJQUN2Qix3QkFBd0I7SUFDeEIsd0JBQXdCO0lBQ3hCLDBCQUEwQjtJQUMxQixRQUFRO0lBQ1IsUUFBUTtJQUNSLE9BQU87SUFDUCx5Q0FBeUM7SUFDekMsNkJBQTZCO0NBQzlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBS2IsTUFBTSxPQUFPLHFCQUFxQjtJQUdoQyxZQUFvQixlQUFpQztRQUFqQyxvQkFBZSxHQUFmLGVBQWUsQ0FBa0I7UUFGckQsa0RBQXFCO1FBR25CLHVCQUFBLElBQUksbUNBQWEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFBLENBQUM7SUFDeEUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLDJCQUEyQixDQUNoQyxVQUFzQixFQUN0QixVQUErQjtRQUUvQixNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBRTFDLHVCQUFBLElBQUksdUNBQVUsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLDZCQUE2QixDQUFDLENBQUM7UUFDcEUsdUJBQUEsSUFBSSx1Q0FBVSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsNkJBQTZCLENBQUMsQ0FBQztRQUNwRSx1QkFBQSxJQUFJLHVDQUFVLENB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QUFDLElBQXdCO1FBQ2hELElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbkIsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyxTQUFTLENBQUMsT0FBb0I7UUFDcEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9DLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxPQUFPLEtBQUssTUFBTSxJQUFJLEtBQUssQ0FBQyxVQUFVLEtBQUssUUFBUSxDQUFDO1FBQzNFLElBQUksUUFBUSxFQUFFO1lBQ1osT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUNsQixPQUFPLENBQUMsV0FBVztZQUNuQixPQUFPLENBQUMsWUFBWTtZQUNwQixPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsTUFBTSxDQUNoQyxDQUFDO1FBQ0YsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQzs7O2tIQTNQVSxxQkFBcUI7c0hBQXJCLHFCQUFxQixjQUZwQixNQUFNOzJGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBFbGVtZW50UmVmLFxuICBJbmplY3RhYmxlLFxuICBSZW5kZXJlcjIsXG4gIFJlbmRlcmVyRmFjdG9yeTIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lNZWRpYUJyZWFrcG9pbnRzIH0gZnJvbSAnLi4vbWVkaWEtcXVlcnkvbWVkaWEtYnJlYWtwb2ludHMnO1xuXG5pbXBvcnQgeyBTa3lGb2N1c2FibGVDaGlsZHJlbk9wdGlvbnMgfSBmcm9tICcuL2ZvY3VzYWJsZS1jaGlsZHJlbi1vcHRpb25zJztcblxuY29uc3QgU0tZX1RBQkJBQkxFX1NFTEVDVE9SID0gW1xuICAnYVtocmVmXScsXG4gICdhcmVhW2hyZWZdJyxcbiAgJ2lucHV0Om5vdChbZGlzYWJsZWRdKScsXG4gICdidXR0b246bm90KFtkaXNhYmxlZF0pJyxcbiAgJ3NlbGVjdDpub3QoW2Rpc2FibGVkXSknLFxuICAndGV4dGFyZWE6bm90KFtkaXNhYmxlZF0pJyxcbiAgJ2lmcmFtZScsXG4gICdvYmplY3QnLFxuICAnZW1iZWQnLFxuICAnKltjb250ZW50ZWRpdGFibGU9dHJ1ZV06bm90KFtkaXNhYmxlZF0pJyxcbiAgJypbdGFiaW5kZXhdOm5vdChbZGlzYWJsZWRdKScsXG5dLmpvaW4oJywgJyk7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lDb3JlQWRhcHRlclNlcnZpY2Uge1xuICAjcmVuZGVyZXI6IFJlbmRlcmVyMjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5Mikge1xuICAgIHRoaXMuI3JlbmRlcmVyID0gdGhpcy5yZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIodW5kZWZpbmVkLCBudWxsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHJlc3BvbnNpdmUgY29udGFpbmVyIENTUyBjbGFzcyBmb3IgYSBnaXZlbiBlbGVtZW50LlxuICAgKlxuICAgKiBAcGFyYW0gZWxlbWVudFJlZiAtIFRoZSBlbGVtZW50IHRoYXQgd2lsbCByZWNpZXZlIHRoZSBuZXcgQ1NTIGNsYXNzLlxuICAgKiBAcGFyYW0gYnJlYWtwb2ludCAtIFRoZSBTa3lNZWRpYUJyZWFrcG9pbnQgd2lsbCBkZXRlcm1pbmUgd2hpY2ggY2xhc3NcbiAgICogZ2V0cyBzZXQuIEZvciBleGFtcGxlIGEgU2t5TWVkaWFCcmVha3BvaW50IG9mIGB4c2Agd2lsbCBzZXQgYSBDU1MgY2xhc3Mgb2YgYHNreS1yZXNwb25zaXZlLWNvbnRhaW5lci14c2AuXG4gICAqL1xuICBwdWJsaWMgc2V0UmVzcG9uc2l2ZUNvbnRhaW5lckNsYXNzKFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgYnJlYWtwb2ludDogU2t5TWVkaWFCcmVha3BvaW50c1xuICApOiB2b2lkIHtcbiAgICBjb25zdCBuYXRpdmVFbCA9IGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcblxuICAgIHRoaXMuI3JlbmRlcmVyLnJlbW92ZUNsYXNzKG5hdGl2ZUVsLCAnc2t5LXJlc3BvbnNpdmUtY29udGFpbmVyLXhzJyk7XG4gICAgdGhpcy4jcmVuZGVyZXIucmVtb3ZlQ2xhc3MobmF0aXZlRWwsICdza3ktcmVzcG9uc2l2ZS1jb250YWluZXItc20nKTtcbiAgICB0aGlzLiNyZW5kZXJlci5yZW1vdmVDbGFzcyhuYXRpdmVFbCwgJ3NreS1yZXNwb25zaXZlLWNvbnRhaW5lci1tZCcpO1xuICAgIHRoaXMuI3JlbmRlcmVyLnJlbW92ZUNsYXNzKG5hdGl2ZUVsLCAnc2t5LXJlc3BvbnNpdmUtY29udGFpbmVyLWxnJyk7XG5cbiAgICBsZXQgbmV3Q2xhc3M6IHN0cmluZztcblxuICAgIHN3aXRjaCAoYnJlYWtwb2ludCkge1xuICAgICAgY2FzZSBTa3lNZWRpYUJyZWFrcG9pbnRzLnhzOiB7XG4gICAgICAgIG5ld0NsYXNzID0gJ3NreS1yZXNwb25zaXZlLWNvbnRhaW5lci14cyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBTa3lNZWRpYUJyZWFrcG9pbnRzLnNtOiB7XG4gICAgICAgIG5ld0NsYXNzID0gJ3NreS1yZXNwb25zaXZlLWNvbnRhaW5lci1zbSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBTa3lNZWRpYUJyZWFrcG9pbnRzLm1kOiB7XG4gICAgICAgIG5ld0NsYXNzID0gJ3NreS1yZXNwb25zaXZlLWNvbnRhaW5lci1tZCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBuZXdDbGFzcyA9ICdza3ktcmVzcG9uc2l2ZS1jb250YWluZXItbGcnO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLiNyZW5kZXJlci5hZGRDbGFzcyhuYXRpdmVFbCwgbmV3Q2xhc3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHRlbXBvcmFyaWx5IGVuYWJsZXMvZGlzYWJsZXMgcG9pbnRlciBldmVudHMuXG4gICAqIFRoaXMgaXMgaGVscGZ1bCB0byBwcmV2ZW50IGlGcmFtZXMgZnJvbSBpbnRlcmZlcmluZyB3aXRoIGRyYWcgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gZW5hYmxlIC0gU2V0IHRvIGB0cnVlYCB0byBlbmFibGUgcG9pbnRlciBldmVudHMuIFNldCB0byBgZmFsc2VgIHRvIGRpc2FibGUuXG4gICAqL1xuICBwdWJsaWMgdG9nZ2xlSWZyYW1lUG9pbnRlckV2ZW50cyhlbmFibGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBpZnJhbWVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaWZyYW1lJyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpZnJhbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAvLyBTZXR0aW5nIHRvIGVtcHR5IHN0cmluZyB3aWxsIGFsbG93IGlmcmFtZSB0byBmYWxsIGJhY2sgdG8gaXRzIHByaW9yIENTUyBhc3NpZ25tZW50LlxuICAgICAgaWZyYW1lc1tpXS5zdHlsZS5wb2ludGVyRXZlbnRzID0gZW5hYmxlID8gJycgOiAnbm9uZSc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzZXMgb24gdGhlIGZpcnN0IGVsZW1lbnQgZm91bmQgd2l0aCBhbiBgYXV0b2ZvY3VzYCBhdHRyaWJ1dGUgaW5zaWRlIHRoZSBzdXBwbGllZCBgZWxlbWVudFJlZmAuXG4gICAqXG4gICAqIEBwYXJhbSBlbGVtZW50UmVmIC0gVGhlIGVsZW1lbnQgdG8gc2VhcmNoIHdpdGhpbi5cbiAgICogQHJldHVybiBSZXR1cm5zIGB0cnVlYCBpZiBhIGNoaWxkIGVsZW1lbnQgd2l0aCBhdXRvZm9jdXMgaXMgZm91bmQuXG4gICAqL1xuICBwdWJsaWMgYXBwbHlBdXRvRm9jdXMoZWxlbWVudFJlZjogRWxlbWVudFJlZik6IGJvb2xlYW4ge1xuICAgIGlmICghZWxlbWVudFJlZikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnRXaXRoQXV0b0ZvY3VzID1cbiAgICAgIGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdbYXV0b2ZvY3VzXScpO1xuXG4gICAgLy8gQ2hpbGQgd2FzIGZvdW5kIHdpdGggdGhlIGF1dG9mb2N1cyBwcm9wZXJ0eS4gU2V0IGZvY3VzIGFuZCByZXR1cm4gdHJ1ZS5cbiAgICBpZiAoZWxlbWVudFdpdGhBdXRvRm9jdXMpIHtcbiAgICAgIGVsZW1lbnRXaXRoQXV0b0ZvY3VzLmZvY3VzKCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBObyBjaGlsZHJlbiB3ZXJlIGZvdW5kIHdpdGggYXV0b2ZvY3VzIHByb3BlcnR5LiBSZXR1cm4gZmFsc2UuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgZm9jdXMgb24gdGhlIGZpcnN0IGZvY3VzYWJsZSBjaGlsZCBvZiB0aGUgYGVsZW1lbnRSZWZgIHBhcmFtZXRlci5cbiAgICogSWYgbm8gZm9jdXNhYmxlIGNoaWxkcmVuIGFyZSBmb3VuZCwgYW5kIGBmb2N1c09uQ29udGFpbmVySWZOb0NoaWxkcmVuRm91bmRgIGlzIGB0cnVlYCxcbiAgICogZm9jdXMgd2lsbCBiZSBzZXQgb24gdGhlIGNvbnRhaW5lciBlbGVtZW50LlxuICAgKlxuICAgKiBAcGFyYW0gZWxlbWVudFJlZiAtIFRoZSBlbGVtZW50IHRvIHNlYXJjaCB3aXRoaW4uXG4gICAqIEBwYXJhbSBjb250YWluZXJTZWxlY3RvciAtIEEgQ1NTIHNlbGVjdG9yIGluZGljYXRpbmcgdGhlIGNvbnRhaW5lciB0aGF0IHNob3VsZFxuICAgKiByZWNpZXZlIGZvY3VzIGlmIG5vIGZvY3VzYWJsZSBjaGlsZHJlbiBhcmUgZm91bmQuXG4gICAqIEBwYXJhbSBmb2N1c09uQ29udGFpbmVySWZOb0NoaWxkcmVuRm91bmQgLSBJdCBzZXQgdG8gYHRydWVgLCB0aGUgY29udGFpbmVyIHdpbGxcbiAgICogcmVjaWV2ZSBmb2N1cyBpZiBubyBmb2N1c2FibGUgY2hpbGRyZW4gYXJlIGZvdW5kLlxuICAgKi9cbiAgcHVibGljIGdldEZvY3VzYWJsZUNoaWxkcmVuQW5kQXBwbHlGb2N1cyhcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIGNvbnRhaW5lclNlbGVjdG9yOiBzdHJpbmcsXG4gICAgZm9jdXNPbkNvbnRhaW5lcklmTm9DaGlsZHJlbkZvdW5kOiBib29sZWFuID0gZmFsc2VcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgY29udGFpbmVyRWxlbWVudCA9XG4gICAgICBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3Rvcihjb250YWluZXJTZWxlY3Rvcik7XG5cbiAgICBpZiAoY29udGFpbmVyRWxlbWVudCkge1xuICAgICAgY29uc3QgZm9jdXNhYmxlQ2hpbGRyZW4gPSB0aGlzLmdldEZvY3VzYWJsZUNoaWxkcmVuKGNvbnRhaW5lckVsZW1lbnQpO1xuXG4gICAgICAvLyBGb2N1cyBmaXJzdCBmb2N1c2FibGUgY2hpbGQgaWYgYXZhaWxhYmxlLiBPdGhlcndpc2UsIHNldCBmb2N1cyBvbiBjb250YWluZXIuXG4gICAgICBpZiAoXG4gICAgICAgICF0aGlzLmZvY3VzRmlyc3RFbGVtZW50KGZvY3VzYWJsZUNoaWxkcmVuKSAmJlxuICAgICAgICBmb2N1c09uQ29udGFpbmVySWZOb0NoaWxkcmVuRm91bmRcbiAgICAgICkge1xuICAgICAgICBjb250YWluZXJFbGVtZW50LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gYXJyYXkgb2YgYWxsIGZvY3VzYWJsZSBjaGlsZHJlbiBvZiBwcm92aWRlZCBgZWxlbWVudGAuXG4gICAqXG4gICAqIEBwYXJhbSBlbGVtZW50IC0gVGhlIEhUTUxFbGVtZW50IHRvIHNlYXJjaCB3aXRoaW4uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9ucyBmb3IgZ2V0dGluZyBmb2N1c2FibGUgY2hpbGRyZW4uXG4gICAqL1xuICBwdWJsaWMgZ2V0Rm9jdXNhYmxlQ2hpbGRyZW4oXG4gICAgZWxlbWVudDogSFRNTEVsZW1lbnQsXG4gICAgb3B0aW9ucz86IFNreUZvY3VzYWJsZUNoaWxkcmVuT3B0aW9uc1xuICApOiBIVE1MRWxlbWVudFtdIHtcbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBsZXQgZWxlbWVudHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChcbiAgICAgIGVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChTS1lfVEFCQkFCTEVfU0VMRUNUT1IpXG4gICAgKTtcblxuICAgIC8vIFVubGVzcyBpZ25vcmVUYWJJbmRleCA9IHRydWUsIGZpbHRlciBvdXQgZWxlbWVudHMgd2l0aCB0YWJpbmRleCA9IC0xLlxuICAgIGlmICghb3B0aW9ucyB8fCAhb3B0aW9ucy5pZ25vcmVUYWJJbmRleCkge1xuICAgICAgZWxlbWVudHMgPSBlbGVtZW50cy5maWx0ZXIoKGVsOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgICAgICByZXR1cm4gZWwudGFiSW5kZXggIT09IC0xO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gVW5sZXNzIGlnbm9yZVZpc2liaWxpdHkgPSB0cnVlLCBmaWx0ZXIgb3V0IGVsZW1lbnRzIHRoYXQgYXJlIG5vdCB2aXNpYmxlLlxuICAgIGlmICghb3B0aW9ucyB8fCAhb3B0aW9ucy5pZ25vcmVWaXNpYmlsaXR5KSB7XG4gICAgICBlbGVtZW50cyA9IGVsZW1lbnRzLmZpbHRlcigoZWw6IEhUTUxFbGVtZW50KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmlzaWJsZShlbCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZWxlbWVudHM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY2xpZW50V2lkdGggb2YgdGhlIHByb3ZpZGVkIGVsZW1lbnRSZWYuXG4gICAqIEBwYXJhbSBlbGVtZW50UmVmIC0gVGhlIGVsZW1lbnQgdG8gY2FsY3VsYXRlIHdpZHRoIGZyb20uXG4gICAqL1xuICBwdWJsaWMgZ2V0V2lkdGgoZWxlbWVudFJlZjogRWxlbWVudFJlZik6IG51bWJlciB7XG4gICAgcmV0dXJuIGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYW4gZXZlbnQgdGFyZ2V0IGhhcyBhIGhpZ2hlciB6LWluZGV4IHRoYW4gYSBnaXZlbiBlbGVtZW50LlxuICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSBldmVudCB0YXJnZXQgZWxlbWVudC5cbiAgICogQHBhcmFtIGVsZW1lbnQgVGhlIGVsZW1lbnQgdG8gdGVzdCBhZ2FpbnN0LiBBIHotaW5kZXggbXVzdCBiZSBleHBsaWNpdGx5IHNldCBmb3IgdGhpcyBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIGlzVGFyZ2V0QWJvdmVFbGVtZW50KFxuICAgIHRhcmdldDogRXZlbnRUYXJnZXQsXG4gICAgZWxlbWVudDogSFRNTEVsZW1lbnRcbiAgKTogYm9vbGVhbiB7XG4gICAgY29uc3QgekluZGV4ID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS56SW5kZXg7XG5cbiAgICBsZXQgZWwgPSB0YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICB3aGlsZSAoZWwpIHtcbiAgICAgIC8vIEdldHRpbmcgdGhlIGNvbXB1dGVkIHN0eWxlIG9ubHkgd29ya3MgZm9yIGVsZW1lbnRzIHRoYXQgZXhpc3QgaW4gdGhlIERPTS5cbiAgICAgIC8vIEluIGNlcnRhaW4gc2NlbmFyaW9zLCBhbiBlbGVtZW50IGlzIHJlbW92ZWQgYWZ0ZXIgYSBjbGljayBldmVudDsgYnkgdGhlIHRpbWUgdGhlIGV2ZW50XG4gICAgICAvLyBidWJibGVzIHVwIHRvIG90aGVyIGVsZW1lbnRzLCBob3dldmVyLCB0aGUgZWxlbWVudCBoYXMgYmVlbiByZW1vdmVkIGFuZCB0aGUgY29tcHV0ZWQgc3R5bGUgcmV0dXJucyBlbXB0eS5cbiAgICAgIC8vIEluIHRoaXMgY2FzZSwgd2UnbGwgbmVlZCB0byBjaGVjayB0aGUgei1pbmRleCBkaXJlY3RseSwgdmlhIHRoZSBzdHlsZSBwcm9wZXJ0eS5cbiAgICAgIGNvbnN0IHRhcmdldFpJbmRleCA9IGdldENvbXB1dGVkU3R5bGUoZWwpLnpJbmRleCB8fCBlbC5zdHlsZS56SW5kZXg7XG4gICAgICBpZiAoXG4gICAgICAgIHRhcmdldFpJbmRleCAhPT0gJycgJiZcbiAgICAgICAgdGFyZ2V0WkluZGV4ICE9PSAnYXV0bycgJiZcbiAgICAgICAgK3RhcmdldFpJbmRleCA+ICt6SW5kZXhcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgZWwgPSBlbC5wYXJlbnRFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgaW5saW5lIGhlaWdodCBzdHlsZXMgZnJvbSB0aGUgcHJvdmlkZWQgZWxlbWVudHMuXG4gICAqIEBwYXJhbSBlbGVtZW50UmVmIC0gVGhlIGVsZW1lbnQgdG8gc2VhcmNoIHdpdGhpbi5cbiAgICogQHBhcmFtIHNlbGVjdG9yIC0gVGhlIENTUyBzZWxlY3RvciB0byB1c2Ugd2hlbiBmaW5kaW5nIGVsZW1lbnRzIGZvciByZW1vdmluZyBoZWlnaHQuXG4gICAqL1xuICBwdWJsaWMgcmVzZXRIZWlnaHQoZWxlbWVudFJlZjogRWxlbWVudFJlZiwgc2VsZWN0b3I6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGNoaWxkcmVuID0gZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgLy8gU2V0dGluZyBzdHlsZSBhdHRyaWJ1dGVzIHdpdGggV2ViIEFQSSByZXF1aXJlcyBudWxsIGluc3RlYWQgb2YgdW5kZWZpbmVkLlxuICAgICAgICBjaGlsZHJlbltpXS5zdHlsZS5oZWlnaHQgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGFsbCBlbGVtZW50IGhlaWdodHMgdG8gbWF0Y2ggdGhlIGhlaWdodCBvZiB0aGUgdGFsbGVzdCBlbGVtZW50LlxuICAgKiBAcGFyYW0gZWxlbWVudFJlZiAtIFRoZSBlbGVtZW50IHRvIHNlYXJjaCB3aXRoaW4uXG4gICAqIEBwYXJhbSBzZWxlY3RvciAtIFRoZSBDU1Mgc2VsZWN0b3IgdG8gdXNlIHdoZW4gZmluZGluZyBlbGVtZW50cyBmb3Igc3luY2luZyBoZWlnaHQuXG4gICAqL1xuICBwdWJsaWMgc3luY01heEhlaWdodChlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBzZWxlY3Rvcjogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgY2hpbGRyZW4gPSBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgbGV0IG1heEhlaWdodCA9IDA7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG1heEhlaWdodCA9IE1hdGgubWF4KG1heEhlaWdodCwgY2hpbGRyZW5baV0ub2Zmc2V0SGVpZ2h0KTtcbiAgICAgIH1cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY2hpbGRyZW5baV0uc3R5bGUuaGVpZ2h0ID0gbWF4SGVpZ2h0ICsgJ3B4JztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZvY3VzRmlyc3RFbGVtZW50KGxpc3Q6IEFycmF5PEhUTUxFbGVtZW50Pik6IGJvb2xlYW4ge1xuICAgIGlmIChsaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGxpc3RbMF0uZm9jdXMoKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGlzVmlzaWJsZShlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gICAgY29uc3QgaXNIaWRkZW4gPSBzdHlsZS5kaXNwbGF5ID09PSAnbm9uZScgfHwgc3R5bGUudmlzaWJpbGl0eSA9PT0gJ2hpZGRlbic7XG4gICAgaWYgKGlzSGlkZGVuKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgaGFzQm91bmRzID0gISEoXG4gICAgICBlbGVtZW50Lm9mZnNldFdpZHRoIHx8XG4gICAgICBlbGVtZW50Lm9mZnNldEhlaWdodCB8fFxuICAgICAgZWxlbWVudC5nZXRDbGllbnRSZWN0cygpLmxlbmd0aFxuICAgICk7XG4gICAgcmV0dXJuIGhhc0JvdW5kcztcbiAgfVxufVxuIl19
|
228
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL2FkYXB0ZXItc2VydmljZS9hZGFwdGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBRUwsVUFBVSxFQUVWLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFJdkUsTUFBTSxxQkFBcUIsR0FBRztJQUM1QixTQUFTO0lBQ1QsWUFBWTtJQUNaLHVCQUF1QjtJQUN2Qix3QkFBd0I7SUFDeEIsd0JBQXdCO0lBQ3hCLDBCQUEwQjtJQUMxQixRQUFRO0lBQ1IsUUFBUTtJQUNSLE9BQU87SUFDUCx5Q0FBeUM7SUFDekMsNkJBQTZCO0NBQzlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBS2IsTUFBTSxPQUFPLHFCQUFxQjtJQUdoQyxZQUFvQixlQUFpQztRQUFqQyxvQkFBZSxHQUFmLGVBQWUsQ0FBa0I7O1FBRnJELGtEQUFxQjtRQUduQix1QkFBQSxJQUFJLG1DQUFhLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBQSxDQUFDO0lBQ3hFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSwyQkFBMkIsQ0FDaEMsVUFBc0IsRUFDdEIsVUFBK0I7UUFFL0IsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUUxQyx1QkFBQSxJQUFJLHVDQUFVLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSw2QkFBNkIsQ0FBQyxDQUFDO1FBQ3BFLHVCQUFBLElBQUksdUNBQVUsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLDZCQUE2QixDQUFDLENBQUM7UUFDcEUsdUJBQUEsSUFBSSx1Q0FBVSxD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N0M7U0FDRjtJQUNILENBQUM7O2dNQUVrQixJQUF3QjtJQUN6QyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ25CLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoQixPQUFPLElBQUksQ0FBQztLQUNiO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLCtFQUVVLE9BQW9CO0lBQzdCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsT0FBTyxLQUFLLE1BQU0sSUFBSSxLQUFLLENBQUMsVUFBVSxLQUFLLFFBQVEsQ0FBQztJQUMzRSxJQUFJLFFBQVEsRUFBRTtRQUNaLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFFRCxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FDbEIsT0FBTyxDQUFDLFdBQVc7UUFDbkIsT0FBTyxDQUFDLFlBQVk7UUFDcEIsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLE1BQU0sQ0FDaEMsQ0FBQztJQUNGLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7a0hBM1BVLHFCQUFxQjtzSEFBckIscUJBQXFCLGNBRnBCLE1BQU07MkZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdGFibGUsXG4gIFJlbmRlcmVyMixcbiAgUmVuZGVyZXJGYWN0b3J5Mixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreU1lZGlhQnJlYWtwb2ludHMgfSBmcm9tICcuLi9tZWRpYS1xdWVyeS9tZWRpYS1icmVha3BvaW50cyc7XG5cbmltcG9ydCB7IFNreUZvY3VzYWJsZUNoaWxkcmVuT3B0aW9ucyB9IGZyb20gJy4vZm9jdXNhYmxlLWNoaWxkcmVuLW9wdGlvbnMnO1xuXG5jb25zdCBTS1lfVEFCQkFCTEVfU0VMRUNUT1IgPSBbXG4gICdhW2hyZWZdJyxcbiAgJ2FyZWFbaHJlZl0nLFxuICAnaW5wdXQ6bm90KFtkaXNhYmxlZF0pJyxcbiAgJ2J1dHRvbjpub3QoW2Rpc2FibGVkXSknLFxuICAnc2VsZWN0Om5vdChbZGlzYWJsZWRdKScsXG4gICd0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSknLFxuICAnaWZyYW1lJyxcbiAgJ29iamVjdCcsXG4gICdlbWJlZCcsXG4gICcqW2NvbnRlbnRlZGl0YWJsZT10cnVlXTpub3QoW2Rpc2FibGVkXSknLFxuICAnKlt0YWJpbmRleF06bm90KFtkaXNhYmxlZF0pJyxcbl0uam9pbignLCAnKTtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreUNvcmVBZGFwdGVyU2VydmljZSB7XG4gICNyZW5kZXJlcjogUmVuZGVyZXIyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyKSB7XG4gICAgdGhpcy4jcmVuZGVyZXIgPSB0aGlzLnJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcih1bmRlZmluZWQsIG51bGwpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgcmVzcG9uc2l2ZSBjb250YWluZXIgQ1NTIGNsYXNzIGZvciBhIGdpdmVuIGVsZW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBlbGVtZW50UmVmIC0gVGhlIGVsZW1lbnQgdGhhdCB3aWxsIHJlY2lldmUgdGhlIG5ldyBDU1MgY2xhc3MuXG4gICAqIEBwYXJhbSBicmVha3BvaW50IC0gVGhlIFNreU1lZGlhQnJlYWtwb2ludCB3aWxsIGRldGVybWluZSB3aGljaCBjbGFzc1xuICAgKiBnZXRzIHNldC4gRm9yIGV4YW1wbGUgYSBTa3lNZWRpYUJyZWFrcG9pbnQgb2YgYHhzYCB3aWxsIHNldCBhIENTUyBjbGFzcyBvZiBgc2t5LXJlc3BvbnNpdmUtY29udGFpbmVyLXhzYC5cbiAgICovXG4gIHB1YmxpYyBzZXRSZXNwb25zaXZlQ29udGFpbmVyQ2xhc3MoXG4gICAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBicmVha3BvaW50OiBTa3lNZWRpYUJyZWFrcG9pbnRzXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IG5hdGl2ZUVsID0gZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgdGhpcy4jcmVuZGVyZXIucmVtb3ZlQ2xhc3MobmF0aXZlRWwsICdza3ktcmVzcG9uc2l2ZS1jb250YWluZXIteHMnKTtcbiAgICB0aGlzLiNyZW5kZXJlci5yZW1vdmVDbGFzcyhuYXRpdmVFbCwgJ3NreS1yZXNwb25zaXZlLWNvbnRhaW5lci1zbScpO1xuICAgIHRoaXMuI3JlbmRlcmVyLnJlbW92ZUNsYXNzKG5hdGl2ZUVsLCAnc2t5LXJlc3BvbnNpdmUtY29udGFpbmVyLW1kJyk7XG4gICAgdGhpcy4jcmVuZGVyZXIucmVtb3ZlQ2xhc3MobmF0aXZlRWwsICdza3ktcmVzcG9uc2l2ZS1jb250YWluZXItbGcnKTtcblxuICAgIGxldCBuZXdDbGFzczogc3RyaW5nO1xuXG4gICAgc3dpdGNoIChicmVha3BvaW50KSB7XG4gICAgICBjYXNlIFNreU1lZGlhQnJlYWtwb2ludHMueHM6IHtcbiAgICAgICAgbmV3Q2xhc3MgPSAnc2t5LXJlc3BvbnNpdmUtY29udGFpbmVyLXhzJztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIFNreU1lZGlhQnJlYWtwb2ludHMuc206IHtcbiAgICAgICAgbmV3Q2xhc3MgPSAnc2t5LXJlc3BvbnNpdmUtY29udGFpbmVyLXNtJztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIFNreU1lZGlhQnJlYWtwb2ludHMubWQ6IHtcbiAgICAgICAgbmV3Q2xhc3MgPSAnc2t5LXJlc3BvbnNpdmUtY29udGFpbmVyLW1kJztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIG5ld0NsYXNzID0gJ3NreS1yZXNwb25zaXZlLWNvbnRhaW5lci1sZyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuI3JlbmRlcmVyLmFkZENsYXNzKG5hdGl2ZUVsLCBuZXdDbGFzcyk7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgdGVtcG9yYXJpbHkgZW5hYmxlcy9kaXNhYmxlcyBwb2ludGVyIGV2ZW50cy5cbiAgICogVGhpcyBpcyBoZWxwZnVsIHRvIHByZXZlbnQgaUZyYW1lcyBmcm9tIGludGVyZmVyaW5nIHdpdGggZHJhZyBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBlbmFibGUgLSBTZXQgdG8gYHRydWVgIHRvIGVuYWJsZSBwb2ludGVyIGV2ZW50cy4gU2V0IHRvIGBmYWxzZWAgdG8gZGlzYWJsZS5cbiAgICovXG4gIHB1YmxpYyB0b2dnbGVJZnJhbWVQb2ludGVyRXZlbnRzKGVuYWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGlmcmFtZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpZnJhbWUnKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlmcmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8vIFNldHRpbmcgdG8gZW1wdHkgc3RyaW5nIHdpbGwgYWxsb3cgaWZyYW1lIHRvIGZhbGwgYmFjayB0byBpdHMgcHJpb3IgQ1NTIGFzc2lnbm1lbnQuXG4gICAgICBpZnJhbWVzW2ldLnN0eWxlLnBvaW50ZXJFdmVudHMgPSBlbmFibGUgPyAnJyA6ICdub25lJztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRm9jdXNlcyBvbiB0aGUgZmlyc3QgZWxlbWVudCBmb3VuZCB3aXRoIGFuIGBhdXRvZm9jdXNgIGF0dHJpYnV0ZSBpbnNpZGUgdGhlIHN1cHBsaWVkIGBlbGVtZW50UmVmYC5cbiAgICpcbiAgICogQHBhcmFtIGVsZW1lbnRSZWYgLSBUaGUgZWxlbWVudCB0byBzZWFyY2ggd2l0aGluLlxuICAgKiBAcmV0dXJuIFJldHVybnMgYHRydWVgIGlmIGEgY2hpbGQgZWxlbWVudCB3aXRoIGF1dG9mb2N1cyBpcyBmb3VuZC5cbiAgICovXG4gIHB1YmxpYyBhcHBseUF1dG9Gb2N1cyhlbGVtZW50UmVmPzogRWxlbWVudFJlZik6IGJvb2xlYW4ge1xuICAgIGlmICghZWxlbWVudFJlZikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnRXaXRoQXV0b0ZvY3VzID1cbiAgICAgIGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdbYXV0b2ZvY3VzXScpO1xuXG4gICAgLy8gQ2hpbGQgd2FzIGZvdW5kIHdpdGggdGhlIGF1dG9mb2N1cyBwcm9wZXJ0eS4gU2V0IGZvY3VzIGFuZCByZXR1cm4gdHJ1ZS5cbiAgICBpZiAoZWxlbWVudFdpdGhBdXRvRm9jdXMpIHtcbiAgICAgIGVsZW1lbnRXaXRoQXV0b0ZvY3VzLmZvY3VzKCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBObyBjaGlsZHJlbiB3ZXJlIGZvdW5kIHdpdGggYXV0b2ZvY3VzIHByb3BlcnR5LiBSZXR1cm4gZmFsc2UuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgZm9jdXMgb24gdGhlIGZpcnN0IGZvY3VzYWJsZSBjaGlsZCBvZiB0aGUgYGVsZW1lbnRSZWZgIHBhcmFtZXRlci5cbiAgICogSWYgbm8gZm9jdXNhYmxlIGNoaWxkcmVuIGFyZSBmb3VuZCwgYW5kIGBmb2N1c09uQ29udGFpbmVySWZOb0NoaWxkcmVuRm91bmRgIGlzIGB0cnVlYCxcbiAgICogZm9jdXMgd2lsbCBiZSBzZXQgb24gdGhlIGNvbnRhaW5lciBlbGVtZW50LlxuICAgKlxuICAgKiBAcGFyYW0gZWxlbWVudFJlZiAtIFRoZSBlbGVtZW50IHRvIHNlYXJjaCB3aXRoaW4uXG4gICAqIEBwYXJhbSBjb250YWluZXJTZWxlY3RvciAtIEEgQ1NTIHNlbGVjdG9yIGluZGljYXRpbmcgdGhlIGNvbnRhaW5lciB0aGF0IHNob3VsZFxuICAgKiByZWNpZXZlIGZvY3VzIGlmIG5vIGZvY3VzYWJsZSBjaGlsZHJlbiBhcmUgZm91bmQuXG4gICAqIEBwYXJhbSBmb2N1c09uQ29udGFpbmVySWZOb0NoaWxkcmVuRm91bmQgLSBJdCBzZXQgdG8gYHRydWVgLCB0aGUgY29udGFpbmVyIHdpbGxcbiAgICogcmVjaWV2ZSBmb2N1cyBpZiBubyBmb2N1c2FibGUgY2hpbGRyZW4gYXJlIGZvdW5kLlxuICAgKi9cbiAgcHVibGljIGdldEZvY3VzYWJsZUNoaWxkcmVuQW5kQXBwbHlGb2N1cyhcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIGNvbnRhaW5lclNlbGVjdG9yPzogc3RyaW5nLFxuICAgIGZvY3VzT25Db250YWluZXJJZk5vQ2hpbGRyZW5Gb3VuZCA9IGZhbHNlXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRhaW5lckVsZW1lbnQgPVxuICAgICAgZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoY29udGFpbmVyU2VsZWN0b3IpO1xuXG4gICAgaWYgKGNvbnRhaW5lckVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IGZvY3VzYWJsZUNoaWxkcmVuID0gdGhpcy5nZXRGb2N1c2FibGVDaGlsZHJlbihjb250YWluZXJFbGVtZW50KTtcblxuICAgICAgLy8gRm9jdXMgZmlyc3QgZm9jdXNhYmxlIGNoaWxkIGlmIGF2YWlsYWJsZS4gT3RoZXJ3aXNlLCBzZXQgZm9jdXMgb24gY29udGFpbmVyLlxuICAgICAgaWYgKFxuICAgICAgICAhdGhpcy4jZm9jdXNGaXJzdEVsZW1lbnQoZm9jdXNhYmxlQ2hpbGRyZW4pICYmXG4gICAgICAgIGZvY3VzT25Db250YWluZXJJZk5vQ2hpbGRyZW5Gb3VuZFxuICAgICAgKSB7XG4gICAgICAgIGNvbnRhaW5lckVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBhcnJheSBvZiBhbGwgZm9jdXNhYmxlIGNoaWxkcmVuIG9mIHByb3ZpZGVkIGBlbGVtZW50YC5cbiAgICpcbiAgICogQHBhcmFtIGVsZW1lbnQgLSBUaGUgSFRNTEVsZW1lbnQgdG8gc2VhcmNoIHdpdGhpbi5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25zIGZvciBnZXR0aW5nIGZvY3VzYWJsZSBjaGlsZHJlbi5cbiAgICovXG4gIHB1YmxpYyBnZXRGb2N1c2FibGVDaGlsZHJlbihcbiAgICBlbGVtZW50PzogSFRNTEVsZW1lbnQsXG4gICAgb3B0aW9ucz86IFNreUZvY3VzYWJsZUNoaWxkcmVuT3B0aW9uc1xuICApOiBIVE1MRWxlbWVudFtdIHtcbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBsZXQgZWxlbWVudHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChcbiAgICAgIGVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChTS1lfVEFCQkFCTEVfU0VMRUNUT1IpXG4gICAgKTtcblxuICAgIC8vIFVubGVzcyBpZ25vcmVUYWJJbmRleCA9IHRydWUsIGZpbHRlciBvdXQgZWxlbWVudHMgd2l0aCB0YWJpbmRleCA9IC0xLlxuICAgIGlmICghb3B0aW9ucyB8fCAhb3B0aW9ucy5pZ25vcmVUYWJJbmRleCkge1xuICAgICAgZWxlbWVudHMgPSBlbGVtZW50cy5maWx0ZXIoKGVsOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgICAgICByZXR1cm4gZWwudGFiSW5kZXggIT09IC0xO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gVW5sZXNzIGlnbm9yZVZpc2liaWxpdHkgPSB0cnVlLCBmaWx0ZXIgb3V0IGVsZW1lbnRzIHRoYXQgYXJlIG5vdCB2aXNpYmxlLlxuICAgIGlmICghb3B0aW9ucyB8fCAhb3B0aW9ucy5pZ25vcmVWaXNpYmlsaXR5KSB7XG4gICAgICBlbGVtZW50cyA9IGVsZW1lbnRzLmZpbHRlcigoZWw6IEhUTUxFbGVtZW50KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLiNpc1Zpc2libGUoZWwpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVsZW1lbnRzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGNsaWVudFdpZHRoIG9mIHRoZSBwcm92aWRlZCBlbGVtZW50UmVmLlxuICAgKiBAcGFyYW0gZWxlbWVudFJlZiAtIFRoZSBlbGVtZW50IHRvIGNhbGN1bGF0ZSB3aWR0aCBmcm9tLlxuICAgKi9cbiAgcHVibGljIGdldFdpZHRoKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpOiBudW1iZXIge1xuICAgIHJldHVybiBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGg7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGFuIGV2ZW50IHRhcmdldCBoYXMgYSBoaWdoZXIgei1pbmRleCB0aGFuIGEgZ2l2ZW4gZWxlbWVudC5cbiAgICogQHBhcmFtIHRhcmdldCBUaGUgZXZlbnQgdGFyZ2V0IGVsZW1lbnQuXG4gICAqIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50IHRvIHRlc3QgYWdhaW5zdC4gQSB6LWluZGV4IG11c3QgYmUgZXhwbGljaXRseSBzZXQgZm9yIHRoaXMgZWxlbWVudC5cbiAgICovXG4gIHB1YmxpYyBpc1RhcmdldEFib3ZlRWxlbWVudChcbiAgICB0YXJnZXQ6IEV2ZW50VGFyZ2V0LFxuICAgIGVsZW1lbnQ6IEhUTUxFbGVtZW50XG4gICk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHpJbmRleCA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuekluZGV4O1xuXG4gICAgbGV0IGVsID0gdGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgd2hpbGUgKGVsKSB7XG4gICAgICAvLyBHZXR0aW5nIHRoZSBjb21wdXRlZCBzdHlsZSBvbmx5IHdvcmtzIGZvciBlbGVtZW50cyB0aGF0IGV4aXN0IGluIHRoZSBET00uXG4gICAgICAvLyBJbiBjZXJ0YWluIHNjZW5hcmlvcywgYW4gZWxlbWVudCBpcyByZW1vdmVkIGFmdGVyIGEgY2xpY2sgZXZlbnQ7IGJ5IHRoZSB0aW1lIHRoZSBldmVudFxuICAgICAgLy8gYnViYmxlcyB1cCB0byBvdGhlciBlbGVtZW50cywgaG93ZXZlciwgdGhlIGVsZW1lbnQgaGFzIGJlZW4gcmVtb3ZlZCBhbmQgdGhlIGNvbXB1dGVkIHN0eWxlIHJldHVybnMgZW1wdHkuXG4gICAgICAvLyBJbiB0aGlzIGNhc2UsIHdlJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIHotaW5kZXggZGlyZWN0bHksIHZpYSB0aGUgc3R5bGUgcHJvcGVydHkuXG4gICAgICBjb25zdCB0YXJnZXRaSW5kZXggPSBnZXRDb21wdXRlZFN0eWxlKGVsKS56SW5kZXggfHwgZWwuc3R5bGUuekluZGV4O1xuICAgICAgaWYgKFxuICAgICAgICB0YXJnZXRaSW5kZXggIT09ICcnICYmXG4gICAgICAgIHRhcmdldFpJbmRleCAhPT0gJ2F1dG8nICYmXG4gICAgICAgICt0YXJnZXRaSW5kZXggPiArekluZGV4XG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIGVsID0gZWwucGFyZW50RWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGlubGluZSBoZWlnaHQgc3R5bGVzIGZyb20gdGhlIHByb3ZpZGVkIGVsZW1lbnRzLlxuICAgKiBAcGFyYW0gZWxlbWVudFJlZiAtIFRoZSBlbGVtZW50IHRvIHNlYXJjaCB3aXRoaW4uXG4gICAqIEBwYXJhbSBzZWxlY3RvciAtIFRoZSBDU1Mgc2VsZWN0b3IgdG8gdXNlIHdoZW4gZmluZGluZyBlbGVtZW50cyBmb3IgcmVtb3ZpbmcgaGVpZ2h0LlxuICAgKi9cbiAgcHVibGljIHJlc2V0SGVpZ2h0KGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHNlbGVjdG9yOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIC8vIFNldHRpbmcgc3R5bGUgYXR0cmlidXRlcyB3aXRoIFdlYiBBUEkgcmVxdWlyZXMgbnVsbCBpbnN0ZWFkIG9mIHVuZGVmaW5lZC5cbiAgICAgICAgY2hpbGRyZW5baV0uc3R5bGUuaGVpZ2h0ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBhbGwgZWxlbWVudCBoZWlnaHRzIHRvIG1hdGNoIHRoZSBoZWlnaHQgb2YgdGhlIHRhbGxlc3QgZWxlbWVudC5cbiAgICogQHBhcmFtIGVsZW1lbnRSZWYgLSBUaGUgZWxlbWVudCB0byBzZWFyY2ggd2l0aGluLlxuICAgKiBAcGFyYW0gc2VsZWN0b3IgLSBUaGUgQ1NTIHNlbGVjdG9yIHRvIHVzZSB3aGVuIGZpbmRpbmcgZWxlbWVudHMgZm9yIHN5bmNpbmcgaGVpZ2h0LlxuICAgKi9cbiAgcHVibGljIHN5bmNNYXhIZWlnaHQoZWxlbWVudFJlZjogRWxlbWVudFJlZiwgc2VsZWN0b3I6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGNoaWxkcmVuID0gZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgIGxldCBtYXhIZWlnaHQgPSAwO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICBtYXhIZWlnaHQgPSBNYXRoLm1heChtYXhIZWlnaHQsIGNoaWxkcmVuW2ldLm9mZnNldEhlaWdodCk7XG4gICAgICB9XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNoaWxkcmVuW2ldLnN0eWxlLmhlaWdodCA9IG1heEhlaWdodCArICdweCc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgI2ZvY3VzRmlyc3RFbGVtZW50KGxpc3Q6IEFycmF5PEhUTUxFbGVtZW50Pik6IGJvb2xlYW4ge1xuICAgIGlmIChsaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGxpc3RbMF0uZm9jdXMoKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAjaXNWaXNpYmxlKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgICBjb25zdCBpc0hpZGRlbiA9IHN0eWxlLmRpc3BsYXkgPT09ICdub25lJyB8fCBzdHlsZS52aXNpYmlsaXR5ID09PSAnaGlkZGVuJztcbiAgICBpZiAoaXNIaWRkZW4pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBoYXNCb3VuZHMgPSAhIShcbiAgICAgIGVsZW1lbnQub2Zmc2V0V2lkdGggfHxcbiAgICAgIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8XG4gICAgICBlbGVtZW50LmdldENsaWVudFJlY3RzKCkubGVuZ3RoXG4gICAgKTtcbiAgICByZXR1cm4gaGFzQm91bmRzO1xuICB9XG59XG4iXX0=
|
@@ -1,2 +1,2 @@
|
|
1
1
|
export {};
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWZmaXgtb2Zmc2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL2FmZml4L2FmZml4LW9mZnNldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBPZmZzZXQgdmFsdWVzIHVzZWQgYnkgdGhlIGFmZml4ZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2t5QWZmaXhPZmZzZXQge1xuICBib3R0b20/OiBudW1iZXI7XG5cbiAgbGVmdD86IG51bWJlcjtcblxuICByaWdodD86IG51bWJlcjtcblxuICB0b3A/OiBudW1iZXI7XG59XG4iXX0=
|
@@ -1,7 +1,8 @@
|
|
1
|
+
var _SkyAffixDirective_affixer, _SkyAffixDirective_affixService, _SkyAffixDirective_elementRef, _SkyAffixDirective_ngUnsubscribe;
|
2
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
1
3
|
import { Directive, ElementRef, EventEmitter, Input, Output, } from '@angular/core';
|
2
4
|
import { Subject } from 'rxjs';
|
3
5
|
import { takeUntil } from 'rxjs/operators';
|
4
|
-
import { SkyAffixAutoFitContext } from './affix-auto-fit-context';
|
5
6
|
import { SkyAffixService } from './affix.service';
|
6
7
|
import * as i0 from "@angular/core";
|
7
8
|
import * as i1 from "./affix.service";
|
@@ -10,7 +11,6 @@ import * as i1 from "./affix.service";
|
|
10
11
|
*/
|
11
12
|
export class SkyAffixDirective {
|
12
13
|
constructor(elementRef, affixService) {
|
13
|
-
this.affixService = affixService;
|
14
14
|
/**
|
15
15
|
* Fires when the affixed element's offset changes.
|
16
16
|
*/
|
@@ -23,17 +23,25 @@ export class SkyAffixDirective {
|
|
23
23
|
* Fires when the placement value changes.
|
24
24
|
*/
|
25
25
|
this.affixPlacementChange = new EventEmitter();
|
26
|
-
this
|
27
|
-
this
|
28
|
-
this
|
29
|
-
|
26
|
+
_SkyAffixDirective_affixer.set(this, void 0);
|
27
|
+
_SkyAffixDirective_affixService.set(this, void 0);
|
28
|
+
_SkyAffixDirective_elementRef.set(this, void 0);
|
29
|
+
_SkyAffixDirective_ngUnsubscribe.set(this, new Subject());
|
30
|
+
__classPrivateFieldSet(this, _SkyAffixDirective_elementRef, elementRef, "f");
|
31
|
+
__classPrivateFieldSet(this, _SkyAffixDirective_affixService, affixService, "f");
|
32
|
+
}
|
33
|
+
ngOnInit() {
|
34
|
+
__classPrivateFieldSet(this, _SkyAffixDirective_affixer, __classPrivateFieldGet(this, _SkyAffixDirective_affixService, "f").createAffixer(__classPrivateFieldGet(this, _SkyAffixDirective_elementRef, "f")), "f");
|
35
|
+
__classPrivateFieldGet(this, _SkyAffixDirective_affixer, "f").offsetChange
|
36
|
+
.pipe(takeUntil(__classPrivateFieldGet(this, _SkyAffixDirective_ngUnsubscribe, "f")))
|
30
37
|
.subscribe((change) => this.affixOffsetChange.emit(change));
|
31
|
-
this.
|
32
|
-
.pipe(takeUntil(this
|
38
|
+
__classPrivateFieldGet(this, _SkyAffixDirective_affixer, "f").overflowScroll
|
39
|
+
.pipe(takeUntil(__classPrivateFieldGet(this, _SkyAffixDirective_ngUnsubscribe, "f")))
|
33
40
|
.subscribe((change) => this.affixOverflowScroll.emit(change));
|
34
|
-
this.
|
35
|
-
.pipe(takeUntil(this
|
41
|
+
__classPrivateFieldGet(this, _SkyAffixDirective_affixer, "f").placementChange
|
42
|
+
.pipe(takeUntil(__classPrivateFieldGet(this, _SkyAffixDirective_ngUnsubscribe, "f")))
|
36
43
|
.subscribe((change) => this.affixPlacementChange.emit(change));
|
44
|
+
this.updateAlignment();
|
37
45
|
}
|
38
46
|
ngOnChanges(changes) {
|
39
47
|
/* istanbul ignore else */
|
@@ -51,22 +59,29 @@ export class SkyAffixDirective {
|
|
51
59
|
this.affixOffsetChange.complete();
|
52
60
|
this.affixOverflowScroll.complete();
|
53
61
|
this.affixPlacementChange.complete();
|
54
|
-
this.
|
55
|
-
this.
|
56
|
-
|
62
|
+
__classPrivateFieldGet(this, _SkyAffixDirective_ngUnsubscribe, "f").next();
|
63
|
+
__classPrivateFieldGet(this, _SkyAffixDirective_ngUnsubscribe, "f").complete();
|
64
|
+
/*istanbul ignore else*/
|
65
|
+
if (__classPrivateFieldGet(this, _SkyAffixDirective_affixer, "f")) {
|
66
|
+
__classPrivateFieldGet(this, _SkyAffixDirective_affixer, "f").destroy();
|
67
|
+
__classPrivateFieldSet(this, _SkyAffixDirective_affixer, undefined, "f");
|
68
|
+
}
|
57
69
|
}
|
58
70
|
updateAlignment() {
|
59
|
-
this.
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
71
|
+
if (this.skyAffixTo && __classPrivateFieldGet(this, _SkyAffixDirective_affixer, "f")) {
|
72
|
+
__classPrivateFieldGet(this, _SkyAffixDirective_affixer, "f").affixTo(this.skyAffixTo, {
|
73
|
+
autoFitContext: this.affixAutoFitContext,
|
74
|
+
autoFitOverflowOffset: this.affixAutoFitOverflowOffset,
|
75
|
+
enableAutoFit: this.affixEnableAutoFit,
|
76
|
+
horizontalAlignment: this.affixHorizontalAlignment,
|
77
|
+
isSticky: this.affixIsSticky,
|
78
|
+
placement: this.affixPlacement,
|
79
|
+
verticalAlignment: this.affixVerticalAlignment,
|
80
|
+
});
|
81
|
+
}
|
68
82
|
}
|
69
83
|
}
|
84
|
+
_SkyAffixDirective_affixer = new WeakMap(), _SkyAffixDirective_affixService = new WeakMap(), _SkyAffixDirective_elementRef = new WeakMap(), _SkyAffixDirective_ngUnsubscribe = new WeakMap();
|
70
85
|
SkyAffixDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyAffixDirective, deps: [{ token: i0.ElementRef }, { token: i1.SkyAffixService }], target: i0.ɵɵFactoryTarget.Directive });
|
71
86
|
SkyAffixDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.2", type: SkyAffixDirective, selector: "[skyAffixTo]", inputs: { skyAffixTo: "skyAffixTo", affixAutoFitContext: "affixAutoFitContext", affixAutoFitOverflowOffset: "affixAutoFitOverflowOffset", affixEnableAutoFit: "affixEnableAutoFit", affixHorizontalAlignment: "affixHorizontalAlignment", affixIsSticky: "affixIsSticky", affixPlacement: "affixPlacement", affixVerticalAlignment: "affixVerticalAlignment" }, outputs: { affixOffsetChange: "affixOffsetChange", affixOverflowScroll: "affixOverflowScroll", affixPlacementChange: "affixPlacementChange" }, usesOnChanges: true, ngImport: i0 });
|
72
87
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyAffixDirective, decorators: [{
|
@@ -97,4 +112,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
|
|
97
112
|
}], affixPlacementChange: [{
|
98
113
|
type: Output
|
99
114
|
}] } });
|
100
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWZmaXguZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL2FmZml4L2FmZml4LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQU9sRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUdsRDs7R0FFRztBQUlILE1BQU0sT0FBTyxpQkFBaUI7SUF1RTVCLFlBQVksVUFBc0IsRUFBVSxZQUE2QjtRQUE3QixpQkFBWSxHQUFaLFlBQVksQ0FBaUI7UUF0QnpFOztXQUVHO1FBRUksc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQXdCLENBQUM7UUFFcEU7O1dBRUc7UUFFSSx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXREOztXQUVHO1FBRUkseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQTJCLENBQUM7UUFJbEUsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRzFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFM0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZO2FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQ25DLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBRTlELElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYzthQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNuQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUVoRSxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWU7YUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDbkMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVNLFdBQVcsQ0FBQyxPQUFzQjtRQUN2QywwQkFBMEI7UUFDMUIsSUFDRSxPQUFPLENBQUMsbUJBQW1CO1lBQzNCLE9BQU8sQ0FBQywwQkFBMEI7WUFDbEMsT0FBTyxDQUFDLGtCQUFrQjtZQUMxQixPQUFPLENBQUMsd0JBQXdCO1lBQ2hDLE9BQU8sQ0FBQyxhQUFhO1lBQ3JCLE9BQU8sQ0FBQyxjQUFjO1lBQ3RCLE9BQU8sQ0FBQyxzQkFBc0IsRUFDOUI7WUFDQSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDeEI7SUFDSCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU8sZUFBZTtRQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3BDLGNBQWMsRUFBRSxJQUFJLENBQUMsbUJBQW1CO1lBQ3hDLHFCQUFxQixFQUFFLElBQUksQ0FBQywwQkFBMEI7WUFDdEQsYUFBYSxFQUFFLElBQUksQ0FBQyxrQkFBa0I7WUFDdEMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLHdCQUF3QjtZQUNsRCxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDNUIsU0FBUyxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQzlCLGlCQUFpQixFQUFFLElBQUksQ0FBQyxzQkFBc0I7U0FDL0MsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7OEdBekhVLGlCQUFpQjtrR0FBakIsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBSDdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGNBQWM7aUJBQ3pCOytIQU1RLFVBQVU7c0JBRGhCLEtBQUs7Z0JBT0MsbUJBQW1CO3NCQUR6QixLQUFLO2dCQU9DLDBCQUEwQjtzQkFEaEMsS0FBSztnQkFPQyxrQkFBa0I7c0JBRHhCLEtBQUs7Z0JBT0Msd0JBQXdCO3NCQUQ5QixLQUFLO2dCQU9DLGFBQWE7c0JBRG5CLEtBQUs7Z0JBT0MsY0FBYztzQkFEcEIsS0FBSztnQkFPQyxzQkFBc0I7c0JBRDVCLEtBQUs7Z0JBT0MsaUJBQWlCO3NCQUR2QixNQUFNO2dCQU9BLG1CQUFtQjtzQkFEekIsTUFBTTtnQkFPQSxvQkFBb0I7c0JBRDFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreUFmZml4QXV0b0ZpdENvbnRleHQgfSBmcm9tICcuL2FmZml4LWF1dG8tZml0LWNvbnRleHQnO1xuaW1wb3J0IHsgU2t5QWZmaXhIb3Jpem9udGFsQWxpZ25tZW50IH0gZnJvbSAnLi9hZmZpeC1ob3Jpem9udGFsLWFsaWdubWVudCc7XG5pbXBvcnQgeyBTa3lBZmZpeE9mZnNldCB9IGZyb20gJy4vYWZmaXgtb2Zmc2V0JztcbmltcG9ydCB7IFNreUFmZml4T2Zmc2V0Q2hhbmdlIH0gZnJvbSAnLi9hZmZpeC1vZmZzZXQtY2hhbmdlJztcbmltcG9ydCB7IFNreUFmZml4UGxhY2VtZW50IH0gZnJvbSAnLi9hZmZpeC1wbGFjZW1lbnQnO1xuaW1wb3J0IHsgU2t5QWZmaXhQbGFjZW1lbnRDaGFuZ2UgfSBmcm9tICcuL2FmZml4LXBsYWNlbWVudC1jaGFuZ2UnO1xuaW1wb3J0IHsgU2t5QWZmaXhWZXJ0aWNhbEFsaWdubWVudCB9IGZyb20gJy4vYWZmaXgtdmVydGljYWwtYWxpZ25tZW50JztcbmltcG9ydCB7IFNreUFmZml4U2VydmljZSB9IGZyb20gJy4vYWZmaXguc2VydmljZSc7XG5pbXBvcnQgeyBTa3lBZmZpeGVyIH0gZnJvbSAnLi9hZmZpeGVyJztcblxuLyoqXG4gKiBBZmZpeGVzIHRoZSBob3N0IGVsZW1lbnQgdG8gYSBiYXNlIGVsZW1lbnQuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tza3lBZmZpeFRvXScsXG59KVxuZXhwb3J0IGNsYXNzIFNreUFmZml4RGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogVGhlIGJhc2UgZWxlbWVudCB0byBhZmZpeCB0aGUgaG9zdCBlbGVtZW50LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNreUFmZml4VG86IEhUTUxFbGVtZW50O1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBgYXV0b0ZpdENvbnRleHRgIHByb3BlcnR5IG9mIFtbU2t5QWZmaXhDb25maWddXS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhZmZpeEF1dG9GaXRDb250ZXh0OiBTa3lBZmZpeEF1dG9GaXRDb250ZXh0O1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBgYXV0b0ZpdE92ZXJmbG93T2Zmc2V0YCBwcm9wZXJ0eSBvZiBbW1NreUFmZml4Q29uZmlnXV0uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYWZmaXhBdXRvRml0T3ZlcmZsb3dPZmZzZXQ6IFNreUFmZml4T2Zmc2V0O1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBgZW5hYmxlQXV0b0ZpdGAgcHJvcGVydHkgb2YgW1tTa3lBZmZpeENvbmZpZ11dLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFmZml4RW5hYmxlQXV0b0ZpdDogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2V0cyB0aGUgYGhvcml6b250YWxBbGlnbm1lbnRgIHByb3BlcnR5IG9mIFtbU2t5QWZmaXhDb25maWddXS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhZmZpeEhvcml6b250YWxBbGlnbm1lbnQ6IFNreUFmZml4SG9yaXpvbnRhbEFsaWdubWVudDtcblxuICAvKipcbiAgICogU2V0cyB0aGUgYGlzU3RpY2t5YCBwcm9wZXJ0eSBvZiBbW1NreUFmZml4Q29uZmlnXV0uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYWZmaXhJc1N0aWNreTogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2V0cyB0aGUgYHBsYWNlbWVudGAgcHJvcGVydHkgb2YgW1tTa3lBZmZpeENvbmZpZ11dLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFmZml4UGxhY2VtZW50OiBTa3lBZmZpeFBsYWNlbWVudDtcblxuICAvKipcbiAgICogU2V0cyB0aGUgYHZlcnRpY2FsQWxpZ25tZW50YCBwcm9wZXJ0eSBvZiBbW1NreUFmZml4Q29uZmlnXV0uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYWZmaXhWZXJ0aWNhbEFsaWdubWVudDogU2t5QWZmaXhWZXJ0aWNhbEFsaWdubWVudDtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgYWZmaXhlZCBlbGVtZW50J3Mgb2Zmc2V0IGNoYW5nZXMuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGFmZml4T2Zmc2V0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lBZmZpeE9mZnNldENoYW5nZT4oKTtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgYWZmaXhlZCBlbGVtZW50J3Mgb3ZlcmZsb3cgY29udGFpbmVyIGlzIHNjcm9sbGVkLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBhZmZpeE92ZXJmbG93U2Nyb2xsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBwbGFjZW1lbnQgdmFsdWUgY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgYWZmaXhQbGFjZW1lbnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNreUFmZml4UGxhY2VtZW50Q2hhbmdlPigpO1xuXG4gIHByaXZhdGUgYWZmaXhlcjogU2t5QWZmaXhlcjtcblxuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgYWZmaXhTZXJ2aWNlOiBTa3lBZmZpeFNlcnZpY2UpIHtcbiAgICB0aGlzLmFmZml4ZXIgPSB0aGlzLmFmZml4U2VydmljZS5jcmVhdGVBZmZpeGVyKGVsZW1lbnRSZWYpO1xuXG4gICAgdGhpcy5hZmZpeGVyLm9mZnNldENoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChjaGFuZ2UpID0+IHRoaXMuYWZmaXhPZmZzZXRDaGFuZ2UuZW1pdChjaGFuZ2UpKTtcblxuICAgIHRoaXMuYWZmaXhlci5vdmVyZmxvd1Njcm9sbFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChjaGFuZ2UpID0+IHRoaXMuYWZmaXhPdmVyZmxvd1Njcm9sbC5lbWl0KGNoYW5nZSkpO1xuXG4gICAgdGhpcy5hZmZpeGVyLnBsYWNlbWVudENoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChjaGFuZ2UpID0+IHRoaXMuYWZmaXhQbGFjZW1lbnRDaGFuZ2UuZW1pdChjaGFuZ2UpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoXG4gICAgICBjaGFuZ2VzLmFmZml4QXV0b0ZpdENvbnRleHQgfHxcbiAgICAgIGNoYW5nZXMuYWZmaXhBdXRvRml0T3ZlcmZsb3dPZmZzZXQgfHxcbiAgICAgIGNoYW5nZXMuYWZmaXhFbmFibGVBdXRvRml0IHx8XG4gICAgICBjaGFuZ2VzLmFmZml4SG9yaXpvbnRhbEFsaWdubWVudCB8fFxuICAgICAgY2hhbmdlcy5hZmZpeElzU3RpY2t5IHx8XG4gICAgICBjaGFuZ2VzLmFmZml4UGxhY2VtZW50IHx8XG4gICAgICBjaGFuZ2VzLmFmZml4VmVydGljYWxBbGlnbm1lbnRcbiAgICApIHtcbiAgICAgIHRoaXMudXBkYXRlQWxpZ25tZW50KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuYWZmaXhPZmZzZXRDaGFuZ2UuY29tcGxldGUoKTtcbiAgICB0aGlzLmFmZml4T3ZlcmZsb3dTY3JvbGwuY29tcGxldGUoKTtcbiAgICB0aGlzLmFmZml4UGxhY2VtZW50Q2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB0aGlzLmFmZml4ZXIuZGVzdHJveSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVBbGlnbm1lbnQoKTogdm9pZCB7XG4gICAgdGhpcy5hZmZpeGVyLmFmZml4VG8odGhpcy5za3lBZmZpeFRvLCB7XG4gICAgICBhdXRvRml0Q29udGV4dDogdGhpcy5hZmZpeEF1dG9GaXRDb250ZXh0LFxuICAgICAgYXV0b0ZpdE92ZXJmbG93T2Zmc2V0OiB0aGlzLmFmZml4QXV0b0ZpdE92ZXJmbG93T2Zmc2V0LFxuICAgICAgZW5hYmxlQXV0b0ZpdDogdGhpcy5hZmZpeEVuYWJsZUF1dG9GaXQsXG4gICAgICBob3Jpem9udGFsQWxpZ25tZW50OiB0aGlzLmFmZml4SG9yaXpvbnRhbEFsaWdubWVudCxcbiAgICAgIGlzU3RpY2t5OiB0aGlzLmFmZml4SXNTdGlja3ksXG4gICAgICBwbGFjZW1lbnQ6IHRoaXMuYWZmaXhQbGFjZW1lbnQsXG4gICAgICB2ZXJ0aWNhbEFsaWdubWVudDogdGhpcy5hZmZpeFZlcnRpY2FsQWxpZ25tZW50LFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWZmaXguZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL2FmZml4L2FmZml4LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBUzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBR2xEOztHQUVHO0FBSUgsTUFBTSxPQUFPLGlCQUFpQjtJQTJFNUIsWUFBWSxVQUFzQixFQUFFLFlBQTZCO1FBMUJqRTs7V0FFRztRQUVJLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUF3QixDQUFDO1FBRXBFOztXQUVHO1FBRUksd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUV0RDs7V0FFRztRQUVJLHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUEyQixDQUFDO1FBRTFFLDZDQUFpQztRQUVqQyxrREFBK0I7UUFFL0IsZ0RBQXdCO1FBRXhCLDJDQUFpQixJQUFJLE9BQU8sRUFBUSxFQUFDO1FBR25DLHVCQUFBLElBQUksaUNBQWUsVUFBVSxNQUFBLENBQUM7UUFDOUIsdUJBQUEsSUFBSSxtQ0FBaUIsWUFBWSxNQUFBLENBQUM7SUFDcEMsQ0FBQztJQUVNLFFBQVE7UUFDYix1QkFBQSxJQUFJLDhCQUFZLHVCQUFBLElBQUksdUNBQWMsQ0FBQyxhQUFhLENBQUMsdUJBQUEsSUFBSSxxQ0FBWSxDQUFDLE1BQUEsQ0FBQztRQUVuRSx1QkFBQSxJQUFJLGtDQUFTLENBQUMsWUFBWTthQUN2QixJ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LEtBQUs7Z0JBT0Msc0JBQXNCO3NCQUQ1QixLQUFLO2dCQU9DLGlCQUFpQjtzQkFEdkIsTUFBTTtnQkFPQSxtQkFBbUI7c0JBRHpCLE1BQU07Z0JBT0Esb0JBQW9CO3NCQUQxQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreUFmZml4QXV0b0ZpdENvbnRleHQgfSBmcm9tICcuL2FmZml4LWF1dG8tZml0LWNvbnRleHQnO1xuaW1wb3J0IHsgU2t5QWZmaXhIb3Jpem9udGFsQWxpZ25tZW50IH0gZnJvbSAnLi9hZmZpeC1ob3Jpem9udGFsLWFsaWdubWVudCc7XG5pbXBvcnQgeyBTa3lBZmZpeE9mZnNldCB9IGZyb20gJy4vYWZmaXgtb2Zmc2V0JztcbmltcG9ydCB7IFNreUFmZml4T2Zmc2V0Q2hhbmdlIH0gZnJvbSAnLi9hZmZpeC1vZmZzZXQtY2hhbmdlJztcbmltcG9ydCB7IFNreUFmZml4UGxhY2VtZW50IH0gZnJvbSAnLi9hZmZpeC1wbGFjZW1lbnQnO1xuaW1wb3J0IHsgU2t5QWZmaXhQbGFjZW1lbnRDaGFuZ2UgfSBmcm9tICcuL2FmZml4LXBsYWNlbWVudC1jaGFuZ2UnO1xuaW1wb3J0IHsgU2t5QWZmaXhWZXJ0aWNhbEFsaWdubWVudCB9IGZyb20gJy4vYWZmaXgtdmVydGljYWwtYWxpZ25tZW50JztcbmltcG9ydCB7IFNreUFmZml4U2VydmljZSB9IGZyb20gJy4vYWZmaXguc2VydmljZSc7XG5pbXBvcnQgeyBTa3lBZmZpeGVyIH0gZnJvbSAnLi9hZmZpeGVyJztcblxuLyoqXG4gKiBBZmZpeGVzIHRoZSBob3N0IGVsZW1lbnQgdG8gYSBiYXNlIGVsZW1lbnQuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tza3lBZmZpeFRvXScsXG59KVxuZXhwb3J0IGNsYXNzIFNreUFmZml4RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBUaGUgYmFzZSBlbGVtZW50IHRvIGFmZml4IHRoZSBob3N0IGVsZW1lbnQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2t5QWZmaXhUbzogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGBhdXRvRml0Q29udGV4dGAgcHJvcGVydHkgb2YgW1tTa3lBZmZpeENvbmZpZ11dLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFmZml4QXV0b0ZpdENvbnRleHQ6IFNreUFmZml4QXV0b0ZpdENvbnRleHQgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGBhdXRvRml0T3ZlcmZsb3dPZmZzZXRgIHByb3BlcnR5IG9mIFtbU2t5QWZmaXhDb25maWddXS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhZmZpeEF1dG9GaXRPdmVyZmxvd09mZnNldDogU2t5QWZmaXhPZmZzZXQgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGBlbmFibGVBdXRvRml0YCBwcm9wZXJ0eSBvZiBbW1NreUFmZml4Q29uZmlnXV0uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYWZmaXhFbmFibGVBdXRvRml0OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBgaG9yaXpvbnRhbEFsaWdubWVudGAgcHJvcGVydHkgb2YgW1tTa3lBZmZpeENvbmZpZ11dLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFmZml4SG9yaXpvbnRhbEFsaWdubWVudDogU2t5QWZmaXhIb3Jpem9udGFsQWxpZ25tZW50IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBgaXNTdGlja3lgIHByb3BlcnR5IG9mIFtbU2t5QWZmaXhDb25maWddXS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhZmZpeElzU3RpY2t5OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBgcGxhY2VtZW50YCBwcm9wZXJ0eSBvZiBbW1NreUFmZml4Q29uZmlnXV0uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYWZmaXhQbGFjZW1lbnQ6IFNreUFmZml4UGxhY2VtZW50IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBgdmVydGljYWxBbGlnbm1lbnRgIHByb3BlcnR5IG9mIFtbU2t5QWZmaXhDb25maWddXS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhZmZpeFZlcnRpY2FsQWxpZ25tZW50OiBTa3lBZmZpeFZlcnRpY2FsQWxpZ25tZW50IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBhZmZpeGVkIGVsZW1lbnQncyBvZmZzZXQgY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgYWZmaXhPZmZzZXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNreUFmZml4T2Zmc2V0Q2hhbmdlPigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBhZmZpeGVkIGVsZW1lbnQncyBvdmVyZmxvdyBjb250YWluZXIgaXMgc2Nyb2xsZWQuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGFmZml4T3ZlcmZsb3dTY3JvbGwgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHBsYWNlbWVudCB2YWx1ZSBjaGFuZ2VzLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBhZmZpeFBsYWNlbWVudENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5QWZmaXhQbGFjZW1lbnRDaGFuZ2U+KCk7XG5cbiAgI2FmZml4ZXI6IFNreUFmZml4ZXIgfCB1bmRlZmluZWQ7XG5cbiAgI2FmZml4U2VydmljZTogU2t5QWZmaXhTZXJ2aWNlO1xuXG4gICNlbGVtZW50UmVmOiBFbGVtZW50UmVmO1xuXG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBhZmZpeFNlcnZpY2U6IFNreUFmZml4U2VydmljZSkge1xuICAgIHRoaXMuI2VsZW1lbnRSZWYgPSBlbGVtZW50UmVmO1xuICAgIHRoaXMuI2FmZml4U2VydmljZSA9IGFmZml4U2VydmljZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLiNhZmZpeGVyID0gdGhpcy4jYWZmaXhTZXJ2aWNlLmNyZWF0ZUFmZml4ZXIodGhpcy4jZWxlbWVudFJlZik7XG5cbiAgICB0aGlzLiNhZmZpeGVyLm9mZnNldENoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoY2hhbmdlKSA9PiB0aGlzLmFmZml4T2Zmc2V0Q2hhbmdlLmVtaXQoY2hhbmdlKSk7XG5cbiAgICB0aGlzLiNhZmZpeGVyLm92ZXJmbG93U2Nyb2xsXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChjaGFuZ2UpID0+IHRoaXMuYWZmaXhPdmVyZmxvd1Njcm9sbC5lbWl0KGNoYW5nZSkpO1xuXG4gICAgdGhpcy4jYWZmaXhlci5wbGFjZW1lbnRDaGFuZ2VcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZSkgPT4gdGhpcy5hZmZpeFBsYWNlbWVudENoYW5nZS5lbWl0KGNoYW5nZSkpO1xuXG4gICAgdGhpcy51cGRhdGVBbGlnbm1lbnQoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoXG4gICAgICBjaGFuZ2VzLmFmZml4QXV0b0ZpdENvbnRleHQgfHxcbiAgICAgIGNoYW5nZXMuYWZmaXhBdXRvRml0T3ZlcmZsb3dPZmZzZXQgfHxcbiAgICAgIGNoYW5nZXMuYWZmaXhFbmFibGVBdXRvRml0IHx8XG4gICAgICBjaGFuZ2VzLmFmZml4SG9yaXpvbnRhbEFsaWdubWVudCB8fFxuICAgICAgY2hhbmdlcy5hZmZpeElzU3RpY2t5IHx8XG4gICAgICBjaGFuZ2VzLmFmZml4UGxhY2VtZW50IHx8XG4gICAgICBjaGFuZ2VzLmFmZml4VmVydGljYWxBbGlnbm1lbnRcbiAgICApIHtcbiAgICAgIHRoaXMudXBkYXRlQWxpZ25tZW50KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuYWZmaXhPZmZzZXRDaGFuZ2UuY29tcGxldGUoKTtcbiAgICB0aGlzLmFmZml4T3ZlcmZsb3dTY3JvbGwuY29tcGxldGUoKTtcbiAgICB0aGlzLmFmZml4UGxhY2VtZW50Q2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuXG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgaWYgKHRoaXMuI2FmZml4ZXIpIHtcbiAgICAgIHRoaXMuI2FmZml4ZXIuZGVzdHJveSgpO1xuICAgICAgdGhpcy4jYWZmaXhlciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUFsaWdubWVudCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5za3lBZmZpeFRvICYmIHRoaXMuI2FmZml4ZXIpIHtcbiAgICAgIHRoaXMuI2FmZml4ZXIuYWZmaXhUbyh0aGlzLnNreUFmZml4VG8sIHtcbiAgICAgICAgYXV0b0ZpdENvbnRleHQ6IHRoaXMuYWZmaXhBdXRvRml0Q29udGV4dCxcbiAgICAgICAgYXV0b0ZpdE92ZXJmbG93T2Zmc2V0OiB0aGlzLmFmZml4QXV0b0ZpdE92ZXJmbG93T2Zmc2V0LFxuICAgICAgICBlbmFibGVBdXRvRml0OiB0aGlzLmFmZml4RW5hYmxlQXV0b0ZpdCxcbiAgICAgICAgaG9yaXpvbnRhbEFsaWdubWVudDogdGhpcy5hZmZpeEhvcml6b250YWxBbGlnbm1lbnQsXG4gICAgICAgIGlzU3RpY2t5OiB0aGlzLmFmZml4SXNTdGlja3ksXG4gICAgICAgIHBsYWNlbWVudDogdGhpcy5hZmZpeFBsYWNlbWVudCxcbiAgICAgICAgdmVydGljYWxBbGlnbm1lbnQ6IHRoaXMuYWZmaXhWZXJ0aWNhbEFsaWdubWVudCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
|