UNPKG

cfc-ds

Version:

Design System do Conselho Federal de Contabilidade baseado no govbr-ds

75 lines 20 kB
// wizard-navigation.component.ts import { Component, Input, Output, EventEmitter } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; import * as i2 from "@angular/flex-layout/extended"; export class WizardNavigationComponent { showCancelButton = true; isFirstStep = false; isLastStep = false; alwaysShowBackButton = false; disableBack = false; disableNext = false; disableFinish = false; // Propriedade para controlar o modo móvel isMobile = false; cancelText = 'Cancelar'; backText = 'Voltar'; nextText = 'Avançar'; finishText = 'Concluir'; cancel = new EventEmitter(); back = new EventEmitter(); next = new EventEmitter(); finish = new EventEmitter(); onCancel() { this.cancel.emit(); } onBack() { this.back.emit(); } onNext() { this.next.emit(); } onFinish() { this.finish.emit(); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WizardNavigationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: WizardNavigationComponent, selector: "cfc-wizard-navigation", inputs: { showCancelButton: "showCancelButton", isFirstStep: "isFirstStep", isLastStep: "isLastStep", alwaysShowBackButton: "alwaysShowBackButton", disableBack: "disableBack", disableNext: "disableNext", disableFinish: "disableFinish", isMobile: "isMobile", cancelText: "cancelText", backText: "backText", nextText: "nextText", finishText: "finishText" }, outputs: { cancel: "cancel", back: "back", next: "next", finish: "finish" }, ngImport: i0, template: "<!-- wizard-navigation.component.html -->\r\n<div class=\"wizard-navigation-bar\" [ngClass]=\"{'mobile-navigation': isMobile}\">\r\n <!-- Link Cancelar -->\r\n <div class=\"cancel-area\">\r\n <a *ngIf=\"showCancelButton\" \r\n class=\"cancel-link\" \r\n (click)=\"onCancel()\">\r\n {{ cancelText }}\r\n </a>\r\n </div>\r\n \r\n <!-- Bot\u00F5es de navega\u00E7\u00E3o -->\r\n <div class=\"navigation-buttons\">\r\n <!-- Bot\u00E3o Voltar -->\r\n <button \r\n *ngIf=\"!isFirstStep || alwaysShowBackButton\" \r\n [disabled]=\"isFirstStep || disableBack\"\r\n [ngClass]=\"isMobile ? 'mobile-back-button' : 'back-button'\"\r\n (click)=\"onBack()\">\r\n <ng-container *ngIf=\"!isMobile\">\r\n {{ backText }}\r\n </ng-container>\r\n <ng-container *ngIf=\"isMobile\">\r\n <!-- Seta para esquerda -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"arrow-icon\" viewBox=\"0 0 16 16\">\r\n <path fill-rule=\"evenodd\" d=\"M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z\"/>\r\n </svg>\r\n </ng-container>\r\n </button>\r\n \r\n <!-- Bot\u00E3o Avan\u00E7ar -->\r\n <button \r\n *ngIf=\"!isLastStep\" \r\n [disabled]=\"disableNext\"\r\n [ngClass]=\"isMobile ? 'mobile-next-button' : 'next-button'\"\r\n (click)=\"onNext()\">\r\n <ng-container *ngIf=\"!isMobile\">\r\n {{ nextText }}\r\n </ng-container>\r\n <ng-container *ngIf=\"isMobile\">\r\n <!-- Seta para direita -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"arrow-icon\" viewBox=\"0 0 16 16\">\r\n <path fill-rule=\"evenodd\" d=\"M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z\"/>\r\n </svg>\r\n </ng-container>\r\n </button>\r\n \r\n <!-- Bot\u00E3o Concluir -->\r\n <button \r\n *ngIf=\"isLastStep\" \r\n [disabled]=\"disableFinish\"\r\n [ngClass]=\"isMobile ? 'mobile-next-button' : 'finish-button'\"\r\n (click)=\"onFinish()\">\r\n <ng-container *ngIf=\"!isMobile\">\r\n {{ finishText }}\r\n </ng-container>\r\n <ng-container *ngIf=\"isMobile\">\r\n <!-- Check mark ou seta para direita -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"arrow-icon\" viewBox=\"0 0 16 16\">\r\n <path fill-rule=\"evenodd\" d=\"M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z\"/>\r\n </svg>\r\n </ng-container>\r\n </button>\r\n </div>\r\n</div>", styles: [".wizard-navigation-bar{display:flex;justify-content:space-between;align-items:center;padding:16px 24px;border-top:1px solid #e0e0e0;background-color:#fff}.mobile-navigation{position:fixed;bottom:0;left:0;right:0;z-index:100;box-shadow:0 -2px 5px #0000001a}.cancel-area .cancel-link{color:#06c;text-decoration:none;cursor:pointer;font-size:14px}.cancel-area .cancel-link:hover{color:#004999;text-decoration:underline}.navigation-buttons{display:flex;gap:8px}button{cursor:pointer;font-size:14px;font-weight:500;border-radius:20px;padding:8px 24px;min-width:100px;transition:background-color .2s}button:disabled{opacity:.5;cursor:not-allowed}.back-button{background-color:#fff;color:#06c;border:1px solid #0066CC}.back-button:hover:not(:disabled){background-color:#0066cc0d}.next-button,.finish-button{background-color:#06c;color:#fff;border:none}.next-button:hover:not(:disabled),.finish-button:hover:not(:disabled){background-color:#004999}.mobile-back-button,.mobile-next-button{width:40px;height:40px;min-width:40px;border-radius:50%;padding:0;display:flex;align-items:center;justify-content:center}.mobile-back-button{background-color:#fff;color:#06c;border:1px solid #0066CC}.mobile-back-button:hover:not(:disabled){background-color:#0066cc0d}.mobile-next-button{background-color:#06c;color:#fff;border:none}.mobile-next-button:hover:not(:disabled){background-color:#004999}.arrow-icon{width:16px;height:16px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }] }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WizardNavigationComponent, decorators: [{ type: Component, args: [{ selector: 'cfc-wizard-navigation', template: "<!-- wizard-navigation.component.html -->\r\n<div class=\"wizard-navigation-bar\" [ngClass]=\"{'mobile-navigation': isMobile}\">\r\n <!-- Link Cancelar -->\r\n <div class=\"cancel-area\">\r\n <a *ngIf=\"showCancelButton\" \r\n class=\"cancel-link\" \r\n (click)=\"onCancel()\">\r\n {{ cancelText }}\r\n </a>\r\n </div>\r\n \r\n <!-- Bot\u00F5es de navega\u00E7\u00E3o -->\r\n <div class=\"navigation-buttons\">\r\n <!-- Bot\u00E3o Voltar -->\r\n <button \r\n *ngIf=\"!isFirstStep || alwaysShowBackButton\" \r\n [disabled]=\"isFirstStep || disableBack\"\r\n [ngClass]=\"isMobile ? 'mobile-back-button' : 'back-button'\"\r\n (click)=\"onBack()\">\r\n <ng-container *ngIf=\"!isMobile\">\r\n {{ backText }}\r\n </ng-container>\r\n <ng-container *ngIf=\"isMobile\">\r\n <!-- Seta para esquerda -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"arrow-icon\" viewBox=\"0 0 16 16\">\r\n <path fill-rule=\"evenodd\" d=\"M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z\"/>\r\n </svg>\r\n </ng-container>\r\n </button>\r\n \r\n <!-- Bot\u00E3o Avan\u00E7ar -->\r\n <button \r\n *ngIf=\"!isLastStep\" \r\n [disabled]=\"disableNext\"\r\n [ngClass]=\"isMobile ? 'mobile-next-button' : 'next-button'\"\r\n (click)=\"onNext()\">\r\n <ng-container *ngIf=\"!isMobile\">\r\n {{ nextText }}\r\n </ng-container>\r\n <ng-container *ngIf=\"isMobile\">\r\n <!-- Seta para direita -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"arrow-icon\" viewBox=\"0 0 16 16\">\r\n <path fill-rule=\"evenodd\" d=\"M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z\"/>\r\n </svg>\r\n </ng-container>\r\n </button>\r\n \r\n <!-- Bot\u00E3o Concluir -->\r\n <button \r\n *ngIf=\"isLastStep\" \r\n [disabled]=\"disableFinish\"\r\n [ngClass]=\"isMobile ? 'mobile-next-button' : 'finish-button'\"\r\n (click)=\"onFinish()\">\r\n <ng-container *ngIf=\"!isMobile\">\r\n {{ finishText }}\r\n </ng-container>\r\n <ng-container *ngIf=\"isMobile\">\r\n <!-- Check mark ou seta para direita -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"arrow-icon\" viewBox=\"0 0 16 16\">\r\n <path fill-rule=\"evenodd\" d=\"M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z\"/>\r\n </svg>\r\n </ng-container>\r\n </button>\r\n </div>\r\n</div>", styles: [".wizard-navigation-bar{display:flex;justify-content:space-between;align-items:center;padding:16px 24px;border-top:1px solid #e0e0e0;background-color:#fff}.mobile-navigation{position:fixed;bottom:0;left:0;right:0;z-index:100;box-shadow:0 -2px 5px #0000001a}.cancel-area .cancel-link{color:#06c;text-decoration:none;cursor:pointer;font-size:14px}.cancel-area .cancel-link:hover{color:#004999;text-decoration:underline}.navigation-buttons{display:flex;gap:8px}button{cursor:pointer;font-size:14px;font-weight:500;border-radius:20px;padding:8px 24px;min-width:100px;transition:background-color .2s}button:disabled{opacity:.5;cursor:not-allowed}.back-button{background-color:#fff;color:#06c;border:1px solid #0066CC}.back-button:hover:not(:disabled){background-color:#0066cc0d}.next-button,.finish-button{background-color:#06c;color:#fff;border:none}.next-button:hover:not(:disabled),.finish-button:hover:not(:disabled){background-color:#004999}.mobile-back-button,.mobile-next-button{width:40px;height:40px;min-width:40px;border-radius:50%;padding:0;display:flex;align-items:center;justify-content:center}.mobile-back-button{background-color:#fff;color:#06c;border:1px solid #0066CC}.mobile-back-button:hover:not(:disabled){background-color:#0066cc0d}.mobile-next-button{background-color:#06c;color:#fff;border:none}.mobile-next-button:hover:not(:disabled){background-color:#004999}.arrow-icon{width:16px;height:16px}\n"] }] }], propDecorators: { showCancelButton: [{ type: Input }], isFirstStep: [{ type: Input }], isLastStep: [{ type: Input }], alwaysShowBackButton: [{ type: Input }], disableBack: [{ type: Input }], disableNext: [{ type: Input }], disableFinish: [{ type: Input }], isMobile: [{ type: Input }], cancelText: [{ type: Input }], backText: [{ type: Input }], nextText: [{ type: Input }], finishText: [{ type: Input }], cancel: [{ type: Output }], back: [{ type: Output }], next: [{ type: Output }], finish: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLW5hdmlnYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2ZjLWRzL3NyYy9saWIvY29tcG9uZW50cy93aXphcmQvd2l6YXJkTmF2aWdhdGlvbi93aXphcmQtbmF2aWdhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZmMtZHMvc3JjL2xpYi9jb21wb25lbnRzL3dpemFyZC93aXphcmROYXZpZ2F0aW9uL3dpemFyZC1uYXZpZ2F0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlDQUFpQztBQUNqQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBT3ZFLE1BQU0sT0FBTyx5QkFBeUI7SUFDM0IsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDcEIsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUNuQixvQkFBb0IsR0FBRyxLQUFLLENBQUM7SUFDN0IsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUNwQixXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQ3BCLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFFL0IsMENBQTBDO0lBQ2pDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFakIsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUN4QixRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQ3BCLFFBQVEsR0FBRyxTQUFTLENBQUM7SUFDckIsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUV2QixNQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUNsQyxJQUFJLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUNoQyxJQUFJLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUNoQyxNQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUU1QyxRQUFRO1FBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyQixDQUFDO3dHQXBDVSx5QkFBeUI7NEZBQXpCLHlCQUF5Qiw4ZUNSdEMsMHlGQWdFTTs7NEZEeERPLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSx1QkFBdUI7OEJBS3hCLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csSUFBSTtzQkFBYixNQUFNO2dCQUNHLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvLyB3aXphcmQtbmF2aWdhdGlvbi5jb21wb25lbnQudHNcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY2ZjLXdpemFyZC1uYXZpZ2F0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vd2l6YXJkLW5hdmlnYXRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3dpemFyZC1uYXZpZ2F0aW9uLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFdpemFyZE5hdmlnYXRpb25Db21wb25lbnQge1xyXG4gIEBJbnB1dCgpIHNob3dDYW5jZWxCdXR0b24gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGlzRmlyc3RTdGVwID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaXNMYXN0U3RlcCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGFsd2F5c1Nob3dCYWNrQnV0dG9uID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZGlzYWJsZUJhY2sgPSBmYWxzZTtcclxuICBASW5wdXQoKSBkaXNhYmxlTmV4dCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVGaW5pc2ggPSBmYWxzZTtcclxuICBcclxuICAvLyBQcm9wcmllZGFkZSBwYXJhIGNvbnRyb2xhciBvIG1vZG8gbcOzdmVsXHJcbiAgQElucHV0KCkgaXNNb2JpbGUgPSBmYWxzZTtcclxuICBcclxuICBASW5wdXQoKSBjYW5jZWxUZXh0ID0gJ0NhbmNlbGFyJztcclxuICBASW5wdXQoKSBiYWNrVGV4dCA9ICdWb2x0YXInO1xyXG4gIEBJbnB1dCgpIG5leHRUZXh0ID0gJ0F2YW7Dp2FyJztcclxuICBASW5wdXQoKSBmaW5pc2hUZXh0ID0gJ0NvbmNsdWlyJztcclxuICBcclxuICBAT3V0cHV0KCkgY2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBiYWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBuZXh0ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBmaW5pc2ggPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgXHJcbiAgb25DYW5jZWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhbmNlbC5lbWl0KCk7XHJcbiAgfVxyXG4gIFxyXG4gIG9uQmFjaygpOiB2b2lkIHtcclxuICAgIHRoaXMuYmFjay5lbWl0KCk7XHJcbiAgfVxyXG4gIFxyXG4gIG9uTmV4dCgpOiB2b2lkIHtcclxuICAgIHRoaXMubmV4dC5lbWl0KCk7XHJcbiAgfVxyXG4gIFxyXG4gIG9uRmluaXNoKCk6IHZvaWQge1xyXG4gICAgdGhpcy5maW5pc2guZW1pdCgpO1xyXG4gIH1cclxufSIsIjwhLS0gd2l6YXJkLW5hdmlnYXRpb24uY29tcG9uZW50Lmh0bWwgLS0+XHJcbjxkaXYgY2xhc3M9XCJ3aXphcmQtbmF2aWdhdGlvbi1iYXJcIiBbbmdDbGFzc109XCJ7J21vYmlsZS1uYXZpZ2F0aW9uJzogaXNNb2JpbGV9XCI+XHJcbiAgPCEtLSBMaW5rIENhbmNlbGFyIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJjYW5jZWwtYXJlYVwiPlxyXG4gICAgPGEgKm5nSWY9XCJzaG93Q2FuY2VsQnV0dG9uXCIgXHJcbiAgICAgICBjbGFzcz1cImNhbmNlbC1saW5rXCIgXHJcbiAgICAgICAoY2xpY2spPVwib25DYW5jZWwoKVwiPlxyXG4gICAgICB7eyBjYW5jZWxUZXh0IH19XHJcbiAgICA8L2E+XHJcbiAgPC9kaXY+XHJcbiAgXHJcbiAgPCEtLSBCb3TDtWVzIGRlIG5hdmVnYcOnw6NvIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJuYXZpZ2F0aW9uLWJ1dHRvbnNcIj5cclxuICAgIDwhLS0gQm90w6NvIFZvbHRhciAtLT5cclxuICAgIDxidXR0b24gXHJcbiAgICAgICpuZ0lmPVwiIWlzRmlyc3RTdGVwIHx8IGFsd2F5c1Nob3dCYWNrQnV0dG9uXCIgXHJcbiAgICAgIFtkaXNhYmxlZF09XCJpc0ZpcnN0U3RlcCB8fCBkaXNhYmxlQmFja1wiXHJcbiAgICAgIFtuZ0NsYXNzXT1cImlzTW9iaWxlID8gJ21vYmlsZS1iYWNrLWJ1dHRvbicgOiAnYmFjay1idXR0b24nXCJcclxuICAgICAgKGNsaWNrKT1cIm9uQmFjaygpXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNNb2JpbGVcIj5cclxuICAgICAgICB7eyBiYWNrVGV4dCB9fVxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTW9iaWxlXCI+XHJcbiAgICAgICAgPCEtLSBTZXRhIHBhcmEgZXNxdWVyZGEgLS0+XHJcbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGNsYXNzPVwiYXJyb3ctaWNvblwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIj5cclxuICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTExLjM1NCAxLjY0NmEuNS41IDAgMCAxIDAgLjcwOEw1LjcwNyA4bDUuNjQ3IDUuNjQ2YS41LjUgMCAwIDEtLjcwOC43MDhsLTYtNmEuNS41IDAgMCAxIDAtLjcwOGw2LTZhLjUuNSAwIDAgMSAuNzA4IDB6XCIvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgXHJcbiAgICA8IS0tIEJvdMOjbyBBdmFuw6dhciAtLT5cclxuICAgIDxidXR0b24gXHJcbiAgICAgICpuZ0lmPVwiIWlzTGFzdFN0ZXBcIiBcclxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVOZXh0XCJcclxuICAgICAgW25nQ2xhc3NdPVwiaXNNb2JpbGUgPyAnbW9iaWxlLW5leHQtYnV0dG9uJyA6ICduZXh0LWJ1dHRvbidcIlxyXG4gICAgICAoY2xpY2spPVwib25OZXh0KClcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc01vYmlsZVwiPlxyXG4gICAgICAgIHt7IG5leHRUZXh0IH19XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNNb2JpbGVcIj5cclxuICAgICAgICA8IS0tIFNldGEgcGFyYSBkaXJlaXRhIC0tPlxyXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBjbGFzcz1cImFycm93LWljb25cIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCI+XHJcbiAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgZD1cIk00LjY0NiAxLjY0NmEuNS41IDAgMCAxIC43MDggMGw2IDZhLjUuNSAwIDAgMSAwIC43MDhsLTYgNmEuNS41IDAgMCAxLS43MDgtLjcwOEwxMC4yOTMgOCA0LjY0NiAyLjM1NGEuNS41IDAgMCAxIDAtLjcwOHpcIi8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICBcclxuICAgIDwhLS0gQm90w6NvIENvbmNsdWlyIC0tPlxyXG4gICAgPGJ1dHRvbiBcclxuICAgICAgKm5nSWY9XCJpc0xhc3RTdGVwXCIgXHJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlRmluaXNoXCJcclxuICAgICAgW25nQ2xhc3NdPVwiaXNNb2JpbGUgPyAnbW9iaWxlLW5leHQtYnV0dG9uJyA6ICdmaW5pc2gtYnV0dG9uJ1wiXHJcbiAgICAgIChjbGljayk9XCJvbkZpbmlzaCgpXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNNb2JpbGVcIj5cclxuICAgICAgICB7eyBmaW5pc2hUZXh0IH19XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNNb2JpbGVcIj5cclxuICAgICAgICA8IS0tIENoZWNrIG1hcmsgb3Ugc2V0YSBwYXJhIGRpcmVpdGEgLS0+XHJcbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGNsYXNzPVwiYXJyb3ctaWNvblwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIj5cclxuICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTQuNjQ2IDEuNjQ2YS41LjUgMCAwIDEgLjcwOCAwbDYgNmEuNS41IDAgMCAxIDAgLjcwOGwtNiA2YS41LjUgMCAwIDEtLjcwOC0uNzA4TDEwLjI5MyA4IDQuNjQ2IDIuMzU0YS41LjUgMCAwIDEgMC0uNzA4elwiLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19