@datarailsshared/datarailsshared 1.6.285 → 1.6.287
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/assets/styles/mixins.scss +10 -0
- package/assets/styles/vars.scss +2 -0
- package/datarailsshared-datarailsshared-1.6.287.tgz +0 -0
- package/esm2022/lib/dr-avatar/dr-avatar.component.mjs +2 -2
- package/esm2022/lib/dr-chat/dr-chat-message/chat-message.component.mjs +3 -3
- package/esm2022/lib/dr-spinner/dr-spinner.component.mjs +2 -2
- package/esm2022/lib/pipes/img/img.pipe.mjs +5 -5
- package/fesm2022/datarailsshared-datarailsshared.mjs +11 -11
- package/fesm2022/datarailsshared-datarailsshared.mjs.map +1 -1
- package/lib/pipes/img/img.pipe.d.ts +2 -1
- package/package.json +1 -1
- package/assets/styles/img/default-avatar.svg +0 -8
- package/assets/styles/img/default-chat-avatar.svg +0 -13
- package/assets/styles/img/genius-ai.svg +0 -66
- package/assets/styles/img/new-spinner.gif +0 -0
- package/datarailsshared-datarailsshared-1.6.285.tgz +0 -0
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
@import './vars';
|
|
2
2
|
|
|
3
|
+
@function assets-img-url($path) {
|
|
4
|
+
@return url('#{$shared-assets-base}/dr-assets/images/#{$path}');
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
@mixin dr-icon-svg($name) {
|
|
8
|
+
width: 24px;
|
|
9
|
+
height: 24px;
|
|
10
|
+
background: url('#{$shared-assets-base}/dr-icons/#{$name}.svg');
|
|
11
|
+
}
|
|
12
|
+
|
|
3
13
|
@mixin dr-primary-font(
|
|
4
14
|
$fontSize: $dr-font-size-x-small,
|
|
5
15
|
$fontWeight: $dr-font-weight-regular,
|
package/assets/styles/vars.scss
CHANGED
|
Binary file
|
|
@@ -114,11 +114,11 @@ export class DrAvatarComponent {
|
|
|
114
114
|
i0.ɵɵproperty("ngForOf", ctx.getFirstUsers());
|
|
115
115
|
i0.ɵɵadvance(1);
|
|
116
116
|
i0.ɵɵproperty("ngIf", ctx.parsedUsers.length > ctx.USERS_TO_SHOW);
|
|
117
|
-
} }, dependencies: [i1.DrTooltipDirective, i2.NgClass, i2.NgForOf, i2.NgIf, i3.DrAvatarPipe], styles: ["[_nghost-%COMP%]{width:auto;display:flex;align-items:center}.compact[_nghost-%COMP%]{padding-left:8px}.compact[_nghost-%COMP%] .users-section__user[_ngcontent-%COMP%]{margin-left:-8px!important}.users-section__default[_ngcontent-%COMP%]{display:flex;height:28px;width:28px;border-radius:50%;background:url(
|
|
117
|
+
} }, dependencies: [i1.DrTooltipDirective, i2.NgClass, i2.NgForOf, i2.NgIf, i3.DrAvatarPipe], styles: ["[_nghost-%COMP%]{width:auto;display:flex;align-items:center}.compact[_nghost-%COMP%]{padding-left:8px}.compact[_nghost-%COMP%] .users-section__user[_ngcontent-%COMP%]{margin-left:-8px!important}.users-section__default[_ngcontent-%COMP%]{display:flex;height:28px;width:28px;border-radius:50%;background:url(https://shared-assets.datarails.com/dr-assets/images/default-avatar.svg) no-repeat!important;background-size:cover}.users-popover-item[_ngcontent-%COMP%]{display:flex;align-items:center;margin:12px}.users-popover-item[_ngcontent-%COMP%] .username[_ngcontent-%COMP%]{color:#51566f;font-size:14px}.users-popover-item[_ngcontent-%COMP%] .users-section__user[_ngcontent-%COMP%]{margin-right:8px}.users-section__user[_ngcontent-%COMP%]{position:relative;display:flex;justify-content:center;align-items:center;height:28px;width:28px;border-radius:50%;background:red;color:#fff;font-size:12px}.users-section__user--clickable[_ngcontent-%COMP%]{cursor:pointer}.users-section__user[_ngcontent-%COMP%]:not(:first-child){margin-left:4px}.users-section__user.online[_ngcontent-%COMP%]:after, .users-section__user.offline[_ngcontent-%COMP%]:after, .users-section__user.warning[_ngcontent-%COMP%]:after{content:\"\";display:flex;width:8px;height:8px;position:absolute;border-radius:4px;top:-2px;right:0}.users-section__user.online[_ngcontent-%COMP%]:after{background:#03a678}.users-section__user.offline[_ngcontent-%COMP%]:after{background:#de2833}.users-section__user.warning[_ngcontent-%COMP%]:after{background:#fda014}.users-section__user-more[_ngcontent-%COMP%]{font-size:12px;line-height:16px;font-weight:400;background:#dfe0e3;color:#333;cursor:pointer}"], changeDetection: 0 }); }
|
|
118
118
|
}
|
|
119
119
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrAvatarComponent, [{
|
|
120
120
|
type: Component,
|
|
121
|
-
args: [{ selector: 'dr-avatar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n *ngIf=\"!parsedUsers.length\"\n class=\"users-section__default\"\n [style.width]=\"drAvatarSize || null\"\n [style.height]=\"drAvatarSize || null\"></div>\n\n<div\n *ngFor=\"let user of getFirstUsers()\"\n class=\"users-section__user\"\n [class]=\"user.status\"\n [style.width]=\"drAvatarSize || null\"\n [style.height]=\"drAvatarSize || null\"\n [style.background-color]=\"getAvatarColor(user)\"\n [ngClass]=\"{\n 'users-section__default': showUnassigned && !user.email,\n 'users-section__user--clickable': drAvatarIsClickable,\n }\"\n [drTooltip]=\"user | drAvatar\"\n [drTooltipClass]=\"drAvatarTooltipClass\"\n [drTooltipPosition]=\"drAvatarTooltipPosition\"\n (click)=\"drAvatarIsClickable && userClicked.emit()\">\n {{ user | drAvatar: 'initials' }}\n</div>\n\n<div\n *ngIf=\"parsedUsers.length > USERS_TO_SHOW\"\n class=\"users-section__user users-section__user-more icon-2\"\n [drTooltip]=\"usersTemplate\"\n [drTooltipPosition]=\"'bottom'\">\n +{{ getLastUsers().length }}\n</div>\n\n<ng-template #usersTemplate>\n <div *ngFor=\"let user of getLastUsers()\" class=\"users-popover-item\">\n <div\n class=\"users-section__user\"\n [style.background-color]=\"getAvatarColor(user)\"\n (click)=\"userClicked.emit()\"\n [class]=\"user.class\">\n {{ user | drAvatar: 'initials' }}\n </div>\n <span class=\"username\">\n {{ user | drAvatar }}\n </span>\n </div>\n</ng-template>\n", styles: [":host{width:auto;display:flex;align-items:center}:host.compact{padding-left:8px}:host.compact .users-section__user{margin-left:-8px!important}.users-section__default{display:flex;height:28px;width:28px;border-radius:50%;background:url(
|
|
121
|
+
args: [{ selector: 'dr-avatar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n *ngIf=\"!parsedUsers.length\"\n class=\"users-section__default\"\n [style.width]=\"drAvatarSize || null\"\n [style.height]=\"drAvatarSize || null\"></div>\n\n<div\n *ngFor=\"let user of getFirstUsers()\"\n class=\"users-section__user\"\n [class]=\"user.status\"\n [style.width]=\"drAvatarSize || null\"\n [style.height]=\"drAvatarSize || null\"\n [style.background-color]=\"getAvatarColor(user)\"\n [ngClass]=\"{\n 'users-section__default': showUnassigned && !user.email,\n 'users-section__user--clickable': drAvatarIsClickable,\n }\"\n [drTooltip]=\"user | drAvatar\"\n [drTooltipClass]=\"drAvatarTooltipClass\"\n [drTooltipPosition]=\"drAvatarTooltipPosition\"\n (click)=\"drAvatarIsClickable && userClicked.emit()\">\n {{ user | drAvatar: 'initials' }}\n</div>\n\n<div\n *ngIf=\"parsedUsers.length > USERS_TO_SHOW\"\n class=\"users-section__user users-section__user-more icon-2\"\n [drTooltip]=\"usersTemplate\"\n [drTooltipPosition]=\"'bottom'\">\n +{{ getLastUsers().length }}\n</div>\n\n<ng-template #usersTemplate>\n <div *ngFor=\"let user of getLastUsers()\" class=\"users-popover-item\">\n <div\n class=\"users-section__user\"\n [style.background-color]=\"getAvatarColor(user)\"\n (click)=\"userClicked.emit()\"\n [class]=\"user.class\">\n {{ user | drAvatar: 'initials' }}\n </div>\n <span class=\"username\">\n {{ user | drAvatar }}\n </span>\n </div>\n</ng-template>\n", styles: [":host{width:auto;display:flex;align-items:center}:host.compact{padding-left:8px}:host.compact .users-section__user{margin-left:-8px!important}.users-section__default{display:flex;height:28px;width:28px;border-radius:50%;background:url(https://shared-assets.datarails.com/dr-assets/images/default-avatar.svg) no-repeat!important;background-size:cover}.users-popover-item{display:flex;align-items:center;margin:12px}.users-popover-item .username{color:#51566f;font-size:14px}.users-popover-item .users-section__user{margin-right:8px}.users-section__user{position:relative;display:flex;justify-content:center;align-items:center;height:28px;width:28px;border-radius:50%;background:red;color:#fff;font-size:12px}.users-section__user--clickable{cursor:pointer}.users-section__user:not(:first-child){margin-left:4px}.users-section__user.online:after,.users-section__user.offline:after,.users-section__user.warning:after{content:\"\";display:flex;width:8px;height:8px;position:absolute;border-radius:4px;top:-2px;right:0}.users-section__user.online:after{background:#03a678}.users-section__user.offline:after{background:#de2833}.users-section__user.warning:after{background:#fda014}.users-section__user-more{font-size:12px;line-height:16px;font-weight:400;background:#dfe0e3;color:#333;cursor:pointer}\n"] }]
|
|
122
122
|
}], null, { users: [{
|
|
123
123
|
type: Input
|
|
124
124
|
}], showUnassigned: [{
|
|
@@ -142,7 +142,7 @@ export class DrChatMessageComponent {
|
|
|
142
142
|
i0.ɵɵproperty("ngSwitchCase", ctx.MESSAGE_TYPE.DOWNLOAD_FILE);
|
|
143
143
|
i0.ɵɵadvance(2);
|
|
144
144
|
i0.ɵɵproperty("ngIf", ctx.drChatMessageActions);
|
|
145
|
-
} }, dependencies: [i2.NgClass, i2.NgIf, i2.NgTemplateOutlet, i2.NgSwitch, i2.NgSwitchCase, i2.NgSwitchDefault, i3.DrAvatarComponent, i4.DrChatMessageTextComponent, i5.DrChatMessageFileComponent], styles: ["[_nghost-%COMP%]{position:relative;display:flex;flex-direction:row;width:100%;background:#f9faffb3;border-top:1px solid #e5e5e5;padding:16px}[_nghost-%COMP%]:first-child{border:none}[_nghost-%COMP%]:last-child{border-bottom:1px solid #e5e5e5}.reply + .reply[_nghost-%COMP%], .not-reply + .not-reply[_nghost-%COMP%]{border-top:none;padding-top:0;padding-left:60px}.reply + .reply[_nghost-%COMP%] .avatar[_ngcontent-%COMP%], .reply + .reply[_nghost-%COMP%] dr-avatar[_ngcontent-%COMP%], .not-reply + .not-reply[_nghost-%COMP%] .avatar[_ngcontent-%COMP%], .not-reply + .not-reply[_nghost-%COMP%] dr-avatar[_ngcontent-%COMP%]{display:none}.not-reply[_nghost-%COMP%]{background-color:#fff}[_nghost-%COMP%] .avatar[_ngcontent-%COMP%]{display:flex;width:28px;height:28px;background-color:#fff;border-radius:16px;flex-shrink:0;border:1px solid #dfe0e3;background-image:url(
|
|
145
|
+
} }, dependencies: [i2.NgClass, i2.NgIf, i2.NgTemplateOutlet, i2.NgSwitch, i2.NgSwitchCase, i2.NgSwitchDefault, i3.DrAvatarComponent, i4.DrChatMessageTextComponent, i5.DrChatMessageFileComponent], styles: ["[_nghost-%COMP%]{position:relative;display:flex;flex-direction:row;width:100%;background:#f9faffb3;border-top:1px solid #e5e5e5;padding:16px}[_nghost-%COMP%]:first-child{border:none}[_nghost-%COMP%]:last-child{border-bottom:1px solid #e5e5e5}.reply + .reply[_nghost-%COMP%], .not-reply + .not-reply[_nghost-%COMP%]{border-top:none;padding-top:0;padding-left:60px}.reply + .reply[_nghost-%COMP%] .avatar[_ngcontent-%COMP%], .reply + .reply[_nghost-%COMP%] dr-avatar[_ngcontent-%COMP%], .not-reply + .not-reply[_nghost-%COMP%] .avatar[_ngcontent-%COMP%], .not-reply + .not-reply[_nghost-%COMP%] dr-avatar[_ngcontent-%COMP%]{display:none}.not-reply[_nghost-%COMP%]{background-color:#fff}[_nghost-%COMP%] .avatar[_ngcontent-%COMP%]{display:flex;width:28px;height:28px;background-color:#fff;border-radius:16px;flex-shrink:0;border:1px solid #dfe0e3;background-image:url(https://shared-assets.datarails.com/dr-assets/images/genius-ai.svg);background-size:18px;background-repeat:no-repeat;background-position-x:4px;background-position-y:5px}[_nghost-%COMP%] .genius-avatar[_ngcontent-%COMP%]{position:relative;display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:16px;flex-shrink:0;border:1px solid #dfe0e3;background:#fff}[_nghost-%COMP%] .genius-avatar[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{font-size:22px;background:linear-gradient(88.5deg,#4eb7df 10%,#6969ff);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}[_nghost-%COMP%] .avatar[_ngcontent-%COMP%], [_nghost-%COMP%] .genius-avatar[_ngcontent-%COMP%], [_nghost-%COMP%] dr-avatar[_ngcontent-%COMP%]{margin:0 16px 0 0}[_nghost-%COMP%] .avatar[_ngcontent-%COMP%] .users-section__user, [_nghost-%COMP%] .genius-avatar[_ngcontent-%COMP%] .users-section__user, [_nghost-%COMP%] dr-avatar[_ngcontent-%COMP%] .users-section__user{border:1px solid #dfe0e3}[_nghost-%COMP%] .message[_ngcontent-%COMP%]{display:flex;align-items:center;flex-grow:1}[_nghost-%COMP%] .message__actions[_ngcontent-%COMP%]{display:flex;align-items:center;margin-top:12px;flex-grow:1;justify-content:flex-start}[_nghost-%COMP%] .message__actions[_ngcontent-%COMP%] button:not(:hover) i[class*=dr-icon]{color:#b9b9ec!important}[_nghost-%COMP%] .messageGroup[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:flex-start}"], data: { animation: [
|
|
146
146
|
trigger('flyInOut', [
|
|
147
147
|
state('in', style({ transform: 'translateX(0)' })),
|
|
148
148
|
transition('void => *', [style({ transform: 'translateX(-100%)' }), animate(250)]),
|
|
@@ -156,7 +156,7 @@ export class DrChatMessageComponent {
|
|
|
156
156
|
state('in', style({ transform: 'translateX(0)' })),
|
|
157
157
|
transition('void => *', [style({ transform: 'translateX(-100%)' }), animate(250)]),
|
|
158
158
|
]),
|
|
159
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"message.avatarUrl; else userAvatar\">\n <div class=\"avatar\" [style.background-image]=\"'url(' + message.avatarUrl + ')'\"></div>\n</ng-container>\n<ng-template #userAvatar>\n <dr-avatar *ngIf=\"message.user\" [users]=\"message.user\"></dr-avatar>\n\n <div *ngIf=\"!message.user\" class=\"genius-avatar\">\n <i class=\"dr-icon-genius-sparks\"></i>\n </div>\n</ng-template>\n<div class=\"message\" [class.message--custom]=\"customMessage\" [ngClass]=\"applyMessageGroupClass(message)\">\n <ng-container [ngSwitch]=\"message.kind\">\n <dr-chat-message-text *ngSwitchCase=\"MESSAGE_TYPE.TEXT\" [message]=\"message\"></dr-chat-message-text>\n <dr-chat-message-file *ngSwitchCase=\"MESSAGE_TYPE.DOWNLOAD_FILE\" [files]=\"message.files\"></dr-chat-message-file>\n <ng-container *ngSwitchDefault>\n <ng-container [ngTemplateOutlet]=\"getTemplate()\" [ngTemplateOutletContext]=\"getTemplateContext()\"></ng-container>\n </ng-container>\n </ng-container>\n <div class=\"message__actions\" *ngIf=\"drChatMessageActions\">\n <ng-container [ngTemplateOutlet]=\"drChatMessageActions\"></ng-container>\n </div>\n</div>\n", styles: [":host{position:relative;display:flex;flex-direction:row;width:100%;background:#f9faffb3;border-top:1px solid #e5e5e5;padding:16px}:host:first-child{border:none}:host:last-child{border-bottom:1px solid #e5e5e5}.reply+:host.reply,.not-reply+:host.not-reply{border-top:none;padding-top:0;padding-left:60px}.reply+:host.reply .avatar,.reply+:host.reply dr-avatar,.not-reply+:host.not-reply .avatar,.not-reply+:host.not-reply dr-avatar{display:none}:host.not-reply{background-color:#fff}:host .avatar{display:flex;width:28px;height:28px;background-color:#fff;border-radius:16px;flex-shrink:0;border:1px solid #dfe0e3;background-image:url(
|
|
159
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"message.avatarUrl; else userAvatar\">\n <div class=\"avatar\" [style.background-image]=\"'url(' + message.avatarUrl + ')'\"></div>\n</ng-container>\n<ng-template #userAvatar>\n <dr-avatar *ngIf=\"message.user\" [users]=\"message.user\"></dr-avatar>\n\n <div *ngIf=\"!message.user\" class=\"genius-avatar\">\n <i class=\"dr-icon-genius-sparks\"></i>\n </div>\n</ng-template>\n<div class=\"message\" [class.message--custom]=\"customMessage\" [ngClass]=\"applyMessageGroupClass(message)\">\n <ng-container [ngSwitch]=\"message.kind\">\n <dr-chat-message-text *ngSwitchCase=\"MESSAGE_TYPE.TEXT\" [message]=\"message\"></dr-chat-message-text>\n <dr-chat-message-file *ngSwitchCase=\"MESSAGE_TYPE.DOWNLOAD_FILE\" [files]=\"message.files\"></dr-chat-message-file>\n <ng-container *ngSwitchDefault>\n <ng-container [ngTemplateOutlet]=\"getTemplate()\" [ngTemplateOutletContext]=\"getTemplateContext()\"></ng-container>\n </ng-container>\n </ng-container>\n <div class=\"message__actions\" *ngIf=\"drChatMessageActions\">\n <ng-container [ngTemplateOutlet]=\"drChatMessageActions\"></ng-container>\n </div>\n</div>\n", styles: [":host{position:relative;display:flex;flex-direction:row;width:100%;background:#f9faffb3;border-top:1px solid #e5e5e5;padding:16px}:host:first-child{border:none}:host:last-child{border-bottom:1px solid #e5e5e5}.reply+:host.reply,.not-reply+:host.not-reply{border-top:none;padding-top:0;padding-left:60px}.reply+:host.reply .avatar,.reply+:host.reply dr-avatar,.not-reply+:host.not-reply .avatar,.not-reply+:host.not-reply dr-avatar{display:none}:host.not-reply{background-color:#fff}:host .avatar{display:flex;width:28px;height:28px;background-color:#fff;border-radius:16px;flex-shrink:0;border:1px solid #dfe0e3;background-image:url(https://shared-assets.datarails.com/dr-assets/images/genius-ai.svg);background-size:18px;background-repeat:no-repeat;background-position-x:4px;background-position-y:5px}:host .genius-avatar{position:relative;display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:16px;flex-shrink:0;border:1px solid #dfe0e3;background:#fff}:host .genius-avatar i{font-size:22px;background:linear-gradient(88.5deg,#4eb7df 10%,#6969ff);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}:host .avatar,:host .genius-avatar,:host dr-avatar{margin:0 16px 0 0}:host .avatar::ng-deep .users-section__user,:host .genius-avatar::ng-deep .users-section__user,:host dr-avatar::ng-deep .users-section__user{border:1px solid #dfe0e3}:host .message{display:flex;align-items:center;flex-grow:1}:host .message__actions{display:flex;align-items:center;margin-top:12px;flex-grow:1;justify-content:flex-start}:host .message__actions::ng-deep button:not(:hover) i[class*=dr-icon]{color:#b9b9ec!important}:host .messageGroup{display:flex;flex-direction:column;align-items:flex-start}\n"] }]
|
|
160
160
|
}], function () { return [{ type: i1.DrChatCustomMessageService }]; }, { flyInOut: [{
|
|
161
161
|
type: HostBinding,
|
|
162
162
|
args: ['@flyInOut']
|
|
@@ -180,4 +180,4 @@ export class DrChatMessageComponent {
|
|
|
180
180
|
type: ContentChild,
|
|
181
181
|
args: ['drChatMessageActions']
|
|
182
182
|
}] }); })();
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1tZXNzYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLWNoYXQvZHItY2hhdC1tZXNzYWdlL2NoYXQtbWVzc2FnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1jaGF0L2RyLWNoYXQtbWVzc2FnZS9jaGF0LW1lc3NhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEgsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsaUJBQWlCLEVBQWdCLE1BQU0sbUJBQW1CLENBQUM7QUFFcEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0RBQXNELENBQUM7Ozs7Ozs7OztJQ0psRyw2QkFBeUQ7SUFDckQseUJBQXNGO0lBQzFGLDBCQUFlOzs7SUFEUyxlQUEyRDtJQUEzRCwyRUFBMkQ7OztJQUcvRSxnQ0FBbUU7OztJQUFuQywyQ0FBc0I7OztJQUV0RCwrQkFBaUQ7SUFDN0Msd0JBQXFDO0lBQ3pDLGlCQUFNOzs7SUFKTixpR0FBbUU7SUFFbkUsc0ZBRU07OztJQUpNLDBDQUFrQjtJQUV4QixlQUFtQjtJQUFuQiwyQ0FBbUI7OztJQU1yQiwyQ0FBbUc7OztJQUEzQyx3Q0FBbUI7OztJQUMzRSwyQ0FBZ0g7OztJQUEvQyw0Q0FBdUI7OztJQUN4Riw2QkFBK0I7SUFDM0IsNEJBQWlIO0lBQ3JILDBCQUFlOzs7SUFERyxlQUFrQztJQUFsQyx1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QUFDLENBQUM7d0JBQ2xELFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO3FCQUNyRixDQUFDO2lCQUNMLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNOzZFQU0zQyxRQUFRO2tCQURYLFdBQVc7bUJBQUMsV0FBVztZQU1wQixRQUFRO2tCQURYLFdBQVc7bUJBQUMsaUJBQWlCO1lBVTFCLEtBQUs7a0JBRlIsS0FBSzs7a0JBQ0wsV0FBVzttQkFBQyxhQUFhO1lBV2pCLElBQUk7a0JBQVosS0FBSztZQU9HLE9BQU87a0JBQWYsS0FBSztZQU9HLGlCQUFpQjtrQkFBekIsS0FBSztZQUtHLElBQUk7a0JBQVosS0FBSztZQUVnQyxvQkFBb0I7a0JBQXpELFlBQVk7bUJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBIb3N0QmluZGluZywgSW5wdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBhbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IENIQVRfTUVTU0FHRV9UWVBFLCBJQ2hhdE1lc3NhZ2UgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2hhdCc7XG5pbXBvcnQgeyBEckNoYXRDdXN0b21NZXNzYWdlRGlyZWN0aXZlIH0gZnJvbSAnLi9kci1jaGF0LW1lc3NhZ2UtY3VzdG9tL2NoYXQtY3VzdG9tLW1lc3NhZ2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IERyQ2hhdEN1c3RvbU1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9kci1jaGF0LW1lc3NhZ2UtY3VzdG9tL2NoYXQtY3VzdG9tLW1lc3NhZ2Uuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZHItY2hhdC1tZXNzYWdlJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2NoYXQtbWVzc2FnZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2hhdC1tZXNzYWdlLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCdmbHlJbk91dCcsIFtcbiAgICAgICAgICAgIHN0YXRlKCdpbicsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwKScgfSkpLFxuICAgICAgICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAqJywgW3N0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgtMTAwJSknIH0pLCBhbmltYXRlKDI1MCldKSxcbiAgICAgICAgXSksXG4gICAgXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRHJDaGF0TWVzc2FnZUNvbXBvbmVudCB7XG4gICAgTUVTU0FHRV9UWVBFID0gQ0hBVF9NRVNTQUdFX1RZUEU7XG5cbiAgICBASG9zdEJpbmRpbmcoJ0BmbHlJbk91dCcpXG4gICAgZ2V0IGZseUluT3V0KCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLm5vdC1yZXBseScpXG4gICAgZ2V0IG5vdFJlcGx5KCkge1xuICAgICAgICByZXR1cm4gIXRoaXMucmVwbHk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyBpZiBhIG1lc3NhZ2UgaXMgYSByZXBseVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5yZXBseScpXG4gICAgZ2V0IHJlcGx5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVwbHk7XG4gICAgfVxuXG4gICAgc2V0IHJlcGx5KHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3JlcGx5ID0gISF2YWx1ZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3JlcGx5ID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSB0eXBlOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBNZXNzYWdlXG4gICAgICpcbiAgICAgKiBAdHlwZSB7SUNoYXRNZXNzYWdlfVxuICAgICAqL1xuICAgIEBJbnB1dCgpIG1lc3NhZ2U6IElDaGF0TWVzc2FnZTtcblxuICAgIC8qKlxuICAgICAqIERhdGEgd2hpY2ggd2lsbCBiZSBzZXQgYXMgY3VzdG9tIG1lc3NhZ2UgdGVtcGxhdGUgY29udGV4dFxuICAgICAqXG4gICAgICogQHR5cGUge2FueX1cbiAgICAgKi9cbiAgICBASW5wdXQoKSBjdXN0b21NZXNzYWdlRGF0YTogYW55O1xuXG4gICAgLyoqXG4gICAgICogVXNlciBpbmZvIGZvciBhdmF0YXJcbiAgICAgKi9cbiAgICBASW5wdXQoKSB1c2VyOiBhbnk7XG5cbiAgICBAQ29udGVudENoaWxkKCdkckNoYXRNZXNzYWdlQWN0aW9ucycpIGRyQ2hhdE1lc3NhZ2VBY3Rpb25zOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgcHVibGljIGN1c3RvbU1lc3NhZ2U6IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGN1c3RvbU1lc3NhZ2VTZXJ2aWNlOiBEckNoYXRDdXN0b21NZXNzYWdlU2VydmljZSkge31cblxuICAgIHB1YmxpYyBnZXRUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICAgICAgdGhpcy5jdXN0b21NZXNzYWdlID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgY3VzdG9tTWVzc2FnZSA9IHRoaXMuZ2V0Q3VzdG9tTWVzc2FnZSh0aGlzLnR5cGUpO1xuICAgICAgICByZXR1cm4gY3VzdG9tTWVzc2FnZS50ZW1wbGF0ZVJlZjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VGVtcGxhdGVDb250ZXh0KCk6IHsgJGltcGxpY2l0OiBhbnk7IGlzUmVwbHk6IGJvb2xlYW4gfSB7XG4gICAgICAgIHJldHVybiB7ICRpbXBsaWNpdDogdGhpcy5jdXN0b21NZXNzYWdlRGF0YSwgaXNSZXBseTogdGhpcy5yZXBseSB9O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRDdXN0b21NZXNzYWdlKHR5cGU6IHN0cmluZyk6IERyQ2hhdEN1c3RvbU1lc3NhZ2VEaXJlY3RpdmUge1xuICAgICAgICBjb25zdCBjdXN0b21NZXNzYWdlRGlyZWN0aXZlID0gdGhpcy5jdXN0b21NZXNzYWdlU2VydmljZS5nZXRJbnN0YW5jZSh0eXBlKTtcblxuICAgICAgICBpZiAoIWN1c3RvbU1lc3NhZ2VEaXJlY3RpdmUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBgZHItY2hhdDogQ2FuJ3QgZmluZCB0ZW1wbGF0ZSBmb3IgY3VzdG9tIHR5cGUgJyR7dHlwZX0nLiBgICtcbiAgICAgICAgICAgICAgICAgICAgYE1ha2Ugc3VyZSB5b3UgcHJvdmlkZSBpdCBpbiB0aGUgY2hhdCBjb21wb25lbnQgd2l0aCAqZHJDdXN0b21NZXNzYWdlPScke3R5cGV9Jy5gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjdXN0b21NZXNzYWdlRGlyZWN0aXZlO1xuICAgIH1cblxuICAgIGFwcGx5TWVzc2FnZUdyb3VwQ2xhc3MobWVzc2FnZTogSUNoYXRNZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiBtZXNzYWdlLnJvbGUgPT09ICdhc3Npc3RhbnQnICYmIG1lc3NhZ2Uua2luZCA9PT0gJ3RleHQnID8gJ21lc3NhZ2VHcm91cCcgOiAnJztcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwibWVzc2FnZS5hdmF0YXJVcmw7IGVsc2UgdXNlckF2YXRhclwiPlxuICAgIDxkaXYgY2xhc3M9XCJhdmF0YXJcIiBbc3R5bGUuYmFja2dyb3VuZC1pbWFnZV09XCIndXJsKCcgKyBtZXNzYWdlLmF2YXRhclVybCArICcpJ1wiPjwvZGl2PlxuPC9uZy1jb250YWluZXI+XG48bmctdGVtcGxhdGUgI3VzZXJBdmF0YXI+XG4gICAgPGRyLWF2YXRhciAqbmdJZj1cIm1lc3NhZ2UudXNlclwiIFt1c2Vyc109XCJtZXNzYWdlLnVzZXJcIj48L2RyLWF2YXRhcj5cblxuICAgIDxkaXYgKm5nSWY9XCIhbWVzc2FnZS51c2VyXCIgY2xhc3M9XCJnZW5pdXMtYXZhdGFyXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiZHItaWNvbi1nZW5pdXMtc3BhcmtzXCI+PC9pPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbjxkaXYgY2xhc3M9XCJtZXNzYWdlXCIgW2NsYXNzLm1lc3NhZ2UtLWN1c3RvbV09XCJjdXN0b21NZXNzYWdlXCIgW25nQ2xhc3NdPVwiYXBwbHlNZXNzYWdlR3JvdXBDbGFzcyhtZXNzYWdlKVwiPlxuICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cIm1lc3NhZ2Uua2luZFwiPlxuICAgICAgICA8ZHItY2hhdC1tZXNzYWdlLXRleHQgKm5nU3dpdGNoQ2FzZT1cIk1FU1NBR0VfVFlQRS5URVhUXCIgW21lc3NhZ2VdPVwibWVzc2FnZVwiPjwvZHItY2hhdC1tZXNzYWdlLXRleHQ+XG4gICAgICAgIDxkci1jaGF0LW1lc3NhZ2UtZmlsZSAqbmdTd2l0Y2hDYXNlPVwiTUVTU0FHRV9UWVBFLkRPV05MT0FEX0ZJTEVcIiBbZmlsZXNdPVwibWVzc2FnZS5maWxlc1wiPjwvZHItY2hhdC1tZXNzYWdlLWZpbGU+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ2V0VGVtcGxhdGUoKVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJnZXRUZW1wbGF0ZUNvbnRleHQoKVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZV9fYWN0aW9uc1wiICpuZ0lmPVwiZHJDaGF0TWVzc2FnZUFjdGlvbnNcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJkckNoYXRNZXNzYWdlQWN0aW9uc1wiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|