ngx-np-datepicker 2.0.3 → 2.1.0

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.
package/README.md CHANGED
@@ -33,15 +33,15 @@ then use `<np-datepicker [(ngModel)]="nepaliDate"></np-datepicker>` in your temp
33
33
  <np-datepicker></np-datepicker>
34
34
  ```
35
35
 
36
-
37
-
36
+ ### Format
37
+ The default date format is yyyy/mm/dd. You can change it using format="dd/mm/yyyy".
38
+ ```
39
+ <np-datepicker format="dd/mm/yyyy"></np-datepicker>
40
+ ```
38
41
 
39
42
  ### Note
40
43
  This package has no dependancy.
41
44
 
42
- ### Format
43
- The supported date format is dd-mm-yyyy
44
-
45
45
  ### License
46
46
  MIT License
47
47
 
package/README.md.bak ADDED
@@ -0,0 +1,51 @@
1
+ # Angular Nepali Datepicker
2
+ A configurable Nepali Date Picker(Bikram Sambat) built for angular appilcations. Supports latest (Angular 13) version.
3
+
4
+ ### Demo
5
+ <a href="https://wwwbijay.github.io/angular-nepali-datepicker/" target="_blank">Click here to check demo.</a>
6
+
7
+ ## Installation
8
+ ```
9
+ npm install ngx-np-datepicker
10
+ ```
11
+
12
+ ## Usage
13
+ Import the `NepaliDatepickerModule` in your app.module.ts
14
+
15
+ ```
16
+ import { NepaliDatepickerModule } from 'angular-nepali-datepicker';
17
+
18
+ @NgModule({
19
+ declarations: [
20
+ AppComponent,
21
+ ],
22
+ imports: [
23
+ BrowserModule,
24
+ NepaliDatepickerModule
25
+ ],
26
+ providers: [],
27
+ bootstrap: [AppComponent]
28
+ })
29
+ export class AppModule { }
30
+ ```
31
+ then use `<np-datepicker [(ngModel)]="nepaliDate"></np-datepicker>` in your template
32
+ ```
33
+ <np-datepicker></np-datepicker>
34
+ ```
35
+
36
+ ### Format
37
+ The default date format is yyyy/mm/dd. You can change it using format="dd/mm/yyyy".
38
+ ```
39
+ <np-datepicker format="dd/mm/yyyy"></np-datepicker>
40
+ ```
41
+
42
+
43
+ ### Note
44
+ This package has no dependancy.
45
+
46
+
47
+
48
+
49
+ ### License
50
+ MIT License
51
+
@@ -21,6 +21,7 @@ export class NpDatePickerComponent {
21
21
  this.alwaysVisible = false;
22
22
  this.language = 'ne';
23
23
  this.hasFuture = true;
24
+ this.format = 'yy-mm-dd';
24
25
  this.monthDisplayType = 'default';
25
26
  this.dayDisplayType = 'short';
26
27
  this.dateFormatter = (selectedDate) => {
@@ -28,7 +29,12 @@ export class NpDatePickerComponent {
28
29
  const mm = selectedDate.month < 10
29
30
  ? '0' + (selectedDate.month + 1)
30
31
  : selectedDate.month + 1;
31
- return `${dd}/${mm}/${this.selectedDate.year}`;
32
+ switch (this.format) {
33
+ case 'dd-mm-yy':
34
+ return `${dd}/${mm}/${this.selectedDate.year}`;
35
+ default:
36
+ return `${this.selectedDate.year}/${mm}/${dd}`;
37
+ }
32
38
  };
33
39
  this.initialized = false;
34
40
  this.propagateChange = (_) => { };
@@ -43,10 +49,10 @@ export class NpDatePickerComponent {
43
49
  }
44
50
  ngOnInit() {
45
51
  this.setCurrentDate();
46
- this.selectDate(this.currentNepaliDate.day);
52
+ //this.selectDate(this.currentNepaliDate.day);
47
53
  this.populateYears();
48
54
  this.setCurrentMonthData();
49
- console.log(this.currentMonthData);
55
+ // console.log(this.currentMonthData);
50
56
  }
51
57
  populateYears() {
52
58
  for (let i = 2001; i <= 2099; i++) {
@@ -73,7 +79,7 @@ export class NpDatePickerComponent {
73
79
  year: this.currentNepaliDate.year,
74
80
  };
75
81
  this.currentDate = this._nepaliDate.nepToEngDate(newNepaliDate.day, newNepaliDate.month, newNepaliDate.year);
76
- console.log(this.currentDate);
82
+ // console.log(this.currentDate);
77
83
  this.setCurrentMonthData();
78
84
  }
79
85
  resetCurrentMonthData() {
@@ -223,13 +229,13 @@ export class NpDatePickerComponent {
223
229
  }
224
230
  }
225
231
  NpDatePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: NpDatePickerComponent, deps: [{ token: i1.NpDatePickerService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
226
- NpDatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: NpDatePickerComponent, selector: "np-datepicker", inputs: { theme: "theme", language: "language", hasFuture: "hasFuture" }, host: { listeners: { "document:click": "clickout($event)" } }, providers: [
232
+ NpDatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: NpDatePickerComponent, selector: "np-datepicker", inputs: { theme: "theme", language: "language", hasFuture: "hasFuture", format: "format" }, host: { listeners: { "document:click": "clickout($event)" } }, providers: [
227
233
  {
228
234
  provide: NG_VALUE_ACCESSOR,
229
235
  useExisting: forwardRef(() => NpDatePickerComponent),
230
236
  multi: true,
231
237
  },
232
- ], ngImport: i0, template: "<div class=\"nepali-date-picker\" [ngClass]=\"theme\">\n <input\n class=\"np_datepicker_input\"\n type=\"text\"\n [value]=\"formattedDate\"\n (focus)=\"open()\"\n (keydown)=\"$event.preventDefault()\"\n aria-hidden=\"true\"\n />\n <a\n class=\"form-icon\"\n (click)=\"toggleOpen()\"\n [ngClass]=\"isOpen ? 'active' : ''\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\n <path\n d=\"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"\n />\n </svg>\n </a>\n <ng-container [ngTemplateOutlet]=\"dp\" *ngIf=\"isOpen\"></ng-container>\n</div>\n<!--.nepali-date-picker-->\n\n<ng-template #dp>\n <div class=\"datepicker__container\">\n <div class=\"datepicker__options-container\">\n <a class=\"prev-month\" (click)=\"prevMonth()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n d=\"M224 480c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25l192-192c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L77.25 256l169.4 169.4c12.5 12.5 12.5 32.75 0 45.25C240.4 476.9 232.2 480 224 480z\"\n />\n </svg>\n </a>\n <span class=\"datepicker__options-year-container\">\n <span> {{ \"Year\" | toNp: language:\"word\" }}: </span>\n <select (change)=\"selectYear($event)\">\n <option\n *ngFor=\"let year of years; index as i\"\n [value]=\"year\"\n [selected]=\"year == currentNepaliDate?.year\"\n >\n {{ year | toNp: language:\"number\" }}\n </option>\n </select>\n </span>\n <span class=\"datepicker__options-month-container\">\n <span>{{ \"Month\" | toNp: language:\"word\" }}: </span>\n <select (change)=\"selectMonth($event)\">\n <option\n *ngFor=\"\n let month of monthsMapping[language][monthDisplayType];\n index as i\n \"\n [value]=\"month\"\n [selected]=\"i === currentNepaliDate?.month\"\n >\n {{ month }}\n </option>\n </select>\n </span>\n <a class=\"next-month\" (click)=\"nextMonth()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n d=\"M96 480c-8.188 0-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L242.8 256L73.38 86.63c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l192 192c12.5 12.5 12.5 32.75 0 45.25l-192 192C112.4 476.9 104.2 480 96 480z\"\n />\n </svg>\n </a>\n </div>\n <div class=\"datepicker__days-container\">\n <div\n class=\"datepicker__days\"\n *ngFor=\"let day of daysMapping[language][dayDisplayType]; index as i\"\n >\n <div class=\"datepicker__weekday\">{{ day }}</div>\n <div\n class=\"datepicker__date-container\"\n *ngFor=\"let date of currentMonthData[i]\"\n >\n <div *ngIf=\"hasFuture; else noFutureDate\">\n <div\n *ngIf=\"date\"\n class=\"datepicker__date\"\n [class.datepicker__date--active]=\"\n date === selectedDate?.day &&\n currentNepaliDate.month === selectedDate?.month &&\n currentNepaliDate.year === selectedDate?.year\n \"\n [class.datepicker__date--current-day]=\"\n date === nepaliDateToday.day &&\n currentNepaliDate.month === nepaliDateToday.month &&\n currentNepaliDate.year === nepaliDateToday.year\n \"\n (click)=\"selectDate(date)\"\n >\n {{ date | toNp: language:\"number\" }}\n </div>\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\n <span>&nbsp;</span>\n </div>\n </div>\n\n <ng-template #noFutureDate>\n <div\n *ngIf=\"\n date &&\n this.currentNepaliDate.year * 365 +\n this.currentNepaliDate.month * 30 +\n date <=\n nepaliDateToday.day +\n nepaliDateToday.month * 30 +\n nepaliDateToday.year * 365;\n else disabledDates\n \"\n class=\"datepicker__date\"\n [class.datepicker__date--active]=\"\n date === selectedDate?.day &&\n currentNepaliDate.month === selectedDate?.month &&\n currentNepaliDate.year === selectedDate?.year\n \"\n [class.datepicker__date--current-day]=\"\n date === nepaliDateToday.day &&\n currentNepaliDate.month === nepaliDateToday.month &&\n currentNepaliDate.year === nepaliDateToday.year\n \"\n (click)=\"selectDate(date)\"\n >\n {{ date | toNp: language:\"number\" }}\n </div>\n\n <ng-template #disabledDates>\n <div class=\"datepicker__date datepicker__date--disabled\">\n {{ date | toNp: language:\"number\" }}\n </div>\n </ng-template>\n\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\n <span>&nbsp;</span>\n </div>\n </ng-template>\n </div>\n <!--.datepicker__date-container ends-->\n </div>\n <!--.datepicker__days ends-->\n </div>\n <!--.datepicker__days-container ends-->\n </div>\n <!--.datepicker__container ends-->\n</ng-template>\n", styles: [".nepali-date-picker.nepali-date-picker{position:relative;display:inline-block;font-family:Arial,Helvetica,sans-serif;font-size:1em}.nepali-date-picker a.active svg{fill:#e45415;opacity:.9}.nepali-date-picker .form-icon svg{width:14px;opacity:.3;position:absolute;right:8px;top:12px;cursor:pointer}.datepicker__container{border:1px solid #eee;background:#fff;width:294px;box-shadow:#64646f33 0 7px 29px;position:absolute;z-index:99999}.datepicker__options-container{padding:12px 5px;border-bottom:1px solid #eee;display:flex;justify-content:space-between;background-color:#e45415;color:#fff;line-height:25px}.datepicker__days-container{display:flex;justify-content:space-evenly;color:#777}.datepicker__days{text-align:center;border:1px solid #eee}.datepicker__weekday{padding:10px;background-color:#f3f3f3;margin-bottom:1px;font-weight:700}.datepicker__date-container{width:40px;height:40px;line-height:40px;border-bottom:1px solid #eee}.datepicker__date{cursor:pointer}.datepicker__date:hover{background-color:#eee}.datepicker__date.datepicker__date--disabled,.datepicker__date.datepicker__date--disabled:hover{background:#f3f3f3}.datepicker__date--active.datepicker__date--active{background-color:#e45415;color:#fff}.datepicker__options-container span{font-size:14px}select:focus,select:focus-visible{outline:1px solid #fff}.datepicker__container select{border:none;color:#fff;background:none;font-size:14px;width:58px}select option{color:#333}.np_datepicker_input{border:1px solid #eee;padding:10px;font-size:16px;color:#777}.np_datepicker_input:focus-visible{outline:2px solid #e45415}.prev-month,.next-month{padding:0;width:25px;height:25px;display:block;opacity:.5;border-radius:50%;background:#f3f3f3;cursor:pointer;text-align:center;line-height:23px}.next-month:hover,.prev-month:hover{background:#ccc}.prev-month svg,.next-month svg{max-width:8px;height:auto}.dark.nepali-date-picker a.active svg{fill:#000}.dark .datepicker__options-container{border-bottom:1px solid #000;background-color:#000;color:#fff}.dark select{color:#fff}.datepicker__date--current-day{border:2px solid rgba(0,0,0,.2);position:relative;z-index:999;height:100%}.dark .datepicker__date--active.datepicker__date--active{background-color:#000;color:#fff}.dark .np_datepicker_input:focus-visible{outline:2px solid #000}.dark .datepicker__weekday{background-color:#111}.dark .datepicker__days{background-color:#333;border:1px solid #111}.dark .datepicker__date:hover{background-color:#111;color:#fff}.dark .datepicker__date-container{border-bottom:1px solid #222}.light.nepali-date-picker a.active svg{fill:#777}.light .datepicker__options-container{border-bottom:none;background-color:#fff;color:#777}.light select{color:#777}.light .datepicker__date--active.datepicker__date--active{background-color:#aaa;color:#fff}.light .np_datepicker_input:focus-visible{outline:1px solid #ddd}.lightblue.nepali-date-picker a.active svg{fill:#38c5f0da}.lightblue .datepicker__options-container{background-color:#38c5f0da;color:#fff}.lightblue select{color:#fff}.lightblue .datepicker__date--active.datepicker__date--active{background-color:#38c5f0da;color:#fff}.lightblue .np_datepicker_input:focus-visible{outline:2px solid #38c5f0da}.lightblue .np_datepicker_input:focus-visible{outline:1px solid #38c5f0da}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }], pipes: { "toNp": i4.ToNpPipe }, encapsulation: i0.ViewEncapsulation.None });
238
+ ], ngImport: i0, template: "<div class=\"nepali-date-picker\" [ngClass]=\"theme\">\n <input\n class=\"np_datepicker_input\"\n type=\"text\"\n [value]=\"formattedDate\"\n (focus)=\"open()\"\n (keydown)=\"$event.preventDefault()\"\n aria-hidden=\"true\"\n placeholder=\"yyyy/mm/dd\"\n />\n <a\n class=\"form-icon\"\n (click)=\"toggleOpen()\"\n [ngClass]=\"isOpen ? 'active' : ''\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\n <path\n d=\"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"\n />\n </svg>\n </a>\n <ng-container [ngTemplateOutlet]=\"dp\" *ngIf=\"isOpen\"></ng-container>\n</div>\n<!--.nepali-date-picker-->\n\n<ng-template #dp>\n <div class=\"datepicker__container\">\n <div class=\"datepicker__options-container\">\n <a class=\"prev-month\" (click)=\"prevMonth()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n d=\"M224 480c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25l192-192c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L77.25 256l169.4 169.4c12.5 12.5 12.5 32.75 0 45.25C240.4 476.9 232.2 480 224 480z\"\n />\n </svg>\n </a>\n <span class=\"datepicker__options-year-container\">\n <span> {{ \"Year\" | toNp: language:\"word\" }}: </span>\n <select (change)=\"selectYear($event)\">\n <option\n *ngFor=\"let year of years; index as i\"\n [value]=\"year\"\n [selected]=\"year == currentNepaliDate?.year\"\n >\n {{ year | toNp: language:\"number\" }}\n </option>\n </select>\n </span>\n <span class=\"datepicker__options-month-container\">\n <span>{{ \"Month\" | toNp: language:\"word\" }}: </span>\n <select (change)=\"selectMonth($event)\">\n <option\n *ngFor=\"\n let month of monthsMapping[language][monthDisplayType];\n index as i\n \"\n [value]=\"month\"\n [selected]=\"i === currentNepaliDate?.month\"\n >\n {{ month }}\n </option>\n </select>\n </span>\n <a class=\"next-month\" (click)=\"nextMonth()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n d=\"M96 480c-8.188 0-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L242.8 256L73.38 86.63c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l192 192c12.5 12.5 12.5 32.75 0 45.25l-192 192C112.4 476.9 104.2 480 96 480z\"\n />\n </svg>\n </a>\n </div>\n <div class=\"datepicker__days-container\">\n <div\n class=\"datepicker__days\"\n *ngFor=\"let day of daysMapping[language][dayDisplayType]; index as i\"\n >\n <div class=\"datepicker__weekday\">{{ day }}</div>\n <div\n class=\"datepicker__date-container\"\n *ngFor=\"let date of currentMonthData[i]\"\n >\n <div *ngIf=\"hasFuture; else noFutureDate\">\n <div\n *ngIf=\"date\"\n class=\"datepicker__date\"\n [class.datepicker__date--active]=\"\n date === selectedDate?.day &&\n currentNepaliDate.month === selectedDate?.month &&\n currentNepaliDate.year === selectedDate?.year\n \"\n [class.datepicker__date--current-day]=\"\n date === nepaliDateToday.day &&\n currentNepaliDate.month === nepaliDateToday.month &&\n currentNepaliDate.year === nepaliDateToday.year\n \"\n (click)=\"selectDate(date)\"\n >\n {{ date | toNp: language:\"number\" }}\n </div>\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\n <span>&nbsp;</span>\n </div>\n </div>\n\n <ng-template #noFutureDate>\n <div\n *ngIf=\"\n date &&\n this.currentNepaliDate.year * 365 +\n this.currentNepaliDate.month * 30 +\n date <=\n nepaliDateToday.day +\n nepaliDateToday.month * 30 +\n nepaliDateToday.year * 365;\n else disabledDates\n \"\n class=\"datepicker__date\"\n [class.datepicker__date--active]=\"\n date === selectedDate?.day &&\n currentNepaliDate.month === selectedDate?.month &&\n currentNepaliDate.year === selectedDate?.year\n \"\n [class.datepicker__date--current-day]=\"\n date === nepaliDateToday.day &&\n currentNepaliDate.month === nepaliDateToday.month &&\n currentNepaliDate.year === nepaliDateToday.year\n \"\n (click)=\"selectDate(date)\"\n >\n {{ date | toNp: language:\"number\" }}\n </div>\n\n <ng-template #disabledDates>\n <div class=\"datepicker__date datepicker__date--disabled\">\n {{ date | toNp: language:\"number\" }}\n </div>\n </ng-template>\n\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\n <span>&nbsp;</span>\n </div>\n </ng-template>\n </div>\n <!--.datepicker__date-container ends-->\n </div>\n <!--.datepicker__days ends-->\n </div>\n <!--.datepicker__days-container ends-->\n </div>\n <!--.datepicker__container ends-->\n</ng-template>\n", styles: [".nepali-date-picker.nepali-date-picker{position:relative;display:inline-block;font-family:Arial,Helvetica,sans-serif;font-size:1em}.nepali-date-picker a.active svg{fill:#e45415;opacity:.9}.nepali-date-picker .form-icon svg{width:14px;opacity:.3;position:absolute;right:8px;top:12px;cursor:pointer}.datepicker__container{border:1px solid #eee;background:#fff;width:294px;box-shadow:#64646f33 0 7px 29px;position:absolute;z-index:99999}.datepicker__options-container{padding:12px 5px;border-bottom:1px solid #eee;display:flex;justify-content:space-between;background-color:#e45415;color:#fff;line-height:25px}.datepicker__days-container{display:flex;justify-content:space-evenly;color:#777}.datepicker__days{text-align:center;border:1px solid #eee}.datepicker__weekday{padding:10px;background-color:#f3f3f3;margin-bottom:1px;font-weight:700}.datepicker__date-container{width:40px;height:40px;line-height:40px;border-bottom:1px solid #eee}.datepicker__date{cursor:pointer}.datepicker__date:hover{background-color:#eee}.datepicker__date.datepicker__date--disabled,.datepicker__date.datepicker__date--disabled:hover{background:#f3f3f3}.datepicker__date--active.datepicker__date--active{background-color:#e45415;color:#fff}.datepicker__options-container span{font-size:14px}select:focus,select:focus-visible{outline:1px solid #fff}.datepicker__container select{border:none;color:#fff;background:none;font-size:14px;width:58px}select option{color:#333}.np_datepicker_input{border:1px solid #eee;padding:10px;font-size:16px;color:#777}.np_datepicker_input:focus-visible{outline:2px solid #e45415}.prev-month,.next-month{padding:0;width:25px;height:25px;display:block;opacity:.5;border-radius:50%;background:#f3f3f3;cursor:pointer;text-align:center;line-height:23px}.next-month:hover,.prev-month:hover{background:#ccc}.prev-month svg,.next-month svg{max-width:8px;height:auto}.dark.nepali-date-picker a.active svg{fill:#000}.dark .datepicker__options-container{border-bottom:1px solid #000;background-color:#000;color:#fff}.dark select{color:#fff}.datepicker__date--current-day{border:2px solid rgba(0,0,0,.2);position:relative;z-index:999;height:100%}.dark .datepicker__date--active.datepicker__date--active{background-color:#000;color:#fff}.dark .np_datepicker_input:focus-visible{outline:2px solid #000}.dark .datepicker__weekday{background-color:#111}.dark .datepicker__days{background-color:#333;border:1px solid #111}.dark .datepicker__date:hover{background-color:#111;color:#fff}.dark .datepicker__date-container{border-bottom:1px solid #222}.light.nepali-date-picker a.active svg{fill:#777}.light .datepicker__options-container{border-bottom:none;background-color:#fff;color:#777}.light select{color:#777}.light .datepicker__date--active.datepicker__date--active{background-color:#aaa;color:#fff}.light .np_datepicker_input:focus-visible{outline:1px solid #ddd}.lightblue.nepali-date-picker a.active svg{fill:#38c5f0da}.lightblue .datepicker__options-container{background-color:#38c5f0da;color:#fff}.lightblue select{color:#fff}.lightblue .datepicker__date--active.datepicker__date--active{background-color:#38c5f0da;color:#fff}.lightblue .np_datepicker_input:focus-visible{outline:2px solid #38c5f0da}.lightblue .np_datepicker_input:focus-visible{outline:1px solid #38c5f0da}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }], pipes: { "toNp": i4.ToNpPipe }, encapsulation: i0.ViewEncapsulation.None });
233
239
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: NpDatePickerComponent, decorators: [{
234
240
  type: Component,
235
241
  args: [{ selector: 'np-datepicker', providers: [
@@ -238,15 +244,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImpor
238
244
  useExisting: forwardRef(() => NpDatePickerComponent),
239
245
  multi: true,
240
246
  },
241
- ], encapsulation: ViewEncapsulation.None, template: "<div class=\"nepali-date-picker\" [ngClass]=\"theme\">\n <input\n class=\"np_datepicker_input\"\n type=\"text\"\n [value]=\"formattedDate\"\n (focus)=\"open()\"\n (keydown)=\"$event.preventDefault()\"\n aria-hidden=\"true\"\n />\n <a\n class=\"form-icon\"\n (click)=\"toggleOpen()\"\n [ngClass]=\"isOpen ? 'active' : ''\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\n <path\n d=\"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"\n />\n </svg>\n </a>\n <ng-container [ngTemplateOutlet]=\"dp\" *ngIf=\"isOpen\"></ng-container>\n</div>\n<!--.nepali-date-picker-->\n\n<ng-template #dp>\n <div class=\"datepicker__container\">\n <div class=\"datepicker__options-container\">\n <a class=\"prev-month\" (click)=\"prevMonth()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n d=\"M224 480c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25l192-192c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L77.25 256l169.4 169.4c12.5 12.5 12.5 32.75 0 45.25C240.4 476.9 232.2 480 224 480z\"\n />\n </svg>\n </a>\n <span class=\"datepicker__options-year-container\">\n <span> {{ \"Year\" | toNp: language:\"word\" }}: </span>\n <select (change)=\"selectYear($event)\">\n <option\n *ngFor=\"let year of years; index as i\"\n [value]=\"year\"\n [selected]=\"year == currentNepaliDate?.year\"\n >\n {{ year | toNp: language:\"number\" }}\n </option>\n </select>\n </span>\n <span class=\"datepicker__options-month-container\">\n <span>{{ \"Month\" | toNp: language:\"word\" }}: </span>\n <select (change)=\"selectMonth($event)\">\n <option\n *ngFor=\"\n let month of monthsMapping[language][monthDisplayType];\n index as i\n \"\n [value]=\"month\"\n [selected]=\"i === currentNepaliDate?.month\"\n >\n {{ month }}\n </option>\n </select>\n </span>\n <a class=\"next-month\" (click)=\"nextMonth()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n d=\"M96 480c-8.188 0-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L242.8 256L73.38 86.63c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l192 192c12.5 12.5 12.5 32.75 0 45.25l-192 192C112.4 476.9 104.2 480 96 480z\"\n />\n </svg>\n </a>\n </div>\n <div class=\"datepicker__days-container\">\n <div\n class=\"datepicker__days\"\n *ngFor=\"let day of daysMapping[language][dayDisplayType]; index as i\"\n >\n <div class=\"datepicker__weekday\">{{ day }}</div>\n <div\n class=\"datepicker__date-container\"\n *ngFor=\"let date of currentMonthData[i]\"\n >\n <div *ngIf=\"hasFuture; else noFutureDate\">\n <div\n *ngIf=\"date\"\n class=\"datepicker__date\"\n [class.datepicker__date--active]=\"\n date === selectedDate?.day &&\n currentNepaliDate.month === selectedDate?.month &&\n currentNepaliDate.year === selectedDate?.year\n \"\n [class.datepicker__date--current-day]=\"\n date === nepaliDateToday.day &&\n currentNepaliDate.month === nepaliDateToday.month &&\n currentNepaliDate.year === nepaliDateToday.year\n \"\n (click)=\"selectDate(date)\"\n >\n {{ date | toNp: language:\"number\" }}\n </div>\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\n <span>&nbsp;</span>\n </div>\n </div>\n\n <ng-template #noFutureDate>\n <div\n *ngIf=\"\n date &&\n this.currentNepaliDate.year * 365 +\n this.currentNepaliDate.month * 30 +\n date <=\n nepaliDateToday.day +\n nepaliDateToday.month * 30 +\n nepaliDateToday.year * 365;\n else disabledDates\n \"\n class=\"datepicker__date\"\n [class.datepicker__date--active]=\"\n date === selectedDate?.day &&\n currentNepaliDate.month === selectedDate?.month &&\n currentNepaliDate.year === selectedDate?.year\n \"\n [class.datepicker__date--current-day]=\"\n date === nepaliDateToday.day &&\n currentNepaliDate.month === nepaliDateToday.month &&\n currentNepaliDate.year === nepaliDateToday.year\n \"\n (click)=\"selectDate(date)\"\n >\n {{ date | toNp: language:\"number\" }}\n </div>\n\n <ng-template #disabledDates>\n <div class=\"datepicker__date datepicker__date--disabled\">\n {{ date | toNp: language:\"number\" }}\n </div>\n </ng-template>\n\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\n <span>&nbsp;</span>\n </div>\n </ng-template>\n </div>\n <!--.datepicker__date-container ends-->\n </div>\n <!--.datepicker__days ends-->\n </div>\n <!--.datepicker__days-container ends-->\n </div>\n <!--.datepicker__container ends-->\n</ng-template>\n", styles: [".nepali-date-picker.nepali-date-picker{position:relative;display:inline-block;font-family:Arial,Helvetica,sans-serif;font-size:1em}.nepali-date-picker a.active svg{fill:#e45415;opacity:.9}.nepali-date-picker .form-icon svg{width:14px;opacity:.3;position:absolute;right:8px;top:12px;cursor:pointer}.datepicker__container{border:1px solid #eee;background:#fff;width:294px;box-shadow:#64646f33 0 7px 29px;position:absolute;z-index:99999}.datepicker__options-container{padding:12px 5px;border-bottom:1px solid #eee;display:flex;justify-content:space-between;background-color:#e45415;color:#fff;line-height:25px}.datepicker__days-container{display:flex;justify-content:space-evenly;color:#777}.datepicker__days{text-align:center;border:1px solid #eee}.datepicker__weekday{padding:10px;background-color:#f3f3f3;margin-bottom:1px;font-weight:700}.datepicker__date-container{width:40px;height:40px;line-height:40px;border-bottom:1px solid #eee}.datepicker__date{cursor:pointer}.datepicker__date:hover{background-color:#eee}.datepicker__date.datepicker__date--disabled,.datepicker__date.datepicker__date--disabled:hover{background:#f3f3f3}.datepicker__date--active.datepicker__date--active{background-color:#e45415;color:#fff}.datepicker__options-container span{font-size:14px}select:focus,select:focus-visible{outline:1px solid #fff}.datepicker__container select{border:none;color:#fff;background:none;font-size:14px;width:58px}select option{color:#333}.np_datepicker_input{border:1px solid #eee;padding:10px;font-size:16px;color:#777}.np_datepicker_input:focus-visible{outline:2px solid #e45415}.prev-month,.next-month{padding:0;width:25px;height:25px;display:block;opacity:.5;border-radius:50%;background:#f3f3f3;cursor:pointer;text-align:center;line-height:23px}.next-month:hover,.prev-month:hover{background:#ccc}.prev-month svg,.next-month svg{max-width:8px;height:auto}.dark.nepali-date-picker a.active svg{fill:#000}.dark .datepicker__options-container{border-bottom:1px solid #000;background-color:#000;color:#fff}.dark select{color:#fff}.datepicker__date--current-day{border:2px solid rgba(0,0,0,.2);position:relative;z-index:999;height:100%}.dark .datepicker__date--active.datepicker__date--active{background-color:#000;color:#fff}.dark .np_datepicker_input:focus-visible{outline:2px solid #000}.dark .datepicker__weekday{background-color:#111}.dark .datepicker__days{background-color:#333;border:1px solid #111}.dark .datepicker__date:hover{background-color:#111;color:#fff}.dark .datepicker__date-container{border-bottom:1px solid #222}.light.nepali-date-picker a.active svg{fill:#777}.light .datepicker__options-container{border-bottom:none;background-color:#fff;color:#777}.light select{color:#777}.light .datepicker__date--active.datepicker__date--active{background-color:#aaa;color:#fff}.light .np_datepicker_input:focus-visible{outline:1px solid #ddd}.lightblue.nepali-date-picker a.active svg{fill:#38c5f0da}.lightblue .datepicker__options-container{background-color:#38c5f0da;color:#fff}.lightblue select{color:#fff}.lightblue .datepicker__date--active.datepicker__date--active{background-color:#38c5f0da;color:#fff}.lightblue .np_datepicker_input:focus-visible{outline:2px solid #38c5f0da}.lightblue .np_datepicker_input:focus-visible{outline:1px solid #38c5f0da}\n"] }]
247
+ ], encapsulation: ViewEncapsulation.None, template: "<div class=\"nepali-date-picker\" [ngClass]=\"theme\">\n <input\n class=\"np_datepicker_input\"\n type=\"text\"\n [value]=\"formattedDate\"\n (focus)=\"open()\"\n (keydown)=\"$event.preventDefault()\"\n aria-hidden=\"true\"\n placeholder=\"yyyy/mm/dd\"\n />\n <a\n class=\"form-icon\"\n (click)=\"toggleOpen()\"\n [ngClass]=\"isOpen ? 'active' : ''\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\n <path\n d=\"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"\n />\n </svg>\n </a>\n <ng-container [ngTemplateOutlet]=\"dp\" *ngIf=\"isOpen\"></ng-container>\n</div>\n<!--.nepali-date-picker-->\n\n<ng-template #dp>\n <div class=\"datepicker__container\">\n <div class=\"datepicker__options-container\">\n <a class=\"prev-month\" (click)=\"prevMonth()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n d=\"M224 480c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25l192-192c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L77.25 256l169.4 169.4c12.5 12.5 12.5 32.75 0 45.25C240.4 476.9 232.2 480 224 480z\"\n />\n </svg>\n </a>\n <span class=\"datepicker__options-year-container\">\n <span> {{ \"Year\" | toNp: language:\"word\" }}: </span>\n <select (change)=\"selectYear($event)\">\n <option\n *ngFor=\"let year of years; index as i\"\n [value]=\"year\"\n [selected]=\"year == currentNepaliDate?.year\"\n >\n {{ year | toNp: language:\"number\" }}\n </option>\n </select>\n </span>\n <span class=\"datepicker__options-month-container\">\n <span>{{ \"Month\" | toNp: language:\"word\" }}: </span>\n <select (change)=\"selectMonth($event)\">\n <option\n *ngFor=\"\n let month of monthsMapping[language][monthDisplayType];\n index as i\n \"\n [value]=\"month\"\n [selected]=\"i === currentNepaliDate?.month\"\n >\n {{ month }}\n </option>\n </select>\n </span>\n <a class=\"next-month\" (click)=\"nextMonth()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n d=\"M96 480c-8.188 0-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L242.8 256L73.38 86.63c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l192 192c12.5 12.5 12.5 32.75 0 45.25l-192 192C112.4 476.9 104.2 480 96 480z\"\n />\n </svg>\n </a>\n </div>\n <div class=\"datepicker__days-container\">\n <div\n class=\"datepicker__days\"\n *ngFor=\"let day of daysMapping[language][dayDisplayType]; index as i\"\n >\n <div class=\"datepicker__weekday\">{{ day }}</div>\n <div\n class=\"datepicker__date-container\"\n *ngFor=\"let date of currentMonthData[i]\"\n >\n <div *ngIf=\"hasFuture; else noFutureDate\">\n <div\n *ngIf=\"date\"\n class=\"datepicker__date\"\n [class.datepicker__date--active]=\"\n date === selectedDate?.day &&\n currentNepaliDate.month === selectedDate?.month &&\n currentNepaliDate.year === selectedDate?.year\n \"\n [class.datepicker__date--current-day]=\"\n date === nepaliDateToday.day &&\n currentNepaliDate.month === nepaliDateToday.month &&\n currentNepaliDate.year === nepaliDateToday.year\n \"\n (click)=\"selectDate(date)\"\n >\n {{ date | toNp: language:\"number\" }}\n </div>\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\n <span>&nbsp;</span>\n </div>\n </div>\n\n <ng-template #noFutureDate>\n <div\n *ngIf=\"\n date &&\n this.currentNepaliDate.year * 365 +\n this.currentNepaliDate.month * 30 +\n date <=\n nepaliDateToday.day +\n nepaliDateToday.month * 30 +\n nepaliDateToday.year * 365;\n else disabledDates\n \"\n class=\"datepicker__date\"\n [class.datepicker__date--active]=\"\n date === selectedDate?.day &&\n currentNepaliDate.month === selectedDate?.month &&\n currentNepaliDate.year === selectedDate?.year\n \"\n [class.datepicker__date--current-day]=\"\n date === nepaliDateToday.day &&\n currentNepaliDate.month === nepaliDateToday.month &&\n currentNepaliDate.year === nepaliDateToday.year\n \"\n (click)=\"selectDate(date)\"\n >\n {{ date | toNp: language:\"number\" }}\n </div>\n\n <ng-template #disabledDates>\n <div class=\"datepicker__date datepicker__date--disabled\">\n {{ date | toNp: language:\"number\" }}\n </div>\n </ng-template>\n\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\n <span>&nbsp;</span>\n </div>\n </ng-template>\n </div>\n <!--.datepicker__date-container ends-->\n </div>\n <!--.datepicker__days ends-->\n </div>\n <!--.datepicker__days-container ends-->\n </div>\n <!--.datepicker__container ends-->\n</ng-template>\n", styles: [".nepali-date-picker.nepali-date-picker{position:relative;display:inline-block;font-family:Arial,Helvetica,sans-serif;font-size:1em}.nepali-date-picker a.active svg{fill:#e45415;opacity:.9}.nepali-date-picker .form-icon svg{width:14px;opacity:.3;position:absolute;right:8px;top:12px;cursor:pointer}.datepicker__container{border:1px solid #eee;background:#fff;width:294px;box-shadow:#64646f33 0 7px 29px;position:absolute;z-index:99999}.datepicker__options-container{padding:12px 5px;border-bottom:1px solid #eee;display:flex;justify-content:space-between;background-color:#e45415;color:#fff;line-height:25px}.datepicker__days-container{display:flex;justify-content:space-evenly;color:#777}.datepicker__days{text-align:center;border:1px solid #eee}.datepicker__weekday{padding:10px;background-color:#f3f3f3;margin-bottom:1px;font-weight:700}.datepicker__date-container{width:40px;height:40px;line-height:40px;border-bottom:1px solid #eee}.datepicker__date{cursor:pointer}.datepicker__date:hover{background-color:#eee}.datepicker__date.datepicker__date--disabled,.datepicker__date.datepicker__date--disabled:hover{background:#f3f3f3}.datepicker__date--active.datepicker__date--active{background-color:#e45415;color:#fff}.datepicker__options-container span{font-size:14px}select:focus,select:focus-visible{outline:1px solid #fff}.datepicker__container select{border:none;color:#fff;background:none;font-size:14px;width:58px}select option{color:#333}.np_datepicker_input{border:1px solid #eee;padding:10px;font-size:16px;color:#777}.np_datepicker_input:focus-visible{outline:2px solid #e45415}.prev-month,.next-month{padding:0;width:25px;height:25px;display:block;opacity:.5;border-radius:50%;background:#f3f3f3;cursor:pointer;text-align:center;line-height:23px}.next-month:hover,.prev-month:hover{background:#ccc}.prev-month svg,.next-month svg{max-width:8px;height:auto}.dark.nepali-date-picker a.active svg{fill:#000}.dark .datepicker__options-container{border-bottom:1px solid #000;background-color:#000;color:#fff}.dark select{color:#fff}.datepicker__date--current-day{border:2px solid rgba(0,0,0,.2);position:relative;z-index:999;height:100%}.dark .datepicker__date--active.datepicker__date--active{background-color:#000;color:#fff}.dark .np_datepicker_input:focus-visible{outline:2px solid #000}.dark .datepicker__weekday{background-color:#111}.dark .datepicker__days{background-color:#333;border:1px solid #111}.dark .datepicker__date:hover{background-color:#111;color:#fff}.dark .datepicker__date-container{border-bottom:1px solid #222}.light.nepali-date-picker a.active svg{fill:#777}.light .datepicker__options-container{border-bottom:none;background-color:#fff;color:#777}.light select{color:#777}.light .datepicker__date--active.datepicker__date--active{background-color:#aaa;color:#fff}.light .np_datepicker_input:focus-visible{outline:1px solid #ddd}.lightblue.nepali-date-picker a.active svg{fill:#38c5f0da}.lightblue .datepicker__options-container{background-color:#38c5f0da;color:#fff}.lightblue select{color:#fff}.lightblue .datepicker__date--active.datepicker__date--active{background-color:#38c5f0da;color:#fff}.lightblue .np_datepicker_input:focus-visible{outline:2px solid #38c5f0da}.lightblue .np_datepicker_input:focus-visible{outline:1px solid #38c5f0da}\n"] }]
242
248
  }], ctorParameters: function () { return [{ type: i1.NpDatePickerService }, { type: i0.ElementRef }]; }, propDecorators: { theme: [{
243
249
  type: Input
244
250
  }], language: [{
245
251
  type: Input
246
252
  }], hasFuture: [{
247
253
  type: Input
254
+ }], format: [{
255
+ type: Input
248
256
  }], clickout: [{
249
257
  type: HostListener,
250
258
  args: ['document:click', ['$event']]
251
259
  }] } });
252
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnAtZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ucHgtbnAtZGF0ZXBpY2tlci9zcmMvbGliL25wLWRhdGVwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbnB4LW5wLWRhdGVwaWNrZXIvc3JjL2xpYi9ucC1kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFHWixLQUFLLEVBQ0wsVUFBVSxFQUNWLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFTekUsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7OztBQWV2RCxNQUFNLE9BQU8scUJBQXFCO0lBc0RoQyxZQUNTLFdBQWdDLEVBQy9CLElBQWdCO1FBRGpCLGdCQUFXLEdBQVgsV0FBVyxDQUFxQjtRQUMvQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBdkQxQixvQkFBZSxHQUFlLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUM1RCxzQkFBaUIsR0FBZSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFFOUQsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFLbkIsVUFBSyxHQUFhLEVBQUUsQ0FBQztRQUlyQixnQkFBVyxHQUFnQixXQUFXLENBQUM7UUFFdkMsa0JBQWEsR0FBaUIsYUFBYSxDQUFDO1FBRTVDLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFZixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLGtCQUFhLEdBQUcs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Qzs7a0hBclRVLHFCQUFxQjtzR0FBckIscUJBQXFCLGlMQVRyQjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixDQUFDO1lBQ3BELEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRiwwQkMvQkgsc3lMQXFKQTsyRkRuSGEscUJBQXFCO2tCQWJqQyxTQUFTOytCQUNFLGVBQWUsYUFHZDt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxzQkFBc0IsQ0FBQzs0QkFDcEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0YsaUJBQ2MsaUJBQWlCLENBQUMsSUFBSTttSUEwQnJDLEtBQUs7c0JBREosS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFtQk4sUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIE9uSW5pdCxcclxuICBFbGVtZW50UmVmLFxyXG4gIElucHV0LFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5wRGF0ZVBpY2tlclNlcnZpY2UgfSBmcm9tICcuL25wLWRhdGVwaWNrZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7XHJcbiAgTmVwYWxpRGF0ZSxcclxuICBNb250aERhdGEsXHJcbiAgRGF5c01hcHBpbmcsXHJcbiAgTW9udGhNYXBwaW5nLFxyXG4gIERhdGVGb3JtYXR0ZXIsXHJcbn0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGRheXNNYXBwaW5nLCBtb250aHNNYXBwaW5nIH0gZnJvbSAnLi9tYXBwaW5nJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbnAtZGF0ZXBpY2tlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25wLWRhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ucC1kYXRlLXBpY2tlci5jb21wb25lbnQuY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOcERhdGVQaWNrZXJDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTnBEYXRlUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgbmVwYWxpRGF0ZVRvZGF5OiBOZXBhbGlEYXRlID0geyBkYXk6IDAsIG1vbnRoOiAwLCB5ZWFyOiAwIH07XHJcbiAgY3VycmVudE5lcGFsaURhdGU6IE5lcGFsaURhdGUgPSB7IGRheTogMCwgbW9udGg6IDAsIHllYXI6IDAgfTtcclxuICBzZWxlY3RlZERhdGUhOiBOZXBhbGlEYXRlO1xyXG4gIGZvcm1hdHRlZERhdGUgPSAnJztcclxuICBjdXJyZW50RGF0ZTogYW55O1xyXG5cclxuICBkaXNwbGF5RGF0ZSE6IHN0cmluZztcclxuXHJcbiAgeWVhcnM6IG51bWJlcltdID0gW107XHJcblxyXG4gIGN1cnJlbnRNb250aERhdGEhOiBhbnk7XHJcblxyXG4gIGRheXNNYXBwaW5nOiBEYXlzTWFwcGluZyA9IGRheXNNYXBwaW5nO1xyXG5cclxuICBtb250aHNNYXBwaW5nOiBNb250aE1hcHBpbmcgPSBtb250aHNNYXBwaW5nO1xyXG5cclxuICBpc09wZW4gPSBmYWxzZTtcclxuXHJcbiAgaGlkZUlucHV0ID0gZmFsc2U7XHJcblxyXG4gIGFsd2F5c1Zpc2libGUgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICB0aGVtZSE6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBsYW5ndWFnZTogJ2VuJyB8ICduZScgPSAnbmUnO1xyXG5cclxuICBASW5wdXQoKSBoYXNGdXR1cmU6IEJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBtb250aERpc3BsYXlUeXBlOiAnZGVmYXVsdCcgfCAnbW9kZXJuJyB8ICdzaG9ydCcgPSAnZGVmYXVsdCc7XHJcblxyXG4gIGRheURpc3BsYXlUeXBlOiAnZGVmYXVsdCcgfCAnc2hvcnQnID0gJ3Nob3J0JztcclxuXHJcbiAgZGF0ZUZvcm1hdHRlcjogRGF0ZUZvcm1hdHRlciA9IChzZWxlY3RlZERhdGU6IE5lcGFsaURhdGUpID0+IHtcclxuICAgIGNvbnN0IGRkID1cclxuICAgICAgc2VsZWN0ZWREYXRlLmRheSA8IDEwID8gJzAnICsgc2VsZWN0ZWREYXRlLmRheSA6IHNlbGVjdGVkRGF0ZS5kYXk7XHJcbiAgICBjb25zdCBtbSA9XHJcbiAgICAgIHNlbGVjdGVkRGF0ZS5tb250aCA8IDEwXHJcbiAgICAgICAgPyAnMCcgKyAoc2VsZWN0ZWREYXRlLm1vbnRoICsgMSlcclxuICAgICAgICA6IHNlbGVjdGVkRGF0ZS5tb250aCArIDE7XHJcbiAgICByZXR1cm4gYCR7ZGR9LyR7bW19LyR7dGhpcy5zZWxlY3RlZERhdGUueWVhcn1gO1xyXG4gIH07XHJcblxyXG4gIGluaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBjbGlja291dChldmVudDogYW55KSB7XHJcbiAgICBpZiAoIXRoaXMuZVJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcclxuICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgX25lcGFsaURhdGU6IE5wRGF0ZVBpY2tlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGVSZWY6IEVsZW1lbnRSZWZcclxuICApIHtcclxuICAgIHRoaXMuY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgdGhpcy5uZXBhbGlEYXRlVG9kYXkgPSBfbmVwYWxpRGF0ZS5lbmdUb05lcERhdGUoXHJcbiAgICAgIHRoaXMuY3VycmVudERhdGUuZ2V0RGF0ZSgpLFxyXG4gICAgICB0aGlzLmN1cnJlbnREYXRlLmdldE1vbnRoKCksXHJcbiAgICAgIHRoaXMuY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZXRDdXJyZW50RGF0ZSgpO1xyXG4gICAgdGhpcy5zZWxlY3REYXRlKHRoaXMuY3VycmVudE5lcGFsaURhdGUuZGF5KTtcclxuICAgIHRoaXMucG9wdWxhdGVZZWFycygpO1xyXG4gICAgdGhpcy5zZXRDdXJyZW50TW9udGhEYXRhKCk7XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLmN1cnJlbnRNb250aERhdGEpO1xyXG4gIH1cclxuXHJcbiAgcG9wdWxhdGVZZWFycygpIHtcclxuICAgIGZvciAobGV0IGkgPSAyMDAxOyBpIDw9IDIwOTk7IGkrKykge1xyXG4gICAgICB0aGlzLnllYXJzLnB1c2goaSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNlbGVjdFllYXIoZTogYW55KSB7XHJcbiAgICB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLnllYXIgPSBwYXJzZUludChlLnRhcmdldC52YWx1ZSk7XHJcblxyXG4gICAgY29uc3QgbmV3RGF0ZSA9IHtcclxuICAgICAgZGF5OiB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLmRheSxcclxuICAgICAgbW9udGg6IHRoaXMuY3VycmVudE5lcGFsaURhdGUubW9udGgsXHJcbiAgICAgIHllYXI6IHRoaXMuY3VycmVudE5lcGFsaURhdGUueWVhcixcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5jdXJyZW50RGF0ZSA9IHRoaXMuX25lcGFsaURhdGUubmVwVG9FbmdEYXRlKFxyXG4gICAgICBuZXdEYXRlLmRheSxcclxuICAgICAgbmV3RGF0ZS5tb250aCxcclxuICAgICAgbmV3RGF0ZS55ZWFyXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuc2V0Q3VycmVudE1vbnRoRGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0TW9udGgoZTogYW55KSB7XHJcbiAgICBsZXQgbW9udGggPSBlLnRhcmdldC52YWx1ZTtcclxuICAgIGxldCBuZXBfbW9udGhfaW5kZXggPVxyXG4gICAgICB0aGlzLm1vbnRoc01hcHBpbmdbdGhpcy5sYW5ndWFnZV1bdGhpcy5tb250aERpc3BsYXlUeXBlXT8uaW5kZXhPZihcclxuICAgICAgICBtb250aFxyXG4gICAgICApID8/IDA7XHJcblxyXG4gICAgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aCA9IG5lcF9tb250aF9pbmRleDtcclxuXHJcbiAgICBjb25zdCBuZXdOZXBhbGlEYXRlID0ge1xyXG4gICAgICBkYXk6IHRoaXMuY3VycmVudE5lcGFsaURhdGUuZGF5LFxyXG4gICAgICBtb250aDogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aCxcclxuICAgICAgeWVhcjogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS55ZWFyLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmN1cnJlbnREYXRlID0gdGhpcy5fbmVwYWxpRGF0ZS5uZXBUb0VuZ0RhdGUoXHJcbiAgICAgIG5ld05lcGFsaURhdGUuZGF5LFxyXG4gICAgICBuZXdOZXBhbGlEYXRlLm1vbnRoLFxyXG4gICAgICBuZXdOZXBhbGlEYXRlLnllYXJcclxuICAgICk7XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLmN1cnJlbnREYXRlKTtcclxuICAgIHRoaXMuc2V0Q3VycmVudE1vbnRoRGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRDdXJyZW50TW9udGhEYXRhKCkge1xyXG4gICAgdGhpcy5jdXJyZW50TW9udGhEYXRhID0ge1xyXG4gICAgICAwOiBbXSxcclxuICAgICAgMTogW10sXHJcbiAgICAgIDI6IFtdLFxyXG4gICAgICAzOiBbXSxcclxuICAgICAgNDogW10sXHJcbiAgICAgIDU6IFtdLFxyXG4gICAgICA2OiBbXSxcclxuICAgIH07XHJcbiAgfVxyXG4gIGZvcm1hdFZhbHVlKCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlKSB7XHJcbiAgICAgIHRoaXMuZm9ybWF0dGVkRGF0ZSA9IHRoaXMuZGF0ZUZvcm1hdHRlcih0aGlzLnNlbGVjdGVkRGF0ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xyXG4gIHByb3BhZ2F0ZVRvdWNoID0gKF86IGFueSkgPT4ge307XHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnNlbGVjdGVkRGF0ZSk7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSB2YWx1ZTtcclxuICAgICAgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZSA9IHZhbHVlO1xyXG4gICAgICB0aGlzLmZvcm1hdFZhbHVlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKCkge31cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcclxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICBzZXRDdXJyZW50RGF0ZSgpIHtcclxuICAgIGlmICghdGhpcy5zZWxlY3RlZERhdGUpIHtcclxuICAgICAgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZSA9IHRoaXMuX25lcGFsaURhdGUuZW5nVG9OZXBEYXRlKFxyXG4gICAgICAgIHRoaXMuY3VycmVudERhdGUuZ2V0RGF0ZSgpLFxyXG4gICAgICAgIHRoaXMuY3VycmVudERhdGUuZ2V0TW9udGgoKSxcclxuICAgICAgICB0aGlzLmN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKClcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHsgZGF5LCBtb250aCwgeWVhciB9ID0gdGhpcy5zZWxlY3RlZERhdGU7XHJcbiAgICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUgPSB0aGlzLl9uZXBhbGlEYXRlLmVuZ1RvTmVwRGF0ZShkYXksIG1vbnRoLCB5ZWFyKTtcclxuICAgICAgdGhpcy5jdXJyZW50RGF0ZSA9IHRoaXMuX25lcGFsaURhdGUubmVwVG9FbmdEYXRlKFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLnllYXIsXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUubW9udGgsXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUuZGF5XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRDdXJyZW50TW9udGhEYXRhKCkge1xyXG4gICAgdGhpcy5yZXNldEN1cnJlbnRNb250aERhdGEoKTtcclxuXHJcbiAgICAvLyBmaWxsIHRoZSBjdXJyZW50TW9udGhEYXRhIHdpdGggY3VycmVudCBkYXRlXHJcbiAgICBsZXQgZGF5ID0gdGhpcy5jdXJyZW50RGF0ZS5nZXREYXkoKTtcclxuXHJcbiAgICB0aGlzLmN1cnJlbnRNb250aERhdGFbZGF5XSA9IFt0aGlzLmN1cnJlbnROZXBhbGlEYXRlLmRheV07XHJcblxyXG4gICAgLy8gZmlsbCB0aGUgY3VycmVudE1vbnRoRGF0YSB3aXRoIGRheSBiZWZvcmUgdGhlIGN1cnJlbnQgZGF0ZVxyXG4gICAgdGhpcy5zZXRNb250aERhdGFCZWZvcmUoZGF5IC0gMSwgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5kYXkgLSAxKTtcclxuXHJcbiAgICB2YXIgY3VycmVudE1vbnRoTWF4VmFsdWUgPVxyXG4gICAgICB0aGlzLl9uZXBhbGlEYXRlLm5lcGFsaU1vbnRoc1t0aGlzLmN1cnJlbnROZXBhbGlEYXRlLnllYXIgLSAyMDAwXVtcclxuICAgICAgICB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLm1vbnRoXHJcbiAgICAgIF07XHJcblxyXG4gICAgLy8gZmlsbCB0aGUgY3VycmVudE1vbnRoRGF0YSB3aXRoIGRheSBhZnRlciB0aGUgY3VycmVudCBkYXRlXHJcbiAgICB0aGlzLnNldE1vbnRoRGF0YUFmdGVyKFxyXG4gICAgICBkYXkgKyAxLFxyXG4gICAgICB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLmRheSArIDEsXHJcbiAgICAgIGN1cnJlbnRNb250aE1heFZhbHVlXHJcbiAgICApO1xyXG5cclxuICAgIC8vIHdlIG5lZWQgc29tZSBlbXB0eSBzcGFjZXMgaW4gcGxhY2Ugc28gdGhhdCB0aGUgZGF0ZXMgYXJlIHNob3duIGluIGNvcnJlY3Qgb3JkZXJcclxuICAgIC8vIGVnIGlmIHRoZSAxc3QgZGF5IHN0YXJ0cyBvbiBtb25kYXkgdGhlbiB3ZSBuZWVkIDEgZW1wdHkgc3BhY2UgZm9yIG5vbiBleGlzdGluZ24gZGF0ZSBvbiBTdW5kYXlcclxuICAgIHRoaXMuY3JlYXRlRW1wdHlTcGFjZXMoKTtcclxuICB9XHJcblxyXG4gIHNldE1vbnRoRGF0YUJlZm9yZShkYXk6IGFueSwgZGF0ZTogYW55KSB7XHJcbiAgICBpZiAoZGF0ZSA+PSAxKSB7XHJcbiAgICAgIGlmIChkYXkgPCAwKSB7XHJcbiAgICAgICAgZGF5ID0gNjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmN1cnJlbnRNb250aERhdGFbZGF5XSA9IFtkYXRlLCAuLi50aGlzLmN1cnJlbnRNb250aERhdGFbZGF5XV07XHJcbiAgICAgIHRoaXMuc2V0TW9udGhEYXRhQmVmb3JlKC0tZGF5LCAtLWRhdGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0TW9udGhEYXRhQWZ0ZXIoZGF5OiBhbnksIGRhdGU6IGFueSwgY3VycmVudE1vbnRoTWF4VmFsdWU6IGFueSkge1xyXG4gICAgY29uc3QgbmVwYWxpRGF0ZSA9IHtcclxuICAgICAgZGF5OiBkYXRlLFxyXG4gICAgICBtb250aDogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aCxcclxuICAgICAgeWVhcjogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS55ZWFyLFxyXG4gICAgfTtcclxuXHJcbiAgICAvLyAgb25seSBhZGQgdGhlIGRhdGEgaWYgdGhlIGN1cnJlbnQgbW9udGggbWF0Y2hlc1xyXG4gICAgaWYgKGRhdGUgPD0gY3VycmVudE1vbnRoTWF4VmFsdWUpIHtcclxuICAgICAgaWYgKGRheSA+IDYpIHtcclxuICAgICAgICBkYXkgPSAwO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoRGF0YVtkYXldID0gWy4uLnRoaXMuY3VycmVudE1vbnRoRGF0YVtkYXldLCBkYXRlXTtcclxuICAgICAgdGhpcy5zZXRNb250aERhdGFBZnRlcigrK2RheSwgKytkYXRlLCBjdXJyZW50TW9udGhNYXhWYWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjcmVhdGVFbXB0eVNwYWNlcygpIHtcclxuICAgIC8vIGZpcnN0IGZpbmQgb3V0IHdoaWNoIGRheSBoYXMgdGhlIDFzdFxyXG4gICAgLy8gIGlmIGl0cyBhIFN1bmRheSwgdGhlbiBkb24ndCBkbyBhbnl0aGluZyBlbHNlIGFkZCAxIHNwYWNlIG9uIGVhY2ggcHJldmlvdXMgZGF5XHJcbiAgICBsZXQgZGF5SW5kZXggPSAwO1xyXG4gICAgbGV0IHZhbHVlOiBhbnk7XHJcbiAgICBPYmplY3QudmFsdWVzKHRoaXMuY3VycmVudE1vbnRoRGF0YSkubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICB2YWx1ZSA9IGl0ZW07XHJcbiAgICAgIGlmICh2YWx1ZS5pbmNsdWRlcygxKSkge1xyXG4gICAgICAgIGRheUluZGV4ID0gaW5kZXg7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHZhbHVlLmluY2x1ZGVzKDEpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKGRheUluZGV4KSB7XHJcbiAgICAgIGZvciAoZGF5SW5kZXg7IGRheUluZGV4ID4gMDsgZGF5SW5kZXgtLSkge1xyXG4gICAgICAgIGNvbnN0IG1vbnRoRGF0YSA9IHRoaXMuY3VycmVudE1vbnRoRGF0YVtkYXlJbmRleCAtIDFdO1xyXG4gICAgICAgIHRoaXMuY3VycmVudE1vbnRoRGF0YVtkYXlJbmRleCAtIDFdID0gW251bGwsIC4uLm1vbnRoRGF0YV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdERhdGUoZGF5OiBudW1iZXIpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0geyAuLi50aGlzLmN1cnJlbnROZXBhbGlEYXRlLCBkYXkgfTtcclxuICAgIHRoaXMuZm9ybWF0VmFsdWUoKTtcclxuICAgIHRoaXMuY2xvc2UoKTtcclxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMuc2VsZWN0ZWREYXRlKTtcclxuICB9XHJcblxyXG4gIHByZXZNb250aCgpIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnROZXBhbGlEYXRlLm1vbnRoIDw9IDApIHtcclxuICAgICAgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aCA9IDExO1xyXG4gICAgICB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLnllYXItLTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUubW9udGgtLTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBuZXdOZXBhbGlEYXRlID0ge1xyXG4gICAgICBkYXk6IHRoaXMuY3VycmVudE5lcGFsaURhdGUuZGF5LFxyXG4gICAgICBtb250aDogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aCxcclxuICAgICAgeWVhcjogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS55ZWFyLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3VycmVudERhdGUgPSB0aGlzLl9uZXBhbGlEYXRlLm5lcFRvRW5nRGF0ZShcclxuICAgICAgbmV3TmVwYWxpRGF0ZS5kYXksXHJcbiAgICAgIG5ld05lcGFsaURhdGUubW9udGgsXHJcbiAgICAgIG5ld05lcGFsaURhdGUueWVhclxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLnNldEN1cnJlbnRNb250aERhdGEoKTtcclxuICB9XHJcblxyXG4gIG5leHRNb250aCgpIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnROZXBhbGlEYXRlLm1vbnRoID49IDExKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUubW9udGggPSAwO1xyXG4gICAgICB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLnllYXIrKztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUubW9udGgrKztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBuZXdEYXRlID0ge1xyXG4gICAgICBkYXk6IHRoaXMuY3VycmVudE5lcGFsaURhdGUuZGF5LFxyXG4gICAgICBtb250aDogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aCxcclxuICAgICAgeWVhcjogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS55ZWFyLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3VycmVudERhdGUgPSB0aGlzLl9uZXBhbGlEYXRlLm5lcFRvRW5nRGF0ZShcclxuICAgICAgbmV3RGF0ZS5kYXksXHJcbiAgICAgIG5ld0RhdGUubW9udGgsXHJcbiAgICAgIG5ld0RhdGUueWVhclxyXG4gICAgKTtcclxuICAgIHRoaXMuc2V0Q3VycmVudE1vbnRoRGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlT3BlbigpIHtcclxuICAgIGlmICghdGhpcy5hbHdheXNWaXNpYmxlKSB7XHJcbiAgICAgIHRoaXMuaXNPcGVuID0gIXRoaXMuaXNPcGVuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3BlbigpIHtcclxuICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGNsb3NlKCkge1xyXG4gICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcclxuICAgIC8vdGhpcy5zZXRDdXJyZW50RGF0ZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibmVwYWxpLWRhdGUtcGlja2VyXCIgW25nQ2xhc3NdPVwidGhlbWVcIj5cbiAgPGlucHV0XG4gICAgY2xhc3M9XCJucF9kYXRlcGlja2VyX2lucHV0XCJcbiAgICB0eXBlPVwidGV4dFwiXG4gICAgW3ZhbHVlXT1cImZvcm1hdHRlZERhdGVcIlxuICAgIChmb2N1cyk9XCJvcGVuKClcIlxuICAgIChrZXlkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAvPlxuICA8YVxuICAgIGNsYXNzPVwiZm9ybS1pY29uXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlT3BlbigpXCJcbiAgICBbbmdDbGFzc109XCJpc09wZW4gPyAnYWN0aXZlJyA6ICcnXCJcbiAgPlxuICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNDQ4IDUxMlwiPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0xNTIgNjRIMjk2VjI0QzI5NiAxMC43NSAzMDYuNyAwIDMyMCAwQzMzMy4zIDAgMzQ0IDEwLjc1IDM0NCAyNFY2NEgzODRDNDE5LjMgNjQgNDQ4IDkyLjY1IDQ0OCAxMjhWNDQ4QzQ0OCA0ODMuMyA0MTkuMyA1MTIgMzg0IDUxMkg2NEMyOC42NSA1MTIgMCA0ODMuMyAwIDQ0OFYxMjhDMCA5Mi42NSAyOC42NSA2NCA2NCA2NEgxMDRWMjRDMTA0IDEwLjc1IDExNC43IDAgMTI4IDBDMTQxLjMgMCAxNTIgMTAuNzUgMTUyIDI0VjY0ek00OCA0NDhDNDggNDU2LjggNTUuMTYgNDY0IDY0IDQ2NEgzODRDMzkyLjggNDY0IDQwMCA0NTYuOCA0MDAgNDQ4VjE5Mkg0OFY0NDh6XCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gIDwvYT5cbiAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJkcFwiICpuZ0lmPVwiaXNPcGVuXCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjwhLS0ubmVwYWxpLWRhdGUtcGlja2VyLS0+XG5cbjxuZy10ZW1wbGF0ZSAjZHA+XG4gIDxkaXYgY2xhc3M9XCJkYXRlcGlja2VyX19jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlcl9fb3B0aW9ucy1jb250YWluZXJcIj5cbiAgICAgIDxhIGNsYXNzPVwicHJldi1tb250aFwiIChjbGljayk9XCJwcmV2TW9udGgoKVwiPlxuICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDMyMCA1MTJcIj5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgZD1cIk0yMjQgNDgwYy04LjE4OCAwLTE2LjM4LTMuMTI1LTIyLjYyLTkuMzc1bC0xOTItMTkyYy0xMi41LTEyLjUtMTIuNS0zMi43NSAwLTQ1LjI1bDE5Mi0xOTJjMTIuNS0xMi41IDMyLjc1LTEyLjUgNDUuMjUgMHMxMi41IDMyLjc1IDAgNDUuMjVMNzcuMjUgMjU2bDE2OS40IDE2OS40YzEyLjUgMTIuNSAxMi41IDMyLjc1IDAgNDUuMjVDMjQwLjQgNDc2LjkgMjMyLjIgNDgwIDIyNCA0ODB6XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYT5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZGF0ZXBpY2tlcl9fb3B0aW9ucy15ZWFyLWNvbnRhaW5lclwiPlxuICAgICAgICA8c3Bhbj4ge3sgXCJZZWFyXCIgfCB0b05wOiBsYW5ndWFnZTpcIndvcmRcIiB9fTogPC9zcGFuPlxuICAgICAgICA8c2VsZWN0IChjaGFuZ2UpPVwic2VsZWN0WWVhcigkZXZlbnQpXCI+XG4gICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHllYXIgb2YgeWVhcnM7IGluZGV4IGFzIGlcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInllYXJcIlxuICAgICAgICAgICAgW3NlbGVjdGVkXT1cInllYXIgPT0gY3VycmVudE5lcGFsaURhdGU/LnllYXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IHllYXIgfCB0b05wOiBsYW5ndWFnZTpcIm51bWJlclwiIH19XG4gICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlcGlja2VyX19vcHRpb25zLW1vbnRoLWNvbnRhaW5lclwiPlxuICAgICAgICA8c3Bhbj57eyBcIk1vbnRoXCIgfCB0b05wOiBsYW5ndWFnZTpcIndvcmRcIiB9fTogPC9zcGFuPlxuICAgICAgICA8c2VsZWN0IChjaGFuZ2UpPVwic2VsZWN0TW9udGgoJGV2ZW50KVwiPlxuICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICBsZXQgbW9udGggb2YgbW9udGhzTWFwcGluZ1tsYW5ndWFnZV1bbW9udGhEaXNwbGF5VHlwZV07XG4gICAgICAgICAgICAgIGluZGV4IGFzIGlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbdmFsdWVdPVwibW9udGhcIlxuICAgICAgICAgICAgW3NlbGVjdGVkXT1cImkgPT09IGN1cnJlbnROZXBhbGlEYXRlPy5tb250aFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgbW9udGggfX1cbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICA8L3NwYW4+XG4gICAgICA8YSBjbGFzcz1cIm5leHQtbW9udGhcIiAoY2xpY2spPVwibmV4dE1vbnRoKClcIj5cbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAzMjAgNTEyXCI+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNOTYgNDgwYy04LjE4OCAwLTE2LjM4LTMuMTI1LTIyLjYyLTkuMzc1Yy0xMi41LTEyLjUtMTIuNS0zMi43NSAwLTQ1LjI1TDI0Mi44IDI1Nkw3My4zOCA4Ni42M2MtMTIuNS0xMi41LTEyLjUtMzIuNzUgMC00NS4yNXMzMi43NS0xMi41IDQ1LjI1IDBsMTkyIDE5MmMxMi41IDEyLjUgMTIuNSAzMi43NSAwIDQ1LjI1bC0xOTIgMTkyQzExMi40IDQ3Ni45IDEwNC4yIDQ4MCA5NiA0ODB6XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlcl9fZGF5cy1jb250YWluZXJcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJkYXRlcGlja2VyX19kYXlzXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IGRheSBvZiBkYXlzTWFwcGluZ1tsYW5ndWFnZV1bZGF5RGlzcGxheVR5cGVdOyBpbmRleCBhcyBpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXJfX3dlZWtkYXlcIj57eyBkYXkgfX08L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZGF0ZXBpY2tlcl9fZGF0ZS1jb250YWluZXJcIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXRlIG9mIGN1cnJlbnRNb250aERhdGFbaV1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImhhc0Z1dHVyZTsgZWxzZSBub0Z1dHVyZURhdGVcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nSWY9XCJkYXRlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkYXRlcGlja2VyX19kYXRlXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmRhdGVwaWNrZXJfX2RhdGUtLWFjdGl2ZV09XCJcbiAgICAgICAgICAgICAgICBkYXRlID09PSBzZWxlY3RlZERhdGU/LmRheSAmJlxuICAgICAgICAgICAgICAgIGN1cnJlbnROZXBhbGlEYXRlLm1vbnRoID09PSBzZWxlY3RlZERhdGU/Lm1vbnRoICYmXG4gICAgICAgICAgICAgICAgY3VycmVudE5lcGFsaURhdGUueWVhciA9PT0gc2VsZWN0ZWREYXRlPy55ZWFyXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5kYXRlcGlja2VyX19kYXRlLS1jdXJyZW50LWRheV09XCJcbiAgICAgICAgICAgICAgICBkYXRlID09PSBuZXBhbGlEYXRlVG9kYXkuZGF5ICYmXG4gICAgICAgICAgICAgICAgY3VycmVudE5lcGFsaURhdGUubW9udGggPT09IG5lcGFsaURhdGVUb2RheS5tb250aCAmJlxuICAgICAgICAgICAgICAgIGN1cnJlbnROZXBhbGlEYXRlLnllYXIgPT09IG5lcGFsaURhdGVUb2RheS55ZWFyXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3REYXRlKGRhdGUpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgZGF0ZSB8IHRvTnA6IGxhbmd1YWdlOlwibnVtYmVyXCIgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFkYXRlXCIgY2xhc3M9XCJkYXRlcGlja2VyX19kYXRlLS1kaXNhYmxlZFwiPlxuICAgICAgICAgICAgICA8c3Bhbj4mbmJzcDs8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9GdXR1cmVEYXRlPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgIGRhdGUgJiZcbiAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUueWVhciAqIDM2NSArXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUubW9udGggKiAzMCArXG4gICAgICAgICAgICAgICAgICAgIGRhdGUgPD1cbiAgICAgICAgICAgICAgICAgICAgbmVwYWxpRGF0ZVRvZGF5LmRheSArXG4gICAgICAgICAgICAgICAgICAgICAgbmVwYWxpRGF0ZVRvZGF5Lm1vbnRoICogMzAgK1xuICAgICAgICAgICAgICAgICAgICAgIG5lcGFsaURhdGVUb2RheS55ZWFyICogMzY1O1xuICAgICAgICAgICAgICAgIGVsc2UgZGlzYWJsZWREYXRlc1xuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBjbGFzcz1cImRhdGVwaWNrZXJfX2RhdGVcIlxuICAgICAgICAgICAgICBbY2xhc3MuZGF0ZXBpY2tlcl9fZGF0ZS0tYWN0aXZlXT1cIlxuICAgICAgICAgICAgICAgIGRhdGUgPT09IHNlbGVjdGVkRGF0ZT8uZGF5ICYmXG4gICAgICAgICAgICAgICAgY3VycmVudE5lcGFsaURhdGUubW9udGggPT09IHNlbGVjdGVkRGF0ZT8ubW9udGggJiZcbiAgICAgICAgICAgICAgICBjdXJyZW50TmVwYWxpRGF0ZS55ZWFyID09PSBzZWxlY3RlZERhdGU/LnllYXJcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmRhdGVwaWNrZXJfX2RhdGUtLWN1cnJlbnQtZGF5XT1cIlxuICAgICAgICAgICAgICAgIGRhdGUgPT09IG5lcGFsaURhdGVUb2RheS5kYXkgJiZcbiAgICAgICAgICAgICAgICBjdXJyZW50TmVwYWxpRGF0ZS5tb250aCA9PT0gbmVwYWxpRGF0ZVRvZGF5Lm1vbnRoICYmXG4gICAgICAgICAgICAgICAgY3VycmVudE5lcGFsaURhdGUueWVhciA9PT0gbmVwYWxpRGF0ZVRvZGF5LnllYXJcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdERhdGUoZGF0ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBkYXRlIHwgdG9OcDogbGFuZ3VhZ2U6XCJudW1iZXJcIiB9fVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGlzYWJsZWREYXRlcz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXJfX2RhdGUgZGF0ZXBpY2tlcl9fZGF0ZS0tZGlzYWJsZWRcIj5cbiAgICAgICAgICAgICAgICB7eyBkYXRlIHwgdG9OcDogbGFuZ3VhZ2U6XCJudW1iZXJcIiB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZGF0ZVwiIGNsYXNzPVwiZGF0ZXBpY2tlcl9fZGF0ZS0tZGlzYWJsZWRcIj5cbiAgICAgICAgICAgICAgPHNwYW4+Jm5ic3A7PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0uZGF0ZXBpY2tlcl9fZGF0ZS1jb250YWluZXIgZW5kcy0tPlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tLmRhdGVwaWNrZXJfX2RheXMgZW5kcy0tPlxuICAgIDwvZGl2PlxuICAgIDwhLS0uZGF0ZXBpY2tlcl9fZGF5cy1jb250YWluZXIgZW5kcy0tPlxuICA8L2Rpdj5cbiAgPCEtLS5kYXRlcGlja2VyX19jb250YWluZXIgZW5kcy0tPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnAtZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ucHgtbnAtZGF0ZXBpY2tlci9zcmMvbGliL25wLWRhdGVwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbnB4LW5wLWRhdGVwaWNrZXIvc3JjL2xpYi9ucC1kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFHWixLQUFLLEVBQ0wsVUFBVSxFQUNWLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFTekUsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7OztBQWV2RCxNQUFNLE9BQU8scUJBQXFCO0lBOERoQyxZQUNTLFdBQWdDLEVBQy9CLElBQWdCO1FBRGpCLGdCQUFXLEdBQVgsV0FBVyxDQUFxQjtRQUMvQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBL0QxQixvQkFBZSxHQUFlLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUM1RCxzQkFBaUIsR0FBZSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFFOUQsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFLbkIsVUFBSyxHQUFhLEVBQUUsQ0FBQztRQUlyQixnQkFBVyxHQUFnQixXQUFXLENBQUM7UUFFdkMsa0JBQWEsR0FBaUIsYUFBYSxDQUFDO1FBRTVDLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFZixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLGtCQUFhLEdBQUcs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SyxDQUFDO1FBQ3BCLHdCQUF3QjtJQUMxQixDQUFDOztrSEE3VFUscUJBQXFCO3NHQUFyQixxQkFBcUIsbU1BVHJCO1FBQ1Q7WUFDRSxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUM7WUFDcEQsS0FBSyxFQUFFLElBQUk7U0FDWjtLQUNGLDBCQy9CSCxzMExBc0pBOzJGRHBIYSxxQkFBcUI7a0JBYmpDLFNBQVM7K0JBQ0UsZUFBZSxhQUdkO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHNCQUFzQixDQUFDOzRCQUNwRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJO21JQTBCckMsS0FBSztzQkFESixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkF5Qk4sUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIE9uSW5pdCxcclxuICBFbGVtZW50UmVmLFxyXG4gIElucHV0LFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5wRGF0ZVBpY2tlclNlcnZpY2UgfSBmcm9tICcuL25wLWRhdGVwaWNrZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7XHJcbiAgTmVwYWxpRGF0ZSxcclxuICBNb250aERhdGEsXHJcbiAgRGF5c01hcHBpbmcsXHJcbiAgTW9udGhNYXBwaW5nLFxyXG4gIERhdGVGb3JtYXR0ZXIsXHJcbn0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGRheXNNYXBwaW5nLCBtb250aHNNYXBwaW5nIH0gZnJvbSAnLi9tYXBwaW5nJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbnAtZGF0ZXBpY2tlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25wLWRhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ucC1kYXRlLXBpY2tlci5jb21wb25lbnQuY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOcERhdGVQaWNrZXJDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTnBEYXRlUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgbmVwYWxpRGF0ZVRvZGF5OiBOZXBhbGlEYXRlID0geyBkYXk6IDAsIG1vbnRoOiAwLCB5ZWFyOiAwIH07XHJcbiAgY3VycmVudE5lcGFsaURhdGU6IE5lcGFsaURhdGUgPSB7IGRheTogMCwgbW9udGg6IDAsIHllYXI6IDAgfTtcclxuICBzZWxlY3RlZERhdGUhOiBOZXBhbGlEYXRlO1xyXG4gIGZvcm1hdHRlZERhdGUgPSAnJztcclxuICBjdXJyZW50RGF0ZTogYW55O1xyXG5cclxuICBkaXNwbGF5RGF0ZSE6IHN0cmluZztcclxuXHJcbiAgeWVhcnM6IG51bWJlcltdID0gW107XHJcblxyXG4gIGN1cnJlbnRNb250aERhdGEhOiBhbnk7XHJcblxyXG4gIGRheXNNYXBwaW5nOiBEYXlzTWFwcGluZyA9IGRheXNNYXBwaW5nO1xyXG5cclxuICBtb250aHNNYXBwaW5nOiBNb250aE1hcHBpbmcgPSBtb250aHNNYXBwaW5nO1xyXG5cclxuICBpc09wZW4gPSBmYWxzZTtcclxuXHJcbiAgaGlkZUlucHV0ID0gZmFsc2U7XHJcblxyXG4gIGFsd2F5c1Zpc2libGUgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICB0aGVtZSE6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBsYW5ndWFnZTogJ2VuJyB8ICduZScgPSAnbmUnO1xyXG5cclxuICBASW5wdXQoKSBoYXNGdXR1cmU6IEJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSBmb3JtYXQ6IHN0cmluZyA9ICd5eS1tbS1kZCc7XHJcblxyXG4gIG1vbnRoRGlzcGxheVR5cGU6ICdkZWZhdWx0JyB8ICdtb2Rlcm4nIHwgJ3Nob3J0JyA9ICdkZWZhdWx0JztcclxuXHJcbiAgZGF5RGlzcGxheVR5cGU6ICdkZWZhdWx0JyB8ICdzaG9ydCcgPSAnc2hvcnQnO1xyXG5cclxuICBkYXRlRm9ybWF0dGVyOiBEYXRlRm9ybWF0dGVyID0gKHNlbGVjdGVkRGF0ZTogTmVwYWxpRGF0ZSkgPT4ge1xyXG4gICAgY29uc3QgZGQgPVxyXG4gICAgICBzZWxlY3RlZERhdGUuZGF5IDwgMTAgPyAnMCcgKyBzZWxlY3RlZERhdGUuZGF5IDogc2VsZWN0ZWREYXRlLmRheTtcclxuICAgIGNvbnN0IG1tID1cclxuICAgICAgc2VsZWN0ZWREYXRlLm1vbnRoIDwgMTBcclxuICAgICAgICA/ICcwJyArIChzZWxlY3RlZERhdGUubW9udGggKyAxKVxyXG4gICAgICAgIDogc2VsZWN0ZWREYXRlLm1vbnRoICsgMTtcclxuXHJcbiAgICAgc3dpdGNoKHRoaXMuZm9ybWF0KXtcclxuICAgICAgY2FzZSAnZGQtbW0teXknOlxyXG4gICAgICAgIHJldHVybiBgJHtkZH0vJHttbX0vJHt0aGlzLnNlbGVjdGVkRGF0ZS55ZWFyfWA7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuc2VsZWN0ZWREYXRlLnllYXJ9LyR7bW19LyR7ZGR9YDtcclxuICAgIH0gICBcclxuICB9O1xyXG5cclxuICBpbml0aWFsaXplZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgY2xpY2tvdXQoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKCF0aGlzLmVSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XHJcbiAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIF9uZXBhbGlEYXRlOiBOcERhdGVQaWNrZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBlUmVmOiBFbGVtZW50UmVmXHJcbiAgKSB7XHJcbiAgICB0aGlzLmN1cnJlbnREYXRlID0gbmV3IERhdGUoKTtcclxuICAgIHRoaXMubmVwYWxpRGF0ZVRvZGF5ID0gX25lcGFsaURhdGUuZW5nVG9OZXBEYXRlKFxyXG4gICAgICB0aGlzLmN1cnJlbnREYXRlLmdldERhdGUoKSxcclxuICAgICAgdGhpcy5jdXJyZW50RGF0ZS5nZXRNb250aCgpLFxyXG4gICAgICB0aGlzLmN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc2V0Q3VycmVudERhdGUoKTtcclxuICAgIC8vdGhpcy5zZWxlY3REYXRlKHRoaXMuY3VycmVudE5lcGFsaURhdGUuZGF5KTtcclxuICAgIHRoaXMucG9wdWxhdGVZZWFycygpO1xyXG4gICAgdGhpcy5zZXRDdXJyZW50TW9udGhEYXRhKCk7XHJcbiAgIC8vIGNvbnNvbGUubG9nKHRoaXMuY3VycmVudE1vbnRoRGF0YSk7XHJcbiAgfVxyXG5cclxuICBwb3B1bGF0ZVllYXJzKCkge1xyXG4gICAgZm9yIChsZXQgaSA9IDIwMDE7IGkgPD0gMjA5OTsgaSsrKSB7XHJcbiAgICAgIHRoaXMueWVhcnMucHVzaChpKTtcclxuICAgIH1cclxuICB9XHJcbiAgc2VsZWN0WWVhcihlOiBhbnkpIHtcclxuICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUueWVhciA9IHBhcnNlSW50KGUudGFyZ2V0LnZhbHVlKTtcclxuXHJcbiAgICBjb25zdCBuZXdEYXRlID0ge1xyXG4gICAgICBkYXk6IHRoaXMuY3VycmVudE5lcGFsaURhdGUuZGF5LFxyXG4gICAgICBtb250aDogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aCxcclxuICAgICAgeWVhcjogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS55ZWFyLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmN1cnJlbnREYXRlID0gdGhpcy5fbmVwYWxpRGF0ZS5uZXBUb0VuZ0RhdGUoXHJcbiAgICAgIG5ld0RhdGUuZGF5LFxyXG4gICAgICBuZXdEYXRlLm1vbnRoLFxyXG4gICAgICBuZXdEYXRlLnllYXJcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zZXRDdXJyZW50TW9udGhEYXRhKCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RNb250aChlOiBhbnkpIHtcclxuICAgIGxldCBtb250aCA9IGUudGFyZ2V0LnZhbHVlO1xyXG4gICAgbGV0IG5lcF9tb250aF9pbmRleCA9XHJcbiAgICAgIHRoaXMubW9udGhzTWFwcGluZ1t0aGlzLmxhbmd1YWdlXVt0aGlzLm1vbnRoRGlzcGxheVR5cGVdPy5pbmRleE9mKFxyXG4gICAgICAgIG1vbnRoXHJcbiAgICAgICkgPz8gMDtcclxuXHJcbiAgICB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLm1vbnRoID0gbmVwX21vbnRoX2luZGV4O1xyXG5cclxuICAgIGNvbnN0IG5ld05lcGFsaURhdGUgPSB7XHJcbiAgICAgIGRheTogdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5kYXksXHJcbiAgICAgIG1vbnRoOiB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLm1vbnRoLFxyXG4gICAgICB5ZWFyOiB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLnllYXIsXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuY3VycmVudERhdGUgPSB0aGlzLl9uZXBhbGlEYXRlLm5lcFRvRW5nRGF0ZShcclxuICAgICAgbmV3TmVwYWxpRGF0ZS5kYXksXHJcbiAgICAgIG5ld05lcGFsaURhdGUubW9udGgsXHJcbiAgICAgIG5ld05lcGFsaURhdGUueWVhclxyXG4gICAgKTtcclxuICAgLy8gY29uc29sZS5sb2codGhpcy5jdXJyZW50RGF0ZSk7XHJcbiAgICB0aGlzLnNldEN1cnJlbnRNb250aERhdGEoKTtcclxuICB9XHJcblxyXG4gIHJlc2V0Q3VycmVudE1vbnRoRGF0YSgpIHtcclxuICAgIHRoaXMuY3VycmVudE1vbnRoRGF0YSA9IHtcclxuICAgICAgMDogW10sXHJcbiAgICAgIDE6IFtdLFxyXG4gICAgICAyOiBbXSxcclxuICAgICAgMzogW10sXHJcbiAgICAgIDQ6IFtdLFxyXG4gICAgICA1OiBbXSxcclxuICAgICAgNjogW10sXHJcbiAgICB9O1xyXG4gIH1cclxuICBmb3JtYXRWYWx1ZSgpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZSkge1xyXG4gICAgICB0aGlzLmZvcm1hdHRlZERhdGUgPSB0aGlzLmRhdGVGb3JtYXR0ZXIodGhpcy5zZWxlY3RlZERhdGUpO1xyXG4gICAgfVxyXG4gIH1cclxuICBwcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KSA9PiB7fTtcclxuICBwcm9wYWdhdGVUb3VjaCA9IChfOiBhbnkpID0+IHt9O1xyXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5zZWxlY3RlZERhdGUpO1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gdmFsdWU7XHJcbiAgICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUgPSB2YWx1ZTtcclxuICAgICAgdGhpcy5mb3JtYXRWYWx1ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICByZWdpc3Rlck9uVG91Y2hlZCgpIHt9XHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XHJcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgc2V0Q3VycmVudERhdGUoKSB7XHJcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWREYXRlKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUgPSB0aGlzLl9uZXBhbGlEYXRlLmVuZ1RvTmVwRGF0ZShcclxuICAgICAgICB0aGlzLmN1cnJlbnREYXRlLmdldERhdGUoKSxcclxuICAgICAgICB0aGlzLmN1cnJlbnREYXRlLmdldE1vbnRoKCksXHJcbiAgICAgICAgdGhpcy5jdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCB7IGRheSwgbW9udGgsIHllYXIgfSA9IHRoaXMuc2VsZWN0ZWREYXRlO1xyXG4gICAgICB0aGlzLmN1cnJlbnROZXBhbGlEYXRlID0gdGhpcy5fbmVwYWxpRGF0ZS5lbmdUb05lcERhdGUoZGF5LCBtb250aCwgeWVhcik7XHJcbiAgICAgIHRoaXMuY3VycmVudERhdGUgPSB0aGlzLl9uZXBhbGlEYXRlLm5lcFRvRW5nRGF0ZShcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZS55ZWFyLFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLm1vbnRoLFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLmRheVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0Q3VycmVudE1vbnRoRGF0YSgpIHtcclxuICAgIHRoaXMucmVzZXRDdXJyZW50TW9udGhEYXRhKCk7XHJcblxyXG4gICAgLy8gZmlsbCB0aGUgY3VycmVudE1vbnRoRGF0YSB3aXRoIGN1cnJlbnQgZGF0ZVxyXG4gICAgbGV0IGRheSA9IHRoaXMuY3VycmVudERhdGUuZ2V0RGF5KCk7XHJcblxyXG4gICAgdGhpcy5jdXJyZW50TW9udGhEYXRhW2RheV0gPSBbdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5kYXldO1xyXG5cclxuICAgIC8vIGZpbGwgdGhlIGN1cnJlbnRNb250aERhdGEgd2l0aCBkYXkgYmVmb3JlIHRoZSBjdXJyZW50IGRhdGVcclxuICAgIHRoaXMuc2V0TW9udGhEYXRhQmVmb3JlKGRheSAtIDEsIHRoaXMuY3VycmVudE5lcGFsaURhdGUuZGF5IC0gMSk7XHJcblxyXG4gICAgdmFyIGN1cnJlbnRNb250aE1heFZhbHVlID1cclxuICAgICAgdGhpcy5fbmVwYWxpRGF0ZS5uZXBhbGlNb250aHNbdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS55ZWFyIC0gMjAwMF1bXHJcbiAgICAgICAgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aFxyXG4gICAgICBdO1xyXG5cclxuICAgIC8vIGZpbGwgdGhlIGN1cnJlbnRNb250aERhdGEgd2l0aCBkYXkgYWZ0ZXIgdGhlIGN1cnJlbnQgZGF0ZVxyXG4gICAgdGhpcy5zZXRNb250aERhdGFBZnRlcihcclxuICAgICAgZGF5ICsgMSxcclxuICAgICAgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5kYXkgKyAxLFxyXG4gICAgICBjdXJyZW50TW9udGhNYXhWYWx1ZVxyXG4gICAgKTtcclxuXHJcbiAgICAvLyB3ZSBuZWVkIHNvbWUgZW1wdHkgc3BhY2VzIGluIHBsYWNlIHNvIHRoYXQgdGhlIGRhdGVzIGFyZSBzaG93biBpbiBjb3JyZWN0IG9yZGVyXHJcbiAgICAvLyBlZyBpZiB0aGUgMXN0IGRheSBzdGFydHMgb24gbW9uZGF5IHRoZW4gd2UgbmVlZCAxIGVtcHR5IHNwYWNlIGZvciBub24gZXhpc3RpbmduIGRhdGUgb24gU3VuZGF5XHJcbiAgICB0aGlzLmNyZWF0ZUVtcHR5U3BhY2VzKCk7XHJcbiAgfVxyXG5cclxuICBzZXRNb250aERhdGFCZWZvcmUoZGF5OiBhbnksIGRhdGU6IGFueSkge1xyXG4gICAgaWYgKGRhdGUgPj0gMSkge1xyXG4gICAgICBpZiAoZGF5IDwgMCkge1xyXG4gICAgICAgIGRheSA9IDY7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jdXJyZW50TW9udGhEYXRhW2RheV0gPSBbZGF0ZSwgLi4udGhpcy5jdXJyZW50TW9udGhEYXRhW2RheV1dO1xyXG4gICAgICB0aGlzLnNldE1vbnRoRGF0YUJlZm9yZSgtLWRheSwgLS1kYXRlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldE1vbnRoRGF0YUFmdGVyKGRheTogYW55LCBkYXRlOiBhbnksIGN1cnJlbnRNb250aE1heFZhbHVlOiBhbnkpIHtcclxuICAgIGNvbnN0IG5lcGFsaURhdGUgPSB7XHJcbiAgICAgIGRheTogZGF0ZSxcclxuICAgICAgbW9udGg6IHRoaXMuY3VycmVudE5lcGFsaURhdGUubW9udGgsXHJcbiAgICAgIHllYXI6IHRoaXMuY3VycmVudE5lcGFsaURhdGUueWVhcixcclxuICAgIH07XHJcblxyXG4gICAgLy8gIG9ubHkgYWRkIHRoZSBkYXRhIGlmIHRoZSBjdXJyZW50IG1vbnRoIG1hdGNoZXNcclxuICAgIGlmIChkYXRlIDw9IGN1cnJlbnRNb250aE1heFZhbHVlKSB7XHJcbiAgICAgIGlmIChkYXkgPiA2KSB7XHJcbiAgICAgICAgZGF5ID0gMDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmN1cnJlbnRNb250aERhdGFbZGF5XSA9IFsuLi50aGlzLmN1cnJlbnRNb250aERhdGFbZGF5XSwgZGF0ZV07XHJcbiAgICAgIHRoaXMuc2V0TW9udGhEYXRhQWZ0ZXIoKytkYXksICsrZGF0ZSwgY3VycmVudE1vbnRoTWF4VmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlRW1wdHlTcGFjZXMoKSB7XHJcbiAgICAvLyBmaXJzdCBmaW5kIG91dCB3aGljaCBkYXkgaGFzIHRoZSAxc3RcclxuICAgIC8vICBpZiBpdHMgYSBTdW5kYXksIHRoZW4gZG9uJ3QgZG8gYW55dGhpbmcgZWxzZSBhZGQgMSBzcGFjZSBvbiBlYWNoIHByZXZpb3VzIGRheVxyXG4gICAgbGV0IGRheUluZGV4ID0gMDtcclxuICAgIGxldCB2YWx1ZTogYW55O1xyXG4gICAgT2JqZWN0LnZhbHVlcyh0aGlzLmN1cnJlbnRNb250aERhdGEpLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgdmFsdWUgPSBpdGVtO1xyXG4gICAgICBpZiAodmFsdWUuaW5jbHVkZXMoMSkpIHtcclxuICAgICAgICBkYXlJbmRleCA9IGluZGV4O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB2YWx1ZS5pbmNsdWRlcygxKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChkYXlJbmRleCkge1xyXG4gICAgICBmb3IgKGRheUluZGV4OyBkYXlJbmRleCA+IDA7IGRheUluZGV4LS0pIHtcclxuICAgICAgICBjb25zdCBtb250aERhdGEgPSB0aGlzLmN1cnJlbnRNb250aERhdGFbZGF5SW5kZXggLSAxXTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRNb250aERhdGFbZGF5SW5kZXggLSAxXSA9IFtudWxsLCAuLi5tb250aERhdGFdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWxlY3REYXRlKGRheTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IHsgLi4udGhpcy5jdXJyZW50TmVwYWxpRGF0ZSwgZGF5IH07XHJcbiAgICB0aGlzLmZvcm1hdFZhbHVlKCk7XHJcbiAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnNlbGVjdGVkRGF0ZSk7XHJcbiAgfVxyXG5cclxuICBwcmV2TW9udGgoKSB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aCA8PSAwKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUubW9udGggPSAxMTtcclxuICAgICAgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS55ZWFyLS07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLm1vbnRoLS07XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbmV3TmVwYWxpRGF0ZSA9IHtcclxuICAgICAgZGF5OiB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLmRheSxcclxuICAgICAgbW9udGg6IHRoaXMuY3VycmVudE5lcGFsaURhdGUubW9udGgsXHJcbiAgICAgIHllYXI6IHRoaXMuY3VycmVudE5lcGFsaURhdGUueWVhcixcclxuICAgIH07XHJcbiAgICB0aGlzLmN1cnJlbnREYXRlID0gdGhpcy5fbmVwYWxpRGF0ZS5uZXBUb0VuZ0RhdGUoXHJcbiAgICAgIG5ld05lcGFsaURhdGUuZGF5LFxyXG4gICAgICBuZXdOZXBhbGlEYXRlLm1vbnRoLFxyXG4gICAgICBuZXdOZXBhbGlEYXRlLnllYXJcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zZXRDdXJyZW50TW9udGhEYXRhKCk7XHJcbiAgfVxyXG5cclxuICBuZXh0TW9udGgoKSB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50TmVwYWxpRGF0ZS5tb250aCA+PSAxMSkge1xyXG4gICAgICB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLm1vbnRoID0gMDtcclxuICAgICAgdGhpcy5jdXJyZW50TmVwYWxpRGF0ZS55ZWFyKys7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLm1vbnRoKys7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbmV3RGF0ZSA9IHtcclxuICAgICAgZGF5OiB0aGlzLmN1cnJlbnROZXBhbGlEYXRlLmRheSxcclxuICAgICAgbW9udGg6IHRoaXMuY3VycmVudE5lcGFsaURhdGUubW9udGgsXHJcbiAgICAgIHllYXI6IHRoaXMuY3VycmVudE5lcGFsaURhdGUueWVhcixcclxuICAgIH07XHJcbiAgICB0aGlzLmN1cnJlbnREYXRlID0gdGhpcy5fbmVwYWxpRGF0ZS5uZXBUb0VuZ0RhdGUoXHJcbiAgICAgIG5ld0RhdGUuZGF5LFxyXG4gICAgICBuZXdEYXRlLm1vbnRoLFxyXG4gICAgICBuZXdEYXRlLnllYXJcclxuICAgICk7XHJcbiAgICB0aGlzLnNldEN1cnJlbnRNb250aERhdGEoKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZU9wZW4oKSB7XHJcbiAgICBpZiAoIXRoaXMuYWx3YXlzVmlzaWJsZSkge1xyXG4gICAgICB0aGlzLmlzT3BlbiA9ICF0aGlzLmlzT3BlbjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW4oKSB7XHJcbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpIHtcclxuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XHJcbiAgICAvL3RoaXMuc2V0Q3VycmVudERhdGUoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm5lcGFsaS1kYXRlLXBpY2tlclwiIFtuZ0NsYXNzXT1cInRoZW1lXCI+XG4gIDxpbnB1dFxuICAgIGNsYXNzPVwibnBfZGF0ZXBpY2tlcl9pbnB1dFwiXG4gICAgdHlwZT1cInRleHRcIlxuICAgIFt2YWx1ZV09XCJmb3JtYXR0ZWREYXRlXCJcbiAgICAoZm9jdXMpPVwib3BlbigpXCJcbiAgICAoa2V5ZG93bik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICBwbGFjZWhvbGRlcj1cInl5eXkvbW0vZGRcIlxuICAvPlxuICA8YVxuICAgIGNsYXNzPVwiZm9ybS1pY29uXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlT3BlbigpXCJcbiAgICBbbmdDbGFzc109XCJpc09wZW4gPyAnYWN0aXZlJyA6ICcnXCJcbiAgPlxuICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNDQ4IDUxMlwiPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0xNTIgNjRIMjk2VjI0QzI5NiAxMC43NSAzMDYuNyAwIDMyMCAwQzMzMy4zIDAgMzQ0IDEwLjc1IDM0NCAyNFY2NEgzODRDNDE5LjMgNjQgNDQ4IDkyLjY1IDQ0OCAxMjhWNDQ4QzQ0OCA0ODMuMyA0MTkuMyA1MTIgMzg0IDUxMkg2NEMyOC42NSA1MTIgMCA0ODMuMyAwIDQ0OFYxMjhDMCA5Mi42NSAyOC42NSA2NCA2NCA2NEgxMDRWMjRDMTA0IDEwLjc1IDExNC43IDAgMTI4IDBDMTQxLjMgMCAxNTIgMTAuNzUgMTUyIDI0VjY0ek00OCA0NDhDNDggNDU2LjggNTUuMTYgNDY0IDY0IDQ2NEgzODRDMzkyLjggNDY0IDQwMCA0NTYuOCA0MDAgNDQ4VjE5Mkg0OFY0NDh6XCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gIDwvYT5cbiAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJkcFwiICpuZ0lmPVwiaXNPcGVuXCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjwhLS0ubmVwYWxpLWRhdGUtcGlja2VyLS0+XG5cbjxuZy10ZW1wbGF0ZSAjZHA+XG4gIDxkaXYgY2xhc3M9XCJkYXRlcGlja2VyX19jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlcl9fb3B0aW9ucy1jb250YWluZXJcIj5cbiAgICAgIDxhIGNsYXNzPVwicHJldi1tb250aFwiIChjbGljayk9XCJwcmV2TW9udGgoKVwiPlxuICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDMyMCA1MTJcIj5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgZD1cIk0yMjQgNDgwYy04LjE4OCAwLTE2LjM4LTMuMTI1LTIyLjYyLTkuMzc1bC0xOTItMTkyYy0xMi41LTEyLjUtMTIuNS0zMi43NSAwLTQ1LjI1bDE5Mi0xOTJjMTIuNS0xMi41IDMyLjc1LTEyLjUgNDUuMjUgMHMxMi41IDMyLjc1IDAgNDUuMjVMNzcuMjUgMjU2bDE2OS40IDE2OS40YzEyLjUgMTIuNSAxMi41IDMyLjc1IDAgNDUuMjVDMjQwLjQgNDc2LjkgMjMyLjIgNDgwIDIyNCA0ODB6XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYT5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZGF0ZXBpY2tlcl9fb3B0aW9ucy15ZWFyLWNvbnRhaW5lclwiPlxuICAgICAgICA8c3Bhbj4ge3sgXCJZZWFyXCIgfCB0b05wOiBsYW5ndWFnZTpcIndvcmRcIiB9fTogPC9zcGFuPlxuICAgICAgICA8c2VsZWN0IChjaGFuZ2UpPVwic2VsZWN0WWVhcigkZXZlbnQpXCI+XG4gICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHllYXIgb2YgeWVhcnM7IGluZGV4IGFzIGlcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInllYXJcIlxuICAgICAgICAgICAgW3NlbGVjdGVkXT1cInllYXIgPT0gY3VycmVudE5lcGFsaURhdGU/LnllYXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IHllYXIgfCB0b05wOiBsYW5ndWFnZTpcIm51bWJlclwiIH19XG4gICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlcGlja2VyX19vcHRpb25zLW1vbnRoLWNvbnRhaW5lclwiPlxuICAgICAgICA8c3Bhbj57eyBcIk1vbnRoXCIgfCB0b05wOiBsYW5ndWFnZTpcIndvcmRcIiB9fTogPC9zcGFuPlxuICAgICAgICA8c2VsZWN0IChjaGFuZ2UpPVwic2VsZWN0TW9udGgoJGV2ZW50KVwiPlxuICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICBsZXQgbW9udGggb2YgbW9udGhzTWFwcGluZ1tsYW5ndWFnZV1bbW9udGhEaXNwbGF5VHlwZV07XG4gICAgICAgICAgICAgIGluZGV4IGFzIGlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbdmFsdWVdPVwibW9udGhcIlxuICAgICAgICAgICAgW3NlbGVjdGVkXT1cImkgPT09IGN1cnJlbnROZXBhbGlEYXRlPy5tb250aFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgbW9udGggfX1cbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICA8L3NwYW4+XG4gICAgICA8YSBjbGFzcz1cIm5leHQtbW9udGhcIiAoY2xpY2spPVwibmV4dE1vbnRoKClcIj5cbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAzMjAgNTEyXCI+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNOTYgNDgwYy04LjE4OCAwLTE2LjM4LTMuMTI1LTIyLjYyLTkuMzc1Yy0xMi41LTEyLjUtMTIuNS0zMi43NSAwLTQ1LjI1TDI0Mi44IDI1Nkw3My4zOCA4Ni42M2MtMTIuNS0xMi41LTEyLjUtMzIuNzUgMC00NS4yNXMzMi43NS0xMi41IDQ1LjI1IDBsMTkyIDE5MmMxMi41IDEyLjUgMTIuNSAzMi43NSAwIDQ1LjI1bC0xOTIgMTkyQzExMi40IDQ3Ni45IDEwNC4yIDQ4MCA5NiA0ODB6XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlcl9fZGF5cy1jb250YWluZXJcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJkYXRlcGlja2VyX19kYXlzXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IGRheSBvZiBkYXlzTWFwcGluZ1tsYW5ndWFnZV1bZGF5RGlzcGxheVR5cGVdOyBpbmRleCBhcyBpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXJfX3dlZWtkYXlcIj57eyBkYXkgfX08L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZGF0ZXBpY2tlcl9fZGF0ZS1jb250YWluZXJcIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXRlIG9mIGN1cnJlbnRNb250aERhdGFbaV1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImhhc0Z1dHVyZTsgZWxzZSBub0Z1dHVyZURhdGVcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nSWY9XCJkYXRlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkYXRlcGlja2VyX19kYXRlXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmRhdGVwaWNrZXJfX2RhdGUtLWFjdGl2ZV09XCJcbiAgICAgICAgICAgICAgICBkYXRlID09PSBzZWxlY3RlZERhdGU/LmRheSAmJlxuICAgICAgICAgICAgICAgIGN1cnJlbnROZXBhbGlEYXRlLm1vbnRoID09PSBzZWxlY3RlZERhdGU/Lm1vbnRoICYmXG4gICAgICAgICAgICAgICAgY3VycmVudE5lcGFsaURhdGUueWVhciA9PT0gc2VsZWN0ZWREYXRlPy55ZWFyXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5kYXRlcGlja2VyX19kYXRlLS1jdXJyZW50LWRheV09XCJcbiAgICAgICAgICAgICAgICBkYXRlID09PSBuZXBhbGlEYXRlVG9kYXkuZGF5ICYmXG4gICAgICAgICAgICAgICAgY3VycmVudE5lcGFsaURhdGUubW9udGggPT09IG5lcGFsaURhdGVUb2RheS5tb250aCAmJlxuICAgICAgICAgICAgICAgIGN1cnJlbnROZXBhbGlEYXRlLnllYXIgPT09IG5lcGFsaURhdGVUb2RheS55ZWFyXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3REYXRlKGRhdGUpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgZGF0ZSB8IHRvTnA6IGxhbmd1YWdlOlwibnVtYmVyXCIgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFkYXRlXCIgY2xhc3M9XCJkYXRlcGlja2VyX19kYXRlLS1kaXNhYmxlZFwiPlxuICAgICAgICAgICAgICA8c3Bhbj4mbmJzcDs8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9GdXR1cmVEYXRlPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgIGRhdGUgJiZcbiAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUueWVhciAqIDM2NSArXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudE5lcGFsaURhdGUubW9udGggKiAzMCArXG4gICAgICAgICAgICAgICAgICAgIGRhdGUgPD1cbiAgICAgICAgICAgICAgICAgICAgbmVwYWxpRGF0ZVRvZGF5LmRheSArXG4gICAgICAgICAgICAgICAgICAgICAgbmVwYWxpRGF0ZVRvZGF5Lm1vbnRoICogMzAgK1xuICAgICAgICAgICAgICAgICAgICAgIG5lcGFsaURhdGVUb2RheS55ZWFyICogMzY1O1xuICAgICAgICAgICAgICAgIGVsc2UgZGlzYWJsZWREYXRlc1xuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBjbGFzcz1cImRhdGVwaWNrZXJfX2RhdGVcIlxuICAgICAgICAgICAgICBbY2xhc3MuZGF0ZXBpY2tlcl9fZGF0ZS0tYWN0aXZlXT1cIlxuICAgICAgICAgICAgICAgIGRhdGUgPT09IHNlbGVjdGVkRGF0ZT8uZGF5ICYmXG4gICAgICAgICAgICAgICAgY3VycmVudE5lcGFsaURhdGUubW9udGggPT09IHNlbGVjdGVkRGF0ZT8ubW9udGggJiZcbiAgICAgICAgICAgICAgICBjdXJyZW50TmVwYWxpRGF0ZS55ZWFyID09PSBzZWxlY3RlZERhdGU/LnllYXJcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmRhdGVwaWNrZXJfX2RhdGUtLWN1cnJlbnQtZGF5XT1cIlxuICAgICAgICAgICAgICAgIGRhdGUgPT09IG5lcGFsaURhdGVUb2RheS5kYXkgJiZcbiAgICAgICAgICAgICAgICBjdXJyZW50TmVwYWxpRGF0ZS5tb250aCA9PT0gbmVwYWxpRGF0ZVRvZGF5Lm1vbnRoICYmXG4gICAgICAgICAgICAgICAgY3VycmVudE5lcGFsaURhdGUueWVhciA9PT0gbmVwYWxpRGF0ZVRvZGF5LnllYXJcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdERhdGUoZGF0ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBkYXRlIHwgdG9OcDogbGFuZ3VhZ2U6XCJudW1iZXJcIiB9fVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGlzYWJsZWREYXRlcz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXJfX2RhdGUgZGF0ZXBpY2tlcl9fZGF0ZS0tZGlzYWJsZWRcIj5cbiAgICAgICAgICAgICAgICB7eyBkYXRlIHwgdG9OcDogbGFuZ3VhZ2U6XCJudW1iZXJcIiB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZGF0ZVwiIGNsYXNzPVwiZGF0ZXBpY2tlcl9fZGF0ZS0tZGlzYWJsZWRcIj5cbiAgICAgICAgICAgICAgPHNwYW4+Jm5ic3A7PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0uZGF0ZXBpY2tlcl9fZGF0ZS1jb250YWluZXIgZW5kcy0tPlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tLmRhdGVwaWNrZXJfX2RheXMgZW5kcy0tPlxuICAgIDwvZGl2PlxuICAgIDwhLS0uZGF0ZXBpY2tlcl9fZGF5cy1jb250YWluZXIgZW5kcy0tPlxuICA8L2Rpdj5cbiAgPCEtLS5kYXRlcGlja2VyX19jb250YWluZXIgZW5kcy0tPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -405,6 +405,7 @@ class NpDatePickerComponent {
405
405
  this.alwaysVisible = false;
406
406
  this.language = 'ne';
407
407
  this.hasFuture = true;
408
+ this.format = 'yy-mm-dd';
408
409
  this.monthDisplayType = 'default';
409
410
  this.dayDisplayType = 'short';
410
411
  this.dateFormatter = (selectedDate) => {
@@ -412,7 +413,12 @@ class NpDatePickerComponent {
412
413
  const mm = selectedDate.month < 10
413
414
  ? '0' + (selectedDate.month + 1)
414
415
  : selectedDate.month + 1;
415
- return `${dd}/${mm}/${this.selectedDate.year}`;
416
+ switch (this.format) {
417
+ case 'dd-mm-yy':
418
+ return `${dd}/${mm}/${this.selectedDate.year}`;
419
+ default:
420
+ return `${this.selectedDate.year}/${mm}/${dd}`;
421
+ }
416
422
  };
417
423
  this.initialized = false;
418
424
  this.propagateChange = (_) => { };
@@ -427,10 +433,10 @@ class NpDatePickerComponent {
427
433
  }
428
434
  ngOnInit() {
429
435
  this.setCurrentDate();
430
- this.selectDate(this.currentNepaliDate.day);
436
+ //this.selectDate(this.currentNepaliDate.day);
431
437
  this.populateYears();
432
438
  this.setCurrentMonthData();
433
- console.log(this.currentMonthData);
439
+ // console.log(this.currentMonthData);
434
440
  }
435
441
  populateYears() {
436
442
  for (let i = 2001; i <= 2099; i++) {
@@ -458,7 +464,7 @@ class NpDatePickerComponent {
458
464
  year: this.currentNepaliDate.year,
459
465
  };
460
466
  this.currentDate = this._nepaliDate.nepToEngDate(newNepaliDate.day, newNepaliDate.month, newNepaliDate.year);
461
- console.log(this.currentDate);
467
+ // console.log(this.currentDate);
462
468
  this.setCurrentMonthData();
463
469
  }
464
470
  resetCurrentMonthData() {
@@ -608,13 +614,13 @@ class NpDatePickerComponent {
608
614
  }
609
615
  }
610
616
  NpDatePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: NpDatePickerComponent, deps: [{ token: NpDatePickerService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
611
- NpDatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: NpDatePickerComponent, selector: "np-datepicker", inputs: { theme: "theme", language: "language", hasFuture: "hasFuture" }, host: { listeners: { "document:click": "clickout($event)" } }, providers: [
617
+ NpDatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: NpDatePickerComponent, selector: "np-datepicker", inputs: { theme: "theme", language: "language", hasFuture: "hasFuture", format: "format" }, host: { listeners: { "document:click": "clickout($event)" } }, providers: [
612
618
  {
613
619
  provide: NG_VALUE_ACCESSOR,
614
620
  useExisting: forwardRef(() => NpDatePickerComponent),
615
621
  multi: true,
616
622
  },
617
- ], ngImport: i0, template: "<div class=\"nepali-date-picker\" [ngClass]=\"theme\">\n <input\n class=\"np_datepicker_input\"\n type=\"text\"\n [value]=\"formattedDate\"\n (focus)=\"open()\"\n (keydown)=\"$event.preventDefault()\"\n aria-hidden=\"true\"\n />\n <a\n class=\"form-icon\"\n (click)=\"toggleOpen()\"\n [ngClass]=\"isOpen ? 'active' : ''\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\n <path\n d=\"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"\n />\n </svg>\n </a>\n <ng-container [ngTemplateOutlet]=\"dp\" *ngIf=\"isOpen\"></ng-container>\n</div>\n<!--.nepali-date-picker-->\n\n<ng-template #dp>\n <div class=\"datepicker__container\">\n <div class=\"datepicker__options-container\">\n <a class=\"prev-month\" (click)=\"prevMonth()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n d=\"M224 480c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25l192-192c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L77.25 256l169.4 169.4c12.5 12.5 12.5 32.75 0 45.25C240.4 476.9 232.2 480 224 480z\"\n />\n </svg>\n </a>\n <span class=\"datepicker__options-year-container\">\n <span> {{ \"Year\" | toNp: language:\"word\" }}: </span>\n <select (change)=\"selectYear($event)\">\n <option\n *ngFor=\"let year of years; index as i\"\n [value]=\"year\"\n [selected]=\"year == currentNepaliDate?.year\"\n >\n {{ year | toNp: language:\"number\" }}\n </option>\n </select>\n </span>\n <span class=\"datepicker__options-month-container\">\n <span>{{ \"Month\" | toNp: language:\"word\" }}: </span>\n <select (change)=\"selectMonth($event)\">\n <option\n *ngFor=\"\n let month of monthsMapping[language][monthDisplayType];\n index as i\n \"\n [value]=\"month\"\n [selected]=\"i === currentNepaliDate?.month\"\n >\n {{ month }}\n </option>\n </select>\n </span>\n <a class=\"next-month\" (click)=\"nextMonth()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n d=\"M96 480c-8.188 0-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L242.8 256L73.38 86.63c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l192 192c12.5 12.5 12.5 32.75 0 45.25l-192 192C112.4 476.9 104.2 480 96 480z\"\n />\n </svg>\n </a>\n </div>\n <div class=\"datepicker__days-container\">\n <div\n class=\"datepicker__days\"\n *ngFor=\"let day of daysMapping[language][dayDisplayType]; index as i\"\n >\n <div class=\"datepicker__weekday\">{{ day }}</div>\n <div\n class=\"datepicker__date-container\"\n *ngFor=\"let date of currentMonthData[i]\"\n >\n <div *ngIf=\"hasFuture; else noFutureDate\">\n <div\n *ngIf=\"date\"\n class=\"datepicker__date\"\n [class.datepicker__date--active]=\"\n date === selectedDate?.day &&\n currentNepaliDate.month === selectedDate?.month &&\n currentNepaliDate.year === selectedDate?.year\n \"\n [class.datepicker__date--current-day]=\"\n date === nepaliDateToday.day &&\n currentNepaliDate.month === nepaliDateToday.month &&\n currentNepaliDate.year === nepaliDateToday.year\n \"\n (click)=\"selectDate(date)\"\n >\n {{ date | toNp: language:\"number\" }}\n </div>\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\n <span>&nbsp;</span>\n </div>\n </div>\n\n <ng-template #noFutureDate>\n <div\n *ngIf=\"\n date &&\n this.currentNepaliDate.year * 365 +\n this.currentNepaliDate.month * 30 +\n date <=\n nepaliDateToday.day +\n nepaliDateToday.month * 30 +\n nepaliDateToday.year * 365;\n else disabledDates\n \"\n class=\"datepicker__date\"\n [class.datepicker__date--active]=\"\n date === selectedDate?.day &&\n currentNepaliDate.month === selectedDate?.month &&\n currentNepaliDate.year === selectedDate?.year\n \"\n [class.datepicker__date--current-day]=\"\n date === nepaliDateToday.day &&\n currentNepaliDate.month === nepaliDateToday.month &&\n currentNepaliDate.year === nepaliDateToday.year\n \"\n (click)=\"selectDate(date)\"\n >\n {{ date | toNp: language:\"number\" }}\n </div>\n\n <ng-template #disabledDates>\n <div class=\"datepicker__date datepicker__date--disabled\">\n {{ date | toNp: language:\"number\" }}\n </div>\n </ng-template>\n\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\n <span>&nbsp;</span>\n </div>\n </ng-template>\n </div>\n <!--.datepicker__date-container ends-->\n </div>\n <!--.datepicker__days ends-->\n </div>\n <!--.datepicker__days-container ends-->\n </div>\n <!--.datepicker__container ends-->\n</ng-template>\n", styles: [".nepali-date-picker.nepali-date-picker{position:relative;display:inline-block;font-family:Arial,Helvetica,sans-serif;font-size:1em}.nepali-date-picker a.active svg{fill:#e45415;opacity:.9}.nepali-date-picker .form-icon svg{width:14px;opacity:.3;position:absolute;right:8px;top:12px;cursor:pointer}.datepicker__container{border:1px solid #eee;background:#fff;width:294px;box-shadow:#64646f33 0 7px 29px;position:absolute;z-index:99999}.datepicker__options-container{padding:12px 5px;border-bottom:1px solid #eee;display:flex;justify-content:space-between;background-color:#e45415;color:#fff;line-height:25px}.datepicker__days-container{display:flex;justify-content:space-evenly;color:#777}.datepicker__days{text-align:center;border:1px solid #eee}.datepicker__weekday{padding:10px;background-color:#f3f3f3;margin-bottom:1px;font-weight:700}.datepicker__date-container{width:40px;height:40px;line-height:40px;border-bottom:1px solid #eee}.datepicker__date{cursor:pointer}.datepicker__date:hover{background-color:#eee}.datepicker__date.datepicker__date--disabled,.datepicker__date.datepicker__date--disabled:hover{background:#f3f3f3}.datepicker__date--active.datepicker__date--active{background-color:#e45415;color:#fff}.datepicker__options-container span{font-size:14px}select:focus,select:focus-visible{outline:1px solid #fff}.datepicker__container select{border:none;color:#fff;background:none;font-size:14px;width:58px}select option{color:#333}.np_datepicker_input{border:1px solid #eee;padding:10px;font-size:16px;color:#777}.np_datepicker_input:focus-visible{outline:2px solid #e45415}.prev-month,.next-month{padding:0;width:25px;height:25px;display:block;opacity:.5;border-radius:50%;background:#f3f3f3;cursor:pointer;text-align:center;line-height:23px}.next-month:hover,.prev-month:hover{background:#ccc}.prev-month svg,.next-month svg{max-width:8px;height:auto}.dark.nepali-date-picker a.active svg{fill:#000}.dark .datepicker__options-container{border-bottom:1px solid #000;background-color:#000;color:#fff}.dark select{color:#fff}.datepicker__date--current-day{border:2px solid rgba(0,0,0,.2);position:relative;z-index:999;height:100%}.dark .datepicker__date--active.datepicker__date--active{background-color:#000;color:#fff}.dark .np_datepicker_input:focus-visible{outline:2px solid #000}.dark .datepicker__weekday{background-color:#111}.dark .datepicker__days{background-color:#333;border:1px solid #111}.dark .datepicker__date:hover{background-color:#111;color:#fff}.dark .datepicker__date-container{border-bottom:1px solid #222}.light.nepali-date-picker a.active svg{fill:#777}.light .datepicker__options-container{border-bottom:none;background-color:#fff;color:#777}.light select{color:#777}.light .datepicker__date--active.datepicker__date--active{background-color:#aaa;color:#fff}.light .np_datepicker_input:focus-visible{outline:1px solid #ddd}.lightblue.nepali-date-picker a.active svg{fill:#38c5f0da}.lightblue .datepicker__options-container{background-color:#38c5f0da;color:#fff}.lightblue select{color:#fff}.lightblue .datepicker__date--active.datepicker__date--active{background-color:#38c5f0da;color:#fff}.lightblue .np_datepicker_input:focus-visible{outline:2px solid #38c5f0da}.lightblue .np_datepicker_input:focus-visible{outline:1px solid #38c5f0da}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }], pipes: { "toNp": ToNpPipe }, encapsulation: i0.ViewEncapsulation.None });
623
+ ], ngImport: i0, template: "<div class=\"nepali-date-picker\" [ngClass]=\"theme\">\n <input\n class=\"np_datepicker_input\"\n type=\"text\"\n [value]=\"formattedDate\"\n (focus)=\"open()\"\n (keydown)=\"$event.preventDefault()\"\n aria-hidden=\"true\"\n placeholder=\"yyyy/mm/dd\"\n />\n <a\n class=\"form-icon\"\n (click)=\"toggleOpen()\"\n [ngClass]=\"isOpen ? 'active' : ''\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\n <path\n d=\"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"\n />\n </svg>\n </a>\n <ng-container [ngTemplateOutlet]=\"dp\" *ngIf=\"isOpen\"></ng-container>\n</div>\n<!--.nepali-date-picker-->\n\n<ng-template #dp>\n <div class=\"datepicker__container\">\n <div class=\"datepicker__options-container\">\n <a class=\"prev-month\" (click)=\"prevMonth()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n d=\"M224 480c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25l192-192c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L77.25 256l169.4 169.4c12.5 12.5 12.5 32.75 0 45.25C240.4 476.9 232.2 480 224 480z\"\n />\n </svg>\n </a>\n <span class=\"datepicker__options-year-container\">\n <span> {{ \"Year\" | toNp: language:\"word\" }}: </span>\n <select (change)=\"selectYear($event)\">\n <option\n *ngFor=\"let year of years; index as i\"\n [value]=\"year\"\n [selected]=\"year == currentNepaliDate?.year\"\n >\n {{ year | toNp: language:\"number\" }}\n </option>\n </select>\n </span>\n <span class=\"datepicker__options-month-container\">\n <span>{{ \"Month\" | toNp: language:\"word\" }}: </span>\n <select (change)=\"selectMonth($event)\">\n <option\n *ngFor=\"\n let month of monthsMapping[language][monthDisplayType];\n index as i\n \"\n [value]=\"month\"\n [selected]=\"i === currentNepaliDate?.month\"\n >\n {{ month }}\n </option>\n </select>\n </span>\n <a class=\"next-month\" (click)=\"nextMonth()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n d=\"M96 480c-8.188 0-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L242.8 256L73.38 86.63c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l192 192c12.5 12.5 12.5 32.75 0 45.25l-192 192C112.4 476.9 104.2 480 96 480z\"\n />\n </svg>\n </a>\n </div>\n <div class=\"datepicker__days-container\">\n <div\n class=\"datepicker__days\"\n *ngFor=\"let day of daysMapping[language][dayDisplayType]; index as i\"\n >\n <div class=\"datepicker__weekday\">{{ day }}</div>\n <div\n class=\"datepicker__date-container\"\n *ngFor=\"let date of currentMonthData[i]\"\n >\n <div *ngIf=\"hasFuture; else noFutureDate\">\n <div\n *ngIf=\"date\"\n class=\"datepicker__date\"\n [class.datepicker__date--active]=\"\n date === selectedDate?.day &&\n currentNepaliDate.month === selectedDate?.month &&\n currentNepaliDate.year === selectedDate?.year\n \"\n [class.datepicker__date--current-day]=\"\n date === nepaliDateToday.day &&\n currentNepaliDate.month === nepaliDateToday.month &&\n currentNepaliDate.year === nepaliDateToday.year\n \"\n (click)=\"selectDate(date)\"\n >\n {{ date | toNp: language:\"number\" }}\n </div>\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\n <span>&nbsp;</span>\n </div>\n </div>\n\n <ng-template #noFutureDate>\n <div\n *ngIf=\"\n date &&\n this.currentNepaliDate.year * 365 +\n this.currentNepaliDate.month * 30 +\n date <=\n nepaliDateToday.day +\n nepaliDateToday.month * 30 +\n nepaliDateToday.year * 365;\n else disabledDates\n \"\n class=\"datepicker__date\"\n [class.datepicker__date--active]=\"\n date === selectedDate?.day &&\n currentNepaliDate.month === selectedDate?.month &&\n currentNepaliDate.year === selectedDate?.year\n \"\n [class.datepicker__date--current-day]=\"\n date === nepaliDateToday.day &&\n currentNepaliDate.month === nepaliDateToday.month &&\n currentNepaliDate.year === nepaliDateToday.year\n \"\n (click)=\"selectDate(date)\"\n >\n {{ date | toNp: language:\"number\" }}\n </div>\n\n <ng-template #disabledDates>\n <div class=\"datepicker__date datepicker__date--disabled\">\n {{ date | toNp: language:\"number\" }}\n </div>\n </ng-template>\n\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\n <span>&nbsp;</span>\n </div>\n </ng-template>\n </div>\n <!--.datepicker__date-container ends-->\n </div>\n <!--.datepicker__days ends-->\n </div>\n <!--.datepicker__days-container ends-->\n </div>\n <!--.datepicker__container ends-->\n</ng-template>\n", styles: [".nepali-date-picker.nepali-date-picker{position:relative;display:inline-block;font-family:Arial,Helvetica,sans-serif;font-size:1em}.nepali-date-picker a.active svg{fill:#e45415;opacity:.9}.nepali-date-picker .form-icon svg{width:14px;opacity:.3;position:absolute;right:8px;top:12px;cursor:pointer}.datepicker__container{border:1px solid #eee;background:#fff;width:294px;box-shadow:#64646f33 0 7px 29px;position:absolute;z-index:99999}.datepicker__options-container{padding:12px 5px;border-bottom:1px solid #eee;display:flex;justify-content:space-between;background-color:#e45415;color:#fff;line-height:25px}.datepicker__days-container{display:flex;justify-content:space-evenly;color:#777}.datepicker__days{text-align:center;border:1px solid #eee}.datepicker__weekday{padding:10px;background-color:#f3f3f3;margin-bottom:1px;font-weight:700}.datepicker__date-container{width:40px;height:40px;line-height:40px;border-bottom:1px solid #eee}.datepicker__date{cursor:pointer}.datepicker__date:hover{background-color:#eee}.datepicker__date.datepicker__date--disabled,.datepicker__date.datepicker__date--disabled:hover{background:#f3f3f3}.datepicker__date--active.datepicker__date--active{background-color:#e45415;color:#fff}.datepicker__options-container span{font-size:14px}select:focus,select:focus-visible{outline:1px solid #fff}.datepicker__container select{border:none;color:#fff;background:none;font-size:14px;width:58px}select option{color:#333}.np_datepicker_input{border:1px solid #eee;padding:10px;font-size:16px;color:#777}.np_datepicker_input:focus-visible{outline:2px solid #e45415}.prev-month,.next-month{padding:0;width:25px;height:25px;display:block;opacity:.5;border-radius:50%;background:#f3f3f3;cursor:pointer;text-align:center;line-height:23px}.next-month:hover,.prev-month:hover{background:#ccc}.prev-month svg,.next-month svg{max-width:8px;height:auto}.dark.nepali-date-picker a.active svg{fill:#000}.dark .datepicker__options-container{border-bottom:1px solid #000;background-color:#000;color:#fff}.dark select{color:#fff}.datepicker__date--current-day{border:2px solid rgba(0,0,0,.2);position:relative;z-index:999;height:100%}.dark .datepicker__date--active.datepicker__date--active{background-color:#000;color:#fff}.dark .np_datepicker_input:focus-visible{outline:2px solid #000}.dark .datepicker__weekday{background-color:#111}.dark .datepicker__days{background-color:#333;border:1px solid #111}.dark .datepicker__date:hover{background-color:#111;color:#fff}.dark .datepicker__date-container{border-bottom:1px solid #222}.light.nepali-date-picker a.active svg{fill:#777}.light .datepicker__options-container{border-bottom:none;background-color:#fff;color:#777}.light select{color:#777}.light .datepicker__date--active.datepicker__date--active{background-color:#aaa;color:#fff}.light .np_datepicker_input:focus-visible{outline:1px solid #ddd}.lightblue.nepali-date-picker a.active svg{fill:#38c5f0da}.lightblue .datepicker__options-container{background-color:#38c5f0da;color:#fff}.lightblue select{color:#fff}.lightblue .datepicker__date--active.datepicker__date--active{background-color:#38c5f0da;color:#fff}.lightblue .np_datepicker_input:focus-visible{outline:2px solid #38c5f0da}.lightblue .np_datepicker_input:focus-visible{outline:1px solid #38c5f0da}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }], pipes: { "toNp": ToNpPipe }, encapsulation: i0.ViewEncapsulation.None });
618
624
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: NpDatePickerComponent, decorators: [{
619
625
  type: Component,
620
626
  args: [{ selector: 'np-datepicker', providers: [
@@ -623,13 +629,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImpor
623
629
  useExisting: forwardRef(() => NpDatePickerComponent),
624
630
  multi: true,
625
631
  },
626
- ], encapsulation: ViewEncapsulation.None, template: "<div class=\"nepali-date-picker\" [ngClass]=\"theme\">\n <input\n class=\"np_datepicker_input\"\n type=\"text\"\n [value]=\"formattedDate\"\n (focus)=\"open()\"\n (keydown)=\"$event.preventDefault()\"\n aria-hidden=\"true\"\n />\n <a\n class=\"form-icon\"\n (click)=\"toggleOpen()\"\n [ngClass]=\"isOpen ? 'active' : ''\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\n <path\n d=\"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"\n />\n </svg>\n </a>\n <ng-container [ngTemplateOutlet]=\"dp\" *ngIf=\"isOpen\"></ng-container>\n</div>\n<!--.nepali-date-picker-->\n\n<ng-template #dp>\n <div class=\"datepicker__container\">\n <div class=\"datepicker__options-container\">\n <a class=\"prev-month\" (click)=\"prevMonth()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n d=\"M224 480c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25l192-192c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L77.25 256l169.4 169.4c12.5 12.5 12.5 32.75 0 45.25C240.4 476.9 232.2 480 224 480z\"\n />\n </svg>\n </a>\n <span class=\"datepicker__options-year-container\">\n <span> {{ \"Year\" | toNp: language:\"word\" }}: </span>\n <select (change)=\"selectYear($event)\">\n <option\n *ngFor=\"let year of years; index as i\"\n [value]=\"year\"\n [selected]=\"year == currentNepaliDate?.year\"\n >\n {{ year | toNp: language:\"number\" }}\n </option>\n </select>\n </span>\n <span class=\"datepicker__options-month-container\">\n <span>{{ \"Month\" | toNp: language:\"word\" }}: </span>\n <select (change)=\"selectMonth($event)\">\n <option\n *ngFor=\"\n let month of monthsMapping[language][monthDisplayType];\n index as i\n \"\n [value]=\"month\"\n [selected]=\"i === currentNepaliDate?.month\"\n >\n {{ month }}\n </option>\n </select>\n </span>\n <a class=\"next-month\" (click)=\"nextMonth()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n d=\"M96 480c-8.188 0-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L242.8 256L73.38 86.63c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l192 192c12.5 12.5 12.5 32.75 0 45.25l-192 192C112.4 476.9 104.2 480 96 480z\"\n />\n </svg>\n </a>\n </div>\n <div class=\"datepicker__days-container\">\n <div\n class=\"datepicker__days\"\n *ngFor=\"let day of daysMapping[language][dayDisplayType]; index as i\"\n >\n <div class=\"datepicker__weekday\">{{ day }}</div>\n <div\n class=\"datepicker__date-container\"\n *ngFor=\"let date of currentMonthData[i]\"\n >\n <div *ngIf=\"hasFuture; else noFutureDate\">\n <div\n *ngIf=\"date\"\n class=\"datepicker__date\"\n [class.datepicker__date--active]=\"\n date === selectedDate?.day &&\n currentNepaliDate.month === selectedDate?.month &&\n currentNepaliDate.year === selectedDate?.year\n \"\n [class.datepicker__date--current-day]=\"\n date === nepaliDateToday.day &&\n currentNepaliDate.month === nepaliDateToday.month &&\n currentNepaliDate.year === nepaliDateToday.year\n \"\n (click)=\"selectDate(date)\"\n >\n {{ date | toNp: language:\"number\" }}\n </div>\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\n <span>&nbsp;</span>\n </div>\n </div>\n\n <ng-template #noFutureDate>\n <div\n *ngIf=\"\n date &&\n this.currentNepaliDate.year * 365 +\n this.currentNepaliDate.month * 30 +\n date <=\n nepaliDateToday.day +\n nepaliDateToday.month * 30 +\n nepaliDateToday.year * 365;\n else disabledDates\n \"\n class=\"datepicker__date\"\n [class.datepicker__date--active]=\"\n date === selectedDate?.day &&\n currentNepaliDate.month === selectedDate?.month &&\n currentNepaliDate.year === selectedDate?.year\n \"\n [class.datepicker__date--current-day]=\"\n date === nepaliDateToday.day &&\n currentNepaliDate.month === nepaliDateToday.month &&\n currentNepaliDate.year === nepaliDateToday.year\n \"\n (click)=\"selectDate(date)\"\n >\n {{ date | toNp: language:\"number\" }}\n </div>\n\n <ng-template #disabledDates>\n <div class=\"datepicker__date datepicker__date--disabled\">\n {{ date | toNp: language:\"number\" }}\n </div>\n </ng-template>\n\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\n <span>&nbsp;</span>\n </div>\n </ng-template>\n </div>\n <!--.datepicker__date-container ends-->\n </div>\n <!--.datepicker__days ends-->\n </div>\n <!--.datepicker__days-container ends-->\n </div>\n <!--.datepicker__container ends-->\n</ng-template>\n", styles: [".nepali-date-picker.nepali-date-picker{position:relative;display:inline-block;font-family:Arial,Helvetica,sans-serif;font-size:1em}.nepali-date-picker a.active svg{fill:#e45415;opacity:.9}.nepali-date-picker .form-icon svg{width:14px;opacity:.3;position:absolute;right:8px;top:12px;cursor:pointer}.datepicker__container{border:1px solid #eee;background:#fff;width:294px;box-shadow:#64646f33 0 7px 29px;position:absolute;z-index:99999}.datepicker__options-container{padding:12px 5px;border-bottom:1px solid #eee;display:flex;justify-content:space-between;background-color:#e45415;color:#fff;line-height:25px}.datepicker__days-container{display:flex;justify-content:space-evenly;color:#777}.datepicker__days{text-align:center;border:1px solid #eee}.datepicker__weekday{padding:10px;background-color:#f3f3f3;margin-bottom:1px;font-weight:700}.datepicker__date-container{width:40px;height:40px;line-height:40px;border-bottom:1px solid #eee}.datepicker__date{cursor:pointer}.datepicker__date:hover{background-color:#eee}.datepicker__date.datepicker__date--disabled,.datepicker__date.datepicker__date--disabled:hover{background:#f3f3f3}.datepicker__date--active.datepicker__date--active{background-color:#e45415;color:#fff}.datepicker__options-container span{font-size:14px}select:focus,select:focus-visible{outline:1px solid #fff}.datepicker__container select{border:none;color:#fff;background:none;font-size:14px;width:58px}select option{color:#333}.np_datepicker_input{border:1px solid #eee;padding:10px;font-size:16px;color:#777}.np_datepicker_input:focus-visible{outline:2px solid #e45415}.prev-month,.next-month{padding:0;width:25px;height:25px;display:block;opacity:.5;border-radius:50%;background:#f3f3f3;cursor:pointer;text-align:center;line-height:23px}.next-month:hover,.prev-month:hover{background:#ccc}.prev-month svg,.next-month svg{max-width:8px;height:auto}.dark.nepali-date-picker a.active svg{fill:#000}.dark .datepicker__options-container{border-bottom:1px solid #000;background-color:#000;color:#fff}.dark select{color:#fff}.datepicker__date--current-day{border:2px solid rgba(0,0,0,.2);position:relative;z-index:999;height:100%}.dark .datepicker__date--active.datepicker__date--active{background-color:#000;color:#fff}.dark .np_datepicker_input:focus-visible{outline:2px solid #000}.dark .datepicker__weekday{background-color:#111}.dark .datepicker__days{background-color:#333;border:1px solid #111}.dark .datepicker__date:hover{background-color:#111;color:#fff}.dark .datepicker__date-container{border-bottom:1px solid #222}.light.nepali-date-picker a.active svg{fill:#777}.light .datepicker__options-container{border-bottom:none;background-color:#fff;color:#777}.light select{color:#777}.light .datepicker__date--active.datepicker__date--active{background-color:#aaa;color:#fff}.light .np_datepicker_input:focus-visible{outline:1px solid #ddd}.lightblue.nepali-date-picker a.active svg{fill:#38c5f0da}.lightblue .datepicker__options-container{background-color:#38c5f0da;color:#fff}.lightblue select{color:#fff}.lightblue .datepicker__date--active.datepicker__date--active{background-color:#38c5f0da;color:#fff}.lightblue .np_datepicker_input:focus-visible{outline:2px solid #38c5f0da}.lightblue .np_datepicker_input:focus-visible{outline:1px solid #38c5f0da}\n"] }]
632
+ ], encapsulation: ViewEncapsulation.None, template: "<div class=\"nepali-date-picker\" [ngClass]=\"theme\">\n <input\n class=\"np_datepicker_input\"\n type=\"text\"\n [value]=\"formattedDate\"\n (focus)=\"open()\"\n (keydown)=\"$event.preventDefault()\"\n aria-hidden=\"true\"\n placeholder=\"yyyy/mm/dd\"\n />\n <a\n class=\"form-icon\"\n (click)=\"toggleOpen()\"\n [ngClass]=\"isOpen ? 'active' : ''\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\n <path\n d=\"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"\n />\n </svg>\n </a>\n <ng-container [ngTemplateOutlet]=\"dp\" *ngIf=\"isOpen\"></ng-container>\n</div>\n<!--.nepali-date-picker-->\n\n<ng-template #dp>\n <div class=\"datepicker__container\">\n <div class=\"datepicker__options-container\">\n <a class=\"prev-month\" (click)=\"prevMonth()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n d=\"M224 480c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25l192-192c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L77.25 256l169.4 169.4c12.5 12.5 12.5 32.75 0 45.25C240.4 476.9 232.2 480 224 480z\"\n />\n </svg>\n </a>\n <span class=\"datepicker__options-year-container\">\n <span> {{ \"Year\" | toNp: language:\"word\" }}: </span>\n <select (change)=\"selectYear($event)\">\n <option\n *ngFor=\"let year of years; index as i\"\n [value]=\"year\"\n [selected]=\"year == currentNepaliDate?.year\"\n >\n {{ year | toNp: language:\"number\" }}\n </option>\n </select>\n </span>\n <span class=\"datepicker__options-month-container\">\n <span>{{ \"Month\" | toNp: language:\"word\" }}: </span>\n <select (change)=\"selectMonth($event)\">\n <option\n *ngFor=\"\n let month of monthsMapping[language][monthDisplayType];\n index as i\n \"\n [value]=\"month\"\n [selected]=\"i === currentNepaliDate?.month\"\n >\n {{ month }}\n </option>\n </select>\n </span>\n <a class=\"next-month\" (click)=\"nextMonth()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n d=\"M96 480c-8.188 0-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L242.8 256L73.38 86.63c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l192 192c12.5 12.5 12.5 32.75 0 45.25l-192 192C112.4 476.9 104.2 480 96 480z\"\n />\n </svg>\n </a>\n </div>\n <div class=\"datepicker__days-container\">\n <div\n class=\"datepicker__days\"\n *ngFor=\"let day of daysMapping[language][dayDisplayType]; index as i\"\n >\n <div class=\"datepicker__weekday\">{{ day }}</div>\n <div\n class=\"datepicker__date-container\"\n *ngFor=\"let date of currentMonthData[i]\"\n >\n <div *ngIf=\"hasFuture; else noFutureDate\">\n <div\n *ngIf=\"date\"\n class=\"datepicker__date\"\n [class.datepicker__date--active]=\"\n date === selectedDate?.day &&\n currentNepaliDate.month === selectedDate?.month &&\n currentNepaliDate.year === selectedDate?.year\n \"\n [class.datepicker__date--current-day]=\"\n date === nepaliDateToday.day &&\n currentNepaliDate.month === nepaliDateToday.month &&\n currentNepaliDate.year === nepaliDateToday.year\n \"\n (click)=\"selectDate(date)\"\n >\n {{ date | toNp: language:\"number\" }}\n </div>\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\n <span>&nbsp;</span>\n </div>\n </div>\n\n <ng-template #noFutureDate>\n <div\n *ngIf=\"\n date &&\n this.currentNepaliDate.year * 365 +\n this.currentNepaliDate.month * 30 +\n date <=\n nepaliDateToday.day +\n nepaliDateToday.month * 30 +\n nepaliDateToday.year * 365;\n else disabledDates\n \"\n class=\"datepicker__date\"\n [class.datepicker__date--active]=\"\n date === selectedDate?.day &&\n currentNepaliDate.month === selectedDate?.month &&\n currentNepaliDate.year === selectedDate?.year\n \"\n [class.datepicker__date--current-day]=\"\n date === nepaliDateToday.day &&\n currentNepaliDate.month === nepaliDateToday.month &&\n currentNepaliDate.year === nepaliDateToday.year\n \"\n (click)=\"selectDate(date)\"\n >\n {{ date | toNp: language:\"number\" }}\n </div>\n\n <ng-template #disabledDates>\n <div class=\"datepicker__date datepicker__date--disabled\">\n {{ date | toNp: language:\"number\" }}\n </div>\n </ng-template>\n\n <div *ngIf=\"!date\" class=\"datepicker__date--disabled\">\n <span>&nbsp;</span>\n </div>\n </ng-template>\n </div>\n <!--.datepicker__date-container ends-->\n </div>\n <!--.datepicker__days ends-->\n </div>\n <!--.datepicker__days-container ends-->\n </div>\n <!--.datepicker__container ends-->\n</ng-template>\n", styles: [".nepali-date-picker.nepali-date-picker{position:relative;display:inline-block;font-family:Arial,Helvetica,sans-serif;font-size:1em}.nepali-date-picker a.active svg{fill:#e45415;opacity:.9}.nepali-date-picker .form-icon svg{width:14px;opacity:.3;position:absolute;right:8px;top:12px;cursor:pointer}.datepicker__container{border:1px solid #eee;background:#fff;width:294px;box-shadow:#64646f33 0 7px 29px;position:absolute;z-index:99999}.datepicker__options-container{padding:12px 5px;border-bottom:1px solid #eee;display:flex;justify-content:space-between;background-color:#e45415;color:#fff;line-height:25px}.datepicker__days-container{display:flex;justify-content:space-evenly;color:#777}.datepicker__days{text-align:center;border:1px solid #eee}.datepicker__weekday{padding:10px;background-color:#f3f3f3;margin-bottom:1px;font-weight:700}.datepicker__date-container{width:40px;height:40px;line-height:40px;border-bottom:1px solid #eee}.datepicker__date{cursor:pointer}.datepicker__date:hover{background-color:#eee}.datepicker__date.datepicker__date--disabled,.datepicker__date.datepicker__date--disabled:hover{background:#f3f3f3}.datepicker__date--active.datepicker__date--active{background-color:#e45415;color:#fff}.datepicker__options-container span{font-size:14px}select:focus,select:focus-visible{outline:1px solid #fff}.datepicker__container select{border:none;color:#fff;background:none;font-size:14px;width:58px}select option{color:#333}.np_datepicker_input{border:1px solid #eee;padding:10px;font-size:16px;color:#777}.np_datepicker_input:focus-visible{outline:2px solid #e45415}.prev-month,.next-month{padding:0;width:25px;height:25px;display:block;opacity:.5;border-radius:50%;background:#f3f3f3;cursor:pointer;text-align:center;line-height:23px}.next-month:hover,.prev-month:hover{background:#ccc}.prev-month svg,.next-month svg{max-width:8px;height:auto}.dark.nepali-date-picker a.active svg{fill:#000}.dark .datepicker__options-container{border-bottom:1px solid #000;background-color:#000;color:#fff}.dark select{color:#fff}.datepicker__date--current-day{border:2px solid rgba(0,0,0,.2);position:relative;z-index:999;height:100%}.dark .datepicker__date--active.datepicker__date--active{background-color:#000;color:#fff}.dark .np_datepicker_input:focus-visible{outline:2px solid #000}.dark .datepicker__weekday{background-color:#111}.dark .datepicker__days{background-color:#333;border:1px solid #111}.dark .datepicker__date:hover{background-color:#111;color:#fff}.dark .datepicker__date-container{border-bottom:1px solid #222}.light.nepali-date-picker a.active svg{fill:#777}.light .datepicker__options-container{border-bottom:none;background-color:#fff;color:#777}.light select{color:#777}.light .datepicker__date--active.datepicker__date--active{background-color:#aaa;color:#fff}.light .np_datepicker_input:focus-visible{outline:1px solid #ddd}.lightblue.nepali-date-picker a.active svg{fill:#38c5f0da}.lightblue .datepicker__options-container{background-color:#38c5f0da;color:#fff}.lightblue select{color:#fff}.lightblue .datepicker__date--active.datepicker__date--active{background-color:#38c5f0da;color:#fff}.lightblue .np_datepicker_input:focus-visible{outline:2px solid #38c5f0da}.lightblue .np_datepicker_input:focus-visible{outline:1px solid #38c5f0da}\n"] }]
627
633
  }], ctorParameters: function () { return [{ type: NpDatePickerService }, { type: i0.ElementRef }]; }, propDecorators: { theme: [{
628
634
  type: Input
629
635
  }], language: [{
630
636
  type: Input
631
637
  }], hasFuture: [{
632
638
  type: Input
639
+ }], format: [{
640
+ type: Input
633
641
  }], clickout: [{
634
642
  type: HostListener,
635
643
  args: ['document:click', ['$event']]