@valtimo/components 4.15.2-next-main.15 → 4.15.3-next-main.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/valtimo-components.umd.js +4731 -4795
- package/bundles/valtimo-components.umd.js.map +1 -1
- package/bundles/valtimo-components.umd.min.js +2 -2
- package/bundles/valtimo-components.umd.min.js.map +1 -1
- package/esm2015/lib/alert/alert.component.js +140 -142
- package/esm2015/lib/alert/alert.module.js +28 -28
- package/esm2015/lib/alert/alert.service.js +81 -81
- package/esm2015/lib/bpmn-js-diagram/bpmn-js-diagram.component.js +160 -160
- package/esm2015/lib/bpmn-js-diagram/bpmn-js-diagram.module.js +28 -30
- package/esm2015/lib/breadcrumb-navigation/breadcrumb-navigation.component.js +93 -93
- package/esm2015/lib/breadcrumb-navigation/breadcrumb-navigation.module.js +30 -34
- package/esm2015/lib/camunda/form/camunda-form.components.js +37 -37
- package/esm2015/lib/camunda/form/camunda-form.module.js +30 -38
- package/esm2015/lib/camunda/form/custom/camunda-custom-form.component.js +42 -42
- package/esm2015/lib/camunda/form/custom/camunda-custom-form.module.js +28 -34
- package/esm2015/lib/camunda/form/generated/camunda-generated-form.component.js +69 -69
- package/esm2015/lib/camunda/form/generated/camunda-generated-form.module.js +58 -63
- package/esm2015/lib/camunda/form/generated/formfield/boolean/camunda-boolean-formfield.component.js +27 -28
- package/esm2015/lib/camunda/form/generated/formfield/camunda-formfield-generator.directive.js +64 -64
- package/esm2015/lib/camunda/form/generated/formfield/camunda-formfield.service.js +66 -67
- package/esm2015/lib/camunda/form/generated/formfield/choicefield/camunda-choicefield-formfield.component.js +40 -38
- package/esm2015/lib/camunda/form/generated/formfield/date/camunda-date-formfield.component.js +66 -66
- package/esm2015/lib/camunda/form/generated/formfield/enum/camunda-enum-formfield.component.js +30 -31
- package/esm2015/lib/camunda/form/generated/formfield/formfield.model.js +16 -16
- package/esm2015/lib/camunda/form/generated/formfield/long/camunda-long-formfield.component.js +27 -28
- package/esm2015/lib/camunda/form/generated/formfield/string/camunda-string-formfield.component.js +27 -28
- package/esm2015/lib/camunda/form/generated/formfield/textarea/camunda-textarea-formfield.component.js +27 -28
- package/esm2015/lib/camunda/form/generated/formfield/validation/camunda-formfield-validation.component.js +35 -36
- package/esm2015/lib/camunda/form/generated/formfield/validation/date.validators.js +60 -60
- package/esm2015/lib/card/card.component.js +36 -37
- package/esm2015/lib/card/card.module.js +28 -30
- package/esm2015/lib/components.module.js +22 -22
- package/esm2015/lib/data-list/data-list.component.js +33 -34
- package/esm2015/lib/data-list/data-list.module.js +28 -30
- package/esm2015/lib/dropzone/dropzone.component.js +143 -143
- package/esm2015/lib/dropzone/dropzone.module.js +32 -32
- package/esm2015/lib/field-auto-focus/field-auto-focus.directive.js +35 -35
- package/esm2015/lib/field-auto-focus/field-auto-focus.module.js +28 -32
- package/esm2015/lib/file-size/file-size.module.js +28 -30
- package/esm2015/lib/file-size/file-size.pipe.js +38 -45
- package/esm2015/lib/filter-sidebar/filter-sidebar.component.js +46 -46
- package/esm2015/lib/filter-sidebar/filter-sidebar.module.js +28 -30
- package/esm2015/lib/form-io/form-io-builder.component.js +38 -39
- package/esm2015/lib/form-io/form-io-uploader/form-io-uploader-edit-form.js +90 -90
- package/esm2015/lib/form-io/form-io-uploader/form-io-uploader.component.js +74 -72
- package/esm2015/lib/form-io/form-io-uploader/form-io-uploader.formio.js +26 -26
- package/esm2015/lib/form-io/form-io.component.js +163 -158
- package/esm2015/lib/form-io/form-io.module.js +56 -56
- package/esm2015/lib/form-io/formio-config.js +22 -22
- package/esm2015/lib/form-io/services/form-io-dom.service.js +23 -23
- package/esm2015/lib/form-io/services/form-io-state.service.js +24 -24
- package/esm2015/lib/left-sidebar/left-sidebar.component.js +114 -114
- package/esm2015/lib/left-sidebar/left-sidebar.module.js +30 -34
- package/esm2015/lib/list/ListFilterPipe.directive.js +31 -35
- package/esm2015/lib/list/list.component.js +179 -177
- package/esm2015/lib/list/list.module.js +33 -33
- package/esm2015/lib/menu/menu-item-text.component.js +35 -33
- package/esm2015/lib/menu/menu-routing.module.js +27 -29
- package/esm2015/lib/menu/menu.component.js +65 -65
- package/esm2015/lib/menu/menu.init.js +34 -34
- package/esm2015/lib/menu/menu.module.js +34 -39
- package/esm2015/lib/menu/menu.service.js +126 -127
- package/esm2015/lib/menu/submenu-item-text.component.js +29 -29
- package/esm2015/lib/modal/modal.component.js +48 -48
- package/esm2015/lib/modal/modal.module.js +28 -28
- package/esm2015/lib/page-header/page-header.component.js +29 -29
- package/esm2015/lib/page-header/page-header.module.js +30 -34
- package/esm2015/lib/page-title/page-title.component.js +76 -76
- package/esm2015/lib/page-title/page-title.module.js +29 -32
- package/esm2015/lib/progress-bar/progress-bar.component.js +26 -26
- package/esm2015/lib/progress-bar/progress-bar.module.js +28 -30
- package/esm2015/lib/right-sidebar/right-sidebar.component.js +133 -131
- package/esm2015/lib/right-sidebar/right-sidebar.module.js +49 -49
- package/esm2015/lib/searchable-dropdown/searchable-dropdown.component.js +187 -185
- package/esm2015/lib/searchable-dropdown/searchable-dropdown.module.js +29 -29
- package/esm2015/lib/searchable-dropdown-select/searchable-dropdown-select.component.js +52 -52
- package/esm2015/lib/searchable-dropdown-select/searchable-dropdown-select.module.js +30 -30
- package/esm2015/lib/spinner/spinner.component.js +45 -45
- package/esm2015/lib/spinner/spinner.module.js +30 -36
- package/esm2015/lib/timeline/timeline.component.js +29 -29
- package/esm2015/lib/timeline/timeline.module.js +29 -32
- package/esm2015/lib/topbar/topbar.component.js +28 -29
- package/esm2015/lib/topbar/topbar.module.js +29 -32
- package/esm2015/lib/uploader/uploader-drag-drop.directive.js +49 -49
- package/esm2015/lib/uploader/uploader.component.js +69 -70
- package/esm2015/lib/uploader/uploader.module.js +30 -33
- package/esm2015/lib/version/version.service.js +38 -38
- package/esm2015/lib/view-content/type-converters/booleanTypeConverter.js +29 -29
- package/esm2015/lib/view-content/type-converters/dateTypeConverter.js +30 -30
- package/esm2015/lib/view-content/type-converters/enumTypeConverter.js +24 -24
- package/esm2015/lib/view-content/type-converters/relatedFilesTypeConverter.js +24 -24
- package/esm2015/lib/view-content/type-converters/stringReplaceUnderscoreTypeConverter.js +27 -27
- package/esm2015/lib/view-content/type-converters/stringTypeConverter.js +24 -24
- package/esm2015/lib/view-content/type-converters/type-converters.model.js +37 -37
- package/esm2015/lib/view-content/view-content.service.js +51 -51
- package/esm2015/lib/webcam/webcam.component.js +102 -103
- package/esm2015/lib/webcam/webcam.module.js +29 -32
- package/esm2015/lib/widget/widget.component.js +80 -80
- package/esm2015/lib/widget/widget.module.js +28 -30
- package/esm2015/public_api.js +84 -84
- package/esm2015/valtimo-components.js +27 -27
- package/fesm2015/valtimo-components.js +4221 -4309
- package/fesm2015/valtimo-components.js.map +1 -1
- package/lib/alert/alert.component.d.ts +21 -21
- package/lib/alert/alert.module.d.ts +2 -2
- package/lib/alert/alert.service.d.ts +21 -21
- package/lib/bpmn-js-diagram/bpmn-js-diagram.component.d.ts +27 -27
- package/lib/bpmn-js-diagram/bpmn-js-diagram.module.d.ts +2 -2
- package/lib/breadcrumb-navigation/breadcrumb-navigation.component.d.ts +14 -14
- package/lib/breadcrumb-navigation/breadcrumb-navigation.module.d.ts +2 -2
- package/lib/camunda/form/camunda-form.components.d.ts +9 -9
- package/lib/camunda/form/camunda-form.module.d.ts +2 -2
- package/lib/camunda/form/custom/camunda-custom-form.component.d.ts +8 -8
- package/lib/camunda/form/custom/camunda-custom-form.module.d.ts +2 -2
- package/lib/camunda/form/generated/camunda-generated-form.component.d.ts +19 -19
- package/lib/camunda/form/generated/camunda-generated-form.module.d.ts +2 -2
- package/lib/camunda/form/generated/formfield/boolean/camunda-boolean-formfield.component.d.ts +7 -7
- package/lib/camunda/form/generated/formfield/camunda-formfield-generator.directive.d.ts +13 -13
- package/lib/camunda/form/generated/formfield/camunda-formfield.service.d.ts +7 -7
- package/lib/camunda/form/generated/formfield/choicefield/camunda-choicefield-formfield.component.d.ts +12 -12
- package/lib/camunda/form/generated/formfield/date/camunda-date-formfield.component.d.ts +14 -14
- package/lib/camunda/form/generated/formfield/enum/camunda-enum-formfield.component.d.ts +10 -10
- package/lib/camunda/form/generated/formfield/formfield.model.d.ts +20 -20
- package/lib/camunda/form/generated/formfield/long/camunda-long-formfield.component.d.ts +7 -7
- package/lib/camunda/form/generated/formfield/string/camunda-string-formfield.component.d.ts +7 -7
- package/lib/camunda/form/generated/formfield/textarea/camunda-textarea-formfield.component.d.ts +7 -7
- package/lib/camunda/form/generated/formfield/validation/camunda-formfield-validation.component.d.ts +10 -10
- package/lib/camunda/form/generated/formfield/validation/date.validators.d.ts +3 -3
- package/lib/card/card.component.d.ts +16 -16
- package/lib/card/card.module.d.ts +2 -2
- package/lib/components.module.d.ts +2 -2
- package/lib/data-list/data-list.component.d.ts +7 -7
- package/lib/data-list/data-list.module.d.ts +2 -2
- package/lib/dropzone/dropzone.component.d.ts +38 -38
- package/lib/dropzone/dropzone.module.d.ts +2 -2
- package/lib/field-auto-focus/field-auto-focus.directive.d.ts +6 -6
- package/lib/field-auto-focus/field-auto-focus.module.d.ts +2 -2
- package/lib/file-size/file-size.module.d.ts +2 -2
- package/lib/file-size/file-size.pipe.d.ts +5 -5
- package/lib/filter-sidebar/filter-sidebar.component.d.ts +8 -8
- package/lib/filter-sidebar/filter-sidebar.module.d.ts +2 -2
- package/lib/form-io/form-io-builder.component.d.ts +8 -8
- package/lib/form-io/form-io-uploader/form-io-uploader-edit-form.d.ts +61 -61
- package/lib/form-io/form-io-uploader/form-io-uploader.component.d.ts +29 -29
- package/lib/form-io/form-io-uploader/form-io-uploader.formio.d.ts +3 -3
- package/lib/form-io/form-io.component.d.ts +47 -44
- package/lib/form-io/form-io.module.d.ts +2 -2
- package/lib/form-io/formio-config.d.ts +6 -6
- package/lib/form-io/services/form-io-dom.service.d.ts +6 -6
- package/lib/form-io/services/form-io-state.service.d.ts +10 -10
- package/lib/left-sidebar/left-sidebar.component.d.ts +34 -34
- package/lib/left-sidebar/left-sidebar.module.d.ts +2 -2
- package/lib/list/ListFilterPipe.directive.d.ts +4 -4
- package/lib/list/list.component.d.ts +43 -43
- package/lib/list/list.module.d.ts +2 -2
- package/lib/menu/menu-item-text.component.d.ts +4 -4
- package/lib/menu/menu-routing.module.d.ts +2 -2
- package/lib/menu/menu.component.d.ts +18 -18
- package/lib/menu/menu.init.d.ts +3 -3
- package/lib/menu/menu.module.d.ts +2 -2
- package/lib/menu/menu.service.d.ts +23 -23
- package/lib/menu/submenu-item-text.component.d.ts +4 -4
- package/lib/modal/modal.component.d.ts +12 -12
- package/lib/modal/modal.module.d.ts +2 -2
- package/lib/page-header/page-header.component.d.ts +5 -5
- package/lib/page-header/page-header.module.d.ts +2 -2
- package/lib/page-title/page-title.component.d.ts +19 -19
- package/lib/page-title/page-title.module.d.ts +2 -2
- package/lib/progress-bar/progress-bar.component.d.ts +2 -2
- package/lib/progress-bar/progress-bar.module.d.ts +2 -2
- package/lib/right-sidebar/right-sidebar.component.d.ts +34 -34
- package/lib/right-sidebar/right-sidebar.module.d.ts +2 -2
- package/lib/searchable-dropdown/searchable-dropdown.component.d.ts +39 -39
- package/lib/searchable-dropdown/searchable-dropdown.module.d.ts +2 -2
- package/lib/searchable-dropdown-select/searchable-dropdown-select.component.d.ts +19 -19
- package/lib/searchable-dropdown-select/searchable-dropdown-select.module.d.ts +2 -2
- package/lib/spinner/spinner.component.d.ts +10 -10
- package/lib/spinner/spinner.module.d.ts +2 -2
- package/lib/timeline/timeline.component.d.ts +4 -4
- package/lib/timeline/timeline.module.d.ts +2 -2
- package/lib/topbar/topbar.component.d.ts +3 -3
- package/lib/topbar/topbar.module.d.ts +2 -2
- package/lib/uploader/uploader-drag-drop.directive.d.ts +7 -7
- package/lib/uploader/uploader.component.d.ts +15 -15
- package/lib/uploader/uploader.module.d.ts +2 -2
- package/lib/version/version.service.d.ts +8 -8
- package/lib/view-content/type-converters/booleanTypeConverter.d.ts +5 -5
- package/lib/view-content/type-converters/dateTypeConverter.d.ts +5 -5
- package/lib/view-content/type-converters/enumTypeConverter.d.ts +5 -5
- package/lib/view-content/type-converters/relatedFilesTypeConverter.d.ts +5 -5
- package/lib/view-content/type-converters/stringReplaceUnderscoreTypeConverter.d.ts +6 -6
- package/lib/view-content/type-converters/stringTypeConverter.d.ts +5 -5
- package/lib/view-content/type-converters/type-converters.model.d.ts +5 -5
- package/lib/view-content/view-content.service.d.ts +8 -8
- package/lib/webcam/webcam.component.d.ts +20 -20
- package/lib/webcam/webcam.module.d.ts +2 -2
- package/lib/widget/widget.component.d.ts +28 -28
- package/lib/widget/widget.module.d.ts +2 -2
- package/package.json +1 -1
- package/public_api.d.ts +65 -65
- package/valtimo-components.d.ts +26 -26
- package/valtimo-components.metadata.json +1 -1
|
@@ -1,185 +1,187 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright 2015-2020 Ritense BV, the Netherlands.
|
|
3
|
-
*
|
|
4
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
import { Component, EventEmitter, HostListener, Input, Output, QueryList, ViewChildren } from '@angular/core';
|
|
17
|
-
import { FormControl } from '@angular/forms';
|
|
18
|
-
import { BehaviorSubject, combineLatest, fromEvent } from 'rxjs';
|
|
19
|
-
import { debounceTime, take } from 'rxjs/operators';
|
|
20
|
-
export class SearchableDropdownComponent {
|
|
21
|
-
constructor() {
|
|
22
|
-
this.width = 250;
|
|
23
|
-
this.itemSelected = new EventEmitter();
|
|
24
|
-
this.searchId = 'search';
|
|
25
|
-
this.searchTerm = new FormControl('');
|
|
26
|
-
this.focusedItemId$ = new BehaviorSubject(this.searchId);
|
|
27
|
-
this.open$ = new BehaviorSubject(false);
|
|
28
|
-
this.filteredItems$ = new BehaviorSubject(undefined);
|
|
29
|
-
this.wasInside = false;
|
|
30
|
-
this.mouseOnList$ = new BehaviorSubject(false);
|
|
31
|
-
}
|
|
32
|
-
clickInside() {
|
|
33
|
-
this.wasInside = true;
|
|
34
|
-
}
|
|
35
|
-
clickout() {
|
|
36
|
-
if (!this.wasInside) {
|
|
37
|
-
this.closeDropdown();
|
|
38
|
-
}
|
|
39
|
-
this.wasInside = false;
|
|
40
|
-
}
|
|
41
|
-
ngOnInit() {
|
|
42
|
-
this.openKeysSubscription();
|
|
43
|
-
this.openSearchSubscription();
|
|
44
|
-
}
|
|
45
|
-
ngOnChanges(changes) {
|
|
46
|
-
const itemChanges = changes.items;
|
|
47
|
-
const currenItems = itemChanges.currentValue;
|
|
48
|
-
if (itemChanges && !itemChanges.previousValue && currenItems) {
|
|
49
|
-
this.filteredItems$.next(currenItems);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
ngOnDestroy() {
|
|
53
|
-
this.keySubscription.unsubscribe();
|
|
54
|
-
this.searchSubscription.unsubscribe();
|
|
55
|
-
}
|
|
56
|
-
openDropdown() {
|
|
57
|
-
this.open$.next(true);
|
|
58
|
-
}
|
|
59
|
-
hoverOverButton(id) {
|
|
60
|
-
this.focusedItemId$.next(id);
|
|
61
|
-
}
|
|
62
|
-
mouseEnterList() {
|
|
63
|
-
this.mouseOnList$.next(true);
|
|
64
|
-
}
|
|
65
|
-
mouseLeaveList() {
|
|
66
|
-
this.mouseOnList$.next(false);
|
|
67
|
-
}
|
|
68
|
-
resetFocus() {
|
|
69
|
-
this.focusedItemId$.next(this.searchId);
|
|
70
|
-
}
|
|
71
|
-
submit(id) {
|
|
72
|
-
this.itemSelected.emit(id);
|
|
73
|
-
}
|
|
74
|
-
closeDropdown() {
|
|
75
|
-
this.searchTerm.setValue('');
|
|
76
|
-
this.resetFocus();
|
|
77
|
-
this.open$.next(false);
|
|
78
|
-
}
|
|
79
|
-
openKeysSubscription() {
|
|
80
|
-
this.keySubscription = fromEvent(document, 'keyup')
|
|
81
|
-
.pipe(debounceTime(50))
|
|
82
|
-
.subscribe((event) => {
|
|
83
|
-
combineLatest([this.mouseOnList$, this.filteredItems$, this.focusedItemId$])
|
|
84
|
-
.pipe(take(1))
|
|
85
|
-
.subscribe(([mouseOnList, items, focusedId]) => {
|
|
86
|
-
const length = items.length;
|
|
87
|
-
const focusedIndex = items.findIndex(
|
|
88
|
-
const code = event.code;
|
|
89
|
-
const shiftKey = event.shiftKey;
|
|
90
|
-
const down = 'ArrowDown';
|
|
91
|
-
const tab = 'Tab';
|
|
92
|
-
const up = 'ArrowUp';
|
|
93
|
-
const enter = 'Enter';
|
|
94
|
-
const escape = 'Escape';
|
|
95
|
-
// close dropdown on pressing escape
|
|
96
|
-
if (code === escape) {
|
|
97
|
-
this.closeDropdown();
|
|
98
|
-
}
|
|
99
|
-
// submit item when focus is on an item in the list and enter is pressed
|
|
100
|
-
if (code === enter && focusedId !== this.searchId) {
|
|
101
|
-
this.submit(focusedId);
|
|
102
|
-
}
|
|
103
|
-
// only handle tab or arrow keypresses when items are shown and the mouse is not on the list
|
|
104
|
-
if (length > 0 && !mouseOnList) {
|
|
105
|
-
// handle moving down in the list with arrow down or tab
|
|
106
|
-
if (code === down || (code === tab && !shiftKey)) {
|
|
107
|
-
// move focus to first item in the list when focus is on search box
|
|
108
|
-
if (focusedId === this.searchId) {
|
|
109
|
-
this.focusedItemId$.next(items[0].id);
|
|
110
|
-
this.scrollButtonIntoView(focusedId);
|
|
111
|
-
// move focus to next item in the list if focus is not on last item
|
|
112
|
-
}
|
|
113
|
-
else if (focusedIndex + 1 < length) {
|
|
114
|
-
this.focusedItemId$.next(items[focusedIndex + 1].id);
|
|
115
|
-
this.scrollButtonIntoView(focusedId);
|
|
116
|
-
}
|
|
117
|
-
// handle moving up in the list with up arrow up or shift+tab
|
|
118
|
-
}
|
|
119
|
-
else if ((code === up || (code === tab && shiftKey)) &&
|
|
120
|
-
|
|
121
|
-
if
|
|
122
|
-
|
|
123
|
-
this.
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
this.
|
|
143
|
-
|
|
144
|
-
if
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
}
|
|
171
|
-
]
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
}
|
|
185
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9zZWFyY2hhYmxlLWRyb3Bkb3duL3NlYXJjaGFibGUtZHJvcGRvd24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBQ04sU0FBUyxFQUVULFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBT3BELE1BQU0sT0FBTywyQkFBMkI7SUFMeEM7UUFZVyxVQUFLLEdBQUcsR0FBRyxDQUFDO1FBRVgsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBSTNCLGFBQVEsR0FBRyxRQUFRLENBQUM7UUFFNUIsZUFBVSxHQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRWpDLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQVMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTVELFVBQUssR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUU1QyxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFzQixTQUFTLENBQUMsQ0FBQztRQUV0RSxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBTVQsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztJQXlKdEUsQ0FBQztJQXRKQyxX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QkFDTCxLQUFLO3VCQUNMLEtBQUs7b0JBQ0wsS0FBSzsyQkFFTCxNQUFNO3NCQUVOLFlBQVksU0FBQyxRQUFROzBCQW9CckIsWUFBWSxTQUFDLE9BQU87dUJBS3BCLFlBQVksU0FBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRHJvcGRvd25CdXR0b25TdHlsZSwgRHJvcGRvd25JdGVtIH0gZnJvbSAnQHZhbHRpbW8vY29udHJhY3QnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmcm9tRXZlbnQsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLXNlYXJjaGFibGUtZHJvcGRvd24nLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoYWJsZS1kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaGFibGUtZHJvcGRvd24uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hhYmxlRHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgc3R5bGU6IERyb3Bkb3duQnV0dG9uU3R5bGU7XG4gIEBJbnB1dCgpIGl0ZW1zOiBBcnJheTxEcm9wZG93bkl0ZW0+O1xuICBASW5wdXQoKSBidXR0b25UZXh0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNlYXJjaFRleHQ6IHN0cmluZztcbiAgQElucHV0KCkgbm9SZXN1bHRzVGV4dDogc3RyaW5nO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KCkgd2lkdGggPSAyNTA7XG5cbiAgQE91dHB1dCgpIGl0ZW1TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAVmlld0NoaWxkcmVuKCdidXR0b24nKSBidXR0b25zOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzZWFyY2hJZCA9ICdzZWFyY2gnO1xuXG4gIHJlYWRvbmx5IHNlYXJjaFRlcm0gPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuXG4gIHJlYWRvbmx5IGZvY3VzZWRJdGVtSWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KHRoaXMuc2VhcmNoSWQpO1xuXG4gIHJlYWRvbmx5IG9wZW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcmVhZG9ubHkgZmlsdGVyZWRJdGVtcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PERyb3Bkb3duSXRlbT4+KHVuZGVmaW5lZCk7XG5cbiAgcHJpdmF0ZSB3YXNJbnNpZGUgPSBmYWxzZTtcblxuICBwcml2YXRlIGtleVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIHByaXZhdGUgc2VhcmNoU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSByZWFkb25seSBtb3VzZU9uTGlzdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIGNsaWNrSW5zaWRlKCkge1xuICAgIHRoaXMud2FzSW5zaWRlID0gdHJ1ZTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJylcbiAgY2xpY2tvdXQoKSB7XG4gICAgaWYgKCF0aGlzLndhc0luc2lkZSkge1xuICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgfVxuICAgIHRoaXMud2FzSW5zaWRlID0gZmFsc2U7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5LZXlzU3Vic2NyaXB0aW9uKCk7XG4gICAgdGhpcy5vcGVuU2VhcmNoU3Vic2NyaXB0aW9uKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbUNoYW5nZXMgPSBjaGFuZ2VzLml0ZW1zO1xuICAgIGNvbnN0IGN1cnJlbkl0ZW1zID0gaXRlbUNoYW5nZXMuY3VycmVudFZhbHVlO1xuICAgIGlmIChpdGVtQ2hhbmdlcyAmJiAhaXRlbUNoYW5nZXMucHJldmlvdXNWYWx1ZSAmJiBjdXJyZW5JdGVtcykge1xuICAgICAgdGhpcy5maWx0ZXJlZEl0ZW1zJC5uZXh0KGN1cnJlbkl0ZW1zKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmtleVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc2VhcmNoU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBvcGVuRHJvcGRvd24oKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgaG92ZXJPdmVyQnV0dG9uKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmZvY3VzZWRJdGVtSWQkLm5leHQoaWQpO1xuICB9XG5cbiAgbW91c2VFbnRlckxpc3QoKTogdm9pZCB7XG4gICAgdGhpcy5tb3VzZU9uTGlzdCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIG1vdXNlTGVhdmVMaXN0KCk6IHZvaWQge1xuICAgIHRoaXMubW91c2VPbkxpc3QkLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgcmVzZXRGb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLmZvY3VzZWRJdGVtSWQkLm5leHQodGhpcy5zZWFyY2hJZCk7XG4gIH1cblxuICBzdWJtaXQoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaXRlbVNlbGVjdGVkLmVtaXQoaWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZURyb3Bkb3duKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVGVybS5zZXRWYWx1ZSgnJyk7XG4gICAgdGhpcy5yZXNldEZvY3VzKCk7XG4gICAgdGhpcy5vcGVuJC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbktleXNTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5rZXlTdWJzY3JpcHRpb24gPSBmcm9tRXZlbnQoZG9jdW1lbnQsICdrZXl1cCcpXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoNTApKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5tb3VzZU9uTGlzdCQsIHRoaXMuZmlsdGVyZWRJdGVtcyQsIHRoaXMuZm9jdXNlZEl0ZW1JZCRdKVxuICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgLnN1YnNjcmliZSgoW21vdXNlT25MaXN0LCBpdGVtcywgZm9jdXNlZElkXSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGVuZ3RoID0gaXRlbXMubGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgZm9jdXNlZEluZGV4ID0gaXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmlkID09PSBmb2N1c2VkSWQpO1xuICAgICAgICAgICAgY29uc3QgY29kZSA9IGV2ZW50LmNvZGU7XG4gICAgICAgICAgICBjb25zdCBzaGlmdEtleSA9IGV2ZW50LnNoaWZ0S2V5O1xuICAgICAgICAgICAgY29uc3QgZG93biA9ICdBcnJvd0Rvd24nO1xuICAgICAgICAgICAgY29uc3QgdGFiID0gJ1RhYic7XG4gICAgICAgICAgICBjb25zdCB1cCA9ICdBcnJvd1VwJztcbiAgICAgICAgICAgIGNvbnN0IGVudGVyID0gJ0VudGVyJztcbiAgICAgICAgICAgIGNvbnN0IGVzY2FwZSA9ICdFc2NhcGUnO1xuXG4gICAgICAgICAgICAvLyBjbG9zZSBkcm9wZG93biBvbiBwcmVzc2luZyBlc2NhcGVcbiAgICAgICAgICAgIGlmIChjb2RlID09PSBlc2NhcGUpIHtcbiAgICAgICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHN1Ym1pdCBpdGVtIHdoZW4gZm9jdXMgaXMgb24gYW4gaXRlbSBpbiB0aGUgbGlzdCBhbmQgZW50ZXIgaXMgcHJlc3NlZFxuICAgICAgICAgICAgaWYgKGNvZGUgPT09IGVudGVyICYmIGZvY3VzZWRJZCAhPT0gdGhpcy5zZWFyY2hJZCkge1xuICAgICAgICAgICAgICB0aGlzLnN1Ym1pdChmb2N1c2VkSWQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBvbmx5IGhhbmRsZSB0YWIgb3IgYXJyb3cga2V5cHJlc3NlcyB3aGVuIGl0ZW1zIGFyZSBzaG93biBhbmQgdGhlIG1vdXNlIGlzIG5vdCBvbiB0aGUgbGlzdFxuICAgICAgICAgICAgaWYgKGxlbmd0aCA+IDAgJiYgIW1vdXNlT25MaXN0KSB7XG4gICAgICAgICAgICAgIC8vIGhhbmRsZSBtb3ZpbmcgZG93biBpbiB0aGUgbGlzdCB3aXRoIGFycm93IGRvd24gb3IgdGFiXG4gICAgICAgICAgICAgIGlmIChjb2RlID09PSBkb3duIHx8IChjb2RlID09PSB0YWIgJiYgIXNoaWZ0S2V5KSkge1xuICAgICAgICAgICAgICAgIC8vIG1vdmUgZm9jdXMgdG8gZmlyc3QgaXRlbSBpbiB0aGUgbGlzdCB3aGVuIGZvY3VzIGlzIG9uIHNlYXJjaCBib3hcbiAgICAgICAgICAgICAgICBpZiAoZm9jdXNlZElkID09PSB0aGlzLnNlYXJjaElkKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzZWRJdGVtSWQkLm5leHQoaXRlbXNbMF0uaWQpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxCdXR0b25JbnRvVmlldyhmb2N1c2VkSWQpO1xuICAgICAgICAgICAgICAgICAgLy8gbW92ZSBmb2N1cyB0byBuZXh0IGl0ZW0gaW4gdGhlIGxpc3QgaWYgZm9jdXMgaXMgbm90IG9uIGxhc3QgaXRlbVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9jdXNlZEluZGV4ICsgMSA8IGxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c2VkSXRlbUlkJC5uZXh0KGl0ZW1zW2ZvY3VzZWRJbmRleCArIDFdLmlkKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsQnV0dG9uSW50b1ZpZXcoZm9jdXNlZElkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gaGFuZGxlIG1vdmluZyB1cCBpbiB0aGUgbGlzdCB3aXRoIHVwIGFycm93IHVwIG9yIHNoaWZ0K3RhYlxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKChjb2RlID09PSB1cCB8fCAoY29kZSA9PT0gdGFiICYmIHNoaWZ0S2V5KSkgJiYgZm9jdXNlZElkICE9PSB0aGlzLnNlYXJjaElkKSB7XG4gICAgICAgICAgICAgICAgLy8gbW92ZSB0byBwcmV2aW91cyBpdGVtIGlmIGZvY3VzIGlzIG5vdCBvbiB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgbGlzdFxuICAgICAgICAgICAgICAgIGlmIChmb2N1c2VkSW5kZXggPiAwKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzZWRJdGVtSWQkLm5leHQoaXRlbXNbZm9jdXNlZEluZGV4IC0gMV0uaWQpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxCdXR0b25JbnRvVmlldyhmb2N1c2VkSWQpO1xuICAgICAgICAgICAgICAgICAgLy8gbW92ZSBmb2N1cyB0byBzZWFyY2ggYm94IGlmIGZvY3VzIGlzIG9uIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3RcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldEZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlblNlYXJjaFN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFN1YnNjcmlwdGlvbiA9IHRoaXMuc2VhcmNoVGVybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChzZWFyY2hUZXJtKSA9PiB7XG4gICAgICB0aGlzLmZvY3VzZWRJdGVtSWQkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChmb2N1c2VkSXRlbUlkKSA9PiB7XG4gICAgICAgIGlmICghc2VhcmNoVGVybSkge1xuICAgICAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcyQubmV4dCh0aGlzLml0ZW1zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBmaWx0ZXJlZEl0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0udGV4dC50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0udG9VcHBlckNhc2UoKSkpO1xuXG4gICAgICAgICAgdGhpcy5maWx0ZXJlZEl0ZW1zJC5uZXh0KGZpbHRlcmVkSXRlbXMpO1xuXG4gICAgICAgICAgLy8gbW92ZSBmb2N1cyB0byBzZWFyY2ggYm94IGlmIGZpbHRlcmVkIGxpc3QgbGVuZ3RoIGlzIDAgb3IgcHJldmlvdXNseSBmb2N1c2VkIGl0ZW0gaXMgbm90IGluIGZpbHRlcmVkIGxpc3QgYW55bW9yZVxuICAgICAgICAgIGlmIChmaWx0ZXJlZEl0ZW1zLmxlbmd0aCA9PT0gMCB8fCAhZmlsdGVyZWRJdGVtcy5zb21lKChpdGVtKSA9PiBpdGVtLmlkID09PSBmb2N1c2VkSXRlbUlkKSkge1xuICAgICAgICAgICAgdGhpcy5yZXNldEZvY3VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gbW92ZSBzY3JvbGxpbmcgYnV0dG9uIGludG8gdmlldyB0byBlbmQgb2YgcXVldWUsIHNvIHRoYXQgRE9NIGNhbiBiZSB1cGRhdGVkIGZpcnN0XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2Nyb2xsQnV0dG9uSW50b1ZpZXcoZm9jdXNlZEl0ZW1JZCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNjcm9sbEJ1dHRvbkludG9WaWV3KGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlcmVkSXRlbXMkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChpdGVtcykgPT4ge1xuICAgICAgY29uc3QgZm9jdXNJdGVtSW5kZXggPSBpdGVtcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGlkKTtcbiAgICAgIGNvbnN0IGZvY3VzZWRCdXR0b24gPSB0aGlzLmJ1dHRvbnMudG9BcnJheSgpW2ZvY3VzSXRlbUluZGV4XTtcblxuICAgICAgaWYgKGZvY3VzZWRCdXR0b24pIHtcbiAgICAgICAgZm9jdXNlZEJ1dHRvbi5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2020 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { Component, EventEmitter, HostListener, Input, Output, QueryList, ViewChildren, } from '@angular/core';
|
|
17
|
+
import { FormControl } from '@angular/forms';
|
|
18
|
+
import { BehaviorSubject, combineLatest, fromEvent } from 'rxjs';
|
|
19
|
+
import { debounceTime, take } from 'rxjs/operators';
|
|
20
|
+
export class SearchableDropdownComponent {
|
|
21
|
+
constructor() {
|
|
22
|
+
this.width = 250;
|
|
23
|
+
this.itemSelected = new EventEmitter();
|
|
24
|
+
this.searchId = 'search';
|
|
25
|
+
this.searchTerm = new FormControl('');
|
|
26
|
+
this.focusedItemId$ = new BehaviorSubject(this.searchId);
|
|
27
|
+
this.open$ = new BehaviorSubject(false);
|
|
28
|
+
this.filteredItems$ = new BehaviorSubject(undefined);
|
|
29
|
+
this.wasInside = false;
|
|
30
|
+
this.mouseOnList$ = new BehaviorSubject(false);
|
|
31
|
+
}
|
|
32
|
+
clickInside() {
|
|
33
|
+
this.wasInside = true;
|
|
34
|
+
}
|
|
35
|
+
clickout() {
|
|
36
|
+
if (!this.wasInside) {
|
|
37
|
+
this.closeDropdown();
|
|
38
|
+
}
|
|
39
|
+
this.wasInside = false;
|
|
40
|
+
}
|
|
41
|
+
ngOnInit() {
|
|
42
|
+
this.openKeysSubscription();
|
|
43
|
+
this.openSearchSubscription();
|
|
44
|
+
}
|
|
45
|
+
ngOnChanges(changes) {
|
|
46
|
+
const itemChanges = changes.items;
|
|
47
|
+
const currenItems = itemChanges.currentValue;
|
|
48
|
+
if (itemChanges && !itemChanges.previousValue && currenItems) {
|
|
49
|
+
this.filteredItems$.next(currenItems);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
ngOnDestroy() {
|
|
53
|
+
this.keySubscription.unsubscribe();
|
|
54
|
+
this.searchSubscription.unsubscribe();
|
|
55
|
+
}
|
|
56
|
+
openDropdown() {
|
|
57
|
+
this.open$.next(true);
|
|
58
|
+
}
|
|
59
|
+
hoverOverButton(id) {
|
|
60
|
+
this.focusedItemId$.next(id);
|
|
61
|
+
}
|
|
62
|
+
mouseEnterList() {
|
|
63
|
+
this.mouseOnList$.next(true);
|
|
64
|
+
}
|
|
65
|
+
mouseLeaveList() {
|
|
66
|
+
this.mouseOnList$.next(false);
|
|
67
|
+
}
|
|
68
|
+
resetFocus() {
|
|
69
|
+
this.focusedItemId$.next(this.searchId);
|
|
70
|
+
}
|
|
71
|
+
submit(id) {
|
|
72
|
+
this.itemSelected.emit(id);
|
|
73
|
+
}
|
|
74
|
+
closeDropdown() {
|
|
75
|
+
this.searchTerm.setValue('');
|
|
76
|
+
this.resetFocus();
|
|
77
|
+
this.open$.next(false);
|
|
78
|
+
}
|
|
79
|
+
openKeysSubscription() {
|
|
80
|
+
this.keySubscription = fromEvent(document, 'keyup')
|
|
81
|
+
.pipe(debounceTime(50))
|
|
82
|
+
.subscribe((event) => {
|
|
83
|
+
combineLatest([this.mouseOnList$, this.filteredItems$, this.focusedItemId$])
|
|
84
|
+
.pipe(take(1))
|
|
85
|
+
.subscribe(([mouseOnList, items, focusedId]) => {
|
|
86
|
+
const length = items.length;
|
|
87
|
+
const focusedIndex = items.findIndex(item => item.id === focusedId);
|
|
88
|
+
const code = event.code;
|
|
89
|
+
const shiftKey = event.shiftKey;
|
|
90
|
+
const down = 'ArrowDown';
|
|
91
|
+
const tab = 'Tab';
|
|
92
|
+
const up = 'ArrowUp';
|
|
93
|
+
const enter = 'Enter';
|
|
94
|
+
const escape = 'Escape';
|
|
95
|
+
// close dropdown on pressing escape
|
|
96
|
+
if (code === escape) {
|
|
97
|
+
this.closeDropdown();
|
|
98
|
+
}
|
|
99
|
+
// submit item when focus is on an item in the list and enter is pressed
|
|
100
|
+
if (code === enter && focusedId !== this.searchId) {
|
|
101
|
+
this.submit(focusedId);
|
|
102
|
+
}
|
|
103
|
+
// only handle tab or arrow keypresses when items are shown and the mouse is not on the list
|
|
104
|
+
if (length > 0 && !mouseOnList) {
|
|
105
|
+
// handle moving down in the list with arrow down or tab
|
|
106
|
+
if (code === down || (code === tab && !shiftKey)) {
|
|
107
|
+
// move focus to first item in the list when focus is on search box
|
|
108
|
+
if (focusedId === this.searchId) {
|
|
109
|
+
this.focusedItemId$.next(items[0].id);
|
|
110
|
+
this.scrollButtonIntoView(focusedId);
|
|
111
|
+
// move focus to next item in the list if focus is not on last item
|
|
112
|
+
}
|
|
113
|
+
else if (focusedIndex + 1 < length) {
|
|
114
|
+
this.focusedItemId$.next(items[focusedIndex + 1].id);
|
|
115
|
+
this.scrollButtonIntoView(focusedId);
|
|
116
|
+
}
|
|
117
|
+
// handle moving up in the list with up arrow up or shift+tab
|
|
118
|
+
}
|
|
119
|
+
else if ((code === up || (code === tab && shiftKey)) &&
|
|
120
|
+
focusedId !== this.searchId) {
|
|
121
|
+
// move to previous item if focus is not on the first item in the list
|
|
122
|
+
if (focusedIndex > 0) {
|
|
123
|
+
this.focusedItemId$.next(items[focusedIndex - 1].id);
|
|
124
|
+
this.scrollButtonIntoView(focusedId);
|
|
125
|
+
// move focus to search box if focus is on first item in the list
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
this.resetFocus();
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
openSearchSubscription() {
|
|
136
|
+
this.searchSubscription = this.searchTerm.valueChanges.subscribe(searchTerm => {
|
|
137
|
+
this.focusedItemId$.pipe(take(1)).subscribe(focusedItemId => {
|
|
138
|
+
if (!searchTerm) {
|
|
139
|
+
this.filteredItems$.next(this.items);
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
const filteredItems = this.items.filter(item => item.text.toUpperCase().includes(searchTerm.toUpperCase()));
|
|
143
|
+
this.filteredItems$.next(filteredItems);
|
|
144
|
+
// move focus to search box if filtered list length is 0 or previously focused item is not in filtered list anymore
|
|
145
|
+
if (filteredItems.length === 0 ||
|
|
146
|
+
!filteredItems.some(item => item.id === focusedItemId)) {
|
|
147
|
+
this.resetFocus();
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// move scrolling button into view to end of queue, so that DOM can be updated first
|
|
151
|
+
setTimeout(() => {
|
|
152
|
+
this.scrollButtonIntoView(focusedItemId);
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
scrollButtonIntoView(id) {
|
|
158
|
+
this.filteredItems$.pipe(take(1)).subscribe(items => {
|
|
159
|
+
const focusItemIndex = items.findIndex(item => item.id === id);
|
|
160
|
+
const focusedButton = this.buttons.toArray()[focusItemIndex];
|
|
161
|
+
if (focusedButton) {
|
|
162
|
+
focusedButton.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
SearchableDropdownComponent.decorators = [
|
|
168
|
+
{ type: Component, args: [{
|
|
169
|
+
selector: 'valtimo-searchable-dropdown',
|
|
170
|
+
template: "<ng-container *ngIf=\"buttonText && items\">\n <ng-container [ngTemplateOutlet]=\"(open$ | async) ? opened : closed\"> </ng-container>\n</ng-container>\n\n<ng-template #closed>\n <ng-container *ngIf=\"style === 'button' || !style\">\n <button\n class=\"btn btn-primary btn-sm dropdown-size\"\n (click)=\"openDropdown()\"\n [style.width.px]=\"width\"\n >\n {{ buttonText }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"style === 'underlinedText'\">\n <h5 class=\"underline-button\" (click)=\"openDropdown()\" [style.width.px]=\"width\">\n <b>\n {{ buttonText }}\n </b>\n </h5>\n </ng-container>\n</ng-template>\n\n<ng-template #opened>\n <div class=\"dropdown-container\" [style.width.px]=\"width\">\n <div class=\"dropdown-size search\" [style.width.px]=\"width\">\n <input\n #search\n [ngClass]=\"{disabled: disabled}\"\n [placeholder]=\"searchText\"\n [formControl]=\"searchTerm\"\n />\n {{ search.focus() }}\n </div>\n <div class=\"dropdown-list\" (mouseenter)=\"mouseEnterList()\" (mouseleave)=\"mouseLeaveList()\">\n <ng-container *ngIf=\"filteredItems$ | async as filteredItems\">\n <ng-container\n *ngIf=\"\n filteredItems.length > 0 && focusedItemId$ | async as focusedItemId;\n else noResults\n \"\n >\n <button\n #button\n *ngFor=\"let item of filteredItems\"\n [ngClass]=\"{focus: focusedItemId === item.id, disabled: disabled}\"\n class=\"dropdown-button dropdown-size\"\n (click)=\"submit(item.id)\"\n (mouseenter)=\"hoverOverButton(item.id)\"\n (mouseleave)=\"resetFocus()\"\n [style.width.px]=\"width\"\n >\n <span class=\"dropdown-button-text\">\n {{ item.text }}\n </span>\n </button>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <ng-container [ngTemplateOutlet]=\"space\"> </ng-container>\n</ng-template>\n\n<ng-template #noResults>\n <div class=\"dropdown-button dropdown-size disabled\" [style.width.px]=\"width\">\n <span class=\"dropdown-button-text\">{{ noResultsText }}</span>\n </div>\n</ng-template>\n\n<ng-template #space>\n <div *ngIf=\"style === 'button' || !style\" class=\"dropdown-size\" [style.width.px]=\"width\"></div>\n <h5 *ngIf=\"style === 'underlinedText'\" class=\"underline-button\"><b>-</b></h5>\n</ng-template>\n",
|
|
171
|
+
styles: [".dropdown-size{height:34px;width:250px}.underline-button{cursor:pointer;text-decoration:underline;width:250px}.dropdown-container{background-color:#fff;border:1px solid #e3e3e3;border-radius:3px;box-shadow:0 0 6px 0 rgba(0,0,0,.12);display:flex;flex-direction:column;max-height:300px;overflow:hidden;padding:7px 0;position:fixed;width:250px;z-index:999}.dropdown-list{list-style:none;margin:0;overflow:auto;overflow-x:hidden;padding:0;z-index:9999}.search{align-items:center;border-bottom:1px solid #dee2e6;display:flex;flex-shrink:0;height:44px;padding:8px 24px}.search input{padding:0;width:100%}.dropdown-button,.search input,.search input:focus{border:none;outline:none}.dropdown-button{align-items:center;background-color:#fff;color:#504e4e;cursor:pointer;display:flex;font-size:1rem;font-weight:400;padding:8px 24px}.dropdown-button.focus{background-color:#f5f5f5}.dropdown-button-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.disabled{color:#959595;cursor:default;pointer-events:none}"]
|
|
172
|
+
},] }
|
|
173
|
+
];
|
|
174
|
+
SearchableDropdownComponent.propDecorators = {
|
|
175
|
+
style: [{ type: Input }],
|
|
176
|
+
items: [{ type: Input }],
|
|
177
|
+
buttonText: [{ type: Input }],
|
|
178
|
+
searchText: [{ type: Input }],
|
|
179
|
+
noResultsText: [{ type: Input }],
|
|
180
|
+
disabled: [{ type: Input }],
|
|
181
|
+
width: [{ type: Input }],
|
|
182
|
+
itemSelected: [{ type: Output }],
|
|
183
|
+
buttons: [{ type: ViewChildren, args: ['button',] }],
|
|
184
|
+
clickInside: [{ type: HostListener, args: ['click',] }],
|
|
185
|
+
clickout: [{ type: HostListener, args: ['document:click',] }]
|
|
186
|
+
};
|
|
187
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiRDovV29ya3NwYWNlL3ZhbHRpbW8vdmFsdGltby1mcm9udGVuZC1saWJyYXJpZXMvcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9zZWFyY2hhYmxlLWRyb3Bkb3duL3NlYXJjaGFibGUtZHJvcGRvd24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBQ04sU0FBUyxFQUVULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBQzdFLE9BQU8sRUFBQyxZQUFZLEVBQUUsSUFBSSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFPbEQsTUFBTSxPQUFPLDJCQUEyQjtJQUx4QztRQVlXLFVBQUssR0FBRyxHQUFHLENBQUM7UUFFWCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFJM0IsYUFBUSxHQUFHLFFBQVEsQ0FBQztRQUU1QixlQUFVLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFakMsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBUyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFNUQsVUFBSyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRTVDLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQXNCLFNBQVMsQ0FBQyxDQUFDO1FBRXRFLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFNVCxpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUss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QUNMLEtBQUs7dUJBQ0wsS0FBSztvQkFDTCxLQUFLOzJCQUVMLE1BQU07c0JBRU4sWUFBWSxTQUFDLFFBQVE7MEJBb0JyQixZQUFZLFNBQUMsT0FBTzt1QkFLcEIsWUFBWSxTQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIwIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUNvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7RHJvcGRvd25CdXR0b25TdHlsZSwgRHJvcGRvd25JdGVtfSBmcm9tICdAdmFsdGltby9jb250cmFjdCc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZnJvbUV2ZW50LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIHRha2V9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1zZWFyY2hhYmxlLWRyb3Bkb3duJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaGFibGUtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2hhYmxlLWRyb3Bkb3duLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaGFibGVEcm9wZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBzdHlsZTogRHJvcGRvd25CdXR0b25TdHlsZTtcbiAgQElucHV0KCkgaXRlbXM6IEFycmF5PERyb3Bkb3duSXRlbT47XG4gIEBJbnB1dCgpIGJ1dHRvblRleHQ6IHN0cmluZztcbiAgQElucHV0KCkgc2VhcmNoVGV4dDogc3RyaW5nO1xuICBASW5wdXQoKSBub1Jlc3VsdHNUZXh0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuICBASW5wdXQoKSB3aWR0aCA9IDI1MDtcblxuICBAT3V0cHV0KCkgaXRlbVNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBWaWV3Q2hpbGRyZW4oJ2J1dHRvbicpIGJ1dHRvbnM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcblxuICBwcml2YXRlIHJlYWRvbmx5IHNlYXJjaElkID0gJ3NlYXJjaCc7XG5cbiAgcmVhZG9ubHkgc2VhcmNoVGVybSA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG5cbiAgcmVhZG9ubHkgZm9jdXNlZEl0ZW1JZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4odGhpcy5zZWFyY2hJZCk7XG5cbiAgcmVhZG9ubHkgb3BlbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICByZWFkb25seSBmaWx0ZXJlZEl0ZW1zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8RHJvcGRvd25JdGVtPj4odW5kZWZpbmVkKTtcblxuICBwcml2YXRlIHdhc0luc2lkZSA9IGZhbHNlO1xuXG4gIHByaXZhdGUga2V5U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBzZWFyY2hTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIHJlYWRvbmx5IG1vdXNlT25MaXN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgY2xpY2tJbnNpZGUoKSB7XG4gICAgdGhpcy53YXNJbnNpZGUgPSB0cnVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snKVxuICBjbGlja291dCgpIHtcbiAgICBpZiAoIXRoaXMud2FzSW5zaWRlKSB7XG4gICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICB9XG4gICAgdGhpcy53YXNJbnNpZGUgPSBmYWxzZTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3BlbktleXNTdWJzY3JpcHRpb24oKTtcbiAgICB0aGlzLm9wZW5TZWFyY2hTdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCBpdGVtQ2hhbmdlcyA9IGNoYW5nZXMuaXRlbXM7XG4gICAgY29uc3QgY3VycmVuSXRlbXMgPSBpdGVtQ2hhbmdlcy5jdXJyZW50VmFsdWU7XG4gICAgaWYgKGl0ZW1DaGFuZ2VzICYmICFpdGVtQ2hhbmdlcy5wcmV2aW91c1ZhbHVlICYmIGN1cnJlbkl0ZW1zKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkSXRlbXMkLm5leHQoY3VycmVuSXRlbXMpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMua2V5U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zZWFyY2hTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG9wZW5Ecm9wZG93bigpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW4kLm5leHQodHJ1ZSk7XG4gIH1cblxuICBob3Zlck92ZXJCdXR0b24oaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZm9jdXNlZEl0ZW1JZCQubmV4dChpZCk7XG4gIH1cblxuICBtb3VzZUVudGVyTGlzdCgpOiB2b2lkIHtcbiAgICB0aGlzLm1vdXNlT25MaXN0JC5uZXh0KHRydWUpO1xuICB9XG5cbiAgbW91c2VMZWF2ZUxpc3QoKTogdm9pZCB7XG4gICAgdGhpcy5tb3VzZU9uTGlzdCQubmV4dChmYWxzZSk7XG4gIH1cblxuICByZXNldEZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuZm9jdXNlZEl0ZW1JZCQubmV4dCh0aGlzLnNlYXJjaElkKTtcbiAgfVxuXG4gIHN1Ym1pdChpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5pdGVtU2VsZWN0ZWQuZW1pdChpZCk7XG4gIH1cblxuICBwcml2YXRlIGNsb3NlRHJvcGRvd24oKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hUZXJtLnNldFZhbHVlKCcnKTtcbiAgICB0aGlzLnJlc2V0Rm9jdXMoKTtcbiAgICB0aGlzLm9wZW4kLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuS2V5c1N1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmtleVN1YnNjcmlwdGlvbiA9IGZyb21FdmVudChkb2N1bWVudCwgJ2tleXVwJylcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSg1MCkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLm1vdXNlT25MaXN0JCwgdGhpcy5maWx0ZXJlZEl0ZW1zJCwgdGhpcy5mb2N1c2VkSXRlbUlkJF0pXG4gICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKChbbW91c2VPbkxpc3QsIGl0ZW1zLCBmb2N1c2VkSWRdKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsZW5ndGggPSBpdGVtcy5sZW5ndGg7XG4gICAgICAgICAgICBjb25zdCBmb2N1c2VkSW5kZXggPSBpdGVtcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmlkID09PSBmb2N1c2VkSWQpO1xuICAgICAgICAgICAgY29uc3QgY29kZSA9IGV2ZW50LmNvZGU7XG4gICAgICAgICAgICBjb25zdCBzaGlmdEtleSA9IGV2ZW50LnNoaWZ0S2V5O1xuICAgICAgICAgICAgY29uc3QgZG93biA9ICdBcnJvd0Rvd24nO1xuICAgICAgICAgICAgY29uc3QgdGFiID0gJ1RhYic7XG4gICAgICAgICAgICBjb25zdCB1cCA9ICdBcnJvd1VwJztcbiAgICAgICAgICAgIGNvbnN0IGVudGVyID0gJ0VudGVyJztcbiAgICAgICAgICAgIGNvbnN0IGVzY2FwZSA9ICdFc2NhcGUnO1xuXG4gICAgICAgICAgICAvLyBjbG9zZSBkcm9wZG93biBvbiBwcmVzc2luZyBlc2NhcGVcbiAgICAgICAgICAgIGlmIChjb2RlID09PSBlc2NhcGUpIHtcbiAgICAgICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHN1Ym1pdCBpdGVtIHdoZW4gZm9jdXMgaXMgb24gYW4gaXRlbSBpbiB0aGUgbGlzdCBhbmQgZW50ZXIgaXMgcHJlc3NlZFxuICAgICAgICAgICAgaWYgKGNvZGUgPT09IGVudGVyICYmIGZvY3VzZWRJZCAhPT0gdGhpcy5zZWFyY2hJZCkge1xuICAgICAgICAgICAgICB0aGlzLnN1Ym1pdChmb2N1c2VkSWQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBvbmx5IGhhbmRsZSB0YWIgb3IgYXJyb3cga2V5cHJlc3NlcyB3aGVuIGl0ZW1zIGFyZSBzaG93biBhbmQgdGhlIG1vdXNlIGlzIG5vdCBvbiB0aGUgbGlzdFxuICAgICAgICAgICAgaWYgKGxlbmd0aCA+IDAgJiYgIW1vdXNlT25MaXN0KSB7XG4gICAgICAgICAgICAgIC8vIGhhbmRsZSBtb3ZpbmcgZG93biBpbiB0aGUgbGlzdCB3aXRoIGFycm93IGRvd24gb3IgdGFiXG4gICAgICAgICAgICAgIGlmIChjb2RlID09PSBkb3duIHx8IChjb2RlID09PSB0YWIgJiYgIXNoaWZ0S2V5KSkge1xuICAgICAgICAgICAgICAgIC8vIG1vdmUgZm9jdXMgdG8gZmlyc3QgaXRlbSBpbiB0aGUgbGlzdCB3aGVuIGZvY3VzIGlzIG9uIHNlYXJjaCBib3hcbiAgICAgICAgICAgICAgICBpZiAoZm9jdXNlZElkID09PSB0aGlzLnNlYXJjaElkKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzZWRJdGVtSWQkLm5leHQoaXRlbXNbMF0uaWQpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxCdXR0b25JbnRvVmlldyhmb2N1c2VkSWQpO1xuICAgICAgICAgICAgICAgICAgLy8gbW92ZSBmb2N1cyB0byBuZXh0IGl0ZW0gaW4gdGhlIGxpc3QgaWYgZm9jdXMgaXMgbm90IG9uIGxhc3QgaXRlbVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9jdXNlZEluZGV4ICsgMSA8IGxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c2VkSXRlbUlkJC5uZXh0KGl0ZW1zW2ZvY3VzZWRJbmRleCArIDFdLmlkKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsQnV0dG9uSW50b1ZpZXcoZm9jdXNlZElkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gaGFuZGxlIG1vdmluZyB1cCBpbiB0aGUgbGlzdCB3aXRoIHVwIGFycm93IHVwIG9yIHNoaWZ0K3RhYlxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIChjb2RlID09PSB1cCB8fCAoY29kZSA9PT0gdGFiICYmIHNoaWZ0S2V5KSkgJiZcbiAgICAgICAgICAgICAgICBmb2N1c2VkSWQgIT09IHRoaXMuc2VhcmNoSWRcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgLy8gbW92ZSB0byBwcmV2aW91cyBpdGVtIGlmIGZvY3VzIGlzIG5vdCBvbiB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgbGlzdFxuICAgICAgICAgICAgICAgIGlmIChmb2N1c2VkSW5kZXggPiAwKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzZWRJdGVtSWQkLm5leHQoaXRlbXNbZm9jdXNlZEluZGV4IC0gMV0uaWQpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxCdXR0b25JbnRvVmlldyhmb2N1c2VkSWQpO1xuICAgICAgICAgICAgICAgICAgLy8gbW92ZSBmb2N1cyB0byBzZWFyY2ggYm94IGlmIGZvY3VzIGlzIG9uIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3RcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldEZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlblNlYXJjaFN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFN1YnNjcmlwdGlvbiA9IHRoaXMuc2VhcmNoVGVybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHNlYXJjaFRlcm0gPT4ge1xuICAgICAgdGhpcy5mb2N1c2VkSXRlbUlkJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShmb2N1c2VkSXRlbUlkID0+IHtcbiAgICAgICAgaWYgKCFzZWFyY2hUZXJtKSB7XG4gICAgICAgICAgdGhpcy5maWx0ZXJlZEl0ZW1zJC5uZXh0KHRoaXMuaXRlbXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGZpbHRlcmVkSXRlbXMgPSB0aGlzLml0ZW1zLmZpbHRlcihpdGVtID0+XG4gICAgICAgICAgICBpdGVtLnRleHQudG9VcHBlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtLnRvVXBwZXJDYXNlKCkpXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcyQubmV4dChmaWx0ZXJlZEl0ZW1zKTtcblxuICAgICAgICAgIC8vIG1vdmUgZm9jdXMgdG8gc2VhcmNoIGJveCBpZiBmaWx0ZXJlZCBsaXN0IGxlbmd0aCBpcyAwIG9yIHByZXZpb3VzbHkgZm9jdXNlZCBpdGVtIGlzIG5vdCBpbiBmaWx0ZXJlZCBsaXN0IGFueW1vcmVcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBmaWx0ZXJlZEl0ZW1zLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgICAgICAgIWZpbHRlcmVkSXRlbXMuc29tZShpdGVtID0+IGl0ZW0uaWQgPT09IGZvY3VzZWRJdGVtSWQpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0Rm9jdXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBtb3ZlIHNjcm9sbGluZyBidXR0b24gaW50byB2aWV3IHRvIGVuZCBvZiBxdWV1ZSwgc28gdGhhdCBET00gY2FuIGJlIHVwZGF0ZWQgZmlyc3RcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zY3JvbGxCdXR0b25JbnRvVmlldyhmb2N1c2VkSXRlbUlkKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2Nyb2xsQnV0dG9uSW50b1ZpZXcoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZmlsdGVyZWRJdGVtcyQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoaXRlbXMgPT4ge1xuICAgICAgY29uc3QgZm9jdXNJdGVtSW5kZXggPSBpdGVtcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmlkID09PSBpZCk7XG4gICAgICBjb25zdCBmb2N1c2VkQnV0dG9uID0gdGhpcy5idXR0b25zLnRvQXJyYXkoKVtmb2N1c0l0ZW1JbmRleF07XG5cbiAgICAgIGlmIChmb2N1c2VkQnV0dG9uKSB7XG4gICAgICAgIGZvY3VzZWRCdXR0b24ubmF0aXZlRWxlbWVudC5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcid9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright 2015-2020 Ritense BV, the Netherlands.
|
|
3
|
-
*
|
|
4
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
import { CommonModule } from '@angular/common';
|
|
17
|
-
import { NgModule } from '@angular/core';
|
|
18
|
-
import { ReactiveFormsModule } from '@angular/forms';
|
|
19
|
-
import { SearchableDropdownComponent } from './searchable-dropdown.component';
|
|
20
|
-
export class SearchableDropdownModule {
|
|
21
|
-
}
|
|
22
|
-
SearchableDropdownModule.decorators = [
|
|
23
|
-
{ type: NgModule, args: [{
|
|
24
|
-
declarations: [SearchableDropdownComponent],
|
|
25
|
-
imports: [CommonModule, ReactiveFormsModule],
|
|
26
|
-
exports: [SearchableDropdownComponent]
|
|
27
|
-
},] }
|
|
28
|
-
];
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2020 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { CommonModule } from '@angular/common';
|
|
17
|
+
import { NgModule } from '@angular/core';
|
|
18
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
19
|
+
import { SearchableDropdownComponent } from './searchable-dropdown.component';
|
|
20
|
+
export class SearchableDropdownModule {
|
|
21
|
+
}
|
|
22
|
+
SearchableDropdownModule.decorators = [
|
|
23
|
+
{ type: NgModule, args: [{
|
|
24
|
+
declarations: [SearchableDropdownComponent],
|
|
25
|
+
imports: [CommonModule, ReactiveFormsModule],
|
|
26
|
+
exports: [SearchableDropdownComponent],
|
|
27
|
+
},] }
|
|
28
|
+
];
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS1kcm9wZG93bi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiRDovV29ya3NwYWNlL3ZhbHRpbW8vdmFsdGltby1mcm9udGVuZC1saWJyYXJpZXMvcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9zZWFyY2hhYmxlLWRyb3Bkb3duL3NlYXJjaGFibGUtZHJvcGRvd24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFPNUUsTUFBTSxPQUFPLHdCQUF3Qjs7O1lBTHBDLFFBQVEsU0FBQztnQkFDUixZQUFZLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztnQkFDM0MsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLG1CQUFtQixDQUFDO2dCQUM1QyxPQUFPLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQzthQUN2QyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIwIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JlYWN0aXZlRm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7U2VhcmNoYWJsZURyb3Bkb3duQ29tcG9uZW50fSBmcm9tICcuL3NlYXJjaGFibGUtZHJvcGRvd24uY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbU2VhcmNoYWJsZURyb3Bkb3duQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZV0sXG4gIGV4cG9ydHM6IFtTZWFyY2hhYmxlRHJvcGRvd25Db21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hhYmxlRHJvcGRvd25Nb2R1bGUge31cbiJdfQ==
|