cocori-ng
Version:
Cocori-ng is an Angular full of great components & utilites based on Material
66 lines • 19.3 kB
JavaScript
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild, ViewContainerRef, ViewEncapsulation, } from '@angular/core';
import { MatBottomSheet } from '@angular/material/bottom-sheet';
import { Subject } from 'rxjs';
import { filter, takeUntil, tap } from 'rxjs/operators';
import * as i0 from "@angular/core";
import * as i1 from "../../../core/service/cms.service";
import * as i2 from "cocori-ng/src/feature-core";
import * as i3 from "@angular/cdk/drag-drop";
export class CocoringCmsSectionComponent {
constructor(host, cdr, cmsService, injectComponentService) {
this.host = host;
this.cdr = cdr;
this.cmsService = cmsService;
this.injectComponentService = injectComponentService;
this.afterRemoveAnimation = new EventEmitter();
this.readOnly = true;
this.destroy$ = new Subject();
}
animationDone(event) {
if (event.animationName === 'sectionOut') {
this.afterRemoveAnimation.emit(this.indexSectionRemoved);
}
}
ngOnInit() {
this.addTemplateSectionComponent();
this.catalogBlocksOpenedEvent();
this.onSectionRemoved();
}
ngOnDestroy() {
this.destroy$.next(undefined);
this.destroy$.complete();
}
get container() {
return this.host.nativeElement.querySelector('.cms-section');
}
removeSection() {
this.container.style.animation = 'sectionOut 0.3s';
}
onSectionRemoved() {
this.cmsService.onSectionRemoved().pipe(takeUntil(this.destroy$), filter((sectionRemoved) => sectionRemoved.section.id === this.section.id), tap((sectionRemoved) => this.indexSectionRemoved = sectionRemoved.index), tap(_ => this.removeSection())).subscribe();
}
catalogBlocksOpenedEvent() {
this.cmsService.catalogBlocksOpened$.pipe(takeUntil(this.destroy$), tap((isOpened) => {
this.readOnly = isOpened;
}), tap(_ => this.cdr.detectChanges())).subscribe();
}
addTemplateSectionComponent() {
this.injectComponentService.loadAndAddComponentToContainer(this.section.component, this.containerRef, { section: this.section, apisConfig: this.apisConfig }, null);
}
}
CocoringCmsSectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: CocoringCmsSectionComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.CmsService }, { token: i2.InjectComponentService }], target: i0.ɵɵFactoryTarget.Component });
CocoringCmsSectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.1", type: CocoringCmsSectionComponent, selector: "cocoring-cms-section", inputs: { section: "section", apisConfig: "apisConfig" }, outputs: { afterRemoveAnimation: "afterRemoveAnimation" }, providers: [MatBottomSheet], viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["ContainerRef"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<div class=\"cms-section\" (animationend)=\"animationDone($event)\">\r\n <div cdkDrag [cdkDragDisabled]=\"!readOnly\" cdkDragLockAxis=\"y\" cdkDragBoundary=\".blocks\">\r\n <ng-template #ContainerRef></ng-template>\r\n <div class=\"example-custom-placeholder\" *cdkDragPlaceholder></div>\r\n <div *cdkDragPreview></div>\r\n </div>\r\n</div>", styles: ["@charset \"UTF-8\";:host{display:block}.orientation-column .zone-left{margin-bottom:1.5rem}.orientation-column .row-zones{flex-wrap:nowrap!important}.zone-left-mobile{margin-bottom:1.5rem;max-height:100%!important}.cms-section{position:relative}section.cms-block{width:100%;padding:7.5rem 0;margin:0 auto;background-color:#fff}section.cms-block .container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}section.cms-block .container .row{width:100%;display:flex;align-items:flex-start;flex-wrap:wrap}section.cms-block .container .row.row-mobile img{display:block;margin-left:auto!important;margin-right:auto!important;max-width:100%;height:auto;float:none!important}section.cms-block .container .row .zone-editor{padding-left:15px;padding-right:15px;width:100%}section.cms-block .container .row .row-zones{flex-wrap:wrap}section .justify-content-center{justify-content:center}section .container-image-full{min-height:300px;width:100%;height:100%;position:relative}section .background-image-full{background-repeat:no-repeat;background-size:cover;background-position:center;position:relative;height:100%;width:100%}\n", ":host{display:block}.placeholder{background-color:#fff;min-height:200px;border:4px solid rgb(98,98,247)}.cdk-drop-list-dragging section.cms-block:hover{border:8px solid blue!important}.cms-section{animation:sectionIn .5s}cocoring-cms-section section.cms-block{transition:opacity .3s ease-out;transition:box-shadow .3s ease-out;box-shadow:0 0 30px #00000024,0 0 12px #00000029}cocoring-cms-section section.cms-block:hover{opacity:.95}cocoring-cms-section section.cms-block.sidenav-openned{margin-bottom:10px;cursor:pointer}cocoring-cms-section section.cms-block .mce-content-body img{max-width:100%;height:auto}cocoring-cms-section section.cms-block .mce-content-body[data-mce-placeholder]:not(.mce-visualblocks):before{font-size:2.5em;text-align:center;line-height:1em;width:100%}cocoring-cms-section section.cms-block.cms-block{margin:0 auto}cocoring-cms-section section.cms-block.cms-block.orientation-column .zone-editor{max-height:none!important}cocoring-cms-section section.cms-block.cms-block .container .row .zone-editor{border:1px dashed transparent}cocoring-cms-section section.cms-block.cms-block .container .row .zone-editor:hover{border:1px dashed #909090}.sidenav-openned section.cms-block:hover{opacity:.5!important}@keyframes sectionIn{0%{transform:translate(200px);opacity:0}to{transform:translate(0);opacity:1}}@keyframes sectionOut{to{transform:translate(-50%) translateY(-100px);opacity:0}}\n"], dependencies: [{ kind: "directive", type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i3.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "directive", type: i3.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: CocoringCmsSectionComponent, decorators: [{
type: Component,
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, selector: 'cocoring-cms-section', providers: [MatBottomSheet], template: "<div class=\"cms-section\" (animationend)=\"animationDone($event)\">\r\n <div cdkDrag [cdkDragDisabled]=\"!readOnly\" cdkDragLockAxis=\"y\" cdkDragBoundary=\".blocks\">\r\n <ng-template #ContainerRef></ng-template>\r\n <div class=\"example-custom-placeholder\" *cdkDragPlaceholder></div>\r\n <div *cdkDragPreview></div>\r\n </div>\r\n</div>", styles: ["@charset \"UTF-8\";:host{display:block}.orientation-column .zone-left{margin-bottom:1.5rem}.orientation-column .row-zones{flex-wrap:nowrap!important}.zone-left-mobile{margin-bottom:1.5rem;max-height:100%!important}.cms-section{position:relative}section.cms-block{width:100%;padding:7.5rem 0;margin:0 auto;background-color:#fff}section.cms-block .container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}section.cms-block .container .row{width:100%;display:flex;align-items:flex-start;flex-wrap:wrap}section.cms-block .container .row.row-mobile img{display:block;margin-left:auto!important;margin-right:auto!important;max-width:100%;height:auto;float:none!important}section.cms-block .container .row .zone-editor{padding-left:15px;padding-right:15px;width:100%}section.cms-block .container .row .row-zones{flex-wrap:wrap}section .justify-content-center{justify-content:center}section .container-image-full{min-height:300px;width:100%;height:100%;position:relative}section .background-image-full{background-repeat:no-repeat;background-size:cover;background-position:center;position:relative;height:100%;width:100%}\n", ":host{display:block}.placeholder{background-color:#fff;min-height:200px;border:4px solid rgb(98,98,247)}.cdk-drop-list-dragging section.cms-block:hover{border:8px solid blue!important}.cms-section{animation:sectionIn .5s}cocoring-cms-section section.cms-block{transition:opacity .3s ease-out;transition:box-shadow .3s ease-out;box-shadow:0 0 30px #00000024,0 0 12px #00000029}cocoring-cms-section section.cms-block:hover{opacity:.95}cocoring-cms-section section.cms-block.sidenav-openned{margin-bottom:10px;cursor:pointer}cocoring-cms-section section.cms-block .mce-content-body img{max-width:100%;height:auto}cocoring-cms-section section.cms-block .mce-content-body[data-mce-placeholder]:not(.mce-visualblocks):before{font-size:2.5em;text-align:center;line-height:1em;width:100%}cocoring-cms-section section.cms-block.cms-block{margin:0 auto}cocoring-cms-section section.cms-block.cms-block.orientation-column .zone-editor{max-height:none!important}cocoring-cms-section section.cms-block.cms-block .container .row .zone-editor{border:1px dashed transparent}cocoring-cms-section section.cms-block.cms-block .container .row .zone-editor:hover{border:1px dashed #909090}.sidenav-openned section.cms-block:hover{opacity:.5!important}@keyframes sectionIn{0%{transform:translate(200px);opacity:0}to{transform:translate(0);opacity:1}}@keyframes sectionOut{to{transform:translate(-50%) translateY(-100px);opacity:0}}\n"] }]
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.CmsService }, { type: i2.InjectComponentService }]; }, propDecorators: { containerRef: [{
type: ViewChild,
args: ['ContainerRef', { static: true, read: ViewContainerRef }]
}], section: [{
type: Input
}], apisConfig: [{
type: Input
}], afterRemoveAnimation: [{
type: Output
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29jb3JpbmctY21zLXNlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29jb3JpLW5nL3NyYy9mZWF0dXJlLWNtcy9zaGFyZWQvY29tcG9uZW50LWNtcy1lZGl0b3IvY29jb3JpbmctY21zLXNlY3Rpb24vY29jb3JpbmctY21zLXNlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29jb3JpLW5nL3NyYy9mZWF0dXJlLWNtcy9zaGFyZWQvY29tcG9uZW50LWNtcy1lZGl0b3IvY29jb3JpbmctY21zLXNlY3Rpb24vY29jb3JpbmctY21zLXNlY3Rpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNULGdCQUFnQixFQUNoQixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWhFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBYXhELE1BQU0sT0FBTywyQkFBMkI7SUFrQnRDLFlBQ1UsSUFBNkIsRUFDN0IsR0FBc0IsRUFDdEIsVUFBc0IsRUFDdEIsc0JBQThDO1FBSDlDLFNBQUksR0FBSixJQUFJLENBQXlCO1FBQzdCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQWpCOUMseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVwRCxhQUFR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QjtzQkFBN0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q29udGFpbmVyUmVmLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRCb3R0b21TaGVldCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2JvdHRvbS1zaGVldCc7XHJcbmltcG9ydCB7IEluamVjdENvbXBvbmVudFNlcnZpY2UgfSBmcm9tICdjb2Nvcmktbmcvc3JjL2ZlYXR1cmUtY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IEFwaXNDb25maWdDbXNNb2RlbCwgSW5zZXJ0U2VjdGlvbkF0IGFzIFNlY3Rpb25JbmRleCwgU2VjdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbC9jbXMubW9kZWwnO1xyXG5pbXBvcnQgeyBDbXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL2Ntcy5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgc2VsZWN0b3I6ICdjb2NvcmluZy1jbXMtc2VjdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvY29yaW5nLWNtcy1zZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi4vLi4vc2VjdGlvbi1zdHlsZXMvc2VjdGlvbi1zdHlsZXMuY29tcG9uZW50LnNjc3MnLCAnLi9jb2NvcmluZy1jbXMtc2VjdGlvbi5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW01hdEJvdHRvbVNoZWV0XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29jb3JpbmdDbXNTZWN0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ0NvbnRhaW5lclJlZicsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIGNvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZjtcclxuXHJcbiAgQElucHV0KCkgc2VjdGlvbjogU2VjdGlvbk1vZGVsXHJcbiAgQElucHV0KCkgYXBpc0NvbmZpZzogQXBpc0NvbmZpZ0Ntc01vZGVsXHJcbiAgQE91dHB1dCgpIGFmdGVyUmVtb3ZlQW5pbWF0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICByZWFkT25seTogYm9vbGVhbiA9IHRydWU7XHJcbiAgaW5kZXhTZWN0aW9uUmVtb3ZlZDogbnVtYmVyO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgYW5pbWF0aW9uRG9uZShldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcclxuICAgIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnc2VjdGlvbk91dCcpIHtcclxuICAgICAgdGhpcy5hZnRlclJlbW92ZUFuaW1hdGlvbi5lbWl0KHRoaXMuaW5kZXhTZWN0aW9uUmVtb3ZlZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaG9zdDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGNtc1NlcnZpY2U6IENtc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGluamVjdENvbXBvbmVudFNlcnZpY2U6IEluamVjdENvbXBvbmVudFNlcnZpY2UsXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFkZFRlbXBsYXRlU2VjdGlvbkNvbXBvbmVudCgpXHJcblxyXG4gICAgdGhpcy5jYXRhbG9nQmxvY2tzT3BlbmVkRXZlbnQoKVxyXG5cclxuICAgIHRoaXMub25TZWN0aW9uUmVtb3ZlZCgpXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh1bmRlZmluZWQpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNvbnRhaW5lcigpOiBIVE1MRWxlbWVudCB7XHJcbiAgICByZXR1cm4gdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmNtcy1zZWN0aW9uJykgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgfVxyXG5cclxuICByZW1vdmVTZWN0aW9uKCkge1xyXG4gICAgdGhpcy5jb250YWluZXIuc3R5bGUuYW5pbWF0aW9uID0gJ3NlY3Rpb25PdXQgMC4zcyc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uU2VjdGlvblJlbW92ZWQoKSB7XHJcbiAgICB0aGlzLmNtc1NlcnZpY2Uub25TZWN0aW9uUmVtb3ZlZCgpLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcclxuICAgICAgZmlsdGVyKChzZWN0aW9uUmVtb3ZlZDogU2VjdGlvbkluZGV4KSA9PiBzZWN0aW9uUmVtb3ZlZC5zZWN0aW9uLmlkID09PSB0aGlzLnNlY3Rpb24uaWQpLFxyXG4gICAgICB0YXAoKHNlY3Rpb25SZW1vdmVkOiBTZWN0aW9uSW5kZXgpID0+IHRoaXMuaW5kZXhTZWN0aW9uUmVtb3ZlZCA9IHNlY3Rpb25SZW1vdmVkLmluZGV4KSxcclxuICAgICAgdGFwKF8gPT4gdGhpcy5yZW1vdmVTZWN0aW9uKCkpLFxyXG4gICAgKS5zdWJzY3JpYmUoKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYXRhbG9nQmxvY2tzT3BlbmVkRXZlbnQoKSB7XHJcbiAgICB0aGlzLmNtc1NlcnZpY2UuY2F0YWxvZ0Jsb2Nrc09wZW5lZCQucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxyXG4gICAgICB0YXAoKGlzT3BlbmVkOiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZWFkT25seSA9IGlzT3BlbmVkXHJcbiAgICAgIH0pLFxyXG4gICAgICB0YXAoXyA9PiB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCkpXHJcbiAgICApLnN1YnNjcmliZSgpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZFRlbXBsYXRlU2VjdGlvbkNvbXBvbmVudCgpIHtcclxuICAgIHRoaXMuaW5qZWN0Q29tcG9uZW50U2VydmljZS5sb2FkQW5kQWRkQ29tcG9uZW50VG9Db250YWluZXIodGhpcy5zZWN0aW9uLmNvbXBvbmVudCwgdGhpcy5jb250YWluZXJSZWYsXHJcbiAgICAgIHsgc2VjdGlvbjogdGhpcy5zZWN0aW9uLCBhcGlzQ29uZmlnOiB0aGlzLmFwaXNDb25maWcgfSwgbnVsbClcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNtcy1zZWN0aW9uXCIgKGFuaW1hdGlvbmVuZCk9XCJhbmltYXRpb25Eb25lKCRldmVudClcIj5cclxuICAgIDxkaXYgY2RrRHJhZyBbY2RrRHJhZ0Rpc2FibGVkXT1cIiFyZWFkT25seVwiIGNka0RyYWdMb2NrQXhpcz1cInlcIiBjZGtEcmFnQm91bmRhcnk9XCIuYmxvY2tzXCI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNDb250YWluZXJSZWY+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXhhbXBsZS1jdXN0b20tcGxhY2Vob2xkZXJcIiAqY2RrRHJhZ1BsYWNlaG9sZGVyPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgKmNka0RyYWdQcmV2aWV3PjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==