@fundamental-ngx/core 0.43.3 → 0.43.5

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.
Files changed (32) hide show
  1. package/button/base-button.d.ts +6 -6
  2. package/date-picker/date-picker.component.d.ts +15 -2
  3. package/datetime-picker/datetime-picker.component.d.ts +6 -0
  4. package/esm2020/button/base-button.mjs +8 -9
  5. package/esm2020/carousel/carousel.service.mjs +5 -1
  6. package/esm2020/date-picker/date-picker.component.mjs +51 -22
  7. package/esm2020/datetime-picker/datetime-picker.component.mjs +29 -17
  8. package/esm2020/switch/switch.component.mjs +3 -3
  9. package/fesm2015/fundamental-ngx-core-button.mjs +7 -8
  10. package/fesm2015/fundamental-ngx-core-button.mjs.map +1 -1
  11. package/fesm2015/fundamental-ngx-core-carousel.mjs +4 -0
  12. package/fesm2015/fundamental-ngx-core-carousel.mjs.map +1 -1
  13. package/fesm2015/fundamental-ngx-core-date-picker.mjs +51 -21
  14. package/fesm2015/fundamental-ngx-core-date-picker.mjs.map +1 -1
  15. package/fesm2015/fundamental-ngx-core-datetime-picker.mjs +28 -16
  16. package/fesm2015/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
  17. package/fesm2015/fundamental-ngx-core-switch.mjs +2 -2
  18. package/fesm2015/fundamental-ngx-core-switch.mjs.map +1 -1
  19. package/fesm2020/fundamental-ngx-core-button.mjs +7 -8
  20. package/fesm2020/fundamental-ngx-core-button.mjs.map +1 -1
  21. package/fesm2020/fundamental-ngx-core-carousel.mjs +4 -0
  22. package/fesm2020/fundamental-ngx-core-carousel.mjs.map +1 -1
  23. package/fesm2020/fundamental-ngx-core-date-picker.mjs +50 -21
  24. package/fesm2020/fundamental-ngx-core-date-picker.mjs.map +1 -1
  25. package/fesm2020/fundamental-ngx-core-datetime-picker.mjs +28 -16
  26. package/fesm2020/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
  27. package/fesm2020/fundamental-ngx-core-switch.mjs +2 -2
  28. package/fesm2020/fundamental-ngx-core-switch.mjs.map +1 -1
  29. package/fundamental-ngx-core-v0.43.5.tgz +0 -0
  30. package/package.json +3 -3
  31. package/schematics/add-dependencies/index.js +4 -4
  32. package/fundamental-ngx-core-v0.43.3.tgz +0 -0
@@ -31,6 +31,12 @@ export declare class BaseButton {
31
31
  fdMenu: boolean;
32
32
  /** adding native aria-label to the component */
33
33
  ariaLabel: Nullable<string>;
34
+ /** @hidden */
35
+ _toggled: boolean;
36
+ /** @hidden */
37
+ _disabled: boolean;
38
+ /** @hidden */
39
+ _ariaDisabled: boolean;
34
40
  /** Whether button is in toggled state. */
35
41
  set toggled(value: BooleanInput);
36
42
  get toggled(): boolean;
@@ -44,12 +50,6 @@ export declare class BaseButton {
44
50
  */
45
51
  set ariaDisabled(value: BooleanInput);
46
52
  get ariaDisabled(): boolean;
47
- /** @hidden */
48
- _disabled: boolean;
49
- /** @hidden */
50
- _ariaDisabled: boolean;
51
- /** @hidden */
52
- _toggled: boolean;
53
53
  static ɵfac: i0.ɵɵFactoryDeclaration<BaseButton, never>;
54
54
  static ɵdir: i0.ɵɵDirectiveDeclaration<BaseButton, never, never, { "type": "type"; "glyphPosition": "glyphPosition"; "glyph": "glyph"; "fdType": "fdType"; "label": "label"; "fdMenu": "fdMenu"; "ariaLabel": "ariaLabel"; "toggled": "toggled"; "disabled": "disabled"; "ariaDisabled": "aria-disabled"; }, {}, never, never, false, never>;
55
55
  }
@@ -1,4 +1,4 @@
1
- import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, OnInit } from '@angular/core';
1
+ import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
2
2
  import { ControlValueAccessor, Validator } from '@angular/forms';
3
3
  import { Placement, SpecialDayRule } from '@fundamental-ngx/core/shared';
4
4
  import { CalendarComponent, CalendarType, CalendarYearGrid, DateRange, DaysOfWeek, FdCalendarView, NavigationButtonDisableFunction } from '@fundamental-ngx/core/calendar';
@@ -156,7 +156,10 @@ export declare class DatePickerComponent<D> implements OnInit, OnDestroy, AfterV
156
156
  */
157
157
  showWeekNumbers: boolean;
158
158
  /** Whether the date picker is open. Can be used through two-way binding. */
159
- isOpen: boolean;
159
+ set isOpen(value: boolean);
160
+ get isOpen(): boolean;
161
+ /** @hidden */
162
+ private _isOpen;
160
163
  /** Should date picker be inlined. */
161
164
  inline: boolean;
162
165
  /** aria-labelledby for element describing date-picker. */
@@ -182,6 +185,8 @@ export declare class DatePickerComponent<D> implements OnInit, OnDestroy, AfterV
182
185
  readonly selectedRangeDateChange: EventEmitter<DateRange<D>>;
183
186
  /** Event thrown every time calendar active view is changed */
184
187
  readonly activeViewChange: EventEmitter<FdCalendarView>;
188
+ /** @hideen */
189
+ private readonly _calendars;
185
190
  /** @hidden */
186
191
  _calendarComponent: CalendarComponent<D>;
187
192
  /** @hidden */
@@ -193,8 +198,12 @@ export declare class DatePickerComponent<D> implements OnInit, OnDestroy, AfterV
193
198
  /** @hidden Whether the date input is invalid */
194
199
  _isInvalidDateInput: boolean;
195
200
  /** @hidden */
201
+ _showPopoverContents: boolean;
202
+ /** @hidden */
196
203
  readonly _formValueStateMessageId: string;
197
204
  /** @hidden */
205
+ private _calendarPendingDate;
206
+ /** @hidden */
198
207
  private readonly _onDestroy$;
199
208
  /** @hidden */
200
209
  private _subscriptions;
@@ -234,6 +243,8 @@ export declare class DatePickerComponent<D> implements OnInit, OnDestroy, AfterV
234
243
  /** @hidden */
235
244
  ngOnInit(): void;
236
245
  /** @hidden */
246
+ ngOnChanges(changes: SimpleChanges): void;
247
+ /** @hidden */
237
248
  ngAfterViewInit(): void;
238
249
  /** @hidden */
239
250
  ngOnDestroy(): void;
@@ -328,6 +339,8 @@ export declare class DatePickerComponent<D> implements OnInit, OnDestroy, AfterV
328
339
  private _formatDateRange;
329
340
  /** @hidden */
330
341
  private _InitialiseVariablesInMessageService;
342
+ /** @hidden */
343
+ private _setOpenState;
331
344
  static ɵfac: i0.ɵɵFactoryDeclaration<DatePickerComponent<any>, [null, { optional: true; }, { optional: true; }, null]>;
332
345
  static ɵcmp: i0.ɵɵComponentDeclaration<DatePickerComponent<any>, "fd-date-picker", never, { "type": "type"; "placeholder": "placeholder"; "inputId": "inputId"; "required": "required"; "message": "message"; "messageTriggers": "messageTriggers"; "selectedDate": "selectedDate"; "selectedRangeDate": "selectedRangeDate"; "startingDayOfWeek": "startingDayOfWeek"; "rangeHoverEffect": "rangeHoverEffect"; "useValidation": "useValidation"; "dateInputLabel": "dateInputLabel"; "dateRangeInputLabel": "dateRangeInputLabel"; "displayCalendarToggleLabel": "displayCalendarToggleLabel"; "valueStateSuccessMessage": "valueStateSuccessMessage"; "valueStateInformationMessage": "valueStateInformationMessage"; "valueStateWarningMessage": "valueStateWarningMessage"; "valueStateErrorMessage": "valueStateErrorMessage"; "allowNull": "allowNull"; "activeView": "activeView"; "placement": "placement"; "appendTo": "appendTo"; "disabled": "disabled"; "closeOnDateChoose": "closeOnDateChoose"; "showTodayButton": "showTodayButton"; "todayButtonLabel": "todayButtonLabel"; "previousButtonDisableFunction": "previousButtonDisableFunction"; "nextButtonDisableFunction": "nextButtonDisableFunction"; "state": "state"; "buttonFocusable": "buttonFocusable"; "specialDaysRules": "specialDaysRules"; "yearGrid": "yearGrid"; "aggregatedYearGrid": "aggregatedYearGrid"; "markWeekends": "markWeekends"; "showWeekNumbers": "showWeekNumbers"; "isOpen": "isOpen"; "inline": "inline"; "ariaLabelledBy": "ariaLabelledBy"; "processInputOnBlur": "processInputOnBlur"; "preventScrollOnFocus": "preventScrollOnFocus"; "disableFunction": "disableFunction"; "disableRangeStartFunction": "disableRangeStartFunction"; "disableRangeEndFunction": "disableRangeEndFunction"; }, { "isOpenChange": "isOpenChange"; "selectedDateChange": "selectedDateChange"; "selectedRangeDateChange": "selectedRangeDateChange"; "activeViewChange": "activeViewChange"; }, never, ["*"], false, never>;
333
346
  }
@@ -190,6 +190,8 @@ export declare class DatetimePickerComponent<D> implements OnInit, OnDestroy, On
190
190
  /** Indicates when datetime input is in invalid state. */
191
191
  get isInvalidDateInput(): boolean;
192
192
  /** @hidden Reference to the inner calendar component. */
193
+ private set _calendarCmp(value);
194
+ /** @hidden */
193
195
  _calendarComponent: CalendarComponent<D>;
194
196
  /** @hidden */
195
197
  _inputGroupElement: ElementRef;
@@ -218,6 +220,10 @@ export declare class DatetimePickerComponent<D> implements OnInit, OnDestroy, On
218
220
  /** @hidden whether to display date or time in mobile mode */
219
221
  _displayType: 'date' | 'time';
220
222
  /** @hidden */
223
+ _showPopoverContents: boolean;
224
+ /** @hidden */
225
+ private _calendarPendingDate;
226
+ /** @hidden */
221
227
  private readonly _onDestroy$;
222
228
  /** @hidden */
223
229
  private _subscriptions;
@@ -1,3 +1,4 @@
1
+ /* eslint-disable @typescript-eslint/member-ordering */
1
2
  import { Directive, HostBinding, Input } from '@angular/core';
2
3
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
3
4
  import * as i0 from "@angular/core";
@@ -21,8 +22,6 @@ export class BaseButton {
21
22
  this.fdMenu = false;
22
23
  /** @hidden */
23
24
  this._disabled = false;
24
- /** @hidden */
25
- this._toggled = false;
26
25
  }
27
26
  /** Whether button is in toggled state. */
28
27
  set toggled(value) {
@@ -68,6 +67,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
68
67
  type: Input
69
68
  }], ariaLabel: [{
70
69
  type: Input
70
+ }], _toggled: [{
71
+ type: HostBinding,
72
+ args: ['class.fd-button--toggled']
73
+ }, {
74
+ type: HostBinding,
75
+ args: ['attr.aria-pressed']
71
76
  }], toggled: [{
72
77
  type: Input
73
78
  }], disabled: [{
@@ -75,11 +80,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
75
80
  }], ariaDisabled: [{
76
81
  type: Input,
77
82
  args: ['aria-disabled']
78
- }], _toggled: [{
79
- type: HostBinding,
80
- args: ['class.fd-button--toggled']
81
- }, {
82
- type: HostBinding,
83
- args: ['attr.aria-pressed']
84
83
  }] } });
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1idXR0b24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9idXR0b24vYmFzZS1idXR0b24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFtQjVFLE1BQU0sT0FBTyxVQUFVO0lBRHZCO1FBRUk7O1dBRUc7UUFFSCxTQUFJLEdBQXFCLFFBQVEsQ0FBQztRQUVsQyx3Q0FBd0M7UUFFeEMsa0JBQWEsR0FBa0IsUUFBUSxDQUFDO1FBU3hDOzs7O1dBSUc7UUFFSCxXQUFNLEdBQWUsVUFBVSxDQUFDO1FBUWhDOztXQUVHO1FBRUgsV0FBTSxHQUFHLEtBQUssQ0FBQztRQXFDZixjQUFjO1FBQ2QsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUtsQixjQUFjO1FBR2QsYUFBUSxHQUFHLEtBQUssQ0FBQztLQUNwQjtJQXpDRywwQ0FBMEM7SUFDMUMsSUFDSSxPQUFPLENBQUMsS0FBbUI7UUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBQ0QsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQ0ksUUFBUSxDQUFDLEtBQW1CO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUNELElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUNJLFlBQVksQ0FBQyxLQUFtQjtRQUNoQyxJQUFJLENBQUMsYUFBYSxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFDRCxJQUFJLFlBQVk7UUFDWixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQzs7dUdBdkVRLFVBQVU7MkZBQVYsVUFBVTsyRkFBVixVQUFVO2tCQUR0QixTQUFTOzhCQU1OLElBQUk7c0JBREgsS0FBSztnQkFLTixhQUFhO3NCQURaLEtBQUs7Z0JBUU4sS0FBSztzQkFESixLQUFLO2dCQVNOLE1BQU07c0JBREwsS0FBSztnQkFPTixLQUFLO3NCQURKLEtBQUs7Z0JBT04sTUFBTTtzQkFETCxLQUFLO2dCQUtOLFNBQVM7c0JBRFIsS0FBSztnQkFLRixPQUFPO3NCQURWLEtBQUs7Z0JBWUYsUUFBUTtzQkFEWCxLQUFLO2dCQVlGLFlBQVk7c0JBRGYsS0FBSzt1QkFBQyxlQUFlO2dCQWlCdEIsUUFBUTtzQkFGUCxXQUFXO3VCQUFDLDBCQUEwQjs7c0JBQ3RDLFdBQVc7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0QmluZGluZywgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcblxuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5cbmV4cG9ydCB0eXBlIEdseXBoUG9zaXRpb24gPSAnYmVmb3JlJyB8ICdhZnRlcic7XG5cbmV4cG9ydCB0eXBlIEJ1dHRvblR5cGUgPVxuICAgIHwgJydcbiAgICB8ICdzdGFuZGFyZCdcbiAgICB8ICdwb3NpdGl2ZSdcbiAgICB8ICduZWdhdGl2ZSdcbiAgICB8ICdhdHRlbnRpb24nXG4gICAgfCAnaGFsZidcbiAgICB8ICdnaG9zdCdcbiAgICB8ICd0cmFuc3BhcmVudCdcbiAgICB8ICdlbXBoYXNpemVkJ1xuICAgIHwgJ21lbnUnO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBCYXNlQnV0dG9uIHtcbiAgICAvKipcbiAgICAgKiBOYXRpdmUgdHlwZSBvZiBidXR0b24gZWxlbWVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdHlwZTogTnVsbGFibGU8c3RyaW5nPiA9ICdidXR0b24nO1xuXG4gICAgLyoqIFBvc2l0aW9uIG9mIGdseXBoIHJlbGF0ZWQgdG8gdGV4dCAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2x5cGhQb3NpdGlvbjogR2x5cGhQb3NpdGlvbiA9ICdiZWZvcmUnO1xuXG4gICAgLyoqIFRoZSBpY29uIHRvIGluY2x1ZGUgaW4gdGhlIGJ1dHRvbi4gU2VlIHRoZSBpY29uIHBhZ2UgZm9yIHRoZSBsaXN0IG9mIGljb25zLlxuICAgICAqIFNldHRlciBpcyB1c2VkIHRvIGNvbnRyb2wgd2hlbiBjc3MgY2xhc3MgaGF2ZSB0byBiZSByZWJ1aWxkZWQuXG4gICAgICogRGVmYXVsdCB2YWx1ZSBpcyBzZXQgdG8gJycuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnbHlwaDogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBUaGUgdHlwZSBvZiB0aGUgYnV0dG9uLiBUeXBlcyBpbmNsdWRlOlxuICAgICAqICdzdGFuZGFyZCcgfCAncG9zaXRpdmUnIHwgJ25lZ2F0aXZlJyB8ICdhdHRlbnRpb24nIHwgJ2hhbGYnIHwgJ2dob3N0JyB8ICd0cmFuc3BhcmVudCcgfCAnZW1waGFzaXplZCcgfCAnbWVudScuXG4gICAgICogTGVhdmUgZW1wdHkgZm9yIGRlZmF1bHQgKFN0YW5kYXJkIGJ1dHRvbikuJ1xuICAgICAqIERlZmF1bHQgdmFsdWUgaXMgc2V0IHRvICdzdGFuZGFyZCdcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZkVHlwZTogQnV0dG9uVHlwZSA9ICdzdGFuZGFyZCc7XG5cbiAgICAvKipcbiAgICAgKiBUZXh0IHJlbmRlcmVkIGluc2lkZSBidXR0b24gY29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBsYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gYXBwbHkgbWVudSBtb2RlIHRvIHRoZSBidXR0b24uXG4gICAgICogRGVmYXVsdCB2YWx1ZSBpcyBzZXQgdG8gZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZkTWVudSA9IGZhbHNlO1xuXG4gICAgLyoqIGFkZGluZyBuYXRpdmUgYXJpYS1sYWJlbCB0byB0aGUgY29tcG9uZW50ICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWw6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogV2hldGhlciBidXR0b24gaXMgaW4gdG9nZ2xlZCBzdGF0ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0b2dnbGVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fdG9nZ2xlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIGdldCB0b2dnbGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdG9nZ2xlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOYXRpdmUgZGlzYWJsZWQgYXR0cmlidXRlIG9mIGJ1dHRvbiBlbGVtZW50XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5hdGl2ZSBhcmlhLWRpc2FibGVkIGF0dHJpYnV0ZSBvZiBidXR0b24gZWxlbWVudFxuICAgICAqL1xuICAgIEBJbnB1dCgnYXJpYS1kaXNhYmxlZCcpXG4gICAgc2V0IGFyaWFEaXNhYmxlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2FyaWFEaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIGdldCBhcmlhRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hcmlhRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2FyaWFEaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC1idXR0b24tLXRvZ2dsZWQnKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLXByZXNzZWQnKVxuICAgIF90b2dnbGVkID0gZmFsc2U7XG59XG4iXX0=
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1idXR0b24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9idXR0b24vYmFzZS1idXR0b24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBbUI1RSxNQUFNLE9BQU8sVUFBVTtJQUR2QjtRQUVJOztXQUVHO1FBRUgsU0FBSSxHQUFxQixRQUFRLENBQUM7UUFFbEMsd0NBQXdDO1FBRXhDLGtCQUFhLEdBQWtCLFFBQVEsQ0FBQztRQVN4Qzs7OztXQUlHO1FBRUgsV0FBTSxHQUFlLFVBQVUsQ0FBQztRQVFoQzs7V0FFRztRQUVILFdBQU0sR0FBRyxLQUFLLENBQUM7UUFXZixjQUFjO1FBQ2QsY0FBUyxHQUFHLEtBQUssQ0FBQztLQW1DckI7SUE5QkcsMENBQTBDO0lBQzFDLElBQ0ksT0FBTyxDQUFDLEtBQW1CO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUNELElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUNJLFFBQVEsQ0FBQyxLQUFtQjtRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFDSSxZQUFZLENBQUMsS0FBbUI7UUFDaEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBQ0QsSUFBSSxZQUFZO1FBQ1osT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzlCLENBQUM7O3VHQWxGUSxVQUFVOzJGQUFWLFVBQVU7MkZBQVYsVUFBVTtrQkFEdEIsU0FBUzs4QkFNTixJQUFJO3NCQURILEtBQUs7Z0JBS04sYUFBYTtzQkFEWixLQUFLO2dCQVFOLEtBQUs7c0JBREosS0FBSztnQkFTTixNQUFNO3NCQURMLEtBQUs7Z0JBT04sS0FBSztzQkFESixLQUFLO2dCQU9OLE1BQU07c0JBREwsS0FBSztnQkFLTixTQUFTO3NCQURSLEtBQUs7Z0JBTU4sUUFBUTtzQkFGUCxXQUFXO3VCQUFDLDBCQUEwQjs7c0JBQ3RDLFdBQVc7dUJBQUMsbUJBQW1CO2dCQVc1QixPQUFPO3NCQURWLEtBQUs7Z0JBWUYsUUFBUTtzQkFEWCxLQUFLO2dCQVlGLFlBQVk7c0JBRGYsS0FBSzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZyAqL1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0QmluZGluZywgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcblxuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5cbmV4cG9ydCB0eXBlIEdseXBoUG9zaXRpb24gPSAnYmVmb3JlJyB8ICdhZnRlcic7XG5cbmV4cG9ydCB0eXBlIEJ1dHRvblR5cGUgPVxuICAgIHwgJydcbiAgICB8ICdzdGFuZGFyZCdcbiAgICB8ICdwb3NpdGl2ZSdcbiAgICB8ICduZWdhdGl2ZSdcbiAgICB8ICdhdHRlbnRpb24nXG4gICAgfCAnaGFsZidcbiAgICB8ICdnaG9zdCdcbiAgICB8ICd0cmFuc3BhcmVudCdcbiAgICB8ICdlbXBoYXNpemVkJ1xuICAgIHwgJ21lbnUnO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBCYXNlQnV0dG9uIHtcbiAgICAvKipcbiAgICAgKiBOYXRpdmUgdHlwZSBvZiBidXR0b24gZWxlbWVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdHlwZTogTnVsbGFibGU8c3RyaW5nPiA9ICdidXR0b24nO1xuXG4gICAgLyoqIFBvc2l0aW9uIG9mIGdseXBoIHJlbGF0ZWQgdG8gdGV4dCAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2x5cGhQb3NpdGlvbjogR2x5cGhQb3NpdGlvbiA9ICdiZWZvcmUnO1xuXG4gICAgLyoqIFRoZSBpY29uIHRvIGluY2x1ZGUgaW4gdGhlIGJ1dHRvbi4gU2VlIHRoZSBpY29uIHBhZ2UgZm9yIHRoZSBsaXN0IG9mIGljb25zLlxuICAgICAqIFNldHRlciBpcyB1c2VkIHRvIGNvbnRyb2wgd2hlbiBjc3MgY2xhc3MgaGF2ZSB0byBiZSByZWJ1aWxkZWQuXG4gICAgICogRGVmYXVsdCB2YWx1ZSBpcyBzZXQgdG8gJycuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnbHlwaDogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBUaGUgdHlwZSBvZiB0aGUgYnV0dG9uLiBUeXBlcyBpbmNsdWRlOlxuICAgICAqICdzdGFuZGFyZCcgfCAncG9zaXRpdmUnIHwgJ25lZ2F0aXZlJyB8ICdhdHRlbnRpb24nIHwgJ2hhbGYnIHwgJ2dob3N0JyB8ICd0cmFuc3BhcmVudCcgfCAnZW1waGFzaXplZCcgfCAnbWVudScuXG4gICAgICogTGVhdmUgZW1wdHkgZm9yIGRlZmF1bHQgKFN0YW5kYXJkIGJ1dHRvbikuJ1xuICAgICAqIERlZmF1bHQgdmFsdWUgaXMgc2V0IHRvICdzdGFuZGFyZCdcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZkVHlwZTogQnV0dG9uVHlwZSA9ICdzdGFuZGFyZCc7XG5cbiAgICAvKipcbiAgICAgKiBUZXh0IHJlbmRlcmVkIGluc2lkZSBidXR0b24gY29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBsYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gYXBwbHkgbWVudSBtb2RlIHRvIHRoZSBidXR0b24uXG4gICAgICogRGVmYXVsdCB2YWx1ZSBpcyBzZXQgdG8gZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZkTWVudSA9IGZhbHNlO1xuXG4gICAgLyoqIGFkZGluZyBuYXRpdmUgYXJpYS1sYWJlbCB0byB0aGUgY29tcG9uZW50ICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWw6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtYnV0dG9uLS10b2dnbGVkJylcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1wcmVzc2VkJylcbiAgICBfdG9nZ2xlZDogYm9vbGVhbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hcmlhRGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICAvKiogV2hldGhlciBidXR0b24gaXMgaW4gdG9nZ2xlZCBzdGF0ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0b2dnbGVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fdG9nZ2xlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIGdldCB0b2dnbGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdG9nZ2xlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOYXRpdmUgZGlzYWJsZWQgYXR0cmlidXRlIG9mIGJ1dHRvbiBlbGVtZW50XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5hdGl2ZSBhcmlhLWRpc2FibGVkIGF0dHJpYnV0ZSBvZiBidXR0b24gZWxlbWVudFxuICAgICAqL1xuICAgIEBJbnB1dCgnYXJpYS1kaXNhYmxlZCcpXG4gICAgc2V0IGFyaWFEaXNhYmxlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2FyaWFEaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIGdldCBhcmlhRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hcmlhRGlzYWJsZWQ7XG4gICAgfVxufVxuIl19
@@ -112,6 +112,10 @@ export class CarouselService {
112
112
  }
113
113
  /** @hidden */
114
114
  _centerActive(index) {
115
+ const size = this._getSize(this.items.first);
116
+ if (isNaN(size)) {
117
+ return;
118
+ }
115
119
  const middleIndex = Math.ceil(this.items.length / 2);
116
120
  const offset = Math.ceil(this.elementsAtOnce / 2);
117
121
  const missingItems = index + offset - middleIndex;
@@ -330,4 +334,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
330
334
  type: Inject,
331
335
  args: [DOCUMENT]
332
336
  }] }]; } });
333
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2Nhcm91c2VsL2Nhcm91c2VsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFlBQVksRUFBRSxNQUFNLEVBQXdCLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFHM0MsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsT0FBTyxDQUFDO0FBMEJuRCxlQUFlO0FBSWYsTUFBTSxPQUFPLGVBQWU7SUFtQnhCLHFDQUFxQztJQUNyQyxJQUFJLG1CQUFtQixDQUFDLG1CQUEyQjtRQUMvQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsbUJBQW1CLENBQUM7SUFDcEQsQ0FBQztJQUNELElBQUksbUJBQW1CO1FBQ25CLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ3JDLENBQUM7SUFFRCxjQUFjO0lBQ2QsSUFBWSxjQUFjO1FBQ3RCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsY0FBYyxJQUFJLENBQUMsQ0FBQztRQUU3QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUE0QkQsY0FBYztJQUNkLFlBQStDLFNBQTBCO1FBQTFCLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBNUR6RSxzR0FBc0c7UUFDN0YscUJBQWdCLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7UUFFL0UsbURBQW1EO1FBQzFDLGtCQUFhLEdBQStCLElBQUksWUFBWSxF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Q0FBQyxvQkFBb0IsQ0FBQztJQUM5QyxDQUFDO0lBRUQsY0FBYztJQUNOLGtCQUFrQixDQUFDLEtBQThCO1FBQ3JELElBQUksV0FBK0IsQ0FBQztRQUVwQyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDM0IsV0FBVyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM3RDthQUFNO1lBQ0gsV0FBVyxHQUFHLEtBQUssQ0FBQztTQUN2QjtRQUVELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7SUFDeEUsQ0FBQztJQUVELGNBQWM7SUFDTixhQUFhLENBQUMsS0FBOEI7UUFDaEQsT0FBTyxNQUFNLENBQUMsVUFBVSxJQUFJLEtBQUssWUFBWSxVQUFVLENBQUM7SUFDNUQsQ0FBQzs7NEdBOVpRLGVBQWUsa0JBNkRKLFFBQVE7Z0hBN0RuQixlQUFlLGNBRlosTUFBTTsyRkFFVCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBOERnQixNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEluamVjdCwgT25EZXN0cm95LCBRdWVyeUxpc3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGZyb21FdmVudCwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9UUkFOU0lUSU9OX0RVUkFUSU9OID0gJzE1MG1zJztcblxuZXhwb3J0IGludGVyZmFjZSBDYXJvdXNlbEl0ZW1JbnRlcmZhY2Uge1xuICAgIGVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICAgIGdldEhlaWdodCgpOiBudW1iZXI7XG4gICAgZ2V0V2lkdGgoKTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhcm91c2VsQ29uZmlnIHtcbiAgICAvKiogRGVmaW5lcyBpZiBjYXJvdXNlbCBpdGVtcyBhcmUgcGxhY2VkIHZlcnRpY2FsbHkgKi9cbiAgICB2ZXJ0aWNhbD86IGJvb2xlYW47XG4gICAgLyoqIEFtb3VudCBvZiB2aXNpYmxlIGVsZW1lbnRzIGluIGNhcm91c2VsICovXG4gICAgZWxlbWVudHNBdE9uY2U/OiBudW1iZXI7XG4gICAgLyoqIERlZmluZXMgaWYgc3VwcG9ydCBmb3IgZ2VzdHVyZXMsIGxpa2UgdG91Y2ggc3dpcGUgb3IgbW91c2UgZHJhZyBzaG91bGQgYmUgZW5hYmxlZCAqL1xuICAgIGdlc3R1cmVTdXBwb3J0PzogYm9vbGVhbjtcbiAgICAvKiogRGVmaW5lcyBpZiBjYXJvdXNlbCBzaG91bGQgbW92ZSBlbGVtZW50cyB0byBzaWRlcy4gSXQgYWxsb3dzIHRvIHNsaWRlIGluZmluaXRlbHkgaW4gb25lIGRpcmVjdGlvbiAqL1xuICAgIGluZmluaXRlPzogYm9vbGVhbjtcbiAgICAvKiogVHJhbnNpdGlvbiB0aW1lIG9mIENTUyB0cmFuc2xhdGUsIGAxNTBtc2AgYnkgZGVmYXVsdCAqL1xuICAgIHRyYW5zaXRpb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFuRW5kT3V0cHV0IHtcbiAgICBpdGVtOiBDYXJvdXNlbEl0ZW1JbnRlcmZhY2U7XG4gICAgYWZ0ZXI6IGJvb2xlYW47XG59XG5cbi8qKiBAZHluYW1pYyAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDYXJvdXNlbFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIC8qKiBFdmVudCB0aHJvd24gd2hlbiBlbGVtZW50IGlzIGRyYWdnZWQuIEVtaXRzIFwidHJ1ZVwiIHdoZW4gZHJhZyBzdGFydHMgYW5kIFwiZmFsc2VcIiB3aGVuIGRyYWcgZW5kcy4gKi9cbiAgICByZWFkb25seSBkcmFnU3RhdGVDaGFuZ2UkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKiogRXZlbnQgdGhyb3duLCB3aGVuIGFjdGl2ZSBlbGVtZW50IGlzIGNoYW5nZWQgKi9cbiAgICByZWFkb25seSBhY3RpdmVDaGFuZ2UkOiBFdmVudEVtaXR0ZXI8UGFuRW5kT3V0cHV0PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGFuRW5kT3V0cHV0PigpO1xuXG4gICAgLyoqIENvbmZpZ3VyYXRpb24gZm9yIGNhcm91c2VsICovXG4gICAgY29uZmlnOiBDYXJvdXNlbENvbmZpZztcblxuICAgIC8qKiBJbml0aWFsIGFjdGl2ZSBpdGVtIG9mIGNhcm91c2VsLCBwb3NpdGlvbiBmaXJzdCArIG9mZnNldCAqL1xuICAgIGFjdGl2ZTogTnVsbGFibGU8Q2Fyb3VzZWxJdGVtSW50ZXJmYWNlPjtcblxuICAgIC8qKiBTZXQgdG8gdHJ1ZSBmb3IgcnRsIG1vZGUgKi9cbiAgICBpc1J0bCA9IGZhbHNlO1xuXG4gICAgLyoqIGNhcm91c2VsIGl0ZW1zIHF1ZXJ5IGxpc3QgKi9cbiAgICBpdGVtczogUXVlcnlMaXN0PENhcm91c2VsSXRlbUludGVyZmFjZT47XG5cbiAgICAvKiogQ3VycmVudCB0cmFuc2l0aW9uIHZhbHVlIGluIHB4ICovXG4gICAgc2V0IGN1cnJlbnRUcmFuc2l0aW9uUHgoY3VycmVudFRyYW5zaXRpb25QeDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRUcmFuc2l0aW9uUHggPSBjdXJyZW50VHJhbnNpdGlvblB4O1xuICAgIH1cbiAgICBnZXQgY3VycmVudFRyYW5zaXRpb25QeCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFRyYW5zaXRpb25QeDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgZ2V0IGVsZW1lbnRzQXRPbmNlKCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IG51bSA9IHRoaXMuY29uZmlnPy5lbGVtZW50c0F0T25jZSA/PyAxO1xuXG4gICAgICAgIHJldHVybiBNYXRoLm1heCgxLCBudW0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGFzdERpc3RhbmNlID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY3VycmVudFRyYW5zaXRpb25QeCA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2VsZW1lbnQ6IEhUTUxFbGVtZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0aWFsRHJhZ1Bvc2l0aW9uID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGFzdERyYWdQb3NpdGlvbiA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3RlblRvTW91c2VNb3ZlID0gZmFsc2U7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kcmFnU3RhcnRlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEFuIFJ4SlMgU3ViamVjdCB0aGF0IHdpbGwga2lsbCB0aGUgZGF0YSBzdHJlYW0gdXBvbiBjb21wb25lbnTigJlzIGRlc3RydWN0aW9uIChmb3IgdW5zdWJzY3JpYmluZylcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vbkRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSByZWFkb25seSBfZG9jdW1lbnQ6IERvY3VtZW50IHwgbnVsbCkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG5cbiAgICAgICAgdGhpcy5hY3RpdmVDaGFuZ2UkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuZHJhZ1N0YXRlQ2hhbmdlJC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBzZXQgaW5pdGlhbCB2YWx1ZXMgZm9yIHRoZSBzZXJ2aWNlICovXG4gICAgaW5pdGlhbGlzZShcbiAgICAgICAgY29uZmlnOiBDYXJvdXNlbENvbmZpZyxcbiAgICAgICAgaXRlbXM6IFF1ZXJ5TGlzdDxDYXJvdXNlbEl0ZW1JbnRlcmZhY2U+LFxuICAgICAgICBsaXN0RWxlbWVudFJlZmVyZW5jZTogRWxlbWVudFJlZlxuICAgICk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICAgICAgdGhpcy5zZXRFbGVtZW50KGxpc3RFbGVtZW50UmVmZXJlbmNlKTtcbiAgICAgICAgdGhpcy5zZXRJdGVtcyhpdGVtcyk7XG5cbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmdlc3R1cmVTdXBwb3J0KSB7XG4gICAgICAgICAgICB0aGlzLl9zZXR1cEdlc3R1cmVzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogdXBkYXRlIGNvbmZpZyB2YWx1ZSBmb3IgdGhlIHNlcnZpY2UgKi9cbiAgICB1cGRhdGVDb25maWcoY29uZmlnOiBDYXJvdXNlbENvbmZpZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB9XG5cbiAgICAvKiogc2V0IGVsZW1lbnQgcmVmICovXG4gICAgc2V0RWxlbWVudChlbGVtZW50UmVmOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqIHNldCBpdGVtcyBhbmQgYXNzaWduIGFjdGl2ZSBpdGVtLCBpZiBub3QgYWxyZWFkeSB0aGVyZSAqL1xuICAgIHNldEl0ZW1zKGl0ZW1zOiBRdWVyeUxpc3Q8Q2Fyb3VzZWxJdGVtSW50ZXJmYWNlPik6IHZvaWQge1xuICAgICAgICB0aGlzLml0ZW1zID0gaXRlbXM7XG5cbiAgICAgICAgaWYgKCF0aGlzLmFjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSB0aGlzLml0ZW1zLmZpcnN0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIENoYW5nZSBhY3RpdmUgZWxlbWVudCAqL1xuICAgIGdvVG9JdGVtKGl0ZW06IENhcm91c2VsSXRlbUludGVyZmFjZSwgc21vb3RoPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLl9nZXRJbmRleE9mSXRlbShpdGVtKTtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmluZmluaXRlKSB7XG4gICAgICAgICAgICB0aGlzLl9jZW50ZXJBY3RpdmUoaW5kZXgpO1xuXG4gICAgICAgICAgICBpbmRleCA9IHRoaXMuX2dldEluZGV4T2ZJdGVtKGl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdHJhbnNpdGlvblRvSW5kZXgoaW5kZXgsIHNtb290aCk7XG4gICAgfVxuXG4gICAgLyoqIHBpY2sgbmV4dCBlbGVtZW50IGFuZCBzZXQgaXQgYWN0aXZlICovXG4gICAgcGlja05leHQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5hY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlID0gdGhpcy5pdGVtcy5maXJzdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFjdGl2ZUl0ZW1JbmRleCA9IHRoaXMuX2dldEluZGV4T2ZJdGVtKHRoaXMuYWN0aXZlKTtcbiAgICAgICAgY29uc3QgaXRlbVRvQWN0aXZhdGUgPSB0aGlzLml0ZW1zLmdldChhY3RpdmVJdGVtSW5kZXggKyAxKSA/PyB0aGlzLml0ZW1zLmZpcnN0O1xuXG4gICAgICAgIHRoaXMuZ29Ub0l0ZW0oaXRlbVRvQWN0aXZhdGUsIHRydWUpO1xuICAgICAgICB0aGlzLmFjdGl2ZSA9IGl0ZW1Ub0FjdGl2YXRlO1xuICAgIH1cblxuICAgIC8qKiBwaWNrIHByZXZpb3VzIGVsZW1lbnQgYW5kIHNldCBpdCBhY3RpdmUgKi9cbiAgICBwaWNrUHJldmlvdXMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5hY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlID0gdGhpcy5pdGVtcy5nZXQoMik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhY3RpdmVJdGVtSW5kZXggPSB0aGlzLl9nZXRJbmRleE9mSXRlbSh0aGlzLmFjdGl2ZSk7XG4gICAgICAgIGxldCBpdGVtVG9BY3RpdmF0ZSA9IHRoaXMuaXRlbXMuZ2V0KGFjdGl2ZUl0ZW1JbmRleCAtIDEpO1xuXG4gICAgICAgIC8vIGNhc2Ugd2hlcmUgc2xpZGVzIGNhbiBtb3ZlIGluZmluaXRlbHkgaW4gb25lIGRpcmVjdGlvblxuICAgICAgICAvLyBoYW5kbGUgY2FzZSB3aGVyZSBvbi1sb2FkIGFjdGl2ZUl0ZW1JbmRleCA9IDAgYW5kIGFjdGl2ZUl0ZW1JbmRleCAtIDEgcmV0dXJucyB1bmRlZmluZWQgaXRlbSBmcm9tIGl0ZW0gYXJyYXkuXG4gICAgICAgIGlmICghaXRlbVRvQWN0aXZhdGUpIHtcbiAgICAgICAgICAgIGl0ZW1Ub0FjdGl2YXRlID0gdGhpcy5pdGVtcy5sYXN0O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5nb1RvSXRlbShpdGVtVG9BY3RpdmF0ZSwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuYWN0aXZlID0gaXRlbVRvQWN0aXZhdGU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jZW50ZXJBY3RpdmUoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBtaWRkbGVJbmRleCA9IE1hdGguY2VpbCh0aGlzLml0ZW1zLmxlbmd0aCAvIDIpO1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBNYXRoLmNlaWwodGhpcy5lbGVtZW50c0F0T25jZSAvIDIpO1xuICAgICAgICBjb25zdCBtaXNzaW5nSXRlbXMgPSBpbmRleCArIG9mZnNldCAtIG1pZGRsZUluZGV4O1xuICAgICAgICBjb25zdCBhcnJheSA9IHRoaXMuaXRlbXMudG9BcnJheSgpO1xuXG4gICAgICAgIGlmIChtaXNzaW5nSXRlbXMgPiAwKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1pc3NpbmdJdGVtczsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IGFycmF5LnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgaXRlbSAmJiBhcnJheS5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBNYXRoLmFicyhtaXNzaW5nSXRlbXMpOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gYXJyYXkucG9wKCk7XG4gICAgICAgICAgICAgICAgaXRlbSAmJiBhcnJheS51bnNoaWZ0KGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLyoqIENoYW5naW5nIG9yZGVyIG9mIGVsZW1lbnRzIGluIFF1ZXJ5TGlzdCBhbmQgTmF0aXZlIEhUTUwgKi9cbiAgICAgICAgdGhpcy5pdGVtcy5yZXNldChhcnJheSk7XG4gICAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4gaXRlbS5lbGVtZW50LnBhcmVudE5vZGU/LmFwcGVuZENoaWxkKGl0ZW0uZWxlbWVudCkpO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb3IgcHJvcGVyIGFuaW1hdGlvbiBpdCdzIG5lZWRlZCB0byB0cmFuc2Zvcm0gZWxlbWVudHMsXG4gICAgICAgICAqIGJ5IGNoYW5naW5nIHRyYW5zaXRpb24gYnkgYW1vdW50IG9mIGVsZW1lbnRzIHBsYWNlZCBhdCB0b3AvYm90dG9tXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLl9lbGVtZW50LnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9ICcwcyc7XG4gICAgICAgIHRoaXMuX3RyYW5zaXRpb25DYXJvdXNlbCh0aGlzLl9jdXJyZW50VHJhbnNpdGlvblB4ICsgdGhpcy5fZ2V0U2l6ZSh0aGlzLml0ZW1zLmZpcnN0KSAqIG1pc3NpbmdJdGVtcyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90cmFuc2l0aW9uVG9JbmRleChpbmRleDogbnVtYmVyLCBzbW9vdGg/OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGxldCB0cmFuc2l0aW9uUHg6IG51bWJlciA9IHRoaXMuX2dldFNpemUodGhpcy5pdGVtcy5maXJzdCkgKiBpbmRleDtcblxuICAgICAgICB0aGlzLl9lbGVtZW50LnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9IHNtb290aCA/IHRoaXMuX2dldFRyYW5zaXRpb24oKSA6ICcwcyc7XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzUnRsIHx8ICh0aGlzLmNvbmZpZy52ZXJ0aWNhbCAmJiB0aGlzLmlzUnRsKSkge1xuICAgICAgICAgICAgdHJhbnNpdGlvblB4ID0gLXRyYW5zaXRpb25QeDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3RyYW5zaXRpb25DYXJvdXNlbCh0cmFuc2l0aW9uUHgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEdldCBjbG9zZXMgZWxlbWVudCwgYmFzZWQgb24gY3VycmVudCB0cmFuc2l0aW9uICovXG4gICAgcHJpdmF0ZSBfZ2V0Q2xvc2VzdCgpOiBDYXJvdXNlbEl0ZW1JbnRlcmZhY2Uge1xuICAgICAgICAvKiogSWYgdHJhbnNpdGlvbiBpcyBwb3NpdGl2ZSwgaXQgc2hvdWxkIGdvIHRvIGZpcnN0IGVsZW1lbnQgKi9cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIXRoaXMuY29uZmlnLmluZmluaXRlICYmXG4gICAgICAgICAgICAoKCF0aGlzLmNvbmZpZy52ZXJ0aWNhbCAmJlxuICAgICAgICAgICAgICAgICgoIXRoaXMuaXNSdGwgJiYgdGhpcy5fY3VycmVudFRyYW5zaXRpb25QeCA+IDApIHx8ICh0aGlzLmlzUnRsICYmIHRoaXMuX2N1cnJlbnRUcmFuc2l0aW9uUHggPCAwKSkpIHx8XG4gICAgICAgICAgICAgICAgKHRoaXMuY29uZmlnLnZlcnRpY2FsICYmIHRoaXMuX2N1cnJlbnRUcmFuc2l0aW9uUHggPiAwKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5maXJzdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLl9nZXRTaXplKHRoaXMuaXRlbXMuZmlyc3QpO1xuXG4gICAgICAgIC8qKiBXaGVuIHNjcm9sbCBpcyBhZnRlciBoYWxmIG9mIGVsZW1lbnQsIHRoZW4gZXh0IG9uZSBzaG91bGQgYmUgYWN0aXZlICovXG4gICAgICAgIGNvbnN0IGhhbGZBcHByb2FjaGVkOiBib29sZWFuID0gTWF0aC5hYnModGhpcy5fY3VycmVudFRyYW5zaXRpb25QeCAlIHNpemUpID4gc2l6ZSAvIDI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJbmRleCBiYXNlZCBvbiB0cmFuc2l0aW9uIHB4IGRpdmlkZWQgYnkgc2l6ZSBvZiBlbGVtZW50cyxcbiAgICAgICAgICogZXZlcnkgZWxlbWVudCBzaG91bGQgaGF2ZSBzYW1lIHdpZHRoLCBvdGhlcndpc2UgaXQgc2hvdWxkIGJlIGxvb3BlZCB0aHJvdWdoIGFsbCBlbGVtZW50cyxcbiAgICAgICAgICogd2hpY2ggaXMgbm90IGdvb2QgZm9yIHBlcmZvcm1hbmNlXG4gICAgICAgICAqL1xuICAgICAgICBsZXQgaW5kZXggPSBNYXRoLmNlaWwoTWF0aC5hYnModGhpcy5fY3VycmVudFRyYW5zaXRpb25QeCAvIHNpemUpKTtcblxuICAgICAgICAvLyBXaGVuIGVsZW1lbnRzQXRPbmNlID4gMSwgc3dpcGluZyBzaG91bGQgc3RvcCBhdCBsYXN0IGluZGV4IC0gZWxlbWVudHNBdE9uY2VcbiAgICAgICAgY29uc3QgZWxlbWVudHNBdE9uY2UgPSB0aGlzLmVsZW1lbnRzQXRPbmNlO1xuICAgICAgICBpZiAoIXRoaXMuY29uZmlnLmluZmluaXRlICYmIGVsZW1lbnRzQXRPbmNlID4gMSkge1xuICAgICAgICAgICAgLy8gV2hlbiB0aGVyZSdyZSBsZXNzIGl0ZW1zIGluIHRoZSBjYXJvdXNlbCB0aGFuIHRoZSBhcmVhIG1pZ2h0IGRpc3BsYXksIGl0IHNob3VsZCBzdG9wIHRvIGZpcnN0XG4gICAgICAgICAgICBpZiAodGhpcy5pdGVtcy5sZW5ndGggPCBlbGVtZW50c0F0T25jZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLml0ZW1zLmZpcnN0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaW5kZXggKyBlbGVtZW50c0F0T25jZSA+PSB0aGlzLml0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLml0ZW1zLmdldCh0aGlzLml0ZW1zLmxlbmd0aCAtIGVsZW1lbnRzQXRPbmNlKSA/PyB0aGlzLml0ZW1zLmZpcnN0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaW5kZXggPSBpbmRleCArIChoYWxmQXBwcm9hY2hlZCA/IDAgOiAtMSk7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLml0ZW1zLmdldChpbmRleCk7XG5cbiAgICAgICAgLyoqIENoZWNraW5nIGlmIHRyYW5zaXRpb24gd2VudCBvdXQgb2Ygc2NvcGUgb2YgYXJyYXkgKi9cbiAgICAgICAgcmV0dXJuIGl0ZW0gfHwgdGhpcy5pdGVtcy5sYXN0O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0SW5kZXhPZkl0ZW0oaXRlbT86IENhcm91c2VsSXRlbUludGVyZmFjZSk6IG51bWJlciB7XG4gICAgICAgIGlmICghaXRlbSkge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1zLnRvQXJyYXkoKS5maW5kSW5kZXgoKF9pdGVtKSA9PiBfaXRlbSA9PT0gaXRlbSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gR2V0dGluZyBzaXplIG9mIGNhcm91c2VsLCB3aWR0aCBmb3IgaG9yaXpvbnRhbCwgaGVpZ2h0IGZvciB2ZXJ0aWNhbCAqL1xuICAgIHByaXZhdGUgX2dldFNpemUoaXRlbTogQ2Fyb3VzZWxJdGVtSW50ZXJmYWNlKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLnZlcnRpY2FsKSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbS5nZXRIZWlnaHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpdGVtLmdldFdpZHRoKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9oYW5kbGVQYW4oZGVsdGE6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBkaXN0YW5jZSA9IGRlbHRhIC0gdGhpcy5fbGFzdERpc3RhbmNlO1xuXG4gICAgICAgIHRoaXMuX2xhc3REaXN0YW5jZSA9IGRlbHRhO1xuXG4gICAgICAgIHRoaXMuX3RyYW5zaXRpb25DYXJvdXNlbCh0aGlzLl9jdXJyZW50VHJhbnNpdGlvblB4ICsgZGlzdGFuY2UpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaGFuZGxlUGFuRW5kKGRlbHRhOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faGFuZGxlUGFuKGRlbHRhKTtcblxuICAgICAgICBjb25zdCBjbG9zZXN0SXRlbTogQ2Fyb3VzZWxJdGVtSW50ZXJmYWNlID0gdGhpcy5fZ2V0Q2xvc2VzdCgpO1xuXG4gICAgICAgIHRoaXMuZ29Ub0l0ZW0oY2xvc2VzdEl0ZW0sIHRydWUpO1xuXG4gICAgICAgIGlmICghdGhpcy5hY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlID0gY2xvc2VzdEl0ZW07XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUNoYW5nZSQuZW1pdCh7XG4gICAgICAgICAgICAgICAgaXRlbTogY2xvc2VzdEl0ZW0sXG4gICAgICAgICAgICAgICAgYWZ0ZXI6IGRlbHRhIDwgMFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmUgIT09IGNsb3Nlc3RJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IGNsb3Nlc3RJdGVtO1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVDaGFuZ2UkLmVtaXQoe1xuICAgICAgICAgICAgICAgIGl0ZW06IGNsb3Nlc3RJdGVtLFxuICAgICAgICAgICAgICAgIGFmdGVyOiBkZWx0YSA8IDBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kcmFnU3RhdGVDaGFuZ2UkLmVtaXQoZmFsc2UpO1xuICAgICAgICB0aGlzLl9sYXN0RGlzdGFuY2UgPSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQW5pbWF0ZXMgdGhlIGNhcm91c2VsIHRvIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgc2xpZGUuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfdHJhbnNpdGlvbkNhcm91c2VsKHRyYW5zaXRpb25QeDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRUcmFuc2l0aW9uUHggPSB0cmFuc2l0aW9uUHg7XG4gICAgICAgIGNvbnN0IGF4aXMgPSB0aGlzLmNvbmZpZy52ZXJ0aWNhbCA/ICdZJyA6ICdYJztcblxuICAgICAgICB0aGlzLl9lbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUke2F4aXN9KCR7dGhpcy5fY3VycmVudFRyYW5zaXRpb25QeH1weClgO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFBhbSBTdGFydCBoYW5kbGVyLCByZW1vdmVzIHRyYW5zaXRpb24gZHVyYXRpb24sICovXG4gICAgcHJpdmF0ZSBfaGFuZGxlUGFuU3RhcnQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gJzBzJztcbiAgICAgICAgdGhpcy5kcmFnU3RhdGVDaGFuZ2UkLmVtaXQodHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXR1cEdlc3R1cmVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZXR1cERyYWdTdGFydCgpO1xuICAgICAgICB0aGlzLl9zZXR1cERyYWcoKTtcbiAgICAgICAgdGhpcy5fc2V0dXBEcmFnRW5kKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpYmVUb0V2ZW50cyhcbiAgICAgICAgZXZlbnRzOiBzdHJpbmdbXSxcbiAgICAgICAgZWxlbWVudDogSFRNTEVsZW1lbnQgfCBEb2N1bWVudCxcbiAgICAgICAgY2FsbGJhY2s6IChldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpID0+IHZvaWRcbiAgICApOiB2b2lkIHtcbiAgICAgICAgbWVyZ2UoZXZlbnRzLm1hcCgoZSkgPT4gZnJvbUV2ZW50PE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50PihlbGVtZW50LCBlLCB7IHBhc3NpdmU6IHRydWUgfSkpKS5mb3JFYWNoKFxuICAgICAgICAgICAgKGV2dDogT2JzZXJ2YWJsZTxNb3VzZUV2ZW50IHwgVG91Y2hFdmVudD4pID0+IHtcbiAgICAgICAgICAgICAgICBldnQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZXZlbnQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0dXBEcmFnU3RhcnQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGV2ZW50cyA9IFsnbW91c2Vkb3duJywgJ3RvdWNoc3RhcnQnXTtcblxuICAgICAgICB0aGlzLl9zdWJzY3JpYmVUb0V2ZW50cyhldmVudHMsIHRoaXMuX2VsZW1lbnQsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbGlzdGVuVG9Nb3VzZU1vdmUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fbGFzdERyYWdQb3NpdGlvbiA9IHRoaXMuX2luaXRpYWxEcmFnUG9zaXRpb24gPSB0aGlzLl9nZXREcmFnQ29vcmRpbmF0ZShldmVudCk7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVQYW5TdGFydCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldHVwRHJhZygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZXZlbnRzID0gWydtb3VzZW1vdmUnLCAndG91Y2htb3ZlJ107XG5cbiAgICAgICAgaWYgKCF0aGlzLl9kb2N1bWVudCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGBDb3VsZCBub3Qgc2V0dXAgZHJhZyBldmVudCBzdWJzY3JpcHRpb24uIEV4cGVjdGVkIHRvIGdldCBkb2N1bWVudCByZWYsIGdvdCAke3RoaXMuX2RvY3VtZW50fSBpbnN0ZWFkYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3N1YnNjcmliZVRvRXZlbnRzKGV2ZW50cywgdGhpcy5fZG9jdW1lbnQsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29vcmRpbmF0ZSA9IHRoaXMuX2dldERyYWdDb29yZGluYXRlKGV2ZW50KTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLl9saXN0ZW5Ub01vdXNlTW92ZSB8fCBjb29yZGluYXRlID09PSB0aGlzLl9sYXN0RHJhZ1Bvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9kcmFnU3RhcnRlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVQYW4odGhpcy5fZ2V0RHJhZ2dlZERlbHRhKGNvb3JkaW5hdGUpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXR1cERyYWdFbmQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGV2ZW50cyA9IFsnbW91c2V1cCcsICd0b3VjaGVuZCddO1xuXG4gICAgICAgIGlmICghdGhpcy5fZG9jdW1lbnQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBgQ291bGQgbm90IHNldHVwIGRyYWcgZXZlbnQgc3Vic2NyaXB0aW9uLiBFeHBlY3RlZCB0byBnZXQgZG9jdW1lbnQgcmVmLCBnb3QgJHt0aGlzLl9kb2N1bWVudH0gaW5zdGVhZGBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zdWJzY3JpYmVUb0V2ZW50cyhldmVudHMsIHRoaXMuX2RvY3VtZW50LCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5fbGlzdGVuVG9Nb3VzZU1vdmUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9kcmFnU3RhcnRlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRsZVBhbkVuZCh0aGlzLl9nZXREcmFnZ2VkRGVsdGEodGhpcy5fZ2V0RHJhZ0Nvb3JkaW5hdGUoZXZlbnQpKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ1N0YXRlQ2hhbmdlJC5lbWl0KGZhbHNlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fbGlzdGVuVG9Nb3VzZU1vdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuX2RyYWdTdGFydGVkID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0VHJhbnNpdGlvbigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWc/LnRyYW5zaXRpb24gPz8gREVGQVVMVF9UUkFOU0lUSU9OX0RVUkFUSU9OO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0RHJhZ2dlZERlbHRhKG9mZnNldDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgdGhpcy5fbGFzdERyYWdQb3NpdGlvbiA9IG9mZnNldDtcblxuICAgICAgICByZXR1cm4gb2Zmc2V0IC0gdGhpcy5faW5pdGlhbERyYWdQb3NpdGlvbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldERyYWdDb29yZGluYXRlKGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCk6IG51bWJlciB7XG4gICAgICAgIGxldCBjb29yZGluYXRlczogVG91Y2ggfCBNb3VzZUV2ZW50O1xuXG4gICAgICAgIGlmICh0aGlzLl9pc1RvdWNoRXZlbnQoZXZlbnQpKSB7XG4gICAgICAgICAgICBjb29yZGluYXRlcyA9IGV2ZW50LnRvdWNoZXNbMF0gfHwgZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb29yZGluYXRlcyA9IGV2ZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLnZlcnRpY2FsID8gY29vcmRpbmF0ZXMucGFnZVkgOiBjb29yZGluYXRlcy5wYWdlWDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lzVG91Y2hFdmVudChldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpOiBldmVudCBpcyBUb3VjaEV2ZW50IHtcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5Ub3VjaEV2ZW50ICYmIGV2ZW50IGluc3RhbmNlb2YgVG91Y2hFdmVudDtcbiAgICB9XG59XG4iXX0=
337
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2Nhcm91c2VsL2Nhcm91c2VsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFlBQVksRUFBRSxNQUFNLEVBQXdCLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFHM0MsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsT0FBTyxDQUFDO0FBMEJuRCxlQUFlO0FBSWYsTUFBTSxPQUFPLGVBQWU7SUFtQnhCLHFDQUFxQztJQUNyQyxJQUFJLG1CQUFtQixDQUFDLG1CQUEyQjtRQUMvQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsbUJBQW1CLENBQUM7SUFDcEQsQ0FBQztJQUNELElBQUksbUJBQW1CO1FBQ25CLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ3JDLENBQUM7SUFFRCxjQUFjO0lBQ2QsSUFBWSxjQUFjO1FBQ3RCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsY0FBYyxJQUFJLENBQUMsQ0FBQztRQUU3QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUE0QkQsY0FBYztJQUNkLFlBQStDLFNBQTBCO1FBQTFCLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBNUR6RSxzR0FBc0c7UUFDN0YscUJBQWdCLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7UUFFL0UsbURBQW1EO1FBQzFDLGtCQUFhLEdBQStCLElBQUksWUFBWSxF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VSxJQUFJLDJCQUEyQixDQUFDO0lBQ2xFLENBQUM7SUFFRCxjQUFjO0lBQ04sZ0JBQWdCLENBQUMsTUFBYztRQUNuQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDO1FBRWhDLE9BQU8sTUFBTSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUM5QyxDQUFDO0lBRUQsY0FBYztJQUNOLGtCQUFrQixDQUFDLEtBQThCO1FBQ3JELElBQUksV0FBK0IsQ0FBQztRQUVwQyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDM0IsV0FBVyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM3RDthQUFNO1lBQ0gsV0FBVyxHQUFHLEtBQUssQ0FBQztTQUN2QjtRQUVELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7SUFDeEUsQ0FBQztJQUVELGNBQWM7SUFDTixhQUFhLENBQUMsS0FBOEI7UUFDaEQsT0FBTyxNQUFNLENBQUMsVUFBVSxJQUFJLEtBQUssWUFBWSxVQUFVLENBQUM7SUFDNUQsQ0FBQzs7NEdBbGFRLGVBQWUsa0JBNkRKLFFBQVE7Z0hBN0RuQixlQUFlLGNBRlosTUFBTTsyRkFFVCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBOERnQixNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEluamVjdCwgT25EZXN0cm95LCBRdWVyeUxpc3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGZyb21FdmVudCwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9UUkFOU0lUSU9OX0RVUkFUSU9OID0gJzE1MG1zJztcblxuZXhwb3J0IGludGVyZmFjZSBDYXJvdXNlbEl0ZW1JbnRlcmZhY2Uge1xuICAgIGVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICAgIGdldEhlaWdodCgpOiBudW1iZXI7XG4gICAgZ2V0V2lkdGgoKTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhcm91c2VsQ29uZmlnIHtcbiAgICAvKiogRGVmaW5lcyBpZiBjYXJvdXNlbCBpdGVtcyBhcmUgcGxhY2VkIHZlcnRpY2FsbHkgKi9cbiAgICB2ZXJ0aWNhbD86IGJvb2xlYW47XG4gICAgLyoqIEFtb3VudCBvZiB2aXNpYmxlIGVsZW1lbnRzIGluIGNhcm91c2VsICovXG4gICAgZWxlbWVudHNBdE9uY2U/OiBudW1iZXI7XG4gICAgLyoqIERlZmluZXMgaWYgc3VwcG9ydCBmb3IgZ2VzdHVyZXMsIGxpa2UgdG91Y2ggc3dpcGUgb3IgbW91c2UgZHJhZyBzaG91bGQgYmUgZW5hYmxlZCAqL1xuICAgIGdlc3R1cmVTdXBwb3J0PzogYm9vbGVhbjtcbiAgICAvKiogRGVmaW5lcyBpZiBjYXJvdXNlbCBzaG91bGQgbW92ZSBlbGVtZW50cyB0byBzaWRlcy4gSXQgYWxsb3dzIHRvIHNsaWRlIGluZmluaXRlbHkgaW4gb25lIGRpcmVjdGlvbiAqL1xuICAgIGluZmluaXRlPzogYm9vbGVhbjtcbiAgICAvKiogVHJhbnNpdGlvbiB0aW1lIG9mIENTUyB0cmFuc2xhdGUsIGAxNTBtc2AgYnkgZGVmYXVsdCAqL1xuICAgIHRyYW5zaXRpb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFuRW5kT3V0cHV0IHtcbiAgICBpdGVtOiBDYXJvdXNlbEl0ZW1JbnRlcmZhY2U7XG4gICAgYWZ0ZXI6IGJvb2xlYW47XG59XG5cbi8qKiBAZHluYW1pYyAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDYXJvdXNlbFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIC8qKiBFdmVudCB0aHJvd24gd2hlbiBlbGVtZW50IGlzIGRyYWdnZWQuIEVtaXRzIFwidHJ1ZVwiIHdoZW4gZHJhZyBzdGFydHMgYW5kIFwiZmFsc2VcIiB3aGVuIGRyYWcgZW5kcy4gKi9cbiAgICByZWFkb25seSBkcmFnU3RhdGVDaGFuZ2UkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKiogRXZlbnQgdGhyb3duLCB3aGVuIGFjdGl2ZSBlbGVtZW50IGlzIGNoYW5nZWQgKi9cbiAgICByZWFkb25seSBhY3RpdmVDaGFuZ2UkOiBFdmVudEVtaXR0ZXI8UGFuRW5kT3V0cHV0PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGFuRW5kT3V0cHV0PigpO1xuXG4gICAgLyoqIENvbmZpZ3VyYXRpb24gZm9yIGNhcm91c2VsICovXG4gICAgY29uZmlnOiBDYXJvdXNlbENvbmZpZztcblxuICAgIC8qKiBJbml0aWFsIGFjdGl2ZSBpdGVtIG9mIGNhcm91c2VsLCBwb3NpdGlvbiBmaXJzdCArIG9mZnNldCAqL1xuICAgIGFjdGl2ZTogTnVsbGFibGU8Q2Fyb3VzZWxJdGVtSW50ZXJmYWNlPjtcblxuICAgIC8qKiBTZXQgdG8gdHJ1ZSBmb3IgcnRsIG1vZGUgKi9cbiAgICBpc1J0bCA9IGZhbHNlO1xuXG4gICAgLyoqIGNhcm91c2VsIGl0ZW1zIHF1ZXJ5IGxpc3QgKi9cbiAgICBpdGVtczogUXVlcnlMaXN0PENhcm91c2VsSXRlbUludGVyZmFjZT47XG5cbiAgICAvKiogQ3VycmVudCB0cmFuc2l0aW9uIHZhbHVlIGluIHB4ICovXG4gICAgc2V0IGN1cnJlbnRUcmFuc2l0aW9uUHgoY3VycmVudFRyYW5zaXRpb25QeDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRUcmFuc2l0aW9uUHggPSBjdXJyZW50VHJhbnNpdGlvblB4O1xuICAgIH1cbiAgICBnZXQgY3VycmVudFRyYW5zaXRpb25QeCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFRyYW5zaXRpb25QeDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgZ2V0IGVsZW1lbnRzQXRPbmNlKCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IG51bSA9IHRoaXMuY29uZmlnPy5lbGVtZW50c0F0T25jZSA/PyAxO1xuXG4gICAgICAgIHJldHVybiBNYXRoLm1heCgxLCBudW0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGFzdERpc3RhbmNlID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY3VycmVudFRyYW5zaXRpb25QeCA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2VsZW1lbnQ6IEhUTUxFbGVtZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0aWFsRHJhZ1Bvc2l0aW9uID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGFzdERyYWdQb3NpdGlvbiA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3RlblRvTW91c2VNb3ZlID0gZmFsc2U7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kcmFnU3RhcnRlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEFuIFJ4SlMgU3ViamVjdCB0aGF0IHdpbGwga2lsbCB0aGUgZGF0YSBzdHJlYW0gdXBvbiBjb21wb25lbnTigJlzIGRlc3RydWN0aW9uIChmb3IgdW5zdWJzY3JpYmluZylcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vbkRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSByZWFkb25seSBfZG9jdW1lbnQ6IERvY3VtZW50IHwgbnVsbCkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG5cbiAgICAgICAgdGhpcy5hY3RpdmVDaGFuZ2UkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuZHJhZ1N0YXRlQ2hhbmdlJC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBzZXQgaW5pdGlhbCB2YWx1ZXMgZm9yIHRoZSBzZXJ2aWNlICovXG4gICAgaW5pdGlhbGlzZShcbiAgICAgICAgY29uZmlnOiBDYXJvdXNlbENvbmZpZyxcbiAgICAgICAgaXRlbXM6IFF1ZXJ5TGlzdDxDYXJvdXNlbEl0ZW1JbnRlcmZhY2U+LFxuICAgICAgICBsaXN0RWxlbWVudFJlZmVyZW5jZTogRWxlbWVudFJlZlxuICAgICk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICAgICAgdGhpcy5zZXRFbGVtZW50KGxpc3RFbGVtZW50UmVmZXJlbmNlKTtcbiAgICAgICAgdGhpcy5zZXRJdGVtcyhpdGVtcyk7XG5cbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmdlc3R1cmVTdXBwb3J0KSB7XG4gICAgICAgICAgICB0aGlzLl9zZXR1cEdlc3R1cmVzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogdXBkYXRlIGNvbmZpZyB2YWx1ZSBmb3IgdGhlIHNlcnZpY2UgKi9cbiAgICB1cGRhdGVDb25maWcoY29uZmlnOiBDYXJvdXNlbENvbmZpZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB9XG5cbiAgICAvKiogc2V0IGVsZW1lbnQgcmVmICovXG4gICAgc2V0RWxlbWVudChlbGVtZW50UmVmOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqIHNldCBpdGVtcyBhbmQgYXNzaWduIGFjdGl2ZSBpdGVtLCBpZiBub3QgYWxyZWFkeSB0aGVyZSAqL1xuICAgIHNldEl0ZW1zKGl0ZW1zOiBRdWVyeUxpc3Q8Q2Fyb3VzZWxJdGVtSW50ZXJmYWNlPik6IHZvaWQge1xuICAgICAgICB0aGlzLml0ZW1zID0gaXRlbXM7XG5cbiAgICAgICAgaWYgKCF0aGlzLmFjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSB0aGlzLml0ZW1zLmZpcnN0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIENoYW5nZSBhY3RpdmUgZWxlbWVudCAqL1xuICAgIGdvVG9JdGVtKGl0ZW06IENhcm91c2VsSXRlbUludGVyZmFjZSwgc21vb3RoPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLl9nZXRJbmRleE9mSXRlbShpdGVtKTtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmluZmluaXRlKSB7XG4gICAgICAgICAgICB0aGlzLl9jZW50ZXJBY3RpdmUoaW5kZXgpO1xuXG4gICAgICAgICAgICBpbmRleCA9IHRoaXMuX2dldEluZGV4T2ZJdGVtKGl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdHJhbnNpdGlvblRvSW5kZXgoaW5kZXgsIHNtb290aCk7XG4gICAgfVxuXG4gICAgLyoqIHBpY2sgbmV4dCBlbGVtZW50IGFuZCBzZXQgaXQgYWN0aXZlICovXG4gICAgcGlja05leHQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5hY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlID0gdGhpcy5pdGVtcy5maXJzdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFjdGl2ZUl0ZW1JbmRleCA9IHRoaXMuX2dldEluZGV4T2ZJdGVtKHRoaXMuYWN0aXZlKTtcbiAgICAgICAgY29uc3QgaXRlbVRvQWN0aXZhdGUgPSB0aGlzLml0ZW1zLmdldChhY3RpdmVJdGVtSW5kZXggKyAxKSA/PyB0aGlzLml0ZW1zLmZpcnN0O1xuXG4gICAgICAgIHRoaXMuZ29Ub0l0ZW0oaXRlbVRvQWN0aXZhdGUsIHRydWUpO1xuICAgICAgICB0aGlzLmFjdGl2ZSA9IGl0ZW1Ub0FjdGl2YXRlO1xuICAgIH1cblxuICAgIC8qKiBwaWNrIHByZXZpb3VzIGVsZW1lbnQgYW5kIHNldCBpdCBhY3RpdmUgKi9cbiAgICBwaWNrUHJldmlvdXMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5hY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlID0gdGhpcy5pdGVtcy5nZXQoMik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhY3RpdmVJdGVtSW5kZXggPSB0aGlzLl9nZXRJbmRleE9mSXRlbSh0aGlzLmFjdGl2ZSk7XG4gICAgICAgIGxldCBpdGVtVG9BY3RpdmF0ZSA9IHRoaXMuaXRlbXMuZ2V0KGFjdGl2ZUl0ZW1JbmRleCAtIDEpO1xuXG4gICAgICAgIC8vIGNhc2Ugd2hlcmUgc2xpZGVzIGNhbiBtb3ZlIGluZmluaXRlbHkgaW4gb25lIGRpcmVjdGlvblxuICAgICAgICAvLyBoYW5kbGUgY2FzZSB3aGVyZSBvbi1sb2FkIGFjdGl2ZUl0ZW1JbmRleCA9IDAgYW5kIGFjdGl2ZUl0ZW1JbmRleCAtIDEgcmV0dXJucyB1bmRlZmluZWQgaXRlbSBmcm9tIGl0ZW0gYXJyYXkuXG4gICAgICAgIGlmICghaXRlbVRvQWN0aXZhdGUpIHtcbiAgICAgICAgICAgIGl0ZW1Ub0FjdGl2YXRlID0gdGhpcy5pdGVtcy5sYXN0O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5nb1RvSXRlbShpdGVtVG9BY3RpdmF0ZSwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuYWN0aXZlID0gaXRlbVRvQWN0aXZhdGU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jZW50ZXJBY3RpdmUoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5fZ2V0U2l6ZSh0aGlzLml0ZW1zLmZpcnN0KTtcbiAgICAgICAgaWYgKGlzTmFOKHNpemUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWlkZGxlSW5kZXggPSBNYXRoLmNlaWwodGhpcy5pdGVtcy5sZW5ndGggLyAyKTtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gTWF0aC5jZWlsKHRoaXMuZWxlbWVudHNBdE9uY2UgLyAyKTtcbiAgICAgICAgY29uc3QgbWlzc2luZ0l0ZW1zID0gaW5kZXggKyBvZmZzZXQgLSBtaWRkbGVJbmRleDtcbiAgICAgICAgY29uc3QgYXJyYXkgPSB0aGlzLml0ZW1zLnRvQXJyYXkoKTtcblxuICAgICAgICBpZiAobWlzc2luZ0l0ZW1zID4gMCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtaXNzaW5nSXRlbXM7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBhcnJheS5zaGlmdCgpO1xuICAgICAgICAgICAgICAgIGl0ZW0gJiYgYXJyYXkucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTWF0aC5hYnMobWlzc2luZ0l0ZW1zKTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IGFycmF5LnBvcCgpO1xuICAgICAgICAgICAgICAgIGl0ZW0gJiYgYXJyYXkudW5zaGlmdChpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8qKiBDaGFuZ2luZyBvcmRlciBvZiBlbGVtZW50cyBpbiBRdWVyeUxpc3QgYW5kIE5hdGl2ZSBIVE1MICovXG4gICAgICAgIHRoaXMuaXRlbXMucmVzZXQoYXJyYXkpO1xuICAgICAgICB0aGlzLml0ZW1zLmZvckVhY2goKGl0ZW0pID0+IGl0ZW0uZWxlbWVudC5wYXJlbnROb2RlPy5hcHBlbmRDaGlsZChpdGVtLmVsZW1lbnQpKTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogRm9yIHByb3BlciBhbmltYXRpb24gaXQncyBuZWVkZWQgdG8gdHJhbnNmb3JtIGVsZW1lbnRzLFxuICAgICAgICAgKiBieSBjaGFuZ2luZyB0cmFuc2l0aW9uIGJ5IGFtb3VudCBvZiBlbGVtZW50cyBwbGFjZWQgYXQgdG9wL2JvdHRvbVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fZWxlbWVudC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSAnMHMnO1xuICAgICAgICB0aGlzLl90cmFuc2l0aW9uQ2Fyb3VzZWwodGhpcy5fY3VycmVudFRyYW5zaXRpb25QeCArIHRoaXMuX2dldFNpemUodGhpcy5pdGVtcy5maXJzdCkgKiBtaXNzaW5nSXRlbXMpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdHJhbnNpdGlvblRvSW5kZXgoaW5kZXg6IG51bWJlciwgc21vb3RoPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBsZXQgdHJhbnNpdGlvblB4OiBudW1iZXIgPSB0aGlzLl9nZXRTaXplKHRoaXMuaXRlbXMuZmlyc3QpICogaW5kZXg7XG5cbiAgICAgICAgdGhpcy5fZWxlbWVudC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSBzbW9vdGggPyB0aGlzLl9nZXRUcmFuc2l0aW9uKCkgOiAnMHMnO1xuXG4gICAgICAgIGlmICghdGhpcy5pc1J0bCB8fCAodGhpcy5jb25maWcudmVydGljYWwgJiYgdGhpcy5pc1J0bCkpIHtcbiAgICAgICAgICAgIHRyYW5zaXRpb25QeCA9IC10cmFuc2l0aW9uUHg7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl90cmFuc2l0aW9uQ2Fyb3VzZWwodHJhbnNpdGlvblB4KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBHZXQgY2xvc2VzIGVsZW1lbnQsIGJhc2VkIG9uIGN1cnJlbnQgdHJhbnNpdGlvbiAqL1xuICAgIHByaXZhdGUgX2dldENsb3Nlc3QoKTogQ2Fyb3VzZWxJdGVtSW50ZXJmYWNlIHtcbiAgICAgICAgLyoqIElmIHRyYW5zaXRpb24gaXMgcG9zaXRpdmUsIGl0IHNob3VsZCBnbyB0byBmaXJzdCBlbGVtZW50ICovXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICF0aGlzLmNvbmZpZy5pbmZpbml0ZSAmJlxuICAgICAgICAgICAgKCghdGhpcy5jb25maWcudmVydGljYWwgJiZcbiAgICAgICAgICAgICAgICAoKCF0aGlzLmlzUnRsICYmIHRoaXMuX2N1cnJlbnRUcmFuc2l0aW9uUHggPiAwKSB8fCAodGhpcy5pc1J0bCAmJiB0aGlzLl9jdXJyZW50VHJhbnNpdGlvblB4IDwgMCkpKSB8fFxuICAgICAgICAgICAgICAgICh0aGlzLmNvbmZpZy52ZXJ0aWNhbCAmJiB0aGlzLl9jdXJyZW50VHJhbnNpdGlvblB4ID4gMCkpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXRlbXMuZmlyc3Q7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5fZ2V0U2l6ZSh0aGlzLml0ZW1zLmZpcnN0KTtcblxuICAgICAgICAvKiogV2hlbiBzY3JvbGwgaXMgYWZ0ZXIgaGFsZiBvZiBlbGVtZW50LCB0aGVuIGV4dCBvbmUgc2hvdWxkIGJlIGFjdGl2ZSAqL1xuICAgICAgICBjb25zdCBoYWxmQXBwcm9hY2hlZDogYm9vbGVhbiA9IE1hdGguYWJzKHRoaXMuX2N1cnJlbnRUcmFuc2l0aW9uUHggJSBzaXplKSA+IHNpemUgLyAyO1xuICAgICAgICAvKipcbiAgICAgICAgICogSW5kZXggYmFzZWQgb24gdHJhbnNpdGlvbiBweCBkaXZpZGVkIGJ5IHNpemUgb2YgZWxlbWVudHMsXG4gICAgICAgICAqIGV2ZXJ5IGVsZW1lbnQgc2hvdWxkIGhhdmUgc2FtZSB3aWR0aCwgb3RoZXJ3aXNlIGl0IHNob3VsZCBiZSBsb29wZWQgdGhyb3VnaCBhbGwgZWxlbWVudHMsXG4gICAgICAgICAqIHdoaWNoIGlzIG5vdCBnb29kIGZvciBwZXJmb3JtYW5jZVxuICAgICAgICAgKi9cbiAgICAgICAgbGV0IGluZGV4ID0gTWF0aC5jZWlsKE1hdGguYWJzKHRoaXMuX2N1cnJlbnRUcmFuc2l0aW9uUHggLyBzaXplKSk7XG5cbiAgICAgICAgLy8gV2hlbiBlbGVtZW50c0F0T25jZSA+IDEsIHN3aXBpbmcgc2hvdWxkIHN0b3AgYXQgbGFzdCBpbmRleCAtIGVsZW1lbnRzQXRPbmNlXG4gICAgICAgIGNvbnN0IGVsZW1lbnRzQXRPbmNlID0gdGhpcy5lbGVtZW50c0F0T25jZTtcbiAgICAgICAgaWYgKCF0aGlzLmNvbmZpZy5pbmZpbml0ZSAmJiBlbGVtZW50c0F0T25jZSA+IDEpIHtcbiAgICAgICAgICAgIC8vIFdoZW4gdGhlcmUncmUgbGVzcyBpdGVtcyBpbiB0aGUgY2Fyb3VzZWwgdGhhbiB0aGUgYXJlYSBtaWdodCBkaXNwbGF5LCBpdCBzaG91bGQgc3RvcCB0byBmaXJzdFxuICAgICAgICAgICAgaWYgKHRoaXMuaXRlbXMubGVuZ3RoIDwgZWxlbWVudHNBdE9uY2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5maXJzdDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGluZGV4ICsgZWxlbWVudHNBdE9uY2UgPj0gdGhpcy5pdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5nZXQodGhpcy5pdGVtcy5sZW5ndGggLSBlbGVtZW50c0F0T25jZSkgPz8gdGhpcy5pdGVtcy5maXJzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGluZGV4ID0gaW5kZXggKyAoaGFsZkFwcHJvYWNoZWQgPyAwIDogLTEpO1xuICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5pdGVtcy5nZXQoaW5kZXgpO1xuXG4gICAgICAgIC8qKiBDaGVja2luZyBpZiB0cmFuc2l0aW9uIHdlbnQgb3V0IG9mIHNjb3BlIG9mIGFycmF5ICovXG4gICAgICAgIHJldHVybiBpdGVtIHx8IHRoaXMuaXRlbXMubGFzdDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldEluZGV4T2ZJdGVtKGl0ZW0/OiBDYXJvdXNlbEl0ZW1JbnRlcmZhY2UpOiBudW1iZXIge1xuICAgICAgICBpZiAoIWl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy50b0FycmF5KCkuZmluZEluZGV4KChfaXRlbSkgPT4gX2l0ZW0gPT09IGl0ZW0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEdldHRpbmcgc2l6ZSBvZiBjYXJvdXNlbCwgd2lkdGggZm9yIGhvcml6b250YWwsIGhlaWdodCBmb3IgdmVydGljYWwgKi9cbiAgICBwcml2YXRlIF9nZXRTaXplKGl0ZW06IENhcm91c2VsSXRlbUludGVyZmFjZSk6IG51bWJlciB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy52ZXJ0aWNhbCkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW0uZ2V0SGVpZ2h0KCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXRlbS5nZXRXaWR0aCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaGFuZGxlUGFuKGRlbHRhOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBkZWx0YSAtIHRoaXMuX2xhc3REaXN0YW5jZTtcblxuICAgICAgICB0aGlzLl9sYXN0RGlzdGFuY2UgPSBkZWx0YTtcblxuICAgICAgICB0aGlzLl90cmFuc2l0aW9uQ2Fyb3VzZWwodGhpcy5fY3VycmVudFRyYW5zaXRpb25QeCArIGRpc3RhbmNlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2hhbmRsZVBhbkVuZChkZWx0YTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2hhbmRsZVBhbihkZWx0YSk7XG5cbiAgICAgICAgY29uc3QgY2xvc2VzdEl0ZW06IENhcm91c2VsSXRlbUludGVyZmFjZSA9IHRoaXMuX2dldENsb3Nlc3QoKTtcblxuICAgICAgICB0aGlzLmdvVG9JdGVtKGNsb3Nlc3RJdGVtLCB0cnVlKTtcblxuICAgICAgICBpZiAoIXRoaXMuYWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IGNsb3Nlc3RJdGVtO1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVDaGFuZ2UkLmVtaXQoe1xuICAgICAgICAgICAgICAgIGl0ZW06IGNsb3Nlc3RJdGVtLFxuICAgICAgICAgICAgICAgIGFmdGVyOiBkZWx0YSA8IDBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlICE9PSBjbG9zZXN0SXRlbSkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSBjbG9zZXN0SXRlbTtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlQ2hhbmdlJC5lbWl0KHtcbiAgICAgICAgICAgICAgICBpdGVtOiBjbG9zZXN0SXRlbSxcbiAgICAgICAgICAgICAgICBhZnRlcjogZGVsdGEgPCAwXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZHJhZ1N0YXRlQ2hhbmdlJC5lbWl0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5fbGFzdERpc3RhbmNlID0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEFuaW1hdGVzIHRoZSBjYXJvdXNlbCB0byB0aGUgY3VycmVudGx5IHNlbGVjdGVkIHNsaWRlLlxuICAgICAqL1xuICAgIHByaXZhdGUgX3RyYW5zaXRpb25DYXJvdXNlbCh0cmFuc2l0aW9uUHg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl9jdXJyZW50VHJhbnNpdGlvblB4ID0gdHJhbnNpdGlvblB4O1xuICAgICAgICBjb25zdCBheGlzID0gdGhpcy5jb25maWcudmVydGljYWwgPyAnWScgOiAnWCc7XG5cbiAgICAgICAgdGhpcy5fZWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlJHtheGlzfSgke3RoaXMuX2N1cnJlbnRUcmFuc2l0aW9uUHh9cHgpYDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBQYW0gU3RhcnQgaGFuZGxlciwgcmVtb3ZlcyB0cmFuc2l0aW9uIGR1cmF0aW9uLCAqL1xuICAgIHByaXZhdGUgX2hhbmRsZVBhblN0YXJ0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9lbGVtZW50LnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9ICcwcyc7XG4gICAgICAgIHRoaXMuZHJhZ1N0YXRlQ2hhbmdlJC5lbWl0KHRydWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0dXBHZXN0dXJlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0dXBEcmFnU3RhcnQoKTtcbiAgICAgICAgdGhpcy5fc2V0dXBEcmFnKCk7XG4gICAgICAgIHRoaXMuX3NldHVwRHJhZ0VuZCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9FdmVudHMoXG4gICAgICAgIGV2ZW50czogc3RyaW5nW10sXG4gICAgICAgIGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgRG9jdW1lbnQsXG4gICAgICAgIGNhbGxiYWNrOiAoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KSA9PiB2b2lkXG4gICAgKTogdm9pZCB7XG4gICAgICAgIG1lcmdlKGV2ZW50cy5tYXAoKGUpID0+IGZyb21FdmVudDxNb3VzZUV2ZW50IHwgVG91Y2hFdmVudD4oZWxlbWVudCwgZSwgeyBwYXNzaXZlOiB0cnVlIH0pKSkuZm9yRWFjaChcbiAgICAgICAgICAgIChldnQ6IE9ic2VydmFibGU8TW91c2VFdmVudCB8IFRvdWNoRXZlbnQ+KSA9PiB7XG4gICAgICAgICAgICAgICAgZXZ0LnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldHVwRHJhZ1N0YXJ0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBldmVudHMgPSBbJ21vdXNlZG93bicsICd0b3VjaHN0YXJ0J107XG5cbiAgICAgICAgdGhpcy5fc3Vic2NyaWJlVG9FdmVudHMoZXZlbnRzLCB0aGlzLl9lbGVtZW50LCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xpc3RlblRvTW91c2VNb3ZlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2xhc3REcmFnUG9zaXRpb24gPSB0aGlzLl9pbml0aWFsRHJhZ1Bvc2l0aW9uID0gdGhpcy5fZ2V0RHJhZ0Nvb3JkaW5hdGUoZXZlbnQpO1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlUGFuU3RhcnQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXR1cERyYWcoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGV2ZW50cyA9IFsnbW91c2Vtb3ZlJywgJ3RvdWNobW92ZSddO1xuXG4gICAgICAgIGlmICghdGhpcy5fZG9jdW1lbnQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBgQ291bGQgbm90IHNldHVwIGRyYWcgZXZlbnQgc3Vic2NyaXB0aW9uLiBFeHBlY3RlZCB0byBnZXQgZG9jdW1lbnQgcmVmLCBnb3QgJHt0aGlzLl9kb2N1bWVudH0gaW5zdGVhZGBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zdWJzY3JpYmVUb0V2ZW50cyhldmVudHMsIHRoaXMuX2RvY3VtZW50LCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvb3JkaW5hdGUgPSB0aGlzLl9nZXREcmFnQ29vcmRpbmF0ZShldmVudCk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5fbGlzdGVuVG9Nb3VzZU1vdmUgfHwgY29vcmRpbmF0ZSA9PT0gdGhpcy5fbGFzdERyYWdQb3NpdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fZHJhZ1N0YXJ0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlUGFuKHRoaXMuX2dldERyYWdnZWREZWx0YShjb29yZGluYXRlKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0dXBEcmFnRW5kKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBldmVudHMgPSBbJ21vdXNldXAnLCAndG91Y2hlbmQnXTtcblxuICAgICAgICBpZiAoIXRoaXMuX2RvY3VtZW50KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgYENvdWxkIG5vdCBzZXR1cCBkcmFnIGV2ZW50IHN1YnNjcmlwdGlvbi4gRXhwZWN0ZWQgdG8gZ2V0IGRvY3VtZW50IHJlZiwgZ290ICR7dGhpcy5fZG9jdW1lbnR9IGluc3RlYWRgXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc3Vic2NyaWJlVG9FdmVudHMoZXZlbnRzLCB0aGlzLl9kb2N1bWVudCwgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2xpc3RlblRvTW91c2VNb3ZlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5fZHJhZ1N0YXJ0ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9oYW5kbGVQYW5FbmQodGhpcy5fZ2V0RHJhZ2dlZERlbHRhKHRoaXMuX2dldERyYWdDb29yZGluYXRlKGV2ZW50KSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdTdGF0ZUNoYW5nZSQuZW1pdChmYWxzZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2xpc3RlblRvTW91c2VNb3ZlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl9kcmFnU3RhcnRlZCA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFRyYW5zaXRpb24oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnPy50cmFuc2l0aW9uID8/IERFRkFVTFRfVFJBTlNJVElPTl9EVVJBVElPTjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldERyYWdnZWREZWx0YShvZmZzZXQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHRoaXMuX2xhc3REcmFnUG9zaXRpb24gPSBvZmZzZXQ7XG5cbiAgICAgICAgcmV0dXJuIG9mZnNldCAtIHRoaXMuX2luaXRpYWxEcmFnUG9zaXRpb247XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXREcmFnQ29vcmRpbmF0ZShldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpOiBudW1iZXIge1xuICAgICAgICBsZXQgY29vcmRpbmF0ZXM6IFRvdWNoIHwgTW91c2VFdmVudDtcblxuICAgICAgICBpZiAodGhpcy5faXNUb3VjaEV2ZW50KGV2ZW50KSkge1xuICAgICAgICAgICAgY29vcmRpbmF0ZXMgPSBldmVudC50b3VjaGVzWzBdIHx8IGV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29vcmRpbmF0ZXMgPSBldmVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy52ZXJ0aWNhbCA/IGNvb3JkaW5hdGVzLnBhZ2VZIDogY29vcmRpbmF0ZXMucGFnZVg7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc1RvdWNoRXZlbnQoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KTogZXZlbnQgaXMgVG91Y2hFdmVudCB7XG4gICAgICAgIHJldHVybiB3aW5kb3cuVG91Y2hFdmVudCAmJiBldmVudCBpbnN0YW5jZW9mIFRvdWNoRXZlbnQ7XG4gICAgfVxufVxuIl19