simpo-component-library 1.6.38 → 1.6.40
Sign up to get free protection for your applications and to get access to all the features.
- package/esm2022/lib/ecommerce/sections/category-product/category-product.component.mjs +16 -13
- package/esm2022/lib/ecommerce/sections/product-category-list/product-category-list.component.mjs +9 -4
- package/esm2022/lib/ecommerce/sections/product-desc/product-desc.component.mjs +4 -4
- package/esm2022/lib/elements/card-skeleton-loader/card-skeleton-loader.component.mjs +13 -4
- package/fesm2022/simpo-component-library.mjs +31 -15
- package/fesm2022/simpo-component-library.mjs.map +1 -1
- package/lib/ecommerce/sections/category-product/category-product.component.d.ts +2 -3
- package/lib/ecommerce/sections/product-category-list/product-category-list.component.d.ts +1 -0
- package/lib/elements/card-skeleton-loader/card-skeleton-loader.component.d.ts +4 -1
- package/lib/sections/banner-carousel/banner-carousel.component.d.ts +2 -2
- package/lib/sections/carousel-banner/carousel-banner.component.d.ts +1 -1
- package/package.json +1 -1
- package/simpo-component-library-1.6.39.tgz +0 -0
- package/simpo-component-library-1.6.40.tgz +0 -0
@@ -13,22 +13,22 @@ import { ContentFitDirective } from '../../../directive/content-fit-directive';
|
|
13
13
|
import { SmallProductListingComponent } from '../small-product-listing/small-product-listing.component';
|
14
14
|
import { SanitizeHtmlPipe } from '../../../services/sanitizeHtml';
|
15
15
|
import { SpacingHorizontalDirective } from '../../../directive/spacing-horizontal.directive';
|
16
|
+
import { CardSkeletonLoaderComponent } from '../../../elements/card-skeleton-loader/card-skeleton-loader.component';
|
16
17
|
import * as i0 from "@angular/core";
|
17
18
|
import * as i1 from "../../../services/rest.service";
|
18
19
|
import * as i2 from "../../../services/cart.service";
|
19
20
|
import * as i3 from "../../../services/events.service";
|
20
|
-
import * as i4 from "@angular/
|
21
|
-
import * as i5 from "
|
22
|
-
import * as i6 from "../../../components/hover-
|
23
|
-
import * as i7 from "
|
24
|
-
import * as i8 from "ngx-skeleton-loader";
|
21
|
+
import * as i4 from "@angular/common";
|
22
|
+
import * as i5 from "../../../components/hover-elements/hover-elements.component";
|
23
|
+
import * as i6 from "../../../components/delete-hover-element/delete-hover-element.component";
|
24
|
+
import * as i7 from "ngx-skeleton-loader";
|
25
25
|
export class CategoryProductComponent extends BaseSection {
|
26
|
-
constructor(restService, cartService, _eventService
|
26
|
+
constructor(restService, cartService, _eventService) {
|
27
27
|
super();
|
28
28
|
this.restService = restService;
|
29
29
|
this.cartService = cartService;
|
30
30
|
this._eventService = _eventService;
|
31
|
-
this.
|
31
|
+
this.apiLoading = false;
|
32
32
|
this.selectCategoryId = null;
|
33
33
|
this.categoryList = [];
|
34
34
|
this.USER_CART = null;
|
@@ -52,8 +52,10 @@ export class CategoryProductComponent extends BaseSection {
|
|
52
52
|
getAllCategoriesById() {
|
53
53
|
if (!this.data?.content.collectionId)
|
54
54
|
return;
|
55
|
+
this.apiLoading = true;
|
55
56
|
this.restService.getCategoriesByCollectionId(this.data?.content.collectionId).subscribe((response) => {
|
56
57
|
this.categoryList = response;
|
58
|
+
this.apiLoading = false;
|
57
59
|
this.selectCategory(this.categoryList[0].categoryId);
|
58
60
|
});
|
59
61
|
}
|
@@ -173,8 +175,8 @@ export class CategoryProductComponent extends BaseSection {
|
|
173
175
|
get getSpacingLayout() {
|
174
176
|
return { ...this.styles?.layout };
|
175
177
|
}
|
176
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: CategoryProductComponent, deps: [{ token: i1.RestService }, { token: i2.CartService }, { token: i3.EventsService }
|
177
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: CategoryProductComponent, isStandalone: true, selector: "simpo-category-product", inputs: { data: "data", index: "index", edit: "edit", delete: "delete", customClass: "customClass" }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<section class=\"total-container\" [id]=\"data?.id\" simpoHover (hovering)=\"showEditTabs($event)\" (click)=\"editSection()\" [attr.style]=\"customClass\">\r\n <section class=\"container-fluid d-block\" [id]=\"data?.id\"\r\n [simpoBackground]=\"styles?.background\" [simpoLayout]=\"styles?.layout\" [spacingHorizontal]=\"getSpacingLayout\">\r\n <div *ngFor=\"let item of data?.content?.inputText\">\r\n <div [innerHTML]=\"item.value | sanitizeHtml\"\r\n [ngClass]=\"item.label === 'Heading' ? 'heading-large lh-2 mb-3' : 'body-large'\">\r\n </div>\r\n </div>\r\n <section class=\"m-auto position-relative w-100\" [ngClass]=\"{'adjustPosition': isMobile}\">\r\n <section class=\"d-flex\">\r\n <ng-container *ngFor=\"let category of categoryList; let idx = index\">\r\n <div class=\"d-flex flex-column align-items-center category-tag position-relative\" style=\"gap: 5px;\"\r\n [style.backgroundColor]=\"selectCategoryId === category.categoryId ? getSupportingColor(styles?.background?.accentColor ?? '#000000') : ''\"\r\n [style.borderColor]=\"selectCategoryId == category.categoryId ? styles?.background?.accentColor : ''\"\r\n (click)=\"selectCategory(category.categoryId)\">\r\n <img [src]=\"category.imgUrl[0]\" alt=\"\" height=\"30px\" width=\"30px\" style=\"border-radius: 50%;\">\r\n <span class=\"trim-text\" style=\"font-size: .8125rem; text-align: center !important;\"\r\n [style.color]=\"selectCategoryId === category.categoryId ? (styles?.background?.accentColor) : ''\">{{\r\n category.categoryName | titlecase }}</span>\r\n </div>\r\n </ng-container>\r\n </section>\r\n <ng-container *ngIf=\"!isMobile\">\r\n <div class=\"left-arrow\" (click)=\"scrollLeft()\" *ngIf=\"showLeftArrow && categoryList?.length\">\r\n <mat-icon>keyboard_arrow_left</mat-icon>\r\n </div>\r\n <div class=\"right-arrow\" (click)=\"scrollRight()\" *ngIf=\"showRightArrow && categoryList?.length\">\r\n <mat-icon>keyboard_arrow_right</mat-icon>\r\n </div>\r\n </ng-container>\r\n <section class=\"product-list position-relative\" #container *ngIf=\"dataList.length\"\r\n [style.backgroundColor]=\"styles?.background?.accentColor\">\r\n <section class=\"d-flex overflow-scroll\" id=\"productScrollBar\">\r\n <ng-container *ngFor=\"let product of dataList\">\r\n <simpo-small-product-listing [product]=\"product\" [data]=\"data\" [isScrollable]=\"true\"></simpo-small-product-listing>\r\n </ng-container>\r\n </section>\r\n </section>\r\n </section>\r\n </section>\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n</section>\r\n<ng-template #loadingTemplate>\r\n <ngx-skeleton-loader count=\"1\" appearance=\"circle\" [theme]=\"{\r\n width: '100%',\r\n height: '40vh',\r\n 'border-radius': '10px',\r\n 'position': 'relative',\r\n 'right': '5px'\r\n }\">\r\n </ngx-skeleton-loader>\r\n</ng-template>\r\n", styles: [".total-container{height:auto;position:relative}.d-block{display:block!important}.category-tag{padding:15px 10px;height:105px;width:80px;border-top-left-radius:10px;border-top-right-radius:10px;cursor:pointer;border-top:8px solid transparent}.product-list{padding:40px 20px;border-radius:8px}.adjustPosition{position:relative!important;left:-15px!important;width:108%!important}.overflow-scroll{overflow-x:auto}div[class*=arrow]{background-color:#fff;padding:5px;border-radius:50%;position:absolute;top:50%;display:flex;align-items:center;justify-content:center;z-index:10000001;cursor:pointer;box-shadow:#63636333 0 2px 8px}.left-arrow{left:10px}.right-arrow{right:10px}#productScrollBar{scroll-behavior:smooth}@media screen and (max-width: 475px){.padding-1{padding-left:1rem;padding-right:1rem}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type:
|
178
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: CategoryProductComponent, deps: [{ token: i1.RestService }, { token: i2.CartService }, { token: i3.EventsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
179
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: CategoryProductComponent, isStandalone: true, selector: "simpo-category-product", inputs: { data: "data", index: "index", edit: "edit", delete: "delete", customClass: "customClass" }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<section class=\"total-container\" [id]=\"data?.id\" simpoHover (hovering)=\"showEditTabs($event)\" (click)=\"editSection()\" [attr.style]=\"customClass\">\r\n <section class=\"container-fluid d-block\" [id]=\"data?.id\"\r\n [simpoBackground]=\"styles?.background\" [simpoLayout]=\"styles?.layout\" [spacingHorizontal]=\"getSpacingLayout\">\r\n <div *ngFor=\"let item of data?.content?.inputText\">\r\n <div [innerHTML]=\"item.value | sanitizeHtml\"\r\n [ngClass]=\"item.label === 'Heading' ? 'heading-large lh-2 mb-3' : 'body-large'\">\r\n </div>\r\n </div>\r\n <section class=\"m-auto position-relative w-100\" [ngClass]=\"{'adjustPosition': isMobile}\">\r\n <section class=\"d-flex\">\r\n <ng-container *ngFor=\"let category of categoryList; let idx = index\">\r\n <div class=\"d-flex flex-column align-items-center category-tag position-relative\" style=\"gap: 5px;\"\r\n [style.backgroundColor]=\"selectCategoryId === category.categoryId ? getSupportingColor(styles?.background?.accentColor ?? '#000000') : ''\"\r\n [style.borderColor]=\"selectCategoryId == category.categoryId ? styles?.background?.accentColor : ''\"\r\n (click)=\"selectCategory(category.categoryId)\">\r\n <img [src]=\"category.imgUrl[0]\" alt=\"\" height=\"30px\" width=\"30px\" style=\"border-radius: 50%;\">\r\n <span class=\"trim-text\" style=\"font-size: .8125rem; text-align: center !important;\"\r\n [style.color]=\"selectCategoryId === category.categoryId ? (styles?.background?.accentColor) : ''\">{{\r\n category.categoryName | titlecase }}</span>\r\n </div>\r\n </ng-container>\r\n </section>\r\n <ng-container *ngIf=\"!isMobile\">\r\n <div class=\"left-arrow\" (click)=\"scrollLeft()\" *ngIf=\"showLeftArrow && categoryList?.length\">\r\n <mat-icon>keyboard_arrow_left</mat-icon>\r\n </div>\r\n <div class=\"right-arrow\" (click)=\"scrollRight()\" *ngIf=\"showRightArrow && categoryList?.length\">\r\n <mat-icon>keyboard_arrow_right</mat-icon>\r\n </div>\r\n </ng-container>\r\n <section class=\"product-list position-relative\" [style.borderTopLeftRadius.px]='(selectCategoryId === categoryList?.[0]?.categoryId) ? 0 : 8' #container *ngIf=\"dataList.length\"\r\n [style.backgroundColor]=\"styles?.background?.accentColor\">\r\n <section class=\"d-flex overflow-scroll\" id=\"productScrollBar\" *ngIf=\"!apiLoading\">\r\n <ng-container *ngFor=\"let product of dataList\">\r\n <simpo-small-product-listing [product]=\"product\" [data]=\"data\" [isScrollable]=\"true\"></simpo-small-product-listing>\r\n </ng-container>\r\n </section>\r\n <simpo-card-skeleton-loader *ngIf=\"apiLoading\"></simpo-card-skeleton-loader>\r\n </section>\r\n </section>\r\n </section>\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n</section>\r\n<ng-template #loadingTemplate>\r\n <ngx-skeleton-loader count=\"1\" appearance=\"circle\" [theme]=\"{\r\n width: '100%',\r\n height: '40vh',\r\n 'border-radius': '10px',\r\n 'position': 'relative',\r\n 'right': '5px'\r\n }\">\r\n </ngx-skeleton-loader>\r\n</ng-template>\r\n", styles: [".total-container{height:auto;position:relative}.d-block{display:block!important}.category-tag{padding:15px 10px;height:105px;width:80px;border-top-left-radius:10px;border-top-right-radius:10px;cursor:pointer;border-top:8px solid transparent}.product-list{padding:40px 20px;border-radius:8px}.adjustPosition{position:relative!important;left:-15px!important;width:108%!important}.overflow-scroll{overflow-x:auto}div[class*=arrow]{background-color:#fff;padding:5px;border-radius:50%;position:absolute;top:50%;display:flex;align-items:center;justify-content:center;z-index:10000001;cursor:pointer;box-shadow:#63636333 0 2px 8px}.left-arrow{left:10px}.right-arrow{right:10px}#productScrollBar{scroll-behavior:smooth}@media screen and (max-width: 475px){.padding-1{padding-left:1rem;padding-right:1rem}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.TitleCasePipe, name: "titlecase" }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: SmallProductListingComponent, selector: "simpo-small-product-listing", inputs: ["product", "data", "isScrollable", "isCategoryProductList", "customClass"] }, { kind: "directive", type: BackgroundDirective, selector: "[simpoBackground]", inputs: ["simpoBackground", "scrollValue"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i5.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "component", type: i6.DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "component", type: i7.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }, { kind: "pipe", type: SanitizeHtmlPipe, name: "sanitizeHtml" }, { kind: "directive", type: SpacingHorizontalDirective, selector: "[spacingHorizontal]", inputs: ["spacingHorizontal"] }, { kind: "component", type: CardSkeletonLoaderComponent, selector: "simpo-card-skeleton-loader", inputs: ["count", "showTitles"] }] }); }
|
178
180
|
}
|
179
181
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: CategoryProductComponent, decorators: [{
|
180
182
|
type: Component,
|
@@ -189,9 +191,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
|
|
189
191
|
ContentFitDirective,
|
190
192
|
SimpoComponentModule,
|
191
193
|
SanitizeHtmlPipe,
|
192
|
-
SpacingHorizontalDirective
|
193
|
-
|
194
|
-
|
194
|
+
SpacingHorizontalDirective,
|
195
|
+
CardSkeletonLoaderComponent
|
196
|
+
], template: "<section class=\"total-container\" [id]=\"data?.id\" simpoHover (hovering)=\"showEditTabs($event)\" (click)=\"editSection()\" [attr.style]=\"customClass\">\r\n <section class=\"container-fluid d-block\" [id]=\"data?.id\"\r\n [simpoBackground]=\"styles?.background\" [simpoLayout]=\"styles?.layout\" [spacingHorizontal]=\"getSpacingLayout\">\r\n <div *ngFor=\"let item of data?.content?.inputText\">\r\n <div [innerHTML]=\"item.value | sanitizeHtml\"\r\n [ngClass]=\"item.label === 'Heading' ? 'heading-large lh-2 mb-3' : 'body-large'\">\r\n </div>\r\n </div>\r\n <section class=\"m-auto position-relative w-100\" [ngClass]=\"{'adjustPosition': isMobile}\">\r\n <section class=\"d-flex\">\r\n <ng-container *ngFor=\"let category of categoryList; let idx = index\">\r\n <div class=\"d-flex flex-column align-items-center category-tag position-relative\" style=\"gap: 5px;\"\r\n [style.backgroundColor]=\"selectCategoryId === category.categoryId ? getSupportingColor(styles?.background?.accentColor ?? '#000000') : ''\"\r\n [style.borderColor]=\"selectCategoryId == category.categoryId ? styles?.background?.accentColor : ''\"\r\n (click)=\"selectCategory(category.categoryId)\">\r\n <img [src]=\"category.imgUrl[0]\" alt=\"\" height=\"30px\" width=\"30px\" style=\"border-radius: 50%;\">\r\n <span class=\"trim-text\" style=\"font-size: .8125rem; text-align: center !important;\"\r\n [style.color]=\"selectCategoryId === category.categoryId ? (styles?.background?.accentColor) : ''\">{{\r\n category.categoryName | titlecase }}</span>\r\n </div>\r\n </ng-container>\r\n </section>\r\n <ng-container *ngIf=\"!isMobile\">\r\n <div class=\"left-arrow\" (click)=\"scrollLeft()\" *ngIf=\"showLeftArrow && categoryList?.length\">\r\n <mat-icon>keyboard_arrow_left</mat-icon>\r\n </div>\r\n <div class=\"right-arrow\" (click)=\"scrollRight()\" *ngIf=\"showRightArrow && categoryList?.length\">\r\n <mat-icon>keyboard_arrow_right</mat-icon>\r\n </div>\r\n </ng-container>\r\n <section class=\"product-list position-relative\" [style.borderTopLeftRadius.px]='(selectCategoryId === categoryList?.[0]?.categoryId) ? 0 : 8' #container *ngIf=\"dataList.length\"\r\n [style.backgroundColor]=\"styles?.background?.accentColor\">\r\n <section class=\"d-flex overflow-scroll\" id=\"productScrollBar\" *ngIf=\"!apiLoading\">\r\n <ng-container *ngFor=\"let product of dataList\">\r\n <simpo-small-product-listing [product]=\"product\" [data]=\"data\" [isScrollable]=\"true\"></simpo-small-product-listing>\r\n </ng-container>\r\n </section>\r\n <simpo-card-skeleton-loader *ngIf=\"apiLoading\"></simpo-card-skeleton-loader>\r\n </section>\r\n </section>\r\n </section>\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n</section>\r\n<ng-template #loadingTemplate>\r\n <ngx-skeleton-loader count=\"1\" appearance=\"circle\" [theme]=\"{\r\n width: '100%',\r\n height: '40vh',\r\n 'border-radius': '10px',\r\n 'position': 'relative',\r\n 'right': '5px'\r\n }\">\r\n </ngx-skeleton-loader>\r\n</ng-template>\r\n", styles: [".total-container{height:auto;position:relative}.d-block{display:block!important}.category-tag{padding:15px 10px;height:105px;width:80px;border-top-left-radius:10px;border-top-right-radius:10px;cursor:pointer;border-top:8px solid transparent}.product-list{padding:40px 20px;border-radius:8px}.adjustPosition{position:relative!important;left:-15px!important;width:108%!important}.overflow-scroll{overflow-x:auto}div[class*=arrow]{background-color:#fff;padding:5px;border-radius:50%;position:absolute;top:50%;display:flex;align-items:center;justify-content:center;z-index:10000001;cursor:pointer;box-shadow:#63636333 0 2px 8px}.left-arrow{left:10px}.right-arrow{right:10px}#productScrollBar{scroll-behavior:smooth}@media screen and (max-width: 475px){.padding-1{padding-left:1rem;padding-right:1rem}}\n"] }]
|
197
|
+
}], ctorParameters: () => [{ type: i1.RestService }, { type: i2.CartService }, { type: i3.EventsService }], propDecorators: { data: [{
|
195
198
|
type: Input
|
196
199
|
}], index: [{
|
197
200
|
type: Input
|
@@ -205,4 +208,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
|
|
205
208
|
type: ViewChild,
|
206
209
|
args: ["container"]
|
207
210
|
}] } });
|
208
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnktcHJvZHVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2Vjb21tZXJjZS9zZWN0aW9ucy9jYXRlZ29yeS1wcm9kdWN0L2NhdGVnb3J5LXByb2R1Y3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvY2F0ZWdvcnktcHJvZHVjdC9jYXRlZ29yeS1wcm9kdWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJaEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBRzdGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRXBGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLFdBQVcsTUFBTSwrQkFBK0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFHNUUsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDMUcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFL0UsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDeEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saURBQWlELENBQUM7Ozs7Ozs7Ozs7QUFzQjdGLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxXQUFXO0lBZXZELFlBQ21CLFdBQXdCLEVBQ3hCLFdBQXdCLEVBQ3hCLGFBQTRCLEVBQzVCLGNBQThCO1FBRS9DLEtBQUssRUFBRSxDQUFDO1FBTFMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBUmpELHFCQUFnQixHQUFrQixJQUFJLENBQUM7UUFDdkMsaUJBQVksR0FBZSxFQUFFLENBQUM7UUFDdEIsY0FBUyxHQUEwQixJQUFJLENBQUM7UUFXaEQsdUJBQWtCLEdBQWdDLElBQUksQ0FBQztRQXNCdkQsYUFBUSxHQUFjLEVBQUUsQ0FBQztRQXlHekIsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFDdEIsa0JBQWEsR0FBRyxLQUFLLENBQUM7SUFsSXRCLENBQUM7SUFHRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7UUFDaEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztRQUNsQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxHQUFFLEVBQUU7WUFDbkQsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBQ0QsZUFBZTtRQUNiLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDN0MsQ0FBQztJQUVELG9CQUFvQjtRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsWUFBWTtZQUNsQyxPQUFPO1FBQ1QsSUFBSSxDQUFDLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUMsRUFBRTtZQUNsRyxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQztZQUM3QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsY0FBYyxDQUFDLFVBQWtCO1FBQy9CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxVQUFVLENBQUM7UUFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUMsRUFBRTtZQUN4RSxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFFOUIsSUFBSSxvQkFBb0IsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDdkUsSUFBRyxvQkFBb0I7Z0JBQ3JCLG9CQUFvQixDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUE7UUFDdkMsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBQ0QsYUFBYSxDQUFDLE9BQWdCLEVBQUUsSUFBeUI7UUFDdkQsd0NBQXdDO1FBQ3hDLGtKQUFrSjtRQUNsSixZQUFZO1FBQ1osSUFBSTtRQUVKLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUTtZQUNwQixPQUFPLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUN2QixJQUFJLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNsQixPQUFPLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQztRQUN4QixDQUFDO2FBQ0ksQ0FBQztZQUNKLE9BQU8sQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDO1FBQ3hCLENBQUM7UUFFRCxJQUFJLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDakMsTUFBTSxXQUFXLEdBQXVCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN4RixJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNoQixXQUFXLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDakUsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3JCLElBQUksU0FBUyxHQUFZLEtBQUssQ0FBQztZQUMvQixJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQWtCLEVBQUUsRUFBRTtnQkFDN0MsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDeEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO29CQUNqQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2dCQUNuQixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUE7WUFDRixJQUFJLENBQUMsU0FBUztnQkFDWixJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDdkUsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBa0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdHLENBQUM7SUFDSCxDQUFDO0lBRUQsY0FBYyxDQUFDLE9BQWdCLEVBQUUsU0FBaUI7UUFDaEQsSUFBSSxlQUFlLEdBQXVCLElBQUksQ0FBQztRQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDLE9BQW9CLEVBQUUsRUFBRTtZQUNyRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLElBQUksU0FBUztnQkFDaEMsZUFBZSxHQUFHLE9BQU8sQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQTtRQUVGLE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxhQUFhLENBQUMsT0FBZ0I7UUFDNUIsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUNELGtCQUFrQixDQUFDLEtBQWE7UUFDOUIsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxHQUFHO1lBQ04sT0FBTyxLQUFLLENBQUM7UUFDZixHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFNUIsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDN0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQzVCLElBQUksQ0FBQyxHQUFHLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFFckIsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFDdkMsQ0FBQztJQUdELFdBQVc7UUFDVCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQztRQUNuRCxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO1lBQ3JCLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2xDLFNBQVMsQ0FBQyxVQUFVLElBQUksU0FBUyxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7Z0JBQ25ELFlBQVksSUFBSSxTQUFTLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztnQkFDM0MsSUFBSSxZQUFZLElBQUksU0FBUyxDQUFDLFdBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDOUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDakMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUN0QixDQUFDO1lBQ0gsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ1QsQ0FBQztJQUNILENBQUM7SUFDRCxVQUFVO1FBQ1IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxhQUFhLENBQUM7UUFDbkQsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztZQUNyQixNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO2dCQUNsQyxTQUFTLENBQUMsVUFBVSxJQUFJLFNBQVMsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO2dCQUNuRCxZQUFZLElBQUksU0FBUyxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7Z0JBQzNDLElBQUksWUFBWSxJQUFJLFNBQVMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQzlDLE1BQU0sQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ2pDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDdEIsQ0FBQztZQUNILENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNULENBQUM7SUFDSCxDQUFDO0lBR0QsWUFBWTtRQUNWLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDO1FBQzVDLElBQUksRUFBRSxFQUFFLENBQUM7WUFDUCxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsRUFBRSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0UsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQztJQUdELFdBQVc7UUFFVCxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxVQUFVLENBQUMsR0FBRSxFQUFFO1lBQ2IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQ3hELENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLE1BQU0sQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLEVBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBZ0IsQ0FBQztJQUNqRCxDQUFDOzhHQS9LVSx3QkFBd0I7a0dBQXhCLHdCQUF3QiwwVEM3Q3JDLHMyR0F5REEsdzFCRDNCSSxZQUFZLDJaQUNaLE9BQU8sMklBR1AsNEJBQTRCLDZKQUM1QixtQkFBbUIsMEdBQ25CLGNBQWMsZ0ZBQ2QsbUJBQW1CLGtGQUNuQixvQkFBb0IsK2dCQUNwQixnQkFBZ0IscURBQ2hCLDBCQUEwQjs7MkZBS2pCLHdCQUF3QjtrQkFuQnBDLFNBQVM7K0JBQ0Usd0JBQXdCLGNBQ3RCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLE9BQU87d0JBQ1AsZ0NBQWdDO3dCQUNoQyx5QkFBeUI7d0JBQ3pCLDRCQUE0Qjt3QkFDNUIsbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsb0JBQW9CO3dCQUNwQixnQkFBZ0I7d0JBQ2hCLDBCQUEwQjtxQkFDM0I7bUtBTVEsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ2tCLFlBQVk7c0JBQW5DLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENhdGVnb3J5UHJvZHVjdENvbnRlbnRNb2RhbCwgQ2F0ZWdvcnlQcm9kdWN0TW9kYWwsIENhdGVnb3J5UHJvZHVjdFN0eWxlc01vZGVsIH0gZnJvbSAnLi9jYXRlZ29yeS1wcm9kdWN0Lm1vZGVsJztcclxuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZXZlbnRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IEZlYXR1cmVkUHJvZHVjdHNDb21wb25lbnQgfSBmcm9tICcuLi9mZWF0dXJlZC1wcm9kdWN0cy9mZWF0dXJlZC1wcm9kdWN0cy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDYXRlZ29yeSB9IGZyb20gJy4uLy4uL3N0eWxlcy9jYXRlZ29yeS5tb2RhbCc7XHJcbmltcG9ydCB7IEl0ZW1WYXJpYW50LCBQcm9kdWN0IH0gZnJvbSAnLi4vLi4vc3R5bGVzL3Byb2R1Y3QubW9kYWwnO1xyXG5pbXBvcnQgeyBGZWF0dXJlZFByb2R1Y3RNb2RhbCB9IGZyb20gJy4uL2ZlYXR1cmVkLXByb2R1Y3RzL2ZlYXR1cmVkLXByb2R1Y3RzLm1vZGFsJztcclxuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPcmRlcmVkSXRlbXMgfSBmcm9tICcuLi8uLi9zdHlsZXMvT3JkZXJlZEl0ZW1zLm1vZGFsJztcclxuaW1wb3J0IEJhc2VTZWN0aW9uIGZyb20gJy4uLy4uLy4uL3NlY3Rpb25zL0Jhc2VTZWN0aW9uJztcclxuaW1wb3J0IHsgQmFja2dyb3VuZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9iYWNrZ3JvdW5kLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2hvdmVyLWVsZW1lbnQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgSG92ZXJFbGVtZW50c0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvaG92ZXItZWxlbWVudHMvaG92ZXItZWxlbWVudHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGVsZXRlSG92ZXJFbGVtZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9kZWxldGUtaG92ZXItZWxlbWVudC9kZWxldGUtaG92ZXItZWxlbWVudC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQb3NpdGlvbkxheW91dERpcmVjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9wb3NpdGlvbi1sYXlvdXQtZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNpbXBvQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9pbmRleCc7XHJcbmltcG9ydCB7IENvbnRlbnRGaXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvY29udGVudC1maXQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBTbWFsbFByb2R1Y3RMaXN0aW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vc21hbGwtcHJvZHVjdC1saXN0aW5nL3NtYWxsLXByb2R1Y3QtbGlzdGluZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTYW5pdGl6ZUh0bWxQaXBlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc2FuaXRpemVIdG1sJztcclxuaW1wb3J0IHsgU3BhY2luZ0hvcml6b250YWxEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvc3BhY2luZy1ob3Jpem9udGFsLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IExheU91dE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vc3R5bGVzL3N0eWxlLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ltcG8tY2F0ZWdvcnktcHJvZHVjdCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBNYXRJY29uLFxyXG4gICAgUG9zaXRpb25MYXlvdXREaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBGZWF0dXJlZFByb2R1Y3RzQ29tcG9uZW50LFxyXG4gICAgU21hbGxQcm9kdWN0TGlzdGluZ0NvbXBvbmVudCxcclxuICAgIEJhY2tncm91bmREaXJlY3RpdmUsXHJcbiAgICBIb3ZlckRpcmVjdGl2ZSxcclxuICAgIENvbnRlbnRGaXREaXJlY3RpdmUsXHJcbiAgICBTaW1wb0NvbXBvbmVudE1vZHVsZSxcclxuICAgIFNhbml0aXplSHRtbFBpcGUsXHJcbiAgICBTcGFjaW5nSG9yaXpvbnRhbERpcmVjdGl2ZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NhdGVnb3J5LXByb2R1Y3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9jYXRlZ29yeS1wcm9kdWN0LmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDYXRlZ29yeVByb2R1Y3RDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2VjdGlvbiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIGRhdGE/OiBDYXRlZ29yeVByb2R1Y3RNb2RhbDtcclxuICBASW5wdXQoKSBpbmRleD8gOiBudW1iZXI7XHJcbiAgQElucHV0KCkgZWRpdD8gOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGRlbGV0ZT8gOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGN1c3RvbUNsYXNzPzogc3RyaW5nO1xyXG4gIEBWaWV3Q2hpbGQoXCJjb250YWluZXJcIikgY29udGFpbmVyUmVmOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgc3R5bGVzPzogQ2F0ZWdvcnlQcm9kdWN0U3R5bGVzTW9kZWw7XHJcbiAgY29udGVudD86IENhdGVnb3J5UHJvZHVjdENvbnRlbnRNb2RhbDtcclxuICBzZWxlY3RDYXRlZ29yeUlkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBjYXRlZ29yeUxpc3Q6IENhdGVnb3J5W10gPSBbXTtcclxuICBwcml2YXRlIFVTRVJfQ0FSVDogT3JkZXJlZEl0ZW1zW10gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc3RTZXJ2aWNlOiBSZXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZXZlbnRTZXJ2aWNlOiBFdmVudHNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBmZWF0dXJlUHJvZHVjdERhdGE6IEZlYXR1cmVkUHJvZHVjdE1vZGFsIHwgbnVsbCA9IG51bGw7XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZlYXR1cmVQcm9kdWN0RGF0YSA9IG5ldyBGZWF0dXJlZFByb2R1Y3RNb2RhbCh0aGlzLmRhdGEpO1xyXG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLmRhdGE/LnN0eWxlcztcclxuICAgIHRoaXMuY29udGVudCA9IHRoaXMuZGF0YT8uY29udGVudDtcclxuICAgIHRoaXMuZ2V0QWxsQ2F0ZWdvcmllc0J5SWQoKTtcclxuICAgIHRoaXMuX2V2ZW50U2VydmljZS5jYXRlZ29yeVByb2R1Y3RMaXN0LnN1YnNjcmliZSgoKT0+IHtcclxuICAgICAgdGhpcy5nZXRBbGxDYXRlZ29yaWVzQnlJZCgpO1xyXG4gICAgfSlcclxuICB9XHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnVwZGF0ZUFycm93cygpLCAyMDAwKVxyXG4gIH1cclxuXHJcbiAgZ2V0QWxsQ2F0ZWdvcmllc0J5SWQoKSB7XHJcbiAgICBpZiAoIXRoaXMuZGF0YT8uY29udGVudC5jb2xsZWN0aW9uSWQpXHJcbiAgICAgIHJldHVybjtcclxuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0Q2F0ZWdvcmllc0J5Q29sbGVjdGlvbklkKHRoaXMuZGF0YT8uY29udGVudC5jb2xsZWN0aW9uSWQpLnN1YnNjcmliZSgocmVzcG9uc2UpPT4ge1xyXG4gICAgICB0aGlzLmNhdGVnb3J5TGlzdCA9IHJlc3BvbnNlO1xyXG4gICAgICB0aGlzLnNlbGVjdENhdGVnb3J5KHRoaXMuY2F0ZWdvcnlMaXN0WzBdLmNhdGVnb3J5SWQpO1xyXG4gICAgfSlcclxuICB9XHJcbiAgZGF0YUxpc3Q6IFByb2R1Y3RbXSA9IFtdO1xyXG4gIHNlbGVjdENhdGVnb3J5KGNhdGVnb3J5SWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5zZWxlY3RDYXRlZ29yeUlkID0gY2F0ZWdvcnlJZDtcclxuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0UHJvZHVjdEJ5Q2F0ZWdvcnlJZChjYXRlZ29yeUlkKS5zdWJzY3JpYmUoKHJlc3BvbnNlKT0+IHtcclxuICAgICAgdGhpcy5kYXRhTGlzdCA9IHJlc3BvbnNlLmRhdGE7XHJcblxyXG4gICAgICBsZXQgcHJvZHVjdFNjcm9sbFNlY3Rpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJvZHVjdFNjcm9sbEJhcicpO1xyXG4gICAgICBpZihwcm9kdWN0U2Nyb2xsU2VjdGlvbilcclxuICAgICAgICBwcm9kdWN0U2Nyb2xsU2VjdGlvbi5zY3JvbGxMZWZ0ID0gMFxyXG4gICAgfSlcclxuICB9XHJcbiAgYWRkSXRlbVRvQ2FydChwcm9kdWN0OiBQcm9kdWN0LCB0eXBlOiAnQUREJyB8ICdTVUJTVFJBQ1QnKSB7XHJcbiAgICAvLyBpZiAodGhpcy5pc0l0ZW1PdXRPZlN0b2NrKHByb2R1Y3QpKSB7XHJcbiAgICAvLyAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICd3YXJuJywgc3VtbWFyeTogJ0NhcnQnLCBkZXRhaWw6ICdJdGVtIGlzIG5vdCBhdmFpbGFibGUgYXMgb2Ygbm93LiBXZSB3aWxsIG5vdGlmeSB5b3Ugb25jZSBhdmFpbGFibGUnIH0pO1xyXG4gICAgLy8gICByZXR1cm47XHJcbiAgICAvLyB9XHJcblxyXG4gICAgaWYgKCFwcm9kdWN0Py5xdWFudGl0eSlcclxuICAgICAgcHJvZHVjdC5xdWFudGl0eSA9IDA7XHJcbiAgICBpZiAodHlwZSA9PSAnQUREJykge1xyXG4gICAgICBwcm9kdWN0LnF1YW50aXR5ICs9IDE7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcHJvZHVjdC5xdWFudGl0eSAtPSAxO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwcm9kdWN0Py5pdGVtVmFyaWFudD8ubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IGl0ZW1WYXJpZW50OiBJdGVtVmFyaWFudCB8IG51bGwgPSB0aGlzLmdldEl0ZW1WYXJpZW50KHByb2R1Y3QsIHByb2R1Y3QudmFyaWVudElkKTtcclxuICAgICAgaWYgKGl0ZW1WYXJpZW50KSB7XHJcbiAgICAgICAgaXRlbVZhcmllbnQucXVhbnRpdHkgPSBwcm9kdWN0LnF1YW50aXR5O1xyXG4gICAgICAgIHRoaXMuY2FydFNlcnZpY2UuYWRkSXRlbVRvQ2FydChwcm9kdWN0LCBpdGVtVmFyaWVudC52YXJpYW50SWQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZEl0ZW1Ub0NhcnQocHJvZHVjdCk7XHJcbiAgICB9XHJcbiAgICBpZiAocHJvZHVjdC5xdWFudGl0eSkge1xyXG4gICAgICBsZXQgaXNQcmVzZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuVVNFUl9DQVJUPy5mb3JFYWNoKChpdGVtOiBPcmRlcmVkSXRlbXMpID0+IHtcclxuICAgICAgICBpZiAoaXRlbS52YXJpZW50SWQgPT0gcHJvZHVjdC52YXJpZW50SWQpIHtcclxuICAgICAgICAgIGl0ZW0ucXVhbnRpdHkgPSBwcm9kdWN0LnF1YW50aXR5O1xyXG4gICAgICAgICAgaXNQcmVzZW50ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIGlmICghaXNQcmVzZW50KVxyXG4gICAgICAgIHRoaXMuVVNFUl9DQVJUPy5wdXNoKG5ldyBPcmRlcmVkSXRlbXMocHJvZHVjdCwgcHJvZHVjdC52YXJpZW50SWQpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuVVNFUl9DQVJUID0gdGhpcy5VU0VSX0NBUlQ/LmZpbHRlcigoaXRlbTogT3JkZXJlZEl0ZW1zKSA9PiBpdGVtLnZhcmllbnRJZCAhPSBwcm9kdWN0LnZhcmllbnRJZCkgPz8gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRJdGVtVmFyaWVudChwcm9kdWN0OiBQcm9kdWN0LCB2YXJpZW50SWQ6IHN0cmluZyk6IEl0ZW1WYXJpYW50IHwgbnVsbCB7XHJcbiAgICBsZXQgc2VsZWN0ZWRWYXJpZW50OiBJdGVtVmFyaWFudCB8IG51bGwgPSBudWxsO1xyXG4gICAgcHJvZHVjdD8uaXRlbVZhcmlhbnQ/LmZvckVhY2goKHZhcmllbnQ6IEl0ZW1WYXJpYW50KSA9PiB7XHJcbiAgICAgIGlmICh2YXJpZW50LnZhcmlhbnRJZCA9PSB2YXJpZW50SWQpXHJcbiAgICAgICAgc2VsZWN0ZWRWYXJpZW50ID0gdmFyaWVudDtcclxuICAgIH0pXHJcblxyXG4gICAgcmV0dXJuIHNlbGVjdGVkVmFyaWVudDtcclxuICB9XHJcbiAgZ2V0UGVyY2VudGFnZShwcm9kdWN0OiBQcm9kdWN0KSB7XHJcbiAgICByZXR1cm4gKChwcm9kdWN0LnByaWNlLnNlbGxpbmdQcmljZSAtIHByb2R1Y3QucHJpY2UuZGlzY291bnRlZFByaWNlKSAvIDEwMCkudG9GaXhlZCgwKTtcclxuICB9XHJcbiAgZ2V0U3VwcG9ydGluZ0NvbG9yKGNvbG9yOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IGhleCA9IGNvbG9yO1xyXG4gICAgaWYgKCFoZXgpXHJcbiAgICAgIHJldHVybiBjb2xvcjtcclxuICAgIGhleCA9IGhleC5yZXBsYWNlKC9eIy8sICcnKTtcclxuXHJcbiAgICBsZXQgYmlnaW50ID0gcGFyc2VJbnQoaGV4LCAxNik7XHJcbiAgICBsZXQgciA9IChiaWdpbnQgPj4gMTYpICYgMjU1O1xyXG4gICAgbGV0IGcgPSAoYmlnaW50ID4+IDgpICYgMjU1O1xyXG4gICAgbGV0IGIgPSBiaWdpbnQgJiAyNTU7XHJcblxyXG4gICAgcmV0dXJuIGByZ2JhKCR7cn0sICR7Z30sICR7Yn0sIDAuNClgO1xyXG4gIH1cclxuXHJcblxyXG4gIHNjcm9sbFJpZ2h0KCkge1xyXG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5jb250YWluZXJSZWY/Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBpZiAoY29udGFpbmVyKSB7XHJcbiAgICAgIGxldCBzY3JvbGxBbW91bnQgPSAwO1xyXG4gICAgICBjb25zdCBzbGlkZVRpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgIGNvbnRhaW5lci5zY3JvbGxMZWZ0ICs9IGNvbnRhaW5lci5jbGllbnRXaWR0aCAvIDEyO1xyXG4gICAgICAgIHNjcm9sbEFtb3VudCArPSBjb250YWluZXIuY2xpZW50V2lkdGggLyAxMjtcclxuICAgICAgICBpZiAoc2Nyb2xsQW1vdW50ID49IGNvbnRhaW5lci5jbGllbnRXaWR0aCAvIDIpIHtcclxuICAgICAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKHNsaWRlVGltZXIpO1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVBcnJvd3MoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDI1KTtcclxuICAgIH1cclxuICB9XHJcbiAgc2Nyb2xsTGVmdCgpIHtcclxuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuY29udGFpbmVyUmVmPy5uYXRpdmVFbGVtZW50O1xyXG4gICAgaWYgKGNvbnRhaW5lcikge1xyXG4gICAgICBsZXQgc2Nyb2xsQW1vdW50ID0gMDtcclxuICAgICAgY29uc3Qgc2xpZGVUaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICBjb250YWluZXIuc2Nyb2xsTGVmdCAtPSBjb250YWluZXIuY2xpZW50V2lkdGggLyAxMjtcclxuICAgICAgICBzY3JvbGxBbW91bnQgKz0gY29udGFpbmVyLmNsaWVudFdpZHRoIC8gMTI7XHJcbiAgICAgICAgaWYgKHNjcm9sbEFtb3VudCA+PSBjb250YWluZXIuY2xpZW50V2lkdGggLyAyKSB7XHJcbiAgICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChzbGlkZVRpbWVyKTtcclxuICAgICAgICAgIHRoaXMudXBkYXRlQXJyb3dzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAyNSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNob3dSaWdodEFycm93ID0gdHJ1ZTtcclxuICBzaG93TGVmdEFycm93ID0gZmFsc2U7XHJcbiAgdXBkYXRlQXJyb3dzKCkge1xyXG4gICAgY29uc3QgZWwgPSB0aGlzLmNvbnRhaW5lclJlZj8ubmF0aXZlRWxlbWVudDtcclxuICAgIGlmIChlbCkge1xyXG4gICAgICB0aGlzLnNob3dSaWdodEFycm93ID0gKGVsLnNjcm9sbFdpZHRoIC0gZWwuc2Nyb2xsTGVmdCAtIGVsLmNsaWVudFdpZHRoKSA+PSAxO1xyXG4gICAgICB0aGlzLnNob3dMZWZ0QXJyb3cgPSBlbC5zY3JvbGxMZWZ0ID4gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBlZGl0U2VjdGlvbigpe1xyXG5cclxuICAgIHRoaXMuX2V2ZW50U2VydmljZS50b2dnbGVFZGl0b3JFdmVudC5lbWl0KGZhbHNlKTtcclxuICAgIHNldFRpbWVvdXQoKCk9PiB7XHJcbiAgICAgIHRoaXMuX2V2ZW50U2VydmljZS5lZGl0U2VjdGlvbi5lbWl0KHtkYXRhOnRoaXMuZGF0YX0pO1xyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcblxyXG4gIGdldCBpc01vYmlsZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB3aW5kb3cuaW5uZXJXaWR0aCA8PSA0NzU7XHJcbiAgfVxyXG4gIGdldCBnZXRTcGFjaW5nTGF5b3V0KCkge1xyXG4gICAgcmV0dXJuIHsuLi50aGlzLnN0eWxlcz8ubGF5b3V0fSBhcyBMYXlPdXRNb2RlbDtcclxuICB9XHJcbn1cclxuIiwiPHNlY3Rpb24gY2xhc3M9XCJ0b3RhbC1jb250YWluZXJcIiBbaWRdPVwiZGF0YT8uaWRcIiBzaW1wb0hvdmVyIChob3ZlcmluZyk9XCJzaG93RWRpdFRhYnMoJGV2ZW50KVwiIChjbGljayk9XCJlZGl0U2VjdGlvbigpXCIgW2F0dHIuc3R5bGVdPVwiY3VzdG9tQ2xhc3NcIj5cclxuICA8c2VjdGlvbiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZCBkLWJsb2NrXCIgW2lkXT1cImRhdGE/LmlkXCJcclxuICAgIFtzaW1wb0JhY2tncm91bmRdPVwic3R5bGVzPy5iYWNrZ3JvdW5kXCIgW3NpbXBvTGF5b3V0XT1cInN0eWxlcz8ubGF5b3V0XCIgW3NwYWNpbmdIb3Jpem9udGFsXT1cImdldFNwYWNpbmdMYXlvdXRcIj5cclxuICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YT8uY29udGVudD8uaW5wdXRUZXh0XCI+XHJcbiAgICAgIDxkaXYgW2lubmVySFRNTF09XCJpdGVtLnZhbHVlIHwgc2FuaXRpemVIdG1sXCJcclxuICAgICAgICBbbmdDbGFzc109XCJpdGVtLmxhYmVsID09PSAnSGVhZGluZycgPyAnaGVhZGluZy1sYXJnZSBsaC0yIG1iLTMnIDogJ2JvZHktbGFyZ2UnXCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c2VjdGlvbiBjbGFzcz1cIm0tYXV0byBwb3NpdGlvbi1yZWxhdGl2ZSB3LTEwMFwiIFtuZ0NsYXNzXT1cInsnYWRqdXN0UG9zaXRpb24nOiBpc01vYmlsZX1cIj5cclxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjYXRlZ29yeSBvZiBjYXRlZ29yeUxpc3Q7IGxldCBpZHggPSBpbmRleFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIgY2F0ZWdvcnktdGFnIHBvc2l0aW9uLXJlbGF0aXZlXCIgc3R5bGU9XCJnYXA6IDVweDtcIlxyXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cInNlbGVjdENhdGVnb3J5SWQgPT09IGNhdGVnb3J5LmNhdGVnb3J5SWQgPyBnZXRTdXBwb3J0aW5nQ29sb3Ioc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvciA/PyAnIzAwMDAwMCcpIDogJydcIlxyXG4gICAgICAgICAgICBbc3R5bGUuYm9yZGVyQ29sb3JdPVwic2VsZWN0Q2F0ZWdvcnlJZCA9PSBjYXRlZ29yeS5jYXRlZ29yeUlkID8gc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvciA6ICAnJ1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RDYXRlZ29yeShjYXRlZ29yeS5jYXRlZ29yeUlkKVwiPlxyXG4gICAgICAgICAgICA8aW1nIFtzcmNdPVwiY2F0ZWdvcnkuaW1nVXJsWzBdXCIgYWx0PVwiXCIgaGVpZ2h0PVwiMzBweFwiIHdpZHRoPVwiMzBweFwiIHN0eWxlPVwiYm9yZGVyLXJhZGl1czogNTAlO1wiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRyaW0tdGV4dFwiIHN0eWxlPVwiZm9udC1zaXplOiAuODEyNXJlbTsgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XCJcclxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwic2VsZWN0Q2F0ZWdvcnlJZCA9PT0gY2F0ZWdvcnkuY2F0ZWdvcnlJZCA/IChzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yKSA6ICcnXCI+e3tcclxuICAgICAgICAgICAgICBjYXRlZ29yeS5jYXRlZ29yeU5hbWUgfCB0aXRsZWNhc2UgfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTW9iaWxlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImxlZnQtYXJyb3dcIiAoY2xpY2spPVwic2Nyb2xsTGVmdCgpXCIgKm5nSWY9XCJzaG93TGVmdEFycm93ICYmIGNhdGVnb3J5TGlzdD8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24+a2V5Ym9hcmRfYXJyb3dfbGVmdDwvbWF0LWljb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0LWFycm93XCIgKGNsaWNrKT1cInNjcm9sbFJpZ2h0KClcIiAqbmdJZj1cInNob3dSaWdodEFycm93ICYmIGNhdGVnb3J5TGlzdD8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24+a2V5Ym9hcmRfYXJyb3dfcmlnaHQ8L21hdC1pY29uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJwcm9kdWN0LWxpc3QgcG9zaXRpb24tcmVsYXRpdmVcIiAjY29udGFpbmVyICpuZ0lmPVwiZGF0YUxpc3QubGVuZ3RoXCJcclxuICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5cclxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImQtZmxleCBvdmVyZmxvdy1zY3JvbGxcIiBpZD1cInByb2R1Y3RTY3JvbGxCYXJcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2YgZGF0YUxpc3RcIj5cclxuICAgICAgICAgICAgPHNpbXBvLXNtYWxsLXByb2R1Y3QtbGlzdGluZyBbcHJvZHVjdF09XCJwcm9kdWN0XCIgW2RhdGFdPVwiZGF0YVwiIFtpc1Njcm9sbGFibGVdPVwidHJ1ZVwiPjwvc2ltcG8tc21hbGwtcHJvZHVjdC1saXN0aW5nPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICA8L3NlY3Rpb24+XHJcbiAgICA8L3NlY3Rpb24+XHJcbiAgPC9zZWN0aW9uPlxyXG4gIDxkaXYgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBlZGl0fVwiICpuZ0lmPVwic2hvd0VkaXRvcnNcIj5cclxuICAgIDxzaW1wby1ob3Zlci1lbGVtZW50cyBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCIgW2VkaXRPcHRpb25zXT1cImVkaXRcIj48L3NpbXBvLWhvdmVyLWVsZW1lbnRzPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJzaG93RGVsZXRlXCIgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBkZWxldGV9XCI+XHJcbiAgICA8c2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiPjwvc2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQ+XHJcbiAgPC9kaXY+XHJcbjwvc2VjdGlvbj5cclxuPG5nLXRlbXBsYXRlICNsb2FkaW5nVGVtcGxhdGU+XHJcbiAgPG5neC1za2VsZXRvbi1sb2FkZXIgY291bnQ9XCIxXCIgYXBwZWFyYW5jZT1cImNpcmNsZVwiIFt0aGVtZV09XCJ7XHJcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcclxuICAgICAgICBoZWlnaHQ6ICc0MHZoJyxcclxuICAgICAgICAnYm9yZGVyLXJhZGl1cyc6ICcxMHB4JyxcclxuICAgICAgICAncG9zaXRpb24nOiAncmVsYXRpdmUnLFxyXG4gICAgICAgICdyaWdodCc6ICc1cHgnXHJcbiAgICB9XCI+XHJcbiAgPC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|
211
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnktcHJvZHVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2Vjb21tZXJjZS9zZWN0aW9ucy9jYXRlZ29yeS1wcm9kdWN0L2NhdGVnb3J5LXByb2R1Y3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvY2F0ZWdvcnktcHJvZHVjdC9jYXRlZ29yeS1wcm9kdWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJaEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBRzdGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRXBGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLFdBQVcsTUFBTSwrQkFBK0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFHNUUsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDMUcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFL0UsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1B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WSwyWkFDWixPQUFPLDJJQUdQLDRCQUE0Qiw2SkFDNUIsbUJBQW1CLDBHQUNuQixjQUFjLGdGQUNkLG1CQUFtQixrRkFDbkIsb0JBQW9CLCtnQkFDcEIsZ0JBQWdCLHFEQUNoQiwwQkFBMEIsK0ZBQzFCLDJCQUEyQjs7MkZBS2xCLHdCQUF3QjtrQkFwQnBDLFNBQVM7K0JBQ0Usd0JBQXdCLGNBQ3RCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLE9BQU87d0JBQ1AsZ0NBQWdDO3dCQUNoQyx5QkFBeUI7d0JBQ3pCLDRCQUE0Qjt3QkFDNUIsbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsb0JBQW9CO3dCQUNwQixnQkFBZ0I7d0JBQ2hCLDBCQUEwQjt3QkFDMUIsMkJBQTJCO3FCQUM1QjtzSUFNUSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFFa0IsWUFBWTtzQkFBbkMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2F0ZWdvcnlQcm9kdWN0Q29udGVudE1vZGFsLCBDYXRlZ29yeVByb2R1Y3RNb2RhbCwgQ2F0ZWdvcnlQcm9kdWN0U3R5bGVzTW9kZWwgfSBmcm9tICcuL2NhdGVnb3J5LXByb2R1Y3QubW9kZWwnO1xyXG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3Jlc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgRmVhdHVyZWRQcm9kdWN0c0NvbXBvbmVudCB9IGZyb20gJy4uL2ZlYXR1cmVkLXByb2R1Y3RzL2ZlYXR1cmVkLXByb2R1Y3RzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENhdGVnb3J5IH0gZnJvbSAnLi4vLi4vc3R5bGVzL2NhdGVnb3J5Lm1vZGFsJztcclxuaW1wb3J0IHsgSXRlbVZhcmlhbnQsIFByb2R1Y3QgfSBmcm9tICcuLi8uLi9zdHlsZXMvcHJvZHVjdC5tb2RhbCc7XHJcbmltcG9ydCB7IEZlYXR1cmVkUHJvZHVjdE1vZGFsIH0gZnJvbSAnLi4vZmVhdHVyZWQtcHJvZHVjdHMvZmVhdHVyZWQtcHJvZHVjdHMubW9kYWwnO1xyXG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NhcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IE9yZGVyZWRJdGVtcyB9IGZyb20gJy4uLy4uL3N0eWxlcy9PcmRlcmVkSXRlbXMubW9kYWwnO1xyXG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vLi4vLi4vc2VjdGlvbnMvQmFzZVNlY3Rpb24nO1xyXG5pbXBvcnQgeyBCYWNrZ3JvdW5kRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2JhY2tncm91bmQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgSG92ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvaG92ZXItZWxlbWVudC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBIb3ZlckVsZW1lbnRzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9ob3Zlci1lbGVtZW50cy9ob3Zlci1lbGVtZW50cy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEZWxldGVIb3ZlckVsZW1lbnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2RlbGV0ZS1ob3Zlci1lbGVtZW50L2RlbGV0ZS1ob3Zlci1lbGVtZW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBvc2l0aW9uTGF5b3V0RGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL3Bvc2l0aW9uLWxheW91dC1kaXJlY3RpdmUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2ltcG9Db21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2luZGV4JztcclxuaW1wb3J0IHsgQ29udGVudEZpdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50LWZpdC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFNtYWxsUHJvZHVjdExpc3RpbmdDb21wb25lbnQgfSBmcm9tICcuLi9zbWFsbC1wcm9kdWN0LWxpc3Rpbmcvc21hbGwtcHJvZHVjdC1saXN0aW5nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNhbml0aXplSHRtbFBpcGUgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zYW5pdGl6ZUh0bWwnO1xyXG5pbXBvcnQgeyBTcGFjaW5nSG9yaXpvbnRhbERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9zcGFjaW5nLWhvcml6b250YWwuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTGF5T3V0TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zdHlsZXMvc3R5bGUubW9kZWwnO1xyXG5pbXBvcnQgeyBDYXJkU2tlbGV0b25Mb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9lbGVtZW50cy9jYXJkLXNrZWxldG9uLWxvYWRlci9jYXJkLXNrZWxldG9uLWxvYWRlci5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzaW1wby1jYXRlZ29yeS1wcm9kdWN0JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIE1hdEljb24sXHJcbiAgICBQb3NpdGlvbkxheW91dERpcmVjdGl2ZURpcmVjdGl2ZSxcclxuICAgIEZlYXR1cmVkUHJvZHVjdHNDb21wb25lbnQsXHJcbiAgICBTbWFsbFByb2R1Y3RMaXN0aW5nQ29tcG9uZW50LFxyXG4gICAgQmFja2dyb3VuZERpcmVjdGl2ZSxcclxuICAgIEhvdmVyRGlyZWN0aXZlLFxyXG4gICAgQ29udGVudEZpdERpcmVjdGl2ZSxcclxuICAgIFNpbXBvQ29tcG9uZW50TW9kdWxlLFxyXG4gICAgU2FuaXRpemVIdG1sUGlwZSxcclxuICAgIFNwYWNpbmdIb3Jpem9udGFsRGlyZWN0aXZlLFxyXG4gICAgQ2FyZFNrZWxldG9uTG9hZGVyQ29tcG9uZW50XHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2F0ZWdvcnktcHJvZHVjdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2NhdGVnb3J5LXByb2R1Y3QuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIENhdGVnb3J5UHJvZHVjdENvbXBvbmVudCBleHRlbmRzIEJhc2VTZWN0aW9uIGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCkgZGF0YT86IENhdGVnb3J5UHJvZHVjdE1vZGFsO1xyXG4gIEBJbnB1dCgpIGluZGV4PyA6IG51bWJlcjtcclxuICBASW5wdXQoKSBlZGl0PyA6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZGVsZXRlPyA6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgY3VzdG9tQ2xhc3M/OiBzdHJpbmc7XHJcbiAgcHVibGljIGFwaUxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKFwiY29udGFpbmVyXCIpIGNvbnRhaW5lclJlZjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4gfCB1bmRlZmluZWQ7XHJcblxyXG4gIHN0eWxlcz86IENhdGVnb3J5UHJvZHVjdFN0eWxlc01vZGVsO1xyXG4gIGNvbnRlbnQ/OiBDYXRlZ29yeVByb2R1Y3RDb250ZW50TW9kYWw7XHJcbiAgc2VsZWN0Q2F0ZWdvcnlJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgY2F0ZWdvcnlMaXN0OiBDYXRlZ29yeVtdID0gW107XHJcbiAgcHJpdmF0ZSBVU0VSX0NBUlQ6IE9yZGVyZWRJdGVtc1tdIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXN0U2VydmljZTogUmVzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2V2ZW50U2VydmljZTogRXZlbnRzU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIGZlYXR1cmVQcm9kdWN0RGF0YTogRmVhdHVyZWRQcm9kdWN0TW9kYWwgfCBudWxsID0gbnVsbDtcclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZmVhdHVyZVByb2R1Y3REYXRhID0gbmV3IEZlYXR1cmVkUHJvZHVjdE1vZGFsKHRoaXMuZGF0YSk7XHJcbiAgICB0aGlzLnN0eWxlcyA9IHRoaXMuZGF0YT8uc3R5bGVzO1xyXG4gICAgdGhpcy5jb250ZW50ID0gdGhpcy5kYXRhPy5jb250ZW50O1xyXG4gICAgdGhpcy5nZXRBbGxDYXRlZ29yaWVzQnlJZCgpO1xyXG4gICAgdGhpcy5fZXZlbnRTZXJ2aWNlLmNhdGVnb3J5UHJvZHVjdExpc3Quc3Vic2NyaWJlKCgpPT4ge1xyXG4gICAgICB0aGlzLmdldEFsbENhdGVnb3JpZXNCeUlkKCk7XHJcbiAgICB9KVxyXG4gIH1cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlQXJyb3dzKCksIDIwMDApXHJcbiAgfVxyXG5cclxuICBnZXRBbGxDYXRlZ29yaWVzQnlJZCgpIHtcclxuICAgIGlmICghdGhpcy5kYXRhPy5jb250ZW50LmNvbGxlY3Rpb25JZClcclxuICAgICAgcmV0dXJuO1xyXG4gICAgdGhpcy5hcGlMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0Q2F0ZWdvcmllc0J5Q29sbGVjdGlvbklkKHRoaXMuZGF0YT8uY29udGVudC5jb2xsZWN0aW9uSWQpLnN1YnNjcmliZSgocmVzcG9uc2UpPT4ge1xyXG4gICAgICB0aGlzLmNhdGVnb3J5TGlzdCA9IHJlc3BvbnNlO1xyXG4gICAgICB0aGlzLmFwaUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zZWxlY3RDYXRlZ29yeSh0aGlzLmNhdGVnb3J5TGlzdFswXS5jYXRlZ29yeUlkKTtcclxuICAgIH0pXHJcbiAgfVxyXG4gIGRhdGFMaXN0OiBQcm9kdWN0W10gPSBbXTtcclxuICBzZWxlY3RDYXRlZ29yeShjYXRlZ29yeUlkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2VsZWN0Q2F0ZWdvcnlJZCA9IGNhdGVnb3J5SWQ7XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFByb2R1Y3RCeUNhdGVnb3J5SWQoY2F0ZWdvcnlJZCkuc3Vic2NyaWJlKChyZXNwb25zZSk9PiB7XHJcbiAgICAgIHRoaXMuZGF0YUxpc3QgPSByZXNwb25zZS5kYXRhO1xyXG5cclxuICAgICAgbGV0IHByb2R1Y3RTY3JvbGxTZWN0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Byb2R1Y3RTY3JvbGxCYXInKTtcclxuICAgICAgaWYocHJvZHVjdFNjcm9sbFNlY3Rpb24pXHJcbiAgICAgICAgcHJvZHVjdFNjcm9sbFNlY3Rpb24uc2Nyb2xsTGVmdCA9IDBcclxuICAgIH0pXHJcbiAgfVxyXG4gIGFkZEl0ZW1Ub0NhcnQocHJvZHVjdDogUHJvZHVjdCwgdHlwZTogJ0FERCcgfCAnU1VCU1RSQUNUJykge1xyXG4gICAgLy8gaWYgKHRoaXMuaXNJdGVtT3V0T2ZTdG9jayhwcm9kdWN0KSkge1xyXG4gICAgLy8gICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnd2FybicsIHN1bW1hcnk6ICdDYXJ0JywgZGV0YWlsOiAnSXRlbSBpcyBub3QgYXZhaWxhYmxlIGFzIG9mIG5vdy4gV2Ugd2lsbCBub3RpZnkgeW91IG9uY2UgYXZhaWxhYmxlJyB9KTtcclxuICAgIC8vICAgcmV0dXJuO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIGlmICghcHJvZHVjdD8ucXVhbnRpdHkpXHJcbiAgICAgIHByb2R1Y3QucXVhbnRpdHkgPSAwO1xyXG4gICAgaWYgKHR5cGUgPT0gJ0FERCcpIHtcclxuICAgICAgcHJvZHVjdC5xdWFudGl0eSArPSAxO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHByb2R1Y3QucXVhbnRpdHkgLT0gMTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocHJvZHVjdD8uaXRlbVZhcmlhbnQ/Lmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBpdGVtVmFyaWVudDogSXRlbVZhcmlhbnQgfCBudWxsID0gdGhpcy5nZXRJdGVtVmFyaWVudChwcm9kdWN0LCBwcm9kdWN0LnZhcmllbnRJZCk7XHJcbiAgICAgIGlmIChpdGVtVmFyaWVudCkge1xyXG4gICAgICAgIGl0ZW1WYXJpZW50LnF1YW50aXR5ID0gcHJvZHVjdC5xdWFudGl0eTtcclxuICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZEl0ZW1Ub0NhcnQocHJvZHVjdCwgaXRlbVZhcmllbnQudmFyaWFudElkKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jYXJ0U2VydmljZS5hZGRJdGVtVG9DYXJ0KHByb2R1Y3QpO1xyXG4gICAgfVxyXG4gICAgaWYgKHByb2R1Y3QucXVhbnRpdHkpIHtcclxuICAgICAgbGV0IGlzUHJlc2VudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgICB0aGlzLlVTRVJfQ0FSVD8uZm9yRWFjaCgoaXRlbTogT3JkZXJlZEl0ZW1zKSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0udmFyaWVudElkID09IHByb2R1Y3QudmFyaWVudElkKSB7XHJcbiAgICAgICAgICBpdGVtLnF1YW50aXR5ID0gcHJvZHVjdC5xdWFudGl0eTtcclxuICAgICAgICAgIGlzUHJlc2VudCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICBpZiAoIWlzUHJlc2VudClcclxuICAgICAgICB0aGlzLlVTRVJfQ0FSVD8ucHVzaChuZXcgT3JkZXJlZEl0ZW1zKHByb2R1Y3QsIHByb2R1Y3QudmFyaWVudElkKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLlVTRVJfQ0FSVCA9IHRoaXMuVVNFUl9DQVJUPy5maWx0ZXIoKGl0ZW06IE9yZGVyZWRJdGVtcykgPT4gaXRlbS52YXJpZW50SWQgIT0gcHJvZHVjdC52YXJpZW50SWQpID8/IFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0SXRlbVZhcmllbnQocHJvZHVjdDogUHJvZHVjdCwgdmFyaWVudElkOiBzdHJpbmcpOiBJdGVtVmFyaWFudCB8IG51bGwge1xyXG4gICAgbGV0IHNlbGVjdGVkVmFyaWVudDogSXRlbVZhcmlhbnQgfCBudWxsID0gbnVsbDtcclxuICAgIHByb2R1Y3Q/Lml0ZW1WYXJpYW50Py5mb3JFYWNoKCh2YXJpZW50OiBJdGVtVmFyaWFudCkgPT4ge1xyXG4gICAgICBpZiAodmFyaWVudC52YXJpYW50SWQgPT0gdmFyaWVudElkKVxyXG4gICAgICAgIHNlbGVjdGVkVmFyaWVudCA9IHZhcmllbnQ7XHJcbiAgICB9KVxyXG5cclxuICAgIHJldHVybiBzZWxlY3RlZFZhcmllbnQ7XHJcbiAgfVxyXG4gIGdldFBlcmNlbnRhZ2UocHJvZHVjdDogUHJvZHVjdCkge1xyXG4gICAgcmV0dXJuICgocHJvZHVjdC5wcmljZS5zZWxsaW5nUHJpY2UgLSBwcm9kdWN0LnByaWNlLmRpc2NvdW50ZWRQcmljZSkgLyAxMDApLnRvRml4ZWQoMCk7XHJcbiAgfVxyXG4gIGdldFN1cHBvcnRpbmdDb2xvcihjb2xvcjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCBoZXggPSBjb2xvcjtcclxuICAgIGlmICghaGV4KVxyXG4gICAgICByZXR1cm4gY29sb3I7XHJcbiAgICBoZXggPSBoZXgucmVwbGFjZSgvXiMvLCAnJyk7XHJcblxyXG4gICAgbGV0IGJpZ2ludCA9IHBhcnNlSW50KGhleCwgMTYpO1xyXG4gICAgbGV0IHIgPSAoYmlnaW50ID4+IDE2KSAmIDI1NTtcclxuICAgIGxldCBnID0gKGJpZ2ludCA+PiA4KSAmIDI1NTtcclxuICAgIGxldCBiID0gYmlnaW50ICYgMjU1O1xyXG5cclxuICAgIHJldHVybiBgcmdiYSgke3J9LCAke2d9LCAke2J9LCAwLjQpYDtcclxuICB9XHJcblxyXG5cclxuICBzY3JvbGxSaWdodCgpIHtcclxuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuY29udGFpbmVyUmVmPy5uYXRpdmVFbGVtZW50O1xyXG4gICAgaWYgKGNvbnRhaW5lcikge1xyXG4gICAgICBsZXQgc2Nyb2xsQW1vdW50ID0gMDtcclxuICAgICAgY29uc3Qgc2xpZGVUaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICBjb250YWluZXIuc2Nyb2xsTGVmdCArPSBjb250YWluZXIuY2xpZW50V2lkdGggLyAxMjtcclxuICAgICAgICBzY3JvbGxBbW91bnQgKz0gY29udGFpbmVyLmNsaWVudFdpZHRoIC8gMTI7XHJcbiAgICAgICAgaWYgKHNjcm9sbEFtb3VudCA+PSBjb250YWluZXIuY2xpZW50V2lkdGggLyAyKSB7XHJcbiAgICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChzbGlkZVRpbWVyKTtcclxuICAgICAgICAgIHRoaXMudXBkYXRlQXJyb3dzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAyNSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNjcm9sbExlZnQoKSB7XHJcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lclJlZj8ubmF0aXZlRWxlbWVudDtcclxuICAgIGlmIChjb250YWluZXIpIHtcclxuICAgICAgbGV0IHNjcm9sbEFtb3VudCA9IDA7XHJcbiAgICAgIGNvbnN0IHNsaWRlVGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgY29udGFpbmVyLnNjcm9sbExlZnQgLT0gY29udGFpbmVyLmNsaWVudFdpZHRoIC8gMTI7XHJcbiAgICAgICAgc2Nyb2xsQW1vdW50ICs9IGNvbnRhaW5lci5jbGllbnRXaWR0aCAvIDEyO1xyXG4gICAgICAgIGlmIChzY3JvbGxBbW91bnQgPj0gY29udGFpbmVyLmNsaWVudFdpZHRoIC8gMikge1xyXG4gICAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwoc2xpZGVUaW1lcik7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZUFycm93cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgMjUpO1xyXG4gICAgfVxyXG4gIH1cclxuICBzaG93UmlnaHRBcnJvdyA9IHRydWU7XHJcbiAgc2hvd0xlZnRBcnJvdyA9IGZhbHNlO1xyXG4gIHVwZGF0ZUFycm93cygpIHtcclxuICAgIGNvbnN0IGVsID0gdGhpcy5jb250YWluZXJSZWY/Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBpZiAoZWwpIHtcclxuICAgICAgdGhpcy5zaG93UmlnaHRBcnJvdyA9IChlbC5zY3JvbGxXaWR0aCAtIGVsLnNjcm9sbExlZnQgLSBlbC5jbGllbnRXaWR0aCkgPj0gMTtcclxuICAgICAgdGhpcy5zaG93TGVmdEFycm93ID0gZWwuc2Nyb2xsTGVmdCA+IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZWRpdFNlY3Rpb24oKXtcclxuXHJcbiAgICB0aGlzLl9ldmVudFNlcnZpY2UudG9nZ2xlRWRpdG9yRXZlbnQuZW1pdChmYWxzZSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpPT4ge1xyXG4gICAgICB0aGlzLl9ldmVudFNlcnZpY2UuZWRpdFNlY3Rpb24uZW1pdCh7ZGF0YTp0aGlzLmRhdGF9KTtcclxuICAgIH0sIDEwMCk7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNNb2JpbGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gd2luZG93LmlubmVyV2lkdGggPD0gNDc1O1xyXG4gIH1cclxuICBnZXQgZ2V0U3BhY2luZ0xheW91dCgpIHtcclxuICAgIHJldHVybiB7Li4udGhpcy5zdHlsZXM/LmxheW91dH0gYXMgTGF5T3V0TW9kZWw7XHJcbiAgfVxyXG59XHJcbiIsIjxzZWN0aW9uIGNsYXNzPVwidG90YWwtY29udGFpbmVyXCIgW2lkXT1cImRhdGE/LmlkXCIgc2ltcG9Ib3ZlciAoaG92ZXJpbmcpPVwic2hvd0VkaXRUYWJzKCRldmVudClcIiAoY2xpY2spPVwiZWRpdFNlY3Rpb24oKVwiIFthdHRyLnN0eWxlXT1cImN1c3RvbUNsYXNzXCI+XHJcbiAgPHNlY3Rpb24gY2xhc3M9XCJjb250YWluZXItZmx1aWQgZC1ibG9ja1wiIFtpZF09XCJkYXRhPy5pZFwiXHJcbiAgICBbc2ltcG9CYWNrZ3JvdW5kXT1cInN0eWxlcz8uYmFja2dyb3VuZFwiIFtzaW1wb0xheW91dF09XCJzdHlsZXM/LmxheW91dFwiIFtzcGFjaW5nSG9yaXpvbnRhbF09XCJnZXRTcGFjaW5nTGF5b3V0XCI+XHJcbiAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGE/LmNvbnRlbnQ/LmlucHV0VGV4dFwiPlxyXG4gICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiaXRlbS52YWx1ZSB8IHNhbml0aXplSHRtbFwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiaXRlbS5sYWJlbCA9PT0gJ0hlYWRpbmcnID8gJ2hlYWRpbmctbGFyZ2UgbGgtMiBtYi0zJyA6ICdib2R5LWxhcmdlJ1wiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJtLWF1dG8gcG9zaXRpb24tcmVsYXRpdmUgdy0xMDBcIiBbbmdDbGFzc109XCJ7J2FkanVzdFBvc2l0aW9uJzogaXNNb2JpbGV9XCI+XHJcbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2F0ZWdvcnkgb2YgY2F0ZWdvcnlMaXN0OyBsZXQgaWR4ID0gaW5kZXhcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIGNhdGVnb3J5LXRhZyBwb3NpdGlvbi1yZWxhdGl2ZVwiIHN0eWxlPVwiZ2FwOiA1cHg7XCJcclxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJzZWxlY3RDYXRlZ29yeUlkID09PSBjYXRlZ29yeS5jYXRlZ29yeUlkID8gZ2V0U3VwcG9ydGluZ0NvbG9yKHN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3IgPz8gJyMwMDAwMDAnKSA6ICcnXCJcclxuICAgICAgICAgICAgW3N0eWxlLmJvcmRlckNvbG9yXT1cInNlbGVjdENhdGVnb3J5SWQgPT0gY2F0ZWdvcnkuY2F0ZWdvcnlJZCA/IHN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3IgOiAgJydcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0Q2F0ZWdvcnkoY2F0ZWdvcnkuY2F0ZWdvcnlJZClcIj5cclxuICAgICAgICAgICAgPGltZyBbc3JjXT1cImNhdGVnb3J5LmltZ1VybFswXVwiIGFsdD1cIlwiIGhlaWdodD1cIjMwcHhcIiB3aWR0aD1cIjMwcHhcIiBzdHlsZT1cImJvcmRlci1yYWRpdXM6IDUwJTtcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0cmltLXRleHRcIiBzdHlsZT1cImZvbnQtc2l6ZTogLjgxMjVyZW07IHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1wiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInNlbGVjdENhdGVnb3J5SWQgPT09IGNhdGVnb3J5LmNhdGVnb3J5SWQgPyAoc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvcikgOiAnJ1wiPnt7XHJcbiAgICAgICAgICAgICAgY2F0ZWdvcnkuY2F0ZWdvcnlOYW1lIHwgdGl0bGVjYXNlIH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc01vYmlsZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0LWFycm93XCIgKGNsaWNrKT1cInNjcm9sbExlZnQoKVwiICpuZ0lmPVwic2hvd0xlZnRBcnJvdyAmJiBjYXRlZ29yeUxpc3Q/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uPmtleWJvYXJkX2Fycm93X2xlZnQ8L21hdC1pY29uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodC1hcnJvd1wiIChjbGljayk9XCJzY3JvbGxSaWdodCgpXCIgKm5nSWY9XCJzaG93UmlnaHRBcnJvdyAmJiBjYXRlZ29yeUxpc3Q/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uPmtleWJvYXJkX2Fycm93X3JpZ2h0PC9tYXQtaWNvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwicHJvZHVjdC1saXN0IHBvc2l0aW9uLXJlbGF0aXZlXCIgW3N0eWxlLmJvcmRlclRvcExlZnRSYWRpdXMucHhdPScoc2VsZWN0Q2F0ZWdvcnlJZCA9PT0gY2F0ZWdvcnlMaXN0Py5bMF0/LmNhdGVnb3J5SWQpID8gMCA6IDgnICNjb250YWluZXIgKm5nSWY9XCJkYXRhTGlzdC5sZW5ndGhcIlxyXG4gICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPlxyXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiZC1mbGV4IG92ZXJmbG93LXNjcm9sbFwiIGlkPVwicHJvZHVjdFNjcm9sbEJhclwiICpuZ0lmPVwiIWFwaUxvYWRpbmdcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2YgZGF0YUxpc3RcIj5cclxuICAgICAgICAgICAgPHNpbXBvLXNtYWxsLXByb2R1Y3QtbGlzdGluZyBbcHJvZHVjdF09XCJwcm9kdWN0XCIgW2RhdGFdPVwiZGF0YVwiIFtpc1Njcm9sbGFibGVdPVwidHJ1ZVwiPjwvc2ltcG8tc21hbGwtcHJvZHVjdC1saXN0aW5nPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgIDxzaW1wby1jYXJkLXNrZWxldG9uLWxvYWRlciAgKm5nSWY9XCJhcGlMb2FkaW5nXCI+PC9zaW1wby1jYXJkLXNrZWxldG9uLWxvYWRlcj5cclxuICAgICAgPC9zZWN0aW9uPlxyXG4gICAgPC9zZWN0aW9uPlxyXG4gIDwvc2VjdGlvbj5cclxuICA8ZGl2IFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZWRpdH1cIiAqbmdJZj1cInNob3dFZGl0b3JzXCI+XHJcbiAgICA8c2ltcG8taG92ZXItZWxlbWVudHMgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiIFtlZGl0T3B0aW9uc109XCJlZGl0XCI+PC9zaW1wby1ob3Zlci1lbGVtZW50cz5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwic2hvd0RlbGV0ZVwiIFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZGVsZXRlfVwiPlxyXG4gICAgPHNpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50IFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIj48L3NpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50PlxyXG4gIDwvZGl2PlxyXG48L3NlY3Rpb24+XHJcbjxuZy10ZW1wbGF0ZSAjbG9hZGluZ1RlbXBsYXRlPlxyXG4gIDxuZ3gtc2tlbGV0b24tbG9hZGVyIGNvdW50PVwiMVwiIGFwcGVhcmFuY2U9XCJjaXJjbGVcIiBbdGhlbWVdPVwie1xyXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICAgICAgaGVpZ2h0OiAnNDB2aCcsXHJcbiAgICAgICAgJ2JvcmRlci1yYWRpdXMnOiAnMTBweCcsXHJcbiAgICAgICAgJ3Bvc2l0aW9uJzogJ3JlbGF0aXZlJyxcclxuICAgICAgICAncmlnaHQnOiAnNXB4J1xyXG4gICAgfVwiPlxyXG4gIDwvbmd4LXNrZWxldG9uLWxvYWRlcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|
package/esm2022/lib/ecommerce/sections/product-category-list/product-category-list.component.mjs
CHANGED
@@ -13,6 +13,7 @@ import { ContentFitDirective } from '../../../directive/content-fit-directive';
|
|
13
13
|
import { SanitizeHtmlPipe } from '../../../services/sanitizeHtml';
|
14
14
|
import { SpacingHorizontalDirective } from '../../../directive/spacing-horizontal.directive';
|
15
15
|
import { ContentTitleDirective } from '../../../directive/content-title-spacing.directive';
|
16
|
+
import { CardSkeletonLoaderComponent } from '../../../elements/card-skeleton-loader/card-skeleton-loader.component';
|
16
17
|
import * as i0 from "@angular/core";
|
17
18
|
import * as i1 from "../../../services/rest.service";
|
18
19
|
import * as i2 from "../../../services/cart.service";
|
@@ -30,6 +31,7 @@ export class ProductCategoryListComponent extends BaseSection {
|
|
30
31
|
this.productList = [];
|
31
32
|
this.USER_CART = [];
|
32
33
|
this.selectedCategory = null;
|
34
|
+
this.apiLoading = false;
|
33
35
|
this.collectionId = null;
|
34
36
|
}
|
35
37
|
ngOnInit() {
|
@@ -44,8 +46,10 @@ export class ProductCategoryListComponent extends BaseSection {
|
|
44
46
|
getAllCategoriesById() {
|
45
47
|
if (!this.collectionId)
|
46
48
|
return;
|
49
|
+
this.apiLoading = true;
|
47
50
|
this.restService.getCategoriesByCollectionId(this.collectionId).subscribe((response) => {
|
48
51
|
this.categories = response;
|
52
|
+
this.apiLoading = false;
|
49
53
|
if (this.categories.length > 0)
|
50
54
|
this.selectCategory(this.categories[0]);
|
51
55
|
});
|
@@ -131,7 +135,7 @@ export class ProductCategoryListComponent extends BaseSection {
|
|
131
135
|
return BUSINESS_CONSTANTS.CURRENCY;
|
132
136
|
}
|
133
137
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ProductCategoryListComponent, deps: [{ token: i1.RestService }, { token: i2.CartService }, { token: i3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
134
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: ProductCategoryListComponent, isStandalone: true, selector: "simpo-product-category-list", inputs: { responseData: "responseData", data: "data", index: "index", edit: "edit", delete: "delete", customClass: "customClass" }, usesInheritance: true, ngImport: i0, template: "<section class=\"d-flex\" [id]=\"data?.id\" simpoHover (hovering)=\"showEditTabs($event)\"\r\n [simpoBackground]=\"styles?.background\" [simpoLayout]=\"styles?.layout\" [ngClass]=\"{'removeAllPadding justify-content-between': isMobile}\" [attr.style]=\"customClass\">\r\n <div class=\"filter-panel\">\r\n <ng-container *ngFor=\"let category of categories\">\r\n <div class=\"category\" [style.backgroundColor]=\"(category.categoryId == selectedCategory?.categoryId) ? getSupportingColor(styles?.background?.accentColor ?? '#000000') : ''\" [style.borderColor]=\"(category.categoryId == selectedCategory?.categoryId) ? styles?.background?.accentColor : ''\"\r\n (click)=\"selectCategory(category)\">\r\n <div class=\"product-img\">\r\n <img [src]=\"category.imgUrl?.[0]\" alt=\"\" onerror=\"this.src='https://i.postimg.cc/hPS2JpV0/no-image-available.jpg'\">\r\n </div>\r\n <span class=\"trim-text\" [style.fontWeight]=\"(category.categoryId == selectedCategory?.categoryId) ? '700' : ''\">{{ category.categoryName }}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"product-list-container\" [simpoBackground]=\"styles?.background\">\r\n <h2 [simpoContentTitleSpace]=\"headingSpace\" *ngIf=\"!isMobile\">Buy {{ selectedCategory?.categoryName | titlecase }} Online</h2>\r\n\r\n <section class=\"d-flex product-list\">\r\n <ng-container *ngFor=\"let product of productList\">\r\n <simpo-small-product-listing [product]=\"product\" [data]=\"data\" [isScrollable]=\"true\" [isCategoryProductList]=\"true\" [style.width.%]=\"isMobile ? '48' : ''\"></simpo-small-product-listing>\r\n </ng-container>\r\n </section>\r\n </div>\r\n</section>\r\n<div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n</div>\r\n<div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n</div>\r\n", styles: [".filter-panel{border-right:2px solid rgba(211,211,211,.297);width:18%}.removeAllPadding{padding:0!important}.category{display:flex;align-items:center;gap:10px;padding:10px;border-left:5px solid transparent;cursor:pointer}.product-img{height:45px;width:45px;padding:0;border-radius:50%;background-color:#d3d3d3}.product-img img{height:100%;width:100%;border-radius:50%}.product-list-container{padding:0 20px;width:80%}.product-list{overflow:auto;flex-wrap:wrap;height:90vh;border-radius:0 10px 10px/0px 10px 10px;gap:8px}.product{position:relative;display:flex;flex-direction:column;cursor:pointer;border-radius:10px;overflow:hidden;min-width:195px;max-width:195px;margin:10px;background-color:#fff}.product .prod-img{position:relative;height:200px;width:100%;overflow:hidden}.product .prod-img img{height:100%;width:100%;object-fit:cover}.product img:hover{-webkit-animation:scale-up-center .2s linear both;animation:scale-up-center .2s linear both}.styling{height:30px;width:30px;border-radius:50%;background-color:#fff;position:absolute;bottom:0;right:-12px}.strike-through{text-decoration:line-through;color:#d3d3d3;font-size:12px;margin-left:5px;position:relative}.add-to-cart{width:100%;cursor:pointer;background-color:#fff;border:1.5px solid #EF4C7B;border-radius:5px;color:#ef4c7b;padding:5px;text-align:center;display:flex;align-items:center}.add-to-cart .quantity-btn{background-color:#fb8dac7d;padding:5px 10px;font-weight:700}.add-to-cart .quantity{color:#ef4c7b}.discount{position:absolute;top:0;padding:5px;width:60px;text-align:center;font-size:12px;border-bottom-right-radius:3px}@-webkit-keyframes scale-up-center{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(1.08);transform:scale(1.08)}}@keyframes scale-up-center{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(1.08);transform:scale(1.08)}}@media screen and (max-width: 475px){.product-list-container{padding:5px!important}.category{flex-direction:column!important;padding:5px!important;border-left:none!important}.category .trim-text{text-align:center!important}.product{min-width:135px!important;max-width:135px!important;margin-left:0!important;margin-right:8px!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.TitleCasePipe, name: "titlecase" }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i5.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "component", type: i6.DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "component", type: SmallProductListingComponent, selector: "simpo-small-product-listing", inputs: ["product", "data", "isScrollable", "isCategoryProductList", "customClass"] }, { kind: "directive", type: BackgroundDirective, selector: "[simpoBackground]", inputs: ["simpoBackground", "scrollValue"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }, { kind: "directive", type: ContentTitleDirective, selector: "[simpoContentTitleSpace]", inputs: ["simpoContentTitleSpace"] }] }); }
|
138
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: ProductCategoryListComponent, isStandalone: true, selector: "simpo-product-category-list", inputs: { responseData: "responseData", data: "data", index: "index", edit: "edit", delete: "delete", customClass: "customClass" }, usesInheritance: true, ngImport: i0, template: "<section class=\"d-flex\" [id]=\"data?.id\" simpoHover (hovering)=\"showEditTabs($event)\"\r\n [simpoBackground]=\"styles?.background\" [simpoLayout]=\"styles?.layout\" [ngClass]=\"{'removeAllPadding justify-content-between': isMobile}\" [attr.style]=\"customClass\">\r\n <div class=\"filter-panel\">\r\n <ng-container *ngFor=\"let category of categories\">\r\n <div class=\"category\" [style.backgroundColor]=\"(category.categoryId == selectedCategory?.categoryId) ? getSupportingColor(styles?.background?.accentColor ?? '#000000') : ''\" [style.borderColor]=\"(category.categoryId == selectedCategory?.categoryId) ? styles?.background?.accentColor : ''\"\r\n (click)=\"selectCategory(category)\">\r\n <div class=\"product-img\">\r\n <img [src]=\"category.imgUrl?.[0]\" alt=\"\" onerror=\"this.src='https://i.postimg.cc/hPS2JpV0/no-image-available.jpg'\">\r\n </div>\r\n <span class=\"trim-text\" [style.fontWeight]=\"(category.categoryId == selectedCategory?.categoryId) ? '700' : ''\">{{ category.categoryName }}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"product-list-container\" [simpoBackground]=\"styles?.background\">\r\n <h2 [simpoContentTitleSpace]=\"headingSpace\" *ngIf=\"!isMobile\">Buy {{ selectedCategory?.categoryName | titlecase }} Online</h2>\r\n\r\n <section class=\"d-flex product-list\" *ngIf=\"!apiLoading\">\r\n <ng-container *ngFor=\"let product of productList\">\r\n <simpo-small-product-listing [product]=\"product\" [data]=\"data\" [isScrollable]=\"true\" [isCategoryProductList]=\"true\" [style.width.%]=\"isMobile ? '48' : ''\"></simpo-small-product-listing>\r\n </ng-container>\r\n </section>\r\n <simpo-card-skeleton-loader *ngIf=\"apiLoading\"></simpo-card-skeleton-loader>\r\n </div>\r\n</section>\r\n<div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n</div>\r\n<div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n</div>\r\n", styles: [".filter-panel{border-right:2px solid rgba(211,211,211,.297);width:18%}.removeAllPadding{padding:0!important}.category{display:flex;align-items:center;gap:10px;padding:10px;border-left:5px solid transparent;cursor:pointer}.product-img{height:45px;width:45px;padding:0;border-radius:50%;background-color:#d3d3d3}.product-img img{height:100%;width:100%;border-radius:50%}.product-list-container{padding:0 20px;width:80%}.product-list{overflow:auto;flex-wrap:wrap;height:90vh;border-radius:0 10px 10px/0px 10px 10px;gap:8px}.product{position:relative;display:flex;flex-direction:column;cursor:pointer;border-radius:10px;overflow:hidden;min-width:195px;max-width:195px;margin:10px;background-color:#fff}.product .prod-img{position:relative;height:200px;width:100%;overflow:hidden}.product .prod-img img{height:100%;width:100%;object-fit:cover}.product img:hover{-webkit-animation:scale-up-center .2s linear both;animation:scale-up-center .2s linear both}.styling{height:30px;width:30px;border-radius:50%;background-color:#fff;position:absolute;bottom:0;right:-12px}.strike-through{text-decoration:line-through;color:#d3d3d3;font-size:12px;margin-left:5px;position:relative}.add-to-cart{width:100%;cursor:pointer;background-color:#fff;border:1.5px solid #EF4C7B;border-radius:5px;color:#ef4c7b;padding:5px;text-align:center;display:flex;align-items:center}.add-to-cart .quantity-btn{background-color:#fb8dac7d;padding:5px 10px;font-weight:700}.add-to-cart .quantity{color:#ef4c7b}.discount{position:absolute;top:0;padding:5px;width:60px;text-align:center;font-size:12px;border-bottom-right-radius:3px}@-webkit-keyframes scale-up-center{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(1.08);transform:scale(1.08)}}@keyframes scale-up-center{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(1.08);transform:scale(1.08)}}@media screen and (max-width: 475px){.product-list-container{padding:5px!important}.category{flex-direction:column!important;padding:5px!important;border-left:none!important}.category .trim-text{text-align:center!important}.product{min-width:135px!important;max-width:135px!important;margin-left:0!important;margin-right:8px!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.TitleCasePipe, name: "titlecase" }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i5.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "component", type: i6.DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "component", type: SmallProductListingComponent, selector: "simpo-small-product-listing", inputs: ["product", "data", "isScrollable", "isCategoryProductList", "customClass"] }, { kind: "directive", type: BackgroundDirective, selector: "[simpoBackground]", inputs: ["simpoBackground", "scrollValue"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }, { kind: "directive", type: ContentTitleDirective, selector: "[simpoContentTitleSpace]", inputs: ["simpoContentTitleSpace"] }, { kind: "component", type: CardSkeletonLoaderComponent, selector: "simpo-card-skeleton-loader", inputs: ["count", "showTitles"] }] }); }
|
135
139
|
}
|
136
140
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ProductCategoryListComponent, decorators: [{
|
137
141
|
type: Component,
|
@@ -147,8 +151,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
|
|
147
151
|
SpacingHorizontalDirective,
|
148
152
|
SanitizeHtmlPipe,
|
149
153
|
SmallProductListingComponent,
|
150
|
-
ContentTitleDirective
|
151
|
-
|
154
|
+
ContentTitleDirective,
|
155
|
+
CardSkeletonLoaderComponent
|
156
|
+
], template: "<section class=\"d-flex\" [id]=\"data?.id\" simpoHover (hovering)=\"showEditTabs($event)\"\r\n [simpoBackground]=\"styles?.background\" [simpoLayout]=\"styles?.layout\" [ngClass]=\"{'removeAllPadding justify-content-between': isMobile}\" [attr.style]=\"customClass\">\r\n <div class=\"filter-panel\">\r\n <ng-container *ngFor=\"let category of categories\">\r\n <div class=\"category\" [style.backgroundColor]=\"(category.categoryId == selectedCategory?.categoryId) ? getSupportingColor(styles?.background?.accentColor ?? '#000000') : ''\" [style.borderColor]=\"(category.categoryId == selectedCategory?.categoryId) ? styles?.background?.accentColor : ''\"\r\n (click)=\"selectCategory(category)\">\r\n <div class=\"product-img\">\r\n <img [src]=\"category.imgUrl?.[0]\" alt=\"\" onerror=\"this.src='https://i.postimg.cc/hPS2JpV0/no-image-available.jpg'\">\r\n </div>\r\n <span class=\"trim-text\" [style.fontWeight]=\"(category.categoryId == selectedCategory?.categoryId) ? '700' : ''\">{{ category.categoryName }}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"product-list-container\" [simpoBackground]=\"styles?.background\">\r\n <h2 [simpoContentTitleSpace]=\"headingSpace\" *ngIf=\"!isMobile\">Buy {{ selectedCategory?.categoryName | titlecase }} Online</h2>\r\n\r\n <section class=\"d-flex product-list\" *ngIf=\"!apiLoading\">\r\n <ng-container *ngFor=\"let product of productList\">\r\n <simpo-small-product-listing [product]=\"product\" [data]=\"data\" [isScrollable]=\"true\" [isCategoryProductList]=\"true\" [style.width.%]=\"isMobile ? '48' : ''\"></simpo-small-product-listing>\r\n </ng-container>\r\n </section>\r\n <simpo-card-skeleton-loader *ngIf=\"apiLoading\"></simpo-card-skeleton-loader>\r\n </div>\r\n</section>\r\n<div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n</div>\r\n<div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n</div>\r\n", styles: [".filter-panel{border-right:2px solid rgba(211,211,211,.297);width:18%}.removeAllPadding{padding:0!important}.category{display:flex;align-items:center;gap:10px;padding:10px;border-left:5px solid transparent;cursor:pointer}.product-img{height:45px;width:45px;padding:0;border-radius:50%;background-color:#d3d3d3}.product-img img{height:100%;width:100%;border-radius:50%}.product-list-container{padding:0 20px;width:80%}.product-list{overflow:auto;flex-wrap:wrap;height:90vh;border-radius:0 10px 10px/0px 10px 10px;gap:8px}.product{position:relative;display:flex;flex-direction:column;cursor:pointer;border-radius:10px;overflow:hidden;min-width:195px;max-width:195px;margin:10px;background-color:#fff}.product .prod-img{position:relative;height:200px;width:100%;overflow:hidden}.product .prod-img img{height:100%;width:100%;object-fit:cover}.product img:hover{-webkit-animation:scale-up-center .2s linear both;animation:scale-up-center .2s linear both}.styling{height:30px;width:30px;border-radius:50%;background-color:#fff;position:absolute;bottom:0;right:-12px}.strike-through{text-decoration:line-through;color:#d3d3d3;font-size:12px;margin-left:5px;position:relative}.add-to-cart{width:100%;cursor:pointer;background-color:#fff;border:1.5px solid #EF4C7B;border-radius:5px;color:#ef4c7b;padding:5px;text-align:center;display:flex;align-items:center}.add-to-cart .quantity-btn{background-color:#fb8dac7d;padding:5px 10px;font-weight:700}.add-to-cart .quantity{color:#ef4c7b}.discount{position:absolute;top:0;padding:5px;width:60px;text-align:center;font-size:12px;border-bottom-right-radius:3px}@-webkit-keyframes scale-up-center{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(1.08);transform:scale(1.08)}}@keyframes scale-up-center{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(1.08);transform:scale(1.08)}}@media screen and (max-width: 475px){.product-list-container{padding:5px!important}.category{flex-direction:column!important;padding:5px!important;border-left:none!important}.category .trim-text{text-align:center!important}.product{min-width:135px!important;max-width:135px!important;margin-left:0!important;margin-right:8px!important}}\n"] }]
|
152
157
|
}], ctorParameters: () => [{ type: i1.RestService }, { type: i2.CartService }, { type: i3.ActivatedRoute }], propDecorators: { responseData: [{
|
153
158
|
type: Input
|
154
159
|
}], data: [{
|
@@ -162,4 +167,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
|
|
162
167
|
}], customClass: [{
|
163
168
|
type: Input
|
164
169
|
}] } });
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1jYXRlZ29yeS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZWNvbW1lcmNlL3NlY3Rpb25zL3Byb2R1Y3QtY2F0ZWdvcnktbGlzdC9wcm9kdWN0LWNhdGVnb3J5LWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvcHJvZHVjdC1jYXRlZ29yeS1saXN0L3Byb2R1Y3QtY2F0ZWdvcnktbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sV0FBVyxNQUFNLCtCQUErQixDQUFDO0FBSXhELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUUvRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDMUUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFFeEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHlFQUF5RSxDQUFDO0FBQ3RILE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQy9FLE9BQU8sRUFB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LE1BQU0sQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDVixPQUFPLGtCQUFrQixDQUFDLFFBQVEsQ0FBQztJQUNyQyxDQUFDOzhHQS9IVSw0QkFBNEI7a0dBQTVCLDRCQUE0QixrUEM1Q3pDLGdxRUE2QkEsc3RFRERJLFlBQVksMFpBRVosb0JBQW9CLG9XQUNwQiw0QkFBNEIsNkpBQzVCLG1CQUFtQiwwR0FDbkIsY0FBYyxnRkFFZCxtQkFBbUIsbUZBSW5CLHFCQUFxQjs7MkZBS1osNEJBQTRCO2tCQXBCeEMsU0FBUzsrQkFDRSw2QkFBNkIsY0FDM0IsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osT0FBTzt3QkFDUCxvQkFBb0I7d0JBQ3BCLDRCQUE0Qjt3QkFDNUIsbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLDJCQUEyQjt3QkFDM0IsbUJBQW1CO3dCQUNuQiwwQkFBMEI7d0JBQzFCLGdCQUFnQjt3QkFDaEIsNEJBQTRCO3dCQUM1QixxQkFBcUI7cUJBQ3RCO3VJQU1RLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTaW1wb0NvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvaW5kZXgnO1xyXG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vLi4vLi4vc2VjdGlvbnMvQmFzZVNlY3Rpb24nO1xyXG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3Jlc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IENhdGVnb3J5IH0gZnJvbSAnLi4vLi4vc3R5bGVzL2NhdGVnb3J5Lm1vZGFsJztcclxuaW1wb3J0IHsgSXRlbVZhcmlhbnQsIFByb2R1Y3QgfSBmcm9tICcuLi8uLi9zdHlsZXMvcHJvZHVjdC5tb2RhbCc7XHJcbmltcG9ydCB7IE9yZGVyZWRJdGVtcyB9IGZyb20gJy4uLy4uL3N0eWxlcy9PcmRlcmVkSXRlbXMubW9kYWwnO1xyXG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NhcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgQlVTSU5FU1NfQ09OU1RBTlRTIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2J1c2luZXNzLmNvbnN0YW50JztcclxuaW1wb3J0IHsgU21hbGxQcm9kdWN0TGlzdGluZ0NvbXBvbmVudCB9IGZyb20gJy4uL3NtYWxsLXByb2R1Y3QtbGlzdGluZy9zbWFsbC1wcm9kdWN0LWxpc3RpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBCYWNrZ3JvdW5kRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2JhY2tncm91bmQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgSG92ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvaG92ZXItZWxlbWVudC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBEZWxldGVIb3ZlckVsZW1lbnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2RlbGV0ZS1ob3Zlci1lbGVtZW50L2RlbGV0ZS1ob3Zlci1lbGVtZW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbnRlbnRGaXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvY29udGVudC1maXQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2FuaXRpemVIdG1sUGlwZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3Nhbml0aXplSHRtbCc7XHJcbmltcG9ydCB7IFByb2R1Y3RDYXRlZ29yeUxpc3RNb2RhbCwgUHJvZHVjdENhdGVnb3J5TGlzdFN0eWxlc01vZGFsIH0gZnJvbSAnLi9wcm9kdWN0LWNhdGVnb3J5LWxpc3QubW9kZWwnO1xyXG5pbXBvcnQgeyBTcGFjaW5nSG9yaXpvbnRhbERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9zcGFjaW5nLWhvcml6b250YWwuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU1BBQ0lORyB9IGZyb20gJy4uLy4uLy4uL3N0eWxlcy9pbmRleCc7XHJcbmltcG9ydCB7IENvbnRlbnRUaXRsZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50LXRpdGxlLXNwYWNpbmcuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTGF5T3V0TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zdHlsZXMvc3R5bGUubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzaW1wby1wcm9kdWN0LWNhdGVnb3J5LWxpc3QnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgTWF0SWNvbixcclxuICAgIFNpbXBvQ29tcG9uZW50TW9kdWxlLFxyXG4gICAgU21hbGxQcm9kdWN0TGlzdGluZ0NvbXBvbmVudCxcclxuICAgIEJhY2tncm91bmREaXJlY3RpdmUsXHJcbiAgICBIb3ZlckRpcmVjdGl2ZSxcclxuICAgIERlbGV0ZUhvdmVyRWxlbWVudENvbXBvbmVudCxcclxuICAgIENvbnRlbnRGaXREaXJlY3RpdmUsXHJcbiAgICBTcGFjaW5nSG9yaXpvbnRhbERpcmVjdGl2ZSxcclxuICAgIFNhbml0aXplSHRtbFBpcGUsXHJcbiAgICBTbWFsbFByb2R1Y3RMaXN0aW5nQ29tcG9uZW50LFxyXG4gICAgQ29udGVudFRpdGxlRGlyZWN0aXZlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vcHJvZHVjdC1jYXRlZ29yeS1saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vcHJvZHVjdC1jYXRlZ29yeS1saXN0LmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9kdWN0Q2F0ZWdvcnlMaXN0Q29tcG9uZW50IGV4dGVuZHMgQmFzZVNlY3Rpb24gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgXHJcbiAgQElucHV0KCkgcmVzcG9uc2VEYXRhPzogYW55W11cclxuICBASW5wdXQoKSBkYXRhPzogUHJvZHVjdENhdGVnb3J5TGlzdE1vZGFsO1xyXG4gIEBJbnB1dCgpIGluZGV4PyA6IG51bWJlcjtcclxuICBASW5wdXQoKSBlZGl0PyA6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZGVsZXRlPyA6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgY3VzdG9tQ2xhc3M/OiBzdHJpbmc7XHJcbiAgc3R5bGVzPzogUHJvZHVjdENhdGVnb3J5TGlzdFN0eWxlc01vZGFsO1xyXG4gIGNhdGVnb3JpZXM6IENhdGVnb3J5W10gPSBbXTtcclxuICBwcm9kdWN0TGlzdDogUHJvZHVjdFtdID0gW107XHJcbiAgVVNFUl9DQVJUOiBPcmRlcmVkSXRlbXNbXSA9IFtdO1xyXG4gIHNlbGVjdGVkQ2F0ZWdvcnk6IENhdGVnb3J5IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXN0U2VydmljZTogUmVzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgY29sbGVjdGlvbklkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3R5bGVzID0gdGhpcy5kYXRhPy5zdHlsZXM7XHJcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocVBhcmFtKT0+IHtcclxuICAgICAgdGhpcy5jb2xsZWN0aW9uSWQgPSBxUGFyYW1bXCJjb2xsZWN0aW9uSWRcIl07ICBcclxuICAgICAgdGhpcy5nZXRBbGxDYXRlZ29yaWVzQnlJZCgpO1xyXG4gICAgfSlcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgIFxyXG4gIH1cclxuICBnZXRBbGxDYXRlZ29yaWVzQnlJZCgpIHtcclxuICAgIGlmICghdGhpcy5jb2xsZWN0aW9uSWQpXHJcbiAgICAgIHJldHVybjtcclxuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0Q2F0ZWdvcmllc0J5Q29sbGVjdGlvbklkKHRoaXMuY29sbGVjdGlvbklkKS5zdWJzY3JpYmUoKHJlc3BvbnNlKT0+IHtcclxuICAgICAgdGhpcy5jYXRlZ29yaWVzID0gcmVzcG9uc2U7XHJcbiAgICAgIGlmICh0aGlzLmNhdGVnb3JpZXMubGVuZ3RoID4gMClcclxuICAgICAgICB0aGlzLnNlbGVjdENhdGVnb3J5KHRoaXMuY2F0ZWdvcmllc1swXSk7XHJcbiAgICB9KVxyXG4gIH1cclxuICBzZWxlY3RDYXRlZ29yeShjYXRlZ29yeTogQ2F0ZWdvcnkpIHtcclxuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0UHJvZHVjdEJ5Q2F0ZWdvcnlJZChjYXRlZ29yeS5jYXRlZ29yeUlkKS5zdWJzY3JpYmUoKHJlc3BvbnNlKT0+IHtcclxuICAgICAgdGhpcy5wcm9kdWN0TGlzdCA9IHJlc3BvbnNlLmRhdGE7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCA9IDA7ICBcclxuICAgICAgdGhpcy5zZWxlY3RlZENhdGVnb3J5ID0gY2F0ZWdvcnk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgYWRkSXRlbVRvQ2FydChwcm9kdWN0OiBQcm9kdWN0LCB0eXBlOiAnQUREJyB8ICdTVUJTVFJBQ1QnKSB7XHJcbiAgICAvLyBpZiAodGhpcy5pc0l0ZW1PdXRPZlN0b2NrKHByb2R1Y3QpKSB7XHJcbiAgICAvLyAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICd3YXJuJywgc3VtbWFyeTogJ0NhcnQnLCBkZXRhaWw6ICdJdGVtIGlzIG5vdCBhdmFpbGFibGUgYXMgb2Ygbm93LiBXZSB3aWxsIG5vdGlmeSB5b3Ugb25jZSBhdmFpbGFibGUnIH0pO1xyXG4gICAgLy8gICByZXR1cm47XHJcbiAgICAvLyB9XHJcblxyXG4gICAgaWYgKCFwcm9kdWN0Py5xdWFudGl0eSlcclxuICAgICAgcHJvZHVjdC5xdWFudGl0eSA9IDA7XHJcbiAgICBpZiAodHlwZSA9PSAnQUREJykge1xyXG4gICAgICBwcm9kdWN0LnF1YW50aXR5ICs9IDE7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcHJvZHVjdC5xdWFudGl0eSAtPSAxO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwcm9kdWN0Py5pdGVtVmFyaWFudD8ubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IGl0ZW1WYXJpZW50OiBJdGVtVmFyaWFudCB8IG51bGwgPSB0aGlzLmdldEl0ZW1WYXJpZW50KHByb2R1Y3QsIHByb2R1Y3QudmFyaWVudElkKTtcclxuICAgICAgaWYgKGl0ZW1WYXJpZW50KSB7XHJcbiAgICAgICAgaXRlbVZhcmllbnQucXVhbnRpdHkgPSBwcm9kdWN0LnF1YW50aXR5O1xyXG4gICAgICAgIHRoaXMuY2FydFNlcnZpY2UuYWRkSXRlbVRvQ2FydChwcm9kdWN0LCBpdGVtVmFyaWVudC52YXJpYW50SWQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZEl0ZW1Ub0NhcnQocHJvZHVjdCk7XHJcbiAgICB9XHJcbiAgICBpZiAocHJvZHVjdC5xdWFudGl0eSkge1xyXG4gICAgICBsZXQgaXNQcmVzZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuVVNFUl9DQVJUPy5mb3JFYWNoKChpdGVtOiBPcmRlcmVkSXRlbXMpID0+IHtcclxuICAgICAgICBpZiAoaXRlbS52YXJpZW50SWQgPT0gcHJvZHVjdC52YXJpZW50SWQpIHtcclxuICAgICAgICAgIGl0ZW0ucXVhbnRpdHkgPSBwcm9kdWN0LnF1YW50aXR5O1xyXG4gICAgICAgICAgaXNQcmVzZW50ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIGlmICghaXNQcmVzZW50KVxyXG4gICAgICAgIHRoaXMuVVNFUl9DQVJUPy5wdXNoKG5ldyBPcmRlcmVkSXRlbXMocHJvZHVjdCwgcHJvZHVjdC52YXJpZW50SWQpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuVVNFUl9DQVJUID0gdGhpcy5VU0VSX0NBUlQ/LmZpbHRlcigoaXRlbTogT3JkZXJlZEl0ZW1zKSA9PiBpdGVtLnZhcmllbnRJZCAhPSBwcm9kdWN0LnZhcmllbnRJZCkgPz8gW107XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldEl0ZW1WYXJpZW50KHByb2R1Y3Q6IFByb2R1Y3QsIHZhcmllbnRJZDogc3RyaW5nKTogSXRlbVZhcmlhbnQgfCBudWxsIHtcclxuICAgIGxldCBzZWxlY3RlZFZhcmllbnQ6IEl0ZW1WYXJpYW50IHwgbnVsbCA9IG51bGw7XHJcbiAgICBwcm9kdWN0Py5pdGVtVmFyaWFudD8uZm9yRWFjaCgodmFyaWVudDogSXRlbVZhcmlhbnQpPT4ge1xyXG4gICAgICBpZiAodmFyaWVudC52YXJpYW50SWQgPT0gdmFyaWVudElkKVxyXG4gICAgICAgIHNlbGVjdGVkVmFyaWVudCA9IHZhcmllbnQ7XHJcbiAgICB9KVxyXG5cclxuICAgIHJldHVybiBzZWxlY3RlZFZhcmllbnQ7XHJcbiAgfVxyXG5cclxuICBnZXRQZXJjZW50YWdlKHByb2R1Y3Q6IFByb2R1Y3QpIHtcclxuICAgIHJldHVybiAoKHByb2R1Y3QucHJpY2Uuc2VsbGluZ1ByaWNlIC0gcHJvZHVjdC5wcmljZS5kaXNjb3VudGVkUHJpY2UpIC8gMTAwKS50b0ZpeGVkKDApO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3VwcG9ydGluZ0NvbG9yKGNvbG9yOiBzdHJpbmcpIHtcclxuICAgIGxldCBoZXggPSBjb2xvcjtcclxuICAgIGlmICghaGV4KVxyXG4gICAgICByZXR1cm4gY29sb3I7XHJcbiAgICBoZXggPSBoZXgucmVwbGFjZSgvXiMvLCAnJyk7XHJcblxyXG4gICAgbGV0IGJpZ2ludCA9IHBhcnNlSW50KGhleCwgMTYpO1xyXG4gICAgbGV0IHIgPSAoYmlnaW50ID4+IDE2KSAmIDI1NTtcclxuICAgIGxldCBnID0gKGJpZ2ludCA+PiA4KSAmIDI1NTtcclxuICAgIGxldCBiID0gYmlnaW50ICYgMjU1O1xyXG5cclxuICAgIHJldHVybiBgcmdiYSgke3J9LCAke2d9LCAke2J9LCAwLjQpYDtcclxuICB9XHJcbiAgZ2V0IGdldFNwYWNpbmdMYXlvdXQoKSB7XHJcbiAgICByZXR1cm4gey4uLnRoaXMuc3R5bGVzPy5sYXlvdXR9IGFzIExheU91dE1vZGVsO1xyXG4gIH1cclxuICBnZXQgaGVhZGluZ1NwYWNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3R5bGVzPy5sYXlvdXQ/LmhlYWRpbmdTcGFjaW5nIGFzIFNQQUNJTkc7XHJcbiAgfVxyXG4gIGdldCBpc01vYmlsZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB3aW5kb3cuaW5uZXJXaWR0aCA8PSA0NzU7XHJcbiAgfVxyXG4gIGdldCBjdXJyZW5jeSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIEJVU0lORVNTX0NPTlNUQU5UUy5DVVJSRU5DWTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxzZWN0aW9uIGNsYXNzPVwiZC1mbGV4XCIgW2lkXT1cImRhdGE/LmlkXCIgc2ltcG9Ib3ZlciAoaG92ZXJpbmcpPVwic2hvd0VkaXRUYWJzKCRldmVudClcIlxyXG4gICAgW3NpbXBvQmFja2dyb3VuZF09XCJzdHlsZXM/LmJhY2tncm91bmRcIiBbc2ltcG9MYXlvdXRdPVwic3R5bGVzPy5sYXlvdXRcIiBbbmdDbGFzc109XCJ7J3JlbW92ZUFsbFBhZGRpbmcganVzdGlmeS1jb250ZW50LWJldHdlZW4nOiBpc01vYmlsZX1cIiBbYXR0ci5zdHlsZV09XCJjdXN0b21DbGFzc1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImZpbHRlci1wYW5lbFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNhdGVnb3J5IG9mIGNhdGVnb3JpZXNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhdGVnb3J5XCIgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCIoY2F0ZWdvcnkuY2F0ZWdvcnlJZCA9PSBzZWxlY3RlZENhdGVnb3J5Py5jYXRlZ29yeUlkKSA/IGdldFN1cHBvcnRpbmdDb2xvcihzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yID8/ICcjMDAwMDAwJykgOiAnJ1wiIFtzdHlsZS5ib3JkZXJDb2xvcl09XCIoY2F0ZWdvcnkuY2F0ZWdvcnlJZCA9PSBzZWxlY3RlZENhdGVnb3J5Py5jYXRlZ29yeUlkKSA/IHN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3IgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0Q2F0ZWdvcnkoY2F0ZWdvcnkpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZHVjdC1pbWdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiY2F0ZWdvcnkuaW1nVXJsPy5bMF1cIiBhbHQ9XCJcIiBvbmVycm9yPVwidGhpcy5zcmM9J2h0dHBzOi8vaS5wb3N0aW1nLmNjL2hQUzJKcFYwL25vLWltYWdlLWF2YWlsYWJsZS5qcGcnXCI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidHJpbS10ZXh0XCIgW3N0eWxlLmZvbnRXZWlnaHRdPVwiKGNhdGVnb3J5LmNhdGVnb3J5SWQgPT0gc2VsZWN0ZWRDYXRlZ29yeT8uY2F0ZWdvcnlJZCkgPyAnNzAwJyA6ICcnXCI+e3sgY2F0ZWdvcnkuY2F0ZWdvcnlOYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInByb2R1Y3QtbGlzdC1jb250YWluZXJcIiBbc2ltcG9CYWNrZ3JvdW5kXT1cInN0eWxlcz8uYmFja2dyb3VuZFwiPlxyXG4gICAgICAgIDxoMiBbc2ltcG9Db250ZW50VGl0bGVTcGFjZV09XCJoZWFkaW5nU3BhY2VcIiAqbmdJZj1cIiFpc01vYmlsZVwiPkJ1eSB7eyBzZWxlY3RlZENhdGVnb3J5Py5jYXRlZ29yeU5hbWUgfCB0aXRsZWNhc2UgfX0gT25saW5lPC9oMj5cclxuXHJcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJkLWZsZXggcHJvZHVjdC1saXN0XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2YgcHJvZHVjdExpc3RcIj5cclxuICAgICAgICAgICAgICAgIDxzaW1wby1zbWFsbC1wcm9kdWN0LWxpc3RpbmcgW3Byb2R1Y3RdPVwicHJvZHVjdFwiIFtkYXRhXT1cImRhdGFcIiBbaXNTY3JvbGxhYmxlXT1cInRydWVcIiBbaXNDYXRlZ29yeVByb2R1Y3RMaXN0XT1cInRydWVcIiBbc3R5bGUud2lkdGguJV09XCJpc01vYmlsZSA/ICc0OCcgOiAnJ1wiPjwvc2ltcG8tc21hbGwtcHJvZHVjdC1saXN0aW5nPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICA8L2Rpdj5cclxuPC9zZWN0aW9uPlxyXG48ZGl2IFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZWRpdH1cIiAqbmdJZj1cInNob3dFZGl0b3JzXCI+XHJcbiAgICA8c2ltcG8taG92ZXItZWxlbWVudHMgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiIFtlZGl0T3B0aW9uc109XCJlZGl0XCI+PC9zaW1wby1ob3Zlci1lbGVtZW50cz5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJzaG93RGVsZXRlXCIgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBkZWxldGV9XCI+XHJcbiAgICA8c2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiPjwvc2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQ+XHJcbjwvZGl2PlxyXG4iXX0=
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1jYXRlZ29yeS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZWNvbW1lcmNlL3NlY3Rpb25zL3Byb2R1Y3QtY2F0ZWdvcnktbGlzdC9wcm9kdWN0LWNhdGVnb3J5LWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvcHJvZHVjdC1jYXRlZ29yeS1saXN0L3Byb2R1Y3QtY2F0ZWdvcnktbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sV0FBVyxNQUFNLCtCQUErQixDQUFDO0FBSXhELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUUvRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDMUUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFFeEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHlFQUF5RSxDQUFDO0FBQ3RILE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQy9FLE9BQU8sRUFB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Q0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFnQixDQUFDO0lBQ2pELENBQUM7SUFDRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLGNBQXlCLENBQUM7SUFDeEQsQ0FBQztJQUNELElBQUksUUFBUTtRQUNWLE9BQU8sTUFBTSxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUM7SUFDbEMsQ0FBQztJQUNELElBQUksUUFBUTtRQUNWLE9BQU8sa0JBQWtCLENBQUMsUUFBUSxDQUFDO0lBQ3JDLENBQUM7OEdBbElVLDRCQUE0QjtrR0FBNUIsNEJBQTRCLGtQQzlDekMsZ3hFQThCQSxzdEVEREksWUFBWSwwWkFFWixvQkFBb0Isb1dBQ3BCLDRCQUE0Qiw2SkFDNUIsbUJBQW1CLDBHQUNuQixjQUFjLGdGQUVkLG1CQUFtQixtRkFJbkIscUJBQXFCLHlHQUNyQiwyQkFBMkI7OzJGQUtsQiw0QkFBNEI7a0JBckJ4QyxTQUFTOytCQUNFLDZCQUE2QixjQUMzQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixPQUFPO3dCQUNQLG9CQUFvQjt3QkFDcEIsNEJBQTRCO3dCQUM1QixtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2QsMkJBQTJCO3dCQUMzQixtQkFBbUI7d0JBQ25CLDBCQUEwQjt3QkFDMUIsZ0JBQWdCO3dCQUNoQiw0QkFBNEI7d0JBQzVCLHFCQUFxQjt3QkFDckIsMkJBQTJCO3FCQUM1Qjt1SUFNUSxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2ltcG9Db21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2luZGV4JztcclxuaW1wb3J0IEJhc2VTZWN0aW9uIGZyb20gJy4uLy4uLy4uL3NlY3Rpb25zL0Jhc2VTZWN0aW9uJztcclxuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDYXRlZ29yeSB9IGZyb20gJy4uLy4uL3N0eWxlcy9jYXRlZ29yeS5tb2RhbCc7XHJcbmltcG9ydCB7IEl0ZW1WYXJpYW50LCBQcm9kdWN0IH0gZnJvbSAnLi4vLi4vc3R5bGVzL3Byb2R1Y3QubW9kYWwnO1xyXG5pbXBvcnQgeyBPcmRlcmVkSXRlbXMgfSBmcm9tICcuLi8uLi9zdHlsZXMvT3JkZXJlZEl0ZW1zLm1vZGFsJztcclxuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IEJVU0lORVNTX0NPTlNUQU5UUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9idXNpbmVzcy5jb25zdGFudCc7XHJcbmltcG9ydCB7IFNtYWxsUHJvZHVjdExpc3RpbmdDb21wb25lbnQgfSBmcm9tICcuLi9zbWFsbC1wcm9kdWN0LWxpc3Rpbmcvc21hbGwtcHJvZHVjdC1saXN0aW5nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQmFja2dyb3VuZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9iYWNrZ3JvdW5kLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2hvdmVyLWVsZW1lbnQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRGVsZXRlSG92ZXJFbGVtZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9kZWxldGUtaG92ZXItZWxlbWVudC9kZWxldGUtaG92ZXItZWxlbWVudC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb250ZW50Rml0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2NvbnRlbnQtZml0LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNhbml0aXplSHRtbFBpcGUgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zYW5pdGl6ZUh0bWwnO1xyXG5pbXBvcnQgeyBQcm9kdWN0Q2F0ZWdvcnlMaXN0TW9kYWwsIFByb2R1Y3RDYXRlZ29yeUxpc3RTdHlsZXNNb2RhbCB9IGZyb20gJy4vcHJvZHVjdC1jYXRlZ29yeS1saXN0Lm1vZGVsJztcclxuaW1wb3J0IHsgU3BhY2luZ0hvcml6b250YWxEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvc3BhY2luZy1ob3Jpem9udGFsLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNQQUNJTkcgfSBmcm9tICcuLi8uLi8uLi9zdHlsZXMvaW5kZXgnO1xyXG5pbXBvcnQgeyBDb250ZW50VGl0bGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvY29udGVudC10aXRsZS1zcGFjaW5nLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IExheU91dE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vc3R5bGVzL3N0eWxlLm1vZGVsJztcclxuaW1wb3J0IHsgQ2FyZFNrZWxldG9uTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZWxlbWVudHMvY2FyZC1za2VsZXRvbi1sb2FkZXIvY2FyZC1za2VsZXRvbi1sb2FkZXIuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ltcG8tcHJvZHVjdC1jYXRlZ29yeS1saXN0JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIE1hdEljb24sXHJcbiAgICBTaW1wb0NvbXBvbmVudE1vZHVsZSxcclxuICAgIFNtYWxsUHJvZHVjdExpc3RpbmdDb21wb25lbnQsXHJcbiAgICBCYWNrZ3JvdW5kRGlyZWN0aXZlLFxyXG4gICAgSG92ZXJEaXJlY3RpdmUsXHJcbiAgICBEZWxldGVIb3ZlckVsZW1lbnRDb21wb25lbnQsXHJcbiAgICBDb250ZW50Rml0RGlyZWN0aXZlLFxyXG4gICAgU3BhY2luZ0hvcml6b250YWxEaXJlY3RpdmUsXHJcbiAgICBTYW5pdGl6ZUh0bWxQaXBlLFxyXG4gICAgU21hbGxQcm9kdWN0TGlzdGluZ0NvbXBvbmVudCxcclxuICAgIENvbnRlbnRUaXRsZURpcmVjdGl2ZSxcclxuICAgIENhcmRTa2VsZXRvbkxvYWRlckNvbXBvbmVudFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2R1Y3QtY2F0ZWdvcnktbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3Byb2R1Y3QtY2F0ZWdvcnktbGlzdC5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvZHVjdENhdGVnb3J5TGlzdENvbXBvbmVudCBleHRlbmRzIEJhc2VTZWN0aW9uIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIFxyXG4gIEBJbnB1dCgpIHJlc3BvbnNlRGF0YT86IGFueVtdXHJcbiAgQElucHV0KCkgZGF0YT86IFByb2R1Y3RDYXRlZ29yeUxpc3RNb2RhbDtcclxuICBASW5wdXQoKSBpbmRleD8gOiBudW1iZXI7XHJcbiAgQElucHV0KCkgZWRpdD8gOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGRlbGV0ZT8gOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGN1c3RvbUNsYXNzPzogc3RyaW5nO1xyXG4gIHN0eWxlcz86IFByb2R1Y3RDYXRlZ29yeUxpc3RTdHlsZXNNb2RhbDtcclxuICBjYXRlZ29yaWVzOiBDYXRlZ29yeVtdID0gW107XHJcbiAgcHJvZHVjdExpc3Q6IFByb2R1Y3RbXSA9IFtdO1xyXG4gIFVTRVJfQ0FSVDogT3JkZXJlZEl0ZW1zW10gPSBbXTtcclxuICBzZWxlY3RlZENhdGVnb3J5OiBDYXRlZ29yeSB8IG51bGwgPSBudWxsO1xyXG4gIGFwaUxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc3RTZXJ2aWNlOiBSZXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBjb2xsZWN0aW9uSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLmRhdGE/LnN0eWxlcztcclxuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKChxUGFyYW0pPT4ge1xyXG4gICAgICB0aGlzLmNvbGxlY3Rpb25JZCA9IHFQYXJhbVtcImNvbGxlY3Rpb25JZFwiXTsgIFxyXG4gICAgICB0aGlzLmdldEFsbENhdGVnb3JpZXNCeUlkKCk7XHJcbiAgICB9KVxyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgXHJcbiAgfVxyXG4gIGdldEFsbENhdGVnb3JpZXNCeUlkKCkge1xyXG4gICAgaWYgKCF0aGlzLmNvbGxlY3Rpb25JZClcclxuICAgICAgcmV0dXJuO1xyXG4gICAgdGhpcy5hcGlMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0Q2F0ZWdvcmllc0J5Q29sbGVjdGlvbklkKHRoaXMuY29sbGVjdGlvbklkKS5zdWJzY3JpYmUoKHJlc3BvbnNlKT0+IHtcclxuICAgICAgdGhpcy5jYXRlZ29yaWVzID0gcmVzcG9uc2U7XHJcbiAgICAgIHRoaXMuYXBpTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICBpZiAodGhpcy5jYXRlZ29yaWVzLmxlbmd0aCA+IDApXHJcbiAgICAgICAgdGhpcy5zZWxlY3RDYXRlZ29yeSh0aGlzLmNhdGVnb3JpZXNbMF0pO1xyXG4gICAgfSlcclxuICB9XHJcbiAgc2VsZWN0Q2F0ZWdvcnkoY2F0ZWdvcnk6IENhdGVnb3J5KSB7XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFByb2R1Y3RCeUNhdGVnb3J5SWQoY2F0ZWdvcnkuY2F0ZWdvcnlJZCkuc3Vic2NyaWJlKChyZXNwb25zZSk9PiB7XHJcbiAgICAgIHRoaXMucHJvZHVjdExpc3QgPSByZXNwb25zZS5kYXRhO1xyXG4gICAgICBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgPSAwOyAgXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yeSA9IGNhdGVnb3J5O1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGFkZEl0ZW1Ub0NhcnQocHJvZHVjdDogUHJvZHVjdCwgdHlwZTogJ0FERCcgfCAnU1VCU1RSQUNUJykge1xyXG4gICAgLy8gaWYgKHRoaXMuaXNJdGVtT3V0T2ZTdG9jayhwcm9kdWN0KSkge1xyXG4gICAgLy8gICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnd2FybicsIHN1bW1hcnk6ICdDYXJ0JywgZGV0YWlsOiAnSXRlbSBpcyBub3QgYXZhaWxhYmxlIGFzIG9mIG5vdy4gV2Ugd2lsbCBub3RpZnkgeW91IG9uY2UgYXZhaWxhYmxlJyB9KTtcclxuICAgIC8vICAgcmV0dXJuO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIGlmICghcHJvZHVjdD8ucXVhbnRpdHkpXHJcbiAgICAgIHByb2R1Y3QucXVhbnRpdHkgPSAwO1xyXG4gICAgaWYgKHR5cGUgPT0gJ0FERCcpIHtcclxuICAgICAgcHJvZHVjdC5xdWFudGl0eSArPSAxO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHByb2R1Y3QucXVhbnRpdHkgLT0gMTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocHJvZHVjdD8uaXRlbVZhcmlhbnQ/Lmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBpdGVtVmFyaWVudDogSXRlbVZhcmlhbnQgfCBudWxsID0gdGhpcy5nZXRJdGVtVmFyaWVudChwcm9kdWN0LCBwcm9kdWN0LnZhcmllbnRJZCk7XHJcbiAgICAgIGlmIChpdGVtVmFyaWVudCkge1xyXG4gICAgICAgIGl0ZW1WYXJpZW50LnF1YW50aXR5ID0gcHJvZHVjdC5xdWFudGl0eTtcclxuICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZEl0ZW1Ub0NhcnQocHJvZHVjdCwgaXRlbVZhcmllbnQudmFyaWFudElkKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jYXJ0U2VydmljZS5hZGRJdGVtVG9DYXJ0KHByb2R1Y3QpO1xyXG4gICAgfVxyXG4gICAgaWYgKHByb2R1Y3QucXVhbnRpdHkpIHtcclxuICAgICAgbGV0IGlzUHJlc2VudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgICB0aGlzLlVTRVJfQ0FSVD8uZm9yRWFjaCgoaXRlbTogT3JkZXJlZEl0ZW1zKSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0udmFyaWVudElkID09IHByb2R1Y3QudmFyaWVudElkKSB7XHJcbiAgICAgICAgICBpdGVtLnF1YW50aXR5ID0gcHJvZHVjdC5xdWFudGl0eTtcclxuICAgICAgICAgIGlzUHJlc2VudCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICBpZiAoIWlzUHJlc2VudClcclxuICAgICAgICB0aGlzLlVTRVJfQ0FSVD8ucHVzaChuZXcgT3JkZXJlZEl0ZW1zKHByb2R1Y3QsIHByb2R1Y3QudmFyaWVudElkKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLlVTRVJfQ0FSVCA9IHRoaXMuVVNFUl9DQVJUPy5maWx0ZXIoKGl0ZW06IE9yZGVyZWRJdGVtcykgPT4gaXRlbS52YXJpZW50SWQgIT0gcHJvZHVjdC52YXJpZW50SWQpID8/IFtdO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRJdGVtVmFyaWVudChwcm9kdWN0OiBQcm9kdWN0LCB2YXJpZW50SWQ6IHN0cmluZyk6IEl0ZW1WYXJpYW50IHwgbnVsbCB7XHJcbiAgICBsZXQgc2VsZWN0ZWRWYXJpZW50OiBJdGVtVmFyaWFudCB8IG51bGwgPSBudWxsO1xyXG4gICAgcHJvZHVjdD8uaXRlbVZhcmlhbnQ/LmZvckVhY2goKHZhcmllbnQ6IEl0ZW1WYXJpYW50KT0+IHtcclxuICAgICAgaWYgKHZhcmllbnQudmFyaWFudElkID09IHZhcmllbnRJZClcclxuICAgICAgICBzZWxlY3RlZFZhcmllbnQgPSB2YXJpZW50O1xyXG4gICAgfSlcclxuXHJcbiAgICByZXR1cm4gc2VsZWN0ZWRWYXJpZW50O1xyXG4gIH1cclxuXHJcbiAgZ2V0UGVyY2VudGFnZShwcm9kdWN0OiBQcm9kdWN0KSB7XHJcbiAgICByZXR1cm4gKChwcm9kdWN0LnByaWNlLnNlbGxpbmdQcmljZSAtIHByb2R1Y3QucHJpY2UuZGlzY291bnRlZFByaWNlKSAvIDEwMCkudG9GaXhlZCgwKTtcclxuICB9XHJcblxyXG4gIGdldFN1cHBvcnRpbmdDb2xvcihjb2xvcjogc3RyaW5nKSB7XHJcbiAgICBsZXQgaGV4ID0gY29sb3I7XHJcbiAgICBpZiAoIWhleClcclxuICAgICAgcmV0dXJuIGNvbG9yO1xyXG4gICAgaGV4ID0gaGV4LnJlcGxhY2UoL14jLywgJycpO1xyXG5cclxuICAgIGxldCBiaWdpbnQgPSBwYXJzZUludChoZXgsIDE2KTtcclxuICAgIGxldCByID0gKGJpZ2ludCA+PiAxNikgJiAyNTU7XHJcbiAgICBsZXQgZyA9IChiaWdpbnQgPj4gOCkgJiAyNTU7XHJcbiAgICBsZXQgYiA9IGJpZ2ludCAmIDI1NTtcclxuXHJcbiAgICByZXR1cm4gYHJnYmEoJHtyfSwgJHtnfSwgJHtifSwgMC40KWA7XHJcbiAgfVxyXG4gIGdldCBnZXRTcGFjaW5nTGF5b3V0KCkge1xyXG4gICAgcmV0dXJuIHsuLi50aGlzLnN0eWxlcz8ubGF5b3V0fSBhcyBMYXlPdXRNb2RlbDtcclxuICB9XHJcbiAgZ2V0IGhlYWRpbmdTcGFjZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0eWxlcz8ubGF5b3V0Py5oZWFkaW5nU3BhY2luZyBhcyBTUEFDSU5HO1xyXG4gIH1cclxuICBnZXQgaXNNb2JpbGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gd2luZG93LmlubmVyV2lkdGggPD0gNDc1O1xyXG4gIH1cclxuICBnZXQgY3VycmVuY3koKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBCVVNJTkVTU19DT05TVEFOVFMuQ1VSUkVOQ1k7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8c2VjdGlvbiBjbGFzcz1cImQtZmxleFwiIFtpZF09XCJkYXRhPy5pZFwiIHNpbXBvSG92ZXIgKGhvdmVyaW5nKT1cInNob3dFZGl0VGFicygkZXZlbnQpXCJcclxuICAgIFtzaW1wb0JhY2tncm91bmRdPVwic3R5bGVzPy5iYWNrZ3JvdW5kXCIgW3NpbXBvTGF5b3V0XT1cInN0eWxlcz8ubGF5b3V0XCIgW25nQ2xhc3NdPVwieydyZW1vdmVBbGxQYWRkaW5nIGp1c3RpZnktY29udGVudC1iZXR3ZWVuJzogaXNNb2JpbGV9XCIgW2F0dHIuc3R5bGVdPVwiY3VzdG9tQ2xhc3NcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItcGFuZWxcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjYXRlZ29yeSBvZiBjYXRlZ29yaWVzXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXRlZ29yeVwiIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiKGNhdGVnb3J5LmNhdGVnb3J5SWQgPT0gc2VsZWN0ZWRDYXRlZ29yeT8uY2F0ZWdvcnlJZCkgPyBnZXRTdXBwb3J0aW5nQ29sb3Ioc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvciA/PyAnIzAwMDAwMCcpIDogJydcIiBbc3R5bGUuYm9yZGVyQ29sb3JdPVwiKGNhdGVnb3J5LmNhdGVnb3J5SWQgPT0gc2VsZWN0ZWRDYXRlZ29yeT8uY2F0ZWdvcnlJZCkgPyBzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yIDogJydcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdENhdGVnb3J5KGNhdGVnb3J5KVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2R1Y3QtaW1nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImNhdGVnb3J5LmltZ1VybD8uWzBdXCIgYWx0PVwiXCIgb25lcnJvcj1cInRoaXMuc3JjPSdodHRwczovL2kucG9zdGltZy5jYy9oUFMySnBWMC9uby1pbWFnZS1hdmFpbGFibGUuanBnJ1wiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRyaW0tdGV4dFwiIFtzdHlsZS5mb250V2VpZ2h0XT1cIihjYXRlZ29yeS5jYXRlZ29yeUlkID09IHNlbGVjdGVkQ2F0ZWdvcnk/LmNhdGVnb3J5SWQpID8gJzcwMCcgOiAnJ1wiPnt7IGNhdGVnb3J5LmNhdGVnb3J5TmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0LWxpc3QtY29udGFpbmVyXCIgW3NpbXBvQmFja2dyb3VuZF09XCJzdHlsZXM/LmJhY2tncm91bmRcIj5cclxuICAgICAgICA8aDIgW3NpbXBvQ29udGVudFRpdGxlU3BhY2VdPVwiaGVhZGluZ1NwYWNlXCIgKm5nSWY9XCIhaXNNb2JpbGVcIj5CdXkge3sgc2VsZWN0ZWRDYXRlZ29yeT8uY2F0ZWdvcnlOYW1lIHwgdGl0bGVjYXNlIH19IE9ubGluZTwvaDI+XHJcblxyXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiZC1mbGV4IHByb2R1Y3QtbGlzdFwiICpuZ0lmPVwiIWFwaUxvYWRpbmdcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiBwcm9kdWN0TGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgPHNpbXBvLXNtYWxsLXByb2R1Y3QtbGlzdGluZyBbcHJvZHVjdF09XCJwcm9kdWN0XCIgW2RhdGFdPVwiZGF0YVwiIFtpc1Njcm9sbGFibGVdPVwidHJ1ZVwiIFtpc0NhdGVnb3J5UHJvZHVjdExpc3RdPVwidHJ1ZVwiIFtzdHlsZS53aWR0aC4lXT1cImlzTW9iaWxlID8gJzQ4JyA6ICcnXCI+PC9zaW1wby1zbWFsbC1wcm9kdWN0LWxpc3Rpbmc+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICA8c2ltcG8tY2FyZC1za2VsZXRvbi1sb2FkZXIgKm5nSWY9XCJhcGlMb2FkaW5nXCI+PC9zaW1wby1jYXJkLXNrZWxldG9uLWxvYWRlcj5cclxuICAgIDwvZGl2PlxyXG48L3NlY3Rpb24+XHJcbjxkaXYgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBlZGl0fVwiICpuZ0lmPVwic2hvd0VkaXRvcnNcIj5cclxuICAgIDxzaW1wby1ob3Zlci1lbGVtZW50cyBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCIgW2VkaXRPcHRpb25zXT1cImVkaXRcIj48L3NpbXBvLWhvdmVyLWVsZW1lbnRzPlxyXG48L2Rpdj5cclxuPGRpdiAqbmdJZj1cInNob3dEZWxldGVcIiBbbmdDbGFzc109XCJ7J2hvdmVyX2VmZmVjdCc6IGRlbGV0ZX1cIj5cclxuICAgIDxzaW1wby1kZWxldGUtaG92ZXItZWxlbWVudCBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCI+PC9zaW1wby1kZWxldGUtaG92ZXItZWxlbWVudD5cclxuPC9kaXY+XHJcbiJdfQ==
|