@amc-technology/ui-library 1.0.102 → 1.0.104
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -1
- package/esm2022/projects/UILibrary/src/app/components/activity/activity.component.mjs +6 -6
- package/esm2022/projects/UILibrary/src/app/components/chat-box/chat-box.component.mjs +44 -29
- package/esm2022/projects/UILibrary/src/app/components/chat-message/chat-message.component.mjs +5 -5
- package/esm2022/projects/UILibrary/src/app/components/create/create.component.mjs +9 -9
- package/esm2022/projects/UILibrary/src/app/components/current-activity/current-activity.component.mjs +6 -6
- package/esm2022/projects/UILibrary/src/app/components/disposition/disposition.component.mjs +4 -4
- package/esm2022/projects/UILibrary/src/app/components/duration/duration.component.mjs +12 -12
- package/esm2022/projects/UILibrary/src/app/components/hold-timer/hold-timer.component.mjs +72 -0
- package/esm2022/projects/UILibrary/src/app/components/interaction/interaction.component.mjs +17 -20
- package/esm2022/projects/UILibrary/src/app/components/login/login.component.mjs +6 -6
- package/esm2022/projects/UILibrary/src/app/components/operation/operation.component.mjs +5 -5
- package/esm2022/projects/UILibrary/src/app/components/property/property.component.mjs +17 -17
- package/esm2022/projects/UILibrary/src/app/components/recent-activity/recent-activity.component.mjs +5 -5
- package/esm2022/projects/UILibrary/src/app/components/scenario/scenario.component.mjs +6 -9
- package/esm2022/projects/UILibrary/src/app/components/search-information/search-information.component.mjs +14 -14
- package/esm2022/projects/UILibrary/src/app/models/chat.settings.mjs +1 -1
- package/esm2022/projects/UILibrary/src/app/models/disposition.interface.mjs +1 -1
- package/esm2022/projects/UILibrary/src/app/models/uilibrary.model.mjs +20 -22
- package/esm2022/projects/UILibrary/src/app/uilibrary.module.mjs +21 -22
- package/esm2022/public_api.mjs +1 -1
- package/fesm2022/amc-technology-ui-library.mjs +793 -786
- package/fesm2022/amc-technology-ui-library.mjs.map +1 -1
- package/package.json +3 -4
- package/projects/UILibrary/src/app/components/activity/activity.component.d.ts +1 -1
- package/projects/UILibrary/src/app/components/chat-box/chat-box.component.d.ts +13 -9
- package/projects/UILibrary/src/app/components/chat-message/chat-message.component.d.ts +3 -3
- package/projects/UILibrary/src/app/components/create/create.component.d.ts +1 -1
- package/projects/UILibrary/src/app/components/current-activity/current-activity.component.d.ts +1 -1
- package/projects/UILibrary/src/app/components/duration/duration.component.d.ts +1 -1
- package/projects/UILibrary/src/app/components/{holdtimer/holdtimer.component.d.ts → hold-timer/hold-timer.component.d.ts} +7 -7
- package/projects/UILibrary/src/app/components/interaction/interaction.component.d.ts +7 -8
- package/projects/UILibrary/src/app/components/login/login.component.d.ts +1 -1
- package/projects/UILibrary/src/app/components/property/property.component.d.ts +3 -3
- package/projects/UILibrary/src/app/components/scenario/scenario.component.d.ts +3 -4
- package/projects/UILibrary/src/app/components/search-information/search-information.component.d.ts +1 -1
- package/projects/UILibrary/src/app/models/chat.settings.d.ts +2 -0
- package/projects/UILibrary/src/app/models/disposition.interface.d.ts +1 -1
- package/projects/UILibrary/src/app/models/uilibrary.model.d.ts +26 -13
- package/projects/UILibrary/src/app/uilibrary.module.d.ts +5 -5
- package/webcomponents/webcomponents.js +2 -2
- package/esm2022/projects/UILibrary/src/app/components/holdtimer/holdtimer.component.mjs +0 -72
- package/esm2022/projects/UILibrary/src/app/models/login.interface.mjs +0 -2
- package/projects/UILibrary/src/app/models/login.interface.d.ts +0 -13
- package/webcomponents/styles.css +0 -0
package/esm2022/projects/UILibrary/src/app/components/recent-activity/recent-activity.component.mjs
CHANGED
|
@@ -116,12 +116,12 @@ export class RecentActivityComponent {
|
|
|
116
116
|
newValue: this.ActivityDetails
|
|
117
117
|
});
|
|
118
118
|
}
|
|
119
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
120
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: RecentActivityComponent, selector: "amc-recent-activity", inputs: { ActivityDetails: "ActivityDetails", isInConsoleView: "isInConsoleView", quickCommentList: "quickCommentList", workingScenarioID: "workingScenarioID", idx: "idx", last: "last", WhoObjectList: "WhoObjectList", WhatObjectList: "WhatObjectList" }, outputs: { EventEmitter: "EventEmitter" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"ActivityDetails.ScenarioId === workingScenarioID\">\r\n <div (click)=\"expandAndCollapseRecentActivity(false);\" class=\"editor callHeaderRecentActivitySelected\">\r\n <label class=\"headerLabelClickableLook\">\r\n <img [src]=\"getIcon(ActivityDetails.ChannelType)\" class=\"RecentCallsImg\" />\r\n <b>{{ ActivityDetails.Subject }}</b>\r\n </label>\r\n <img *ngIf=\"ActivityDetails.ActivityId\" class=\"RecentCallsImgForActivity\" src=\"../../assets/images/open_activity.png\"\r\n title=\"Open Activity\" (click)=\"openActivity();$event.stopPropagation();\" />\r\n <label *ngIf=\"ActivityDetails.IsUnSaved && isInConsoleView\" class=\"unsavedText\">unsaved</label>\r\n </div>\r\n <div class=\"callBody\">\r\n <div class=\"gray-out\" *ngIf=\"ActivityDetails.IsRecentWorkItemLoading\">\r\n <div class=\"spinner-container\">\r\n <img class=\"spinner\" src=\"../../assets/images/view_progress.gif\" />\r\n </div>\r\n </div>\r\n <div class=\"activityFields\">\r\n <!-- <form> -->\r\n <div class=\"editor displayDiv\">\r\n <label class=\"displayLabels\" title=\"Subject\">Subject</label>\r\n <input class=\"activitySubjectTextBoxStyle displayData\" type=\"text\" (change)=\"onSubjectChange();\"\r\n (keyup)=\"onSubjectKeyUp()\" name=\"subject\" [(ngModel)]=\"ActivityDetails.Subject\" />\r\n </div>\r\n <div class=\"editor displayDiv\">\r\n <label class=\"displayLabels\" title=\"Name\">Name</label>\r\n <select class=\"dropDownListStyle displayData\" [ngModel]=\"ActivityDetails.WhoObject.objectId\"\r\n (ngModelChange)=\"onWhoObjectChange($event)\" name=\"whoItem\">\r\n <option *ngFor=\"let whoItem of WhoObjectList\" [ngValue]=\"whoItem.objectId\">\r\n {{(whoItem.displayName && whoItem.objectName) ? (whoItem.displayName + ': ' + whoItem.objectName) : \"\" }}</option>\r\n <!-- <option value=\"UserSelectedForEmptyRecord\"></option> -->\r\n </select>\r\n </div>\r\n <div class=\"editor displayDiv\">\r\n <label class=\"displayLabels\" title=\"Regarding\">Related To</label>\r\n <select class=\"dropDownListStyle displayData\" [ngModel]=\"ActivityDetails.WhatObject.objectId\"\r\n (ngModelChange)=\"onRelatedToChange($event)\" name=\"whatItem\">\r\n <option *ngFor=\"let whatItem of WhatObjectList;\" [ngValue]=\"whatItem.objectId\">\r\n {{ (whatItem.displayName && whatItem.objectName) ? (whatItem.displayName + ': ' + whatItem.objectName) : \"\" }}</option>\r\n <!-- <option value=\"UserSelectedForEmptyRecord\"></option> -->\r\n </select>\r\n </div>\r\n <div class=\"editor displayDiv\">\r\n <div class=\"callNotesSection\">\r\n <div class=\"callNotesTextArea\">\r\n <textarea placeholder=\"Click to add a comment\" class=\"activityCommentsTextBoxStyle\"\r\n (change)=\"onCallNotesChange();\" (keyup)=\"onCallNotesKeyUp()\" name=\"description\" rows=\"5\" title=\"\"\r\n [(ngModel)]=\"ActivityDetails.Description\">\r\n </textarea>\r\n </div>\r\n <div class=\"notesBottonBorder\">\r\n <div class=\"commentsButtonDiv\">\r\n <div class=\"quickCommentsDiv\">\r\n <input *ngFor=\"let quickComment of quickCommentList; let i = index;\" class=\"quickNotesBotton\"\r\n type=\"button\" value=\"{{i+1}}\" (click)=\"addQuickCommentToDescription(quickComment)\"\r\n title=\"{{quickComment}}\">\r\n </div>\r\n <div class=\"callNotesButtonsSection\">\r\n <input class=\"submitButton\" type=\"button\" value=\"Save\" (click)=\"submitActivity()\"\r\n [disabled]=\"!ActivityDetails.IsUnSaved\" />\r\n <!-- <input *ngIf=\"recentScenario.IsProcessing\" class=\"submitButton\" type=\"button\" value=\"Save\" (click)=\"submitActivity(idx)\" [disabled]=\"!recentScenario.IsUnSaved\"/> -->\r\n <img *ngIf=\"ActivityDetails.IsProcessing\" class=\"loadingIcon\" src=\"../../assets/images/loading.gif\"\r\n title=\"Updating Activity\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- </form> -->\r\n </div>\r\n </div>\r\n</div>\r\n<div *ngIf=\"ActivityDetails.ScenarioId !== workingScenarioID \">\r\n <div [class.callHeaderBottomBorder]='last' (click)=\"expandAndCollapseRecentActivity(true)\"\r\n class=\"editor callHeaderRecentActivityUnselected\">\r\n <label class=\"headerLabelClickableLook\">\r\n <img [src]=\"getIcon(ActivityDetails.ChannelType)\" class=\"RecentCallsImg\" />\r\n <b>{{ ActivityDetails.Subject }}</b>\r\n </label>\r\n <img *ngIf=\"ActivityDetails.ActivityId\" class=\"RecentCallsImgForActivity\" src=\"../../assets/images/open_activity.png\"\r\n title=\"Open Activity\" (click)=\"openActivity();$event.stopPropagation();\" />\r\n <label *ngIf=\"ActivityDetails.IsUnSaved && isInConsoleView\" class=\"unsavedText\">unsaved</label>\r\n </div>\r\n</div>\r\n\r\n", styles: [".callSection{margin-left:0;font-family:Arial;position:relative;margin-top:5px;background-color:#fff}.notesBottonBorder{background-color:#fff;border-left:1px solid #939598;border-bottom:1px solid #939598;border-right:1px solid #939598;border-bottom-left-radius:3px!important;border-bottom-right-radius:3px!important;height:auto}.quickCommentsDiv{text-align:left;flex:1 0 0;flex-wrap:wrap;display:flex;margin:2px}.unsavedText{float:right;margin-right:5px;color:gray;font-style:italic}.quickNotesBotton{background-color:#1e72ba;border:0;color:#fff;height:70%;width:20px;margin:2px;outline:none;font-size:70%}.submitButton{border:0;float:right;margin-top:2px;outline:none;cursor:pointer;background-color:#6cb047;color:#fff;border-radius:4px;font-size:98%;margin-bottom:2px}.commentsButtonDiv{width:100%;display:flex;align-items:center;background-color:#f6f7fb}.gray-out{top:0;left:0;position:absolute;z-index:2000;background:white;opacity:.7;filter:alpha(opacity=70);width:100%;height:100%}.spinner-container{position:relative;width:-moz-fit-content;width:fit-content;top:50%;left:50%;transform:translate(-50%,-50%)}.spinner{height:80px;width:80px;border:0;position:relative;left:50%;transform:translate(-50%)}.callNotesButtonsSection{text-align:right;padding-right:4px}.ViewResizeImage{width:20px;height:20px;float:right;cursor:pointer}.callBody{border:1px solid #939598;border-top:1px solid #ffffff;position:relative}.callBodyBorderless{position:relative}.callDisplay{margin-bottom:8px;background-color:#fff}.editor{font-size:.9em;width:70%;text-align:left;margin:4px 5% 0 0;font-family:Arial;white-space:nowrap;text-overflow:ellipsis;border:0;padding-top:5px;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.dropDownListStyle{border:1px solid #939598!important;border-radius:3px!important;width:70%!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:0 5px 0 0;cursor:pointer}.activitySubjectTextBoxStyle{border:1px solid #939598!important;border-radius:3px!important;width:70%!important;height:20px!important;text-align:left!important;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;margin:0 5px 0 0;padding-left:2px}.activityCommentsTextBoxStyle{color:#333!important;text-align:left!important;margin:0;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;resize:none;width:100%;height:100%;border:none}.displayDiv{width:100%;display:flex}.displayLabels{margin-left:5px;width:25%;overflow:hidden;text-overflow:ellipsis}.displayData{width:70%}.headerLabel{margin-left:10px}.activityFields{position:relative;z-index:0}.callNotesTextArea{background-color:#fff;border-bottom:1px solid #939598;border-top:1px solid #939598;border-top-left-radius:3px!important;border-top-right-radius:3px!important}.callNotesSection{float:left;height:100%;width:100%;background-color:#f6f7fb}.callHeaderRecentActivitySelected{cursor:pointer;border-left:1px solid #939598!important;border-right:1px solid #939598!important;background-color:#cfecf2!important;width:100%!important;margin-top:0!important}.callHeaderRecentActivityUnselected{cursor:pointer;border-left:1px solid #939598!important;border-right:1px solid #939598!important;background-color:#e6f4f7!important;width:100%!important;margin-top:0!important}.callHeader{border:1px solid #939598!important;background-color:#f4f5fb!important;width:100%!important;margin-top:0!important}.callHeaderBottomBorder{cursor:pointer;border-bottom:1px solid #939598!important;border-left:1px solid #939598!important;border-right:1px solid #939598!important;background-color:#e6f4f7!important;width:100%!important;margin-top:0!important}.RecentCallsImg{height:15px;vertical-align:text-bottom}.RecentCallsImgForActivity{height:15px;vertical-align:super;margin-right:5px}.headerLabelClickableLook{cursor:pointer;display:inline-block;margin-left:10px;max-width:80%;overflow:hidden;text-overflow:ellipsis}.loadingIcon{margin-left:auto;margin-right:5px;height:10px;width:30px;margin-top:5px;padding-bottom:0}input[type=button]:disabled{background-color:#d3d3d3;cursor:auto}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
119
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecentActivityComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
120
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RecentActivityComponent, selector: "amc-recent-activity", inputs: { ActivityDetails: "ActivityDetails", isInConsoleView: "isInConsoleView", quickCommentList: "quickCommentList", workingScenarioID: "workingScenarioID", idx: "idx", last: "last", WhoObjectList: "WhoObjectList", WhatObjectList: "WhatObjectList" }, outputs: { EventEmitter: "EventEmitter" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"ActivityDetails.ScenarioId === workingScenarioID\">\r\n <div (click)=\"expandAndCollapseRecentActivity(false);\" class=\"editor callHeaderRecentActivitySelected\">\r\n <label class=\"headerLabelClickableLook\">\r\n <img [src]=\"getIcon(ActivityDetails.ChannelType)\" class=\"RecentCallsImg\" />\r\n <b>{{ ActivityDetails.Subject }}</b>\r\n </label>\r\n <img *ngIf=\"ActivityDetails.ActivityId\" class=\"RecentCallsImgForActivity\" src=\"../../assets/images/open_activity.png\"\r\n title=\"Open Activity\" (click)=\"openActivity();$event.stopPropagation();\" />\r\n <label *ngIf=\"ActivityDetails.IsUnSaved && isInConsoleView\" class=\"unsavedText\">unsaved</label>\r\n </div>\r\n <div class=\"callBody\">\r\n <div class=\"gray-out\" *ngIf=\"ActivityDetails.IsRecentWorkItemLoading\">\r\n <div class=\"spinner-container\">\r\n <img class=\"spinner\" src=\"../../assets/images/view_progress.gif\" />\r\n </div>\r\n </div>\r\n <div class=\"activityFields\">\r\n <!-- <form> -->\r\n <div class=\"editor displayDiv\">\r\n <label class=\"displayLabels\" title=\"Subject\">Subject</label>\r\n <input class=\"activitySubjectTextBoxStyle displayData\" type=\"text\" (change)=\"onSubjectChange();\"\r\n (keyup)=\"onSubjectKeyUp()\" name=\"subject\" [(ngModel)]=\"ActivityDetails.Subject\" />\r\n </div>\r\n <div class=\"editor displayDiv\">\r\n <label class=\"displayLabels\" title=\"Name\">Name</label>\r\n <select class=\"dropDownListStyle displayData\" [ngModel]=\"ActivityDetails.WhoObject.objectId\"\r\n (ngModelChange)=\"onWhoObjectChange($event)\" name=\"whoItem\">\r\n <option *ngFor=\"let whoItem of WhoObjectList\" [ngValue]=\"whoItem.objectId\">\r\n {{(whoItem.displayName && whoItem.objectName) ? (whoItem.displayName + ': ' + whoItem.objectName) : \"\" }}</option>\r\n <!-- <option value=\"UserSelectedForEmptyRecord\"></option> -->\r\n </select>\r\n </div>\r\n <div class=\"editor displayDiv\">\r\n <label class=\"displayLabels\" title=\"Regarding\">Related To</label>\r\n <select class=\"dropDownListStyle displayData\" [ngModel]=\"ActivityDetails.WhatObject.objectId\"\r\n (ngModelChange)=\"onRelatedToChange($event)\" name=\"whatItem\">\r\n <option *ngFor=\"let whatItem of WhatObjectList;\" [ngValue]=\"whatItem.objectId\">\r\n {{ (whatItem.displayName && whatItem.objectName) ? (whatItem.displayName + ': ' + whatItem.objectName) : \"\" }}</option>\r\n <!-- <option value=\"UserSelectedForEmptyRecord\"></option> -->\r\n </select>\r\n </div>\r\n <div class=\"editor displayDiv\">\r\n <div class=\"callNotesSection\">\r\n <div class=\"callNotesTextArea\">\r\n <textarea placeholder=\"Click to add a comment\" class=\"activityCommentsTextBoxStyle\"\r\n (change)=\"onCallNotesChange();\" (keyup)=\"onCallNotesKeyUp()\" name=\"description\" rows=\"5\" title=\"\"\r\n [(ngModel)]=\"ActivityDetails.Description\">\r\n </textarea>\r\n </div>\r\n <div class=\"notesBottonBorder\">\r\n <div class=\"commentsButtonDiv\">\r\n <div class=\"quickCommentsDiv\">\r\n <input *ngFor=\"let quickComment of quickCommentList; let i = index;\" class=\"quickNotesBotton\"\r\n type=\"button\" value=\"{{i+1}}\" (click)=\"addQuickCommentToDescription(quickComment)\"\r\n title=\"{{quickComment}}\">\r\n </div>\r\n <div class=\"callNotesButtonsSection\">\r\n <input class=\"submitButton\" type=\"button\" value=\"Save\" (click)=\"submitActivity()\"\r\n [disabled]=\"!ActivityDetails.IsUnSaved\" />\r\n <!-- <input *ngIf=\"recentScenario.IsProcessing\" class=\"submitButton\" type=\"button\" value=\"Save\" (click)=\"submitActivity(idx)\" [disabled]=\"!recentScenario.IsUnSaved\"/> -->\r\n <img *ngIf=\"ActivityDetails.IsProcessing\" class=\"loadingIcon\" src=\"../../assets/images/loading.gif\"\r\n title=\"Updating Activity\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- </form> -->\r\n </div>\r\n </div>\r\n</div>\r\n<div *ngIf=\"ActivityDetails.ScenarioId !== workingScenarioID \">\r\n <div [class.callHeaderBottomBorder]='last' (click)=\"expandAndCollapseRecentActivity(true)\"\r\n class=\"editor callHeaderRecentActivityUnselected\">\r\n <label class=\"headerLabelClickableLook\">\r\n <img [src]=\"getIcon(ActivityDetails.ChannelType)\" class=\"RecentCallsImg\" />\r\n <b>{{ ActivityDetails.Subject }}</b>\r\n </label>\r\n <img *ngIf=\"ActivityDetails.ActivityId\" class=\"RecentCallsImgForActivity\" src=\"../../assets/images/open_activity.png\"\r\n title=\"Open Activity\" (click)=\"openActivity();$event.stopPropagation();\" />\r\n <label *ngIf=\"ActivityDetails.IsUnSaved && isInConsoleView\" class=\"unsavedText\">unsaved</label>\r\n </div>\r\n</div>\r\n\r\n", styles: [".callSection{margin-left:0;font-family:Arial;position:relative;margin-top:5px;background-color:#fff}.notesBottonBorder{background-color:#fff;border-left:1px solid #939598;border-bottom:1px solid #939598;border-right:1px solid #939598;border-bottom-left-radius:3px!important;border-bottom-right-radius:3px!important;height:auto}.quickCommentsDiv{text-align:left;flex:1 0 0;flex-wrap:wrap;display:flex;margin:2px}.unsavedText{float:right;margin-right:5px;color:gray;font-style:italic}.quickNotesBotton{background-color:#1e72ba;border:0;color:#fff;height:70%;width:20px;margin:2px;outline:none;font-size:70%}.submitButton{border:0;float:right;margin-top:2px;outline:none;cursor:pointer;background-color:#6cb047;color:#fff;border-radius:4px;font-size:98%;margin-bottom:2px}.commentsButtonDiv{width:100%;display:flex;align-items:center;background-color:#f6f7fb}.gray-out{top:0;left:0;position:absolute;z-index:2000;background:#fff;opacity:.7;filter:alpha(opacity=70);width:100%;height:100%}.spinner-container{position:relative;width:-moz-fit-content;width:fit-content;top:50%;left:50%;transform:translate(-50%,-50%)}.spinner{height:80px;width:80px;border:0;position:relative;left:50%;transform:translate(-50%)}.callNotesButtonsSection{text-align:right;padding-right:4px}.ViewResizeImage{width:20px;height:20px;float:right;cursor:pointer}.callBody{border:1px solid #939598;border-top:1px solid #ffffff;position:relative}.callBodyBorderless{position:relative}.callDisplay{margin-bottom:8px;background-color:#fff}.editor{font-size:.9em;width:70%;text-align:left;margin:4px 5% 0 0;font-family:Arial;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;border:0;padding-top:5px;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.dropDownListStyle{border:1px solid #939598!important;border-radius:3px!important;width:70%!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:0 5px 0 0;cursor:pointer}.activitySubjectTextBoxStyle{border:1px solid #939598!important;border-radius:3px!important;width:70%!important;height:20px!important;text-align:left!important;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;margin:0 5px 0 0;padding-left:2px}.activityCommentsTextBoxStyle{color:#333!important;text-align:left!important;margin:0;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;resize:none;width:100%;height:100%;border:none}.displayDiv{width:100%;display:flex}.displayData{width:70%}.headerLabel{margin-left:10px}.activityFields{position:relative;z-index:0}.callNotesTextArea{background-color:#fff;border-bottom:1px solid #939598;border-top:1px solid #939598;border-top-left-radius:3px!important;border-top-right-radius:3px!important}.callNotesSection{float:left;height:100%;width:100%;background-color:#f6f7fb}.callHeaderRecentActivitySelected{cursor:pointer;border-left:1px solid #939598!important;border-right:1px solid #939598!important;background-color:#cfecf2!important;width:100%!important;margin-top:0!important}.callHeaderRecentActivityUnselected{cursor:pointer;border-left:1px solid #939598!important;border-right:1px solid #939598!important;background-color:#e6f4f7!important;width:100%!important;margin-top:0!important}.callHeader{border:1px solid #939598!important;background-color:#f4f5fb!important;width:100%!important;margin-top:0!important}.callHeaderBottomBorder{cursor:pointer;border-bottom:1px solid #939598!important;border-left:1px solid #939598!important;border-right:1px solid #939598!important;background-color:#e6f4f7!important;width:100%!important;margin-top:0!important}.RecentCallsImg{height:15px;vertical-align:text-bottom}.RecentCallsImgForActivity{height:15px;vertical-align:super;margin-right:5px}.headerLabelClickableLook{cursor:pointer;display:inline-block;margin-left:10px;max-width:80%;overflow:hidden;text-overflow:ellipsis}.loadingIcon{margin-left:auto;margin-right:5px;height:10px;width:30px;margin-top:5px;padding-bottom:0}input[type=button]:disabled{background-color:#d3d3d3;cursor:auto}.displayLabels{margin-left:5px;width:25%;overflow:hidden;text-overflow:ellipsis}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
121
121
|
}
|
|
122
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
122
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecentActivityComponent, decorators: [{
|
|
123
123
|
type: Component,
|
|
124
|
-
args: [{ selector: 'amc-recent-activity', template: "<div *ngIf=\"ActivityDetails.ScenarioId === workingScenarioID\">\r\n <div (click)=\"expandAndCollapseRecentActivity(false);\" class=\"editor callHeaderRecentActivitySelected\">\r\n <label class=\"headerLabelClickableLook\">\r\n <img [src]=\"getIcon(ActivityDetails.ChannelType)\" class=\"RecentCallsImg\" />\r\n <b>{{ ActivityDetails.Subject }}</b>\r\n </label>\r\n <img *ngIf=\"ActivityDetails.ActivityId\" class=\"RecentCallsImgForActivity\" src=\"../../assets/images/open_activity.png\"\r\n title=\"Open Activity\" (click)=\"openActivity();$event.stopPropagation();\" />\r\n <label *ngIf=\"ActivityDetails.IsUnSaved && isInConsoleView\" class=\"unsavedText\">unsaved</label>\r\n </div>\r\n <div class=\"callBody\">\r\n <div class=\"gray-out\" *ngIf=\"ActivityDetails.IsRecentWorkItemLoading\">\r\n <div class=\"spinner-container\">\r\n <img class=\"spinner\" src=\"../../assets/images/view_progress.gif\" />\r\n </div>\r\n </div>\r\n <div class=\"activityFields\">\r\n <!-- <form> -->\r\n <div class=\"editor displayDiv\">\r\n <label class=\"displayLabels\" title=\"Subject\">Subject</label>\r\n <input class=\"activitySubjectTextBoxStyle displayData\" type=\"text\" (change)=\"onSubjectChange();\"\r\n (keyup)=\"onSubjectKeyUp()\" name=\"subject\" [(ngModel)]=\"ActivityDetails.Subject\" />\r\n </div>\r\n <div class=\"editor displayDiv\">\r\n <label class=\"displayLabels\" title=\"Name\">Name</label>\r\n <select class=\"dropDownListStyle displayData\" [ngModel]=\"ActivityDetails.WhoObject.objectId\"\r\n (ngModelChange)=\"onWhoObjectChange($event)\" name=\"whoItem\">\r\n <option *ngFor=\"let whoItem of WhoObjectList\" [ngValue]=\"whoItem.objectId\">\r\n {{(whoItem.displayName && whoItem.objectName) ? (whoItem.displayName + ': ' + whoItem.objectName) : \"\" }}</option>\r\n <!-- <option value=\"UserSelectedForEmptyRecord\"></option> -->\r\n </select>\r\n </div>\r\n <div class=\"editor displayDiv\">\r\n <label class=\"displayLabels\" title=\"Regarding\">Related To</label>\r\n <select class=\"dropDownListStyle displayData\" [ngModel]=\"ActivityDetails.WhatObject.objectId\"\r\n (ngModelChange)=\"onRelatedToChange($event)\" name=\"whatItem\">\r\n <option *ngFor=\"let whatItem of WhatObjectList;\" [ngValue]=\"whatItem.objectId\">\r\n {{ (whatItem.displayName && whatItem.objectName) ? (whatItem.displayName + ': ' + whatItem.objectName) : \"\" }}</option>\r\n <!-- <option value=\"UserSelectedForEmptyRecord\"></option> -->\r\n </select>\r\n </div>\r\n <div class=\"editor displayDiv\">\r\n <div class=\"callNotesSection\">\r\n <div class=\"callNotesTextArea\">\r\n <textarea placeholder=\"Click to add a comment\" class=\"activityCommentsTextBoxStyle\"\r\n (change)=\"onCallNotesChange();\" (keyup)=\"onCallNotesKeyUp()\" name=\"description\" rows=\"5\" title=\"\"\r\n [(ngModel)]=\"ActivityDetails.Description\">\r\n </textarea>\r\n </div>\r\n <div class=\"notesBottonBorder\">\r\n <div class=\"commentsButtonDiv\">\r\n <div class=\"quickCommentsDiv\">\r\n <input *ngFor=\"let quickComment of quickCommentList; let i = index;\" class=\"quickNotesBotton\"\r\n type=\"button\" value=\"{{i+1}}\" (click)=\"addQuickCommentToDescription(quickComment)\"\r\n title=\"{{quickComment}}\">\r\n </div>\r\n <div class=\"callNotesButtonsSection\">\r\n <input class=\"submitButton\" type=\"button\" value=\"Save\" (click)=\"submitActivity()\"\r\n [disabled]=\"!ActivityDetails.IsUnSaved\" />\r\n <!-- <input *ngIf=\"recentScenario.IsProcessing\" class=\"submitButton\" type=\"button\" value=\"Save\" (click)=\"submitActivity(idx)\" [disabled]=\"!recentScenario.IsUnSaved\"/> -->\r\n <img *ngIf=\"ActivityDetails.IsProcessing\" class=\"loadingIcon\" src=\"../../assets/images/loading.gif\"\r\n title=\"Updating Activity\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- </form> -->\r\n </div>\r\n </div>\r\n</div>\r\n<div *ngIf=\"ActivityDetails.ScenarioId !== workingScenarioID \">\r\n <div [class.callHeaderBottomBorder]='last' (click)=\"expandAndCollapseRecentActivity(true)\"\r\n class=\"editor callHeaderRecentActivityUnselected\">\r\n <label class=\"headerLabelClickableLook\">\r\n <img [src]=\"getIcon(ActivityDetails.ChannelType)\" class=\"RecentCallsImg\" />\r\n <b>{{ ActivityDetails.Subject }}</b>\r\n </label>\r\n <img *ngIf=\"ActivityDetails.ActivityId\" class=\"RecentCallsImgForActivity\" src=\"../../assets/images/open_activity.png\"\r\n title=\"Open Activity\" (click)=\"openActivity();$event.stopPropagation();\" />\r\n <label *ngIf=\"ActivityDetails.IsUnSaved && isInConsoleView\" class=\"unsavedText\">unsaved</label>\r\n </div>\r\n</div>\r\n\r\n", styles: [".callSection{margin-left:0;font-family:Arial;position:relative;margin-top:5px;background-color:#fff}.notesBottonBorder{background-color:#fff;border-left:1px solid #939598;border-bottom:1px solid #939598;border-right:1px solid #939598;border-bottom-left-radius:3px!important;border-bottom-right-radius:3px!important;height:auto}.quickCommentsDiv{text-align:left;flex:1 0 0;flex-wrap:wrap;display:flex;margin:2px}.unsavedText{float:right;margin-right:5px;color:gray;font-style:italic}.quickNotesBotton{background-color:#1e72ba;border:0;color:#fff;height:70%;width:20px;margin:2px;outline:none;font-size:70%}.submitButton{border:0;float:right;margin-top:2px;outline:none;cursor:pointer;background-color:#6cb047;color:#fff;border-radius:4px;font-size:98%;margin-bottom:2px}.commentsButtonDiv{width:100%;display:flex;align-items:center;background-color:#f6f7fb}.gray-out{top:0;left:0;position:absolute;z-index:2000;background
|
|
124
|
+
args: [{ selector: 'amc-recent-activity', template: "<div *ngIf=\"ActivityDetails.ScenarioId === workingScenarioID\">\r\n <div (click)=\"expandAndCollapseRecentActivity(false);\" class=\"editor callHeaderRecentActivitySelected\">\r\n <label class=\"headerLabelClickableLook\">\r\n <img [src]=\"getIcon(ActivityDetails.ChannelType)\" class=\"RecentCallsImg\" />\r\n <b>{{ ActivityDetails.Subject }}</b>\r\n </label>\r\n <img *ngIf=\"ActivityDetails.ActivityId\" class=\"RecentCallsImgForActivity\" src=\"../../assets/images/open_activity.png\"\r\n title=\"Open Activity\" (click)=\"openActivity();$event.stopPropagation();\" />\r\n <label *ngIf=\"ActivityDetails.IsUnSaved && isInConsoleView\" class=\"unsavedText\">unsaved</label>\r\n </div>\r\n <div class=\"callBody\">\r\n <div class=\"gray-out\" *ngIf=\"ActivityDetails.IsRecentWorkItemLoading\">\r\n <div class=\"spinner-container\">\r\n <img class=\"spinner\" src=\"../../assets/images/view_progress.gif\" />\r\n </div>\r\n </div>\r\n <div class=\"activityFields\">\r\n <!-- <form> -->\r\n <div class=\"editor displayDiv\">\r\n <label class=\"displayLabels\" title=\"Subject\">Subject</label>\r\n <input class=\"activitySubjectTextBoxStyle displayData\" type=\"text\" (change)=\"onSubjectChange();\"\r\n (keyup)=\"onSubjectKeyUp()\" name=\"subject\" [(ngModel)]=\"ActivityDetails.Subject\" />\r\n </div>\r\n <div class=\"editor displayDiv\">\r\n <label class=\"displayLabels\" title=\"Name\">Name</label>\r\n <select class=\"dropDownListStyle displayData\" [ngModel]=\"ActivityDetails.WhoObject.objectId\"\r\n (ngModelChange)=\"onWhoObjectChange($event)\" name=\"whoItem\">\r\n <option *ngFor=\"let whoItem of WhoObjectList\" [ngValue]=\"whoItem.objectId\">\r\n {{(whoItem.displayName && whoItem.objectName) ? (whoItem.displayName + ': ' + whoItem.objectName) : \"\" }}</option>\r\n <!-- <option value=\"UserSelectedForEmptyRecord\"></option> -->\r\n </select>\r\n </div>\r\n <div class=\"editor displayDiv\">\r\n <label class=\"displayLabels\" title=\"Regarding\">Related To</label>\r\n <select class=\"dropDownListStyle displayData\" [ngModel]=\"ActivityDetails.WhatObject.objectId\"\r\n (ngModelChange)=\"onRelatedToChange($event)\" name=\"whatItem\">\r\n <option *ngFor=\"let whatItem of WhatObjectList;\" [ngValue]=\"whatItem.objectId\">\r\n {{ (whatItem.displayName && whatItem.objectName) ? (whatItem.displayName + ': ' + whatItem.objectName) : \"\" }}</option>\r\n <!-- <option value=\"UserSelectedForEmptyRecord\"></option> -->\r\n </select>\r\n </div>\r\n <div class=\"editor displayDiv\">\r\n <div class=\"callNotesSection\">\r\n <div class=\"callNotesTextArea\">\r\n <textarea placeholder=\"Click to add a comment\" class=\"activityCommentsTextBoxStyle\"\r\n (change)=\"onCallNotesChange();\" (keyup)=\"onCallNotesKeyUp()\" name=\"description\" rows=\"5\" title=\"\"\r\n [(ngModel)]=\"ActivityDetails.Description\">\r\n </textarea>\r\n </div>\r\n <div class=\"notesBottonBorder\">\r\n <div class=\"commentsButtonDiv\">\r\n <div class=\"quickCommentsDiv\">\r\n <input *ngFor=\"let quickComment of quickCommentList; let i = index;\" class=\"quickNotesBotton\"\r\n type=\"button\" value=\"{{i+1}}\" (click)=\"addQuickCommentToDescription(quickComment)\"\r\n title=\"{{quickComment}}\">\r\n </div>\r\n <div class=\"callNotesButtonsSection\">\r\n <input class=\"submitButton\" type=\"button\" value=\"Save\" (click)=\"submitActivity()\"\r\n [disabled]=\"!ActivityDetails.IsUnSaved\" />\r\n <!-- <input *ngIf=\"recentScenario.IsProcessing\" class=\"submitButton\" type=\"button\" value=\"Save\" (click)=\"submitActivity(idx)\" [disabled]=\"!recentScenario.IsUnSaved\"/> -->\r\n <img *ngIf=\"ActivityDetails.IsProcessing\" class=\"loadingIcon\" src=\"../../assets/images/loading.gif\"\r\n title=\"Updating Activity\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- </form> -->\r\n </div>\r\n </div>\r\n</div>\r\n<div *ngIf=\"ActivityDetails.ScenarioId !== workingScenarioID \">\r\n <div [class.callHeaderBottomBorder]='last' (click)=\"expandAndCollapseRecentActivity(true)\"\r\n class=\"editor callHeaderRecentActivityUnselected\">\r\n <label class=\"headerLabelClickableLook\">\r\n <img [src]=\"getIcon(ActivityDetails.ChannelType)\" class=\"RecentCallsImg\" />\r\n <b>{{ ActivityDetails.Subject }}</b>\r\n </label>\r\n <img *ngIf=\"ActivityDetails.ActivityId\" class=\"RecentCallsImgForActivity\" src=\"../../assets/images/open_activity.png\"\r\n title=\"Open Activity\" (click)=\"openActivity();$event.stopPropagation();\" />\r\n <label *ngIf=\"ActivityDetails.IsUnSaved && isInConsoleView\" class=\"unsavedText\">unsaved</label>\r\n </div>\r\n</div>\r\n\r\n", styles: [".callSection{margin-left:0;font-family:Arial;position:relative;margin-top:5px;background-color:#fff}.notesBottonBorder{background-color:#fff;border-left:1px solid #939598;border-bottom:1px solid #939598;border-right:1px solid #939598;border-bottom-left-radius:3px!important;border-bottom-right-radius:3px!important;height:auto}.quickCommentsDiv{text-align:left;flex:1 0 0;flex-wrap:wrap;display:flex;margin:2px}.unsavedText{float:right;margin-right:5px;color:gray;font-style:italic}.quickNotesBotton{background-color:#1e72ba;border:0;color:#fff;height:70%;width:20px;margin:2px;outline:none;font-size:70%}.submitButton{border:0;float:right;margin-top:2px;outline:none;cursor:pointer;background-color:#6cb047;color:#fff;border-radius:4px;font-size:98%;margin-bottom:2px}.commentsButtonDiv{width:100%;display:flex;align-items:center;background-color:#f6f7fb}.gray-out{top:0;left:0;position:absolute;z-index:2000;background:#fff;opacity:.7;filter:alpha(opacity=70);width:100%;height:100%}.spinner-container{position:relative;width:-moz-fit-content;width:fit-content;top:50%;left:50%;transform:translate(-50%,-50%)}.spinner{height:80px;width:80px;border:0;position:relative;left:50%;transform:translate(-50%)}.callNotesButtonsSection{text-align:right;padding-right:4px}.ViewResizeImage{width:20px;height:20px;float:right;cursor:pointer}.callBody{border:1px solid #939598;border-top:1px solid #ffffff;position:relative}.callBodyBorderless{position:relative}.callDisplay{margin-bottom:8px;background-color:#fff}.editor{font-size:.9em;width:70%;text-align:left;margin:4px 5% 0 0;font-family:Arial;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;border:0;padding-top:5px;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.dropDownListStyle{border:1px solid #939598!important;border-radius:3px!important;width:70%!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:0 5px 0 0;cursor:pointer}.activitySubjectTextBoxStyle{border:1px solid #939598!important;border-radius:3px!important;width:70%!important;height:20px!important;text-align:left!important;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;margin:0 5px 0 0;padding-left:2px}.activityCommentsTextBoxStyle{color:#333!important;text-align:left!important;margin:0;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;resize:none;width:100%;height:100%;border:none}.displayDiv{width:100%;display:flex}.displayData{width:70%}.headerLabel{margin-left:10px}.activityFields{position:relative;z-index:0}.callNotesTextArea{background-color:#fff;border-bottom:1px solid #939598;border-top:1px solid #939598;border-top-left-radius:3px!important;border-top-right-radius:3px!important}.callNotesSection{float:left;height:100%;width:100%;background-color:#f6f7fb}.callHeaderRecentActivitySelected{cursor:pointer;border-left:1px solid #939598!important;border-right:1px solid #939598!important;background-color:#cfecf2!important;width:100%!important;margin-top:0!important}.callHeaderRecentActivityUnselected{cursor:pointer;border-left:1px solid #939598!important;border-right:1px solid #939598!important;background-color:#e6f4f7!important;width:100%!important;margin-top:0!important}.callHeader{border:1px solid #939598!important;background-color:#f4f5fb!important;width:100%!important;margin-top:0!important}.callHeaderBottomBorder{cursor:pointer;border-bottom:1px solid #939598!important;border-left:1px solid #939598!important;border-right:1px solid #939598!important;background-color:#e6f4f7!important;width:100%!important;margin-top:0!important}.RecentCallsImg{height:15px;vertical-align:text-bottom}.RecentCallsImgForActivity{height:15px;vertical-align:super;margin-right:5px}.headerLabelClickableLook{cursor:pointer;display:inline-block;margin-left:10px;max-width:80%;overflow:hidden;text-overflow:ellipsis}.loadingIcon{margin-left:auto;margin-right:5px;height:10px;width:30px;margin-top:5px;padding-bottom:0}input[type=button]:disabled{background-color:#d3d3d3;cursor:auto}.displayLabels{margin-left:5px;width:25%;overflow:hidden;text-overflow:ellipsis}\n"] }]
|
|
125
125
|
}], ctorParameters: function () { return []; }, propDecorators: { ActivityDetails: [{
|
|
126
126
|
type: Input
|
|
127
127
|
}], isInConsoleView: [{
|
|
@@ -141,4 +141,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
|
|
|
141
141
|
}], EventEmitter: [{
|
|
142
142
|
type: Output
|
|
143
143
|
}] } });
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjZW50LWFjdGl2aXR5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL1VJTGlicmFyeS9zcmMvYXBwL2NvbXBvbmVudHMvcmVjZW50LWFjdGl2aXR5L3JlY2VudC1hY3Rpdml0eS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9VSUxpYnJhcnkvc3JjL2FwcC9jb21wb25lbnRzL3JlY2VudC1hY3Rpdml0eS9yZWNlbnQtYWN0aXZpdHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFJUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQVMvQixNQUFNLE9BQU8sdUJBQXVCO0lBQ3pCLGVBQWUsQ0FBWTtJQUMzQixlQUFlLENBQVU7SUFDekIsZ0JBQWdCLENBQVc7SUFDM0IsaUJBQWlCLENBQVM7SUFDMUIsR0FBRyxDQUFTO0lBQ1osSUFBSSxDQUFVO0lBQ2QsYUFBYSxDQUFxQjtJQUNsQyxjQUFjLENBQXFCO0lBRWxDLFlBQVksQ0FJbkI7SUFFSyxTQUFTLENBQWdCO0lBQ3pCLFNBQVMsQ0FBYztJQUUvQjtRQUNFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBSWhDLENBQUM7UUFFTCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxXQUFXO0lBQ1gsQ0FBQztJQUVELE9BQU8sQ0FBQyxRQUFRO1FBQ2QsUUFBUSxRQUFRLEVBQUU7WUFD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QkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUksWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgT25Jbml0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3lcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IElBY3Rpdml0eSB9IGZyb20gJy4uLy4uL21vZGVscy9JQWN0aXZpdHknO1xyXG5pbXBvcnQgeyBJQWN0aXZpdHlEZXRhaWxzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0lBY3Rpdml0eURldGFpbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhbWMtcmVjZW50LWFjdGl2aXR5JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVjZW50LWFjdGl2aXR5LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yZWNlbnQtYWN0aXZpdHkuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWNlbnRBY3Rpdml0eUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIEFjdGl2aXR5RGV0YWlsczogSUFjdGl2aXR5O1xyXG4gIEBJbnB1dCgpIGlzSW5Db25zb2xlVmlldzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBxdWlja0NvbW1lbnRMaXN0OiBzdHJpbmdbXTtcclxuICBASW5wdXQoKSB3b3JraW5nU2NlbmFyaW9JRDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGlkeDogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGxhc3Q6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgV2hvT2JqZWN0TGlzdDogSUFjdGl2aXR5RGV0YWlsc1tdO1xyXG4gIEBJbnB1dCgpIFdoYXRPYmplY3RMaXN0OiBJQWN0aXZpdHlEZXRhaWxzW107XHJcblxyXG4gIEBPdXRwdXQoKSBFdmVudEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBldmVudE5hbWU6IHN0cmluZztcclxuICAgIGlkeDogbnVtYmVyO1xyXG4gICAgbmV3VmFsdWU/OiBJQWN0aXZpdHk7XHJcbiAgfT47XHJcblxyXG4gIHByaXZhdGUgZGVib3VuY2VyOiBTdWJqZWN0PHZvaWQ+O1xyXG4gIHByaXZhdGUgZXZlbnRMaXN0OiBTZXQ8U3RyaW5nPjtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLkV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgICBldmVudE5hbWU6IHN0cmluZztcclxuICAgICAgaWR4OiBudW1iZXI7XHJcbiAgICAgIG5ld1ZhbHVlPzogSUFjdGl2aXR5O1xyXG4gICAgfT4oKTtcclxuXHJcbiAgICB0aGlzLmRlYm91bmNlciA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgICB0aGlzLmV2ZW50TGlzdCA9IG5ldyBTZXQoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgZ2V0SWNvbihzY2VuYXJpbyk6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKHNjZW5hcmlvKSB7XHJcbiAgICAgIGNhc2UgJ1RlbGVwaG9ueSc6XHJcbiAgICAgICAgcmV0dXJuICcuLi8uLi9hc3NldHMvaW1hZ2VzL1Bob25lX051bWJlcl9JY29uLnBuZyc7XHJcbiAgICAgIGNhc2UgJ0VtYWlsJzpcclxuICAgICAgICByZXR1cm4gJy4uLy4uL2Fzc2V0cy9pbWFnZXMvZW1haWxUYWIucG5nJztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJy4uLy4uL2Fzc2V0cy9pbWFnZXMvY2hhdC5wbmcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlYm91bmNlci5waXBlKGRlYm91bmNlVGltZSg1MDApKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBjb25zdCBuZXdFdmVudCA9IHtcclxuICAgICAgICBldmVudE5hbWU6IEFycmF5LmZyb20odGhpcy5ldmVudExpc3QpLmpvaW4oJ3wnKSxcclxuICAgICAgICBpZHg6IHRoaXMuaWR4LFxyXG4gICAgICAgIG5ld1ZhbHVlOiB0aGlzLkFjdGl2aXR5RGV0YWlsc1xyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLkV2ZW50RW1pdHRlci5lbWl0KG5ld0V2ZW50KTtcclxuICAgICAgdGhpcy5ldmVudExpc3QuY2xlYXIoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7fVxyXG5cclxuICBleHBhbmRBbmRDb2xsYXBzZVJlY2VudEFjdGl2aXR5KGlzRXhwYW5kOiBib29sZWFuKSB7XHJcbiAgICBpZiAoaXNFeHBhbmQpIHtcclxuICAgICAgdGhpcy5FdmVudEVtaXR0ZXIuZW1pdCh7XHJcbiAgICAgICAgZXZlbnROYW1lOiAnV29ya2luZ0V2dGl2aXR5Q2hhbmdlZCcsXHJcbiAgICAgICAgaWR4OiB0aGlzLmlkeCxcclxuICAgICAgICBuZXdWYWx1ZTogdGhpcy5BY3Rpdml0eURldGFpbHNcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLkV2ZW50RW1pdHRlci5lbWl0KHtcclxuICAgICAgICBldmVudE5hbWU6ICdXb3JraW5nRXZ0aXZpdHlDaGFuZ2VkJyxcclxuICAgICAgICBpZHg6IC0xLFxyXG4gICAgICAgIG5ld1ZhbHVlOiB0aGlzLkFjdGl2aXR5RGV0YWlsc1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW5BY3Rpdml0eSgpIHtcclxuICAgIHRoaXMuRXZlbnRFbWl0dGVyLmVtaXQoe1xyXG4gICAgICBldmVudE5hbWU6ICdPcGVuQ2FsbEFjdGl2aXR5JyxcclxuICAgICAgaWR4OiB0aGlzLmlkeCxcclxuICAgICAgbmV3VmFsdWU6IHRoaXMuQWN0aXZpdHlEZXRhaWxzXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uU3ViamVjdENoYW5nZSgpIHtcclxuICAgIHRoaXMuZXZlbnRMaXN0LmFkZCgnQWN0aXZpdHlTdWJqZWN0Q2hhbmdlZCcpO1xyXG4gICAgdGhpcy5kZWJvdW5jZXIubmV4dCgpO1xyXG4gIH1cclxuXHJcbiAgb25TdWJqZWN0S2V5VXAoKSB7XHJcbiAgICB0aGlzLmV2ZW50TGlzdC5hZGQoJ0FjdGl2aXR5U3ViamVjdENoYW5nZWQnKTtcclxuICAgIHRoaXMuZGVib3VuY2VyLm5leHQoKTtcclxuICB9XHJcblxyXG4gIG9uV2hvT2JqZWN0Q2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuQWN0aXZpdHlEZXRhaWxzLldob09iamVjdCA9IHRoaXMuV2hvT2JqZWN0TGlzdC5maW5kKChvYmopID0+IG9iai5vYmplY3RJZCA9PT0gZXZlbnQpO1xyXG4gICAgdGhpcy5FdmVudEVtaXR0ZXIuZW1pdCh7XHJcbiAgICAgIGV2ZW50TmFtZTogJ0FjdGl2aXR5V2hvT2JqZWN0Q2hhbmdlZCcsXHJcbiAgICAgIGlkeDogdGhpcy5pZHgsXHJcbiAgICAgIG5ld1ZhbHVlOiB0aGlzLkFjdGl2aXR5RGV0YWlsc1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblJlbGF0ZWRUb0NoYW5nZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLkFjdGl2aXR5RGV0YWlscy5XaGF0T2JqZWN0ID0gdGhpcy5XaGF0T2JqZWN0TGlzdC5maW5kKChvYmopID0+IG9iai5vYmplY3RJZCA9PT0gZXZlbnQpO1xyXG4gICAgdGhpcy5FdmVudEVtaXR0ZXIuZW1pdCh7XHJcbiAgICAgIGV2ZW50TmFtZTogJ0FjdGl2aXR5V2hhdE9iamVjdENoYW5nZWQnLFxyXG4gICAgICBpZHg6IHRoaXMuaWR4LFxyXG4gICAgICBuZXdWYWx1ZTogdGhpcy5BY3Rpdml0eURldGFpbHNcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25DYWxsTm90ZXNDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLmV2ZW50TGlzdC5hZGQoJ0FjdGl2aXR5Q2FsbE5vdGVDaGFuZ2VkJyk7XHJcbiAgICB0aGlzLmRlYm91bmNlci5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICBvbkNhbGxOb3Rlc0tleVVwKCkge1xyXG4gICAgdGhpcy5ldmVudExpc3QuYWRkKCdBY3Rpdml0eUNhbGxOb3RlQ2hhbmdlZCcpO1xyXG4gICAgdGhpcy5kZWJvdW5jZXIubmV4dCgpO1xyXG4gIH1cclxuXHJcbiAgYWRkUXVpY2tDb21tZW50VG9EZXNjcmlwdGlvbihjb21tZW50OiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLkFjdGl2aXR5RGV0YWlscy5EZXNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLkFjdGl2aXR5RGV0YWlscy5EZXNjcmlwdGlvbiArPSAnXFxuJztcclxuICAgIH1cclxuICAgIHRoaXMuQWN0aXZpdHlEZXRhaWxzLkRlc2NyaXB0aW9uICs9IGNvbW1lbnQ7XHJcbiAgICB0aGlzLmV2ZW50TGlzdC5hZGQoJ0FjdGl2aXR5Q2FsbE5vdGVDaGFuZ2VkJyk7XHJcbiAgICB0aGlzLmRlYm91bmNlci5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICBzdWJtaXRBY3Rpdml0eSgpIHtcclxuICAgIHRoaXMuQWN0aXZpdHlEZXRhaWxzLklzUHJvY2Vzc2luZyA9IHRydWU7XHJcbiAgICB0aGlzLkV2ZW50RW1pdHRlci5lbWl0KHtcclxuICAgICAgZXZlbnROYW1lOiAnU3VibWl0QWN0aXZpdHknLFxyXG4gICAgICBpZHg6IHRoaXMuaWR4LFxyXG4gICAgICBuZXdWYWx1ZTogdGhpcy5BY3Rpdml0eURldGFpbHNcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2ICpuZ0lmPVwiQWN0aXZpdHlEZXRhaWxzLlNjZW5hcmlvSWQgPT09IHdvcmtpbmdTY2VuYXJpb0lEXCI+XHJcbiAgPGRpdiAoY2xpY2spPVwiZXhwYW5kQW5kQ29sbGFwc2VSZWNlbnRBY3Rpdml0eShmYWxzZSk7XCIgY2xhc3M9XCJlZGl0b3IgY2FsbEhlYWRlclJlY2VudEFjdGl2aXR5U2VsZWN0ZWRcIj5cclxuICAgIDxsYWJlbCBjbGFzcz1cImhlYWRlckxhYmVsQ2xpY2thYmxlTG9va1wiPlxyXG4gICAgICA8aW1nIFtzcmNdPVwiZ2V0SWNvbihBY3Rpdml0eURldGFpbHMuQ2hhbm5lbFR5cGUpXCIgY2xhc3M9XCJSZWNlbnRDYWxsc0ltZ1wiIC8+XHJcbiAgICAgIDxiPnt7IEFjdGl2aXR5RGV0YWlscy5TdWJqZWN0IH19PC9iPlxyXG4gICAgPC9sYWJlbD5cclxuICAgIDxpbWcgKm5nSWY9XCJBY3Rpdml0eURldGFpbHMuQWN0aXZpdHlJZFwiIGNsYXNzPVwiUmVjZW50Q2FsbHNJbWdGb3JBY3Rpdml0eVwiIHNyYz1cIi4uLy4uL2Fzc2V0cy9pbWFnZXMvb3Blbl9hY3Rpdml0eS5wbmdcIlxyXG4gICAgICB0aXRsZT1cIk9wZW4gQWN0aXZpdHlcIiAoY2xpY2spPVwib3BlbkFjdGl2aXR5KCk7JGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiIC8+XHJcbiAgICA8bGFiZWwgKm5nSWY9XCJBY3Rpdml0eURldGFpbHMuSXNVblNhdmVkICYmIGlzSW5Db25zb2xlVmlld1wiIGNsYXNzPVwidW5zYXZlZFRleHRcIj51bnNhdmVkPC9sYWJlbD5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiY2FsbEJvZHlcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJncmF5LW91dFwiICpuZ0lmPVwiQWN0aXZpdHlEZXRhaWxzLklzUmVjZW50V29ya0l0ZW1Mb2FkaW5nXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxpbWcgY2xhc3M9XCJzcGlubmVyXCIgc3JjPVwiLi4vLi4vYXNzZXRzL2ltYWdlcy92aWV3X3Byb2dyZXNzLmdpZlwiIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYWN0aXZpdHlGaWVsZHNcIj5cclxuICAgICAgPCEtLSA8Zm9ybT4gLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJlZGl0b3IgZGlzcGxheURpdlwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImRpc3BsYXlMYWJlbHNcIiB0aXRsZT1cIlN1YmplY3RcIj5TdWJqZWN0PC9sYWJlbD5cclxuICAgICAgICA8aW5wdXQgY2xhc3M9XCJhY3Rpdml0eVN1YmplY3RUZXh0Qm94U3R5bGUgZGlzcGxheURhdGFcIiB0eXBlPVwidGV4dFwiIChjaGFuZ2UpPVwib25TdWJqZWN0Q2hhbmdlKCk7XCJcclxuICAgICAgICAgIChrZXl1cCk9XCJvblN1YmplY3RLZXlVcCgpXCIgbmFtZT1cInN1YmplY3RcIiBbKG5nTW9kZWwpXT1cIkFjdGl2aXR5RGV0YWlscy5TdWJqZWN0XCIgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJlZGl0b3IgZGlzcGxheURpdlwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImRpc3BsYXlMYWJlbHNcIiB0aXRsZT1cIk5hbWVcIj5OYW1lPC9sYWJlbD5cclxuICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZHJvcERvd25MaXN0U3R5bGUgZGlzcGxheURhdGFcIiBbbmdNb2RlbF09XCJBY3Rpdml0eURldGFpbHMuV2hvT2JqZWN0Lm9iamVjdElkXCJcclxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uV2hvT2JqZWN0Q2hhbmdlKCRldmVudClcIiBuYW1lPVwid2hvSXRlbVwiPlxyXG4gICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgd2hvSXRlbSBvZiBXaG9PYmplY3RMaXN0XCIgW25nVmFsdWVdPVwid2hvSXRlbS5vYmplY3RJZFwiPlxyXG4gICAgICAgICAgICB7eyh3aG9JdGVtLmRpc3BsYXlOYW1lICYmIHdob0l0ZW0ub2JqZWN0TmFtZSkgPyAod2hvSXRlbS5kaXNwbGF5TmFtZSArICc6ICcgKyB3aG9JdGVtLm9iamVjdE5hbWUpIDogXCJcIiB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgPCEtLSA8b3B0aW9uIHZhbHVlPVwiVXNlclNlbGVjdGVkRm9yRW1wdHlSZWNvcmRcIj48L29wdGlvbj4gLS0+XHJcbiAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZWRpdG9yIGRpc3BsYXlEaXZcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJkaXNwbGF5TGFiZWxzXCIgdGl0bGU9XCJSZWdhcmRpbmdcIj5SZWxhdGVkIFRvPC9sYWJlbD5cclxuICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZHJvcERvd25MaXN0U3R5bGUgZGlzcGxheURhdGFcIiBbbmdNb2RlbF09XCJBY3Rpdml0eURldGFpbHMuV2hhdE9iamVjdC5vYmplY3RJZFwiXHJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblJlbGF0ZWRUb0NoYW5nZSgkZXZlbnQpXCIgbmFtZT1cIndoYXRJdGVtXCI+XHJcbiAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB3aGF0SXRlbSBvZiBXaGF0T2JqZWN0TGlzdDtcIiBbbmdWYWx1ZV09XCJ3aGF0SXRlbS5vYmplY3RJZFwiPlxyXG4gICAgICAgICAgICB7eyAod2hhdEl0ZW0uZGlzcGxheU5hbWUgJiYgd2hhdEl0ZW0ub2JqZWN0TmFtZSkgPyAod2hhdEl0ZW0uZGlzcGxheU5hbWUgKyAnOiAnICsgd2hhdEl0ZW0ub2JqZWN0TmFtZSkgOiBcIlwiIH19PC9vcHRpb24+XHJcbiAgICAgICAgICA8IS0tIDxvcHRpb24gdmFsdWU9XCJVc2VyU2VsZWN0ZWRGb3JFbXB0eVJlY29yZFwiPjwvb3B0aW9uPiAtLT5cclxuICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJlZGl0b3IgZGlzcGxheURpdlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYWxsTm90ZXNTZWN0aW9uXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsbE5vdGVzVGV4dEFyZWFcIj5cclxuICAgICAgICAgICAgPHRleHRhcmVhIHBsYWNlaG9sZGVyPVwiQ2xpY2sgdG8gYWRkIGEgY29tbWVudFwiIGNsYXNzPVwiYWN0aXZpdHlDb21tZW50c1RleHRCb3hTdHlsZVwiXHJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNhbGxOb3Rlc0NoYW5nZSgpO1wiIChrZXl1cCk9XCJvbkNhbGxOb3Rlc0tleVVwKClcIiBuYW1lPVwiZGVzY3JpcHRpb25cIiByb3dzPVwiNVwiIHRpdGxlPVwiXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIkFjdGl2aXR5RGV0YWlscy5EZXNjcmlwdGlvblwiPlxyXG4gICAgICAgICAgICA8L3RleHRhcmVhPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibm90ZXNCb3R0b25Cb3JkZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1lbnRzQnV0dG9uRGl2XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1aWNrQ29tbWVudHNEaXZcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCAqbmdGb3I9XCJsZXQgcXVpY2tDb21tZW50IG9mIHF1aWNrQ29tbWVudExpc3Q7IGxldCBpID0gaW5kZXg7XCIgY2xhc3M9XCJxdWlja05vdGVzQm90dG9uXCJcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiIHZhbHVlPVwie3tpKzF9fVwiIChjbGljayk9XCJhZGRRdWlja0NvbW1lbnRUb0Rlc2NyaXB0aW9uKHF1aWNrQ29tbWVudClcIlxyXG4gICAgICAgICAgICAgICAgICB0aXRsZT1cInt7cXVpY2tDb21tZW50fX1cIj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsbE5vdGVzQnV0dG9uc1NlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInN1Ym1pdEJ1dHRvblwiIHR5cGU9XCJidXR0b25cIiB2YWx1ZT1cIlNhdmVcIiAoY2xpY2spPVwic3VibWl0QWN0aXZpdHkoKVwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhQWN0aXZpdHlEZXRhaWxzLklzVW5TYXZlZFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxpbnB1dCAqbmdJZj1cInJlY2VudFNjZW5hcmlvLklzUHJvY2Vzc2luZ1wiIGNsYXNzPVwic3VibWl0QnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiIHZhbHVlPVwiU2F2ZVwiIChjbGljayk9XCJzdWJtaXRBY3Rpdml0eShpZHgpXCIgW2Rpc2FibGVkXT1cIiFyZWNlbnRTY2VuYXJpby5Jc1VuU2F2ZWRcIi8+IC0tPlxyXG4gICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cIkFjdGl2aXR5RGV0YWlscy5Jc1Byb2Nlc3NpbmdcIiBjbGFzcz1cImxvYWRpbmdJY29uXCIgc3JjPVwiLi4vLi4vYXNzZXRzL2ltYWdlcy9sb2FkaW5nLmdpZlwiXHJcbiAgICAgICAgICAgICAgICAgIHRpdGxlPVwiVXBkYXRpbmcgQWN0aXZpdHlcIiAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLSA8L2Zvcm0+IC0tPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2ICpuZ0lmPVwiQWN0aXZpdHlEZXRhaWxzLlNjZW5hcmlvSWQgIT09IHdvcmtpbmdTY2VuYXJpb0lEIFwiPlxyXG4gIDxkaXYgW2NsYXNzLmNhbGxIZWFkZXJCb3R0b21Cb3JkZXJdPSdsYXN0JyAoY2xpY2spPVwiZXhwYW5kQW5kQ29sbGFwc2VSZWNlbnRBY3Rpdml0eSh0cnVlKVwiXHJcbiAgICBjbGFzcz1cImVkaXRvciBjYWxsSGVhZGVyUmVjZW50QWN0aXZpdHlVbnNlbGVjdGVkXCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJoZWFkZXJMYWJlbENsaWNrYWJsZUxvb2tcIj5cclxuICAgICAgPGltZyBbc3JjXT1cImdldEljb24oQWN0aXZpdHlEZXRhaWxzLkNoYW5uZWxUeXBlKVwiIGNsYXNzPVwiUmVjZW50Q2FsbHNJbWdcIiAvPlxyXG4gICAgICA8Yj57eyBBY3Rpdml0eURldGFpbHMuU3ViamVjdCB9fTwvYj5cclxuICAgIDwvbGFiZWw+XHJcbiAgICA8aW1nICpuZ0lmPVwiQWN0aXZpdHlEZXRhaWxzLkFjdGl2aXR5SWRcIiBjbGFzcz1cIlJlY2VudENhbGxzSW1nRm9yQWN0aXZpdHlcIiBzcmM9XCIuLi8uLi9hc3NldHMvaW1hZ2VzL29wZW5fYWN0aXZpdHkucG5nXCJcclxuICAgICAgdGl0bGU9XCJPcGVuIEFjdGl2aXR5XCIgKGNsaWNrKT1cIm9wZW5BY3Rpdml0eSgpOyRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIiAvPlxyXG4gICAgPGxhYmVsICpuZ0lmPVwiQWN0aXZpdHlEZXRhaWxzLklzVW5TYXZlZCAmJiBpc0luQ29uc29sZVZpZXdcIiBjbGFzcz1cInVuc2F2ZWRUZXh0XCI+dW5zYXZlZDwvbGFiZWw+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuIl19
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjZW50LWFjdGl2aXR5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL1VJTGlicmFyeS9zcmMvYXBwL2NvbXBvbmVudHMvcmVjZW50LWFjdGl2aXR5L3JlY2VudC1hY3Rpdml0eS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9VSUxpYnJhcnkvc3JjL2FwcC9jb21wb25lbnRzL3JlY2VudC1hY3Rpdml0eS9yZWNlbnQtYWN0aXZpdHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFJUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQVMvQixNQUFNLE9BQU8sdUJBQXVCO0lBQ3pCLGVBQWUsQ0FBWTtJQUMzQixlQUFlLENBQVU7SUFDekIsZ0JBQWdCLENBQVc7SUFDM0IsaUJBQWlCLENBQVM7SUFDMUIsR0FBRyxDQUFTO0lBQ1osSUFBSSxDQUFVO0lBQ2QsYUFBYSxDQUFxQjtJQUNsQyxjQUFjLENBQXFCO0lBRWxDLFlBQVksQ0FJbkI7SUFFSyxTQUFTLENBQWdCO0lBQ3pCLFNBQVMsQ0FBYztJQUUvQjtRQUNFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBSWhDLENBQUM7UUFFTCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxXQUFXO0lBQ1gsQ0FBQztJQUVELE9BQU8sQ0FBQyxRQUFRO1FBQ2QsUUFBUSxRQUFRLEVBQUU7WUFD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QkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUksWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgT25Jbml0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3lcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IElBY3Rpdml0eSB9IGZyb20gJy4uLy4uL21vZGVscy9JQWN0aXZpdHknO1xyXG5pbXBvcnQgeyBJQWN0aXZpdHlEZXRhaWxzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0lBY3Rpdml0eURldGFpbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhbWMtcmVjZW50LWFjdGl2aXR5JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVjZW50LWFjdGl2aXR5LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yZWNlbnQtYWN0aXZpdHkuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWNlbnRBY3Rpdml0eUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIEFjdGl2aXR5RGV0YWlsczogSUFjdGl2aXR5O1xyXG4gIEBJbnB1dCgpIGlzSW5Db25zb2xlVmlldzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBxdWlja0NvbW1lbnRMaXN0OiBzdHJpbmdbXTtcclxuICBASW5wdXQoKSB3b3JraW5nU2NlbmFyaW9JRDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGlkeDogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGxhc3Q6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgV2hvT2JqZWN0TGlzdDogSUFjdGl2aXR5RGV0YWlsc1tdO1xyXG4gIEBJbnB1dCgpIFdoYXRPYmplY3RMaXN0OiBJQWN0aXZpdHlEZXRhaWxzW107XHJcblxyXG4gIEBPdXRwdXQoKSBFdmVudEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBldmVudE5hbWU6IHN0cmluZztcclxuICAgIGlkeDogbnVtYmVyO1xyXG4gICAgbmV3VmFsdWU/OiBJQWN0aXZpdHk7XHJcbiAgfT47XHJcblxyXG4gIHByaXZhdGUgZGVib3VuY2VyOiBTdWJqZWN0PHZvaWQ+O1xyXG4gIHByaXZhdGUgZXZlbnRMaXN0OiBTZXQ8U3RyaW5nPjtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLkV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgICBldmVudE5hbWU6IHN0cmluZztcclxuICAgICAgaWR4OiBudW1iZXI7XHJcbiAgICAgIG5ld1ZhbHVlPzogSUFjdGl2aXR5O1xyXG4gICAgfT4oKTtcclxuXHJcbiAgICB0aGlzLmRlYm91bmNlciA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgICB0aGlzLmV2ZW50TGlzdCA9IG5ldyBTZXQoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgZ2V0SWNvbihzY2VuYXJpbyk6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKHNjZW5hcmlvKSB7XHJcbiAgICBjYXNlICdUZWxlcGhvbnknOlxyXG4gICAgICByZXR1cm4gJy4uLy4uL2Fzc2V0cy9pbWFnZXMvUGhvbmVfTnVtYmVyX0ljb24ucG5nJztcclxuICAgIGNhc2UgJ0VtYWlsJzpcclxuICAgICAgcmV0dXJuICcuLi8uLi9hc3NldHMvaW1hZ2VzL2VtYWlsVGFiLnBuZyc7XHJcbiAgICBkZWZhdWx0OlxyXG4gICAgICByZXR1cm4gJy4uLy4uL2Fzc2V0cy9pbWFnZXMvY2hhdC5wbmcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlYm91bmNlci5waXBlKGRlYm91bmNlVGltZSg1MDApKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBjb25zdCBuZXdFdmVudCA9IHtcclxuICAgICAgICBldmVudE5hbWU6IEFycmF5LmZyb20odGhpcy5ldmVudExpc3QpLmpvaW4oJ3wnKSxcclxuICAgICAgICBpZHg6IHRoaXMuaWR4LFxyXG4gICAgICAgIG5ld1ZhbHVlOiB0aGlzLkFjdGl2aXR5RGV0YWlsc1xyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLkV2ZW50RW1pdHRlci5lbWl0KG5ld0V2ZW50KTtcclxuICAgICAgdGhpcy5ldmVudExpc3QuY2xlYXIoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7fVxyXG5cclxuICBleHBhbmRBbmRDb2xsYXBzZVJlY2VudEFjdGl2aXR5KGlzRXhwYW5kOiBib29sZWFuKSB7XHJcbiAgICBpZiAoaXNFeHBhbmQpIHtcclxuICAgICAgdGhpcy5FdmVudEVtaXR0ZXIuZW1pdCh7XHJcbiAgICAgICAgZXZlbnROYW1lOiAnV29ya2luZ0V2dGl2aXR5Q2hhbmdlZCcsXHJcbiAgICAgICAgaWR4OiB0aGlzLmlkeCxcclxuICAgICAgICBuZXdWYWx1ZTogdGhpcy5BY3Rpdml0eURldGFpbHNcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLkV2ZW50RW1pdHRlci5lbWl0KHtcclxuICAgICAgICBldmVudE5hbWU6ICdXb3JraW5nRXZ0aXZpdHlDaGFuZ2VkJyxcclxuICAgICAgICBpZHg6IC0xLFxyXG4gICAgICAgIG5ld1ZhbHVlOiB0aGlzLkFjdGl2aXR5RGV0YWlsc1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW5BY3Rpdml0eSgpIHtcclxuICAgIHRoaXMuRXZlbnRFbWl0dGVyLmVtaXQoe1xyXG4gICAgICBldmVudE5hbWU6ICdPcGVuQ2FsbEFjdGl2aXR5JyxcclxuICAgICAgaWR4OiB0aGlzLmlkeCxcclxuICAgICAgbmV3VmFsdWU6IHRoaXMuQWN0aXZpdHlEZXRhaWxzXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uU3ViamVjdENoYW5nZSgpIHtcclxuICAgIHRoaXMuZXZlbnRMaXN0LmFkZCgnQWN0aXZpdHlTdWJqZWN0Q2hhbmdlZCcpO1xyXG4gICAgdGhpcy5kZWJvdW5jZXIubmV4dCgpO1xyXG4gIH1cclxuXHJcbiAgb25TdWJqZWN0S2V5VXAoKSB7XHJcbiAgICB0aGlzLmV2ZW50TGlzdC5hZGQoJ0FjdGl2aXR5U3ViamVjdENoYW5nZWQnKTtcclxuICAgIHRoaXMuZGVib3VuY2VyLm5leHQoKTtcclxuICB9XHJcblxyXG4gIG9uV2hvT2JqZWN0Q2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuQWN0aXZpdHlEZXRhaWxzLldob09iamVjdCA9IHRoaXMuV2hvT2JqZWN0TGlzdC5maW5kKChvYmopID0+IG9iai5vYmplY3RJZCA9PT0gZXZlbnQpO1xyXG4gICAgdGhpcy5FdmVudEVtaXR0ZXIuZW1pdCh7XHJcbiAgICAgIGV2ZW50TmFtZTogJ0FjdGl2aXR5V2hvT2JqZWN0Q2hhbmdlZCcsXHJcbiAgICAgIGlkeDogdGhpcy5pZHgsXHJcbiAgICAgIG5ld1ZhbHVlOiB0aGlzLkFjdGl2aXR5RGV0YWlsc1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblJlbGF0ZWRUb0NoYW5nZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLkFjdGl2aXR5RGV0YWlscy5XaGF0T2JqZWN0ID0gdGhpcy5XaGF0T2JqZWN0TGlzdC5maW5kKChvYmopID0+IG9iai5vYmplY3RJZCA9PT0gZXZlbnQpO1xyXG4gICAgdGhpcy5FdmVudEVtaXR0ZXIuZW1pdCh7XHJcbiAgICAgIGV2ZW50TmFtZTogJ0FjdGl2aXR5V2hhdE9iamVjdENoYW5nZWQnLFxyXG4gICAgICBpZHg6IHRoaXMuaWR4LFxyXG4gICAgICBuZXdWYWx1ZTogdGhpcy5BY3Rpdml0eURldGFpbHNcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25DYWxsTm90ZXNDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLmV2ZW50TGlzdC5hZGQoJ0FjdGl2aXR5Q2FsbE5vdGVDaGFuZ2VkJyk7XHJcbiAgICB0aGlzLmRlYm91bmNlci5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICBvbkNhbGxOb3Rlc0tleVVwKCkge1xyXG4gICAgdGhpcy5ldmVudExpc3QuYWRkKCdBY3Rpdml0eUNhbGxOb3RlQ2hhbmdlZCcpO1xyXG4gICAgdGhpcy5kZWJvdW5jZXIubmV4dCgpO1xyXG4gIH1cclxuXHJcbiAgYWRkUXVpY2tDb21tZW50VG9EZXNjcmlwdGlvbihjb21tZW50OiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLkFjdGl2aXR5RGV0YWlscy5EZXNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLkFjdGl2aXR5RGV0YWlscy5EZXNjcmlwdGlvbiArPSAnXFxuJztcclxuICAgIH1cclxuICAgIHRoaXMuQWN0aXZpdHlEZXRhaWxzLkRlc2NyaXB0aW9uICs9IGNvbW1lbnQ7XHJcbiAgICB0aGlzLmV2ZW50TGlzdC5hZGQoJ0FjdGl2aXR5Q2FsbE5vdGVDaGFuZ2VkJyk7XHJcbiAgICB0aGlzLmRlYm91bmNlci5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICBzdWJtaXRBY3Rpdml0eSgpIHtcclxuICAgIHRoaXMuQWN0aXZpdHlEZXRhaWxzLklzUHJvY2Vzc2luZyA9IHRydWU7XHJcbiAgICB0aGlzLkV2ZW50RW1pdHRlci5lbWl0KHtcclxuICAgICAgZXZlbnROYW1lOiAnU3VibWl0QWN0aXZpdHknLFxyXG4gICAgICBpZHg6IHRoaXMuaWR4LFxyXG4gICAgICBuZXdWYWx1ZTogdGhpcy5BY3Rpdml0eURldGFpbHNcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2ICpuZ0lmPVwiQWN0aXZpdHlEZXRhaWxzLlNjZW5hcmlvSWQgPT09IHdvcmtpbmdTY2VuYXJpb0lEXCI+XHJcbiAgPGRpdiAoY2xpY2spPVwiZXhwYW5kQW5kQ29sbGFwc2VSZWNlbnRBY3Rpdml0eShmYWxzZSk7XCIgY2xhc3M9XCJlZGl0b3IgY2FsbEhlYWRlclJlY2VudEFjdGl2aXR5U2VsZWN0ZWRcIj5cclxuICAgIDxsYWJlbCBjbGFzcz1cImhlYWRlckxhYmVsQ2xpY2thYmxlTG9va1wiPlxyXG4gICAgICA8aW1nIFtzcmNdPVwiZ2V0SWNvbihBY3Rpdml0eURldGFpbHMuQ2hhbm5lbFR5cGUpXCIgY2xhc3M9XCJSZWNlbnRDYWxsc0ltZ1wiIC8+XHJcbiAgICAgIDxiPnt7IEFjdGl2aXR5RGV0YWlscy5TdWJqZWN0IH19PC9iPlxyXG4gICAgPC9sYWJlbD5cclxuICAgIDxpbWcgKm5nSWY9XCJBY3Rpdml0eURldGFpbHMuQWN0aXZpdHlJZFwiIGNsYXNzPVwiUmVjZW50Q2FsbHNJbWdGb3JBY3Rpdml0eVwiIHNyYz1cIi4uLy4uL2Fzc2V0cy9pbWFnZXMvb3Blbl9hY3Rpdml0eS5wbmdcIlxyXG4gICAgICB0aXRsZT1cIk9wZW4gQWN0aXZpdHlcIiAoY2xpY2spPVwib3BlbkFjdGl2aXR5KCk7JGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiIC8+XHJcbiAgICA8bGFiZWwgKm5nSWY9XCJBY3Rpdml0eURldGFpbHMuSXNVblNhdmVkICYmIGlzSW5Db25zb2xlVmlld1wiIGNsYXNzPVwidW5zYXZlZFRleHRcIj51bnNhdmVkPC9sYWJlbD5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiY2FsbEJvZHlcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJncmF5LW91dFwiICpuZ0lmPVwiQWN0aXZpdHlEZXRhaWxzLklzUmVjZW50V29ya0l0ZW1Mb2FkaW5nXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxpbWcgY2xhc3M9XCJzcGlubmVyXCIgc3JjPVwiLi4vLi4vYXNzZXRzL2ltYWdlcy92aWV3X3Byb2dyZXNzLmdpZlwiIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYWN0aXZpdHlGaWVsZHNcIj5cclxuICAgICAgPCEtLSA8Zm9ybT4gLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJlZGl0b3IgZGlzcGxheURpdlwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImRpc3BsYXlMYWJlbHNcIiB0aXRsZT1cIlN1YmplY3RcIj5TdWJqZWN0PC9sYWJlbD5cclxuICAgICAgICA8aW5wdXQgY2xhc3M9XCJhY3Rpdml0eVN1YmplY3RUZXh0Qm94U3R5bGUgZGlzcGxheURhdGFcIiB0eXBlPVwidGV4dFwiIChjaGFuZ2UpPVwib25TdWJqZWN0Q2hhbmdlKCk7XCJcclxuICAgICAgICAgIChrZXl1cCk9XCJvblN1YmplY3RLZXlVcCgpXCIgbmFtZT1cInN1YmplY3RcIiBbKG5nTW9kZWwpXT1cIkFjdGl2aXR5RGV0YWlscy5TdWJqZWN0XCIgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJlZGl0b3IgZGlzcGxheURpdlwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImRpc3BsYXlMYWJlbHNcIiB0aXRsZT1cIk5hbWVcIj5OYW1lPC9sYWJlbD5cclxuICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZHJvcERvd25MaXN0U3R5bGUgZGlzcGxheURhdGFcIiBbbmdNb2RlbF09XCJBY3Rpdml0eURldGFpbHMuV2hvT2JqZWN0Lm9iamVjdElkXCJcclxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uV2hvT2JqZWN0Q2hhbmdlKCRldmVudClcIiBuYW1lPVwid2hvSXRlbVwiPlxyXG4gICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgd2hvSXRlbSBvZiBXaG9PYmplY3RMaXN0XCIgW25nVmFsdWVdPVwid2hvSXRlbS5vYmplY3RJZFwiPlxyXG4gICAgICAgICAgICB7eyh3aG9JdGVtLmRpc3BsYXlOYW1lICYmIHdob0l0ZW0ub2JqZWN0TmFtZSkgPyAod2hvSXRlbS5kaXNwbGF5TmFtZSArICc6ICcgKyB3aG9JdGVtLm9iamVjdE5hbWUpIDogXCJcIiB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgPCEtLSA8b3B0aW9uIHZhbHVlPVwiVXNlclNlbGVjdGVkRm9yRW1wdHlSZWNvcmRcIj48L29wdGlvbj4gLS0+XHJcbiAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZWRpdG9yIGRpc3BsYXlEaXZcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJkaXNwbGF5TGFiZWxzXCIgdGl0bGU9XCJSZWdhcmRpbmdcIj5SZWxhdGVkIFRvPC9sYWJlbD5cclxuICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZHJvcERvd25MaXN0U3R5bGUgZGlzcGxheURhdGFcIiBbbmdNb2RlbF09XCJBY3Rpdml0eURldGFpbHMuV2hhdE9iamVjdC5vYmplY3RJZFwiXHJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblJlbGF0ZWRUb0NoYW5nZSgkZXZlbnQpXCIgbmFtZT1cIndoYXRJdGVtXCI+XHJcbiAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB3aGF0SXRlbSBvZiBXaGF0T2JqZWN0TGlzdDtcIiBbbmdWYWx1ZV09XCJ3aGF0SXRlbS5vYmplY3RJZFwiPlxyXG4gICAgICAgICAgICB7eyAod2hhdEl0ZW0uZGlzcGxheU5hbWUgJiYgd2hhdEl0ZW0ub2JqZWN0TmFtZSkgPyAod2hhdEl0ZW0uZGlzcGxheU5hbWUgKyAnOiAnICsgd2hhdEl0ZW0ub2JqZWN0TmFtZSkgOiBcIlwiIH19PC9vcHRpb24+XHJcbiAgICAgICAgICA8IS0tIDxvcHRpb24gdmFsdWU9XCJVc2VyU2VsZWN0ZWRGb3JFbXB0eVJlY29yZFwiPjwvb3B0aW9uPiAtLT5cclxuICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJlZGl0b3IgZGlzcGxheURpdlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYWxsTm90ZXNTZWN0aW9uXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsbE5vdGVzVGV4dEFyZWFcIj5cclxuICAgICAgICAgICAgPHRleHRhcmVhIHBsYWNlaG9sZGVyPVwiQ2xpY2sgdG8gYWRkIGEgY29tbWVudFwiIGNsYXNzPVwiYWN0aXZpdHlDb21tZW50c1RleHRCb3hTdHlsZVwiXHJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNhbGxOb3Rlc0NoYW5nZSgpO1wiIChrZXl1cCk9XCJvbkNhbGxOb3Rlc0tleVVwKClcIiBuYW1lPVwiZGVzY3JpcHRpb25cIiByb3dzPVwiNVwiIHRpdGxlPVwiXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIkFjdGl2aXR5RGV0YWlscy5EZXNjcmlwdGlvblwiPlxyXG4gICAgICAgICAgICA8L3RleHRhcmVhPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibm90ZXNCb3R0b25Cb3JkZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1lbnRzQnV0dG9uRGl2XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1aWNrQ29tbWVudHNEaXZcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCAqbmdGb3I9XCJsZXQgcXVpY2tDb21tZW50IG9mIHF1aWNrQ29tbWVudExpc3Q7IGxldCBpID0gaW5kZXg7XCIgY2xhc3M9XCJxdWlja05vdGVzQm90dG9uXCJcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiIHZhbHVlPVwie3tpKzF9fVwiIChjbGljayk9XCJhZGRRdWlja0NvbW1lbnRUb0Rlc2NyaXB0aW9uKHF1aWNrQ29tbWVudClcIlxyXG4gICAgICAgICAgICAgICAgICB0aXRsZT1cInt7cXVpY2tDb21tZW50fX1cIj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsbE5vdGVzQnV0dG9uc1NlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInN1Ym1pdEJ1dHRvblwiIHR5cGU9XCJidXR0b25cIiB2YWx1ZT1cIlNhdmVcIiAoY2xpY2spPVwic3VibWl0QWN0aXZpdHkoKVwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhQWN0aXZpdHlEZXRhaWxzLklzVW5TYXZlZFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxpbnB1dCAqbmdJZj1cInJlY2VudFNjZW5hcmlvLklzUHJvY2Vzc2luZ1wiIGNsYXNzPVwic3VibWl0QnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiIHZhbHVlPVwiU2F2ZVwiIChjbGljayk9XCJzdWJtaXRBY3Rpdml0eShpZHgpXCIgW2Rpc2FibGVkXT1cIiFyZWNlbnRTY2VuYXJpby5Jc1VuU2F2ZWRcIi8+IC0tPlxyXG4gICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cIkFjdGl2aXR5RGV0YWlscy5Jc1Byb2Nlc3NpbmdcIiBjbGFzcz1cImxvYWRpbmdJY29uXCIgc3JjPVwiLi4vLi4vYXNzZXRzL2ltYWdlcy9sb2FkaW5nLmdpZlwiXHJcbiAgICAgICAgICAgICAgICAgIHRpdGxlPVwiVXBkYXRpbmcgQWN0aXZpdHlcIiAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLSA8L2Zvcm0+IC0tPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2ICpuZ0lmPVwiQWN0aXZpdHlEZXRhaWxzLlNjZW5hcmlvSWQgIT09IHdvcmtpbmdTY2VuYXJpb0lEIFwiPlxyXG4gIDxkaXYgW2NsYXNzLmNhbGxIZWFkZXJCb3R0b21Cb3JkZXJdPSdsYXN0JyAoY2xpY2spPVwiZXhwYW5kQW5kQ29sbGFwc2VSZWNlbnRBY3Rpdml0eSh0cnVlKVwiXHJcbiAgICBjbGFzcz1cImVkaXRvciBjYWxsSGVhZGVyUmVjZW50QWN0aXZpdHlVbnNlbGVjdGVkXCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJoZWFkZXJMYWJlbENsaWNrYWJsZUxvb2tcIj5cclxuICAgICAgPGltZyBbc3JjXT1cImdldEljb24oQWN0aXZpdHlEZXRhaWxzLkNoYW5uZWxUeXBlKVwiIGNsYXNzPVwiUmVjZW50Q2FsbHNJbWdcIiAvPlxyXG4gICAgICA8Yj57eyBBY3Rpdml0eURldGFpbHMuU3ViamVjdCB9fTwvYj5cclxuICAgIDwvbGFiZWw+XHJcbiAgICA8aW1nICpuZ0lmPVwiQWN0aXZpdHlEZXRhaWxzLkFjdGl2aXR5SWRcIiBjbGFzcz1cIlJlY2VudENhbGxzSW1nRm9yQWN0aXZpdHlcIiBzcmM9XCIuLi8uLi9hc3NldHMvaW1hZ2VzL29wZW5fYWN0aXZpdHkucG5nXCJcclxuICAgICAgdGl0bGU9XCJPcGVuIEFjdGl2aXR5XCIgKGNsaWNrKT1cIm9wZW5BY3Rpdml0eSgpOyRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIiAvPlxyXG4gICAgPGxhYmVsICpuZ0lmPVwiQWN0aXZpdHlEZXRhaWxzLklzVW5TYXZlZCAmJiBpc0luQ29uc29sZVZpZXdcIiBjbGFzcz1cInVuc2F2ZWRUZXh0XCI+dW5zYXZlZDwvbGFiZWw+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuIl19
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { Component, Input, Output
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "@angular/common";
|
|
4
4
|
import * as i2 from "../interaction/interaction.component";
|
|
5
5
|
export class ScenarioComponent {
|
|
6
6
|
scenario;
|
|
7
|
-
newMsgs;
|
|
8
7
|
minimizedChanged = new EventEmitter();
|
|
9
8
|
isAgentTyping = new EventEmitter();
|
|
10
9
|
newMessage = new EventEmitter();
|
|
@@ -16,16 +15,14 @@ export class ScenarioComponent {
|
|
|
16
15
|
onMinimizedChanged() {
|
|
17
16
|
this.minimizedChanged.emit();
|
|
18
17
|
}
|
|
19
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
20
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.
|
|
18
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ScenarioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
19
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ScenarioComponent, selector: "amc-scenario", inputs: { scenario: "scenario" }, outputs: { minimizedChanged: "minimizedChanged", isAgentTyping: "isAgentTyping", newMessage: "newMessage", afterViewChecked: "afterViewChecked" }, ngImport: i0, template: "<ng-container *ngIf=\"scenario && scenario.interactions\">\r\n <amc-interaction *ngFor=\"let interaction of scenario.interactions\" [interaction]=\"interaction\"\r\n (minimizedChanged)=\"onMinimizedChanged()\" (isAgentTyping)=\"isAgentTyping.emit($event)\"\r\n (newMessage)=\"newMessage.emit($event)\">\r\n </amc-interaction>\r\n</ng-container>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.InteractionComponent, selector: "amc-interaction", inputs: ["interaction"], outputs: ["minimizedChanged", "isAgentTyping", "newMessage"] }] });
|
|
21
20
|
}
|
|
22
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ScenarioComponent, decorators: [{
|
|
23
22
|
type: Component,
|
|
24
|
-
args: [{ selector: 'amc-scenario', template: "<ng-container *ngIf=\"scenario && scenario.interactions\">\r\n <amc-interaction *ngFor=\"let interaction of scenario.interactions\" [interaction]=\"interaction\"
|
|
23
|
+
args: [{ selector: 'amc-scenario', template: "<ng-container *ngIf=\"scenario && scenario.interactions\">\r\n <amc-interaction *ngFor=\"let interaction of scenario.interactions\" [interaction]=\"interaction\"\r\n (minimizedChanged)=\"onMinimizedChanged()\" (isAgentTyping)=\"isAgentTyping.emit($event)\"\r\n (newMessage)=\"newMessage.emit($event)\">\r\n </amc-interaction>\r\n</ng-container>\r\n" }]
|
|
25
24
|
}], ctorParameters: function () { return []; }, propDecorators: { scenario: [{
|
|
26
25
|
type: Input
|
|
27
|
-
}], newMsgs: [{
|
|
28
|
-
type: Input
|
|
29
26
|
}], minimizedChanged: [{
|
|
30
27
|
type: Output
|
|
31
28
|
}], isAgentTyping: [{
|
|
@@ -35,4 +32,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
|
|
|
35
32
|
}], afterViewChecked: [{
|
|
36
33
|
type: Output
|
|
37
34
|
}] } });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmFyaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvVUlMaWJyYXJ5L3NyYy9hcHAvY29tcG9uZW50cy9zY2VuYXJpby9zY2VuYXJpby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9VSUxpYnJhcnkvc3JjL2FwcC9jb21wb25lbnRzL3NjZW5hcmlvL3NjZW5hcmlvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7Ozs7QUFRdkIsTUFBTSxPQUFPLGlCQUFpQjtJQUNuQixRQUFRLENBQVk7SUFDbkIsZ0JBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUN0QyxhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQUM1QyxVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUN4QyxnQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBRWhELGdCQUFlLENBQUM7SUFFaEIsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQixDQUFDO3dHQWZVLGlCQUFpQjs0RkFBakIsaUJBQWlCLHlPQ2Q5QixzV0FNQTs7NEZEUWEsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLGNBQWM7MEVBS2YsUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJU2NlbmFyaW8gfSBmcm9tICcuLi8uLi9tb2RlbHMvdWlsaWJyYXJ5Lm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYW1jLXNjZW5hcmlvJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2NlbmFyaW8uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NjZW5hcmlvLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFNjZW5hcmlvQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3Q2hlY2tlZCB7XHJcbiAgQElucHV0KCkgc2NlbmFyaW86IElTY2VuYXJpbztcclxuICBAT3V0cHV0KCkgbWluaW1pemVkQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgaXNBZ2VudFR5cGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICBAT3V0cHV0KCkgbmV3TWVzc2FnZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBhZnRlclZpZXdDaGVja2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcclxuICAgIHRoaXMuYWZ0ZXJWaWV3Q2hlY2tlZC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvbk1pbmltaXplZENoYW5nZWQoKSB7XHJcbiAgICB0aGlzLm1pbmltaXplZENoYW5nZWQuZW1pdCgpO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwic2NlbmFyaW8gJiYgc2NlbmFyaW8uaW50ZXJhY3Rpb25zXCI+XHJcbiAgPGFtYy1pbnRlcmFjdGlvbiAqbmdGb3I9XCJsZXQgaW50ZXJhY3Rpb24gb2Ygc2NlbmFyaW8uaW50ZXJhY3Rpb25zXCIgW2ludGVyYWN0aW9uXT1cImludGVyYWN0aW9uXCJcclxuICAgIChtaW5pbWl6ZWRDaGFuZ2VkKT1cIm9uTWluaW1pemVkQ2hhbmdlZCgpXCIgKGlzQWdlbnRUeXBpbmcpPVwiaXNBZ2VudFR5cGluZy5lbWl0KCRldmVudClcIlxyXG4gICAgKG5ld01lc3NhZ2UpPVwibmV3TWVzc2FnZS5lbWl0KCRldmVudClcIj5cclxuICA8L2FtYy1pbnRlcmFjdGlvbj5cclxuPC9uZy1jb250YWluZXI+XHJcbiJdfQ==
|
|
@@ -21,6 +21,15 @@ export class SearchInformationComponent {
|
|
|
21
21
|
ngOnChanges() {
|
|
22
22
|
this.renderData();
|
|
23
23
|
}
|
|
24
|
+
onAgentSelectedCallerInformation(event) {
|
|
25
|
+
try {
|
|
26
|
+
this.agentSelectedCallerInformation.emit({
|
|
27
|
+
id: event.target.id,
|
|
28
|
+
value: event.target.value
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
catch (error) { }
|
|
32
|
+
}
|
|
24
33
|
renderData() {
|
|
25
34
|
try {
|
|
26
35
|
this.singleMatchData = null;
|
|
@@ -37,15 +46,6 @@ export class SearchInformationComponent {
|
|
|
37
46
|
}
|
|
38
47
|
catch (error) { }
|
|
39
48
|
}
|
|
40
|
-
onAgentSelectedCallerInformation(event) {
|
|
41
|
-
try {
|
|
42
|
-
this.agentSelectedCallerInformation.emit({
|
|
43
|
-
id: event.target.id,
|
|
44
|
-
value: event.target.value
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
catch (error) { }
|
|
48
|
-
}
|
|
49
49
|
parseSearchRecordForNameSingleMatch(searchRecord) {
|
|
50
50
|
const results = [];
|
|
51
51
|
try {
|
|
@@ -142,12 +142,12 @@ export class SearchInformationComponent {
|
|
|
142
142
|
catch (error) { }
|
|
143
143
|
return layoutInfo;
|
|
144
144
|
}
|
|
145
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
146
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.
|
|
145
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchInformationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
146
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SearchInformationComponent, selector: "amc-search-information", inputs: { ActivityDetails: "ActivityDetails", searchLayout: "searchLayout", searchRecordList: "searchRecordList" }, outputs: { agentSelectedCallerInformation: "agentSelectedCallerInformation" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"callDisplay\">\r\n <div class=\"editor callHeader\">\r\n <label class=\"headerLabel\">\r\n <b>Caller Information</b>\r\n </label>\r\n <img\r\n title=\"Multiple Matches Available\"\r\n *ngIf=\"this.searchRecordList.length > 1\"\r\n src=\"../../assets/images/MultiMatchAlert.png\"\r\n class=\"multiMatchImg\"\r\n />\r\n <img\r\n *ngIf=\"isSearchInformationMaximized\"\r\n class=\"ViewResizeImage\"\r\n src=\"assets/images/section_collapse.png\"\r\n (click)=\"isSearchInformationMaximized = false\"\r\n title=\"Collapse\"\r\n />\r\n <img\r\n *ngIf=\"!isSearchInformationMaximized\"\r\n class=\"ViewResizeImage\"\r\n src=\"assets/images/section_expand.png\"\r\n (click)=\"isSearchInformationMaximized = true\"\r\n title=\"Expand\"\r\n />\r\n </div>\r\n <div class=\"callBody\" *ngIf=\"isSearchInformationMaximized\">\r\n <div *ngIf=\"this.searchRecordList.length > 1\">\r\n <span class=\"overflowWrapper\">\r\n <img\r\n class=\"CRMResultImageMultiMatch\"\r\n src=\"{{ this.multiMatchData[0][0][2] }}\"\r\n />\r\n <input\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n name=\"{{ this.multiMatchData[0][0][1] }}\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n readonly\r\n class=\"multiMatchLabel\"\r\n title=\"{{ this.multiMatchData[0][0][1] }}\"\r\n type=\"text\"\r\n value=\"{{ this.multiMatchData[0][0][1] }}\"\r\n />\r\n <span style=\"float: right; margin-right: 4%;\">\r\n <img\r\n *ngIf=\"!this.shouldShowAllMultiMatchOptions\"\r\n class=\"CRMExpandImage\"\r\n src=\"../../assets/images/down-arrow.png\"\r\n (click)=\"shouldShowAllMultiMatchOptions = true\"\r\n />\r\n <img\r\n *ngIf=\"this.shouldShowAllMultiMatchOptions\"\r\n class=\"CRMExpandImage\"\r\n src=\"../../assets/images/up-arrow.png\"\r\n (click)=\"shouldShowAllMultiMatchOptions = false\"\r\n />\r\n </span>\r\n </span>\r\n <div *ngIf=\"this.shouldShowAllMultiMatchOptions\">\r\n <div *ngFor=\"let i of this.multiMatchData | slice: 1; let index = index\">\r\n <span\r\n class=\"overflowWrapper\"\r\n >\r\n <img class=\"CRMResultImageMultiMatch\" src=\"{{ i[0][2] }}\" />\r\n <input\r\n id=\"{{ this.searchRecordList[index + 1].id }}\"\r\n name=\"{{ i[0][1] }}\"\r\n readonly\r\n class=\"multiMatchLabel\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n title=\"{{ i[0][1] }}\"\r\n type=\"text\"\r\n value=\"{{ i[0][1] }}\"\r\n />\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Below is the HTML loaded on Single Match -->\r\n <div *ngIf=\"this.searchRecordList.length === 1\">\r\n <div\r\n class=\"editorFull displayDiv\"\r\n *ngFor=\"\r\n let i of this.singleMatchData | slice: 0:1;\r\n let index = index;\r\n let first = first\r\n \"\r\n >\r\n <span class=\"overflowWrapper\">\r\n <img\r\n id=\"EntityIcon\"\r\n src=\"{{ this.singleMatchIconSrc }}\"\r\n class=\"CRMResultImage\"\r\n />\r\n <input\r\n class=\"singleSearchResultSelect singleMatchFirstWrapper \"\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n [class.firstSingleMatchResult]=\"first\"\r\n value=\"{{ i[1] }}\"\r\n title=\"{{ i[1] }}\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n readonly\r\n />\r\n </span>\r\n </div>\r\n <div\r\n class=\"editorFull displayDiv\"\r\n *ngFor=\"\r\n let i of this.singleMatchData | slice: 1;\r\n let index = index;\r\n let first = first\r\n \"\r\n >\r\n <span class=\"overflowWrapper\">\r\n <label title=\"{{ i[0] }}\" class=\"displayLabelsTabbed\">{{\r\n i[0]\r\n }}</label>\r\n <input\r\n class=\"singleSearchResultSelect singleMatchTabbedItemsWrapper singleMatchLabel\"\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n value=\"{{ i[1] }}\"\r\n title=\"{{ i[1] }}\"\r\n readonly\r\n />\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".callHeader{background-color:#f4f5fb!important;width:100%!important;margin-top:0!important;border:1px solid #939598!important}.displayDiv{width:100%;display:flex}.multiMatchImg{height:18px;margin-left:5px}.editor{font-size:.9em;width:70%;text-align:left;margin:4px 5% 0 0;font-family:Arial;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;border:0;padding-top:2px;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.editorFull{font-size:.9em;width:100%;text-align:left;font-family:Arial;white-space:nowrap;text-overflow:ellipsis;border:0;padding-top:2px;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.CRMResultImage{width:18px;height:18px;margin-right:-5px;margin-top:-5px;margin-left:5px}.CRMResultImageMultiMatch{width:18px;height:18px;margin-right:2px;margin-left:5px;margin-top:-5px}.CRMExpandImage{width:6px;height:6px;cursor:pointer;margin-bottom:2px}.callBody{border:1px solid #939598;border-top-color:#939598;border-top-style:solid;border-top-width:1px;border-top:0;position:relative}.callDisplay{margin-bottom:8px;background-color:#fff;display:grid}.multipleSearchResultSelect{border:1px solid #939598!important;border-radius:3px!important;width:96%!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:5px 0% 5px 6px;cursor:pointer}.overflowWrapper{width:100%;overflow-x:hidden;overflow-y:hidden}.singleSearchResultSelect{border:0px solid #939598!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:0 0% 0 0;outline:none}.wrapper{width:79%!important}.singleMatchFirstWrapper{cursor:pointer;border:0px;outline:none;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(100% - 30px)}.singleMatchTabbedItemsWrapper{width:70%}.displayLabels{margin-left:5px;width:calc(20% + 5px);font-weight:400;margin-bottom:0;margin-top:0;outline:none;overflow:hidden;max-width:100px;vertical-align:middle}.displayLabelsMultiMatch{margin-left:5px;width:calc(20% + 5px);font-weight:400;margin-bottom:0;margin-top:0;outline:none}.displayLabelsTabbed{margin-left:5px;width:35%;font-weight:400;margin-bottom:0;margin-top:0;outline:none;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.matchedRecordsMargin{margin-top:1%}.ViewResizeImage{width:20px;height:20px;float:right;cursor:pointer}.headerLabel{margin-left:10px}.firstSingleMatchResult{font-weight:700;border:0px solid #939598!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:0 0% 0 5px;outline:none}.multiMatchLabel{border:0px;cursor:pointer;outline:none;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(95% - 45px)}.singleMatchLabel{border:0px;outline:none;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(65% - 13px)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }] });
|
|
147
147
|
}
|
|
148
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
148
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchInformationComponent, decorators: [{
|
|
149
149
|
type: Component,
|
|
150
|
-
args: [{ selector: 'amc-search-information', template: "<div class=\"callDisplay\">\r\n <div class=\"editor callHeader\">\r\n <label class=\"headerLabel\">\r\n <b>Caller Information</b>\r\n </label>\r\n <img\r\n title=\"Multiple Matches Available\"\r\n *ngIf=\"this.searchRecordList.length > 1\"\r\n src=\"../../assets/images/MultiMatchAlert.png\"\r\n class=\"multiMatchImg\"\r\n />\r\n <img\r\n *ngIf=\"isSearchInformationMaximized\"\r\n class=\"ViewResizeImage\"\r\n src=\"assets/images/section_collapse.png\"\r\n (click)=\"isSearchInformationMaximized = false\"\r\n title=\"Collapse\"\r\n />\r\n <img\r\n *ngIf=\"!isSearchInformationMaximized\"\r\n class=\"ViewResizeImage\"\r\n src=\"assets/images/section_expand.png\"\r\n (click)=\"isSearchInformationMaximized = true\"\r\n title=\"Expand\"\r\n />\r\n </div>\r\n <div class=\"callBody\" *ngIf=\"isSearchInformationMaximized\">\r\n <div *ngIf=\"this.searchRecordList.length > 1\">\r\n <span class=\"overflowWrapper\">\r\n <img\r\n class=\"CRMResultImageMultiMatch\"\r\n src=\"{{ this.multiMatchData[0][0][2] }}\"\r\n />\r\n <input\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n name=\"{{ this.multiMatchData[0][0][1] }}\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n readonly\r\n class=\"multiMatchLabel\"\r\n title=\"{{ this.multiMatchData[0][0][1] }}\"\r\n type=\"text\"\r\n value=\"{{ this.multiMatchData[0][0][1] }}\"\r\n />\r\n <span style=\"float: right; margin-right: 4%;\">\r\n <img\r\n *ngIf=\"!this.shouldShowAllMultiMatchOptions\"\r\n class=\"CRMExpandImage\"\r\n src=\"../../assets/images/down-arrow.png\"\r\n (click)=\"shouldShowAllMultiMatchOptions = true\"\r\n />\r\n <img\r\n *ngIf=\"this.shouldShowAllMultiMatchOptions\"\r\n class=\"CRMExpandImage\"\r\n src=\"../../assets/images/up-arrow.png\"\r\n (click)=\"shouldShowAllMultiMatchOptions = false\"\r\n />\r\n </span>\r\n </span>\r\n <div *ngIf=\"this.shouldShowAllMultiMatchOptions\">\r\n <div *ngFor=\"let i of this.multiMatchData | slice: 1; let index = index\">\r\n <span\r\n class=\"overflowWrapper\"\r\n >\r\n <img class=\"CRMResultImageMultiMatch\" src=\"{{ i[0][2] }}\" />\r\n <input\r\n id=\"{{ this.searchRecordList[index + 1].id }}\"\r\n name=\"{{ i[0][1] }}\"\r\n readonly\r\n class=\"multiMatchLabel\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n title=\"{{ i[0][1] }}\"\r\n type=\"text\"\r\n value=\"{{ i[0][1] }}\"\r\n />\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Below is the HTML loaded on Single Match -->\r\n <div *ngIf=\"this.searchRecordList.length === 1\">\r\n <div\r\n class=\"editorFull displayDiv\"\r\n *ngFor=\"\r\n let i of this.singleMatchData | slice: 0:1;\r\n let index = index;\r\n let first = first\r\n \"\r\n >\r\n <span class=\"overflowWrapper\">\r\n <img\r\n id=\"EntityIcon\"\r\n src=\"{{ this.singleMatchIconSrc }}\"\r\n class=\"CRMResultImage\"\r\n />\r\n <input\r\n class=\"singleSearchResultSelect singleMatchFirstWrapper \"\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n [class.firstSingleMatchResult]=\"first\"\r\n value=\"{{ i[1] }}\"\r\n title=\"{{ i[1] }}\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n readonly\r\n />\r\n </span>\r\n </div>\r\n <div\r\n class=\"editorFull displayDiv\"\r\n *ngFor=\"\r\n let i of this.singleMatchData | slice: 1;\r\n let index = index;\r\n let first = first\r\n \"\r\n >\r\n <span class=\"overflowWrapper\">\r\n <label title=\"{{ i[0] }}\" class=\"displayLabelsTabbed\">{{\r\n i[0]\r\n }}</label>\r\n <input\r\n class=\"singleSearchResultSelect singleMatchTabbedItemsWrapper singleMatchLabel\"\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n value=\"{{ i[1] }}\"\r\n title=\"{{ i[1] }}\"\r\n readonly\r\n />\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".callHeader{background-color:#f4f5fb!important;width:100%!important;margin-top:0!important;border:1px solid #939598!important}.displayDiv{width:100%;display:flex}.multiMatchImg{height:18px;margin-left:5px}.editor{font-size:.9em;width:70%;text-align:left;margin:4px 5% 0 0;font-family:Arial;white-space:nowrap;text-overflow:ellipsis;border:0;padding-top:2px;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.editorFull{font-size:.9em;width:100%;text-align:left;font-family:Arial;white-space:nowrap;text-overflow:ellipsis;border:0;padding-top:2px;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.CRMResultImage{width:18px;height:18px;margin-right:-5px;margin-top:-5px;margin-left:5px}.CRMResultImageMultiMatch{width:18px;height:18px;margin-right:2px;margin-left:5px;margin-top:-5px}.CRMExpandImage{width:6px;height:6px;cursor:pointer;margin-bottom:2px}.callBody{border:1px solid #939598;border-top-color:#939598;border-top-style:solid;border-top-width:1px;border-top:0;position:relative}.callDisplay{margin-bottom:8px;background-color:#fff;display:grid}.multipleSearchResultSelect{border:1px solid #939598!important;border-radius:3px!important;width:96%!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:5px 0% 5px 6px;cursor:pointer}.overflowWrapper{width:100%;overflow-x:hidden;overflow-y:hidden}.singleSearchResultSelect{border:0px solid #939598!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:0 0% 0 0;outline:none}.wrapper{width:79%!important}.singleMatchFirstWrapper{cursor:pointer;border:0px;outline:none;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(100% - 30px)}.singleMatchTabbedItemsWrapper{width:70%}.displayLabels{margin-left:5px;width:calc(20% + 5px);font-weight:400;margin-bottom:0;margin-top:0;outline:none;overflow:hidden;max-width:100px;vertical-align:middle}.displayLabelsMultiMatch{margin-left:5px;width:calc(20% + 5px);font-weight:400;margin-bottom:0;margin-top:0;outline:none}.displayLabelsTabbed{margin-left:5px;width:35%;font-weight:400;margin-bottom:0;margin-top:0;outline:none;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.matchedRecordsMargin{margin-top:1%}.ViewResizeImage{width:20px;height:20px;float:right;cursor:pointer}.headerLabel{margin-left:10px}.firstSingleMatchResult{font-weight:700;border:0px solid #939598!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:0 0% 0 5px;outline:none}.multiMatchLabel{border:0px;cursor:pointer;outline:none;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(95% - 45px)}.singleMatchLabel{border:0px;outline:none;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(65% - 13px)}\n"] }]
|
|
150
|
+
args: [{ selector: 'amc-search-information', template: "<div class=\"callDisplay\">\r\n <div class=\"editor callHeader\">\r\n <label class=\"headerLabel\">\r\n <b>Caller Information</b>\r\n </label>\r\n <img\r\n title=\"Multiple Matches Available\"\r\n *ngIf=\"this.searchRecordList.length > 1\"\r\n src=\"../../assets/images/MultiMatchAlert.png\"\r\n class=\"multiMatchImg\"\r\n />\r\n <img\r\n *ngIf=\"isSearchInformationMaximized\"\r\n class=\"ViewResizeImage\"\r\n src=\"assets/images/section_collapse.png\"\r\n (click)=\"isSearchInformationMaximized = false\"\r\n title=\"Collapse\"\r\n />\r\n <img\r\n *ngIf=\"!isSearchInformationMaximized\"\r\n class=\"ViewResizeImage\"\r\n src=\"assets/images/section_expand.png\"\r\n (click)=\"isSearchInformationMaximized = true\"\r\n title=\"Expand\"\r\n />\r\n </div>\r\n <div class=\"callBody\" *ngIf=\"isSearchInformationMaximized\">\r\n <div *ngIf=\"this.searchRecordList.length > 1\">\r\n <span class=\"overflowWrapper\">\r\n <img\r\n class=\"CRMResultImageMultiMatch\"\r\n src=\"{{ this.multiMatchData[0][0][2] }}\"\r\n />\r\n <input\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n name=\"{{ this.multiMatchData[0][0][1] }}\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n readonly\r\n class=\"multiMatchLabel\"\r\n title=\"{{ this.multiMatchData[0][0][1] }}\"\r\n type=\"text\"\r\n value=\"{{ this.multiMatchData[0][0][1] }}\"\r\n />\r\n <span style=\"float: right; margin-right: 4%;\">\r\n <img\r\n *ngIf=\"!this.shouldShowAllMultiMatchOptions\"\r\n class=\"CRMExpandImage\"\r\n src=\"../../assets/images/down-arrow.png\"\r\n (click)=\"shouldShowAllMultiMatchOptions = true\"\r\n />\r\n <img\r\n *ngIf=\"this.shouldShowAllMultiMatchOptions\"\r\n class=\"CRMExpandImage\"\r\n src=\"../../assets/images/up-arrow.png\"\r\n (click)=\"shouldShowAllMultiMatchOptions = false\"\r\n />\r\n </span>\r\n </span>\r\n <div *ngIf=\"this.shouldShowAllMultiMatchOptions\">\r\n <div *ngFor=\"let i of this.multiMatchData | slice: 1; let index = index\">\r\n <span\r\n class=\"overflowWrapper\"\r\n >\r\n <img class=\"CRMResultImageMultiMatch\" src=\"{{ i[0][2] }}\" />\r\n <input\r\n id=\"{{ this.searchRecordList[index + 1].id }}\"\r\n name=\"{{ i[0][1] }}\"\r\n readonly\r\n class=\"multiMatchLabel\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n title=\"{{ i[0][1] }}\"\r\n type=\"text\"\r\n value=\"{{ i[0][1] }}\"\r\n />\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Below is the HTML loaded on Single Match -->\r\n <div *ngIf=\"this.searchRecordList.length === 1\">\r\n <div\r\n class=\"editorFull displayDiv\"\r\n *ngFor=\"\r\n let i of this.singleMatchData | slice: 0:1;\r\n let index = index;\r\n let first = first\r\n \"\r\n >\r\n <span class=\"overflowWrapper\">\r\n <img\r\n id=\"EntityIcon\"\r\n src=\"{{ this.singleMatchIconSrc }}\"\r\n class=\"CRMResultImage\"\r\n />\r\n <input\r\n class=\"singleSearchResultSelect singleMatchFirstWrapper \"\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n [class.firstSingleMatchResult]=\"first\"\r\n value=\"{{ i[1] }}\"\r\n title=\"{{ i[1] }}\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n readonly\r\n />\r\n </span>\r\n </div>\r\n <div\r\n class=\"editorFull displayDiv\"\r\n *ngFor=\"\r\n let i of this.singleMatchData | slice: 1;\r\n let index = index;\r\n let first = first\r\n \"\r\n >\r\n <span class=\"overflowWrapper\">\r\n <label title=\"{{ i[0] }}\" class=\"displayLabelsTabbed\">{{\r\n i[0]\r\n }}</label>\r\n <input\r\n class=\"singleSearchResultSelect singleMatchTabbedItemsWrapper singleMatchLabel\"\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n value=\"{{ i[1] }}\"\r\n title=\"{{ i[1] }}\"\r\n readonly\r\n />\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".callHeader{background-color:#f4f5fb!important;width:100%!important;margin-top:0!important;border:1px solid #939598!important}.displayDiv{width:100%;display:flex}.multiMatchImg{height:18px;margin-left:5px}.editor{font-size:.9em;width:70%;text-align:left;margin:4px 5% 0 0;font-family:Arial;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;border:0;padding-top:2px;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.editorFull{font-size:.9em;width:100%;text-align:left;font-family:Arial;white-space:nowrap;text-overflow:ellipsis;border:0;padding-top:2px;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.CRMResultImage{width:18px;height:18px;margin-right:-5px;margin-top:-5px;margin-left:5px}.CRMResultImageMultiMatch{width:18px;height:18px;margin-right:2px;margin-left:5px;margin-top:-5px}.CRMExpandImage{width:6px;height:6px;cursor:pointer;margin-bottom:2px}.callBody{border:1px solid #939598;border-top-color:#939598;border-top-style:solid;border-top-width:1px;border-top:0;position:relative}.callDisplay{margin-bottom:8px;background-color:#fff;display:grid}.multipleSearchResultSelect{border:1px solid #939598!important;border-radius:3px!important;width:96%!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:5px 0% 5px 6px;cursor:pointer}.overflowWrapper{width:100%;overflow-x:hidden;overflow-y:hidden}.singleSearchResultSelect{border:0px solid #939598!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:0 0% 0 0;outline:none}.wrapper{width:79%!important}.singleMatchFirstWrapper{cursor:pointer;border:0px;outline:none;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(100% - 30px)}.singleMatchTabbedItemsWrapper{width:70%}.displayLabels{margin-left:5px;width:calc(20% + 5px);font-weight:400;margin-bottom:0;margin-top:0;outline:none;overflow:hidden;max-width:100px;vertical-align:middle}.displayLabelsMultiMatch{margin-left:5px;width:calc(20% + 5px);font-weight:400;margin-bottom:0;margin-top:0;outline:none}.displayLabelsTabbed{margin-left:5px;width:35%;font-weight:400;margin-bottom:0;margin-top:0;outline:none;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.matchedRecordsMargin{margin-top:1%}.ViewResizeImage{width:20px;height:20px;float:right;cursor:pointer}.headerLabel{margin-left:10px}.firstSingleMatchResult{font-weight:700;border:0px solid #939598!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:0 0% 0 5px;outline:none}.multiMatchLabel{border:0px;cursor:pointer;outline:none;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(95% - 45px)}.singleMatchLabel{border:0px;outline:none;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(65% - 13px)}\n"] }]
|
|
151
151
|
}], ctorParameters: function () { return []; }, propDecorators: { ActivityDetails: [{
|
|
152
152
|
type: Input
|
|
153
153
|
}], searchLayout: [{
|
|
@@ -157,4 +157,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
|
|
|
157
157
|
}], agentSelectedCallerInformation: [{
|
|
158
158
|
type: Output
|
|
159
159
|
}] } });
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWluZm9ybWF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL1VJTGlicmFyeS9zcmMvYXBwL2NvbXBvbmVudHMvc2VhcmNoLWluZm9ybWF0aW9uL3NlYXJjaC1pbmZvcm1hdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9VSUxpYnJhcnkvc3JjL2FwcC9jb21wb25lbnRzL3NlYXJjaC1pbmZvcm1hdGlvbi9zZWFyY2gtaW5mb3JtYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFYixNQUFNLGVBQWUsQ0FBQzs7O0FBU3ZCLE1BQU0sT0FBTywwQkFBMEI7SUFDNUIsZUFBZSxDQUFZO0lBQzNCLFlBQVksQ0FBb0I7SUFDaEMsZ0JBQWdCLENBQXlCO0lBQ3hDLDhCQUE4QixDQUdyQztJQUVILDRCQUE0QixDQUFVO0lBQ3RDLGFBQWEsQ0FBUztJQUN0QixrQkFBa0IsQ0FBUztJQUMzQixlQUFlLENBQU07SUFDckIsY0FBYyxDQUFRO0lBQ3RCLDhCQUE4QixDQUFVO0lBRXhDO1FBQ0UsSUFBSSxDQUFDLDRCQUE0QixHQUFHLElBQUksQ0FBQztRQUN6QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsOEJBQThCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUMzRCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRVMsVUFBVTtRQUNsQixJQUFJO1lBQ0YsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDNUIsSUFBSSxDQUFD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QUFTLEVBQUU7b0JBQ2pELEdBQUcsR0FBRyxzQ0FBc0MsQ0FBQztpQkFDOUM7cUJBQU0sSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLFNBQVMsRUFBRTtvQkFDeEQsR0FBRyxHQUFHLHNDQUFzQyxDQUFDO2lCQUM5QztxQkFBTSxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssTUFBTSxFQUFFO29CQUNyRCxHQUFHLEdBQUcsbUNBQW1DLENBQUM7aUJBQzNDO3FCQUFNO29CQUNMLEdBQUcsR0FBRyw0Q0FBNEMsQ0FBQztpQkFDcEQ7YUFDRjtTQUNGO1FBQUMsT0FBTyxLQUFLLEVBQUUsR0FBRTtRQUNsQixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFUyw2QkFBNkIsQ0FBQyxZQUE2QjtRQUNuRSxJQUFJLFVBQWUsQ0FBQztRQUNwQixJQUFJO1lBQ0YsVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUN2QyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FDOUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2hEO1FBQUMsT0FBTyxLQUFLLEVBQUUsR0FBRTtRQUNsQixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO3VHQXRKVSwwQkFBMEI7MkZBQTFCLDBCQUEwQixzUkNmdkMsaWtKQWlJQTs7MkZEbEhhLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDRSx3QkFBd0I7MEVBS3pCLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0ksOEJBQThCO3NCQUF2QyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBPbkNoYW5nZXNcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgYXBpIGZyb20gJ0BhbWMtdGVjaG5vbG9neS9kYXZpbmNpLWFwaSc7XHJcbmltcG9ydCB7IElBY3Rpdml0eSB9IGZyb20gJy4uLy4uL21vZGVscy9JQWN0aXZpdHknO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhbWMtc2VhcmNoLWluZm9ybWF0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLWluZm9ybWF0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtaW5mb3JtYXRpb24uY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZWFyY2hJbmZvcm1hdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KCkgQWN0aXZpdHlEZXRhaWxzOiBJQWN0aXZpdHk7XHJcbiAgQElucHV0KCkgc2VhcmNoTGF5b3V0OiBhcGkuU2VhcmNoTGF5b3V0cztcclxuICBASW5wdXQoKSBzZWFyY2hSZWNvcmRMaXN0OiBBcnJheTxhcGkuSVJlY29yZEl0ZW0+O1xyXG4gIEBPdXRwdXQoKSBhZ2VudFNlbGVjdGVkQ2FsbGVySW5mb3JtYXRpb246IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBpZDogc3RyaW5nO1xyXG4gICAgdmFsdWU6IHN0cmluZztcclxuICB9PjtcclxuXHJcbiAgaXNTZWFyY2hJbmZvcm1hdGlvbk1heGltaXplZDogYm9vbGVhbjtcclxuICBpbWFnZUxvY2F0aW9uOiBzdHJpbmc7XHJcbiAgc2luZ2xlTWF0Y2hJY29uU3JjOiBzdHJpbmc7XHJcbiAgc2luZ2xlTWF0Y2hEYXRhOiBhbnk7XHJcbiAgbXVsdGlNYXRjaERhdGE6IGFueVtdO1xyXG4gIHNob3VsZFNob3dBbGxNdWx0aU1hdGNoT3B0aW9uczogYm9vbGVhbjtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLmlzU2VhcmNoSW5mb3JtYXRpb25NYXhpbWl6ZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5zaW5nbGVNYXRjaERhdGEgPSBudWxsO1xyXG4gICAgdGhpcy5tdWx0aU1hdGNoRGF0YSA9IFtdO1xyXG4gICAgdGhpcy5hZ2VudFNlbGVjdGVkQ2FsbGVySW5mb3JtYXRpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICAgIHRoaXMucmVuZGVyRGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHJlbmRlckRhdGEoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNpbmdsZU1hdGNoRGF0YSA9IG51bGw7XHJcbiAgICAgIHRoaXMubXVsdGlNYXRjaERhdGEgPSBbXTtcclxuICAgICAgdGhpcy5zaG91bGRTaG93QWxsTXVsdGlNYXRjaE9wdGlvbnMgPSBmYWxzZTtcclxuICAgICAgaWYgKHRoaXMuc2VhcmNoUmVjb3JkTGlzdC5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICB0aGlzLnNpbmdsZU1hdGNoRGF0YSA9IHRoaXMucGFyc2VTZWFyY2hSZWNvcmRGb3JOYW1lU2luZ2xlTWF0Y2goXHJcbiAgICAgICAgICB0aGlzLnNlYXJjaFJlY29yZExpc3RbMF1cclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2VhcmNoUmVjb3JkTGlzdC5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNlYXJjaFJlY29yZExpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIHRoaXMubXVsdGlNYXRjaERhdGEucHVzaChcclxuICAgICAgICAgICAgdGhpcy5wYXJzZVNlYXJjaFJlY29yZEZvck5hbWVNdWx0aU1hdGNoKHRoaXMuc2VhcmNoUmVjb3JkTGlzdFtpXSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcikge31cclxuICB9XHJcblxyXG4gIG9uQWdlbnRTZWxlY3RlZENhbGxlckluZm9ybWF0aW9uKGV2ZW50OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuYWdlbnRTZWxlY3RlZENhbGxlckluZm9ybWF0aW9uLmVtaXQoe1xyXG4gICAgICAgIGlkOiBldmVudC50YXJnZXQuaWQsXHJcbiAgICAgICAgdmFsdWU6IGV2ZW50LnRhcmdldC52YWx1ZVxyXG4gICAgICB9KTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHBhcnNlU2VhcmNoUmVjb3JkRm9yTmFtZVNpbmdsZU1hdGNoKHNlYXJjaFJlY29yZDogYXBpLklSZWNvcmRJdGVtKSB7XHJcbiAgICBjb25zdCByZXN1bHRzID0gW107XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBzcmMgPSB0aGlzLmdldEVudGl0eUltZ1RvRGlzcGxheShzZWFyY2hSZWNvcmQpO1xyXG4gICAgICB0aGlzLnNpbmdsZU1hdGNoSWNvblNyYyA9IHNyYztcclxuICAgICAgY29uc3Qgc0xheW91dEluZm8gPSB0aGlzLmdldFNlYXJjaExheW91dEluZm9Gb3JEaXNwbGF5KHNlYXJjaFJlY29yZCk7XHJcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgc0xheW91dEluZm8uRGlzcGxheUZpZWxkcy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGlmIChzTGF5b3V0SW5mby5EaXNwbGF5RmllbGRzICYmIHNMYXlvdXRJbmZvLkRpc3BsYXlGaWVsZHNbal0uRGV2TmFtZSkge1xyXG4gICAgICAgICAgY29uc3QgbmFtZUtleSA9IHNMYXlvdXRJbmZvLkRpc3BsYXlGaWVsZHNbal0uRGV2TmFtZTtcclxuICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhzZWFyY2hSZWNvcmQuZmllbGRzKTtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgc2VhcmNoUmVjb3JkLmZpZWxkc1trZXlzW2ldXSAmJlxyXG4gICAgICAgICAgICAgIHNlYXJjaFJlY29yZC5maWVsZHNba2V5c1tpXV0uRGV2TmFtZSA9PT0gbmFtZUtleVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICBsZXQgZGlzcGxheVJlY29yZCA9IHNlYXJjaFJlY29yZC5maWVsZHNba2V5c1tpXV0uVmFsdWU7XHJcbiAgICAgICAgICAgICAgaWYgKGogPT09IDApIHtcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlSZWNvcmQgPSBzZWFyY2hSZWNvcmQuZGlzcGxheU5hbWVcclxuICAgICAgICAgICAgICAgICAgPyBbc2VhcmNoUmVjb3JkLmRpc3BsYXlOYW1lLCBkaXNwbGF5UmVjb3JkXVxyXG4gICAgICAgICAgICAgICAgICA6IFtzZWFyY2hSZWNvcmQudHlwZSwgZGlzcGxheVJlY29yZF07XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlSZWNvcmQgPSBzTGF5b3V0SW5mby5EaXNwbGF5RmllbGRzW2pdLkRpc3BsYXlOYW1lXHJcbiAgICAgICAgICAgICAgICAgID8gW3NMYXlvdXRJbmZvLkRpc3BsYXlGaWVsZHNbal0uRGlzcGxheU5hbWUsIGRpc3BsYXlSZWNvcmRdXHJcbiAgICAgICAgICAgICAgICAgIDogW3NMYXlvdXRJbmZvLkRpc3BsYXlGaWVsZHNbal0uRGV2TmFtZSwgZGlzcGxheVJlY29yZF07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHJlc3VsdHMucHVzaChkaXNwbGF5UmVjb3JkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHt9XHJcbiAgICByZXR1cm4gcmVzdWx0cztcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBwYXJzZVNlYXJjaFJlY29yZEZvck5hbWVNdWx0aU1hdGNoKHNlYXJjaFJlY29yZDogYXBpLklSZWNvcmRJdGVtKSB7XHJcbiAgICBjb25zdCByZXN1bHRzID0gW107XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBzcmMgPSB0aGlzLmdldEVudGl0eUltZ1RvRGlzcGxheShzZWFyY2hSZWNvcmQpO1xyXG4gICAgICBjb25zdCBzTGF5b3V0SW5mbyA9IHRoaXMuZ2V0U2VhcmNoTGF5b3V0SW5mb0ZvckRpc3BsYXkoc2VhcmNoUmVjb3JkKTtcclxuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBzTGF5b3V0SW5mby5EaXNwbGF5RmllbGRzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgaWYgKHNMYXlvdXRJbmZvLkRpc3BsYXlGaWVsZHMgJiYgc0xheW91dEluZm8uRGlzcGxheUZpZWxkc1tqXS5EZXZOYW1lKSB7XHJcbiAgICAgICAgICBjb25zdCBuYW1lS2V5ID0gc0xheW91dEluZm8uRGlzcGxheUZpZWxkc1tqXS5EZXZOYW1lO1xyXG4gICAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHNlYXJjaFJlY29yZC5maWVsZHMpO1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICBzZWFyY2hSZWNvcmQuZmllbGRzW2tleXNbaV1dICYmXHJcbiAgICAgICAgICAgICAgc2VhcmNoUmVjb3JkLmZpZWxkc1trZXlzW2ldXS5EZXZOYW1lID09PSBuYW1lS2V5XHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIGxldCBkaXNwbGF5UmVjb3JkID0gc2VhcmNoUmVjb3JkLmZpZWxkc1trZXlzW2ldXS5WYWx1ZTtcclxuICAgICAgICAgICAgICBpZiAoaiA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheVJlY29yZCA9IHNlYXJjaFJlY29yZC5kaXNwbGF5TmFtZVxyXG4gICAgICAgICAgICAgICAgICA/IFtzZWFyY2hSZWNvcmQuZGlzcGxheU5hbWUsIGRpc3BsYXlSZWNvcmRdXHJcbiAgICAgICAgICAgICAgICAgIDogW3NlYXJjaFJlY29yZC50eXBlLCBkaXNwbGF5UmVjb3JkXTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheVJlY29yZCA9IHNMYXlvdXRJbmZvLkRpc3BsYXlGaWVsZHNbal0uRGlzcGxheU5hbWVcclxuICAgICAgICAgICAgICAgICAgPyBbc0xheW91dEluZm8uRGlzcGxheUZpZWxkc1tqXS5EaXNwbGF5TmFtZSwgZGlzcGxheVJlY29yZF1cclxuICAgICAgICAgICAgICAgICAgOiBbc0xheW91dEluZm8uRGlzcGxheUZpZWxkc1tqXS5EZXZOYW1lLCBkaXNwbGF5UmVjb3JkXTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZGlzcGxheVJlY29yZC5wdXNoKHNyYyk7XHJcbiAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKGRpc3BsYXlSZWNvcmQpO1xyXG4gICAgICAgICAgICAgIHJldHVybiByZXN1bHRzO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcikge31cclxuICAgIHJldHVybiByZXN1bHRzO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldEVudGl0eUltZ1RvRGlzcGxheShzZWFyY2hSZWNvcmQ6IGFwaS5JUmVjb3JkSXRlbSkge1xyXG4gICAgbGV0IHNyYyA9ICcnO1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHNlYXJjaFJlY29yZC50eXBlKSB7XHJcbiAgICAgICAgaWYgKHNlYXJjaFJlY29yZC50eXBlLnRvVXBwZXJDYXNlKCkgPT09ICdDT05UQUNUJykge1xyXG4gICAgICAgICAgc3JjID0gJy4uLy4uL2Fzc2V0cy9pbWFnZXMvSWNvbl9Db250YWN0LnBuZyc7XHJcbiAgICAgICAgfSBlbHNlIGlmIChzZWFyY2hSZWNvcmQudHlwZS50b1VwcGVyQ2FzZSgpID09PSAnQUNDT1VOVCcpIHtcclxuICAgICAgICAgIHNyYyA9ICcuLi8uLi9hc3NldHMvaW1hZ2VzL0ljb25fQWNjb3VudC5wbmcnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoc2VhcmNoUmVjb3JkLnR5cGUudG9VcHBlckNhc2UoKSA9PT0gJ0xFQUQnKSB7XHJcbiAgICAgICAgICBzcmMgPSAnLi4vLi4vYXNzZXRzL2ltYWdlcy9JY29uX0xlYWQucG5nJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgc3JjID0gJy4uLy4uL2Fzc2V0cy9pbWFnZXMvTWlzY2VsbGFuZW91c19JY29uLnBuZyc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcikge31cclxuICAgIHJldHVybiBzcmM7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0U2VhcmNoTGF5b3V0SW5mb0ZvckRpc3BsYXkoc2VhcmNoUmVjb3JkOiBhcGkuSVJlY29yZEl0ZW0pIHtcclxuICAgIGxldCBsYXlvdXRJbmZvOiBhbnk7XHJcbiAgICB0cnkge1xyXG4gICAgICBsYXlvdXRJbmZvID0gdGhpcy5zZWFyY2hMYXlvdXQubGF5b3V0c1swXVtcclxuICAgICAgICB0aGlzLkFjdGl2aXR5RGV0YWlscy5DYWxsVHlwZVxyXG4gICAgICBdLmZpbmQoKGkpID0+IGkuRGV2TmFtZSA9PT0gc2VhcmNoUmVjb3JkLnR5cGUpO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHt9XHJcbiAgICByZXR1cm4gbGF5b3V0SW5mbztcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhbGxEaXNwbGF5XCI+XHJcbiAgPGRpdiBjbGFzcz1cImVkaXRvciBjYWxsSGVhZGVyXCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJoZWFkZXJMYWJlbFwiPlxyXG4gICAgICA8Yj5DYWxsZXIgSW5mb3JtYXRpb248L2I+XHJcbiAgICA8L2xhYmVsPlxyXG4gICAgPGltZ1xyXG4gICAgICB0aXRsZT1cIk11bHRpcGxlIE1hdGNoZXMgQXZhaWxhYmxlXCJcclxuICAgICAgKm5nSWY9XCJ0aGlzLnNlYXJjaFJlY29yZExpc3QubGVuZ3RoID4gMVwiXHJcbiAgICAgIHNyYz1cIi4uLy4uL2Fzc2V0cy9pbWFnZXMvTXVsdGlNYXRjaEFsZXJ0LnBuZ1wiXHJcbiAgICAgIGNsYXNzPVwibXVsdGlNYXRjaEltZ1wiXHJcbiAgICAvPlxyXG4gICAgPGltZ1xyXG4gICAgICAqbmdJZj1cImlzU2VhcmNoSW5mb3JtYXRpb25NYXhpbWl6ZWRcIlxyXG4gICAgICBjbGFzcz1cIlZpZXdSZXNpemVJbWFnZVwiXHJcbiAgICAgIHNyYz1cImFzc2V0cy9pbWFnZXMvc2VjdGlvbl9jb2xsYXBzZS5wbmdcIlxyXG4gICAgICAoY2xpY2spPVwiaXNTZWFyY2hJbmZvcm1hdGlvbk1heGltaXplZCA9IGZhbHNlXCJcclxuICAgICAgdGl0bGU9XCJDb2xsYXBzZVwiXHJcbiAgICAvPlxyXG4gICAgPGltZ1xyXG4gICAgICAqbmdJZj1cIiFpc1NlYXJjaEluZm9ybWF0aW9uTWF4aW1pemVkXCJcclxuICAgICAgY2xhc3M9XCJWaWV3UmVzaXplSW1hZ2VcIlxyXG4gICAgICBzcmM9XCJhc3NldHMvaW1hZ2VzL3NlY3Rpb25fZXhwYW5kLnBuZ1wiXHJcbiAgICAgIChjbGljayk9XCJpc1NlYXJjaEluZm9ybWF0aW9uTWF4aW1pemVkID0gdHJ1ZVwiXHJcbiAgICAgIHRpdGxlPVwiRXhwYW5kXCJcclxuICAgIC8+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImNhbGxCb2R5XCIgKm5nSWY9XCJpc1NlYXJjaEluZm9ybWF0aW9uTWF4aW1pemVkXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwidGhpcy5zZWFyY2hSZWNvcmRMaXN0Lmxlbmd0aCA+IDFcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJvdmVyZmxvd1dyYXBwZXJcIj5cclxuICAgICAgICA8aW1nXHJcbiAgICAgICAgICBjbGFzcz1cIkNSTVJlc3VsdEltYWdlTXVsdGlNYXRjaFwiXHJcbiAgICAgICAgICBzcmM9XCJ7eyB0aGlzLm11bHRpTWF0Y2hEYXRhWzBdWzBdWzJdIH19XCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgaWQ9XCJ7eyB0aGlzLnNlYXJjaFJlY29yZExpc3RbMF0uaWQgfX1cIlxyXG4gICAgICAgICAgbmFtZT1cInt7IHRoaXMubXVsdGlNYXRjaERhdGFbMF1bMF1bMV0gfX1cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQWdlbnRTZWxlY3RlZENhbGxlckluZm9ybWF0aW9uKCRldmVudClcIlxyXG4gICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgIGNsYXNzPVwibXVsdGlNYXRjaExhYmVsXCJcclxuICAgICAgICAgIHRpdGxlPVwie3sgdGhpcy5tdWx0aU1hdGNoRGF0YVswXVswXVsxXSB9fVwiXHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICB2YWx1ZT1cInt7IHRoaXMubXVsdGlNYXRjaERhdGFbMF1bMF1bMV0gfX1cIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPHNwYW4gc3R5bGU9XCJmbG9hdDogcmlnaHQ7IG1hcmdpbi1yaWdodDogNCU7XCI+XHJcbiAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIXRoaXMuc2hvdWxkU2hvd0FsbE11bHRpTWF0Y2hPcHRpb25zXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJDUk1FeHBhbmRJbWFnZVwiXHJcbiAgICAgICAgICAgIHNyYz1cIi4uLy4uL2Fzc2V0cy9pbWFnZXMvZG93bi1hcnJvdy5wbmdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwic2hvdWxkU2hvd0FsbE11bHRpTWF0Y2hPcHRpb25zID0gdHJ1ZVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAqbmdJZj1cInRoaXMuc2hvdWxkU2hvd0FsbE11bHRpTWF0Y2hPcHRpb25zXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJDUk1FeHBhbmRJbWFnZVwiXHJcbiAgICAgICAgICAgIHNyYz1cIi4uLy4uL2Fzc2V0cy9pbWFnZXMvdXAtYXJyb3cucG5nXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInNob3VsZFNob3dBbGxNdWx0aU1hdGNoT3B0aW9ucyA9IGZhbHNlXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJ0aGlzLnNob3VsZFNob3dBbGxNdWx0aU1hdGNoT3B0aW9uc1wiPlxyXG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpIG9mIHRoaXMubXVsdGlNYXRjaERhdGEgfCBzbGljZTogMTsgbGV0IGluZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgY2xhc3M9XCJvdmVyZmxvd1dyYXBwZXJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxpbWcgY2xhc3M9XCJDUk1SZXN1bHRJbWFnZU11bHRpTWF0Y2hcIiBzcmM9XCJ7eyBpWzBdWzJdIH19XCIgLz5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICBpZD1cInt7IHRoaXMuc2VhcmNoUmVjb3JkTGlzdFtpbmRleCArIDFdLmlkIH19XCJcclxuICAgICAgICAgICAgbmFtZT1cInt7IGlbMF1bMV0gfX1cIlxyXG4gICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICBjbGFzcz1cIm11bHRpTWF0Y2hMYWJlbFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkFnZW50U2VsZWN0ZWRDYWxsZXJJbmZvcm1hdGlvbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgdGl0bGU9XCJ7eyBpWzBdWzFdIH19XCJcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICB2YWx1ZT1cInt7IGlbMF1bMV0gfX1cIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSBCZWxvdyBpcyB0aGUgSFRNTCBsb2FkZWQgb24gU2luZ2xlIE1hdGNoIC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cInRoaXMuc2VhcmNoUmVjb3JkTGlzdC5sZW5ndGggPT09IDFcIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZWRpdG9yRnVsbCBkaXNwbGF5RGl2XCJcclxuICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgIGxldCBpIG9mIHRoaXMuc2luZ2xlTWF0Y2hEYXRhIHwgc2xpY2U6IDA6MTtcclxuICAgICAgICAgIGxldCBpbmRleCA9IGluZGV4O1xyXG4gICAgICAgICAgbGV0IGZpcnN0ID0gZmlyc3RcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJvdmVyZmxvd1dyYXBwZXJcIj5cclxuICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgIGlkPVwiRW50aXR5SWNvblwiXHJcbiAgICAgICAgICAgICAgc3JjPVwie3sgdGhpcy5zaW5nbGVNYXRjaEljb25TcmMgfX1cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiQ1JNUmVzdWx0SW1hZ2VcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cInNpbmdsZVNlYXJjaFJlc3VsdFNlbGVjdCBzaW5nbGVNYXRjaEZpcnN0V3JhcHBlciBcIlxyXG4gICAgICAgICAgICAgIGlkPVwie3sgdGhpcy5zZWFyY2hSZWNvcmRMaXN0WzBdLmlkIH19XCJcclxuICAgICAgICAgICAgICBbY2xhc3MuZmlyc3RTaW5nbGVNYXRjaFJlc3VsdF09XCJmaXJzdFwiXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJ7eyBpWzFdIH19XCJcclxuICAgICAgICAgICAgICB0aXRsZT1cInt7IGlbMV0gfX1cIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkFnZW50U2VsZWN0ZWRDYWxsZXJJbmZvcm1hdGlvbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImVkaXRvckZ1bGwgZGlzcGxheURpdlwiXHJcbiAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICBsZXQgaSBvZiB0aGlzLnNpbmdsZU1hdGNoRGF0YSB8IHNsaWNlOiAxO1xyXG4gICAgICAgICAgbGV0IGluZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgICBsZXQgZmlyc3QgPSBmaXJzdFxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm92ZXJmbG93V3JhcHBlclwiPlxyXG4gICAgICAgICAgPGxhYmVsIHRpdGxlPVwie3sgaVswXSB9fVwiIGNsYXNzPVwiZGlzcGxheUxhYmVsc1RhYmJlZFwiPnt7XHJcbiAgICAgICAgICAgIGlbMF1cclxuICAgICAgICAgIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzaW5nbGVTZWFyY2hSZXN1bHRTZWxlY3Qgc2luZ2xlTWF0Y2hUYWJiZWRJdGVtc1dyYXBwZXIgc2luZ2xlTWF0Y2hMYWJlbFwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJ7eyB0aGlzLnNlYXJjaFJlY29yZExpc3RbMF0uaWQgfX1cIlxyXG4gICAgICAgICAgICAgIHZhbHVlPVwie3sgaVsxXSB9fVwiXHJcbiAgICAgICAgICAgICAgdGl0bGU9XCJ7eyBpWzFdIH19XCJcclxuICAgICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWluZm9ybWF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL1VJTGlicmFyeS9zcmMvYXBwL2NvbXBvbmVudHMvc2VhcmNoLWluZm9ybWF0aW9uL3NlYXJjaC1pbmZvcm1hdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9VSUxpYnJhcnkvc3JjL2FwcC9jb21wb25lbnRzL3NlYXJjaC1pbmZvcm1hdGlvbi9zZWFyY2gtaW5mb3JtYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFYixNQUFNLGVBQWUsQ0FBQzs7O0FBU3ZCLE1BQU0sT0FBTywwQkFBMEI7SUFDNUIsZUFBZSxDQUFZO0lBQzNCLFlBQVksQ0FBb0I7SUFDaEMsZ0JBQWdCLENBQXlCO0lBQ3hDLDhCQUE4QixDQUdyQztJQUVILDRCQUE0QixDQUFVO0lBQ3RDLGFBQWEsQ0FBUztJQUN0QixrQkFBa0IsQ0FBUztJQUMzQixlQUFlLENBQU07SUFDckIsY0FBYyxDQUFRO0lBQ3RCLDhCQUE4QixDQUFVO0lBRXhDO1FBQ0UsSUFBSSxDQUFDLDRCQUE0QixHQUFHLElBQUksQ0FBQztRQUN6QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsOEJBQThCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUMzRCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsZ0NBQWdDLENBQUMsS0FBVTtRQUN6QyxJQUFJO1lBQ0YsSUFBSSxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FBQztn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QUFTLEVBQUU7b0JBQ2pELEdBQUcsR0FBRyxzQ0FBc0MsQ0FBQztpQkFDOUM7cUJBQU0sSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLFNBQVMsRUFBRTtvQkFDeEQsR0FBRyxHQUFHLHNDQUFzQyxDQUFDO2lCQUM5QztxQkFBTSxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssTUFBTSxFQUFFO29CQUNyRCxHQUFHLEdBQUcsbUNBQW1DLENBQUM7aUJBQzNDO3FCQUFNO29CQUNMLEdBQUcsR0FBRyw0Q0FBNEMsQ0FBQztpQkFDcEQ7YUFDRjtTQUNGO1FBQUMsT0FBTyxLQUFLLEVBQUUsR0FBRTtRQUNsQixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFUyw2QkFBNkIsQ0FBQyxZQUE2QjtRQUNuRSxJQUFJLFVBQWUsQ0FBQztRQUNwQixJQUFJO1lBQ0YsVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUN2QyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FDOUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2hEO1FBQUMsT0FBTyxLQUFLLEVBQUUsR0FBRTtRQUNsQixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO3dHQXRKVSwwQkFBMEI7NEZBQTFCLDBCQUEwQixzUkNmdkMsaWtKQWlJQTs7NEZEbEhhLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDRSx3QkFBd0I7MEVBS3pCLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0ksOEJBQThCO3NCQUF2QyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBPbkNoYW5nZXNcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgYXBpIGZyb20gJ0BhbWMtdGVjaG5vbG9neS9kYXZpbmNpLWFwaSc7XHJcbmltcG9ydCB7IElBY3Rpdml0eSB9IGZyb20gJy4uLy4uL21vZGVscy9JQWN0aXZpdHknO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhbWMtc2VhcmNoLWluZm9ybWF0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLWluZm9ybWF0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtaW5mb3JtYXRpb24uY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZWFyY2hJbmZvcm1hdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KCkgQWN0aXZpdHlEZXRhaWxzOiBJQWN0aXZpdHk7XHJcbiAgQElucHV0KCkgc2VhcmNoTGF5b3V0OiBhcGkuU2VhcmNoTGF5b3V0cztcclxuICBASW5wdXQoKSBzZWFyY2hSZWNvcmRMaXN0OiBBcnJheTxhcGkuSVJlY29yZEl0ZW0+O1xyXG4gIEBPdXRwdXQoKSBhZ2VudFNlbGVjdGVkQ2FsbGVySW5mb3JtYXRpb246IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBpZDogc3RyaW5nO1xyXG4gICAgdmFsdWU6IHN0cmluZztcclxuICB9PjtcclxuXHJcbiAgaXNTZWFyY2hJbmZvcm1hdGlvbk1heGltaXplZDogYm9vbGVhbjtcclxuICBpbWFnZUxvY2F0aW9uOiBzdHJpbmc7XHJcbiAgc2luZ2xlTWF0Y2hJY29uU3JjOiBzdHJpbmc7XHJcbiAgc2luZ2xlTWF0Y2hEYXRhOiBhbnk7XHJcbiAgbXVsdGlNYXRjaERhdGE6IGFueVtdO1xyXG4gIHNob3VsZFNob3dBbGxNdWx0aU1hdGNoT3B0aW9uczogYm9vbGVhbjtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLmlzU2VhcmNoSW5mb3JtYXRpb25NYXhpbWl6ZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5zaW5nbGVNYXRjaERhdGEgPSBudWxsO1xyXG4gICAgdGhpcy5tdWx0aU1hdGNoRGF0YSA9IFtdO1xyXG4gICAgdGhpcy5hZ2VudFNlbGVjdGVkQ2FsbGVySW5mb3JtYXRpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICAgIHRoaXMucmVuZGVyRGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgb25BZ2VudFNlbGVjdGVkQ2FsbGVySW5mb3JtYXRpb24oZXZlbnQ6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5hZ2VudFNlbGVjdGVkQ2FsbGVySW5mb3JtYXRpb24uZW1pdCh7XHJcbiAgICAgICAgaWQ6IGV2ZW50LnRhcmdldC5pZCxcclxuICAgICAgICB2YWx1ZTogZXZlbnQudGFyZ2V0LnZhbHVlXHJcbiAgICAgIH0pO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHt9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgcmVuZGVyRGF0YSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2luZ2xlTWF0Y2hEYXRhID0gbnVsbDtcclxuICAgICAgdGhpcy5tdWx0aU1hdGNoRGF0YSA9IFtdO1xyXG4gICAgICB0aGlzLnNob3VsZFNob3dBbGxNdWx0aU1hdGNoT3B0aW9ucyA9IGZhbHNlO1xyXG4gICAgICBpZiAodGhpcy5zZWFyY2hSZWNvcmRMaXN0Lmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgIHRoaXMuc2luZ2xlTWF0Y2hEYXRhID0gdGhpcy5wYXJzZVNlYXJjaFJlY29yZEZvck5hbWVTaW5nbGVNYXRjaChcclxuICAgICAgICAgIHRoaXMuc2VhcmNoUmVjb3JkTGlzdFswXVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWFyY2hSZWNvcmRMaXN0Lmxlbmd0aCA+IDEpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2VhcmNoUmVjb3JkTGlzdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgdGhpcy5tdWx0aU1hdGNoRGF0YS5wdXNoKFxyXG4gICAgICAgICAgICB0aGlzLnBhcnNlU2VhcmNoUmVjb3JkRm9yTmFtZU11bHRpTWF0Y2godGhpcy5zZWFyY2hSZWNvcmRMaXN0W2ldKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHBhcnNlU2VhcmNoUmVjb3JkRm9yTmFtZVNpbmdsZU1hdGNoKHNlYXJjaFJlY29yZDogYXBpLklSZWNvcmRJdGVtKSB7XHJcbiAgICBjb25zdCByZXN1bHRzID0gW107XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBzcmMgPSB0aGlzLmdldEVudGl0eUltZ1RvRGlzcGxheShzZWFyY2hSZWNvcmQpO1xyXG4gICAgICB0aGlzLnNpbmdsZU1hdGNoSWNvblNyYyA9IHNyYztcclxuICAgICAgY29uc3Qgc0xheW91dEluZm8gPSB0aGlzLmdldFNlYXJjaExheW91dEluZm9Gb3JEaXNwbGF5KHNlYXJjaFJlY29yZCk7XHJcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgc0xheW91dEluZm8uRGlzcGxheUZpZWxkcy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGlmIChzTGF5b3V0SW5mby5EaXNwbGF5RmllbGRzICYmIHNMYXlvdXRJbmZvLkRpc3BsYXlGaWVsZHNbal0uRGV2TmFtZSkge1xyXG4gICAgICAgICAgY29uc3QgbmFtZUtleSA9IHNMYXlvdXRJbmZvLkRpc3BsYXlGaWVsZHNbal0uRGV2TmFtZTtcclxuICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhzZWFyY2hSZWNvcmQuZmllbGRzKTtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgc2VhcmNoUmVjb3JkLmZpZWxkc1trZXlzW2ldXSAmJlxyXG4gICAgICAgICAgICAgIHNlYXJjaFJlY29yZC5maWVsZHNba2V5c1tpXV0uRGV2TmFtZSA9PT0gbmFtZUtleVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICBsZXQgZGlzcGxheVJlY29yZCA9IHNlYXJjaFJlY29yZC5maWVsZHNba2V5c1tpXV0uVmFsdWU7XHJcbiAgICAgICAgICAgICAgaWYgKGogPT09IDApIHtcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlSZWNvcmQgPSBzZWFyY2hSZWNvcmQuZGlzcGxheU5hbWVcclxuICAgICAgICAgICAgICAgICAgPyBbc2VhcmNoUmVjb3JkLmRpc3BsYXlOYW1lLCBkaXNwbGF5UmVjb3JkXVxyXG4gICAgICAgICAgICAgICAgICA6IFtzZWFyY2hSZWNvcmQudHlwZSwgZGlzcGxheVJlY29yZF07XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlSZWNvcmQgPSBzTGF5b3V0SW5mby5EaXNwbGF5RmllbGRzW2pdLkRpc3BsYXlOYW1lXHJcbiAgICAgICAgICAgICAgICAgID8gW3NMYXlvdXRJbmZvLkRpc3BsYXlGaWVsZHNbal0uRGlzcGxheU5hbWUsIGRpc3BsYXlSZWNvcmRdXHJcbiAgICAgICAgICAgICAgICAgIDogW3NMYXlvdXRJbmZvLkRpc3BsYXlGaWVsZHNbal0uRGV2TmFtZSwgZGlzcGxheVJlY29yZF07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHJlc3VsdHMucHVzaChkaXNwbGF5UmVjb3JkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHt9XHJcbiAgICByZXR1cm4gcmVzdWx0cztcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBwYXJzZVNlYXJjaFJlY29yZEZvck5hbWVNdWx0aU1hdGNoKHNlYXJjaFJlY29yZDogYXBpLklSZWNvcmRJdGVtKSB7XHJcbiAgICBjb25zdCByZXN1bHRzID0gW107XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBzcmMgPSB0aGlzLmdldEVudGl0eUltZ1RvRGlzcGxheShzZWFyY2hSZWNvcmQpO1xyXG4gICAgICBjb25zdCBzTGF5b3V0SW5mbyA9IHRoaXMuZ2V0U2VhcmNoTGF5b3V0SW5mb0ZvckRpc3BsYXkoc2VhcmNoUmVjb3JkKTtcclxuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBzTGF5b3V0SW5mby5EaXNwbGF5RmllbGRzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgaWYgKHNMYXlvdXRJbmZvLkRpc3BsYXlGaWVsZHMgJiYgc0xheW91dEluZm8uRGlzcGxheUZpZWxkc1tqXS5EZXZOYW1lKSB7XHJcbiAgICAgICAgICBjb25zdCBuYW1lS2V5ID0gc0xheW91dEluZm8uRGlzcGxheUZpZWxkc1tqXS5EZXZOYW1lO1xyXG4gICAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHNlYXJjaFJlY29yZC5maWVsZHMpO1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICBzZWFyY2hSZWNvcmQuZmllbGRzW2tleXNbaV1dICYmXHJcbiAgICAgICAgICAgICAgc2VhcmNoUmVjb3JkLmZpZWxkc1trZXlzW2ldXS5EZXZOYW1lID09PSBuYW1lS2V5XHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIGxldCBkaXNwbGF5UmVjb3JkID0gc2VhcmNoUmVjb3JkLmZpZWxkc1trZXlzW2ldXS5WYWx1ZTtcclxuICAgICAgICAgICAgICBpZiAoaiA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheVJlY29yZCA9IHNlYXJjaFJlY29yZC5kaXNwbGF5TmFtZVxyXG4gICAgICAgICAgICAgICAgICA/IFtzZWFyY2hSZWNvcmQuZGlzcGxheU5hbWUsIGRpc3BsYXlSZWNvcmRdXHJcbiAgICAgICAgICAgICAgICAgIDogW3NlYXJjaFJlY29yZC50eXBlLCBkaXNwbGF5UmVjb3JkXTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheVJlY29yZCA9IHNMYXlvdXRJbmZvLkRpc3BsYXlGaWVsZHNbal0uRGlzcGxheU5hbWVcclxuICAgICAgICAgICAgICAgICAgPyBbc0xheW91dEluZm8uRGlzcGxheUZpZWxkc1tqXS5EaXNwbGF5TmFtZSwgZGlzcGxheVJlY29yZF1cclxuICAgICAgICAgICAgICAgICAgOiBbc0xheW91dEluZm8uRGlzcGxheUZpZWxkc1tqXS5EZXZOYW1lLCBkaXNwbGF5UmVjb3JkXTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZGlzcGxheVJlY29yZC5wdXNoKHNyYyk7XHJcbiAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKGRpc3BsYXlSZWNvcmQpO1xyXG4gICAgICAgICAgICAgIHJldHVybiByZXN1bHRzO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcikge31cclxuICAgIHJldHVybiByZXN1bHRzO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldEVudGl0eUltZ1RvRGlzcGxheShzZWFyY2hSZWNvcmQ6IGFwaS5JUmVjb3JkSXRlbSkge1xyXG4gICAgbGV0IHNyYyA9ICcnO1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHNlYXJjaFJlY29yZC50eXBlKSB7XHJcbiAgICAgICAgaWYgKHNlYXJjaFJlY29yZC50eXBlLnRvVXBwZXJDYXNlKCkgPT09ICdDT05UQUNUJykge1xyXG4gICAgICAgICAgc3JjID0gJy4uLy4uL2Fzc2V0cy9pbWFnZXMvSWNvbl9Db250YWN0LnBuZyc7XHJcbiAgICAgICAgfSBlbHNlIGlmIChzZWFyY2hSZWNvcmQudHlwZS50b1VwcGVyQ2FzZSgpID09PSAnQUNDT1VOVCcpIHtcclxuICAgICAgICAgIHNyYyA9ICcuLi8uLi9hc3NldHMvaW1hZ2VzL0ljb25fQWNjb3VudC5wbmcnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoc2VhcmNoUmVjb3JkLnR5cGUudG9VcHBlckNhc2UoKSA9PT0gJ0xFQUQnKSB7XHJcbiAgICAgICAgICBzcmMgPSAnLi4vLi4vYXNzZXRzL2ltYWdlcy9JY29uX0xlYWQucG5nJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgc3JjID0gJy4uLy4uL2Fzc2V0cy9pbWFnZXMvTWlzY2VsbGFuZW91c19JY29uLnBuZyc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcikge31cclxuICAgIHJldHVybiBzcmM7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0U2VhcmNoTGF5b3V0SW5mb0ZvckRpc3BsYXkoc2VhcmNoUmVjb3JkOiBhcGkuSVJlY29yZEl0ZW0pIHtcclxuICAgIGxldCBsYXlvdXRJbmZvOiBhbnk7XHJcbiAgICB0cnkge1xyXG4gICAgICBsYXlvdXRJbmZvID0gdGhpcy5zZWFyY2hMYXlvdXQubGF5b3V0c1swXVtcclxuICAgICAgICB0aGlzLkFjdGl2aXR5RGV0YWlscy5DYWxsVHlwZVxyXG4gICAgICBdLmZpbmQoKGkpID0+IGkuRGV2TmFtZSA9PT0gc2VhcmNoUmVjb3JkLnR5cGUpO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHt9XHJcbiAgICByZXR1cm4gbGF5b3V0SW5mbztcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhbGxEaXNwbGF5XCI+XHJcbiAgPGRpdiBjbGFzcz1cImVkaXRvciBjYWxsSGVhZGVyXCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJoZWFkZXJMYWJlbFwiPlxyXG4gICAgICA8Yj5DYWxsZXIgSW5mb3JtYXRpb248L2I+XHJcbiAgICA8L2xhYmVsPlxyXG4gICAgPGltZ1xyXG4gICAgICB0aXRsZT1cIk11bHRpcGxlIE1hdGNoZXMgQXZhaWxhYmxlXCJcclxuICAgICAgKm5nSWY9XCJ0aGlzLnNlYXJjaFJlY29yZExpc3QubGVuZ3RoID4gMVwiXHJcbiAgICAgIHNyYz1cIi4uLy4uL2Fzc2V0cy9pbWFnZXMvTXVsdGlNYXRjaEFsZXJ0LnBuZ1wiXHJcbiAgICAgIGNsYXNzPVwibXVsdGlNYXRjaEltZ1wiXHJcbiAgICAvPlxyXG4gICAgPGltZ1xyXG4gICAgICAqbmdJZj1cImlzU2VhcmNoSW5mb3JtYXRpb25NYXhpbWl6ZWRcIlxyXG4gICAgICBjbGFzcz1cIlZpZXdSZXNpemVJbWFnZVwiXHJcbiAgICAgIHNyYz1cImFzc2V0cy9pbWFnZXMvc2VjdGlvbl9jb2xsYXBzZS5wbmdcIlxyXG4gICAgICAoY2xpY2spPVwiaXNTZWFyY2hJbmZvcm1hdGlvbk1heGltaXplZCA9IGZhbHNlXCJcclxuICAgICAgdGl0bGU9XCJDb2xsYXBzZVwiXHJcbiAgICAvPlxyXG4gICAgPGltZ1xyXG4gICAgICAqbmdJZj1cIiFpc1NlYXJjaEluZm9ybWF0aW9uTWF4aW1pemVkXCJcclxuICAgICAgY2xhc3M9XCJWaWV3UmVzaXplSW1hZ2VcIlxyXG4gICAgICBzcmM9XCJhc3NldHMvaW1hZ2VzL3NlY3Rpb25fZXhwYW5kLnBuZ1wiXHJcbiAgICAgIChjbGljayk9XCJpc1NlYXJjaEluZm9ybWF0aW9uTWF4aW1pemVkID0gdHJ1ZVwiXHJcbiAgICAgIHRpdGxlPVwiRXhwYW5kXCJcclxuICAgIC8+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImNhbGxCb2R5XCIgKm5nSWY9XCJpc1NlYXJjaEluZm9ybWF0aW9uTWF4aW1pemVkXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwidGhpcy5zZWFyY2hSZWNvcmRMaXN0Lmxlbmd0aCA+IDFcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJvdmVyZmxvd1dyYXBwZXJcIj5cclxuICAgICAgICA8aW1nXHJcbiAgICAgICAgICBjbGFzcz1cIkNSTVJlc3VsdEltYWdlTXVsdGlNYXRjaFwiXHJcbiAgICAgICAgICBzcmM9XCJ7eyB0aGlzLm11bHRpTWF0Y2hEYXRhWzBdWzBdWzJdIH19XCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgaWQ9XCJ7eyB0aGlzLnNlYXJjaFJlY29yZExpc3RbMF0uaWQgfX1cIlxyXG4gICAgICAgICAgbmFtZT1cInt7IHRoaXMubXVsdGlNYXRjaERhdGFbMF1bMF1bMV0gfX1cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQWdlbnRTZWxlY3RlZENhbGxlckluZm9ybWF0aW9uKCRldmVudClcIlxyXG4gICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgIGNsYXNzPVwibXVsdGlNYXRjaExhYmVsXCJcclxuICAgICAgICAgIHRpdGxlPVwie3sgdGhpcy5tdWx0aU1hdGNoRGF0YVswXVswXVsxXSB9fVwiXHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICB2YWx1ZT1cInt7IHRoaXMubXVsdGlNYXRjaERhdGFbMF1bMF1bMV0gfX1cIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPHNwYW4gc3R5bGU9XCJmbG9hdDogcmlnaHQ7IG1hcmdpbi1yaWdodDogNCU7XCI+XHJcbiAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIXRoaXMuc2hvdWxkU2hvd0FsbE11bHRpTWF0Y2hPcHRpb25zXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJDUk1FeHBhbmRJbWFnZVwiXHJcbiAgICAgICAgICAgIHNyYz1cIi4uLy4uL2Fzc2V0cy9pbWFnZXMvZG93bi1hcnJvdy5wbmdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwic2hvdWxkU2hvd0FsbE11bHRpTWF0Y2hPcHRpb25zID0gdHJ1ZVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAqbmdJZj1cInRoaXMuc2hvdWxkU2hvd0FsbE11bHRpTWF0Y2hPcHRpb25zXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJDUk1FeHBhbmRJbWFnZVwiXHJcbiAgICAgICAgICAgIHNyYz1cIi4uLy4uL2Fzc2V0cy9pbWFnZXMvdXAtYXJyb3cucG5nXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInNob3VsZFNob3dBbGxNdWx0aU1hdGNoT3B0aW9ucyA9IGZhbHNlXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJ0aGlzLnNob3VsZFNob3dBbGxNdWx0aU1hdGNoT3B0aW9uc1wiPlxyXG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpIG9mIHRoaXMubXVsdGlNYXRjaERhdGEgfCBzbGljZTogMTsgbGV0IGluZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgY2xhc3M9XCJvdmVyZmxvd1dyYXBwZXJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxpbWcgY2xhc3M9XCJDUk1SZXN1bHRJbWFnZU11bHRpTWF0Y2hcIiBzcmM9XCJ7eyBpWzBdWzJdIH19XCIgLz5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICBpZD1cInt7IHRoaXMuc2VhcmNoUmVjb3JkTGlzdFtpbmRleCArIDFdLmlkIH19XCJcclxuICAgICAgICAgICAgbmFtZT1cInt7IGlbMF1bMV0gfX1cIlxyXG4gICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICBjbGFzcz1cIm11bHRpTWF0Y2hMYWJlbFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkFnZW50U2VsZWN0ZWRDYWxsZXJJbmZvcm1hdGlvbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgdGl0bGU9XCJ7eyBpWzBdWzFdIH19XCJcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICB2YWx1ZT1cInt7IGlbMF1bMV0gfX1cIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSBCZWxvdyBpcyB0aGUgSFRNTCBsb2FkZWQgb24gU2luZ2xlIE1hdGNoIC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cInRoaXMuc2VhcmNoUmVjb3JkTGlzdC5sZW5ndGggPT09IDFcIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZWRpdG9yRnVsbCBkaXNwbGF5RGl2XCJcclxuICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgIGxldCBpIG9mIHRoaXMuc2luZ2xlTWF0Y2hEYXRhIHwgc2xpY2U6IDA6MTtcclxuICAgICAgICAgIGxldCBpbmRleCA9IGluZGV4O1xyXG4gICAgICAgICAgbGV0IGZpcnN0ID0gZmlyc3RcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJvdmVyZmxvd1dyYXBwZXJcIj5cclxuICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgIGlkPVwiRW50aXR5SWNvblwiXHJcbiAgICAgICAgICAgICAgc3JjPVwie3sgdGhpcy5zaW5nbGVNYXRjaEljb25TcmMgfX1cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiQ1JNUmVzdWx0SW1hZ2VcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cInNpbmdsZVNlYXJjaFJlc3VsdFNlbGVjdCBzaW5nbGVNYXRjaEZpcnN0V3JhcHBlciBcIlxyXG4gICAgICAgICAgICAgIGlkPVwie3sgdGhpcy5zZWFyY2hSZWNvcmRMaXN0WzBdLmlkIH19XCJcclxuICAgICAgICAgICAgICBbY2xhc3MuZmlyc3RTaW5nbGVNYXRjaFJlc3VsdF09XCJmaXJzdFwiXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJ7eyBpWzFdIH19XCJcclxuICAgICAgICAgICAgICB0aXRsZT1cInt7IGlbMV0gfX1cIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkFnZW50U2VsZWN0ZWRDYWxsZXJJbmZvcm1hdGlvbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImVkaXRvckZ1bGwgZGlzcGxheURpdlwiXHJcbiAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICBsZXQgaSBvZiB0aGlzLnNpbmdsZU1hdGNoRGF0YSB8IHNsaWNlOiAxO1xyXG4gICAgICAgICAgbGV0IGluZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgICBsZXQgZmlyc3QgPSBmaXJzdFxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm92ZXJmbG93V3JhcHBlclwiPlxyXG4gICAgICAgICAgPGxhYmVsIHRpdGxlPVwie3sgaVswXSB9fVwiIGNsYXNzPVwiZGlzcGxheUxhYmVsc1RhYmJlZFwiPnt7XHJcbiAgICAgICAgICAgIGlbMF1cclxuICAgICAgICAgIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzaW5nbGVTZWFyY2hSZXN1bHRTZWxlY3Qgc2luZ2xlTWF0Y2hUYWJiZWRJdGVtc1dyYXBwZXIgc2luZ2xlTWF0Y2hMYWJlbFwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJ7eyB0aGlzLnNlYXJjaFJlY29yZExpc3RbMF0uaWQgfX1cIlxyXG4gICAgICAgICAgICAgIHZhbHVlPVwie3sgaVsxXSB9fVwiXHJcbiAgICAgICAgICAgICAgdGl0bGU9XCJ7eyBpWzFdIH19XCJcclxuICAgICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC5zZXR0aW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL1VJTGlicmFyeS9zcmMvYXBwL21vZGVscy9jaGF0LnNldHRpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElDaGF0U2V0dGluZ3Mge1xyXG4gIHNlbmRJbWFnZTogVVJMO1xyXG4gIG1heEhlaWdodD86IHN0cmluZztcclxuICBmYWxsYmFja1VzZXJJY29uPzogVVJMO1xyXG4gIGRpc2FibGVTZW5kTWVzc2FnZT86IGJvb2xlYW47XHJcbiAgaGlkZVNlbmRNZXNzYWdlPzogYm9vbGVhbjtcclxuICBzZW5kTWVzc2FnZVRleHQ/OiBzdHJpbmc7XHJcbn1cclxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcG9zaXRpb24uaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvVUlMaWJyYXJ5L3NyYy9hcHAvbW9kZWxzL2Rpc3Bvc2l0aW9uLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSU1ldGFkYXRhIH0gZnJvbSAnLi91aWxpYnJhcnkubW9kZWwnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJRGlzcG9zaXRpb24ge1xyXG4gIGRpc3Bvc2l0aW9uSGVhZGVyOiBzdHJpbmc7XHJcbiAgZGlzcG9zaXRpb25NZXRhZGF0YTogSU1ldGFkYXRhW107XHJcbiAgZGlzcG9zaXRpb246IE1hcDxzdHJpbmcsIHN0cmluZz47XHJcbiAgY2hlY2tlZERpc3Bvc2l0aW9uOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSURpc3Bvc2l0aW9uUmVzdWx0IHtcclxuICBkaXNwb3NpdGlvbklkOiBzdHJpbmc7XHJcbiAgZGlzcG9zaXRpb25OYW1lOiBzdHJpbmc7XHJcbiAgZGlzcG9zaXRpb25NZXRhZGF0YTogSU1ldGFkYXRhW107XHJcbn1cclxuIl19
|