lib-portal-angular 0.0.66 → 0.0.68

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,62 @@
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../service/auth-service.service";
4
+ import * as i2 from "@angular/common";
5
+ export class AccordionArgentaComponent {
6
+ constructor(authService) {
7
+ this.authService = authService;
8
+ this.title = 'Accordion Title'; // Título do accordion
9
+ this.isOpen = false; // Estado inicial do accordion
10
+ this.permissions = []; // Permissões necessárias para exibir o accordion
11
+ this.toggleEvent = new EventEmitter(); // Evento emitido ao abrir/fechar o accordion
12
+ }
13
+ ngOnInit() {
14
+ this.validatePermissions();
15
+ }
16
+ ngOnChanges(changes) {
17
+ if (changes['permissions']) {
18
+ this.validatePermissions();
19
+ }
20
+ }
21
+ hasPermission() {
22
+ if (!this.permissions || this.permissions.length === 0) {
23
+ return true; // Se não forem passadas permissões, o accordion será exibido por padrão
24
+ }
25
+ try {
26
+ return this.authService.hasPermission(this.permissions); // Verifica se o usuário tem as permissões
27
+ }
28
+ catch (error) {
29
+ if (error instanceof Error) {
30
+ console.error('Permission error:', error.message);
31
+ }
32
+ else {
33
+ console.error('Unknown error occurred during permission check');
34
+ }
35
+ return false; // Se ocorrer um erro ou as permissões não forem válidas, o accordion não será exibido
36
+ }
37
+ }
38
+ toggle() {
39
+ this.isOpen = !this.isOpen;
40
+ this.toggleEvent.emit(this.isOpen); // Emite o estado atual (aberto ou fechado)
41
+ }
42
+ validatePermissions() {
43
+ if (!Array.isArray(this.permissions)) {
44
+ throw new Error(`Invalid permissions: ${this.permissions}. It should be an array of strings.`);
45
+ }
46
+ }
47
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AccordionArgentaComponent, deps: [{ token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Component }); }
48
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AccordionArgentaComponent, selector: "argenta-accordion", inputs: { title: "title", isOpen: "isOpen", permissions: "permissions" }, outputs: { toggleEvent: "toggleEvent" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"hasPermission()\">\n <div class=\"accordion\">\n <div class=\"accordion-header\" (click)=\"toggle()\" [class.open]=\"isOpen\">\n <h3>{{ title }}</h3>\n <!-- \u00CDcone da seta -->\n <span class=\"accordion-icon\">\u25BC</span>\n </div>\n <div class=\"accordion-content\" [class.open]=\"isOpen\">\n <ng-content></ng-content> <!-- Conte\u00FAdo do accordion -->\n </div>\n </div>\n</ng-container>\n", styles: ["@charset \"UTF-8\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap\";body{font-family:Inter,sans-serif}.accordion{border:1px solid #ccc;border-radius:8px;margin-bottom:15px;font-family:Inter,Arial,sans-serif;transition:max-height .4s ease;overflow:hidden}.accordion .accordion-header{background-color:#00444c;color:#fff;cursor:pointer;padding:10px;display:flex;justify-content:space-between;align-items:center;font-size:1.2rem}.accordion .accordion-header h3{margin:0;font-size:1rem;font-weight:700}.accordion .accordion-header .accordion-icon{font-size:1.2rem;transition:transform .4s ease;transform:rotate(0)}.accordion .accordion-header.open .accordion-icon{transform:rotate(180deg)}.accordion .accordion-content{max-height:0;overflow:hidden;padding:0 10px;background-color:#fff;font-size:.9rem;transition:max-height .4s ease,padding .4s ease}.accordion .accordion-content.open{max-height:500px;padding:10px;border-bottom-left-radius:8px;border-bottom-right-radius:8px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
49
+ }
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AccordionArgentaComponent, decorators: [{
51
+ type: Component,
52
+ args: [{ selector: 'argenta-accordion', template: "<ng-container *ngIf=\"hasPermission()\">\n <div class=\"accordion\">\n <div class=\"accordion-header\" (click)=\"toggle()\" [class.open]=\"isOpen\">\n <h3>{{ title }}</h3>\n <!-- \u00CDcone da seta -->\n <span class=\"accordion-icon\">\u25BC</span>\n </div>\n <div class=\"accordion-content\" [class.open]=\"isOpen\">\n <ng-content></ng-content> <!-- Conte\u00FAdo do accordion -->\n </div>\n </div>\n</ng-container>\n", styles: ["@charset \"UTF-8\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap\";body{font-family:Inter,sans-serif}.accordion{border:1px solid #ccc;border-radius:8px;margin-bottom:15px;font-family:Inter,Arial,sans-serif;transition:max-height .4s ease;overflow:hidden}.accordion .accordion-header{background-color:#00444c;color:#fff;cursor:pointer;padding:10px;display:flex;justify-content:space-between;align-items:center;font-size:1.2rem}.accordion .accordion-header h3{margin:0;font-size:1rem;font-weight:700}.accordion .accordion-header .accordion-icon{font-size:1.2rem;transition:transform .4s ease;transform:rotate(0)}.accordion .accordion-header.open .accordion-icon{transform:rotate(180deg)}.accordion .accordion-content{max-height:0;overflow:hidden;padding:0 10px;background-color:#fff;font-size:.9rem;transition:max-height .4s ease,padding .4s ease}.accordion .accordion-content.open{max-height:500px;padding:10px;border-bottom-left-radius:8px;border-bottom-right-radius:8px}\n"] }]
53
+ }], ctorParameters: function () { return [{ type: i1.AuthService }]; }, propDecorators: { title: [{
54
+ type: Input
55
+ }], isOpen: [{
56
+ type: Input
57
+ }], permissions: [{
58
+ type: Input
59
+ }], toggleEvent: [{
60
+ type: Output
61
+ }] } });
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYi1wb3J0YWwtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvYWNjb3JkaW9uL2FjY29yZGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saWItcG9ydGFsLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2FjY29yZGlvbi9hY2NvcmRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBNkQsTUFBTSxlQUFlLENBQUM7Ozs7QUFRbEksTUFBTSxPQUFPLHlCQUF5QjtJQU9sQyxZQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQU5uQyxVQUFLLEdBQVcsaUJBQWlCLENBQUMsQ0FBRSxzQkFBc0I7UUFDMUQsV0FBTSxHQUFZLEtBQUssQ0FBQyxDQUFZLDhCQUE4QjtRQUNsRSxnQkFBVyxHQUFhLEVBQUUsQ0FBQyxDQUFTLGlEQUFpRDtRQUVwRixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUMsQ0FBRSw2Q0FBNkM7SUFFbkQsQ0FBQztJQUVqRCxRQUFRO1FBQ0osSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUN4QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztTQUM5QjtJQUNMLENBQUM7SUFFRCxhQUFhO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3BELE9BQU8sSUFBSSxDQUFDLENBQUMsd0VBQXdFO1NBQ3hGO1FBRUQsSUFBSTtZQUNBLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsMENBQTBDO1NBQ3RHO1FBQUMsT0FBTyxLQUFjLEVBQUU7WUFDckIsSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFO2dCQUN4QixPQUFPLENBQUMsS0FBSyxDQUFDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNyRDtpQkFBTTtnQkFDSCxPQUFPLENBQUMsS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7YUFDbkU7WUFDRCxPQUFPLEtBQUssQ0FBQyxDQUFDLHNGQUFzRjtTQUN2RztJQUNMLENBQUM7SUFFRCxNQUFNO1FBQ0YsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUUsMkNBQTJDO0lBQ3BGLENBQUM7SUFFTyxtQkFBbUI7UUFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLElBQUksQ0FBQyxXQUFXLHFDQUFxQyxDQUFDLENBQUM7U0FDbEc7SUFDTCxDQUFDOytHQTdDUSx5QkFBeUI7bUdBQXpCLHlCQUF5QixpTUNUdEMsc2NBWUE7OzRGREhhLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDSSxtQkFBbUI7a0dBS3BCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYXV0aC1zZXJ2aWNlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FyZ2VudGEtYWNjb3JkaW9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYWNjb3JkaW9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9hY2NvcmRpb24uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBBY2NvcmRpb25BcmdlbnRhQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gJ0FjY29yZGlvbiBUaXRsZSc7ICAvLyBUw610dWxvIGRvIGFjY29yZGlvblxuICAgIEBJbnB1dCgpIGlzT3BlbjogYm9vbGVhbiA9IGZhbHNlOyAgICAgICAgICAgIC8vIEVzdGFkbyBpbmljaWFsIGRvIGFjY29yZGlvblxuICAgIEBJbnB1dCgpIHBlcm1pc3Npb25zOiBzdHJpbmdbXSA9IFtdOyAgICAgICAgIC8vIFBlcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIGV4aWJpciBvIGFjY29yZGlvblxuXG4gICAgQE91dHB1dCgpIHRvZ2dsZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpOyAgLy8gRXZlbnRvIGVtaXRpZG8gYW8gYWJyaXIvZmVjaGFyIG8gYWNjb3JkaW9uXG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSkgeyB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZVBlcm1pc3Npb25zKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlc1sncGVybWlzc2lvbnMnXSkge1xuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZVBlcm1pc3Npb25zKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYXNQZXJtaXNzaW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMucGVybWlzc2lvbnMgfHwgdGhpcy5wZXJtaXNzaW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBTZSBuw6NvIGZvcmVtIHBhc3NhZGFzIHBlcm1pc3PDtWVzLCBvIGFjY29yZGlvbiBzZXLDoSBleGliaWRvIHBvciBwYWRyw6NvXG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UuaGFzUGVybWlzc2lvbih0aGlzLnBlcm1pc3Npb25zKTsgLy8gVmVyaWZpY2Egc2UgbyB1c3XDoXJpbyB0ZW0gYXMgcGVybWlzc8O1ZXNcbiAgICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignUGVybWlzc2lvbiBlcnJvcjonLCBlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignVW5rbm93biBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcGVybWlzc2lvbiBjaGVjaycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBTZSBvY29ycmVyIHVtIGVycm8gb3UgYXMgcGVybWlzc8O1ZXMgbsOjbyBmb3JlbSB2w6FsaWRhcywgbyBhY2NvcmRpb24gbsOjbyBzZXLDoSBleGliaWRvXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b2dnbGUoKSB7XG4gICAgICAgIHRoaXMuaXNPcGVuID0gIXRoaXMuaXNPcGVuO1xuICAgICAgICB0aGlzLnRvZ2dsZUV2ZW50LmVtaXQodGhpcy5pc09wZW4pOyAgLy8gRW1pdGUgbyBlc3RhZG8gYXR1YWwgKGFiZXJ0byBvdSBmZWNoYWRvKVxuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVQZXJtaXNzaW9ucygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMucGVybWlzc2lvbnMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcGVybWlzc2lvbnM6ICR7dGhpcy5wZXJtaXNzaW9uc30uIEl0IHNob3VsZCBiZSBhbiBhcnJheSBvZiBzdHJpbmdzLmApO1xuICAgICAgICB9XG4gICAgfVxufSIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNQZXJtaXNzaW9uKClcIj5cbiAgPGRpdiBjbGFzcz1cImFjY29yZGlvblwiPlxuICAgIDxkaXYgY2xhc3M9XCJhY2NvcmRpb24taGVhZGVyXCIgKGNsaWNrKT1cInRvZ2dsZSgpXCIgW2NsYXNzLm9wZW5dPVwiaXNPcGVuXCI+XG4gICAgICA8aDM+e3sgdGl0bGUgfX08L2gzPlxuICAgICAgPCEtLSDDjWNvbmUgZGEgc2V0YSAtLT5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYWNjb3JkaW9uLWljb25cIj7ilrw8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImFjY29yZGlvbi1jb250ZW50XCIgW2NsYXNzLm9wZW5dPVwiaXNPcGVuXCI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+IDwhLS0gQ29udGXDumRvIGRvIGFjY29yZGlvbiAtLT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -0,0 +1,326 @@
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "lucide-angular";
5
+ export class CalendarArgentaComponent {
6
+ constructor() {
7
+ this.id = 'argenta-calendar';
8
+ this.placeholder = 'Select a date';
9
+ this.label = 'Select a date';
10
+ this.minDate = null;
11
+ this.maxDate = null;
12
+ this.locale = 'pt'; // Suporte para diferentes idiomas
13
+ this.useTime = false; // Propriedade para definir se inclui hora
14
+ this.initialDate = null; // Propriedade para receber a data inicial
15
+ this.dateChange = new EventEmitter();
16
+ this.currentYear = new Date().getFullYear();
17
+ this.currentMonth = new Date().getMonth();
18
+ this.selectedDate = null;
19
+ this.isCalendarVisible = false;
20
+ this.inputDate = '';
21
+ this.invalidDate = false;
22
+ this.locales = {
23
+ en: {
24
+ months: [
25
+ 'January', 'February', 'March', 'April', 'May', 'June', 'July',
26
+ 'August', 'September', 'October', 'November', 'December'
27
+ ],
28
+ daysOfWeek: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
29
+ invalidDateMessage: 'Invalid date. Please enter a date in the format dd/MM/yyyy'
30
+ },
31
+ pt: {
32
+ months: [
33
+ 'Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho',
34
+ 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'
35
+ ],
36
+ daysOfWeek: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb'],
37
+ invalidDateMessage: 'Data inválida. Por favor, insira uma data no formato dd/MM/yyyy'
38
+ },
39
+ es: {
40
+ months: [
41
+ 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio',
42
+ 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'
43
+ ],
44
+ daysOfWeek: ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sá'],
45
+ invalidDateMessage: 'Fecha inválida. Por favor, ingrese una fecha en el formato dd/MM/yyyy'
46
+ }
47
+ };
48
+ }
49
+ ngOnInit() {
50
+ if (this.initialDate) {
51
+ // Se a initialDate for fornecida, usamos ela
52
+ this.updateCalendar(this.initialDate);
53
+ }
54
+ else {
55
+ // Caso contrário, usamos a data atual
56
+ const today = new Date();
57
+ this.selectedDate = today;
58
+ this.inputDate = this.formatDateForDisplay(today);
59
+ this.dateChange.emit(this.inputDate); // Emite a data inicial
60
+ }
61
+ }
62
+ ngOnChanges(changes) {
63
+ if (changes['initialDate'] && changes['initialDate'].currentValue) {
64
+ this.updateCalendar(changes['initialDate'].currentValue);
65
+ }
66
+ }
67
+ // Método para atualizar o calendário com a data passada
68
+ updateCalendar(dateString) {
69
+ const parsedDate = this.parseDate(dateString);
70
+ // Verifica se a data é válida
71
+ if (parsedDate !== null && this.validateDate(dateString)) {
72
+ this.selectedDate = parsedDate;
73
+ this.currentYear = parsedDate.getFullYear();
74
+ this.currentMonth = parsedDate.getMonth();
75
+ this.inputDate = this.formatDateForDisplay(parsedDate);
76
+ this.dateChange.emit(this.inputDate); // Emite a nova data
77
+ this.invalidDate = false; // Remove o status de data inválida
78
+ }
79
+ else {
80
+ this.invalidDate = true; // Marca a data como inválida
81
+ this.dateChange.emit('Data ou hora inválida'); // Emite mensagem de erro
82
+ console.log('Data ou hora inválida passada para o componente');
83
+ }
84
+ }
85
+ onInputChange(event) {
86
+ const inputValue = event.target.value;
87
+ this.inputDate = this.applyDateMask(inputValue);
88
+ // Validação para obrigar a hora quando useTime for verdadeiro
89
+ if (this.useTime) {
90
+ // Se a entrada não tiver o comprimento correto para data + hora
91
+ if (this.inputDate.length < 16) {
92
+ this.invalidDate = true;
93
+ this.dateChange.emit('Data ou hora inválida');
94
+ return;
95
+ }
96
+ }
97
+ // Somente validar a hora se o campo useTime estiver ativo e o formato estiver correto
98
+ if (this.useTime && this.inputDate.length >= 14) {
99
+ const [datePart, timePart] = this.inputDate.split(' ');
100
+ if (timePart) {
101
+ const [hourStr, minuteStr] = timePart.split(':');
102
+ const hour = Number(hourStr);
103
+ const minute = Number(minuteStr);
104
+ // Corrige somente se a hora/minuto forem inválidos
105
+ if (hour < 0 || hour > 23 || isNaN(hour)) {
106
+ this.invalidDate = true;
107
+ this.dateChange.emit('Hora inválida');
108
+ return;
109
+ }
110
+ else if (minute < 0 || minute > 59 || isNaN(minute)) {
111
+ this.invalidDate = true;
112
+ this.dateChange.emit('Hora inválida');
113
+ return;
114
+ }
115
+ else {
116
+ this.invalidDate = false;
117
+ }
118
+ }
119
+ }
120
+ // Emitir a data quando for válida
121
+ if ((this.useTime && this.inputDate.length === 16) || (!this.useTime && this.inputDate.length === 10)) {
122
+ if (this.validateDate(this.inputDate)) {
123
+ this.invalidDate = false;
124
+ const parsedDate = this.parseDate(this.inputDate);
125
+ // Verificar se parsedDate não é nulo antes de acessar suas propriedades
126
+ if (parsedDate !== null) {
127
+ this.currentYear = parsedDate.getFullYear();
128
+ this.currentMonth = parsedDate.getMonth();
129
+ this.selectedDate = parsedDate;
130
+ // Formatar a data para dd/MM/yyyy - HH:mm
131
+ const formattedDate = this.formatDateForEmit(parsedDate);
132
+ this.dateChange.emit(formattedDate); // Emite a data válida com o hífen
133
+ }
134
+ else {
135
+ console.log('Data inválida passada para o componente.');
136
+ this.dateChange.emit('Data inválida');
137
+ }
138
+ }
139
+ else {
140
+ this.invalidDate = true;
141
+ this.dateChange.emit('Data inválida'); // Emite o evento com mensagem de erro
142
+ }
143
+ }
144
+ }
145
+ // Formatar a data e hora com hífen
146
+ formatDateForEmit(date) {
147
+ const day = date.getDate().toString().padStart(2, '0');
148
+ const month = (date.getMonth() + 1).toString().padStart(2, '0');
149
+ const year = date.getFullYear();
150
+ let formattedDate = `${day}/${month}/${year}`;
151
+ if (this.useTime) {
152
+ const hours = date.getHours().toString().padStart(2, '0');
153
+ const minutes = date.getMinutes().toString().padStart(2, '0');
154
+ // Adiciona o hífen entre a data e a hora
155
+ formattedDate += ` - ${hours}:${minutes}`;
156
+ }
157
+ return formattedDate;
158
+ }
159
+ applyDateMask(inputValue) {
160
+ let digitsOnly = inputValue.replace(/\D/g, '');
161
+ // Limita os dígitos com base no uso de hora
162
+ const maxLength = this.useTime ? 12 : 8;
163
+ if (digitsOnly.length > maxLength) {
164
+ digitsOnly = digitsOnly.substring(0, maxLength);
165
+ }
166
+ let day = digitsOnly.substring(0, 2);
167
+ let month = digitsOnly.substring(2, 4);
168
+ let year = digitsOnly.substring(4, 8);
169
+ let hour = digitsOnly.substring(8, 10);
170
+ let minute = digitsOnly.substring(10, 12);
171
+ let maskedDate = `${day}/${month}/${year}`;
172
+ if (this.useTime && hour && minute) {
173
+ maskedDate += ` ${hour}:${minute}`;
174
+ }
175
+ return maskedDate;
176
+ }
177
+ validateDate(inputValue) {
178
+ const [datePart, timePart] = inputValue.split(' ');
179
+ const [dayStr, monthStr, yearStr] = datePart.split('/');
180
+ const day = Number(dayStr);
181
+ const month = Number(monthStr);
182
+ const year = Number(yearStr);
183
+ // Validação de data
184
+ if (month < 1 || month > 12 || yearStr.length !== 4 || isNaN(year)) {
185
+ return false;
186
+ }
187
+ const lastDayOfMonth = new Date(year, month, 0).getDate();
188
+ if (day < 1 || day > lastDayOfMonth) {
189
+ return false;
190
+ }
191
+ // Validação de hora
192
+ if (this.useTime && timePart) {
193
+ const [hourStr, minuteStr] = timePart.split(':');
194
+ const hour = Number(hourStr);
195
+ const minute = Number(minuteStr);
196
+ if (hour < 0 || hour > 23 || minute < 0 || minute > 59 || isNaN(hour) || isNaN(minute)) {
197
+ return false; // Hora ou minuto inválidos
198
+ }
199
+ }
200
+ return true;
201
+ }
202
+ parseDate(dateStr) {
203
+ const [datePart, timePart] = dateStr.split(' ');
204
+ const [day, month, year] = datePart.split('/').map(Number);
205
+ if (!day || !month || !year) {
206
+ return null;
207
+ }
208
+ const date = new Date(year, month - 1, day);
209
+ if (this.useTime && timePart) {
210
+ const [hour, minute] = timePart.split(':').map(Number);
211
+ date.setHours(hour || 0, minute || 0);
212
+ }
213
+ return date;
214
+ }
215
+ formatDateForDisplay(date) {
216
+ const day = date.getDate().toString().padStart(2, '0');
217
+ const month = (date.getMonth() + 1).toString().padStart(2, '0');
218
+ const year = date.getFullYear();
219
+ let formattedDate = `${day}/${month}/${year}`;
220
+ if (this.useTime) {
221
+ const hours = date.getHours().toString().padStart(2, '0');
222
+ const minutes = date.getMinutes().toString().padStart(2, '0');
223
+ formattedDate += ` ${hours}:${minutes}`;
224
+ }
225
+ return formattedDate;
226
+ }
227
+ toggleCalendar() {
228
+ this.isCalendarVisible = !this.isCalendarVisible;
229
+ }
230
+ selectDate(day) {
231
+ const date = new Date(this.currentYear, this.currentMonth, day);
232
+ this.inputDate = this.formatDateForDisplay(date);
233
+ this.selectedDate = date; // Armazena a data selecionada
234
+ this.dateChange.emit(this.inputDate); // Emite a data selecionada ao clicar no calendário
235
+ this.isCalendarVisible = false; // Fecha o calendário após a seleção
236
+ }
237
+ handleKeyPress(event) {
238
+ const charCode = event.key.charCodeAt(0);
239
+ if (charCode < 48 || charCode > 57) {
240
+ event.preventDefault();
241
+ }
242
+ if (this.inputDate.replace(/\D/g, '').length >= (this.useTime ? 12 : 8)) {
243
+ event.preventDefault();
244
+ }
245
+ }
246
+ get daysInMonth() {
247
+ const firstDayOfMonth = new Date(this.currentYear, this.currentMonth, 1).getDay(); // Dia da semana do primeiro dia do mês
248
+ const totalDaysInMonth = new Date(this.currentYear, this.currentMonth + 1, 0).getDate(); // Total de dias no mês
249
+ const daysArray = Array.from({ length: totalDaysInMonth }, (_, i) => i + 1); // Array com todos os dias do mês
250
+ const leadingEmptyDays = Array(firstDayOfMonth).fill(null); // Dias vazios antes do primeiro dia do mês
251
+ return [...leadingEmptyDays, ...daysArray]; // Retorna os dias vazios seguidos pelos dias do mês
252
+ }
253
+ get months() {
254
+ return this.locales[this.locale]?.months || this.locales['en'].months;
255
+ }
256
+ get daysOfWeek() {
257
+ return this.locales[this.locale]?.daysOfWeek || this.locales['en'].daysOfWeek;
258
+ }
259
+ prevMonth() {
260
+ if (this.currentMonth === 0) {
261
+ this.currentMonth = 11;
262
+ this.currentYear--;
263
+ }
264
+ else {
265
+ this.currentMonth--;
266
+ }
267
+ }
268
+ nextMonth() {
269
+ if (this.currentMonth === 11) {
270
+ this.currentMonth = 0;
271
+ this.currentYear++;
272
+ }
273
+ else {
274
+ this.currentMonth++;
275
+ }
276
+ }
277
+ isSelected(day) {
278
+ if (!this.selectedDate)
279
+ return false;
280
+ const selectedDay = this.selectedDate.getDate();
281
+ const selectedMonth = this.selectedDate.getMonth();
282
+ const selectedYear = this.selectedDate.getFullYear();
283
+ return (selectedDay === day &&
284
+ selectedMonth === this.currentMonth &&
285
+ selectedYear === this.currentYear);
286
+ }
287
+ isToday(day) {
288
+ const today = new Date();
289
+ return (today.getFullYear() === this.currentYear &&
290
+ today.getMonth() === this.currentMonth &&
291
+ today.getDate() === day);
292
+ }
293
+ isDateDisabled(day) {
294
+ const date = new Date(this.currentYear, this.currentMonth, day);
295
+ if (this.minDate && date < this.minDate)
296
+ return true;
297
+ if (this.maxDate && date > this.maxDate)
298
+ return true;
299
+ return false;
300
+ }
301
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CalendarArgentaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
302
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CalendarArgentaComponent, selector: "argenta-calendar", inputs: { id: "id", placeholder: "placeholder", label: "label", minDate: "minDate", maxDate: "maxDate", locale: "locale", useTime: "useTime", initialDate: "initialDate" }, outputs: { dateChange: "dateChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"form-group\">\n <label [for]=\"id\" [ngClass]=\"'label-styles'\">{{ label }}</label>\n <div class=\"input-wrapper\">\n <input\n id=\"{{ id }}\"\n type=\"text\"\n class=\"custom-input\"\n [attr.placeholder]=\"useTime ? 'dd/MM/yyyy HH:mm' : 'dd/MM/yyyy'\"\n [value]=\"inputDate\"\n (input)=\"onInputChange($event)\"\n (keypress)=\"handleKeyPress($event)\"\n (click)=\"toggleCalendar()\"\n />\n <!-- \u00CDcone de calend\u00E1rio dentro do input -->\n <lucide-icon name=\"calendar\" class=\"calendar-icon\"></lucide-icon>\n </div>\n\n <!-- Mensagem de erro estilo bal\u00E3ozinho -->\n <div *ngIf=\"invalidDate\" class=\"error-message\">\n {{ locales[locale].invalidDateMessage }}\n <!-- Mostra a parte de 'HH:mm' apenas se useTime for verdadeiro -->\n <span *ngIf=\"useTime\"> HH:mm.</span>\n </div>\n\n <div class=\"calendar-wrapper\">\n <div class=\"calendar-container\" [ngClass]=\"{ open: isCalendarVisible }\">\n <div class=\"calendar\">\n <div class=\"calendar-header\">\n <button (click)=\"prevMonth()\">&#8249;</button>\n <span>{{ months[currentMonth] }} {{ currentYear }}</span>\n <button (click)=\"nextMonth()\">&#8250;</button>\n </div>\n\n <div class=\"calendar-body\">\n <div class=\"calendar-day-names\">\n <span *ngFor=\"let day of daysOfWeek\">{{ day }}</span>\n </div>\n\n <div class=\"calendar-days\">\n <span\n *ngFor=\"let day of daysInMonth; let i = index\"\n [class.today]=\"isToday(day)\"\n [class.selected]=\"isSelected(day)\"\n [class.disabled]=\"isDateDisabled(day)\"\n (click)=\"day ? selectDate(day) : null\"\n >\n <!-- Somente permite clique em dias v\u00E1lidos -->\n {{ day ? day : \"\" }}\n <!-- Exibe o dia se for v\u00E1lido, sen\u00E3o exibe vazio -->\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap\";body{font-family:Inter,sans-serif}.calendar-container{overflow:hidden;max-height:0;transition:max-height .4s ease}.calendar-container.open{max-height:500px}.calendar{display:inline-block;border:1px solid #ccc;border-radius:8px;padding:10px;width:450px;font-family:Inter,Arial,sans-serif;transition:max-height .4s ease}.calendar .calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;font-weight:700}.calendar .calendar-header button{background-color:#00444c;color:#fff;border:none;padding:8px 12px;cursor:pointer;border-radius:8px;font-size:1.2rem;transition:background-color .2s}.calendar .calendar-header button:hover{background-color:#2ca58d}.calendar .calendar-header span{font-size:1.4rem;color:#00444c;text-align:center;flex-grow:1}.calendar .calendar-body{display:grid;grid-template-columns:repeat(7,1fr);gap:7px}.calendar .calendar-body .calendar-day-names{display:contents}.calendar .calendar-body .calendar-day-names span{text-align:center;font-weight:700;margin-bottom:5px;font-size:.9rem}.calendar .calendar-body .calendar-day-names span:nth-child(1){color:#ff8080}.calendar .calendar-body .calendar-day-names span:nth-child(7){color:#555}.calendar .calendar-body .calendar-days{display:contents}.calendar .calendar-body .calendar-days span{display:flex;justify-content:center;align-items:center;margin:1px;padding:10px;height:45px;width:45px;cursor:pointer;border-radius:50%;transition:background-color .2s,color .2s ease}.calendar .calendar-body .calendar-days span.today{background-color:#2ca58d;color:#fff}.calendar .calendar-body .calendar-days span.selected{background-color:#00444c;color:#fff}.calendar .calendar-body .calendar-days span.disabled{background-color:#e9ecef;color:#999;cursor:not-allowed}.calendar .calendar-body .calendar-days span:hover:not(.disabled){background-color:#2ca58d;color:#fff}.custom-input{font-family:Inter,Arial,sans-serif;color:#333;font-size:.9rem;height:46px;padding:.5rem .75rem;border:1px solid #ccc;border-radius:4px;width:100%;box-sizing:border-box}.custom-input::placeholder{font-size:14px;color:#d3d3d3}.label-styles{font-weight:400;font-family:Inter,Arial,sans-serif;font-size:16px;line-height:19.36px;text-align:left;margin-top:1rem;margin-bottom:.5rem}.error-message{position:relative;background-color:#ff8080;color:#fff;padding:10px;border-radius:8px;font-size:.9rem;max-width:250px;margin-top:5px}.error-message:after{content:\"\";position:absolute;top:100%;left:20px;border-width:10px;border-style:solid;border-color:#ff8080 transparent transparent transparent}.input-wrapper{position:relative;display:inline-block;width:100%}.input-wrapper .custom-input{width:100%;padding-right:40px;box-sizing:border-box}.input-wrapper .calendar-icon{position:absolute;top:50%;right:10px;transform:translateY(-50%);pointer-events:none;color:#b8b8b8}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.LucideAngularComponent, selector: "lucide-angular, lucide-icon, i-lucide, span-lucide", inputs: ["class", "name", "img", "color", "absoluteStrokeWidth", "size", "strokeWidth"] }] }); }
303
+ }
304
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CalendarArgentaComponent, decorators: [{
305
+ type: Component,
306
+ args: [{ selector: 'argenta-calendar', template: "<div class=\"form-group\">\n <label [for]=\"id\" [ngClass]=\"'label-styles'\">{{ label }}</label>\n <div class=\"input-wrapper\">\n <input\n id=\"{{ id }}\"\n type=\"text\"\n class=\"custom-input\"\n [attr.placeholder]=\"useTime ? 'dd/MM/yyyy HH:mm' : 'dd/MM/yyyy'\"\n [value]=\"inputDate\"\n (input)=\"onInputChange($event)\"\n (keypress)=\"handleKeyPress($event)\"\n (click)=\"toggleCalendar()\"\n />\n <!-- \u00CDcone de calend\u00E1rio dentro do input -->\n <lucide-icon name=\"calendar\" class=\"calendar-icon\"></lucide-icon>\n </div>\n\n <!-- Mensagem de erro estilo bal\u00E3ozinho -->\n <div *ngIf=\"invalidDate\" class=\"error-message\">\n {{ locales[locale].invalidDateMessage }}\n <!-- Mostra a parte de 'HH:mm' apenas se useTime for verdadeiro -->\n <span *ngIf=\"useTime\"> HH:mm.</span>\n </div>\n\n <div class=\"calendar-wrapper\">\n <div class=\"calendar-container\" [ngClass]=\"{ open: isCalendarVisible }\">\n <div class=\"calendar\">\n <div class=\"calendar-header\">\n <button (click)=\"prevMonth()\">&#8249;</button>\n <span>{{ months[currentMonth] }} {{ currentYear }}</span>\n <button (click)=\"nextMonth()\">&#8250;</button>\n </div>\n\n <div class=\"calendar-body\">\n <div class=\"calendar-day-names\">\n <span *ngFor=\"let day of daysOfWeek\">{{ day }}</span>\n </div>\n\n <div class=\"calendar-days\">\n <span\n *ngFor=\"let day of daysInMonth; let i = index\"\n [class.today]=\"isToday(day)\"\n [class.selected]=\"isSelected(day)\"\n [class.disabled]=\"isDateDisabled(day)\"\n (click)=\"day ? selectDate(day) : null\"\n >\n <!-- Somente permite clique em dias v\u00E1lidos -->\n {{ day ? day : \"\" }}\n <!-- Exibe o dia se for v\u00E1lido, sen\u00E3o exibe vazio -->\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap\";body{font-family:Inter,sans-serif}.calendar-container{overflow:hidden;max-height:0;transition:max-height .4s ease}.calendar-container.open{max-height:500px}.calendar{display:inline-block;border:1px solid #ccc;border-radius:8px;padding:10px;width:450px;font-family:Inter,Arial,sans-serif;transition:max-height .4s ease}.calendar .calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;font-weight:700}.calendar .calendar-header button{background-color:#00444c;color:#fff;border:none;padding:8px 12px;cursor:pointer;border-radius:8px;font-size:1.2rem;transition:background-color .2s}.calendar .calendar-header button:hover{background-color:#2ca58d}.calendar .calendar-header span{font-size:1.4rem;color:#00444c;text-align:center;flex-grow:1}.calendar .calendar-body{display:grid;grid-template-columns:repeat(7,1fr);gap:7px}.calendar .calendar-body .calendar-day-names{display:contents}.calendar .calendar-body .calendar-day-names span{text-align:center;font-weight:700;margin-bottom:5px;font-size:.9rem}.calendar .calendar-body .calendar-day-names span:nth-child(1){color:#ff8080}.calendar .calendar-body .calendar-day-names span:nth-child(7){color:#555}.calendar .calendar-body .calendar-days{display:contents}.calendar .calendar-body .calendar-days span{display:flex;justify-content:center;align-items:center;margin:1px;padding:10px;height:45px;width:45px;cursor:pointer;border-radius:50%;transition:background-color .2s,color .2s ease}.calendar .calendar-body .calendar-days span.today{background-color:#2ca58d;color:#fff}.calendar .calendar-body .calendar-days span.selected{background-color:#00444c;color:#fff}.calendar .calendar-body .calendar-days span.disabled{background-color:#e9ecef;color:#999;cursor:not-allowed}.calendar .calendar-body .calendar-days span:hover:not(.disabled){background-color:#2ca58d;color:#fff}.custom-input{font-family:Inter,Arial,sans-serif;color:#333;font-size:.9rem;height:46px;padding:.5rem .75rem;border:1px solid #ccc;border-radius:4px;width:100%;box-sizing:border-box}.custom-input::placeholder{font-size:14px;color:#d3d3d3}.label-styles{font-weight:400;font-family:Inter,Arial,sans-serif;font-size:16px;line-height:19.36px;text-align:left;margin-top:1rem;margin-bottom:.5rem}.error-message{position:relative;background-color:#ff8080;color:#fff;padding:10px;border-radius:8px;font-size:.9rem;max-width:250px;margin-top:5px}.error-message:after{content:\"\";position:absolute;top:100%;left:20px;border-width:10px;border-style:solid;border-color:#ff8080 transparent transparent transparent}.input-wrapper{position:relative;display:inline-block;width:100%}.input-wrapper .custom-input{width:100%;padding-right:40px;box-sizing:border-box}.input-wrapper .calendar-icon{position:absolute;top:50%;right:10px;transform:translateY(-50%);pointer-events:none;color:#b8b8b8}\n"] }]
307
+ }], propDecorators: { id: [{
308
+ type: Input
309
+ }], placeholder: [{
310
+ type: Input
311
+ }], label: [{
312
+ type: Input
313
+ }], minDate: [{
314
+ type: Input
315
+ }], maxDate: [{
316
+ type: Input
317
+ }], locale: [{
318
+ type: Input
319
+ }], useTime: [{
320
+ type: Input
321
+ }], initialDate: [{
322
+ type: Input
323
+ }], dateChange: [{
324
+ type: Output
325
+ }] } });
326
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItYXJnZW50YS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saWItcG9ydGFsLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2NhbGVuZGFyLWFyZ2VudGEvY2FsZW5kYXItYXJnZW50YS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saWItcG9ydGFsLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2NhbGVuZGFyLWFyZ2VudGEvY2FsZW5kYXItYXJnZW50YS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFvQyxNQUFNLGVBQWUsQ0FBQzs7OztBQU96RyxNQUFNLE9BQU8sd0JBQXdCO0lBTHJDO1FBTWEsT0FBRSxHQUFXLGtCQUFrQixDQUFDO1FBQ2hDLGdCQUFXLEdBQVcsZUFBZSxDQUFDO1FBQ3RDLFVBQUssR0FBVyxlQUFlLENBQUM7UUFDaEMsWUFBTyxHQUFnQixJQUFJLENBQUM7UUFDNUIsWUFBTyxHQUFnQixJQUFJLENBQUM7UUFDNUIsV0FBTSxHQUFXLElBQUksQ0FBQyxDQUFDLGtDQUFrQztRQUN6RCxZQUFPLEdBQVksS0FBSyxDQUFDLENBQUMsMENBQTBDO1FBQ3BFLGdCQUFXLEdBQWtCLElBQUksQ0FBQyxDQUFDLDBDQUEwQztRQUM1RSxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVsRCxnQkFBVyxHQUFXLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDL0MsaUJBQVksR0FBVyxJQUFJLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzdDLGlCQUFZLEdBQWdCLElBQUksQ0FBQztRQUNqQyxzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFDbkMsY0FBUyxHQUFXLEVB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QU8sSUFBSSxDQUFDO1FBQ3JELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7K0dBblZRLHdCQUF3QjttR0FBeEIsd0JBQXdCLGdTQ1ByQyx3aUVBd0RBOzs0RkRqRGEsd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNJLGtCQUFrQjs4QkFLbkIsRUFBRTtzQkFBVixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcmdlbnRhLWNhbGVuZGFyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXItYXJnZW50YS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2FsZW5kYXItYXJnZW50YS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDYWxlbmRhckFyZ2VudGFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KCkgaWQ6IHN0cmluZyA9ICdhcmdlbnRhLWNhbGVuZGFyJztcbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJ1NlbGVjdCBhIGRhdGUnO1xuICAgIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnU2VsZWN0IGEgZGF0ZSc7XG4gICAgQElucHV0KCkgbWluRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuICAgIEBJbnB1dCgpIG1heERhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoKSBsb2NhbGU6IHN0cmluZyA9ICdwdCc7IC8vIFN1cG9ydGUgcGFyYSBkaWZlcmVudGVzIGlkaW9tYXNcbiAgICBASW5wdXQoKSB1c2VUaW1lOiBib29sZWFuID0gZmFsc2U7IC8vIFByb3ByaWVkYWRlIHBhcmEgZGVmaW5pciBzZSBpbmNsdWkgaG9yYVxuICAgIEBJbnB1dCgpIGluaXRpYWxEYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbDsgLy8gUHJvcHJpZWRhZGUgcGFyYSByZWNlYmVyIGEgZGF0YSBpbmljaWFsXG4gICAgQE91dHB1dCgpIGRhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIGN1cnJlbnRZZWFyOiBudW1iZXIgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7XG4gICAgY3VycmVudE1vbnRoOiBudW1iZXIgPSBuZXcgRGF0ZSgpLmdldE1vbnRoKCk7XG4gICAgc2VsZWN0ZWREYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gICAgaXNDYWxlbmRhclZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBpbnB1dERhdGU6IHN0cmluZyA9ICcnO1xuICAgIGludmFsaWREYXRlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBsb2NhbGVzOiBhbnkgPSB7XG4gICAgICAgIGVuOiB7XG4gICAgICAgICAgICBtb250aHM6IFtcbiAgICAgICAgICAgICAgICAnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsICdKdWx5JyxcbiAgICAgICAgICAgICAgICAnQXVndXN0JywgJ1NlcHRlbWJlcicsICdPY3RvYmVyJywgJ05vdmVtYmVyJywgJ0RlY2VtYmVyJ1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGRheXNPZldlZWs6IFsnU3UnLCAnTW8nLCAnVHUnLCAnV2UnLCAnVGgnLCAnRnInLCAnU2EnXSxcbiAgICAgICAgICAgIGludmFsaWREYXRlTWVzc2FnZTogJ0ludmFsaWQgZGF0ZS4gUGxlYXNlIGVudGVyIGEgZGF0ZSBpbiB0aGUgZm9ybWF0IGRkL01NL3l5eXknXG4gICAgICAgIH0sXG4gICAgICAgIHB0OiB7XG4gICAgICAgICAgICBtb250aHM6IFtcbiAgICAgICAgICAgICAgICAnSmFuZWlybycsICdGZXZlcmVpcm8nLCAnTWFyw6dvJywgJ0FicmlsJywgJ01haW8nLCAnSnVuaG8nLCAnSnVsaG8nLFxuICAgICAgICAgICAgICAgICdBZ29zdG8nLCAnU2V0ZW1icm8nLCAnT3V0dWJybycsICdOb3ZlbWJybycsICdEZXplbWJybydcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBkYXlzT2ZXZWVrOiBbJ0RvbScsICdTZWcnLCAnVGVyJywgJ1F1YScsICdRdWknLCAnU2V4JywgJ1PDoWInXSxcbiAgICAgICAgICAgIGludmFsaWREYXRlTWVzc2FnZTogJ0RhdGEgaW52w6FsaWRhLiBQb3IgZmF2b3IsIGluc2lyYSB1bWEgZGF0YSBubyBmb3JtYXRvIGRkL01NL3l5eXknXG4gICAgICAgIH0sXG4gICAgICAgIGVzOiB7XG4gICAgICAgICAgICBtb250aHM6IFtcbiAgICAgICAgICAgICAgICAnRW5lcm8nLCAnRmVicmVybycsICdNYXJ6bycsICdBYnJpbCcsICdNYXlvJywgJ0p1bmlvJywgJ0p1bGlvJyxcbiAgICAgICAgICAgICAgICAnQWdvc3RvJywgJ1NlcHRpZW1icmUnLCAnT2N0dWJyZScsICdOb3ZpZW1icmUnLCAnRGljaWVtYnJlJ1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGRheXNPZldlZWs6IFsnRG8nLCAnTHUnLCAnTWEnLCAnTWknLCAnSnUnLCAnVmknLCAnU8OhJ10sXG4gICAgICAgICAgICBpbnZhbGlkRGF0ZU1lc3NhZ2U6ICdGZWNoYSBpbnbDoWxpZGEuIFBvciBmYXZvciwgaW5ncmVzZSB1bmEgZmVjaGEgZW4gZWwgZm9ybWF0byBkZC9NTS95eXl5J1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsRGF0ZSkge1xuICAgICAgICAgICAgLy8gU2UgYSBpbml0aWFsRGF0ZSBmb3IgZm9ybmVjaWRhLCB1c2Ftb3MgZWxhXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNhbGVuZGFyKHRoaXMuaW5pdGlhbERhdGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQ2FzbyBjb250csOhcmlvLCB1c2Ftb3MgYSBkYXRhIGF0dWFsXG4gICAgICAgICAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IHRvZGF5O1xuICAgICAgICAgICAgdGhpcy5pbnB1dERhdGUgPSB0aGlzLmZvcm1hdERhdGVGb3JEaXNwbGF5KHRvZGF5KTtcbiAgICAgICAgICAgIHRoaXMuZGF0ZUNoYW5nZS5lbWl0KHRoaXMuaW5wdXREYXRlKTsgLy8gRW1pdGUgYSBkYXRhIGluaWNpYWxcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ2luaXRpYWxEYXRlJ10gJiYgY2hhbmdlc1snaW5pdGlhbERhdGUnXS5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ2FsZW5kYXIoY2hhbmdlc1snaW5pdGlhbERhdGUnXS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTcOpdG9kbyBwYXJhIGF0dWFsaXphciBvIGNhbGVuZMOhcmlvIGNvbSBhIGRhdGEgcGFzc2FkYVxuICAgIHVwZGF0ZUNhbGVuZGFyKGRhdGVTdHJpbmc6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBwYXJzZWREYXRlID0gdGhpcy5wYXJzZURhdGUoZGF0ZVN0cmluZyk7XG5cbiAgICAgICAgLy8gVmVyaWZpY2Egc2UgYSBkYXRhIMOpIHbDoWxpZGFcbiAgICAgICAgaWYgKHBhcnNlZERhdGUgIT09IG51bGwgJiYgdGhpcy52YWxpZGF0ZURhdGUoZGF0ZVN0cmluZykpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gcGFyc2VkRGF0ZTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFllYXIgPSBwYXJzZWREYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRNb250aCA9IHBhcnNlZERhdGUuZ2V0TW9udGgoKTtcbiAgICAgICAgICAgIHRoaXMuaW5wdXREYXRlID0gdGhpcy5mb3JtYXREYXRlRm9yRGlzcGxheShwYXJzZWREYXRlKTtcbiAgICAgICAgICAgIHRoaXMuZGF0ZUNoYW5nZS5lbWl0KHRoaXMuaW5wdXREYXRlKTsgLy8gRW1pdGUgYSBub3ZhIGRhdGFcbiAgICAgICAgICAgIHRoaXMuaW52YWxpZERhdGUgPSBmYWxzZTsgLy8gUmVtb3ZlIG8gc3RhdHVzIGRlIGRhdGEgaW52w6FsaWRhXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmludmFsaWREYXRlID0gdHJ1ZTsgLy8gTWFyY2EgYSBkYXRhIGNvbW8gaW52w6FsaWRhXG4gICAgICAgICAgICB0aGlzLmRhdGVDaGFuZ2UuZW1pdCgnRGF0YSBvdSBob3JhIGludsOhbGlkYScpOyAvLyBFbWl0ZSBtZW5zYWdlbSBkZSBlcnJvXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnRGF0YSBvdSBob3JhIGludsOhbGlkYSBwYXNzYWRhIHBhcmEgbyBjb21wb25lbnRlJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbklucHV0Q2hhbmdlKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5wdXRWYWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICAgICAgdGhpcy5pbnB1dERhdGUgPSB0aGlzLmFwcGx5RGF0ZU1hc2soaW5wdXRWYWx1ZSk7XG5cbiAgICAgICAgLy8gVmFsaWRhw6fDo28gcGFyYSBvYnJpZ2FyIGEgaG9yYSBxdWFuZG8gdXNlVGltZSBmb3IgdmVyZGFkZWlyb1xuICAgICAgICBpZiAodGhpcy51c2VUaW1lKSB7XG4gICAgICAgICAgICAvLyBTZSBhIGVudHJhZGEgbsOjbyB0aXZlciBvIGNvbXByaW1lbnRvIGNvcnJldG8gcGFyYSBkYXRhICsgaG9yYVxuICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXREYXRlLmxlbmd0aCA8IDE2KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnZhbGlkRGF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlQ2hhbmdlLmVtaXQoJ0RhdGEgb3UgaG9yYSBpbnbDoWxpZGEnKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTb21lbnRlIHZhbGlkYXIgYSBob3JhIHNlIG8gY2FtcG8gdXNlVGltZSBlc3RpdmVyIGF0aXZvIGUgbyBmb3JtYXRvIGVzdGl2ZXIgY29ycmV0b1xuICAgICAgICBpZiAodGhpcy51c2VUaW1lICYmIHRoaXMuaW5wdXREYXRlLmxlbmd0aCA+PSAxNCkge1xuICAgICAgICAgICAgY29uc3QgW2RhdGVQYXJ0LCB0aW1lUGFydF0gPSB0aGlzLmlucHV0RGF0ZS5zcGxpdCgnICcpO1xuICAgICAgICAgICAgaWYgKHRpbWVQYXJ0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgW2hvdXJTdHIsIG1pbnV0ZVN0cl0gPSB0aW1lUGFydC5zcGxpdCgnOicpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhvdXIgPSBOdW1iZXIoaG91clN0cik7XG4gICAgICAgICAgICAgICAgY29uc3QgbWludXRlID0gTnVtYmVyKG1pbnV0ZVN0cik7XG5cbiAgICAgICAgICAgICAgICAvLyBDb3JyaWdlIHNvbWVudGUgc2UgYSBob3JhL21pbnV0byBmb3JlbSBpbnbDoWxpZG9zXG4gICAgICAgICAgICAgICAgaWYgKGhvdXIgPCAwIHx8IGhvdXIgPiAyMyB8fCBpc05hTihob3VyKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmludmFsaWREYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlQ2hhbmdlLmVtaXQoJ0hvcmEgaW52w6FsaWRhJyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1pbnV0ZSA8IDAgfHwgbWludXRlID4gNTkgfHwgaXNOYU4obWludXRlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmludmFsaWREYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlQ2hhbmdlLmVtaXQoJ0hvcmEgaW52w6FsaWRhJyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmludmFsaWREYXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gRW1pdGlyIGEgZGF0YSBxdWFuZG8gZm9yIHbDoWxpZGFcbiAgICAgICAgaWYgKCh0aGlzLnVzZVRpbWUgJiYgdGhpcy5pbnB1dERhdGUubGVuZ3RoID09PSAxNikgfHwgKCF0aGlzLnVzZVRpbWUgJiYgdGhpcy5pbnB1dERhdGUubGVuZ3RoID09PSAxMCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnZhbGlkYXRlRGF0ZSh0aGlzLmlucHV0RGF0ZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmludmFsaWREYXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkRGF0ZSA9IHRoaXMucGFyc2VEYXRlKHRoaXMuaW5wdXREYXRlKTtcblxuICAgICAgICAgICAgICAgIC8vIFZlcmlmaWNhciBzZSBwYXJzZWREYXRlIG7Do28gw6kgbnVsbyBhbnRlcyBkZSBhY2Vzc2FyIHN1YXMgcHJvcHJpZWRhZGVzXG4gICAgICAgICAgICAgICAgaWYgKHBhcnNlZERhdGUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50WWVhciA9IHBhcnNlZERhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50TW9udGggPSBwYXJzZWREYXRlLmdldE1vbnRoKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gcGFyc2VkRGF0ZTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBGb3JtYXRhciBhIGRhdGEgcGFyYSBkZC9NTS95eXl5IC0gSEg6bW1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IHRoaXMuZm9ybWF0RGF0ZUZvckVtaXQocGFyc2VkRGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlQ2hhbmdlLmVtaXQoZm9ybWF0dGVkRGF0ZSk7IC8vIEVtaXRlIGEgZGF0YSB2w6FsaWRhIGNvbSBvIGjDrWZlblxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdEYXRhIGludsOhbGlkYSBwYXNzYWRhIHBhcmEgbyBjb21wb25lbnRlLicpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVDaGFuZ2UuZW1pdCgnRGF0YSBpbnbDoWxpZGEnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaW52YWxpZERhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUNoYW5nZS5lbWl0KCdEYXRhIGludsOhbGlkYScpOyAvLyBFbWl0ZSBvIGV2ZW50byBjb20gbWVuc2FnZW0gZGUgZXJyb1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRm9ybWF0YXIgYSBkYXRhIGUgaG9yYSBjb20gaMOtZmVuXG4gICAgZm9ybWF0RGF0ZUZvckVtaXQoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGRheSA9IGRhdGUuZ2V0RGF0ZSgpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICAgICAgY29uc3QgbW9udGggPSAoZGF0ZS5nZXRNb250aCgpICsgMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgICAgICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuXG4gICAgICAgIGxldCBmb3JtYXR0ZWREYXRlID0gYCR7ZGF5fS8ke21vbnRofS8ke3llYXJ9YDtcblxuICAgICAgICBpZiAodGhpcy51c2VUaW1lKSB7XG4gICAgICAgICAgICBjb25zdCBob3VycyA9IGRhdGUuZ2V0SG91cnMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgICAgICAgICBjb25zdCBtaW51dGVzID0gZGF0ZS5nZXRNaW51dGVzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgICAgICAgICAgLy8gQWRpY2lvbmEgbyBow61mZW4gZW50cmUgYSBkYXRhIGUgYSBob3JhXG4gICAgICAgICAgICBmb3JtYXR0ZWREYXRlICs9IGAgLSAke2hvdXJzfToke21pbnV0ZXN9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmb3JtYXR0ZWREYXRlO1xuICAgIH1cblxuICAgIGFwcGx5RGF0ZU1hc2soaW5wdXRWYWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IGRpZ2l0c09ubHkgPSBpbnB1dFZhbHVlLnJlcGxhY2UoL1xcRC9nLCAnJyk7XG5cbiAgICAgICAgLy8gTGltaXRhIG9zIGTDrWdpdG9zIGNvbSBiYXNlIG5vIHVzbyBkZSBob3JhXG4gICAgICAgIGNvbnN0IG1heExlbmd0aCA9IHRoaXMudXNlVGltZSA/IDEyIDogODtcbiAgICAgICAgaWYgKGRpZ2l0c09ubHkubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgICAgICAgICBkaWdpdHNPbmx5ID0gZGlnaXRzT25seS5zdWJzdHJpbmcoMCwgbWF4TGVuZ3RoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBkYXkgPSBkaWdpdHNPbmx5LnN1YnN0cmluZygwLCAyKTtcbiAgICAgICAgbGV0IG1vbnRoID0gZGlnaXRzT25seS5zdWJzdHJpbmcoMiwgNCk7XG4gICAgICAgIGxldCB5ZWFyID0gZGlnaXRzT25seS5zdWJzdHJpbmcoNCwgOCk7XG4gICAgICAgIGxldCBob3VyID0gZGlnaXRzT25seS5zdWJzdHJpbmcoOCwgMTApO1xuICAgICAgICBsZXQgbWludXRlID0gZGlnaXRzT25seS5zdWJzdHJpbmcoMTAsIDEyKTtcblxuICAgICAgICBsZXQgbWFza2VkRGF0ZSA9IGAke2RheX0vJHttb250aH0vJHt5ZWFyfWA7XG4gICAgICAgIGlmICh0aGlzLnVzZVRpbWUgJiYgaG91ciAmJiBtaW51dGUpIHtcbiAgICAgICAgICAgIG1hc2tlZERhdGUgKz0gYCAke2hvdXJ9OiR7bWludXRlfWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbWFza2VkRGF0ZTtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZURhdGUoaW5wdXRWYWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IFtkYXRlUGFydCwgdGltZVBhcnRdID0gaW5wdXRWYWx1ZS5zcGxpdCgnICcpO1xuICAgICAgICBjb25zdCBbZGF5U3RyLCBtb250aFN0ciwgeWVhclN0cl0gPSBkYXRlUGFydC5zcGxpdCgnLycpO1xuICAgICAgICBjb25zdCBkYXkgPSBOdW1iZXIoZGF5U3RyKTtcbiAgICAgICAgY29uc3QgbW9udGggPSBOdW1iZXIobW9udGhTdHIpO1xuICAgICAgICBjb25zdCB5ZWFyID0gTnVtYmVyKHllYXJTdHIpO1xuXG4gICAgICAgIC8vIFZhbGlkYcOnw6NvIGRlIGRhdGFcbiAgICAgICAgaWYgKG1vbnRoIDwgMSB8fCBtb250aCA+IDEyIHx8IHllYXJTdHIubGVuZ3RoICE9PSA0IHx8IGlzTmFOKHllYXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsYXN0RGF5T2ZNb250aCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCAwKS5nZXREYXRlKCk7XG4gICAgICAgIGlmIChkYXkgPCAxIHx8IGRheSA+IGxhc3REYXlPZk1vbnRoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBWYWxpZGHDp8OjbyBkZSBob3JhXG4gICAgICAgIGlmICh0aGlzLnVzZVRpbWUgJiYgdGltZVBhcnQpIHtcbiAgICAgICAgICAgIGNvbnN0IFtob3VyU3RyLCBtaW51dGVTdHJdID0gdGltZVBhcnQuc3BsaXQoJzonKTtcbiAgICAgICAgICAgIGNvbnN0IGhvdXIgPSBOdW1iZXIoaG91clN0cik7XG4gICAgICAgICAgICBjb25zdCBtaW51dGUgPSBOdW1iZXIobWludXRlU3RyKTtcblxuICAgICAgICAgICAgaWYgKGhvdXIgPCAwIHx8IGhvdXIgPiAyMyB8fCBtaW51dGUgPCAwIHx8IG1pbnV0ZSA+IDU5IHx8IGlzTmFOKGhvdXIpIHx8IGlzTmFOKG1pbnV0ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEhvcmEgb3UgbWludXRvIGludsOhbGlkb3NcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHBhcnNlRGF0ZShkYXRlU3RyOiBzdHJpbmcpOiBEYXRlIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IFtkYXRlUGFydCwgdGltZVBhcnRdID0gZGF0ZVN0ci5zcGxpdCgnICcpO1xuICAgICAgICBjb25zdCBbZGF5LCBtb250aCwgeWVhcl0gPSBkYXRlUGFydC5zcGxpdCgnLycpLm1hcChOdW1iZXIpO1xuICAgICAgICBpZiAoIWRheSB8fCAhbW9udGggfHwgIXllYXIpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoIC0gMSwgZGF5KTtcbiAgICAgICAgaWYgKHRoaXMudXNlVGltZSAmJiB0aW1lUGFydCkge1xuICAgICAgICAgICAgY29uc3QgW2hvdXIsIG1pbnV0ZV0gPSB0aW1lUGFydC5zcGxpdCgnOicpLm1hcChOdW1iZXIpO1xuICAgICAgICAgICAgZGF0ZS5zZXRIb3Vycyhob3VyIHx8IDAsIG1pbnV0ZSB8fCAwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG5cbiAgICBmb3JtYXREYXRlRm9yRGlzcGxheShkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZGF5ID0gZGF0ZS5nZXREYXRlKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgICAgICBjb25zdCBtb250aCA9IChkYXRlLmdldE1vbnRoKCkgKyAxKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgICAgIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIGxldCBmb3JtYXR0ZWREYXRlID0gYCR7ZGF5fS8ke21vbnRofS8ke3llYXJ9YDtcblxuICAgICAgICBpZiAodGhpcy51c2VUaW1lKSB7XG4gICAgICAgICAgICBjb25zdCBob3VycyA9IGRhdGUuZ2V0SG91cnMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgICAgICAgICBjb25zdCBtaW51dGVzID0gZGF0ZS5nZXRNaW51dGVzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgICAgICAgICAgZm9ybWF0dGVkRGF0ZSArPSBgICR7aG91cnN9OiR7bWludXRlc31gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZvcm1hdHRlZERhdGU7XG4gICAgfVxuXG4gICAgdG9nZ2xlQ2FsZW5kYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNDYWxlbmRhclZpc2libGUgPSAhdGhpcy5pc0NhbGVuZGFyVmlzaWJsZTtcbiAgICB9XG5cbiAgICBzZWxlY3REYXRlKGRheTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0aGlzLmN1cnJlbnRZZWFyLCB0aGlzLmN1cnJlbnRNb250aCwgZGF5KTtcbiAgICAgICAgdGhpcy5pbnB1dERhdGUgPSB0aGlzLmZvcm1hdERhdGVGb3JEaXNwbGF5KGRhdGUpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IGRhdGU7IC8vIEFybWF6ZW5hIGEgZGF0YSBzZWxlY2lvbmFkYVxuICAgICAgICB0aGlzLmRhdGVDaGFuZ2UuZW1pdCh0aGlzLmlucHV0RGF0ZSk7IC8vIEVtaXRlIGEgZGF0YSBzZWxlY2lvbmFkYSBhbyBjbGljYXIgbm8gY2FsZW5kw6FyaW9cbiAgICAgICAgdGhpcy5pc0NhbGVuZGFyVmlzaWJsZSA9IGZhbHNlOyAvLyBGZWNoYSBvIGNhbGVuZMOhcmlvIGFww7NzIGEgc2VsZcOnw6NvXG4gICAgfVxuXG4gICAgaGFuZGxlS2V5UHJlc3MoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY2hhckNvZGUgPSBldmVudC5rZXkuY2hhckNvZGVBdCgwKTtcblxuICAgICAgICBpZiAoY2hhckNvZGUgPCA0OCB8fCBjaGFyQ29kZSA+IDU3KSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaW5wdXREYXRlLnJlcGxhY2UoL1xcRC9nLCAnJykubGVuZ3RoID49ICh0aGlzLnVzZVRpbWUgPyAxMiA6IDgpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGRheXNJbk1vbnRoKCk6IGFueVtdIHtcbiAgICAgICAgY29uc3QgZmlyc3REYXlPZk1vbnRoID0gbmV3IERhdGUodGhpcy5jdXJyZW50WWVhciwgdGhpcy5jdXJyZW50TW9udGgsIDEpLmdldERheSgpOyAvLyBEaWEgZGEgc2VtYW5hIGRvIHByaW1laXJvIGRpYSBkbyBtw6pzXG4gICAgICAgIGNvbnN0IHRvdGFsRGF5c0luTW9udGggPSBuZXcgRGF0ZSh0aGlzLmN1cnJlbnRZZWFyLCB0aGlzLmN1cnJlbnRNb250aCArIDEsIDApLmdldERhdGUoKTsgLy8gVG90YWwgZGUgZGlhcyBubyBtw6pzXG5cbiAgICAgICAgY29uc3QgZGF5c0FycmF5ID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogdG90YWxEYXlzSW5Nb250aCB9LCAoXywgaSkgPT4gaSArIDEpOyAvLyBBcnJheSBjb20gdG9kb3Mgb3MgZGlhcyBkbyBtw6pzXG5cbiAgICAgICAgY29uc3QgbGVhZGluZ0VtcHR5RGF5cyA9IEFycmF5KGZpcnN0RGF5T2ZNb250aCkuZmlsbChudWxsKTsgLy8gRGlhcyB2YXppb3MgYW50ZXMgZG8gcHJpbWVpcm8gZGlhIGRvIG3DqnNcblxuICAgICAgICByZXR1cm4gWy4uLmxlYWRpbmdFbXB0eURheXMsIC4uLmRheXNBcnJheV07IC8vIFJldG9ybmEgb3MgZGlhcyB2YXppb3Mgc2VndWlkb3MgcGVsb3MgZGlhcyBkbyBtw6pzXG4gICAgfVxuXG5cblxuICAgIGdldCBtb250aHMoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVzW3RoaXMubG9jYWxlXT8ubW9udGhzIHx8IHRoaXMubG9jYWxlc1snZW4nXS5tb250aHM7XG4gICAgfVxuXG4gICAgZ2V0IGRheXNPZldlZWsoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVzW3RoaXMubG9jYWxlXT8uZGF5c09mV2VlayB8fCB0aGlzLmxvY2FsZXNbJ2VuJ10uZGF5c09mV2VlaztcbiAgICB9XG5cbiAgICBwcmV2TW9udGgoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRNb250aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50TW9udGggPSAxMTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFllYXItLTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudE1vbnRoLS07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZXh0TW9udGgoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRNb250aCA9PT0gMTEpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudE1vbnRoID0gMDtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFllYXIrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudE1vbnRoKys7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc1NlbGVjdGVkKGRheTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZERhdGUpIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWREYXkgPSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXREYXRlKCk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkTW9udGggPSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRNb250aCgpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZFllYXIgPSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBzZWxlY3RlZERheSA9PT0gZGF5ICYmXG4gICAgICAgICAgICBzZWxlY3RlZE1vbnRoID09PSB0aGlzLmN1cnJlbnRNb250aCAmJlxuICAgICAgICAgICAgc2VsZWN0ZWRZZWFyID09PSB0aGlzLmN1cnJlbnRZZWFyXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaXNUb2RheShkYXk6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0b2RheS5nZXRGdWxsWWVhcigpID09PSB0aGlzLmN1cnJlbnRZZWFyICYmXG4gICAgICAgICAgICB0b2RheS5nZXRNb250aCgpID09PSB0aGlzLmN1cnJlbnRNb250aCAmJlxuICAgICAgICAgICAgdG9kYXkuZ2V0RGF0ZSgpID09PSBkYXlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpc0RhdGVEaXNhYmxlZChkYXk6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodGhpcy5jdXJyZW50WWVhciwgdGhpcy5jdXJyZW50TW9udGgsIGRheSk7XG4gICAgICAgIGlmICh0aGlzLm1pbkRhdGUgJiYgZGF0ZSA8IHRoaXMubWluRGF0ZSkgcmV0dXJuIHRydWU7XG4gICAgICAgIGlmICh0aGlzLm1heERhdGUgJiYgZGF0ZSA+IHRoaXMubWF4RGF0ZSkgcmV0dXJuIHRydWU7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICA8bGFiZWwgW2Zvcl09XCJpZFwiIFtuZ0NsYXNzXT1cIidsYWJlbC1zdHlsZXMnXCI+e3sgbGFiZWwgfX08L2xhYmVsPlxuICA8ZGl2IGNsYXNzPVwiaW5wdXQtd3JhcHBlclwiPlxuICAgIDxpbnB1dFxuICAgICAgaWQ9XCJ7eyBpZCB9fVwiXG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBjbGFzcz1cImN1c3RvbS1pbnB1dFwiXG4gICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJ1c2VUaW1lID8gJ2RkL01NL3l5eXkgSEg6bW0nIDogJ2RkL01NL3l5eXknXCJcbiAgICAgIFt2YWx1ZV09XCJpbnB1dERhdGVcIlxuICAgICAgKGlucHV0KT1cIm9uSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAoa2V5cHJlc3MpPVwiaGFuZGxlS2V5UHJlc3MoJGV2ZW50KVwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlQ2FsZW5kYXIoKVwiXG4gICAgLz5cbiAgICA8IS0tIMONY29uZSBkZSBjYWxlbmTDoXJpbyBkZW50cm8gZG8gaW5wdXQgLS0+XG4gICAgPGx1Y2lkZS1pY29uIG5hbWU9XCJjYWxlbmRhclwiIGNsYXNzPVwiY2FsZW5kYXItaWNvblwiPjwvbHVjaWRlLWljb24+XG4gIDwvZGl2PlxuXG4gIDwhLS0gTWVuc2FnZW0gZGUgZXJybyBlc3RpbG8gYmFsw6NvemluaG8gLS0+XG4gIDxkaXYgKm5nSWY9XCJpbnZhbGlkRGF0ZVwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlxuICAgIHt7IGxvY2FsZXNbbG9jYWxlXS5pbnZhbGlkRGF0ZU1lc3NhZ2UgfX1cbiAgICA8IS0tIE1vc3RyYSBhIHBhcnRlIGRlICdISDptbScgYXBlbmFzIHNlIHVzZVRpbWUgZm9yIHZlcmRhZGVpcm8gLS0+XG4gICAgPHNwYW4gKm5nSWY9XCJ1c2VUaW1lXCI+IEhIOm1tLjwvc3Bhbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLXdyYXBwZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItY29udGFpbmVyXCIgW25nQ2xhc3NdPVwieyBvcGVuOiBpc0NhbGVuZGFyVmlzaWJsZSB9XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWhlYWRlclwiPlxuICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInByZXZNb250aCgpXCI+JiM4MjQ5OzwvYnV0dG9uPlxuICAgICAgICAgIDxzcGFuPnt7IG1vbnRoc1tjdXJyZW50TW9udGhdIH19IHt7IGN1cnJlbnRZZWFyIH19PC9zcGFuPlxuICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cIm5leHRNb250aCgpXCI+JiM4MjUwOzwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItYm9keVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1kYXktbmFtZXNcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBkYXkgb2YgZGF5c09mV2Vla1wiPnt7IGRheSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1kYXlzXCI+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF5IG9mIGRheXNJbk1vbnRoOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgW2NsYXNzLnRvZGF5XT1cImlzVG9kYXkoZGF5KVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJpc1NlbGVjdGVkKGRheSlcIlxuICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiaXNEYXRlRGlzYWJsZWQoZGF5KVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJkYXkgPyBzZWxlY3REYXRlKGRheSkgOiBudWxsXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPCEtLSBTb21lbnRlIHBlcm1pdGUgY2xpcXVlIGVtIGRpYXMgdsOhbGlkb3MgLS0+XG4gICAgICAgICAgICAgIHt7IGRheSA/IGRheSA6IFwiXCIgfX1cbiAgICAgICAgICAgICAgPCEtLSBFeGliZSBvIGRpYSBzZSBmb3IgdsOhbGlkbywgc2Vuw6NvIGV4aWJlIHZhemlvIC0tPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -30,6 +30,9 @@ import { TextareaComponent } from './textarea/textarea.component';
30
30
  import { TreeNodeComponent } from './tree-node/tree-node.component';
31
31
  import { FileUploadComponent } from './file-upload/file-upload.component';
32
32
  import { MultiSelectCategoryComponent } from './multi-select-category/multi-select-category.component';
33
+ import { CalendarArgentaComponent } from './calendar-argenta/calendar-argenta.component';
34
+ import { AccordionArgentaComponent } from './accordion/accordion.component';
35
+ import { JsonViewerComponent } from './json-viewer/json-viewer.component';
33
36
  import * as i0 from "@angular/core";
34
37
  export class ComponentsModule {
35
38
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ComponentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
@@ -59,7 +62,10 @@ export class ComponentsModule {
59
62
  SearchCustomerComponent,
60
63
  TabComponent,
61
64
  FileUploadComponent,
62
- MultiSelectCategoryComponent], imports: [CommonModule,
65
+ MultiSelectCategoryComponent,
66
+ CalendarArgentaComponent,
67
+ AccordionArgentaComponent,
68
+ JsonViewerComponent], imports: [CommonModule,
63
69
  FormsModule,
64
70
  ReactiveFormsModule,
65
71
  NgSelectModule,
@@ -93,7 +99,10 @@ export class ComponentsModule {
93
99
  SearchCustomerComponent,
94
100
  TabComponent,
95
101
  FileUploadComponent,
96
- MultiSelectCategoryComponent] }); }
102
+ MultiSelectCategoryComponent,
103
+ CalendarArgentaComponent,
104
+ AccordionArgentaComponent,
105
+ JsonViewerComponent] }); }
97
106
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ComponentsModule, imports: [CommonModule,
98
107
  FormsModule,
99
108
  ReactiveFormsModule,
@@ -134,6 +143,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
134
143
  TabComponent,
135
144
  FileUploadComponent,
136
145
  MultiSelectCategoryComponent,
146
+ CalendarArgentaComponent,
147
+ AccordionArgentaComponent,
148
+ JsonViewerComponent,
137
149
  ],
138
150
  imports: [
139
151
  CommonModule,
@@ -174,7 +186,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
174
186
  TabComponent,
175
187
  FileUploadComponent,
176
188
  MultiSelectCategoryComponent,
189
+ CalendarArgentaComponent,
190
+ AccordionArgentaComponent,
191
+ JsonViewerComponent,
177
192
  ],
178
193
  }]
179
194
  }] });
180
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saWItcG9ydGFsLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2NvbXBvbmVudHMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDMUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUMvRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9B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QUFzQjt3QkFDdEIsY0FBYzt3QkFDZCxjQUFjO3dCQUNkLHFCQUFxQjt3QkFDckIsa0JBQWtCO3dCQUNsQixnQkFBZ0I7d0JBQ2hCLGlCQUFpQjt3QkFDakIsZ0JBQWdCO3dCQUNoQix5QkFBeUI7d0JBQ3pCLGlCQUFpQjt3QkFDakIsb0JBQW9CO3dCQUNwQixzQkFBc0I7d0JBQ3RCLDBCQUEwQjt3QkFDMUIscUJBQXFCO3dCQUNyQix1QkFBdUI7d0JBQ3ZCLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQiw0QkFBNEI7cUJBQzdCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLGlCQUFpQjtxQkFDbEI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixjQUFjO3dCQUNkLGlCQUFpQjt3QkFDakIsaUJBQWlCO3dCQUNqQixlQUFlO3dCQUNmLGNBQWM7d0JBQ2Qsb0JBQW9CO3dCQUNwQixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCxrQkFBa0I7d0JBQ2xCLHNCQUFzQjt3QkFDdEIsY0FBYzt3QkFDZCxjQUFjO3dCQUNkLHFCQUFxQjt3QkFDckIsa0JBQWtCO3dCQUNsQixnQkFBZ0I7d0JBQ2hCLGlCQUFpQjt3QkFDakIsZ0JBQWdCO3dCQUNoQix5QkFBeUI7d0JBQ3pCLGlCQUFpQjt3QkFDakIsb0JBQW9CO3dCQUNwQixpQkFBaUI7d0JBQ2pCLHNCQUFzQjt3QkFDdEIsMEJBQTBCO3dCQUMxQixxQkFBcUI7d0JBQ3JCLHVCQUF1Qjt3QkFDdkIsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLDRCQUE0QjtxQkFDN0I7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTmdTZWxlY3RNb2R1bGUgfSBmcm9tICdAbmctc2VsZWN0L25nLXNlbGVjdCc7XG5pbXBvcnQgeyBBdXRvZm9jdXNEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmUvYXV0b2ZvY3VzLWRpcmVjdGl2ZS9hdXRvZm9jdXMuZGlyZWN0aXZlJztcbmltcG9ydCB7IENlcE1hc2tEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmUvY2VwLW1hc2suZGlyZWN0aXZlJztcbmltcG9ydCB7IENucGpNYXNrRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlL2NucGotbWFzay5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ3BmTWFza0RpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZS9jcGYtbWFzay5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTHVjaWRlSWNvbnNNb2R1bGUgfSBmcm9tICcuLi9pY29ucy9sdWNpZGUtaWNvbnMubW9kdWxlJztcbmltcG9ydCB7IEFsZXJ0Q29tcG9uZW50IH0gZnJvbSAnLi9hbGVydC9hbGVydC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXBwQmFja2dyb3VuZENvbXBvbmVudCB9IGZyb20gJy4vYXBwLWJhY2tncm91bmQvYXBwLWJhY2tncm91bmQuY29tcG9uZW50JztcbmltcG9ydCB7IEJhZGdlQ29tcG9uZW50IH0gZnJvbSAnLi9iYWRnZS9iYWRnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmFzaWNSZWdpc3RyYXRpb25Db21wb25lbnQgfSBmcm9tICcuL2Jhc2ljLXJlZ2lzdHJhdGlvbi9iYXNpYy1yZWdpc3RyYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FyZENvbXBvbmVudCB9IGZyb20gJy4vY2FyZC9jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4vY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50JztcbmltcG9ydCB7IENvZGVIaWdobGlnaHRDb21wb25lbnQgfSBmcm9tICcuL2NvZGUtaGlnaGxpZ2h0L2NvZGUtaGlnaGxpZ2h0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb25maXJtYXRpb25Db21wb25lbnQgfSBmcm9tICcuL2NvbmZpcm1hdGlvbi9jb25maXJtYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IEN1c3RvbVBhZ2luYXRpb25Db21wb25lbnQgfSBmcm9tICcuL2N1c3RvbS1wYWdpbmF0aW9uL2N1c3RvbS1wYWdpbmF0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDdXN0b21Td2l0Y2hDb21wb25lbnQgfSBmcm9tICcuL2N1c3RvbS1zd2l0Y2gvY3VzdG9tLXN3aXRjaC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2ltcHV0L2lucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNdWx0aVNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4vbXVsdGktc2VsZWN0L211bHRpLXNlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmFkaW9Db21wb25lbnQgfSBmcm9tICcuL3JhZGlvL3JhZGlvLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWFyY2hDdXN0b21lckNvbXBvbmVudCB9IGZyb20gJy4vc2VhcmNoLWN1c3RvbWVyL3NlYXJjaC1jdXN0b21lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VhcmNoSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL3NlYXJjaC1pbnB1dC9zZWFyY2gtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4vc2VsZWN0L3NlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFiQ29tcG9uZW50IH0gZnJvbSAnLi90YWIvdGFiLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRhVGFibGVDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlcy9kYXRhLXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0YXJlYUNvbXBvbmVudCB9IGZyb20gJy4vdGV4dGFyZWEvdGV4dGFyZWEuY29tcG9uZW50JztcbmltcG9ydCB7IFRyZWVOb2RlQ29tcG9uZW50IH0gZnJvbSAnLi90cmVlLW5vZGUvdHJlZS1ub2RlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGaWxlVXBsb2FkQ29tcG9uZW50IH0gZnJvbSAnLi9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTXVsdGlTZWxlY3RDYXRlZ29yeUNvbXBvbmVudCB9IGZyb20gJy4vbXVsdGktc2VsZWN0LWNhdGVnb3J5L211bHRpLXNlbGVjdC1jYXRlZ29yeS5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgQ2FyZENvbXBvbmVudCxcbiAgICBJbnB1dENvbXBvbmVudCxcbiAgICBDaGVja2JveENvbXBvbmVudCxcbiAgICBUZXh0YXJlYUNvbXBvbmVudCxcbiAgICBTZWxlY3RDb21wb25lbnQsXG4gICAgUmFkaW9Db21wb25lbnQsXG4gICAgTXVsdGlTZWxlY3RDb21wb25lbnQsXG4gICAgRGF0YVRhYmxlQ29tcG9uZW50LFxuICAgIENvZGVIaWdobGlnaHRDb21wb25lbnQsXG4gICAgQmFkZ2VDb21wb25lbnQsXG4gICAgQWxlcnRDb21wb25lbnQsXG4gICAgQ29uZmlybWF0aW9uQ29tcG9uZW50LFxuICAgIEF1dG9mb2N1c0RpcmVjdGl2ZSxcbiAgICBDZXBNYXNrRGlyZWN0aXZlLFxuICAgIENucGpNYXNrRGlyZWN0aXZlLFxuICAgIENwZk1hc2tEaXJlY3RpdmUsXG4gICAgQ3VzdG9tUGFnaW5hdGlvbkNvbXBvbmVudCxcbiAgICBUcmVlTm9kZUNvbXBvbmVudCxcbiAgICBTZWFyY2hJbnB1dENvbXBvbmVudCxcbiAgICBBcHBCYWNrZ3JvdW5kQ29tcG9uZW50LFxuICAgIEJhc2ljUmVnaXN0cmF0aW9uQ29tcG9uZW50LFxuICAgIEN1c3RvbVN3aXRjaENvbXBvbmVudCxcbiAgICBTZWFyY2hDdXN0b21lckNvbXBvbmVudCxcbiAgICBUYWJDb21wb25lbnQsXG4gICAgRmlsZVVwbG9hZENvbXBvbmVudCxcbiAgICBNdWx0aVNlbGVjdENhdGVnb3J5Q29tcG9uZW50LFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTmdTZWxlY3RNb2R1bGUsXG4gICAgTHVjaWRlSWNvbnNNb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgQ2FyZENvbXBvbmVudCxcbiAgICBJbnB1dENvbXBvbmVudCxcbiAgICBDaGVja2JveENvbXBvbmVudCxcbiAgICBUZXh0YXJlYUNvbXBvbmVudCxcbiAgICBTZWxlY3RDb21wb25lbnQsXG4gICAgUmFkaW9Db21wb25lbnQsXG4gICAgTXVsdGlTZWxlY3RDb21wb25lbnQsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBOZ1NlbGVjdE1vZHVsZSxcbiAgICBEYXRhVGFibGVDb21wb25lbnQsXG4gICAgQ29kZUhpZ2hsaWdodENvbXBvbmVudCxcbiAgICBCYWRnZUNvbXBvbmVudCxcbiAgICBBbGVydENvbXBvbmVudCxcbiAgICBDb25maXJtYXRpb25Db21wb25lbnQsXG4gICAgQXV0b2ZvY3VzRGlyZWN0aXZlLFxuICAgIENlcE1hc2tEaXJlY3RpdmUsXG4gICAgQ25wak1hc2tEaXJlY3RpdmUsXG4gICAgQ3BmTWFza0RpcmVjdGl2ZSxcbiAgICBDdXN0b21QYWdpbmF0aW9uQ29tcG9uZW50LFxuICAgIFRyZWVOb2RlQ29tcG9uZW50LFxuICAgIFNlYXJjaElucHV0Q29tcG9uZW50LFxuICAgIEx1Y2lkZUljb25zTW9kdWxlLFxuICAgIEFwcEJhY2tncm91bmRDb21wb25lbnQsXG4gICAgQmFzaWNSZWdpc3RyYXRpb25Db21wb25lbnQsXG4gICAgQ3VzdG9tU3dpdGNoQ29tcG9uZW50LFxuICAgIFNlYXJjaEN1c3RvbWVyQ29tcG9uZW50LFxuICAgIFRhYkNvbXBvbmVudCxcbiAgICBGaWxlVXBsb2FkQ29tcG9uZW50LFxuICAgIE11bHRpU2VsZWN0Q2F0ZWdvcnlDb21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIENvbXBvbmVudHNNb2R1bGUgeyB9XG4iXX0=
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saWItcG9ydGFsLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2NvbXBvbmVudHMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDMUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUMvRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9B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Qjt3QkFDakIsc0JBQXNCO3dCQUN0QiwwQkFBMEI7d0JBQzFCLHFCQUFxQjt3QkFDckIsdUJBQXVCO3dCQUN2QixZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsNEJBQTRCO3dCQUM1Qix3QkFBd0I7d0JBQ3hCLHlCQUF5Qjt3QkFDekIsbUJBQW1CO3FCQUNwQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOZ1NlbGVjdE1vZHVsZSB9IGZyb20gJ0BuZy1zZWxlY3Qvbmctc2VsZWN0JztcbmltcG9ydCB7IEF1dG9mb2N1c0RpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZS9hdXRvZm9jdXMtZGlyZWN0aXZlL2F1dG9mb2N1cy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ2VwTWFza0RpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZS9jZXAtbWFzay5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ25wak1hc2tEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmUvY25wai1tYXNrLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDcGZNYXNrRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlL2NwZi1tYXNrLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBMdWNpZGVJY29uc01vZHVsZSB9IGZyb20gJy4uL2ljb25zL2x1Y2lkZS1pY29ucy5tb2R1bGUnO1xuaW1wb3J0IHsgQWxlcnRDb21wb25lbnQgfSBmcm9tICcuL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHBCYWNrZ3JvdW5kQ29tcG9uZW50IH0gZnJvbSAnLi9hcHAtYmFja2dyb3VuZC9hcHAtYmFja2dyb3VuZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmFkZ2VDb21wb25lbnQgfSBmcm9tICcuL2JhZGdlL2JhZGdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCYXNpY1JlZ2lzdHJhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vYmFzaWMtcmVnaXN0cmF0aW9uL2Jhc2ljLXJlZ2lzdHJhdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9jYXJkL2NhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29kZUhpZ2hsaWdodENvbXBvbmVudCB9IGZyb20gJy4vY29kZS1oaWdobGlnaHQvY29kZS1oaWdobGlnaHQuY29tcG9uZW50JztcbmltcG9ydCB7IENvbmZpcm1hdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29uZmlybWF0aW9uL2NvbmZpcm1hdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3VzdG9tUGFnaW5hdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY3VzdG9tLXBhZ2luYXRpb24vY3VzdG9tLXBhZ2luYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IEN1c3RvbVN3aXRjaENvbXBvbmVudCB9IGZyb20gJy4vY3VzdG9tLXN3aXRjaC9jdXN0b20tc3dpdGNoLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vaW1wdXQvaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IE11bHRpU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9tdWx0aS1zZWxlY3QvbXVsdGktc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSYWRpb0NvbXBvbmVudCB9IGZyb20gJy4vcmFkaW8vcmFkaW8uY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaEN1c3RvbWVyQ29tcG9uZW50IH0gZnJvbSAnLi9zZWFyY2gtY3VzdG9tZXIvc2VhcmNoLWN1c3RvbWVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWFyY2hJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vc2VhcmNoLWlucHV0L3NlYXJjaC1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJDb21wb25lbnQgfSBmcm9tICcuL3RhYi90YWIuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGFUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vdGFibGVzL2RhdGEtdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IFRleHRhcmVhQ29tcG9uZW50IH0gZnJvbSAnLi90ZXh0YXJlYS90ZXh0YXJlYS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJlZU5vZGVDb21wb25lbnQgfSBmcm9tICcuL3RyZWUtbm9kZS90cmVlLW5vZGUuY29tcG9uZW50JztcbmltcG9ydCB7IEZpbGVVcGxvYWRDb21wb25lbnQgfSBmcm9tICcuL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNdWx0aVNlbGVjdENhdGVnb3J5Q29tcG9uZW50IH0gZnJvbSAnLi9tdWx0aS1zZWxlY3QtY2F0ZWdvcnkvbXVsdGktc2VsZWN0LWNhdGVnb3J5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYWxlbmRhckFyZ2VudGFDb21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFyLWFyZ2VudGEvY2FsZW5kYXItYXJnZW50YS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWNjb3JkaW9uQXJnZW50YUNvbXBvbmVudCB9IGZyb20gJy4vYWNjb3JkaW9uL2FjY29yZGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSnNvblZpZXdlckNvbXBvbmVudCB9IGZyb20gJy4vanNvbi12aWV3ZXIvanNvbi12aWV3ZXIuY29tcG9uZW50J1xuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIENhcmRDb21wb25lbnQsXG4gICAgSW5wdXRDb21wb25lbnQsXG4gICAgQ2hlY2tib3hDb21wb25lbnQsXG4gICAgVGV4dGFyZWFDb21wb25lbnQsXG4gICAgU2VsZWN0Q29tcG9uZW50LFxuICAgIFJhZGlvQ29tcG9uZW50LFxuICAgIE11bHRpU2VsZWN0Q29tcG9uZW50LFxuICAgIERhdGFUYWJsZUNvbXBvbmVudCxcbiAgICBDb2RlSGlnaGxpZ2h0Q29tcG9uZW50LFxuICAgIEJhZGdlQ29tcG9uZW50LFxuICAgIEFsZXJ0Q29tcG9uZW50LFxuICAgIENvbmZpcm1hdGlvbkNvbXBvbmVudCxcbiAgICBBdXRvZm9jdXNEaXJlY3RpdmUsXG4gICAgQ2VwTWFza0RpcmVjdGl2ZSxcbiAgICBDbnBqTWFza0RpcmVjdGl2ZSxcbiAgICBDcGZNYXNrRGlyZWN0aXZlLFxuICAgIEN1c3RvbVBhZ2luYXRpb25Db21wb25lbnQsXG4gICAgVHJlZU5vZGVDb21wb25lbnQsXG4gICAgU2VhcmNoSW5wdXRDb21wb25lbnQsXG4gICAgQXBwQmFja2dyb3VuZENvbXBvbmVudCxcbiAgICBCYXNpY1JlZ2lzdHJhdGlvbkNvbXBvbmVudCxcbiAgICBDdXN0b21Td2l0Y2hDb21wb25lbnQsXG4gICAgU2VhcmNoQ3VzdG9tZXJDb21wb25lbnQsXG4gICAgVGFiQ29tcG9uZW50LFxuICAgIEZpbGVVcGxvYWRDb21wb25lbnQsXG4gICAgTXVsdGlTZWxlY3RDYXRlZ29yeUNvbXBvbmVudCxcbiAgICBDYWxlbmRhckFyZ2VudGFDb21wb25lbnQsXG4gICAgQWNjb3JkaW9uQXJnZW50YUNvbXBvbmVudCxcbiAgICBKc29uVmlld2VyQ29tcG9uZW50LFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTmdTZWxlY3RNb2R1bGUsXG4gICAgTHVjaWRlSWNvbnNNb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgQ2FyZENvbXBvbmVudCxcbiAgICBJbnB1dENvbXBvbmVudCxcbiAgICBDaGVja2JveENvbXBvbmVudCxcbiAgICBUZXh0YXJlYUNvbXBvbmVudCxcbiAgICBTZWxlY3RDb21wb25lbnQsXG4gICAgUmFkaW9Db21wb25lbnQsXG4gICAgTXVsdGlTZWxlY3RDb21wb25lbnQsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBOZ1NlbGVjdE1vZHVsZSxcbiAgICBEYXRhVGFibGVDb21wb25lbnQsXG4gICAgQ29kZUhpZ2hsaWdodENvbXBvbmVudCxcbiAgICBCYWRnZUNvbXBvbmVudCxcbiAgICBBbGVydENvbXBvbmVudCxcbiAgICBDb25maXJtYXRpb25Db21wb25lbnQsXG4gICAgQXV0b2ZvY3VzRGlyZWN0aXZlLFxuICAgIENlcE1hc2tEaXJlY3RpdmUsXG4gICAgQ25wak1hc2tEaXJlY3RpdmUsXG4gICAgQ3BmTWFza0RpcmVjdGl2ZSxcbiAgICBDdXN0b21QYWdpbmF0aW9uQ29tcG9uZW50LFxuICAgIFRyZWVOb2RlQ29tcG9uZW50LFxuICAgIFNlYXJjaElucHV0Q29tcG9uZW50LFxuICAgIEx1Y2lkZUljb25zTW9kdWxlLFxuICAgIEFwcEJhY2tncm91bmRDb21wb25lbnQsXG4gICAgQmFzaWNSZWdpc3RyYXRpb25Db21wb25lbnQsXG4gICAgQ3VzdG9tU3dpdGNoQ29tcG9uZW50LFxuICAgIFNlYXJjaEN1c3RvbWVyQ29tcG9uZW50LFxuICAgIFRhYkNvbXBvbmVudCxcbiAgICBGaWxlVXBsb2FkQ29tcG9uZW50LFxuICAgIE11bHRpU2VsZWN0Q2F0ZWdvcnlDb21wb25lbnQsXG4gICAgQ2FsZW5kYXJBcmdlbnRhQ29tcG9uZW50LFxuICAgIEFjY29yZGlvbkFyZ2VudGFDb21wb25lbnQsXG4gICAgSnNvblZpZXdlckNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50c01vZHVsZSB7IH1cbiJdfQ==