tango-app-ui-analyse-zone 3.3.1-beta.2 → 3.3.1-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/top-performing-zones/top-performing-zones.component.mjs +6 -4
- package/esm2022/lib/components/zone-summary-table/zone-summary-table.component.mjs +3 -3
- package/esm2022/lib/components/zone-v2/customer-journey/customer-journey.component.mjs +178 -20
- package/esm2022/lib/components/zone-v2/summary-table/summary-table.component.mjs +3 -3
- package/esm2022/lib/components/zone-v2/top-performing/top-performing.component.mjs +3 -3
- package/esm2022/lib/tango-analyse-zone.module.mjs +2 -2
- package/fesm2022/tango-app-ui-analyse-zone.mjs +181 -28
- package/fesm2022/tango-app-ui-analyse-zone.mjs.map +1 -1
- package/lib/components/top-performing-zones/top-performing-zones.component.d.ts +1 -1
- package/lib/components/zone-v2/customer-journey/customer-journey.component.d.ts +40 -3
- package/package.json +1 -1
|
@@ -148,10 +148,10 @@ export class TopPerformingComponent {
|
|
|
148
148
|
}
|
|
149
149
|
}
|
|
150
150
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: TopPerformingComponent, deps: [{ token: i1.NgbModal }, { token: i2.FormBuilder }, { token: i3.Zonev2Service }, { token: i0.ChangeDetectorRef }, { token: i4.ToastService }, { token: i5.GlobalStateService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
151
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: TopPerformingComponent, selector: "lib-top-performing", ngImport: i0, template: "<div class=\"row \">\r\n <div class=\"d-flex justify-content-between p-3\">\r\n <div class=\"col-lg-6 card\">\r\n <div class=\"h-100\">\r\n <div class=\"card-header border-0 p-4\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"headtext\">Top Performing Zones <span\r\n ngbTooltip=\"Top performing zones across the stores selected\" placement=\"top\"\r\n triggers=\"mouseenter:mouseleave\" tooltipClass=\"custom-tooltip\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3512_32868)\">\r\n <path\r\n d=\"M8.00016 10.6666V7.99998M8.00016 5.33331H8.00683M14.6668 7.99998C14.6668 11.6819 11.6821 14.6666 8.00016 14.6666C4.31826 14.6666 1.3335 11.6819 1.3335 7.99998C1.3335 4.31808 4.31826 1.33331 8.00016 1.33331C11.6821 1.33331 14.6668 4.31808 14.6668 7.99998Z\"\r\n stroke=\"#98A2B3\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3512_32868\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></span>\r\n <span class=\"subratetext mt-2\">Based on Concentration Rate</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <!--begin::Nav group-->\r\n <div class=\"nav-group nav-group-outline border-1 btn-group p-0\">\r\n <button class=\"btn btn-outline\" \r\n [ngClass]=\"{\r\n 'activePlanBtn': type === 'top-zones',\r\n 'inactivePlanBtn': type !== 'top-zones',\r\n 'disabled': disableTopZones\r\n }\" \r\n (click)=\"selectPlanzone('top-zones')\" \r\n [attr.disabled]=\"disableTopZones ? true : null\">\r\n Top 5 Zones\r\n </button>\r\n \r\n <button class=\"btn btn-outline px-6 py-3\" \r\n [ngClass]=\"{\r\n 'activePlanBtn': type === 'bottom-zones',\r\n 'inactivePlanBtn': type !== 'bottom-zones',\r\n 'disabled': disableBottomZones\r\n }\" \r\n (click)=\"selectPlanzone('bottom-zones')\" \r\n [attr.disabled]=\"disableBottomZones ? true : null\">\r\n Bottom 5 Zones\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"table-container mx-4\">\r\n <table *ngIf=\"!analysisLoading && !analysisNoData\" class=\"table bottom-border\">\r\n <thead class=\"fixed-header\">\r\n <tr>\r\n <th>Zone Name</th>\r\n <th>Footfall</th>\r\n <th>Bounced</th>\r\n <th>Engagers</th>\r\n <th>Impressions</th>\r\n \r\n </tr>\r\n </thead>\r\n <tbody class=\"table-responsive topstores\">\r\n <tr *ngFor=\"let zone of topPerformingZones\">\r\n <td>\r\n <div class=\"table-title\">{{ zone?.zoneName ? zone.zoneName : '--' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{ zone?.footfallCount ? zone.footfallCount : '--' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{ zone?.bouncedCount ? zone.bouncedCount : '--' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{ zone?.engagersCount ? zone.engagersCount : '--' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{ zone?.impressionRate ? zone.impressionRate + '%' : '--' }}</div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <ng-container *ngIf=\"analysisLoading\">\r\n <div class=\"row loader Analysiscard d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"analysisNoData && !analysisLoading\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 Analysiscard\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Top Performing Analysis</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n \r\n </div>\r\n \r\n </div>\r\n <div class=\"col-lg-6 card mx-2\">\r\n <div class=\"h-100\">\r\n <div class=\"card-header border-0 p-4\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"headtext\">Top Performing Stores <span\r\n ngbTooltip=\"Top performing stores and their concentration % along with avg dwell time\" placement=\"top\"\r\n triggers=\"mouseenter:mouseleave\" tooltipClass=\"custom-tooltip\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3512_32868)\">\r\n <path\r\n d=\"M8.00016 10.6666V7.99998M8.00016 5.33331H8.00683M14.6668 7.99998C14.6668 11.6819 11.6821 14.6666 8.00016 14.6666C4.31826 14.6666 1.3335 11.6819 1.3335 7.99998C1.3335 4.31808 4.31826 1.33331 8.00016 1.33331C11.6821 1.33331 14.6668 4.31808 14.6668 7.99998Z\"\r\n stroke=\"#98A2B3\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3512_32868\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></span>\r\n <span class=\"subratetext mt-2\">Based on Concentration Rate</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <!--begin::Nav group-->\r\n <div class=\"nav-group nav-group-outline border-1 btn-group p-0\">\r\n <button class=\"btn btn-outline\" \r\n [ngClass]=\"{\r\n 'activePlanBtn': storetype === 'top-Stores',\r\n 'inactivePlanBtn': storetype !== 'top-Stores',\r\n 'disabled': disableTopStores\r\n }\" \r\n (click)=\"selectPlanStore('top-Stores')\" \r\n [attr.disabled]=\"disableTopStores ? true : null\">\r\n Top 5 Stores\r\n </button>\r\n \r\n <button class=\"btn btn-outline px-6 py-3\" \r\n [ngClass]=\"{\r\n 'activePlanBtn': storetype === 'bottom-Stores',\r\n 'inactivePlanBtn': storetype !== 'bottom-Stores',\r\n 'disabled': disableBottomStores\r\n }\" \r\n (click)=\"selectPlanStore('bottom-Stores')\" \r\n [attr.disabled]=\"disableBottomStores ? true : null\">\r\n Bottom 5 Stores\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"table-container mx-4\">\r\n <table *ngIf=\"!topperformingstoresLoading && !topperformingstoresNodata\" class=\"table bottom-border\">\r\n <thead class=\"fixed-header\">\r\n <tr>\r\n <th>Store Info</th>\r\n <th>Zone Name</th>\r\n <th>Zone Footfall</th>\r\n <th>Concentration</th>\r\n <th>Avg Dwell Time</th>\r\n \r\n \r\n </tr>\r\n </thead>\r\n <tbody class=\"table-responsive topstores\">\r\n <tr *ngFor=\"let store of topPerformingStores\">\r\n <td>\r\n <div class=\"table-title-primary invoice mb-2\">{{ store.storeName || '--' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{ store.zoneName || '--' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{ store.zoneFootfallCount || '--' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{ store.impressionRate || '--' }}%</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{ store.avgDwellTime || '--' }} mins</div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <ng-container *ngIf=\"topperformingstoresLoading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"topperformingstoresNodata && !topperformingstoresLoading\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column mt-18\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Top Performing Stores</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>", styles: [".subtext{color:var(--Gray-800, #1D2939);font-size:14px;font-weight:500;line-height:20px}.headcount{color:var(--Gray-900, #101828);font-size:20px;font-weight:600;line-height:30px}.headtext{color:var(--Gray-700, #344054);font-size:18px;font-weight:600;line-height:28px}.subratetext{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;line-height:18px}#zonechartdiv{width:100%;height:365px;margin-bottom:6%}.invoicesearch{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:14px!important;font-style:normal;font-weight:500!important;line-height:20px}.invoicesearch::placeholder{color:var(--Gray-700, #344054)!important}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}tr{vertical-align:middle}.table-title-primary{color:var(--Primary-700, #009BF3);font-size:14px;font-weight:500;line-height:20px;text-decoration-line:underline;text-transform:capitalize}table th,table td{height:44px!important;padding:18px 15px!important;align-items:center;gap:12px;align-self:stretch}.Analysiscard,.storescard{margin-top:11%;margin-bottom:20%}.form-control:disabled{background-color:#f9fafb!important}.nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.table-container{position:relative;max-height:400px;overflow-y:auto}.fixed-header th{position:sticky;top:0;background-color:#fff;z-index:2}.table.bottom-border thead th{border-bottom:2px solid #dee2e6}.table.bottom-border tbody tr td{border-bottom:1px solid #dee2e6}.table.bottom-border th,.table.bottom-border td{padding:8px 16px;white-space:nowrap}.table-responsive::-webkit-scrollbar{width:6px}.table-responsive::-webkit-scrollbar-thumb{background-color:#ddd;border-radius:4px}.activePlanBtn{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Gray-700, #344054);font-size:14px!important;font-weight:500!important;line-height:20px}.inactivePlanBtn{color:var(--Gray-500, #667085)!important;font-size:14px;font-weight:500!important;line-height:20px}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }] });
|
|
151
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: TopPerformingComponent, selector: "lib-top-performing", ngImport: i0, template: "<div class=\"row \">\r\n <div class=\"d-flex justify-content-between p-3\">\r\n <div class=\"col-lg-6 card\">\r\n <div class=\"h-100\">\r\n <div class=\"card-header border-0 p-4\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"headtext\">Top Performing Zones <span\r\n ngbTooltip=\"Top performing zones across the stores selected\" placement=\"top\"\r\n triggers=\"mouseenter:mouseleave\" tooltipClass=\"custom-tooltip\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3512_32868)\">\r\n <path\r\n d=\"M8.00016 10.6666V7.99998M8.00016 5.33331H8.00683M14.6668 7.99998C14.6668 11.6819 11.6821 14.6666 8.00016 14.6666C4.31826 14.6666 1.3335 11.6819 1.3335 7.99998C1.3335 4.31808 4.31826 1.33331 8.00016 1.33331C11.6821 1.33331 14.6668 4.31808 14.6668 7.99998Z\"\r\n stroke=\"#98A2B3\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3512_32868\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></span>\r\n <span class=\"subratetext mt-2\">Based on Concentration Rate</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <!--begin::Nav group-->\r\n <div class=\"nav-group nav-group-outline border-1 btn-group p-0\">\r\n <button class=\"btn btn-outline\" \r\n [ngClass]=\"{\r\n 'activePlanBtn': type === 'top-zones',\r\n 'inactivePlanBtn': type !== 'top-zones',\r\n 'disabled': disableTopZones\r\n }\" \r\n (click)=\"selectPlanzone('top-zones')\" \r\n [attr.disabled]=\"disableTopZones ? true : null\">\r\n Top 5 Zones\r\n </button>\r\n \r\n <button class=\"btn btn-outline px-6 py-3\" \r\n [ngClass]=\"{\r\n 'activePlanBtn': type === 'bottom-zones',\r\n 'inactivePlanBtn': type !== 'bottom-zones',\r\n 'disabled': disableBottomZones\r\n }\" \r\n (click)=\"selectPlanzone('bottom-zones')\" \r\n [attr.disabled]=\"disableBottomZones ? true : null\">\r\n Bottom 5 Zones\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"table-container mx-4\">\r\n <table *ngIf=\"!analysisLoading && !analysisNoData\" class=\"table bottom-border\">\r\n <thead class=\"fixed-header\">\r\n <tr>\r\n <th>Zone Name</th>\r\n <th>Footfall</th>\r\n <th>Bounced</th>\r\n <th>Engagers</th>\r\n <th>Impressions</th>\r\n \r\n </tr>\r\n </thead>\r\n <tbody class=\"table-responsive topstores\">\r\n <tr *ngFor=\"let zone of topPerformingZones\">\r\n <td>\r\n <div class=\"table-title\">{{ zone?.zoneName ? zone.zoneName : '--' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{ zone?.footfallCount ? zone.footfallCount : '--' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{ zone?.bouncedCount ? zone.bouncedCount : '--' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{ zone?.engagersCount ? zone.engagersCount : '--' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{ zone?.impressionRate ? zone.impressionRate + '%' : '--' }}</div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <ng-container *ngIf=\"analysisLoading\">\r\n <div class=\"row loader Analysiscard d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"analysisNoData && !analysisLoading\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 Analysiscard\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Top Performing Analysis</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n \r\n </div>\r\n \r\n </div>\r\n <div class=\"col-lg-6 card mx-2\">\r\n <div class=\"h-100\">\r\n <div class=\"card-header border-0 p-4\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"headtext\">Top Performing Stores <span\r\n ngbTooltip=\"Top performing stores and their concentration % along with avg dwell time\" placement=\"top\"\r\n triggers=\"mouseenter:mouseleave\" tooltipClass=\"custom-tooltip\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3512_32868)\">\r\n <path\r\n d=\"M8.00016 10.6666V7.99998M8.00016 5.33331H8.00683M14.6668 7.99998C14.6668 11.6819 11.6821 14.6666 8.00016 14.6666C4.31826 14.6666 1.3335 11.6819 1.3335 7.99998C1.3335 4.31808 4.31826 1.33331 8.00016 1.33331C11.6821 1.33331 14.6668 4.31808 14.6668 7.99998Z\"\r\n stroke=\"#98A2B3\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3512_32868\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></span>\r\n <span class=\"subratetext mt-2\">Based on Concentration Rate</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <!--begin::Nav group-->\r\n <div class=\"nav-group nav-group-outline border-1 btn-group p-0\">\r\n <button class=\"btn btn-outline\" \r\n [ngClass]=\"{\r\n 'activePlanBtn': storetype === 'top-Stores',\r\n 'inactivePlanBtn': storetype !== 'top-Stores',\r\n 'disabled': disableTopStores\r\n }\" \r\n (click)=\"selectPlanStore('top-Stores')\" \r\n [attr.disabled]=\"disableTopStores ? true : null\">\r\n Top 5 Stores\r\n </button>\r\n \r\n <button class=\"btn btn-outline px-6 py-3\" \r\n [ngClass]=\"{\r\n 'activePlanBtn': storetype === 'bottom-Stores',\r\n 'inactivePlanBtn': storetype !== 'bottom-Stores',\r\n 'disabled': disableBottomStores\r\n }\" \r\n (click)=\"selectPlanStore('bottom-Stores')\" \r\n [attr.disabled]=\"disableBottomStores ? true : null\">\r\n Bottom 5 Stores\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"table-container mx-4\">\r\n <table *ngIf=\"!topperformingstoresLoading && !topperformingstoresNodata\" class=\"table bottom-border\">\r\n <thead class=\"fixed-header\">\r\n <tr>\r\n <th>Store Info</th>\r\n <th>Zone Name</th>\r\n <th>Zone Footfall</th>\r\n <th>Concentration</th>\r\n <th>Avg Dwell Time</th>\r\n \r\n \r\n </tr>\r\n </thead>\r\n <tbody class=\"table-responsive topstores\">\r\n <tr *ngFor=\"let store of topPerformingStores\">\r\n <td>\r\n <div class=\"table-title-primary invoice\">{{ store.storeName || '--' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{ store.zoneName || '--' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{ store.zoneFootfallCount || '--' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{ store.impressionRate || '--' }}%</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{ store.avgDwellTime || '--' }} mins</div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <ng-container *ngIf=\"topperformingstoresLoading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"topperformingstoresNodata && !topperformingstoresLoading\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column mt-18\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Top Performing Stores</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>", styles: [".subtext{color:var(--Gray-800, #1D2939);font-size:14px;font-weight:500;line-height:20px}.headcount{color:var(--Gray-900, #101828);font-size:20px;font-weight:600;line-height:30px}.headtext{color:var(--Gray-700, #344054);font-size:18px;font-weight:600;line-height:28px}.subratetext{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;line-height:18px}#zonechartdiv{width:100%;height:365px;margin-bottom:6%}.invoicesearch{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:14px!important;font-style:normal;font-weight:500!important;line-height:20px}.invoicesearch::placeholder{color:var(--Gray-700, #344054)!important}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}tr{vertical-align:middle}.table-title-primary{color:var(--Primary-700, #009BF3);font-size:14px;font-weight:500;text-decoration-line:underline;text-transform:capitalize}table th,table td{height:44px!important;padding:18px 15px!important;align-items:center;gap:12px;align-self:stretch}.Analysiscard,.storescard{margin-top:11%;margin-bottom:20%}.form-control:disabled{background-color:#f9fafb!important}.nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.table-container{position:relative;max-height:400px;overflow-y:auto}.fixed-header th{position:sticky;top:0;background-color:#fff;z-index:2}.table.bottom-border thead th{border-bottom:2px solid #dee2e6}.table.bottom-border tbody tr td{border-bottom:1px solid #dee2e6}.table.bottom-border th,.table.bottom-border td{padding:8px 16px;white-space:nowrap}.table-responsive::-webkit-scrollbar{width:6px}.table-responsive::-webkit-scrollbar-thumb{background-color:#ddd;border-radius:4px}.activePlanBtn{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Gray-700, #344054);font-size:14px!important;font-weight:500!important;line-height:20px}.inactivePlanBtn{color:var(--Gray-500, #667085)!important;font-size:14px;font-weight:500!important;line-height:20px}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }] });
|
|
152
152
|
}
|
|
153
153
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: TopPerformingComponent, decorators: [{
|
|
154
154
|
type: Component,
|
|
155
|
-
args: [{ selector: 'lib-top-performing', template: "<div class=\"row \">\r\n <div class=\"d-flex justify-content-between p-3\">\r\n <div class=\"col-lg-6 card\">\r\n <div class=\"h-100\">\r\n <div class=\"card-header border-0 p-4\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"headtext\">Top Performing Zones <span\r\n ngbTooltip=\"Top performing zones across the stores selected\" placement=\"top\"\r\n triggers=\"mouseenter:mouseleave\" tooltipClass=\"custom-tooltip\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3512_32868)\">\r\n <path\r\n d=\"M8.00016 10.6666V7.99998M8.00016 5.33331H8.00683M14.6668 7.99998C14.6668 11.6819 11.6821 14.6666 8.00016 14.6666C4.31826 14.6666 1.3335 11.6819 1.3335 7.99998C1.3335 4.31808 4.31826 1.33331 8.00016 1.33331C11.6821 1.33331 14.6668 4.31808 14.6668 7.99998Z\"\r\n stroke=\"#98A2B3\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3512_32868\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></span>\r\n <span class=\"subratetext mt-2\">Based on Concentration Rate</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <!--begin::Nav group-->\r\n <div class=\"nav-group nav-group-outline border-1 btn-group p-0\">\r\n <button class=\"btn btn-outline\" \r\n [ngClass]=\"{\r\n 'activePlanBtn': type === 'top-zones',\r\n 'inactivePlanBtn': type !== 'top-zones',\r\n 'disabled': disableTopZones\r\n }\" \r\n (click)=\"selectPlanzone('top-zones')\" \r\n [attr.disabled]=\"disableTopZones ? true : null\">\r\n Top 5 Zones\r\n </button>\r\n \r\n <button class=\"btn btn-outline px-6 py-3\" \r\n [ngClass]=\"{\r\n 'activePlanBtn': type === 'bottom-zones',\r\n 'inactivePlanBtn': type !== 'bottom-zones',\r\n 'disabled': disableBottomZones\r\n }\" \r\n (click)=\"selectPlanzone('bottom-zones')\" \r\n [attr.disabled]=\"disableBottomZones ? true : null\">\r\n Bottom 5 Zones\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"table-container mx-4\">\r\n <table *ngIf=\"!analysisLoading && !analysisNoData\" class=\"table bottom-border\">\r\n <thead class=\"fixed-header\">\r\n <tr>\r\n <th>Zone Name</th>\r\n <th>Footfall</th>\r\n <th>Bounced</th>\r\n <th>Engagers</th>\r\n <th>Impressions</th>\r\n \r\n </tr>\r\n </thead>\r\n <tbody class=\"table-responsive topstores\">\r\n <tr *ngFor=\"let zone of topPerformingZones\">\r\n <td>\r\n <div class=\"table-title\">{{ zone?.zoneName ? zone.zoneName : '--' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{ zone?.footfallCount ? zone.footfallCount : '--' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{ zone?.bouncedCount ? zone.bouncedCount : '--' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{ zone?.engagersCount ? zone.engagersCount : '--' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{ zone?.impressionRate ? zone.impressionRate + '%' : '--' }}</div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <ng-container *ngIf=\"analysisLoading\">\r\n <div class=\"row loader Analysiscard d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"analysisNoData && !analysisLoading\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 Analysiscard\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Top Performing Analysis</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n \r\n </div>\r\n \r\n </div>\r\n <div class=\"col-lg-6 card mx-2\">\r\n <div class=\"h-100\">\r\n <div class=\"card-header border-0 p-4\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"headtext\">Top Performing Stores <span\r\n ngbTooltip=\"Top performing stores and their concentration % along with avg dwell time\" placement=\"top\"\r\n triggers=\"mouseenter:mouseleave\" tooltipClass=\"custom-tooltip\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3512_32868)\">\r\n <path\r\n d=\"M8.00016 10.6666V7.99998M8.00016 5.33331H8.00683M14.6668 7.99998C14.6668 11.6819 11.6821 14.6666 8.00016 14.6666C4.31826 14.6666 1.3335 11.6819 1.3335 7.99998C1.3335 4.31808 4.31826 1.33331 8.00016 1.33331C11.6821 1.33331 14.6668 4.31808 14.6668 7.99998Z\"\r\n stroke=\"#98A2B3\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3512_32868\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></span>\r\n <span class=\"subratetext mt-2\">Based on Concentration Rate</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <!--begin::Nav group-->\r\n <div class=\"nav-group nav-group-outline border-1 btn-group p-0\">\r\n <button class=\"btn btn-outline\" \r\n [ngClass]=\"{\r\n 'activePlanBtn': storetype === 'top-Stores',\r\n 'inactivePlanBtn': storetype !== 'top-Stores',\r\n 'disabled': disableTopStores\r\n }\" \r\n (click)=\"selectPlanStore('top-Stores')\" \r\n [attr.disabled]=\"disableTopStores ? true : null\">\r\n Top 5 Stores\r\n </button>\r\n \r\n <button class=\"btn btn-outline px-6 py-3\" \r\n [ngClass]=\"{\r\n 'activePlanBtn': storetype === 'bottom-Stores',\r\n 'inactivePlanBtn': storetype !== 'bottom-Stores',\r\n 'disabled': disableBottomStores\r\n }\" \r\n (click)=\"selectPlanStore('bottom-Stores')\" \r\n [attr.disabled]=\"disableBottomStores ? true : null\">\r\n Bottom 5 Stores\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"table-container mx-4\">\r\n <table *ngIf=\"!topperformingstoresLoading && !topperformingstoresNodata\" class=\"table bottom-border\">\r\n <thead class=\"fixed-header\">\r\n <tr>\r\n <th>Store Info</th>\r\n <th>Zone Name</th>\r\n <th>Zone Footfall</th>\r\n <th>Concentration</th>\r\n <th>Avg Dwell Time</th>\r\n \r\n \r\n </tr>\r\n </thead>\r\n <tbody class=\"table-responsive topstores\">\r\n <tr *ngFor=\"let store of topPerformingStores\">\r\n <td>\r\n <div class=\"table-title-primary invoice mb-2\">{{ store.storeName || '--' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{ store.zoneName || '--' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{ store.zoneFootfallCount || '--' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{ store.impressionRate || '--' }}%</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{ store.avgDwellTime || '--' }} mins</div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <ng-container *ngIf=\"topperformingstoresLoading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"topperformingstoresNodata && !topperformingstoresLoading\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column mt-18\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Top Performing Stores</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>", styles: [".subtext{color:var(--Gray-800, #1D2939);font-size:14px;font-weight:500;line-height:20px}.headcount{color:var(--Gray-900, #101828);font-size:20px;font-weight:600;line-height:30px}.headtext{color:var(--Gray-700, #344054);font-size:18px;font-weight:600;line-height:28px}.subratetext{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;line-height:18px}#zonechartdiv{width:100%;height:365px;margin-bottom:6%}.invoicesearch{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:14px!important;font-style:normal;font-weight:500!important;line-height:20px}.invoicesearch::placeholder{color:var(--Gray-700, #344054)!important}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}tr{vertical-align:middle}.table-title-primary{color:var(--Primary-700, #009BF3);font-size:14px;font-weight:500;line-height:20px;text-decoration-line:underline;text-transform:capitalize}table th,table td{height:44px!important;padding:18px 15px!important;align-items:center;gap:12px;align-self:stretch}.Analysiscard,.storescard{margin-top:11%;margin-bottom:20%}.form-control:disabled{background-color:#f9fafb!important}.nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.table-container{position:relative;max-height:400px;overflow-y:auto}.fixed-header th{position:sticky;top:0;background-color:#fff;z-index:2}.table.bottom-border thead th{border-bottom:2px solid #dee2e6}.table.bottom-border tbody tr td{border-bottom:1px solid #dee2e6}.table.bottom-border th,.table.bottom-border td{padding:8px 16px;white-space:nowrap}.table-responsive::-webkit-scrollbar{width:6px}.table-responsive::-webkit-scrollbar-thumb{background-color:#ddd;border-radius:4px}.activePlanBtn{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Gray-700, #344054);font-size:14px!important;font-weight:500!important;line-height:20px}.inactivePlanBtn{color:var(--Gray-500, #667085)!important;font-size:14px;font-weight:500!important;line-height:20px}\n"] }]
|
|
155
|
+
args: [{ selector: 'lib-top-performing', template: "<div class=\"row \">\r\n <div class=\"d-flex justify-content-between p-3\">\r\n <div class=\"col-lg-6 card\">\r\n <div class=\"h-100\">\r\n <div class=\"card-header border-0 p-4\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"headtext\">Top Performing Zones <span\r\n ngbTooltip=\"Top performing zones across the stores selected\" placement=\"top\"\r\n triggers=\"mouseenter:mouseleave\" tooltipClass=\"custom-tooltip\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3512_32868)\">\r\n <path\r\n d=\"M8.00016 10.6666V7.99998M8.00016 5.33331H8.00683M14.6668 7.99998C14.6668 11.6819 11.6821 14.6666 8.00016 14.6666C4.31826 14.6666 1.3335 11.6819 1.3335 7.99998C1.3335 4.31808 4.31826 1.33331 8.00016 1.33331C11.6821 1.33331 14.6668 4.31808 14.6668 7.99998Z\"\r\n stroke=\"#98A2B3\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3512_32868\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></span>\r\n <span class=\"subratetext mt-2\">Based on Concentration Rate</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <!--begin::Nav group-->\r\n <div class=\"nav-group nav-group-outline border-1 btn-group p-0\">\r\n <button class=\"btn btn-outline\" \r\n [ngClass]=\"{\r\n 'activePlanBtn': type === 'top-zones',\r\n 'inactivePlanBtn': type !== 'top-zones',\r\n 'disabled': disableTopZones\r\n }\" \r\n (click)=\"selectPlanzone('top-zones')\" \r\n [attr.disabled]=\"disableTopZones ? true : null\">\r\n Top 5 Zones\r\n </button>\r\n \r\n <button class=\"btn btn-outline px-6 py-3\" \r\n [ngClass]=\"{\r\n 'activePlanBtn': type === 'bottom-zones',\r\n 'inactivePlanBtn': type !== 'bottom-zones',\r\n 'disabled': disableBottomZones\r\n }\" \r\n (click)=\"selectPlanzone('bottom-zones')\" \r\n [attr.disabled]=\"disableBottomZones ? true : null\">\r\n Bottom 5 Zones\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"table-container mx-4\">\r\n <table *ngIf=\"!analysisLoading && !analysisNoData\" class=\"table bottom-border\">\r\n <thead class=\"fixed-header\">\r\n <tr>\r\n <th>Zone Name</th>\r\n <th>Footfall</th>\r\n <th>Bounced</th>\r\n <th>Engagers</th>\r\n <th>Impressions</th>\r\n \r\n </tr>\r\n </thead>\r\n <tbody class=\"table-responsive topstores\">\r\n <tr *ngFor=\"let zone of topPerformingZones\">\r\n <td>\r\n <div class=\"table-title\">{{ zone?.zoneName ? zone.zoneName : '--' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{ zone?.footfallCount ? zone.footfallCount : '--' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{ zone?.bouncedCount ? zone.bouncedCount : '--' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{ zone?.engagersCount ? zone.engagersCount : '--' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{ zone?.impressionRate ? zone.impressionRate + '%' : '--' }}</div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <ng-container *ngIf=\"analysisLoading\">\r\n <div class=\"row loader Analysiscard d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"analysisNoData && !analysisLoading\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 Analysiscard\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Top Performing Analysis</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n \r\n </div>\r\n \r\n </div>\r\n <div class=\"col-lg-6 card mx-2\">\r\n <div class=\"h-100\">\r\n <div class=\"card-header border-0 p-4\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"headtext\">Top Performing Stores <span\r\n ngbTooltip=\"Top performing stores and their concentration % along with avg dwell time\" placement=\"top\"\r\n triggers=\"mouseenter:mouseleave\" tooltipClass=\"custom-tooltip\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3512_32868)\">\r\n <path\r\n d=\"M8.00016 10.6666V7.99998M8.00016 5.33331H8.00683M14.6668 7.99998C14.6668 11.6819 11.6821 14.6666 8.00016 14.6666C4.31826 14.6666 1.3335 11.6819 1.3335 7.99998C1.3335 4.31808 4.31826 1.33331 8.00016 1.33331C11.6821 1.33331 14.6668 4.31808 14.6668 7.99998Z\"\r\n stroke=\"#98A2B3\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3512_32868\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></span>\r\n <span class=\"subratetext mt-2\">Based on Concentration Rate</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <!--begin::Nav group-->\r\n <div class=\"nav-group nav-group-outline border-1 btn-group p-0\">\r\n <button class=\"btn btn-outline\" \r\n [ngClass]=\"{\r\n 'activePlanBtn': storetype === 'top-Stores',\r\n 'inactivePlanBtn': storetype !== 'top-Stores',\r\n 'disabled': disableTopStores\r\n }\" \r\n (click)=\"selectPlanStore('top-Stores')\" \r\n [attr.disabled]=\"disableTopStores ? true : null\">\r\n Top 5 Stores\r\n </button>\r\n \r\n <button class=\"btn btn-outline px-6 py-3\" \r\n [ngClass]=\"{\r\n 'activePlanBtn': storetype === 'bottom-Stores',\r\n 'inactivePlanBtn': storetype !== 'bottom-Stores',\r\n 'disabled': disableBottomStores\r\n }\" \r\n (click)=\"selectPlanStore('bottom-Stores')\" \r\n [attr.disabled]=\"disableBottomStores ? true : null\">\r\n Bottom 5 Stores\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"table-container mx-4\">\r\n <table *ngIf=\"!topperformingstoresLoading && !topperformingstoresNodata\" class=\"table bottom-border\">\r\n <thead class=\"fixed-header\">\r\n <tr>\r\n <th>Store Info</th>\r\n <th>Zone Name</th>\r\n <th>Zone Footfall</th>\r\n <th>Concentration</th>\r\n <th>Avg Dwell Time</th>\r\n \r\n \r\n </tr>\r\n </thead>\r\n <tbody class=\"table-responsive topstores\">\r\n <tr *ngFor=\"let store of topPerformingStores\">\r\n <td>\r\n <div class=\"table-title-primary invoice\">{{ store.storeName || '--' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{ store.zoneName || '--' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{ store.zoneFootfallCount || '--' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{ store.impressionRate || '--' }}%</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{ store.avgDwellTime || '--' }} mins</div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <ng-container *ngIf=\"topperformingstoresLoading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"topperformingstoresNodata && !topperformingstoresLoading\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column mt-18\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Top Performing Stores</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>", styles: [".subtext{color:var(--Gray-800, #1D2939);font-size:14px;font-weight:500;line-height:20px}.headcount{color:var(--Gray-900, #101828);font-size:20px;font-weight:600;line-height:30px}.headtext{color:var(--Gray-700, #344054);font-size:18px;font-weight:600;line-height:28px}.subratetext{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;line-height:18px}#zonechartdiv{width:100%;height:365px;margin-bottom:6%}.invoicesearch{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:14px!important;font-style:normal;font-weight:500!important;line-height:20px}.invoicesearch::placeholder{color:var(--Gray-700, #344054)!important}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}tr{vertical-align:middle}.table-title-primary{color:var(--Primary-700, #009BF3);font-size:14px;font-weight:500;text-decoration-line:underline;text-transform:capitalize}table th,table td{height:44px!important;padding:18px 15px!important;align-items:center;gap:12px;align-self:stretch}.Analysiscard,.storescard{margin-top:11%;margin-bottom:20%}.form-control:disabled{background-color:#f9fafb!important}.nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.table-container{position:relative;max-height:400px;overflow-y:auto}.fixed-header th{position:sticky;top:0;background-color:#fff;z-index:2}.table.bottom-border thead th{border-bottom:2px solid #dee2e6}.table.bottom-border tbody tr td{border-bottom:1px solid #dee2e6}.table.bottom-border th,.table.bottom-border td{padding:8px 16px;white-space:nowrap}.table-responsive::-webkit-scrollbar{width:6px}.table-responsive::-webkit-scrollbar-thumb{background-color:#ddd;border-radius:4px}.activePlanBtn{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Gray-700, #344054);font-size:14px!important;font-weight:500!important;line-height:20px}.inactivePlanBtn{color:var(--Gray-500, #667085)!important;font-size:14px;font-weight:500!important;line-height:20px}\n"] }]
|
|
156
156
|
}], ctorParameters: () => [{ type: i1.NgbModal }, { type: i2.FormBuilder }, { type: i3.Zonev2Service }, { type: i0.ChangeDetectorRef }, { type: i4.ToastService }, { type: i5.GlobalStateService }, { type: i0.ElementRef }] });
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wLXBlcmZvcm1pbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS16b25lL3NyYy9saWIvY29tcG9uZW50cy96b25lLXYyL3RvcC1wZXJmb3JtaW5nL3RvcC1wZXJmb3JtaW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2Utem9uZS9zcmMvbGliL2NvbXBvbmVudHMvem9uZS12Mi90b3AtcGVyZm9ybWluZy90b3AtcGVyZm9ybWluZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBc0IsTUFBTSxlQUFlLENBQUM7QUFTakYsT0FBTyxFQUFjLE9BQU8sRUFBRSxZQUFZLEVBQXdCLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7QUFTMUYsTUFBTSxPQUFPLHNCQUFzQjtJQTJCZDtJQUFnQztJQUF5QjtJQUFzQztJQUEyQztJQUE0QjtJQUErQjtJQTFCeE4sbUJBQW1CLEdBQVUsRUFBRSxDQUFDO0lBQ2hDLGtCQUFrQixHQUFVLEVBQUUsQ0FBQztJQUMvQixXQUFXLEdBQVcsRUFBRSxDQUFDO0lBQ3pCLGNBQWMsR0FBWSxLQUFLLENBQUM7SUFDaEMsZUFBZSxHQUFZLElBQUksQ0FBQztJQUNoQyxjQUFjLEdBQVksS0FBSyxDQUFDO0lBQ2hDLDBCQUEwQixHQUFZLElBQUksQ0FBQztJQUMzQyx5QkFBeUIsR0FBWSxLQUFLLENBQUM7SUFDM0MsVUFBVSxDQUFNO0lBQ2hCLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFDMUIsSUFBSSxHQUFXLFdBQVcsQ0FBQztJQUMzQixTQUFTLEdBQVcsWUFBWSxDQUFDO0lBRWhDLHdCQUF3QjtJQUN6QixlQUFlLEdBQVksS0FBSyxDQUFDLENBQUMscURBQXFEO0lBQ3ZGLGtCQUFrQixHQUFZ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bEJuQyw0a1lBaVBVOzsyRkQvTkcsc0JBQXNCO2tCQU5sQyxTQUFTOytCQUNFLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBhbTUgZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czVcIjtcclxuaW1wb3J0ICogYXMgYW01eHkgZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czUveHlcIjtcclxuaW1wb3J0ICogYXMgYW01dGhlbWVzX0FuaW1hdGVkIGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM1L3RoZW1lcy9BbmltYXRlZFwiO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBab25ldjJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvem9uZXYyLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItdG9wLXBlcmZvcm1pbmcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90b3AtcGVyZm9ybWluZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3RvcC1wZXJmb3JtaW5nLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFRvcFBlcmZvcm1pbmdDb21wb25lbnQge1xyXG4gIHRvcFBlcmZvcm1pbmdTdG9yZXM6IGFueVtdID0gW107IFxyXG4gIHRvcFBlcmZvcm1pbmdab25lczogYW55W10gPSBbXTsgXHJcbiAgc2VhcmNoSW5wdXQ6IHN0cmluZyA9ICcnO1xyXG4gIHNlYXJjaERpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYW5hbHlzaXNMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBhbmFseXNpc05vRGF0YTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRvcHBlcmZvcm1pbmdzdG9yZXNMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICB0b3BwZXJmb3JtaW5nc3RvcmVzTm9kYXRhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaGVhZGVyRGF0YTogYW55O1xyXG4gIGlzRXhwb3J0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgdHlwZTogc3RyaW5nID0gJ3RvcC16b25lcyc7XHJcbiAgc3RvcmV0eXBlOiBzdHJpbmcgPSAndG9wLVN0b3Jlcyc7XHJcblxyXG4gICAvLyBEZWZhdWx0IHNlbGVjdGVkIHR5cGVcclxuICBkaXNhYmxlVG9wWm9uZXM6IGJvb2xlYW4gPSBmYWxzZTsgLy8gQ29udHJvbCB3aGV0aGVyIHRoZSBUb3AgNSBab25lcyBidXR0b24gaXMgZGlzYWJsZWRcclxuICBkaXNhYmxlQm90dG9tWm9uZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkaXNhYmxlVG9wU3RvcmVzOiBib29sZWFuID0gZmFsc2U7IC8vIENvbnRyb2wgd2hldGhlciB0aGUgVG9wIDUgWm9uZXMgYnV0dG9uIGlzIGRpc2FibGVkXHJcbiAgZGlzYWJsZUJvdHRvbVN0b3JlczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHJcbiAgLy8gaW52b2ljZU5vRGF0YTogYm9vbGVhbiA9IHRydWU7XHJcbiAgLy8gaW52b2ljZUxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvLyBpc0V4cG9ydDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8vIGNsaWVudElkOiBzdHJpbmcgPSAnJztcclxuICAvLyB1c2VyVHlwZTphbnkgPSAnJztcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCwgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgWm9uZXYyU2VydmljZTogWm9uZXYyU2VydmljZSwgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgdG9hc3Q6IFRvYXN0U2VydmljZSwgcHVibGljIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UscHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLCkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlXHJcbiAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCksIGRlYm91bmNlVGltZSgzMDApKVxyXG4gICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5oZWFkZXJEYXRhID0gZGF0YTtcclxuICAgICAgICB0aGlzLmdldFRvcFBlcmZvcm1pbmdab25lcygndG9wJyk7XHJcbiAgICAgICAgdGhpcy5nZXRUb3BQZXJmb3JtaW5nU3RvcmVzKCd0b3AnKVxyXG59KVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIGdldFRvcFBlcmZvcm1pbmdab25lcyhzb3J0VHlwZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmFuYWx5c2lzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmFuYWx5c2lzTm9EYXRhID0gdHJ1ZTtcclxuICAgIGNvbnN0IHJlcXVlc3REYXRhID0ge1xyXG4gICAgICAvLyBmcm9tRGF0ZTogdGhpcy5oZWFkZXJEYXRhLmRhdGUuc3RhcnREYXRlLFxyXG4gICAgICAvLyB0b0RhdGU6IHRoaXMuaGVhZGVyRGF0YS5kYXRlLmVuZERhdGUsXHJcbiAgICAgIC8vIHN0b3JlSWQ6IHRoaXMuaGVhZGVyRGF0YS5zdG9yZXMuZmlsdGVyKChzdG9yZTphbnkpID0+IHN0b3JlLmNoZWNrZWQpLm1hcCgoc3RvcmU6YW55KSA9PiBzdG9yZS5zdG9yZUlkKSxcclxuICAgICAgLy8gLy8gc3RvcmVJZDogW1wiMTEtMjUzXCIsIFwiMTEtNTExXCIsXCIxMS0xMTc2XCJdLFxyXG4gICAgICAvLyBjbGllbnRJZDp0aGlzLmhlYWRlckRhdGEuY2xpZW50LFxyXG4gICAgICBmcm9tRGF0ZTogJzIwMjQtMDctMDEnLFxyXG4gICAgICB0b0RhdGU6ICcyMDI0LTA3LTIyJyxcclxuICAgICAgc3RvcmVJZDogWycxMSddLFxyXG4gICAgICBzb3J0VHlwZTogc29ydFR5cGUsIC8vIHRvcCBvciBib3R0b21cclxuICAgICAgc29ydDogJ2Zvb3RmYWxsJyxcclxuICAgICAgc29ydEJ5OiBzb3J0VHlwZSA9PT0gJ3RvcCcgPyAxIDogLTEgXHJcbiAgICB9O1xyXG4gIFxyXG4gICAgdGhpcy5ab25ldjJTZXJ2aWNlLmdldFRvcFBlcmZvcm1pbmdab25lcyhyZXF1ZXN0RGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmFuYWx5c2lzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICBpZiAocmVzcG9uc2U/LmNvZGUgPT09IDIwMCAmJiByZXNwb25zZT8uc3RhdHVzID09PSBcInN1Y2Nlc3NcIikge1xyXG4gICAgICAgIHRoaXMudG9wUGVyZm9ybWluZ1pvbmVzID0gcmVzcG9uc2UuZGF0YS50b3BQZXJmb3JtaW5nWm9uZXM7XHJcbiAgICAgICAgdGhpcy5hbmFseXNpc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuYW5hbHlzaXNOb0RhdGEgPSBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmFuYWx5c2lzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5hbmFseXNpc05vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnRvcFBlcmZvcm1pbmdab25lcyA9IFtdXHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBlcnJvciA9PiB7XHJcbiAgICAgIHRoaXMudG9wUGVyZm9ybWluZ1pvbmVzID0gW11cclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKClcclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXRUb3BQZXJmb3JtaW5nU3RvcmVzKHNvcnRUeXBlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMudG9wcGVyZm9ybWluZ3N0b3Jlc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy50b3BwZXJmb3JtaW5nc3RvcmVzTm9kYXRhID0gdHJ1ZTtcclxuICAgIGNvbnN0IHJlcXVlc3REYXRhID0ge1xyXG4gICAgICAvLyBmcm9tRGF0ZTogdGhpcy5oZWFkZXJEYXRhLmRhdGUuc3RhcnREYXRlLFxyXG4gICAgICAvLyB0b0RhdGU6IHRoaXMuaGVhZGVyRGF0YS5kYXRlLmVuZERhdGUsXHJcbiAgICAgIC8vIHN0b3JlSWQ6IHRoaXMuaGVhZGVyRGF0YS5zdG9yZXMuZmlsdGVyKChzdG9yZTphbnkpID0+IHN0b3JlLmNoZWNrZWQpLm1hcCgoc3RvcmU6YW55KSA9PiBzdG9yZS5zdG9yZUlkKSxcclxuICAgICAgLy8gLy8gc3RvcmVJZDogW1wiMTEtMjUzXCIsIFwiMTEtNTExXCIsXCIxMS0xMTc2XCJdLFxyXG4gICAgICAvLyBjbGllbnRJZDp0aGlzLmhlYWRlckRhdGEuY2xpZW50LFxyXG4gICAgICBmcm9tRGF0ZTogJzIwMjQtMDctMDEnLFxyXG4gICAgICB0b0RhdGU6ICcyMDI0LTA3LTIyJyxcclxuICAgICAgc3RvcmVJZDogWycxMSddLFxyXG4gICAgICBzb3J0VHlwZTogc29ydFR5cGUsIC8vIHRvcCBvciBib3R0b21cclxuICAgICAgc29ydDogJ2Zvb3RmYWxsJyxcclxuICAgICAgc29ydEJ5OiBzb3J0VHlwZSA9PT0gJ3RvcCcgPyAxIDogLTEgXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuWm9uZXYyU2VydmljZS5nZXRUb3BQZXJmb3JtaW5nU3RvcmVzKHJlcXVlc3REYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMudG9wcGVyZm9ybWluZ3N0b3Jlc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgaWYgKHJlc3BvbnNlPy5jb2RlID09PSAyMDAgJiYgcmVzcG9uc2U/LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpIHtcclxuICAgICAgICB0aGlzLnRvcFBlcmZvcm1pbmdTdG9yZXMgPSByZXNwb25zZS5kYXRhLnRvcFBlcmZvcm1pbmdTdG9yZXM7XHJcbiAgICAgICAgdGhpcy50b3BwZXJmb3JtaW5nc3RvcmVzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudG9wcGVyZm9ybWluZ3N0b3Jlc05vZGF0YSA9IGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudG9wcGVyZm9ybWluZ3N0b3Jlc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRvcHBlcmZvcm1pbmdzdG9yZXNOb2RhdGEgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudG9wUGVyZm9ybWluZ1N0b3JlcyA9IFtdXHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIGVycm9yID0+IHtcclxuICAgICAgdGhpcy50b3BQZXJmb3JtaW5nU3RvcmVzID0gW11cclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKVxyXG4gICAgfVxyXG4gICk7XHJcbiAgfVxyXG5cclxuICAgIFxyXG4gIHNlbGVjdFBsYW56b25lKHR5cGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy50eXBlID0gdHlwZTtcclxuICAgIGlmICh0eXBlID09PSAndG9wLXpvbmVzJykge1xyXG4gICAgICB0aGlzLmdldFRvcFBlcmZvcm1pbmdab25lcygndG9wJyk7IC8vIEZldGNoIHRvcCB6b25lc1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnYm90dG9tLXpvbmVzJykge1xyXG4gICAgICB0aGlzLmdldFRvcFBlcmZvcm1pbmdab25lcygnYm90dG9tJyk7IC8vIEZldGNoIGJvdHRvbSB6b25lc1xyXG4gICAgfVxyXG4gIH1cclxuICBzZWxlY3RQbGFuU3RvcmUoc3RvcmV0eXBlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKFwic3RvcmV0eXBlXCIsIHN0b3JldHlwZSk7XHJcbiAgICBcclxuICAgIHRoaXMuc3RvcmV0eXBlID0gc3RvcmV0eXBlO1xyXG4gICAgaWYgKHN0b3JldHlwZSA9PT0gJ3RvcC1TdG9yZXMnKSB7XHJcbiAgICAgIHRoaXMuZ2V0VG9wUGVyZm9ybWluZ1N0b3JlcygndG9wJyk7IC8vIEZldGNoIHRvcCB6b25lc1xyXG4gICAgfSBlbHNlIGlmIChzdG9yZXR5cGUgPT09ICdib3R0b20tU3RvcmVzJykge1xyXG4gICAgICB0aGlzLmdldFRvcFBlcmZvcm1pbmdTdG9yZXMoJ2JvdHRvbScpOyAvLyBGZXRjaCBib3R0b20gem9uZXNcclxuICAgIH1cclxuICB9XHJcblxyXG4gXHJcblxyXG4gIC8vIHNlbGVjdFBsYW4ocGxhblR5cGU6IHN0cmluZyk6IHZvaWQge1xyXG4gIC8vICAgaWYgKHBsYW5UeXBlID09PSAndG9wLXpvbmVzJykge1xyXG4gIC8vICAgICB0aGlzLnR5cGUgPSAndG9wLXpvbmVzJzsgLy8gU2VsZWN0IFRvcCA1IFpvbmVzXHJcbiAgLy8gICB9IGVsc2UgaWYgKHBsYW5UeXBlID09PSAnYm90dG9tLXpvbmVzJykge1xyXG4gIC8vICAgICB0aGlzLnR5cGUgPSAnYm90dG9tLXpvbmVzJzsgLy8gU2VsZWN0IEJvdHRvbSA1IFpvbmVzXHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICBcclxufSIsIjxkaXYgY2xhc3M9XCJyb3cgXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHAtM1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTYgY2FyZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJoLTEwMFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHAtNFwiPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkdGV4dFwiPlRvcCBQZXJmb3JtaW5nIFpvbmVzIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJUb3AgcGVyZm9ybWluZyB6b25lcyBhY3Jvc3MgdGhlIHN0b3JlcyBzZWxlY3RlZFwiIHBsYWNlbWVudD1cInRvcFwiXHJcbiAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwibW91c2VlbnRlcjptb3VzZWxlYXZlXCIgdG9vbHRpcENsYXNzPVwiY3VzdG9tLXRvb2x0aXBcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMzUxMl8zMjg2OClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAxMC42NjY2VjcuOTk5OThNOC4wMDAxNiA1LjMzMzMxSDguMDA2ODNNMTQuNjY2OCA3Ljk5OTk4QzE0LjY2NjggMTEuNjgxOSAxMS42ODIxIDE0LjY2NjYgOC4wMDAxNiAxNC42NjY2QzQuMzE4MjYgMTQuNjY2NiAxLjMzMzUgMTEuNjgxOSAxLjMzMzUgNy45OTk5OEMxLjMzMzUgNC4zMTgwOCA0LjMxODI2IDEuMzMzMzEgOC4wMDAxNiAxLjMzMzMxQzExLjY4MjEgMS4zMzMzMSAxNC42NjY4IDQuMzE4MDggMTQuNjY2OCA3Ljk5OTk4WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM5OEEyQjNcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzM1MTJfMzI4NjhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VicmF0ZXRleHQgbXQtMlwiPkJhc2VkIG9uIENvbmNlbnRyYXRpb24gUmF0ZTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlIG15LTFcIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLWJlZ2luOjpOYXYgZ3JvdXAtLT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1ncm91cCBuYXYtZ3JvdXAtb3V0bGluZSBib3JkZXItMSBidG4tZ3JvdXAgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnYWN0aXZlUGxhbkJ0bic6IHR5cGUgPT09ICd0b3Atem9uZXMnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnaW5hY3RpdmVQbGFuQnRuJzogdHlwZSAhPT0gJ3RvcC16b25lcycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdkaXNhYmxlZCc6IGRpc2FibGVUb3Bab25lc1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW56b25lKCd0b3Atem9uZXMnKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZVRvcFpvbmVzID8gdHJ1ZSA6IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIFRvcCA1IFpvbmVzXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHB4LTYgcHktM1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnYWN0aXZlUGxhbkJ0bic6IHR5cGUgPT09ICdib3R0b20tem9uZXMnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnaW5hY3RpdmVQbGFuQnRuJzogdHlwZSAhPT0gJ2JvdHRvbS16b25lcycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdkaXNhYmxlZCc6IGRpc2FibGVCb3R0b21ab25lc1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW56b25lKCdib3R0b20tem9uZXMnKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZUJvdHRvbVpvbmVzID8gdHJ1ZSA6IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIEJvdHRvbSA1IFpvbmVzXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29udGFpbmVyIG14LTRcIj5cclxuICAgICAgICAgICAgPHRhYmxlICpuZ0lmPVwiIWFuYWx5c2lzTG9hZGluZyAmJiAhYW5hbHlzaXNOb0RhdGFcIiBjbGFzcz1cInRhYmxlIGJvdHRvbS1ib3JkZXJcIj5cclxuICAgICAgICAgICAgICA8dGhlYWQgY2xhc3M9XCJmaXhlZC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgPHRoPlpvbmUgTmFtZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aD5Gb290ZmFsbDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aD5Cb3VuY2VkPC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoPkVuZ2FnZXJzPC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoPkltcHJlc3Npb25zPC90aD5cclxuICBcclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlIHRvcHN0b3Jlc1wiPlxyXG4gICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCB6b25lIG9mIHRvcFBlcmZvcm1pbmdab25lc1wiPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3sgem9uZT8uem9uZU5hbWUgPyB6b25lLnpvbmVOYW1lIDogJy0tJyB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3sgem9uZT8uZm9vdGZhbGxDb3VudCA/IHpvbmUuZm9vdGZhbGxDb3VudCA6ICctLScgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPnt7IHpvbmU/LmJvdW5jZWRDb3VudCA/IHpvbmUuYm91bmNlZENvdW50IDogJy0tJyB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3sgem9uZT8uZW5nYWdlcnNDb3VudCA/IHpvbmUuZW5nYWdlcnNDb3VudCA6ICctLScgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPnt7IHpvbmU/LmltcHJlc3Npb25SYXRlID8gem9uZS5pbXByZXNzaW9uUmF0ZSArICclJyA6ICctLScgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFuYWx5c2lzTG9hZGluZ1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciBBbmFseXNpc2NhcmQgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhbmFseXNpc05vRGF0YSAmJiAhYW5hbHlzaXNMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIEFuYWx5c2lzY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmNcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhbWFpbnRleHQgbXQtM1wiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YXN1YnRleHRcIj5UaGVyZSBpcyBubyByZXN1bHQgZm9yIFRvcCBQZXJmb3JtaW5nIEFuYWx5c2lzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICBcclxuICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNiBjYXJkIG14LTJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDBcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwLTRcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZHRleHRcIj5Ub3AgUGVyZm9ybWluZyBTdG9yZXMgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cIlRvcCBwZXJmb3JtaW5nIHN0b3JlcyBhbmQgdGhlaXIgY29uY2VudHJhdGlvbiAlIGFsb25nIHdpdGggYXZnIGR3ZWxsIHRpbWVcIiBwbGFjZW1lbnQ9XCJ0b3BcIlxyXG4gICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cIm1vdXNlZW50ZXI6bW91c2VsZWF2ZVwiIHRvb2x0aXBDbGFzcz1cImN1c3RvbS10b29sdGlwXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzM1MTJfMzI4NjgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMTAuNjY2NlY3Ljk5OTk4TTguMDAwMTYgNS4zMzMzMUg4LjAwNjgzTTE0LjY2NjggNy45OTk5OEMxNC42NjY4IDExLjY4MTkgMTEuNjgyMSAxNC42NjY2IDguMDAwMTYgMTQuNjY2NkM0LjMxODI2IDE0LjY2NjYgMS4zMzM1IDExLjY4MTkgMS4zMzM1IDcuOTk5OThDMS4zMzM1IDQuMzE4MDggNC4zMTgyNiAxLjMzMzMxIDguMDAwMTYgMS4zMzMzMUMxMS42ODIxIDEuMzMzMzEgMTQuNjY2OCA0LjMxODA4IDE0LjY2NjggNy45OTk5OFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjOThBMkIzXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zNTEyXzMyODY4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1YnJhdGV0ZXh0IG10LTJcIj5CYXNlZCBvbiBDb25jZW50cmF0aW9uIFJhdGU8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZSBteS0xXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS1iZWdpbjo6TmF2IGdyb3VwLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYXYtZ3JvdXAgbmF2LWdyb3VwLW91dGxpbmUgYm9yZGVyLTEgYnRuLWdyb3VwIHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiBcclxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGl2ZVBsYW5CdG4nOiBzdG9yZXR5cGUgPT09ICd0b3AtU3RvcmVzJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ2luYWN0aXZlUGxhbkJ0bic6IHN0b3JldHlwZSAhPT0gJ3RvcC1TdG9yZXMnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnZGlzYWJsZWQnOiBkaXNhYmxlVG9wU3RvcmVzXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UGxhblN0b3JlKCd0b3AtU3RvcmVzJylcIiBcclxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVUb3BTdG9yZXMgPyB0cnVlIDogbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgVG9wIDUgU3RvcmVzXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHB4LTYgcHktM1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnYWN0aXZlUGxhbkJ0bic6IHN0b3JldHlwZSA9PT0gJ2JvdHRvbS1TdG9yZXMnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnaW5hY3RpdmVQbGFuQnRuJzogc3RvcmV0eXBlICE9PSAnYm90dG9tLVN0b3JlcycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdkaXNhYmxlZCc6IGRpc2FibGVCb3R0b21TdG9yZXNcclxuICAgICAgICAgICAgICAgICAgICAgIH1cIiBcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQbGFuU3RvcmUoJ2JvdHRvbS1TdG9yZXMnKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZUJvdHRvbVN0b3JlcyA/IHRydWUgOiBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICBCb3R0b20gNSBTdG9yZXNcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb250YWluZXIgbXgtNFwiPlxyXG4gICAgICAgICAgICA8dGFibGUgKm5nSWY9XCIhdG9wcGVyZm9ybWluZ3N0b3Jlc0xvYWRpbmcgJiYgIXRvcHBlcmZvcm1pbmdzdG9yZXNOb2RhdGFcIiBjbGFzcz1cInRhYmxlIGJvdHRvbS1ib3JkZXJcIj5cclxuICAgICAgICAgICAgICA8dGhlYWQgY2xhc3M9XCJmaXhlZC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgPHRoPlN0b3JlIEluZm88L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGg+Wm9uZSBOYW1lPC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoPlpvbmUgRm9vdGZhbGw8L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGg+Q29uY2VudHJhdGlvbjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aD5BdmcgRHdlbGwgVGltZTwvdGg+XHJcbiAgXHJcbiAgXHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgPHRib2R5IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZSB0b3BzdG9yZXNcIj5cclxuICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgc3RvcmUgb2YgdG9wUGVyZm9ybWluZ1N0b3Jlc1wiPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlLXByaW1hcnkgaW52b2ljZSBtYi0yXCI+e3sgc3RvcmUuc3RvcmVOYW1lIHx8ICctLScgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPnt7IHN0b3JlLnpvbmVOYW1lIHx8ICctLScgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPnt7IHN0b3JlLnpvbmVGb290ZmFsbENvdW50IHx8ICctLScgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPnt7IHN0b3JlLmltcHJlc3Npb25SYXRlIHx8ICctLScgfX0lPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj57eyBzdG9yZS5hdmdEd2VsbFRpbWUgfHwgJy0tJyB9fSBtaW5zPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b3BwZXJmb3JtaW5nc3RvcmVzTG9hZGluZ1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b3BwZXJmb3JtaW5nc3RvcmVzTm9kYXRhICYmICF0b3BwZXJmb3JtaW5nc3RvcmVzTG9hZGluZ1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMlwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW4gbXQtMThcIj5cclxuICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmNcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhbWFpbnRleHQgbXQtM1wiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YXN1YnRleHRcIj5UaGVyZSBpcyBubyByZXN1bHQgZm9yIFRvcCBQZXJmb3JtaW5nIFN0b3JlczwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICBcclxuICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+Il19
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wLXBlcmZvcm1pbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS16b25lL3NyYy9saWIvY29tcG9uZW50cy96b25lLXYyL3RvcC1wZXJmb3JtaW5nL3RvcC1wZXJmb3JtaW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2Utem9uZS9zcmMvbGliL2NvbXBvbmVudHMvem9uZS12Mi90b3AtcGVyZm9ybWluZy90b3AtcGVyZm9ybWluZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBc0IsTUFBTSxlQUFlLENBQUM7QUFTakYsT0FBTyxFQUFjLE9BQU8sRUFBRSxZQUFZLEVBQXdCLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7QUFTMUYsTUFBTSxPQUFPLHNCQUFzQjtJQTJCZDtJQUFnQztJQUF5QjtJQUFzQztJQUEyQztJQUE0QjtJQUErQjtJQTFCeE4sbUJBQW1CLEdBQVUsRUFBRSxDQUFDO0lBQ2hDLGtCQUFrQixHQUFVLEVBQUUsQ0FBQztJQUMvQixXQUFXLEdBQVcsRUFBRSxDQUFDO0lBQ3pCLGNBQWMsR0FBWSxLQUFLLENBQUM7SUFDaEMsZUFBZSxHQUFZLElBQUksQ0FBQztJQUNoQyxjQUFjLEdBQVksS0FBSyxDQUFDO0lBQ2hDLDBCQUEwQixHQUFZLElBQUksQ0FBQztJQUMzQyx5QkFBeUIsR0FBWSxLQUFLLENBQUM7SUFDM0MsVUFBVSxDQUFNO0lBQ2hCLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFDMUIsSUFBSSxHQUFXLFdBQVcsQ0FBQztJQUMzQixTQUFTLEdBQVcsWUFBWSxDQUFDO0lBRWhDLHdCQUF3QjtJQUN6QixlQUFlLEdBQVksS0FBSyxDQUFDLENBQUMscURBQXFEO0lBQ3ZGLGtCQUFrQixHQUFZ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bEJuQyx1a1lBaVBVOzsyRkQvTkcsc0JBQXNCO2tCQU5sQyxTQUFTOytCQUNFLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBhbTUgZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czVcIjtcclxuaW1wb3J0ICogYXMgYW01eHkgZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czUveHlcIjtcclxuaW1wb3J0ICogYXMgYW01dGhlbWVzX0FuaW1hdGVkIGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM1L3RoZW1lcy9BbmltYXRlZFwiO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBab25ldjJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvem9uZXYyLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItdG9wLXBlcmZvcm1pbmcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90b3AtcGVyZm9ybWluZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3RvcC1wZXJmb3JtaW5nLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFRvcFBlcmZvcm1pbmdDb21wb25lbnQge1xyXG4gIHRvcFBlcmZvcm1pbmdTdG9yZXM6IGFueVtdID0gW107IFxyXG4gIHRvcFBlcmZvcm1pbmdab25lczogYW55W10gPSBbXTsgXHJcbiAgc2VhcmNoSW5wdXQ6IHN0cmluZyA9ICcnO1xyXG4gIHNlYXJjaERpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYW5hbHlzaXNMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBhbmFseXNpc05vRGF0YTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRvcHBlcmZvcm1pbmdzdG9yZXNMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICB0b3BwZXJmb3JtaW5nc3RvcmVzTm9kYXRhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaGVhZGVyRGF0YTogYW55O1xyXG4gIGlzRXhwb3J0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgdHlwZTogc3RyaW5nID0gJ3RvcC16b25lcyc7XHJcbiAgc3RvcmV0eXBlOiBzdHJpbmcgPSAndG9wLVN0b3Jlcyc7XHJcblxyXG4gICAvLyBEZWZhdWx0IHNlbGVjdGVkIHR5cGVcclxuICBkaXNhYmxlVG9wWm9uZXM6IGJvb2xlYW4gPSBmYWxzZTsgLy8gQ29udHJvbCB3aGV0aGVyIHRoZSBUb3AgNSBab25lcyBidXR0b24gaXMgZGlzYWJsZWRcclxuICBkaXNhYmxlQm90dG9tWm9uZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkaXNhYmxlVG9wU3RvcmVzOiBib29sZWFuID0gZmFsc2U7IC8vIENvbnRyb2wgd2hldGhlciB0aGUgVG9wIDUgWm9uZXMgYnV0dG9uIGlzIGRpc2FibGVkXHJcbiAgZGlzYWJsZUJvdHRvbVN0b3JlczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHJcbiAgLy8gaW52b2ljZU5vRGF0YTogYm9vbGVhbiA9IHRydWU7XHJcbiAgLy8gaW52b2ljZUxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvLyBpc0V4cG9ydDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8vIGNsaWVudElkOiBzdHJpbmcgPSAnJztcclxuICAvLyB1c2VyVHlwZTphbnkgPSAnJztcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCwgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgWm9uZXYyU2VydmljZTogWm9uZXYyU2VydmljZSwgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgdG9hc3Q6IFRvYXN0U2VydmljZSwgcHVibGljIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UscHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLCkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlXHJcbiAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCksIGRlYm91bmNlVGltZSgzMDApKVxyXG4gICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5oZWFkZXJEYXRhID0gZGF0YTtcclxuICAgICAgICB0aGlzLmdldFRvcFBlcmZvcm1pbmdab25lcygndG9wJyk7XHJcbiAgICAgICAgdGhpcy5nZXRUb3BQZXJmb3JtaW5nU3RvcmVzKCd0b3AnKVxyXG59KVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIGdldFRvcFBlcmZvcm1pbmdab25lcyhzb3J0VHlwZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmFuYWx5c2lzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmFuYWx5c2lzTm9EYXRhID0gdHJ1ZTtcclxuICAgIGNvbnN0IHJlcXVlc3REYXRhID0ge1xyXG4gICAgICAvLyBmcm9tRGF0ZTogdGhpcy5oZWFkZXJEYXRhLmRhdGUuc3RhcnREYXRlLFxyXG4gICAgICAvLyB0b0RhdGU6IHRoaXMuaGVhZGVyRGF0YS5kYXRlLmVuZERhdGUsXHJcbiAgICAgIC8vIHN0b3JlSWQ6IHRoaXMuaGVhZGVyRGF0YS5zdG9yZXMuZmlsdGVyKChzdG9yZTphbnkpID0+IHN0b3JlLmNoZWNrZWQpLm1hcCgoc3RvcmU6YW55KSA9PiBzdG9yZS5zdG9yZUlkKSxcclxuICAgICAgLy8gLy8gc3RvcmVJZDogW1wiMTEtMjUzXCIsIFwiMTEtNTExXCIsXCIxMS0xMTc2XCJdLFxyXG4gICAgICAvLyBjbGllbnRJZDp0aGlzLmhlYWRlckRhdGEuY2xpZW50LFxyXG4gICAgICBmcm9tRGF0ZTogJzIwMjQtMDctMDEnLFxyXG4gICAgICB0b0RhdGU6ICcyMDI0LTA3LTIyJyxcclxuICAgICAgc3RvcmVJZDogWycxMSddLFxyXG4gICAgICBzb3J0VHlwZTogc29ydFR5cGUsIC8vIHRvcCBvciBib3R0b21cclxuICAgICAgc29ydDogJ2Zvb3RmYWxsJyxcclxuICAgICAgc29ydEJ5OiBzb3J0VHlwZSA9PT0gJ3RvcCcgPyAxIDogLTEgXHJcbiAgICB9O1xyXG4gIFxyXG4gICAgdGhpcy5ab25ldjJTZXJ2aWNlLmdldFRvcFBlcmZvcm1pbmdab25lcyhyZXF1ZXN0RGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmFuYWx5c2lzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICBpZiAocmVzcG9uc2U/LmNvZGUgPT09IDIwMCAmJiByZXNwb25zZT8uc3RhdHVzID09PSBcInN1Y2Nlc3NcIikge1xyXG4gICAgICAgIHRoaXMudG9wUGVyZm9ybWluZ1pvbmVzID0gcmVzcG9uc2UuZGF0YS50b3BQZXJmb3JtaW5nWm9uZXM7XHJcbiAgICAgICAgdGhpcy5hbmFseXNpc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuYW5hbHlzaXNOb0RhdGEgPSBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmFuYWx5c2lzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5hbmFseXNpc05vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnRvcFBlcmZvcm1pbmdab25lcyA9IFtdXHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBlcnJvciA9PiB7XHJcbiAgICAgIHRoaXMudG9wUGVyZm9ybWluZ1pvbmVzID0gW11cclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKClcclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXRUb3BQZXJmb3JtaW5nU3RvcmVzKHNvcnRUeXBlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMudG9wcGVyZm9ybWluZ3N0b3Jlc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy50b3BwZXJmb3JtaW5nc3RvcmVzTm9kYXRhID0gdHJ1ZTtcclxuICAgIGNvbnN0IHJlcXVlc3REYXRhID0ge1xyXG4gICAgICAvLyBmcm9tRGF0ZTogdGhpcy5oZWFkZXJEYXRhLmRhdGUuc3RhcnREYXRlLFxyXG4gICAgICAvLyB0b0RhdGU6IHRoaXMuaGVhZGVyRGF0YS5kYXRlLmVuZERhdGUsXHJcbiAgICAgIC8vIHN0b3JlSWQ6IHRoaXMuaGVhZGVyRGF0YS5zdG9yZXMuZmlsdGVyKChzdG9yZTphbnkpID0+IHN0b3JlLmNoZWNrZWQpLm1hcCgoc3RvcmU6YW55KSA9PiBzdG9yZS5zdG9yZUlkKSxcclxuICAgICAgLy8gLy8gc3RvcmVJZDogW1wiMTEtMjUzXCIsIFwiMTEtNTExXCIsXCIxMS0xMTc2XCJdLFxyXG4gICAgICAvLyBjbGllbnRJZDp0aGlzLmhlYWRlckRhdGEuY2xpZW50LFxyXG4gICAgICBmcm9tRGF0ZTogJzIwMjQtMDctMDEnLFxyXG4gICAgICB0b0RhdGU6ICcyMDI0LTA3LTIyJyxcclxuICAgICAgc3RvcmVJZDogWycxMSddLFxyXG4gICAgICBzb3J0VHlwZTogc29ydFR5cGUsIC8vIHRvcCBvciBib3R0b21cclxuICAgICAgc29ydDogJ2Zvb3RmYWxsJyxcclxuICAgICAgc29ydEJ5OiBzb3J0VHlwZSA9PT0gJ3RvcCcgPyAxIDogLTEgXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuWm9uZXYyU2VydmljZS5nZXRUb3BQZXJmb3JtaW5nU3RvcmVzKHJlcXVlc3REYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMudG9wcGVyZm9ybWluZ3N0b3Jlc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgaWYgKHJlc3BvbnNlPy5jb2RlID09PSAyMDAgJiYgcmVzcG9uc2U/LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpIHtcclxuICAgICAgICB0aGlzLnRvcFBlcmZvcm1pbmdTdG9yZXMgPSByZXNwb25zZS5kYXRhLnRvcFBlcmZvcm1pbmdTdG9yZXM7XHJcbiAgICAgICAgdGhpcy50b3BwZXJmb3JtaW5nc3RvcmVzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudG9wcGVyZm9ybWluZ3N0b3Jlc05vZGF0YSA9IGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudG9wcGVyZm9ybWluZ3N0b3Jlc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRvcHBlcmZvcm1pbmdzdG9yZXNOb2RhdGEgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudG9wUGVyZm9ybWluZ1N0b3JlcyA9IFtdXHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIGVycm9yID0+IHtcclxuICAgICAgdGhpcy50b3BQZXJmb3JtaW5nU3RvcmVzID0gW11cclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKVxyXG4gICAgfVxyXG4gICk7XHJcbiAgfVxyXG5cclxuICAgIFxyXG4gIHNlbGVjdFBsYW56b25lKHR5cGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy50eXBlID0gdHlwZTtcclxuICAgIGlmICh0eXBlID09PSAndG9wLXpvbmVzJykge1xyXG4gICAgICB0aGlzLmdldFRvcFBlcmZvcm1pbmdab25lcygndG9wJyk7IC8vIEZldGNoIHRvcCB6b25lc1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnYm90dG9tLXpvbmVzJykge1xyXG4gICAgICB0aGlzLmdldFRvcFBlcmZvcm1pbmdab25lcygnYm90dG9tJyk7IC8vIEZldGNoIGJvdHRvbSB6b25lc1xyXG4gICAgfVxyXG4gIH1cclxuICBzZWxlY3RQbGFuU3RvcmUoc3RvcmV0eXBlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKFwic3RvcmV0eXBlXCIsIHN0b3JldHlwZSk7XHJcbiAgICBcclxuICAgIHRoaXMuc3RvcmV0eXBlID0gc3RvcmV0eXBlO1xyXG4gICAgaWYgKHN0b3JldHlwZSA9PT0gJ3RvcC1TdG9yZXMnKSB7XHJcbiAgICAgIHRoaXMuZ2V0VG9wUGVyZm9ybWluZ1N0b3JlcygndG9wJyk7IC8vIEZldGNoIHRvcCB6b25lc1xyXG4gICAgfSBlbHNlIGlmIChzdG9yZXR5cGUgPT09ICdib3R0b20tU3RvcmVzJykge1xyXG4gICAgICB0aGlzLmdldFRvcFBlcmZvcm1pbmdTdG9yZXMoJ2JvdHRvbScpOyAvLyBGZXRjaCBib3R0b20gem9uZXNcclxuICAgIH1cclxuICB9XHJcblxyXG4gXHJcblxyXG4gIC8vIHNlbGVjdFBsYW4ocGxhblR5cGU6IHN0cmluZyk6IHZvaWQge1xyXG4gIC8vICAgaWYgKHBsYW5UeXBlID09PSAndG9wLXpvbmVzJykge1xyXG4gIC8vICAgICB0aGlzLnR5cGUgPSAndG9wLXpvbmVzJzsgLy8gU2VsZWN0IFRvcCA1IFpvbmVzXHJcbiAgLy8gICB9IGVsc2UgaWYgKHBsYW5UeXBlID09PSAnYm90dG9tLXpvbmVzJykge1xyXG4gIC8vICAgICB0aGlzLnR5cGUgPSAnYm90dG9tLXpvbmVzJzsgLy8gU2VsZWN0IEJvdHRvbSA1IFpvbmVzXHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICBcclxufSIsIjxkaXYgY2xhc3M9XCJyb3cgXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHAtM1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTYgY2FyZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJoLTEwMFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHAtNFwiPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkdGV4dFwiPlRvcCBQZXJmb3JtaW5nIFpvbmVzIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJUb3AgcGVyZm9ybWluZyB6b25lcyBhY3Jvc3MgdGhlIHN0b3JlcyBzZWxlY3RlZFwiIHBsYWNlbWVudD1cInRvcFwiXHJcbiAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwibW91c2VlbnRlcjptb3VzZWxlYXZlXCIgdG9vbHRpcENsYXNzPVwiY3VzdG9tLXRvb2x0aXBcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMzUxMl8zMjg2OClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAxMC42NjY2VjcuOTk5OThNOC4wMDAxNiA1LjMzMzMxSDguMDA2ODNNMTQuNjY2OCA3Ljk5OTk4QzE0LjY2NjggMTEuNjgxOSAxMS42ODIxIDE0LjY2NjYgOC4wMDAxNiAxNC42NjY2QzQuMzE4MjYgMTQuNjY2NiAxLjMzMzUgMTEuNjgxOSAxLjMzMzUgNy45OTk5OEMxLjMzMzUgNC4zMTgwOCA0LjMxODI2IDEuMzMzMzEgOC4wMDAxNiAxLjMzMzMxQzExLjY4MjEgMS4zMzMzMSAxNC42NjY4IDQuMzE4MDggMTQuNjY2OCA3Ljk5OTk4WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM5OEEyQjNcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzM1MTJfMzI4NjhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VicmF0ZXRleHQgbXQtMlwiPkJhc2VkIG9uIENvbmNlbnRyYXRpb24gUmF0ZTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlIG15LTFcIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLWJlZ2luOjpOYXYgZ3JvdXAtLT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1ncm91cCBuYXYtZ3JvdXAtb3V0bGluZSBib3JkZXItMSBidG4tZ3JvdXAgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnYWN0aXZlUGxhbkJ0bic6IHR5cGUgPT09ICd0b3Atem9uZXMnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnaW5hY3RpdmVQbGFuQnRuJzogdHlwZSAhPT0gJ3RvcC16b25lcycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdkaXNhYmxlZCc6IGRpc2FibGVUb3Bab25lc1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW56b25lKCd0b3Atem9uZXMnKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZVRvcFpvbmVzID8gdHJ1ZSA6IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIFRvcCA1IFpvbmVzXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHB4LTYgcHktM1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnYWN0aXZlUGxhbkJ0bic6IHR5cGUgPT09ICdib3R0b20tem9uZXMnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnaW5hY3RpdmVQbGFuQnRuJzogdHlwZSAhPT0gJ2JvdHRvbS16b25lcycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdkaXNhYmxlZCc6IGRpc2FibGVCb3R0b21ab25lc1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW56b25lKCdib3R0b20tem9uZXMnKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZUJvdHRvbVpvbmVzID8gdHJ1ZSA6IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIEJvdHRvbSA1IFpvbmVzXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29udGFpbmVyIG14LTRcIj5cclxuICAgICAgICAgICAgPHRhYmxlICpuZ0lmPVwiIWFuYWx5c2lzTG9hZGluZyAmJiAhYW5hbHlzaXNOb0RhdGFcIiBjbGFzcz1cInRhYmxlIGJvdHRvbS1ib3JkZXJcIj5cclxuICAgICAgICAgICAgICA8dGhlYWQgY2xhc3M9XCJmaXhlZC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgPHRoPlpvbmUgTmFtZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aD5Gb290ZmFsbDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aD5Cb3VuY2VkPC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoPkVuZ2FnZXJzPC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoPkltcHJlc3Npb25zPC90aD5cclxuICBcclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlIHRvcHN0b3Jlc1wiPlxyXG4gICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCB6b25lIG9mIHRvcFBlcmZvcm1pbmdab25lc1wiPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3sgem9uZT8uem9uZU5hbWUgPyB6b25lLnpvbmVOYW1lIDogJy0tJyB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3sgem9uZT8uZm9vdGZhbGxDb3VudCA/IHpvbmUuZm9vdGZhbGxDb3VudCA6ICctLScgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPnt7IHpvbmU/LmJvdW5jZWRDb3VudCA/IHpvbmUuYm91bmNlZENvdW50IDogJy0tJyB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3sgem9uZT8uZW5nYWdlcnNDb3VudCA/IHpvbmUuZW5nYWdlcnNDb3VudCA6ICctLScgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPnt7IHpvbmU/LmltcHJlc3Npb25SYXRlID8gem9uZS5pbXByZXNzaW9uUmF0ZSArICclJyA6ICctLScgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFuYWx5c2lzTG9hZGluZ1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciBBbmFseXNpc2NhcmQgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhbmFseXNpc05vRGF0YSAmJiAhYW5hbHlzaXNMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIEFuYWx5c2lzY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmNcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhbWFpbnRleHQgbXQtM1wiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YXN1YnRleHRcIj5UaGVyZSBpcyBubyByZXN1bHQgZm9yIFRvcCBQZXJmb3JtaW5nIEFuYWx5c2lzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICBcclxuICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNiBjYXJkIG14LTJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDBcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwLTRcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZHRleHRcIj5Ub3AgUGVyZm9ybWluZyBTdG9yZXMgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cIlRvcCBwZXJmb3JtaW5nIHN0b3JlcyBhbmQgdGhlaXIgY29uY2VudHJhdGlvbiAlIGFsb25nIHdpdGggYXZnIGR3ZWxsIHRpbWVcIiBwbGFjZW1lbnQ9XCJ0b3BcIlxyXG4gICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cIm1vdXNlZW50ZXI6bW91c2VsZWF2ZVwiIHRvb2x0aXBDbGFzcz1cImN1c3RvbS10b29sdGlwXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzM1MTJfMzI4NjgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMTAuNjY2NlY3Ljk5OTk4TTguMDAwMTYgNS4zMzMzMUg4LjAwNjgzTTE0LjY2NjggNy45OTk5OEMxNC42NjY4IDExLjY4MTkgMTEuNjgyMSAxNC42NjY2IDguMDAwMTYgMTQuNjY2NkM0LjMxODI2IDE0LjY2NjYgMS4zMzM1IDExLjY4MTkgMS4zMzM1IDcuOTk5OThDMS4zMzM1IDQuMzE4MDggNC4zMTgyNiAxLjMzMzMxIDguMDAwMTYgMS4zMzMzMUMxMS42ODIxIDEuMzMzMzEgMTQuNjY2OCA0LjMxODA4IDE0LjY2NjggNy45OTk5OFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjOThBMkIzXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zNTEyXzMyODY4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1YnJhdGV0ZXh0IG10LTJcIj5CYXNlZCBvbiBDb25jZW50cmF0aW9uIFJhdGU8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZSBteS0xXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS1iZWdpbjo6TmF2IGdyb3VwLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYXYtZ3JvdXAgbmF2LWdyb3VwLW91dGxpbmUgYm9yZGVyLTEgYnRuLWdyb3VwIHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiBcclxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGl2ZVBsYW5CdG4nOiBzdG9yZXR5cGUgPT09ICd0b3AtU3RvcmVzJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ2luYWN0aXZlUGxhbkJ0bic6IHN0b3JldHlwZSAhPT0gJ3RvcC1TdG9yZXMnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnZGlzYWJsZWQnOiBkaXNhYmxlVG9wU3RvcmVzXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UGxhblN0b3JlKCd0b3AtU3RvcmVzJylcIiBcclxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVUb3BTdG9yZXMgPyB0cnVlIDogbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgVG9wIDUgU3RvcmVzXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHB4LTYgcHktM1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnYWN0aXZlUGxhbkJ0bic6IHN0b3JldHlwZSA9PT0gJ2JvdHRvbS1TdG9yZXMnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnaW5hY3RpdmVQbGFuQnRuJzogc3RvcmV0eXBlICE9PSAnYm90dG9tLVN0b3JlcycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdkaXNhYmxlZCc6IGRpc2FibGVCb3R0b21TdG9yZXNcclxuICAgICAgICAgICAgICAgICAgICAgIH1cIiBcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQbGFuU3RvcmUoJ2JvdHRvbS1TdG9yZXMnKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZUJvdHRvbVN0b3JlcyA/IHRydWUgOiBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICBCb3R0b20gNSBTdG9yZXNcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb250YWluZXIgbXgtNFwiPlxyXG4gICAgICAgICAgICA8dGFibGUgKm5nSWY9XCIhdG9wcGVyZm9ybWluZ3N0b3Jlc0xvYWRpbmcgJiYgIXRvcHBlcmZvcm1pbmdzdG9yZXNOb2RhdGFcIiBjbGFzcz1cInRhYmxlIGJvdHRvbS1ib3JkZXJcIj5cclxuICAgICAgICAgICAgICA8dGhlYWQgY2xhc3M9XCJmaXhlZC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgPHRoPlN0b3JlIEluZm88L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGg+Wm9uZSBOYW1lPC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoPlpvbmUgRm9vdGZhbGw8L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGg+Q29uY2VudHJhdGlvbjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aD5BdmcgRHdlbGwgVGltZTwvdGg+XHJcbiAgXHJcbiAgXHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgPHRib2R5IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZSB0b3BzdG9yZXNcIj5cclxuICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgc3RvcmUgb2YgdG9wUGVyZm9ybWluZ1N0b3Jlc1wiPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlLXByaW1hcnkgaW52b2ljZVwiPnt7IHN0b3JlLnN0b3JlTmFtZSB8fCAnLS0nIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj57eyBzdG9yZS56b25lTmFtZSB8fCAnLS0nIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj57eyBzdG9yZS56b25lRm9vdGZhbGxDb3VudCB8fCAnLS0nIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj57eyBzdG9yZS5pbXByZXNzaW9uUmF0ZSB8fCAnLS0nIH19JTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3sgc3RvcmUuYXZnRHdlbGxUaW1lIHx8ICctLScgfX0gbWluczwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9wcGVyZm9ybWluZ3N0b3Jlc0xvYWRpbmdcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9wcGVyZm9ybWluZ3N0b3Jlc05vZGF0YSAmJiAhdG9wcGVyZm9ybWluZ3N0b3Jlc0xvYWRpbmdcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uIG10LTE4XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YW1haW50ZXh0IG10LTNcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGFzdWJ0ZXh0XCI+VGhlcmUgaXMgbm8gcmVzdWx0IGZvciBUb3AgUGVyZm9ybWluZyBTdG9yZXM8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgXHJcbiAgICA8L2Rpdj5cclxuICAgIDwvZGl2PiJdfQ==
|
|
@@ -102,7 +102,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
102
102
|
ReactiveSelectComponent,
|
|
103
103
|
TopPerformingComponent,
|
|
104
104
|
SummaryTableComponent,
|
|
105
|
-
StoreZoomHeatmapComponent
|
|
105
|
+
StoreZoomHeatmapComponent,
|
|
106
106
|
],
|
|
107
107
|
imports: [
|
|
108
108
|
// CommonModule,
|
|
@@ -128,4 +128,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
128
128
|
]
|
|
129
129
|
}]
|
|
130
130
|
}] });
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFuZ28tYW5hbHlzZS16b25lLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2Utem9uZS9zcmMvbGliL3RhbmdvLWFuYWx5c2Utem9uZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RJLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBQy9HLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUN6RyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxxRkFBcUYsQ0FBQztBQUNwSSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDN0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDbkcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFDekcsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMEVBQTBFLENBQUM7QUFDdkgsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDNUcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFDekcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDdEcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDbkcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0ZBQW9GLENBQUM7O0FBZ0QvSCxNQUFNLE9BQU8sc0JBQXNCO3VHQUF0QixzQkFBc0I7d0dBQXRCLHNCQUFzQixpQkEzQy9CLHFCQUFxQjtZQUNyQix5QkFBeUI7WUFDekIsMkJBQTJCO1lBQzNCLHlCQUF5QjtZQUN6QiwwQkFBMEI7WUFDMUIsNkJBQTZCO1lBRTdCLGVBQWU7WUFDZiw2QkFBNkI7WUFDN0IsbUJBQW1CO1lBQ25CLHFCQUFxQjtZQUNyQix1QkFBdUI7WUFDdkIsMkJBQTJCO1lBQzNCLHdCQUF3QjtZQUN4Qix1QkFBdUI7WUFDdkIsc0JBQXNCO1lBQ3RCLHFCQUFxQjtZQUNyQix5QkFBeUI7WUFJekIsZ0JBQWdCO1lBQ2hCLGlDQUFpQztZQUNqQyx3QkFBd0I7WUFDeEIsZUFBZTtZQUNmLHVCQUF1QjtZQUN2QixxQkFBcUI7WUFDckIsc0JBQXNCO1lBQ3RCLG9CQUFvQjtZQUNwQixZQUFZO1lBQ1osWUFBWTtZQUNaLDZCQUE2QjtZQUM3QixvQkFBb0I7WUFDcEIsV0FBVztZQUNYLG1CQUFtQjtZQUNuQixrQkFBa0I7WUFDbEIsZ0JBQWdCO1lBQ2hCLFNBQVM7WUFDVCxrQkFBa0I7WUFDbEIsa0JBQWtCO1lBQ2xCLGlCQUFpQjt3R0FHUixzQkFBc0I7WUF0Qi9CLGdCQUFnQjtZQUNoQixpQ0FBaUM7WUFDakMsd0JBQXdCO1lBQ3hCLGVBQWU7WUFDZix1QkFBdUI7WUFDdkIscUJBQXFCO1lBQ3JCLHNCQUFzQjtZQUN0QixvQkFBb0I7WUFDcEIsWUFBWTtZQUNaLFlBQVk7WUFDWiw2QkFBNkI7WUFDN0Isb0JBQW9CO1lBQ3BCLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsa0JBQWtCO1lBQ2xCLGdCQUFnQjtZQUNoQixTQUFTO1lBQ1Qsa0JBQWtCO1lBQ2xCLGtCQUFrQjtZQUNsQixpQkFBaUI7OzJGQUdSLHNCQUFzQjtrQkE3Q2xDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLHFCQUFxQjt3QkFDckIseUJBQXlCO3dCQUN6QiwyQkFBMkI7d0JBQzNCLHlCQUF5Qjt3QkFDekIsMEJBQTBCO3dCQUMxQiw2QkFBNkI7d0JBRTdCLGVBQWU7d0JBQ2YsNkJBQTZCO3dCQUM3QixtQkFBbUI7d0JBQ25CLHFCQUFxQjt3QkFDckIsdUJBQXVCO3dCQUN2QiwyQkFBMkI7d0JBQzNCLHdCQUF3Qjt3QkFDeEIsdUJBQXVCO3dCQUN2QixzQkFBc0I7d0JBQ3RCLHFCQUFxQjt3QkFDckIseUJBQXlCO3FCQUUxQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsZ0JBQWdCO3dCQUNoQixpQ0FBaUM7d0JBQ2pDLHdCQUF3Qjt3QkFDeEIsZUFBZTt3QkFDZix1QkFBdUI7d0JBQ3ZCLHFCQUFxQjt3QkFDckIsc0JBQXNCO3dCQUN0QixvQkFBb0I7d0JBQ3BCLFlBQVk7d0JBQ1osWUFBWTt3QkFDWiw2QkFBNkI7d0JBQzdCLG9CQUFvQjt3QkFDcEIsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3dCQUNoQixTQUFTO3dCQUNULGtCQUFrQjt3QkFDbEIsa0JBQWtCO3dCQUNsQixpQkFBaUI7cUJBQ2xCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgVGFuZ29BbmFseXNlWm9uZVJvdXRpbmdNb2R1bGUgfSBmcm9tICcuL3RhbmdvLWFuYWx5c2Utem9uZS1yb3V0aW5nLm1vZHVsZSc7XHJcbmltcG9ydCB7IE5nYkFjY29yZGlvbk1vZHVsZSwgTmdiQ2Fyb3VzZWxNb2R1bGUsIE5nYk1vZHVsZSwgTmdiUHJvZ3Jlc3NiYXJNb2R1bGUsIE5nYlRvb2x0aXBNb2R1bGUgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IE92ZXJhbGxjYXJkc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9vdmVyYWxsY2FyZHMvb3ZlcmFsbGNhcmRzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRvcFBlcmZvcm1pbmdab25lc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90b3AtcGVyZm9ybWluZy16b25lcy90b3AtcGVyZm9ybWluZy16b25lcy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBab25lU3VtbWFyeVRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3pvbmUtc3VtbWFyeS10YWJsZS96b25lLXN1bW1hcnktdGFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFpvbmVDb25jZW50cmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3pvbmUtY29uY2VudHJhdGlvbi96b25lLWNvbmNlbnRyYXRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tbW9uU2hhcmVkTW9kdWxlIH0gZnJvbSAndGFuZ28tYXBwLXVpLXNoYXJlZCc7XHJcbmltcG9ydCB7IFRhbmdvQW5hbHlzZVpvbmVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFuZ28tYW5hbHlzZS16b25lL3RhbmdvLWFuYWx5c2Utem9uZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb25jZW50cmF0aW9uaGVhdG1hcENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy96b25lLWNvbmNlbnRyYXRpb24vY29uY2VudHJhdGlvbmhlYXRtYXAvY29uY2VudHJhdGlvbmhlYXRtYXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgWm9uZVYyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3pvbmUtdjIvem9uZS12Mi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBab25lc0NhcmRzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3pvbmUtdjIvem9uZXMtY2FyZHMvem9uZXMtY2FyZHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU3RvcmVIZWF0bWFwQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3pvbmUtdjIvc3RvcmUtaGVhdG1hcC9zdG9yZS1oZWF0bWFwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEltYWdlRGlyZWN0b3J5Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3pvbmUtdjIvaW1hZ2UtZGlyZWN0b3J5L2ltYWdlLWRpcmVjdG9yeS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJbWFnZURpcmVjdG9yeVZpZXdDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvem9uZS12Mi9pbWFnZS1kaXJlY3Rvcnktdmlldy9pbWFnZS1kaXJlY3Rvcnktdmlldy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDdXN0b21lckpvdXJuZXlDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvem9uZS12Mi9jdXN0b21lci1qb3VybmV5L2N1c3RvbWVyLWpvdXJuZXkuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVhY3RpdmVTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvem9uZS12Mi9yZWFjdGl2ZS1zZWxlY3QvcmVhY3RpdmUtc2VsZWN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRvcFBlcmZvcm1pbmdDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvem9uZS12Mi90b3AtcGVyZm9ybWluZy90b3AtcGVyZm9ybWluZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTdW1tYXJ5VGFibGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvem9uZS12Mi9zdW1tYXJ5LXRhYmxlL3N1bW1hcnktdGFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU3RvcmVab29tSGVhdG1hcENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy96b25lLXYyL3N0b3JlLWhlYXRtYXAvc3RvcmUtem9vbS1oZWF0bWFwL3N0b3JlLXpvb20taGVhdG1hcC5jb21wb25lbnQnO1xyXG5cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBPdmVyYWxsY2FyZHNDb21wb25lbnQsXHJcbiAgICBUYW5nb0FuYWx5c2Vab25lQ29tcG9uZW50LFxyXG4gICAgVG9wUGVyZm9ybWluZ1pvbmVzQ29tcG9uZW50LFxyXG4gICAgWm9uZVN1bW1hcnlUYWJsZUNvbXBvbmVudCxcclxuICAgIFpvbmVDb25jZW50cmF0aW9uQ29tcG9uZW50LFxyXG4gICAgQ29uY2VudHJhdGlvbmhlYXRtYXBDb21wb25lbnQsXHJcblxyXG4gICAgWm9uZVYyQ29tcG9uZW50LFxyXG4gICAgQ29uY2VudHJhdGlvbmhlYXRtYXBDb21wb25lbnQsXHJcbiAgICBab25lc0NhcmRzQ29tcG9uZW50LFxyXG4gICAgU3RvcmVIZWF0bWFwQ29tcG9uZW50LFxyXG4gICAgSW1hZ2VEaXJlY3RvcnlDb21wb25lbnQsXHJcbiAgICBJbWFnZURpcmVjdG9yeVZpZXdDb21wb25lbnQsXHJcbiAgICBDdXN0b21lckpvdXJuZXlDb21wb25lbnQsXHJcbiAgICBSZWFjdGl2ZVNlbGVjdENvbXBvbmVudCxcclxuICAgIFRvcFBlcmZvcm1pbmdDb21wb25lbnQsXHJcbiAgICBTdW1tYXJ5VGFibGVDb21wb25lbnQsXHJcbiAgICBTdG9yZVpvb21IZWF0bWFwQ29tcG9uZW50LFxyXG4gICAgXHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICAvLyBDb21tb25Nb2R1bGUsXHJcbiAgICAvLyBUYW5nb0FuYWx5c2Vab25lUm91dGluZ01vZHVsZSxcclxuICAgIC8vIE5nYlByb2dyZXNzYmFyTW9kdWxlLFxyXG4gICAgLy8gRm9ybXNNb2R1bGUsXHJcbiAgICAvLyBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgLy8gTmdiQ2Fyb3VzZWxNb2R1bGUsXHJcbiAgICAvLyBDb21tb25TaGFyZWRNb2R1bGUsXHJcbiAgICAvLyBOZ2JUb29sdGlwTW9kdWxlLFxyXG4gICAgLy8gTmdiTW9kdWxlXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBUYW5nb0FuYWx5c2Vab25lUm91dGluZ01vZHVsZSxcclxuICAgIE5nYlByb2dyZXNzYmFyTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgQ29tbW9uU2hhcmVkTW9kdWxlLFxyXG4gICAgTmdiVG9vbHRpcE1vZHVsZSxcclxuICAgIE5nYk1vZHVsZSxcclxuICAgIE5nYkFjY29yZGlvbk1vZHVsZSxcclxuICAgIENvbW1vblNoYXJlZE1vZHVsZSxcclxuICAgIE5nYkNhcm91c2VsTW9kdWxlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFuZ29BbmFseXNlWm9uZU1vZHVsZSB7IH1cclxuIl19
|