ca-components 1.8.13 → 1.8.15

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.
@@ -39,6 +39,7 @@ export class CaCommentsComponent {
39
39
  constructor() {
40
40
  this.isDarkmode = false;
41
41
  this.isSearchDisplayed = true;
42
+ this.isDriverTab = false;
42
43
  this.isModal = false;
43
44
  this.commentCount = 0;
44
45
  this.onCommentDelete = new EventEmitter();
@@ -104,7 +105,7 @@ export class CaCommentsComponent {
104
105
  id: this._comments?.length + 1,
105
106
  commentContent: eStringPlaceholder.EMPTY,
106
107
  companyUser,
107
- isDriver: false,
108
+ isDriver: this.isDriverTab,
108
109
  isEdited: false,
109
110
  isNew: true,
110
111
  createdAt: new Date().toISOString(),
@@ -161,7 +162,7 @@ export class CaCommentsComponent {
161
162
  this.commentContentFormControl.reset();
162
163
  }
163
164
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CaCommentsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
164
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CaCommentsComponent, isStandalone: true, selector: "ca-comments", inputs: { isDarkmode: "isDarkmode", isSearchDisplayed: "isSearchDisplayed", isModal: "isModal", commentCount: "commentCount", comments: "comments", currentUser: "currentUser", hasNewComment: "hasNewComment" }, outputs: { onCommentDelete: "onCommentDelete", onCommentAdded: "onCommentAdded", onCommentEdited: "onCommentEdited", onCommentCancel: "onCommentCancel", onCommentSearchCancel: "onCommentSearchCancel" }, ngImport: i0, template: "@let sortedComments = _comments | caSortComments: sortDirection : isDarkmode;\n@let searchTerm = searchCommentFormControl.value;\n@let searchedComments =\n sortedComments | caHighlightComment: searchTerm : isDarkmode;\n@let searchContentCount = searchedComments?.length;\n@let hasSearchContent = !!searchContentCount;\n\n@if (isDarkmode) {\n @let isPopoverOpen = popover?.isOpen();\n\n <div\n #popover=\"ngbPopover\"\n class=\"w-26 h-26 d-flex place-items-center c-pointer br-2 m-t-1\"\n autoClose=\"outside\"\n [ngbPopover]=\"dropdownPopover\"\n [popoverClass]=\"'popover-main'\"\n [placement]=\"ePosition.BOTTOM_RIGHT\"\n [container]=\"'body'\"\n [ngClass]=\"\n isPopoverOpen\n ? 'active background-black'\n : 'background-hover-dark-2 svg-hover-black'\n \"\n >\n <div\n class=\"position-relative d-flex place-items-center m-auto\"\n ngbTooltip\n [tooltipBackground]=\"eColor.BLACK\"\n [tooltipColor]=\"eColor.WHITE\"\n [mainCaTooltip]=\"eSharedString.COMMENT\"\n [position]=\"ePosition.BOTTOM\"\n >\n <span\n class=\"comments-count z-0 position-absolute text-size-9 ta-font-semi-bold\"\n [ngClass]=\"\n isPopoverOpen ? 'text-color-black-2' : 'text-color-white'\n \"\n >\n {{ commentCount }}\n </span>\n\n <svg-icon\n class=\"svg-size-18\"\n [ngClass]=\"isPopoverOpen ? 'svg-fill-white-4' : 'svg-fill-grey'\"\n [src]=\"sharedSvgRoutes.COMMENT_ICON\"\n ></svg-icon>\n </div>\n </div>\n} @else {\n <ng-container *ngTemplateOutlet=\"commentsTemplate\"></ng-container>\n}\n\n<ng-template #commentsTemplate>\n @let tooltipBackground = isDarkmode ? eColor.LIGHT_GREY : eColor.BLACK;\n @let tooltipColor = isDarkmode ? eColor.DARK_GREY : eColor.WHITE;\n\n <div\n class=\"comments-container br-3\"\n [class.padding-4]=\"!isModal\"\n [class.background-black-2]=\"isDarkmode\"\n [style]=\"{\n width: isDarkmode ? '260px' : '100%',\n 'max-height': isDarkmode ? '306px' : '100%',\n }\"\n >\n <div class=\"d-flex flex-column\">\n @let isHiddenSort = (!isDarkmode && !_comments.length) || isModal;\n\n @if (!isHiddenSort) {\n <div class=\"d-flex\" [ngStyle]=\"{ order: isDarkmode ? 0 : 2 }\">\n <div class=\"w-100\" [class.h-32]=\"!isDarkmode\">\n <div\n class=\"d-flex justify-content-between align-items-center\"\n [class.margin-t-4]=\"!isDarkmode\"\n >\n <div\n class=\"d-flex place-items-center ca-font-extra-bold font-size-11 margin-x-4\"\n >\n @let title =\n (isDarkmode\n ? eSharedString.COMMENT\n : eGeneralActions.SORT_BY\n ) | uppercase;\n @let resultTitle =\n searchContentCount +\n eStringPlaceholder.WHITESPACE +\n eSharedString.RESULTS | uppercase;\n\n <span\n class=\"margin-y-2 margin-r-4\"\n [class]=\"\n isDarkmode\n ? 'text-color-white'\n : 'text-color-grey'\n \"\n >{{\n searchTerm && !isDarkmode\n ? resultTitle\n : title\n }}\n </span>\n\n @if (isDarkmode) {\n <span\n class=\"d-flex align-items-center justify-content-center min-w-18 h-18 text-color-white br-60 background-black padding-x-5\"\n >{{ commentCount }}\n </span>\n }\n </div>\n\n @if (_comments.length) {\n @let sortByColorClass =\n isDarkmode\n ? 'text-color-white'\n : 'text-color-black';\n\n <div\n class=\"d-flex place-items-center padding-l-6 br-2\"\n [class]=\"\n isDarkmode\n ? 'background-hover-black'\n : 'background-hover-bw2'\n \"\n #sortByTooltip=\"ngbTooltip\"\n ngbTooltip\n [tooltipBackground]=\"tooltipBackground\"\n [tooltipColor]=\"tooltipColor\"\n [mainCaTooltip]=\"eGeneralActions.SORT_BY\"\n [position]=\"ePosition.BOTTOM\"\n >\n <span\n class=\"text-size-14 ca-font-medium margin-r-4\"\n [ngClass]=\"sortByColorClass\"\n >\n {{ eSharedString.DATE }}\n </span>\n\n @let isDescending =\n sortDirection === eSharedString.DSC;\n @let animationStateSort =\n sortDirection === eSharedString.DSC\n ? eAnimationState.DEFAULT\n : eAnimationState.ROTATED;\n @let sortTooltipText =\n isDescending\n ? eSharedString.DESCENDING\n : eSharedString.ASCENDING;\n\n <div\n class=\"h-18 w-18 d-flex place-items-center background-hover-blue-21 svg-hover-blue-17 br-1 c-pointer\"\n ngbTooltip\n [tooltipBackground]=\"tooltipBackground\"\n [tooltipColor]=\"tooltipColor\"\n [mainCaTooltip]=\"sortTooltipText\"\n [position]=\"ePosition.BOTTOM\"\n (shown)=\"sortByTooltip?.close()\"\n (click)=\"onToggleSort()\"\n >\n <svg-icon\n class=\"d-flex svg-size-14 svg-fill-blue-13\"\n [src]=\"\n 'arrow_sort'\n | caSvg\n : eSharedString.COMMON_LOWERCASE\n \"\n [class.svg-fill-blue-13]=\"\n commentCount\n \"\n [@rotatedState]=\"animationStateSort\"\n ></svg-icon>\n </div>\n </div>\n }\n </div>\n\n @if (!isDarkmode) {\n <div\n class=\"w-100 h-1 background-bw-9 margin-2\"\n ></div>\n }\n </div>\n </div>\n }\n\n <div [ngStyle]=\"{ order: 1 }\">\n <ng-content></ng-content>\n </div>\n\n @if (isSearchDisplayed && _comments.length) {\n <div\n class=\"search d-flex align-items-center justify-content-start background-black background-hover-grey-2 margin-y-4 br-2\"\n [class.search-dark]=\"isDarkmode\"\n [ngStyle]=\"{ order: isDarkmode ? 2 : 0 }\"\n >\n <div\n class=\"d-flex align-items-center justify-content-center margin-4\"\n >\n <svg-icon\n class=\"d-flex svg-size-14 svg-fill-light-grey-2 c-pointer\"\n [src]=\"\n 'search' | caSvg: eSharedString.COMMON_LOWERCASE\n \"\n ></svg-icon>\n </div>\n <div\n class=\"divider w-1 background-light-gray-2 margin-y-3 margin-r-4\"\n ></div>\n <div\n class=\"w-100 d-flex align-items-center justify-content-center\"\n >\n @let searchPlaceholder =\n isDarkmode ? 'Find Title' : 'Find Comment';\n\n <input\n class=\"w-100 background-transparent text-size-11 margin-r-2 padding-2\"\n [placeholder]=\"searchPlaceholder\"\n minlength=\"1\"\n required\n [formControl]=\"searchCommentFormControl\"\n />\n\n @let iconColor =\n isDarkmode ? 'svg-fill-bw-9' : 'svg-fill-black-2';\n <div\n class=\"cancel-search h-14 w-14 d-flex place-items-center br-1 margin-4 c-pointer\"\n (mousedown)=\"onClearSearch($event)\"\n >\n <svg-icon\n class=\"d-flex svg-size-7\"\n [class]=\"[iconColor]\"\n [src]=\"\n 'ic_x'\n | caSvg: eSharedString.COMMON_LOWERCASE\n \"\n ></svg-icon>\n </div>\n </div>\n </div>\n }\n </div>\n\n <!-- text-color-blue-19 text-hover-white -->\n @if (isDarkmode) {\n <div class=\"w-100 h-1 background-black br-1 margin-t-4\"></div>\n\n <div\n class=\"d-flex justify-content-between align-items-center background-hover-blue-21 svg-hover-blue-17 c-pointer br-2 margin-t-4\"\n (click)=\"onAddNewComment()\"\n >\n <span\n class=\"text-size-11 text-color-white ca-font-bold padding-y-4 padding-x-4 text-uppercase\"\n >New Comment\n </span>\n\n <div\n class=\"h-14 w-14 d-flex place-items-center margin-6 svg-fill-blue-13\"\n >\n <svg-icon\n class=\"d-flex svg-size-14 c-pointer\"\n [src]=\"\n 'ic_plus' | caSvg: eSharedString.COMMON_LOWERCASE\n \"\n ></svg-icon>\n </div>\n </div>\n }\n\n @if (_comments.length) {\n <div\n class=\"comments-wrapper c-pointer\"\n [style]=\"{\n 'max-height': isDarkmode\n ? '210px'\n : isModal\n ? '148px'\n : '100%',\n }\"\n >\n @if (hasSearchContent) {\n @for (\n comment of searchedComments;\n let index = $index;\n track index\n ) {\n @let isCommentExpanded =\n comment?.id === commentExpanded?.id;\n @let isEditMode = comment?.id === commentAddOrEdit?.id;\n @let companyUser = comment?.companyUser;\n @let isCurrentUser =\n companyUser | caIsCurrentUser: _currentUser;\n <div\n class=\"comment padding-x-4 padding-y-2 margin-t-2 br-2\"\n [class]=\"{\n 'background-black-2': isDarkmode,\n 'background-hover-black':\n !isEditMode && isDarkmode,\n 'background-bw-9': isEditMode && isDarkmode,\n 'background-hover-bw2':\n !isEditMode && !isDarkmode,\n 'background-black-3': isEditMode && !isDarkmode,\n }\"\n >\n <div class=\"position-relative\">\n <div\n class=\"d-flex justify-content-between align-items-center padding-t-1\"\n >\n <div\n class=\"d-flex justify-content-start align-items-center\"\n >\n <!-- TODO Change colors or something -->\n @let companyUserFullname =\n (companyUser?.fullName ||\n companyUser?.name) ??\n eStringPlaceholder.EMPTY;\n\n @let nameInitials =\n companyUserFullname | nameInitials;\n <app-ca-profile-image\n [avatarColor]=\"{\n background: '#DFC2F9',\n color: '#9E47EC66',\n }\"\n [avatarImg]=\"\n companyUser?.avatarFile?.url\n \"\n [textShortName]=\"nameInitials\"\n [isRound]=\"!comment.isDriver\"\n [size]=\"22\"\n ></app-ca-profile-image>\n <div\n class=\"margin-x-4 margin-y-2 text-size-11\"\n >\n <div>\n <span\n class=\"ca-font-semi-bold\"\n [class]=\"{\n 'text-color-black':\n isEditMode &&\n isDarkmode,\n 'text-color-white':\n (!isEditMode &&\n isDarkmode) ||\n (isEditMode &&\n !isDarkmode),\n }\"\n [innerHtml]=\"\n companyUserFullname\n | caHighlightSingleString\n : searchTerm\n | safeHtml\n \"\n >\n {{\n companyUserFullname\n }}</span\n >\n @let youOrMe =\n isDarkmode\n ? '(Me)'\n : '(You)';\n @let orange =\n isDarkmode\n ? 'text-color-orange-3'\n : 'text-color-orange-2';\n @if (\n isCurrentUser && !isEditMode\n ) {\n <span\n class=\"ca-font-bold margin-x-4\"\n [class]=\"orange\"\n >{{ youOrMe }}</span\n >\n }\n </div>\n <div\n class=\"text-size-11 text-color-grey\"\n >\n @if (isEditMode) {\n @if (comment?.isNew) {\n New Comment\n } @else {\n Edit Comment\n }\n } @else {\n <span>{{\n comment.createdAt\n | dateFromStringPipe\n : eDateTimeFormats.DATE_TIME\n }}</span>\n @if (comment?.isEdited) {\n @let editedTextColor =\n isDarkmode\n ? 'text-color-blue-19'\n : 'text-color-blue-13';\n\n <span\n class=\"ca-font-medium margin-l-4\"\n [ngClass]=\"\n editedTextColor\n \"\n >\n \u2022 Edited\n </span>\n }\n }\n </div>\n </div>\n </div>\n <div\n class=\"d-flex justify-content-start align-items-center\"\n >\n @if (isEditMode) {\n @let backgroundHover =\n isDarkmode\n ? 'background-hover-black'\n : 'background-hover-white';\n @let iconFill =\n isDarkmode\n ? 'svg-fill-bw-9'\n : 'svg-fill-black-9';\n @let actionClasses =\n [\n 'background-grey',\n backgroundHover,\n iconFill,\n ];\n <div\n class=\"icon-hover h-18 w-18 d-flex place-items-center br-1 margin-x-2\"\n ngbTooltip\n [tooltipBackground]=\"\n tooltipBackground\n \"\n [tooltipColor]=\"tooltipColor\"\n [mainCaTooltip]=\"\n eGeneralActions.CONFIRM\n \"\n [position]=\"ePosition.TOP\"\n [class]=\"actionClasses\"\n (click)=\"\n confirmComment(comment)\n \"\n >\n <svg-icon\n class=\"d-flex svg-size-12 c-pointer\"\n [src]=\"\n 'ic_confirm'\n | caSvg\n : eSharedString.COMMON_LOWERCASE\n \"\n ></svg-icon>\n </div>\n <div\n class=\"icon-hover h-18 w-18 d-flex place-items-center br-1 margin-x-2\"\n ngbTooltip\n [tooltipBackground]=\"\n tooltipBackground\n \"\n [tooltipColor]=\"tooltipColor\"\n [mainCaTooltip]=\"\n eGeneralActions.CANCEL\n \"\n [position]=\"ePosition.TOP\"\n [class]=\"actionClasses\"\n (click)=\"\n clearCommentAddOrEdit()\n \"\n >\n <svg-icon\n class=\"d-flex svg-size-10 c-pointer\"\n [src]=\"\n 'ic_x'\n | caSvg\n : eSharedString.COMMON_LOWERCASE\n \"\n ></svg-icon>\n </div>\n } @else {\n @if (isCurrentUser) {\n @let iconHoverFill =\n isDarkmode\n ? 'svg-hover-bw-9'\n : 'svg-hover-black';\n @let iconBackgroundHover =\n isDarkmode\n ? 'background-hover-grey-2'\n : 'background-hover-dark-2';\n\n <div\n class=\"action-icon h-18 w-18 place-items-center br-1 margin-x-2\"\n ngbTooltip\n [tooltipBackground]=\"\n tooltipBackground\n \"\n [tooltipColor]=\"\n tooltipColor\n \"\n [mainCaTooltip]=\"\n eGeneralActions.EDIT\n \"\n [position]=\"ePosition.TOP\"\n [class]=\"[\n 'svg-fill-grey',\n iconHoverFill,\n iconBackgroundHover,\n ]\"\n (click)=\"\n onEditComment(comment)\n \"\n >\n <svg-icon\n class=\"d-flex svg-size-12 c-pointer\"\n [src]=\"\n 'ic_edit'\n | caSvg\n : eSharedString.COMMON_LOWERCASE\n \"\n ></svg-icon>\n </div>\n @let trashIconBackground =\n isDarkmode\n ? 'background-hover-grey-2'\n : 'background-hover-red-15';\n @let trashIconHover =\n isDarkmode\n ? 'svg-hover-bw-9'\n : 'svg-hover-red-14';\n <div\n class=\"action-icon h-18 w-18 place-items-center br-1 margin-x-2\"\n ngbTooltip\n [tooltipBackground]=\"\n tooltipBackground\n \"\n [tooltipColor]=\"\n tooltipColor\n \"\n [mainCaTooltip]=\"\n eGeneralActions.DELETE\n \"\n [position]=\"ePosition.TOP\"\n [class]=\"[\n 'svg-fill-grey',\n trashIconBackground,\n trashIconHover,\n ]\"\n (click)=\"\n onDeleteComment(comment)\n \"\n >\n <svg-icon\n class=\"d-flex svg-size-12 c-pointer\"\n [src]=\"\n 'ic_trash'\n | caSvg\n : eSharedString.COMMON_LOWERCASE\n \"\n ></svg-icon>\n </div>\n }\n @if (isDarkmode) {\n @let animationStateArrow =\n isCommentExpanded\n ? eAnimationState.ROTATED\n : eAnimationState.DEFAULT;\n @let tooltipText =\n isCommentExpanded\n ? eGeneralActions.COLLAPSE\n : eGeneralActions.EXPAND;\n <div\n class=\"action-icon h-18 w-18 place-items-center background-hover-grey-2 margin-l-2 br-1\"\n ngbTooltip\n [tooltipBackground]=\"\n tooltipBackground\n \"\n [tooltipColor]=\"\n tooltipColor\n \"\n [mainCaTooltip]=\"\n tooltipText\n \"\n [position]=\"ePosition.TOP\"\n (click)=\"\n onExpandComment(comment)\n \"\n >\n <svg-icon\n class=\"d-flex svg-size-12 svg-hover-bw-9 c-pointer\"\n [src]=\"\n 'ic_arrow_down'\n | caSvg\n : eSharedString.COMMON_LOWERCASE\n \"\n [class.svg-fill-white]=\"\n isCommentExpanded\n \"\n [@rotatedState]=\"\n animationStateArrow\n \"\n ></svg-icon>\n </div>\n }\n }\n </div>\n </div>\n @let isExpanded =\n isCommentExpanded || !isDarkmode;\n @let commentHeight =\n isExpanded ? 'auto' : '18px';\n\n @if (isEditMode) {\n <div>\n <textarea\n class=\"w-100 background-transparent text-color-black text-size-11 padding-x-2\"\n placeholder=\"Write comment\"\n maxlength=\"112\"\n [class]=\"\n isDarkmode\n ? 'text-color-black'\n : 'text-color-white'\n \"\n [formControl]=\"\n commentContentFormControl\n \"\n ></textarea>\n </div>\n } @else {\n <div\n class=\"text-size-11 padding-x-2\"\n [class]=\"{\n 'text-color-black':\n isEditMode && isDarkmode,\n 'text-color-white':\n (!isEditMode && isDarkmode) ||\n (isEditMode && !isDarkmode),\n 'h-18': !isExpanded,\n }\"\n [innerHtml]=\"\n comment?.commentContent ??\n eStringPlaceholder.EMPTY\n | safeHtml\n \"\n [ngStyle]=\"{\n height: commentHeight,\n }\"\n [class.comment-content]=\"!isExpanded\"\n ></div>\n }\n </div>\n </div>\n }\n } @else {\n @if (isDarkmode) {\n <div\n class=\"w-100 d-flex place-items-center background-black padding-y-15 margin-t-4\"\n >\n <span class=\"text-color-bw6-2 ca-font-extra-bold\">\n No Results\n </span>\n </div>\n }\n }\n </div>\n } @else {\n @let emptyStateContainerClass =\n isDarkmode ? 'h-80 background-black' : 'h-160';\n @let subtleIllustrationTextClass =\n isDarkmode\n ? 'text-size-20 text-color-bw6-2 ca-font-extra-bold'\n : 'text-size-28 text-color-bw-9 ca-font-bold text-uppercase';\n @let emptyStateTextClass =\n isDarkmode\n ? 'text-size-20 text-color-bw6-2 ca-font-extra-bold'\n : 'text-size-28 text-color-bw-9';\n @let emptyStateText = isDarkmode ? 'Empty State' : '(Empty State)';\n\n <div\n class=\"d-flex flex-column align-items-center justify-content-center w-100 margin-t-4\"\n [ngClass]=\"emptyStateContainerClass\"\n >\n <div\n class=\"text-center\"\n [ngClass]=\"subtleIllustrationTextClass\"\n >\n Subtle Illustration\n </div>\n <div class=\"text-center\" [ngClass]=\"emptyStateTextClass\">\n {{ emptyStateText }}\n </div>\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #dropdownPopover>\n <ng-container *ngTemplateOutlet=\"commentsTemplate\"></ng-container>\n</ng-template>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\";@import\"https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css\";.ca-font-thin{font-weight:100!important}.ca-font-extra-light{font-weight:200!important}.ca-font-light{font-weight:300!important}.ca-font-regular{font-weight:400!important}.ca-font-medium{font-weight:500!important}.ca-font-semi-bold{font-weight:600!important}.ca-font-bold{font-weight:700!important}.ca-font-extra-bold{font-weight:800!important}.ca-font-black{font-weight:900!important}.pickup-delivery-popover{top:-38px!important;max-width:340px!important}.pickup-delivery-popover.bs-popover-top{top:auto!important;bottom:-38px!important}.pickup-delivery-popover.bs-popover-top .load-component .assigned-load-holder{order:3;margin-top:4px;margin-bottom:0!important}.pickup-delivery-popover.bs-popover-top .load-component .statusBar{order:2;margin-top:4px}.pickup-delivery-popover.bs-popover-top .load-component .animation-three-tabs{order:1}.load-pickup-delivery-popover{top:-34px!important;max-width:400px!important}.gps_dropdown_popover{top:-38px;max-width:494px}.gps_dropdown_popover .popover-body{padding:0}.table-progress-popover{background-color:unset!important;margin-left:-10px}.table-progress-popover .progress-dropdown{margin-top:-6px;width:260px;height:200px;background:#2f2f2f;border-radius:3px;padding:8px;box-shadow:0 0 4px #00000026;overflow:hidden;-webkit-animation:progressAnimation .25s ease-in-out;animation:progressAnimation .25s ease-in-out}.table-progress-popover .progress-dropdown .progress-header .progress-title{font-size:18px;font-weight:600;color:#fff}.table-progress-popover .progress-dropdown .progress-header .progress-title span{font-weight:400}.table-progress-popover .progress-dropdown .progress-header .progress-total{font-size:14px;line-height:17px;color:#fff}.table-progress-popover .progress-dropdown .table-progress-bar-container{width:100%;height:8px;margin-top:6px;border-radius:2px;overflow:hidden}.table-progress-popover .progress-dropdown .table-progress-bar-container .table-progress-bar{height:100%}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-dual-info-container .progress-info-container{width:50%}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container{margin-top:10px}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container .progress-info-title{margin-bottom:2px;font-size:11px;font-weight:700;line-height:14px;color:#ffffffb2}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container .progress-info-text{font-size:14px;line-height:18px;color:#fff}.table-progress-popover .progress-dropdown.credit-dropdown{height:100px}@-webkit-keyframes progressAnimation{0%{height:0px}to{height:220px}}@keyframes progressAnimation{0%{height:0px}to{height:220px}}ngb-popover-window{padding:unset!important;border:unset!important}ngb-popover-window .popover-arrow{display:none!important}ngb-popover-window .popover-body{padding:unset!important}.dispatch-note .popover-body{position:relative;top:-4px;left:-4px}.dropdown-menu-popover.bs-popover-end-top .dropdown-container{transform:translate(-4px,-4px)}.dropdown-menu-popover.bs-popover-bottom-end .dropdown-container{transform:translate(3px,-3px)}.dropdown-menu-popover.bs-popover-end-bottom .dropdown-container{transform:translate(-3px,3px)}.dropdown-menu-popover.bs-popover-top-end .dropdown-container{transform:translate(3px,3px)}.dropdown-details-title-card-popover .dropdown-container{transform:translateY(-4px)}.tooltip{font-size:12px;position:relative}.tooltip.show{opacity:.83}.tooltip.fade:after,.tooltip.fade:before{transform:translateY(-10px);transition:all .15s ease-in-out}.tooltip.fade:hover:after,.tooltip.fade:hover:before{opacity:1;transform:translate(0)}.tooltip-inner{padding:4px 10px;white-space:nowrap;max-width:none;border-radius:3px}.tooltip-inner:empty{padding:0}.placeholder-delete .tooltip-inner{background-color:#f66}.placeholder-delete .arrow:before{border-top-color:#f66}.custom-popup-owners-for-flag .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(126%) translate(-50%)!important;width:130px;border-radius:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-for-flag .arrow{bottom:-18%;transform:rotate(180deg);left:calc(50% + 2.7rem)}.custom-popup-owners-for-flag .tooltip{opacity:.93!important;width:0}.custom-popup-owners{z-index:999}.custom-popup-owners .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(132%);z-index:999;box-shadow:0 0 3px #0003}.custom-popup-owners .arrow{bottom:-20%;transform:rotate(180deg)}.custom-popup-owners .tooltip{transform:translateY(-61px)!important}.custom-popup-owners-year{z-index:999}.custom-popup-owners-year .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(132%);z-index:999;box-shadow:0 0 3px #0003}.custom-popup-owners-year .arrow{bottom:-20%;transform:rotate(180deg)}.custom-popup-owners-year .tooltip{transform:translate(70px,-61px)!important}.custom-popup-owners-info .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(-100%) translate(-10%);width:200px;height:36px;display:flex;justify-content:center;align-items:center;border-radius:3px;margin-top:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-info .tooltip{opacity:.93;width:0}.custom-popup-owners-info .arrow{display:none}.custom-popup-owners-info #phone-inside{position:relative;right:26px;bottom:0}.custom-popup-owners-info-at .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(-108%) translate(-7%);width:270px;height:36px;display:flex;justify-content:center;align-items:center;border-radius:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-info-at .tooltip{opacity:1;width:0}.custom-popup-owners-info-at .arrow{display:none}.custom-popup-owners-for-tag .tooltip-inner{color:#3b3b3b;background-color:#fff;width:100px;border-radius:3px;box-shadow:0 0 3px #0003!important}.custom-popup-owners-for-tag .tooltip{top:5px!important}.custom-popup-owners-for-tag .arrow{bottom:-24%}.align-items-flex-start{justify-content:center;align-items:center}.align-items-flex-end{display:flex;justify-content:center;flex-direction:column;align-self:flex-end;align-items:flex-start}.label-add{align-self:flex-start}.fadeInLoad{animation:fadeInLoad .25s}@keyframes fadeInLoad{0%{opacity:0}to{opacity:1}}.fadeIn{opacity:1;-webkit-transition:.25s;-moz-transition:.25s;-o-transition:.25s;transition:.25s}.thisText:hover .fadeIn{opacity:0}.fadeInLoad{animation-name:example;animation-duration:.25s}@keyframes example{0%{transform:scale(.5)}to{transform:scale(1)}}.tooltip.tooltip-table-icons{left:12px!important;opacity:1}.tooltip.tooltip-table-icons .arrow{display:none!important}.tooltip.tooltip-table-icons .tooltip-inner{border-radius:0 50px 50px;background:#28529f}.tooltip.show{opacity:1;animation:fadeIn ease .5s!important;-webkit-animation:fadeIn ease .5s!important;-moz-animation:fadeIn ease .5s!important;-o-animation:fadeIn ease .5s!important;-ms-animation:fadeIn ease .5s!important}.ta-tooltip{position:absolute;font-size:12px;text-align:center;color:#fff;line-height:22px;z-index:999999!important;opacity:0;white-space:nowrap;transform:scale(.7)}.ta-tooltip.ta-tooltip-show{opacity:.85;transform:scale(1);padding:0 12px}.ta-tooltip.ta-tooltip-bottom-right,.ta-tooltip.ta-tooltip-bottom-right-corner{transform-origin:top left;border-radius:0 15px 15px}.ta-tooltip.ta-tooltip-bottom-left{transform-origin:top right;border-radius:15px 0 15px 15px}@keyframes scaleItem{0%{transform:scale(.4)}to{transform:scale(1)}}.app-ca-main-tooltip{pointer-events:none}.app-ca-main-tooltip .tooltip-inner{padding:0;background-color:transparent;pointer-events:none}.app-ca-main-tooltip .tooltip-inner .tooltip-holder{display:flex;font-size:11px;font-weight:700;border-radius:2px;padding:2px 8px;animation:scaleItem .3s;white-space:normal}.app-ca-main-tooltip .tooltip-inner .tooltip-holder:empty{padding:0}.tooltip-arrow{display:none!important}.trucks.semitruck svg path,.trucks.semisleeper svg path,.trucks.flatbed svg path,.trucks.stepdeck svg path,.trucks.lowboyrgn svg path,.trucks.chassis svg path,.trucks.conestoga svg path,.trucks.sidekit svg path,.trucks.container svg path,.trailers.semitruck svg path,.trailers.semisleeper svg path,.trailers.flatbed svg path,.trailers.stepdeck svg path,.trailers.lowboyrgn svg path,.trailers.chassis svg path,.trailers.conestoga svg path,.trailers.sidekit svg path,.trailers.container svg path{fill:#92b1f5}.trucks.boxtruck svg path,.trucks.reefertruck svg path,.trucks.cargovan svg path,.trucks.dryvan svg path,.trucks.reefer svg path,.trailers.boxtruck svg path,.trailers.reefertruck svg path,.trailers.cargovan svg path,.trailers.dryvan svg path,.trailers.reefer svg path{fill:#fbc88b}.trucks.dumptruck svg path,.trucks.cementtruck svg path,.trucks.garbagetruck svg path,.trucks.enddump svg path,.trucks.bottomdump svg path,.trucks.hopper svg path,.trucks.tanker svg path,.trucks.pneumatictanker svg path,.trailers.dumptruck svg path,.trailers.cementtruck svg path,.trailers.garbagetruck svg path,.trailers.enddump svg path,.trailers.bottomdump svg path,.trailers.hopper svg path,.trailers.tanker svg path,.trailers.pneumatictanker svg path{fill:#ed9292}.trucks.towtruck svg path,.trucks.carhauler svg path,.trucks.spotter svg path,.trucks.carhaulerstigner svg path,.trailers.towtruck svg path,.trailers.carhauler svg path,.trailers.spotter svg path,.trailers.carhaulerstigner svg path{fill:#86c9c3}.trucks .svgtext-template-text,.trailers .svgtext-template-text{color:#fff;transition:color .3s ease-in-out}.colors .black svg #droplet{fill:#6c6c6c}.colors .brown svg #droplet{fill:#a1887f}.colors .darkgreen svg #droplet{fill:#4db6a2}.colors .lightgreen svg #droplet{fill:#81c784}.colors .darkblue svg #droplet{fill:#546fd2}.colors .lightblue svg #droplet{fill:#64b5f6}.colors .gray svg #droplet{fill:#aaa}.colors .purple svg #droplet{fill:#ba68c8}.colors .gold svg #droplet{fill:#bcad79}.colors .silver svg #droplet{fill:#dadada}.colors .red svg #droplet{fill:#f96b69}.colors .pink svg #droplet{fill:#f26ec2}.colors .white svg #droplet{fill:#f1f1f1}.colors .orange svg #droplet{fill:#ff8a65}.colors .yellow svg #droplet{fill:#ffd54f}.colors:hover{transition:all .3s ease-in-out}.colors:hover .black svg #droplet{fill:#3c3c3c}.colors:hover .brown svg #droplet{fill:#8d6e63}.colors:hover .darkgreen svg #droplet{fill:#26a690}.colors:hover .lightgreen svg #droplet{fill:#66bb6a}.colors:hover .darkblue svg #droplet{fill:#304fc1}.colors:hover .lightblue svg #droplet{fill:#42a5f5}.colors:hover .gray svg #droplet{fill:#919191}.colors:hover .purple svg #droplet{fill:#ab47bc}.colors:hover .gold svg #droplet{fill:#aa9c6e}.colors:hover .silver svg #droplet{fill:#b7b7b7}.colors:hover .red svg #droplet{fill:#ef5350}.colors:hover .pink svg #droplet{fill:#fa4daa}.colors:hover .white svg #droplet{fill:#fff}.colors:hover .orange svg #droplet{fill:#ff7043}.colors:hover .yellow svg #droplet{fill:#ffca28}.text-color-black{color:#424242!important}.text-color-black::-moz-selection{background-color:#42424233!important;color:#424242!important}.text-color-black::selection{background-color:#42424233!important;color:#424242!important}.text-color-black-2{color:#2f2f2f!important}.text-color-black-2::-moz-selection{background-color:#2f2f2f33!important;color:#2f2f2f!important}.text-color-black-2::selection{background-color:#2f2f2f33!important;color:#2f2f2f!important}.text-color-muted{color:#919191!important}.text-color-muted::-moz-selection{background-color:#91919133!important;color:#919191!important}.text-color-muted::selection{background-color:#91919133!important;color:#919191!important}.text-color-green{color:#56b4ac!important}.text-color-green::-moz-selection{background-color:#56b4ac33!important;color:#56b4ac!important}.text-color-green::selection{background-color:#56b4ac33!important;color:#56b4ac!important}.text-color-green-2{color:#259f94!important}.text-color-green-2::-moz-selection{background-color:#259f9433!important;color:#259f94!important}.text-color-green-2::selection{background-color:#259f9433!important;color:#259f94!important}.text-color-green-4{color:#86c9c3!important}.text-color-green-4::-moz-selection{background-color:#86c9c333!important;color:#86c9c3!important}.text-color-green-4::selection{background-color:#86c9c333!important;color:#86c9c3!important}.text-color-blue-5{color:#3074d3!important}.text-color-blue-5::-moz-selection{background-color:#3074d333!important;color:#3074d3!important}.text-color-blue-5::selection{background-color:#3074d333!important;color:#3074d3!important}.text-color-blue-13{color:#6692f1!important}.text-color-blue-13::-moz-selection{background-color:#6692f133!important;color:#6692f1!important}.text-color-blue-13::selection{background-color:#6692f133!important;color:#6692f1!important}.text-color-blue-16{color:#e9effd!important}.text-color-blue-16::-moz-selection{background-color:#e9effd33!important;color:#e9effd!important}.text-color-blue-16::selection{background-color:#e9effd33!important;color:#e9effd!important}.text-color-blue-18{color:#3b73ed!important}.text-color-blue-18::-moz-selection{background-color:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-18::selection{background-color:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-19{color:#92b1f5!important}.text-color-blue-19::-moz-selection{background-color:#92b1f533!important;color:#92b1f5!important}.text-color-blue-19::selection{background-color:#92b1f533!important;color:#92b1f5!important}.text-color-red-10{color:#e66767!important}.text-color-red-10::-moz-selection{background-color:#e6676733!important;color:#e66767!important}.text-color-red-10::selection{background-color:#e6676733!important;color:#e66767!important}.text-color-red-11{color:#df3c3c!important}.text-color-red-11::-moz-selection{background-color:#df3c3c33!important;color:#df3c3c!important}.text-color-red-11::selection{background-color:#df3c3c33!important;color:#df3c3c!important}.text-color-red-13{color:#ed9292!important}.text-color-red-13::-moz-selection{background-color:#ed929233!important;color:#ed9292!important}.text-color-red-13::selection{background-color:#ed929233!important;color:#ed9292!important}.text-color-yellow{color:#fab15c!important}.text-color-yellow::-moz-selection{background-color:#fab15c33!important;color:#fab15c!important}.text-color-yellow::selection{background-color:#fab15c33!important;color:#fab15c!important}.text-color-purple{color:#b370f0!important}.text-color-purple::-moz-selection{background-color:#b370f033!important;color:#b370f0!important}.text-color-purple::selection{background-color:#b370f033!important;color:#b370f0!important}.text-color-special-filter-purple{color:#9e47ec!important}.text-color-special-filter-purple::-moz-selection{background-color:#9e47ec33!important;color:#9e47ec!important}.text-color-special-filter-purple::selection{background-color:#9e47ec33!important;color:#9e47ec!important}.text-color-grey-9{color:#b7b7b7!important}.text-color-grey-9::-moz-selection{background-color:#b7b7b733!important;color:#b7b7b7!important}.text-color-grey-9::selection{background-color:#b7b7b733!important;color:#b7b7b7!important}.text-color-light-grey{color:#e5e5e5!important}.text-color-light-grey::-moz-selection{background-color:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey::selection{background-color:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey-2{color:#aaa!important}.text-color-light-grey-2::-moz-selection{background-color:#aaa3!important;color:#aaa!important}.text-color-light-grey-2::selection{background-color:#aaa3!important;color:#aaa!important}.text-color-light-grey-6{color:#ccc!important}.text-color-light-grey-6::-moz-selection{background-color:#ccc3!important;color:#ccc!important}.text-color-light-grey-6::selection{background-color:#ccc3!important;color:#ccc!important}.text-color-white{color:#fff!important}.text-color-white::-moz-selection{background-color:#fff3!important;color:#fff!important}.text-color-white::selection{background-color:#fff3!important;color:#fff!important}.text-color-white-2{color:#fff!important}.text-color-white-2::-moz-selection{background-color:#fff3!important;color:#fff!important}.text-color-white-2::selection{background-color:#fff3!important;color:#fff!important}.text-color-white-4{color:#ffffffb2!important}.text-color-white-4::-moz-selection{background-color:#fff3!important;color:#ffffffb2!important}.text-color-white-4::selection{background-color:#fff3!important;color:#ffffffb2!important}.text-color-bw6-2{color:#6c6c6c!important}.text-color-bw6-2::-moz-selection{background-color:#6c6c6c33!important;color:#6c6c6c!important}.text-color-bw6-2::selection{background-color:#6c6c6c33!important;color:#6c6c6c!important}.text-color-bw-9{color:#dadada!important}.text-color-bw-9::-moz-selection{background-color:#dadada33!important;color:#dadada!important}.text-color-bw-9::selection{background-color:#dadada33!important;color:#dadada!important}.text-color-grey{color:#919191!important}.text-color-grey::-moz-selection{background-color:#91919133!important;color:#919191!important}.text-color-grey::selection{background-color:#91919133!important;color:#919191!important}.text-color-grey .address-text::-moz-selection,.text-color-grey .marker-bold-text::-moz-selection{background-color:#91919133!important;color:#919191!important}.text-color-grey .address-text::selection,.text-color-grey .marker-bold-text::selection{background-color:#91919133!important;color:#919191!important}.text-color-orange-1{color:#ff7043!important}.text-color-orange-1::-moz-selection{background-color:#ff704333!important;color:#ff7043!important}.text-color-orange-1::selection{background-color:#ff704333!important;color:#ff7043!important}.text-color-orange-2{color:#f77d3b!important}.text-color-orange-2::-moz-selection{background-color:#f77d3b33!important;color:#f77d3b!important}.text-color-orange-2::selection{background-color:#f77d3b33!important;color:#f77d3b!important}.text-color-orange-3{color:#ffb097!important}.text-color-orange-3::-moz-selection{background-color:#ffb09733!important;color:#ffb097!important}.text-color-orange-3::selection{background-color:#ffb09733!important;color:#ffb097!important}.text-color-brown-1{color:#865e3a!important}.text-color-brown-1::-moz-selection{background-color:#865e3a33!important;color:#865e3a!important}.text-color-brown-1::selection{background-color:#865e3a33!important;color:#865e3a!important}.text-color-light-blue-2{color:#1ab5e6!important}.text-color-light-blue-2::-moz-selection{background-color:#1ab5e633!important;color:#1ab5e6!important}.text-color-light-blue-2::selection{background-color:#1ab5e633!important;color:#1ab5e6!important}.text-hover-white{transition:color .3s ease-in-out ease-in-out}.text-hover-white:hover{color:#fff!important}.text-hover-black{transition:color .3s ease-in-out ease-in-out}.text-hover-black:hover{color:#424242!important}.text-hover-blue-15{transition:color .3s ease-in-out ease-in-out}.text-hover-blue-15:hover{color:#0b49d1!important}.text-hover-blue-18{transition:color .3s ease-in-out ease-in-out}.text-hover-blue-18:hover{color:#3b73ed!important}.text-hover-bw6-2{transition:color .3s ease-in-out ease-in-out}.text-hover-bw6-2:hover{color:#6c6c6c!important}.text-size-11{font-size:11px!important;line-height:14px!important}.text-size-14{font-size:14px!important;line-height:18px!important}.text-size-16{font-size:16px!important;line-height:19px!important}.text-size-18{font-size:18px!important;line-height:22px!important}.text-size-20{font-size:20px!important;line-height:24px!important}.text-size-26{font-size:26px!important;line-height:32px!important}.text-size-28{font-size:28px!important;line-height:34px!important}.font-size-11{font-size:11px!important}.line-height-12{line-height:12px!important}.svg-fill-black svg path,.svg-fill-black svg circle{fill:#424242!important}.svg-fill-black-2 svg path,.svg-fill-black-2 svg circle{fill:#2f2f2f!important}.svg-fill-black-9 svg path,.svg-fill-black-9 svg circle{fill:#1d1d1d!important}.svg-fill-white svg path,.svg-fill-white svg circle{fill:#fff!important}.svg-fill-white-2 svg path,.svg-fill-white-2 svg circle{fill:#fff!important}.svg-fill-muted svg path,.svg-fill-muted svg circle{fill:#919191!important}.svg-fill-bw6-2 svg path,.svg-fill-bw6-2 svg circle{fill:#6c6c6c!important}.svg-fill-bw-9 svg path,.svg-fill-bw-9 svg circle{fill:#dadada!important}.svg-fill-light-grey-2 svg path,.svg-fill-light-grey-2 svg circle{fill:#aaa!important}.svg-fill-light-grey-6 svg path,.svg-fill-light-grey-6 svg circle{fill:#ccc!important}.svg-fill-blue-8 svg path,.svg-fill-blue-8 svg circle{fill:#6692f1!important}.svg-fill-blue-13 svg path,.svg-fill-blue-13 svg circle{fill:#6692f1!important}.svg-fill-blue-14 svg path,.svg-fill-blue-14 svg circle{fill:#3b73ed!important}.svg-fill-blue-17 svg path,.svg-fill-blue-17 svg circle{fill:#bed0f9!important}.svg-fill-blue-19 svg path,.svg-fill-blue-19 svg circle{fill:#92b1f5!important}.svg-fill-blue-26 svg path,.svg-fill-blue-26 svg circle{fill:#4dc5eb!important}.svg-fill-green svg path,.svg-fill-green svg circle{fill:#56b4ac!important}.svg-fill-green-2 svg path,.svg-fill-green-2 svg circle{fill:#259f94!important}.svg-fill-green-4 svg path,.svg-fill-green-4 svg circle{fill:#86c9c3!important}.svg-fill-green-6 svg path,.svg-fill-green-6 svg circle{fill:#77bf56!important}.svg-fill-yellow-1 svg path,.svg-fill-yellow-1 svg circle{fill:#fab15c!important}.svg-fill-yellow-4 svg path,.svg-fill-yellow-4 svg circle{fill:#fbc88b!important}.svg-fill-yellow-5 svg path,.svg-fill-yellow-5 svg circle{fill:#f89b2e!important}.svg-fill-yellow-8 svg path,.svg-fill-yellow-8 svg circle{fill:#daad4f!important}.svg-fill-white-4 svg path,.svg-fill-white-4 svg circle{fill:#ffffffb2!important}.svg-fill-grey svg path,.svg-fill-grey svg circle{fill:#919191!important}.svg-fill-red-10 svg path,.svg-fill-red-10 svg circle{fill:#e66767!important}.svg-fill-red-11 svg path,.svg-fill-red-11 svg circle{fill:#df3c3c!important}.svg-fill-red-13 svg path,.svg-fill-red-13 svg circle{fill:#ed9292!important}.svg-fill-red-14 svg path,.svg-fill-red-14 svg circle{fill:#c20c0c!important}.svg-fill-red-15 svg path,.svg-fill-red-15 svg circle{fill:#f4bebe!important}.svg-fill-red-18 svg path,.svg-fill-red-18 svg circle{fill:#e668a0!important}.svg-fill-orange-4 svg path,.svg-fill-orange-4 svg circle{fill:#ff906d!important}.svg-fill-brown svg path,.svg-fill-brown svg circle{fill:#865e3a!important}.svg-fill-purple-4 svg path,.svg-fill-purple-4 svg circle{fill:#9e47ec!important}.svg-hover-white svg path{transition:fill .3s ease-in-out}.svg-hover-white:hover svg path{fill:#fff!important}.svg-hover-white-2 svg path{transition:fill .3s ease-in-out}.svg-hover-white-2:hover svg path{fill:#fff!important}.svg-hover-muted svg path{transition:fill .3s ease-in-out}.svg-hover-muted:hover svg path{fill:#919191!important}.svg-hover-grey-4 svg path{transition:fill .3s ease-in-out}.svg-hover-grey-4:hover svg path{fill:#ccc!important}.svg-hover-black svg path{transition:fill .3s ease-in-out}.svg-hover-black:hover svg path{fill:#424242!important}.svg-hover-blue-9 svg path{transition:fill .3s ease-in-out}.svg-hover-blue-9:hover svg path{fill:#0b49d1!important}.svg-hover-blue-10 svg path{transition:fill .3s ease-in-out}.svg-hover-blue-10:hover svg path{fill:#6f9ee033!important}.svg-hover-blue-15 svg path{transition:fill .3s ease-in-out}.svg-hover-blue-15:hover svg path{fill:#0b49d1!important}.svg-hover-blue-17 svg path{transition:fill .3s ease-in-out}.svg-hover-blue-17:hover svg path{fill:#bed0f9!important}.svg-hover-blue-19 svg path{transition:fill .3s ease-in-out}.svg-hover-blue-19:hover svg path{fill:#92b1f5!important}.svg-hover-bw6-2 svg path{transition:fill .3s ease-in-out}.svg-hover-bw6-2:hover svg path{fill:#6c6c6c!important}.svg-hover-bw-9 svg path{transition:fill .3s ease-in-out}.svg-hover-bw-9:hover svg path{fill:#dadada!important}.svg-hover-trash-red svg path{transition:fill .3s ease-in-out}.svg-hover-trash-red:hover svg path{fill:#ff5050!important}.svg-hover-red-14 svg path{transition:fill .3s ease-in-out}.svg-hover-red-14:hover svg path{fill:#c20c0c!important}.svg-size-6 svg{width:6px;height:6px}.svg-size-7 svg{width:7px;height:7px}.svg-size-10 svg{width:10px;height:10px}.svg-size-12 svg{width:12px;height:12px}.svg-size-14 svg{width:14px;height:14px}.svg-size-16 svg{width:16px;height:16px}.svg-size-17 svg{width:17px;height:17px}.svg-size-18 svg{width:18px;height:18px}.svg-size-22 svg{width:22px;height:22px}.svg-size-23 svg{width:23px;height:23px}.svg-size-26 svg{width:26px;height:26px}.svg-size-30-26 svg{width:30px;height:26px}.svg-size-44-16 svg{width:44px;height:16px}.svg-size-90 svg{width:90px;height:90px}.background-transparent{background-color:transparent}.background-white{background-color:#fff}.background-black{background-color:#424242}.background-black-2{background-color:#2f2f2f}.background-black-3{background-color:#1d1d1d}.background-gray{background-color:#e5e5e5}.background-gray-2{background-color:#6c6c6c}.background-gray-12{background-color:#eee}.background-light-gray-2{background-color:#aaa}.background-light-gray-6{background-color:#ccc}.background-light-gray-7{background-color:#fbfbfb}.background-grey{background-color:#919191}.background-blue-5{background-color:#3074d3}.background-blue-13{background-color:#6692f1}.background-blue-14,.background-blue-18{background-color:#3b73ed}.background-blue-19{background-color:#92b1f5}.background-blue-20{background-color:#3b73ed33}.background-green-0{background-color:#56b4ac}.background-green-2{background-color:#259f94}.background-green-3{background-color:#b6dfdb}.background-green-4,.background-green-6{background-color:#86c9c3}.background-dark-2{background-color:#91919133}.background-red-19{background-color:#df3d85}.background-purple-4{background-color:#9e47ec}.background-gold-bold{background-color:#cf961d}.background-gold-subtle{background-color:#e4c481}.background-orange-3{background-color:#ffb097}.background-orange-4{background-color:#ff906d}.background-orange-7{background-color:#ffcfc0}.background-yellow-8{background-color:#daad4f}.background-bw5{background-color:#919191}.background-bw6-2{background-color:#6c6c6c}.background-brown-bold{background-color:#865e3a}.background-bw2{background-color:#eee}.background-bw-9{background-color:#dadada}.background-hover-white{transition:background-color .3s ease-in-out}.background-hover-white:hover{background-color:#fff!important}.background-hover-black{transition:background-color .3s ease-in-out}.background-hover-black:hover{background-color:#424242!important}.background-hover-black-1{transition:background-color .3s ease-in-out}.background-hover-black-1:hover{background-color:#424242!important}.background-hover-grey{transition:background-color .3s ease-in-out}.background-hover-grey:hover{background-color:#919191!important}.background-hover-grey-2{transition:background-color .3s ease-in-out}.background-hover-grey-2:hover{background-color:#6c6c6c!important}.background-hover-grey-6{transition:background-color .3s ease-in-out}.background-hover-grey-6:hover{background-color:#91919120!important}.background-hover-dark-2{transition:background-color .3s ease-in-out}.background-hover-dark-2:hover{background-color:#91919133!important}.background-hover-bw2{transition:background-color .3s ease-in-out}.background-hover-bw2:hover{background-color:#eee!important}.background-hover-bw6{transition:background-color .3s ease-in-out}.background-hover-bw6:hover{background-color:#606060!important}.background-hover-bw6-2{transition:background-color .3s ease-in-out}.background-hover-bw6-2:hover{background-color:#6c6c6c!important}.background-hover-blue-13{transition:background-color .3s ease-in-out}.background-hover-blue-13:hover{background-color:#6692f1!important}.background-hover-blue-15{transition:background-color .3s ease-in-out}.background-hover-blue-15:hover{background-color:#0b49d1!important}.background-hover-blue-16{transition:background-color .3s ease-in-out}.background-hover-blue-16:hover{background-color:#e9effd!important}.background-hover-blue-17{transition:background-color .3s ease-in-out}.background-hover-blue-17:hover{background-color:#bed0f9!important}.background-hover-blue-19{transition:background-color .3s ease-in-out}.background-hover-blue-19:hover{background-color:#92b1f5!important}.background-hover-blue-20{transition:background-color .3s ease-in-out}.background-hover-blue-20:hover{background-color:#3b73ed33!important}.background-hover-blue-21{transition:background-color .3s ease-in-out}.background-hover-blue-21:hover{background-color:#3b73ed66!important}.background-hover-red-15{transition:background-color .3s ease-in-out}.background-hover-red-15:hover{background-color:#f4bebe!important}.background-hover-gray{transition:background-color .3s ease-in-out}.background-hover-gray:hover{background-color:#e5e5e5!important}.background-hover-light-grey{transition:background-color .3s ease-in-out}.background-hover-light-grey:hover{background-color:#e5e5e5!important}.background-hover-bw-9{transition:background-color .3s ease-in-out}.background-hover-bw-9:hover{background-color:#dadada!important}.br-1{border-radius:1px}.br-2{border-radius:2px}.br-3{border-radius:3px}.br-10{border-radius:10px}.br-60{border-radius:60px}.br-circle{border-radius:50%}.padding-2{padding:2px}.padding-l-2{padding-left:2px}.padding-r-2{padding-right:2px}.padding-t-2{padding-top:2px}.padding-4{padding:4px}.padding-l-4{padding-left:4px}.padding-r-4{padding-right:4px}.padding-t-4{padding-top:4px}.padding-6{padding:6px}.padding-l-6{padding-left:6px}.padding-r-6{padding-right:6px}.padding-t-6{padding-top:6px}.padding-10{padding:10px}.padding-l-10{padding-left:10px}.padding-r-10{padding-right:10px}.padding-t-10{padding-top:10px}.padding-15{padding:15px}.padding-l-15{padding-left:15px}.padding-r-15{padding-right:15px}.padding-t-15{padding-top:15px}.padding-y-2{padding-top:2px;padding-bottom:2px}.padding-y-4{padding-top:4px;padding-bottom:4px}.padding-y-6{padding-top:6px;padding-bottom:6px}.padding-y-10{padding-top:10px;padding-bottom:10px}.padding-y-15{padding-top:15px;padding-bottom:15px}.padding-x-4{padding-left:4px;padding-right:4px}.padding-x-5{padding-left:5px;padding-right:5px}.padding-x-6{padding-left:6px;padding-right:6px}.padding-x-10{padding-left:10px;padding-right:10px}.margin--2{margin:-2px}.margin-y--2{margin-top:-2px;margin-bottom:-2px}.margin-x--2{margin-left:-2px;margin-right:-2px}.margin-t--2{margin-top:-2px}.margin-r--2{margin-right:-2px}.margin-b--2{margin-bottom:-2px}.margin-l--2{margin-left:-2px}.margin-1{margin:1px}.margin-y-1{margin-top:1px;margin-bottom:1px}.margin-x-1{margin-left:1px;margin-right:1px}.margin-t-1{margin-top:1px}.margin-r-1{margin-right:1px}.margin-b-1{margin-bottom:1px}.margin-l-1{margin-left:1px}.margin-2{margin:2px}.margin-y-2{margin-top:2px;margin-bottom:2px}.margin-x-2{margin-left:2px;margin-right:2px}.margin-t-2{margin-top:2px}.margin-r-2{margin-right:2px}.margin-b-2{margin-bottom:2px}.margin-l-2{margin-left:2px}.margin-4{margin:4px}.margin-y-4{margin-top:4px;margin-bottom:4px}.margin-x-4{margin-left:4px;margin-right:4px}.margin-t-4{margin-top:4px}.margin-r-4{margin-right:4px}.margin-b-4{margin-bottom:4px}.margin-l-4{margin-left:4px}.margin-5{margin:5px}.margin-y-5{margin-top:5px;margin-bottom:5px}.margin-x-5{margin-left:5px;margin-right:5px}.margin-t-5{margin-top:5px}.margin-r-5{margin-right:5px}.margin-b-5{margin-bottom:5px}.margin-l-5{margin-left:5px}.margin-6{margin:6px}.margin-y-6{margin-top:6px;margin-bottom:6px}.margin-x-6{margin-left:6px;margin-right:6px}.margin-t-6{margin-top:6px}.margin-r-6{margin-right:6px}.margin-b-6{margin-bottom:6px}.margin-l-6{margin-left:6px}.margin-8{margin:8px}.margin-y-8{margin-top:8px;margin-bottom:8px}.margin-x-8{margin-left:8px;margin-right:8px}.margin-t-8{margin-top:8px}.margin-r-8{margin-right:8px}.margin-b-8{margin-bottom:8px}.margin-l-8{margin-left:8px}.margin-10{margin:10px}.margin-y-10{margin-top:10px;margin-bottom:10px}.margin-x-10{margin-left:10px;margin-right:10px}.margin-t-10{margin-top:10px}.margin-r-10{margin-right:10px}.margin-b-10{margin-bottom:10px}.margin-l-10{margin-left:10px}.margin-15{margin:15px}.margin-y-15{margin-top:15px;margin-bottom:15px}.margin-x-15{margin-left:15px;margin-right:15px}.margin-t-15{margin-top:15px}.margin-r-15{margin-right:15px}.margin-b-15{margin-bottom:15px}.margin-l-15{margin-left:15px}.margin-22{margin:22px}.margin-y-22{margin-top:22px;margin-bottom:22px}.margin-x-22{margin-left:22px;margin-right:22px}.margin-t-22{margin-top:22px}.margin-r-22{margin-right:22px}.margin-b-22{margin-bottom:22px}.margin-l-22{margin-left:22px}.margin-24{margin:24px}.margin-y-24{margin-top:24px;margin-bottom:24px}.margin-x-24{margin-left:24px;margin-right:24px}.margin-t-24{margin-top:24px}.margin-r-24{margin-right:24px}.margin-b-24{margin-bottom:24px}.margin-l-24{margin-left:24px}.gap-xs{gap:xspx}.gap-6{gap:6px}.gap-20{gap:20px}.w-1{width:1px}.h-1{height:1px}.w-2{width:2px}.h-2{height:2px}.w-4{width:4px}.h-4{height:4px}.w-10{width:10px}.h-10{height:10px}.w-14{width:14px}.h-14{height:14px}.w-15{width:15px}.h-15{height:15px}.w-18{width:18px}.h-18{height:18px}.w-22{width:22px}.h-22{height:22px}.w-26{width:26px}.h-26{height:26px}.w-31{width:31px}.h-31{height:31px}.w-32{width:32px}.h-32{height:32px}.w-36{width:36px}.h-36{height:36px}.w-116{width:116px}.h-116{height:116px}.w-120{width:120px}.h-120{height:120px}.w-fit-content{width:fit-content}@keyframes dropdown{0%{margin-top:20px;visibility:hidden;opacity:0}to{opacity:1;margin-top:10px;visibility:visible!important}}@keyframes dropup{0%{margin-top:-19px;visibility:hidden;opacity:0}to{margin-top:inherit;visibility:visible!important}}.filter-dropdown-popover{width:260px;position:relative;top:-4px;left:-4px}.filter-dropdown-popover-max-height{max-height:360px}.filter-dropdown-list{max-height:260px;overflow-y:auto}.filter-dropdown-list-icon{height:26px;transition:background-color .3s ease-in-out}.filter-dropdown-list-icon-value{height:14px;width:14px}.filter-dropdown-list-icon-remove{display:none}.filter-dropdown-list-icon:hover{background-color:#424242}.filter-dropdown-list-icon:hover .filter-dropdown-icon-count{display:none}.filter-dropdown-list-icon-selected:hover{background-color:#0b49d1}.filter-dropdown-list-item-icons{transition:opacity .3s ease-in-out;opacity:0}.filter-dropdown-list-item-status-circle{height:10px;width:10px}.filter-dropdown-list-item-remove{display:none}.filter-dropdown-list-item:hover{background-color:#424242}.filter-dropdown-list-item:hover .filter-dropdown-list-item-icons{opacity:1}.filter-dropdown-list-item:hover .filter-dropdown-list-item-icons svg path{fill:var(--svg-fill-color, #e66767)}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-remove{display:flex}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-remove svg path{fill:#e66767!important}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-count{display:none!important}.filter-dropdown-icon{height:26px;width:26px}.filter-dropdown-count{height:14px;width:14px}.filter-dropdown-count-remove,.filter-dropdown-count-hover:hover .filter-dropdown-count-value{display:none}.filter-dropdown-count-hover:hover .filter-dropdown-count-remove{display:flex}.filter-dropdown-button{height:26px}.filter-dropdown-footer-button{color:#dadada;transition:color .3s ease-in-out,background-color .3s ease-in-out;height:18px;width:50%}.filter-dropdown-footer-button-set{color:#fff;background-color:#3b73ed}.filter-dropdown-footer-button-set:hover{background-color:#e9effd;color:#0b49d1}.filter-dropdown-footer-button-clear{color:#dadada}.filter-dropdown-footer-button-clear:hover{background-color:#eee;color:#424242}.filter-dropdown-list-badge{min-width:18px}.h-7{height:7px!important;min-height:7px!important}.h-8{height:8px!important;min-height:8px!important}.h-10{height:10px!important;min-height:10px!important}.h-12{height:12px!important;min-height:12px!important}.h-14{height:14px!important;min-height:14px!important}.h-15{height:15px!important;min-height:15px!important}.h-16{height:16px!important;min-height:16px!important}.h-18{height:18px!important;min-height:18px!important}.h-22{height:22px!important;min-height:22px!important}.h-24{height:24px!important;min-height:24px!important}.h-26{height:26px!important;min-height:26px!important}.h-30{height:30px!important;min-height:30px!important}.h-34{height:34px!important;min-height:34px!important}.h-37{height:37px!important;min-height:37px!important}.h-40{height:40px!important;min-height:40px!important}.h-42{height:42px!important;min-height:42px!important}.h-44{height:44px!important;min-height:44px!important}.h-52{height:52px!important;min-height:52px!important}.h-80{height:80px!important;min-height:80px!important}.h-160{height:160px!important;min-height:160px!important}.h-486{height:486px!important;min-height:486px!important}.h-800{height:800px!important;min-height:800px!important}.h-960{height:960px!important;min-height:960px!important}.w-2{width:2px!important;min-width:2px!important}.w-7{width:7px!important;min-width:7px!important}.w-8{width:8px!important;min-width:8px!important}.w-10{width:10px!important;min-width:10px!important}.w-12{width:12px!important;min-width:12px!important}.w-15{width:15px!important;min-width:15px!important}.w-18{width:18px!important;min-width:18px!important}.w-22{width:22px!important;min-width:22px!important}.w-24{width:24px!important;min-width:24px!important}.w-26{width:26px!important;min-width:26px!important}.w-29{width:29px!important;min-width:29px!important}.w-30{width:30px!important;min-width:30px!important}.w-36{width:36px!important;min-width:36px!important}.w-40{width:40px!important;min-width:40px!important}.w-42{width:42px!important;min-width:42px!important}.w-46{width:46px!important;min-width:46px!important}.w-49{width:49px!important;min-width:49px!important}.w-57{width:57px!important;min-width:57px!important}.w-60{width:60px!important;min-width:60px!important}.w-68{width:68px!important;min-width:68px!important}.w-70{width:70px!important;min-width:70px!important}.w-71{width:71px!important;min-width:71px!important}.w-78{width:78px!important;min-width:78px!important}.w-80{width:80px!important;min-width:80px!important}.w-83{width:83px!important;min-width:83px!important}.w-84{width:84px!important;min-width:84px!important}.w-88{width:88px!important;min-width:88px!important}.w-90{width:90px!important;min-width:90px!important}.w-91{width:91px!important;min-width:91px!important}.w-93{width:93px!important;min-width:93px!important}.w-98{width:98px!important;min-width:98px!important}.w-101{width:101px!important;min-width:101px!important}.w-106{width:106px!important;min-width:106px!important}.w-108{width:108px!important;min-width:108px!important}.w-116{width:116px!important;min-width:116px!important}.w-126{width:126px!important;min-width:126px!important}.w-144{width:144px!important;min-width:144px!important}.w-155{width:155px!important;min-width:155px!important}.w-172{width:172px!important;min-width:172px!important}.w-179{width:179px!important;min-width:179px!important}.w-202{width:202px!important;min-width:202px!important}.w-214{width:214px!important;min-width:214px!important}.w-223{width:223px!important;min-width:223px!important}.w-264{width:264px!important;min-width:264px!important}.w-268{width:268px!important;min-width:268px!important}.w-272{width:272px!important;min-width:272px!important}.w-277{width:277px!important;min-width:277px!important}.w-334{width:334px!important;min-width:334px!important}.w-442{width:442px!important;min-width:442px!important}.w-462{width:462px!important;min-width:462px!important}.w-612{width:612px!important;min-width:612px!important}.w-616{width:616px!important;min-width:616px!important}.w-620{width:620px!important;min-width:620px!important}.min-w-18{min-width:18px}.flex-1{flex:1}.w-33{width:33%}.w-40p{width:40%}.w-90p{width:90%}*{margin:0;font-family:Montserrat,sans-serif}html{scroll-behavior:auto!important}.gm-style-iw-chr,.gm-style-iw-tc{display:none}.gm-style .gm-style-iw-c{border-radius:0}.gm-style-iw{overflow-y:auto!important;overflow-x:hidden!important}.gm-style-iw>div{overflow:visible!important}.infoWindow{overflow:hidden!important}.gm-style-iw-d,.gm-style-iw.gm-style-iw-c{max-height:350px!important}::ng-deep .popover{--bs-popover-border-width: 0;--bs-popover-body-padding-y: 0;--bs-popover-body-padding-x: 0}::ng-deep .popover .popover-arrow{display:none}.c-pointer{cursor:pointer}.pointer-events-none{pointer-events:none}.ca-scroll-bar{overflow-y:scroll}.ca-scroll-bar::-webkit-scrollbar{width:2px}.ca-scroll-bar::-webkit-scrollbar-thumb{background:#ccc;border-radius:1px}.ca-scroll-bar::-webkit-scrollbar-track{background:#2f2f2f}.place-items-center{justify-content:center;align-items:center}.prevent-text-selection{-ms-user-select:none;-webkit-user-select:none;user-select:none;-moz-user-select:none}.comments-container .divider{height:12px}.comments-container .search .cancel-search{visibility:hidden;pointer-events:none}.comments-container .search input{border:0;-webkit-transition:.35s;transition:.35s;outline:none;background-color:transparent}.comments-container .search input:focus{border:0}.comments-container .search input::placeholder{color:#aaa}.comments-container .search:focus-within{background-color:#1d1d1d!important}.comments-container .search:focus-within .cancel-search{visibility:visible;pointer-events:auto;background-color:#919191!important}.comments-container .search:has(input:valid){background-color:#0b49d1!important}.comments-container .search:has(input:valid) .cancel-search{visibility:visible;pointer-events:auto;background-color:#bdcaeb!important}.comments-container .search:has(input:valid) .cancel-search svg path,.comments-container .search:has(input:valid) .cancel-search svg circle{fill:#0b49d1!important}.comments-container .search:has(input:valid) input{color:#fff!important}.comments-container .search:has(input:valid):not(:focus-within){background-color:#e9effd!important}.comments-container .search:has(input:valid):not(:focus-within) input{color:#2f2f2f!important}.comments-container .search:has(input:valid):not(:focus-within):hover{background-color:#bed0f9!important}.comments-container .search-dark{background-color:#424242}.comments-container .search-dark:focus-within{background-color:#dadada!important}.comments-container .search-dark:has(input:valid){color:#e9effd!important;background-color:#0b49d1!important}.comments-container .search-dark:has(input:valid):not(:focus-within){background-color:#3b73ed33!important}.comments-container .search-dark:has(input:valid):not(:focus-within) input{color:#fff!important}.comments-container .search-dark:has(input:valid):not(:focus-within):hover{background-color:#3b73ed66!important}.comments-container .comments-wrapper{overflow-y:scroll}.comments-container .comments-wrapper .comment{word-break:break-word}.comments-container .comments-wrapper .comment .action-icon{display:none}.comments-container .comments-wrapper .comment:hover .action-icon{display:flex}.comments-container .comment-content{white-space:nowrap;overflow-x:hidden;text-overflow:ellipsis;word-break:break-word}.comments-container textarea{border:none;overflow:auto;outline:none;field-sizing:content;box-shadow:none;resize:none;-webkit-box-shadow:none;-moz-box-shadow:none}.icon-hover:hover{transition:all .3s ease-in-out;height:22px!important;width:22px!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: HttpClientModule }, { kind: "component", type:
165
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CaCommentsComponent, isStandalone: true, selector: "ca-comments", inputs: { isDarkmode: "isDarkmode", isSearchDisplayed: "isSearchDisplayed", isDriverTab: "isDriverTab", isModal: "isModal", commentCount: "commentCount", comments: "comments", currentUser: "currentUser", hasNewComment: "hasNewComment" }, outputs: { onCommentDelete: "onCommentDelete", onCommentAdded: "onCommentAdded", onCommentEdited: "onCommentEdited", onCommentCancel: "onCommentCancel", onCommentSearchCancel: "onCommentSearchCancel" }, ngImport: i0, template: "@let sortedComments = _comments | caSortComments: sortDirection : isDarkmode;\n@let searchTerm = searchCommentFormControl.value;\n@let searchedComments =\n sortedComments | caHighlightComment: searchTerm : isDarkmode;\n@let searchContentCount = searchedComments?.length;\n@let hasSearchContent = !!searchContentCount;\n\n@if (isDarkmode) {\n @let isPopoverOpen = popover?.isOpen();\n\n <div\n #popover=\"ngbPopover\"\n class=\"w-26 h-26 d-flex place-items-center c-pointer br-2 m-t-1\"\n autoClose=\"outside\"\n [ngbPopover]=\"dropdownPopover\"\n [popoverClass]=\"'popover-main'\"\n [placement]=\"ePosition.BOTTOM_RIGHT\"\n [container]=\"'body'\"\n [ngClass]=\"\n isPopoverOpen\n ? 'active background-black'\n : 'background-hover-dark-2 svg-hover-black'\n \"\n >\n <div\n class=\"position-relative d-flex place-items-center m-auto\"\n ngbTooltip\n [tooltipBackground]=\"eColor.BLACK\"\n [tooltipColor]=\"eColor.WHITE\"\n [mainCaTooltip]=\"eSharedString.COMMENT\"\n [position]=\"ePosition.BOTTOM\"\n >\n <span\n class=\"comments-count z-0 position-absolute text-size-9 ta-font-semi-bold\"\n [ngClass]=\"\n isPopoverOpen ? 'text-color-black-2' : 'text-color-white'\n \"\n >\n {{ commentCount }}\n </span>\n\n <svg-icon\n class=\"svg-size-18\"\n [ngClass]=\"isPopoverOpen ? 'svg-fill-white-4' : 'svg-fill-grey'\"\n [src]=\"sharedSvgRoutes.COMMENT_ICON\"\n ></svg-icon>\n </div>\n </div>\n} @else {\n <ng-container *ngTemplateOutlet=\"commentsTemplate\"></ng-container>\n}\n\n<ng-template #commentsTemplate>\n @let tooltipBackground = isDarkmode ? eColor.LIGHT_GREY : eColor.BLACK;\n @let tooltipColor = isDarkmode ? eColor.DARK_GREY : eColor.WHITE;\n\n <div\n class=\"comments-container br-3\"\n [class.padding-4]=\"!isModal\"\n [class.background-black-2]=\"isDarkmode\"\n [style]=\"{\n width: isDarkmode ? '260px' : '100%',\n 'max-height': isDarkmode ? '306px' : '100%',\n }\"\n >\n <div class=\"d-flex flex-column\">\n @let isHiddenSort = (!isDarkmode && !_comments.length) || isModal;\n\n @if (!isHiddenSort) {\n <div class=\"d-flex\" [ngStyle]=\"{ order: isDarkmode ? 0 : 2 }\">\n <div class=\"w-100\" [class.h-32]=\"!isDarkmode\">\n <div\n class=\"d-flex justify-content-between align-items-center\"\n [class.margin-t-4]=\"!isDarkmode\"\n >\n <div\n class=\"d-flex place-items-center ca-font-extra-bold font-size-11 margin-x-4\"\n >\n @let title =\n (isDarkmode\n ? eSharedString.COMMENT\n : eGeneralActions.SORT_BY\n ) | uppercase;\n @let resultTitle =\n searchContentCount +\n eStringPlaceholder.WHITESPACE +\n eSharedString.RESULTS | uppercase;\n\n <span\n class=\"margin-y-2 margin-r-4\"\n [class]=\"\n isDarkmode\n ? 'text-color-white'\n : 'text-color-grey'\n \"\n >{{\n searchTerm && !isDarkmode\n ? resultTitle\n : title\n }}\n </span>\n\n @if (isDarkmode) {\n <span\n class=\"d-flex align-items-center justify-content-center min-w-18 h-18 text-color-white br-60 background-black padding-x-5\"\n >{{ commentCount }}\n </span>\n }\n </div>\n\n @if (_comments.length) {\n @let sortByColorClass =\n isDarkmode\n ? 'text-color-white'\n : 'text-color-black';\n\n <div\n class=\"d-flex place-items-center padding-l-6 br-2\"\n [class]=\"\n isDarkmode\n ? 'background-hover-black'\n : 'background-hover-bw2'\n \"\n #sortByTooltip=\"ngbTooltip\"\n ngbTooltip\n [tooltipBackground]=\"tooltipBackground\"\n [tooltipColor]=\"tooltipColor\"\n [mainCaTooltip]=\"eGeneralActions.SORT_BY\"\n [position]=\"ePosition.BOTTOM\"\n >\n <span\n class=\"text-size-14 ca-font-medium margin-r-4\"\n [ngClass]=\"sortByColorClass\"\n >\n {{ eSharedString.DATE }}\n </span>\n\n @let isDescending =\n sortDirection === eSharedString.DSC;\n @let animationStateSort =\n sortDirection === eSharedString.DSC\n ? eAnimationState.DEFAULT\n : eAnimationState.ROTATED;\n @let sortTooltipText =\n isDescending\n ? eSharedString.DESCENDING\n : eSharedString.ASCENDING;\n\n <div\n class=\"h-18 w-18 d-flex place-items-center background-hover-blue-21 svg-hover-blue-17 br-1 c-pointer\"\n ngbTooltip\n [tooltipBackground]=\"tooltipBackground\"\n [tooltipColor]=\"tooltipColor\"\n [mainCaTooltip]=\"sortTooltipText\"\n [position]=\"ePosition.BOTTOM\"\n (shown)=\"sortByTooltip?.close()\"\n (click)=\"onToggleSort()\"\n >\n <svg-icon\n class=\"d-flex svg-size-14 svg-fill-blue-13\"\n [src]=\"\n 'arrow_sort'\n | caSvg\n : eSharedString.COMMON_LOWERCASE\n \"\n [class.svg-fill-blue-13]=\"\n commentCount\n \"\n [@rotatedState]=\"animationStateSort\"\n ></svg-icon>\n </div>\n </div>\n }\n </div>\n\n @if (!isDarkmode) {\n <div\n class=\"w-100 h-1 background-bw-9 margin-2\"\n ></div>\n }\n </div>\n </div>\n }\n\n <div [ngStyle]=\"{ order: 1 }\">\n <ng-content></ng-content>\n </div>\n\n @if (isSearchDisplayed && _comments.length) {\n <div\n class=\"search d-flex align-items-center justify-content-start background-black background-hover-grey-2 margin-y-4 br-2\"\n [class.search-dark]=\"isDarkmode\"\n [ngStyle]=\"{ order: isDarkmode ? 2 : 0 }\"\n >\n <div\n class=\"d-flex align-items-center justify-content-center margin-4\"\n >\n <svg-icon\n class=\"d-flex svg-size-14 svg-fill-light-grey-2 c-pointer\"\n [src]=\"\n 'search' | caSvg: eSharedString.COMMON_LOWERCASE\n \"\n ></svg-icon>\n </div>\n <div\n class=\"divider w-1 background-light-gray-2 margin-y-3 margin-r-4\"\n ></div>\n <div\n class=\"w-100 d-flex align-items-center justify-content-center\"\n >\n @let searchPlaceholder =\n isDarkmode ? 'Find Title' : 'Find Comment';\n\n <input\n class=\"w-100 background-transparent text-size-11 margin-r-2 padding-2\"\n [placeholder]=\"searchPlaceholder\"\n minlength=\"1\"\n required\n [formControl]=\"searchCommentFormControl\"\n />\n\n @let iconColor =\n isDarkmode ? 'svg-fill-bw-9' : 'svg-fill-black-2';\n <div\n class=\"cancel-search h-14 w-14 d-flex place-items-center br-1 margin-4 c-pointer\"\n (mousedown)=\"onClearSearch($event)\"\n >\n <svg-icon\n class=\"d-flex svg-size-7\"\n [class]=\"[iconColor]\"\n [src]=\"\n 'ic_x'\n | caSvg: eSharedString.COMMON_LOWERCASE\n \"\n ></svg-icon>\n </div>\n </div>\n </div>\n }\n </div>\n\n <!-- text-color-blue-19 text-hover-white -->\n @if (isDarkmode) {\n <div class=\"w-100 h-1 background-black br-1 margin-t-4\"></div>\n\n <div\n class=\"d-flex justify-content-between align-items-center background-hover-blue-21 svg-hover-blue-17 c-pointer br-2 margin-t-4\"\n (click)=\"onAddNewComment()\"\n >\n <span\n class=\"text-size-11 text-color-white ca-font-bold padding-y-4 padding-x-4 text-uppercase\"\n >New Comment\n </span>\n\n <div\n class=\"h-14 w-14 d-flex place-items-center margin-6 svg-fill-blue-13\"\n >\n <svg-icon\n class=\"d-flex svg-size-14 c-pointer\"\n [src]=\"\n 'ic_plus' | caSvg: eSharedString.COMMON_LOWERCASE\n \"\n ></svg-icon>\n </div>\n </div>\n }\n\n @if (_comments.length) {\n <div\n class=\"comments-wrapper c-pointer\"\n [style]=\"{\n 'max-height': isDarkmode\n ? '210px'\n : isModal\n ? '148px'\n : '100%',\n }\"\n >\n @if (hasSearchContent) {\n @for (\n comment of searchedComments;\n let index = $index;\n track index\n ) {\n @let isCommentExpanded =\n comment?.id === commentExpanded?.id;\n @let isEditMode = comment?.id === commentAddOrEdit?.id;\n @let companyUser = comment?.companyUser;\n @let isCurrentUser =\n companyUser | caIsCurrentUser: _currentUser;\n <div\n class=\"comment padding-x-4 padding-y-2 margin-t-2 br-2\"\n [class]=\"{\n 'background-black-2': isDarkmode,\n 'background-hover-black':\n !isEditMode && isDarkmode,\n 'background-bw-9': isEditMode && isDarkmode,\n 'background-hover-bw2':\n !isEditMode && !isDarkmode,\n 'background-black-3': isEditMode && !isDarkmode,\n }\"\n >\n <div class=\"position-relative\">\n <div\n class=\"d-flex justify-content-between align-items-center padding-t-1\"\n >\n <div\n class=\"d-flex justify-content-start align-items-center\"\n >\n <!-- TODO Change colors or something -->\n @let companyUserFullname =\n (companyUser?.fullName ||\n companyUser?.name) ??\n eStringPlaceholder.EMPTY;\n\n @let nameInitials =\n companyUserFullname | nameInitials;\n <app-ca-profile-image\n [avatarColor]=\"{\n background: '#DFC2F9',\n color: '#9E47EC66',\n }\"\n [avatarImg]=\"\n companyUser?.avatarFile?.url\n \"\n [textShortName]=\"nameInitials\"\n [isRound]=\"!comment.isDriver\"\n [size]=\"22\"\n ></app-ca-profile-image>\n <div\n class=\"margin-x-4 margin-y-2 text-size-11\"\n >\n <div>\n <span\n class=\"ca-font-semi-bold\"\n [class]=\"{\n 'text-color-black':\n isEditMode &&\n isDarkmode,\n 'text-color-white':\n (!isEditMode &&\n isDarkmode) ||\n (isEditMode &&\n !isDarkmode),\n }\"\n [innerHtml]=\"\n companyUserFullname\n | caHighlightSingleString\n : searchTerm\n | safeHtml\n \"\n >\n {{\n companyUserFullname\n }}</span\n >\n @let youOrMe =\n isDarkmode\n ? '(Me)'\n : '(You)';\n @let orange =\n isDarkmode\n ? 'text-color-orange-3'\n : 'text-color-orange-2';\n @if (\n isCurrentUser && !isEditMode\n ) {\n <span\n class=\"ca-font-bold margin-x-4\"\n [class]=\"orange\"\n >{{ youOrMe }}</span\n >\n }\n </div>\n <div\n class=\"text-size-11 text-color-grey\"\n >\n @if (isEditMode) {\n @if (comment?.isNew) {\n New Comment\n } @else {\n Edit Comment\n }\n } @else {\n <span>{{\n comment.createdAt\n | dateFromStringPipe\n : eDateTimeFormats.DATE_TIME\n }}</span>\n @if (comment?.isEdited) {\n @let editedTextColor =\n isDarkmode\n ? 'text-color-blue-19'\n : 'text-color-blue-13';\n\n <span\n class=\"ca-font-medium margin-l-4\"\n [ngClass]=\"\n editedTextColor\n \"\n >\n \u2022 Edited\n </span>\n }\n }\n </div>\n </div>\n </div>\n <div\n class=\"d-flex justify-content-start align-items-center\"\n >\n @if (isEditMode) {\n @let backgroundHover =\n isDarkmode\n ? 'background-hover-black'\n : 'background-hover-white';\n @let iconFill =\n isDarkmode\n ? 'svg-fill-bw-9'\n : 'svg-fill-black-9';\n @let actionClasses =\n [\n 'background-grey',\n backgroundHover,\n iconFill,\n ];\n <div\n class=\"icon-hover h-18 w-18 d-flex place-items-center br-1 margin-x-2\"\n ngbTooltip\n [tooltipBackground]=\"\n tooltipBackground\n \"\n [tooltipColor]=\"tooltipColor\"\n [mainCaTooltip]=\"\n eGeneralActions.CONFIRM\n \"\n [position]=\"ePosition.TOP\"\n [class]=\"actionClasses\"\n (click)=\"\n confirmComment(comment)\n \"\n >\n <svg-icon\n class=\"d-flex svg-size-12 c-pointer\"\n [src]=\"\n 'ic_confirm'\n | caSvg\n : eSharedString.COMMON_LOWERCASE\n \"\n ></svg-icon>\n </div>\n <div\n class=\"icon-hover h-18 w-18 d-flex place-items-center br-1 margin-x-2\"\n ngbTooltip\n [tooltipBackground]=\"\n tooltipBackground\n \"\n [tooltipColor]=\"tooltipColor\"\n [mainCaTooltip]=\"\n eGeneralActions.CANCEL\n \"\n [position]=\"ePosition.TOP\"\n [class]=\"actionClasses\"\n (click)=\"\n clearCommentAddOrEdit()\n \"\n >\n <svg-icon\n class=\"d-flex svg-size-10 c-pointer\"\n [src]=\"\n 'ic_x'\n | caSvg\n : eSharedString.COMMON_LOWERCASE\n \"\n ></svg-icon>\n </div>\n } @else {\n @if (isCurrentUser) {\n @let iconHoverFill =\n isDarkmode\n ? 'svg-hover-bw-9'\n : 'svg-hover-black';\n @let iconBackgroundHover =\n isDarkmode\n ? 'background-hover-grey-2'\n : 'background-hover-dark-2';\n\n <div\n class=\"action-icon h-18 w-18 place-items-center br-1 margin-x-2\"\n ngbTooltip\n [tooltipBackground]=\"\n tooltipBackground\n \"\n [tooltipColor]=\"\n tooltipColor\n \"\n [mainCaTooltip]=\"\n eGeneralActions.EDIT\n \"\n [position]=\"ePosition.TOP\"\n [class]=\"[\n 'svg-fill-grey',\n iconHoverFill,\n iconBackgroundHover,\n ]\"\n (click)=\"\n onEditComment(comment)\n \"\n >\n <svg-icon\n class=\"d-flex svg-size-12 c-pointer\"\n [src]=\"\n 'ic_edit'\n | caSvg\n : eSharedString.COMMON_LOWERCASE\n \"\n ></svg-icon>\n </div>\n @let trashIconBackground =\n isDarkmode\n ? 'background-hover-grey-2'\n : 'background-hover-red-15';\n @let trashIconHover =\n isDarkmode\n ? 'svg-hover-bw-9'\n : 'svg-hover-red-14';\n <div\n class=\"action-icon h-18 w-18 place-items-center br-1 margin-x-2\"\n ngbTooltip\n [tooltipBackground]=\"\n tooltipBackground\n \"\n [tooltipColor]=\"\n tooltipColor\n \"\n [mainCaTooltip]=\"\n eGeneralActions.DELETE\n \"\n [position]=\"ePosition.TOP\"\n [class]=\"[\n 'svg-fill-grey',\n trashIconBackground,\n trashIconHover,\n ]\"\n (click)=\"\n onDeleteComment(comment)\n \"\n >\n <svg-icon\n class=\"d-flex svg-size-12 c-pointer\"\n [src]=\"\n 'ic_trash'\n | caSvg\n : eSharedString.COMMON_LOWERCASE\n \"\n ></svg-icon>\n </div>\n }\n @if (isDarkmode) {\n @let animationStateArrow =\n isCommentExpanded\n ? eAnimationState.ROTATED\n : eAnimationState.DEFAULT;\n @let tooltipText =\n isCommentExpanded\n ? eGeneralActions.COLLAPSE\n : eGeneralActions.EXPAND;\n <div\n class=\"action-icon h-18 w-18 place-items-center background-hover-grey-2 margin-l-2 br-1\"\n ngbTooltip\n [tooltipBackground]=\"\n tooltipBackground\n \"\n [tooltipColor]=\"\n tooltipColor\n \"\n [mainCaTooltip]=\"\n tooltipText\n \"\n [position]=\"ePosition.TOP\"\n (click)=\"\n onExpandComment(comment)\n \"\n >\n <svg-icon\n class=\"d-flex svg-size-12 svg-hover-bw-9 c-pointer\"\n [src]=\"\n 'ic_arrow_down'\n | caSvg\n : eSharedString.COMMON_LOWERCASE\n \"\n [class.svg-fill-white]=\"\n isCommentExpanded\n \"\n [@rotatedState]=\"\n animationStateArrow\n \"\n ></svg-icon>\n </div>\n }\n }\n </div>\n </div>\n @let isExpanded =\n isCommentExpanded || !isDarkmode;\n @let commentHeight =\n isExpanded ? 'auto' : '18px';\n\n @if (isEditMode) {\n <div>\n <textarea\n class=\"w-100 background-transparent text-color-black text-size-11 padding-x-2\"\n placeholder=\"Write comment\"\n maxlength=\"112\"\n [class]=\"\n isDarkmode\n ? 'text-color-black'\n : 'text-color-white'\n \"\n [formControl]=\"\n commentContentFormControl\n \"\n ></textarea>\n </div>\n } @else {\n <div\n class=\"text-size-11 padding-x-2\"\n [class]=\"{\n 'text-color-black':\n isEditMode && isDarkmode,\n 'text-color-white':\n (!isEditMode && isDarkmode) ||\n (isEditMode && !isDarkmode),\n 'h-18': !isExpanded,\n }\"\n [innerHtml]=\"\n comment?.commentContent ??\n eStringPlaceholder.EMPTY\n | safeHtml\n \"\n [ngStyle]=\"{\n height: commentHeight,\n }\"\n [class.comment-content]=\"!isExpanded\"\n ></div>\n }\n </div>\n </div>\n }\n } @else {\n @if (isDarkmode) {\n <div\n class=\"w-100 d-flex place-items-center background-black padding-y-15 margin-t-4\"\n >\n <span class=\"text-color-bw6-2 ca-font-extra-bold\">\n No Results\n </span>\n </div>\n }\n }\n </div>\n } @else {\n @let emptyStateContainerClass =\n isDarkmode ? 'h-80 background-black' : 'h-160';\n @let subtleIllustrationTextClass =\n isDarkmode\n ? 'text-size-20 text-color-bw6-2 ca-font-extra-bold'\n : 'text-size-28 text-color-bw-9 ca-font-bold text-uppercase';\n @let emptyStateTextClass =\n isDarkmode\n ? 'text-size-20 text-color-bw6-2 ca-font-extra-bold'\n : 'text-size-28 text-color-bw-9';\n @let emptyStateText = isDarkmode ? 'Empty State' : '(Empty State)';\n\n <div\n class=\"d-flex flex-column align-items-center justify-content-center w-100 margin-t-4\"\n [ngClass]=\"emptyStateContainerClass\"\n >\n <div\n class=\"text-center\"\n [ngClass]=\"subtleIllustrationTextClass\"\n >\n Subtle Illustration\n </div>\n <div class=\"text-center\" [ngClass]=\"emptyStateTextClass\">\n {{ emptyStateText }}\n </div>\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #dropdownPopover>\n <ng-container *ngTemplateOutlet=\"commentsTemplate\"></ng-container>\n</ng-template>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\";@import\"https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css\";.ca-font-thin{font-weight:100!important}.ca-font-extra-light{font-weight:200!important}.ca-font-light{font-weight:300!important}.ca-font-regular{font-weight:400!important}.ca-font-medium{font-weight:500!important}.ca-font-semi-bold{font-weight:600!important}.ca-font-bold{font-weight:700!important}.ca-font-extra-bold{font-weight:800!important}.ca-font-black{font-weight:900!important}.pickup-delivery-popover{top:-38px!important;max-width:340px!important}.pickup-delivery-popover.bs-popover-top{top:auto!important;bottom:-38px!important}.pickup-delivery-popover.bs-popover-top .load-component .assigned-load-holder{order:3;margin-top:4px;margin-bottom:0!important}.pickup-delivery-popover.bs-popover-top .load-component .statusBar{order:2;margin-top:4px}.pickup-delivery-popover.bs-popover-top .load-component .animation-three-tabs{order:1}.load-pickup-delivery-popover{top:-34px!important;max-width:400px!important}.gps_dropdown_popover{top:-38px;max-width:494px}.gps_dropdown_popover .popover-body{padding:0}.table-progress-popover{background-color:unset!important;margin-left:-10px}.table-progress-popover .progress-dropdown{margin-top:-6px;width:260px;height:200px;background:#2f2f2f;border-radius:3px;padding:8px;box-shadow:0 0 4px #00000026;overflow:hidden;-webkit-animation:progressAnimation .25s ease-in-out;animation:progressAnimation .25s ease-in-out}.table-progress-popover .progress-dropdown .progress-header .progress-title{font-size:18px;font-weight:600;color:#fff}.table-progress-popover .progress-dropdown .progress-header .progress-title span{font-weight:400}.table-progress-popover .progress-dropdown .progress-header .progress-total{font-size:14px;line-height:17px;color:#fff}.table-progress-popover .progress-dropdown .table-progress-bar-container{width:100%;height:8px;margin-top:6px;border-radius:2px;overflow:hidden}.table-progress-popover .progress-dropdown .table-progress-bar-container .table-progress-bar{height:100%}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-dual-info-container .progress-info-container{width:50%}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container{margin-top:10px}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container .progress-info-title{margin-bottom:2px;font-size:11px;font-weight:700;line-height:14px;color:#ffffffb2}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container .progress-info-text{font-size:14px;line-height:18px;color:#fff}.table-progress-popover .progress-dropdown.credit-dropdown{height:100px}@-webkit-keyframes progressAnimation{0%{height:0px}to{height:220px}}@keyframes progressAnimation{0%{height:0px}to{height:220px}}ngb-popover-window{padding:unset!important;border:unset!important}ngb-popover-window .popover-arrow{display:none!important}ngb-popover-window .popover-body{padding:unset!important}.dispatch-note .popover-body{position:relative;top:-4px;left:-4px}.dropdown-menu-popover.bs-popover-end-top .dropdown-container{transform:translate(-4px,-4px)}.dropdown-menu-popover.bs-popover-bottom-end .dropdown-container{transform:translate(3px,-3px)}.dropdown-menu-popover.bs-popover-end-bottom .dropdown-container{transform:translate(-3px,3px)}.dropdown-menu-popover.bs-popover-top-end .dropdown-container{transform:translate(3px,3px)}.dropdown-details-title-card-popover .dropdown-container{transform:translateY(-4px)}.tooltip{font-size:12px;position:relative}.tooltip.show{opacity:.83}.tooltip.fade:after,.tooltip.fade:before{transform:translateY(-10px);transition:all .15s ease-in-out}.tooltip.fade:hover:after,.tooltip.fade:hover:before{opacity:1;transform:translate(0)}.tooltip-inner{padding:4px 10px;white-space:nowrap;max-width:none;border-radius:3px}.tooltip-inner:empty{padding:0}.placeholder-delete .tooltip-inner{background-color:#f66}.placeholder-delete .arrow:before{border-top-color:#f66}.custom-popup-owners-for-flag .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(126%) translate(-50%)!important;width:130px;border-radius:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-for-flag .arrow{bottom:-18%;transform:rotate(180deg);left:calc(50% + 2.7rem)}.custom-popup-owners-for-flag .tooltip{opacity:.93!important;width:0}.custom-popup-owners{z-index:999}.custom-popup-owners .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(132%);z-index:999;box-shadow:0 0 3px #0003}.custom-popup-owners .arrow{bottom:-20%;transform:rotate(180deg)}.custom-popup-owners .tooltip{transform:translateY(-61px)!important}.custom-popup-owners-year{z-index:999}.custom-popup-owners-year .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(132%);z-index:999;box-shadow:0 0 3px #0003}.custom-popup-owners-year .arrow{bottom:-20%;transform:rotate(180deg)}.custom-popup-owners-year .tooltip{transform:translate(70px,-61px)!important}.custom-popup-owners-info .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(-100%) translate(-10%);width:200px;height:36px;display:flex;justify-content:center;align-items:center;border-radius:3px;margin-top:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-info .tooltip{opacity:.93;width:0}.custom-popup-owners-info .arrow{display:none}.custom-popup-owners-info #phone-inside{position:relative;right:26px;bottom:0}.custom-popup-owners-info-at .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(-108%) translate(-7%);width:270px;height:36px;display:flex;justify-content:center;align-items:center;border-radius:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-info-at .tooltip{opacity:1;width:0}.custom-popup-owners-info-at .arrow{display:none}.custom-popup-owners-for-tag .tooltip-inner{color:#3b3b3b;background-color:#fff;width:100px;border-radius:3px;box-shadow:0 0 3px #0003!important}.custom-popup-owners-for-tag .tooltip{top:5px!important}.custom-popup-owners-for-tag .arrow{bottom:-24%}.align-items-flex-start{justify-content:center;align-items:center}.align-items-flex-end{display:flex;justify-content:center;flex-direction:column;align-self:flex-end;align-items:flex-start}.label-add{align-self:flex-start}.fadeInLoad{animation:fadeInLoad .25s}@keyframes fadeInLoad{0%{opacity:0}to{opacity:1}}.fadeIn{opacity:1;-webkit-transition:.25s;-moz-transition:.25s;-o-transition:.25s;transition:.25s}.thisText:hover .fadeIn{opacity:0}.fadeInLoad{animation-name:example;animation-duration:.25s}@keyframes example{0%{transform:scale(.5)}to{transform:scale(1)}}.tooltip.tooltip-table-icons{left:12px!important;opacity:1}.tooltip.tooltip-table-icons .arrow{display:none!important}.tooltip.tooltip-table-icons .tooltip-inner{border-radius:0 50px 50px;background:#28529f}.tooltip.show{opacity:1;animation:fadeIn ease .5s!important;-webkit-animation:fadeIn ease .5s!important;-moz-animation:fadeIn ease .5s!important;-o-animation:fadeIn ease .5s!important;-ms-animation:fadeIn ease .5s!important}.ta-tooltip{position:absolute;font-size:12px;text-align:center;color:#fff;line-height:22px;z-index:999999!important;opacity:0;white-space:nowrap;transform:scale(.7)}.ta-tooltip.ta-tooltip-show{opacity:.85;transform:scale(1);padding:0 12px}.ta-tooltip.ta-tooltip-bottom-right,.ta-tooltip.ta-tooltip-bottom-right-corner{transform-origin:top left;border-radius:0 15px 15px}.ta-tooltip.ta-tooltip-bottom-left{transform-origin:top right;border-radius:15px 0 15px 15px}@keyframes scaleItem{0%{transform:scale(.4)}to{transform:scale(1)}}.app-ca-main-tooltip{pointer-events:none}.app-ca-main-tooltip .tooltip-inner{padding:0;background-color:transparent;pointer-events:none}.app-ca-main-tooltip .tooltip-inner .tooltip-holder{display:flex;font-size:11px;font-weight:700;border-radius:2px;padding:2px 8px;animation:scaleItem .3s;white-space:normal}.app-ca-main-tooltip .tooltip-inner .tooltip-holder:empty{padding:0}.tooltip-arrow{display:none!important}.trucks.semitruck svg path,.trucks.semisleeper svg path,.trucks.flatbed svg path,.trucks.stepdeck svg path,.trucks.lowboyrgn svg path,.trucks.chassis svg path,.trucks.conestoga svg path,.trucks.sidekit svg path,.trucks.container svg path,.trailers.semitruck svg path,.trailers.semisleeper svg path,.trailers.flatbed svg path,.trailers.stepdeck svg path,.trailers.lowboyrgn svg path,.trailers.chassis svg path,.trailers.conestoga svg path,.trailers.sidekit svg path,.trailers.container svg path{fill:#92b1f5}.trucks.boxtruck svg path,.trucks.reefertruck svg path,.trucks.cargovan svg path,.trucks.dryvan svg path,.trucks.reefer svg path,.trailers.boxtruck svg path,.trailers.reefertruck svg path,.trailers.cargovan svg path,.trailers.dryvan svg path,.trailers.reefer svg path{fill:#fbc88b}.trucks.dumptruck svg path,.trucks.cementtruck svg path,.trucks.garbagetruck svg path,.trucks.enddump svg path,.trucks.bottomdump svg path,.trucks.hopper svg path,.trucks.tanker svg path,.trucks.pneumatictanker svg path,.trailers.dumptruck svg path,.trailers.cementtruck svg path,.trailers.garbagetruck svg path,.trailers.enddump svg path,.trailers.bottomdump svg path,.trailers.hopper svg path,.trailers.tanker svg path,.trailers.pneumatictanker svg path{fill:#ed9292}.trucks.towtruck svg path,.trucks.carhauler svg path,.trucks.spotter svg path,.trucks.carhaulerstigner svg path,.trailers.towtruck svg path,.trailers.carhauler svg path,.trailers.spotter svg path,.trailers.carhaulerstigner svg path{fill:#86c9c3}.trucks .svgtext-template-text,.trailers .svgtext-template-text{color:#fff;transition:color .3s ease-in-out}.colors .black svg #droplet{fill:#6c6c6c}.colors .brown svg #droplet{fill:#a1887f}.colors .darkgreen svg #droplet{fill:#4db6a2}.colors .lightgreen svg #droplet{fill:#81c784}.colors .darkblue svg #droplet{fill:#546fd2}.colors .lightblue svg #droplet{fill:#64b5f6}.colors .gray svg #droplet{fill:#aaa}.colors .purple svg #droplet{fill:#ba68c8}.colors .gold svg #droplet{fill:#bcad79}.colors .silver svg #droplet{fill:#dadada}.colors .red svg #droplet{fill:#f96b69}.colors .pink svg #droplet{fill:#f26ec2}.colors .white svg #droplet{fill:#f1f1f1}.colors .orange svg #droplet{fill:#ff8a65}.colors .yellow svg #droplet{fill:#ffd54f}.colors:hover{transition:all .3s ease-in-out}.colors:hover .black svg #droplet{fill:#3c3c3c}.colors:hover .brown svg #droplet{fill:#8d6e63}.colors:hover .darkgreen svg #droplet{fill:#26a690}.colors:hover .lightgreen svg #droplet{fill:#66bb6a}.colors:hover .darkblue svg #droplet{fill:#304fc1}.colors:hover .lightblue svg #droplet{fill:#42a5f5}.colors:hover .gray svg #droplet{fill:#919191}.colors:hover .purple svg #droplet{fill:#ab47bc}.colors:hover .gold svg #droplet{fill:#aa9c6e}.colors:hover .silver svg #droplet{fill:#b7b7b7}.colors:hover .red svg #droplet{fill:#ef5350}.colors:hover .pink svg #droplet{fill:#fa4daa}.colors:hover .white svg #droplet{fill:#fff}.colors:hover .orange svg #droplet{fill:#ff7043}.colors:hover .yellow svg #droplet{fill:#ffca28}.text-color-black{color:#424242!important}.text-color-black::-moz-selection{background-color:#42424233!important;color:#424242!important}.text-color-black::selection{background-color:#42424233!important;color:#424242!important}.text-color-black-2{color:#2f2f2f!important}.text-color-black-2::-moz-selection{background-color:#2f2f2f33!important;color:#2f2f2f!important}.text-color-black-2::selection{background-color:#2f2f2f33!important;color:#2f2f2f!important}.text-color-muted{color:#919191!important}.text-color-muted::-moz-selection{background-color:#91919133!important;color:#919191!important}.text-color-muted::selection{background-color:#91919133!important;color:#919191!important}.text-color-green{color:#56b4ac!important}.text-color-green::-moz-selection{background-color:#56b4ac33!important;color:#56b4ac!important}.text-color-green::selection{background-color:#56b4ac33!important;color:#56b4ac!important}.text-color-green-2{color:#259f94!important}.text-color-green-2::-moz-selection{background-color:#259f9433!important;color:#259f94!important}.text-color-green-2::selection{background-color:#259f9433!important;color:#259f94!important}.text-color-green-4{color:#86c9c3!important}.text-color-green-4::-moz-selection{background-color:#86c9c333!important;color:#86c9c3!important}.text-color-green-4::selection{background-color:#86c9c333!important;color:#86c9c3!important}.text-color-blue-5{color:#3074d3!important}.text-color-blue-5::-moz-selection{background-color:#3074d333!important;color:#3074d3!important}.text-color-blue-5::selection{background-color:#3074d333!important;color:#3074d3!important}.text-color-blue-13{color:#6692f1!important}.text-color-blue-13::-moz-selection{background-color:#6692f133!important;color:#6692f1!important}.text-color-blue-13::selection{background-color:#6692f133!important;color:#6692f1!important}.text-color-blue-16{color:#e9effd!important}.text-color-blue-16::-moz-selection{background-color:#e9effd33!important;color:#e9effd!important}.text-color-blue-16::selection{background-color:#e9effd33!important;color:#e9effd!important}.text-color-blue-18{color:#3b73ed!important}.text-color-blue-18::-moz-selection{background-color:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-18::selection{background-color:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-19{color:#92b1f5!important}.text-color-blue-19::-moz-selection{background-color:#92b1f533!important;color:#92b1f5!important}.text-color-blue-19::selection{background-color:#92b1f533!important;color:#92b1f5!important}.text-color-red-10{color:#e66767!important}.text-color-red-10::-moz-selection{background-color:#e6676733!important;color:#e66767!important}.text-color-red-10::selection{background-color:#e6676733!important;color:#e66767!important}.text-color-red-11{color:#df3c3c!important}.text-color-red-11::-moz-selection{background-color:#df3c3c33!important;color:#df3c3c!important}.text-color-red-11::selection{background-color:#df3c3c33!important;color:#df3c3c!important}.text-color-red-13{color:#ed9292!important}.text-color-red-13::-moz-selection{background-color:#ed929233!important;color:#ed9292!important}.text-color-red-13::selection{background-color:#ed929233!important;color:#ed9292!important}.text-color-yellow{color:#fab15c!important}.text-color-yellow::-moz-selection{background-color:#fab15c33!important;color:#fab15c!important}.text-color-yellow::selection{background-color:#fab15c33!important;color:#fab15c!important}.text-color-purple{color:#b370f0!important}.text-color-purple::-moz-selection{background-color:#b370f033!important;color:#b370f0!important}.text-color-purple::selection{background-color:#b370f033!important;color:#b370f0!important}.text-color-special-filter-purple{color:#9e47ec!important}.text-color-special-filter-purple::-moz-selection{background-color:#9e47ec33!important;color:#9e47ec!important}.text-color-special-filter-purple::selection{background-color:#9e47ec33!important;color:#9e47ec!important}.text-color-grey-9{color:#b7b7b7!important}.text-color-grey-9::-moz-selection{background-color:#b7b7b733!important;color:#b7b7b7!important}.text-color-grey-9::selection{background-color:#b7b7b733!important;color:#b7b7b7!important}.text-color-light-grey{color:#e5e5e5!important}.text-color-light-grey::-moz-selection{background-color:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey::selection{background-color:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey-2{color:#aaa!important}.text-color-light-grey-2::-moz-selection{background-color:#aaa3!important;color:#aaa!important}.text-color-light-grey-2::selection{background-color:#aaa3!important;color:#aaa!important}.text-color-light-grey-6{color:#ccc!important}.text-color-light-grey-6::-moz-selection{background-color:#ccc3!important;color:#ccc!important}.text-color-light-grey-6::selection{background-color:#ccc3!important;color:#ccc!important}.text-color-white{color:#fff!important}.text-color-white::-moz-selection{background-color:#fff3!important;color:#fff!important}.text-color-white::selection{background-color:#fff3!important;color:#fff!important}.text-color-white-2{color:#fff!important}.text-color-white-2::-moz-selection{background-color:#fff3!important;color:#fff!important}.text-color-white-2::selection{background-color:#fff3!important;color:#fff!important}.text-color-white-4{color:#ffffffb2!important}.text-color-white-4::-moz-selection{background-color:#fff3!important;color:#ffffffb2!important}.text-color-white-4::selection{background-color:#fff3!important;color:#ffffffb2!important}.text-color-bw6-2{color:#6c6c6c!important}.text-color-bw6-2::-moz-selection{background-color:#6c6c6c33!important;color:#6c6c6c!important}.text-color-bw6-2::selection{background-color:#6c6c6c33!important;color:#6c6c6c!important}.text-color-bw-9{color:#dadada!important}.text-color-bw-9::-moz-selection{background-color:#dadada33!important;color:#dadada!important}.text-color-bw-9::selection{background-color:#dadada33!important;color:#dadada!important}.text-color-grey{color:#919191!important}.text-color-grey::-moz-selection{background-color:#91919133!important;color:#919191!important}.text-color-grey::selection{background-color:#91919133!important;color:#919191!important}.text-color-grey .address-text::-moz-selection,.text-color-grey .marker-bold-text::-moz-selection{background-color:#91919133!important;color:#919191!important}.text-color-grey .address-text::selection,.text-color-grey .marker-bold-text::selection{background-color:#91919133!important;color:#919191!important}.text-color-orange-1{color:#ff7043!important}.text-color-orange-1::-moz-selection{background-color:#ff704333!important;color:#ff7043!important}.text-color-orange-1::selection{background-color:#ff704333!important;color:#ff7043!important}.text-color-orange-2{color:#f77d3b!important}.text-color-orange-2::-moz-selection{background-color:#f77d3b33!important;color:#f77d3b!important}.text-color-orange-2::selection{background-color:#f77d3b33!important;color:#f77d3b!important}.text-color-orange-3{color:#ffb097!important}.text-color-orange-3::-moz-selection{background-color:#ffb09733!important;color:#ffb097!important}.text-color-orange-3::selection{background-color:#ffb09733!important;color:#ffb097!important}.text-color-brown-1{color:#865e3a!important}.text-color-brown-1::-moz-selection{background-color:#865e3a33!important;color:#865e3a!important}.text-color-brown-1::selection{background-color:#865e3a33!important;color:#865e3a!important}.text-color-light-blue-2{color:#1ab5e6!important}.text-color-light-blue-2::-moz-selection{background-color:#1ab5e633!important;color:#1ab5e6!important}.text-color-light-blue-2::selection{background-color:#1ab5e633!important;color:#1ab5e6!important}.text-hover-white{transition:color .3s ease-in-out ease-in-out}.text-hover-white:hover{color:#fff!important}.text-hover-black{transition:color .3s ease-in-out ease-in-out}.text-hover-black:hover{color:#424242!important}.text-hover-blue-15{transition:color .3s ease-in-out ease-in-out}.text-hover-blue-15:hover{color:#0b49d1!important}.text-hover-blue-18{transition:color .3s ease-in-out ease-in-out}.text-hover-blue-18:hover{color:#3b73ed!important}.text-hover-bw6-2{transition:color .3s ease-in-out ease-in-out}.text-hover-bw6-2:hover{color:#6c6c6c!important}.text-size-11{font-size:11px!important;line-height:14px!important}.text-size-14{font-size:14px!important;line-height:18px!important}.text-size-16{font-size:16px!important;line-height:19px!important}.text-size-18{font-size:18px!important;line-height:22px!important}.text-size-20{font-size:20px!important;line-height:24px!important}.text-size-26{font-size:26px!important;line-height:32px!important}.text-size-28{font-size:28px!important;line-height:34px!important}.font-size-11{font-size:11px!important}.line-height-12{line-height:12px!important}.svg-fill-black svg path,.svg-fill-black svg circle{fill:#424242!important}.svg-fill-black-2 svg path,.svg-fill-black-2 svg circle{fill:#2f2f2f!important}.svg-fill-black-9 svg path,.svg-fill-black-9 svg circle{fill:#1d1d1d!important}.svg-fill-white svg path,.svg-fill-white svg circle{fill:#fff!important}.svg-fill-white-2 svg path,.svg-fill-white-2 svg circle{fill:#fff!important}.svg-fill-muted svg path,.svg-fill-muted svg circle{fill:#919191!important}.svg-fill-bw6-2 svg path,.svg-fill-bw6-2 svg circle{fill:#6c6c6c!important}.svg-fill-bw-9 svg path,.svg-fill-bw-9 svg circle{fill:#dadada!important}.svg-fill-light-grey-2 svg path,.svg-fill-light-grey-2 svg circle{fill:#aaa!important}.svg-fill-light-grey-6 svg path,.svg-fill-light-grey-6 svg circle{fill:#ccc!important}.svg-fill-blue-8 svg path,.svg-fill-blue-8 svg circle{fill:#6692f1!important}.svg-fill-blue-13 svg path,.svg-fill-blue-13 svg circle{fill:#6692f1!important}.svg-fill-blue-14 svg path,.svg-fill-blue-14 svg circle{fill:#3b73ed!important}.svg-fill-blue-17 svg path,.svg-fill-blue-17 svg circle{fill:#bed0f9!important}.svg-fill-blue-19 svg path,.svg-fill-blue-19 svg circle{fill:#92b1f5!important}.svg-fill-blue-26 svg path,.svg-fill-blue-26 svg circle{fill:#4dc5eb!important}.svg-fill-green svg path,.svg-fill-green svg circle{fill:#56b4ac!important}.svg-fill-green-2 svg path,.svg-fill-green-2 svg circle{fill:#259f94!important}.svg-fill-green-4 svg path,.svg-fill-green-4 svg circle{fill:#86c9c3!important}.svg-fill-green-6 svg path,.svg-fill-green-6 svg circle{fill:#77bf56!important}.svg-fill-yellow-1 svg path,.svg-fill-yellow-1 svg circle{fill:#fab15c!important}.svg-fill-yellow-4 svg path,.svg-fill-yellow-4 svg circle{fill:#fbc88b!important}.svg-fill-yellow-5 svg path,.svg-fill-yellow-5 svg circle{fill:#f89b2e!important}.svg-fill-yellow-8 svg path,.svg-fill-yellow-8 svg circle{fill:#daad4f!important}.svg-fill-white-4 svg path,.svg-fill-white-4 svg circle{fill:#ffffffb2!important}.svg-fill-grey svg path,.svg-fill-grey svg circle{fill:#919191!important}.svg-fill-red-10 svg path,.svg-fill-red-10 svg circle{fill:#e66767!important}.svg-fill-red-11 svg path,.svg-fill-red-11 svg circle{fill:#df3c3c!important}.svg-fill-red-13 svg path,.svg-fill-red-13 svg circle{fill:#ed9292!important}.svg-fill-red-14 svg path,.svg-fill-red-14 svg circle{fill:#c20c0c!important}.svg-fill-red-15 svg path,.svg-fill-red-15 svg circle{fill:#f4bebe!important}.svg-fill-red-18 svg path,.svg-fill-red-18 svg circle{fill:#e668a0!important}.svg-fill-orange-4 svg path,.svg-fill-orange-4 svg circle{fill:#ff906d!important}.svg-fill-brown svg path,.svg-fill-brown svg circle{fill:#865e3a!important}.svg-fill-purple-4 svg path,.svg-fill-purple-4 svg circle{fill:#9e47ec!important}.svg-hover-white svg path{transition:fill .3s ease-in-out}.svg-hover-white:hover svg path{fill:#fff!important}.svg-hover-white-2 svg path{transition:fill .3s ease-in-out}.svg-hover-white-2:hover svg path{fill:#fff!important}.svg-hover-muted svg path{transition:fill .3s ease-in-out}.svg-hover-muted:hover svg path{fill:#919191!important}.svg-hover-grey-4 svg path{transition:fill .3s ease-in-out}.svg-hover-grey-4:hover svg path{fill:#ccc!important}.svg-hover-black svg path{transition:fill .3s ease-in-out}.svg-hover-black:hover svg path{fill:#424242!important}.svg-hover-blue-9 svg path{transition:fill .3s ease-in-out}.svg-hover-blue-9:hover svg path{fill:#0b49d1!important}.svg-hover-blue-10 svg path{transition:fill .3s ease-in-out}.svg-hover-blue-10:hover svg path{fill:#6f9ee033!important}.svg-hover-blue-15 svg path{transition:fill .3s ease-in-out}.svg-hover-blue-15:hover svg path{fill:#0b49d1!important}.svg-hover-blue-17 svg path{transition:fill .3s ease-in-out}.svg-hover-blue-17:hover svg path{fill:#bed0f9!important}.svg-hover-blue-19 svg path{transition:fill .3s ease-in-out}.svg-hover-blue-19:hover svg path{fill:#92b1f5!important}.svg-hover-bw6-2 svg path{transition:fill .3s ease-in-out}.svg-hover-bw6-2:hover svg path{fill:#6c6c6c!important}.svg-hover-bw-9 svg path{transition:fill .3s ease-in-out}.svg-hover-bw-9:hover svg path{fill:#dadada!important}.svg-hover-trash-red svg path{transition:fill .3s ease-in-out}.svg-hover-trash-red:hover svg path{fill:#ff5050!important}.svg-hover-red-14 svg path{transition:fill .3s ease-in-out}.svg-hover-red-14:hover svg path{fill:#c20c0c!important}.svg-size-6 svg{width:6px;height:6px}.svg-size-7 svg{width:7px;height:7px}.svg-size-10 svg{width:10px;height:10px}.svg-size-12 svg{width:12px;height:12px}.svg-size-14 svg{width:14px;height:14px}.svg-size-16 svg{width:16px;height:16px}.svg-size-17 svg{width:17px;height:17px}.svg-size-18 svg{width:18px;height:18px}.svg-size-22 svg{width:22px;height:22px}.svg-size-23 svg{width:23px;height:23px}.svg-size-26 svg{width:26px;height:26px}.svg-size-30-26 svg{width:30px;height:26px}.svg-size-44-16 svg{width:44px;height:16px}.svg-size-90 svg{width:90px;height:90px}.background-transparent{background-color:transparent}.background-white{background-color:#fff}.background-black{background-color:#424242}.background-black-2{background-color:#2f2f2f}.background-black-3{background-color:#1d1d1d}.background-gray{background-color:#e5e5e5}.background-gray-2{background-color:#6c6c6c}.background-gray-12{background-color:#eee}.background-light-gray-2{background-color:#aaa}.background-light-gray-6{background-color:#ccc}.background-light-gray-7{background-color:#fbfbfb}.background-grey{background-color:#919191}.background-blue-5{background-color:#3074d3}.background-blue-13{background-color:#6692f1}.background-blue-14,.background-blue-18{background-color:#3b73ed}.background-blue-19{background-color:#92b1f5}.background-blue-20{background-color:#3b73ed33}.background-green-0{background-color:#56b4ac}.background-green-2{background-color:#259f94}.background-green-3{background-color:#b6dfdb}.background-green-4,.background-green-6{background-color:#86c9c3}.background-dark-2{background-color:#91919133}.background-red-19{background-color:#df3d85}.background-purple-4{background-color:#9e47ec}.background-gold-bold{background-color:#cf961d}.background-gold-subtle{background-color:#e4c481}.background-orange-3{background-color:#ffb097}.background-orange-4{background-color:#ff906d}.background-orange-7{background-color:#ffcfc0}.background-yellow-8{background-color:#daad4f}.background-bw5{background-color:#919191}.background-bw6-2{background-color:#6c6c6c}.background-brown-bold{background-color:#865e3a}.background-bw2{background-color:#eee}.background-bw-9{background-color:#dadada}.background-hover-white{transition:background-color .3s ease-in-out}.background-hover-white:hover{background-color:#fff!important}.background-hover-black{transition:background-color .3s ease-in-out}.background-hover-black:hover{background-color:#424242!important}.background-hover-black-1{transition:background-color .3s ease-in-out}.background-hover-black-1:hover{background-color:#424242!important}.background-hover-grey{transition:background-color .3s ease-in-out}.background-hover-grey:hover{background-color:#919191!important}.background-hover-grey-2{transition:background-color .3s ease-in-out}.background-hover-grey-2:hover{background-color:#6c6c6c!important}.background-hover-grey-6{transition:background-color .3s ease-in-out}.background-hover-grey-6:hover{background-color:#91919120!important}.background-hover-dark-2{transition:background-color .3s ease-in-out}.background-hover-dark-2:hover{background-color:#91919133!important}.background-hover-bw2{transition:background-color .3s ease-in-out}.background-hover-bw2:hover{background-color:#eee!important}.background-hover-bw6{transition:background-color .3s ease-in-out}.background-hover-bw6:hover{background-color:#606060!important}.background-hover-bw6-2{transition:background-color .3s ease-in-out}.background-hover-bw6-2:hover{background-color:#6c6c6c!important}.background-hover-blue-13{transition:background-color .3s ease-in-out}.background-hover-blue-13:hover{background-color:#6692f1!important}.background-hover-blue-15{transition:background-color .3s ease-in-out}.background-hover-blue-15:hover{background-color:#0b49d1!important}.background-hover-blue-16{transition:background-color .3s ease-in-out}.background-hover-blue-16:hover{background-color:#e9effd!important}.background-hover-blue-17{transition:background-color .3s ease-in-out}.background-hover-blue-17:hover{background-color:#bed0f9!important}.background-hover-blue-19{transition:background-color .3s ease-in-out}.background-hover-blue-19:hover{background-color:#92b1f5!important}.background-hover-blue-20{transition:background-color .3s ease-in-out}.background-hover-blue-20:hover{background-color:#3b73ed33!important}.background-hover-blue-21{transition:background-color .3s ease-in-out}.background-hover-blue-21:hover{background-color:#3b73ed66!important}.background-hover-red-15{transition:background-color .3s ease-in-out}.background-hover-red-15:hover{background-color:#f4bebe!important}.background-hover-gray{transition:background-color .3s ease-in-out}.background-hover-gray:hover{background-color:#e5e5e5!important}.background-hover-light-grey{transition:background-color .3s ease-in-out}.background-hover-light-grey:hover{background-color:#e5e5e5!important}.background-hover-bw-9{transition:background-color .3s ease-in-out}.background-hover-bw-9:hover{background-color:#dadada!important}.br-1{border-radius:1px}.br-2{border-radius:2px}.br-3{border-radius:3px}.br-10{border-radius:10px}.br-60{border-radius:60px}.br-circle{border-radius:50%}.padding-2{padding:2px}.padding-l-2{padding-left:2px}.padding-r-2{padding-right:2px}.padding-t-2{padding-top:2px}.padding-4{padding:4px}.padding-l-4{padding-left:4px}.padding-r-4{padding-right:4px}.padding-t-4{padding-top:4px}.padding-6{padding:6px}.padding-l-6{padding-left:6px}.padding-r-6{padding-right:6px}.padding-t-6{padding-top:6px}.padding-10{padding:10px}.padding-l-10{padding-left:10px}.padding-r-10{padding-right:10px}.padding-t-10{padding-top:10px}.padding-15{padding:15px}.padding-l-15{padding-left:15px}.padding-r-15{padding-right:15px}.padding-t-15{padding-top:15px}.padding-y-2{padding-top:2px;padding-bottom:2px}.padding-y-4{padding-top:4px;padding-bottom:4px}.padding-y-6{padding-top:6px;padding-bottom:6px}.padding-y-10{padding-top:10px;padding-bottom:10px}.padding-y-15{padding-top:15px;padding-bottom:15px}.padding-x-4{padding-left:4px;padding-right:4px}.padding-x-5{padding-left:5px;padding-right:5px}.padding-x-6{padding-left:6px;padding-right:6px}.padding-x-10{padding-left:10px;padding-right:10px}.margin--2{margin:-2px}.margin-y--2{margin-top:-2px;margin-bottom:-2px}.margin-x--2{margin-left:-2px;margin-right:-2px}.margin-t--2{margin-top:-2px}.margin-r--2{margin-right:-2px}.margin-b--2{margin-bottom:-2px}.margin-l--2{margin-left:-2px}.margin-1{margin:1px}.margin-y-1{margin-top:1px;margin-bottom:1px}.margin-x-1{margin-left:1px;margin-right:1px}.margin-t-1{margin-top:1px}.margin-r-1{margin-right:1px}.margin-b-1{margin-bottom:1px}.margin-l-1{margin-left:1px}.margin-2{margin:2px}.margin-y-2{margin-top:2px;margin-bottom:2px}.margin-x-2{margin-left:2px;margin-right:2px}.margin-t-2{margin-top:2px}.margin-r-2{margin-right:2px}.margin-b-2{margin-bottom:2px}.margin-l-2{margin-left:2px}.margin-4{margin:4px}.margin-y-4{margin-top:4px;margin-bottom:4px}.margin-x-4{margin-left:4px;margin-right:4px}.margin-t-4{margin-top:4px}.margin-r-4{margin-right:4px}.margin-b-4{margin-bottom:4px}.margin-l-4{margin-left:4px}.margin-5{margin:5px}.margin-y-5{margin-top:5px;margin-bottom:5px}.margin-x-5{margin-left:5px;margin-right:5px}.margin-t-5{margin-top:5px}.margin-r-5{margin-right:5px}.margin-b-5{margin-bottom:5px}.margin-l-5{margin-left:5px}.margin-6{margin:6px}.margin-y-6{margin-top:6px;margin-bottom:6px}.margin-x-6{margin-left:6px;margin-right:6px}.margin-t-6{margin-top:6px}.margin-r-6{margin-right:6px}.margin-b-6{margin-bottom:6px}.margin-l-6{margin-left:6px}.margin-8{margin:8px}.margin-y-8{margin-top:8px;margin-bottom:8px}.margin-x-8{margin-left:8px;margin-right:8px}.margin-t-8{margin-top:8px}.margin-r-8{margin-right:8px}.margin-b-8{margin-bottom:8px}.margin-l-8{margin-left:8px}.margin-10{margin:10px}.margin-y-10{margin-top:10px;margin-bottom:10px}.margin-x-10{margin-left:10px;margin-right:10px}.margin-t-10{margin-top:10px}.margin-r-10{margin-right:10px}.margin-b-10{margin-bottom:10px}.margin-l-10{margin-left:10px}.margin-15{margin:15px}.margin-y-15{margin-top:15px;margin-bottom:15px}.margin-x-15{margin-left:15px;margin-right:15px}.margin-t-15{margin-top:15px}.margin-r-15{margin-right:15px}.margin-b-15{margin-bottom:15px}.margin-l-15{margin-left:15px}.margin-22{margin:22px}.margin-y-22{margin-top:22px;margin-bottom:22px}.margin-x-22{margin-left:22px;margin-right:22px}.margin-t-22{margin-top:22px}.margin-r-22{margin-right:22px}.margin-b-22{margin-bottom:22px}.margin-l-22{margin-left:22px}.margin-24{margin:24px}.margin-y-24{margin-top:24px;margin-bottom:24px}.margin-x-24{margin-left:24px;margin-right:24px}.margin-t-24{margin-top:24px}.margin-r-24{margin-right:24px}.margin-b-24{margin-bottom:24px}.margin-l-24{margin-left:24px}.gap-xs{gap:xspx}.gap-6{gap:6px}.gap-20{gap:20px}.w-1{width:1px}.h-1{height:1px}.w-2{width:2px}.h-2{height:2px}.w-4{width:4px}.h-4{height:4px}.w-10{width:10px}.h-10{height:10px}.w-14{width:14px}.h-14{height:14px}.w-15{width:15px}.h-15{height:15px}.w-18{width:18px}.h-18{height:18px}.w-22{width:22px}.h-22{height:22px}.w-26{width:26px}.h-26{height:26px}.w-31{width:31px}.h-31{height:31px}.w-32{width:32px}.h-32{height:32px}.w-36{width:36px}.h-36{height:36px}.w-116{width:116px}.h-116{height:116px}.w-120{width:120px}.h-120{height:120px}.w-fit-content{width:fit-content}@keyframes dropdown{0%{margin-top:20px;visibility:hidden;opacity:0}to{opacity:1;margin-top:10px;visibility:visible!important}}@keyframes dropup{0%{margin-top:-19px;visibility:hidden;opacity:0}to{margin-top:inherit;visibility:visible!important}}.filter-dropdown-popover{width:260px;position:relative;top:-4px;left:-4px}.filter-dropdown-popover-max-height{max-height:360px}.filter-dropdown-list{max-height:260px;overflow-y:auto}.filter-dropdown-list-icon{height:26px;transition:background-color .3s ease-in-out}.filter-dropdown-list-icon-value{height:14px;width:14px}.filter-dropdown-list-icon-remove{display:none}.filter-dropdown-list-icon:hover{background-color:#424242}.filter-dropdown-list-icon:hover .filter-dropdown-icon-count{display:none}.filter-dropdown-list-icon-selected:hover{background-color:#0b49d1}.filter-dropdown-list-item-icons{transition:opacity .3s ease-in-out;opacity:0}.filter-dropdown-list-item-status-circle{height:10px;width:10px}.filter-dropdown-list-item-remove{display:none}.filter-dropdown-list-item:hover{background-color:#424242}.filter-dropdown-list-item:hover .filter-dropdown-list-item-icons{opacity:1}.filter-dropdown-list-item:hover .filter-dropdown-list-item-icons svg path{fill:var(--svg-fill-color, #e66767)}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-remove{display:flex}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-remove svg path{fill:#e66767!important}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-count{display:none!important}.filter-dropdown-icon{height:26px;width:26px}.filter-dropdown-count{height:14px;width:14px}.filter-dropdown-count-remove,.filter-dropdown-count-hover:hover .filter-dropdown-count-value{display:none}.filter-dropdown-count-hover:hover .filter-dropdown-count-remove{display:flex}.filter-dropdown-button{height:26px}.filter-dropdown-footer-button{color:#dadada;transition:color .3s ease-in-out,background-color .3s ease-in-out;height:18px;width:50%}.filter-dropdown-footer-button-set{color:#fff;background-color:#3b73ed}.filter-dropdown-footer-button-set:hover{background-color:#e9effd;color:#0b49d1}.filter-dropdown-footer-button-clear{color:#dadada}.filter-dropdown-footer-button-clear:hover{background-color:#eee;color:#424242}.filter-dropdown-list-badge{min-width:18px}.h-7{height:7px!important;min-height:7px!important}.h-8{height:8px!important;min-height:8px!important}.h-10{height:10px!important;min-height:10px!important}.h-12{height:12px!important;min-height:12px!important}.h-14{height:14px!important;min-height:14px!important}.h-15{height:15px!important;min-height:15px!important}.h-16{height:16px!important;min-height:16px!important}.h-18{height:18px!important;min-height:18px!important}.h-22{height:22px!important;min-height:22px!important}.h-24{height:24px!important;min-height:24px!important}.h-26{height:26px!important;min-height:26px!important}.h-30{height:30px!important;min-height:30px!important}.h-34{height:34px!important;min-height:34px!important}.h-37{height:37px!important;min-height:37px!important}.h-40{height:40px!important;min-height:40px!important}.h-42{height:42px!important;min-height:42px!important}.h-44{height:44px!important;min-height:44px!important}.h-52{height:52px!important;min-height:52px!important}.h-80{height:80px!important;min-height:80px!important}.h-160{height:160px!important;min-height:160px!important}.h-486{height:486px!important;min-height:486px!important}.h-800{height:800px!important;min-height:800px!important}.h-960{height:960px!important;min-height:960px!important}.w-2{width:2px!important;min-width:2px!important}.w-7{width:7px!important;min-width:7px!important}.w-8{width:8px!important;min-width:8px!important}.w-10{width:10px!important;min-width:10px!important}.w-12{width:12px!important;min-width:12px!important}.w-15{width:15px!important;min-width:15px!important}.w-18{width:18px!important;min-width:18px!important}.w-22{width:22px!important;min-width:22px!important}.w-24{width:24px!important;min-width:24px!important}.w-26{width:26px!important;min-width:26px!important}.w-29{width:29px!important;min-width:29px!important}.w-30{width:30px!important;min-width:30px!important}.w-36{width:36px!important;min-width:36px!important}.w-40{width:40px!important;min-width:40px!important}.w-42{width:42px!important;min-width:42px!important}.w-46{width:46px!important;min-width:46px!important}.w-49{width:49px!important;min-width:49px!important}.w-57{width:57px!important;min-width:57px!important}.w-60{width:60px!important;min-width:60px!important}.w-68{width:68px!important;min-width:68px!important}.w-70{width:70px!important;min-width:70px!important}.w-71{width:71px!important;min-width:71px!important}.w-78{width:78px!important;min-width:78px!important}.w-80{width:80px!important;min-width:80px!important}.w-83{width:83px!important;min-width:83px!important}.w-84{width:84px!important;min-width:84px!important}.w-88{width:88px!important;min-width:88px!important}.w-90{width:90px!important;min-width:90px!important}.w-91{width:91px!important;min-width:91px!important}.w-93{width:93px!important;min-width:93px!important}.w-98{width:98px!important;min-width:98px!important}.w-101{width:101px!important;min-width:101px!important}.w-106{width:106px!important;min-width:106px!important}.w-108{width:108px!important;min-width:108px!important}.w-116{width:116px!important;min-width:116px!important}.w-126{width:126px!important;min-width:126px!important}.w-144{width:144px!important;min-width:144px!important}.w-155{width:155px!important;min-width:155px!important}.w-172{width:172px!important;min-width:172px!important}.w-179{width:179px!important;min-width:179px!important}.w-202{width:202px!important;min-width:202px!important}.w-214{width:214px!important;min-width:214px!important}.w-223{width:223px!important;min-width:223px!important}.w-264{width:264px!important;min-width:264px!important}.w-268{width:268px!important;min-width:268px!important}.w-272{width:272px!important;min-width:272px!important}.w-277{width:277px!important;min-width:277px!important}.w-334{width:334px!important;min-width:334px!important}.w-442{width:442px!important;min-width:442px!important}.w-462{width:462px!important;min-width:462px!important}.w-612{width:612px!important;min-width:612px!important}.w-616{width:616px!important;min-width:616px!important}.w-620{width:620px!important;min-width:620px!important}.min-w-18{min-width:18px}.flex-1{flex:1}.w-33{width:33%}.w-40p{width:40%}.w-90p{width:90%}*{margin:0;font-family:Montserrat,sans-serif}html{scroll-behavior:auto!important}.gm-style-iw-chr,.gm-style-iw-tc{display:none}.gm-style .gm-style-iw-c{border-radius:0}.gm-style-iw{overflow-y:auto!important;overflow-x:hidden!important}.gm-style-iw>div{overflow:visible!important}.infoWindow{overflow:hidden!important}.gm-style-iw-d,.gm-style-iw.gm-style-iw-c{max-height:350px!important}::ng-deep .popover{--bs-popover-border-width: 0;--bs-popover-body-padding-y: 0;--bs-popover-body-padding-x: 0}::ng-deep .popover .popover-arrow{display:none}.c-pointer{cursor:pointer}.pointer-events-none{pointer-events:none}.ca-scroll-bar{overflow-y:scroll}.ca-scroll-bar::-webkit-scrollbar{width:2px}.ca-scroll-bar::-webkit-scrollbar-thumb{background:#ccc;border-radius:1px}.ca-scroll-bar::-webkit-scrollbar-track{background:#2f2f2f}.place-items-center{justify-content:center;align-items:center}.prevent-text-selection{-ms-user-select:none;-webkit-user-select:none;user-select:none;-moz-user-select:none}.comments-container .divider{height:12px}.comments-container .search .cancel-search{visibility:hidden;pointer-events:none}.comments-container .search input{border:0;-webkit-transition:.35s;transition:.35s;outline:none;background-color:transparent}.comments-container .search input:focus{border:0}.comments-container .search input::placeholder{color:#aaa}.comments-container .search:focus-within{background-color:#1d1d1d!important}.comments-container .search:focus-within .cancel-search{visibility:visible;pointer-events:auto;background-color:#919191!important}.comments-container .search:has(input:valid){background-color:#0b49d1!important}.comments-container .search:has(input:valid) .cancel-search{visibility:visible;pointer-events:auto;background-color:#bdcaeb!important}.comments-container .search:has(input:valid) .cancel-search svg path,.comments-container .search:has(input:valid) .cancel-search svg circle{fill:#0b49d1!important}.comments-container .search:has(input:valid) input{color:#fff!important}.comments-container .search:has(input:valid):not(:focus-within){background-color:#e9effd!important}.comments-container .search:has(input:valid):not(:focus-within) input{color:#2f2f2f!important}.comments-container .search:has(input:valid):not(:focus-within):hover{background-color:#bed0f9!important}.comments-container .search-dark{background-color:#424242}.comments-container .search-dark:focus-within{background-color:#dadada!important}.comments-container .search-dark:has(input:valid){color:#e9effd!important;background-color:#0b49d1!important}.comments-container .search-dark:has(input:valid):not(:focus-within){background-color:#3b73ed33!important}.comments-container .search-dark:has(input:valid):not(:focus-within) input{color:#fff!important}.comments-container .search-dark:has(input:valid):not(:focus-within):hover{background-color:#3b73ed66!important}.comments-container .comments-wrapper{overflow-y:scroll}.comments-container .comments-wrapper .comment{word-break:break-word}.comments-container .comments-wrapper .comment .action-icon{display:none}.comments-container .comments-wrapper .comment:hover .action-icon{display:flex}.comments-container .comment-content{white-space:nowrap;overflow-x:hidden;text-overflow:ellipsis;word-break:break-word}.comments-container textarea{border:none;overflow:auto;outline:none;field-sizing:content;box-shadow:none;resize:none;-webkit-box-shadow:none;-moz-box-shadow:none}.icon-hover:hover{transition:all .3s ease-in-out;height:22px!important;width:22px!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: HttpClientModule }, { kind: "component", type:
165
166
  // Components
166
167
  CaProfileImageComponent, selector: "app-ca-profile-image", inputs: ["indx", "avatarImg", "avatarColor", "textShortName", "name", "isRound", "size", "height", "fontSize", "isHoverEffect"] }, { kind: "component", type: CaAppTooltipV2Component, selector: "mainCaTooltip, [mainCaTooltip]", inputs: ["mainCaTooltip", "position", "openTooltipDelay", "tooltipBackground", "tooltipColor", "tooltipTextAlign", "tooltipMarginTop", "disableTooltip"] }, { kind: "ngmodule", type:
167
168
  // Third-party modules
@@ -197,6 +198,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
197
198
  type: Input
198
199
  }], isSearchDisplayed: [{
199
200
  type: Input
201
+ }], isDriverTab: [{
202
+ type: Input
200
203
  }], isModal: [{
201
204
  type: Input
202
205
  }], commentCount: [{
@@ -218,4 +221,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
218
221
  }], onCommentSearchCancel: [{
219
222
  type: Output
220
223
  }] } });
221
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtY29tbWVudHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtY29tbWVudHMvY2EtY29tbWVudHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtY29tbWVudHMvY2EtY29tbWVudHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRSxxQkFBcUI7QUFDckIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXhELGFBQWE7QUFDYixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUVyRyxRQUFRO0FBQ1IsT0FBTyxFQUNILFNBQVMsRUFDVCxrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLFlBQVksR0FDZixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUNsQixzQkFB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QVM7Z0JBRVQsUUFBUTtnQkFDUixrQkFBa0Isc0RBQ2xCLGdCQUFnQixnREFDaEIsU0FBUyx5Q0FDVCxtQkFBbUIsbURBQ25CLGtCQUFrQixrREFDbEIsc0JBQXNCLHNEQUN0QiwyQkFBMkIsMkRBQzNCLFlBQVksbUNBekJKLENBQUMscUJBQXFCLENBQUM7OzRGQTRCMUIsbUJBQW1CO2tCQWhDL0IsU0FBUzsrQkFDSSxhQUFhLGNBR1gsQ0FBQyxxQkFBcUIsQ0FBQyxjQUN2QixJQUFJLFdBQ1A7d0JBQ0wsWUFBWTt3QkFDWixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3dCQUVoQixhQUFhO3dCQUNiLHVCQUF1Qjt3QkFDdkIsMkJBQTJCO3dCQUMzQix1QkFBdUI7d0JBRXZCLHNCQUFzQjt3QkFDdEIsb0JBQW9CO3dCQUNwQixTQUFTO3dCQUVULFFBQVE7d0JBQ1Isa0JBQWtCO3dCQUNsQixnQkFBZ0I7d0JBQ2hCLFNBQVM7d0JBQ1QsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLHNCQUFzQjt3QkFDdEIsMkJBQTJCO3dCQUMzQixZQUFZO3FCQUNmO3dEQUdRLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNPLFFBQVE7c0JBQXBCLEtBQUs7Z0JBR08sV0FBVztzQkFBdkIsS0FBSztnQkFHTyxhQUFhO3NCQUF6QixLQUFLO2dCQUlJLGVBQWU7c0JBQXhCLE1BQU07Z0JBRUcsY0FBYztzQkFBdkIsTUFBTTtnQkFFRyxlQUFlO3NCQUF4QixNQUFNO2dCQUVHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0cscUJBQXFCO3NCQUE5QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEh0dHBDbGllbnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vLyB0aGlyZC1wYXJ5IG1vZHVsZXNcbmltcG9ydCB7IE5nYk1vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IEFuZ3VsYXJTdmdJY29uTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1zdmctaWNvbic7XG5cbi8vIGNvbXBvbmVudHNcbmltcG9ydCB7IENhUHJvZmlsZUltYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vY2EtcHJvZmlsZS1pbWFnZS9jYS1wcm9maWxlLWltYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUFwcFRvb2x0aXBWMkNvbXBvbmVudCB9IGZyb20gJy4uL2NhLWFwcC10b29sdGlwLXYyL2NhLWFwcC10b29sdGlwLXYyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUF1dG9jbG9zZVBvcG92ZXJDb21wb25lbnQgfSBmcm9tICcuLi9jYS1hdXRvY2xvc2UtcG9wb3Zlci9jYS1hdXRvY2xvc2UtcG9wb3Zlci5jb21wb25lbnQnO1xuXG4vLyBwaXBlc1xuaW1wb3J0IHtcbiAgICBDYVN2Z1BpcGUsXG4gICAgRGF0ZUZyb21TdHJpbmdQaXBlLFxuICAgIE5hbWVJbml0aWFsc1BpcGUsXG4gICAgU2FmZUh0bWxQaXBlLFxufSBmcm9tICcuLi8uLi9waXBlcyc7XG5pbXBvcnQge1xuICAgIENhSXNDdXJyZW50VXNlclBpcGUsXG4gICAgQ2FTb3J0Q29tbWVudHNQaXBlLFxuICAgIENhSGlnaGxpZ2h0Q29tbWVudFBpcGUsXG4gICAgQ2FIaWdobGlnaHRTaW5nbGVTdHJpbmdQaXBlLFxufSBmcm9tICcuL3BpcGVzJztcblxuLy8gZW51bXNcbmltcG9ydCB7XG4gICAgZUFuaW1hdGlvblN0YXRlLFxuICAgIGVTaGFyZWRTdHJpbmcsXG4gICAgZURhdGVUaW1lRm9ybWF0cyxcbiAgICBlR2VuZXJhbEFjdGlvbnMsXG4gICAgZUNvbG9yLFxuICAgIGVQb3NpdGlvbixcbiAgICBlU3RyaW5nUGxhY2Vob2xkZXIsXG59IGZyb20gJy4uLy4uL2VudW1zJztcblxuLy8gbW9kZWxzXG5pbXBvcnQgeyBJQ29tbWVudCB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IElDb21wYW55VXNlciwgSVVzZXIgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcblxuLy8gYXNzZXRzXG5pbXBvcnQgeyB0b2dnbGVVcERvd25BbmltYXRpb24gfSBmcm9tICcuLi8uLi91dGlscy9hbmltYXRpb25zJztcblxuLy8gaGVscGVyc1xuaW1wb3J0IHsgVXNlckhlbHBlciB9IGZyb20gJy4uLy4uL3V0aWxzL2hlbHBlcnMnO1xuXG4vLyBzdmcgcm91dGVcbmltcG9ydCB7IFNoYXJlZFN2Z1JvdXRlcyB9IGZyb20gJy4uLy4uL3V0aWxzL3N2Zy1yb3V0ZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2NhLWNvbW1lbnRzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2EtY29tbWVudHMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9jYS1jb21tZW50cy5jb21wb25lbnQuc2NzcycsXG4gICAgYW5pbWF0aW9uczogW3RvZ2dsZVVwRG93bkFuaW1hdGlvbl0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIEh0dHBDbGllbnRNb2R1bGUsXG5cbiAgICAgICAgLy8gQ29tcG9uZW50c1xuICAgICAgICBDYVByb2ZpbGVJbWFnZUNvbXBvbmVudCxcbiAgICAgICAgQ2FBdXRvY2xvc2VQb3BvdmVyQ29tcG9uZW50LFxuICAgICAgICBDYUFwcFRvb2x0aXBWMkNvbXBvbmVudCxcblxuICAgICAgICAvLyBUaGlyZC1wYXJ0eSBtb2R1bGVzXG4gICAgICAgIEFuZ3VsYXJTdmdJY29uTW9kdWxlLFxuICAgICAgICBOZ2JNb2R1bGUsXG5cbiAgICAgICAgLy8gUGlwZXNcbiAgICAgICAgRGF0ZUZyb21TdHJpbmdQaXBlLFxuICAgICAgICBOYW1lSW5pdGlhbHNQaXBlLFxuICAgICAgICBDYVN2Z1BpcGUsXG4gICAgICAgIENhSXNDdXJyZW50VXNlclBpcGUsXG4gICAgICAgIENhU29ydENvbW1lbnRzUGlwZSxcbiAgICAgICAgQ2FIaWdobGlnaHRDb21tZW50UGlwZSxcbiAgICAgICAgQ2FIaWdobGlnaHRTaW5nbGVTdHJpbmdQaXBlLFxuICAgICAgICBTYWZlSHRtbFBpcGUsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FDb21tZW50c0NvbXBvbmVudCB7XG4gICAgQElucHV0KCkgaXNEYXJrbW9kZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGlzU2VhcmNoRGlzcGxheWVkOiBib29sZWFuID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBpc01vZGFsOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgY29tbWVudENvdW50OiBudW1iZXIgPSAwO1xuICAgIEBJbnB1dCgpIHNldCBjb21tZW50cyh2YWx1ZTogSUNvbW1lbnRbXSkge1xuICAgICAgICB0aGlzLl9jb21tZW50cyA9IFsuLi52YWx1ZV07XG4gICAgfVxuICAgIEBJbnB1dCgpIHNldCBjdXJyZW50VXNlcih2YWx1ZTogSVVzZXIpIHtcbiAgICAgICAgdGhpcy5fY3VycmVudFVzZXIgPSB2YWx1ZSA/PyBVc2VySGVscGVyLmdldFVzZXJGcm9tTG9jYWxTdG9yYWdlKCk7XG4gICAgfVxuICAgIEBJbnB1dCgpIHNldCBoYXNOZXdDb21tZW50KHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh2YWx1ZSkgdGhpcy5vbkFkZE5ld0NvbW1lbnQoKTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KCkgb25Db21tZW50RGVsZXRlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICAgIEBPdXRwdXQoKSBvbkNvbW1lbnRBZGRlZDogRXZlbnRFbWl0dGVyPElDb21tZW50PiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8SUNvbW1lbnQ+KCk7XG4gICAgQE91dHB1dCgpIG9uQ29tbWVudEVkaXRlZDogRXZlbnRFbWl0dGVyPElDb21tZW50PiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8SUNvbW1lbnQ+KCk7XG4gICAgQE91dHB1dCgpIG9uQ29tbWVudENhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgb25Db21tZW50U2VhcmNoQ2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgcHVibGljIF9jb21tZW50cyE6IElDb21tZW50W107XG4gICAgcHVibGljIF9jdXJyZW50VXNlciE6IElVc2VyO1xuXG4gICAgLy8gZW51bXNcbiAgICBwdWJsaWMgZVNoYXJlZFN0cmluZyA9IGVTaGFyZWRTdHJpbmc7XG4gICAgcHVibGljIGVBbmltYXRpb25TdGF0ZSA9IGVBbmltYXRpb25TdGF0ZTtcbiAgICBwdWJsaWMgZURhdGVUaW1lRm9ybWF0cyA9IGVEYXRlVGltZUZvcm1hdHM7XG4gICAgcHVibGljIGVHZW5lcmFsQWN0aW9ucyA9IGVHZW5lcmFsQWN0aW9ucztcbiAgICBwdWJsaWMgZUNvbG9yID0gZUNvbG9yO1xuICAgIHB1YmxpYyBlUG9zaXRpb24gPSBlUG9zaXRpb247XG4gICAgcHVibGljIGVTdHJpbmdQbGFjZWhvbGRlciA9IGVTdHJpbmdQbGFjZWhvbGRlcjtcblxuICAgIHB1YmxpYyBzb3J0RGlyZWN0aW9uOiBlU2hhcmVkU3RyaW5nLkFTQyB8IGVTaGFyZWRTdHJpbmcuRFNDID1cbiAgICAgICAgZVNoYXJlZFN0cmluZy5EU0M7XG5cbiAgICBwdWJsaWMgY29tbWVudEV4cGFuZGVkITogSUNvbW1lbnQgfCBudWxsO1xuICAgIHB1YmxpYyBjb21tZW50QWRkT3JFZGl0ITogSUNvbW1lbnQgfCBudWxsO1xuICAgIHB1YmxpYyBjb21tZW50QWN0aW9uOiBlR2VuZXJhbEFjdGlvbnMuQUREIHwgZUdlbmVyYWxBY3Rpb25zLkVESVQgfCBudWxsID1cbiAgICAgICAgbnVsbDtcblxuICAgIC8vIGZvcm1cbiAgICBwdWJsaWMgY29tbWVudENvbnRlbnRGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuICAgIHB1YmxpYyBzZWFyY2hDb21tZW50Rm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcblxuICAgIC8vIHN2ZyByb3V0ZXNcbiAgICBwdWJsaWMgc2hhcmVkU3ZnUm91dGVzID0gU2hhcmVkU3ZnUm91dGVzO1xuXG4gICAgY29uc3RydWN0b3IoKSB7fVxuXG4gICAgcHVibGljIG9uVG9nZ2xlU29ydCgpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLnNvcnREaXJlY3Rpb24pIHtcbiAgICAgICAgICAgIGNhc2UgZVNoYXJlZFN0cmluZy5BU0M6XG4gICAgICAgICAgICAgICAgdGhpcy5zb3J0RGlyZWN0aW9uID0gZVNoYXJlZFN0cmluZy5EU0M7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIGVTaGFyZWRTdHJpbmcuRFNDOlxuICAgICAgICAgICAgICAgIHRoaXMuc29ydERpcmVjdGlvbiA9IGVTaGFyZWRTdHJpbmcuQVNDO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aGlzLnNvcnREaXJlY3Rpb24gPSBlU2hhcmVkU3RyaW5nLkRTQztcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25EZWxldGVDb21tZW50KGNvbW1lbnQ6IElDb21tZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Db21tZW50RGVsZXRlLmVtaXQoY29tbWVudC5pZCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRXhwYW5kQ29tbWVudChjb21tZW50OiBJQ29tbWVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jb21tZW50RXhwYW5kZWQ/LmlkID09PSBjb21tZW50Py5pZCkge1xuICAgICAgICAgICAgdGhpcy5jb21tZW50RXhwYW5kZWQgPSBudWxsO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29tbWVudEV4cGFuZGVkID0gY29tbWVudDtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25BZGROZXdDb21tZW50KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBoYXNOZXdDb21tZW50OiBib29sZWFuID0gdGhpcy5fY29tbWVudHMuc29tZShcbiAgICAgICAgICAgIChjb21tZW50OiBJQ29tbWVudCkgPT4gY29tbWVudC5pc05ld1xuICAgICAgICApO1xuXG4gICAgICAgIGlmIChoYXNOZXdDb21tZW50KSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgY29tcGFueVVzZXI6IElDb21wYW55VXNlciA9IHtcbiAgICAgICAgICAgIGlkOiB0aGlzLl9jdXJyZW50VXNlcj8uY29tcGFueVVzZXJJZCEsXG4gICAgICAgICAgICBmdWxsTmFtZTogYCR7dGhpcy5fY3VycmVudFVzZXI/LmZpcnN0TmFtZX0gJHt0aGlzLl9jdXJyZW50VXNlcj8ubGFzdE5hbWV9YCxcbiAgICAgICAgICAgIGF2YXRhckZpbGU6IHtcbiAgICAgICAgICAgICAgICBmaWxlSWQ6IHRoaXMuX2N1cnJlbnRVc2VyPy5hdmF0YXJGaWxlPy5maWxlSWQgPz8gMCxcbiAgICAgICAgICAgICAgICBmaWxlTmFtZTpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudFVzZXI/LmF2YXRhckZpbGU/LmZpbGVOYW1lIHx8XG4gICAgICAgICAgICAgICAgICAgIGAke3RoaXMuX2N1cnJlbnRVc2VyPy5maXJzdE5hbWV9ICR7dGhpcy5fY3VycmVudFVzZXI/Lmxhc3ROYW1lfWAsXG4gICAgICAgICAgICAgICAgdXJsOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50VXNlcj8uYXZhdGFyRmlsZT8udXJsID8/XG4gICAgICAgICAgICAgICAgICAgIGVTdHJpbmdQbGFjZWhvbGRlcj8uRU1QVFksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IG5ld0NvbW1lbnQ6IElDb21tZW50ID0ge1xuICAgICAgICAgICAgaWQ6IHRoaXMuX2NvbW1lbnRzPy5sZW5ndGggKyAxLFxuICAgICAgICAgICAgY29tbWVudENvbnRlbnQ6IGVTdHJpbmdQbGFjZWhvbGRlci5FTVBUWSxcbiAgICAgICAgICAgIGNvbXBhbnlVc2VyLFxuICAgICAgICAgICAgaXNEcml2ZXI6IGZhbHNlLFxuICAgICAgICAgICAgaXNFZGl0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgaXNOZXc6IHRydWUsXG4gICAgICAgICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmNvbW1lbnRBZGRPckVkaXQgPSB7IC4uLm5ld0NvbW1lbnQgfTtcblxuICAgICAgICB0aGlzLl9jb21tZW50cyA9IFt7IC4uLm5ld0NvbW1lbnQgfSwgLi4udGhpcy5fY29tbWVudHNdO1xuICAgICAgICB0aGlzLmNvbW1lbnRBY3Rpb24gPSBlR2VuZXJhbEFjdGlvbnMuQUREO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkVkaXRDb21tZW50KGNvbW1lbnQ6IElDb21tZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29tbWVudEFkZE9yRWRpdCA9IHsgLi4uY29tbWVudCB9O1xuICAgICAgICB0aGlzLmNvbW1lbnRDb250ZW50Rm9ybUNvbnRyb2wucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgIHRoaXMuY29tbWVudEFkZE9yRWRpdC5jb21tZW50Q29udGVudFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNvbW1lbnRBY3Rpb24gPSBlR2VuZXJhbEFjdGlvbnMuRURJVDtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXJDb21tZW50QWRkT3JFZGl0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbW1lbnRBZGRPckVkaXQgPSBudWxsO1xuXG4gICAgICAgIGlmICh0aGlzLmNvbW1lbnRBY3Rpb24gPT09IGVHZW5lcmFsQWN0aW9ucy5BREQpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbW1lbnRzID0gWy4uLnRoaXMuX2NvbW1lbnRzLnNsaWNlKDEpXTtcbiAgICAgICAgICAgIHRoaXMub25Db21tZW50Q2FuY2VsLmVtaXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsZWFyU2VhcmNoKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlYXJjaENvbW1lbnRGb3JtQ29udHJvbC5yZXNldCgpO1xuXG4gICAgICAgIHRoaXMub25Db21tZW50U2VhcmNoQ2FuY2VsLmVtaXQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29uZmlybUNvbW1lbnQoY29tbWVudDogSUNvbW1lbnQpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLmNvbW1lbnRBY3Rpb24pIHtcbiAgICAgICAgICAgIGNhc2UgZUdlbmVyYWxBY3Rpb25zLkVESVQ6XG4gICAgICAgICAgICAgICAgY29uc3QgY29tbWVudEZvdW5kOiBJQ29tbWVudCB8IHVuZGVmaW5lZCA9IHRoaXMuX2NvbW1lbnRzLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgIChpdGVtOiBJQ29tbWVudCkgPT4gY29tbWVudC5pZCA9PT0gaXRlbS5pZFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKCFjb21tZW50Rm91bmQpIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZENvbW1lbnQ6IElDb21tZW50ID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5jb21tZW50LFxuICAgICAgICAgICAgICAgICAgICBjb21tZW50Q29udGVudDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbWVudENvbnRlbnRGb3JtQ29udHJvbC52YWx1ZSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudEZvdW5kLmNvbW1lbnRDb250ZW50LFxuICAgICAgICAgICAgICAgICAgICBpc05ldzogZmFsc2UsXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHRoaXMub25Db21tZW50RWRpdGVkLmVtaXQodXBkYXRlZENvbW1lbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBlR2VuZXJhbEFjdGlvbnMuQUREOlxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5jb21tZW50Q29udGVudEZvcm1Db250cm9sLnZhbHVlKSBicmVhaztcblxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0NvbW1lbnQ6IElDb21tZW50ID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5jb21tZW50LFxuICAgICAgICAgICAgICAgICAgICBjb21tZW50Q29udGVudDogdGhpcy5jb21tZW50Q29udGVudEZvcm1Db250cm9sLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBpc05ldzogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgdGhpcy5vbkNvbW1lbnRBZGRlZC5lbWl0KG5ld0NvbW1lbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1lbnRBY3Rpb24gPSBudWxsO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2xlYXJDb21tZW50QWRkT3JFZGl0KCk7XG4gICAgICAgIHRoaXMuY29tbWVudENvbnRlbnRGb3JtQ29udHJvbC5yZXNldCgpO1xuICAgIH1cbn1cbiIsIkBsZXQgc29ydGVkQ29tbWVudHMgPSBfY29tbWVudHMgfCBjYVNvcnRDb21tZW50czogc29ydERpcmVjdGlvbiA6IGlzRGFya21vZGU7XG5AbGV0IHNlYXJjaFRlcm0gPSBzZWFyY2hDb21tZW50Rm9ybUNvbnRyb2wudmFsdWU7XG5AbGV0IHNlYXJjaGVkQ29tbWVudHMgPVxuICAgIHNvcnRlZENvbW1lbnRzIHwgY2FIaWdobGlnaHRDb21tZW50OiBzZWFyY2hUZXJtIDogaXNEYXJrbW9kZTtcbkBsZXQgc2VhcmNoQ29udGVudENvdW50ID0gc2VhcmNoZWRDb21tZW50cz8ubGVuZ3RoO1xuQGxldCBoYXNTZWFyY2hDb250ZW50ID0gISFzZWFyY2hDb250ZW50Q291bnQ7XG5cbkBpZiAoaXNEYXJrbW9kZSkge1xuICAgIEBsZXQgaXNQb3BvdmVyT3BlbiA9IHBvcG92ZXI/LmlzT3BlbigpO1xuXG4gICAgPGRpdlxuICAgICAgICAjcG9wb3Zlcj1cIm5nYlBvcG92ZXJcIlxuICAgICAgICBjbGFzcz1cInctMjYgaC0yNiBkLWZsZXggcGxhY2UtaXRlbXMtY2VudGVyIGMtcG9pbnRlciBici0yIG0tdC0xXCJcbiAgICAgICAgYXV0b0Nsb3NlPVwib3V0c2lkZVwiXG4gICAgICAgIFtuZ2JQb3BvdmVyXT1cImRyb3Bkb3duUG9wb3ZlclwiXG4gICAgICAgIFtwb3BvdmVyQ2xhc3NdPVwiJ3BvcG92ZXItbWFpbidcIlxuICAgICAgICBbcGxhY2VtZW50XT1cImVQb3NpdGlvbi5CT1RUT01fUklHSFRcIlxuICAgICAgICBbY29udGFpbmVyXT1cIidib2R5J1wiXG4gICAgICAgIFtuZ0NsYXNzXT1cIlxuICAgICAgICAgICAgaXNQb3BvdmVyT3BlblxuICAgICAgICAgICAgICAgID8gJ2FjdGl2ZSBiYWNrZ3JvdW5kLWJsYWNrJ1xuICAgICAgICAgICAgICAgIDogJ2JhY2tncm91bmQtaG92ZXItZGFyay0yIHN2Zy1ob3Zlci1ibGFjaydcbiAgICAgICAgXCJcbiAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4IHBsYWNlLWl0ZW1zLWNlbnRlciBtLWF1dG9cIlxuICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgW3Rvb2x0aXBCYWNrZ3JvdW5kXT1cImVDb2xvci5CTEFDS1wiXG4gICAgICAgICAgICBbdG9vbHRpcENvbG9yXT1cImVDb2xvci5XSElURVwiXG4gICAgICAgICAgICBbbWFpbkNhVG9vbHRpcF09XCJlU2hhcmVkU3RyaW5nLkNPTU1FTlRcIlxuICAgICAgICAgICAgW3Bvc2l0aW9uXT1cImVQb3NpdGlvbi5CT1RUT01cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY29tbWVudHMtY291bnQgei0wIHBvc2l0aW9uLWFic29sdXRlIHRleHQtc2l6ZS05IHRhLWZvbnQtc2VtaS1ib2xkXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJcbiAgICAgICAgICAgICAgICAgICAgaXNQb3BvdmVyT3BlbiA/ICd0ZXh0LWNvbG9yLWJsYWNrLTInIDogJ3RleHQtY29sb3Itd2hpdGUnXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBjb21tZW50Q291bnQgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzdmctc2l6ZS0xOFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaXNQb3BvdmVyT3BlbiA/ICdzdmctZmlsbC13aGl0ZS00JyA6ICdzdmctZmlsbC1ncmV5J1wiXG4gICAgICAgICAgICAgICAgW3NyY109XCJzaGFyZWRTdmdSb3V0ZXMuQ09NTUVOVF9JQ09OXCJcbiAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbn0gQGVsc2Uge1xuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb21tZW50c1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG59XG5cbjxuZy10ZW1wbGF0ZSAjY29tbWVudHNUZW1wbGF0ZT5cbiAgICBAbGV0IHRvb2x0aXBCYWNrZ3JvdW5kID0gaXNEYXJrbW9kZSA/IGVDb2xvci5MSUdIVF9HUkVZIDogZUNvbG9yLkJMQUNLO1xuICAgIEBsZXQgdG9vbHRpcENvbG9yID0gaXNEYXJrbW9kZSA/IGVDb2xvci5EQVJLX0dSRVkgOiBlQ29sb3IuV0hJVEU7XG5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiY29tbWVudHMtY29udGFpbmVyIGJyLTNcIlxuICAgICAgICBbY2xhc3MucGFkZGluZy00XT1cIiFpc01vZGFsXCJcbiAgICAgICAgW2NsYXNzLmJhY2tncm91bmQtYmxhY2stMl09XCJpc0Rhcmttb2RlXCJcbiAgICAgICAgW3N0eWxlXT1cIntcbiAgICAgICAgICAgIHdpZHRoOiBpc0Rhcmttb2RlID8gJzI2MHB4JyA6ICcxMDAlJyxcbiAgICAgICAgICAgICdtYXgtaGVpZ2h0JzogaXNEYXJrbW9kZSA/ICczMDZweCcgOiAnMTAwJScsXG4gICAgICAgIH1cIlxuICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtblwiPlxuICAgICAgICAgICAgQGxldCBpc0hpZGRlblNvcnQgPSAoIWlzRGFya21vZGUgJiYgIV9jb21tZW50cy5sZW5ndGgpIHx8IGlzTW9kYWw7XG5cbiAgICAgICAgICAgIEBpZiAoIWlzSGlkZGVuU29ydCkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBbbmdTdHlsZV09XCJ7IG9yZGVyOiBpc0Rhcmttb2RlID8gMCA6IDIgfVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDBcIiBbY2xhc3MuaC0zMl09XCIhaXNEYXJrbW9kZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLm1hcmdpbi10LTRdPVwiIWlzRGFya21vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggcGxhY2UtaXRlbXMtY2VudGVyIGNhLWZvbnQtZXh0cmEtYm9sZCBmb250LXNpemUtMTEgbWFyZ2luLXgtNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbGV0IHRpdGxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpc0Rhcmttb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBlU2hhcmVkU3RyaW5nLkNPTU1FTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGVHZW5lcmFsQWN0aW9ucy5TT1JUX0JZXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHwgdXBwZXJjYXNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbGV0IHJlc3VsdFRpdGxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaENvbnRlbnRDb3VudCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVN0cmluZ1BsYWNlaG9sZGVyLldISVRFU1BBQ0UgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVTaGFyZWRTdHJpbmcuUkVTVUxUUyB8IHVwcGVyY2FzZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXJnaW4teS0yIG1hcmdpbi1yLTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRGFya21vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAndGV4dC1jb2xvci13aGl0ZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAndGV4dC1jb2xvci1ncmV5J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaFRlcm0gJiYgIWlzRGFya21vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyByZXN1bHRUaXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpc0Rhcmttb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG1pbi13LTE4IGgtMTggdGV4dC1jb2xvci13aGl0ZSBici02MCBiYWNrZ3JvdW5kLWJsYWNrIHBhZGRpbmcteC01XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgY29tbWVudENvdW50IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoX2NvbW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbGV0IHNvcnRCeUNvbG9yQ2xhc3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNEYXJrbW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RleHQtY29sb3Itd2hpdGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAndGV4dC1jb2xvci1ibGFjayc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggcGxhY2UtaXRlbXMtY2VudGVyIHBhZGRpbmctbC02IGJyLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRGFya21vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnYmFja2dyb3VuZC1ob3Zlci1ibGFjaydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnYmFja2dyb3VuZC1ob3Zlci1idzInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3NvcnRCeVRvb2x0aXA9XCJuZ2JUb29sdGlwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwQmFja2dyb3VuZF09XCJ0b29sdGlwQmFja2dyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcENvbG9yXT1cInRvb2x0aXBDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWFpbkNhVG9vbHRpcF09XCJlR2VuZXJhbEFjdGlvbnMuU09SVF9CWVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcG9zaXRpb25dPVwiZVBvc2l0aW9uLkJPVFRPTVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXNpemUtMTQgY2EtZm9udC1tZWRpdW0gbWFyZ2luLXItNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydEJ5Q29sb3JDbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZVNoYXJlZFN0cmluZy5EQVRFIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgaXNEZXNjZW5kaW5nID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0RGlyZWN0aW9uID09PSBlU2hhcmVkU3RyaW5nLkRTQztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgYW5pbWF0aW9uU3RhdGVTb3J0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0RGlyZWN0aW9uID09PSBlU2hhcmVkU3RyaW5nLkRTQ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGVBbmltYXRpb25TdGF0ZS5ERUZBVUxUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZUFuaW1hdGlvblN0YXRlLlJPVEFURUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbGV0IHNvcnRUb29sdGlwVGV4dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNEZXNjZW5kaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZVNoYXJlZFN0cmluZy5ERVNDRU5ESU5HXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZVNoYXJlZFN0cmluZy5BU0NFTkRJTkc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImgtMTggdy0xOCBkLWZsZXggcGxhY2UtaXRlbXMtY2VudGVyIGJhY2tncm91bmQtaG92ZXItYmx1ZS0yMSBzdmctaG92ZXItYmx1ZS0xNyBici0xIGMtcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwQmFja2dyb3VuZF09XCJ0b29sdGlwQmFja2dyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBDb2xvcl09XCJ0b29sdGlwQ29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYWluQ2FUb29sdGlwXT1cInNvcnRUb29sdGlwVGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Bvc2l0aW9uXT1cImVQb3NpdGlvbi5CT1RUT01cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzaG93bik9XCJzb3J0QnlUb29sdGlwPy5jbG9zZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Ub2dnbGVTb3J0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBzdmctc2l6ZS0xNCBzdmctZmlsbC1ibHVlLTEzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcnJvd19zb3J0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FTdmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBlU2hhcmVkU3RyaW5nLkNPTU1PTl9MT1dFUkNBU0VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnN2Zy1maWxsLWJsdWUtMTNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50Q291bnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0Byb3RhdGVkU3RhdGVdPVwiYW5pbWF0aW9uU3RhdGVTb3J0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghaXNEYXJrbW9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LTEwMCBoLTEgYmFja2dyb3VuZC1idy05IG1hcmdpbi0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInsgb3JkZXI6IDEgfVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICBAaWYgKGlzU2VhcmNoRGlzcGxheWVkICYmIF9jb21tZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VhcmNoIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LXN0YXJ0IGJhY2tncm91bmQtYmxhY2sgYmFja2dyb3VuZC1ob3Zlci1ncmV5LTIgbWFyZ2luLXktNCBici0yXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlYXJjaC1kYXJrXT1cImlzRGFya21vZGVcIlxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7IG9yZGVyOiBpc0Rhcmttb2RlID8gMiA6IDAgfVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtYXJnaW4tNFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IHN2Zy1zaXplLTE0IHN2Zy1maWxsLWxpZ2h0LWdyZXktMiBjLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWFyY2gnIHwgY2FTdmc6IGVTaGFyZWRTdHJpbmcuQ09NTU9OX0xPV0VSQ0FTRVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGl2aWRlciB3LTEgYmFja2dyb3VuZC1saWdodC1ncmF5LTIgbWFyZ2luLXktMyBtYXJnaW4tci00XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgc2VhcmNoUGxhY2Vob2xkZXIgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRGFya21vZGUgPyAnRmluZCBUaXRsZScgOiAnRmluZCBDb21tZW50JztcblxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LTEwMCBiYWNrZ3JvdW5kLXRyYW5zcGFyZW50IHRleHQtc2l6ZS0xMSBtYXJnaW4tci0yIHBhZGRpbmctMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNlYXJjaFBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5sZW5ndGg9XCIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJzZWFyY2hDb21tZW50Rm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgQGxldCBpY29uQ29sb3IgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRGFya21vZGUgPyAnc3ZnLWZpbGwtYnctOScgOiAnc3ZnLWZpbGwtYmxhY2stMic7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYW5jZWwtc2VhcmNoIGgtMTQgdy0xNCBkLWZsZXggcGxhY2UtaXRlbXMtY2VudGVyIGJyLTEgbWFyZ2luLTQgYy1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uQ2xlYXJTZWFyY2goJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IHN2Zy1zaXplLTdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiW2ljb25Db2xvcl1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ljX3gnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYVN2ZzogZVNoYXJlZFN0cmluZy5DT01NT05fTE9XRVJDQVNFXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gdGV4dC1jb2xvci1ibHVlLTE5IHRleHQtaG92ZXItd2hpdGUgIC0tPlxuICAgICAgICBAaWYgKGlzRGFya21vZGUpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBoLTEgYmFja2dyb3VuZC1ibGFjayBici0xIG1hcmdpbi10LTRcIj48L2Rpdj5cblxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBiYWNrZ3JvdW5kLWhvdmVyLWJsdWUtMjEgc3ZnLWhvdmVyLWJsdWUtMTcgYy1wb2ludGVyIGJyLTIgbWFyZ2luLXQtNFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWRkTmV3Q29tbWVudCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtc2l6ZS0xMSB0ZXh0LWNvbG9yLXdoaXRlIGNhLWZvbnQtYm9sZCBwYWRkaW5nLXktNCBwYWRkaW5nLXgtNCB0ZXh0LXVwcGVyY2FzZVwiXG4gICAgICAgICAgICAgICAgICAgID5OZXcgQ29tbWVudFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoLTE0IHctMTQgZC1mbGV4IHBsYWNlLWl0ZW1zLWNlbnRlciBtYXJnaW4tNiBzdmctZmlsbC1ibHVlLTEzXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggc3ZnLXNpemUtMTQgYy1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ljX3BsdXMnIHwgY2FTdmc6IGVTaGFyZWRTdHJpbmcuQ09NTU9OX0xPV0VSQ0FTRVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoX2NvbW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY29tbWVudHMtd3JhcHBlciBjLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgIFtzdHlsZV09XCJ7XG4gICAgICAgICAgICAgICAgICAgICdtYXgtaGVpZ2h0JzogaXNEYXJrbW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnMjEwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGlzTW9kYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnMTQ4cHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogJzEwMCUnLFxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEBpZiAoaGFzU2VhcmNoQ29udGVudCkge1xuICAgICAgICAgICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgb2Ygc2VhcmNoZWRDb21tZW50cztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmRleCA9ICRpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrIGluZGV4XG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGxldCBpc0NvbW1lbnRFeHBhbmRlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudD8uaWQgPT09IGNvbW1lbnRFeHBhbmRlZD8uaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBAbGV0IGlzRWRpdE1vZGUgPSBjb21tZW50Py5pZCA9PT0gY29tbWVudEFkZE9yRWRpdD8uaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBAbGV0IGNvbXBhbnlVc2VyID0gY29tbWVudD8uY29tcGFueVVzZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICBAbGV0IGlzQ3VycmVudFVzZXIgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhbnlVc2VyIHwgY2FJc0N1cnJlbnRVc2VyOiBfY3VycmVudFVzZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb21tZW50IHBhZGRpbmcteC00IHBhZGRpbmcteS0yIG1hcmdpbi10LTIgYnItMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtYmxhY2stMic6IGlzRGFya21vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWhvdmVyLWJsYWNrJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpc0VkaXRNb2RlICYmIGlzRGFya21vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWJ3LTknOiBpc0VkaXRNb2RlICYmIGlzRGFya21vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWhvdmVyLWJ3Mic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaXNFZGl0TW9kZSAmJiAhaXNEYXJrbW9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtYmxhY2stMyc6IGlzRWRpdE1vZGUgJiYgIWlzRGFya21vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBwYWRkaW5nLXQtMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFRPRE8gQ2hhbmdlIGNvbG9ycyBvciBzb21ldGhpbmcgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGxldCBjb21wYW55VXNlckZ1bGxuYW1lID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbXBhbnlVc2VyPy5mdWxsTmFtZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGFueVVzZXI/Lm5hbWUpID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVTdHJpbmdQbGFjZWhvbGRlci5FTVBUWTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgbmFtZUluaXRpYWxzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGFueVVzZXJGdWxsbmFtZSB8IG5hbWVJbml0aWFscztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLXByb2ZpbGUtaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F2YXRhckNvbG9yXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICcjREZDMkY5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnIzlFNDdFQzY2JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdmF0YXJJbWddPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wYW55VXNlcj8uYXZhdGFyRmlsZT8udXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0U2hvcnROYW1lXT1cIm5hbWVJbml0aWFsc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc1JvdW5kXT1cIiFjb21tZW50LmlzRHJpdmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NpemVdPVwiMjJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1wcm9maWxlLWltYWdlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXJnaW4teC00IG1hcmdpbi15LTIgdGV4dC1zaXplLTExXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2EtZm9udC1zZW1pLWJvbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWNvbG9yLWJsYWNrJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRWRpdE1vZGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRGFya21vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWNvbG9yLXdoaXRlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICghaXNFZGl0TW9kZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRGFya21vZGUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXNFZGl0TW9kZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpc0Rhcmttb2RlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIdG1sXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wYW55VXNlckZ1bGxuYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhSGlnaGxpZ2h0U2luZ2xlU3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzZWFyY2hUZXJtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNhZmVIdG1sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wYW55VXNlckZ1bGxuYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgeW91T3JNZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNEYXJrbW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICcoTWUpJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcoWW91KSc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbGV0IG9yYW5nZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNEYXJrbW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICd0ZXh0LWNvbG9yLW9yYW5nZS0zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICd0ZXh0LWNvbG9yLW9yYW5nZS0yJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDdXJyZW50VXNlciAmJiAhaXNFZGl0TW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYS1mb250LWJvbGQgbWFyZ2luLXgtNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJvcmFuZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgeW91T3JNZSB9fTwvc3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1zaXplLTExIHRleHQtY29sb3ItZ3JleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXNFZGl0TW9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY29tbWVudD8uaXNOZXcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3IENvbW1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWRpdCBDb21tZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudC5jcmVhdGVkQXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGF0ZUZyb21TdHJpbmdQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBlRGF0ZVRpbWVGb3JtYXRzLkRBVEVfVElNRVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY29tbWVudD8uaXNFZGl0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGxldCBlZGl0ZWRUZXh0Q29sb3IgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNEYXJrbW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RleHQtY29sb3ItYmx1ZS0xOSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICd0ZXh0LWNvbG9yLWJsdWUtMTMnO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhLWZvbnQtbWVkaXVtIG1hcmdpbi1sLTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdGVkVGV4dENvbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDigKIgRWRpdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpc0VkaXRNb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgYmFja2dyb3VuZEhvdmVyID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRGFya21vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdiYWNrZ3JvdW5kLWhvdmVyLWJsYWNrJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2JhY2tncm91bmQtaG92ZXItd2hpdGUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbGV0IGljb25GaWxsID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRGFya21vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdzdmctZmlsbC1idy05J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ3N2Zy1maWxsLWJsYWNrLTknO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbGV0IGFjdGlvbkNsYXNzZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWdyZXknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRIb3ZlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uRmlsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbi1ob3ZlciBoLTE4IHctMTggZC1mbGV4IHBsYWNlLWl0ZW1zLWNlbnRlciBici0xIG1hcmdpbi14LTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBCYWNrZ3JvdW5kXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBCYWNrZ3JvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBDb2xvcl09XCJ0b29sdGlwQ29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21haW5DYVRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZUdlbmVyYWxBY3Rpb25zLkNPTkZJUk1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcG9zaXRpb25dPVwiZVBvc2l0aW9uLlRPUFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiYWN0aW9uQ2xhc3Nlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlybUNvbW1lbnQoY29tbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IHN2Zy1zaXplLTEyIGMtcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ljX2NvbmZpcm0nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhU3ZnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBlU2hhcmVkU3RyaW5nLkNPTU1PTl9MT1dFUkNBU0VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb24taG92ZXIgaC0xOCB3LTE4IGQtZmxleCBwbGFjZS1pdGVtcy1jZW50ZXIgYnItMSBtYXJnaW4teC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwQmFja2dyb3VuZF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQmFja2dyb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwQ29sb3JdPVwidG9vbHRpcENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYWluQ2FUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVHZW5lcmFsQWN0aW9ucy5DQU5DRUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcG9zaXRpb25dPVwiZVBvc2l0aW9uLlRPUFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiYWN0aW9uQ2xhc3Nlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJDb21tZW50QWRkT3JFZGl0KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IHN2Zy1zaXplLTEwIGMtcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ljX3gnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhU3ZnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBlU2hhcmVkU3RyaW5nLkNPTU1PTl9MT1dFUkNBU0VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGlzQ3VycmVudFVzZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgaWNvbkhvdmVyRmlsbCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNEYXJrbW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdzdmctaG92ZXItYnctOSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnc3ZnLWhvdmVyLWJsYWNrJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgaWNvbkJhY2tncm91bmRIb3ZlciA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNEYXJrbW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdiYWNrZ3JvdW5kLWhvdmVyLWdyZXktMidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnYmFja2dyb3VuZC1ob3Zlci1kYXJrLTInO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb24taWNvbiBoLTE4IHctMTggcGxhY2UtaXRlbXMtY2VudGVyIGJyLTEgbWFyZ2luLXgtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwQmFja2dyb3VuZF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcEJhY2tncm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwQ29sb3JdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDb2xvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21haW5DYVRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVHZW5lcmFsQWN0aW9ucy5FRElUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcG9zaXRpb25dPVwiZVBvc2l0aW9uLlRPUFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIltcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N2Zy1maWxsLWdyZXknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uSG92ZXJGaWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uQmFja2dyb3VuZEhvdmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25FZGl0Q29tbWVudChjb21tZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IHN2Zy1zaXplLTEyIGMtcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWNfZWRpdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhU3ZnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZVNoYXJlZFN0cmluZy5DT01NT05fTE9XRVJDQVNFXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgdHJhc2hJY29uQmFja2dyb3VuZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNEYXJrbW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdiYWNrZ3JvdW5kLWhvdmVyLWdyZXktMidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnYmFja2dyb3VuZC1ob3Zlci1yZWQtMTUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGxldCB0cmFzaEljb25Ib3ZlciA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNEYXJrbW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdzdmctaG92ZXItYnctOSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnc3ZnLWhvdmVyLXJlZC0xNCc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb24taWNvbiBoLTE4IHctMTggcGxhY2UtaXRlbXMtY2VudGVyIGJyLTEgbWFyZ2luLXgtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwQmFja2dyb3VuZF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcEJhY2tncm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwQ29sb3JdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDb2xvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21haW5DYVRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVHZW5lcmFsQWN0aW9ucy5ERUxFVEVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwb3NpdGlvbl09XCJlUG9zaXRpb24uVE9QXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3ZnLWZpbGwtZ3JleScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYXNoSWNvbkJhY2tncm91bmQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYXNoSWNvbkhvdmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25EZWxldGVDb21tZW50KGNvbW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggc3ZnLXNpemUtMTIgYy1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpY190cmFzaCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhU3ZnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZVNoYXJlZFN0cmluZy5DT01NT05fTE9XRVJDQVNFXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGlzRGFya21vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgYW5pbWF0aW9uU3RhdGVBcnJvdyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDb21tZW50RXhwYW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBlQW5pbWF0aW9uU3RhdGUuUk9UQVRFRFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGVBbmltYXRpb25TdGF0ZS5ERUZBVUxUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGxldCB0b29sdGlwVGV4dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDb21tZW50RXhwYW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBlR2VuZXJhbEFjdGlvbnMuQ09MTEFQU0VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBlR2VuZXJhbEFjdGlvbnMuRVhQQU5EO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWljb24gaC0xOCB3LTE4IHBsYWNlLWl0ZW1zLWNlbnRlciBiYWNrZ3JvdW5kLWhvdmVyLWdyZXktMiBtYXJnaW4tbC0yIGJyLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcEJhY2tncm91bmRdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBCYWNrZ3JvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcENvbG9yXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ29sb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYWluQ2FUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Bvc2l0aW9uXT1cImVQb3NpdGlvbi5UT1BcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25FeHBhbmRDb21tZW50KGNvbW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggc3ZnLXNpemUtMTIgc3ZnLWhvdmVyLWJ3LTkgYy1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpY19hcnJvd19kb3duJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FTdmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBlU2hhcmVkU3RyaW5nLkNPTU1PTl9MT1dFUkNBU0VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnN2Zy1maWxsLXdoaXRlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDb21tZW50RXhwYW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0Byb3RhdGVkU3RhdGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb25TdGF0ZUFycm93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGxldCBpc0V4cGFuZGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQ29tbWVudEV4cGFuZGVkIHx8ICFpc0Rhcmttb2RlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbGV0IGNvbW1lbnRIZWlnaHQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNFeHBhbmRlZCA/ICdhdXRvJyA6ICcxOHB4JztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGlzRWRpdE1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy0xMDAgYmFja2dyb3VuZC10cmFuc3BhcmVudCB0ZXh0LWNvbG9yLWJsYWNrIHRleHQtc2l6ZS0xMSBwYWRkaW5nLXgtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiV3JpdGUgY29tbWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjExMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRGFya21vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICd0ZXh0LWNvbG9yLWJsYWNrJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ3RleHQtY29sb3Itd2hpdGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnRDb250ZW50Rm9ybUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtc2l6ZS0xMSBwYWRkaW5nLXgtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtY29sb3ItYmxhY2snOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNFZGl0TW9kZSAmJiBpc0Rhcmttb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1jb2xvci13aGl0ZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIWlzRWRpdE1vZGUgJiYgaXNEYXJrbW9kZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpc0VkaXRNb2RlICYmICFpc0Rhcmttb2RlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2gtMTgnOiAhaXNFeHBhbmRlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIdG1sXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50Py5jb21tZW50Q29udGVudCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVN0cmluZ1BsYWNlaG9sZGVyLkVNUFRZXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNhZmVIdG1sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogY29tbWVudEhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuY29tbWVudC1jb250ZW50XT1cIiFpc0V4cGFuZGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgQGlmIChpc0Rhcmttb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LTEwMCBkLWZsZXggcGxhY2UtaXRlbXMtY2VudGVyIGJhY2tncm91bmQtYmxhY2sgcGFkZGluZy15LTE1IG1hcmdpbi10LTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1jb2xvci1idzYtMiBjYS1mb250LWV4dHJhLWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm8gUmVzdWx0c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgQGxldCBlbXB0eVN0YXRlQ29udGFpbmVyQ2xhc3MgPVxuICAgICAgICAgICAgICAgIGlzRGFya21vZGUgPyAnaC04MCBiYWNrZ3JvdW5kLWJsYWNrJyA6ICdoLTE2MCc7XG4gICAgICAgICAgICBAbGV0IHN1YnRsZUlsbHVzdHJhdGlvblRleHRDbGFzcyA9XG4gICAgICAgICAgICAgICAgaXNEYXJrbW9kZVxuICAgICAgICAgICAgICAgICAgICA/ICd0ZXh0LXNpemUtMjAgdGV4dC1jb2xvci1idzYtMiBjYS1mb250LWV4dHJhLWJvbGQnXG4gICAgICAgICAgICAgICAgICAgIDogJ3RleHQtc2l6ZS0yOCB0ZXh0LWNvbG9yLWJ3LTkgY2EtZm9udC1ib2xkIHRleHQtdXBwZXJjYXNlJztcbiAgICAgICAgICAgIEBsZXQgZW1wdHlTdGF0ZVRleHRDbGFzcyA9XG4gICAgICAgICAgICAgICAgaXNEYXJrbW9kZVxuICAgICAgICAgICAgICAgICAgICA/ICd0ZXh0LXNpemUtMjAgdGV4dC1jb2xvci1idzYtMiBjYS1mb250LWV4dHJhLWJvbGQnXG4gICAgICAgICAgICAgICAgICAgIDogJ3RleHQtc2l6ZS0yOCB0ZXh0LWNvbG9yLWJ3LTknO1xuICAgICAgICAgICAgQGxldCBlbXB0eVN0YXRlVGV4dCA9IGlzRGFya21vZGUgPyAnRW1wdHkgU3RhdGUnIDogJyhFbXB0eSBTdGF0ZSknO1xuXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgdy0xMDAgbWFyZ2luLXQtNFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZW1wdHlTdGF0ZUNvbnRhaW5lckNsYXNzXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzdWJ0bGVJbGx1c3RyYXRpb25UZXh0Q2xhc3NcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgU3VidGxlIElsbHVzdHJhdGlvblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiIFtuZ0NsYXNzXT1cImVtcHR5U3RhdGVUZXh0Q2xhc3NcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgZW1wdHlTdGF0ZVRleHQgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2Ryb3Bkb3duUG9wb3Zlcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29tbWVudHNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
224
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtY29tbWVudHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtY29tbWVudHMvY2EtY29tbWVudHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtY29tbWVudHMvY2EtY29tbWVudHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRSxxQkFBcUI7QUFDckIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXhELGFBQWE7QUFDYixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUVyRyxRQUFRO0FBQ1IsT0FBTyxFQUNILFNBQVMsRUFDVCxrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLFlBQVksR0FDZixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUNsQixzQkFB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b3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbi8vIHRoaXJkLXBhcnkgbW9kdWxlc1xuaW1wb3J0IHsgTmdiTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgQW5ndWxhclN2Z0ljb25Nb2R1bGUgfSBmcm9tICdhbmd1bGFyLXN2Zy1pY29uJztcblxuLy8gY29tcG9uZW50c1xuaW1wb3J0IHsgQ2FQcm9maWxlSW1hZ2VDb21wb25lbnQgfSBmcm9tICcuLi9jYS1wcm9maWxlLWltYWdlL2NhLXByb2ZpbGUtaW1hZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IENhQXBwVG9vbHRpcFYyQ29tcG9uZW50IH0gZnJvbSAnLi4vY2EtYXBwLXRvb2x0aXAtdjIvY2EtYXBwLXRvb2x0aXAtdjIuY29tcG9uZW50JztcbmltcG9ydCB7IENhQXV0b2Nsb3NlUG9wb3ZlckNvbXBvbmVudCB9IGZyb20gJy4uL2NhLWF1dG9jbG9zZS1wb3BvdmVyL2NhLWF1dG9jbG9zZS1wb3BvdmVyLmNvbXBvbmVudCc7XG5cbi8vIHBpcGVzXG5pbXBvcnQge1xuICAgIENhU3ZnUGlwZSxcbiAgICBEYXRlRnJvbVN0cmluZ1BpcGUsXG4gICAgTmFtZUluaXRpYWxzUGlwZSxcbiAgICBTYWZlSHRtbFBpcGUsXG59IGZyb20gJy4uLy4uL3BpcGVzJztcbmltcG9ydCB7XG4gICAgQ2FJc0N1cnJlbnRVc2VyUGlwZSxcbiAgICBDYVNvcnRDb21tZW50c1BpcGUsXG4gICAgQ2FIaWdobGlnaHRDb21tZW50UGlwZSxcbiAgICBDYUhpZ2hsaWdodFNpbmdsZVN0cmluZ1BpcGUsXG59IGZyb20gJy4vcGlwZXMnO1xuXG4vLyBlbnVtc1xuaW1wb3J0IHtcbiAgICBlQW5pbWF0aW9uU3RhdGUsXG4gICAgZVNoYXJlZFN0cmluZyxcbiAgICBlRGF0ZVRpbWVGb3JtYXRzLFxuICAgIGVHZW5lcmFsQWN0aW9ucyxcbiAgICBlQ29sb3IsXG4gICAgZVBvc2l0aW9uLFxuICAgIGVTdHJpbmdQbGFjZWhvbGRlcixcbn0gZnJvbSAnLi4vLi4vZW51bXMnO1xuXG4vLyBtb2RlbHNcbmltcG9ydCB7IElDb21tZW50IH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgSUNvbXBhbnlVc2VyLCBJVXNlciB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuXG4vLyBhc3NldHNcbmltcG9ydCB7IHRvZ2dsZVVwRG93bkFuaW1hdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxzL2FuaW1hdGlvbnMnO1xuXG4vLyBoZWxwZXJzXG5pbXBvcnQgeyBVc2VySGVscGVyIH0gZnJvbSAnLi4vLi4vdXRpbHMvaGVscGVycyc7XG5cbi8vIHN2ZyByb3V0ZVxuaW1wb3J0IHsgU2hhcmVkU3ZnUm91dGVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3ZnLXJvdXRlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnY2EtY29tbWVudHMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYS1jb21tZW50cy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2NhLWNvbW1lbnRzLmNvbXBvbmVudC5zY3NzJyxcbiAgICBhbmltYXRpb25zOiBbdG9nZ2xlVXBEb3duQW5pbWF0aW9uXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgSHR0cENsaWVudE1vZHVsZSxcblxuICAgICAgICAvLyBDb21wb25lbnRzXG4gICAgICAgIENhUHJvZmlsZUltYWdlQ29tcG9uZW50LFxuICAgICAgICBDYUF1dG9jbG9zZVBvcG92ZXJDb21wb25lbnQsXG4gICAgICAgIENhQXBwVG9vbHRpcFYyQ29tcG9uZW50LFxuXG4gICAgICAgIC8vIFRoaXJkLXBhcnR5IG1vZHVsZXNcbiAgICAgICAgQW5ndWxhclN2Z0ljb25Nb2R1bGUsXG4gICAgICAgIE5nYk1vZHVsZSxcblxuICAgICAgICAvLyBQaXBlc1xuICAgICAgICBEYXRlRnJvbVN0cmluZ1BpcGUsXG4gICAgICAgIE5hbWVJbml0aWFsc1BpcGUsXG4gICAgICAgIENhU3ZnUGlwZSxcbiAgICAgICAgQ2FJc0N1cnJlbnRVc2VyUGlwZSxcbiAgICAgICAgQ2FTb3J0Q29tbWVudHNQaXBlLFxuICAgICAgICBDYUhpZ2hsaWdodENvbW1lbnRQaXBlLFxuICAgICAgICBDYUhpZ2hsaWdodFNpbmdsZVN0cmluZ1BpcGUsXG4gICAgICAgIFNhZmVIdG1sUGlwZSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDYUNvbW1lbnRzQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBpc0Rhcmttb2RlOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgaXNTZWFyY2hEaXNwbGF5ZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIGlzRHJpdmVyVGFiOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgaXNNb2RhbDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGNvbW1lbnRDb3VudDogbnVtYmVyID0gMDtcbiAgICBASW5wdXQoKSBzZXQgY29tbWVudHModmFsdWU6IElDb21tZW50W10pIHtcbiAgICAgICAgdGhpcy5fY29tbWVudHMgPSBbLi4udmFsdWVdO1xuICAgIH1cbiAgICBASW5wdXQoKSBzZXQgY3VycmVudFVzZXIodmFsdWU6IElVc2VyKSB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRVc2VyID0gdmFsdWUgPz8gVXNlckhlbHBlci5nZXRVc2VyRnJvbUxvY2FsU3RvcmFnZSgpO1xuICAgIH1cbiAgICBASW5wdXQoKSBzZXQgaGFzTmV3Q29tbWVudCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodmFsdWUpIHRoaXMub25BZGROZXdDb21tZW50KCk7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpIG9uQ29tbWVudERlbGV0ZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgICBAT3V0cHV0KCkgb25Db21tZW50QWRkZWQ6IEV2ZW50RW1pdHRlcjxJQ29tbWVudD4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPElDb21tZW50PigpO1xuICAgIEBPdXRwdXQoKSBvbkNvbW1lbnRFZGl0ZWQ6IEV2ZW50RW1pdHRlcjxJQ29tbWVudD4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPElDb21tZW50PigpO1xuICAgIEBPdXRwdXQoKSBvbkNvbW1lbnRDYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIG9uQ29tbWVudFNlYXJjaENhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHB1YmxpYyBfY29tbWVudHMhOiBJQ29tbWVudFtdO1xuICAgIHB1YmxpYyBfY3VycmVudFVzZXIhOiBJVXNlcjtcblxuICAgIC8vIGVudW1zXG4gICAgcHVibGljIGVTaGFyZWRTdHJpbmcgPSBlU2hhcmVkU3RyaW5nO1xuICAgIHB1YmxpYyBlQW5pbWF0aW9uU3RhdGUgPSBlQW5pbWF0aW9uU3RhdGU7XG4gICAgcHVibGljIGVEYXRlVGltZUZvcm1hdHMgPSBlRGF0ZVRpbWVGb3JtYXRzO1xuICAgIHB1YmxpYyBlR2VuZXJhbEFjdGlvbnMgPSBlR2VuZXJhbEFjdGlvbnM7XG4gICAgcHVibGljIGVDb2xvciA9IGVDb2xvcjtcbiAgICBwdWJsaWMgZVBvc2l0aW9uID0gZVBvc2l0aW9uO1xuICAgIHB1YmxpYyBlU3RyaW5nUGxhY2Vob2xkZXIgPSBlU3RyaW5nUGxhY2Vob2xkZXI7XG5cbiAgICBwdWJsaWMgc29ydERpcmVjdGlvbjogZVNoYXJlZFN0cmluZy5BU0MgfCBlU2hhcmVkU3RyaW5nLkRTQyA9XG4gICAgICAgIGVTaGFyZWRTdHJpbmcuRFNDO1xuXG4gICAgcHVibGljIGNvbW1lbnRFeHBhbmRlZCE6IElDb21tZW50IHwgbnVsbDtcbiAgICBwdWJsaWMgY29tbWVudEFkZE9yRWRpdCE6IElDb21tZW50IHwgbnVsbDtcbiAgICBwdWJsaWMgY29tbWVudEFjdGlvbjogZUdlbmVyYWxBY3Rpb25zLkFERCB8IGVHZW5lcmFsQWN0aW9ucy5FRElUIHwgbnVsbCA9XG4gICAgICAgIG51bGw7XG5cbiAgICAvLyBmb3JtXG4gICAgcHVibGljIGNvbW1lbnRDb250ZW50Rm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgICBwdWJsaWMgc2VhcmNoQ29tbWVudEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG5cbiAgICAvLyBzdmcgcm91dGVzXG4gICAgcHVibGljIHNoYXJlZFN2Z1JvdXRlcyA9IFNoYXJlZFN2Z1JvdXRlcztcblxuICAgIGNvbnN0cnVjdG9yKCkge31cblxuICAgIHB1YmxpYyBvblRvZ2dsZVNvcnQoKTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5zb3J0RGlyZWN0aW9uKSB7XG4gICAgICAgICAgICBjYXNlIGVTaGFyZWRTdHJpbmcuQVNDOlxuICAgICAgICAgICAgICAgIHRoaXMuc29ydERpcmVjdGlvbiA9IGVTaGFyZWRTdHJpbmcuRFNDO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBlU2hhcmVkU3RyaW5nLkRTQzpcbiAgICAgICAgICAgICAgICB0aGlzLnNvcnREaXJlY3Rpb24gPSBlU2hhcmVkU3RyaW5nLkFTQztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy5zb3J0RGlyZWN0aW9uID0gZVNoYXJlZFN0cmluZy5EU0M7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uRGVsZXRlQ29tbWVudChjb21tZW50OiBJQ29tbWVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ29tbWVudERlbGV0ZS5lbWl0KGNvbW1lbnQuaWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkV4cGFuZENvbW1lbnQoY29tbWVudDogSUNvbW1lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY29tbWVudEV4cGFuZGVkPy5pZCA9PT0gY29tbWVudD8uaWQpIHtcbiAgICAgICAgICAgIHRoaXMuY29tbWVudEV4cGFuZGVkID0gbnVsbDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbW1lbnRFeHBhbmRlZCA9IGNvbW1lbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQWRkTmV3Q29tbWVudCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaGFzTmV3Q29tbWVudDogYm9vbGVhbiA9IHRoaXMuX2NvbW1lbnRzLnNvbWUoXG4gICAgICAgICAgICAoY29tbWVudDogSUNvbW1lbnQpID0+IGNvbW1lbnQuaXNOZXdcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoaGFzTmV3Q29tbWVudCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IGNvbXBhbnlVc2VyOiBJQ29tcGFueVVzZXIgPSB7XG4gICAgICAgICAgICBpZDogdGhpcy5fY3VycmVudFVzZXI/LmNvbXBhbnlVc2VySWQhLFxuICAgICAgICAgICAgZnVsbE5hbWU6IGAke3RoaXMuX2N1cnJlbnRVc2VyPy5maXJzdE5hbWV9ICR7dGhpcy5fY3VycmVudFVzZXI/Lmxhc3ROYW1lfWAsXG4gICAgICAgICAgICBhdmF0YXJGaWxlOiB7XG4gICAgICAgICAgICAgICAgZmlsZUlkOiB0aGlzLl9jdXJyZW50VXNlcj8uYXZhdGFyRmlsZT8uZmlsZUlkID8/IDAsXG4gICAgICAgICAgICAgICAgZmlsZU5hbWU6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRVc2VyPy5hdmF0YXJGaWxlPy5maWxlTmFtZSB8fFxuICAgICAgICAgICAgICAgICAgICBgJHt0aGlzLl9jdXJyZW50VXNlcj8uZmlyc3ROYW1lfSAke3RoaXMuX2N1cnJlbnRVc2VyPy5sYXN0TmFtZX1gLFxuICAgICAgICAgICAgICAgIHVybDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudFVzZXI/LmF2YXRhckZpbGU/LnVybCA/P1xuICAgICAgICAgICAgICAgICAgICBlU3RyaW5nUGxhY2Vob2xkZXI/LkVNUFRZLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBuZXdDb21tZW50OiBJQ29tbWVudCA9IHtcbiAgICAgICAgICAgIGlkOiB0aGlzLl9jb21tZW50cz8ubGVuZ3RoICsgMSxcbiAgICAgICAgICAgIGNvbW1lbnRDb250ZW50OiBlU3RyaW5nUGxhY2Vob2xkZXIuRU1QVFksXG4gICAgICAgICAgICBjb21wYW55VXNlcixcbiAgICAgICAgICAgIGlzRHJpdmVyOiB0aGlzLmlzRHJpdmVyVGFiLFxuICAgICAgICAgICAgaXNFZGl0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgaXNOZXc6IHRydWUsXG4gICAgICAgICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmNvbW1lbnRBZGRPckVkaXQgPSB7IC4uLm5ld0NvbW1lbnQgfTtcblxuICAgICAgICB0aGlzLl9jb21tZW50cyA9IFt7IC4uLm5ld0NvbW1lbnQgfSwgLi4udGhpcy5fY29tbWVudHNdO1xuICAgICAgICB0aGlzLmNvbW1lbnRBY3Rpb24gPSBlR2VuZXJhbEFjdGlvbnMuQUREO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkVkaXRDb21tZW50KGNvbW1lbnQ6IElDb21tZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29tbWVudEFkZE9yRWRpdCA9IHsgLi4uY29tbWVudCB9O1xuICAgICAgICB0aGlzLmNvbW1lbnRDb250ZW50Rm9ybUNvbnRyb2wucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgIHRoaXMuY29tbWVudEFkZE9yRWRpdC5jb21tZW50Q29udGVudFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNvbW1lbnRBY3Rpb24gPSBlR2VuZXJhbEFjdGlvbnMuRURJVDtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXJDb21tZW50QWRkT3JFZGl0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbW1lbnRBZGRPckVkaXQgPSBudWxsO1xuXG4gICAgICAgIGlmICh0aGlzLmNvbW1lbnRBY3Rpb24gPT09IGVHZW5lcmFsQWN0aW9ucy5BREQpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbW1lbnRzID0gWy4uLnRoaXMuX2NvbW1lbnRzLnNsaWNlKDEpXTtcbiAgICAgICAgICAgIHRoaXMub25Db21tZW50Q2FuY2VsLmVtaXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsZWFyU2VhcmNoKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlYXJjaENvbW1lbnRGb3JtQ29udHJvbC5yZXNldCgpO1xuXG4gICAgICAgIHRoaXMub25Db21tZW50U2VhcmNoQ2FuY2VsLmVtaXQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29uZmlybUNvbW1lbnQoY29tbWVudDogSUNvbW1lbnQpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLmNvbW1lbnRBY3Rpb24pIHtcbiAgICAgICAgICAgIGNhc2UgZUdlbmVyYWxBY3Rpb25zLkVESVQ6XG4gICAgICAgICAgICAgICAgY29uc3QgY29tbWVudEZvdW5kOiBJQ29tbWVudCB8IHVuZGVmaW5lZCA9IHRoaXMuX2NvbW1lbnRzLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgIChpdGVtOiBJQ29tbWVudCkgPT4gY29tbWVudC5pZCA9PT0gaXRlbS5pZFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKCFjb21tZW50Rm91bmQpIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZENvbW1lbnQ6IElDb21tZW50ID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5jb21tZW50LFxuICAgICAgICAgICAgICAgICAgICBjb21tZW50Q29udGVudDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbWVudENvbnRlbnRGb3JtQ29udHJvbC52YWx1ZSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudEZvdW5kLmNvbW1lbnRDb250ZW50LFxuICAgICAgICAgICAgICAgICAgICBpc05ldzogZmFsc2UsXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHRoaXMub25Db21tZW50RWRpdGVkLmVtaXQodXBkYXRlZENvbW1lbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBlR2VuZXJhbEFjdGlvbnMuQUREOlxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5jb21tZW50Q29udGVudEZvcm1Db250cm9sLnZhbHVlKSBicmVhaztcblxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0NvbW1lbnQ6IElDb21tZW50ID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5jb21tZW50LFxuICAgICAgICAgICAgICAgICAgICBjb21tZW50Q29udGVudDogdGhpcy5jb21tZW50Q29udGVudEZvcm1Db250cm9sLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBpc05ldzogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgdGhpcy5vbkNvbW1lbnRBZGRlZC5lbWl0KG5ld0NvbW1lbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1lbnRBY3Rpb24gPSBudWxsO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2xlYXJDb21tZW50QWRkT3JFZGl0KCk7XG4gICAgICAgIHRoaXMuY29tbWVudENvbnRlbnRGb3JtQ29udHJvbC5yZXNldCgpO1xuICAgIH1cbn1cbiIsIkBsZXQgc29ydGVkQ29tbWVudHMgPSBfY29tbWVudHMgfCBjYVNvcnRDb21tZW50czogc29ydERpcmVjdGlvbiA6IGlzRGFya21vZGU7XG5AbGV0IHNlYXJjaFRlcm0gPSBzZWFyY2hDb21tZW50Rm9ybUNvbnRyb2wudmFsdWU7XG5AbGV0IHNlYXJjaGVkQ29tbWVudHMgPVxuICAgIHNvcnRlZENvbW1lbnRzIHwgY2FIaWdobGlnaHRDb21tZW50OiBzZWFyY2hUZXJtIDogaXNEYXJrbW9kZTtcbkBsZXQgc2VhcmNoQ29udGVudENvdW50ID0gc2VhcmNoZWRDb21tZW50cz8ubGVuZ3RoO1xuQGxldCBoYXNTZWFyY2hDb250ZW50ID0gISFzZWFyY2hDb250ZW50Q291bnQ7XG5cbkBpZiAoaXNEYXJrbW9kZSkge1xuICAgIEBsZXQgaXNQb3BvdmVyT3BlbiA9IHBvcG92ZXI/LmlzT3BlbigpO1xuXG4gICAgPGRpdlxuICAgICAgICAjcG9wb3Zlcj1cIm5nYlBvcG92ZXJcIlxuICAgICAgICBjbGFzcz1cInctMjYgaC0yNiBkLWZsZXggcGxhY2UtaXRlbXMtY2VudGVyIGMtcG9pbnRlciBici0yIG0tdC0xXCJcbiAgICAgICAgYXV0b0Nsb3NlPVwib3V0c2lkZVwiXG4gICAgICAgIFtuZ2JQb3BvdmVyXT1cImRyb3Bkb3duUG9wb3ZlclwiXG4gICAgICAgIFtwb3BvdmVyQ2xhc3NdPVwiJ3BvcG92ZXItbWFpbidcIlxuICAgICAgICBbcGxhY2VtZW50XT1cImVQb3NpdGlvbi5CT1RUT01fUklHSFRcIlxuICAgICAgICBbY29udGFpbmVyXT1cIidib2R5J1wiXG4gICAgICAgIFtuZ0NsYXNzXT1cIlxuICAgICAgICAgICAgaXNQb3BvdmVyT3BlblxuICAgICAgICAgICAgICAgID8gJ2FjdGl2ZSBiYWNrZ3JvdW5kLWJsYWNrJ1xuICAgICAgICAgICAgICAgIDogJ2JhY2tncm91bmQtaG92ZXItZGFyay0yIHN2Zy1ob3Zlci1ibGFjaydcbiAgICAgICAgXCJcbiAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4IHBsYWNlLWl0ZW1zLWNlbnRlciBtLWF1dG9cIlxuICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgW3Rvb2x0aXBCYWNrZ3JvdW5kXT1cImVDb2xvci5CTEFDS1wiXG4gICAgICAgICAgICBbdG9vbHRpcENvbG9yXT1cImVDb2xvci5XSElURVwiXG4gICAgICAgICAgICBbbWFpbkNhVG9vbHRpcF09XCJlU2hhcmVkU3RyaW5nLkNPTU1FTlRcIlxuICAgICAgICAgICAgW3Bvc2l0aW9uXT1cImVQb3NpdGlvbi5CT1RUT01cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY29tbWVudHMtY291bnQgei0wIHBvc2l0aW9uLWFic29sdXRlIHRleHQtc2l6ZS05IHRhLWZvbnQtc2VtaS1ib2xkXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJcbiAgICAgICAgICAgICAgICAgICAgaXNQb3BvdmVyT3BlbiA/ICd0ZXh0LWNvbG9yLWJsYWNrLTInIDogJ3RleHQtY29sb3Itd2hpdGUnXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBjb21tZW50Q291bnQgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzdmctc2l6ZS0xOFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaXNQb3BvdmVyT3BlbiA/ICdzdmctZmlsbC13aGl0ZS00JyA6ICdzdmctZmlsbC1ncmV5J1wiXG4gICAgICAgICAgICAgICAgW3NyY109XCJzaGFyZWRTdmdSb3V0ZXMuQ09NTUVOVF9JQ09OXCJcbiAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbn0gQGVsc2Uge1xuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb21tZW50c1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG59XG5cbjxuZy10ZW1wbGF0ZSAjY29tbWVudHNUZW1wbGF0ZT5cbiAgICBAbGV0IHRvb2x0aXBCYWNrZ3JvdW5kID0gaXNEYXJrbW9kZSA/IGVDb2xvci5MSUdIVF9HUkVZIDogZUNvbG9yLkJMQUNLO1xuICAgIEBsZXQgdG9vbHRpcENvbG9yID0gaXNEYXJrbW9kZSA/IGVDb2xvci5EQVJLX0dSRVkgOiBlQ29sb3IuV0hJVEU7XG5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiY29tbWVudHMtY29udGFpbmVyIGJyLTNcIlxuICAgICAgICBbY2xhc3MucGFkZGluZy00XT1cIiFpc01vZGFsXCJcbiAgICAgICAgW2NsYXNzLmJhY2tncm91bmQtYmxhY2stMl09XCJpc0Rhcmttb2RlXCJcbiAgICAgICAgW3N0eWxlXT1cIntcbiAgICAgICAgICAgIHdpZHRoOiBpc0Rhcmttb2RlID8gJzI2MHB4JyA6ICcxMDAlJyxcbiAgICAgICAgICAgICdtYXgtaGVpZ2h0JzogaXNEYXJrbW9kZSA/ICczMDZweCcgOiAnMTAwJScsXG4gICAgICAgIH1cIlxuICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtblwiPlxuICAgICAgICAgICAgQGxldCBpc0hpZGRlblNvcnQgPSAoIWlzRGFya21vZGUgJiYgIV9jb21tZW50cy5sZW5ndGgpIHx8IGlzTW9kYWw7XG5cbiAgICAgICAgICAgIEBpZiAoIWlzSGlkZGVuU29ydCkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBbbmdTdHlsZV09XCJ7IG9yZGVyOiBpc0Rhcmttb2RlID8gMCA6IDIgfVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDBcIiBbY2xhc3MuaC0zMl09XCIhaXNEYXJrbW9kZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLm1hcmdpbi10LTRdPVwiIWlzRGFya21vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggcGxhY2UtaXRlbXMtY2VudGVyIGNhLWZvbnQtZXh0cmEtYm9sZCBmb250LXNpemUtMTEgbWFyZ2luLXgtNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbGV0IHRpdGxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpc0Rhcmttb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBlU2hhcmVkU3RyaW5nLkNPTU1FTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGVHZW5lcmFsQWN0aW9ucy5TT1JUX0JZXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHwgdXBwZXJjYXNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbGV0IHJlc3VsdFRpdGxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaENvbnRlbnRDb3VudCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVN0cmluZ1BsYWNlaG9sZGVyLldISVRFU1BBQ0UgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVTaGFyZWRTdHJpbmcuUkVTVUxUUyB8IHVwcGVyY2FzZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXJnaW4teS0yIG1hcmdpbi1yLTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRGFya21vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAndGV4dC1jb2xvci13aGl0ZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAndGV4dC1jb2xvci1ncmV5J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaFRlcm0gJiYgIWlzRGFya21vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyByZXN1bHRUaXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpc0Rhcmttb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG1pbi13LTE4IGgtMTggdGV4dC1jb2xvci13aGl0ZSBici02MCBiYWNrZ3JvdW5kLWJsYWNrIHBhZGRpbmcteC01XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgY29tbWVudENvdW50IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoX2NvbW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbGV0IHNvcnRCeUNvbG9yQ2xhc3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNEYXJrbW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RleHQtY29sb3Itd2hpdGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAndGV4dC1jb2xvci1ibGFjayc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggcGxhY2UtaXRlbXMtY2VudGVyIHBhZGRpbmctbC02IGJyLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRGFya21vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnYmFja2dyb3VuZC1ob3Zlci1ibGFjaydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnYmFja2dyb3VuZC1ob3Zlci1idzInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3NvcnRCeVRvb2x0aXA9XCJuZ2JUb29sdGlwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwQmFja2dyb3VuZF09XCJ0b29sdGlwQmFja2dyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcENvbG9yXT1cInRvb2x0aXBDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWFpbkNhVG9vbHRpcF09XCJlR2VuZXJhbEFjdGlvbnMuU09SVF9CWVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcG9zaXRpb25dPVwiZVBvc2l0aW9uLkJPVFRPTVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXNpemUtMTQgY2EtZm9udC1tZWRpdW0gbWFyZ2luLXItNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydEJ5Q29sb3JDbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZVNoYXJlZFN0cmluZy5EQVRFIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgaXNEZXNjZW5kaW5nID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0RGlyZWN0aW9uID09PSBlU2hhcmVkU3RyaW5nLkRTQztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgYW5pbWF0aW9uU3RhdGVTb3J0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0RGlyZWN0aW9uID09PSBlU2hhcmVkU3RyaW5nLkRTQ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGVBbmltYXRpb25TdGF0ZS5ERUZBVUxUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZUFuaW1hdGlvblN0YXRlLlJPVEFURUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbGV0IHNvcnRUb29sdGlwVGV4dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNEZXNjZW5kaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZVNoYXJlZFN0cmluZy5ERVNDRU5ESU5HXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZVNoYXJlZFN0cmluZy5BU0NFTkRJTkc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImgtMTggdy0xOCBkLWZsZXggcGxhY2UtaXRlbXMtY2VudGVyIGJhY2tncm91bmQtaG92ZXItYmx1ZS0yMSBzdmctaG92ZXItYmx1ZS0xNyBici0xIGMtcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwQmFja2dyb3VuZF09XCJ0b29sdGlwQmFja2dyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBDb2xvcl09XCJ0b29sdGlwQ29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYWluQ2FUb29sdGlwXT1cInNvcnRUb29sdGlwVGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Bvc2l0aW9uXT1cImVQb3NpdGlvbi5CT1RUT01cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzaG93bik9XCJzb3J0QnlUb29sdGlwPy5jbG9zZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Ub2dnbGVTb3J0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBzdmctc2l6ZS0xNCBzdmctZmlsbC1ibHVlLTEzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcnJvd19zb3J0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FTdmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBlU2hhcmVkU3RyaW5nLkNPTU1PTl9MT1dFUkNBU0VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnN2Zy1maWxsLWJsdWUtMTNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50Q291bnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0Byb3RhdGVkU3RhdGVdPVwiYW5pbWF0aW9uU3RhdGVTb3J0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghaXNEYXJrbW9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LTEwMCBoLTEgYmFja2dyb3VuZC1idy05IG1hcmdpbi0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInsgb3JkZXI6IDEgfVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICBAaWYgKGlzU2VhcmNoRGlzcGxheWVkICYmIF9jb21tZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VhcmNoIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LXN0YXJ0IGJhY2tncm91bmQtYmxhY2sgYmFja2dyb3VuZC1ob3Zlci1ncmV5LTIgbWFyZ2luLXktNCBici0yXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlYXJjaC1kYXJrXT1cImlzRGFya21vZGVcIlxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7IG9yZGVyOiBpc0Rhcmttb2RlID8gMiA6IDAgfVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtYXJnaW4tNFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IHN2Zy1zaXplLTE0IHN2Zy1maWxsLWxpZ2h0LWdyZXktMiBjLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWFyY2gnIHwgY2FTdmc6IGVTaGFyZWRTdHJpbmcuQ09NTU9OX0xPV0VSQ0FTRVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGl2aWRlciB3LTEgYmFja2dyb3VuZC1saWdodC1ncmF5LTIgbWFyZ2luLXktMyBtYXJnaW4tci00XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgc2VhcmNoUGxhY2Vob2xkZXIgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRGFya21vZGUgPyAnRmluZCBUaXRsZScgOiAnRmluZCBDb21tZW50JztcblxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LTEwMCBiYWNrZ3JvdW5kLXRyYW5zcGFyZW50IHRleHQtc2l6ZS0xMSBtYXJnaW4tci0yIHBhZGRpbmctMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNlYXJjaFBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5sZW5ndGg9XCIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJzZWFyY2hDb21tZW50Rm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgQGxldCBpY29uQ29sb3IgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRGFya21vZGUgPyAnc3ZnLWZpbGwtYnctOScgOiAnc3ZnLWZpbGwtYmxhY2stMic7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYW5jZWwtc2VhcmNoIGgtMTQgdy0xNCBkLWZsZXggcGxhY2UtaXRlbXMtY2VudGVyIGJyLTEgbWFyZ2luLTQgYy1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uQ2xlYXJTZWFyY2goJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IHN2Zy1zaXplLTdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiW2ljb25Db2xvcl1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ljX3gnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYVN2ZzogZVNoYXJlZFN0cmluZy5DT01NT05fTE9XRVJDQVNFXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gdGV4dC1jb2xvci1ibHVlLTE5IHRleHQtaG92ZXItd2hpdGUgIC0tPlxuICAgICAgICBAaWYgKGlzRGFya21vZGUpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBoLTEgYmFja2dyb3VuZC1ibGFjayBici0xIG1hcmdpbi10LTRcIj48L2Rpdj5cblxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBiYWNrZ3JvdW5kLWhvdmVyLWJsdWUtMjEgc3ZnLWhvdmVyLWJsdWUtMTcgYy1wb2ludGVyIGJyLTIgbWFyZ2luLXQtNFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWRkTmV3Q29tbWVudCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtc2l6ZS0xMSB0ZXh0LWNvbG9yLXdoaXRlIGNhLWZvbnQtYm9sZCBwYWRkaW5nLXktNCBwYWRkaW5nLXgtNCB0ZXh0LXVwcGVyY2FzZVwiXG4gICAgICAgICAgICAgICAgICAgID5OZXcgQ29tbWVudFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoLTE0IHctMTQgZC1mbGV4IHBsYWNlLWl0ZW1zLWNlbnRlciBtYXJnaW4tNiBzdmctZmlsbC1ibHVlLTEzXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggc3ZnLXNpemUtMTQgYy1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ljX3BsdXMnIHwgY2FTdmc6IGVTaGFyZWRTdHJpbmcuQ09NTU9OX0xPV0VSQ0FTRVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoX2NvbW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY29tbWVudHMtd3JhcHBlciBjLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgIFtzdHlsZV09XCJ7XG4gICAgICAgICAgICAgICAgICAgICdtYXgtaGVpZ2h0JzogaXNEYXJrbW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnMjEwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGlzTW9kYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnMTQ4cHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogJzEwMCUnLFxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEBpZiAoaGFzU2VhcmNoQ29udGVudCkge1xuICAgICAgICAgICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgb2Ygc2VhcmNoZWRDb21tZW50cztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmRleCA9ICRpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrIGluZGV4XG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGxldCBpc0NvbW1lbnRFeHBhbmRlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudD8uaWQgPT09IGNvbW1lbnRFeHBhbmRlZD8uaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBAbGV0IGlzRWRpdE1vZGUgPSBjb21tZW50Py5pZCA9PT0gY29tbWVudEFkZE9yRWRpdD8uaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBAbGV0IGNvbXBhbnlVc2VyID0gY29tbWVudD8uY29tcGFueVVzZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICBAbGV0IGlzQ3VycmVudFVzZXIgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhbnlVc2VyIHwgY2FJc0N1cnJlbnRVc2VyOiBfY3VycmVudFVzZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb21tZW50IHBhZGRpbmcteC00IHBhZGRpbmcteS0yIG1hcmdpbi10LTIgYnItMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtYmxhY2stMic6IGlzRGFya21vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWhvdmVyLWJsYWNrJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpc0VkaXRNb2RlICYmIGlzRGFya21vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWJ3LTknOiBpc0VkaXRNb2RlICYmIGlzRGFya21vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWhvdmVyLWJ3Mic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaXNFZGl0TW9kZSAmJiAhaXNEYXJrbW9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtYmxhY2stMyc6IGlzRWRpdE1vZGUgJiYgIWlzRGFya21vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBwYWRkaW5nLXQtMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFRPRE8gQ2hhbmdlIGNvbG9ycyBvciBzb21ldGhpbmcgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGxldCBjb21wYW55VXNlckZ1bGxuYW1lID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbXBhbnlVc2VyPy5mdWxsTmFtZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGFueVVzZXI/Lm5hbWUpID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVTdHJpbmdQbGFjZWhvbGRlci5FTVBUWTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgbmFtZUluaXRpYWxzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGFueVVzZXJGdWxsbmFtZSB8IG5hbWVJbml0aWFscztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLXByb2ZpbGUtaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F2YXRhckNvbG9yXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICcjREZDMkY5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnIzlFNDdFQzY2JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdmF0YXJJbWddPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wYW55VXNlcj8uYXZhdGFyRmlsZT8udXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0U2hvcnROYW1lXT1cIm5hbWVJbml0aWFsc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc1JvdW5kXT1cIiFjb21tZW50LmlzRHJpdmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NpemVdPVwiMjJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1wcm9maWxlLWltYWdlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXJnaW4teC00IG1hcmdpbi15LTIgdGV4dC1zaXplLTExXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2EtZm9udC1zZW1pLWJvbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWNvbG9yLWJsYWNrJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRWRpdE1vZGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRGFya21vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWNvbG9yLXdoaXRlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICghaXNFZGl0TW9kZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRGFya21vZGUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXNFZGl0TW9kZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpc0Rhcmttb2RlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIdG1sXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wYW55VXNlckZ1bGxuYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhSGlnaGxpZ2h0U2luZ2xlU3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzZWFyY2hUZXJtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNhZmVIdG1sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wYW55VXNlckZ1bGxuYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgeW91T3JNZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNEYXJrbW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICcoTWUpJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcoWW91KSc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbGV0IG9yYW5nZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNEYXJrbW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICd0ZXh0LWNvbG9yLW9yYW5nZS0zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICd0ZXh0LWNvbG9yLW9yYW5nZS0yJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDdXJyZW50VXNlciAmJiAhaXNFZGl0TW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYS1mb250LWJvbGQgbWFyZ2luLXgtNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJvcmFuZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgeW91T3JNZSB9fTwvc3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1zaXplLTExIHRleHQtY29sb3ItZ3JleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXNFZGl0TW9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY29tbWVudD8uaXNOZXcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3IENvbW1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWRpdCBDb21tZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudC5jcmVhdGVkQXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGF0ZUZyb21TdHJpbmdQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBlRGF0ZVRpbWVGb3JtYXRzLkRBVEVfVElNRVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY29tbWVudD8uaXNFZGl0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGxldCBlZGl0ZWRUZXh0Q29sb3IgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNEYXJrbW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RleHQtY29sb3ItYmx1ZS0xOSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICd0ZXh0LWNvbG9yLWJsdWUtMTMnO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhLWZvbnQtbWVkaXVtIG1hcmdpbi1sLTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdGVkVGV4dENvbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDigKIgRWRpdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpc0VkaXRNb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgYmFja2dyb3VuZEhvdmVyID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRGFya21vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdiYWNrZ3JvdW5kLWhvdmVyLWJsYWNrJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2JhY2tncm91bmQtaG92ZXItd2hpdGUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbGV0IGljb25GaWxsID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRGFya21vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdzdmctZmlsbC1idy05J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ3N2Zy1maWxsLWJsYWNrLTknO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbGV0IGFjdGlvbkNsYXNzZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWdyZXknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRIb3ZlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uRmlsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbi1ob3ZlciBoLTE4IHctMTggZC1mbGV4IHBsYWNlLWl0ZW1zLWNlbnRlciBici0xIG1hcmdpbi14LTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBCYWNrZ3JvdW5kXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBCYWNrZ3JvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBDb2xvcl09XCJ0b29sdGlwQ29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21haW5DYVRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZUdlbmVyYWxBY3Rpb25zLkNPTkZJUk1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcG9zaXRpb25dPVwiZVBvc2l0aW9uLlRPUFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiYWN0aW9uQ2xhc3Nlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlybUNvbW1lbnQoY29tbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IHN2Zy1zaXplLTEyIGMtcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ljX2NvbmZpcm0nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhU3ZnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBlU2hhcmVkU3RyaW5nLkNPTU1PTl9MT1dFUkNBU0VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb24taG92ZXIgaC0xOCB3LTE4IGQtZmxleCBwbGFjZS1pdGVtcy1jZW50ZXIgYnItMSBtYXJnaW4teC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwQmFja2dyb3VuZF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQmFja2dyb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwQ29sb3JdPVwidG9vbHRpcENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYWluQ2FUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVHZW5lcmFsQWN0aW9ucy5DQU5DRUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcG9zaXRpb25dPVwiZVBvc2l0aW9uLlRPUFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiYWN0aW9uQ2xhc3Nlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJDb21tZW50QWRkT3JFZGl0KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IHN2Zy1zaXplLTEwIGMtcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ljX3gnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhU3ZnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBlU2hhcmVkU3RyaW5nLkNPTU1PTl9MT1dFUkNBU0VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGlzQ3VycmVudFVzZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgaWNvbkhvdmVyRmlsbCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNEYXJrbW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdzdmctaG92ZXItYnctOSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnc3ZnLWhvdmVyLWJsYWNrJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgaWNvbkJhY2tncm91bmRIb3ZlciA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNEYXJrbW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdiYWNrZ3JvdW5kLWhvdmVyLWdyZXktMidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnYmFja2dyb3VuZC1ob3Zlci1kYXJrLTInO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb24taWNvbiBoLTE4IHctMTggcGxhY2UtaXRlbXMtY2VudGVyIGJyLTEgbWFyZ2luLXgtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwQmFja2dyb3VuZF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcEJhY2tncm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwQ29sb3JdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDb2xvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21haW5DYVRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVHZW5lcmFsQWN0aW9ucy5FRElUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcG9zaXRpb25dPVwiZVBvc2l0aW9uLlRPUFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIltcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N2Zy1maWxsLWdyZXknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uSG92ZXJGaWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uQmFja2dyb3VuZEhvdmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25FZGl0Q29tbWVudChjb21tZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IHN2Zy1zaXplLTEyIGMtcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWNfZWRpdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhU3ZnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZVNoYXJlZFN0cmluZy5DT01NT05fTE9XRVJDQVNFXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgdHJhc2hJY29uQmFja2dyb3VuZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNEYXJrbW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdiYWNrZ3JvdW5kLWhvdmVyLWdyZXktMidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnYmFja2dyb3VuZC1ob3Zlci1yZWQtMTUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGxldCB0cmFzaEljb25Ib3ZlciA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNEYXJrbW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdzdmctaG92ZXItYnctOSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnc3ZnLWhvdmVyLXJlZC0xNCc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb24taWNvbiBoLTE4IHctMTggcGxhY2UtaXRlbXMtY2VudGVyIGJyLTEgbWFyZ2luLXgtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwQmFja2dyb3VuZF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcEJhY2tncm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwQ29sb3JdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDb2xvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21haW5DYVRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVHZW5lcmFsQWN0aW9ucy5ERUxFVEVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwb3NpdGlvbl09XCJlUG9zaXRpb24uVE9QXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3ZnLWZpbGwtZ3JleScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYXNoSWNvbkJhY2tncm91bmQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYXNoSWNvbkhvdmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25EZWxldGVDb21tZW50KGNvbW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggc3ZnLXNpemUtMTIgYy1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpY190cmFzaCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhU3ZnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZVNoYXJlZFN0cmluZy5DT01NT05fTE9XRVJDQVNFXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGlzRGFya21vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgYW5pbWF0aW9uU3RhdGVBcnJvdyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDb21tZW50RXhwYW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBlQW5pbWF0aW9uU3RhdGUuUk9UQVRFRFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGVBbmltYXRpb25TdGF0ZS5ERUZBVUxUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGxldCB0b29sdGlwVGV4dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDb21tZW50RXhwYW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBlR2VuZXJhbEFjdGlvbnMuQ09MTEFQU0VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBlR2VuZXJhbEFjdGlvbnMuRVhQQU5EO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWljb24gaC0xOCB3LTE4IHBsYWNlLWl0ZW1zLWNlbnRlciBiYWNrZ3JvdW5kLWhvdmVyLWdyZXktMiBtYXJnaW4tbC0yIGJyLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcEJhY2tncm91bmRdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBCYWNrZ3JvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcENvbG9yXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ29sb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYWluQ2FUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Bvc2l0aW9uXT1cImVQb3NpdGlvbi5UT1BcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25FeHBhbmRDb21tZW50KGNvbW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggc3ZnLXNpemUtMTIgc3ZnLWhvdmVyLWJ3LTkgYy1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpY19hcnJvd19kb3duJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FTdmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBlU2hhcmVkU3RyaW5nLkNPTU1PTl9MT1dFUkNBU0VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnN2Zy1maWxsLXdoaXRlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDb21tZW50RXhwYW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0Byb3RhdGVkU3RhdGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb25TdGF0ZUFycm93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGxldCBpc0V4cGFuZGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQ29tbWVudEV4cGFuZGVkIHx8ICFpc0Rhcmttb2RlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbGV0IGNvbW1lbnRIZWlnaHQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNFeHBhbmRlZCA/ICdhdXRvJyA6ICcxOHB4JztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGlzRWRpdE1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy0xMDAgYmFja2dyb3VuZC10cmFuc3BhcmVudCB0ZXh0LWNvbG9yLWJsYWNrIHRleHQtc2l6ZS0xMSBwYWRkaW5nLXgtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiV3JpdGUgY29tbWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjExMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRGFya21vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICd0ZXh0LWNvbG9yLWJsYWNrJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ3RleHQtY29sb3Itd2hpdGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnRDb250ZW50Rm9ybUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtc2l6ZS0xMSBwYWRkaW5nLXgtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtY29sb3ItYmxhY2snOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNFZGl0TW9kZSAmJiBpc0Rhcmttb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1jb2xvci13aGl0ZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIWlzRWRpdE1vZGUgJiYgaXNEYXJrbW9kZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpc0VkaXRNb2RlICYmICFpc0Rhcmttb2RlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2gtMTgnOiAhaXNFeHBhbmRlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIdG1sXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50Py5jb21tZW50Q29udGVudCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVN0cmluZ1BsYWNlaG9sZGVyLkVNUFRZXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNhZmVIdG1sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogY29tbWVudEhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuY29tbWVudC1jb250ZW50XT1cIiFpc0V4cGFuZGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgQGlmIChpc0Rhcmttb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LTEwMCBkLWZsZXggcGxhY2UtaXRlbXMtY2VudGVyIGJhY2tncm91bmQtYmxhY2sgcGFkZGluZy15LTE1IG1hcmdpbi10LTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1jb2xvci1idzYtMiBjYS1mb250LWV4dHJhLWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm8gUmVzdWx0c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgQGxldCBlbXB0eVN0YXRlQ29udGFpbmVyQ2xhc3MgPVxuICAgICAgICAgICAgICAgIGlzRGFya21vZGUgPyAnaC04MCBiYWNrZ3JvdW5kLWJsYWNrJyA6ICdoLTE2MCc7XG4gICAgICAgICAgICBAbGV0IHN1YnRsZUlsbHVzdHJhdGlvblRleHRDbGFzcyA9XG4gICAgICAgICAgICAgICAgaXNEYXJrbW9kZVxuICAgICAgICAgICAgICAgICAgICA/ICd0ZXh0LXNpemUtMjAgdGV4dC1jb2xvci1idzYtMiBjYS1mb250LWV4dHJhLWJvbGQnXG4gICAgICAgICAgICAgICAgICAgIDogJ3RleHQtc2l6ZS0yOCB0ZXh0LWNvbG9yLWJ3LTkgY2EtZm9udC1ib2xkIHRleHQtdXBwZXJjYXNlJztcbiAgICAgICAgICAgIEBsZXQgZW1wdHlTdGF0ZVRleHRDbGFzcyA9XG4gICAgICAgICAgICAgICAgaXNEYXJrbW9kZVxuICAgICAgICAgICAgICAgICAgICA/ICd0ZXh0LXNpemUtMjAgdGV4dC1jb2xvci1idzYtMiBjYS1mb250LWV4dHJhLWJvbGQnXG4gICAgICAgICAgICAgICAgICAgIDogJ3RleHQtc2l6ZS0yOCB0ZXh0LWNvbG9yLWJ3LTknO1xuICAgICAgICAgICAgQGxldCBlbXB0eVN0YXRlVGV4dCA9IGlzRGFya21vZGUgPyAnRW1wdHkgU3RhdGUnIDogJyhFbXB0eSBTdGF0ZSknO1xuXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgdy0xMDAgbWFyZ2luLXQtNFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZW1wdHlTdGF0ZUNvbnRhaW5lckNsYXNzXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzdWJ0bGVJbGx1c3RyYXRpb25UZXh0Q2xhc3NcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgU3VidGxlIElsbHVzdHJhdGlvblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiIFtuZ0NsYXNzXT1cImVtcHR5U3RhdGVUZXh0Q2xhc3NcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgZW1wdHlTdGF0ZVRleHQgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2Ryb3Bkb3duUG9wb3Zlcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29tbWVudHNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==