@morozeckiy/dd-lib 0.2.38 → 0.2.71

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/assets/images/svg/preset.svg +11 -0
  2. package/assets/scss/common.scss +14 -20
  3. package/assets/scss/reset.scss +2 -1
  4. package/assets/scss/titles.scss +24 -0
  5. package/assets/scss/vars-dark.scss +4 -2
  6. package/assets/scss/vars-light.scss +2 -0
  7. package/esm2022/lib/common/lib-common-input-text.mjs +7 -2
  8. package/esm2022/lib/core/services/fetcher.service.mjs +2 -2
  9. package/esm2022/lib/core/services/interceptors.service.mjs +1 -1
  10. package/esm2022/lib/core/toast/toast/toast.component.mjs +14 -7
  11. package/esm2022/lib/core/toast/toast.service.mjs +1 -1
  12. package/esm2022/lib/core/tooltip/tooltip.component.mjs +3 -3
  13. package/esm2022/lib/lib-button/lib-button.component.mjs +3 -3
  14. package/esm2022/lib/lib-calendar/lib-calendar.component.mjs +3 -3
  15. package/esm2022/lib/lib-file-loader/lib-file-loader.component.mjs +86 -7
  16. package/esm2022/lib/lib-filter-button/lib-filter-button.component.mjs +3 -3
  17. package/esm2022/lib/lib-input/lib-input.component.mjs +3 -3
  18. package/esm2022/lib/lib-radio/lib-radio.component.mjs +3 -3
  19. package/esm2022/lib/lib-search-input/lib-search-input.component.mjs +3 -5
  20. package/esm2022/lib/lib-select/lib-select.component.mjs +73 -22
  21. package/esm2022/lib/lib-sort/lib-sort.component.mjs +3 -3
  22. package/esm2022/lib/lib-tabs-fragment/lib-tabs-fragment.component.mjs +9 -5
  23. package/esm2022/lib/svg-icons/svg-icon.model.mjs +6 -1
  24. package/fesm2022/morozeckiy-dd-lib.mjs +204 -56
  25. package/fesm2022/morozeckiy-dd-lib.mjs.map +1 -1
  26. package/lib/common/lib-common-input-text.d.ts +3 -1
  27. package/lib/core/services/fetcher.service.d.ts +1 -1
  28. package/lib/core/services/validators.service.d.ts +2 -2
  29. package/lib/core/toast/toast/toast.component.d.ts +4 -3
  30. package/lib/core/toast/toast.service.d.ts +2 -2
  31. package/lib/lib-file-loader/lib-file-loader.component.d.ts +19 -1
  32. package/lib/lib-search-input/lib-search-input.component.d.ts +1 -2
  33. package/lib/lib-select/lib-select.component.d.ts +6 -5
  34. package/lib/lib-tabs-fragment/lib-tabs-fragment.component.d.ts +2 -1
  35. package/lib/svg-icons/svg-icon.model.d.ts +8 -1
  36. package/morozeckiy-dd-lib-0.2.71.tgz +0 -0
  37. package/package.json +1 -1
  38. package/esm2022/lib/core/toast/toast-base/toast-base.component.mjs +0 -48
  39. package/esm2022/lib/core/toast/toast-placeholder/toast-placeholder.component.mjs +0 -29
  40. package/lib/core/toast/toast-base/toast-base.component.d.ts +0 -27
  41. package/lib/core/toast/toast-placeholder/toast-placeholder.component.d.ts +0 -12
  42. package/morozeckiy-dd-lib-0.2.32.tgz +0 -0
  43. package/morozeckiy-dd-lib-0.2.33.tgz +0 -0
  44. package/morozeckiy-dd-lib-0.2.34.tgz +0 -0
  45. package/morozeckiy-dd-lib-0.2.35.tgz +0 -0
  46. package/morozeckiy-dd-lib-0.2.36.tgz +0 -0
  47. package/morozeckiy-dd-lib-0.2.37.tgz +0 -0
  48. package/morozeckiy-dd-lib-0.2.38.tgz +0 -0
@@ -1,4 +1,4 @@
1
- import { ChangeDetectionStrategy, Component, forwardRef, Host, Input, Optional, SkipSelf, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, forwardRef, Host, Input, Optional, signal, SkipSelf, } from '@angular/core';
2
2
  import { JsonPipe, NgOptimizedImage } from '@angular/common';
3
3
  import { FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule, } from '@angular/forms';
4
4
  import { LibCommonInputTextComponent } from '../common/lib-common-input-text';
@@ -10,22 +10,26 @@ import * as i0 from "@angular/core";
10
10
  import * as i1 from "@angular/forms";
11
11
  export class LibSelectComponent extends LibCommonInputTextComponent {
12
12
  static { this.idCounter = 1; }
13
+ set data(d) {
14
+ this._data.set(d);
15
+ this.stringArray.set(typeof d?.[0] === 'string');
16
+ }
17
+ ;
13
18
  constructor(changeDetection, controlContainer) {
14
19
  super(changeDetection);
15
20
  this.controlContainer = controlContainer;
16
- this.keyTitle = 'name';
17
- this.keyValue = 'id';
21
+ this.keyTitle = '';
22
+ this.keyDesc = '';
23
+ this.keyValue = '';
18
24
  this.placeholder = 'Выберите из списка';
25
+ this._data = signal([]);
19
26
  this.checkedItems = [];
27
+ this.stringArray = signal(false);
20
28
  }
21
29
  ngOnInit() {
22
- this.stringArray = typeof this.data?.[0] === 'string';
23
30
  if (!this.selectId) {
24
31
  this.selectId = 'dd-select-' + LibSelectComponent.idCounter++;
25
32
  }
26
- if (this.keyTitle && !this.keyValue) {
27
- this.keyValue = this.keyTitle;
28
- }
29
33
  this.control =
30
34
  this.controlContainer && this.formControlName
31
35
  ? this.controlContainer?.control?.get(this.formControlName)
@@ -47,23 +51,46 @@ export class LibSelectComponent extends LibCommonInputTextComponent {
47
51
  notifyFocusEvent(e) {
48
52
  if (!this.disabled) {
49
53
  this.isShownList = !this.isShownList;
54
+ if (this.fetchMode) {
55
+ this.fetchEvent.emit();
56
+ }
50
57
  }
51
58
  super.notifyFocusEvent(e);
52
59
  }
53
60
  writeValue(value) {
54
61
  if (this.multi && value?.length) {
55
62
  this.inputValue = `Выбрано (${value.length})`;
56
- this.checkedItems = this.data.filter((f) => value.includes(f[this.keyValue]));
63
+ if (this.keyValue) {
64
+ this.checkedItems = this._data().filter((f) => value.includes(f[this.keyValue]));
65
+ }
66
+ else {
67
+ if (this.stringArray()) {
68
+ this.checkedItems = this._data().filter((f) => value.includes(f));
69
+ }
70
+ else {
71
+ const strArr = value.map(JSON.stringify);
72
+ this.checkedItems = this._data().filter((f) => strArr.includes(JSON.stringify(f)));
73
+ }
74
+ }
57
75
  }
58
76
  else {
59
- if (this.stringArray) {
77
+ if (this.stringArray()) {
60
78
  this.value = value;
61
79
  this.inputValue = value;
62
80
  }
63
81
  else {
64
- const fVal = this.data.find((f) => f[this.keyValue] === value);
65
- this.value = fVal;
66
- this.inputValue = fVal;
82
+ if (!!this.keyValue) {
83
+ const fVal = this._data()?.find((f) => f?.[this.keyValue] === value);
84
+ this.value = fVal?.[this.keyValue];
85
+ this.inputValue = this.keyTitle ? fVal?.[this.keyTitle] : fVal;
86
+ this.checkedItem = fVal;
87
+ }
88
+ else {
89
+ const fVal = this._data()?.find((f) => JSON.stringify(f) === JSON.stringify(value));
90
+ this.value = fVal;
91
+ this.inputValue = this.keyTitle ? fVal?.[this.keyTitle] : fVal;
92
+ this.checkedItem = fVal;
93
+ }
67
94
  }
68
95
  }
69
96
  }
@@ -76,6 +103,9 @@ export class LibSelectComponent extends LibCommonInputTextComponent {
76
103
  }
77
104
  }
78
105
  filterList(item) {
106
+ if (this.stringArray()) {
107
+ return item.toLowerCase().includes(this.searchValue?.toLowerCase() || '');
108
+ }
79
109
  return item[this.keyTitle]?.toLowerCase().includes(this.searchValue?.toLowerCase() || '');
80
110
  }
81
111
  propagateChange(_value) {
@@ -96,12 +126,18 @@ export class LibSelectComponent extends LibCommonInputTextComponent {
96
126
  }
97
127
  }
98
128
  else {
99
- if (!this.checkedItem || item[this.keyValue] !== this.checkedItem?.[this.keyValue]) {
129
+ if (!!this.keyValue && (!this.checkedItem || item[this.keyValue] !== this.checkedItem?.[this.keyValue])) {
100
130
  this.checkedItem = item;
101
131
  this.inputValue = this.checkedItem[this.keyTitle];
102
132
  this.value = item[this.keyValue];
103
133
  this.propagateChange(this.value);
104
134
  }
135
+ else if (!this.keyValue && (!this.checkedItem || JSON.stringify(item) !== JSON.stringify(this.checkedItem))) {
136
+ this.checkedItem = item;
137
+ this.inputValue = this.checkedItem[this.keyTitle];
138
+ this.value = item;
139
+ this.propagateChange(this.value);
140
+ }
105
141
  else {
106
142
  this.checkedItem = null;
107
143
  this.inputValue = undefined;
@@ -135,20 +171,35 @@ export class LibSelectComponent extends LibCommonInputTextComponent {
135
171
  }
136
172
  checkSelected(item) {
137
173
  if (this.multi) {
138
- return this.checkedItems.find(f => f[this.keyValue] === item[this.keyValue] || f === item);
174
+ if (this.keyValue) {
175
+ return this.checkedItems.find(f => f[this.keyValue] === item[this.keyValue] || f === item);
176
+ }
177
+ else {
178
+ return this.checkedItems.find(f => JSON.stringify(f) === JSON.stringify(item) || f === item);
179
+ }
139
180
  }
140
181
  else {
141
- return this.checkedItem?.[this.keyValue] === item[this.keyValue] || this.checkedItem === item;
182
+ if (this.stringArray()) {
183
+ return this.checkedItem === item;
184
+ }
185
+ else {
186
+ if (this.keyValue) {
187
+ return this.checkedItem?.[this.keyValue] === item[this.keyValue] || this.checkedItem === item;
188
+ }
189
+ else {
190
+ return JSON.stringify(this.checkedItem) === JSON.stringify(item);
191
+ }
192
+ }
142
193
  }
143
194
  }
144
195
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: LibSelectComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ControlContainer, host: true, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component }); }
145
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.2", type: LibSelectComponent, isStandalone: true, selector: "dd-lib-select", inputs: { multi: "multi", selectId: "selectId", data: "data", keyTitle: "keyTitle", keyDesc: "keyDesc", keyValue: "keyValue", placeholder: "placeholder" }, providers: [
196
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.2", type: LibSelectComponent, isStandalone: true, selector: "dd-lib-select", inputs: { data: "data", multi: "multi", selectId: "selectId", keyTitle: "keyTitle", keyDesc: "keyDesc", keyValue: "keyValue", placeholder: "placeholder" }, providers: [
146
197
  {
147
198
  provide: NG_VALUE_ACCESSOR,
148
199
  useExisting: forwardRef(() => LibSelectComponent),
149
200
  multi: true,
150
201
  },
151
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"lib-select\" id=\"lib-select-{{ selectId }}\">\n <label [for]=\"id\" class=\"lib-select__title\">\n {{ label }}\n @if (required) {\n <dd-lib-svg-icon icon=\"error_hint\"></dd-lib-svg-icon>\n }\n </label>\n\n <div class=\"pos-relative\">\n <input\n #select\n (change)=\"handleChange()\"\n (click)=\"notifyFocusEvent($event)\"\n (input)=\"handleInput($event)\"\n [(ngModel)]=\"inputValue\"\n [attr.id]=\"selectId\"\n [attr.name]=\"name\"\n [attr.placeholder]=\"placeholder\"\n [attr.tabIndex]=\"tabIndex\"\n [attr.type]=\"'text'\"\n [class.focused]=\"focused\"\n [class.invalid]=\"invalid\"\n [disabled]=\"disabled\"\n [readOnly]=\"readOnly\"\n [title]=\"inputValue\"\n class=\"text-select\" />\n <!-- (blur)=\"notifyFocusEvent($event)\"-->\n @if (!checkedItem) {\n <dd-lib-svg-icon\n (click)=\"notifyFocusEvent($event)\"\n [class.black-svg]=\"isShownList\"\n [class.disabled]=\"disabled\"\n [class.gray-svg]=\"!isShownList\"\n [class.up]=\"isShownList\"\n id=\"chevron-{{ selectId }}\" class=\"chevron\" icon=\"down_chevron\"></dd-lib-svg-icon>\n\n } @else {\n <dd-lib-svg-icon\n (click)=\"selectItem(checkedItem)\"\n class=\"clear\"\n id=\"chevron-{{ selectId }}\" icon=\"clear\"></dd-lib-svg-icon>\n\n }\n </div>\n\n @if (errorText && invalid) {\n <div class=\"lib-select__error\">{{ errorText }}</div>\n } @if (isShownList) {\n <div\n (ddClickOutside)=\"notifyFocusEvent($event)\"\n [elements]=\"['lib-select-' + selectId, 'chevron' + selectId]\"\n [class.top]=\"side === 'top'\"\n class=\"select-list-wrapper\">\n @if (data?.length) { @for (item of data | filterByKey: filterList.bind(this); track item) {\n <div\n (click)=\"selectItem(item)\"\n [class.active]=\"checkSelected(item)\"\n class=\"select-data\">\n\n @if (!keyDesc && !keyTitle) {\n <div [innerHTML]=\"item | highlight: inputValue | safe: 'html'\" class=\"select-data__title\"></div>\n } @if (keyTitle) {\n <div\n [innerHTML]=\"item[keyTitle!] | highlight: inputValue | safe: 'html'\"\n class=\"select-data__title\"></div>\n } @if (keyDesc) {\n <div\n [innerHTML]=\"item[keyDesc!] | highlight: inputValue | safe: 'html'\"\n [title]=\"item[keyDesc]\"\n class=\"select-data__desc\"></div>\n } @if (checkSelected(item)) {\n <dd-lib-svg-icon\n (click)=\"selectItem(checkedItem)\"\n class=\"checked\"\n id=\"chevron-{{ selectId }}\" icon=\"check_green\"></dd-lib-svg-icon>\n }\n </div>\n } } @else {\n <div class=\"select-loader\">\n <dd-lib-loader></dd-lib-loader>\n </div>\n }\n </div>\n }\n</div>\n", styles: [".lib-select{position:relative}.lib-select input{width:100%;height:48px;padding:15px 28px 15px 16px;overflow:hidden;text-overflow:ellipsis;border-radius:8px;border:1px solid var(--input-border-color);background-color:transparent;position:relative}.lib-select input:hover{border-color:var(--input-active-border-colort)}.lib-select input:focus{border-color:var(--input-active-border-colort);box-shadow:var(--input-active-border-shadow)}.lib-select input:disabled{border:none;background-color:var(--input-disable-input);color:var(--input-disable-text);pointer-events:none}.lib-select input:disabled::placeholder{color:var(--input-placeholder)}.lib-select input.invalid,.lib-select input.invalid:hover{border-color:var(--input-error-border-color)}.lib-select input.invalid:focus{border-color:var(--input-error-border-color);box-shadow:var(--input-error-border-shadow)}.lib-select .clear{cursor:pointer;position:absolute;right:8px;top:12px}.lib-select .chevron{cursor:pointer;position:absolute;right:16px;top:10px}.lib-select .chevron.up{transform:rotate(180deg)}.lib-select__title{margin-bottom:4px;font-size:14px;line-height:24px;display:flex;align-items:flex-start}.lib-select__error{color:var(--primary-red-color);font-size:12px;font-weight:400;line-height:10px;margin-top:2px}.lib-select .select-list-wrapper{position:absolute;display:block;z-index:100;width:100%;max-height:300px;overflow:auto;border-radius:8px;box-shadow:var(--main-card-shadow);background-color:var(--main-card-color)}.lib-select .select-list-wrapper.top{bottom:50px;top:unset}.lib-select .select-list-wrapper .select-data{padding:12px 42px 12px 16px;cursor:pointer;position:relative}.lib-select .select-list-wrapper .select-data__desc{font-size:14px;font-weight:400;line-height:24px;text-overflow:ellipsis;text-wrap:nowrap;padding-top:2px;overflow:hidden;color:var(--second-gray-color)}.lib-select .select-list-wrapper .select-data:hover,.lib-select .select-list-wrapper .select-data.active{background:var(--select-act-hov-bgc)}.lib-select .select-list-wrapper .select-data.active .checked{position:absolute;right:16px;top:10px}.lib-select .select-list-wrapper .select-loader{padding:24px}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: HighlightPipe, name: "highlight" }, { kind: "pipe", type: SafePipe, name: "safe" }, { kind: "directive", type: ClickOutsideDirective, selector: "[ddClickOutside]", inputs: ["elements"], outputs: ["ddClickOutside"] }, { kind: "component", type: LibLoaderComponent, selector: "dd-lib-loader", inputs: ["color", "size"] }, { kind: "pipe", type: FilterByKeyPipe, name: "filterByKey" }, { kind: "component", type: LibSvgIconComponent, selector: "dd-lib-svg-icon", inputs: ["width", "height", "color", "icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
202
+ ], usesInheritance: true, ngImport: i0, template: "<div class=\"lib-select\" id=\"lib-select-{{ selectId }}\" [title]=\"label\">\r\n <label [for]=\"id\" class=\"lib-select__title\">\r\n {{ label }}\r\n @if (required) {\r\n <dd-lib-svg-icon icon=\"error_hint\"></dd-lib-svg-icon>\r\n }\r\n </label>\r\n\r\n <div class=\"pos-relative\">\r\n <input\r\n #select\r\n (change)=\"handleChange()\"\r\n (click)=\"notifyFocusEvent($event)\"\r\n (input)=\"handleInput($event)\"\r\n [(ngModel)]=\"inputValue\"\r\n [attr.id]=\"selectId\"\r\n [attr.name]=\"name\"\r\n [attr.placeholder]=\"placeholder\"\r\n [attr.tabIndex]=\"tabIndex\"\r\n [attr.type]=\"'text'\"\r\n [class.focused]=\"focused\"\r\n [class.invalid]=\"invalid\"\r\n [disabled]=\"disabled\"\r\n [readOnly]=\"readOnly\"\r\n [title]=\"inputValue || ''\"\r\n class=\"text-select\" />\r\n <!-- (blur)=\"notifyFocusEvent($event)\"-->\r\n @if (!checkedItem) {\r\n <dd-lib-svg-icon\r\n (click)=\"notifyFocusEvent($event)\"\r\n [class.black-svg]=\"isShownList\"\r\n [class.disabled]=\"disabled\"\r\n [class.gray-svg]=\"!isShownList\"\r\n [class.up]=\"isShownList\"\r\n id=\"chevron-{{ selectId }}\" class=\"chevron\" icon=\"down_chevron\"></dd-lib-svg-icon>\r\n\r\n } @else {\r\n <dd-lib-svg-icon\r\n (click)=\"selectItem(checkedItem)\"\r\n class=\"clear\"\r\n id=\"chevron-{{ selectId }}\" icon=\"clear\"></dd-lib-svg-icon>\r\n\r\n }\r\n </div>\r\n\r\n @if (errorText && invalid) {\r\n <div class=\"lib-select__error\">{{ errorText }}</div>\r\n } @if (isShownList) {\r\n <div\r\n (ddClickOutside)=\"notifyFocusEvent($event)\"\r\n [elements]=\"['lib-select-' + selectId, 'chevron' + selectId]\"\r\n [class.top]=\"side === 'top'\"\r\n class=\"select-list-wrapper\">\r\n @if (_data()?.length) {\r\n @for (item of _data() | filterByKey: filterList.bind(this); track item) {\r\n <div\r\n (click)=\"selectItem(item)\"\r\n [class.active]=\"checkSelected(item)\"\r\n class=\"select-data\">\r\n @if (stringArray()) {\r\n <div [innerHTML]=\"item | highlight: inputValue | safe: 'html'\" class=\"select-data__title\"></div>\r\n }\r\n @if (keyTitle && !stringArray()) {\r\n <div\r\n [innerHTML]=\"item[keyTitle!] | highlight: inputValue | safe: 'html'\"\r\n class=\"select-data__title\"></div>\r\n }\r\n @if (keyDesc && !stringArray()) {\r\n <div\r\n [innerHTML]=\"item[keyDesc!] | highlight: inputValue | safe: 'html'\"\r\n [title]=\"item[keyDesc]\"\r\n class=\"select-data__desc\"></div>\r\n } @if (checkSelected(item)) {\r\n <dd-lib-svg-icon\r\n (click)=\"selectItem(checkedItem)\"\r\n class=\"checked\"\r\n id=\"chevron-{{ selectId }}\" icon=\"check_green\"></dd-lib-svg-icon>\r\n }\r\n </div>\r\n } } @else {\r\n <div class=\"select-loader\">\r\n <dd-lib-loader></dd-lib-loader>\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [".lib-select{position:relative}.lib-select input{width:100%;height:48px;padding:15px 28px 15px 16px;overflow:hidden;text-overflow:ellipsis;border-radius:8px;border:1px solid var(--input-border-color);background-color:transparent;position:relative}.lib-select input:hover{border-color:var(--input-active-border-colort)}.lib-select input:focus{border-color:var(--input-active-border-colort);box-shadow:var(--input-active-border-shadow)}.lib-select input:disabled{border:none;background-color:var(--input-disable-input);color:var(--input-disable-text);pointer-events:none}.lib-select input:disabled::placeholder{color:var(--input-placeholder)}.lib-select input.invalid,.lib-select input.invalid:hover{border-color:var(--input-error-border-color)}.lib-select input.invalid:focus{border-color:var(--input-error-border-color);box-shadow:var(--input-error-border-shadow)}.lib-select .clear{cursor:pointer;position:absolute;right:8px;top:12px}.lib-select .chevron{cursor:pointer;position:absolute;right:16px;top:10px}.lib-select .chevron.up{transform:rotate(180deg)}.lib-select__title{margin-bottom:4px;font-size:14px;line-height:24px;display:flex;align-items:flex-start}.lib-select__error{color:var(--primary-red-color);font-size:12px;font-weight:400;line-height:10px;margin-top:2px}.lib-select .select-list-wrapper{position:absolute;display:block;z-index:100;width:100%;max-height:300px;overflow:auto;border-radius:8px;box-shadow:var(--main-card-shadow);background-color:var(--main-card-color)}.lib-select .select-list-wrapper.top{bottom:50px;top:unset}.lib-select .select-list-wrapper .select-data{padding:12px 42px 12px 16px;cursor:pointer;position:relative}.lib-select .select-list-wrapper .select-data__desc{font-size:14px;font-weight:400;line-height:24px;text-overflow:ellipsis;text-wrap:nowrap;padding-top:2px;overflow:hidden;color:var(--second-gray-color)}.lib-select .select-list-wrapper .select-data:hover,.lib-select .select-list-wrapper .select-data.active{background:var(--select-act-hov-bgc)}.lib-select .select-list-wrapper .select-data.active .checked{position:absolute;right:16px;top:10px}.lib-select .select-list-wrapper .select-loader{padding:24px}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: HighlightPipe, name: "highlight" }, { kind: "pipe", type: SafePipe, name: "safe" }, { kind: "directive", type: ClickOutsideDirective, selector: "[ddClickOutside]", inputs: ["elements"], outputs: ["ddClickOutside"] }, { kind: "component", type: LibLoaderComponent, selector: "dd-lib-loader", inputs: ["color", "size"] }, { kind: "pipe", type: FilterByKeyPipe, name: "filterByKey" }, { kind: "component", type: LibSvgIconComponent, selector: "dd-lib-svg-icon", inputs: ["width", "height", "color", "icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
152
203
  }
153
204
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: LibSelectComponent, decorators: [{
154
205
  type: Component,
@@ -170,18 +221,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
170
221
  useExisting: forwardRef(() => LibSelectComponent),
171
222
  multi: true,
172
223
  },
173
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"lib-select\" id=\"lib-select-{{ selectId }}\">\n <label [for]=\"id\" class=\"lib-select__title\">\n {{ label }}\n @if (required) {\n <dd-lib-svg-icon icon=\"error_hint\"></dd-lib-svg-icon>\n }\n </label>\n\n <div class=\"pos-relative\">\n <input\n #select\n (change)=\"handleChange()\"\n (click)=\"notifyFocusEvent($event)\"\n (input)=\"handleInput($event)\"\n [(ngModel)]=\"inputValue\"\n [attr.id]=\"selectId\"\n [attr.name]=\"name\"\n [attr.placeholder]=\"placeholder\"\n [attr.tabIndex]=\"tabIndex\"\n [attr.type]=\"'text'\"\n [class.focused]=\"focused\"\n [class.invalid]=\"invalid\"\n [disabled]=\"disabled\"\n [readOnly]=\"readOnly\"\n [title]=\"inputValue\"\n class=\"text-select\" />\n <!-- (blur)=\"notifyFocusEvent($event)\"-->\n @if (!checkedItem) {\n <dd-lib-svg-icon\n (click)=\"notifyFocusEvent($event)\"\n [class.black-svg]=\"isShownList\"\n [class.disabled]=\"disabled\"\n [class.gray-svg]=\"!isShownList\"\n [class.up]=\"isShownList\"\n id=\"chevron-{{ selectId }}\" class=\"chevron\" icon=\"down_chevron\"></dd-lib-svg-icon>\n\n } @else {\n <dd-lib-svg-icon\n (click)=\"selectItem(checkedItem)\"\n class=\"clear\"\n id=\"chevron-{{ selectId }}\" icon=\"clear\"></dd-lib-svg-icon>\n\n }\n </div>\n\n @if (errorText && invalid) {\n <div class=\"lib-select__error\">{{ errorText }}</div>\n } @if (isShownList) {\n <div\n (ddClickOutside)=\"notifyFocusEvent($event)\"\n [elements]=\"['lib-select-' + selectId, 'chevron' + selectId]\"\n [class.top]=\"side === 'top'\"\n class=\"select-list-wrapper\">\n @if (data?.length) { @for (item of data | filterByKey: filterList.bind(this); track item) {\n <div\n (click)=\"selectItem(item)\"\n [class.active]=\"checkSelected(item)\"\n class=\"select-data\">\n\n @if (!keyDesc && !keyTitle) {\n <div [innerHTML]=\"item | highlight: inputValue | safe: 'html'\" class=\"select-data__title\"></div>\n } @if (keyTitle) {\n <div\n [innerHTML]=\"item[keyTitle!] | highlight: inputValue | safe: 'html'\"\n class=\"select-data__title\"></div>\n } @if (keyDesc) {\n <div\n [innerHTML]=\"item[keyDesc!] | highlight: inputValue | safe: 'html'\"\n [title]=\"item[keyDesc]\"\n class=\"select-data__desc\"></div>\n } @if (checkSelected(item)) {\n <dd-lib-svg-icon\n (click)=\"selectItem(checkedItem)\"\n class=\"checked\"\n id=\"chevron-{{ selectId }}\" icon=\"check_green\"></dd-lib-svg-icon>\n }\n </div>\n } } @else {\n <div class=\"select-loader\">\n <dd-lib-loader></dd-lib-loader>\n </div>\n }\n </div>\n }\n</div>\n", styles: [".lib-select{position:relative}.lib-select input{width:100%;height:48px;padding:15px 28px 15px 16px;overflow:hidden;text-overflow:ellipsis;border-radius:8px;border:1px solid var(--input-border-color);background-color:transparent;position:relative}.lib-select input:hover{border-color:var(--input-active-border-colort)}.lib-select input:focus{border-color:var(--input-active-border-colort);box-shadow:var(--input-active-border-shadow)}.lib-select input:disabled{border:none;background-color:var(--input-disable-input);color:var(--input-disable-text);pointer-events:none}.lib-select input:disabled::placeholder{color:var(--input-placeholder)}.lib-select input.invalid,.lib-select input.invalid:hover{border-color:var(--input-error-border-color)}.lib-select input.invalid:focus{border-color:var(--input-error-border-color);box-shadow:var(--input-error-border-shadow)}.lib-select .clear{cursor:pointer;position:absolute;right:8px;top:12px}.lib-select .chevron{cursor:pointer;position:absolute;right:16px;top:10px}.lib-select .chevron.up{transform:rotate(180deg)}.lib-select__title{margin-bottom:4px;font-size:14px;line-height:24px;display:flex;align-items:flex-start}.lib-select__error{color:var(--primary-red-color);font-size:12px;font-weight:400;line-height:10px;margin-top:2px}.lib-select .select-list-wrapper{position:absolute;display:block;z-index:100;width:100%;max-height:300px;overflow:auto;border-radius:8px;box-shadow:var(--main-card-shadow);background-color:var(--main-card-color)}.lib-select .select-list-wrapper.top{bottom:50px;top:unset}.lib-select .select-list-wrapper .select-data{padding:12px 42px 12px 16px;cursor:pointer;position:relative}.lib-select .select-list-wrapper .select-data__desc{font-size:14px;font-weight:400;line-height:24px;text-overflow:ellipsis;text-wrap:nowrap;padding-top:2px;overflow:hidden;color:var(--second-gray-color)}.lib-select .select-list-wrapper .select-data:hover,.lib-select .select-list-wrapper .select-data.active{background:var(--select-act-hov-bgc)}.lib-select .select-list-wrapper .select-data.active .checked{position:absolute;right:16px;top:10px}.lib-select .select-list-wrapper .select-loader{padding:24px}\n"] }]
224
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"lib-select\" id=\"lib-select-{{ selectId }}\" [title]=\"label\">\r\n <label [for]=\"id\" class=\"lib-select__title\">\r\n {{ label }}\r\n @if (required) {\r\n <dd-lib-svg-icon icon=\"error_hint\"></dd-lib-svg-icon>\r\n }\r\n </label>\r\n\r\n <div class=\"pos-relative\">\r\n <input\r\n #select\r\n (change)=\"handleChange()\"\r\n (click)=\"notifyFocusEvent($event)\"\r\n (input)=\"handleInput($event)\"\r\n [(ngModel)]=\"inputValue\"\r\n [attr.id]=\"selectId\"\r\n [attr.name]=\"name\"\r\n [attr.placeholder]=\"placeholder\"\r\n [attr.tabIndex]=\"tabIndex\"\r\n [attr.type]=\"'text'\"\r\n [class.focused]=\"focused\"\r\n [class.invalid]=\"invalid\"\r\n [disabled]=\"disabled\"\r\n [readOnly]=\"readOnly\"\r\n [title]=\"inputValue || ''\"\r\n class=\"text-select\" />\r\n <!-- (blur)=\"notifyFocusEvent($event)\"-->\r\n @if (!checkedItem) {\r\n <dd-lib-svg-icon\r\n (click)=\"notifyFocusEvent($event)\"\r\n [class.black-svg]=\"isShownList\"\r\n [class.disabled]=\"disabled\"\r\n [class.gray-svg]=\"!isShownList\"\r\n [class.up]=\"isShownList\"\r\n id=\"chevron-{{ selectId }}\" class=\"chevron\" icon=\"down_chevron\"></dd-lib-svg-icon>\r\n\r\n } @else {\r\n <dd-lib-svg-icon\r\n (click)=\"selectItem(checkedItem)\"\r\n class=\"clear\"\r\n id=\"chevron-{{ selectId }}\" icon=\"clear\"></dd-lib-svg-icon>\r\n\r\n }\r\n </div>\r\n\r\n @if (errorText && invalid) {\r\n <div class=\"lib-select__error\">{{ errorText }}</div>\r\n } @if (isShownList) {\r\n <div\r\n (ddClickOutside)=\"notifyFocusEvent($event)\"\r\n [elements]=\"['lib-select-' + selectId, 'chevron' + selectId]\"\r\n [class.top]=\"side === 'top'\"\r\n class=\"select-list-wrapper\">\r\n @if (_data()?.length) {\r\n @for (item of _data() | filterByKey: filterList.bind(this); track item) {\r\n <div\r\n (click)=\"selectItem(item)\"\r\n [class.active]=\"checkSelected(item)\"\r\n class=\"select-data\">\r\n @if (stringArray()) {\r\n <div [innerHTML]=\"item | highlight: inputValue | safe: 'html'\" class=\"select-data__title\"></div>\r\n }\r\n @if (keyTitle && !stringArray()) {\r\n <div\r\n [innerHTML]=\"item[keyTitle!] | highlight: inputValue | safe: 'html'\"\r\n class=\"select-data__title\"></div>\r\n }\r\n @if (keyDesc && !stringArray()) {\r\n <div\r\n [innerHTML]=\"item[keyDesc!] | highlight: inputValue | safe: 'html'\"\r\n [title]=\"item[keyDesc]\"\r\n class=\"select-data__desc\"></div>\r\n } @if (checkSelected(item)) {\r\n <dd-lib-svg-icon\r\n (click)=\"selectItem(checkedItem)\"\r\n class=\"checked\"\r\n id=\"chevron-{{ selectId }}\" icon=\"check_green\"></dd-lib-svg-icon>\r\n }\r\n </div>\r\n } } @else {\r\n <div class=\"select-loader\">\r\n <dd-lib-loader></dd-lib-loader>\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [".lib-select{position:relative}.lib-select input{width:100%;height:48px;padding:15px 28px 15px 16px;overflow:hidden;text-overflow:ellipsis;border-radius:8px;border:1px solid var(--input-border-color);background-color:transparent;position:relative}.lib-select input:hover{border-color:var(--input-active-border-colort)}.lib-select input:focus{border-color:var(--input-active-border-colort);box-shadow:var(--input-active-border-shadow)}.lib-select input:disabled{border:none;background-color:var(--input-disable-input);color:var(--input-disable-text);pointer-events:none}.lib-select input:disabled::placeholder{color:var(--input-placeholder)}.lib-select input.invalid,.lib-select input.invalid:hover{border-color:var(--input-error-border-color)}.lib-select input.invalid:focus{border-color:var(--input-error-border-color);box-shadow:var(--input-error-border-shadow)}.lib-select .clear{cursor:pointer;position:absolute;right:8px;top:12px}.lib-select .chevron{cursor:pointer;position:absolute;right:16px;top:10px}.lib-select .chevron.up{transform:rotate(180deg)}.lib-select__title{margin-bottom:4px;font-size:14px;line-height:24px;display:flex;align-items:flex-start}.lib-select__error{color:var(--primary-red-color);font-size:12px;font-weight:400;line-height:10px;margin-top:2px}.lib-select .select-list-wrapper{position:absolute;display:block;z-index:100;width:100%;max-height:300px;overflow:auto;border-radius:8px;box-shadow:var(--main-card-shadow);background-color:var(--main-card-color)}.lib-select .select-list-wrapper.top{bottom:50px;top:unset}.lib-select .select-list-wrapper .select-data{padding:12px 42px 12px 16px;cursor:pointer;position:relative}.lib-select .select-list-wrapper .select-data__desc{font-size:14px;font-weight:400;line-height:24px;text-overflow:ellipsis;text-wrap:nowrap;padding-top:2px;overflow:hidden;color:var(--second-gray-color)}.lib-select .select-list-wrapper .select-data:hover,.lib-select .select-list-wrapper .select-data.active{background:var(--select-act-hov-bgc)}.lib-select .select-list-wrapper .select-data.active .checked{position:absolute;right:16px;top:10px}.lib-select .select-list-wrapper .select-loader{padding:24px}\n"] }]
174
225
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.ControlContainer, decorators: [{
175
226
  type: Optional
176
227
  }, {
177
228
  type: Host
178
229
  }, {
179
230
  type: SkipSelf
180
- }] }], propDecorators: { multi: [{
231
+ }] }], propDecorators: { data: [{
181
232
  type: Input
182
- }], selectId: [{
233
+ }], multi: [{
183
234
  type: Input
184
- }], data: [{
235
+ }], selectId: [{
185
236
  type: Input
186
237
  }], keyTitle: [{
187
238
  type: Input
@@ -192,4 +243,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
192
243
  }], placeholder: [{
193
244
  type: Input
194
245
  }] } });
195
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZC1saWIvc3JjL2xpYi9saWItc2VsZWN0L2xpYi1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGQtbGliL3NyYy9saWIvbGliLXNlbGVjdC9saWItc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFVBQVUsRUFDVixJQUFJLEVBQ0osS0FBSyxFQUVMLFFBQVEsRUFDUixRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFFBQVEsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzNELE9BQU8sRUFHTCxXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLG1CQUFtQixHQUNwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBQzNFLE9BQU8sRUFBQyxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBQyxNQUFNLFNBQVMsQ0FBQzs7O0FBNkJ4RixNQUFNLE9BQU8sa0JBQ1gsU0FBUSwyQkFBMkI7YUFHckIsY0FBUyxHQUFHLENBQUMsQUFBSixDQUFLO0lBZ0I1QixZQUNFLGVBQWtDLEVBQ00sZ0JBQWtDO1FBRTFFLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUZpQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBYjVELGFB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Q0FBQyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztnQkFDakQsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLGlEQ2pESCwwd0ZBcUZBLDBxRUR2REksbUJBQW1CLHNaQUNuQixXQUFXLGtQQUNYLGFBQWEsNkNBRWIsUUFBUSw2Q0FDUixxQkFBcUIsZ0hBQ3JCLGtCQUFrQixnRkFDbEIsZUFBZSxvREFDZixtQkFBbUI7OzJGQWNWLGtCQUFrQjtrQkEzQjlCLFNBQVM7K0JBQ0UsZUFBZSxjQUNiLElBQUksV0FDUDt3QkFDUCxnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsV0FBVzt3QkFDWCxhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsUUFBUTt3QkFDUixxQkFBcUI7d0JBQ3JCLGtCQUFrQjt3QkFDbEIsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLFFBQVE7cUJBQ1QsYUFHVTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQzs0QkFDakQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0YsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07OzBCQXdCNUMsUUFBUTs7MEJBQUksSUFBSTs7MEJBQUksUUFBUTt5Q0FoQmYsS0FBSztzQkFBcEIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxPQUFPO3NCQUF0QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ21CLFdBQVc7c0JBQW5DLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBmb3J3YXJkUmVmLFxyXG4gIEhvc3QsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE9wdGlvbmFsLFxyXG4gIFNraXBTZWxmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0pzb25QaXBlLCBOZ09wdGltaXplZEltYWdlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIENvbnRyb2xDb250YWluZXIsXHJcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXHJcbiAgRm9ybXNNb2R1bGUsXHJcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7TGliQ29tbW9uSW5wdXRUZXh0Q29tcG9uZW50fSBmcm9tICcuLi9jb21tb24vbGliLWNvbW1vbi1pbnB1dC10ZXh0JztcclxuaW1wb3J0IHtMaWJDYXJkQ29tcG9uZW50fSBmcm9tICcuLi9saWItY2FyZC9saWItY2FyZC5jb21wb25lbnQnO1xyXG5pbXBvcnQge0xpYkxvYWRlckNvbXBvbmVudH0gZnJvbSAnLi4vbGliLWxvYWRlci9saWItbG9hZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7TGliU3ZnSWNvbkNvbXBvbmVudH0gZnJvbSBcIi4uL2xpYi1zdmctaWNvbi9saWItc3ZnLWljb24uY29tcG9uZW50XCI7XHJcbmltcG9ydCB7Q2xpY2tPdXRzaWRlRGlyZWN0aXZlLCBGaWx0ZXJCeUtleVBpcGUsIEhpZ2hsaWdodFBpcGUsIFNhZmVQaXBlfSBmcm9tIFwiLi4vY29yZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkZC1saWItc2VsZWN0JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE5nT3B0aW1pemVkSW1hZ2UsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBIaWdobGlnaHRQaXBlLFxyXG4gICAgTGliQ2FyZENvbXBvbmVudCxcclxuICAgIFNhZmVQaXBlLFxyXG4gICAgQ2xpY2tPdXRzaWRlRGlyZWN0aXZlLFxyXG4gICAgTGliTG9hZGVyQ29tcG9uZW50LFxyXG4gICAgRmlsdGVyQnlLZXlQaXBlLFxyXG4gICAgTGliU3ZnSWNvbkNvbXBvbmVudCxcclxuICAgIEpzb25QaXBlLFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2xpYi1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9saWItc2VsZWN0LmNvbXBvbmVudC5zY3NzJyxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IExpYlNlbGVjdENvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGliU2VsZWN0Q29tcG9uZW50PFQ+XHJcbiAgZXh0ZW5kcyBMaWJDb21tb25JbnB1dFRleHRDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Jcclxue1xyXG4gIHB1YmxpYyBzdGF0aWMgaWRDb3VudGVyID0gMTtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIG11bHRpOiBib29sZWFuIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3RJZDogc3RyaW5nICB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBwdWJsaWMgZGF0YTogYW55ICB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBwdWJsaWMga2V5VGl0bGUgPSAnbmFtZSc7XHJcbiAgQElucHV0KCkgcHVibGljIGtleURlc2M6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBwdWJsaWMga2V5VmFsdWUgPSAnaWQnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBvdmVycmlkZSBwbGFjZWhvbGRlciA9ICfQktGL0LHQtdGA0LjRgtC1INC40Lcg0YHQv9C40YHQutCwJztcclxuICBwdWJsaWMgY2hlY2tlZEl0ZW06IGFueTtcclxuICBwdWJsaWMgY2hlY2tlZEl0ZW1zOiBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBpbnB1dFZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgcHVibGljIHNlYXJjaFZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgcHVibGljIGlzU2hvd25MaXN0OiBib29sZWFuIHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgc3RyaW5nQXJyYXk6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIEBPcHRpb25hbCgpIEBIb3N0KCkgQFNraXBTZWxmKCkgcHJpdmF0ZSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxyXG4gICkge1xyXG4gICAgc3VwZXIoY2hhbmdlRGV0ZWN0aW9uKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLnN0cmluZ0FycmF5ID0gdHlwZW9mIHRoaXMuZGF0YT8uWzBdID09PSAnc3RyaW5nJztcclxuICAgIGlmICghdGhpcy5zZWxlY3RJZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdElkID0gJ2RkLXNlbGVjdC0nICsgTGliU2VsZWN0Q29tcG9uZW50LmlkQ291bnRlcisrO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMua2V5VGl0bGUgJiYgIXRoaXMua2V5VmFsdWUpIHtcclxuICAgICAgdGhpcy5rZXlWYWx1ZSA9IHRoaXMua2V5VGl0bGU7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbnRyb2wgPVxyXG4gICAgICB0aGlzLmNvbnRyb2xDb250YWluZXIgJiYgdGhpcy5mb3JtQ29udHJvbE5hbWVcclxuICAgICAgICA/IHRoaXMuY29udHJvbENvbnRhaW5lcj8uY29udHJvbD8uZ2V0KHRoaXMuZm9ybUNvbnRyb2xOYW1lKVxyXG4gICAgICAgIDogbnVsbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvdmVycmlkZSByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XHJcbiAgICBzdXBlci5yZWdpc3Rlck9uQ2hhbmdlKGZuKVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG92ZXJyaWRlIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcclxuICAgIHN1cGVyLnJlZ2lzdGVyT25Ub3VjaGVkKGZuKVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG92ZXJyaWRlIGhhbmRsZUlucHV0KGU6IEV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmlzU2hvd25MaXN0ID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VhcmNoVmFsdWUgPSB0aGlzLmlucHV0VmFsdWU7XHJcbiAgICBzdXBlci5oYW5kbGVJbnB1dChlKVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG92ZXJyaWRlIG5vdGlmeUZvY3VzRXZlbnQoZTogRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmlzU2hvd25MaXN0ID0gIXRoaXMuaXNTaG93bkxpc3Q7XHJcbiAgICB9XHJcbiAgICBzdXBlci5ub3RpZnlGb2N1c0V2ZW50KGUpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5tdWx0aSAmJiB2YWx1ZT8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IGDQktGL0LHRgNCw0L3QviAoJHt2YWx1ZS5sZW5ndGh9KWBcclxuICAgICAgdGhpcy5jaGVja2VkSXRlbXMgPSB0aGlzLmRhdGEuZmlsdGVyKChmOiBhbnkpID0+IHZhbHVlLmluY2x1ZGVzKGZbdGhpcy5rZXlWYWx1ZV0pKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuc3RyaW5nQXJyYXkpIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gdmFsdWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgZlZhbCA9IHRoaXMuZGF0YS5maW5kKChmOiBhbnkpID0+IGZbdGhpcy5rZXlWYWx1ZV0gPT09IHZhbHVlKTtcclxuICAgICAgICB0aGlzLnZhbHVlID0gZlZhbDtcclxuICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSBmVmFsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VsZWN0SXRlbShpdGVtOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm11bHRpKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0TXVsdGlJdGVtKGl0ZW0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RTaW5nbGVJdGVtKGl0ZW0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGZpbHRlckxpc3QoaXRlbTogYW55KTogYW55IHtcclxuICAgIHJldHVybiBpdGVtW3RoaXMua2V5VGl0bGUhXT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnNlYXJjaFZhbHVlPy50b0xvd2VyQ2FzZSgpIHx8ICcnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJvcGFnYXRlQ2hhbmdlKF92YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNlbGVjdFNpbmdsZUl0ZW0oaXRlbTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIGlmICghdGhpcy5jaGVja2VkSXRlbSkge1xyXG4gICAgICAgIHRoaXMuY2hlY2tlZEl0ZW0gPSBpdGVtO1xyXG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IGl0ZW07XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IGl0ZW07XHJcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jaGVja2VkSXRlbSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodW5kZWZpbmVkKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKCF0aGlzLmNoZWNrZWRJdGVtIHx8IGl0ZW1bdGhpcy5rZXlWYWx1ZSFdICE9PSB0aGlzLmNoZWNrZWRJdGVtPy5bdGhpcy5rZXlWYWx1ZSFdKSB7XHJcbiAgICAgICAgdGhpcy5jaGVja2VkSXRlbSA9IGl0ZW07XHJcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gdGhpcy5jaGVja2VkSXRlbVt0aGlzLmtleVRpdGxlIV07XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IGl0ZW1bdGhpcy5rZXlWYWx1ZSFdO1xyXG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY2hlY2tlZEl0ZW0gPSBudWxsO1xyXG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLnZhbHVlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHVuZGVmaW5lZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuc2VhcmNoVmFsdWUgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLmlzU2hvd25MaXN0ID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNlbGVjdE11bHRpSXRlbShpdGVtOiBhbnkpIHtcclxuICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycpIHtcclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5jaGVja1NlbGVjdGVkKGl0ZW0pKSB7XHJcbiAgICAgICAgdGhpcy5jaGVja2VkSXRlbXMgPSB0aGlzLmNoZWNrZWRJdGVtcy5maWx0ZXIoZiA9PiBmW3RoaXMua2V5VmFsdWUhXSAhPT0gaXRlbVt0aGlzLmtleVZhbHVlIV0gfHwgZiAhPT0gaXRlbSlcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmNoZWNrZWRJdGVtcy5wdXNoKGl0ZW0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IHZhbHVlcyA9ICB0aGlzLmNoZWNrZWRJdGVtcy5tYXAobSA9PiBtW3RoaXMua2V5VmFsdWVdKVxyXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodmFsdWVzKTtcclxuICAgIGNvbnN0IHNlbGVjdEwgPSB0aGlzLmNoZWNrZWRJdGVtcy5sZW5ndGg7XHJcbiAgICBpZiAoc2VsZWN0TCkge1xyXG4gICAgICB0aGlzLmlucHV0VmFsdWUgPSBg0JLRi9Cx0YDQsNC90L4gKCR7c2VsZWN0TH0pYDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGVja1NlbGVjdGVkKGl0ZW06IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMubXVsdGkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY2hlY2tlZEl0ZW1zLmZpbmQoZiA9PiBmW3RoaXMua2V5VmFsdWUhXSA9PT0gaXRlbVt0aGlzLmtleVZhbHVlIV0gfHwgZiA9PT0gaXRlbSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNoZWNrZWRJdGVtPy5bdGhpcy5rZXlWYWx1ZSFdID09PSBpdGVtW3RoaXMua2V5VmFsdWUhXSB8fCB0aGlzLmNoZWNrZWRJdGVtID09PSBpdGVtXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImxpYi1zZWxlY3RcIiBpZD1cImxpYi1zZWxlY3Qte3sgc2VsZWN0SWQgfX1cIj5cbiAgPGxhYmVsIFtmb3JdPVwiaWRcIiBjbGFzcz1cImxpYi1zZWxlY3RfX3RpdGxlXCI+XG4gICAge3sgbGFiZWwgfX1cbiAgICBAaWYgKHJlcXVpcmVkKSB7XG4gICAgICA8ZGQtbGliLXN2Zy1pY29uIGljb249XCJlcnJvcl9oaW50XCI+PC9kZC1saWItc3ZnLWljb24+XG4gICAgfVxuICA8L2xhYmVsPlxuXG4gIDxkaXYgY2xhc3M9XCJwb3MtcmVsYXRpdmVcIj5cbiAgICA8aW5wdXRcbiAgICAgICNzZWxlY3RcbiAgICAgIChjaGFuZ2UpPVwiaGFuZGxlQ2hhbmdlKClcIlxuICAgICAgKGNsaWNrKT1cIm5vdGlmeUZvY3VzRXZlbnQoJGV2ZW50KVwiXG4gICAgICAoaW5wdXQpPVwiaGFuZGxlSW5wdXQoJGV2ZW50KVwiXG4gICAgICBbKG5nTW9kZWwpXT1cImlucHV0VmFsdWVcIlxuICAgICAgW2F0dHIuaWRdPVwic2VsZWN0SWRcIlxuICAgICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgIFthdHRyLnRhYkluZGV4XT1cInRhYkluZGV4XCJcbiAgICAgIFthdHRyLnR5cGVdPVwiJ3RleHQnXCJcbiAgICAgIFtjbGFzcy5mb2N1c2VkXT1cImZvY3VzZWRcIlxuICAgICAgW2NsYXNzLmludmFsaWRdPVwiaW52YWxpZFwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgIFt0aXRsZV09XCJpbnB1dFZhbHVlXCJcbiAgICAgIGNsYXNzPVwidGV4dC1zZWxlY3RcIiAvPlxuICAgIDwhLS0gICAgKGJsdXIpPVwibm90aWZ5Rm9jdXNFdmVudCgkZXZlbnQpXCItLT5cbiAgICBAaWYgKCFjaGVja2VkSXRlbSkge1xuICAgICAgPGRkLWxpYi1zdmctaWNvblxuICAgICAgICAoY2xpY2spPVwibm90aWZ5Rm9jdXNFdmVudCgkZXZlbnQpXCJcbiAgICAgICAgW2NsYXNzLmJsYWNrLXN2Z109XCJpc1Nob3duTGlzdFwiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtjbGFzcy5ncmF5LXN2Z109XCIhaXNTaG93bkxpc3RcIlxuICAgICAgICBbY2xhc3MudXBdPVwiaXNTaG93bkxpc3RcIlxuICAgICAgICBpZD1cImNoZXZyb24te3sgc2VsZWN0SWQgfX1cIiBjbGFzcz1cImNoZXZyb25cIiBpY29uPVwiZG93bl9jaGV2cm9uXCI+PC9kZC1saWItc3ZnLWljb24+XG5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxkZC1saWItc3ZnLWljb25cbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdEl0ZW0oY2hlY2tlZEl0ZW0pXCJcbiAgICAgICAgY2xhc3M9XCJjbGVhclwiXG4gICAgICAgIGlkPVwiY2hldnJvbi17eyBzZWxlY3RJZCB9fVwiIGljb249XCJjbGVhclwiPjwvZGQtbGliLXN2Zy1pY29uPlxuXG4gICAgfVxuICA8L2Rpdj5cblxuICBAaWYgKGVycm9yVGV4dCAmJiBpbnZhbGlkKSB7XG4gIDxkaXYgY2xhc3M9XCJsaWItc2VsZWN0X19lcnJvclwiPnt7IGVycm9yVGV4dCB9fTwvZGl2PlxuICB9IEBpZiAoaXNTaG93bkxpc3QpIHtcbiAgPGRpdlxuICAgIChkZENsaWNrT3V0c2lkZSk9XCJub3RpZnlGb2N1c0V2ZW50KCRldmVudClcIlxuICAgIFtlbGVtZW50c109XCJbJ2xpYi1zZWxlY3QtJyArIHNlbGVjdElkLCAnY2hldnJvbicgKyBzZWxlY3RJZF1cIlxuICAgIFtjbGFzcy50b3BdPVwic2lkZSA9PT0gJ3RvcCdcIlxuICAgIGNsYXNzPVwic2VsZWN0LWxpc3Qtd3JhcHBlclwiPlxuICAgIEBpZiAoZGF0YT8ubGVuZ3RoKSB7IEBmb3IgKGl0ZW0gb2YgZGF0YSB8IGZpbHRlckJ5S2V5OiBmaWx0ZXJMaXN0LmJpbmQodGhpcyk7IHRyYWNrIGl0ZW0pIHtcbiAgICA8ZGl2XG4gICAgICAoY2xpY2spPVwic2VsZWN0SXRlbShpdGVtKVwiXG4gICAgICBbY2xhc3MuYWN0aXZlXT1cImNoZWNrU2VsZWN0ZWQoaXRlbSlcIlxuICAgICAgY2xhc3M9XCJzZWxlY3QtZGF0YVwiPlxuXG4gICAgICBAaWYgKCFrZXlEZXNjICYmICFrZXlUaXRsZSkge1xuICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cIml0ZW0gfCBoaWdobGlnaHQ6IGlucHV0VmFsdWUgfCBzYWZlOiAnaHRtbCdcIiBjbGFzcz1cInNlbGVjdC1kYXRhX190aXRsZVwiPjwvZGl2PlxuICAgICAgfSBAaWYgKGtleVRpdGxlKSB7XG4gICAgICA8ZGl2XG4gICAgICAgIFtpbm5lckhUTUxdPVwiaXRlbVtrZXlUaXRsZSFdIHwgaGlnaGxpZ2h0OiBpbnB1dFZhbHVlIHwgc2FmZTogJ2h0bWwnXCJcbiAgICAgICAgY2xhc3M9XCJzZWxlY3QtZGF0YV9fdGl0bGVcIj48L2Rpdj5cbiAgICAgIH0gQGlmIChrZXlEZXNjKSB7XG4gICAgICA8ZGl2XG4gICAgICAgIFtpbm5lckhUTUxdPVwiaXRlbVtrZXlEZXNjIV0gfCBoaWdobGlnaHQ6IGlucHV0VmFsdWUgfCBzYWZlOiAnaHRtbCdcIlxuICAgICAgICBbdGl0bGVdPVwiaXRlbVtrZXlEZXNjXVwiXG4gICAgICAgIGNsYXNzPVwic2VsZWN0LWRhdGFfX2Rlc2NcIj48L2Rpdj5cbiAgICAgIH0gQGlmIChjaGVja1NlbGVjdGVkKGl0ZW0pKSB7XG4gICAgICA8ZGQtbGliLXN2Zy1pY29uXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RJdGVtKGNoZWNrZWRJdGVtKVwiXG4gICAgICAgIGNsYXNzPVwiY2hlY2tlZFwiXG4gICAgICAgIGlkPVwiY2hldnJvbi17eyBzZWxlY3RJZCB9fVwiIGljb249XCJjaGVja19ncmVlblwiPjwvZGQtbGliLXN2Zy1pY29uPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIH0gfSBAZWxzZSB7XG4gICAgPGRpdiBjbGFzcz1cInNlbGVjdC1sb2FkZXJcIj5cbiAgICAgIDxkZC1saWItbG9hZGVyPjwvZGQtbGliLWxvYWRlcj5cbiAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuICB9XG48L2Rpdj5cbiJdfQ==
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZC1saWIvc3JjL2xpYi9saWItc2VsZWN0L2xpYi1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGQtbGliL3NyYy9saWIvbGliLXNlbGVjdC9saWItc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFVBQVUsRUFDVixJQUFJLEVBQ0osS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEVBQ04sUUFBUSxHQUVULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxRQUFRLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRCxPQUFPLEVBR0wsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixtQkFBbUIsR0FDcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUN0RSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQUMscUJBQXFCLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUMsTUFBTSxTQUFTLENBQUM7OztBQTZCeEYsTUFBTSxPQUFPLGtCQUNYLFNBQVEsMkJBQTJCO2FBR3JCLGNBQVMsR0FBRyxDQUFDLEFBQUosQ0FBSztJQUM1QixJQUFvQixJQUFJLENBQUMsQ0FBa0I7UUFDekMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEIsSUFBSSxD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QUFRO3FCQUNULGFBR1U7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLENBQUM7NEJBQ2pELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNOzswQkE0QjVDLFFBQVE7OzBCQUFJLElBQUk7OzBCQUFJLFFBQVE7eUNBckJYLElBQUk7c0JBQXZCLEtBQUs7Z0JBSVUsS0FBSztzQkFBcEIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUVVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNtQixXQUFXO3NCQUFuQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgZm9yd2FyZFJlZixcclxuICBIb3N0LFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPcHRpb25hbCxcclxuICBzaWduYWwsXHJcbiAgU2tpcFNlbGYsXHJcbiAgV3JpdGFibGVTaWduYWwsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7SnNvblBpcGUsIE5nT3B0aW1pemVkSW1hZ2V9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQ29udHJvbENvbnRhaW5lcixcclxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcclxuICBGb3Jtc01vZHVsZSxcclxuICBOR19WQUxVRV9BQ0NFU1NPUixcclxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtMaWJDb21tb25JbnB1dFRleHRDb21wb25lbnR9IGZyb20gJy4uL2NvbW1vbi9saWItY29tbW9uLWlucHV0LXRleHQnO1xyXG5pbXBvcnQge0xpYkNhcmRDb21wb25lbnR9IGZyb20gJy4uL2xpYi1jYXJkL2xpYi1jYXJkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7TGliTG9hZGVyQ29tcG9uZW50fSBmcm9tICcuLi9saWItbG9hZGVyL2xpYi1sb2FkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHtMaWJTdmdJY29uQ29tcG9uZW50fSBmcm9tIFwiLi4vbGliLXN2Zy1pY29uL2xpYi1zdmctaWNvbi5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtDbGlja091dHNpZGVEaXJlY3RpdmUsIEZpbHRlckJ5S2V5UGlwZSwgSGlnaGxpZ2h0UGlwZSwgU2FmZVBpcGV9IGZyb20gXCIuLi9jb3JlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2RkLWxpYi1zZWxlY3QnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTmdPcHRpbWl6ZWRJbWFnZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIEhpZ2hsaWdodFBpcGUsXHJcbiAgICBMaWJDYXJkQ29tcG9uZW50LFxyXG4gICAgU2FmZVBpcGUsXHJcbiAgICBDbGlja091dHNpZGVEaXJlY3RpdmUsXHJcbiAgICBMaWJMb2FkZXJDb21wb25lbnQsXHJcbiAgICBGaWx0ZXJCeUtleVBpcGUsXHJcbiAgICBMaWJTdmdJY29uQ29tcG9uZW50LFxyXG4gICAgSnNvblBpcGUsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vbGliLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2xpYi1zZWxlY3QuY29tcG9uZW50LnNjc3MnLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTGliU2VsZWN0Q29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMaWJTZWxlY3RDb21wb25lbnQ8VD5cclxuICBleHRlbmRzIExpYkNvbW1vbklucHV0VGV4dENvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvclxyXG57XHJcbiAgcHVibGljIHN0YXRpYyBpZENvdW50ZXIgPSAxO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgZGF0YShkOiBhbnkgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX2RhdGEuc2V0KGQpO1xyXG4gICAgdGhpcy5zdHJpbmdBcnJheS5zZXQodHlwZW9mIGQ/LlswXSA9PT0gJ3N0cmluZycpO1xyXG4gIH07XHJcbiAgQElucHV0KCkgcHVibGljIG11bHRpOiBib29sZWFuIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3RJZDogc3RyaW5nICB8IHVuZGVmaW5lZDtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIGtleVRpdGxlID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIGtleURlc2MgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMga2V5VmFsdWUgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgb3ZlcnJpZGUgcGxhY2Vob2xkZXIgPSAn0JLRi9Cx0LXRgNC40YLQtSDQuNC3INGB0L/QuNGB0LrQsCc7XHJcbiAgcHVibGljIGNoZWNrZWRJdGVtOiBhbnk7XHJcbiAgcHVibGljIF9kYXRhOiBXcml0YWJsZVNpZ25hbDxhbnkgfCB1bmRlZmluZWQ+ID0gc2lnbmFsKFtdKTtcclxuICBwdWJsaWMgY2hlY2tlZEl0ZW1zOiBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBpbnB1dFZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgcHVibGljIHNlYXJjaFZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgcHVibGljIGlzU2hvd25MaXN0OiBib29sZWFuIHwgdW5kZWZpbmVkO1xyXG4gIHB1YmxpYyBzdHJpbmdBcnJheTogV3JpdGFibGVTaWduYWw8IGJvb2xlYW4gfCB1bmRlZmluZWQ+ID0gc2lnbmFsKGZhbHNlKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQE9wdGlvbmFsKCkgQEhvc3QoKSBAU2tpcFNlbGYoKSBwcml2YXRlIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXHJcbiAgKSB7XHJcbiAgICBzdXBlcihjaGFuZ2VEZXRlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnNlbGVjdElkKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0SWQgPSAnZGQtc2VsZWN0LScgKyBMaWJTZWxlY3RDb21wb25lbnQuaWRDb3VudGVyKys7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jb250cm9sID1cclxuICAgICAgdGhpcy5jb250cm9sQ29udGFpbmVyICYmIHRoaXMuZm9ybUNvbnRyb2xOYW1lXHJcbiAgICAgICAgPyB0aGlzLmNvbnRyb2xDb250YWluZXI/LmNvbnRyb2w/LmdldCh0aGlzLmZvcm1Db250cm9sTmFtZSlcclxuICAgICAgICA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3ZlcnJpZGUgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xyXG4gICAgc3VwZXIucmVnaXN0ZXJPbkNoYW5nZShmbilcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvdmVycmlkZSByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gZm47XHJcbiAgICBzdXBlci5yZWdpc3Rlck9uVG91Y2hlZChmbilcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvdmVycmlkZSBoYW5kbGVJbnB1dChlOiBFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc1Nob3duTGlzdCA9IHRydWU7XHJcbiAgICB0aGlzLnNlYXJjaFZhbHVlID0gdGhpcy5pbnB1dFZhbHVlO1xyXG4gICAgc3VwZXIuaGFuZGxlSW5wdXQoZSlcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvdmVycmlkZSBub3RpZnlGb2N1c0V2ZW50KGU6IEV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5pc1Nob3duTGlzdCA9ICF0aGlzLmlzU2hvd25MaXN0O1xyXG4gICAgICBpZiAodGhpcy5mZXRjaE1vZGUpIHtcclxuICAgICAgICB0aGlzLmZldGNoRXZlbnQuZW1pdCgpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHN1cGVyLm5vdGlmeUZvY3VzRXZlbnQoZSlcclxuICB9XHJcblxyXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm11bHRpICYmIHZhbHVlPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5pbnB1dFZhbHVlID0gYNCS0YvQsdGA0LDQvdC+ICgke3ZhbHVlLmxlbmd0aH0pYFxyXG4gICAgICBpZiAodGhpcy5rZXlWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMuY2hlY2tlZEl0ZW1zID0gdGhpcy5fZGF0YSgpLmZpbHRlcigoZjogYW55KSA9PiB2YWx1ZS5pbmNsdWRlcyhmW3RoaXMua2V5VmFsdWVdKSlcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5zdHJpbmdBcnJheSgpKSB7XHJcbiAgICAgICAgICB0aGlzLmNoZWNrZWRJdGVtcyA9IHRoaXMuX2RhdGEoKS5maWx0ZXIoKGY6IGFueSkgPT4gdmFsdWUuaW5jbHVkZXMoZikpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IHN0ckFyciA9IHZhbHVlLm1hcChKU09OLnN0cmluZ2lmeSlcclxuICAgICAgICAgIHRoaXMuY2hlY2tlZEl0ZW1zID0gdGhpcy5fZGF0YSgpLmZpbHRlcigoZjogYW55KSA9PiBzdHJBcnIuaW5jbHVkZXMoSlNPTi5zdHJpbmdpZnkoZikpKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuc3RyaW5nQXJyYXkoKSkge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSB2YWx1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoISF0aGlzLmtleVZhbHVlKSB7XHJcbiAgICAgICAgICBjb25zdCBmVmFsID0gdGhpcy5fZGF0YSgpPy5maW5kKChmOiBhbnkpID0+IGY/Llt0aGlzLmtleVZhbHVlXSA9PT0gdmFsdWUpO1xyXG4gICAgICAgICAgdGhpcy52YWx1ZSA9IGZWYWw/Llt0aGlzLmtleVZhbHVlXTtcclxuICAgICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHRoaXMua2V5VGl0bGUgPyBmVmFsPy5bdGhpcy5rZXlUaXRsZV0gOiBmVmFsO1xyXG4gICAgICAgICAgdGhpcy5jaGVja2VkSXRlbSA9IGZWYWw7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IGZWYWwgPSB0aGlzLl9kYXRhKCk/LmZpbmQoKGY6IGFueSkgPT4gSlNPTi5zdHJpbmdpZnkoZikgPT09IEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XHJcbiAgICAgICAgICB0aGlzLnZhbHVlID0gZlZhbDtcclxuICAgICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHRoaXMua2V5VGl0bGUgPyBmVmFsPy5bdGhpcy5rZXlUaXRsZV0gOiBmVmFsO1xyXG4gICAgICAgICAgdGhpcy5jaGVja2VkSXRlbSA9IGZWYWw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdEl0ZW0oaXRlbTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5tdWx0aSkge1xyXG4gICAgICB0aGlzLnNlbGVjdE11bHRpSXRlbShpdGVtKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0U2luZ2xlSXRlbShpdGVtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBmaWx0ZXJMaXN0KGl0ZW06IGFueSk6IGFueSB7XHJcbiAgICBpZiAodGhpcy5zdHJpbmdBcnJheSgpKSB7XHJcbiAgICAgIHJldHVybiBpdGVtLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zZWFyY2hWYWx1ZT8udG9Mb3dlckNhc2UoKSB8fCAnJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXRlbVt0aGlzLmtleVRpdGxlIV0/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zZWFyY2hWYWx1ZT8udG9Mb3dlckNhc2UoKSB8fCAnJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByb3BhZ2F0ZUNoYW5nZShfdmFsdWU6IGFueSk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZWxlY3RTaW5nbGVJdGVtKGl0ZW06IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJykge1xyXG4gICAgICBpZiAoIXRoaXMuY2hlY2tlZEl0ZW0pIHtcclxuICAgICAgICB0aGlzLmNoZWNrZWRJdGVtID0gaXRlbTtcclxuICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSBpdGVtO1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSBpdGVtO1xyXG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY2hlY2tlZEl0ZW0gPSBudWxsO1xyXG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLnZhbHVlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHVuZGVmaW5lZCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICghIXRoaXMua2V5VmFsdWUgJiYgKCF0aGlzLmNoZWNrZWRJdGVtIHx8IGl0ZW1bdGhpcy5rZXlWYWx1ZV0gIT09IHRoaXMuY2hlY2tlZEl0ZW0/Llt0aGlzLmtleVZhbHVlXSkpIHtcclxuICAgICAgICB0aGlzLmNoZWNrZWRJdGVtID0gaXRlbTtcclxuICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSB0aGlzLmNoZWNrZWRJdGVtW3RoaXMua2V5VGl0bGUhXTtcclxuICAgICAgICB0aGlzLnZhbHVlID0gaXRlbVt0aGlzLmtleVZhbHVlXTtcclxuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICAgICAgfSBlbHNlIGlmICghdGhpcy5rZXlWYWx1ZSAmJiAoIXRoaXMuY2hlY2tlZEl0ZW0gfHwgSlNPTi5zdHJpbmdpZnkoaXRlbSkgIT09IEpTT04uc3RyaW5naWZ5KHRoaXMuY2hlY2tlZEl0ZW0pKSkge1xyXG4gICAgICAgIHRoaXMuY2hlY2tlZEl0ZW0gPSBpdGVtO1xyXG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHRoaXMuY2hlY2tlZEl0ZW1bdGhpcy5rZXlUaXRsZSFdO1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSBpdGVtO1xyXG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY2hlY2tlZEl0ZW0gPSBudWxsO1xyXG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLnZhbHVlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHVuZGVmaW5lZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuc2VhcmNoVmFsdWUgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLmlzU2hvd25MaXN0ID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNlbGVjdE11bHRpSXRlbShpdGVtOiBhbnkpIHtcclxuICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycpIHtcclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5jaGVja1NlbGVjdGVkKGl0ZW0pKSB7XHJcbiAgICAgICAgdGhpcy5jaGVja2VkSXRlbXMgPSB0aGlzLmNoZWNrZWRJdGVtcy5maWx0ZXIoZiA9PiBmW3RoaXMua2V5VmFsdWUhXSAhPT0gaXRlbVt0aGlzLmtleVZhbHVlIV0gfHwgZiAhPT0gaXRlbSlcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmNoZWNrZWRJdGVtcy5wdXNoKGl0ZW0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IHZhbHVlcyA9ICB0aGlzLmNoZWNrZWRJdGVtcy5tYXAobSA9PiBtW3RoaXMua2V5VmFsdWVdKVxyXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodmFsdWVzKTtcclxuICAgIGNvbnN0IHNlbGVjdEwgPSB0aGlzLmNoZWNrZWRJdGVtcy5sZW5ndGg7XHJcbiAgICBpZiAoc2VsZWN0TCkge1xyXG4gICAgICB0aGlzLmlucHV0VmFsdWUgPSBg0JLRi9Cx0YDQsNC90L4gKCR7c2VsZWN0TH0pYDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGVja1NlbGVjdGVkKGl0ZW06IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMubXVsdGkpIHtcclxuICAgICAgaWYgKHRoaXMua2V5VmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja2VkSXRlbXMuZmluZChmID0+IGZbdGhpcy5rZXlWYWx1ZSFdID09PSBpdGVtW3RoaXMua2V5VmFsdWUhXSB8fCBmID09PSBpdGVtKVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrZWRJdGVtcy5maW5kKGYgPT4gSlNPTi5zdHJpbmdpZnkoZikgPT09IEpTT04uc3RyaW5naWZ5KGl0ZW0pIHx8IGYgPT09IGl0ZW0pXHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLnN0cmluZ0FycmF5KCkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja2VkSXRlbSA9PT0gaXRlbVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLmtleVZhbHVlKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5jaGVja2VkSXRlbT8uW3RoaXMua2V5VmFsdWVdID09PSBpdGVtW3RoaXMua2V5VmFsdWVdIHx8IHRoaXMuY2hlY2tlZEl0ZW0gPT09IGl0ZW1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMuY2hlY2tlZEl0ZW0pID09PSBKU09OLnN0cmluZ2lmeShpdGVtKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJsaWItc2VsZWN0XCIgaWQ9XCJsaWItc2VsZWN0LXt7IHNlbGVjdElkIH19XCIgW3RpdGxlXT1cImxhYmVsXCI+XHJcbiAgPGxhYmVsIFtmb3JdPVwiaWRcIiBjbGFzcz1cImxpYi1zZWxlY3RfX3RpdGxlXCI+XHJcbiAgICB7eyBsYWJlbCB9fVxyXG4gICAgQGlmIChyZXF1aXJlZCkge1xyXG4gICAgICA8ZGQtbGliLXN2Zy1pY29uIGljb249XCJlcnJvcl9oaW50XCI+PC9kZC1saWItc3ZnLWljb24+XHJcbiAgICB9XHJcbiAgPC9sYWJlbD5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInBvcy1yZWxhdGl2ZVwiPlxyXG4gICAgPGlucHV0XHJcbiAgICAgICNzZWxlY3RcclxuICAgICAgKGNoYW5nZSk9XCJoYW5kbGVDaGFuZ2UoKVwiXHJcbiAgICAgIChjbGljayk9XCJub3RpZnlGb2N1c0V2ZW50KCRldmVudClcIlxyXG4gICAgICAoaW5wdXQpPVwiaGFuZGxlSW5wdXQoJGV2ZW50KVwiXHJcbiAgICAgIFsobmdNb2RlbCldPVwiaW5wdXRWYWx1ZVwiXHJcbiAgICAgIFthdHRyLmlkXT1cInNlbGVjdElkXCJcclxuICAgICAgW2F0dHIubmFtZV09XCJuYW1lXCJcclxuICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICBbYXR0ci50YWJJbmRleF09XCJ0YWJJbmRleFwiXHJcbiAgICAgIFthdHRyLnR5cGVdPVwiJ3RleHQnXCJcclxuICAgICAgW2NsYXNzLmZvY3VzZWRdPVwiZm9jdXNlZFwiXHJcbiAgICAgIFtjbGFzcy5pbnZhbGlkXT1cImludmFsaWRcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxyXG4gICAgICBbdGl0bGVdPVwiaW5wdXRWYWx1ZSB8fCAnJ1wiXHJcbiAgICAgIGNsYXNzPVwidGV4dC1zZWxlY3RcIiAvPlxyXG4gICAgPCEtLSAgICAoYmx1cik9XCJub3RpZnlGb2N1c0V2ZW50KCRldmVudClcIi0tPlxyXG4gICAgQGlmICghY2hlY2tlZEl0ZW0pIHtcclxuICAgICAgPGRkLWxpYi1zdmctaWNvblxyXG4gICAgICAgIChjbGljayk9XCJub3RpZnlGb2N1c0V2ZW50KCRldmVudClcIlxyXG4gICAgICAgIFtjbGFzcy5ibGFjay1zdmddPVwiaXNTaG93bkxpc3RcIlxyXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgW2NsYXNzLmdyYXktc3ZnXT1cIiFpc1Nob3duTGlzdFwiXHJcbiAgICAgICAgW2NsYXNzLnVwXT1cImlzU2hvd25MaXN0XCJcclxuICAgICAgICBpZD1cImNoZXZyb24te3sgc2VsZWN0SWQgfX1cIiBjbGFzcz1cImNoZXZyb25cIiBpY29uPVwiZG93bl9jaGV2cm9uXCI+PC9kZC1saWItc3ZnLWljb24+XHJcblxyXG4gICAgfSBAZWxzZSB7XHJcbiAgICAgIDxkZC1saWItc3ZnLWljb25cclxuICAgICAgICAoY2xpY2spPVwic2VsZWN0SXRlbShjaGVja2VkSXRlbSlcIlxyXG4gICAgICAgIGNsYXNzPVwiY2xlYXJcIlxyXG4gICAgICAgIGlkPVwiY2hldnJvbi17eyBzZWxlY3RJZCB9fVwiIGljb249XCJjbGVhclwiPjwvZGQtbGliLXN2Zy1pY29uPlxyXG5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuXHJcbiAgQGlmIChlcnJvclRleHQgJiYgaW52YWxpZCkge1xyXG4gIDxkaXYgY2xhc3M9XCJsaWItc2VsZWN0X19lcnJvclwiPnt7IGVycm9yVGV4dCB9fTwvZGl2PlxyXG4gIH0gQGlmIChpc1Nob3duTGlzdCkge1xyXG4gIDxkaXZcclxuICAgIChkZENsaWNrT3V0c2lkZSk9XCJub3RpZnlGb2N1c0V2ZW50KCRldmVudClcIlxyXG4gICAgW2VsZW1lbnRzXT1cIlsnbGliLXNlbGVjdC0nICsgc2VsZWN0SWQsICdjaGV2cm9uJyArIHNlbGVjdElkXVwiXHJcbiAgICBbY2xhc3MudG9wXT1cInNpZGUgPT09ICd0b3AnXCJcclxuICAgIGNsYXNzPVwic2VsZWN0LWxpc3Qtd3JhcHBlclwiPlxyXG4gICAgQGlmIChfZGF0YSgpPy5sZW5ndGgpIHtcclxuICAgICAgQGZvciAoaXRlbSBvZiBfZGF0YSgpIHwgZmlsdGVyQnlLZXk6IGZpbHRlckxpc3QuYmluZCh0aGlzKTsgdHJhY2sgaXRlbSkge1xyXG4gICAgPGRpdlxyXG4gICAgICAoY2xpY2spPVwic2VsZWN0SXRlbShpdGVtKVwiXHJcbiAgICAgIFtjbGFzcy5hY3RpdmVdPVwiY2hlY2tTZWxlY3RlZChpdGVtKVwiXHJcbiAgICAgIGNsYXNzPVwic2VsZWN0LWRhdGFcIj5cclxuICAgICAgQGlmIChzdHJpbmdBcnJheSgpKSB7XHJcbiAgICAgIDxkaXYgW2lubmVySFRNTF09XCJpdGVtIHwgaGlnaGxpZ2h0OiBpbnB1dFZhbHVlIHwgc2FmZTogJ2h0bWwnXCIgY2xhc3M9XCJzZWxlY3QtZGF0YV9fdGl0bGVcIj48L2Rpdj5cclxuICAgICAgfVxyXG4gICAgICBAaWYgKGtleVRpdGxlICYmICFzdHJpbmdBcnJheSgpKSB7XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBbaW5uZXJIVE1MXT1cIml0ZW1ba2V5VGl0bGUhXSB8IGhpZ2hsaWdodDogaW5wdXRWYWx1ZSB8IHNhZmU6ICdodG1sJ1wiXHJcbiAgICAgICAgY2xhc3M9XCJzZWxlY3QtZGF0YV9fdGl0bGVcIj48L2Rpdj5cclxuICAgICAgfVxyXG4gICAgICBAaWYgKGtleURlc2MgJiYgIXN0cmluZ0FycmF5KCkpIHtcclxuICAgICAgPGRpdlxyXG4gICAgICAgIFtpbm5lckhUTUxdPVwiaXRlbVtrZXlEZXNjIV0gfCBoaWdobGlnaHQ6IGlucHV0VmFsdWUgfCBzYWZlOiAnaHRtbCdcIlxyXG4gICAgICAgIFt0aXRsZV09XCJpdGVtW2tleURlc2NdXCJcclxuICAgICAgICBjbGFzcz1cInNlbGVjdC1kYXRhX19kZXNjXCI+PC9kaXY+XHJcbiAgICAgIH0gQGlmIChjaGVja1NlbGVjdGVkKGl0ZW0pKSB7XHJcbiAgICAgIDxkZC1saWItc3ZnLWljb25cclxuICAgICAgICAoY2xpY2spPVwic2VsZWN0SXRlbShjaGVja2VkSXRlbSlcIlxyXG4gICAgICAgIGNsYXNzPVwiY2hlY2tlZFwiXHJcbiAgICAgICAgaWQ9XCJjaGV2cm9uLXt7IHNlbGVjdElkIH19XCIgaWNvbj1cImNoZWNrX2dyZWVuXCI+PC9kZC1saWItc3ZnLWljb24+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gICAgfSB9IEBlbHNlIHtcclxuICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QtbG9hZGVyXCI+XHJcbiAgICAgIDxkZC1saWItbG9hZGVyPjwvZGQtbGliLWxvYWRlcj5cclxuICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG4gIH1cclxuPC9kaXY+XHJcbiJdfQ==
@@ -31,14 +31,14 @@ export class LibSortComponent {
31
31
  }
32
32
  }
33
33
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: LibSortComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
34
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.2", type: LibSortComponent, isStandalone: true, selector: "dd-lib-sort", inputs: { sortItems: "sortItems" }, outputs: { sortEvent: "sortEvent" }, ngImport: i0, template: "<div class=\"sort pos-relative\" id=\"js-sort-wrapper\">\r\n <div (click)=\"showSortList()\" class=\"d-flex align-center cup\">\r\n <div class=\"sort__txt g-text green mr-12 m-mr-8\">\u0421\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0430</div>\r\n <dd-lib-svg-icon icon=\"sort\"></dd-lib-svg-icon>\r\n </div>\r\n @if (showSort) {\r\n <div class=\"g-overlay show-tablet\" (click)=\"showSort = false\"></div>\r\n <div (ddClickOutside)=\"showSort = false\" [elements]=\"['js-sort-wrapper']\" class=\"sort__container\">\r\n <dd-lib-card type=\"small\">\r\n <div class=\"sort__title show-tablet\">\u0421\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0430</div>\r\n <div class=\"sort__close show-tablet\" (click)=\"showSort = false\">\r\n <dd-lib-svg-icon icon=\"close\"></dd-lib-svg-icon>\r\n </div>\r\n <div class=\"sort__list\">\r\n @for (item of sortItems; track item) {\r\n <div (click)=\"onSort(item.value)\" [class.green]=\"sort === item.value\" class=\"sort__item g-text green-hover mb-12\">\r\n {{ item.name }}\r\n </div>\r\n }\r\n </div>\r\n </dd-lib-card>\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:block}.sort__container{position:absolute;top:36px;z-index:301;background-color:var(--main-card-color)}@media screen and (max-width: 840px){.sort__container{position:fixed;top:auto;bottom:0;left:0;width:100%;border-radius:24px 24px 0 0}}@media screen and (max-width: 480px){.sort__container{border-radius:16px 16px 0 0}}@media screen and (max-width: 840px){.sort__title{margin-bottom:8px;font-size:18px;line-height:28px;font-weight:500}}@media screen and (max-width: 840px){.sort__close{position:absolute;top:24px;right:24px;width:32px;height:32px;padding:6px;border-radius:10px;background-color:var(--gray-color-200)}}@media screen and (max-width: 840px){.sort__close{top:16px;right:16px}}.sort__close ::ng-deep svg path{stroke:var(--second-gray-color)}.sort__item{cursor:pointer}@media screen and (max-width: 840px){.sort__item{padding-top:16px}}@media screen and (max-width: 840px){.sort__item:not(:first-child){border-top:1px solid var(--gray-color-200)}}\n"], dependencies: [{ kind: "directive", type: ClickOutsideDirective, selector: "[ddClickOutside]", inputs: ["elements"], outputs: ["ddClickOutside"] }, { kind: "component", type: LibCardComponent, selector: "dd-lib-card", inputs: ["type", "footerBtn", "sHeight", "skeleton", "parentLvlForSkeleton", "plugs", "borderRadius"], outputs: ["cardBtnEvent"] }, { kind: "component", type: LibSvgIconComponent, selector: "dd-lib-svg-icon", inputs: ["width", "height", "color", "icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
34
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.2", type: LibSortComponent, isStandalone: true, selector: "dd-lib-sort", inputs: { sortItems: "sortItems" }, outputs: { sortEvent: "sortEvent" }, ngImport: i0, template: "<div class=\"sort pos-relative\" id=\"js-sort-wrapper\">\r\n <div (click)=\"showSortList()\" class=\"d-flex align-center cup\">\r\n <div class=\"sort__txt g-text green mr-12 m-mr-8\">\u0421\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0430</div>\r\n <dd-lib-svg-icon icon=\"sort\"></dd-lib-svg-icon>\r\n </div>\r\n @if (showSort) {\r\n <div class=\"g-overlay show-tablet\" (click)=\"showSort = false\"></div>\r\n <div (ddClickOutside)=\"showSort = false\" [elements]=\"['js-sort-wrapper']\" class=\"sort__container\">\r\n <dd-lib-card type=\"small\">\r\n <div class=\"g-h5-title mb-8 show-tablet\">\u0421\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0430</div>\r\n <div class=\"sort__close show-tablet\" (click)=\"showSort = false\">\r\n <dd-lib-svg-icon icon=\"close\"></dd-lib-svg-icon>\r\n </div>\r\n <div class=\"sort__list\">\r\n @for (item of sortItems; track item) {\r\n <div (click)=\"onSort(item.value)\"\r\n [class.green]=\"sort === item.value\"\r\n class=\"sort__item g-text green-hover mb-12 t-pt-16 cup\">\r\n {{ item.name }}\r\n </div>\r\n }\r\n </div>\r\n </dd-lib-card>\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:block}.sort__container{position:absolute;top:36px;right:0;z-index:1001;min-width:200px;background-color:var(--main-card-color)}@media screen and (max-width: 840px){.sort__container{position:fixed;top:auto;bottom:0;width:100%;border-radius:24px 24px 0 0}}@media screen and (max-width: 480px){.sort__container{border-radius:16px 16px 0 0}}@media screen and (max-width: 840px){.sort__close{position:absolute;top:24px;right:24px;width:32px;height:32px;padding:6px;border-radius:10px;background-color:var(--gray-color-200)}}@media screen and (max-width: 480px){.sort__close{top:16px;right:16px}}.sort__close ::ng-deep svg path{stroke:var(--second-gray-color)}@media screen and (max-width: 840px){.sort__item:not(:first-child){border-top:1px solid var(--gray-color-200)}}\n"], dependencies: [{ kind: "directive", type: ClickOutsideDirective, selector: "[ddClickOutside]", inputs: ["elements"], outputs: ["ddClickOutside"] }, { kind: "component", type: LibCardComponent, selector: "dd-lib-card", inputs: ["type", "footerBtn", "sHeight", "skeleton", "parentLvlForSkeleton", "plugs", "borderRadius"], outputs: ["cardBtnEvent"] }, { kind: "component", type: LibSvgIconComponent, selector: "dd-lib-svg-icon", inputs: ["width", "height", "color", "icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
35
35
  }
36
36
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: LibSortComponent, decorators: [{
37
37
  type: Component,
38
- args: [{ selector: 'dd-lib-sort', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [ClickOutsideDirective, LibCardComponent, NgOptimizedImage, LibSvgIconComponent], template: "<div class=\"sort pos-relative\" id=\"js-sort-wrapper\">\r\n <div (click)=\"showSortList()\" class=\"d-flex align-center cup\">\r\n <div class=\"sort__txt g-text green mr-12 m-mr-8\">\u0421\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0430</div>\r\n <dd-lib-svg-icon icon=\"sort\"></dd-lib-svg-icon>\r\n </div>\r\n @if (showSort) {\r\n <div class=\"g-overlay show-tablet\" (click)=\"showSort = false\"></div>\r\n <div (ddClickOutside)=\"showSort = false\" [elements]=\"['js-sort-wrapper']\" class=\"sort__container\">\r\n <dd-lib-card type=\"small\">\r\n <div class=\"sort__title show-tablet\">\u0421\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0430</div>\r\n <div class=\"sort__close show-tablet\" (click)=\"showSort = false\">\r\n <dd-lib-svg-icon icon=\"close\"></dd-lib-svg-icon>\r\n </div>\r\n <div class=\"sort__list\">\r\n @for (item of sortItems; track item) {\r\n <div (click)=\"onSort(item.value)\" [class.green]=\"sort === item.value\" class=\"sort__item g-text green-hover mb-12\">\r\n {{ item.name }}\r\n </div>\r\n }\r\n </div>\r\n </dd-lib-card>\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:block}.sort__container{position:absolute;top:36px;z-index:301;background-color:var(--main-card-color)}@media screen and (max-width: 840px){.sort__container{position:fixed;top:auto;bottom:0;left:0;width:100%;border-radius:24px 24px 0 0}}@media screen and (max-width: 480px){.sort__container{border-radius:16px 16px 0 0}}@media screen and (max-width: 840px){.sort__title{margin-bottom:8px;font-size:18px;line-height:28px;font-weight:500}}@media screen and (max-width: 840px){.sort__close{position:absolute;top:24px;right:24px;width:32px;height:32px;padding:6px;border-radius:10px;background-color:var(--gray-color-200)}}@media screen and (max-width: 840px){.sort__close{top:16px;right:16px}}.sort__close ::ng-deep svg path{stroke:var(--second-gray-color)}.sort__item{cursor:pointer}@media screen and (max-width: 840px){.sort__item{padding-top:16px}}@media screen and (max-width: 840px){.sort__item:not(:first-child){border-top:1px solid var(--gray-color-200)}}\n"] }]
38
+ args: [{ selector: 'dd-lib-sort', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [ClickOutsideDirective, LibCardComponent, NgOptimizedImage, LibSvgIconComponent], template: "<div class=\"sort pos-relative\" id=\"js-sort-wrapper\">\r\n <div (click)=\"showSortList()\" class=\"d-flex align-center cup\">\r\n <div class=\"sort__txt g-text green mr-12 m-mr-8\">\u0421\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0430</div>\r\n <dd-lib-svg-icon icon=\"sort\"></dd-lib-svg-icon>\r\n </div>\r\n @if (showSort) {\r\n <div class=\"g-overlay show-tablet\" (click)=\"showSort = false\"></div>\r\n <div (ddClickOutside)=\"showSort = false\" [elements]=\"['js-sort-wrapper']\" class=\"sort__container\">\r\n <dd-lib-card type=\"small\">\r\n <div class=\"g-h5-title mb-8 show-tablet\">\u0421\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0430</div>\r\n <div class=\"sort__close show-tablet\" (click)=\"showSort = false\">\r\n <dd-lib-svg-icon icon=\"close\"></dd-lib-svg-icon>\r\n </div>\r\n <div class=\"sort__list\">\r\n @for (item of sortItems; track item) {\r\n <div (click)=\"onSort(item.value)\"\r\n [class.green]=\"sort === item.value\"\r\n class=\"sort__item g-text green-hover mb-12 t-pt-16 cup\">\r\n {{ item.name }}\r\n </div>\r\n }\r\n </div>\r\n </dd-lib-card>\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:block}.sort__container{position:absolute;top:36px;right:0;z-index:1001;min-width:200px;background-color:var(--main-card-color)}@media screen and (max-width: 840px){.sort__container{position:fixed;top:auto;bottom:0;width:100%;border-radius:24px 24px 0 0}}@media screen and (max-width: 480px){.sort__container{border-radius:16px 16px 0 0}}@media screen and (max-width: 840px){.sort__close{position:absolute;top:24px;right:24px;width:32px;height:32px;padding:6px;border-radius:10px;background-color:var(--gray-color-200)}}@media screen and (max-width: 480px){.sort__close{top:16px;right:16px}}.sort__close ::ng-deep svg path{stroke:var(--second-gray-color)}@media screen and (max-width: 840px){.sort__item:not(:first-child){border-top:1px solid var(--gray-color-200)}}\n"] }]
39
39
  }], propDecorators: { sortItems: [{
40
40
  type: Input
41
41
  }], sortEvent: [{
42
42
  type: Output
43
43
  }] } });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLXNvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGQtbGliL3NyYy9saWIvbGliLXNvcnQvbGliLXNvcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGQtbGliL3NyYy9saWIvbGliLXNvcnQvbGliLXNvcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFDOUMsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7O0FBUTNFLE1BQU0sV0FBVyxHQUFHO0lBQ2xCLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRTtJQUN2RCxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtDQUN2QyxDQUFDO0FBVUYsTUFBTSxPQUFPLGdCQUFnQjtJQVI3QjtRQVNrQixjQUFTLEdBQVksV0FBVyxDQUFDO1FBQ2hDLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0tBd0J6RDtJQW5CUSxRQUFRO1FBQ2IsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDO1FBQ3RGLENBQUM7SUFDSCxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQWE7UUFDekIsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLENBQUM7SUFDSCxDQUFDO0lBRU0sWUFBWTtRQUNqQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDakMsQ0FBQztJQUNILENBQUM7OEdBekJVLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLGdKQ3pCN0Isc3FDQXdCQSx3Z0NERFkscUJBQXFCLGdIQUFFLGdCQUFnQiwwTEFBb0IsbUJBQW1COzsyRkFFN0UsZ0JBQWdCO2tCQVI1QixTQUFTOytCQUNFLGFBQWEsY0FDWCxJQUFJLG1CQUdDLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsQ0FBQzs4QkFHekUsU0FBUztzQkFBeEIsS0FBSztnQkFDVyxTQUFTO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7TGliQ2FyZENvbXBvbmVudH0gZnJvbSAnLi4vbGliLWNhcmQvbGliLWNhcmQuY29tcG9uZW50JztcclxuaW1wb3J0IHtOZ09wdGltaXplZEltYWdlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge0NsaWNrT3V0c2lkZURpcmVjdGl2ZX0gZnJvbSBcIi4uL2NvcmVcIjtcclxuaW1wb3J0IHtMaWJTdmdJY29uQ29tcG9uZW50fSBmcm9tIFwiLi4vbGliLXN2Zy1pY29uL2xpYi1zdmctaWNvbi5jb21wb25lbnRcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVNvcnQge1xyXG4gIHZhbHVlOiBzdHJpbmc7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGRlZmF1bHQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5jb25zdCBEZWZhdWx0U29ydCA9IFtcclxuICB7IG5hbWU6ICfQn9C+INCy0L7Qt9GA0LDRgdGC0LDQvdC40Y4nLCB2YWx1ZTogJ2FzYycsIGRlZmF1bHQ6IHRydWUgfSxcclxuICB7IG5hbWU6ICfQn9C+INGD0LHRi9Cy0LDQvdC40Y4nLCB2YWx1ZTogJ2Rlc2MnIH0sXHJcbl07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2RkLWxpYi1zb3J0JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9saWItc29ydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbGliLXNvcnQuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBpbXBvcnRzOiBbQ2xpY2tPdXRzaWRlRGlyZWN0aXZlLCBMaWJDYXJkQ29tcG9uZW50LCBOZ09wdGltaXplZEltYWdlLCBMaWJTdmdJY29uQ29tcG9uZW50XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIExpYlNvcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzb3J0SXRlbXM6IElTb3J0W10gPSBEZWZhdWx0U29ydDtcclxuICBAT3V0cHV0KCkgcHVibGljIHNvcnRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBwdWJsaWMgc29ydDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIHB1YmxpYyBzaG93U29ydDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc29ydEl0ZW1zPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5zb3J0ID0gdGhpcy5zb3J0SXRlbXM/LmZpbmQoZiA9PiBmLmRlZmF1bHQpPy52YWx1ZSB8fCB0aGlzLnNvcnRJdGVtc1swXT8udmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25Tb3J0KGZpZWxkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmIChmaWVsZCAhPT0gdGhpcy5zb3J0KSB7XHJcbiAgICAgIHRoaXMuc29ydCA9IGZpZWxkO1xyXG4gICAgICB0aGlzLnNvcnRFdmVudC5lbWl0KGZpZWxkKTtcclxuICAgICAgdGhpcy5zaG93U29ydCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3dTb3J0TGlzdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNvcnRJdGVtcz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuc2hvd1NvcnQgPSAhdGhpcy5zaG93U29ydDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInNvcnQgcG9zLXJlbGF0aXZlXCIgaWQ9XCJqcy1zb3J0LXdyYXBwZXJcIj5cclxuICA8ZGl2IChjbGljayk9XCJzaG93U29ydExpc3QoKVwiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWNlbnRlciBjdXBcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzb3J0X190eHQgZy10ZXh0IGdyZWVuIG1yLTEyIG0tbXItOFwiPtCh0L7RgNGC0LjRgNC+0LLQutCwPC9kaXY+XHJcbiAgICA8ZGQtbGliLXN2Zy1pY29uIGljb249XCJzb3J0XCI+PC9kZC1saWItc3ZnLWljb24+XHJcbiAgPC9kaXY+XHJcbiAgQGlmIChzaG93U29ydCkge1xyXG4gIDxkaXYgY2xhc3M9XCJnLW92ZXJsYXkgc2hvdy10YWJsZXRcIiAoY2xpY2spPVwic2hvd1NvcnQgPSBmYWxzZVwiPjwvZGl2PlxyXG4gIDxkaXYgKGRkQ2xpY2tPdXRzaWRlKT1cInNob3dTb3J0ID0gZmFsc2VcIiBbZWxlbWVudHNdPVwiWydqcy1zb3J0LXdyYXBwZXInXVwiIGNsYXNzPVwic29ydF9fY29udGFpbmVyXCI+XHJcbiAgICA8ZGQtbGliLWNhcmQgdHlwZT1cInNtYWxsXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzb3J0X190aXRsZSBzaG93LXRhYmxldFwiPtCh0L7RgNGC0LjRgNC+0LLQutCwPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzb3J0X19jbG9zZSBzaG93LXRhYmxldFwiIChjbGljayk9XCJzaG93U29ydCA9IGZhbHNlXCI+XHJcbiAgICAgICAgPGRkLWxpYi1zdmctaWNvbiBpY29uPVwiY2xvc2VcIj48L2RkLWxpYi1zdmctaWNvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzb3J0X19saXN0XCI+XHJcbiAgICAgICAgQGZvciAoaXRlbSBvZiBzb3J0SXRlbXM7IHRyYWNrIGl0ZW0pIHtcclxuICAgICAgICA8ZGl2IChjbGljayk9XCJvblNvcnQoaXRlbS52YWx1ZSlcIiBbY2xhc3MuZ3JlZW5dPVwic29ydCA9PT0gaXRlbS52YWx1ZVwiIGNsYXNzPVwic29ydF9faXRlbSBnLXRleHQgZ3JlZW4taG92ZXIgbWItMTJcIj5cclxuICAgICAgICAgIHt7IGl0ZW0ubmFtZSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2RkLWxpYi1jYXJkPlxyXG4gIDwvZGl2PlxyXG4gIH1cclxuPC9kaXY+XHJcbiJdfQ==
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLXNvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGQtbGliL3NyYy9saWIvbGliLXNvcnQvbGliLXNvcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGQtbGliL3NyYy9saWIvbGliLXNvcnQvbGliLXNvcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFDOUMsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7O0FBUTNFLE1BQU0sV0FBVyxHQUFHO0lBQ2xCLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRTtJQUN2RCxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtDQUN2QyxDQUFDO0FBVUYsTUFBTSxPQUFPLGdCQUFnQjtJQVI3QjtRQVNrQixjQUFTLEdBQVksV0FBVyxDQUFDO1FBQ2hDLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0tBd0J6RDtJQW5CUSxRQUFRO1FBQ2IsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDO1FBQ3RGLENBQUM7SUFDSCxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQWE7UUFDekIsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLENBQUM7SUFDSCxDQUFDO0lBRU0sWUFBWTtRQUNqQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDakMsQ0FBQztJQUNILENBQUM7OEdBekJVLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLGdKQ3pCN0Isc3RDQTBCQSx1MEJESFkscUJBQXFCLGdIQUFFLGdCQUFnQiwwTEFBb0IsbUJBQW1COzsyRkFFN0UsZ0JBQWdCO2tCQVI1QixTQUFTOytCQUNFLGFBQWEsY0FDWCxJQUFJLG1CQUdDLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsQ0FBQzs4QkFHekUsU0FBUztzQkFBeEIsS0FBSztnQkFDVyxTQUFTO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7TGliQ2FyZENvbXBvbmVudH0gZnJvbSAnLi4vbGliLWNhcmQvbGliLWNhcmQuY29tcG9uZW50JztcclxuaW1wb3J0IHtOZ09wdGltaXplZEltYWdlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge0NsaWNrT3V0c2lkZURpcmVjdGl2ZX0gZnJvbSBcIi4uL2NvcmVcIjtcclxuaW1wb3J0IHtMaWJTdmdJY29uQ29tcG9uZW50fSBmcm9tIFwiLi4vbGliLXN2Zy1pY29uL2xpYi1zdmctaWNvbi5jb21wb25lbnRcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVNvcnQge1xyXG4gIHZhbHVlOiBzdHJpbmc7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGRlZmF1bHQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5jb25zdCBEZWZhdWx0U29ydCA9IFtcclxuICB7IG5hbWU6ICfQn9C+INCy0L7Qt9GA0LDRgdGC0LDQvdC40Y4nLCB2YWx1ZTogJ2FzYycsIGRlZmF1bHQ6IHRydWUgfSxcclxuICB7IG5hbWU6ICfQn9C+INGD0LHRi9Cy0LDQvdC40Y4nLCB2YWx1ZTogJ2Rlc2MnIH0sXHJcbl07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2RkLWxpYi1zb3J0JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9saWItc29ydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbGliLXNvcnQuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBpbXBvcnRzOiBbQ2xpY2tPdXRzaWRlRGlyZWN0aXZlLCBMaWJDYXJkQ29tcG9uZW50LCBOZ09wdGltaXplZEltYWdlLCBMaWJTdmdJY29uQ29tcG9uZW50XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIExpYlNvcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzb3J0SXRlbXM6IElTb3J0W10gPSBEZWZhdWx0U29ydDtcclxuICBAT3V0cHV0KCkgcHVibGljIHNvcnRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBwdWJsaWMgc29ydDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIHB1YmxpYyBzaG93U29ydDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc29ydEl0ZW1zPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5zb3J0ID0gdGhpcy5zb3J0SXRlbXM/LmZpbmQoZiA9PiBmLmRlZmF1bHQpPy52YWx1ZSB8fCB0aGlzLnNvcnRJdGVtc1swXT8udmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25Tb3J0KGZpZWxkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmIChmaWVsZCAhPT0gdGhpcy5zb3J0KSB7XHJcbiAgICAgIHRoaXMuc29ydCA9IGZpZWxkO1xyXG4gICAgICB0aGlzLnNvcnRFdmVudC5lbWl0KGZpZWxkKTtcclxuICAgICAgdGhpcy5zaG93U29ydCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3dTb3J0TGlzdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNvcnRJdGVtcz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuc2hvd1NvcnQgPSAhdGhpcy5zaG93U29ydDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInNvcnQgcG9zLXJlbGF0aXZlXCIgaWQ9XCJqcy1zb3J0LXdyYXBwZXJcIj5cclxuICA8ZGl2IChjbGljayk9XCJzaG93U29ydExpc3QoKVwiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWNlbnRlciBjdXBcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzb3J0X190eHQgZy10ZXh0IGdyZWVuIG1yLTEyIG0tbXItOFwiPtCh0L7RgNGC0LjRgNC+0LLQutCwPC9kaXY+XHJcbiAgICA8ZGQtbGliLXN2Zy1pY29uIGljb249XCJzb3J0XCI+PC9kZC1saWItc3ZnLWljb24+XHJcbiAgPC9kaXY+XHJcbiAgQGlmIChzaG93U29ydCkge1xyXG4gIDxkaXYgY2xhc3M9XCJnLW92ZXJsYXkgc2hvdy10YWJsZXRcIiAoY2xpY2spPVwic2hvd1NvcnQgPSBmYWxzZVwiPjwvZGl2PlxyXG4gIDxkaXYgKGRkQ2xpY2tPdXRzaWRlKT1cInNob3dTb3J0ID0gZmFsc2VcIiBbZWxlbWVudHNdPVwiWydqcy1zb3J0LXdyYXBwZXInXVwiIGNsYXNzPVwic29ydF9fY29udGFpbmVyXCI+XHJcbiAgICA8ZGQtbGliLWNhcmQgdHlwZT1cInNtYWxsXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJnLWg1LXRpdGxlIG1iLTggc2hvdy10YWJsZXRcIj7QodC+0YDRgtC40YDQvtCy0LrQsDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic29ydF9fY2xvc2Ugc2hvdy10YWJsZXRcIiAoY2xpY2spPVwic2hvd1NvcnQgPSBmYWxzZVwiPlxyXG4gICAgICAgIDxkZC1saWItc3ZnLWljb24gaWNvbj1cImNsb3NlXCI+PC9kZC1saWItc3ZnLWljb24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic29ydF9fbGlzdFwiPlxyXG4gICAgICAgIEBmb3IgKGl0ZW0gb2Ygc29ydEl0ZW1zOyB0cmFjayBpdGVtKSB7XHJcbiAgICAgICAgPGRpdiAoY2xpY2spPVwib25Tb3J0KGl0ZW0udmFsdWUpXCJcclxuICAgICAgICAgICAgIFtjbGFzcy5ncmVlbl09XCJzb3J0ID09PSBpdGVtLnZhbHVlXCJcclxuICAgICAgICAgICAgIGNsYXNzPVwic29ydF9faXRlbSBnLXRleHQgZ3JlZW4taG92ZXIgbWItMTIgdC1wdC0xNiBjdXBcIj5cclxuICAgICAgICAgIHt7IGl0ZW0ubmFtZSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2RkLWxpYi1jYXJkPlxyXG4gIDwvZGl2PlxyXG4gIH1cclxuPC9kaXY+XHJcbiJdfQ==
@@ -35,14 +35,16 @@ export class LibTabsFragmentComponent {
35
35
  checkActiveTab(tab) {
36
36
  if (tab) {
37
37
  this.activeFragment = tab.id;
38
- if (this.rout) {
38
+ if (this.rout && !this.noFragment) {
39
39
  this.router.navigate([this.rout], { fragment: tab.fragment });
40
40
  }
41
41
  this.setActiveTab.emit(this.activeFragment);
42
42
  }
43
43
  else {
44
44
  this.activeFragment = undefined;
45
- this.router.navigate([this.rout], { fragment: undefined });
45
+ if (!this.noFragment) {
46
+ this.router.navigate([this.rout], { fragment: undefined });
47
+ }
46
48
  }
47
49
  this.cdr.detectChanges();
48
50
  }
@@ -60,11 +62,11 @@ export class LibTabsFragmentComponent {
60
62
  }
61
63
  }
62
64
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: LibTabsFragmentComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
63
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.2", type: LibTabsFragmentComponent, isStandalone: true, selector: "dd-lib-tabs-fragment", inputs: { rout: "rout", tabs: "tabs", tabsFragment: "tabsFragment", needInitEvent: "needInitEvent" }, outputs: { setActiveTab: "setActiveTab" }, ngImport: i0, template: "@if (tabs?.length) {\r\n<div class=\"tabs-fragment\">\r\n <swiper-container speed=\"500\" slides-per-view=\"auto\">\r\n @for (tab of tabs; track tab) {\r\n <swiper-slide>\r\n <div class=\"tabs-fragment__item\"\r\n [class.active]=\"tab.id === activeFragment\"\r\n (click)=\"checkActiveTab(tab)\">\r\n {{ tab.title }}\r\n </div>\r\n </swiper-slide>\r\n }\r\n </swiper-container>\r\n</div>\r\n}\r\n", styles: [".tabs-fragment{border-bottom:1px solid var(--disabled-bgc);display:inline-block}.tabs-fragment__item{display:inline-block;padding:0 8px 16px;font-size:16px;line-height:24px;color:var(--menu-item-color);border-bottom:2px solid transparent;cursor:pointer}.tabs-fragment__item:hover,.tabs-fragment__item.active{color:var(--primary-green-color)}.tabs-fragment__item.active{border-color:var(--primary-green-color);cursor:default}.tabs-fragment swiper-slide{width:auto}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
65
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.2", type: LibTabsFragmentComponent, isStandalone: true, selector: "dd-lib-tabs-fragment", inputs: { rout: "rout", tabs: "tabs", tabsFragment: "tabsFragment", needInitEvent: "needInitEvent", noFragment: "noFragment" }, outputs: { setActiveTab: "setActiveTab" }, ngImport: i0, template: "@if (tabs?.length) {\r\n<div class=\"tabs-fragment\">\r\n <swiper-container speed=\"500\" slides-per-view=\"auto\">\r\n @for (tab of tabs; track tab) {\r\n <swiper-slide>\r\n <div class=\"tabs-fragment__item\"\r\n [class.active]=\"tab.id === activeFragment\"\r\n (click)=\"checkActiveTab(tab)\">\r\n {{ tab.title }}\r\n </div>\r\n </swiper-slide>\r\n }\r\n </swiper-container>\r\n</div>\r\n}\r\n", styles: [".tabs-fragment__item{display:inline-block;padding:0 8px 16px;font-size:16px;line-height:24px;color:var(--menu-item-color);border-bottom:1px solid var(--disabled-bgc);cursor:pointer}.tabs-fragment__item:hover,.tabs-fragment__item.active{color:var(--primary-green-color)}.tabs-fragment__item.active{padding-bottom:15px;border-width:2px;border-color:var(--primary-green-color);cursor:default}.tabs-fragment swiper-slide{width:auto}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
64
66
  }
65
67
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: LibTabsFragmentComponent, decorators: [{
66
68
  type: Component,
67
- args: [{ selector: 'dd-lib-tabs-fragment', standalone: true, imports: [], changeDetection: ChangeDetectionStrategy.OnPush, schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "@if (tabs?.length) {\r\n<div class=\"tabs-fragment\">\r\n <swiper-container speed=\"500\" slides-per-view=\"auto\">\r\n @for (tab of tabs; track tab) {\r\n <swiper-slide>\r\n <div class=\"tabs-fragment__item\"\r\n [class.active]=\"tab.id === activeFragment\"\r\n (click)=\"checkActiveTab(tab)\">\r\n {{ tab.title }}\r\n </div>\r\n </swiper-slide>\r\n }\r\n </swiper-container>\r\n</div>\r\n}\r\n", styles: [".tabs-fragment{border-bottom:1px solid var(--disabled-bgc);display:inline-block}.tabs-fragment__item{display:inline-block;padding:0 8px 16px;font-size:16px;line-height:24px;color:var(--menu-item-color);border-bottom:2px solid transparent;cursor:pointer}.tabs-fragment__item:hover,.tabs-fragment__item.active{color:var(--primary-green-color)}.tabs-fragment__item.active{border-color:var(--primary-green-color);cursor:default}.tabs-fragment swiper-slide{width:auto}\n"] }]
69
+ args: [{ selector: 'dd-lib-tabs-fragment', standalone: true, imports: [], changeDetection: ChangeDetectionStrategy.OnPush, schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "@if (tabs?.length) {\r\n<div class=\"tabs-fragment\">\r\n <swiper-container speed=\"500\" slides-per-view=\"auto\">\r\n @for (tab of tabs; track tab) {\r\n <swiper-slide>\r\n <div class=\"tabs-fragment__item\"\r\n [class.active]=\"tab.id === activeFragment\"\r\n (click)=\"checkActiveTab(tab)\">\r\n {{ tab.title }}\r\n </div>\r\n </swiper-slide>\r\n }\r\n </swiper-container>\r\n</div>\r\n}\r\n", styles: [".tabs-fragment__item{display:inline-block;padding:0 8px 16px;font-size:16px;line-height:24px;color:var(--menu-item-color);border-bottom:1px solid var(--disabled-bgc);cursor:pointer}.tabs-fragment__item:hover,.tabs-fragment__item.active{color:var(--primary-green-color)}.tabs-fragment__item.active{padding-bottom:15px;border-width:2px;border-color:var(--primary-green-color);cursor:default}.tabs-fragment swiper-slide{width:auto}\n"] }]
68
70
  }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i0.ChangeDetectorRef }], propDecorators: { rout: [{
69
71
  type: Input
70
72
  }], tabs: [{
@@ -73,7 +75,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
73
75
  type: Input
74
76
  }], needInitEvent: [{
75
77
  type: Input
78
+ }], noFragment: [{
79
+ type: Input
76
80
  }], setActiveTab: [{
77
81
  type: Output
78
82
  }] } });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLXRhYnMtZnJhZ21lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGQtbGliL3NyYy9saWIvbGliLXRhYnMtZnJhZ21lbnQvbGliLXRhYnMtZnJhZ21lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGQtbGliL3NyYy9saWIvbGliLXRhYnMtZnJhZ21lbnQvbGliLXRhYnMtZnJhZ21lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1Qsc0JBQXNCLEVBQ3RCLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDOzs7QUFHdkIsTUFBTSxPQUFPLElBQUk7SUFRZixZQUFZLElBQVM7UUFDbkIsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUMzQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzdCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNwQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN2QixJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNSLDZEQUE2RDtnQkFDN0QsYUFBYTtnQkFDYixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBV0QsTUFBTSxPQUFPLHdCQUF3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clxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5leHBvcnQgY2xhc3MgSVRhYiB7XHJcbiAgcHVibGljIHRpdGxlOiBzdHJpbmc7XHJcbiAgcHVibGljIGlkOiBudWxsIHwgbnVtYmVyO1xyXG4gIHB1YmxpYyBmcmFnbWVudDogc3RyaW5nO1xyXG4gIHB1YmxpYyBuYW1lPzogc3RyaW5nO1xyXG4gIHB1YmxpYyB3ZWxjb21lVGV4dD86IHN0cmluZztcclxuICBwdWJsaWMgdHlwZT86IDEgfCAyO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihib2R5OiBhbnkpIHtcclxuICAgIHRoaXMuaWQgPSBib2R5LmlkO1xyXG4gICAgdGhpcy50aXRsZSA9IGJvZHkubmFtZVBhZ2U7XHJcbiAgICB0aGlzLm5hbWUgPSBib2R5Lm5hbWU7XHJcbiAgICB0aGlzLmZyYWdtZW50ID0gYm9keS5hZGRyZXNzO1xyXG4gICAgdGhpcy53ZWxjb21lVGV4dCA9IGJvZHkud2VsY29tZVRleHQ7XHJcbiAgICB0aGlzLnR5cGUgPSBib2R5LnR5cGU7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBib2R5KSB7XHJcbiAgICAgIGlmIChrZXkpIHtcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIHRoaXNba2V5XSA9IGJvZHlba2V5XTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkZC1saWItdGFicy1mcmFnbWVudCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vbGliLXRhYnMtZnJhZ21lbnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9saWItdGFicy1mcmFnbWVudC5jb21wb25lbnQuc2NzcycsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGliVGFic0ZyYWdtZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBwdWJsaWMgcm91dCA9IGxvY2F0aW9uLnBhdGhuYW1lO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB0YWJzOiBJVGFiW10gfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgcHVibGljIHRhYnNGcmFnbWVudDogc3RyaW5nW10gfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgcHVibGljIG5lZWRJbml0RXZlbnQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcbiAgQE91dHB1dCgpIHB1YmxpYyBzZXRBY3RpdmVUYWIgPSBuZXcgRXZlbnRFbWl0dGVyPG51bGwgfCBudW1iZXI+KCk7XHJcbiAgcHVibGljIGFjdGl2ZUZyYWdtZW50OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50YWJzKSB7XHJcbiAgICAgIHRoaXMudGFic0ZyYWdtZW50ID0gdGhpcy50YWJzLm1hcCh0ID0+IHQuZnJhZ21lbnQpO1xyXG4gICAgICB0aGlzLmdldEZyYWdtZW50KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2hlY2tBY3RpdmVUYWIodGFiPzogSVRhYikge1xyXG4gICAgaWYgKHRhYikge1xyXG4gICAgICB0aGlzLmFjdGl2ZUZyYWdtZW50ID0gdGFiLmlkO1xyXG4gICAgICBpZiAodGhpcy5yb3V0KSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMucm91dF0sIHsgZnJhZ21lbnQ6IHRhYi5mcmFnbWVudCB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNldEFjdGl2ZVRhYi5lbWl0KHRoaXMuYWN0aXZlRnJhZ21lbnQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hY3RpdmVGcmFnbWVudCA9IHVuZGVmaW5lZDtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMucm91dF0sIHsgZnJhZ21lbnQ6IHVuZGVmaW5lZCB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RnJhZ21lbnQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBhY3RpdmVGcmFnbWVudCA9IHRoaXMucm91dGUuc25hcHNob3QuZnJhZ21lbnQgYXMgc3RyaW5nO1xyXG4gICAgdGhpcy5hY3RpdmVGcmFnbWVudCA9IHRoaXMudGFicz8uWzBdPy5pZCB8fCAwO1xyXG4gICAgaWYgKHRoaXMudGFic0ZyYWdtZW50Py5pbmNsdWRlcyhhY3RpdmVGcmFnbWVudCkpIHtcclxuICAgICAgdGhpcy5hY3RpdmVGcmFnbWVudCA9IHRoaXMudGFicz8uZmluZChmID0+IGYuZnJhZ21lbnQgPT09IGFjdGl2ZUZyYWdtZW50KT8uaWQ7XHJcbiAgICAgIGlmICh0aGlzLm5lZWRJbml0RXZlbnQpIHtcclxuICAgICAgICB0aGlzLnNldEFjdGl2ZVRhYi5lbWl0KHRoaXMuYWN0aXZlRnJhZ21lbnQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVlZEluaXRFdmVudCkge1xyXG4gICAgICB0aGlzLnNldEFjdGl2ZVRhYi5lbWl0KHRoaXMuYWN0aXZlRnJhZ21lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCJAaWYgKHRhYnM/Lmxlbmd0aCkge1xyXG48ZGl2IGNsYXNzPVwidGFicy1mcmFnbWVudFwiPlxyXG4gIDxzd2lwZXItY29udGFpbmVyIHNwZWVkPVwiNTAwXCIgc2xpZGVzLXBlci12aWV3PVwiYXV0b1wiPlxyXG4gIEBmb3IgKHRhYiBvZiB0YWJzOyB0cmFjayB0YWIpIHtcclxuICAgIDxzd2lwZXItc2xpZGU+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0YWJzLWZyYWdtZW50X19pdGVtXCJcclxuICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInRhYi5pZCA9PT0gYWN0aXZlRnJhZ21lbnRcIlxyXG4gICAgICAgICAgIChjbGljayk9XCJjaGVja0FjdGl2ZVRhYih0YWIpXCI+XHJcbiAgICAgICAge3sgdGFiLnRpdGxlIH19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9zd2lwZXItc2xpZGU+XHJcbiAgfVxyXG4gIDwvc3dpcGVyLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcbn1cclxuIl19
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLXRhYnMtZnJhZ21lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGQtbGliL3NyYy9saWIvbGliLXRhYnMtZnJhZ21lbnQvbGliLXRhYnMtZnJhZ21lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGQtbGliL3NyYy9saWIvbGliLXRhYnMtZnJhZ21lbnQvbGliLXRhYnMtZnJhZ21lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1Qsc0JBQXNCLEVBQ3RCLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDOzs7QUFHdkIsTUFBTSxPQUFPLElBQUk7SUFRZixZQUFZLElBQVM7UUFDbkIsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUMzQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzdCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNwQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN2QixJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNSLDZEQUE2RDtnQkFDN0QsYUFBYTtnQkFDYixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBV0QsTUFBTSxPQUFPLHdCQUF3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QUs7Z0JBQ1UsYUFBYTtzQkFBNUIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUNXLFlBQVk7c0JBQTVCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmV4cG9ydCBjbGFzcyBJVGFiIHtcclxuICBwdWJsaWMgdGl0bGU6IHN0cmluZztcclxuICBwdWJsaWMgaWQ6IG51bGwgfCBudW1iZXI7XHJcbiAgcHVibGljIGZyYWdtZW50OiBzdHJpbmc7XHJcbiAgcHVibGljIG5hbWU/OiBzdHJpbmc7XHJcbiAgcHVibGljIHdlbGNvbWVUZXh0Pzogc3RyaW5nO1xyXG4gIHB1YmxpYyB0eXBlPzogMSB8IDI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGJvZHk6IGFueSkge1xyXG4gICAgdGhpcy5pZCA9IGJvZHkuaWQ7XHJcbiAgICB0aGlzLnRpdGxlID0gYm9keS5uYW1lUGFnZTtcclxuICAgIHRoaXMubmFtZSA9IGJvZHkubmFtZTtcclxuICAgIHRoaXMuZnJhZ21lbnQgPSBib2R5LmFkZHJlc3M7XHJcbiAgICB0aGlzLndlbGNvbWVUZXh0ID0gYm9keS53ZWxjb21lVGV4dDtcclxuICAgIHRoaXMudHlwZSA9IGJvZHkudHlwZTtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIGJvZHkpIHtcclxuICAgICAgaWYgKGtleSkge1xyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgdGhpc1trZXldID0gYm9keVtrZXldO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2RkLWxpYi10YWJzLWZyYWdtZW50JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9saWItdGFicy1mcmFnbWVudC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2xpYi10YWJzLWZyYWdtZW50LmNvbXBvbmVudC5zY3NzJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMaWJUYWJzRnJhZ21lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIHB1YmxpYyByb3V0ID0gbG9jYXRpb24ucGF0aG5hbWU7XHJcbiAgQElucHV0KCkgcHVibGljIHRhYnM6IElUYWJbXSB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBwdWJsaWMgdGFic0ZyYWdtZW50OiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBwdWJsaWMgbmVlZEluaXRFdmVudDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBwdWJsaWMgbm9GcmFnbWVudDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcclxuICBAT3V0cHV0KCkgcHVibGljIHNldEFjdGl2ZVRhYiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVsbCB8IG51bWJlcj4oKTtcclxuICBwdWJsaWMgYWN0aXZlRnJhZ21lbnQ6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnRhYnMpIHtcclxuICAgICAgdGhpcy50YWJzRnJhZ21lbnQgPSB0aGlzLnRhYnMubWFwKHQgPT4gdC5mcmFnbWVudCk7XHJcbiAgICAgIHRoaXMuZ2V0RnJhZ21lbnQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGVja0FjdGl2ZVRhYih0YWI/OiBJVGFiKSB7XHJcbiAgICBpZiAodGFiKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlRnJhZ21lbnQgPSB0YWIuaWQ7XHJcbiAgICAgIGlmICh0aGlzLnJvdXQgJiYgIXRoaXMubm9GcmFnbWVudCkge1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLnJvdXRdLCB7IGZyYWdtZW50OiB0YWIuZnJhZ21lbnQgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZXRBY3RpdmVUYWIuZW1pdCh0aGlzLmFjdGl2ZUZyYWdtZW50KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlRnJhZ21lbnQgPSB1bmRlZmluZWQ7XHJcbiAgICAgIGlmICghdGhpcy5ub0ZyYWdtZW50KSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMucm91dF0sIHsgZnJhZ21lbnQ6IHVuZGVmaW5lZCB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGcmFnbWVudCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGFjdGl2ZUZyYWdtZW50ID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5mcmFnbWVudCBhcyBzdHJpbmc7XHJcbiAgICB0aGlzLmFjdGl2ZUZyYWdtZW50ID0gdGhpcy50YWJzPy5bMF0/LmlkIHx8IDA7XHJcbiAgICBpZiAodGhpcy50YWJzRnJhZ21lbnQ/LmluY2x1ZGVzKGFjdGl2ZUZyYWdtZW50KSkge1xyXG4gICAgICB0aGlzLmFjdGl2ZUZyYWdtZW50ID0gdGhpcy50YWJzPy5maW5kKGYgPT4gZi5mcmFnbWVudCA9PT0gYWN0aXZlRnJhZ21lbnQpPy5pZDtcclxuICAgICAgaWYgKHRoaXMubmVlZEluaXRFdmVudCkge1xyXG4gICAgICAgIHRoaXMuc2V0QWN0aXZlVGFiLmVtaXQodGhpcy5hY3RpdmVGcmFnbWVudCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5uZWVkSW5pdEV2ZW50KSB7XHJcbiAgICAgIHRoaXMuc2V0QWN0aXZlVGFiLmVtaXQodGhpcy5hY3RpdmVGcmFnbWVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIkBpZiAodGFicz8ubGVuZ3RoKSB7XHJcbjxkaXYgY2xhc3M9XCJ0YWJzLWZyYWdtZW50XCI+XHJcbiAgPHN3aXBlci1jb250YWluZXIgc3BlZWQ9XCI1MDBcIiBzbGlkZXMtcGVyLXZpZXc9XCJhdXRvXCI+XHJcbiAgQGZvciAodGFiIG9mIHRhYnM7IHRyYWNrIHRhYikge1xyXG4gICAgPHN3aXBlci1zbGlkZT5cclxuICAgICAgPGRpdiBjbGFzcz1cInRhYnMtZnJhZ21lbnRfX2l0ZW1cIlxyXG4gICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwidGFiLmlkID09PSBhY3RpdmVGcmFnbWVudFwiXHJcbiAgICAgICAgICAgKGNsaWNrKT1cImNoZWNrQWN0aXZlVGFiKHRhYilcIj5cclxuICAgICAgICB7eyB0YWIudGl0bGUgfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3N3aXBlci1zbGlkZT5cclxuICB9XHJcbiAgPC9zd2lwZXItY29udGFpbmVyPlxyXG48L2Rpdj5cclxufVxyXG4iXX0=