@unipin/angular-applet 18.7.6 → 18.7.7
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.
|
@@ -91,12 +91,7 @@ export class FilterComponent {
|
|
|
91
91
|
search() {
|
|
92
92
|
this.resetValue();
|
|
93
93
|
this.emitValue((k, v) => {
|
|
94
|
-
|
|
95
|
-
v.forEach((value) => this.processFilter(k, value));
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
this.processFilter(k, v);
|
|
99
|
-
}
|
|
94
|
+
this.processFilter(k, v);
|
|
100
95
|
});
|
|
101
96
|
if (this.activeFilter.length === 0) {
|
|
102
97
|
this.initialItems.clear();
|
|
@@ -105,14 +100,22 @@ export class FilterComponent {
|
|
|
105
100
|
this.close();
|
|
106
101
|
}
|
|
107
102
|
processFilter(key, value) {
|
|
103
|
+
let values;
|
|
108
104
|
if (Array.isArray(value)) {
|
|
109
|
-
|
|
105
|
+
values = value;
|
|
110
106
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
107
|
+
else {
|
|
108
|
+
values = [value];
|
|
109
|
+
}
|
|
110
|
+
const labels = values.map(v => {
|
|
111
|
+
const initialItem = this.initialItems.get(key)?.find(item => item.value === v);
|
|
112
|
+
return initialItem
|
|
113
|
+
? initialItem.label
|
|
114
|
+
: key.toLowerCase().includes('date') ? formatDate(v, 'dd MMM yyyy', 'en-US') : v;
|
|
115
|
+
});
|
|
116
|
+
const label = `${key}: ${labels.join(', ')}`;
|
|
117
|
+
const valueString = values.join(',');
|
|
118
|
+
this.activeFilter.push({ key, value: valueString, label });
|
|
116
119
|
}
|
|
117
120
|
add() {
|
|
118
121
|
const { key, value } = this.getValue(this.searchBox.nativeElement.value);
|
|
@@ -122,7 +125,7 @@ export class FilterComponent {
|
|
|
122
125
|
}
|
|
123
126
|
const i = this.activeFilter.findIndex(({ key: k }) => k === key);
|
|
124
127
|
if (i === -1)
|
|
125
|
-
this.activeFilter.
|
|
128
|
+
this.activeFilter.unshift({ label: `${key}:${value}`, key, value });
|
|
126
129
|
else {
|
|
127
130
|
this.activeFilter[i].key = key;
|
|
128
131
|
this.activeFilter[i].value = value;
|
|
@@ -146,7 +149,7 @@ export class FilterComponent {
|
|
|
146
149
|
getValue(value) {
|
|
147
150
|
const values = value.split(':');
|
|
148
151
|
if (values.length === 1)
|
|
149
|
-
return { key: this.config.fields[0].key, value: values[0] };
|
|
152
|
+
return { key: (Array.isArray(this.config.fields[0].key) ? this.config.fields[0].key[0] : this.config.fields[0].key), value: values[0] };
|
|
150
153
|
return { key: values[0], value: values[1] };
|
|
151
154
|
}
|
|
152
155
|
emitValue(extraAction) {
|
|
@@ -210,4 +213,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
210
213
|
type: ViewChild,
|
|
211
214
|
args: ['searchBox']
|
|
212
215
|
}] } });
|
|
213
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0osT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUFFLFdBQVcsRUFBcUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUloRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7QUFvQnJILE1BQU0sT0FBTyxlQUFlO0lBK0MxQixZQUNtQyxXQUFtQixFQUNqQyxFQUFxQixFQUNyQixXQUE4QjtRQUZoQixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUNqQyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixnQkFBVyxHQUFYLFdBQVcsQ0FBbUI7UUE3QnpCLGFBQVEsR0FBb0MsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVl6RSxTQUFJLEdBQW1CLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBTWxELGlCQUFZLEdBQW9ELEVBQUUsQ0FBQztRQU1uRSxpQkFBWSxHQUFvRCxJQUFJLEdBQUcs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NkI7cUJBQzlCOzswQkFrREUsU0FBUzsyQkFBQyxhQUFhO3lHQXpDUSxFQUFFO3NCQUFuQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFPUyxNQUFNO3NCQUF2QyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFPQyxRQUFRO3NCQUFqQyxNQUFNO2dCQU1vQyxTQUFTO3NCQUFuRCxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRyaWJ1dGUsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJb25pY01vZHVsZSwgUG9wb3ZlckNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBGaWx0ZXJDb25maWcgfSBmcm9tICcuL2ludGVyZmFjZXMvZmlsdGVyLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmlsdGVyRmllbGQgfSBmcm9tICcuL2ludGVyZmFjZXMvZmlsdGVyLWZpZWxkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGaWx0ZXJTZWFyY2hFdmVudCB9IGZyb20gJy4vaW50ZXJmYWNlcy9maWx0ZXItc2VhcmNoLWV2ZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBGb3JtSW5wdXRDb21wb25lbnQsIEZvcm1TZWxlY3RDb21wb25lbnQsIEZvcm1EYXRlQ29tcG9uZW50LCBGb3JtU2VhcmNoYWJsZVNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAndXAtZmlsdGVyJyxcbiAgc3R5bGVVcmw6ICAnLi9maWx0ZXIuY29tcG9uZW50LnNjc3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHsgXG4gICAgY2xhc3M6ICdkLWJsb2NrIHBvc2l0aW9uLXJlbGF0aXZlJyBcbiAgfSxcbiAgaW1wb3J0czogWyAgXG4gICAgSW9uaWNNb2R1bGUsXG4gICAgRm9ybURhdGVDb21wb25lbnQsXG4gICAgRm9ybUlucHV0Q29tcG9uZW50LFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgRm9ybVNlbGVjdENvbXBvbmVudCxcbiAgICBGb3JtU2VhcmNoYWJsZVNlbGVjdENvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgLyoqXG4gICAqIElucHV0IHZhcmlhYmxlIGZvciB0aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGZpbHRlci5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQHJlcXVpcmVkXG4gICAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBwdWJsaWMgaWQhOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElucHV0IHZhcmlhYmxlIGZvciB0aGUgY29uZmlndXJhdGlvbiBvYmplY3Qgc3BlY2lmeWluZyBmaWx0ZXIgZmllbGRzIGFuZCBtb2RlLlxuICAgKiBAdHlwZSB7RmlsdGVyQ29uZmlnfVxuICAgKiBAcmVxdWlyZWRcbiAgICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHB1YmxpYyBjb25maWchOiBGaWx0ZXJDb25maWc7XG5cbiAgLyoqXG4gICAqIE91dHB1dCBldmVudCBlbWl0dGVyIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIHBlcmZvcm1zIGEgc2VhcmNoLlxuICAgKiBFbWl0cyBhIGBGaWx0ZXJTZWFyY2hFdmVudGAgb2JqZWN0IHdpdGggc2VhcmNoIG1vZGUgYW5kIGNyaXRlcmlhIGRhdGEuXG4gICAqIEB0eXBlIHtFdmVudEVtaXR0ZXI8RmlsdGVyU2VhcmNoRXZlbnQ+fVxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBvblNlYXJjaDogRXZlbnRFbWl0dGVyPEZpbHRlclNlYXJjaEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogVmlld0NoaWxkIGRlY29yYXRvciB0byByZWZlcmVuY2UgdGhlIHNlYXJjaEJveCBlbGVtZW50IGluIHRoZSB0ZW1wbGF0ZS5cbiAgICogQHR5cGUge0VsZW1lbnRSZWZ9XG4gICAqL1xuICBAVmlld0NoaWxkKCdzZWFyY2hCb3gnKSBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VhcmNoQm94ITogRWxlbWVudFJlZjtcblxuICAvKipcbiAgICogRm9ybSBncm91cCBmb3IgbWFuYWdpbmcgZm9ybSBjb250cm9scy5cbiAgICogQHR5cGUge0Zvcm1Hcm91cDxhbnk+fVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGZvcm06IEZvcm1Hcm91cDxhbnk+ID0gbmV3IEZvcm1Hcm91cCh7fSk7XG5cbiAgLyoqXG4gICAqIEFycmF5IHRvIHN0b3JlIGFjdGl2ZSBmaWx0ZXIgY3JpdGVyaWEuXG4gICAqIEB0eXBlIHt7IGxhYmVsOiBzdHJpbmcsIGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIH1bXX1cbiAgICovXG4gIHB1YmxpYyBhY3RpdmVGaWx0ZXI6IHsgbGFiZWw6IHN0cmluZywga2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfVtdID0gW107XG5cbiAgLyoqXG4gICAqIE1hcCB0byBzdG9yZSBpbml0aWFsIGl0ZW1zIGZvciBlYWNoIGZpbHRlciBrZXkuXG4gICAqIEB0eXBlIHtNYXA8c3RyaW5nLCB7IGxhYmVsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfVtdPn1cbiAgICovXG4gIHB1YmxpYyBpbml0aWFsSXRlbXM6IE1hcDxzdHJpbmcsIHsgbGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9W10+ID0gbmV3IE1hcCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJykgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmcsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcG9wb3ZlckN0cmw6IFBvcG92ZXJDb250cm9sbGVyXG4gICkgeyB9IFxuXG4gIC8qKlxuICAgKiBMaWZlY3ljbGUgaG9vayB0byBpbml0aWFsaXplIHRoZSBjb21wb25lbnQuXG4gICAqIENyZWF0ZXMgZm9ybSBjb250cm9scyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgY29uZmlndXJhdGlvbiBhbmQgcmVzdG9yZXMgc2F2ZWQgZmlsdGVyIHN0YXRlLlxuICAgKi9cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWR7XG4gICAgY29uc3QgaXJyZXNvbHV0ZUtleXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBjb25zdCBpcnJlc29sdXRlVmFsdWUgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuXG4gICAgdGhpcy5jb25maWcuZmllbGRzLmZvckVhY2goKHsga2V5LCBpbml0aWFsVmFsdWUsIGluaXRpYWxJdGVtcywgaXNJcnJlc29sdXRlIH06IEZpbHRlckZpZWxkKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGtleSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAga2V5LmZvckVhY2goKGs6IHN0cmluZywgaTogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgdGhpcy5jcmVhdGVGb3JtQ29udHJvbChrLCBpbml0aWFsVmFsdWU/LmF0KGkpLCBpc0lycmVzb2x1dGUpO1xuXG4gICAgICAgICAgaWYgKGlzSXJyZXNvbHV0ZSkge1xuICAgICAgICAgICAgaXJyZXNvbHV0ZUtleXMuYWRkKGspO1xuICAgICAgICAgICAgaWYgKGluaXRpYWxWYWx1ZSkgaXJyZXNvbHV0ZVZhbHVlLnNldChrLCBpbml0aWFsVmFsdWU/LmF0KGkpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGluaXRpYWxJdGVtcykge1xuICAgICAgICAgIHRoaXMuaW5pdGlhbEl0ZW1zLnNldChrZXksIGluaXRpYWxJdGVtcyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNyZWF0ZUZvcm1Db250cm9sKGtleSwgaW5pdGlhbFZhbHVlLCBpc0lycmVzb2x1dGUpO1xuICAgICAgICBpZiAoaXNJcnJlc29sdXRlKSB7XG4gICAgICAgICAgaXJyZXNvbHV0ZUtleXMuYWRkKGtleSk7XG4gICAgICAgICAgaWYgKGluaXRpYWxWYWx1ZSkgaXJyZXNvbHV0ZVZhbHVlLnNldChrZXksIGluaXRpYWxWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgXG4gICAgY29uc3Qgc2F2ZWRTdGF0ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGAkeyB0aGlzLmlkIH1gKTtcbiAgICBpZiAoIXNhdmVkU3RhdGUpIHtcbiAgICAgIHRoaXMuZW1pdFZhbHVlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICBcbiAgICBjb25zdCBzdGF0ZSA9IEpTT04ucGFyc2Uoc2F2ZWRTdGF0ZSk7XG4gICAgaWYgKHN0YXRlLmluaXRpYWxJdGVtcykge1xuICAgICAgdGhpcy5pbml0aWFsSXRlbXMgPSBuZXcgTWFwKE9iamVjdC5lbnRyaWVzKHN0YXRlLmluaXRpYWxJdGVtcykpO1xuICAgIH1cbiAgXG4gICAgY29uc3QgZm9ybVZhbHVlcyA9IHN0YXRlLmZvcm1WYWx1ZXMgfHwge307XG4gICAgY29uc3QgY29tYlZhbHVlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgIE9iamVjdC5rZXlzKGZvcm1WYWx1ZXMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGlmICghaXJyZXNvbHV0ZUtleXMuaGFzKGtleSkpIGNvbWJWYWx1ZXNba2V5XSA9IGZvcm1WYWx1ZXNba2V5XTtcbiAgICAgIGVsc2Uge1xuICAgICAgICBjb21iVmFsdWVzW2tleV0gPSBpcnJlc29sdXRlVmFsdWUuZ2V0KGtleSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZShjb21iVmFsdWVzKTtcbiAgICBcbiAgICB0aGlzLmFjdGl2ZUZpbHRlciA9IFtdO1xuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZXMgPSB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKTtcbiAgICBPYmplY3Qua2V5cyhjdXJyZW50VmFsdWVzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZiAoY3VycmVudFZhbHVlc1trZXldKSB0aGlzLnByb2Nlc3NGaWx0ZXIoa2V5LCBjdXJyZW50VmFsdWVzW2tleV0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5lbWl0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIGZpbHRlciBwb3BvdmVyLlxuICAgKi9cbiAgcHVibGljIGNsb3NlKCk6IHZvaWR7IFxuICAgIHRoaXMucG9wb3ZlckN0cmwuZGlzbWlzcygpOyBcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgYWxsIGZpbHRlciBjcml0ZXJpYSwgbG9jYWxTdG9yYWdlLCBhbmQgdHJpZ2dlcnMgYSBzZWFyY2ggZXZlbnQgd2l0aCBudWxsIGRhdGEuXG4gICAqL1xuICBwdWJsaWMgY2xlYXIoKTogdm9pZHtcbiAgICB0aGlzLnJlc2V0VmFsdWUoKTtcbiAgICB0aGlzLmZvcm0ucmVzZXQoKTtcblxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGAkeyB0aGlzLmlkIH1gKTtcbiAgICB0aGlzLmluaXRpYWxJdGVtcy5jbGVhcigpO1xuICAgIHRoaXMub25TZWFyY2guZW1pdCh7IG1vZGU6IHRoaXMuY29uZmlnLm1vZGUsIGRhdGE6IG51bGwgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhIHNwZWNpZmljIGZpbHRlciBjcml0ZXJpYSBiYXNlZCBvbiBpdHMgaW5kZXguXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpIC0gSW5kZXggb2YgdGhlIGZpbHRlciBjcml0ZXJpYSB0byBiZSByZW1vdmVkLlxuICAgKi9cbiAgcHVibGljIHJlbW92ZUZpbHRlcihpOiBudW1iZXIpOiB2b2lke1xuICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLmFjdGl2ZUZpbHRlcltpXS5rZXldLnNldFZhbHVlKCcnKTtcbiAgICB0aGlzLmFjdGl2ZUZpbHRlci5zcGxpY2UoaSwgMSk7XG4gICBcbiAgICBpZiAodGhpcy5hY3RpdmVGaWx0ZXIubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZW1pdFZhbHVlKCk7XG4gIH1cbiAgLyoqXG4gICAqIEluaXRpYXRlcyBhIHNlYXJjaCBiYXNlZCBvbiB0aGUgYWN0aXZlIGZpbHRlciBjcml0ZXJpYSBhbmQgY2xlYXJzIHRoZSBzYXZlZCBmaWx0ZXIgc3RhdGUgaWYgdGhlcmUgYXJlIG5vIGFjdGl2ZSBmaWx0ZXJzLlxuICAgKi9cbiAgcHVibGljIHNlYXJjaCgpOiB2b2lke1xuICAgIHRoaXMucmVzZXRWYWx1ZSgpO1xuICAgIHRoaXMuZW1pdFZhbHVlKChrOiBzdHJpbmcsIHY6IGFueSkgPT4ge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodikpIHtcbiAgICAgICAgdi5mb3JFYWNoKCh2YWx1ZTogYW55KSA9PiB0aGlzLnByb2Nlc3NGaWx0ZXIoaywgdmFsdWUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucHJvY2Vzc0ZpbHRlcihrLCB2KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgXG4gICAgaWYgKHRoaXMuYWN0aXZlRmlsdGVyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5pbml0aWFsSXRlbXMuY2xlYXIoKTtcbiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGAke3RoaXMuaWR9YCk7XG4gICAgfVxuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuICBcbiAgcHJvdGVjdGVkIHByb2Nlc3NGaWx0ZXIoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lke1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgdmFsdWUgPSB2YWx1ZVswXTtcbiAgICB9XG4gICAgXG4gICAgY29uc3QgaW5pdGlhbEl0ZW0gPSB0aGlzLmluaXRpYWxJdGVtcy5nZXQoa2V5KT8uZmluZChpdGVtID0+IGl0ZW0udmFsdWUgPT09IHZhbHVlKTtcbiAgICBjb25zdCBsYWJlbCA9IGluaXRpYWxJdGVtXG4gICAgICA/IGAkeyBrZXkgfTogJHsgaW5pdGlhbEl0ZW0ubGFiZWwgfWBcbiAgICAgIDogYCR7IGtleSB9OiAkeyBrZXkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnZGF0ZScpPyBmb3JtYXREYXRlKHZhbHVlLCAnZGQgTU1NIHl5eXknLCAnZW4tVVMnKSA6IHZhbHVlIH1gO1xuICBcbiAgICB0aGlzLmFjdGl2ZUZpbHRlci5wdXNoKHsga2V5LCB2YWx1ZSwgbGFiZWwgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBmaWx0ZXIgY3JpdGVyaWEgYmFzZWQgb24gdGhlIHVzZXIgaW5wdXQuXG4gICAqL1xuICBwdWJsaWMgYWRkKCk6IHZvaWR7XG4gICAgY29uc3QgeyBrZXksIHZhbHVlIH0gPSB0aGlzLmdldFZhbHVlKHRoaXMuc2VhcmNoQm94Lm5hdGl2ZUVsZW1lbnQudmFsdWUpO1xuICAgIGlmICh0aGlzLmNvbmZpZy5maWVsZHMuZmluZEluZGV4KCh7IGtleTogayB9KSA9PiBrID09PSBrZXkpID09PSAtMSkge1xuICAgICAgdGhpcy5zZWFyY2hCb3gubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGkgPSB0aGlzLmFjdGl2ZUZpbHRlci5maW5kSW5kZXgoKHsga2V5OiBrIH0pID0+IGsgPT09IGtleSk7XG4gICAgaWYgKGkgPT09IC0xKSB0aGlzLmFjdGl2ZUZpbHRlci5wdXNoKHsgbGFiZWw6IGAkeyBrZXkgfTokeyB2YWx1ZSB9YCwga2V5LCB2YWx1ZSB9KTtcbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuYWN0aXZlRmlsdGVyW2ldLmtleSA9IGtleTtcbiAgICAgIHRoaXMuYWN0aXZlRmlsdGVyW2ldLnZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLmFjdGl2ZUZpbHRlcltpXS5sYWJlbCA9IGAkeyBrZXkgfTokeyB2YWx1ZSB9YDtcbiAgICB9XG5cbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7IFtrZXldOiB2YWx1ZSB9KTtcbiAgICB0aGlzLnNlYXJjaEJveC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgdGhpcy5lbWl0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNlaXZlIHRoZSBpbml0aWFsSXRlbXMgZm9ybSBzZWFyY2hhYmxlIG9yIHNlbGVjdCBjb21wb25lbnQgYW5kIGFwcGx5IHRoZW0gdG8gdGhlIGluaXRpYWxJdGVtcyBtYXAgdG8gYmUgdXNlZCBhZ2FpbiBieSBzZWFyY2hhYmxlIG9yIHNlbGVjdCBjb21wb25lbnRcbiAgICogd2hlbiBpdCBpbml0aWFsaXplZCBhZ2Fpbi5cbiAgICogQHBhcmFtIHthbnl9IGl0ZW0gLSBUaGUgaW5pdGlhbCBpdGVtcyByZWNlaXZlZCBmcm9tIHRoZSBzZWFyY2FibGUgb3Igc2VsZWN0IGNvbXBvbmVudC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFRoZSBrZXkgYXNzb2NpYXRlZCB3aXRoIHRoZSBpbml0aWFsIGl0ZW1zLlxuICAgKi9cbiAgcHVibGljIGFwcGx5SW5pdGlhbEl0ZW1zKGl0ZW06IGFueSwga2V5OiBzdHJpbmcpOiB2b2lkeyBcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoaXRlbSkpIHtcbiAgICAgIHRoaXMuaW5pdGlhbEl0ZW1zID0gdGhpcy5pbml0aWFsSXRlbXMuc2V0KGtleSwgWyBpdGVtIF0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaW5pdGlhbEl0ZW1zID0gdGhpcy5pbml0aWFsSXRlbXMuc2V0KGtleSwgaXRlbSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBhY3RpdmUgZmlsdGVyIGFuZCBjbGVhcnMgdGhlIHNlYXJjaCBib3guXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVzZXRWYWx1ZSgpOiB2b2lke1xuICAgIHRoaXMuYWN0aXZlRmlsdGVyLmxlbmd0aCA9IDA7XG4gICAgdGhpcy5zZWFyY2hCb3gubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlcyB0aGUgaW5wdXQgdmFsdWUgYW5kIHJldHVybnMgYSBrZXktdmFsdWUgcGFpci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gSW5wdXQgdmFsdWUgdG8gYmUgcGFyc2VkLlxuICAgKiBAcmV0dXJucyB7eyBrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9fSAtIEtleS12YWx1ZSBwYWlyIGV4dHJhY3RlZCBmcm9tIHRoZSBpbnB1dCB2YWx1ZS5cbiAgICovXG4gIHByb3RlY3RlZCBnZXRWYWx1ZSh2YWx1ZTogc3RyaW5nKTogeyBrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9e1xuICAgIGNvbnN0IHZhbHVlczogc3RyaW5nW10gPSB2YWx1ZS5zcGxpdCgnOicpO1xuXG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDEpIHJldHVybiB7IGtleTogPHN0cmluZz4gdGhpcy5jb25maWcuZmllbGRzWzBdLmtleSwgdmFsdWU6IHZhbHVlc1swXSB9O1xuICAgIHJldHVybiB7IGtleTogdmFsdWVzWzBdLCB2YWx1ZTogdmFsdWVzWzFdIH07XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgdGhlIHNlYXJjaCBldmVudCBiYXNlZCBvbiB0aGUgZm9ybSB2YWx1ZXMuXG4gICAqIEludm9rZXMgYW4gZXh0cmEgYWN0aW9uIGlmIHByb3ZpZGVkIGFuZCBzYXZlcyB0aGUgc3RhdGUgdG8gbG9jYWxTdG9yYWdlLlxuICAgKiBAcGFyYW0geyhrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4gdm9pZH0gW2V4dHJhQWN0aW9uXSAtIE9wdGlvbmFsIGV4dHJhIGFjdGlvbiB0byBiZSBpbnZva2VkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGVtaXRWYWx1ZShleHRyYUFjdGlvbj86IChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWR7XG4gICAgbGV0IGZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBjb25zdCBmID0gdGhpcy5mb3JtLmdldFJhd1ZhbHVlKCk7XG4gICAgY29uc3QgZGF0YTogeyBbazogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICBcbiAgICBPYmplY3Qua2V5cyhmKS5mb3JFYWNoKChrOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICghZltrXSkgcmV0dXJuO1xuICAgICAgXG4gICAgICBmbGFnID0gdHJ1ZTtcbiAgICAgIGRhdGFba10gPSBmW2tdO1xuICAgICAgZXh0cmFBY3Rpb24/LihrLCBmW2tdKTtcbiAgICB9KTtcbiAgICB0aGlzLm9uU2VhcmNoLmVtaXQoeyBtb2RlOiB0aGlzLmNvbmZpZy5tb2RlLCBkYXRhOiBmbGFnPyBkYXRhIDogbnVsbCB9KTtcbiAgICBcbiAgICB0aGlzLnNhdmVTdGF0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBmb3JtIGNvbnRyb2wgZm9yIGEgZ2l2ZW4ga2V5IGFuZCBzZXRzIGl0cyBpbml0aWFsIHZhbHVlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gS2V5IGZvciB0aGUgZm9ybSBjb250cm9sLlxuICAgKiBAcGFyYW0geyp9IFt2YWxdIC0gSW5pdGlhbCB2YWx1ZSBmb3IgdGhlIGZvcm0gY29udHJvbC5cbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVGb3JtQ29udHJvbChrZXk6IHN0cmluZywgdmFsPzogYW55LCBpc0lycmVzb2x1dGU/OiBib29sZWFuKTogdm9pZHtcbiAgICB0aGlzLmZvcm0uYWRkQ29udHJvbChrZXksIG5ldyBGb3JtQ29udHJvbCgnJykpO1xuXG4gICAgaWYgKHZhbCkge1xuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW2tleV0uc2V0VmFsdWUodmFsKTtcbiAgICAgIHRoaXMucHJvY2Vzc0ZpbHRlcihrZXksIHZhbCk7XG5cbiAgICAgIGlmICghaXNJcnJlc29sdXRlKSB7XG4gICAgICAgIHRoaXMuc2F2ZVN0YXRlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHNhdmVTdGF0ZSgpOiB2b2lke1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxuICAgICAgYCR7IHRoaXMuaWQgfWAsIFxuICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBhY3RpdmVGaWx0ZXI6IHRoaXMuYWN0aXZlRmlsdGVyLFxuICAgICAgICBpbml0aWFsSXRlbXM6IE9iamVjdC5mcm9tRW50cmllcyh0aGlzLmluaXRpYWxJdGVtcyksXG4gICAgICAgIGZvcm1WYWx1ZXM6IHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpXG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiIsIjxpb24taWNvbiBuYW1lPVwic2VhcmNoXCIgY2xhc3M9XCJmcy00IHBvc2l0aW9uLWFic29sdXRlXCIgLz5cblxuPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZm9ybS1jb250cm9sIHBzLTUgcHktMCBwZS0wIGdhcC0zXCI+XG4gICAgQGlmIChhY3RpdmVGaWx0ZXIubGVuZ3RoID4gMCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtZ3Jvdy0xIGZsZXgtc2hyaW5rLTAgdGFnLWNvbnRhaW5lciBnYXAtMiB0ZXh0LW5vd3JhcCBvdmVyZmxvdy1hdXRvXCI+XG4gICAgICAgICAgICBAZm9yIChpdGVtIG9mIGFjdGl2ZUZpbHRlcjsgdHJhY2sgaXRlbS5rZXk7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhZy1pdGVtIHAtMSByb3VuZGVkIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdXNlci1zZWxlY3Qtbm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNsb3NlXCIgY2xhc3M9XCJwZS0xIG1lLTEgY3Vyc29yLXBvaW50ZXIgdGV4dC1wcmltYXJ5XCIgKGNsaWNrKT1cInJlbW92ZUZpbHRlcihpKTtcIiAvPlxuICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDxpbnB1dCAjc2VhcmNoQm94IHR5cGU9XCJzZWFyY2hcIiBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyIH19XCIgY2xhc3M9XCJmbGV4LXNocmluay0xIGJvcmRlci0wIGZvcm0tY29udHJvbCBwcy0wIHB5LTJcIiBbY2xhc3MuYWR2XT1cImNvbmZpZy5tb2RlID09PSAnYWR2YW5jZWQnXCIgKGtleXVwLmVudGVyKT1cImFkZCgpO1wiIC8+XG48L2Rpdj5cblxuQGlmIChjb25maWcubW9kZSA9PT0gJ2FkdmFuY2VkJykge1xuICAgIDxpb24taWNvbiBuYW1lPVwiZmlsdGVyXCIgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBmcy00IGN1cnNvci1wb2ludGVyXCIgaWQ9XCJmaWx0ZXIte3sgaWQgfX1cIiAvPlxuICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2VcIiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIGZzLTQgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiY2xlYXIoKTtcIiAvPlxuICAgIFxuICAgIDxpb24tcG9wb3ZlciB0cmlnZ2VyPVwiZmlsdGVyLXt7IGlkIH19XCIgdHJpZ2dlckFjdGlvbj1cImNsaWNrXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZmlsdGVyIG92ZXJmbG93LWF1dG9cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1zaHJpbmstMCBib3JkZXItYm90dG9tIHAtMSBwZS00IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b25zPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gc2l6ZT1cInNtYWxsXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJjbG9zZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgICAgIFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtNSBmdy1tZWRpdW1cIj5BZHZhbmNlZCBGaWx0ZXI8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgXG4gICAgICAgICAgICAgICAgPGZvcm0gY2xhc3M9XCJmbGV4LWdyb3ctMSBvdmVyZmxvdy1hdXRvIHB4LTRcIiBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoYyBvZiBjb25maWcuZmllbGRzOyB0cmFjayBjLmtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgQHN3aXRjaCAoYy50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1cC1pbnB1dCB0eXBlPVwibnVtYmVyXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJteS00XCIgbGFiZWw9XCJ7eyBjLmxhYmVsIH19XCIgZm9ybUNvbnRyb2xOYW1lPVwie3sgYy5rZXkgfX1cIiAvPiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ2NoZWNrYm94Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jaGVja2JveCBsYWJlbFBsYWNlbWVudD1cImVuZFwiIGZvcm1Db250cm9sTmFtZT1cInt7IGMua2V5IH19XCI+e3sgYy5sYWJlbCB9fTwvaW9uLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ2RhdGUtcmFuZ2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTMgbXktNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVwLWRhdGUgY2xhc3M9XCJmbGV4LWdyb3ctMVwiIG5hbWU9XCJmaWx0ZXItZnJvbVwiIGxhYmVsPVwie3sgYy5sYWJlbFswXSB9fVwiIGZvcm1Db250cm9sTmFtZT1cInt7IGMua2V5WzBdIH19XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1cC1kYXRlIGNsYXNzPVwiZmxleC1ncm93LTFcIiBuYW1lPVwiZmlsdGVyLXRvXCIgbGFiZWw9XCJ7eyBjLmxhYmVsWzFdIH19XCIgZm9ybUNvbnRyb2xOYW1lPVwie3sgYy5rZXlbMV0gfX1cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ3NlbGVjdCcpIHsgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1cC1zZWxlY3QgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm15LTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cInt7IGMubGFiZWwgfX1cIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7IGMua2V5IH19XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiYy5vcHRpb25zIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwiYy5tdWx0aXBsZSB8fCBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgnc2VhcmNoYWJsZS1zZWxlY3QnKSB7IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXAtc2VhcmNoYWJsZS1zZWxlY3QgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm15LTRcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJ7eyBjLmxhYmVsIH19XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7eyBjLmtleSB9fVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3F1ZXJ5RnVuY109XCJjLmdldE9wdGlvbnMhXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5pdGlhbEl0ZW1zXT1cImMub3B0aW9ucyEgfHwgaW5pdGlhbEl0ZW1zLmdldChjLmtleS50b1N0cmluZygpKSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW211bHRpcGxlXT1cImMubXVsdGlwbGUgfHwgZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cImFwcGx5SW5pdGlhbEl0ZW1zKCRldmVudCwgYy5rZXkudG9TdHJpbmcoKSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGRlZmF1bHQgeyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVwLWlucHV0IHR5cGU9XCJ0ZXh0XCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJteS00XCIgbGFiZWw9XCJ7eyBjLmxhYmVsIH19XCIgZm9ybUNvbnRyb2xOYW1lPVwie3sgYy5rZXkgfX1cIiAvPiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgIFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LXNocmluay0wIHB5LTMgcHgtNCBib3JkZXItdG9wIGQtZmxleCBnYXAtM1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCIgY29sb3I9XCJzZWNvbmRhcnlcIiAoY2xpY2spPVwiZm9ybS5yZXNldCgpO1wiPlJlc2V0PC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCIgY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInNlYXJjaCgpO1wiPlNlYXJjaDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICA8L2lvbi1wb3BvdmVyPiAgICBcbn1cbiJdfQ==
|
|
216
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0osT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUFFLFdBQVcsRUFBcUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUloRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7QUFvQnJILE1BQU0sT0FBTyxlQUFlO0lBK0MxQixZQUNtQyxXQUFtQixFQUNqQyxFQUFxQixFQUNyQixXQUE4QjtRQUZoQixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUNqQyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixnQkFBVyxHQUFYLFdBQVcsQ0FBbUI7UUE3QnpCLGFBQVEsR0FBb0MsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVl6RSxTQUFJLEdBQW1CLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBTWxELGlCQUFZLEdBQW9ELEVBQUUsQ0FBQztRQU1uRSxpQkFBWSxHQUFvRCxJQUFJLEdBQUcs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Q2xCLG1CQUFtQiw2ckJBQ25CLG1CQUFtQixpTUFDbkIsNkJBQTZCOzs0RkFHcEIsZUFBZTtrQkFsQjNCLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLFdBQVcsbUJBR0osdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDSixLQUFLLEVBQUUsMkJBQTJCO3FCQUNuQyxXQUNRO3dCQUNQLFdBQVc7d0JBQ1gsaUJBQWlCO3dCQUNqQixrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQiw2QkFBNkI7cUJBQzlCOzswQkFrREUsU0FBUzsyQkFBQyxhQUFhO3lHQXpDUSxFQUFFO3NCQUFuQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFPUyxNQUFNO3NCQUF2QyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFPQyxRQUFRO3NCQUFqQyxNQUFNO2dCQU1vQyxTQUFTO3NCQUFuRCxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRyaWJ1dGUsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJb25pY01vZHVsZSwgUG9wb3ZlckNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBGaWx0ZXJDb25maWcgfSBmcm9tICcuL2ludGVyZmFjZXMvZmlsdGVyLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmlsdGVyRmllbGQgfSBmcm9tICcuL2ludGVyZmFjZXMvZmlsdGVyLWZpZWxkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGaWx0ZXJTZWFyY2hFdmVudCB9IGZyb20gJy4vaW50ZXJmYWNlcy9maWx0ZXItc2VhcmNoLWV2ZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBGb3JtSW5wdXRDb21wb25lbnQsIEZvcm1TZWxlY3RDb21wb25lbnQsIEZvcm1EYXRlQ29tcG9uZW50LCBGb3JtU2VhcmNoYWJsZVNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAndXAtZmlsdGVyJyxcbiAgc3R5bGVVcmw6ICAnLi9maWx0ZXIuY29tcG9uZW50LnNjc3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHsgXG4gICAgY2xhc3M6ICdkLWJsb2NrIHBvc2l0aW9uLXJlbGF0aXZlJyBcbiAgfSxcbiAgaW1wb3J0czogWyAgXG4gICAgSW9uaWNNb2R1bGUsXG4gICAgRm9ybURhdGVDb21wb25lbnQsXG4gICAgRm9ybUlucHV0Q29tcG9uZW50LFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgRm9ybVNlbGVjdENvbXBvbmVudCxcbiAgICBGb3JtU2VhcmNoYWJsZVNlbGVjdENvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgLyoqXG4gICAqIElucHV0IHZhcmlhYmxlIGZvciB0aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGZpbHRlci5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQHJlcXVpcmVkXG4gICAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBwdWJsaWMgaWQhOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElucHV0IHZhcmlhYmxlIGZvciB0aGUgY29uZmlndXJhdGlvbiBvYmplY3Qgc3BlY2lmeWluZyBmaWx0ZXIgZmllbGRzIGFuZCBtb2RlLlxuICAgKiBAdHlwZSB7RmlsdGVyQ29uZmlnfVxuICAgKiBAcmVxdWlyZWRcbiAgICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHB1YmxpYyBjb25maWchOiBGaWx0ZXJDb25maWc7XG5cbiAgLyoqXG4gICAqIE91dHB1dCBldmVudCBlbWl0dGVyIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIHBlcmZvcm1zIGEgc2VhcmNoLlxuICAgKiBFbWl0cyBhIGBGaWx0ZXJTZWFyY2hFdmVudGAgb2JqZWN0IHdpdGggc2VhcmNoIG1vZGUgYW5kIGNyaXRlcmlhIGRhdGEuXG4gICAqIEB0eXBlIHtFdmVudEVtaXR0ZXI8RmlsdGVyU2VhcmNoRXZlbnQ+fVxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBvblNlYXJjaDogRXZlbnRFbWl0dGVyPEZpbHRlclNlYXJjaEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogVmlld0NoaWxkIGRlY29yYXRvciB0byByZWZlcmVuY2UgdGhlIHNlYXJjaEJveCBlbGVtZW50IGluIHRoZSB0ZW1wbGF0ZS5cbiAgICogQHR5cGUge0VsZW1lbnRSZWZ9XG4gICAqL1xuICBAVmlld0NoaWxkKCdzZWFyY2hCb3gnKSBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VhcmNoQm94ITogRWxlbWVudFJlZjtcblxuICAvKipcbiAgICogRm9ybSBncm91cCBmb3IgbWFuYWdpbmcgZm9ybSBjb250cm9scy5cbiAgICogQHR5cGUge0Zvcm1Hcm91cDxhbnk+fVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGZvcm06IEZvcm1Hcm91cDxhbnk+ID0gbmV3IEZvcm1Hcm91cCh7fSk7XG5cbiAgLyoqXG4gICAqIEFycmF5IHRvIHN0b3JlIGFjdGl2ZSBmaWx0ZXIgY3JpdGVyaWEuXG4gICAqIEB0eXBlIHt7IGxhYmVsOiBzdHJpbmcsIGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIH1bXX1cbiAgICovXG4gIHB1YmxpYyBhY3RpdmVGaWx0ZXI6IHsgbGFiZWw6IHN0cmluZywga2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfVtdID0gW107XG5cbiAgLyoqXG4gICAqIE1hcCB0byBzdG9yZSBpbml0aWFsIGl0ZW1zIGZvciBlYWNoIGZpbHRlciBrZXkuXG4gICAqIEB0eXBlIHtNYXA8c3RyaW5nLCB7IGxhYmVsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfVtdPn1cbiAgICovXG4gIHB1YmxpYyBpbml0aWFsSXRlbXM6IE1hcDxzdHJpbmcsIHsgbGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9W10+ID0gbmV3IE1hcCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJykgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmcsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcG9wb3ZlckN0cmw6IFBvcG92ZXJDb250cm9sbGVyXG4gICkgeyB9IFxuXG4gIC8qKlxuICAgKiBMaWZlY3ljbGUgaG9vayB0byBpbml0aWFsaXplIHRoZSBjb21wb25lbnQuXG4gICAqIENyZWF0ZXMgZm9ybSBjb250cm9scyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgY29uZmlndXJhdGlvbiBhbmQgcmVzdG9yZXMgc2F2ZWQgZmlsdGVyIHN0YXRlLlxuICAgKi9cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWR7XG4gICAgY29uc3QgaXJyZXNvbHV0ZUtleXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBjb25zdCBpcnJlc29sdXRlVmFsdWUgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuXG4gICAgdGhpcy5jb25maWcuZmllbGRzLmZvckVhY2goKHsga2V5LCBpbml0aWFsVmFsdWUsIGluaXRpYWxJdGVtcywgaXNJcnJlc29sdXRlIH06IEZpbHRlckZpZWxkKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGtleSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAga2V5LmZvckVhY2goKGs6IHN0cmluZywgaTogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgdGhpcy5jcmVhdGVGb3JtQ29udHJvbChrLCBpbml0aWFsVmFsdWU/LmF0KGkpLCBpc0lycmVzb2x1dGUpO1xuXG4gICAgICAgICAgaWYgKGlzSXJyZXNvbHV0ZSkge1xuICAgICAgICAgICAgaXJyZXNvbHV0ZUtleXMuYWRkKGspO1xuICAgICAgICAgICAgaWYgKGluaXRpYWxWYWx1ZSkgaXJyZXNvbHV0ZVZhbHVlLnNldChrLCBpbml0aWFsVmFsdWU/LmF0KGkpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGluaXRpYWxJdGVtcykge1xuICAgICAgICAgIHRoaXMuaW5pdGlhbEl0ZW1zLnNldChrZXksIGluaXRpYWxJdGVtcyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNyZWF0ZUZvcm1Db250cm9sKGtleSwgaW5pdGlhbFZhbHVlLCBpc0lycmVzb2x1dGUpO1xuICAgICAgICBpZiAoaXNJcnJlc29sdXRlKSB7XG4gICAgICAgICAgaXJyZXNvbHV0ZUtleXMuYWRkKGtleSk7XG4gICAgICAgICAgaWYgKGluaXRpYWxWYWx1ZSkgaXJyZXNvbHV0ZVZhbHVlLnNldChrZXksIGluaXRpYWxWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IHNhdmVkU3RhdGUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShgJHsgdGhpcy5pZCB9YCk7XG4gICAgaWYgKCFzYXZlZFN0YXRlKSB7XG4gICAgICB0aGlzLmVtaXRWYWx1ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXRlID0gSlNPTi5wYXJzZShzYXZlZFN0YXRlKTtcbiAgICBpZiAoc3RhdGUuaW5pdGlhbEl0ZW1zKSB7XG4gICAgICB0aGlzLmluaXRpYWxJdGVtcyA9IG5ldyBNYXAoT2JqZWN0LmVudHJpZXMoc3RhdGUuaW5pdGlhbEl0ZW1zKSk7XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybVZhbHVlcyA9IHN0YXRlLmZvcm1WYWx1ZXMgfHwge307XG4gICAgY29uc3QgY29tYlZhbHVlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgIE9iamVjdC5rZXlzKGZvcm1WYWx1ZXMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGlmICghaXJyZXNvbHV0ZUtleXMuaGFzKGtleSkpIGNvbWJWYWx1ZXNba2V5XSA9IGZvcm1WYWx1ZXNba2V5XTtcbiAgICAgIGVsc2Uge1xuICAgICAgICBjb21iVmFsdWVzW2tleV0gPSBpcnJlc29sdXRlVmFsdWUuZ2V0KGtleSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZShjb21iVmFsdWVzKTtcbiAgICBcbiAgICB0aGlzLmFjdGl2ZUZpbHRlciA9IFtdO1xuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZXMgPSB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKTtcbiAgICBPYmplY3Qua2V5cyhjdXJyZW50VmFsdWVzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZiAoY3VycmVudFZhbHVlc1trZXldKSB0aGlzLnByb2Nlc3NGaWx0ZXIoa2V5LCBjdXJyZW50VmFsdWVzW2tleV0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5lbWl0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIGZpbHRlciBwb3BvdmVyLlxuICAgKi9cbiAgcHVibGljIGNsb3NlKCk6IHZvaWR7IFxuICAgIHRoaXMucG9wb3ZlckN0cmwuZGlzbWlzcygpOyBcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgYWxsIGZpbHRlciBjcml0ZXJpYSwgbG9jYWxTdG9yYWdlLCBhbmQgdHJpZ2dlcnMgYSBzZWFyY2ggZXZlbnQgd2l0aCBudWxsIGRhdGEuXG4gICAqL1xuICBwdWJsaWMgY2xlYXIoKTogdm9pZHtcbiAgICB0aGlzLnJlc2V0VmFsdWUoKTtcbiAgICB0aGlzLmZvcm0ucmVzZXQoKTtcblxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGAkeyB0aGlzLmlkIH1gKTtcbiAgICB0aGlzLmluaXRpYWxJdGVtcy5jbGVhcigpO1xuICAgIHRoaXMub25TZWFyY2guZW1pdCh7IG1vZGU6IHRoaXMuY29uZmlnLm1vZGUsIGRhdGE6IG51bGwgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhIHNwZWNpZmljIGZpbHRlciBjcml0ZXJpYSBiYXNlZCBvbiBpdHMgaW5kZXguXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpIC0gSW5kZXggb2YgdGhlIGZpbHRlciBjcml0ZXJpYSB0byBiZSByZW1vdmVkLlxuICAgKi9cbiAgcHVibGljIHJlbW92ZUZpbHRlcihpOiBudW1iZXIpOiB2b2lke1xuICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLmFjdGl2ZUZpbHRlcltpXS5rZXldLnNldFZhbHVlKCcnKTtcbiAgICB0aGlzLmFjdGl2ZUZpbHRlci5zcGxpY2UoaSwgMSk7XG4gICBcbiAgICBpZiAodGhpcy5hY3RpdmVGaWx0ZXIubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZW1pdFZhbHVlKCk7XG4gIH1cbiAgLyoqXG4gICAqIEluaXRpYXRlcyBhIHNlYXJjaCBiYXNlZCBvbiB0aGUgYWN0aXZlIGZpbHRlciBjcml0ZXJpYSBhbmQgY2xlYXJzIHRoZSBzYXZlZCBmaWx0ZXIgc3RhdGUgaWYgdGhlcmUgYXJlIG5vIGFjdGl2ZSBmaWx0ZXJzLlxuICAgKi9cbiAgcHVibGljIHNlYXJjaCgpOiB2b2lke1xuICAgIHRoaXMucmVzZXRWYWx1ZSgpO1xuICAgIHRoaXMuZW1pdFZhbHVlKChrOiBzdHJpbmcsIHY6IGFueSkgPT4ge1xuICAgICAgdGhpcy5wcm9jZXNzRmlsdGVyKGssIHYpO1xuICAgIH0pO1xuICBcbiAgICBpZiAodGhpcy5hY3RpdmVGaWx0ZXIubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmluaXRpYWxJdGVtcy5jbGVhcigpO1xuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oYCR7dGhpcy5pZH1gKTtcbiAgICB9XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHByb2Nlc3NGaWx0ZXIoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lke1xuICAgIGxldCB2YWx1ZXM6IHN0cmluZ1tdO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgdmFsdWVzID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlcyA9IFt2YWx1ZV07XG4gICAgfVxuXG4gICAgY29uc3QgbGFiZWxzID0gdmFsdWVzLm1hcCh2ID0+IHtcbiAgICAgIGNvbnN0IGluaXRpYWxJdGVtID0gdGhpcy5pbml0aWFsSXRlbXMuZ2V0KGtleSk/LmZpbmQoaXRlbSA9PiBpdGVtLnZhbHVlID09PSB2KTtcbiAgICAgIHJldHVybiBpbml0aWFsSXRlbVxuICAgICAgICA/IGluaXRpYWxJdGVtLmxhYmVsXG4gICAgICAgIDoga2V5LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2RhdGUnKT8gZm9ybWF0RGF0ZSh2LCAnZGQgTU1NIHl5eXknLCAnZW4tVVMnKSA6IHY7XG4gICAgfSk7XG5cbiAgICBjb25zdCBsYWJlbCA9IGAkeyBrZXkgfTogJHtsYWJlbHMuam9pbignLCAnKX1gO1xuICAgIGNvbnN0IHZhbHVlU3RyaW5nID0gdmFsdWVzLmpvaW4oJywnKTtcblxuICAgIHRoaXMuYWN0aXZlRmlsdGVyLnB1c2goeyBrZXksIHZhbHVlOiB2YWx1ZVN0cmluZywgbGFiZWwgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBmaWx0ZXIgY3JpdGVyaWEgYmFzZWQgb24gdGhlIHVzZXIgaW5wdXQuXG4gICAqL1xuICBwdWJsaWMgYWRkKCk6IHZvaWR7XG4gICAgY29uc3QgeyBrZXksIHZhbHVlIH0gPSB0aGlzLmdldFZhbHVlKHRoaXMuc2VhcmNoQm94Lm5hdGl2ZUVsZW1lbnQudmFsdWUpO1xuICAgIGlmICh0aGlzLmNvbmZpZy5maWVsZHMuZmluZEluZGV4KCh7IGtleTogayB9KSA9PiBrID09PSBrZXkpID09PSAtMSkge1xuICAgICAgdGhpcy5zZWFyY2hCb3gubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGkgPSB0aGlzLmFjdGl2ZUZpbHRlci5maW5kSW5kZXgoKHsga2V5OiBrIH0pID0+IGsgPT09IGtleSk7XG4gICAgaWYgKGkgPT09IC0xKSB0aGlzLmFjdGl2ZUZpbHRlci51bnNoaWZ0KHsgbGFiZWw6IGAkeyBrZXkgfTokeyB2YWx1ZSB9YCwga2V5LCB2YWx1ZSB9KTtcbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuYWN0aXZlRmlsdGVyW2ldLmtleSA9IGtleTtcbiAgICAgIHRoaXMuYWN0aXZlRmlsdGVyW2ldLnZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLmFjdGl2ZUZpbHRlcltpXS5sYWJlbCA9IGAkeyBrZXkgfTokeyB2YWx1ZSB9YDtcbiAgICB9XG5cbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7IFtrZXldOiB2YWx1ZSB9KTtcbiAgICB0aGlzLnNlYXJjaEJveC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgdGhpcy5lbWl0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNlaXZlIHRoZSBpbml0aWFsSXRlbXMgZm9ybSBzZWFyY2hhYmxlIG9yIHNlbGVjdCBjb21wb25lbnQgYW5kIGFwcGx5IHRoZW0gdG8gdGhlIGluaXRpYWxJdGVtcyBtYXAgdG8gYmUgdXNlZCBhZ2FpbiBieSBzZWFyY2hhYmxlIG9yIHNlbGVjdCBjb21wb25lbnRcbiAgICogd2hlbiBpdCBpbml0aWFsaXplZCBhZ2Fpbi5cbiAgICogQHBhcmFtIHthbnl9IGl0ZW0gLSBUaGUgaW5pdGlhbCBpdGVtcyByZWNlaXZlZCBmcm9tIHRoZSBzZWFyY2FibGUgb3Igc2VsZWN0IGNvbXBvbmVudC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFRoZSBrZXkgYXNzb2NpYXRlZCB3aXRoIHRoZSBpbml0aWFsIGl0ZW1zLlxuICAgKi9cbiAgcHVibGljIGFwcGx5SW5pdGlhbEl0ZW1zKGl0ZW06IGFueSwga2V5OiBzdHJpbmcpOiB2b2lkeyBcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoaXRlbSkpIHtcbiAgICAgIHRoaXMuaW5pdGlhbEl0ZW1zID0gdGhpcy5pbml0aWFsSXRlbXMuc2V0KGtleSwgWyBpdGVtIF0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaW5pdGlhbEl0ZW1zID0gdGhpcy5pbml0aWFsSXRlbXMuc2V0KGtleSwgaXRlbSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBhY3RpdmUgZmlsdGVyIGFuZCBjbGVhcnMgdGhlIHNlYXJjaCBib3guXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVzZXRWYWx1ZSgpOiB2b2lke1xuICAgIHRoaXMuYWN0aXZlRmlsdGVyLmxlbmd0aCA9IDA7XG4gICAgdGhpcy5zZWFyY2hCb3gubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlcyB0aGUgaW5wdXQgdmFsdWUgYW5kIHJldHVybnMgYSBrZXktdmFsdWUgcGFpci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gSW5wdXQgdmFsdWUgdG8gYmUgcGFyc2VkLlxuICAgKiBAcmV0dXJucyB7eyBrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9fSAtIEtleS12YWx1ZSBwYWlyIGV4dHJhY3RlZCBmcm9tIHRoZSBpbnB1dCB2YWx1ZS5cbiAgICovXG4gIHByb3RlY3RlZCBnZXRWYWx1ZSh2YWx1ZTogc3RyaW5nKTogeyBrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9e1xuICAgIGNvbnN0IHZhbHVlczogc3RyaW5nW10gPSB2YWx1ZS5zcGxpdCgnOicpO1xuXG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDEpIHJldHVybiB7IGtleTogPHN0cmluZz4gKEFycmF5LmlzQXJyYXkodGhpcy5jb25maWcuZmllbGRzWzBdLmtleSk/IHRoaXMuY29uZmlnLmZpZWxkc1swXS5rZXlbMF0gOiB0aGlzLmNvbmZpZy5maWVsZHNbMF0ua2V5KSwgdmFsdWU6IHZhbHVlc1swXSB9O1xuICAgIHJldHVybiB7IGtleTogdmFsdWVzWzBdLCB2YWx1ZTogdmFsdWVzWzFdIH07XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgdGhlIHNlYXJjaCBldmVudCBiYXNlZCBvbiB0aGUgZm9ybSB2YWx1ZXMuXG4gICAqIEludm9rZXMgYW4gZXh0cmEgYWN0aW9uIGlmIHByb3ZpZGVkIGFuZCBzYXZlcyB0aGUgc3RhdGUgdG8gbG9jYWxTdG9yYWdlLlxuICAgKiBAcGFyYW0geyhrZXk6IHN0cmluZywgdmFsdWU6IGFueSkgPT4gdm9pZH0gW2V4dHJhQWN0aW9uXSAtIE9wdGlvbmFsIGV4dHJhIGFjdGlvbiB0byBiZSBpbnZva2VkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGVtaXRWYWx1ZShleHRyYUFjdGlvbj86IChrZXk6IHN0cmluZywgdmFsdWU6IGFueSkgPT4gdm9pZCk6IHZvaWR7XG4gICAgbGV0IGZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBjb25zdCBmID0gdGhpcy5mb3JtLmdldFJhd1ZhbHVlKCk7XG4gICAgY29uc3QgZGF0YTogeyBbazogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICBcbiAgICBPYmplY3Qua2V5cyhmKS5mb3JFYWNoKChrOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICghZltrXSkgcmV0dXJuO1xuICAgICAgXG4gICAgICBmbGFnID0gdHJ1ZTtcbiAgICAgIGRhdGFba10gPSBmW2tdO1xuICAgICAgZXh0cmFBY3Rpb24/LihrLCBmW2tdKTtcbiAgICB9KTtcbiAgICB0aGlzLm9uU2VhcmNoLmVtaXQoeyBtb2RlOiB0aGlzLmNvbmZpZy5tb2RlLCBkYXRhOiBmbGFnPyBkYXRhIDogbnVsbCB9KTtcbiAgICBcbiAgICB0aGlzLnNhdmVTdGF0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBmb3JtIGNvbnRyb2wgZm9yIGEgZ2l2ZW4ga2V5IGFuZCBzZXRzIGl0cyBpbml0aWFsIHZhbHVlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gS2V5IGZvciB0aGUgZm9ybSBjb250cm9sLlxuICAgKiBAcGFyYW0geyp9IFt2YWxdIC0gSW5pdGlhbCB2YWx1ZSBmb3IgdGhlIGZvcm0gY29udHJvbC5cbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVGb3JtQ29udHJvbChrZXk6IHN0cmluZywgdmFsPzogYW55LCBpc0lycmVzb2x1dGU/OiBib29sZWFuKTogdm9pZHtcbiAgICB0aGlzLmZvcm0uYWRkQ29udHJvbChrZXksIG5ldyBGb3JtQ29udHJvbCgnJykpO1xuXG4gICAgaWYgKHZhbCkge1xuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW2tleV0uc2V0VmFsdWUodmFsKTtcbiAgICAgIHRoaXMucHJvY2Vzc0ZpbHRlcihrZXksIHZhbCk7XG5cbiAgICAgIGlmICghaXNJcnJlc29sdXRlKSB7XG4gICAgICAgIHRoaXMuc2F2ZVN0YXRlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHNhdmVTdGF0ZSgpOiB2b2lke1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxuICAgICAgYCR7IHRoaXMuaWQgfWAsIFxuICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBhY3RpdmVGaWx0ZXI6IHRoaXMuYWN0aXZlRmlsdGVyLFxuICAgICAgICBpbml0aWFsSXRlbXM6IE9iamVjdC5mcm9tRW50cmllcyh0aGlzLmluaXRpYWxJdGVtcyksXG4gICAgICAgIGZvcm1WYWx1ZXM6IHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpXG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiIsIjxpb24taWNvbiBuYW1lPVwic2VhcmNoXCIgY2xhc3M9XCJmcy00IHBvc2l0aW9uLWFic29sdXRlXCIgLz5cblxuPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZm9ybS1jb250cm9sIHBzLTUgcHktMCBwZS0wIGdhcC0zXCI+XG4gICAgQGlmIChhY3RpdmVGaWx0ZXIubGVuZ3RoID4gMCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtZ3Jvdy0xIGZsZXgtc2hyaW5rLTAgdGFnLWNvbnRhaW5lciBnYXAtMiB0ZXh0LW5vd3JhcCBvdmVyZmxvdy1hdXRvXCI+XG4gICAgICAgICAgICBAZm9yIChpdGVtIG9mIGFjdGl2ZUZpbHRlcjsgdHJhY2sgaXRlbS5rZXk7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhZy1pdGVtIHAtMSByb3VuZGVkIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdXNlci1zZWxlY3Qtbm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNsb3NlXCIgY2xhc3M9XCJwZS0xIG1lLTEgY3Vyc29yLXBvaW50ZXIgdGV4dC1wcmltYXJ5XCIgKGNsaWNrKT1cInJlbW92ZUZpbHRlcihpKTtcIiAvPlxuICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDxpbnB1dCAjc2VhcmNoQm94IHR5cGU9XCJzZWFyY2hcIiBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyIH19XCIgY2xhc3M9XCJmbGV4LXNocmluay0xIGJvcmRlci0wIGZvcm0tY29udHJvbCBwcy0wIHB5LTJcIiBbY2xhc3MuYWR2XT1cImNvbmZpZy5tb2RlID09PSAnYWR2YW5jZWQnXCIgKGtleXVwLmVudGVyKT1cImFkZCgpO1wiIC8+XG48L2Rpdj5cblxuQGlmIChjb25maWcubW9kZSA9PT0gJ2FkdmFuY2VkJykge1xuICAgIDxpb24taWNvbiBuYW1lPVwiZmlsdGVyXCIgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBmcy00IGN1cnNvci1wb2ludGVyXCIgaWQ9XCJmaWx0ZXIte3sgaWQgfX1cIiAvPlxuICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2VcIiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIGZzLTQgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiY2xlYXIoKTtcIiAvPlxuICAgIFxuICAgIDxpb24tcG9wb3ZlciB0cmlnZ2VyPVwiZmlsdGVyLXt7IGlkIH19XCIgdHJpZ2dlckFjdGlvbj1cImNsaWNrXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZmlsdGVyIG92ZXJmbG93LWF1dG9cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1zaHJpbmstMCBib3JkZXItYm90dG9tIHAtMSBwZS00IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b25zPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gc2l6ZT1cInNtYWxsXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJjbG9zZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgICAgIFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtNSBmdy1tZWRpdW1cIj5BZHZhbmNlZCBGaWx0ZXI8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgXG4gICAgICAgICAgICAgICAgPGZvcm0gY2xhc3M9XCJmbGV4LWdyb3ctMSBvdmVyZmxvdy1hdXRvIHB4LTRcIiBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoYyBvZiBjb25maWcuZmllbGRzOyB0cmFjayBjLmtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgQHN3aXRjaCAoYy50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1cC1pbnB1dCB0eXBlPVwibnVtYmVyXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJteS00XCIgbGFiZWw9XCJ7eyBjLmxhYmVsIH19XCIgZm9ybUNvbnRyb2xOYW1lPVwie3sgYy5rZXkgfX1cIiAvPiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ2NoZWNrYm94Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jaGVja2JveCBsYWJlbFBsYWNlbWVudD1cImVuZFwiIGZvcm1Db250cm9sTmFtZT1cInt7IGMua2V5IH19XCI+e3sgYy5sYWJlbCB9fTwvaW9uLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ2RhdGUtcmFuZ2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTMgbXktNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVwLWRhdGUgY2xhc3M9XCJmbGV4LWdyb3ctMVwiIG5hbWU9XCJmaWx0ZXItZnJvbVwiIGxhYmVsPVwie3sgYy5sYWJlbFswXSB9fVwiIGZvcm1Db250cm9sTmFtZT1cInt7IGMua2V5WzBdIH19XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1cC1kYXRlIGNsYXNzPVwiZmxleC1ncm93LTFcIiBuYW1lPVwiZmlsdGVyLXRvXCIgbGFiZWw9XCJ7eyBjLmxhYmVsWzFdIH19XCIgZm9ybUNvbnRyb2xOYW1lPVwie3sgYy5rZXlbMV0gfX1cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ3NlbGVjdCcpIHsgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1cC1zZWxlY3QgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm15LTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cInt7IGMubGFiZWwgfX1cIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7IGMua2V5IH19XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiYy5vcHRpb25zIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwiYy5tdWx0aXBsZSB8fCBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgnc2VhcmNoYWJsZS1zZWxlY3QnKSB7IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXAtc2VhcmNoYWJsZS1zZWxlY3QgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm15LTRcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJ7eyBjLmxhYmVsIH19XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7eyBjLmtleSB9fVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3F1ZXJ5RnVuY109XCJjLmdldE9wdGlvbnMhXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5pdGlhbEl0ZW1zXT1cImMub3B0aW9ucyEgfHwgaW5pdGlhbEl0ZW1zLmdldChjLmtleS50b1N0cmluZygpKSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW211bHRpcGxlXT1cImMubXVsdGlwbGUgfHwgZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cImFwcGx5SW5pdGlhbEl0ZW1zKCRldmVudCwgYy5rZXkudG9TdHJpbmcoKSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGRlZmF1bHQgeyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVwLWlucHV0IHR5cGU9XCJ0ZXh0XCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJteS00XCIgbGFiZWw9XCJ7eyBjLmxhYmVsIH19XCIgZm9ybUNvbnRyb2xOYW1lPVwie3sgYy5rZXkgfX1cIiAvPiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgIFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LXNocmluay0wIHB5LTMgcHgtNCBib3JkZXItdG9wIGQtZmxleCBnYXAtM1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCIgY29sb3I9XCJzZWNvbmRhcnlcIiAoY2xpY2spPVwiZm9ybS5yZXNldCgpO1wiPlJlc2V0PC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCIgY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInNlYXJjaCgpO1wiPlNlYXJjaDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICA8L2lvbi1wb3BvdmVyPiAgICBcbn1cbiJdfQ==
|
|
@@ -2979,12 +2979,7 @@ class FilterComponent {
|
|
|
2979
2979
|
search() {
|
|
2980
2980
|
this.resetValue();
|
|
2981
2981
|
this.emitValue((k, v) => {
|
|
2982
|
-
|
|
2983
|
-
v.forEach((value) => this.processFilter(k, value));
|
|
2984
|
-
}
|
|
2985
|
-
else {
|
|
2986
|
-
this.processFilter(k, v);
|
|
2987
|
-
}
|
|
2982
|
+
this.processFilter(k, v);
|
|
2988
2983
|
});
|
|
2989
2984
|
if (this.activeFilter.length === 0) {
|
|
2990
2985
|
this.initialItems.clear();
|
|
@@ -2993,14 +2988,22 @@ class FilterComponent {
|
|
|
2993
2988
|
this.close();
|
|
2994
2989
|
}
|
|
2995
2990
|
processFilter(key, value) {
|
|
2991
|
+
let values;
|
|
2996
2992
|
if (Array.isArray(value)) {
|
|
2997
|
-
|
|
2993
|
+
values = value;
|
|
2998
2994
|
}
|
|
2999
|
-
|
|
3000
|
-
|
|
3001
|
-
|
|
3002
|
-
|
|
3003
|
-
|
|
2995
|
+
else {
|
|
2996
|
+
values = [value];
|
|
2997
|
+
}
|
|
2998
|
+
const labels = values.map(v => {
|
|
2999
|
+
const initialItem = this.initialItems.get(key)?.find(item => item.value === v);
|
|
3000
|
+
return initialItem
|
|
3001
|
+
? initialItem.label
|
|
3002
|
+
: key.toLowerCase().includes('date') ? formatDate(v, 'dd MMM yyyy', 'en-US') : v;
|
|
3003
|
+
});
|
|
3004
|
+
const label = `${key}: ${labels.join(', ')}`;
|
|
3005
|
+
const valueString = values.join(',');
|
|
3006
|
+
this.activeFilter.push({ key, value: valueString, label });
|
|
3004
3007
|
}
|
|
3005
3008
|
add() {
|
|
3006
3009
|
const { key, value } = this.getValue(this.searchBox.nativeElement.value);
|
|
@@ -3010,7 +3013,7 @@ class FilterComponent {
|
|
|
3010
3013
|
}
|
|
3011
3014
|
const i = this.activeFilter.findIndex(({ key: k }) => k === key);
|
|
3012
3015
|
if (i === -1)
|
|
3013
|
-
this.activeFilter.
|
|
3016
|
+
this.activeFilter.unshift({ label: `${key}:${value}`, key, value });
|
|
3014
3017
|
else {
|
|
3015
3018
|
this.activeFilter[i].key = key;
|
|
3016
3019
|
this.activeFilter[i].value = value;
|
|
@@ -3034,7 +3037,7 @@ class FilterComponent {
|
|
|
3034
3037
|
getValue(value) {
|
|
3035
3038
|
const values = value.split(':');
|
|
3036
3039
|
if (values.length === 1)
|
|
3037
|
-
return { key: this.config.fields[0].key, value: values[0] };
|
|
3040
|
+
return { key: (Array.isArray(this.config.fields[0].key) ? this.config.fields[0].key[0] : this.config.fields[0].key), value: values[0] };
|
|
3038
3041
|
return { key: values[0], value: values[1] };
|
|
3039
3042
|
}
|
|
3040
3043
|
emitValue(extraAction) {
|