kwikid-agent-dashboard 0.0.40 → 0.0.41

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 (22) hide show
  1. package/bundles/kwikid-agent-dashboard.umd.js +223 -163
  2. package/bundles/kwikid-agent-dashboard.umd.js.map +1 -1
  3. package/esm2015/lib/kwikid-agent-dashboard.component.js +2 -2
  4. package/esm2015/lib/v1/components/customer-details/customer-details.component.js +30 -28
  5. package/esm2015/lib/v1/components/customer-list/customer-list.component.js +16 -15
  6. package/esm2015/lib/v1/components/customer-tile/customer-tile.component.js +26 -22
  7. package/esm2015/lib/v1/components/customer-tile/status-pill/status-pill.component.js +31 -26
  8. package/esm2015/lib/v1/components/customer-tile/status-pill/status-pill.constants.js +33 -0
  9. package/esm2015/lib/v1/kwikid-agent-dashboard.component.js +13 -9
  10. package/esm2015/lib/v1/services/agent.service.js +3 -11
  11. package/esm2015/lib/v1/services/google-maps.service.js +20 -14
  12. package/esm2015/lib/v1/services/open-street-maps.service.js +5 -5
  13. package/fesm2015/kwikid-agent-dashboard.js +165 -121
  14. package/fesm2015/kwikid-agent-dashboard.js.map +1 -1
  15. package/lib/v1/components/customer-details/customer-details.component.d.ts +1 -0
  16. package/lib/v1/components/customer-tile/customer-tile.component.d.ts +1 -0
  17. package/lib/v1/components/customer-tile/status-pill/status-pill.component.d.ts +8 -9
  18. package/lib/v1/components/customer-tile/status-pill/status-pill.constants.d.ts +32 -0
  19. package/lib/v1/kwikid-agent-dashboard.component.d.ts +3 -1
  20. package/lib/v1/services/agent.service.d.ts +0 -1
  21. package/lib/v1/services/google-maps.service.d.ts +1 -1
  22. package/package.json +1 -1
@@ -1,3 +1,4 @@
1
+ /* eslint-disable no-prototype-builtins */
1
2
  import { Component, EventEmitter, HostListener, Input, Output } from "@angular/core";
2
3
  import { checkObjectPathExists, getObjectValueFromPath, isNotEmptyArray } from "kwikid-toolkit";
3
4
  import * as i0 from "@angular/core";
@@ -45,35 +46,38 @@ export class CustomerTileComponent {
45
46
  this.parseData();
46
47
  }
47
48
  }
49
+ getValueFromArray(paths) {
50
+ let data = "";
51
+ // eslint-disable-next-line array-callback-return
52
+ paths.map((path) => {
53
+ const value = getObjectValueFromPath(this.customer, path);
54
+ data = `${data} ${value}`;
55
+ });
56
+ return data;
57
+ }
48
58
  parseData() {
49
- var _a, _b, _c, _d, _e, _f, _g, _h;
50
- const identifier = (_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.dashboard) === null || _b === void 0 ? void 0 : _b.taskIdentifier) !== null && _c !== void 0 ? _c : "user_id";
59
+ var _a, _b, _c, _d, _e, _f;
60
+ const identifier = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.taskIdentifier) !== null && _b !== void 0 ? _b : "user_id";
51
61
  this.taskId = getObjectValueFromPath(this.customer, identifier);
52
62
  let detailsConfig = [];
53
- if (checkObjectPathExists(this.config, "dashboard.viewTaskDetails") &&
54
- isNotEmptyArray(this.config.dashboard.viewTaskDetails)) {
55
- detailsConfig = this.config.dashboard.viewTaskDetails;
56
- const data = [];
57
- detailsConfig.map((field) => {
58
- const value = getObjectValueFromPath(this.customer, field.value);
59
- data.push({ label: field.label, value });
60
- return true;
61
- });
62
- this.labelValuePairData = data;
63
- }
64
- else if (checkObjectPathExists(this.config, "dashboard.taskUI.details.data") &&
65
- isNotEmptyArray(this.config.dashboard.taskUI.details.data)) {
66
- detailsConfig = this.config.dashboard.taskUI.details.data;
63
+ if (checkObjectPathExists(this.config, "taskUI.details.data") &&
64
+ isNotEmptyArray(this.config.taskUI.details.data)) {
67
65
  const data = [];
66
+ detailsConfig = this.config.taskUI.details.data;
68
67
  detailsConfig.map((field) => {
69
- const value = getObjectValueFromPath(this.customer, field.path);
68
+ let value;
69
+ if (Array.isArray(field.path)) {
70
+ value = this.getValueFromArray(field.path);
71
+ }
72
+ else {
73
+ value = getObjectValueFromPath(this.customer, field.path);
74
+ }
70
75
  data.push({ label: field.label, value });
71
76
  return true;
72
77
  });
73
78
  this.labelValuePairData = data;
74
79
  }
75
- this.labelValuePairConfig =
76
- (_h = (_g = (_f = (_e = (_d = this.config) === null || _d === void 0 ? void 0 : _d.dashboard) === null || _e === void 0 ? void 0 : _e.taskUI) === null || _f === void 0 ? void 0 : _f.details) === null || _g === void 0 ? void 0 : _g.config) !== null && _h !== void 0 ? _h : {};
80
+ this.labelValuePairConfig = (_f = (_e = (_d = (_c = this.config) === null || _c === void 0 ? void 0 : _c.taskUI) === null || _d === void 0 ? void 0 : _d.details) === null || _e === void 0 ? void 0 : _e.config) !== null && _f !== void 0 ? _f : {};
77
81
  }
78
82
  openDetails() {
79
83
  var _a, _b, _c, _d;
@@ -86,7 +90,7 @@ export class CustomerTileComponent {
86
90
  this.agentService.currentTaskDetails = undefined;
87
91
  }
88
92
  if (this.agentService.showMapview) {
89
- if (((_d = (_c = this.agentService.config) === null || _c === void 0 ? void 0 : _c.dashboard) === null || _d === void 0 ? void 0 : _d.mapType) === "google-maps") {
93
+ if (((_d = (_c = this.agentService.config) === null || _c === void 0 ? void 0 : _c.maps) === null || _d === void 0 ? void 0 : _d.mapType) === "google-maps") {
90
94
  this.googleMapsService.plotDirectionsForSelectedTask(this.agentService.currentTaskDetails);
91
95
  }
92
96
  else {
@@ -108,7 +112,7 @@ export class CustomerTileComponent {
108
112
  }
109
113
  }
110
114
  /** @nocollapse */ CustomerTileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomerTileComponent, deps: [{ token: i1.GoogleMapsService }, { token: i2.OpenStreetMapsService }, { token: i3.AgentService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
111
- /** @nocollapse */ CustomerTileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: CustomerTileComponent, selector: "customer-tile", inputs: { customer: "customer", index: "index", config: "config" }, outputs: { onClickPerformAction: "onClickPerformAction", nextStep: "nextStep", removeTask: "removeTask" }, host: { listeners: { "window:resize": "windowResizeWatcher($event)" } }, usesOnChanges: true, ngImport: i0, template: "<div\n [ngClass]=\"\n customer?.session_id == agentService.currentTaskDetails?.session_id\n ? 'customer-tile-wrapper customer-tile-active'\n : 'customer-tile-wrapper'\n \"\n>\n <div class=\"customer-tile-primary-container\">\n <div class=\"customer-tile-primary-container-data\">\n <div class=\"customer-tile-primary-container-userid\">\n {{ taskId }}\n </div>\n <status-pill\n *ngIf=\"config?.dashboard?.isShowTaskStatus\"\n [status]=\"customer.session_status\"\n ></status-pill>\n </div>\n <kwikui-button\n *ngIf=\"!agentService.isMobileView && !agentService.showMapview\"\n [icon]=\"\n agentService.currentTaskDetails?.session_id == customer?.session_id\n ? 'tuiIconChevronLeftLarge'\n : 'tuiIconChevronRightLarge'\n \"\n [shape]=\"'rounded'\"\n appearance=\"icon\"\n size=\"s\"\n (onClick)=\"openDetails()\"\n ></kwikui-button>\n <kwikui-button\n *ngIf=\"agentService.isMobileView || agentService.showMapview\"\n [icon]=\"\n agentService.currentTaskDetails?.session_id == customer?.session_id\n ? 'tuiIconChevronUpLarge'\n : 'tuiIconChevronDownLarge'\n \"\n [shape]=\"'rounded'\"\n appearance=\"icon\"\n size=\"s\"\n (onClick)=\"openDetails()\"\n ></kwikui-button>\n </div>\n <div\n *ngIf=\"\n customer?.session_id == agentService.currentTaskDetails?.session_id &&\n (agentService.isMobileView || agentService.showMapview)\n \"\n [ngClass]=\"\n customer?.session_id == agentService.currentTaskDetails?.session_id &&\n (agentService.isMobileView || agentService.showMapview)\n ? 'customer-tile-secondary-container'\n : 'data-collasped'\n \"\n >\n <div class=\"customer-tile-secondary-container-data\">\n <kwikui-label-value-pair\n [config]=\"labelValuePairConfig\"\n [data]=\"labelValuePairData\"\n ></kwikui-label-value-pair>\n <!-- <div\n *ngIf=\"\n agentService.config?.dashboard?.maps?.sho &&\n agentService.config?.dashboard?.isShowDistanceAndTime &&\n openStreetMapsService.getSelectedTaskDistanceAndTime()\n \"\n class=\"customer-tile-secondary-container-custom-details\"\n >\n Distance: {{ openStreetMapsService.getSelectedTaskDistanceAndTime()?.distance }} |\n Time: {{ openStreetMapsService.getSelectedTaskDistanceAndTime()?.time }}\n </div> -->\n </div>\n <div class=\"customer-tile-secondary-container-actions\">\n <ng-container\n *ngFor=\"let action of config?.dashboard?.taskUI?.details?.action\"\n >\n <kwikid-action-button\n [action]=\"action\"\n [config]=\"config\"\n [customer]=\"customer\"\n (onClickPerformAction)=\"handleOnClickPerformAction($event)\"\n ></kwikid-action-button>\n </ng-container>\n <!-- <div class=\"customer-tile-secondary-container-task-buttons\">\n <kwikui-button\n *ngIf=\"config.dashboard?.isAllowRemoveTask\"\n [icon]=\"'tuiIconTrash2'\"\n [shape]=\"'rounded'\"\n appearance=\"icon\"\n size=\"s\"\n (onClick)=\"handleOnClickRemoveTask(customer)\"\n ></kwikui-button>\n <kwikui-button\n *ngIf=\"config.dashboard?.isShowCopyLink\"\n icon=\"tuiIconCopy\"\n [shape]=\"'rounded'\"\n appearance=\"icon\"\n size=\"s\"\n (onClick)=\"\n handleOnClickNext({\n customer: customer,\n stepType: 'SHARE_JOURNEY_LINK'\n })\n \"\n ></kwikui-button>\n </div>\n <div class=\"customer-tile-secondary-container-journey-buttons\">\n <kwikui-button\n *ngIf=\"config.dashboard?.isShowMaps && customer?.isValidLocation\"\n label=\"Show Directions\"\n appearance=\"flat\"\n size=\"s\"\n styles=\"font-size:0.7rem;\"\n (onClick)=\"goToMaps(customer.googleMapsUrl)\"\n ></kwikui-button>\n <kwikui-button\n *ngIf=\"\n config.dashboard?.isAllowStartJourney &&\n agentService.canStartJourney(customer.session_status)\n \"\n label=\"Start Journey\"\n appearance=\"primary\"\n size=\"s\"\n styles=\"font-size:0.7rem;\"\n (onClick)=\"\n handleOnClickNext({ customer: customer, stepType: 'START_JOURNEY' })\n \"\n ></kwikui-button>\n </div> -->\n </div>\n </div>\n</div>\n", styles: [".customer-tile-wrapper{display:flex;flex-direction:column;align-content:center;justify-content:center;align-items:stretch;flex:1;overflow:auto;grid-gap:.5rem;gap:.5rem;margin:1rem;padding:1rem .25rem 1rem 1rem;border-radius:1rem;border:.5px solid #ddd}.customer-tile-wrapper .customer-tile-primary-container{display:flex;grid-gap:.5rem;gap:.5rem;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;width:100%;height:100%}.customer-tile-wrapper .customer-tile-primary-container .customer-tile-primary-container-data{padding-left:.2rem;grid-gap:.6rem;gap:.6rem;display:flex;flex-direction:column;flex-wrap:wrap;align-content:stretch;justify-content:flex-start;align-items:flex-start}.customer-tile-wrapper .customer-tile-primary-container .customer-tile-primary-container-data .customer-tile-primary-container-userid{font-weight:500;font-size:1.1rem;line-height:1rem}.customer-tile-wrapper .customer-tile-secondary-container{width:100%;height:100%;display:flex;flex-direction:column;overflow:auto;grid-gap:.5rem;gap:.5rem}.customer-tile-wrapper .customer-tile-secondary-container .customer-tile-secondary-container-data{padding:.4rem .2rem;display:flex;flex-direction:column;font-size:.7rem;grid-gap:.3rem;gap:.3rem}.customer-tile-wrapper .customer-tile-secondary-container .customer-tile-secondary-container-data .customer-tile-secondary-container-custom-details{width:100%;height:100%;line-height:.9rem;word-wrap:break-word}.customer-tile-wrapper .customer-tile-secondary-container .customer-tile-secondary-container-actions{padding:.5rem 0;display:flex;flex-wrap:wrap;align-items:center;flex-direction:row;justify-content:flex-start;grid-gap:.5rem;gap:.5rem}.customer-tile-wrapper .data-collasped{display:none}.customer-tile-active{background-color:#dcedfd}\n"], components: [{ type: i4.StatusPillComponent, selector: "status-pill", inputs: ["status"] }, { type: i5.KwikUIButtonComponent, selector: "kwikui-button", inputs: ["appearance", "class", "disabled", "icon", "iconRight", "id", "label", "shape", "showLoader", "size", "styles", "type", "pseudoHover"], outputs: ["onClick"] }, { type: i5.KwikUILabelValuePairComponent, selector: "kwikui-label-value-pair", inputs: ["config", "data", "id"] }, { type: i6.ActionButtonComponent, selector: "kwikid-action-button", inputs: ["action", "config", "customer"], outputs: ["onClickPerformAction"] }], directives: [{ type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
115
+ /** @nocollapse */ CustomerTileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: CustomerTileComponent, selector: "customer-tile", inputs: { customer: "customer", index: "index", config: "config" }, outputs: { onClickPerformAction: "onClickPerformAction", nextStep: "nextStep", removeTask: "removeTask" }, host: { listeners: { "window:resize": "windowResizeWatcher($event)" } }, usesOnChanges: true, ngImport: i0, template: "<div\n [ngClass]=\"\n customer?.session_id == agentService.currentTaskDetails?.session_id\n ? 'customer-tile-wrapper customer-tile-active'\n : 'customer-tile-wrapper'\n \"\n>\n <div class=\"customer-tile-primary-container\">\n <div class=\"customer-tile-primary-container-data\">\n <div class=\"customer-tile-primary-container-userid\">\n {{ taskId }}\n </div>\n <status-pill\n *ngIf=\"config?.utilityFlags?.isShowTaskStatus\"\n [config]=\"config?.taskUI?.header?.taskStatus\"\n [status]=\"\n customer[config?.taskUI?.header?.taskStatus?.path ?? 'session_status']\n \"\n ></status-pill>\n </div>\n <kwikui-button\n *ngIf=\"!agentService.isMobileView && !agentService.showMapview\"\n [icon]=\"\n agentService.currentTaskDetails?.session_id == customer?.session_id\n ? 'tuiIconChevronLeftLarge'\n : 'tuiIconChevronRightLarge'\n \"\n [shape]=\"'rounded'\"\n appearance=\"icon\"\n size=\"s\"\n (onClick)=\"openDetails()\"\n ></kwikui-button>\n <kwikui-button\n *ngIf=\"agentService.isMobileView || agentService.showMapview\"\n [icon]=\"\n agentService.currentTaskDetails?.session_id == customer?.session_id\n ? 'tuiIconChevronUpLarge'\n : 'tuiIconChevronDownLarge'\n \"\n [shape]=\"'rounded'\"\n appearance=\"icon\"\n size=\"s\"\n (onClick)=\"openDetails()\"\n ></kwikui-button>\n </div>\n <div\n *ngIf=\"\n customer?.session_id == agentService.currentTaskDetails?.session_id &&\n (agentService.isMobileView || agentService.showMapview)\n \"\n [ngClass]=\"\n customer?.session_id == agentService.currentTaskDetails?.session_id &&\n (agentService.isMobileView || agentService.showMapview)\n ? 'customer-tile-secondary-container'\n : 'data-collasped'\n \"\n >\n <div class=\"customer-tile-secondary-container-data\">\n <kwikui-label-value-pair\n [config]=\"labelValuePairConfig\"\n [data]=\"labelValuePairData\"\n ></kwikui-label-value-pair>\n <!-- <div\n *ngIf=\"\n agentService.config?.maps?.sho &&\n agentService.config?.isShowDistanceAndTime &&\n openStreetMapsService.getSelectedTaskDistanceAndTime()\n \"\n class=\"customer-tile-secondary-container-custom-details\"\n >\n Distance: {{ openStreetMapsService.getSelectedTaskDistanceAndTime()?.distance }} |\n Time: {{ openStreetMapsService.getSelectedTaskDistanceAndTime()?.time }}\n </div> -->\n </div>\n <div class=\"customer-tile-secondary-container-actions\">\n <ng-container *ngFor=\"let action of config?.taskUI?.details?.action\">\n <kwikid-action-button\n [action]=\"action\"\n [config]=\"config\"\n [customer]=\"customer\"\n (onClickPerformAction)=\"handleOnClickPerformAction($event)\"\n ></kwikid-action-button>\n </ng-container>\n <!-- <div class=\"customer-tile-secondary-container-task-buttons\">\n <kwikui-button\n *ngIf=\"config?.isAllowRemoveTask\"\n [icon]=\"'tuiIconTrash2'\"\n [shape]=\"'rounded'\"\n appearance=\"icon\"\n size=\"s\"\n (onClick)=\"handleOnClickRemoveTask(customer)\"\n ></kwikui-button>\n <kwikui-button\n *ngIf=\"config?.isShowCopyLink\"\n icon=\"tuiIconCopy\"\n [shape]=\"'rounded'\"\n appearance=\"icon\"\n size=\"s\"\n (onClick)=\"\n handleOnClickNext({\n customer: customer,\n stepType: 'SHARE_JOURNEY_LINK'\n })\n \"\n ></kwikui-button>\n </div>\n <div class=\"customer-tile-secondary-container-journey-buttons\">\n <kwikui-button\n *ngIf=\"config?.isShowMaps && customer?.isValidLocation\"\n label=\"Show Directions\"\n appearance=\"flat\"\n size=\"s\"\n styles=\"font-size:0.7rem;\"\n (onClick)=\"goToMaps(customer.googleMapsUrl)\"\n ></kwikui-button>\n <kwikui-button\n *ngIf=\"\n config?.isAllowStartJourney &&\n agentService.canStartJourney(customer.session_status)\n \"\n label=\"Start Journey\"\n appearance=\"primary\"\n size=\"s\"\n styles=\"font-size:0.7rem;\"\n (onClick)=\"\n handleOnClickNext({ customer: customer, stepType: 'START_JOURNEY' })\n \"\n ></kwikui-button>\n </div> -->\n </div>\n </div>\n</div>\n", styles: [".customer-tile-wrapper{display:flex;flex-direction:column;align-content:center;justify-content:center;align-items:stretch;flex:1;overflow:auto;grid-gap:.5rem;gap:.5rem;margin:1rem;padding:1rem .25rem 1rem 1rem;border-radius:1rem;border:.5px solid #ddd}.customer-tile-wrapper .customer-tile-primary-container{display:flex;grid-gap:.5rem;gap:.5rem;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;width:100%;height:100%}.customer-tile-wrapper .customer-tile-primary-container .customer-tile-primary-container-data{padding-left:.2rem;grid-gap:.6rem;gap:.6rem;display:flex;flex-direction:column;flex-wrap:wrap;align-content:stretch;justify-content:flex-start;align-items:flex-start}.customer-tile-wrapper .customer-tile-primary-container .customer-tile-primary-container-data .customer-tile-primary-container-userid{font-weight:500;font-size:1.1rem;line-height:1rem}.customer-tile-wrapper .customer-tile-secondary-container{width:100%;height:100%;display:flex;flex-direction:column;overflow:auto;grid-gap:.5rem;gap:.5rem}.customer-tile-wrapper .customer-tile-secondary-container .customer-tile-secondary-container-data{padding:.4rem .2rem;display:flex;flex-direction:column;font-size:.7rem;grid-gap:.3rem;gap:.3rem}.customer-tile-wrapper .customer-tile-secondary-container .customer-tile-secondary-container-data .customer-tile-secondary-container-custom-details{width:100%;height:100%;line-height:.9rem;word-wrap:break-word}.customer-tile-wrapper .customer-tile-secondary-container .customer-tile-secondary-container-actions{padding:.5rem 0;display:flex;flex-wrap:wrap;align-items:center;flex-direction:row;justify-content:flex-start;grid-gap:.5rem;gap:.5rem}.customer-tile-wrapper .data-collasped{display:none}.customer-tile-active{background-color:#dcedfd}\n"], components: [{ type: i4.StatusPillComponent, selector: "status-pill", inputs: ["config", "status"] }, { type: i5.KwikUIButtonComponent, selector: "kwikui-button", inputs: ["appearance", "class", "disabled", "icon", "iconRight", "id", "label", "shape", "showLoader", "size", "styles", "type", "pseudoHover"], outputs: ["onClick"] }, { type: i5.KwikUILabelValuePairComponent, selector: "kwikui-label-value-pair", inputs: ["config", "data", "id"] }, { type: i6.ActionButtonComponent, selector: "kwikid-action-button", inputs: ["action", "config", "customer"], outputs: ["onClickPerformAction"] }], directives: [{ type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
112
116
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomerTileComponent, decorators: [{
113
117
  type: Component,
114
118
  args: [{
@@ -132,4 +136,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
132
136
  }], removeTask: [{
133
137
  type: Output
134
138
  }] } });
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItdGlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtYWdlbnQtZGFzaGJvYXJkL3NyYy9saWIvdjEvY29tcG9uZW50cy9jdXN0b21lci10aWxlL2N1c3RvbWVyLXRpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWFnZW50LWRhc2hib2FyZC9zcmMvbGliL3YxL2NvbXBvbmVudHMvY3VzdG9tZXItdGlsZS9jdXN0b21lci10aWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLGVBQWUsRUFFaEIsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBWXhCLE1BQU0sT0FBTyxxQkFBcUI7SUFzQ2hDLFlBQ1MsaUJBQW9DLEVBQ3BDLHFCQUE0QyxFQUM1QyxZQUEwQixFQUN6QixXQUF1QjtRQUh4QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDNUMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDekIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUEvQmpDLGFBQVEsR0FBUSxFQUFFLENBQUM7UUFHbkIsVUFBSyxHQUFXLFNBQVMsQ0FBQztRQUsxQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUVyQixvQkFBZSxHQUFrQixFQUFFLENBQUM7UUFFcEMsV0FBTSxHQUFRLEVBQUUsQ0FBQztRQUVqQix5QkFBb0IsR0FBUSxFQUFFLENBQUM7UUFFL0IsdUJBQWtCLEdBQVEsRUFBRSxDQUFDO1FBRzdCLHlCQUFvQixHQUFz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QyxLQUFVO1FBQ25DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELGlCQUFpQixDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELHVCQUF1QixDQUFDLElBQUk7UUFDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQzs7c0lBdklVLHFCQUFxQjswSEFBckIscUJBQXFCLGtVQzNCbEMseWdKQW1JQTs0RkR4R2EscUJBQXFCO2tCQUxqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixXQUFXLEVBQUUsZ0NBQWdDO29CQUM3QyxTQUFTLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FBQztpQkFDOUM7Z01BR0MsbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFVekMsUUFBUTtzQkFEUCxLQUFLO2dCQUlOLEtBQUs7c0JBREosS0FBSztnQkFJTixNQUFNO3NCQURMLEtBQUs7Z0JBY04sb0JBQW9CO3NCQURuQixNQUFNO2dCQUlQLFFBQVE7c0JBRFAsTUFBTTtnQkFJUCxVQUFVO3NCQURULE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gIGNoZWNrT2JqZWN0UGF0aEV4aXN0cyxcbiAgZ2V0T2JqZWN0VmFsdWVGcm9tUGF0aCxcbiAgaXNOb3RFbXB0eUFycmF5LFxuICBpc05vdEVtcHR5VmFsdWVcbn0gZnJvbSBcImt3aWtpZC10b29sa2l0XCI7XG5pbXBvcnQgeyBHb29nbGVNYXBzU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9nb29nbGUtbWFwcy5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBBZ2VudFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvYWdlbnQuc2VydmljZVwiO1xuaW1wb3J0IHsgT3BlblN0cmVldE1hcHNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL29wZW4tc3RyZWV0LW1hcHMuc2VydmljZVwiO1xuXG5kZWNsYXJlIGNvbnN0IGdvb2dsZTogYW55O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiY3VzdG9tZXItdGlsZVwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2N1c3RvbWVyLXRpbGUuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL2N1c3RvbWVyLXRpbGUuY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgQ3VzdG9tZXJUaWxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzpyZXNpemVcIiwgW1wiJGV2ZW50XCJdKVxuICB3aW5kb3dSZXNpemVXYXRjaGVyKCkge1xuICAgIGlmICh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggPCA2MDApIHtcbiAgICAgIHRoaXMuaXNNb2JpbGVWaWV3ID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc01vYmlsZVZpZXcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICBjdXN0b21lcjogYW55ID0ge307XG5cbiAgQElucHV0KClcbiAgaW5kZXg6IG51bWJlciA9IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBjb25maWc6IGFueTtcblxuICBpc01vYmlsZVZpZXcgPSBmYWxzZTtcblxuICB2aWV3VGFza0RldGFpbHM6IEFycmF5PHN0cmluZz4gPSBbXTtcblxuICB0YXNrSWQ6IGFueSA9IFwiXCI7XG5cbiAgbGFiZWxWYWx1ZVBhaXJDb25maWc6IGFueSA9IHt9O1xuXG4gIGxhYmVsVmFsdWVQYWlyRGF0YTogYW55ID0gW107XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2xpY2tQZXJmb3JtQWN0aW9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBPdXRwdXQoKVxuICBuZXh0U3RlcCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgcmVtb3ZlVGFzayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZ29vZ2xlTWFwc1NlcnZpY2U6IEdvb2dsZU1hcHNTZXJ2aWNlLFxuICAgIHB1YmxpYyBvcGVuU3RyZWV0TWFwc1NlcnZpY2U6IE9wZW5TdHJlZXRNYXBzU2VydmljZSxcbiAgICBwdWJsaWMgYWdlbnRTZXJ2aWNlOiBBZ2VudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBob3N0RWxlbWVudDogRWxlbWVudFJlZlxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5wYXJzZURhdGEoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCB2ZXJpZnlDaGFuZ2UgPSAoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiBjaGFuZ2VzLmhhc093blByb3BlcnR5KGtleSkgJiYgIWNoYW5nZXNba2V5XS5maXJzdENoYW5nZTtcbiAgICB9O1xuXG4gICAgaWYgKHZlcmlmeUNoYW5nZShcImN1c3RvbWVyXCIpKSB7XG4gICAgICB0aGlzLmN1c3RvbWVyID0gY2hhbmdlcy5jdXN0b21lci5jdXJyZW50VmFsdWU7XG4gICAgICB0aGlzLnBhcnNlRGF0YSgpO1xuICAgIH1cbiAgfVxuXG4gIHBhcnNlRGF0YSgpIHtcbiAgICBjb25zdCBpZGVudGlmaWVyID0gdGhpcy5jb25maWc/LmRhc2hib2FyZD8udGFza0lkZW50aWZpZXIgPz8gXCJ1c2VyX2lkXCI7XG4gICAgdGhpcy50YXNrSWQgPSBnZXRPYmplY3RWYWx1ZUZyb21QYXRoKHRoaXMuY3VzdG9tZXIsIGlkZW50aWZpZXIpO1xuXG4gICAgbGV0IGRldGFpbHNDb25maWcgPSBbXTtcbiAgICBpZiAoXG4gICAgICBjaGVja09iamVjdFBhdGhFeGlzdHModGhpcy5jb25maWcsIFwiZGFzaGJvYXJkLnZpZXdUYXNrRGV0YWlsc1wiKSAmJlxuICAgICAgaXNOb3RFbXB0eUFycmF5KHRoaXMuY29uZmlnLmRhc2hib2FyZC52aWV3VGFza0RldGFpbHMpXG4gICAgKSB7XG4gICAgICBkZXRhaWxzQ29uZmlnID0gdGhpcy5jb25maWcuZGFzaGJvYXJkLnZpZXdUYXNrRGV0YWlscztcblxuICAgICAgY29uc3QgZGF0YSA9IFtdO1xuICAgICAgZGV0YWlsc0NvbmZpZy5tYXAoKGZpZWxkKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ2V0T2JqZWN0VmFsdWVGcm9tUGF0aCh0aGlzLmN1c3RvbWVyLCBmaWVsZC52YWx1ZSk7XG4gICAgICAgIGRhdGEucHVzaCh7IGxhYmVsOiBmaWVsZC5sYWJlbCwgdmFsdWUgfSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmxhYmVsVmFsdWVQYWlyRGF0YSA9IGRhdGE7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGNoZWNrT2JqZWN0UGF0aEV4aXN0cyh0aGlzLmNvbmZpZywgXCJkYXNoYm9hcmQudGFza1VJLmRldGFpbHMuZGF0YVwiKSAmJlxuICAgICAgaXNOb3RFbXB0eUFycmF5KHRoaXMuY29uZmlnLmRhc2hib2FyZC50YXNrVUkuZGV0YWlscy5kYXRhKVxuICAgICkge1xuICAgICAgZGV0YWlsc0NvbmZpZyA9IHRoaXMuY29uZmlnLmRhc2hib2FyZC50YXNrVUkuZGV0YWlscy5kYXRhO1xuXG4gICAgICBjb25zdCBkYXRhID0gW107XG4gICAgICBkZXRhaWxzQ29uZmlnLm1hcCgoZmllbGQpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBnZXRPYmplY3RWYWx1ZUZyb21QYXRoKHRoaXMuY3VzdG9tZXIsIGZpZWxkLnBhdGgpO1xuICAgICAgICBkYXRhLnB1c2goeyBsYWJlbDogZmllbGQubGFiZWwsIHZhbHVlIH0pO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5sYWJlbFZhbHVlUGFpckRhdGEgPSBkYXRhO1xuICAgIH1cblxuICAgIHRoaXMubGFiZWxWYWx1ZVBhaXJDb25maWcgPVxuICAgICAgdGhpcy5jb25maWc/LmRhc2hib2FyZD8udGFza1VJPy5kZXRhaWxzPy5jb25maWcgPz8ge307XG4gIH1cblxuICBvcGVuRGV0YWlscygpIHtcbiAgICBjb25zdCBpc0RpZmZlcmVudFRhc2tTZWxlY3RlZCA9XG4gICAgICB0aGlzLmFnZW50U2VydmljZS5jdXJyZW50VGFza0RldGFpbHM/LnNlc3Npb25faWQgIT09XG4gICAgICB0aGlzLmN1c3RvbWVyPy5zZXNzaW9uX2lkO1xuXG4gICAgaWYgKGlzRGlmZmVyZW50VGFza1NlbGVjdGVkKSB7XG4gICAgICB0aGlzLmFnZW50U2VydmljZS5jdXJyZW50VGFza0RldGFpbHMgPSB0aGlzLmN1c3RvbWVyO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFnZW50U2VydmljZS5jdXJyZW50VGFza0RldGFpbHMgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYWdlbnRTZXJ2aWNlLnNob3dNYXB2aWV3KSB7XG4gICAgICBpZiAodGhpcy5hZ2VudFNlcnZpY2UuY29uZmlnPy5kYXNoYm9hcmQ/Lm1hcFR5cGUgPT09IFwiZ29vZ2xlLW1hcHNcIikge1xuICAgICAgICB0aGlzLmdvb2dsZU1hcHNTZXJ2aWNlLnBsb3REaXJlY3Rpb25zRm9yU2VsZWN0ZWRUYXNrKFxuICAgICAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLmN1cnJlbnRUYXNrRGV0YWlsc1xuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcGVuU3RyZWV0TWFwc1NlcnZpY2UucGxvdERpcmVjdGlvbnNGb3JTZWxlY3RlZFRhc2soXG4gICAgICAgICAgdGhpcy5hZ2VudFNlcnZpY2UuY3VycmVudFRhc2tEZXRhaWxzXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ29Ub01hcHMobG9jYXRpb24pIHtcbiAgICB3aW5kb3cub3BlbihgJHtsb2NhdGlvbn1gLCBcIl9ibGFua1wiKTtcbiAgfVxuXG4gIGhhbmRsZU9uQ2xpY2tQZXJmb3JtQWN0aW9uKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2xpY2tQZXJmb3JtQWN0aW9uLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgaGFuZGxlT25DbGlja05leHQoZSkge1xuICAgIHRoaXMubmV4dFN0ZXAuZW1pdChlKTtcbiAgfVxuXG4gIGhhbmRsZU9uQ2xpY2tSZW1vdmVUYXNrKHRhc2spIHtcbiAgICB0aGlzLnJlbW92ZVRhc2suZW1pdCh0YXNrKTtcbiAgfVxufVxuIiwiPGRpdlxuICBbbmdDbGFzc109XCJcbiAgICBjdXN0b21lcj8uc2Vzc2lvbl9pZCA9PSBhZ2VudFNlcnZpY2UuY3VycmVudFRhc2tEZXRhaWxzPy5zZXNzaW9uX2lkXG4gICAgICA/ICdjdXN0b21lci10aWxlLXdyYXBwZXIgY3VzdG9tZXItdGlsZS1hY3RpdmUnXG4gICAgICA6ICdjdXN0b21lci10aWxlLXdyYXBwZXInXG4gIFwiXG4+XG4gIDxkaXYgY2xhc3M9XCJjdXN0b21lci10aWxlLXByaW1hcnktY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbWVyLXRpbGUtcHJpbWFyeS1jb250YWluZXItZGF0YVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbWVyLXRpbGUtcHJpbWFyeS1jb250YWluZXItdXNlcmlkXCI+XG4gICAgICAgIHt7IHRhc2tJZCB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8c3RhdHVzLXBpbGxcbiAgICAgICAgKm5nSWY9XCJjb25maWc/LmRhc2hib2FyZD8uaXNTaG93VGFza1N0YXR1c1wiXG4gICAgICAgIFtzdGF0dXNdPVwiY3VzdG9tZXIuc2Vzc2lvbl9zdGF0dXNcIlxuICAgICAgPjwvc3RhdHVzLXBpbGw+XG4gICAgPC9kaXY+XG4gICAgPGt3aWt1aS1idXR0b25cbiAgICAgICpuZ0lmPVwiIWFnZW50U2VydmljZS5pc01vYmlsZVZpZXcgJiYgIWFnZW50U2VydmljZS5zaG93TWFwdmlld1wiXG4gICAgICBbaWNvbl09XCJcbiAgICAgICAgYWdlbnRTZXJ2aWNlLmN1cnJlbnRUYXNrRGV0YWlscz8uc2Vzc2lvbl9pZCA9PSBjdXN0b21lcj8uc2Vzc2lvbl9pZFxuICAgICAgICAgID8gJ3R1aUljb25DaGV2cm9uTGVmdExhcmdlJ1xuICAgICAgICAgIDogJ3R1aUljb25DaGV2cm9uUmlnaHRMYXJnZSdcbiAgICAgIFwiXG4gICAgICBbc2hhcGVdPVwiJ3JvdW5kZWQnXCJcbiAgICAgIGFwcGVhcmFuY2U9XCJpY29uXCJcbiAgICAgIHNpemU9XCJzXCJcbiAgICAgIChvbkNsaWNrKT1cIm9wZW5EZXRhaWxzKClcIlxuICAgID48L2t3aWt1aS1idXR0b24+XG4gICAgPGt3aWt1aS1idXR0b25cbiAgICAgICpuZ0lmPVwiYWdlbnRTZXJ2aWNlLmlzTW9iaWxlVmlldyB8fCBhZ2VudFNlcnZpY2Uuc2hvd01hcHZpZXdcIlxuICAgICAgW2ljb25dPVwiXG4gICAgICAgIGFnZW50U2VydmljZS5jdXJyZW50VGFza0RldGFpbHM/LnNlc3Npb25faWQgPT0gY3VzdG9tZXI/LnNlc3Npb25faWRcbiAgICAgICAgICA/ICd0dWlJY29uQ2hldnJvblVwTGFyZ2UnXG4gICAgICAgICAgOiAndHVpSWNvbkNoZXZyb25Eb3duTGFyZ2UnXG4gICAgICBcIlxuICAgICAgW3NoYXBlXT1cIidyb3VuZGVkJ1wiXG4gICAgICBhcHBlYXJhbmNlPVwiaWNvblwiXG4gICAgICBzaXplPVwic1wiXG4gICAgICAob25DbGljayk9XCJvcGVuRGV0YWlscygpXCJcbiAgICA+PC9rd2lrdWktYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgICpuZ0lmPVwiXG4gICAgICBjdXN0b21lcj8uc2Vzc2lvbl9pZCA9PSBhZ2VudFNlcnZpY2UuY3VycmVudFRhc2tEZXRhaWxzPy5zZXNzaW9uX2lkICYmXG4gICAgICAoYWdlbnRTZXJ2aWNlLmlzTW9iaWxlVmlldyB8fCBhZ2VudFNlcnZpY2Uuc2hvd01hcHZpZXcpXG4gICAgXCJcbiAgICBbbmdDbGFzc109XCJcbiAgICAgIGN1c3RvbWVyPy5zZXNzaW9uX2lkID09IGFnZW50U2VydmljZS5jdXJyZW50VGFza0RldGFpbHM/LnNlc3Npb25faWQgJiZcbiAgICAgIChhZ2VudFNlcnZpY2UuaXNNb2JpbGVWaWV3IHx8IGFnZW50U2VydmljZS5zaG93TWFwdmlldylcbiAgICAgICAgPyAnY3VzdG9tZXItdGlsZS1zZWNvbmRhcnktY29udGFpbmVyJ1xuICAgICAgICA6ICdkYXRhLWNvbGxhc3BlZCdcbiAgICBcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbWVyLXRpbGUtc2Vjb25kYXJ5LWNvbnRhaW5lci1kYXRhXCI+XG4gICAgICA8a3dpa3VpLWxhYmVsLXZhbHVlLXBhaXJcbiAgICAgICAgW2NvbmZpZ109XCJsYWJlbFZhbHVlUGFpckNvbmZpZ1wiXG4gICAgICAgIFtkYXRhXT1cImxhYmVsVmFsdWVQYWlyRGF0YVwiXG4gICAgICA+PC9rd2lrdWktbGFiZWwtdmFsdWUtcGFpcj5cbiAgICAgIDwhLS0gPGRpdlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGFnZW50U2VydmljZS5jb25maWc/LmRhc2hib2FyZD8ubWFwcz8uc2hvICYmXG4gICAgICAgICAgYWdlbnRTZXJ2aWNlLmNvbmZpZz8uZGFzaGJvYXJkPy5pc1Nob3dEaXN0YW5jZUFuZFRpbWUgJiZcbiAgICAgICAgICBvcGVuU3RyZWV0TWFwc1NlcnZpY2UuZ2V0U2VsZWN0ZWRUYXNrRGlzdGFuY2VBbmRUaW1lKClcbiAgICAgICAgXCJcbiAgICAgICAgY2xhc3M9XCJjdXN0b21lci10aWxlLXNlY29uZGFyeS1jb250YWluZXItY3VzdG9tLWRldGFpbHNcIlxuICAgICAgPlxuICAgICAgICBEaXN0YW5jZToge3sgb3BlblN0cmVldE1hcHNTZXJ2aWNlLmdldFNlbGVjdGVkVGFza0Rpc3RhbmNlQW5kVGltZSgpPy5kaXN0YW5jZSB9fSB8XG4gICAgICAgIFRpbWU6IHt7IG9wZW5TdHJlZXRNYXBzU2VydmljZS5nZXRTZWxlY3RlZFRhc2tEaXN0YW5jZUFuZFRpbWUoKT8udGltZSB9fVxuICAgICAgPC9kaXY+IC0tPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjdXN0b21lci10aWxlLXNlY29uZGFyeS1jb250YWluZXItYWN0aW9uc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGNvbmZpZz8uZGFzaGJvYXJkPy50YXNrVUk/LmRldGFpbHM/LmFjdGlvblwiXG4gICAgICA+XG4gICAgICAgIDxrd2lraWQtYWN0aW9uLWJ1dHRvblxuICAgICAgICAgIFthY3Rpb25dPVwiYWN0aW9uXCJcbiAgICAgICAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgICAgICAgW2N1c3RvbWVyXT1cImN1c3RvbWVyXCJcbiAgICAgICAgICAob25DbGlja1BlcmZvcm1BY3Rpb24pPVwiaGFuZGxlT25DbGlja1BlcmZvcm1BY3Rpb24oJGV2ZW50KVwiXG4gICAgICAgID48L2t3aWtpZC1hY3Rpb24tYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjdXN0b21lci10aWxlLXNlY29uZGFyeS1jb250YWluZXItdGFzay1idXR0b25zXCI+XG4gICAgICAgIDxrd2lrdWktYnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJjb25maWcuZGFzaGJvYXJkPy5pc0FsbG93UmVtb3ZlVGFza1wiXG4gICAgICAgICAgW2ljb25dPVwiJ3R1aUljb25UcmFzaDInXCJcbiAgICAgICAgICBbc2hhcGVdPVwiJ3JvdW5kZWQnXCJcbiAgICAgICAgICBhcHBlYXJhbmNlPVwiaWNvblwiXG4gICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZU9uQ2xpY2tSZW1vdmVUYXNrKGN1c3RvbWVyKVwiXG4gICAgICAgID48L2t3aWt1aS1idXR0b24+XG4gICAgICAgIDxrd2lrdWktYnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJjb25maWcuZGFzaGJvYXJkPy5pc1Nob3dDb3B5TGlua1wiXG4gICAgICAgICAgaWNvbj1cInR1aUljb25Db3B5XCJcbiAgICAgICAgICBbc2hhcGVdPVwiJ3JvdW5kZWQnXCJcbiAgICAgICAgICBhcHBlYXJhbmNlPVwiaWNvblwiXG4gICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgIChvbkNsaWNrKT1cIlxuICAgICAgICAgICAgaGFuZGxlT25DbGlja05leHQoe1xuICAgICAgICAgICAgICBjdXN0b21lcjogY3VzdG9tZXIsXG4gICAgICAgICAgICAgIHN0ZXBUeXBlOiAnU0hBUkVfSk9VUk5FWV9MSU5LJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICBcIlxuICAgICAgICA+PC9rd2lrdWktYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tZXItdGlsZS1zZWNvbmRhcnktY29udGFpbmVyLWpvdXJuZXktYnV0dG9uc1wiPlxuICAgICAgICA8a3dpa3VpLWJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiY29uZmlnLmRhc2hib2FyZD8uaXNTaG93TWFwcyAmJiBjdXN0b21lcj8uaXNWYWxpZExvY2F0aW9uXCJcbiAgICAgICAgICBsYWJlbD1cIlNob3cgRGlyZWN0aW9uc1wiXG4gICAgICAgICAgYXBwZWFyYW5jZT1cImZsYXRcIlxuICAgICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgICBzdHlsZXM9XCJmb250LXNpemU6MC43cmVtO1wiXG4gICAgICAgICAgKG9uQ2xpY2spPVwiZ29Ub01hcHMoY3VzdG9tZXIuZ29vZ2xlTWFwc1VybClcIlxuICAgICAgICA+PC9rd2lrdWktYnV0dG9uPlxuICAgICAgICA8a3dpa3VpLWJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICBjb25maWcuZGFzaGJvYXJkPy5pc0FsbG93U3RhcnRKb3VybmV5ICYmXG4gICAgICAgICAgICBhZ2VudFNlcnZpY2UuY2FuU3RhcnRKb3VybmV5KGN1c3RvbWVyLnNlc3Npb25fc3RhdHVzKVxuICAgICAgICAgIFwiXG4gICAgICAgICAgbGFiZWw9XCJTdGFydCBKb3VybmV5XCJcbiAgICAgICAgICBhcHBlYXJhbmNlPVwicHJpbWFyeVwiXG4gICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgIHN0eWxlcz1cImZvbnQtc2l6ZTowLjdyZW07XCJcbiAgICAgICAgICAob25DbGljayk9XCJcbiAgICAgICAgICAgIGhhbmRsZU9uQ2xpY2tOZXh0KHsgY3VzdG9tZXI6IGN1c3RvbWVyLCBzdGVwVHlwZTogJ1NUQVJUX0pPVVJORVknIH0pXG4gICAgICAgICAgXCJcbiAgICAgICAgPjwva3dpa3VpLWJ1dHRvbj5cbiAgICAgIDwvZGl2PiAtLT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItdGlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtYWdlbnQtZGFzaGJvYXJkL3NyYy9saWIvdjEvY29tcG9uZW50cy9jdXN0b21lci10aWxlL2N1c3RvbWVyLXRpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWFnZW50LWRhc2hib2FyZC9zcmMvbGliL3YxL2NvbXBvbmVudHMvY3VzdG9tZXItdGlsZS9jdXN0b21lci10aWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBDQUEwQztBQUMxQyxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QixlQUFlLEVBQ2hCLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQVl4QixNQUFNLE9BQU8scUJBQXFCO0lBc0NoQyxZQUNTLGlCQUFvQyxFQUNwQyxxQkFBNEMsRUFDNUMsWUFBMEIsRUFDekIsV0FBdUI7UUFIeEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQ3pCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBL0JqQyxhQUFRLEdBQVEsRUFBRSxDQUFDO1FBR25CLFVBQUssR0FBVyxTQUFTLENBQUM7UUFLMUIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFckIsb0JBQWUsR0FBa0IsRUFBRSxDQUFDO1FBRXBDLFdBQU0sR0FBUSxFQUFFLENBQUM7UUFFakIseUJBQW9CLEdBQVEsRUFBRSxDQUFDO1FBRS9CLHVCQUFrQixHQUFRLEVBQUUsQ0FBQztRQUc3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LENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsdUJBQXVCLENBQUMsSUFBSTtRQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDOztzSUF6SVUscUJBQXFCOzBIQUFyQixxQkFBcUIsa1VDM0JsQyxnakpBb0lBOzRGRHpHYSxxQkFBcUI7a0JBTGpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFdBQVcsRUFBRSxnQ0FBZ0M7b0JBQzdDLFNBQVMsRUFBRSxDQUFDLGdDQUFnQyxDQUFDO2lCQUM5QztnTUFHQyxtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVV6QyxRQUFRO3NCQURQLEtBQUs7Z0JBSU4sS0FBSztzQkFESixLQUFLO2dCQUlOLE1BQU07c0JBREwsS0FBSztnQkFjTixvQkFBb0I7c0JBRG5CLE1BQU07Z0JBSVAsUUFBUTtzQkFEUCxNQUFNO2dCQUlQLFVBQVU7c0JBRFQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvdHlwZS1idWlsdGlucyAqL1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICBjaGVja09iamVjdFBhdGhFeGlzdHMsXG4gIGdldE9iamVjdFZhbHVlRnJvbVBhdGgsXG4gIGlzTm90RW1wdHlBcnJheVxufSBmcm9tIFwia3dpa2lkLXRvb2xraXRcIjtcbmltcG9ydCB7IEdvb2dsZU1hcHNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2dvb2dsZS1tYXBzLnNlcnZpY2VcIjtcbmltcG9ydCB7IEFnZW50U2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9hZ2VudC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBPcGVuU3RyZWV0TWFwc1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvb3Blbi1zdHJlZXQtbWFwcy5zZXJ2aWNlXCI7XG5cbmRlY2xhcmUgY29uc3QgZ29vZ2xlOiBhbnk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJjdXN0b21lci10aWxlXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vY3VzdG9tZXItdGlsZS5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vY3VzdG9tZXItdGlsZS5jb21wb25lbnQuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBDdXN0b21lclRpbGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASG9zdExpc3RlbmVyKFwid2luZG93OnJlc2l6ZVwiLCBbXCIkZXZlbnRcIl0pXG4gIHdpbmRvd1Jlc2l6ZVdhdGNoZXIoKSB7XG4gICAgaWYgKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCA8IDYwMCkge1xuICAgICAgdGhpcy5pc01vYmlsZVZpZXcgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzTW9iaWxlVmlldyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGN1c3RvbWVyOiBhbnkgPSB7fTtcblxuICBASW5wdXQoKVxuICBpbmRleDogbnVtYmVyID0gdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpXG4gIGNvbmZpZzogYW55O1xuXG4gIGlzTW9iaWxlVmlldyA9IGZhbHNlO1xuXG4gIHZpZXdUYXNrRGV0YWlsczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuXG4gIHRhc2tJZDogYW55ID0gXCJcIjtcblxuICBsYWJlbFZhbHVlUGFpckNvbmZpZzogYW55ID0ge307XG5cbiAgbGFiZWxWYWx1ZVBhaXJEYXRhOiBhbnkgPSBbXTtcblxuICBAT3V0cHV0KClcbiAgb25DbGlja1BlcmZvcm1BY3Rpb246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG5leHRTdGVwID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICByZW1vdmVUYXNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBnb29nbGVNYXBzU2VydmljZTogR29vZ2xlTWFwc1NlcnZpY2UsXG4gICAgcHVibGljIG9wZW5TdHJlZXRNYXBzU2VydmljZTogT3BlblN0cmVldE1hcHNTZXJ2aWNlLFxuICAgIHB1YmxpYyBhZ2VudFNlcnZpY2U6IEFnZW50U2VydmljZSxcbiAgICBwcml2YXRlIGhvc3RFbGVtZW50OiBFbGVtZW50UmVmXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnBhcnNlRGF0YSgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IHZlcmlmeUNoYW5nZSA9IChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIGNoYW5nZXMuaGFzT3duUHJvcGVydHkoa2V5KSAmJiAhY2hhbmdlc1trZXldLmZpcnN0Q2hhbmdlO1xuICAgIH07XG5cbiAgICBpZiAodmVyaWZ5Q2hhbmdlKFwiY3VzdG9tZXJcIikpIHtcbiAgICAgIHRoaXMuY3VzdG9tZXIgPSBjaGFuZ2VzLmN1c3RvbWVyLmN1cnJlbnRWYWx1ZTtcbiAgICAgIHRoaXMucGFyc2VEYXRhKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0VmFsdWVGcm9tQXJyYXkocGF0aHMpIHtcbiAgICBsZXQgZGF0YSA9IFwiXCI7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGFycmF5LWNhbGxiYWNrLXJldHVyblxuICAgIHBhdGhzLm1hcCgocGF0aCkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSBnZXRPYmplY3RWYWx1ZUZyb21QYXRoKHRoaXMuY3VzdG9tZXIsIHBhdGgpO1xuICAgICAgZGF0YSA9IGAke2RhdGF9ICR7dmFsdWV9YDtcbiAgICB9KTtcblxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgcGFyc2VEYXRhKCkge1xuICAgIGNvbnN0IGlkZW50aWZpZXIgPSB0aGlzLmNvbmZpZz8udGFza0lkZW50aWZpZXIgPz8gXCJ1c2VyX2lkXCI7XG4gICAgdGhpcy50YXNrSWQgPSBnZXRPYmplY3RWYWx1ZUZyb21QYXRoKHRoaXMuY3VzdG9tZXIsIGlkZW50aWZpZXIpO1xuXG4gICAgbGV0IGRldGFpbHNDb25maWcgPSBbXTtcbiAgICBpZiAoXG4gICAgICBjaGVja09iamVjdFBhdGhFeGlzdHModGhpcy5jb25maWcsIFwidGFza1VJLmRldGFpbHMuZGF0YVwiKSAmJlxuICAgICAgaXNOb3RFbXB0eUFycmF5KHRoaXMuY29uZmlnLnRhc2tVSS5kZXRhaWxzLmRhdGEpXG4gICAgKSB7XG4gICAgICBjb25zdCBkYXRhID0gW107XG4gICAgICBkZXRhaWxzQ29uZmlnID0gdGhpcy5jb25maWcudGFza1VJLmRldGFpbHMuZGF0YTtcbiAgICAgIGRldGFpbHNDb25maWcubWFwKChmaWVsZCkgPT4ge1xuICAgICAgICBsZXQgdmFsdWU7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZpZWxkLnBhdGgpKSB7XG4gICAgICAgICAgdmFsdWUgPSB0aGlzLmdldFZhbHVlRnJvbUFycmF5KGZpZWxkLnBhdGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhbHVlID0gZ2V0T2JqZWN0VmFsdWVGcm9tUGF0aCh0aGlzLmN1c3RvbWVyLCBmaWVsZC5wYXRoKTtcbiAgICAgICAgfVxuICAgICAgICBkYXRhLnB1c2goeyBsYWJlbDogZmllbGQubGFiZWwsIHZhbHVlIH0pO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmxhYmVsVmFsdWVQYWlyRGF0YSA9IGRhdGE7XG4gICAgfVxuXG4gICAgdGhpcy5sYWJlbFZhbHVlUGFpckNvbmZpZyA9IHRoaXMuY29uZmlnPy50YXNrVUk/LmRldGFpbHM/LmNvbmZpZyA/PyB7fTtcbiAgfVxuXG4gIG9wZW5EZXRhaWxzKCkge1xuICAgIGNvbnN0IGlzRGlmZmVyZW50VGFza1NlbGVjdGVkID1cbiAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLmN1cnJlbnRUYXNrRGV0YWlscz8uc2Vzc2lvbl9pZCAhPT1cbiAgICAgIHRoaXMuY3VzdG9tZXI/LnNlc3Npb25faWQ7XG5cbiAgICBpZiAoaXNEaWZmZXJlbnRUYXNrU2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLmN1cnJlbnRUYXNrRGV0YWlscyA9IHRoaXMuY3VzdG9tZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLmN1cnJlbnRUYXNrRGV0YWlscyA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hZ2VudFNlcnZpY2Uuc2hvd01hcHZpZXcpIHtcbiAgICAgIGlmICh0aGlzLmFnZW50U2VydmljZS5jb25maWc/Lm1hcHM/Lm1hcFR5cGUgPT09IFwiZ29vZ2xlLW1hcHNcIikge1xuICAgICAgICB0aGlzLmdvb2dsZU1hcHNTZXJ2aWNlLnBsb3REaXJlY3Rpb25zRm9yU2VsZWN0ZWRUYXNrKFxuICAgICAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLmN1cnJlbnRUYXNrRGV0YWlsc1xuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcGVuU3RyZWV0TWFwc1NlcnZpY2UucGxvdERpcmVjdGlvbnNGb3JTZWxlY3RlZFRhc2soXG4gICAgICAgICAgdGhpcy5hZ2VudFNlcnZpY2UuY3VycmVudFRhc2tEZXRhaWxzXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ29Ub01hcHMobG9jYXRpb24pIHtcbiAgICB3aW5kb3cub3BlbihgJHtsb2NhdGlvbn1gLCBcIl9ibGFua1wiKTtcbiAgfVxuXG4gIGhhbmRsZU9uQ2xpY2tQZXJmb3JtQWN0aW9uKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2xpY2tQZXJmb3JtQWN0aW9uLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgaGFuZGxlT25DbGlja05leHQoZSkge1xuICAgIHRoaXMubmV4dFN0ZXAuZW1pdChlKTtcbiAgfVxuXG4gIGhhbmRsZU9uQ2xpY2tSZW1vdmVUYXNrKHRhc2spIHtcbiAgICB0aGlzLnJlbW92ZVRhc2suZW1pdCh0YXNrKTtcbiAgfVxufVxuIiwiPGRpdlxuICBbbmdDbGFzc109XCJcbiAgICBjdXN0b21lcj8uc2Vzc2lvbl9pZCA9PSBhZ2VudFNlcnZpY2UuY3VycmVudFRhc2tEZXRhaWxzPy5zZXNzaW9uX2lkXG4gICAgICA/ICdjdXN0b21lci10aWxlLXdyYXBwZXIgY3VzdG9tZXItdGlsZS1hY3RpdmUnXG4gICAgICA6ICdjdXN0b21lci10aWxlLXdyYXBwZXInXG4gIFwiXG4+XG4gIDxkaXYgY2xhc3M9XCJjdXN0b21lci10aWxlLXByaW1hcnktY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbWVyLXRpbGUtcHJpbWFyeS1jb250YWluZXItZGF0YVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbWVyLXRpbGUtcHJpbWFyeS1jb250YWluZXItdXNlcmlkXCI+XG4gICAgICAgIHt7IHRhc2tJZCB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8c3RhdHVzLXBpbGxcbiAgICAgICAgKm5nSWY9XCJjb25maWc/LnV0aWxpdHlGbGFncz8uaXNTaG93VGFza1N0YXR1c1wiXG4gICAgICAgIFtjb25maWddPVwiY29uZmlnPy50YXNrVUk/LmhlYWRlcj8udGFza1N0YXR1c1wiXG4gICAgICAgIFtzdGF0dXNdPVwiXG4gICAgICAgICAgY3VzdG9tZXJbY29uZmlnPy50YXNrVUk/LmhlYWRlcj8udGFza1N0YXR1cz8ucGF0aCA/PyAnc2Vzc2lvbl9zdGF0dXMnXVxuICAgICAgICBcIlxuICAgICAgPjwvc3RhdHVzLXBpbGw+XG4gICAgPC9kaXY+XG4gICAgPGt3aWt1aS1idXR0b25cbiAgICAgICpuZ0lmPVwiIWFnZW50U2VydmljZS5pc01vYmlsZVZpZXcgJiYgIWFnZW50U2VydmljZS5zaG93TWFwdmlld1wiXG4gICAgICBbaWNvbl09XCJcbiAgICAgICAgYWdlbnRTZXJ2aWNlLmN1cnJlbnRUYXNrRGV0YWlscz8uc2Vzc2lvbl9pZCA9PSBjdXN0b21lcj8uc2Vzc2lvbl9pZFxuICAgICAgICAgID8gJ3R1aUljb25DaGV2cm9uTGVmdExhcmdlJ1xuICAgICAgICAgIDogJ3R1aUljb25DaGV2cm9uUmlnaHRMYXJnZSdcbiAgICAgIFwiXG4gICAgICBbc2hhcGVdPVwiJ3JvdW5kZWQnXCJcbiAgICAgIGFwcGVhcmFuY2U9XCJpY29uXCJcbiAgICAgIHNpemU9XCJzXCJcbiAgICAgIChvbkNsaWNrKT1cIm9wZW5EZXRhaWxzKClcIlxuICAgID48L2t3aWt1aS1idXR0b24+XG4gICAgPGt3aWt1aS1idXR0b25cbiAgICAgICpuZ0lmPVwiYWdlbnRTZXJ2aWNlLmlzTW9iaWxlVmlldyB8fCBhZ2VudFNlcnZpY2Uuc2hvd01hcHZpZXdcIlxuICAgICAgW2ljb25dPVwiXG4gICAgICAgIGFnZW50U2VydmljZS5jdXJyZW50VGFza0RldGFpbHM/LnNlc3Npb25faWQgPT0gY3VzdG9tZXI/LnNlc3Npb25faWRcbiAgICAgICAgICA/ICd0dWlJY29uQ2hldnJvblVwTGFyZ2UnXG4gICAgICAgICAgOiAndHVpSWNvbkNoZXZyb25Eb3duTGFyZ2UnXG4gICAgICBcIlxuICAgICAgW3NoYXBlXT1cIidyb3VuZGVkJ1wiXG4gICAgICBhcHBlYXJhbmNlPVwiaWNvblwiXG4gICAgICBzaXplPVwic1wiXG4gICAgICAob25DbGljayk9XCJvcGVuRGV0YWlscygpXCJcbiAgICA+PC9rd2lrdWktYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgICpuZ0lmPVwiXG4gICAgICBjdXN0b21lcj8uc2Vzc2lvbl9pZCA9PSBhZ2VudFNlcnZpY2UuY3VycmVudFRhc2tEZXRhaWxzPy5zZXNzaW9uX2lkICYmXG4gICAgICAoYWdlbnRTZXJ2aWNlLmlzTW9iaWxlVmlldyB8fCBhZ2VudFNlcnZpY2Uuc2hvd01hcHZpZXcpXG4gICAgXCJcbiAgICBbbmdDbGFzc109XCJcbiAgICAgIGN1c3RvbWVyPy5zZXNzaW9uX2lkID09IGFnZW50U2VydmljZS5jdXJyZW50VGFza0RldGFpbHM/LnNlc3Npb25faWQgJiZcbiAgICAgIChhZ2VudFNlcnZpY2UuaXNNb2JpbGVWaWV3IHx8IGFnZW50U2VydmljZS5zaG93TWFwdmlldylcbiAgICAgICAgPyAnY3VzdG9tZXItdGlsZS1zZWNvbmRhcnktY29udGFpbmVyJ1xuICAgICAgICA6ICdkYXRhLWNvbGxhc3BlZCdcbiAgICBcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbWVyLXRpbGUtc2Vjb25kYXJ5LWNvbnRhaW5lci1kYXRhXCI+XG4gICAgICA8a3dpa3VpLWxhYmVsLXZhbHVlLXBhaXJcbiAgICAgICAgW2NvbmZpZ109XCJsYWJlbFZhbHVlUGFpckNvbmZpZ1wiXG4gICAgICAgIFtkYXRhXT1cImxhYmVsVmFsdWVQYWlyRGF0YVwiXG4gICAgICA+PC9rd2lrdWktbGFiZWwtdmFsdWUtcGFpcj5cbiAgICAgIDwhLS0gPGRpdlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGFnZW50U2VydmljZS5jb25maWc/Lm1hcHM/LnNobyAmJlxuICAgICAgICAgIGFnZW50U2VydmljZS5jb25maWc/LmlzU2hvd0Rpc3RhbmNlQW5kVGltZSAmJlxuICAgICAgICAgIG9wZW5TdHJlZXRNYXBzU2VydmljZS5nZXRTZWxlY3RlZFRhc2tEaXN0YW5jZUFuZFRpbWUoKVxuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cImN1c3RvbWVyLXRpbGUtc2Vjb25kYXJ5LWNvbnRhaW5lci1jdXN0b20tZGV0YWlsc1wiXG4gICAgICA+XG4gICAgICAgIERpc3RhbmNlOiB7eyBvcGVuU3RyZWV0TWFwc1NlcnZpY2UuZ2V0U2VsZWN0ZWRUYXNrRGlzdGFuY2VBbmRUaW1lKCk/LmRpc3RhbmNlIH19IHxcbiAgICAgICAgVGltZToge3sgb3BlblN0cmVldE1hcHNTZXJ2aWNlLmdldFNlbGVjdGVkVGFza0Rpc3RhbmNlQW5kVGltZSgpPy50aW1lIH19XG4gICAgICA8L2Rpdj4gLS0+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbWVyLXRpbGUtc2Vjb25kYXJ5LWNvbnRhaW5lci1hY3Rpb25zXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgY29uZmlnPy50YXNrVUk/LmRldGFpbHM/LmFjdGlvblwiPlxuICAgICAgICA8a3dpa2lkLWFjdGlvbi1idXR0b25cbiAgICAgICAgICBbYWN0aW9uXT1cImFjdGlvblwiXG4gICAgICAgICAgW2NvbmZpZ109XCJjb25maWdcIlxuICAgICAgICAgIFtjdXN0b21lcl09XCJjdXN0b21lclwiXG4gICAgICAgICAgKG9uQ2xpY2tQZXJmb3JtQWN0aW9uKT1cImhhbmRsZU9uQ2xpY2tQZXJmb3JtQWN0aW9uKCRldmVudClcIlxuICAgICAgICA+PC9rd2lraWQtYWN0aW9uLWJ1dHRvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY3VzdG9tZXItdGlsZS1zZWNvbmRhcnktY29udGFpbmVyLXRhc2stYnV0dG9uc1wiPlxuICAgICAgICA8a3dpa3VpLWJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiY29uZmlnPy5pc0FsbG93UmVtb3ZlVGFza1wiXG4gICAgICAgICAgW2ljb25dPVwiJ3R1aUljb25UcmFzaDInXCJcbiAgICAgICAgICBbc2hhcGVdPVwiJ3JvdW5kZWQnXCJcbiAgICAgICAgICBhcHBlYXJhbmNlPVwiaWNvblwiXG4gICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZU9uQ2xpY2tSZW1vdmVUYXNrKGN1c3RvbWVyKVwiXG4gICAgICAgID48L2t3aWt1aS1idXR0b24+XG4gICAgICAgIDxrd2lrdWktYnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJjb25maWc/LmlzU2hvd0NvcHlMaW5rXCJcbiAgICAgICAgICBpY29uPVwidHVpSWNvbkNvcHlcIlxuICAgICAgICAgIFtzaGFwZV09XCIncm91bmRlZCdcIlxuICAgICAgICAgIGFwcGVhcmFuY2U9XCJpY29uXCJcbiAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgKG9uQ2xpY2spPVwiXG4gICAgICAgICAgICBoYW5kbGVPbkNsaWNrTmV4dCh7XG4gICAgICAgICAgICAgIGN1c3RvbWVyOiBjdXN0b21lcixcbiAgICAgICAgICAgICAgc3RlcFR5cGU6ICdTSEFSRV9KT1VSTkVZX0xJTksnXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIFwiXG4gICAgICAgID48L2t3aWt1aS1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b21lci10aWxlLXNlY29uZGFyeS1jb250YWluZXItam91cm5leS1idXR0b25zXCI+XG4gICAgICAgIDxrd2lrdWktYnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJjb25maWc/LmlzU2hvd01hcHMgJiYgY3VzdG9tZXI/LmlzVmFsaWRMb2NhdGlvblwiXG4gICAgICAgICAgbGFiZWw9XCJTaG93IERpcmVjdGlvbnNcIlxuICAgICAgICAgIGFwcGVhcmFuY2U9XCJmbGF0XCJcbiAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgc3R5bGVzPVwiZm9udC1zaXplOjAuN3JlbTtcIlxuICAgICAgICAgIChvbkNsaWNrKT1cImdvVG9NYXBzKGN1c3RvbWVyLmdvb2dsZU1hcHNVcmwpXCJcbiAgICAgICAgPjwva3dpa3VpLWJ1dHRvbj5cbiAgICAgICAgPGt3aWt1aS1idXR0b25cbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgY29uZmlnPy5pc0FsbG93U3RhcnRKb3VybmV5ICYmXG4gICAgICAgICAgICBhZ2VudFNlcnZpY2UuY2FuU3RhcnRKb3VybmV5KGN1c3RvbWVyLnNlc3Npb25fc3RhdHVzKVxuICAgICAgICAgIFwiXG4gICAgICAgICAgbGFiZWw9XCJTdGFydCBKb3VybmV5XCJcbiAgICAgICAgICBhcHBlYXJhbmNlPVwicHJpbWFyeVwiXG4gICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgIHN0eWxlcz1cImZvbnQtc2l6ZTowLjdyZW07XCJcbiAgICAgICAgICAob25DbGljayk9XCJcbiAgICAgICAgICAgIGhhbmRsZU9uQ2xpY2tOZXh0KHsgY3VzdG9tZXI6IGN1c3RvbWVyLCBzdGVwVHlwZTogJ1NUQVJUX0pPVVJORVknIH0pXG4gICAgICAgICAgXCJcbiAgICAgICAgPjwva3dpa3VpLWJ1dHRvbj5cbiAgICAgIDwvZGl2PiAtLT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,46 +1,49 @@
1
+ import { __awaiter } from "tslib";
2
+ /* eslint-disable no-empty-function */
3
+ /* eslint-disable @typescript-eslint/no-empty-function */
4
+ /* eslint-disable no-prototype-builtins */
1
5
  import { Component, Input } from "@angular/core";
2
- import { isEmptyValue } from "kwikid-toolkit";
3
- import { EStatus } from "./status-pill.definitions";
6
+ import { checkObjectKeyExists, checkObjectPathExists, convertSnakeCaseToNormalText } from "kwikid-toolkit";
7
+ import { DEFAULT_STYLES } from "./status-pill.constants";
4
8
  import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common";
6
9
  export class StatusPillComponent {
7
10
  constructor() {
8
- this.status = EStatus.WAITING;
9
- this.statusText = "";
10
- this.statusClass = {};
11
+ this.styles = {};
12
+ this.value = "";
11
13
  }
12
14
  ngOnInit() {
13
- this.parseStatus(this.status);
15
+ return __awaiter(this, void 0, void 0, function* () {
16
+ this.setupStatus();
17
+ });
14
18
  }
15
19
  ngOnChanges(changes) {
16
20
  const verifyChange = (key) => {
17
21
  return changes.hasOwnProperty(key) && !changes[key].firstChange;
18
22
  };
23
+ if (verifyChange("config")) {
24
+ this.config = changes.config.currentValue;
25
+ }
19
26
  if (verifyChange("status")) {
20
27
  this.status = changes.status.currentValue;
21
- this.parseStatus(this.status);
28
+ this.setupStatus();
22
29
  }
23
30
  }
24
- parseStatus(status) {
25
- if (isEmptyValue(status)) {
26
- this.status = EStatus.WAITING;
31
+ setupStatus() {
32
+ var _a, _b;
33
+ if (checkObjectPathExists(this.config, "mapping") &&
34
+ checkObjectKeyExists(this.config.mapping, this.status)) {
35
+ this.styles = Object.assign(Object.assign({}, DEFAULT_STYLES), this.config.mapping[this.status]);
36
+ this.value =
37
+ (_b = (_a = this.config.mapping[this.status]) === null || _a === void 0 ? void 0 : _a.label) !== null && _b !== void 0 ? _b : convertSnakeCaseToNormalText(this.status);
38
+ }
39
+ else {
40
+ this.styles = DEFAULT_STYLES;
41
+ this.value = convertSnakeCaseToNormalText(this.status);
27
42
  }
28
- this.statusText = this.getStatusLabel(status);
29
- this.statusClass = this.getStatusPillClass(status);
30
- }
31
- getStatusPillClass(status) {
32
- const newStatus = status
33
- .replace("_", "-")
34
- .replace("_", "-")
35
- .replace("_", "-");
36
- return `status-pill ${newStatus}`;
37
- }
38
- getStatusLabel(status) {
39
- return status.replace("_", " ").replace("_", " ").replace("_", " ");
40
43
  }
41
44
  }
42
45
  /** @nocollapse */ StatusPillComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: StatusPillComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
43
- /** @nocollapse */ StatusPillComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: StatusPillComponent, selector: "status-pill", inputs: { status: "status" }, usesOnChanges: true, ngImport: i0, template: "<div [ngClass]=\"getStatusPillClass(status)\">{{ getStatusLabel(status) }}</div>\n", styles: [".status-pill{background-color:#dedede;padding:.1rem .5rem;border-radius:1rem;font-size:.7rem;color:#222}.complete,.kyc-request-accepted,.kyc-result-approved{background-color:#d7faee;color:#01663e}.rejected,.kyc-request-rejected,.kyc-result-rejected,.kyc-rejected{background:#f9dade;color:#eb3434}.auditing,.on-going,.kyc-result-partial-update,.kyc-resut-partial-update{background-color:#c1e3f4;color:#023b57}.after-audit,.waiting,.kyc-result-under-review{background-color:#f5ecb5;color:#000}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
46
+ /** @nocollapse */ StatusPillComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: StatusPillComponent, selector: "status-pill", inputs: { config: "config", status: "status" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"task-iem-status-container\"\n [style]=\"styles\"\n>\n {{ value }}\n</div>\n", styles: [".task-iem-status-container{width:-moz-fit-content;width:fit-content;padding:0 .4rem;font-size:.7rem;border-radius:1rem}\n"] });
44
47
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: StatusPillComponent, decorators: [{
45
48
  type: Component,
46
49
  args: [{
@@ -48,7 +51,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
48
51
  templateUrl: "./status-pill.component.html",
49
52
  styleUrls: ["./status-pill.component.css"]
50
53
  }]
51
- }], propDecorators: { status: [{
54
+ }], ctorParameters: function () { return []; }, propDecorators: { config: [{
55
+ type: Input
56
+ }], status: [{
52
57
  type: Input
53
58
  }] } });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLXBpbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWFnZW50LWRhc2hib2FyZC9zcmMvbGliL3YxL2NvbXBvbmVudHMvY3VzdG9tZXItdGlsZS9zdGF0dXMtcGlsbC9zdGF0dXMtcGlsbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtYWdlbnQtZGFzaGJvYXJkL3NyYy9saWIvdjEvY29tcG9uZW50cy9jdXN0b21lci10aWxlL3N0YXR1cy1waWxsL3N0YXR1cy1waWxsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUF5QixNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLE9BQU8sRUFBVyxNQUFNLDJCQUEyQixDQUFDOzs7QUFPN0QsTUFBTSxPQUFPLG1CQUFtQjtJQUxoQztRQU9FLFdBQU0sR0FBWSxPQUFPLENBQUMsT0FBTyxDQUFDO1FBRWxDLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFFaEIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7S0FvQ2xCO0lBbENDLFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLE1BQU0sWUFBWSxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUU7WUFDbkMsT0FBTyxPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUNsRSxDQUFDLENBQUM7UUFFRixJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO1lBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFNO1FBQ2hCLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztTQUMvQjtRQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsTUFBTTtRQUN2QixNQUFNLFNBQVMsR0FBRyxNQUFNO2FBQ3JCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO2FBQ2pCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO2FBQ2pCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDckIsT0FBTyxlQUFlLFNBQVMsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxjQUFjLENBQUMsTUFBTTtRQUNuQixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN0RSxDQUFDOztvSUF6Q1UsbUJBQW1CO3dIQUFuQixtQkFBbUIsc0dDVGhDLG9GQUNBOzRGRFFhLG1CQUFtQjtrQkFML0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsV0FBVyxFQUFFLDhCQUE4QjtvQkFDM0MsU0FBUyxFQUFFLENBQUMsNkJBQTZCLENBQUM7aUJBQzNDOzhCQUdDLE1BQU07c0JBREwsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBpc0VtcHR5VmFsdWUgfSBmcm9tIFwia3dpa2lkLXRvb2xraXRcIjtcbmltcG9ydCB7IEVTdGF0dXMsIFRTdGF0dXMgfSBmcm9tIFwiLi9zdGF0dXMtcGlsbC5kZWZpbml0aW9uc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwic3RhdHVzLXBpbGxcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9zdGF0dXMtcGlsbC5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vc3RhdHVzLXBpbGwuY29tcG9uZW50LmNzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBTdGF0dXNQaWxsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KClcbiAgc3RhdHVzOiBUU3RhdHVzID0gRVN0YXR1cy5XQUlUSU5HO1xuXG4gIHN0YXR1c1RleHQgPSBcIlwiO1xuXG4gIHN0YXR1c0NsYXNzID0ge307XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5wYXJzZVN0YXR1cyh0aGlzLnN0YXR1cyk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3QgdmVyaWZ5Q2hhbmdlID0gKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eShrZXkpICYmICFjaGFuZ2VzW2tleV0uZmlyc3RDaGFuZ2U7XG4gICAgfTtcblxuICAgIGlmICh2ZXJpZnlDaGFuZ2UoXCJzdGF0dXNcIikpIHtcbiAgICAgIHRoaXMuc3RhdHVzID0gY2hhbmdlcy5zdGF0dXMuY3VycmVudFZhbHVlO1xuICAgICAgdGhpcy5wYXJzZVN0YXR1cyh0aGlzLnN0YXR1cyk7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VTdGF0dXMoc3RhdHVzKSB7XG4gICAgaWYgKGlzRW1wdHlWYWx1ZShzdGF0dXMpKSB7XG4gICAgICB0aGlzLnN0YXR1cyA9IEVTdGF0dXMuV0FJVElORztcbiAgICB9XG4gICAgdGhpcy5zdGF0dXNUZXh0ID0gdGhpcy5nZXRTdGF0dXNMYWJlbChzdGF0dXMpO1xuICAgIHRoaXMuc3RhdHVzQ2xhc3MgPSB0aGlzLmdldFN0YXR1c1BpbGxDbGFzcyhzdGF0dXMpO1xuICB9XG5cbiAgZ2V0U3RhdHVzUGlsbENsYXNzKHN0YXR1cykge1xuICAgIGNvbnN0IG5ld1N0YXR1cyA9IHN0YXR1c1xuICAgICAgLnJlcGxhY2UoXCJfXCIsIFwiLVwiKVxuICAgICAgLnJlcGxhY2UoXCJfXCIsIFwiLVwiKVxuICAgICAgLnJlcGxhY2UoXCJfXCIsIFwiLVwiKTtcbiAgICByZXR1cm4gYHN0YXR1cy1waWxsICR7bmV3U3RhdHVzfWA7XG4gIH1cblxuICBnZXRTdGF0dXNMYWJlbChzdGF0dXMpIHtcbiAgICByZXR1cm4gc3RhdHVzLnJlcGxhY2UoXCJfXCIsIFwiIFwiKS5yZXBsYWNlKFwiX1wiLCBcIiBcIikucmVwbGFjZShcIl9cIiwgXCIgXCIpO1xuICB9XG59XG4iLCI8ZGl2IFtuZ0NsYXNzXT1cImdldFN0YXR1c1BpbGxDbGFzcyhzdGF0dXMpXCI+e3sgZ2V0U3RhdHVzTGFiZWwoc3RhdHVzKSB9fTwvZGl2PlxuIl19
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLXBpbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWFnZW50LWRhc2hib2FyZC9zcmMvbGliL3YxL2NvbXBvbmVudHMvY3VzdG9tZXItdGlsZS9zdGF0dXMtcGlsbC9zdGF0dXMtcGlsbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtYWdlbnQtZGFzaGJvYXJkL3NyYy9saWIvdjEvY29tcG9uZW50cy9jdXN0b21lci10aWxlL3N0YXR1cy1waWxsL3N0YXR1cy1waWxsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxzQ0FBc0M7QUFDdEMseURBQXlEO0FBQ3pELDBDQUEwQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBeUIsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIsNEJBQTRCLEVBQzdCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQU96RCxNQUFNLE9BQU8sbUJBQW1CO0lBVzlCO1FBSkEsV0FBTSxHQUFHLEVBQUUsQ0FBQztRQUVaLFVBQUssR0FBRyxFQUFFLENBQUM7SUFFSSxDQUFDO0lBRVYsUUFBUTs7WUFDWixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckIsQ0FBQztLQUFBO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLE1BQU0sWUFBWSxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUU7WUFDbkMsT0FBTyxPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUNsRSxDQUFDLENBQUM7UUFFRixJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO1NBQzNDO1FBQ0QsSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztZQUUxQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDcEI7SUFDSCxDQUFDO0lBRUQsV0FBVzs7UUFDVCxJQUNFLHFCQUFxQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDO1lBQzdDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsRUFDdEQ7WUFDQSxJQUFJLENBQUMsTUFBTSxtQ0FBUSxjQUFjLEdBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFFLENBQUM7WUFDekUsSUFBSSxDQUFDLEtBQUs7Z0JBQ1IsTUFBQSxNQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsMENBQUUsS0FBSyxtQ0FDdkMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzdDO2FBQU07WUFDTCxJQUFJLENBQUMsTUFBTSxHQUFHLGNBQWMsQ0FBQztZQUM3QixJQUFJLENBQUMsS0FBSyxHQUFHLDRCQUE0QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN4RDtJQUNILENBQUM7O29JQTdDVSxtQkFBbUI7d0hBQW5CLG1CQUFtQix3SENoQmhDLCtGQU1BOzRGRFVhLG1CQUFtQjtrQkFML0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsV0FBVyxFQUFFLDhCQUE4QjtvQkFDM0MsU0FBUyxFQUFFLENBQUMsNkJBQTZCLENBQUM7aUJBQzNDOzBFQUdDLE1BQU07c0JBREwsS0FBSztnQkFJTixNQUFNO3NCQURMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1lbXB0eS1mdW5jdGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgKi9cbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICBjaGVja09iamVjdEtleUV4aXN0cyxcbiAgY2hlY2tPYmplY3RQYXRoRXhpc3RzLFxuICBjb252ZXJ0U25ha2VDYXNlVG9Ob3JtYWxUZXh0XG59IGZyb20gXCJrd2lraWQtdG9vbGtpdFwiO1xuaW1wb3J0IHsgREVGQVVMVF9TVFlMRVMgfSBmcm9tIFwiLi9zdGF0dXMtcGlsbC5jb25zdGFudHNcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcInN0YXR1cy1waWxsXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vc3RhdHVzLXBpbGwuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL3N0YXR1cy1waWxsLmNvbXBvbmVudC5jc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgU3RhdHVzUGlsbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIGNvbmZpZztcblxuICBASW5wdXQoKVxuICBzdGF0dXM7XG5cbiAgc3R5bGVzID0ge307XG5cbiAgdmFsdWUgPSBcIlwiO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldHVwU3RhdHVzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgY29uc3QgdmVyaWZ5Q2hhbmdlID0gKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eShrZXkpICYmICFjaGFuZ2VzW2tleV0uZmlyc3RDaGFuZ2U7XG4gICAgfTtcblxuICAgIGlmICh2ZXJpZnlDaGFuZ2UoXCJjb25maWdcIikpIHtcbiAgICAgIHRoaXMuY29uZmlnID0gY2hhbmdlcy5jb25maWcuY3VycmVudFZhbHVlO1xuICAgIH1cbiAgICBpZiAodmVyaWZ5Q2hhbmdlKFwic3RhdHVzXCIpKSB7XG4gICAgICB0aGlzLnN0YXR1cyA9IGNoYW5nZXMuc3RhdHVzLmN1cnJlbnRWYWx1ZTtcblxuICAgICAgdGhpcy5zZXR1cFN0YXR1cygpO1xuICAgIH1cbiAgfVxuXG4gIHNldHVwU3RhdHVzKCkge1xuICAgIGlmIChcbiAgICAgIGNoZWNrT2JqZWN0UGF0aEV4aXN0cyh0aGlzLmNvbmZpZywgXCJtYXBwaW5nXCIpICYmXG4gICAgICBjaGVja09iamVjdEtleUV4aXN0cyh0aGlzLmNvbmZpZy5tYXBwaW5nLCB0aGlzLnN0YXR1cylcbiAgICApIHtcbiAgICAgIHRoaXMuc3R5bGVzID0geyAuLi5ERUZBVUxUX1NUWUxFUywgLi4udGhpcy5jb25maWcubWFwcGluZ1t0aGlzLnN0YXR1c10gfTtcbiAgICAgIHRoaXMudmFsdWUgPVxuICAgICAgICB0aGlzLmNvbmZpZy5tYXBwaW5nW3RoaXMuc3RhdHVzXT8ubGFiZWwgPz9cbiAgICAgICAgY29udmVydFNuYWtlQ2FzZVRvTm9ybWFsVGV4dCh0aGlzLnN0YXR1cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3R5bGVzID0gREVGQVVMVF9TVFlMRVM7XG4gICAgICB0aGlzLnZhbHVlID0gY29udmVydFNuYWtlQ2FzZVRvTm9ybWFsVGV4dCh0aGlzLnN0YXR1cyk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwidGFzay1pZW0tc3RhdHVzLWNvbnRhaW5lclwiXG4gIFtzdHlsZV09XCJzdHlsZXNcIlxuPlxuICB7eyB2YWx1ZSB9fVxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,33 @@
1
+ export const STATUS = {
2
+ kyc_result_rejected: {
3
+ color: "#eb3434",
4
+ label: "KYC Result Rejected",
5
+ background: "#ffd4da",
6
+ hint: "KYC Result Rejected"
7
+ },
8
+ kyc_result_approved: {
9
+ color: "#01663e",
10
+ label: "KYC Result Approved",
11
+ background: "#d7faee",
12
+ hint: "KYC Result Approved"
13
+ },
14
+ kyc_result_partial_update: {
15
+ color: "#023b57",
16
+ label: "Partial Update",
17
+ background: "#b5e0f5",
18
+ hint: "Partial Update"
19
+ },
20
+ waiting: {
21
+ color: "#000",
22
+ label: "Waiting",
23
+ background: "#f5ecb5",
24
+ hint: "Waiting"
25
+ }
26
+ };
27
+ export const DEFAULT_STYLES = {
28
+ color: "#fff",
29
+ label: "Waiting",
30
+ background: "#888",
31
+ hint: "Waiting"
32
+ };
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLXBpbGwuY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWFnZW50LWRhc2hib2FyZC9zcmMvbGliL3YxL2NvbXBvbmVudHMvY3VzdG9tZXItdGlsZS9zdGF0dXMtcGlsbC9zdGF0dXMtcGlsbC5jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHO0lBQ3BCLG1CQUFtQixFQUFFO1FBQ25CLEtBQUssRUFBRSxTQUFTO1FBQ2hCLEtBQUssRUFBRSxxQkFBcUI7UUFDNUIsVUFBVSxFQUFFLFNBQVM7UUFDckIsSUFBSSxFQUFFLHFCQUFxQjtLQUM1QjtJQUNELG1CQUFtQixFQUFFO1FBQ25CLEtBQUssRUFBRSxTQUFTO1FBQ2hCLEtBQUssRUFBRSxxQkFBcUI7UUFDNUIsVUFBVSxFQUFFLFNBQVM7UUFDckIsSUFBSSxFQUFFLHFCQUFxQjtLQUM1QjtJQUNELHlCQUF5QixFQUFFO1FBQ3pCLEtBQUssRUFBRSxTQUFTO1FBQ2hCLEtBQUssRUFBRSxnQkFBZ0I7UUFDdkIsVUFBVSxFQUFFLFNBQVM7UUFDckIsSUFBSSxFQUFFLGdCQUFnQjtLQUN2QjtJQUNELE9BQU8sRUFBRTtRQUNQLEtBQUssRUFBRSxNQUFNO1FBQ2IsS0FBSyxFQUFFLFNBQVM7UUFDaEIsVUFBVSxFQUFFLFNBQVM7UUFDckIsSUFBSSxFQUFFLFNBQVM7S0FDaEI7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHO0lBQzVCLEtBQUssRUFBRSxNQUFNO0lBQ2IsS0FBSyxFQUFFLFNBQVM7SUFDaEIsVUFBVSxFQUFFLE1BQU07SUFDbEIsSUFBSSxFQUFFLFNBQVM7Q0FDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBTVEFUVVMgPSB7XG4gIGt5Y19yZXN1bHRfcmVqZWN0ZWQ6IHtcbiAgICBjb2xvcjogXCIjZWIzNDM0XCIsXG4gICAgbGFiZWw6IFwiS1lDIFJlc3VsdCBSZWplY3RlZFwiLFxuICAgIGJhY2tncm91bmQ6IFwiI2ZmZDRkYVwiLFxuICAgIGhpbnQ6IFwiS1lDIFJlc3VsdCBSZWplY3RlZFwiXG4gIH0sXG4gIGt5Y19yZXN1bHRfYXBwcm92ZWQ6IHtcbiAgICBjb2xvcjogXCIjMDE2NjNlXCIsXG4gICAgbGFiZWw6IFwiS1lDIFJlc3VsdCBBcHByb3ZlZFwiLFxuICAgIGJhY2tncm91bmQ6IFwiI2Q3ZmFlZVwiLFxuICAgIGhpbnQ6IFwiS1lDIFJlc3VsdCBBcHByb3ZlZFwiXG4gIH0sXG4gIGt5Y19yZXN1bHRfcGFydGlhbF91cGRhdGU6IHtcbiAgICBjb2xvcjogXCIjMDIzYjU3XCIsXG4gICAgbGFiZWw6IFwiUGFydGlhbCBVcGRhdGVcIixcbiAgICBiYWNrZ3JvdW5kOiBcIiNiNWUwZjVcIixcbiAgICBoaW50OiBcIlBhcnRpYWwgVXBkYXRlXCJcbiAgfSxcbiAgd2FpdGluZzoge1xuICAgIGNvbG9yOiBcIiMwMDBcIixcbiAgICBsYWJlbDogXCJXYWl0aW5nXCIsXG4gICAgYmFja2dyb3VuZDogXCIjZjVlY2I1XCIsXG4gICAgaGludDogXCJXYWl0aW5nXCJcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfU1RZTEVTID0ge1xuICBjb2xvcjogXCIjZmZmXCIsXG4gIGxhYmVsOiBcIldhaXRpbmdcIixcbiAgYmFja2dyb3VuZDogXCIjODg4XCIsXG4gIGhpbnQ6IFwiV2FpdGluZ1wiXG59O1xuIl19
@@ -24,7 +24,9 @@ export class KwikIDAgentDashboardComponentV1 {
24
24
  this.httpClient = httpClient;
25
25
  this.hostElement = hostElement;
26
26
  this.dialogService = dialogService;
27
+ this.agentInfo = {};
27
28
  this.config = {};
29
+ this.userConfig = {};
28
30
  this.taskList = [];
29
31
  this.nextStep = new EventEmitter();
30
32
  this.addTask = new EventEmitter();
@@ -47,15 +49,13 @@ export class KwikIDAgentDashboardComponentV1 {
47
49
  }
48
50
  }
49
51
  ngOnInit() {
50
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
52
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
51
53
  return __awaiter(this, void 0, void 0, function* () {
52
54
  this.agentService.config = this.config;
53
- this.agentService.showMapview = (_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.dashboard) === null || _b === void 0 ? void 0 : _b.isShowMaps) !== null && _c !== void 0 ? _c : false;
54
- this.agentService.addTaskForm =
55
- (_f = (_e = (_d = this.config) === null || _d === void 0 ? void 0 : _d.dashboard) === null || _e === void 0 ? void 0 : _e.addTaskForm) !== null && _f !== void 0 ? _f : this.agentService.addTaskForm;
56
- if (((_h = (_g = this.config) === null || _g === void 0 ? void 0 : _g.dashboard) === null || _h === void 0 ? void 0 : _h.mapType) === "google-maps" &&
57
- isNotEmptyValue((_k = (_j = this.config) === null || _j === void 0 ? void 0 : _j.dashboard) === null || _k === void 0 ? void 0 : _k.googleMapsAPIKey)) {
58
- this.loadMaps((_m = (_l = this.config) === null || _l === void 0 ? void 0 : _l.dashboard) === null || _m === void 0 ? void 0 : _m.googleMapsAPIKey).subscribe((loaded) => {
55
+ this.agentService.showMapview = (_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.maps) === null || _b === void 0 ? void 0 : _b.isShowMaps) !== null && _c !== void 0 ? _c : false;
56
+ if (((_e = (_d = this.config) === null || _d === void 0 ? void 0 : _d.maps) === null || _e === void 0 ? void 0 : _e.mapType) === "google-maps" &&
57
+ isNotEmptyValue((_g = (_f = this.config) === null || _f === void 0 ? void 0 : _f.maps) === null || _g === void 0 ? void 0 : _g.apiKey)) {
58
+ this.loadMaps((_j = (_h = this.config) === null || _h === void 0 ? void 0 : _h.maps) === null || _j === void 0 ? void 0 : _j.apiKey).subscribe((loaded) => {
59
59
  this.mapsLoaded = loaded;
60
60
  if (loaded) {
61
61
  console.log("Google Maps JavaScript API loaded successfully.");
@@ -138,7 +138,7 @@ export class KwikIDAgentDashboardComponentV1 {
138
138
  }
139
139
  }
140
140
  /** @nocollapse */ KwikIDAgentDashboardComponentV1.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDAgentDashboardComponentV1, deps: [{ token: i1.GoogleMapsService }, { token: i2.AgentService }, { token: i3.HttpClient }, { token: i0.ElementRef }, { token: TuiDialogService }], target: i0.ɵɵFactoryTarget.Component });
141
- /** @nocollapse */ KwikIDAgentDashboardComponentV1.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: KwikIDAgentDashboardComponentV1, selector: "kwikid-agent-dashboard-v1", inputs: { config: "config", taskList: "taskList" }, outputs: { nextStep: "nextStep", addTask: "addTask", removeTask: "removeTask", filterTaskList: "filterTaskList", onClickPerformAction: "onClickPerformAction" }, host: { listeners: { "window:resize": "windowResizeWatcher($event)" } }, viewQueries: [{ propertyName: "infoWindow", first: true, predicate: MapInfoWindow, descendants: true }, { propertyName: "mapElement", first: true, predicate: ["map"], descendants: true, static: true }], ngImport: i0, template: "<div\n class=\"kwikid-agent-dashboard\"\n *ngIf=\"!loading\"\n>\n <div class=\"wrapper\">\n <header>\n <span (tuiActiveZoneChange)=\"onActiveZone($event)\">\n <kwikui-button\n [icon]=\"'tuiIconMenuLarge'\"\n (onClick)=\"onClick()\"\n appearance=\"mono\"\n size=\"m\"\n [tuiDropdown]=\"dropdownContent\"\n [tuiDropdownManual]=\"open\"\n (tuiObscured)=\"onObscured($event)\"\n ></kwikui-button>\n <ng-template #dropdownContent>\n <div class=\"menu-dropdown\">\n <div class=\"menu-dropdown-header\">\n <!-- <img\n *ngIf=\"\n agentService.config?.clientLogo &&\n agentService.config?.dashboard?.isShowClientLogo\n \"\n [src]=\"agentService.config.clientLogo\"\n class=\"client-logo\"\n />\n <div\n *ngIf=\"\n !agentService.config.clientLogo ||\n !agentService.config?.dashboard?.isShowClientLogo\n \"\n class=\"client-name\"\n >\n <kwikui-button\n [icon]=\"'tuiIconLink'\"\n appearance=\"mono\"\n size=\"m\"\n ></kwikui-button>\n\n {{ agentService.config.clientName }}\n </div> -->\n <div class=\"menu-dropdown-header-agent-name\">\n {{ agentService.config.agentName }}\n </div>\n <div class=\"menu-dropdown-header-agent-id\">\n Agent ID: {{ agentService.config.agentId }}\n </div>\n </div>\n <hr />\n <div\n class=\"menu-dropdown-body\"\n tuiGroup\n [collapsed]=\"true\"\n [rounded]=\"false\"\n [orientation]=\"'vertical'\"\n [size]=\"'m'\"\n >\n <kwikui-button\n *ngIf=\"agentService.config?.dashboard?.isAllowAddTask\"\n appearance=\"mono\"\n class=\"menu-dropdown-buttons\"\n label=\"Refresh\"\n [icon]=\"'tuiIconRefreshCw'\"\n size=\"m\"\n type=\"button\"\n (onClick)=\"refresh()\"\n ></kwikui-button>\n <kwikui-button\n *ngIf=\"this.config.dashboard.isShowMaps\"\n appearance=\"mono\"\n class=\"menu-dropdown-buttons\"\n label=\"{{\n agentService.showMapview ? 'Hide Maps' : 'Show Maps'\n }}\"\n type=\"button\"\n icon=\"{{\n agentService.showMapview ? 'tuiIconEyeOff' : 'tuiIconEye'\n }}\"\n iconRight=\"\"\n [shape]=\"null\"\n size=\"m\"\n styles=\"padding: 0rem !important\"\n (onClick)=\"agentService.toggleMapview()\"\n ></kwikui-button>\n </div>\n <hr />\n <div class=\"menu-dropdown-footer\">\n <kwikui-button\n appearance=\"mono\"\n class=\"menu-dropdown-buttons\"\n label=\"Logout\"\n icon=\"tuiIconLogOut\"\n size=\"m\"\n type=\"button\"\n (onClick)=\"handleOnClickLogout()\"\n ></kwikui-button>\n </div>\n </div>\n </ng-template>\n </span>\n <div class=\"actions\">\n <kwikui-button\n *ngIf=\"agentService.config?.dashboard?.isAllowAddTask\"\n class=\"menu-dropdown-buttons\"\n type=\"button\"\n appearance=\"primary\"\n [label]=\"\n agentService.config?.dashboard?.addTaskButtonLabel ?? 'Add User'\n \"\n icon=\"tuiIconPlus\"\n shape=\"rounded\"\n size=\"s\"\n (onClick)=\"showDialog(template)\"\n ></kwikui-button>\n </div>\n </header>\n\n <div class=\"dashboard-body\">\n <div\n *ngIf=\"mapsLoaded\"\n [class]=\"agentService.showMapview ? 'map' : 'map-hidden'\"\n >\n <google-map\n *ngIf=\"agentService.config?.dashboard?.mapType == 'google-maps'\"\n [options]=\"this.googleMapsService.map\"\n height=\"100%\"\n width=\"100%\"\n >\n <map-marker\n #marker=\"mapMarker\"\n *ngFor=\"\n let markerPosition of this.googleMapsService.allMarkers;\n let index = index\n \"\n [position]=\"markerPosition\"\n [label]=\"{ text: String(index) }\"\n ></map-marker>\n <map-directions-renderer\n *ngIf=\"\n this.googleMapsService.directionsResults$\n | async as directionsResults\n \"\n [directions]=\"directionsResults\"\n [options]=\"this.googleMapsService.directionsRenderOption\"\n ></map-directions-renderer>\n </google-map>\n\n <div\n *ngIf=\"agentService.config?.dashboard?.mapType == 'open-street'\"\n id=\"map\"\n style=\"height: 100%\"\n ></div>\n </div>\n\n <div\n class=\"task-details\"\n *ngIf=\"\n !agentService.isMobileView &&\n agentService.currentTaskDetails != undefined &&\n !agentService.showMapview\n \"\n >\n <customer-details\n [customer]=\"agentService.currentTaskDetails\"\n [config]=\"config\"\n (nextStep)=\"handleOnClickNext($event)\"\n (removeTask)=\"handleOnClickRemoveTask($event)\"\n (onClickPerformAction)=\"handleOnClickPerformAction($event)\"\n ></customer-details>\n </div>\n\n <div\n class=\"no-task-details\"\n *ngIf=\"\n !agentService.isMobileView &&\n agentService.currentTaskDetails == undefined &&\n !agentService.showMapview\n \"\n >\n <img\n src=\"assets/No-Results.jpg\"\n class=\"no-task-img\"\n alt=\"No Task\"\n />\n <div class=\"\">Select a Task to view it's details.</div>\n </div>\n\n <div class=\"customer-list\">\n <customer-list\n [customers]=\"taskList\"\n [config]=\"config\"\n (nextStep)=\"handleOnClickNext($event)\"\n (removeTask)=\"handleOnClickRemoveTask($event)\"\n (filterTaskList)=\"handleOnFilterTaskList($event)\"\n (onClickPerformAction)=\"handleOnClickPerformAction($event)\"\n ></customer-list>\n </div>\n </div>\n </div>\n</div>\n\n<div\n class=\"kwikid-agent-dashboard-loader\"\n *ngIf=\"loading\"\n>\n <span class=\"loader\"></span>\n</div>\n\n<ng-template\n #template\n let-observer\n>\n <div class=\"add-task-header\">\n <h2>{{ agentService?.addTaskForm?.title ?? \"Create User\" }}</h2>\n <kwikui-button\n icon=\"tuiIconX\"\n id=\"\"\n styles=\"\"\n type=\"button\"\n appearance=\"mono\"\n [shape]=\"null\"\n size=\"m\"\n (onClick)=\"observer.complete()\"\n ></kwikui-button>\n </div>\n <kwikid-form-view\n [allFormsData]=\"allFormsData\"\n [formConfig]=\"agentService.addTaskForm\"\n [isMobileView]=\"true\"\n (onClickSaveForm)=\"this.handleOnClickSaveForm($event)\"\n ></kwikid-form-view>\n</ng-template>\n", styles: [".kwikid-agent-dashboard{display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;align-content:center;width:100%;height:100%;position:relative}.kwikid-agent-dashboard .wrapper{width:100%;height:100%;display:flex;flex-direction:column;align-content:center;justify-content:space-between;align-items:stretch}.kwikid-agent-dashboard .wrapper header{display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;grid-column-gap:1rem;column-gap:1rem;padding:1rem;max-height:80px;border:1px solid #cdcdcd}.kwikid-agent-dashboard .wrapper header .actions{display:flex;flex-direction:row;align-items:center}.kwikid-agent-dashboard .wrapper header .actions>*{margin-right:.5rem}.kwikid-agent-dashboard .wrapper .dashboard-body{display:flex;flex-direction:column;align-content:center;justify-content:center;align-items:stretch;flex:1;overflow:auto}.kwikid-agent-dashboard .wrapper .dashboard-body .map{width:100%;height:100%;position:relative;overflow:hidden}.kwikid-agent-dashboard .wrapper .dashboard-body .map-hidden{visibility:collapse}.kwikid-agent-dashboard .wrapper .dashboard-body .customer-list{width:100%;height:100%;overflow:hidden}@media screen and (min-width: 600px){.kwikid-agent-dashboard{display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;align-content:center;width:100%;height:100%}.kwikid-agent-dashboard .wrapper{width:100%;height:100%;display:flex;flex-direction:column;align-content:center;justify-content:space-between;align-items:stretch}.kwikid-agent-dashboard .wrapper header{display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;grid-column-gap:1rem;column-gap:1rem;padding:.75rem;max-height:80px;border:1px solid #cdcdcd}.kwikid-agent-dashboard .wrapper header .client-name{display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;font-size:1rem;font-weight:600}.kwikid-agent-dashboard .wrapper .dashboard-body{display:flex;flex-direction:row-reverse;align-content:center;justify-content:flex-end;align-items:stretch;overflow:auto}.kwikid-agent-dashboard .wrapper .dashboard-body .map{width:100%;height:100%;position:relative;overflow:hidden;border:1px solid #cdcdcd;border-radius:.5rem}.kwikid-agent-dashboard .wrapper .dashboard-body .map-hidden{visibility:collapse}.kwikid-agent-dashboard .wrapper .dashboard-body .task-details{width:100%;height:100%;position:relative;overflow:hidden;border:1px solid #cdcdcd}.kwikid-agent-dashboard .wrapper .dashboard-body .no-task-details{width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;grid-gap:.5rem;gap:.5rem;overflow:hidden;color:#555}.kwikid-agent-dashboard .wrapper .dashboard-body .no-task-details .no-task-img{height:100px;width:100px}.kwikid-agent-dashboard .wrapper .dashboard-body .customer-list{min-width:300px;max-width:320px;width:100%;height:100%;overflow:hidden;border:1px solid #cdcdcd}}.menu{position:absolute;transition:\"0.15s linear 0s\"}.kwikid-agent-dashboard-loader{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.75);display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center;z-index:100}.kwikid-agent-dashboard-loader .loader{width:48px;height:48px;border-radius:50%;display:inline-block;position:relative;border:3px solid;border-color:#fff #fff transparent;box-sizing:border-box;animation:rotation 1s linear infinite}.kwikid-agent-dashboard-loader .loader:after{content:\"\";box-sizing:border-box;position:absolute;left:0;right:0;top:0;bottom:0;margin:auto;border:3px solid;border-color:transparent var(--tui-primary) var(--tui-primary);width:24px;height:24px;border-radius:50%;animation:rotationBack .5s linear infinite;transform-origin:center center}@keyframes rotation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes rotationBack{0%{transform:rotate(0)}to{transform:rotate(-360deg)}}.kwikid-agent-dashboard-loader .t-loader{display:none!important}.add-task-header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:.5rem 0 1rem 1rem}:host{width:100%;height:100%}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{border-radius:10px}::-webkit-scrollbar-thumb{background:lightgray;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:gray}.menu-dropdown{display:flex;flex-direction:column;justify-content:space-between;align-items:stretch;grid-gap:.5rem;gap:.5rem;padding:1rem 1.5rem}.menu-dropdown .menu-dropdown-header{display:flex;flex-direction:column;align-content:flex-start;justify-content:space-between;align-items:flex-start;grid-gap:1rem;gap:1rem}.menu-dropdown .menu-dropdown-header .menu-dropdown-header-agent-name{font-size:1.2rem;margin:0 auto;font-weight:600}.menu-dropdown .menu-dropdown-header .menu-dropdown-header-agent-id{font-size:.8rem;margin:0 auto;font-weight:600}.menu-dropdown .menu-dropdown-buttons ::ng-deep .t-wrapper{padding:0!important}.client-logo{height:40px;width:-moz-fit-content;width:fit-content;margin:0 auto;padding-left:1rem}.client-name{display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;font-size:1rem;margin:0 auto;font-weight:600}\n"], components: [{ type: i4.KwikUIButtonComponent, selector: "kwikui-button", inputs: ["appearance", "class", "disabled", "icon", "iconRight", "id", "label", "shape", "showLoader", "size", "styles", "type", "pseudoHover"], outputs: ["onClick"] }, { type: i5.GoogleMap, selector: "google-map", inputs: ["height", "width", "center", "zoom", "options", "mapTypeId"], outputs: ["authFailure", "boundsChanged", "centerChanged", "mapClick", "mapDblclick", "mapDrag", "mapDragend", "mapDragstart", "headingChanged", "idle", "maptypeidChanged", "mapMousemove", "mapMouseout", "mapMouseover", "projectionChanged", "mapRightclick", "tilesloaded", "tiltChanged", "zoomChanged"], exportAs: ["googleMap"] }, { type: i6.CustomerDetailsComponent, selector: "customer-details", inputs: ["customer", "config"], outputs: ["nextStep", "removeTask", "onClickPerformAction"] }, { type: i7.CustomerListComponent, selector: "customer-list", inputs: ["customers", "config"], outputs: ["nextStep", "removeTask", "filterTaskList", "onClickPerformAction"] }, { type: i8.KwikIDFormViewComponent, selector: "kwikid-form-view", inputs: ["allFormsData", "extraData", "apiCallResponse", "buttonClickResponse", "formConfig", "formData", "isMobileView", "popupFormCallback", "userConfig", "stepConfig"], outputs: ["getLogs", "getUnsavedDataState", "onActionShowPopupForm", "onClickApiCall", "onClickViewFile", "onClickFormFieldButton", "onClickGoBack", "onClickSaveForm", "onClickViewForms"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.TuiActiveZoneDirective, selector: "[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)", inputs: ["tuiActiveZoneParent"], outputs: ["tuiActiveZoneChange"], exportAs: ["tuiActiveZone"] }, { type: i11.TuiDropdownDirective, selector: "[tuiDropdown]:not(ng-container)", inputs: ["tuiDropdown"], exportAs: ["tuiDropdown"] }, { type: i11.TuiDropdownDriverDirective, selector: "[tuiDropdown]" }, { type: i11.TuiDropdownPositionDirective, selector: "[tuiDropdown]" }, { type: i11.TuiDropdownManualDirective, selector: "[tuiDropdown][tuiDropdownManual]", inputs: ["tuiDropdownManual"] }, { type: i11.TuiGroupDirective, selector: "[tuiGroup]:not(ng-container)", inputs: ["orientation", "adaptive", "collapsed", "rounded", "size"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.MapMarker, selector: "map-marker", inputs: ["title", "position", "label", "clickable", "options", "icon", "visible"], outputs: ["animationChanged", "mapClick", "clickableChanged", "cursorChanged", "mapDblclick", "mapDrag", "mapDragend", "draggableChanged", "mapDragstart", "flatChanged", "iconChanged", "mapMousedown", "mapMouseout", "mapMouseover", "mapMouseup", "positionChanged", "mapRightclick", "shapeChanged", "titleChanged", "visibleChanged", "zindexChanged"], exportAs: ["mapMarker"] }, { type: i5.MapDirectionsRenderer, selector: "map-directions-renderer", inputs: ["directions", "options"], outputs: ["directionsChanged"], exportAs: ["mapDirectionsRenderer"] }], pipes: { "async": i9.AsyncPipe } });
141
+ /** @nocollapse */ KwikIDAgentDashboardComponentV1.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: KwikIDAgentDashboardComponentV1, selector: "kwikid-agent-dashboard-v1", inputs: { agentInfo: "agentInfo", config: "config", userConfig: "userConfig", taskList: "taskList" }, outputs: { nextStep: "nextStep", addTask: "addTask", removeTask: "removeTask", filterTaskList: "filterTaskList", onClickPerformAction: "onClickPerformAction" }, host: { listeners: { "window:resize": "windowResizeWatcher($event)" } }, viewQueries: [{ propertyName: "infoWindow", first: true, predicate: MapInfoWindow, descendants: true }, { propertyName: "mapElement", first: true, predicate: ["map"], descendants: true, static: true }], ngImport: i0, template: "<div\n class=\"kwikid-agent-dashboard\"\n *ngIf=\"!loading\"\n>\n <div class=\"wrapper\">\n <header>\n <span (tuiActiveZoneChange)=\"onActiveZone($event)\">\n <kwikui-button\n [icon]=\"'tuiIconMenuLarge'\"\n (onClick)=\"onClick()\"\n appearance=\"mono\"\n size=\"m\"\n [tuiDropdown]=\"dropdownContent\"\n [tuiDropdownManual]=\"open\"\n (tuiObscured)=\"onObscured($event)\"\n ></kwikui-button>\n <img\n *ngIf=\"\n userConfig?.theme?.clientLogo &&\n config?.utilityFlags?.isShowClientLogo &&\n !config?.utilityFlags?.isAllowAddTask\n \"\n [src]=\"userConfig?.theme.clientLogo\"\n class=\"client-logo\"\n />\n <ng-template #dropdownContent>\n <div class=\"menu-dropdown\">\n <div class=\"menu-dropdown-header\">\n <div class=\"menu-dropdown-header-agent-name\">\n {{ agentInfo.agent_name ?? userConfig?.theme?.clientName }}\n </div>\n <div class=\"menu-dropdown-header-agent-id\">\n Agent ID: {{ agentInfo.agent_id }}\n </div>\n </div>\n <hr />\n <div\n class=\"menu-dropdown-body\"\n tuiGroup\n [collapsed]=\"true\"\n [rounded]=\"false\"\n [orientation]=\"'vertical'\"\n [size]=\"'m'\"\n >\n <kwikui-button\n appearance=\"mono\"\n class=\"menu-dropdown-buttons\"\n label=\"Refresh\"\n [icon]=\"'tuiIconRefreshCw'\"\n size=\"m\"\n type=\"button\"\n (onClick)=\"refresh()\"\n ></kwikui-button>\n <kwikui-button\n *ngIf=\"this.config?.maps?.isShowMaps\"\n appearance=\"mono\"\n class=\"menu-dropdown-buttons\"\n label=\"{{\n agentService.showMapview ? 'Hide Maps' : 'Show Maps'\n }}\"\n type=\"button\"\n icon=\"{{\n agentService.showMapview ? 'tuiIconEyeOff' : 'tuiIconEye'\n }}\"\n iconRight=\"\"\n [shape]=\"null\"\n size=\"m\"\n styles=\"padding: 0rem !important\"\n (onClick)=\"agentService.toggleMapview()\"\n ></kwikui-button>\n </div>\n <hr />\n <div class=\"menu-dropdown-footer\">\n <kwikui-button\n appearance=\"mono\"\n class=\"menu-dropdown-buttons\"\n label=\"Logout\"\n icon=\"tuiIconLogOut\"\n size=\"m\"\n type=\"button\"\n (onClick)=\"handleOnClickLogout()\"\n ></kwikui-button>\n </div>\n </div>\n </ng-template>\n </span>\n <div class=\"actions\">\n <kwikui-button\n *ngIf=\"config?.utilityFlags?.isAllowAddTask\"\n class=\"menu-dropdown-buttons\"\n type=\"button\"\n appearance=\"primary\"\n [label]=\"config?.formsConfig?.addTaskForm?.title ?? 'Add User'\"\n icon=\"tuiIconPlus\"\n shape=\"rounded\"\n size=\"s\"\n (onClick)=\"showDialog(template)\"\n ></kwikui-button>\n </div>\n </header>\n\n <div class=\"dashboard-body\">\n <div\n *ngIf=\"mapsLoaded\"\n [class]=\"agentService.showMapview ? 'map' : 'map-hidden'\"\n >\n <google-map\n *ngIf=\"config?.maps?.mapType == 'google-maps'\"\n [options]=\"this.googleMapsService.map\"\n height=\"100%\"\n width=\"100%\"\n >\n <map-marker\n #marker=\"mapMarker\"\n *ngFor=\"\n let markerPosition of this.googleMapsService.allMarkers;\n let index = index\n \"\n [position]=\"markerPosition\"\n [label]=\"{ text: String(index) }\"\n ></map-marker>\n <map-directions-renderer\n *ngIf=\"\n this.googleMapsService.directionsResults$\n | async as directionsResults\n \"\n [directions]=\"directionsResults\"\n [options]=\"this.googleMapsService.directionsRenderOption\"\n ></map-directions-renderer>\n </google-map>\n\n <div\n *ngIf=\"config?.maps?.mapType == 'open-street'\"\n id=\"map\"\n style=\"height: 100%\"\n ></div>\n </div>\n\n <div\n class=\"task-details\"\n *ngIf=\"\n !agentService.isMobileView &&\n agentService.currentTaskDetails != undefined &&\n !agentService.showMapview\n \"\n >\n <customer-details\n [customer]=\"agentService.currentTaskDetails\"\n [config]=\"config\"\n (nextStep)=\"handleOnClickNext($event)\"\n (removeTask)=\"handleOnClickRemoveTask($event)\"\n (onClickPerformAction)=\"handleOnClickPerformAction($event)\"\n ></customer-details>\n </div>\n\n <div\n class=\"no-task-details\"\n *ngIf=\"\n agentService.currentTaskDetails == undefined &&\n !agentService.isMobileView &&\n !agentService.showMapview\n \"\n >\n <img\n src=\"assets/No-Results.jpg\"\n class=\"no-task-img\"\n alt=\"No Task\"\n />\n <div>Select a Task to view it's details.</div>\n </div>\n\n <div class=\"customer-list\">\n <customer-list\n [customers]=\"taskList\"\n [config]=\"config\"\n (nextStep)=\"handleOnClickNext($event)\"\n (removeTask)=\"handleOnClickRemoveTask($event)\"\n (filterTaskList)=\"handleOnFilterTaskList($event)\"\n (onClickPerformAction)=\"handleOnClickPerformAction($event)\"\n ></customer-list>\n </div>\n </div>\n </div>\n</div>\n\n<div\n class=\"kwikid-agent-dashboard-loader\"\n *ngIf=\"loading\"\n>\n <span class=\"loader\"></span>\n</div>\n\n<ng-template\n #template\n let-observer\n>\n <div class=\"add-task-header\">\n <h2>{{ config?.formsConfig?.addTaskForm?.title ?? \"Create User\" }}</h2>\n <kwikui-button\n icon=\"tuiIconX\"\n id=\"\"\n styles=\"\"\n type=\"button\"\n appearance=\"mono\"\n [shape]=\"null\"\n size=\"m\"\n (onClick)=\"observer.complete()\"\n ></kwikui-button>\n </div>\n <kwikid-form-view\n [allFormsData]=\"allFormsData\"\n [formConfig]=\"config?.formsConfig?.addTaskForm\"\n [isMobileView]=\"true\"\n (onClickSaveForm)=\"this.handleOnClickSaveForm($event)\"\n ></kwikid-form-view>\n</ng-template>\n", styles: [".kwikid-agent-dashboard{display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;align-content:center;width:100%;height:100%;position:relative}.kwikid-agent-dashboard .wrapper{width:100%;height:100%;display:flex;flex-direction:column;align-content:center;justify-content:space-between;align-items:stretch}.kwikid-agent-dashboard .wrapper header{display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;grid-column-gap:1rem;column-gap:1rem;padding:1rem;max-height:80px;border:1px solid #cdcdcd}.kwikid-agent-dashboard .wrapper header .actions{display:flex;flex-direction:row;align-items:center}.kwikid-agent-dashboard .wrapper header .actions>*{margin-right:.5rem}.kwikid-agent-dashboard .wrapper .dashboard-body{display:flex;flex-direction:column;align-content:center;justify-content:center;align-items:stretch;flex:1;overflow:auto}.kwikid-agent-dashboard .wrapper .dashboard-body .map{width:100%;height:100%;position:relative;overflow:hidden}.kwikid-agent-dashboard .wrapper .dashboard-body .map-hidden{visibility:collapse}.kwikid-agent-dashboard .wrapper .dashboard-body .customer-list{width:100%;height:100%;overflow:hidden}@media screen and (min-width: 600px){.kwikid-agent-dashboard{display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;align-content:center;width:100%;height:100%}.kwikid-agent-dashboard .wrapper{width:100%;height:100%;display:flex;flex-direction:column;align-content:center;justify-content:space-between;align-items:stretch}.kwikid-agent-dashboard .wrapper header{display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;grid-column-gap:1rem;column-gap:1rem;padding:.75rem;max-height:80px;border:1px solid #cdcdcd}.kwikid-agent-dashboard .wrapper header .client-name{display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;font-size:1rem;font-weight:600}.kwikid-agent-dashboard .wrapper .dashboard-body{display:flex;flex-direction:row-reverse;align-content:center;justify-content:flex-end;align-items:stretch;overflow:auto}.kwikid-agent-dashboard .wrapper .dashboard-body .map{width:100%;height:100%;position:relative;overflow:hidden;border:1px solid #cdcdcd;border-radius:.5rem}.kwikid-agent-dashboard .wrapper .dashboard-body .map-hidden{visibility:collapse}.kwikid-agent-dashboard .wrapper .dashboard-body .task-details{width:100%;height:100%;position:relative;overflow:hidden;border:1px solid #cdcdcd}.kwikid-agent-dashboard .wrapper .dashboard-body .no-task-details{width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;grid-gap:.5rem;gap:.5rem;overflow:hidden;color:#555}.kwikid-agent-dashboard .wrapper .dashboard-body .no-task-details .no-task-img{height:100px;width:100px}.kwikid-agent-dashboard .wrapper .dashboard-body .customer-list{min-width:300px;max-width:320px;width:100%;height:100%;overflow:hidden;border:1px solid #cdcdcd}}.menu{position:absolute;transition:\"0.15s linear 0s\"}.kwikid-agent-dashboard-loader{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.75);display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center;z-index:100}.kwikid-agent-dashboard-loader .loader{width:48px;height:48px;border-radius:50%;display:inline-block;position:relative;border:3px solid;border-color:#fff #fff transparent;box-sizing:border-box;animation:rotation 1s linear infinite}.kwikid-agent-dashboard-loader .loader:after{content:\"\";box-sizing:border-box;position:absolute;left:0;right:0;top:0;bottom:0;margin:auto;border:3px solid;border-color:transparent var(--tui-primary) var(--tui-primary);width:24px;height:24px;border-radius:50%;animation:rotationBack .5s linear infinite;transform-origin:center center}@keyframes rotation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes rotationBack{0%{transform:rotate(0)}to{transform:rotate(-360deg)}}.kwikid-agent-dashboard-loader .t-loader{display:none!important}.add-task-header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:.5rem 0 1rem 1rem}:host{width:100%;height:100%}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{border-radius:10px}::-webkit-scrollbar-thumb{background:lightgray;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:gray}.menu-dropdown{display:flex;flex-direction:column;justify-content:space-between;align-items:stretch;grid-gap:.5rem;gap:.5rem;padding:1rem 1.5rem}.menu-dropdown .menu-dropdown-header{display:flex;flex-direction:column;align-content:flex-start;justify-content:space-between;align-items:flex-start;grid-gap:1rem;gap:1rem}.menu-dropdown .menu-dropdown-header .menu-dropdown-header-agent-name{font-size:1.2rem;margin:0 auto;font-weight:600}.menu-dropdown .menu-dropdown-header .menu-dropdown-header-agent-id{font-size:.8rem;margin:0 auto;font-weight:600}.menu-dropdown .menu-dropdown-buttons ::ng-deep .t-wrapper{padding:0!important}.client-logo{height:40px;width:-moz-fit-content;width:fit-content;margin:0 auto;padding-left:1rem}.client-name{display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;font-size:1rem;margin:0 auto;font-weight:600}\n"], components: [{ type: i4.KwikUIButtonComponent, selector: "kwikui-button", inputs: ["appearance", "class", "disabled", "icon", "iconRight", "id", "label", "shape", "showLoader", "size", "styles", "type", "pseudoHover"], outputs: ["onClick"] }, { type: i5.GoogleMap, selector: "google-map", inputs: ["height", "width", "center", "zoom", "options", "mapTypeId"], outputs: ["authFailure", "boundsChanged", "centerChanged", "mapClick", "mapDblclick", "mapDrag", "mapDragend", "mapDragstart", "headingChanged", "idle", "maptypeidChanged", "mapMousemove", "mapMouseout", "mapMouseover", "projectionChanged", "mapRightclick", "tilesloaded", "tiltChanged", "zoomChanged"], exportAs: ["googleMap"] }, { type: i6.CustomerDetailsComponent, selector: "customer-details", inputs: ["customer", "config"], outputs: ["nextStep", "removeTask", "onClickPerformAction"] }, { type: i7.CustomerListComponent, selector: "customer-list", inputs: ["customers", "config"], outputs: ["nextStep", "removeTask", "filterTaskList", "onClickPerformAction"] }, { type: i8.KwikIDFormViewComponent, selector: "kwikid-form-view", inputs: ["allFormsData", "extraData", "apiCallResponse", "buttonClickResponse", "formConfig", "formData", "isMobileView", "popupFormCallback", "userConfig", "stepConfig"], outputs: ["getLogs", "getUnsavedDataState", "onActionShowPopupForm", "onClickApiCall", "onClickViewFile", "onClickFormFieldButton", "onClickGoBack", "onClickSaveForm", "onClickViewForms"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.TuiActiveZoneDirective, selector: "[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)", inputs: ["tuiActiveZoneParent"], outputs: ["tuiActiveZoneChange"], exportAs: ["tuiActiveZone"] }, { type: i11.TuiDropdownDirective, selector: "[tuiDropdown]:not(ng-container)", inputs: ["tuiDropdown"], exportAs: ["tuiDropdown"] }, { type: i11.TuiDropdownDriverDirective, selector: "[tuiDropdown]" }, { type: i11.TuiDropdownPositionDirective, selector: "[tuiDropdown]" }, { type: i11.TuiDropdownManualDirective, selector: "[tuiDropdown][tuiDropdownManual]", inputs: ["tuiDropdownManual"] }, { type: i11.TuiGroupDirective, selector: "[tuiGroup]:not(ng-container)", inputs: ["orientation", "adaptive", "collapsed", "rounded", "size"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.MapMarker, selector: "map-marker", inputs: ["title", "position", "label", "clickable", "options", "icon", "visible"], outputs: ["animationChanged", "mapClick", "clickableChanged", "cursorChanged", "mapDblclick", "mapDrag", "mapDragend", "draggableChanged", "mapDragstart", "flatChanged", "iconChanged", "mapMousedown", "mapMouseout", "mapMouseover", "mapMouseup", "positionChanged", "mapRightclick", "shapeChanged", "titleChanged", "visibleChanged", "zindexChanged"], exportAs: ["mapMarker"] }, { type: i5.MapDirectionsRenderer, selector: "map-directions-renderer", inputs: ["directions", "options"], outputs: ["directionsChanged"], exportAs: ["mapDirectionsRenderer"] }], pipes: { "async": i9.AsyncPipe } });
142
142
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDAgentDashboardComponentV1, decorators: [{
143
143
  type: Component,
144
144
  args: [{
@@ -152,8 +152,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
152
152
  }] }]; }, propDecorators: { windowResizeWatcher: [{
153
153
  type: HostListener,
154
154
  args: ["window:resize", ["$event"]]
155
+ }], agentInfo: [{
156
+ type: Input
155
157
  }], config: [{
156
158
  type: Input
159
+ }], userConfig: [{
160
+ type: Input
157
161
  }], taskList: [{
158
162
  type: Input
159
163
  }], nextStep: [{
@@ -173,4 +177,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
173
177
  type: ViewChild,
174
178
  args: ["map", { static: true }]
175
179
  }] } });
176
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3dpa2lkLWFnZW50LWRhc2hib2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtYWdlbnQtZGFzaGJvYXJkL3NyYy9saWIvdjEva3dpa2lkLWFnZW50LWRhc2hib2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtYWdlbnQtZGFzaGJvYXJkL3NyYy9saWIvdjEva3dpa2lkLWFnZW50LWRhc2hib2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBR0EsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFhLE1BQU0sc0JBQXNCLENBQUM7QUFDaEUsT0FBTyxFQUFvQixnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFTdEMsTUFBTSxPQUFPLCtCQUErQjtJQStDMUMsWUFDUyxpQkFBb0MsRUFDcEMsWUFBMEIsRUFDMUIsVUFBc0IsRUFDckIsV0FBdUIsRUFDWSxhQUErQjtRQUpuRSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDckIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDWSxrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFyQzVFLFdBQU0sR0FBUSxFQUFFLENBQUM7UUFH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QyxRQUFRLENBQUM7Z0JBY3pDLE1BQU07c0JBREwsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxNQUFNO2dCQUlQLE9BQU87c0JBRE4sTUFBTTtnQkFJUCxVQUFVO3NCQURULE1BQU07Z0JBSVAsY0FBYztzQkFEYixNQUFNO2dCQUlQLG9CQUFvQjtzQkFEbkIsTUFBTTtnQkFPc0MsVUFBVTtzQkFBdEQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUVQLFVBQVU7c0JBQTdDLFNBQVM7dUJBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLW1hZ2ljLW51bWJlcnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWVtcHR5LWZ1bmN0aW9uICovXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBNYXBJbmZvV2luZG93LCBNYXBNYXJrZXIgfSBmcm9tIFwiQGFuZ3VsYXIvZ29vZ2xlLW1hcHNcIjtcbmltcG9ydCB7IFR1aURpYWxvZ0NvbnRleHQsIFR1aURpYWxvZ1NlcnZpY2UgfSBmcm9tIFwiQHRhaWdhLXVpL2NvcmVcIjtcbmltcG9ydCB7IFBvbHltb3JwaGV1c0NvbnRlbnQgfSBmcm9tIFwiQHRpbmtvZmYvbmctcG9seW1vcnBoZXVzXCI7XG5pbXBvcnQgeyBpc05vdEVtcHR5VmFsdWUgfSBmcm9tIFwia3dpa2lkLXRvb2xraXRcIjtcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgQWdlbnRTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvYWdlbnQuc2VydmljZVwiO1xuaW1wb3J0IHsgR29vZ2xlTWFwc1NlcnZpY2UgfSBmcm9tIFwiLi9zZXJ2aWNlcy9nb29nbGUtbWFwcy5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJrd2lraWQtYWdlbnQtZGFzaGJvYXJkLXYxXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4va3dpa2lkLWFnZW50LWRhc2hib2FyZC5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4va3dpa2lkLWFnZW50LWRhc2hib2FyZC5jb21wb25lbnQuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBLd2lrSURBZ2VudERhc2hib2FyZENvbXBvbmVudFYxIGltcGxlbWVudHMgT25Jbml0IHtcbiAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzpyZXNpemVcIiwgW1wiJGV2ZW50XCJdKVxuICB3aW5kb3dSZXNpemVXYXRjaGVyKCkge1xuICAgIGlmICh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggPCA2MDApIHtcbiAgICAgIHRoaXMuaXNNb2JpbGVWaWV3ID0gdHJ1ZTtcbiAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLmlzTW9iaWxlVmlldyA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNNb2JpbGVWaWV3ID0gZmFsc2U7XG4gICAgICB0aGlzLmFnZW50U2VydmljZS5pc01vYmlsZVZpZXcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBpc01vYmlsZVZpZXc7XG5cbiAgQElucHV0KClcbiAgY29uZmlnOiBhbnkgPSB7fTtcblxuICBASW5wdXQoKVxuICB0YXNrTGlzdDogQXJyYXk8YW55PiA9IFtdO1xuXG4gIEBPdXRwdXQoKVxuICBuZXh0U3RlcCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgYWRkVGFzayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgcmVtb3ZlVGFzayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgZmlsdGVyVGFza0xpc3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2xpY2tQZXJmb3JtQWN0aW9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGxvYWRpbmcgPSB0cnVlO1xuXG4gIG1hcDogYW55O1xuXG4gIEBWaWV3Q2hpbGQoTWFwSW5mb1dpbmRvdywgeyBzdGF0aWM6IGZhbHNlIH0pIGluZm9XaW5kb3c6IE1hcEluZm9XaW5kb3c7XG5cbiAgQFZpZXdDaGlsZChcIm1hcFwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBtYXBFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gIG1hcHNMb2FkZWQ6IGJvb2xlYW47XG5cbiAgZGlhbG9nU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBnb29nbGVNYXBzU2VydmljZTogR29vZ2xlTWFwc1NlcnZpY2UsXG4gICAgcHVibGljIGFnZW50U2VydmljZTogQWdlbnRTZXJ2aWNlLFxuICAgIHB1YmxpYyBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgaG9zdEVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgQEluamVjdChUdWlEaWFsb2dTZXJ2aWNlKSBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZ1NlcnZpY2U6IFR1aURpYWxvZ1NlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHRoaXMuYWdlbnRTZXJ2aWNlLmNvbmZpZyA9IHRoaXMuY29uZmlnO1xuICAgIHRoaXMuYWdlbnRTZXJ2aWNlLnNob3dNYXB2aWV3ID0gdGhpcy5jb25maWc/LmRhc2hib2FyZD8uaXNTaG93TWFwcyA/PyBmYWxzZTtcbiAgICB0aGlzLmFnZW50U2VydmljZS5hZGRUYXNrRm9ybSA9XG4gICAgICB0aGlzLmNvbmZpZz8uZGFzaGJvYXJkPy5hZGRUYXNrRm9ybSA/PyB0aGlzLmFnZW50U2VydmljZS5hZGRUYXNrRm9ybTtcblxuICAgIGlmIChcbiAgICAgIHRoaXMuY29uZmlnPy5kYXNoYm9hcmQ/Lm1hcFR5cGUgPT09IFwiZ29vZ2xlLW1hcHNcIiAmJlxuICAgICAgaXNOb3RFbXB0eVZhbHVlKHRoaXMuY29uZmlnPy5kYXNoYm9hcmQ/Lmdvb2dsZU1hcHNBUElLZXkpXG4gICAgKSB7XG4gICAgICB0aGlzLmxvYWRNYXBzKHRoaXMuY29uZmlnPy5kYXNoYm9hcmQ/Lmdvb2dsZU1hcHNBUElLZXkpLnN1YnNjcmliZShcbiAgICAgICAgKGxvYWRlZDogYm9vbGVhbikgPT4ge1xuICAgICAgICAgIHRoaXMubWFwc0xvYWRlZCA9IGxvYWRlZDtcbiAgICAgICAgICBpZiAobG9hZGVkKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkdvb2dsZSBNYXBzIEphdmFTY3JpcHQgQVBJIGxvYWRlZCBzdWNjZXNzZnVsbHkuXCIpO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAvLyBJbml0aWFsaXplIGFuZCByZW5kZXIgR29vZ2xlIE1hcCBoZXJlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJHb29nbGUgTWFwcyBKYXZhU2NyaXB0IEFQSSBmYWlsZWQgdG8gbG9hZC5cIik7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWFwc0xvYWRlZCA9IHRydWU7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMud2luZG93UmVzaXplV2F0Y2hlcigpO1xuICAgIH0sIDEwMDApO1xuICB9XG5cbiAgLy8gTG9hZCBHb29nbGUgTWFwc1xuICBsb2FkTWFwcyhhcGlLZXkpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB1cmwgPSBgaHR0cHM6Ly9tYXBzLmdvb2dsZWFwaXMuY29tL21hcHMvYXBpL2pzP2tleT0ke2FwaUtleX0mdj0zLmV4cCZsaWJyYXJpZXM9Z2VvbWV0cnksZHJhd2luZyxwbGFjZXNgO1xuICAgIHRoaXMuZ29vZ2xlTWFwc1NlcnZpY2UuYXBpS2V5ID0gYXBpS2V5O1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5qc29ucCh1cmwsIFwiY2FsbGJhY2tcIikucGlwZShcbiAgICAgIG1hcCgoKSA9PiB0cnVlKSxcbiAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgbG9hZGluZyBHb29nbGUgTWFwcyBKYXZhU2NyaXB0IEFQSS5cIik7XG4gICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBoYW5kbGVPbkNsaWNrTmV4dChlKSB7XG4gICAgdGhpcy5uZXh0U3RlcC5lbWl0KGUpO1xuICB9XG5cbiAgaGFuZGxlT25DbGlja0FkZFRhc2sodGFzaykge1xuICAgIHRoaXMuYWRkVGFzay5lbWl0KHRhc2spO1xuICB9XG5cbiAgaGFuZGxlT25DbGlja1JlbW92ZVRhc2sodGFzaykge1xuICAgIHRoaXMucmVtb3ZlVGFzay5lbWl0KHRhc2spO1xuICB9XG5cbiAgaGFuZGxlT25GaWx0ZXJUYXNrTGlzdChmaWx0ZXIpIHtcbiAgICB0aGlzLmZpbHRlclRhc2tMaXN0LmVtaXQoZmlsdGVyKTtcbiAgfVxuXG4gIHJlZnJlc2goKSB7XG4gICAgdGhpcy5oYW5kbGVPbkZpbHRlclRhc2tMaXN0KHt9KTtcbiAgfVxuXG4gIG9wZW4gPSBmYWxzZTtcblxuICBvbkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMub3BlbiA9ICF0aGlzLm9wZW47XG4gIH1cblxuICBhbGxGb3Jtc0RhdGEgPSB7fTtcblxuICBTdHJpbmcgPSBTdHJpbmc7XG5cbiAgb25PYnNjdXJlZChvYnNjdXJlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChvYnNjdXJlZCkge1xuICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgb25BY3RpdmVab25lKGFjdGl2ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMub3BlbiA9IGFjdGl2ZSAmJiB0aGlzLm9wZW47XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICBpZiAodGhpcy5kaWFsb2dTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuZGlhbG9nU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgc2hvd0RpYWxvZyhjb250ZW50OiBQb2x5bW9ycGhldXNDb250ZW50PFR1aURpYWxvZ0NvbnRleHQ+KTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dTdWJzY3JpcHRpb24gPSB0aGlzLmRpYWxvZ1NlcnZpY2VcbiAgICAgIC5vcGVuKGNvbnRlbnQsIHsgY2xvc2VhYmxlOiBmYWxzZSwgZGlzbWlzc2libGU6IGZhbHNlIH0pXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBvcGVuSW5mb1dpbmRvdyhtYXJrZXI6IE1hcE1hcmtlcikge1xuICAgIHRoaXMuaW5mb1dpbmRvdy5vcGVuKG1hcmtlcik7XG4gIH1cblxuICBoYW5kbGVPbkNsaWNrU2F2ZUZvcm0oZSkge1xuICAgIHRoaXMuaGFuZGxlT25DbGlja0FkZFRhc2soZS5kYXRhKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBoYW5kbGVPbkNsaWNrTG9nb3V0KCkge1xuICAgIHRoaXMuaGFuZGxlT25DbGlja1BlcmZvcm1BY3Rpb24oeyBhY3Rpb246IHsgdHlwZTogXCJsb2dvdXRcIiB9IH0pO1xuICB9XG5cbiAgaGFuZGxlT25DbGlja1BlcmZvcm1BY3Rpb24oZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DbGlja1BlcmZvcm1BY3Rpb24uZW1pdChldmVudCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJrd2lraWQtYWdlbnQtZGFzaGJvYXJkXCJcbiAgKm5nSWY9XCIhbG9hZGluZ1wiXG4+XG4gIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XG4gICAgPGhlYWRlcj5cbiAgICAgIDxzcGFuICh0dWlBY3RpdmVab25lQ2hhbmdlKT1cIm9uQWN0aXZlWm9uZSgkZXZlbnQpXCI+XG4gICAgICAgIDxrd2lrdWktYnV0dG9uXG4gICAgICAgICAgW2ljb25dPVwiJ3R1aUljb25NZW51TGFyZ2UnXCJcbiAgICAgICAgICAob25DbGljayk9XCJvbkNsaWNrKClcIlxuICAgICAgICAgIGFwcGVhcmFuY2U9XCJtb25vXCJcbiAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgW3R1aURyb3Bkb3duXT1cImRyb3Bkb3duQ29udGVudFwiXG4gICAgICAgICAgW3R1aURyb3Bkb3duTWFudWFsXT1cIm9wZW5cIlxuICAgICAgICAgICh0dWlPYnNjdXJlZCk9XCJvbk9ic2N1cmVkKCRldmVudClcIlxuICAgICAgICA+PC9rd2lrdWktYnV0dG9uPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2Ryb3Bkb3duQ29udGVudD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVudS1kcm9wZG93blwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtZHJvcGRvd24taGVhZGVyXCI+XG4gICAgICAgICAgICAgIDwhLS0gPGltZ1xuICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICBhZ2VudFNlcnZpY2UuY29uZmlnPy5jbGllbnRMb2dvICYmXG4gICAgICAgICAgICAgICAgICBhZ2VudFNlcnZpY2UuY29uZmlnPy5kYXNoYm9hcmQ/LmlzU2hvd0NsaWVudExvZ29cbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFtzcmNdPVwiYWdlbnRTZXJ2aWNlLmNvbmZpZy5jbGllbnRMb2dvXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNsaWVudC1sb2dvXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAhYWdlbnRTZXJ2aWNlLmNvbmZpZy5jbGllbnRMb2dvIHx8XG4gICAgICAgICAgICAgICAgICAhYWdlbnRTZXJ2aWNlLmNvbmZpZz8uZGFzaGJvYXJkPy5pc1Nob3dDbGllbnRMb2dvXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNsaWVudC1uYW1lXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxrd2lrdWktYnV0dG9uXG4gICAgICAgICAgICAgICAgICBbaWNvbl09XCIndHVpSWNvbkxpbmsnXCJcbiAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJtb25vXCJcbiAgICAgICAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgICAgICA+PC9rd2lrdWktYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAge3sgYWdlbnRTZXJ2aWNlLmNvbmZpZy5jbGllbnROYW1lIH19XG4gICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtZHJvcGRvd24taGVhZGVyLWFnZW50LW5hbWVcIj5cbiAgICAgICAgICAgICAgICB7eyBhZ2VudFNlcnZpY2UuY29uZmlnLmFnZW50TmFtZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtZHJvcGRvd24taGVhZGVyLWFnZW50LWlkXCI+XG4gICAgICAgICAgICAgICAgQWdlbnQgSUQ6IHt7IGFnZW50U2VydmljZS5jb25maWcuYWdlbnRJZCB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGhyIC8+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwibWVudS1kcm9wZG93bi1ib2R5XCJcbiAgICAgICAgICAgICAgdHVpR3JvdXBcbiAgICAgICAgICAgICAgW2NvbGxhcHNlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3JvdW5kZWRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBbb3JpZW50YXRpb25dPVwiJ3ZlcnRpY2FsJ1wiXG4gICAgICAgICAgICAgIFtzaXplXT1cIidtJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxrd2lrdWktYnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJhZ2VudFNlcnZpY2UuY29uZmlnPy5kYXNoYm9hcmQ/LmlzQWxsb3dBZGRUYXNrXCJcbiAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwibW9ub1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtZW51LWRyb3Bkb3duLWJ1dHRvbnNcIlxuICAgICAgICAgICAgICAgIGxhYmVsPVwiUmVmcmVzaFwiXG4gICAgICAgICAgICAgICAgW2ljb25dPVwiJ3R1aUljb25SZWZyZXNoQ3cnXCJcbiAgICAgICAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwicmVmcmVzaCgpXCJcbiAgICAgICAgICAgICAgPjwva3dpa3VpLWJ1dHRvbj5cbiAgICAgICAgICAgICAgPGt3aWt1aS1idXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cInRoaXMuY29uZmlnLmRhc2hib2FyZC5pc1Nob3dNYXBzXCJcbiAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwibW9ub1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtZW51LWRyb3Bkb3duLWJ1dHRvbnNcIlxuICAgICAgICAgICAgICAgIGxhYmVsPVwie3tcbiAgICAgICAgICAgICAgICAgIGFnZW50U2VydmljZS5zaG93TWFwdmlldyA/ICdIaWRlIE1hcHMnIDogJ1Nob3cgTWFwcydcbiAgICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgaWNvbj1cInt7XG4gICAgICAgICAgICAgICAgICBhZ2VudFNlcnZpY2Uuc2hvd01hcHZpZXcgPyAndHVpSWNvbkV5ZU9mZicgOiAndHVpSWNvbkV5ZSdcbiAgICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICAgICAgaWNvblJpZ2h0PVwiXCJcbiAgICAgICAgICAgICAgICBbc2hhcGVdPVwibnVsbFwiXG4gICAgICAgICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgICAgICAgIHN0eWxlcz1cInBhZGRpbmc6IDByZW0gIWltcG9ydGFudFwiXG4gICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiYWdlbnRTZXJ2aWNlLnRvZ2dsZU1hcHZpZXcoKVwiXG4gICAgICAgICAgICAgID48L2t3aWt1aS1idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxociAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtZHJvcGRvd24tZm9vdGVyXCI+XG4gICAgICAgICAgICAgIDxrd2lrdWktYnV0dG9uXG4gICAgICAgICAgICAgICAgYXBwZWFyYW5jZT1cIm1vbm9cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWVudS1kcm9wZG93bi1idXR0b25zXCJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIkxvZ291dFwiXG4gICAgICAgICAgICAgICAgaWNvbj1cInR1aUljb25Mb2dPdXRcIlxuICAgICAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAob25DbGljayk9XCJoYW5kbGVPbkNsaWNrTG9nb3V0KClcIlxuICAgICAgICAgICAgICA+PC9rd2lrdWktYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L3NwYW4+XG4gICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxuICAgICAgICA8a3dpa3VpLWJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiYWdlbnRTZXJ2aWNlLmNvbmZpZz8uZGFzaGJvYXJkPy5pc0FsbG93QWRkVGFza1wiXG4gICAgICAgICAgY2xhc3M9XCJtZW51LWRyb3Bkb3duLWJ1dHRvbnNcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGFwcGVhcmFuY2U9XCJwcmltYXJ5XCJcbiAgICAgICAgICBbbGFiZWxdPVwiXG4gICAgICAgICAgICBhZ2VudFNlcnZpY2UuY29uZmlnPy5kYXNoYm9hcmQ/LmFkZFRhc2tCdXR0b25MYWJlbCA/PyAnQWRkIFVzZXInXG4gICAgICAgICAgXCJcbiAgICAgICAgICBpY29uPVwidHVpSWNvblBsdXNcIlxuICAgICAgICAgIHNoYXBlPVwicm91bmRlZFwiXG4gICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgIChvbkNsaWNrKT1cInNob3dEaWFsb2codGVtcGxhdGUpXCJcbiAgICAgICAgPjwva3dpa3VpLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvaGVhZGVyPlxuXG4gICAgPGRpdiBjbGFzcz1cImRhc2hib2FyZC1ib2R5XCI+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwibWFwc0xvYWRlZFwiXG4gICAgICAgIFtjbGFzc109XCJhZ2VudFNlcnZpY2Uuc2hvd01hcHZpZXcgPyAnbWFwJyA6ICdtYXAtaGlkZGVuJ1wiXG4gICAgICA+XG4gICAgICAgIDxnb29nbGUtbWFwXG4gICAgICAgICAgKm5nSWY9XCJhZ2VudFNlcnZpY2UuY29uZmlnPy5kYXNoYm9hcmQ/Lm1hcFR5cGUgPT0gJ2dvb2dsZS1tYXBzJ1wiXG4gICAgICAgICAgW29wdGlvbnNdPVwidGhpcy5nb29nbGVNYXBzU2VydmljZS5tYXBcIlxuICAgICAgICAgIGhlaWdodD1cIjEwMCVcIlxuICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bWFwLW1hcmtlclxuICAgICAgICAgICAgI21hcmtlcj1cIm1hcE1hcmtlclwiXG4gICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgbGV0IG1hcmtlclBvc2l0aW9uIG9mIHRoaXMuZ29vZ2xlTWFwc1NlcnZpY2UuYWxsTWFya2VycztcbiAgICAgICAgICAgICAgbGV0IGluZGV4ID0gaW5kZXhcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbcG9zaXRpb25dPVwibWFya2VyUG9zaXRpb25cIlxuICAgICAgICAgICAgW2xhYmVsXT1cInsgdGV4dDogU3RyaW5nKGluZGV4KSB9XCJcbiAgICAgICAgICA+PC9tYXAtbWFya2VyPlxuICAgICAgICAgIDxtYXAtZGlyZWN0aW9ucy1yZW5kZXJlclxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgdGhpcy5nb29nbGVNYXBzU2VydmljZS5kaXJlY3Rpb25zUmVzdWx0cyRcbiAgICAgICAgICAgICAgICB8IGFzeW5jIGFzIGRpcmVjdGlvbnNSZXN1bHRzXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2RpcmVjdGlvbnNdPVwiZGlyZWN0aW9uc1Jlc3VsdHNcIlxuICAgICAgICAgICAgW29wdGlvbnNdPVwidGhpcy5nb29nbGVNYXBzU2VydmljZS5kaXJlY3Rpb25zUmVuZGVyT3B0aW9uXCJcbiAgICAgICAgICA+PC9tYXAtZGlyZWN0aW9ucy1yZW5kZXJlcj5cbiAgICAgICAgPC9nb29nbGUtbWFwPlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cImFnZW50U2VydmljZS5jb25maWc/LmRhc2hib2FyZD8ubWFwVHlwZSA9PSAnb3Blbi1zdHJlZXQnXCJcbiAgICAgICAgICBpZD1cIm1hcFwiXG4gICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDEwMCVcIlxuICAgICAgICA+PC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInRhc2stZGV0YWlsc1wiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgIWFnZW50U2VydmljZS5pc01vYmlsZVZpZXcgJiZcbiAgICAgICAgICBhZ2VudFNlcnZpY2UuY3VycmVudFRhc2tEZXRhaWxzICE9IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICFhZ2VudFNlcnZpY2Uuc2hvd01hcHZpZXdcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGN1c3RvbWVyLWRldGFpbHNcbiAgICAgICAgICBbY3VzdG9tZXJdPVwiYWdlbnRTZXJ2aWNlLmN1cnJlbnRUYXNrRGV0YWlsc1wiXG4gICAgICAgICAgW2NvbmZpZ109XCJjb25maWdcIlxuICAgICAgICAgIChuZXh0U3RlcCk9XCJoYW5kbGVPbkNsaWNrTmV4dCgkZXZlbnQpXCJcbiAgICAgICAgICAocmVtb3ZlVGFzayk9XCJoYW5kbGVPbkNsaWNrUmVtb3ZlVGFzaygkZXZlbnQpXCJcbiAgICAgICAgICAob25DbGlja1BlcmZvcm1BY3Rpb24pPVwiaGFuZGxlT25DbGlja1BlcmZvcm1BY3Rpb24oJGV2ZW50KVwiXG4gICAgICAgID48L2N1c3RvbWVyLWRldGFpbHM+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cIm5vLXRhc2stZGV0YWlsc1wiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgIWFnZW50U2VydmljZS5pc01vYmlsZVZpZXcgJiZcbiAgICAgICAgICBhZ2VudFNlcnZpY2UuY3VycmVudFRhc2tEZXRhaWxzID09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICFhZ2VudFNlcnZpY2Uuc2hvd01hcHZpZXdcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGltZ1xuICAgICAgICAgIHNyYz1cImFzc2V0cy9Oby1SZXN1bHRzLmpwZ1wiXG4gICAgICAgICAgY2xhc3M9XCJuby10YXNrLWltZ1wiXG4gICAgICAgICAgYWx0PVwiTm8gVGFza1wiXG4gICAgICAgIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJcIj5TZWxlY3QgYSBUYXNrIHRvIHZpZXcgaXQncyBkZXRhaWxzLjwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b21lci1saXN0XCI+XG4gICAgICAgIDxjdXN0b21lci1saXN0XG4gICAgICAgICAgW2N1c3RvbWVyc109XCJ0YXNrTGlzdFwiXG4gICAgICAgICAgW2NvbmZpZ109XCJjb25maWdcIlxuICAgICAgICAgIChuZXh0U3RlcCk9XCJoYW5kbGVPbkNsaWNrTmV4dCgkZXZlbnQpXCJcbiAgICAgICAgICAocmVtb3ZlVGFzayk9XCJoYW5kbGVPbkNsaWNrUmVtb3ZlVGFzaygkZXZlbnQpXCJcbiAgICAgICAgICAoZmlsdGVyVGFza0xpc3QpPVwiaGFuZGxlT25GaWx0ZXJUYXNrTGlzdCgkZXZlbnQpXCJcbiAgICAgICAgICAob25DbGlja1BlcmZvcm1BY3Rpb24pPVwiaGFuZGxlT25DbGlja1BlcmZvcm1BY3Rpb24oJGV2ZW50KVwiXG4gICAgICAgID48L2N1c3RvbWVyLWxpc3Q+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdlxuICBjbGFzcz1cImt3aWtpZC1hZ2VudC1kYXNoYm9hcmQtbG9hZGVyXCJcbiAgKm5nSWY9XCJsb2FkaW5nXCJcbj5cbiAgPHNwYW4gY2xhc3M9XCJsb2FkZXJcIj48L3NwYW4+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlXG4gICN0ZW1wbGF0ZVxuICBsZXQtb2JzZXJ2ZXJcbj5cbiAgPGRpdiBjbGFzcz1cImFkZC10YXNrLWhlYWRlclwiPlxuICAgIDxoMj57eyBhZ2VudFNlcnZpY2U/LmFkZFRhc2tGb3JtPy50aXRsZSA/PyBcIkNyZWF0ZSBVc2VyXCIgfX08L2gyPlxuICAgIDxrd2lrdWktYnV0dG9uXG4gICAgICBpY29uPVwidHVpSWNvblhcIlxuICAgICAgaWQ9XCJcIlxuICAgICAgc3R5bGVzPVwiXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgYXBwZWFyYW5jZT1cIm1vbm9cIlxuICAgICAgW3NoYXBlXT1cIm51bGxcIlxuICAgICAgc2l6ZT1cIm1cIlxuICAgICAgKG9uQ2xpY2spPVwib2JzZXJ2ZXIuY29tcGxldGUoKVwiXG4gICAgPjwva3dpa3VpLWJ1dHRvbj5cbiAgPC9kaXY+XG4gIDxrd2lraWQtZm9ybS12aWV3XG4gICAgW2FsbEZvcm1zRGF0YV09XCJhbGxGb3Jtc0RhdGFcIlxuICAgIFtmb3JtQ29uZmlnXT1cImFnZW50U2VydmljZS5hZGRUYXNrRm9ybVwiXG4gICAgW2lzTW9iaWxlVmlld109XCJ0cnVlXCJcbiAgICAob25DbGlja1NhdmVGb3JtKT1cInRoaXMuaGFuZGxlT25DbGlja1NhdmVGb3JtKCRldmVudClcIlxuICA+PC9rd2lraWQtZm9ybS12aWV3PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3dpa2lkLWFnZW50LWRhc2hib2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtYWdlbnQtZGFzaGJvYXJkL3NyYy9saWIvdjEva3dpa2lkLWFnZW50LWRhc2hib2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtYWdlbnQtZGFzaGJvYXJkL3NyYy9saWIvdjEva3dpa2lkLWFnZW50LWRhc2hib2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBR0EsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFhLE1BQU0sc0JBQXNCLENBQUM7QUFDaEUsT0FBTyxFQUFvQixnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFTdEMsTUFBTSxPQUFPLCtCQUErQjtJQXFEMUMsWUFDUyxpQkFBb0MsRUFDcEMsWUFBMEIsRUFDMUIsVUFBc0IsRUFDckIsV0FBdUIsRUFDWSxhQUErQjtRQUpuRSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDckIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDWSxrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUEzQzVFLGNBQVMsR0FBUSxFQUFFLENBQUM7UUFH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Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLFFBQVE7c0JBRFAsTUFBTTtnQkFJUCxPQUFPO3NCQUROLE1BQU07Z0JBSVAsVUFBVTtzQkFEVCxNQUFNO2dCQUlQLGNBQWM7c0JBRGIsTUFBTTtnQkFJUCxvQkFBb0I7c0JBRG5CLE1BQU07Z0JBT3NDLFVBQVU7c0JBQXRELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFUCxVQUFVO3NCQUE3QyxTQUFTO3VCQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1tYWdpYy1udW1iZXJzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1lbXB0eS1mdW5jdGlvbiAqL1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTWFwSW5mb1dpbmRvdywgTWFwTWFya2VyIH0gZnJvbSBcIkBhbmd1bGFyL2dvb2dsZS1tYXBzXCI7XG5pbXBvcnQgeyBUdWlEaWFsb2dDb250ZXh0LCBUdWlEaWFsb2dTZXJ2aWNlIH0gZnJvbSBcIkB0YWlnYS11aS9jb3JlXCI7XG5pbXBvcnQgeyBQb2x5bW9ycGhldXNDb250ZW50IH0gZnJvbSBcIkB0aW5rb2ZmL25nLXBvbHltb3JwaGV1c1wiO1xuaW1wb3J0IHsgaXNOb3RFbXB0eVZhbHVlIH0gZnJvbSBcImt3aWtpZC10b29sa2l0XCI7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IEFnZW50U2VydmljZSB9IGZyb20gXCIuL3NlcnZpY2VzL2FnZW50LnNlcnZpY2VcIjtcbmltcG9ydCB7IEdvb2dsZU1hcHNTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvZ29vZ2xlLW1hcHMuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwia3dpa2lkLWFnZW50LWRhc2hib2FyZC12MVwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2t3aWtpZC1hZ2VudC1kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL2t3aWtpZC1hZ2VudC1kYXNoYm9hcmQuY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgS3dpa0lEQWdlbnREYXNoYm9hcmRDb21wb25lbnRWMSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBIb3N0TGlzdGVuZXIoXCJ3aW5kb3c6cmVzaXplXCIsIFtcIiRldmVudFwiXSlcbiAgd2luZG93UmVzaXplV2F0Y2hlcigpIHtcbiAgICBpZiAodGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIDwgNjAwKSB7XG4gICAgICB0aGlzLmlzTW9iaWxlVmlldyA9IHRydWU7XG4gICAgICB0aGlzLmFnZW50U2VydmljZS5pc01vYmlsZVZpZXcgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzTW9iaWxlVmlldyA9IGZhbHNlO1xuICAgICAgdGhpcy5hZ2VudFNlcnZpY2UuaXNNb2JpbGVWaWV3ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgaXNNb2JpbGVWaWV3O1xuXG4gIEBJbnB1dCgpXG4gIGFnZW50SW5mbzogYW55ID0ge307XG5cbiAgQElucHV0KClcbiAgY29uZmlnOiBhbnkgPSB7fTtcblxuICBASW5wdXQoKVxuICB1c2VyQ29uZmlnOiBhbnkgPSB7fTtcblxuICBASW5wdXQoKVxuICB0YXNrTGlzdDogQXJyYXk8YW55PiA9IFtdO1xuXG4gIEBPdXRwdXQoKVxuICBuZXh0U3RlcCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgYWRkVGFzayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgcmVtb3ZlVGFzayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgZmlsdGVyVGFza0xpc3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2xpY2tQZXJmb3JtQWN0aW9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGxvYWRpbmcgPSB0cnVlO1xuXG4gIG1hcDogYW55O1xuXG4gIEBWaWV3Q2hpbGQoTWFwSW5mb1dpbmRvdywgeyBzdGF0aWM6IGZhbHNlIH0pIGluZm9XaW5kb3c6IE1hcEluZm9XaW5kb3c7XG5cbiAgQFZpZXdDaGlsZChcIm1hcFwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBtYXBFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gIG1hcHNMb2FkZWQ6IGJvb2xlYW47XG5cbiAgZGlhbG9nU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBnb29nbGVNYXBzU2VydmljZTogR29vZ2xlTWFwc1NlcnZpY2UsXG4gICAgcHVibGljIGFnZW50U2VydmljZTogQWdlbnRTZXJ2aWNlLFxuICAgIHB1YmxpYyBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgaG9zdEVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgQEluamVjdChUdWlEaWFsb2dTZXJ2aWNlKSBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZ1NlcnZpY2U6IFR1aURpYWxvZ1NlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHRoaXMuYWdlbnRTZXJ2aWNlLmNvbmZpZyA9IHRoaXMuY29uZmlnO1xuICAgIHRoaXMuYWdlbnRTZXJ2aWNlLnNob3dNYXB2aWV3ID0gdGhpcy5jb25maWc/Lm1hcHM/LmlzU2hvd01hcHMgPz8gZmFsc2U7XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLmNvbmZpZz8ubWFwcz8ubWFwVHlwZSA9PT0gXCJnb29nbGUtbWFwc1wiICYmXG4gICAgICBpc05vdEVtcHR5VmFsdWUodGhpcy5jb25maWc/Lm1hcHM/LmFwaUtleSlcbiAgICApIHtcbiAgICAgIHRoaXMubG9hZE1hcHModGhpcy5jb25maWc/Lm1hcHM/LmFwaUtleSkuc3Vic2NyaWJlKChsb2FkZWQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgdGhpcy5tYXBzTG9hZGVkID0gbG9hZGVkO1xuICAgICAgICBpZiAobG9hZGVkKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coXCJHb29nbGUgTWFwcyBKYXZhU2NyaXB0IEFQSSBsb2FkZWQgc3VjY2Vzc2Z1bGx5LlwiKTtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAvLyBJbml0aWFsaXplIGFuZCByZW5kZXIgR29vZ2xlIE1hcCBoZXJlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIkdvb2dsZSBNYXBzIEphdmFTY3JpcHQgQVBJIGZhaWxlZCB0byBsb2FkLlwiKTtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWFwc0xvYWRlZCA9IHRydWU7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMud2luZG93UmVzaXplV2F0Y2hlcigpO1xuICAgIH0sIDEwMDApO1xuICB9XG5cbiAgLy8gTG9hZCBHb29nbGUgTWFwc1xuICBsb2FkTWFwcyhhcGlLZXkpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB1cmwgPSBgaHR0cHM6Ly9tYXBzLmdvb2dsZWFwaXMuY29tL21hcHMvYXBpL2pzP2tleT0ke2FwaUtleX0mdj0zLmV4cCZsaWJyYXJpZXM9Z2VvbWV0cnksZHJhd2luZyxwbGFjZXNgO1xuICAgIHRoaXMuZ29vZ2xlTWFwc1NlcnZpY2UuYXBpS2V5ID0gYXBpS2V5O1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5qc29ucCh1cmwsIFwiY2FsbGJhY2tcIikucGlwZShcbiAgICAgIG1hcCgoKSA9PiB0cnVlKSxcbiAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgbG9hZGluZyBHb29nbGUgTWFwcyBKYXZhU2NyaXB0IEFQSS5cIik7XG4gICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBoYW5kbGVPbkNsaWNrTmV4dChlKSB7XG4gICAgdGhpcy5uZXh0U3RlcC5lbWl0KGUpO1xuICB9XG5cbiAgaGFuZGxlT25DbGlja0FkZFRhc2sodGFzaykge1xuICAgIHRoaXMuYWRkVGFzay5lbWl0KHRhc2spO1xuICB9XG5cbiAgaGFuZGxlT25DbGlja1JlbW92ZVRhc2sodGFzaykge1xuICAgIHRoaXMucmVtb3ZlVGFzay5lbWl0KHRhc2spO1xuICB9XG5cbiAgaGFuZGxlT25GaWx0ZXJUYXNrTGlzdChmaWx0ZXIpIHtcbiAgICB0aGlzLmZpbHRlclRhc2tMaXN0LmVtaXQoZmlsdGVyKTtcbiAgfVxuXG4gIHJlZnJlc2goKSB7XG4gICAgdGhpcy5oYW5kbGVPbkZpbHRlclRhc2tMaXN0KHt9KTtcbiAgfVxuXG4gIG9wZW4gPSBmYWxzZTtcblxuICBvbkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMub3BlbiA9ICF0aGlzLm9wZW47XG4gIH1cblxuICBhbGxGb3Jtc0RhdGEgPSB7fTtcblxuICBTdHJpbmcgPSBTdHJpbmc7XG5cbiAgb25PYnNjdXJlZChvYnNjdXJlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChvYnNjdXJlZCkge1xuICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgb25BY3RpdmVab25lKGFjdGl2ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMub3BlbiA9IGFjdGl2ZSAmJiB0aGlzLm9wZW47XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICBpZiAodGhpcy5kaWFsb2dTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuZGlhbG9nU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgc2hvd0RpYWxvZyhjb250ZW50OiBQb2x5bW9ycGhldXNDb250ZW50PFR1aURpYWxvZ0NvbnRleHQ+KTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dTdWJzY3JpcHRpb24gPSB0aGlzLmRpYWxvZ1NlcnZpY2VcbiAgICAgIC5vcGVuKGNvbnRlbnQsIHsgY2xvc2VhYmxlOiBmYWxzZSwgZGlzbWlzc2libGU6IGZhbHNlIH0pXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBvcGVuSW5mb1dpbmRvdyhtYXJrZXI6IE1hcE1hcmtlcikge1xuICAgIHRoaXMuaW5mb1dpbmRvdy5vcGVuKG1hcmtlcik7XG4gIH1cblxuICBoYW5kbGVPbkNsaWNrU2F2ZUZvcm0oZSkge1xuICAgIHRoaXMuaGFuZGxlT25DbGlja0FkZFRhc2soZS5kYXRhKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBoYW5kbGVPbkNsaWNrTG9nb3V0KCkge1xuICAgIHRoaXMuaGFuZGxlT25DbGlja1BlcmZvcm1BY3Rpb24oeyBhY3Rpb246IHsgdHlwZTogXCJsb2dvdXRcIiB9IH0pO1xuICB9XG5cbiAgaGFuZGxlT25DbGlja1BlcmZvcm1BY3Rpb24oZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DbGlja1BlcmZvcm1BY3Rpb24uZW1pdChldmVudCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJrd2lraWQtYWdlbnQtZGFzaGJvYXJkXCJcbiAgKm5nSWY9XCIhbG9hZGluZ1wiXG4+XG4gIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XG4gICAgPGhlYWRlcj5cbiAgICAgIDxzcGFuICh0dWlBY3RpdmVab25lQ2hhbmdlKT1cIm9uQWN0aXZlWm9uZSgkZXZlbnQpXCI+XG4gICAgICAgIDxrd2lrdWktYnV0dG9uXG4gICAgICAgICAgW2ljb25dPVwiJ3R1aUljb25NZW51TGFyZ2UnXCJcbiAgICAgICAgICAob25DbGljayk9XCJvbkNsaWNrKClcIlxuICAgICAgICAgIGFwcGVhcmFuY2U9XCJtb25vXCJcbiAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgW3R1aURyb3Bkb3duXT1cImRyb3Bkb3duQ29udGVudFwiXG4gICAgICAgICAgW3R1aURyb3Bkb3duTWFudWFsXT1cIm9wZW5cIlxuICAgICAgICAgICh0dWlPYnNjdXJlZCk9XCJvbk9ic2N1cmVkKCRldmVudClcIlxuICAgICAgICA+PC9rd2lrdWktYnV0dG9uPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIHVzZXJDb25maWc/LnRoZW1lPy5jbGllbnRMb2dvICYmXG4gICAgICAgICAgICBjb25maWc/LnV0aWxpdHlGbGFncz8uaXNTaG93Q2xpZW50TG9nbyAmJlxuICAgICAgICAgICAgIWNvbmZpZz8udXRpbGl0eUZsYWdzPy5pc0FsbG93QWRkVGFza1xuICAgICAgICAgIFwiXG4gICAgICAgICAgW3NyY109XCJ1c2VyQ29uZmlnPy50aGVtZS5jbGllbnRMb2dvXCJcbiAgICAgICAgICBjbGFzcz1cImNsaWVudC1sb2dvXCJcbiAgICAgICAgLz5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNkcm9wZG93bkNvbnRlbnQ+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtZHJvcGRvd25cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW51LWRyb3Bkb3duLWhlYWRlclwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVudS1kcm9wZG93bi1oZWFkZXItYWdlbnQtbmFtZVwiPlxuICAgICAgICAgICAgICAgIHt7IGFnZW50SW5mby5hZ2VudF9uYW1lID8/IHVzZXJDb25maWc/LnRoZW1lPy5jbGllbnROYW1lIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVudS1kcm9wZG93bi1oZWFkZXItYWdlbnQtaWRcIj5cbiAgICAgICAgICAgICAgICBBZ2VudCBJRDoge3sgYWdlbnRJbmZvLmFnZW50X2lkIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8aHIgLz5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJtZW51LWRyb3Bkb3duLWJvZHlcIlxuICAgICAgICAgICAgICB0dWlHcm91cFxuICAgICAgICAgICAgICBbY29sbGFwc2VkXT1cInRydWVcIlxuICAgICAgICAgICAgICBbcm91bmRlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgIFtvcmllbnRhdGlvbl09XCIndmVydGljYWwnXCJcbiAgICAgICAgICAgICAgW3NpemVdPVwiJ20nXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGt3aWt1aS1idXR0b25cbiAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwibW9ub1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtZW51LWRyb3Bkb3duLWJ1dHRvbnNcIlxuICAgICAgICAgICAgICAgIGxhYmVsPVwiUmVmcmVzaFwiXG4gICAgICAgICAgICAgICAgW2ljb25dPVwiJ3R1aUljb25SZWZyZXNoQ3cnXCJcbiAgICAgICAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwicmVmcmVzaCgpXCJcbiAgICAgICAgICAgICAgPjwva3dpa3VpLWJ1dHRvbj5cbiAgICAgICAgICAgICAgPGt3aWt1aS1idXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cInRoaXMuY29uZmlnPy5tYXBzPy5pc1Nob3dNYXBzXCJcbiAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwibW9ub1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtZW51LWRyb3Bkb3duLWJ1dHRvbnNcIlxuICAgICAgICAgICAgICAgIGxhYmVsPVwie3tcbiAgICAgICAgICAgICAgICAgIGFnZW50U2VydmljZS5zaG93TWFwdmlldyA/ICdIaWRlIE1hcHMnIDogJ1Nob3cgTWFwcydcbiAgICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgaWNvbj1cInt7XG4gICAgICAgICAgICAgICAgICBhZ2VudFNlcnZpY2Uuc2hvd01hcHZpZXcgPyAndHVpSWNvbkV5ZU9mZicgOiAndHVpSWNvbkV5ZSdcbiAgICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICAgICAgaWNvblJpZ2h0PVwiXCJcbiAgICAgICAgICAgICAgICBbc2hhcGVdPVwibnVsbFwiXG4gICAgICAgICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgICAgICAgIHN0eWxlcz1cInBhZGRpbmc6IDByZW0gIWltcG9ydGFudFwiXG4gICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiYWdlbnRTZXJ2aWNlLnRvZ2dsZU1hcHZpZXcoKVwiXG4gICAgICAgICAgICAgID48L2t3aWt1aS1idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxociAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtZHJvcGRvd24tZm9vdGVyXCI+XG4gICAgICAgICAgICAgIDxrd2lrdWktYnV0dG9uXG4gICAgICAgICAgICAgICAgYXBwZWFyYW5jZT1cIm1vbm9cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWVudS1kcm9wZG93bi1idXR0b25zXCJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIkxvZ291dFwiXG4gICAgICAgICAgICAgICAgaWNvbj1cInR1aUljb25Mb2dPdXRcIlxuICAgICAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAob25DbGljayk9XCJoYW5kbGVPbkNsaWNrTG9nb3V0KClcIlxuICAgICAgICAgICAgICA+PC9rd2lrdWktYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L3NwYW4+XG4gICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxuICAgICAgICA8a3dpa3VpLWJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiY29uZmlnPy51dGlsaXR5RmxhZ3M/LmlzQWxsb3dBZGRUYXNrXCJcbiAgICAgICAgICBjbGFzcz1cIm1lbnUtZHJvcGRvd24tYnV0dG9uc1wiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgYXBwZWFyYW5jZT1cInByaW1hcnlcIlxuICAgICAgICAgIFtsYWJlbF09XCJjb25maWc/LmZvcm1zQ29uZmlnPy5hZGRUYXNrRm9ybT8udGl0bGUgPz8gJ0FkZCBVc2VyJ1wiXG4gICAgICAgICAgaWNvbj1cInR1aUljb25QbHVzXCJcbiAgICAgICAgICBzaGFwZT1cInJvdW5kZWRcIlxuICAgICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgICAob25DbGljayk9XCJzaG93RGlhbG9nKHRlbXBsYXRlKVwiXG4gICAgICAgID48L2t3aWt1aS1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2hlYWRlcj5cblxuICAgIDxkaXYgY2xhc3M9XCJkYXNoYm9hcmQtYm9keVwiPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cIm1hcHNMb2FkZWRcIlxuICAgICAgICBbY2xhc3NdPVwiYWdlbnRTZXJ2aWNlLnNob3dNYXB2aWV3ID8gJ21hcCcgOiAnbWFwLWhpZGRlbidcIlxuICAgICAgPlxuICAgICAgICA8Z29vZ2xlLW1hcFxuICAgICAgICAgICpuZ0lmPVwiY29uZmlnPy5tYXBzPy5tYXBUeXBlID09ICdnb29nbGUtbWFwcydcIlxuICAgICAgICAgIFtvcHRpb25zXT1cInRoaXMuZ29vZ2xlTWFwc1NlcnZpY2UubWFwXCJcbiAgICAgICAgICBoZWlnaHQ9XCIxMDAlXCJcbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICA+XG4gICAgICAgICAgPG1hcC1tYXJrZXJcbiAgICAgICAgICAgICNtYXJrZXI9XCJtYXBNYXJrZXJcIlxuICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgIGxldCBtYXJrZXJQb3NpdGlvbiBvZiB0aGlzLmdvb2dsZU1hcHNTZXJ2aWNlLmFsbE1hcmtlcnM7XG4gICAgICAgICAgICAgIGxldCBpbmRleCA9IGluZGV4XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3Bvc2l0aW9uXT1cIm1hcmtlclBvc2l0aW9uXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJ7IHRleHQ6IFN0cmluZyhpbmRleCkgfVwiXG4gICAgICAgICAgPjwvbWFwLW1hcmtlcj5cbiAgICAgICAgICA8bWFwLWRpcmVjdGlvbnMtcmVuZGVyZXJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIHRoaXMuZ29vZ2xlTWFwc1NlcnZpY2UuZGlyZWN0aW9uc1Jlc3VsdHMkXG4gICAgICAgICAgICAgICAgfCBhc3luYyBhcyBkaXJlY3Rpb25zUmVzdWx0c1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtkaXJlY3Rpb25zXT1cImRpcmVjdGlvbnNSZXN1bHRzXCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cInRoaXMuZ29vZ2xlTWFwc1NlcnZpY2UuZGlyZWN0aW9uc1JlbmRlck9wdGlvblwiXG4gICAgICAgICAgPjwvbWFwLWRpcmVjdGlvbnMtcmVuZGVyZXI+XG4gICAgICAgIDwvZ29vZ2xlLW1hcD5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJjb25maWc/Lm1hcHM/Lm1hcFR5cGUgPT0gJ29wZW4tc3RyZWV0J1wiXG4gICAgICAgICAgaWQ9XCJtYXBcIlxuICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAxMDAlXCJcbiAgICAgICAgPjwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ0YXNrLWRldGFpbHNcIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICFhZ2VudFNlcnZpY2UuaXNNb2JpbGVWaWV3ICYmXG4gICAgICAgICAgYWdlbnRTZXJ2aWNlLmN1cnJlbnRUYXNrRGV0YWlscyAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAhYWdlbnRTZXJ2aWNlLnNob3dNYXB2aWV3XG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxjdXN0b21lci1kZXRhaWxzXG4gICAgICAgICAgW2N1c3RvbWVyXT1cImFnZW50U2VydmljZS5jdXJyZW50VGFza0RldGFpbHNcIlxuICAgICAgICAgIFtjb25maWddPVwiY29uZmlnXCJcbiAgICAgICAgICAobmV4dFN0ZXApPVwiaGFuZGxlT25DbGlja05leHQoJGV2ZW50KVwiXG4gICAgICAgICAgKHJlbW92ZVRhc2spPVwiaGFuZGxlT25DbGlja1JlbW92ZVRhc2soJGV2ZW50KVwiXG4gICAgICAgICAgKG9uQ2xpY2tQZXJmb3JtQWN0aW9uKT1cImhhbmRsZU9uQ2xpY2tQZXJmb3JtQWN0aW9uKCRldmVudClcIlxuICAgICAgICA+PC9jdXN0b21lci1kZXRhaWxzPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJuby10YXNrLWRldGFpbHNcIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGFnZW50U2VydmljZS5jdXJyZW50VGFza0RldGFpbHMgPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgIWFnZW50U2VydmljZS5pc01vYmlsZVZpZXcgJiZcbiAgICAgICAgICAhYWdlbnRTZXJ2aWNlLnNob3dNYXB2aWV3XG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICBzcmM9XCJhc3NldHMvTm8tUmVzdWx0cy5qcGdcIlxuICAgICAgICAgIGNsYXNzPVwibm8tdGFzay1pbWdcIlxuICAgICAgICAgIGFsdD1cIk5vIFRhc2tcIlxuICAgICAgICAvPlxuICAgICAgICA8ZGl2PlNlbGVjdCBhIFRhc2sgdG8gdmlldyBpdCdzIGRldGFpbHMuPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbWVyLWxpc3RcIj5cbiAgICAgICAgPGN1c3RvbWVyLWxpc3RcbiAgICAgICAgICBbY3VzdG9tZXJzXT1cInRhc2tMaXN0XCJcbiAgICAgICAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgICAgICAgKG5leHRTdGVwKT1cImhhbmRsZU9uQ2xpY2tOZXh0KCRldmVudClcIlxuICAgICAgICAgIChyZW1vdmVUYXNrKT1cImhhbmRsZU9uQ2xpY2tSZW1vdmVUYXNrKCRldmVudClcIlxuICAgICAgICAgIChmaWx0ZXJUYXNrTGlzdCk9XCJoYW5kbGVPbkZpbHRlclRhc2tMaXN0KCRldmVudClcIlxuICAgICAgICAgIChvbkNsaWNrUGVyZm9ybUFjdGlvbik9XCJoYW5kbGVPbkNsaWNrUGVyZm9ybUFjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgPjwvY3VzdG9tZXItbGlzdD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2XG4gIGNsYXNzPVwia3dpa2lkLWFnZW50LWRhc2hib2FyZC1sb2FkZXJcIlxuICAqbmdJZj1cImxvYWRpbmdcIlxuPlxuICA8c3BhbiBjbGFzcz1cImxvYWRlclwiPjwvc3Bhbj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGVcbiAgI3RlbXBsYXRlXG4gIGxldC1vYnNlcnZlclxuPlxuICA8ZGl2IGNsYXNzPVwiYWRkLXRhc2staGVhZGVyXCI+XG4gICAgPGgyPnt7IGNvbmZpZz8uZm9ybXNDb25maWc/LmFkZFRhc2tGb3JtPy50aXRsZSA/PyBcIkNyZWF0ZSBVc2VyXCIgfX08L2gyPlxuICAgIDxrd2lrdWktYnV0dG9uXG4gICAgICBpY29uPVwidHVpSWNvblhcIlxuICAgICAgaWQ9XCJcIlxuICAgICAgc3R5bGVzPVwiXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgYXBwZWFyYW5jZT1cIm1vbm9cIlxuICAgICAgW3NoYXBlXT1cIm51bGxcIlxuICAgICAgc2l6ZT1cIm1cIlxuICAgICAgKG9uQ2xpY2spPVwib2JzZXJ2ZXIuY29tcGxldGUoKVwiXG4gICAgPjwva3dpa3VpLWJ1dHRvbj5cbiAgPC9kaXY+XG4gIDxrd2lraWQtZm9ybS12aWV3XG4gICAgW2FsbEZvcm1zRGF0YV09XCJhbGxGb3Jtc0RhdGFcIlxuICAgIFtmb3JtQ29uZmlnXT1cImNvbmZpZz8uZm9ybXNDb25maWc/LmFkZFRhc2tGb3JtXCJcbiAgICBbaXNNb2JpbGVWaWV3XT1cInRydWVcIlxuICAgIChvbkNsaWNrU2F2ZUZvcm0pPVwidGhpcy5oYW5kbGVPbkNsaWNrU2F2ZUZvcm0oJGV2ZW50KVwiXG4gID48L2t3aWtpZC1mb3JtLXZpZXc+XG48L25nLXRlbXBsYXRlPlxuIl19