ca-components 1.1.7 → 1.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/assets/scss/icons.scss +12 -0
  2. package/assets/scss/styles.scss +4 -0
  3. package/assets/scss/text-selection.scss +42 -0
  4. package/esm2022/lib/components/ca-activity-log-list/ca-activity-log-list.component.mjs +3 -3
  5. package/esm2022/lib/components/ca-collapsible-filter/ca-collapsible-filter.component.mjs +2 -2
  6. package/esm2022/lib/components/ca-comment/ca-comment.component.mjs +2 -2
  7. package/esm2022/lib/components/ca-comment/modals/comment-modal/comment-modal.component.mjs +3 -3
  8. package/esm2022/lib/components/ca-custom-scrollbar/ca-custom-scrollbar.component.mjs +3 -3
  9. package/esm2022/lib/components/ca-details-dropdown/ca-details-dropdown.component.mjs +2 -2
  10. package/esm2022/lib/components/ca-dropdown-menu/ca-dropdown-menu.component.mjs +2 -2
  11. package/esm2022/lib/components/ca-filters/ca-filter.component.mjs +2 -2
  12. package/esm2022/lib/components/ca-filters/components/ca-dispatcher-filter/ca-dispatcher-filter.component.mjs +2 -2
  13. package/esm2022/lib/components/ca-filters/components/ca-location-filter/ca-location-filter.component.mjs +2 -2
  14. package/esm2022/lib/components/ca-filters/components/ca-money-filter/ca-money-filter.component.mjs +2 -2
  15. package/esm2022/lib/components/ca-filters/components/ca-pm-filter/ca-pm-filter.component.mjs +2 -2
  16. package/esm2022/lib/components/ca-filters/components/ca-state-filter/ca-state-filter.component.mjs +2 -2
  17. package/esm2022/lib/components/ca-filters/components/ca-status-filter/ca-status-filter.component.mjs +2 -2
  18. package/esm2022/lib/components/ca-filters/components/ca-time-filter/ca-time-filter.component.mjs +3 -3
  19. package/esm2022/lib/components/ca-filters/components/ca-trailer-type-filter/ca-trailer-type-filter.component.mjs +2 -2
  20. package/esm2022/lib/components/ca-filters/components/ca-truck-type-filter/ca-truck-type-filter.component.mjs +2 -2
  21. package/esm2022/lib/components/ca-filters/components/ca-user-filter/ca-user-filter.component.mjs +2 -2
  22. package/esm2022/lib/components/ca-filters/components/ca-violation-filter/ca-violation-filter.component.mjs +2 -2
  23. package/esm2022/lib/components/ca-input/ca-input.component.mjs +2 -2
  24. package/esm2022/lib/components/ca-input/input-test/input-test.component.mjs +2 -2
  25. package/esm2022/lib/components/ca-input-address-dropdown/ca-input-address-dropdown.component.mjs +2 -2
  26. package/esm2022/lib/components/ca-input-datetime-picker/ca-input-datetime-picker.component.mjs +2 -2
  27. package/esm2022/lib/components/ca-input-dropdown/ca-input-dropdown.component.mjs +3 -4
  28. package/esm2022/lib/components/ca-input-note/ca-input-note.component.mjs +2 -2
  29. package/esm2022/lib/components/ca-logo-change/ca-logo-change.component.mjs +3 -3
  30. package/esm2022/lib/components/ca-map/ca-map.component.mjs +47 -60
  31. package/esm2022/lib/components/ca-map/models/index.mjs +2 -0
  32. package/esm2022/lib/components/ca-map/models/map.model.mjs +1 -1
  33. package/esm2022/lib/components/ca-map/utils/constants/index.mjs +2 -1
  34. package/esm2022/lib/components/ca-map/utils/constants/map-options.constants.mjs +2 -2
  35. package/esm2022/lib/components/ca-map/utils/constants/map.constants.mjs +436 -0
  36. package/esm2022/lib/components/ca-map/utils/helpers/map.helper.mjs +1 -1
  37. package/esm2022/lib/components/ca-map/utils/services/map-marker-icon.service.mjs +1 -1
  38. package/esm2022/lib/components/ca-map-dropdown/ca-map-dropdown.component.mjs +5 -5
  39. package/esm2022/lib/components/ca-map-dropdown/enums/map-dropdown-string.enum.mjs +17 -17
  40. package/esm2022/lib/components/ca-modal-button/ca-modal-button.component.mjs +5 -5
  41. package/esm2022/lib/components/ca-modal-button/enums/modal-button-class-type.enum.mjs +12 -10
  42. package/esm2022/lib/components/ca-modal-button/enums/modal-button-size.enum.mjs +6 -6
  43. package/esm2022/lib/components/ca-modal-button/pipes/modal-button-class.pipe.mjs +1 -1
  44. package/esm2022/lib/components/ca-ngx-slider/ca-ngx-slider.component.mjs +2 -2
  45. package/esm2022/lib/components/ca-note/ca-note.component.mjs +2 -2
  46. package/esm2022/lib/components/ca-note-container/ca-note-container.component.mjs +2 -2
  47. package/esm2022/lib/components/ca-payroll-list-summary-overview/ca-payroll-list-summary-overview.component.mjs +2 -2
  48. package/esm2022/lib/components/ca-period-content/ca-period-content.component.mjs +2 -2
  49. package/esm2022/lib/components/ca-period-content/components/ca-period-content-extra-info/ca-period-content-extra-info.component.mjs +3 -3
  50. package/esm2022/lib/components/ca-period-content/components/ca-period-content-payment/ca-period-content-payment.component.mjs +2 -2
  51. package/esm2022/lib/components/ca-period-content/components/ca-period-content-user-info/ca-period-content-user-info.component.mjs +3 -3
  52. package/esm2022/lib/components/ca-pickup-delivery-block/ca-pickup-delivery-block.component.mjs +3 -3
  53. package/esm2022/lib/components/ca-pickup-delivery-block/components/ca-load/ca-load.component.mjs +3 -3
  54. package/esm2022/lib/components/ca-pickup-delivery-block/components/ca-load/components/ca-load-list/ca-load-list.component.mjs +3 -3
  55. package/esm2022/lib/components/ca-pickup-delivery-block/components/ca-load/components/ca-load-single/ca-load-single.component.mjs +3 -3
  56. package/esm2022/lib/components/ca-profile-image/ca-profile-image.component.mjs +3 -3
  57. package/esm2022/lib/components/ca-progress-bar/ca-progress-bar.component.mjs +40 -75
  58. package/esm2022/lib/components/ca-progress-bar/models/gps-progress.model.mjs +1 -1
  59. package/esm2022/lib/components/ca-progress-expiration/ca-progress-expiration.component.mjs +2 -2
  60. package/esm2022/lib/components/ca-rating-review/ca-rating-review.component.mjs +2 -2
  61. package/esm2022/lib/components/ca-rating-review/components/ca-rating-review-user/ca-rating-review-user.component.mjs +2 -2
  62. package/esm2022/lib/components/ca-rating-review/components/ca-ratings-reviews-popup/ca-ratings-reviews-popup.component.mjs +2 -2
  63. package/esm2022/lib/components/ca-right-side-panel/components/ca-right-side-panel-company/ca-right-side-panel-company.component.mjs +3 -3
  64. package/esm2022/lib/components/ca-right-side-panel/components/ca-right-side-panel-menu/ca-right-side-panel-menu.component.mjs +3 -3
  65. package/esm2022/lib/components/ca-right-side-panel/components/ca-right-side-panel-top-bar/ca-right-side-panel-top-bar.component.mjs +3 -3
  66. package/esm2022/lib/components/ca-search-multiple-states/ca-search-multiple-states.component.mjs +2 -2
  67. package/esm2022/lib/components/ca-sort-dropdown/ca-sort-dropdown.component.mjs +2 -2
  68. package/esm2022/lib/components/ca-spinner/ca-spinner.component.mjs +2 -2
  69. package/esm2022/lib/components/ca-tab-switch/ca-tab-switch.component.mjs +3 -3
  70. package/esm2022/lib/components/ca-todo/ca-todo.component.mjs +3 -3
  71. package/esm2022/lib/components/ca-todo/components/ca-todo-card.component.mjs +3 -3
  72. package/esm2022/lib/components/ca-tooltip-list/ca-tooltip-list.component.mjs +3 -3
  73. package/esm2022/lib/components/ca-truck-trailer-progress-bar/ca-truck-trailer-progress-bar.component.mjs +2 -2
  74. package/esm2022/lib/components/ca-upload-files/ca-upload-files.component.mjs +3 -3
  75. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/ca-upload-dropzone.component.mjs +3 -3
  76. package/esm2022/lib/components/ca-upload-files/components/ca-upload-file/ca-upload-file.component.mjs +2 -2
  77. package/esm2022/lib/components/ca-upload-files/components/ca-upload-files-carousel/ca-upload-files-carousel.component.mjs +3 -3
  78. package/esm2022/lib/models/index.mjs +2 -2
  79. package/esm2022/lib/models/long-lat.model.mjs +2 -0
  80. package/esm2022/public-api.mjs +3 -2
  81. package/fesm2022/ca-components.mjs +239 -285
  82. package/fesm2022/ca-components.mjs.map +1 -1
  83. package/lib/components/ca-filters/ca-filter.component.d.ts +2 -2
  84. package/lib/components/ca-map/ca-map.component.d.ts +9 -9
  85. package/lib/components/ca-map/models/index.d.ts +1 -0
  86. package/lib/components/ca-map/models/map.model.d.ts +5 -0
  87. package/lib/components/ca-map/utils/constants/index.d.ts +1 -0
  88. package/lib/components/ca-map/utils/constants/map-options.constants.d.ts +1 -1
  89. package/lib/components/ca-map/utils/helpers/map.helper.d.ts +1 -1
  90. package/lib/components/ca-map/utils/services/map-marker-icon.service.d.ts +1 -1
  91. package/lib/components/ca-map-dropdown/ca-map-dropdown.component.d.ts +2 -2
  92. package/lib/components/ca-map-dropdown/enums/map-dropdown-string.enum.d.ts +1 -1
  93. package/lib/components/ca-modal-button/ca-modal-button.component.d.ts +3 -3
  94. package/lib/components/ca-modal-button/enums/modal-button-class-type.enum.d.ts +4 -2
  95. package/lib/components/ca-modal-button/enums/modal-button-size.enum.d.ts +1 -1
  96. package/lib/components/ca-modal-button/pipes/modal-button-class.pipe.d.ts +2 -2
  97. package/lib/components/ca-progress-bar/ca-progress-bar.component.d.ts +18 -24
  98. package/lib/components/ca-progress-bar/models/gps-progress.model.d.ts +2 -0
  99. package/lib/models/index.d.ts +1 -0
  100. package/lib/models/long-lat.model.d.ts +4 -0
  101. package/package.json +1 -1
  102. package/public-api.d.ts +2 -1
  103. package/esm2022/lib/constants/map.constant.mjs +0 -436
  104. /package/lib/{constants/map.constant.d.ts → components/ca-map/utils/constants/map.constants.d.ts} +0 -0
@@ -13,7 +13,7 @@ import { MapDropdownSvgRoutes } from '../ca-map-dropdown/utils/svg-routes';
13
13
  import { CaSvgPipe } from '../../pipes/ca-svg.pipe';
14
14
  import { MapDropdownContentPipe, MapDropdownClusterContentPipe, MapDropdownValuePipe, } from './pipes';
15
15
  // enums
16
- import { EMapDropdownStringEnum } from './enums';
16
+ import { eMapDropdownString } from './enums';
17
17
  import * as i0 from "@angular/core";
18
18
  import * as i1 from "@angular/common";
19
19
  import * as i2 from "angular-svg-icon";
@@ -28,7 +28,7 @@ export class CaMapDropdownComponent {
28
28
  this.data = taDetailDropdownJson.taDetailDropDown;
29
29
  this._markerData = null;
30
30
  this.mapDropdownSvgRoutes = MapDropdownSvgRoutes;
31
- this.eMapDropdownStringEnum = EMapDropdownStringEnum;
31
+ this.eMapDropdownString = eMapDropdownString;
32
32
  }
33
33
  set markerData(values) {
34
34
  this._markerData = values;
@@ -68,7 +68,7 @@ export class CaMapDropdownComponent {
68
68
  event.stopPropagation();
69
69
  }
70
70
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CaMapDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
71
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CaMapDropdownComponent, isStandalone: true, selector: "app-ca-map-dropdown", inputs: { infoWindowContent: "infoWindowContent", markerData: "markerData" }, outputs: { onClusterItemClick: "onClusterItemClick", onClusterListScrollToEnd: "onClusterListScrollToEnd", onBackButtonClick: "onBackButtonClick", bodyActions: "bodyActions" }, providers: [SvgIconRegistryService], ngImport: i0, template: "@if (infoWindowContent?.clusterData) {\n @if (infoWindowContent?.selectedClusterItemData) {\n <div\n class=\"marker-container relative\"\n [class.expanded]=\"!isHidden\"\n (click)=\"preventEventPropagation($event, true)\"\n (mousewheel)=\"preventEventPropagation($event)\"\n >\n @for (\n item of infoWindowContent?.selectedClusterItemData.mainContent;\n let i = $index;\n track i\n ) {\n <ng-container\n *ngTemplateOutlet=\"\n dropdownContentTemplate;\n context: {\n content: item,\n data: infoWindowContent?.selectedClusterItemData\n .data,\n }\n \"\n ></ng-container>\n }\n\n <div class=\"expanded-info\" [class.active]=\"!isHidden\">\n @for (\n item of infoWindowContent?.selectedClusterItemData\n .expandedContent;\n let i = $index;\n track i\n ) {\n <ng-container\n *ngTemplateOutlet=\"\n dropdownContentTemplate;\n context: {\n content: item,\n data: infoWindowContent?.selectedClusterItemData\n .data,\n }\n \"\n ></ng-container>\n }\n </div>\n\n <div\n class=\"dropdown-arrow align-self-end\"\n [class.rotate-arrow]=\"!isHidden\"\n >\n <svg-icon\n [src]=\"mapDropdownSvgRoutes.cornerDownArrowRoute\"\n (click)=\"showHiddenData($event)\"\n ></svg-icon>\n </div>\n </div>\n } @else {\n <div\n class=\"cluster-marker-container d-flex flex-column gap-1\"\n (click)=\"preventEventPropagation($event, true)\"\n (mousewheel)=\"onClusterListScroll($event)\"\n >\n @for (\n item of infoWindowContent?.clusterData;\n let i = $index;\n track i\n ) {\n <ng-container\n *ngTemplateOutlet=\"\n clusterContentTemplate;\n context: {\n content: item,\n }\n \"\n ></ng-container>\n }\n </div>\n }\n} @else {\n <div\n class=\"marker-container relative\"\n [class.expanded]=\"!isHidden\"\n (click)=\"preventEventPropagation($event, true)\"\n (mousewheel)=\"preventEventPropagation($event)\"\n >\n @for (item of infoWindowContent?.mainContent; let i = $index; track i) {\n <ng-container\n *ngTemplateOutlet=\"\n dropdownContentTemplate;\n context: {\n content: item,\n data: _markerData,\n }\n \"\n ></ng-container>\n }\n\n <div class=\"expanded-info\" [class.active]=\"!isHidden\">\n @for (\n item of infoWindowContent?.expandedContent;\n let i = $index;\n track i\n ) {\n <ng-container\n *ngTemplateOutlet=\"\n dropdownContentTemplate;\n context: {\n content: item,\n data: _markerData,\n }\n \"\n ></ng-container>\n }\n </div>\n\n <div\n class=\"dropdown-arrow align-self-end\"\n [class.rotate-arrow]=\"!isHidden\"\n >\n <svg-icon\n [src]=\"mapDropdownSvgRoutes.cornerDownArrowRoute\"\n (click)=\"showHiddenData($event)\"\n ></svg-icon>\n </div>\n </div>\n}\n\n<ng-template #clusterContentTemplate let-content=\"content\">\n @let item = content | mapDropdownClusterContentType;\n @if (item) {\n <div\n class=\"d-flex align-items-center justify-content-between cluster-marker-item\"\n (click)=\"clusterItemClick(item)\"\n >\n <div\n class=\"d-flex align-items-center gap-1\"\n [ngStyle]=\"{\n 'max-width': item.favourite ? 'calc(100% - 18px)' : '100%',\n }\"\n >\n @if (item.isClosed) {\n <svg-icon\n class=\"d-flex\"\n [src]=\"mapDropdownSvgRoutes.permanentlyClosedRoute\"\n [svgStyle]=\"{ 'width.px': 18, 'height.px': 18 }\"\n ></svg-icon>\n }\n <div\n class=\"regular-text dark-gray-text uppercase text-ellipsis\"\n >\n {{ item.name }}\n </div>\n </div>\n @if (item.favourite) {\n <svg-icon\n class=\"d-flex\"\n [src]=\"mapDropdownSvgRoutes.favoriteRoute\"\n [svgStyle]=\"{ 'width.px': 18, 'height.px': 18 }\"\n ></svg-icon>\n }\n </div>\n }\n</ng-template>\n\n<ng-template #dropdownContentTemplate let-content=\"content\" let-data=\"data\">\n @let item = content | mapDropdownContentType;\n @if (item) {\n @if (!item.sideBySideInfo) {\n <ng-container\n *ngTemplateOutlet=\"\n dropdownContentItemTemplates;\n context: {\n content: item,\n data: data,\n }\n \"\n ></ng-container>\n } @else {\n <!-- Side by Side Data -->\n <div class=\"d-flex align-items-center\">\n <!-- Left Side -->\n @if (item.sideBySideInfo.leftSide) {\n <div class=\"flex-1\">\n <ng-container\n *ngTemplateOutlet=\"\n dropdownContentItemTemplates;\n context: {\n content: item.sideBySideInfo?.leftSide,\n data: data,\n }\n \"\n >\n </ng-container>\n </div>\n }\n\n <!-- Right Side -->\n @if (item.sideBySideInfo.rightSide) {\n <div class=\"flex-1\">\n <ng-container\n *ngTemplateOutlet=\"\n dropdownContentItemTemplates;\n context: {\n content: item.sideBySideInfo?.rightSide,\n data: data,\n }\n \"\n >\n </ng-container>\n </div>\n }\n </div>\n }\n }\n</ng-template>\n\n<ng-template\n #dropdownContentItemTemplates\n let-content=\"content\"\n let-data=\"data\"\n>\n @let item = content | mapDropdownContentType;\n @if (item) {\n @switch (item?.template) {\n @case (eMapDropdownStringEnum.HEADER_TITLE) {\n <div\n class=\"heading d-flex justify-content-between align-items-center {{\n item.customClassContainer\n }}\"\n >\n <div\n class=\"header-text-container d-flex align-items-center gap-1 w-100\"\n >\n @if (item.hasBackButton) {\n <div\n class=\"header-back-button d-flex align-items-center justify-content-center\"\n (click)=\"backButtonClick($event)\"\n >\n <svg-icon\n class=\"d-flex\"\n [src]=\"mapDropdownSvgRoutes.backButtonRoute\"\n [svgStyle]=\"{\n 'width.px': 14,\n 'height.px': 14,\n }\"\n >\n </svg-icon>\n </div>\n }\n <span\n class=\"header ca-font-extra-bold dark-gray-text {{\n item.customClassText\n }}\"\n >\n {{ data[item.field] }}\n </span>\n </div>\n\n <!-- <div class=\"dropdown-icon\"></div> -->\n <!-- <app-ca-details-dropdown\n #detailsDropdown\n [options]=\"data\"\n [placement]=\"'right-top'\"\n [id]=\"item?.id\"\n [data]=\"item\"\n [customClassDropDown]=\"\n 'map-list-card-dropdown marker-dropdown-popover'\n \"\n (dropDownActions)=\"callBodyAction($event)\"\n ></app-ca-details-dropdown> -->\n </div>\n }\n\n <!-- Rating Review -->\n @case (eMapDropdownStringEnum.RATING_REVIEW) {\n <div\n class=\"d-flex justify-content-start align-items-center align-content-center gap-3 {{\n item.customClassContainer\n }}\"\n >\n <div\n class=\"d-flex justify-content-start align-items-center gap-2\"\n [class.opacity-40]=\"!data[item.field].likeCount\"\n >\n <svg-icon\n class=\"rating-icon like-icon d-flex\"\n [class.active]=\"data[item.field].hasLiked\"\n [src]=\"mapDropdownSvgRoutes.likeRoute\"\n [svgStyle]=\"{ 'width.px': 14, 'height.px': 14 }\"\n ></svg-icon>\n <span\n class=\"small-text dark-gray-text ca-font-semi-bold user-select-none\"\n >{{ data[item.field].likeCount }}\n </span>\n </div>\n <div\n class=\"d-flex justify-content-start align-items-center gap-2\"\n [class.opacity-40]=\"!data[item.field].dislikeCount\"\n >\n <svg-icon\n class=\"rating-icon dislike-icon d-flex\"\n [class.active]=\"data[item.field].hasDislike\"\n [src]=\"mapDropdownSvgRoutes.dislikeRoute\"\n [svgStyle]=\"{ 'width.px': 14, 'height.px': 14 }\"\n ></svg-icon>\n <span\n class=\"small-text dark-gray-text ca-font-semi-bold user-select-none\"\n >{{ data[item.field].dislikeCount }}\n </span>\n </div>\n <div\n class=\"d-flex justify-content-start align-items-center gap-2\"\n [class.opacity-40]=\"!data[item.field].reviewCount\"\n >\n <svg-icon\n class=\"rating-icon review-icon d-flex\"\n [src]=\"mapDropdownSvgRoutes.reviewRoute\"\n [svgStyle]=\"{ 'width.px': 14, 'height.px': 14 }\"\n ></svg-icon>\n <span\n class=\"small-text dark-gray-text ca-font-semi-bold user-select-none\"\n >{{ data[item.field].reviewCount ?? 0 }}\n </span>\n </div>\n </div>\n }\n\n <!-- Border Divider -->\n @case (eMapDropdownStringEnum.DIVIDER) {\n <div class=\"info-divider\"></div>\n }\n\n <!-- Repair Shop Services -->\n @case (eMapDropdownStringEnum.REPAIR_SHOP_SERVICES) {\n <div\n class=\"d-flex align-items-center justify-content-between {{\n item.customClassContainer\n }}\"\n >\n @for (\n service of data[item.field];\n let i = $index;\n track i\n ) {\n <div\n class=\"d-flex align-items-center justify-content-center\"\n ngbTooltip\n [tooltipBackground]=\"'#424242'\"\n [mainCaTooltip]=\"service.serviceType.name\"\n position=\"bottom\"\n >\n <svg-icon\n class=\"repair-service-icon\"\n [class.active]=\"service.active\"\n [src]=\"\n service.logoName\n | caSvg: 'common' : 'repair-services'\n \"\n [svgStyle]=\"{\n 'width.px': 18,\n 'height.px': 18,\n }\"\n ></svg-icon>\n </div>\n }\n </div>\n }\n\n <!-- Icon and Text -->\n @case (eMapDropdownStringEnum.ICON_TEXT) {\n <div\n class=\"d-flex align-items-start gap-1 {{\n item.customClassContainer\n }}\"\n >\n @if (item.url) {\n <div\n ngbTooltip\n [tooltipBackground]=\"'#424242'\"\n [mainCaTooltip]=\"item.iconTooltipText\"\n position=\"bottom\"\n [disableTooltip]=\"!item.iconTooltipText\"\n >\n <svg-icon\n class=\"d-flex align-items-center justify-content-center\"\n [src]=\"item.url\"\n [svgStyle]=\"{ 'width.px': 18, 'height.px': 18 }\"\n ></svg-icon>\n </div>\n }\n <span\n class=\"regular-text dark-gray-text {{\n item.customClassText\n }}\"\n >\n {{ data[item.field] }}\n </span>\n </div>\n }\n\n <!-- Title -->\n @case (eMapDropdownStringEnum.TITLE) {\n <div\n class=\"regular-text dark-gray-text ca-font-extra-bold {{\n item.customClassText\n }}\"\n >\n {{ data[item.field] }}\n </div>\n }\n\n <!-- Title and Count -->\n @case (eMapDropdownStringEnum.TITLE_COUNT) {\n <div\n class=\"d-flex align-items-center gap-1 {{\n item.customClassContainer\n }}\"\n >\n <div class=\"regular-text dark-gray-text ca-font-extra-bold\">\n {{ item.title }}\n </div>\n <div\n class=\"count-number white-text d-flex align-items-center justify-content-center ca-font-bold\"\n >\n {{ data[item.field] }}\n </div>\n </div>\n }\n\n <!-- Money Text -->\n @case (eMapDropdownStringEnum.MONEY_TEXT) {\n <div\n class=\"d-flex align-items-center gap-1 {{\n item.customClassContainer\n }}\"\n >\n <div class=\"regular-text ca-font-bold blue-text\">\n {{\n data?.[item.field] !== '' ? data[item.field] : '$0'\n }}\n </div>\n <div class=\"regular-text light-gray-text ca-font-bold\">\n {{ item.title }}\n </div>\n </div>\n }\n\n <!-- Open Hours -->\n @case (eMapDropdownStringEnum.OPEN_HOURS) {\n <div class=\"d-flex flex-column gap-2\">\n <div\n class=\"regular-text dark-gray-text ca-font-extra-bold {{\n item.customClassText\n }}\"\n >\n {{ item.title }}\n </div>\n <div class=\"open-hours-grid\">\n @if (\n data[item.field]?.openHoursToday &&\n !isShowAllDaysActive\n ) {\n <div class=\"d-flex flex-column flex-1\">\n <div\n class=\"small-text dark-gray-text ca-font-bold\"\n >\n {{ data[item.field].openHoursToday.status }}\n </div>\n <div\n class=\"regular-text dark-gray-text text-ellipsis\"\n >\n {{ data[item.field].openHoursToday.info }}\n </div>\n </div>\n }\n\n @if (data[item.field]?.openHours?.length) {\n @if (isShowAllDaysActive) {\n @for (\n day of data[item.field].openHours;\n let i = $index;\n track i\n ) {\n <div class=\"d-flex flex-column flex-1\">\n <div\n class=\"small-text dark-gray-text ca-font-bold\"\n >\n {{ day.dayOfWeek }}\n </div>\n <div\n class=\"regular-text dark-gray-text text-ellipsis\"\n >\n {{\n day.startTime +\n ' - ' +\n day.endTime\n }}\n </div>\n </div>\n }\n }\n <div\n class=\"d-flex flex-column flex-1 justify-content-end show-all-days-container\"\n >\n <div\n class=\"d-flex align-items-center gap-1\"\n (click)=\"showAllDaysClick()\"\n >\n <svg-icon\n class=\"d-flex\"\n [src]=\"\n mapDropdownSvgRoutes.accidentCalenderRoute\n \"\n [svgStyle]=\"{\n 'width.px': 18,\n 'height.px': 18,\n }\"\n ></svg-icon>\n <div\n class=\"regular-text gray-text cursor-pointer\"\n >\n {{\n isShowAllDaysActive\n ? 'Show today'\n : 'Show all days'\n }}\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Text and Count -->\n @case (eMapDropdownStringEnum.TEXT_COUNT) {\n <div\n class=\"d-flex align-items-center gap-1 {{\n item.customClassContainer\n }}\"\n >\n <div class=\"regular-text {{ item.customClassText }}\">\n {{ item.title }}\n </div>\n <div\n class=\"regular-text ca-font-semi-bold {{\n item.customClassText\n }}\"\n >\n {{ data | mapDropdownValue: item }}\n </div>\n </div>\n }\n\n <!-- Subtitle -->\n @case (eMapDropdownStringEnum.SUBTITLE) {\n <div\n class=\"regular-text dark-gray-text ca-font-extra-bold {{\n item.customClassText\n }}\"\n >\n {{ item.title }}\n </div>\n }\n\n <!-- Regular Text -->\n @case (eMapDropdownStringEnum.TEXT) {\n <div class=\"regular-text black-text {{ item.customClassText }}\">\n {{ data | mapDropdownValue: item }}\n </div>\n }\n\n <!-- Small Subtitle -->\n @case (eMapDropdownStringEnum.SMALL_SUBTITLE) {\n <div\n class=\"small-text dark-gray-text {{ item.customClassText }}\"\n >\n {{ item.title }}\n </div>\n }\n }\n }\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}.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:#dadada}.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:#dadada}.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:#dadada}.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}.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:#42424233!important;color:#424242!important}.text-color-black::selection{background:#42424233!important;color:#424242!important}.text-color-black-2{color:#2f2f2f!important}.text-color-black-2::-moz-selection{background:#2f2f2f33!important;color:#2f2f2f!important}.text-color-black-2::selection{background:#2f2f2f33!important;color:#2f2f2f!important}.text-color-muted{color:#919191!important}.text-color-muted::-moz-selection{background:#91919133!important;color:#919191!important}.text-color-muted::selection{background:#91919133!important;color:#919191!important}.text-color-green{color:#56b4ac!important}.text-color-green::-moz-selection{background:#56b4ac33!important;color:#56b4ac!important}.text-color-green::selection{background:#56b4ac33!important;color:#56b4ac!important}.text-color-blue-13{color:#6692f1!important}.text-color-blue-13::-moz-selection{background:#66921833!important;color:#6692f1!important}.text-color-blue-13::selection{background:#66921833!important;color:#6692f1!important}.text-color-blue-18{color:#3b73ed!important}.text-color-blue-18::-moz-selection{background:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-18::selection{background:#3b73ed33!important;color:#3b73ed!important}.text-color-red-10{color:#e66767!important}.text-color-red-10::-moz-selection{background:#e6676733!important;color:#e66767!important}.text-color-red-10::selection{background:#e6676733!important;color:#e66767!important}.text-color-light-grey{color:#e5e5e5!important}.text-color-light-grey::-moz-selection{background:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey::selection{background:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey-2{color:#aaa!important}.text-color-light-grey-2::-moz-selection{background:#aaa3!important;color:#aaa!important}.text-color-light-grey-2::selection{background:#aaa3!important;color:#aaa!important}.text-color-light-grey-6{color:#ccc!important}.text-color-light-grey-6::-moz-selection{color:#ccc!important;background:#aaa3!important}.text-color-light-grey-6::selection{color:#ccc!important;background:#aaa3!important}.text-color-white{color:#dadada!important}.text-color-white::-moz-selection{color:#dadada!important;background:#fff3!important}.text-color-white::selection{color:#dadada!important;background:#fff3!important}.text-color-white-2{color:#fff!important}.text-color-white-2::-moz-selection{color:#dadada!important;background:#fff3!important}.text-color-white-2::selection{color:#dadada!important;background:#fff3!important}.text-color-white-4{color:#ffffffb2!important}.text-color-white-4::-moz-selection{color:#ffffffb2!important;background:#fff3!important}.text-color-white-4::selection{color:#ffffffb2!important;background:#fff3!important}.text-color-dark-grey{color:#6c6c6c!important}.text-color-dark-grey::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-dark-grey::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw6-2{color:#6c6c6c!important}.text-color-bw6-2::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw6-2::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw-9{color:#dadada!important}.text-color-bw-9::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw-9::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-grey{color:#919191!important}.text-color-grey::-moz-selection{color:#919191!important;background:#91919133!important}.text-color-grey::selection{color:#919191!important;background:#91919133!important}.text-color-grey .address-text::-moz-selection,.text-color-grey .marker-bold-text::-moz-selection{color:#919191!important;background:#91919133!important}.text-color-grey .address-text::selection,.text-color-grey .marker-bold-text::selection{color:#919191!important;background:#91919133!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-26{font-size:26px!important;line-height:32px!important}.text-size-28{font-size:28px!important;line-height:34px!important}@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}}.svg-fill-black svg path{fill:#424242!important}.svg-fill-muted svg path{fill:#919191!important}.svg-fill-bw-9 svg path{fill:#dadada!important}.svg-fill-light-grey-2 svg path{fill:#aaa!important}.svg-fill-light-grey-6 svg path{fill:#ccc!important}.svg-fill-blue-13 svg path{fill:#6692f1!important}.svg-fill-blue-19 svg path{fill:#92b1f5!important}.svg-fill-blue-26 svg path{fill:#4dc5eb!important}.svg-hover-muted svg path{transition:all .3s ease-in-out}.svg-hover-muted:hover svg path{fill:#919191!important}.svg-hover-black svg path{transition:all .3s ease-in-out}.svg-hover-black:hover svg path{fill:#424242!important}.svg-hover-blue-15 svg path{transition:all .3s ease-in-out}.svg-hover-blue-15:hover svg path{fill:#0b49d1!important}.svg-hover-bw6-2 svg path{transition:all .3s ease-in-out}.svg-hover-bw6-2:hover svg path{fill:#6c6c6c!important}.svg-hover-trash-red svg path{transition:all .3s ease-in-out}.svg-hover-trash-red:hover svg path{fill:#ff5050!important}.svg-hover-red-14 svg path{transition:all .3s ease-in-out}.svg-hover-red-14:hover svg path{fill:#c20c0c!important}.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-18 svg{width:18px;height:18px}.svg-size-44-16 svg{width:44px;height:16px}*{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}:host{display:block;height:100%;width:100%}.cluster-marker-container{width:354px;max-height:244px;margin:4px 2px 4px 4px;overflow-y:scroll;cursor:default}.cluster-marker-container::-webkit-scrollbar{width:2px}.cluster-marker-container::-webkit-scrollbar-thumb{background-color:#ccc;border:2px solid #cccccc;border-radius:1px}.cluster-marker-container::-webkit-scrollbar-track{width:2px;background-color:#fff}.cluster-marker-container .cluster-marker-item{max-width:100%;padding:4px;cursor:pointer;border-radius:2px}.cluster-marker-container .cluster-marker-item:hover{background:#eee}.marker-container{width:360px;max-height:214px;padding:8px;transition:max-height .2s ease-in-out;cursor:default}.marker-container.expanded{max-height:396px}.marker-container .heading{max-width:100%;margin-bottom:3px}.marker-container .heading .header-text-container{max-width:calc(100% - 26px)}.marker-container .heading .header-text-container .header-back-button{min-width:18px;min-height:18px;background:#eee;border-radius:1px;cursor:pointer}.marker-container .heading .header-text-container .header-back-button svg-icon svg path{fill:#919191}.marker-container .heading .header-text-container .header{font-family:Montserrat,sans-serif;font-size:16px;line-height:20px;color:#424242}.marker-container .heading .dropdown-icon{min-width:26px;min-height:26px}.marker-container .action .side-space{padding-right:4px}.marker-container .action .side-space .count{font-family:Montserrat,sans-serif;font-size:11px;color:#424242;padding:0 7px;position:relative;left:-1px}.marker-container .action .side-space .grey-color{color:#919191}.marker-container .repair-service-icon svg path{fill:#ccc;fill-opacity:1}.marker-container .repair-service-icon.active svg path{fill:#919191;fill-opacity:1}.marker-container .personal-info-items{font-family:Montserrat,sans-serif}.marker-container .personal-info-items .info{max-width:100%;font-size:14px;line-height:18px;padding:0 5px;color:#2f2f2f;font-family:Montserrat,sans-serif;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.marker-container .working-info-detail{font-family:Montserrat,sans-serif}.marker-container .working-info-detail .working-info-item{font-size:11px;line-height:14px;color:#424242}.marker-container .working-info-detail .working-info-item .working-time{font-size:14px;line-height:18px}.marker-container .load-info .load-heading{font-family:Montserrat,sans-serif;font-size:13px;margin-bottom:5px}.marker-container .load-info .load-heading .load-head-count{background-color:#6c6c6c;border-radius:50%;padding:3px 4px;color:#fff;font-size:7px;margin:1px 4px 0;font-family:Montserrat,sans-serif}.marker-container .load-info .load-info-detail{font-family:Montserrat,sans-serif}.marker-container .load-info .load-info-detail .load-info-item{font-size:12px;line-height:18px;color:#2f2f2f}.marker-container .load-info .load-info-detail .loading-hours{font-size:10px;color:#919191}.marker-container .load-info .load-info-detail .loading-hours .load-time{color:#919191}.marker-container .avg-info .avg-info-detail{font-family:Montserrat,sans-serif}.marker-container .avg-info .avg-info-detail .avg-item .item-date{padding:0 7px;color:#2f2f2f}.infowindow-container{width:300px;padding:2px 9px 9px 0}.infowindow-container .heading-container .heading{margin-top:15px;margin-bottom:3px}.infowindow-container .heading-container .heading .header{font-family:Montserrat,sans-serif;font-size:15px;line-height:19.5px}.infowindow-container .personal-info .personal-info-items{padding:1px 0;margin-bottom:3px;font-family:Montserrat,sans-serif}.infowindow-container .personal-info .personal-info-items .info{font-size:14px;line-height:18px;padding:0 5px;color:#2f2f2f;font-family:Montserrat,sans-serif}.infowindow-container .weight-info .weight-heading{font-family:Montserrat,sans-serif;font-size:13px;margin-bottom:5px}.infowindow-container .weight-info .weight-heading .weight-head-count{background-color:#6c6c6c;border-radius:50%;padding:3px 4px;color:#fff;font-size:7px;margin:1px 4px 0;font-family:Montserrat,sans-serif}.infowindow-container .weight-info .weight-info-detail{font-family:Montserrat,sans-serif}.infowindow-container .weight-info .weight-info-detail .weight-info-item{font-size:12px;line-height:18px;color:#424242}.infowindow-container .weight-info .weight-info-detail .weight-info-item .weight-time{color:#424242;padding:0 5px}.infowindow-container .transport-info .transport-container{margin-top:15px;font-family:Montserrat,sans-serif;margin-bottom:10px}.infowindow-container .transport-info .transport-container .driver-info .side-space{margin-left:20px}.infowindow-container .transport-info .transport-container .driver-info .title{font-size:11px;line-height:14px}.infowindow-container .transport-info .transport-container .driver-info .detail{font-size:13px;line-height:18px;color:#2f2f2f}.infowindow-container .transport-info .transport-container .truck-info .side-space{margin-left:50px}.infowindow-container .transport-info .transport-container .truck-info .title{font-size:11px;line-height:14px}.infowindow-container .transport-info .transport-container .truck-info .detail{font-size:13px;line-height:18px;color:#2f2f2f}.info-divider{margin:8px 0;width:100%;height:1px;background:#dadada;border-radius:2px}.dropdown-arrow{position:absolute;right:6px;bottom:6px}.dropdown-arrow svg{transition:transform .2s ease-in-out;transform:rotate(0)}.dropdown-arrow svg path{transition:fill .2s ease-in-out;fill:#919191}.dropdown-arrow.rotate-arrow svg{transform:rotate(180deg)}.dropdown-arrow.rotate-arrow svg path{fill:#6692f1}.dropdown-arrow:hover{cursor:pointer}.dropdown-arrow:hover svg path{fill:#6692f1}.expanded-info{max-height:0px;overflow:hidden;transition:max-height .2s ease-in-out}.expanded-info.active{max-height:300px}.gap-8{gap:8px}.count-number{padding:0 5px;background:#6c6c6c;border-radius:60px;font-size:11px;line-height:14px;-webkit-user-select:none;user-select:none}.rating-icon svg path{fill:#919191;fill-opacity:1}.rating-icon.active.like-icon svg path{fill:#56b4ac}.rating-icon.active.dislike-icon svg path{fill:#e66767}.text-ellipsis{max-width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.text-ellipsis.two-rows-ellipsis{max-width:90%;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;white-space:initial}.blue-text{color:#6692f1!important}.blue-text::-moz-selection{color:#6692f1;background:#3b73ed33}.blue-text::selection{color:#6692f1;background:#3b73ed33}.red-text{color:#df3c3c!important}.red-text::-moz-selection{color:#df3c3c;background:#df3c3c33}.red-text::selection{color:#df3c3c;background:#df3c3c33}.gray-text{color:#919191!important}.gray-text::-moz-selection{color:#919191;background:#91919133}.gray-text::selection{color:#919191;background:#91919133}.light-gray-text{color:#6c6c6c}.light-gray-text::-moz-selection{color:#6c6c6c;background:#6c6c6c33}.light-gray-text::selection{color:#6c6c6c;background:#6c6c6c33}.dark-gray-text{color:#424242}.dark-gray-text::-moz-selection{color:#424242;background:#42424233}.dark-gray-text::selection{color:#424242;background:#42424233}.black-text{color:#2f2f2f}.black-text::-moz-selection{color:#2f2f2f;background:#2f2f2f33}.black-text::selection{color:#2f2f2f;background:#2f2f2f33}.white-text{color:#dadada}.white-text::-moz-selection{color:#dadada;background:#fff3}.white-text::selection{color:#dadada;background:#fff3}.opacity-40{opacity:.4}.regular-text{font-size:14px;line-height:18px;font-family:Montserrat,sans-serif}.small-text{font-size:11px;line-height:14px;font-family:Montserrat,sans-serif}.open-hours-grid{display:grid;grid-template-columns:50% 50%;grid-row-gap:8px}.cursor-pointer{cursor:pointer}.show-all-days-container{grid-column:2/span 1}\n"], dependencies: [{ kind: "ngmodule", type:
71
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CaMapDropdownComponent, isStandalone: true, selector: "app-ca-map-dropdown", inputs: { infoWindowContent: "infoWindowContent", markerData: "markerData" }, outputs: { onClusterItemClick: "onClusterItemClick", onClusterListScrollToEnd: "onClusterListScrollToEnd", onBackButtonClick: "onBackButtonClick", bodyActions: "bodyActions" }, providers: [SvgIconRegistryService], ngImport: i0, template: "@if (infoWindowContent?.clusterData) {\n @if (infoWindowContent?.selectedClusterItemData) {\n <div\n class=\"marker-container relative\"\n [class.expanded]=\"!isHidden\"\n (click)=\"preventEventPropagation($event, true)\"\n (mousewheel)=\"preventEventPropagation($event)\"\n >\n @for (\n item of infoWindowContent?.selectedClusterItemData.mainContent;\n let i = $index;\n track i\n ) {\n <ng-container\n *ngTemplateOutlet=\"\n dropdownContentTemplate;\n context: {\n content: item,\n data: infoWindowContent?.selectedClusterItemData\n .data,\n }\n \"\n ></ng-container>\n }\n\n <div class=\"expanded-info\" [class.active]=\"!isHidden\">\n @for (\n item of infoWindowContent?.selectedClusterItemData\n .expandedContent;\n let i = $index;\n track i\n ) {\n <ng-container\n *ngTemplateOutlet=\"\n dropdownContentTemplate;\n context: {\n content: item,\n data: infoWindowContent?.selectedClusterItemData\n .data,\n }\n \"\n ></ng-container>\n }\n </div>\n\n <div\n class=\"dropdown-arrow align-self-end\"\n [class.rotate-arrow]=\"!isHidden\"\n >\n <svg-icon\n [src]=\"mapDropdownSvgRoutes.cornerDownArrowRoute\"\n (click)=\"showHiddenData($event)\"\n ></svg-icon>\n </div>\n </div>\n } @else {\n <div\n class=\"cluster-marker-container d-flex flex-column gap-1\"\n (click)=\"preventEventPropagation($event, true)\"\n (mousewheel)=\"onClusterListScroll($event)\"\n >\n @for (\n item of infoWindowContent?.clusterData;\n let i = $index;\n track i\n ) {\n <ng-container\n *ngTemplateOutlet=\"\n clusterContentTemplate;\n context: {\n content: item,\n }\n \"\n ></ng-container>\n }\n </div>\n }\n} @else {\n <div\n class=\"marker-container relative\"\n [class.expanded]=\"!isHidden\"\n (click)=\"preventEventPropagation($event, true)\"\n (mousewheel)=\"preventEventPropagation($event)\"\n >\n @for (item of infoWindowContent?.mainContent; let i = $index; track i) {\n <ng-container\n *ngTemplateOutlet=\"\n dropdownContentTemplate;\n context: {\n content: item,\n data: _markerData,\n }\n \"\n ></ng-container>\n }\n\n <div class=\"expanded-info\" [class.active]=\"!isHidden\">\n @for (\n item of infoWindowContent?.expandedContent;\n let i = $index;\n track i\n ) {\n <ng-container\n *ngTemplateOutlet=\"\n dropdownContentTemplate;\n context: {\n content: item,\n data: _markerData,\n }\n \"\n ></ng-container>\n }\n </div>\n\n <div\n class=\"dropdown-arrow align-self-end\"\n [class.rotate-arrow]=\"!isHidden\"\n >\n <svg-icon\n [src]=\"mapDropdownSvgRoutes.cornerDownArrowRoute\"\n (click)=\"showHiddenData($event)\"\n ></svg-icon>\n </div>\n </div>\n}\n\n<ng-template #clusterContentTemplate let-content=\"content\">\n @let item = content | mapDropdownClusterContentType;\n @if (item) {\n <div\n class=\"d-flex align-items-center justify-content-between cluster-marker-item\"\n (click)=\"clusterItemClick(item)\"\n >\n <div\n class=\"d-flex align-items-center gap-1\"\n [ngStyle]=\"{\n 'max-width': item.favourite ? 'calc(100% - 18px)' : '100%',\n }\"\n >\n @if (item.isClosed) {\n <svg-icon\n class=\"d-flex\"\n [src]=\"mapDropdownSvgRoutes.permanentlyClosedRoute\"\n [svgStyle]=\"{ 'width.px': 18, 'height.px': 18 }\"\n ></svg-icon>\n }\n <div\n class=\"regular-text dark-gray-text uppercase text-ellipsis\"\n >\n {{ item.name }}\n </div>\n </div>\n @if (item.favourite) {\n <svg-icon\n class=\"d-flex\"\n [src]=\"mapDropdownSvgRoutes.favoriteRoute\"\n [svgStyle]=\"{ 'width.px': 18, 'height.px': 18 }\"\n ></svg-icon>\n }\n </div>\n }\n</ng-template>\n\n<ng-template #dropdownContentTemplate let-content=\"content\" let-data=\"data\">\n @let item = content | mapDropdownContentType;\n @if (item) {\n @if (!item.sideBySideInfo) {\n <ng-container\n *ngTemplateOutlet=\"\n dropdownContentItemTemplates;\n context: {\n content: item,\n data: data,\n }\n \"\n ></ng-container>\n } @else {\n <!-- Side by Side Data -->\n <div class=\"d-flex align-items-center\">\n <!-- Left Side -->\n @if (item.sideBySideInfo.leftSide) {\n <div class=\"flex-1\">\n <ng-container\n *ngTemplateOutlet=\"\n dropdownContentItemTemplates;\n context: {\n content: item.sideBySideInfo?.leftSide,\n data: data,\n }\n \"\n >\n </ng-container>\n </div>\n }\n\n <!-- Right Side -->\n @if (item.sideBySideInfo.rightSide) {\n <div class=\"flex-1\">\n <ng-container\n *ngTemplateOutlet=\"\n dropdownContentItemTemplates;\n context: {\n content: item.sideBySideInfo?.rightSide,\n data: data,\n }\n \"\n >\n </ng-container>\n </div>\n }\n </div>\n }\n }\n</ng-template>\n\n<ng-template\n #dropdownContentItemTemplates\n let-content=\"content\"\n let-data=\"data\"\n>\n @let item = content | mapDropdownContentType;\n @if (item) {\n @switch (item?.template) {\n @case (eMapDropdownString.HEADER_TITLE) {\n <div\n class=\"heading d-flex justify-content-between align-items-center {{\n item.customClassContainer\n }}\"\n >\n <div\n class=\"header-text-container d-flex align-items-center gap-1 w-100\"\n >\n @if (item.hasBackButton) {\n <div\n class=\"header-back-button d-flex align-items-center justify-content-center\"\n (click)=\"backButtonClick($event)\"\n >\n <svg-icon\n class=\"d-flex\"\n [src]=\"mapDropdownSvgRoutes.backButtonRoute\"\n [svgStyle]=\"{\n 'width.px': 14,\n 'height.px': 14,\n }\"\n >\n </svg-icon>\n </div>\n }\n <span\n class=\"header ca-font-extra-bold dark-gray-text {{\n item.customClassText\n }}\"\n >\n {{ data[item.field] }}\n </span>\n </div>\n\n <!-- <div class=\"dropdown-icon\"></div> -->\n <!-- <app-ca-details-dropdown\n #detailsDropdown\n [options]=\"data\"\n [placement]=\"'right-top'\"\n [id]=\"item?.id\"\n [data]=\"item\"\n [customClassDropDown]=\"\n 'map-list-card-dropdown marker-dropdown-popover'\n \"\n (dropDownActions)=\"callBodyAction($event)\"\n ></app-ca-details-dropdown> -->\n </div>\n }\n\n <!-- Rating Review -->\n @case (eMapDropdownString.RATING_REVIEW) {\n <div\n class=\"d-flex justify-content-start align-items-center align-content-center gap-3 {{\n item.customClassContainer\n }}\"\n >\n <div\n class=\"d-flex justify-content-start align-items-center gap-2\"\n [class.opacity-40]=\"!data[item.field].likeCount\"\n >\n <svg-icon\n class=\"rating-icon like-icon d-flex\"\n [class.active]=\"data[item.field].hasLiked\"\n [src]=\"mapDropdownSvgRoutes.likeRoute\"\n [svgStyle]=\"{ 'width.px': 14, 'height.px': 14 }\"\n ></svg-icon>\n <span\n class=\"small-text dark-gray-text ca-font-semi-bold user-select-none\"\n >{{ data[item.field].likeCount }}\n </span>\n </div>\n <div\n class=\"d-flex justify-content-start align-items-center gap-2\"\n [class.opacity-40]=\"!data[item.field].dislikeCount\"\n >\n <svg-icon\n class=\"rating-icon dislike-icon d-flex\"\n [class.active]=\"data[item.field].hasDislike\"\n [src]=\"mapDropdownSvgRoutes.dislikeRoute\"\n [svgStyle]=\"{ 'width.px': 14, 'height.px': 14 }\"\n ></svg-icon>\n <span\n class=\"small-text dark-gray-text ca-font-semi-bold user-select-none\"\n >{{ data[item.field].dislikeCount }}\n </span>\n </div>\n <div\n class=\"d-flex justify-content-start align-items-center gap-2\"\n [class.opacity-40]=\"!data[item.field].reviewCount\"\n >\n <svg-icon\n class=\"rating-icon review-icon d-flex\"\n [src]=\"mapDropdownSvgRoutes.reviewRoute\"\n [svgStyle]=\"{ 'width.px': 14, 'height.px': 14 }\"\n ></svg-icon>\n <span\n class=\"small-text dark-gray-text ca-font-semi-bold user-select-none\"\n >{{ data[item.field].reviewCount ?? 0 }}\n </span>\n </div>\n </div>\n }\n\n <!-- Border Divider -->\n @case (eMapDropdownString.DIVIDER) {\n <div class=\"info-divider\"></div>\n }\n\n <!-- Repair Shop Services -->\n @case (eMapDropdownString.REPAIR_SHOP_SERVICES) {\n <div\n class=\"d-flex align-items-center justify-content-between {{\n item.customClassContainer\n }}\"\n >\n @for (\n service of data[item.field];\n let i = $index;\n track i\n ) {\n <div\n class=\"d-flex align-items-center justify-content-center\"\n ngbTooltip\n [tooltipBackground]=\"'#424242'\"\n [mainCaTooltip]=\"service.serviceType.name\"\n position=\"bottom\"\n >\n <svg-icon\n class=\"repair-service-icon\"\n [class.active]=\"service.active\"\n [src]=\"\n service.logoName\n | caSvg: 'common' : 'repair-services'\n \"\n [svgStyle]=\"{\n 'width.px': 18,\n 'height.px': 18,\n }\"\n ></svg-icon>\n </div>\n }\n </div>\n }\n\n <!-- Icon and Text -->\n @case (eMapDropdownString.ICON_TEXT) {\n <div\n class=\"d-flex align-items-start gap-1 {{\n item.customClassContainer\n }}\"\n >\n @if (item.url) {\n <div\n ngbTooltip\n [tooltipBackground]=\"'#424242'\"\n [mainCaTooltip]=\"item.iconTooltipText\"\n position=\"bottom\"\n [disableTooltip]=\"!item.iconTooltipText\"\n >\n <svg-icon\n class=\"d-flex align-items-center justify-content-center\"\n [src]=\"item.url\"\n [svgStyle]=\"{ 'width.px': 18, 'height.px': 18 }\"\n ></svg-icon>\n </div>\n }\n <span\n class=\"regular-text dark-gray-text {{\n item.customClassText\n }}\"\n >\n {{ data[item.field] }}\n </span>\n </div>\n }\n\n <!-- Title -->\n @case (eMapDropdownString.TITLE) {\n <div\n class=\"regular-text dark-gray-text ca-font-extra-bold {{\n item.customClassText\n }}\"\n >\n {{ data[item.field] }}\n </div>\n }\n\n <!-- Title and Count -->\n @case (eMapDropdownString.TITLE_COUNT) {\n <div\n class=\"d-flex align-items-center gap-1 {{\n item.customClassContainer\n }}\"\n >\n <div class=\"regular-text dark-gray-text ca-font-extra-bold\">\n {{ item.title }}\n </div>\n <div\n class=\"count-number white-text d-flex align-items-center justify-content-center ca-font-bold\"\n >\n {{ data[item.field] }}\n </div>\n </div>\n }\n\n <!-- Money Text -->\n @case (eMapDropdownString.MONEY_TEXT) {\n <div\n class=\"d-flex align-items-center gap-1 {{\n item.customClassContainer\n }}\"\n >\n <div class=\"regular-text ca-font-bold blue-text\">\n {{\n data?.[item.field] !== '' ? data[item.field] : '$0'\n }}\n </div>\n <div class=\"regular-text light-gray-text ca-font-bold\">\n {{ item.title }}\n </div>\n </div>\n }\n\n <!-- Open Hours -->\n @case (eMapDropdownString.OPEN_HOURS) {\n <div class=\"d-flex flex-column gap-2\">\n <div\n class=\"regular-text dark-gray-text ca-font-extra-bold {{\n item.customClassText\n }}\"\n >\n {{ item.title }}\n </div>\n <div class=\"open-hours-grid\">\n @if (\n data[item.field]?.openHoursToday &&\n !isShowAllDaysActive\n ) {\n <div class=\"d-flex flex-column flex-1\">\n <div\n class=\"small-text dark-gray-text ca-font-bold\"\n >\n {{ data[item.field].openHoursToday.status }}\n </div>\n <div\n class=\"regular-text dark-gray-text text-ellipsis\"\n >\n {{ data[item.field].openHoursToday.info }}\n </div>\n </div>\n }\n\n @if (data[item.field]?.openHours?.length) {\n @if (isShowAllDaysActive) {\n @for (\n day of data[item.field].openHours;\n let i = $index;\n track i\n ) {\n <div class=\"d-flex flex-column flex-1\">\n <div\n class=\"small-text dark-gray-text ca-font-bold\"\n >\n {{ day.dayOfWeek }}\n </div>\n <div\n class=\"regular-text dark-gray-text text-ellipsis\"\n >\n {{\n day.startTime +\n ' - ' +\n day.endTime\n }}\n </div>\n </div>\n }\n }\n <div\n class=\"d-flex flex-column flex-1 justify-content-end show-all-days-container\"\n >\n <div\n class=\"d-flex align-items-center gap-1\"\n (click)=\"showAllDaysClick()\"\n >\n <svg-icon\n class=\"d-flex\"\n [src]=\"\n mapDropdownSvgRoutes.accidentCalenderRoute\n \"\n [svgStyle]=\"{\n 'width.px': 18,\n 'height.px': 18,\n }\"\n ></svg-icon>\n <div\n class=\"regular-text gray-text cursor-pointer\"\n >\n {{\n isShowAllDaysActive\n ? 'Show today'\n : 'Show all days'\n }}\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Text and Count -->\n @case (eMapDropdownString.TEXT_COUNT) {\n <div\n class=\"d-flex align-items-center gap-1 {{\n item.customClassContainer\n }}\"\n >\n <div class=\"regular-text {{ item.customClassText }}\">\n {{ item.title }}\n </div>\n <div\n class=\"regular-text ca-font-semi-bold {{\n item.customClassText\n }}\"\n >\n {{ data | mapDropdownValue: item }}\n </div>\n </div>\n }\n\n <!-- Subtitle -->\n @case (eMapDropdownString.SUBTITLE) {\n <div\n class=\"regular-text dark-gray-text ca-font-extra-bold {{\n item.customClassText\n }}\"\n >\n {{ item.title }}\n </div>\n }\n\n <!-- Regular Text -->\n @case (eMapDropdownString.TEXT) {\n <div class=\"regular-text black-text {{ item.customClassText }}\">\n {{ data | mapDropdownValue: item }}\n </div>\n }\n\n <!-- Small Subtitle -->\n @case (eMapDropdownString.SMALL_SUBTITLE) {\n <div\n class=\"small-text dark-gray-text {{ item.customClassText }}\"\n >\n {{ item.title }}\n </div>\n }\n }\n }\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}.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:#dadada}.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:#dadada}.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:#dadada}.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}.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:#42424233!important;color:#424242!important}.text-color-black::selection{background:#42424233!important;color:#424242!important}.text-color-black-2{color:#2f2f2f!important}.text-color-black-2::-moz-selection{background:#2f2f2f33!important;color:#2f2f2f!important}.text-color-black-2::selection{background:#2f2f2f33!important;color:#2f2f2f!important}.text-color-muted{color:#919191!important}.text-color-muted::-moz-selection{background:#91919133!important;color:#919191!important}.text-color-muted::selection{background:#91919133!important;color:#919191!important}.text-color-green{color:#56b4ac!important}.text-color-green::-moz-selection{background:#56b4ac33!important;color:#56b4ac!important}.text-color-green::selection{background:#56b4ac33!important;color:#56b4ac!important}.text-color-green-4{color:#86c9c3!important}.text-color-green-4::-moz-selection{background:#86c9c333!important;color:#86c9c3!important}.text-color-green-4::selection{background:#86c9c333!important;color:#86c9c3!important}.text-color-blue-13{color:#6692f1!important}.text-color-blue-13::-moz-selection{background:#66921833!important;color:#6692f1!important}.text-color-blue-13::selection{background:#66921833!important;color:#6692f1!important}.text-color-blue-18{color:#3b73ed!important}.text-color-blue-18::-moz-selection{background:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-18::selection{background:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-19{color:#92b1f5!important}.text-color-blue-19::-moz-selection{background:#92b1f533!important;color:#92b1f5!important}.text-color-blue-19::selection{background:#92b1f533!important;color:#92b1f5!important}.text-color-red-10{color:#e66767!important}.text-color-red-10::-moz-selection{background:#e6676733!important;color:#e66767!important}.text-color-red-10::selection{background:#e6676733!important;color:#e66767!important}.text-color-red-13{color:#ed9292!important}.text-color-red-13::-moz-selection{background:#ed929233!important;color:#ed9292!important}.text-color-red-13::selection{background:#ed929233!important;color:#ed9292!important}.text-color-light-grey{color:#e5e5e5!important}.text-color-light-grey::-moz-selection{background:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey::selection{background:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey-2{color:#aaa!important}.text-color-light-grey-2::-moz-selection{background:#aaa3!important;color:#aaa!important}.text-color-light-grey-2::selection{background:#aaa3!important;color:#aaa!important}.text-color-light-grey-6{color:#ccc!important}.text-color-light-grey-6::-moz-selection{color:#ccc!important;background:#aaa3!important}.text-color-light-grey-6::selection{color:#ccc!important;background:#aaa3!important}.text-color-white{color:#dadada!important}.text-color-white::-moz-selection{color:#dadada!important;background:#fff3!important}.text-color-white::selection{color:#dadada!important;background:#fff3!important}.text-color-white-2{color:#fff!important}.text-color-white-2::-moz-selection{color:#dadada!important;background:#fff3!important}.text-color-white-2::selection{color:#dadada!important;background:#fff3!important}.text-color-white-4{color:#ffffffb2!important}.text-color-white-4::-moz-selection{color:#ffffffb2!important;background:#fff3!important}.text-color-white-4::selection{color:#ffffffb2!important;background:#fff3!important}.text-color-dark-grey{color:#6c6c6c!important}.text-color-dark-grey::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-dark-grey::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw6-2{color:#6c6c6c!important}.text-color-bw6-2::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw6-2::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw-9{color:#dadada!important}.text-color-bw-9::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw-9::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-grey{color:#919191!important}.text-color-grey::-moz-selection{color:#919191!important;background:#91919133!important}.text-color-grey::selection{color:#919191!important;background:#91919133!important}.text-color-grey .address-text::-moz-selection,.text-color-grey .marker-bold-text::-moz-selection{color:#919191!important;background:#91919133!important}.text-color-grey .address-text::selection,.text-color-grey .marker-bold-text::selection{color:#919191!important;background:#91919133!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-26{font-size:26px!important;line-height:32px!important}.text-size-28{font-size:28px!important;line-height:34px!important}@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}}.svg-fill-black svg path{fill:#424242!important}.svg-fill-muted svg path{fill:#919191!important}.svg-fill-bw-9 svg path{fill:#dadada!important}.svg-fill-light-grey-2 svg path{fill:#aaa!important}.svg-fill-light-grey-6 svg path{fill:#ccc!important}.svg-fill-blue-13 svg path{fill:#6692f1!important}.svg-fill-blue-19 svg path{fill:#92b1f5!important}.svg-fill-blue-26 svg path{fill:#4dc5eb!important}.svg-fill-grey svg path{fill:#919191!important}.svg-fill-red-10 svg path{fill:#e66767!important}.svg-fill-green svg path{fill:#56b4ac!important}.svg-hover-muted svg path{transition:all .3s ease-in-out}.svg-hover-muted:hover svg path{fill:#919191!important}.svg-hover-black svg path{transition:all .3s ease-in-out}.svg-hover-black:hover svg path{fill:#424242!important}.svg-hover-blue-15 svg path{transition:all .3s ease-in-out}.svg-hover-blue-15:hover svg path{fill:#0b49d1!important}.svg-hover-bw6-2 svg path{transition:all .3s ease-in-out}.svg-hover-bw6-2:hover svg path{fill:#6c6c6c!important}.svg-hover-trash-red svg path{transition:all .3s ease-in-out}.svg-hover-trash-red:hover svg path{fill:#ff5050!important}.svg-hover-red-14 svg path{transition:all .3s ease-in-out}.svg-hover-red-14:hover svg path{fill:#c20c0c!important}.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-18 svg{width:18px;height:18px}.svg-size-22 svg{width:22px;height:22px}.svg-size-44-16 svg{width:44px;height:16px}*{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}:host{display:block;height:100%;width:100%}.cluster-marker-container{width:354px;max-height:244px;margin:4px 2px 4px 4px;overflow-y:scroll;cursor:default}.cluster-marker-container::-webkit-scrollbar{width:2px}.cluster-marker-container::-webkit-scrollbar-thumb{background-color:#ccc;border:2px solid #cccccc;border-radius:1px}.cluster-marker-container::-webkit-scrollbar-track{width:2px;background-color:#fff}.cluster-marker-container .cluster-marker-item{max-width:100%;padding:4px;cursor:pointer;border-radius:2px}.cluster-marker-container .cluster-marker-item:hover{background:#eee}.marker-container{width:360px;max-height:214px;padding:8px;transition:max-height .2s ease-in-out;cursor:default}.marker-container.expanded{max-height:396px}.marker-container .heading{max-width:100%;margin-bottom:3px}.marker-container .heading .header-text-container{max-width:calc(100% - 26px)}.marker-container .heading .header-text-container .header-back-button{min-width:18px;min-height:18px;background:#eee;border-radius:1px;cursor:pointer}.marker-container .heading .header-text-container .header-back-button svg-icon svg path{fill:#919191}.marker-container .heading .header-text-container .header{font-family:Montserrat,sans-serif;font-size:16px;line-height:20px;color:#424242}.marker-container .heading .dropdown-icon{min-width:26px;min-height:26px}.marker-container .action .side-space{padding-right:4px}.marker-container .action .side-space .count{font-family:Montserrat,sans-serif;font-size:11px;color:#424242;padding:0 7px;position:relative;left:-1px}.marker-container .action .side-space .grey-color{color:#919191}.marker-container .repair-service-icon svg path{fill:#ccc;fill-opacity:1}.marker-container .repair-service-icon.active svg path{fill:#919191;fill-opacity:1}.marker-container .personal-info-items{font-family:Montserrat,sans-serif}.marker-container .personal-info-items .info{max-width:100%;font-size:14px;line-height:18px;padding:0 5px;color:#2f2f2f;font-family:Montserrat,sans-serif;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.marker-container .working-info-detail{font-family:Montserrat,sans-serif}.marker-container .working-info-detail .working-info-item{font-size:11px;line-height:14px;color:#424242}.marker-container .working-info-detail .working-info-item .working-time{font-size:14px;line-height:18px}.marker-container .load-info .load-heading{font-family:Montserrat,sans-serif;font-size:13px;margin-bottom:5px}.marker-container .load-info .load-heading .load-head-count{background-color:#6c6c6c;border-radius:50%;padding:3px 4px;color:#fff;font-size:7px;margin:1px 4px 0;font-family:Montserrat,sans-serif}.marker-container .load-info .load-info-detail{font-family:Montserrat,sans-serif}.marker-container .load-info .load-info-detail .load-info-item{font-size:12px;line-height:18px;color:#2f2f2f}.marker-container .load-info .load-info-detail .loading-hours{font-size:10px;color:#919191}.marker-container .load-info .load-info-detail .loading-hours .load-time{color:#919191}.marker-container .avg-info .avg-info-detail{font-family:Montserrat,sans-serif}.marker-container .avg-info .avg-info-detail .avg-item .item-date{padding:0 7px;color:#2f2f2f}.infowindow-container{width:300px;padding:2px 9px 9px 0}.infowindow-container .heading-container .heading{margin-top:15px;margin-bottom:3px}.infowindow-container .heading-container .heading .header{font-family:Montserrat,sans-serif;font-size:15px;line-height:19.5px}.infowindow-container .personal-info .personal-info-items{padding:1px 0;margin-bottom:3px;font-family:Montserrat,sans-serif}.infowindow-container .personal-info .personal-info-items .info{font-size:14px;line-height:18px;padding:0 5px;color:#2f2f2f;font-family:Montserrat,sans-serif}.infowindow-container .weight-info .weight-heading{font-family:Montserrat,sans-serif;font-size:13px;margin-bottom:5px}.infowindow-container .weight-info .weight-heading .weight-head-count{background-color:#6c6c6c;border-radius:50%;padding:3px 4px;color:#fff;font-size:7px;margin:1px 4px 0;font-family:Montserrat,sans-serif}.infowindow-container .weight-info .weight-info-detail{font-family:Montserrat,sans-serif}.infowindow-container .weight-info .weight-info-detail .weight-info-item{font-size:12px;line-height:18px;color:#424242}.infowindow-container .weight-info .weight-info-detail .weight-info-item .weight-time{color:#424242;padding:0 5px}.infowindow-container .transport-info .transport-container{margin-top:15px;font-family:Montserrat,sans-serif;margin-bottom:10px}.infowindow-container .transport-info .transport-container .driver-info .side-space{margin-left:20px}.infowindow-container .transport-info .transport-container .driver-info .title{font-size:11px;line-height:14px}.infowindow-container .transport-info .transport-container .driver-info .detail{font-size:13px;line-height:18px;color:#2f2f2f}.infowindow-container .transport-info .transport-container .truck-info .side-space{margin-left:50px}.infowindow-container .transport-info .transport-container .truck-info .title{font-size:11px;line-height:14px}.infowindow-container .transport-info .transport-container .truck-info .detail{font-size:13px;line-height:18px;color:#2f2f2f}.info-divider{margin:8px 0;width:100%;height:1px;background:#dadada;border-radius:2px}.dropdown-arrow{position:absolute;right:6px;bottom:6px}.dropdown-arrow svg{transition:transform .2s ease-in-out;transform:rotate(0)}.dropdown-arrow svg path{transition:fill .2s ease-in-out;fill:#919191}.dropdown-arrow.rotate-arrow svg{transform:rotate(180deg)}.dropdown-arrow.rotate-arrow svg path{fill:#6692f1}.dropdown-arrow:hover{cursor:pointer}.dropdown-arrow:hover svg path{fill:#6692f1}.expanded-info{max-height:0px;overflow:hidden;transition:max-height .2s ease-in-out}.expanded-info.active{max-height:300px}.gap-8{gap:8px}.count-number{padding:0 5px;background:#6c6c6c;border-radius:60px;font-size:11px;line-height:14px;-webkit-user-select:none;user-select:none}.rating-icon svg path{fill:#919191;fill-opacity:1}.rating-icon.active.like-icon svg path{fill:#56b4ac}.rating-icon.active.dislike-icon svg path{fill:#e66767}.text-ellipsis{max-width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.text-ellipsis.two-rows-ellipsis{max-width:90%;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;white-space:initial}.blue-text{color:#6692f1!important}.blue-text::-moz-selection{color:#6692f1;background:#3b73ed33}.blue-text::selection{color:#6692f1;background:#3b73ed33}.red-text{color:#df3c3c!important}.red-text::-moz-selection{color:#df3c3c;background:#df3c3c33}.red-text::selection{color:#df3c3c;background:#df3c3c33}.gray-text{color:#919191!important}.gray-text::-moz-selection{color:#919191;background:#91919133}.gray-text::selection{color:#919191;background:#91919133}.light-gray-text{color:#6c6c6c}.light-gray-text::-moz-selection{color:#6c6c6c;background:#6c6c6c33}.light-gray-text::selection{color:#6c6c6c;background:#6c6c6c33}.dark-gray-text{color:#424242}.dark-gray-text::-moz-selection{color:#424242;background:#42424233}.dark-gray-text::selection{color:#424242;background:#42424233}.black-text{color:#2f2f2f}.black-text::-moz-selection{color:#2f2f2f;background:#2f2f2f33}.black-text::selection{color:#2f2f2f;background:#2f2f2f33}.white-text{color:#dadada}.white-text::-moz-selection{color:#dadada;background:#fff3}.white-text::selection{color:#dadada;background:#fff3}.opacity-40{opacity:.4}.regular-text{font-size:14px;line-height:18px;font-family:Montserrat,sans-serif}.small-text{font-size:11px;line-height:14px;font-family:Montserrat,sans-serif}.open-hours-grid{display:grid;grid-template-columns:50% 50%;grid-row-gap:8px}.cursor-pointer{cursor:pointer}.show-all-days-container{grid-column:2/span 1}\n"], dependencies: [{ kind: "ngmodule", type:
72
72
  //modules
73
73
  CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: AngularSvgIconModule }, { kind: "component", type: i2.SvgIconComponent, selector: "svg-icon", inputs: ["src", "name", "stretch", "applyClass", "applyCss", "svgClass", "class", "viewBox", "svgAriaLabel", "svgStyle"] }, { kind: "directive", type: NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type:
74
74
  // components
@@ -90,7 +90,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
90
90
  MapDropdownContentPipe,
91
91
  MapDropdownClusterContentPipe,
92
92
  MapDropdownValuePipe,
93
- ], providers: [SvgIconRegistryService], template: "@if (infoWindowContent?.clusterData) {\n @if (infoWindowContent?.selectedClusterItemData) {\n <div\n class=\"marker-container relative\"\n [class.expanded]=\"!isHidden\"\n (click)=\"preventEventPropagation($event, true)\"\n (mousewheel)=\"preventEventPropagation($event)\"\n >\n @for (\n item of infoWindowContent?.selectedClusterItemData.mainContent;\n let i = $index;\n track i\n ) {\n <ng-container\n *ngTemplateOutlet=\"\n dropdownContentTemplate;\n context: {\n content: item,\n data: infoWindowContent?.selectedClusterItemData\n .data,\n }\n \"\n ></ng-container>\n }\n\n <div class=\"expanded-info\" [class.active]=\"!isHidden\">\n @for (\n item of infoWindowContent?.selectedClusterItemData\n .expandedContent;\n let i = $index;\n track i\n ) {\n <ng-container\n *ngTemplateOutlet=\"\n dropdownContentTemplate;\n context: {\n content: item,\n data: infoWindowContent?.selectedClusterItemData\n .data,\n }\n \"\n ></ng-container>\n }\n </div>\n\n <div\n class=\"dropdown-arrow align-self-end\"\n [class.rotate-arrow]=\"!isHidden\"\n >\n <svg-icon\n [src]=\"mapDropdownSvgRoutes.cornerDownArrowRoute\"\n (click)=\"showHiddenData($event)\"\n ></svg-icon>\n </div>\n </div>\n } @else {\n <div\n class=\"cluster-marker-container d-flex flex-column gap-1\"\n (click)=\"preventEventPropagation($event, true)\"\n (mousewheel)=\"onClusterListScroll($event)\"\n >\n @for (\n item of infoWindowContent?.clusterData;\n let i = $index;\n track i\n ) {\n <ng-container\n *ngTemplateOutlet=\"\n clusterContentTemplate;\n context: {\n content: item,\n }\n \"\n ></ng-container>\n }\n </div>\n }\n} @else {\n <div\n class=\"marker-container relative\"\n [class.expanded]=\"!isHidden\"\n (click)=\"preventEventPropagation($event, true)\"\n (mousewheel)=\"preventEventPropagation($event)\"\n >\n @for (item of infoWindowContent?.mainContent; let i = $index; track i) {\n <ng-container\n *ngTemplateOutlet=\"\n dropdownContentTemplate;\n context: {\n content: item,\n data: _markerData,\n }\n \"\n ></ng-container>\n }\n\n <div class=\"expanded-info\" [class.active]=\"!isHidden\">\n @for (\n item of infoWindowContent?.expandedContent;\n let i = $index;\n track i\n ) {\n <ng-container\n *ngTemplateOutlet=\"\n dropdownContentTemplate;\n context: {\n content: item,\n data: _markerData,\n }\n \"\n ></ng-container>\n }\n </div>\n\n <div\n class=\"dropdown-arrow align-self-end\"\n [class.rotate-arrow]=\"!isHidden\"\n >\n <svg-icon\n [src]=\"mapDropdownSvgRoutes.cornerDownArrowRoute\"\n (click)=\"showHiddenData($event)\"\n ></svg-icon>\n </div>\n </div>\n}\n\n<ng-template #clusterContentTemplate let-content=\"content\">\n @let item = content | mapDropdownClusterContentType;\n @if (item) {\n <div\n class=\"d-flex align-items-center justify-content-between cluster-marker-item\"\n (click)=\"clusterItemClick(item)\"\n >\n <div\n class=\"d-flex align-items-center gap-1\"\n [ngStyle]=\"{\n 'max-width': item.favourite ? 'calc(100% - 18px)' : '100%',\n }\"\n >\n @if (item.isClosed) {\n <svg-icon\n class=\"d-flex\"\n [src]=\"mapDropdownSvgRoutes.permanentlyClosedRoute\"\n [svgStyle]=\"{ 'width.px': 18, 'height.px': 18 }\"\n ></svg-icon>\n }\n <div\n class=\"regular-text dark-gray-text uppercase text-ellipsis\"\n >\n {{ item.name }}\n </div>\n </div>\n @if (item.favourite) {\n <svg-icon\n class=\"d-flex\"\n [src]=\"mapDropdownSvgRoutes.favoriteRoute\"\n [svgStyle]=\"{ 'width.px': 18, 'height.px': 18 }\"\n ></svg-icon>\n }\n </div>\n }\n</ng-template>\n\n<ng-template #dropdownContentTemplate let-content=\"content\" let-data=\"data\">\n @let item = content | mapDropdownContentType;\n @if (item) {\n @if (!item.sideBySideInfo) {\n <ng-container\n *ngTemplateOutlet=\"\n dropdownContentItemTemplates;\n context: {\n content: item,\n data: data,\n }\n \"\n ></ng-container>\n } @else {\n <!-- Side by Side Data -->\n <div class=\"d-flex align-items-center\">\n <!-- Left Side -->\n @if (item.sideBySideInfo.leftSide) {\n <div class=\"flex-1\">\n <ng-container\n *ngTemplateOutlet=\"\n dropdownContentItemTemplates;\n context: {\n content: item.sideBySideInfo?.leftSide,\n data: data,\n }\n \"\n >\n </ng-container>\n </div>\n }\n\n <!-- Right Side -->\n @if (item.sideBySideInfo.rightSide) {\n <div class=\"flex-1\">\n <ng-container\n *ngTemplateOutlet=\"\n dropdownContentItemTemplates;\n context: {\n content: item.sideBySideInfo?.rightSide,\n data: data,\n }\n \"\n >\n </ng-container>\n </div>\n }\n </div>\n }\n }\n</ng-template>\n\n<ng-template\n #dropdownContentItemTemplates\n let-content=\"content\"\n let-data=\"data\"\n>\n @let item = content | mapDropdownContentType;\n @if (item) {\n @switch (item?.template) {\n @case (eMapDropdownStringEnum.HEADER_TITLE) {\n <div\n class=\"heading d-flex justify-content-between align-items-center {{\n item.customClassContainer\n }}\"\n >\n <div\n class=\"header-text-container d-flex align-items-center gap-1 w-100\"\n >\n @if (item.hasBackButton) {\n <div\n class=\"header-back-button d-flex align-items-center justify-content-center\"\n (click)=\"backButtonClick($event)\"\n >\n <svg-icon\n class=\"d-flex\"\n [src]=\"mapDropdownSvgRoutes.backButtonRoute\"\n [svgStyle]=\"{\n 'width.px': 14,\n 'height.px': 14,\n }\"\n >\n </svg-icon>\n </div>\n }\n <span\n class=\"header ca-font-extra-bold dark-gray-text {{\n item.customClassText\n }}\"\n >\n {{ data[item.field] }}\n </span>\n </div>\n\n <!-- <div class=\"dropdown-icon\"></div> -->\n <!-- <app-ca-details-dropdown\n #detailsDropdown\n [options]=\"data\"\n [placement]=\"'right-top'\"\n [id]=\"item?.id\"\n [data]=\"item\"\n [customClassDropDown]=\"\n 'map-list-card-dropdown marker-dropdown-popover'\n \"\n (dropDownActions)=\"callBodyAction($event)\"\n ></app-ca-details-dropdown> -->\n </div>\n }\n\n <!-- Rating Review -->\n @case (eMapDropdownStringEnum.RATING_REVIEW) {\n <div\n class=\"d-flex justify-content-start align-items-center align-content-center gap-3 {{\n item.customClassContainer\n }}\"\n >\n <div\n class=\"d-flex justify-content-start align-items-center gap-2\"\n [class.opacity-40]=\"!data[item.field].likeCount\"\n >\n <svg-icon\n class=\"rating-icon like-icon d-flex\"\n [class.active]=\"data[item.field].hasLiked\"\n [src]=\"mapDropdownSvgRoutes.likeRoute\"\n [svgStyle]=\"{ 'width.px': 14, 'height.px': 14 }\"\n ></svg-icon>\n <span\n class=\"small-text dark-gray-text ca-font-semi-bold user-select-none\"\n >{{ data[item.field].likeCount }}\n </span>\n </div>\n <div\n class=\"d-flex justify-content-start align-items-center gap-2\"\n [class.opacity-40]=\"!data[item.field].dislikeCount\"\n >\n <svg-icon\n class=\"rating-icon dislike-icon d-flex\"\n [class.active]=\"data[item.field].hasDislike\"\n [src]=\"mapDropdownSvgRoutes.dislikeRoute\"\n [svgStyle]=\"{ 'width.px': 14, 'height.px': 14 }\"\n ></svg-icon>\n <span\n class=\"small-text dark-gray-text ca-font-semi-bold user-select-none\"\n >{{ data[item.field].dislikeCount }}\n </span>\n </div>\n <div\n class=\"d-flex justify-content-start align-items-center gap-2\"\n [class.opacity-40]=\"!data[item.field].reviewCount\"\n >\n <svg-icon\n class=\"rating-icon review-icon d-flex\"\n [src]=\"mapDropdownSvgRoutes.reviewRoute\"\n [svgStyle]=\"{ 'width.px': 14, 'height.px': 14 }\"\n ></svg-icon>\n <span\n class=\"small-text dark-gray-text ca-font-semi-bold user-select-none\"\n >{{ data[item.field].reviewCount ?? 0 }}\n </span>\n </div>\n </div>\n }\n\n <!-- Border Divider -->\n @case (eMapDropdownStringEnum.DIVIDER) {\n <div class=\"info-divider\"></div>\n }\n\n <!-- Repair Shop Services -->\n @case (eMapDropdownStringEnum.REPAIR_SHOP_SERVICES) {\n <div\n class=\"d-flex align-items-center justify-content-between {{\n item.customClassContainer\n }}\"\n >\n @for (\n service of data[item.field];\n let i = $index;\n track i\n ) {\n <div\n class=\"d-flex align-items-center justify-content-center\"\n ngbTooltip\n [tooltipBackground]=\"'#424242'\"\n [mainCaTooltip]=\"service.serviceType.name\"\n position=\"bottom\"\n >\n <svg-icon\n class=\"repair-service-icon\"\n [class.active]=\"service.active\"\n [src]=\"\n service.logoName\n | caSvg: 'common' : 'repair-services'\n \"\n [svgStyle]=\"{\n 'width.px': 18,\n 'height.px': 18,\n }\"\n ></svg-icon>\n </div>\n }\n </div>\n }\n\n <!-- Icon and Text -->\n @case (eMapDropdownStringEnum.ICON_TEXT) {\n <div\n class=\"d-flex align-items-start gap-1 {{\n item.customClassContainer\n }}\"\n >\n @if (item.url) {\n <div\n ngbTooltip\n [tooltipBackground]=\"'#424242'\"\n [mainCaTooltip]=\"item.iconTooltipText\"\n position=\"bottom\"\n [disableTooltip]=\"!item.iconTooltipText\"\n >\n <svg-icon\n class=\"d-flex align-items-center justify-content-center\"\n [src]=\"item.url\"\n [svgStyle]=\"{ 'width.px': 18, 'height.px': 18 }\"\n ></svg-icon>\n </div>\n }\n <span\n class=\"regular-text dark-gray-text {{\n item.customClassText\n }}\"\n >\n {{ data[item.field] }}\n </span>\n </div>\n }\n\n <!-- Title -->\n @case (eMapDropdownStringEnum.TITLE) {\n <div\n class=\"regular-text dark-gray-text ca-font-extra-bold {{\n item.customClassText\n }}\"\n >\n {{ data[item.field] }}\n </div>\n }\n\n <!-- Title and Count -->\n @case (eMapDropdownStringEnum.TITLE_COUNT) {\n <div\n class=\"d-flex align-items-center gap-1 {{\n item.customClassContainer\n }}\"\n >\n <div class=\"regular-text dark-gray-text ca-font-extra-bold\">\n {{ item.title }}\n </div>\n <div\n class=\"count-number white-text d-flex align-items-center justify-content-center ca-font-bold\"\n >\n {{ data[item.field] }}\n </div>\n </div>\n }\n\n <!-- Money Text -->\n @case (eMapDropdownStringEnum.MONEY_TEXT) {\n <div\n class=\"d-flex align-items-center gap-1 {{\n item.customClassContainer\n }}\"\n >\n <div class=\"regular-text ca-font-bold blue-text\">\n {{\n data?.[item.field] !== '' ? data[item.field] : '$0'\n }}\n </div>\n <div class=\"regular-text light-gray-text ca-font-bold\">\n {{ item.title }}\n </div>\n </div>\n }\n\n <!-- Open Hours -->\n @case (eMapDropdownStringEnum.OPEN_HOURS) {\n <div class=\"d-flex flex-column gap-2\">\n <div\n class=\"regular-text dark-gray-text ca-font-extra-bold {{\n item.customClassText\n }}\"\n >\n {{ item.title }}\n </div>\n <div class=\"open-hours-grid\">\n @if (\n data[item.field]?.openHoursToday &&\n !isShowAllDaysActive\n ) {\n <div class=\"d-flex flex-column flex-1\">\n <div\n class=\"small-text dark-gray-text ca-font-bold\"\n >\n {{ data[item.field].openHoursToday.status }}\n </div>\n <div\n class=\"regular-text dark-gray-text text-ellipsis\"\n >\n {{ data[item.field].openHoursToday.info }}\n </div>\n </div>\n }\n\n @if (data[item.field]?.openHours?.length) {\n @if (isShowAllDaysActive) {\n @for (\n day of data[item.field].openHours;\n let i = $index;\n track i\n ) {\n <div class=\"d-flex flex-column flex-1\">\n <div\n class=\"small-text dark-gray-text ca-font-bold\"\n >\n {{ day.dayOfWeek }}\n </div>\n <div\n class=\"regular-text dark-gray-text text-ellipsis\"\n >\n {{\n day.startTime +\n ' - ' +\n day.endTime\n }}\n </div>\n </div>\n }\n }\n <div\n class=\"d-flex flex-column flex-1 justify-content-end show-all-days-container\"\n >\n <div\n class=\"d-flex align-items-center gap-1\"\n (click)=\"showAllDaysClick()\"\n >\n <svg-icon\n class=\"d-flex\"\n [src]=\"\n mapDropdownSvgRoutes.accidentCalenderRoute\n \"\n [svgStyle]=\"{\n 'width.px': 18,\n 'height.px': 18,\n }\"\n ></svg-icon>\n <div\n class=\"regular-text gray-text cursor-pointer\"\n >\n {{\n isShowAllDaysActive\n ? 'Show today'\n : 'Show all days'\n }}\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Text and Count -->\n @case (eMapDropdownStringEnum.TEXT_COUNT) {\n <div\n class=\"d-flex align-items-center gap-1 {{\n item.customClassContainer\n }}\"\n >\n <div class=\"regular-text {{ item.customClassText }}\">\n {{ item.title }}\n </div>\n <div\n class=\"regular-text ca-font-semi-bold {{\n item.customClassText\n }}\"\n >\n {{ data | mapDropdownValue: item }}\n </div>\n </div>\n }\n\n <!-- Subtitle -->\n @case (eMapDropdownStringEnum.SUBTITLE) {\n <div\n class=\"regular-text dark-gray-text ca-font-extra-bold {{\n item.customClassText\n }}\"\n >\n {{ item.title }}\n </div>\n }\n\n <!-- Regular Text -->\n @case (eMapDropdownStringEnum.TEXT) {\n <div class=\"regular-text black-text {{ item.customClassText }}\">\n {{ data | mapDropdownValue: item }}\n </div>\n }\n\n <!-- Small Subtitle -->\n @case (eMapDropdownStringEnum.SMALL_SUBTITLE) {\n <div\n class=\"small-text dark-gray-text {{ item.customClassText }}\"\n >\n {{ item.title }}\n </div>\n }\n }\n }\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}.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:#dadada}.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:#dadada}.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:#dadada}.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}.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:#42424233!important;color:#424242!important}.text-color-black::selection{background:#42424233!important;color:#424242!important}.text-color-black-2{color:#2f2f2f!important}.text-color-black-2::-moz-selection{background:#2f2f2f33!important;color:#2f2f2f!important}.text-color-black-2::selection{background:#2f2f2f33!important;color:#2f2f2f!important}.text-color-muted{color:#919191!important}.text-color-muted::-moz-selection{background:#91919133!important;color:#919191!important}.text-color-muted::selection{background:#91919133!important;color:#919191!important}.text-color-green{color:#56b4ac!important}.text-color-green::-moz-selection{background:#56b4ac33!important;color:#56b4ac!important}.text-color-green::selection{background:#56b4ac33!important;color:#56b4ac!important}.text-color-blue-13{color:#6692f1!important}.text-color-blue-13::-moz-selection{background:#66921833!important;color:#6692f1!important}.text-color-blue-13::selection{background:#66921833!important;color:#6692f1!important}.text-color-blue-18{color:#3b73ed!important}.text-color-blue-18::-moz-selection{background:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-18::selection{background:#3b73ed33!important;color:#3b73ed!important}.text-color-red-10{color:#e66767!important}.text-color-red-10::-moz-selection{background:#e6676733!important;color:#e66767!important}.text-color-red-10::selection{background:#e6676733!important;color:#e66767!important}.text-color-light-grey{color:#e5e5e5!important}.text-color-light-grey::-moz-selection{background:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey::selection{background:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey-2{color:#aaa!important}.text-color-light-grey-2::-moz-selection{background:#aaa3!important;color:#aaa!important}.text-color-light-grey-2::selection{background:#aaa3!important;color:#aaa!important}.text-color-light-grey-6{color:#ccc!important}.text-color-light-grey-6::-moz-selection{color:#ccc!important;background:#aaa3!important}.text-color-light-grey-6::selection{color:#ccc!important;background:#aaa3!important}.text-color-white{color:#dadada!important}.text-color-white::-moz-selection{color:#dadada!important;background:#fff3!important}.text-color-white::selection{color:#dadada!important;background:#fff3!important}.text-color-white-2{color:#fff!important}.text-color-white-2::-moz-selection{color:#dadada!important;background:#fff3!important}.text-color-white-2::selection{color:#dadada!important;background:#fff3!important}.text-color-white-4{color:#ffffffb2!important}.text-color-white-4::-moz-selection{color:#ffffffb2!important;background:#fff3!important}.text-color-white-4::selection{color:#ffffffb2!important;background:#fff3!important}.text-color-dark-grey{color:#6c6c6c!important}.text-color-dark-grey::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-dark-grey::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw6-2{color:#6c6c6c!important}.text-color-bw6-2::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw6-2::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw-9{color:#dadada!important}.text-color-bw-9::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw-9::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-grey{color:#919191!important}.text-color-grey::-moz-selection{color:#919191!important;background:#91919133!important}.text-color-grey::selection{color:#919191!important;background:#91919133!important}.text-color-grey .address-text::-moz-selection,.text-color-grey .marker-bold-text::-moz-selection{color:#919191!important;background:#91919133!important}.text-color-grey .address-text::selection,.text-color-grey .marker-bold-text::selection{color:#919191!important;background:#91919133!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-26{font-size:26px!important;line-height:32px!important}.text-size-28{font-size:28px!important;line-height:34px!important}@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}}.svg-fill-black svg path{fill:#424242!important}.svg-fill-muted svg path{fill:#919191!important}.svg-fill-bw-9 svg path{fill:#dadada!important}.svg-fill-light-grey-2 svg path{fill:#aaa!important}.svg-fill-light-grey-6 svg path{fill:#ccc!important}.svg-fill-blue-13 svg path{fill:#6692f1!important}.svg-fill-blue-19 svg path{fill:#92b1f5!important}.svg-fill-blue-26 svg path{fill:#4dc5eb!important}.svg-hover-muted svg path{transition:all .3s ease-in-out}.svg-hover-muted:hover svg path{fill:#919191!important}.svg-hover-black svg path{transition:all .3s ease-in-out}.svg-hover-black:hover svg path{fill:#424242!important}.svg-hover-blue-15 svg path{transition:all .3s ease-in-out}.svg-hover-blue-15:hover svg path{fill:#0b49d1!important}.svg-hover-bw6-2 svg path{transition:all .3s ease-in-out}.svg-hover-bw6-2:hover svg path{fill:#6c6c6c!important}.svg-hover-trash-red svg path{transition:all .3s ease-in-out}.svg-hover-trash-red:hover svg path{fill:#ff5050!important}.svg-hover-red-14 svg path{transition:all .3s ease-in-out}.svg-hover-red-14:hover svg path{fill:#c20c0c!important}.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-18 svg{width:18px;height:18px}.svg-size-44-16 svg{width:44px;height:16px}*{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}:host{display:block;height:100%;width:100%}.cluster-marker-container{width:354px;max-height:244px;margin:4px 2px 4px 4px;overflow-y:scroll;cursor:default}.cluster-marker-container::-webkit-scrollbar{width:2px}.cluster-marker-container::-webkit-scrollbar-thumb{background-color:#ccc;border:2px solid #cccccc;border-radius:1px}.cluster-marker-container::-webkit-scrollbar-track{width:2px;background-color:#fff}.cluster-marker-container .cluster-marker-item{max-width:100%;padding:4px;cursor:pointer;border-radius:2px}.cluster-marker-container .cluster-marker-item:hover{background:#eee}.marker-container{width:360px;max-height:214px;padding:8px;transition:max-height .2s ease-in-out;cursor:default}.marker-container.expanded{max-height:396px}.marker-container .heading{max-width:100%;margin-bottom:3px}.marker-container .heading .header-text-container{max-width:calc(100% - 26px)}.marker-container .heading .header-text-container .header-back-button{min-width:18px;min-height:18px;background:#eee;border-radius:1px;cursor:pointer}.marker-container .heading .header-text-container .header-back-button svg-icon svg path{fill:#919191}.marker-container .heading .header-text-container .header{font-family:Montserrat,sans-serif;font-size:16px;line-height:20px;color:#424242}.marker-container .heading .dropdown-icon{min-width:26px;min-height:26px}.marker-container .action .side-space{padding-right:4px}.marker-container .action .side-space .count{font-family:Montserrat,sans-serif;font-size:11px;color:#424242;padding:0 7px;position:relative;left:-1px}.marker-container .action .side-space .grey-color{color:#919191}.marker-container .repair-service-icon svg path{fill:#ccc;fill-opacity:1}.marker-container .repair-service-icon.active svg path{fill:#919191;fill-opacity:1}.marker-container .personal-info-items{font-family:Montserrat,sans-serif}.marker-container .personal-info-items .info{max-width:100%;font-size:14px;line-height:18px;padding:0 5px;color:#2f2f2f;font-family:Montserrat,sans-serif;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.marker-container .working-info-detail{font-family:Montserrat,sans-serif}.marker-container .working-info-detail .working-info-item{font-size:11px;line-height:14px;color:#424242}.marker-container .working-info-detail .working-info-item .working-time{font-size:14px;line-height:18px}.marker-container .load-info .load-heading{font-family:Montserrat,sans-serif;font-size:13px;margin-bottom:5px}.marker-container .load-info .load-heading .load-head-count{background-color:#6c6c6c;border-radius:50%;padding:3px 4px;color:#fff;font-size:7px;margin:1px 4px 0;font-family:Montserrat,sans-serif}.marker-container .load-info .load-info-detail{font-family:Montserrat,sans-serif}.marker-container .load-info .load-info-detail .load-info-item{font-size:12px;line-height:18px;color:#2f2f2f}.marker-container .load-info .load-info-detail .loading-hours{font-size:10px;color:#919191}.marker-container .load-info .load-info-detail .loading-hours .load-time{color:#919191}.marker-container .avg-info .avg-info-detail{font-family:Montserrat,sans-serif}.marker-container .avg-info .avg-info-detail .avg-item .item-date{padding:0 7px;color:#2f2f2f}.infowindow-container{width:300px;padding:2px 9px 9px 0}.infowindow-container .heading-container .heading{margin-top:15px;margin-bottom:3px}.infowindow-container .heading-container .heading .header{font-family:Montserrat,sans-serif;font-size:15px;line-height:19.5px}.infowindow-container .personal-info .personal-info-items{padding:1px 0;margin-bottom:3px;font-family:Montserrat,sans-serif}.infowindow-container .personal-info .personal-info-items .info{font-size:14px;line-height:18px;padding:0 5px;color:#2f2f2f;font-family:Montserrat,sans-serif}.infowindow-container .weight-info .weight-heading{font-family:Montserrat,sans-serif;font-size:13px;margin-bottom:5px}.infowindow-container .weight-info .weight-heading .weight-head-count{background-color:#6c6c6c;border-radius:50%;padding:3px 4px;color:#fff;font-size:7px;margin:1px 4px 0;font-family:Montserrat,sans-serif}.infowindow-container .weight-info .weight-info-detail{font-family:Montserrat,sans-serif}.infowindow-container .weight-info .weight-info-detail .weight-info-item{font-size:12px;line-height:18px;color:#424242}.infowindow-container .weight-info .weight-info-detail .weight-info-item .weight-time{color:#424242;padding:0 5px}.infowindow-container .transport-info .transport-container{margin-top:15px;font-family:Montserrat,sans-serif;margin-bottom:10px}.infowindow-container .transport-info .transport-container .driver-info .side-space{margin-left:20px}.infowindow-container .transport-info .transport-container .driver-info .title{font-size:11px;line-height:14px}.infowindow-container .transport-info .transport-container .driver-info .detail{font-size:13px;line-height:18px;color:#2f2f2f}.infowindow-container .transport-info .transport-container .truck-info .side-space{margin-left:50px}.infowindow-container .transport-info .transport-container .truck-info .title{font-size:11px;line-height:14px}.infowindow-container .transport-info .transport-container .truck-info .detail{font-size:13px;line-height:18px;color:#2f2f2f}.info-divider{margin:8px 0;width:100%;height:1px;background:#dadada;border-radius:2px}.dropdown-arrow{position:absolute;right:6px;bottom:6px}.dropdown-arrow svg{transition:transform .2s ease-in-out;transform:rotate(0)}.dropdown-arrow svg path{transition:fill .2s ease-in-out;fill:#919191}.dropdown-arrow.rotate-arrow svg{transform:rotate(180deg)}.dropdown-arrow.rotate-arrow svg path{fill:#6692f1}.dropdown-arrow:hover{cursor:pointer}.dropdown-arrow:hover svg path{fill:#6692f1}.expanded-info{max-height:0px;overflow:hidden;transition:max-height .2s ease-in-out}.expanded-info.active{max-height:300px}.gap-8{gap:8px}.count-number{padding:0 5px;background:#6c6c6c;border-radius:60px;font-size:11px;line-height:14px;-webkit-user-select:none;user-select:none}.rating-icon svg path{fill:#919191;fill-opacity:1}.rating-icon.active.like-icon svg path{fill:#56b4ac}.rating-icon.active.dislike-icon svg path{fill:#e66767}.text-ellipsis{max-width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.text-ellipsis.two-rows-ellipsis{max-width:90%;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;white-space:initial}.blue-text{color:#6692f1!important}.blue-text::-moz-selection{color:#6692f1;background:#3b73ed33}.blue-text::selection{color:#6692f1;background:#3b73ed33}.red-text{color:#df3c3c!important}.red-text::-moz-selection{color:#df3c3c;background:#df3c3c33}.red-text::selection{color:#df3c3c;background:#df3c3c33}.gray-text{color:#919191!important}.gray-text::-moz-selection{color:#919191;background:#91919133}.gray-text::selection{color:#919191;background:#91919133}.light-gray-text{color:#6c6c6c}.light-gray-text::-moz-selection{color:#6c6c6c;background:#6c6c6c33}.light-gray-text::selection{color:#6c6c6c;background:#6c6c6c33}.dark-gray-text{color:#424242}.dark-gray-text::-moz-selection{color:#424242;background:#42424233}.dark-gray-text::selection{color:#424242;background:#42424233}.black-text{color:#2f2f2f}.black-text::-moz-selection{color:#2f2f2f;background:#2f2f2f33}.black-text::selection{color:#2f2f2f;background:#2f2f2f33}.white-text{color:#dadada}.white-text::-moz-selection{color:#dadada;background:#fff3}.white-text::selection{color:#dadada;background:#fff3}.opacity-40{opacity:.4}.regular-text{font-size:14px;line-height:18px;font-family:Montserrat,sans-serif}.small-text{font-size:11px;line-height:14px;font-family:Montserrat,sans-serif}.open-hours-grid{display:grid;grid-template-columns:50% 50%;grid-row-gap:8px}.cursor-pointer{cursor:pointer}.show-all-days-container{grid-column:2/span 1}\n"] }]
93
+ ], providers: [SvgIconRegistryService], template: "@if (infoWindowContent?.clusterData) {\n @if (infoWindowContent?.selectedClusterItemData) {\n <div\n class=\"marker-container relative\"\n [class.expanded]=\"!isHidden\"\n (click)=\"preventEventPropagation($event, true)\"\n (mousewheel)=\"preventEventPropagation($event)\"\n >\n @for (\n item of infoWindowContent?.selectedClusterItemData.mainContent;\n let i = $index;\n track i\n ) {\n <ng-container\n *ngTemplateOutlet=\"\n dropdownContentTemplate;\n context: {\n content: item,\n data: infoWindowContent?.selectedClusterItemData\n .data,\n }\n \"\n ></ng-container>\n }\n\n <div class=\"expanded-info\" [class.active]=\"!isHidden\">\n @for (\n item of infoWindowContent?.selectedClusterItemData\n .expandedContent;\n let i = $index;\n track i\n ) {\n <ng-container\n *ngTemplateOutlet=\"\n dropdownContentTemplate;\n context: {\n content: item,\n data: infoWindowContent?.selectedClusterItemData\n .data,\n }\n \"\n ></ng-container>\n }\n </div>\n\n <div\n class=\"dropdown-arrow align-self-end\"\n [class.rotate-arrow]=\"!isHidden\"\n >\n <svg-icon\n [src]=\"mapDropdownSvgRoutes.cornerDownArrowRoute\"\n (click)=\"showHiddenData($event)\"\n ></svg-icon>\n </div>\n </div>\n } @else {\n <div\n class=\"cluster-marker-container d-flex flex-column gap-1\"\n (click)=\"preventEventPropagation($event, true)\"\n (mousewheel)=\"onClusterListScroll($event)\"\n >\n @for (\n item of infoWindowContent?.clusterData;\n let i = $index;\n track i\n ) {\n <ng-container\n *ngTemplateOutlet=\"\n clusterContentTemplate;\n context: {\n content: item,\n }\n \"\n ></ng-container>\n }\n </div>\n }\n} @else {\n <div\n class=\"marker-container relative\"\n [class.expanded]=\"!isHidden\"\n (click)=\"preventEventPropagation($event, true)\"\n (mousewheel)=\"preventEventPropagation($event)\"\n >\n @for (item of infoWindowContent?.mainContent; let i = $index; track i) {\n <ng-container\n *ngTemplateOutlet=\"\n dropdownContentTemplate;\n context: {\n content: item,\n data: _markerData,\n }\n \"\n ></ng-container>\n }\n\n <div class=\"expanded-info\" [class.active]=\"!isHidden\">\n @for (\n item of infoWindowContent?.expandedContent;\n let i = $index;\n track i\n ) {\n <ng-container\n *ngTemplateOutlet=\"\n dropdownContentTemplate;\n context: {\n content: item,\n data: _markerData,\n }\n \"\n ></ng-container>\n }\n </div>\n\n <div\n class=\"dropdown-arrow align-self-end\"\n [class.rotate-arrow]=\"!isHidden\"\n >\n <svg-icon\n [src]=\"mapDropdownSvgRoutes.cornerDownArrowRoute\"\n (click)=\"showHiddenData($event)\"\n ></svg-icon>\n </div>\n </div>\n}\n\n<ng-template #clusterContentTemplate let-content=\"content\">\n @let item = content | mapDropdownClusterContentType;\n @if (item) {\n <div\n class=\"d-flex align-items-center justify-content-between cluster-marker-item\"\n (click)=\"clusterItemClick(item)\"\n >\n <div\n class=\"d-flex align-items-center gap-1\"\n [ngStyle]=\"{\n 'max-width': item.favourite ? 'calc(100% - 18px)' : '100%',\n }\"\n >\n @if (item.isClosed) {\n <svg-icon\n class=\"d-flex\"\n [src]=\"mapDropdownSvgRoutes.permanentlyClosedRoute\"\n [svgStyle]=\"{ 'width.px': 18, 'height.px': 18 }\"\n ></svg-icon>\n }\n <div\n class=\"regular-text dark-gray-text uppercase text-ellipsis\"\n >\n {{ item.name }}\n </div>\n </div>\n @if (item.favourite) {\n <svg-icon\n class=\"d-flex\"\n [src]=\"mapDropdownSvgRoutes.favoriteRoute\"\n [svgStyle]=\"{ 'width.px': 18, 'height.px': 18 }\"\n ></svg-icon>\n }\n </div>\n }\n</ng-template>\n\n<ng-template #dropdownContentTemplate let-content=\"content\" let-data=\"data\">\n @let item = content | mapDropdownContentType;\n @if (item) {\n @if (!item.sideBySideInfo) {\n <ng-container\n *ngTemplateOutlet=\"\n dropdownContentItemTemplates;\n context: {\n content: item,\n data: data,\n }\n \"\n ></ng-container>\n } @else {\n <!-- Side by Side Data -->\n <div class=\"d-flex align-items-center\">\n <!-- Left Side -->\n @if (item.sideBySideInfo.leftSide) {\n <div class=\"flex-1\">\n <ng-container\n *ngTemplateOutlet=\"\n dropdownContentItemTemplates;\n context: {\n content: item.sideBySideInfo?.leftSide,\n data: data,\n }\n \"\n >\n </ng-container>\n </div>\n }\n\n <!-- Right Side -->\n @if (item.sideBySideInfo.rightSide) {\n <div class=\"flex-1\">\n <ng-container\n *ngTemplateOutlet=\"\n dropdownContentItemTemplates;\n context: {\n content: item.sideBySideInfo?.rightSide,\n data: data,\n }\n \"\n >\n </ng-container>\n </div>\n }\n </div>\n }\n }\n</ng-template>\n\n<ng-template\n #dropdownContentItemTemplates\n let-content=\"content\"\n let-data=\"data\"\n>\n @let item = content | mapDropdownContentType;\n @if (item) {\n @switch (item?.template) {\n @case (eMapDropdownString.HEADER_TITLE) {\n <div\n class=\"heading d-flex justify-content-between align-items-center {{\n item.customClassContainer\n }}\"\n >\n <div\n class=\"header-text-container d-flex align-items-center gap-1 w-100\"\n >\n @if (item.hasBackButton) {\n <div\n class=\"header-back-button d-flex align-items-center justify-content-center\"\n (click)=\"backButtonClick($event)\"\n >\n <svg-icon\n class=\"d-flex\"\n [src]=\"mapDropdownSvgRoutes.backButtonRoute\"\n [svgStyle]=\"{\n 'width.px': 14,\n 'height.px': 14,\n }\"\n >\n </svg-icon>\n </div>\n }\n <span\n class=\"header ca-font-extra-bold dark-gray-text {{\n item.customClassText\n }}\"\n >\n {{ data[item.field] }}\n </span>\n </div>\n\n <!-- <div class=\"dropdown-icon\"></div> -->\n <!-- <app-ca-details-dropdown\n #detailsDropdown\n [options]=\"data\"\n [placement]=\"'right-top'\"\n [id]=\"item?.id\"\n [data]=\"item\"\n [customClassDropDown]=\"\n 'map-list-card-dropdown marker-dropdown-popover'\n \"\n (dropDownActions)=\"callBodyAction($event)\"\n ></app-ca-details-dropdown> -->\n </div>\n }\n\n <!-- Rating Review -->\n @case (eMapDropdownString.RATING_REVIEW) {\n <div\n class=\"d-flex justify-content-start align-items-center align-content-center gap-3 {{\n item.customClassContainer\n }}\"\n >\n <div\n class=\"d-flex justify-content-start align-items-center gap-2\"\n [class.opacity-40]=\"!data[item.field].likeCount\"\n >\n <svg-icon\n class=\"rating-icon like-icon d-flex\"\n [class.active]=\"data[item.field].hasLiked\"\n [src]=\"mapDropdownSvgRoutes.likeRoute\"\n [svgStyle]=\"{ 'width.px': 14, 'height.px': 14 }\"\n ></svg-icon>\n <span\n class=\"small-text dark-gray-text ca-font-semi-bold user-select-none\"\n >{{ data[item.field].likeCount }}\n </span>\n </div>\n <div\n class=\"d-flex justify-content-start align-items-center gap-2\"\n [class.opacity-40]=\"!data[item.field].dislikeCount\"\n >\n <svg-icon\n class=\"rating-icon dislike-icon d-flex\"\n [class.active]=\"data[item.field].hasDislike\"\n [src]=\"mapDropdownSvgRoutes.dislikeRoute\"\n [svgStyle]=\"{ 'width.px': 14, 'height.px': 14 }\"\n ></svg-icon>\n <span\n class=\"small-text dark-gray-text ca-font-semi-bold user-select-none\"\n >{{ data[item.field].dislikeCount }}\n </span>\n </div>\n <div\n class=\"d-flex justify-content-start align-items-center gap-2\"\n [class.opacity-40]=\"!data[item.field].reviewCount\"\n >\n <svg-icon\n class=\"rating-icon review-icon d-flex\"\n [src]=\"mapDropdownSvgRoutes.reviewRoute\"\n [svgStyle]=\"{ 'width.px': 14, 'height.px': 14 }\"\n ></svg-icon>\n <span\n class=\"small-text dark-gray-text ca-font-semi-bold user-select-none\"\n >{{ data[item.field].reviewCount ?? 0 }}\n </span>\n </div>\n </div>\n }\n\n <!-- Border Divider -->\n @case (eMapDropdownString.DIVIDER) {\n <div class=\"info-divider\"></div>\n }\n\n <!-- Repair Shop Services -->\n @case (eMapDropdownString.REPAIR_SHOP_SERVICES) {\n <div\n class=\"d-flex align-items-center justify-content-between {{\n item.customClassContainer\n }}\"\n >\n @for (\n service of data[item.field];\n let i = $index;\n track i\n ) {\n <div\n class=\"d-flex align-items-center justify-content-center\"\n ngbTooltip\n [tooltipBackground]=\"'#424242'\"\n [mainCaTooltip]=\"service.serviceType.name\"\n position=\"bottom\"\n >\n <svg-icon\n class=\"repair-service-icon\"\n [class.active]=\"service.active\"\n [src]=\"\n service.logoName\n | caSvg: 'common' : 'repair-services'\n \"\n [svgStyle]=\"{\n 'width.px': 18,\n 'height.px': 18,\n }\"\n ></svg-icon>\n </div>\n }\n </div>\n }\n\n <!-- Icon and Text -->\n @case (eMapDropdownString.ICON_TEXT) {\n <div\n class=\"d-flex align-items-start gap-1 {{\n item.customClassContainer\n }}\"\n >\n @if (item.url) {\n <div\n ngbTooltip\n [tooltipBackground]=\"'#424242'\"\n [mainCaTooltip]=\"item.iconTooltipText\"\n position=\"bottom\"\n [disableTooltip]=\"!item.iconTooltipText\"\n >\n <svg-icon\n class=\"d-flex align-items-center justify-content-center\"\n [src]=\"item.url\"\n [svgStyle]=\"{ 'width.px': 18, 'height.px': 18 }\"\n ></svg-icon>\n </div>\n }\n <span\n class=\"regular-text dark-gray-text {{\n item.customClassText\n }}\"\n >\n {{ data[item.field] }}\n </span>\n </div>\n }\n\n <!-- Title -->\n @case (eMapDropdownString.TITLE) {\n <div\n class=\"regular-text dark-gray-text ca-font-extra-bold {{\n item.customClassText\n }}\"\n >\n {{ data[item.field] }}\n </div>\n }\n\n <!-- Title and Count -->\n @case (eMapDropdownString.TITLE_COUNT) {\n <div\n class=\"d-flex align-items-center gap-1 {{\n item.customClassContainer\n }}\"\n >\n <div class=\"regular-text dark-gray-text ca-font-extra-bold\">\n {{ item.title }}\n </div>\n <div\n class=\"count-number white-text d-flex align-items-center justify-content-center ca-font-bold\"\n >\n {{ data[item.field] }}\n </div>\n </div>\n }\n\n <!-- Money Text -->\n @case (eMapDropdownString.MONEY_TEXT) {\n <div\n class=\"d-flex align-items-center gap-1 {{\n item.customClassContainer\n }}\"\n >\n <div class=\"regular-text ca-font-bold blue-text\">\n {{\n data?.[item.field] !== '' ? data[item.field] : '$0'\n }}\n </div>\n <div class=\"regular-text light-gray-text ca-font-bold\">\n {{ item.title }}\n </div>\n </div>\n }\n\n <!-- Open Hours -->\n @case (eMapDropdownString.OPEN_HOURS) {\n <div class=\"d-flex flex-column gap-2\">\n <div\n class=\"regular-text dark-gray-text ca-font-extra-bold {{\n item.customClassText\n }}\"\n >\n {{ item.title }}\n </div>\n <div class=\"open-hours-grid\">\n @if (\n data[item.field]?.openHoursToday &&\n !isShowAllDaysActive\n ) {\n <div class=\"d-flex flex-column flex-1\">\n <div\n class=\"small-text dark-gray-text ca-font-bold\"\n >\n {{ data[item.field].openHoursToday.status }}\n </div>\n <div\n class=\"regular-text dark-gray-text text-ellipsis\"\n >\n {{ data[item.field].openHoursToday.info }}\n </div>\n </div>\n }\n\n @if (data[item.field]?.openHours?.length) {\n @if (isShowAllDaysActive) {\n @for (\n day of data[item.field].openHours;\n let i = $index;\n track i\n ) {\n <div class=\"d-flex flex-column flex-1\">\n <div\n class=\"small-text dark-gray-text ca-font-bold\"\n >\n {{ day.dayOfWeek }}\n </div>\n <div\n class=\"regular-text dark-gray-text text-ellipsis\"\n >\n {{\n day.startTime +\n ' - ' +\n day.endTime\n }}\n </div>\n </div>\n }\n }\n <div\n class=\"d-flex flex-column flex-1 justify-content-end show-all-days-container\"\n >\n <div\n class=\"d-flex align-items-center gap-1\"\n (click)=\"showAllDaysClick()\"\n >\n <svg-icon\n class=\"d-flex\"\n [src]=\"\n mapDropdownSvgRoutes.accidentCalenderRoute\n \"\n [svgStyle]=\"{\n 'width.px': 18,\n 'height.px': 18,\n }\"\n ></svg-icon>\n <div\n class=\"regular-text gray-text cursor-pointer\"\n >\n {{\n isShowAllDaysActive\n ? 'Show today'\n : 'Show all days'\n }}\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Text and Count -->\n @case (eMapDropdownString.TEXT_COUNT) {\n <div\n class=\"d-flex align-items-center gap-1 {{\n item.customClassContainer\n }}\"\n >\n <div class=\"regular-text {{ item.customClassText }}\">\n {{ item.title }}\n </div>\n <div\n class=\"regular-text ca-font-semi-bold {{\n item.customClassText\n }}\"\n >\n {{ data | mapDropdownValue: item }}\n </div>\n </div>\n }\n\n <!-- Subtitle -->\n @case (eMapDropdownString.SUBTITLE) {\n <div\n class=\"regular-text dark-gray-text ca-font-extra-bold {{\n item.customClassText\n }}\"\n >\n {{ item.title }}\n </div>\n }\n\n <!-- Regular Text -->\n @case (eMapDropdownString.TEXT) {\n <div class=\"regular-text black-text {{ item.customClassText }}\">\n {{ data | mapDropdownValue: item }}\n </div>\n }\n\n <!-- Small Subtitle -->\n @case (eMapDropdownString.SMALL_SUBTITLE) {\n <div\n class=\"small-text dark-gray-text {{ item.customClassText }}\"\n >\n {{ item.title }}\n </div>\n }\n }\n }\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}.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:#dadada}.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:#dadada}.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:#dadada}.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}.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:#42424233!important;color:#424242!important}.text-color-black::selection{background:#42424233!important;color:#424242!important}.text-color-black-2{color:#2f2f2f!important}.text-color-black-2::-moz-selection{background:#2f2f2f33!important;color:#2f2f2f!important}.text-color-black-2::selection{background:#2f2f2f33!important;color:#2f2f2f!important}.text-color-muted{color:#919191!important}.text-color-muted::-moz-selection{background:#91919133!important;color:#919191!important}.text-color-muted::selection{background:#91919133!important;color:#919191!important}.text-color-green{color:#56b4ac!important}.text-color-green::-moz-selection{background:#56b4ac33!important;color:#56b4ac!important}.text-color-green::selection{background:#56b4ac33!important;color:#56b4ac!important}.text-color-green-4{color:#86c9c3!important}.text-color-green-4::-moz-selection{background:#86c9c333!important;color:#86c9c3!important}.text-color-green-4::selection{background:#86c9c333!important;color:#86c9c3!important}.text-color-blue-13{color:#6692f1!important}.text-color-blue-13::-moz-selection{background:#66921833!important;color:#6692f1!important}.text-color-blue-13::selection{background:#66921833!important;color:#6692f1!important}.text-color-blue-18{color:#3b73ed!important}.text-color-blue-18::-moz-selection{background:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-18::selection{background:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-19{color:#92b1f5!important}.text-color-blue-19::-moz-selection{background:#92b1f533!important;color:#92b1f5!important}.text-color-blue-19::selection{background:#92b1f533!important;color:#92b1f5!important}.text-color-red-10{color:#e66767!important}.text-color-red-10::-moz-selection{background:#e6676733!important;color:#e66767!important}.text-color-red-10::selection{background:#e6676733!important;color:#e66767!important}.text-color-red-13{color:#ed9292!important}.text-color-red-13::-moz-selection{background:#ed929233!important;color:#ed9292!important}.text-color-red-13::selection{background:#ed929233!important;color:#ed9292!important}.text-color-light-grey{color:#e5e5e5!important}.text-color-light-grey::-moz-selection{background:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey::selection{background:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey-2{color:#aaa!important}.text-color-light-grey-2::-moz-selection{background:#aaa3!important;color:#aaa!important}.text-color-light-grey-2::selection{background:#aaa3!important;color:#aaa!important}.text-color-light-grey-6{color:#ccc!important}.text-color-light-grey-6::-moz-selection{color:#ccc!important;background:#aaa3!important}.text-color-light-grey-6::selection{color:#ccc!important;background:#aaa3!important}.text-color-white{color:#dadada!important}.text-color-white::-moz-selection{color:#dadada!important;background:#fff3!important}.text-color-white::selection{color:#dadada!important;background:#fff3!important}.text-color-white-2{color:#fff!important}.text-color-white-2::-moz-selection{color:#dadada!important;background:#fff3!important}.text-color-white-2::selection{color:#dadada!important;background:#fff3!important}.text-color-white-4{color:#ffffffb2!important}.text-color-white-4::-moz-selection{color:#ffffffb2!important;background:#fff3!important}.text-color-white-4::selection{color:#ffffffb2!important;background:#fff3!important}.text-color-dark-grey{color:#6c6c6c!important}.text-color-dark-grey::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-dark-grey::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw6-2{color:#6c6c6c!important}.text-color-bw6-2::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw6-2::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw-9{color:#dadada!important}.text-color-bw-9::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw-9::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-grey{color:#919191!important}.text-color-grey::-moz-selection{color:#919191!important;background:#91919133!important}.text-color-grey::selection{color:#919191!important;background:#91919133!important}.text-color-grey .address-text::-moz-selection,.text-color-grey .marker-bold-text::-moz-selection{color:#919191!important;background:#91919133!important}.text-color-grey .address-text::selection,.text-color-grey .marker-bold-text::selection{color:#919191!important;background:#91919133!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-26{font-size:26px!important;line-height:32px!important}.text-size-28{font-size:28px!important;line-height:34px!important}@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}}.svg-fill-black svg path{fill:#424242!important}.svg-fill-muted svg path{fill:#919191!important}.svg-fill-bw-9 svg path{fill:#dadada!important}.svg-fill-light-grey-2 svg path{fill:#aaa!important}.svg-fill-light-grey-6 svg path{fill:#ccc!important}.svg-fill-blue-13 svg path{fill:#6692f1!important}.svg-fill-blue-19 svg path{fill:#92b1f5!important}.svg-fill-blue-26 svg path{fill:#4dc5eb!important}.svg-fill-grey svg path{fill:#919191!important}.svg-fill-red-10 svg path{fill:#e66767!important}.svg-fill-green svg path{fill:#56b4ac!important}.svg-hover-muted svg path{transition:all .3s ease-in-out}.svg-hover-muted:hover svg path{fill:#919191!important}.svg-hover-black svg path{transition:all .3s ease-in-out}.svg-hover-black:hover svg path{fill:#424242!important}.svg-hover-blue-15 svg path{transition:all .3s ease-in-out}.svg-hover-blue-15:hover svg path{fill:#0b49d1!important}.svg-hover-bw6-2 svg path{transition:all .3s ease-in-out}.svg-hover-bw6-2:hover svg path{fill:#6c6c6c!important}.svg-hover-trash-red svg path{transition:all .3s ease-in-out}.svg-hover-trash-red:hover svg path{fill:#ff5050!important}.svg-hover-red-14 svg path{transition:all .3s ease-in-out}.svg-hover-red-14:hover svg path{fill:#c20c0c!important}.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-18 svg{width:18px;height:18px}.svg-size-22 svg{width:22px;height:22px}.svg-size-44-16 svg{width:44px;height:16px}*{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}:host{display:block;height:100%;width:100%}.cluster-marker-container{width:354px;max-height:244px;margin:4px 2px 4px 4px;overflow-y:scroll;cursor:default}.cluster-marker-container::-webkit-scrollbar{width:2px}.cluster-marker-container::-webkit-scrollbar-thumb{background-color:#ccc;border:2px solid #cccccc;border-radius:1px}.cluster-marker-container::-webkit-scrollbar-track{width:2px;background-color:#fff}.cluster-marker-container .cluster-marker-item{max-width:100%;padding:4px;cursor:pointer;border-radius:2px}.cluster-marker-container .cluster-marker-item:hover{background:#eee}.marker-container{width:360px;max-height:214px;padding:8px;transition:max-height .2s ease-in-out;cursor:default}.marker-container.expanded{max-height:396px}.marker-container .heading{max-width:100%;margin-bottom:3px}.marker-container .heading .header-text-container{max-width:calc(100% - 26px)}.marker-container .heading .header-text-container .header-back-button{min-width:18px;min-height:18px;background:#eee;border-radius:1px;cursor:pointer}.marker-container .heading .header-text-container .header-back-button svg-icon svg path{fill:#919191}.marker-container .heading .header-text-container .header{font-family:Montserrat,sans-serif;font-size:16px;line-height:20px;color:#424242}.marker-container .heading .dropdown-icon{min-width:26px;min-height:26px}.marker-container .action .side-space{padding-right:4px}.marker-container .action .side-space .count{font-family:Montserrat,sans-serif;font-size:11px;color:#424242;padding:0 7px;position:relative;left:-1px}.marker-container .action .side-space .grey-color{color:#919191}.marker-container .repair-service-icon svg path{fill:#ccc;fill-opacity:1}.marker-container .repair-service-icon.active svg path{fill:#919191;fill-opacity:1}.marker-container .personal-info-items{font-family:Montserrat,sans-serif}.marker-container .personal-info-items .info{max-width:100%;font-size:14px;line-height:18px;padding:0 5px;color:#2f2f2f;font-family:Montserrat,sans-serif;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.marker-container .working-info-detail{font-family:Montserrat,sans-serif}.marker-container .working-info-detail .working-info-item{font-size:11px;line-height:14px;color:#424242}.marker-container .working-info-detail .working-info-item .working-time{font-size:14px;line-height:18px}.marker-container .load-info .load-heading{font-family:Montserrat,sans-serif;font-size:13px;margin-bottom:5px}.marker-container .load-info .load-heading .load-head-count{background-color:#6c6c6c;border-radius:50%;padding:3px 4px;color:#fff;font-size:7px;margin:1px 4px 0;font-family:Montserrat,sans-serif}.marker-container .load-info .load-info-detail{font-family:Montserrat,sans-serif}.marker-container .load-info .load-info-detail .load-info-item{font-size:12px;line-height:18px;color:#2f2f2f}.marker-container .load-info .load-info-detail .loading-hours{font-size:10px;color:#919191}.marker-container .load-info .load-info-detail .loading-hours .load-time{color:#919191}.marker-container .avg-info .avg-info-detail{font-family:Montserrat,sans-serif}.marker-container .avg-info .avg-info-detail .avg-item .item-date{padding:0 7px;color:#2f2f2f}.infowindow-container{width:300px;padding:2px 9px 9px 0}.infowindow-container .heading-container .heading{margin-top:15px;margin-bottom:3px}.infowindow-container .heading-container .heading .header{font-family:Montserrat,sans-serif;font-size:15px;line-height:19.5px}.infowindow-container .personal-info .personal-info-items{padding:1px 0;margin-bottom:3px;font-family:Montserrat,sans-serif}.infowindow-container .personal-info .personal-info-items .info{font-size:14px;line-height:18px;padding:0 5px;color:#2f2f2f;font-family:Montserrat,sans-serif}.infowindow-container .weight-info .weight-heading{font-family:Montserrat,sans-serif;font-size:13px;margin-bottom:5px}.infowindow-container .weight-info .weight-heading .weight-head-count{background-color:#6c6c6c;border-radius:50%;padding:3px 4px;color:#fff;font-size:7px;margin:1px 4px 0;font-family:Montserrat,sans-serif}.infowindow-container .weight-info .weight-info-detail{font-family:Montserrat,sans-serif}.infowindow-container .weight-info .weight-info-detail .weight-info-item{font-size:12px;line-height:18px;color:#424242}.infowindow-container .weight-info .weight-info-detail .weight-info-item .weight-time{color:#424242;padding:0 5px}.infowindow-container .transport-info .transport-container{margin-top:15px;font-family:Montserrat,sans-serif;margin-bottom:10px}.infowindow-container .transport-info .transport-container .driver-info .side-space{margin-left:20px}.infowindow-container .transport-info .transport-container .driver-info .title{font-size:11px;line-height:14px}.infowindow-container .transport-info .transport-container .driver-info .detail{font-size:13px;line-height:18px;color:#2f2f2f}.infowindow-container .transport-info .transport-container .truck-info .side-space{margin-left:50px}.infowindow-container .transport-info .transport-container .truck-info .title{font-size:11px;line-height:14px}.infowindow-container .transport-info .transport-container .truck-info .detail{font-size:13px;line-height:18px;color:#2f2f2f}.info-divider{margin:8px 0;width:100%;height:1px;background:#dadada;border-radius:2px}.dropdown-arrow{position:absolute;right:6px;bottom:6px}.dropdown-arrow svg{transition:transform .2s ease-in-out;transform:rotate(0)}.dropdown-arrow svg path{transition:fill .2s ease-in-out;fill:#919191}.dropdown-arrow.rotate-arrow svg{transform:rotate(180deg)}.dropdown-arrow.rotate-arrow svg path{fill:#6692f1}.dropdown-arrow:hover{cursor:pointer}.dropdown-arrow:hover svg path{fill:#6692f1}.expanded-info{max-height:0px;overflow:hidden;transition:max-height .2s ease-in-out}.expanded-info.active{max-height:300px}.gap-8{gap:8px}.count-number{padding:0 5px;background:#6c6c6c;border-radius:60px;font-size:11px;line-height:14px;-webkit-user-select:none;user-select:none}.rating-icon svg path{fill:#919191;fill-opacity:1}.rating-icon.active.like-icon svg path{fill:#56b4ac}.rating-icon.active.dislike-icon svg path{fill:#e66767}.text-ellipsis{max-width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.text-ellipsis.two-rows-ellipsis{max-width:90%;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;white-space:initial}.blue-text{color:#6692f1!important}.blue-text::-moz-selection{color:#6692f1;background:#3b73ed33}.blue-text::selection{color:#6692f1;background:#3b73ed33}.red-text{color:#df3c3c!important}.red-text::-moz-selection{color:#df3c3c;background:#df3c3c33}.red-text::selection{color:#df3c3c;background:#df3c3c33}.gray-text{color:#919191!important}.gray-text::-moz-selection{color:#919191;background:#91919133}.gray-text::selection{color:#919191;background:#91919133}.light-gray-text{color:#6c6c6c}.light-gray-text::-moz-selection{color:#6c6c6c;background:#6c6c6c33}.light-gray-text::selection{color:#6c6c6c;background:#6c6c6c33}.dark-gray-text{color:#424242}.dark-gray-text::-moz-selection{color:#424242;background:#42424233}.dark-gray-text::selection{color:#424242;background:#42424233}.black-text{color:#2f2f2f}.black-text::-moz-selection{color:#2f2f2f;background:#2f2f2f33}.black-text::selection{color:#2f2f2f;background:#2f2f2f33}.white-text{color:#dadada}.white-text::-moz-selection{color:#dadada;background:#fff3}.white-text::selection{color:#dadada;background:#fff3}.opacity-40{opacity:.4}.regular-text{font-size:14px;line-height:18px;font-family:Montserrat,sans-serif}.small-text{font-size:11px;line-height:14px;font-family:Montserrat,sans-serif}.open-hours-grid{display:grid;grid-template-columns:50% 50%;grid-row-gap:8px}.cursor-pointer{cursor:pointer}.show-all-days-container{grid-column:2/span 1}\n"] }]
94
94
  }], propDecorators: { infoWindowContent: [{
95
95
  type: Input
96
96
  }], markerData: [{
@@ -104,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
104
104
  }], bodyActions: [{
105
105
  type: Output
106
106
  }] } });
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtbWFwLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLW1hcC1kcm9wZG93bi9jYS1tYXAtZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtbWFwLWRyb3Bkb3duL2NhLW1hcC1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZFLFVBQVU7QUFDVixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXhELGFBQWE7QUFDYixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUUzRixPQUFPO0FBQ1AsT0FBTyxvQkFBb0IsTUFBTSw4Q0FBOEMsQ0FBQztBQUVoRixhQUFhO0FBQ2IsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFTM0UsUUFBUTtBQUNSLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQ0gsc0JBQXNCLEVBQ3RCLDZCQUE2QixFQUM3QixvQkFBb0IsR0FDdkIsTUFBTSxTQUFTLENBQUM7QUFFakIsUUFBUTtBQUNSLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7OztBQXNCakQsTUFBTSxPQUFPLHNCQUFzQjtJQXBCbkM7UUEwQmMsdUJBQWtCLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDOUQsNkJBQXdCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM5QyxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3ZDLGdCQUFXLEdBQW1DLElBQUksWUFBWSxFQUFFLENBQUM7UUFDcEUsYUFBUSxHQUFZLElBQUksQ0FBQztRQUN6Qix3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFDckMsU0FBSSxHQUFtQixvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQztRQUM3RCxnQkFBVyxHQUFhLElBQUksQ0FBQztRQUM3Qix5QkFBb0IsR0FBRyxvQkFBb0IsQ0FBQztRQUM1QywyQkFBc0IsR0FBRyxzQkFBc0IsQ0FBQztLQW9EMUQ7SUFqRUcsSUFBYSxVQUFVLENBQUMsTUFBUztRQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztJQUN6QixDQUFDO0lBWU0sY0FBYyxDQUFDLEtBQVk7UUFDOUIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztRQUUxQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUNuQyxDQUFDO0lBRU0sY0FBYyxDQUFDLE1BQXdCO1FBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxJQUE0QjtRQUNoRCxJQUFJLElBQUksRUFBRSxFQUFFO1lBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVNLGVBQWUsQ0FBQyxLQUFZO1FBQy9CLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVwQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVNLGdCQUFnQjtRQUNuQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDekQsQ0FBQztJQUVNLG1CQUFtQixDQUFDLEtBQVk7UUFDbkMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXBDLElBQ0ksSUFBSSxDQUFDLGlCQUFpQixFQUFFLFdBQVc7WUFDbkMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLElBQUksRUFBRSxFQUNuRCxDQUFDO1lBQ0MsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FDeEMsMkJBQTJCLENBQ2YsQ0FBQztZQUVqQixJQUNJLGFBQWEsRUFBRSxZQUFZLEdBQUcsYUFBYSxFQUFFLFNBQVM7Z0JBQ3RELGFBQWEsRUFBRSxZQUFZLEdBQUcsR0FBRztnQkFFakMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdDLENBQUM7SUFDTCxDQUFDO0lBRU0sdUJBQXVCLENBQzFCLEtBQVksRUFDWixjQUF3QjtRQUV4QixJQUFJLGNBQWM7WUFBRSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDM0MsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzVCLENBQUM7K0dBbEVRLHNCQUFzQjttR0FBdEIsc0JBQXNCLGlVQUZwQixDQUFDLHNCQUFzQixDQUFDLDBCQ3BEdkMsNnl1QkFza0JBO2dCRGhpQlEsU0FBUztnQkFDVCxZQUFZLDBSQUNaLG9CQUFvQixpT0FDcEIsVUFBVTtnQkFDVixhQUFhO2dCQUNiLHVCQUF1QjtnQkFDdkIsUUFBUTtnQkFDUixTQUFTLHlDQUNULHNCQUFzQiwwREFDdEIsNkJBQTZCLGlFQUM3QixvQkFBb0I7OzRGQU1mLHNCQUFzQjtrQkFwQmxDLFNBQVM7K0JBQ0kscUJBQXFCLGNBQ25CLElBQUksV0FDUDt3QkFDTCxTQUFTO3dCQUNULFlBQVk7d0JBQ1osb0JBQW9CO3dCQUNwQixVQUFVO3dCQUNWLGFBQWE7d0JBQ2IsdUJBQXVCO3dCQUN2QixRQUFRO3dCQUNSLFNBQVM7d0JBQ1Qsc0JBQXNCO3dCQUN0Qiw2QkFBNkI7d0JBQzdCLG9CQUFvQjtxQkFDdkIsYUFHVSxDQUFDLHNCQUFzQixDQUFDOzhCQUcxQixpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ08sVUFBVTtzQkFBdEIsS0FBSztnQkFJSSxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csd0JBQXdCO3NCQUFqQyxNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLy8gbW9kdWxlc1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFuZ3VsYXJTdmdJY29uTW9kdWxlLCBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnYW5ndWxhci1zdmctaWNvbic7XG5pbXBvcnQgeyBOZ2JUb29sdGlwIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuXG4vLyBjb21wb25lbnRzXG5pbXBvcnQgeyBDYUFwcFRvb2x0aXBWMkNvbXBvbmVudCB9IGZyb20gJy4uL2NhLWFwcC10b29sdGlwLXYyL2NhLWFwcC10b29sdGlwLXYyLmNvbXBvbmVudCc7XG5cbi8vIGpzb25cbmltcG9ydCB0YURldGFpbERyb3Bkb3duSnNvbiBmcm9tICcuLi8uLi8uLi9hc3NldHMvanNvbi90YS1kZXRhaWwtZHJvcGRvd24uanNvbic7XG5cbi8vIHN2Zy1yb3V0ZXNcbmltcG9ydCB7IE1hcERyb3Bkb3duU3ZnUm91dGVzIH0gZnJvbSAnLi4vY2EtbWFwLWRyb3Bkb3duL3V0aWxzL3N2Zy1yb3V0ZXMnO1xuXG4vLyBtb2RlbHNcbmltcG9ydCB7XG4gICAgRHJvcERvd25EYXRhLFxuICAgIElEcm9wRG93bkFjdGlvbnMsXG59IGZyb20gJy4uL2NhLWRldGFpbHMtZHJvcGRvd24vbW9kZWxzL2RldGFpbC1kcm9wZG93bi5tb2RlbCc7XG5pbXBvcnQgeyBNYXBEcm9wZG93bkNsdXN0ZXJJdGVtLCBNYXBEcm9wZG93bkNvbnRlbnQgfSBmcm9tICcuL21vZGVscyc7XG5cbi8vIHBpcGVzXG5pbXBvcnQgeyBDYVN2Z1BpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9jYS1zdmcucGlwZSc7XG5pbXBvcnQge1xuICAgIE1hcERyb3Bkb3duQ29udGVudFBpcGUsXG4gICAgTWFwRHJvcGRvd25DbHVzdGVyQ29udGVudFBpcGUsXG4gICAgTWFwRHJvcGRvd25WYWx1ZVBpcGUsXG59IGZyb20gJy4vcGlwZXMnO1xuXG4vLyBlbnVtc1xuaW1wb3J0IHsgRU1hcERyb3Bkb3duU3RyaW5nRW51bSB9IGZyb20gJy4vZW51bXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1jYS1tYXAtZHJvcGRvd24nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICAvL21vZHVsZXNcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBBbmd1bGFyU3ZnSWNvbk1vZHVsZSxcbiAgICAgICAgTmdiVG9vbHRpcCxcbiAgICAgICAgLy8gY29tcG9uZW50c1xuICAgICAgICBDYUFwcFRvb2x0aXBWMkNvbXBvbmVudCxcbiAgICAgICAgLy8gcGlwZXNcbiAgICAgICAgQ2FTdmdQaXBlLFxuICAgICAgICBNYXBEcm9wZG93bkNvbnRlbnRQaXBlLFxuICAgICAgICBNYXBEcm9wZG93bkNsdXN0ZXJDb250ZW50UGlwZSxcbiAgICAgICAgTWFwRHJvcGRvd25WYWx1ZVBpcGUsXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2EtbWFwLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jYS1tYXAtZHJvcGRvd24uY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtTdmdJY29uUmVnaXN0cnlTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FNYXBEcm9wZG93bkNvbXBvbmVudDxUPiB7XG4gICAgQElucHV0KCkgaW5mb1dpbmRvd0NvbnRlbnQ/OiBNYXBEcm9wZG93bkNvbnRlbnQgfCBudWxsO1xuICAgIEBJbnB1dCgpIHNldCBtYXJrZXJEYXRhKHZhbHVlczogVCkge1xuICAgICAgICB0aGlzLl9tYXJrZXJEYXRhID0gdmFsdWVzO1xuICAgICAgICB0aGlzLmlzSGlkZGVuID0gdHJ1ZTtcbiAgICB9XG4gICAgQE91dHB1dCgpIG9uQ2x1c3Rlckl0ZW1DbGljazogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIG9uQ2x1c3Rlckxpc3RTY3JvbGxUb0VuZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgb25CYWNrQnV0dG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIGJvZHlBY3Rpb25zOiBFdmVudEVtaXR0ZXI8SURyb3BEb3duQWN0aW9ucz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgcHVibGljIGlzSGlkZGVuOiBib29sZWFuID0gdHJ1ZTtcbiAgICBwdWJsaWMgaXNTaG93QWxsRGF5c0FjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBkYXRhOiBEcm9wRG93bkRhdGFbXSA9IHRhRGV0YWlsRHJvcGRvd25Kc29uLnRhRGV0YWlsRHJvcERvd247XG4gICAgcHVibGljIF9tYXJrZXJEYXRhOiBUIHwgbnVsbCA9IG51bGw7XG4gICAgcHVibGljIG1hcERyb3Bkb3duU3ZnUm91dGVzID0gTWFwRHJvcGRvd25TdmdSb3V0ZXM7XG4gICAgcHVibGljIGVNYXBEcm9wZG93blN0cmluZ0VudW0gPSBFTWFwRHJvcGRvd25TdHJpbmdFbnVtO1xuXG4gICAgcHVibGljIHNob3dIaWRkZW5EYXRhKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByZXZlbnRFdmVudFByb3BhZ2F0aW9uKGV2ZW50LCB0cnVlKTtcblxuICAgICAgICB0aGlzLmlzSGlkZGVuID0gIXRoaXMuaXNIaWRkZW47XG4gICAgfVxuXG4gICAgcHVibGljIGNhbGxCb2R5QWN0aW9uKGFjdGlvbjogSURyb3BEb3duQWN0aW9ucyk6IHZvaWQge1xuICAgICAgICB0aGlzLmJvZHlBY3Rpb25zLmVtaXQoYWN0aW9uKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2x1c3Rlckl0ZW1DbGljayhpdGVtOiBNYXBEcm9wZG93bkNsdXN0ZXJJdGVtKTogdm9pZCB7XG4gICAgICAgIGlmIChpdGVtPy5pZCkgdGhpcy5vbkNsdXN0ZXJJdGVtQ2xpY2s/LmVtaXQoaXRlbS5pZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGJhY2tCdXR0b25DbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcmV2ZW50RXZlbnRQcm9wYWdhdGlvbihldmVudCk7XG5cbiAgICAgICAgdGhpcy5vbkJhY2tCdXR0b25DbGljay5lbWl0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3dBbGxEYXlzQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNTaG93QWxsRGF5c0FjdGl2ZSA9ICF0aGlzLmlzU2hvd0FsbERheXNBY3RpdmU7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2x1c3Rlckxpc3RTY3JvbGwoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJldmVudEV2ZW50UHJvcGFnYXRpb24oZXZlbnQpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuaW5mb1dpbmRvd0NvbnRlbnQ/LmNsdXN0ZXJEYXRhICYmXG4gICAgICAgICAgICB0aGlzLmluZm9XaW5kb3dDb250ZW50Py5jbHVzdGVyRGF0YT8ubGVuZ3RoID49IDI1XG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgICAgICAgJy5jbHVzdGVyLW1hcmtlci1jb250YWluZXInXG4gICAgICAgICAgICApIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgc2Nyb2xsRWxlbWVudD8ub2Zmc2V0SGVpZ2h0ICsgc2Nyb2xsRWxlbWVudD8uc2Nyb2xsVG9wID49XG4gICAgICAgICAgICAgICAgc2Nyb2xsRWxlbWVudD8uc2Nyb2xsSGVpZ2h0IC0gMTA1XG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgdGhpcy5vbkNsdXN0ZXJMaXN0U2Nyb2xsVG9FbmQuZW1pdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHByZXZlbnRFdmVudFByb3BhZ2F0aW9uKFxuICAgICAgICBldmVudDogRXZlbnQsXG4gICAgICAgIHByZXZlbnREZWZhdWx0PzogYm9vbGVhblxuICAgICk6IHZvaWQge1xuICAgICAgICBpZiAocHJldmVudERlZmF1bHQpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbn1cbiIsIkBpZiAoaW5mb1dpbmRvd0NvbnRlbnQ/LmNsdXN0ZXJEYXRhKSB7XG4gICAgQGlmIChpbmZvV2luZG93Q29udGVudD8uc2VsZWN0ZWRDbHVzdGVySXRlbURhdGEpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJtYXJrZXItY29udGFpbmVyIHJlbGF0aXZlXCJcbiAgICAgICAgICAgIFtjbGFzcy5leHBhbmRlZF09XCIhaXNIaWRkZW5cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInByZXZlbnRFdmVudFByb3BhZ2F0aW9uKCRldmVudCwgdHJ1ZSlcIlxuICAgICAgICAgICAgKG1vdXNld2hlZWwpPVwicHJldmVudEV2ZW50UHJvcGFnYXRpb24oJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgIGl0ZW0gb2YgaW5mb1dpbmRvd0NvbnRlbnQ/LnNlbGVjdGVkQ2x1c3Rlckl0ZW1EYXRhLm1haW5Db250ZW50O1xuICAgICAgICAgICAgICAgIGxldCBpID0gJGluZGV4O1xuICAgICAgICAgICAgICAgIHRyYWNrIGlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRyb3Bkb3duQ29udGVudFRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogaW5mb1dpbmRvd0NvbnRlbnQ/LnNlbGVjdGVkQ2x1c3Rlckl0ZW1EYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5kYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV4cGFuZGVkLWluZm9cIiBbY2xhc3MuYWN0aXZlXT1cIiFpc0hpZGRlblwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgICAgICBpdGVtIG9mIGluZm9XaW5kb3dDb250ZW50Py5zZWxlY3RlZENsdXN0ZXJJdGVtRGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgLmV4cGFuZGVkQ29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSAkaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHRyYWNrIGlcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcm9wZG93bkNvbnRlbnRUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGluZm9XaW5kb3dDb250ZW50Py5zZWxlY3RlZENsdXN0ZXJJdGVtRGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1hcnJvdyBhbGlnbi1zZWxmLWVuZFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnJvdGF0ZS1hcnJvd109XCIhaXNIaWRkZW5cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIm1hcERyb3Bkb3duU3ZnUm91dGVzLmNvcm5lckRvd25BcnJvd1JvdXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dIaWRkZW5EYXRhKCRldmVudClcIlxuICAgICAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIH0gQGVsc2Uge1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImNsdXN0ZXItbWFya2VyLWNvbnRhaW5lciBkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTFcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInByZXZlbnRFdmVudFByb3BhZ2F0aW9uKCRldmVudCwgdHJ1ZSlcIlxuICAgICAgICAgICAgKG1vdXNld2hlZWwpPVwib25DbHVzdGVyTGlzdFNjcm9sbCgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgaXRlbSBvZiBpbmZvV2luZG93Q29udGVudD8uY2x1c3RlckRhdGE7XG4gICAgICAgICAgICAgICAgbGV0IGkgPSAkaW5kZXg7XG4gICAgICAgICAgICAgICAgdHJhY2sgaVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2x1c3RlckNvbnRlbnRUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBpdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgfVxufSBAZWxzZSB7XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cIm1hcmtlci1jb250YWluZXIgcmVsYXRpdmVcIlxuICAgICAgICBbY2xhc3MuZXhwYW5kZWRdPVwiIWlzSGlkZGVuXCJcbiAgICAgICAgKGNsaWNrKT1cInByZXZlbnRFdmVudFByb3BhZ2F0aW9uKCRldmVudCwgdHJ1ZSlcIlxuICAgICAgICAobW91c2V3aGVlbCk9XCJwcmV2ZW50RXZlbnRQcm9wYWdhdGlvbigkZXZlbnQpXCJcbiAgICA+XG4gICAgICAgIEBmb3IgKGl0ZW0gb2YgaW5mb1dpbmRvd0NvbnRlbnQ/Lm1haW5Db250ZW50OyBsZXQgaSA9ICRpbmRleDsgdHJhY2sgaSkge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgIGRyb3Bkb3duQ29udGVudFRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBpdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogX21hcmtlckRhdGEsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICB9XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImV4cGFuZGVkLWluZm9cIiBbY2xhc3MuYWN0aXZlXT1cIiFpc0hpZGRlblwiPlxuICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgaXRlbSBvZiBpbmZvV2luZG93Q29udGVudD8uZXhwYW5kZWRDb250ZW50O1xuICAgICAgICAgICAgICAgIGxldCBpID0gJGluZGV4O1xuICAgICAgICAgICAgICAgIHRyYWNrIGlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRyb3Bkb3duQ29udGVudFRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogX21hcmtlckRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWFycm93IGFsaWduLXNlbGYtZW5kXCJcbiAgICAgICAgICAgIFtjbGFzcy5yb3RhdGUtYXJyb3ddPVwiIWlzSGlkZGVuXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgW3NyY109XCJtYXBEcm9wZG93blN2Z1JvdXRlcy5jb3JuZXJEb3duQXJyb3dSb3V0ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dIaWRkZW5EYXRhKCRldmVudClcIlxuICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxufVxuXG48bmctdGVtcGxhdGUgI2NsdXN0ZXJDb250ZW50VGVtcGxhdGUgbGV0LWNvbnRlbnQ9XCJjb250ZW50XCI+XG4gICAgQGxldCBpdGVtID0gY29udGVudCB8IG1hcERyb3Bkb3duQ2x1c3RlckNvbnRlbnRUeXBlO1xuICAgIEBpZiAoaXRlbSkge1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gY2x1c3Rlci1tYXJrZXItaXRlbVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2x1c3Rlckl0ZW1DbGljayhpdGVtKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTFcIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICAgICAgJ21heC13aWR0aCc6IGl0ZW0uZmF2b3VyaXRlID8gJ2NhbGMoMTAwJSAtIDE4cHgpJyA6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uaXNDbG9zZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIm1hcERyb3Bkb3duU3ZnUm91dGVzLnBlcm1hbmVudGx5Q2xvc2VkUm91dGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N2Z1N0eWxlXT1cInsgJ3dpZHRoLnB4JzogMTgsICdoZWlnaHQucHgnOiAxOCB9XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZWd1bGFyLXRleHQgZGFyay1ncmF5LXRleHQgdXBwZXJjYXNlIHRleHQtZWxsaXBzaXNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5uYW1lIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIEBpZiAoaXRlbS5mYXZvdXJpdGUpIHtcbiAgICAgICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXhcIlxuICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIm1hcERyb3Bkb3duU3ZnUm91dGVzLmZhdm9yaXRlUm91dGVcIlxuICAgICAgICAgICAgICAgICAgICBbc3ZnU3R5bGVdPVwieyAnd2lkdGgucHgnOiAxOCwgJ2hlaWdodC5weCc6IDE4IH1cIlxuICAgICAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2Ryb3Bkb3duQ29udGVudFRlbXBsYXRlIGxldC1jb250ZW50PVwiY29udGVudFwiIGxldC1kYXRhPVwiZGF0YVwiPlxuICAgIEBsZXQgaXRlbSA9IGNvbnRlbnQgfCBtYXBEcm9wZG93bkNvbnRlbnRUeXBlO1xuICAgIEBpZiAoaXRlbSkge1xuICAgICAgICBAaWYgKCFpdGVtLnNpZGVCeVNpZGVJbmZvKSB7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgZHJvcGRvd25Db250ZW50SXRlbVRlbXBsYXRlcztcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDwhLS0gU2lkZSBieSBTaWRlIERhdGEgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDwhLS0gTGVmdCBTaWRlIC0tPlxuICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5zaWRlQnlTaWRlSW5mby5sZWZ0U2lkZSkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvcGRvd25Db250ZW50SXRlbVRlbXBsYXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogaXRlbS5zaWRlQnlTaWRlSW5mbz8ubGVmdFNpZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tIFJpZ2h0IFNpZGUgLS0+XG4gICAgICAgICAgICAgICAgQGlmIChpdGVtLnNpZGVCeVNpZGVJbmZvLnJpZ2h0U2lkZSkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvcGRvd25Db250ZW50SXRlbVRlbXBsYXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogaXRlbS5zaWRlQnlTaWRlSW5mbz8ucmlnaHRTaWRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGVcbiAgICAjZHJvcGRvd25Db250ZW50SXRlbVRlbXBsYXRlc1xuICAgIGxldC1jb250ZW50PVwiY29udGVudFwiXG4gICAgbGV0LWRhdGE9XCJkYXRhXCJcbj5cbiAgICBAbGV0IGl0ZW0gPSBjb250ZW50IHwgbWFwRHJvcGRvd25Db250ZW50VHlwZTtcbiAgICBAaWYgKGl0ZW0pIHtcbiAgICAgICAgQHN3aXRjaCAoaXRlbT8udGVtcGxhdGUpIHtcbiAgICAgICAgICAgIEBjYXNlIChlTWFwRHJvcGRvd25TdHJpbmdFbnVtLkhFQURFUl9USVRMRSkge1xuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoZWFkaW5nIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIge3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uY3VzdG9tQ2xhc3NDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoZWFkZXItdGV4dC1jb250YWluZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMSB3LTEwMFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5oYXNCYWNrQnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImhlYWRlci1iYWNrLWJ1dHRvbiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYmFja0J1dHRvbkNsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIm1hcERyb3Bkb3duU3ZnUm91dGVzLmJhY2tCdXR0b25Sb3V0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3ZnU3R5bGVdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aWR0aC5weCc6IDE0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWlnaHQucHgnOiAxNCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaGVhZGVyIGNhLWZvbnQtZXh0cmEtYm9sZCBkYXJrLWdyYXktdGV4dCB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmN1c3RvbUNsYXNzVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhW2l0ZW0uZmllbGRdIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImRyb3Bkb3duLWljb25cIj48L2Rpdj4gLS0+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGFwcC1jYS1kZXRhaWxzLWRyb3Bkb3duXG4gICAgICAgICAgICAgICAgICAgICAgICAjZGV0YWlsc0Ryb3Bkb3duXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJkYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0LXRvcCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIml0ZW0/LmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhXT1cIml0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbUNsYXNzRHJvcERvd25dPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcC1saXN0LWNhcmQtZHJvcGRvd24gbWFya2VyLWRyb3Bkb3duLXBvcG92ZXInXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGRyb3BEb3duQWN0aW9ucyk9XCJjYWxsQm9keUFjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWRldGFpbHMtZHJvcGRvd24+IC0tPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8IS0tIFJhdGluZyBSZXZpZXcgLS0+XG4gICAgICAgICAgICBAY2FzZSAoZU1hcERyb3Bkb3duU3RyaW5nRW51bS5SQVRJTkdfUkVWSUVXKSB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtY2VudGVyIGFsaWduLWNvbnRlbnQtY2VudGVyIGdhcC0zIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmN1c3RvbUNsYXNzQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLm9wYWNpdHktNDBdPVwiIWRhdGFbaXRlbS5maWVsZF0ubGlrZUNvdW50XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyYXRpbmctaWNvbiBsaWtlLWljb24gZC1mbGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImRhdGFbaXRlbS5maWVsZF0uaGFzTGlrZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwibWFwRHJvcGRvd25TdmdSb3V0ZXMubGlrZVJvdXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3ZnU3R5bGVdPVwieyAnd2lkdGgucHgnOiAxNCwgJ2hlaWdodC5weCc6IDE0IH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic21hbGwtdGV4dCBkYXJrLWdyYXktdGV4dCBjYS1mb250LXNlbWktYm9sZCB1c2VyLXNlbGVjdC1ub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgZGF0YVtpdGVtLmZpZWxkXS5saWtlQ291bnQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLm9wYWNpdHktNDBdPVwiIWRhdGFbaXRlbS5maWVsZF0uZGlzbGlrZUNvdW50XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyYXRpbmctaWNvbiBkaXNsaWtlLWljb24gZC1mbGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImRhdGFbaXRlbS5maWVsZF0uaGFzRGlzbGlrZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJtYXBEcm9wZG93blN2Z1JvdXRlcy5kaXNsaWtlUm91dGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdmdTdHlsZV09XCJ7ICd3aWR0aC5weCc6IDE0LCAnaGVpZ2h0LnB4JzogMTQgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzbWFsbC10ZXh0IGRhcmstZ3JheS10ZXh0IGNhLWZvbnQtc2VtaS1ib2xkIHVzZXItc2VsZWN0LW5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyBkYXRhW2l0ZW0uZmllbGRdLmRpc2xpa2VDb3VudCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Mub3BhY2l0eS00MF09XCIhZGF0YVtpdGVtLmZpZWxkXS5yZXZpZXdDb3VudFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmF0aW5nLWljb24gcmV2aWV3LWljb24gZC1mbGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIm1hcERyb3Bkb3duU3ZnUm91dGVzLnJldmlld1JvdXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3ZnU3R5bGVdPVwieyAnd2lkdGgucHgnOiAxNCwgJ2hlaWdodC5weCc6IDE0IH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic21hbGwtdGV4dCBkYXJrLWdyYXktdGV4dCBjYS1mb250LXNlbWktYm9sZCB1c2VyLXNlbGVjdC1ub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgZGF0YVtpdGVtLmZpZWxkXS5yZXZpZXdDb3VudCA/PyAwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8IS0tIEJvcmRlciBEaXZpZGVyIC0tPlxuICAgICAgICAgICAgQGNhc2UgKGVNYXBEcm9wZG93blN0cmluZ0VudW0uRElWSURFUikge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWRpdmlkZXJcIj48L2Rpdj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPCEtLSBSZXBhaXIgU2hvcCBTZXJ2aWNlcyAtLT5cbiAgICAgICAgICAgIEBjYXNlIChlTWFwRHJvcGRvd25TdHJpbmdFbnVtLlJFUEFJUl9TSE9QX1NFUlZJQ0VTKSB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4ge3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uY3VzdG9tQ2xhc3NDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlIG9mIGRhdGFbaXRlbS5maWVsZF07XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaSA9ICRpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrIGlcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcEJhY2tncm91bmRdPVwiJyM0MjQyNDInXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWFpbkNhVG9vbHRpcF09XCJzZXJ2aWNlLnNlcnZpY2VUeXBlLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZXBhaXItc2VydmljZS1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJzZXJ2aWNlLmFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlLmxvZ29OYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYVN2ZzogJ2NvbW1vbicgOiAncmVwYWlyLXNlcnZpY2VzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3ZnU3R5bGVdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoLnB4JzogMTgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVpZ2h0LnB4JzogMTgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPCEtLSBJY29uIGFuZCBUZXh0IC0tPlxuICAgICAgICAgICAgQGNhc2UgKGVNYXBEcm9wZG93blN0cmluZ0VudW0uSUNPTl9URVhUKSB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1zdGFydCBnYXAtMSB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5jdXN0b21DbGFzc0NvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0udXJsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwQmFja2dyb3VuZF09XCInIzQyNDI0MidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYWluQ2FUb29sdGlwXT1cIml0ZW0uaWNvblRvb2x0aXBUZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbj1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVUb29sdGlwXT1cIiFpdGVtLmljb25Ub29sdGlwVGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpdGVtLnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdmdTdHlsZV09XCJ7ICd3aWR0aC5weCc6IDE4LCAnaGVpZ2h0LnB4JzogMTggfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZWd1bGFyLXRleHQgZGFyay1ncmF5LXRleHQge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmN1c3RvbUNsYXNzVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhW2l0ZW0uZmllbGRdIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPCEtLSBUaXRsZSAtLT5cbiAgICAgICAgICAgIEBjYXNlIChlTWFwRHJvcGRvd25TdHJpbmdFbnVtLlRJVExFKSB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlZ3VsYXItdGV4dCBkYXJrLWdyYXktdGV4dCBjYS1mb250LWV4dHJhLWJvbGQge3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uY3VzdG9tQ2xhc3NUZXh0XG4gICAgICAgICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IGRhdGFbaXRlbS5maWVsZF0gfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPCEtLSBUaXRsZSBhbmQgQ291bnQgLS0+XG4gICAgICAgICAgICBAY2FzZSAoZU1hcERyb3Bkb3duU3RyaW5nRW51bS5USVRMRV9DT1VOVCkge1xuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmN1c3RvbUNsYXNzQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWd1bGFyLXRleHQgZGFyay1ncmF5LXRleHQgY2EtZm9udC1leHRyYS1ib2xkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnRpdGxlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50LW51bWJlciB3aGl0ZS10ZXh0IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBjYS1mb250LWJvbGRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhW2l0ZW0uZmllbGRdIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8IS0tIE1vbmV5IFRleHQgIC0tPlxuICAgICAgICAgICAgQGNhc2UgKGVNYXBEcm9wZG93blN0cmluZ0VudW0uTU9ORVlfVEVYVCkge1xuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmN1c3RvbUNsYXNzQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWd1bGFyLXRleHQgY2EtZm9udC1ib2xkIGJsdWUtdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPy5baXRlbS5maWVsZF0gIT09ICcnID8gZGF0YVtpdGVtLmZpZWxkXSA6ICckMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVndWxhci10ZXh0IGxpZ2h0LWdyYXktdGV4dCBjYS1mb250LWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0udGl0bGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIDwhLS0gT3BlbiBIb3VycyAtLT5cbiAgICAgICAgICAgIEBjYXNlIChlTWFwRHJvcGRvd25TdHJpbmdFbnVtLk9QRU5fSE9VUlMpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmVndWxhci10ZXh0IGRhcmstZ3JheS10ZXh0IGNhLWZvbnQtZXh0cmEtYm9sZCB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uY3VzdG9tQ2xhc3NUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0udGl0bGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcGVuLWhvdXJzLWdyaWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtpdGVtLmZpZWxkXT8ub3BlbkhvdXJzVG9kYXkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaXNTaG93QWxsRGF5c0FjdGl2ZVxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzbWFsbC10ZXh0IGRhcmstZ3JheS10ZXh0IGNhLWZvbnQtYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRhdGFbaXRlbS5maWVsZF0ub3BlbkhvdXJzVG9kYXkuc3RhdHVzIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlZ3VsYXItdGV4dCBkYXJrLWdyYXktdGV4dCB0ZXh0LWVsbGlwc2lzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZGF0YVtpdGVtLmZpZWxkXS5vcGVuSG91cnNUb2RheS5pbmZvIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGRhdGFbaXRlbS5maWVsZF0/Lm9wZW5Ib3Vycz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpc1Nob3dBbGxEYXlzQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5IG9mIGRhdGFbaXRlbS5maWVsZF0ub3BlbkhvdXJzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSAkaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjayBpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic21hbGwtdGV4dCBkYXJrLWdyYXktdGV4dCBjYS1mb250LWJvbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZGF5LmRheU9mV2VlayB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZWd1bGFyLXRleHQgZGFyay1ncmF5LXRleHQgdGV4dC1lbGxpcHNpc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5LnN0YXJ0VGltZSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAtICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheS5lbmRUaW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtMSBqdXN0aWZ5LWNvbnRlbnQtZW5kIHNob3ctYWxsLWRheXMtY29udGFpbmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0FsbERheXNDbGljaygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcERyb3Bkb3duU3ZnUm91dGVzLmFjY2lkZW50Q2FsZW5kZXJSb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N2Z1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoLnB4JzogMTgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWlnaHQucHgnOiAxOCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmVndWxhci10ZXh0IGdyYXktdGV4dCBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTaG93QWxsRGF5c0FjdGl2ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnU2hvdyB0b2RheSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ1Nob3cgYWxsIGRheXMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIDwhLS0gVGV4dCBhbmQgQ291bnQgLS0+XG4gICAgICAgICAgICBAY2FzZSAoZU1hcERyb3Bkb3duU3RyaW5nRW51bS5URVhUX0NPVU5UKSB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTEge3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uY3VzdG9tQ2xhc3NDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlZ3VsYXItdGV4dCB7eyBpdGVtLmN1c3RvbUNsYXNzVGV4dCB9fVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS50aXRsZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZWd1bGFyLXRleHQgY2EtZm9udC1zZW1pLWJvbGQge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmN1c3RvbUNsYXNzVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhIHwgbWFwRHJvcGRvd25WYWx1ZTogaXRlbSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPCEtLSBTdWJ0aXRsZSAtLT5cbiAgICAgICAgICAgIEBjYXNlIChlTWFwRHJvcGRvd25TdHJpbmdFbnVtLlNVQlRJVExFKSB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlZ3VsYXItdGV4dCBkYXJrLWdyYXktdGV4dCBjYS1mb250LWV4dHJhLWJvbGQge3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uY3VzdG9tQ2xhc3NUZXh0XG4gICAgICAgICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0udGl0bGUgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPCEtLSBSZWd1bGFyIFRleHQgLS0+XG4gICAgICAgICAgICBAY2FzZSAoZU1hcERyb3Bkb3duU3RyaW5nRW51bS5URVhUKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlZ3VsYXItdGV4dCBibGFjay10ZXh0IHt7IGl0ZW0uY3VzdG9tQ2xhc3NUZXh0IH19XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGRhdGEgfCBtYXBEcm9wZG93blZhbHVlOiBpdGVtIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIDwhLS0gU21hbGwgU3VidGl0bGUgLS0+XG4gICAgICAgICAgICBAY2FzZSAoZU1hcERyb3Bkb3duU3RyaW5nRW51bS5TTUFMTF9TVUJUSVRMRSkge1xuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzbWFsbC10ZXh0IGRhcmstZ3JheS10ZXh0IHt7IGl0ZW0uY3VzdG9tQ2xhc3NUZXh0IH19XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0udGl0bGUgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtbWFwLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLW1hcC1kcm9wZG93bi9jYS1tYXAtZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtbWFwLWRyb3Bkb3duL2NhLW1hcC1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZFLFVBQVU7QUFDVixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXhELGFBQWE7QUFDYixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUUzRixPQUFPO0FBQ1AsT0FBTyxvQkFBb0IsTUFBTSw4Q0FBOEMsQ0FBQztBQUVoRixhQUFhO0FBQ2IsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFTM0UsUUFBUTtBQUNSLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQ0gsc0JBQXNCLEVBQ3RCLDZCQUE2QixFQUM3QixvQkFBb0IsR0FDdkIsTUFBTSxTQUFTLENBQUM7QUFFakIsUUFBUTtBQUNSLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7OztBQXNCN0MsTUFBTSxPQUFPLHNCQUFzQjtJQXBCbkM7UUEyQmMsdUJBQWtCLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDOUQsNkJBQXdCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM5QyxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3ZDLGdCQUFXLEdBQW1DLElBQUksWUFBWSxFQUFFLENBQUM7UUFFcEUsYUFBUSxHQUFZLElBQUksQ0FBQztRQUN6Qix3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFFckMsU0FBSSxHQUFtQixvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQztRQUM3RCxnQkFBVyxHQUFhLElBQUksQ0FBQztRQUU3Qix5QkFBb0IsR0FBRyxvQkFBb0IsQ0FBQztRQUM1Qyx1QkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztLQW9EbEQ7SUFyRUcsSUFBYSxVQUFVLENBQUMsTUFBUztRQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztJQUN6QixDQUFDO0lBZ0JNLGNBQWMsQ0FBQyxLQUFZO1FBQzlCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFMUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDbkMsQ0FBQztJQUVNLGNBQWMsQ0FBQyxNQUF3QjtRQUMxQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsSUFBNEI7UUFDaEQsSUFBSSxJQUFJLEVBQUUsRUFBRTtZQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFTSxlQUFlLENBQUMsS0FBWTtRQUMvQixJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFcEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFTSxnQkFBZ0I7UUFDbkIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ3pELENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxLQUFZO1FBQ25DLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVwQyxJQUNJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxXQUFXO1lBQ25DLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFDbkQsQ0FBQztZQUNDLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQ3hDLDJCQUEyQixDQUNmLENBQUM7WUFFakIsSUFDSSxhQUFhLEVBQUUsWUFBWSxHQUFHLGFBQWEsRUFBRSxTQUFTO2dCQUN0RCxhQUFhLEVBQUUsWUFBWSxHQUFHLEdBQUc7Z0JBRWpDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM3QyxDQUFDO0lBQ0wsQ0FBQztJQUVNLHVCQUF1QixDQUMxQixLQUFZLEVBQ1osY0FBd0I7UUFFeEIsSUFBSSxjQUFjO1lBQUUsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzNDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUM1QixDQUFDOytHQXRFUSxzQkFBc0I7bUdBQXRCLHNCQUFzQixpVUFGcEIsQ0FBQyxzQkFBc0IsQ0FBQywwQkNwRHZDLHl2dUJBc2tCQTtnQkRoaUJRLFNBQVM7Z0JBQ1QsWUFBWSwwUkFDWixvQkFBb0IsaU9BQ3BCLFVBQVU7Z0JBQ1YsYUFBYTtnQkFDYix1QkFBdUI7Z0JBQ3ZCLFFBQVE7Z0JBQ1IsU0FBUyx5Q0FDVCxzQkFBc0IsMERBQ3RCLDZCQUE2QixpRUFDN0Isb0JBQW9COzs0RkFNZixzQkFBc0I7a0JBcEJsQyxTQUFTOytCQUNJLHFCQUFxQixjQUNuQixJQUFJLFdBQ1A7d0JBQ0wsU0FBUzt3QkFDVCxZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsVUFBVTt3QkFDVixhQUFhO3dCQUNiLHVCQUF1Qjt3QkFDdkIsUUFBUTt3QkFDUixTQUFTO3dCQUNULHNCQUFzQjt3QkFDdEIsNkJBQTZCO3dCQUM3QixvQkFBb0I7cUJBQ3ZCLGFBR1UsQ0FBQyxzQkFBc0IsQ0FBQzs4QkFHMUIsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNPLFVBQVU7c0JBQXRCLEtBQUs7Z0JBS0ksa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLHdCQUF3QjtzQkFBakMsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8vIG1vZHVsZXNcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBbmd1bGFyU3ZnSWNvbk1vZHVsZSwgU3ZnSWNvblJlZ2lzdHJ5U2VydmljZSB9IGZyb20gJ2FuZ3VsYXItc3ZnLWljb24nO1xuaW1wb3J0IHsgTmdiVG9vbHRpcCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcblxuLy8gY29tcG9uZW50c1xuaW1wb3J0IHsgQ2FBcHBUb29sdGlwVjJDb21wb25lbnQgfSBmcm9tICcuLi9jYS1hcHAtdG9vbHRpcC12Mi9jYS1hcHAtdG9vbHRpcC12Mi5jb21wb25lbnQnO1xuXG4vLyBqc29uXG5pbXBvcnQgdGFEZXRhaWxEcm9wZG93bkpzb24gZnJvbSAnLi4vLi4vLi4vYXNzZXRzL2pzb24vdGEtZGV0YWlsLWRyb3Bkb3duLmpzb24nO1xuXG4vLyBzdmctcm91dGVzXG5pbXBvcnQgeyBNYXBEcm9wZG93blN2Z1JvdXRlcyB9IGZyb20gJy4uL2NhLW1hcC1kcm9wZG93bi91dGlscy9zdmctcm91dGVzJztcblxuLy8gbW9kZWxzXG5pbXBvcnQge1xuICAgIERyb3BEb3duRGF0YSxcbiAgICBJRHJvcERvd25BY3Rpb25zLFxufSBmcm9tICcuLi9jYS1kZXRhaWxzLWRyb3Bkb3duL21vZGVscy9kZXRhaWwtZHJvcGRvd24ubW9kZWwnO1xuaW1wb3J0IHsgTWFwRHJvcGRvd25DbHVzdGVySXRlbSwgTWFwRHJvcGRvd25Db250ZW50IH0gZnJvbSAnLi9tb2RlbHMnO1xuXG4vLyBwaXBlc1xuaW1wb3J0IHsgQ2FTdmdQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvY2Etc3ZnLnBpcGUnO1xuaW1wb3J0IHtcbiAgICBNYXBEcm9wZG93bkNvbnRlbnRQaXBlLFxuICAgIE1hcERyb3Bkb3duQ2x1c3RlckNvbnRlbnRQaXBlLFxuICAgIE1hcERyb3Bkb3duVmFsdWVQaXBlLFxufSBmcm9tICcuL3BpcGVzJztcblxuLy8gZW51bXNcbmltcG9ydCB7IGVNYXBEcm9wZG93blN0cmluZyB9IGZyb20gJy4vZW51bXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1jYS1tYXAtZHJvcGRvd24nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICAvL21vZHVsZXNcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBBbmd1bGFyU3ZnSWNvbk1vZHVsZSxcbiAgICAgICAgTmdiVG9vbHRpcCxcbiAgICAgICAgLy8gY29tcG9uZW50c1xuICAgICAgICBDYUFwcFRvb2x0aXBWMkNvbXBvbmVudCxcbiAgICAgICAgLy8gcGlwZXNcbiAgICAgICAgQ2FTdmdQaXBlLFxuICAgICAgICBNYXBEcm9wZG93bkNvbnRlbnRQaXBlLFxuICAgICAgICBNYXBEcm9wZG93bkNsdXN0ZXJDb250ZW50UGlwZSxcbiAgICAgICAgTWFwRHJvcGRvd25WYWx1ZVBpcGUsXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2EtbWFwLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jYS1tYXAtZHJvcGRvd24uY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtTdmdJY29uUmVnaXN0cnlTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FNYXBEcm9wZG93bkNvbXBvbmVudDxUPiB7XG4gICAgQElucHV0KCkgaW5mb1dpbmRvd0NvbnRlbnQ/OiBNYXBEcm9wZG93bkNvbnRlbnQgfCBudWxsO1xuICAgIEBJbnB1dCgpIHNldCBtYXJrZXJEYXRhKHZhbHVlczogVCkge1xuICAgICAgICB0aGlzLl9tYXJrZXJEYXRhID0gdmFsdWVzO1xuICAgICAgICB0aGlzLmlzSGlkZGVuID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KCkgb25DbHVzdGVySXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgb25DbHVzdGVyTGlzdFNjcm9sbFRvRW5kID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBvbkJhY2tCdXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgYm9keUFjdGlvbnM6IEV2ZW50RW1pdHRlcjxJRHJvcERvd25BY3Rpb25zPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHB1YmxpYyBpc0hpZGRlbjogYm9vbGVhbiA9IHRydWU7XG4gICAgcHVibGljIGlzU2hvd0FsbERheXNBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHB1YmxpYyBkYXRhOiBEcm9wRG93bkRhdGFbXSA9IHRhRGV0YWlsRHJvcGRvd25Kc29uLnRhRGV0YWlsRHJvcERvd247XG4gICAgcHVibGljIF9tYXJrZXJEYXRhOiBUIHwgbnVsbCA9IG51bGw7XG4gICAgXG4gICAgcHVibGljIG1hcERyb3Bkb3duU3ZnUm91dGVzID0gTWFwRHJvcGRvd25TdmdSb3V0ZXM7XG4gICAgcHVibGljIGVNYXBEcm9wZG93blN0cmluZyA9IGVNYXBEcm9wZG93blN0cmluZztcblxuICAgIHB1YmxpYyBzaG93SGlkZGVuRGF0YShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcmV2ZW50RXZlbnRQcm9wYWdhdGlvbihldmVudCwgdHJ1ZSk7XG5cbiAgICAgICAgdGhpcy5pc0hpZGRlbiA9ICF0aGlzLmlzSGlkZGVuO1xuICAgIH1cblxuICAgIHB1YmxpYyBjYWxsQm9keUFjdGlvbihhY3Rpb246IElEcm9wRG93bkFjdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ib2R5QWN0aW9ucy5lbWl0KGFjdGlvbik7XG4gICAgfVxuXG4gICAgcHVibGljIGNsdXN0ZXJJdGVtQ2xpY2soaXRlbTogTWFwRHJvcGRvd25DbHVzdGVySXRlbSk6IHZvaWQge1xuICAgICAgICBpZiAoaXRlbT8uaWQpIHRoaXMub25DbHVzdGVySXRlbUNsaWNrPy5lbWl0KGl0ZW0uaWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBiYWNrQnV0dG9uQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJldmVudEV2ZW50UHJvcGFnYXRpb24oZXZlbnQpO1xuXG4gICAgICAgIHRoaXMub25CYWNrQnV0dG9uQ2xpY2suZW1pdCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzaG93QWxsRGF5c0NsaWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzU2hvd0FsbERheXNBY3RpdmUgPSAhdGhpcy5pc1Nob3dBbGxEYXlzQWN0aXZlO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsdXN0ZXJMaXN0U2Nyb2xsKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByZXZlbnRFdmVudFByb3BhZ2F0aW9uKGV2ZW50KTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmluZm9XaW5kb3dDb250ZW50Py5jbHVzdGVyRGF0YSAmJlxuICAgICAgICAgICAgdGhpcy5pbmZvV2luZG93Q29udGVudD8uY2x1c3RlckRhdGE/Lmxlbmd0aCA+PSAyNVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbEVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgICAgICcuY2x1c3Rlci1tYXJrZXItY29udGFpbmVyJ1xuICAgICAgICAgICAgKSBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHNjcm9sbEVsZW1lbnQ/Lm9mZnNldEhlaWdodCArIHNjcm9sbEVsZW1lbnQ/LnNjcm9sbFRvcCA+PVxuICAgICAgICAgICAgICAgIHNjcm9sbEVsZW1lbnQ/LnNjcm9sbEhlaWdodCAtIDEwNVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHRoaXMub25DbHVzdGVyTGlzdFNjcm9sbFRvRW5kLmVtaXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBwcmV2ZW50RXZlbnRQcm9wYWdhdGlvbihcbiAgICAgICAgZXZlbnQ6IEV2ZW50LFxuICAgICAgICBwcmV2ZW50RGVmYXVsdD86IGJvb2xlYW5cbiAgICApOiB2b2lkIHtcbiAgICAgICAgaWYgKHByZXZlbnREZWZhdWx0KSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG59XG4iLCJAaWYgKGluZm9XaW5kb3dDb250ZW50Py5jbHVzdGVyRGF0YSkge1xuICAgIEBpZiAoaW5mb1dpbmRvd0NvbnRlbnQ/LnNlbGVjdGVkQ2x1c3Rlckl0ZW1EYXRhKSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwibWFya2VyLWNvbnRhaW5lciByZWxhdGl2ZVwiXG4gICAgICAgICAgICBbY2xhc3MuZXhwYW5kZWRdPVwiIWlzSGlkZGVuXCJcbiAgICAgICAgICAgIChjbGljayk9XCJwcmV2ZW50RXZlbnRQcm9wYWdhdGlvbigkZXZlbnQsIHRydWUpXCJcbiAgICAgICAgICAgIChtb3VzZXdoZWVsKT1cInByZXZlbnRFdmVudFByb3BhZ2F0aW9uKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICBpdGVtIG9mIGluZm9XaW5kb3dDb250ZW50Py5zZWxlY3RlZENsdXN0ZXJJdGVtRGF0YS5tYWluQ29udGVudDtcbiAgICAgICAgICAgICAgICBsZXQgaSA9ICRpbmRleDtcbiAgICAgICAgICAgICAgICB0cmFjayBpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkcm9wZG93bkNvbnRlbnRUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBpdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGluZm9XaW5kb3dDb250ZW50Py5zZWxlY3RlZENsdXN0ZXJJdGVtRGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJleHBhbmRlZC1pbmZvXCIgW2NsYXNzLmFjdGl2ZV09XCIhaXNIaWRkZW5cIj5cbiAgICAgICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICAgICAgaXRlbSBvZiBpbmZvV2luZG93Q29udGVudD8uc2VsZWN0ZWRDbHVzdGVySXRlbURhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgIC5leHBhbmRlZENvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIGxldCBpID0gJGluZGV4O1xuICAgICAgICAgICAgICAgICAgICB0cmFjayBpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvcGRvd25Db250ZW50VGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBpdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBpbmZvV2luZG93Q29udGVudD8uc2VsZWN0ZWRDbHVzdGVySXRlbURhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5kYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tYXJyb3cgYWxpZ24tc2VsZi1lbmRcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5yb3RhdGUtYXJyb3ddPVwiIWlzSGlkZGVuXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICAgICAgW3NyY109XCJtYXBEcm9wZG93blN2Z1JvdXRlcy5jb3JuZXJEb3duQXJyb3dSb3V0ZVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93SGlkZGVuRGF0YSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICB9IEBlbHNlIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjbHVzdGVyLW1hcmtlci1jb250YWluZXIgZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0xXCJcbiAgICAgICAgICAgIChjbGljayk9XCJwcmV2ZW50RXZlbnRQcm9wYWdhdGlvbigkZXZlbnQsIHRydWUpXCJcbiAgICAgICAgICAgIChtb3VzZXdoZWVsKT1cIm9uQ2x1c3Rlckxpc3RTY3JvbGwoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgIGl0ZW0gb2YgaW5mb1dpbmRvd0NvbnRlbnQ/LmNsdXN0ZXJEYXRhO1xuICAgICAgICAgICAgICAgIGxldCBpID0gJGluZGV4O1xuICAgICAgICAgICAgICAgIHRyYWNrIGlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJDb250ZW50VGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbn0gQGVsc2Uge1xuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJtYXJrZXItY29udGFpbmVyIHJlbGF0aXZlXCJcbiAgICAgICAgW2NsYXNzLmV4cGFuZGVkXT1cIiFpc0hpZGRlblwiXG4gICAgICAgIChjbGljayk9XCJwcmV2ZW50RXZlbnRQcm9wYWdhdGlvbigkZXZlbnQsIHRydWUpXCJcbiAgICAgICAgKG1vdXNld2hlZWwpPVwicHJldmVudEV2ZW50UHJvcGFnYXRpb24oJGV2ZW50KVwiXG4gICAgPlxuICAgICAgICBAZm9yIChpdGVtIG9mIGluZm9XaW5kb3dDb250ZW50Py5tYWluQ29udGVudDsgbGV0IGkgPSAkaW5kZXg7IHRyYWNrIGkpIHtcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICBkcm9wZG93bkNvbnRlbnRUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IF9tYXJrZXJEYXRhLFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJleHBhbmRlZC1pbmZvXCIgW2NsYXNzLmFjdGl2ZV09XCIhaXNIaWRkZW5cIj5cbiAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgIGl0ZW0gb2YgaW5mb1dpbmRvd0NvbnRlbnQ/LmV4cGFuZGVkQ29udGVudDtcbiAgICAgICAgICAgICAgICBsZXQgaSA9ICRpbmRleDtcbiAgICAgICAgICAgICAgICB0cmFjayBpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkcm9wZG93bkNvbnRlbnRUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBpdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IF9tYXJrZXJEYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1hcnJvdyBhbGlnbi1zZWxmLWVuZFwiXG4gICAgICAgICAgICBbY2xhc3Mucm90YXRlLWFycm93XT1cIiFpc0hpZGRlblwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgIFtzcmNdPVwibWFwRHJvcGRvd25TdmdSb3V0ZXMuY29ybmVyRG93bkFycm93Um91dGVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93SGlkZGVuRGF0YSgkZXZlbnQpXCJcbiAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbn1cblxuPG5nLXRlbXBsYXRlICNjbHVzdGVyQ29udGVudFRlbXBsYXRlIGxldC1jb250ZW50PVwiY29udGVudFwiPlxuICAgIEBsZXQgaXRlbSA9IGNvbnRlbnQgfCBtYXBEcm9wZG93bkNsdXN0ZXJDb250ZW50VHlwZTtcbiAgICBAaWYgKGl0ZW0pIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGNsdXN0ZXItbWFya2VyLWl0ZW1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNsdXN0ZXJJdGVtQ2xpY2soaXRlbSlcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgICAgICAgICdtYXgtd2lkdGgnOiBpdGVtLmZhdm91cml0ZSA/ICdjYWxjKDEwMCUgLSAxOHB4KScgOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQGlmIChpdGVtLmlzQ2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJtYXBEcm9wZG93blN2Z1JvdXRlcy5wZXJtYW5lbnRseUNsb3NlZFJvdXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdmdTdHlsZV09XCJ7ICd3aWR0aC5weCc6IDE4LCAnaGVpZ2h0LnB4JzogMTggfVwiXG4gICAgICAgICAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmVndWxhci10ZXh0IGRhcmstZ3JheS10ZXh0IHVwcGVyY2FzZSB0ZXh0LWVsbGlwc2lzXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ubmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKGl0ZW0uZmF2b3VyaXRlKSB7XG4gICAgICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4XCJcbiAgICAgICAgICAgICAgICAgICAgW3NyY109XCJtYXBEcm9wZG93blN2Z1JvdXRlcy5mYXZvcml0ZVJvdXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW3N2Z1N0eWxlXT1cInsgJ3dpZHRoLnB4JzogMTgsICdoZWlnaHQucHgnOiAxOCB9XCJcbiAgICAgICAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkcm9wZG93bkNvbnRlbnRUZW1wbGF0ZSBsZXQtY29udGVudD1cImNvbnRlbnRcIiBsZXQtZGF0YT1cImRhdGFcIj5cbiAgICBAbGV0IGl0ZW0gPSBjb250ZW50IHwgbWFwRHJvcGRvd25Db250ZW50VHlwZTtcbiAgICBAaWYgKGl0ZW0pIHtcbiAgICAgICAgQGlmICghaXRlbS5zaWRlQnlTaWRlSW5mbykge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgIGRyb3Bkb3duQ29udGVudEl0ZW1UZW1wbGF0ZXM7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8IS0tIFNpZGUgYnkgU2lkZSBEYXRhIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8IS0tIExlZnQgU2lkZSAtLT5cbiAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uc2lkZUJ5U2lkZUluZm8ubGVmdFNpZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3Bkb3duQ29udGVudEl0ZW1UZW1wbGF0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGl0ZW0uc2lkZUJ5U2lkZUluZm8/LmxlZnRTaWRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLSBSaWdodCBTaWRlIC0tPlxuICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5zaWRlQnlTaWRlSW5mby5yaWdodFNpZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3Bkb3duQ29udGVudEl0ZW1UZW1wbGF0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGl0ZW0uc2lkZUJ5U2lkZUluZm8/LnJpZ2h0U2lkZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlXG4gICAgI2Ryb3Bkb3duQ29udGVudEl0ZW1UZW1wbGF0ZXNcbiAgICBsZXQtY29udGVudD1cImNvbnRlbnRcIlxuICAgIGxldC1kYXRhPVwiZGF0YVwiXG4+XG4gICAgQGxldCBpdGVtID0gY29udGVudCB8IG1hcERyb3Bkb3duQ29udGVudFR5cGU7XG4gICAgQGlmIChpdGVtKSB7XG4gICAgICAgIEBzd2l0Y2ggKGl0ZW0/LnRlbXBsYXRlKSB7XG4gICAgICAgICAgICBAY2FzZSAoZU1hcERyb3Bkb3duU3RyaW5nLkhFQURFUl9USVRMRSkge1xuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoZWFkaW5nIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIge3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uY3VzdG9tQ2xhc3NDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoZWFkZXItdGV4dC1jb250YWluZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMSB3LTEwMFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5oYXNCYWNrQnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImhlYWRlci1iYWNrLWJ1dHRvbiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYmFja0J1dHRvbkNsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIm1hcERyb3Bkb3duU3ZnUm91dGVzLmJhY2tCdXR0b25Sb3V0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3ZnU3R5bGVdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aWR0aC5weCc6IDE0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWlnaHQucHgnOiAxNCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaGVhZGVyIGNhLWZvbnQtZXh0cmEtYm9sZCBkYXJrLWdyYXktdGV4dCB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmN1c3RvbUNsYXNzVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhW2l0ZW0uZmllbGRdIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImRyb3Bkb3duLWljb25cIj48L2Rpdj4gLS0+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGFwcC1jYS1kZXRhaWxzLWRyb3Bkb3duXG4gICAgICAgICAgICAgICAgICAgICAgICAjZGV0YWlsc0Ryb3Bkb3duXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJkYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0LXRvcCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIml0ZW0/LmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhXT1cIml0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbUNsYXNzRHJvcERvd25dPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcC1saXN0LWNhcmQtZHJvcGRvd24gbWFya2VyLWRyb3Bkb3duLXBvcG92ZXInXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGRyb3BEb3duQWN0aW9ucyk9XCJjYWxsQm9keUFjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWRldGFpbHMtZHJvcGRvd24+IC0tPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8IS0tIFJhdGluZyBSZXZpZXcgLS0+XG4gICAgICAgICAgICBAY2FzZSAoZU1hcERyb3Bkb3duU3RyaW5nLlJBVElOR19SRVZJRVcpIHtcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1jZW50ZXIgYWxpZ24tY29udGVudC1jZW50ZXIgZ2FwLTMge3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uY3VzdG9tQ2xhc3NDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Mub3BhY2l0eS00MF09XCIhZGF0YVtpdGVtLmZpZWxkXS5saWtlQ291bnRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJhdGluZy1pY29uIGxpa2UtaWNvbiBkLWZsZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiZGF0YVtpdGVtLmZpZWxkXS5oYXNMaWtlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJtYXBEcm9wZG93blN2Z1JvdXRlcy5saWtlUm91dGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdmdTdHlsZV09XCJ7ICd3aWR0aC5weCc6IDE0LCAnaGVpZ2h0LnB4JzogMTQgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzbWFsbC10ZXh0IGRhcmstZ3JheS10ZXh0IGNhLWZvbnQtc2VtaS1ib2xkIHVzZXItc2VsZWN0LW5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyBkYXRhW2l0ZW0uZmllbGRdLmxpa2VDb3VudCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Mub3BhY2l0eS00MF09XCIhZGF0YVtpdGVtLmZpZWxkXS5kaXNsaWtlQ291bnRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJhdGluZy1pY29uIGRpc2xpa2UtaWNvbiBkLWZsZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiZGF0YVtpdGVtLmZpZWxkXS5oYXNEaXNsaWtlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIm1hcERyb3Bkb3duU3ZnUm91dGVzLmRpc2xpa2VSb3V0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N2Z1N0eWxlXT1cInsgJ3dpZHRoLnB4JzogMTQsICdoZWlnaHQucHgnOiAxNCB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNtYWxsLXRleHQgZGFyay1ncmF5LXRleHQgY2EtZm9udC1zZW1pLWJvbGQgdXNlci1zZWxlY3Qtbm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IGRhdGFbaXRlbS5maWVsZF0uZGlzbGlrZUNvdW50IH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5vcGFjaXR5LTQwXT1cIiFkYXRhW2l0ZW0uZmllbGRdLnJldmlld0NvdW50XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyYXRpbmctaWNvbiByZXZpZXctaWNvbiBkLWZsZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwibWFwRHJvcGRvd25TdmdSb3V0ZXMucmV2aWV3Um91dGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdmdTdHlsZV09XCJ7ICd3aWR0aC5weCc6IDE0LCAnaGVpZ2h0LnB4JzogMTQgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzbWFsbC10ZXh0IGRhcmstZ3JheS10ZXh0IGNhLWZvbnQtc2VtaS1ib2xkIHVzZXItc2VsZWN0LW5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyBkYXRhW2l0ZW0uZmllbGRdLnJldmlld0NvdW50ID8/IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIDwhLS0gQm9yZGVyIERpdmlkZXIgLS0+XG4gICAgICAgICAgICBAY2FzZSAoZU1hcERyb3Bkb3duU3RyaW5nLkRJVklERVIpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1kaXZpZGVyXCI+PC9kaXY+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIDwhLS0gUmVwYWlyIFNob3AgU2VydmljZXMgLS0+XG4gICAgICAgICAgICBAY2FzZSAoZU1hcERyb3Bkb3duU3RyaW5nLlJFUEFJUl9TSE9QX1NFUlZJQ0VTKSB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4ge3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uY3VzdG9tQ2xhc3NDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlIG9mIGRhdGFbaXRlbS5maWVsZF07XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaSA9ICRpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrIGlcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcEJhY2tncm91bmRdPVwiJyM0MjQyNDInXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWFpbkNhVG9vbHRpcF09XCJzZXJ2aWNlLnNlcnZpY2VUeXBlLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZXBhaXItc2VydmljZS1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJzZXJ2aWNlLmFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlLmxvZ29OYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYVN2ZzogJ2NvbW1vbicgOiAncmVwYWlyLXNlcnZpY2VzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3ZnU3R5bGVdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoLnB4JzogMTgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVpZ2h0LnB4JzogMTgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPCEtLSBJY29uIGFuZCBUZXh0IC0tPlxuICAgICAgICAgICAgQGNhc2UgKGVNYXBEcm9wZG93blN0cmluZy5JQ09OX1RFWFQpIHtcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLXN0YXJ0IGdhcC0xIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmN1c3RvbUNsYXNzQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS51cmwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBCYWNrZ3JvdW5kXT1cIicjNDI0MjQyJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21haW5DYVRvb2x0aXBdPVwiaXRlbS5pY29uVG9vbHRpcFRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZVRvb2x0aXBdPVwiIWl0ZW0uaWNvblRvb2x0aXBUZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIml0ZW0udXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N2Z1N0eWxlXT1cInsgJ3dpZHRoLnB4JzogMTgsICdoZWlnaHQucHgnOiAxOCB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlZ3VsYXItdGV4dCBkYXJrLWdyYXktdGV4dCB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uY3VzdG9tQ2xhc3NUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRhdGFbaXRlbS5maWVsZF0gfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8IS0tIFRpdGxlIC0tPlxuICAgICAgICAgICAgQGNhc2UgKGVNYXBEcm9wZG93blN0cmluZy5USVRMRSkge1xuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZWd1bGFyLXRleHQgZGFyay1ncmF5LXRleHQgY2EtZm9udC1leHRyYS1ib2xkIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmN1c3RvbUNsYXNzVGV4dFxuICAgICAgICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBkYXRhW2l0ZW0uZmllbGRdIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIDwhLS0gVGl0bGUgYW5kIENvdW50IC0tPlxuICAgICAgICAgICAgQGNhc2UgKGVNYXBEcm9wZG93blN0cmluZy5USVRMRV9DT1VOVCkge1xuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmN1c3RvbUNsYXNzQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWd1bGFyLXRleHQgZGFyay1ncmF5LXRleHQgY2EtZm9udC1leHRyYS1ib2xkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnRpdGxlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50LW51bWJlciB3aGl0ZS10ZXh0IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBjYS1mb250LWJvbGRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhW2l0ZW0uZmllbGRdIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8IS0tIE1vbmV5IFRleHQgIC0tPlxuICAgICAgICAgICAgQGNhc2UgKGVNYXBEcm9wZG93blN0cmluZy5NT05FWV9URVhUKSB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTEge3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uY3VzdG9tQ2xhc3NDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlZ3VsYXItdGV4dCBjYS1mb250LWJvbGQgYmx1ZS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE/LltpdGVtLmZpZWxkXSAhPT0gJycgPyBkYXRhW2l0ZW0uZmllbGRdIDogJyQwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWd1bGFyLXRleHQgbGlnaHQtZ3JheS10ZXh0IGNhLWZvbnQtYm9sZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS50aXRsZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPCEtLSBPcGVuIEhvdXJzIC0tPlxuICAgICAgICAgICAgQGNhc2UgKGVNYXBEcm9wZG93blN0cmluZy5PUEVOX0hPVVJTKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlZ3VsYXItdGV4dCBkYXJrLWdyYXktdGV4dCBjYS1mb250LWV4dHJhLWJvbGQge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmN1c3RvbUNsYXNzVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnRpdGxlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3Blbi1ob3Vycy1ncmlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbaXRlbS5maWVsZF0/Lm9wZW5Ib3Vyc1RvZGF5ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIWlzU2hvd0FsbERheXNBY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic21hbGwtdGV4dCBkYXJrLWdyYXktdGV4dCBjYS1mb250LWJvbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhW2l0ZW0uZmllbGRdLm9wZW5Ib3Vyc1RvZGF5LnN0YXR1cyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZWd1bGFyLXRleHQgZGFyay1ncmF5LXRleHQgdGV4dC1lbGxpcHNpc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRhdGFbaXRlbS5maWVsZF0ub3BlbkhvdXJzVG9kYXkuaW5mbyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChkYXRhW2l0ZW0uZmllbGRdPy5vcGVuSG91cnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXNTaG93QWxsRGF5c0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheSBvZiBkYXRhW2l0ZW0uZmllbGRdLm9wZW5Ib3VycztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpID0gJGluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNtYWxsLXRleHQgZGFyay1ncmF5LXRleHQgY2EtZm9udC1ib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRheS5kYXlPZldlZWsgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmVndWxhci10ZXh0IGRhcmstZ3JheS10ZXh0IHRleHQtZWxsaXBzaXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheS5zdGFydFRpbWUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgLSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXkuZW5kVGltZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBmbGV4LTEganVzdGlmeS1jb250ZW50LWVuZCBzaG93LWFsbC1kYXlzLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dBbGxEYXlzQ2xpY2soKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBEcm9wZG93blN2Z1JvdXRlcy5hY2NpZGVudENhbGVuZGVyUm91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aWR0aC5weCc6IDE4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVpZ2h0LnB4JzogMTgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlZ3VsYXItdGV4dCBncmF5LXRleHQgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU2hvd0FsbERheXNBY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ1Nob3cgdG9kYXknXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdTaG93IGFsbCBkYXlzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8IS0tIFRleHQgYW5kIENvdW50IC0tPlxuICAgICAgICAgICAgQGNhc2UgKGVNYXBEcm9wZG93blN0cmluZy5URVhUX0NPVU5UKSB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTEge3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uY3VzdG9tQ2xhc3NDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlZ3VsYXItdGV4dCB7eyBpdGVtLmN1c3RvbUNsYXNzVGV4dCB9fVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS50aXRsZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZWd1bGFyLXRleHQgY2EtZm9udC1zZW1pLWJvbGQge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmN1c3RvbUNsYXNzVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhIHwgbWFwRHJvcGRvd25WYWx1ZTogaXRlbSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPCEtLSBTdWJ0aXRsZSAtLT5cbiAgICAgICAgICAgIEBjYXNlIChlTWFwRHJvcGRvd25TdHJpbmcuU1VCVElUTEUpIHtcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmVndWxhci10ZXh0IGRhcmstZ3JheS10ZXh0IGNhLWZvbnQtZXh0cmEtYm9sZCB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5jdXN0b21DbGFzc1RleHRcbiAgICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgaXRlbS50aXRsZSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8IS0tIFJlZ3VsYXIgVGV4dCAtLT5cbiAgICAgICAgICAgIEBjYXNlIChlTWFwRHJvcGRvd25TdHJpbmcuVEVYVCkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWd1bGFyLXRleHQgYmxhY2stdGV4dCB7eyBpdGVtLmN1c3RvbUNsYXNzVGV4dCB9fVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBkYXRhIHwgbWFwRHJvcGRvd25WYWx1ZTogaXRlbSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8IS0tIFNtYWxsIFN1YnRpdGxlIC0tPlxuICAgICAgICAgICAgQGNhc2UgKGVNYXBEcm9wZG93blN0cmluZy5TTUFMTF9TVUJUSVRMRSkge1xuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzbWFsbC10ZXh0IGRhcmstZ3JheS10ZXh0IHt7IGl0ZW0uY3VzdG9tQ2xhc3NUZXh0IH19XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0udGl0bGUgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=