simpo-component-library 3.6.816 → 3.6.818

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/esm2022/lib/directive/merge-header.directive.mjs +7 -21
  2. package/esm2022/lib/directive/sticky-directive.mjs +8 -19
  3. package/esm2022/lib/ecommerce/sections/cart/cart.component.mjs +8 -9
  4. package/esm2022/lib/elements/below-image-card/below-image-card.component.mjs +3 -3
  5. package/esm2022/lib/sections/banner-section/banner-section.component.mjs +3 -3
  6. package/esm2022/lib/sections/choose-us-section/choose-us-section.component.mjs +3 -3
  7. package/esm2022/lib/sections/feature-experience-section/feature-experience-section.component.mjs +3 -3
  8. package/esm2022/lib/sections/features-section/features-section.component.mjs +3 -3
  9. package/esm2022/lib/sections/header-section/header-section.component.mjs +65 -80
  10. package/esm2022/lib/sections/header-section/header-section.model.mjs +1 -1
  11. package/esm2022/lib/sections/testimonial-slider/testimonial-slider.component.mjs +3 -3
  12. package/esm2022/lib/sections/video-grid-section/video-grid-section.component.mjs +3 -3
  13. package/esm2022/lib/services/events.service.mjs +2 -1
  14. package/esm2022/lib/services/rest.service.mjs +4 -1
  15. package/esm2022/lib/styles/index.mjs +6 -1
  16. package/fesm2022/simpo-component-library.mjs +105 -133
  17. package/fesm2022/simpo-component-library.mjs.map +1 -1
  18. package/lib/directive/merge-header.directive.d.ts +3 -7
  19. package/lib/directive/sticky-directive.d.ts +2 -4
  20. package/lib/sections/header-section/header-section.component.d.ts +13 -14
  21. package/lib/sections/header-section/header-section.model.d.ts +2 -1
  22. package/lib/services/events.service.d.ts +1 -0
  23. package/lib/services/rest.service.d.ts +1 -0
  24. package/lib/styles/index.d.ts +4 -0
  25. package/package.json +1 -1
  26. package/simpo-component-library-3.6.818.tgz +0 -0
  27. package/simpo-component-library-3.6.816.tgz +0 -0
@@ -199,7 +199,7 @@ export class VideoGridSectionComponent extends BaseSection {
199
199
  }
200
200
  }
201
201
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: VideoGridSectionComponent, deps: [{ token: i1.MessageService }, { token: i2.CartService }, { token: i3.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
202
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: VideoGridSectionComponent, isStandalone: true, selector: "simpo-video-grid-section", inputs: { data: "data", index: "index", edit: "edit", customClass: "customClass", delete: "delete", nextComponentColor: "nextComponentColor" }, host: { listeners: { "window: resize": "getScreenSize($event)" } }, providers: [MessageService], viewQueries: [{ propertyName: "videogrid", first: true, predicate: ["videogrid"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<section [id]=\"data?.id\" [simpoBackground]=\"style?.background\" simpoHover (hovering)=\"showEditTabs($event)\"\r\n class=\"total-container\" [attr.style]=\"customClass\">\r\n <div #mainContainer [id]=\"data?.id\" [simpoOverlay]=\"style?.background\" [spacingHorizontal]=\"stylesLayout\">\r\n <div class=\"container-fluid\" [id]=\"data?.id\" [simpoBorder]=\"style?.border\" [simpoLayout]=\"style?.layout\">\r\n <div class=\"row w-100\" [id]=\"data?.id\" [simpoAnimation]=\"style?.animation\"\r\n [ngStyle]=\"style?.fullWidth ? {'padding': '0px'} : {}\"\r\n [ngClass]=\"{'justify-content-center' : screenWidth < 475}\">\r\n <!-- [ngClass]=\"{'w-100':style?.gridStyle === 'Style2'}\" -->\r\n <div *ngFor=\"let text of data?.content?.inputText\">\r\n <div [simpoContentTitleSpace]=\"headingSpace\">\r\n <ng-container *ngIf=\"edit || (text.value && text.value.length > 0)\">\r\n <simpo-text-editor [(value)]=\"text.value\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <!-- <ng-container *ngIf=\"style?.gridStyle == 'Style1'\"> -->\r\n <button class=\"scroll-btn left p-0 d-flex align-items-center justify-content-center\"\r\n *ngIf=\"style?.direction === 'ROW' && isOverflowing\" (click)=\"scrollLeft()\"\r\n [disabled]=\"atStart\"><mat-icon>keyboard_arrow_left</mat-icon>\r\n </button>\r\n\r\n <div class=\"main-video-section\">\r\n <div class=\"main-image-section position-relative\"\r\n [class.row]=\"style?.direction == 'ROW' && screenWidth > 475\"\r\n [class.wrap-scroll]=\"style?.direction == 'ROW' && screenWidth > 475\"\r\n [class.flex-wrap]=\"style?.direction == 'COLUMN' && screenWidth > 475\" [id]=\"data?.id\" #videogrid\r\n [style.justifyContent]=\"getJustifyContent()\" (scroll)=\"onScroll()\"\r\n [ngClass]=\"{'d-grid grid-columns' : screenWidth < 475}\">\r\n <ng-container *ngIf=\"!content?.display?.showImage\">\r\n <div class=\"video-section p-3 w-auto d-flex flex-column gap-2 align-items-center justify-content-center\"\r\n *ngFor=\"let video of content?.listItem?.data\" [simpoColumnDirective]=\"style?.size\"\r\n [id]=\"data?.id\"\r\n [attr.style]=\"style?.removeGaps ? 'padding: 0px !important; margin: 0px !important;' : {}\">\r\n <ng-container *ngIf=\"content?.display?.showText\">\r\n <div\r\n class=\"w-fit position-relative d-flex align-items-center justify-content-center\">\r\n <ng-container *ngIf=\"style?.autoPlay && !style?.hoverPlay;else normalVideo\">\r\n <video loading=\"lazy\" [simpoCorner]=\"style?.corners\" [id]=\"data?.id\"\r\n #videoEl [class]=\"data?.id + video.video.id\" [src]=\"video.video.url\"\r\n class=\"h-100 cursor-pointer\" [muted]=\"style?.muteVideos\" autoplay\r\n (click)=\"openFullscreen(videoEl)\" loop></video>\r\n </ng-container>\r\n <ng-template #normalVideo>\r\n <video loading=\"lazy\" [simpoCorner]=\"style?.corners\" [id]=\"data?.id\"\r\n #videoEl [class]=\"data?.id + video.video.id\" [src]=\"video.video.url\"\r\n class=\"h-100\" [muted]=\"style?.muteVideos\" [controls]=\"!style?.hoverPlay\"\r\n (mouseenter)=\"style?.hoverPlay && onVideoHover(videoEl, video.video)\"\r\n (mouseleave)=\"style?.hoverPlay && onVideoLeave(videoEl, video.video)\"\r\n (click)=\"openFullscreen(videoEl)\"\r\n [ngClass]=\"{ 'cursor-pointer': style?.hoverPlay }\"></video>\r\n </ng-template>\r\n <img src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/172648c1769671647159play-fill-svgrepo-com.svg\"\r\n class=\"position-absolute\"\r\n *ngIf=\"!video?.video?.isVideoPlaying && style?.hoverPlay\"\r\n style=\"width:20px\">\r\n </div>\r\n <simpo-text-editor [(value)]=\"video.video.description\"\r\n [editable]=\"edit || false\"></simpo-text-editor>\r\n </ng-container>\r\n <ng-container *ngIf=\"!content?.display?.showText\">\r\n <div class=\"video-wrapper position-relative\" [id]=\"data?.id\"\r\n [ngStyle]=\"{'width' : style?.size === 'Small' ? '180px' : style?.size === 'Medium' ? '220px' : '270px' }\">\r\n <ng-container *ngIf=\"style?.autoPlay && !style?.hoverPlay;else normalVideo\">\r\n <video loading=\"lazy\" [simpoCorner]=\"style?.corners\" [id]=\"data?.id\"\r\n #videoEl [class]=\"data?.id + video.video.id\" [src]=\"video.video.url\"\r\n class=\"h-100\" [muted]=\"style?.muteVideos\"\r\n [simpoVideoDirective]=\"style?.image\" [controls]=\"style?.hoverPlay\"\r\n (mouseenter)=\"style?.hoverPlay && onVideoHover(videoEl, video.video)\"\r\n (mouseleave)=\"style?.hoverPlay && onVideoLeave(videoEl, video.video)\"\r\n (click)=\"openFullVideo(video.video)\" autoplay loop></video>\r\n </ng-container>\r\n <ng-template #normalVideo>\r\n <video loading=\"lazy\" [simpoCorner]=\"style?.corners\" [id]=\"data?.id\"\r\n #videoEl [class]=\"data?.id + video.video.id\" [src]=\"video.video.url\"\r\n class=\"h-100\" [muted]=\"style?.muteVideos\"\r\n [simpoVideoDirective]=\"style?.image\" [controls]=\"!style?.hoverPlay\"\r\n (mouseenter)=\"style?.hoverPlay && onVideoHover(videoEl, video.video)\"\r\n (mouseleave)=\"style?.hoverPlay && onVideoLeave(videoEl, video.video)\"\r\n (click)=\"openFullVideo(video.video)\"></video>\r\n </ng-template>\r\n <div class=\"position-absolute products-cards w-100 p-3 d-flex gap-3 overflow-x-auto cursor-pointer\"\r\n *ngIf=\"video?.video?.products?.length > 0 && content?.display?.showProducts\">\r\n <ng-container *ngFor=\"let product of video.video.products\">\r\n <div class=\"product-badge\">\r\n <a [href]=\"product.redirectionUrl\" class=\"product-link\">\r\n <img [src]=\"product?.itemImages[0].imgUrl\" alt=\"Ring\"\r\n class=\"product-img\" /></a>\r\n <div class=\"product-info\">\r\n <a [href]=\"product.redirectionUrl\" class=\"product-link\">\r\n <div class=\"product-details d-flex flex-column gap-1\">\r\n <div class=\"product-title\">\r\n {{product.name.length > 16 ?\r\n product.name.trim().slice(0,15)\r\n +\r\n '...' :\r\n product.name }}\r\n </div>\r\n <div class=\"product-price d-flex align-items-start\">\r\n \u20B9{{product?.price.sellingPrice}}\r\n </div>\r\n </div>\r\n </a>\r\n <div\r\n class=\"d-flex align-items-center justify-content-center gap-1\">\r\n <img src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/700072c1770270395432favourite-svgrepo-com.svg\"\r\n style=\"width: 18px;\"\r\n (click)=\"toggleItemToFav($event, product, 'ADD')\"\r\n *ngIf=\"!product.whislist\">\r\n <img src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/304116c1770274132910favourite-svgrepo-com_(1).svg\"\r\n style=\"width: 18px;\" *ngIf=\"product.whislist\"\r\n (click)=\"toggleItemToFav($event, product, 'REMOVE')\">\r\n <img src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/695144c1770270669546cart-shopping-svgrepo-com.svg\"\r\n style=\"width:19px\"\r\n (click)=\"addItemToCart($event, product, 'ADD')\"\r\n *ngIf=\"product.quantity <= 0\">\r\n <img src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/795342c1770275383344shopping-cart-fill-svgrepo-com.svg\"\r\n style=\"width:19px\" *ngIf=\"product.quantity >= 1\"\r\n (click)=\"addItemToCart($event, product, 'SUBSTRACT')\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"!video?.video?.isVideoPlaying && style?.hoverPlay\"\r\n class=\"position-absolute d-flex align-items-center justify-content-center\"\r\n style=\"padding: 9px;top: 47%;left: 40%;background: lightgrey;border-radius: 50%;background: rgba(240, 240, 240, 0.6);backdrop-filter: blur(4px);-webkit-backdrop-filter: blur(4px);\">\r\n <img src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/935060c1770214072755play-svgrepo-com.svg\"\r\n class=\"\" style=\"width:25px;margin-left:1.5px\">\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"content?.display?.showImage\">\r\n <div class=\"video-section p-3 w-auto d-flex flex-column gap-2 align-items-center justify-content-center\"\r\n *ngFor=\"let image of content?.listItem?.data\" [simpoColumnDirective]=\"style?.size\"\r\n [id]=\"data?.id\"\r\n [attr.style]=\"style?.removeGaps ? 'padding: 0px !important; margin: 0px !important;' : {}\">\r\n <ng-container>\r\n <div class=\"video-wrapper position-relative\" [id]=\"data?.id\"\r\n [ngClass]=\"{'h-100':screenWidth<475}\"\r\n [ngStyle]=\"{'width' : screenWidth > 475 ? (style?.size === 'Small' ? '180px' : style?.size === 'Medium' ? '220px' : '270px'): '100%' }\">\r\n <img loading=\"lazy\" [src]=\"image.image.url\" [alt]=\"image.image.altText\"\r\n [simpoImageDirective]=\"image.image\"\r\n [attr.simpoObjectPosition]=\"image?.image?.fit !== 'contain' ? image.image?.position : null\"\r\n [simpoCorner]=\"style?.corners\" class=\"w-100 h-100\"\r\n [appImageEditor]=\"edit || false\" [imageData]=\"image.image\"\r\n [sectionId]=\"data?.id\" [simpoObjectPosition]=\"image?.image?.position\"\r\n [class]=\"data?.id+image.image.id\">\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <button class=\"scroll-btn right p-0 d-flex align-items-center justify-content-center\"\r\n *ngIf=\"style?.direction === 'ROW' && isOverflowing\" (click)=\"scrollRight()\"\r\n [disabled]=\"atEnd\"><mat-icon>keyboard_arrow_right</mat-icon>\r\n </button>\r\n <!-- </ng-container> -->\r\n <!-- <ng-container *ngIf=\"style?.gridStyle == 'Style2'\">\r\n <div class=\"video-grid-section h-100\" [class.remove-gap]=\"style?.removeGaps\"\r\n [class.p-0]=\"style?.fullWidth\">\r\n <div class=\"video-section\" *ngFor=\"let video of content?.listItem?.data\" style=\"min-width:300px\"\r\n [ngClass]=\"{'position-relative d-flex align-items-center justify-content-center' : !video?.video?.isVideoPlaying && style?.hoverPlay}\">\r\n <video loading=\"lazy\" [simpoCorner]=\"style?.corners\" [id]=\"data?.id\" #videoEl\r\n [class]=\"data?.id+video.video.id\" [simpoObjectPosition]=\"video.video.position\"\r\n [src]=\"video.video.url\" loading=\"lazy\" class=\"h-100\" [controls]=\"!style?.hoverPlay\"\r\n (mouseenter)=\"style?.hoverPlay && onVideoHover(videoEl,video.video)\"\r\n [muted]=\"style?.muteVideos\"\r\n (mouseleave)=\"style?.hoverPlay && onVideoLeave(videoEl,video.video)\"\r\n (click)=\"openFullscreen(videoEl)\"\r\n [ngClass]=\"{'cursor-pointer' : style?.hoverPlay}\"></video>\r\n <img src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/172648c1769671647159play-fill-svgrepo-com.svg\"\r\n class=\"position-absolute\" *ngIf=\"!video?.video?.isVideoPlaying && style?.hoverPlay\"\r\n style=\"width:20%;height:20%;max-width:40px\">\r\n </div>\r\n </div>\r\n </ng-container> -->\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"style?.devider?.display\">\r\n <simpo-svg-divider [dividerType]=\"style?.devider?.deviderType\"\r\n [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\r\n </ng-container>\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>", styles: [".total-container{height:auto;position:relative}.main-video-section{display:flex;justify-content:center}.main-image-section{margin-bottom:1.5rem}.mb-1{margin-bottom:1.5rem!important}.hover_effect{position:unset;width:100%;top:0;left:0;height:100%}.wrap-scroll{overflow:scroll;flex-wrap:nowrap}@media screen and (min-width : 1200px){.grid{display:grid;grid-template-columns:1fr 1fr;grid-auto-rows:auto;grid-gap:5px}.video-grid-section{display:grid;grid-auto-flow:column;grid-template-rows:repeat(2,170px);column-gap:10px;row-gap:10px;max-height:340px;overflow-x:scroll;overflow-y:hidden;grid-auto-columns:1fr;width:100%}.grid img:first-child:last-child{grid-column:1 / span 2}.grid img:first-child:nth-last-child(2),.grid img:nth-child(2):last-child{grid-column:span 1;height:100%}.grid img:nth-child(3n+1):not(:last-child){grid-column:1;grid-row:span 2;height:100%}.grid img:nth-child(3n+2){grid-column:2}.grid img:nth-child(3n+3){grid-column:2;align-self:end}.grid img:nth-child(3n+4){grid-column:1 / span 2}}.remove-gap{grid-gap:0!important}@media screen and (min-width: 760px){.cards{padding-bottom:24px}}.main-image-container{width:100%}@media screen and (max-width: 760px){.scroll-btn{display:none!important}}.right-column-container{display:flex;flex-direction:column;height:100%;padding:0}.image-half-height{height:50%!important;flex:1}.image-half-height:first-child{margin-bottom:2px}.scroll-btn{position:absolute;top:50%;z-index:10;font-size:18px;width:36px!important;height:36px!important;border-radius:50%;border:none}.w-fit{width:fit-content!important}.video-section{text-align:center}.video-section .video-wrapper{aspect-ratio:9 / 16;margin:0 auto;position:relative}.video-section .video-wrapper video{cursor:pointer}.video-section video{width:100%;height:100%;object-fit:cover}.scroll-btn.left{left:8px}.scroll-btn.right{right:8px}.product-badge{display:flex;align-items:center;gap:12px;padding:5px 10px;background:#fff9;border-radius:10px;width:90%;box-shadow:0 6px 18px #00000026;transition:background .3s ease,box-shadow .3s ease;min-width:230px}.product-badge:hover{background:#f0f0f0e6;box-shadow:0 8px 22px #0003}.product-img{width:42px;height:42px;object-fit:contain;flex-shrink:0}.product-info{display:flex;gap:4px}.grid-columns{grid-template-columns:50% 50%}.product-title{font-size:12px;font-weight:500;color:#1a1a1a;max-width:210px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.product-link{text-decoration:none;color:inherit}.products-cards{bottom:0;overflow-x:scroll}.product-price{font-size:16px;font-weight:700;color:#000}\n"], dependencies: [{ kind: "component", type: TextEditorComponent, selector: "simpo-text-editor", inputs: ["value", "editable", "sectionId", "label", "type"], outputs: ["valueChange"] }, { kind: "ngmodule", type: SimpoElementsModule }, { kind: "component", type: i4.SvgDividerComponent, selector: "simpo-svg-divider", inputs: ["dividerType", "color"] }, { 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: "ngmodule", type: CommonModule }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type:
202
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: VideoGridSectionComponent, isStandalone: true, selector: "simpo-video-grid-section", inputs: { data: "data", index: "index", edit: "edit", customClass: "customClass", delete: "delete", nextComponentColor: "nextComponentColor" }, host: { listeners: { "window: resize": "getScreenSize($event)" } }, providers: [MessageService], viewQueries: [{ propertyName: "videogrid", first: true, predicate: ["videogrid"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<section [id]=\"data?.id\" [simpoBackground]=\"style?.background\" simpoHover (hovering)=\"showEditTabs($event)\"\r\n class=\"total-container\" [attr.style]=\"customClass\">\r\n <div #mainContainer [id]=\"data?.id\" [simpoOverlay]=\"style?.background\" [spacingHorizontal]=\"stylesLayout\">\r\n <div class=\"container-fluid\" [id]=\"data?.id\" [simpoBorder]=\"style?.border\" [simpoLayout]=\"style?.layout\">\r\n <div class=\"row w-100\" [id]=\"data?.id\" [simpoAnimation]=\"style?.animation\"\r\n [ngStyle]=\"style?.fullWidth ? {'padding': '0px'} : {}\"\r\n [ngClass]=\"{'justify-content-center' : screenWidth < 475}\">\r\n <!-- [ngClass]=\"{'w-100':style?.gridStyle === 'Style2'}\" -->\r\n <div *ngFor=\"let text of data?.content?.inputText\">\r\n <div [simpoContentTitleSpace]=\"headingSpace\">\r\n <ng-container *ngIf=\"edit || (text.value && text.value.length > 0)\">\r\n <simpo-text-editor [(value)]=\"text.value\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <!-- <ng-container *ngIf=\"style?.gridStyle == 'Style1'\"> -->\r\n <button class=\"scroll-btn left p-0 d-flex align-items-center justify-content-center\"\r\n *ngIf=\"style?.direction === 'ROW' && isOverflowing\" (click)=\"scrollLeft()\"\r\n [disabled]=\"atStart\"><mat-icon>keyboard_arrow_left</mat-icon>\r\n </button>\r\n\r\n <div class=\"main-video-section\">\r\n <div class=\"main-image-section position-relative\" [class.row]=\"style?.direction == 'ROW' \"\r\n [class.wrap-scroll]=\"style?.direction == 'ROW'\" [class.flex-wrap]=\"style?.direction == 'COLUMN'\"\r\n [id]=\"data?.id\" #videogrid [style.justifyContent]=\"getJustifyContent()\" (scroll)=\"onScroll()\"\r\n [ngClass]=\"{'flex-column' : screenWidth < 475}\">\r\n <ng-container *ngIf=\"!content?.display?.showImage\">\r\n <div class=\"video-section p-3 w-auto d-flex flex-column gap-2 align-items-center justify-content-center\"\r\n *ngFor=\"let video of content?.listItem?.data\" [simpoColumnDirective]=\"style?.size\"\r\n [id]=\"data?.id\"\r\n [attr.style]=\"style?.removeGaps ? 'padding: 0px !important; margin: 0px !important;' : {}\">\r\n <ng-container *ngIf=\"content?.display?.showText\">\r\n <div\r\n class=\"w-fit position-relative d-flex align-items-center justify-content-center\">\r\n <ng-container *ngIf=\"style?.autoPlay && !style?.hoverPlay;else normalVideo\">\r\n <video loading=\"lazy\" [simpoCorner]=\"style?.corners\" [id]=\"data?.id\"\r\n #videoEl [class]=\"data?.id + video.video.id\" [src]=\"video.video.url\"\r\n class=\"h-100 cursor-pointer\" [muted]=\"style?.muteVideos\" autoplay\r\n (click)=\"openFullscreen(videoEl)\" loop></video>\r\n </ng-container>\r\n <ng-template #normalVideo>\r\n <video loading=\"lazy\" [simpoCorner]=\"style?.corners\" [id]=\"data?.id\"\r\n #videoEl [class]=\"data?.id + video.video.id\" [src]=\"video.video.url\"\r\n class=\"h-100\" [muted]=\"style?.muteVideos\" [controls]=\"!style?.hoverPlay\"\r\n (mouseenter)=\"style?.hoverPlay && onVideoHover(videoEl, video.video)\"\r\n (mouseleave)=\"style?.hoverPlay && onVideoLeave(videoEl, video.video)\"\r\n (click)=\"openFullscreen(videoEl)\"\r\n [ngClass]=\"{ 'cursor-pointer': style?.hoverPlay }\"></video>\r\n </ng-template>\r\n <img src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/172648c1769671647159play-fill-svgrepo-com.svg\"\r\n class=\"position-absolute\"\r\n *ngIf=\"!video?.video?.isVideoPlaying && style?.hoverPlay\"\r\n style=\"width:20px\">\r\n </div>\r\n <simpo-text-editor [(value)]=\"video.video.description\"\r\n [editable]=\"edit || false\"></simpo-text-editor>\r\n </ng-container>\r\n <ng-container *ngIf=\"!content?.display?.showText\">\r\n <div class=\"video-wrapper position-relative\" [id]=\"data?.id\"\r\n [ngStyle]=\"{'width' : style?.size === 'Small' ? '180px' : style?.size === 'Medium' ? '220px' : '270px' }\">\r\n <ng-container *ngIf=\"style?.autoPlay && !style?.hoverPlay;else normalVideo\">\r\n <video loading=\"lazy\" [simpoCorner]=\"style?.corners\" [id]=\"data?.id\"\r\n #videoEl [class]=\"data?.id + video.video.id\" [src]=\"video.video.url\"\r\n class=\"h-100\" [muted]=\"style?.muteVideos\"\r\n [simpoVideoDirective]=\"style?.image\" [controls]=\"style?.hoverPlay\"\r\n (mouseenter)=\"style?.hoverPlay && onVideoHover(videoEl, video.video)\"\r\n (mouseleave)=\"style?.hoverPlay && onVideoLeave(videoEl, video.video)\"\r\n (click)=\"openFullVideo(video.video)\" autoplay loop></video>\r\n </ng-container>\r\n <ng-template #normalVideo>\r\n <video loading=\"lazy\" [simpoCorner]=\"style?.corners\" [id]=\"data?.id\"\r\n #videoEl [class]=\"data?.id + video.video.id\" [src]=\"video.video.url\"\r\n class=\"h-100\" [muted]=\"style?.muteVideos\"\r\n [simpoVideoDirective]=\"style?.image\" [controls]=\"!style?.hoverPlay\"\r\n (mouseenter)=\"style?.hoverPlay && onVideoHover(videoEl, video.video)\"\r\n (mouseleave)=\"style?.hoverPlay && onVideoLeave(videoEl, video.video)\"\r\n (click)=\"openFullVideo(video.video)\"></video>\r\n </ng-template>\r\n <div class=\"position-absolute products-cards w-100 p-3 d-flex gap-3 overflow-x-auto cursor-pointer\"\r\n *ngIf=\"video?.video?.products?.length > 0 && content?.display?.showProducts\">\r\n <ng-container *ngFor=\"let product of video.video.products\">\r\n <div class=\"product-badge\">\r\n <a [href]=\"product.redirectionUrl\" class=\"product-link\">\r\n <img [src]=\"product?.itemImages[0].imgUrl\" alt=\"Ring\"\r\n class=\"product-img\" /></a>\r\n <div class=\"product-info\">\r\n <a [href]=\"product.redirectionUrl\" class=\"product-link\">\r\n <div class=\"product-details d-flex flex-column gap-1\">\r\n <div class=\"product-title\">\r\n {{product.name.length > 16 ?\r\n product.name.trim().slice(0,15)\r\n +\r\n '...' :\r\n product.name }}\r\n </div>\r\n <div class=\"product-price d-flex align-items-start\">\r\n \u20B9{{product?.price.sellingPrice}}\r\n </div>\r\n </div>\r\n </a>\r\n <div\r\n class=\"d-flex align-items-center justify-content-center gap-1\">\r\n <img src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/700072c1770270395432favourite-svgrepo-com.svg\"\r\n style=\"width: 18px;\"\r\n (click)=\"toggleItemToFav($event, product, 'ADD')\"\r\n *ngIf=\"!product.whislist\">\r\n <img src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/304116c1770274132910favourite-svgrepo-com_(1).svg\"\r\n style=\"width: 18px;\" *ngIf=\"product.whislist\"\r\n (click)=\"toggleItemToFav($event, product, 'REMOVE')\">\r\n <img src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/695144c1770270669546cart-shopping-svgrepo-com.svg\"\r\n style=\"width:19px\"\r\n (click)=\"addItemToCart($event, product, 'ADD')\"\r\n *ngIf=\"product.quantity <= 0\">\r\n <img src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/795342c1770275383344shopping-cart-fill-svgrepo-com.svg\"\r\n style=\"width:19px\" *ngIf=\"product.quantity >= 1\"\r\n (click)=\"addItemToCart($event, product, 'SUBSTRACT')\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"!video?.video?.isVideoPlaying && style?.hoverPlay\"\r\n class=\"position-absolute d-flex align-items-center justify-content-center\"\r\n style=\"padding: 9px;top: 47%;left: 40%;background: lightgrey;border-radius: 50%;background: rgba(240, 240, 240, 0.6);backdrop-filter: blur(4px);-webkit-backdrop-filter: blur(4px);\">\r\n <img src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/935060c1770214072755play-svgrepo-com.svg\"\r\n class=\"\" style=\"width:25px;margin-left:1.5px\">\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"content?.display?.showImage\">\r\n <div class=\"video-section p-3 w-auto d-flex flex-column gap-2 align-items-center justify-content-center\"\r\n *ngFor=\"let image of content?.listItem?.data\" [simpoColumnDirective]=\"style?.size\"\r\n [id]=\"data?.id\"\r\n [attr.style]=\"style?.removeGaps ? 'padding: 0px !important; margin: 0px !important;' : {}\">\r\n <ng-container>\r\n <div class=\"video-wrapper position-relative\" [id]=\"data?.id\"\r\n [ngStyle]=\"{'width' : style?.size === 'Small' ? '180px' : style?.size === 'Medium' ? '220px' : '270px' }\">\r\n <img loading=\"lazy\" [src]=\"image.image.url\" [alt]=\"image.image.altText\"\r\n [simpoImageDirective]=\"image.image\"\r\n [attr.simpoObjectPosition]=\"image?.image?.fit !== 'contain' ? image.image?.position : null\"\r\n [simpoCorner]=\"style?.corners\" class=\"w-100 h-100\"\r\n [appImageEditor]=\"edit || false\" [imageData]=\"image.image\"\r\n [sectionId]=\"data?.id\" [simpoObjectPosition]=\"image?.image?.position\"\r\n [class]=\"data?.id+image.image.id\">\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <button class=\"scroll-btn right p-0 d-flex align-items-center justify-content-center\"\r\n *ngIf=\"style?.direction === 'ROW' && isOverflowing\" (click)=\"scrollRight()\"\r\n [disabled]=\"atEnd\"><mat-icon>keyboard_arrow_right</mat-icon>\r\n </button>\r\n <!-- </ng-container> -->\r\n <!-- <ng-container *ngIf=\"style?.gridStyle == 'Style2'\">\r\n <div class=\"video-grid-section h-100\" [class.remove-gap]=\"style?.removeGaps\"\r\n [class.p-0]=\"style?.fullWidth\">\r\n <div class=\"video-section\" *ngFor=\"let video of content?.listItem?.data\" style=\"min-width:300px\"\r\n [ngClass]=\"{'position-relative d-flex align-items-center justify-content-center' : !video?.video?.isVideoPlaying && style?.hoverPlay}\">\r\n <video loading=\"lazy\" [simpoCorner]=\"style?.corners\" [id]=\"data?.id\" #videoEl\r\n [class]=\"data?.id+video.video.id\" [simpoObjectPosition]=\"video.video.position\"\r\n [src]=\"video.video.url\" loading=\"lazy\" class=\"h-100\" [controls]=\"!style?.hoverPlay\"\r\n (mouseenter)=\"style?.hoverPlay && onVideoHover(videoEl,video.video)\"\r\n [muted]=\"style?.muteVideos\"\r\n (mouseleave)=\"style?.hoverPlay && onVideoLeave(videoEl,video.video)\"\r\n (click)=\"openFullscreen(videoEl)\"\r\n [ngClass]=\"{'cursor-pointer' : style?.hoverPlay}\"></video>\r\n <img src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/172648c1769671647159play-fill-svgrepo-com.svg\"\r\n class=\"position-absolute\" *ngIf=\"!video?.video?.isVideoPlaying && style?.hoverPlay\"\r\n style=\"width:20%;height:20%;max-width:40px\">\r\n </div>\r\n </div>\r\n </ng-container> -->\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"style?.devider?.display\">\r\n <simpo-svg-divider [dividerType]=\"style?.devider?.deviderType\"\r\n [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\r\n </ng-container>\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>", styles: [".total-container{height:auto;position:relative}.main-video-section{display:flex;justify-content:center}.main-image-section{margin-bottom:1.5rem}.mb-1{margin-bottom:1.5rem!important}.hover_effect{position:unset;width:100%;top:0;left:0;height:100%}.wrap-scroll{overflow:scroll;flex-wrap:nowrap}@media screen and (min-width : 1200px){.grid{display:grid;grid-template-columns:1fr 1fr;grid-auto-rows:auto;grid-gap:5px}.video-grid-section{display:grid;grid-auto-flow:column;grid-template-rows:repeat(2,170px);column-gap:10px;row-gap:10px;max-height:340px;overflow-x:scroll;overflow-y:hidden;grid-auto-columns:1fr;width:100%}.grid img:first-child:last-child{grid-column:1 / span 2}.grid img:first-child:nth-last-child(2),.grid img:nth-child(2):last-child{grid-column:span 1;height:100%}.grid img:nth-child(3n+1):not(:last-child){grid-column:1;grid-row:span 2;height:100%}.grid img:nth-child(3n+2){grid-column:2}.grid img:nth-child(3n+3){grid-column:2;align-self:end}.grid img:nth-child(3n+4){grid-column:1 / span 2}}.remove-gap{grid-gap:0!important}@media screen and (min-width: 760px){.cards{padding-bottom:24px}}.main-image-container{width:100%}@media screen and (max-width: 760px){.scroll-btn{display:none!important}}.right-column-container{display:flex;flex-direction:column;height:100%;padding:0}.image-half-height{height:50%!important;flex:1}.image-half-height:first-child{margin-bottom:2px}.scroll-btn{position:absolute;top:50%;z-index:10;font-size:18px;width:36px!important;height:36px!important;border-radius:50%;border:none}.w-fit{width:fit-content!important}.video-section{text-align:center}.video-section .video-wrapper{aspect-ratio:9 / 16;margin:0 auto;position:relative}.video-section .video-wrapper video{cursor:pointer}.video-section video{width:100%;height:100%;object-fit:cover}.scroll-btn.left{left:8px}.scroll-btn.right{right:8px}.product-badge{display:flex;align-items:center;gap:12px;padding:5px 10px;background:#fff9;border-radius:10px;width:90%;box-shadow:0 6px 18px #00000026;transition:background .3s ease,box-shadow .3s ease;min-width:230px}.product-badge:hover{background:#f0f0f0e6;box-shadow:0 8px 22px #0003}.product-img{width:42px;height:42px;object-fit:contain;flex-shrink:0}.product-info{display:flex;gap:4px}.product-title{font-size:12px;font-weight:500;color:#1a1a1a;max-width:210px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.product-link{text-decoration:none;color:inherit}.products-cards{bottom:0;overflow-x:scroll}.product-price{font-size:16px;font-weight:700;color:#000}\n"], dependencies: [{ kind: "component", type: TextEditorComponent, selector: "simpo-text-editor", inputs: ["value", "editable", "sectionId", "label", "type"], outputs: ["valueChange"] }, { kind: "ngmodule", type: SimpoElementsModule }, { kind: "component", type: i4.SvgDividerComponent, selector: "simpo-svg-divider", inputs: ["dividerType", "color"] }, { 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: "ngmodule", type: CommonModule }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type:
203
203
  //Directives
204
204
  AnimationDirective, selector: "[simpoAnimation]", inputs: ["simpoAnimation"] }, { kind: "directive", type: BackgroundDirective, selector: "[simpoBackground]", inputs: ["simpoBackground", "scrollValue"] }, { kind: "directive", type: BorderDirective, selector: "[simpoBorder]", inputs: ["simpoBorder"] }, { kind: "directive", type: ColumnDirectiveDirective, selector: "[simpoColumnDirective]", inputs: ["simpoColumnDirective"] }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }, { kind: "directive", type: CornerDirective, selector: "[simpoCorner]", inputs: ["simpoCorner"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }, { kind: "directive", type: OverlayDirective, selector: "[simpoOverlay]", inputs: ["simpoOverlay"] }, { kind: "directive", type: ContentTitleDirective, selector: "[simpoContentTitleSpace]", inputs: ["simpoContentTitleSpace"] }, { kind: "directive", type: SpacingHorizontalDirective, selector: "[spacingHorizontal]", inputs: ["spacingHorizontal", "isHeader"] }, { kind: "directive", type: VideoDirectiveDirective, selector: "[simpoVideoDirective]", inputs: ["simpoVideoDirective"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: ImageDirectiveDirective, selector: "[simpoImageDirective]", inputs: ["simpoImageDirective"] }, { kind: "directive", type: ObjectPositionDirective, selector: "[simpoObjectPosition]", inputs: ["simpoObjectPosition"] }, { kind: "directive", type: ImageEditorDirective, selector: "[appImageEditor]", inputs: ["appImageEditor", "imageData", "sectionId", "showIcon", "iconData"] }] }); }
205
205
  }
@@ -226,7 +226,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
226
226
  ImageDirectiveDirective,
227
227
  ObjectPositionDirective,
228
228
  ImageEditorDirective
229
- ], providers: [MessageService], template: "<section [id]=\"data?.id\" [simpoBackground]=\"style?.background\" simpoHover (hovering)=\"showEditTabs($event)\"\r\n class=\"total-container\" [attr.style]=\"customClass\">\r\n <div #mainContainer [id]=\"data?.id\" [simpoOverlay]=\"style?.background\" [spacingHorizontal]=\"stylesLayout\">\r\n <div class=\"container-fluid\" [id]=\"data?.id\" [simpoBorder]=\"style?.border\" [simpoLayout]=\"style?.layout\">\r\n <div class=\"row w-100\" [id]=\"data?.id\" [simpoAnimation]=\"style?.animation\"\r\n [ngStyle]=\"style?.fullWidth ? {'padding': '0px'} : {}\"\r\n [ngClass]=\"{'justify-content-center' : screenWidth < 475}\">\r\n <!-- [ngClass]=\"{'w-100':style?.gridStyle === 'Style2'}\" -->\r\n <div *ngFor=\"let text of data?.content?.inputText\">\r\n <div [simpoContentTitleSpace]=\"headingSpace\">\r\n <ng-container *ngIf=\"edit || (text.value && text.value.length > 0)\">\r\n <simpo-text-editor [(value)]=\"text.value\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <!-- <ng-container *ngIf=\"style?.gridStyle == 'Style1'\"> -->\r\n <button class=\"scroll-btn left p-0 d-flex align-items-center justify-content-center\"\r\n *ngIf=\"style?.direction === 'ROW' && isOverflowing\" (click)=\"scrollLeft()\"\r\n [disabled]=\"atStart\"><mat-icon>keyboard_arrow_left</mat-icon>\r\n </button>\r\n\r\n <div class=\"main-video-section\">\r\n <div class=\"main-image-section position-relative\"\r\n [class.row]=\"style?.direction == 'ROW' && screenWidth > 475\"\r\n [class.wrap-scroll]=\"style?.direction == 'ROW' && screenWidth > 475\"\r\n [class.flex-wrap]=\"style?.direction == 'COLUMN' && screenWidth > 475\" [id]=\"data?.id\" #videogrid\r\n [style.justifyContent]=\"getJustifyContent()\" (scroll)=\"onScroll()\"\r\n [ngClass]=\"{'d-grid grid-columns' : screenWidth < 475}\">\r\n <ng-container *ngIf=\"!content?.display?.showImage\">\r\n <div class=\"video-section p-3 w-auto d-flex flex-column gap-2 align-items-center justify-content-center\"\r\n *ngFor=\"let video of content?.listItem?.data\" [simpoColumnDirective]=\"style?.size\"\r\n [id]=\"data?.id\"\r\n [attr.style]=\"style?.removeGaps ? 'padding: 0px !important; margin: 0px !important;' : {}\">\r\n <ng-container *ngIf=\"content?.display?.showText\">\r\n <div\r\n class=\"w-fit position-relative d-flex align-items-center justify-content-center\">\r\n <ng-container *ngIf=\"style?.autoPlay && !style?.hoverPlay;else normalVideo\">\r\n <video loading=\"lazy\" [simpoCorner]=\"style?.corners\" [id]=\"data?.id\"\r\n #videoEl [class]=\"data?.id + video.video.id\" [src]=\"video.video.url\"\r\n class=\"h-100 cursor-pointer\" [muted]=\"style?.muteVideos\" autoplay\r\n (click)=\"openFullscreen(videoEl)\" loop></video>\r\n </ng-container>\r\n <ng-template #normalVideo>\r\n <video loading=\"lazy\" [simpoCorner]=\"style?.corners\" [id]=\"data?.id\"\r\n #videoEl [class]=\"data?.id + video.video.id\" [src]=\"video.video.url\"\r\n class=\"h-100\" [muted]=\"style?.muteVideos\" [controls]=\"!style?.hoverPlay\"\r\n (mouseenter)=\"style?.hoverPlay && onVideoHover(videoEl, video.video)\"\r\n (mouseleave)=\"style?.hoverPlay && onVideoLeave(videoEl, video.video)\"\r\n (click)=\"openFullscreen(videoEl)\"\r\n [ngClass]=\"{ 'cursor-pointer': style?.hoverPlay }\"></video>\r\n </ng-template>\r\n <img src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/172648c1769671647159play-fill-svgrepo-com.svg\"\r\n class=\"position-absolute\"\r\n *ngIf=\"!video?.video?.isVideoPlaying && style?.hoverPlay\"\r\n style=\"width:20px\">\r\n </div>\r\n <simpo-text-editor [(value)]=\"video.video.description\"\r\n [editable]=\"edit || false\"></simpo-text-editor>\r\n </ng-container>\r\n <ng-container *ngIf=\"!content?.display?.showText\">\r\n <div class=\"video-wrapper position-relative\" [id]=\"data?.id\"\r\n [ngStyle]=\"{'width' : style?.size === 'Small' ? '180px' : style?.size === 'Medium' ? '220px' : '270px' }\">\r\n <ng-container *ngIf=\"style?.autoPlay && !style?.hoverPlay;else normalVideo\">\r\n <video loading=\"lazy\" [simpoCorner]=\"style?.corners\" [id]=\"data?.id\"\r\n #videoEl [class]=\"data?.id + video.video.id\" [src]=\"video.video.url\"\r\n class=\"h-100\" [muted]=\"style?.muteVideos\"\r\n [simpoVideoDirective]=\"style?.image\" [controls]=\"style?.hoverPlay\"\r\n (mouseenter)=\"style?.hoverPlay && onVideoHover(videoEl, video.video)\"\r\n (mouseleave)=\"style?.hoverPlay && onVideoLeave(videoEl, video.video)\"\r\n (click)=\"openFullVideo(video.video)\" autoplay loop></video>\r\n </ng-container>\r\n <ng-template #normalVideo>\r\n <video loading=\"lazy\" [simpoCorner]=\"style?.corners\" [id]=\"data?.id\"\r\n #videoEl [class]=\"data?.id + video.video.id\" [src]=\"video.video.url\"\r\n class=\"h-100\" [muted]=\"style?.muteVideos\"\r\n [simpoVideoDirective]=\"style?.image\" [controls]=\"!style?.hoverPlay\"\r\n (mouseenter)=\"style?.hoverPlay && onVideoHover(videoEl, video.video)\"\r\n (mouseleave)=\"style?.hoverPlay && onVideoLeave(videoEl, video.video)\"\r\n (click)=\"openFullVideo(video.video)\"></video>\r\n </ng-template>\r\n <div class=\"position-absolute products-cards w-100 p-3 d-flex gap-3 overflow-x-auto cursor-pointer\"\r\n *ngIf=\"video?.video?.products?.length > 0 && content?.display?.showProducts\">\r\n <ng-container *ngFor=\"let product of video.video.products\">\r\n <div class=\"product-badge\">\r\n <a [href]=\"product.redirectionUrl\" class=\"product-link\">\r\n <img [src]=\"product?.itemImages[0].imgUrl\" alt=\"Ring\"\r\n class=\"product-img\" /></a>\r\n <div class=\"product-info\">\r\n <a [href]=\"product.redirectionUrl\" class=\"product-link\">\r\n <div class=\"product-details d-flex flex-column gap-1\">\r\n <div class=\"product-title\">\r\n {{product.name.length > 16 ?\r\n product.name.trim().slice(0,15)\r\n +\r\n '...' :\r\n product.name }}\r\n </div>\r\n <div class=\"product-price d-flex align-items-start\">\r\n \u20B9{{product?.price.sellingPrice}}\r\n </div>\r\n </div>\r\n </a>\r\n <div\r\n class=\"d-flex align-items-center justify-content-center gap-1\">\r\n <img src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/700072c1770270395432favourite-svgrepo-com.svg\"\r\n style=\"width: 18px;\"\r\n (click)=\"toggleItemToFav($event, product, 'ADD')\"\r\n *ngIf=\"!product.whislist\">\r\n <img src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/304116c1770274132910favourite-svgrepo-com_(1).svg\"\r\n style=\"width: 18px;\" *ngIf=\"product.whislist\"\r\n (click)=\"toggleItemToFav($event, product, 'REMOVE')\">\r\n <img src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/695144c1770270669546cart-shopping-svgrepo-com.svg\"\r\n style=\"width:19px\"\r\n (click)=\"addItemToCart($event, product, 'ADD')\"\r\n *ngIf=\"product.quantity <= 0\">\r\n <img src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/795342c1770275383344shopping-cart-fill-svgrepo-com.svg\"\r\n style=\"width:19px\" *ngIf=\"product.quantity >= 1\"\r\n (click)=\"addItemToCart($event, product, 'SUBSTRACT')\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"!video?.video?.isVideoPlaying && style?.hoverPlay\"\r\n class=\"position-absolute d-flex align-items-center justify-content-center\"\r\n style=\"padding: 9px;top: 47%;left: 40%;background: lightgrey;border-radius: 50%;background: rgba(240, 240, 240, 0.6);backdrop-filter: blur(4px);-webkit-backdrop-filter: blur(4px);\">\r\n <img src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/935060c1770214072755play-svgrepo-com.svg\"\r\n class=\"\" style=\"width:25px;margin-left:1.5px\">\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"content?.display?.showImage\">\r\n <div class=\"video-section p-3 w-auto d-flex flex-column gap-2 align-items-center justify-content-center\"\r\n *ngFor=\"let image of content?.listItem?.data\" [simpoColumnDirective]=\"style?.size\"\r\n [id]=\"data?.id\"\r\n [attr.style]=\"style?.removeGaps ? 'padding: 0px !important; margin: 0px !important;' : {}\">\r\n <ng-container>\r\n <div class=\"video-wrapper position-relative\" [id]=\"data?.id\"\r\n [ngClass]=\"{'h-100':screenWidth<475}\"\r\n [ngStyle]=\"{'width' : screenWidth > 475 ? (style?.size === 'Small' ? '180px' : style?.size === 'Medium' ? '220px' : '270px'): '100%' }\">\r\n <img loading=\"lazy\" [src]=\"image.image.url\" [alt]=\"image.image.altText\"\r\n [simpoImageDirective]=\"image.image\"\r\n [attr.simpoObjectPosition]=\"image?.image?.fit !== 'contain' ? image.image?.position : null\"\r\n [simpoCorner]=\"style?.corners\" class=\"w-100 h-100\"\r\n [appImageEditor]=\"edit || false\" [imageData]=\"image.image\"\r\n [sectionId]=\"data?.id\" [simpoObjectPosition]=\"image?.image?.position\"\r\n [class]=\"data?.id+image.image.id\">\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <button class=\"scroll-btn right p-0 d-flex align-items-center justify-content-center\"\r\n *ngIf=\"style?.direction === 'ROW' && isOverflowing\" (click)=\"scrollRight()\"\r\n [disabled]=\"atEnd\"><mat-icon>keyboard_arrow_right</mat-icon>\r\n </button>\r\n <!-- </ng-container> -->\r\n <!-- <ng-container *ngIf=\"style?.gridStyle == 'Style2'\">\r\n <div class=\"video-grid-section h-100\" [class.remove-gap]=\"style?.removeGaps\"\r\n [class.p-0]=\"style?.fullWidth\">\r\n <div class=\"video-section\" *ngFor=\"let video of content?.listItem?.data\" style=\"min-width:300px\"\r\n [ngClass]=\"{'position-relative d-flex align-items-center justify-content-center' : !video?.video?.isVideoPlaying && style?.hoverPlay}\">\r\n <video loading=\"lazy\" [simpoCorner]=\"style?.corners\" [id]=\"data?.id\" #videoEl\r\n [class]=\"data?.id+video.video.id\" [simpoObjectPosition]=\"video.video.position\"\r\n [src]=\"video.video.url\" loading=\"lazy\" class=\"h-100\" [controls]=\"!style?.hoverPlay\"\r\n (mouseenter)=\"style?.hoverPlay && onVideoHover(videoEl,video.video)\"\r\n [muted]=\"style?.muteVideos\"\r\n (mouseleave)=\"style?.hoverPlay && onVideoLeave(videoEl,video.video)\"\r\n (click)=\"openFullscreen(videoEl)\"\r\n [ngClass]=\"{'cursor-pointer' : style?.hoverPlay}\"></video>\r\n <img src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/172648c1769671647159play-fill-svgrepo-com.svg\"\r\n class=\"position-absolute\" *ngIf=\"!video?.video?.isVideoPlaying && style?.hoverPlay\"\r\n style=\"width:20%;height:20%;max-width:40px\">\r\n </div>\r\n </div>\r\n </ng-container> -->\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"style?.devider?.display\">\r\n <simpo-svg-divider [dividerType]=\"style?.devider?.deviderType\"\r\n [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\r\n </ng-container>\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>", styles: [".total-container{height:auto;position:relative}.main-video-section{display:flex;justify-content:center}.main-image-section{margin-bottom:1.5rem}.mb-1{margin-bottom:1.5rem!important}.hover_effect{position:unset;width:100%;top:0;left:0;height:100%}.wrap-scroll{overflow:scroll;flex-wrap:nowrap}@media screen and (min-width : 1200px){.grid{display:grid;grid-template-columns:1fr 1fr;grid-auto-rows:auto;grid-gap:5px}.video-grid-section{display:grid;grid-auto-flow:column;grid-template-rows:repeat(2,170px);column-gap:10px;row-gap:10px;max-height:340px;overflow-x:scroll;overflow-y:hidden;grid-auto-columns:1fr;width:100%}.grid img:first-child:last-child{grid-column:1 / span 2}.grid img:first-child:nth-last-child(2),.grid img:nth-child(2):last-child{grid-column:span 1;height:100%}.grid img:nth-child(3n+1):not(:last-child){grid-column:1;grid-row:span 2;height:100%}.grid img:nth-child(3n+2){grid-column:2}.grid img:nth-child(3n+3){grid-column:2;align-self:end}.grid img:nth-child(3n+4){grid-column:1 / span 2}}.remove-gap{grid-gap:0!important}@media screen and (min-width: 760px){.cards{padding-bottom:24px}}.main-image-container{width:100%}@media screen and (max-width: 760px){.scroll-btn{display:none!important}}.right-column-container{display:flex;flex-direction:column;height:100%;padding:0}.image-half-height{height:50%!important;flex:1}.image-half-height:first-child{margin-bottom:2px}.scroll-btn{position:absolute;top:50%;z-index:10;font-size:18px;width:36px!important;height:36px!important;border-radius:50%;border:none}.w-fit{width:fit-content!important}.video-section{text-align:center}.video-section .video-wrapper{aspect-ratio:9 / 16;margin:0 auto;position:relative}.video-section .video-wrapper video{cursor:pointer}.video-section video{width:100%;height:100%;object-fit:cover}.scroll-btn.left{left:8px}.scroll-btn.right{right:8px}.product-badge{display:flex;align-items:center;gap:12px;padding:5px 10px;background:#fff9;border-radius:10px;width:90%;box-shadow:0 6px 18px #00000026;transition:background .3s ease,box-shadow .3s ease;min-width:230px}.product-badge:hover{background:#f0f0f0e6;box-shadow:0 8px 22px #0003}.product-img{width:42px;height:42px;object-fit:contain;flex-shrink:0}.product-info{display:flex;gap:4px}.grid-columns{grid-template-columns:50% 50%}.product-title{font-size:12px;font-weight:500;color:#1a1a1a;max-width:210px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.product-link{text-decoration:none;color:inherit}.products-cards{bottom:0;overflow-x:scroll}.product-price{font-size:16px;font-weight:700;color:#000}\n"] }]
229
+ ], providers: [MessageService], template: "<section [id]=\"data?.id\" [simpoBackground]=\"style?.background\" simpoHover (hovering)=\"showEditTabs($event)\"\r\n class=\"total-container\" [attr.style]=\"customClass\">\r\n <div #mainContainer [id]=\"data?.id\" [simpoOverlay]=\"style?.background\" [spacingHorizontal]=\"stylesLayout\">\r\n <div class=\"container-fluid\" [id]=\"data?.id\" [simpoBorder]=\"style?.border\" [simpoLayout]=\"style?.layout\">\r\n <div class=\"row w-100\" [id]=\"data?.id\" [simpoAnimation]=\"style?.animation\"\r\n [ngStyle]=\"style?.fullWidth ? {'padding': '0px'} : {}\"\r\n [ngClass]=\"{'justify-content-center' : screenWidth < 475}\">\r\n <!-- [ngClass]=\"{'w-100':style?.gridStyle === 'Style2'}\" -->\r\n <div *ngFor=\"let text of data?.content?.inputText\">\r\n <div [simpoContentTitleSpace]=\"headingSpace\">\r\n <ng-container *ngIf=\"edit || (text.value && text.value.length > 0)\">\r\n <simpo-text-editor [(value)]=\"text.value\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <!-- <ng-container *ngIf=\"style?.gridStyle == 'Style1'\"> -->\r\n <button class=\"scroll-btn left p-0 d-flex align-items-center justify-content-center\"\r\n *ngIf=\"style?.direction === 'ROW' && isOverflowing\" (click)=\"scrollLeft()\"\r\n [disabled]=\"atStart\"><mat-icon>keyboard_arrow_left</mat-icon>\r\n </button>\r\n\r\n <div class=\"main-video-section\">\r\n <div class=\"main-image-section position-relative\" [class.row]=\"style?.direction == 'ROW' \"\r\n [class.wrap-scroll]=\"style?.direction == 'ROW'\" [class.flex-wrap]=\"style?.direction == 'COLUMN'\"\r\n [id]=\"data?.id\" #videogrid [style.justifyContent]=\"getJustifyContent()\" (scroll)=\"onScroll()\"\r\n [ngClass]=\"{'flex-column' : screenWidth < 475}\">\r\n <ng-container *ngIf=\"!content?.display?.showImage\">\r\n <div class=\"video-section p-3 w-auto d-flex flex-column gap-2 align-items-center justify-content-center\"\r\n *ngFor=\"let video of content?.listItem?.data\" [simpoColumnDirective]=\"style?.size\"\r\n [id]=\"data?.id\"\r\n [attr.style]=\"style?.removeGaps ? 'padding: 0px !important; margin: 0px !important;' : {}\">\r\n <ng-container *ngIf=\"content?.display?.showText\">\r\n <div\r\n class=\"w-fit position-relative d-flex align-items-center justify-content-center\">\r\n <ng-container *ngIf=\"style?.autoPlay && !style?.hoverPlay;else normalVideo\">\r\n <video loading=\"lazy\" [simpoCorner]=\"style?.corners\" [id]=\"data?.id\"\r\n #videoEl [class]=\"data?.id + video.video.id\" [src]=\"video.video.url\"\r\n class=\"h-100 cursor-pointer\" [muted]=\"style?.muteVideos\" autoplay\r\n (click)=\"openFullscreen(videoEl)\" loop></video>\r\n </ng-container>\r\n <ng-template #normalVideo>\r\n <video loading=\"lazy\" [simpoCorner]=\"style?.corners\" [id]=\"data?.id\"\r\n #videoEl [class]=\"data?.id + video.video.id\" [src]=\"video.video.url\"\r\n class=\"h-100\" [muted]=\"style?.muteVideos\" [controls]=\"!style?.hoverPlay\"\r\n (mouseenter)=\"style?.hoverPlay && onVideoHover(videoEl, video.video)\"\r\n (mouseleave)=\"style?.hoverPlay && onVideoLeave(videoEl, video.video)\"\r\n (click)=\"openFullscreen(videoEl)\"\r\n [ngClass]=\"{ 'cursor-pointer': style?.hoverPlay }\"></video>\r\n </ng-template>\r\n <img src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/172648c1769671647159play-fill-svgrepo-com.svg\"\r\n class=\"position-absolute\"\r\n *ngIf=\"!video?.video?.isVideoPlaying && style?.hoverPlay\"\r\n style=\"width:20px\">\r\n </div>\r\n <simpo-text-editor [(value)]=\"video.video.description\"\r\n [editable]=\"edit || false\"></simpo-text-editor>\r\n </ng-container>\r\n <ng-container *ngIf=\"!content?.display?.showText\">\r\n <div class=\"video-wrapper position-relative\" [id]=\"data?.id\"\r\n [ngStyle]=\"{'width' : style?.size === 'Small' ? '180px' : style?.size === 'Medium' ? '220px' : '270px' }\">\r\n <ng-container *ngIf=\"style?.autoPlay && !style?.hoverPlay;else normalVideo\">\r\n <video loading=\"lazy\" [simpoCorner]=\"style?.corners\" [id]=\"data?.id\"\r\n #videoEl [class]=\"data?.id + video.video.id\" [src]=\"video.video.url\"\r\n class=\"h-100\" [muted]=\"style?.muteVideos\"\r\n [simpoVideoDirective]=\"style?.image\" [controls]=\"style?.hoverPlay\"\r\n (mouseenter)=\"style?.hoverPlay && onVideoHover(videoEl, video.video)\"\r\n (mouseleave)=\"style?.hoverPlay && onVideoLeave(videoEl, video.video)\"\r\n (click)=\"openFullVideo(video.video)\" autoplay loop></video>\r\n </ng-container>\r\n <ng-template #normalVideo>\r\n <video loading=\"lazy\" [simpoCorner]=\"style?.corners\" [id]=\"data?.id\"\r\n #videoEl [class]=\"data?.id + video.video.id\" [src]=\"video.video.url\"\r\n class=\"h-100\" [muted]=\"style?.muteVideos\"\r\n [simpoVideoDirective]=\"style?.image\" [controls]=\"!style?.hoverPlay\"\r\n (mouseenter)=\"style?.hoverPlay && onVideoHover(videoEl, video.video)\"\r\n (mouseleave)=\"style?.hoverPlay && onVideoLeave(videoEl, video.video)\"\r\n (click)=\"openFullVideo(video.video)\"></video>\r\n </ng-template>\r\n <div class=\"position-absolute products-cards w-100 p-3 d-flex gap-3 overflow-x-auto cursor-pointer\"\r\n *ngIf=\"video?.video?.products?.length > 0 && content?.display?.showProducts\">\r\n <ng-container *ngFor=\"let product of video.video.products\">\r\n <div class=\"product-badge\">\r\n <a [href]=\"product.redirectionUrl\" class=\"product-link\">\r\n <img [src]=\"product?.itemImages[0].imgUrl\" alt=\"Ring\"\r\n class=\"product-img\" /></a>\r\n <div class=\"product-info\">\r\n <a [href]=\"product.redirectionUrl\" class=\"product-link\">\r\n <div class=\"product-details d-flex flex-column gap-1\">\r\n <div class=\"product-title\">\r\n {{product.name.length > 16 ?\r\n product.name.trim().slice(0,15)\r\n +\r\n '...' :\r\n product.name }}\r\n </div>\r\n <div class=\"product-price d-flex align-items-start\">\r\n \u20B9{{product?.price.sellingPrice}}\r\n </div>\r\n </div>\r\n </a>\r\n <div\r\n class=\"d-flex align-items-center justify-content-center gap-1\">\r\n <img src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/700072c1770270395432favourite-svgrepo-com.svg\"\r\n style=\"width: 18px;\"\r\n (click)=\"toggleItemToFav($event, product, 'ADD')\"\r\n *ngIf=\"!product.whislist\">\r\n <img src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/304116c1770274132910favourite-svgrepo-com_(1).svg\"\r\n style=\"width: 18px;\" *ngIf=\"product.whislist\"\r\n (click)=\"toggleItemToFav($event, product, 'REMOVE')\">\r\n <img src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/695144c1770270669546cart-shopping-svgrepo-com.svg\"\r\n style=\"width:19px\"\r\n (click)=\"addItemToCart($event, product, 'ADD')\"\r\n *ngIf=\"product.quantity <= 0\">\r\n <img src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/795342c1770275383344shopping-cart-fill-svgrepo-com.svg\"\r\n style=\"width:19px\" *ngIf=\"product.quantity >= 1\"\r\n (click)=\"addItemToCart($event, product, 'SUBSTRACT')\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"!video?.video?.isVideoPlaying && style?.hoverPlay\"\r\n class=\"position-absolute d-flex align-items-center justify-content-center\"\r\n style=\"padding: 9px;top: 47%;left: 40%;background: lightgrey;border-radius: 50%;background: rgba(240, 240, 240, 0.6);backdrop-filter: blur(4px);-webkit-backdrop-filter: blur(4px);\">\r\n <img src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/935060c1770214072755play-svgrepo-com.svg\"\r\n class=\"\" style=\"width:25px;margin-left:1.5px\">\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"content?.display?.showImage\">\r\n <div class=\"video-section p-3 w-auto d-flex flex-column gap-2 align-items-center justify-content-center\"\r\n *ngFor=\"let image of content?.listItem?.data\" [simpoColumnDirective]=\"style?.size\"\r\n [id]=\"data?.id\"\r\n [attr.style]=\"style?.removeGaps ? 'padding: 0px !important; margin: 0px !important;' : {}\">\r\n <ng-container>\r\n <div class=\"video-wrapper position-relative\" [id]=\"data?.id\"\r\n [ngStyle]=\"{'width' : style?.size === 'Small' ? '180px' : style?.size === 'Medium' ? '220px' : '270px' }\">\r\n <img loading=\"lazy\" [src]=\"image.image.url\" [alt]=\"image.image.altText\"\r\n [simpoImageDirective]=\"image.image\"\r\n [attr.simpoObjectPosition]=\"image?.image?.fit !== 'contain' ? image.image?.position : null\"\r\n [simpoCorner]=\"style?.corners\" class=\"w-100 h-100\"\r\n [appImageEditor]=\"edit || false\" [imageData]=\"image.image\"\r\n [sectionId]=\"data?.id\" [simpoObjectPosition]=\"image?.image?.position\"\r\n [class]=\"data?.id+image.image.id\">\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <button class=\"scroll-btn right p-0 d-flex align-items-center justify-content-center\"\r\n *ngIf=\"style?.direction === 'ROW' && isOverflowing\" (click)=\"scrollRight()\"\r\n [disabled]=\"atEnd\"><mat-icon>keyboard_arrow_right</mat-icon>\r\n </button>\r\n <!-- </ng-container> -->\r\n <!-- <ng-container *ngIf=\"style?.gridStyle == 'Style2'\">\r\n <div class=\"video-grid-section h-100\" [class.remove-gap]=\"style?.removeGaps\"\r\n [class.p-0]=\"style?.fullWidth\">\r\n <div class=\"video-section\" *ngFor=\"let video of content?.listItem?.data\" style=\"min-width:300px\"\r\n [ngClass]=\"{'position-relative d-flex align-items-center justify-content-center' : !video?.video?.isVideoPlaying && style?.hoverPlay}\">\r\n <video loading=\"lazy\" [simpoCorner]=\"style?.corners\" [id]=\"data?.id\" #videoEl\r\n [class]=\"data?.id+video.video.id\" [simpoObjectPosition]=\"video.video.position\"\r\n [src]=\"video.video.url\" loading=\"lazy\" class=\"h-100\" [controls]=\"!style?.hoverPlay\"\r\n (mouseenter)=\"style?.hoverPlay && onVideoHover(videoEl,video.video)\"\r\n [muted]=\"style?.muteVideos\"\r\n (mouseleave)=\"style?.hoverPlay && onVideoLeave(videoEl,video.video)\"\r\n (click)=\"openFullscreen(videoEl)\"\r\n [ngClass]=\"{'cursor-pointer' : style?.hoverPlay}\"></video>\r\n <img src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/172648c1769671647159play-fill-svgrepo-com.svg\"\r\n class=\"position-absolute\" *ngIf=\"!video?.video?.isVideoPlaying && style?.hoverPlay\"\r\n style=\"width:20%;height:20%;max-width:40px\">\r\n </div>\r\n </div>\r\n </ng-container> -->\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"style?.devider?.display\">\r\n <simpo-svg-divider [dividerType]=\"style?.devider?.deviderType\"\r\n [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\r\n </ng-container>\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>", styles: [".total-container{height:auto;position:relative}.main-video-section{display:flex;justify-content:center}.main-image-section{margin-bottom:1.5rem}.mb-1{margin-bottom:1.5rem!important}.hover_effect{position:unset;width:100%;top:0;left:0;height:100%}.wrap-scroll{overflow:scroll;flex-wrap:nowrap}@media screen and (min-width : 1200px){.grid{display:grid;grid-template-columns:1fr 1fr;grid-auto-rows:auto;grid-gap:5px}.video-grid-section{display:grid;grid-auto-flow:column;grid-template-rows:repeat(2,170px);column-gap:10px;row-gap:10px;max-height:340px;overflow-x:scroll;overflow-y:hidden;grid-auto-columns:1fr;width:100%}.grid img:first-child:last-child{grid-column:1 / span 2}.grid img:first-child:nth-last-child(2),.grid img:nth-child(2):last-child{grid-column:span 1;height:100%}.grid img:nth-child(3n+1):not(:last-child){grid-column:1;grid-row:span 2;height:100%}.grid img:nth-child(3n+2){grid-column:2}.grid img:nth-child(3n+3){grid-column:2;align-self:end}.grid img:nth-child(3n+4){grid-column:1 / span 2}}.remove-gap{grid-gap:0!important}@media screen and (min-width: 760px){.cards{padding-bottom:24px}}.main-image-container{width:100%}@media screen and (max-width: 760px){.scroll-btn{display:none!important}}.right-column-container{display:flex;flex-direction:column;height:100%;padding:0}.image-half-height{height:50%!important;flex:1}.image-half-height:first-child{margin-bottom:2px}.scroll-btn{position:absolute;top:50%;z-index:10;font-size:18px;width:36px!important;height:36px!important;border-radius:50%;border:none}.w-fit{width:fit-content!important}.video-section{text-align:center}.video-section .video-wrapper{aspect-ratio:9 / 16;margin:0 auto;position:relative}.video-section .video-wrapper video{cursor:pointer}.video-section video{width:100%;height:100%;object-fit:cover}.scroll-btn.left{left:8px}.scroll-btn.right{right:8px}.product-badge{display:flex;align-items:center;gap:12px;padding:5px 10px;background:#fff9;border-radius:10px;width:90%;box-shadow:0 6px 18px #00000026;transition:background .3s ease,box-shadow .3s ease;min-width:230px}.product-badge:hover{background:#f0f0f0e6;box-shadow:0 8px 22px #0003}.product-img{width:42px;height:42px;object-fit:contain;flex-shrink:0}.product-info{display:flex;gap:4px}.product-title{font-size:12px;font-weight:500;color:#1a1a1a;max-width:210px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.product-link{text-decoration:none;color:inherit}.products-cards{bottom:0;overflow-x:scroll}.product-price{font-size:16px;font-weight:700;color:#000}\n"] }]
230
230
  }], ctorParameters: () => [{ type: i1.MessageService }, { type: i2.CartService }, { type: i3.MatDialog }], propDecorators: { videogrid: [{
231
231
  type: ViewChild,
232
232
  args: ['videogrid', { static: false }]
@@ -246,4 +246,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
246
246
  type: HostListener,
247
247
  args: ["window: resize", ["$event"]]
248
248
  }] } });
249
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlkZW8tZ3JpZC1zZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvc2VjdGlvbnMvdmlkZW8tZ3JpZC1zZWN0aW9uL3ZpZGVvLWdyaWQtc2VjdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3ZpZGVvLWdyaWQtc2VjdGlvbi92aWRlby1ncmlkLXNlY3Rpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLFdBQVcsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0Ms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QkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCBCYXNlU2VjdGlvbiBmcm9tICcuLi9CYXNlU2VjdGlvbic7XHJcbmltcG9ydCB7IFZpZGVvR3JpZENvbnRlbnRNb2RhbCwgVmlkZW9HcmlkU2VjdGlvbk1vZGVsLCBWaWRlb0dyaWRTdHlsZXNNb2RlbCB9IGZyb20gJy4vdmlkZW8tZ3JpZC1zZWN0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgQmFja2dyb3VuZE1vZGVsLCBMYXlPdXRNb2RlbCB9IGZyb20gJy4uLy4uL3N0eWxlcy9zdHlsZS5tb2RlbCc7XHJcbmltcG9ydCB7IFNpbXBvQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9pbmRleCc7XHJcbmltcG9ydCB7IE9yZGVyZWRJdGVtcyB9IGZyb20gJy4uLy4uL2Vjb21tZXJjZS9zdHlsZXMvT3JkZXJlZEl0ZW1zLm1vZGFsJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFNpbXBvRWxlbWVudHNNb2R1bGUgfSBmcm9tICcuLi8uLi9lbGVtZW50cy9pbmRleCc7XHJcbmltcG9ydCB7IEFuaW1hdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9hbmltYXRpb24tZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQmFja2dyb3VuZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9iYWNrZ3JvdW5kLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbnRlbnRGaXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29udGVudC1maXQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQm9yZGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2JvcmRlci1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb2x1bW5EaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29sdW1uLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb3JuZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29ybmVyLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2hvdmVyLWVsZW1lbnQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgT3ZlcmxheURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9vdmVybGF5LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbnRlbnRUaXRsZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50LXRpdGxlLXNwYWNpbmcuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU1BBQ0lORyB9IGZyb20gJy4uLy4uL3N0eWxlcy9pbmRleCc7XHJcbmltcG9ydCB7IFRleHRFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi8uLi9lbGVtZW50cy90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTcGFjaW5nSG9yaXpvbnRhbERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9zcGFjaW5nLWhvcml6b250YWwuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgVmlkZW9EaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvdmlkZW8tZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgSXRlbVZhcmlhbnQsIFByb2R1Y3QgfSBmcm9tICdwcm9qZWN0cy9zaW1wby11aS9zcmMvcHVibGljLWFwaSc7XHJcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2FydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmlkZW9TaG93Y2FzZUNvbXBvbmVudCB9IGZyb20gJy4uL3ZpZGVvLXNob3djYXNlL3ZpZGVvLXNob3djYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IEltYWdlRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi8uLi8uLi9kaXJlY3RpdmUvaW1hZ2UtZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEltYWdlRWRpdG9yRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2ltYWdlLWVkaXRvci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBPYmplY3RQb3NpdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9pbWFnZS1wb3NpdGlvbi5kaXJlY3RpdmUnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLXZpZGVvLWdyaWQtc2VjdGlvbicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBUZXh0RWRpdG9yQ29tcG9uZW50LFxyXG4gICAgU2ltcG9FbGVtZW50c01vZHVsZSxcclxuICAgIFNpbXBvQ29tcG9uZW50TW9kdWxlLFxyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgLy9EaXJlY3RpdmVzXHJcbiAgICBBbmltYXRpb25EaXJlY3RpdmUsXHJcbiAgICBCYWNrZ3JvdW5kRGlyZWN0aXZlLFxyXG4gICAgQm9yZGVyRGlyZWN0aXZlLFxyXG4gICAgQ29sdW1uRGlyZWN0aXZlRGlyZWN0aXZlLFxyXG4gICAgQ29udGVudEZpdERpcmVjdGl2ZSxcclxuICAgIENvcm5lckRpcmVjdGl2ZSxcclxuICAgIEhvdmVyRGlyZWN0aXZlLFxyXG4gICAgT3ZlcmxheURpcmVjdGl2ZSxcclxuICAgIENvbnRlbnRUaXRsZURpcmVjdGl2ZSxcclxuICAgIFNwYWNpbmdIb3Jpem9udGFsRGlyZWN0aXZlLFxyXG4gICAgVmlkZW9EaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBNYXRJY29uLFxyXG4gICAgSW1hZ2VEaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBPYmplY3RQb3NpdGlvbkRpcmVjdGl2ZSxcclxuICAgIEltYWdlRWRpdG9yRGlyZWN0aXZlXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3ZpZGVvLWdyaWQtc2VjdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3ZpZGVvLWdyaWQtc2VjdGlvbi5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVmlkZW9HcmlkU2VjdGlvbkNvbXBvbmVudCBleHRlbmRzIEJhc2VTZWN0aW9uIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1hdERpYWxvZzogTWF0RGlhbG9nXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuICBAVmlld0NoaWxkKCd2aWRlb2dyaWQnLCB7IHN0YXRpYzogZmFsc2UgfSkgdmlkZW9ncmlkITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcbiAgQElucHV0KCkgZGF0YT86IFZpZGVvR3JpZFNlY3Rpb25Nb2RlbDtcclxuICBASW5wdXQoKSBpbmRleD86IG51bWJlcjtcclxuICBASW5wdXQoKSBlZGl0PzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBjdXN0b21DbGFzcz86IHN0cmluZztcclxuICBASW5wdXQoKSBkZWxldGU/OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIG5leHRDb21wb25lbnRDb2xvcj86IEJhY2tncm91bmRNb2RlbDtcclxuICBjb250ZW50PzogVmlkZW9HcmlkQ29udGVudE1vZGFsO1xyXG4gIHN0eWxlPzogVmlkZW9HcmlkU3R5bGVzTW9kZWw7XHJcbiAgcHJpdmF0ZSBVU0VSX1dJU0hMSVNUOiBPcmRlcmVkSXRlbXNbXSA9IFtdO1xyXG4gIHByaXZhdGUgVVNFUl9DQVJUOiBPcmRlcmVkSXRlbXNbXSA9IFtdO1xyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5nZXRTY3JlZW5TaXplKCk7XHJcbiAgICB0aGlzLmNvbnRlbnQgPSB0aGlzLmRhdGE/LmNvbnRlbnQ7XHJcbiAgICB0aGlzLnN0eWxlID0gdGhpcy5kYXRhPy5zdHlsZXM7XHJcbiAgICB0aGlzLmRlbGV0ZVNlbGVjdGVkID0gdGhpcy5kZWxldGU7XHJcbiAgfVxyXG4gIHNjcmVlbldpZHRoOiBhbnk7XHJcbiAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzogcmVzaXplXCIsIFtcIiRldmVudFwiXSlcclxuICBnZXRTY3JlZW5TaXplKCkge1xyXG4gICAgdGhpcy5zY3JlZW5XaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gIH1cclxuICBnZXQgc3R5bGVzTGF5b3V0KCkge1xyXG4gICAgcmV0dXJuIHsgLi4udGhpcy5zdHlsZT8ubGF5b3V0IH0gYXMgTGF5T3V0TW9kZWw7XHJcbiAgfVxyXG4gIGdldCBoZWFkaW5nU3BhY2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdHlsZT8ubGF5b3V0Py5oZWFkaW5nU3BhY2luZyBhcyBTUEFDSU5HO1xyXG4gIH1cclxuICBpc092ZXJmbG93aW5nID0gZmFsc2U7IGF0U3RhcnQgPSB0cnVlOyBhdEVuZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgZ2V0IHNjcm9sbFN0ZXAoKSB7IHJldHVybiBNYXRoLnJvdW5kKCh0aGlzLnZpZGVvZ3JpZD8ubmF0aXZlRWxlbWVudD8uY2xpZW50V2lkdGggfHwgMzAwKSAqIDAuOCk7IH1cclxuICBwcml2YXRlIHVwZGF0ZUVkZ2VzKCkge1xyXG4gICAgY29uc3QgZWwgPSB0aGlzLnZpZGVvZ3JpZD8ubmF0aXZlRWxlbWVudDtcclxuICAgIGlmICghZWwpIHJldHVybjtcclxuICAgIHRoaXMuYXRTdGFydCA9IGVsLnNjcm9sbExlZnQgPD0gNTtcclxuICAgIHRoaXMuYXRFbmQgPSBlbC5zY3JvbGxMZWZ0ICsgZWwuY2xpZW50V2lkdGggPj0gZWwuc2Nyb2xsV2lkdGggLSA1O1xyXG4gIH1cclxuICBzY3JvbGxMZWZ0KCkge1xyXG4gICAgY29uc3QgZWwgPSB0aGlzLnZpZGVvZ3JpZD8ubmF0aXZlRWxlbWVudDsgaWYgKCFlbCkgcmV0dXJuO1xyXG4gICAgZWwuc2Nyb2xsQnkoeyBsZWZ0OiAtdGhpcy5zY3JvbGxTdGVwLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlRWRnZXMoKSwgMzAwKTtcclxuICB9XHJcbiAgZ2V0SnVzdGlmeUNvbnRlbnQoKSB7XHJcbiAgICBjb25zdCBlbCA9IHRoaXMudmlkZW9ncmlkPy5uYXRpdmVFbGVtZW50O1xyXG4gICAgaWYgKCFlbCkgcmV0dXJuICcnO1xyXG4gICAgdGhpcy5pc092ZXJmbG93aW5nID0gZWwuc2Nyb2xsV2lkdGggPiBlbC5jbGllbnRXaWR0aDtcclxuICAgIGlmICh0aGlzLmlzT3ZlcmZsb3dpbmcpIHtcclxuICAgICAgcmV0dXJuICdmbGV4LXN0YXJ0JztcclxuICAgIH1cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcbiAgb25TY3JvbGwoKSB7IHRoaXMudXBkYXRlRWRnZXMoKTsgfVxyXG5cclxuICBzY3JvbGxSaWdodCgpIHtcclxuICAgIGNvbnN0IGVsID0gdGhpcy52aWRlb2dyaWQ/Lm5hdGl2ZUVsZW1lbnQ7IGlmICghZWwpIHJldHVybjtcclxuICAgIGVsLnNjcm9sbEJ5KHsgbGVmdDogdGhpcy5zY3JvbGxTdGVwLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlRWRnZXMoKSwgMzAwKTtcclxuICB9XHJcbiAgb25WaWRlb0hvdmVyKHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50LCB2aWRlb0VsZW1lbnQ/OiBhbnkpIHtcclxuICAgIHZpZGVvLmN1cnJlbnRUaW1lID0gMDtcclxuICAgIHZpZGVvLnBsYXkoKS5jYXRjaCgoKSA9PiB7IH0pO1xyXG4gICAgdmlkZW9FbGVtZW50LmlzVmlkZW9QbGF5aW5nID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uVmlkZW9MZWF2ZSh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCwgdmlkZW9FbGVtZW50PzogYW55KSB7XHJcbiAgICB2aWRlby5wYXVzZSgpO1xyXG4gICAgdmlkZW8uY3VycmVudFRpbWUgPSAwO1xyXG4gICAgdmlkZW9FbGVtZW50LmlzVmlkZW9QbGF5aW5nID0gZmFsc2U7XHJcbiAgfVxyXG4gIG9wZW5GdWxsVmlkZW8odmlkZW86IGFueSkge1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5tYXREaWFsb2cub3BlbihWaWRlb1Nob3djYXNlQ29tcG9uZW50LCB7XHJcbiAgICAgIGhlaWdodDogJzEwMHZoJyxcclxuICAgICAgd2lkdGg6ICcxMDB2dycsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICB2aWRlb3M6IHRoaXMuY29udGVudD8ubGlzdEl0ZW0udmlkZW9EYXRhLFxyXG4gICAgICAgIGluaXRpYXRlVmlkZW9JZDogdmlkZW8uaWRcclxuICAgICAgfSxcclxuICAgICAgcGFuZWxDbGFzczogJ2RpYWxvZy10cmFuc3BhcmVudCdcclxuICAgIH0pO1xyXG5cclxuICB9XHJcbiAgb3BlbkZ1bGxzY3JlZW4odmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpIHtcclxuICAgIGlmICh0aGlzLnN0eWxlPy5ob3ZlclBsYXkpIHtcclxuICAgICAgaWYgKHZpZGVvLnJlcXVlc3RGdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgdmlkZW8ucmVxdWVzdEZ1bGxzY3JlZW4oKTtcclxuICAgICAgfSBlbHNlIGlmICgodmlkZW8gYXMgYW55KS53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbikge1xyXG4gICAgICAgIC8vIFNhZmFyaVxyXG4gICAgICAgICh2aWRlbyBhcyBhbnkpLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoKHZpZGVvIGFzIGFueSkubXNSZXF1ZXN0RnVsbHNjcmVlbikge1xyXG4gICAgICAgIC8vIElFMTFcclxuICAgICAgICAodmlkZW8gYXMgYW55KS5tc1JlcXVlc3RGdWxsc2NyZWVuKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIE9wdGlvbmFsOiBwbGF5IHdoZW4gZnVsbHNjcmVlbiBvcGVuc1xyXG4gICAgICB2aWRlby5wbGF5KCkuY2F0Y2goKCkgPT4geyB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0SXRlbVZhcmllbnQocHJvZHVjdDogUHJvZHVjdCwgdmFyaWVudElkOiBzdHJpbmcpOiBJdGVtVmFyaWFudCB8IG51bGwge1xyXG4gICAgbGV0IHNlbGVjdGVkVmFyaWVudDogSXRlbVZhcmlhbnQgfCBudWxsID0gbnVsbDtcclxuICAgIHByb2R1Y3Q/Lml0ZW1WYXJpYW50Py5mb3JFYWNoKCh2YXJpZW50OiBJdGVtVmFyaWFudCkgPT4ge1xyXG4gICAgICBpZiAodmFyaWVudC52YXJpYW50SWQgPT09IHZhcmllbnRJZClcclxuICAgICAgICBzZWxlY3RlZFZhcmllbnQgPSB2YXJpZW50O1xyXG4gICAgfSlcclxuICAgIHJldHVybiBzZWxlY3RlZFZhcmllbnQ7XHJcbiAgfVxyXG4gIHRvZ2dsZUl0ZW1Ub0ZhdihldmVudDogUG9pbnRlckV2ZW50IHwgTW91c2VFdmVudCwgcHJvZHVjdDogUHJvZHVjdCwgdHlwZTogJ0FERCcgfCAnUkVNT1ZFJykge1xyXG4gICAgaWYgKHR5cGUgPT0gJ0FERCcpIHtcclxuICAgICAgcHJvZHVjdC53aGlzbGlzdCA9IHRydWU7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeTogJ1dpc2hsaXN0JywgZGV0YWlsOiAnSXRlbSBhZGRlZCB0byB5b3VyIHdpc2hsaXN0JyB9KTtcclxuICAgICAgaWYgKHByb2R1Y3Q/Lml0ZW1WYXJpYW50Py5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBpdGVtVmFyaWVudDogSXRlbVZhcmlhbnQgfCBudWxsID0gdGhpcy5nZXRJdGVtVmFyaWVudChwcm9kdWN0LCBwcm9kdWN0LnZhcmllbnRJZCk7XHJcbiAgICAgICAgaWYgKGl0ZW1WYXJpZW50KSB7XHJcbiAgICAgICAgICBpdGVtVmFyaWVudC53aXNobGlzdCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZEl0ZW1Ub0Zhdm91cml0ZShwcm9kdWN0IGFzIFByb2R1Y3QsIGl0ZW1WYXJpZW50LnZhcmlhbnRJZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY2FydFNlcnZpY2UuYWRkSXRlbVRvRmF2b3VyaXRlKHByb2R1Y3QpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcHJvZHVjdC53aGlzbGlzdCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnaW5mbycsIHN1bW1hcnk6ICdXaXNobGlzdCcsIGRldGFpbDogJ0l0ZW0gcmVtb3ZlZCBmcm9tIHlvdXIgd2lzaGxpc3QnIH0pO1xyXG4gICAgICB0aGlzLmNhcnRTZXJ2aWNlLnJlbW92ZUl0ZW1Gcm9tRmF2b3VyaXRlKHByb2R1Y3QudmFyaWVudElkKTtcclxuICAgIH1cclxuICAgIGlmIChwcm9kdWN0LndoaXNsaXN0KSB7XHJcbiAgICAgIHRoaXMuVVNFUl9XSVNITElTVD8ucHVzaChuZXcgT3JkZXJlZEl0ZW1zKHByb2R1Y3QsIHByb2R1Y3QudmFyaWVudElkKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLlVTRVJfV0lTSExJU1QgPSB0aGlzLlVTRVJfV0lTSExJU1Q/LmZpbHRlcigoaXRlbTogT3JkZXJlZEl0ZW1zKSA9PiBpdGVtLnZhcmllbnRJZCAhPSBwcm9kdWN0LnZhcmllbnRJZCkgPz8gW107XHJcbiAgICB9XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICB9XHJcbiAgaXNJdGVtT3V0T2ZTdG9jayhwcm9kdWN0OiBQcm9kdWN0KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gcHJvZHVjdC5pdGVtSW52ZW50b3J5Py5vcGVuaW5nU3RvY2sgPT0gMDtcclxuICB9XHJcbiAgYWRkSXRlbVRvQ2FydChldmVudDogUG9pbnRlckV2ZW50IHwgTW91c2VFdmVudCwgcHJvZHVjdDogUHJvZHVjdCwgdHlwZTogJ0FERCcgfCAnU1VCU1RSQUNUJykge1xyXG4gICAgaWYgKHRoaXMuaXNJdGVtT3V0T2ZTdG9jayhwcm9kdWN0KSkge1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnd2FybicsIHN1bW1hcnk6ICdDYXJ0JywgZGV0YWlsOiAnSXRlbSBpcyBub3QgYXZhaWxhYmxlIGFzIG9mIG5vdy4gV2Ugd2lsbCBub3RpZnkgeW91IG9uY2UgYXZhaWxhYmxlJyB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgcHJvZHVjdC5xdWFudGl0eSArPSAodHlwZSA9PSAnQUREJyA/IDEgOiAtMSk7XHJcbiAgICBpZiAocHJvZHVjdD8uaXRlbVZhcmlhbnQ/Lmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBpdGVtVmFyaWVudDogSXRlbVZhcmlhbnQgfCBudWxsID0gdGhpcy5nZXRJdGVtVmFyaWVudChwcm9kdWN0LCBwcm9kdWN0LnZhcmllbnRJZCk7XHJcbiAgICAgIGlmIChpdGVtVmFyaWVudCkge1xyXG4gICAgICAgIGl0ZW1WYXJpZW50LnF1YW50aXR5ID0gcHJvZHVjdC5xdWFudGl0eTtcclxuICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZEl0ZW1Ub0NhcnQocHJvZHVjdCwgaXRlbVZhcmllbnQudmFyaWFudElkKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jYXJ0U2VydmljZS5hZGRJdGVtVG9DYXJ0KHByb2R1Y3QpO1xyXG4gICAgfVxyXG4gICAgaWYgKHByb2R1Y3QucXVhbnRpdHkpIHtcclxuICAgICAgbGV0IGlzUHJlc2VudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgICB0aGlzLlVTRVJfQ0FSVD8uZm9yRWFjaCgoaXRlbTogT3JkZXJlZEl0ZW1zKSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0udmFyaWVudElkID09IHByb2R1Y3QudmFyaWVudElkKSB7XHJcbiAgICAgICAgICBpdGVtLnF1YW50aXR5ID0gcHJvZHVjdC5xdWFudGl0eTtcclxuICAgICAgICAgIGlzUHJlc2VudCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICBpZiAoIWlzUHJlc2VudClcclxuICAgICAgICB0aGlzLlVTRVJfQ0FSVD8ucHVzaChuZXcgT3JkZXJlZEl0ZW1zKHByb2R1Y3QsIHByb2R1Y3QudmFyaWVudElkKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLlVTRVJfQ0FSVCA9IHRoaXMuVVNFUl9DQVJUPy5maWx0ZXIoKGl0ZW06IE9yZGVyZWRJdGVtcykgPT4gaXRlbS52YXJpZW50SWQgIT0gcHJvZHVjdC52YXJpZW50SWQpID8/IFtdO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8c2VjdGlvbiBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9CYWNrZ3JvdW5kXT1cInN0eWxlPy5iYWNrZ3JvdW5kXCIgc2ltcG9Ib3ZlciAoaG92ZXJpbmcpPVwic2hvd0VkaXRUYWJzKCRldmVudClcIlxyXG4gICAgY2xhc3M9XCJ0b3RhbC1jb250YWluZXJcIiBbYXR0ci5zdHlsZV09XCJjdXN0b21DbGFzc1wiPlxyXG4gICAgPGRpdiAjbWFpbkNvbnRhaW5lciBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9PdmVybGF5XT1cInN0eWxlPy5iYWNrZ3JvdW5kXCIgW3NwYWNpbmdIb3Jpem9udGFsXT1cInN0eWxlc0xheW91dFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIiBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9Cb3JkZXJdPVwic3R5bGU/LmJvcmRlclwiIFtzaW1wb0xheW91dF09XCJzdHlsZT8ubGF5b3V0XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgdy0xMDBcIiBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9BbmltYXRpb25dPVwic3R5bGU/LmFuaW1hdGlvblwiXHJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJzdHlsZT8uZnVsbFdpZHRoID8geydwYWRkaW5nJzogJzBweCd9IDoge31cIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydqdXN0aWZ5LWNvbnRlbnQtY2VudGVyJyA6IHNjcmVlbldpZHRoIDwgNDc1fVwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBbbmdDbGFzc109XCJ7J3ctMTAwJzpzdHlsZT8uZ3JpZFN0eWxlID09PSAnU3R5bGUyJ31cIiAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHRleHQgb2YgZGF0YT8uY29udGVudD8uaW5wdXRUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbc2ltcG9Db250ZW50VGl0bGVTcGFjZV09XCJoZWFkaW5nU3BhY2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVkaXQgfHwgICh0ZXh0LnZhbHVlICYmIHRleHQudmFsdWUubGVuZ3RoID4gMClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaW1wby10ZXh0LWVkaXRvciBbKHZhbHVlKV09XCJ0ZXh0LnZhbHVlXCIgW2VkaXRhYmxlXT1cImVkaXQgfHwgZmFsc2VcIj48L3NpbXBvLXRleHQtZWRpdG9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0eWxlPy5ncmlkU3R5bGUgPT0gJ1N0eWxlMSdcIj4gLS0+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2Nyb2xsLWJ0biBsZWZ0IHAtMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3R5bGU/LmRpcmVjdGlvbiA9PT0gJ1JPVycgJiYgaXNPdmVyZmxvd2luZ1wiIChjbGljayk9XCJzY3JvbGxMZWZ0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhdFN0YXJ0XCI+PG1hdC1pY29uPmtleWJvYXJkX2Fycm93X2xlZnQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW4tdmlkZW8tc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluLWltYWdlLXNlY3Rpb24gcG9zaXRpb24tcmVsYXRpdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Mucm93XT1cInN0eWxlPy5kaXJlY3Rpb24gPT0gJ1JPVycgJiYgc2NyZWVuV2lkdGggPiA0NzVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Mud3JhcC1zY3JvbGxdPVwic3R5bGU/LmRpcmVjdGlvbiA9PSAnUk9XJyAmJiBzY3JlZW5XaWR0aCA+IDQ3NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mbGV4LXdyYXBdPVwic3R5bGU/LmRpcmVjdGlvbiA9PSAnQ09MVU1OJyAmJiBzY3JlZW5XaWR0aCA+IDQ3NVwiIFtpZF09XCJkYXRhPy5pZFwiICN2aWRlb2dyaWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmp1c3RpZnlDb250ZW50XT1cImdldEp1c3RpZnlDb250ZW50KClcIiAoc2Nyb2xsKT1cIm9uU2Nyb2xsKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2QtZ3JpZCBncmlkLWNvbHVtbnMnIDogc2NyZWVuV2lkdGggPCA0NzV9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29udGVudD8uZGlzcGxheT8uc2hvd0ltYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmlkZW8tc2VjdGlvbiBwLTMgdy1hdXRvIGQtZmxleCBmbGV4LWNvbHVtbiBnYXAtMiBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHZpZGVvIG9mIGNvbnRlbnQ/Lmxpc3RJdGVtPy5kYXRhXCIgW3NpbXBvQ29sdW1uRGlyZWN0aXZlXT1cInN0eWxlPy5zaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiZGF0YT8uaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0eWxlXT1cInN0eWxlPy5yZW1vdmVHYXBzID8gJ3BhZGRpbmc6IDBweCAhaW1wb3J0YW50OyBtYXJnaW46IDBweCAhaW1wb3J0YW50OycgOiB7fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50Py5kaXNwbGF5Py5zaG93VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctZml0IHBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0eWxlPy5hdXRvUGxheSAmJiAhc3R5bGU/LmhvdmVyUGxheTtlbHNlIG5vcm1hbFZpZGVvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZpZGVvIGxvYWRpbmc9XCJsYXp5XCIgW3NpbXBvQ29ybmVyXT1cInN0eWxlPy5jb3JuZXJzXCIgW2lkXT1cImRhdGE/LmlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3ZpZGVvRWwgW2NsYXNzXT1cImRhdGE/LmlkICsgdmlkZW8udmlkZW8uaWRcIiBbc3JjXT1cInZpZGVvLnZpZGVvLnVybFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaC0xMDAgY3Vyc29yLXBvaW50ZXJcIiBbbXV0ZWRdPVwic3R5bGU/Lm11dGVWaWRlb3NcIiBhdXRvcGxheVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkZ1bGxzY3JlZW4odmlkZW9FbClcIiBsb29wPjwvdmlkZW8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9ybWFsVmlkZW8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZpZGVvIGxvYWRpbmc9XCJsYXp5XCIgW3NpbXBvQ29ybmVyXT1cInN0eWxlPy5jb3JuZXJzXCIgW2lkXT1cImRhdGE/LmlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3ZpZGVvRWwgW2NsYXNzXT1cImRhdGE/LmlkICsgdmlkZW8udmlkZW8uaWRcIiBbc3JjXT1cInZpZGVvLnZpZGVvLnVybFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaC0xMDBcIiBbbXV0ZWRdPVwic3R5bGU/Lm11dGVWaWRlb3NcIiBbY29udHJvbHNdPVwiIXN0eWxlPy5ob3ZlclBsYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJzdHlsZT8uaG92ZXJQbGF5ICYmIG9uVmlkZW9Ib3Zlcih2aWRlb0VsLCB2aWRlby52aWRlbylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJzdHlsZT8uaG92ZXJQbGF5ICYmIG9uVmlkZW9MZWF2ZSh2aWRlb0VsLCB2aWRlby52aWRlbylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkZ1bGxzY3JlZW4odmlkZW9FbClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdjdXJzb3ItcG9pbnRlcic6IHN0eWxlPy5ob3ZlclBsYXkgfVwiPjwvdmlkZW8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL2Qyejk0OTd4cDh4YjEyLmNsb3VkZnJvbnQubmV0L3Byb2QtaW1hZ2VzLzE3MjY0OGMxNzY5NjcxNjQ3MTU5cGxheS1maWxsLXN2Z3JlcG8tY29tLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhdmlkZW8/LnZpZGVvPy5pc1ZpZGVvUGxheWluZyAmJiBzdHlsZT8uaG92ZXJQbGF5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOjIwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaW1wby10ZXh0LWVkaXRvciBbKHZhbHVlKV09XCJ2aWRlby52aWRlby5kZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZWRpdGFibGVdPVwiZWRpdCB8fCBmYWxzZVwiPjwvc2ltcG8tdGV4dC1lZGl0b3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb250ZW50Py5kaXNwbGF5Py5zaG93VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmlkZW8td3JhcHBlciBwb3NpdGlvbi1yZWxhdGl2ZVwiIFtpZF09XCJkYXRhPy5pZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J3dpZHRoJyA6IHN0eWxlPy5zaXplID09PSAnU21hbGwnID8gJzE4MHB4JyA6IHN0eWxlPy5zaXplID09PSAnTWVkaXVtJyA/ICcyMjBweCcgOiAnMjcwcHgnIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdHlsZT8uYXV0b1BsYXkgJiYgIXN0eWxlPy5ob3ZlclBsYXk7ZWxzZSBub3JtYWxWaWRlb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2aWRlbyBsb2FkaW5nPVwibGF6eVwiIFtzaW1wb0Nvcm5lcl09XCJzdHlsZT8uY29ybmVyc1wiIFtpZF09XCJkYXRhPy5pZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN2aWRlb0VsIFtjbGFzc109XCJkYXRhPy5pZCArIHZpZGVvLnZpZGVvLmlkXCIgW3NyY109XCJ2aWRlby52aWRlby51cmxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImgtMTAwXCIgW211dGVkXT1cInN0eWxlPy5tdXRlVmlkZW9zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NpbXBvVmlkZW9EaXJlY3RpdmVdPVwic3R5bGU/LmltYWdlXCIgW2NvbnRyb2xzXT1cInN0eWxlPy5ob3ZlclBsYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJzdHlsZT8uaG92ZXJQbGF5ICYmIG9uVmlkZW9Ib3Zlcih2aWRlb0VsLCB2aWRlby52aWRlbylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJzdHlsZT8uaG92ZXJQbGF5ICYmIG9uVmlkZW9MZWF2ZSh2aWRlb0VsLCB2aWRlby52aWRlbylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkZ1bGxWaWRlbyh2aWRlby52aWRlbylcIiBhdXRvcGxheSBsb29wPjwvdmlkZW8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9ybWFsVmlkZW8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZpZGVvIGxvYWRpbmc9XCJsYXp5XCIgW3NpbXBvQ29ybmVyXT1cInN0eWxlPy5jb3JuZXJzXCIgW2lkXT1cImRhdGE/LmlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3ZpZGVvRWwgW2NsYXNzXT1cImRhdGE/LmlkICsgdmlkZW8udmlkZW8uaWRcIiBbc3JjXT1cInZpZGVvLnZpZGVvLnVybFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaC0xMDBcIiBbbXV0ZWRdPVwic3R5bGU/Lm11dGVWaWRlb3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2ltcG9WaWRlb0RpcmVjdGl2ZV09XCJzdHlsZT8uaW1hZ2VcIiBbY29udHJvbHNdPVwiIXN0eWxlPy5ob3ZlclBsYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJzdHlsZT8uaG92ZXJQbGF5ICYmIG9uVmlkZW9Ib3Zlcih2aWRlb0VsLCB2aWRlby52aWRlbylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJzdHlsZT8uaG92ZXJQbGF5ICYmIG9uVmlkZW9MZWF2ZSh2aWRlb0VsLCB2aWRlby52aWRlbylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkZ1bGxWaWRlbyh2aWRlby52aWRlbylcIj48L3ZpZGVvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBwcm9kdWN0cy1jYXJkcyB3LTEwMCBwLTMgZC1mbGV4IGdhcC0zIG92ZXJmbG93LXgtYXV0byBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ2aWRlbz8udmlkZW8/LnByb2R1Y3RzPy5sZW5ndGggPiAwICYmIGNvbnRlbnQ/LmRpc3BsYXk/LnNob3dQcm9kdWN0c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2YgdmlkZW8udmlkZW8ucHJvZHVjdHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2R1Y3QtYmFkZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cInByb2R1Y3QucmVkaXJlY3Rpb25VcmxcIiBjbGFzcz1cInByb2R1Y3QtbGlua1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJwcm9kdWN0Py5pdGVtSW1hZ2VzWzBdLmltZ1VybFwiIGFsdD1cIlJpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInByb2R1Y3QtaW1nXCIgLz48L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZHVjdC1pbmZvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgW2hyZWZdPVwicHJvZHVjdC5yZWRpcmVjdGlvblVybFwiIGNsYXNzPVwicHJvZHVjdC1saW5rXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0LWRldGFpbHMgZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZHVjdC10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7cHJvZHVjdC5uYW1lLmxlbmd0aCA+IDE2ID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0Lm5hbWUudHJpbSgpLnNsaWNlKDAsMTUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuLi4nIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0Lm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2R1Y3QtcHJpY2UgZC1mbGV4IGFsaWduLWl0ZW1zLXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oK5e3twcm9kdWN0Py5wcmljZS5zZWxsaW5nUHJpY2V9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGdhcC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9kMno5NDk3eHA4eGIxMi5jbG91ZGZyb250Lm5ldC9wcm9kLWltYWdlcy83MDAwNzJjMTc3MDI3MDM5NTQzMmZhdm91cml0ZS1zdmdyZXBvLWNvbS5zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMThweDtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUl0ZW1Ub0ZhdigkZXZlbnQsIHByb2R1Y3QsICdBREQnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFwcm9kdWN0LndoaXNsaXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9kMno5NDk3eHA4eGIxMi5jbG91ZGZyb250Lm5ldC9wcm9kLWltYWdlcy8zMDQxMTZjMTc3MDI3NDEzMjkxMGZhdm91cml0ZS1zdmdyZXBvLWNvbV8oMSkuc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDE4cHg7XCIgKm5nSWY9XCJwcm9kdWN0LndoaXNsaXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVJdGVtVG9GYXYoJGV2ZW50LCBwcm9kdWN0LCAnUkVNT1ZFJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL2Qyejk0OTd4cDh4YjEyLmNsb3VkZnJvbnQubmV0L3Byb2QtaW1hZ2VzLzY5NTE0NGMxNzcwMjcwNjY5NTQ2Y2FydC1zaG9wcGluZy1zdmdyZXBvLWNvbS5zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDoxOXB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGRJdGVtVG9DYXJ0KCRldmVudCwgcHJvZHVjdCwgJ0FERCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicHJvZHVjdC5xdWFudGl0eSA8PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9kMno5NDk3eHA4eGIxMi5jbG91ZGZyb250Lm5ldC9wcm9kLWltYWdlcy83OTUzNDJjMTc3MDI3NTM4MzM0NHNob3BwaW5nLWNhcnQtZmlsbC1zdmdyZXBvLWNvbS5zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDoxOXB4XCIgKm5nSWY9XCJwcm9kdWN0LnF1YW50aXR5ID49IDFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZEl0ZW1Ub0NhcnQoJGV2ZW50LCBwcm9kdWN0LCAnU1VCU1RSQUNUJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiF2aWRlbz8udmlkZW8/LmlzVmlkZW9QbGF5aW5nICYmIHN0eWxlPy5ob3ZlclBsYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBhZGRpbmc6IDlweDt0b3A6IDQ3JTtsZWZ0OiA0MCU7YmFja2dyb3VuZDogbGlnaHRncmV5O2JvcmRlci1yYWRpdXM6IDUwJTtiYWNrZ3JvdW5kOiByZ2JhKDI0MCwgMjQwLCAyNDAsIDAuNik7YmFja2Ryb3AtZmlsdGVyOiBibHVyKDRweCk7LXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIoNHB4KTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vZDJ6OTQ5N3hwOHhiMTIuY2xvdWRmcm9udC5uZXQvcHJvZC1pbWFnZXMvOTM1MDYwYzE3NzAyMTQwNzI3NTVwbGF5LXN2Z3JlcG8tY29tLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiXCIgc3R5bGU9XCJ3aWR0aDoyNXB4O21hcmdpbi1sZWZ0OjEuNXB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50Py5kaXNwbGF5Py5zaG93SW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2aWRlby1zZWN0aW9uIHAtMyB3LWF1dG8gZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0yIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaW1hZ2Ugb2YgY29udGVudD8ubGlzdEl0ZW0/LmRhdGFcIiBbc2ltcG9Db2x1bW5EaXJlY3RpdmVdPVwic3R5bGU/LnNpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJkYXRhPy5pZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3R5bGVdPVwic3R5bGU/LnJlbW92ZUdhcHMgPyAncGFkZGluZzogMHB4ICFpbXBvcnRhbnQ7IG1hcmdpbjogMHB4ICFpbXBvcnRhbnQ7JyA6IHt9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZpZGVvLXdyYXBwZXIgcG9zaXRpb24tcmVsYXRpdmVcIiBbaWRdPVwiZGF0YT8uaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydoLTEwMCc6c2NyZWVuV2lkdGg8NDc1fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J3dpZHRoJyA6IHNjcmVlbldpZHRoID4gNDc1ID8gKHN0eWxlPy5zaXplID09PSAnU21hbGwnID8gJzE4MHB4JyA6IHN0eWxlPy5zaXplID09PSAnTWVkaXVtJyA/ICcyMjBweCcgOiAnMjcwcHgnKTogJzEwMCUnIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBbc3JjXT1cImltYWdlLmltYWdlLnVybFwiIFthbHRdPVwiaW1hZ2UuaW1hZ2UuYWx0VGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NpbXBvSW1hZ2VEaXJlY3RpdmVdPVwiaW1hZ2UuaW1hZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnNpbXBvT2JqZWN0UG9zaXRpb25dPVwiaW1hZ2U/LmltYWdlPy5maXQgIT09ICdjb250YWluJyA/IGltYWdlLmltYWdlPy5wb3NpdGlvbiA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaW1wb0Nvcm5lcl09XCJzdHlsZT8uY29ybmVyc1wiIGNsYXNzPVwidy0xMDAgaC0xMDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBJbWFnZUVkaXRvcl09XCJlZGl0IHx8IGZhbHNlXCIgW2ltYWdlRGF0YV09XCJpbWFnZS5pbWFnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlY3Rpb25JZF09XCJkYXRhPy5pZFwiIFtzaW1wb09iamVjdFBvc2l0aW9uXT1cImltYWdlPy5pbWFnZT8ucG9zaXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJkYXRhPy5pZCtpbWFnZS5pbWFnZS5pZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzY3JvbGwtYnRuIHJpZ2h0IHAtMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3R5bGU/LmRpcmVjdGlvbiA9PT0gJ1JPVycgJiYgaXNPdmVyZmxvd2luZ1wiIChjbGljayk9XCJzY3JvbGxSaWdodCgpXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYXRFbmRcIj48bWF0LWljb24+a2V5Ym9hcmRfYXJyb3dfcmlnaHQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDwvbmctY29udGFpbmVyPiAtLT5cclxuICAgICAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0eWxlPy5ncmlkU3R5bGUgPT0gJ1N0eWxlMidcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmlkZW8tZ3JpZC1zZWN0aW9uIGgtMTAwXCIgW2NsYXNzLnJlbW92ZS1nYXBdPVwic3R5bGU/LnJlbW92ZUdhcHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MucC0wXT1cInN0eWxlPy5mdWxsV2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZpZGVvLXNlY3Rpb25cIiAqbmdGb3I9XCJsZXQgdmlkZW8gb2YgY29udGVudD8ubGlzdEl0ZW0/LmRhdGFcIiBzdHlsZT1cIm1pbi13aWR0aDozMDBweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3Bvc2l0aW9uLXJlbGF0aXZlIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlcicgOiAhdmlkZW8/LnZpZGVvPy5pc1ZpZGVvUGxheWluZyAmJiBzdHlsZT8uaG92ZXJQbGF5fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZpZGVvIGxvYWRpbmc9XCJsYXp5XCIgW3NpbXBvQ29ybmVyXT1cInN0eWxlPy5jb3JuZXJzXCIgW2lkXT1cImRhdGE/LmlkXCIgI3ZpZGVvRWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZGF0YT8uaWQrdmlkZW8udmlkZW8uaWRcIiBbc2ltcG9PYmplY3RQb3NpdGlvbl09XCJ2aWRlby52aWRlby5wb3NpdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJ2aWRlby52aWRlby51cmxcIiBsb2FkaW5nPVwibGF6eVwiIGNsYXNzPVwiaC0xMDBcIiBbY29udHJvbHNdPVwiIXN0eWxlPy5ob3ZlclBsYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cInN0eWxlPy5ob3ZlclBsYXkgJiYgb25WaWRlb0hvdmVyKHZpZGVvRWwsdmlkZW8udmlkZW8pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbXV0ZWRdPVwic3R5bGU/Lm11dGVWaWRlb3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cInN0eWxlPy5ob3ZlclBsYXkgJiYgb25WaWRlb0xlYXZlKHZpZGVvRWwsdmlkZW8udmlkZW8pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkZ1bGxzY3JlZW4odmlkZW9FbClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnY3Vyc29yLXBvaW50ZXInIDogc3R5bGU/LmhvdmVyUGxheX1cIj48L3ZpZGVvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL2Qyejk0OTd4cDh4YjEyLmNsb3VkZnJvbnQubmV0L3Byb2QtaW1hZ2VzLzE3MjY0OGMxNzY5NjcxNjQ3MTU5cGxheS1maWxsLXN2Z3JlcG8tY29tLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZVwiICpuZ0lmPVwiIXZpZGVvPy52aWRlbz8uaXNWaWRlb1BsYXlpbmcgJiYgc3R5bGU/LmhvdmVyUGxheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDoyMCU7aGVpZ2h0OjIwJTttYXgtd2lkdGg6NDBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAtLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdHlsZT8uZGV2aWRlcj8uZGlzcGxheVwiPlxyXG4gICAgICAgIDxzaW1wby1zdmctZGl2aWRlciBbZGl2aWRlclR5cGVdPVwic3R5bGU/LmRldmlkZXI/LmRldmlkZXJUeXBlXCJcclxuICAgICAgICAgICAgW2NvbG9yXT1cIm5leHRDb21wb25lbnRDb2xvcj8uY29sb3JcIj48L3NpbXBvLXN2Zy1kaXZpZGVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZWRpdH1cIiAqbmdJZj1cInNob3dFZGl0b3JzXCI+XHJcbiAgICAgICAgPHNpbXBvLWhvdmVyLWVsZW1lbnRzIFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIiBbZWRpdE9wdGlvbnNdPVwiZWRpdFwiPjwvc2ltcG8taG92ZXItZWxlbWVudHM+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJzaG93RGVsZXRlXCIgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBkZWxldGV9XCI+XHJcbiAgICAgICAgPHNpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50IFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIj48L3NpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50PlxyXG4gICAgPC9kaXY+XHJcbjwvc2VjdGlvbj4iXX0=
249
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlkZW8tZ3JpZC1zZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvc2VjdGlvbnMvdmlkZW8tZ3JpZC1zZWN0aW9uL3ZpZGVvLWdyaWQtc2VjdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3ZpZGVvLWdyaWQtc2VjdGlvbi92aWRlby1ncmlkLXNlY3Rpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLFdBQVcsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0Ms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QkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCBCYXNlU2VjdGlvbiBmcm9tICcuLi9CYXNlU2VjdGlvbic7XHJcbmltcG9ydCB7IFZpZGVvR3JpZENvbnRlbnRNb2RhbCwgVmlkZW9HcmlkU2VjdGlvbk1vZGVsLCBWaWRlb0dyaWRTdHlsZXNNb2RlbCB9IGZyb20gJy4vdmlkZW8tZ3JpZC1zZWN0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgQmFja2dyb3VuZE1vZGVsLCBMYXlPdXRNb2RlbCB9IGZyb20gJy4uLy4uL3N0eWxlcy9zdHlsZS5tb2RlbCc7XHJcbmltcG9ydCB7IFNpbXBvQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9pbmRleCc7XHJcbmltcG9ydCB7IE9yZGVyZWRJdGVtcyB9IGZyb20gJy4uLy4uL2Vjb21tZXJjZS9zdHlsZXMvT3JkZXJlZEl0ZW1zLm1vZGFsJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFNpbXBvRWxlbWVudHNNb2R1bGUgfSBmcm9tICcuLi8uLi9lbGVtZW50cy9pbmRleCc7XHJcbmltcG9ydCB7IEFuaW1hdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9hbmltYXRpb24tZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQmFja2dyb3VuZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9iYWNrZ3JvdW5kLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbnRlbnRGaXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29udGVudC1maXQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQm9yZGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2JvcmRlci1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb2x1bW5EaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29sdW1uLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb3JuZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29ybmVyLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2hvdmVyLWVsZW1lbnQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgT3ZlcmxheURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9vdmVybGF5LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbnRlbnRUaXRsZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50LXRpdGxlLXNwYWNpbmcuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU1BBQ0lORyB9IGZyb20gJy4uLy4uL3N0eWxlcy9pbmRleCc7XHJcbmltcG9ydCB7IFRleHRFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi8uLi9lbGVtZW50cy90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTcGFjaW5nSG9yaXpvbnRhbERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9zcGFjaW5nLWhvcml6b250YWwuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgVmlkZW9EaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvdmlkZW8tZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgSXRlbVZhcmlhbnQsIFByb2R1Y3QgfSBmcm9tICdwcm9qZWN0cy9zaW1wby11aS9zcmMvcHVibGljLWFwaSc7XHJcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2FydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmlkZW9TaG93Y2FzZUNvbXBvbmVudCB9IGZyb20gJy4uL3ZpZGVvLXNob3djYXNlL3ZpZGVvLXNob3djYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IEltYWdlRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi8uLi8uLi9kaXJlY3RpdmUvaW1hZ2UtZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEltYWdlRWRpdG9yRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2ltYWdlLWVkaXRvci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBPYmplY3RQb3NpdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9pbWFnZS1wb3NpdGlvbi5kaXJlY3RpdmUnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLXZpZGVvLWdyaWQtc2VjdGlvbicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBUZXh0RWRpdG9yQ29tcG9uZW50LFxyXG4gICAgU2ltcG9FbGVtZW50c01vZHVsZSxcclxuICAgIFNpbXBvQ29tcG9uZW50TW9kdWxlLFxyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgLy9EaXJlY3RpdmVzXHJcbiAgICBBbmltYXRpb25EaXJlY3RpdmUsXHJcbiAgICBCYWNrZ3JvdW5kRGlyZWN0aXZlLFxyXG4gICAgQm9yZGVyRGlyZWN0aXZlLFxyXG4gICAgQ29sdW1uRGlyZWN0aXZlRGlyZWN0aXZlLFxyXG4gICAgQ29udGVudEZpdERpcmVjdGl2ZSxcclxuICAgIENvcm5lckRpcmVjdGl2ZSxcclxuICAgIEhvdmVyRGlyZWN0aXZlLFxyXG4gICAgT3ZlcmxheURpcmVjdGl2ZSxcclxuICAgIENvbnRlbnRUaXRsZURpcmVjdGl2ZSxcclxuICAgIFNwYWNpbmdIb3Jpem9udGFsRGlyZWN0aXZlLFxyXG4gICAgVmlkZW9EaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBNYXRJY29uLFxyXG4gICAgSW1hZ2VEaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBPYmplY3RQb3NpdGlvbkRpcmVjdGl2ZSxcclxuICAgIEltYWdlRWRpdG9yRGlyZWN0aXZlXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3ZpZGVvLWdyaWQtc2VjdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3ZpZGVvLWdyaWQtc2VjdGlvbi5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVmlkZW9HcmlkU2VjdGlvbkNvbXBvbmVudCBleHRlbmRzIEJhc2VTZWN0aW9uIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1hdERpYWxvZzogTWF0RGlhbG9nXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuICBAVmlld0NoaWxkKCd2aWRlb2dyaWQnLCB7IHN0YXRpYzogZmFsc2UgfSkgdmlkZW9ncmlkITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcbiAgQElucHV0KCkgZGF0YT86IFZpZGVvR3JpZFNlY3Rpb25Nb2RlbDtcclxuICBASW5wdXQoKSBpbmRleD86IG51bWJlcjtcclxuICBASW5wdXQoKSBlZGl0PzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBjdXN0b21DbGFzcz86IHN0cmluZztcclxuICBASW5wdXQoKSBkZWxldGU/OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIG5leHRDb21wb25lbnRDb2xvcj86IEJhY2tncm91bmRNb2RlbDtcclxuICBjb250ZW50PzogVmlkZW9HcmlkQ29udGVudE1vZGFsO1xyXG4gIHN0eWxlPzogVmlkZW9HcmlkU3R5bGVzTW9kZWw7XHJcbiAgcHJpdmF0ZSBVU0VSX1dJU0hMSVNUOiBPcmRlcmVkSXRlbXNbXSA9IFtdO1xyXG4gIHByaXZhdGUgVVNFUl9DQVJUOiBPcmRlcmVkSXRlbXNbXSA9IFtdO1xyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5nZXRTY3JlZW5TaXplKCk7XHJcbiAgICB0aGlzLmNvbnRlbnQgPSB0aGlzLmRhdGE/LmNvbnRlbnQ7XHJcbiAgICB0aGlzLnN0eWxlID0gdGhpcy5kYXRhPy5zdHlsZXM7XHJcbiAgICB0aGlzLmRlbGV0ZVNlbGVjdGVkID0gdGhpcy5kZWxldGU7XHJcbiAgfVxyXG4gIHNjcmVlbldpZHRoOiBhbnk7XHJcbiAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzogcmVzaXplXCIsIFtcIiRldmVudFwiXSlcclxuICBnZXRTY3JlZW5TaXplKCkge1xyXG4gICAgdGhpcy5zY3JlZW5XaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gIH1cclxuICBnZXQgc3R5bGVzTGF5b3V0KCkge1xyXG4gICAgcmV0dXJuIHsgLi4udGhpcy5zdHlsZT8ubGF5b3V0IH0gYXMgTGF5T3V0TW9kZWw7XHJcbiAgfVxyXG4gIGdldCBoZWFkaW5nU3BhY2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdHlsZT8ubGF5b3V0Py5oZWFkaW5nU3BhY2luZyBhcyBTUEFDSU5HO1xyXG4gIH1cclxuICBpc092ZXJmbG93aW5nID0gZmFsc2U7IGF0U3RhcnQgPSB0cnVlOyBhdEVuZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgZ2V0IHNjcm9sbFN0ZXAoKSB7IHJldHVybiBNYXRoLnJvdW5kKCh0aGlzLnZpZGVvZ3JpZD8ubmF0aXZlRWxlbWVudD8uY2xpZW50V2lkdGggfHwgMzAwKSAqIDAuOCk7IH1cclxuICBwcml2YXRlIHVwZGF0ZUVkZ2VzKCkge1xyXG4gICAgY29uc3QgZWwgPSB0aGlzLnZpZGVvZ3JpZD8ubmF0aXZlRWxlbWVudDtcclxuICAgIGlmICghZWwpIHJldHVybjtcclxuICAgIHRoaXMuYXRTdGFydCA9IGVsLnNjcm9sbExlZnQgPD0gNTtcclxuICAgIHRoaXMuYXRFbmQgPSBlbC5zY3JvbGxMZWZ0ICsgZWwuY2xpZW50V2lkdGggPj0gZWwuc2Nyb2xsV2lkdGggLSA1O1xyXG4gIH1cclxuICBzY3JvbGxMZWZ0KCkge1xyXG4gICAgY29uc3QgZWwgPSB0aGlzLnZpZGVvZ3JpZD8ubmF0aXZlRWxlbWVudDsgaWYgKCFlbCkgcmV0dXJuO1xyXG4gICAgZWwuc2Nyb2xsQnkoeyBsZWZ0OiAtdGhpcy5zY3JvbGxTdGVwLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlRWRnZXMoKSwgMzAwKTtcclxuICB9XHJcbiAgZ2V0SnVzdGlmeUNvbnRlbnQoKSB7XHJcbiAgICBjb25zdCBlbCA9IHRoaXMudmlkZW9ncmlkPy5uYXRpdmVFbGVtZW50O1xyXG4gICAgaWYgKCFlbCkgcmV0dXJuICcnO1xyXG4gICAgdGhpcy5pc092ZXJmbG93aW5nID0gZWwuc2Nyb2xsV2lkdGggPiBlbC5jbGllbnRXaWR0aDtcclxuICAgIGlmICh0aGlzLmlzT3ZlcmZsb3dpbmcpIHtcclxuICAgICAgcmV0dXJuICdmbGV4LXN0YXJ0JztcclxuICAgIH1cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcbiAgb25TY3JvbGwoKSB7IHRoaXMudXBkYXRlRWRnZXMoKTsgfVxyXG5cclxuICBzY3JvbGxSaWdodCgpIHtcclxuICAgIGNvbnN0IGVsID0gdGhpcy52aWRlb2dyaWQ/Lm5hdGl2ZUVsZW1lbnQ7IGlmICghZWwpIHJldHVybjtcclxuICAgIGVsLnNjcm9sbEJ5KHsgbGVmdDogdGhpcy5zY3JvbGxTdGVwLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlRWRnZXMoKSwgMzAwKTtcclxuICB9XHJcbiAgb25WaWRlb0hvdmVyKHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50LCB2aWRlb0VsZW1lbnQ/OiBhbnkpIHtcclxuICAgIHZpZGVvLmN1cnJlbnRUaW1lID0gMDtcclxuICAgIHZpZGVvLnBsYXkoKS5jYXRjaCgoKSA9PiB7IH0pO1xyXG4gICAgdmlkZW9FbGVtZW50LmlzVmlkZW9QbGF5aW5nID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uVmlkZW9MZWF2ZSh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCwgdmlkZW9FbGVtZW50PzogYW55KSB7XHJcbiAgICB2aWRlby5wYXVzZSgpO1xyXG4gICAgdmlkZW8uY3VycmVudFRpbWUgPSAwO1xyXG4gICAgdmlkZW9FbGVtZW50LmlzVmlkZW9QbGF5aW5nID0gZmFsc2U7XHJcbiAgfVxyXG4gIG9wZW5GdWxsVmlkZW8odmlkZW86IGFueSkge1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5tYXREaWFsb2cub3BlbihWaWRlb1Nob3djYXNlQ29tcG9uZW50LCB7XHJcbiAgICAgIGhlaWdodDogJzEwMHZoJyxcclxuICAgICAgd2lkdGg6ICcxMDB2dycsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICB2aWRlb3M6IHRoaXMuY29udGVudD8ubGlzdEl0ZW0udmlkZW9EYXRhLFxyXG4gICAgICAgIGluaXRpYXRlVmlkZW9JZDogdmlkZW8uaWRcclxuICAgICAgfSxcclxuICAgICAgcGFuZWxDbGFzczogJ2RpYWxvZy10cmFuc3BhcmVudCdcclxuICAgIH0pO1xyXG5cclxuICB9XHJcbiAgb3BlbkZ1bGxzY3JlZW4odmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpIHtcclxuICAgIGlmICh0aGlzLnN0eWxlPy5ob3ZlclBsYXkpIHtcclxuICAgICAgaWYgKHZpZGVvLnJlcXVlc3RGdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgdmlkZW8ucmVxdWVzdEZ1bGxzY3JlZW4oKTtcclxuICAgICAgfSBlbHNlIGlmICgodmlkZW8gYXMgYW55KS53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbikge1xyXG4gICAgICAgIC8vIFNhZmFyaVxyXG4gICAgICAgICh2aWRlbyBhcyBhbnkpLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoKHZpZGVvIGFzIGFueSkubXNSZXF1ZXN0RnVsbHNjcmVlbikge1xyXG4gICAgICAgIC8vIElFMTFcclxuICAgICAgICAodmlkZW8gYXMgYW55KS5tc1JlcXVlc3RGdWxsc2NyZWVuKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIE9wdGlvbmFsOiBwbGF5IHdoZW4gZnVsbHNjcmVlbiBvcGVuc1xyXG4gICAgICB2aWRlby5wbGF5KCkuY2F0Y2goKCkgPT4geyB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0SXRlbVZhcmllbnQocHJvZHVjdDogUHJvZHVjdCwgdmFyaWVudElkOiBzdHJpbmcpOiBJdGVtVmFyaWFudCB8IG51bGwge1xyXG4gICAgbGV0IHNlbGVjdGVkVmFyaWVudDogSXRlbVZhcmlhbnQgfCBudWxsID0gbnVsbDtcclxuICAgIHByb2R1Y3Q/Lml0ZW1WYXJpYW50Py5mb3JFYWNoKCh2YXJpZW50OiBJdGVtVmFyaWFudCkgPT4ge1xyXG4gICAgICBpZiAodmFyaWVudC52YXJpYW50SWQgPT09IHZhcmllbnRJZClcclxuICAgICAgICBzZWxlY3RlZFZhcmllbnQgPSB2YXJpZW50O1xyXG4gICAgfSlcclxuICAgIHJldHVybiBzZWxlY3RlZFZhcmllbnQ7XHJcbiAgfVxyXG4gIHRvZ2dsZUl0ZW1Ub0ZhdihldmVudDogUG9pbnRlckV2ZW50IHwgTW91c2VFdmVudCwgcHJvZHVjdDogUHJvZHVjdCwgdHlwZTogJ0FERCcgfCAnUkVNT1ZFJykge1xyXG4gICAgaWYgKHR5cGUgPT0gJ0FERCcpIHtcclxuICAgICAgcHJvZHVjdC53aGlzbGlzdCA9IHRydWU7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeTogJ1dpc2hsaXN0JywgZGV0YWlsOiAnSXRlbSBhZGRlZCB0byB5b3VyIHdpc2hsaXN0JyB9KTtcclxuICAgICAgaWYgKHByb2R1Y3Q/Lml0ZW1WYXJpYW50Py5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBpdGVtVmFyaWVudDogSXRlbVZhcmlhbnQgfCBudWxsID0gdGhpcy5nZXRJdGVtVmFyaWVudChwcm9kdWN0LCBwcm9kdWN0LnZhcmllbnRJZCk7XHJcbiAgICAgICAgaWYgKGl0ZW1WYXJpZW50KSB7XHJcbiAgICAgICAgICBpdGVtVmFyaWVudC53aXNobGlzdCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZEl0ZW1Ub0Zhdm91cml0ZShwcm9kdWN0IGFzIFByb2R1Y3QsIGl0ZW1WYXJpZW50LnZhcmlhbnRJZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY2FydFNlcnZpY2UuYWRkSXRlbVRvRmF2b3VyaXRlKHByb2R1Y3QpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcHJvZHVjdC53aGlzbGlzdCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnaW5mbycsIHN1bW1hcnk6ICdXaXNobGlzdCcsIGRldGFpbDogJ0l0ZW0gcmVtb3ZlZCBmcm9tIHlvdXIgd2lzaGxpc3QnIH0pO1xyXG4gICAgICB0aGlzLmNhcnRTZXJ2aWNlLnJlbW92ZUl0ZW1Gcm9tRmF2b3VyaXRlKHByb2R1Y3QudmFyaWVudElkKTtcclxuICAgIH1cclxuICAgIGlmIChwcm9kdWN0LndoaXNsaXN0KSB7XHJcbiAgICAgIHRoaXMuVVNFUl9XSVNITElTVD8ucHVzaChuZXcgT3JkZXJlZEl0ZW1zKHByb2R1Y3QsIHByb2R1Y3QudmFyaWVudElkKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLlVTRVJfV0lTSExJU1QgPSB0aGlzLlVTRVJfV0lTSExJU1Q/LmZpbHRlcigoaXRlbTogT3JkZXJlZEl0ZW1zKSA9PiBpdGVtLnZhcmllbnRJZCAhPSBwcm9kdWN0LnZhcmllbnRJZCkgPz8gW107XHJcbiAgICB9XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICB9XHJcbiAgaXNJdGVtT3V0T2ZTdG9jayhwcm9kdWN0OiBQcm9kdWN0KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gcHJvZHVjdC5pdGVtSW52ZW50b3J5Py5vcGVuaW5nU3RvY2sgPT0gMDtcclxuICB9XHJcbiAgYWRkSXRlbVRvQ2FydChldmVudDogUG9pbnRlckV2ZW50IHwgTW91c2VFdmVudCwgcHJvZHVjdDogUHJvZHVjdCwgdHlwZTogJ0FERCcgfCAnU1VCU1RSQUNUJykge1xyXG4gICAgaWYgKHRoaXMuaXNJdGVtT3V0T2ZTdG9jayhwcm9kdWN0KSkge1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnd2FybicsIHN1bW1hcnk6ICdDYXJ0JywgZGV0YWlsOiAnSXRlbSBpcyBub3QgYXZhaWxhYmxlIGFzIG9mIG5vdy4gV2Ugd2lsbCBub3RpZnkgeW91IG9uY2UgYXZhaWxhYmxlJyB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgcHJvZHVjdC5xdWFudGl0eSArPSAodHlwZSA9PSAnQUREJyA/IDEgOiAtMSk7XHJcbiAgICBpZiAocHJvZHVjdD8uaXRlbVZhcmlhbnQ/Lmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBpdGVtVmFyaWVudDogSXRlbVZhcmlhbnQgfCBudWxsID0gdGhpcy5nZXRJdGVtVmFyaWVudChwcm9kdWN0LCBwcm9kdWN0LnZhcmllbnRJZCk7XHJcbiAgICAgIGlmIChpdGVtVmFyaWVudCkge1xyXG4gICAgICAgIGl0ZW1WYXJpZW50LnF1YW50aXR5ID0gcHJvZHVjdC5xdWFudGl0eTtcclxuICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZEl0ZW1Ub0NhcnQocHJvZHVjdCwgaXRlbVZhcmllbnQudmFyaWFudElkKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jYXJ0U2VydmljZS5hZGRJdGVtVG9DYXJ0KHByb2R1Y3QpO1xyXG4gICAgfVxyXG4gICAgaWYgKHByb2R1Y3QucXVhbnRpdHkpIHtcclxuICAgICAgbGV0IGlzUHJlc2VudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgICB0aGlzLlVTRVJfQ0FSVD8uZm9yRWFjaCgoaXRlbTogT3JkZXJlZEl0ZW1zKSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0udmFyaWVudElkID09IHByb2R1Y3QudmFyaWVudElkKSB7XHJcbiAgICAgICAgICBpdGVtLnF1YW50aXR5ID0gcHJvZHVjdC5xdWFudGl0eTtcclxuICAgICAgICAgIGlzUHJlc2VudCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICBpZiAoIWlzUHJlc2VudClcclxuICAgICAgICB0aGlzLlVTRVJfQ0FSVD8ucHVzaChuZXcgT3JkZXJlZEl0ZW1zKHByb2R1Y3QsIHByb2R1Y3QudmFyaWVudElkKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLlVTRVJfQ0FSVCA9IHRoaXMuVVNFUl9DQVJUPy5maWx0ZXIoKGl0ZW06IE9yZGVyZWRJdGVtcykgPT4gaXRlbS52YXJpZW50SWQgIT0gcHJvZHVjdC52YXJpZW50SWQpID8/IFtdO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8c2VjdGlvbiBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9CYWNrZ3JvdW5kXT1cInN0eWxlPy5iYWNrZ3JvdW5kXCIgc2ltcG9Ib3ZlciAoaG92ZXJpbmcpPVwic2hvd0VkaXRUYWJzKCRldmVudClcIlxyXG4gICAgY2xhc3M9XCJ0b3RhbC1jb250YWluZXJcIiBbYXR0ci5zdHlsZV09XCJjdXN0b21DbGFzc1wiPlxyXG4gICAgPGRpdiAjbWFpbkNvbnRhaW5lciBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9PdmVybGF5XT1cInN0eWxlPy5iYWNrZ3JvdW5kXCIgW3NwYWNpbmdIb3Jpem9udGFsXT1cInN0eWxlc0xheW91dFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIiBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9Cb3JkZXJdPVwic3R5bGU/LmJvcmRlclwiIFtzaW1wb0xheW91dF09XCJzdHlsZT8ubGF5b3V0XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgdy0xMDBcIiBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9BbmltYXRpb25dPVwic3R5bGU/LmFuaW1hdGlvblwiXHJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJzdHlsZT8uZnVsbFdpZHRoID8geydwYWRkaW5nJzogJzBweCd9IDoge31cIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydqdXN0aWZ5LWNvbnRlbnQtY2VudGVyJyA6IHNjcmVlbldpZHRoIDwgNDc1fVwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBbbmdDbGFzc109XCJ7J3ctMTAwJzpzdHlsZT8uZ3JpZFN0eWxlID09PSAnU3R5bGUyJ31cIiAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHRleHQgb2YgZGF0YT8uY29udGVudD8uaW5wdXRUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbc2ltcG9Db250ZW50VGl0bGVTcGFjZV09XCJoZWFkaW5nU3BhY2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVkaXQgfHwgICh0ZXh0LnZhbHVlICYmIHRleHQudmFsdWUubGVuZ3RoID4gMClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaW1wby10ZXh0LWVkaXRvciBbKHZhbHVlKV09XCJ0ZXh0LnZhbHVlXCIgW2VkaXRhYmxlXT1cImVkaXQgfHwgZmFsc2VcIj48L3NpbXBvLXRleHQtZWRpdG9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0eWxlPy5ncmlkU3R5bGUgPT0gJ1N0eWxlMSdcIj4gLS0+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2Nyb2xsLWJ0biBsZWZ0IHAtMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3R5bGU/LmRpcmVjdGlvbiA9PT0gJ1JPVycgJiYgaXNPdmVyZmxvd2luZ1wiIChjbGljayk9XCJzY3JvbGxMZWZ0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhdFN0YXJ0XCI+PG1hdC1pY29uPmtleWJvYXJkX2Fycm93X2xlZnQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW4tdmlkZW8tc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluLWltYWdlLXNlY3Rpb24gcG9zaXRpb24tcmVsYXRpdmVcIiBbY2xhc3Mucm93XT1cInN0eWxlPy5kaXJlY3Rpb24gPT0gJ1JPVycgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLndyYXAtc2Nyb2xsXT1cInN0eWxlPy5kaXJlY3Rpb24gPT0gJ1JPVydcIiBbY2xhc3MuZmxleC13cmFwXT1cInN0eWxlPy5kaXJlY3Rpb24gPT0gJ0NPTFVNTidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiZGF0YT8uaWRcIiAjdmlkZW9ncmlkIFtzdHlsZS5qdXN0aWZ5Q29udGVudF09XCJnZXRKdXN0aWZ5Q29udGVudCgpXCIgKHNjcm9sbCk9XCJvblNjcm9sbCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydmbGV4LWNvbHVtbicgOiBzY3JlZW5XaWR0aCA8IDQ3NX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb250ZW50Py5kaXNwbGF5Py5zaG93SW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2aWRlby1zZWN0aW9uIHAtMyB3LWF1dG8gZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0yIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdmlkZW8gb2YgY29udGVudD8ubGlzdEl0ZW0/LmRhdGFcIiBbc2ltcG9Db2x1bW5EaXJlY3RpdmVdPVwic3R5bGU/LnNpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJkYXRhPy5pZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3R5bGVdPVwic3R5bGU/LnJlbW92ZUdhcHMgPyAncGFkZGluZzogMHB4ICFpbXBvcnRhbnQ7IG1hcmdpbjogMHB4ICFpbXBvcnRhbnQ7JyA6IHt9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQ/LmRpc3BsYXk/LnNob3dUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy1maXQgcG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3R5bGU/LmF1dG9QbGF5ICYmICFzdHlsZT8uaG92ZXJQbGF5O2Vsc2Ugbm9ybWFsVmlkZW9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmlkZW8gbG9hZGluZz1cImxhenlcIiBbc2ltcG9Db3JuZXJdPVwic3R5bGU/LmNvcm5lcnNcIiBbaWRdPVwiZGF0YT8uaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdmlkZW9FbCBbY2xhc3NdPVwiZGF0YT8uaWQgKyB2aWRlby52aWRlby5pZFwiIFtzcmNdPVwidmlkZW8udmlkZW8udXJsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoLTEwMCBjdXJzb3ItcG9pbnRlclwiIFttdXRlZF09XCJzdHlsZT8ubXV0ZVZpZGVvc1wiIGF1dG9wbGF5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuRnVsbHNjcmVlbih2aWRlb0VsKVwiIGxvb3A+PC92aWRlbz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub3JtYWxWaWRlbz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmlkZW8gbG9hZGluZz1cImxhenlcIiBbc2ltcG9Db3JuZXJdPVwic3R5bGU/LmNvcm5lcnNcIiBbaWRdPVwiZGF0YT8uaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdmlkZW9FbCBbY2xhc3NdPVwiZGF0YT8uaWQgKyB2aWRlby52aWRlby5pZFwiIFtzcmNdPVwidmlkZW8udmlkZW8udXJsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoLTEwMFwiIFttdXRlZF09XCJzdHlsZT8ubXV0ZVZpZGVvc1wiIFtjb250cm9sc109XCIhc3R5bGU/LmhvdmVyUGxheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cInN0eWxlPy5ob3ZlclBsYXkgJiYgb25WaWRlb0hvdmVyKHZpZGVvRWwsIHZpZGVvLnZpZGVvKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cInN0eWxlPy5ob3ZlclBsYXkgJiYgb25WaWRlb0xlYXZlKHZpZGVvRWwsIHZpZGVvLnZpZGVvKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuRnVsbHNjcmVlbih2aWRlb0VsKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2N1cnNvci1wb2ludGVyJzogc3R5bGU/LmhvdmVyUGxheSB9XCI+PC92aWRlbz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vZDJ6OTQ5N3hwOHhiMTIuY2xvdWRmcm9udC5uZXQvcHJvZC1pbWFnZXMvMTcyNjQ4YzE3Njk2NzE2NDcxNTlwbGF5LWZpbGwtc3ZncmVwby1jb20uc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiF2aWRlbz8udmlkZW8/LmlzVmlkZW9QbGF5aW5nICYmIHN0eWxlPy5ob3ZlclBsYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6MjBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpbXBvLXRleHQtZWRpdG9yIFsodmFsdWUpXT1cInZpZGVvLnZpZGVvLmRlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlZGl0YWJsZV09XCJlZGl0IHx8IGZhbHNlXCI+PC9zaW1wby10ZXh0LWVkaXRvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbnRlbnQ/LmRpc3BsYXk/LnNob3dUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2aWRlby13cmFwcGVyIHBvc2l0aW9uLXJlbGF0aXZlXCIgW2lkXT1cImRhdGE/LmlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnd2lkdGgnIDogc3R5bGU/LnNpemUgPT09ICdTbWFsbCcgPyAnMTgwcHgnIDogc3R5bGU/LnNpemUgPT09ICdNZWRpdW0nID8gJzIyMHB4JyA6ICcyNzBweCcgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0eWxlPy5hdXRvUGxheSAmJiAhc3R5bGU/LmhvdmVyUGxheTtlbHNlIG5vcm1hbFZpZGVvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZpZGVvIGxvYWRpbmc9XCJsYXp5XCIgW3NpbXBvQ29ybmVyXT1cInN0eWxlPy5jb3JuZXJzXCIgW2lkXT1cImRhdGE/LmlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3ZpZGVvRWwgW2NsYXNzXT1cImRhdGE/LmlkICsgdmlkZW8udmlkZW8uaWRcIiBbc3JjXT1cInZpZGVvLnZpZGVvLnVybFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaC0xMDBcIiBbbXV0ZWRdPVwic3R5bGU/Lm11dGVWaWRlb3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2ltcG9WaWRlb0RpcmVjdGl2ZV09XCJzdHlsZT8uaW1hZ2VcIiBbY29udHJvbHNdPVwic3R5bGU/LmhvdmVyUGxheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cInN0eWxlPy5ob3ZlclBsYXkgJiYgb25WaWRlb0hvdmVyKHZpZGVvRWwsIHZpZGVvLnZpZGVvKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cInN0eWxlPy5ob3ZlclBsYXkgJiYgb25WaWRlb0xlYXZlKHZpZGVvRWwsIHZpZGVvLnZpZGVvKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuRnVsbFZpZGVvKHZpZGVvLnZpZGVvKVwiIGF1dG9wbGF5IGxvb3A+PC92aWRlbz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub3JtYWxWaWRlbz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmlkZW8gbG9hZGluZz1cImxhenlcIiBbc2ltcG9Db3JuZXJdPVwic3R5bGU/LmNvcm5lcnNcIiBbaWRdPVwiZGF0YT8uaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdmlkZW9FbCBbY2xhc3NdPVwiZGF0YT8uaWQgKyB2aWRlby52aWRlby5pZFwiIFtzcmNdPVwidmlkZW8udmlkZW8udXJsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoLTEwMFwiIFttdXRlZF09XCJzdHlsZT8ubXV0ZVZpZGVvc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaW1wb1ZpZGVvRGlyZWN0aXZlXT1cInN0eWxlPy5pbWFnZVwiIFtjb250cm9sc109XCIhc3R5bGU/LmhvdmVyUGxheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cInN0eWxlPy5ob3ZlclBsYXkgJiYgb25WaWRlb0hvdmVyKHZpZGVvRWwsIHZpZGVvLnZpZGVvKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cInN0eWxlPy5ob3ZlclBsYXkgJiYgb25WaWRlb0xlYXZlKHZpZGVvRWwsIHZpZGVvLnZpZGVvKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuRnVsbFZpZGVvKHZpZGVvLnZpZGVvKVwiPjwvdmlkZW8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIHByb2R1Y3RzLWNhcmRzIHctMTAwIHAtMyBkLWZsZXggZ2FwLTMgb3ZlcmZsb3cteC1hdXRvIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInZpZGVvPy52aWRlbz8ucHJvZHVjdHM/Lmxlbmd0aCA+IDAgJiYgY29udGVudD8uZGlzcGxheT8uc2hvd1Byb2R1Y3RzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiB2aWRlby52aWRlby5wcm9kdWN0c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZHVjdC1iYWRnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgW2hyZWZdPVwicHJvZHVjdC5yZWRpcmVjdGlvblVybFwiIGNsYXNzPVwicHJvZHVjdC1saW5rXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cInByb2R1Y3Q/Lml0ZW1JbWFnZXNbMF0uaW1nVXJsXCIgYWx0PVwiUmluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHJvZHVjdC1pbWdcIiAvPjwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0LWluZm9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBbaHJlZl09XCJwcm9kdWN0LnJlZGlyZWN0aW9uVXJsXCIgY2xhc3M9XCJwcm9kdWN0LWxpbmtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2R1Y3QtZGV0YWlscyBkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0LXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3twcm9kdWN0Lm5hbWUubGVuZ3RoID4gMTYgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3QubmFtZS50cmltKCkuc2xpY2UoMCwxNSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy4uLicgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3QubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZHVjdC1wcmljZSBkLWZsZXggYWxpZ24taXRlbXMtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDigrl7e3Byb2R1Y3Q/LnByaWNlLnNlbGxpbmdQcmljZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZ2FwLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL2Qyejk0OTd4cDh4YjEyLmNsb3VkZnJvbnQubmV0L3Byb2QtaW1hZ2VzLzcwMDA3MmMxNzcwMjcwMzk1NDMyZmF2b3VyaXRlLXN2Z3JlcG8tY29tLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxOHB4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlSXRlbVRvRmF2KCRldmVudCwgcHJvZHVjdCwgJ0FERCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXByb2R1Y3Qud2hpc2xpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL2Qyejk0OTd4cDh4YjEyLmNsb3VkZnJvbnQubmV0L3Byb2QtaW1hZ2VzLzMwNDExNmMxNzcwMjc0MTMyOTEwZmF2b3VyaXRlLXN2Z3JlcG8tY29tXygxKS5zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMThweDtcIiAqbmdJZj1cInByb2R1Y3Qud2hpc2xpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUl0ZW1Ub0ZhdigkZXZlbnQsIHByb2R1Y3QsICdSRU1PVkUnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vZDJ6OTQ5N3hwOHhiMTIuY2xvdWRmcm9udC5uZXQvcHJvZC1pbWFnZXMvNjk1MTQ0YzE3NzAyNzA2Njk1NDZjYXJ0LXNob3BwaW5nLXN2Z3JlcG8tY29tLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOjE5cHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZEl0ZW1Ub0NhcnQoJGV2ZW50LCBwcm9kdWN0LCAnQUREJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwcm9kdWN0LnF1YW50aXR5IDw9IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL2Qyejk0OTd4cDh4YjEyLmNsb3VkZnJvbnQubmV0L3Byb2QtaW1hZ2VzLzc5NTM0MmMxNzcwMjc1MzgzMzQ0c2hvcHBpbmctY2FydC1maWxsLXN2Z3JlcG8tY29tLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOjE5cHhcIiAqbmdJZj1cInByb2R1Y3QucXVhbnRpdHkgPj0gMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkSXRlbVRvQ2FydCgkZXZlbnQsIHByb2R1Y3QsICdTVUJTVFJBQ1QnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXZpZGVvPy52aWRlbz8uaXNWaWRlb1BsYXlpbmcgJiYgc3R5bGU/LmhvdmVyUGxheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwicGFkZGluZzogOXB4O3RvcDogNDclO2xlZnQ6IDQwJTtiYWNrZ3JvdW5kOiBsaWdodGdyZXk7Ym9yZGVyLXJhZGl1czogNTAlO2JhY2tncm91bmQ6IHJnYmEoMjQwLCAyNDAsIDI0MCwgMC42KTtiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNHB4KTstd2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cig0cHgpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9kMno5NDk3eHA4eGIxMi5jbG91ZGZyb250Lm5ldC9wcm9kLWltYWdlcy85MzUwNjBjMTc3MDIxNDA3Mjc1NXBsYXktc3ZncmVwby1jb20uc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJcIiBzdHlsZT1cIndpZHRoOjI1cHg7bWFyZ2luLWxlZnQ6MS41cHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQ/LmRpc3BsYXk/LnNob3dJbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZpZGVvLXNlY3Rpb24gcC0zIHctYXV0byBkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTIgYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpbWFnZSBvZiBjb250ZW50Py5saXN0SXRlbT8uZGF0YVwiIFtzaW1wb0NvbHVtbkRpcmVjdGl2ZV09XCJzdHlsZT8uc2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImRhdGE/LmlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHlsZV09XCJzdHlsZT8ucmVtb3ZlR2FwcyA/ICdwYWRkaW5nOiAwcHggIWltcG9ydGFudDsgbWFyZ2luOiAwcHggIWltcG9ydGFudDsnIDoge31cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmlkZW8td3JhcHBlciBwb3NpdGlvbi1yZWxhdGl2ZVwiIFtpZF09XCJkYXRhPy5pZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J3dpZHRoJyA6IHN0eWxlPy5zaXplID09PSAnU21hbGwnID8gJzE4MHB4JyA6IHN0eWxlPy5zaXplID09PSAnTWVkaXVtJyA/ICcyMjBweCcgOiAnMjcwcHgnIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBbc3JjXT1cImltYWdlLmltYWdlLnVybFwiIFthbHRdPVwiaW1hZ2UuaW1hZ2UuYWx0VGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NpbXBvSW1hZ2VEaXJlY3RpdmVdPVwiaW1hZ2UuaW1hZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnNpbXBvT2JqZWN0UG9zaXRpb25dPVwiaW1hZ2U/LmltYWdlPy5maXQgIT09ICdjb250YWluJyA/IGltYWdlLmltYWdlPy5wb3NpdGlvbiA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaW1wb0Nvcm5lcl09XCJzdHlsZT8uY29ybmVyc1wiIGNsYXNzPVwidy0xMDAgaC0xMDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBJbWFnZUVkaXRvcl09XCJlZGl0IHx8IGZhbHNlXCIgW2ltYWdlRGF0YV09XCJpbWFnZS5pbWFnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlY3Rpb25JZF09XCJkYXRhPy5pZFwiIFtzaW1wb09iamVjdFBvc2l0aW9uXT1cImltYWdlPy5pbWFnZT8ucG9zaXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJkYXRhPy5pZCtpbWFnZS5pbWFnZS5pZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzY3JvbGwtYnRuIHJpZ2h0IHAtMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3R5bGU/LmRpcmVjdGlvbiA9PT0gJ1JPVycgJiYgaXNPdmVyZmxvd2luZ1wiIChjbGljayk9XCJzY3JvbGxSaWdodCgpXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYXRFbmRcIj48bWF0LWljb24+a2V5Ym9hcmRfYXJyb3dfcmlnaHQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDwvbmctY29udGFpbmVyPiAtLT5cclxuICAgICAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0eWxlPy5ncmlkU3R5bGUgPT0gJ1N0eWxlMidcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmlkZW8tZ3JpZC1zZWN0aW9uIGgtMTAwXCIgW2NsYXNzLnJlbW92ZS1nYXBdPVwic3R5bGU/LnJlbW92ZUdhcHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MucC0wXT1cInN0eWxlPy5mdWxsV2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZpZGVvLXNlY3Rpb25cIiAqbmdGb3I9XCJsZXQgdmlkZW8gb2YgY29udGVudD8ubGlzdEl0ZW0/LmRhdGFcIiBzdHlsZT1cIm1pbi13aWR0aDozMDBweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3Bvc2l0aW9uLXJlbGF0aXZlIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlcicgOiAhdmlkZW8/LnZpZGVvPy5pc1ZpZGVvUGxheWluZyAmJiBzdHlsZT8uaG92ZXJQbGF5fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZpZGVvIGxvYWRpbmc9XCJsYXp5XCIgW3NpbXBvQ29ybmVyXT1cInN0eWxlPy5jb3JuZXJzXCIgW2lkXT1cImRhdGE/LmlkXCIgI3ZpZGVvRWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZGF0YT8uaWQrdmlkZW8udmlkZW8uaWRcIiBbc2ltcG9PYmplY3RQb3NpdGlvbl09XCJ2aWRlby52aWRlby5wb3NpdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJ2aWRlby52aWRlby51cmxcIiBsb2FkaW5nPVwibGF6eVwiIGNsYXNzPVwiaC0xMDBcIiBbY29udHJvbHNdPVwiIXN0eWxlPy5ob3ZlclBsYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cInN0eWxlPy5ob3ZlclBsYXkgJiYgb25WaWRlb0hvdmVyKHZpZGVvRWwsdmlkZW8udmlkZW8pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbXV0ZWRdPVwic3R5bGU/Lm11dGVWaWRlb3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cInN0eWxlPy5ob3ZlclBsYXkgJiYgb25WaWRlb0xlYXZlKHZpZGVvRWwsdmlkZW8udmlkZW8pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkZ1bGxzY3JlZW4odmlkZW9FbClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnY3Vyc29yLXBvaW50ZXInIDogc3R5bGU/LmhvdmVyUGxheX1cIj48L3ZpZGVvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL2Qyejk0OTd4cDh4YjEyLmNsb3VkZnJvbnQubmV0L3Byb2QtaW1hZ2VzLzE3MjY0OGMxNzY5NjcxNjQ3MTU5cGxheS1maWxsLXN2Z3JlcG8tY29tLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZVwiICpuZ0lmPVwiIXZpZGVvPy52aWRlbz8uaXNWaWRlb1BsYXlpbmcgJiYgc3R5bGU/LmhvdmVyUGxheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDoyMCU7aGVpZ2h0OjIwJTttYXgtd2lkdGg6NDBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAtLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdHlsZT8uZGV2aWRlcj8uZGlzcGxheVwiPlxyXG4gICAgICAgIDxzaW1wby1zdmctZGl2aWRlciBbZGl2aWRlclR5cGVdPVwic3R5bGU/LmRldmlkZXI/LmRldmlkZXJUeXBlXCJcclxuICAgICAgICAgICAgW2NvbG9yXT1cIm5leHRDb21wb25lbnRDb2xvcj8uY29sb3JcIj48L3NpbXBvLXN2Zy1kaXZpZGVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZWRpdH1cIiAqbmdJZj1cInNob3dFZGl0b3JzXCI+XHJcbiAgICAgICAgPHNpbXBvLWhvdmVyLWVsZW1lbnRzIFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIiBbZWRpdE9wdGlvbnNdPVwiZWRpdFwiPjwvc2ltcG8taG92ZXItZWxlbWVudHM+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJzaG93RGVsZXRlXCIgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBkZWxldGV9XCI+XHJcbiAgICAgICAgPHNpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50IFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIj48L3NpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50PlxyXG4gICAgPC9kaXY+XHJcbjwvc2VjdGlvbj4iXX0=
@@ -52,6 +52,7 @@ export class EventsService {
52
52
  this.iconChanged = new EventEmitter();
53
53
  this.emitCountDownDate = new EventEmitter();
54
54
  this.showDummyCartItems = new EventEmitter();
55
+ this.menuList = new EventEmitter();
55
56
  }
56
57
  ngOnInit() { }
57
58
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EventsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -63,4 +64,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
63
64
  providedIn: 'root',
64
65
  }]
65
66
  }], ctorParameters: () => [] });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDOztBQUtqRSxNQUFNLE9BQU8sYUFBYTtJQUN4QjtRQU1BLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUMxQyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUN4QyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNyQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDN0MsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNqRCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDNUMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQzdDLDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDcEQsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNoRCxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDOUMsb0JBQW9CO1FBRXBCLCtCQUEwQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDekQsNkJBQXdCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUN2RCwwQkFBcUIsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ3BELDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDcEQsaUNBQTRCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUMzRCx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ2xELHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDakQseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNuRCwyQkFBc0IsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ3JELDJCQUFzQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDckQsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNqRCx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ2pELCtCQUEwQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDekQsNEJBQXVCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUN0RCw4QkFBeUIsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ3hELGdDQUEyQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDMUQsOEJBQXlCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUN4RCx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ2xELHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDbEQsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNsRCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDNUMsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNoRCxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ2hELHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7UUFDN0MsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDekMsMEJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNwRCx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ2pELHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUFZLENBQUM7UUFDcEQsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUMvQyx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ2xELHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDaEQsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRTdDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUM1QyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDMUMscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUMvQyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDNUMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQzFDLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDNUMsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQXZEN0MsQ0FBQztJQUVMLFFBQVEsS0FBVyxDQUFDOytHQUxULGFBQWE7bUhBQWIsYUFBYSxjQUZaLE1BQU07OzRGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFdmVudHNTZXJ2aWNlIGltcGxlbWVudHMgT25Jbml0IHtcclxuICBjb25zdHJ1Y3RvcihcclxuXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7IH1cclxuXHJcbiAgZWRpdFNlY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XHJcbiAgZHVwbGljYXRlID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xyXG4gIGRlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcclxuICBjaGFuZ2VQb3NpdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcclxuICBhZGROZXdTZWN0aW9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XHJcbiAgY2hhbmdlQ29udGVudCA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcclxuICByZXN0eWxlU2VjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcclxuICBwYWdlUmVkaXJlY3Rpb25CdXR0b24gPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XHJcbiAgYnV0dG9uUmVkaXJlY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XHJcbiAgY29udGFjdEZvcm1EYXRhID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xyXG4gIC8vcmVmZXJlbmNlIHNlcnZpY2VzXHJcblxyXG4gIGJhY2tncm91bmRJbWFnZUNoYW5nZUNoZWNrID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xyXG4gIGNvbG9yT3ZlcmxheUNoYW5nZUNoZWNrcyA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcclxuICBhbGlnbm1lbnRDaGFuZ2VDaGVja3MgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XHJcbiAgYW5pbWF0aW9uQ2hhbmdlQ2hlY2tzID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xyXG4gIGNvbnRlbnRBbmltYXRpb25DaGFuZ2VDaGVja3MgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XHJcbiAgc3BhY2luZ0NoYW5nZUNoZWNrcyA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcclxuICBib3JkZXJDaGFuZ2VDaGVja3MgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XHJcbiAgY2FyZFNpemVDaGFuZ2VDaGVja3MgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XHJcbiAgaW1hZ2VTdHlsZUNoYW5nZUNoZWNrcyA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcclxuICB2aWRlb1N0eWxlQ2hhbmdlQ2hlY2tzID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xyXG4gIG9wZW5Qcm9kdWN0c0VkaXRvciA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcclxuICBjb3JuZXJDaGFuZ2VDaGVja3MgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XHJcbiAgdGV4dEJhY2tncm91bmRDaGFuZ2VDaGVja3MgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XHJcbiAgYnV0dG9uU3R5bGVDaGFuZ2VDaGVja3MgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XHJcbiAgcG9zdGlvbkxheW91dENoYW5nZUNoZWNrcyA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcclxuICBjb250ZW50QWxpZ25tZW50Q2hhbmdlQ2hlY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XHJcbiAgb2JqZWN0UG9zaXRpb25DaGFuZ2VDaGVjayA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcclxuICBsb2NhdGlvbkNoYW5nZUNoZWNrID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xyXG4gIG1hcFN0eWxlQ2hhbmdlQ2hlY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XHJcbiAgdGV4dFNpemVDaGFuZ2VDaGVjayA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcclxuICBibG9nQnlJZEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xyXG4gIG9wZW5CbG9nTGlzdEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xyXG4gIHRvZ2dsZUVkaXRvckV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIGNsb3NlRWRpdG9yRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGZhbHNlPigpO1xyXG4gIHBsYWNlT3JkZXIgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XHJcbiAgZmVhdHVyZUNvbGxlY3Rpb25MaXN0ID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xyXG4gIGNhdGVnb3J5UHJvZHVjdExpc3QgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBjb2xsZWN0aW9uc0xpc3RFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10+KCk7XHJcbiAgY2F0ZWdvcnlMaXN0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBhY3RpdmF0ZVNtYXJ0U2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIHNob3dMb2FkaW5nU2NyZWVuID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIGVudmlyb25tZW50VHlwZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBjYXNoRnJlZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xyXG4gIHNob3dCYWdJY29uID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIGZvcm1GaWVsZENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XHJcbiAgZWxlbWVudEhlaWdodCA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcclxuICBpY29uQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcclxuICBlbWl0Q291bnREb3duRGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIHNob3dEdW1teUNhcnRJdGVtcyA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxufVxyXG4iXX0=
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDOztBQUtqRSxNQUFNLE9BQU8sYUFBYTtJQUN4QjtRQU1BLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUMxQyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUN4QyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNyQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDN0MsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNqRCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDNUMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQzdDLDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDcEQsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNoRCxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDOUMsb0JBQW9CO1FBRXBCLCtCQUEwQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDekQsNkJBQXdCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUN2RCwwQkFBcUIsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ3BELDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDcEQsaUNBQTRCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUMzRCx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ2xELHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDakQseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNuRCwyQkFBc0IsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ3JELDJCQUFzQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDckQsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNqRCx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ2pELCtCQUEwQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDekQsNEJBQXVCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUN0RCw4QkFBeUIsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ3hELGdDQUEyQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDMUQsOEJBQXlCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUN4RCx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ2xELHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDbEQsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNsRCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDNUMsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNoRCxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ2hELHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7UUFDN0MsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDekMsMEJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNwRCx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ2pELHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUFZLENBQUM7UUFDcEQsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUMvQyx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ2xELHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDaEQsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRTdDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUM1QyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDMUMscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUMvQyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDNUMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQzFDLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDNUMsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNqRCxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQXhEbkMsQ0FBQztJQUVMLFFBQVEsS0FBVyxDQUFDOytHQUxULGFBQWE7bUhBQWIsYUFBYSxjQUZaLE1BQU07OzRGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFdmVudHNTZXJ2aWNlIGltcGxlbWVudHMgT25Jbml0IHtcclxuICBjb25zdHJ1Y3RvcihcclxuXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7IH1cclxuXHJcbiAgZWRpdFNlY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XHJcbiAgZHVwbGljYXRlID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xyXG4gIGRlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcclxuICBjaGFuZ2VQb3NpdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcclxuICBhZGROZXdTZWN0aW9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XHJcbiAgY2hhbmdlQ29udGVudCA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcclxuICByZXN0eWxlU2VjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcclxuICBwYWdlUmVkaXJlY3Rpb25CdXR0b24gPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XHJcbiAgYnV0dG9uUmVkaXJlY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XHJcbiAgY29udGFjdEZvcm1EYXRhID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xyXG4gIC8vcmVmZXJlbmNlIHNlcnZpY2VzXHJcblxyXG4gIGJhY2tncm91bmRJbWFnZUNoYW5nZUNoZWNrID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xyXG4gIGNvbG9yT3ZlcmxheUNoYW5nZUNoZWNrcyA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcclxuICBhbGlnbm1lbnRDaGFuZ2VDaGVja3MgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XHJcbiAgYW5pbWF0aW9uQ2hhbmdlQ2hlY2tzID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xyXG4gIGNvbnRlbnRBbmltYXRpb25DaGFuZ2VDaGVja3MgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XHJcbiAgc3BhY2luZ0NoYW5nZUNoZWNrcyA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcclxuICBib3JkZXJDaGFuZ2VDaGVja3MgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XHJcbiAgY2FyZFNpemVDaGFuZ2VDaGVja3MgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XHJcbiAgaW1hZ2VTdHlsZUNoYW5nZUNoZWNrcyA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcclxuICB2aWRlb1N0eWxlQ2hhbmdlQ2hlY2tzID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xyXG4gIG9wZW5Qcm9kdWN0c0VkaXRvciA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcclxuICBjb3JuZXJDaGFuZ2VDaGVja3MgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XHJcbiAgdGV4dEJhY2tncm91bmRDaGFuZ2VDaGVja3MgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XHJcbiAgYnV0dG9uU3R5bGVDaGFuZ2VDaGVja3MgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XHJcbiAgcG9zdGlvbkxheW91dENoYW5nZUNoZWNrcyA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcclxuICBjb250ZW50QWxpZ25tZW50Q2hhbmdlQ2hlY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XHJcbiAgb2JqZWN0UG9zaXRpb25DaGFuZ2VDaGVjayA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcclxuICBsb2NhdGlvbkNoYW5nZUNoZWNrID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xyXG4gIG1hcFN0eWxlQ2hhbmdlQ2hlY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XHJcbiAgdGV4dFNpemVDaGFuZ2VDaGVjayA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcclxuICBibG9nQnlJZEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xyXG4gIG9wZW5CbG9nTGlzdEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xyXG4gIHRvZ2dsZUVkaXRvckV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIGNsb3NlRWRpdG9yRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGZhbHNlPigpO1xyXG4gIHBsYWNlT3JkZXIgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XHJcbiAgZmVhdHVyZUNvbGxlY3Rpb25MaXN0ID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xyXG4gIGNhdGVnb3J5UHJvZHVjdExpc3QgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBjb2xsZWN0aW9uc0xpc3RFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10+KCk7XHJcbiAgY2F0ZWdvcnlMaXN0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBhY3RpdmF0ZVNtYXJ0U2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIHNob3dMb2FkaW5nU2NyZWVuID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIGVudmlyb25tZW50VHlwZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBjYXNoRnJlZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xyXG4gIHNob3dCYWdJY29uID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIGZvcm1GaWVsZENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XHJcbiAgZWxlbWVudEhlaWdodCA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcclxuICBpY29uQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcclxuICBlbWl0Q291bnREb3duRGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIHNob3dEdW1teUNhcnRJdGVtcyA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICBtZW51TGlzdCA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcclxufVxyXG4iXX0=