@huntsman-cancer-institute/input 16.0.1 → 17.0.1

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 (54) hide show
  1. package/date/date-base.d.ts +65 -65
  2. package/date/date-date-range.component.d.ts +32 -32
  3. package/date/date-date.component.d.ts +53 -53
  4. package/date/date-validator.d.ts +17 -17
  5. package/date/date.module.d.ts +16 -16
  6. package/dropdown/dropdown-index.d.ts +6 -6
  7. package/dropdown/dropdown-select-result.component.d.ts +23 -23
  8. package/dropdown/dropdown-select.component.d.ts +76 -76
  9. package/dropdown/dropdown.component.d.ts +40 -40
  10. package/dropdown/dropdown.module.d.ts +13 -13
  11. package/dropdown/dropdown.service.d.ts +51 -51
  12. package/dropdown/messages.d.ts +11 -11
  13. package/dropdown/select-item.d.ts +16 -16
  14. package/dropdown/template-dropdown.directive.d.ts +12 -12
  15. package/esm2022/date/date-base.mjs +114 -114
  16. package/esm2022/date/date-date-range.component.mjs +92 -92
  17. package/esm2022/date/date-date.component.mjs +189 -189
  18. package/esm2022/date/date-validator.mjs +40 -40
  19. package/esm2022/date/date.module.mjs +60 -60
  20. package/esm2022/dropdown/dropdown-index.mjs +5 -5
  21. package/esm2022/dropdown/dropdown-select-result.component.mjs +85 -85
  22. package/esm2022/dropdown/dropdown-select.component.mjs +360 -360
  23. package/esm2022/dropdown/dropdown.component.mjs +170 -170
  24. package/esm2022/dropdown/dropdown.module.mjs +50 -50
  25. package/esm2022/dropdown/dropdown.service.mjs +133 -133
  26. package/esm2022/dropdown/messages.mjs +9 -9
  27. package/esm2022/dropdown/select-item.mjs +11 -11
  28. package/esm2022/dropdown/template-dropdown.directive.mjs +26 -26
  29. package/esm2022/huntsman-cancer-institute-input.mjs +4 -4
  30. package/esm2022/index.mjs +19 -19
  31. package/esm2022/inline/inline.component.mjs +179 -179
  32. package/esm2022/inline/inline.module.mjs +28 -28
  33. package/esm2022/search/search.component.mjs +157 -157
  34. package/esm2022/search/search.module.mjs +32 -32
  35. package/esm2022/select/custom-combobox.component.mjs +531 -531
  36. package/esm2022/select/custom-multi-combobox.component.mjs +232 -232
  37. package/esm2022/select/md-multi-select.component.mjs +127 -127
  38. package/esm2022/select/md-select.component.mjs +107 -107
  39. package/esm2022/select/native-select.component.mjs +188 -188
  40. package/esm2022/select/select.module.mjs +83 -83
  41. package/fesm2022/huntsman-cancer-institute-input.mjs +2797 -2797
  42. package/fesm2022/huntsman-cancer-institute-input.mjs.map +1 -1
  43. package/index.d.ts +20 -20
  44. package/inline/inline.component.d.ts +66 -66
  45. package/inline/inline.module.d.ts +9 -9
  46. package/package.json +7 -7
  47. package/search/search.component.d.ts +42 -42
  48. package/search/search.module.d.ts +10 -10
  49. package/select/custom-combobox.component.d.ts +98 -98
  50. package/select/custom-multi-combobox.component.d.ts +50 -50
  51. package/select/md-multi-select.component.d.ts +32 -32
  52. package/select/md-select.component.d.ts +30 -30
  53. package/select/native-select.component.d.ts +37 -37
  54. package/select/select.module.d.ts +21 -21
@@ -1,144 +1,144 @@
1
- import { Component, forwardRef, HostBinding, Input, ChangeDetectorRef } from "@angular/core";
2
- import { NG_VALUE_ACCESSOR } from "@angular/forms";
3
- import { HttpClient } from "@angular/common/http";
4
- import { DictionaryService } from "@huntsman-cancer-institute/dictionary-service";
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@huntsman-cancer-institute/dictionary-service";
7
- import * as i2 from "@angular/common/http";
8
- import * as i3 from "@angular/common";
9
- import * as i4 from "@angular/forms";
10
- export class NativeSelectComponent {
11
- get filter() {
12
- return this._filter;
13
- }
14
- set filter(f) {
15
- this._filter = f;
16
- if (this.filterKey != null && this.filter != null && this.unfilteredEntries != null) {
17
- this.entries = this.unfilteredEntries;
18
- var newlist = this.entries.filter(entry => entry[this.filterKey] == this.filter);
19
- this.entries = newlist;
20
- if (this.sortKey != null) {
21
- if (this.sortNumeric) {
22
- this.entries.sort((a, b) => {
23
- return a[this.sortKey] - b[this.sortKey];
24
- });
25
- }
26
- else {
27
- this.entries.sort((a, b) => {
28
- return a[this.sortKey].localeCompare(b[this.sortKey]);
29
- });
30
- }
31
- }
32
- }
33
- }
34
- constructor(dictionaryService, http, cdr) {
35
- this.dictionaryService = dictionaryService;
36
- this.http = http;
37
- this.cdr = cdr;
38
- this.classList = "";
39
- this.required = false;
40
- this.idKey = "id";
41
- this.displayKey = "display";
42
- this.disabled = false;
43
- this.sortKey = null;
44
- this.sortNumeric = false;
45
- this.filterKey = null;
46
- this._filter = null;
47
- }
48
- ngOnInit() {
49
- if (this.url && this.url.indexOf("/") === -1) {
50
- this.dictionaryService.getDictionaryDropdownEntries(this.url).subscribe((entries) => {
51
- this.entries = entries;
52
- if (this.filterKey != null && this.filter != null) {
53
- this.unfilteredEntries = this.entries;
54
- var newlist = this.entries.filter(entry => entry[this.filterKey] == this.filter);
55
- this.entries = newlist;
56
- }
57
- if (this.sortKey != null) {
58
- if (this.sortNumeric) {
59
- this.entries.sort((a, b) => {
60
- return a[this.sortKey] - b[this.sortKey];
61
- });
62
- }
63
- else {
64
- this.entries.sort((a, b) => {
65
- return a[this.sortKey].localeCompare(b[this.sortKey]);
66
- });
67
- }
68
- }
69
- });
70
- }
71
- else if (this.url) {
72
- this.http.get(this.url).subscribe((entries) => {
73
- this.entries = entries;
74
- if (this.filterKey != null && this.filter != null) {
75
- this.unfilteredEntries = this.entries;
76
- var newlist = this.entries.filter(entry => entry[this.filterKey] == this.filter);
77
- this.entries = newlist;
78
- }
79
- if (this.sortKey != null) {
80
- if (this.sortNumeric) {
81
- this.entries.sort((a, b) => {
82
- return a[this.sortKey] - b[this.sortKey];
83
- });
84
- }
85
- else {
86
- this.entries.sort((a, b) => {
87
- return a[this.sortKey].localeCompare(b[this.sortKey]);
88
- });
89
- }
90
- }
91
- });
92
- }
93
- else {
94
- if (this.filterKey != null && this.filter != null) {
95
- this.unfilteredEntries = this.entries;
96
- var newlist = this.entries.filter(entry => entry[this.filterKey] == this.filter);
97
- this.entries = newlist;
98
- }
99
- if (this.sortKey != null) {
100
- if (this.sortNumeric) {
101
- this.entries.sort((a, b) => {
102
- return a[this.sortKey] - b[this.sortKey];
103
- });
104
- }
105
- else {
106
- this.entries.sort((a, b) => {
107
- return a[this.sortKey].localeCompare(b[this.sortKey]);
108
- });
109
- }
110
- }
111
- }
112
- if (this.classList.length > 0) {
113
- this.classList += " native-input"; //?
114
- }
115
- else {
116
- this.classList = "native-input";
117
- }
118
- }
119
- setHeight(h) {
120
- this.height = h;
121
- // avoid ExpressionChangedAfterItHasBeenCheckedError
122
- this.cdr.detectChanges();
123
- }
124
- writeValue(value) {
125
- if (value !== undefined) {
126
- this.value = value;
127
- }
128
- }
129
- registerOnChange(fn) {
130
- this.onChange = () => {
131
- fn(this.value);
132
- };
133
- }
134
- registerOnTouched(fn) { }
135
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NativeSelectComponent, deps: [{ token: i1.DictionaryService }, { token: i2.HttpClient }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
136
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NativeSelectComponent, selector: "hci-native-select", inputs: { classList: ["class", "classList"], name: "name", label: "label", url: "url", entries: "entries", required: "required", idKey: "idKey", displayKey: "displayKey", disabled: "disabled", sortKey: "sortKey", sortNumeric: "sortNumeric", filterKey: "filterKey", filter: "filter" }, host: { properties: { "class": "this.classList" } }, providers: [
137
- {
138
- provide: NG_VALUE_ACCESSOR,
139
- useExisting: forwardRef(() => NativeSelectComponent),
140
- multi: true
141
- }
1
+ import { Component, forwardRef, HostBinding, Input, ChangeDetectorRef } from "@angular/core";
2
+ import { NG_VALUE_ACCESSOR } from "@angular/forms";
3
+ import { HttpClient } from "@angular/common/http";
4
+ import { DictionaryService } from "@huntsman-cancer-institute/dictionary-service";
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@huntsman-cancer-institute/dictionary-service";
7
+ import * as i2 from "@angular/common/http";
8
+ import * as i3 from "@angular/common";
9
+ import * as i4 from "@angular/forms";
10
+ export class NativeSelectComponent {
11
+ get filter() {
12
+ return this._filter;
13
+ }
14
+ set filter(f) {
15
+ this._filter = f;
16
+ if (this.filterKey != null && this.filter != null && this.unfilteredEntries != null) {
17
+ this.entries = this.unfilteredEntries;
18
+ var newlist = this.entries.filter(entry => entry[this.filterKey] == this.filter);
19
+ this.entries = newlist;
20
+ if (this.sortKey != null) {
21
+ if (this.sortNumeric) {
22
+ this.entries.sort((a, b) => {
23
+ return a[this.sortKey] - b[this.sortKey];
24
+ });
25
+ }
26
+ else {
27
+ this.entries.sort((a, b) => {
28
+ return a[this.sortKey].localeCompare(b[this.sortKey]);
29
+ });
30
+ }
31
+ }
32
+ }
33
+ }
34
+ constructor(dictionaryService, http, cdr) {
35
+ this.dictionaryService = dictionaryService;
36
+ this.http = http;
37
+ this.cdr = cdr;
38
+ this.classList = "";
39
+ this.required = false;
40
+ this.idKey = "id";
41
+ this.displayKey = "display";
42
+ this.disabled = false;
43
+ this.sortKey = null;
44
+ this.sortNumeric = false;
45
+ this.filterKey = null;
46
+ this._filter = null;
47
+ }
48
+ ngOnInit() {
49
+ if (this.url && this.url.indexOf("/") === -1) {
50
+ this.dictionaryService.getDictionaryDropdownEntries(this.url).subscribe((entries) => {
51
+ this.entries = entries;
52
+ if (this.filterKey != null && this.filter != null) {
53
+ this.unfilteredEntries = this.entries;
54
+ var newlist = this.entries.filter(entry => entry[this.filterKey] == this.filter);
55
+ this.entries = newlist;
56
+ }
57
+ if (this.sortKey != null) {
58
+ if (this.sortNumeric) {
59
+ this.entries.sort((a, b) => {
60
+ return a[this.sortKey] - b[this.sortKey];
61
+ });
62
+ }
63
+ else {
64
+ this.entries.sort((a, b) => {
65
+ return a[this.sortKey].localeCompare(b[this.sortKey]);
66
+ });
67
+ }
68
+ }
69
+ });
70
+ }
71
+ else if (this.url) {
72
+ this.http.get(this.url).subscribe((entries) => {
73
+ this.entries = entries;
74
+ if (this.filterKey != null && this.filter != null) {
75
+ this.unfilteredEntries = this.entries;
76
+ var newlist = this.entries.filter(entry => entry[this.filterKey] == this.filter);
77
+ this.entries = newlist;
78
+ }
79
+ if (this.sortKey != null) {
80
+ if (this.sortNumeric) {
81
+ this.entries.sort((a, b) => {
82
+ return a[this.sortKey] - b[this.sortKey];
83
+ });
84
+ }
85
+ else {
86
+ this.entries.sort((a, b) => {
87
+ return a[this.sortKey].localeCompare(b[this.sortKey]);
88
+ });
89
+ }
90
+ }
91
+ });
92
+ }
93
+ else {
94
+ if (this.filterKey != null && this.filter != null) {
95
+ this.unfilteredEntries = this.entries;
96
+ var newlist = this.entries.filter(entry => entry[this.filterKey] == this.filter);
97
+ this.entries = newlist;
98
+ }
99
+ if (this.sortKey != null) {
100
+ if (this.sortNumeric) {
101
+ this.entries.sort((a, b) => {
102
+ return a[this.sortKey] - b[this.sortKey];
103
+ });
104
+ }
105
+ else {
106
+ this.entries.sort((a, b) => {
107
+ return a[this.sortKey].localeCompare(b[this.sortKey]);
108
+ });
109
+ }
110
+ }
111
+ }
112
+ if (this.classList.length > 0) {
113
+ this.classList += " native-input"; //?
114
+ }
115
+ else {
116
+ this.classList = "native-input";
117
+ }
118
+ }
119
+ setHeight(h) {
120
+ this.height = h;
121
+ // avoid ExpressionChangedAfterItHasBeenCheckedError
122
+ this.cdr.detectChanges();
123
+ }
124
+ writeValue(value) {
125
+ if (value !== undefined) {
126
+ this.value = value;
127
+ }
128
+ }
129
+ registerOnChange(fn) {
130
+ this.onChange = () => {
131
+ fn(this.value);
132
+ };
133
+ }
134
+ registerOnTouched(fn) { }
135
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NativeSelectComponent, deps: [{ token: i1.DictionaryService }, { token: i2.HttpClient }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
136
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: NativeSelectComponent, selector: "hci-native-select", inputs: { classList: ["class", "classList"], name: "name", label: "label", url: "url", entries: "entries", required: "required", idKey: "idKey", displayKey: "displayKey", disabled: "disabled", sortKey: "sortKey", sortNumeric: "sortNumeric", filterKey: "filterKey", filter: "filter" }, host: { properties: { "class": "this.classList" } }, providers: [
137
+ {
138
+ provide: NG_VALUE_ACCESSOR,
139
+ useExisting: forwardRef(() => NativeSelectComponent),
140
+ multi: true
141
+ }
142
142
  ], ngImport: i0, template: `
143
143
  <div *ngIf="label" class="label">
144
144
  {{label}}{{(required) ? " *" : ""}}
@@ -158,12 +158,12 @@ export class NativeSelectComponent {
158
158
  {{ row[displayKey] }}
159
159
  </option>
160
160
  </select>
161
- `, isInline: true, dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
162
- }
163
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NativeSelectComponent, decorators: [{
164
- type: Component,
165
- args: [{
166
- selector: "hci-native-select",
161
+ `, isInline: true, dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
162
+ }
163
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NativeSelectComponent, decorators: [{
164
+ type: Component,
165
+ args: [{
166
+ selector: "hci-native-select",
167
167
  template: `
168
168
  <div *ngIf="label" class="label">
169
169
  {{label}}{{(required) ? " *" : ""}}
@@ -183,44 +183,44 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
183
183
  {{ row[displayKey] }}
184
184
  </option>
185
185
  </select>
186
- `,
187
- providers: [
188
- {
189
- provide: NG_VALUE_ACCESSOR,
190
- useExisting: forwardRef(() => NativeSelectComponent),
191
- multi: true
192
- }
193
- ]
194
- }]
195
- }], ctorParameters: function () { return [{ type: i1.DictionaryService }, { type: i2.HttpClient }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { classList: [{
196
- type: HostBinding,
197
- args: ["class"]
198
- }, {
199
- type: Input,
200
- args: ["class"]
201
- }], name: [{
202
- type: Input
203
- }], label: [{
204
- type: Input
205
- }], url: [{
206
- type: Input
207
- }], entries: [{
208
- type: Input
209
- }], required: [{
210
- type: Input
211
- }], idKey: [{
212
- type: Input
213
- }], displayKey: [{
214
- type: Input
215
- }], disabled: [{
216
- type: Input
217
- }], sortKey: [{
218
- type: Input
219
- }], sortNumeric: [{
220
- type: Input
221
- }], filterKey: [{
222
- type: Input
223
- }], filter: [{
224
- type: Input
225
- }] } });
226
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnB1dC9zcmMvc2VsZWN0L25hdGl2ZS1zZWxlY3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFM0YsT0FBTyxFQUF1QixpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsaUJBQWlCLEVBQWdCLE1BQU0sK0NBQStDLENBQUM7Ozs7OztBQWdDL0YsTUFBTSxPQUFPLHFCQUFxQjtJQXFCaEMsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFDRCxJQUFhLE1BQU0sQ0FBQyxDQUFNO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBRWpCLElBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksRUFBRTtZQUNsRixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztZQUN0QyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pGLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1lBRXZCLElBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUU7Z0JBQ3ZCLElB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LElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFNTyxNQUFNO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIGZvcndhcmRSZWYsIEhvc3RCaW5kaW5nLCBJbnB1dCwgQ2hhbmdlRGV0ZWN0b3JSZWZ9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7SHR0cENsaWVudH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7RGljdGlvbmFyeVNlcnZpY2UsIERyb3Bkb3duRW50cnl9IGZyb20gXCJAaHVudHNtYW4tY2FuY2VyLWluc3RpdHV0ZS9kaWN0aW9uYXJ5LXNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImhjaS1uYXRpdmUtc2VsZWN0XCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgKm5nSWY9XCJsYWJlbFwiIGNsYXNzPVwibGFiZWxcIj5cclxuICAgICAge3tsYWJlbH19e3socmVxdWlyZWQpID8gXCIgKlwiIDogXCJcIn19XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzZWxlY3QgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVpZ2h0XCJcclxuICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNoYW5nZSgpXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZmxleC1ncm93LTFcIlxyXG4gICAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDogNHJlbTtcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFyZXF1aXJlZFwiPlxyXG4gICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwidW5kZWZpbmVkXCI+XHJcbiAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCByb3cgb2YgZW50cmllc1wiXHJcbiAgICAgICAgICAgICAgW25nVmFsdWVdPVwicm93W2lkS2V5XVwiPlxyXG4gICAgICAgIHt7IHJvd1tkaXNwbGF5S2V5XSB9fVxyXG4gICAgICA8L29wdGlvbj5cclxuICAgIDwvc2VsZWN0PlxyXG4gIGAsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOYXRpdmVTZWxlY3RDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIE5hdGl2ZVNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3NcIikgQElucHV0KFwiY2xhc3NcIikgY2xhc3NMaXN0OiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICB2YWx1ZTogYW55O1xyXG4gIGhlaWdodDogbnVtYmVyO1xyXG4gIHVuZmlsdGVyZWRFbnRyaWVzOiBEcm9wZG93bkVudHJ5W107XHJcblxyXG4gIEBJbnB1dCgpIG5hbWU6IHN0cmluZztcclxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHVybDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGVudHJpZXM6IERyb3Bkb3duRW50cnlbXTtcclxuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGlkS2V5OiBzdHJpbmcgPSBcImlkXCI7XHJcbiAgQElucHV0KCkgZGlzcGxheUtleTogc3RyaW5nID0gXCJkaXNwbGF5XCI7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzb3J0S2V5OiBzdHJpbmcgPSBudWxsO1xyXG4gIEBJbnB1dCgpIHNvcnROdW1lcmljOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZmlsdGVyS2V5OiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICBfZmlsdGVyOiBhbnkgPSBudWxsO1xyXG4gIGdldCBmaWx0ZXIoKTogYW55e1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlcjtcclxuICB9XHJcbiAgQElucHV0KCkgc2V0IGZpbHRlcihmOiBhbnkpe1xyXG4gICAgdGhpcy5fZmlsdGVyID0gZjtcclxuXHJcbiAgICBpZih0aGlzLmZpbHRlcktleSAhPSBudWxsICYmIHRoaXMuZmlsdGVyICE9IG51bGwgJiYgdGhpcy51bmZpbHRlcmVkRW50cmllcyAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuZW50cmllcyA9IHRoaXMudW5maWx0ZXJlZEVudHJpZXM7XHJcbiAgICAgIHZhciBuZXdsaXN0ID0gdGhpcy5lbnRyaWVzLmZpbHRlcihlbnRyeSA9PiBlbnRyeVt0aGlzLmZpbHRlcktleV0gPT0gdGhpcy5maWx0ZXIpO1xyXG4gICAgICB0aGlzLmVudHJpZXMgPSBuZXdsaXN0O1xyXG5cclxuICAgICAgaWYodGhpcy5zb3J0S2V5ICE9IG51bGwpIHtcclxuICAgICAgICBpZih0aGlzLnNvcnROdW1lcmljKSB7XHJcbiAgICAgICAgICB0aGlzLmVudHJpZXMuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gYVt0aGlzLnNvcnRLZXldIC0gYlt0aGlzLnNvcnRLZXldO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfWVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5lbnRyaWVzLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIGFbdGhpcy5zb3J0S2V5XS5sb2NhbGVDb21wYXJlKGJbdGhpcy5zb3J0S2V5XSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZTogYW55O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpY3Rpb25hcnlTZXJ2aWNlOiBEaWN0aW9uYXJ5U2VydmljZSwgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudXJsICYmIHRoaXMudXJsLmluZGV4T2YoXCIvXCIpID09PSAtMSkge1xyXG4gICAgICB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldERpY3Rpb25hcnlEcm9wZG93bkVudHJpZXModGhpcy51cmwpLnN1YnNjcmliZSgoZW50cmllczogRHJvcGRvd25FbnRyeVtdKSA9PiB7XHJcbiAgICAgICAgdGhpcy5lbnRyaWVzID0gZW50cmllcztcclxuXHJcbiAgICAgICAgaWYodGhpcy5maWx0ZXJLZXkgIT0gbnVsbCAmJiB0aGlzLmZpbHRlciAhPSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLnVuZmlsdGVyZWRFbnRyaWVzID0gdGhpcy5lbnRyaWVzO1xyXG4gICAgICAgICAgdmFyIG5ld2xpc3QgPSB0aGlzLmVudHJpZXMuZmlsdGVyKGVudHJ5ID0+IGVudHJ5W3RoaXMuZmlsdGVyS2V5XSA9PSB0aGlzLmZpbHRlcik7XHJcbiAgICAgICAgICB0aGlzLmVudHJpZXMgPSBuZXdsaXN0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYodGhpcy5zb3J0S2V5ICE9IG51bGwpIHtcclxuICAgICAgICAgIGlmKHRoaXMuc29ydE51bWVyaWMpIHtcclxuICAgICAgICAgICAgdGhpcy5lbnRyaWVzLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gYVt0aGlzLnNvcnRLZXldIC0gYlt0aGlzLnNvcnRLZXldO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1lbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5lbnRyaWVzLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gYVt0aGlzLnNvcnRLZXldLmxvY2FsZUNvbXBhcmUoYlt0aGlzLnNvcnRLZXldKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudXJsKSB7XHJcbiAgICAgIHRoaXMuaHR0cC5nZXQodGhpcy51cmwpLnN1YnNjcmliZSgoZW50cmllczogYW55W10pID0+IHtcclxuICAgICAgICB0aGlzLmVudHJpZXMgPSBlbnRyaWVzO1xyXG5cclxuICAgICAgICBpZih0aGlzLmZpbHRlcktleSAhPSBudWxsICYmIHRoaXMuZmlsdGVyICE9IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMudW5maWx0ZXJlZEVudHJpZXMgPSB0aGlzLmVudHJpZXM7XHJcbiAgICAgICAgICB2YXIgbmV3bGlzdCA9IHRoaXMuZW50cmllcy5maWx0ZXIoZW50cnkgPT4gZW50cnlbdGhpcy5maWx0ZXJLZXldID09IHRoaXMuZmlsdGVyKTtcclxuICAgICAgICAgIHRoaXMuZW50cmllcyA9IG5ld2xpc3Q7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZih0aGlzLnNvcnRLZXkgIT0gbnVsbCkge1xyXG4gICAgICAgICAgaWYodGhpcy5zb3J0TnVtZXJpYykge1xyXG4gICAgICAgICAgICB0aGlzLmVudHJpZXMuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiBhW3RoaXMuc29ydEtleV0gLSBiW3RoaXMuc29ydEtleV07XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfWVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmVudHJpZXMuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiBhW3RoaXMuc29ydEtleV0ubG9jYWxlQ29tcGFyZShiW3RoaXMuc29ydEtleV0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfWVsc2Uge1xyXG5cclxuICAgICAgaWYodGhpcy5maWx0ZXJLZXkgIT0gbnVsbCAmJiB0aGlzLmZpbHRlciAhPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy51bmZpbHRlcmVkRW50cmllcyA9IHRoaXMuZW50cmllcztcclxuICAgICAgICB2YXIgbmV3bGlzdCA9IHRoaXMuZW50cmllcy5maWx0ZXIoZW50cnkgPT4gZW50cnlbdGhpcy5maWx0ZXJLZXldID09IHRoaXMuZmlsdGVyKTtcclxuICAgICAgICB0aGlzLmVudHJpZXMgPSBuZXdsaXN0O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZih0aGlzLnNvcnRLZXkgIT0gbnVsbCkge1xyXG4gICAgICAgIGlmKHRoaXMuc29ydE51bWVyaWMpIHtcclxuICAgICAgICAgIHRoaXMuZW50cmllcy5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBhW3RoaXMuc29ydEtleV0gLSBiW3RoaXMuc29ydEtleV07XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9ZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmVudHJpZXMuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gYVt0aGlzLnNvcnRLZXldLmxvY2FsZUNvbXBhcmUoYlt0aGlzLnNvcnRLZXldKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmKHRoaXMuY2xhc3NMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5jbGFzc0xpc3QgKz0gXCIgbmF0aXZlLWlucHV0XCI7IC8vP1xyXG4gICAgfWVsc2Uge1xyXG4gICAgICB0aGlzLmNsYXNzTGlzdCA9IFwibmF0aXZlLWlucHV0XCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0SGVpZ2h0KGg6IG51bWJlcikge1xyXG4gICAgdGhpcy5oZWlnaHQgPSBoO1xyXG4gICAgLy8gYXZvaWQgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvclxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuKSB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gKCkgPT4ge1xyXG4gICAgICBmbih0aGlzLnZhbHVlKTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge31cclxufVxyXG4iXX0=
186
+ `,
187
+ providers: [
188
+ {
189
+ provide: NG_VALUE_ACCESSOR,
190
+ useExisting: forwardRef(() => NativeSelectComponent),
191
+ multi: true
192
+ }
193
+ ]
194
+ }]
195
+ }], ctorParameters: () => [{ type: i1.DictionaryService }, { type: i2.HttpClient }, { type: i0.ChangeDetectorRef }], propDecorators: { classList: [{
196
+ type: HostBinding,
197
+ args: ["class"]
198
+ }, {
199
+ type: Input,
200
+ args: ["class"]
201
+ }], name: [{
202
+ type: Input
203
+ }], label: [{
204
+ type: Input
205
+ }], url: [{
206
+ type: Input
207
+ }], entries: [{
208
+ type: Input
209
+ }], required: [{
210
+ type: Input
211
+ }], idKey: [{
212
+ type: Input
213
+ }], displayKey: [{
214
+ type: Input
215
+ }], disabled: [{
216
+ type: Input
217
+ }], sortKey: [{
218
+ type: Input
219
+ }], sortNumeric: [{
220
+ type: Input
221
+ }], filterKey: [{
222
+ type: Input
223
+ }], filter: [{
224
+ type: Input
225
+ }] } });
226
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnB1dC9zcmMvc2VsZWN0L25hdGl2ZS1zZWxlY3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFM0YsT0FBTyxFQUF1QixpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsaUJBQWlCLEVBQWdCLE1BQU0sK0NBQStDLENBQUM7Ozs7OztBQWdDL0YsTUFBTSxPQUFPLHFCQUFxQjtJQXFCaEMsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFDRCxJQUFhLE1BQU0sQ0FBQyxDQUFNO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBRWpCLElBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ25GLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQ3RDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDakYsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7WUFFdkIsSUFBRyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksRUFBRSxDQUFD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Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJUO29CQUNELFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxzQkFBc0IsQ0FBQzs0QkFDcEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0Y7K0lBR3VDLFNBQVM7c0JBQTlDLFdBQVc7dUJBQUMsT0FBTzs7c0JBQUcsS0FBSzt1QkFBQyxPQUFPO2dCQU0zQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBTU8sTUFBTTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBmb3J3YXJkUmVmLCBIb3N0QmluZGluZywgSW5wdXQsIENoYW5nZURldGVjdG9yUmVmfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQge0RpY3Rpb25hcnlTZXJ2aWNlLCBEcm9wZG93bkVudHJ5fSBmcm9tIFwiQGh1bnRzbWFuLWNhbmNlci1pbnN0aXR1dGUvZGljdGlvbmFyeS1zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJoY2ktbmF0aXZlLXNlbGVjdFwiLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2ICpuZ0lmPVwibGFiZWxcIiBjbGFzcz1cImxhYmVsXCI+XHJcbiAgICAgIHt7bGFiZWx9fXt7KHJlcXVpcmVkKSA/IFwiICpcIiA6IFwiXCJ9fVxyXG4gICAgPC9kaXY+XHJcbiAgICA8c2VsZWN0IFsobmdNb2RlbCldPVwidmFsdWVcIlxyXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlaWdodFwiXHJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib25DaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZsZXgtZ3Jvdy0xXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6IDRyZW07XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhcmVxdWlyZWRcIj5cclxuICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cInVuZGVmaW5lZFwiPlxyXG4gICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgcm93IG9mIGVudHJpZXNcIlxyXG4gICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cInJvd1tpZEtleV1cIj5cclxuICAgICAgICB7eyByb3dbZGlzcGxheUtleV0gfX1cclxuICAgICAgPC9vcHRpb24+XHJcbiAgICA8L3NlbGVjdD5cclxuICBgLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTmF0aXZlU2VsZWN0Q29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOYXRpdmVTZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzXCIpIEBJbnB1dChcImNsYXNzXCIpIGNsYXNzTGlzdDogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgdmFsdWU6IGFueTtcclxuICBoZWlnaHQ6IG51bWJlcjtcclxuICB1bmZpbHRlcmVkRW50cmllczogRHJvcGRvd25FbnRyeVtdO1xyXG5cclxuICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcclxuICBASW5wdXQoKSB1cmw6IHN0cmluZztcclxuICBASW5wdXQoKSBlbnRyaWVzOiBEcm9wZG93bkVudHJ5W107XHJcbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBpZEtleTogc3RyaW5nID0gXCJpZFwiO1xyXG4gIEBJbnB1dCgpIGRpc3BsYXlLZXk6IHN0cmluZyA9IFwiZGlzcGxheVwiO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc29ydEtleTogc3RyaW5nID0gbnVsbDtcclxuICBASW5wdXQoKSBzb3J0TnVtZXJpYzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGZpbHRlcktleTogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgX2ZpbHRlcjogYW55ID0gbnVsbDtcclxuICBnZXQgZmlsdGVyKCk6IGFueXtcclxuICAgIHJldHVybiB0aGlzLl9maWx0ZXI7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHNldCBmaWx0ZXIoZjogYW55KXtcclxuICAgIHRoaXMuX2ZpbHRlciA9IGY7XHJcblxyXG4gICAgaWYodGhpcy5maWx0ZXJLZXkgIT0gbnVsbCAmJiB0aGlzLmZpbHRlciAhPSBudWxsICYmIHRoaXMudW5maWx0ZXJlZEVudHJpZXMgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmVudHJpZXMgPSB0aGlzLnVuZmlsdGVyZWRFbnRyaWVzO1xyXG4gICAgICB2YXIgbmV3bGlzdCA9IHRoaXMuZW50cmllcy5maWx0ZXIoZW50cnkgPT4gZW50cnlbdGhpcy5maWx0ZXJLZXldID09IHRoaXMuZmlsdGVyKTtcclxuICAgICAgdGhpcy5lbnRyaWVzID0gbmV3bGlzdDtcclxuXHJcbiAgICAgIGlmKHRoaXMuc29ydEtleSAhPSBudWxsKSB7XHJcbiAgICAgICAgaWYodGhpcy5zb3J0TnVtZXJpYykge1xyXG4gICAgICAgICAgdGhpcy5lbnRyaWVzLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIGFbdGhpcy5zb3J0S2V5XSAtIGJbdGhpcy5zb3J0S2V5XTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1lbHNlIHtcclxuICAgICAgICAgIHRoaXMuZW50cmllcy5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBhW3RoaXMuc29ydEtleV0ubG9jYWxlQ29tcGFyZShiW3RoaXMuc29ydEtleV0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2U6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkaWN0aW9uYXJ5U2VydmljZTogRGljdGlvbmFyeVNlcnZpY2UsIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnVybCAmJiB0aGlzLnVybC5pbmRleE9mKFwiL1wiKSA9PT0gLTEpIHtcclxuICAgICAgdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXREaWN0aW9uYXJ5RHJvcGRvd25FbnRyaWVzKHRoaXMudXJsKS5zdWJzY3JpYmUoKGVudHJpZXM6IERyb3Bkb3duRW50cnlbXSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZW50cmllcyA9IGVudHJpZXM7XHJcblxyXG4gICAgICAgIGlmKHRoaXMuZmlsdGVyS2V5ICE9IG51bGwgJiYgdGhpcy5maWx0ZXIgIT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy51bmZpbHRlcmVkRW50cmllcyA9IHRoaXMuZW50cmllcztcclxuICAgICAgICAgIHZhciBuZXdsaXN0ID0gdGhpcy5lbnRyaWVzLmZpbHRlcihlbnRyeSA9PiBlbnRyeVt0aGlzLmZpbHRlcktleV0gPT0gdGhpcy5maWx0ZXIpO1xyXG4gICAgICAgICAgdGhpcy5lbnRyaWVzID0gbmV3bGlzdDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmKHRoaXMuc29ydEtleSAhPSBudWxsKSB7XHJcbiAgICAgICAgICBpZih0aGlzLnNvcnROdW1lcmljKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZW50cmllcy5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGFbdGhpcy5zb3J0S2V5XSAtIGJbdGhpcy5zb3J0S2V5XTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9ZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZW50cmllcy5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGFbdGhpcy5zb3J0S2V5XS5sb2NhbGVDb21wYXJlKGJbdGhpcy5zb3J0S2V5XSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnVybCkge1xyXG4gICAgICB0aGlzLmh0dHAuZ2V0KHRoaXMudXJsKS5zdWJzY3JpYmUoKGVudHJpZXM6IGFueVtdKSA9PiB7XHJcbiAgICAgICAgdGhpcy5lbnRyaWVzID0gZW50cmllcztcclxuXHJcbiAgICAgICAgaWYodGhpcy5maWx0ZXJLZXkgIT0gbnVsbCAmJiB0aGlzLmZpbHRlciAhPSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLnVuZmlsdGVyZWRFbnRyaWVzID0gdGhpcy5lbnRyaWVzO1xyXG4gICAgICAgICAgdmFyIG5ld2xpc3QgPSB0aGlzLmVudHJpZXMuZmlsdGVyKGVudHJ5ID0+IGVudHJ5W3RoaXMuZmlsdGVyS2V5XSA9PSB0aGlzLmZpbHRlcik7XHJcbiAgICAgICAgICB0aGlzLmVudHJpZXMgPSBuZXdsaXN0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYodGhpcy5zb3J0S2V5ICE9IG51bGwpIHtcclxuICAgICAgICAgIGlmKHRoaXMuc29ydE51bWVyaWMpIHtcclxuICAgICAgICAgICAgdGhpcy5lbnRyaWVzLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gYVt0aGlzLnNvcnRLZXldIC0gYlt0aGlzLnNvcnRLZXldO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1lbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5lbnRyaWVzLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gYVt0aGlzLnNvcnRLZXldLmxvY2FsZUNvbXBhcmUoYlt0aGlzLnNvcnRLZXldKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1lbHNlIHtcclxuXHJcbiAgICAgIGlmKHRoaXMuZmlsdGVyS2V5ICE9IG51bGwgJiYgdGhpcy5maWx0ZXIgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMudW5maWx0ZXJlZEVudHJpZXMgPSB0aGlzLmVudHJpZXM7XHJcbiAgICAgICAgdmFyIG5ld2xpc3QgPSB0aGlzLmVudHJpZXMuZmlsdGVyKGVudHJ5ID0+IGVudHJ5W3RoaXMuZmlsdGVyS2V5XSA9PSB0aGlzLmZpbHRlcik7XHJcbiAgICAgICAgdGhpcy5lbnRyaWVzID0gbmV3bGlzdDtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYodGhpcy5zb3J0S2V5ICE9IG51bGwpIHtcclxuICAgICAgICBpZih0aGlzLnNvcnROdW1lcmljKSB7XHJcbiAgICAgICAgICB0aGlzLmVudHJpZXMuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gYVt0aGlzLnNvcnRLZXldIC0gYlt0aGlzLnNvcnRLZXldO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfWVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5lbnRyaWVzLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIGFbdGhpcy5zb3J0S2V5XS5sb2NhbGVDb21wYXJlKGJbdGhpcy5zb3J0S2V5XSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZih0aGlzLmNsYXNzTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuY2xhc3NMaXN0ICs9IFwiIG5hdGl2ZS1pbnB1dFwiOyAvLz9cclxuICAgIH1lbHNlIHtcclxuICAgICAgdGhpcy5jbGFzc0xpc3QgPSBcIm5hdGl2ZS1pbnB1dFwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldEhlaWdodChoOiBudW1iZXIpIHtcclxuICAgIHRoaXMuaGVpZ2h0ID0gaDtcclxuICAgIC8vIGF2b2lkIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3JcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbikge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9ICgpID0+IHtcclxuICAgICAgZm4odGhpcy52YWx1ZSk7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHt9XHJcbn1cclxuIl19