ecabs-components 1.1.72 → 1.1.74

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -25,6 +25,9 @@ To get more help on the Angular CLI use `ng help` or go check out the [Angular C
25
25
 
26
26
  ## Version History
27
27
 
28
+ - **v1.1.74** — Optimize `dateRangeValidator` logic to streamline error handling and remove redundant optional input properties `dateFromOptional` and `dateToOptional`.
29
+ - **v1.1.73** — Include `place_id` in Google Place API result fields.
30
+ - Add `debounceTime` input for customizable debounce delays
28
31
  - **v1.1.72** — Add external filtering support (`useExternalFilter`) to `EcabsChipAutocomplete`.
29
32
  - **v1.1.71** — Add label truncation with tooltip to `EcabsChipAutocomplete` to ensure consistent chip sizing and label overflow handling.
30
33
  - **v1.1.70** — Improve `EcabsCheckboxV2` with new `checked` input and dynamic label styles.
@@ -23,4 +23,4 @@ export const WAYPOINT_SUGGESTIONS2 = [
23
23
  source: 'history',
24
24
  },
25
25
  ];
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F5cG9pbnQubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWNhYnMtY29tcG9uZW50cy9zcmMvbGliL2Jhc2UvbW9kZWxzL3dheXBvaW50Lm1vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUErQkEsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQXlCO0lBQ3hEO1FBQ0UsYUFBYSxFQUFFLEtBQUs7UUFDcEIsZUFBZSxFQUFFLGVBQWU7UUFDaEMsUUFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFO1FBQzlDLFFBQVEsRUFBRSw2QkFBNkI7UUFDdkMsTUFBTSxFQUFFLFNBQVM7S0FDbEI7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQXlCO0lBQ3pEO1FBQ0UsYUFBYSxFQUFFLE1BQU07UUFDckIsZUFBZSxFQUFFLG9CQUFvQjtRQUNyQyxRQUFRLEVBQUUsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUU7UUFDOUMsUUFBUSxFQUFFLDZCQUE2QjtRQUN2QyxNQUFNLEVBQUUsU0FBUztLQUNsQjtJQUNEO1FBQ0UsYUFBYSxFQUFFLE1BQU07UUFDckIsZUFBZSxFQUFFLDZDQUE2QztRQUM5RCxRQUFRLEVBQUUsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUU7UUFDOUMsUUFBUSxFQUFFLDZCQUE2QjtRQUN2QyxNQUFNLEVBQUUsU0FBUztLQUNsQjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUGxhY2VSZXN1bHQgPSBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VSZXN1bHQ7XG5pbXBvcnQgeyBXYXlwb2ludFR5cGVFbnVtIH0gZnJvbSAnLi4vY29uc3RzL3dheXBvaW50LmNvbnN0cyc7XG5pbXBvcnQgUHJlZGljdGlvblRlcm0gPSBnb29nbGUubWFwcy5wbGFjZXMuUHJlZGljdGlvblRlcm07XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2F5cG9pbnRTdWdnZXN0aW9uIHtcbiAgc3VnZ2VzdGlvbl9pZD86IHN0cmluZztcbiAgYWRkaXRpb25hbF9pbmZvPzogc3RyaW5nO1xuICBsb2NhdGlvbj86IEdlb1BvaW50O1xuICBwbGFjZV9pZDogc3RyaW5nO1xuICBzb3VyY2U/OiBzdHJpbmc7XG4gIGZyZXF1ZW5jeT86IG51bWJlcjtcbiAgbGFzdF92aXNpdD86IHN0cmluZyB8IERhdGU7XG4gIGdlb19rZXk/OiBzdHJpbmc7XG4gIHByZWRpY3Rpb25fdGVybT86IFByZWRpY3Rpb25UZXJtW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2VvUG9pbnQge1xuICBsYXQ6IG51bWJlcjtcbiAgbG5nOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR29vZ2xlUGxhY2VSZXN1bHQge1xuICBwbGFjZTogUGxhY2VSZXN1bHQ7XG4gIHRleHQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXYXlwb2ludFF1ZXJ5Q2hhbmdlIHtcbiAgd2F5cG9pbnRfdHlwZTogV2F5cG9pbnRUeXBlRW51bTtcbiAgcXVlcnk6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IFdBWVBPSU5UX1NVR0dFU1RJT05TOiBXYXlwb2ludFN1Z2dlc3Rpb25bXSA9IFtcbiAge1xuICAgIHN1Z2dlc3Rpb25faWQ6ICcxMjMnLFxuICAgIGFkZGl0aW9uYWxfaW5mbzogJ0Zhc3RsYW5lIEx0ZC4nLFxuICAgIGxvY2F0aW9uOiB7IGxhdDogMzUuOTAzODYyMywgbG5nOiAxNC40MTI5NTMzIH0sXG4gICAgcGxhY2VfaWQ6ICdDaElKazl2MHh0bFJEaE1SaHJ0cnQyQ2hJaWMnLFxuICAgIHNvdXJjZTogJ2hpc3RvcnknLFxuICB9LFxuXTtcblxuZXhwb3J0IGNvbnN0IFdBWVBPSU5UX1NVR0dFU1RJT05TMjogV2F5cG9pbnRTdWdnZXN0aW9uW10gPSBbXG4gIHtcbiAgICBzdWdnZXN0aW9uX2lkOiAnMTIzNCcsXG4gICAgYWRkaXRpb25hbF9pbmZvOiAnRmFzdGxhbmUgTHRkLiAyMDAwJyxcbiAgICBsb2NhdGlvbjogeyBsYXQ6IDM1LjkwMzg2MjMsIGxuZzogMTQuNDEyOTUzMyB9LFxuICAgIHBsYWNlX2lkOiAnQ2hJSms5djB4dGxSRGhNUmhydHJ0MkNoSWljJyxcbiAgICBzb3VyY2U6ICdoaXN0b3J5JyxcbiAgfSxcbiAge1xuICAgIHN1Z2dlc3Rpb25faWQ6ICcxMjM0JyxcbiAgICBhZGRpdGlvbmFsX2luZm86ICc0NDggROKAmUFyZ2VucyBHYXJkZW4sIExleWxhbmQsIFNsaWVtYSwgTWFsdGEnLFxuICAgIGxvY2F0aW9uOiB7IGxhdDogMzUuOTA5NTAxMSwgbG5nOiAxNC40OTQ1OTgyIH0sXG4gICAgcGxhY2VfaWQ6ICdDaElKazl2MHh0bFJEaE1SaHJ0cnQyQ2hJaWMnLFxuICAgIHNvdXJjZTogJ2hpc3RvcnknLFxuICB9LFxuXTtcbiJdfQ==
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F5cG9pbnQubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWNhYnMtY29tcG9uZW50cy9zcmMvbGliL2Jhc2UvbW9kZWxzL3dheXBvaW50Lm1vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUErQkEsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQXlCO0lBQ3hEO1FBQ0UsYUFBYSxFQUFFLEtBQUs7UUFDcEIsZUFBZSxFQUFFLGVBQWU7UUFDaEMsUUFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFO1FBQzlDLFFBQVEsRUFBRSw2QkFBNkI7UUFDdkMsTUFBTSxFQUFFLFNBQVM7S0FDbEI7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQXlCO0lBQ3pEO1FBQ0UsYUFBYSxFQUFFLE1BQU07UUFDckIsZUFBZSxFQUFFLG9CQUFvQjtRQUNyQyxRQUFRLEVBQUUsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUU7UUFDOUMsUUFBUSxFQUFFLDZCQUE2QjtRQUN2QyxNQUFNLEVBQUUsU0FBUztLQUNsQjtJQUNEO1FBQ0UsYUFBYSxFQUFFLE1BQU07UUFDckIsZUFBZSxFQUFFLDZDQUE2QztRQUM5RCxRQUFRLEVBQUUsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUU7UUFDOUMsUUFBUSxFQUFFLDZCQUE2QjtRQUN2QyxNQUFNLEVBQUUsU0FBUztLQUNsQjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUGxhY2VSZXN1bHQgPSBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VSZXN1bHQ7XG5pbXBvcnQgeyBXYXlwb2ludFR5cGVFbnVtIH0gZnJvbSAnLi4vY29uc3RzL3dheXBvaW50LmNvbnN0cyc7XG5pbXBvcnQgUHJlZGljdGlvblRlcm0gPSBnb29nbGUubWFwcy5wbGFjZXMuUHJlZGljdGlvblRlcm07XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2F5cG9pbnRTdWdnZXN0aW9uIHtcbiAgc3VnZ2VzdGlvbl9pZD86IHN0cmluZztcbiAgYWRkaXRpb25hbF9pbmZvPzogc3RyaW5nO1xuICBsb2NhdGlvbj86IEdlb1BvaW50O1xuICBwbGFjZV9pZDogc3RyaW5nO1xuICBzb3VyY2U/OiBzdHJpbmc7XG4gIGZyZXF1ZW5jeT86IG51bWJlcjtcbiAgbGFzdF92aXNpdD86IHN0cmluZyB8IERhdGU7XG4gIGdlb19rZXk/OiBzdHJpbmc7XG4gIHByZWRpY3Rpb25fdGVybT86IFByZWRpY3Rpb25UZXJtW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2VvUG9pbnQge1xuICBsYXQ6IG51bWJlcjtcbiAgbG5nOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR29vZ2xlUGxhY2VSZXN1bHQge1xuICBwbGFjZTogUGxhY2VSZXN1bHQ7XG4gIHRleHQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXYXlwb2ludFF1ZXJ5Q2hhbmdlIHtcbiAgd2F5cG9pbnRfdHlwZTogV2F5cG9pbnRUeXBlRW51bTtcbiAgcGxhY2VfbmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgV0FZUE9JTlRfU1VHR0VTVElPTlM6IFdheXBvaW50U3VnZ2VzdGlvbltdID0gW1xuICB7XG4gICAgc3VnZ2VzdGlvbl9pZDogJzEyMycsXG4gICAgYWRkaXRpb25hbF9pbmZvOiAnRmFzdGxhbmUgTHRkLicsXG4gICAgbG9jYXRpb246IHsgbGF0OiAzNS45MDM4NjIzLCBsbmc6IDE0LjQxMjk1MzMgfSxcbiAgICBwbGFjZV9pZDogJ0NoSUprOXYweHRsUkRoTVJocnRydDJDaElpYycsXG4gICAgc291cmNlOiAnaGlzdG9yeScsXG4gIH0sXG5dO1xuXG5leHBvcnQgY29uc3QgV0FZUE9JTlRfU1VHR0VTVElPTlMyOiBXYXlwb2ludFN1Z2dlc3Rpb25bXSA9IFtcbiAge1xuICAgIHN1Z2dlc3Rpb25faWQ6ICcxMjM0JyxcbiAgICBhZGRpdGlvbmFsX2luZm86ICdGYXN0bGFuZSBMdGQuIDIwMDAnLFxuICAgIGxvY2F0aW9uOiB7IGxhdDogMzUuOTAzODYyMywgbG5nOiAxNC40MTI5NTMzIH0sXG4gICAgcGxhY2VfaWQ6ICdDaElKazl2MHh0bFJEaE1SaHJ0cnQyQ2hJaWMnLFxuICAgIHNvdXJjZTogJ2hpc3RvcnknLFxuICB9LFxuICB7XG4gICAgc3VnZ2VzdGlvbl9pZDogJzEyMzQnLFxuICAgIGFkZGl0aW9uYWxfaW5mbzogJzQ0OCBE4oCZQXJnZW5zIEdhcmRlbiwgTGV5bGFuZCwgU2xpZW1hLCBNYWx0YScsXG4gICAgbG9jYXRpb246IHsgbGF0OiAzNS45MDk1MDExLCBsbmc6IDE0LjQ5NDU5ODIgfSxcbiAgICBwbGFjZV9pZDogJ0NoSUprOXYweHRsUkRoTVJocnRydDJDaElpYycsXG4gICAgc291cmNlOiAnaGlzdG9yeScsXG4gIH0sXG5dO1xuIl19
@@ -1,5 +1,5 @@
1
1
  import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR, NgControl, Validators, } from '@angular/forms';
2
+ import { NG_VALUE_ACCESSOR, NgControl, } from '@angular/forms';
3
3
  import { format, isEqual, isValid } from 'date-fns';
4
4
  import Holidays from 'date-holidays';
5
5
  import { isEqual as lodashIsEqual } from 'lodash';
@@ -28,7 +28,6 @@ export class EcabsDateRangePickerComponentV2 extends EcabsElementBaseComponent {
28
28
  excludeWeekends;
29
29
  specificDates;
30
30
  holidayOptions;
31
- dateToOptional = false;
32
31
  onblur = new EventEmitter();
33
32
  val;
34
33
  pickerTo;
@@ -69,7 +68,7 @@ export class EcabsDateRangePickerComponentV2 extends EcabsElementBaseComponent {
69
68
  if (val && isValid(new Date(val))) {
70
69
  this._dateFrom = val;
71
70
  this.minDateTo = new Date(val);
72
- if (!this.dateTo && !this.dateToOptional) {
71
+ if (!this.dateTo) {
73
72
  this.pickerTo?.open();
74
73
  }
75
74
  }
@@ -191,32 +190,22 @@ export class EcabsDateRangePickerComponentV2 extends EcabsElementBaseComponent {
191
190
  return true;
192
191
  }
193
192
  dateRangeValidator(control) {
194
- const required = control?.hasValidator(Validators.required);
195
193
  if (!control.value) {
196
- if (required) {
197
- control.setErrors({ required: true });
198
- }
199
194
  return;
200
195
  }
201
196
  const { dateFrom, dateTo } = control.value;
202
- control.setErrors(null);
203
- if (required &&
204
- (!dateFrom || dateFrom?.length === 0) &&
205
- (!dateTo || dateTo?.length === 0)) {
206
- control.setErrors({ required: true });
207
- }
208
- else if (!dateFrom && dateTo) {
209
- control.setErrors({ rangeFrom: true });
210
- }
211
- else if (dateFrom && !dateTo && !this.dateToOptional) {
212
- control.setErrors({ rangeTo: true });
213
- }
214
- else if (dateFrom && dateTo && new Date(dateFrom) > new Date(dateTo)) {
197
+ const from = new Date(dateFrom);
198
+ const to = new Date(dateTo);
199
+ if (dateFrom && dateTo && from > to) {
215
200
  control.setErrors({ rangeOrder: true });
216
201
  }
202
+ else if (control.hasError('rangeOrder')) {
203
+ const { rangeOrder: _, ...rest } = control.errors ?? {};
204
+ control.setErrors(Object.keys(rest).length ? rest : null);
205
+ }
217
206
  }
218
207
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsDateRangePickerComponentV2, deps: [{ token: i0.Injector }, { token: i1.EcabsDatePickerHeaderService }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
219
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsDateRangePickerComponentV2, selector: "ecabs-date-range-picker-v2", inputs: { minDate: "minDate", maxDate: "maxDate", touchUi: "touchUi", cancelLabel: "cancelLabel", applyLabel: "applyLabel", startDatePlaceholder: "startDatePlaceholder", endDatePlaceholder: "endDatePlaceholder", separatorLabel: "separatorLabel", excludeHolidays: "excludeHolidays", excludeWeekends: "excludeWeekends", specificDates: "specificDates", holidayOptions: "holidayOptions", dateToOptional: "dateToOptional" }, outputs: { onblur: "onblur" }, providers: [
208
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsDateRangePickerComponentV2, selector: "ecabs-date-range-picker-v2", inputs: { minDate: "minDate", maxDate: "maxDate", touchUi: "touchUi", cancelLabel: "cancelLabel", applyLabel: "applyLabel", startDatePlaceholder: "startDatePlaceholder", endDatePlaceholder: "endDatePlaceholder", separatorLabel: "separatorLabel", excludeHolidays: "excludeHolidays", excludeWeekends: "excludeWeekends", specificDates: "specificDates", holidayOptions: "holidayOptions" }, outputs: { onblur: "onblur" }, providers: [
220
209
  {
221
210
  provide: NG_VALUE_ACCESSOR,
222
211
  useExisting: EcabsDateRangePickerComponentV2,
@@ -257,12 +246,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
257
246
  type: Input
258
247
  }], holidayOptions: [{
259
248
  type: Input
260
- }], dateToOptional: [{
261
- type: Input
262
249
  }], onblur: [{
263
250
  type: Output
264
251
  }], pickerTo: [{
265
252
  type: ViewChild,
266
253
  args: ['pickerTo']
267
254
  }] } });
268
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtZGF0ZS1yYW5nZS1waWNrZXItdjIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWNhYnMtY29tcG9uZW50cy9zcmMvbGliL2VjYWJzLWRhdGUtcmFuZ2UtcGlja2VyLXYyL2VjYWJzLWRhdGUtcmFuZ2UtcGlja2VyLXYyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1kYXRlLXJhbmdlLXBpY2tlci12Mi9lY2Ficy1kYXRlLXJhbmdlLXBpY2tlci12Mi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFFWixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEQsT0FBTyxRQUFRLE1BQU0sZUFBZSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxPQUFPLElBQUksYUFBYSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRWxELE9BQU8seUJBQXlCLE1BQU0sc0JBQXNCLENBQUM7QUFNN0QsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0seUZBQXlGLENBQUM7QUFDaEosT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7QUFjaEUsTUFBTSxPQUFPLCtCQUNYLFNBQVEseUJBQXlCO0lBdUdkO0lBQ0E7SUFDQTtJQXRHVixPQUFPLENBQU87SUFDZCxPQUFPLENBQU87SUFDZCxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLFdBQVcsQ0FBUztJQUNwQixV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QUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUksTUFBTTtzQkFBZixNQUFNO2dCQU1nQixRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBOZ0NvbnRyb2wsXG4gIFVudHlwZWRGb3JtQ29udHJvbCxcbiAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGF0ZVJhbmdlUGlja2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBmb3JtYXQsIGlzRXF1YWwsIGlzVmFsaWQgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgSG9saWRheXMgZnJvbSAnZGF0ZS1ob2xpZGF5cyc7XG5pbXBvcnQgeyBpc0VxdWFsIGFzIGxvZGFzaElzRXF1YWwgfSBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgRWNhYnNFbGVtZW50QmFzZUNvbXBvbmVudCBmcm9tICcuLi9iYXNlL2VsZW1lbnQtYmFzZSc7XG5pbXBvcnQge1xuICBFY2Fic0RhdGVQaWNrZXJIb2xpZGF5T3B0aW9ucyxcbiAgRWNhYnNEYXRlUGlja2VyVHJhbnNsYXRpb25zLFxufSBmcm9tICcuLi9iYXNlL21vZGVscy9lY2Ficy1kYXRlLXBpY2tlci10cmFuc2xhdGlvbnMubW9kZWxzJztcbmltcG9ydCB7IEVjYWJzRGF0ZVBpY2tlckhlYWRlclNlcnZpY2UgfSBmcm9tICcuLi9iYXNlL3NlcnZpY2VzL2VjYWJzLWRhdGUtcGlja2VyLXRyYW5zbGF0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IEVjYWJzRGF0ZVJhbmdlUGlja2VySGVhZGVyQ29tcG9uZW50VjIgfSBmcm9tICcuL2NvbXBvbmVudHMvZWNhYnMtZGF0ZS1yYW5nZS1waWNrZXItaGVhZGVyL2VjYWJzLWRhdGUtcmFuZ2UtcGlja2VyLWhlYWRlci12Mi5jb21wb25lbnQnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlY2Ficy1kYXRlLXJhbmdlLXBpY2tlci12MicsXG4gIHRlbXBsYXRlVXJsOiAnLi9lY2Ficy1kYXRlLXJhbmdlLXBpY2tlci12Mi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VjYWJzLWRhdGUtcmFuZ2UtcGlja2VyLXYyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IEVjYWJzRGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50VjIsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBFY2Fic0RhdGVSYW5nZVBpY2tlckNvbXBvbmVudFYyXG4gIGV4dGVuZHMgRWNhYnNFbGVtZW50QmFzZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0LCBPbkluaXQsIE9uQ2hhbmdlc1xue1xuICBASW5wdXQoKSBtaW5EYXRlOiBEYXRlO1xuICBASW5wdXQoKSBtYXhEYXRlOiBEYXRlO1xuICBASW5wdXQoKSB0b3VjaFVpID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNhbmNlbExhYmVsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFwcGx5TGFiZWw6IHN0cmluZztcbiAgQElucHV0KCkgc3RhcnREYXRlUGxhY2Vob2xkZXI6IHN0cmluZztcbiAgQElucHV0KCkgZW5kRGF0ZVBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNlcGFyYXRvckxhYmVsID0gJ3RvJztcbiAgQElucHV0KCkgZXhjbHVkZUhvbGlkYXlzOiBib29sZWFuO1xuICBASW5wdXQoKSBleGNsdWRlV2Vla2VuZHM6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHNwZWNpZmljRGF0ZXM6IERhdGVbXTtcbiAgQElucHV0KCkgaG9saWRheU9wdGlvbnM6IEVjYWJzRGF0ZVBpY2tlckhvbGlkYXlPcHRpb25zO1xuICBASW5wdXQoKSBkYXRlVG9PcHRpb25hbCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBvbmJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgdmFsOiB7XG4gICAgZGF0ZUZyb206IHN0cmluZztcbiAgICBkYXRlVG86IHN0cmluZztcbiAgfTtcblxuICBAVmlld0NoaWxkKCdwaWNrZXJUbycpIHBpY2tlclRvOiBNYXREYXRlUmFuZ2VQaWNrZXI8YW55PiB8IHVuZGVmaW5lZDtcblxuICBoZWFkZXIgPSBFY2Fic0RhdGVSYW5nZVBpY2tlckhlYWRlckNvbXBvbmVudFYyO1xuICBfZGF0ZUZyb206IHN0cmluZztcbiAgX2RhdGVUbzogc3RyaW5nO1xuICB0cmFuc2xhdGlvbkNvbmZpZzogRWNhYnNEYXRlUGlja2VyVHJhbnNsYXRpb25zO1xuICBtaW5EYXRlRnJvbT86IERhdGUgPSB1bmRlZmluZWQ7XG4gIG1heERhdGVGcm9tPzogRGF0ZSA9IHVuZGVmaW5lZDtcbiAgbWluRGF0ZVRvPzogRGF0ZSA9IHVuZGVmaW5lZDtcbiAgbWF4RGF0ZVRvPzogRGF0ZSA9IHVuZGVmaW5lZDtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGFuZWxDbGFzcyA9ICdlY2Ficy1kYXRlLXJhbmdlLXBpY2tlci12Mic7XG5cbiAgcHJpdmF0ZSBob2xpZGF5SW5zdGFuY2U6IEhvbGlkYXlzO1xuXG4gIGdldCB2YWx1ZSgpOiB7XG4gICAgZGF0ZUZyb206IHN0cmluZztcbiAgICBkYXRlVG86IHN0cmluZztcbiAgfSB7XG4gICAgcmV0dXJuIHRoaXMudmFsO1xuICB9XG5cbiAgZ2V0IGRhdGVGcm9tKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGVGcm9tO1xuICB9XG5cbiAgZ2V0IGRhdGVUbygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9kYXRlVG87XG4gIH1cblxuICAvL2VzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICBzZXQgdmFsdWUodmFsOiB7IGRhdGVGcm9tOiBzdHJpbmc7IGRhdGVUbzogc3RyaW5nIH0pIHtcbiAgICBpZiAodGhpcy52YWwgIT09IHZhbCkge1xuICAgICAgdGhpcy52YWwgPSB2YWw7XG4gICAgICB0aGlzLmRhdGVGcm9tID0gdmFsLmRhdGVGcm9tO1xuICAgICAgdGhpcy5kYXRlVG8gPSB2YWwuZGF0ZVRvO1xuICAgICAgdGhpcy5vbkNoYW5nZSh2YWwpO1xuICAgICAgdGhpcy5vblRvdWNoKHZhbCk7XG4gICAgfVxuICB9XG5cbiAgLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgc2V0IGRhdGVGcm9tKHZhbDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuX2RhdGVGcm9tID09PSB2YWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodmFsICYmIGlzVmFsaWQobmV3IERhdGUodmFsKSkpIHtcbiAgICAgIHRoaXMuX2RhdGVGcm9tID0gdmFsO1xuICAgICAgdGhpcy5taW5EYXRlVG8gPSBuZXcgRGF0ZSh2YWwpO1xuXG4gICAgICBpZiAoIXRoaXMuZGF0ZVRvICYmICF0aGlzLmRhdGVUb09wdGlvbmFsKSB7XG4gICAgICAgIHRoaXMucGlja2VyVG8/Lm9wZW4oKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCF2YWwpIHtcbiAgICAgIHRoaXMuX2RhdGVGcm9tID0gdmFsO1xuICAgICAgdGhpcy5taW5EYXRlVG8gPSB0aGlzLm1pbkRhdGU7XG4gICAgfVxuXG4gICAgdGhpcy5vbkFwcGx5KCk7XG4gIH1cblxuICAvL2VzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICBzZXQgZGF0ZVRvKHZhbDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuX2RhdGVUbyA9PT0gdmFsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHZhbCAmJiBpc1ZhbGlkKG5ldyBEYXRlKHZhbCkpKSB7XG4gICAgICB0aGlzLl9kYXRlVG8gPSB2YWw7XG4gICAgICB0aGlzLm1heERhdGVGcm9tID0gbmV3IERhdGUodmFsKTtcbiAgICB9IGVsc2UgaWYgKCF2YWwpIHtcbiAgICAgIHRoaXMuX2RhdGVUbyA9IHZhbDtcbiAgICAgIHRoaXMubWF4RGF0ZUZyb20gPSB0aGlzLm1heERhdGU7XG4gICAgfVxuXG4gICAgdGhpcy5vbkFwcGx5KCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVjYWJzRGF0ZVBpY2tlckhlYWRlclNlcnZpY2U6IEVjYWJzRGF0ZVBpY2tlckhlYWRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmOiBEZXN0cm95UmVmLFxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IHsgbWluRGF0ZSwgbWF4RGF0ZSB9ID0gY2hhbmdlcztcblxuICAgIGlmIChtaW5EYXRlPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMubWluRGF0ZUZyb20gPSBtaW5EYXRlPy5jdXJyZW50VmFsdWU7XG4gICAgICB0aGlzLm1pbkRhdGVUbyA9IG1pbkRhdGU/LmN1cnJlbnRWYWx1ZTtcbiAgICB9XG5cbiAgICBpZiAobWF4RGF0ZT8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLm1heERhdGVGcm9tID0gbWF4RGF0ZT8uY3VycmVudFZhbHVlO1xuICAgICAgdGhpcy5tYXhEYXRlVG8gPSBtYXhEYXRlPy5jdXJyZW50VmFsdWU7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5lY2Fic0RhdGVQaWNrZXJIZWFkZXJTZXJ2aWNlXG4gICAgICAuZ2V0Q29uZmlnKClcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoY29uZmlnKSA9PiAodGhpcy50cmFuc2xhdGlvbkNvbmZpZyA9IGNvbmZpZykpO1xuXG4gICAgaWYgKHRoaXMuaG9saWRheU9wdGlvbnM/LmNvdW50cnlDb2RlKSB7XG4gICAgICB0aGlzLmhvbGlkYXlJbnN0YW5jZSA9IG5ldyBIb2xpZGF5cyhcbiAgICAgICAgdGhpcy5ob2xpZGF5T3B0aW9ucy5jb3VudHJ5Q29kZS50b1VwcGVyQ2FzZSgpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc3QgbmdDb250cm9sOiBOZ0NvbnRyb2wgPSB0aGlzLmluamVjdG9yLmdldChOZ0NvbnRyb2wsIG51bGwpO1xuICAgIGlmIChuZ0NvbnRyb2wpIHtcbiAgICAgIHRoaXMuY29udHJvbCA9IG5nQ29udHJvbC5jb250cm9sIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcbiAgICAgIHRoaXMuY29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5kYXRlUmFuZ2VWYWxpZGF0b3IodGhpcy5jb250cm9sKSk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5kYXRlRnJvbSA9IHRoaXMudmFsdWUuZGF0ZUZyb207XG4gICAgICAgIHRoaXMuZGF0ZVRvID0gdGhpcy52YWx1ZS5kYXRlVG87XG4gICAgICAgIHRoaXMuZGF0ZVJhbmdlVmFsaWRhdG9yKHRoaXMuY29udHJvbCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG4gIG9uVG91Y2g6IGFueSA9ICgpID0+IHt9O1xuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgfVxuXG4gIGJsdXJDaGFuZ2UoZSk6IHZvaWQge1xuICAgIHRoaXMub25ibHVyLmVtaXQoZSk7XG4gIH1cblxuICBvbkFwcGx5KCk6IHZvaWQge1xuICAgIGNvbnN0IG5ld1ZhbHVlID0ge1xuICAgICAgZGF0ZUZyb206IHRoaXMuZGF0ZUZyb20sXG4gICAgICBkYXRlVG86IHRoaXMuZGF0ZVRvLFxuICAgIH07XG5cbiAgICBpZiAoIWxvZGFzaElzRXF1YWwodGhpcy52YWx1ZSwgbmV3VmFsdWUpKSB7XG4gICAgICB0aGlzLnZhbCA9IG5ld1ZhbHVlO1xuICAgICAgdGhpcy5vbkNoYW5nZShuZXdWYWx1ZSk7XG4gICAgICB0aGlzLm9uVG91Y2gobmV3VmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSB7XG4gICAgICBkYXRlRnJvbTogdGhpcy5kYXRlRnJvbSxcbiAgICAgIGRhdGVUbzogdGhpcy5kYXRlVG8sXG4gICAgfTtcbiAgfVxuXG4gIGZpbHRlckRhdGVSYW5nZSA9IChkYXRlOiBEYXRlKTogYm9vbGVhbiA9PiB7XG4gICAgbGV0IHJlc3VsdCA9IHRydWU7XG5cbiAgICBpZiAoaXNWYWxpZChuZXcgRGF0ZShkYXRlKSkpIHtcbiAgICAgIGNvbnN0IGRheSA9IGRhdGU/LmdldERheSgpO1xuXG4gICAgICBpZiAodGhpcy5leGNsdWRlV2Vla2VuZHMpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICYmIGRheSAhPT0gMCAmJiBkYXkgIT09IDY7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmV4Y2x1ZGVIb2xpZGF5cykge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQgJiYgdGhpcy5pc0RhdGVOb3RIb2xpZGF5KGRhdGUpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5zcGVjaWZpY0RhdGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHNwZWNpZmljRGF0ZXMgPSB0aGlzLnNwZWNpZmljRGF0ZXM7XG4gICAgICAgIGlmIChzcGVjaWZpY0RhdGVzICYmIHNwZWNpZmljRGF0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IGluZGV4ID0gc3BlY2lmaWNEYXRlcy5maW5kSW5kZXgoKHNwZWNpZmljRGF0ZSkgPT5cbiAgICAgICAgICAgIGlzRXF1YWwoZGF0ZSwgc3BlY2lmaWNEYXRlKSxcbiAgICAgICAgICApO1xuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAmJiBpbmRleCA9PT0gLTE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIGlzRGF0ZU5vdEhvbGlkYXkoZGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHsgY291bnRyeUNvZGUsIHRpbWVab25lT2Zmc2V0IH0gPSB0aGlzLmhvbGlkYXlPcHRpb25zID8/IHt9O1xuXG4gICAgaWYgKGNvdW50cnlDb2RlICYmIHRpbWVab25lT2Zmc2V0KSB7XG4gICAgICByZXR1cm4gIXRoaXMuaG9saWRheUluc3RhbmNlPy5pc0hvbGlkYXkoXG4gICAgICAgIGAke2Zvcm1hdChkYXRlLCAneXl5eS1NTS1kZCcpfVQwMDowMDowMCR7dGltZVpvbmVPZmZzZXR9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBkYXRlUmFuZ2VWYWxpZGF0b3IoY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sKSB7XG4gICAgY29uc3QgcmVxdWlyZWQgPSBjb250cm9sPy5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG5cbiAgICBpZiAoIWNvbnRyb2wudmFsdWUpIHtcbiAgICAgIGlmIChyZXF1aXJlZCkge1xuICAgICAgICBjb250cm9sLnNldEVycm9ycyh7IHJlcXVpcmVkOiB0cnVlIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgeyBkYXRlRnJvbSwgZGF0ZVRvIH0gPSBjb250cm9sLnZhbHVlO1xuICAgIGNvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xuXG4gICAgaWYgKFxuICAgICAgcmVxdWlyZWQgJiZcbiAgICAgICghZGF0ZUZyb20gfHwgZGF0ZUZyb20/Lmxlbmd0aCA9PT0gMCkgJiZcbiAgICAgICghZGF0ZVRvIHx8IGRhdGVUbz8ubGVuZ3RoID09PSAwKVxuICAgICkge1xuICAgICAgY29udHJvbC5zZXRFcnJvcnMoeyByZXF1aXJlZDogdHJ1ZSB9KTtcbiAgICB9IGVsc2UgaWYgKCFkYXRlRnJvbSAmJiBkYXRlVG8pIHtcbiAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKHsgcmFuZ2VGcm9tOiB0cnVlIH0pO1xuICAgIH0gZWxzZSBpZiAoZGF0ZUZyb20gJiYgIWRhdGVUbyAmJiAhdGhpcy5kYXRlVG9PcHRpb25hbCkge1xuICAgICAgY29udHJvbC5zZXRFcnJvcnMoeyByYW5nZVRvOiB0cnVlIH0pO1xuICAgIH0gZWxzZSBpZiAoZGF0ZUZyb20gJiYgZGF0ZVRvICYmIG5ldyBEYXRlKGRhdGVGcm9tKSA+IG5ldyBEYXRlKGRhdGVUbykpIHtcbiAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKHsgcmFuZ2VPcmRlcjogdHJ1ZSB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxlY2Ficy1lbGVtZW50LXdyYXBwZXIgW2RhdGFdPVwiZ2V0RGF0YSgpXCI+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkX19yYW5nZS0td3JhcHBlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkX19yYW5nZVwiPlxuICAgICAgPGlucHV0XG4gICAgICAgIGNsYXNzPVwiYm9yZGVyLW5vbmUgdy1mdWxsXCJcbiAgICAgICAgaWQ9XCJ7eyBuYW1lICsgJ2RhdGVGcm9tJyB9fVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwiZGF0ZUZyb21cIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwic3RhcnREYXRlUGxhY2Vob2xkZXIgPz8gdHJhbnNsYXRpb25Db25maWc/LnN0YXJ0RGF0ZVBsYWNlaG9sZGVyXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW21hdERhdGVwaWNrZXJdPVwicGlja2VyRnJvbVwiXG4gICAgICAgIFttaW5dPVwibWluRGF0ZUZyb21cIlxuICAgICAgICBbbWF4XT1cIm1heERhdGVGcm9tXCJcbiAgICAgICAgW21hdERhdGVwaWNrZXJGaWx0ZXJdPVwiZmlsdGVyRGF0ZVJhbmdlXCJcbiAgICAgICAgZWNhYnNNYXNrRGF0ZVxuICAgICAgICAoYmx1cik9XCJvblRvdWNoKClcIlxuICAgICAgICAoY2xpY2spPVwicGlja2VyRnJvbS5vcGVuKClcIlxuICAgICAgLz5cbiAgICAgIDxtYXQtZGF0ZXBpY2tlciAjcGlja2VyRnJvbVxuICAgICAgICAgICAgICAgICAgICAgIFtwYW5lbENsYXNzXT1cInBhbmVsQ2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjYWxlbmRhckhlYWRlckNvbXBvbmVudF09XCJoZWFkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0b3VjaFVpXT1cInRvdWNoVWlcIj5cbiAgICAgIDwvbWF0LWRhdGVwaWNrZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8c3BhbiBjbGFzcz1cInRleHQtZ3JheS00MDAgcHgtMyB0ZXh0LXNtXCI+e3sgc2VwYXJhdG9yTGFiZWwgfX08L3NwYW4+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRfX3JhbmdlXCI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3M9XCJib3JkZXItbm9uZSB3LWZ1bGxcIlxuICAgICAgICBpZD1cInt7IG5hbWUgKyAnZGF0ZVRvJyB9fVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwiZGF0ZVRvXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImVuZERhdGVQbGFjZWhvbGRlciA/PyB0cmFuc2xhdGlvbkNvbmZpZz8uZW5kRGF0ZVBsYWNlaG9sZGVyXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW21hdERhdGVwaWNrZXJdPVwicGlja2VyVG9cIlxuICAgICAgICBbbWluXT1cIm1pbkRhdGVUb1wiXG4gICAgICAgIFttYXhdPVwibWF4RGF0ZVRvXCJcbiAgICAgICAgW21hdERhdGVwaWNrZXJGaWx0ZXJdPVwiZmlsdGVyRGF0ZVJhbmdlXCJcbiAgICAgICAgZWNhYnNNYXNrRGF0ZVxuICAgICAgICAoYmx1cik9XCJvblRvdWNoKClcIlxuICAgICAgICAoY2xpY2spPVwicGlja2VyVG8ub3BlbigpXCJcbiAgICAgIC8+XG4gICAgICA8bWF0LWRhdGVwaWNrZXIgI3BpY2tlclRvXG4gICAgICAgICAgICAgICAgICAgICAgW3BhbmVsQ2xhc3NdPVwicGFuZWxDbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2NhbGVuZGFySGVhZGVyQ29tcG9uZW50XT1cImhlYWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RvdWNoVWldPVwidG91Y2hVaVwiPlxuICAgICAgPC9tYXQtZGF0ZXBpY2tlcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2VjYWJzLWVsZW1lbnQtd3JhcHBlcj5cbiJdfQ==
255
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtZGF0ZS1yYW5nZS1waWNrZXItdjIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWNhYnMtY29tcG9uZW50cy9zcmMvbGliL2VjYWJzLWRhdGUtcmFuZ2UtcGlja2VyLXYyL2VjYWJzLWRhdGUtcmFuZ2UtcGlja2VyLXYyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1kYXRlLXJhbmdlLXBpY2tlci12Mi9lY2Ficy1kYXRlLXJhbmdlLXBpY2tlci12Mi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFFWixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsR0FFVixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwRCxPQUFPLFFBQVEsTUFBTSxlQUFlLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sSUFBSSxhQUFhLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFbEQsT0FBTyx5QkFBeUIsTUFBTSxzQkFBc0IsQ0FBQztBQU03RCxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSx5RkFBeUYsQ0FBQztBQUNoSixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7OztBQWNoRSxNQUFNLE9BQU8sK0JBQ1gsU0FBUSx5QkFBeUI7SUFzR2Q7SUFDQTtJQUNBO0lBckdWLE9BQU8sQ0FBTztJQUNkLE9BQU8sQ0FBTztJQUNkLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDaEIsV0FBVyxDQUFTO0lBQ3BCLFVBQVUsQ0FBUztJ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LENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztZQUN4RCxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzNEO0lBQ0gsQ0FBQzt3R0FwUFUsK0JBQStCOzRGQUEvQiwrQkFBK0Isc2RBUi9CO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLCtCQUErQjtnQkFDNUMsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLDRLQzNDSCx3c0RBZ0RBOzs0RkRIYSwrQkFBK0I7a0JBWjNDLFNBQVM7K0JBQ0UsNEJBQTRCLGFBRzNCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsaUNBQWlDOzRCQUM1QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjttS0FNUSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUksTUFBTTtzQkFBZixNQUFNO2dCQU1nQixRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBOZ0NvbnRyb2wsXG4gIFVudHlwZWRGb3JtQ29udHJvbCxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGF0ZVJhbmdlUGlja2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBmb3JtYXQsIGlzRXF1YWwsIGlzVmFsaWQgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgSG9saWRheXMgZnJvbSAnZGF0ZS1ob2xpZGF5cyc7XG5pbXBvcnQgeyBpc0VxdWFsIGFzIGxvZGFzaElzRXF1YWwgfSBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgRWNhYnNFbGVtZW50QmFzZUNvbXBvbmVudCBmcm9tICcuLi9iYXNlL2VsZW1lbnQtYmFzZSc7XG5pbXBvcnQge1xuICBFY2Fic0RhdGVQaWNrZXJIb2xpZGF5T3B0aW9ucyxcbiAgRWNhYnNEYXRlUGlja2VyVHJhbnNsYXRpb25zLFxufSBmcm9tICcuLi9iYXNlL21vZGVscy9lY2Ficy1kYXRlLXBpY2tlci10cmFuc2xhdGlvbnMubW9kZWxzJztcbmltcG9ydCB7IEVjYWJzRGF0ZVBpY2tlckhlYWRlclNlcnZpY2UgfSBmcm9tICcuLi9iYXNlL3NlcnZpY2VzL2VjYWJzLWRhdGUtcGlja2VyLXRyYW5zbGF0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IEVjYWJzRGF0ZVJhbmdlUGlja2VySGVhZGVyQ29tcG9uZW50VjIgfSBmcm9tICcuL2NvbXBvbmVudHMvZWNhYnMtZGF0ZS1yYW5nZS1waWNrZXItaGVhZGVyL2VjYWJzLWRhdGUtcmFuZ2UtcGlja2VyLWhlYWRlci12Mi5jb21wb25lbnQnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlY2Ficy1kYXRlLXJhbmdlLXBpY2tlci12MicsXG4gIHRlbXBsYXRlVXJsOiAnLi9lY2Ficy1kYXRlLXJhbmdlLXBpY2tlci12Mi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VjYWJzLWRhdGUtcmFuZ2UtcGlja2VyLXYyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IEVjYWJzRGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50VjIsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBFY2Fic0RhdGVSYW5nZVBpY2tlckNvbXBvbmVudFYyXG4gIGV4dGVuZHMgRWNhYnNFbGVtZW50QmFzZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0LCBPbkluaXQsIE9uQ2hhbmdlc1xue1xuICBASW5wdXQoKSBtaW5EYXRlOiBEYXRlO1xuICBASW5wdXQoKSBtYXhEYXRlOiBEYXRlO1xuICBASW5wdXQoKSB0b3VjaFVpID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNhbmNlbExhYmVsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFwcGx5TGFiZWw6IHN0cmluZztcbiAgQElucHV0KCkgc3RhcnREYXRlUGxhY2Vob2xkZXI6IHN0cmluZztcbiAgQElucHV0KCkgZW5kRGF0ZVBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNlcGFyYXRvckxhYmVsID0gJ3RvJztcbiAgQElucHV0KCkgZXhjbHVkZUhvbGlkYXlzOiBib29sZWFuO1xuICBASW5wdXQoKSBleGNsdWRlV2Vla2VuZHM6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHNwZWNpZmljRGF0ZXM6IERhdGVbXTtcbiAgQElucHV0KCkgaG9saWRheU9wdGlvbnM6IEVjYWJzRGF0ZVBpY2tlckhvbGlkYXlPcHRpb25zO1xuXG4gIEBPdXRwdXQoKSBvbmJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgdmFsOiB7XG4gICAgZGF0ZUZyb206IHN0cmluZztcbiAgICBkYXRlVG86IHN0cmluZztcbiAgfTtcblxuICBAVmlld0NoaWxkKCdwaWNrZXJUbycpIHBpY2tlclRvOiBNYXREYXRlUmFuZ2VQaWNrZXI8YW55PiB8IHVuZGVmaW5lZDtcblxuICBoZWFkZXIgPSBFY2Fic0RhdGVSYW5nZVBpY2tlckhlYWRlckNvbXBvbmVudFYyO1xuICBfZGF0ZUZyb206IHN0cmluZztcbiAgX2RhdGVUbzogc3RyaW5nO1xuICB0cmFuc2xhdGlvbkNvbmZpZzogRWNhYnNEYXRlUGlja2VyVHJhbnNsYXRpb25zO1xuICBtaW5EYXRlRnJvbT86IERhdGUgPSB1bmRlZmluZWQ7XG4gIG1heERhdGVGcm9tPzogRGF0ZSA9IHVuZGVmaW5lZDtcbiAgbWluRGF0ZVRvPzogRGF0ZSA9IHVuZGVmaW5lZDtcbiAgbWF4RGF0ZVRvPzogRGF0ZSA9IHVuZGVmaW5lZDtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGFuZWxDbGFzcyA9ICdlY2Ficy1kYXRlLXJhbmdlLXBpY2tlci12Mic7XG5cbiAgcHJpdmF0ZSBob2xpZGF5SW5zdGFuY2U6IEhvbGlkYXlzO1xuXG4gIGdldCB2YWx1ZSgpOiB7XG4gICAgZGF0ZUZyb206IHN0cmluZztcbiAgICBkYXRlVG86IHN0cmluZztcbiAgfSB7XG4gICAgcmV0dXJuIHRoaXMudmFsO1xuICB9XG5cbiAgZ2V0IGRhdGVGcm9tKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGVGcm9tO1xuICB9XG5cbiAgZ2V0IGRhdGVUbygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9kYXRlVG87XG4gIH1cblxuICAvL2VzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICBzZXQgdmFsdWUodmFsOiB7IGRhdGVGcm9tOiBzdHJpbmc7IGRhdGVUbzogc3RyaW5nIH0pIHtcbiAgICBpZiAodGhpcy52YWwgIT09IHZhbCkge1xuICAgICAgdGhpcy52YWwgPSB2YWw7XG4gICAgICB0aGlzLmRhdGVGcm9tID0gdmFsLmRhdGVGcm9tO1xuICAgICAgdGhpcy5kYXRlVG8gPSB2YWwuZGF0ZVRvO1xuICAgICAgdGhpcy5vbkNoYW5nZSh2YWwpO1xuICAgICAgdGhpcy5vblRvdWNoKHZhbCk7XG4gICAgfVxuICB9XG5cbiAgLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgc2V0IGRhdGVGcm9tKHZhbDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuX2RhdGVGcm9tID09PSB2YWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodmFsICYmIGlzVmFsaWQobmV3IERhdGUodmFsKSkpIHtcbiAgICAgIHRoaXMuX2RhdGVGcm9tID0gdmFsO1xuICAgICAgdGhpcy5taW5EYXRlVG8gPSBuZXcgRGF0ZSh2YWwpO1xuXG4gICAgICBpZiAoIXRoaXMuZGF0ZVRvKSB7XG4gICAgICAgIHRoaXMucGlja2VyVG8/Lm9wZW4oKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCF2YWwpIHtcbiAgICAgIHRoaXMuX2RhdGVGcm9tID0gdmFsO1xuICAgICAgdGhpcy5taW5EYXRlVG8gPSB0aGlzLm1pbkRhdGU7XG4gICAgfVxuXG4gICAgdGhpcy5vbkFwcGx5KCk7XG4gIH1cblxuICAvL2VzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICBzZXQgZGF0ZVRvKHZhbDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuX2RhdGVUbyA9PT0gdmFsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHZhbCAmJiBpc1ZhbGlkKG5ldyBEYXRlKHZhbCkpKSB7XG4gICAgICB0aGlzLl9kYXRlVG8gPSB2YWw7XG4gICAgICB0aGlzLm1heERhdGVGcm9tID0gbmV3IERhdGUodmFsKTtcbiAgICB9IGVsc2UgaWYgKCF2YWwpIHtcbiAgICAgIHRoaXMuX2RhdGVUbyA9IHZhbDtcbiAgICAgIHRoaXMubWF4RGF0ZUZyb20gPSB0aGlzLm1heERhdGU7XG4gICAgfVxuXG4gICAgdGhpcy5vbkFwcGx5KCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVjYWJzRGF0ZVBpY2tlckhlYWRlclNlcnZpY2U6IEVjYWJzRGF0ZVBpY2tlckhlYWRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmOiBEZXN0cm95UmVmLFxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IHsgbWluRGF0ZSwgbWF4RGF0ZSB9ID0gY2hhbmdlcztcblxuICAgIGlmIChtaW5EYXRlPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMubWluRGF0ZUZyb20gPSBtaW5EYXRlPy5jdXJyZW50VmFsdWU7XG4gICAgICB0aGlzLm1pbkRhdGVUbyA9IG1pbkRhdGU/LmN1cnJlbnRWYWx1ZTtcbiAgICB9XG5cbiAgICBpZiAobWF4RGF0ZT8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLm1heERhdGVGcm9tID0gbWF4RGF0ZT8uY3VycmVudFZhbHVlO1xuICAgICAgdGhpcy5tYXhEYXRlVG8gPSBtYXhEYXRlPy5jdXJyZW50VmFsdWU7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5lY2Fic0RhdGVQaWNrZXJIZWFkZXJTZXJ2aWNlXG4gICAgICAuZ2V0Q29uZmlnKClcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoY29uZmlnKSA9PiAodGhpcy50cmFuc2xhdGlvbkNvbmZpZyA9IGNvbmZpZykpO1xuXG4gICAgaWYgKHRoaXMuaG9saWRheU9wdGlvbnM/LmNvdW50cnlDb2RlKSB7XG4gICAgICB0aGlzLmhvbGlkYXlJbnN0YW5jZSA9IG5ldyBIb2xpZGF5cyhcbiAgICAgICAgdGhpcy5ob2xpZGF5T3B0aW9ucy5jb3VudHJ5Q29kZS50b1VwcGVyQ2FzZSgpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc3QgbmdDb250cm9sOiBOZ0NvbnRyb2wgPSB0aGlzLmluamVjdG9yLmdldChOZ0NvbnRyb2wsIG51bGwpO1xuICAgIGlmIChuZ0NvbnRyb2wpIHtcbiAgICAgIHRoaXMuY29udHJvbCA9IG5nQ29udHJvbC5jb250cm9sIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcbiAgICAgIHRoaXMuY29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5kYXRlUmFuZ2VWYWxpZGF0b3IodGhpcy5jb250cm9sKSk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5kYXRlRnJvbSA9IHRoaXMudmFsdWUuZGF0ZUZyb207XG4gICAgICAgIHRoaXMuZGF0ZVRvID0gdGhpcy52YWx1ZS5kYXRlVG87XG4gICAgICAgIHRoaXMuZGF0ZVJhbmdlVmFsaWRhdG9yKHRoaXMuY29udHJvbCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG4gIG9uVG91Y2g6IGFueSA9ICgpID0+IHt9O1xuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgfVxuXG4gIGJsdXJDaGFuZ2UoZSk6IHZvaWQge1xuICAgIHRoaXMub25ibHVyLmVtaXQoZSk7XG4gIH1cblxuICBvbkFwcGx5KCk6IHZvaWQge1xuICAgIGNvbnN0IG5ld1ZhbHVlID0ge1xuICAgICAgZGF0ZUZyb206IHRoaXMuZGF0ZUZyb20sXG4gICAgICBkYXRlVG86IHRoaXMuZGF0ZVRvLFxuICAgIH07XG5cbiAgICBpZiAoIWxvZGFzaElzRXF1YWwodGhpcy52YWx1ZSwgbmV3VmFsdWUpKSB7XG4gICAgICB0aGlzLnZhbCA9IG5ld1ZhbHVlO1xuICAgICAgdGhpcy5vbkNoYW5nZShuZXdWYWx1ZSk7XG4gICAgICB0aGlzLm9uVG91Y2gobmV3VmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSB7XG4gICAgICBkYXRlRnJvbTogdGhpcy5kYXRlRnJvbSxcbiAgICAgIGRhdGVUbzogdGhpcy5kYXRlVG8sXG4gICAgfTtcbiAgfVxuXG4gIGZpbHRlckRhdGVSYW5nZSA9IChkYXRlOiBEYXRlKTogYm9vbGVhbiA9PiB7XG4gICAgbGV0IHJlc3VsdCA9IHRydWU7XG5cbiAgICBpZiAoaXNWYWxpZChuZXcgRGF0ZShkYXRlKSkpIHtcbiAgICAgIGNvbnN0IGRheSA9IGRhdGU/LmdldERheSgpO1xuXG4gICAgICBpZiAodGhpcy5leGNsdWRlV2Vla2VuZHMpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICYmIGRheSAhPT0gMCAmJiBkYXkgIT09IDY7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmV4Y2x1ZGVIb2xpZGF5cykge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQgJiYgdGhpcy5pc0RhdGVOb3RIb2xpZGF5KGRhdGUpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5zcGVjaWZpY0RhdGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHNwZWNpZmljRGF0ZXMgPSB0aGlzLnNwZWNpZmljRGF0ZXM7XG4gICAgICAgIGlmIChzcGVjaWZpY0RhdGVzICYmIHNwZWNpZmljRGF0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IGluZGV4ID0gc3BlY2lmaWNEYXRlcy5maW5kSW5kZXgoKHNwZWNpZmljRGF0ZSkgPT5cbiAgICAgICAgICAgIGlzRXF1YWwoZGF0ZSwgc3BlY2lmaWNEYXRlKSxcbiAgICAgICAgICApO1xuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAmJiBpbmRleCA9PT0gLTE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIGlzRGF0ZU5vdEhvbGlkYXkoZGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHsgY291bnRyeUNvZGUsIHRpbWVab25lT2Zmc2V0IH0gPSB0aGlzLmhvbGlkYXlPcHRpb25zID8/IHt9O1xuXG4gICAgaWYgKGNvdW50cnlDb2RlICYmIHRpbWVab25lT2Zmc2V0KSB7XG4gICAgICByZXR1cm4gIXRoaXMuaG9saWRheUluc3RhbmNlPy5pc0hvbGlkYXkoXG4gICAgICAgIGAke2Zvcm1hdChkYXRlLCAneXl5eS1NTS1kZCcpfVQwMDowMDowMCR7dGltZVpvbmVPZmZzZXR9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBkYXRlUmFuZ2VWYWxpZGF0b3IoY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sKSB7XG4gICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgeyBkYXRlRnJvbSwgZGF0ZVRvIH0gPSBjb250cm9sLnZhbHVlO1xuICAgIGNvbnN0IGZyb20gPSBuZXcgRGF0ZShkYXRlRnJvbSk7XG4gICAgY29uc3QgdG8gPSBuZXcgRGF0ZShkYXRlVG8pO1xuXG4gICAgaWYgKGRhdGVGcm9tICYmIGRhdGVUbyAmJiBmcm9tID4gdG8pIHtcbiAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKHsgcmFuZ2VPcmRlcjogdHJ1ZSB9KTtcbiAgICB9IGVsc2UgaWYgKGNvbnRyb2wuaGFzRXJyb3IoJ3JhbmdlT3JkZXInKSkge1xuICAgICAgY29uc3QgeyByYW5nZU9yZGVyOiBfLCAuLi5yZXN0IH0gPSBjb250cm9sLmVycm9ycyA/PyB7fTtcbiAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKE9iamVjdC5rZXlzKHJlc3QpLmxlbmd0aCA/IHJlc3QgOiBudWxsKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxlY2Ficy1lbGVtZW50LXdyYXBwZXIgW2RhdGFdPVwiZ2V0RGF0YSgpXCI+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkX19yYW5nZS0td3JhcHBlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkX19yYW5nZVwiPlxuICAgICAgPGlucHV0XG4gICAgICAgIGNsYXNzPVwiYm9yZGVyLW5vbmUgdy1mdWxsXCJcbiAgICAgICAgaWQ9XCJ7eyBuYW1lICsgJ2RhdGVGcm9tJyB9fVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwiZGF0ZUZyb21cIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwic3RhcnREYXRlUGxhY2Vob2xkZXIgPz8gdHJhbnNsYXRpb25Db25maWc/LnN0YXJ0RGF0ZVBsYWNlaG9sZGVyXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW21hdERhdGVwaWNrZXJdPVwicGlja2VyRnJvbVwiXG4gICAgICAgIFttaW5dPVwibWluRGF0ZUZyb21cIlxuICAgICAgICBbbWF4XT1cIm1heERhdGVGcm9tXCJcbiAgICAgICAgW21hdERhdGVwaWNrZXJGaWx0ZXJdPVwiZmlsdGVyRGF0ZVJhbmdlXCJcbiAgICAgICAgZWNhYnNNYXNrRGF0ZVxuICAgICAgICAoYmx1cik9XCJvblRvdWNoKClcIlxuICAgICAgICAoY2xpY2spPVwicGlja2VyRnJvbS5vcGVuKClcIlxuICAgICAgLz5cbiAgICAgIDxtYXQtZGF0ZXBpY2tlciAjcGlja2VyRnJvbVxuICAgICAgICAgICAgICAgICAgICAgIFtwYW5lbENsYXNzXT1cInBhbmVsQ2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjYWxlbmRhckhlYWRlckNvbXBvbmVudF09XCJoZWFkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0b3VjaFVpXT1cInRvdWNoVWlcIj5cbiAgICAgIDwvbWF0LWRhdGVwaWNrZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8c3BhbiBjbGFzcz1cInRleHQtZ3JheS00MDAgcHgtMyB0ZXh0LXNtXCI+e3sgc2VwYXJhdG9yTGFiZWwgfX08L3NwYW4+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRfX3JhbmdlXCI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3M9XCJib3JkZXItbm9uZSB3LWZ1bGxcIlxuICAgICAgICBpZD1cInt7IG5hbWUgKyAnZGF0ZVRvJyB9fVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwiZGF0ZVRvXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImVuZERhdGVQbGFjZWhvbGRlciA/PyB0cmFuc2xhdGlvbkNvbmZpZz8uZW5kRGF0ZVBsYWNlaG9sZGVyXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW21hdERhdGVwaWNrZXJdPVwicGlja2VyVG9cIlxuICAgICAgICBbbWluXT1cIm1pbkRhdGVUb1wiXG4gICAgICAgIFttYXhdPVwibWF4RGF0ZVRvXCJcbiAgICAgICAgW21hdERhdGVwaWNrZXJGaWx0ZXJdPVwiZmlsdGVyRGF0ZVJhbmdlXCJcbiAgICAgICAgZWNhYnNNYXNrRGF0ZVxuICAgICAgICAoYmx1cik9XCJvblRvdWNoKClcIlxuICAgICAgICAoY2xpY2spPVwicGlja2VyVG8ub3BlbigpXCJcbiAgICAgIC8+XG4gICAgICA8bWF0LWRhdGVwaWNrZXIgI3BpY2tlclRvXG4gICAgICAgICAgICAgICAgICAgICAgW3BhbmVsQ2xhc3NdPVwicGFuZWxDbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2NhbGVuZGFySGVhZGVyQ29tcG9uZW50XT1cImhlYWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RvdWNoVWldPVwidG91Y2hVaVwiPlxuICAgICAgPC9tYXQtZGF0ZXBpY2tlcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2VjYWJzLWVsZW1lbnQtd3JhcHBlcj5cbiJdfQ==
@@ -80,7 +80,7 @@ export class EcabsPlaceAutocompleteComponent extends EcabsElementBaseComponent {
80
80
  const autocomplete = new google.maps.places.Autocomplete(this.getElement(), {
81
81
  types: [],
82
82
  componentRestrictions: { country: [this.countryCode] },
83
- fields: ['address_components', 'geometry.location'],
83
+ fields: ['address_components', 'geometry.location', 'place_id'],
84
84
  });
85
85
  this.listener = autocomplete.addListener('place_changed', () => {
86
86
  this.ngZone.run(() => {
@@ -137,4 +137,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
137
137
  }], deleteItem: [{
138
138
  type: Output
139
139
  }] } });
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtcGxhY2UtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1wbGFjZS1hdXRvY29tcGxldGUvZWNhYnMtcGxhY2UtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1wbGFjZS1hdXRvY29tcGxldGUvZWNhYnMtcGxhY2UtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUVaLEtBQUssRUFJTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxHQUVWLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEQsT0FBTyx5QkFBeUIsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7OztBQWlCN0QsTUFBTSxPQUFPLCtCQUNYLFNBQVEseUJBQXlCO0lBNENkO0lBQ0E7SUFDQTtJQUNBO0lBM0NuQixjQUFjLENBQWE7SUFHM0IsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUd2QixVQUFVLEdBQUcsS0FBSyxDQUFDO0lBR25CLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFHbkIsWUFBWSxDQUFVO0lBR3RCLFlBQVksQ0FBbUI7SUFFWixXQUFXLEdBR3pCLElBQUksWUFBWSxFQUFFLENBQUM7SUFFZCxVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUUxQyxHQUFHLENBQVU7SUFDYixRQUFRLENBQWdDO0lBRXhDLElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNs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UUFBUSxLQUFLLElBQUksRUFBRTtvQkFDM0QsT0FBTztpQkFDUjtnQkFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztvQkFDcEIsS0FBSyxFQUFFLEtBQUs7b0JBQ1osSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxLQUFLO2lCQUM5QixDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFVBQVU7UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUMzRSxDQUFDO3dHQXJJVSwrQkFBK0I7NEZBQS9CLCtCQUErQixzUkFUL0I7WUFDVCxrQkFBa0I7WUFDbEI7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLCtCQUErQjtnQkFDNUMsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLG9NQ3JDSCw0MEJBdUJBOzs0RkRnQmEsK0JBQStCO2tCQWIzQyxTQUFTOytCQUNFLDBCQUEwQixhQUd6Qjt3QkFDVCxrQkFBa0I7d0JBQ2xCOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsaUNBQWlDOzRCQUM1QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjs4S0FPRCxjQUFjO3NCQURiLFNBQVM7dUJBQUMsNEJBQTRCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUkxRCxjQUFjO3NCQURiLEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUdhLFdBQVc7c0JBQTdCLE1BQU07Z0JBS0csVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgTmdDb250cm9sLFxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgVW5zdWJzY3JpYmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcHVibGljLWFwaSc7XG5pbXBvcnQgRWNhYnNFbGVtZW50QmFzZUNvbXBvbmVudCBmcm9tICcuLi9iYXNlL2VsZW1lbnQtYmFzZSc7XG5pbXBvcnQgUGxhY2VSZXN1bHQgPSBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VSZXN1bHQ7XG5pbXBvcnQgeyBXYXlwb2ludFR5cGVFbnVtIH0gZnJvbSAnLi4vYmFzZS9jb25zdHMvd2F5cG9pbnQuY29uc3RzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZWNhYnMtcGxhY2UtYXV0b2NvbXBsZXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VjYWJzLXBsYWNlLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VjYWJzLXBsYWNlLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICBVbnN1YnNjcmliZVNlcnZpY2UsXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogRWNhYnNQbGFjZUF1dG9jb21wbGV0ZUNvbXBvbmVudCxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEVjYWJzUGxhY2VBdXRvY29tcGxldGVDb21wb25lbnRcbiAgZXh0ZW5kcyBFY2Fic0VsZW1lbnRCYXNlQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25EZXN0cm95LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG57XG4gIEBWaWV3Q2hpbGQoJ21hdEN1c3RvbUF1dG9jb21wbGV0ZUlucHV0JywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIG1hdEN1c3RvbUlucHV0OiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCgpXG4gIHNob3dEZWxldGVJdGVtID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgc2hvd1N1ZmZpeCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGNvdW50cnlDb2RlID0gJ01UJztcblxuICBASW5wdXQoKVxuICBnb29nbGVMb2FkZWQ6IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgd2F5cG9pbnRUeXBlOiBXYXlwb2ludFR5cGVFbnVtO1xuXG4gIEBPdXRwdXQoKSByZWFkb25seSBwbGFjZVJlc3VsdDogRXZlbnRFbWl0dGVyPHtcbiAgICBwbGFjZTogUGxhY2VSZXN1bHQ7XG4gICAgdGV4dDogc3RyaW5nO1xuICB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KCkgZGVsZXRlSXRlbSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICB2YWwhOiBzdHJpbmc7XG4gIGxpc3RlbmVyOiBnb29nbGUubWFwcy5NYXBzRXZlbnRMaXN0ZW5lcjtcblxuICBnZXQgdmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy52YWw7XG4gIH1cblxuICBzZXQgdmFsdWUodmFsKSB7XG4gICAgaWYgKHZhbCAhPT0gdW5kZWZpbmVkICYmIHZhbCAhPT0gbnVsbCAmJiB0aGlzLnZhbCAhPT0gdmFsKSB7XG4gICAgICB0aGlzLnZhbCA9IHZhbDtcbiAgICAgIHRoaXMub25DaGFuZ2UodmFsKTtcbiAgICAgIHRoaXMub25Ub3VjaCh2YWwpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSByZWFkb25seSB1bnN1YnNjcmliZVNlcnZpY2U6IFVuc3Vic2NyaWJlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3QgeyBnb29nbGVMb2FkZWQgfSA9IGNoYW5nZXMgPz8ge307XG5cbiAgICBpZiAoZ29vZ2xlTG9hZGVkPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuaW5pdEdvb2dsZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBuZ0NvbnRyb2w6IE5nQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KFxuICAgICAgTmdDb250cm9sLFxuICAgICAgbnVsbCxcbiAgICApIGFzIE5nQ29udHJvbDtcbiAgICBpZiAobmdDb250cm9sKSB7XG4gICAgICB0aGlzLmNvbnRyb2wgPSBuZ0NvbnRyb2wuY29udHJvbCBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy51bnN1YnNjcmliZVNlcnZpY2UuZGVzdHJveSgpO1xuXG4gICAgaWYgKHRoaXMubGlzdGVuZXIpIHtcbiAgICAgIHRoaXMubGlzdGVuZXIucmVtb3ZlKCk7XG4gICAgfVxuICB9XG5cbiAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xuXG4gIG9uVG91Y2g6IGFueSA9ICgpID0+IHt9O1xuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgfVxuXG4gIG9uRGVsZXRlSXRlbSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlbGV0ZUl0ZW0uZW1pdCgpO1xuICB9XG5cbiAgb25DbGVhbigpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gJyc7XG4gICAgdGhpcy5vblRvdWNoKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRHb29nbGUoKTogdm9pZCB7XG4gICAgY29uc3QgYXV0b2NvbXBsZXRlID0gbmV3IGdvb2dsZS5tYXBzLnBsYWNlcy5BdXRvY29tcGxldGUoXG4gICAgICB0aGlzLmdldEVsZW1lbnQoKSxcbiAgICAgIHtcbiAgICAgICAgdHlwZXM6IFtdLFxuICAgICAgICBjb21wb25lbnRSZXN0cmljdGlvbnM6IHsgY291bnRyeTogW3RoaXMuY291bnRyeUNvZGVdIH0sXG4gICAgICAgIGZpZWxkczogWydhZGRyZXNzX2NvbXBvbmVudHMnLCAnZ2VvbWV0cnkubG9jYXRpb24nXSxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIHRoaXMubGlzdGVuZXIgPSBhdXRvY29tcGxldGUuYWRkTGlzdGVuZXIoJ3BsYWNlX2NoYW5nZWQnLCAoKSA9PiB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICBjb25zdCBwbGFjZSA9IGF1dG9jb21wbGV0ZS5nZXRQbGFjZSgpO1xuXG4gICAgICAgIC8vIHZlcmlmeSByZXN1bHRcbiAgICAgICAgaWYgKHBsYWNlLmdlb21ldHJ5ID09PSB1bmRlZmluZWQgfHwgcGxhY2UuZ2VvbWV0cnkgPT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnBsYWNlUmVzdWx0LmVtaXQoe1xuICAgICAgICAgIHBsYWNlOiBwbGFjZSxcbiAgICAgICAgICB0ZXh0OiB0aGlzLmdldEVsZW1lbnQoKS52YWx1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RWxlbWVudCgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZm9ybS1maWVsZF9faW5wdXQnKTtcbiAgfVxufVxuIiwiPGVjYWJzLWVsZW1lbnQtd3JhcHBlciBbZGF0YV09XCJnZXREYXRhKClcIj5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRfX2lucHV0LS13cmFwcGVyIHctZnVsbFwiPlxuICAgIDxpbnB1dCAjbWF0Q3VzdG9tQXV0b2NvbXBsZXRlSW5wdXRcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gICAgICBbaWRdPVwibmFtZVwiXG4gICAgICBjbGFzcz1cImZvcm0tZmllbGRfX2lucHV0IHctZnVsbFwiXG4gICAgICBhdXRvY29ycmVjdD1cIm9mZlwiXG4gICAgICBhdXRvY2FwaXRhbGl6ZT1cIm9mZlwiXG4gICAgICBzcGVsbGNoZWNrPVwib2ZmXCJcbiAgICAgIChibHVyKT1cIm9uVG91Y2goKVwiXG4gICAgLz5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZF9faW5wdXQtLXN1ZmZpeFwiICpuZ0lmPVwic2hvd1N1ZmZpeFwiPlxuICAgICAgPG1hdC1pY29uICpuZ0lmPVwic2hvd0RlbGV0ZUl0ZW1cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic3VmZml4IGN1cnNvci1wb2ludGVyIGRlbGV0ZS1idXR0b25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRlbGV0ZUl0ZW0oKVwiPlxuICAgICAgICBkZWxldGVcbiAgICAgIDwvbWF0LWljb24+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJzdWZmaXggY3Vyc29yLXBvaW50ZXJcIiAqbmdJZj1cIiFzaG93RGVsZXRlSXRlbSAmJiB2YWx1ZVwiIChjbGljayk9XCJvbkNsZWFuKClcIj5jbG9zZTwvbWF0LWljb24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9lY2Ficy1lbGVtZW50LXdyYXBwZXI+XG4iXX0=
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtcGxhY2UtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1wbGFjZS1hdXRvY29tcGxldGUvZWNhYnMtcGxhY2UtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1wbGFjZS1hdXRvY29tcGxldGUvZWNhYnMtcGxhY2UtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUVaLEtBQUssRUFJTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxHQUVWLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEQsT0FBTyx5QkFBeUIsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7OztBQWlCN0QsTUFBTSxPQUFPLCtCQUNYLFNBQVEseUJBQXlCO0lBNENkO0lBQ0E7SUFDQTtJQUNBO0lBM0NuQixjQUFjLENBQWE7SUFHM0IsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUd2QixVQUFVLEdBQUcsS0FBSyxDQUFDO0lBR25CLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFHbkIsWUFBWSxDQUFVO0lBR3RCLFlBQVksQ0FBbUI7SUFFWixXQUFXLEdBR3pCLElBQUksWUFBWSxFQUFFLENBQUM7SUFFZCxVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUUxQyxHQUFHLENBQVU7SUFDYixRQUFRLENBQWdDO0lBRXhDLElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNs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S0FBSyxDQUFDLFFBQVEsS0FBSyxJQUFJLEVBQUU7b0JBQzNELE9BQU87aUJBQ1I7Z0JBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7b0JBQ3BCLEtBQUssRUFBRSxLQUFLO29CQUNaLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsS0FBSztpQkFDOUIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxVQUFVO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDM0UsQ0FBQzt3R0FwSVUsK0JBQStCOzRGQUEvQiwrQkFBK0Isc1JBVC9CO1lBQ1Qsa0JBQWtCO1lBQ2xCO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSwrQkFBK0I7Z0JBQzVDLEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRixvTUNyQ0gsNDBCQXVCQTs7NEZEZ0JhLCtCQUErQjtrQkFiM0MsU0FBUzsrQkFDRSwwQkFBMEIsYUFHekI7d0JBQ1Qsa0JBQWtCO3dCQUNsQjs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLGlDQUFpQzs0QkFDNUMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7OEtBT0QsY0FBYztzQkFEYixTQUFTO3VCQUFDLDRCQUE0QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJMUQsY0FBYztzQkFEYixLQUFLO2dCQUlOLFVBQVU7c0JBRFQsS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFHYSxXQUFXO3NCQUE3QixNQUFNO2dCQUtHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIE5nQ29udHJvbCxcbiAgVW50eXBlZEZvcm1Db250cm9sLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFVuc3Vic2NyaWJlU2VydmljZSB9IGZyb20gJy4uLy4uL3B1YmxpYy1hcGknO1xuaW1wb3J0IEVjYWJzRWxlbWVudEJhc2VDb21wb25lbnQgZnJvbSAnLi4vYmFzZS9lbGVtZW50LWJhc2UnO1xuaW1wb3J0IFBsYWNlUmVzdWx0ID0gZ29vZ2xlLm1hcHMucGxhY2VzLlBsYWNlUmVzdWx0O1xuaW1wb3J0IHsgV2F5cG9pbnRUeXBlRW51bSB9IGZyb20gJy4uL2Jhc2UvY29uc3RzL3dheXBvaW50LmNvbnN0cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VjYWJzLXBsYWNlLWF1dG9jb21wbGV0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9lY2Ficy1wbGFjZS1hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lY2Ficy1wbGFjZS1hdXRvY29tcGxldGUuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgVW5zdWJzY3JpYmVTZXJ2aWNlLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IEVjYWJzUGxhY2VBdXRvY29tcGxldGVDb21wb25lbnQsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBFY2Fic1BsYWNlQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gIGV4dGVuZHMgRWNhYnNFbGVtZW50QmFzZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3Nvclxue1xuICBAVmlld0NoaWxkKCdtYXRDdXN0b21BdXRvY29tcGxldGVJbnB1dCcsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBtYXRDdXN0b21JbnB1dDogRWxlbWVudFJlZjtcblxuICBASW5wdXQoKVxuICBzaG93RGVsZXRlSXRlbSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHNob3dTdWZmaXggPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBjb3VudHJ5Q29kZSA9ICdNVCc7XG5cbiAgQElucHV0KClcbiAgZ29vZ2xlTG9hZGVkOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIHdheXBvaW50VHlwZTogV2F5cG9pbnRUeXBlRW51bTtcblxuICBAT3V0cHV0KCkgcmVhZG9ubHkgcGxhY2VSZXN1bHQ6IEV2ZW50RW1pdHRlcjx7XG4gICAgcGxhY2U6IFBsYWNlUmVzdWx0O1xuICAgIHRleHQ6IHN0cmluZztcbiAgfT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpIGRlbGV0ZUl0ZW0gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgdmFsITogc3RyaW5nO1xuICBsaXN0ZW5lcjogZ29vZ2xlLm1hcHMuTWFwc0V2ZW50TGlzdGVuZXI7XG5cbiAgZ2V0IHZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudmFsO1xuICB9XG5cbiAgc2V0IHZhbHVlKHZhbCkge1xuICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCAmJiB2YWwgIT09IG51bGwgJiYgdGhpcy52YWwgIT09IHZhbCkge1xuICAgICAgdGhpcy52YWwgPSB2YWw7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHZhbCk7XG4gICAgICB0aGlzLm9uVG91Y2godmFsKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdW5zdWJzY3JpYmVTZXJ2aWNlOiBVbnN1YnNjcmliZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLFxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IHsgZ29vZ2xlTG9hZGVkIH0gPSBjaGFuZ2VzID8/IHt9O1xuXG4gICAgaWYgKGdvb2dsZUxvYWRlZD8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLmluaXRHb29nbGUoKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc3QgbmdDb250cm9sOiBOZ0NvbnRyb2wgPSB0aGlzLmluamVjdG9yLmdldChcbiAgICAgIE5nQ29udHJvbCxcbiAgICAgIG51bGwsXG4gICAgKSBhcyBOZ0NvbnRyb2w7XG4gICAgaWYgKG5nQ29udHJvbCkge1xuICAgICAgdGhpcy5jb250cm9sID0gbmdDb250cm9sLmNvbnRyb2wgYXMgVW50eXBlZEZvcm1Db250cm9sO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudW5zdWJzY3JpYmVTZXJ2aWNlLmRlc3Ryb3koKTtcblxuICAgIGlmICh0aGlzLmxpc3RlbmVyKSB7XG4gICAgICB0aGlzLmxpc3RlbmVyLnJlbW92ZSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcblxuICBvblRvdWNoOiBhbnkgPSAoKSA9PiB7fTtcblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoID0gZm47XG4gIH1cblxuICBvbkRlbGV0ZUl0ZW0oKTogdm9pZCB7XG4gICAgdGhpcy5kZWxldGVJdGVtLmVtaXQoKTtcbiAgfVxuXG4gIG9uQ2xlYW4oKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9ICcnO1xuICAgIHRoaXMub25Ub3VjaCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0R29vZ2xlKCk6IHZvaWQge1xuICAgIGNvbnN0IGF1dG9jb21wbGV0ZSA9IG5ldyBnb29nbGUubWFwcy5wbGFjZXMuQXV0b2NvbXBsZXRlKFxuICAgICAgdGhpcy5nZXRFbGVtZW50KCksXG4gICAgICB7XG4gICAgICAgIHR5cGVzOiBbXSxcbiAgICAgICAgY29tcG9uZW50UmVzdHJpY3Rpb25zOiB7IGNvdW50cnk6IFt0aGlzLmNvdW50cnlDb2RlXSB9LFxuICAgICAgICBmaWVsZHM6IFsnYWRkcmVzc19jb21wb25lbnRzJywgJ2dlb21ldHJ5LmxvY2F0aW9uJywgJ3BsYWNlX2lkJ10sXG4gICAgICB9LFxuICAgICk7XG5cbiAgICB0aGlzLmxpc3RlbmVyID0gYXV0b2NvbXBsZXRlLmFkZExpc3RlbmVyKCdwbGFjZV9jaGFuZ2VkJywgKCkgPT4ge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgY29uc3QgcGxhY2UgPSBhdXRvY29tcGxldGUuZ2V0UGxhY2UoKTtcbiAgICAgICAgLy8gdmVyaWZ5IHJlc3VsdFxuICAgICAgICBpZiAocGxhY2UuZ2VvbWV0cnkgPT09IHVuZGVmaW5lZCB8fCBwbGFjZS5nZW9tZXRyeSA9PT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucGxhY2VSZXN1bHQuZW1pdCh7XG4gICAgICAgICAgcGxhY2U6IHBsYWNlLFxuICAgICAgICAgIHRleHQ6IHRoaXMuZ2V0RWxlbWVudCgpLnZhbHVlLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFbGVtZW50KCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5mb3JtLWZpZWxkX19pbnB1dCcpO1xuICB9XG59XG4iLCI8ZWNhYnMtZWxlbWVudC13cmFwcGVyIFtkYXRhXT1cImdldERhdGEoKVwiPlxuICA8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZF9faW5wdXQtLXdyYXBwZXIgdy1mdWxsXCI+XG4gICAgPGlucHV0ICNtYXRDdXN0b21BdXRvY29tcGxldGVJbnB1dFxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICAgIFtpZF09XCJuYW1lXCJcbiAgICAgIGNsYXNzPVwiZm9ybS1maWVsZF9faW5wdXQgdy1mdWxsXCJcbiAgICAgIGF1dG9jb3JyZWN0PVwib2ZmXCJcbiAgICAgIGF1dG9jYXBpdGFsaXplPVwib2ZmXCJcbiAgICAgIHNwZWxsY2hlY2s9XCJvZmZcIlxuICAgICAgKGJsdXIpPVwib25Ub3VjaCgpXCJcbiAgICAvPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkX19pbnB1dC0tc3VmZml4XCIgKm5nSWY9XCJzaG93U3VmZml4XCI+XG4gICAgICA8bWF0LWljb24gKm5nSWY9XCJzaG93RGVsZXRlSXRlbVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzdWZmaXggY3Vyc29yLXBvaW50ZXIgZGVsZXRlLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlSXRlbSgpXCI+XG4gICAgICAgIGRlbGV0ZVxuICAgICAgPC9tYXQtaWNvbj5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInN1ZmZpeCBjdXJzb3ItcG9pbnRlclwiICpuZ0lmPVwiIXNob3dEZWxldGVJdGVtICYmIHZhbHVlXCIgKGNsaWNrKT1cIm9uQ2xlYW4oKVwiPmNsb3NlPC9tYXQtaWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2VjYWJzLWVsZW1lbnQtd3JhcHBlcj5cbiJdfQ==
@@ -20,6 +20,7 @@ export class EcabsPlaceAutocompleteV2Component extends EcabsElementBaseComponent
20
20
  countryCode = 'MT';
21
21
  googleLoaded;
22
22
  waypointType;
23
+ debounceTime = 240;
23
24
  placeResult = new EventEmitter();
24
25
  deleteItem = new EventEmitter();
25
26
  queryChanged = new EventEmitter();
@@ -28,21 +29,20 @@ export class EcabsPlaceAutocompleteV2Component extends EcabsElementBaseComponent
28
29
  waypointSuggestions$;
29
30
  selectedIndex = -1;
30
31
  displayedSuggestions = [];
31
- val;
32
- listener;
32
+ _value = '';
33
33
  mapAutocompleteService;
34
34
  placesService;
35
35
  sessionToken;
36
36
  get value() {
37
- return this.val;
38
- }
39
- set value(val) {
40
- if (this.val !== val) {
41
- this.val = val;
42
- this.value$.next(val);
43
- this.onChange(val);
44
- this.onTouch(val);
37
+ return this._value;
38
+ }
39
+ set value(value) {
40
+ if (this._value === value) {
41
+ return;
45
42
  }
43
+ this._value = value;
44
+ this.value$.next(value);
45
+ this.onChange(value);
46
46
  }
47
47
  constructor(ngZone, injector) {
48
48
  super();
@@ -63,7 +63,7 @@ export class EcabsPlaceAutocompleteV2Component extends EcabsElementBaseComponent
63
63
  this.waypointSuggestions$ = combineLatest([
64
64
  this.isFocused$,
65
65
  this.value$,
66
- ]).pipe(debounceTime(500), switchMap(([isFocused, value]) => {
66
+ ]).pipe(debounceTime(this.debounceTime), switchMap(([isFocused, value]) => {
67
67
  if (!isFocused) {
68
68
  return of([]);
69
69
  }
@@ -77,8 +77,13 @@ export class EcabsPlaceAutocompleteV2Component extends EcabsElementBaseComponent
77
77
  return results;
78
78
  }));
79
79
  }
80
+ onChange = () => { };
81
+ onTouch = () => { };
80
82
  getWaypointResults(query) {
81
- this.queryChanged.emit({ waypoint_type: this.waypointType, query });
83
+ this.queryChanged.emit({
84
+ waypoint_type: this.waypointType,
85
+ place_name: query,
86
+ });
82
87
  return combineLatest([
83
88
  of(this.waypointsHistory),
84
89
  this.getPlacesResults(query),
@@ -94,35 +99,41 @@ export class EcabsPlaceAutocompleteV2Component extends EcabsElementBaseComponent
94
99
  componentRestrictions: { country: this.countryCode },
95
100
  sessionToken: this.sessionToken,
96
101
  }, (predictions) => {
97
- observer.next((predictions ?? []).map((prediction) => {
98
- return {
99
- additional_info: prediction.description,
100
- place_id: prediction.place_id,
101
- source: 'google',
102
- prediction_term: prediction.terms,
103
- };
104
- }));
105
- observer.complete();
102
+ this.ngZone.run(() => {
103
+ observer.next(this.toWaypointSuggestions(predictions));
104
+ observer.complete();
105
+ });
106
106
  });
107
107
  });
108
108
  }
109
+ toWaypointSuggestions(predictions) {
110
+ return (predictions ?? []).map((prediction) => ({
111
+ additional_info: prediction.description,
112
+ place_id: prediction.place_id,
113
+ source: 'google',
114
+ prediction_term: prediction.terms,
115
+ }));
116
+ }
109
117
  onSelectSuggestion(suggestion) {
110
118
  const { additional_info, place_id } = suggestion ?? {};
111
119
  this.value = additional_info;
112
120
  this.placesService.getDetails({
113
121
  placeId: place_id,
114
122
  sessionToken: this.sessionToken,
115
- fields: ['address_components', 'geometry.location'],
123
+ fields: ['address_components', 'geometry.location', 'place_id'],
116
124
  }, (place, status) => {
117
- if (status === google.maps.places.PlacesServiceStatus.OK && place) {
118
- this.ngZone.run(() => {
125
+ this.ngZone.run(() => {
126
+ if (status === google.maps.places.PlacesServiceStatus.OK && place) {
119
127
  this.placeResult.emit({
120
128
  place,
121
129
  text: additional_info,
122
130
  });
123
- });
124
- }
125
- this.resetSessionToken();
131
+ }
132
+ else {
133
+ console.warn('Place details lookup failed', { status, place_id });
134
+ }
135
+ this.resetSessionToken();
136
+ });
126
137
  });
127
138
  }
128
139
  onKeyDown(event) {
@@ -153,25 +164,22 @@ export class EcabsPlaceAutocompleteV2Component extends EcabsElementBaseComponent
153
164
  break;
154
165
  }
155
166
  }
156
- ngOnDestroy() {
157
- if (this.listener) {
158
- this.listener.remove();
159
- }
160
- }
161
- onChange = () => { };
162
- onTouch = () => { };
163
167
  onBlur() {
164
168
  this.isFocused$.next(false);
165
- this.onTouch;
169
+ this.onTouch();
166
170
  }
167
171
  onFocus() {
168
- this.isFocused$.next(true);
169
172
  if (!this.value) {
170
173
  this.resetSessionToken();
171
174
  }
175
+ setTimeout(() => this.ngZone.run(() => this.isFocused$.next(true)));
172
176
  }
173
- writeValue(value) {
174
- this.value = value;
177
+ writeValue(nextValue = '') {
178
+ if (this._value === nextValue) {
179
+ return;
180
+ }
181
+ this._value = nextValue;
182
+ this.value$.next(nextValue);
175
183
  }
176
184
  registerOnChange(fn) {
177
185
  this.onChange = fn;
@@ -195,7 +203,7 @@ export class EcabsPlaceAutocompleteV2Component extends EcabsElementBaseComponent
195
203
  this.sessionToken = new google.maps.places.AutocompleteSessionToken();
196
204
  }
197
205
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsPlaceAutocompleteV2Component, deps: [{ token: i0.NgZone }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
198
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsPlaceAutocompleteV2Component, selector: "ecabs-place-autocomplete-v2", inputs: { showDeleteItem: "showDeleteItem", waypointsHistory: "waypointsHistory", showSuffix: "showSuffix", countryCode: "countryCode", googleLoaded: "googleLoaded", waypointType: "waypointType" }, outputs: { placeResult: "placeResult", deleteItem: "deleteItem", queryChanged: "queryChanged" }, providers: [
206
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsPlaceAutocompleteV2Component, selector: "ecabs-place-autocomplete-v2", inputs: { showDeleteItem: "showDeleteItem", waypointsHistory: "waypointsHistory", showSuffix: "showSuffix", countryCode: "countryCode", googleLoaded: "googleLoaded", waypointType: "waypointType", debounceTime: "debounceTime" }, outputs: { placeResult: "placeResult", deleteItem: "deleteItem", queryChanged: "queryChanged" }, providers: [
199
207
  {
200
208
  provide: NG_VALUE_ACCESSOR,
201
209
  useExisting: EcabsPlaceAutocompleteV2Component,
@@ -227,6 +235,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
227
235
  type: Input
228
236
  }], waypointType: [{
229
237
  type: Input
238
+ }], debounceTime: [{
239
+ type: Input
230
240
  }], placeResult: [{
231
241
  type: Output
232
242
  }], deleteItem: [{
@@ -234,4 +244,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
234
244
  }], queryChanged: [{
235
245
  type: Output
236
246
  }] } });
237
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtcGxhY2UtYXV0b2NvbXBsZXRlLXYyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1wbGFjZS1hdXRvY29tcGxldGUtdjIvZWNhYnMtcGxhY2UtYXV0b2NvbXBsZXRlLXYyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1wbGFjZS1hdXRvY29tcGxldGUtdjIvZWNhYnMtcGxhY2UtYXV0b2NvbXBsZXRlLXYyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUVaLEtBQUssRUFJTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxHQUVWLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyx5QkFBeUIsTUFBTSxzQkFBc0IsQ0FBQztBQU83RCxPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixZQUFZLEVBQ1osR0FBRyxFQUNILFVBQVUsRUFDVixFQUFFLEdBQ0gsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBYzNDLE1BQU0sT0FBTyxpQ0FDWCxTQUFRLHlCQUF5QjtJQTZEZDtJQUNBO0lBMURuQixjQUFjLENBQWE7SUFHM0IsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUd2QixnQkFBZ0IsR0FBeUIsRUFBRSxDQUFDO0lBRzVDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFHbkIsV0FBVyxHQUFHLElBQUksQ0FBQztJQUduQixZQUFZLENBQVU7SUFHdEIsWUFBWSxDQUFtQjtJQUd0QixXQUFXLEdBQW9DLElBQUksWUFBWSxFQUFF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TyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxtQ0FBbUM7NEJBQzlDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO29IQU9ELGNBQWM7c0JBRGIsU0FBUzt1QkFBQyw0QkFBNEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSTFELGNBQWM7c0JBRGIsS0FBSztnQkFJTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sV0FBVztzQkFEVixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSUcsV0FBVztzQkFEbkIsTUFBTTtnQkFJRSxVQUFVO3NCQURsQixNQUFNO2dCQUlFLFlBQVk7c0JBRHBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIE5nQ29udHJvbCxcbiAgVW50eXBlZEZvcm1Db250cm9sLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgRWNhYnNFbGVtZW50QmFzZUNvbXBvbmVudCBmcm9tICcuLi9iYXNlL2VsZW1lbnQtYmFzZSc7XG5pbXBvcnQgeyBXYXlwb2ludFR5cGVFbnVtIH0gZnJvbSAnLi4vYmFzZS9jb25zdHMvd2F5cG9pbnQuY29uc3RzJztcbmltcG9ydCB7XG4gIEdvb2dsZVBsYWNlUmVzdWx0LFxuICBXYXlwb2ludFF1ZXJ5Q2hhbmdlLFxuICBXYXlwb2ludFN1Z2dlc3Rpb24sXG59IGZyb20gJy4uL2Jhc2UvbW9kZWxzL3dheXBvaW50Lm1vZGVscyc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGRlYm91bmNlVGltZSxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VjYWJzLXBsYWNlLWF1dG9jb21wbGV0ZS12MicsXG4gIHRlbXBsYXRlVXJsOiAnLi9lY2Ficy1wbGFjZS1hdXRvY29tcGxldGUtdjIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lY2Ficy1wbGFjZS1hdXRvY29tcGxldGUtdjIuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogRWNhYnNQbGFjZUF1dG9jb21wbGV0ZVYyQ29tcG9uZW50LFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRWNhYnNQbGFjZUF1dG9jb21wbGV0ZVYyQ29tcG9uZW50XG4gIGV4dGVuZHMgRWNhYnNFbGVtZW50QmFzZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3Nvclxue1xuICBAVmlld0NoaWxkKCdtYXRDdXN0b21BdXRvY29tcGxldGVJbnB1dCcsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBtYXRDdXN0b21JbnB1dDogRWxlbWVudFJlZjtcblxuICBASW5wdXQoKVxuICBzaG93RGVsZXRlSXRlbSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHdheXBvaW50c0hpc3Rvcnk6IFdheXBvaW50U3VnZ2VzdGlvbltdID0gW107XG5cbiAgQElucHV0KClcbiAgc2hvd1N1ZmZpeCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGNvdW50cnlDb2RlID0gJ01UJztcblxuICBASW5wdXQoKVxuICBnb29nbGVMb2FkZWQ6IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgd2F5cG9pbnRUeXBlOiBXYXlwb2ludFR5cGVFbnVtO1xuXG4gIEBPdXRwdXQoKVxuICByZWFkb25seSBwbGFjZVJlc3VsdDogRXZlbnRFbWl0dGVyPEdvb2dsZVBsYWNlUmVzdWx0PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgZGVsZXRlSXRlbSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgcXVlcnlDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxXYXlwb2ludFF1ZXJ5Q2hhbmdlPigpO1xuXG4gIGlzRm9jdXNlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgdmFsdWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgd2F5cG9pbnRTdWdnZXN0aW9ucyQ6IE9ic2VydmFibGU8V2F5cG9pbnRTdWdnZXN0aW9uW10+O1xuXG4gIHNlbGVjdGVkSW5kZXggPSAtMTtcbiAgZGlzcGxheWVkU3VnZ2VzdGlvbnM6IFdheXBvaW50U3VnZ2VzdGlvbltdID0gW107XG5cbiAgdmFsITogc3RyaW5nO1xuICBsaXN0ZW5lcjogZ29vZ2xlLm1hcHMuTWFwc0V2ZW50TGlzdGVuZXI7XG5cbiAgcHJpdmF0ZSBtYXBBdXRvY29tcGxldGVTZXJ2aWNlOiBnb29nbGUubWFwcy5wbGFjZXMuQXV0b2NvbXBsZXRlU2VydmljZTtcbiAgcHJpdmF0ZSBwbGFjZXNTZXJ2aWNlOiBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VzU2VydmljZTtcbiAgcHJpdmF0ZSBzZXNzaW9uVG9rZW46IGdvb2dsZS5tYXBzLnBsYWNlcy5BdXRvY29tcGxldGVTZXNzaW9uVG9rZW47XG5cbiAgZ2V0IHZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudmFsO1xuICB9XG5cbiAgc2V0IHZhbHVlKHZhbDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMudmFsICE9PSB2YWwpIHtcbiAgICAgIHRoaXMudmFsID0gdmFsO1xuICAgICAgdGhpcy52YWx1ZSQubmV4dCh2YWwpO1xuICAgICAgdGhpcy5vbkNoYW5nZSh2YWwpO1xuICAgICAgdGhpcy5vblRvdWNoKHZhbCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcixcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCB7IGdvb2dsZUxvYWRlZCB9ID0gY2hhbmdlcyA/PyB7fTtcblxuICAgIGlmIChnb29nbGVMb2FkZWQ/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5pbml0R29vZ2xlKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IG5nQ29udHJvbDogTmdDb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoXG4gICAgICBOZ0NvbnRyb2wsXG4gICAgICBudWxsLFxuICAgICkgYXMgTmdDb250cm9sO1xuXG4gICAgaWYgKG5nQ29udHJvbCkge1xuICAgICAgdGhpcy5jb250cm9sID0gbmdDb250cm9sLmNvbnRyb2wgYXMgVW50eXBlZEZvcm1Db250cm9sO1xuICAgIH1cblxuICAgIHRoaXMud2F5cG9pbnRTdWdnZXN0aW9ucyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuaXNGb2N1c2VkJCxcbiAgICAgIHRoaXMudmFsdWUkLFxuICAgIF0pLnBpcGUoXG4gICAgICBkZWJvdW5jZVRpbWUoNTAwKSxcbiAgICAgIHN3aXRjaE1hcCgoW2lzRm9jdXNlZCwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGlmICghaXNGb2N1c2VkKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKFtdIGFzIFdheXBvaW50U3VnZ2VzdGlvbltdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gb2YodGhpcy53YXlwb2ludHNIaXN0b3J5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmdldFdheXBvaW50UmVzdWx0cyh2YWx1ZSk7XG4gICAgICB9KSxcbiAgICAgIG1hcCgocmVzdWx0cykgPT4ge1xuICAgICAgICB0aGlzLmRpc3BsYXllZFN1Z2dlc3Rpb25zID0gcmVzdWx0cztcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gcmVzdWx0cz8ubGVuZ3RoID8gMCA6IC0xO1xuXG4gICAgICAgIHJldHVybiByZXN1bHRzO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0V2F5cG9pbnRSZXN1bHRzKHF1ZXJ5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFdheXBvaW50U3VnZ2VzdGlvbltdPiB7XG4gICAgdGhpcy5xdWVyeUNoYW5nZWQuZW1pdCh7IHdheXBvaW50X3R5cGU6IHRoaXMud2F5cG9pbnRUeXBlLCBxdWVyeSB9KTtcblxuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIG9mKHRoaXMud2F5cG9pbnRzSGlzdG9yeSksXG4gICAgICB0aGlzLmdldFBsYWNlc1Jlc3VsdHMocXVlcnkpLFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFtoaXN0b3J5LCBnb29nbGVdKSA9PiB7XG4gICAgICAgIGNvbnN0IGhpc3RvcnlJdGVtcyA9IGhpc3RvcnkgPz8gW10sXG4gICAgICAgICAgZ29vZ2xlSXRlbXMgPSBnb29nbGUgPz8gW107XG5cbiAgICAgICAgcmV0dXJuIFsuLi5oaXN0b3J5SXRlbXMsIC4uLmdvb2dsZUl0ZW1zXTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldFBsYWNlc1Jlc3VsdHMocXVlcnk6IHN0cmluZyk6IE9ic2VydmFibGU8V2F5cG9pbnRTdWdnZXN0aW9uW10+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyKSA9PiB7XG4gICAgICB0aGlzLm1hcEF1dG9jb21wbGV0ZVNlcnZpY2UuZ2V0UGxhY2VQcmVkaWN0aW9ucyhcbiAgICAgICAge1xuICAgICAgICAgIGlucHV0OiBxdWVyeSxcbiAgICAgICAgICBjb21wb25lbnRSZXN0cmljdGlvbnM6IHsgY291bnRyeTogdGhpcy5jb3VudHJ5Q29kZSB9LFxuICAgICAgICAgIHNlc3Npb25Ub2tlbjogdGhpcy5zZXNzaW9uVG9rZW4sXG4gICAgICAgIH0sXG4gICAgICAgIChwcmVkaWN0aW9ucykgPT4ge1xuICAgICAgICAgIG9ic2VydmVyLm5leHQoXG4gICAgICAgICAgICAocHJlZGljdGlvbnMgPz8gW10pLm1hcCgocHJlZGljdGlvbikgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxfaW5mbzogcHJlZGljdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBwbGFjZV9pZDogcHJlZGljdGlvbi5wbGFjZV9pZCEsXG4gICAgICAgICAgICAgICAgc291cmNlOiAnZ29vZ2xlJyxcbiAgICAgICAgICAgICAgICBwcmVkaWN0aW9uX3Rlcm06IHByZWRpY3Rpb24udGVybXMsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgb25TZWxlY3RTdWdnZXN0aW9uKHN1Z2dlc3Rpb246IFdheXBvaW50U3VnZ2VzdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IHsgYWRkaXRpb25hbF9pbmZvLCBwbGFjZV9pZCB9ID0gc3VnZ2VzdGlvbiA/PyB7fTtcblxuICAgIHRoaXMudmFsdWUgPSBhZGRpdGlvbmFsX2luZm87XG4gICAgdGhpcy5wbGFjZXNTZXJ2aWNlLmdldERldGFpbHMoXG4gICAgICB7XG4gICAgICAgIHBsYWNlSWQ6IHBsYWNlX2lkISxcbiAgICAgICAgc2Vzc2lvblRva2VuOiB0aGlzLnNlc3Npb25Ub2tlbixcbiAgICAgICAgZmllbGRzOiBbJ2FkZHJlc3NfY29tcG9uZW50cycsICdnZW9tZXRyeS5sb2NhdGlvbiddLFxuICAgICAgfSxcbiAgICAgIChwbGFjZSwgc3RhdHVzKSA9PiB7XG4gICAgICAgIGlmIChzdGF0dXMgPT09IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZXNTZXJ2aWNlU3RhdHVzLk9LICYmIHBsYWNlKSB7XG4gICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucGxhY2VSZXN1bHQuZW1pdCh7XG4gICAgICAgICAgICAgIHBsYWNlLFxuICAgICAgICAgICAgICB0ZXh0OiBhZGRpdGlvbmFsX2luZm8sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVzZXRTZXNzaW9uVG9rZW4oKTtcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNwbGF5ZWRTdWdnZXN0aW9ucz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9XG4gICAgICAgICAgKHRoaXMuc2VsZWN0ZWRJbmRleCArIDEpICUgdGhpcy5kaXNwbGF5ZWRTdWdnZXN0aW9ucy5sZW5ndGg7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID1cbiAgICAgICAgICAodGhpcy5zZWxlY3RlZEluZGV4IC0gMSArIHRoaXMuZGlzcGxheWVkU3VnZ2VzdGlvbnMubGVuZ3RoKSAlXG4gICAgICAgICAgdGhpcy5kaXNwbGF5ZWRTdWdnZXN0aW9ucy5sZW5ndGg7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmRleCA+PSAwKSB7XG4gICAgICAgICAgdGhpcy5vblNlbGVjdFN1Z2dlc3Rpb24oXG4gICAgICAgICAgICB0aGlzLmRpc3BsYXllZFN1Z2dlc3Rpb25zW3RoaXMuc2VsZWN0ZWRJbmRleF0sXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgdGhpcy5pc0ZvY3VzZWQkLm5leHQoZmFsc2UpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSAtMTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubGlzdGVuZXIpIHtcbiAgICAgIHRoaXMubGlzdGVuZXIucmVtb3ZlKCk7XG4gICAgfVxuICB9XG5cbiAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xuXG4gIG9uVG91Y2g6IGFueSA9ICgpID0+IHt9O1xuXG4gIG9uQmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLmlzRm9jdXNlZCQubmV4dChmYWxzZSk7XG4gICAgdGhpcy5vblRvdWNoO1xuICB9XG5cbiAgb25Gb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLmlzRm9jdXNlZCQubmV4dCh0cnVlKTtcblxuICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy5yZXNldFNlc3Npb25Ub2tlbigpO1xuICAgIH1cbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgfVxuXG4gIG9uRGVsZXRlSXRlbSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlbGV0ZUl0ZW0uZW1pdCgpO1xuICB9XG5cbiAgb25DbGVhbigpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gJyc7XG4gICAgdGhpcy5vblRvdWNoKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRHb29nbGUoKTogdm9pZCB7XG4gICAgdGhpcy5tYXBBdXRvY29tcGxldGVTZXJ2aWNlID0gbmV3IGdvb2dsZS5tYXBzLnBsYWNlcy5BdXRvY29tcGxldGVTZXJ2aWNlKCk7XG5cbiAgICB0aGlzLnBsYWNlc1NlcnZpY2UgPSBuZXcgZ29vZ2xlLm1hcHMucGxhY2VzLlBsYWNlc1NlcnZpY2UoXG4gICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSxcbiAgICApO1xuXG4gICAgdGhpcy5yZXNldFNlc3Npb25Ub2tlbigpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldFNlc3Npb25Ub2tlbigpOiB2b2lkIHtcbiAgICB0aGlzLnNlc3Npb25Ub2tlbiA9IG5ldyBnb29nbGUubWFwcy5wbGFjZXMuQXV0b2NvbXBsZXRlU2Vzc2lvblRva2VuKCk7XG4gIH1cbn1cbiIsIjxlY2Ficy1lbGVtZW50LXdyYXBwZXIgW2RhdGFdPVwiZ2V0RGF0YSgpXCI+XG4gIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtdWkgdy1mdWxsXCI+XG4gICAgPHNlY3Rpb24gY2xhc3M9XCJmb3JtLWZpZWxkX19pbnB1dC0td3JhcHBlciB3LWZ1bGxcIj5cbiAgICAgIDxpbnB1dCAjbWF0Q3VzdG9tQXV0b2NvbXBsZXRlSW5wdXRcbiAgICAgICAgICAgICBjZGtPdmVybGF5T3JpZ2luXG4gICAgICAgICAgICAgI3RyaWdnZXI9XCJjZGtPdmVybGF5T3JpZ2luXCJcbiAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgW2lkXT1cIm5hbWVcIlxuICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZF9faW5wdXQgdy1mdWxsXCJcbiAgICAgICAgICAgICBhdXRvY29ycmVjdD1cIm9mZlwiXG4gICAgICAgICAgICAgYXV0b2NhcGl0YWxpemU9XCJvZmZcIlxuICAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJvZmZcIlxuICAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKClcIlxuICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXG4gICAgICAvPlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRfX2lucHV0LS1zdWZmaXhcIiAqbmdJZj1cInNob3dTdWZmaXhcIj5cbiAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwic2hvd0RlbGV0ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzdWZmaXggY3Vyc29yLXBvaW50ZXIgZGVsZXRlLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGVJdGVtKClcIj5cbiAgICAgICAgICBkZWxldGVcbiAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwic3VmZml4IGN1cnNvci1wb2ludGVyXCIgKm5nSWY9XCIhc2hvd0RlbGV0ZUl0ZW0gJiYgdmFsdWVcIiAoY2xpY2spPVwib25DbGVhbigpXCI+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuICAgIDwhLS0gQ3VzdG9tIGRyb3Bkb3duIC0tPlxuICAgIDxuZy10ZW1wbGF0ZSBjZGtDb25uZWN0ZWRPdmVybGF5XG4gICAgICAgICAgICAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5V2lkdGhdPVwidHJpZ2dlci5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGhcIlxuICAgICAgICAgICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheUZsZXhpYmxlRGltZW5zaW9uc109XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luXT1cInRyaWdnZXJcIlxuICAgICAgICAgICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwiaXNGb2N1c2VkJCB8IGFzeW5jXCI+XG4gICAgICA8dWwgY2xhc3M9XCJhdXRvY29tcGxldGUtdWlfX2NvbnRhaW5lclwiPlxuICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHN1Z2dlc3Rpb24gb2Ygd2F5cG9pbnRTdWdnZXN0aW9ucyQgfCBhc3luYyB8IHNsaWNlOjA6MTA7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgY2xhc3M9XCJhdXRvY29tcGxldGUtdWktLWl0ZW0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGhvdmVyOmJnLWdyYXktMTAwXCJcbiAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaSA9PT0gc2VsZWN0ZWRJbmRleFwiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uU2VsZWN0U3VnZ2VzdGlvbihzdWdnZXN0aW9uKVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdWdnZXN0aW9uPy5zb3VyY2UgPT09ICdoaXN0b3J5JzsgZWxzZSBwdXJlUGxhY2VSZXN1bHRUcGxcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgICAge3sgc3VnZ2VzdGlvbj8uYWRkaXRpb25hbF9pbmZvIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInN1Z2dlc3Rpb24/LnNvdXJjZSA9PT0gJ2hpc3RvcnknXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctNSBoLTUgdGV4dC14bCB0ZXh0LWdyYXktNDAwICFob3Zlcjp0ZXh0LWdyYXktNDAwXCI+XG4gICAgICAgICAgICAgIGhpc3RvcnlcbiAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3B1cmVQbGFjZVJlc3VsdFRwbD5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cInctZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBnYXAteC0xIGxlYWRpbmctMCBvdmVyZmxvdy1oaWRkZW4gd2hpdGVzcGFjZS1ub3dyYXBcIj5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIHt7IHN1Z2dlc3Rpb24/LnByZWRpY3Rpb25fdGVybVswXT8udmFsdWUgfX1cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpICpuZ0lmPVwic3VnZ2VzdGlvbj8ucHJlZGljdGlvbl90ZXJtWzFdPy52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQteHMgdGV4dC1ncmF5LTYwMCB0cnVuY2F0ZVwiPlxuICAgICAgICAgICAgICAgIHt7IHN1Z2dlc3Rpb24/LnByZWRpY3Rpb25fdGVybVsxXT8udmFsdWUgfCBzZXBhcmF0b3JBcHBlbmQ6IHN1Z2dlc3Rpb24/LnByZWRpY3Rpb25fdGVybVsyXT8udmFsdWUgfX1cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpICpuZ0lmPVwic3VnZ2VzdGlvbj8ucHJlZGljdGlvbl90ZXJtWzJdPy52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQteHMgdGV4dC1ncmF5LTYwMCBmb250LXNlbWlib2xkIHRydW5jYXRlXCI+XG4gICAgICAgICAgICAgICAge3sgc3VnZ2VzdGlvbj8ucHJlZGljdGlvbl90ZXJtWzJdPy52YWx1ZSB9fVxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2xpPlxuICAgICAgPC91bD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbjwvZWNhYnMtZWxlbWVudC13cmFwcGVyPlxuIl19
247
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtcGxhY2UtYXV0b2NvbXBsZXRlLXYyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1wbGFjZS1hdXRvY29tcGxldGUtdjIvZWNhYnMtcGxhY2UtYXV0b2NvbXBsZXRlLXYyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1wbGFjZS1hdXRvY29tcGxldGUtdjIvZWNhYnMtcGxhY2UtYXV0b2NvbXBsZXRlLXYyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUVaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxHQUVWLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyx5QkFBeUIsTUFBTSxzQkFBc0IsQ0FBQztBQU83RCxPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixZQUFZLEVBQ1osR0FBRyxFQUNILFVBQVUsRUFDVixFQUFFLEdBQ0gsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBZTNDLE1BQU0sT0FBTyxpQ0FDWCxTQUFRLHlCQUF5QjtJQWdFZDtJQUNBO0lBN0RuQixjQUFjLENBQWE7SUFHM0IsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUd2QixnQkFBZ0IsR0FBeUIsRUFBRSxDQUFDO0lBRzVDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFHbkIsV0FBVyxHQUFHLElBQUksQ0FBQztJQUduQixZQUFZLENBQVU7SUFHdEIsWUFBWSxDQUFtQjtJQUcvQixZQUFZLEdBQUcsR0FBRyxDQUFDO0lBR1Ys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QUM5QixDQUFDO1FBRUYsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVPLGlCQUFpQjtRQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUN4RSxDQUFDO3dHQXZSVSxpQ0FBaUM7NEZBQWpDLGlDQUFpQywyWEFSakM7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsaUNBQWlDO2dCQUM5QyxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0Ysb01DL0NILDZqR0FvRUE7OzRGRG5CYSxpQ0FBaUM7a0JBWjdDLFNBQVM7K0JBQ0UsNkJBQTZCLGFBRzVCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsbUNBQW1DOzRCQUM5QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtvSEFPRCxjQUFjO3NCQURiLFNBQVM7dUJBQUMsNEJBQTRCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUkxRCxjQUFjO3NCQURiLEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJRyxXQUFXO3NCQURuQixNQUFNO2dCQUlFLFVBQVU7c0JBRGxCLE1BQU07Z0JBSUUsWUFBWTtzQkFEcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIE5nQ29udHJvbCxcbiAgVW50eXBlZEZvcm1Db250cm9sLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgRWNhYnNFbGVtZW50QmFzZUNvbXBvbmVudCBmcm9tICcuLi9iYXNlL2VsZW1lbnQtYmFzZSc7XG5pbXBvcnQgeyBXYXlwb2ludFR5cGVFbnVtIH0gZnJvbSAnLi4vYmFzZS9jb25zdHMvd2F5cG9pbnQuY29uc3RzJztcbmltcG9ydCB7XG4gIEdvb2dsZVBsYWNlUmVzdWx0LFxuICBXYXlwb2ludFF1ZXJ5Q2hhbmdlLFxuICBXYXlwb2ludFN1Z2dlc3Rpb24sXG59IGZyb20gJy4uL2Jhc2UvbW9kZWxzL3dheXBvaW50Lm1vZGVscyc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGRlYm91bmNlVGltZSxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgQXV0b2NvbXBsZXRlUHJlZGljdGlvbiA9IGdvb2dsZS5tYXBzLnBsYWNlcy5BdXRvY29tcGxldGVQcmVkaWN0aW9uO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlY2Ficy1wbGFjZS1hdXRvY29tcGxldGUtdjInLFxuICB0ZW1wbGF0ZVVybDogJy4vZWNhYnMtcGxhY2UtYXV0b2NvbXBsZXRlLXYyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZWNhYnMtcGxhY2UtYXV0b2NvbXBsZXRlLXYyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IEVjYWJzUGxhY2VBdXRvY29tcGxldGVWMkNvbXBvbmVudCxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEVjYWJzUGxhY2VBdXRvY29tcGxldGVWMkNvbXBvbmVudFxuICBleHRlbmRzIEVjYWJzRWxlbWVudEJhc2VDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG57XG4gIEBWaWV3Q2hpbGQoJ21hdEN1c3RvbUF1dG9jb21wbGV0ZUlucHV0JywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIG1hdEN1c3RvbUlucHV0OiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCgpXG4gIHNob3dEZWxldGVJdGVtID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgd2F5cG9pbnRzSGlzdG9yeTogV2F5cG9pbnRTdWdnZXN0aW9uW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBzaG93U3VmZml4ID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgY291bnRyeUNvZGUgPSAnTVQnO1xuXG4gIEBJbnB1dCgpXG4gIGdvb2dsZUxvYWRlZDogYm9vbGVhbjtcblxuICBASW5wdXQoKVxuICB3YXlwb2ludFR5cGU6IFdheXBvaW50VHlwZUVudW07XG5cbiAgQElucHV0KClcbiAgZGVib3VuY2VUaW1lID0gMjQwO1xuXG4gIEBPdXRwdXQoKVxuICByZWFkb25seSBwbGFjZVJlc3VsdDogRXZlbnRFbWl0dGVyPEdvb2dsZVBsYWNlUmVzdWx0PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgZGVsZXRlSXRlbSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgcXVlcnlDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxXYXlwb2ludFF1ZXJ5Q2hhbmdlPigpO1xuXG4gIGlzRm9jdXNlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgdmFsdWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgd2F5cG9pbnRTdWdnZXN0aW9ucyQ6IE9ic2VydmFibGU8V2F5cG9pbnRTdWdnZXN0aW9uW10+O1xuXG4gIHNlbGVjdGVkSW5kZXggPSAtMTtcbiAgZGlzcGxheWVkU3VnZ2VzdGlvbnM6IFdheXBvaW50U3VnZ2VzdGlvbltdID0gW107XG5cbiAgcHJpdmF0ZSBfdmFsdWUgPSAnJztcblxuICBwcml2YXRlIG1hcEF1dG9jb21wbGV0ZVNlcnZpY2U6IGdvb2dsZS5tYXBzLnBsYWNlcy5BdXRvY29tcGxldGVTZXJ2aWNlO1xuICBwcml2YXRlIHBsYWNlc1NlcnZpY2U6IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZXNTZXJ2aWNlO1xuICBwcml2YXRlIHNlc3Npb25Ub2tlbjogZ29vZ2xlLm1hcHMucGxhY2VzLkF1dG9jb21wbGV0ZVNlc3Npb25Ub2tlbjtcblxuICBnZXQgdmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBzZXQgdmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh0aGlzLl92YWx1ZSA9PT0gdmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMudmFsdWUkLm5leHQodmFsdWUpO1xuICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcixcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCB7IGdvb2dsZUxvYWRlZCB9ID0gY2hhbmdlcyA/PyB7fTtcblxuICAgIGlmIChnb29nbGVMb2FkZWQ/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5pbml0R29vZ2xlKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IG5nQ29udHJvbDogTmdDb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoXG4gICAgICBOZ0NvbnRyb2wsXG4gICAgICBudWxsLFxuICAgICkgYXMgTmdDb250cm9sO1xuXG4gICAgaWYgKG5nQ29udHJvbCkge1xuICAgICAgdGhpcy5jb250cm9sID0gbmdDb250cm9sLmNvbnRyb2wgYXMgVW50eXBlZEZvcm1Db250cm9sO1xuICAgIH1cblxuICAgIHRoaXMud2F5cG9pbnRTdWdnZXN0aW9ucyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuaXNGb2N1c2VkJCxcbiAgICAgIHRoaXMudmFsdWUkLFxuICAgIF0pLnBpcGUoXG4gICAgICBkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZVRpbWUpLFxuICAgICAgc3dpdGNoTWFwKChbaXNGb2N1c2VkLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgaWYgKCFpc0ZvY3VzZWQpIHtcbiAgICAgICAgICByZXR1cm4gb2YoW10gYXMgV2F5cG9pbnRTdWdnZXN0aW9uW10pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgIHJldHVybiBvZih0aGlzLndheXBvaW50c0hpc3RvcnkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0V2F5cG9pbnRSZXN1bHRzKHZhbHVlKTtcbiAgICAgIH0pLFxuICAgICAgbWFwKChyZXN1bHRzKSA9PiB7XG4gICAgICAgIHRoaXMuZGlzcGxheWVkU3VnZ2VzdGlvbnMgPSByZXN1bHRzO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSByZXN1bHRzPy5sZW5ndGggPyAwIDogLTE7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgcHJpdmF0ZSBvblRvdWNoOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgcHJpdmF0ZSBnZXRXYXlwb2ludFJlc3VsdHMocXVlcnk6IHN0cmluZyk6IE9ic2VydmFibGU8V2F5cG9pbnRTdWdnZXN0aW9uW10+IHtcbiAgICB0aGlzLnF1ZXJ5Q2hhbmdlZC5lbWl0KHtcbiAgICAgIHdheXBvaW50X3R5cGU6IHRoaXMud2F5cG9pbnRUeXBlLFxuICAgICAgcGxhY2VfbmFtZTogcXVlcnksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICBvZih0aGlzLndheXBvaW50c0hpc3RvcnkpLFxuICAgICAgdGhpcy5nZXRQbGFjZXNSZXN1bHRzKHF1ZXJ5KSxcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbaGlzdG9yeSwgZ29vZ2xlXSkgPT4ge1xuICAgICAgICBjb25zdCBoaXN0b3J5SXRlbXMgPSBoaXN0b3J5ID8/IFtdLFxuICAgICAgICAgIGdvb2dsZUl0ZW1zID0gZ29vZ2xlID8/IFtdO1xuXG4gICAgICAgIHJldHVybiBbLi4uaGlzdG9yeUl0ZW1zLCAuLi5nb29nbGVJdGVtc107XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQbGFjZXNSZXN1bHRzKHF1ZXJ5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFdheXBvaW50U3VnZ2VzdGlvbltdPiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcikgPT4ge1xuICAgICAgdGhpcy5tYXBBdXRvY29tcGxldGVTZXJ2aWNlLmdldFBsYWNlUHJlZGljdGlvbnMoXG4gICAgICAgIHtcbiAgICAgICAgICBpbnB1dDogcXVlcnksXG4gICAgICAgICAgY29tcG9uZW50UmVzdHJpY3Rpb25zOiB7IGNvdW50cnk6IHRoaXMuY291bnRyeUNvZGUgfSxcbiAgICAgICAgICBzZXNzaW9uVG9rZW46IHRoaXMuc2Vzc2lvblRva2VuLFxuICAgICAgICB9LFxuICAgICAgICAocHJlZGljdGlvbnMpID0+IHtcbiAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh0aGlzLnRvV2F5cG9pbnRTdWdnZXN0aW9ucyhwcmVkaWN0aW9ucykpO1xuICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHRvV2F5cG9pbnRTdWdnZXN0aW9ucyhcbiAgICBwcmVkaWN0aW9uczogQXV0b2NvbXBsZXRlUHJlZGljdGlvbltdIHwgbnVsbCxcbiAgKTogV2F5cG9pbnRTdWdnZXN0aW9uW10ge1xuICAgIHJldHVybiAocHJlZGljdGlvbnMgPz8gW10pLm1hcCgocHJlZGljdGlvbikgPT4gKHtcbiAgICAgIGFkZGl0aW9uYWxfaW5mbzogcHJlZGljdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgIHBsYWNlX2lkOiBwcmVkaWN0aW9uLnBsYWNlX2lkLFxuICAgICAgc291cmNlOiAnZ29vZ2xlJyxcbiAgICAgIHByZWRpY3Rpb25fdGVybTogcHJlZGljdGlvbi50ZXJtcyxcbiAgICB9KSk7XG4gIH1cblxuICBvblNlbGVjdFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbjogV2F5cG9pbnRTdWdnZXN0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgeyBhZGRpdGlvbmFsX2luZm8sIHBsYWNlX2lkIH0gPSBzdWdnZXN0aW9uID8/IHt9O1xuXG4gICAgdGhpcy52YWx1ZSA9IGFkZGl0aW9uYWxfaW5mbztcbiAgICB0aGlzLnBsYWNlc1NlcnZpY2UuZ2V0RGV0YWlscyhcbiAgICAgIHtcbiAgICAgICAgcGxhY2VJZDogcGxhY2VfaWQsXG4gICAgICAgIHNlc3Npb25Ub2tlbjogdGhpcy5zZXNzaW9uVG9rZW4sXG4gICAgICAgIGZpZWxkczogWydhZGRyZXNzX2NvbXBvbmVudHMnLCAnZ2VvbWV0cnkubG9jYXRpb24nLCAncGxhY2VfaWQnXSxcbiAgICAgIH0sXG4gICAgICAocGxhY2UsIHN0YXR1cykgPT4ge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIGlmIChzdGF0dXMgPT09IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZXNTZXJ2aWNlU3RhdHVzLk9LICYmIHBsYWNlKSB7XG4gICAgICAgICAgICB0aGlzLnBsYWNlUmVzdWx0LmVtaXQoe1xuICAgICAgICAgICAgICBwbGFjZSxcbiAgICAgICAgICAgICAgdGV4dDogYWRkaXRpb25hbF9pbmZvLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignUGxhY2UgZGV0YWlscyBsb29rdXAgZmFpbGVkJywgeyBzdGF0dXMsIHBsYWNlX2lkIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMucmVzZXRTZXNzaW9uVG9rZW4oKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzcGxheWVkU3VnZ2VzdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPVxuICAgICAgICAgICh0aGlzLnNlbGVjdGVkSW5kZXggKyAxKSAlIHRoaXMuZGlzcGxheWVkU3VnZ2VzdGlvbnMubGVuZ3RoO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9XG4gICAgICAgICAgKHRoaXMuc2VsZWN0ZWRJbmRleCAtIDEgKyB0aGlzLmRpc3BsYXllZFN1Z2dlc3Rpb25zLmxlbmd0aCkgJVxuICAgICAgICAgIHRoaXMuZGlzcGxheWVkU3VnZ2VzdGlvbnMubGVuZ3RoO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSW5kZXggPj0gMCkge1xuICAgICAgICAgIHRoaXMub25TZWxlY3RTdWdnZXN0aW9uKFxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5ZWRTdWdnZXN0aW9uc1t0aGlzLnNlbGVjdGVkSW5kZXhdLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ0VzY2FwZSc6XG4gICAgICAgIHRoaXMuaXNGb2N1c2VkJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gLTE7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIG9uQmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLmlzRm9jdXNlZCQubmV4dChmYWxzZSk7XG4gICAgdGhpcy5vblRvdWNoKCk7XG4gIH1cblxuICBvbkZvY3VzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy5yZXNldFNlc3Npb25Ub2tlbigpO1xuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuaXNGb2N1c2VkJC5uZXh0KHRydWUpKSk7XG4gIH1cblxuICB3cml0ZVZhbHVlKG5leHRWYWx1ZSA9ICcnKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3ZhbHVlID09PSBuZXh0VmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl92YWx1ZSA9IG5leHRWYWx1ZTtcbiAgICB0aGlzLnZhbHVlJC5uZXh0KG5leHRWYWx1ZSk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoID0gZm47XG4gIH1cblxuICBvbkRlbGV0ZUl0ZW0oKTogdm9pZCB7XG4gICAgdGhpcy5kZWxldGVJdGVtLmVtaXQoKTtcbiAgfVxuXG4gIG9uQ2xlYW4oKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9ICcnO1xuICAgIHRoaXMub25Ub3VjaCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0R29vZ2xlKCk6IHZvaWQge1xuICAgIHRoaXMubWFwQXV0b2NvbXBsZXRlU2VydmljZSA9IG5ldyBnb29nbGUubWFwcy5wbGFjZXMuQXV0b2NvbXBsZXRlU2VydmljZSgpO1xuXG4gICAgdGhpcy5wbGFjZXNTZXJ2aWNlID0gbmV3IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZXNTZXJ2aWNlKFxuICAgICAgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksXG4gICAgKTtcblxuICAgIHRoaXMucmVzZXRTZXNzaW9uVG9rZW4oKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRTZXNzaW9uVG9rZW4oKTogdm9pZCB7XG4gICAgdGhpcy5zZXNzaW9uVG9rZW4gPSBuZXcgZ29vZ2xlLm1hcHMucGxhY2VzLkF1dG9jb21wbGV0ZVNlc3Npb25Ub2tlbigpO1xuICB9XG59XG4iLCI8ZWNhYnMtZWxlbWVudC13cmFwcGVyIFtkYXRhXT1cImdldERhdGEoKVwiPlxuICA8ZGl2IGNsYXNzPVwiYXV0b2NvbXBsZXRlLXVpIHctZnVsbFwiPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwiZm9ybS1maWVsZF9faW5wdXQtLXdyYXBwZXIgdy1mdWxsXCI+XG4gICAgICA8aW5wdXQgI21hdEN1c3RvbUF1dG9jb21wbGV0ZUlucHV0XG4gICAgICAgICAgICAgY2RrT3ZlcmxheU9yaWdpblxuICAgICAgICAgICAgICN0cmlnZ2VyPVwiY2RrT3ZlcmxheU9yaWdpblwiXG4gICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidmFsdWVcIlxuICAgICAgICAgICAgIFtpZF09XCJuYW1lXCJcbiAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGRfX2lucHV0IHctZnVsbFwiXG4gICAgICAgICAgICAgYXV0b2NvcnJlY3Q9XCJvZmZcIlxuICAgICAgICAgICAgIGF1dG9jYXBpdGFsaXplPVwib2ZmXCJcbiAgICAgICAgICAgICBzcGVsbGNoZWNrPVwib2ZmXCJcbiAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygpXCJcbiAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxuICAgICAgLz5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkX19pbnB1dC0tc3VmZml4XCIgKm5nSWY9XCJzaG93U3VmZml4XCI+XG4gICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInNob3dEZWxldGVJdGVtXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3VmZml4IGN1cnNvci1wb2ludGVyIGRlbGV0ZS1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlSXRlbSgpXCI+XG4gICAgICAgICAgZGVsZXRlXG4gICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInN1ZmZpeCBjdXJzb3ItcG9pbnRlclwiICpuZ0lmPVwiIXNob3dEZWxldGVJdGVtICYmIHZhbHVlXCIgKGNsaWNrKT1cIm9uQ2xlYW4oKVwiPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cbiAgICA8IS0tIEN1c3RvbSBkcm9wZG93biAtLT5cbiAgICA8bmctdGVtcGxhdGUgY2RrQ29ubmVjdGVkT3ZlcmxheVxuICAgICAgICAgICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheVdpZHRoXT1cInRyaWdnZXIuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoXCJcbiAgICAgICAgICAgICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlGbGV4aWJsZURpbWVuc2lvbnNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09XCJ0cmlnZ2VyXCJcbiAgICAgICAgICAgICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcGVuXT1cImlzRm9jdXNlZCQgfCBhc3luY1wiPlxuICAgICAgPHVsIGNsYXNzPVwiYXV0b2NvbXBsZXRlLXVpX19jb250YWluZXJcIj5cbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBzdWdnZXN0aW9uIG9mIHdheXBvaW50U3VnZ2VzdGlvbnMkIHwgYXN5bmMgfCBzbGljZTowOjEwOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgIGNsYXNzPVwiYXV0b2NvbXBsZXRlLXVpLS1pdGVtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBob3ZlcjpiZy1ncmF5LTEwMFwiXG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImkgPT09IHNlbGVjdGVkSW5kZXhcIlxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvblNlbGVjdFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbilcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3VnZ2VzdGlvbj8uc291cmNlID09PSAnaGlzdG9yeSc7IGVsc2UgcHVyZVBsYWNlUmVzdWx0VHBsXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIHRydW5jYXRlXCI+XG4gICAgICAgICAgICAgIHt7IHN1Z2dlc3Rpb24/LmFkZGl0aW9uYWxfaW5mbyB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJzdWdnZXN0aW9uPy5zb3VyY2UgPT09ICdoaXN0b3J5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LTUgaC01IHRleHQteGwgdGV4dC1ncmF5LTQwMCAhaG92ZXI6dGV4dC1ncmF5LTQwMFwiPlxuICAgICAgICAgICAgICBoaXN0b3J5XG4gICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNwdXJlUGxhY2VSZXN1bHRUcGw+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJ3LWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLXgtMSBsZWFkaW5nLTAgb3ZlcmZsb3ctaGlkZGVuIHdoaXRlc3BhY2Utbm93cmFwXCI+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICB7eyBzdWdnZXN0aW9uPy5wcmVkaWN0aW9uX3Rlcm1bMF0/LnZhbHVlIH19XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaSAqbmdJZj1cInN1Z2dlc3Rpb24/LnByZWRpY3Rpb25fdGVybVsxXT8udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXhzIHRleHQtZ3JheS02MDAgdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgICAgICB7eyBzdWdnZXN0aW9uPy5wcmVkaWN0aW9uX3Rlcm1bMV0/LnZhbHVlIHwgc2VwYXJhdG9yQXBwZW5kOiBzdWdnZXN0aW9uPy5wcmVkaWN0aW9uX3Rlcm1bMl0/LnZhbHVlIH19XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaSAqbmdJZj1cInN1Z2dlc3Rpb24/LnByZWRpY3Rpb25fdGVybVsyXT8udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXhzIHRleHQtZ3JheS02MDAgZm9udC1zZW1pYm9sZCB0cnVuY2F0ZVwiPlxuICAgICAgICAgICAgICAgIHt7IHN1Z2dlc3Rpb24/LnByZWRpY3Rpb25fdGVybVsyXT8udmFsdWUgfX1cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvdWw+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L2VjYWJzLWVsZW1lbnQtd3JhcHBlcj5cbiJdfQ==