@alauda-fe/common
Version:
Alauda frontend team common codes.
136 lines • 19.6 kB
JavaScript
import { ThemeService } from '@alauda/ui';
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostListener, } from '@angular/core';
import { map } from 'rxjs';
import { publishRef } from '../../../../core/public-api';
import { NotifyService } from '../notify.service';
import { NOTIFY_PUSH_TYPE } from '../utils';
import * as i0 from "@angular/core";
import * as i1 from "../notify.service";
import * as i2 from "@alauda/ui";
function HeaderNotifyComponent_div_3_Template(rf, ctx) { if (rf & 1) {
const _r1 = i0.ɵɵgetCurrentView();
i0.ɵɵelementStart(0, "div", 6)(1, "span", 7);
i0.ɵɵtext(2);
i0.ɵɵpipe(3, "translate");
i0.ɵɵelementEnd();
i0.ɵɵelementStart(4, "div", 8)(5, "span", 9);
i0.ɵɵtext(6);
i0.ɵɵpipe(7, "translate");
i0.ɵɵelementEnd();
i0.ɵɵelementStart(8, "aui-switch", 10);
i0.ɵɵlistener("ngModelChange", function HeaderNotifyComponent_div_3_Template_aui_switch_ngModelChange_8_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.switchPush($event)); });
i0.ɵɵtwoWayListener("ngModelChange", function HeaderNotifyComponent_div_3_Template_aui_switch_ngModelChange_8_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.push, $event) || (ctx_r1.push = $event); return i0.ɵɵresetView($event); });
i0.ɵɵelementEnd()()();
} if (rf & 2) {
const ctx_r1 = i0.ɵɵnextContext();
i0.ɵɵadvance(2);
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 3, "message"), "");
i0.ɵɵadvance(4);
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(7, 5, "notify_push"), "");
i0.ɵɵadvance(2);
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.push);
} }
function HeaderNotifyComponent_ng_container_4_ng_container_1_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementContainerStart(0);
i0.ɵɵelement(1, "acl-notification-list", 12);
i0.ɵɵelementContainerEnd();
} if (rf & 2) {
const ctx_r1 = i0.ɵɵnextContext(2);
i0.ɵɵadvance();
i0.ɵɵproperty("list", ctx_r1.list);
} }
function HeaderNotifyComponent_ng_container_4_ng_template_2_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "div", 13);
i0.ɵɵelement(1, "img", 14);
i0.ɵɵpipe(2, "async");
i0.ɵɵelementStart(3, "span", 15);
i0.ɵɵtext(4);
i0.ɵɵpipe(5, "translate");
i0.ɵɵelementEnd()();
} if (rf & 2) {
const ctx_r1 = i0.ɵɵnextContext(2);
i0.ɵɵadvance();
i0.ɵɵproperty("src", i0.ɵɵpipeBind1(2, 2, ctx_r1.noDataSrc$), i0.ɵɵsanitizeUrl);
i0.ɵɵadvance(3);
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 4, "no_message"), " ");
} }
function HeaderNotifyComponent_ng_container_4_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementContainerStart(0);
i0.ɵɵtemplate(1, HeaderNotifyComponent_ng_container_4_ng_container_1_Template, 2, 1, "ng-container", 11)(2, HeaderNotifyComponent_ng_container_4_ng_template_2_Template, 6, 6, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
i0.ɵɵelementContainerEnd();
} if (rf & 2) {
const elseTemplate_r3 = i0.ɵɵreference(3);
const ctx_r1 = i0.ɵɵnextContext();
i0.ɵɵadvance();
i0.ɵɵproperty("ngIf", ctx_r1.list == null ? null : ctx_r1.list.length)("ngIfElse", elseTemplate_r3);
} }
export class HeaderNotifyComponent {
beforeUnloadHandle() {
this.notifyService.destroy();
}
constructor(notifyService, theme, cdr) {
this.notifyService = notifyService;
this.theme = theme;
this.cdr = cdr;
this.active = false;
this.visible = false;
this.noDataSrc$ = this.theme.currentTheme$.pipe(map(theme => `images/${theme}/no-message.svg`), publishRef());
}
ngOnInit() {
this.notifyService.watchNotify();
this.notifyService.userName$.subscribe(() => {
this.watchMessageConfigMap();
});
this.getNotifyList();
}
watchMessageConfigMap() {
this.pushEnabled = true;
this.push =
'' + this.notifyService.getCacheLocalValue(NOTIFY_PUSH_TYPE) === 'true';
this.cdr.markForCheck();
}
getNotifyList() {
this.notifyService.getNotifyList().subscribe((res) => {
this.list = res;
this.cdr.markForCheck();
});
}
openNotify() {
this.active = true;
}
closeNotify() {
this.active = false;
}
switchPush(enabled) {
this.notifyService.addCacheLocalValue(NOTIFY_PUSH_TYPE, enabled);
}
ngOnDestroy() {
this.notifyService.destroy();
}
static { this.ɵfac = function HeaderNotifyComponent_Factory(t) { return new (t || HeaderNotifyComponent)(i0.ɵɵdirectiveInject(i1.NotifyService), i0.ɵɵdirectiveInject(i2.ThemeService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); }; }
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: HeaderNotifyComponent, selectors: [["acl-header-notify"]], hostBindings: function HeaderNotifyComponent_HostBindings(rf, ctx) { if (rf & 1) {
i0.ɵɵlistener("beforeunload", function HeaderNotifyComponent_beforeunload_HostBindingHandler() { return ctx.beforeUnloadHandle(); }, false, i0.ɵɵresolveWindow);
} }, decls: 5, vars: 5, consts: [["elseTemplate", ""], [1, "notify", 3, "click"], ["icon", "volume", 1, "notify__icon"], ["drawerClass", "header-notify", "offsetY", "64px", 3, "close", "visible", "width", "hideOnClickOutside"], ["class", "header", 4, "auiDrawerHeader"], [4, "auiDrawerContent"], [1, "header"], [1, "text"], [1, "header_push"], [1, "label"], ["name", "push", 3, "ngModelChange", "ngModel"], [4, "ngIf", "ngIfElse"], [3, "list"], [1, "noData"], [3, "src"], [1, "noData_text"]], template: function HeaderNotifyComponent_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "div", 1);
i0.ɵɵlistener("click", function HeaderNotifyComponent_Template_div_click_0_listener() { return ctx.active ? ctx.closeNotify() : ctx.openNotify(); });
i0.ɵɵelement(1, "aui-icon", 2);
i0.ɵɵelementEnd();
i0.ɵɵelementStart(2, "aui-drawer", 3);
i0.ɵɵlistener("close", function HeaderNotifyComponent_Template_aui_drawer_close_2_listener() { return ctx.closeNotify(); });
i0.ɵɵtemplate(3, HeaderNotifyComponent_div_3_Template, 9, 7, "div", 4)(4, HeaderNotifyComponent_ng_container_4_Template, 4, 2, "ng-container", 5);
i0.ɵɵelementEnd();
} if (rf & 2) {
i0.ɵɵclassProp("active", ctx.active);
i0.ɵɵadvance(2);
i0.ɵɵproperty("visible", ctx.active)("width", 400)("hideOnClickOutside", true);
} }, styles: [".notify[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:2px;color:var(--acl-page-header-text-color);cursor:pointer}.notify[_ngcontent-%COMP%]:hover, .active[_ngcontent-%COMP%]{color:#fff;background-color:rgb(var(--aui-color-primary))}.header[_ngcontent-%COMP%]{display:flex;justify-content:space-between}.header[_ngcontent-%COMP%] .text[_ngcontent-%COMP%]{color:rgb(var(--aui-color-n-2));font-weight:500;font-size:var(--aui-font-size-l)}.header_push[_ngcontent-%COMP%]{display:flex;font-size:var(--aui-font-size-s);font-weight:400;color:rgb(var(--aui-color-n-1));align-items:center}.header_push[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{margin-right:8px} .aui-drawer.header-notify .noData{display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%} .aui-drawer.header-notify .noData img{width:160px} .aui-drawer.header-notify .noData_text{color:rgb(var(--aui-color-n-1));font-weight:400;margin-top:16px;font-size:var(--aui-font-size-xl)} .aui-drawer.header-notify .aui-drawer__body{padding:20px!important} aui-notification .platform-class{border-left:4px solid #1cb6cc} aui-notification .platform-class .aui-notification__icon{color:#1cb6cc}"], changeDetection: 0 }); }
}
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HeaderNotifyComponent, [{
type: Component,
args: [{ selector: 'acl-header-notify', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"notify\"\n [class.active]=\"active\"\n (click)=\"active ? closeNotify() : openNotify()\"\n>\n <aui-icon\n icon=\"volume\"\n class=\"notify__icon\"\n ></aui-icon>\n</div>\n\n<aui-drawer\n drawerClass=\"header-notify\"\n offsetY=\"64px\"\n [visible]=\"active\"\n (close)=\"closeNotify()\"\n [width]=\"400\"\n [hideOnClickOutside]=\"true\"\n>\n <div\n *auiDrawerHeader\n class=\"header\"\n >\n <span class=\"text\"> {{ 'message' | translate }}</span>\n <!-- TODO: \u8FD9\u4E2A\u7248\u672C\u6CA1\u6709\u81EA\u52A8\u53D1\u9001\u7684\u6D88\u606F\uFF0C\u7528\u6237\u624B\u518C\u6CA1\u6709\u529E\u6CD5\u63CF\u8FF0\u8FD9\u90E8\u5206\u529F\u80FD, \u4E0D\u5224\u65AD config map \u503C -->\n <!-- <div class=\"header_push\" *ngIf=\"pushEnabled\"> -->\n <div class=\"header_push\">\n <span class=\"label\"> {{ 'notify_push' | translate }}</span>\n <aui-switch\n name=\"push\"\n (ngModelChange)=\"switchPush($event)\"\n [(ngModel)]=\"push\"\n >\n </aui-switch>\n </div>\n </div>\n <ng-container *auiDrawerContent>\n <ng-container *ngIf=\"list?.length; else elseTemplate\">\n <acl-notification-list [list]=\"list\"></acl-notification-list>\n </ng-container>\n <ng-template #elseTemplate>\n <div class=\"noData\">\n <img [src]=\"noDataSrc$ | async\" />\n <span class=\"noData_text\">\n {{ 'no_message' | translate }}\n </span>\n </div>\n </ng-template>\n </ng-container>\n</aui-drawer>\n", styles: [".notify{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:2px;color:var(--acl-page-header-text-color);cursor:pointer}.notify:hover,.active{color:#fff;background-color:rgb(var(--aui-color-primary))}.header{display:flex;justify-content:space-between}.header .text{color:rgb(var(--aui-color-n-2));font-weight:500;font-size:var(--aui-font-size-l)}.header_push{display:flex;font-size:var(--aui-font-size-s);font-weight:400;color:rgb(var(--aui-color-n-1));align-items:center}.header_push .label{margin-right:8px}::ng-deep .aui-drawer.header-notify .noData{display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%}::ng-deep .aui-drawer.header-notify .noData img{width:160px}::ng-deep .aui-drawer.header-notify .noData_text{color:rgb(var(--aui-color-n-1));font-weight:400;margin-top:16px;font-size:var(--aui-font-size-xl)}::ng-deep .aui-drawer.header-notify .aui-drawer__body{padding:20px!important}::ng-deep aui-notification .platform-class{border-left:4px solid #1cb6cc}::ng-deep aui-notification .platform-class .aui-notification__icon{color:#1cb6cc}\n"] }]
}], () => [{ type: i1.NotifyService }, { type: i2.ThemeService }, { type: i0.ChangeDetectorRef }], { beforeUnloadHandle: [{
type: HostListener,
args: ['window:beforeunload']
}] }); })();
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(HeaderNotifyComponent, { className: "HeaderNotifyComponent" }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLW5vdGlmeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvcGFnZS1zY2FmZm9sZC9wYWdlLWhlYWRlci9oZWFkZXItbm90aWZ5L2NvbXBvbmVudC9oZWFkZXItbm90aWZ5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9wYWdlLXNjYWZmb2xkL3BhZ2UtaGVhZGVyL2hlYWRlci1ub3RpZnkvY29tcG9uZW50L2hlYWRlci1ub3RpZnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMxQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxHQUdiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFM0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQVcsZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7OztJQ1VqRCxBQUpGLDhCQUdDLGNBQ29CO0lBQUMsWUFBMkI7O0lBQUEsaUJBQU87SUFJcEQsQUFERiw4QkFBeUIsY0FDSDtJQUFDLFlBQStCOztJQUFBLGlCQUFPO0lBQzNELHNDQUlDO0lBRkMsMk1BQWlCLHlCQUFrQixLQUFDO0lBQ3BDLGtTQUFrQjtJQUl4QixBQURFLEFBREUsaUJBQWEsRUFDVCxFQUNGOzs7SUFaZ0IsZUFBMkI7SUFBM0IsK0RBQTJCO0lBSXhCLGVBQStCO0lBQS9CLG1FQUErQjtJQUlsRCxlQUFrQjtJQUFsQiwyQ0FBa0I7OztJQU10Qiw2QkFBc0Q7SUFD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dUJBQXVCLENBQUMsTUFBTTt5R0FTL0Msa0JBQWtCO2tCQURqQixZQUFZO21CQUFDLHFCQUFxQjs7a0ZBTnhCLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRoZW1lU2VydmljZSB9IGZyb20gJ0BhbGF1ZGEvdWknO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEhvc3RMaXN0ZW5lcixcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IHB1Ymxpc2hSZWYgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgTm90aWZ5U2VydmljZSB9IGZyb20gJy4uL25vdGlmeS5zZXJ2aWNlJztcbmltcG9ydCB7IE1lc3NhZ2UsIE5PVElGWV9QVVNIX1RZUEUgfSBmcm9tICcuLi91dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjbC1oZWFkZXItbm90aWZ5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2hlYWRlci1ub3RpZnkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9oZWFkZXItbm90aWZ5LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBIZWFkZXJOb3RpZnlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIGFjdGl2ZSA9IGZhbHNlO1xuICB2aXNpYmxlID0gZmFsc2U7XG4gIHB1c2g6IGJvb2xlYW47XG4gIHB1c2hFbmFibGVkOiBib29sZWFuO1xuICBsaXN0OiBNZXNzYWdlW107XG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpiZWZvcmV1bmxvYWQnKVxuICBiZWZvcmVVbmxvYWRIYW5kbGUoKSB7XG4gICAgdGhpcy5ub3RpZnlTZXJ2aWNlLmRlc3Ryb3koKTtcbiAgfVxuXG4gIG5vRGF0YVNyYyQgPSB0aGlzLnRoZW1lLmN1cnJlbnRUaGVtZSQucGlwZShcbiAgICBtYXAodGhlbWUgPT4gYGltYWdlcy8ke3RoZW1lfS9uby1tZXNzYWdlLnN2Z2ApLFxuICAgIHB1Ymxpc2hSZWYoKSxcbiAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5vdGlmeVNlcnZpY2U6IE5vdGlmeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0aGVtZTogVGhlbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubm90aWZ5U2VydmljZS53YXRjaE5vdGlmeSgpO1xuICAgIHRoaXMubm90aWZ5U2VydmljZS51c2VyTmFtZSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMud2F0Y2hNZXNzYWdlQ29uZmlnTWFwKCk7XG4gICAgfSk7XG4gICAgdGhpcy5nZXROb3RpZnlMaXN0KCk7XG4gIH1cblxuICB3YXRjaE1lc3NhZ2VDb25maWdNYXAoKSB7XG4gICAgdGhpcy5wdXNoRW5hYmxlZCA9IHRydWU7XG4gICAgdGhpcy5wdXNoID1cbiAgICAgICcnICsgdGhpcy5ub3RpZnlTZXJ2aWNlLmdldENhY2hlTG9jYWxWYWx1ZShOT1RJRllfUFVTSF9UWVBFKSA9PT0gJ3RydWUnO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgZ2V0Tm90aWZ5TGlzdCgpIHtcbiAgICB0aGlzLm5vdGlmeVNlcnZpY2UuZ2V0Tm90aWZ5TGlzdCgpLnN1YnNjcmliZSgocmVzOiBNZXNzYWdlW10pID0+IHtcbiAgICAgIHRoaXMubGlzdCA9IHJlcztcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgb3Blbk5vdGlmeSgpIHtcbiAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gIH1cblxuICBjbG9zZU5vdGlmeSgpIHtcbiAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICB9XG5cbiAgc3dpdGNoUHVzaChlbmFibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5ub3RpZnlTZXJ2aWNlLmFkZENhY2hlTG9jYWxWYWx1ZShOT1RJRllfUFVTSF9UWVBFLCBlbmFibGVkKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMubm90aWZ5U2VydmljZS5kZXN0cm95KCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJub3RpZnlcIlxuICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVwiXG4gIChjbGljayk9XCJhY3RpdmUgPyBjbG9zZU5vdGlmeSgpIDogb3Blbk5vdGlmeSgpXCJcbj5cbiAgPGF1aS1pY29uXG4gICAgaWNvbj1cInZvbHVtZVwiXG4gICAgY2xhc3M9XCJub3RpZnlfX2ljb25cIlxuICA+PC9hdWktaWNvbj5cbjwvZGl2PlxuXG48YXVpLWRyYXdlclxuICBkcmF3ZXJDbGFzcz1cImhlYWRlci1ub3RpZnlcIlxuICBvZmZzZXRZPVwiNjRweFwiXG4gIFt2aXNpYmxlXT1cImFjdGl2ZVwiXG4gIChjbG9zZSk9XCJjbG9zZU5vdGlmeSgpXCJcbiAgW3dpZHRoXT1cIjQwMFwiXG4gIFtoaWRlT25DbGlja091dHNpZGVdPVwidHJ1ZVwiXG4+XG4gIDxkaXZcbiAgICAqYXVpRHJhd2VySGVhZGVyXG4gICAgY2xhc3M9XCJoZWFkZXJcIlxuICA+XG4gICAgPHNwYW4gY2xhc3M9XCJ0ZXh0XCI+IHt7ICdtZXNzYWdlJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICA8IS0tIFRPRE86IOi/meS4queJiOacrOayoeacieiHquWKqOWPkemAgeeahOa2iOaBr++8jOeUqOaIt+aJi+WGjOayoeacieWKnuazleaPj+i/sOi/memDqOWIhuWKn+iDvSwg5LiN5Yik5patIGNvbmZpZyBtYXAg5YC8IC0tPlxuICAgIDwhLS0gPGRpdiBjbGFzcz1cImhlYWRlcl9wdXNoXCIgKm5nSWY9XCJwdXNoRW5hYmxlZFwiPiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyX3B1c2hcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj4ge3sgJ25vdGlmeV9wdXNoJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgIDxhdWktc3dpdGNoXG4gICAgICAgIG5hbWU9XCJwdXNoXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic3dpdGNoUHVzaCgkZXZlbnQpXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJwdXNoXCJcbiAgICAgID5cbiAgICAgIDwvYXVpLXN3aXRjaD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxuZy1jb250YWluZXIgKmF1aURyYXdlckNvbnRlbnQ+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxpc3Q/Lmxlbmd0aDsgZWxzZSBlbHNlVGVtcGxhdGVcIj5cbiAgICAgIDxhY2wtbm90aWZpY2F0aW9uLWxpc3QgW2xpc3RdPVwibGlzdFwiPjwvYWNsLW5vdGlmaWNhdGlvbi1saXN0PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZWxzZVRlbXBsYXRlPlxuICAgICAgPGRpdiBjbGFzcz1cIm5vRGF0YVwiPlxuICAgICAgICA8aW1nIFtzcmNdPVwibm9EYXRhU3JjJCB8IGFzeW5jXCIgLz5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJub0RhdGFfdGV4dFwiPlxuICAgICAgICAgIHt7ICdub19tZXNzYWdlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvYXVpLWRyYXdlcj5cbiJdfQ==