@banta/sdk 4.6.25 → 4.6.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/README.md +2 -2
  2. package/bundles/banta-sdk.umd.js +79 -61
  3. package/bundles/banta-sdk.umd.js.map +1 -1
  4. package/esm2015/lib/banta/banta.component.js +3 -4
  5. package/esm2015/lib/chat/banta-chat/banta-chat.component.js +4 -5
  6. package/esm2015/lib/chat/chat-message/chat-message.component.js +1 -1
  7. package/esm2015/lib/chat/chat-view/chat-view.component.js +1 -1
  8. package/esm2015/lib/chat/live-chat-message.component.js +2 -2
  9. package/esm2015/lib/chat-backend.js +1 -1
  10. package/esm2015/lib/chat-source.js +4 -10
  11. package/esm2015/lib/comments/attachment-button/attachment-button.component.js +3 -3
  12. package/esm2015/lib/comments/attachment-scraper.directive.js +1 -1
  13. package/esm2015/lib/comments/banta-comments/banta-comments.component.js +4 -4
  14. package/esm2015/lib/comments/comment/comment.component.js +2 -2
  15. package/esm2015/lib/comments/comment-field/comment-field.component.js +4 -4
  16. package/esm2015/lib/comments/comment-sort/comment-sort.component.js +1 -1
  17. package/esm2015/lib/comments/comment-view/comment-view.component.js +3 -3
  18. package/esm2015/lib/comments/live-comment.component.js +2 -2
  19. package/esm2015/lib/common/attachment/attachment.component.js +2 -2
  20. package/esm2015/lib/common/attachments/attachments.component.js +2 -3
  21. package/esm2015/lib/common/lightbox/lightbox.component.js +3 -3
  22. package/esm2015/lib/common/markdown-to-html.pipe.js +21 -20
  23. package/esm2015/lib/emoji/emoji-selector-button.component.js +2 -3
  24. package/esm2015/lib/emoji/emoji-selector-panel/emoji-selector-panel.component.js +1 -1
  25. package/esm2015/lib/giphy-attachments.js +1 -1
  26. package/esm2015/lib/live-message.component.js +2 -2
  27. package/esm2015/lib/url-attachments.js +1 -1
  28. package/esm2015/public-api.js +1 -1
  29. package/fesm2015/banta-sdk.js +399 -404
  30. package/fesm2015/banta-sdk.js.map +1 -1
  31. package/lib/chat-source.d.ts +3 -3
  32. package/package.json +1 -1
  33. package/bundles/banta-sdk.umd.min.js +0 -2
  34. package/bundles/banta-sdk.umd.min.js.map +0 -1
@@ -1,8 +1,7 @@
1
1
  import { __awaiter } from "tslib";
2
2
  import { Component, Input, ViewChild, HostBinding } from "@angular/core";
3
- import { Subject, Observable, Subscription } from 'rxjs';
3
+ import { Subject, Subscription } from 'rxjs';
4
4
  import { MatDialog } from '@angular/material/dialog';
5
- import { BantaChatComponent } from '../chat';
6
5
  import { Output } from "@angular/core";
7
6
  import { ChatBackendBase } from "../chat-backend-base";
8
7
  /**
@@ -183,7 +182,7 @@ BantaComponent.decorators = [
183
182
  { type: Component, args: [{
184
183
  selector: `banta`,
185
184
  template: "\r\n<mat-menu #userMenu=\"matMenu\">\r\n <ng-container *ngIf=\"currentUser\">\r\n <button [disabled]=\"true\" mat-menu-item>{{currentUser.displayName}} (@{{currentUser.username}})</button>\r\n <button mat-menu-item (click)=\"signOut()\">Sign Out</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"!currentUser\">\r\n <button mat-menu-item>Sign In</button>\r\n </ng-container>\r\n <button mat-menu-item>Help</button>\r\n</mat-menu>\r\n\r\n<div class=\"tabs\">\r\n <div>\r\n <a mat-button (click)=\"mobileFocus = 'chat'\">{{chatLabel}}</a>\r\n <a mat-button (click)=\"mobileFocus = 'comments'\">{{commentsLabel}}</a>\r\n </div>\r\n <div class=\"spacer\"></div>\r\n <div>\r\n <ng-container *ngIf=\"currentUser\">\r\n <button mat-button [matMenuTriggerFor]=\"userMenu\">\r\n @{{currentUser.username}}\r\n </button>\r\n <button mat-icon-button (click)=\"showNotifications()\">\r\n <mat-icon>notification_important</mat-icon>\r\n </button>\r\n </ng-container>\r\n \r\n <button mat-button *ngIf=\"!currentUser\" (click)=\"showSignIn()\">\r\n Sign In\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<div class=\"firehose\" [class.focus]=\"mobileFocus === 'chat'\">\r\n <header>\r\n <div>\r\n <label (click)=\"mobileFocus = 'chat'\">{{chatLabel}}</label>\r\n <div class=\"spacer\"></div>\r\n\r\n <ng-container *ngIf=\"currentUser\">\r\n <button mat-button [matMenuTriggerFor]=\"userMenu\">\r\n @{{currentUser.username}}\r\n </button>\r\n <button mat-icon-button (click)=\"showNotifications()\">\r\n <mat-icon>notification_important</mat-icon>\r\n </button>\r\n </ng-container>\r\n \r\n <button mat-button *ngIf=\"!currentUser\" (click)=\"showSignIn()\">\r\n Sign In\r\n </button>\r\n </div>\r\n </header>\r\n <banta-chat \r\n #firehose\r\n [source]=\"firehoseSource\"\r\n (signInSelected)=\"showSignIn()\"\r\n (upvoted)=\"upvoteMessage($event)\"\r\n (userSelected)=\"showProfile($event.user)\"\r\n (reported)=\"reportMessage($event)\"\r\n ></banta-chat>\r\n</div>\r\n\r\n<div class=\"aux\" [class.focus]=\"mobileFocus === 'aux'\" [class.open]=\"auxOpen\">\r\n <header>\r\n <div>\r\n <label>{{auxTitle}}</label>\r\n <div class=\"spacer\"></div>\r\n <button mat-icon-button (click)=\"auxOpen = false\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </header>\r\n <div class=\"aux-contents\">\r\n <ng-container *ngIf=\"auxMode === 'profile'\">\r\n <ng-container *ngIf=\"profileUser\">\r\n\r\n <div>\r\n <strong style=\"font-size: 125%;\">\r\n {{profileUser.displayName}}\r\n </strong>\r\n @{{profileUser.username}}\r\n </div>\r\n\r\n <br/>\r\n <strong>Top Messages</strong>\r\n\r\n <div>\r\n <em>Not yet available</em>\r\n </div>\r\n\r\n <br/>\r\n <strong>Recent Messages</strong>\r\n\r\n <div>\r\n <em>Not yet available</em>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"auxMode === 'report'\">\r\n <p>Are you sure you want to report this message?</p>\r\n\r\n <banta-live-message [message]=\"reportedMessage\"></banta-live-message>\r\n\r\n <div style=\"text-align: center;\">\r\n <button mat-raised-button color=\"primary\" (click)=\"sendReport(reportedMessage)\">Yes, Report</button>\r\n &nbsp;\r\n <button mat-raised-button color=\"secondary\" (click)=\"auxOpen = false\">No, Cancel</button>\r\n </div>\r\n\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"auxMode === 'notifications'\">\r\n\r\n <div *ngIf=\"!notifications || notifications.length === 0\">\r\n <em>You do not have any notifications yet</em>\r\n </div>\r\n \r\n <div class=\"notifications\">\r\n <div class=\"notification\" *ngFor=\"let notif of notifications\">\r\n <div>\r\n <ng-container *ngIf=\"notif.type === 'upvote'\">\r\n @{{notif.message?.user?.username}} upvoted your post\r\n \r\n <banta-live-message\r\n [message]=\"notif.message\"\r\n (upvoted)=\"upvoteMessage(notif.message)\"\r\n (reported)=\"reportMessage(notif.message)\"\r\n (selected)=\"goToMessage(notif.message)\">\r\n </banta-live-message>\r\n\r\n </ng-container>\r\n <ng-container *ngIf=\"notif.type === 'notice'\">\r\n <div>\r\n {{notif.message}}\r\n </div>\r\n <a mat-button target=\"_blank\" href=\"{{notif.actionUrl}}\">\r\n {{notif.actionLabel}}\r\n </a>\r\n </ng-container>\r\n <ng-container *ngIf=\"notif.type === 'mention'\">\r\n You were mentioned by @{{notif.message?.user?.username}}\r\n\r\n <banta-live-message\r\n [message]=\"notif.message\"\r\n (upvoted)=\"upvoteMessage(notif.message)\"\r\n (reported)=\"reportMessage(notif.message)\"\r\n (selected)=\"goToMessage(notif.message)\">\r\n </banta-live-message>\r\n\r\n </ng-container>\r\n <ng-container *ngIf=\"notif.type === 'reply'\">\r\n @{{notif.replyMessage?.user?.username}} replied to your post\r\n \r\n <banta-live-message\r\n [message]=\"notif.replyMessage\"\r\n (upvoted)=\"upvoteMessage(notif.replyMessage)\"\r\n (reported)=\"reportMessage(notif.replyMessage)\"\r\n (selected)=\"goToMessage(notif.replyMessage)\">\r\n </banta-live-message>\r\n </ng-container>\r\n </div>\r\n\r\n <banta-timestamp [value]=\"notif.sentAt\"></banta-timestamp>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n<div class=\"points\" [class.focus]=\"mobileFocus === 'points'\">\r\n <header>\r\n <div>\r\n <label>{{commentsLabel}}</label>\r\n </div>\r\n </header>\r\n <div class=\"point-focus\">\r\n <div class=\"actions\">\r\n <button mat-button (click)=\"pointUnfocus()\">\r\n <mat-icon>arrow_back</mat-icon>\r\n Back\r\n </button>\r\n\r\n <div class=\"spacer\"></div>\r\n \r\n <ng-container *ngIf=\"pointOpen\">\r\n <div class=\"counted-action\">\r\n <div class=\"count-indicator\"> \r\n {{pointOpen.likes}}\r\n </div>\r\n <button mat-icon-button>\r\n <mat-icon>thumb_up</mat-icon>\r\n </button>\r\n </div>\r\n\r\n </ng-container>\r\n </div>\r\n\r\n <div *ngIf=\"!pointSubChat\">\r\n Error: No subchat\r\n </div>\r\n \r\n <banta-comment-view\r\n class=\"subcomments\"\r\n *ngIf=\"pointSubChat\"\r\n [newestLast]=\"true\"\r\n [allowReplies]=\"false\"\r\n [source]=\"pointSubChat\"\r\n (upvoted)=\"upvoteMessage($event)\"\r\n (reported)=\"reportMessage($event)\"\r\n (userSelected)=\"showProfile($event.user)\"\r\n >\r\n \r\n <banta-comment\r\n class=\"focused-comment\"\r\n data-before\r\n *ngIf=\"pointOpen\"\r\n (upvoted)=\"upvoteMessage(pointOpen)\"\r\n (userSelected)=\"showProfile(pointOpen.user)\"\r\n (reported)=\"reportMessage(pointOpen)\"\r\n [showReplyAction]=\"false\"\r\n [message]=\"pointOpen\"\r\n ></banta-comment>\r\n \r\n <div class=\"message reply\">\r\n Reply:\r\n <form class=\"new-message\" (submit)=\"sendPointSubMessage()\">\r\n <textarea \r\n name=\"message\" \r\n (keydown)=\"newPointSubMessageKeyDown($event)\"\r\n [(ngModel)]=\"newPointSubMessage.message\"></textarea>\r\n \r\n <div class=\"actions\">\r\n <button [disabled]=\"!newPointSubMessage.message\" \r\n mat-raised-button color=\"primary\">Send</button>\r\n </div>\r\n </form>\r\n </div>\r\n </banta-comment-view>\r\n </div>\r\n <div class=\"points-section\">\r\n <banta-comments\r\n [source]=\"pointSource\"\r\n (signInSelected)=\"showSignIn()\"\r\n (upvoted)=\"upvoteMessage($event)\"\r\n (reported)=\"reportMessage($event)\"\r\n (selected)=\"goToMessage($event)\"\r\n (userSelected)=\"showProfile($event.user)\"\r\n ></banta-comments>\r\n </div>\r\n</div>",
186
- styles: [":host{display:flex;flex-direction:row;padding:.5em;height:40em;position:relative}.counted-action{display:flex;align-items:center}.count-indicator{font-size:9pt;padding:0 3px;border-radius:3px;border:1px solid #333}header{position:relative;margin-bottom:1em}header div{display:flex;align-items:center;height:30px}header button{color:#666}header label{text-transform:uppercase;z-index:1;font-size:12pt;letter-spacing:2px;font-weight:100;color:#333;margin:0 auto 0 0;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;white-space:nowrap;overflow-x:hidden;text-overflow:ellipsis}header:after,header label{display:block;position:relative}header:after{content:\"\";border:1px solid #ccc;height:0;width:100%;z-index:0}.points{max-width:50em;display:flex;flex-direction:column}:host.point-focus .points{width:66%;max-width:50em}:host.point-focus .points .points-section{opacity:0;pointer-events:none}:host.point-focus .points .point-focus{opacity:1;pointer-events:auto}:host.point-focus .points .point-focus .actions{display:flex}banta-comments{flex-grow:1}.points{width:33%;margin-left:.5em;font-size:12pt;flex-shrink:0;max-width:30em;transition:width .2s ease-in,max-width .2s ease-in;position:relative}.points .points-section{opacity:1;z-index:2}.points .point-focus,.points .points-section{flex-grow:1;display:flex;flex-direction:column;transition:opacity .2s ease-in}.points .point-focus{position:absolute;width:100%;bottom:0;top:1.75em;right:0;left:0;padding:.5em;opacity:0}.firehose{flex-grow:1;font-size:10pt;display:flex;flex-direction:column}form{display:flex;padding:.5em 0;align-items:center}form textarea{font-size:14pt;min-height:6em}form input[type=text],form textarea{background:#000;color:#fff;border:1px solid #333;width:100%}form input[type=text]{height:1em}form .actions{margin-left:1em}form button{display:block;margin:0 0 0 auto}.subcomments ::ng-deep banta-comment{font-size:10pt}.subcomments ::ng-deep banta-comment.focused-comment{background:#001321;color:#fff;font-size:12pt}.aux{width:0;min-width:0;overflow-x:hidden;transition:width .4s ease-out,min-width .4s ease-out;display:flex;flex-direction:column}.aux.open{width:30em;min-width:18em}.aux .aux-contents{width:30em;min-width:10em;max-width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;flex-grow:1}.notifications .notification{border-bottom:1px solid #333;padding:1em}.notifications .notification banta-timestamp{display:block;text-align:right;font-size:9pt;color:#999}.message.reply{padding:1em}.tabs{display:none}@media (max-width:1015px){:host{flex-direction:column}.tabs{display:flex;position:absolute;top:0;left:0;right:0;width:100%;z-index:10;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:rgba(0,0,0,.5)}.points{width:100%;max-width:100%;margin-left:0}header{display:none}.aux,:host.point-focus .points{width:100%;max-width:100%}.aux{min-width:0}.aux,.firehose,.points{position:absolute;top:2em;left:0;right:0;bottom:0;z-index:0;background:#000}.aux.focus,.firehose.focus,.points.focus{z-index:2}}:host-context(.mat-dark-theme) :host{background:#090909;color:#fff}:host-context(.mat-dark-theme) form textarea{background:#ccc;color:#333}:host-context(.mat-dark-theme) header:after{border-color:#222}:host-context(.mat-dark-theme) header label{color:#aaa}"]
185
+ styles: [":host{display:flex;flex-direction:row;padding:.5em;height:40em;position:relative}.counted-action{display:flex;align-items:center}.count-indicator{font-size:9pt;padding:0 3px;border-radius:3px;border:1px solid #333}header{position:relative;margin-bottom:1em}header div{display:flex;align-items:center;height:30px}header button{color:#666}header label{text-transform:uppercase;z-index:1;font-size:12pt;letter-spacing:2px;font-weight:100;color:#333;margin:0 auto 0 0;display:block;width:-moz-fit-content;width:fit-content;position:relative;white-space:nowrap;overflow-x:hidden;text-overflow:ellipsis}header:after{content:\"\";border:1px solid;border-color:#ccc;height:0px;width:100%;display:block;position:relative;z-index:0}.points{width:33%;max-width:50em;display:flex;flex-direction:column}:host.point-focus .points{width:66%;max-width:50em}:host.point-focus .points .points-section{opacity:0;pointer-events:none}:host.point-focus .points .point-focus{opacity:1;pointer-events:initial}:host.point-focus .points .point-focus .actions{display:flex}banta-comments{flex-grow:1}.points{width:33%;margin-left:.5em;font-size:12pt;flex-shrink:0;max-width:30em;transition:.2s width ease-in,.2s max-width ease-in;position:relative}.points .points-section{flex-grow:1;display:flex;flex-direction:column;opacity:1;transition:.2s opacity ease-in;z-index:2}.points .point-focus{position:absolute;width:100%;bottom:0;top:1.75em;right:0;left:0;padding:.5em;opacity:0;transition:.2s opacity ease-in;flex-grow:1;display:flex;flex-direction:column}.firehose{flex-grow:1;font-size:10pt;display:flex;flex-direction:column}form{display:flex;padding:.5em 0;align-items:center}form textarea{font-size:14pt;background:black;color:#fff;border:1px solid #333;min-height:6em;width:100%}form input[type=text]{background:black;color:#fff;border:1px solid #333;width:100%;height:1em}form .actions{margin-left:1em}form button{display:block;margin:0 0 0 auto}.subcomments ::ng-deep banta-comment{font-size:10pt}.subcomments ::ng-deep banta-comment.focused-comment{background:#001321;color:#fff;font-size:12pt}.aux{width:0px;min-width:0px;overflow-x:hidden;transition:.4s width ease-out,.4s min-width ease-out;display:flex;flex-direction:column}.aux.open{width:30em;min-width:18em}.aux .aux-contents{width:30em;min-width:10em;max-width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;flex-grow:1}.notifications .notification{border-bottom:1px solid #333;padding:1em}.notifications .notification banta-timestamp{display:block;text-align:right;font-size:9pt;color:#999}.message.reply{padding:1em}.tabs{display:none}@media (max-width: 1015px){:host{flex-direction:column}.tabs{display:flex;position:absolute;top:0;left:0;right:0;width:100%;z-index:10;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:rgba(0,0,0,.5)}.points{width:100%;max-width:100%;margin-left:0}header{display:none}:host.point-focus .points{width:100%;max-width:100%}.aux{width:100%;min-width:0;min-width:initial;max-width:100%}.points,.firehose,.aux{position:absolute;top:2em;left:0;right:0;bottom:0;z-index:0;background:black}.points.focus,.firehose.focus,.aux.focus{z-index:2}}:host-context(.mat-dark-theme) :host{background:#090909;color:#fff}:host-context(.mat-dark-theme) form textarea{background:#ccc;color:#333}:host-context(.mat-dark-theme) header:after{border-color:#222}:host-context(.mat-dark-theme) header label{color:#aaa}\n"]
187
186
  },] }
188
187
  ];
189
188
  BantaComponent.ctorParameters = () => [
@@ -198,4 +197,4 @@ BantaComponent.propDecorators = {
198
197
  signInSelected: [{ type: Output }],
199
198
  hasPoint: [{ type: HostBinding, args: ['class.point-focus',] }]
200
199
  };
201
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFudGEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvYmFudGEvYmFudGEuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpFLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR3ZEOztHQUVHO0FBTUgsTUFBTSxPQUFPLGNBQWM7SUFDdkIsWUFDWSxPQUF5QixFQUN6QixTQUFxQjtRQURyQixZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQUN6QixjQUFTLEdBQVQsU0FBUyxDQUFZO1FBUXpCLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRW5DLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsYUFBUSxHQUFHLGVBQWUsQ0FBQztRQUMzQixZQUFPLEdBQUcsZUFBZSxDQUFDO1FBVTFCLGdCQUFXLEdBQVksSUFBSSxDQUFDO1FBeUU1QixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUErQmhCLGNBQVMsR0FBRyxNQUFNLENBQUM7UUFDbkIsa0JBQWEsR0FBRyxVQUFVLENBQUM7UUFjNUIsb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBOEI5QyxjQUFTLEdBQWlCLElBQUksQ0FBQztRQUMvQixpQkFBWSxHQUFvQixJQUFJLENBQUM7UUEwQ3JDLHVCQUFr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SixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLE9BQU87Z0JBQ2pCLGtqVUFBcUM7O2FBRXhDOzs7WUFWUSxlQUFlO1lBSGYsU0FBUzs7O3VCQStEYixTQUFTLFNBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtzQkEyRXRDLEtBQUs7d0JBS0wsS0FBSzs0QkFDTCxLQUFLOzZCQWdCTCxNQUFNO3VCQXVCTixXQUFXLFNBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgVmlld0NoaWxkLCBIb3N0QmluZGluZyB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE5ld01lc3NhZ2VGb3JtLCBDaGF0TWVzc2FnZSwgVXNlciwgTm90aWZpY2F0aW9uIH0gZnJvbSAnQGJhbnRhL2NvbW1vbic7XHJcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBCYW50YUNoYXRDb21wb25lbnQgfSBmcm9tICcuLi9jaGF0JztcclxuaW1wb3J0IHsgT3V0cHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQ2hhdEJhY2tlbmRCYXNlIH0gZnJvbSBcIi4uL2NoYXQtYmFja2VuZC1iYXNlXCI7XHJcbmltcG9ydCB7IENoYXRTb3VyY2VCYXNlIH0gZnJvbSBcIi4uL2NoYXQtc291cmNlLWJhc2VcIjtcclxuXHJcbi8qKlxyXG4gKiBVbmlmaWVkIGNoYXQgYW5kIGNvbW1lbnRzIGNvbXBvbmVudFxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogYGJhbnRhYCxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYW50YS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsgJy4vYmFudGEuY29tcG9uZW50LnNjc3MnIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEJhbnRhQ29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgYmFja2VuZCA6IENoYXRCYWNrZW5kQmFzZSxcclxuICAgICAgICBwcml2YXRlIG1hdERpYWxvZyA6IE1hdERpYWxvZ1xyXG4gICAgKSB7XHJcbiAgICB9XHJcblxyXG4gICAgZmlyZWhvc2VTb3VyY2UgOiBDaGF0U291cmNlQmFzZTtcclxuICAgIHBvaW50U291cmNlIDogQ2hhdFNvdXJjZUJhc2U7XHJcblxyXG4gICAgcHJpdmF0ZSBfdG9waWNJRCA6IHN0cmluZztcclxuICAgIHByaXZhdGUgX3N1YnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcblxyXG4gICAgYXV4T3BlbiA9IGZhbHNlO1xyXG4gICAgYXV4VGl0bGUgPSAnTm90aWZpY2F0aW9ucyc7XHJcbiAgICBhdXhNb2RlID0gJ25vdGlmaWNhdGlvbnMnO1xyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuX3N1YnMuYWRkKHRoaXMuYmFja2VuZC51c2VyQ2hhbmdlZC5zdWJzY3JpYmUodXNlciA9PiB0aGlzLmN1cnJlbnRVc2VyID0gdXNlcikpO1xyXG4gICAgICAgIHRoaXMuX3N1YnMuYWRkKHRoaXMuYmFja2VuZC5ub3RpZmljYXRpb25zQ2hhbmdlZC5zdWJzY3JpYmUobm90aWZzID0+IHRoaXMubm90aWZpY2F0aW9ucyA9IG5vdGlmcykpO1xyXG4gICAgICAgIHRoaXMuX3N1YnMuYWRkKHRoaXMuYmFja2VuZC5uZXdOb3RpZmljYXRpb24uc3Vic2NyaWJlKG5vdGlmID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubmV3Tm90aWZpY2F0aW9ucyA9IHRydWU7XHJcbiAgICAgICAgfSkpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBtb2JpbGVGb2N1cyA6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gICAgYXN5bmMgc2VuZFBvaW50U3ViTWVzc2FnZSgpIHtcclxuICAgICAgICBsZXQgdGV4dCA9ICh0aGlzLm5ld1BvaW50U3ViTWVzc2FnZS5tZXNzYWdlIHx8ICcnKS50cmltKCk7XHJcbiAgICAgICAgdGhpcy5uZXdQb2ludFN1Yk1lc3NhZ2UubWVzc2FnZSA9ICcnO1xyXG5cclxuICAgICAgICBpZiAodGV4dCA9PT0gJycpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBcclxuICAgICAgICBsZXQgbWVzc2FnZSA6IENoYXRNZXNzYWdlID0ge1xyXG4gICAgICAgICAgICB1c2VyOiBudWxsLFxyXG4gICAgICAgICAgICBzZW50QXQ6IERhdGUubm93KCksXHJcbiAgICAgICAgICAgIGxpa2VzOiAwLFxyXG4gICAgICAgICAgICBtZXNzYWdlOiB0ZXh0XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5wb2ludFN1YkNoYXQuc2VuZChtZXNzYWdlKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBzZW5kIHBvaW50IHN1Yi1tZXNzYWdlOmApO1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAVmlld0NoaWxkKCdmaXJlaG9zZScsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgICBmaXJlaG9zZSA6IEJhbnRhQ2hhdENvbXBvbmVudDtcclxuXHJcbiAgICBhc3luYyBnb1RvTWVzc2FnZShtZXNzYWdlIDogQ2hhdE1lc3NhZ2UpIHtcclxuXHJcbiAgICAgICAgbGV0IHRhcmdldE1lc3NhZ2UgPSBtZXNzYWdlO1xyXG5cclxuICAgICAgICBpZiAobWVzc2FnZS5wYXJlbnRNZXNzYWdlSWQpIHtcclxuICAgICAgICAgICAgLy8ganVtcCB0byB0aGUgcGFyZW50IG1lc3NhZ2UgdGhyZWFkLi4uXHJcblxyXG4gICAgICAgICAgICBsZXQgcGFyZW50TWVzc2FnZTogQ2hhdE1lc3NhZ2U7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgcGFyZW50TWVzc2FnZSA9IGF3YWl0IHRoaXMuYmFja2VuZC5nZXRNZXNzYWdlKG1lc3NhZ2UudG9waWNJZCwgbWVzc2FnZS5wYXJlbnRNZXNzYWdlSWQpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBSZWNlaXZlZCBleGNlcHRpb24gd2hpbGUgZmV0Y2hpbmcgcGFyZW50IG1lc3NhZ2U6YCk7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoIXBhcmVudE1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBsb29rIHVwIHBhcmVudCBtZXNzYWdlICR7bWVzc2FnZS50b3BpY0lkfS8ke21lc3NhZ2UucGFyZW50TWVzc2FnZUlkfWApO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgT3JpZ2luYWwgbWVzc2FnZSB3YXM6YCk7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmRpcih0YXJnZXRNZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbWVzc2FnZSA9IHBhcmVudE1lc3NhZ2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdmlld1R5cGUgPSB0aGlzLmdldFZpZXdUeXBlKG1lc3NhZ2UpO1xyXG5cclxuICAgICAgICBpZiAodmlld1R5cGUgPT09ICdjb21tZW50Jykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wb2ludFN1YkNoYXQpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBvaW50U3ViQ2hhdC5jbG9zZSlcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvaW50U3ViQ2hhdC5jbG9zZSgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb2ludFN1YkNoYXQgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMubW9iaWxlRm9jdXMgPSAncG9pbnRzJztcclxuICAgICAgICAgICAgdGhpcy5wb2ludE9wZW4gPSBtZXNzYWdlO1xyXG4gICAgICAgICAgICB0aGlzLnBvaW50U3ViQ2hhdCA9IGF3YWl0IHRoaXMuYmFja2VuZC5nZXRTb3VyY2VGb3JUaHJlYWQobWVzc2FnZS50b3BpY0lkLCBtZXNzYWdlLmlkKTtcclxuICAgICAgICAgICAgdGhpcy5wb2ludE9wZW4gPSBhd2FpdCB0aGlzLmJhY2tlbmQucmVmcmVzaE1lc3NhZ2UobWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHRoaXMubmV3UG9pbnRTdWJNZXNzYWdlID0ge307XHJcbiAgICAgICAgfSBlbHNlIGlmICh2aWV3VHlwZSA9PT0gJ2NoYXQnKSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9iaWxlRm9jdXMgPSAnZmlyZWhvc2UnO1xyXG4gICAgICAgICAgICB0aGlzLmZpcmVob3NlLmp1bXBUb01lc3NhZ2UobWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5vdGlmaWNhdGlvbnMgOiBOb3RpZmljYXRpb25bXTtcclxuICAgIG5ld05vdGlmaWNhdGlvbnMgPSBmYWxzZTtcclxuICAgIFxyXG4gICAgcG9pbnRVbmZvY3VzKCkge1xyXG4gICAgICAgIHRoaXMucG9pbnRPcGVuID0gbnVsbDtcclxuICAgICAgICBpZiAodGhpcy5wb2ludFN1YkNoYXQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMucG9pbnRTdWJDaGF0LmNsb3NlKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5wb2ludFN1YkNoYXQuY2xvc2UoKTtcclxuICAgICAgICAgICAgdGhpcy5wb2ludFN1YkNoYXQgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLl9zdWJzLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd0F1eCh0aXRsZSA6IHN0cmluZywgbW9kZSA6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuYXV4T3BlbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hdXhUaXRsZSA9IHRpdGxlO1xyXG4gICAgICAgIHRoaXMuYXV4TW9kZSA9IG1vZGU7XHJcbiAgICAgICAgdGhpcy5tb2JpbGVGb2N1cyA9ICdhdXgnO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dOb3RpZmljYXRpb25zKCkge1xyXG4gICAgICAgIHRoaXMuc2hvd0F1eCgnTm90aWZpY2F0aW9ucycsICdub3RpZmljYXRpb25zJyk7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIGdldCB0b3BpY0lEKCkgOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl90b3BpY0lEO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpIGNoYXRMYWJlbCA9ICdDaGF0JztcclxuICAgIEBJbnB1dCgpIGNvbW1lbnRzTGFiZWwgPSAnQ29tbWVudHMnO1xyXG5cclxuICAgIHNldCB0b3BpY0lEKHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5fdG9waWNJRCA9IHZhbHVlO1xyXG5cclxuICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgdGhpcy5jb25uZWN0VG9Ub3BpYyh0aGlzLl90b3BpY0lEKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFzeW5jIGNvbm5lY3RUb1RvcGljKGlkIDogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5maXJlaG9zZVNvdXJjZSA9IGF3YWl0IHRoaXMuYmFja2VuZC5nZXRTb3VyY2VGb3JUb3BpYyhgJHtpZH1fZmlyZWhvc2VgKTtcclxuICAgICAgICB0aGlzLnBvaW50U291cmNlID0gYXdhaXQgdGhpcy5iYWNrZW5kLmdldFNvdXJjZUZvclRvcGljKGAke2lkfV90aGVwb2ludGApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3NpZ25JblNlbGVjdGVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIGdldCBzaWduSW5TZWxlY3RlZCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc2lnbkluU2VsZWN0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd1NpZ25JbigpIHtcclxuICAgICAgICB0aGlzLl9zaWduSW5TZWxlY3RlZC5uZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2UoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZmlyZWhvc2VTb3VyY2UpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZmlyZWhvc2VTb3VyY2UuY2xvc2UpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpcmVob3NlU291cmNlLmNsb3NlKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZmlyZWhvc2VTb3VyY2UgPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMucG9pbnRTb3VyY2UpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMucG9pbnRTb3VyY2UuY2xvc2UpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvaW50U291cmNlLmNsb3NlKCk7XHJcbiAgICAgICAgICAgIHRoaXMucG9pbnRTb3VyY2UgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnBvaW50LWZvY3VzJylcclxuICAgIGdldCBoYXNQb2ludCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wb2ludE9wZW4gIT0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBwb2ludE9wZW4gOiBDaGF0TWVzc2FnZSA9IG51bGw7XHJcbiAgICBwb2ludFN1YkNoYXQgOiBDaGF0U291cmNlQmFzZSA9IG51bGw7XHJcblxyXG4gICAgY2xvc2VBdXgoKSB7XHJcbiAgICAgICAgdGhpcy5hdXhPcGVuID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5tb2JpbGVGb2N1cyA9ICdmaXJlaG9zZSc7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Vmlld1R5cGUobWVzc2FnZSA6IENoYXRNZXNzYWdlKSB7XHJcbiAgICAgICAgaWYgKG1lc3NhZ2UudG9waWNJZC5lbmRzV2l0aCgnX2ZpcmVob3NlJykpXHJcbiAgICAgICAgICAgIHJldHVybiAnY2hhdCc7XHJcbiAgICAgICAgZWxzZSBpZiAobWVzc2FnZS50b3BpY0lkLmVuZHNXaXRoKCdfdGhlcG9pbnQnKSlcclxuICAgICAgICAgICAgcmV0dXJuICdjb21tZW50JztcclxuXHJcbiAgICAgICAgcmV0dXJuICdjb21tZW50JztcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyB1cHZvdGVNZXNzYWdlKG1lc3NhZ2UgOiBDaGF0TWVzc2FnZSkge1xyXG4gICAgICAgIC8vIFRPRE9cclxuICAgICAgICAvL2F3YWl0IHRoaXMuYmFja2VuZC5saWtlTWVzc2FnZShtZXNzYWdlLmlkKTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93UHJvZmlsZSh1c2VyIDogVXNlcikge1xyXG4gICAgICAgIHRoaXMucHJvZmlsZVVzZXIgPSB1c2VyO1xyXG4gICAgICAgIHRoaXMuc2hvd0F1eChgQCR7dXNlci51c2VybmFtZX0ncyBQcm9maWxlYCwgJ3Byb2ZpbGUnKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm9maWxlVXNlciA6IFVzZXI7XHJcbiAgICBcclxuICAgIHJlcG9ydGVkTWVzc2FnZSA6IENoYXRNZXNzYWdlO1xyXG5cclxuICAgIHNlbmRSZXBvcnQobWVzc2FnZSA6IENoYXRNZXNzYWdlKSB7XHJcbiAgICAgICAgdGhpcy5hdXhPcGVuID0gZmFsc2U7XHJcbiAgICAgICAgYWxlcnQoJ3dvdWxkIHNlbmQgcmVwb3J0Jyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVwb3J0TWVzc2FnZShtZXNzYWdlIDogQ2hhdE1lc3NhZ2UpIHtcclxuICAgICAgICB0aGlzLnJlcG9ydGVkTWVzc2FnZSA9IG1lc3NhZ2U7XHJcbiAgICAgICAgdGhpcy5zaG93QXV4KGBSZXBvcnQgbWVzc2FnZSBmcm9tIEAke21lc3NhZ2UudXNlci51c2VybmFtZX1gLCAncmVwb3J0Jyk7XHJcbiAgICB9XHJcblxyXG4gICAgY3VycmVudFVzZXIgOiBVc2VyO1xyXG5cclxuICAgIG5ld1BvaW50U3ViTWVzc2FnZSA6IE5ld01lc3NhZ2VGb3JtID0ge307XHJcblxyXG4gICAgZ2VuZXJpY0F2YXRhclVybCA9ICdodHRwczovL2dyYXZhdGFyLmNvbS9hdmF0YXIvOTE1YzgwNGUwYmU2MDdhNGFkNzY2ZGRhZGVhNWM0OGE/cz01MTImZD1odHRwczovL2NvZGVwZW4uaW8vYXNzZXRzL2F2YXRhcnMvdXNlci1hdmF0YXItNTEyeDUxMi02ZTI0MGNmMzUwZDJmMWNjMDdjMmJlZDIzNGMzYTNiYjVmMWIyMzcwMjNjMjA0Yzc4MjYyMmU4MGQ2YjIxMmJhLnBuZyc7XHJcbn0iXX0=
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFudGEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvYmFudGEvYmFudGEuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpFLE9BQU8sRUFBRSxPQUFPLEVBQWMsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd2RDs7R0FFRztBQU1ILE1BQU0sT0FBTyxjQUFjO0lBQ3ZCLFlBQ1ksT0FBeUIsRUFDekIsU0FBcUI7UUFEckIsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFDekIsY0FBUyxHQUFULFNBQVMsQ0FBWTtRQVF6QixVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVuQyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGFBQVEsR0FBRyxlQUFlLENBQUM7UUFDM0IsWUFBTyxHQUFHLGVBQWUsQ0FBQztRQVUxQixnQkFBVyxHQUFZLElBQUksQ0FBQztRQXlFNUIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBK0JoQixjQUFTLEdBQUcsTUFBTSxDQUFDO1FBQ25CLGtCQUFhLEdBQUcsVUFBVSxDQUFDO1FBYzVCLG9CQUFlLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQThCOUMsY0FBUyxHQUFpQixJQUFJLENBQUM7UUFDL0IsaUJBQVksR0FBb0IsSUFBSSxDQUFDO1FBMENyQyx1QkFBa0IsR0FBb0IsRUFBRSxDQUFDO1FBRXpDLHFCQUFnQixHQUFHLGlNQUFpTSxDQUFDO0lBdE5y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Qzs7O1lBVlEsZUFBZTtZQUhmLFNBQVM7Ozt1QkErRGIsU0FBUyxTQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7c0JBMkV0QyxLQUFLO3dCQUtMLEtBQUs7NEJBQ0wsS0FBSzs2QkFnQkwsTUFBTTt1QkF1Qk4sV0FBVyxTQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFZpZXdDaGlsZCwgSG9zdEJpbmRpbmcgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBOZXdNZXNzYWdlRm9ybSwgQ2hhdE1lc3NhZ2UsIFVzZXIsIE5vdGlmaWNhdGlvbiB9IGZyb20gJ0BiYW50YS9jb21tb24nO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgQmFudGFDaGF0Q29tcG9uZW50IH0gZnJvbSAnLi4vY2hhdCc7XHJcbmltcG9ydCB7IE91dHB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IENoYXRCYWNrZW5kQmFzZSB9IGZyb20gXCIuLi9jaGF0LWJhY2tlbmQtYmFzZVwiO1xyXG5pbXBvcnQgeyBDaGF0U291cmNlQmFzZSB9IGZyb20gXCIuLi9jaGF0LXNvdXJjZS1iYXNlXCI7XHJcblxyXG4vKipcclxuICogVW5pZmllZCBjaGF0IGFuZCBjb21tZW50cyBjb21wb25lbnRcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IGBiYW50YWAsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmFudGEuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbICcuL2JhbnRhLmNvbXBvbmVudC5zY3NzJyBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYW50YUNvbXBvbmVudCB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGJhY2tlbmQgOiBDaGF0QmFja2VuZEJhc2UsXHJcbiAgICAgICAgcHJpdmF0ZSBtYXREaWFsb2cgOiBNYXREaWFsb2dcclxuICAgICkge1xyXG4gICAgfVxyXG5cclxuICAgIGZpcmVob3NlU291cmNlIDogQ2hhdFNvdXJjZUJhc2U7XHJcbiAgICBwb2ludFNvdXJjZSA6IENoYXRTb3VyY2VCYXNlO1xyXG5cclxuICAgIHByaXZhdGUgX3RvcGljSUQgOiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIF9zdWJzID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG5cclxuICAgIGF1eE9wZW4gPSBmYWxzZTtcclxuICAgIGF1eFRpdGxlID0gJ05vdGlmaWNhdGlvbnMnO1xyXG4gICAgYXV4TW9kZSA9ICdub3RpZmljYXRpb25zJztcclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLl9zdWJzLmFkZCh0aGlzLmJhY2tlbmQudXNlckNoYW5nZWQuc3Vic2NyaWJlKHVzZXIgPT4gdGhpcy5jdXJyZW50VXNlciA9IHVzZXIpKTtcclxuICAgICAgICB0aGlzLl9zdWJzLmFkZCh0aGlzLmJhY2tlbmQubm90aWZpY2F0aW9uc0NoYW5nZWQuc3Vic2NyaWJlKG5vdGlmcyA9PiB0aGlzLm5vdGlmaWNhdGlvbnMgPSBub3RpZnMpKTtcclxuICAgICAgICB0aGlzLl9zdWJzLmFkZCh0aGlzLmJhY2tlbmQubmV3Tm90aWZpY2F0aW9uLnN1YnNjcmliZShub3RpZiA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5ld05vdGlmaWNhdGlvbnMgPSB0cnVlO1xyXG4gICAgICAgIH0pKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgbW9iaWxlRm9jdXMgOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICAgIGFzeW5jIHNlbmRQb2ludFN1Yk1lc3NhZ2UoKSB7XHJcbiAgICAgICAgbGV0IHRleHQgPSAodGhpcy5uZXdQb2ludFN1Yk1lc3NhZ2UubWVzc2FnZSB8fCAnJykudHJpbSgpO1xyXG4gICAgICAgIHRoaXMubmV3UG9pbnRTdWJNZXNzYWdlLm1lc3NhZ2UgPSAnJztcclxuXHJcbiAgICAgICAgaWYgKHRleHQgPT09ICcnKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgXHJcbiAgICAgICAgbGV0IG1lc3NhZ2UgOiBDaGF0TWVzc2FnZSA9IHtcclxuICAgICAgICAgICAgdXNlcjogbnVsbCxcclxuICAgICAgICAgICAgc2VudEF0OiBEYXRlLm5vdygpLFxyXG4gICAgICAgICAgICBsaWtlczogMCxcclxuICAgICAgICAgICAgbWVzc2FnZTogdGV4dFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucG9pbnRTdWJDaGF0LnNlbmQobWVzc2FnZSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gc2VuZCBwb2ludCBzdWItbWVzc2FnZTpgKTtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnZmlyZWhvc2UnLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gICAgZmlyZWhvc2UgOiBCYW50YUNoYXRDb21wb25lbnQ7XHJcblxyXG4gICAgYXN5bmMgZ29Ub01lc3NhZ2UobWVzc2FnZSA6IENoYXRNZXNzYWdlKSB7XHJcblxyXG4gICAgICAgIGxldCB0YXJnZXRNZXNzYWdlID0gbWVzc2FnZTtcclxuXHJcbiAgICAgICAgaWYgKG1lc3NhZ2UucGFyZW50TWVzc2FnZUlkKSB7XHJcbiAgICAgICAgICAgIC8vIGp1bXAgdG8gdGhlIHBhcmVudCBtZXNzYWdlIHRocmVhZC4uLlxyXG5cclxuICAgICAgICAgICAgbGV0IHBhcmVudE1lc3NhZ2U6IENoYXRNZXNzYWdlO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIHBhcmVudE1lc3NhZ2UgPSBhd2FpdCB0aGlzLmJhY2tlbmQuZ2V0TWVzc2FnZShtZXNzYWdlLnRvcGljSWQsIG1lc3NhZ2UucGFyZW50TWVzc2FnZUlkKTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgUmVjZWl2ZWQgZXhjZXB0aW9uIHdoaWxlIGZldGNoaW5nIHBhcmVudCBtZXNzYWdlOmApO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCFwYXJlbnRNZXNzYWdlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gbG9vayB1cCBwYXJlbnQgbWVzc2FnZSAke21lc3NhZ2UudG9waWNJZH0vJHttZXNzYWdlLnBhcmVudE1lc3NhZ2VJZH1gKTtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYE9yaWdpbmFsIG1lc3NhZ2Ugd2FzOmApO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5kaXIodGFyZ2V0TWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBwYXJlbnRNZXNzYWdlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHZpZXdUeXBlID0gdGhpcy5nZXRWaWV3VHlwZShtZXNzYWdlKTtcclxuXHJcbiAgICAgICAgaWYgKHZpZXdUeXBlID09PSAnY29tbWVudCcpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMucG9pbnRTdWJDaGF0KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wb2ludFN1YkNoYXQuY2xvc2UpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb2ludFN1YkNoYXQuY2xvc2UoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9pbnRTdWJDaGF0ID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm1vYmlsZUZvY3VzID0gJ3BvaW50cyc7XHJcbiAgICAgICAgICAgIHRoaXMucG9pbnRPcGVuID0gbWVzc2FnZTtcclxuICAgICAgICAgICAgdGhpcy5wb2ludFN1YkNoYXQgPSBhd2FpdCB0aGlzLmJhY2tlbmQuZ2V0U291cmNlRm9yVGhyZWFkKG1lc3NhZ2UudG9waWNJZCwgbWVzc2FnZS5pZCk7XHJcbiAgICAgICAgICAgIHRoaXMucG9pbnRPcGVuID0gYXdhaXQgdGhpcy5iYWNrZW5kLnJlZnJlc2hNZXNzYWdlKG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB0aGlzLm5ld1BvaW50U3ViTWVzc2FnZSA9IHt9O1xyXG4gICAgICAgIH0gZWxzZSBpZiAodmlld1R5cGUgPT09ICdjaGF0Jykge1xyXG4gICAgICAgICAgICB0aGlzLm1vYmlsZUZvY3VzID0gJ2ZpcmVob3NlJztcclxuICAgICAgICAgICAgdGhpcy5maXJlaG9zZS5qdW1wVG9NZXNzYWdlKG1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBub3RpZmljYXRpb25zIDogTm90aWZpY2F0aW9uW107XHJcbiAgICBuZXdOb3RpZmljYXRpb25zID0gZmFsc2U7XHJcbiAgICBcclxuICAgIHBvaW50VW5mb2N1cygpIHtcclxuICAgICAgICB0aGlzLnBvaW50T3BlbiA9IG51bGw7XHJcbiAgICAgICAgaWYgKHRoaXMucG9pbnRTdWJDaGF0KSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnBvaW50U3ViQ2hhdC5jbG9zZSlcclxuICAgICAgICAgICAgICAgIHRoaXMucG9pbnRTdWJDaGF0LmNsb3NlKCk7XHJcbiAgICAgICAgICAgIHRoaXMucG9pbnRTdWJDaGF0ID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5fc3Vicy51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dBdXgodGl0bGUgOiBzdHJpbmcsIG1vZGUgOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmF1eE9wZW4gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYXV4VGl0bGUgPSB0aXRsZTtcclxuICAgICAgICB0aGlzLmF1eE1vZGUgPSBtb2RlO1xyXG4gICAgICAgIHRoaXMubW9iaWxlRm9jdXMgPSAnYXV4JztcclxuICAgIH1cclxuXHJcbiAgICBzaG93Tm90aWZpY2F0aW9ucygpIHtcclxuICAgICAgICB0aGlzLnNob3dBdXgoJ05vdGlmaWNhdGlvbnMnLCAnbm90aWZpY2F0aW9ucycpO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgdG9waWNJRCgpIDogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdG9waWNJRDtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKSBjaGF0TGFiZWwgPSAnQ2hhdCc7XHJcbiAgICBASW5wdXQoKSBjb21tZW50c0xhYmVsID0gJ0NvbW1lbnRzJztcclxuXHJcbiAgICBzZXQgdG9waWNJRCh2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuX3RvcGljSUQgPSB2YWx1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICAgIHRoaXMuY29ubmVjdFRvVG9waWModGhpcy5fdG9waWNJRCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhc3luYyBjb25uZWN0VG9Ub3BpYyhpZCA6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuZmlyZWhvc2VTb3VyY2UgPSBhd2FpdCB0aGlzLmJhY2tlbmQuZ2V0U291cmNlRm9yVG9waWMoYCR7aWR9X2ZpcmVob3NlYCk7XHJcbiAgICAgICAgdGhpcy5wb2ludFNvdXJjZSA9IGF3YWl0IHRoaXMuYmFja2VuZC5nZXRTb3VyY2VGb3JUb3BpYyhgJHtpZH1fdGhlcG9pbnRgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9zaWduSW5TZWxlY3RlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBnZXQgc2lnbkluU2VsZWN0ZWQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NpZ25JblNlbGVjdGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dTaWduSW4oKSB7XHJcbiAgICAgICAgdGhpcy5fc2lnbkluU2VsZWN0ZWQubmV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmZpcmVob3NlU291cmNlKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZpcmVob3NlU291cmNlLmNsb3NlKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5maXJlaG9zZVNvdXJjZS5jbG9zZSgpO1xyXG4gICAgICAgICAgICB0aGlzLmZpcmVob3NlU291cmNlID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnBvaW50U291cmNlKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnBvaW50U291cmNlLmNsb3NlKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5wb2ludFNvdXJjZS5jbG9zZSgpO1xyXG4gICAgICAgICAgICB0aGlzLnBvaW50U291cmNlID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5wb2ludC1mb2N1cycpXHJcbiAgICBnZXQgaGFzUG9pbnQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucG9pbnRPcGVuICE9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcG9pbnRPcGVuIDogQ2hhdE1lc3NhZ2UgPSBudWxsO1xyXG4gICAgcG9pbnRTdWJDaGF0IDogQ2hhdFNvdXJjZUJhc2UgPSBudWxsO1xyXG5cclxuICAgIGNsb3NlQXV4KCkge1xyXG4gICAgICAgIHRoaXMuYXV4T3BlbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubW9iaWxlRm9jdXMgPSAnZmlyZWhvc2UnO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFZpZXdUeXBlKG1lc3NhZ2UgOiBDaGF0TWVzc2FnZSkge1xyXG4gICAgICAgIGlmIChtZXNzYWdlLnRvcGljSWQuZW5kc1dpdGgoJ19maXJlaG9zZScpKVxyXG4gICAgICAgICAgICByZXR1cm4gJ2NoYXQnO1xyXG4gICAgICAgIGVsc2UgaWYgKG1lc3NhZ2UudG9waWNJZC5lbmRzV2l0aCgnX3RoZXBvaW50JykpXHJcbiAgICAgICAgICAgIHJldHVybiAnY29tbWVudCc7XHJcblxyXG4gICAgICAgIHJldHVybiAnY29tbWVudCc7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgdXB2b3RlTWVzc2FnZShtZXNzYWdlIDogQ2hhdE1lc3NhZ2UpIHtcclxuICAgICAgICAvLyBUT0RPXHJcbiAgICAgICAgLy9hd2FpdCB0aGlzLmJhY2tlbmQubGlrZU1lc3NhZ2UobWVzc2FnZS5pZCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd1Byb2ZpbGUodXNlciA6IFVzZXIpIHtcclxuICAgICAgICB0aGlzLnByb2ZpbGVVc2VyID0gdXNlcjtcclxuICAgICAgICB0aGlzLnNob3dBdXgoYEAke3VzZXIudXNlcm5hbWV9J3MgUHJvZmlsZWAsICdwcm9maWxlJyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvZmlsZVVzZXIgOiBVc2VyO1xyXG4gICAgXHJcbiAgICByZXBvcnRlZE1lc3NhZ2UgOiBDaGF0TWVzc2FnZTtcclxuXHJcbiAgICBzZW5kUmVwb3J0KG1lc3NhZ2UgOiBDaGF0TWVzc2FnZSkge1xyXG4gICAgICAgIHRoaXMuYXV4T3BlbiA9IGZhbHNlO1xyXG4gICAgICAgIGFsZXJ0KCd3b3VsZCBzZW5kIHJlcG9ydCcpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlcG9ydE1lc3NhZ2UobWVzc2FnZSA6IENoYXRNZXNzYWdlKSB7XHJcbiAgICAgICAgdGhpcy5yZXBvcnRlZE1lc3NhZ2UgPSBtZXNzYWdlO1xyXG4gICAgICAgIHRoaXMuc2hvd0F1eChgUmVwb3J0IG1lc3NhZ2UgZnJvbSBAJHttZXNzYWdlLnVzZXIudXNlcm5hbWV9YCwgJ3JlcG9ydCcpO1xyXG4gICAgfVxyXG5cclxuICAgIGN1cnJlbnRVc2VyIDogVXNlcjtcclxuXHJcbiAgICBuZXdQb2ludFN1Yk1lc3NhZ2UgOiBOZXdNZXNzYWdlRm9ybSA9IHt9O1xyXG5cclxuICAgIGdlbmVyaWNBdmF0YXJVcmwgPSAnaHR0cHM6Ly9ncmF2YXRhci5jb20vYXZhdGFyLzkxNWM4MDRlMGJlNjA3YTRhZDc2NmRkYWRlYTVjNDhhP3M9NTEyJmQ9aHR0cHM6Ly9jb2RlcGVuLmlvL2Fzc2V0cy9hdmF0YXJzL3VzZXItYXZhdGFyLTUxMng1MTItNmUyNDBjZjM1MGQyZjFjYzA3YzJiZWQyMzRjM2EzYmI1ZjFiMjM3MDIzYzIwNGM3ODI2MjJlODBkNmIyMTJiYS5wbmcnO1xyXG59Il19
@@ -1,7 +1,6 @@
1
1
  import { __awaiter } from "tslib";
2
- import { Component, Input, Output, ViewChild, ElementRef } from "@angular/core";
2
+ import { Component, Input, Output, ViewChild } from "@angular/core";
3
3
  import { Subject, Subscription } from 'rxjs';
4
- import { ChatViewComponent } from '../chat-view/chat-view.component';
5
4
  import { ChatBackendBase } from "../../chat-backend-base";
6
5
  /**
7
6
  * Chat component
@@ -146,8 +145,8 @@ export class BantaChatComponent {
146
145
  BantaChatComponent.decorators = [
147
146
  { type: Component, args: [{
148
147
  selector: 'banta-chat',
149
- template: "<banta-chat-view \r\n #chatView\r\n [source]=\"source\"\r\n [emptyLabel]=\"emptyLabel\"\r\n (upvoted)=\"upvote($event)\"\r\n (reported)=\"report($event)\"\r\n (selected)=\"select($event)\"\r\n (received)=\"onReceived($event)\"\r\n (userSelected)=\"selectUser($event)\"\r\n ></banta-chat-view>\r\n\r\n<form class=\"new-message\" (submit)=\"sendMessage()\">\r\n \r\n <div class=\"entry-container\">\r\n <input\r\n #input\r\n type=\"text\"\r\n name=\"message\" \r\n autocomplete=\"off\"\r\n [placeholder]=\"messageFieldPlaceholder\"\r\n (keydown)=\"onKeyDown($event)\"\r\n [(ngModel)]=\"newMessage.message\" />\r\n \r\n <emoji-selector-button\r\n (selected)=\"insertEmoji($event)\"\r\n overlayY=\"bottom\"\r\n overlayX=\"end\"\r\n originY=\"top\"\r\n ></emoji-selector-button>\r\n </div>\r\n\r\n <div class=\"actions\">\r\n\r\n <ng-container *ngIf=\"!user\">\r\n <button type=\"button\" (click)=\"showSignIn()\" mat-raised-button color=\"primary\">{{signInLabel}}</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"user\">\r\n <button *ngIf=\"canChat\" [disabled]=\"!newMessage.message\" mat-raised-button color=\"primary\">{{sendLabel}}</button>\r\n <button *ngIf=\"!canChat\" type=\"button\" (click)=\"sendPermissionError()\" mat-raised-button color=\"primary\">{{permissionDeniedLabel}}</button>\r\n </ng-container>\r\n </div>\r\n</form>",
150
- styles: [":host{flex-direction:column;border-radius:5px;padding:10px;font-size:10pt;min-height:1px}.entry-container,:host{display:flex;flex-grow:1}.entry-container{flex-direction:row;position:relative}.entry-container emoji-selector-button{position:absolute;right:0;top:.15em}.entry-container input{height:2.6em;font-size:12pt;padding-left:1em}.entry-container input:-webkit-autofill,.entry-container input:-webkit-autofill:focus,.entry-container input:-webkit-autofill:hover{outline:1px solid #9da302;-webkit-text-fill-color:#9da302;-webkit-box-shadow:0 0 0 1000px #211e07 inset;-webkit-transition:background-color 5000s ease-in-out 0s;transition:background-color 5000s ease-in-out 0s;caret-color:#9da302}.entry-container emoji-selector-panel{pointer-events:none;opacity:0;position:absolute;bottom:3.5em;right:0}.entry-container emoji-selector-panel.visible{opacity:1;pointer-events:auto}form{display:flex;padding:.5em 0;align-items:center}form textarea{font-size:14pt;background:#000;color:#fff;border:1px solid #333;min-height:6em;width:100%}form input[type=text]{background:#fff;color:#000;border:1px solid #ccc;width:100%;height:2.5em}form .actions{margin-left:1em}form button{display:block;margin:0 0 0 auto}:host-context(.mat-dark-theme) form input[type=text]{background:#000;color:#fff;border:1px solid #333}"]
148
+ template: "<banta-chat-view \r\n #chatView\r\n [source]=\"source\"\r\n [emptyLabel]=\"emptyLabel\"\r\n (upvoted)=\"upvote($event)\"\r\n (reported)=\"report($event)\"\r\n (selected)=\"select($event)\"\r\n (received)=\"onReceived($event)\"\r\n (userSelected)=\"selectUser($event)\"\r\n ></banta-chat-view>\r\n\r\n<form class=\"new-message\" (submit)=\"sendMessage()\">\r\n \r\n <div class=\"entry-container\">\r\n <input\r\n #input\r\n type=\"text\"\r\n name=\"message\" \r\n autocomplete=\"off\"\r\n enterkeyhint=\"send\"\r\n [placeholder]=\"messageFieldPlaceholder\"\r\n (keydown)=\"onKeyDown($event)\"\r\n [(ngModel)]=\"newMessage.message\" />\r\n \r\n <emoji-selector-button\r\n (selected)=\"insertEmoji($event)\"\r\n overlayY=\"bottom\"\r\n overlayX=\"end\"\r\n originY=\"top\"\r\n ></emoji-selector-button>\r\n </div>\r\n\r\n <div class=\"actions\">\r\n\r\n <ng-container *ngIf=\"!user\">\r\n <button type=\"button\" (click)=\"showSignIn()\" mat-raised-button color=\"primary\">{{signInLabel}}</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"user\">\r\n <button *ngIf=\"canChat\" [disabled]=\"!newMessage.message\" mat-raised-button color=\"primary\">{{sendLabel}}</button>\r\n <button *ngIf=\"!canChat\" type=\"button\" (click)=\"sendPermissionError()\" mat-raised-button color=\"primary\">{{permissionDeniedLabel}}</button>\r\n </ng-container>\r\n </div>\r\n</form>",
149
+ styles: [":host{display:flex;flex-direction:column;border-radius:5px;padding:10px;flex-grow:1;font-size:10pt;min-height:1px}.entry-container{display:flex;flex-direction:row;flex-grow:1;position:relative}.entry-container emoji-selector-button{position:absolute;right:0;top:.15em}.entry-container input{height:2.6em;font-size:12pt;padding-left:1em}.entry-container input:-webkit-autofill,.entry-container input:-webkit-autofill:hover,.entry-container input:-webkit-autofill:focus{outline:1px solid #9da302;-webkit-text-fill-color:#9da302;-webkit-box-shadow:0 0 0px 1000px #211e07 inset;-webkit-transition:background-color 5000s ease-in-out 0s;transition:background-color 5000s ease-in-out 0s;caret-color:#9da302}.entry-container emoji-selector-panel{pointer-events:none;opacity:0;position:absolute;bottom:3.5em;right:0}.entry-container emoji-selector-panel.visible{opacity:1;pointer-events:initial}form{display:flex;padding:.5em 0;align-items:center}form textarea{font-size:14pt;background:black;color:#fff;border:1px solid #333;min-height:6em;width:100%}form input[type=text]{background:white;color:#000;border:1px solid #ccc;width:100%;height:2.5em}form .actions{margin-left:1em}form button{display:block;margin:0 0 0 auto}:host-context(.mat-dark-theme) form input[type=text]{background:black;color:#fff;border:1px solid #333}\n"]
151
150
  },] }
152
151
  ];
153
152
  BantaChatComponent.ctorParameters = () => [
@@ -172,4 +171,4 @@ BantaChatComponent.propDecorators = {
172
171
  chatView: [{ type: ViewChild, args: ['chatView',] }],
173
172
  inputElementRef: [{ type: ViewChild, args: ['input',] }]
174
173
  };
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFudGEtY2hhdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZGsvc3JjL2xpYi9jaGF0L2JhbnRhLWNoYXQvYmFudGEtY2hhdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxPQUFPLEVBQWMsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUcxRDs7R0FFRztBQU1ILE1BQU0sT0FBTyxrQkFBa0I7SUFDM0IsWUFDWSxPQUF5QjtRQUF6QixZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQUs3QixVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuQyxTQUFJLEdBQVUsSUFBSSxDQUFDO1FBc0NWLGdCQUFXLEdBQUcsU0FBUyxDQUFDO1FBQ3hCLGNBQVMsR0FBRyxNQUFNLENBQUM7UUFDbkIsMEJBQXFCLEdBQUcsTUFBTSxDQUFDO1FBQy9CLDRCQUF1QixHQUFHLE1BQU0sQ0FBQztRQUNqQyxlQUFVLEdBQUcsc0JBQXNCLENBQUM7UUFFckMsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFlLENBQUM7UUFDdkMsZUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDM0MsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFlLENBQUM7UUFDdkMsZUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDM0MsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFlLENBQUM7UUFDdEMsY0FBUyxHQUFH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LFlBQVk7Z0JBQ3RCLDZrREFBMEM7O2FBRTdDOzs7WUFWUSxlQUFlOzs7eUNBcUJuQixLQUFLO3FCQVdMLEtBQUs7c0JBU0wsS0FBSzswQkFnQkwsS0FBSzt3QkFDTCxLQUFLO29DQUNMLEtBQUs7c0NBQ0wsS0FBSzt5QkFDTCxLQUFLO3VCQWlCTCxNQUFNO3VCQUNOLE1BQU07c0JBQ04sTUFBTTsyQkFDTixNQUFNO29DQUNOLE1BQU07NkJBQ04sTUFBTTt1QkFDTixNQUFNO3VCQTBCTixTQUFTLFNBQUMsVUFBVTs4QkFDcEIsU0FBUyxTQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgVXNlciwgQ2hhdE1lc3NhZ2UsIE5ld01lc3NhZ2VGb3JtIH0gZnJvbSAnQGJhbnRhL2NvbW1vbic7XHJcbmltcG9ydCB7IENoYXRWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi4vY2hhdC12aWV3L2NoYXQtdmlldy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDaGF0QmFja2VuZEJhc2UgfSBmcm9tIFwiLi4vLi4vY2hhdC1iYWNrZW5kLWJhc2VcIjtcclxuaW1wb3J0IHsgQ2hhdFNvdXJjZUJhc2UgfSBmcm9tIFwiLi4vLi4vY2hhdC1zb3VyY2UtYmFzZVwiO1xyXG5cclxuLyoqXHJcbiAqIENoYXQgY29tcG9uZW50XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYmFudGEtY2hhdCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmFudGEtY2hhdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9iYW50YS1jaGF0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEJhbnRhQ2hhdENvbXBvbmVudCB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGJhY2tlbmQgOiBDaGF0QmFja2VuZEJhc2VcclxuICAgICkge1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3NvdXJjZSA6IENoYXRTb3VyY2VCYXNlO1xyXG4gICAgcHJpdmF0ZSBfc3VicyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICAgIHVzZXIgOiBVc2VyID0gbnVsbDtcclxuXHJcbiAgICBASW5wdXQoKSBzaG91bGRJbnRlcmNlcHRNZXNzYWdlU2VuZD86IChtZXNzYWdlOiBDaGF0TWVzc2FnZSwgc291cmNlOiBDaGF0U291cmNlQmFzZSkgPT4gYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj47XHJcblxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuX3N1YnMuYWRkKHRoaXMuYmFja2VuZC51c2VyQ2hhbmdlZC5zdWJzY3JpYmUodXNlciA9PiB0aGlzLnVzZXIgPSB1c2VyKSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5fc3Vicy51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgc291cmNlKCkgOiBDaGF0U291cmNlQmFzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZTtcclxuICAgIH1cclxuXHJcbiAgICBzZXQgc291cmNlKHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5fc291cmNlID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIGdldCB0b3BpY0lEKCkgOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zb3VyY2UuaWRlbnRpZmllcjtcclxuICAgIH1cclxuXHJcbiAgICBzZXQgdG9waWNJRCh2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuc2V0U291cmNlRnJvbVRvcGljSUQodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgc2V0U291cmNlRnJvbVRvcGljSUQodG9waWNJRCA6IHN0cmluZykge1xyXG4gICAgICAgIGlmICh0aGlzLl9zb3VyY2UgJiYgdGhpcy5fc291cmNlLmNsb3NlKVxyXG4gICAgICAgICAgICB0aGlzLl9zb3VyY2UuY2xvc2UoKTtcclxuICAgICAgICB0aGlzLl9zb3VyY2UgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX3NvdXJjZSA9IGF3YWl0IHRoaXMuYmFja2VuZC5nZXRTb3VyY2VGb3JUb3BpYyh0b3BpY0lEKTtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKSBzaWduSW5MYWJlbCA9ICdTaWduIEluJztcclxuICAgIEBJbnB1dCgpIHNlbmRMYWJlbCA9ICdTZW5kJztcclxuICAgIEBJbnB1dCgpIHBlcm1pc3Npb25EZW5pZWRMYWJlbCA9ICdTZW5kJztcclxuICAgIEBJbnB1dCgpIG1lc3NhZ2VGaWVsZFBsYWNlaG9sZGVyID0gJ0NoYXQnO1xyXG4gICAgQElucHV0KCkgZW1wdHlMYWJlbCA9ICdCZSB0aGUgZmlyc3QgdG8gY2hhdCc7XHJcblxyXG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWQgPSBuZXcgU3ViamVjdDxDaGF0TWVzc2FnZT4oKTtcclxuICAgIHByaXZhdGUgX3NlbGVjdGVkJCA9IHRoaXMuX3NlbGVjdGVkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgcHJpdmF0ZSBfcmVwb3J0ZWQgPSBuZXcgU3ViamVjdDxDaGF0TWVzc2FnZT4oKTtcclxuICAgIHByaXZhdGUgX3JlcG9ydGVkJCA9IHRoaXMuX3JlcG9ydGVkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgcHJpdmF0ZSBfdXB2b3RlZCA9IG5ldyBTdWJqZWN0PENoYXRNZXNzYWdlPigpO1xyXG4gICAgcHJpdmF0ZSBfdXB2b3RlZCQgPSB0aGlzLl91cHZvdGVkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgcHJpdmF0ZSBfdXNlclNlbGVjdGVkID0gbmV3IFN1YmplY3Q8Q2hhdE1lc3NhZ2U+KCk7XHJcbiAgICBwcml2YXRlIF91c2VyU2VsZWN0ZWQkID0gdGhpcy5fdXNlclNlbGVjdGVkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgcHJpdmF0ZSBfcGVybWlzc2lvbkRlbmllZEVycm9yID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xyXG4gICAgcHJpdmF0ZSBfcGVybWlzc2lvbkRlbmllZEVycm9yJCA9IHRoaXMuX3Blcm1pc3Npb25EZW5pZWRFcnJvci5hc09ic2VydmFibGUoKTtcclxuICAgIHByaXZhdGUgX3NpZ25JblNlbGVjdGVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgIHByaXZhdGUgX3NpZ25JblNlbGVjdGVkJCA9IHRoaXMuX3NpZ25JblNlbGVjdGVkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgcHJpdmF0ZSBfcmVjZWl2ZWQgPSBuZXcgU3ViamVjdDxDaGF0TWVzc2FnZT4oKTtcclxuICAgIHByaXZhdGUgX3JlY2VpdmVkJCA9IHRoaXMuX3JlY2VpdmVkLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAgIEBPdXRwdXQoKSBnZXQgc2VsZWN0ZWQoKSB7IHJldHVybiB0aGlzLl9zZWxlY3RlZCQ7IH1cclxuICAgIEBPdXRwdXQoKSBnZXQgcmVwb3J0ZWQoKSB7IHJldHVybiB0aGlzLl9yZXBvcnRlZCQ7IH1cclxuICAgIEBPdXRwdXQoKSBnZXQgdXB2b3RlZCgpIHsgcmV0dXJuIHRoaXMuX3Vwdm90ZWQkOyB9XHJcbiAgICBAT3V0cHV0KCkgZ2V0IHVzZXJTZWxlY3RlZCgpIHsgcmV0dXJuIHRoaXMuX3VzZXJTZWxlY3RlZCQ7IH1cclxuICAgIEBPdXRwdXQoKSBnZXQgcGVybWlzc2lvbkRlbmllZEVycm9yKCkgeyByZXR1cm4gdGhpcy5fcGVybWlzc2lvbkRlbmllZEVycm9yJDsgfVxyXG4gICAgQE91dHB1dCgpIGdldCBzaWduSW5TZWxlY3RlZCgpIHsgcmV0dXJuIHRoaXMuX3NpZ25JblNlbGVjdGVkJDsgfVxyXG4gICAgQE91dHB1dCgpIGdldCByZWNlaXZlZCgpIHsgcmV0dXJuIHRoaXMuX3JlY2VpdmVkJDsgfVxyXG5cclxuICAgIG9uUmVjZWl2ZWQobWVzc2FnZTogQ2hhdE1lc3NhZ2UpIHtcclxuICAgICAgICB0aGlzLl9yZWNlaXZlZC5uZXh0KG1lc3NhZ2UpO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dFbW9qaVBhbmVsID0gZmFsc2U7XHJcblxyXG4gICAgc2hvd1NpZ25JbigpIHtcclxuICAgICAgICB0aGlzLl9zaWduSW5TZWxlY3RlZC5uZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2VuZFBlcm1pc3Npb25FcnJvcihtZXNzYWdlOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl9wZXJtaXNzaW9uRGVuaWVkRXJyb3IubmV4dChtZXNzYWdlKTtcclxuICAgIH1cclxuXHJcbiAgICBpbnNlcnRFbW9qaShlbW9qaSkge1xyXG4gICAgICAgIGxldCBtZXNzYWdlID0gdGhpcy5uZXdNZXNzYWdlLm1lc3NhZ2UgfHwgJyc7XHJcblxyXG4gICAgICAgIHRoaXMubmV3TWVzc2FnZS5tZXNzYWdlID0gbWVzc2FnZSArIGVtb2ppO1xyXG4gICAgfVxyXG5cclxuICAgIG9uS2V5RG93bihldmVudCA6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgICAgICAvLyBUT0RPXHJcbiAgICB9XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnY2hhdFZpZXcnKSBjaGF0VmlldyA6IENoYXRWaWV3Q29tcG9uZW50O1xyXG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dEVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XHJcblxyXG4gICAganVtcFRvTWVzc2FnZShtZXNzYWdlIDogQ2hhdE1lc3NhZ2UpIHtcclxuICAgICAgICBpZiAodGhpcy5jaGF0VmlldylcclxuICAgICAgICAgICAgdGhpcy5jaGF0Vmlldy5qdW1wVG8obWVzc2FnZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2VsZWN0KG1lc3NhZ2UgOiBDaGF0TWVzc2FnZSkge1xyXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkLm5leHQobWVzc2FnZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2VsZWN0VXNlcihtZXNzYWdlIDogQ2hhdE1lc3NhZ2UpIHtcclxuICAgICAgICB0aGlzLl91c2VyU2VsZWN0ZWQubmV4dChtZXNzYWdlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXBvcnQobWVzc2FnZSA6IENoYXRNZXNzYWdlKSB7XHJcbiAgICAgICAgdGhpcy5fcmVwb3J0ZWQubmV4dChtZXNzYWdlKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyB1cHZvdGUobWVzc2FnZSA6IENoYXRNZXNzYWdlKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5zb3VyY2UubGlrZU1lc3NhZ2UobWVzc2FnZS5pZCk7XHJcbiAgICAgICAgdGhpcy5fdXB2b3RlZC5uZXh0KG1lc3NhZ2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBjYW5DaGF0KCkge1xyXG4gICAgICAgIGlmICghdGhpcy51c2VyKVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICAgIC8vIFRPRE9cclxuICAgICAgICAvLyBpZiAoIXRoaXMudXNlci5wZXJtaXNzaW9ucylcclxuICAgICAgICAvLyAgICAgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgICAgIC8vIGlmICghdGhpcy51c2VyLnBlcm1pc3Npb25zLmNhbkNoYXQpXHJcbiAgICAgICAgLy8gICAgIHJldHVybiB0cnVlO1xyXG5cclxuICAgICAgICAvLyByZXR1cm4gdGhpcy51c2VyLnBlcm1pc3Npb25zPy5jYW5DaGF0KHRoaXMuc291cmNlKTtcclxuICAgICAgICBcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBuZXdNZXNzYWdlIDogTmV3TWVzc2FnZUZvcm0gPSB7fTtcclxuXHJcbiAgICBhc3luYyBzZW5kTWVzc2FnZSgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuc291cmNlKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIGxldCB0ZXh0ID0gKHRoaXMubmV3TWVzc2FnZS5tZXNzYWdlIHx8ICcnKS50cmltKCk7XHJcbiAgICAgICAgdGhpcy5uZXdNZXNzYWdlLm1lc3NhZ2UgPSAnJztcclxuXHJcbiAgICAgICAgaWYgKHRleHQgPT09ICcnKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIGxldCBtZXNzYWdlIDogQ2hhdE1lc3NhZ2UgPSB7XHJcbiAgICAgICAgICAgIHVzZXI6IG51bGwsXHJcbiAgICAgICAgICAgIHNlbnRBdDogRGF0ZS5ub3coKSxcclxuICAgICAgICAgICAgbGlrZXM6IDAsXHJcbiAgICAgICAgICAgIHVybDogdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyBsb2NhdGlvbi5ocmVmIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICBtZXNzYWdlOiB0ZXh0XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgaW50ZXJjZXB0ID0gYXdhaXQgdGhpcy5zaG91bGRJbnRlcmNlcHRNZXNzYWdlU2VuZD8uKG1lc3NhZ2UsIHRoaXMuc291cmNlKTtcclxuICAgICAgICAgICAgaWYgKCFpbnRlcmNlcHQpIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc291cmNlLnNlbmQobWVzc2FnZSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuY2hhdFZpZXcuc2Nyb2xsVG9MYXRlc3QoKTtcclxuICAgICAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIHNlbmQgbWVzc2FnZTogYCwgbWVzc2FnZSk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFudGEtY2hhdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZGsvc3JjL2xpYi9jaGF0L2JhbnRhLWNoYXQvYmFudGEtY2hhdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLE9BQU8sRUFBYyxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRzFEOztHQUVHO0FBTUgsTUFBTSxPQUFPLGtCQUFrQjtJQUMzQixZQUNZLE9BQXlCO1FBQXpCLFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBSzdCLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25DLFNBQUksR0FBVSxJQUFJLENBQUM7UUFzQ1YsZ0JBQVcsR0FBRyxTQUFTLENBQUM7UUFDeEIsY0FBUyxHQUFHLE1BQU0sQ0FBQztRQUNuQiwwQkFBcUIsR0FBRyxNQUFNLENBQUM7UUFDL0IsNEJBQXVCLEdBQUcsTUFBTSxDQUFDO1FBQ2pDLGVBQVUsR0FBRyxzQkFBc0IsQ0FBQztRQUVyQyxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQWUsQ0FBQztRQUN2QyxlQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMzQyxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQWUsQ0FBQztRQUN2QyxlQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMzQyxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQWUsQ0FBQztRQUN0QyxjQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN6QyxrQkFBYSxHQUFHLElB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Ozt5Q0FxQm5CLEtBQUs7cUJBV0wsS0FBSztzQkFTTCxLQUFLOzBCQWdCTCxLQUFLO3dCQUNMLEtBQUs7b0NBQ0wsS0FBSztzQ0FDTCxLQUFLO3lCQUNMLEtBQUs7dUJBaUJMLE1BQU07dUJBQ04sTUFBTTtzQkFDTixNQUFNOzJCQUNOLE1BQU07b0NBQ04sTUFBTTs2QkFDTixNQUFNO3VCQUNOLE1BQU07dUJBMEJOLFNBQVMsU0FBQyxVQUFVOzhCQUNwQixTQUFTLFNBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkLCBFbGVtZW50UmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBVc2VyLCBDaGF0TWVzc2FnZSwgTmV3TWVzc2FnZUZvcm0gfSBmcm9tICdAYmFudGEvY29tbW9uJztcclxuaW1wb3J0IHsgQ2hhdFZpZXdDb21wb25lbnQgfSBmcm9tICcuLi9jaGF0LXZpZXcvY2hhdC12aWV3LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENoYXRCYWNrZW5kQmFzZSB9IGZyb20gXCIuLi8uLi9jaGF0LWJhY2tlbmQtYmFzZVwiO1xyXG5pbXBvcnQgeyBDaGF0U291cmNlQmFzZSB9IGZyb20gXCIuLi8uLi9jaGF0LXNvdXJjZS1iYXNlXCI7XHJcblxyXG4vKipcclxuICogQ2hhdCBjb21wb25lbnRcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdiYW50YS1jaGF0JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYW50YS1jaGF0LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2JhbnRhLWNoYXQuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFudGFDaGF0Q29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgYmFja2VuZCA6IENoYXRCYWNrZW5kQmFzZVxyXG4gICAgKSB7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfc291cmNlIDogQ2hhdFNvdXJjZUJhc2U7XHJcbiAgICBwcml2YXRlIF9zdWJzID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gICAgdXNlciA6IFVzZXIgPSBudWxsO1xyXG5cclxuICAgIEBJbnB1dCgpIHNob3VsZEludGVyY2VwdE1lc3NhZ2VTZW5kPzogKG1lc3NhZ2U6IENoYXRNZXNzYWdlLCBzb3VyY2U6IENoYXRTb3VyY2VCYXNlKSA9PiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPjtcclxuXHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5fc3Vicy5hZGQodGhpcy5iYWNrZW5kLnVzZXJDaGFuZ2VkLnN1YnNjcmliZSh1c2VyID0+IHRoaXMudXNlciA9IHVzZXIpKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLl9zdWJzLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIGdldCBzb3VyY2UoKSA6IENoYXRTb3VyY2VCYXNlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc291cmNlO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBzb3VyY2UodmFsdWUpIHtcclxuICAgICAgICB0aGlzLl9zb3VyY2UgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IHRvcGljSUQoKSA6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZS5pZGVudGlmaWVyO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCB0b3BpY0lEKHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTb3VyY2VGcm9tVG9waWNJRCh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhc3luYyBzZXRTb3VyY2VGcm9tVG9waWNJRCh0b3BpY0lEIDogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3NvdXJjZSAmJiB0aGlzLl9zb3VyY2UuY2xvc2UpXHJcbiAgICAgICAgICAgIHRoaXMuX3NvdXJjZS5jbG9zZSgpO1xyXG4gICAgICAgIHRoaXMuX3NvdXJjZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fc291cmNlID0gYXdhaXQgdGhpcy5iYWNrZW5kLmdldFNvdXJjZUZvclRvcGljKHRvcGljSUQpO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpIHNpZ25JbkxhYmVsID0gJ1NpZ24gSW4nO1xyXG4gICAgQElucHV0KCkgc2VuZExhYmVsID0gJ1NlbmQnO1xyXG4gICAgQElucHV0KCkgcGVybWlzc2lvbkRlbmllZExhYmVsID0gJ1NlbmQnO1xyXG4gICAgQElucHV0KCkgbWVzc2FnZUZpZWxkUGxhY2Vob2xkZXIgPSAnQ2hhdCc7XHJcbiAgICBASW5wdXQoKSBlbXB0eUxhYmVsID0gJ0JlIHRoZSBmaXJzdCB0byBjaGF0JztcclxuXHJcbiAgICBwcml2YXRlIF9zZWxlY3RlZCA9IG5ldyBTdWJqZWN0PENoYXRNZXNzYWdlPigpO1xyXG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWQkID0gdGhpcy5fc2VsZWN0ZWQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICBwcml2YXRlIF9yZXBvcnRlZCA9IG5ldyBTdWJqZWN0PENoYXRNZXNzYWdlPigpO1xyXG4gICAgcHJpdmF0ZSBfcmVwb3J0ZWQkID0gdGhpcy5fcmVwb3J0ZWQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICBwcml2YXRlIF91cHZvdGVkID0gbmV3IFN1YmplY3Q8Q2hhdE1lc3NhZ2U+KCk7XHJcbiAgICBwcml2YXRlIF91cHZvdGVkJCA9IHRoaXMuX3Vwdm90ZWQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICBwcml2YXRlIF91c2VyU2VsZWN0ZWQgPSBuZXcgU3ViamVjdDxDaGF0TWVzc2FnZT4oKTtcclxuICAgIHByaXZhdGUgX3VzZXJTZWxlY3RlZCQgPSB0aGlzLl91c2VyU2VsZWN0ZWQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICBwcml2YXRlIF9wZXJtaXNzaW9uRGVuaWVkRXJyb3IgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XHJcbiAgICBwcml2YXRlIF9wZXJtaXNzaW9uRGVuaWVkRXJyb3IkID0gdGhpcy5fcGVybWlzc2lvbkRlbmllZEVycm9yLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgcHJpdmF0ZSBfc2lnbkluU2VsZWN0ZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgcHJpdmF0ZSBfc2lnbkluU2VsZWN0ZWQkID0gdGhpcy5fc2lnbkluU2VsZWN0ZWQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICBwcml2YXRlIF9yZWNlaXZlZCA9IG5ldyBTdWJqZWN0PENoYXRNZXNzYWdlPigpO1xyXG4gICAgcHJpdmF0ZSBfcmVjZWl2ZWQkID0gdGhpcy5fcmVjZWl2ZWQuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gICAgQE91dHB1dCgpIGdldCBzZWxlY3RlZCgpIHsgcmV0dXJuIHRoaXMuX3NlbGVjdGVkJDsgfVxyXG4gICAgQE91dHB1dCgpIGdldCByZXBvcnRlZCgpIHsgcmV0dXJuIHRoaXMuX3JlcG9ydGVkJDsgfVxyXG4gICAgQE91dHB1dCgpIGdldCB1cHZvdGVkKCkgeyByZXR1cm4gdGhpcy5fdXB2b3RlZCQ7IH1cclxuICAgIEBPdXRwdXQoKSBnZXQgdXNlclNlbGVjdGVkKCkgeyByZXR1cm4gdGhpcy5fdXNlclNlbGVjdGVkJDsgfVxyXG4gICAgQE91dHB1dCgpIGdldCBwZXJtaXNzaW9uRGVuaWVkRXJyb3IoKSB7IHJldHVybiB0aGlzLl9wZXJtaXNzaW9uRGVuaWVkRXJyb3IkOyB9XHJcbiAgICBAT3V0cHV0KCkgZ2V0IHNpZ25JblNlbGVjdGVkKCkgeyByZXR1cm4gdGhpcy5fc2lnbkluU2VsZWN0ZWQkOyB9XHJcbiAgICBAT3V0cHV0KCkgZ2V0IHJlY2VpdmVkKCkgeyByZXR1cm4gdGhpcy5fcmVjZWl2ZWQkOyB9XHJcblxyXG4gICAgb25SZWNlaXZlZChtZXNzYWdlOiBDaGF0TWVzc2FnZSkge1xyXG4gICAgICAgIHRoaXMuX3JlY2VpdmVkLm5leHQobWVzc2FnZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd0Vtb2ppUGFuZWwgPSBmYWxzZTtcclxuXHJcbiAgICBzaG93U2lnbkluKCkge1xyXG4gICAgICAgIHRoaXMuX3NpZ25JblNlbGVjdGVkLm5leHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZW5kUGVybWlzc2lvbkVycm9yKG1lc3NhZ2U6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuX3Blcm1pc3Npb25EZW5pZWRFcnJvci5uZXh0KG1lc3NhZ2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGluc2VydEVtb2ppKGVtb2ppKSB7XHJcbiAgICAgICAgbGV0IG1lc3NhZ2UgPSB0aGlzLm5ld01lc3NhZ2UubWVzc2FnZSB8fCAnJztcclxuXHJcbiAgICAgICAgdGhpcy5uZXdNZXNzYWdlLm1lc3NhZ2UgPSBtZXNzYWdlICsgZW1vamk7XHJcbiAgICB9XHJcblxyXG4gICAgb25LZXlEb3duKGV2ZW50IDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgICAgIC8vIFRPRE9cclxuICAgIH1cclxuXHJcbiAgICBAVmlld0NoaWxkKCdjaGF0VmlldycpIGNoYXRWaWV3IDogQ2hhdFZpZXdDb21wb25lbnQ7XHJcbiAgICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0RWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuXHJcbiAgICBqdW1wVG9NZXNzYWdlKG1lc3NhZ2UgOiBDaGF0TWVzc2FnZSkge1xyXG4gICAgICAgIGlmICh0aGlzLmNoYXRWaWV3KVxyXG4gICAgICAgICAgICB0aGlzLmNoYXRWaWV3Lmp1bXBUbyhtZXNzYWdlKTtcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3QobWVzc2FnZSA6IENoYXRNZXNzYWdlKSB7XHJcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWQubmV4dChtZXNzYWdlKTtcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3RVc2VyKG1lc3NhZ2UgOiBDaGF0TWVzc2FnZSkge1xyXG4gICAgICAgIHRoaXMuX3VzZXJTZWxlY3RlZC5uZXh0KG1lc3NhZ2UpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlcG9ydChtZXNzYWdlIDogQ2hhdE1lc3NhZ2UpIHtcclxuICAgICAgICB0aGlzLl9yZXBvcnRlZC5uZXh0KG1lc3NhZ2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVwdm90ZShtZXNzYWdlIDogQ2hhdE1lc3NhZ2UpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLnNvdXJjZS5saWtlTWVzc2FnZShtZXNzYWdlLmlkKTtcclxuICAgICAgICB0aGlzLl91cHZvdGVkLm5leHQobWVzc2FnZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGNhbkNoYXQoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnVzZXIpXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgICAgLy8gVE9ET1xyXG4gICAgICAgIC8vIGlmICghdGhpcy51c2VyLnBlcm1pc3Npb25zKVxyXG4gICAgICAgIC8vICAgICByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICAgICAgLy8gaWYgKCF0aGlzLnVzZXIucGVybWlzc2lvbnMuY2FuQ2hhdClcclxuICAgICAgICAvLyAgICAgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgICAgIC8vIHJldHVybiB0aGlzLnVzZXIucGVybWlzc2lvbnM/LmNhbkNoYXQodGhpcy5zb3VyY2UpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIG5ld01lc3NhZ2UgOiBOZXdNZXNzYWdlRm9ybSA9IHt9O1xyXG5cclxuICAgIGFzeW5jIHNlbmRNZXNzYWdlKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5zb3VyY2UpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgbGV0IHRleHQgPSAodGhpcy5uZXdNZXNzYWdlLm1lc3NhZ2UgfHwgJycpLnRyaW0oKTtcclxuICAgICAgICB0aGlzLm5ld01lc3NhZ2UubWVzc2FnZSA9ICcnO1xyXG5cclxuICAgICAgICBpZiAodGV4dCA9PT0gJycpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgbGV0IG1lc3NhZ2UgOiBDaGF0TWVzc2FnZSA9IHtcclxuICAgICAgICAgICAgdXNlcjogbnVsbCxcclxuICAgICAgICAgICAgc2VudEF0OiBEYXRlLm5vdygpLFxyXG4gICAgICAgICAgICBsaWtlczogMCxcclxuICAgICAgICAgICAgdXJsOiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IGxvY2F0aW9uLmhyZWYgOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRleHRcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcmNlcHQgPSBhd2FpdCB0aGlzLnNob3VsZEludGVyY2VwdE1lc3NhZ2VTZW5kPy4obWVzc2FnZSwgdGhpcy5zb3VyY2UpO1xyXG4gICAgICAgICAgICBpZiAoIWludGVyY2VwdCkge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zb3VyY2Uuc2VuZChtZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5jaGF0Vmlldy5zY3JvbGxUb0xhdGVzdCgpO1xyXG4gICAgICAgICAgICB0aGlzLmlucHV0RWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gc2VuZCBtZXNzYWdlOiBgLCBtZXNzYWdlKTtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -43,7 +43,7 @@ ChatMessageComponent.decorators = [
43
43
  { type: Component, args: [{
44
44
  selector: 'banta-chat-message',
45
45
  template: "<div class=\"message-content\">\r\n <div class=\"user\" (click)=\"selectUser()\">\r\n <div class=\"avatar\" [style.background-image]=\"avatarForUser(message.user)\"></div>\r\n <label>{{message.user.username}}</label>\r\n </div>\r\n <div class=\"content\">\r\n <div (click)=\"select()\">\r\n {{message.message}}\r\n </div>\r\n <div class=\"status\">\r\n <div class=\"count-indicator\" *ngIf=\"message.likes > 0\">\r\n <mat-icon [inline]=\"true\">star</mat-icon> {{message.likes}}\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"actions\">\r\n <button mat-icon-button matTooltip=\"Upvote\" matTooltipPosition=\"below\" (click)=\"upvote()\">\r\n <mat-icon [inline]=\"true\">thumb_up</mat-icon>\r\n </button>\r\n <button mat-icon-button matTooltip=\"Report\" matTooltipPosition=\"below\" (click)=\"report()\">\r\n <mat-icon [inline]=\"true\">report</mat-icon>\r\n </button>\r\n</div>",
46
- styles: [":host{display:flex;flex-direction:row;align-items:center;padding:0 1em;background-color:#fff;color:#000;transition:background-color .4s ease-out}:host .message-content .content{color:#111}:host:hover{background-color:#ddd}:host.highlight{background:#00121b}:host.highlight:hover{background:#01324d}:host:nth-child(2n){background-color:#eee}:host:nth-child(2n):hover{background:#ddd}:host:nth-child(2n) .message-content .content{color:#222}:host:nth-child(2n).highlight{background:#001a2a}:host:nth-child(2n).highlight:hover{background:#002b44}:host .message-content{display:flex;flex-direction:row;flex-grow:1;align-items:center}:host .message-content .content{display:flex;flex-direction:row;padding:5px 0}:host .message-content .content .status{display:flex;flex-direction:row;align-items:center;margin-left:1em}:host .message-content .content .status mat-icon{margin-left:.5em}:host .user{color:#999;font-weight:400;text-align:right;margin-right:.25em;flex-shrink:0;display:flex;align-items:center}:host .user .avatar{background-position:50%;background-size:cover;background-color:#333;border-radius:100%;flex-shrink:0;flex-grow:0;margin-right:1em;width:2em;height:2em}:host .user:after{content:\":\";margin-right:1em}:host .content{flex-grow:1}:host .actions{flex-shrink:0;white-space:nowrap;opacity:0;transition:opacity .4s ease-out}:host:hover .actions{opacity:1}.count-indicator{white-space:nowrap}:host-context(.mat-dark-theme){background-color:#000;color:#fff}:host-context(.mat-dark-theme) .message-content .content{color:#ddd}:host-context(.mat-dark-theme):hover{background-color:#111}:host-context(.mat-dark-theme):nth-child(2n).highlight{background:#001a2a}:host-context(.mat-dark-theme):nth-child(2n).highlight:hover{background:#002b44}:host-context(.mat-dark-theme):nth-child(2n):hover{background-color:#111}:host-context(.mat-dark-theme):nth-child(2n){background-color:#080808}:host-context(.mat-dark-theme):nth-child(2n) .message-content .content{color:#eee}label{margin:0}"]
46
+ styles: [":host{display:flex;flex-direction:row;align-items:center;padding:0 1em;background-color:#fff;color:#000;transition:.4s background-color ease-out}:host .message-content .content{color:#111}:host:hover{background-color:#ddd}:host.highlight{background:#00121b}:host.highlight:hover{background:#01324d}:host:nth-child(2n){background-color:#eee}:host:nth-child(2n):hover{background:#ddd}:host:nth-child(2n) .message-content .content{color:#222}:host:nth-child(2n).highlight{background:#001a2a}:host:nth-child(2n).highlight:hover{background:#002b44}:host .message-content{display:flex;flex-direction:row;flex-grow:1;align-items:center}:host .message-content .content{display:flex;flex-direction:row;padding:5px 0}:host .message-content .content .status{display:flex;flex-direction:row;align-items:center;margin-left:1em}:host .message-content .content .status mat-icon{margin-left:.5em}:host .user{color:#999;font-weight:normal;text-align:right;margin-right:.25em;flex-shrink:0;display:flex;align-items:center}:host .user .avatar{background-position:center;background-size:cover;background-color:#333;border-radius:100%;flex-shrink:0;flex-grow:0;margin-right:1em;width:2em;height:2em}:host .user:after{content:\":\";margin-right:1em}:host .content{flex-grow:1}:host .actions{flex-shrink:0;white-space:nowrap;opacity:0;transition:.4s opacity ease-out}:host:hover .actions{opacity:1}.count-indicator{white-space:nowrap}:host-context(.mat-dark-theme){background-color:#000;color:#fff}:host-context(.mat-dark-theme) .message-content .content{color:#ddd}:host-context(.mat-dark-theme):hover{background-color:#111}:host-context(.mat-dark-theme):nth-child(2n).highlight{background:#001a2a}:host-context(.mat-dark-theme):nth-child(2n).highlight:hover{background:#002b44}:host-context(.mat-dark-theme):nth-child(2n):hover{background-color:#111}:host-context(.mat-dark-theme):nth-child(2n){background-color:#080808}:host-context(.mat-dark-theme):nth-child(2n) .message-content .content{color:#eee}label{margin:0}\n"]
47
47
  },] }
48
48
  ];
49
49
  ChatMessageComponent.propDecorators = {
@@ -146,7 +146,7 @@ ChatViewComponent.decorators = [
146
146
  { type: Component, args: [{
147
147
  selector: 'banta-chat-view',
148
148
  template: "<div class=\"message-container\" #messageContainer>\r\n <ng-content select=\"[data-before]\"></ng-content>\r\n \r\n <div class=\"empty\" *ngIf=\"messages.length === 0\">\r\n {{emptyLabel}}\r\n </div>\r\n \r\n <ng-container *ngFor=\"let message of messages\">\r\n <banta-chat-message\r\n *ngIf=\"!message.hidden\"\r\n [message]=\"message\"\r\n [class.highlight]=\"mentionsMe(message)\" \r\n [class.flash]=\"message.id === flashedMessageId\"\r\n (selected)=\"selectMessage(message)\"\r\n (upvoted)=\"upvoteMessage(message)\"\r\n (reported)=\"reportMessage(message)\"\r\n (userSelected)=\"selectMessageUser(message)\"\r\n [attr.data-id]=\"message.id\"\r\n >\r\n </banta-chat-message>\r\n </ng-container>\r\n <ng-content select=\":not([data-before])\"></ng-content>\r\n</div>",
149
- styles: [":host{display:flex;flex-direction:column;flex-grow:1}.message-container{flex-grow:1;overflow-y:auto;overflow-x:hidden;height:10em;color:#000;background:#fff;padding:.5em 1em .5em .5em}.message-container.no-scroll{height:auto;overflow-y:visible}:host-context(.mat-dark-theme) .message-container{color:#fff;background:#000}banta-chat-message.flash{-webkit-animation:flash;animation:flash;-webkit-animation-duration:2.5s;animation-duration:2.5s;-webkit-animation-iteration-count:1;animation-iteration-count:1}@-webkit-keyframes flash{0%{transform:scale(1);background:#425700}25%{transform:scale(1.05)}50%{transform:scale(1)}75%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes flash{0%{transform:scale(1);background:#425700}25%{transform:scale(1.05)}50%{transform:scale(1)}75%{transform:scale(1.05)}to{transform:scale(1)}}.empty{text-align:center;margin:2em;color:#888;font-size:150%}"]
149
+ styles: [":host{display:flex;flex-direction:column;flex-grow:1}.message-container{flex-grow:1;overflow-y:auto;overflow-x:hidden;height:10em;color:#000;background:white;padding:.5em 1em .5em .5em}.message-container.no-scroll{height:auto;overflow-y:visible}:host-context(.mat-dark-theme) .message-container{color:#fff;background:black}banta-chat-message.flash{animation:flash;animation-duration:2.5s;animation-iteration-count:1}@keyframes flash{0%{transform:scale(1);background:#425700}25%{transform:scale(1.05)}50%{transform:scale(1)}75%{transform:scale(1.05)}to{transform:scale(1)}}.empty{text-align:center;margin:2em;color:#888;font-size:150%}\n"]
150
150
  },] }
151
151
  ];
152
152
  ChatViewComponent.ctorParameters = () => [
@@ -1,5 +1,5 @@
1
1
  import { Component, Input, Output } from '@angular/core';
2
- import { Subject, Observable } from 'rxjs';
2
+ import { Subject } from 'rxjs';
3
3
  import { ChatBackendBase } from '../chat-backend-base';
4
4
  export class LiveChatMessageComponent {
5
5
  constructor(backend) {
@@ -68,4 +68,4 @@ LiveChatMessageComponent.propDecorators = {
68
68
  selected: [{ type: Output }],
69
69
  message: [{ type: Input }]
70
70
  };
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZS1jaGF0LW1lc3NhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvY2hhdC9saXZlLWNoYXQtbWVzc2FnZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQWV2RCxNQUFNLE9BQU8sd0JBQXdCO0lBQ2pDLFlBQ1ksT0FBeUI7UUFBekIsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFNN0IsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDL0IsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDaEMsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFMeEMsQ0FBQztJQU9ELElBQ0ksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFDSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUNJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQ0ksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBSUQsSUFBSSxPQUFPLENBQUMsS0FBSztRQUNiLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLElBQUksQ0FBQyxRQUFRO1lBQ2IsVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBRWxDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBRXRCLElBQUksS0FBSyxJQUFJLFVBQVUsS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQ2xDLE9BQU87U0FDVjtRQUVELElBQUksSUFBSSxDQUFDLFdBQVc7WUFDaEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXZCLElBQUksS0FBSyxFQUFFO1lBQ1AsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDO1NBQzFGO0lBQ0wsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxNQUFNO1FBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsTUFBTTtRQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUIsQ0FBQzs7O1lBNUVKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUseUJBQXlCO2dCQUNuQyxRQUFRLEVBQUU7Ozs7Ozs7O0tBUVQ7eUJBQ1EsRUFBRTthQUNkOzs7WUFkUSxlQUFlOzs7c0JBMkJuQixNQUFNO3VCQUtOLE1BQU07dUJBS04sTUFBTTtzQkFLTixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENoYXRNZXNzYWdlIH0gZnJvbSAnQGJhbnRhL2NvbW1vbic7XHJcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ2hhdEJhY2tlbmRCYXNlIH0gZnJvbSAnLi4vY2hhdC1iYWNrZW5kLWJhc2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2JhbnRhLWxpdmUtY2hhdC1tZXNzYWdlJyxcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICAgICAgPGJhbnRhLWNoYXQtbWVzc2FnZSBcclxuICAgICAgICAgICAgKm5nSWY9XCJtZXNzYWdlXCJcclxuICAgICAgICAgICAgW21lc3NhZ2VdPVwibWVzc2FnZVwiXHJcbiAgICAgICAgICAgICh1cHZvdGVkKT1cInVwdm90ZSgpXCJcclxuICAgICAgICAgICAgKHJlcG9ydGVkKT1cInJlcG9ydCgpXCJcclxuICAgICAgICAgICAgKHNlbGVjdGVkKT1cInNlbGVjdCgpXCJcclxuICAgICAgICAgICAgPjwvYmFudGEtY2hhdC1tZXNzYWdlPlxyXG4gICAgYCxcclxuICAgIHN0eWxlczogW2BgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGl2ZUNoYXRNZXNzYWdlQ29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgYmFja2VuZCA6IENoYXRCYWNrZW5kQmFzZVxyXG4gICAgKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX21lc3NhZ2UgOiBDaGF0TWVzc2FnZTtcclxuICAgIHByaXZhdGUgX3Vwdm90ZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgcHJpdmF0ZSBfcmVwb3J0ZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgZ2V0IHVwdm90ZWQoKSA6IE9ic2VydmFibGU8dm9pZD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl91cHZvdGVkO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBAT3V0cHV0KClcclxuICAgIGdldCByZXBvcnRlZCgpIDogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlcG9ydGVkO1xyXG4gICAgfVxyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgZ2V0IHNlbGVjdGVkKCkgOiBPYnNlcnZhYmxlPHZvaWQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgbWVzc2FnZSgpIDogQ2hhdE1lc3NhZ2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9tZXNzYWdlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdW5zdWJzY3JpYmUgOiBGdW5jdGlvbjtcclxuXHJcbiAgICBzZXQgbWVzc2FnZSh2YWx1ZSkge1xyXG4gICAgICAgIGxldCBvcmlnaW5hbElkID0gbnVsbDtcclxuICAgICAgICBpZiAodGhpcy5fbWVzc2FnZSlcclxuICAgICAgICAgICAgb3JpZ2luYWxJZCA9IHRoaXMuX21lc3NhZ2UuaWQ7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5fbWVzc2FnZSA9IHZhbHVlO1xyXG5cclxuICAgICAgICBpZiAodmFsdWUgJiYgb3JpZ2luYWxJZCA9PT0gdmFsdWUuaWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMudW5zdWJzY3JpYmUpXHJcbiAgICAgICAgICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy51bnN1YnNjcmliZSA9IHRoaXMuYmFja2VuZC53YXRjaE1lc3NhZ2UodmFsdWUsIG1lc3NhZ2UgPT4gdGhpcy5tZXNzYWdlID0gbWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlcG9ydCgpIHtcclxuICAgICAgICB0aGlzLl9yZXBvcnRlZC5uZXh0KCk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHVwdm90ZSgpIHtcclxuICAgICAgICB0aGlzLl91cHZvdGVkLm5leHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3QoKSB7XHJcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWQubmV4dCgpO1xyXG4gICAgfVxyXG59Il19
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZS1jaGF0LW1lc3NhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvY2hhdC9saXZlLWNoYXQtbWVzc2FnZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBRSxPQUFPLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBZXZELE1BQU0sT0FBTyx3QkFBd0I7SUFDakMsWUFDWSxPQUF5QjtRQUF6QixZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQU03QixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUMvQixjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNoQyxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUx4QyxDQUFDO0lBT0QsSUFDSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUNJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQ0ksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFDSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFJRCxJQUFJLE9BQU8sQ0FBQyxLQUFLO1FBQ2IsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksSUFBSSxDQUFDLFFBQVE7WUFDYixVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFFbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFFdEIsSUFBSSxLQUFLLElBQUksVUFBVSxLQUFLLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDbEMsT0FBTztTQUNWO1FBRUQsSUFBSSxJQUFJLENBQUMsV0FBVztZQUNoQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFdkIsSUFBSSxLQUFLLEVBQUU7WUFDUCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLENBQUM7U0FDMUY7SUFDTCxDQUFDO0lBRUQsTUFBTTtRQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxNQUFNO1FBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDOzs7WUE1RUosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSx5QkFBeUI7Z0JBQ25DLFFBQVEsRUFBRTs7Ozs7Ozs7S0FRVDt5QkFDUSxFQUFFO2FBQ2Q7OztZQWRRLGVBQWU7OztzQkEyQm5CLE1BQU07dUJBS04sTUFBTTt1QkFLTixNQUFNO3NCQUtOLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2hhdE1lc3NhZ2UgfSBmcm9tICdAYmFudGEvY29tbW9uJztcclxuaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDaGF0QmFja2VuZEJhc2UgfSBmcm9tICcuLi9jaGF0LWJhY2tlbmQtYmFzZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYmFudGEtbGl2ZS1jaGF0LW1lc3NhZ2UnLFxyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgICAgICA8YmFudGEtY2hhdC1tZXNzYWdlIFxyXG4gICAgICAgICAgICAqbmdJZj1cIm1lc3NhZ2VcIlxyXG4gICAgICAgICAgICBbbWVzc2FnZV09XCJtZXNzYWdlXCJcclxuICAgICAgICAgICAgKHVwdm90ZWQpPVwidXB2b3RlKClcIlxyXG4gICAgICAgICAgICAocmVwb3J0ZWQpPVwicmVwb3J0KClcIlxyXG4gICAgICAgICAgICAoc2VsZWN0ZWQpPVwic2VsZWN0KClcIlxyXG4gICAgICAgICAgICA+PC9iYW50YS1jaGF0LW1lc3NhZ2U+XHJcbiAgICBgLFxyXG4gICAgc3R5bGVzOiBbYGBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMaXZlQ2hhdE1lc3NhZ2VDb21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBiYWNrZW5kIDogQ2hhdEJhY2tlbmRCYXNlXHJcbiAgICApIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfbWVzc2FnZSA6IENoYXRNZXNzYWdlO1xyXG4gICAgcHJpdmF0ZSBfdXB2b3RlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICBwcml2YXRlIF9yZXBvcnRlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICBwcml2YXRlIF9zZWxlY3RlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBnZXQgdXB2b3RlZCgpIDogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Vwdm90ZWQ7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIEBPdXRwdXQoKVxyXG4gICAgZ2V0IHJlcG9ydGVkKCkgOiBPYnNlcnZhYmxlPHZvaWQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcmVwb3J0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBnZXQgc2VsZWN0ZWQoKSA6IE9ic2VydmFibGU8dm9pZD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZDtcclxuICAgIH1cclxuICAgIFxyXG4gICAgQElucHV0KClcclxuICAgIGdldCBtZXNzYWdlKCkgOiBDaGF0TWVzc2FnZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX21lc3NhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB1bnN1YnNjcmliZSA6IEZ1bmN0aW9uO1xyXG5cclxuICAgIHNldCBtZXNzYWdlKHZhbHVlKSB7XHJcbiAgICAgICAgbGV0IG9yaWdpbmFsSWQgPSBudWxsO1xyXG4gICAgICAgIGlmICh0aGlzLl9tZXNzYWdlKVxyXG4gICAgICAgICAgICBvcmlnaW5hbElkID0gdGhpcy5fbWVzc2FnZS5pZDtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLl9tZXNzYWdlID0gdmFsdWU7XHJcblxyXG4gICAgICAgIGlmICh2YWx1ZSAmJiBvcmlnaW5hbElkID09PSB2YWx1ZS5pZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy51bnN1YnNjcmliZSlcclxuICAgICAgICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnVuc3Vic2NyaWJlID0gdGhpcy5iYWNrZW5kLndhdGNoTWVzc2FnZSh2YWx1ZSwgbWVzc2FnZSA9PiB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmVwb3J0KCkge1xyXG4gICAgICAgIHRoaXMuX3JlcG9ydGVkLm5leHQoKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdXB2b3RlKCkge1xyXG4gICAgICAgIHRoaXMuX3Vwdm90ZWQubmV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdCgpIHtcclxuICAgICAgICB0aGlzLl9zZWxlY3RlZC5uZXh0KCk7XHJcbiAgICB9XHJcbn0iXX0=
@@ -89,4 +89,4 @@ ChatBackend.decorators = [
89
89
  ChatBackend.ctorParameters = () => [
90
90
  { type: undefined, decorators: [{ type: Inject, args: [BANTA_SDK_OPTIONS,] }] }
91
91
  ];
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1iYWNrZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvY2hhdC1iYWNrZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWUsYUFBYSxFQUFFLGFBQWEsRUFBcUMsTUFBTSxlQUFlLENBQUM7QUFFN0csT0FBTyxFQUFFLGVBQWUsRUFBcUIsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUc5RCxNQUFNLE9BQU8sV0FBWSxTQUFRLGVBQWU7SUFDNUMsWUFDdUMsT0FBbUI7UUFFdEQsS0FBSyxFQUFFLENBQUM7UUFGMkIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtJQUcxRCxDQUFDO0lBRUQsSUFBSSxVQUFVOztRQUNWLE9BQU8sR0FBRyxZQUFBLElBQUksQ0FBQyxPQUFPLDBDQUFFLFVBQVUsbUNBQUksdUJBQXVCLEVBQUUsQ0FBQztJQUNwRSxDQUFDO0lBRWEsZ0JBQWdCOztZQUMxQixJQUFJLE1BQU0sR0FBRyxJQUFJLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbkYsTUFBTSxJQUFJLE9BQU8sQ0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtnQkFDeEMsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7b0JBQ2pCLE9BQU8sRUFBRSxDQUFDO2dCQUNkLENBQUMsQ0FBQTtnQkFFRCxNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFO29CQUNqQixJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FB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c0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQ2hhdE1lc3NhZ2UsIENvbW1lbnRzT3JkZXIsIER1cmFibGVTb2NrZXQsIE5vdGlmaWNhdGlvbiwgVXJsQ2FyZCwgVXNlciwgVm90ZSB9IGZyb20gXCJAYmFudGEvY29tbW9uXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBDaGF0QmFja2VuZEJhc2UsIENoYXRTb3VyY2VPcHRpb25zIH0gZnJvbSBcIi4vY2hhdC1iYWNrZW5kLWJhc2VcIjtcclxuaW1wb3J0IHsgQ2hhdFNvdXJjZSB9IGZyb20gXCIuL2NoYXQtc291cmNlXCI7XHJcbmltcG9ydCB7IENoYXRTb3VyY2VCYXNlIH0gZnJvbSBcIi4vY2hhdC1zb3VyY2UtYmFzZVwiO1xyXG5pbXBvcnQgeyBCQU5UQV9TREtfT1BUSU9OUywgU2RrT3B0aW9ucyB9IGZyb20gXCIuL3Nkay1vcHRpb25zXCI7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDaGF0QmFja2VuZCBleHRlbmRzIENoYXRCYWNrZW5kQmFzZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBASW5qZWN0KEJBTlRBX1NES19PUFRJT05TKSBwcml2YXRlIG9wdGlvbnM6IFNka09wdGlvbnNcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHNlcnZpY2VVcmwoKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMub3B0aW9ucz8uc2VydmljZVVybCA/PyAnaHR0cDovL2xvY2FsaG9zdDozNDIyJ31gO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgY29ubmVjdFRvU2VydmljZSgpIHtcclxuICAgICAgICBsZXQgc29ja2V0ID0gbmV3IER1cmFibGVTb2NrZXQoYCR7dGhpcy5zZXJ2aWNlVXJsLnJlcGxhY2UoL15odHRwLywgJ3dzJyl9L3NvY2tldGApO1xyXG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgc29ja2V0Lm9ub3BlbiA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgc29ja2V0Lm9uY2xvc2UgPSBlID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlLmNvZGUgPT09IDUwMykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBjb25uZWN0IHRvIGNoYXQgc2VydmljZSFgKTtcclxuICAgICAgICAgICAgICAgICAgICByZWplY3QoZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgc29ja2V0Lm9uZXJyb3IgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgICAgIHJldHVybiBzb2NrZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0U291cmNlRm9yVG9waWModG9waWNJZDogc3RyaW5nLCBvcHRpb25zPzogQ2hhdFNvdXJjZU9wdGlvbnMpOiBQcm9taXNlPENoYXRTb3VyY2VCYXNlPiB7XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IG5ldyBDaGF0U291cmNlKHRoaXMsIHRvcGljSWQsIHVuZGVmaW5lZCwgb3B0aW9ucz8uc29ydE9yZGVyIHx8IENvbW1lbnRzT3JkZXIuTkVXRVNUKVxyXG4gICAgICAgICAgICAuYmluZChhd2FpdCB0aGlzLmNvbm5lY3RUb1NlcnZpY2UoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0U291cmNlRm9yVGhyZWFkKHRvcGljSWQ6IHN0cmluZywgbWVzc2FnZUlkOiBzdHJpbmcsIG9wdGlvbnM/OiBDaGF0U291cmNlT3B0aW9ucyk6IFByb21pc2U8Q2hhdFNvdXJjZT4ge1xyXG4gICAgICAgIHJldHVybiBhd2FpdCBuZXcgQ2hhdFNvdXJjZSh0aGlzLCB0b3BpY0lkLCBtZXNzYWdlSWQsIG9wdGlvbnM/LnNvcnRPcmRlciB8fCBDb21tZW50c09yZGVyLk5FV0VTVClcclxuICAgICAgICAgICAgLmJpbmQoYXdhaXQgdGhpcy5jb25uZWN0VG9TZXJ2aWNlKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldFNvdXJjZUNvdW50Rm9yVG9waWModG9waWNJZDogc3RyaW5nKTogUHJvbWlzZTxudW1iZXI+IHtcclxuICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHt0aGlzLnNlcnZpY2VVcmx9L3RvcGljcy8ke3RvcGljSWR9YClcclxuXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA+PSA0MDApXHJcbiAgICAgICAgICAgIHJldHVybiAwO1xyXG5cclxuICAgICAgICBsZXQgdG9waWMgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XHJcbiAgICAgICAgcmV0dXJuIHRvcGljLm1lc3NhZ2VDb3VudCB8fCAwO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZnJlc2hNZXNzYWdlKG1lc3NhZ2U6IENoYXRNZXNzYWdlKTogUHJvbWlzZTxDaGF0TWVzc2FnZT4ge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBnZXRNZXNzYWdlKHRvcGljSWQ6IHN0cmluZywgbWVzc2FnZUlkOiBzdHJpbmcpOiBQcm9taXNlPENoYXRNZXNzYWdlPiB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XHJcbiAgICB9XHJcbiAgICBnZXRTdWJNZXNzYWdlKHRvcGljSWQ6IHN0cmluZywgcGFyZW50TWVzc2FnZUlkOiBzdHJpbmcsIG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxDaGF0TWVzc2FnZT4ge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xyXG4gICAgfVxyXG4gICAgd2F0Y2hNZXNzYWdlKG1lc3NhZ2U6IENoYXRNZXNzYWdlLCBoYW5kbGVyOiAobWVzc2FnZTogQ2hhdE1lc3NhZ2UpID0+IHZvaWQpOiAoKSA9PiB2b2lkIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcclxuICAgIH1cclxuICAgIG5vdGlmaWNhdGlvbnNDaGFuZ2VkOiBPYnNlcnZhYmxlPE5vdGlmaWNhdGlvbltdPjtcclxuICAgIG5ld05vdGlmaWNhdGlvbjogT2JzZXJ2YWJsZTxOb3RpZmljYXRpb24+O1xyXG4gICAgXHJcbiAgICBhc3luYyBnZXRDYXJkRm9yVXJsKHVybDogc3RyaW5nKTogUHJvbWlzZTxVcmxDYXJkPiB7XHJcbiAgICAgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7dGhpcy5zZXJ2aWNlVXJsfS91cmxzYCwge1xyXG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgICAgICAgICB1cmxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSA0MDQpXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPj0gNDAwKVxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byByZXRyaWV2ZSBVUkwgY2FyZDogJHtyZXNwb25zZS5zdGF0dXN9LiBCb2R5OiAnJHthd2FpdCByZXNwb25zZS50ZXh0KCl9J2ApO1xyXG5cclxuICAgICAgICByZXR1cm4gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xyXG4gICAgfVxyXG59Il19
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1iYWNrZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvY2hhdC1iYWNrZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWUsYUFBYSxFQUFFLGFBQWEsRUFBcUMsTUFBTSxlQUFlLENBQUM7QUFFN0csT0FBTyxFQUFFLGVBQWUsRUFBcUIsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUc5RCxNQUFNLE9BQU8sV0FBWSxTQUFRLGVBQWU7SUFDNUMsWUFDdUMsT0FBbUI7UUFFdEQsS0FBSyxFQUFFLENBQUM7UUFGMkIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtJQUcxRCxDQUFDO0lBRUQsSUFBSSxVQUFVOztRQUNWLE9BQU8sR0FBRyxNQUFBLE1BQUEsSUFBSSxDQUFDLE9BQU8sMENBQUUsVUFBVSxtQ0FBSSx1QkFBdUIsRUFBRSxDQUFDO0lBQ3BFLENBQUM7SUFFYSxnQkFBZ0I7O1lBQzFCLElBQUksTUFBTSxHQUFHLElBQUksYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNuRixNQUFNLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUN4QyxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtvQkFDakIsT0FBTyxFQUFFLENBQUM7Z0JBQ2QsQ0FBQyxDQUFBO2dCQUVELE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQUU7b0JBQ2pCLElBQUksQ0FBQyxDQUFDLElBQUksS0FB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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDaGF0TWVzc2FnZSwgQ29tbWVudHNPcmRlciwgRHVyYWJsZVNvY2tldCwgTm90aWZpY2F0aW9uLCBVcmxDYXJkLCBVc2VyLCBWb3RlIH0gZnJvbSBcIkBiYW50YS9jb21tb25cIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IENoYXRCYWNrZW5kQmFzZSwgQ2hhdFNvdXJjZU9wdGlvbnMgfSBmcm9tIFwiLi9jaGF0LWJhY2tlbmQtYmFzZVwiO1xyXG5pbXBvcnQgeyBDaGF0U291cmNlIH0gZnJvbSBcIi4vY2hhdC1zb3VyY2VcIjtcclxuaW1wb3J0IHsgQ2hhdFNvdXJjZUJhc2UgfSBmcm9tIFwiLi9jaGF0LXNvdXJjZS1iYXNlXCI7XHJcbmltcG9ydCB7IEJBTlRBX1NES19PUFRJT05TLCBTZGtPcHRpb25zIH0gZnJvbSBcIi4vc2RrLW9wdGlvbnNcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIENoYXRCYWNrZW5kIGV4dGVuZHMgQ2hhdEJhY2tlbmRCYXNlIHtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoQkFOVEFfU0RLX09QVElPTlMpIHByaXZhdGUgb3B0aW9uczogU2RrT3B0aW9uc1xyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgc2VydmljZVVybCgpIHtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5vcHRpb25zPy5zZXJ2aWNlVXJsID8/ICdodHRwOi8vbG9jYWxob3N0OjM0MjInfWA7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhc3luYyBjb25uZWN0VG9TZXJ2aWNlKCkge1xyXG4gICAgICAgIGxldCBzb2NrZXQgPSBuZXcgRHVyYWJsZVNvY2tldChgJHt0aGlzLnNlcnZpY2VVcmwucmVwbGFjZSgvXmh0dHAvLCAnd3MnKX0vc29ja2V0YCk7XHJcbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBzb2NrZXQub25vcGVuID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBzb2NrZXQub25jbG9zZSA9IGUgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGUuY29kZSA9PT0gNTAzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGNvbm5lY3QgdG8gY2hhdCBzZXJ2aWNlIWApO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBzb2NrZXQub25lcnJvciA9IHVuZGVmaW5lZDtcclxuXHJcbiAgICAgICAgcmV0dXJuIHNvY2tldDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRTb3VyY2VGb3JUb3BpYyh0b3BpY0lkOiBzdHJpbmcsIG9wdGlvbnM/OiBDaGF0U291cmNlT3B0aW9ucyk6IFByb21pc2U8Q2hhdFNvdXJjZUJhc2U+IHtcclxuICAgICAgICByZXR1cm4gYXdhaXQgbmV3IENoYXRTb3VyY2UodGhpcywgdG9waWNJZCwgdW5kZWZpbmVkLCBvcHRpb25zPy5zb3J0T3JkZXIgfHwgQ29tbWVudHNPcmRlci5ORVdFU1QpXHJcbiAgICAgICAgICAgIC5iaW5kKGF3YWl0IHRoaXMuY29ubmVjdFRvU2VydmljZSgpKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRTb3VyY2VGb3JUaHJlYWQodG9waWNJZDogc3RyaW5nLCBtZXNzYWdlSWQ6IHN0cmluZywgb3B0aW9ucz86IENoYXRTb3VyY2VPcHRpb25zKTogUHJvbWlzZTxDaGF0U291cmNlPiB7XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IG5ldyBDaGF0U291cmNlKHRoaXMsIHRvcGljSWQsIG1lc3NhZ2VJZCwgb3B0aW9ucz8uc29ydE9yZGVyIHx8IENvbW1lbnRzT3JkZXIuTkVXRVNUKVxyXG4gICAgICAgICAgICAuYmluZChhd2FpdCB0aGlzLmNvbm5lY3RUb1NlcnZpY2UoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0U291cmNlQ291bnRGb3JUb3BpYyh0b3BpY0lkOiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj4ge1xyXG4gICAgICAgIGxldCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke3RoaXMuc2VydmljZVVybH0vdG9waWNzLyR7dG9waWNJZH1gKVxyXG5cclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID49IDQwMClcclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcblxyXG4gICAgICAgIGxldCB0b3BpYyA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcclxuICAgICAgICByZXR1cm4gdG9waWMubWVzc2FnZUNvdW50IHx8IDA7XHJcbiAgICB9XHJcblxyXG4gICAgcmVmcmVzaE1lc3NhZ2UobWVzc2FnZTogQ2hhdE1lc3NhZ2UpOiBQcm9taXNlPENoYXRNZXNzYWdlPiB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGdldE1lc3NhZ2UodG9waWNJZDogc3RyaW5nLCBtZXNzYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8Q2hhdE1lc3NhZ2U+IHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcclxuICAgIH1cclxuICAgIGdldFN1Yk1lc3NhZ2UodG9waWNJZDogc3RyaW5nLCBwYXJlbnRNZXNzYWdlSWQ6IHN0cmluZywgbWVzc2FnZUlkOiBzdHJpbmcpOiBQcm9taXNlPENoYXRNZXNzYWdlPiB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XHJcbiAgICB9XHJcbiAgICB3YXRjaE1lc3NhZ2UobWVzc2FnZTogQ2hhdE1lc3NhZ2UsIGhhbmRsZXI6IChtZXNzYWdlOiBDaGF0TWVzc2FnZSkgPT4gdm9pZCk6ICgpID0+IHZvaWQge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xyXG4gICAgfVxyXG4gICAgbm90aWZpY2F0aW9uc0NoYW5nZWQ6IE9ic2VydmFibGU8Tm90aWZpY2F0aW9uW10+O1xyXG4gICAgbmV3Tm90aWZpY2F0aW9uOiBPYnNlcnZhYmxlPE5vdGlmaWNhdGlvbj47XHJcbiAgICBcclxuICAgIGFzeW5jIGdldENhcmRGb3JVcmwodXJsOiBzdHJpbmcpOiBQcm9taXNlPFVybENhcmQ+IHtcclxuICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHt0aGlzLnNlcnZpY2VVcmx9L3VybHNgLCB7XHJcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICAgICAgICAgIHVybFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IDQwNClcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA+PSA0MDApXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHJldHJpZXZlIFVSTCBjYXJkOiAke3Jlc3BvbnNlLnN0YXR1c30uIEJvZHk6ICcke2F3YWl0IHJlc3BvbnNlLnRleHQoKX0nYCk7XHJcblxyXG4gICAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uKCk7XHJcbiAgICB9XHJcbn0iXX0=
@@ -1,4 +1,4 @@
1
- import { __awaiter, __decorate, __metadata } from "tslib";
1
+ import { __awaiter, __decorate } from "tslib";
2
2
  import { Subject, Subscription } from "rxjs";
3
3
  import { RpcEvent, SocketRPC } from "@banta/common";
4
4
  export class ChatSource extends SocketRPC {
@@ -191,15 +191,9 @@ export class ChatSource extends SocketRPC {
191
191
  }
192
192
  }
193
193
  __decorate([
194
- RpcEvent(),
195
- __metadata("design:type", Function),
196
- __metadata("design:paramtypes", [Object]),
197
- __metadata("design:returntype", void 0)
194
+ RpcEvent()
198
195
  ], ChatSource.prototype, "onPermissions", null);
199
196
  __decorate([
200
- RpcEvent(),
201
- __metadata("design:type", Function),
202
- __metadata("design:paramtypes", [Object]),
203
- __metadata("design:returntype", void 0)
197
+ RpcEvent()
204
198
  ], ChatSource.prototype, "onChatMessage", null);
205
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1zb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zZGsvc3JjL2xpYi9jaGF0LXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFjLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJcEQsTUFBTSxPQUFPLFVBQVcsU0FBUSxTQUFTO0lBQ3JDLFlBQ2EsT0FBb0IsRUFDcEIsVUFBa0IsRUFDbEIsZ0JBQXdCLEVBQ3hCLFNBQXdCO1FBRWpDLEtBQUssRUFBRSxDQUFDO1FBTEMsWUFBTyxHQUFQLE9BQU8sQ0FBYTtRQUNwQixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ2xCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBUTtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUFlO1FBTTdCLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQU1sQyxXQUFNLEdBQXFELFlBQVksQ0FBQztRQVd4RSw0QkFBdUIsR0FBRyxJQUFJLE9BQU8sRUFBb0QsQ0FBQztRQTBHMUYsZUFBVSxHQUFHLElBQUksR0FBRyxFQUF1QixDQUFDO1FBQzVDLHFCQUFnQixHQUFHLElBQUksT0FBTyxFQUFlLENBQUM7UUFDOUMsb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBZSxDQUFDO1FBQzdDLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQWUsQ0FBQztRQUMxQyxxQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBZSxDQUFDO1FBT3RELGFBQVEsR0FBa0IsRUFBRSxDQUFDO1FBekl6QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksT0FBTyxDQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBVUQsSUFBSSxLQUFLO1FBQ0ws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QUNsRCxDQUFDO0tBQUE7SUFFSyxhQUFhLENBQUMsU0FBaUI7O1lBQ2pDLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDOUIsT0FBTyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BELENBQUM7S0FBQTtJQUVLLGFBQWEsQ0FBQyxTQUFpQjs7WUFDakMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM5QixPQUFPLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEQsQ0FBQztLQUFBO0NBRUo7QUFyRkc7SUFEQyxRQUFRLEVBQUU7Ozs7K0NBSVY7QUFHRDtJQURDLFFBQVEsRUFBRTs7OzsrQ0FXViIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYXRNZXNzYWdlLCBDaGF0UGVybWlzc2lvbnMsIENvbW1lbnRzT3JkZXIsIER1cmFibGVTb2NrZXQsIFVzZXIgfSBmcm9tIFwiQGJhbnRhL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBScGNFdmVudCwgU29ja2V0UlBDIH0gZnJvbSBcIkBiYW50YS9jb21tb25cIjtcclxuaW1wb3J0IHsgQ2hhdFNvdXJjZUJhc2UgfSBmcm9tIFwiLi9jaGF0LXNvdXJjZS1iYXNlXCI7XHJcbmltcG9ydCB7IENoYXRCYWNrZW5kIH0gZnJvbSBcIi4vY2hhdC1iYWNrZW5kXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgQ2hhdFNvdXJjZSBleHRlbmRzIFNvY2tldFJQQyBpbXBsZW1lbnRzIENoYXRTb3VyY2VCYXNlIHtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHJlYWRvbmx5IGJhY2tlbmQ6IENoYXRCYWNrZW5kLFxyXG4gICAgICAgIHJlYWRvbmx5IGlkZW50aWZpZXI6IHN0cmluZyxcclxuICAgICAgICByZWFkb25seSBwYXJlbnRJZGVudGlmaWVyOiBzdHJpbmcsXHJcbiAgICAgICAgcmVhZG9ubHkgc29ydE9yZGVyOiBDb21tZW50c09yZGVyXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMucmVhZHkgPSBuZXcgUHJvbWlzZTx2b2lkPihyZXNvbHZlID0+IHRoaXMubWFya1JlYWR5ID0gcmVzb2x2ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgICBwcml2YXRlIG1hcmtSZWFkeTogKCkgPT4gdm9pZDtcclxuXHJcbiAgICByZWFkeTogUHJvbWlzZTx2b2lkPjtcclxuXHJcbiAgICBwZXJtaXNzaW9uczogQ2hhdFBlcm1pc3Npb25zO1xyXG4gICAgcHJpdmF0ZSBfc3RhdGU6ICdjb25uZWN0ZWQnIHwgJ2Nvbm5lY3RpbmcnIHwgJ2xvc3QnIHwgJ3Jlc3RvcmVkJyA9ICdjb25uZWN0aW5nJztcclxuXHJcbiAgICBnZXQgc3RhdGUoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXRlO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBzdGF0ZSh2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuX3N0YXRlID0gdmFsdWU7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLl9jb25uZWN0aW9uU3RhdGVDaGFuZ2VkLm5leHQodGhpcy5fc3RhdGUpKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9jb25uZWN0aW9uU3RhdGVDaGFuZ2VkID0gbmV3IFN1YmplY3Q8J2Nvbm5lY3RlZCcgfCAnY29ubmVjdGluZycgfCAnbG9zdCcgfCAncmVzdG9yZWQnPigpO1xyXG4gICAgZ2V0IGNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Nvbm5lY3Rpb25TdGF0ZUNoYW5nZWQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgYmluZChzb2NrZXQ6IER1cmFibGVTb2NrZXQpOiBQcm9taXNlPHRoaXM+IHtcclxuICAgICAgICBzdXBlci5iaW5kKHNvY2tldCk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdjb25uZWN0ZWQnO1xyXG4gICAgICAgIHRoaXMubWFya1JlYWR5KCk7XHJcblxyXG4gICAgICAgIGF3YWl0IHRoaXMuc3Vic2NyaWJlVG9Ub3BpYygpO1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmJhY2tlbmQudXNlckNoYW5nZWQuc3Vic2NyaWJlKCgpID0+IHRoaXMuYXV0aGVudGljYXRlKCkpKTtcclxuXHJcbiAgICAgICAgc29ja2V0LmFkZEV2ZW50TGlzdGVuZXIoJ29wZW4nLCBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSAnY29ubmVjdGVkJztcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgc29ja2V0LmFkZEV2ZW50TGlzdGVuZXIoJ2xvc3QnLCBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSAnbG9zdCc7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHNvY2tldC5hZGRFdmVudExpc3RlbmVyKCdyZXN0b3JlJywgYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gJ3Jlc3RvcmVkJztcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5hdXRoZW50aWNhdGUoKTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5zdWJzY3JpYmVUb1RvcGljKCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgbWFwT3JVcGRhdGVNZXNzYWdlcyhtZXNzYWdlczogQ2hhdE1lc3NhZ2VbXSk6IENoYXRNZXNzYWdlW10ge1xyXG4gICAgICAgIHJldHVybiBtZXNzYWdlcy5tYXAobWVzc2FnZSA9PiB0aGlzLm1hcE9yVXBkYXRlTWVzc2FnZShtZXNzYWdlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBtYXBPclVwZGF0ZU1lc3NhZ2UobWVzc2FnZTogQ2hhdE1lc3NhZ2UpOiBDaGF0TWVzc2FnZSB7XHJcbiAgICAgICAgbGV0IGV4aXN0aW5nTWVzc2FnZSA9IHRoaXMubWVzc2FnZU1hcC5nZXQobWVzc2FnZS5pZCk7XHJcbiAgICAgICAgaWYgKGV4aXN0aW5nTWVzc2FnZSkge1xyXG4gICAgICAgICAgICBtZXNzYWdlID0gT2JqZWN0LmFzc2lnbihleGlzdGluZ01lc3NhZ2UsIG1lc3NhZ2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZU1hcC5zZXQobWVzc2FnZS5pZCwgbWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHRoaXMuX21lc3NhZ2VPYnNlcnZlZC5uZXh0KG1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG1lc3NhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0RXhpc3RpbmdNZXNzYWdlcygpOiBQcm9taXNlPENoYXRNZXNzYWdlW10+IHtcclxuICAgICAgICBsZXQgbWVzc2FnZXMgPSBhd2FpdCB0aGlzLnBlZXIuZ2V0RXhpc3RpbmdNZXNzYWdlcygpO1xyXG4gICAgICAgIG1lc3NhZ2VzID0gdGhpcy5tYXBPclVwZGF0ZU1lc3NhZ2VzKG1lc3NhZ2VzKTtcclxuICAgICAgICByZXR1cm4gbWVzc2FnZXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhc3luYyBlbnN1cmVDb25uZWN0aW9uKGVycm9yTWVzc2FnZT86IHN0cmluZykge1xyXG4gICAgICAgIGxldCByZWFzb24gPSBgQ29ubmVjdGlvbiB0byBjaGF0IHNlcnZpY2VzIGlzIG5vdCBjdXJyZW50bHkgYXZhaWxhYmxlLmA7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUgIT09ICdjb25uZWN0ZWQnICYmIHRoaXMuc3RhdGUgIT09ICdyZXN0b3JlZCcpIHtcclxuICAgICAgICAgICAgaWYgKGVycm9yTWVzc2FnZSlcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtlcnJvck1lc3NhZ2V9OiAke3JlYXNvbn1gKTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3JlYXNvbn1gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZWRpdE1lc3NhZ2UobWVzc2FnZUlkOiBzdHJpbmcsIHRleHQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuZW5zdXJlQ29ubmVjdGlvbigpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMucGVlci5lZGl0TWVzc2FnZShtZXNzYWdlSWQsIHRleHQpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHN1YnNjcmliZVRvVG9waWMoKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5wZWVyLnN1YnNjcmliZSh0aGlzLmlkZW50aWZpZXIsIHRoaXMucGFyZW50SWRlbnRpZmllciwgdGhpcy5zb3J0T3JkZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGF1dGhlbnRpY2F0ZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5iYWNrZW5kLnVzZXIpIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucGVlci5hdXRoZW50aWNhdGUodGhpcy5iYWNrZW5kLnVzZXI/LnRva2VuKTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgQ291bGQgbm90IGF1dGhlbnRpY2F0ZSB3aXRoIEJhbnRhIHNlcnZlcjpgKTtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2UoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIuY2xvc2UoKTtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIEBScGNFdmVudCgpXHJcbiAgICBvblBlcm1pc3Npb25zKHBlcm1pc3Npb25zOiBDaGF0UGVybWlzc2lvbnMpIHtcclxuICAgICAgICAod2luZG93IGFzIGFueSkuYmFudGFQZXJtaXNzaW9uc0RlYnVnID0gcGVybWlzc2lvbnM7XHJcbiAgICAgICAgdGhpcy5wZXJtaXNzaW9ucyA9IHBlcm1pc3Npb25zO1xyXG4gICAgfVxyXG5cclxuICAgIEBScGNFdmVudCgpXHJcbiAgICBvbkNoYXRNZXNzYWdlKG1lc3NhZ2U6IENoYXRNZXNzYWdlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubWVzc2FnZU1hcC5oYXMobWVzc2FnZS5pZCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFwT3JVcGRhdGVNZXNzYWdlKG1lc3NhZ2UpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoIW1lc3NhZ2UuaGlkZGVuKSB7XHJcbiAgICAgICAgICAgIC8vIE9ubHkgcHJvY2VzcyBub24taGlkZGVuIG1lc3NhZ2VzIHRocm91Z2ggaGVyZS4gXHJcbiAgICAgICAgICAgIC8vIEhpZGRlbiBtZXNzYWdlcyBtYXkgYmUgc2VudCB0byB1cyB3aGVuIHRoZXkgYmVjb21lIGhpZGRlbiAoaWUgbW9kZXJhdGlvbiBpcyBvY2N1cnJpbmcpLlxyXG4gICAgICAgICAgICAvLyBCdXQgaWYgd2UgbmV2ZXIgaGFkIHRoZSBtZXNzYWdlIHRvIGJlZ2luIHdpdGgsIHdlIHNob3VsZCBkaXNjYXJkIGl0LlxyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VNYXAuc2V0KG1lc3NhZ2UuaWQsIG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB0aGlzLl9tZXNzYWdlUmVjZWl2ZWQubmV4dChtZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBtZXNzYWdlTWFwID0gbmV3IE1hcDxzdHJpbmcsIENoYXRNZXNzYWdlPigpO1xyXG4gICAgcHJpdmF0ZSBfbWVzc2FnZVJlY2VpdmVkID0gbmV3IFN1YmplY3Q8Q2hhdE1lc3NhZ2U+KCk7XHJcbiAgICBwcml2YXRlIF9tZXNzYWdlVXBkYXRlZCA9IG5ldyBTdWJqZWN0PENoYXRNZXNzYWdlPigpO1xyXG4gICAgcHJpdmF0ZSBfbWVzc2FnZVNlbnQgPSBuZXcgU3ViamVjdDxDaGF0TWVzc2FnZT4oKTtcclxuICAgIHByaXZhdGUgX21lc3NhZ2VPYnNlcnZlZCA9IG5ldyBTdWJqZWN0PENoYXRNZXNzYWdlPigpO1xyXG5cclxuICAgIGdldCBtZXNzYWdlUmVjZWl2ZWQoKSB7IHJldHVybiB0aGlzLl9tZXNzYWdlUmVjZWl2ZWQuYXNPYnNlcnZhYmxlKCk7IH1cclxuICAgIGdldCBtZXNzYWdlVXBkYXRlZCgpIHsgcmV0dXJuIHRoaXMuX21lc3NhZ2VVcGRhdGVkLmFzT2JzZXJ2YWJsZSgpOyB9XHJcbiAgICBnZXQgbWVzc2FnZVNlbnQoKSB7IHJldHVybiB0aGlzLl9tZXNzYWdlU2VudC5hc09ic2VydmFibGUoKTsgfVxyXG4gICAgZ2V0IG1lc3NhZ2VPYnNlcnZlZCgpIHsgcmV0dXJuIHRoaXMuX21lc3NhZ2VPYnNlcnZlZC5hc09ic2VydmFibGUoKTsgfVxyXG5cclxuICAgIG1lc3NhZ2VzOiBDaGF0TWVzc2FnZVtdID0gW107XHJcblxyXG4gICAgYXN5bmMgc2VuZChtZXNzYWdlOiBDaGF0TWVzc2FnZSk6IFByb21pc2U8Q2hhdE1lc3NhZ2U+IHtcclxuICAgICAgICBhd2FpdCB0aGlzLmVuc3VyZUNvbm5lY3Rpb24oKTtcclxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wZWVyLnNlbmRNZXNzYWdlKG1lc3NhZ2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGxvYWRBZnRlcihtZXNzYWdlOiBDaGF0TWVzc2FnZSwgY291bnQ6IG51bWJlcik6IFByb21pc2U8Q2hhdE1lc3NhZ2VbXT4ge1xyXG4gICAgICAgIGlmICghbWVzc2FnZSlcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICBpZiAoIW1lc3NhZ2UucGFnaW5nQ3Vyc29yKVxyXG4gICAgICAgICAgICByZXR1cm4gW107XHJcbiAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwT3JVcGRhdGVNZXNzYWdlcyhcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5wZWVyLmxvYWRBZnRlcihOdW1iZXIobWVzc2FnZS5wYWdpbmdDdXJzb3IpLCBjb3VudClcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldChpZDogc3RyaW5nKTogUHJvbWlzZTxDaGF0TWVzc2FnZT4ge1xyXG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2VNYXAuaGFzKGlkKSlcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZU1hcC5nZXQoaWQpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGF3YWl0IHRoaXMuZW5zdXJlQ29ubmVjdGlvbihgQ291bGQgbm90IGdldCBtZXNzYWdlYCk7XHJcbiAgICAgICAgbGV0IG1lc3NhZ2UgPSBhd2FpdCB0aGlzLnBlZXIuZ2V0TWVzc2FnZShpZCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2VNYXAuaGFzKGlkKSkge1xyXG4gICAgICAgICAgICBsZXQgZXhpc3RpbmdNZXNzYWdlID0gdGhpcy5tZXNzYWdlTWFwLmdldChpZCk7XHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oZXhpc3RpbmdNZXNzYWdlLCBtZXNzYWdlKTtcclxuICAgICAgICAgICAgbWVzc2FnZSA9IGV4aXN0aW5nTWVzc2FnZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VNYXAuc2V0KGlkLCBtZXNzYWdlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBtZXNzYWdlO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldENvdW50KCk6IFByb21pc2U8bnVtYmVyPiB7XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucGVlci5nZXRDb3VudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGxpa2VNZXNzYWdlKG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5lbnN1cmVDb25uZWN0aW9uKCk7XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucGVlci5saWtlTWVzc2FnZShtZXNzYWdlSWQpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVubGlrZU1lc3NhZ2UobWVzc2FnZUlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICBhd2FpdCB0aGlzLmVuc3VyZUNvbm5lY3Rpb24oKTtcclxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wZWVyLnVubGlrZU1lc3NhZ2UobWVzc2FnZUlkKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBkZWxldGVNZXNzYWdlKG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5lbnN1cmVDb25uZWN0aW9uKCk7XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucGVlci5kZWxldGVNZXNzYWdlKG1lc3NhZ2VJZCk7XHJcbiAgICB9XHJcblxyXG59Il19
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1zb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zZGsvc3JjL2xpYi9jaGF0LXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFjLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJcEQsTUFBTSxPQUFPLFVBQVcsU0FBUSxTQUFTO0lBQ3JDLFlBQ2EsT0FBb0IsRUFDcEIsVUFBa0IsRUFDbEIsZ0JBQXdCLEVBQ3hCLFNBQXdCO1FBRWpDLEtBQUssRUFBRSxDQUFDO1FBTEMsWUFBTyxHQUFQLE9BQU8sQ0FBYTtRQUNwQixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ2xCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBUTtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUFlO1FBTTdCLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQU1sQyxXQUFNLEdBQXFELFlBQVksQ0FBQztRQVd4RSw0QkFBdUIsR0FBRyxJQUFJLE9BQU8sRUFBb0QsQ0FBQztRQTBHMUYsZUFBVSxHQUFHLElBQUksR0FBRyxFQUF1QixDQUFDO1FBQzVDLHFCQUFnQixHQUFHLElBQUksT0FBTyxFQUFlLENBQUM7UUFDOUMsb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBZSxDQUFDO1FBQzdDLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQWUsQ0FBQztRQUMxQyxxQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBZSxDQUFDO1FBT3RELGFBQVEsR0FBa0IsRUFBRSxDQUFDO1FBekl6QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksT0FBTyxDQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBVUQsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxLQUFLO1FBQ1gsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUdELElBQUksc0JBQXNCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFFSyxJQUFJLENBQUMsTUFBcUI7Ozs7O1lBQzVCLE9BQU0sSUFBSSxZQUFDLE1BQU0sRUFBRTtZQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQztZQUN6QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFFakIsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztZQUVyRixNQUFNLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLEdBQVMsRUFBRTtnQkFDdkMsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUM7WUFDN0IsQ0FBQyxDQUFBLENBQUMsQ0FBQztZQUVILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsR0FBUyxFQUFFO2dCQUN2QyxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztZQUN4QixDQUFDLENBQUEsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxHQUFTLEVBQUU7Z0JBQzFDLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDO2dCQUN4QixNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDMUIsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNsQyxDQUFDLENBQUEsQ0FBQyxDQUFDO1lBRUgsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztLQUFBO0lBRU8sbUJBQW1CLENBQUMsUUFBdUI7UUFDL0MsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVPLGtCQUFrQixDQUFDLE9BQW9CO1FBQzNDLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0RCxJQUFJLGVBQWUsRUFBRTtZQUNqQixPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDckQ7YUFBTTtZQUNILElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN2QztRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFSyxtQkFBbUI7O1lBQ3JCLElBQUksUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3JELFFBQVEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUMsT0FBTyxRQUFRLENBQUM7UUFDcEIsQ0FBQztLQUFBO0lBRWEsZ0JBQWdCLENBQUMsWUFBcUI7O1lBQ2hELElBQUksTUFBTSxHQUFHLHlEQUF5RCxDQUFDO1lBQ3ZFLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxVQUFVLEVBQUU7Z0JBQ3pELElBQUksWUFBWTtvQkFDWixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsWUFBWSxLQUFLLE1BQU0sRUFBRSxDQUFDLENBQUM7O29CQUU5QyxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQzthQUNwQztRQUNMLENBQUM7S0FBQTtJQUVLLFdBQVcsQ0FBQyxTQUFpQixFQUFFLElBQVk7O1lBQzdDLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDOUIsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDakQsQ0FBQztLQUFBO0lBRUssZ0JBQWdCOztZQUNsQixNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0RixDQUFDO0tBQUE7SUFFSyxZQUFZOzs7WUFDZCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO2dCQUNuQixJQUFJO29CQUNBLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBQSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksMENBQUUsS0FBSyxDQUFDLENBQUM7aUJBQzFEO2dCQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNSLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztvQkFDM0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDcEI7YUFDSjs7S0FDSjtJQUVELEtBQUs7UUFDRCxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZCxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFHRCxhQUFhLENBQUMsV0FBNEI7UUFDckMsTUFBYyxDQUFDLHFCQUFxQixHQUFHLFdBQVcsQ0FBQztRQUNwRCxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUNuQyxDQUFDO0lBR0QsYUFBYSxDQUFDLE9BQW9CO1FBQzlCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ2pDLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzNDO2FBQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDeEIsa0RBQWtEO1lBQ2xELDBGQUEwRjtZQUMxRix1RUFBdUU7WUFDdkUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3ZDO0lBQ0wsQ0FBQztJQVFELElBQUksZUFBZSxLQUFLLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0RSxJQUFJLGNBQWMsS0FBSyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLElBQUksV0FBVyxLQUFLLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUQsSUFBSSxlQUFlLEtBQUssT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBSWhFLElBQUksQ0FBQyxPQUFvQjs7WUFDM0IsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM5QixPQUFPLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEQsQ0FBQztLQUFBO0lBRUssU0FBUyxDQUFDLE9BQW9CLEVBQUUsS0FBYTs7WUFDL0MsSUFBSSxDQUFDLE9BQU87Z0JBQ1IsT0FBTztZQUVYLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWTtnQkFDckIsT0FBTyxFQUFFLENBQUM7WUFFZCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FDM0IsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUNqRSxDQUFDO1FBQ04sQ0FBQztLQUFBO0lBRUssR0FBRyxDQUFDLEVBQVU7O1lBQ2hCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN2QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRW5DLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLHVCQUF1QixDQUFDLENBQUM7WUFDckQsSUFBSSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUU3QyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFO2dCQUN6QixJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDOUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQ3hDLE9BQU8sR0FBRyxlQUFlLENBQUM7YUFDN0I7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2FBQ3BDO1lBRUQsT0FBTyxPQUFPLENBQUM7UUFDbkIsQ0FBQztLQUFBO0lBRUssUUFBUTs7WUFDVixPQUFPLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN0QyxDQUFDO0tBQUE7SUFFSyxXQUFXLENBQUMsU0FBaUI7O1lBQy9CLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDOUIsT0FBTyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xELENBQUM7S0FBQTtJQUVLLGFBQWEsQ0FBQyxTQUFpQjs7WUFDakMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM5QixPQUFPLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEQsQ0FBQztLQUFBO0lBRUssYUFBYSxDQUFDLFNBQWlCOztZQUNqQyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzlCLE9BQU8sTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRCxDQUFDO0tBQUE7Q0FFSjtBQXJGRztJQURDLFFBQVEsRUFBRTsrQ0FJVjtBQUdEO0lBREMsUUFBUSxFQUFFOytDQVdWIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhdE1lc3NhZ2UsIENoYXRQZXJtaXNzaW9ucywgQ29tbWVudHNPcmRlciwgRHVyYWJsZVNvY2tldCwgVXNlciB9IGZyb20gXCJAYmFudGEvY29tbW9uXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IFJwY0V2ZW50LCBTb2NrZXRSUEMgfSBmcm9tIFwiQGJhbnRhL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBDaGF0U291cmNlQmFzZSB9IGZyb20gXCIuL2NoYXQtc291cmNlLWJhc2VcIjtcclxuaW1wb3J0IHsgQ2hhdEJhY2tlbmQgfSBmcm9tIFwiLi9jaGF0LWJhY2tlbmRcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBDaGF0U291cmNlIGV4dGVuZHMgU29ja2V0UlBDIGltcGxlbWVudHMgQ2hhdFNvdXJjZUJhc2Uge1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcmVhZG9ubHkgYmFja2VuZDogQ2hhdEJhY2tlbmQsXHJcbiAgICAgICAgcmVhZG9ubHkgaWRlbnRpZmllcjogc3RyaW5nLFxyXG4gICAgICAgIHJlYWRvbmx5IHBhcmVudElkZW50aWZpZXI6IHN0cmluZyxcclxuICAgICAgICByZWFkb25seSBzb3J0T3JkZXI6IENvbW1lbnRzT3JkZXJcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5yZWFkeSA9IG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4gdGhpcy5tYXJrUmVhZHkgPSByZXNvbHZlKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICAgIHByaXZhdGUgbWFya1JlYWR5OiAoKSA9PiB2b2lkO1xyXG5cclxuICAgIHJlYWR5OiBQcm9taXNlPHZvaWQ+O1xyXG5cclxuICAgIHBlcm1pc3Npb25zOiBDaGF0UGVybWlzc2lvbnM7XHJcbiAgICBwcml2YXRlIF9zdGF0ZTogJ2Nvbm5lY3RlZCcgfCAnY29ubmVjdGluZycgfCAnbG9zdCcgfCAncmVzdG9yZWQnID0gJ2Nvbm5lY3RpbmcnO1xyXG5cclxuICAgIGdldCBzdGF0ZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc3RhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IHN0YXRlKHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5fc3RhdGUgPSB2YWx1ZTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuX2Nvbm5lY3Rpb25TdGF0ZUNoYW5nZWQubmV4dCh0aGlzLl9zdGF0ZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2Nvbm5lY3Rpb25TdGF0ZUNoYW5nZWQgPSBuZXcgU3ViamVjdDwnY29ubmVjdGVkJyB8ICdjb25uZWN0aW5nJyB8ICdsb3N0JyB8ICdyZXN0b3JlZCc+KCk7XHJcbiAgICBnZXQgY29ubmVjdGlvblN0YXRlQ2hhbmdlZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fY29ubmVjdGlvblN0YXRlQ2hhbmdlZC5hc09ic2VydmFibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBiaW5kKHNvY2tldDogRHVyYWJsZVNvY2tldCk6IFByb21pc2U8dGhpcz4ge1xyXG4gICAgICAgIHN1cGVyLmJpbmQoc29ja2V0KTtcclxuICAgICAgICB0aGlzLnN0YXRlID0gJ2Nvbm5lY3RlZCc7XHJcbiAgICAgICAgdGhpcy5tYXJrUmVhZHkoKTtcclxuXHJcbiAgICAgICAgYXdhaXQgdGhpcy5zdWJzY3JpYmVUb1RvcGljKCk7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMuYmFja2VuZC51c2VyQ2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5hdXRoZW50aWNhdGUoKSkpO1xyXG5cclxuICAgICAgICBzb2NrZXQuYWRkRXZlbnRMaXN0ZW5lcignb3BlbicsIGFzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9ICdjb25uZWN0ZWQnO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBzb2NrZXQuYWRkRXZlbnRMaXN0ZW5lcignbG9zdCcsIGFzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9ICdsb3N0JztcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgc29ja2V0LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc3RvcmUnLCBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSAncmVzdG9yZWQnO1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmF1dGhlbnRpY2F0ZSgpO1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnN1YnNjcmliZVRvVG9waWMoKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBtYXBPclVwZGF0ZU1lc3NhZ2VzKG1lc3NhZ2VzOiBDaGF0TWVzc2FnZVtdKTogQ2hhdE1lc3NhZ2VbXSB7XHJcbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VzLm1hcChtZXNzYWdlID0+IHRoaXMubWFwT3JVcGRhdGVNZXNzYWdlKG1lc3NhZ2UpKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG1hcE9yVXBkYXRlTWVzc2FnZShtZXNzYWdlOiBDaGF0TWVzc2FnZSk6IENoYXRNZXNzYWdlIHtcclxuICAgICAgICBsZXQgZXhpc3RpbmdNZXNzYWdlID0gdGhpcy5tZXNzYWdlTWFwLmdldChtZXNzYWdlLmlkKTtcclxuICAgICAgICBpZiAoZXhpc3RpbmdNZXNzYWdlKSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBPYmplY3QuYXNzaWduKGV4aXN0aW5nTWVzc2FnZSwgbWVzc2FnZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlTWFwLnNldChtZXNzYWdlLmlkLCBtZXNzYWdlKTtcclxuICAgICAgICAgICAgdGhpcy5fbWVzc2FnZU9ic2VydmVkLm5leHQobWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbWVzc2FnZTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRFeGlzdGluZ01lc3NhZ2VzKCk6IFByb21pc2U8Q2hhdE1lc3NhZ2VbXT4ge1xyXG4gICAgICAgIGxldCBtZXNzYWdlcyA9IGF3YWl0IHRoaXMucGVlci5nZXRFeGlzdGluZ01lc3NhZ2VzKCk7XHJcbiAgICAgICAgbWVzc2FnZXMgPSB0aGlzLm1hcE9yVXBkYXRlTWVzc2FnZXMobWVzc2FnZXMpO1xyXG4gICAgICAgIHJldHVybiBtZXNzYWdlcztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFzeW5jIGVuc3VyZUNvbm5lY3Rpb24oZXJyb3JNZXNzYWdlPzogc3RyaW5nKSB7XHJcbiAgICAgICAgbGV0IHJlYXNvbiA9IGBDb25uZWN0aW9uIHRvIGNoYXQgc2VydmljZXMgaXMgbm90IGN1cnJlbnRseSBhdmFpbGFibGUuYDtcclxuICAgICAgICBpZiAodGhpcy5zdGF0ZSAhPT0gJ2Nvbm5lY3RlZCcgJiYgdGhpcy5zdGF0ZSAhPT0gJ3Jlc3RvcmVkJykge1xyXG4gICAgICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKVxyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2Vycm9yTWVzc2FnZX06ICR7cmVhc29ufWApO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7cmVhc29ufWApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBlZGl0TWVzc2FnZShtZXNzYWdlSWQ6IHN0cmluZywgdGV4dDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5lbnN1cmVDb25uZWN0aW9uKCk7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5wZWVyLmVkaXRNZXNzYWdlKG1lc3NhZ2VJZCwgdGV4dCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc3Vic2NyaWJlVG9Ub3BpYygpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLnBlZXIuc3Vic2NyaWJlKHRoaXMuaWRlbnRpZmllciwgdGhpcy5wYXJlbnRJZGVudGlmaWVyLCB0aGlzLnNvcnRPcmRlcik7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgYXV0aGVudGljYXRlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmJhY2tlbmQudXNlcikge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wZWVyLmF1dGhlbnRpY2F0ZSh0aGlzLmJhY2tlbmQudXNlcj8udG9rZW4pO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBDb3VsZCBub3QgYXV0aGVudGljYXRlIHdpdGggQmFudGEgc2VydmVyOmApO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjbG9zZSgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5jbG9zZSgpO1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQFJwY0V2ZW50KClcclxuICAgIG9uUGVybWlzc2lvbnMocGVybWlzc2lvbnM6IENoYXRQZXJtaXNzaW9ucykge1xyXG4gICAgICAgICh3aW5kb3cgYXMgYW55KS5iYW50YVBlcm1pc3Npb25zRGVidWcgPSBwZXJtaXNzaW9ucztcclxuICAgICAgICB0aGlzLnBlcm1pc3Npb25zID0gcGVybWlzc2lvbnM7XHJcbiAgICB9XHJcblxyXG4gICAgQFJwY0V2ZW50KClcclxuICAgIG9uQ2hhdE1lc3NhZ2UobWVzc2FnZTogQ2hhdE1lc3NhZ2UpIHtcclxuICAgICAgICBpZiAodGhpcy5tZXNzYWdlTWFwLmhhcyhtZXNzYWdlLmlkKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYXBPclVwZGF0ZU1lc3NhZ2UobWVzc2FnZSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICghbWVzc2FnZS5oaWRkZW4pIHtcclxuICAgICAgICAgICAgLy8gT25seSBwcm9jZXNzIG5vbi1oaWRkZW4gbWVzc2FnZXMgdGhyb3VnaCBoZXJlLiBcclxuICAgICAgICAgICAgLy8gSGlkZGVuIG1lc3NhZ2VzIG1heSBiZSBzZW50IHRvIHVzIHdoZW4gdGhleSBiZWNvbWUgaGlkZGVuIChpZSBtb2RlcmF0aW9uIGlzIG9jY3VycmluZykuXHJcbiAgICAgICAgICAgIC8vIEJ1dCBpZiB3ZSBuZXZlciBoYWQgdGhlIG1lc3NhZ2UgdG8gYmVnaW4gd2l0aCwgd2Ugc2hvdWxkIGRpc2NhcmQgaXQuXHJcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZU1hcC5zZXQobWVzc2FnZS5pZCwgbWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHRoaXMuX21lc3NhZ2VSZWNlaXZlZC5uZXh0KG1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG1lc3NhZ2VNYXAgPSBuZXcgTWFwPHN0cmluZywgQ2hhdE1lc3NhZ2U+KCk7XHJcbiAgICBwcml2YXRlIF9tZXNzYWdlUmVjZWl2ZWQgPSBuZXcgU3ViamVjdDxDaGF0TWVzc2FnZT4oKTtcclxuICAgIHByaXZhdGUgX21lc3NhZ2VVcGRhdGVkID0gbmV3IFN1YmplY3Q8Q2hhdE1lc3NhZ2U+KCk7XHJcbiAgICBwcml2YXRlIF9tZXNzYWdlU2VudCA9IG5ldyBTdWJqZWN0PENoYXRNZXNzYWdlPigpO1xyXG4gICAgcHJpdmF0ZSBfbWVzc2FnZU9ic2VydmVkID0gbmV3IFN1YmplY3Q8Q2hhdE1lc3NhZ2U+KCk7XHJcblxyXG4gICAgZ2V0IG1lc3NhZ2VSZWNlaXZlZCgpIHsgcmV0dXJuIHRoaXMuX21lc3NhZ2VSZWNlaXZlZC5hc09ic2VydmFibGUoKTsgfVxyXG4gICAgZ2V0IG1lc3NhZ2VVcGRhdGVkKCkgeyByZXR1cm4gdGhpcy5fbWVzc2FnZVVwZGF0ZWQuYXNPYnNlcnZhYmxlKCk7IH1cclxuICAgIGdldCBtZXNzYWdlU2VudCgpIHsgcmV0dXJuIHRoaXMuX21lc3NhZ2VTZW50LmFzT2JzZXJ2YWJsZSgpOyB9XHJcbiAgICBnZXQgbWVzc2FnZU9ic2VydmVkKCkgeyByZXR1cm4gdGhpcy5fbWVzc2FnZU9ic2VydmVkLmFzT2JzZXJ2YWJsZSgpOyB9XHJcblxyXG4gICAgbWVzc2FnZXM6IENoYXRNZXNzYWdlW10gPSBbXTtcclxuXHJcbiAgICBhc3luYyBzZW5kKG1lc3NhZ2U6IENoYXRNZXNzYWdlKTogUHJvbWlzZTxDaGF0TWVzc2FnZT4ge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuZW5zdXJlQ29ubmVjdGlvbigpO1xyXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnBlZXIuc2VuZE1lc3NhZ2UobWVzc2FnZSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgbG9hZEFmdGVyKG1lc3NhZ2U6IENoYXRNZXNzYWdlLCBjb3VudDogbnVtYmVyKTogUHJvbWlzZTxDaGF0TWVzc2FnZVtdPiB7XHJcbiAgICAgICAgaWYgKCFtZXNzYWdlKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIGlmICghbWVzc2FnZS5wYWdpbmdDdXJzb3IpXHJcbiAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICBcclxuICAgICAgICByZXR1cm4gdGhpcy5tYXBPclVwZGF0ZU1lc3NhZ2VzKFxyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnBlZXIubG9hZEFmdGVyKE51bWJlcihtZXNzYWdlLnBhZ2luZ0N1cnNvciksIGNvdW50KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0KGlkOiBzdHJpbmcpOiBQcm9taXNlPENoYXRNZXNzYWdlPiB7XHJcbiAgICAgICAgaWYgKHRoaXMubWVzc2FnZU1hcC5oYXMoaWQpKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlTWFwLmdldChpZCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgYXdhaXQgdGhpcy5lbnN1cmVDb25uZWN0aW9uKGBDb3VsZCBub3QgZ2V0IG1lc3NhZ2VgKTtcclxuICAgICAgICBsZXQgbWVzc2FnZSA9IGF3YWl0IHRoaXMucGVlci5nZXRNZXNzYWdlKGlkKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMubWVzc2FnZU1hcC5oYXMoaWQpKSB7XHJcbiAgICAgICAgICAgIGxldCBleGlzdGluZ01lc3NhZ2UgPSB0aGlzLm1lc3NhZ2VNYXAuZ2V0KGlkKTtcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihleGlzdGluZ01lc3NhZ2UsIG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBtZXNzYWdlID0gZXhpc3RpbmdNZXNzYWdlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZU1hcC5zZXQoaWQsIG1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG1lc3NhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0Q291bnQoKTogUHJvbWlzZTxudW1iZXI+IHtcclxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wZWVyLmdldENvdW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgbGlrZU1lc3NhZ2UobWVzc2FnZUlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICBhd2FpdCB0aGlzLmVuc3VyZUNvbm5lY3Rpb24oKTtcclxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wZWVyLmxpa2VNZXNzYWdlKG1lc3NhZ2VJZCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgdW5saWtlTWVzc2FnZShtZXNzYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuZW5zdXJlQ29ubmVjdGlvbigpO1xyXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnBlZXIudW5saWtlTWVzc2FnZShtZXNzYWdlSWQpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGRlbGV0ZU1lc3NhZ2UobWVzc2FnZUlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICBhd2FpdCB0aGlzLmVuc3VyZUNvbm5lY3Rpb24oKTtcclxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wZWVyLmRlbGV0ZU1lc3NhZ2UobWVzc2FnZUlkKTtcclxuICAgIH1cclxuXHJcbn0iXX0=
@@ -1,5 +1,5 @@
1
1
  import { __awaiter } from "tslib";
2
- import { Component, ElementRef, Output, ViewChild } from '@angular/core';
2
+ import { Component, Output, ViewChild } from '@angular/core';
3
3
  import { CDNProvider } from '@banta/common';
4
4
  import { Subject } from 'rxjs';
5
5
  export class AttachmentButtonComponent {
@@ -56,7 +56,7 @@ AttachmentButtonComponent.decorators = [
56
56
  { type: Component, args: [{
57
57
  selector: 'banta-attachment-button',
58
58
  template: "<button matTooltip=\"Add an image or gif\" #button type=\"button\" mat-icon-button (click)=\"show()\">\r\n\t<mat-icon>image</mat-icon>\r\n</button>\r\n<input style=\"display: none;\" #fileUpload [multiple]=\"false\" (change)=\"fileChange($event)\" type=\"file\" >",
59
- styles: ["button{color:#666}"]
59
+ styles: ["button{color:#666}\n"]
60
60
  },] }
61
61
  ];
62
62
  AttachmentButtonComponent.ctorParameters = () => [
@@ -67,4 +67,4 @@ AttachmentButtonComponent.propDecorators = {
67
67
  addedAttachment: [{ type: Output }],
68
68
  attachmentError: [{ type: Output }]
69
69
  };
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudC1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvY29tbWVudHMvYXR0YWNobWVudC1idXR0b24vYXR0YWNobWVudC1idXR0b24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxXQUFXLEVBQXlCLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFPL0IsTUFBTSxPQUFPLHlCQUF5QjtJQUVwQyxZQUNVLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBSTFCLHFCQUFnQixHQUFHLElBQUksT0FBTyxFQUF5QixDQUFDO1FBQ3hELHFCQUFnQixHQUFHLElBQUksT0FBTyxFQUF5QixDQUFDO0lBSGhFLENBQUM7SUFPRCxJQUFjLGVBQWUsS0FBSyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEYsSUFBYyxlQUFlLEtBQUssT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRWhGLElBQUk7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWtDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0QsQ0FBQztJQUVLLFVBQVUsQ0FBQyxLQUFZOztZQUMzQixNQUFNLE9BQU8sR0FBSSxLQUFLLENBQUMsYUFBa0MsQ0FBQztZQUMxRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO2dCQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixDQUFDLENBQUM7Z0JBQzdDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzlCLElBQUksU0FBaUIsQ0FBQztnQkFFdEIsSUFBSSxVQUFVLEdBQTBCO29CQUN0QyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7b0JBQ2YsR0FBRyxFQUFFLFNBQVM7b0JBQ2QsY0FBYyxFQUFFO3dCQUNkLFNBQVMsRUFBRSxJQUFJO3dCQUNmLEtBQUssRUFBRSxLQUFLO3dCQUNaLFlBQVksRUFBRSxTQUFTO3FCQUN4QjtpQkFDRixDQUFBO2dCQUVELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBRXZDLElBQUk7b0JBQ0YsU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ3REO2dCQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNWLFVBQVUsQ0FBQyxjQUFjLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztvQkFDdkMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEdBQUcsa0JBQWtCLENBQUM7b0JBRTVELE9BQU8sQ0FBQyxLQUFLLENBQUMsdURBQXVELENBQUMsQ0FBQztvQkFDdkUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDakIsS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7b0JBRXpELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ3ZDLE9BQU87aUJBQ1I7Z0JBRUQsK0VBQStFO2dCQUMvRSw4Q0FBOEM7Z0JBQzlDLElBQUksQ0FBQyxTQUFTO29CQUNaLE9BQU87Z0JBRVQsVUFBVSxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUM7Z0JBQzNCLFVBQVUsQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDO2FBQ3ZDO1FBRUgsQ0FBQztLQUFBOzs7WUFsRUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSx5QkFBeUI7Z0JBQ25DLG9SQUFpRDs7YUFFbEQ7OztZQVBRLFdBQVc7Ozt3QkFrQmpCLFNBQVMsU0FBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOzhCQUV6QyxNQUFNOzhCQUNOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENETlByb3ZpZGVyLCBDaGF0TWVzc2FnZUF0dGFjaG1lbnQgfSBmcm9tICdAYmFudGEvY29tbW9uJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdiYW50YS1hdHRhY2htZW50LWJ1dHRvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2F0dGFjaG1lbnQtYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hdHRhY2htZW50LWJ1dHRvbi5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdHRhY2htZW50QnV0dG9uQ29tcG9uZW50IHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNkblByb3ZpZGVyOiBDRE5Qcm92aWRlcixcclxuICApIHtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2FkZGVkQXR0YWNobWVudCA9IG5ldyBTdWJqZWN0PENoYXRNZXNzYWdlQXR0YWNobWVudD4oKTtcclxuICBwcml2YXRlIF9hdHRhY2htZW50RXJyb3IgPSBuZXcgU3ViamVjdDxDaGF0TWVzc2FnZUF0dGFjaG1lbnQ+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVVcGxvYWQnLCB7IHN0YXRpYzogZmFsc2UgfSkgZmlsZUlucHV0OiBFbGVtZW50UmVmO1xyXG5cclxuICBAT3V0cHV0KCkgZ2V0IGFkZGVkQXR0YWNobWVudCgpIHsgcmV0dXJuIHRoaXMuX2FkZGVkQXR0YWNobWVudC5hc09ic2VydmFibGUoKTsgfVxyXG4gIEBPdXRwdXQoKSBnZXQgYXR0YWNobWVudEVycm9yKCkgeyByZXR1cm4gdGhpcy5fYXR0YWNobWVudEVycm9yLmFzT2JzZXJ2YWJsZSgpOyB9XHJcblxyXG4gIHNob3coKSB7XHJcbiAgICAodGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50KS5jbGljaygpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZmlsZUNoYW5nZShldmVudDogRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSAoZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KTtcclxuICAgIGlmIChlbGVtZW50LmZpbGVzLmxlbmd0aCkge1xyXG4gICAgICBjb25zb2xlLmxvZygnW0JhbnRhXSBGaWxlIEFkZGVkIHRvIGNvbW1lbnQnKTtcclxuICAgICAgY29uc3QgZmlsZSA9IGVsZW1lbnQuZmlsZXNbMF07XHJcbiAgICAgIGxldCBwdWJsaWNVUkw6IHN0cmluZztcclxuICAgICAgXHJcbiAgICAgIGxldCBhdHRhY2htZW50OiBDaGF0TWVzc2FnZUF0dGFjaG1lbnQgPSB7XHJcbiAgICAgICAgdHlwZTogZmlsZS50eXBlLFxyXG4gICAgICAgIHVybDogdW5kZWZpbmVkLFxyXG4gICAgICAgIHRyYW5zaWVudFN0YXRlOiB7XHJcbiAgICAgICAgICB1cGxvYWRpbmc6IHRydWUsXHJcbiAgICAgICAgICBlcnJvcjogZmFsc2UsXHJcbiAgICAgICAgICBlcnJvck1lc3NhZ2U6IHVuZGVmaW5lZFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5fYWRkZWRBdHRhY2htZW50Lm5leHQoYXR0YWNobWVudCk7XHJcblxyXG4gICAgICB0cnkge1xyXG4gICAgICAgIHB1YmxpY1VSTCA9IGF3YWl0IHRoaXMuY2RuUHJvdmlkZXIudXBsb2FkSW1hZ2UoZmlsZSk7XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICBhdHRhY2htZW50LnRyYW5zaWVudFN0YXRlLmVycm9yID0gdHJ1ZTtcclxuICAgICAgICBhdHRhY2htZW50LnRyYW5zaWVudFN0YXRlLmVycm9yTWVzc2FnZSA9IFwiRmFpbGVkIHRvIHVwbG9hZFwiO1xyXG5cclxuICAgICAgICBjb25zb2xlLmVycm9yKGBbQmFudGFdIENhdWdodCBhbiBlcnJvciB3aGlsZSB1cGxvYWRpbmcgaW1hZ2UgdG8gQ0ROOmApO1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XHJcbiAgICAgICAgYWxlcnQoYEZhaWxlZCB0byB1cGxvYWQgaW1hZ2UuIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuYCk7XHJcblxyXG4gICAgICAgIHRoaXMuX2F0dGFjaG1lbnRFcnJvci5uZXh0KGF0dGFjaG1lbnQpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gSWYgbm8gVVJMIHdhcyByZXR1cm5lZCwgdGhlbiBhbiBlcnJvciBtdXN0IGhhdmUgb2NjdXJyZWQuIFByZXN1bWFibHkgdGhlIENETlxyXG4gICAgICAvLyBwcm92aWRlciBoYXMgY29udmV5ZWQgYW4gZXJyb3IgdG8gdGhlIHVzZXIuXHJcbiAgICAgIGlmICghcHVibGljVVJMKVxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgXHJcbiAgICAgIGF0dGFjaG1lbnQudXJsID0gcHVibGljVVJMO1xyXG4gICAgICBhdHRhY2htZW50LnRyYW5zaWVudFN0YXRlID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG59XHJcbiJdfQ==
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudC1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvY29tbWVudHMvYXR0YWNobWVudC1idXR0b24vYXR0YWNobWVudC1idXR0b24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLFdBQVcsRUFBeUIsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQU8vQixNQUFNLE9BQU8seUJBQXlCO0lBRXBDLFlBQ1UsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFJMUIscUJBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQXlCLENBQUM7UUFDeEQscUJBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQXlCLENBQUM7SUFIaEUsQ0FBQztJQU9ELElBQWMsZUFBZSxLQUFLLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRixJQUFjLGVBQWUsS0FBSyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFaEYsSUFBSTtRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsYUFBa0MsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3RCxDQUFDO0lBRUssVUFBVSxDQUFDLEtBQVk7O1lBQzNCLE1BQU0sT0FBTyxHQUFJLEtBQUssQ0FBQyxhQUFrQyxDQUFDO1lBQzFELElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7Z0JBQ3hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsK0JBQStCLENBQUMsQ0FBQztnQkFDN0MsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDOUIsSUFBSSxTQUFpQixDQUFDO2dCQUV0QixJQUFJLFVBQVUsR0FBMEI7b0JBQ3RDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtvQkFDZixHQUFHLEVBQUUsU0FBUztvQkFDZCxjQUFjLEVBQUU7d0JBQ2QsU0FBUyxFQUFFLElBQUk7d0JBQ2YsS0FBSyxFQUFFLEtBQUs7d0JBQ1osWUFBWSxFQUFFLFNBQVM7cUJBQ3hCO2lCQUNGLENBQUE7Z0JBRUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFFdkMsSUFBSTtvQkFDRixTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDdEQ7Z0JBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ1YsVUFBVSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO29CQUN2QyxVQUFVLENBQUMsY0FBYyxDQUFDLFlBQVksR0FBRyxrQkFBa0IsQ0FBQztvQkFFNUQsT0FBTyxDQUFDLEtBQUssQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO29CQUN2RSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNqQixLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQztvQkFFekQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDdkMsT0FBTztpQkFDUjtnQkFFRCwrRUFBK0U7Z0JBQy9FLDhDQUE4QztnQkFDOUMsSUFBSSxDQUFDLFNBQVM7b0JBQ1osT0FBTztnQkFFVCxVQUFVLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQztnQkFDM0IsVUFBVSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7YUFDdkM7UUFFSCxDQUFDO0tBQUE7OztZQWxFRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtnQkFDbkMsb1JBQWlEOzthQUVsRDs7O1lBUFEsV0FBVzs7O3dCQWtCakIsU0FBUyxTQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7OEJBRXpDLE1BQU07OEJBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ0ROUHJvdmlkZXIsIENoYXRNZXNzYWdlQXR0YWNobWVudCB9IGZyb20gJ0BiYW50YS9jb21tb24nO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JhbnRhLWF0dGFjaG1lbnQtYnV0dG9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXR0YWNobWVudC1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2F0dGFjaG1lbnQtYnV0dG9uLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEF0dGFjaG1lbnRCdXR0b25Db21wb25lbnQge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2RuUHJvdmlkZXI6IENETlByb3ZpZGVyLFxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfYWRkZWRBdHRhY2htZW50ID0gbmV3IFN1YmplY3Q8Q2hhdE1lc3NhZ2VBdHRhY2htZW50PigpO1xyXG4gIHByaXZhdGUgX2F0dGFjaG1lbnRFcnJvciA9IG5ldyBTdWJqZWN0PENoYXRNZXNzYWdlQXR0YWNobWVudD4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZmlsZVVwbG9hZCcsIHsgc3RhdGljOiBmYWxzZSB9KSBmaWxlSW5wdXQ6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBPdXRwdXQoKSBnZXQgYWRkZWRBdHRhY2htZW50KCkgeyByZXR1cm4gdGhpcy5fYWRkZWRBdHRhY2htZW50LmFzT2JzZXJ2YWJsZSgpOyB9XHJcbiAgQE91dHB1dCgpIGdldCBhdHRhY2htZW50RXJyb3IoKSB7IHJldHVybiB0aGlzLl9hdHRhY2htZW50RXJyb3IuYXNPYnNlcnZhYmxlKCk7IH1cclxuXHJcbiAgc2hvdygpIHtcclxuICAgICh0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmNsaWNrKCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBmaWxlQ2hhbmdlKGV2ZW50OiBFdmVudCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IChldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpO1xyXG4gICAgaWYgKGVsZW1lbnQuZmlsZXMubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdbQmFudGFdIEZpbGUgQWRkZWQgdG8gY29tbWVudCcpO1xyXG4gICAgICBjb25zdCBmaWxlID0gZWxlbWVudC5maWxlc1swXTtcclxuICAgICAgbGV0IHB1YmxpY1VSTDogc3RyaW5nO1xyXG4gICAgICBcclxuICAgICAgbGV0IGF0dGFjaG1lbnQ6IENoYXRNZXNzYWdlQXR0YWNobWVudCA9IHtcclxuICAgICAgICB0eXBlOiBmaWxlLnR5cGUsXHJcbiAgICAgICAgdXJsOiB1bmRlZmluZWQsXHJcbiAgICAgICAgdHJhbnNpZW50U3RhdGU6IHtcclxuICAgICAgICAgIHVwbG9hZGluZzogdHJ1ZSxcclxuICAgICAgICAgIGVycm9yOiBmYWxzZSxcclxuICAgICAgICAgIGVycm9yTWVzc2FnZTogdW5kZWZpbmVkXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLl9hZGRlZEF0dGFjaG1lbnQubmV4dChhdHRhY2htZW50KTtcclxuXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgcHVibGljVVJMID0gYXdhaXQgdGhpcy5jZG5Qcm92aWRlci51cGxvYWRJbWFnZShmaWxlKTtcclxuICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgIGF0dGFjaG1lbnQudHJhbnNpZW50U3RhdGUuZXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIGF0dGFjaG1lbnQudHJhbnNpZW50U3RhdGUuZXJyb3JNZXNzYWdlID0gXCJGYWlsZWQgdG8gdXBsb2FkXCI7XHJcblxyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFtCYW50YV0gQ2F1Z2h0IGFuIGVycm9yIHdoaWxlIHVwbG9hZGluZyBpbWFnZSB0byBDRE46YCk7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgICAgICBhbGVydChgRmFpbGVkIHRvIHVwbG9hZCBpbWFnZS4gUGxlYXNlIHRyeSBhZ2FpbiBsYXRlci5gKTtcclxuXHJcbiAgICAgICAgdGhpcy5fYXR0YWNobWVudEVycm9yLm5leHQoYXR0YWNobWVudCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBJZiBubyBVUkwgd2FzIHJldHVybmVkLCB0aGVuIGFuIGVycm9yIG11c3QgaGF2ZSBvY2N1cnJlZC4gUHJlc3VtYWJseSB0aGUgQ0ROXHJcbiAgICAgIC8vIHByb3ZpZGVyIGhhcyBjb252ZXllZCBhbiBlcnJvciB0byB0aGUgdXNlci5cclxuICAgICAgaWYgKCFwdWJsaWNVUkwpXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICBcclxuICAgICAgYXR0YWNobWVudC51cmwgPSBwdWJsaWNVUkw7XHJcbiAgICAgIGF0dGFjaG1lbnQudHJhbnNpZW50U3RhdGUgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbn1cclxuIl19
@@ -106,4 +106,4 @@ AttachmentScraperDirective.propDecorators = {
106
106
  attachments: [{ type: Input }],
107
107
  attachmentsChange: [{ type: Output }]
108
108
  };
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudC1zY3JhcGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Nkay9zcmMvbGliL2NvbW1lbnRzL2F0dGFjaG1lbnQtc2NyYXBlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFVdkQsTUFBTSxPQUFPLDBCQUEwQjtJQUNuQyxZQUNZLFVBQTJDLEVBQzNDLFdBQTRCO1FBRDVCLGVBQVUsR0FBVixVQUFVLENBQWlDO1FBQzNDLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUkvQixnQkFBVyxHQUE0QixFQUFFLENBQUM7UUFDekMsc0JBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQTJCLENBQUM7UUFxQjdELG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLGNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBbUMsQ0FBQztJQXpCL0QsQ0FBQztJQUlELFFBQVE7UUFDSixJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVc7WUFDN0IsT0FBTztRQUVYLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRTtZQUMxQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDOUUsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsSUFBSSxPQUFPOztRQUNQLGFBQU8sSUFB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Q3pELE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7NEJBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDOzRCQUNsQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQzs0QkFDdEQsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDOzRCQUNwQixNQUFNO3lCQUNUO3FCQUNKO29CQUFDLE9BQU8sQ0FBQyxFQUFFO3dCQUNSLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkNBQTJDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQzt3QkFDdkYsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDakIsU0FBUztxQkFDWjtpQkFDSjtZQUNMLENBQUMsQ0FBQSxDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7OztZQXhHSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLHFCQUFxQjthQUNsQzs7O1lBYm1CLFVBQVU7WUFJckIsZUFBZTs7OzBCQWlCbkIsS0FBSztnQ0FDTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQ2hhdE1lc3NhZ2UsIENoYXRNZXNzYWdlQXR0YWNobWVudCB9IGZyb20gXCJAYmFudGEvY29tbW9uXCI7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBBdHRhY2htZW50RnJhZ21lbnQgfSBmcm9tIFwiLi4vYXR0YWNobWVudC1zY3JhcGVyXCI7XHJcbmltcG9ydCB7IENoYXRCYWNrZW5kQmFzZSB9IGZyb20gXCIuLi9jaGF0LWJhY2tlbmQtYmFzZVwiO1xyXG5cclxuaW50ZXJmYWNlIEF0dGFjaG1lbnRGcmFnbWVudFN0YXRlIHtcclxuICAgIGZyYWdtZW50OiBBdHRhY2htZW50RnJhZ21lbnQ7XHJcbiAgICByZXNvbHV0aW9uOiBQcm9taXNlPENoYXRNZXNzYWdlQXR0YWNobWVudD47XHJcbn1cclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbYXR0YWNobWVudFNjcmFwZXJdJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXR0YWNobWVudFNjcmFwZXJEaXJlY3RpdmUge1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+LFxyXG4gICAgICAgIHByaXZhdGUgY2hhdEJhY2tlbmQ6IENoYXRCYWNrZW5kQmFzZVxyXG4gICAgKSB7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KCkgYXR0YWNobWVudHM6IENoYXRNZXNzYWdlQXR0YWNobWVudFtdID0gW107XHJcbiAgICBAT3V0cHV0KCkgYXR0YWNobWVudHNDaGFuZ2UgPSBuZXcgU3ViamVjdDxDaGF0TWVzc2FnZUF0dGFjaG1lbnRbXT4oKTtcclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJylcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKCkgPT4ge1xyXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5zY3JhcGVUaW1lb3V0KTtcclxuICAgICAgICAgICAgdGhpcy5zY3JhcGVUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLnNjcmFwZSgpLCB0aGlzLnNjcmFwZURlYm91bmNlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZWxlbWVudCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIGdldCB0ZXh0KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQudmFsdWU7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHByaXZhdGUgc2NyYXBlVGltZW91dDtcclxuICAgIHByaXZhdGUgc2NyYXBlRGVib3VuY2UgPSAxNTAwO1xyXG4gICAgcHJpdmF0ZSBmcmFnbWVudHMgPSBuZXcgTWFwPHN0cmluZywgQXR0YWNobWVudEZyYWdtZW50U3RhdGU+KCk7XHJcbiAgICBwcml2YXRlIHNjcmFwZSgpIHtcclxuICAgICAgICBsZXQgbWVzc2FnZTogQ2hhdE1lc3NhZ2UgPSB7XHJcbiAgICAgICAgICAgIGxpa2VzOiAwLFxyXG4gICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnRleHQsXHJcbiAgICAgICAgICAgIHNlbnRBdDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICB1c2VyOiBudWxsLFxyXG4gICAgICAgICAgICBhdHRhY2htZW50czogdGhpcy5hdHRhY2htZW50c1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGxldCBmb3VuZEZyYWdtZW50czogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgc2NyYXBlciBvZiB0aGlzLmNoYXRCYWNrZW5kLmF0dGFjaG1lbnRTY3JhcGVycykge1xyXG4gICAgICAgICAgICBsZXQgZnJhZ21lbnRzID0gc2NyYXBlci5maW5kRnJhZ21lbnRzKG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBpZiAoIWZyYWdtZW50cykge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgQXR0YWNobWVudCBmcmFnbWVudCBzY3JhcGVyICR7c2NyYXBlci5jb25zdHJ1Y3Rvci5uYW1lfSBpcyBpbXBsZW1lbnRlZCBpbmNvcnJlY3RseTogUmV0dXJuZWQgbnVsbCBpbnN0ZWFkIG9mIGFycmF5YCk7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmb3IgKGxldCBmcmFnbWVudCBvZiBmcmFnbWVudHMpIHtcclxuICAgICAgICAgICAgICAgIGZvdW5kRnJhZ21lbnRzLnB1c2goZnJhZ21lbnQudGV4dCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZnJhZ21lbnRzLmhhcyhmcmFnbWVudC50ZXh0KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBTY3JhcGVkIG5ldyBmcmFnbWVudDpgKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmRpcihmcmFnbWVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mcmFnbWVudHMuc2V0KGZyYWdtZW50LnRleHQsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdXRpb246IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBSZW1vdmUgZnJhZ21lbnRzIHRoYXQgYXJlIG5vIGxvbmdlciBpbiB0aGUgbWVzc2FnZS5cclxuICAgICAgICBsZXQgcmVtb3ZlZEZyYWdtZW50czogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBba2V5XSBvZiB0aGlzLmZyYWdtZW50cykge1xyXG4gICAgICAgICAgICBpZiAoIWZvdW5kRnJhZ21lbnRzLmluY2x1ZGVzKGtleSkpXHJcbiAgICAgICAgICAgICAgICByZW1vdmVkRnJhZ21lbnRzLnB1c2goa2V5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChsZXQgcmVtb3ZlZEZyYWdtZW50IG9mIHJlbW92ZWRGcmFnbWVudHMpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coYFJlbW92ZWQgZnJhZ21lbnQ6ICR7cmVtb3ZlZEZyYWdtZW50fWApO1xyXG4gICAgICAgICAgICB0aGlzLmZyYWdtZW50cy5kZWxldGUocmVtb3ZlZEZyYWdtZW50KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFByb2Nlc3MgYW55IGZyYWdtZW50cyB0aGF0IGFyZSBub3QgeWV0IHJlc29sdmVkIChvciBiZWluZyBcclxuICAgICAgICAvLyByZXNvbHZlZClcclxuXHJcbiAgICAgICAgZm9yIChsZXQgW2tleSwgc3RhdGVdIG9mIHRoaXMuZnJhZ21lbnRzKSB7XHJcbiAgICAgICAgICAgIGlmIChzdGF0ZS5yZXNvbHV0aW9uKVxyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICAgICAgICBzdGF0ZS5yZXNvbHV0aW9uID0gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFJlc29sdmluZyBmcmFnbWVudCAke2tleX1gKTtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IHJlc29sdmVyIG9mIHRoaXMuY2hhdEJhY2tlbmQuYXR0YWNobWVudFJlc29sdmVycykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGAtIFRyeWluZyByZXNvbHZlciAke3Jlc29sdmVyLmNvbnN0cnVjdG9yLm5hbWV9Li4uYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGF0dGFjaG1lbnQgPSBhd2FpdCByZXNvbHZlci5yZXNvbHZlRnJhZ21lbnQobWVzc2FnZSwgc3RhdGUuZnJhZ21lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXR0YWNobWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFJlc29sdmVkIGZyYWdtZW50ICR7a2V5fSBpbnRvIGF0dGFjaG1lbnQ6YCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmRpcihhdHRhY2htZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXR0YWNobWVudHMucHVzaChhdHRhY2htZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXR0YWNobWVudHNDaGFuZ2UubmV4dCh0aGlzLmF0dGFjaG1lbnRzLnNsaWNlKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShhdHRhY2htZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBDYXVnaHQgZXJyb3IgZHVyaW5nIGF0dGFjaG1lbnQgcmVzb2x2ZXIgJHtyZXNvbHZlci5jb25zdHJ1Y3Rvci5uYW1lfTpgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG59Il19
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudC1zY3JhcGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Nkay9zcmMvbGliL2NvbW1lbnRzL2F0dGFjaG1lbnQtc2NyYXBlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFVdkQsTUFBTSxPQUFPLDBCQUEwQjtJQUNuQyxZQUNZLFVBQTJDLEVBQzNDLFdBQTRCO1FBRDVCLGVBQVUsR0FBVixVQUFVLENBQWlDO1FBQzNDLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUkvQixnQkFBVyxHQUE0QixFQUFFLENBQUM7UUFDekMsc0JBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQTJCLENBQUM7UUFxQjdELG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLGNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBbUMsQ0FBQztJQXpCL0QsQ0FBQztJQUlELFFBQVE7UUFDSixJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVc7WUFDN0IsT0FBTztRQUVYLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRTtZQUMxQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDOUUsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsSUFBSSxPQUFPOztRQUNQLE9BQU8sTUFB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Qzs0QkFDekQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQzs0QkFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7NEJBQ2xDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDOzRCQUN0RCxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7NEJBQ3BCLE1BQU07eUJBQ1Q7cUJBQ0o7b0JBQUMsT0FBTyxDQUFDLEVBQUU7d0JBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQywyQ0FBMkMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO3dCQUN2RixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUNqQixTQUFTO3FCQUNaO2lCQUNKO1lBQ0wsQ0FBQyxDQUFBLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQzs7O1lBeEdKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUscUJBQXFCO2FBQ2xDOzs7WUFibUIsVUFBVTtZQUlyQixlQUFlOzs7MEJBaUJuQixLQUFLO2dDQUNMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPdXRwdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDaGF0TWVzc2FnZSwgQ2hhdE1lc3NhZ2VBdHRhY2htZW50IH0gZnJvbSBcIkBiYW50YS9jb21tb25cIjtcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEF0dGFjaG1lbnRGcmFnbWVudCB9IGZyb20gXCIuLi9hdHRhY2htZW50LXNjcmFwZXJcIjtcclxuaW1wb3J0IHsgQ2hhdEJhY2tlbmRCYXNlIH0gZnJvbSBcIi4uL2NoYXQtYmFja2VuZC1iYXNlXCI7XHJcblxyXG5pbnRlcmZhY2UgQXR0YWNobWVudEZyYWdtZW50U3RhdGUge1xyXG4gICAgZnJhZ21lbnQ6IEF0dGFjaG1lbnRGcmFnbWVudDtcclxuICAgIHJlc29sdXRpb246IFByb21pc2U8Q2hhdE1lc3NhZ2VBdHRhY2htZW50PjtcclxufVxyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1thdHRhY2htZW50U2NyYXBlcl0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdHRhY2htZW50U2NyYXBlckRpcmVjdGl2ZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTFRleHRBcmVhRWxlbWVudD4sXHJcbiAgICAgICAgcHJpdmF0ZSBjaGF0QmFja2VuZDogQ2hhdEJhY2tlbmRCYXNlXHJcbiAgICApIHtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKSBhdHRhY2htZW50czogQ2hhdE1lc3NhZ2VBdHRhY2htZW50W10gPSBbXTtcclxuICAgIEBPdXRwdXQoKSBhdHRhY2htZW50c0NoYW5nZSA9IG5ldyBTdWJqZWN0PENoYXRNZXNzYWdlQXR0YWNobWVudFtdPigpO1xyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNjcmFwZVRpbWVvdXQpO1xyXG4gICAgICAgICAgICB0aGlzLnNjcmFwZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2NyYXBlKCksIHRoaXMuc2NyYXBlRGVib3VuY2UpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBlbGVtZW50KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHRleHQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudC52YWx1ZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJpdmF0ZSBzY3JhcGVUaW1lb3V0O1xyXG4gICAgcHJpdmF0ZSBzY3JhcGVEZWJvdW5jZSA9IDE1MDA7XHJcbiAgICBwcml2YXRlIGZyYWdtZW50cyA9IG5ldyBNYXA8c3RyaW5nLCBBdHRhY2htZW50RnJhZ21lbnRTdGF0ZT4oKTtcclxuICAgIHByaXZhdGUgc2NyYXBlKCkge1xyXG4gICAgICAgIGxldCBtZXNzYWdlOiBDaGF0TWVzc2FnZSA9IHtcclxuICAgICAgICAgICAgbGlrZXM6IDAsXHJcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudGV4dCxcclxuICAgICAgICAgICAgc2VudEF0OiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIHVzZXI6IG51bGwsXHJcbiAgICAgICAgICAgIGF0dGFjaG1lbnRzOiB0aGlzLmF0dGFjaG1lbnRzXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgbGV0IGZvdW5kRnJhZ21lbnRzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBzY3JhcGVyIG9mIHRoaXMuY2hhdEJhY2tlbmQuYXR0YWNobWVudFNjcmFwZXJzKSB7XHJcbiAgICAgICAgICAgIGxldCBmcmFnbWVudHMgPSBzY3JhcGVyLmZpbmRGcmFnbWVudHMobWVzc2FnZSk7XHJcbiAgICAgICAgICAgIGlmICghZnJhZ21lbnRzKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBBdHRhY2htZW50IGZyYWdtZW50IHNjcmFwZXIgJHtzY3JhcGVyLmNvbnN0cnVjdG9yLm5hbWV9IGlzIGltcGxlbWVudGVkIGluY29ycmVjdGx5OiBSZXR1cm5lZCBudWxsIGluc3RlYWQgb2YgYXJyYXlgKTtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZvciAobGV0IGZyYWdtZW50IG9mIGZyYWdtZW50cykge1xyXG4gICAgICAgICAgICAgICAgZm91bmRGcmFnbWVudHMucHVzaChmcmFnbWVudC50ZXh0KTtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5mcmFnbWVudHMuaGFzKGZyYWdtZW50LnRleHQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFNjcmFwZWQgbmV3IGZyYWdtZW50OmApO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZGlyKGZyYWdtZW50KTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZyYWdtZW50cy5zZXQoZnJhZ21lbnQudGV4dCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x1dGlvbjogdW5kZWZpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFJlbW92ZSBmcmFnbWVudHMgdGhhdCBhcmUgbm8gbG9uZ2VyIGluIHRoZSBtZXNzYWdlLlxyXG4gICAgICAgIGxldCByZW1vdmVkRnJhZ21lbnRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IFtrZXldIG9mIHRoaXMuZnJhZ21lbnRzKSB7XHJcbiAgICAgICAgICAgIGlmICghZm91bmRGcmFnbWVudHMuaW5jbHVkZXMoa2V5KSlcclxuICAgICAgICAgICAgICAgIHJlbW92ZWRGcmFnbWVudHMucHVzaChrZXkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGxldCByZW1vdmVkRnJhZ21lbnQgb2YgcmVtb3ZlZEZyYWdtZW50cykge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgUmVtb3ZlZCBmcmFnbWVudDogJHtyZW1vdmVkRnJhZ21lbnR9YCk7XHJcbiAgICAgICAgICAgIHRoaXMuZnJhZ21lbnRzLmRlbGV0ZShyZW1vdmVkRnJhZ21lbnQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gUHJvY2VzcyBhbnkgZnJhZ21lbnRzIHRoYXQgYXJlIG5vdCB5ZXQgcmVzb2x2ZWQgKG9yIGJlaW5nIFxyXG4gICAgICAgIC8vIHJlc29sdmVkKVxyXG5cclxuICAgICAgICBmb3IgKGxldCBba2V5LCBzdGF0ZV0gb2YgdGhpcy5mcmFnbWVudHMpIHtcclxuICAgICAgICAgICAgaWYgKHN0YXRlLnJlc29sdXRpb24pXHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgICAgICAgIHN0YXRlLnJlc29sdXRpb24gPSBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgUmVzb2x2aW5nIGZyYWdtZW50ICR7a2V5fWApO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgcmVzb2x2ZXIgb2YgdGhpcy5jaGF0QmFja2VuZC5hdHRhY2htZW50UmVzb2x2ZXJzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYC0gVHJ5aW5nIHJlc29sdmVyICR7cmVzb2x2ZXIuY29uc3RydWN0b3IubmFtZX0uLi5gKTtcclxuICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYXR0YWNobWVudCA9IGF3YWl0IHJlc29sdmVyLnJlc29sdmVGcmFnbWVudChtZXNzYWdlLCBzdGF0ZS5mcmFnbWVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdHRhY2htZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgUmVzb2x2ZWQgZnJhZ21lbnQgJHtrZXl9IGludG8gYXR0YWNobWVudDpgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZGlyKGF0dGFjaG1lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hdHRhY2htZW50cy5wdXNoKGF0dGFjaG1lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hdHRhY2htZW50c0NoYW5nZS5uZXh0KHRoaXMuYXR0YWNobWVudHMuc2xpY2UoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGF0dGFjaG1lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYENhdWdodCBlcnJvciBkdXJpbmcgYXR0YWNobWVudCByZXNvbHZlciAke3Jlc29sdmVyLmNvbnN0cnVjdG9yLm5hbWV9OmApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbn0iXX0=