@skyux/lists 7.16.0 → 7.18.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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXItYXV0by1zY3JvbGwtb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9saXN0cy9zcmMvbGliL21vZHVsZXMvcmVwZWF0ZXIvcmVwZWF0ZXItYXV0by1zY3JvbGwtb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTa3lSZXBlYXRlckF1dG9TY3JvbGxPcHRpb25zIHtcbiAgbWFyZ2luOiBudW1iZXI7XG4gIG1heFNwZWVkOiBudW1iZXI7XG4gIHNjcm9sbFdoZW5PdXRzaWRlOiBib29sZWFuO1xuICBhdXRvU2Nyb2xsKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59XG4iXX0=
@@ -0,0 +1,17 @@
1
+ import { Injectable } from '@angular/core';
2
+ import autoScroll from 'dom-autoscroller';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * @internal
6
+ */
7
+ export class SkyRepeaterAutoScrollService {
8
+ autoScroll(elements, options) {
9
+ return autoScroll(elements, options);
10
+ }
11
+ }
12
+ SkyRepeaterAutoScrollService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyRepeaterAutoScrollService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
13
+ SkyRepeaterAutoScrollService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyRepeaterAutoScrollService });
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyRepeaterAutoScrollService, decorators: [{
15
+ type: Injectable
16
+ }] });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXItYXV0by1zY3JvbGwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9saXN0cy9zcmMvbGliL21vZHVsZXMvcmVwZWF0ZXIvcmVwZWF0ZXItYXV0by1zY3JvbGwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sVUFBVSxNQUFNLGtCQUFrQixDQUFDOztBQUsxQzs7R0FFRztBQUVILE1BQU0sT0FBTyw0QkFBNEI7SUFDaEMsVUFBVSxDQUNmLFFBQWtDLEVBQ2xDLE9BQXFDO1FBRXJDLE9BQU8sVUFBVSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2QyxDQUFDOzswSEFOVSw0QkFBNEI7OEhBQTVCLDRCQUE0Qjs0RkFBNUIsNEJBQTRCO2tCQUR4QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgYXV0b1Njcm9sbCBmcm9tICdkb20tYXV0b3Njcm9sbGVyJztcblxuaW1wb3J0IHsgU2t5UmVwZWF0ZXJBdXRvU2Nyb2xsT3B0aW9ucyB9IGZyb20gJy4vcmVwZWF0ZXItYXV0by1zY3JvbGwtb3B0aW9ucyc7XG5pbXBvcnQgeyBTa3lSZXBlYXRlckF1dG9TY3JvbGxlciB9IGZyb20gJy4vcmVwZWF0ZXItYXV0by1zY3JvbGxlcic7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lSZXBlYXRlckF1dG9TY3JvbGxTZXJ2aWNlIHtcbiAgcHVibGljIGF1dG9TY3JvbGwoXG4gICAgZWxlbWVudHM6IChIVE1MRWxlbWVudCB8IFdpbmRvdylbXSxcbiAgICBvcHRpb25zOiBTa3lSZXBlYXRlckF1dG9TY3JvbGxPcHRpb25zXG4gICk6IFNreVJlcGVhdGVyQXV0b1Njcm9sbGVyIHtcbiAgICByZXR1cm4gYXV0b1Njcm9sbChlbGVtZW50cywgb3B0aW9ucyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXItYXV0by1zY3JvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9saXN0cy9zcmMvbGliL21vZHVsZXMvcmVwZWF0ZXIvcmVwZWF0ZXItYXV0by1zY3JvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTa3lSZXBlYXRlckF1dG9TY3JvbGxlciB7XG4gIGRlc3Ryb3koKTogdm9pZDtcbn1cbiJdfQ==
@@ -1,22 +1,23 @@
1
- var _SkyRepeaterComponent_instances, _SkyRepeaterComponent_adapterService, _SkyRepeaterComponent_changeDetector, _SkyRepeaterComponent_dragulaService, _SkyRepeaterComponent_elementRef, _SkyRepeaterComponent_renderer, _SkyRepeaterComponent_repeaterService, _SkyRepeaterComponent_ngUnsubscribe, _SkyRepeaterComponent_updateForExpandMode, _SkyRepeaterComponent_initializeDragAndDrop, _SkyRepeaterComponent_destroyDragAndDrop, _SkyRepeaterComponent_emitTags, _SkyRepeaterComponent_everyItemHasTag, _SkyRepeaterComponent_updateRole;
1
+ var _SkyRepeaterComponent_instances, _SkyRepeaterComponent_autoScroller, _SkyRepeaterComponent_ngUnsubscribe, _SkyRepeaterComponent_adapterService, _SkyRepeaterComponent_changeDetector, _SkyRepeaterComponent_dragulaService, _SkyRepeaterComponent_elementRef, _SkyRepeaterComponent_renderer, _SkyRepeaterComponent_repeaterService, _SkyRepeaterComponent_autoScrollSvc, _SkyRepeaterComponent_scrollableHostSvc, _SkyRepeaterComponent_updateForExpandMode, _SkyRepeaterComponent_initializeDragAndDrop, _SkyRepeaterComponent_destroyDragAndDrop, _SkyRepeaterComponent_destroyAutoScroll, _SkyRepeaterComponent_emitTags, _SkyRepeaterComponent_everyItemHasTag, _SkyRepeaterComponent_updateRole, _SkyRepeaterComponent_updateReorderability, _SkyRepeaterComponent_validateTags;
2
2
  import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
- import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Input, Output, } from '@angular/core';
3
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, Input, Output, Renderer2, inject, } from '@angular/core';
4
+ import { SkyScrollableHostService } from '@skyux/core';
5
+ import { DragulaService } from 'ng2-dragula';
4
6
  import { Subject } from 'rxjs';
5
7
  import { takeUntil } from 'rxjs/operators';
6
8
  import { SkyRepeaterAdapterService } from './repeater-adapter.service';
9
+ import { SkyRepeaterAutoScrollService } from './repeater-auto-scroll.service';
7
10
  import { SkyRepeaterItemComponent } from './repeater-item.component';
8
11
  import { SkyRepeaterService } from './repeater.service';
9
12
  import * as i0 from "@angular/core";
10
- import * as i1 from "./repeater.service";
11
- import * as i2 from "./repeater-adapter.service";
12
- import * as i3 from "ng2-dragula";
13
- import * as i4 from "@angular/cdk/observers";
14
- import * as i5 from "@skyux/i18n";
13
+ import * as i1 from "ng2-dragula";
14
+ import * as i2 from "@angular/cdk/observers";
15
+ import * as i3 from "@skyux/i18n";
15
16
  /**
16
17
  * Creates a container to display repeater items.
17
18
  */
18
19
  export class SkyRepeaterComponent {
19
- constructor(changeDetector, repeaterService, adapterService, dragulaService, elementRef, renderer) {
20
+ constructor() {
20
21
  _SkyRepeaterComponent_instances.add(this);
21
22
  /**
22
23
  * Whether users can change the order of items in the repeater list.
@@ -33,19 +34,16 @@ export class SkyRepeaterComponent {
33
34
  * This event emits an ordered array of the `tag` properties that the consumer provides for each repeater item.
34
35
  */
35
36
  this.orderChange = new EventEmitter();
36
- _SkyRepeaterComponent_adapterService.set(this, void 0);
37
- _SkyRepeaterComponent_changeDetector.set(this, void 0);
38
- _SkyRepeaterComponent_dragulaService.set(this, void 0);
39
- _SkyRepeaterComponent_elementRef.set(this, void 0);
40
- _SkyRepeaterComponent_renderer.set(this, void 0);
41
- _SkyRepeaterComponent_repeaterService.set(this, void 0);
37
+ _SkyRepeaterComponent_autoScroller.set(this, void 0);
42
38
  _SkyRepeaterComponent_ngUnsubscribe.set(this, new Subject());
43
- __classPrivateFieldSet(this, _SkyRepeaterComponent_changeDetector, changeDetector, "f");
44
- __classPrivateFieldSet(this, _SkyRepeaterComponent_repeaterService, repeaterService, "f");
45
- __classPrivateFieldSet(this, _SkyRepeaterComponent_adapterService, adapterService, "f");
46
- __classPrivateFieldSet(this, _SkyRepeaterComponent_dragulaService, dragulaService, "f");
47
- __classPrivateFieldSet(this, _SkyRepeaterComponent_elementRef, elementRef, "f");
48
- __classPrivateFieldSet(this, _SkyRepeaterComponent_renderer, renderer, "f");
39
+ _SkyRepeaterComponent_adapterService.set(this, inject(SkyRepeaterAdapterService));
40
+ _SkyRepeaterComponent_changeDetector.set(this, inject(ChangeDetectorRef));
41
+ _SkyRepeaterComponent_dragulaService.set(this, inject(DragulaService));
42
+ _SkyRepeaterComponent_elementRef.set(this, inject(ElementRef));
43
+ _SkyRepeaterComponent_renderer.set(this, inject(Renderer2));
44
+ _SkyRepeaterComponent_repeaterService.set(this, inject(SkyRepeaterService));
45
+ _SkyRepeaterComponent_autoScrollSvc.set(this, inject(SkyRepeaterAutoScrollService));
46
+ _SkyRepeaterComponent_scrollableHostSvc.set(this, inject(SkyScrollableHostService));
49
47
  this.dragulaGroupName = `sky-repeater-dragula-${__classPrivateFieldGet(this, _SkyRepeaterComponent_repeaterService, "f").repeaterGroupId}`;
50
48
  __classPrivateFieldGet(this, _SkyRepeaterComponent_repeaterService, "f").itemCollapseStateChange
51
49
  .pipe(takeUntil(__classPrivateFieldGet(this, _SkyRepeaterComponent_ngUnsubscribe, "f")))
@@ -110,22 +108,22 @@ export class SkyRepeaterComponent {
110
108
  if (this.activeIndex || this.activeIndex === 0) {
111
109
  __classPrivateFieldGet(this, _SkyRepeaterComponent_repeaterService, "f").activateItemByIndex(this.activeIndex);
112
110
  }
113
- if (this.reorderable && !__classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_everyItemHasTag).call(this)) {
114
- console.warn('Please supply tag properties for each repeater item when reordering functionality is enabled.');
115
- }
111
+ __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_validateTags).call(this);
116
112
  });
117
113
  // HACK: Not updating for expand mode in a timeout causes an error.
118
114
  // https://github.com/angular/angular/issues/6005
119
115
  this.items?.changes.pipe(takeUntil(__classPrivateFieldGet(this, _SkyRepeaterComponent_ngUnsubscribe, "f"))).subscribe(() => {
120
116
  setTimeout(() => {
121
- if (this.items?.last) {
117
+ if (this.items?.length) {
122
118
  __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_updateForExpandMode).call(this, this.items.last);
123
- this.items.last.reorderable = this.reorderable;
119
+ __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_updateReorderability).call(this);
120
+ __classPrivateFieldGet(this, _SkyRepeaterComponent_repeaterService, "f").items = this.items.toArray();
124
121
  }
125
122
  if (this.activeIndex !== undefined) {
126
123
  __classPrivateFieldGet(this, _SkyRepeaterComponent_repeaterService, "f").activateItemByIndex(this.activeIndex);
127
124
  }
128
125
  __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_updateRole).call(this);
126
+ __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_validateTags).call(this);
129
127
  });
130
128
  });
131
129
  setTimeout(() => {
@@ -146,7 +144,7 @@ export class SkyRepeaterComponent {
146
144
  }
147
145
  if (changes.reorderable) {
148
146
  if (this.items) {
149
- this.items.forEach((item) => (item.reorderable = this.reorderable));
147
+ __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_updateReorderability).call(this);
150
148
  }
151
149
  __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_updateRole).call(this);
152
150
  __classPrivateFieldGet(this, _SkyRepeaterComponent_changeDetector, "f").markForCheck();
@@ -164,7 +162,7 @@ export class SkyRepeaterComponent {
164
162
  __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_updateRole).call(this);
165
163
  }
166
164
  }
167
- _SkyRepeaterComponent_adapterService = new WeakMap(), _SkyRepeaterComponent_changeDetector = new WeakMap(), _SkyRepeaterComponent_dragulaService = new WeakMap(), _SkyRepeaterComponent_elementRef = new WeakMap(), _SkyRepeaterComponent_renderer = new WeakMap(), _SkyRepeaterComponent_repeaterService = new WeakMap(), _SkyRepeaterComponent_ngUnsubscribe = new WeakMap(), _SkyRepeaterComponent_instances = new WeakSet(), _SkyRepeaterComponent_updateForExpandMode = function _SkyRepeaterComponent_updateForExpandMode(itemAdded) {
165
+ _SkyRepeaterComponent_autoScroller = new WeakMap(), _SkyRepeaterComponent_ngUnsubscribe = new WeakMap(), _SkyRepeaterComponent_adapterService = new WeakMap(), _SkyRepeaterComponent_changeDetector = new WeakMap(), _SkyRepeaterComponent_dragulaService = new WeakMap(), _SkyRepeaterComponent_elementRef = new WeakMap(), _SkyRepeaterComponent_renderer = new WeakMap(), _SkyRepeaterComponent_repeaterService = new WeakMap(), _SkyRepeaterComponent_autoScrollSvc = new WeakMap(), _SkyRepeaterComponent_scrollableHostSvc = new WeakMap(), _SkyRepeaterComponent_instances = new WeakSet(), _SkyRepeaterComponent_updateForExpandMode = function _SkyRepeaterComponent_updateForExpandMode(itemAdded) {
168
166
  if (this.items) {
169
167
  let foundExpanded = false;
170
168
  const isCollapsible = this.expandMode !== 'none';
@@ -192,9 +190,9 @@ _SkyRepeaterComponent_adapterService = new WeakMap(), _SkyRepeaterComponent_chan
192
190
  /* istanbul ignore else */
193
191
  if (!__classPrivateFieldGet(this, _SkyRepeaterComponent_dragulaService, "f").find(this.dragulaGroupName)) {
194
192
  __classPrivateFieldGet(this, _SkyRepeaterComponent_dragulaService, "f").createGroup(this.dragulaGroupName, {
195
- moves: (el, container, handle) => {
193
+ moves: (el, _container, handle) => {
196
194
  const target = el?.querySelector('.sky-repeater-item-grab-handle');
197
- return !!this.reorderable && !!target && target.contains(handle);
195
+ return !!(this.reorderable && target?.contains(handle));
198
196
  },
199
197
  });
200
198
  }
@@ -205,6 +203,13 @@ _SkyRepeaterComponent_adapterService = new WeakMap(), _SkyRepeaterComponent_chan
205
203
  .subscribe((args) => {
206
204
  /* istanbul ignore else */
207
205
  if (args.name === this.dragulaGroupName) {
206
+ __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_destroyAutoScroll).call(this);
207
+ __classPrivateFieldSet(this, _SkyRepeaterComponent_autoScroller, __classPrivateFieldGet(this, _SkyRepeaterComponent_autoScrollSvc, "f").autoScroll([__classPrivateFieldGet(this, _SkyRepeaterComponent_scrollableHostSvc, "f").getScrollableHost(__classPrivateFieldGet(this, _SkyRepeaterComponent_elementRef, "f"))], {
208
+ margin: 20,
209
+ maxSpeed: 10,
210
+ scrollWhenOutside: true,
211
+ autoScroll: () => true,
212
+ }), "f");
208
213
  __classPrivateFieldGet(this, _SkyRepeaterComponent_renderer, "f").addClass(args.el, 'sky-repeater-item-dragging');
209
214
  draggedItemIndex = __classPrivateFieldGet(this, _SkyRepeaterComponent_adapterService, "f").getRepeaterItemIndex(args.el);
210
215
  }
@@ -215,6 +220,7 @@ _SkyRepeaterComponent_adapterService = new WeakMap(), _SkyRepeaterComponent_chan
215
220
  .subscribe((args) => {
216
221
  /* istanbul ignore else */
217
222
  if (args.name === this.dragulaGroupName) {
223
+ __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_destroyAutoScroll).call(this);
218
224
  __classPrivateFieldGet(this, _SkyRepeaterComponent_renderer, "f").removeClass(args.el, 'sky-repeater-item-dragging');
219
225
  const newItemIndex = __classPrivateFieldGet(this, _SkyRepeaterComponent_adapterService, "f").getRepeaterItemIndex(args.el);
220
226
  /* sanity check */
@@ -232,6 +238,12 @@ _SkyRepeaterComponent_adapterService = new WeakMap(), _SkyRepeaterComponent_chan
232
238
  if (__classPrivateFieldGet(this, _SkyRepeaterComponent_dragulaService, "f").find(this.dragulaGroupName)) {
233
239
  __classPrivateFieldGet(this, _SkyRepeaterComponent_dragulaService, "f").destroy(this.dragulaGroupName);
234
240
  }
241
+ __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_destroyAutoScroll).call(this);
242
+ }, _SkyRepeaterComponent_destroyAutoScroll = function _SkyRepeaterComponent_destroyAutoScroll() {
243
+ if (__classPrivateFieldGet(this, _SkyRepeaterComponent_autoScroller, "f")) {
244
+ __classPrivateFieldGet(this, _SkyRepeaterComponent_autoScroller, "f").destroy();
245
+ __classPrivateFieldSet(this, _SkyRepeaterComponent_autoScroller, undefined, "f");
246
+ }
235
247
  }, _SkyRepeaterComponent_emitTags = function _SkyRepeaterComponent_emitTags() {
236
248
  const tags = __classPrivateFieldGet(this, _SkyRepeaterComponent_repeaterService, "f").items.map((item) => item.tag);
237
249
  this.orderChange.emit(tags);
@@ -291,13 +303,31 @@ _SkyRepeaterComponent_adapterService = new WeakMap(), _SkyRepeaterComponent_chan
291
303
  this.role = `${autoRole}`;
292
304
  __classPrivateFieldGet(this, _SkyRepeaterComponent_changeDetector, "f").markForCheck();
293
305
  }
306
+ }, _SkyRepeaterComponent_updateReorderability = function _SkyRepeaterComponent_updateReorderability() {
307
+ if (this.items) {
308
+ for (const item of this.items) {
309
+ item.reorderable = this.reorderable;
310
+ }
311
+ }
312
+ }, _SkyRepeaterComponent_validateTags = function _SkyRepeaterComponent_validateTags() {
313
+ if (this.reorderable && !__classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_everyItemHasTag).call(this)) {
314
+ console.warn('Please supply tag properties for each repeater item when reordering functionality is enabled.');
315
+ }
294
316
  };
295
- SkyRepeaterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyRepeaterComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkyRepeaterService }, { token: i2.SkyRepeaterAdapterService }, { token: i3.DragulaService }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
296
- SkyRepeaterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.11", type: SkyRepeaterComponent, selector: "sky-repeater", inputs: { activeIndex: "activeIndex", ariaLabel: "ariaLabel", reorderable: "reorderable", expandMode: "expandMode" }, outputs: { activeIndexChange: "activeIndexChange", orderChange: "orderChange" }, providers: [SkyRepeaterService, SkyRepeaterAdapterService], queries: [{ propertyName: "items", predicate: SkyRepeaterItemComponent }], usesOnChanges: true, ngImport: i0, template: "<ng-container #repeaterHost>\n <div\n class=\"sky-repeater\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel || ('skyux_repeater_label' | skyLibResources)\"\n [dragula]=\"dragulaGroupName\"\n (cdkObserveContent)=\"onCdkObserveContent()\"\n >\n <ng-content></ng-content>\n </div>\n</ng-container>\n", styles: [".sky-repeater{padding:0}\n"], dependencies: [{ kind: "directive", type: i3.DragulaDirective, selector: "[dragula]", inputs: ["dragula", "dragulaModel"], outputs: ["dragulaModelChange"] }, { kind: "directive", type: i4.CdkObserveContent, selector: "[cdkObserveContent]", inputs: ["cdkObserveContentDisabled", "debounce"], outputs: ["cdkObserveContent"], exportAs: ["cdkObserveContent"] }, { kind: "pipe", type: i5.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
317
+ SkyRepeaterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyRepeaterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
318
+ SkyRepeaterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.11", type: SkyRepeaterComponent, selector: "sky-repeater", inputs: { activeIndex: "activeIndex", ariaLabel: "ariaLabel", reorderable: "reorderable", expandMode: "expandMode" }, outputs: { activeIndexChange: "activeIndexChange", orderChange: "orderChange" }, providers: [
319
+ SkyRepeaterService,
320
+ SkyRepeaterAdapterService,
321
+ SkyRepeaterAutoScrollService,
322
+ ], queries: [{ propertyName: "items", predicate: SkyRepeaterItemComponent }], usesOnChanges: true, ngImport: i0, template: "<ng-container #repeaterHost>\n <div\n class=\"sky-repeater\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel || ('skyux_repeater_label' | skyLibResources)\"\n [dragula]=\"dragulaGroupName\"\n (cdkObserveContent)=\"onCdkObserveContent()\"\n >\n <ng-content></ng-content>\n </div>\n</ng-container>\n", styles: [".sky-repeater{padding:0}\n"], dependencies: [{ kind: "directive", type: i1.DragulaDirective, selector: "[dragula]", inputs: ["dragula", "dragulaModel"], outputs: ["dragulaModelChange"] }, { kind: "directive", type: i2.CdkObserveContent, selector: "[cdkObserveContent]", inputs: ["cdkObserveContentDisabled", "debounce"], outputs: ["cdkObserveContent"], exportAs: ["cdkObserveContent"] }, { kind: "pipe", type: i3.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
297
323
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyRepeaterComponent, decorators: [{
298
324
  type: Component,
299
- args: [{ selector: 'sky-repeater', providers: [SkyRepeaterService, SkyRepeaterAdapterService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container #repeaterHost>\n <div\n class=\"sky-repeater\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel || ('skyux_repeater_label' | skyLibResources)\"\n [dragula]=\"dragulaGroupName\"\n (cdkObserveContent)=\"onCdkObserveContent()\"\n >\n <ng-content></ng-content>\n </div>\n</ng-container>\n", styles: [".sky-repeater{padding:0}\n"] }]
300
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.SkyRepeaterService }, { type: i2.SkyRepeaterAdapterService }, { type: i3.DragulaService }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { activeIndex: [{
325
+ args: [{ selector: 'sky-repeater', providers: [
326
+ SkyRepeaterService,
327
+ SkyRepeaterAdapterService,
328
+ SkyRepeaterAutoScrollService,
329
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container #repeaterHost>\n <div\n class=\"sky-repeater\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel || ('skyux_repeater_label' | skyLibResources)\"\n [dragula]=\"dragulaGroupName\"\n (cdkObserveContent)=\"onCdkObserveContent()\"\n >\n <ng-content></ng-content>\n </div>\n</ng-container>\n", styles: [".sky-repeater{padding:0}\n"] }]
330
+ }], ctorParameters: function () { return []; }, propDecorators: { activeIndex: [{
301
331
  type: Input
302
332
  }], ariaLabel: [{
303
333
  type: Input
@@ -313,4 +343,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImpo
313
343
  type: ContentChildren,
314
344
  args: [SkyRepeaterItemComponent]
315
345
  }] } });
316
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xpc3RzL3NyYy9saWIvbW9kdWxlcy9yZXBlYXRlci9yZXBlYXRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbGlzdHMvc3JjL2xpYi9tb2R1bGVzL3JlcGVhdGVyL3JlcGVhdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxHQUlQLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR3ZFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXJFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7O0FBRXhEOztHQUVHO0FBUUgsTUFBTSxPQUFPLG9CQUFvQjtJQXdGL0IsWUFDRSxjQUFpQyxFQUNqQyxlQUFtQyxFQUNuQyxjQUF5QyxFQUN6QyxjQUE4QixFQUM5QixVQUFzQixFQUN0QixRQUFtQjs7UUF4RXJCOzs7O1dBSUc7UUFFSSxnQkFBVyxHQUF3QixLQUFLLENBQUM7UUFnQ2hEOztXQUVHO1FBRUksc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUV0RDs7O1dBR0c7UUFFSSxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7UUFTL0MsdURBQTJDO1FBQzNDLHVEQUFtQztRQUNuQyx1REFBZ0M7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IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IERyYWd1bGFTZXJ2aWNlIH0gZnJvbSAnbmcyLWRyYWd1bGEnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lSZXBlYXRlckFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9yZXBlYXRlci1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5UmVwZWF0ZXJFeHBhbmRNb2RlVHlwZSB9IGZyb20gJy4vcmVwZWF0ZXItZXhwYW5kLW1vZGUtdHlwZSc7XG5pbXBvcnQgeyBTa3lSZXBlYXRlckl0ZW1Sb2xlc1R5cGUgfSBmcm9tICcuL3JlcGVhdGVyLWl0ZW0tcm9sZXMudHlwZSc7XG5pbXBvcnQgeyBTa3lSZXBlYXRlckl0ZW1Db21wb25lbnQgfSBmcm9tICcuL3JlcGVhdGVyLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IFNreVJlcGVhdGVyUm9sZVR5cGUgfSBmcm9tICcuL3JlcGVhdGVyLXJvbGUudHlwZSc7XG5pbXBvcnQgeyBTa3lSZXBlYXRlclNlcnZpY2UgfSBmcm9tICcuL3JlcGVhdGVyLnNlcnZpY2UnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjb250YWluZXIgdG8gZGlzcGxheSByZXBlYXRlciBpdGVtcy5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LXJlcGVhdGVyJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVwZWF0ZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlcGVhdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbU2t5UmVwZWF0ZXJTZXJ2aWNlLCBTa3lSZXBlYXRlckFkYXB0ZXJTZXJ2aWNlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNreVJlcGVhdGVyQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdFxue1xuICAvKipcbiAgICogVGhlIGluZGV4IG9mIHRoZSByZXBlYXRlciBpdGVtIHRvIHZpc3VhbGx5IGhpZ2hsaWdodCBhcyBhY3RpdmUuXG4gICAqIEZvciBleGFtcGxlLCB1c2UgdGhpcyBwcm9wZXJ0eSBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZVxuICAgKiBbc3BsaXQgdmlldyBjb21wb25lbnRdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9zcGxpdC12aWV3KVxuICAgKiB0byBoaWdobGlnaHQgYSByZXBlYXRlciBpdGVtIHdoaWxlIHVzZXJzIGVkaXQgaXQuIE9ubHkgb25lIGl0ZW0gY2FuIGJlIGFjdGl2ZSBhdCBhIHRpbWUuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYWN0aXZlSW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIEFSSUEgbGFiZWwgZm9yIHRoZSByZXBlYXRlciBsaXN0LlxuICAgKiBUaGlzIHNldHMgdGhlIHJlcGVhdGVyIGxpc3QncyBgYXJpYS1sYWJlbGAgYXR0cmlidXRlIHRvIHByb3ZpZGUgYSB0ZXh0IGVxdWl2YWxlbnQgZm9yIHNjcmVlbiByZWFkZXJzXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgYXJpYS1sYWJlbGAgYXR0cmlidXRlLCBzZWUgdGhlIFtXQUktQVJJQSBkZWZpbml0aW9uXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvI2FyaWEtbGFiZWwpLlxuICAgKiBAZGVmYXVsdCBcIkxpc3Qgb2YgaXRlbXNcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHVzZXJzIGNhbiBjaGFuZ2UgdGhlIG9yZGVyIG9mIGl0ZW1zIGluIHRoZSByZXBlYXRlciBsaXN0LlxuICAgKiBFYWNoIHJlcGVhdGVyIGl0ZW0gYWxzbyBoYXMgYHJlb3JkZXJhYmxlYCBwcm9wZXJ0eSB0byBpbmRpY2F0ZSB3aGV0aGVyXG4gICAqIHVzZXJzIGNhbiBjaGFuZ2UgaXRzIG9yZGVyLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHJlb3JkZXJhYmxlOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBsYXlvdXQgdGhhdCBkZXRlcm1pbmVzIHdoaWNoIHJlcGVhdGVyIGl0ZW1zIGFyZSBleHBhbmRlZCBieSBkZWZhdWx0IGFuZCB3aGV0aGVyXG4gICAqIHJlcGVhdGVyIGl0ZW1zIGFyZSBleHBhbmRhYmxlIGFuZCBjb2xsYXBzaWJsZS4gQ29sbGFwc2VkIGl0ZW1zIGRpc3BsYXkgdGl0bGVzIG9ubHkuXG4gICAqIFRoZSB2YWxpZCBvcHRpb25zIGFyZSBgbXVsdGlwbGVgLCBgbm9uZWAsIGFuZCBgc2luZ2xlYC5cbiAgICogLSBgbXVsdGlwbGVgIGxvYWRzIHJlcGVhdGVyIGl0ZW1zIGluIGFuIGV4cGFuZGVkIHN0YXRlIHVubGVzcyBgaXNFeHBhbmRlZGAgaXMgc2V0IHRvXG4gICAqIGBmYWxzZWAgZm9yIGEgcmVwZWF0ZXIgaXRlbS4gVGhpcyBsYXlvdXQgYWxsb3dzIHVzZXJzIHRvIGV4cGFuZCBhbmQgY29sbGFwc2VcbiAgICogYXMgbWFueSByZXBlYXRlciBpdGVtcyBhcyBuZWNlc3NhcnkuIEl0IGlzIGJlc3Qtc3VpdGVkIHRvIHJlcGVhdGVyIGl0ZW1zIHdoZXJlIGJvZHlcbiAgICogY29udGVudCBpcyBpbXBvcnRhbnQgYnV0IHVzZXJzIGRvbid0IGFsd2F5cyBuZWVkIHRvIHNlZSBpdC5cbiAgICogLSBgbm9uZWAgbG9hZHMgYWxsIHJlcGVhdGVyIGl0ZW1zIGluIGFuIGV4cGFuZGVkIHN0YXRlIGFuZCBkb2VzIG5vdCBhbGxvdyB1c2VycyB0b1xuICAgKiBjb2xsYXBzZSB0aGVtLiBUaGlzIGRlZmF1bHQgbGF5b3V0IHByb3ZpZGVzIHRoZSBxdWlja2VzdCBhY2Nlc3MgdG8gdGhlIGRldGFpbHMgaW4gdGhlXG4gICAqIHJlcGVhdGVyIGl0ZW1zLiBJdCBpcyBiZXN0LXN1aXRlZCB0byByZXBlYXRlciBpdGVtcyB3aXRoIGNvbmNpc2UgY29udGVudFxuICAgKiB0aGF0IHVzZXJzIG5lZWQgdG8gdmlldyBmcmVxdWVudGx5LlxuICAgKiAtIGBzaW5nbGVgIGxvYWRzIG9uZSByZXBlYXRlciBpdGVtIGluIGFuIGV4cGFuZGVkIHN0YXRlIGFuZCBjb2xsYXBzZXMgYWxsIG90aGVycy5cbiAgICogVGhlIGV4cGFuZGVkIHJlcGVhdGVyIGl0ZW0gaXMgdGhlIGZpcnN0IG9uZSB3aGVyZSBgaXNFeHBhbmRlZGAgaXMgc2V0IHRvIGB0cnVlYC4gVGhpcyBsYXlvdXRcbiAgICogYWxsb3dzIHVzZXJzIHRvIGV4cGFuZCBvbmUgaXRlbSBhdCBhIHRpbWUuIEl0IHByb3ZpZGVzIHRoZSBtb3N0IGNvbXBhY3QgdmlldyBhbmQgaXNcbiAgICogYmVzdC1zdWl0ZWQgdG8gcmVwZWF0ZXIgaXRlbXMgd2hlcmUgdGhlIG1vc3QgaW1wb3J0YW50IGluZm9ybWF0aW9uIGlzIGluIHRoZSB0aXRsZXNcbiAgICogYW5kIHVzZXJzIG9ubHkgb2NjYXNpb25hbGx5IG5lZWQgdG8gdmlldyB0aGUgYm9keSBjb250ZW50LlxuICAgKiBAZGVmYXVsdCBcIm5vbmVcIlxuICAgKi9cbiAgLy8gVE9ETzogUmVtb3ZlICdzdHJpbmcnIGFzIGEgdmFsaWQgdHlwZSBpbiBhIGJyZWFraW5nIGNoYW5nZS5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBleHBhbmRNb2RlKHZhbHVlOiBTa3lSZXBlYXRlckV4cGFuZE1vZGVUeXBlIHwgc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jcmVwZWF0ZXJTZXJ2aWNlLmV4cGFuZE1vZGUgPSB2YWx1ZTtcbiAgICB0aGlzLiN1cGRhdGVGb3JFeHBhbmRNb2RlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGV4cGFuZE1vZGUoKTogU2t5UmVwZWF0ZXJFeHBhbmRNb2RlVHlwZSB8IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI3JlcGVhdGVyU2VydmljZS5leHBhbmRNb2RlO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIGFjdGl2ZSByZXBlYXRlciBpdGVtIGNoYW5nZXMuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGFjdGl2ZUluZGV4Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgY2hhbmdlIHRoZSBvcmRlciBvZiByZXBlYXRlciBpdGVtcy5cbiAgICogVGhpcyBldmVudCBlbWl0cyBhbiBvcmRlcmVkIGFycmF5IG9mIHRoZSBgdGFnYCBwcm9wZXJ0aWVzIHRoYXQgdGhlIGNvbnN1bWVyIHByb3ZpZGVzIGZvciBlYWNoIHJlcGVhdGVyIGl0ZW0uXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIG9yZGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcblxuICBAQ29udGVudENoaWxkcmVuKFNreVJlcGVhdGVySXRlbUNvbXBvbmVudClcbiAgcHVibGljIGl0ZW1zOiBRdWVyeUxpc3Q8U2t5UmVwZWF0ZXJJdGVtQ29tcG9uZW50PiB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgZHJhZ3VsYUdyb3VwTmFtZTogc3RyaW5nO1xuXG4gIHB1YmxpYyByb2xlOiBTa3lSZXBlYXRlclJvbGVUeXBlIHwgdW5kZWZpbmVkO1xuXG4gICNhZGFwdGVyU2VydmljZTogU2t5UmVwZWF0ZXJBZGFwdGVyU2VydmljZTtcbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgI2RyYWd1bGFTZXJ2aWNlOiBEcmFndWxhU2VydmljZTtcbiAgI2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XG4gICNyZW5kZXJlcjogUmVuZGVyZXIyO1xuICAjcmVwZWF0ZXJTZXJ2aWNlOiBTa3lSZXBlYXRlclNlcnZpY2U7XG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcmVwZWF0ZXJTZXJ2aWNlOiBTa3lSZXBlYXRlclNlcnZpY2UsXG4gICAgYWRhcHRlclNlcnZpY2U6IFNreVJlcGVhdGVyQWRhcHRlclNlcnZpY2UsXG4gICAgZHJhZ3VsYVNlcnZpY2U6IERyYWd1bGFTZXJ2aWNlLFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvciA9IGNoYW5nZURldGVjdG9yO1xuICAgIHRoaXMuI3JlcGVhdGVyU2VydmljZSA9IHJlcGVhdGVyU2VydmljZTtcbiAgICB0aGlzLiNhZGFwdGVyU2VydmljZSA9IGFkYXB0ZXJTZXJ2aWNlO1xuICAgIHRoaXMuI2RyYWd1bGFTZXJ2aWNlID0gZHJhZ3VsYVNlcnZpY2U7XG4gICAgdGhpcy4jZWxlbWVudFJlZiA9IGVsZW1lbnRSZWY7XG4gICAgdGhpcy4jcmVuZGVyZXIgPSByZW5kZXJlcjtcblxuICAgIHRoaXMuZHJhZ3VsYUdyb3VwTmFtZSA9IGBza3ktcmVwZWF0ZXItZHJhZ3VsYS0ke1xuICAgICAgdGhpcy4jcmVwZWF0ZXJTZXJ2aWNlLnJlcGVhdGVyR3JvdXBJZFxuICAgIH1gO1xuXG4gICAgdGhpcy4jcmVwZWF0ZXJTZXJ2aWNlLml0ZW1Db2xsYXBzZVN0YXRlQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChpdGVtOiBTa3lSZXBlYXRlckl0ZW1Db21wb25lbnQpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZXhwYW5kTW9kZSA9PT0gJ3NpbmdsZScgJiYgaXRlbS5pc0V4cGFuZGVkKSB7XG4gICAgICAgICAgdGhpcy5pdGVtcz8uZm9yRWFjaCgob3RoZXJJdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIG90aGVySXRlbSAhPT0gaXRlbSAmJlxuICAgICAgICAgICAgICBvdGhlckl0ZW0uaXNFeHBhbmRlZCAmJlxuICAgICAgICAgICAgICBvdGhlckl0ZW0uaXNDb2xsYXBzaWJsZVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIG90aGVySXRlbS5pc0V4cGFuZGVkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jcmVwZWF0ZXJTZXJ2aWNlLmFjdGl2ZUl0ZW1JbmRleENoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKGluZGV4ICE9PSB0aGlzLmFjdGl2ZUluZGV4KSB7XG4gICAgICAgICAgdGhpcy5hY3RpdmVJbmRleCA9IGluZGV4O1xuICAgICAgICAgIHRoaXMuYWN0aXZlSW5kZXhDaGFuZ2UuZW1pdChpbmRleCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jcmVwZWF0ZXJTZXJ2aWNlLm9yZGVyQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy4jZW1pdFRhZ3MoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jdXBkYXRlRm9yRXhwYW5kTW9kZSgpO1xuXG4gICAgdGhpcy4jYWRhcHRlclNlcnZpY2Uuc2V0UmVwZWF0ZXJIb3N0KHRoaXMuI2VsZW1lbnRSZWYpO1xuXG4gICAgdGhpcy4jaW5pdGlhbGl6ZURyYWdBbmREcm9wKCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIC8vIElmIGFjdGl2ZUluZGV4IGhhcyBiZWVuIHNldCBvbiBpbml0LCBjYWxsIHNlcnZpY2UgdG8gYWN0aXZhdGUgdGhlIGFwcHJvcHJpYXRlIGl0ZW0uXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5hY3RpdmVJbmRleCB8fCB0aGlzLmFjdGl2ZUluZGV4ID09PSAwKSB7XG4gICAgICAgIHRoaXMuI3JlcGVhdGVyU2VydmljZS5hY3RpdmF0ZUl0ZW1CeUluZGV4KHRoaXMuYWN0aXZlSW5kZXgpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5yZW9yZGVyYWJsZSAmJiAhdGhpcy4jZXZlcnlJdGVtSGFzVGFnKCkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdQbGVhc2Ugc3VwcGx5IHRhZyBwcm9wZXJ0aWVzIGZvciBlYWNoIHJlcGVhdGVyIGl0ZW0gd2hlbiByZW9yZGVyaW5nIGZ1bmN0aW9uYWxpdHkgaXMgZW5hYmxlZC4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBIQUNLOiBOb3QgdXBkYXRpbmcgZm9yIGV4cGFuZCBtb2RlIGluIGEgdGltZW91dCBjYXVzZXMgYW4gZXJyb3IuXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvNjAwNVxuICAgIHRoaXMuaXRlbXM/LmNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXRlbXM/Lmxhc3QpIHtcbiAgICAgICAgICB0aGlzLiN1cGRhdGVGb3JFeHBhbmRNb2RlKHRoaXMuaXRlbXMubGFzdCk7XG4gICAgICAgICAgdGhpcy5pdGVtcy5sYXN0LnJlb3JkZXJhYmxlID0gdGhpcy5yZW9yZGVyYWJsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZUluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLiNyZXBlYXRlclNlcnZpY2UuYWN0aXZhdGVJdGVtQnlJbmRleCh0aGlzLmFjdGl2ZUluZGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuI3VwZGF0ZVJvbGUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLiN1cGRhdGVGb3JFeHBhbmRNb2RlKCk7XG5cbiAgICAgIHRoaXMuaXRlbXM/LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgaXRlbS5yZW9yZGVyYWJsZSA9IHRoaXMucmVvcmRlcmFibGU7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy4jdXBkYXRlUm9sZSgpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snYWN0aXZlSW5kZXgnXSkge1xuICAgICAgdGhpcy4jcmVwZWF0ZXJTZXJ2aWNlLmVuYWJsZUFjdGl2ZVN0YXRlID0gdHJ1ZTtcbiAgICAgIGlmIChcbiAgICAgICAgY2hhbmdlc1snYWN0aXZlSW5kZXgnXS5jdXJyZW50VmFsdWUgIT09XG4gICAgICAgIGNoYW5nZXNbJ2FjdGl2ZUluZGV4J10ucHJldmlvdXNWYWx1ZVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuI3JlcGVhdGVyU2VydmljZS5hY3RpdmF0ZUl0ZW1CeUluZGV4KHRoaXMuYWN0aXZlSW5kZXgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLnJlb3JkZXJhYmxlKSB7XG4gICAgICBpZiAodGhpcy5pdGVtcykge1xuICAgICAgICB0aGlzLml0ZW1zLmZvckVhY2goKGl0ZW0pID0+IChpdGVtLnJlb3JkZXJhYmxlID0gdGhpcy5yZW9yZGVyYWJsZSkpO1xuICAgICAgfVxuICAgICAgdGhpcy4jdXBkYXRlUm9sZSgpO1xuXG4gICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI2Rlc3Ryb3lEcmFnQW5kRHJvcCgpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI3VwZGF0ZVJvbGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNka09ic2VydmVDb250ZW50KCk6IHZvaWQge1xuICAgIHRoaXMuI3VwZGF0ZVJvbGUoKTtcbiAgfVxuXG4gICN1cGRhdGVGb3JFeHBhbmRNb2RlKGl0ZW1BZGRlZD86IFNreVJlcGVhdGVySXRlbUNvbXBvbmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLml0ZW1zKSB7XG4gICAgICBsZXQgZm91bmRFeHBhbmRlZCA9IGZhbHNlO1xuICAgICAgY29uc3QgaXNDb2xsYXBzaWJsZSA9IHRoaXMuZXhwYW5kTW9kZSAhPT0gJ25vbmUnO1xuICAgICAgY29uc3QgaXNTaW5nbGUgPSB0aGlzLmV4cGFuZE1vZGUgPT09ICdzaW5nbGUnO1xuXG4gICAgICAvLyBLZWVwIGFueSBuZXdseS1hZGRlZCBleHBhbmRlZCBpdGVtIGV4cGFuZGVkIGFuZCBjb2xsYXBzZSB0aGUgcmVzdC5cbiAgICAgIGlmIChpdGVtQWRkZWQgJiYgaXRlbUFkZGVkLmlzRXhwYW5kZWQpIHtcbiAgICAgICAgZm91bmRFeHBhbmRlZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLml0ZW1zKSB7XG4gICAgICAgIGl0ZW0uaXNDb2xsYXBzaWJsZSA9IGlzQ29sbGFwc2libGUgJiYgISFpdGVtLmhhc0l0ZW1Db250ZW50O1xuXG4gICAgICAgIC8vIENvbGxhcHNlIGFueSBpdGVtcyB0aGF0IGFyZW4ndCB0aGUgaXRlbSB0aGF0IHdhcyBqdXN0IGFkZGVkLlxuICAgICAgICBpZiAoaXRlbSAhPT0gaXRlbUFkZGVkICYmIGlzU2luZ2xlICYmIGl0ZW0uaXNFeHBhbmRlZCkge1xuICAgICAgICAgIGlmIChmb3VuZEV4cGFuZGVkKSB7XG4gICAgICAgICAgICAvLyBJZiB0aGlzIGl0ZW0gaXMgYmVpbmcgY29sbGFwc2VkIGJlY2F1c2UgYSBuZXcgaXRlbSB3YXNcbiAgICAgICAgICAgIC8vIGFkZGVkLCBhbmltYXRlIGl0LlxuICAgICAgICAgICAgaXRlbS51cGRhdGVGb3JFeHBhbmRlZChmYWxzZSwgISFpdGVtQWRkZWQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGZvdW5kRXhwYW5kZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuI3VwZGF0ZVJvbGUoKTtcbiAgICB9XG4gIH1cblxuICAjaW5pdGlhbGl6ZURyYWdBbmREcm9wKCk6IHZvaWQge1xuICAgIC8qIFNhbml0eSBjaGVjayB0aGF0IHdlIGhhdmVuJ3QgYWxyZWFkeSBzZXQgdXAgZHJhZ2dpbmcgYWJpbGl0aWVzICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoIXRoaXMuI2RyYWd1bGFTZXJ2aWNlLmZpbmQodGhpcy5kcmFndWxhR3JvdXBOYW1lKSkge1xuICAgICAgdGhpcy4jZHJhZ3VsYVNlcnZpY2UuY3JlYXRlR3JvdXAodGhpcy5kcmFndWxhR3JvdXBOYW1lLCB7XG4gICAgICAgIG1vdmVzOiAoZWwsIGNvbnRhaW5lciwgaGFuZGxlKSA9PiB7XG4gICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZWw/LnF1ZXJ5U2VsZWN0b3IoJy5za3ktcmVwZWF0ZXItaXRlbS1ncmFiLWhhbmRsZScpO1xuICAgICAgICAgIHJldHVybiAhIXRoaXMucmVvcmRlcmFibGUgJiYgISF0YXJnZXQgJiYgdGFyZ2V0LmNvbnRhaW5zKGhhbmRsZSEpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgbGV0IGRyYWdnZWRJdGVtSW5kZXggPSAtMTtcblxuICAgIHRoaXMuI2RyYWd1bGFTZXJ2aWNlXG4gICAgICAuZHJhZyh0aGlzLmRyYWd1bGFHcm91cE5hbWUpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChhcmdzKSA9PiB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChhcmdzLm5hbWUgPT09IHRoaXMuZHJhZ3VsYUdyb3VwTmFtZSkge1xuICAgICAgICAgIHRoaXMuI3JlbmRlcmVyLmFkZENsYXNzKGFyZ3MuZWwsICdza3ktcmVwZWF0ZXItaXRlbS1kcmFnZ2luZycpO1xuICAgICAgICAgIGRyYWdnZWRJdGVtSW5kZXggPSB0aGlzLiNhZGFwdGVyU2VydmljZS5nZXRSZXBlYXRlckl0ZW1JbmRleChcbiAgICAgICAgICAgIGFyZ3MuZWwgYXMgSFRNTEVsZW1lbnRcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHRoaXMuI2RyYWd1bGFTZXJ2aWNlXG4gICAgICAuZHJhZ2VuZCh0aGlzLmRyYWd1bGFHcm91cE5hbWUpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChhcmdzKSA9PiB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChhcmdzLm5hbWUgPT09IHRoaXMuZHJhZ3VsYUdyb3VwTmFtZSkge1xuICAgICAgICAgIHRoaXMuI3JlbmRlcmVyLnJlbW92ZUNsYXNzKGFyZ3MuZWwsICdza3ktcmVwZWF0ZXItaXRlbS1kcmFnZ2luZycpO1xuICAgICAgICAgIGNvbnN0IG5ld0l0ZW1JbmRleCA9IHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmdldFJlcGVhdGVySXRlbUluZGV4KFxuICAgICAgICAgICAgYXJncy5lbCBhcyBIVE1MRWxlbWVudFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgIGlmIChkcmFnZ2VkSXRlbUluZGV4ID49IDApIHtcbiAgICAgICAgICAgIHRoaXMuI3JlcGVhdGVyU2VydmljZS5yZW9yZGVySXRlbShkcmFnZ2VkSXRlbUluZGV4LCBuZXdJdGVtSW5kZXgpO1xuICAgICAgICAgICAgZHJhZ2dlZEl0ZW1JbmRleCA9IC0xO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuI2VtaXRUYWdzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgI2Rlc3Ryb3lEcmFnQW5kRHJvcCgpOiB2b2lkIHtcbiAgICAvKiBTYW5pdHkgY2hlY2sgdGhhdCB3ZSBoYXZlIHNldCB1cCBkcmFnZ2luZyBhYmlsaXRpZXMgKi9cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLiNkcmFndWxhU2VydmljZS5maW5kKHRoaXMuZHJhZ3VsYUdyb3VwTmFtZSkpIHtcbiAgICAgIHRoaXMuI2RyYWd1bGFTZXJ2aWNlLmRlc3Ryb3kodGhpcy5kcmFndWxhR3JvdXBOYW1lKTtcbiAgICB9XG4gIH1cblxuICAjZW1pdFRhZ3MoKTogdm9pZCB7XG4gICAgY29uc3QgdGFncyA9IHRoaXMuI3JlcGVhdGVyU2VydmljZS5pdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0udGFnKTtcbiAgICB0aGlzLm9yZGVyQ2hhbmdlLmVtaXQodGFncyk7XG4gIH1cblxuICAjZXZlcnlJdGVtSGFzVGFnKCk6IGJvb2xlYW4ge1xuICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICghdGhpcy5pdGVtcyB8fCB0aGlzLml0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pdGVtcy50b0FycmF5KCkuZXZlcnkoKGl0ZW0pID0+IHtcbiAgICAgIHJldHVybiBpdGVtLnRhZyAhPT0gdW5kZWZpbmVkO1xuICAgIH0pO1xuICB9XG5cbiAgI3VwZGF0ZVJvbGUoKTogdm9pZCB7XG4gICAgLy8gRGV0ZXJtaW5lIGEgcm9sZSB1c2luZyBhIGhpZXJhcmNoeSBiYXNlZCBvbiBodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtcHJhY3RpY2VzLTEuMS9cbiAgICAvLyAgIDEuIElmIHRoZXJlIGFyZSBvbmUgb3IgbW9yZSBpbnRlcmFjdGlvbnMgaW4gdGhlIHJlcGVhdGVyIGl0ZW0gcHJvamVjdGVkIGNvbnRlbnQsIHVzZSBncmlkLlxuICAgIC8vICAgMi4gSWYgdGhlcmUgYXJlIHNlbGVjdGFibGUgcmVwZWF0ZXIgaXRlbXMgYW5kIG5vIG90aGVyIGludGVyYWN0aW9ucywgdXNlIGxpc3Rib3guXG4gICAgLy8gICAzLiBJZiB0aGVyZSBhcmUgbm8gaW50ZXJhY3Rpb25zLCB1c2UgbGlzdC5cblxuICAgIC8vIERlZmF1bHQgdG8gbGlzdCByb2xlLlxuICAgIGxldCBhdXRvUm9sZTogU2t5UmVwZWF0ZXJSb2xlVHlwZSA9ICdsaXN0JztcblxuICAgIGNvbnN0IHJvbGVNYXA6IFJlY29yZDxTa3lSZXBlYXRlclJvbGVUeXBlLCBTa3lSZXBlYXRlckl0ZW1Sb2xlc1R5cGU+ID0ge1xuICAgICAgbGlzdDogeyBpdGVtOiAnbGlzdGl0ZW0nLCB0aXRsZTogdW5kZWZpbmVkLCBjb250ZW50OiB1bmRlZmluZWQgfSxcbiAgICAgIGxpc3Rib3g6IHsgaXRlbTogJ29wdGlvbicsIHRpdGxlOiB1bmRlZmluZWQsIGNvbnRlbnQ6IHVuZGVmaW5lZCB9LFxuICAgICAgZ3JpZDogeyBpdGVtOiAncm93JywgdGl0bGU6ICdyb3doZWFkZXInLCBjb250ZW50OiAnZ3JpZGNlbGwnIH0sXG4gICAgfTtcblxuICAgIC8vIEJhc2VkIG9uIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2RvbS5odG1sI2ludGVyYWN0aXZlLWNvbnRlbnRcbiAgICBjb25zdCBpbnRlcmFjdGlvblNlbGVjdG9yID0gW1xuICAgICAgJ2FbaHJlZl0nLFxuICAgICAgJ2F1ZGlvW2NvbnRyb2xzXScsXG4gICAgICAnYnV0dG9uJyxcbiAgICAgICdkZXRhaWxzJyxcbiAgICAgICdlbWJlZCcsXG4gICAgICAnaWZyYW1lJyxcbiAgICAgICdpbWdbdXNlbWFwXScsXG4gICAgICAnaW5wdXQ6bm90KFt0eXBlPVwiaGlkZGVuXCJdKScsXG4gICAgICAnbGFiZWwnLFxuICAgICAgJ3NlbGVjdCcsXG4gICAgICAndGV4dGFyZWEnLFxuICAgICAgJ3ZpZGVvW2NvbnRyb2xzXScsXG4gICAgICAnW2NvbnRlbnRlZGl0YWJsZV0nLFxuICAgICAgJy5za3ktcmVwZWF0ZXJbcm9sZT1cImdyaWRcIl0nLFxuICAgIF1cbiAgICAgIC5tYXAoXG4gICAgICAgIChzZWxlY3RvcikgPT5cbiAgICAgICAgICBgc2t5LXJlcGVhdGVyLWl0ZW0tdGl0bGUgJHtzZWxlY3Rvcn06bm90KFtoaWRkZW5dKSwgc2t5LXJlcGVhdGVyLWl0ZW0tY29udGVudCAke3NlbGVjdG9yfTpub3QoW2hpZGRlbl0pYFxuICAgICAgKVxuICAgICAgLmNvbmNhdChbYHNreXV4LWRyb3Bkb3duYF0pXG4gICAgICAuam9pbignLCAnKTtcblxuICAgIGNvbnN0IGhhc0ludGVyYWN0aW9uID1cbiAgICAgIHRoaXMucmVvcmRlcmFibGUgfHxcbiAgICAgIHRoaXMuaXRlbXM/LnNvbWUoKGl0ZW0pID0+IGl0ZW0uaXNDb2xsYXBzaWJsZSkgfHxcbiAgICAgIHRoaXMuaXRlbXM/LnNvbWUoKGl0ZW0pID0+ICEhaXRlbS5zZWxlY3RhYmxlKSB8fFxuICAgICAgISEodGhpcy4jZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5xdWVyeVNlbGVjdG9yKFxuICAgICAgICBpbnRlcmFjdGlvblNlbGVjdG9yXG4gICAgICApO1xuXG4gICAgaWYgKGhhc0ludGVyYWN0aW9uKSB7XG4gICAgICAvLyBJZiB0aGUgcmVwZWF0ZXIgbWF0Y2hlcyBpbnRlcmFjdGlvbiBzZWxlY3RvciBodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtcHJhY3RpY2VzLTEuMS8jZ3JpZFxuICAgICAgYXV0b1JvbGUgPSAnZ3JpZCc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucm9sZSAhPT0gYXV0b1JvbGUpIHtcbiAgICAgIHRoaXMuI3JlcGVhdGVyU2VydmljZS5pdGVtUm9sZS5uZXh0KHtcbiAgICAgICAgLi4ucm9sZU1hcFthdXRvUm9sZV0sXG4gICAgICB9KTtcbiAgICAgIHRoaXMucm9sZSA9IGAke2F1dG9Sb2xlfWA7XG4gICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgI3JlcGVhdGVySG9zdD5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2t5LXJlcGVhdGVyXCJcbiAgICBbYXR0ci5yb2xlXT1cInJvbGVcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsIHx8ICgnc2t5dXhfcmVwZWF0ZXJfbGFiZWwnIHwgc2t5TGliUmVzb3VyY2VzKVwiXG4gICAgW2RyYWd1bGFdPVwiZHJhZ3VsYUdyb3VwTmFtZVwiXG4gICAgKGNka09ic2VydmVDb250ZW50KT1cIm9uQ2RrT2JzZXJ2ZUNvbnRlbnQoKVwiXG4gID5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
346
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xpc3RzL3NyYy9saWIvbW9kdWxlcy9yZXBlYXRlci9yZXBlYXRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbGlzdHMvc3JjL2xpYi9tb2R1bGVzL3JlcGVhdGVyL3JlcGVhdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBRU4sU0FBUyxFQUVULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUk5RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7QUFFeEQ7O0dBRUc7QUFZSCxNQUFNLE9BQU8sb0JBQW9CO0lBNkYvQjs7UUF2RUE7Ozs7V0FJRztRQUVJLGdCQUFXLEdBQXdCLEtBQUssQ0FBQztRQWdDaEQ7O1dBRUc7UUFFSSxzQkFBaUIsR0FBRyxJQUFJLFlBQVks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ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreVNjcm9sbGFibGVIb3N0U2VydmljZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHsgRHJhZ3VsYVNlcnZpY2UgfSBmcm9tICduZzItZHJhZ3VsYSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreVJlcGVhdGVyQWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL3JlcGVhdGVyLWFkYXB0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lSZXBlYXRlckF1dG9TY3JvbGxTZXJ2aWNlIH0gZnJvbSAnLi9yZXBlYXRlci1hdXRvLXNjcm9sbC5zZXJ2aWNlJztcbmltcG9ydCB7IFNreVJlcGVhdGVyQXV0b1Njcm9sbGVyIH0gZnJvbSAnLi9yZXBlYXRlci1hdXRvLXNjcm9sbGVyJztcbmltcG9ydCB7IFNreVJlcGVhdGVyRXhwYW5kTW9kZVR5cGUgfSBmcm9tICcuL3JlcGVhdGVyLWV4cGFuZC1tb2RlLXR5cGUnO1xuaW1wb3J0IHsgU2t5UmVwZWF0ZXJJdGVtUm9sZXNUeXBlIH0gZnJvbSAnLi9yZXBlYXRlci1pdGVtLXJvbGVzLnR5cGUnO1xuaW1wb3J0IHsgU2t5UmVwZWF0ZXJJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9yZXBlYXRlci1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lSZXBlYXRlclJvbGVUeXBlIH0gZnJvbSAnLi9yZXBlYXRlci1yb2xlLnR5cGUnO1xuaW1wb3J0IHsgU2t5UmVwZWF0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9yZXBlYXRlci5zZXJ2aWNlJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgY29udGFpbmVyIHRvIGRpc3BsYXkgcmVwZWF0ZXIgaXRlbXMuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1yZXBlYXRlcicsXG4gIHN0eWxlVXJsczogWycuL3JlcGVhdGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXBlYXRlci5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIFNreVJlcGVhdGVyU2VydmljZSxcbiAgICBTa3lSZXBlYXRlckFkYXB0ZXJTZXJ2aWNlLFxuICAgIFNreVJlcGVhdGVyQXV0b1Njcm9sbFNlcnZpY2UsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lSZXBlYXRlckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXRcbntcbiAgLyoqXG4gICAqIFRoZSBpbmRleCBvZiB0aGUgcmVwZWF0ZXIgaXRlbSB0byB2aXN1YWxseSBoaWdobGlnaHQgYXMgYWN0aXZlLlxuICAgKiBGb3IgZXhhbXBsZSwgdXNlIHRoaXMgcHJvcGVydHkgaW4gY29uanVuY3Rpb24gd2l0aCB0aGVcbiAgICogW3NwbGl0IHZpZXcgY29tcG9uZW50XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvc3BsaXQtdmlldylcbiAgICogdG8gaGlnaGxpZ2h0IGEgcmVwZWF0ZXIgaXRlbSB3aGlsZSB1c2VycyBlZGl0IGl0LiBPbmx5IG9uZSBpdGVtIGNhbiBiZSBhY3RpdmUgYXQgYSB0aW1lLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFjdGl2ZUluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBBUklBIGxhYmVsIGZvciB0aGUgcmVwZWF0ZXIgbGlzdC5cbiAgICogVGhpcyBzZXRzIHRoZSByZXBlYXRlciBsaXN0J3MgYGFyaWEtbGFiZWxgIGF0dHJpYnV0ZSB0byBwcm92aWRlIGEgdGV4dCBlcXVpdmFsZW50IGZvciBzY3JlZW4gcmVhZGVyc1xuICAgKiBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYGFyaWEtbGFiZWxgIGF0dHJpYnV0ZSwgc2VlIHRoZSBbV0FJLUFSSUEgZGVmaW5pdGlvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLyNhcmlhLWxhYmVsKS5cbiAgICogQGRlZmF1bHQgXCJMaXN0IG9mIGl0ZW1zXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB1c2VycyBjYW4gY2hhbmdlIHRoZSBvcmRlciBvZiBpdGVtcyBpbiB0aGUgcmVwZWF0ZXIgbGlzdC5cbiAgICogRWFjaCByZXBlYXRlciBpdGVtIGFsc28gaGFzIGByZW9yZGVyYWJsZWAgcHJvcGVydHkgdG8gaW5kaWNhdGUgd2hldGhlclxuICAgKiB1c2VycyBjYW4gY2hhbmdlIGl0cyBvcmRlci5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZW9yZGVyYWJsZTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgbGF5b3V0IHRoYXQgZGV0ZXJtaW5lcyB3aGljaCByZXBlYXRlciBpdGVtcyBhcmUgZXhwYW5kZWQgYnkgZGVmYXVsdCBhbmQgd2hldGhlclxuICAgKiByZXBlYXRlciBpdGVtcyBhcmUgZXhwYW5kYWJsZSBhbmQgY29sbGFwc2libGUuIENvbGxhcHNlZCBpdGVtcyBkaXNwbGF5IHRpdGxlcyBvbmx5LlxuICAgKiBUaGUgdmFsaWQgb3B0aW9ucyBhcmUgYG11bHRpcGxlYCwgYG5vbmVgLCBhbmQgYHNpbmdsZWAuXG4gICAqIC0gYG11bHRpcGxlYCBsb2FkcyByZXBlYXRlciBpdGVtcyBpbiBhbiBleHBhbmRlZCBzdGF0ZSB1bmxlc3MgYGlzRXhwYW5kZWRgIGlzIHNldCB0b1xuICAgKiBgZmFsc2VgIGZvciBhIHJlcGVhdGVyIGl0ZW0uIFRoaXMgbGF5b3V0IGFsbG93cyB1c2VycyB0byBleHBhbmQgYW5kIGNvbGxhcHNlXG4gICAqIGFzIG1hbnkgcmVwZWF0ZXIgaXRlbXMgYXMgbmVjZXNzYXJ5LiBJdCBpcyBiZXN0LXN1aXRlZCB0byByZXBlYXRlciBpdGVtcyB3aGVyZSBib2R5XG4gICAqIGNvbnRlbnQgaXMgaW1wb3J0YW50IGJ1dCB1c2VycyBkb24ndCBhbHdheXMgbmVlZCB0byBzZWUgaXQuXG4gICAqIC0gYG5vbmVgIGxvYWRzIGFsbCByZXBlYXRlciBpdGVtcyBpbiBhbiBleHBhbmRlZCBzdGF0ZSBhbmQgZG9lcyBub3QgYWxsb3cgdXNlcnMgdG9cbiAgICogY29sbGFwc2UgdGhlbS4gVGhpcyBkZWZhdWx0IGxheW91dCBwcm92aWRlcyB0aGUgcXVpY2tlc3QgYWNjZXNzIHRvIHRoZSBkZXRhaWxzIGluIHRoZVxuICAgKiByZXBlYXRlciBpdGVtcy4gSXQgaXMgYmVzdC1zdWl0ZWQgdG8gcmVwZWF0ZXIgaXRlbXMgd2l0aCBjb25jaXNlIGNvbnRlbnRcbiAgICogdGhhdCB1c2VycyBuZWVkIHRvIHZpZXcgZnJlcXVlbnRseS5cbiAgICogLSBgc2luZ2xlYCBsb2FkcyBvbmUgcmVwZWF0ZXIgaXRlbSBpbiBhbiBleHBhbmRlZCBzdGF0ZSBhbmQgY29sbGFwc2VzIGFsbCBvdGhlcnMuXG4gICAqIFRoZSBleHBhbmRlZCByZXBlYXRlciBpdGVtIGlzIHRoZSBmaXJzdCBvbmUgd2hlcmUgYGlzRXhwYW5kZWRgIGlzIHNldCB0byBgdHJ1ZWAuIFRoaXMgbGF5b3V0XG4gICAqIGFsbG93cyB1c2VycyB0byBleHBhbmQgb25lIGl0ZW0gYXQgYSB0aW1lLiBJdCBwcm92aWRlcyB0aGUgbW9zdCBjb21wYWN0IHZpZXcgYW5kIGlzXG4gICAqIGJlc3Qtc3VpdGVkIHRvIHJlcGVhdGVyIGl0ZW1zIHdoZXJlIHRoZSBtb3N0IGltcG9ydGFudCBpbmZvcm1hdGlvbiBpcyBpbiB0aGUgdGl0bGVzXG4gICAqIGFuZCB1c2VycyBvbmx5IG9jY2FzaW9uYWxseSBuZWVkIHRvIHZpZXcgdGhlIGJvZHkgY29udGVudC5cbiAgICogQGRlZmF1bHQgXCJub25lXCJcbiAgICovXG4gIC8vIFRPRE86IFJlbW92ZSAnc3RyaW5nJyBhcyBhIHZhbGlkIHR5cGUgaW4gYSBicmVha2luZyBjaGFuZ2UuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZXhwYW5kTW9kZSh2YWx1ZTogU2t5UmVwZWF0ZXJFeHBhbmRNb2RlVHlwZSB8IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI3JlcGVhdGVyU2VydmljZS5leHBhbmRNb2RlID0gdmFsdWU7XG4gICAgdGhpcy4jdXBkYXRlRm9yRXhwYW5kTW9kZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBleHBhbmRNb2RlKCk6IFNreVJlcGVhdGVyRXhwYW5kTW9kZVR5cGUgfCBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNyZXBlYXRlclNlcnZpY2UuZXhwYW5kTW9kZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBhY3RpdmUgcmVwZWF0ZXIgaXRlbSBjaGFuZ2VzLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBhY3RpdmVJbmRleENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIGNoYW5nZSB0aGUgb3JkZXIgb2YgcmVwZWF0ZXIgaXRlbXMuXG4gICAqIFRoaXMgZXZlbnQgZW1pdHMgYW4gb3JkZXJlZCBhcnJheSBvZiB0aGUgYHRhZ2AgcHJvcGVydGllcyB0aGF0IHRoZSBjb25zdW1lciBwcm92aWRlcyBmb3IgZWFjaCByZXBlYXRlciBpdGVtLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHB1YmxpYyBvcmRlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihTa3lSZXBlYXRlckl0ZW1Db21wb25lbnQpXG4gIHB1YmxpYyBpdGVtczogUXVlcnlMaXN0PFNreVJlcGVhdGVySXRlbUNvbXBvbmVudD4gfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGRyYWd1bGFHcm91cE5hbWU6IHN0cmluZztcblxuICBwdWJsaWMgcm9sZTogU2t5UmVwZWF0ZXJSb2xlVHlwZSB8IHVuZGVmaW5lZDtcblxuICAjYXV0b1Njcm9sbGVyOiBTa3lSZXBlYXRlckF1dG9TY3JvbGxlciB8IHVuZGVmaW5lZDtcbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNhZGFwdGVyU2VydmljZSA9IGluamVjdChTa3lSZXBlYXRlckFkYXB0ZXJTZXJ2aWNlKTtcbiAgI2NoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgI2RyYWd1bGFTZXJ2aWNlID0gaW5qZWN0KERyYWd1bGFTZXJ2aWNlKTtcbiAgI2VsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gICNyZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuICAjcmVwZWF0ZXJTZXJ2aWNlID0gaW5qZWN0KFNreVJlcGVhdGVyU2VydmljZSk7XG4gICNhdXRvU2Nyb2xsU3ZjID0gaW5qZWN0KFNreVJlcGVhdGVyQXV0b1Njcm9sbFNlcnZpY2UpO1xuICAjc2Nyb2xsYWJsZUhvc3RTdmMgPSBpbmplY3QoU2t5U2Nyb2xsYWJsZUhvc3RTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmRyYWd1bGFHcm91cE5hbWUgPSBgc2t5LXJlcGVhdGVyLWRyYWd1bGEtJHtcbiAgICAgIHRoaXMuI3JlcGVhdGVyU2VydmljZS5yZXBlYXRlckdyb3VwSWRcbiAgICB9YDtcblxuICAgIHRoaXMuI3JlcGVhdGVyU2VydmljZS5pdGVtQ29sbGFwc2VTdGF0ZUNoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoaXRlbTogU2t5UmVwZWF0ZXJJdGVtQ29tcG9uZW50KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmV4cGFuZE1vZGUgPT09ICdzaW5nbGUnICYmIGl0ZW0uaXNFeHBhbmRlZCkge1xuICAgICAgICAgIHRoaXMuaXRlbXM/LmZvckVhY2goKG90aGVySXRlbSkgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBvdGhlckl0ZW0gIT09IGl0ZW0gJiZcbiAgICAgICAgICAgICAgb3RoZXJJdGVtLmlzRXhwYW5kZWQgJiZcbiAgICAgICAgICAgICAgb3RoZXJJdGVtLmlzQ29sbGFwc2libGVcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBvdGhlckl0ZW0uaXNFeHBhbmRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHRoaXMuI3JlcGVhdGVyU2VydmljZS5hY3RpdmVJdGVtSW5kZXhDaGFuZ2VcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGluZGV4KSA9PiB7XG4gICAgICAgIGlmIChpbmRleCAhPT0gdGhpcy5hY3RpdmVJbmRleCkge1xuICAgICAgICAgIHRoaXMuYWN0aXZlSW5kZXggPSBpbmRleDtcbiAgICAgICAgICB0aGlzLmFjdGl2ZUluZGV4Q2hhbmdlLmVtaXQoaW5kZXgpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHRoaXMuI3JlcGVhdGVyU2VydmljZS5vcmRlckNoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuI2VtaXRUYWdzKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuI3VwZGF0ZUZvckV4cGFuZE1vZGUoKTtcblxuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLnNldFJlcGVhdGVySG9zdCh0aGlzLiNlbGVtZW50UmVmKTtcblxuICAgIHRoaXMuI2luaXRpYWxpemVEcmFnQW5kRHJvcCgpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAvLyBJZiBhY3RpdmVJbmRleCBoYXMgYmVlbiBzZXQgb24gaW5pdCwgY2FsbCBzZXJ2aWNlIHRvIGFjdGl2YXRlIHRoZSBhcHByb3ByaWF0ZSBpdGVtLlxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuYWN0aXZlSW5kZXggfHwgdGhpcy5hY3RpdmVJbmRleCA9PT0gMCkge1xuICAgICAgICB0aGlzLiNyZXBlYXRlclNlcnZpY2UuYWN0aXZhdGVJdGVtQnlJbmRleCh0aGlzLmFjdGl2ZUluZGV4KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy4jdmFsaWRhdGVUYWdzKCk7XG4gICAgfSk7XG5cbiAgICAvLyBIQUNLOiBOb3QgdXBkYXRpbmcgZm9yIGV4cGFuZCBtb2RlIGluIGEgdGltZW91dCBjYXVzZXMgYW4gZXJyb3IuXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvNjAwNVxuICAgIHRoaXMuaXRlbXM/LmNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMuI3VwZGF0ZUZvckV4cGFuZE1vZGUodGhpcy5pdGVtcy5sYXN0KTtcblxuICAgICAgICAgIHRoaXMuI3VwZGF0ZVJlb3JkZXJhYmlsaXR5KCk7XG5cbiAgICAgICAgICB0aGlzLiNyZXBlYXRlclNlcnZpY2UuaXRlbXMgPSB0aGlzLml0ZW1zLnRvQXJyYXkoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZUluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLiNyZXBlYXRlclNlcnZpY2UuYWN0aXZhdGVJdGVtQnlJbmRleCh0aGlzLmFjdGl2ZUluZGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuI3VwZGF0ZVJvbGUoKTtcblxuICAgICAgICB0aGlzLiN2YWxpZGF0ZVRhZ3MoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLiN1cGRhdGVGb3JFeHBhbmRNb2RlKCk7XG5cbiAgICAgIHRoaXMuaXRlbXM/LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgaXRlbS5yZW9yZGVyYWJsZSA9IHRoaXMucmVvcmRlcmFibGU7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy4jdXBkYXRlUm9sZSgpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snYWN0aXZlSW5kZXgnXSkge1xuICAgICAgdGhpcy4jcmVwZWF0ZXJTZXJ2aWNlLmVuYWJsZUFjdGl2ZVN0YXRlID0gdHJ1ZTtcbiAgICAgIGlmIChcbiAgICAgICAgY2hhbmdlc1snYWN0aXZlSW5kZXgnXS5jdXJyZW50VmFsdWUgIT09XG4gICAgICAgIGNoYW5nZXNbJ2FjdGl2ZUluZGV4J10ucHJldmlvdXNWYWx1ZVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuI3JlcGVhdGVyU2VydmljZS5hY3RpdmF0ZUl0ZW1CeUluZGV4KHRoaXMuYWN0aXZlSW5kZXgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLnJlb3JkZXJhYmxlKSB7XG4gICAgICBpZiAodGhpcy5pdGVtcykge1xuICAgICAgICB0aGlzLiN1cGRhdGVSZW9yZGVyYWJpbGl0eSgpO1xuICAgICAgfVxuICAgICAgdGhpcy4jdXBkYXRlUm9sZSgpO1xuXG4gICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI2Rlc3Ryb3lEcmFnQW5kRHJvcCgpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI3VwZGF0ZVJvbGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNka09ic2VydmVDb250ZW50KCk6IHZvaWQge1xuICAgIHRoaXMuI3VwZGF0ZVJvbGUoKTtcbiAgfVxuXG4gICN1cGRhdGVGb3JFeHBhbmRNb2RlKGl0ZW1BZGRlZD86IFNreVJlcGVhdGVySXRlbUNvbXBvbmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLml0ZW1zKSB7XG4gICAgICBsZXQgZm91bmRFeHBhbmRlZCA9IGZhbHNlO1xuICAgICAgY29uc3QgaXNDb2xsYXBzaWJsZSA9IHRoaXMuZXhwYW5kTW9kZSAhPT0gJ25vbmUnO1xuICAgICAgY29uc3QgaXNTaW5nbGUgPSB0aGlzLmV4cGFuZE1vZGUgPT09ICdzaW5nbGUnO1xuXG4gICAgICAvLyBLZWVwIGFueSBuZXdseS1hZGRlZCBleHBhbmRlZCBpdGVtIGV4cGFuZGVkIGFuZCBjb2xsYXBzZSB0aGUgcmVzdC5cbiAgICAgIGlmIChpdGVtQWRkZWQgJiYgaXRlbUFkZGVkLmlzRXhwYW5kZWQpIHtcbiAgICAgICAgZm91bmRFeHBhbmRlZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLml0ZW1zKSB7XG4gICAgICAgIGl0ZW0uaXNDb2xsYXBzaWJsZSA9IGlzQ29sbGFwc2libGUgJiYgISFpdGVtLmhhc0l0ZW1Db250ZW50O1xuXG4gICAgICAgIC8vIENvbGxhcHNlIGFueSBpdGVtcyB0aGF0IGFyZW4ndCB0aGUgaXRlbSB0aGF0IHdhcyBqdXN0IGFkZGVkLlxuICAgICAgICBpZiAoaXRlbSAhPT0gaXRlbUFkZGVkICYmIGlzU2luZ2xlICYmIGl0ZW0uaXNFeHBhbmRlZCkge1xuICAgICAgICAgIGlmIChmb3VuZEV4cGFuZGVkKSB7XG4gICAgICAgICAgICAvLyBJZiB0aGlzIGl0ZW0gaXMgYmVpbmcgY29sbGFwc2VkIGJlY2F1c2UgYSBuZXcgaXRlbSB3YXNcbiAgICAgICAgICAgIC8vIGFkZGVkLCBhbmltYXRlIGl0LlxuICAgICAgICAgICAgaXRlbS51cGRhdGVGb3JFeHBhbmRlZChmYWxzZSwgISFpdGVtQWRkZWQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGZvdW5kRXhwYW5kZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuI3VwZGF0ZVJvbGUoKTtcbiAgICB9XG4gIH1cblxuICAjaW5pdGlhbGl6ZURyYWdBbmREcm9wKCk6IHZvaWQge1xuICAgIC8qIFNhbml0eSBjaGVjayB0aGF0IHdlIGhhdmVuJ3QgYWxyZWFkeSBzZXQgdXAgZHJhZ2dpbmcgYWJpbGl0aWVzICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoIXRoaXMuI2RyYWd1bGFTZXJ2aWNlLmZpbmQodGhpcy5kcmFndWxhR3JvdXBOYW1lKSkge1xuICAgICAgdGhpcy4jZHJhZ3VsYVNlcnZpY2UuY3JlYXRlR3JvdXAodGhpcy5kcmFndWxhR3JvdXBOYW1lLCB7XG4gICAgICAgIG1vdmVzOiAoZWwsIF9jb250YWluZXIsIGhhbmRsZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGVsPy5xdWVyeVNlbGVjdG9yKCcuc2t5LXJlcGVhdGVyLWl0ZW0tZ3JhYi1oYW5kbGUnKTtcbiAgICAgICAgICByZXR1cm4gISEoXG4gICAgICAgICAgICB0aGlzLnJlb3JkZXJhYmxlICYmIHRhcmdldD8uY29udGFpbnMoaGFuZGxlIGFzIEVsZW1lbnQgfCBudWxsKVxuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBsZXQgZHJhZ2dlZEl0ZW1JbmRleCA9IC0xO1xuXG4gICAgdGhpcy4jZHJhZ3VsYVNlcnZpY2VcbiAgICAgIC5kcmFnKHRoaXMuZHJhZ3VsYUdyb3VwTmFtZSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGFyZ3MpID0+IHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKGFyZ3MubmFtZSA9PT0gdGhpcy5kcmFndWxhR3JvdXBOYW1lKSB7XG4gICAgICAgICAgdGhpcy4jZGVzdHJveUF1dG9TY3JvbGwoKTtcblxuICAgICAgICAgIHRoaXMuI2F1dG9TY3JvbGxlciA9IHRoaXMuI2F1dG9TY3JvbGxTdmMuYXV0b1Njcm9sbChcbiAgICAgICAgICAgIFt0aGlzLiNzY3JvbGxhYmxlSG9zdFN2Yy5nZXRTY3JvbGxhYmxlSG9zdCh0aGlzLiNlbGVtZW50UmVmKV0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG1hcmdpbjogMjAsXG4gICAgICAgICAgICAgIG1heFNwZWVkOiAxMCxcbiAgICAgICAgICAgICAgc2Nyb2xsV2hlbk91dHNpZGU6IHRydWUsXG4gICAgICAgICAgICAgIGF1dG9TY3JvbGw6ICgpID0+IHRydWUsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHRoaXMuI3JlbmRlcmVyLmFkZENsYXNzKGFyZ3MuZWwsICdza3ktcmVwZWF0ZXItaXRlbS1kcmFnZ2luZycpO1xuICAgICAgICAgIGRyYWdnZWRJdGVtSW5kZXggPSB0aGlzLiNhZGFwdGVyU2VydmljZS5nZXRSZXBlYXRlckl0ZW1JbmRleChcbiAgICAgICAgICAgIGFyZ3MuZWwgYXMgSFRNTEVsZW1lbnRcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHRoaXMuI2RyYWd1bGFTZXJ2aWNlXG4gICAgICAuZHJhZ2VuZCh0aGlzLmRyYWd1bGFHcm91cE5hbWUpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChhcmdzKSA9PiB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChhcmdzLm5hbWUgPT09IHRoaXMuZHJhZ3VsYUdyb3VwTmFtZSkge1xuICAgICAgICAgIHRoaXMuI2Rlc3Ryb3lBdXRvU2Nyb2xsKCk7XG5cbiAgICAgICAgICB0aGlzLiNyZW5kZXJlci5yZW1vdmVDbGFzcyhhcmdzLmVsLCAnc2t5LXJlcGVhdGVyLWl0ZW0tZHJhZ2dpbmcnKTtcbiAgICAgICAgICBjb25zdCBuZXdJdGVtSW5kZXggPSB0aGlzLiNhZGFwdGVyU2VydmljZS5nZXRSZXBlYXRlckl0ZW1JbmRleChcbiAgICAgICAgICAgIGFyZ3MuZWwgYXMgSFRNTEVsZW1lbnRcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAoZHJhZ2dlZEl0ZW1JbmRleCA+PSAwKSB7XG4gICAgICAgICAgICB0aGlzLiNyZXBlYXRlclNlcnZpY2UucmVvcmRlckl0ZW0oZHJhZ2dlZEl0ZW1JbmRleCwgbmV3SXRlbUluZGV4KTtcbiAgICAgICAgICAgIGRyYWdnZWRJdGVtSW5kZXggPSAtMTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLiNlbWl0VGFncygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gICNkZXN0cm95RHJhZ0FuZERyb3AoKTogdm9pZCB7XG4gICAgLyogU2FuaXR5IGNoZWNrIHRoYXQgd2UgaGF2ZSBzZXQgdXAgZHJhZ2dpbmcgYWJpbGl0aWVzICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy4jZHJhZ3VsYVNlcnZpY2UuZmluZCh0aGlzLmRyYWd1bGFHcm91cE5hbWUpKSB7XG4gICAgICB0aGlzLiNkcmFndWxhU2VydmljZS5kZXN0cm95KHRoaXMuZHJhZ3VsYUdyb3VwTmFtZSk7XG4gICAgfVxuXG4gICAgdGhpcy4jZGVzdHJveUF1dG9TY3JvbGwoKTtcbiAgfVxuXG4gICNkZXN0cm95QXV0b1Njcm9sbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jYXV0b1Njcm9sbGVyKSB7XG4gICAgICB0aGlzLiNhdXRvU2Nyb2xsZXIuZGVzdHJveSgpO1xuICAgICAgdGhpcy4jYXV0b1Njcm9sbGVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gICNlbWl0VGFncygpOiB2b2lkIHtcbiAgICBjb25zdCB0YWdzID0gdGhpcy4jcmVwZWF0ZXJTZXJ2aWNlLml0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS50YWcpO1xuICAgIHRoaXMub3JkZXJDaGFuZ2UuZW1pdCh0YWdzKTtcbiAgfVxuXG4gICNldmVyeUl0ZW1IYXNUYWcoKTogYm9vbGVhbiB7XG4gICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCF0aGlzLml0ZW1zIHx8IHRoaXMuaXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLml0ZW1zLnRvQXJyYXkoKS5ldmVyeSgoaXRlbSkgPT4ge1xuICAgICAgcmV0dXJuIGl0ZW0udGFnICE9PSB1bmRlZmluZWQ7XG4gICAgfSk7XG4gIH1cblxuICAjdXBkYXRlUm9sZSgpOiB2b2lkIHtcbiAgICAvLyBEZXRlcm1pbmUgYSByb2xlIHVzaW5nIGEgaGllcmFyY2h5IGJhc2VkIG9uIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS1wcmFjdGljZXMtMS4xL1xuICAgIC8vICAgMS4gSWYgdGhlcmUgYXJlIG9uZSBvciBtb3JlIGludGVyYWN0aW9ucyBpbiB0aGUgcmVwZWF0ZXIgaXRlbSBwcm9qZWN0ZWQgY29udGVudCwgdXNlIGdyaWQuXG4gICAgLy8gICAyLiBJZiB0aGVyZSBhcmUgc2VsZWN0YWJsZSByZXBlYXRlciBpdGVtcyBhbmQgbm8gb3RoZXIgaW50ZXJhY3Rpb25zLCB1c2UgbGlzdGJveC5cbiAgICAvLyAgIDMuIElmIHRoZXJlIGFyZSBubyBpbnRlcmFjdGlvbnMsIHVzZSBsaXN0LlxuXG4gICAgLy8gRGVmYXVsdCB0byBsaXN0IHJvbGUuXG4gICAgbGV0IGF1dG9Sb2xlOiBTa3lSZXBlYXRlclJvbGVUeXBlID0gJ2xpc3QnO1xuXG4gICAgY29uc3Qgcm9sZU1hcDogUmVjb3JkPFNreVJlcGVhdGVyUm9sZVR5cGUsIFNreVJlcGVhdGVySXRlbVJvbGVzVHlwZT4gPSB7XG4gICAgICBsaXN0OiB7IGl0ZW06ICdsaXN0aXRlbScsIHRpdGxlOiB1bmRlZmluZWQsIGNvbnRlbnQ6IHVuZGVmaW5lZCB9LFxuICAgICAgbGlzdGJveDogeyBpdGVtOiAnb3B0aW9uJywgdGl0bGU6IHVuZGVmaW5lZCwgY29udGVudDogdW5kZWZpbmVkIH0sXG4gICAgICBncmlkOiB7IGl0ZW06ICdyb3cnLCB0aXRsZTogJ3Jvd2hlYWRlcicsIGNvbnRlbnQ6ICdncmlkY2VsbCcgfSxcbiAgICB9O1xuXG4gICAgLy8gQmFzZWQgb24gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZG9tLmh0bWwjaW50ZXJhY3RpdmUtY29udGVudFxuICAgIGNvbnN0IGludGVyYWN0aW9uU2VsZWN0b3IgPSBbXG4gICAgICAnYVtocmVmXScsXG4gICAgICAnYXVkaW9bY29udHJvbHNdJyxcbiAgICAgICdidXR0b24nLFxuICAgICAgJ2RldGFpbHMnLFxuICAgICAgJ2VtYmVkJyxcbiAgICAgICdpZnJhbWUnLFxuICAgICAgJ2ltZ1t1c2VtYXBdJyxcbiAgICAgICdpbnB1dDpub3QoW3R5cGU9XCJoaWRkZW5cIl0pJyxcbiAgICAgICdsYWJlbCcsXG4gICAgICAnc2VsZWN0JyxcbiAgICAgICd0ZXh0YXJlYScsXG4gICAgICAndmlkZW9bY29udHJvbHNdJyxcbiAgICAgICdbY29udGVudGVkaXRhYmxlXScsXG4gICAgICAnLnNreS1yZXBlYXRlcltyb2xlPVwiZ3JpZFwiXScsXG4gICAgXVxuICAgICAgLm1hcChcbiAgICAgICAgKHNlbGVjdG9yKSA9PlxuICAgICAgICAgIGBza3ktcmVwZWF0ZXItaXRlbS10aXRsZSAke3NlbGVjdG9yfTpub3QoW2hpZGRlbl0pLCBza3ktcmVwZWF0ZXItaXRlbS1jb250ZW50ICR7c2VsZWN0b3J9Om5vdChbaGlkZGVuXSlgXG4gICAgICApXG4gICAgICAuY29uY2F0KFtgc2t5dXgtZHJvcGRvd25gXSlcbiAgICAgIC5qb2luKCcsICcpO1xuXG4gICAgY29uc3QgaGFzSW50ZXJhY3Rpb24gPVxuICAgICAgdGhpcy5yZW9yZGVyYWJsZSB8fFxuICAgICAgdGhpcy5pdGVtcz8uc29tZSgoaXRlbSkgPT4gaXRlbS5pc0NvbGxhcHNpYmxlKSB8fFxuICAgICAgdGhpcy5pdGVtcz8uc29tZSgoaXRlbSkgPT4gISFpdGVtLnNlbGVjdGFibGUpIHx8XG4gICAgICAhISh0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgIGludGVyYWN0aW9uU2VsZWN0b3JcbiAgICAgICk7XG5cbiAgICBpZiAoaGFzSW50ZXJhY3Rpb24pIHtcbiAgICAgIC8vIElmIHRoZSByZXBlYXRlciBtYXRjaGVzIGludGVyYWN0aW9uIHNlbGVjdG9yIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS1wcmFjdGljZXMtMS4xLyNncmlkXG4gICAgICBhdXRvUm9sZSA9ICdncmlkJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yb2xlICE9PSBhdXRvUm9sZSkge1xuICAgICAgdGhpcy4jcmVwZWF0ZXJTZXJ2aWNlLml0ZW1Sb2xlLm5leHQoe1xuICAgICAgICAuLi5yb2xlTWFwW2F1dG9Sb2xlXSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5yb2xlID0gYCR7YXV0b1JvbGV9YDtcbiAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gICN1cGRhdGVSZW9yZGVyYWJpbGl0eSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pdGVtcykge1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuaXRlbXMpIHtcbiAgICAgICAgaXRlbS5yZW9yZGVyYWJsZSA9IHRoaXMucmVvcmRlcmFibGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgI3ZhbGlkYXRlVGFncygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZW9yZGVyYWJsZSAmJiAhdGhpcy4jZXZlcnlJdGVtSGFzVGFnKCkpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ1BsZWFzZSBzdXBwbHkgdGFnIHByb3BlcnRpZXMgZm9yIGVhY2ggcmVwZWF0ZXIgaXRlbSB3aGVuIHJlb3JkZXJpbmcgZnVuY3Rpb25hbGl0eSBpcyBlbmFibGVkLidcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iLCI8bmctY29udGFpbmVyICNyZXBlYXRlckhvc3Q+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS1yZXBlYXRlclwiXG4gICAgW2F0dHIucm9sZV09XCJyb2xlXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbCB8fCAoJ3NreXV4X3JlcGVhdGVyX2xhYmVsJyB8IHNreUxpYlJlc291cmNlcylcIlxuICAgIFtkcmFndWxhXT1cImRyYWd1bGFHcm91cE5hbWVcIlxuICAgIChjZGtPYnNlcnZlQ29udGVudCk9XCJvbkNka09ic2VydmVDb250ZW50KClcIlxuICA+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -2,7 +2,6 @@ import { SkyComponentHarness } from '@skyux/core/testing';
2
2
  import { SkyRepeaterItemHarness } from './repeater-item-harness';
3
3
  /**
4
4
  * Harness for interacting with a repeater component in tests.
5
- * @internal
6
5
  */
7
6
  export class SkyRepeaterHarness extends SkyComponentHarness {
8
7
  /**
@@ -23,4 +22,4 @@ export class SkyRepeaterHarness extends SkyComponentHarness {
23
22
  * @internal
24
23
  */
25
24
  SkyRepeaterHarness.hostSelector = 'sky-repeater';
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXItaGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9saXN0cy90ZXN0aW5nL3NyYy9yZXBlYXRlci9yZXBlYXRlci1oYXJuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRzFELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR2pFOzs7R0FHRztBQUNILE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxtQkFBbUI7SUFNekQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FDaEIsT0FBa0M7UUFFbEMsT0FBTyxrQkFBa0IsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsZ0JBQWdCLENBQzNCLE9BQXVDO1FBRXZDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMxRSxDQUFDOztBQXRCRDs7R0FFRztBQUNXLCtCQUFZLEdBQUcsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGFybmVzc1ByZWRpY2F0ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXN0aW5nJztcbmltcG9ydCB7IFNreUNvbXBvbmVudEhhcm5lc3MgfSBmcm9tICdAc2t5dXgvY29yZS90ZXN0aW5nJztcblxuaW1wb3J0IHsgU2t5UmVwZWF0ZXJIYXJuZXNzRmlsdGVycyB9IGZyb20gJy4vcmVwZWF0ZXItaGFybmVzcy1maWx0ZXJzJztcbmltcG9ydCB7IFNreVJlcGVhdGVySXRlbUhhcm5lc3MgfSBmcm9tICcuL3JlcGVhdGVyLWl0ZW0taGFybmVzcyc7XG5pbXBvcnQgeyBTa3lSZXBlYXRlckl0ZW1IYXJuZXNzRmlsdGVycyB9IGZyb20gJy4vcmVwZWF0ZXItaXRlbS1oYXJuZXNzLWZpbHRlcnMnO1xuXG4vKipcbiAqIEhhcm5lc3MgZm9yIGludGVyYWN0aW5nIHdpdGggYSByZXBlYXRlciBjb21wb25lbnQgaW4gdGVzdHMuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIFNreVJlcGVhdGVySGFybmVzcyBleHRlbmRzIFNreUNvbXBvbmVudEhhcm5lc3Mge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGhvc3RTZWxlY3RvciA9ICdza3ktcmVwZWF0ZXInO1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgYEhhcm5lc3NQcmVkaWNhdGVgIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VhcmNoIGZvciBhXG4gICAqIGBTa3lSZXBlYXRlckhhcm5lc3NgIHRoYXQgbWVldHMgY2VydGFpbiBjcml0ZXJpYS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd2l0aChcbiAgICBmaWx0ZXJzOiBTa3lSZXBlYXRlckhhcm5lc3NGaWx0ZXJzXG4gICk6IEhhcm5lc3NQcmVkaWNhdGU8U2t5UmVwZWF0ZXJIYXJuZXNzPiB7XG4gICAgcmV0dXJuIFNreVJlcGVhdGVySGFybmVzcy5nZXREYXRhU2t5SWRQcmVkaWNhdGUoZmlsdGVycyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIGxpc3Qgb2YgY2hpbGQgcmVwZWF0ZXIgaXRlbXMuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0UmVwZWF0ZXJJdGVtcyhcbiAgICBmaWx0ZXJzPzogU2t5UmVwZWF0ZXJJdGVtSGFybmVzc0ZpbHRlcnNcbiAgKTogUHJvbWlzZTxTa3lSZXBlYXRlckl0ZW1IYXJuZXNzW10+IHtcbiAgICByZXR1cm4gdGhpcy5sb2NhdG9yRm9yQWxsKFNreVJlcGVhdGVySXRlbUhhcm5lc3Mud2l0aChmaWx0ZXJzIHx8IHt9KSkoKTtcbiAgfVxufVxuIl19
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXItaGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9saXN0cy90ZXN0aW5nL3NyYy9yZXBlYXRlci9yZXBlYXRlci1oYXJuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRzFELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR2pFOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGtCQUFtQixTQUFRLG1CQUFtQjtJQU16RDs7O09BR0c7SUFDSSxNQUFNLENBQUMsSUFBSSxDQUNoQixPQUFrQztRQUVsQyxPQUFPLGtCQUFrQixDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDM0IsT0FBdUM7UUFFdkMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzFFLENBQUM7O0FBdEJEOztHQUVHO0FBQ1csK0JBQVksR0FBRyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIYXJuZXNzUHJlZGljYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Rlc3RpbmcnO1xuaW1wb3J0IHsgU2t5Q29tcG9uZW50SGFybmVzcyB9IGZyb20gJ0Bza3l1eC9jb3JlL3Rlc3RpbmcnO1xuXG5pbXBvcnQgeyBTa3lSZXBlYXRlckhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi9yZXBlYXRlci1oYXJuZXNzLWZpbHRlcnMnO1xuaW1wb3J0IHsgU2t5UmVwZWF0ZXJJdGVtSGFybmVzcyB9IGZyb20gJy4vcmVwZWF0ZXItaXRlbS1oYXJuZXNzJztcbmltcG9ydCB7IFNreVJlcGVhdGVySXRlbUhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi9yZXBlYXRlci1pdGVtLWhhcm5lc3MtZmlsdGVycyc7XG5cbi8qKlxuICogSGFybmVzcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBhIHJlcGVhdGVyIGNvbXBvbmVudCBpbiB0ZXN0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNreVJlcGVhdGVySGFybmVzcyBleHRlbmRzIFNreUNvbXBvbmVudEhhcm5lc3Mge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGhvc3RTZWxlY3RvciA9ICdza3ktcmVwZWF0ZXInO1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgYEhhcm5lc3NQcmVkaWNhdGVgIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VhcmNoIGZvciBhXG4gICAqIGBTa3lSZXBlYXRlckhhcm5lc3NgIHRoYXQgbWVldHMgY2VydGFpbiBjcml0ZXJpYS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd2l0aChcbiAgICBmaWx0ZXJzOiBTa3lSZXBlYXRlckhhcm5lc3NGaWx0ZXJzXG4gICk6IEhhcm5lc3NQcmVkaWNhdGU8U2t5UmVwZWF0ZXJIYXJuZXNzPiB7XG4gICAgcmV0dXJuIFNreVJlcGVhdGVySGFybmVzcy5nZXREYXRhU2t5SWRQcmVkaWNhdGUoZmlsdGVycyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIGxpc3Qgb2YgY2hpbGQgcmVwZWF0ZXIgaXRlbXMuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0UmVwZWF0ZXJJdGVtcyhcbiAgICBmaWx0ZXJzPzogU2t5UmVwZWF0ZXJJdGVtSGFybmVzc0ZpbHRlcnNcbiAgKTogUHJvbWlzZTxTa3lSZXBlYXRlckl0ZW1IYXJuZXNzW10+IHtcbiAgICByZXR1cm4gdGhpcy5sb2NhdG9yRm9yQWxsKFNreVJlcGVhdGVySXRlbUhhcm5lc3Mud2l0aChmaWx0ZXJzIHx8IHt9KSkoKTtcbiAgfVxufVxuIl19
@@ -1,4 +1,4 @@
1
- var _SkyRepeaterItemHarness_getCheckbox, _SkyRepeaterItemHarness_getChevron, _SkyRepeaterItemHarness_getContent, _SkyRepeaterItemHarness_getReorderHandle, _SkyRepeaterItemHarness_getTitle;
1
+ var _SkyRepeaterItemHarness_getBackToTop, _SkyRepeaterItemHarness_getCheckbox, _SkyRepeaterItemHarness_getChevron, _SkyRepeaterItemHarness_getContent, _SkyRepeaterItemHarness_getReorderHandle, _SkyRepeaterItemHarness_getTitle;
2
2
  import { __classPrivateFieldGet } from "tslib";
3
3
  import { HarnessPredicate, } from '@angular/cdk/testing';
4
4
  import { SkyComponentHarness } from '@skyux/core/testing';
@@ -6,11 +6,11 @@ import { SkyCheckboxHarness } from '@skyux/forms/testing';
6
6
  import { SkyChevronHarness } from '@skyux/indicators/testing';
7
7
  /**
8
8
  * Harness for interacting with a repeater item component in tests.
9
- * @internal
10
9
  */
11
10
  export class SkyRepeaterItemHarness extends SkyComponentHarness {
12
11
  constructor() {
13
12
  super(...arguments);
13
+ _SkyRepeaterItemHarness_getBackToTop.set(this, this.locatorForOptional('button.sky-repeater-item-reorder-top'));
14
14
  _SkyRepeaterItemHarness_getCheckbox.set(this, this.locatorForOptional(SkyCheckboxHarness));
15
15
  _SkyRepeaterItemHarness_getChevron.set(this, this.locatorForOptional(SkyChevronHarness));
16
16
  _SkyRepeaterItemHarness_getContent.set(this, this.locatorFor('.sky-repeater-item-content'));
@@ -48,6 +48,24 @@ export class SkyRepeaterItemHarness extends SkyComponentHarness {
48
48
  async queryHarness(query) {
49
49
  return this.locatorForOptional(query)();
50
50
  }
51
+ /**
52
+ * Returns child harnesses.
53
+ */
54
+ async queryHarnesses(harness) {
55
+ return this.locatorForAll(harness)();
56
+ }
57
+ /**
58
+ * Returns a child test element.
59
+ */
60
+ async querySelector(selector) {
61
+ return this.locatorForOptional(selector)();
62
+ }
63
+ /**
64
+ * Returns child test elements.
65
+ */
66
+ async querySelectorAll(selector) {
67
+ return this.locatorForAll(selector)();
68
+ }
51
69
  /**
52
70
  * Selects the repeater item.
53
71
  */
@@ -128,10 +146,21 @@ export class SkyRepeaterItemHarness extends SkyComponentHarness {
128
146
  async isReorderable() {
129
147
  return !!(await __classPrivateFieldGet(this, _SkyRepeaterItemHarness_getReorderHandle, "f").call(this));
130
148
  }
149
+ /**
150
+ * Moves the repeater item to the top of the list
151
+ */
152
+ async sendToTop() {
153
+ if (await this.isReorderable()) {
154
+ await (await __classPrivateFieldGet(this, _SkyRepeaterItemHarness_getBackToTop, "f").call(this))?.click();
155
+ }
156
+ else {
157
+ throw new Error('Could not send to top because the repeater is not reorderable.');
158
+ }
159
+ }
131
160
  }
132
- _SkyRepeaterItemHarness_getCheckbox = new WeakMap(), _SkyRepeaterItemHarness_getChevron = new WeakMap(), _SkyRepeaterItemHarness_getContent = new WeakMap(), _SkyRepeaterItemHarness_getReorderHandle = new WeakMap(), _SkyRepeaterItemHarness_getTitle = new WeakMap();
161
+ _SkyRepeaterItemHarness_getBackToTop = new WeakMap(), _SkyRepeaterItemHarness_getCheckbox = new WeakMap(), _SkyRepeaterItemHarness_getChevron = new WeakMap(), _SkyRepeaterItemHarness_getContent = new WeakMap(), _SkyRepeaterItemHarness_getReorderHandle = new WeakMap(), _SkyRepeaterItemHarness_getTitle = new WeakMap();
133
162
  /**
134
163
  * @internal
135
164
  */
136
165
  SkyRepeaterItemHarness.hostSelector = 'sky-repeater-item';
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXItaXRlbS1oYXJuZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xpc3RzL3Rlc3Rpbmcvc3JjL3JlcGVhdGVyL3JlcGVhdGVyLWl0ZW0taGFybmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFFTCxnQkFBZ0IsR0FFakIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUk5RDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsbUJBQW1CO0lBQS9EOztRQU1FLDhDQUFlLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFDO1FBRTNELDZDQUFjLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFDO1FBRXpELDZDQUFjLElBQUksQ0FBQyxVQUFVLENBQUMsNEJBQTRCLENBQUMsRUFBQztRQUU1RCxtREFBb0IsSUFBSSxDQUFDLGtCQUFrQixDQUN6QyxzQ0FBc0MsQ0FDdkMsRUFBQztRQUVGLDJDQUFZLElBQUksQ0FBQyxVQUFVLENBQUMsMEJBQTBCLENBQUMsRUFBQztJQW9KMUQsQ0FBQztJQWxKQzs7O09BR0c7SUFDSSxNQUFNLENBQUMsSUFBSSxDQUNoQixPQUFzQztRQUV0QyxPQUFPLHNCQUFzQixDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQzthQUN6RCxTQUFTLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUNyRSxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsTUFBTSxPQUFPLENB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QUFPLENBQUMsWUFBWSxFQUFFLENBQUMsS0FBSyxNQUFNLEVBQUU7Z0JBQzdDLE1BQU0sT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQ3hCO1lBQ0QsT0FBTztTQUNSO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYixtRUFBbUUsQ0FDcEUsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxRQUFRO1FBQ25CLE1BQU0sT0FBTyxHQUFHLE1BQU0sdUJBQUEsSUFBSSwwQ0FBWSxNQUFoQixJQUFJLENBQWMsQ0FBQztRQUN6QyxJQUFJLE9BQU8sRUFBRTtZQUNYLElBQUksQ0FBQyxNQUFNLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDM0MsTUFBTSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDeEI7WUFDRCxPQUFPO1NBQ1I7UUFDRCxNQUFNLElBQUksS0FBSyxDQUNiLHFFQUFxRSxDQUN0RSxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGFBQWE7UUFDeEIsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLHVCQUFBLElBQUksZ0RBQWtCLE1BQXRCLElBQUksQ0FBb0IsQ0FBQyxDQUFDO0lBQzVDLENBQUM7OztBQWxLRDs7R0FFRztBQUNXLG1DQUFZLEdBQUcsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnRIYXJuZXNzLFxuICBIYXJuZXNzUHJlZGljYXRlLFxuICBIYXJuZXNzUXVlcnksXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXN0aW5nJztcbmltcG9ydCB7IFNreUNvbXBvbmVudEhhcm5lc3MgfSBmcm9tICdAc2t5dXgvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IFNreUNoZWNrYm94SGFybmVzcyB9IGZyb20gJ0Bza3l1eC9mb3Jtcy90ZXN0aW5nJztcbmltcG9ydCB7IFNreUNoZXZyb25IYXJuZXNzIH0gZnJvbSAnQHNreXV4L2luZGljYXRvcnMvdGVzdGluZyc7XG5cbmltcG9ydCB7IFNreVJlcGVhdGVySXRlbUhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi9yZXBlYXRlci1pdGVtLWhhcm5lc3MtZmlsdGVycyc7XG5cbi8qKlxuICogSGFybmVzcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBhIHJlcGVhdGVyIGl0ZW0gY29tcG9uZW50IGluIHRlc3RzLlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lSZXBlYXRlckl0ZW1IYXJuZXNzIGV4dGVuZHMgU2t5Q29tcG9uZW50SGFybmVzcyB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaG9zdFNlbGVjdG9yID0gJ3NreS1yZXBlYXRlci1pdGVtJztcblxuICAjZ2V0Q2hlY2tib3ggPSB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbChTa3lDaGVja2JveEhhcm5lc3MpO1xuXG4gICNnZXRDaGV2cm9uID0gdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoU2t5Q2hldnJvbkhhcm5lc3MpO1xuXG4gICNnZXRDb250ZW50ID0gdGhpcy5sb2NhdG9yRm9yKCcuc2t5LXJlcGVhdGVyLWl0ZW0tY29udGVudCcpO1xuXG4gICNnZXRSZW9yZGVySGFuZGxlID0gdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoXG4gICAgJ2J1dHRvbi5za3ktcmVwZWF0ZXItaXRlbS1ncmFiLWhhbmRsZSdcbiAgKTtcblxuICAjZ2V0VGl0bGUgPSB0aGlzLmxvY2F0b3JGb3IoJy5za3ktcmVwZWF0ZXItaXRlbS10aXRsZScpO1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgYEhhcm5lc3NQcmVkaWNhdGVgIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VhcmNoIGZvciBhXG4gICAqIGBTa3lSZXBlYXRlckl0ZW1IYXJuZXNzYCB0aGF0IG1lZXRzIGNlcnRhaW4gY3JpdGVyaWEuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdpdGgoXG4gICAgZmlsdGVyczogU2t5UmVwZWF0ZXJJdGVtSGFybmVzc0ZpbHRlcnNcbiAgKTogSGFybmVzc1ByZWRpY2F0ZTxTa3lSZXBlYXRlckl0ZW1IYXJuZXNzPiB7XG4gICAgcmV0dXJuIFNreVJlcGVhdGVySXRlbUhhcm5lc3MuZ2V0RGF0YVNreUlkUHJlZGljYXRlKGZpbHRlcnMpXG4gICAgICAuYWRkT3B0aW9uKCdjb250ZW50VGV4dCcsIGZpbHRlcnMuY29udGVudFRleHQsIGFzeW5jIChoYXJuZXNzLCB0ZXh0KSA9PlxuICAgICAgICBIYXJuZXNzUHJlZGljYXRlLnN0cmluZ01hdGNoZXMoYXdhaXQgaGFybmVzcy5nZXRDb250ZW50VGV4dCgpLCB0ZXh0KVxuICAgICAgKVxuICAgICAgLmFkZE9wdGlvbigndGl0bGVUZXh0JywgZmlsdGVycy50aXRsZVRleHQsIGFzeW5jIChoYXJuZXNzLCB0ZXh0KSA9PlxuICAgICAgICBIYXJuZXNzUHJlZGljYXRlLnN0cmluZ01hdGNoZXMoYXdhaXQgaGFybmVzcy5nZXRUaXRsZVRleHQoKSwgdGV4dClcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgcmVwZWF0ZXIgaXRlbSBpcyBzZWxlY3RhYmxlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlzU2VsZWN0YWJsZSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gISEoYXdhaXQgdGhpcy4jZ2V0Q2hlY2tib3goKSk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgcmVwZWF0ZXIgaXRlbSBpcyBzZWxlY3RlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpc1NlbGVjdGVkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGNoZWNrYm94ID0gYXdhaXQgdGhpcy4jZ2V0Q2hlY2tib3goKTtcbiAgICBpZiAoIWNoZWNrYm94KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdDb3VsZCBub3QgZGV0ZXJtaW5lIGlmIHJlcGVhdGVyIGl0ZW0gaXMgc2VsZWN0ZWQgYmVjYXVzZSBpdCBpcyBub3Qgc2VsZWN0YWJsZS4nXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBjaGVja2JveC5pc0NoZWNrZWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgY2hpbGQgaGFybmVzcy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBxdWVyeUhhcm5lc3M8VCBleHRlbmRzIENvbXBvbmVudEhhcm5lc3M+KFxuICAgIHF1ZXJ5OiBIYXJuZXNzUXVlcnk8VD5cbiAgKTogUHJvbWlzZTxUIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbChxdWVyeSkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3RzIHRoZSByZXBlYXRlciBpdGVtLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNlbGVjdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjaGVja2JveCA9IGF3YWl0IHRoaXMuI2dldENoZWNrYm94KCk7XG4gICAgaWYgKCFjaGVja2JveCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnQ291bGQgbm90IHNlbGVjdCB0aGUgcmVwZWF0ZXIgaXRlbSBiZWNhdXNlIGl0IGlzIG5vdCBzZWxlY3RhYmxlLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgYXdhaXQgY2hlY2tib3guY2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNlbGVjdHMgdGhlIHJlcGVhdGVyIGl0ZW0uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZGVzZWxlY3QoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY2hlY2tib3ggPSBhd2FpdCB0aGlzLiNnZXRDaGVja2JveCgpO1xuICAgIGlmICghY2hlY2tib3gpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0NvdWxkIG5vdCBkZXNlbGVjdCB0aGUgcmVwZWF0ZXIgaXRlbSBiZWNhdXNlIGl0IGlzIG5vdCBzZWxlY3RhYmxlLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgYXdhaXQgY2hlY2tib3gudW5jaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHRleHQgb2YgdGhlIHJlcGVhdGVyIGl0ZW0gY29udGVudC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRDb250ZW50VGV4dCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy4jZ2V0Q29udGVudCgpKS50ZXh0KCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdGV4dCBvZiB0aGUgcmVwZWF0ZXIgaXRlbSB0aXRsZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRUaXRsZVRleHQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuI2dldFRpdGxlKCkpLnRleHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSByZXBlYXRlciBpdGVtIGlzIGNvbGxhcHNpYmxlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlzQ29sbGFwc2libGUoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuICEhKGF3YWl0IHRoaXMuI2dldENoZXZyb24oKSk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgcmVwZWF0ZXIgaXRlbSBpcyBleHBhbmRlZCwgb3IgdGhyb3dzIGFuIGVycm9yIGluZm9ybWluZyBvZiB0aGUgbGFjayBvZiBjb2xsYXBzaWJpbGl0eS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpc0V4cGFuZGVkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGNoZXZyb24gPSBhd2FpdCB0aGlzLiNnZXRDaGV2cm9uKCk7XG4gICAgaWYgKGNoZXZyb24pIHtcbiAgICAgIHJldHVybiAoYXdhaXQgY2hldnJvbi5nZXREaXJlY3Rpb24oKSkgPT09ICd1cCc7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdDb3VsZCBub3QgZGV0ZXJtaW5lIGlmIHJlcGVhdGVyIGl0ZW0gaXMgZXhwYW5kZWQgYmVjYXVzZSBpdCBpcyBub3QgY29sbGFwc2libGUuJ1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRXhwYW5kcyB0aGUgcmVwZWF0ZXIgaXRlbSwgb3IgZG9lcyBub3RoaW5nIGlmIGFscmVhZHkgZXhwYW5kZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZXhwYW5kKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNoZXZyb24gPSBhd2FpdCB0aGlzLiNnZXRDaGV2cm9uKCk7XG4gICAgaWYgKGNoZXZyb24pIHtcbiAgICAgIGlmICgoYXdhaXQgY2hldnJvbi5nZXREaXJlY3Rpb24oKSkgPT09ICdkb3duJykge1xuICAgICAgICBhd2FpdCBjaGV2cm9uLnRvZ2dsZSgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnQ291bGQgbm90IGV4cGFuZCB0aGUgcmVwZWF0ZXIgaXRlbSBiZWNhdXNlIGl0IGlzIG5vdCBjb2xsYXBzaWJsZS4nXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb2xsYXBzZXMgdGhlIHJlcGVhdGVyIGl0ZW0sIG9yIGRvZXMgbm90aGluZyBpZiBhbHJlYWR5IGNvbGxhcHNlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBjb2xsYXBzZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjaGV2cm9uID0gYXdhaXQgdGhpcy4jZ2V0Q2hldnJvbigpO1xuICAgIGlmIChjaGV2cm9uKSB7XG4gICAgICBpZiAoKGF3YWl0IGNoZXZyb24uZ2V0RGlyZWN0aW9uKCkpID09PSAndXAnKSB7XG4gICAgICAgIGF3YWl0IGNoZXZyb24udG9nZ2xlKCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdDb3VsZCBub3QgY29sbGFwc2UgdGhlIHJlcGVhdGVyIGl0ZW0gYmVjYXVzZSBpdCBpcyBub3QgY29sbGFwc2libGUuJ1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgcmVwZWF0ZXIgaXRlbSBpcyByZW9yZGVyYWJsZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpc1Jlb3JkZXJhYmxlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiAhIShhd2FpdCB0aGlzLiNnZXRSZW9yZGVySGFuZGxlKCkpO1xuICB9XG59XG4iXX0=
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXItaXRlbS1oYXJuZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xpc3RzL3Rlc3Rpbmcvc3JjL3JlcGVhdGVyL3JlcGVhdGVyLWl0ZW0taGFybmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFFTCxnQkFBZ0IsR0FHakIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUk5RDs7R0FFRztBQUNILE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxtQkFBbUI7SUFBL0Q7O1FBTUUsK0NBQWdCLElBQUksQ0FBQyxrQkFBa0IsQ0FDckMsc0NBQXNDLENBQ3ZDLEVBQUM7UUFFRiw4Q0FBZSxJQUFJLENBQUMsa0JBQWtCLENBQUMsa0JBQWtCLENBQUMsRUFBQztRQUUzRCw2Q0FBYyxJQUFJLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLENBQUMsRUFBQztRQUV6RCw2Q0FBYyxJQUFJLENBQUMsVUFBVSxDQUFDLDRCQUE0QixDQUFDLEVBQUM7UUFFNUQsbURBQW9CLElBQUksQ0FBQyxrQkFBa0IsQ0FDekMsc0NBQXNDLENBQ3ZDLEVBQUM7UUFFRiwyQ0FBWSxJQUFJLENBQUMsVUFBVSxDQUFDLDBCQUEwQixDQUFDLEVBQUM7SUF3TDFELENBQUM7SUF0TEM7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FDaEIsT0FBc0M7UUFFdEMsT0FBTyxzQkFBc0IsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUM7YUFDekQsU0FBUyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFB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b0IsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxTQUFTO1FBQ3BCLElBQUksTUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUU7WUFDOUIsTUFBTSxDQUFDLE1BQU0sdUJBQUEsSUFBSSw0Q0FBYyxNQUFsQixJQUFJLENBQWdCLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztTQUM3QzthQUFNO1lBQ0wsTUFBTSxJQUFJLEtBQUssQ0FDYixnRUFBZ0UsQ0FDakUsQ0FBQztTQUNIO0lBQ0gsQ0FBQzs7O0FBMU1EOztHQUVHO0FBQ1csbUNBQVksR0FBRyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudEhhcm5lc3MsXG4gIEhhcm5lc3NQcmVkaWNhdGUsXG4gIEhhcm5lc3NRdWVyeSxcbiAgVGVzdEVsZW1lbnQsXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXN0aW5nJztcbmltcG9ydCB7IFNreUNvbXBvbmVudEhhcm5lc3MgfSBmcm9tICdAc2t5dXgvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IFNreUNoZWNrYm94SGFybmVzcyB9IGZyb20gJ0Bza3l1eC9mb3Jtcy90ZXN0aW5nJztcbmltcG9ydCB7IFNreUNoZXZyb25IYXJuZXNzIH0gZnJvbSAnQHNreXV4L2luZGljYXRvcnMvdGVzdGluZyc7XG5cbmltcG9ydCB7IFNreVJlcGVhdGVySXRlbUhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi9yZXBlYXRlci1pdGVtLWhhcm5lc3MtZmlsdGVycyc7XG5cbi8qKlxuICogSGFybmVzcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBhIHJlcGVhdGVyIGl0ZW0gY29tcG9uZW50IGluIHRlc3RzLlxuICovXG5leHBvcnQgY2xhc3MgU2t5UmVwZWF0ZXJJdGVtSGFybmVzcyBleHRlbmRzIFNreUNvbXBvbmVudEhhcm5lc3Mge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGhvc3RTZWxlY3RvciA9ICdza3ktcmVwZWF0ZXItaXRlbSc7XG5cbiAgI2dldEJhY2tUb1RvcCA9IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKFxuICAgICdidXR0b24uc2t5LXJlcGVhdGVyLWl0ZW0tcmVvcmRlci10b3AnXG4gICk7XG5cbiAgI2dldENoZWNrYm94ID0gdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoU2t5Q2hlY2tib3hIYXJuZXNzKTtcblxuICAjZ2V0Q2hldnJvbiA9IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKFNreUNoZXZyb25IYXJuZXNzKTtcblxuICAjZ2V0Q29udGVudCA9IHRoaXMubG9jYXRvckZvcignLnNreS1yZXBlYXRlci1pdGVtLWNvbnRlbnQnKTtcblxuICAjZ2V0UmVvcmRlckhhbmRsZSA9IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKFxuICAgICdidXR0b24uc2t5LXJlcGVhdGVyLWl0ZW0tZ3JhYi1oYW5kbGUnXG4gICk7XG5cbiAgI2dldFRpdGxlID0gdGhpcy5sb2NhdG9yRm9yKCcuc2t5LXJlcGVhdGVyLWl0ZW0tdGl0bGUnKTtcblxuICAvKipcbiAgICogR2V0cyBhIGBIYXJuZXNzUHJlZGljYXRlYCB0aGF0IGNhbiBiZSB1c2VkIHRvIHNlYXJjaCBmb3IgYVxuICAgKiBgU2t5UmVwZWF0ZXJJdGVtSGFybmVzc2AgdGhhdCBtZWV0cyBjZXJ0YWluIGNyaXRlcmlhLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB3aXRoKFxuICAgIGZpbHRlcnM6IFNreVJlcGVhdGVySXRlbUhhcm5lc3NGaWx0ZXJzXG4gICk6IEhhcm5lc3NQcmVkaWNhdGU8U2t5UmVwZWF0ZXJJdGVtSGFybmVzcz4ge1xuICAgIHJldHVybiBTa3lSZXBlYXRlckl0ZW1IYXJuZXNzLmdldERhdGFTa3lJZFByZWRpY2F0ZShmaWx0ZXJzKVxuICAgICAgLmFkZE9wdGlvbignY29udGVudFRleHQnLCBmaWx0ZXJzLmNvbnRlbnRUZXh0LCBhc3luYyAoaGFybmVzcywgdGV4dCkgPT5cbiAgICAgICAgSGFybmVzc1ByZWRpY2F0ZS5zdHJpbmdNYXRjaGVzKGF3YWl0IGhhcm5lc3MuZ2V0Q29udGVudFRleHQoKSwgdGV4dClcbiAgICAgIClcbiAgICAgIC5hZGRPcHRpb24oJ3RpdGxlVGV4dCcsIGZpbHRlcnMudGl0bGVUZXh0LCBhc3luYyAoaGFybmVzcywgdGV4dCkgPT5cbiAgICAgICAgSGFybmVzc1ByZWRpY2F0ZS5zdHJpbmdNYXRjaGVzKGF3YWl0IGhhcm5lc3MuZ2V0VGl0bGVUZXh0KCksIHRleHQpXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHJlcGVhdGVyIGl0ZW0gaXMgc2VsZWN0YWJsZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpc1NlbGVjdGFibGUoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuICEhKGF3YWl0IHRoaXMuI2dldENoZWNrYm94KCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHJlcGVhdGVyIGl0ZW0gaXMgc2VsZWN0ZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaXNTZWxlY3RlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBjaGVja2JveCA9IGF3YWl0IHRoaXMuI2dldENoZWNrYm94KCk7XG4gICAgaWYgKCFjaGVja2JveCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnQ291bGQgbm90IGRldGVybWluZSBpZiByZXBlYXRlciBpdGVtIGlzIHNlbGVjdGVkIGJlY2F1c2UgaXQgaXMgbm90IHNlbGVjdGFibGUuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2hlY2tib3guaXNDaGVja2VkKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGNoaWxkIGhhcm5lc3MuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcXVlcnlIYXJuZXNzPFQgZXh0ZW5kcyBDb21wb25lbnRIYXJuZXNzPihcbiAgICBxdWVyeTogSGFybmVzc1F1ZXJ5PFQ+XG4gICk6IFByb21pc2U8VCB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwocXVlcnkpKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBjaGlsZCBoYXJuZXNzZXMuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcXVlcnlIYXJuZXNzZXM8VCBleHRlbmRzIENvbXBvbmVudEhhcm5lc3M+KFxuICAgIGhhcm5lc3M6IEhhcm5lc3NRdWVyeTxUPlxuICApOiBQcm9taXNlPFRbXT4ge1xuICAgIHJldHVybiB0aGlzLmxvY2F0b3JGb3JBbGwoaGFybmVzcykoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgY2hpbGQgdGVzdCBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3I6IHN0cmluZyk6IFByb21pc2U8VGVzdEVsZW1lbnQgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMubG9jYXRvckZvck9wdGlvbmFsKHNlbGVjdG9yKSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgY2hpbGQgdGVzdCBlbGVtZW50cy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBxdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yOiBzdHJpbmcpOiBQcm9taXNlPFRlc3RFbGVtZW50W10+IHtcbiAgICByZXR1cm4gdGhpcy5sb2NhdG9yRm9yQWxsKHNlbGVjdG9yKSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdHMgdGhlIHJlcGVhdGVyIGl0ZW0uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2VsZWN0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNoZWNrYm94ID0gYXdhaXQgdGhpcy4jZ2V0Q2hlY2tib3goKTtcbiAgICBpZiAoIWNoZWNrYm94KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdDb3VsZCBub3Qgc2VsZWN0IHRoZSByZXBlYXRlciBpdGVtIGJlY2F1c2UgaXQgaXMgbm90IHNlbGVjdGFibGUuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBhd2FpdCBjaGVja2JveC5jaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc2VsZWN0cyB0aGUgcmVwZWF0ZXIgaXRlbS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBkZXNlbGVjdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjaGVja2JveCA9IGF3YWl0IHRoaXMuI2dldENoZWNrYm94KCk7XG4gICAgaWYgKCFjaGVja2JveCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnQ291bGQgbm90IGRlc2VsZWN0IHRoZSByZXBlYXRlciBpdGVtIGJlY2F1c2UgaXQgaXMgbm90IHNlbGVjdGFibGUuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBhd2FpdCBjaGVja2JveC51bmNoZWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdGV4dCBvZiB0aGUgcmVwZWF0ZXIgaXRlbSBjb250ZW50LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldENvbnRlbnRUZXh0KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLiNnZXRDb250ZW50KCkpLnRleHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0ZXh0IG9mIHRoZSByZXBlYXRlciBpdGVtIHRpdGxlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFRpdGxlVGV4dCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy4jZ2V0VGl0bGUoKSkudGV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHJlcGVhdGVyIGl0ZW0gaXMgY29sbGFwc2libGUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaXNDb2xsYXBzaWJsZSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gISEoYXdhaXQgdGhpcy4jZ2V0Q2hldnJvbigpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSByZXBlYXRlciBpdGVtIGlzIGV4cGFuZGVkLCBvciB0aHJvd3MgYW4gZXJyb3IgaW5mb3JtaW5nIG9mIHRoZSBsYWNrIG9mIGNvbGxhcHNpYmlsaXR5LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlzRXhwYW5kZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgY2hldnJvbiA9IGF3YWl0IHRoaXMuI2dldENoZXZyb24oKTtcbiAgICBpZiAoY2hldnJvbikge1xuICAgICAgcmV0dXJuIChhd2FpdCBjaGV2cm9uLmdldERpcmVjdGlvbigpKSA9PT0gJ3VwJztcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0NvdWxkIG5vdCBkZXRlcm1pbmUgaWYgcmVwZWF0ZXIgaXRlbSBpcyBleHBhbmRlZCBiZWNhdXNlIGl0IGlzIG5vdCBjb2xsYXBzaWJsZS4nXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBhbmRzIHRoZSByZXBlYXRlciBpdGVtLCBvciBkb2VzIG5vdGhpbmcgaWYgYWxyZWFkeSBleHBhbmRlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBleHBhbmQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY2hldnJvbiA9IGF3YWl0IHRoaXMuI2dldENoZXZyb24oKTtcbiAgICBpZiAoY2hldnJvbikge1xuICAgICAgaWYgKChhd2FpdCBjaGV2cm9uLmdldERpcmVjdGlvbigpKSA9PT0gJ2Rvd24nKSB7XG4gICAgICAgIGF3YWl0IGNoZXZyb24udG9nZ2xlKCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdDb3VsZCBub3QgZXhwYW5kIHRoZSByZXBlYXRlciBpdGVtIGJlY2F1c2UgaXQgaXMgbm90IGNvbGxhcHNpYmxlLidcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbGxhcHNlcyB0aGUgcmVwZWF0ZXIgaXRlbSwgb3IgZG9lcyBub3RoaW5nIGlmIGFscmVhZHkgY29sbGFwc2VkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNvbGxhcHNlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNoZXZyb24gPSBhd2FpdCB0aGlzLiNnZXRDaGV2cm9uKCk7XG4gICAgaWYgKGNoZXZyb24pIHtcbiAgICAgIGlmICgoYXdhaXQgY2hldnJvbi5nZXREaXJlY3Rpb24oKSkgPT09ICd1cCcpIHtcbiAgICAgICAgYXdhaXQgY2hldnJvbi50b2dnbGUoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0NvdWxkIG5vdCBjb2xsYXBzZSB0aGUgcmVwZWF0ZXIgaXRlbSBiZWNhdXNlIGl0IGlzIG5vdCBjb2xsYXBzaWJsZS4nXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSByZXBlYXRlciBpdGVtIGlzIHJlb3JkZXJhYmxlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlzUmVvcmRlcmFibGUoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuICEhKGF3YWl0IHRoaXMuI2dldFJlb3JkZXJIYW5kbGUoKSk7XG4gIH1cblxuICAvKipcbiAgICogTW92ZXMgdGhlIHJlcGVhdGVyIGl0ZW0gdG8gdGhlIHRvcCBvZiB0aGUgbGlzdFxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNlbmRUb1RvcCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoYXdhaXQgdGhpcy5pc1Jlb3JkZXJhYmxlKCkpIHtcbiAgICAgIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRCYWNrVG9Ub3AoKSk/LmNsaWNrKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0NvdWxkIG5vdCBzZW5kIHRvIHRvcCBiZWNhdXNlIHRoZSByZXBlYXRlciBpcyBub3QgcmVvcmRlcmFibGUuJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -231,14 +231,14 @@ _SkyPagingFixture__debugEl = new WeakMap(), _SkyPagingFixture_fixture = new Weak
231
231
  });
232
232
  };
233
233
 
234
- var _SkyRepeaterItemHarness_getCheckbox, _SkyRepeaterItemHarness_getChevron, _SkyRepeaterItemHarness_getContent, _SkyRepeaterItemHarness_getReorderHandle, _SkyRepeaterItemHarness_getTitle;
234
+ var _SkyRepeaterItemHarness_getBackToTop, _SkyRepeaterItemHarness_getCheckbox, _SkyRepeaterItemHarness_getChevron, _SkyRepeaterItemHarness_getContent, _SkyRepeaterItemHarness_getReorderHandle, _SkyRepeaterItemHarness_getTitle;
235
235
  /**
236
236
  * Harness for interacting with a repeater item component in tests.
237
- * @internal
238
237
  */
239
238
  class SkyRepeaterItemHarness extends SkyComponentHarness {
240
239
  constructor() {
241
240
  super(...arguments);
241
+ _SkyRepeaterItemHarness_getBackToTop.set(this, this.locatorForOptional('button.sky-repeater-item-reorder-top'));
242
242
  _SkyRepeaterItemHarness_getCheckbox.set(this, this.locatorForOptional(SkyCheckboxHarness));
243
243
  _SkyRepeaterItemHarness_getChevron.set(this, this.locatorForOptional(SkyChevronHarness));
244
244
  _SkyRepeaterItemHarness_getContent.set(this, this.locatorFor('.sky-repeater-item-content'));
@@ -282,6 +282,30 @@ class SkyRepeaterItemHarness extends SkyComponentHarness {
282
282
  return this.locatorForOptional(query)();
283
283
  });
284
284
  }
285
+ /**
286
+ * Returns child harnesses.
287
+ */
288
+ queryHarnesses(harness) {
289
+ return __awaiter(this, void 0, void 0, function* () {
290
+ return this.locatorForAll(harness)();
291
+ });
292
+ }
293
+ /**
294
+ * Returns a child test element.
295
+ */
296
+ querySelector(selector) {
297
+ return __awaiter(this, void 0, void 0, function* () {
298
+ return this.locatorForOptional(selector)();
299
+ });
300
+ }
301
+ /**
302
+ * Returns child test elements.
303
+ */
304
+ querySelectorAll(selector) {
305
+ return __awaiter(this, void 0, void 0, function* () {
306
+ return this.locatorForAll(selector)();
307
+ });
308
+ }
285
309
  /**
286
310
  * Selects the repeater item.
287
311
  */
@@ -380,8 +404,22 @@ class SkyRepeaterItemHarness extends SkyComponentHarness {
380
404
  return !!(yield __classPrivateFieldGet(this, _SkyRepeaterItemHarness_getReorderHandle, "f").call(this));
381
405
  });
382
406
  }
407
+ /**
408
+ * Moves the repeater item to the top of the list
409
+ */
410
+ sendToTop() {
411
+ var _a;
412
+ return __awaiter(this, void 0, void 0, function* () {
413
+ if (yield this.isReorderable()) {
414
+ yield ((_a = (yield __classPrivateFieldGet(this, _SkyRepeaterItemHarness_getBackToTop, "f").call(this))) === null || _a === void 0 ? void 0 : _a.click());
415
+ }
416
+ else {
417
+ throw new Error('Could not send to top because the repeater is not reorderable.');
418
+ }
419
+ });
420
+ }
383
421
  }
384
- _SkyRepeaterItemHarness_getCheckbox = new WeakMap(), _SkyRepeaterItemHarness_getChevron = new WeakMap(), _SkyRepeaterItemHarness_getContent = new WeakMap(), _SkyRepeaterItemHarness_getReorderHandle = new WeakMap(), _SkyRepeaterItemHarness_getTitle = new WeakMap();
422
+ _SkyRepeaterItemHarness_getBackToTop = new WeakMap(), _SkyRepeaterItemHarness_getCheckbox = new WeakMap(), _SkyRepeaterItemHarness_getChevron = new WeakMap(), _SkyRepeaterItemHarness_getContent = new WeakMap(), _SkyRepeaterItemHarness_getReorderHandle = new WeakMap(), _SkyRepeaterItemHarness_getTitle = new WeakMap();
385
423
  /**
386
424
  * @internal
387
425
  */
@@ -389,7 +427,6 @@ SkyRepeaterItemHarness.hostSelector = 'sky-repeater-item';
389
427
 
390
428
  /**
391
429
  * Harness for interacting with a repeater component in tests.
392
- * @internal
393
430
  */
394
431
  class SkyRepeaterHarness extends SkyComponentHarness {
395
432
  /**