tango-app-ui-store-builder 1.0.12 → 1.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/esm2022/lib/components/fixture-template/fixture-template.component.mjs +9 -23
  2. package/esm2022/lib/components/fixture-template/template-basic-details/template-basic-details.component.mjs +47 -84
  3. package/esm2022/lib/components/fixture-template/template-products/template-products.component.mjs +1 -1
  4. package/esm2022/lib/components/fixture-template/template-vms/template-vms.component.mjs +5 -4
  5. package/esm2022/lib/components/manage-store-plano/manage-store-plano-feedback/manage-store-plano-feedback.component.mjs +3 -3
  6. package/esm2022/lib/components/manage-store-plano/manage-store-plano.component.mjs +46 -366
  7. package/esm2022/lib/components/manage-store-plano/plano-rollout/plano-rollout.component.mjs +10 -51
  8. package/esm2022/lib/components/manage-store-plano/template-basic-details/template-basic-details.component.mjs +9 -26
  9. package/esm2022/lib/components/manage-store-plano/template-products/template-products.component.mjs +2 -2
  10. package/esm2022/lib/components/manage-store-plano/template-vms/template-vms.component.mjs +73 -101
  11. package/esm2022/lib/components/reactive-select/reactive-select.component.mjs +3 -3
  12. package/esm2022/lib/interfaces/fixture-template.interface.mjs +1 -1
  13. package/esm2022/lib/services/store-builder.service.mjs +4 -4
  14. package/esm2022/lib/tango-store-builder.module.mjs +7 -11
  15. package/fesm2022/tango-app-ui-store-builder.mjs +1147 -2524
  16. package/fesm2022/tango-app-ui-store-builder.mjs.map +1 -1
  17. package/lib/components/fixture-template/fixture-template.component.d.ts +0 -1
  18. package/lib/components/fixture-template/template-basic-details/template-basic-details.component.d.ts +9 -9
  19. package/lib/components/manage-plano/rollout-table/rollout-table.component.d.ts +1 -1
  20. package/lib/components/manage-plano/verification-table/verification-table.component.d.ts +1 -1
  21. package/lib/components/manage-store-plano/manage-store-plano.component.d.ts +6 -23
  22. package/lib/components/manage-store-plano/plano-rollout/plano-rollout.component.d.ts +1 -1
  23. package/lib/components/manage-store-plano/template-basic-details/template-basic-details.component.d.ts +6 -7
  24. package/lib/components/manage-store-plano/template-vms/template-vms.component.d.ts +9 -9
  25. package/lib/interfaces/fixture-template.interface.d.ts +2 -2
  26. package/lib/services/store-builder.service.d.ts +1 -1
  27. package/lib/tango-store-builder.module.d.ts +33 -35
  28. package/package.json +1 -1
  29. package/esm2022/lib/components/manage-store-plano/verification-feedback/action-confirm-popup/action-confirm-popup.component.mjs +0 -80
  30. package/esm2022/lib/components/manage-store-plano/verification-feedback/fixture/fixture.component.mjs +0 -375
  31. package/esm2022/lib/components/manage-store-plano/verification-feedback/verification-feedback.component.mjs +0 -486
  32. package/lib/components/manage-store-plano/verification-feedback/action-confirm-popup/action-confirm-popup.component.d.ts +0 -21
  33. package/lib/components/manage-store-plano/verification-feedback/fixture/fixture.component.d.ts +0 -48
  34. package/lib/components/manage-store-plano/verification-feedback/verification-feedback.component.d.ts +0 -76
@@ -1,9 +1,9 @@
1
- import { Component, EventEmitter, Input, Output, } from "@angular/core";
2
- import { FormsModule, ReactiveFormsModule, Validators, } from "@angular/forms";
3
- import { CommonModule } from "@angular/common";
4
- import { CounterInputComponent } from "../../counter-input/counter-input.component";
5
- import { generalValidator } from "../../../functions/plano.function";
6
- import { ReactiveSelectComponent } from "../../reactive-select/reactive-select.component";
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';
3
+ import { CommonModule } from '@angular/common';
4
+ import { CounterInputComponent } from '../../counter-input/counter-input.component';
5
+ import { generalValidator } from '../../../functions/plano.function';
6
+ import { ReactiveSelectComponent } from '../../reactive-select/reactive-select.component';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@angular/forms";
9
9
  import * as i2 from "tango-app-ui-shared";
@@ -129,7 +129,6 @@ export class InstanceBasicDetailsComponent {
129
129
  return;
130
130
  }
131
131
  if (this.fixtureTemplateBasicDetailsForm.valid) {
132
- this.validateFixtureData();
133
132
  const payload = {
134
133
  ...this.fixtureTemplateDetails,
135
134
  description: this.fixtureTemplateBasicDetailsForm.value.description,
@@ -145,16 +144,10 @@ export class InstanceBasicDetailsComponent {
145
144
  templateGroupName: this.fixtureTemplateBasicDetailsForm.value.templateGroupName,
146
145
  shelfConfig: this.fixtureTemplateBasicDetailsForm.value.shelf.map((ele, index) => {
147
146
  ele.shelfNumber = index + 1;
148
- ele = {
149
- ...this?.fixtureTemplateDetails?.shelfConfig?.[index],
150
- ...ele,
151
- };
147
+ ele = { ...this?.fixtureTemplateDetails?.shelfConfig?.[index], ...ele };
152
148
  if (!ele?.productBrandName) {
153
149
  if (this?.fixtureTemplateDetails?.shelfConfig?.[index - 1]) {
154
- ele = {
155
- ...this?.fixtureTemplateDetails?.shelfConfig?.[index - 1],
156
- ...ele,
157
- };
150
+ ele = { ...this?.fixtureTemplateDetails?.shelfConfig?.[index - 1], ...ele };
158
151
  }
159
152
  }
160
153
  return ele;
@@ -180,16 +173,6 @@ export class InstanceBasicDetailsComponent {
180
173
  });
181
174
  }
182
175
  }
183
- validateFixtureData() {
184
- this.fixtureTemplateDetails?.vmConfig?.forEach((vm) => {
185
- if ((vm?.startYPosition ?? 1) > (this.shelfArray.length ?? 1)) {
186
- vm.startYPosition = this.shelfArray.length ?? 1;
187
- }
188
- if ((vm?.endYPosition ?? 1) > (this.shelfArray.length ?? 1)) {
189
- vm.endYPosition = this.shelfArray.length ?? 1;
190
- }
191
- });
192
- }
193
176
  getFixtureLibrary() {
194
177
  const d = this.fixtureTemplateDetails;
195
178
  return `${d?.fixtureCategory} ${d?.fixtureWidth?.value} ${d?.fixtureWidth?.unit}`;
@@ -218,4 +201,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
218
201
  }], submitEvent: [{
219
202
  type: Output
220
203
  }] } });
221
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtYmFzaWMtZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS1idWlsZGVyL3NyYy9saWIvY29tcG9uZW50cy9tYW5hZ2Utc3RvcmUtcGxhbm8vdGVtcGxhdGUtYmFzaWMtZGV0YWlscy90ZW1wbGF0ZS1iYXNpYy1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL21hbmFnZS1zdG9yZS1wbGFuby90ZW1wbGF0ZS1iYXNpYy1kZXRhaWxzL3RlbXBsYXRlLWJhc2ljLWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sR0FHUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBS0wsV0FBVyxFQUNYLG1CQUFtQixFQUNuQixVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDcEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFckUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saURBQWlELENBQUM7Ozs7OztBQWUxRixNQUFNLE9BQU8sNkJBQTZCO0lBbUI5QjtJQUNBO0lBQ0E7SUFwQlYsc0JBQXNCLENBQWdDO0lBQ3RELCtCQUErQixDQUFZO0lBRTNDLGFBQWEsR0FBWSxJQUFJLENBQUM7SUFDOUIsVUFBVSxHQUFZLEtBQUssQ0FBQztJQUVuQixXQUFXLENBQU07SUFDakIsUUFBUSxDQUFVO0lBQ2xCLFdBQVcs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XG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1xyXG4gIEZvcm0sXHJcbiAgRm9ybUFycmF5LFxyXG4gIEZvcm1CdWlsZGVyLFxyXG4gIEZvcm1Hcm91cCxcclxuICBGb3Jtc01vZHVsZSxcclxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gIFZhbGlkYXRvcnMsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktc2hhcmVkXCI7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgRml4dHVyZVRlbXBsYXRlRGV0YWlscyB9IGZyb20gXCIuLi8uLi8uLi9pbnRlcmZhY2VzL2ZpeHR1cmUtdGVtcGxhdGUuaW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7IFN0b3JlQnVpbGRlclNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvc3RvcmUtYnVpbGRlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IENvdW50ZXJJbnB1dENvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb3VudGVyLWlucHV0L2NvdW50ZXItaW5wdXQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IGdlbmVyYWxWYWxpZGF0b3IgfSBmcm9tIFwiLi4vLi4vLi4vZnVuY3Rpb25zL3BsYW5vLmZ1bmN0aW9uXCI7XHJcbmltcG9ydCB7IERyb3Bkb3duSUYgfSBmcm9tIFwiLi4vLi4vLi4vaW50ZXJmYWNlcy9wbGFuby1nZW5lcmFsLmludGVyZmFjZVwiO1xyXG5pbXBvcnQgeyBSZWFjdGl2ZVNlbGVjdENvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9yZWFjdGl2ZS1zZWxlY3QvcmVhY3RpdmUtc2VsZWN0LmNvbXBvbmVudFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibGliLWluc3RhbmNlLWJhc2ljLWRldGFpbHNcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3RlbXBsYXRlLWJhc2ljLWRldGFpbHMuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL3RlbXBsYXRlLWJhc2ljLWRldGFpbHMuY29tcG9uZW50LnNjc3NcIixcclxuICBpbXBvcnRzOiBbXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBDb3VudGVySW5wdXRDb21wb25lbnQsXHJcbiAgICBSZWFjdGl2ZVNlbGVjdENvbXBvbmVudCxcclxuICBdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnN0YW5jZUJhc2ljRGV0YWlsc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBmaXh0dXJlVGVtcGxhdGVEZXRhaWxzOiBGaXh0dXJlVGVtcGxhdGVEZXRhaWxzIHwgbnVsbDtcclxuICBmaXh0dXJlVGVtcGxhdGVCYXNpY0RldGFpbHNGb3JtOiBGb3JtR3JvdXA7XHJcblxyXG4gIGlzUGFnZUxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGlzRWRpdE1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgZml4dHVyZURhdGE6IGFueTtcclxuICBASW5wdXQoKSBlZGl0TW9kZTogYm9vbGVhbjtcclxuICBASW5wdXQoKSBpc1N1Ym1pdHRlZDogYm9vbGVhbjtcclxuICBAT3V0cHV0KCkgc3VibWl0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgaW5pdGlhbFN0YXRlOiBhbnkgPSAwO1xyXG5cclxuICByZWFkb25seSBzaGVsZlR5cGVzOiBEcm9wZG93bklGW10gPSBbXHJcbiAgICB7IGxhYmVsOiBcIlNoZWxmXCIsIHZhbHVlOiBcInNoZWxmXCIgfSxcclxuICAgIHsgbGFiZWw6IFwiVHJheVwiLCB2YWx1ZTogXCJ0cmF5XCIgfSxcclxuICBdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSB0b2FzdDogVG9hc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzdG9yZUJ1aWxkZXJTZXJ2aWNlOiBTdG9yZUJ1aWxkZXJTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlc1tcImZpeHR1cmVEYXRhXCJdKSB7XHJcbiAgICAgIHRoaXMuaXNQYWdlTG9hZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZml4dHVyZVRlbXBsYXRlRGV0YWlscyA9IGNoYW5nZXNbXCJmaXh0dXJlRGF0YVwiXS5jdXJyZW50VmFsdWU7XHJcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm0oKTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzW1wiZWRpdE1vZGVcIl0pIHtcclxuICAgICAgdGhpcy5pc0VkaXRNb2RlID0gY2hhbmdlc1tcImVkaXRNb2RlXCJdLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgaWYgKHRoaXMuaXNFZGl0TW9kZSkge1xyXG4gICAgICAgIHRoaXMuZml4dHVyZVRlbXBsYXRlQmFzaWNEZXRhaWxzRm9ybT8uZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbXCJpc1N1Ym1pdHRlZFwiXSkge1xyXG4gICAgICBpZiAoY2hhbmdlc1tcImlzU3VibWl0dGVkXCJdLmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMuc3VibWl0Rm9ybSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplRm9ybSgpIHtcclxuICAgIHRoaXMuZml4dHVyZVRlbXBsYXRlQmFzaWNEZXRhaWxzRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBkZXNjcmlwdGlvbjogW1xyXG4gICAgICAgIHRoaXMuZml4dHVyZVRlbXBsYXRlRGV0YWlscz8uZGVzY3JpcHRpb24gPz8gXCJcIixcclxuICAgICAgICBnZW5lcmFsVmFsaWRhdG9yKCksXHJcbiAgICAgIF0sXHJcbiAgICAgIGZpeHR1cmVDYXRlZ29yeTogW3RoaXMuZ2V0Rml4dHVyZUxpYnJhcnkoKSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIGhlYWRlckxhYmVsOiBbXHJcbiAgICAgICAgdGhpcy5maXh0dXJlVGVtcGxhdGVEZXRhaWxzPy5oZWFkZXI/LmxhYmVsLFxyXG4gICAgICAgIGdlbmVyYWxWYWxpZGF0b3IoKSxcclxuICAgICAgXSxcclxuICAgICAgc2hlbGY6IHRoaXMuZmIuYXJyYXkoW10pLFxyXG4gICAgICBmb290ZXJMYWJlbDogW1xyXG4gICAgICAgIHRoaXMuZml4dHVyZVRlbXBsYXRlRGV0YWlscz8uZm9vdGVyPy5sYWJlbCxcclxuICAgICAgICBnZW5lcmFsVmFsaWRhdG9yKCksXHJcbiAgICAgIF0sXHJcbiAgICAgIHRlbXBsYXRlR3JvdXBOYW1lOiBbXHJcbiAgICAgICAgdGhpcy5maXh0dXJlVGVtcGxhdGVEZXRhaWxzPy50ZW1wbGF0ZUdyb3VwTmFtZSxcclxuICAgICAgICBnZW5lcmFsVmFsaWRhdG9yKCksXHJcbiAgICAgIF0sXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LnNoZWxmQ29uZmlnPy5mb3JFYWNoKChpKSA9PiB0aGlzLmFkZFNoZWxmKGkpKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuaXNFZGl0TW9kZSlcclxuICAgICAgdGhpcy5maXh0dXJlVGVtcGxhdGVCYXNpY0RldGFpbHNGb3JtPy5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIHRoaXMuaXNQYWdlTG9hZGluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgYWRkU2hlbGYoc2hlbGY/OiBhbnkpIHtcclxuICAgIGNvbnN0IHNoZWxmR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgc2hlbGZUeXBlOiBbc2hlbGY/LnNoZWxmVHlwZSA/PyBcInNoZWxmXCJdLFxyXG4gICAgICBwcm9kdWN0UGVyU2hlbGY6IFtzaGVsZj8ucHJvZHVjdFBlclNoZWxmID8/IDEsIFtWYWxpZGF0b3JzLm1pbigxKV1dLFxyXG4gICAgICB0cmF5Um93czogW3NoZWxmPy50cmF5Um93cyA/PyAxXSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXR1cFNoZWxmVHlwZUxpc3RlbmVyKHNoZWxmR3JvdXApO1xyXG4gICAgdGhpcy5zaGVsZkFycmF5LnB1c2goc2hlbGZHcm91cCk7XHJcbiAgfVxyXG5cclxuICBzZXR1cFNoZWxmVHlwZUxpc3RlbmVyKHNoZWxmR3JvdXA6IEZvcm1Hcm91cCkge1xyXG4gICAgc2hlbGZHcm91cC5nZXQoXCJzaGVsZlR5cGVcIik/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHR5cGUpID0+IHtcclxuICAgICAgY29uc3Qgbm9PZlJvd3NDb250cm9sID0gc2hlbGZHcm91cC5nZXQoXCJub09mUm93c1wiKTtcclxuICAgICAgaWYgKHR5cGUgPT09IFwidHJheVwiKSB7XHJcbiAgICAgICAgbm9PZlJvd3NDb250cm9sPy5zZXRWYWxpZGF0b3JzKFtcclxuICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLm1pbigxKSxcclxuICAgICAgICBdKTtcclxuICAgICAgICBub09mUm93c0NvbnRyb2w/LnNldFZhbHVlKDEpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5vT2ZSb3dzQ29udHJvbD8uY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICAgICAgbm9PZlJvd3NDb250cm9sPy5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgfVxyXG4gICAgICBub09mUm93c0NvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gSWYgaW5kZXggaXMgbm90IGdpdmVuLCBsYXN0IHNoZWxmIHNob3VsZCBiZSByZW1vdmVkXHJcbiAgcmVtb3ZlU2hlbGYoaW5kZXg6IG51bWJlciA9IHRoaXMuc2hlbGZBcnJheS5jb250cm9scy5sZW5ndGggLSAxKSB7XHJcbiAgICB0aGlzLnNoZWxmQXJyYXkucmVtb3ZlQXQoaW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNoZWxmQXJyYXkoKTogRm9ybUFycmF5IHtcclxuICAgIHJldHVybiB0aGlzLmZpeHR1cmVUZW1wbGF0ZUJhc2ljRGV0YWlsc0Zvcm0uZ2V0KFwic2hlbGZcIikgYXMgRm9ybUFycmF5O1xyXG4gIH1cclxuXHJcbiAgZ2V0IHRvdGFsUHJvZHVjdENhcGFjaXR5KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5zaGVsZkFycmF5LmNvbnRyb2xzLnJlZHVjZSgodG90YWwsIGl0ZW0pID0+IHtcclxuICAgICAgY29uc3QgY291bnQgPSBpdGVtLmdldChcInByb2R1Y3RQZXJTaGVsZlwiKT8udmFsdWUgfHwgMDtcclxuICAgICAgY29uc3QgaXNUcmF5ID0gaXRlbS5nZXQoXCJzaGVsZlR5cGVcIik/LnZhbHVlID09PSBcInRyYXlcIjtcclxuICAgICAgY29uc3Qgcm93cyA9IGl0ZW0uZ2V0KFwidHJheVJvd3NcIik/LnZhbHVlIHx8IDE7XHJcblxyXG4gICAgICAvLyBJZiB0aGUgZml4dHVyZSBpcyBhIGZsb29yIHBhbmVsIG9yIHRyYXksIHdlIG5lZWQgdG8gbXVsdGlwbHkgdGhlIHByb2R1Y3QgY2FwYWNpdHkgYnkgdGhlIG51bWJlciBvZiByb3dzXHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgdG90YWwgK1xyXG4gICAgICAgIChpc1RyYXkgfHwgdGhpcy5maXh0dXJlVGVtcGxhdGVEZXRhaWxzPy5maXh0dXJlVHlwZSA9PT0gXCJmbG9vclwiXHJcbiAgICAgICAgICA/IGNvdW50ICogcm93c1xyXG4gICAgICAgICAgOiBjb3VudClcclxuICAgICAgKTtcclxuICAgIH0sIDApO1xyXG4gIH1cclxuXHJcbiAgc3VibWl0Rm9ybSgpIHtcclxuICAgIGlmICghdGhpcy5maXh0dXJlVGVtcGxhdGVEZXRhaWxzKSByZXR1cm47XHJcblxyXG4gICAgaWYgKHRoaXMuZml4dHVyZVRlbXBsYXRlQmFzaWNEZXRhaWxzRm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuZml4dHVyZVRlbXBsYXRlQmFzaWNEZXRhaWxzRm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChcIkZvcm0gaXMgaW52YWxpZFwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmZpeHR1cmVUZW1wbGF0ZUJhc2ljRGV0YWlsc0Zvcm0udmFsaWQpIHtcclxuICAgICAgdGhpcy52YWxpZGF0ZUZpeHR1cmVEYXRhKCk7XHJcbiAgICAgIGNvbnN0IHBheWxvYWQ6IEZpeHR1cmVUZW1wbGF0ZURldGFpbHMgPSB7XHJcbiAgICAgICAgLi4udGhpcy5maXh0dXJlVGVtcGxhdGVEZXRhaWxzLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmZpeHR1cmVUZW1wbGF0ZUJhc2ljRGV0YWlsc0Zvcm0udmFsdWUuZGVzY3JpcHRpb24sXHJcbiAgICAgICAgaGVhZGVyOiB7XHJcbiAgICAgICAgICAuLi50aGlzLmZpeHR1cmVUZW1wbGF0ZURldGFpbHMuaGVhZGVyLFxyXG4gICAgICAgICAgbGFiZWw6IHRoaXMuZml4dHVyZVRlbXBsYXRlQmFzaWNEZXRhaWxzRm9ybS52YWx1ZS5oZWFkZXJMYWJlbCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZvb3Rlcjoge1xyXG4gICAgICAgICAgLi4udGhpcy5maXh0dXJlVGVtcGxhdGVEZXRhaWxzLmZvb3RlcixcclxuICAgICAgICAgIGxhYmVsOiB0aGlzLmZpeHR1cmVUZW1wbGF0ZUJhc2ljRGV0YWlsc0Zvcm0udmFsdWUuZm9vdGVyTGFiZWwsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBmaXh0dXJlQ2FwYWNpdHk6IHRoaXMudG90YWxQcm9kdWN0Q2FwYWNpdHksXHJcbiAgICAgICAgdGVtcGxhdGVHcm91cE5hbWU6XHJcbiAgICAgICAgICB0aGlzLmZpeHR1cmVUZW1wbGF0ZUJhc2ljRGV0YWlsc0Zvcm0udmFsdWUudGVtcGxhdGVHcm91cE5hbWUsXHJcbiAgICAgICAgc2hlbGZDb25maWc6IHRoaXMuZml4dHVyZVRlbXBsYXRlQmFzaWNEZXRhaWxzRm9ybS52YWx1ZS5zaGVsZi5tYXAoXHJcbiAgICAgICAgICAoZWxlOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgZWxlLnNoZWxmTnVtYmVyID0gaW5kZXggKyAxO1xyXG4gICAgICAgICAgICBlbGUgPSB7XHJcbiAgICAgICAgICAgICAgLi4udGhpcz8uZml4dHVyZVRlbXBsYXRlRGV0YWlscz8uc2hlbGZDb25maWc/LltpbmRleF0sXHJcbiAgICAgICAgICAgICAgLi4uZWxlLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBpZiAoIWVsZT8ucHJvZHVjdEJyYW5kTmFtZSkge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzPy5maXh0dXJlVGVtcGxhdGVEZXRhaWxzPy5zaGVsZkNvbmZpZz8uW2luZGV4IC0gMV0pIHtcclxuICAgICAgICAgICAgICAgIGVsZSA9IHtcclxuICAgICAgICAgICAgICAgICAgLi4udGhpcz8uZml4dHVyZVRlbXBsYXRlRGV0YWlscz8uc2hlbGZDb25maWc/LltpbmRleCAtIDFdLFxyXG4gICAgICAgICAgICAgICAgICAuLi5lbGUsXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gZWxlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICksXHJcbiAgICAgICAgdXBkYXRlZEF0OiBuZXcgRGF0ZShEYXRlLm5vdygpKS50b0lTT1N0cmluZygpLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgY29uc3QgcmVxID0ge1xyXG4gICAgICAgIGZpeHR1cmVJZDogdGhpcy5maXh0dXJlVGVtcGxhdGVEZXRhaWxzLl9pZCxcclxuICAgICAgICBkYXRhOiBwYXlsb2FkLFxyXG4gICAgICAgIC4uLighdGhpcy5maXh0dXJlRGF0YT8udGFza1R5cGUgJiYgeyBlZGl0TW9kZTogdGhpcy5pc0VkaXRNb2RlIH0pLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy5zdG9yZUJ1aWxkZXJTZXJ2aWNlLnVwZGF0ZVN0b3JlRml4dHVyZShyZXEpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzPy5kYXRhPy5pZCkge1xyXG4gICAgICAgICAgICBsZXQgbWVzc2FnZSA9IGBGaXh0dXJlIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5IGFuZCB0ZW1wbGF0ZSBpcyBjcmVhdGVkIDxhIGhyZWY9J21hbmFnZS9wbGFub2dyYW0vZml4dHVyZS10ZW1wbGF0ZS9iYXNpYy1kZXRhaWxzP3RlbXBsYXRlSWQ9JHtyZXMuZGF0YS5pZH0maXNFZGl0PWZhbHNlJz5WaWV3PC9hPmA7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KG1lc3NhZ2UpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRTdWNjZXNzVG9hc3QoXCJGaXh0dXJlIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5XCIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5zdWJtaXRFdmVudC5lbWl0KHRydWUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVGaXh0dXJlRGF0YSgpIHtcclxuICAgIHRoaXMuZml4dHVyZVRlbXBsYXRlRGV0YWlscz8udm1Db25maWc/LmZvckVhY2goKHZtKSA9PiB7XHJcbiAgICAgIGlmICgodm0/LnN0YXJ0WVBvc2l0aW9uID8/IDEpID4gKHRoaXMuc2hlbGZBcnJheS5sZW5ndGggPz8gMSkpIHtcclxuICAgICAgICB2bS5zdGFydFlQb3NpdGlvbiA9IHRoaXMuc2hlbGZBcnJheS5sZW5ndGggPz8gMTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCh2bT8uZW5kWVBvc2l0aW9uID8/IDEpID4gKHRoaXMuc2hlbGZBcnJheS5sZW5ndGggPz8gMSkpIHtcclxuICAgICAgICB2bS5lbmRZUG9zaXRpb24gPSB0aGlzLnNoZWxmQXJyYXkubGVuZ3RoID8/IDE7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rml4dHVyZUxpYnJhcnkoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGQgPSB0aGlzLmZpeHR1cmVUZW1wbGF0ZURldGFpbHM7XHJcbiAgICByZXR1cm4gYCR7ZD8uZml4dHVyZUNhdGVnb3J5fSAke2Q/LmZpeHR1cmVXaWR0aD8udmFsdWV9ICR7ZD8uZml4dHVyZVdpZHRoPy51bml0fWA7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3VibWl0RXZlbnQuZW1pdCh0aGlzLmZpeHR1cmVUZW1wbGF0ZUJhc2ljRGV0YWlsc0Zvcm0udmFsdWUpO1xyXG4gIH1cclxufVxyXG4iLCI8c2VjdGlvbiBpZD1cImZpeHR1cmUtdGVtcGxhdGUtYmFzaWMtZGV0YWlsc1wiICpuZ0lmPVwiIWlzUGFnZUxvYWRpbmdcIj5cclxuICA8ZGl2IGNsYXNzPVwicm93IGdhcC00IGJ1aWxkZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2xzIGNvbFwiPlxyXG4gICAgICA8aDI+Rml4dHVyZSBEZXRhaWxzPC9oMj5cclxuICAgICAgPHA+Q29uZmlndXJlIHlvdXIgZml4dHVyZSBkZXRhaWxzIGhlcmU8L3A+XHJcblxyXG4gICAgICA8cD5UZW1wbGF0ZSB1bmlxdWUgSUQ6IHt7IGZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LnRlbXBsYXRlSW5kZXggfX08L3A+XHJcblxyXG4gICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZpeHR1cmVUZW1wbGF0ZUJhc2ljRGV0YWlsc0Zvcm1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi00XCI+XHJcbiAgICAgICAgICA8bGFiZWwgZm9yPVwiZGVzY3JpcHRpb25cIiBjbGFzcz1cImZvcm0tbGFiZWwgbWItMVwiPkRlc2NyaXB0aW9uPC9sYWJlbD5cclxuICAgICAgICAgIDx0ZXh0YXJlYSB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJkZXNjcmlwdGlvblwiIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICBmaXh0dXJlVGVtcGxhdGVCYXNpY0RldGFpbHNGb3JtLmdldCgnZGVzY3JpcHRpb24nKT8udG91Y2hlZCAmJlxyXG4gICAgICAgICAgICAgIGZpeHR1cmVUZW1wbGF0ZUJhc2ljRGV0YWlsc0Zvcm0uZ2V0KCdkZXNjcmlwdGlvbicpPy5pbnZhbGlkXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJmaXh0dXJlVGVtcGxhdGVCYXNpY0RldGFpbHNGb3JtLmdldCgnZGVzY3JpcHRpb24nKT8uaGFzRXJyb3IoJ3doaXRlc3BhY2UnKVwiPlxyXG4gICAgICAgICAgICAgIERlc2NyaXB0aW9uIGNhbm5vdCBiZSBvbmx5IHdoaXRlc3BhY2UuXHJcbiAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJmaXh0dXJlVGVtcGxhdGVCYXNpY0RldGFpbHNGb3JtLmdldCgnZGVzY3JpcHRpb24nKT8uaGFzRXJyb3IoJ3RyaW1TcGFjZXMnKVwiPlxyXG4gICAgICAgICAgICAgIE5vIGxlYWRpbmcgb3IgdHJhaWxpbmcgd2hpdGVzcGFjZSBhbGxvd2VkLlxyXG4gICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItNFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGZvcj1cImZpeHR1cmVDYXRlZ29yeVwiIGNsYXNzPVwiZm9ybS1sYWJlbCBtYi0xXCI+U2VsZWN0IGZpeHR1cmUgdHlwZTwvbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiaGVhZGVyTGFiZWxcIiBmb3JtQ29udHJvbE5hbWU9XCJmaXh0dXJlQ2F0ZWdvcnlcIiByZWFkb25seSAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tZ3JvdXAgbWItNFwiXHJcbiAgICAgICAgICAqbmdJZj1cImZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LmhlYWRlcj8uaXNFbmFibGVkXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bGFiZWwgZm9yPVwidGVtcGxhdGVHcm91cE5hbWVcIiBjbGFzcz1cImZvcm0tbGFiZWwgbWItMVwiPlRlbXBsYXRlIEdyb3VwPC9sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJ0ZW1wbGF0ZUdyb3VwTmFtZVwiIGZvcm1Db250cm9sTmFtZT1cInRlbXBsYXRlR3JvdXBOYW1lXCIgLz5cclxuICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICBmaXh0dXJlVGVtcGxhdGVCYXNpY0RldGFpbHNGb3JtLmdldCgndGVtcGxhdGVHcm91cE5hbWUnKT8udG91Y2hlZCAmJlxyXG4gICAgICAgICAgICAgIGZpeHR1cmVUZW1wbGF0ZUJhc2ljRGV0YWlsc0Zvcm0uZ2V0KCd0ZW1wbGF0ZUdyb3VwTmFtZScpPy5pbnZhbGlkXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJmaXh0dXJlVGVtcGxhdGVCYXNpY0RldGFpbHNGb3JtLmdldCgndGVtcGxhdGVHcm91cE5hbWUnKT8uaGFzRXJyb3IoJ3doaXRlc3BhY2UnKVwiPlxyXG4gICAgICAgICAgICAgIFRlbXBsYXRlIGdyb3VwIGNhbm5vdCBiZSBvbmx5IHdoaXRlc3BhY2UuXHJcbiAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJmaXh0dXJlVGVtcGxhdGVCYXNpY0RldGFpbHNGb3JtLmdldCgndGVtcGxhdGVHcm91cE5hbWUnKT8uaGFzRXJyb3IoJ3RyaW1TcGFjZXMnKVwiPlxyXG4gICAgICAgICAgICAgIE5vIGxlYWRpbmcgb3IgdHJhaWxpbmcgd2hpdGVzcGFjZSBhbGxvd2VkLlxyXG4gICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1ncm91cCBtYi00XCJcclxuICAgICAgICAgICpuZ0lmPVwiZml4dHVyZVRlbXBsYXRlRGV0YWlscz8uaGVhZGVyPy5pc0VuYWJsZWRcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJoZWFkZXJMYWJlbFwiIGNsYXNzPVwiZm9ybS1sYWJlbCBtYi0xXCI+SGVhZGVyOiBsYWJlbDwvbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiaGVhZGVyTGFiZWxcIiBmb3JtQ29udHJvbE5hbWU9XCJoZWFkZXJMYWJlbFwiIC8+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgZml4dHVyZVRlbXBsYXRlQmFzaWNEZXRhaWxzRm9ybS5nZXQoJ2hlYWRlckxhYmVsJyk/LnRvdWNoZWQgJiZcclxuICAgICAgICAgICAgICBmaXh0dXJlVGVtcGxhdGVCYXNpY0RldGFpbHNGb3JtLmdldCgnaGVhZGVyTGFiZWwnKT8uaW52YWxpZFxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiICpuZ0lmPVwiZml4dHVyZVRlbXBsYXRlQmFzaWNEZXRhaWxzRm9ybS5nZXQoJ2hlYWRlckxhYmVsJyk/Lmhhc0Vycm9yKCd3aGl0ZXNwYWNlJylcIj5cclxuICAgICAgICAgICAgICBIZWFkZXIgbGFiZWwgY2Fubm90IGJlIG9ubHkgd2hpdGVzcGFjZS5cclxuICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1kYW5nZXJcIiAqbmdJZj1cImZpeHR1cmVUZW1wbGF0ZUJhc2ljRGV0YWlsc0Zvcm0uZ2V0KCdoZWFkZXJMYWJlbCcpPy5oYXNFcnJvcigndHJpbVNwYWNlcycpXCI+XHJcbiAgICAgICAgICAgICAgTm8gbGVhZGluZyBvciB0cmFpbGluZyB3aGl0ZXNwYWNlIGFsbG93ZWQuXHJcbiAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBmb3JtQXJyYXlOYW1lPVwic2hlbGZcIj5cclxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJzaGVsZlwiIGNsYXNzPVwibWItMlwiPkJvZHk6IFByb2R1Y3QgQ2FwYWNpdHkgYXQgZWFjaCBzaGVsZjwvbGFiZWw+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsPk5vIG9mIHNoZWx2ZXM8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3VudGVyLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNVwiXHJcbiAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE0XCJcclxuICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNSAxNFwiXHJcbiAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVTaGVsZigpO1wiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgZD1cIk0zLjc2Mjk0IDdIMTEuOTI5NlwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBzaGVsZkFycmF5Lmxlbmd0aCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTVcIlxyXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNFwiXHJcbiAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTUgMTRcIlxyXG4gICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkU2hlbGYoKTtcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNNy4xNTM4OSAyLjkxNjVWMTEuMDgzMk0zLjA3MDU2IDYuOTk5ODRIMTEuMjM3MlwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzaGVsZiBvZiBzaGVsZkFycmF5Py5jb250cm9sczsgbGV0IGkgPSBpbmRleFwiIFtmb3JtR3JvdXBOYW1lXT1cImlcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxwPnt7IHNoZWxmLmdldChcInNoZWxmVHlwZVwiKT8udmFsdWUgfHwgXCJwYW5lbFwiIHwgdXBwZXJjYXNlIH19IHt7IGkgKyAxIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcclxuICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZVNoZWxmKGkpOyBcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaGVsZkFycmF5Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNMTggNkw2IDE4TTYgNkwxOCAxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzk4QTJCM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0XHJcbiAgICAgICAgICAgICAgICBbaWRGaWVsZF09XCIndmFsdWUnXCJcclxuICAgICAgICAgICAgICAgIFtuYW1lRmllbGRdPVwiJ2xhYmVsJ1wiXHJcbiAgICAgICAgICAgICAgICBbZGF0YV09XCJzaGVsZlR5cGVzXCJcclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInNoZWxmVHlwZVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwvbGliLXJlYWN0aXZlLXNlbGVjdD5cclxuICAgICAgICAgICAgICA8IS0tIDxwPnt7IHNoZWxmLmdldChcInNoZWxmVHlwZVwiKT8udmFsdWUgfHwgXCJwYW5lbFwiIHwgdXBwZXJjYXNlIH19IHt7IGkgKyAxIH19PC9wPiAtLT5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInNoZWxmLmdldCgnc2hlbGZUeXBlJyk/LnZhbHVlID09PSAndHJheSdcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG10LTJcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibS0wXCI+Tm8gb2YgUm93czwvcD5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNvdW50ZXItY29udGFpbmVyXCIgc3R5bGU9XCJ3aWR0aDogNDAlOyBtaW4taGVpZ2h0OiAzNXB4XCI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8Y291bnRlci1pbnB1dCBzdHlsZT1cIndpZHRoOiA0MCVcIiBmb3JtQ29udHJvbE5hbWU9XCJ0cmF5Um93c1wiIFtzdGVwXT1cIjFcIiBwbGFjZWhvbGRlcj1cIjBcIj48L2NvdW50ZXItaW5wdXQ+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0ge3sgc2hlbGYuZ2V0KFwidHJheVJvd3NcIik/LnZhbHVlIH19IC0tPlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsPlByb2R1Y3QgY2FwYWNpdHk8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGNvdW50ZXItaW5wdXQgc3R5bGU9XCJ3aWR0aDogNDAlXCIgZm9ybUNvbnRyb2xOYW1lPVwicHJvZHVjdFBlclNoZWxmXCIgW3N0ZXBdPVwiMVwiIHBsYWNlaG9sZGVyPVwiMFwiPjwvY291bnRlci1pbnB1dD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hlbGYuZ2V0KCdwcm9kdWN0UGVyU2hlbGYnKT8udG91Y2hlZCAmJiBzaGVsZi5nZXQoJ3Byb2R1Y3RQZXJTaGVsZicpPy5lcnJvcnNcIj5cclxuICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJzaGVsZi5nZXQoJ3Byb2R1Y3RQZXJTaGVsZicpPy5oYXNFcnJvcignbWluJylcIj5cclxuICAgICAgICAgICAgICAgICAgUHJvZHVjdCBjYXBhY2l0eSBjYW5ub3QgYmUgbmVnYXRpdmUuXHJcbiAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tZ3JvdXAgbWItNFwiXHJcbiAgICAgICAgICAqbmdJZj1cImZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LmZvb3Rlcj8uaXNFbmFibGVkICYmIGZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LmZpeHR1cmVUeXBlID09PSAnd2FsbCdcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJmb290ZXJMYWJlbFwiIGNsYXNzPVwiZm9ybS1sYWJlbCBtYi0xXCI+Rm9vdGVyOiBsYWJlbDwvbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiZm9vdGVyTGFiZWxcIiBmb3JtQ29udHJvbE5hbWU9XCJmb290ZXJMYWJlbFwiIC8+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgZml4dHVyZVRlbXBsYXRlQmFzaWNEZXRhaWxzRm9ybS5nZXQoJ2Zvb3RlckxhYmVsJyk/LnRvdWNoZWQgJiZcclxuICAgICAgICAgICAgICBmaXh0dXJlVGVtcGxhdGVCYXNpY0RldGFpbHNGb3JtLmdldCgnZm9vdGVyTGFiZWwnKT8uaW52YWxpZFxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiICpuZ0lmPVwiZml4dHVyZVRlbXBsYXRlQmFzaWNEZXRhaWxzRm9ybS5nZXQoJ2Zvb3RlckxhYmVsJyk/Lmhhc0Vycm9yKCd3aGl0ZXNwYWNlJylcIj5cclxuICAgICAgICAgICAgICBGb290ZXIgbGFiZWwgY2Fubm90IGJlIG9ubHkgd2hpdGVzcGFjZS5cclxuICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1kYW5nZXJcIiAqbmdJZj1cImZpeHR1cmVUZW1wbGF0ZUJhc2ljRGV0YWlsc0Zvcm0uZ2V0KCdmb290ZXJMYWJlbCcpPy5oYXNFcnJvcigndHJpbVNwYWNlcycpXCI+XHJcbiAgICAgICAgICAgICAgTm8gbGVhZGluZyBvciB0cmFpbGluZyB3aGl0ZXNwYWNlIGFsbG93ZWQuXHJcbiAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9mb3JtPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29scyBjb2wtOFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICA8IS0tIFZlcnRpY2FsIGFycm93cyAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidmVydGljYWwtZGltZW5zaW9uXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJyb3cgdXBcIj48L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaW5lXCI+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7IGZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LmZpeHR1cmVMZW5ndGg/LnZhbHVlIH19e3sgZml4dHVyZVRlbXBsYXRlRGV0YWlscz8uZml4dHVyZUxlbmd0aD8udW5pdCB9fTwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFycm93IGRvd25cIj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDwhLS0gSG9yaXpvbnRhbCBhcnJvd3MgLS0+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgZGltZW5zaW9uQXJyb3dzO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBmaXh0dXJlVGVtcGxhdGVEZXRhaWxzPy5maXh0dXJlV2lkdGg/LnZhbHVlXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWxsLXZpZXdwb3J0XCI+XHJcbiAgICAgICAgICAgIDwhLS0gSGVhZGVyIGJsb2NrIC0tPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJoZWFkZXItYmxvY2tcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiZml4dHVyZVRlbXBsYXRlRGV0YWlscz8uaGVhZGVyPy5pc0VuYWJsZWQgJiYgZml4dHVyZVRlbXBsYXRlRGV0YWlscz8uZml4dHVyZVR5cGUgPT09ICd3YWxsJ1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8cD5cclxuICAgICAgICAgICAgICAgIHt7IGZpeHR1cmVUZW1wbGF0ZUJhc2ljRGV0YWlsc0Zvcm0uZ2V0KFwiaGVhZGVyTGFiZWxcIik/LnZhbHVlIH19XHJcbiAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gQm9keSBibG9jayAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvZHktYmxvY2tcIiAqbmdJZj1cInNoZWxmQXJyYXkubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2hlbGZBcnJheS5jb250cm9sczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgQGlmKGl0ZW0uZ2V0KCdzaGVsZlR5cGUnKT8udmFsdWUgPT09J3NoZWxmJyl7XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmxvY2sgc2hlbGZcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiBbXS5jb25zdHJ1Y3RvcihpdGVtLmdldCgncHJvZHVjdFBlclNoZWxmJyk/LnZhbHVlKVwiIGNsYXNzPVwicHJvZHVjdFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB9QGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2YgW10uY29uc3RydWN0b3IoaXRlbS5nZXQoJ3RyYXlSb3dzJyk/LnZhbHVlKTtsZXQgaj1pbmRleFwiIGNsYXNzPVwidHJheSBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiBbXS5jb25zdHJ1Y3RvcihpdGVtLmdldCgncHJvZHVjdFBlclNoZWxmJyk/LnZhbHVlKVwiIGNsYXNzPVwicHJvZHVjdFwiID48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIEZvb3RlciBibG9jayAtLT5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9vdGVyLWJsb2NrXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LmZvb3Rlcj8uaXNFbmFibGVkICYmIGZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LmZpeHR1cmVUeXBlID09PSAnd2FsbCdcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1mb290ZXIgbGVmdC1ib3hcIj48L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLWZvb3RlciByaWdodC1ib3hcIj48L2Rpdj5cclxuICAgICAgICAgICAgICA8cD57eyBmaXh0dXJlVGVtcGxhdGVCYXNpY0RldGFpbHNGb3JtLmdldChcImZvb3RlckxhYmVsXCIpPy52YWx1ZSB9fTwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9zZWN0aW9uPlxyXG5cclxuPHNlY3Rpb24gaWQ9XCJmaXh0dXJlLXRlbXBsYXRlLWJhc2ljLWRldGFpbHMtc2tlbGV0b25cIiAqbmdJZj1cImlzUGFnZUxvYWRpbmdcIj5cclxuICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9zZWN0aW9uPlxyXG5cclxuPCEtLSBDb21tb24gZGltZW5zaW9uIGFycm93cyAtLT5cclxuPG5nLXRlbXBsYXRlICNkaW1lbnNpb25BcnJvd3MgbGV0LWxhYmVsPVwibGFiZWxcIiBsZXQtdmFsdWU9XCJ2YWx1ZVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJob3Jpem9udGFsLWRpbWVuc2lvblwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImFycm93IGxlZnRcIj48L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJsaW5lXCI+XHJcbiAgICAgIDxzcGFuPnt7IHZhbHVlIH19IHt7IGZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LmZpeHR1cmVXaWR0aD8udW5pdCB9fTwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImFycm93IHJpZ2h0XCI+PC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtYmFzaWMtZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS1idWlsZGVyL3NyYy9saWIvY29tcG9uZW50cy9tYW5hZ2Utc3RvcmUtcGxhbm8vdGVtcGxhdGUtYmFzaWMtZGV0YWlscy90ZW1wbGF0ZS1iYXNpYy1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL21hbmFnZS1zdG9yZS1wbGFuby90ZW1wbGF0ZS1iYXNpYy1kZXRhaWxzL3RlbXBsYXRlLWJhc2ljLWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUEyQyxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRy9DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXJFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDOzs7Ozs7QUFlMUYsTUFBTSxPQUFPLDZCQUE2QjtJQW1COUI7SUFDQTtJQUNBO0lBcEJWLHNCQUFzQixDQUFnQztJQUN0RCwrQkFBK0IsQ0FBWTtJQUUzQyxhQUFhLEdBQVksSUFBSSxDQUFDO0lBQzlCLFVBQVUsR0FBWSxLQUFLLENBQUM7SUFFbkIsV0FBVyxDQUFNO0lBQ2pCLFFBQVEsQ0FBVTtJQUNsQixXQUFX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QUksQ0FBQywrQkFBK0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRSxDQUFDO3dHQTVMVSw2QkFBNkI7NEZBQTdCLDZCQUE2Qiw4T0N4QjFDLDg4YUErU0EsNjFRRC9SSSxXQUFXLDJwQkFDWCxtQkFBbUIsNmhCQUNuQixZQUFZLG9lQUNaLHFCQUFxQiwySUFDckIsdUJBQXVCOzs0RkFJZCw2QkFBNkI7a0JBYnpDLFNBQVM7K0JBQ0UsNEJBQTRCLFdBRzdCO3dCQUNQLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixZQUFZO3dCQUNaLHFCQUFxQjt3QkFDckIsdUJBQXVCO3FCQUN4QixjQUNXLElBQUk7NklBU1AsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtLCBGb3JtQXJyYXksIEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRml4dHVyZVRlbXBsYXRlRGV0YWlscyB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvZml4dHVyZS10ZW1wbGF0ZS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBTdG9yZUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc3RvcmUtYnVpbGRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ291bnRlcklucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY291bnRlci1pbnB1dC9jb3VudGVyLWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IGdlbmVyYWxWYWxpZGF0b3IgfSBmcm9tICcuLi8uLi8uLi9mdW5jdGlvbnMvcGxhbm8uZnVuY3Rpb24nO1xyXG5pbXBvcnQgeyBEcm9wZG93bklGIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9wbGFuby1nZW5lcmFsLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFJlYWN0aXZlU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcmVhY3RpdmUtc2VsZWN0L3JlYWN0aXZlLXNlbGVjdC5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibGliLWluc3RhbmNlLWJhc2ljLWRldGFpbHNcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3RlbXBsYXRlLWJhc2ljLWRldGFpbHMuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL3RlbXBsYXRlLWJhc2ljLWRldGFpbHMuY29tcG9uZW50LnNjc3NcIixcclxuICBpbXBvcnRzOiBbXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBDb3VudGVySW5wdXRDb21wb25lbnQsXHJcbiAgICBSZWFjdGl2ZVNlbGVjdENvbXBvbmVudCxcclxuICBdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnN0YW5jZUJhc2ljRGV0YWlsc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBmaXh0dXJlVGVtcGxhdGVEZXRhaWxzOiBGaXh0dXJlVGVtcGxhdGVEZXRhaWxzIHwgbnVsbDtcclxuICBmaXh0dXJlVGVtcGxhdGVCYXNpY0RldGFpbHNGb3JtOiBGb3JtR3JvdXA7XHJcblxyXG4gIGlzUGFnZUxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGlzRWRpdE1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgZml4dHVyZURhdGE6IGFueTtcclxuICBASW5wdXQoKSBlZGl0TW9kZTogYm9vbGVhbjtcclxuICBASW5wdXQoKSBpc1N1Ym1pdHRlZDogYm9vbGVhbjtcclxuICBAT3V0cHV0KCkgc3VibWl0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgaW5pdGlhbFN0YXRlOiBhbnkgPSAwO1xyXG5cclxuICByZWFkb25seSBzaGVsZlR5cGVzOiBEcm9wZG93bklGW10gPSBbXHJcbiAgICB7IGxhYmVsOiBcIlNoZWxmXCIsIHZhbHVlOiBcInNoZWxmXCIgfSxcclxuICAgIHsgbGFiZWw6IFwiVHJheVwiLCB2YWx1ZTogXCJ0cmF5XCIgfSxcclxuICBdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSB0b2FzdDogVG9hc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzdG9yZUJ1aWxkZXJTZXJ2aWNlOiBTdG9yZUJ1aWxkZXJTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlc1tcImZpeHR1cmVEYXRhXCJdKSB7XHJcbiAgICAgIHRoaXMuaXNQYWdlTG9hZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZml4dHVyZVRlbXBsYXRlRGV0YWlscyA9IGNoYW5nZXNbXCJmaXh0dXJlRGF0YVwiXS5jdXJyZW50VmFsdWU7XHJcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm0oKTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzW1wiZWRpdE1vZGVcIl0pIHtcclxuICAgICAgdGhpcy5pc0VkaXRNb2RlID0gY2hhbmdlc1tcImVkaXRNb2RlXCJdLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgaWYgKHRoaXMuaXNFZGl0TW9kZSkge1xyXG4gICAgICAgIHRoaXMuZml4dHVyZVRlbXBsYXRlQmFzaWNEZXRhaWxzRm9ybT8uZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbXCJpc1N1Ym1pdHRlZFwiXSkge1xyXG4gICAgICBpZiAoY2hhbmdlc1tcImlzU3VibWl0dGVkXCJdLmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMuc3VibWl0Rm9ybSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplRm9ybSgpIHtcclxuICAgIHRoaXMuZml4dHVyZVRlbXBsYXRlQmFzaWNEZXRhaWxzRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBkZXNjcmlwdGlvbjogW1xyXG4gICAgICAgIHRoaXMuZml4dHVyZVRlbXBsYXRlRGV0YWlscz8uZGVzY3JpcHRpb24gPz8gXCJcIixcclxuICAgICAgICBnZW5lcmFsVmFsaWRhdG9yKCksXHJcbiAgICAgIF0sXHJcbiAgICAgIGZpeHR1cmVDYXRlZ29yeTogW3RoaXMuZ2V0Rml4dHVyZUxpYnJhcnkoKSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIGhlYWRlckxhYmVsOiBbXHJcbiAgICAgICAgdGhpcy5maXh0dXJlVGVtcGxhdGVEZXRhaWxzPy5oZWFkZXI/LmxhYmVsLFxyXG4gICAgICAgIGdlbmVyYWxWYWxpZGF0b3IoKSxcclxuICAgICAgXSxcclxuICAgICAgc2hlbGY6IHRoaXMuZmIuYXJyYXkoW10pLFxyXG4gICAgICBmb290ZXJMYWJlbDogW1xyXG4gICAgICAgIHRoaXMuZml4dHVyZVRlbXBsYXRlRGV0YWlscz8uZm9vdGVyPy5sYWJlbCxcclxuICAgICAgICBnZW5lcmFsVmFsaWRhdG9yKCksXHJcbiAgICAgIF0sXHJcbiAgICAgIHRlbXBsYXRlR3JvdXBOYW1lOiBbXHJcbiAgICAgICAgdGhpcy5maXh0dXJlVGVtcGxhdGVEZXRhaWxzPy50ZW1wbGF0ZUdyb3VwTmFtZSxcclxuICAgICAgICBnZW5lcmFsVmFsaWRhdG9yKCksXHJcbiAgICAgIF0sXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LnNoZWxmQ29uZmlnPy5mb3JFYWNoKChpKSA9PiB0aGlzLmFkZFNoZWxmKGkpKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuaXNFZGl0TW9kZSlcclxuICAgICAgdGhpcy5maXh0dXJlVGVtcGxhdGVCYXNpY0RldGFpbHNGb3JtPy5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIHRoaXMuaXNQYWdlTG9hZGluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgYWRkU2hlbGYoc2hlbGY/OiBhbnkpIHtcclxuICAgIGNvbnN0IHNoZWxmR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgc2hlbGZUeXBlOiBbc2hlbGY/LnNoZWxmVHlwZSA/PyBcInNoZWxmXCJdLFxyXG4gICAgICBwcm9kdWN0UGVyU2hlbGY6IFtzaGVsZj8ucHJvZHVjdFBlclNoZWxmID8/IDEsIFtWYWxpZGF0b3JzLm1pbigxKV1dLFxyXG4gICAgICB0cmF5Um93czogW3NoZWxmPy50cmF5Um93cyA/PyAxXSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXR1cFNoZWxmVHlwZUxpc3RlbmVyKHNoZWxmR3JvdXApO1xyXG4gICAgdGhpcy5zaGVsZkFycmF5LnB1c2goc2hlbGZHcm91cCk7XHJcbiAgfVxyXG5cclxuICBzZXR1cFNoZWxmVHlwZUxpc3RlbmVyKHNoZWxmR3JvdXA6IEZvcm1Hcm91cCkge1xyXG4gICAgc2hlbGZHcm91cC5nZXQoXCJzaGVsZlR5cGVcIik/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHR5cGUpID0+IHtcclxuICAgICAgY29uc3Qgbm9PZlJvd3NDb250cm9sID0gc2hlbGZHcm91cC5nZXQoXCJub09mUm93c1wiKTtcclxuICAgICAgaWYgKHR5cGUgPT09IFwidHJheVwiKSB7XHJcbiAgICAgICAgbm9PZlJvd3NDb250cm9sPy5zZXRWYWxpZGF0b3JzKFtcclxuICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLm1pbigxKSxcclxuICAgICAgICBdKTtcclxuICAgICAgICBub09mUm93c0NvbnRyb2w/LnNldFZhbHVlKDEpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5vT2ZSb3dzQ29udHJvbD8uY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICAgICAgbm9PZlJvd3NDb250cm9sPy5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgfVxyXG4gICAgICBub09mUm93c0NvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gSWYgaW5kZXggaXMgbm90IGdpdmVuLCBsYXN0IHNoZWxmIHNob3VsZCBiZSByZW1vdmVkXHJcbiAgcmVtb3ZlU2hlbGYoaW5kZXg6IG51bWJlciA9IHRoaXMuc2hlbGZBcnJheS5jb250cm9scy5sZW5ndGggLSAxKSB7XHJcbiAgICB0aGlzLnNoZWxmQXJyYXkucmVtb3ZlQXQoaW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNoZWxmQXJyYXkoKTogRm9ybUFycmF5IHtcclxuICAgIHJldHVybiB0aGlzLmZpeHR1cmVUZW1wbGF0ZUJhc2ljRGV0YWlsc0Zvcm0uZ2V0KFwic2hlbGZcIikgYXMgRm9ybUFycmF5O1xyXG4gIH1cclxuXHJcbiAgZ2V0IHRvdGFsUHJvZHVjdENhcGFjaXR5KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5zaGVsZkFycmF5LmNvbnRyb2xzLnJlZHVjZSgodG90YWwsIGl0ZW0pID0+IHtcclxuICAgICAgY29uc3QgY291bnQgPSBpdGVtLmdldChcInByb2R1Y3RQZXJTaGVsZlwiKT8udmFsdWUgfHwgMDtcclxuICAgICAgY29uc3QgaXNUcmF5ID0gaXRlbS5nZXQoXCJzaGVsZlR5cGVcIik/LnZhbHVlID09PSBcInRyYXlcIjtcclxuICAgICAgY29uc3Qgcm93cyA9IGl0ZW0uZ2V0KFwidHJheVJvd3NcIik/LnZhbHVlIHx8IDE7XHJcblxyXG4gICAgICAvLyBJZiB0aGUgZml4dHVyZSBpcyBhIGZsb29yIHBhbmVsIG9yIHRyYXksIHdlIG5lZWQgdG8gbXVsdGlwbHkgdGhlIHByb2R1Y3QgY2FwYWNpdHkgYnkgdGhlIG51bWJlciBvZiByb3dzXHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgdG90YWwgK1xyXG4gICAgICAgIChpc1RyYXkgfHwgdGhpcy5maXh0dXJlVGVtcGxhdGVEZXRhaWxzPy5maXh0dXJlVHlwZSA9PT0gXCJmbG9vclwiXHJcbiAgICAgICAgICA/IGNvdW50ICogcm93c1xyXG4gICAgICAgICAgOiBjb3VudClcclxuICAgICAgKTtcclxuICAgIH0sIDApO1xyXG4gIH1cclxuXHJcbiAgc3VibWl0Rm9ybSgpIHtcclxuICAgIGlmICghdGhpcy5maXh0dXJlVGVtcGxhdGVEZXRhaWxzKSByZXR1cm47XHJcblxyXG4gICAgaWYgKHRoaXMuZml4dHVyZVRlbXBsYXRlQmFzaWNEZXRhaWxzRm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuZml4dHVyZVRlbXBsYXRlQmFzaWNEZXRhaWxzRm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChcIkZvcm0gaXMgaW52YWxpZFwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmZpeHR1cmVUZW1wbGF0ZUJhc2ljRGV0YWlsc0Zvcm0udmFsaWQpIHtcclxuICAgICAgY29uc3QgcGF5bG9hZDogRml4dHVyZVRlbXBsYXRlRGV0YWlscyA9IHtcclxuICAgICAgICAuLi50aGlzLmZpeHR1cmVUZW1wbGF0ZURldGFpbHMsXHJcbiAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuZml4dHVyZVRlbXBsYXRlQmFzaWNEZXRhaWxzRm9ybS52YWx1ZS5kZXNjcmlwdGlvbixcclxuICAgICAgICBoZWFkZXI6IHtcclxuICAgICAgICAgIC4uLnRoaXMuZml4dHVyZVRlbXBsYXRlRGV0YWlscy5oZWFkZXIsXHJcbiAgICAgICAgICBsYWJlbDogdGhpcy5maXh0dXJlVGVtcGxhdGVCYXNpY0RldGFpbHNGb3JtLnZhbHVlLmhlYWRlckxhYmVsLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZm9vdGVyOiB7XHJcbiAgICAgICAgICAuLi50aGlzLmZpeHR1cmVUZW1wbGF0ZURldGFpbHMuZm9vdGVyLFxyXG4gICAgICAgICAgbGFiZWw6IHRoaXMuZml4dHVyZVRlbXBsYXRlQmFzaWNEZXRhaWxzRm9ybS52YWx1ZS5mb290ZXJMYWJlbCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZpeHR1cmVDYXBhY2l0eTogdGhpcy50b3RhbFByb2R1Y3RDYXBhY2l0eSxcclxuICAgICAgICB0ZW1wbGF0ZUdyb3VwTmFtZTpcclxuICAgICAgICAgIHRoaXMuZml4dHVyZVRlbXBsYXRlQmFzaWNEZXRhaWxzRm9ybS52YWx1ZS50ZW1wbGF0ZUdyb3VwTmFtZSxcclxuICAgICAgICBzaGVsZkNvbmZpZzogdGhpcy5maXh0dXJlVGVtcGxhdGVCYXNpY0RldGFpbHNGb3JtLnZhbHVlLnNoZWxmLm1hcCgoZWxlOmFueSxpbmRleDphbnkpID0+IHtcclxuICAgICAgICAgIGVsZS5zaGVsZk51bWJlciA9IGluZGV4ICsgMTtcclxuICAgICAgICAgIGVsZSA9ICB7Li4udGhpcz8uZml4dHVyZVRlbXBsYXRlRGV0YWlscz8uc2hlbGZDb25maWc/LltpbmRleF0sLi4uZWxlfTtcclxuICAgICAgICAgIGlmICghZWxlPy5wcm9kdWN0QnJhbmROYW1lKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzPy5maXh0dXJlVGVtcGxhdGVEZXRhaWxzPy5zaGVsZkNvbmZpZz8uW2luZGV4IC0xXSkge1xyXG4gICAgICAgICAgICAgIGVsZSA9IHsuLi50aGlzPy5maXh0dXJlVGVtcGxhdGVEZXRhaWxzPy5zaGVsZkNvbmZpZz8uW2luZGV4LTFdLC4uLmVsZX1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIGVsZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICB1cGRhdGVkQXQ6IG5ldyBEYXRlKERhdGUubm93KCkpLnRvSVNPU3RyaW5nKCksXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBjb25zdCByZXEgPSB7XHJcbiAgICAgICAgZml4dHVyZUlkOiB0aGlzLmZpeHR1cmVUZW1wbGF0ZURldGFpbHMuX2lkLFxyXG4gICAgICAgIGRhdGE6IHBheWxvYWQsXHJcbiAgICAgICAgLi4uKCF0aGlzLmZpeHR1cmVEYXRhPy50YXNrVHlwZSAmJiB7IGVkaXRNb2RlOiB0aGlzLmlzRWRpdE1vZGUgfSksXHJcbiAgICAgIH07XHJcblxyXG4gICAgICB0aGlzLnN0b3JlQnVpbGRlclNlcnZpY2UudXBkYXRlU3RvcmVGaXh0dXJlKHJlcSkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXM/LmRhdGE/LmlkKSB7XHJcbiAgICAgICAgICAgIGxldCBtZXNzYWdlID0gYEZpeHR1cmUgdXBkYXRlZCBzdWNjZXNzZnVsbHkgYW5kIHRlbXBsYXRlIGlzIGNyZWF0ZWQgPGEgaHJlZj0nbWFuYWdlL3BsYW5vZ3JhbS9maXh0dXJlLXRlbXBsYXRlL2Jhc2ljLWRldGFpbHM/dGVtcGxhdGVJZD0ke3Jlcy5kYXRhLmlkfSZpc0VkaXQ9ZmFsc2UnPlZpZXc8L2E+YDtcclxuICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRTdWNjZXNzVG9hc3QobWVzc2FnZSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0LmdldFN1Y2Nlc3NUb2FzdChcIkZpeHR1cmUgdXBkYXRlZCBzdWNjZXNzZnVsbHlcIik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnN1Ym1pdEV2ZW50LmVtaXQodHJ1ZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRGaXh0dXJlTGlicmFyeSgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZCA9IHRoaXMuZml4dHVyZVRlbXBsYXRlRGV0YWlscztcclxuICAgIHJldHVybiBgJHtkPy5maXh0dXJlQ2F0ZWdvcnl9ICR7ZD8uZml4dHVyZVdpZHRoPy52YWx1ZX0gJHtkPy5maXh0dXJlV2lkdGg/LnVuaXR9YDtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJtaXRFdmVudC5lbWl0KHRoaXMuZml4dHVyZVRlbXBsYXRlQmFzaWNEZXRhaWxzRm9ybS52YWx1ZSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8c2VjdGlvbiBpZD1cImZpeHR1cmUtdGVtcGxhdGUtYmFzaWMtZGV0YWlsc1wiICpuZ0lmPVwiIWlzUGFnZUxvYWRpbmdcIj5cclxuICA8ZGl2IGNsYXNzPVwicm93IGdhcC00IGJ1aWxkZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2xzIGNvbFwiPlxyXG4gICAgICA8aDI+Rml4dHVyZSBEZXRhaWxzPC9oMj5cclxuICAgICAgPHA+Q29uZmlndXJlIHlvdXIgZml4dHVyZSBkZXRhaWxzIGhlcmU8L3A+XHJcblxyXG4gICAgICA8cD5UZW1wbGF0ZSB1bmlxdWUgSUQ6IHt7IGZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LnRlbXBsYXRlSW5kZXggfX08L3A+XHJcblxyXG4gICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZpeHR1cmVUZW1wbGF0ZUJhc2ljRGV0YWlsc0Zvcm1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi00XCI+XHJcbiAgICAgICAgICA8bGFiZWwgZm9yPVwiZGVzY3JpcHRpb25cIiBjbGFzcz1cImZvcm0tbGFiZWwgbWItMVwiPkRlc2NyaXB0aW9uPC9sYWJlbD5cclxuICAgICAgICAgIDx0ZXh0YXJlYSB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJkZXNjcmlwdGlvblwiIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICBmaXh0dXJlVGVtcGxhdGVCYXNpY0RldGFpbHNGb3JtLmdldCgnZGVzY3JpcHRpb24nKT8udG91Y2hlZCAmJlxyXG4gICAgICAgICAgICAgIGZpeHR1cmVUZW1wbGF0ZUJhc2ljRGV0YWlsc0Zvcm0uZ2V0KCdkZXNjcmlwdGlvbicpPy5pbnZhbGlkXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJmaXh0dXJlVGVtcGxhdGVCYXNpY0RldGFpbHNGb3JtLmdldCgnZGVzY3JpcHRpb24nKT8uaGFzRXJyb3IoJ3doaXRlc3BhY2UnKVwiPlxyXG4gICAgICAgICAgICAgIERlc2NyaXB0aW9uIGNhbm5vdCBiZSBvbmx5IHdoaXRlc3BhY2UuXHJcbiAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJmaXh0dXJlVGVtcGxhdGVCYXNpY0RldGFpbHNGb3JtLmdldCgnZGVzY3JpcHRpb24nKT8uaGFzRXJyb3IoJ3RyaW1TcGFjZXMnKVwiPlxyXG4gICAgICAgICAgICAgIE5vIGxlYWRpbmcgb3IgdHJhaWxpbmcgd2hpdGVzcGFjZSBhbGxvd2VkLlxyXG4gICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItNFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGZvcj1cImZpeHR1cmVDYXRlZ29yeVwiIGNsYXNzPVwiZm9ybS1sYWJlbCBtYi0xXCI+U2VsZWN0IGZpeHR1cmUgdHlwZTwvbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiaGVhZGVyTGFiZWxcIiBmb3JtQ29udHJvbE5hbWU9XCJmaXh0dXJlQ2F0ZWdvcnlcIiByZWFkb25seSAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tZ3JvdXAgbWItNFwiXHJcbiAgICAgICAgICAqbmdJZj1cImZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LmhlYWRlcj8uaXNFbmFibGVkXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bGFiZWwgZm9yPVwidGVtcGxhdGVHcm91cE5hbWVcIiBjbGFzcz1cImZvcm0tbGFiZWwgbWItMVwiPlRlbXBsYXRlIEdyb3VwPC9sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJ0ZW1wbGF0ZUdyb3VwTmFtZVwiIGZvcm1Db250cm9sTmFtZT1cInRlbXBsYXRlR3JvdXBOYW1lXCIgLz5cclxuICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICBmaXh0dXJlVGVtcGxhdGVCYXNpY0RldGFpbHNGb3JtLmdldCgndGVtcGxhdGVHcm91cE5hbWUnKT8udG91Y2hlZCAmJlxyXG4gICAgICAgICAgICAgIGZpeHR1cmVUZW1wbGF0ZUJhc2ljRGV0YWlsc0Zvcm0uZ2V0KCd0ZW1wbGF0ZUdyb3VwTmFtZScpPy5pbnZhbGlkXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJmaXh0dXJlVGVtcGxhdGVCYXNpY0RldGFpbHNGb3JtLmdldCgndGVtcGxhdGVHcm91cE5hbWUnKT8uaGFzRXJyb3IoJ3doaXRlc3BhY2UnKVwiPlxyXG4gICAgICAgICAgICAgIFRlbXBsYXRlIGdyb3VwIGNhbm5vdCBiZSBvbmx5IHdoaXRlc3BhY2UuXHJcbiAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJmaXh0dXJlVGVtcGxhdGVCYXNpY0RldGFpbHNGb3JtLmdldCgndGVtcGxhdGVHcm91cE5hbWUnKT8uaGFzRXJyb3IoJ3RyaW1TcGFjZXMnKVwiPlxyXG4gICAgICAgICAgICAgIE5vIGxlYWRpbmcgb3IgdHJhaWxpbmcgd2hpdGVzcGFjZSBhbGxvd2VkLlxyXG4gICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1ncm91cCBtYi00XCJcclxuICAgICAgICAgICpuZ0lmPVwiZml4dHVyZVRlbXBsYXRlRGV0YWlscz8uaGVhZGVyPy5pc0VuYWJsZWRcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJoZWFkZXJMYWJlbFwiIGNsYXNzPVwiZm9ybS1sYWJlbCBtYi0xXCI+SGVhZGVyOiBsYWJlbDwvbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiaGVhZGVyTGFiZWxcIiBmb3JtQ29udHJvbE5hbWU9XCJoZWFkZXJMYWJlbFwiIC8+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgZml4dHVyZVRlbXBsYXRlQmFzaWNEZXRhaWxzRm9ybS5nZXQoJ2hlYWRlckxhYmVsJyk/LnRvdWNoZWQgJiZcclxuICAgICAgICAgICAgICBmaXh0dXJlVGVtcGxhdGVCYXNpY0RldGFpbHNGb3JtLmdldCgnaGVhZGVyTGFiZWwnKT8uaW52YWxpZFxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiICpuZ0lmPVwiZml4dHVyZVRlbXBsYXRlQmFzaWNEZXRhaWxzRm9ybS5nZXQoJ2hlYWRlckxhYmVsJyk/Lmhhc0Vycm9yKCd3aGl0ZXNwYWNlJylcIj5cclxuICAgICAgICAgICAgICBIZWFkZXIgbGFiZWwgY2Fubm90IGJlIG9ubHkgd2hpdGVzcGFjZS5cclxuICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1kYW5nZXJcIiAqbmdJZj1cImZpeHR1cmVUZW1wbGF0ZUJhc2ljRGV0YWlsc0Zvcm0uZ2V0KCdoZWFkZXJMYWJlbCcpPy5oYXNFcnJvcigndHJpbVNwYWNlcycpXCI+XHJcbiAgICAgICAgICAgICAgTm8gbGVhZGluZyBvciB0cmFpbGluZyB3aGl0ZXNwYWNlIGFsbG93ZWQuXHJcbiAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBmb3JtQXJyYXlOYW1lPVwic2hlbGZcIj5cclxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJzaGVsZlwiIGNsYXNzPVwibWItMlwiPkJvZHk6IFByb2R1Y3QgQ2FwYWNpdHkgYXQgZWFjaCBzaGVsZjwvbGFiZWw+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsPk5vIG9mIHNoZWx2ZXM8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3VudGVyLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNVwiXHJcbiAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE0XCJcclxuICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNSAxNFwiXHJcbiAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVTaGVsZigpO1wiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgZD1cIk0zLjc2Mjk0IDdIMTEuOTI5NlwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBzaGVsZkFycmF5Lmxlbmd0aCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTVcIlxyXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNFwiXHJcbiAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTUgMTRcIlxyXG4gICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkU2hlbGYoKTtcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNNy4xNTM4OSAyLjkxNjVWMTEuMDgzMk0zLjA3MDU2IDYuOTk5ODRIMTEuMjM3MlwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzaGVsZiBvZiBzaGVsZkFycmF5Py5jb250cm9sczsgbGV0IGkgPSBpbmRleFwiIFtmb3JtR3JvdXBOYW1lXT1cImlcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxwPnt7IHNoZWxmLmdldChcInNoZWxmVHlwZVwiKT8udmFsdWUgfHwgXCJwYW5lbFwiIHwgdXBwZXJjYXNlIH19IHt7IGkgKyAxIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcclxuICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZVNoZWxmKGkpOyBcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaGVsZkFycmF5Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNMTggNkw2IDE4TTYgNkwxOCAxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzk4QTJCM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0XHJcbiAgICAgICAgICAgICAgICBbaWRGaWVsZF09XCIndmFsdWUnXCJcclxuICAgICAgICAgICAgICAgIFtuYW1lRmllbGRdPVwiJ2xhYmVsJ1wiXHJcbiAgICAgICAgICAgICAgICBbZGF0YV09XCJzaGVsZlR5cGVzXCJcclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInNoZWxmVHlwZVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwvbGliLXJlYWN0aXZlLXNlbGVjdD5cclxuICAgICAgICAgICAgICA8IS0tIDxwPnt7IHNoZWxmLmdldChcInNoZWxmVHlwZVwiKT8udmFsdWUgfHwgXCJwYW5lbFwiIHwgdXBwZXJjYXNlIH19IHt7IGkgKyAxIH19PC9wPiAtLT5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInNoZWxmLmdldCgnc2hlbGZUeXBlJyk/LnZhbHVlID09PSAndHJheSdcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG10LTJcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibS0wXCI+Tm8gb2YgUm93czwvcD5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNvdW50ZXItY29udGFpbmVyXCIgc3R5bGU9XCJ3aWR0aDogNDAlOyBtaW4taGVpZ2h0OiAzNXB4XCI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8Y291bnRlci1pbnB1dCBzdHlsZT1cIndpZHRoOiA0MCVcIiBmb3JtQ29udHJvbE5hbWU9XCJ0cmF5Um93c1wiIFtzdGVwXT1cIjFcIiBwbGFjZWhvbGRlcj1cIjBcIj48L2NvdW50ZXItaW5wdXQ+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0ge3sgc2hlbGYuZ2V0KFwidHJheVJvd3NcIik/LnZhbHVlIH19IC0tPlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsPlByb2R1Y3QgY2FwYWNpdHk8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGNvdW50ZXItaW5wdXQgc3R5bGU9XCJ3aWR0aDogNDAlXCIgZm9ybUNvbnRyb2xOYW1lPVwicHJvZHVjdFBlclNoZWxmXCIgW3N0ZXBdPVwiMVwiIHBsYWNlaG9sZGVyPVwiMFwiPjwvY291bnRlci1pbnB1dD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hlbGYuZ2V0KCdwcm9kdWN0UGVyU2hlbGYnKT8udG91Y2hlZCAmJiBzaGVsZi5nZXQoJ3Byb2R1Y3RQZXJTaGVsZicpPy5lcnJvcnNcIj5cclxuICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJzaGVsZi5nZXQoJ3Byb2R1Y3RQZXJTaGVsZicpPy5oYXNFcnJvcignbWluJylcIj5cclxuICAgICAgICAgICAgICAgICAgUHJvZHVjdCBjYXBhY2l0eSBjYW5ub3QgYmUgbmVnYXRpdmUuXHJcbiAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tZ3JvdXAgbWItNFwiXHJcbiAgICAgICAgICAqbmdJZj1cImZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LmZvb3Rlcj8uaXNFbmFibGVkICYmIGZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LmZpeHR1cmVUeXBlID09PSAnd2FsbCdcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJmb290ZXJMYWJlbFwiIGNsYXNzPVwiZm9ybS1sYWJlbCBtYi0xXCI+Rm9vdGVyOiBsYWJlbDwvbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiZm9vdGVyTGFiZWxcIiBmb3JtQ29udHJvbE5hbWU9XCJmb290ZXJMYWJlbFwiIC8+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgZml4dHVyZVRlbXBsYXRlQmFzaWNEZXRhaWxzRm9ybS5nZXQoJ2Zvb3RlckxhYmVsJyk/LnRvdWNoZWQgJiZcclxuICAgICAgICAgICAgICBmaXh0dXJlVGVtcGxhdGVCYXNpY0RldGFpbHNGb3JtLmdldCgnZm9vdGVyTGFiZWwnKT8uaW52YWxpZFxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiICpuZ0lmPVwiZml4dHVyZVRlbXBsYXRlQmFzaWNEZXRhaWxzRm9ybS5nZXQoJ2Zvb3RlckxhYmVsJyk/Lmhhc0Vycm9yKCd3aGl0ZXNwYWNlJylcIj5cclxuICAgICAgICAgICAgICBGb290ZXIgbGFiZWwgY2Fubm90IGJlIG9ubHkgd2hpdGVzcGFjZS5cclxuICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1kYW5nZXJcIiAqbmdJZj1cImZpeHR1cmVUZW1wbGF0ZUJhc2ljRGV0YWlsc0Zvcm0uZ2V0KCdmb290ZXJMYWJlbCcpPy5oYXNFcnJvcigndHJpbVNwYWNlcycpXCI+XHJcbiAgICAgICAgICAgICAgTm8gbGVhZGluZyBvciB0cmFpbGluZyB3aGl0ZXNwYWNlIGFsbG93ZWQuXHJcbiAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9mb3JtPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29scyBjb2wtOFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICA8IS0tIFZlcnRpY2FsIGFycm93cyAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidmVydGljYWwtZGltZW5zaW9uXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJyb3cgdXBcIj48L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaW5lXCI+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7IGZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LmZpeHR1cmVMZW5ndGg/LnZhbHVlIH19e3sgZml4dHVyZVRlbXBsYXRlRGV0YWlscz8uZml4dHVyZUxlbmd0aD8udW5pdCB9fTwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFycm93IGRvd25cIj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDwhLS0gSG9yaXpvbnRhbCBhcnJvd3MgLS0+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgZGltZW5zaW9uQXJyb3dzO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBmaXh0dXJlVGVtcGxhdGVEZXRhaWxzPy5maXh0dXJlV2lkdGg/LnZhbHVlXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWxsLXZpZXdwb3J0XCI+XHJcbiAgICAgICAgICAgIDwhLS0gSGVhZGVyIGJsb2NrIC0tPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJoZWFkZXItYmxvY2tcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiZml4dHVyZVRlbXBsYXRlRGV0YWlscz8uaGVhZGVyPy5pc0VuYWJsZWQgJiYgZml4dHVyZVRlbXBsYXRlRGV0YWlscz8uZml4dHVyZVR5cGUgPT09ICd3YWxsJ1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8cD5cclxuICAgICAgICAgICAgICAgIHt7IGZpeHR1cmVUZW1wbGF0ZUJhc2ljRGV0YWlsc0Zvcm0uZ2V0KFwiaGVhZGVyTGFiZWxcIik/LnZhbHVlIH19XHJcbiAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gQm9keSBibG9jayAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvZHktYmxvY2tcIiAqbmdJZj1cInNoZWxmQXJyYXkubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2hlbGZBcnJheS5jb250cm9sczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgQGlmKGl0ZW0uZ2V0KCdzaGVsZlR5cGUnKT8udmFsdWUgPT09J3NoZWxmJyl7XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmxvY2sgc2hlbGZcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiBbXS5jb25zdHJ1Y3RvcihpdGVtLmdldCgncHJvZHVjdFBlclNoZWxmJyk/LnZhbHVlKVwiIGNsYXNzPVwicHJvZHVjdFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB9QGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2YgW10uY29uc3RydWN0b3IoaXRlbS5nZXQoJ3RyYXlSb3dzJyk/LnZhbHVlKTtsZXQgaj1pbmRleFwiIGNsYXNzPVwidHJheSBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiBbXS5jb25zdHJ1Y3RvcihpdGVtLmdldCgncHJvZHVjdFBlclNoZWxmJyk/LnZhbHVlKVwiIGNsYXNzPVwicHJvZHVjdFwiID48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIEZvb3RlciBibG9jayAtLT5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9vdGVyLWJsb2NrXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LmZvb3Rlcj8uaXNFbmFibGVkICYmIGZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LmZpeHR1cmVUeXBlID09PSAnd2FsbCdcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1mb290ZXIgbGVmdC1ib3hcIj48L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLWZvb3RlciByaWdodC1ib3hcIj48L2Rpdj5cclxuICAgICAgICAgICAgICA8cD57eyBmaXh0dXJlVGVtcGxhdGVCYXNpY0RldGFpbHNGb3JtLmdldChcImZvb3RlckxhYmVsXCIpPy52YWx1ZSB9fTwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9zZWN0aW9uPlxyXG5cclxuPHNlY3Rpb24gaWQ9XCJmaXh0dXJlLXRlbXBsYXRlLWJhc2ljLWRldGFpbHMtc2tlbGV0b25cIiAqbmdJZj1cImlzUGFnZUxvYWRpbmdcIj5cclxuICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9zZWN0aW9uPlxyXG5cclxuPCEtLSBDb21tb24gZGltZW5zaW9uIGFycm93cyAtLT5cclxuPG5nLXRlbXBsYXRlICNkaW1lbnNpb25BcnJvd3MgbGV0LWxhYmVsPVwibGFiZWxcIiBsZXQtdmFsdWU9XCJ2YWx1ZVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJob3Jpem9udGFsLWRpbWVuc2lvblwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImFycm93IGxlZnRcIj48L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJsaW5lXCI+XHJcbiAgICAgIDxzcGFuPnt7IHZhbHVlIH19IHt7IGZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LmZpeHR1cmVXaWR0aD8udW5pdCB9fTwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImFycm93IHJpZ2h0XCI+PC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==