@cauca-911/material 18.0.0 → 18.0.1-beta2

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.
Files changed (81) hide show
  1. package/esm2022/lib/buttons/base-button.mjs +33 -0
  2. package/esm2022/lib/buttons/basic-button/basic-button.component.mjs +64 -0
  3. package/esm2022/lib/buttons/flat-button/flat-button.component.mjs +64 -0
  4. package/esm2022/lib/buttons/icon-button/icon-button.component.mjs +28 -0
  5. package/esm2022/lib/buttons/menu-item/menu-item.component.mjs +68 -0
  6. package/esm2022/lib/buttons/raised-button/raised-button.component.mjs +64 -0
  7. package/esm2022/lib/buttons/stroked-button/stroked-button.component.mjs +71 -0
  8. package/esm2022/lib/cauca-material.component.mjs +6 -5
  9. package/esm2022/lib/cauca-material.module.mjs +14 -52
  10. package/esm2022/lib/cauca-menu-sidebar/cauca-menu-sidebar.component.mjs +14 -10
  11. package/esm2022/lib/cauca-menu-vertical/cauca-menu-vertical.component.mjs +16 -8
  12. package/esm2022/lib/cauca-simple-dialog/cauca-simple-dialog.component.mjs +14 -10
  13. package/esm2022/lib/cauca-slideshow/cauca-slideshow.component.mjs +6 -6
  14. package/esm2022/lib/dialogs/alert-dialog/alert-dialog.component.mjs +57 -0
  15. package/esm2022/lib/dialogs/confirm-dialog/confirm-dialog.component.mjs +69 -0
  16. package/esm2022/lib/dialogs/services/dialog.service.mjs +52 -0
  17. package/esm2022/lib/inputs/cauca-date-time-picker/cauca-date-time-picker.component.mjs +137 -0
  18. package/esm2022/lib/{cauca-date-time-picker → inputs/cauca-date-time-picker}/components/desktop-time-picker/desktop-time-picker.component.mjs +2 -2
  19. package/esm2022/lib/inputs/cauca-date-time-picker/components/dialog-date-time-picker/dialog-date-time-picker.component.mjs +358 -0
  20. package/esm2022/lib/inputs/cauca-date-time-picker/components/mobile-time-picker/mobile-time-picker.component.mjs +74 -0
  21. package/esm2022/lib/inputs/cauca-date-time-picker/models/dialog-date-time-picker-data.mjs +2 -0
  22. package/esm2022/lib/inputs/cauca-input-file/cauca-input-file.component.mjs +147 -0
  23. package/esm2022/lib/inputs/cauca-input-multiple-langue/cauca-input-multiple-langue.component.mjs +99 -0
  24. package/esm2022/lib/inputs/password/models/password-validation.mjs +13 -0
  25. package/esm2022/lib/inputs/password/password-criteria/password-criteria.component.mjs +49 -0
  26. package/esm2022/lib/inputs/password/password-criteria-viewer/password-criteria-viewer.component.mjs +29 -0
  27. package/esm2022/lib/inputs/password/password-input/password-input.component.mjs +112 -0
  28. package/esm2022/lib/inputs/password/password-selection/password-selection.component.mjs +112 -0
  29. package/esm2022/lib/inputs/password/validators/password-validator.mjs +19 -0
  30. package/esm2022/lib/inputs/select-with-search/select-with-search.component.mjs +157 -0
  31. package/esm2022/lib/layout/expandable-panel/expandable-panel.component.mjs +75 -0
  32. package/esm2022/lib/layout/menu-expandable-panel/menu-expandable-panel.component.mjs +148 -0
  33. package/esm2022/lib/layout/menu-expandable-panel-item/menu-expandable-panel-item.component.mjs +50 -0
  34. package/esm2022/lib/layout/page-title/page-title.component.mjs +86 -0
  35. package/esm2022/lib/notifications/snack-bar/snack-bar.component.mjs +75 -0
  36. package/esm2022/public-api.mjs +21 -4
  37. package/fesm2022/cauca-911-material.mjs +1988 -648
  38. package/fesm2022/cauca-911-material.mjs.map +1 -1
  39. package/lib/buttons/base-button.d.ts +21 -0
  40. package/lib/buttons/basic-button/basic-button.component.d.ts +6 -0
  41. package/lib/buttons/flat-button/flat-button.component.d.ts +6 -0
  42. package/lib/buttons/icon-button/icon-button.component.d.ts +6 -0
  43. package/lib/buttons/menu-item/menu-item.component.d.ts +9 -0
  44. package/lib/buttons/raised-button/raised-button.component.d.ts +6 -0
  45. package/lib/buttons/stroked-button/stroked-button.component.d.ts +6 -0
  46. package/lib/cauca-material.component.d.ts +1 -1
  47. package/lib/cauca-material.module.d.ts +4 -14
  48. package/lib/cauca-menu-sidebar/cauca-menu-sidebar.component.d.ts +1 -1
  49. package/lib/cauca-menu-vertical/cauca-menu-vertical.component.d.ts +1 -1
  50. package/lib/cauca-simple-dialog/cauca-simple-dialog.component.d.ts +1 -1
  51. package/lib/cauca-slideshow/cauca-slideshow.component.d.ts +1 -1
  52. package/lib/dialogs/alert-dialog/alert-dialog.component.d.ts +18 -0
  53. package/lib/dialogs/confirm-dialog/confirm-dialog.component.d.ts +17 -0
  54. package/lib/dialogs/services/dialog.service.d.ts +26 -0
  55. package/lib/{cauca-input-file → inputs/cauca-input-file}/cauca-input-file.component.d.ts +1 -1
  56. package/lib/{cauca-input-multiple-langue → inputs/cauca-input-multiple-langue}/cauca-input-multiple-langue.component.d.ts +1 -1
  57. package/lib/inputs/password/models/password-validation.d.ts +9 -0
  58. package/lib/inputs/password/password-criteria/password-criteria.component.d.ts +9 -0
  59. package/lib/inputs/password/password-criteria-viewer/password-criteria-viewer.component.d.ts +9 -0
  60. package/lib/inputs/password/password-input/password-input.component.d.ts +25 -0
  61. package/lib/inputs/password/password-selection/password-selection.component.d.ts +20 -0
  62. package/lib/inputs/password/validators/password-validator.d.ts +9 -0
  63. package/lib/inputs/select-with-search/select-with-search.component.d.ts +32 -0
  64. package/lib/layout/expandable-panel/expandable-panel.component.d.ts +10 -0
  65. package/lib/layout/menu-expandable-panel/menu-expandable-panel.component.d.ts +29 -0
  66. package/lib/layout/menu-expandable-panel-item/menu-expandable-panel-item.component.d.ts +13 -0
  67. package/lib/layout/page-title/page-title.component.d.ts +11 -0
  68. package/lib/notifications/snack-bar/snack-bar.component.d.ts +17 -0
  69. package/package.json +3 -2
  70. package/public-api.d.ts +20 -3
  71. package/esm2022/lib/cauca-date-time-picker/cauca-date-time-picker.component.mjs +0 -137
  72. package/esm2022/lib/cauca-date-time-picker/components/dialog-date-time-picker/dialog-date-time-picker.component.mjs +0 -357
  73. package/esm2022/lib/cauca-date-time-picker/components/mobile-time-picker/mobile-time-picker.component.mjs +0 -74
  74. package/esm2022/lib/cauca-date-time-picker/models/dialog-date-time-picker-data.mjs +0 -2
  75. package/esm2022/lib/cauca-input-file/cauca-input-file.component.mjs +0 -148
  76. package/esm2022/lib/cauca-input-multiple-langue/cauca-input-multiple-langue.component.mjs +0 -87
  77. /package/lib/{cauca-date-time-picker → inputs/cauca-date-time-picker}/cauca-date-time-picker.component.d.ts +0 -0
  78. /package/lib/{cauca-date-time-picker → inputs/cauca-date-time-picker}/components/desktop-time-picker/desktop-time-picker.component.d.ts +0 -0
  79. /package/lib/{cauca-date-time-picker → inputs/cauca-date-time-picker}/components/dialog-date-time-picker/dialog-date-time-picker.component.d.ts +0 -0
  80. /package/lib/{cauca-date-time-picker → inputs/cauca-date-time-picker}/components/mobile-time-picker/mobile-time-picker.component.d.ts +0 -0
  81. /package/lib/{cauca-date-time-picker → inputs/cauca-date-time-picker}/models/dialog-date-time-picker-data.d.ts +0 -0
@@ -1,137 +0,0 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { MatIconModule } from '@angular/material/icon';
3
- import { MatInputModule } from '@angular/material/input';
4
- import { DialogDateTimePickerComponent } from './components/dialog-date-time-picker/dialog-date-time-picker.component';
5
- import { MatButtonModule } from '@angular/material/button';
6
- import { DatePipe } from '@angular/common';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/material/dialog";
9
- import * as i2 from "@angular/common";
10
- import * as i3 from "@angular/material/button";
11
- import * as i4 from "@angular/material/icon";
12
- import * as i5 from "@angular/material/input";
13
- import * as i6 from "@angular/material/form-field";
14
- export class CaucaDateTimePickerComponent {
15
- constructor(elementRef, dialog, datePipe) {
16
- this.elementRef = elementRef;
17
- this.dialog = dialog;
18
- this.datePipe = datePipe;
19
- this.stepHours = 1;
20
- this.stepMinutes = 1;
21
- this.stepSecondes = 1;
22
- this.minimumDate = null;
23
- this.maximumDate = null;
24
- this.showSeconds = false;
25
- this.showFormat = 'yyyy/MM/dd, HH:mm';
26
- this.showClearButton = true;
27
- this.showButtonIcons = true;
28
- this.selectedChange = new EventEmitter();
29
- this.stringDate = '';
30
- }
31
- set value(value) {
32
- if (value) {
33
- this.stringDate = this.stringifyDate(value);
34
- this.selectedDate = value;
35
- }
36
- }
37
- showDialog() {
38
- const dialogRef = this.dialog.open(DialogDateTimePickerComponent, {
39
- position: this.getDialogPosition(),
40
- data: this.getDateTimePickerOptions(),
41
- });
42
- dialogRef.afterClosed().subscribe((data) => {
43
- if (data) {
44
- this.stringDate = this.stringifyDate(data.value);
45
- this.selectedDate = data.value;
46
- this.selectedChange.emit(data.value);
47
- }
48
- });
49
- }
50
- getDateTimePickerOptions() {
51
- return {
52
- selectedDate: this.selectedDate,
53
- minimumDate: this.minimumDate,
54
- maximumDate: this.maximumDate,
55
- showSeconds: this.showSeconds,
56
- showClearButton: this.showClearButton,
57
- showButtonIcons: this.showButtonIcons,
58
- step: {
59
- hours: this.stepHours,
60
- minutes: this.stepMinutes,
61
- seconds: this.stepSecondes,
62
- }
63
- };
64
- }
65
- stringifyDate(date) {
66
- return this.datePipe.transform(date, this.showFormat);
67
- }
68
- getDialogPosition() {
69
- const rect = this.elementRef.nativeElement.getBoundingClientRect();
70
- const top = rect.y + rect.height - 22;
71
- const bottom = window.innerHeight - rect.y;
72
- const minimumDialogHeight = 400;
73
- const minimumScreenSize = 800;
74
- if (window.innerHeight < minimumScreenSize || window.innerWidth < minimumScreenSize) {
75
- return null;
76
- }
77
- else if (window.innerHeight > (top + minimumDialogHeight)) {
78
- return {
79
- left: `${rect.x}px`,
80
- top: `${top}px`,
81
- };
82
- }
83
- return {
84
- left: `${rect.x}px`,
85
- bottom: `${bottom}px`,
86
- };
87
- }
88
- static { this.ɵfac = function CaucaDateTimePickerComponent_Factory(t) { return new (t || CaucaDateTimePickerComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.MatDialog), i0.ɵɵdirectiveInject(i2.DatePipe)); }; }
89
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaucaDateTimePickerComponent, selectors: [["cauca-date-time-picker"]], inputs: { stepHours: "stepHours", stepMinutes: "stepMinutes", stepSecondes: "stepSecondes", minimumDate: "minimumDate", maximumDate: "maximumDate", showSeconds: "showSeconds", showFormat: "showFormat", showClearButton: "showClearButton", showButtonIcons: "showButtonIcons", value: "value" }, outputs: { selectedChange: "selectedChange" }, standalone: true, features: [i0.ɵɵProvidersFeature([
90
- DatePipe,
91
- ]), i0.ɵɵStandaloneFeature], decls: 5, vars: 1, consts: [["matInput", "", "readonly", "readonly", 3, "value"], ["matSuffix", "", "mat-icon-button", "", 3, "click"]], template: function CaucaDateTimePickerComponent_Template(rf, ctx) { if (rf & 1) {
92
- i0.ɵɵelementStart(0, "mat-form-field");
93
- i0.ɵɵelement(1, "input", 0);
94
- i0.ɵɵelementStart(2, "button", 1);
95
- i0.ɵɵlistener("click", function CaucaDateTimePickerComponent_Template_button_click_2_listener() { return ctx.showDialog(); });
96
- i0.ɵɵelementStart(3, "mat-icon");
97
- i0.ɵɵtext(4, "calendar_month");
98
- i0.ɵɵelementEnd()()();
99
- } if (rf & 2) {
100
- i0.ɵɵadvance();
101
- i0.ɵɵproperty("value", ctx.stringDate);
102
- } }, dependencies: [MatButtonModule, i3.MatIconButton, MatIconModule, i4.MatIcon, MatInputModule, i5.MatInput, i6.MatFormField, i6.MatSuffix], styles: ["[_nghost-%COMP%]{display:block}mat-form-field[_ngcontent-%COMP%]{width:100%}"] }); }
103
- }
104
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaucaDateTimePickerComponent, [{
105
- type: Component,
106
- args: [{ selector: 'cauca-date-time-picker', standalone: true, imports: [
107
- MatButtonModule,
108
- MatIconModule,
109
- MatInputModule,
110
- ], providers: [
111
- DatePipe,
112
- ], template: "<mat-form-field>\n <input matInput [value]=\"stringDate\" readonly=\"readonly\">\n <button matSuffix mat-icon-button (click)=\"showDialog()\">\n <mat-icon>calendar_month</mat-icon>\n </button>\n</mat-form-field>", styles: [":host{display:block}mat-form-field{width:100%}\n"] }]
113
- }], () => [{ type: i0.ElementRef }, { type: i1.MatDialog }, { type: i2.DatePipe }], { stepHours: [{
114
- type: Input
115
- }], stepMinutes: [{
116
- type: Input
117
- }], stepSecondes: [{
118
- type: Input
119
- }], minimumDate: [{
120
- type: Input
121
- }], maximumDate: [{
122
- type: Input
123
- }], showSeconds: [{
124
- type: Input
125
- }], showFormat: [{
126
- type: Input
127
- }], showClearButton: [{
128
- type: Input
129
- }], showButtonIcons: [{
130
- type: Input
131
- }], selectedChange: [{
132
- type: Output
133
- }], value: [{
134
- type: Input
135
- }] }); })();
136
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaucaDateTimePickerComponent, { className: "CaucaDateTimePickerComponent", filePath: "lib\\cauca-date-time-picker\\cauca-date-time-picker.component.ts", lineNumber: 24 }); })();
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F1Y2EtZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYXVjYS1tYXRlcmlhbC9zcmMvbGliL2NhdWNhLWRhdGUtdGltZS1waWNrZXIvY2F1Y2EtZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYXVjYS1tYXRlcmlhbC9zcmMvbGliL2NhdWNhLWRhdGUtdGltZS1waWNrZXIvY2F1Y2EtZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5GLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFFdkgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7QUFnQjNDLE1BQU0sT0FBTyw0QkFBNEI7SUFnQnZDLFlBQ1UsVUFBc0IsRUFDdEIsTUFBaUIsRUFDakIsUUFBa0I7UUFGbEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFsQlosY0FBUyxHQUFHLENBQUMsQ0FBQztRQUNkLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLGdCQUFXLEdBQVMsSUFBSSxDQUFDO1FBQ3pCLGdCQUFXLEdBQVMsSUFBSSxDQUFDO1FB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QUcsR0FBRyxJQUFJO2FBQ2hCLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTztZQUNMLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUk7WUFDbkIsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFJO1NBQ3RCLENBQUM7SUFDSixDQUFDOzZGQXJGVSw0QkFBNEI7b0VBQTVCLDRCQUE0QixpYkFONUI7Z0JBQ1QsUUFBUTthQUNUO1lDbkJILHNDQUFnQjtZQUNaLDJCQUF5RDtZQUN6RCxpQ0FBeUQ7WUFBdkIseUdBQVMsZ0JBQVksSUFBQztZQUNwRCxnQ0FBVTtZQUFBLDhCQUFjO1lBRWhDLEFBREksQUFENEIsaUJBQVcsRUFDOUIsRUFDSTs7WUFKRyxjQUFvQjtZQUFwQixzQ0FBb0I7NEJEWXBDLGVBQWUsb0JBQ2YsYUFBYSxjQUNiLGNBQWM7O2lGQVFMLDRCQUE0QjtjQWR4QyxTQUFTOzJCQUNFLHdCQUF3QixjQUN0QixJQUFJLFdBQ1A7b0JBQ1AsZUFBZTtvQkFDZixhQUFhO29CQUNiLGNBQWM7aUJBQ2YsYUFDVTtvQkFDVCxRQUFRO2lCQUNUOzBGQUtlLFNBQVM7a0JBQXhCLEtBQUs7WUFDVSxXQUFXO2tCQUExQixLQUFLO1lBQ1UsWUFBWTtrQkFBM0IsS0FBSztZQUNVLFdBQVc7a0JBQTFCLEtBQUs7WUFDVSxXQUFXO2tCQUExQixLQUFLO1lBQ1UsV0FBVztrQkFBMUIsS0FBSztZQUNVLFVBQVU7a0JBQXpCLEtBQUs7WUFDVSxlQUFlO2tCQUE5QixLQUFLO1lBQ1UsZUFBZTtrQkFBOUIsS0FBSztZQUNXLGNBQWM7a0JBQTlCLE1BQU07WUFjSSxLQUFLO2tCQURmLEtBQUs7O2tGQXZCSyw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGlhbG9nUG9zaXRpb24sIE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IERpYWxvZ0RhdGVUaW1lUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2RpYWxvZy1kYXRlLXRpbWUtcGlja2VyL2RpYWxvZy1kYXRlLXRpbWUtcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaWFsb2dEYXRlVGltZVBpY2tlck9wdGlvbnMsIERpYWxvZ0RhdGVUaW1lUGlja2VyVmFsdWUgfSBmcm9tICcuL21vZGVscy9kaWFsb2ctZGF0ZS10aW1lLXBpY2tlci1kYXRhJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NhdWNhLWRhdGUtdGltZS1waWNrZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIERhdGVQaXBlLFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vY2F1Y2EtZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9jYXVjYS1kYXRlLXRpbWUtcGlja2VyLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBDYXVjYURhdGVUaW1lUGlja2VyQ29tcG9uZW50IHtcbiAgQElucHV0KCkgcHVibGljIHN0ZXBIb3VycyA9IDE7XG4gIEBJbnB1dCgpIHB1YmxpYyBzdGVwTWludXRlcyA9IDE7XG4gIEBJbnB1dCgpIHB1YmxpYyBzdGVwU2Vjb25kZXMgPSAxO1xuICBASW5wdXQoKSBwdWJsaWMgbWluaW11bURhdGU6IERhdGUgPSBudWxsO1xuICBASW5wdXQoKSBwdWJsaWMgbWF4aW11bURhdGU6IERhdGUgPSBudWxsO1xuICBASW5wdXQoKSBwdWJsaWMgc2hvd1NlY29uZHM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIHNob3dGb3JtYXQ6IHN0cmluZyA9ICd5eXl5L01NL2RkLCBISDptbSc7XG4gIEBJbnB1dCgpIHB1YmxpYyBzaG93Q2xlYXJCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgc2hvd0J1dHRvbkljb25zOiBib29sZWFuID0gdHJ1ZTtcbiAgQE91dHB1dCgpIHB1YmxpYyBzZWxlY3RlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcblxuICBwdWJsaWMgc3RyaW5nRGF0ZTogc3RyaW5nID0gJyc7XG5cbiAgcHJpdmF0ZSBzZWxlY3RlZERhdGU6IERhdGU7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlLFxuICApIHtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IERhdGUpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuc3RyaW5nRGF0ZSA9IHRoaXMuc3RyaW5naWZ5RGF0ZSh2YWx1ZSk7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzaG93RGlhbG9nKCk6IHZvaWQge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oRGlhbG9nRGF0ZVRpbWVQaWNrZXJDb21wb25lbnQsIHtcbiAgICAgIHBvc2l0aW9uOiB0aGlzLmdldERpYWxvZ1Bvc2l0aW9uKCksXG4gICAgICBkYXRhOiB0aGlzLmdldERhdGVUaW1lUGlja2VyT3B0aW9ucygpLFxuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChkYXRhOiBEaWFsb2dEYXRlVGltZVBpY2tlclZhbHVlKSA9PiB7XG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICB0aGlzLnN0cmluZ0RhdGUgPSB0aGlzLnN0cmluZ2lmeURhdGUoZGF0YS52YWx1ZSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gZGF0YS52YWx1ZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KGRhdGEudmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREYXRlVGltZVBpY2tlck9wdGlvbnMoKTogRGlhbG9nRGF0ZVRpbWVQaWNrZXJPcHRpb25zIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2VsZWN0ZWREYXRlOiB0aGlzLnNlbGVjdGVkRGF0ZSxcbiAgICAgIG1pbmltdW1EYXRlOiB0aGlzLm1pbmltdW1EYXRlLFxuICAgICAgbWF4aW11bURhdGU6IHRoaXMubWF4aW11bURhdGUsXG4gICAgICBzaG93U2Vjb25kczogdGhpcy5zaG93U2Vjb25kcyxcbiAgICAgIHNob3dDbGVhckJ1dHRvbjogdGhpcy5zaG93Q2xlYXJCdXR0b24sXG4gICAgICBzaG93QnV0dG9uSWNvbnM6IHRoaXMuc2hvd0J1dHRvbkljb25zLFxuICAgICAgc3RlcDoge1xuICAgICAgICBob3VyczogdGhpcy5zdGVwSG91cnMsXG4gICAgICAgIG1pbnV0ZXM6IHRoaXMuc3RlcE1pbnV0ZXMsXG4gICAgICAgIHNlY29uZHM6IHRoaXMuc3RlcFNlY29uZGVzLFxuICAgICAgfVxuICAgIH07XG4gIH1cbiAgcHJpdmF0ZSBzdHJpbmdpZnlEYXRlKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShkYXRlLCB0aGlzLnNob3dGb3JtYXQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREaWFsb2dQb3NpdGlvbigpOiBEaWFsb2dQb3NpdGlvbiB7XG4gICAgY29uc3QgcmVjdCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHRvcCA9IHJlY3QueSArIHJlY3QuaGVpZ2h0IC0gMjI7XG4gICAgY29uc3QgYm90dG9tID0gd2luZG93LmlubmVySGVpZ2h0IC0gcmVjdC55O1xuICAgIGNvbnN0IG1pbmltdW1EaWFsb2dIZWlnaHQgPSA0MDA7XG4gICAgY29uc3QgbWluaW11bVNjcmVlblNpemUgPSA4MDA7XG5cbiAgICBpZiAod2luZG93LmlubmVySGVpZ2h0IDwgbWluaW11bVNjcmVlblNpemUgfHwgd2luZG93LmlubmVyV2lkdGggPCBtaW5pbXVtU2NyZWVuU2l6ZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIGlmICh3aW5kb3cuaW5uZXJIZWlnaHQgPiAodG9wICsgbWluaW11bURpYWxvZ0hlaWdodCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxlZnQ6IGAke3JlY3QueH1weGAsXG4gICAgICAgIHRvcDogYCR7dG9wfXB4YCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxlZnQ6IGAke3JlY3QueH1weGAsXG4gICAgICBib3R0b206IGAke2JvdHRvbX1weGAsXG4gICAgfTtcbiAgfVxufVxuIiwiPG1hdC1mb3JtLWZpZWxkPlxuICAgIDxpbnB1dCBtYXRJbnB1dCBbdmFsdWVdPVwic3RyaW5nRGF0ZVwiIHJlYWRvbmx5PVwicmVhZG9ubHlcIj5cbiAgICA8YnV0dG9uIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInNob3dEaWFsb2coKVwiPlxuICAgICAgICA8bWF0LWljb24+Y2FsZW5kYXJfbW9udGg8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuPC9tYXQtZm9ybS1maWVsZD4iXX0=
@@ -1,357 +0,0 @@
1
- import { Component, HostListener, Inject } from '@angular/core';
2
- import { MatNativeDateModule } from '@angular/material/core';
3
- import { MatDatepickerModule } from '@angular/material/datepicker';
4
- import { MAT_DIALOG_DATA } from '@angular/material/dialog';
5
- import { MatListModule } from '@angular/material/list';
6
- import { CaucaCoreForChildModule } from '@cauca-911/core';
7
- import { MatButtonModule } from '@angular/material/button';
8
- import { MatIconModule } from '@angular/material/icon';
9
- import { CommonModule } from '@angular/common';
10
- import { MobileTimePickerComponent } from '../mobile-time-picker/mobile-time-picker.component';
11
- import { DesktopTimePickerComponent } from '../desktop-time-picker/desktop-time-picker.component';
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "@angular/material/dialog";
14
- import * as i2 from "@angular/common";
15
- import * as i3 from "@ngx-translate/core";
16
- import * as i4 from "@angular/material/button";
17
- import * as i5 from "@angular/material/datepicker";
18
- import * as i6 from "@angular/material/icon";
19
- const _c0 = (a0, a1) => ({ all: a0, someOptions: a1 });
20
- function DialogDateTimePickerComponent_div_4_Template(rf, ctx) { if (rf & 1) {
21
- const _r1 = i0.ɵɵgetCurrentView();
22
- i0.ɵɵelementStart(0, "div", 14)(1, "cauca-desktop-time-picker", 15);
23
- i0.ɵɵlistener("valueChange", function DialogDateTimePickerComponent_div_4_Template_cauca_desktop_time_picker_valueChange_1_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.hourChanged($event)); });
24
- i0.ɵɵelementEnd()();
25
- } if (rf & 2) {
26
- const ctx_r1 = i0.ɵɵnextContext();
27
- i0.ɵɵadvance();
28
- i0.ɵɵproperty("disabled", i0.ɵɵpureFunction2(3, _c0, ctx_r1.disabled.hours, ctx_r1.disabled.someHours))("options", ctx_r1.hours)("value", ctx_r1.selectedHour);
29
- } }
30
- function DialogDateTimePickerComponent_div_5_Template(rf, ctx) { if (rf & 1) {
31
- const _r3 = i0.ɵɵgetCurrentView();
32
- i0.ɵɵelementStart(0, "div", 14)(1, "cauca-mobile-time-picker", 16);
33
- i0.ɵɵlistener("valueChange", function DialogDateTimePickerComponent_div_5_Template_cauca_mobile_time_picker_valueChange_1_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.hourChanged($event)); });
34
- i0.ɵɵelementEnd()();
35
- } if (rf & 2) {
36
- const ctx_r1 = i0.ɵɵnextContext();
37
- i0.ɵɵadvance();
38
- i0.ɵɵproperty("options", ctx_r1.hours)("value", ctx_r1.selectedHour);
39
- } }
40
- function DialogDateTimePickerComponent_div_6_Template(rf, ctx) { if (rf & 1) {
41
- i0.ɵɵelementStart(0, "div", 17);
42
- i0.ɵɵtext(1, ":");
43
- i0.ɵɵelementEnd();
44
- } }
45
- function DialogDateTimePickerComponent_div_7_Template(rf, ctx) { if (rf & 1) {
46
- const _r4 = i0.ɵɵgetCurrentView();
47
- i0.ɵɵelementStart(0, "div", 18)(1, "cauca-desktop-time-picker", 15);
48
- i0.ɵɵlistener("valueChange", function DialogDateTimePickerComponent_div_7_Template_cauca_desktop_time_picker_valueChange_1_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.minuteChanged($event)); });
49
- i0.ɵɵelementEnd()();
50
- } if (rf & 2) {
51
- const ctx_r1 = i0.ɵɵnextContext();
52
- i0.ɵɵadvance();
53
- i0.ɵɵproperty("disabled", i0.ɵɵpureFunction2(3, _c0, ctx_r1.disabled.minutes, ctx_r1.disabled.someMinutes))("options", ctx_r1.minutes)("value", ctx_r1.selectedMinute);
54
- } }
55
- function DialogDateTimePickerComponent_div_8_Template(rf, ctx) { if (rf & 1) {
56
- const _r5 = i0.ɵɵgetCurrentView();
57
- i0.ɵɵelementStart(0, "div", 18)(1, "cauca-mobile-time-picker", 16);
58
- i0.ɵɵlistener("valueChange", function DialogDateTimePickerComponent_div_8_Template_cauca_mobile_time_picker_valueChange_1_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.minuteChanged($event)); });
59
- i0.ɵɵelementEnd()();
60
- } if (rf & 2) {
61
- const ctx_r1 = i0.ɵɵnextContext();
62
- i0.ɵɵadvance();
63
- i0.ɵɵproperty("options", ctx_r1.minutes)("value", ctx_r1.selectedMinute);
64
- } }
65
- function DialogDateTimePickerComponent_div_9_Template(rf, ctx) { if (rf & 1) {
66
- i0.ɵɵelementStart(0, "div", 19);
67
- i0.ɵɵtext(1, ":");
68
- i0.ɵɵelementEnd();
69
- } }
70
- function DialogDateTimePickerComponent_div_10_Template(rf, ctx) { if (rf & 1) {
71
- const _r6 = i0.ɵɵgetCurrentView();
72
- i0.ɵɵelementStart(0, "div", 20)(1, "cauca-desktop-time-picker", 15);
73
- i0.ɵɵlistener("valueChange", function DialogDateTimePickerComponent_div_10_Template_cauca_desktop_time_picker_valueChange_1_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.secondChanged($event)); });
74
- i0.ɵɵelementEnd()();
75
- } if (rf & 2) {
76
- const ctx_r1 = i0.ɵɵnextContext();
77
- i0.ɵɵadvance();
78
- i0.ɵɵproperty("disabled", i0.ɵɵpureFunction2(3, _c0, ctx_r1.disabled.seconds, ctx_r1.disabled.someSeconds))("options", ctx_r1.seconds)("value", ctx_r1.selectedSecond);
79
- } }
80
- function DialogDateTimePickerComponent_div_11_Template(rf, ctx) { if (rf & 1) {
81
- const _r7 = i0.ɵɵgetCurrentView();
82
- i0.ɵɵelementStart(0, "div", 20)(1, "cauca-mobile-time-picker", 16);
83
- i0.ɵɵlistener("valueChange", function DialogDateTimePickerComponent_div_11_Template_cauca_mobile_time_picker_valueChange_1_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.secondChanged($event)); });
84
- i0.ɵɵelementEnd()();
85
- } if (rf & 2) {
86
- const ctx_r1 = i0.ɵɵnextContext();
87
- i0.ɵɵadvance();
88
- i0.ɵɵproperty("options", ctx_r1.seconds)("value", ctx_r1.selectedSecond);
89
- } }
90
- function DialogDateTimePickerComponent_button_13_mat_icon_1_Template(rf, ctx) { if (rf & 1) {
91
- i0.ɵɵelementStart(0, "mat-icon");
92
- i0.ɵɵtext(1, "clear");
93
- i0.ɵɵelementEnd();
94
- } }
95
- function DialogDateTimePickerComponent_button_13_Template(rf, ctx) { if (rf & 1) {
96
- const _r8 = i0.ɵɵgetCurrentView();
97
- i0.ɵɵelementStart(0, "button", 11);
98
- i0.ɵɵlistener("click", function DialogDateTimePickerComponent_button_13_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.clear()); });
99
- i0.ɵɵtemplate(1, DialogDateTimePickerComponent_button_13_mat_icon_1_Template, 2, 0, "mat-icon", 12);
100
- i0.ɵɵtext(2);
101
- i0.ɵɵpipe(3, "translate");
102
- i0.ɵɵelementEnd();
103
- } if (rf & 2) {
104
- const ctx_r1 = i0.ɵɵnextContext();
105
- i0.ɵɵadvance();
106
- i0.ɵɵproperty("ngIf", ctx_r1.showButtonIcons);
107
- i0.ɵɵadvance();
108
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 2, "material.clear"), " ");
109
- } }
110
- function DialogDateTimePickerComponent_mat_icon_15_Template(rf, ctx) { if (rf & 1) {
111
- i0.ɵɵelementStart(0, "mat-icon");
112
- i0.ɵɵtext(1, "cancel");
113
- i0.ɵɵelementEnd();
114
- } }
115
- function DialogDateTimePickerComponent_mat_icon_19_Template(rf, ctx) { if (rf & 1) {
116
- i0.ɵɵelementStart(0, "mat-icon");
117
- i0.ɵɵtext(1, "check");
118
- i0.ɵɵelementEnd();
119
- } }
120
- export class DialogDateTimePickerComponent {
121
- constructor(dialogRef, options) {
122
- this.dialogRef = dialogRef;
123
- this.options = options;
124
- this.selectedHour = 0;
125
- this.selectedMinute = 0;
126
- this.selectedSecond = 0;
127
- this.initialDate = null;
128
- this.selectedDate = null;
129
- this.minimumDate = new Date();
130
- this.maximumDate = new Date();
131
- this.showSeconds = false;
132
- this.showClearButton = true;
133
- this.showButtonIcons = true;
134
- this.hours = [...Array(24).keys()];
135
- this.minutes = [...Array(60).keys()];
136
- this.seconds = [...Array(60).keys()];
137
- this.showMobileUi = false;
138
- this.disabled = {
139
- hours: true,
140
- someHours: [],
141
- minutes: true,
142
- someMinutes: [],
143
- seconds: true,
144
- someSeconds: [],
145
- };
146
- this.step = {
147
- hours: 1,
148
- minutes: 1,
149
- seconds: 1,
150
- };
151
- this.step = options.step || this.step;
152
- this.showSeconds = options.showSeconds;
153
- this.showButtonIcons = options.showButtonIcons ?? this.showButtonIcons;
154
- this.showClearButton = options.showClearButton ?? this.showClearButton;
155
- this.setListHoursMinutes();
156
- this.initialEachComponentValue(options);
157
- }
158
- ngOnInit() {
159
- this.onWindowWithChange(window.innerWidth);
160
- }
161
- onResize(event) {
162
- this.onWindowWithChange(event.target.innerWidth);
163
- }
164
- dateChanged(date) {
165
- if (date) {
166
- this.selectedDate = date;
167
- this.selectedDate.setHours(this.selectedHour);
168
- this.selectedDate.setMinutes(this.selectedMinute);
169
- this.selectedDate.setSeconds(this.selectedSecond);
170
- this.disabled.hours = false;
171
- this.disabled.someHours = this.hours.filter(hour => this.hourOfSelectedDateIsDisabled(hour));
172
- }
173
- else {
174
- this.selectedDate = null;
175
- this.disabled.hours = true;
176
- }
177
- }
178
- hourChanged(hour) {
179
- if (this.disabled.hours || this.disabled.someHours.includes(hour))
180
- return;
181
- this.selectedHour = hour;
182
- this.selectedDate.setHours(hour);
183
- this.disabled.minutes = false;
184
- this.disabled.someMinutes = this.minutes.filter(minute => this.minuteOfSelectedDateIsDisabled(minute));
185
- }
186
- minuteChanged(minute) {
187
- if (this.disabled.minutes || this.disabled.someMinutes.includes(minute))
188
- return;
189
- this.selectedMinute = minute;
190
- this.selectedDate.setMinutes(minute);
191
- this.disabled.seconds = false;
192
- this.disabled.someSeconds = this.seconds.filter(second => this.secondOfSelectedDateIsDisabled(second));
193
- }
194
- secondChanged(second) {
195
- if (this.disabled.seconds || this.disabled.someSeconds.includes(second))
196
- return;
197
- this.selectedSecond = second;
198
- this.selectedDate.setSeconds(second);
199
- }
200
- clear() {
201
- this.dialogRef.close({
202
- value: null
203
- });
204
- }
205
- cancel() {
206
- this.dialogRef.close({
207
- value: this.initialDate
208
- });
209
- }
210
- confirm() {
211
- this.dialogRef.close({
212
- value: this.selectedDate
213
- });
214
- }
215
- onWindowWithChange(width) {
216
- this.showMobileUi = width && width <= 555;
217
- }
218
- hourOfSelectedDateIsDisabled(hour) {
219
- if (this.selectedDateIsTheMinimumDate()) {
220
- return hour < this.minimumDate.getHours();
221
- }
222
- else if (this.selectedDateIsTheMaximumDate()) {
223
- return hour > this.maximumDate.getHours();
224
- }
225
- return false;
226
- }
227
- minuteOfSelectedDateIsDisabled(minute) {
228
- if (this.selectedDateIsTheMinimumDate() &&
229
- this.selectedDate.getHours() === this.minimumDate.getHours()) {
230
- return minute < this.minimumDate.getMinutes();
231
- }
232
- else if (this.selectedDateIsTheMaximumDate() &&
233
- this.selectedDate.getHours() === this.maximumDate.getHours()) {
234
- return minute > this.maximumDate.getMinutes();
235
- }
236
- return false;
237
- }
238
- secondOfSelectedDateIsDisabled(second) {
239
- if (this.selectedDateIsTheMinimumDate() &&
240
- this.selectedDate.getHours() === this.minimumDate.getHours() &&
241
- this.selectedDate.getMinutes() === this.minimumDate.getMinutes()) {
242
- return second < this.minimumDate.getSeconds();
243
- }
244
- else if (this.selectedDateIsTheMaximumDate() &&
245
- this.selectedDate.getMinutes() === this.maximumDate.getMinutes()) {
246
- return second > this.maximumDate.getSeconds();
247
- }
248
- return false;
249
- }
250
- initialEachComponentValue(options) {
251
- this.initialDate = options.selectedDate ? new Date(options.selectedDate) : null;
252
- this.minimumDate = options.minimumDate ? new Date(options.minimumDate) : null;
253
- this.maximumDate = options.maximumDate ? new Date(options.maximumDate) : null;
254
- this.selectedDate = options.selectedDate ? new Date(options.selectedDate) : new Date();
255
- this.dateChanged(options.selectedDate ? new Date(options.selectedDate) : null);
256
- this.hourChanged(options.selectedDate ? new Date(options.selectedDate).getHours() : 0);
257
- this.minuteChanged(options.selectedDate ? new Date(options.selectedDate).getMinutes() : 0);
258
- this.secondChanged(options.selectedDate ? new Date(options.selectedDate).getSeconds() : 0);
259
- }
260
- selectedDateIsTheMinimumDate() {
261
- return (this.minimumDate &&
262
- this.selectedDate.getFullYear() === this.minimumDate.getFullYear() &&
263
- this.selectedDate.getMonth() === this.minimumDate.getMonth() &&
264
- this.selectedDate.getDate() === this.minimumDate.getDate());
265
- }
266
- selectedDateIsTheMaximumDate() {
267
- return (this.maximumDate &&
268
- this.selectedDate.getFullYear() === this.maximumDate.getFullYear() &&
269
- this.selectedDate.getMonth() === this.maximumDate.getMonth() &&
270
- this.selectedDate.getDate() === this.maximumDate.getDate());
271
- }
272
- setListHoursMinutes() {
273
- this.hours = this.hours.filter(hour => hour % this.step.hours === 0);
274
- this.minutes = this.minutes.filter(minute => minute % this.step.minutes === 0);
275
- this.seconds = this.seconds.filter(seconde => seconde % this.step.seconds === 0);
276
- }
277
- static { this.ɵfac = function DialogDateTimePickerComponent_Factory(t) { return new (t || DialogDateTimePickerComponent)(i0.ɵɵdirectiveInject(i1.MatDialogRef), i0.ɵɵdirectiveInject(MAT_DIALOG_DATA)); }; }
278
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DialogDateTimePickerComponent, selectors: [["cauca-dialog-date-time-picker"]], hostBindings: function DialogDateTimePickerComponent_HostBindings(rf, ctx) { if (rf & 1) {
279
- i0.ɵɵlistener("resize", function DialogDateTimePickerComponent_resize_HostBindingHandler($event) { return ctx.onResize($event); }, false, i0.ɵɵresolveWindow);
280
- } }, standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 22, vars: 21, consts: [["mat-dialog-content", ""], [1, "date-time-picker", 3, "ngClass"], [1, "calendar"], [3, "selectedChange", "minDate", "maxDate", "selected"], ["class", "hours", 4, "ngIf"], ["class", "hour-and-minute-separator", 4, "ngIf"], ["class", "minutes", 4, "ngIf"], ["class", "minute-and-second-separator", 4, "ngIf"], ["class", "seconds", 4, "ngIf"], ["mat-dialog-actions", "", "align", "end"], ["mat-stroked-button", "", 3, "click", 4, "ngIf"], ["mat-stroked-button", "", 3, "click"], [4, "ngIf"], ["color", "primary", "mat-raised-button", "", "cdkFocusInitial", "", 3, "click"], [1, "hours"], [3, "valueChange", "disabled", "options", "value"], [3, "valueChange", "options", "value"], [1, "hour-and-minute-separator"], [1, "minutes"], [1, "minute-and-second-separator"], [1, "seconds"]], template: function DialogDateTimePickerComponent_Template(rf, ctx) { if (rf & 1) {
281
- i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "mat-calendar", 3);
282
- i0.ɵɵlistener("selectedChange", function DialogDateTimePickerComponent_Template_mat_calendar_selectedChange_3_listener($event) { return ctx.dateChanged($event); });
283
- i0.ɵɵelementEnd()();
284
- i0.ɵɵtemplate(4, DialogDateTimePickerComponent_div_4_Template, 2, 6, "div", 4)(5, DialogDateTimePickerComponent_div_5_Template, 2, 2, "div", 4)(6, DialogDateTimePickerComponent_div_6_Template, 2, 0, "div", 5)(7, DialogDateTimePickerComponent_div_7_Template, 2, 6, "div", 6)(8, DialogDateTimePickerComponent_div_8_Template, 2, 2, "div", 6)(9, DialogDateTimePickerComponent_div_9_Template, 2, 0, "div", 7)(10, DialogDateTimePickerComponent_div_10_Template, 2, 6, "div", 8)(11, DialogDateTimePickerComponent_div_11_Template, 2, 2, "div", 8);
285
- i0.ɵɵelementEnd()();
286
- i0.ɵɵelementStart(12, "div", 9);
287
- i0.ɵɵtemplate(13, DialogDateTimePickerComponent_button_13_Template, 4, 4, "button", 10);
288
- i0.ɵɵelementStart(14, "button", 11);
289
- i0.ɵɵlistener("click", function DialogDateTimePickerComponent_Template_button_click_14_listener() { return ctx.cancel(); });
290
- i0.ɵɵtemplate(15, DialogDateTimePickerComponent_mat_icon_15_Template, 2, 0, "mat-icon", 12);
291
- i0.ɵɵtext(16);
292
- i0.ɵɵpipe(17, "translate");
293
- i0.ɵɵelementEnd();
294
- i0.ɵɵelementStart(18, "button", 13);
295
- i0.ɵɵlistener("click", function DialogDateTimePickerComponent_Template_button_click_18_listener() { return ctx.confirm(); });
296
- i0.ɵɵtemplate(19, DialogDateTimePickerComponent_mat_icon_19_Template, 2, 0, "mat-icon", 12);
297
- i0.ɵɵtext(20);
298
- i0.ɵɵpipe(21, "translate");
299
- i0.ɵɵelementEnd()();
300
- } if (rf & 2) {
301
- i0.ɵɵadvance();
302
- i0.ɵɵproperty("ngClass", ctx.showSeconds ? "show-seconds" : "hide-seconds");
303
- i0.ɵɵadvance(2);
304
- i0.ɵɵproperty("minDate", ctx.minimumDate)("maxDate", ctx.maximumDate)("selected", ctx.selectedDate);
305
- i0.ɵɵadvance();
306
- i0.ɵɵproperty("ngIf", !ctx.showMobileUi);
307
- i0.ɵɵadvance();
308
- i0.ɵɵproperty("ngIf", ctx.showMobileUi);
309
- i0.ɵɵadvance();
310
- i0.ɵɵproperty("ngIf", ctx.showMobileUi);
311
- i0.ɵɵadvance();
312
- i0.ɵɵproperty("ngIf", !ctx.showMobileUi);
313
- i0.ɵɵadvance();
314
- i0.ɵɵproperty("ngIf", ctx.showMobileUi);
315
- i0.ɵɵadvance();
316
- i0.ɵɵproperty("ngIf", ctx.showSeconds && ctx.showMobileUi);
317
- i0.ɵɵadvance();
318
- i0.ɵɵproperty("ngIf", ctx.showSeconds && !ctx.showMobileUi);
319
- i0.ɵɵadvance();
320
- i0.ɵɵproperty("ngIf", ctx.showSeconds && ctx.showMobileUi);
321
- i0.ɵɵadvance(2);
322
- i0.ɵɵproperty("ngIf", ctx.showClearButton);
323
- i0.ɵɵadvance(2);
324
- i0.ɵɵproperty("ngIf", ctx.showButtonIcons);
325
- i0.ɵɵadvance();
326
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(17, 17, "material.cancel"), " ");
327
- i0.ɵɵadvance(3);
328
- i0.ɵɵproperty("ngIf", ctx.showButtonIcons);
329
- i0.ɵɵadvance();
330
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(21, 19, "material.ok"), " ");
331
- } }, dependencies: [CommonModule, i2.NgClass, i2.NgIf, CaucaCoreForChildModule, i3.TranslatePipe, MatButtonModule, i4.MatButton, MatDatepickerModule, i5.MatCalendar, MatIconModule, i6.MatIcon, MatListModule,
332
- MatNativeDateModule,
333
- MobileTimePickerComponent,
334
- DesktopTimePickerComponent], styles: ["div[mat-dialog-actions][_ngcontent-%COMP%]{padding:8px;border-top:1px solid #ccc}div[mat-dialog-actions][_ngcontent-%COMP%] button[_ngcontent-%COMP%]{margin:2px}.date-time-picker[_ngcontent-%COMP%]{display:grid;grid-template-areas:\"calendar hours minutes seconds\";height:350px;overflow:hidden;justify-content:center}.date-time-picker[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{overflow:auto;flex:1;max-width:50px;scrollbar-width:none;border-left:1px solid #ccc}.date-time-picker[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child{flex:4;max-width:290px;border-left:none}.date-time-picker[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child mat-calendar[_ngcontent-%COMP%]{width:290px;height:350px}.date-time-picker[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]::-webkit-scrollbar{display:none}.date-time-picker[_ngcontent-%COMP%] .mdc-list-item__primary-text{font-family:var(--mat-datepicker-calendar-text-font);font-size:var(--mat-datepicker-calendar-text-size)}.date-time-picker[_ngcontent-%COMP%] .mdc-list-item--activated{background-color:var(--mat-datepicker-calendar-date-selected-state-background-color)}.date-time-picker[_ngcontent-%COMP%] .mdc-list-item--activated .mdc-list-item__primary-text{color:var(--mat-datepicker-calendar-date-selected-state-text-color)}.calendar[_ngcontent-%COMP%]{grid-area:calendar}.hours[_ngcontent-%COMP%]{grid-area:hours}.minutes[_ngcontent-%COMP%]{grid-area:minutes}.seconds[_ngcontent-%COMP%]{grid-area:seconds}.hour-and-minute-separator[_ngcontent-%COMP%]{grid-area:hour-and-minute-separator;display:flex;align-items:center;justify-content:center;font-weight:700}.minute-and-second-separator[_ngcontent-%COMP%]{grid-area:minute-and-second-separator;display:flex;align-items:center;justify-content:center;font-weight:700}@media only screen and (max-width: 555px){.show-seconds[_ngcontent-%COMP%]{grid-template-areas:\"calendar calendar calendar calendar calendar calendar calendar\" \". hours hour-and-minute-separator minutes minute-and-second-separator seconds .\";grid-template-columns:auto 40px 2px 40px 2px 40px auto}.hide-seconds[_ngcontent-%COMP%]{grid-template-areas:\"calendar calendar calendar calendar calendar\" \". hours hour-and-minute-separator minutes .\";grid-template-columns:auto 40px 2px 40px auto}.date-time-picker[_ngcontent-%COMP%]{grid-template-rows:auto auto;height:450px}.date-time-picker[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{border-left:none}.date-time-picker[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:not(:first-child){height:70px}.date-time-picker[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child{overflow:initial;flex:4;max-width:290px;border-left:none}}"] }); }
335
- }
336
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DialogDateTimePickerComponent, [{
337
- type: Component,
338
- args: [{ selector: 'cauca-dialog-date-time-picker', standalone: true, imports: [
339
- CommonModule,
340
- CaucaCoreForChildModule,
341
- MatButtonModule,
342
- MatDatepickerModule,
343
- MatIconModule,
344
- MatListModule,
345
- MatNativeDateModule,
346
- MobileTimePickerComponent,
347
- DesktopTimePickerComponent
348
- ], template: "<div mat-dialog-content>\n <div [ngClass]=\"showSeconds ? 'show-seconds' : 'hide-seconds'\" class=\"date-time-picker\">\n <div class=\"calendar\">\n <mat-calendar\n [minDate]=\"minimumDate\"\n [maxDate]=\"maximumDate\"\n [selected]=\"selectedDate\"\n (selectedChange)=\"dateChanged($event)\"\n ></mat-calendar>\n </div>\n\n <div class=\"hours\" *ngIf=\"!showMobileUi\">\n <cauca-desktop-time-picker [disabled]=\"{all: disabled.hours, someOptions: disabled.someHours}\" (valueChange)=\"hourChanged($event)\" [options]=\"hours\" [value]=\"selectedHour\"/>\n </div>\n <div class=\"hours\" *ngIf=\"showMobileUi\">\n <cauca-mobile-time-picker (valueChange)=\"hourChanged($event)\" [options]=\"hours\" [value]=\"selectedHour\" />\n </div>\n\n <div class=\"hour-and-minute-separator\" *ngIf=\"showMobileUi\">:</div>\n\n <div class=\"minutes\" *ngIf=\"!showMobileUi\">\n <cauca-desktop-time-picker [disabled]=\"{all: disabled.minutes, someOptions: disabled.someMinutes}\" (valueChange)=\"minuteChanged($event)\" [options]=\"minutes\" [value]=\"selectedMinute\"/>\n </div>\n <div class=\"minutes\" *ngIf=\"showMobileUi\">\n <cauca-mobile-time-picker (valueChange)=\"minuteChanged($event)\" [options]=\"minutes\" [value]=\"selectedMinute\" />\n </div>\n\n <div class=\"minute-and-second-separator\" *ngIf=\"showSeconds && showMobileUi\">:</div>\n <div class=\"seconds\" *ngIf=\"showSeconds && !showMobileUi\">\n <cauca-desktop-time-picker [disabled]=\"{all: disabled.seconds, someOptions: disabled.someSeconds}\" (valueChange)=\"secondChanged($event)\" [options]=\"seconds\" [value]=\"selectedSecond\"/>\n </div>\n <div class=\"seconds\" *ngIf=\"showSeconds && showMobileUi\">\n <cauca-mobile-time-picker (valueChange)=\"secondChanged($event)\" [options]=\"seconds\" [value]=\"selectedSecond\" />\n </div>\n </div>\n</div>\n\n<div mat-dialog-actions align=\"end\">\n <button mat-stroked-button (click)=\"clear()\" *ngIf=\"showClearButton\">\n <mat-icon *ngIf=\"showButtonIcons\">clear</mat-icon>\n {{'material.clear' | translate}}\n </button>\n <button mat-stroked-button (click)=\"cancel()\">\n <mat-icon *ngIf=\"showButtonIcons\">cancel</mat-icon>\n {{'material.cancel' | translate}}\n </button>\n <button color=\"primary\" mat-raised-button cdkFocusInitial (click)=\"confirm()\">\n <mat-icon *ngIf=\"showButtonIcons\">check</mat-icon>\n {{'material.ok' | translate}}\n </button>\n</div>", styles: ["div[mat-dialog-actions]{padding:8px;border-top:1px solid #ccc}div[mat-dialog-actions] button{margin:2px}.date-time-picker{display:grid;grid-template-areas:\"calendar hours minutes seconds\";height:350px;overflow:hidden;justify-content:center}.date-time-picker>div{overflow:auto;flex:1;max-width:50px;scrollbar-width:none;border-left:1px solid #ccc}.date-time-picker>div:first-child{flex:4;max-width:290px;border-left:none}.date-time-picker>div:first-child mat-calendar{width:290px;height:350px}.date-time-picker>div::-webkit-scrollbar{display:none}.date-time-picker ::ng-deep .mdc-list-item__primary-text{font-family:var(--mat-datepicker-calendar-text-font);font-size:var(--mat-datepicker-calendar-text-size)}.date-time-picker ::ng-deep .mdc-list-item--activated{background-color:var(--mat-datepicker-calendar-date-selected-state-background-color)}.date-time-picker ::ng-deep .mdc-list-item--activated .mdc-list-item__primary-text{color:var(--mat-datepicker-calendar-date-selected-state-text-color)}.calendar{grid-area:calendar}.hours{grid-area:hours}.minutes{grid-area:minutes}.seconds{grid-area:seconds}.hour-and-minute-separator{grid-area:hour-and-minute-separator;display:flex;align-items:center;justify-content:center;font-weight:700}.minute-and-second-separator{grid-area:minute-and-second-separator;display:flex;align-items:center;justify-content:center;font-weight:700}@media only screen and (max-width: 555px){.show-seconds{grid-template-areas:\"calendar calendar calendar calendar calendar calendar calendar\" \". hours hour-and-minute-separator minutes minute-and-second-separator seconds .\";grid-template-columns:auto 40px 2px 40px 2px 40px auto}.hide-seconds{grid-template-areas:\"calendar calendar calendar calendar calendar\" \". hours hour-and-minute-separator minutes .\";grid-template-columns:auto 40px 2px 40px auto}.date-time-picker{grid-template-rows:auto auto;height:450px}.date-time-picker>div{border-left:none}.date-time-picker>div:not(:first-child){height:70px}.date-time-picker>div:first-child{overflow:initial;flex:4;max-width:290px;border-left:none}}\n"] }]
349
- }], () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
350
- type: Inject,
351
- args: [MAT_DIALOG_DATA]
352
- }] }], { onResize: [{
353
- type: HostListener,
354
- args: ['window:resize', ['$event']]
355
- }] }); })();
356
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DialogDateTimePickerComponent, { className: "DialogDateTimePickerComponent", filePath: "lib\\cauca-date-time-picker\\components\\dialog-date-time-picker\\dialog-date-time-picker.component.ts", lineNumber: 31 }); })();
357
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWRhdGUtdGltZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2F1Y2EtbWF0ZXJpYWwvc3JjL2xpYi9jYXVjYS1kYXRlLXRpbWUtcGlja2VyL2NvbXBvbmVudHMvZGlhbG9nLWRhdGUtdGltZS1waWNrZXIvZGlhbG9nLWRhdGUtdGltZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2F1Y2EtbWF0ZXJpYWwvc3JjL2xpYi9jYXVjYS1kYXRlLXRpbWUtcGlja2VyL2NvbXBvbmVudHMvZGlhbG9nLWRhdGUtdGltZS1waWNrZXIvZGlhbG9nLWRhdGUtdGltZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFN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Q0FBbUI7WUFHbkIsY0FBa0I7WUFBbEIsdUNBQWtCO1lBSUUsY0FBa0I7WUFBbEIsdUNBQWtCO1lBRXBDLGNBQW1CO1lBQW5CLHdDQUFtQjtZQUduQixjQUFrQjtZQUFsQix1Q0FBa0I7WUFJRSxjQUFpQztZQUFqQywwREFBaUM7WUFDckQsY0FBa0M7WUFBbEMsMkRBQWtDO1lBR2xDLGNBQWlDO1lBQWpDLDBEQUFpQztZQU9iLGVBQXFCO1lBQXJCLDBDQUFxQjtZQUtwRCxlQUFxQjtZQUFyQiwwQ0FBcUI7WUFDaEMsY0FDSjtZQURJLDBFQUNKO1lBRWUsZUFBcUI7WUFBckIsMENBQXFCO1lBQ2hDLGNBQ0o7WUFESSxzRUFDSjs0QkRoQ0EsWUFBWSx1QkFDWix1QkFBdUIsb0JBQ3ZCLGVBQWUsZ0JBQ2YsbUJBQW1CLGtCQUNuQixhQUFhLGNBQ2IsYUFBYTtZQUNiLG1CQUFtQjtZQUNuQix5QkFBeUI7WUFDekIsMEJBQTBCOztpRkFLakIsNkJBQTZCO2NBakJ6QyxTQUFTOzJCQUNFLCtCQUErQixjQUM3QixJQUFJLFdBQ1A7b0JBQ1AsWUFBWTtvQkFDWix1QkFBdUI7b0JBQ3ZCLGVBQWU7b0JBQ2YsbUJBQW1CO29CQUNuQixhQUFhO29CQUNiLGFBQWE7b0JBQ2IsbUJBQW1CO29CQUNuQix5QkFBeUI7b0JBQ3pCLDBCQUEwQjtpQkFDM0I7O3NCQXNDRSxNQUFNO3VCQUFDLGVBQWU7cUJBZWxCLFFBQVE7a0JBRGQsWUFBWTttQkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7O2tGQWhEOUIsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIEluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXROYXRpdmVEYXRlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNYXREYXRlcGlja2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRMaXN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XG5pbXBvcnQgeyBEaWFsb2dEYXRlVGltZVBpY2tlck9wdGlvbnMsIERpYWxvZ0RhdGVUaW1lUGlja2VyRGF0YURpc2FibGVkLCBEaWFsb2dEYXRlVGltZVBpY2tlckRhdGFTdGVwIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2RpYWxvZy1kYXRlLXRpbWUtcGlja2VyLWRhdGEnO1xuaW1wb3J0IHsgQ2F1Y2FDb3JlRm9yQ2hpbGRNb2R1bGUgfSBmcm9tICdAY2F1Y2EtOTExL2NvcmUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNb2JpbGVUaW1lUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vbW9iaWxlLXRpbWUtcGlja2VyL21vYmlsZS10aW1lLXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGVza3RvcFRpbWVQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuLi9kZXNrdG9wLXRpbWUtcGlja2VyL2Rlc2t0b3AtdGltZS1waWNrZXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2F1Y2EtZGlhbG9nLWRhdGUtdGltZS1waWNrZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIENhdWNhQ29yZUZvckNoaWxkTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXREYXRlcGlja2VyTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0TGlzdE1vZHVsZSxcbiAgICBNYXROYXRpdmVEYXRlTW9kdWxlLFxuICAgIE1vYmlsZVRpbWVQaWNrZXJDb21wb25lbnQsXG4gICAgRGVza3RvcFRpbWVQaWNrZXJDb21wb25lbnRcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2RpYWxvZy1kYXRlLXRpbWUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2RpYWxvZy1kYXRlLXRpbWUtcGlja2VyLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBEaWFsb2dEYXRlVGltZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHB1YmxpYyBzZWxlY3RlZEhvdXIgPSAwO1xuICBwdWJsaWMgc2VsZWN0ZWRNaW51dGUgPSAwO1xuICBwdWJsaWMgc2VsZWN0ZWRTZWNvbmQgPSAwO1xuICBwdWJsaWMgaW5pdGlhbERhdGU6IERhdGUgPSBudWxsO1xuICBwdWJsaWMgc2VsZWN0ZWREYXRlOiBEYXRlID0gbnVsbDtcbiAgcHVibGljIG1pbmltdW1EYXRlID0gbmV3IERhdGUoKTtcbiAgcHVibGljIG1heGltdW1EYXRlID0gbmV3IERhdGUoKTtcbiAgcHVibGljIHNob3dTZWNvbmRzOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBzaG93Q2xlYXJCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xuICBwdWJsaWMgc2hvd0J1dHRvbkljb25zOiBib29sZWFuID0gdHJ1ZTtcblxuICBwdWJsaWMgaG91cnMgPSBbLi4uQXJyYXkoMjQpLmtleXMoKV07XG4gIHB1YmxpYyBtaW51dGVzID0gWy4uLkFycmF5KDYwKS5rZXlzKCldO1xuICBwdWJsaWMgc2Vjb25kcyA9IFsuLi5BcnJheSg2MCkua2V5cygpXTtcbiAgcHVibGljIHNob3dNb2JpbGVVaTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBkaXNhYmxlZDogRGlhbG9nRGF0ZVRpbWVQaWNrZXJEYXRhRGlzYWJsZWQgPSB7XG4gICAgaG91cnM6IHRydWUsXG4gICAgc29tZUhvdXJzOiBbXSxcbiAgICBtaW51dGVzOiB0cnVlLFxuICAgIHNvbWVNaW51dGVzOiBbXSxcbiAgICBzZWNvbmRzOiB0cnVlLFxuICAgIHNvbWVTZWNvbmRzOiBbXSxcbiAgfTtcblxuICBwcml2YXRlIHN0ZXA6IERpYWxvZ0RhdGVUaW1lUGlja2VyRGF0YVN0ZXAgPSB7XG4gICAgaG91cnM6IDEsXG4gICAgbWludXRlczogMSxcbiAgICBzZWNvbmRzOiAxLFxuICB9O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8RGlhbG9nRGF0ZVRpbWVQaWNrZXJDb21wb25lbnQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgb3B0aW9uczogRGlhbG9nRGF0ZVRpbWVQaWNrZXJPcHRpb25zXG4gICkge1xuICAgIHRoaXMuc3RlcCA9IG9wdGlvbnMuc3RlcCB8fCB0aGlzLnN0ZXA7XG4gICAgdGhpcy5zaG93U2Vjb25kcyA9IG9wdGlvbnMuc2hvd1NlY29uZHM7XG4gICAgdGhpcy5zaG93QnV0dG9uSWNvbnMgPSBvcHRpb25zLnNob3dCdXR0b25JY29ucyA/PyB0aGlzLnNob3dCdXR0b25JY29ucztcbiAgICB0aGlzLnNob3dDbGVhckJ1dHRvbiA9IG9wdGlvbnMuc2hvd0NsZWFyQnV0dG9uID8/IHRoaXMuc2hvd0NsZWFyQnV0dG9uO1xuICAgIHRoaXMuc2V0TGlzdEhvdXJzTWludXRlcygpO1xuICAgIHRoaXMuaW5pdGlhbEVhY2hDb21wb25lbnRWYWx1ZShvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm9uV2luZG93V2l0aENoYW5nZSh3aW5kb3cuaW5uZXJXaWR0aCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgcHVibGljIG9uUmVzaXplKGV2ZW50KSB7XG4gICAgdGhpcy5vbldpbmRvd1dpdGhDaGFuZ2UoZXZlbnQudGFyZ2V0LmlubmVyV2lkdGgpO1xuICB9XG5cbiAgcHVibGljIGRhdGVDaGFuZ2VkKGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICBpZiAoZGF0ZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBkYXRlO1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGUuc2V0SG91cnModGhpcy5zZWxlY3RlZEhvdXIpO1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGUuc2V0TWludXRlcyh0aGlzLnNlbGVjdGVkTWludXRlKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLnNldFNlY29uZHModGhpcy5zZWxlY3RlZFNlY29uZCk7XG4gICAgICB0aGlzLmRpc2FibGVkLmhvdXJzID0gZmFsc2U7XG4gICAgICB0aGlzLmRpc2FibGVkLnNvbWVIb3VycyA9IHRoaXMuaG91cnMuZmlsdGVyKGhvdXIgPT4gdGhpcy5ob3VyT2ZTZWxlY3RlZERhdGVJc0Rpc2FibGVkKGhvdXIpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBudWxsO1xuICAgICAgdGhpcy5kaXNhYmxlZC5ob3VycyA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhvdXJDaGFuZ2VkKGhvdXI6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkLmhvdXJzIHx8IHRoaXMuZGlzYWJsZWQuc29tZUhvdXJzLmluY2x1ZGVzKGhvdXIpKSByZXR1cm47XG5cbiAgICB0aGlzLnNlbGVjdGVkSG91ciA9IGhvdXI7XG4gICAgdGhpcy5zZWxlY3RlZERhdGUuc2V0SG91cnMoaG91cik7XG4gICAgdGhpcy5kaXNhYmxlZC5taW51dGVzID0gZmFsc2U7XG4gICAgdGhpcy5kaXNhYmxlZC5zb21lTWludXRlcyA9IHRoaXMubWludXRlcy5maWx0ZXIobWludXRlID0+IHRoaXMubWludXRlT2ZTZWxlY3RlZERhdGVJc0Rpc2FibGVkKG1pbnV0ZSkpO1xuICB9XG5cbiAgcHVibGljIG1pbnV0ZUNoYW5nZWQobWludXRlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZC5taW51dGVzIHx8IHRoaXMuZGlzYWJsZWQuc29tZU1pbnV0ZXMuaW5jbHVkZXMobWludXRlKSkgcmV0dXJuO1xuXG4gICAgdGhpcy5zZWxlY3RlZE1pbnV0ZSA9IG1pbnV0ZTtcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZS5zZXRNaW51dGVzKG1pbnV0ZSk7XG4gICAgdGhpcy5kaXNhYmxlZC5zZWNvbmRzID0gZmFsc2U7XG4gICAgdGhpcy5kaXNhYmxlZC5zb21lU2Vjb25kcyA9IHRoaXMuc2Vjb25kcy5maWx0ZXIoc2Vjb25kID0+IHRoaXMuc2Vjb25kT2ZTZWxlY3RlZERhdGVJc0Rpc2FibGVkKHNlY29uZCkpO1xuICB9XG5cbiAgcHVibGljIHNlY29uZENoYW5nZWQoc2Vjb25kOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZC5zZWNvbmRzIHx8IHRoaXMuZGlzYWJsZWQuc29tZVNlY29uZHMuaW5jbHVkZXMoc2Vjb25kKSkgcmV0dXJuO1xuXG4gICAgdGhpcy5zZWxlY3RlZFNlY29uZCA9IHNlY29uZDtcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZS5zZXRTZWNvbmRzKHNlY29uZCk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgdmFsdWU6IG51bGxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgdmFsdWU6IHRoaXMuaW5pdGlhbERhdGVcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjb25maXJtKCk6IHZvaWQge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHtcbiAgICAgIHZhbHVlOiB0aGlzLnNlbGVjdGVkRGF0ZVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvbldpbmRvd1dpdGhDaGFuZ2Uod2lkdGg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuc2hvd01vYmlsZVVpID0gd2lkdGggJiYgd2lkdGggPD0gNTU1O1xuICB9XG5cbiAgcHJpdmF0ZSBob3VyT2ZTZWxlY3RlZERhdGVJc0Rpc2FibGVkKGhvdXI6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZUlzVGhlTWluaW11bURhdGUoKSkge1xuICAgICAgcmV0dXJuIGhvdXIgPCB0aGlzLm1pbmltdW1EYXRlLmdldEhvdXJzKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkRGF0ZUlzVGhlTWF4aW11bURhdGUoKSkge1xuICAgICAgcmV0dXJuIGhvdXIgPiB0aGlzLm1heGltdW1EYXRlLmdldEhvdXJzKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBtaW51dGVPZlNlbGVjdGVkRGF0ZUlzRGlzYWJsZWQobWludXRlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZUlzVGhlTWluaW11bURhdGUoKSAmJlxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUuZ2V0SG91cnMoKSA9PT0gdGhpcy5taW5pbXVtRGF0ZS5nZXRIb3VycygpXG4gICAgKSB7XG4gICAgICByZXR1cm4gbWludXRlIDwgdGhpcy5taW5pbXVtRGF0ZS5nZXRNaW51dGVzKCk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSXNUaGVNYXhpbXVtRGF0ZSgpICYmXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRIb3VycygpID09PSB0aGlzLm1heGltdW1EYXRlLmdldEhvdXJzKClcbiAgICApIHtcbiAgICAgIHJldHVybiBtaW51dGUgPiB0aGlzLm1heGltdW1EYXRlLmdldE1pbnV0ZXMoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHNlY29uZE9mU2VsZWN0ZWREYXRlSXNEaXNhYmxlZChzZWNvbmQ6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGlmIChcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSXNUaGVNaW5pbXVtRGF0ZSgpICYmXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRIb3VycygpID09PSB0aGlzLm1pbmltdW1EYXRlLmdldEhvdXJzKCkgJiZcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLmdldE1pbnV0ZXMoKSA9PT0gdGhpcy5taW5pbXVtRGF0ZS5nZXRNaW51dGVzKClcbiAgICApIHtcbiAgICAgIHJldHVybiBzZWNvbmQgPCB0aGlzLm1pbmltdW1EYXRlLmdldFNlY29uZHMoKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdGhpcy5zZWxlY3RlZERhdGVJc1RoZU1heGltdW1EYXRlKCkgJiZcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLmdldE1pbnV0ZXMoKSA9PT0gdGhpcy5tYXhpbXVtRGF0ZS5nZXRNaW51dGVzKClcbiAgICApIHtcbiAgICAgIHJldHVybiBzZWNvbmQgPiB0aGlzLm1heGltdW1EYXRlLmdldFNlY29uZHMoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxFYWNoQ29tcG9uZW50VmFsdWUob3B0aW9uczogRGlhbG9nRGF0ZVRpbWVQaWNrZXJPcHRpb25zKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsRGF0ZSA9IG9wdGlvbnMuc2VsZWN0ZWREYXRlID8gbmV3IERhdGUob3B0aW9ucy5zZWxlY3RlZERhdGUpIDogbnVsbDtcbiAgICB0aGlzLm1pbmltdW1EYXRlID0gb3B0aW9ucy5taW5pbXVtRGF0ZSA/IG5ldyBEYXRlKG9wdGlvbnMubWluaW11bURhdGUpIDogbnVsbDtcbiAgICB0aGlzLm1heGltdW1EYXRlID0gb3B0aW9ucy5tYXhpbXVtRGF0ZSA/IG5ldyBEYXRlKG9wdGlvbnMubWF4aW11bURhdGUpIDogbnVsbDtcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IG9wdGlvbnMuc2VsZWN0ZWREYXRlID8gbmV3IERhdGUob3B0aW9ucy5zZWxlY3RlZERhdGUpIDogbmV3IERhdGUoKTtcbiAgICB0aGlzLmRhdGVDaGFuZ2VkKG9wdGlvbnMuc2VsZWN0ZWREYXRlID8gbmV3IERhdGUob3B0aW9ucy5zZWxlY3RlZERhdGUpIDogbnVsbCk7XG4gICAgdGhpcy5ob3VyQ2hhbmdlZChvcHRpb25zLnNlbGVjdGVkRGF0ZSA/IG5ldyBEYXRlKG9wdGlvbnMuc2VsZWN0ZWREYXRlKS5nZXRIb3VycygpIDogMCk7XG4gICAgdGhpcy5taW51dGVDaGFuZ2VkKG9wdGlvbnMuc2VsZWN0ZWREYXRlID8gbmV3IERhdGUob3B0aW9ucy5zZWxlY3RlZERhdGUpLmdldE1pbnV0ZXMoKSA6IDApO1xuICAgIHRoaXMuc2Vjb25kQ2hhbmdlZChvcHRpb25zLnNlbGVjdGVkRGF0ZSA/IG5ldyBEYXRlKG9wdGlvbnMuc2VsZWN0ZWREYXRlKS5nZXRTZWNvbmRzKCkgOiAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0ZWREYXRlSXNUaGVNaW5pbXVtRGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5taW5pbXVtRGF0ZSAmJlxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKSA9PT0gdGhpcy5taW5pbXVtRGF0ZS5nZXRGdWxsWWVhcigpICYmXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRNb250aCgpID09PSB0aGlzLm1pbmltdW1EYXRlLmdldE1vbnRoKCkgJiZcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLmdldERhdGUoKSA9PT0gdGhpcy5taW5pbXVtRGF0ZS5nZXREYXRlKClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RlZERhdGVJc1RoZU1heGltdW1EYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLm1heGltdW1EYXRlICYmXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpID09PSB0aGlzLm1heGltdW1EYXRlLmdldEZ1bGxZZWFyKCkgJiZcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLmdldE1vbnRoKCkgPT09IHRoaXMubWF4aW11bURhdGUuZ2V0TW9udGgoKSAmJlxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUuZ2V0RGF0ZSgpID09PSB0aGlzLm1heGltdW1EYXRlLmdldERhdGUoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNldExpc3RIb3Vyc01pbnV0ZXMoKTogdm9pZCB7XG4gICAgdGhpcy5ob3VycyA9IHRoaXMuaG91cnMuZmlsdGVyKGhvdXIgPT4gaG91ciAlIHRoaXMuc3RlcC5ob3VycyA9PT0gMCk7XG4gICAgdGhpcy5taW51dGVzID0gdGhpcy5taW51dGVzLmZpbHRlcihtaW51dGUgPT4gbWludXRlICUgdGhpcy5zdGVwLm1pbnV0ZXMgPT09IDApO1xuICAgIHRoaXMuc2Vjb25kcyA9IHRoaXMuc2Vjb25kcy5maWx0ZXIoc2Vjb25kZSA9PiBzZWNvbmRlICUgdGhpcy5zdGVwLnNlY29uZHMgPT09IDApO1xuICB9XG59XG4iLCI8ZGl2IG1hdC1kaWFsb2ctY29udGVudD5cbiAgICA8ZGl2IFtuZ0NsYXNzXT1cInNob3dTZWNvbmRzID8gJ3Nob3ctc2Vjb25kcycgOiAnaGlkZS1zZWNvbmRzJ1wiIGNsYXNzPVwiZGF0ZS10aW1lLXBpY2tlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXJcIj5cbiAgICAgICAgICAgIDxtYXQtY2FsZW5kYXJcbiAgICAgICAgICAgICAgICBbbWluRGF0ZV09XCJtaW5pbXVtRGF0ZVwiXG4gICAgICAgICAgICAgICAgW21heERhdGVdPVwibWF4aW11bURhdGVcIlxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJzZWxlY3RlZERhdGVcIlxuICAgICAgICAgICAgICAgIChzZWxlY3RlZENoYW5nZSk9XCJkYXRlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgID48L21hdC1jYWxlbmRhcj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhvdXJzXCIgKm5nSWY9XCIhc2hvd01vYmlsZVVpXCI+XG4gICAgICAgICAgICA8Y2F1Y2EtZGVza3RvcC10aW1lLXBpY2tlciBbZGlzYWJsZWRdPVwie2FsbDogZGlzYWJsZWQuaG91cnMsIHNvbWVPcHRpb25zOiBkaXNhYmxlZC5zb21lSG91cnN9XCIgKHZhbHVlQ2hhbmdlKT1cImhvdXJDaGFuZ2VkKCRldmVudClcIiBbb3B0aW9uc109XCJob3Vyc1wiIFt2YWx1ZV09XCJzZWxlY3RlZEhvdXJcIi8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaG91cnNcIiAqbmdJZj1cInNob3dNb2JpbGVVaVwiPlxuICAgICAgICAgICAgPGNhdWNhLW1vYmlsZS10aW1lLXBpY2tlciAodmFsdWVDaGFuZ2UpPVwiaG91ckNoYW5nZWQoJGV2ZW50KVwiIFtvcHRpb25zXT1cImhvdXJzXCIgW3ZhbHVlXT1cInNlbGVjdGVkSG91clwiIC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJob3VyLWFuZC1taW51dGUtc2VwYXJhdG9yXCIgKm5nSWY9XCJzaG93TW9iaWxlVWlcIj46PC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pbnV0ZXNcIiAqbmdJZj1cIiFzaG93TW9iaWxlVWlcIj5cbiAgICAgICAgICAgIDxjYXVjYS1kZXNrdG9wLXRpbWUtcGlja2VyIFtkaXNhYmxlZF09XCJ7YWxsOiBkaXNhYmxlZC5taW51dGVzLCBzb21lT3B0aW9uczogZGlzYWJsZWQuc29tZU1pbnV0ZXN9XCIgKHZhbHVlQ2hhbmdlKT1cIm1pbnV0ZUNoYW5nZWQoJGV2ZW50KVwiIFtvcHRpb25zXT1cIm1pbnV0ZXNcIiBbdmFsdWVdPVwic2VsZWN0ZWRNaW51dGVcIi8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWludXRlc1wiICpuZ0lmPVwic2hvd01vYmlsZVVpXCI+XG4gICAgICAgICAgICA8Y2F1Y2EtbW9iaWxlLXRpbWUtcGlja2VyICh2YWx1ZUNoYW5nZSk9XCJtaW51dGVDaGFuZ2VkKCRldmVudClcIiBbb3B0aW9uc109XCJtaW51dGVzXCIgW3ZhbHVlXT1cInNlbGVjdGVkTWludXRlXCIgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pbnV0ZS1hbmQtc2Vjb25kLXNlcGFyYXRvclwiICpuZ0lmPVwic2hvd1NlY29uZHMgJiYgc2hvd01vYmlsZVVpXCI+OjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2Vjb25kc1wiICpuZ0lmPVwic2hvd1NlY29uZHMgJiYgIXNob3dNb2JpbGVVaVwiPlxuICAgICAgICAgICAgPGNhdWNhLWRlc2t0b3AtdGltZS1waWNrZXIgW2Rpc2FibGVkXT1cInthbGw6IGRpc2FibGVkLnNlY29uZHMsIHNvbWVPcHRpb25zOiBkaXNhYmxlZC5zb21lU2Vjb25kc31cIiAodmFsdWVDaGFuZ2UpPVwic2Vjb25kQ2hhbmdlZCgkZXZlbnQpXCIgW29wdGlvbnNdPVwic2Vjb25kc1wiIFt2YWx1ZV09XCJzZWxlY3RlZFNlY29uZFwiLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWNvbmRzXCIgKm5nSWY9XCJzaG93U2Vjb25kcyAmJiBzaG93TW9iaWxlVWlcIj5cbiAgICAgICAgICAgIDxjYXVjYS1tb2JpbGUtdGltZS1waWNrZXIgKHZhbHVlQ2hhbmdlKT1cInNlY29uZENoYW5nZWQoJGV2ZW50KVwiIFtvcHRpb25zXT1cInNlY29uZHNcIiBbdmFsdWVdPVwic2VsZWN0ZWRTZWNvbmRcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IG1hdC1kaWFsb2ctYWN0aW9ucyBhbGlnbj1cImVuZFwiPlxuICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIChjbGljayk9XCJjbGVhcigpXCIgKm5nSWY9XCJzaG93Q2xlYXJCdXR0b25cIj5cbiAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwic2hvd0J1dHRvbkljb25zXCI+Y2xlYXI8L21hdC1pY29uPlxuICAgICAgICB7eydtYXRlcmlhbC5jbGVhcicgfCB0cmFuc2xhdGV9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIChjbGljayk9XCJjYW5jZWwoKVwiPlxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJzaG93QnV0dG9uSWNvbnNcIj5jYW5jZWw8L21hdC1pY29uPlxuICAgICAgICB7eydtYXRlcmlhbC5jYW5jZWwnIHwgdHJhbnNsYXRlfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIG1hdC1yYWlzZWQtYnV0dG9uIGNka0ZvY3VzSW5pdGlhbCAoY2xpY2spPVwiY29uZmlybSgpXCI+XG4gICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInNob3dCdXR0b25JY29uc1wiPmNoZWNrPC9tYXQtaWNvbj5cbiAgICAgICAge3snbWF0ZXJpYWwub2snIHwgdHJhbnNsYXRlfX1cbiAgICA8L2J1dHRvbj5cbjwvZGl2PiJdfQ==