axidio-styleguide-library1-v2 0.7.12 → 0.7.13

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.
@@ -81,58 +81,87 @@ export class DropdownComponent {
81
81
  }
82
82
  handleListHeaderClick(event, data, entireList) {
83
83
  this.handleListPanelClick(event);
84
- const updated = { ...this.selectedCompareBy };
85
- if (updated[data.name]) {
86
- delete updated[data.name];
84
+ if (this.dropdownHeaderName != 'Compare By' && !data.children) {
85
+ this.dropdownHeaderName = data.name;
86
+ this.isDropdownOpen = false;
87
+ if (this.dropdownHeaderName == 'Compare by')
88
+ this.setDropDownStatus();
89
+ else
90
+ sessionStorage.setItem('chartHeaderDropdown2', 'false');
91
+ this.selectedCompareBy = {};
92
+ }
93
+ let keysArray = Object.keys(this.selectedCompareBy);
94
+ if (!keysArray.length || !keysArray.includes(data.name)) {
95
+ this.selectedCompareBy[data.name] = data.children ? data.children : data;
96
+ }
97
+ else if (data.children) {
98
+ delete this.selectedCompareBy[data.name];
99
+ }
100
+ if (this.dropdownHeaderName != 'Compare by' &&
101
+ ((sessionStorage.getItem('selectedCompare2By') &&
102
+ sessionStorage.getItem('selectedCompare2By') != '{}' &&
103
+ JSON.stringify(this.selectedCompareBy) ==
104
+ sessionStorage.getItem('selectedCompare2By')) ||
105
+ (!sessionStorage.getItem('selectedCompare2By') &&
106
+ JSON.stringify(this.selectedCompareBy)
107
+ .toLowerCase()
108
+ .includes(this.dropdownHeaderName.toLowerCase())))) {
87
109
  }
88
110
  else {
89
- updated[data.name] = data.children ? [...data.children] : data;
111
+ this.selectedFromDropdown.emit({
112
+ compareByFilters: this.selectedCompareBy,
113
+ entireList: entireList,
114
+ });
115
+ }
116
+ if (this.dropdownHeaderName == 'Compare by' && data.children)
117
+ sessionStorage.setItem('selectedCompareBy', JSON.stringify(this.selectedCompareBy));
118
+ else {
119
+ sessionStorage.setItem('selectedCompare2By', JSON.stringify(this.selectedCompareBy));
90
120
  }
91
- this.selectedCompareBy = updated;
92
- this.selectedFromDropdown.emit({
93
- compareByFilters: this.selectedCompareBy,
94
- entireList,
95
- });
96
- sessionStorage.setItem(this.dropdownHeaderName === 'Compare by'
97
- ? 'selectedCompareBy'
98
- : 'selectedCompare2By', JSON.stringify(this.selectedCompareBy));
99
121
  }
100
122
  handleListChildrenClick(event, parent, child) {
101
123
  this.handleListPanelClick(event);
102
- const updated = { ...this.selectedCompareBy };
103
- const currentChildren = updated[parent.name]
104
- ? [...updated[parent.name]]
105
- : [];
106
- const index = currentChildren.findIndex(c => c.name === child.name);
107
- if (index === -1) {
108
- currentChildren.push(child);
109
- }
110
- else {
111
- currentChildren.splice(index, 1);
112
- }
113
- if (currentChildren.length > 0) {
114
- updated[parent.name] = currentChildren;
124
+ let keysArray = Object.keys(this.selectedCompareBy);
125
+ if (!keysArray.length || !keysArray.includes(parent.name)) {
126
+ this.selectedCompareBy[parent.name] = [child];
115
127
  }
116
128
  else {
117
- delete updated[parent.name];
129
+ /** check if the child is already present */
130
+ let childObjFound = this.selectedCompareBy[parent.name].find((childObj) => childObj.name === child.name);
131
+ if (!childObjFound) {
132
+ /**child not found */
133
+ this.selectedCompareBy[parent.name].push(child);
134
+ }
135
+ else {
136
+ /**child already selected - hence delete that child*/
137
+ this.selectedCompareBy[parent.name] = this.selectedCompareBy[parent.name].filter((childObj) => childObj.name !== child.name);
138
+ if (this.selectedCompareBy[parent.name] &&
139
+ !this.selectedCompareBy[parent.name].length) {
140
+ delete this.selectedCompareBy[parent.name];
141
+ }
142
+ }
118
143
  }
119
- this.selectedCompareBy = updated;
120
144
  this.selectedFromDropdown.emit({
121
145
  compareByFilters: this.selectedCompareBy,
122
- entireList: parent.children,
146
+ entireList: parent?.children,
123
147
  });
124
- sessionStorage.setItem(this.dropdownHeaderName === 'Compare by'
125
- ? 'selectedCompareBy'
126
- : 'selectedCompare2By', JSON.stringify(this.selectedCompareBy));
148
+ if (this.dropdownHeaderName == 'Compare by' && parent.children)
149
+ sessionStorage.setItem('selectedCompareBy', JSON.stringify(this.selectedCompareBy));
150
+ else {
151
+ sessionStorage.setItem('selectedCompare2By', JSON.stringify(this.selectedCompareBy));
152
+ }
127
153
  }
128
154
  handleIfPresent(data) {
129
- const selected = this.selectedCompareBy[data.name];
130
- if (!selected)
131
- return false;
132
- if (Array.isArray(selected) && data.children) {
133
- return selected.length === data.children.length;
155
+ let parentObj = this.dropdownData.find((obj) => obj.name === data.name);
156
+ if (this.selectedCompareBy[data.name] &&
157
+ parentObj.children &&
158
+ parentObj.children.length == this.selectedCompareBy[data.name]?.length) {
159
+ return true;
134
160
  }
135
- return true;
161
+ if (this.selectedCompareBy[data.name] && !parentObj.children) {
162
+ return true;
163
+ }
164
+ return false;
136
165
  }
137
166
  handleIfChildPresent(parent, child) {
138
167
  if (!Object.keys(this.selectedCompareBy).length) {
@@ -208,4 +237,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
208
237
  type: HostListener,
209
238
  args: ['document:click', ['$event']]
210
239
  }] } });
211
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXhpZGlvLXN0eWxlZ3VpZGUtbGlicmFyeS9zcmMvbGliL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F4aWRpby1zdHlsZWd1aWRlLWxpYnJhcnkvc3JjL2xpYi9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7OztBQVF2QixNQUFNLE9BQU8saUJBQWlCO0lBVTVCO1FBVFMsdUJBQWtCLEdBQVcsWUFBWSxDQUFDO1FBQzFDLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBQ3pDLHNCQUFpQixHQUFXLEVBQUUsQ0FBQztRQUV0QixzQkFBaUIsR0FBWSxJQUFJLENBQUM7UUFFakMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDcEMseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN6RCw2QkFBd0IsR0FBUSxFQUFFLENBQUM7UUFFakMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFDRCxXQUFXO1FBQ1QsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUNELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLGNBQWMsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDeEUsSUFBSSxjQUFjLEVBQUUsQ0FB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Q3BDLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxxQkFBcUI7Z0JBQ2xDLEtBQUssQ0FBQyxHQUFHLElBQUksc0JBQXNCLENBQUMsRUFDdEMsQ0FBQztZQUNELElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBQ3JDLENBQUM7SUFDSCxDQUFDO0lBQ0QseUJBQXlCLENBQUMsVUFBa0IsRUFBRSxLQUFZO1FBQ3hELEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV4QixJQUFJLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN2RCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsRUFBRSxDQUFDO1FBQ3JDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLHdCQUF3QixHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUVELGNBQWMsQ0FBQyxPQUFPLENBQ3BCLDBCQUEwQixFQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUM5QyxDQUFDO0lBQ0osQ0FBQzsrR0FuT1UsaUJBQWlCO21HQUFqQixpQkFBaUIseVhDbEI5QixvbkZBMERBOzs0RkR4Q2EsaUJBQWlCO2tCQU43QixTQUFTOytCQUNFLGNBQWMsaUJBR1QsaUJBQWlCLENBQUMsSUFBSTt3REFHNUIsa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUksU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBd0VQLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWRyb3Bkb3duJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Ryb3Bkb3duLmNvbXBvbmVudC5sZXNzJywgJy4uL2NvbW1vbi1zdHlsZXMubGVzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEcm9wZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBkcm9wZG93bkhlYWRlck5hbWU6IHN0cmluZyA9ICdDb21wYXJlIGJ5JztcclxuICBASW5wdXQoKSBpc0Ryb3Bkb3duT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNlbGVjdGVkQ29tcGFyZUJ5OiBvYmplY3QgPSB7fTtcclxuICBASW5wdXQoKSBkcm9wZG93bkRhdGE6IGFueTtcclxuICBASW5wdXQoKSBpc0NoZWNrYm94VmlzaWJsZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBPdXRwdXQoKSBkZENsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRGcm9tRHJvcGRvd24gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBjaGlsZERyb3Bkb3duTGlzdFZpc2libGU6IGFueSA9IFtdO1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3N0b3JhZ2UnLCB0aGlzLm9uU3RvcmFnZUNoYW5nZS5iaW5kKHRoaXMpKTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc3RvcmFnZScsIHRoaXMub25TdG9yYWdlQ2hhbmdlKTtcclxuICB9XHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgbGV0IHZhbHVlRnJvbVN0b3JlID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnY2hpbGREcm9wZG93bkxpc3RWaXNpYmxlJyk7XHJcbiAgICBpZiAodmFsdWVGcm9tU3RvcmUpIHtcclxuICAgICAgdGhpcy5jaGlsZERyb3Bkb3duTGlzdFZpc2libGUgPSBKU09OLnBhcnNlKHZhbHVlRnJvbVN0b3JlKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHNlbGVjdGVkQ29tcGFyZUJ5RnJvbVN0b3RhZ2UgPVxyXG4gICAgICBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdzZWxlY3RlZENvbXBhcmVCeScpO1xyXG4gICAgaWYgKFxyXG4gICAgICBzZWxlY3RlZENvbXBhcmVCeUZyb21TdG90YWdlICYmXHJcbiAgICAgIHRoaXMuZHJvcGRvd25IZWFkZXJOYW1lID09ICdDb21wYXJlIGJ5J1xyXG4gICAgKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbXBhcmVCeSA9IEpTT04ucGFyc2Uoc2VsZWN0ZWRDb21wYXJlQnlGcm9tU3RvdGFnZSk7XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnRXJyb3IgcGFyc2luZyBzZWxlY3RlZENvbXBhcmVCeSBmcm9tIHNlc3Npb25TdG9yYWdlOicsIGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBzZWxlY3RlZENvbXBhcmUyQnlGcm9tU3RvdGFnZSA9XHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3NlbGVjdGVkQ29tcGFyZTJCeScpO1xyXG4gICAgaWYgKFxyXG4gICAgICBzZWxlY3RlZENvbXBhcmUyQnlGcm9tU3RvdGFnZSAmJlxyXG4gICAgICB0aGlzLmRyb3Bkb3duSGVhZGVyTmFtZSAhPSAnQ29tcGFyZSBieSdcclxuICAgICkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb21wYXJlQnkgPSBKU09OLnBhcnNlKHNlbGVjdGVkQ29tcGFyZTJCeUZyb21TdG90YWdlKTtcclxuICAgICAgICB0aGlzLmRyb3Bkb3duSGVhZGVyTmFtZSA9XHJcbiAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLnNlbGVjdGVkQ29tcGFyZUJ5KSAmJlxyXG4gICAgICAgICAgT2JqZWN0LmtleXModGhpcy5zZWxlY3RlZENvbXBhcmVCeSkubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICA/IE9iamVjdC5rZXlzKHRoaXMuc2VsZWN0ZWRDb21wYXJlQnkpWzBdXHJcbiAgICAgICAgICAgIDogJyc7XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnRXJyb3IgcGFyc2luZyBzZWxlY3RlZENvbXBhcmVCeSBmcm9tIHNlc3Npb25TdG9yYWdlOicsIGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2NoYXJ0SGVhZGVyRHJvcGRvd24nKSAmJlxyXG4gICAgICB0aGlzLmRyb3Bkb3duSGVhZGVyTmFtZSA9PSAnQ29tcGFyZSBieSdcclxuICAgIClcclxuICAgICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9XHJcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnY2hhcnRIZWFkZXJEcm9wZG93bicpID09ICd0cnVlJztcclxuICB9XHJcbiAgaGVhZGVyQ2xpY2tlZChldmVudCkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmRkQ2xpY2tlZC5lbWl0KHRydWUpO1xyXG4gICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9ICF0aGlzLmlzRHJvcGRvd25PcGVuO1xyXG4gICAgaWYgKHRoaXMuZHJvcGRvd25IZWFkZXJOYW1lID09ICdDb21wYXJlIGJ5JykgdGhpcy5zZXREcm9wRG93blN0YXR1cygpO1xyXG4gICAgZWxzZSB0aGlzLnNldERyb3BEb3duMlN0YXR1cygpO1xyXG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnaXNQZXJmb3JtYW5jZUNsb3NlZCcsICd0cnVlJyk7XHJcbiAgfVxyXG4gIHNldERyb3BEb3duU3RhdHVzKCkge1xyXG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgJ2NoYXJ0SGVhZGVyRHJvcGRvd24nLFxyXG4gICAgICB0aGlzLmlzRHJvcGRvd25PcGVuLnRvU3RyaW5nKClcclxuICAgICk7XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdjaGFydEhlYWRlckRyb3Bkb3duMicsICdmYWxzZScpO1xyXG4gIH1cclxuICBzZXREcm9wRG93bjJTdGF0dXMoKSB7XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdjaGFydEhlYWRlckRyb3Bkb3duJywgJ2ZhbHNlJyk7XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFxyXG4gICAgICAnY2hhcnRIZWFkZXJEcm9wZG93bjInLFxyXG4gICAgICB0aGlzLmlzRHJvcGRvd25PcGVuLnRvU3RyaW5nKClcclxuICAgICk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBjbGlja291dCgpIHtcclxuICAgIGlmICh0aGlzLmlzRHJvcGRvd25PcGVuKSB7XHJcbiAgICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGlsZERyb3Bkb3duTGlzdFZpc2libGUgPSBbXTtcclxuICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnY2hpbGREcm9wZG93bkxpc3RWaXNpYmxlJywgSlNPTi5zdHJpbmdpZnkoW10pKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmRyb3Bkb3duSGVhZGVyTmFtZSAhPSAnQ29tcGFyZSBieScpXHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2NoYXJ0SGVhZGVyRHJvcGRvd24yJywgJ2ZhbHNlJyk7XHJcbiAgICBpZiAodGhpcy5kcm9wZG93bkhlYWRlck5hbWUgPT0gJ0NvbXBhcmUgYnknKSB0aGlzLnNldERyb3BEb3duU3RhdHVzKCk7XHJcbiAgfVxyXG4gIGhhbmRsZUxpc3RIZWFkZXJDbGljayhldmVudCwgZGF0YSwgZW50aXJlTGlzdCkge1xyXG4gICAgdGhpcy5oYW5kbGVMaXN0UGFuZWxDbGljayhldmVudCk7XHJcblxyXG4gICAgY29uc3QgdXBkYXRlZCA9IHsgLi4udGhpcy5zZWxlY3RlZENvbXBhcmVCeSB9O1xyXG5cclxuICAgIGlmICh1cGRhdGVkW2RhdGEubmFtZV0pIHtcclxuICAgICAgZGVsZXRlIHVwZGF0ZWRbZGF0YS5uYW1lXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHVwZGF0ZWRbZGF0YS5uYW1lXSA9IGRhdGEuY2hpbGRyZW4gPyBbLi4uZGF0YS5jaGlsZHJlbl0gOiBkYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRDb21wYXJlQnkgPSB1cGRhdGVkO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRGcm9tRHJvcGRvd24uZW1pdCh7XHJcbiAgICAgIGNvbXBhcmVCeUZpbHRlcnM6IHRoaXMuc2VsZWN0ZWRDb21wYXJlQnksXHJcbiAgICAgIGVudGlyZUxpc3QsXHJcbiAgICB9KTtcclxuXHJcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFxyXG4gICAgICB0aGlzLmRyb3Bkb3duSGVhZGVyTmFtZSA9PT0gJ0NvbXBhcmUgYnknXHJcbiAgICAgICAgPyAnc2VsZWN0ZWRDb21wYXJlQnknXHJcbiAgICAgICAgOiAnc2VsZWN0ZWRDb21wYXJlMkJ5JyxcclxuICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5zZWxlY3RlZENvbXBhcmVCeSlcclxuICAgICk7XHJcbiAgfVxyXG4gIGhhbmRsZUxpc3RDaGlsZHJlbkNsaWNrKGV2ZW50LCBwYXJlbnQsIGNoaWxkKSB7XHJcbiAgICB0aGlzLmhhbmRsZUxpc3RQYW5lbENsaWNrKGV2ZW50KTtcclxuXHJcbiAgICBjb25zdCB1cGRhdGVkID0geyAuLi50aGlzLnNlbGVjdGVkQ29tcGFyZUJ5IH07XHJcbiAgICBjb25zdCBjdXJyZW50Q2hpbGRyZW4gPSB1cGRhdGVkW3BhcmVudC5uYW1lXVxyXG4gICAgICA/IFsuLi51cGRhdGVkW3BhcmVudC5uYW1lXV1cclxuICAgICAgOiBbXTtcclxuXHJcbiAgICBjb25zdCBpbmRleCA9IGN1cnJlbnRDaGlsZHJlbi5maW5kSW5kZXgoYyA9PiBjLm5hbWUgPT09IGNoaWxkLm5hbWUpO1xyXG5cclxuICAgIGlmIChpbmRleCA9PT0gLTEpIHtcclxuICAgICAgY3VycmVudENoaWxkcmVuLnB1c2goY2hpbGQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY3VycmVudENoaWxkcmVuLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGN1cnJlbnRDaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHVwZGF0ZWRbcGFyZW50Lm5hbWVdID0gY3VycmVudENoaWxkcmVuO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZGVsZXRlIHVwZGF0ZWRbcGFyZW50Lm5hbWVdO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRDb21wYXJlQnkgPSB1cGRhdGVkO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRGcm9tRHJvcGRvd24uZW1pdCh7XHJcbiAgICAgIGNvbXBhcmVCeUZpbHRlcnM6IHRoaXMuc2VsZWN0ZWRDb21wYXJlQnksXHJcbiAgICAgIGVudGlyZUxpc3Q6IHBhcmVudC5jaGlsZHJlbixcclxuICAgIH0pO1xyXG5cclxuICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oXHJcbiAgICAgIHRoaXMuZHJvcGRvd25IZWFkZXJOYW1lID09PSAnQ29tcGFyZSBieSdcclxuICAgICAgICA/ICdzZWxlY3RlZENvbXBhcmVCeSdcclxuICAgICAgICA6ICdzZWxlY3RlZENvbXBhcmUyQnknLFxyXG4gICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkQ29tcGFyZUJ5KVxyXG4gICAgKTtcclxuICB9XHJcbmhhbmRsZUlmUHJlc2VudChkYXRhKSB7XHJcbiAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkQ29tcGFyZUJ5W2RhdGEubmFtZV07XHJcblxyXG4gIGlmICghc2VsZWN0ZWQpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgaWYgKEFycmF5LmlzQXJyYXkoc2VsZWN0ZWQpICYmIGRhdGEuY2hpbGRyZW4pIHtcclxuICAgIHJldHVybiBzZWxlY3RlZC5sZW5ndGggPT09IGRhdGEuY2hpbGRyZW4ubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHRydWU7XHJcbn1cclxuICBoYW5kbGVJZkNoaWxkUHJlc2VudChwYXJlbnQsIGNoaWxkKSB7XHJcbiAgICBpZiAoIU9iamVjdC5rZXlzKHRoaXMuc2VsZWN0ZWRDb21wYXJlQnkpLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBsZXQgY2hpbGRPYmpGb3VuZCA9XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb21wYXJlQnlbcGFyZW50Lm5hbWVdICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb21wYXJlQnlbcGFyZW50Lm5hbWVdLmZpbmQoXHJcbiAgICAgICAgKGNoaWxkT2JqKSA9PiBjaGlsZE9iai5uYW1lID09PSBjaGlsZC5uYW1lXHJcbiAgICAgICk7XHJcbiAgICBpZiAoY2hpbGRPYmpGb3VuZCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgaGFuZGxlTGlzdFBhbmVsQ2xpY2soZXZlbnQpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuICBnZXREcm9wZG93bkhlYWRlck5hbWUoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuZHJvcGRvd25IZWFkZXJOYW1lICE9ICdDb21wYXJlIGJ5JyAmJlxyXG4gICAgICBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdvbkhvdmVyZWRFbGVtZW50Q2xpY2tlZCcpXHJcbiAgICApIHtcclxuICAgICAgY29uc3QgcmVxU3RyaW5nID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnb25Ib3ZlcmVkRWxlbWVudENsaWNrZWQnKTtcclxuICAgICAgaWYgKHJlcVN0cmluZykgdGhpcy5kcm9wZG93bkhlYWRlck5hbWUgPSByZXFTdHJpbmcucmVwbGFjZSgvXCIvZywgJycpO1xyXG4gICAgICByZXR1cm4gdGhpcy5kcm9wZG93bkhlYWRlck5hbWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5kcm9wZG93bkhlYWRlck5hbWU7XHJcbiAgfVxyXG4gIGdldERyb3Bkb3duVmlzaWJpbGl0eVN0YXR1cygpIHtcclxuICAgIGlmIChcclxuICAgICAgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnY2hhcnRIZWFkZXJEcm9wZG93bicpICYmXHJcbiAgICAgIHRoaXMuZHJvcGRvd25IZWFkZXJOYW1lID09ICdDb21wYXJlIGJ5J1xyXG4gICAgKVxyXG4gICAgICB0aGlzLmlzRHJvcGRvd25PcGVuID1cclxuICAgICAgICBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdjaGFydEhlYWRlckRyb3Bkb3duJykgPT0gJ3RydWUnO1xyXG4gICAgZWxzZSBpZiAoXHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2NoYXJ0SGVhZGVyRHJvcGRvd24yJykgJiZcclxuICAgICAgdGhpcy5kcm9wZG93bkhlYWRlck5hbWUgIT0gJ0NvbXBhcmUgYnknXHJcbiAgICApXHJcbiAgICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPVxyXG4gICAgICAgIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2NoYXJ0SGVhZGVyRHJvcGRvd24yJykgPT0gJ3RydWUnO1xyXG4gICAgcmV0dXJuIHRoaXMuaXNEcm9wZG93bk9wZW47XHJcbiAgfVxyXG4gIHByaXZhdGUgb25TdG9yYWdlQ2hhbmdlKGV2ZW50OiBTdG9yYWdlRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmIChcclxuICAgICAgZXZlbnQuc3RvcmFnZUFyZWEgPT09IHNlc3Npb25TdG9yYWdlICYmXHJcbiAgICAgIChldmVudC5rZXkgPT09ICdjaGFydEhlYWRlckRyb3Bkb3duJyB8fFxyXG4gICAgICAgIGV2ZW50LmtleSA9PSAnY2hhcnRIZWFkZXJEcm9wZG93bjInKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuZ2V0RHJvcGRvd25WaXNpYmlsaXR5U3RhdHVzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGhhbmRsZVNob3dPckhpZGVDaGlsZExpc3QocGFyZW50TmFtZTogc3RyaW5nLCBldmVudDogRXZlbnQpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGlmICh0aGlzLmNoaWxkRHJvcGRvd25MaXN0VmlzaWJsZS5pbmNsdWRlcyhwYXJlbnROYW1lKSkge1xyXG4gICAgICB0aGlzLmNoaWxkRHJvcGRvd25MaXN0VmlzaWJsZSA9IFtdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jaGlsZERyb3Bkb3duTGlzdFZpc2libGUgPSBbcGFyZW50TmFtZV07XHJcbiAgICB9XHJcblxyXG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgJ2NoaWxkRHJvcGRvd25MaXN0VmlzaWJsZScsXHJcbiAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuY2hpbGREcm9wZG93bkxpc3RWaXNpYmxlKVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImRyb3Bkb3duLWNvbnRhaW5lclwiPlxyXG4gIDxidXR0b24gY2xhc3M9XCJ3ZWVrbHljaGFydHNfX3dlZWtidXR0b24gdGV4dC1hbGlnbi1sZWZ0XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJoZWFkZXJDbGlja2VkKCRldmVudClcIlxyXG4gICAgW25nQ2xhc3NdPVwieyAnd2Vla2x5Y2hhcnRzX19ib3JkZXJub3JtYWwnOiAhaXNEcm9wZG93bk9wZW4gfVwiPlxyXG4gICAge3sgZ2V0RHJvcGRvd25IZWFkZXJOYW1lKCkgfX1cclxuICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tc2VsZWN0LWNhcmV0XCI+XHJcbiAgICAgIDxpIGNsYXNzPVwiYmlcIiBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAnYmktY2FyZXQtZG93bi1maWxsJzogIWlzRHJvcGRvd25PcGVuLFxyXG4gICAgICAgICAgJ2JpLWNhcmV0LXVwLWZpbGwnOiBpc0Ryb3Bkb3duT3BlblxyXG4gICAgICAgIH1cIj48L2k+XHJcbiAgICA8L2Rpdj5cclxuICA8L2J1dHRvbj5cclxuXHJcbiAgPHVsIGNsYXNzPVwiZHJvcGRvd25fX2xpc3RcIiAqbmdJZj1cImdldERyb3Bkb3duVmlzaWJpbGl0eVN0YXR1cygpXCIgKGNsaWNrKT1cImhhbmRsZUxpc3RQYW5lbENsaWNrKCRldmVudClcIj5cclxuICAgIDxsaSAqbmdGb3I9XCJsZXQgZGF0YSBvZiBkcm9wZG93bkRhdGFcIiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCIgXHJcbiAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAnd2Vla2x5Y2hhcnRzLWFjdGl2ZSc6IGRhdGEubmFtZSA9PT0gZHJvcGRvd25IZWFkZXJOYW1lLFxyXG4gICAgICAgICd3ZWVrbHljaGFydHMtaW5hY3RpdmUnOiBkYXRhLm5hbWUgIT09IGRyb3Bkb3duSGVhZGVyTmFtZVxyXG4gICAgICB9XCI+XHJcblxyXG4gICAgICA8IS0tIFBhcmVudCBJdGVtIC0tPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImRpc3BsYXktZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgZ2FwLTJcIiAoY2xpY2spPVwiaGFuZGxlTGlzdEhlYWRlckNsaWNrKCRldmVudCwgZGF0YSwgZHJvcGRvd25EYXRhKVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmFcIiBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgJ2ZhLWNoZWNrLXNxdWFyZSc6IGhhbmRsZUlmUHJlc2VudChkYXRhKSxcclxuICAgICAgICAgICAgICAnZmEtc3F1YXJlLW8nOiAhaGFuZGxlSWZQcmVzZW50KGRhdGEpXHJcbiAgICAgICAgICAgIH1cIiAqbmdJZj1cImlzQ2hlY2tib3hWaXNpYmxlXCI+PC9pPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibGlzdC10ZXh0IGZvbnQtc2l6ZS0zXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2ZvbnQtd2VpZ2h0LTYwMCc6IGRhdGEubmFtZSA9PT0gZHJvcGRvd25IZWFkZXJOYW1lIH1cIj5cclxuICAgICAgICAgIHt7IGRhdGEubmFtZSB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgPCEtLSBFeHBhbmQvQ29sbGFwc2UgSWNvbiAtLT5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInN1Ymxpc3QtYXJyb3cgbGliLWRpc3BsYXktZmxleFwiICpuZ0lmPVwiZGF0YS5jaGlsZHJlblwiIFxyXG4gICAgICAgICAgKGNsaWNrKT1cImhhbmRsZVNob3dPckhpZGVDaGlsZExpc3QoZGF0YS5uYW1lLCAkZXZlbnQpXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZvbnQtc2l6ZS0xIGZvbnQtd2VpZ2h0LTYwMFwiIFxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgJ2ZhLWFuZ2xlLXJpZ2h0JzogIWNoaWxkRHJvcGRvd25MaXN0VmlzaWJsZS5pbmNsdWRlcyhkYXRhLm5hbWUpLFxyXG4gICAgICAgICAgICAgICdmYS1hbmdsZS1kb3duJzogY2hpbGREcm9wZG93bkxpc3RWaXNpYmxlLmluY2x1ZGVzKGRhdGEubmFtZSlcclxuICAgICAgICAgICAgfVwiPjwvaT5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgIDwhLS0gQ2hpbGRyZW4gTGlzdCAtLT5cclxuICAgICAgPHVsIGNsYXNzPVwiZHJvcGRvd24tc3VibGlzdCBsaWItbWwtMjAgbGliLWxpc3QtY2hpbGRyZW5cIlxyXG4gICAgICAgICpuZ0lmPVwiZGF0YS5jaGlsZHJlbiAmJiBjaGlsZERyb3Bkb3duTGlzdFZpc2libGUuaW5jbHVkZXMoZGF0YS5uYW1lKVwiPlxyXG4gICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgZGF0YS5jaGlsZHJlblwiIFxyXG4gICAgICAgICAgICBjbGFzcz1cImRpc3BsYXktZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgZ2FwLTJcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlTGlzdENoaWxkcmVuQ2xpY2soJGV2ZW50LCBkYXRhLCBjaGlsZClcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmFcIiBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgJ2ZhLWNoZWNrLXNxdWFyZSc6IGhhbmRsZUlmQ2hpbGRQcmVzZW50KGRhdGEsIGNoaWxkKSxcclxuICAgICAgICAgICAgICAnZmEtc3F1YXJlLW8nOiAhaGFuZGxlSWZDaGlsZFByZXNlbnQoZGF0YSwgY2hpbGQpXHJcbiAgICAgICAgICAgIH1cIj48L2k+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZWNrYm94LXRleHQtc3R5bGVzXCI+e3sgY2hpbGQubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICA8L3VsPlxyXG5cclxuICAgIDwvbGk+XHJcbiAgPC91bD5cclxuPC9kaXY+XHJcbiJdfQ==
240
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXhpZGlvLXN0eWxlZ3VpZGUtbGlicmFyeS9zcmMvbGliL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F4aWRpby1zdHlsZWd1aWRlLWxpYnJhcnkvc3JjL2xpYi9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7OztBQVF2QixNQUFNLE9BQU8saUJBQWlCO0lBVTVCO1FBVFMsdUJBQWtCLEdBQVcsWUFBWSxDQUFDO1FBQzFDLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBQ3pDLHNCQUFpQixHQUFXLEVBQUUsQ0FBQztRQUV0QixzQkFBaUIsR0FBWSxJQUFJLENBQUM7UUFFakMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDcEMseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN6RCw2QkFBd0IsR0FBUSxFQUFFLENBQUM7UUFFakMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFDRCxXQUFXO1FBQ1QsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUNELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLGNBQWMsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDeEUsSUFBSSxjQUFjLEVBQUUsQ0FB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QUN2RCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsRUFBRSxDQUFDO1FBQ3JDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLHdCQUF3QixHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUVELGNBQWMsQ0FBQyxPQUFPLENBQ3BCLDBCQUEwQixFQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUM5QyxDQUFDO0lBQ0osQ0FBQzsrR0EvUFUsaUJBQWlCO21HQUFqQixpQkFBaUIseVhDbEI5QixvbkZBMERBOzs0RkR4Q2EsaUJBQWlCO2tCQU43QixTQUFTOytCQUNFLGNBQWMsaUJBR1QsaUJBQWlCLENBQUMsSUFBSTt3REFHNUIsa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUksU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBd0VQLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWRyb3Bkb3duJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Ryb3Bkb3duLmNvbXBvbmVudC5sZXNzJywgJy4uL2NvbW1vbi1zdHlsZXMubGVzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEcm9wZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBkcm9wZG93bkhlYWRlck5hbWU6IHN0cmluZyA9ICdDb21wYXJlIGJ5JztcclxuICBASW5wdXQoKSBpc0Ryb3Bkb3duT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNlbGVjdGVkQ29tcGFyZUJ5OiBvYmplY3QgPSB7fTtcclxuICBASW5wdXQoKSBkcm9wZG93bkRhdGE6IGFueTtcclxuICBASW5wdXQoKSBpc0NoZWNrYm94VmlzaWJsZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBPdXRwdXQoKSBkZENsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRGcm9tRHJvcGRvd24gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBjaGlsZERyb3Bkb3duTGlzdFZpc2libGU6IGFueSA9IFtdO1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3N0b3JhZ2UnLCB0aGlzLm9uU3RvcmFnZUNoYW5nZS5iaW5kKHRoaXMpKTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc3RvcmFnZScsIHRoaXMub25TdG9yYWdlQ2hhbmdlKTtcclxuICB9XHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgbGV0IHZhbHVlRnJvbVN0b3JlID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnY2hpbGREcm9wZG93bkxpc3RWaXNpYmxlJyk7XHJcbiAgICBpZiAodmFsdWVGcm9tU3RvcmUpIHtcclxuICAgICAgdGhpcy5jaGlsZERyb3Bkb3duTGlzdFZpc2libGUgPSBKU09OLnBhcnNlKHZhbHVlRnJvbVN0b3JlKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHNlbGVjdGVkQ29tcGFyZUJ5RnJvbVN0b3RhZ2UgPVxyXG4gICAgICBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdzZWxlY3RlZENvbXBhcmVCeScpO1xyXG4gICAgaWYgKFxyXG4gICAgICBzZWxlY3RlZENvbXBhcmVCeUZyb21TdG90YWdlICYmXHJcbiAgICAgIHRoaXMuZHJvcGRvd25IZWFkZXJOYW1lID09ICdDb21wYXJlIGJ5J1xyXG4gICAgKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbXBhcmVCeSA9IEpTT04ucGFyc2Uoc2VsZWN0ZWRDb21wYXJlQnlGcm9tU3RvdGFnZSk7XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnRXJyb3IgcGFyc2luZyBzZWxlY3RlZENvbXBhcmVCeSBmcm9tIHNlc3Npb25TdG9yYWdlOicsIGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBzZWxlY3RlZENvbXBhcmUyQnlGcm9tU3RvdGFnZSA9XHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3NlbGVjdGVkQ29tcGFyZTJCeScpO1xyXG4gICAgaWYgKFxyXG4gICAgICBzZWxlY3RlZENvbXBhcmUyQnlGcm9tU3RvdGFnZSAmJlxyXG4gICAgICB0aGlzLmRyb3Bkb3duSGVhZGVyTmFtZSAhPSAnQ29tcGFyZSBieSdcclxuICAgICkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb21wYXJlQnkgPSBKU09OLnBhcnNlKHNlbGVjdGVkQ29tcGFyZTJCeUZyb21TdG90YWdlKTtcclxuICAgICAgICB0aGlzLmRyb3Bkb3duSGVhZGVyTmFtZSA9XHJcbiAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLnNlbGVjdGVkQ29tcGFyZUJ5KSAmJlxyXG4gICAgICAgICAgT2JqZWN0LmtleXModGhpcy5zZWxlY3RlZENvbXBhcmVCeSkubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICA/IE9iamVjdC5rZXlzKHRoaXMuc2VsZWN0ZWRDb21wYXJlQnkpWzBdXHJcbiAgICAgICAgICAgIDogJyc7XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnRXJyb3IgcGFyc2luZyBzZWxlY3RlZENvbXBhcmVCeSBmcm9tIHNlc3Npb25TdG9yYWdlOicsIGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2NoYXJ0SGVhZGVyRHJvcGRvd24nKSAmJlxyXG4gICAgICB0aGlzLmRyb3Bkb3duSGVhZGVyTmFtZSA9PSAnQ29tcGFyZSBieSdcclxuICAgIClcclxuICAgICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9XHJcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnY2hhcnRIZWFkZXJEcm9wZG93bicpID09ICd0cnVlJztcclxuICB9XHJcbiAgaGVhZGVyQ2xpY2tlZChldmVudCkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmRkQ2xpY2tlZC5lbWl0KHRydWUpO1xyXG4gICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9ICF0aGlzLmlzRHJvcGRvd25PcGVuO1xyXG4gICAgaWYgKHRoaXMuZHJvcGRvd25IZWFkZXJOYW1lID09ICdDb21wYXJlIGJ5JykgdGhpcy5zZXREcm9wRG93blN0YXR1cygpO1xyXG4gICAgZWxzZSB0aGlzLnNldERyb3BEb3duMlN0YXR1cygpO1xyXG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnaXNQZXJmb3JtYW5jZUNsb3NlZCcsICd0cnVlJyk7XHJcbiAgfVxyXG4gIHNldERyb3BEb3duU3RhdHVzKCkge1xyXG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgJ2NoYXJ0SGVhZGVyRHJvcGRvd24nLFxyXG4gICAgICB0aGlzLmlzRHJvcGRvd25PcGVuLnRvU3RyaW5nKClcclxuICAgICk7XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdjaGFydEhlYWRlckRyb3Bkb3duMicsICdmYWxzZScpO1xyXG4gIH1cclxuICBzZXREcm9wRG93bjJTdGF0dXMoKSB7XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdjaGFydEhlYWRlckRyb3Bkb3duJywgJ2ZhbHNlJyk7XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFxyXG4gICAgICAnY2hhcnRIZWFkZXJEcm9wZG93bjInLFxyXG4gICAgICB0aGlzLmlzRHJvcGRvd25PcGVuLnRvU3RyaW5nKClcclxuICAgICk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBjbGlja291dCgpIHtcclxuICAgIGlmICh0aGlzLmlzRHJvcGRvd25PcGVuKSB7XHJcbiAgICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGlsZERyb3Bkb3duTGlzdFZpc2libGUgPSBbXTtcclxuICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnY2hpbGREcm9wZG93bkxpc3RWaXNpYmxlJywgSlNPTi5zdHJpbmdpZnkoW10pKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmRyb3Bkb3duSGVhZGVyTmFtZSAhPSAnQ29tcGFyZSBieScpXHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2NoYXJ0SGVhZGVyRHJvcGRvd24yJywgJ2ZhbHNlJyk7XHJcbiAgICBpZiAodGhpcy5kcm9wZG93bkhlYWRlck5hbWUgPT0gJ0NvbXBhcmUgYnknKSB0aGlzLnNldERyb3BEb3duU3RhdHVzKCk7XHJcbiAgfVxyXG4gIGhhbmRsZUxpc3RIZWFkZXJDbGljayhldmVudCwgZGF0YSwgZW50aXJlTGlzdCkge1xyXG4gICAgdGhpcy5oYW5kbGVMaXN0UGFuZWxDbGljayhldmVudCk7XHJcbiAgICBpZiAodGhpcy5kcm9wZG93bkhlYWRlck5hbWUgIT0gJ0NvbXBhcmUgQnknICYmICFkYXRhLmNoaWxkcmVuKSB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25IZWFkZXJOYW1lID0gZGF0YS5uYW1lO1xyXG4gICAgICB0aGlzLmlzRHJvcGRvd25PcGVuID0gZmFsc2U7XHJcbiAgICAgIGlmICh0aGlzLmRyb3Bkb3duSGVhZGVyTmFtZSA9PSAnQ29tcGFyZSBieScpIHRoaXMuc2V0RHJvcERvd25TdGF0dXMoKTtcclxuICAgICAgZWxzZSBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdjaGFydEhlYWRlckRyb3Bkb3duMicsICdmYWxzZScpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29tcGFyZUJ5ID0ge307XHJcbiAgICB9XHJcbiAgICBsZXQga2V5c0FycmF5ID0gT2JqZWN0LmtleXModGhpcy5zZWxlY3RlZENvbXBhcmVCeSk7XHJcbiAgICBpZiAoIWtleXNBcnJheS5sZW5ndGggfHwgIWtleXNBcnJheS5pbmNsdWRlcyhkYXRhLm5hbWUpKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb21wYXJlQnlbZGF0YS5uYW1lXSA9IGRhdGEuY2hpbGRyZW4gPyBkYXRhLmNoaWxkcmVuIDogZGF0YTtcclxuICAgIH0gZWxzZSBpZiAoZGF0YS5jaGlsZHJlbikge1xyXG4gICAgICBkZWxldGUgdGhpcy5zZWxlY3RlZENvbXBhcmVCeVtkYXRhLm5hbWVdO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmRyb3Bkb3duSGVhZGVyTmFtZSAhPSAnQ29tcGFyZSBieScgJiZcclxuICAgICAgKChzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdzZWxlY3RlZENvbXBhcmUyQnknKSAmJlxyXG4gICAgICAgIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3NlbGVjdGVkQ29tcGFyZTJCeScpICE9ICd7fScgJiZcclxuICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkQ29tcGFyZUJ5KSA9PVxyXG4gICAgICAgICAgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnc2VsZWN0ZWRDb21wYXJlMkJ5JykpIHx8XHJcbiAgICAgICAgKCFzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdzZWxlY3RlZENvbXBhcmUyQnknKSAmJlxyXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5zZWxlY3RlZENvbXBhcmVCeSlcclxuICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgICAgLmluY2x1ZGVzKHRoaXMuZHJvcGRvd25IZWFkZXJOYW1lLnRvTG93ZXJDYXNlKCkpKSlcclxuICAgICkge1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZyb21Ecm9wZG93bi5lbWl0KHtcclxuICAgICAgICBjb21wYXJlQnlGaWx0ZXJzOiB0aGlzLnNlbGVjdGVkQ29tcGFyZUJ5LFxyXG4gICAgICAgIGVudGlyZUxpc3Q6IGVudGlyZUxpc3QsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZHJvcGRvd25IZWFkZXJOYW1lID09ICdDb21wYXJlIGJ5JyAmJiBkYXRhLmNoaWxkcmVuKVxyXG4gICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFxyXG4gICAgICAgICdzZWxlY3RlZENvbXBhcmVCeScsXHJcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5zZWxlY3RlZENvbXBhcmVCeSlcclxuICAgICAgKTtcclxuICAgIGVsc2Uge1xyXG4gICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFxyXG4gICAgICAgICdzZWxlY3RlZENvbXBhcmUyQnknLFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRDb21wYXJlQnkpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGhhbmRsZUxpc3RDaGlsZHJlbkNsaWNrKGV2ZW50LCBwYXJlbnQsIGNoaWxkKSB7XHJcbiAgICB0aGlzLmhhbmRsZUxpc3RQYW5lbENsaWNrKGV2ZW50KTtcclxuICAgIGxldCBrZXlzQXJyYXkgPSBPYmplY3Qua2V5cyh0aGlzLnNlbGVjdGVkQ29tcGFyZUJ5KTtcclxuICAgIGlmICgha2V5c0FycmF5Lmxlbmd0aCB8fCAha2V5c0FycmF5LmluY2x1ZGVzKHBhcmVudC5uYW1lKSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29tcGFyZUJ5W3BhcmVudC5uYW1lXSA9IFtjaGlsZF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvKiogY2hlY2sgaWYgdGhlIGNoaWxkIGlzIGFscmVhZHkgcHJlc2VudCAqL1xyXG4gICAgICBsZXQgY2hpbGRPYmpGb3VuZCA9IHRoaXMuc2VsZWN0ZWRDb21wYXJlQnlbcGFyZW50Lm5hbWVdLmZpbmQoXHJcbiAgICAgICAgKGNoaWxkT2JqKSA9PiBjaGlsZE9iai5uYW1lID09PSBjaGlsZC5uYW1lXHJcbiAgICAgICk7XHJcbiAgICAgIGlmICghY2hpbGRPYmpGb3VuZCkge1xyXG4gICAgICAgIC8qKmNoaWxkIG5vdCBmb3VuZCAqL1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb21wYXJlQnlbcGFyZW50Lm5hbWVdLnB1c2goY2hpbGQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8qKmNoaWxkIGFscmVhZHkgc2VsZWN0ZWQgLSBoZW5jZSBkZWxldGUgdGhhdCBjaGlsZCovXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbXBhcmVCeVtwYXJlbnQubmFtZV0gPSB0aGlzLnNlbGVjdGVkQ29tcGFyZUJ5W1xyXG4gICAgICAgICAgcGFyZW50Lm5hbWVcclxuICAgICAgICBdLmZpbHRlcigoY2hpbGRPYmopID0+IGNoaWxkT2JqLm5hbWUgIT09IGNoaWxkLm5hbWUpO1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb21wYXJlQnlbcGFyZW50Lm5hbWVdICYmXHJcbiAgICAgICAgICAhdGhpcy5zZWxlY3RlZENvbXBhcmVCeVtwYXJlbnQubmFtZV0ubGVuZ3RoXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBkZWxldGUgdGhpcy5zZWxlY3RlZENvbXBhcmVCeVtwYXJlbnQubmFtZV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbGVjdGVkRnJvbURyb3Bkb3duLmVtaXQoe1xyXG4gICAgICBjb21wYXJlQnlGaWx0ZXJzOiB0aGlzLnNlbGVjdGVkQ29tcGFyZUJ5LFxyXG4gICAgICBlbnRpcmVMaXN0OiBwYXJlbnQ/LmNoaWxkcmVuLFxyXG4gICAgfSk7XHJcbiAgICBpZiAodGhpcy5kcm9wZG93bkhlYWRlck5hbWUgPT0gJ0NvbXBhcmUgYnknICYmIHBhcmVudC5jaGlsZHJlbilcclxuICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgICAnc2VsZWN0ZWRDb21wYXJlQnknLFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRDb21wYXJlQnkpXHJcbiAgICAgICk7XHJcbiAgICBlbHNlIHtcclxuICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgICAnc2VsZWN0ZWRDb21wYXJlMkJ5JyxcclxuICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkQ29tcGFyZUJ5KVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuICBoYW5kbGVJZlByZXNlbnQoZGF0YSkge1xyXG4gICAgbGV0IHBhcmVudE9iaiA9IHRoaXMuZHJvcGRvd25EYXRhLmZpbmQoKG9iaikgPT4gb2JqLm5hbWUgPT09IGRhdGEubmFtZSk7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb21wYXJlQnlbZGF0YS5uYW1lXSAmJlxyXG4gICAgICBwYXJlbnRPYmouY2hpbGRyZW4gJiZcclxuICAgICAgcGFyZW50T2JqLmNoaWxkcmVuLmxlbmd0aCA9PSB0aGlzLnNlbGVjdGVkQ29tcGFyZUJ5W2RhdGEubmFtZV0/Lmxlbmd0aFxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRDb21wYXJlQnlbZGF0YS5uYW1lXSAmJiAhcGFyZW50T2JqLmNoaWxkcmVuKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBoYW5kbGVJZkNoaWxkUHJlc2VudChwYXJlbnQsIGNoaWxkKSB7XHJcbiAgICBpZiAoIU9iamVjdC5rZXlzKHRoaXMuc2VsZWN0ZWRDb21wYXJlQnkpLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBsZXQgY2hpbGRPYmpGb3VuZCA9XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb21wYXJlQnlbcGFyZW50Lm5hbWVdICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb21wYXJlQnlbcGFyZW50Lm5hbWVdLmZpbmQoXHJcbiAgICAgICAgKGNoaWxkT2JqKSA9PiBjaGlsZE9iai5uYW1lID09PSBjaGlsZC5uYW1lXHJcbiAgICAgICk7XHJcbiAgICBpZiAoY2hpbGRPYmpGb3VuZCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgaGFuZGxlTGlzdFBhbmVsQ2xpY2soZXZlbnQpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuICBnZXREcm9wZG93bkhlYWRlck5hbWUoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuZHJvcGRvd25IZWFkZXJOYW1lICE9ICdDb21wYXJlIGJ5JyAmJlxyXG4gICAgICBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdvbkhvdmVyZWRFbGVtZW50Q2xpY2tlZCcpXHJcbiAgICApIHtcclxuICAgICAgY29uc3QgcmVxU3RyaW5nID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnb25Ib3ZlcmVkRWxlbWVudENsaWNrZWQnKTtcclxuICAgICAgaWYgKHJlcVN0cmluZykgdGhpcy5kcm9wZG93bkhlYWRlck5hbWUgPSByZXFTdHJpbmcucmVwbGFjZSgvXCIvZywgJycpO1xyXG4gICAgICByZXR1cm4gdGhpcy5kcm9wZG93bkhlYWRlck5hbWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5kcm9wZG93bkhlYWRlck5hbWU7XHJcbiAgfVxyXG4gIGdldERyb3Bkb3duVmlzaWJpbGl0eVN0YXR1cygpIHtcclxuICAgIGlmIChcclxuICAgICAgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnY2hhcnRIZWFkZXJEcm9wZG93bicpICYmXHJcbiAgICAgIHRoaXMuZHJvcGRvd25IZWFkZXJOYW1lID09ICdDb21wYXJlIGJ5J1xyXG4gICAgKVxyXG4gICAgICB0aGlzLmlzRHJvcGRvd25PcGVuID1cclxuICAgICAgICBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdjaGFydEhlYWRlckRyb3Bkb3duJykgPT0gJ3RydWUnO1xyXG4gICAgZWxzZSBpZiAoXHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2NoYXJ0SGVhZGVyRHJvcGRvd24yJykgJiZcclxuICAgICAgdGhpcy5kcm9wZG93bkhlYWRlck5hbWUgIT0gJ0NvbXBhcmUgYnknXHJcbiAgICApXHJcbiAgICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPVxyXG4gICAgICAgIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2NoYXJ0SGVhZGVyRHJvcGRvd24yJykgPT0gJ3RydWUnO1xyXG4gICAgcmV0dXJuIHRoaXMuaXNEcm9wZG93bk9wZW47XHJcbiAgfVxyXG4gIHByaXZhdGUgb25TdG9yYWdlQ2hhbmdlKGV2ZW50OiBTdG9yYWdlRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmIChcclxuICAgICAgZXZlbnQuc3RvcmFnZUFyZWEgPT09IHNlc3Npb25TdG9yYWdlICYmXHJcbiAgICAgIChldmVudC5rZXkgPT09ICdjaGFydEhlYWRlckRyb3Bkb3duJyB8fFxyXG4gICAgICAgIGV2ZW50LmtleSA9PSAnY2hhcnRIZWFkZXJEcm9wZG93bjInKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuZ2V0RHJvcGRvd25WaXNpYmlsaXR5U3RhdHVzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGhhbmRsZVNob3dPckhpZGVDaGlsZExpc3QocGFyZW50TmFtZTogc3RyaW5nLCBldmVudDogRXZlbnQpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGlmICh0aGlzLmNoaWxkRHJvcGRvd25MaXN0VmlzaWJsZS5pbmNsdWRlcyhwYXJlbnROYW1lKSkge1xyXG4gICAgICB0aGlzLmNoaWxkRHJvcGRvd25MaXN0VmlzaWJsZSA9IFtdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jaGlsZERyb3Bkb3duTGlzdFZpc2libGUgPSBbcGFyZW50TmFtZV07XHJcbiAgICB9XHJcblxyXG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgJ2NoaWxkRHJvcGRvd25MaXN0VmlzaWJsZScsXHJcbiAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuY2hpbGREcm9wZG93bkxpc3RWaXNpYmxlKVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImRyb3Bkb3duLWNvbnRhaW5lclwiPlxyXG4gIDxidXR0b24gY2xhc3M9XCJ3ZWVrbHljaGFydHNfX3dlZWtidXR0b24gdGV4dC1hbGlnbi1sZWZ0XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJoZWFkZXJDbGlja2VkKCRldmVudClcIlxyXG4gICAgW25nQ2xhc3NdPVwieyAnd2Vla2x5Y2hhcnRzX19ib3JkZXJub3JtYWwnOiAhaXNEcm9wZG93bk9wZW4gfVwiPlxyXG4gICAge3sgZ2V0RHJvcGRvd25IZWFkZXJOYW1lKCkgfX1cclxuICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tc2VsZWN0LWNhcmV0XCI+XHJcbiAgICAgIDxpIGNsYXNzPVwiYmlcIiBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAnYmktY2FyZXQtZG93bi1maWxsJzogIWlzRHJvcGRvd25PcGVuLFxyXG4gICAgICAgICAgJ2JpLWNhcmV0LXVwLWZpbGwnOiBpc0Ryb3Bkb3duT3BlblxyXG4gICAgICAgIH1cIj48L2k+XHJcbiAgICA8L2Rpdj5cclxuICA8L2J1dHRvbj5cclxuXHJcbiAgPHVsIGNsYXNzPVwiZHJvcGRvd25fX2xpc3RcIiAqbmdJZj1cImdldERyb3Bkb3duVmlzaWJpbGl0eVN0YXR1cygpXCIgKGNsaWNrKT1cImhhbmRsZUxpc3RQYW5lbENsaWNrKCRldmVudClcIj5cclxuICAgIDxsaSAqbmdGb3I9XCJsZXQgZGF0YSBvZiBkcm9wZG93bkRhdGFcIiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCIgXHJcbiAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAnd2Vla2x5Y2hhcnRzLWFjdGl2ZSc6IGRhdGEubmFtZSA9PT0gZHJvcGRvd25IZWFkZXJOYW1lLFxyXG4gICAgICAgICd3ZWVrbHljaGFydHMtaW5hY3RpdmUnOiBkYXRhLm5hbWUgIT09IGRyb3Bkb3duSGVhZGVyTmFtZVxyXG4gICAgICB9XCI+XHJcblxyXG4gICAgICA8IS0tIFBhcmVudCBJdGVtIC0tPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImRpc3BsYXktZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgZ2FwLTJcIiAoY2xpY2spPVwiaGFuZGxlTGlzdEhlYWRlckNsaWNrKCRldmVudCwgZGF0YSwgZHJvcGRvd25EYXRhKVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmFcIiBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgJ2ZhLWNoZWNrLXNxdWFyZSc6IGhhbmRsZUlmUHJlc2VudChkYXRhKSxcclxuICAgICAgICAgICAgICAnZmEtc3F1YXJlLW8nOiAhaGFuZGxlSWZQcmVzZW50KGRhdGEpXHJcbiAgICAgICAgICAgIH1cIiAqbmdJZj1cImlzQ2hlY2tib3hWaXNpYmxlXCI+PC9pPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibGlzdC10ZXh0IGZvbnQtc2l6ZS0zXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2ZvbnQtd2VpZ2h0LTYwMCc6IGRhdGEubmFtZSA9PT0gZHJvcGRvd25IZWFkZXJOYW1lIH1cIj5cclxuICAgICAgICAgIHt7IGRhdGEubmFtZSB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgPCEtLSBFeHBhbmQvQ29sbGFwc2UgSWNvbiAtLT5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInN1Ymxpc3QtYXJyb3cgbGliLWRpc3BsYXktZmxleFwiICpuZ0lmPVwiZGF0YS5jaGlsZHJlblwiIFxyXG4gICAgICAgICAgKGNsaWNrKT1cImhhbmRsZVNob3dPckhpZGVDaGlsZExpc3QoZGF0YS5uYW1lLCAkZXZlbnQpXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZvbnQtc2l6ZS0xIGZvbnQtd2VpZ2h0LTYwMFwiIFxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgJ2ZhLWFuZ2xlLXJpZ2h0JzogIWNoaWxkRHJvcGRvd25MaXN0VmlzaWJsZS5pbmNsdWRlcyhkYXRhLm5hbWUpLFxyXG4gICAgICAgICAgICAgICdmYS1hbmdsZS1kb3duJzogY2hpbGREcm9wZG93bkxpc3RWaXNpYmxlLmluY2x1ZGVzKGRhdGEubmFtZSlcclxuICAgICAgICAgICAgfVwiPjwvaT5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgIDwhLS0gQ2hpbGRyZW4gTGlzdCAtLT5cclxuICAgICAgPHVsIGNsYXNzPVwiZHJvcGRvd24tc3VibGlzdCBsaWItbWwtMjAgbGliLWxpc3QtY2hpbGRyZW5cIlxyXG4gICAgICAgICpuZ0lmPVwiZGF0YS5jaGlsZHJlbiAmJiBjaGlsZERyb3Bkb3duTGlzdFZpc2libGUuaW5jbHVkZXMoZGF0YS5uYW1lKVwiPlxyXG4gICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgZGF0YS5jaGlsZHJlblwiIFxyXG4gICAgICAgICAgICBjbGFzcz1cImRpc3BsYXktZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgZ2FwLTJcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlTGlzdENoaWxkcmVuQ2xpY2soJGV2ZW50LCBkYXRhLCBjaGlsZClcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmFcIiBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgJ2ZhLWNoZWNrLXNxdWFyZSc6IGhhbmRsZUlmQ2hpbGRQcmVzZW50KGRhdGEsIGNoaWxkKSxcclxuICAgICAgICAgICAgICAnZmEtc3F1YXJlLW8nOiAhaGFuZGxlSWZDaGlsZFByZXNlbnQoZGF0YSwgY2hpbGQpXHJcbiAgICAgICAgICAgIH1cIj48L2k+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZWNrYm94LXRleHQtc3R5bGVzXCI+e3sgY2hpbGQubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICA8L3VsPlxyXG5cclxuICAgIDwvbGk+XHJcbiAgPC91bD5cclxuPC9kaXY+XHJcbiJdfQ==