@c80/ui 1.0.35 → 1.0.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,216 +1,81 @@
1
- import { Component, Input, Output, EventEmitter, ViewChild, ChangeDetectorRef, inject, } from '@angular/core';
1
+ import { Component, input, output, computed, viewChild, } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
+ import { BASE_ICON_COLORS, DISABLED_COLOR, DEFAULT_ICON_COLOR, DISABLED_OPACITY, SECONDARY_WARN_OPACITY, DEFAULT_OPACITY, BASE_ICON_SIZE, } from './icon.constants';
3
4
  import * as i0 from "@angular/core";
4
5
  import * as i1 from "@angular/common";
5
6
  export class C80IconComponent {
6
- /** Tamaño base del icono (en px) */
7
- get iconSize() {
8
- return 24 * this.size;
9
- }
10
- icon = 'check';
11
- color = 'primary';
12
- customColor; // Color personalizado opcional
13
- disabled = false;
14
- size = 1;
15
- /** Si es true, renderiza como <button> nativo, si es false solo como icono */
16
- _button = false;
17
- cdr = inject(ChangeDetectorRef);
18
- set button(val) {
19
- // Permite usar 'button' a secas, cualquier valor que no sea null/undefined/false es true
20
- this._button =
21
- val !== null && val !== undefined && val !== false && val !== 'false';
22
- }
23
- get button() {
24
- return this._button;
25
- }
26
- /** Tipo de botón nativo (solo si button=true) */
27
- type = 'button';
28
- /** Output para click (solo si button=true) */
29
- iconClick = new EventEmitter();
30
- checkIconTpl;
31
- cancelIconTpl;
32
- editIconTpl;
33
- deleteIconTpl;
34
- addIconTpl;
35
- viewIconTpl;
36
- getIconTpl;
37
- settingsIconTpl;
38
- defaultIconTpl;
39
- scheduleIconTpl;
40
- refreshIconTpl;
41
- checkCircleIconTpl;
42
- cancelCircleIconTpl;
43
- errorIconTpl;
44
- queueIconTpl;
45
- arrowUpIconTpl;
46
- arrowDownIconTpl;
47
- toggleOnIconTpl;
48
- toggleOffIconTpl;
49
- searchIconTpl;
50
- uploadIconTpl;
51
- pendingActionsIconTpl;
52
- playCircleIconTpl;
53
- iconMap = new Map();
54
- ngAfterViewInit() {
55
- this.initializeBasicIcons();
56
- this.initializeStateIcons();
57
- this.initializeUtilityIcons();
58
- this.cdr.detectChanges();
59
- }
60
- initializeBasicIcons() {
61
- this.iconMap.set('check', this.checkIconTpl);
62
- this.iconMap.set('cancel', this.cancelIconTpl);
63
- this.iconMap.set('edit', this.editIconTpl);
64
- this.iconMap.set('delete', this.deleteIconTpl);
65
- this.iconMap.set('add', this.addIconTpl);
66
- this.iconMap.set('view', this.viewIconTpl);
67
- this.iconMap.set('get', this.getIconTpl);
68
- this.iconMap.set('settings', this.settingsIconTpl);
69
- }
70
- initializeStateIcons() {
71
- this.iconMap.set('check_circle', this.checkCircleIconTpl);
72
- this.iconMap.set('cancel_circle', this.cancelCircleIconTpl);
73
- this.iconMap.set('error', this.errorIconTpl);
74
- this.iconMap.set('toggle_on', this.toggleOnIconTpl);
75
- this.iconMap.set('toggle_off', this.toggleOffIconTpl);
76
- this.iconMap.set('pending_actions', this.pendingActionsIconTpl);
77
- this.iconMap.set('play_circle', this.playCircleIconTpl);
78
- }
79
- initializeUtilityIcons() {
80
- this.iconMap.set('schedule', this.scheduleIconTpl);
81
- this.iconMap.set('refresh', this.refreshIconTpl);
82
- this.iconMap.set('queue', this.queueIconTpl);
83
- this.iconMap.set('arrow_up', this.arrowUpIconTpl);
84
- this.iconMap.set('arrow_down', this.arrowDownIconTpl);
85
- this.iconMap.set('search', this.searchIconTpl);
86
- this.iconMap.set('upload', this.uploadIconTpl);
87
- }
88
- getIconTemplate() {
89
- return this.iconMap.get(this.icon) ?? this.defaultIconTpl;
90
- }
91
- get iconColor() {
92
- if (this.disabled) {
93
- return '#bdbdbd'; // gris deshabilitado
7
+ icon = input('check');
8
+ color = input('primary');
9
+ customColor = input(undefined);
10
+ disabled = input(false);
11
+ size = input(1);
12
+ button = input(false, {
13
+ transform: (val) => val !== null && val !== undefined && val !== false && val !== 'false',
14
+ });
15
+ type = input('button');
16
+ iconClick = output();
17
+ iconSize = computed(() => BASE_ICON_SIZE * this.size());
18
+ iconColor = computed(() => {
19
+ if (this.disabled()) {
20
+ return DISABLED_COLOR;
94
21
  }
95
- // Si hay un color personalizado, usarlo siempre (excepto si está disabled)
96
- if (this.customColor) {
97
- return this.customColor;
22
+ const custom = this.customColor();
23
+ if (custom) {
24
+ return custom;
98
25
  }
99
- // Paleta simplificada - solo colores base
100
- const baseColors = {
101
- primary: '#003775c8',
102
- secondary: '#6b7280',
103
- warn: '#e53935',
104
- success: '#4caf50',
105
- };
106
- return baseColors[this.color] ?? '#222';
107
- }
108
- get iconOpacity() {
109
- if (this.disabled) {
110
- return 0.5;
26
+ return BASE_ICON_COLORS[this.color()] ?? DEFAULT_ICON_COLOR;
27
+ });
28
+ iconOpacity = computed(() => {
29
+ if (this.disabled()) {
30
+ return DISABLED_OPACITY;
111
31
  }
112
- // Aplicar opacity 0.7 cuando es color secondary o warn (sin customColor)
113
- if ((this.color === 'secondary' || this.color === 'warn') &&
114
- !this.customColor) {
115
- return 0.7;
32
+ const currentColor = this.color();
33
+ const hasCustomColor = this.customColor() !== undefined;
34
+ if ((currentColor === 'secondary' || currentColor === 'warn') &&
35
+ !hasCustomColor) {
36
+ return SECONDARY_WARN_OPACITY;
116
37
  }
117
- return 1;
118
- } // Handler para click en modo button
38
+ return DEFAULT_OPACITY;
39
+ });
40
+ iconTemplate = computed(() => {
41
+ const iconName = this.icon();
42
+ const templateName = iconName.replaceAll(/_([a-z])/g, (_, letter) => letter.toUpperCase());
43
+ const viewChildSignal = this[templateName];
44
+ return typeof viewChildSignal === 'function' ? viewChildSignal() : undefined;
45
+ });
46
+ check = viewChild('check');
47
+ cancel = viewChild('cancel');
48
+ edit = viewChild('edit');
49
+ delete = viewChild('delete');
50
+ add = viewChild('add');
51
+ view = viewChild('view');
52
+ get = viewChild('get');
53
+ settings = viewChild('settings');
54
+ schedule = viewChild('schedule');
55
+ refresh = viewChild('refresh');
56
+ checkCircle = viewChild('checkCircle');
57
+ cancelCircle = viewChild('cancelCircle');
58
+ error = viewChild('error');
59
+ queue = viewChild('queue');
60
+ arrowUp = viewChild('arrowUp');
61
+ arrowDown = viewChild('arrowDown');
62
+ toggleOn = viewChild('toggleOn');
63
+ toggleOff = viewChild('toggleOff');
64
+ search = viewChild('search');
65
+ upload = viewChild('upload');
66
+ pendingActions = viewChild('pendingActions');
67
+ playCircle = viewChild('playCircle');
68
+ default = viewChild('default');
119
69
  onButtonClick(event) {
120
- if (!this.disabled) {
70
+ if (!this.disabled()) {
121
71
  this.iconClick.emit(event);
122
72
  }
123
73
  }
124
74
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: C80IconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
125
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: C80IconComponent, isStandalone: true, selector: "c80-icon", inputs: { icon: "icon", color: "color", customColor: "customColor", disabled: "disabled", size: "size", button: "button", type: "type" }, outputs: { iconClick: "iconClick" }, viewQueries: [{ propertyName: "checkIconTpl", first: true, predicate: ["checkIcon"], descendants: true }, { propertyName: "cancelIconTpl", first: true, predicate: ["cancelIcon"], descendants: true }, { propertyName: "editIconTpl", first: true, predicate: ["editIcon"], descendants: true }, { propertyName: "deleteIconTpl", first: true, predicate: ["deleteIcon"], descendants: true }, { propertyName: "addIconTpl", first: true, predicate: ["addIcon"], descendants: true }, { propertyName: "viewIconTpl", first: true, predicate: ["viewIcon"], descendants: true }, { propertyName: "getIconTpl", first: true, predicate: ["getIcon"], descendants: true }, { propertyName: "settingsIconTpl", first: true, predicate: ["settingsIcon"], descendants: true }, { propertyName: "defaultIconTpl", first: true, predicate: ["defaultIcon"], descendants: true, static: true }, { propertyName: "scheduleIconTpl", first: true, predicate: ["scheduleIcon"], descendants: true }, { propertyName: "refreshIconTpl", first: true, predicate: ["refreshIcon"], descendants: true }, { propertyName: "checkCircleIconTpl", first: true, predicate: ["checkCircleIcon"], descendants: true }, { propertyName: "cancelCircleIconTpl", first: true, predicate: ["cancelCircleIcon"], descendants: true }, { propertyName: "errorIconTpl", first: true, predicate: ["errorIcon"], descendants: true }, { propertyName: "queueIconTpl", first: true, predicate: ["queueIcon"], descendants: true }, { propertyName: "arrowUpIconTpl", first: true, predicate: ["arrowUpIcon"], descendants: true }, { propertyName: "arrowDownIconTpl", first: true, predicate: ["arrowDownIcon"], descendants: true }, { propertyName: "toggleOnIconTpl", first: true, predicate: ["toggleOnIcon"], descendants: true }, { propertyName: "toggleOffIconTpl", first: true, predicate: ["toggleOffIcon"], descendants: true }, { propertyName: "searchIconTpl", first: true, predicate: ["searchIcon"], descendants: true }, { propertyName: "uploadIconTpl", first: true, predicate: ["uploadIcon"], descendants: true }, { propertyName: "pendingActionsIconTpl", first: true, predicate: ["pendingActionsIcon"], descendants: true }, { propertyName: "playCircleIconTpl", first: true, predicate: ["playCircleIcon"], descendants: true }], ngImport: i0, template: "@if (button) {\r\n<button type=\"{{type}}\" [disabled]=\"disabled\" class=\"icon-button\" [style.width.px]=\"iconSize + 8\" [style.height.px]=\"iconSize + 8\" (click)=\"onButtonClick($event)\">\r\n <ng-container *ngTemplateOutlet=\"getIconTemplate()\"></ng-container>\r\n</button>\r\n} @else {\r\n<span class=\"icon-span\" [style.width.px]=\"iconSize\" [style.height.px]=\"iconSize\">\r\n <ng-container *ngTemplateOutlet=\"getIconTemplate()\"></ng-container>\r\n</span>\r\n}\r\n\r\n<ng-template #checkIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M5 13l4 4L19 7\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #cancelIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M6 6l12 12M6 18L18 6\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #editIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <rect x=\"5\" y=\"19\" width=\"14\" height=\"2\" rx=\"1\" [attr.fill]=\"iconColor\" />\r\n <path d=\"M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4 12.5-12.5z\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #deleteIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M6 19a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\" [attr.fill]=\"iconColor\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #addIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M12 5v14M5 12h14\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #viewIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M12 5C7 5 2.73 8.11 1 12c1.73 3.89 6 7 11 7s9.27-3.11 11-7c-1.73-3.89-6-7-11-7z\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <circle cx=\"12\" cy=\"12\" r=\"3\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #getIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"6\" cy=\"6\" r=\"3\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <circle cx=\"18\" cy=\"18\" r=\"3\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <path d=\"m8.5 8.5 7 7\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n <path d=\"m13 11 2 2-2 2\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #settingsIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"3\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <path d=\"M12 1v6m0 6v10M3.34 7l5.2 3M15.46 14l5.2 3M3.34 17l5.2-3M15.46 10l5.2-3\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #defaultIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #scheduleIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <polyline points=\"12,6 12,12 16,14\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #refreshIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M21 3v5h-5\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M3 21v-5h5\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #checkCircleIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <path d=\"m9 12 2 2 4-4\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #cancelCircleIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <path d=\"m15 9-6 6m0-6 6 6\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #errorIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #queueIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M3 12h18m-9-9v18\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n <rect x=\"2\" y=\"3\" width=\"20\" height=\"6\" rx=\"1\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" fill=\"none\" />\r\n <rect x=\"2\" y=\"15\" width=\"20\" height=\"6\" rx=\"1\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" fill=\"none\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #arrowUpIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"m18 15-6-6-6 6\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #arrowDownIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"m6 9 6 6 6-6\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #toggleOnIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <rect x=\"1\" y=\"5\" width=\"22\" height=\"14\" rx=\"7\" [attr.fill]=\"iconColor\" />\r\n <circle cx=\"16\" cy=\"12\" r=\"3\" fill=\"white\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #toggleOffIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <rect x=\"1\" y=\"5\" width=\"22\" height=\"14\" rx=\"7\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" fill=\"none\" />\r\n <circle cx=\"8\" cy=\"12\" r=\"3\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" fill=\"none\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #searchIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"11\" cy=\"11\" r=\"8\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"m21 21-4.35-4.35\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #uploadIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <polyline points=\"7,10 12,5 17,10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"15\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #pendingActionsIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <polyline points=\"12,6 12,12 16,14\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M8 2v4M16 2v4\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #playCircleIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <polygon points=\"10,8 16,12 10,16\" [attr.fill]=\"iconColor\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #defaultIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"2\" [attr.fill]=\"iconColor\" />\r\n </svg>\r\n</ng-template>", styles: [":host .icon-button{display:inline-flex;align-items:center;justify-content:center;border:none;outline:none;background:transparent;border-radius:50%;min-width:0;min-height:0;padding:4px;cursor:pointer;transition:background .2s;box-sizing:border-box}:host .icon-button:focus-visible{outline:2px solid #1976d2;outline-offset:2px}:host .icon-button:hover:not(:disabled){background:#1976d214}:host .icon-button:active:not(:disabled){background:#1976d229}:host .icon-button:disabled{opacity:.5;cursor:default;background:transparent}:host .icon-span,:host .icon-button{margin-left:4px;margin-right:4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
75
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: C80IconComponent, isStandalone: true, selector: "c80-icon", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, customColor: { classPropertyName: "customColor", publicName: "customColor", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, button: { classPropertyName: "button", publicName: "button", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { iconClick: "iconClick" }, viewQueries: [{ propertyName: "check", first: true, predicate: ["check"], descendants: true, isSignal: true }, { propertyName: "cancel", first: true, predicate: ["cancel"], descendants: true, isSignal: true }, { propertyName: "edit", first: true, predicate: ["edit"], descendants: true, isSignal: true }, { propertyName: "delete", first: true, predicate: ["delete"], descendants: true, isSignal: true }, { propertyName: "add", first: true, predicate: ["add"], descendants: true, isSignal: true }, { propertyName: "view", first: true, predicate: ["view"], descendants: true, isSignal: true }, { propertyName: "get", first: true, predicate: ["get"], descendants: true, isSignal: true }, { propertyName: "settings", first: true, predicate: ["settings"], descendants: true, isSignal: true }, { propertyName: "schedule", first: true, predicate: ["schedule"], descendants: true, isSignal: true }, { propertyName: "refresh", first: true, predicate: ["refresh"], descendants: true, isSignal: true }, { propertyName: "checkCircle", first: true, predicate: ["checkCircle"], descendants: true, isSignal: true }, { propertyName: "cancelCircle", first: true, predicate: ["cancelCircle"], descendants: true, isSignal: true }, { propertyName: "error", first: true, predicate: ["error"], descendants: true, isSignal: true }, { propertyName: "queue", first: true, predicate: ["queue"], descendants: true, isSignal: true }, { propertyName: "arrowUp", first: true, predicate: ["arrowUp"], descendants: true, isSignal: true }, { propertyName: "arrowDown", first: true, predicate: ["arrowDown"], descendants: true, isSignal: true }, { propertyName: "toggleOn", first: true, predicate: ["toggleOn"], descendants: true, isSignal: true }, { propertyName: "toggleOff", first: true, predicate: ["toggleOff"], descendants: true, isSignal: true }, { propertyName: "search", first: true, predicate: ["search"], descendants: true, isSignal: true }, { propertyName: "upload", first: true, predicate: ["upload"], descendants: true, isSignal: true }, { propertyName: "pendingActions", first: true, predicate: ["pendingActions"], descendants: true, isSignal: true }, { propertyName: "playCircle", first: true, predicate: ["playCircle"], descendants: true, isSignal: true }, { propertyName: "default", first: true, predicate: ["default"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (button()) {\r\n<button [type]=\"type()\" [disabled]=\"disabled()\" class=\"icon-button\" [style.width.px]=\"iconSize() + 8\" [style.height.px]=\"iconSize() + 8\" (click)=\"onButtonClick($event)\">\r\n <ng-container *ngTemplateOutlet=\"iconTemplate() || default\"></ng-container>\r\n</button>\r\n} @else {\r\n<span class=\"icon-span\" [style.width.px]=\"iconSize()\" [style.height.px]=\"iconSize()\">\r\n <ng-container *ngTemplateOutlet=\"iconTemplate() || default\"></ng-container>\r\n</span>\r\n}\r\n\r\n<ng-template #check>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"M5 13l4 4L19 7\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #cancel>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"M6 6l12 12M6 18L18 6\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #edit>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <rect x=\"5\" y=\"19\" width=\"14\" height=\"2\" rx=\"1\" [attr.fill]=\"iconColor()\" />\r\n <path d=\"M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4 12.5-12.5z\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #delete>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"M6 19a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\" [attr.fill]=\"iconColor()\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #add>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"M12 5v14M5 12h14\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #view>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"M12 5C7 5 2.73 8.11 1 12c1.73 3.89 6 7 11 7s9.27-3.11 11-7c-1.73-3.89-6-7-11-7z\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <circle cx=\"12\" cy=\"12\" r=\"3\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #get>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"6\" cy=\"6\" r=\"3\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n <circle cx=\"18\" cy=\"18\" r=\"3\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n <path d=\"m8.5 8.5 7 7\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n <path d=\"m13 11 2 2-2 2\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #settings>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"12\" cy=\"12\" r=\"3\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n <path d=\"M12 1v6m0 6v10M3.34 7l5.2 3M15.46 14l5.2 3M3.34 17l5.2-3M15.46 10l5.2-3\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #default>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #schedule>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n <polyline points=\"12,6 12,12 16,14\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #refresh>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M21 3v5h-5\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M3 21v-5h5\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #checkCircle>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n <path d=\"m9 12 2 2 4-4\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #cancelCircle>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n <path d=\"m15 9-6 6m0-6 6 6\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #error>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #queue>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"M3 12h18m-9-9v18\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n <rect x=\"2\" y=\"3\" width=\"20\" height=\"6\" rx=\"1\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" fill=\"none\" />\r\n <rect x=\"2\" y=\"15\" width=\"20\" height=\"6\" rx=\"1\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" fill=\"none\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #arrowUp>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"m18 15-6-6-6 6\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #arrowDown>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"m6 9 6 6 6-6\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #toggleOn>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <rect x=\"1\" y=\"5\" width=\"22\" height=\"14\" rx=\"7\" [attr.fill]=\"iconColor()\" />\r\n <circle cx=\"16\" cy=\"12\" r=\"3\" fill=\"white\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #toggleOff>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <rect x=\"1\" y=\"5\" width=\"22\" height=\"14\" rx=\"7\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" fill=\"none\" />\r\n <circle cx=\"8\" cy=\"12\" r=\"3\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" fill=\"none\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #search>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"11\" cy=\"11\" r=\"8\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"m21 21-4.35-4.35\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #upload>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <polyline points=\"7,10 12,5 17,10\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"15\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #pendingActions>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <polyline points=\"12,6 12,12 16,14\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M8 2v4M16 2v4\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #playCircle>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <polygon points=\"10,8 16,12 10,16\" [attr.fill]=\"iconColor()\" />\r\n </svg>\r\n</ng-template>", styles: [":host .icon-button{display:inline-flex;align-items:center;justify-content:center;border:none;outline:none;background:transparent;border-radius:50%;min-width:0;min-height:0;padding:4px;cursor:pointer;transition:background .2s;box-sizing:border-box}:host .icon-button:focus-visible{outline:2px solid #1976d2;outline-offset:2px}:host .icon-button:hover:not(:disabled){background:#1976d214}:host .icon-button:active:not(:disabled){background:#1976d229}:host .icon-button:disabled{opacity:.5;cursor:default;background:transparent}:host .icon-span,:host .icon-button{margin-left:4px;margin-right:4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
126
76
  }
127
77
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: C80IconComponent, decorators: [{
128
78
  type: Component,
129
- args: [{ selector: 'c80-icon', standalone: true, imports: [CommonModule], template: "@if (button) {\r\n<button type=\"{{type}}\" [disabled]=\"disabled\" class=\"icon-button\" [style.width.px]=\"iconSize + 8\" [style.height.px]=\"iconSize + 8\" (click)=\"onButtonClick($event)\">\r\n <ng-container *ngTemplateOutlet=\"getIconTemplate()\"></ng-container>\r\n</button>\r\n} @else {\r\n<span class=\"icon-span\" [style.width.px]=\"iconSize\" [style.height.px]=\"iconSize\">\r\n <ng-container *ngTemplateOutlet=\"getIconTemplate()\"></ng-container>\r\n</span>\r\n}\r\n\r\n<ng-template #checkIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M5 13l4 4L19 7\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #cancelIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M6 6l12 12M6 18L18 6\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #editIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <rect x=\"5\" y=\"19\" width=\"14\" height=\"2\" rx=\"1\" [attr.fill]=\"iconColor\" />\r\n <path d=\"M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4 12.5-12.5z\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #deleteIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M6 19a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\" [attr.fill]=\"iconColor\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #addIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M12 5v14M5 12h14\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #viewIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M12 5C7 5 2.73 8.11 1 12c1.73 3.89 6 7 11 7s9.27-3.11 11-7c-1.73-3.89-6-7-11-7z\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <circle cx=\"12\" cy=\"12\" r=\"3\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #getIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"6\" cy=\"6\" r=\"3\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <circle cx=\"18\" cy=\"18\" r=\"3\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <path d=\"m8.5 8.5 7 7\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n <path d=\"m13 11 2 2-2 2\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #settingsIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"3\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <path d=\"M12 1v6m0 6v10M3.34 7l5.2 3M15.46 14l5.2 3M3.34 17l5.2-3M15.46 10l5.2-3\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #defaultIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #scheduleIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <polyline points=\"12,6 12,12 16,14\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #refreshIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M21 3v5h-5\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M3 21v-5h5\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #checkCircleIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <path d=\"m9 12 2 2 4-4\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #cancelCircleIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <path d=\"m15 9-6 6m0-6 6 6\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #errorIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #queueIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M3 12h18m-9-9v18\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n <rect x=\"2\" y=\"3\" width=\"20\" height=\"6\" rx=\"1\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" fill=\"none\" />\r\n <rect x=\"2\" y=\"15\" width=\"20\" height=\"6\" rx=\"1\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" fill=\"none\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #arrowUpIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"m18 15-6-6-6 6\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #arrowDownIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"m6 9 6 6 6-6\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #toggleOnIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <rect x=\"1\" y=\"5\" width=\"22\" height=\"14\" rx=\"7\" [attr.fill]=\"iconColor\" />\r\n <circle cx=\"16\" cy=\"12\" r=\"3\" fill=\"white\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #toggleOffIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <rect x=\"1\" y=\"5\" width=\"22\" height=\"14\" rx=\"7\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" fill=\"none\" />\r\n <circle cx=\"8\" cy=\"12\" r=\"3\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" fill=\"none\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #searchIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"11\" cy=\"11\" r=\"8\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"m21 21-4.35-4.35\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #uploadIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <polyline points=\"7,10 12,5 17,10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"15\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #pendingActionsIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <polyline points=\"12,6 12,12 16,14\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M8 2v4M16 2v4\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #playCircleIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <polygon points=\"10,8 16,12 10,16\" [attr.fill]=\"iconColor\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #defaultIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"2\" [attr.fill]=\"iconColor\" />\r\n </svg>\r\n</ng-template>", styles: [":host .icon-button{display:inline-flex;align-items:center;justify-content:center;border:none;outline:none;background:transparent;border-radius:50%;min-width:0;min-height:0;padding:4px;cursor:pointer;transition:background .2s;box-sizing:border-box}:host .icon-button:focus-visible{outline:2px solid #1976d2;outline-offset:2px}:host .icon-button:hover:not(:disabled){background:#1976d214}:host .icon-button:active:not(:disabled){background:#1976d229}:host .icon-button:disabled{opacity:.5;cursor:default;background:transparent}:host .icon-span,:host .icon-button{margin-left:4px;margin-right:4px}\n"] }]
130
- }], propDecorators: { icon: [{
131
- type: Input
132
- }], color: [{
133
- type: Input
134
- }], customColor: [{
135
- type: Input
136
- }], disabled: [{
137
- type: Input
138
- }], size: [{
139
- type: Input
140
- }], button: [{
141
- type: Input
142
- }], type: [{
143
- type: Input
144
- }], iconClick: [{
145
- type: Output
146
- }], checkIconTpl: [{
147
- type: ViewChild,
148
- args: ['checkIcon']
149
- }], cancelIconTpl: [{
150
- type: ViewChild,
151
- args: ['cancelIcon']
152
- }], editIconTpl: [{
153
- type: ViewChild,
154
- args: ['editIcon']
155
- }], deleteIconTpl: [{
156
- type: ViewChild,
157
- args: ['deleteIcon']
158
- }], addIconTpl: [{
159
- type: ViewChild,
160
- args: ['addIcon']
161
- }], viewIconTpl: [{
162
- type: ViewChild,
163
- args: ['viewIcon']
164
- }], getIconTpl: [{
165
- type: ViewChild,
166
- args: ['getIcon']
167
- }], settingsIconTpl: [{
168
- type: ViewChild,
169
- args: ['settingsIcon']
170
- }], defaultIconTpl: [{
171
- type: ViewChild,
172
- args: ['defaultIcon', { static: true }]
173
- }], scheduleIconTpl: [{
174
- type: ViewChild,
175
- args: ['scheduleIcon']
176
- }], refreshIconTpl: [{
177
- type: ViewChild,
178
- args: ['refreshIcon']
179
- }], checkCircleIconTpl: [{
180
- type: ViewChild,
181
- args: ['checkCircleIcon']
182
- }], cancelCircleIconTpl: [{
183
- type: ViewChild,
184
- args: ['cancelCircleIcon']
185
- }], errorIconTpl: [{
186
- type: ViewChild,
187
- args: ['errorIcon']
188
- }], queueIconTpl: [{
189
- type: ViewChild,
190
- args: ['queueIcon']
191
- }], arrowUpIconTpl: [{
192
- type: ViewChild,
193
- args: ['arrowUpIcon']
194
- }], arrowDownIconTpl: [{
195
- type: ViewChild,
196
- args: ['arrowDownIcon']
197
- }], toggleOnIconTpl: [{
198
- type: ViewChild,
199
- args: ['toggleOnIcon']
200
- }], toggleOffIconTpl: [{
201
- type: ViewChild,
202
- args: ['toggleOffIcon']
203
- }], searchIconTpl: [{
204
- type: ViewChild,
205
- args: ['searchIcon']
206
- }], uploadIconTpl: [{
207
- type: ViewChild,
208
- args: ['uploadIcon']
209
- }], pendingActionsIconTpl: [{
210
- type: ViewChild,
211
- args: ['pendingActionsIcon']
212
- }], playCircleIconTpl: [{
213
- type: ViewChild,
214
- args: ['playCircleIcon']
215
- }] } });
216
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NyYy9saWIvaWNvbi9pY29uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc3JjL2xpYi9pY29uL2ljb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixTQUFTLEVBR1QsaUJBQWlCLEVBQ2pCLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQW1DL0MsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixvQ0FBb0M7SUFDcEMsSUFBSSxRQUFRO1FBQ1YsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN4QixDQUFDO0lBQ1EsSUFBSSxHQUFTLE9BQU8sQ0FBQztJQUNyQixLQUFLLEdBQVUsU0FBUyxDQUFDO0lBQ3pCLFdBQVcsQ0FBVSxDQUFDLCtCQUErQjtJQUNyRCxRQUFRLEdBQWEsS0FBSyxDQUFDO0lBQzNCLElBQUksR0FBRyxDQUFDLENBQUM7SUFDbEIsOEVBQThFO0lBQ3RFLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFFUCxHQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDakQsSUFDSSxNQUFNLENBQUMsR0FBd0M7UUFDakQseUZBQXlGO1FBQ3pGLElBQUksQ0FBQyxPQUFPO1lBQ1YsR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssU0FBUyxJQUFJLEdBQUcsS0FBSyxLQUFLLElBQUksR0FBRyxLQUFLLE9BQU8sQ0FBQztJQUMxRSxDQUFDO0lBQ0QsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFDRCxpREFBaUQ7SUFDeEMs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akMsU0FBUzt1QkFBQyxVQUFVO2dCQUNJLGFBQWE7c0JBQXJDLFNBQVM7dUJBQUMsWUFBWTtnQkFDRCxVQUFVO3NCQUEvQixTQUFTO3VCQUFDLFNBQVM7Z0JBQ0csV0FBVztzQkFBakMsU0FBUzt1QkFBQyxVQUFVO2dCQUNDLFVBQVU7c0JBQS9CLFNBQVM7dUJBQUMsU0FBUztnQkFDTyxlQUFlO3NCQUF6QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ21CLGNBQWM7c0JBQXpELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDZixlQUFlO3NCQUF6QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ0MsY0FBYztzQkFBdkMsU0FBUzt1QkFBQyxhQUFhO2dCQUNNLGtCQUFrQjtzQkFBL0MsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBQ0csbUJBQW1CO3NCQUFqRCxTQUFTO3VCQUFDLGtCQUFrQjtnQkFDTCxZQUFZO3NCQUFuQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ0UsWUFBWTtzQkFBbkMsU0FBUzt1QkFBQyxXQUFXO2dCQUNJLGNBQWM7c0JBQXZDLFNBQVM7dUJBQUMsYUFBYTtnQkFDSSxnQkFBZ0I7c0JBQTNDLFNBQVM7dUJBQUMsZUFBZTtnQkFDQyxlQUFlO3NCQUF6QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ0csZ0JBQWdCO3NCQUEzQyxTQUFTO3VCQUFDLGVBQWU7Z0JBQ0QsYUFBYTtzQkFBckMsU0FBUzt1QkFBQyxZQUFZO2dCQUNFLGFBQWE7c0JBQXJDLFNBQVM7dUJBQUMsWUFBWTtnQkFDVSxxQkFBcUI7c0JBQXJELFNBQVM7dUJBQUMsb0JBQW9CO2dCQUNGLGlCQUFpQjtzQkFBN0MsU0FBUzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIFZpZXdDaGlsZCxcclxuICBUZW1wbGF0ZVJlZixcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIGluamVjdCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbmV4cG9ydCB0eXBlIEljb24gPVxyXG4gIHwgJ2NoZWNrJ1xyXG4gIHwgJ2NhbmNlbCdcclxuICB8ICdlZGl0J1xyXG4gIHwgJ2RlbGV0ZSdcclxuICB8ICdhZGQnXHJcbiAgfCAndmlldydcclxuICB8ICdnZXQnXHJcbiAgfCAnc2V0dGluZ3MnXHJcbiAgfCAnc2NoZWR1bGUnXHJcbiAgfCAncmVmcmVzaCdcclxuICB8ICdjaGVja19jaXJjbGUnXHJcbiAgfCAnY2FuY2VsX2NpcmNsZSdcclxuICB8ICdlcnJvcidcclxuICB8ICdxdWV1ZSdcclxuICB8ICdhcnJvd191cCdcclxuICB8ICdhcnJvd19kb3duJ1xyXG4gIHwgJ3RvZ2dsZV9vbidcclxuICB8ICd0b2dnbGVfb2ZmJ1xyXG4gIHwgJ3NlYXJjaCdcclxuICB8ICd1cGxvYWQnXHJcbiAgfCAncGVuZGluZ19hY3Rpb25zJ1xyXG4gIHwgJ3BsYXlfY2lyY2xlJztcclxuZXhwb3J0IHR5cGUgQ29sb3IgPSAncHJpbWFyeScgfCAnc2Vjb25kYXJ5JyB8ICd3YXJuJyB8ICdzdWNjZXNzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXHJcbiAgc2VsZWN0b3I6ICdjODAtaWNvbicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vaWNvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaWNvbi5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQzgwSWNvbkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gIC8qKiBUYW1hw7FvIGJhc2UgZGVsIGljb25vIChlbiBweCkgKi9cclxuICBnZXQgaWNvblNpemUoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiAyNCAqIHRoaXMuc2l6ZTtcclxuICB9XHJcbiAgQElucHV0KCkgaWNvbjogSWNvbiA9ICdjaGVjayc7XHJcbiAgQElucHV0KCkgY29sb3I6IENvbG9yID0gJ3ByaW1hcnknO1xyXG4gIEBJbnB1dCgpIGN1c3RvbUNvbG9yPzogc3RyaW5nOyAvLyBDb2xvciBwZXJzb25hbGl6YWRvIG9wY2lvbmFsXHJcbiAgQElucHV0KCkgZGlzYWJsZWQ/OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2l6ZSA9IDE7XHJcbiAgLyoqIFNpIGVzIHRydWUsIHJlbmRlcml6YSBjb21vIDxidXR0b24+IG5hdGl2bywgc2kgZXMgZmFsc2Ugc29sbyBjb21vIGljb25vICovXHJcbiAgcHJpdmF0ZSBfYnV0dG9uID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuICBASW5wdXQoKVxyXG4gIHNldCBidXR0b24odmFsOiBib29sZWFuIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xyXG4gICAgLy8gUGVybWl0ZSB1c2FyICdidXR0b24nIGEgc2VjYXMsIGN1YWxxdWllciB2YWxvciBxdWUgbm8gc2VhIG51bGwvdW5kZWZpbmVkL2ZhbHNlIGVzIHRydWVcclxuICAgIHRoaXMuX2J1dHRvbiA9XHJcbiAgICAgIHZhbCAhPT0gbnVsbCAmJiB2YWwgIT09IHVuZGVmaW5lZCAmJiB2YWwgIT09IGZhbHNlICYmIHZhbCAhPT0gJ2ZhbHNlJztcclxuICB9XHJcbiAgZ2V0IGJ1dHRvbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9idXR0b247XHJcbiAgfVxyXG4gIC8qKiBUaXBvIGRlIGJvdMOzbiBuYXRpdm8gKHNvbG8gc2kgYnV0dG9uPXRydWUpICovXHJcbiAgQElucHV0KCkgdHlwZTogJ2J1dHRvbicgfCAnc3VibWl0JyB8ICdyZXNldCcgPSAnYnV0dG9uJztcclxuICAvKiogT3V0cHV0IHBhcmEgY2xpY2sgKHNvbG8gc2kgYnV0dG9uPXRydWUpICovXHJcbiAgQE91dHB1dCgpIGljb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NoZWNrSWNvbicpIGNoZWNrSWNvblRwbCE6IFRlbXBsYXRlUmVmPHVua25vd24+O1xyXG4gIEBWaWV3Q2hpbGQoJ2NhbmNlbEljb24nKSBjYW5jZWxJY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgnZWRpdEljb24nKSBlZGl0SWNvblRwbCE6IFRlbXBsYXRlUmVmPHVua25vd24+O1xyXG4gIEBWaWV3Q2hpbGQoJ2RlbGV0ZUljb24nKSBkZWxldGVJY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgnYWRkSWNvbicpIGFkZEljb25UcGwhOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcclxuICBAVmlld0NoaWxkKCd2aWV3SWNvbicpIHZpZXdJY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgnZ2V0SWNvbicpIGdldEljb25UcGwhOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcclxuICBAVmlld0NoaWxkKCdzZXR0aW5nc0ljb24nKSBzZXR0aW5nc0ljb25UcGwhOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcclxuICBAVmlld0NoaWxkKCdkZWZhdWx0SWNvbicsIHsgc3RhdGljOiB0cnVlIH0pIGRlZmF1bHRJY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgnc2NoZWR1bGVJY29uJykgc2NoZWR1bGVJY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgncmVmcmVzaEljb24nKSByZWZyZXNoSWNvblRwbCE6IFRlbXBsYXRlUmVmPHVua25vd24+O1xyXG4gIEBWaWV3Q2hpbGQoJ2NoZWNrQ2lyY2xlSWNvbicpIGNoZWNrQ2lyY2xlSWNvblRwbCE6IFRlbXBsYXRlUmVmPHVua25vd24+O1xyXG4gIEBWaWV3Q2hpbGQoJ2NhbmNlbENpcmNsZUljb24nKSBjYW5jZWxDaXJjbGVJY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgnZXJyb3JJY29uJykgZXJyb3JJY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgncXVldWVJY29uJykgcXVldWVJY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgnYXJyb3dVcEljb24nKSBhcnJvd1VwSWNvblRwbCE6IFRlbXBsYXRlUmVmPHVua25vd24+O1xyXG4gIEBWaWV3Q2hpbGQoJ2Fycm93RG93bkljb24nKSBhcnJvd0Rvd25JY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgndG9nZ2xlT25JY29uJykgdG9nZ2xlT25JY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgndG9nZ2xlT2ZmSWNvbicpIHRvZ2dsZU9mZkljb25UcGwhOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcclxuICBAVmlld0NoaWxkKCdzZWFyY2hJY29uJykgc2VhcmNoSWNvblRwbCE6IFRlbXBsYXRlUmVmPHVua25vd24+O1xyXG4gIEBWaWV3Q2hpbGQoJ3VwbG9hZEljb24nKSB1cGxvYWRJY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgncGVuZGluZ0FjdGlvbnNJY29uJykgcGVuZGluZ0FjdGlvbnNJY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgncGxheUNpcmNsZUljb24nKSBwbGF5Q2lyY2xlSWNvblRwbCE6IFRlbXBsYXRlUmVmPHVua25vd24+O1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGljb25NYXAgPSBuZXcgTWFwPEljb24sIFRlbXBsYXRlUmVmPHVua25vd24+PigpO1xyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmluaXRpYWxpemVCYXNpY0ljb25zKCk7XHJcbiAgICB0aGlzLmluaXRpYWxpemVTdGF0ZUljb25zKCk7XHJcbiAgICB0aGlzLmluaXRpYWxpemVVdGlsaXR5SWNvbnMoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUJhc2ljSWNvbnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmljb25NYXAuc2V0KCdjaGVjaycsIHRoaXMuY2hlY2tJY29uVHBsKTtcclxuICAgIHRoaXMuaWNvbk1hcC5zZXQoJ2NhbmNlbCcsIHRoaXMuY2FuY2VsSWNvblRwbCk7XHJcbiAgICB0aGlzLmljb25NYXAuc2V0KCdlZGl0JywgdGhpcy5lZGl0SWNvblRwbCk7XHJcbiAgICB0aGlzLmljb25NYXAuc2V0KCdkZWxldGUnLCB0aGlzLmRlbGV0ZUljb25UcGwpO1xyXG4gICAgdGhpcy5pY29uTWFwLnNldCgnYWRkJywgdGhpcy5hZGRJY29uVHBsKTtcclxuICAgIHRoaXMuaWNvbk1hcC5zZXQoJ3ZpZXcnLCB0aGlzLnZpZXdJY29uVHBsKTtcclxuICAgIHRoaXMuaWNvbk1hcC5zZXQoJ2dldCcsIHRoaXMuZ2V0SWNvblRwbCk7XHJcbiAgICB0aGlzLmljb25NYXAuc2V0KCdzZXR0aW5ncycsIHRoaXMuc2V0dGluZ3NJY29uVHBsKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVN0YXRlSWNvbnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmljb25NYXAuc2V0KCdjaGVja19jaXJjbGUnLCB0aGlzLmNoZWNrQ2lyY2xlSWNvblRwbCk7XHJcbiAgICB0aGlzLmljb25NYXAuc2V0KCdjYW5jZWxfY2lyY2xlJywgdGhpcy5jYW5jZWxDaXJjbGVJY29uVHBsKTtcclxuICAgIHRoaXMuaWNvbk1hcC5zZXQoJ2Vycm9yJywgdGhpcy5lcnJvckljb25UcGwpO1xyXG4gICAgdGhpcy5pY29uTWFwLnNldCgndG9nZ2xlX29uJywgdGhpcy50b2dnbGVPbkljb25UcGwpO1xyXG4gICAgdGhpcy5pY29uTWFwLnNldCgndG9nZ2xlX29mZicsIHRoaXMudG9nZ2xlT2ZmSWNvblRwbCk7XHJcbiAgICB0aGlzLmljb25NYXAuc2V0KCdwZW5kaW5nX2FjdGlvbnMnLCB0aGlzLnBlbmRpbmdBY3Rpb25zSWNvblRwbCk7XHJcbiAgICB0aGlzLmljb25NYXAuc2V0KCdwbGF5X2NpcmNsZScsIHRoaXMucGxheUNpcmNsZUljb25UcGwpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0aWFsaXplVXRpbGl0eUljb25zKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pY29uTWFwLnNldCgnc2NoZWR1bGUnLCB0aGlzLnNjaGVkdWxlSWNvblRwbCk7XHJcbiAgICB0aGlzLmljb25NYXAuc2V0KCdyZWZyZXNoJywgdGhpcy5yZWZyZXNoSWNvblRwbCk7XHJcbiAgICB0aGlzLmljb25NYXAuc2V0KCdxdWV1ZScsIHRoaXMucXVldWVJY29uVHBsKTtcclxuICAgIHRoaXMuaWNvbk1hcC5zZXQoJ2Fycm93X3VwJywgdGhpcy5hcnJvd1VwSWNvblRwbCk7XHJcbiAgICB0aGlzLmljb25NYXAuc2V0KCdhcnJvd19kb3duJywgdGhpcy5hcnJvd0Rvd25JY29uVHBsKTtcclxuICAgIHRoaXMuaWNvbk1hcC5zZXQoJ3NlYXJjaCcsIHRoaXMuc2VhcmNoSWNvblRwbCk7XHJcbiAgICB0aGlzLmljb25NYXAuc2V0KCd1cGxvYWQnLCB0aGlzLnVwbG9hZEljb25UcGwpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SWNvblRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcclxuICAgIHJldHVybiB0aGlzLmljb25NYXAuZ2V0KHRoaXMuaWNvbikgPz8gdGhpcy5kZWZhdWx0SWNvblRwbDtcclxuICB9XHJcblxyXG4gIGdldCBpY29uQ29sb3IoKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHJldHVybiAnI2JkYmRiZCc7IC8vIGdyaXMgZGVzaGFiaWxpdGFkb1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFNpIGhheSB1biBjb2xvciBwZXJzb25hbGl6YWRvLCB1c2FybG8gc2llbXByZSAoZXhjZXB0byBzaSBlc3TDoSBkaXNhYmxlZClcclxuICAgIGlmICh0aGlzLmN1c3RvbUNvbG9yKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmN1c3RvbUNvbG9yO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFBhbGV0YSBzaW1wbGlmaWNhZGEgLSBzb2xvIGNvbG9yZXMgYmFzZVxyXG4gICAgY29uc3QgYmFzZUNvbG9yczogUmVjb3JkPENvbG9yLCBzdHJpbmc+ID0ge1xyXG4gICAgICBwcmltYXJ5OiAnIzAwMzc3NWM4JyxcclxuICAgICAgc2Vjb25kYXJ5OiAnIzZiNzI4MCcsXHJcbiAgICAgIHdhcm46ICcjZTUzOTM1JyxcclxuICAgICAgc3VjY2VzczogJyM0Y2FmNTAnLFxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gYmFzZUNvbG9yc1t0aGlzLmNvbG9yXSA/PyAnIzIyMic7XHJcbiAgfVxyXG5cclxuICBnZXQgaWNvbk9wYWNpdHkoKTogbnVtYmVyIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHJldHVybiAwLjU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQXBsaWNhciBvcGFjaXR5IDAuNyBjdWFuZG8gZXMgY29sb3Igc2Vjb25kYXJ5IG8gd2FybiAoc2luIGN1c3RvbUNvbG9yKVxyXG4gICAgaWYgKFxyXG4gICAgICAodGhpcy5jb2xvciA9PT0gJ3NlY29uZGFyeScgfHwgdGhpcy5jb2xvciA9PT0gJ3dhcm4nKSAmJlxyXG4gICAgICAhdGhpcy5jdXN0b21Db2xvclxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiAwLjc7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIDE7XHJcbiAgfSAvLyBIYW5kbGVyIHBhcmEgY2xpY2sgZW4gbW9kbyBidXR0b25cclxuICBvbkJ1dHRvbkNsaWNrKGV2ZW50OiBFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuaWNvbkNsaWNrLmVtaXQoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCJAaWYgKGJ1dHRvbikge1xyXG48YnV0dG9uIHR5cGU9XCJ7e3R5cGV9fVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIGNsYXNzPVwiaWNvbi1idXR0b25cIiBbc3R5bGUud2lkdGgucHhdPVwiaWNvblNpemUgKyA4XCIgW3N0eWxlLmhlaWdodC5weF09XCJpY29uU2l6ZSArIDhcIiAoY2xpY2spPVwib25CdXR0b25DbGljaygkZXZlbnQpXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImdldEljb25UZW1wbGF0ZSgpXCI+PC9uZy1jb250YWluZXI+XHJcbjwvYnV0dG9uPlxyXG59IEBlbHNlIHtcclxuPHNwYW4gY2xhc3M9XCJpY29uLXNwYW5cIiBbc3R5bGUud2lkdGgucHhdPVwiaWNvblNpemVcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cImljb25TaXplXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImdldEljb25UZW1wbGF0ZSgpXCI+PC9uZy1jb250YWluZXI+XHJcbjwvc3Bhbj5cclxufVxyXG5cclxuPG5nLXRlbXBsYXRlICNjaGVja0ljb24+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5XCI+XHJcbiAgICA8cGF0aCBkPVwiTTUgMTNsNCA0TDE5IDdcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjY2FuY2VsSWNvbj5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHlcIj5cclxuICAgIDxwYXRoIGQ9XCJNNiA2bDEyIDEyTTYgMThMMTggNlwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjZWRpdEljb24+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5XCI+XHJcbiAgICA8cmVjdCB4PVwiNVwiIHk9XCIxOVwiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIyXCIgcng9XCIxXCIgW2F0dHIuZmlsbF09XCJpY29uQ29sb3JcIiAvPlxyXG4gICAgPHBhdGggZD1cIk0xNi41IDMuNWEyLjEyMSAyLjEyMSAwIDAgMSAzIDNMNyAxOWwtNCAxIDEtNCAxMi41LTEyLjV6XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI2RlbGV0ZUljb24+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5XCI+XHJcbiAgICA8cGF0aCBkPVwiTTYgMTlhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWN0g2djEyek0xOSA0aC0zLjVsLTEtMWgtNWwtMSAxSDV2MmgxNFY0elwiIFthdHRyLmZpbGxdPVwiaWNvbkNvbG9yXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNhZGRJY29uPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemVcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eVwiPlxyXG4gICAgPHBhdGggZD1cIk0xMiA1djE0TTUgMTJoMTRcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3ZpZXdJY29uPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemVcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eVwiPlxyXG4gICAgPHBhdGggZD1cIk0xMiA1QzcgNSAyLjczIDguMTEgMSAxMmMxLjczIDMuODkgNiA3IDExIDdzOS4yNy0zLjExIDExLTdjLTEuNzMtMy44OS02LTctMTEtN3pcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjNcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjZ2V0SWNvbj5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHlcIj5cclxuICAgIDxjaXJjbGUgY3g9XCI2XCIgY3k9XCI2XCIgcj1cIjNcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIC8+XHJcbiAgICA8Y2lyY2xlIGN4PVwiMThcIiBjeT1cIjE4XCIgcj1cIjNcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIC8+XHJcbiAgICA8cGF0aCBkPVwibTguNSA4LjUgNyA3XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgLz5cclxuICAgIDxwYXRoIGQ9XCJtMTMgMTEgMiAyLTIgMlwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNzZXR0aW5nc0ljb24+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5XCI+XHJcbiAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjNcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIC8+XHJcbiAgICA8cGF0aCBkPVwiTTEyIDF2Nm0wIDZ2MTBNMy4zNCA3bDUuMiAzTTE1LjQ2IDE0bDUuMiAzTTMuMzQgMTdsNS4yLTNNMTUuNDYgMTBsNS4yLTNcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI2RlZmF1bHRJY29uPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemVcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eVwiPlxyXG4gICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNzY2hlZHVsZUljb24+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5XCI+XHJcbiAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjEwXCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiAvPlxyXG4gICAgPHBvbHlsaW5lIHBvaW50cz1cIjEyLDYgMTIsMTIgMTYsMTRcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjcmVmcmVzaEljb24+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5XCI+XHJcbiAgICA8cGF0aCBkPVwiTTMgMTJhOSA5IDAgMCAxIDktOSA5Ljc1IDkuNzUgMCAwIDEgNi43NCAyLjc0TDIxIDhcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICA8cGF0aCBkPVwiTTIxIDN2NWgtNVwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgIDxwYXRoIGQ9XCJNMjEgMTJhOSA5IDAgMCAxLTkgOSA5Ljc1IDkuNzUgMCAwIDEtNi43NC0yLjc0TDMgMTZcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICA8cGF0aCBkPVwiTTMgMjF2LTVoNVwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNjaGVja0NpcmNsZUljb24+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5XCI+XHJcbiAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjEwXCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiAvPlxyXG4gICAgPHBhdGggZD1cIm05IDEyIDIgMiA0LTRcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjY2FuY2VsQ2lyY2xlSWNvbj5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHlcIj5cclxuICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTBcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIC8+XHJcbiAgICA8cGF0aCBkPVwibTE1IDktNiA2bTAtNiA2IDZcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjZXJyb3JJY29uPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemVcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eVwiPlxyXG4gICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgLz5cclxuICAgIDxsaW5lIHgxPVwiMTVcIiB5MT1cIjlcIiB4Mj1cIjlcIiB5Mj1cIjE1XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgLz5cclxuICAgIDxsaW5lIHgxPVwiOVwiIHkxPVwiOVwiIHgyPVwiMTVcIiB5Mj1cIjE1XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNxdWV1ZUljb24+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5XCI+XHJcbiAgICA8cGF0aCBkPVwiTTMgMTJoMThtLTktOXYxOFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIC8+XHJcbiAgICA8cmVjdCB4PVwiMlwiIHk9XCIzXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjZcIiByeD1cIjFcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgIDxyZWN0IHg9XCIyXCIgeT1cIjE1XCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjZcIiByeD1cIjFcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGZpbGw9XCJub25lXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNhcnJvd1VwSWNvbj5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHlcIj5cclxuICAgIDxwYXRoIGQ9XCJtMTggMTUtNi02LTYgNlwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNhcnJvd0Rvd25JY29uPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemVcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eVwiPlxyXG4gICAgPHBhdGggZD1cIm02IDkgNiA2IDYtNlwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICN0b2dnbGVPbkljb24+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5XCI+XHJcbiAgICA8cmVjdCB4PVwiMVwiIHk9XCI1XCIgd2lkdGg9XCIyMlwiIGhlaWdodD1cIjE0XCIgcng9XCI3XCIgW2F0dHIuZmlsbF09XCJpY29uQ29sb3JcIiAvPlxyXG4gICAgPGNpcmNsZSBjeD1cIjE2XCIgY3k9XCIxMlwiIHI9XCIzXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICN0b2dnbGVPZmZJY29uPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemVcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eVwiPlxyXG4gICAgPHJlY3QgeD1cIjFcIiB5PVwiNVwiIHdpZHRoPVwiMjJcIiBoZWlnaHQ9XCIxNFwiIHJ4PVwiN1wiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgPGNpcmNsZSBjeD1cIjhcIiBjeT1cIjEyXCIgcj1cIjNcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGZpbGw9XCJub25lXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNzZWFyY2hJY29uPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemVcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eVwiPlxyXG4gICAgPGNpcmNsZSBjeD1cIjExXCIgY3k9XCIxMVwiIHI9XCI4XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgPHBhdGggZD1cIm0yMSAyMS00LjM1LTQuMzVcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjdXBsb2FkSWNvbj5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHlcIj5cclxuICAgIDxwYXRoIGQ9XCJNMjEgMTV2NGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnYtNFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgIDxwb2x5bGluZSBwb2ludHM9XCI3LDEwIDEyLDUgMTcsMTBcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICA8bGluZSB4MT1cIjEyXCIgeTE9XCI1XCIgeDI9XCIxMlwiIHkyPVwiMTVcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3BlbmRpbmdBY3Rpb25zSWNvbj5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHlcIj5cclxuICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTBcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICA8cG9seWxpbmUgcG9pbnRzPVwiMTIsNiAxMiwxMiAxNiwxNFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgIDxwYXRoIGQ9XCJNOCAydjRNMTYgMnY0XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3BsYXlDaXJjbGVJY29uPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemVcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eVwiPlxyXG4gICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgIDxwb2x5Z29uIHBvaW50cz1cIjEwLDggMTYsMTIgMTAsMTZcIiBbYXR0ci5maWxsXT1cImljb25Db2xvclwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEljb24+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5XCI+XHJcbiAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjJcIiBbYXR0ci5maWxsXT1cImljb25Db2xvclwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+Il19
79
+ args: [{ selector: 'c80-icon', standalone: true, imports: [CommonModule], template: "@if (button()) {\r\n<button [type]=\"type()\" [disabled]=\"disabled()\" class=\"icon-button\" [style.width.px]=\"iconSize() + 8\" [style.height.px]=\"iconSize() + 8\" (click)=\"onButtonClick($event)\">\r\n <ng-container *ngTemplateOutlet=\"iconTemplate() || default\"></ng-container>\r\n</button>\r\n} @else {\r\n<span class=\"icon-span\" [style.width.px]=\"iconSize()\" [style.height.px]=\"iconSize()\">\r\n <ng-container *ngTemplateOutlet=\"iconTemplate() || default\"></ng-container>\r\n</span>\r\n}\r\n\r\n<ng-template #check>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"M5 13l4 4L19 7\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #cancel>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"M6 6l12 12M6 18L18 6\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #edit>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <rect x=\"5\" y=\"19\" width=\"14\" height=\"2\" rx=\"1\" [attr.fill]=\"iconColor()\" />\r\n <path d=\"M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4 12.5-12.5z\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #delete>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"M6 19a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\" [attr.fill]=\"iconColor()\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #add>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"M12 5v14M5 12h14\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #view>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"M12 5C7 5 2.73 8.11 1 12c1.73 3.89 6 7 11 7s9.27-3.11 11-7c-1.73-3.89-6-7-11-7z\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <circle cx=\"12\" cy=\"12\" r=\"3\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #get>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"6\" cy=\"6\" r=\"3\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n <circle cx=\"18\" cy=\"18\" r=\"3\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n <path d=\"m8.5 8.5 7 7\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n <path d=\"m13 11 2 2-2 2\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #settings>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"12\" cy=\"12\" r=\"3\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n <path d=\"M12 1v6m0 6v10M3.34 7l5.2 3M15.46 14l5.2 3M3.34 17l5.2-3M15.46 10l5.2-3\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #default>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #schedule>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n <polyline points=\"12,6 12,12 16,14\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #refresh>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M21 3v5h-5\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M3 21v-5h5\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #checkCircle>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n <path d=\"m9 12 2 2 4-4\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #cancelCircle>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n <path d=\"m15 9-6 6m0-6 6 6\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #error>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" />\r\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #queue>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"M3 12h18m-9-9v18\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n <rect x=\"2\" y=\"3\" width=\"20\" height=\"6\" rx=\"1\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" fill=\"none\" />\r\n <rect x=\"2\" y=\"15\" width=\"20\" height=\"6\" rx=\"1\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" fill=\"none\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #arrowUp>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"m18 15-6-6-6 6\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #arrowDown>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"m6 9 6 6 6-6\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #toggleOn>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <rect x=\"1\" y=\"5\" width=\"22\" height=\"14\" rx=\"7\" [attr.fill]=\"iconColor()\" />\r\n <circle cx=\"16\" cy=\"12\" r=\"3\" fill=\"white\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #toggleOff>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <rect x=\"1\" y=\"5\" width=\"22\" height=\"14\" rx=\"7\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" fill=\"none\" />\r\n <circle cx=\"8\" cy=\"12\" r=\"3\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" fill=\"none\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #search>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"11\" cy=\"11\" r=\"8\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"m21 21-4.35-4.35\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #upload>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <polyline points=\"7,10 12,5 17,10\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"15\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #pendingActions>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <polyline points=\"12,6 12,12 16,14\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M8 2v4M16 2v4\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #playCircle>\r\n <svg [attr.width]=\"iconSize()\" [attr.height]=\"iconSize()\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity()\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor()\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <polygon points=\"10,8 16,12 10,16\" [attr.fill]=\"iconColor()\" />\r\n </svg>\r\n</ng-template>", styles: [":host .icon-button{display:inline-flex;align-items:center;justify-content:center;border:none;outline:none;background:transparent;border-radius:50%;min-width:0;min-height:0;padding:4px;cursor:pointer;transition:background .2s;box-sizing:border-box}:host .icon-button:focus-visible{outline:2px solid #1976d2;outline-offset:2px}:host .icon-button:hover:not(:disabled){background:#1976d214}:host .icon-button:active:not(:disabled){background:#1976d229}:host .icon-button:disabled{opacity:.5;cursor:default;background:transparent}:host .icon-span,:host .icon-button{margin-left:4px;margin-right:4px}\n"] }]
80
+ }] });
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NyYy9saWIvaWNvbi9pY29uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc3JjL2xpYi9pY29uL2ljb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFFBQVEsRUFDUixTQUFTLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsc0JBQXNCLEVBQ3RCLGVBQWUsRUFDZixjQUFjLEdBQ2YsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBVzFCLE1BQU0sT0FBTyxnQkFBZ0I7SUFDbEIsSUFBSSxHQUFHLEtBQUssQ0FBVyxPQUFPLENBQUMsQ0FBQztJQUNoQyxLQUFLLEdBQUcsS0FBSyxDQUFZLFNBQVMsQ0FBQyxDQUFDO0lBQ3BDLFdBQVcsR0FBRyxLQUFLLENBQXFCLFNBQVMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEIsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoQixNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRTtRQUM3QixTQUFTLEVBQUUsQ0FBQyxHQUF3QyxFQUFFLEVBQUUsQ0FDdEQsR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssU0FBUyxJQUFJLEdBQUcsS0FBSyxLQUFLLElBQUksR0FBRyxLQUFLLE9BQU87S0FDeEUsQ0FBQyxDQUFDO0lBQ00sSUFBSSxHQUFHLEtBQUssQ0FBYSxRQUFRLENBQUMsQ0FBQztJQUVuQyxTQUFTLEdBQUcs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dUIsVUFBVSxDQUFDLENBQUM7SUFDdkQsU0FBUyxHQUFHLFNBQVMsQ0FBdUIsV0FBVyxDQUFDLENBQUM7SUFDekQsTUFBTSxHQUFHLFNBQVMsQ0FBdUIsUUFBUSxDQUFDLENBQUM7SUFDbkQsTUFBTSxHQUFHLFNBQVMsQ0FBdUIsUUFBUSxDQUFDLENBQUM7SUFDbkQsY0FBYyxHQUFHLFNBQVMsQ0FBdUIsZ0JBQWdCLENBQUMsQ0FBQztJQUNuRSxVQUFVLEdBQUcsU0FBUyxDQUF1QixZQUFZLENBQUMsQ0FBQztJQUMzRCxPQUFPLEdBQUcsU0FBUyxDQUF1QixTQUFTLENBQUMsQ0FBQztJQUU5RCxhQUFhLENBQUMsS0FBWTtRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7d0dBbEZVLGdCQUFnQjs0RkFBaEIsZ0JBQWdCLHd2R0M1QjdCLGtyVkFvSmMsNm9CRDVIRixZQUFZOzs0RkFJWCxnQkFBZ0I7a0JBUjVCLFNBQVM7K0JBRUUsVUFBVSxjQUNSLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgY29tcHV0ZWQsXG4gIHZpZXdDaGlsZCxcbiAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEJBU0VfSUNPTl9DT0xPUlMsXG4gIERJU0FCTEVEX0NPTE9SLFxuICBERUZBVUxUX0lDT05fQ09MT1IsXG4gIERJU0FCTEVEX09QQUNJVFksXG4gIFNFQ09OREFSWV9XQVJOX09QQUNJVFksXG4gIERFRkFVTFRfT1BBQ0lUWSxcbiAgQkFTRV9JQ09OX1NJWkUsXG59IGZyb20gJy4vaWNvbi5jb25zdGFudHMnO1xuaW1wb3J0IHsgSWNvblR5cGUsIENvbG9yVHlwZSwgQnV0dG9uVHlwZSB9IGZyb20gJy4vaWNvbi50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2M4MC1pY29uJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9pY29uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaWNvbi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDODBJY29uQ29tcG9uZW50IHtcbiAgcmVhZG9ubHkgaWNvbiA9IGlucHV0PEljb25UeXBlPignY2hlY2snKTtcbiAgcmVhZG9ubHkgY29sb3IgPSBpbnB1dDxDb2xvclR5cGU+KCdwcmltYXJ5Jyk7XG4gIHJlYWRvbmx5IGN1c3RvbUNvbG9yID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBkaXNhYmxlZCA9IGlucHV0KGZhbHNlKTtcbiAgcmVhZG9ubHkgc2l6ZSA9IGlucHV0KDEpO1xuICByZWFkb25seSBidXR0b24gPSBpbnB1dChmYWxzZSwge1xuICAgIHRyYW5zZm9ybTogKHZhbDogYm9vbGVhbiB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpID0+XG4gICAgICB2YWwgIT09IG51bGwgJiYgdmFsICE9PSB1bmRlZmluZWQgJiYgdmFsICE9PSBmYWxzZSAmJiB2YWwgIT09ICdmYWxzZScsXG4gIH0pO1xuICByZWFkb25seSB0eXBlID0gaW5wdXQ8QnV0dG9uVHlwZT4oJ2J1dHRvbicpO1xuXG4gIHJlYWRvbmx5IGljb25DbGljayA9IG91dHB1dDxFdmVudD4oKTtcblxuICByZWFkb25seSBpY29uU2l6ZSA9IGNvbXB1dGVkKCgpID0+IEJBU0VfSUNPTl9TSVpFICogdGhpcy5zaXplKCkpO1xuXG4gIHJlYWRvbmx5IGljb25Db2xvciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCgpKSB7XG4gICAgICByZXR1cm4gRElTQUJMRURfQ09MT1I7XG4gICAgfVxuXG4gICAgY29uc3QgY3VzdG9tID0gdGhpcy5jdXN0b21Db2xvcigpO1xuICAgIGlmIChjdXN0b20pIHtcbiAgICAgIHJldHVybiBjdXN0b207XG4gICAgfVxuXG4gICAgcmV0dXJuIEJBU0VfSUNPTl9DT0xPUlNbdGhpcy5jb2xvcigpXSA/PyBERUZBVUxUX0lDT05fQ09MT1I7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGljb25PcGFjaXR5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKCkpIHtcbiAgICAgIHJldHVybiBESVNBQkxFRF9PUEFDSVRZO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRDb2xvciA9IHRoaXMuY29sb3IoKTtcbiAgICBjb25zdCBoYXNDdXN0b21Db2xvciA9IHRoaXMuY3VzdG9tQ29sb3IoKSAhPT0gdW5kZWZpbmVkO1xuXG4gICAgaWYgKFxuICAgICAgKGN1cnJlbnRDb2xvciA9PT0gJ3NlY29uZGFyeScgfHwgY3VycmVudENvbG9yID09PSAnd2FybicpICYmXG4gICAgICAhaGFzQ3VzdG9tQ29sb3JcbiAgICApIHtcbiAgICAgIHJldHVybiBTRUNPTkRBUllfV0FSTl9PUEFDSVRZO1xuICAgIH1cblxuICAgIHJldHVybiBERUZBVUxUX09QQUNJVFk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGljb25UZW1wbGF0ZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBpY29uTmFtZSA9IHRoaXMuaWNvbigpO1xuICAgIGNvbnN0IHRlbXBsYXRlTmFtZSA9IGljb25OYW1lLnJlcGxhY2VBbGwoL18oW2Etel0pL2csIChfLCBsZXR0ZXIpID0+IGxldHRlci50b1VwcGVyQ2FzZSgpKTtcbiAgICBjb25zdCB2aWV3Q2hpbGRTaWduYWwgPSB0aGlzW3RlbXBsYXRlTmFtZSBhcyBrZXlvZiB0aGlzXTtcbiAgICByZXR1cm4gdHlwZW9mIHZpZXdDaGlsZFNpZ25hbCA9PT0gJ2Z1bmN0aW9uJyA/IHZpZXdDaGlsZFNpZ25hbCgpIDogdW5kZWZpbmVkO1xuICB9KTtcblxuICByZWFkb25seSBjaGVjayA9IHZpZXdDaGlsZDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oJ2NoZWNrJyk7XG4gIHJlYWRvbmx5IGNhbmNlbCA9IHZpZXdDaGlsZDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oJ2NhbmNlbCcpO1xuICByZWFkb25seSBlZGl0ID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPHVua25vd24+PignZWRpdCcpO1xuICByZWFkb25seSBkZWxldGUgPSB2aWV3Q2hpbGQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCdkZWxldGUnKTtcbiAgcmVhZG9ubHkgYWRkID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPHVua25vd24+PignYWRkJyk7XG4gIHJlYWRvbmx5IHZpZXcgPSB2aWV3Q2hpbGQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCd2aWV3Jyk7XG4gIHJlYWRvbmx5IGdldCA9IHZpZXdDaGlsZDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oJ2dldCcpO1xuICByZWFkb25seSBzZXR0aW5ncyA9IHZpZXdDaGlsZDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oJ3NldHRpbmdzJyk7XG4gIHJlYWRvbmx5IHNjaGVkdWxlID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPHVua25vd24+Pignc2NoZWR1bGUnKTtcbiAgcmVhZG9ubHkgcmVmcmVzaCA9IHZpZXdDaGlsZDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oJ3JlZnJlc2gnKTtcbiAgcmVhZG9ubHkgY2hlY2tDaXJjbGUgPSB2aWV3Q2hpbGQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCdjaGVja0NpcmNsZScpO1xuICByZWFkb25seSBjYW5jZWxDaXJjbGUgPSB2aWV3Q2hpbGQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCdjYW5jZWxDaXJjbGUnKTtcbiAgcmVhZG9ubHkgZXJyb3IgPSB2aWV3Q2hpbGQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCdlcnJvcicpO1xuICByZWFkb25seSBxdWV1ZSA9IHZpZXdDaGlsZDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oJ3F1ZXVlJyk7XG4gIHJlYWRvbmx5IGFycm93VXAgPSB2aWV3Q2hpbGQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCdhcnJvd1VwJyk7XG4gIHJlYWRvbmx5IGFycm93RG93biA9IHZpZXdDaGlsZDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oJ2Fycm93RG93bicpO1xuICByZWFkb25seSB0b2dnbGVPbiA9IHZpZXdDaGlsZDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oJ3RvZ2dsZU9uJyk7XG4gIHJlYWRvbmx5IHRvZ2dsZU9mZiA9IHZpZXdDaGlsZDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oJ3RvZ2dsZU9mZicpO1xuICByZWFkb25seSBzZWFyY2ggPSB2aWV3Q2hpbGQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCdzZWFyY2gnKTtcbiAgcmVhZG9ubHkgdXBsb2FkID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPHVua25vd24+PigndXBsb2FkJyk7XG4gIHJlYWRvbmx5IHBlbmRpbmdBY3Rpb25zID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPHVua25vd24+PigncGVuZGluZ0FjdGlvbnMnKTtcbiAgcmVhZG9ubHkgcGxheUNpcmNsZSA9IHZpZXdDaGlsZDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oJ3BsYXlDaXJjbGUnKTtcbiAgcmVhZG9ubHkgZGVmYXVsdCA9IHZpZXdDaGlsZDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oJ2RlZmF1bHQnKTtcblxuICBvbkJ1dHRvbkNsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCgpKSB7XG4gICAgICB0aGlzLmljb25DbGljay5lbWl0KGV2ZW50KTtcbiAgICB9XG4gIH1cbn1cbiIsIkBpZiAoYnV0dG9uKCkpIHtcclxuPGJ1dHRvbiBbdHlwZV09XCJ0eXBlKClcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiIGNsYXNzPVwiaWNvbi1idXR0b25cIiBbc3R5bGUud2lkdGgucHhdPVwiaWNvblNpemUoKSArIDhcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cImljb25TaXplKCkgKyA4XCIgKGNsaWNrKT1cIm9uQnV0dG9uQ2xpY2soJGV2ZW50KVwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpY29uVGVtcGxhdGUoKSB8fCBkZWZhdWx0XCI+PC9uZy1jb250YWluZXI+XHJcbjwvYnV0dG9uPlxyXG59IEBlbHNlIHtcclxuPHNwYW4gY2xhc3M9XCJpY29uLXNwYW5cIiBbc3R5bGUud2lkdGgucHhdPVwiaWNvblNpemUoKVwiIFtzdHlsZS5oZWlnaHQucHhdPVwiaWNvblNpemUoKVwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpY29uVGVtcGxhdGUoKSB8fCBkZWZhdWx0XCI+PC9uZy1jb250YWluZXI+XHJcbjwvc3Bhbj5cclxufVxyXG5cclxuPG5nLXRlbXBsYXRlICNjaGVjaz5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplKClcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemUoKVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5KClcIj5cclxuICAgIDxwYXRoIGQ9XCJNNSAxM2w0IDRMMTkgN1wiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI2NhbmNlbD5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplKClcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemUoKVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5KClcIj5cclxuICAgIDxwYXRoIGQ9XCJNNiA2bDEyIDEyTTYgMThMMTggNlwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNlZGl0PlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemUoKVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZSgpXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHkoKVwiPlxyXG4gICAgPHJlY3QgeD1cIjVcIiB5PVwiMTlcIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMlwiIHJ4PVwiMVwiIFthdHRyLmZpbGxdPVwiaWNvbkNvbG9yKClcIiAvPlxyXG4gICAgPHBhdGggZD1cIk0xNi41IDMuNWEyLjEyMSAyLjEyMSAwIDAgMSAzIDNMNyAxOWwtNCAxIDEtNCAxMi41LTEyLjV6XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjZGVsZXRlPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemUoKVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZSgpXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHkoKVwiPlxyXG4gICAgPHBhdGggZD1cIk02IDE5YTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjdINnYxMnpNMTkgNGgtMy41bC0xLTFoLTVsLTEgMUg1djJoMTRWNHpcIiBbYXR0ci5maWxsXT1cImljb25Db2xvcigpXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNhZGQ+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZSgpXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplKClcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eSgpXCI+XHJcbiAgICA8cGF0aCBkPVwiTTEyIDV2MTRNNSAxMmgxNFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICN2aWV3PlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemUoKVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZSgpXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHkoKVwiPlxyXG4gICAgPHBhdGggZD1cIk0xMiA1QzcgNSAyLjczIDguMTEgMSAxMmMxLjczIDMuODkgNiA3IDExIDdzOS4yNy0zLjExIDExLTdjLTEuNzMtMy44OS02LTctMTEtN3pcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiM1wiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI2dldD5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplKClcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemUoKVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5KClcIj5cclxuICAgIDxjaXJjbGUgY3g9XCI2XCIgY3k9XCI2XCIgcj1cIjNcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgLz5cclxuICAgIDxjaXJjbGUgY3g9XCIxOFwiIGN5PVwiMThcIiByPVwiM1wiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiAvPlxyXG4gICAgPHBhdGggZD1cIm04LjUgOC41IDcgN1wiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgLz5cclxuICAgIDxwYXRoIGQ9XCJtMTMgMTEgMiAyLTIgMlwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3NldHRpbmdzPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemUoKVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZSgpXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHkoKVwiPlxyXG4gICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIzXCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIC8+XHJcbiAgICA8cGF0aCBkPVwiTTEyIDF2Nm0wIDZ2MTBNMy4zNCA3bDUuMiAzTTE1LjQ2IDE0bDUuMiAzTTMuMzQgMTdsNS4yLTNNMTUuNDYgMTBsNS4yLTNcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdD5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplKClcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemUoKVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5KClcIj5cclxuICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTBcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNzY2hlZHVsZT5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplKClcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemUoKVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5KClcIj5cclxuICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTBcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgLz5cclxuICAgIDxwb2x5bGluZSBwb2ludHM9XCIxMiw2IDEyLDEyIDE2LDE0XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjcmVmcmVzaD5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplKClcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemUoKVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5KClcIj5cclxuICAgIDxwYXRoIGQ9XCJNMyAxMmE5IDkgMCAwIDEgOS05IDkuNzUgOS43NSAwIDAgMSA2Ljc0IDIuNzRMMjEgOFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgPHBhdGggZD1cIk0yMSAzdjVoLTVcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgIDxwYXRoIGQ9XCJNMjEgMTJhOSA5IDAgMCAxLTkgOSA5Ljc1IDkuNzUgMCAwIDEtNi43NC0yLjc0TDMgMTZcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgIDxwYXRoIGQ9XCJNMyAyMXYtNWg1XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjY2hlY2tDaXJjbGU+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZSgpXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplKClcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eSgpXCI+XHJcbiAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjEwXCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIC8+XHJcbiAgICA8cGF0aCBkPVwibTkgMTIgMiAyIDQtNFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI2NhbmNlbENpcmNsZT5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplKClcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemUoKVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5KClcIj5cclxuICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTBcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgLz5cclxuICAgIDxwYXRoIGQ9XCJtMTUgOS02IDZtMC02IDYgNlwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI2Vycm9yPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemUoKVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZSgpXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHkoKVwiPlxyXG4gICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiAvPlxyXG4gICAgPGxpbmUgeDE9XCIxNVwiIHkxPVwiOVwiIHgyPVwiOVwiIHkyPVwiMTVcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIC8+XHJcbiAgICA8bGluZSB4MT1cIjlcIiB5MT1cIjlcIiB4Mj1cIjE1XCIgeTI9XCIxNVwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNxdWV1ZT5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplKClcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemUoKVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5KClcIj5cclxuICAgIDxwYXRoIGQ9XCJNMyAxMmgxOG0tOS05djE4XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiAvPlxyXG4gICAgPHJlY3QgeD1cIjJcIiB5PVwiM1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCI2XCIgcng9XCIxXCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgIDxyZWN0IHg9XCIyXCIgeT1cIjE1XCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjZcIiByeD1cIjFcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI2Fycm93VXA+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZSgpXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplKClcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eSgpXCI+XHJcbiAgICA8cGF0aCBkPVwibTE4IDE1LTYtNi02IDZcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNhcnJvd0Rvd24+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZSgpXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplKClcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eSgpXCI+XHJcbiAgICA8cGF0aCBkPVwibTYgOSA2IDYgNi02XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjdG9nZ2xlT24+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZSgpXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplKClcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eSgpXCI+XHJcbiAgICA8cmVjdCB4PVwiMVwiIHk9XCI1XCIgd2lkdGg9XCIyMlwiIGhlaWdodD1cIjE0XCIgcng9XCI3XCIgW2F0dHIuZmlsbF09XCJpY29uQ29sb3IoKVwiIC8+XHJcbiAgICA8Y2lyY2xlIGN4PVwiMTZcIiBjeT1cIjEyXCIgcj1cIjNcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3RvZ2dsZU9mZj5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplKClcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemUoKVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5KClcIj5cclxuICAgIDxyZWN0IHg9XCIxXCIgeT1cIjVcIiB3aWR0aD1cIjIyXCIgaGVpZ2h0PVwiMTRcIiByeD1cIjdcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgPGNpcmNsZSBjeD1cIjhcIiBjeT1cIjEyXCIgcj1cIjNcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3NlYXJjaD5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplKClcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemUoKVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5KClcIj5cclxuICAgIDxjaXJjbGUgY3g9XCIxMVwiIGN5PVwiMTFcIiByPVwiOFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgPHBhdGggZD1cIm0yMSAyMS00LjM1LTQuMzVcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICN1cGxvYWQ+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZSgpXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplKClcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eSgpXCI+XHJcbiAgICA8cGF0aCBkPVwiTTIxIDE1djRhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJ2LTRcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgIDxwb2x5bGluZSBwb2ludHM9XCI3LDEwIDEyLDUgMTcsMTBcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgIDxsaW5lIHgxPVwiMTJcIiB5MT1cIjVcIiB4Mj1cIjEyXCIgeTI9XCIxNVwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNwZW5kaW5nQWN0aW9ucz5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplKClcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemUoKVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5KClcIj5cclxuICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTBcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgIDxwb2x5bGluZSBwb2ludHM9XCIxMiw2IDEyLDEyIDE2LDE0XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICA8cGF0aCBkPVwiTTggMnY0TTE2IDJ2NFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3BsYXlDaXJjbGU+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZSgpXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplKClcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eSgpXCI+XHJcbiAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjEwXCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICA8cG9seWdvbiBwb2ludHM9XCIxMCw4IDE2LDEyIDEwLDE2XCIgW2F0dHIuZmlsbF09XCJpY29uQ29sb3IoKVwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+Il19
@@ -0,0 +1,38 @@
1
+ export const ICON_NAMES = [
2
+ 'default',
3
+ 'check',
4
+ 'cancel',
5
+ 'edit',
6
+ 'delete',
7
+ 'add',
8
+ 'view',
9
+ 'get',
10
+ 'settings',
11
+ 'schedule',
12
+ 'refresh',
13
+ 'checkCircle',
14
+ 'cancelCircle',
15
+ 'error',
16
+ 'queue',
17
+ 'arrowUp',
18
+ 'arrowDown',
19
+ 'toggleOn',
20
+ 'toggleOff',
21
+ 'search',
22
+ 'upload',
23
+ 'pendingActions',
24
+ 'playCircle',
25
+ ];
26
+ export const BASE_ICON_COLORS = {
27
+ primary: '#003775c8',
28
+ secondary: '#6b7280',
29
+ warn: '#e53935',
30
+ success: '#4caf50',
31
+ };
32
+ export const DISABLED_COLOR = '#bdbdbd';
33
+ export const DEFAULT_ICON_COLOR = '#222';
34
+ export const DISABLED_OPACITY = 0.5;
35
+ export const SECONDARY_WARN_OPACITY = 0.7;
36
+ export const DEFAULT_OPACITY = 1;
37
+ export const BASE_ICON_SIZE = 24;
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NyYy9saWIvaWNvbi9pY29uLmNvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDeEIsU0FBUztJQUNULE9BQU87SUFDUCxRQUFRO0lBQ1IsTUFBTTtJQUNOLFFBQVE7SUFDUixLQUFLO0lBQ0wsTUFBTTtJQUNOLEtBQUs7SUFDTCxVQUFVO0lBQ1YsVUFBVTtJQUNWLFNBQVM7SUFDVCxhQUFhO0lBQ2IsY0FBYztJQUNkLE9BQU87SUFDUCxPQUFPO0lBQ1AsU0FBUztJQUNULFdBQVc7SUFDWCxVQUFVO0lBQ1YsV0FBVztJQUNYLFFBQVE7SUFDUixRQUFRO0lBQ1IsZ0JBQWdCO0lBQ2hCLFlBQVk7Q0FDSixDQUFDO0FBRVgsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQXdDO0lBQ25FLE9BQU8sRUFBRSxXQUFXO0lBQ3BCLFNBQVMsRUFBRSxTQUFTO0lBQ3BCLElBQUksRUFBRSxTQUFTO0lBQ2YsT0FBTyxFQUFFLFNBQVM7Q0FDbkIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUM7QUFDeEMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDO0FBQ3pDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FBQztBQUNwQyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxHQUFHLENBQUM7QUFDMUMsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsQ0FBQztBQUNqQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sb3JUeXBlIH0gZnJvbSAnLi9pY29uLnR5cGVzJztcblxuZXhwb3J0IGNvbnN0IElDT05fTkFNRVMgPSBbXG4gICdkZWZhdWx0JyxcbiAgJ2NoZWNrJyxcbiAgJ2NhbmNlbCcsXG4gICdlZGl0JyxcbiAgJ2RlbGV0ZScsXG4gICdhZGQnLFxuICAndmlldycsXG4gICdnZXQnLFxuICAnc2V0dGluZ3MnLFxuICAnc2NoZWR1bGUnLFxuICAncmVmcmVzaCcsXG4gICdjaGVja0NpcmNsZScsXG4gICdjYW5jZWxDaXJjbGUnLFxuICAnZXJyb3InLFxuICAncXVldWUnLFxuICAnYXJyb3dVcCcsXG4gICdhcnJvd0Rvd24nLFxuICAndG9nZ2xlT24nLFxuICAndG9nZ2xlT2ZmJyxcbiAgJ3NlYXJjaCcsXG4gICd1cGxvYWQnLFxuICAncGVuZGluZ0FjdGlvbnMnLFxuICAncGxheUNpcmNsZScsXG5dIGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgQkFTRV9JQ09OX0NPTE9SUzogUmVhZG9ubHk8UmVjb3JkPENvbG9yVHlwZSwgc3RyaW5nPj4gPSB7XG4gIHByaW1hcnk6ICcjMDAzNzc1YzgnLFxuICBzZWNvbmRhcnk6ICcjNmI3MjgwJyxcbiAgd2FybjogJyNlNTM5MzUnLFxuICBzdWNjZXNzOiAnIzRjYWY1MCcsXG59O1xuXG5leHBvcnQgY29uc3QgRElTQUJMRURfQ09MT1IgPSAnI2JkYmRiZCc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9JQ09OX0NPTE9SID0gJyMyMjInO1xuZXhwb3J0IGNvbnN0IERJU0FCTEVEX09QQUNJVFkgPSAwLjU7XG5leHBvcnQgY29uc3QgU0VDT05EQVJZX1dBUk5fT1BBQ0lUWSA9IDAuNztcbmV4cG9ydCBjb25zdCBERUZBVUxUX09QQUNJVFkgPSAxO1xuZXhwb3J0IGNvbnN0IEJBU0VfSUNPTl9TSVpFID0gMjQ7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc3JjL2xpYi9pY29uL2ljb24udHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElDT05fTkFNRVMgfSBmcm9tICcuL2ljb24uY29uc3RhbnRzJztcblxuZXhwb3J0IHR5cGUgSWNvblR5cGUgPSAodHlwZW9mIElDT05fTkFNRVMpW251bWJlcl07XG5leHBvcnQgdHlwZSBDb2xvclR5cGUgPSAncHJpbWFyeScgfCAnc2Vjb25kYXJ5JyB8ICd3YXJuJyB8ICdzdWNjZXNzJztcbmV4cG9ydCB0eXBlIEJ1dHRvblR5cGUgPSAnYnV0dG9uJyB8ICdzdWJtaXQnIHwgJ3Jlc2V0JztcbiJdfQ==
@@ -1,2 +1,4 @@
1
1
  export * from './icon.component';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NyYy9saWIvaWNvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9pY29uLmNvbXBvbmVudCc7XG4iXX0=
2
+ export * from './icon.types';
3
+ export * from './icon.constants';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NyYy9saWIvaWNvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ljb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vaWNvbi50eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2ljb24uY29uc3RhbnRzJztcbiJdfQ==