@muraai/mnl-chat 0.0.1-alpha-3a3a286 → 0.0.1-alpha-51e7ded
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/esm2022/lib/chat.module.mjs +5 -5
- package/esm2022/lib/components/ng-chat/ng-chat.component.mjs +6 -6
- package/esm2022/lib/components/ng-chat-friends-list/ng-chat-friends-list.component.mjs +5 -5
- package/esm2022/lib/components/ng-chat-options/ng-chat-options.component.mjs +5 -5
- package/esm2022/lib/components/ng-chat-window/ng-chat-window.component.mjs +5 -5
- package/esm2022/lib/core/message-counter.mjs +1 -1
- package/esm2022/lib/firstLetter.pipe.mjs +4 -4
- package/esm2022/lib/material.module.mjs +11 -11
- package/esm2022/lib/pipes/emojify.pipe.mjs +4 -4
- package/esm2022/lib/pipes/group-message-display-name.pipe.mjs +4 -4
- package/esm2022/lib/pipes/linkfy.pipe.mjs +4 -4
- package/esm2022/lib/pipes/sanitize.pipe.mjs +5 -5
- package/esm2022/lib/services/chat.service.mjs +5 -5
- package/fesm2022/muraai-mnl-chat.mjs +72 -72
- package/fesm2022/muraai-mnl-chat.mjs.map +1 -1
- package/lib/material.module.d.ts +9 -9
- package/package.json +3 -3
|
@@ -88,13 +88,13 @@ export class NgChatFriendsListComponent {
|
|
|
88
88
|
this.onCloseWindowClick.emit(true);
|
|
89
89
|
console.log('hoi latest friendlist', this.shouldDisplay);
|
|
90
90
|
}
|
|
91
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
92
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
91
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: NgChatFriendsListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
92
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: NgChatFriendsListComponent, selector: "ng-chat-friends-list", inputs: { participants: "participants", participantsResponse: "participantsResponse", participantsInteractedWith: "participantsInteractedWith", windows: "windows", userId: "userId", localization: "localization", shouldDisplay: "shouldDisplay", isCollapsed: "isCollapsed", searchEnabled: "searchEnabled", currentActiveOption: "currentActiveOption", hideFriendsList: "hideFriendsList" }, outputs: { onParticipantClicked: "onParticipantClicked", onOptionPromptCanceled: "onOptionPromptCanceled", onOptionPromptConfirmed: "onOptionPromptConfirmed", onCloseWindowClick: "onCloseWindowClick" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"shouldDisplay\" id=\"ng-chat-people\" [ngClass]=\"{'primary-outline-color': true, 'primary-background': true, 'ng-chat-people-collapsed': isCollapsed}\">\n\t<a href=\"javascript:void(0);\" class=\"ng-chat-title secondary-background shadowed\" (click)=\"onChatTitleClicked()\">\n\t\t<span>\n\t\t\t{{localization.title}}\n\t\t</span>\n\t<a href=\"javascript:void(0);\" class=\" ng-chat-close \" (click)=\"onCloseWindow()\" >✕</a>\n\t</a>\n\t<div *ngIf=\"currentActiveOption\" class=\"ng-chat-people-actions\" (click)=\"onFriendsListActionCancelClicked()\">\n\t\t<a href=\"javascript:void(0);\" class=\"ng-chat-people-action\">\n\t\t\t<i class=\"remove-icon\"></i>\n\t\t</a>\n\t\t<a href=\"javascript:void(0);\" class=\"ng-chat-people-action\" (click)=\"onFriendsListActionConfirmClicked()\">\n\t\t\t<i class=\"check-icon\"></i>\n\t\t</a>\n\t</div>\n\t<input *ngIf=\"searchEnabled\" id=\"ng-chat-search_friend\" class=\"friends-search-bar\" type=\"search\" [placeholder]=\"localization.searchPlaceholder\" [(ngModel)]=\"searchInput\" />\n\t<ul id=\"ng-chat-users\" *ngIf=\"!isCollapsed\" [ngClass]=\"{'offset-search': searchEnabled}\">\n\t\t<li *ngFor=\"let user of filteredParticipants\">\n\t\t\t<input \n\t\t\t\t*ngIf=\"currentActiveOption && currentActiveOption.validateContext(user)\" \n\t\t\t\ttype=\"checkbox\" \n\t\t\t\tclass=\"ng-chat-users-checkbox\" \n\t\t\t\t(change)=\"onFriendsListCheckboxChange(user, $event.target.checked)\" \n\t\t\t\t[checked]=\"isUserSelectedFromFriendsList(user)\"/>\n\t\t\t<div [ngClass]=\"{'ng-chat-friends-list-selectable-offset': currentActiveOption, 'ng-chat-friends-list-container': true}\" (click)=\"onUserClick(user)\">\n\t\t\t\t<!-- <div *ngIf=\"!user.avatar\" class=\"icon-wrapper\">\n\t\t\t\t\t<i class=\"user-icon\"></i>\n\t\t\t\t</div> -->\n\t\t\t\t<div class=\"user\" *ngIf=\"!user.avatar\">\n\t\t\t\t\t{{user.displayName|firstLetterPipe}}\n\n\t\t\t\t</div>\n\n\t\t\t\t<img *ngIf=\"user.avatar\" alt=\"\" class=\"avatar\" height=\"30\" width=\"30\" [src]=\"user.avatar | sanitize\"/>\n\t\t\t\t<div class=\"\"></div>\n\t\t\t\t<strong title=\"{{user.displayName}}\">{{user.displayName}}</strong>\n\t\t\t\t<span [ngClass]=\"{'ng-chat-participant-status': true, 'online': user.status === ChatParticipantStatus.Online, 'busy': user.status === ChatParticipantStatus.Busy, 'away': user.status === ChatParticipantStatus.Away, 'offline': user.status === ChatParticipantStatus.Offline}\" title=\"{{chatParticipantStatusDescriptor(user.status, localization)}}\"></span>\n\t\t\t\t<span *ngIf=\"unreadMessagesTotalByParticipant(user).length > 0\" class=\"ng-chat-unread-messages-count unread-messages-counter-container primary-text\">{{unreadMessagesTotalByParticipant(user)}}</span>\n\t\t\t</div>\n\t\t</li>\n\t</ul>\n</div>", styles: ["#ng-chat-people{position:relative;width:240px;height:360px;border-width:1px;border-style:solid;margin-right:20px;box-shadow:0 4px 8px #00000040;border-bottom:0;border-radius:10px!important;box-sizing:border-box!important;overflow:hidden!important;margin-bottom:10px!important;border:1px solid grey!important}#ng-chat-people.ng-chat-people-collapsed{height:30px}#ng-chat-search_friend{display:block;padding:7px 10px;margin:10px auto 0;width:calc(100% - 20px);font-size:.9em;border-radius:20px!important;border:.5px solid grey!important}#ng-chat-users{padding:0 10px;list-style:none;margin:0;overflow:auto;position:absolute;top:42px;bottom:0;width:100%;box-sizing:border-box}#ng-chat-users.offset-search{top:84px}#ng-chat-users .ng-chat-users-checkbox{float:left;margin-right:5px;margin-top:8px}#ng-chat-users li{clear:both;margin-bottom:10px;overflow:hidden;cursor:pointer;max-height:30px}#ng-chat-users li>.ng-chat-friends-list-selectable-offset{margin-left:22px}#ng-chat-users li .ng-chat-friends-list-container{display:inline-block;width:100%}#ng-chat-users li>.ng-chat-friends-list-selectable-offset.ng-chat-friends-list-container{display:block;width:auto}#ng-chat-users li .ng-chat-friends-list-container>img.avatar,#ng-chat-users li .ng-chat-friends-list-container>.user{float:left;display:flex;justify-content:center;margin-right:5px}#ng-chat-users li .ng-chat-friends-list-container>.user{overflow:hidden;width:30px;height:30px}#ng-chat-users li .ng-chat-friends-list-container>.user>i{color:#fff;transform:scale(.7)}#ng-chat-users li .ng-chat-friends-list-container>strong{float:left;line-height:30px;font-size:.8em;max-width:57%;max-height:30px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#ng-chat-users li .ng-chat-friends-list-container>.ng-chat-participant-status{float:right}.ng-chat-people-actions{position:absolute;top:4px;right:5px;margin:0;padding:0;z-index:2}.ng-chat-people-actions>a.ng-chat-people-action{display:inline-block;width:21px;height:21px;margin-right:8px;text-decoration:none;border:none;border-radius:25px;padding:1px}@media only screen and (max-width: 581px){#ng-chat-people{width:300px;height:360px;margin-right:0}}.user{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background-color:#00b04c;color:#fff;font-size:12px;font-family:inherit}\n"], dependencies: [{ kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.SanitizePipe, name: "sanitize" }, { kind: "pipe", type: i4.FirstLetterPipe, name: "firstLetterPipe" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
93
93
|
}
|
|
94
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
94
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: NgChatFriendsListComponent, decorators: [{
|
|
95
95
|
type: Component,
|
|
96
96
|
args: [{ selector: 'ng-chat-friends-list', encapsulation: ViewEncapsulation.None, template: "<div *ngIf=\"shouldDisplay\" id=\"ng-chat-people\" [ngClass]=\"{'primary-outline-color': true, 'primary-background': true, 'ng-chat-people-collapsed': isCollapsed}\">\n\t<a href=\"javascript:void(0);\" class=\"ng-chat-title secondary-background shadowed\" (click)=\"onChatTitleClicked()\">\n\t\t<span>\n\t\t\t{{localization.title}}\n\t\t</span>\n\t<a href=\"javascript:void(0);\" class=\" ng-chat-close \" (click)=\"onCloseWindow()\" >✕</a>\n\t</a>\n\t<div *ngIf=\"currentActiveOption\" class=\"ng-chat-people-actions\" (click)=\"onFriendsListActionCancelClicked()\">\n\t\t<a href=\"javascript:void(0);\" class=\"ng-chat-people-action\">\n\t\t\t<i class=\"remove-icon\"></i>\n\t\t</a>\n\t\t<a href=\"javascript:void(0);\" class=\"ng-chat-people-action\" (click)=\"onFriendsListActionConfirmClicked()\">\n\t\t\t<i class=\"check-icon\"></i>\n\t\t</a>\n\t</div>\n\t<input *ngIf=\"searchEnabled\" id=\"ng-chat-search_friend\" class=\"friends-search-bar\" type=\"search\" [placeholder]=\"localization.searchPlaceholder\" [(ngModel)]=\"searchInput\" />\n\t<ul id=\"ng-chat-users\" *ngIf=\"!isCollapsed\" [ngClass]=\"{'offset-search': searchEnabled}\">\n\t\t<li *ngFor=\"let user of filteredParticipants\">\n\t\t\t<input \n\t\t\t\t*ngIf=\"currentActiveOption && currentActiveOption.validateContext(user)\" \n\t\t\t\ttype=\"checkbox\" \n\t\t\t\tclass=\"ng-chat-users-checkbox\" \n\t\t\t\t(change)=\"onFriendsListCheckboxChange(user, $event.target.checked)\" \n\t\t\t\t[checked]=\"isUserSelectedFromFriendsList(user)\"/>\n\t\t\t<div [ngClass]=\"{'ng-chat-friends-list-selectable-offset': currentActiveOption, 'ng-chat-friends-list-container': true}\" (click)=\"onUserClick(user)\">\n\t\t\t\t<!-- <div *ngIf=\"!user.avatar\" class=\"icon-wrapper\">\n\t\t\t\t\t<i class=\"user-icon\"></i>\n\t\t\t\t</div> -->\n\t\t\t\t<div class=\"user\" *ngIf=\"!user.avatar\">\n\t\t\t\t\t{{user.displayName|firstLetterPipe}}\n\n\t\t\t\t</div>\n\n\t\t\t\t<img *ngIf=\"user.avatar\" alt=\"\" class=\"avatar\" height=\"30\" width=\"30\" [src]=\"user.avatar | sanitize\"/>\n\t\t\t\t<div class=\"\"></div>\n\t\t\t\t<strong title=\"{{user.displayName}}\">{{user.displayName}}</strong>\n\t\t\t\t<span [ngClass]=\"{'ng-chat-participant-status': true, 'online': user.status === ChatParticipantStatus.Online, 'busy': user.status === ChatParticipantStatus.Busy, 'away': user.status === ChatParticipantStatus.Away, 'offline': user.status === ChatParticipantStatus.Offline}\" title=\"{{chatParticipantStatusDescriptor(user.status, localization)}}\"></span>\n\t\t\t\t<span *ngIf=\"unreadMessagesTotalByParticipant(user).length > 0\" class=\"ng-chat-unread-messages-count unread-messages-counter-container primary-text\">{{unreadMessagesTotalByParticipant(user)}}</span>\n\t\t\t</div>\n\t\t</li>\n\t</ul>\n</div>", styles: ["#ng-chat-people{position:relative;width:240px;height:360px;border-width:1px;border-style:solid;margin-right:20px;box-shadow:0 4px 8px #00000040;border-bottom:0;border-radius:10px!important;box-sizing:border-box!important;overflow:hidden!important;margin-bottom:10px!important;border:1px solid grey!important}#ng-chat-people.ng-chat-people-collapsed{height:30px}#ng-chat-search_friend{display:block;padding:7px 10px;margin:10px auto 0;width:calc(100% - 20px);font-size:.9em;border-radius:20px!important;border:.5px solid grey!important}#ng-chat-users{padding:0 10px;list-style:none;margin:0;overflow:auto;position:absolute;top:42px;bottom:0;width:100%;box-sizing:border-box}#ng-chat-users.offset-search{top:84px}#ng-chat-users .ng-chat-users-checkbox{float:left;margin-right:5px;margin-top:8px}#ng-chat-users li{clear:both;margin-bottom:10px;overflow:hidden;cursor:pointer;max-height:30px}#ng-chat-users li>.ng-chat-friends-list-selectable-offset{margin-left:22px}#ng-chat-users li .ng-chat-friends-list-container{display:inline-block;width:100%}#ng-chat-users li>.ng-chat-friends-list-selectable-offset.ng-chat-friends-list-container{display:block;width:auto}#ng-chat-users li .ng-chat-friends-list-container>img.avatar,#ng-chat-users li .ng-chat-friends-list-container>.user{float:left;display:flex;justify-content:center;margin-right:5px}#ng-chat-users li .ng-chat-friends-list-container>.user{overflow:hidden;width:30px;height:30px}#ng-chat-users li .ng-chat-friends-list-container>.user>i{color:#fff;transform:scale(.7)}#ng-chat-users li .ng-chat-friends-list-container>strong{float:left;line-height:30px;font-size:.8em;max-width:57%;max-height:30px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#ng-chat-users li .ng-chat-friends-list-container>.ng-chat-participant-status{float:right}.ng-chat-people-actions{position:absolute;top:4px;right:5px;margin:0;padding:0;z-index:2}.ng-chat-people-actions>a.ng-chat-people-action{display:inline-block;width:21px;height:21px;margin-right:8px;text-decoration:none;border:none;border-radius:25px;padding:1px}@media only screen and (max-width: 581px){#ng-chat-people{width:300px;height:360px;margin-right:0}}.user{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background-color:#00b04c;color:#fff;font-size:12px;font-family:inherit}\n"] }]
|
|
97
|
-
}], ctorParameters:
|
|
97
|
+
}], ctorParameters: () => [], propDecorators: { participants: [{
|
|
98
98
|
type: Input
|
|
99
99
|
}], participantsResponse: [{
|
|
100
100
|
type: Input
|
|
@@ -125,4 +125,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
125
125
|
}], onCloseWindowClick: [{
|
|
126
126
|
type: Output
|
|
127
127
|
}] } });
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctY2hhdC1mcmllbmRzLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC9zcmMvbGliL2NvbXBvbmVudHMvbmctY2hhdC1mcmllbmRzLWxpc3QvbmctY2hhdC1mcmllbmRzLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC9zcmMvbGliL2NvbXBvbmVudHMvbmctY2hhdC1mcmllbmRzLWxpc3QvbmctY2hhdC1mcmllbmRzLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBR3BILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBS2hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7Ozs7O0FBUWhHLE1BQU0sT0FBTywwQkFBMEI7SUFDbkM7UUFXTywrQkFBMEIsR0FBdUIsRUFBRSxDQUFDO1FBd0JwRCx5QkFBb0IsR0FBbUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUcxRSwyQkFBc0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUcvRCw0QkFBdUIsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVoRSxvQkFBZSxHQUFXLEtBQUssQ0FBRTtRQUdqQyx1QkFBa0IsR0FBeUIsSUFBSSxZQUFZLEVBQVcsQ0FBQTtRQUl0RSxpQ0FBNEIsR0FBVyxFQUFFLENBQUM7UUFFMUMsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFFaEMsa0RBQWtEO1FBQzNDLDBCQUFxQixHQUFHLHFCQUFxQixD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QUdqQixpQkFBaUIsQ0FBQyxJQUFJOzBFQVE5QixZQUFZO3NCQURsQixLQUFLO2dCQUlDLG9CQUFvQjtzQkFEMUIsS0FBSztnQkFJQywwQkFBMEI7c0JBRGhDLEtBQUs7Z0JBSUMsT0FBTztzQkFEYixLQUFLO2dCQUlDLE1BQU07c0JBRFosS0FBSztnQkFJQyxZQUFZO3NCQURsQixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsS0FBSztnQkFJQyxhQUFhO3NCQURuQixLQUFLO2dCQUlDLG1CQUFtQjtzQkFEekIsS0FBSztnQkFJQyxvQkFBb0I7c0JBRDFCLE1BQU07Z0JBSUEsc0JBQXNCO3NCQUQ1QixNQUFNO2dCQUlBLHVCQUF1QjtzQkFEN0IsTUFBTTtnQkFHQSxlQUFlO3NCQURyQixLQUFLO2dCQUlDLGtCQUFrQjtzQkFEeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgVmlld0VuY2Fwc3VsYXRpb24sIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uIH0gZnJvbSAnLi4vLi4vY29yZS9sb2NhbGl6YXRpb24nO1xuaW1wb3J0IHsgSUNoYXRPcHRpb24gfSBmcm9tICcuLi8uLi9jb3JlL2NoYXQtb3B0aW9uJztcbmltcG9ydCB7IENoYXRQYXJ0aWNpcGFudFN0YXR1cyB9IGZyb20gXCIuLi8uLi9jb3JlL2NoYXQtcGFydGljaXBhbnQtc3RhdHVzLmVudW1cIjtcbmltcG9ydCB7IElDaGF0UGFydGljaXBhbnQgfSBmcm9tIFwiLi4vLi4vY29yZS9jaGF0LXBhcnRpY2lwYW50XCI7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSBcIi4uLy4uL2NvcmUvdXNlclwiO1xuaW1wb3J0IHsgV2luZG93IH0gZnJvbSBcIi4uLy4uL2NvcmUvd2luZG93XCI7XG5pbXBvcnQgeyBQYXJ0aWNpcGFudFJlc3BvbnNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvcGFydGljaXBhbnQtcmVzcG9uc2VcIjtcbmltcG9ydCB7IE1lc3NhZ2VDb3VudGVyIH0gZnJvbSBcIi4uLy4uL2NvcmUvbWVzc2FnZS1jb3VudGVyXCI7XG5pbXBvcnQgeyBjaGF0UGFydGljaXBhbnRTdGF0dXNEZXNjcmlwdG9yIH0gZnJvbSAnLi4vLi4vY29yZS9jaGF0LXBhcnRpY2lwYW50LXN0YXR1cy1kZXNjcmlwdG9yJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZy1jaGF0LWZyaWVuZHMtbGlzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL25nLWNoYXQtZnJpZW5kcy1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9uZy1jaGF0LWZyaWVuZHMtbGlzdC5jb21wb25lbnQuY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBOZ0NoYXRGcmllbmRzTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgXG4gICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBhcnRpY2lwYW50czogSUNoYXRQYXJ0aWNpcGFudFtdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcGFydGljaXBhbnRzUmVzcG9uc2U6IFBhcnRpY2lwYW50UmVzcG9uc2VbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBhcnRpY2lwYW50c0ludGVyYWN0ZWRXaXRoOiBJQ2hhdFBhcnRpY2lwYW50W10gPSBbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHdpbmRvd3M6IFdpbmRvd1tdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdXNlcklkOiBhbnk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsb2NhbGl6YXRpb246IExvY2FsaXphdGlvbjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3VsZERpc3BsYXk6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpc0NvbGxhcHNlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNlYXJjaEVuYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjdXJyZW50QWN0aXZlT3B0aW9uOiBJQ2hhdE9wdGlvbiB8IG51bGw7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb25QYXJ0aWNpcGFudENsaWNrZWQ6IEV2ZW50RW1pdHRlcjxJQ2hhdFBhcnRpY2lwYW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvbk9wdGlvblByb21wdENhbmNlbGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvbk9wdGlvblByb21wdENvbmZpcm1lZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaGlkZUZyaWVuZHNMaXN0OiBib29sZWFuID1mYWxzZSA7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb25DbG9zZVdpbmRvd0NsaWNrOkV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKVxuICAgIFxuICAgXG5cbiAgICBwdWJsaWMgc2VsZWN0ZWRVc2Vyc0Zyb21GcmllbmRzTGlzdDogVXNlcltdID0gW107XG5cbiAgICBwdWJsaWMgc2VhcmNoSW5wdXQ6IHN0cmluZyA9ICcnO1xuXG4gICAgLy8gRXhwb3NlcyBlbnVtcyBhbmQgZnVuY3Rpb25zIGZvciB0aGUgbmctdGVtcGxhdGVcbiAgICBwdWJsaWMgQ2hhdFBhcnRpY2lwYW50U3RhdHVzID0gQ2hhdFBhcnRpY2lwYW50U3RhdHVzO1xuICAgIHB1YmxpYyBjaGF0UGFydGljaXBhbnRTdGF0dXNEZXNjcmlwdG9yID0gY2hhdFBhcnRpY2lwYW50U3RhdHVzRGVzY3JpcHRvcjtcblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEFjdGl2ZU9wdGlvbikge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudE9wdGlvblRyaWdnZXJlZEJ5ID0gdGhpcy5jdXJyZW50QWN0aXZlT3B0aW9uICYmIHRoaXMuY3VycmVudEFjdGl2ZU9wdGlvbi5jaGF0dGluZ1RvLnBhcnRpY2lwYW50LmlkO1xuICAgICAgICAgICAgY29uc3QgaXNBY3RpdmF0ZWRVc2VySW5TZWxlY3RlZExpc3QgPSAodGhpcy5zZWxlY3RlZFVzZXJzRnJvbUZyaWVuZHNMaXN0LmZpbHRlcihpdGVtID0+IGl0ZW0uaWQgPT0gY3VycmVudE9wdGlvblRyaWdnZXJlZEJ5KSkubGVuZ3RoID4gMDtcblxuICAgICAgICAgICAgaWYgKCFpc0FjdGl2YXRlZFVzZXJJblNlbGVjdGVkTGlzdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRVc2Vyc0Zyb21GcmllbmRzTGlzdCA9IHRoaXMuc2VsZWN0ZWRVc2Vyc0Zyb21GcmllbmRzTGlzdC5jb25jYXQodGhpcy5jdXJyZW50QWN0aXZlT3B0aW9uLmNoYXR0aW5nVG8ucGFydGljaXBhbnQgYXMgVXNlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gbGV0IGlucHV0ID0gdXNlci5kaXNwbGF5TmFtZTtcbiAgICAgICAgLy8gbGV0IHBhcnRzID0gaW5wdXQuc3BsaXQoXCIgXCIpO1xuICAgICAgICAvLyAgbGV0IGZpcnN0TGV0dGVyID0gcGFydHNbMF07XG4gICAgICAgIC8vICBsZXQgc2Vjb25kTGV0dGVycyA9IHBhcnRzWzFdLnNsaWNlKDAsIDIpO1xuICAgIH1cblxuICAgIGdldCBmaWx0ZXJlZFBhcnRpY2lwYW50cygpOiBJQ2hhdFBhcnRpY2lwYW50W11cbiAgICB7XG4gICAgICAgIGlmICh0aGlzLnNlYXJjaElucHV0Lmxlbmd0aCA+IDApe1xuICAgICAgICAgICAgLy8gU2VhcmNoZXMgaW4gdGhlIGZyaWVuZCBsaXN0IGJ5IHRoZSBpbnB1dHRlZCBzZWFyY2ggc3RyaW5nXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJ0aWNpcGFudHMuZmlsdGVyKHggPT4geC5kaXNwbGF5TmFtZS50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuc2VhcmNoSW5wdXQudG9VcHBlckNhc2UoKSkpO1xuICAgICAgICB9XG5jb25zb2xlLmxvZyhcInRoaXMucGFydGljaXBhbnRzXCIsdGhpcy5wYXJ0aWNpcGFudHMpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnBhcnRpY2lwYW50cztcbiAgICB9XG5cbiAgICBpc1VzZXJTZWxlY3RlZEZyb21GcmllbmRzTGlzdCh1c2VyOiBVc2VyKSA6IGJvb2xlYW5cbiAgICB7XG4gICAgICAgIHJldHVybiAodGhpcy5zZWxlY3RlZFVzZXJzRnJvbUZyaWVuZHNMaXN0LmZpbHRlcihpdGVtID0+IGl0ZW0uaWQgPT0gdXNlci5pZCkpLmxlbmd0aCA+IDBcbiAgICB9XG5cbiAgICB1bnJlYWRNZXNzYWdlc1RvdGFsQnlQYXJ0aWNpcGFudChwYXJ0aWNpcGFudDogSUNoYXRQYXJ0aWNpcGFudCk6IHN0cmluZ1xuICAgIHtcbiAgICAgICAgbGV0IG9wZW5lZFdpbmRvdyA9IHRoaXMud2luZG93cy5maW5kKHggPT4geC5wYXJ0aWNpcGFudC5pZCA9PSBwYXJ0aWNpcGFudC5pZCk7XG5cbiAgICAgICAgaWYgKG9wZW5lZFdpbmRvdyl7XG4gICAgICAgICAgICByZXR1cm4gTWVzc2FnZUNvdW50ZXIudW5yZWFkTWVzc2FnZXNUb3RhbChvcGVuZWRXaW5kb3csIHRoaXMudXNlcklkKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxldCB0b3RhbFVucmVhZE1lc3NhZ2VzID0gdGhpcy5wYXJ0aWNpcGFudHNSZXNwb25zZVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoeCA9PiB4LnBhcnRpY2lwYW50LmlkID09IHBhcnRpY2lwYW50LmlkICYmICF0aGlzLnBhcnRpY2lwYW50c0ludGVyYWN0ZWRXaXRoLmZpbmQodSA9PiB1LmlkID09IHBhcnRpY2lwYW50LmlkKSAmJiB4Lm1ldGFkYXRhICYmIHgubWV0YWRhdGEudG90YWxVbnJlYWRNZXNzYWdlcyA+IDApXG4gICAgICAgICAgICAgICAgLm1hcCgocGFydGljaXBhbnRSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFydGljaXBhbnRSZXNwb25zZS5tZXRhZGF0YS50b3RhbFVucmVhZE1lc3NhZ2VzXG4gICAgICAgICAgICAgICAgfSlbMF07XG5cbiAgICAgICAgICAgIHJldHVybiBNZXNzYWdlQ291bnRlci5mb3JtYXRVbnJlYWRNZXNzYWdlc1RvdGFsKHRvdGFsVW5yZWFkTWVzc2FnZXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xlYW5VcFVzZXJTZWxlY3Rpb24gPSAoKSA9PiB0aGlzLnNlbGVjdGVkVXNlcnNGcm9tRnJpZW5kc0xpc3QgPSBbXTtcblxuICAgIC8vIFRvZ2dsZSBmcmllbmRzIGxpc3QgdmlzaWJpbGl0eVxuICAgIG9uQ2hhdFRpdGxlQ2xpY2tlZCgpOiB2b2lkXG4gICAge1xuICAgICAgICB0aGlzLmlzQ29sbGFwc2VkID0gIXRoaXMuaXNDb2xsYXBzZWQ7XG4gICAgfVxuXG4gICAgb25GcmllbmRzTGlzdENoZWNrYm94Q2hhbmdlKHNlbGVjdGVkVXNlcjogVXNlciwgaXNDaGVja2VkOiBib29sZWFuKTogdm9pZFxuICAgIHtcbiAgICAgICAgaWYoaXNDaGVja2VkKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVXNlcnNGcm9tRnJpZW5kc0xpc3QucHVzaChzZWxlY3RlZFVzZXIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFVzZXJzRnJvbUZyaWVuZHNMaXN0LnNwbGljZSh0aGlzLnNlbGVjdGVkVXNlcnNGcm9tRnJpZW5kc0xpc3QuaW5kZXhPZihzZWxlY3RlZFVzZXIpLCAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVXNlckNsaWNrKGNsaWNrZWRVc2VyOiBVc2VyKTogdm9pZFxuICAgIHtcbiAgICAgICAgdGhpcy5vblBhcnRpY2lwYW50Q2xpY2tlZC5lbWl0KGNsaWNrZWRVc2VyKTtcbiAgICB9XG5cbiAgICBvbkZyaWVuZHNMaXN0QWN0aW9uQ2FuY2VsQ2xpY2tlZCgpOiB2b2lkXG4gICAge1xuICAgICAgICB0aGlzLm9uT3B0aW9uUHJvbXB0Q2FuY2VsZWQuZW1pdCgpO1xuICAgICAgICB0aGlzLmNsZWFuVXBVc2VyU2VsZWN0aW9uKCk7XG4gICAgfVxuXG4gICAgb25GcmllbmRzTGlzdEFjdGlvbkNvbmZpcm1DbGlja2VkKCkgOiB2b2lkXG4gICAge1xuICAgICAgICB0aGlzLm9uT3B0aW9uUHJvbXB0Q29uZmlybWVkLmVtaXQodGhpcy5zZWxlY3RlZFVzZXJzRnJvbUZyaWVuZHNMaXN0KTtcbiAgICAgICAgdGhpcy5jbGVhblVwVXNlclNlbGVjdGlvbigpO1xuICAgIH1cbiAgICBvbkNsb3NlV2luZG93KCl7XG4gICAgICAgICAgXG4gICAgICAgXG4gICAgICAgIHRoaXMub25DbG9zZVdpbmRvd0NsaWNrLmVtaXQodHJ1ZSlcblxuICAgICAgICBjb25zb2xlLmxvZygnaG9pIGxhdGVzdCBmcmllbmRsaXN0Jyx0aGlzLnNob3VsZERpc3BsYXkpXG5cbiAgICAgICAgXG4gICAgfVxuXG59XG4vKiBlc2xpbnQtZW5hYmxlICovIiwiPGRpdiAqbmdJZj1cInNob3VsZERpc3BsYXlcIiBpZD1cIm5nLWNoYXQtcGVvcGxlXCIgW25nQ2xhc3NdPVwieydwcmltYXJ5LW91dGxpbmUtY29sb3InOiB0cnVlLCAncHJpbWFyeS1iYWNrZ3JvdW5kJzogdHJ1ZSwgJ25nLWNoYXQtcGVvcGxlLWNvbGxhcHNlZCc6IGlzQ29sbGFwc2VkfVwiPlxuXHQ8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIGNsYXNzPVwibmctY2hhdC10aXRsZSBzZWNvbmRhcnktYmFja2dyb3VuZCBzaGFkb3dlZFwiIChjbGljayk9XCJvbkNoYXRUaXRsZUNsaWNrZWQoKVwiPlxuXHRcdDxzcGFuPlxuXHRcdFx0e3tsb2NhbGl6YXRpb24udGl0bGV9fVxuXHRcdDwvc3Bhbj5cblx0PGEgIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCIgY2xhc3M9XCIgbmctY2hhdC1jbG9zZSBcIiAoY2xpY2spPVwib25DbG9zZVdpbmRvdygpXCIgPiYjeDI3MTU7PC9hPlxuXHQ8L2E+XG5cdDxkaXYgKm5nSWY9XCJjdXJyZW50QWN0aXZlT3B0aW9uXCIgY2xhc3M9XCJuZy1jaGF0LXBlb3BsZS1hY3Rpb25zXCIgKGNsaWNrKT1cIm9uRnJpZW5kc0xpc3RBY3Rpb25DYW5jZWxDbGlja2VkKClcIj5cblx0XHQ8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIGNsYXNzPVwibmctY2hhdC1wZW9wbGUtYWN0aW9uXCI+XG5cdFx0XHQ8aSBjbGFzcz1cInJlbW92ZS1pY29uXCI+PC9pPlxuXHRcdDwvYT5cblx0XHQ8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIGNsYXNzPVwibmctY2hhdC1wZW9wbGUtYWN0aW9uXCIgKGNsaWNrKT1cIm9uRnJpZW5kc0xpc3RBY3Rpb25Db25maXJtQ2xpY2tlZCgpXCI+XG5cdFx0XHQ8aSBjbGFzcz1cImNoZWNrLWljb25cIj48L2k+XG5cdFx0PC9hPlxuXHQ8L2Rpdj5cblx0PGlucHV0ICpuZ0lmPVwic2VhcmNoRW5hYmxlZFwiIGlkPVwibmctY2hhdC1zZWFyY2hfZnJpZW5kXCIgY2xhc3M9XCJmcmllbmRzLXNlYXJjaC1iYXJcIiB0eXBlPVwic2VhcmNoXCIgW3BsYWNlaG9sZGVyXT1cImxvY2FsaXphdGlvbi5zZWFyY2hQbGFjZWhvbGRlclwiIFsobmdNb2RlbCldPVwic2VhcmNoSW5wdXRcIiAvPlxuXHQ8dWwgaWQ9XCJuZy1jaGF0LXVzZXJzXCIgKm5nSWY9XCIhaXNDb2xsYXBzZWRcIiBbbmdDbGFzc109XCJ7J29mZnNldC1zZWFyY2gnOiBzZWFyY2hFbmFibGVkfVwiPlxuXHRcdDxsaSAqbmdGb3I9XCJsZXQgdXNlciBvZiBmaWx0ZXJlZFBhcnRpY2lwYW50c1wiPlxuXHRcdFx0PGlucHV0IFxuXHRcdFx0XHQqbmdJZj1cImN1cnJlbnRBY3RpdmVPcHRpb24gJiYgY3VycmVudEFjdGl2ZU9wdGlvbi52YWxpZGF0ZUNvbnRleHQodXNlcilcIiBcblx0XHRcdFx0dHlwZT1cImNoZWNrYm94XCIgXG5cdFx0XHRcdGNsYXNzPVwibmctY2hhdC11c2Vycy1jaGVja2JveFwiIFxuXHRcdFx0XHQoY2hhbmdlKT1cIm9uRnJpZW5kc0xpc3RDaGVja2JveENoYW5nZSh1c2VyLCAkZXZlbnQudGFyZ2V0LmNoZWNrZWQpXCIgXG5cdFx0XHRcdFtjaGVja2VkXT1cImlzVXNlclNlbGVjdGVkRnJvbUZyaWVuZHNMaXN0KHVzZXIpXCIvPlxuXHRcdFx0PGRpdiBbbmdDbGFzc109XCJ7J25nLWNoYXQtZnJpZW5kcy1saXN0LXNlbGVjdGFibGUtb2Zmc2V0JzogY3VycmVudEFjdGl2ZU9wdGlvbiwgJ25nLWNoYXQtZnJpZW5kcy1saXN0LWNvbnRhaW5lcic6IHRydWV9XCIgKGNsaWNrKT1cIm9uVXNlckNsaWNrKHVzZXIpXCI+XG5cdFx0XHRcdDwhLS0gPGRpdiAqbmdJZj1cIiF1c2VyLmF2YXRhclwiIGNsYXNzPVwiaWNvbi13cmFwcGVyXCI+XG5cdFx0XHRcdFx0PGkgY2xhc3M9XCJ1c2VyLWljb25cIj48L2k+XG5cdFx0XHRcdDwvZGl2PiAtLT5cblx0XHRcdFx0PGRpdiBjbGFzcz1cInVzZXJcIiAqbmdJZj1cIiF1c2VyLmF2YXRhclwiPlxuXHRcdFx0XHRcdHt7dXNlci5kaXNwbGF5TmFtZXxmaXJzdExldHRlclBpcGV9fVxuXG5cdFx0XHRcdDwvZGl2PlxuXG5cdFx0XHRcdDxpbWcgKm5nSWY9XCJ1c2VyLmF2YXRhclwiIGFsdD1cIlwiIGNsYXNzPVwiYXZhdGFyXCIgaGVpZ2h0PVwiMzBcIiB3aWR0aD1cIjMwXCIgIFtzcmNdPVwidXNlci5hdmF0YXIgfCBzYW5pdGl6ZVwiLz5cblx0XHRcdFx0PGRpdiBjbGFzcz1cIlwiPjwvZGl2PlxuXHRcdFx0XHQ8c3Ryb25nIHRpdGxlPVwie3t1c2VyLmRpc3BsYXlOYW1lfX1cIj57e3VzZXIuZGlzcGxheU5hbWV9fTwvc3Ryb25nPlxuXHRcdFx0XHQ8c3BhbiBbbmdDbGFzc109XCJ7J25nLWNoYXQtcGFydGljaXBhbnQtc3RhdHVzJzogdHJ1ZSwgJ29ubGluZSc6IHVzZXIuc3RhdHVzID09PSBDaGF0UGFydGljaXBhbnRTdGF0dXMuT25saW5lLCAnYnVzeSc6IHVzZXIuc3RhdHVzID09PSBDaGF0UGFydGljaXBhbnRTdGF0dXMuQnVzeSwgJ2F3YXknOiB1c2VyLnN0YXR1cyA9PT0gQ2hhdFBhcnRpY2lwYW50U3RhdHVzLkF3YXksICdvZmZsaW5lJzogdXNlci5zdGF0dXMgPT09IENoYXRQYXJ0aWNpcGFudFN0YXR1cy5PZmZsaW5lfVwiIHRpdGxlPVwie3tjaGF0UGFydGljaXBhbnRTdGF0dXNEZXNjcmlwdG9yKHVzZXIuc3RhdHVzLCBsb2NhbGl6YXRpb24pfX1cIj48L3NwYW4+XG5cdFx0XHRcdDxzcGFuICpuZ0lmPVwidW5yZWFkTWVzc2FnZXNUb3RhbEJ5UGFydGljaXBhbnQodXNlcikubGVuZ3RoID4gMFwiIGNsYXNzPVwibmctY2hhdC11bnJlYWQtbWVzc2FnZXMtY291bnQgdW5yZWFkLW1lc3NhZ2VzLWNvdW50ZXItY29udGFpbmVyIHByaW1hcnktdGV4dFwiPnt7dW5yZWFkTWVzc2FnZXNUb3RhbEJ5UGFydGljaXBhbnQodXNlcil9fTwvc3Bhbj5cblx0XHRcdDwvZGl2PlxuXHRcdDwvbGk+XG5cdDwvdWw+XG48L2Rpdj4iXX0=
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctY2hhdC1mcmllbmRzLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC9zcmMvbGliL2NvbXBvbmVudHMvbmctY2hhdC1mcmllbmRzLWxpc3QvbmctY2hhdC1mcmllbmRzLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC9zcmMvbGliL2NvbXBvbmVudHMvbmctY2hhdC1mcmllbmRzLWxpc3QvbmctY2hhdC1mcmllbmRzLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBR3BILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBS2hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7Ozs7O0FBUWhHLE1BQU0sT0FBTywwQkFBMEI7SUFDbkM7UUFXTywrQkFBMEIsR0FBdUIsRUFBRSxDQUFDO1FBd0JwRCx5QkFBb0IsR0FBbUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUcxRSwyQkFBc0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUcvRCw0QkFBdUIsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVoRSxvQkFBZSxHQUFXLEtBQUssQ0FBRTtRQUdqQyx1QkFBa0IsR0FBeUIsSUFBSSxZQUFZLEVBQVcsQ0FBQTtRQUl0RSxpQ0FBNEIsR0FBVyxFQUFFLENBQUM7UUFFMUMsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFFaEMsa0RBQWtEO1FBQzNDLDBCQUFxQixHQUFHLHFCQUFxQixD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QTFCLDBCQUEwQiw4cEJDbEJ2Qyw4dEZBeUNNOzsyRkR2Qk8sMEJBQTBCO2tCQU50QyxTQUFTOytCQUNJLHNCQUFzQixpQkFHakIsaUJBQWlCLENBQUMsSUFBSTt3REFROUIsWUFBWTtzQkFEbEIsS0FBSztnQkFJQyxvQkFBb0I7c0JBRDFCLEtBQUs7Z0JBSUMsMEJBQTBCO3NCQURoQyxLQUFLO2dCQUlDLE9BQU87c0JBRGIsS0FBSztnQkFJQyxNQUFNO3NCQURaLEtBQUs7Z0JBSUMsWUFBWTtzQkFEbEIsS0FBSztnQkFJQyxhQUFhO3NCQURuQixLQUFLO2dCQUlDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUMsYUFBYTtzQkFEbkIsS0FBSztnQkFJQyxtQkFBbUI7c0JBRHpCLEtBQUs7Z0JBSUMsb0JBQW9CO3NCQUQxQixNQUFNO2dCQUlBLHNCQUFzQjtzQkFENUIsTUFBTTtnQkFJQSx1QkFBdUI7c0JBRDdCLE1BQU07Z0JBR0EsZUFBZTtzQkFEckIsS0FBSztnQkFJQyxrQkFBa0I7c0JBRHhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdFbmNhcHN1bGF0aW9uLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvY2FsaXphdGlvbiB9IGZyb20gJy4uLy4uL2NvcmUvbG9jYWxpemF0aW9uJztcbmltcG9ydCB7IElDaGF0T3B0aW9uIH0gZnJvbSAnLi4vLi4vY29yZS9jaGF0LW9wdGlvbic7XG5pbXBvcnQgeyBDaGF0UGFydGljaXBhbnRTdGF0dXMgfSBmcm9tIFwiLi4vLi4vY29yZS9jaGF0LXBhcnRpY2lwYW50LXN0YXR1cy5lbnVtXCI7XG5pbXBvcnQgeyBJQ2hhdFBhcnRpY2lwYW50IH0gZnJvbSBcIi4uLy4uL2NvcmUvY2hhdC1wYXJ0aWNpcGFudFwiO1xuaW1wb3J0IHsgVXNlciB9IGZyb20gXCIuLi8uLi9jb3JlL3VzZXJcIjtcbmltcG9ydCB7IFdpbmRvdyB9IGZyb20gXCIuLi8uLi9jb3JlL3dpbmRvd1wiO1xuaW1wb3J0IHsgUGFydGljaXBhbnRSZXNwb25zZSB9IGZyb20gXCIuLi8uLi9jb3JlL3BhcnRpY2lwYW50LXJlc3BvbnNlXCI7XG5pbXBvcnQgeyBNZXNzYWdlQ291bnRlciB9IGZyb20gXCIuLi8uLi9jb3JlL21lc3NhZ2UtY291bnRlclwiO1xuaW1wb3J0IHsgY2hhdFBhcnRpY2lwYW50U3RhdHVzRGVzY3JpcHRvciB9IGZyb20gJy4uLy4uL2NvcmUvY2hhdC1wYXJ0aWNpcGFudC1zdGF0dXMtZGVzY3JpcHRvcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmctY2hhdC1mcmllbmRzLWxpc3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9uZy1jaGF0LWZyaWVuZHMtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbmctY2hhdC1mcmllbmRzLWxpc3QuY29tcG9uZW50LmNzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgTmdDaGF0RnJpZW5kc0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgIFxuICAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwYXJ0aWNpcGFudHM6IElDaGF0UGFydGljaXBhbnRbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBhcnRpY2lwYW50c1Jlc3BvbnNlOiBQYXJ0aWNpcGFudFJlc3BvbnNlW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwYXJ0aWNpcGFudHNJbnRlcmFjdGVkV2l0aDogSUNoYXRQYXJ0aWNpcGFudFtdID0gW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB3aW5kb3dzOiBXaW5kb3dbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHVzZXJJZDogYW55O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbG9jYWxpemF0aW9uOiBMb2NhbGl6YXRpb247XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG91bGREaXNwbGF5OiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXNDb2xsYXBzZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZWFyY2hFbmFibGVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY3VycmVudEFjdGl2ZU9wdGlvbjogSUNoYXRPcHRpb24gfCBudWxsO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9uUGFydGljaXBhbnRDbGlja2VkOiBFdmVudEVtaXR0ZXI8SUNoYXRQYXJ0aWNpcGFudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb25PcHRpb25Qcm9tcHRDYW5jZWxlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb25PcHRpb25Qcm9tcHRDb25maXJtZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGhpZGVGcmllbmRzTGlzdDogYm9vbGVhbiA9ZmFsc2UgO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9uQ2xvc2VXaW5kb3dDbGljazpFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KClcbiAgICBcbiAgIFxuXG4gICAgcHVibGljIHNlbGVjdGVkVXNlcnNGcm9tRnJpZW5kc0xpc3Q6IFVzZXJbXSA9IFtdO1xuXG4gICAgcHVibGljIHNlYXJjaElucHV0OiBzdHJpbmcgPSAnJztcblxuICAgIC8vIEV4cG9zZXMgZW51bXMgYW5kIGZ1bmN0aW9ucyBmb3IgdGhlIG5nLXRlbXBsYXRlXG4gICAgcHVibGljIENoYXRQYXJ0aWNpcGFudFN0YXR1cyA9IENoYXRQYXJ0aWNpcGFudFN0YXR1cztcbiAgICBwdWJsaWMgY2hhdFBhcnRpY2lwYW50U3RhdHVzRGVzY3JpcHRvciA9IGNoYXRQYXJ0aWNpcGFudFN0YXR1c0Rlc2NyaXB0b3I7XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRBY3RpdmVPcHRpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRPcHRpb25UcmlnZ2VyZWRCeSA9IHRoaXMuY3VycmVudEFjdGl2ZU9wdGlvbiAmJiB0aGlzLmN1cnJlbnRBY3RpdmVPcHRpb24uY2hhdHRpbmdUby5wYXJ0aWNpcGFudC5pZDtcbiAgICAgICAgICAgIGNvbnN0IGlzQWN0aXZhdGVkVXNlckluU2VsZWN0ZWRMaXN0ID0gKHRoaXMuc2VsZWN0ZWRVc2Vyc0Zyb21GcmllbmRzTGlzdC5maWx0ZXIoaXRlbSA9PiBpdGVtLmlkID09IGN1cnJlbnRPcHRpb25UcmlnZ2VyZWRCeSkpLmxlbmd0aCA+IDA7XG5cbiAgICAgICAgICAgIGlmICghaXNBY3RpdmF0ZWRVc2VySW5TZWxlY3RlZExpc3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVXNlcnNGcm9tRnJpZW5kc0xpc3QgPSB0aGlzLnNlbGVjdGVkVXNlcnNGcm9tRnJpZW5kc0xpc3QuY29uY2F0KHRoaXMuY3VycmVudEFjdGl2ZU9wdGlvbi5jaGF0dGluZ1RvLnBhcnRpY2lwYW50IGFzIFVzZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGxldCBpbnB1dCA9IHVzZXIuZGlzcGxheU5hbWU7XG4gICAgICAgIC8vIGxldCBwYXJ0cyA9IGlucHV0LnNwbGl0KFwiIFwiKTtcbiAgICAgICAgLy8gIGxldCBmaXJzdExldHRlciA9IHBhcnRzWzBdO1xuICAgICAgICAvLyAgbGV0IHNlY29uZExldHRlcnMgPSBwYXJ0c1sxXS5zbGljZSgwLCAyKTtcbiAgICB9XG5cbiAgICBnZXQgZmlsdGVyZWRQYXJ0aWNpcGFudHMoKTogSUNoYXRQYXJ0aWNpcGFudFtdXG4gICAge1xuICAgICAgICBpZiAodGhpcy5zZWFyY2hJbnB1dC5sZW5ndGggPiAwKXtcbiAgICAgICAgICAgIC8vIFNlYXJjaGVzIGluIHRoZSBmcmllbmQgbGlzdCBieSB0aGUgaW5wdXR0ZWQgc2VhcmNoIHN0cmluZ1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFydGljaXBhbnRzLmZpbHRlcih4ID0+IHguZGlzcGxheU5hbWUudG9VcHBlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnNlYXJjaElucHV0LnRvVXBwZXJDYXNlKCkpKTtcbiAgICAgICAgfVxuY29uc29sZS5sb2coXCJ0aGlzLnBhcnRpY2lwYW50c1wiLHRoaXMucGFydGljaXBhbnRzKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5wYXJ0aWNpcGFudHM7XG4gICAgfVxuXG4gICAgaXNVc2VyU2VsZWN0ZWRGcm9tRnJpZW5kc0xpc3QodXNlcjogVXNlcikgOiBib29sZWFuXG4gICAge1xuICAgICAgICByZXR1cm4gKHRoaXMuc2VsZWN0ZWRVc2Vyc0Zyb21GcmllbmRzTGlzdC5maWx0ZXIoaXRlbSA9PiBpdGVtLmlkID09IHVzZXIuaWQpKS5sZW5ndGggPiAwXG4gICAgfVxuXG4gICAgdW5yZWFkTWVzc2FnZXNUb3RhbEJ5UGFydGljaXBhbnQocGFydGljaXBhbnQ6IElDaGF0UGFydGljaXBhbnQpOiBzdHJpbmdcbiAgICB7XG4gICAgICAgIGxldCBvcGVuZWRXaW5kb3cgPSB0aGlzLndpbmRvd3MuZmluZCh4ID0+IHgucGFydGljaXBhbnQuaWQgPT0gcGFydGljaXBhbnQuaWQpO1xuXG4gICAgICAgIGlmIChvcGVuZWRXaW5kb3cpe1xuICAgICAgICAgICAgcmV0dXJuIE1lc3NhZ2VDb3VudGVyLnVucmVhZE1lc3NhZ2VzVG90YWwob3BlbmVkV2luZG93LCB0aGlzLnVzZXJJZCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICBsZXQgdG90YWxVbnJlYWRNZXNzYWdlcyA9IHRoaXMucGFydGljaXBhbnRzUmVzcG9uc2VcbiAgICAgICAgICAgICAgICAuZmlsdGVyKHggPT4geC5wYXJ0aWNpcGFudC5pZCA9PSBwYXJ0aWNpcGFudC5pZCAmJiAhdGhpcy5wYXJ0aWNpcGFudHNJbnRlcmFjdGVkV2l0aC5maW5kKHUgPT4gdS5pZCA9PSBwYXJ0aWNpcGFudC5pZCkgJiYgeC5tZXRhZGF0YSAmJiB4Lm1ldGFkYXRhLnRvdGFsVW5yZWFkTWVzc2FnZXMgPiAwKVxuICAgICAgICAgICAgICAgIC5tYXAoKHBhcnRpY2lwYW50UmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnRpY2lwYW50UmVzcG9uc2UubWV0YWRhdGEudG90YWxVbnJlYWRNZXNzYWdlc1xuICAgICAgICAgICAgICAgIH0pWzBdO1xuXG4gICAgICAgICAgICByZXR1cm4gTWVzc2FnZUNvdW50ZXIuZm9ybWF0VW5yZWFkTWVzc2FnZXNUb3RhbCh0b3RhbFVucmVhZE1lc3NhZ2VzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsZWFuVXBVc2VyU2VsZWN0aW9uID0gKCkgPT4gdGhpcy5zZWxlY3RlZFVzZXJzRnJvbUZyaWVuZHNMaXN0ID0gW107XG5cbiAgICAvLyBUb2dnbGUgZnJpZW5kcyBsaXN0IHZpc2liaWxpdHlcbiAgICBvbkNoYXRUaXRsZUNsaWNrZWQoKTogdm9pZFxuICAgIHtcbiAgICAgICAgdGhpcy5pc0NvbGxhcHNlZCA9ICF0aGlzLmlzQ29sbGFwc2VkO1xuICAgIH1cblxuICAgIG9uRnJpZW5kc0xpc3RDaGVja2JveENoYW5nZShzZWxlY3RlZFVzZXI6IFVzZXIsIGlzQ2hlY2tlZDogYm9vbGVhbik6IHZvaWRcbiAgICB7XG4gICAgICAgIGlmKGlzQ2hlY2tlZCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFVzZXJzRnJvbUZyaWVuZHNMaXN0LnB1c2goc2VsZWN0ZWRVc2VyKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRVc2Vyc0Zyb21GcmllbmRzTGlzdC5zcGxpY2UodGhpcy5zZWxlY3RlZFVzZXJzRnJvbUZyaWVuZHNMaXN0LmluZGV4T2Yoc2VsZWN0ZWRVc2VyKSwgMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblVzZXJDbGljayhjbGlja2VkVXNlcjogVXNlcik6IHZvaWRcbiAgICB7XG4gICAgICAgIHRoaXMub25QYXJ0aWNpcGFudENsaWNrZWQuZW1pdChjbGlja2VkVXNlcik7XG4gICAgfVxuXG4gICAgb25GcmllbmRzTGlzdEFjdGlvbkNhbmNlbENsaWNrZWQoKTogdm9pZFxuICAgIHtcbiAgICAgICAgdGhpcy5vbk9wdGlvblByb21wdENhbmNlbGVkLmVtaXQoKTtcbiAgICAgICAgdGhpcy5jbGVhblVwVXNlclNlbGVjdGlvbigpO1xuICAgIH1cblxuICAgIG9uRnJpZW5kc0xpc3RBY3Rpb25Db25maXJtQ2xpY2tlZCgpIDogdm9pZFxuICAgIHtcbiAgICAgICAgdGhpcy5vbk9wdGlvblByb21wdENvbmZpcm1lZC5lbWl0KHRoaXMuc2VsZWN0ZWRVc2Vyc0Zyb21GcmllbmRzTGlzdCk7XG4gICAgICAgIHRoaXMuY2xlYW5VcFVzZXJTZWxlY3Rpb24oKTtcbiAgICB9XG4gICAgb25DbG9zZVdpbmRvdygpe1xuICAgICAgICAgIFxuICAgICAgIFxuICAgICAgICB0aGlzLm9uQ2xvc2VXaW5kb3dDbGljay5lbWl0KHRydWUpXG5cbiAgICAgICAgY29uc29sZS5sb2coJ2hvaSBsYXRlc3QgZnJpZW5kbGlzdCcsdGhpcy5zaG91bGREaXNwbGF5KVxuXG4gICAgICAgIFxuICAgIH1cblxufVxuLyogZXNsaW50LWVuYWJsZSAqLyIsIjxkaXYgKm5nSWY9XCJzaG91bGREaXNwbGF5XCIgaWQ9XCJuZy1jaGF0LXBlb3BsZVwiIFtuZ0NsYXNzXT1cInsncHJpbWFyeS1vdXRsaW5lLWNvbG9yJzogdHJ1ZSwgJ3ByaW1hcnktYmFja2dyb3VuZCc6IHRydWUsICduZy1jaGF0LXBlb3BsZS1jb2xsYXBzZWQnOiBpc0NvbGxhcHNlZH1cIj5cblx0PGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIiBjbGFzcz1cIm5nLWNoYXQtdGl0bGUgc2Vjb25kYXJ5LWJhY2tncm91bmQgc2hhZG93ZWRcIiAoY2xpY2spPVwib25DaGF0VGl0bGVDbGlja2VkKClcIj5cblx0XHQ8c3Bhbj5cblx0XHRcdHt7bG9jYWxpemF0aW9uLnRpdGxlfX1cblx0XHQ8L3NwYW4+XG5cdDxhICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIGNsYXNzPVwiIG5nLWNoYXQtY2xvc2UgXCIgKGNsaWNrKT1cIm9uQ2xvc2VXaW5kb3coKVwiID4mI3gyNzE1OzwvYT5cblx0PC9hPlxuXHQ8ZGl2ICpuZ0lmPVwiY3VycmVudEFjdGl2ZU9wdGlvblwiIGNsYXNzPVwibmctY2hhdC1wZW9wbGUtYWN0aW9uc1wiIChjbGljayk9XCJvbkZyaWVuZHNMaXN0QWN0aW9uQ2FuY2VsQ2xpY2tlZCgpXCI+XG5cdFx0PGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIiBjbGFzcz1cIm5nLWNoYXQtcGVvcGxlLWFjdGlvblwiPlxuXHRcdFx0PGkgY2xhc3M9XCJyZW1vdmUtaWNvblwiPjwvaT5cblx0XHQ8L2E+XG5cdFx0PGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIiBjbGFzcz1cIm5nLWNoYXQtcGVvcGxlLWFjdGlvblwiIChjbGljayk9XCJvbkZyaWVuZHNMaXN0QWN0aW9uQ29uZmlybUNsaWNrZWQoKVwiPlxuXHRcdFx0PGkgY2xhc3M9XCJjaGVjay1pY29uXCI+PC9pPlxuXHRcdDwvYT5cblx0PC9kaXY+XG5cdDxpbnB1dCAqbmdJZj1cInNlYXJjaEVuYWJsZWRcIiBpZD1cIm5nLWNoYXQtc2VhcmNoX2ZyaWVuZFwiIGNsYXNzPVwiZnJpZW5kcy1zZWFyY2gtYmFyXCIgdHlwZT1cInNlYXJjaFwiIFtwbGFjZWhvbGRlcl09XCJsb2NhbGl6YXRpb24uc2VhcmNoUGxhY2Vob2xkZXJcIiBbKG5nTW9kZWwpXT1cInNlYXJjaElucHV0XCIgLz5cblx0PHVsIGlkPVwibmctY2hhdC11c2Vyc1wiICpuZ0lmPVwiIWlzQ29sbGFwc2VkXCIgW25nQ2xhc3NdPVwieydvZmZzZXQtc2VhcmNoJzogc2VhcmNoRW5hYmxlZH1cIj5cblx0XHQ8bGkgKm5nRm9yPVwibGV0IHVzZXIgb2YgZmlsdGVyZWRQYXJ0aWNpcGFudHNcIj5cblx0XHRcdDxpbnB1dCBcblx0XHRcdFx0Km5nSWY9XCJjdXJyZW50QWN0aXZlT3B0aW9uICYmIGN1cnJlbnRBY3RpdmVPcHRpb24udmFsaWRhdGVDb250ZXh0KHVzZXIpXCIgXG5cdFx0XHRcdHR5cGU9XCJjaGVja2JveFwiIFxuXHRcdFx0XHRjbGFzcz1cIm5nLWNoYXQtdXNlcnMtY2hlY2tib3hcIiBcblx0XHRcdFx0KGNoYW5nZSk9XCJvbkZyaWVuZHNMaXN0Q2hlY2tib3hDaGFuZ2UodXNlciwgJGV2ZW50LnRhcmdldC5jaGVja2VkKVwiIFxuXHRcdFx0XHRbY2hlY2tlZF09XCJpc1VzZXJTZWxlY3RlZEZyb21GcmllbmRzTGlzdCh1c2VyKVwiLz5cblx0XHRcdDxkaXYgW25nQ2xhc3NdPVwieyduZy1jaGF0LWZyaWVuZHMtbGlzdC1zZWxlY3RhYmxlLW9mZnNldCc6IGN1cnJlbnRBY3RpdmVPcHRpb24sICduZy1jaGF0LWZyaWVuZHMtbGlzdC1jb250YWluZXInOiB0cnVlfVwiIChjbGljayk9XCJvblVzZXJDbGljayh1c2VyKVwiPlxuXHRcdFx0XHQ8IS0tIDxkaXYgKm5nSWY9XCIhdXNlci5hdmF0YXJcIiBjbGFzcz1cImljb24td3JhcHBlclwiPlxuXHRcdFx0XHRcdDxpIGNsYXNzPVwidXNlci1pY29uXCI+PC9pPlxuXHRcdFx0XHQ8L2Rpdj4gLS0+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJ1c2VyXCIgKm5nSWY9XCIhdXNlci5hdmF0YXJcIj5cblx0XHRcdFx0XHR7e3VzZXIuZGlzcGxheU5hbWV8Zmlyc3RMZXR0ZXJQaXBlfX1cblxuXHRcdFx0XHQ8L2Rpdj5cblxuXHRcdFx0XHQ8aW1nICpuZ0lmPVwidXNlci5hdmF0YXJcIiBhbHQ9XCJcIiBjbGFzcz1cImF2YXRhclwiIGhlaWdodD1cIjMwXCIgd2lkdGg9XCIzMFwiICBbc3JjXT1cInVzZXIuYXZhdGFyIHwgc2FuaXRpemVcIi8+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJcIj48L2Rpdj5cblx0XHRcdFx0PHN0cm9uZyB0aXRsZT1cInt7dXNlci5kaXNwbGF5TmFtZX19XCI+e3t1c2VyLmRpc3BsYXlOYW1lfX08L3N0cm9uZz5cblx0XHRcdFx0PHNwYW4gW25nQ2xhc3NdPVwieyduZy1jaGF0LXBhcnRpY2lwYW50LXN0YXR1cyc6IHRydWUsICdvbmxpbmUnOiB1c2VyLnN0YXR1cyA9PT0gQ2hhdFBhcnRpY2lwYW50U3RhdHVzLk9ubGluZSwgJ2J1c3knOiB1c2VyLnN0YXR1cyA9PT0gQ2hhdFBhcnRpY2lwYW50U3RhdHVzLkJ1c3ksICdhd2F5JzogdXNlci5zdGF0dXMgPT09IENoYXRQYXJ0aWNpcGFudFN0YXR1cy5Bd2F5LCAnb2ZmbGluZSc6IHVzZXIuc3RhdHVzID09PSBDaGF0UGFydGljaXBhbnRTdGF0dXMuT2ZmbGluZX1cIiB0aXRsZT1cInt7Y2hhdFBhcnRpY2lwYW50U3RhdHVzRGVzY3JpcHRvcih1c2VyLnN0YXR1cywgbG9jYWxpemF0aW9uKX19XCI+PC9zcGFuPlxuXHRcdFx0XHQ8c3BhbiAqbmdJZj1cInVucmVhZE1lc3NhZ2VzVG90YWxCeVBhcnRpY2lwYW50KHVzZXIpLmxlbmd0aCA+IDBcIiBjbGFzcz1cIm5nLWNoYXQtdW5yZWFkLW1lc3NhZ2VzLWNvdW50IHVucmVhZC1tZXNzYWdlcy1jb3VudGVyLWNvbnRhaW5lciBwcmltYXJ5LXRleHRcIj57e3VucmVhZE1lc3NhZ2VzVG90YWxCeVBhcnRpY2lwYW50KHVzZXIpfX08L3NwYW4+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2xpPlxuXHQ8L3VsPlxuPC9kaXY+Il19
|
|
@@ -13,17 +13,17 @@ export class NgChatOptionsComponent {
|
|
|
13
13
|
}
|
|
14
14
|
this.activeOptionTrackerChange.emit(option);
|
|
15
15
|
}
|
|
16
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
17
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
16
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: NgChatOptionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
17
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: NgChatOptionsComponent, selector: "ng-chat-options", inputs: { options: "options", activeOptionTracker: "activeOptionTracker" }, outputs: { activeOptionTrackerChange: "activeOptionTrackerChange" }, ngImport: i0, template: "<div *ngIf=\"options && options.length > 0\" class=\"ng-chat-options\">\n\t\t<button class=\"ng-chat-options-activator\">\n\t\t\t<span class=\"primary-text\">...</span>\n\t\t</button>\n\t<div class=\"ng-chat-options-content primary-background shadowed\">\n\t\t<a *ngFor=\"let option of options; let i = index\" [ngClass]=\"'primary-text'\" (click)=\"onOptionClicked(option)\">\n\t\t\t{{option.displayLabel}}\n\t\t</a>\n\t</div> \n</div>\n", styles: [".ng-chat-options-activator{background-color:unset;color:#fff;line-height:28px;border:none;position:relative}.ng-chat-options-activator>span{position:relative;top:-5px;left:0}.ng-chat-options{position:relative;display:inline-block}.ng-chat-options:hover .ng-chat-options-content{display:block}.ng-chat-options:hover .ng-chat-options-activator{background-color:#ddd}.ng-chat-options-content{display:none;position:absolute;min-width:160px;z-index:1}.ng-chat-options-content a:hover{background-color:#ddd}.ng-chat-options-content a{padding:6px 16px;text-decoration:none;display:block}@media only screen and (max-width: 581px){.ng-chat-options-content{right:0}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
18
18
|
}
|
|
19
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: NgChatOptionsComponent, decorators: [{
|
|
20
20
|
type: Component,
|
|
21
21
|
args: [{ selector: 'ng-chat-options', template: "<div *ngIf=\"options && options.length > 0\" class=\"ng-chat-options\">\n\t\t<button class=\"ng-chat-options-activator\">\n\t\t\t<span class=\"primary-text\">...</span>\n\t\t</button>\n\t<div class=\"ng-chat-options-content primary-background shadowed\">\n\t\t<a *ngFor=\"let option of options; let i = index\" [ngClass]=\"'primary-text'\" (click)=\"onOptionClicked(option)\">\n\t\t\t{{option.displayLabel}}\n\t\t</a>\n\t</div> \n</div>\n", styles: [".ng-chat-options-activator{background-color:unset;color:#fff;line-height:28px;border:none;position:relative}.ng-chat-options-activator>span{position:relative;top:-5px;left:0}.ng-chat-options{position:relative;display:inline-block}.ng-chat-options:hover .ng-chat-options-content{display:block}.ng-chat-options:hover .ng-chat-options-activator{background-color:#ddd}.ng-chat-options-content{display:none;position:absolute;min-width:160px;z-index:1}.ng-chat-options-content a:hover{background-color:#ddd}.ng-chat-options-content a{padding:6px 16px;text-decoration:none;display:block}@media only screen and (max-width: 581px){.ng-chat-options-content{right:0}}\n"] }]
|
|
22
|
-
}], ctorParameters:
|
|
22
|
+
}], ctorParameters: () => [], propDecorators: { options: [{
|
|
23
23
|
type: Input
|
|
24
24
|
}], activeOptionTracker: [{
|
|
25
25
|
type: Input
|
|
26
26
|
}], activeOptionTrackerChange: [{
|
|
27
27
|
type: Output
|
|
28
28
|
}] } });
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctY2hhdC1vcHRpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NoYXQvc3JjL2xpYi9jb21wb25lbnRzL25nLWNoYXQtb3B0aW9ucy9uZy1jaGF0LW9wdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC9zcmMvbGliL2NvbXBvbmVudHMvbmctY2hhdC1vcHRpb25zL25nLWNoYXQtb3B0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBUXZFLE1BQU0sT0FBTyxzQkFBc0I7SUFFbEM7UUFTTyw4QkFBeUIsR0FBOEIsSUFBSSxZQUFZLEVBQWUsQ0FBQztJQVQ5RSxDQUFDO0lBV2pCLGVBQWUsQ0FBQyxNQUFtQjtRQUVsQyxNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUV2QixJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQyxDQUFDO1FBRUQsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QyxDQUFDOzhHQXRCVyxzQkFBc0I7a0dBQXRCLHNCQUFzQix3TUNUbkMsNmJBVUE7OzJGRERhLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDSSxpQkFBaUI7d0RBU3ZCLE9BQU87c0JBRGIsS0FBSztnQkFJQyxtQkFBbUI7c0JBRHpCLEtBQUs7Z0JBSUMseUJBQXlCO3NCQUQvQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJQ2hhdE9wdGlvbiB9IGZyb20gJy4uLy4uL2NvcmUvY2hhdC1vcHRpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25nLWNoYXQtb3B0aW9ucycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL25nLWNoYXQtb3B0aW9ucy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbmctY2hhdC1vcHRpb25zLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBOZ0NoYXRPcHRpb25zQ29tcG9uZW50IHtcblxuXHRjb25zdHJ1Y3RvcigpIHsgfVxuXG5cdEBJbnB1dCgpXG5cdHB1YmxpYyBvcHRpb25zOiBJQ2hhdE9wdGlvbltdO1xuXG5cdEBJbnB1dCgpXG5cdHB1YmxpYyBhY3RpdmVPcHRpb25UcmFja2VyOiBJQ2hhdE9wdGlvbjtcblxuXHRAT3V0cHV0KClcblx0cHVibGljIGFjdGl2ZU9wdGlvblRyYWNrZXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJQ2hhdE9wdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyPElDaGF0T3B0aW9uPigpO1xuXG5cdG9uT3B0aW9uQ2xpY2tlZChvcHRpb246IElDaGF0T3B0aW9uKTogdm9pZFxuXHR7XG5cdFx0b3B0aW9uLmlzQWN0aXZlID0gdHJ1ZTtcblxuXHRcdGlmIChvcHRpb24uYWN0aW9uKSB7XG5cdFx0XHRvcHRpb24uYWN0aW9uKG9wdGlvbi5jaGF0dGluZ1RvKTtcblx0XHR9XG5cblx0XHR0aGlzLmFjdGl2ZU9wdGlvblRyYWNrZXJDaGFuZ2UuZW1pdChvcHRpb24pO1xuXHR9XG59XG4vKiBlc2xpbnQtZW5hYmxlICovIiwiPGRpdiAqbmdJZj1cIm9wdGlvbnMgJiYgb3B0aW9ucy5sZW5ndGggPiAwXCIgY2xhc3M9XCJuZy1jaGF0LW9wdGlvbnNcIj5cblx0XHQ8YnV0dG9uIGNsYXNzPVwibmctY2hhdC1vcHRpb25zLWFjdGl2YXRvclwiPlxuXHRcdFx0PHNwYW4gY2xhc3M9XCJwcmltYXJ5LXRleHRcIj4uLi48L3NwYW4+XG5cdFx0PC9idXR0b24+XG5cdDxkaXYgY2xhc3M9XCJuZy1jaGF0LW9wdGlvbnMtY29udGVudCBwcmltYXJ5LWJhY2tncm91bmQgc2hhZG93ZWRcIj5cblx0XHQ8YSAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnM7IGxldCBpID0gaW5kZXhcIiBbbmdDbGFzc109XCIncHJpbWFyeS10ZXh0J1wiIChjbGljayk9XCJvbk9wdGlvbkNsaWNrZWQob3B0aW9uKVwiPlxuXHRcdFx0e3tvcHRpb24uZGlzcGxheUxhYmVsfX1cblx0XHQ8L2E+XG5cdDwvZGl2PiAgICAgIFxuPC9kaXY+XG4iXX0=
|
|
@@ -196,13 +196,13 @@ export class NgChatWindowComponent {
|
|
|
196
196
|
});
|
|
197
197
|
}
|
|
198
198
|
}
|
|
199
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
200
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgChatWindowComponent, selector: "ng-chat-window", inputs: { fileUploadAdapter: "fileUploadAdapter", window: "window", userId: "userId", localization: "localization", showOptions: "showOptions", emojisEnabled: "emojisEnabled", linkfyEnabled: "linkfyEnabled", showMessageDate: "showMessageDate", messageDatePipeFormat: "messageDatePipeFormat", hasPagedHistory: "hasPagedHistory" }, outputs: { onChatWindowClosed: "onChatWindowClosed", onMessagesSeen: "onMessagesSeen", onMessageSent: "onMessageSent", onTabTriggered: "onTabTriggered", onOptionTriggered: "onOptionTriggered", onLoadHistoryTriggered: "onLoadHistoryTriggered" }, viewQueries: [{ propertyName: "chatMessages", first: true, predicate: ["chatMessages"], descendants: true }, { propertyName: "nativeFileInput", first: true, predicate: ["nativeFileInput"], descendants: true }, { propertyName: "chatWindowInput", first: true, predicate: ["chatWindowInput"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"window && window.isCollapsed\">\n\t<div class=\"ng-chat-title secondary-background\">\n\t\t<div class=\"ng-chat-title-visibility-toggle-area\" (click)=\"onChatWindowClicked(window)\">\n\t\t\t<strong title=\"{{window.participant.displayName}}\">\n\t\t\t\t{{window.participant.displayName}}\n\t\t\t</strong>\n\t\t\t<span [ngClass]=\"{'ng-chat-participant-status': true, 'online': window.participant.status === ChatParticipantStatus.Online, 'busy': window.participant.status === ChatParticipantStatus.Busy, 'away': window.participant.status === ChatParticipantStatus.Away, 'offline': window.participant.status === ChatParticipantStatus.Offline}\" title=\"{{chatParticipantStatusDescriptor(window.participant.status, localization)}}\"></span>\n\t\t\t<span *ngIf=\"unreadMessagesTotal(window).length > 0\" class=\"ng-chat-unread-messages-count unread-messages-counter-container primary-text\">{{unreadMessagesTotal(window)}}</span>\n\t\t</div>\n\t\t<a href=\"javascript:void(0);\" class=\"ng-chat-close primary-text\" (click)=\"onCloseChatWindow()\">✕</a>\n\t</div>\n</ng-container>\n<ng-container *ngIf=\"window && !window.isCollapsed\"> \n\t<div class=\"ng-chat-title secondary-background\">\n\t\t<div class=\"ng-chat-title-visibility-toggle-area\" (click)=\"onChatWindowClicked(window)\">\n\t\t\t<strong title=\"{{window.participant.displayName}}\">\n\t\t\t\t{{window.participant.displayName}}\n\t\t\t</strong>\n\t\t\t<span [ngClass]=\"{'ng-chat-participant-status': true, 'online': window.participant.status === ChatParticipantStatus.Online, 'busy': window.participant.status === ChatParticipantStatus.Busy, 'away': window.participant.status === ChatParticipantStatus.Away, 'offline': window.participant.status === ChatParticipantStatus.Offline}\" title=\"{{chatParticipantStatusDescriptor(window.participant.status, localization)}}\"></span>\n\t\t\t<span *ngIf=\"unreadMessagesTotal(window).length > 0\" class=\"ng-chat-unread-messages-count unread-messages-counter-container primary-text\">{{unreadMessagesTotal(window)}}</span>\n\t\t</div>\n\t\t<a href=\"javascript:void(0);\" class=\"ng-chat-close primary-text\" (click)=\"onCloseChatWindow()\">✕</a>\n\t\t<!-- <ng-chat-options [ngClass]=\"'ng-chat-options-container'\" [options]=\"defaultWindowOptions(window)\" (activeOptionTrackerChange)=\"activeOptionTrackerChange($event)\"></ng-chat-options> -->\n\t</div>\n\t\t<div #chatMessages class=\"ng-chat-messages primary-background\">\n\t\t\t<div *ngIf=\"window.isLoadingHistory\" class=\"ng-chat-loading-wrapper\">\n\t\t\t\t<div class=\"loader\">Loading history...</div>\n\t\t\t</div>\n\t\t\t<div *ngIf=\"hasPagedHistory && window.hasMoreMessages && !window.isLoadingHistory\" class=\"ng-chat-load-history\">\n\t\t\t\t<a class=\"load-history-action\" (click)=\"fetchMessageHistory(window)\">{{localization.loadMessageHistoryPlaceholder}}</a>\n\t\t\t</div>\n\n\t\t\t<div *ngFor=\"let message of window.messages; let i = index\" [ngClass]=\"{'ng-chat-message': true, 'ng-chat-message-received': message.fromId !== userId}\">\n\t\t\t\t<ng-container *ngIf=\"isAvatarVisible(window, message, i)\">\n\t\t\t\t\t<div *ngIf=\"!getChatWindowAvatar(window.participant, message)\" class=\"icon-wrapper\">\n\t\t\t\t\t\t<i class=\"user-icon\"></i>\n\t\t\t\t\t</div>\n\t\t\t\t\t<!-- <img *ngIf=\"getChatWindowAvatar(window.participant, message)\" alt=\"\" class=\"avatar\" height=\"30\" width=\"30\" [src]=\"getChatWindowAvatar(window.participant, message) | sanitize\" /> -->\n\t\t\t\t\t<span *ngIf=\"window.participant.participantType === ChatParticipantType.Group\" class=\"ng-chat-participant-name\">{{window.participant | groupMessageDisplayName:message}}</span>\n\t\t\t\t</ng-container>\n\t\t\t\t<ng-container [ngSwitch]=\"message.type\">\n\t\t\t\t\t<div *ngSwitchCase=\"MessageType.Text\" [ngClass]=\"{'sent-chat-message-container': message.fromId === userId, 'received-chat-message-container': message.fromId !== userId}\">\n\t\t\t \t\t\t<span [innerHtml]=\"message.message | emojify:emojisEnabled | linkfy:linkfyEnabled\"></span>\n\t\t\t\t\t\t<span *ngIf=\"showMessageDate && message.dateSent\" class=\"message-sent-date\">{{message.dateSent | date:'dd'}}/{{message.dateSent | date:'MM'}}/{{message.dateSent | date:'y'}} {{message.dateSent | date:'h:mm a '}}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div *ngSwitchCase=\"MessageType.Image\" [ngClass]=\"{'sent-chat-message-container': message.fromId === userId, 'received-chat-message-container': message.fromId !== userId}\">\n\t\n\t\t\t \t\t\t<img src=\"{{message.message}}\" class=\"image-message\" />\n\t\n\t\t\t\t\t\t<span *ngIf=\"showMessageDate && message.dateSent\" class=\"message-sent-date\">{{message.dateSent | date:'dd'}}/{{message.dateSent | date:'MM'}}/{{message.dateSent | date:'y'}} {{message.dateSent | date:'h:mm a '}}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div *ngSwitchCase=\"MessageType.File\" [ngClass]=\"{'file-message-container': true, 'received': message.fromId !== userId}\">\n\t\t\t\t\t\t<div class=\"file-message-icon-container\">\n\t\t\t\t\t\t\t<i class=\"paperclip-icon\"></i>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<!-- <a class=\"file-details\" [attr.href]=\"message.downloadUrl\" target=\"_blank\" rel=\"noopener noreferrer\" (click)=\"this.markMessagesAsRead([message])\" download>\n\t\t\t\t\t\t\t<span class=\"file-message-title\" [attr.title]=\"message.message\">{{message.message}}</span>\n\t\t\t\t\t\t\t<span *ngIf=\"message.fileSizeInBytes\" class=\"file-message-size\">{{message.fileSizeInBytes}} Bytes</span>\n\t\t\t\t\t\t</a> -->\n\t\t\t\t\t</div>\n\t\t\t\t</ng-container>\n\t\t\t</div>\n\t</div>\n\n\t<div class=\"ng-chat-footer primary-outline-color primary-background\">\n\t\t<input #chatWindowInput\n\t\t\ttype=\"text\"\n\t\t\t[ngModel]=\"window.newMessage | emojify:emojisEnabled\"\n\t\t\t(ngModelChange)=\"window.newMessage=$event\"\n\t\t\t[placeholder]=\"localization.messagePlaceholder\"\n\t\t\t[ngClass]=\"{'chat-window-input': true, 'has-side-action': fileUploadAdapter}\"\n\t\t\t(keydown)=\"onChatInputTyped($event, window)\"\n\t\t\t(blur)=\"toggleWindowFocus(window)\"\n\t\t\t(focus)=\"toggleWindowFocus(window)\"/>\n\n\t\t<!-- File Upload -->\n\t\t<ng-container *ngIf=\"fileUploadAdapter\">\n\t\t\t<a *ngIf=\"!isUploadingFile(window)\" class=\"btn-add-file\" (click)=\"triggerNativeFileUpload(window)\">\n\t\t\t\t<i class=\"upload-icon\"></i>\n\t\t\t</a>\n\t\t\t<input\n\t\t\t\ttype=\"file\"\n\t\t\t\t#nativeFileInput\n\t\t\t\tstyle=\"display: none;\"\n\t\t\t\t[attr.id]=\"getUniqueFileUploadInstanceId(window)\"\n\t\t\t\t(change)=\"onFileChosen(window)\" />\n\t\t\t<div *ngIf=\"isUploadingFile(window)\" class=\"loader\"></div>\n\t\t</ng-container>\n\t</div>\n</ng-container>", styles: [".ng-chat-window{right:260px;height:360px;z-index:999;bottom:0;width:300px;position:fixed;border-width:1px;border-style:solid;border-bottom:0;box-shadow:0 4px 8px #00000040;margin-bottom:10px!important;border:1px solid grey!important;border-radius:10px!important;box-sizing:border-box!important;overflow:hidden!important;background-color:#fff}.ng-chat-window ::-webkit-scrollbar{width:8px!important}.ng-chat-window ::-webkit-scrollbar-thumb{background:#1b1b70!important;border-radius:5px!important}.ng-chat-window-collapsed{height:30px!important}.ng-chat-window .ng-chat-footer{box-sizing:border-box!important;padding-bottom:10px!important;display:block;height:10%;width:95%!important;margin:auto!important;background-color:inherit!important}.ng-chat-window .ng-chat-footer>input{font-size:.8em;box-sizing:border-box!important;padding:15px!important;height:100%;width:100%;border-radius:20px!important;border:1px solid grey!important}.ng-chat-window .ng-chat-footer>input.has-side-action{width:calc(100% - 30px)}.ng-chat-window .ng-chat-footer .btn-add-file{position:absolute;right:5px;bottom:7px;height:20px;width:20px;cursor:pointer}.ng-chat-window .ng-chat-footer .loader{position:absolute;right:14px;bottom:8px}.ng-chat-window .ng-chat-load-history{height:30px;text-align:center;font-size:.8em}.ng-chat-window .ng-chat-load-history>a{border-radius:15px;cursor:pointer;padding:5px 10px}.ng-chat-window .ng-chat-messages{padding:10px;width:100%;height:calc(90% - 30px);box-sizing:border-box;position:relative;overflow:auto}.ng-chat-window .ng-chat-messages .ng-chat-message{clear:both}.ng-chat-window .ng-chat-messages .ng-chat-message>img.avatar,.ng-chat-window .ng-chat-messages .ng-chat-message>.icon-wrapper{position:absolute;left:10px;border-radius:25px}.ng-chat-window .ng-chat-messages .ng-chat-message .ng-chat-participant-name{display:inline-block;margin-left:40px;padding-bottom:5px;font-weight:700;font-size:.8em;text-overflow:ellipsis;max-width:180px}.ng-chat-window .ng-chat-messages .ng-chat-message>.icon-wrapper{background-color:#bababa;overflow:hidden;width:30px;height:30px;padding:0}.ng-chat-window .ng-chat-messages .ng-chat-message>.icon-wrapper>i{color:#fff;transform:scale(.7)}.ng-chat-window .ng-chat-messages .ng-chat-message .message-sent-date{font-size:.5em!important;display:block;text-align:right;margin-top:5px;color:#a1a0a0!important;font-style:italic!important}.ng-chat-window .ng-chat-messages .ng-chat-message>div{float:right;width:182px;border-radius:15px 15px 0!important;padding:10px;margin-top:0;margin-bottom:5px;font-size:.9em;word-wrap:break-word;background-color:#93d4f0!important}.ng-chat-window .ng-chat-message-received>div.received-chat-message-container{float:left;margin-left:40px;padding-top:7px;padding-bottom:7px;margin-top:0;margin-bottom:5px;background-color:#daf2fc!important;border-radius:15px 15px 15px 0!important}.ng-chat-window .ng-chat-messages .ng-chat-message .file-message-container{float:right;width:202px;border-style:solid;border-width:3px;border-radius:5px;overflow:hidden;margin-bottom:5px;display:block;text-decoration:none;font-size:.9em;padding:0;box-sizing:border-box}.ng-chat-window .ng-chat-messages .ng-chat-message .file-message-container.received{float:left;margin-left:40px;width:208px}.ng-chat-window .ng-chat-messages .ng-chat-message .file-message-container>.file-message-icon-container{width:20px;height:35px;padding:10px 5px;float:left}.ng-chat-window .ng-chat-messages .ng-chat-message .file-message-container>.file-message-icon-container i{margin-top:8px}.ng-chat-window .ng-chat-messages .ng-chat-message .file-message-container>.file-details{float:left;padding:10px;width:calc(100% - 60px);color:currentColor;text-decoration:none}.ng-chat-window .ng-chat-messages .ng-chat-message .file-message-container>.file-details:hover{text-decoration:underline}.ng-chat-window .ng-chat-messages .ng-chat-message .file-message-container>.file-details span{display:block;width:100%;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ng-chat-window .ng-chat-messages .ng-chat-message .file-message-container>.file-details .file-message-title{font-weight:700}.ng-chat-window .ng-chat-messages .ng-chat-message .file-message-container>.file-details .file-message-size{font-size:.8em;margin-top:5px}.ng-chat-window .image-message{width:100%;height:auto}@media only screen and (max-width: 581px){.ng-chat-window{position:initial}}\n"], dependencies: [{ kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }, { kind: "pipe", type: i3.EmojifyPipe, name: "emojify" }, { kind: "pipe", type: i4.LinkfyPipe, name: "linkfy" }, { kind: "pipe", type: i5.GroupMessageDisplayNamePipe, name: "groupMessageDisplayName" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
199
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: NgChatWindowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
200
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: NgChatWindowComponent, selector: "ng-chat-window", inputs: { fileUploadAdapter: "fileUploadAdapter", window: "window", userId: "userId", localization: "localization", showOptions: "showOptions", emojisEnabled: "emojisEnabled", linkfyEnabled: "linkfyEnabled", showMessageDate: "showMessageDate", messageDatePipeFormat: "messageDatePipeFormat", hasPagedHistory: "hasPagedHistory" }, outputs: { onChatWindowClosed: "onChatWindowClosed", onMessagesSeen: "onMessagesSeen", onMessageSent: "onMessageSent", onTabTriggered: "onTabTriggered", onOptionTriggered: "onOptionTriggered", onLoadHistoryTriggered: "onLoadHistoryTriggered" }, viewQueries: [{ propertyName: "chatMessages", first: true, predicate: ["chatMessages"], descendants: true }, { propertyName: "nativeFileInput", first: true, predicate: ["nativeFileInput"], descendants: true }, { propertyName: "chatWindowInput", first: true, predicate: ["chatWindowInput"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"window && window.isCollapsed\">\n\t<div class=\"ng-chat-title secondary-background\">\n\t\t<div class=\"ng-chat-title-visibility-toggle-area\" (click)=\"onChatWindowClicked(window)\">\n\t\t\t<strong title=\"{{window.participant.displayName}}\">\n\t\t\t\t{{window.participant.displayName}}\n\t\t\t</strong>\n\t\t\t<span [ngClass]=\"{'ng-chat-participant-status': true, 'online': window.participant.status === ChatParticipantStatus.Online, 'busy': window.participant.status === ChatParticipantStatus.Busy, 'away': window.participant.status === ChatParticipantStatus.Away, 'offline': window.participant.status === ChatParticipantStatus.Offline}\" title=\"{{chatParticipantStatusDescriptor(window.participant.status, localization)}}\"></span>\n\t\t\t<span *ngIf=\"unreadMessagesTotal(window).length > 0\" class=\"ng-chat-unread-messages-count unread-messages-counter-container primary-text\">{{unreadMessagesTotal(window)}}</span>\n\t\t</div>\n\t\t<a href=\"javascript:void(0);\" class=\"ng-chat-close primary-text\" (click)=\"onCloseChatWindow()\">✕</a>\n\t</div>\n</ng-container>\n<ng-container *ngIf=\"window && !window.isCollapsed\"> \n\t<div class=\"ng-chat-title secondary-background\">\n\t\t<div class=\"ng-chat-title-visibility-toggle-area\" (click)=\"onChatWindowClicked(window)\">\n\t\t\t<strong title=\"{{window.participant.displayName}}\">\n\t\t\t\t{{window.participant.displayName}}\n\t\t\t</strong>\n\t\t\t<span [ngClass]=\"{'ng-chat-participant-status': true, 'online': window.participant.status === ChatParticipantStatus.Online, 'busy': window.participant.status === ChatParticipantStatus.Busy, 'away': window.participant.status === ChatParticipantStatus.Away, 'offline': window.participant.status === ChatParticipantStatus.Offline}\" title=\"{{chatParticipantStatusDescriptor(window.participant.status, localization)}}\"></span>\n\t\t\t<span *ngIf=\"unreadMessagesTotal(window).length > 0\" class=\"ng-chat-unread-messages-count unread-messages-counter-container primary-text\">{{unreadMessagesTotal(window)}}</span>\n\t\t</div>\n\t\t<a href=\"javascript:void(0);\" class=\"ng-chat-close primary-text\" (click)=\"onCloseChatWindow()\">✕</a>\n\t\t<!-- <ng-chat-options [ngClass]=\"'ng-chat-options-container'\" [options]=\"defaultWindowOptions(window)\" (activeOptionTrackerChange)=\"activeOptionTrackerChange($event)\"></ng-chat-options> -->\n\t</div>\n\t\t<div #chatMessages class=\"ng-chat-messages primary-background\">\n\t\t\t<div *ngIf=\"window.isLoadingHistory\" class=\"ng-chat-loading-wrapper\">\n\t\t\t\t<div class=\"loader\">Loading history...</div>\n\t\t\t</div>\n\t\t\t<div *ngIf=\"hasPagedHistory && window.hasMoreMessages && !window.isLoadingHistory\" class=\"ng-chat-load-history\">\n\t\t\t\t<a class=\"load-history-action\" (click)=\"fetchMessageHistory(window)\">{{localization.loadMessageHistoryPlaceholder}}</a>\n\t\t\t</div>\n\n\t\t\t<div *ngFor=\"let message of window.messages; let i = index\" [ngClass]=\"{'ng-chat-message': true, 'ng-chat-message-received': message.fromId !== userId}\">\n\t\t\t\t<ng-container *ngIf=\"isAvatarVisible(window, message, i)\">\n\t\t\t\t\t<div *ngIf=\"!getChatWindowAvatar(window.participant, message)\" class=\"icon-wrapper\">\n\t\t\t\t\t\t<i class=\"user-icon\"></i>\n\t\t\t\t\t</div>\n\t\t\t\t\t<!-- <img *ngIf=\"getChatWindowAvatar(window.participant, message)\" alt=\"\" class=\"avatar\" height=\"30\" width=\"30\" [src]=\"getChatWindowAvatar(window.participant, message) | sanitize\" /> -->\n\t\t\t\t\t<span *ngIf=\"window.participant.participantType === ChatParticipantType.Group\" class=\"ng-chat-participant-name\">{{window.participant | groupMessageDisplayName:message}}</span>\n\t\t\t\t</ng-container>\n\t\t\t\t<ng-container [ngSwitch]=\"message.type\">\n\t\t\t\t\t<div *ngSwitchCase=\"MessageType.Text\" [ngClass]=\"{'sent-chat-message-container': message.fromId === userId, 'received-chat-message-container': message.fromId !== userId}\">\n\t\t\t \t\t\t<span [innerHtml]=\"message.message | emojify:emojisEnabled | linkfy:linkfyEnabled\"></span>\n\t\t\t\t\t\t<span *ngIf=\"showMessageDate && message.dateSent\" class=\"message-sent-date\">{{message.dateSent | date:'dd'}}/{{message.dateSent | date:'MM'}}/{{message.dateSent | date:'y'}} {{message.dateSent | date:'h:mm a '}}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div *ngSwitchCase=\"MessageType.Image\" [ngClass]=\"{'sent-chat-message-container': message.fromId === userId, 'received-chat-message-container': message.fromId !== userId}\">\n\t\n\t\t\t \t\t\t<img src=\"{{message.message}}\" class=\"image-message\" />\n\t\n\t\t\t\t\t\t<span *ngIf=\"showMessageDate && message.dateSent\" class=\"message-sent-date\">{{message.dateSent | date:'dd'}}/{{message.dateSent | date:'MM'}}/{{message.dateSent | date:'y'}} {{message.dateSent | date:'h:mm a '}}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div *ngSwitchCase=\"MessageType.File\" [ngClass]=\"{'file-message-container': true, 'received': message.fromId !== userId}\">\n\t\t\t\t\t\t<div class=\"file-message-icon-container\">\n\t\t\t\t\t\t\t<i class=\"paperclip-icon\"></i>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<!-- <a class=\"file-details\" [attr.href]=\"message.downloadUrl\" target=\"_blank\" rel=\"noopener noreferrer\" (click)=\"this.markMessagesAsRead([message])\" download>\n\t\t\t\t\t\t\t<span class=\"file-message-title\" [attr.title]=\"message.message\">{{message.message}}</span>\n\t\t\t\t\t\t\t<span *ngIf=\"message.fileSizeInBytes\" class=\"file-message-size\">{{message.fileSizeInBytes}} Bytes</span>\n\t\t\t\t\t\t</a> -->\n\t\t\t\t\t</div>\n\t\t\t\t</ng-container>\n\t\t\t</div>\n\t</div>\n\n\t<div class=\"ng-chat-footer primary-outline-color primary-background\">\n\t\t<input #chatWindowInput\n\t\t\ttype=\"text\"\n\t\t\t[ngModel]=\"window.newMessage | emojify:emojisEnabled\"\n\t\t\t(ngModelChange)=\"window.newMessage=$event\"\n\t\t\t[placeholder]=\"localization.messagePlaceholder\"\n\t\t\t[ngClass]=\"{'chat-window-input': true, 'has-side-action': fileUploadAdapter}\"\n\t\t\t(keydown)=\"onChatInputTyped($event, window)\"\n\t\t\t(blur)=\"toggleWindowFocus(window)\"\n\t\t\t(focus)=\"toggleWindowFocus(window)\"/>\n\n\t\t<!-- File Upload -->\n\t\t<ng-container *ngIf=\"fileUploadAdapter\">\n\t\t\t<a *ngIf=\"!isUploadingFile(window)\" class=\"btn-add-file\" (click)=\"triggerNativeFileUpload(window)\">\n\t\t\t\t<i class=\"upload-icon\"></i>\n\t\t\t</a>\n\t\t\t<input\n\t\t\t\ttype=\"file\"\n\t\t\t\t#nativeFileInput\n\t\t\t\tstyle=\"display: none;\"\n\t\t\t\t[attr.id]=\"getUniqueFileUploadInstanceId(window)\"\n\t\t\t\t(change)=\"onFileChosen(window)\" />\n\t\t\t<div *ngIf=\"isUploadingFile(window)\" class=\"loader\"></div>\n\t\t</ng-container>\n\t</div>\n</ng-container>", styles: [".ng-chat-window{right:260px;height:360px;z-index:999;bottom:0;width:300px;position:fixed;border-width:1px;border-style:solid;border-bottom:0;box-shadow:0 4px 8px #00000040;margin-bottom:10px!important;border:1px solid grey!important;border-radius:10px!important;box-sizing:border-box!important;overflow:hidden!important;background-color:#fff}.ng-chat-window ::-webkit-scrollbar{width:8px!important}.ng-chat-window ::-webkit-scrollbar-thumb{background:#1b1b70!important;border-radius:5px!important}.ng-chat-window-collapsed{height:30px!important}.ng-chat-window .ng-chat-footer{box-sizing:border-box!important;padding-bottom:10px!important;display:block;height:10%;width:95%!important;margin:auto!important;background-color:inherit!important}.ng-chat-window .ng-chat-footer>input{font-size:.8em;box-sizing:border-box!important;padding:15px!important;height:100%;width:100%;border-radius:20px!important;border:1px solid grey!important}.ng-chat-window .ng-chat-footer>input.has-side-action{width:calc(100% - 30px)}.ng-chat-window .ng-chat-footer .btn-add-file{position:absolute;right:5px;bottom:7px;height:20px;width:20px;cursor:pointer}.ng-chat-window .ng-chat-footer .loader{position:absolute;right:14px;bottom:8px}.ng-chat-window .ng-chat-load-history{height:30px;text-align:center;font-size:.8em}.ng-chat-window .ng-chat-load-history>a{border-radius:15px;cursor:pointer;padding:5px 10px}.ng-chat-window .ng-chat-messages{padding:10px;width:100%;height:calc(90% - 30px);box-sizing:border-box;position:relative;overflow:auto}.ng-chat-window .ng-chat-messages .ng-chat-message{clear:both}.ng-chat-window .ng-chat-messages .ng-chat-message>img.avatar,.ng-chat-window .ng-chat-messages .ng-chat-message>.icon-wrapper{position:absolute;left:10px;border-radius:25px}.ng-chat-window .ng-chat-messages .ng-chat-message .ng-chat-participant-name{display:inline-block;margin-left:40px;padding-bottom:5px;font-weight:700;font-size:.8em;text-overflow:ellipsis;max-width:180px}.ng-chat-window .ng-chat-messages .ng-chat-message>.icon-wrapper{background-color:#bababa;overflow:hidden;width:30px;height:30px;padding:0}.ng-chat-window .ng-chat-messages .ng-chat-message>.icon-wrapper>i{color:#fff;transform:scale(.7)}.ng-chat-window .ng-chat-messages .ng-chat-message .message-sent-date{font-size:.5em!important;display:block;text-align:right;margin-top:5px;color:#a1a0a0!important;font-style:italic!important}.ng-chat-window .ng-chat-messages .ng-chat-message>div{float:right;width:182px;border-radius:15px 15px 0!important;padding:10px;margin-top:0;margin-bottom:5px;font-size:.9em;word-wrap:break-word;background-color:#93d4f0!important}.ng-chat-window .ng-chat-message-received>div.received-chat-message-container{float:left;margin-left:40px;padding-top:7px;padding-bottom:7px;margin-top:0;margin-bottom:5px;background-color:#daf2fc!important;border-radius:15px 15px 15px 0!important}.ng-chat-window .ng-chat-messages .ng-chat-message .file-message-container{float:right;width:202px;border-style:solid;border-width:3px;border-radius:5px;overflow:hidden;margin-bottom:5px;display:block;text-decoration:none;font-size:.9em;padding:0;box-sizing:border-box}.ng-chat-window .ng-chat-messages .ng-chat-message .file-message-container.received{float:left;margin-left:40px;width:208px}.ng-chat-window .ng-chat-messages .ng-chat-message .file-message-container>.file-message-icon-container{width:20px;height:35px;padding:10px 5px;float:left}.ng-chat-window .ng-chat-messages .ng-chat-message .file-message-container>.file-message-icon-container i{margin-top:8px}.ng-chat-window .ng-chat-messages .ng-chat-message .file-message-container>.file-details{float:left;padding:10px;width:calc(100% - 60px);color:currentColor;text-decoration:none}.ng-chat-window .ng-chat-messages .ng-chat-message .file-message-container>.file-details:hover{text-decoration:underline}.ng-chat-window .ng-chat-messages .ng-chat-message .file-message-container>.file-details span{display:block;width:100%;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ng-chat-window .ng-chat-messages .ng-chat-message .file-message-container>.file-details .file-message-title{font-weight:700}.ng-chat-window .ng-chat-messages .ng-chat-message .file-message-container>.file-details .file-message-size{font-size:.8em;margin-top:5px}.ng-chat-window .image-message{width:100%;height:auto}@media only screen and (max-width: 581px){.ng-chat-window{position:initial}}\n"], dependencies: [{ kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }, { kind: "pipe", type: i3.EmojifyPipe, name: "emojify" }, { kind: "pipe", type: i4.LinkfyPipe, name: "linkfy" }, { kind: "pipe", type: i5.GroupMessageDisplayNamePipe, name: "groupMessageDisplayName" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
201
201
|
}
|
|
202
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
202
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: NgChatWindowComponent, decorators: [{
|
|
203
203
|
type: Component,
|
|
204
204
|
args: [{ selector: 'ng-chat-window', encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"window && window.isCollapsed\">\n\t<div class=\"ng-chat-title secondary-background\">\n\t\t<div class=\"ng-chat-title-visibility-toggle-area\" (click)=\"onChatWindowClicked(window)\">\n\t\t\t<strong title=\"{{window.participant.displayName}}\">\n\t\t\t\t{{window.participant.displayName}}\n\t\t\t</strong>\n\t\t\t<span [ngClass]=\"{'ng-chat-participant-status': true, 'online': window.participant.status === ChatParticipantStatus.Online, 'busy': window.participant.status === ChatParticipantStatus.Busy, 'away': window.participant.status === ChatParticipantStatus.Away, 'offline': window.participant.status === ChatParticipantStatus.Offline}\" title=\"{{chatParticipantStatusDescriptor(window.participant.status, localization)}}\"></span>\n\t\t\t<span *ngIf=\"unreadMessagesTotal(window).length > 0\" class=\"ng-chat-unread-messages-count unread-messages-counter-container primary-text\">{{unreadMessagesTotal(window)}}</span>\n\t\t</div>\n\t\t<a href=\"javascript:void(0);\" class=\"ng-chat-close primary-text\" (click)=\"onCloseChatWindow()\">✕</a>\n\t</div>\n</ng-container>\n<ng-container *ngIf=\"window && !window.isCollapsed\"> \n\t<div class=\"ng-chat-title secondary-background\">\n\t\t<div class=\"ng-chat-title-visibility-toggle-area\" (click)=\"onChatWindowClicked(window)\">\n\t\t\t<strong title=\"{{window.participant.displayName}}\">\n\t\t\t\t{{window.participant.displayName}}\n\t\t\t</strong>\n\t\t\t<span [ngClass]=\"{'ng-chat-participant-status': true, 'online': window.participant.status === ChatParticipantStatus.Online, 'busy': window.participant.status === ChatParticipantStatus.Busy, 'away': window.participant.status === ChatParticipantStatus.Away, 'offline': window.participant.status === ChatParticipantStatus.Offline}\" title=\"{{chatParticipantStatusDescriptor(window.participant.status, localization)}}\"></span>\n\t\t\t<span *ngIf=\"unreadMessagesTotal(window).length > 0\" class=\"ng-chat-unread-messages-count unread-messages-counter-container primary-text\">{{unreadMessagesTotal(window)}}</span>\n\t\t</div>\n\t\t<a href=\"javascript:void(0);\" class=\"ng-chat-close primary-text\" (click)=\"onCloseChatWindow()\">✕</a>\n\t\t<!-- <ng-chat-options [ngClass]=\"'ng-chat-options-container'\" [options]=\"defaultWindowOptions(window)\" (activeOptionTrackerChange)=\"activeOptionTrackerChange($event)\"></ng-chat-options> -->\n\t</div>\n\t\t<div #chatMessages class=\"ng-chat-messages primary-background\">\n\t\t\t<div *ngIf=\"window.isLoadingHistory\" class=\"ng-chat-loading-wrapper\">\n\t\t\t\t<div class=\"loader\">Loading history...</div>\n\t\t\t</div>\n\t\t\t<div *ngIf=\"hasPagedHistory && window.hasMoreMessages && !window.isLoadingHistory\" class=\"ng-chat-load-history\">\n\t\t\t\t<a class=\"load-history-action\" (click)=\"fetchMessageHistory(window)\">{{localization.loadMessageHistoryPlaceholder}}</a>\n\t\t\t</div>\n\n\t\t\t<div *ngFor=\"let message of window.messages; let i = index\" [ngClass]=\"{'ng-chat-message': true, 'ng-chat-message-received': message.fromId !== userId}\">\n\t\t\t\t<ng-container *ngIf=\"isAvatarVisible(window, message, i)\">\n\t\t\t\t\t<div *ngIf=\"!getChatWindowAvatar(window.participant, message)\" class=\"icon-wrapper\">\n\t\t\t\t\t\t<i class=\"user-icon\"></i>\n\t\t\t\t\t</div>\n\t\t\t\t\t<!-- <img *ngIf=\"getChatWindowAvatar(window.participant, message)\" alt=\"\" class=\"avatar\" height=\"30\" width=\"30\" [src]=\"getChatWindowAvatar(window.participant, message) | sanitize\" /> -->\n\t\t\t\t\t<span *ngIf=\"window.participant.participantType === ChatParticipantType.Group\" class=\"ng-chat-participant-name\">{{window.participant | groupMessageDisplayName:message}}</span>\n\t\t\t\t</ng-container>\n\t\t\t\t<ng-container [ngSwitch]=\"message.type\">\n\t\t\t\t\t<div *ngSwitchCase=\"MessageType.Text\" [ngClass]=\"{'sent-chat-message-container': message.fromId === userId, 'received-chat-message-container': message.fromId !== userId}\">\n\t\t\t \t\t\t<span [innerHtml]=\"message.message | emojify:emojisEnabled | linkfy:linkfyEnabled\"></span>\n\t\t\t\t\t\t<span *ngIf=\"showMessageDate && message.dateSent\" class=\"message-sent-date\">{{message.dateSent | date:'dd'}}/{{message.dateSent | date:'MM'}}/{{message.dateSent | date:'y'}} {{message.dateSent | date:'h:mm a '}}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div *ngSwitchCase=\"MessageType.Image\" [ngClass]=\"{'sent-chat-message-container': message.fromId === userId, 'received-chat-message-container': message.fromId !== userId}\">\n\t\n\t\t\t \t\t\t<img src=\"{{message.message}}\" class=\"image-message\" />\n\t\n\t\t\t\t\t\t<span *ngIf=\"showMessageDate && message.dateSent\" class=\"message-sent-date\">{{message.dateSent | date:'dd'}}/{{message.dateSent | date:'MM'}}/{{message.dateSent | date:'y'}} {{message.dateSent | date:'h:mm a '}}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div *ngSwitchCase=\"MessageType.File\" [ngClass]=\"{'file-message-container': true, 'received': message.fromId !== userId}\">\n\t\t\t\t\t\t<div class=\"file-message-icon-container\">\n\t\t\t\t\t\t\t<i class=\"paperclip-icon\"></i>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<!-- <a class=\"file-details\" [attr.href]=\"message.downloadUrl\" target=\"_blank\" rel=\"noopener noreferrer\" (click)=\"this.markMessagesAsRead([message])\" download>\n\t\t\t\t\t\t\t<span class=\"file-message-title\" [attr.title]=\"message.message\">{{message.message}}</span>\n\t\t\t\t\t\t\t<span *ngIf=\"message.fileSizeInBytes\" class=\"file-message-size\">{{message.fileSizeInBytes}} Bytes</span>\n\t\t\t\t\t\t</a> -->\n\t\t\t\t\t</div>\n\t\t\t\t</ng-container>\n\t\t\t</div>\n\t</div>\n\n\t<div class=\"ng-chat-footer primary-outline-color primary-background\">\n\t\t<input #chatWindowInput\n\t\t\ttype=\"text\"\n\t\t\t[ngModel]=\"window.newMessage | emojify:emojisEnabled\"\n\t\t\t(ngModelChange)=\"window.newMessage=$event\"\n\t\t\t[placeholder]=\"localization.messagePlaceholder\"\n\t\t\t[ngClass]=\"{'chat-window-input': true, 'has-side-action': fileUploadAdapter}\"\n\t\t\t(keydown)=\"onChatInputTyped($event, window)\"\n\t\t\t(blur)=\"toggleWindowFocus(window)\"\n\t\t\t(focus)=\"toggleWindowFocus(window)\"/>\n\n\t\t<!-- File Upload -->\n\t\t<ng-container *ngIf=\"fileUploadAdapter\">\n\t\t\t<a *ngIf=\"!isUploadingFile(window)\" class=\"btn-add-file\" (click)=\"triggerNativeFileUpload(window)\">\n\t\t\t\t<i class=\"upload-icon\"></i>\n\t\t\t</a>\n\t\t\t<input\n\t\t\t\ttype=\"file\"\n\t\t\t\t#nativeFileInput\n\t\t\t\tstyle=\"display: none;\"\n\t\t\t\t[attr.id]=\"getUniqueFileUploadInstanceId(window)\"\n\t\t\t\t(change)=\"onFileChosen(window)\" />\n\t\t\t<div *ngIf=\"isUploadingFile(window)\" class=\"loader\"></div>\n\t\t</ng-container>\n\t</div>\n</ng-container>", styles: [".ng-chat-window{right:260px;height:360px;z-index:999;bottom:0;width:300px;position:fixed;border-width:1px;border-style:solid;border-bottom:0;box-shadow:0 4px 8px #00000040;margin-bottom:10px!important;border:1px solid grey!important;border-radius:10px!important;box-sizing:border-box!important;overflow:hidden!important;background-color:#fff}.ng-chat-window ::-webkit-scrollbar{width:8px!important}.ng-chat-window ::-webkit-scrollbar-thumb{background:#1b1b70!important;border-radius:5px!important}.ng-chat-window-collapsed{height:30px!important}.ng-chat-window .ng-chat-footer{box-sizing:border-box!important;padding-bottom:10px!important;display:block;height:10%;width:95%!important;margin:auto!important;background-color:inherit!important}.ng-chat-window .ng-chat-footer>input{font-size:.8em;box-sizing:border-box!important;padding:15px!important;height:100%;width:100%;border-radius:20px!important;border:1px solid grey!important}.ng-chat-window .ng-chat-footer>input.has-side-action{width:calc(100% - 30px)}.ng-chat-window .ng-chat-footer .btn-add-file{position:absolute;right:5px;bottom:7px;height:20px;width:20px;cursor:pointer}.ng-chat-window .ng-chat-footer .loader{position:absolute;right:14px;bottom:8px}.ng-chat-window .ng-chat-load-history{height:30px;text-align:center;font-size:.8em}.ng-chat-window .ng-chat-load-history>a{border-radius:15px;cursor:pointer;padding:5px 10px}.ng-chat-window .ng-chat-messages{padding:10px;width:100%;height:calc(90% - 30px);box-sizing:border-box;position:relative;overflow:auto}.ng-chat-window .ng-chat-messages .ng-chat-message{clear:both}.ng-chat-window .ng-chat-messages .ng-chat-message>img.avatar,.ng-chat-window .ng-chat-messages .ng-chat-message>.icon-wrapper{position:absolute;left:10px;border-radius:25px}.ng-chat-window .ng-chat-messages .ng-chat-message .ng-chat-participant-name{display:inline-block;margin-left:40px;padding-bottom:5px;font-weight:700;font-size:.8em;text-overflow:ellipsis;max-width:180px}.ng-chat-window .ng-chat-messages .ng-chat-message>.icon-wrapper{background-color:#bababa;overflow:hidden;width:30px;height:30px;padding:0}.ng-chat-window .ng-chat-messages .ng-chat-message>.icon-wrapper>i{color:#fff;transform:scale(.7)}.ng-chat-window .ng-chat-messages .ng-chat-message .message-sent-date{font-size:.5em!important;display:block;text-align:right;margin-top:5px;color:#a1a0a0!important;font-style:italic!important}.ng-chat-window .ng-chat-messages .ng-chat-message>div{float:right;width:182px;border-radius:15px 15px 0!important;padding:10px;margin-top:0;margin-bottom:5px;font-size:.9em;word-wrap:break-word;background-color:#93d4f0!important}.ng-chat-window .ng-chat-message-received>div.received-chat-message-container{float:left;margin-left:40px;padding-top:7px;padding-bottom:7px;margin-top:0;margin-bottom:5px;background-color:#daf2fc!important;border-radius:15px 15px 15px 0!important}.ng-chat-window .ng-chat-messages .ng-chat-message .file-message-container{float:right;width:202px;border-style:solid;border-width:3px;border-radius:5px;overflow:hidden;margin-bottom:5px;display:block;text-decoration:none;font-size:.9em;padding:0;box-sizing:border-box}.ng-chat-window .ng-chat-messages .ng-chat-message .file-message-container.received{float:left;margin-left:40px;width:208px}.ng-chat-window .ng-chat-messages .ng-chat-message .file-message-container>.file-message-icon-container{width:20px;height:35px;padding:10px 5px;float:left}.ng-chat-window .ng-chat-messages .ng-chat-message .file-message-container>.file-message-icon-container i{margin-top:8px}.ng-chat-window .ng-chat-messages .ng-chat-message .file-message-container>.file-details{float:left;padding:10px;width:calc(100% - 60px);color:currentColor;text-decoration:none}.ng-chat-window .ng-chat-messages .ng-chat-message .file-message-container>.file-details:hover{text-decoration:underline}.ng-chat-window .ng-chat-messages .ng-chat-message .file-message-container>.file-details span{display:block;width:100%;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ng-chat-window .ng-chat-messages .ng-chat-message .file-message-container>.file-details .file-message-title{font-weight:700}.ng-chat-window .ng-chat-messages .ng-chat-message .file-message-container>.file-details .file-message-size{font-size:.8em;margin-top:5px}.ng-chat-window .image-message{width:100%;height:auto}@media only screen and (max-width: 581px){.ng-chat-window{position:initial}}\n"] }]
|
|
205
|
-
}], ctorParameters:
|
|
205
|
+
}], ctorParameters: () => [], propDecorators: { fileUploadAdapter: [{
|
|
206
206
|
type: Input
|
|
207
207
|
}], window: [{
|
|
208
208
|
type: Input
|
|
@@ -244,4 +244,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
244
244
|
type: ViewChild,
|
|
245
245
|
args: ['chatWindowInput']
|
|
246
246
|
}] } });
|
|
247
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctY2hhdC13aW5kb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC9zcmMvbGliL2NvbXBvbmVudHMvbmctY2hhdC13aW5kb3cvbmctY2hhdC13aW5kb3cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC9zcmMvbGliL2NvbXBvbmVudHMvbmctY2hhdC13aW5kb3cvbmctY2hhdC13aW5kb3cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFM0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBS25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRTVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7Ozs7OztBQVFoRyxNQUFNLE9BQU8scUJBQXFCO0lBQzlCO1FBa0JPLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBRzlCLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBRzlCLG9CQUFlLEdBQVksSUFBSSxDQUFDO1FBR2hDLDBCQUFxQixHQUFXLE9BQU8sQ0FBQztRQUd4QyxvQkFBZSxHQUFZLElBQUksQ0FBQztRQUdoQyx1QkFBa0IsR0FB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dXRwdXQsIEV2ZW50RW1pdHRlciwgVmlld0VuY2Fwc3VsYXRpb24sIFZpZXdDaGlsZCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWVzc2FnZSB9IGZyb20gXCIuLi8uLi9jb3JlL21lc3NhZ2VcIjtcbmltcG9ydCB7IE1lc3NhZ2VUeXBlIH0gZnJvbSBcIi4uLy4uL2NvcmUvbWVzc2FnZS10eXBlLmVudW1cIjtcbmltcG9ydCB7IFdpbmRvdyB9IGZyb20gXCIuLi8uLi9jb3JlL3dpbmRvd1wiO1xuaW1wb3J0IHsgQ2hhdFBhcnRpY2lwYW50U3RhdHVzIH0gZnJvbSBcIi4uLy4uL2NvcmUvY2hhdC1wYXJ0aWNpcGFudC1zdGF0dXMuZW51bVwiO1xuaW1wb3J0IHsgU2Nyb2xsRGlyZWN0aW9uIH0gZnJvbSBcIi4uLy4uL2NvcmUvc2Nyb2xsLWRpcmVjdGlvbi5lbnVtXCI7XG5pbXBvcnQgeyBMb2NhbGl6YXRpb24gfSBmcm9tICcuLi8uLi9jb3JlL2xvY2FsaXphdGlvbic7XG5pbXBvcnQgeyBJRmlsZVVwbG9hZEFkYXB0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL2ZpbGUtdXBsb2FkLWFkYXB0ZXInO1xuaW1wb3J0IHsgSUNoYXRPcHRpb24gfSBmcm9tICcuLi8uLi9jb3JlL2NoYXQtb3B0aW9uJztcbmltcG9ydCB7IEdyb3VwIH0gZnJvbSBcIi4uLy4uL2NvcmUvZ3JvdXBcIjtcbmltcG9ydCB7IENoYXRQYXJ0aWNpcGFudFR5cGUgfSBmcm9tIFwiLi4vLi4vY29yZS9jaGF0LXBhcnRpY2lwYW50LXR5cGUuZW51bVwiO1xuaW1wb3J0IHsgSUNoYXRQYXJ0aWNpcGFudCB9IGZyb20gXCIuLi8uLi9jb3JlL2NoYXQtcGFydGljaXBhbnRcIjtcbmltcG9ydCB7IE1lc3NhZ2VDb3VudGVyIH0gZnJvbSBcIi4uLy4uL2NvcmUvbWVzc2FnZS1jb3VudGVyXCI7XG5pbXBvcnQgeyBjaGF0UGFydGljaXBhbnRTdGF0dXNEZXNjcmlwdG9yIH0gZnJvbSAnLi4vLi4vY29yZS9jaGF0LXBhcnRpY2lwYW50LXN0YXR1cy1kZXNjcmlwdG9yJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZy1jaGF0LXdpbmRvdycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL25nLWNoYXQtd2luZG93LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9uZy1jaGF0LXdpbmRvdy5jb21wb25lbnQuY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBOZ0NoYXRXaW5kb3dDb21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmaWxlVXBsb2FkQWRhcHRlcjogSUZpbGVVcGxvYWRBZGFwdGVyO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgd2luZG93OiBXaW5kb3c7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB1c2VySWQ6IGFueTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGxvY2FsaXphdGlvbjogTG9jYWxpemF0aW9uO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd09wdGlvbnM6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBlbW9qaXNFbmFibGVkOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGxpbmtmeUVuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd01lc3NhZ2VEYXRlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1lc3NhZ2VEYXRlUGlwZUZvcm1hdDogc3RyaW5nID0gXCJzaG9ydFwiO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaGFzUGFnZWRIaXN0b3J5OiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvbkNoYXRXaW5kb3dDbG9zZWQ6IEV2ZW50RW1pdHRlcjx7IGNsb3NlZFdpbmRvdzogV2luZG93LCBjbG9zZWRWaWFFc2NhcGVLZXk6IGJvb2xlYW59PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvbk1lc3NhZ2VzU2VlbjogRXZlbnRFbWl0dGVyPE1lc3NhZ2VbXT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb25NZXNzYWdlU2VudDogRXZlbnRFbWl0dGVyPE1lc3NhZ2U+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9uVGFiVHJpZ2dlcmVkOiBFdmVudEVtaXR0ZXI8eyB0cmlnZ2VyaW5nV2luZG93OiBXaW5kb3csIHNoaWZ0S2V5UHJlc3NlZDogYm9vbGVhbiB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvbk9wdGlvblRyaWdnZXJlZDogRXZlbnRFbWl0dGVyPElDaGF0T3B0aW9uPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvbkxvYWRIaXN0b3J5VHJpZ2dlcmVkOiBFdmVudEVtaXR0ZXI8V2luZG93PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2NoYXRNZXNzYWdlcycpIGNoYXRNZXNzYWdlczogYW55O1xuICAgIEBWaWV3Q2hpbGQoJ25hdGl2ZUZpbGVJbnB1dCcpIG5hdGl2ZUZpbGVJbnB1dDogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdjaGF0V2luZG93SW5wdXQnKSBjaGF0V2luZG93SW5wdXQ6IGFueTtcblxuICAgIC8vIEZpbGUgdXBsb2FkIHN0YXRlXG4gICAgcHVibGljIGZpbGVVcGxvYWRlcnNJblVzZTogc3RyaW5nW10gPSBbXTsgLy8gSWQgYnVja2V0IG9mIHVwbG9hZGVycyBpbiB1c2VcblxuICAgIC8vIEV4cG9zZXMgZW51bXMgYW5kIGZ1bmN0aW9ucyBmb3IgdGhlIG5nLXRlbXBsYXRlXG4gICAgcHVibGljIENoYXRQYXJ0aWNpcGFudFR5cGUgPSBDaGF0UGFydGljaXBhbnRUeXBlO1xuICAgIHB1YmxpYyBDaGF0UGFydGljaXBhbnRTdGF0dXMgPSBDaGF0UGFydGljaXBhbnRTdGF0dXM7XG4gICAgcHVibGljIE1lc3NhZ2VUeXBlID0gTWVzc2FnZVR5cGU7XG4gICAgcHVibGljIGNoYXRQYXJ0aWNpcGFudFN0YXR1c0Rlc2NyaXB0b3IgPSBjaGF0UGFydGljaXBhbnRTdGF0dXNEZXNjcmlwdG9yO1xuXG4gICAgZGVmYXVsdFdpbmRvd09wdGlvbnMoY3VycmVudFdpbmRvdzogV2luZG93KTogSUNoYXRPcHRpb25bXVxuICAgIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvd09wdGlvbnMgJiYgY3VycmVudFdpbmRvdy5wYXJ0aWNpcGFudC5wYXJ0aWNpcGFudFR5cGUgPT0gQ2hhdFBhcnRpY2lwYW50VHlwZS5Vc2VyKVxuICAgICAgICB7XG4gICAgICAgICAgICByZXR1cm4gW3tcbiAgICAgICAgICAgICAgICBpc0FjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgY2hhdHRpbmdUbzogY3VycmVudFdpbmRvdyxcbiAgICAgICAgICAgICAgICB2YWxpZGF0ZUNvbnRleHQ6IChwYXJ0aWNpcGFudDogSUNoYXRQYXJ0aWNpcGFudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFydGljaXBhbnQucGFydGljaXBhbnRUeXBlID09IENoYXRQYXJ0aWNpcGFudFR5cGUuVXNlcjtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGRpc3BsYXlMYWJlbDogJ0FkZCBQZW9wbGUnIC8vIFRPRE86IExvY2FsaXplIHRoaXNcbiAgICAgICAgICAgIH1dO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIC8vIEFzc2VydHMgaWYgYSB1c2VyIGF2YXRhciBpcyB2aXNpYmxlIGluIGEgY2hhdCBjbHVzdGVyXG4gICAgaXNBdmF0YXJWaXNpYmxlKHdpbmRvdzogV2luZG93LCBtZXNzYWdlOiBNZXNzYWdlLCBpbmRleDogbnVtYmVyKTogYm9vbGVhblxuICAgIHtcbiAgICAgICAgaWYgKG1lc3NhZ2UuZnJvbUlkICE9IHRoaXMudXNlcklkKXtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PSAwKXtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gRmlyc3QgbWVzc2FnZSwgZ29vZCB0byBzaG93IHRoZSB0aHVtYm5haWxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHByZXZpb3VzIG1lc3NhZ2UgYmVsb25ncyB0byB0aGUgc2FtZSB1c2VyLCBpZiBpdCBiZWxvbmdzIHRoZXJlIGlzIG5vIG5lZWQgdG8gc2hvdyB0aGUgYXZhdGFyIGFnYWluIHRvIGZvcm0gdGhlIG1lc3NhZ2UgY2x1c3RlclxuICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubWVzc2FnZXNbaW5kZXggLSAxXS5mcm9tSWQgIT0gbWVzc2FnZS5mcm9tSWQpe1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0Q2hhdFdpbmRvd0F2YXRhcihwYXJ0aWNpcGFudDogSUNoYXRQYXJ0aWNpcGFudCwgbWVzc2FnZTogTWVzc2FnZSk6IHN0cmluZyB8IG51bGxcbiAgICB7XG4gICAgICAgIGlmIChwYXJ0aWNpcGFudC5wYXJ0aWNpcGFudFR5cGUgPT0gQ2hhdFBhcnRpY2lwYW50VHlwZS5Vc2VyKVxuICAgICAgICB7XG4gICAgICAgICAgICByZXR1cm4gcGFydGljaXBhbnQuYXZhdGFyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHBhcnRpY2lwYW50LnBhcnRpY2lwYW50VHlwZSA9PSBDaGF0UGFydGljaXBhbnRUeXBlLkdyb3VwKVxuICAgICAgICB7XG4gICAgICAgICAgICBsZXQgZ3JvdXAgPSBwYXJ0aWNpcGFudCBhcyBHcm91cDtcbiAgICAgICAgICAgIGxldCB1c2VySW5kZXggPSBncm91cC5jaGF0dGluZ1RvLmZpbmRJbmRleCh4ID0+IHguaWQgPT0gbWVzc2FnZS5mcm9tSWQpO1xuXG4gICAgICAgICAgICByZXR1cm4gZ3JvdXAuY2hhdHRpbmdUb1t1c2VySW5kZXggPj0gMCA/IHVzZXJJbmRleCA6IDBdLmF2YXRhcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlzVXBsb2FkaW5nRmlsZSh3aW5kb3c6IFdpbmRvdyk6IGJvb2xlYW5cbiAgICB7XG4gICAgICAgIGNvbnN0IGZpbGVVcGxvYWRJbnN0YW5jZUlkID0gdGhpcy5nZXRVbmlxdWVGaWxlVXBsb2FkSW5zdGFuY2VJZCh3aW5kb3cpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmZpbGVVcGxvYWRlcnNJblVzZS5pbmRleE9mKGZpbGVVcGxvYWRJbnN0YW5jZUlkKSA+IC0xO1xuICAgIH1cblxuICAgIC8vIEdlbmVyYXRlcyBhIHVuaXF1ZSBmaWxlIHVwbG9hZGVyIGlkIGZvciBlYWNoIHBhcnRpY2lwYW50XG4gICAgZ2V0VW5pcXVlRmlsZVVwbG9hZEluc3RhbmNlSWQod2luZG93OiBXaW5kb3cpOiBzdHJpbmdcbiAgICB7XG4gICAgICAgIGlmICh3aW5kb3cgJiYgd2luZG93LnBhcnRpY2lwYW50KVxuICAgICAgICB7XG4gICAgICAgICAgICByZXR1cm4gYG5nLWNoYXQtZmlsZS11cGxvYWQtJHt3aW5kb3cucGFydGljaXBhbnQuaWR9YDtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgcmV0dXJuICduZy1jaGF0LWZpbGUtdXBsb2FkJztcbiAgICB9XG5cbiAgICB1bnJlYWRNZXNzYWdlc1RvdGFsKHdpbmRvdzogV2luZG93KTogc3RyaW5nXG4gICAge1xuICAgICAgICByZXR1cm4gTWVzc2FnZUNvdW50ZXIudW5yZWFkTWVzc2FnZXNUb3RhbCh3aW5kb3csIHRoaXMudXNlcklkKTtcbiAgICB9XG5cbiAgICAvLyBTY3JvbGxzIGEgY2hhdCB3aW5kb3cgbWVzc2FnZSBmbG93IHRvIHRoZSBib3R0b21cbiAgICBzY3JvbGxDaGF0V2luZG93KHdpbmRvdzogV2luZG93LCBkaXJlY3Rpb246IFNjcm9sbERpcmVjdGlvbik6IHZvaWRcbiAgICB7XG4gICAgICAgIGlmICghd2luZG93LmlzQ29sbGFwc2VkKXtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNoYXRNZXNzYWdlcyl7XG4gICAgICAgICAgICAgICAgICAgIGxldCBlbGVtZW50ID0gdGhpcy5jaGF0TWVzc2FnZXMubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvc2l0aW9uID0gKCBkaXJlY3Rpb24gPT09IFNjcm9sbERpcmVjdGlvbi5Ub3AgKSA/IDAgOiBlbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zY3JvbGxUb3AgPSBwb3NpdGlvbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFjdGl2ZU9wdGlvblRyYWNrZXJDaGFuZ2Uob3B0aW9uOiBJQ2hhdE9wdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9uT3B0aW9uVHJpZ2dlcmVkLmVtaXQob3B0aW9uKTtcbiAgICB9XG5cbiAgICAvLyBUcmlnZ2VycyBuYXRpdmUgZmlsZSB1cGxvYWQgZm9yIGZpbGUgc2VsZWN0aW9uIGZyb20gdGhlIHVzZXJcbiAgICB0cmlnZ2VyTmF0aXZlRmlsZVVwbG9hZCh3aW5kb3c6IFdpbmRvdyk6IHZvaWRcbiAgICB7XG4gICAgICAgIGlmICh3aW5kb3cpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm5hdGl2ZUZpbGVJbnB1dCkgdGhpcy5uYXRpdmVGaWxlSW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVG9nZ2xlcyBhIHdpbmRvdyBmb2N1cyBvbiB0aGUgZm9jdXMvYmx1ciBvZiBhICduZXdNZXNzYWdlJyBpbnB1dFxuICAgIHRvZ2dsZVdpbmRvd0ZvY3VzKHdpbmRvdzogV2luZG93KTogdm9pZFxuICAgIHtcbiAgICAgICAgd2luZG93Lmhhc0ZvY3VzID0gIXdpbmRvdy5oYXNGb2N1cztcbiAgICAgICAgaWYod2luZG93Lmhhc0ZvY3VzKSB7XG4gICAgICAgICAgICBjb25zdCB1bnJlYWRNZXNzYWdlcyA9IHdpbmRvdy5tZXNzYWdlc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIobWVzc2FnZSA9PiBtZXNzYWdlLmRhdGVTZWVuID09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgJiYgKG1lc3NhZ2UudG9JZCA9PSB0aGlzLnVzZXJJZCB8fCB3aW5kb3cucGFydGljaXBhbnQucGFydGljaXBhbnRUeXBlID09PSBDaGF0UGFydGljaXBhbnRUeXBlLkdyb3VwKSk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmICh1bnJlYWRNZXNzYWdlcyAmJiB1bnJlYWRNZXNzYWdlcy5sZW5ndGggPiAwKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRoaXMub25NZXNzYWdlc1NlZW4uZW1pdCh1bnJlYWRNZXNzYWdlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtYXJrTWVzc2FnZXNBc1JlYWQobWVzc2FnZXM6IE1lc3NhZ2VbXSk6IHZvaWRcbiAgICB7XG4gICAgICAgIHRoaXMub25NZXNzYWdlc1NlZW4uZW1pdChtZXNzYWdlcyk7XG4gICAgfVxuXG4gICAgZmV0Y2hNZXNzYWdlSGlzdG9yeSh3aW5kb3c6IFdpbmRvdyk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTG9hZEhpc3RvcnlUcmlnZ2VyZWQuZW1pdCh3aW5kb3cpO1xuICAgIH1cblxuICAgIC8vIENsb3NlcyBhIGNoYXQgd2luZG93IHZpYSB0aGUgY2xvc2UgJ1gnIGJ1dHRvblxuICAgIG9uQ2xvc2VDaGF0V2luZG93KCk6IHZvaWRcbiAgICB7XG4gICAgICAgIHRoaXMub25DaGF0V2luZG93Q2xvc2VkLmVtaXQoeyBjbG9zZWRXaW5kb3c6IHRoaXMud2luZG93LCBjbG9zZWRWaWFFc2NhcGVLZXk6IGZhbHNlIH0pO1xuICAgIH1cblxuICAgIC8qICBNb25pdG9ycyBwcmVzc2VkIGtleXMgb24gYSBjaGF0IHdpbmRvd1xuICAgICAgICAtIERpc3BhdGNoZXMgYSBtZXNzYWdlIHdoZW4gdGhlIEVOVEVSIGtleSBpcyBwcmVzc2VkXG4gICAgICAgIC0gVGFicyBiZXR3ZWVuIHdpbmRvd3Mgb24gVEFCIG9yIFNISUZUICsgVEFCXG4gICAgICAgIC0gQ2xvc2VzIHRoZSBjdXJyZW50IGZvY3VzZWQgd2luZG93IG9uIEVTQ1xuICAgICovXG4gICBvbkNoYXRJbnB1dFR5cGVkKGV2ZW50OiBhbnksIHdpbmRvdzogV2luZG93KTogdm9pZFxuICAge1xuICAgICAgIHN3aXRjaCAoZXZlbnQua2V5Q29kZSlcbiAgICAgICB7XG4gICAgICAgICAgIGNhc2UgMTM6XG4gICAgICAgICAgICAgICBpZiAod2luZG93Lm5ld01lc3NhZ2UgJiYgd2luZG93Lm5ld01lc3NhZ2UudHJpbSgpICE9IFwiXCIpXG4gICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSBuZXcgTWVzc2FnZSgpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgbWVzc2FnZS5mcm9tSWQgPSB0aGlzLnVzZXJJZDtcbiAgICAgICAgICAgICAgICAgICBtZXNzYWdlLnRvSWQgPSB3aW5kb3cucGFydGljaXBhbnQuaWQ7XG4gICAgICAgICAgICAgICAgICAgbWVzc2FnZS5tZXNzYWdlID0gd2luZG93Lm5ld01lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgbWVzc2FnZS5kYXRlU2VudCA9IG5ldyBEYXRlKCk7XG4gICAgICAgXG4gICAgICAgICAgICAgICAgICAgd2luZG93Lm1lc3NhZ2VzLnB1c2gobWVzc2FnZSk7XG4gICAgICAgXG4gICAgICAgICAgICAgICAgICAgdGhpcy5vbk1lc3NhZ2VTZW50LmVtaXQobWVzc2FnZSk7XG4gICAgICAgXG4gICAgICAgICAgICAgICAgICAgd2luZG93Lm5ld01lc3NhZ2UgPSBcIlwiOyAvLyBSZXNldHMgdGhlIG5ldyBtZXNzYWdlIGlucHV0XG4gICAgICAgXG4gICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxDaGF0V2luZG93KHdpbmRvdywgU2Nyb2xsRGlyZWN0aW9uLkJvdHRvbSk7XG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgY2FzZSA5OlxuICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgICAgdGhpcy5vblRhYlRyaWdnZXJlZC5lbWl0KHsgdHJpZ2dlcmluZ1dpbmRvdzogd2luZG93LCBzaGlmdEtleVByZXNzZWQ6IGV2ZW50LnNoaWZ0S2V5IH0pO1xuXG4gICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgY2FzZSAyNzpcbiAgICAgICAgICAgICAgIHRoaXMub25DaGF0V2luZG93Q2xvc2VkLmVtaXQoeyBjbG9zZWRXaW5kb3c6IHdpbmRvdywgY2xvc2VkVmlhRXNjYXBlS2V5OiB0cnVlIH0pO1xuXG4gICAgICAgICAgICAgICBicmVhaztcbiAgICAgICB9XG4gICB9XG5cbiAgICAvLyBUb2dnbGVzIGEgY2hhdCB3aW5kb3cgdmlzaWJpbGl0eSBiZXR3ZWVuIG1heGltaXplZC9taW5pbWl6ZWRcbiAgICBvbkNoYXRXaW5kb3dDbGlja2VkKHdpbmRvdzogV2luZG93KTogdm9pZFxuICAgIHtcbiAgICAgICAgd2luZG93LmlzQ29sbGFwc2VkID0gIXdpbmRvdy5pc0NvbGxhcHNlZDtcbiAgICAgICAgdGhpcy5zY3JvbGxDaGF0V2luZG93KHdpbmRvdywgU2Nyb2xsRGlyZWN0aW9uLkJvdHRvbSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGVhckluVXNlRmlsZVVwbG9hZGVyKGZpbGVVcGxvYWRJbnN0YW5jZUlkOiBzdHJpbmcpOiB2b2lkXG4gICAge1xuICAgICAgICBjb25zdCB1cGxvYWRlckluc3RhbmNlSWRJbmRleCA9IHRoaXMuZmlsZVVwbG9hZGVyc0luVXNlLmluZGV4T2YoZmlsZVVwbG9hZEluc3RhbmNlSWQpO1xuXG4gICAgICAgIGlmICh1cGxvYWRlckluc3RhbmNlSWRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVVcGxvYWRlcnNJblVzZS5zcGxpY2UodXBsb2FkZXJJbnN0YW5jZUlkSW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlcyBmaWxlIHNlbGVjdGlvbiBhbmQgdXBsb2FkcyB0aGUgc2VsZWN0ZWQgZmlsZSB1c2luZyB0aGUgZmlsZSB1cGxvYWQgYWRhcHRlclxuICAgIG9uRmlsZUNob3Nlbih3aW5kb3c6IFdpbmRvdyk6IHZvaWQge1xuICAgICAgICBjb25zdCBmaWxlVXBsb2FkSW5zdGFuY2VJZCA9IHRoaXMuZ2V0VW5pcXVlRmlsZVVwbG9hZEluc3RhbmNlSWQod2luZG93KTtcbiAgICAgICAgY29uc3QgdXBsb2FkRWxlbWVudFJlZiA9IHRoaXMubmF0aXZlRmlsZUlucHV0O1xuXG4gICAgICAgIGlmICh1cGxvYWRFbGVtZW50UmVmKVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBmaWxlOiBGaWxlID0gdXBsb2FkRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZpbGVzWzBdO1xuXG4gICAgICAgICAgICB0aGlzLmZpbGVVcGxvYWRlcnNJblVzZS5wdXNoKGZpbGVVcGxvYWRJbnN0YW5jZUlkKTtcblxuICAgICAgICAgICAgdGhpcy5maWxlVXBsb2FkQWRhcHRlci51cGxvYWRGaWxlKGZpbGUsIHdpbmRvdy5wYXJ0aWNpcGFudC5pZClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKGZpbGVNZXNzYWdlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhckluVXNlRmlsZVVwbG9hZGVyKGZpbGVVcGxvYWRJbnN0YW5jZUlkKTtcblxuICAgICAgICAgICAgICAgICAgICBmaWxlTWVzc2FnZS5mcm9tSWQgPSB0aGlzLnVzZXJJZDtcblxuICAgICAgICAgICAgICAgICAgICAvLyBQdXNoIGZpbGUgbWVzc2FnZSB0byBjdXJyZW50IHVzZXIgd2luZG93XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5tZXNzYWdlcy5wdXNoKGZpbGVNZXNzYWdlKTtcbiAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25NZXNzYWdlU2VudC5lbWl0KGZpbGVNZXNzYWdlKTtcbiAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsQ2hhdFdpbmRvdyh3aW5kb3csIFNjcm9sbERpcmVjdGlvbi5Cb3R0b20pO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIFJlc2V0cyB0aGUgZmlsZSB1cGxvYWQgZWxlbWVudFxuICAgICAgICAgICAgICAgICAgICB1cGxvYWRFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhckluVXNlRmlsZVVwbG9hZGVyKGZpbGVVcGxvYWRJbnN0YW5jZUlkKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBSZXNldHMgdGhlIGZpbGUgdXBsb2FkIGVsZW1lbnRcbiAgICAgICAgICAgICAgICAgICAgdXBsb2FkRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogSW52b2tlIGEgZmlsZSB1cGxvYWQgYWRhcHRlciBlcnJvciBoZXJlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qIGVzbGludC1lbmFibGUgKi8iLCI8bmctY29udGFpbmVyICpuZ0lmPVwid2luZG93ICYmIHdpbmRvdy5pc0NvbGxhcHNlZFwiPlxuXHQ8ZGl2IGNsYXNzPVwibmctY2hhdC10aXRsZSBzZWNvbmRhcnktYmFja2dyb3VuZFwiPlxuXHRcdDxkaXYgY2xhc3M9XCJuZy1jaGF0LXRpdGxlLXZpc2liaWxpdHktdG9nZ2xlLWFyZWFcIiAoY2xpY2spPVwib25DaGF0V2luZG93Q2xpY2tlZCh3aW5kb3cpXCI+XG5cdFx0XHQ8c3Ryb25nIHRpdGxlPVwie3t3aW5kb3cucGFydGljaXBhbnQuZGlzcGxheU5hbWV9fVwiPlxuXHRcdFx0XHR7e3dpbmRvdy5wYXJ0aWNpcGFudC5kaXNwbGF5TmFtZX19XG5cdFx0XHQ8L3N0cm9uZz5cblx0XHRcdDxzcGFuIFtuZ0NsYXNzXT1cInsnbmctY2hhdC1wYXJ0aWNpcGFudC1zdGF0dXMnOiB0cnVlLCAnb25saW5lJzogd2luZG93LnBhcnRpY2lwYW50LnN0YXR1cyA9PT0gQ2hhdFBhcnRpY2lwYW50U3RhdHVzLk9ubGluZSwgJ2J1c3knOiB3aW5kb3cucGFydGljaXBhbnQuc3RhdHVzID09PSBDaGF0UGFydGljaXBhbnRTdGF0dXMuQnVzeSwgJ2F3YXknOiB3aW5kb3cucGFydGljaXBhbnQuc3RhdHVzID09PSBDaGF0UGFydGljaXBhbnRTdGF0dXMuQXdheSwgJ29mZmxpbmUnOiB3aW5kb3cucGFydGljaXBhbnQuc3RhdHVzID09PSBDaGF0UGFydGljaXBhbnRTdGF0dXMuT2ZmbGluZX1cIiB0aXRsZT1cInt7Y2hhdFBhcnRpY2lwYW50U3RhdHVzRGVzY3JpcHRvcih3aW5kb3cucGFydGljaXBhbnQuc3RhdHVzLCBsb2NhbGl6YXRpb24pfX1cIj48L3NwYW4+XG5cdFx0XHQ8c3BhbiAqbmdJZj1cInVucmVhZE1lc3NhZ2VzVG90YWwod2luZG93KS5sZW5ndGggPiAwXCIgY2xhc3M9XCJuZy1jaGF0LXVucmVhZC1tZXNzYWdlcy1jb3VudCB1bnJlYWQtbWVzc2FnZXMtY291bnRlci1jb250YWluZXIgcHJpbWFyeS10ZXh0XCI+e3t1bnJlYWRNZXNzYWdlc1RvdGFsKHdpbmRvdyl9fTwvc3Bhbj5cblx0XHQ8L2Rpdj5cblx0XHQ8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIGNsYXNzPVwibmctY2hhdC1jbG9zZSBwcmltYXJ5LXRleHRcIiAoY2xpY2spPVwib25DbG9zZUNoYXRXaW5kb3coKVwiPiYjeDI3MTU7PC9hPlxuXHQ8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIndpbmRvdyAmJiAhd2luZG93LmlzQ29sbGFwc2VkXCI+ICBcblx0PGRpdiBjbGFzcz1cIm5nLWNoYXQtdGl0bGUgc2Vjb25kYXJ5LWJhY2tncm91bmRcIj5cblx0XHQ8ZGl2IGNsYXNzPVwibmctY2hhdC10aXRsZS12aXNpYmlsaXR5LXRvZ2dsZS1hcmVhXCIgKGNsaWNrKT1cIm9uQ2hhdFdpbmRvd0NsaWNrZWQod2luZG93KVwiPlxuXHRcdFx0PHN0cm9uZyB0aXRsZT1cInt7d2luZG93LnBhcnRpY2lwYW50LmRpc3BsYXlOYW1lfX1cIj5cblx0XHRcdFx0e3t3aW5kb3cucGFydGljaXBhbnQuZGlzcGxheU5hbWV9fVxuXHRcdFx0PC9zdHJvbmc+XG5cdFx0XHQ8c3BhbiBbbmdDbGFzc109XCJ7J25nLWNoYXQtcGFydGljaXBhbnQtc3RhdHVzJzogdHJ1ZSwgJ29ubGluZSc6IHdpbmRvdy5wYXJ0aWNpcGFudC5zdGF0dXMgPT09IENoYXRQYXJ0aWNpcGFudFN0YXR1cy5PbmxpbmUsICdidXN5Jzogd2luZG93LnBhcnRpY2lwYW50LnN0YXR1cyA9PT0gQ2hhdFBhcnRpY2lwYW50U3RhdHVzLkJ1c3ksICdhd2F5Jzogd2luZG93LnBhcnRpY2lwYW50LnN0YXR1cyA9PT0gQ2hhdFBhcnRpY2lwYW50U3RhdHVzLkF3YXksICdvZmZsaW5lJzogd2luZG93LnBhcnRpY2lwYW50LnN0YXR1cyA9PT0gQ2hhdFBhcnRpY2lwYW50U3RhdHVzLk9mZmxpbmV9XCIgdGl0bGU9XCJ7e2NoYXRQYXJ0aWNpcGFudFN0YXR1c0Rlc2NyaXB0b3Iod2luZG93LnBhcnRpY2lwYW50LnN0YXR1cywgbG9jYWxpemF0aW9uKX19XCI+PC9zcGFuPlxuXHRcdFx0PHNwYW4gKm5nSWY9XCJ1bnJlYWRNZXNzYWdlc1RvdGFsKHdpbmRvdykubGVuZ3RoID4gMFwiIGNsYXNzPVwibmctY2hhdC11bnJlYWQtbWVzc2FnZXMtY291bnQgdW5yZWFkLW1lc3NhZ2VzLWNvdW50ZXItY29udGFpbmVyIHByaW1hcnktdGV4dFwiPnt7dW5yZWFkTWVzc2FnZXNUb3RhbCh3aW5kb3cpfX08L3NwYW4+XG5cdFx0PC9kaXY+XG5cdFx0PGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIiBjbGFzcz1cIm5nLWNoYXQtY2xvc2UgcHJpbWFyeS10ZXh0XCIgKGNsaWNrKT1cIm9uQ2xvc2VDaGF0V2luZG93KClcIj4mI3gyNzE1OzwvYT5cblx0XHQ8IS0tIDxuZy1jaGF0LW9wdGlvbnMgW25nQ2xhc3NdPVwiJ25nLWNoYXQtb3B0aW9ucy1jb250YWluZXInXCIgW29wdGlvbnNdPVwiZGVmYXVsdFdpbmRvd09wdGlvbnMod2luZG93KVwiIChhY3RpdmVPcHRpb25UcmFja2VyQ2hhbmdlKT1cImFjdGl2ZU9wdGlvblRyYWNrZXJDaGFuZ2UoJGV2ZW50KVwiPjwvbmctY2hhdC1vcHRpb25zPiAtLT5cblx0PC9kaXY+XG5cdFx0PGRpdiAjY2hhdE1lc3NhZ2VzIGNsYXNzPVwibmctY2hhdC1tZXNzYWdlcyBwcmltYXJ5LWJhY2tncm91bmRcIj5cblx0XHRcdDxkaXYgKm5nSWY9XCJ3aW5kb3cuaXNMb2FkaW5nSGlzdG9yeVwiIGNsYXNzPVwibmctY2hhdC1sb2FkaW5nLXdyYXBwZXJcIj5cblx0XHRcdFx0PGRpdiBjbGFzcz1cImxvYWRlclwiPkxvYWRpbmcgaGlzdG9yeS4uLjwvZGl2PlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8ZGl2ICpuZ0lmPVwiaGFzUGFnZWRIaXN0b3J5ICYmIHdpbmRvdy5oYXNNb3JlTWVzc2FnZXMgJiYgIXdpbmRvdy5pc0xvYWRpbmdIaXN0b3J5XCIgY2xhc3M9XCJuZy1jaGF0LWxvYWQtaGlzdG9yeVwiPlxuXHRcdFx0XHQ8YSBjbGFzcz1cImxvYWQtaGlzdG9yeS1hY3Rpb25cIiAoY2xpY2spPVwiZmV0Y2hNZXNzYWdlSGlzdG9yeSh3aW5kb3cpXCI+e3tsb2NhbGl6YXRpb24ubG9hZE1lc3NhZ2VIaXN0b3J5UGxhY2Vob2xkZXJ9fTwvYT5cblx0XHRcdDwvZGl2PlxuXG5cdFx0XHQ8ZGl2ICpuZ0Zvcj1cImxldCBtZXNzYWdlIG9mIHdpbmRvdy5tZXNzYWdlczsgbGV0IGkgPSBpbmRleFwiIFtuZ0NsYXNzXT1cInsnbmctY2hhdC1tZXNzYWdlJzogdHJ1ZSwgJ25nLWNoYXQtbWVzc2FnZS1yZWNlaXZlZCc6IG1lc3NhZ2UuZnJvbUlkICE9PSB1c2VySWR9XCI+XG5cdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0F2YXRhclZpc2libGUod2luZG93LCBtZXNzYWdlLCBpKVwiPlxuXHRcdFx0XHRcdDxkaXYgKm5nSWY9XCIhZ2V0Q2hhdFdpbmRvd0F2YXRhcih3aW5kb3cucGFydGljaXBhbnQsIG1lc3NhZ2UpXCIgY2xhc3M9XCJpY29uLXdyYXBwZXJcIj5cblx0XHRcdFx0XHRcdDxpIGNsYXNzPVwidXNlci1pY29uXCI+PC9pPlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdDwhLS0gPGltZyAqbmdJZj1cImdldENoYXRXaW5kb3dBdmF0YXIod2luZG93LnBhcnRpY2lwYW50LCBtZXNzYWdlKVwiIGFsdD1cIlwiIGNsYXNzPVwiYXZhdGFyXCIgaGVpZ2h0PVwiMzBcIiB3aWR0aD1cIjMwXCIgW3NyY109XCJnZXRDaGF0V2luZG93QXZhdGFyKHdpbmRvdy5wYXJ0aWNpcGFudCwgbWVzc2FnZSkgfCBzYW5pdGl6ZVwiIC8+IC0tPlxuXHRcdFx0XHRcdDxzcGFuICpuZ0lmPVwid2luZG93LnBhcnRpY2lwYW50LnBhcnRpY2lwYW50VHlwZSA9PT0gQ2hhdFBhcnRpY2lwYW50VHlwZS5Hcm91cFwiIGNsYXNzPVwibmctY2hhdC1wYXJ0aWNpcGFudC1uYW1lXCI+e3t3aW5kb3cucGFydGljaXBhbnQgfCBncm91cE1lc3NhZ2VEaXNwbGF5TmFtZTptZXNzYWdlfX08L3NwYW4+XG5cdFx0XHRcdDwvbmctY29udGFpbmVyPlxuXHRcdFx0XHQ8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJtZXNzYWdlLnR5cGVcIj5cblx0XHRcdFx0XHQ8ZGl2ICpuZ1N3aXRjaENhc2U9XCJNZXNzYWdlVHlwZS5UZXh0XCIgW25nQ2xhc3NdPVwieydzZW50LWNoYXQtbWVzc2FnZS1jb250YWluZXInOiBtZXNzYWdlLmZyb21JZCA9PT0gdXNlcklkLCAncmVjZWl2ZWQtY2hhdC1tZXNzYWdlLWNvbnRhaW5lcic6IG1lc3NhZ2UuZnJvbUlkICE9PSB1c2VySWR9XCI+XG5cdFx0XHQgIFx0XHRcdDxzcGFuIFtpbm5lckh0bWxdPVwibWVzc2FnZS5tZXNzYWdlIHwgZW1vamlmeTplbW9qaXNFbmFibGVkIHwgbGlua2Z5OmxpbmtmeUVuYWJsZWRcIj48L3NwYW4+XG5cdFx0XHRcdFx0XHQ8c3BhbiAqbmdJZj1cInNob3dNZXNzYWdlRGF0ZSAmJiBtZXNzYWdlLmRhdGVTZW50XCIgY2xhc3M9XCJtZXNzYWdlLXNlbnQtZGF0ZVwiPnt7bWVzc2FnZS5kYXRlU2VudCB8IGRhdGU6J2RkJ319L3t7bWVzc2FnZS5kYXRlU2VudCB8IGRhdGU6J01NJ319L3t7bWVzc2FnZS5kYXRlU2VudCB8IGRhdGU6J3knfX0ge3ttZXNzYWdlLmRhdGVTZW50IHwgZGF0ZTonaDptbSBhICd9fTwvc3Bhbj5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHQ8ZGl2ICpuZ1N3aXRjaENhc2U9XCJNZXNzYWdlVHlwZS5JbWFnZVwiIFtuZ0NsYXNzXT1cInsnc2VudC1jaGF0LW1lc3NhZ2UtY29udGFpbmVyJzogbWVzc2FnZS5mcm9tSWQgPT09IHVzZXJJZCwgJ3JlY2VpdmVkLWNoYXQtbWVzc2FnZS1jb250YWluZXInOiBtZXNzYWdlLmZyb21JZCAhPT0gdXNlcklkfVwiPlxuXHRcblx0XHRcdCAgXHRcdFx0PGltZyBzcmM9XCJ7e21lc3NhZ2UubWVzc2FnZX19XCIgY2xhc3M9XCJpbWFnZS1tZXNzYWdlXCIgLz5cblx0XG5cdFx0XHRcdFx0XHQ8c3BhbiAqbmdJZj1cInNob3dNZXNzYWdlRGF0ZSAmJiBtZXNzYWdlLmRhdGVTZW50XCIgY2xhc3M9XCJtZXNzYWdlLXNlbnQtZGF0ZVwiPnt7bWVzc2FnZS5kYXRlU2VudCB8IGRhdGU6J2RkJ319L3t7bWVzc2FnZS5kYXRlU2VudCB8IGRhdGU6J01NJ319L3t7bWVzc2FnZS5kYXRlU2VudCB8IGRhdGU6J3knfX0ge3ttZXNzYWdlLmRhdGVTZW50IHwgZGF0ZTonaDptbSBhICd9fTwvc3Bhbj5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHQ8ZGl2ICpuZ1N3aXRjaENhc2U9XCJNZXNzYWdlVHlwZS5GaWxlXCIgW25nQ2xhc3NdPVwieydmaWxlLW1lc3NhZ2UtY29udGFpbmVyJzogdHJ1ZSwgJ3JlY2VpdmVkJzogbWVzc2FnZS5mcm9tSWQgIT09IHVzZXJJZH1cIj5cblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmaWxlLW1lc3NhZ2UtaWNvbi1jb250YWluZXJcIj5cblx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJwYXBlcmNsaXAtaWNvblwiPjwvaT5cblx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0PCEtLSA8YSBjbGFzcz1cImZpbGUtZGV0YWlsc1wiIFthdHRyLmhyZWZdPVwibWVzc2FnZS5kb3dubG9hZFVybFwiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIiAoY2xpY2spPVwidGhpcy5tYXJrTWVzc2FnZXNBc1JlYWQoW21lc3NhZ2VdKVwiIGRvd25sb2FkPlxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImZpbGUtbWVzc2FnZS10aXRsZVwiIFthdHRyLnRpdGxlXT1cIm1lc3NhZ2UubWVzc2FnZVwiPnt7bWVzc2FnZS5tZXNzYWdlfX08L3NwYW4+XG5cdFx0XHRcdFx0XHRcdDxzcGFuICpuZ0lmPVwibWVzc2FnZS5maWxlU2l6ZUluQnl0ZXNcIiAgY2xhc3M9XCJmaWxlLW1lc3NhZ2Utc2l6ZVwiPnt7bWVzc2FnZS5maWxlU2l6ZUluQnl0ZXN9fSBCeXRlczwvc3Bhbj5cblx0XHRcdFx0XHRcdDwvYT4gLS0+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdDwvbmctY29udGFpbmVyPlxuXHRcdFx0PC9kaXY+XG5cdDwvZGl2PlxuXG5cdDxkaXYgY2xhc3M9XCJuZy1jaGF0LWZvb3RlciBwcmltYXJ5LW91dGxpbmUtY29sb3IgcHJpbWFyeS1iYWNrZ3JvdW5kXCI+XG5cdFx0PGlucHV0ICNjaGF0V2luZG93SW5wdXRcblx0XHRcdHR5cGU9XCJ0ZXh0XCJcblx0XHRcdFtuZ01vZGVsXT1cIndpbmRvdy5uZXdNZXNzYWdlIHwgZW1vamlmeTplbW9qaXNFbmFibGVkXCJcblx0XHRcdChuZ01vZGVsQ2hhbmdlKT1cIndpbmRvdy5uZXdNZXNzYWdlPSRldmVudFwiXG5cdFx0XHRbcGxhY2Vob2xkZXJdPVwibG9jYWxpemF0aW9uLm1lc3NhZ2VQbGFjZWhvbGRlclwiXG5cdFx0XHRbbmdDbGFzc109XCJ7J2NoYXQtd2luZG93LWlucHV0JzogdHJ1ZSwgJ2hhcy1zaWRlLWFjdGlvbic6IGZpbGVVcGxvYWRBZGFwdGVyfVwiXG5cdFx0XHQoa2V5ZG93bik9XCJvbkNoYXRJbnB1dFR5cGVkKCRldmVudCwgd2luZG93KVwiXG5cdFx0XHQoYmx1cik9XCJ0b2dnbGVXaW5kb3dGb2N1cyh3aW5kb3cpXCJcblx0XHRcdChmb2N1cyk9XCJ0b2dnbGVXaW5kb3dGb2N1cyh3aW5kb3cpXCIvPlxuXG5cdFx0PCEtLSBGaWxlIFVwbG9hZCAtLT5cblx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsZVVwbG9hZEFkYXB0ZXJcIj5cblx0XHRcdDxhICpuZ0lmPVwiIWlzVXBsb2FkaW5nRmlsZSh3aW5kb3cpXCIgY2xhc3M9XCJidG4tYWRkLWZpbGVcIiAoY2xpY2spPVwidHJpZ2dlck5hdGl2ZUZpbGVVcGxvYWQod2luZG93KVwiPlxuXHRcdFx0XHQ8aSBjbGFzcz1cInVwbG9hZC1pY29uXCI+PC9pPlxuXHRcdFx0PC9hPlxuXHRcdFx0PGlucHV0XG5cdFx0XHRcdHR5cGU9XCJmaWxlXCJcblx0XHRcdFx0I25hdGl2ZUZpbGVJbnB1dFxuXHRcdFx0XHRzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCJcblx0XHRcdFx0W2F0dHIuaWRdPVwiZ2V0VW5pcXVlRmlsZVVwbG9hZEluc3RhbmNlSWQod2luZG93KVwiXG5cdFx0XHRcdChjaGFuZ2UpPVwib25GaWxlQ2hvc2VuKHdpbmRvdylcIiAvPlxuXHRcdFx0PGRpdiAqbmdJZj1cImlzVXBsb2FkaW5nRmlsZSh3aW5kb3cpXCIgY2xhc3M9XCJsb2FkZXJcIj48L2Rpdj5cblx0XHQ8L25nLWNvbnRhaW5lcj5cblx0PC9kaXY+XG48L25nLWNvbnRhaW5lcj4iXX0=
|
|
247
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctY2hhdC13aW5kb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC9zcmMvbGliL2NvbXBvbmVudHMvbmctY2hhdC13aW5kb3cvbmctY2hhdC13aW5kb3cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC9zcmMvbGliL2NvbXBvbmVudHMvbmctY2hhdC13aW5kb3cvbmctY2hhdC13aW5kb3cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFM0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBS25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRTVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7Ozs7OztBQVFoRyxNQUFNLE9BQU8scUJBQXFCO0lBQzlCO1FBa0JPLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBRzlCLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBRzlCLG9CQUFlLEdBQVksSUFBSSxDQUFDO1FBR2hDLDBCQUFxQixHQUFXLE9BQU8sQ0FBQztRQUd4QyxvQkFBZSxHQUFZLElBQUksQ0FBQztRQUdoQyx1QkFBa0IsR0FB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LFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYztnQkFDSyxlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFDRSxlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgVmlld0VuY2Fwc3VsYXRpb24sIFZpZXdDaGlsZCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWVzc2FnZSB9IGZyb20gXCIuLi8uLi9jb3JlL21lc3NhZ2VcIjtcbmltcG9ydCB7IE1lc3NhZ2VUeXBlIH0gZnJvbSBcIi4uLy4uL2NvcmUvbWVzc2FnZS10eXBlLmVudW1cIjtcbmltcG9ydCB7IFdpbmRvdyB9IGZyb20gXCIuLi8uLi9jb3JlL3dpbmRvd1wiO1xuaW1wb3J0IHsgQ2hhdFBhcnRpY2lwYW50U3RhdHVzIH0gZnJvbSBcIi4uLy4uL2NvcmUvY2hhdC1wYXJ0aWNpcGFudC1zdGF0dXMuZW51bVwiO1xuaW1wb3J0IHsgU2Nyb2xsRGlyZWN0aW9uIH0gZnJvbSBcIi4uLy4uL2NvcmUvc2Nyb2xsLWRpcmVjdGlvbi5lbnVtXCI7XG5pbXBvcnQgeyBMb2NhbGl6YXRpb24gfSBmcm9tICcuLi8uLi9jb3JlL2xvY2FsaXphdGlvbic7XG5pbXBvcnQgeyBJRmlsZVVwbG9hZEFkYXB0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL2ZpbGUtdXBsb2FkLWFkYXB0ZXInO1xuaW1wb3J0IHsgSUNoYXRPcHRpb24gfSBmcm9tICcuLi8uLi9jb3JlL2NoYXQtb3B0aW9uJztcbmltcG9ydCB7IEdyb3VwIH0gZnJvbSBcIi4uLy4uL2NvcmUvZ3JvdXBcIjtcbmltcG9ydCB7IENoYXRQYXJ0aWNpcGFudFR5cGUgfSBmcm9tIFwiLi4vLi4vY29yZS9jaGF0LXBhcnRpY2lwYW50LXR5cGUuZW51bVwiO1xuaW1wb3J0IHsgSUNoYXRQYXJ0aWNpcGFudCB9IGZyb20gXCIuLi8uLi9jb3JlL2NoYXQtcGFydGljaXBhbnRcIjtcbmltcG9ydCB7IE1lc3NhZ2VDb3VudGVyIH0gZnJvbSBcIi4uLy4uL2NvcmUvbWVzc2FnZS1jb3VudGVyXCI7XG5pbXBvcnQgeyBjaGF0UGFydGljaXBhbnRTdGF0dXNEZXNjcmlwdG9yIH0gZnJvbSAnLi4vLi4vY29yZS9jaGF0LXBhcnRpY2lwYW50LXN0YXR1cy1kZXNjcmlwdG9yJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZy1jaGF0LXdpbmRvdycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL25nLWNoYXQtd2luZG93LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9uZy1jaGF0LXdpbmRvdy5jb21wb25lbnQuY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBOZ0NoYXRXaW5kb3dDb21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmaWxlVXBsb2FkQWRhcHRlcjogSUZpbGVVcGxvYWRBZGFwdGVyO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgd2luZG93OiBXaW5kb3c7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB1c2VySWQ6IGFueTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGxvY2FsaXphdGlvbjogTG9jYWxpemF0aW9uO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd09wdGlvbnM6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBlbW9qaXNFbmFibGVkOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGxpbmtmeUVuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd01lc3NhZ2VEYXRlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1lc3NhZ2VEYXRlUGlwZUZvcm1hdDogc3RyaW5nID0gXCJzaG9ydFwiO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaGFzUGFnZWRIaXN0b3J5OiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvbkNoYXRXaW5kb3dDbG9zZWQ6IEV2ZW50RW1pdHRlcjx7IGNsb3NlZFdpbmRvdzogV2luZG93LCBjbG9zZWRWaWFFc2NhcGVLZXk6IGJvb2xlYW59PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvbk1lc3NhZ2VzU2VlbjogRXZlbnRFbWl0dGVyPE1lc3NhZ2VbXT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb25NZXNzYWdlU2VudDogRXZlbnRFbWl0dGVyPE1lc3NhZ2U+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9uVGFiVHJpZ2dlcmVkOiBFdmVudEVtaXR0ZXI8eyB0cmlnZ2VyaW5nV2luZG93OiBXaW5kb3csIHNoaWZ0S2V5UHJlc3NlZDogYm9vbGVhbiB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvbk9wdGlvblRyaWdnZXJlZDogRXZlbnRFbWl0dGVyPElDaGF0T3B0aW9uPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvbkxvYWRIaXN0b3J5VHJpZ2dlcmVkOiBFdmVudEVtaXR0ZXI8V2luZG93PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2NoYXRNZXNzYWdlcycpIGNoYXRNZXNzYWdlczogYW55O1xuICAgIEBWaWV3Q2hpbGQoJ25hdGl2ZUZpbGVJbnB1dCcpIG5hdGl2ZUZpbGVJbnB1dDogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdjaGF0V2luZG93SW5wdXQnKSBjaGF0V2luZG93SW5wdXQ6IGFueTtcblxuICAgIC8vIEZpbGUgdXBsb2FkIHN0YXRlXG4gICAgcHVibGljIGZpbGVVcGxvYWRlcnNJblVzZTogc3RyaW5nW10gPSBbXTsgLy8gSWQgYnVja2V0IG9mIHVwbG9hZGVycyBpbiB1c2VcblxuICAgIC8vIEV4cG9zZXMgZW51bXMgYW5kIGZ1bmN0aW9ucyBmb3IgdGhlIG5nLXRlbXBsYXRlXG4gICAgcHVibGljIENoYXRQYXJ0aWNpcGFudFR5cGUgPSBDaGF0UGFydGljaXBhbnRUeXBlO1xuICAgIHB1YmxpYyBDaGF0UGFydGljaXBhbnRTdGF0dXMgPSBDaGF0UGFydGljaXBhbnRTdGF0dXM7XG4gICAgcHVibGljIE1lc3NhZ2VUeXBlID0gTWVzc2FnZVR5cGU7XG4gICAgcHVibGljIGNoYXRQYXJ0aWNpcGFudFN0YXR1c0Rlc2NyaXB0b3IgPSBjaGF0UGFydGljaXBhbnRTdGF0dXNEZXNjcmlwdG9yO1xuXG4gICAgZGVmYXVsdFdpbmRvd09wdGlvbnMoY3VycmVudFdpbmRvdzogV2luZG93KTogSUNoYXRPcHRpb25bXVxuICAgIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvd09wdGlvbnMgJiYgY3VycmVudFdpbmRvdy5wYXJ0aWNpcGFudC5wYXJ0aWNpcGFudFR5cGUgPT0gQ2hhdFBhcnRpY2lwYW50VHlwZS5Vc2VyKVxuICAgICAgICB7XG4gICAgICAgICAgICByZXR1cm4gW3tcbiAgICAgICAgICAgICAgICBpc0FjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgY2hhdHRpbmdUbzogY3VycmVudFdpbmRvdyxcbiAgICAgICAgICAgICAgICB2YWxpZGF0ZUNvbnRleHQ6IChwYXJ0aWNpcGFudDogSUNoYXRQYXJ0aWNpcGFudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFydGljaXBhbnQucGFydGljaXBhbnRUeXBlID09IENoYXRQYXJ0aWNpcGFudFR5cGUuVXNlcjtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGRpc3BsYXlMYWJlbDogJ0FkZCBQZW9wbGUnIC8vIFRPRE86IExvY2FsaXplIHRoaXNcbiAgICAgICAgICAgIH1dO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIC8vIEFzc2VydHMgaWYgYSB1c2VyIGF2YXRhciBpcyB2aXNpYmxlIGluIGEgY2hhdCBjbHVzdGVyXG4gICAgaXNBdmF0YXJWaXNpYmxlKHdpbmRvdzogV2luZG93LCBtZXNzYWdlOiBNZXNzYWdlLCBpbmRleDogbnVtYmVyKTogYm9vbGVhblxuICAgIHtcbiAgICAgICAgaWYgKG1lc3NhZ2UuZnJvbUlkICE9IHRoaXMudXNlcklkKXtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PSAwKXtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gRmlyc3QgbWVzc2FnZSwgZ29vZCB0byBzaG93IHRoZSB0aHVtYm5haWxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHByZXZpb3VzIG1lc3NhZ2UgYmVsb25ncyB0byB0aGUgc2FtZSB1c2VyLCBpZiBpdCBiZWxvbmdzIHRoZXJlIGlzIG5vIG5lZWQgdG8gc2hvdyB0aGUgYXZhdGFyIGFnYWluIHRvIGZvcm0gdGhlIG1lc3NhZ2UgY2x1c3RlclxuICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubWVzc2FnZXNbaW5kZXggLSAxXS5mcm9tSWQgIT0gbWVzc2FnZS5mcm9tSWQpe1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0Q2hhdFdpbmRvd0F2YXRhcihwYXJ0aWNpcGFudDogSUNoYXRQYXJ0aWNpcGFudCwgbWVzc2FnZTogTWVzc2FnZSk6IHN0cmluZyB8IG51bGxcbiAgICB7XG4gICAgICAgIGlmIChwYXJ0aWNpcGFudC5wYXJ0aWNpcGFudFR5cGUgPT0gQ2hhdFBhcnRpY2lwYW50VHlwZS5Vc2VyKVxuICAgICAgICB7XG4gICAgICAgICAgICByZXR1cm4gcGFydGljaXBhbnQuYXZhdGFyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHBhcnRpY2lwYW50LnBhcnRpY2lwYW50VHlwZSA9PSBDaGF0UGFydGljaXBhbnRUeXBlLkdyb3VwKVxuICAgICAgICB7XG4gICAgICAgICAgICBsZXQgZ3JvdXAgPSBwYXJ0aWNpcGFudCBhcyBHcm91cDtcbiAgICAgICAgICAgIGxldCB1c2VySW5kZXggPSBncm91cC5jaGF0dGluZ1RvLmZpbmRJbmRleCh4ID0+IHguaWQgPT0gbWVzc2FnZS5mcm9tSWQpO1xuXG4gICAgICAgICAgICByZXR1cm4gZ3JvdXAuY2hhdHRpbmdUb1t1c2VySW5kZXggPj0gMCA/IHVzZXJJbmRleCA6IDBdLmF2YXRhcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlzVXBsb2FkaW5nRmlsZSh3aW5kb3c6IFdpbmRvdyk6IGJvb2xlYW5cbiAgICB7XG4gICAgICAgIGNvbnN0IGZpbGVVcGxvYWRJbnN0YW5jZUlkID0gdGhpcy5nZXRVbmlxdWVGaWxlVXBsb2FkSW5zdGFuY2VJZCh3aW5kb3cpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmZpbGVVcGxvYWRlcnNJblVzZS5pbmRleE9mKGZpbGVVcGxvYWRJbnN0YW5jZUlkKSA+IC0xO1xuICAgIH1cblxuICAgIC8vIEdlbmVyYXRlcyBhIHVuaXF1ZSBmaWxlIHVwbG9hZGVyIGlkIGZvciBlYWNoIHBhcnRpY2lwYW50XG4gICAgZ2V0VW5pcXVlRmlsZVVwbG9hZEluc3RhbmNlSWQod2luZG93OiBXaW5kb3cpOiBzdHJpbmdcbiAgICB7XG4gICAgICAgIGlmICh3aW5kb3cgJiYgd2luZG93LnBhcnRpY2lwYW50KVxuICAgICAgICB7XG4gICAgICAgICAgICByZXR1cm4gYG5nLWNoYXQtZmlsZS11cGxvYWQtJHt3aW5kb3cucGFydGljaXBhbnQuaWR9YDtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgcmV0dXJuICduZy1jaGF0LWZpbGUtdXBsb2FkJztcbiAgICB9XG5cbiAgICB1bnJlYWRNZXNzYWdlc1RvdGFsKHdpbmRvdzogV2luZG93KTogc3RyaW5nXG4gICAge1xuICAgICAgICByZXR1cm4gTWVzc2FnZUNvdW50ZXIudW5yZWFkTWVzc2FnZXNUb3RhbCh3aW5kb3csIHRoaXMudXNlcklkKTtcbiAgICB9XG5cbiAgICAvLyBTY3JvbGxzIGEgY2hhdCB3aW5kb3cgbWVzc2FnZSBmbG93IHRvIHRoZSBib3R0b21cbiAgICBzY3JvbGxDaGF0V2luZG93KHdpbmRvdzogV2luZG93LCBkaXJlY3Rpb246IFNjcm9sbERpcmVjdGlvbik6IHZvaWRcbiAgICB7XG4gICAgICAgIGlmICghd2luZG93LmlzQ29sbGFwc2VkKXtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNoYXRNZXNzYWdlcyl7XG4gICAgICAgICAgICAgICAgICAgIGxldCBlbGVtZW50ID0gdGhpcy5jaGF0TWVzc2FnZXMubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvc2l0aW9uID0gKCBkaXJlY3Rpb24gPT09IFNjcm9sbERpcmVjdGlvbi5Ub3AgKSA/IDAgOiBlbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zY3JvbGxUb3AgPSBwb3NpdGlvbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFjdGl2ZU9wdGlvblRyYWNrZXJDaGFuZ2Uob3B0aW9uOiBJQ2hhdE9wdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9uT3B0aW9uVHJpZ2dlcmVkLmVtaXQob3B0aW9uKTtcbiAgICB9XG5cbiAgICAvLyBUcmlnZ2VycyBuYXRpdmUgZmlsZSB1cGxvYWQgZm9yIGZpbGUgc2VsZWN0aW9uIGZyb20gdGhlIHVzZXJcbiAgICB0cmlnZ2VyTmF0aXZlRmlsZVVwbG9hZCh3aW5kb3c6IFdpbmRvdyk6IHZvaWRcbiAgICB7XG4gICAgICAgIGlmICh3aW5kb3cpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm5hdGl2ZUZpbGVJbnB1dCkgdGhpcy5uYXRpdmVGaWxlSW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVG9nZ2xlcyBhIHdpbmRvdyBmb2N1cyBvbiB0aGUgZm9jdXMvYmx1ciBvZiBhICduZXdNZXNzYWdlJyBpbnB1dFxuICAgIHRvZ2dsZVdpbmRvd0ZvY3VzKHdpbmRvdzogV2luZG93KTogdm9pZFxuICAgIHtcbiAgICAgICAgd2luZG93Lmhhc0ZvY3VzID0gIXdpbmRvdy5oYXNGb2N1cztcbiAgICAgICAgaWYod2luZG93Lmhhc0ZvY3VzKSB7XG4gICAgICAgICAgICBjb25zdCB1bnJlYWRNZXNzYWdlcyA9IHdpbmRvdy5tZXNzYWdlc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIobWVzc2FnZSA9PiBtZXNzYWdlLmRhdGVTZWVuID09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgJiYgKG1lc3NhZ2UudG9JZCA9PSB0aGlzLnVzZXJJZCB8fCB3aW5kb3cucGFydGljaXBhbnQucGFydGljaXBhbnRUeXBlID09PSBDaGF0UGFydGljaXBhbnRUeXBlLkdyb3VwKSk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmICh1bnJlYWRNZXNzYWdlcyAmJiB1bnJlYWRNZXNzYWdlcy5sZW5ndGggPiAwKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRoaXMub25NZXNzYWdlc1NlZW4uZW1pdCh1bnJlYWRNZXNzYWdlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtYXJrTWVzc2FnZXNBc1JlYWQobWVzc2FnZXM6IE1lc3NhZ2VbXSk6IHZvaWRcbiAgICB7XG4gICAgICAgIHRoaXMub25NZXNzYWdlc1NlZW4uZW1pdChtZXNzYWdlcyk7XG4gICAgfVxuXG4gICAgZmV0Y2hNZXNzYWdlSGlzdG9yeSh3aW5kb3c6IFdpbmRvdyk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTG9hZEhpc3RvcnlUcmlnZ2VyZWQuZW1pdCh3aW5kb3cpO1xuICAgIH1cblxuICAgIC8vIENsb3NlcyBhIGNoYXQgd2luZG93IHZpYSB0aGUgY2xvc2UgJ1gnIGJ1dHRvblxuICAgIG9uQ2xvc2VDaGF0V2luZG93KCk6IHZvaWRcbiAgICB7XG4gICAgICAgIHRoaXMub25DaGF0V2luZG93Q2xvc2VkLmVtaXQoeyBjbG9zZWRXaW5kb3c6IHRoaXMud2luZG93LCBjbG9zZWRWaWFFc2NhcGVLZXk6IGZhbHNlIH0pO1xuICAgIH1cblxuICAgIC8qICBNb25pdG9ycyBwcmVzc2VkIGtleXMgb24gYSBjaGF0IHdpbmRvd1xuICAgICAgICAtIERpc3BhdGNoZXMgYSBtZXNzYWdlIHdoZW4gdGhlIEVOVEVSIGtleSBpcyBwcmVzc2VkXG4gICAgICAgIC0gVGFicyBiZXR3ZWVuIHdpbmRvd3Mgb24gVEFCIG9yIFNISUZUICsgVEFCXG4gICAgICAgIC0gQ2xvc2VzIHRoZSBjdXJyZW50IGZvY3VzZWQgd2luZG93IG9uIEVTQ1xuICAgICovXG4gICBvbkNoYXRJbnB1dFR5cGVkKGV2ZW50OiBhbnksIHdpbmRvdzogV2luZG93KTogdm9pZFxuICAge1xuICAgICAgIHN3aXRjaCAoZXZlbnQua2V5Q29kZSlcbiAgICAgICB7XG4gICAgICAgICAgIGNhc2UgMTM6XG4gICAgICAgICAgICAgICBpZiAod2luZG93Lm5ld01lc3NhZ2UgJiYgd2luZG93Lm5ld01lc3NhZ2UudHJpbSgpICE9IFwiXCIpXG4gICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSBuZXcgTWVzc2FnZSgpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgbWVzc2FnZS5mcm9tSWQgPSB0aGlzLnVzZXJJZDtcbiAgICAgICAgICAgICAgICAgICBtZXNzYWdlLnRvSWQgPSB3aW5kb3cucGFydGljaXBhbnQuaWQ7XG4gICAgICAgICAgICAgICAgICAgbWVzc2FnZS5tZXNzYWdlID0gd2luZG93Lm5ld01lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgbWVzc2FnZS5kYXRlU2VudCA9IG5ldyBEYXRlKCk7XG4gICAgICAgXG4gICAgICAgICAgICAgICAgICAgd2luZG93Lm1lc3NhZ2VzLnB1c2gobWVzc2FnZSk7XG4gICAgICAgXG4gICAgICAgICAgICAgICAgICAgdGhpcy5vbk1lc3NhZ2VTZW50LmVtaXQobWVzc2FnZSk7XG4gICAgICAgXG4gICAgICAgICAgICAgICAgICAgd2luZG93Lm5ld01lc3NhZ2UgPSBcIlwiOyAvLyBSZXNldHMgdGhlIG5ldyBtZXNzYWdlIGlucHV0XG4gICAgICAgXG4gICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxDaGF0V2luZG93KHdpbmRvdywgU2Nyb2xsRGlyZWN0aW9uLkJvdHRvbSk7XG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgY2FzZSA5OlxuICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgICAgdGhpcy5vblRhYlRyaWdnZXJlZC5lbWl0KHsgdHJpZ2dlcmluZ1dpbmRvdzogd2luZG93LCBzaGlmdEtleVByZXNzZWQ6IGV2ZW50LnNoaWZ0S2V5IH0pO1xuXG4gICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgY2FzZSAyNzpcbiAgICAgICAgICAgICAgIHRoaXMub25DaGF0V2luZG93Q2xvc2VkLmVtaXQoeyBjbG9zZWRXaW5kb3c6IHdpbmRvdywgY2xvc2VkVmlhRXNjYXBlS2V5OiB0cnVlIH0pO1xuXG4gICAgICAgICAgICAgICBicmVhaztcbiAgICAgICB9XG4gICB9XG5cbiAgICAvLyBUb2dnbGVzIGEgY2hhdCB3aW5kb3cgdmlzaWJpbGl0eSBiZXR3ZWVuIG1heGltaXplZC9taW5pbWl6ZWRcbiAgICBvbkNoYXRXaW5kb3dDbGlja2VkKHdpbmRvdzogV2luZG93KTogdm9pZFxuICAgIHtcbiAgICAgICAgd2luZG93LmlzQ29sbGFwc2VkID0gIXdpbmRvdy5pc0NvbGxhcHNlZDtcbiAgICAgICAgdGhpcy5zY3JvbGxDaGF0V2luZG93KHdpbmRvdywgU2Nyb2xsRGlyZWN0aW9uLkJvdHRvbSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGVhckluVXNlRmlsZVVwbG9hZGVyKGZpbGVVcGxvYWRJbnN0YW5jZUlkOiBzdHJpbmcpOiB2b2lkXG4gICAge1xuICAgICAgICBjb25zdCB1cGxvYWRlckluc3RhbmNlSWRJbmRleCA9IHRoaXMuZmlsZVVwbG9hZGVyc0luVXNlLmluZGV4T2YoZmlsZVVwbG9hZEluc3RhbmNlSWQpO1xuXG4gICAgICAgIGlmICh1cGxvYWRlckluc3RhbmNlSWRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVVcGxvYWRlcnNJblVzZS5zcGxpY2UodXBsb2FkZXJJbnN0YW5jZUlkSW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlcyBmaWxlIHNlbGVjdGlvbiBhbmQgdXBsb2FkcyB0aGUgc2VsZWN0ZWQgZmlsZSB1c2luZyB0aGUgZmlsZSB1cGxvYWQgYWRhcHRlclxuICAgIG9uRmlsZUNob3Nlbih3aW5kb3c6IFdpbmRvdyk6IHZvaWQge1xuICAgICAgICBjb25zdCBmaWxlVXBsb2FkSW5zdGFuY2VJZCA9IHRoaXMuZ2V0VW5pcXVlRmlsZVVwbG9hZEluc3RhbmNlSWQod2luZG93KTtcbiAgICAgICAgY29uc3QgdXBsb2FkRWxlbWVudFJlZiA9IHRoaXMubmF0aXZlRmlsZUlucHV0O1xuXG4gICAgICAgIGlmICh1cGxvYWRFbGVtZW50UmVmKVxuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBmaWxlOiBGaWxlID0gdXBsb2FkRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZpbGVzWzBdO1xuXG4gICAgICAgICAgICB0aGlzLmZpbGVVcGxvYWRlcnNJblVzZS5wdXNoKGZpbGVVcGxvYWRJbnN0YW5jZUlkKTtcblxuICAgICAgICAgICAgdGhpcy5maWxlVXBsb2FkQWRhcHRlci51cGxvYWRGaWxlKGZpbGUsIHdpbmRvdy5wYXJ0aWNpcGFudC5pZClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKGZpbGVNZXNzYWdlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhckluVXNlRmlsZVVwbG9hZGVyKGZpbGVVcGxvYWRJbnN0YW5jZUlkKTtcblxuICAgICAgICAgICAgICAgICAgICBmaWxlTWVzc2FnZS5mcm9tSWQgPSB0aGlzLnVzZXJJZDtcblxuICAgICAgICAgICAgICAgICAgICAvLyBQdXNoIGZpbGUgbWVzc2FnZSB0byBjdXJyZW50IHVzZXIgd2luZG93XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5tZXNzYWdlcy5wdXNoKGZpbGVNZXNzYWdlKTtcbiAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25NZXNzYWdlU2VudC5lbWl0KGZpbGVNZXNzYWdlKTtcbiAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsQ2hhdFdpbmRvdyh3aW5kb3csIFNjcm9sbERpcmVjdGlvbi5Cb3R0b20pO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIFJlc2V0cyB0aGUgZmlsZSB1cGxvYWQgZWxlbWVudFxuICAgICAgICAgICAgICAgICAgICB1cGxvYWRFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhckluVXNlRmlsZVVwbG9hZGVyKGZpbGVVcGxvYWRJbnN0YW5jZUlkKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBSZXNldHMgdGhlIGZpbGUgdXBsb2FkIGVsZW1lbnRcbiAgICAgICAgICAgICAgICAgICAgdXBsb2FkRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogSW52b2tlIGEgZmlsZSB1cGxvYWQgYWRhcHRlciBlcnJvciBoZXJlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qIGVzbGludC1lbmFibGUgKi8iLCI8bmctY29udGFpbmVyICpuZ0lmPVwid2luZG93ICYmIHdpbmRvdy5pc0NvbGxhcHNlZFwiPlxuXHQ8ZGl2IGNsYXNzPVwibmctY2hhdC10aXRsZSBzZWNvbmRhcnktYmFja2dyb3VuZFwiPlxuXHRcdDxkaXYgY2xhc3M9XCJuZy1jaGF0LXRpdGxlLXZpc2liaWxpdHktdG9nZ2xlLWFyZWFcIiAoY2xpY2spPVwib25DaGF0V2luZG93Q2xpY2tlZCh3aW5kb3cpXCI+XG5cdFx0XHQ8c3Ryb25nIHRpdGxlPVwie3t3aW5kb3cucGFydGljaXBhbnQuZGlzcGxheU5hbWV9fVwiPlxuXHRcdFx0XHR7e3dpbmRvdy5wYXJ0aWNpcGFudC5kaXNwbGF5TmFtZX19XG5cdFx0XHQ8L3N0cm9uZz5cblx0XHRcdDxzcGFuIFtuZ0NsYXNzXT1cInsnbmctY2hhdC1wYXJ0aWNpcGFudC1zdGF0dXMnOiB0cnVlLCAnb25saW5lJzogd2luZG93LnBhcnRpY2lwYW50LnN0YXR1cyA9PT0gQ2hhdFBhcnRpY2lwYW50U3RhdHVzLk9ubGluZSwgJ2J1c3knOiB3aW5kb3cucGFydGljaXBhbnQuc3RhdHVzID09PSBDaGF0UGFydGljaXBhbnRTdGF0dXMuQnVzeSwgJ2F3YXknOiB3aW5kb3cucGFydGljaXBhbnQuc3RhdHVzID09PSBDaGF0UGFydGljaXBhbnRTdGF0dXMuQXdheSwgJ29mZmxpbmUnOiB3aW5kb3cucGFydGljaXBhbnQuc3RhdHVzID09PSBDaGF0UGFydGljaXBhbnRTdGF0dXMuT2ZmbGluZX1cIiB0aXRsZT1cInt7Y2hhdFBhcnRpY2lwYW50U3RhdHVzRGVzY3JpcHRvcih3aW5kb3cucGFydGljaXBhbnQuc3RhdHVzLCBsb2NhbGl6YXRpb24pfX1cIj48L3NwYW4+XG5cdFx0XHQ8c3BhbiAqbmdJZj1cInVucmVhZE1lc3NhZ2VzVG90YWwod2luZG93KS5sZW5ndGggPiAwXCIgY2xhc3M9XCJuZy1jaGF0LXVucmVhZC1tZXNzYWdlcy1jb3VudCB1bnJlYWQtbWVzc2FnZXMtY291bnRlci1jb250YWluZXIgcHJpbWFyeS10ZXh0XCI+e3t1bnJlYWRNZXNzYWdlc1RvdGFsKHdpbmRvdyl9fTwvc3Bhbj5cblx0XHQ8L2Rpdj5cblx0XHQ8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIGNsYXNzPVwibmctY2hhdC1jbG9zZSBwcmltYXJ5LXRleHRcIiAoY2xpY2spPVwib25DbG9zZUNoYXRXaW5kb3coKVwiPiYjeDI3MTU7PC9hPlxuXHQ8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIndpbmRvdyAmJiAhd2luZG93LmlzQ29sbGFwc2VkXCI+ICBcblx0PGRpdiBjbGFzcz1cIm5nLWNoYXQtdGl0bGUgc2Vjb25kYXJ5LWJhY2tncm91bmRcIj5cblx0XHQ8ZGl2IGNsYXNzPVwibmctY2hhdC10aXRsZS12aXNpYmlsaXR5LXRvZ2dsZS1hcmVhXCIgKGNsaWNrKT1cIm9uQ2hhdFdpbmRvd0NsaWNrZWQod2luZG93KVwiPlxuXHRcdFx0PHN0cm9uZyB0aXRsZT1cInt7d2luZG93LnBhcnRpY2lwYW50LmRpc3BsYXlOYW1lfX1cIj5cblx0XHRcdFx0e3t3aW5kb3cucGFydGljaXBhbnQuZGlzcGxheU5hbWV9fVxuXHRcdFx0PC9zdHJvbmc+XG5cdFx0XHQ8c3BhbiBbbmdDbGFzc109XCJ7J25nLWNoYXQtcGFydGljaXBhbnQtc3RhdHVzJzogdHJ1ZSwgJ29ubGluZSc6IHdpbmRvdy5wYXJ0aWNpcGFudC5zdGF0dXMgPT09IENoYXRQYXJ0aWNpcGFudFN0YXR1cy5PbmxpbmUsICdidXN5Jzogd2luZG93LnBhcnRpY2lwYW50LnN0YXR1cyA9PT0gQ2hhdFBhcnRpY2lwYW50U3RhdHVzLkJ1c3ksICdhd2F5Jzogd2luZG93LnBhcnRpY2lwYW50LnN0YXR1cyA9PT0gQ2hhdFBhcnRpY2lwYW50U3RhdHVzLkF3YXksICdvZmZsaW5lJzogd2luZG93LnBhcnRpY2lwYW50LnN0YXR1cyA9PT0gQ2hhdFBhcnRpY2lwYW50U3RhdHVzLk9mZmxpbmV9XCIgdGl0bGU9XCJ7e2NoYXRQYXJ0aWNpcGFudFN0YXR1c0Rlc2NyaXB0b3Iod2luZG93LnBhcnRpY2lwYW50LnN0YXR1cywgbG9jYWxpemF0aW9uKX19XCI+PC9zcGFuPlxuXHRcdFx0PHNwYW4gKm5nSWY9XCJ1bnJlYWRNZXNzYWdlc1RvdGFsKHdpbmRvdykubGVuZ3RoID4gMFwiIGNsYXNzPVwibmctY2hhdC11bnJlYWQtbWVzc2FnZXMtY291bnQgdW5yZWFkLW1lc3NhZ2VzLWNvdW50ZXItY29udGFpbmVyIHByaW1hcnktdGV4dFwiPnt7dW5yZWFkTWVzc2FnZXNUb3RhbCh3aW5kb3cpfX08L3NwYW4+XG5cdFx0PC9kaXY+XG5cdFx0PGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIiBjbGFzcz1cIm5nLWNoYXQtY2xvc2UgcHJpbWFyeS10ZXh0XCIgKGNsaWNrKT1cIm9uQ2xvc2VDaGF0V2luZG93KClcIj4mI3gyNzE1OzwvYT5cblx0XHQ8IS0tIDxuZy1jaGF0LW9wdGlvbnMgW25nQ2xhc3NdPVwiJ25nLWNoYXQtb3B0aW9ucy1jb250YWluZXInXCIgW29wdGlvbnNdPVwiZGVmYXVsdFdpbmRvd09wdGlvbnMod2luZG93KVwiIChhY3RpdmVPcHRpb25UcmFja2VyQ2hhbmdlKT1cImFjdGl2ZU9wdGlvblRyYWNrZXJDaGFuZ2UoJGV2ZW50KVwiPjwvbmctY2hhdC1vcHRpb25zPiAtLT5cblx0PC9kaXY+XG5cdFx0PGRpdiAjY2hhdE1lc3NhZ2VzIGNsYXNzPVwibmctY2hhdC1tZXNzYWdlcyBwcmltYXJ5LWJhY2tncm91bmRcIj5cblx0XHRcdDxkaXYgKm5nSWY9XCJ3aW5kb3cuaXNMb2FkaW5nSGlzdG9yeVwiIGNsYXNzPVwibmctY2hhdC1sb2FkaW5nLXdyYXBwZXJcIj5cblx0XHRcdFx0PGRpdiBjbGFzcz1cImxvYWRlclwiPkxvYWRpbmcgaGlzdG9yeS4uLjwvZGl2PlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8ZGl2ICpuZ0lmPVwiaGFzUGFnZWRIaXN0b3J5ICYmIHdpbmRvdy5oYXNNb3JlTWVzc2FnZXMgJiYgIXdpbmRvdy5pc0xvYWRpbmdIaXN0b3J5XCIgY2xhc3M9XCJuZy1jaGF0LWxvYWQtaGlzdG9yeVwiPlxuXHRcdFx0XHQ8YSBjbGFzcz1cImxvYWQtaGlzdG9yeS1hY3Rpb25cIiAoY2xpY2spPVwiZmV0Y2hNZXNzYWdlSGlzdG9yeSh3aW5kb3cpXCI+e3tsb2NhbGl6YXRpb24ubG9hZE1lc3NhZ2VIaXN0b3J5UGxhY2Vob2xkZXJ9fTwvYT5cblx0XHRcdDwvZGl2PlxuXG5cdFx0XHQ8ZGl2ICpuZ0Zvcj1cImxldCBtZXNzYWdlIG9mIHdpbmRvdy5tZXNzYWdlczsgbGV0IGkgPSBpbmRleFwiIFtuZ0NsYXNzXT1cInsnbmctY2hhdC1tZXNzYWdlJzogdHJ1ZSwgJ25nLWNoYXQtbWVzc2FnZS1yZWNlaXZlZCc6IG1lc3NhZ2UuZnJvbUlkICE9PSB1c2VySWR9XCI+XG5cdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0F2YXRhclZpc2libGUod2luZG93LCBtZXNzYWdlLCBpKVwiPlxuXHRcdFx0XHRcdDxkaXYgKm5nSWY9XCIhZ2V0Q2hhdFdpbmRvd0F2YXRhcih3aW5kb3cucGFydGljaXBhbnQsIG1lc3NhZ2UpXCIgY2xhc3M9XCJpY29uLXdyYXBwZXJcIj5cblx0XHRcdFx0XHRcdDxpIGNsYXNzPVwidXNlci1pY29uXCI+PC9pPlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdDwhLS0gPGltZyAqbmdJZj1cImdldENoYXRXaW5kb3dBdmF0YXIod2luZG93LnBhcnRpY2lwYW50LCBtZXNzYWdlKVwiIGFsdD1cIlwiIGNsYXNzPVwiYXZhdGFyXCIgaGVpZ2h0PVwiMzBcIiB3aWR0aD1cIjMwXCIgW3NyY109XCJnZXRDaGF0V2luZG93QXZhdGFyKHdpbmRvdy5wYXJ0aWNpcGFudCwgbWVzc2FnZSkgfCBzYW5pdGl6ZVwiIC8+IC0tPlxuXHRcdFx0XHRcdDxzcGFuICpuZ0lmPVwid2luZG93LnBhcnRpY2lwYW50LnBhcnRpY2lwYW50VHlwZSA9PT0gQ2hhdFBhcnRpY2lwYW50VHlwZS5Hcm91cFwiIGNsYXNzPVwibmctY2hhdC1wYXJ0aWNpcGFudC1uYW1lXCI+e3t3aW5kb3cucGFydGljaXBhbnQgfCBncm91cE1lc3NhZ2VEaXNwbGF5TmFtZTptZXNzYWdlfX08L3NwYW4+XG5cdFx0XHRcdDwvbmctY29udGFpbmVyPlxuXHRcdFx0XHQ8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJtZXNzYWdlLnR5cGVcIj5cblx0XHRcdFx0XHQ8ZGl2ICpuZ1N3aXRjaENhc2U9XCJNZXNzYWdlVHlwZS5UZXh0XCIgW25nQ2xhc3NdPVwieydzZW50LWNoYXQtbWVzc2FnZS1jb250YWluZXInOiBtZXNzYWdlLmZyb21JZCA9PT0gdXNlcklkLCAncmVjZWl2ZWQtY2hhdC1tZXNzYWdlLWNvbnRhaW5lcic6IG1lc3NhZ2UuZnJvbUlkICE9PSB1c2VySWR9XCI+XG5cdFx0XHQgIFx0XHRcdDxzcGFuIFtpbm5lckh0bWxdPVwibWVzc2FnZS5tZXNzYWdlIHwgZW1vamlmeTplbW9qaXNFbmFibGVkIHwgbGlua2Z5OmxpbmtmeUVuYWJsZWRcIj48L3NwYW4+XG5cdFx0XHRcdFx0XHQ8c3BhbiAqbmdJZj1cInNob3dNZXNzYWdlRGF0ZSAmJiBtZXNzYWdlLmRhdGVTZW50XCIgY2xhc3M9XCJtZXNzYWdlLXNlbnQtZGF0ZVwiPnt7bWVzc2FnZS5kYXRlU2VudCB8IGRhdGU6J2RkJ319L3t7bWVzc2FnZS5kYXRlU2VudCB8IGRhdGU6J01NJ319L3t7bWVzc2FnZS5kYXRlU2VudCB8IGRhdGU6J3knfX0ge3ttZXNzYWdlLmRhdGVTZW50IHwgZGF0ZTonaDptbSBhICd9fTwvc3Bhbj5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHQ8ZGl2ICpuZ1N3aXRjaENhc2U9XCJNZXNzYWdlVHlwZS5JbWFnZVwiIFtuZ0NsYXNzXT1cInsnc2VudC1jaGF0LW1lc3NhZ2UtY29udGFpbmVyJzogbWVzc2FnZS5mcm9tSWQgPT09IHVzZXJJZCwgJ3JlY2VpdmVkLWNoYXQtbWVzc2FnZS1jb250YWluZXInOiBtZXNzYWdlLmZyb21JZCAhPT0gdXNlcklkfVwiPlxuXHRcblx0XHRcdCAgXHRcdFx0PGltZyBzcmM9XCJ7e21lc3NhZ2UubWVzc2FnZX19XCIgY2xhc3M9XCJpbWFnZS1tZXNzYWdlXCIgLz5cblx0XG5cdFx0XHRcdFx0XHQ8c3BhbiAqbmdJZj1cInNob3dNZXNzYWdlRGF0ZSAmJiBtZXNzYWdlLmRhdGVTZW50XCIgY2xhc3M9XCJtZXNzYWdlLXNlbnQtZGF0ZVwiPnt7bWVzc2FnZS5kYXRlU2VudCB8IGRhdGU6J2RkJ319L3t7bWVzc2FnZS5kYXRlU2VudCB8IGRhdGU6J01NJ319L3t7bWVzc2FnZS5kYXRlU2VudCB8IGRhdGU6J3knfX0ge3ttZXNzYWdlLmRhdGVTZW50IHwgZGF0ZTonaDptbSBhICd9fTwvc3Bhbj5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHQ8ZGl2ICpuZ1N3aXRjaENhc2U9XCJNZXNzYWdlVHlwZS5GaWxlXCIgW25nQ2xhc3NdPVwieydmaWxlLW1lc3NhZ2UtY29udGFpbmVyJzogdHJ1ZSwgJ3JlY2VpdmVkJzogbWVzc2FnZS5mcm9tSWQgIT09IHVzZXJJZH1cIj5cblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmaWxlLW1lc3NhZ2UtaWNvbi1jb250YWluZXJcIj5cblx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJwYXBlcmNsaXAtaWNvblwiPjwvaT5cblx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0PCEtLSA8YSBjbGFzcz1cImZpbGUtZGV0YWlsc1wiIFthdHRyLmhyZWZdPVwibWVzc2FnZS5kb3dubG9hZFVybFwiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIiAoY2xpY2spPVwidGhpcy5tYXJrTWVzc2FnZXNBc1JlYWQoW21lc3NhZ2VdKVwiIGRvd25sb2FkPlxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImZpbGUtbWVzc2FnZS10aXRsZVwiIFthdHRyLnRpdGxlXT1cIm1lc3NhZ2UubWVzc2FnZVwiPnt7bWVzc2FnZS5tZXNzYWdlfX08L3NwYW4+XG5cdFx0XHRcdFx0XHRcdDxzcGFuICpuZ0lmPVwibWVzc2FnZS5maWxlU2l6ZUluQnl0ZXNcIiAgY2xhc3M9XCJmaWxlLW1lc3NhZ2Utc2l6ZVwiPnt7bWVzc2FnZS5maWxlU2l6ZUluQnl0ZXN9fSBCeXRlczwvc3Bhbj5cblx0XHRcdFx0XHRcdDwvYT4gLS0+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdDwvbmctY29udGFpbmVyPlxuXHRcdFx0PC9kaXY+XG5cdDwvZGl2PlxuXG5cdDxkaXYgY2xhc3M9XCJuZy1jaGF0LWZvb3RlciBwcmltYXJ5LW91dGxpbmUtY29sb3IgcHJpbWFyeS1iYWNrZ3JvdW5kXCI+XG5cdFx0PGlucHV0ICNjaGF0V2luZG93SW5wdXRcblx0XHRcdHR5cGU9XCJ0ZXh0XCJcblx0XHRcdFtuZ01vZGVsXT1cIndpbmRvdy5uZXdNZXNzYWdlIHwgZW1vamlmeTplbW9qaXNFbmFibGVkXCJcblx0XHRcdChuZ01vZGVsQ2hhbmdlKT1cIndpbmRvdy5uZXdNZXNzYWdlPSRldmVudFwiXG5cdFx0XHRbcGxhY2Vob2xkZXJdPVwibG9jYWxpemF0aW9uLm1lc3NhZ2VQbGFjZWhvbGRlclwiXG5cdFx0XHRbbmdDbGFzc109XCJ7J2NoYXQtd2luZG93LWlucHV0JzogdHJ1ZSwgJ2hhcy1zaWRlLWFjdGlvbic6IGZpbGVVcGxvYWRBZGFwdGVyfVwiXG5cdFx0XHQoa2V5ZG93bik9XCJvbkNoYXRJbnB1dFR5cGVkKCRldmVudCwgd2luZG93KVwiXG5cdFx0XHQoYmx1cik9XCJ0b2dnbGVXaW5kb3dGb2N1cyh3aW5kb3cpXCJcblx0XHRcdChmb2N1cyk9XCJ0b2dnbGVXaW5kb3dGb2N1cyh3aW5kb3cpXCIvPlxuXG5cdFx0PCEtLSBGaWxlIFVwbG9hZCAtLT5cblx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsZVVwbG9hZEFkYXB0ZXJcIj5cblx0XHRcdDxhICpuZ0lmPVwiIWlzVXBsb2FkaW5nRmlsZSh3aW5kb3cpXCIgY2xhc3M9XCJidG4tYWRkLWZpbGVcIiAoY2xpY2spPVwidHJpZ2dlck5hdGl2ZUZpbGVVcGxvYWQod2luZG93KVwiPlxuXHRcdFx0XHQ8aSBjbGFzcz1cInVwbG9hZC1pY29uXCI+PC9pPlxuXHRcdFx0PC9hPlxuXHRcdFx0PGlucHV0XG5cdFx0XHRcdHR5cGU9XCJmaWxlXCJcblx0XHRcdFx0I25hdGl2ZUZpbGVJbnB1dFxuXHRcdFx0XHRzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCJcblx0XHRcdFx0W2F0dHIuaWRdPVwiZ2V0VW5pcXVlRmlsZVVwbG9hZEluc3RhbmNlSWQod2luZG93KVwiXG5cdFx0XHRcdChjaGFuZ2UpPVwib25GaWxlQ2hvc2VuKHdpbmRvdylcIiAvPlxuXHRcdFx0PGRpdiAqbmdJZj1cImlzVXBsb2FkaW5nRmlsZSh3aW5kb3cpXCIgY2xhc3M9XCJsb2FkZXJcIj48L2Rpdj5cblx0XHQ8L25nLWNvbnRhaW5lcj5cblx0PC9kaXY+XG48L25nLWNvbnRhaW5lcj4iXX0=
|
|
@@ -22,4 +22,4 @@ export class MessageCounter {
|
|
|
22
22
|
return MessageCounter.formatUnreadMessagesTotal(totalUnreadMessages);
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1jb3VudGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC9zcmMvbGliL2NvcmUvbWVzc2FnZS1jb3VudGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxjQUFjO0lBRWhCLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxtQkFBMkI7UUFFL0QsSUFBSSxtQkFBbUIsR0FBRyxDQUFDLEVBQUMsQ0FBQztZQUV6QixJQUFJLG1CQUFtQixHQUFHLEVBQUU7Z0JBQ3hCLE9BQVEsS0FBSyxDQUFDOztnQkFFZCxPQUFPLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzNDLENBQUM7UUFFRCxrQkFBa0I7UUFDbEIsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxNQUFjLEVBQUUsYUFBa0I7UUFFaEUsSUFBSSxtQkFBbUIsR0FBRyxDQUFDLENBQUM7UUFFNUIsSUFBSSxNQUFNLEVBQUMsQ0FBQztZQUNSLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxhQUFhLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ3ZHLENBQUM7UUFFRCxPQUFPLGNBQWMsQ0FBQyx5QkFBeUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdpbmRvdyB9IGZyb20gJy4vd2luZG93JztcblxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VDb3VudGVyXG57XG4gICAgcHVibGljIHN0YXRpYyBmb3JtYXRVbnJlYWRNZXNzYWdlc1RvdGFsKHRvdGFsVW5yZWFkTWVzc2FnZXM6IG51bWJlcik6IHN0cmluZ1xuICAgIHtcbiAgICAgICAgaWYgKHRvdGFsVW5yZWFkTWVzc2FnZXMgPiAwKXtcblxuICAgICAgICAgICAgaWYgKHRvdGFsVW5yZWFkTWVzc2FnZXMgPiA5OSlcbiAgICAgICAgICAgICAgICByZXR1cm4gIFwiOTkrXCI7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZyh0b3RhbFVucmVhZE1lc3NhZ2VzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEVtcHR5IGZhbGxiYWNrLlxuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgZm9ybWF0dGVkIHN0cmluZyBjb250YWluaW5nIHRoZSB0b3RhbCB1bnJlYWQgbWVzc2FnZXMgb2YgYSBjaGF0IHdpbmRvdy5cbiAgICAgKiBAcGFyYW0gd2luZG93IFRoZSB3aW5kb3cgaW5zdGFuY2UgdG8gY291bnQgdGhlIHVucmVhZCB0b3RhbCBtZXNzYWdlcy5cbiAgICAgKiBAcGFyYW0gY3VycmVudFVzZXJJZCBUaGUgY3VycmVudCBjaGF0IGluc3RhbmNlIHVzZXIgaWQuIEluIHRoaXMgY29udGV4dCBpdCB3b3VsZCBiZSB0aGUgc2VuZGVyLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgdW5yZWFkTWVzc2FnZXNUb3RhbCh3aW5kb3c6IFdpbmRvdywgY3VycmVudFVzZXJJZDogYW55KTogc3RyaW5nXG4gICAge1xuICAgICAgICBsZXQgdG90YWxVbnJlYWRNZXNzYWdlcyA9IDA7XG5cbiAgICAgICAgaWYgKHdpbmRvdyl7XG4gICAgICAgICAgICB0b3RhbFVucmVhZE1lc3NhZ2VzID0gd2luZG93Lm1lc3NhZ2VzLmZpbHRlcih4ID0+IHguZnJvbUlkICE9IGN1cnJlbnRVc2VySWQgJiYgIXguZGF0ZVNlZW4pLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgIHJldHVybiBNZXNzYWdlQ291bnRlci5mb3JtYXRVbnJlYWRNZXNzYWdlc1RvdGFsKHRvdGFsVW5yZWFkTWVzc2FnZXMpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -10,11 +10,11 @@ export class FirstLetterPipe {
|
|
|
10
10
|
let secondLetters = parts.length > 1 ? parts[1].slice(0, 1) : '';
|
|
11
11
|
return (firstLetter.toUpperCase() + secondLetters.toUpperCase());
|
|
12
12
|
}
|
|
13
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
14
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
13
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: FirstLetterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
14
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.1.0", ngImport: i0, type: FirstLetterPipe, name: "firstLetterPipe" }); }
|
|
15
15
|
}
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: FirstLetterPipe, decorators: [{
|
|
17
17
|
type: Pipe,
|
|
18
18
|
args: [{ name: 'firstLetterPipe' }]
|
|
19
19
|
}] });
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyc3RMZXR0ZXIucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NoYXQvc3JjL2xpYi9maXJzdExldHRlci5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQUlwRCxNQUFNLE9BQU8sZUFBZTtJQUN4QixTQUFTLENBQUMsS0FBYTtRQUNuQixrQ0FBa0M7UUFDbEMsbUNBQW1DO1FBQ25DLHNFQUFzRTtRQUN0RSxJQUFJLEtBQUssR0FBRyxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTlCLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXZDLElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2pFLE9BQU8sQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLEdBQUcsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUE7SUFDcEUsQ0FBQzs4R0FYUSxlQUFlOzRHQUFmLGVBQWU7OzJGQUFmLGVBQWU7a0JBRjNCLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHsgbmFtZTogJ2ZpcnN0TGV0dGVyUGlwZScgfSlcblxuZXhwb3J0IGNsYXNzIEZpcnN0TGV0dGVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgLy8gY29uc3QgcGFydHMgPSB2YWx1ZS5zcGxpdChcIiBcIik7XG4gICAgICAgIC8vIGNvbnN0IGZpcnN0TGV0dGVyID0gcGFydHNbMF1bMF07XG4gICAgICAgIC8vIGNvbnN0IHNlY29uZExldHRlcnMgPSBwYXJ0cy5sZW5ndGggPiAxID8gcGFydHNbMV0uc2xpY2UoMCwgMikgOiAnJztcbiAgICAgICAgbGV0IHBhcnRzID0gdmFsdWU/LnNwbGl0KFwiIFwiKTtcblxuICAgICAgICBsZXQgZmlyc3RMZXR0ZXIgPSBwYXJ0c1swXS5zbGljZSgwLCAxKTtcblxuICAgICAgICBsZXQgc2Vjb25kTGV0dGVycyA9IHBhcnRzLmxlbmd0aCA+IDEgPyBwYXJ0c1sxXS5zbGljZSgwLCAxKSA6ICcnO1xuICAgICAgICByZXR1cm4gKGZpcnN0TGV0dGVyLnRvVXBwZXJDYXNlKCkgKyBzZWNvbmRMZXR0ZXJzLnRvVXBwZXJDYXNlKCkpXG4gICAgfVxufSJdfQ==
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { NgModule } from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
3
|
+
import { MatListModule } from '@angular/material/list';
|
|
4
4
|
import { MatIconModule } from '@angular/material/icon';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
5
|
+
import { MatInputModule } from '@angular/material/input';
|
|
6
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
7
|
+
import { MatCardModule } from '@angular/material/card';
|
|
8
8
|
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
9
|
-
import {
|
|
9
|
+
import { MatMenuModule } from '@angular/material/menu';
|
|
10
10
|
import * as i0 from "@angular/core";
|
|
11
11
|
export function modules() {
|
|
12
12
|
return [
|
|
@@ -22,8 +22,8 @@ export function modules() {
|
|
|
22
22
|
];
|
|
23
23
|
}
|
|
24
24
|
export class ChatMaterialModule {
|
|
25
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
26
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
25
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: ChatMaterialModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
26
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.0", ngImport: i0, type: ChatMaterialModule, imports: [MatButtonModule,
|
|
27
27
|
MatFormFieldModule,
|
|
28
28
|
MatIconModule,
|
|
29
29
|
MatInputModule,
|
|
@@ -40,7 +40,7 @@ export class ChatMaterialModule {
|
|
|
40
40
|
MatMenuModule,
|
|
41
41
|
MatListModule,
|
|
42
42
|
MatCardModule] }); }
|
|
43
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
43
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: ChatMaterialModule, imports: [modules(), MatButtonModule,
|
|
44
44
|
MatFormFieldModule,
|
|
45
45
|
MatIconModule,
|
|
46
46
|
MatInputModule,
|
|
@@ -50,11 +50,11 @@ export class ChatMaterialModule {
|
|
|
50
50
|
MatListModule,
|
|
51
51
|
MatCardModule] }); }
|
|
52
52
|
}
|
|
53
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: ChatMaterialModule, decorators: [{
|
|
54
54
|
type: NgModule,
|
|
55
55
|
args: [{
|
|
56
56
|
imports: modules(),
|
|
57
57
|
exports: modules()
|
|
58
58
|
}]
|
|
59
59
|
}] });
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC9zcmMvbGliL21hdGVyaWFsLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7QUFDckQsTUFBTSxVQUFVLE9BQU87SUFDckIsT0FBTztRQUNMLGVBQWU7UUFDZixrQkFBa0I7UUFDbEIsYUFBYTtRQUNiLGNBQWM7UUFDZCxXQUFXO1FBQ1gsbUJBQW1CO1FBQ25CLGFBQWE7UUFDYixhQUFhO1FBQ2IsYUFBYTtLQUNkLENBQUM7QUFDSixDQUFDO0FBS0QsTUFBTSxPQUFPLGtCQUFrQjs4R0FBbEIsa0JBQWtCOytHQUFsQixrQkFBa0IsWUFmM0IsZUFBZTtZQUNmLGtCQUFrQjtZQUNsQixhQUFhO1lBQ2IsY0FBYztZQUNkLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsYUFBYTtZQUNiLGFBQWE7WUFDYixhQUFhLGFBUmIsZUFBZTtZQUNmLGtCQUFrQjtZQUNsQixhQUFhO1lBQ2IsY0FBYztZQUNkLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsYUFBYTtZQUNiLGFBQWE7WUFDYixhQUFhOytHQU9KLGtCQUFrQixZQUhwQixPQUFPLEVBQUUsRUFaaEIsZUFBZTtZQUNmLGtCQUFrQjtZQUNsQixhQUFhO1lBQ2IsY0FBYztZQUNkLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsYUFBYTtZQUNiLGFBQWE7WUFDYixhQUFhOzsyRkFPSixrQkFBa0I7a0JBSjlCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLE9BQU8sRUFBRTtvQkFDbEIsT0FBTyxFQUFFLE9BQU8sRUFBRTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXRCdXR0b25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQge01hdExpc3RNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xuaW1wb3J0IHtNYXRJY29uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7TWF0SW5wdXRNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7TWF0Rm9ybUZpZWxkTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7TWF0Q2FyZE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TWF0TWVudU1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5leHBvcnQgZnVuY3Rpb24gbW9kdWxlcygpIHtcbiAgcmV0dXJuIFtcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXRNZW51TW9kdWxlLFxuICAgIE1hdExpc3RNb2R1bGUsXG4gICAgTWF0Q2FyZE1vZHVsZVxuICBdO1xufVxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogbW9kdWxlcygpLFxuICBleHBvcnRzOiBtb2R1bGVzKClcbn0pXG5leHBvcnQgY2xhc3MgQ2hhdE1hdGVyaWFsTW9kdWxlIHt9XG4iXX0=
|