@rangertechnologies/ngnxt 2.1.93 → 2.1.94

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.
@@ -141,15 +141,28 @@ export class CustomTableComponent {
141
141
  }
142
142
  });
143
143
  }
144
+ // if(validItem){
145
+ // if(this.tableData.length > 0){
146
+ // this.tableData = [...this.tableData,item];
147
+ // this.emitTableDataValue(this.tableData);
148
+ // }else {
149
+ // this.tableData.push(item);
150
+ // this.emitTableDataValue(this.tableData);
151
+ // }
152
+ // }
153
+ //RS 14FEB2025
154
+ //Update Pagination before emit
144
155
  if (validItem) {
145
156
  if (this.tableData.length > 0) {
146
157
  this.tableData = [...this.tableData, item];
147
- this.emitTableDataValue(this.tableData);
148
158
  }
149
159
  else {
150
160
  this.tableData.push(item);
151
- this.emitTableDataValue(this.tableData);
152
161
  }
162
+ // Update filteredData and pagination
163
+ this.filteredData = [...this.tableData];
164
+ this.updatePagination();
165
+ this.emitTableDataValue(this.tableData);
153
166
  }
154
167
  }
155
168
  this.changeService.confirmChange(apiObj.sourceQuestionId);
@@ -331,4 +344,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
331
344
  }], apiMeta: [{
332
345
  type: Input
333
346
  }] } });
334
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL2N1c3RvbS10YWJsZS9jdXN0b20tdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tLXRhYmxlL2N1c3RvbS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7O0FBbUIxRixNQUFNLE9BQU8sb0JBQW9CO0lBb0NYO0lBQW9DO0lBQWtDO0lBQXNDO0lBbkN2SCxRQUFRLENBQVU7SUFDakIsV0FBVyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO0lBQ3pELGFBQWEsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUNyRSxTQUFTLENBQWU7SUFDeEIsV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUNqQixTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ2YsWUFBWSxHQUFHLEVBQUUsQ0FBQyxDQUFDLGlDQUFpQztJQUN0RCxjQUFjO0lBQ2Qsb0pBQW9KO0lBQ3BKLFVBQVUsR0FBWSxJQUFJLENBQUM7SUFDM0IsY0FBYyxHQUFZLElBQUksQ0FBQztJQUMvQixXQUFXLEdBQVksSUFBSSxDQUFDO0lBQzVCLFVBQVUsR0FBWSxJQUFJLENBQUM7SUFDM0IsWUFBWSxHQUFXLENBQUMsQ0FBQztJQUN2QixhQUFhLENBQVM7SUFDdEIsU0FBUyxDQUFTLENBQUMsb0NBQW9DO0lBQ3ZELE9BQU8sQ0FBTTtJQUNiLFdBQVcsQ0FBTTtJQUNqQixTQUFTLENBQVM7SUFDbEIsTUFBTSxDQUFTO0lBQ2YsU0FBUyxHQUFZLEtBQUssQ0FBQztJ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QUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQ0QsT0FBTyxDQUFDLFFBQWdCO1FBQ3RCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNWLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQy9CLElBQUcsQ0FBQyxLQUFLLFFBQVEsRUFBQyxDQUFDO2dCQUNqQixPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUN0QixDQUFDO1lBQ0QsQ0FBQyxFQUFFLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBUyxFQUFFLEtBQWEsRUFBRSxLQUFhO1FBQ2xELElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUdELGtCQUFrQixDQUFDLGdCQUF1QjtRQUN4QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFDSCxjQUFjO0lBQ2QsNkdBQTZHO0lBQzdHLFdBQVc7UUFDVCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFFckMsQ0FBQzt3R0F2VFksb0JBQW9COzRGQUFwQixvQkFBb0IsdUxDbkJqQyxpeVFBc0xBOzs0RkRuS2Esb0JBQW9CO2tCQU5oQyxTQUFTOytCQUNFLGtCQUFrQjtzS0FNbkIsUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBbUJFLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG4vLyBIQSAxOURFQzIzIGltcG9ydGVkIHRyYW5zbGF0aW9uIHNlcnZpY2VcclxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi9pMThuLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUYWJsZVdyYXBwZXIgfSBmcm9tICcuLi8uLi9tb2RlbC90YWJsZVdyYXBwZXInO1xyXG5pbXBvcnQgeyBTYWxlc2ZvcmNlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NhbGVzZm9yY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFF1ZXN0aW9uIH0gZnJvbSAnLi4vLi4vd3JhcHBlcic7XHJcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQVBJTWV0YSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYXBpbWV0YSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDaGFuZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2hhbmdlLnNlcnZpY2UnO1xyXG5cclxuZGVjbGFyZSB2YXIgJDogYW55O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtY3VzdG9tLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY3VzdG9tLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jdXN0b20tdGFibGUuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgQ3VzdG9tVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgcXVlc3Rpb246IFF1ZXN0aW9uXHJcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBzYXZlVGFibGVEYXRhOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIHRhYmxlSW5mbzogVGFibGVXcmFwcGVyO1xyXG4gIHRhYmxlSGVhZGVyID0gW107XHJcbiAgdGFibGVEYXRhID0gW107XHJcbiAgZmlsdGVyZWREYXRhID0gW107IC8vIE5ldyBwcm9wZXJ0eSBmb3IgZmlsdGVyZWQgZGF0YVxyXG4vL1JTIDAzRkVCMjAyNVxyXG4vLyBEZWZhdWx0IFVJIGNvbmZpZ3VyYXRpb25zIHRvIGNvbnRyb2wgcm93IGFkZGl0aW9uLCBwYWdpbmF0aW9uLCBhY3Rpb25zIGNvbHVtbiB2aXNpYmlsaXR5LCBzZWFyY2ggZnVuY3Rpb25hbGl0eSwgYW5kIHRoZSBudW1iZXIgb2YgaXRlbXMgcGVyIHBhZ2UuXHJcbnNob3dBZGRSb3c6IGJvb2xlYW4gPSB0cnVlO1xyXG5zaG93UGFnaW5hdGlvbjogYm9vbGVhbiA9IHRydWU7XHJcbnNob3dBY3Rpb25zOiBib29sZWFuID0gdHJ1ZTtcclxuc2hvd1NlYXJjaDogYm9vbGVhbiA9IHRydWU7XHJcbml0ZW1zUGVyUGFnZTogbnVtYmVyID0gNTtcclxuICBhZGRSb3dDb2xTcGFuOiBudW1iZXI7XHJcbiAgdGFibGVTaXplOiBudW1iZXI7IC8vIEhBIDI4REVDMjMgdGFibGUgc2l6ZSBkZWNsYXJhdGlvblxyXG4gIG9iak5hbWU6IGFueTtcclxuICBmaWx0ZXJMb2dpYzogYW55O1xyXG4gIGZpZWxkTWV0YTogc3RyaW5nO1xyXG4gIGZpclN0cjogc3RyaW5nO1xyXG4gIHNlYXJjaEJveDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGFwaU1ldGE6IHN0cmluZztcclxuICBwdWJsaWMgb3B0aW9uczogc3RyaW5nW107XHJcbiAgaXNEaXNhYmxlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIHB1YmxpYyBsYWJlbEZpZWxkOiBzdHJpbmc7XHJcblxyXG4gIC8vUlMgMDNGRUIyMDI1XHJcbiAgLy8gTmV3IHByb3BlcnRpZXMgZm9yIHNlYXJjaCBhbmQgcGFnaW5hdGlvblxyXG4gIHNlYXJjaFRlcm06IHN0cmluZyA9ICcnO1xyXG4gIGN1cnJlbnRQYWdlOiBudW1iZXIgPSAxO1xyXG4gIHRvdGFsSXRlbXM6IG51bWJlciA9IDA7XHJcbiAgcGFnZXM6IG51bWJlcltdID0gW107XHJcbiAgTWF0aCA9IE1hdGg7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VTZXJ2aWNlOiBDaGFuZ2VTZXJ2aWNlLHB1YmxpYyBpMThuU2VydmljZTogSTE4blNlcnZpY2UsIHByaXZhdGUgc2ZTZXJ2aWNlOiBTYWxlc2ZvcmNlU2VydmljZSwgcHJpdmF0ZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UpIHsgfVxyXG4gIC8vIFJTIDA5REVDMjQgQ2hhbmdlZCBrZXlzXHJcbiAgLy8gQWRkIG5ldyBwcm9wZXJ0aWVzIGZvciBzYXZlIGZ1bmN0aW9uYWxpdHlcclxuICBoYXNVbnNhdmVkQ2hhbmdlczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNhdmVkRGF0YTogYW55W10gPSBbXTtcclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICAvLyB0aGlzLnRhYmxlRGF0YSA9IFtdO1xyXG4vLyBDbGVhciBhbnkgZXhpc3RpbmcgZGF0YSBmaXJzdFxyXG50aGlzLnJlc2V0Q29tcG9uZW50U3RhdGUoKTtcclxuc2V0VGltZW91dCgoKSA9PiBjb25zb2xlLmxvZygnQWZ0ZXIgcmVzZXQ6JywgdGhpcy50YWJsZURhdGEpLCAyMDAwKTtcclxudHJ5IHtcclxuICBjb25zdCBwYXJzZWRNZXRhID0gSlNPTi5wYXJzZSh0aGlzLnF1ZXN0aW9uWydmaWVsZHNNZXRhJ10pO1xyXG4gIGlmICghcGFyc2VkTWV0YSB8fCAhQXJyYXkuaXNBcnJheShwYXJzZWRNZXRhKSB8fCBwYXJzZWRNZXRhLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgY29uc29sZS53YXJuKCdObyB2YWxpZCBtZXRhZGF0YSBwcm92aWRlZCcpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICAvL1JTIDAzRkVCMjAyNVxyXG4gIC8vIEV4dHJhY3RzIHRhYmxlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgZHluYW1pY2FsbHkgZnJvbSBtZXRhZGF0YSBhbmQgYXBwbGllcyB0aGVtLCBlbnN1cmluZyBmbGV4aWJpbGl0eSBpbiBVSSBjdXN0b21pemF0aW9uXHJcbiAgaWYgKHBhcnNlZE1ldGFbMF0/LnRhYmxlQ29uZmlnKSB7XHJcbiAgICBjb25zdCBjb25maWcgPSBwYXJzZWRNZXRhWzBdLnRhYmxlQ29uZmlnO1xyXG4gICAgdGhpcy5zaG93QWRkUm93ID0gY29uZmlnLnNob3dBZGRSb3cgIT09IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93UGFnaW5hdGlvbiA9IGNvbmZpZy5zaG93UGFnaW5hdGlvbiAhPT0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dBY3Rpb25zID0gY29uZmlnLnNob3dBY3Rpb25zICE9PSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd1NlYXJjaCA9IGNvbmZpZy5zaG93U2VhcmNoICE9PSBmYWxzZTtcclxuICAgIHRoaXMuaXRlbXNQZXJQYWdlID0gY29uZmlnLml0ZW1zUGVyUGFnZSB8fCA1O1xyXG4gICAgXHJcbiAgICAvLyBSZW1vdmUgdGhlIGNvbmZpZyBvYmplY3QgZnJvbSBoZWFkZXJzXHJcbiAgICB0aGlzLnRhYmxlSGVhZGVyID0gcGFyc2VkTWV0YS5zbGljZSgxKTtcclxuICB9IGVsc2Uge1xyXG4gICAgLy8gSWYgbm8gY29uZmlnIG9iamVjdCBmb3VuZCwgdXNlIGFsbCBvYmplY3RzIGFzIGhlYWRlcnNcclxuICAgIHRoaXMudGFibGVIZWFkZXIgPSBwYXJzZWRNZXRhO1xyXG4gIH1cclxuXHJcbiAgICAvLyB0aGlzLnRhYmxlSGVhZGVyID0gSlNPTi5wYXJzZSh0aGlzLnF1ZXN0aW9uWydmaWVsZHNNZXRhJ10pO1xyXG4gICAgdGhpcy50YWJsZVNpemUgPSAxMC90aGlzLnRhYmxlSGVhZGVyLmxlbmd0aDtcclxuLy8gMTJKVU4yNCAtIGRlZmF1bHQgdGFibGUgdmFsdWVcclxuICAgIGlmKHRoaXMucXVlc3Rpb24/LmlucHV0KXtcclxuICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMucXVlc3Rpb24/LmlucHV0O1xyXG4gICAgICAgIHRoaXMuZmlsdGVyZWREYXRhID0gWy4uLnRoaXMudGFibGVEYXRhXTtcclxuICAgICAgdGhpcy51cGRhdGVQYWdpbmF0aW9uKCk7XHJcbiAgICB9XHJcbiAgICBpZih0aGlzLmFwaU1ldGEgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMgPSBbXTtcclxuICAgICAgbGV0IGFwaU9iajogQVBJTWV0YSA9IEpTT04ucGFyc2UodGhpcy5hcGlNZXRhKTtcclxuICAgICAgdGhpcy5sYWJlbEZpZWxkID0gYXBpT2JqLmZpZWxkO1xyXG4gICAgICBpZihhcGlPYmouZW5kcG9pbnQpe1xyXG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuYXBpUmVzcG9uc2UoYXBpT2JqLmVuZHBvaW50KT8uc3Vic2NyaWJlKChhcGlSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgbGV0IHJlc3BvbnNlcztcclxuICAgICAgICAgIGlmKGFwaU9iai52YXJpYWJsZSl7XHJcbiAgICAgICAgICAgICAvLyBWRCAyMk1heTI0IC0gaGFuZGxpbmcgbXVsdGlwbGUgY2hpbGQgb2JqZWN0c1xyXG4gICAgICAgICAgICByZXNwb25zZXMgPSAgdGhpcy5kYXRhU2VydmljZS5nZXRWYWx1ZShhcGlSZXNwb25zZSxhcGlPYmoudmFyaWFibGUpO1xyXG4gICAgICAgICAgICBsZXQgcmVzdWx0cyA9IFtdO1xyXG4gICAgICAgICAgICAvLyBIQSAxOUpBTjI0IFRvIGF2b2lkIHVuZGVmaW5lZCBlcnJvciBpbiBjb25zb2xlXHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzcG9uc2VzPy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIHZhciByZXNwID0gcmVzcG9uc2VzW2ldO1xyXG4gICAgICAgICAgICAgIHJlc3VsdHMucHVzaChyZXNwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSByZXN1bHRzO1xyXG4gICAgICAgICAgfWVsc2V7ICAvLyBWRCAxOUpBTjI0IC0gaWYgcmVzcG9uc2UgaGFzIHZhbHVlKHdoaWNoIGlzIGFycmF5KSBvbmx5XHJcbiAgICAgICAgICAgIHJlc3BvbnNlcyA9IGFwaVJlc3BvbnNlO1xyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSByZXNwb25zZXM7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLm9wdGlvbnMubWFwKChvYmo6IGFueSkgPT4gKHsgLi4ub2JqLCBlZGl0OiBmYWxzZSB9KSk7XHJcbiAgICAgICAgICAvLyBSZWZlcmVuY2UgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQG5nLXNlbGVjdC9uZy1zZWxlY3RcclxuICAgICAgICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLm9wdGlvbnM7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ3RhYmxlRGF0YScsIHRoaXMudGFibGVEYXRhKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgXHJcbiAgICAgIC8vIFZEIE5PVjIzIC0gaGFuZGxlIHRoZSBkZXBlbmRlbnQgdXBkYXRlIGZvciBkcm9wZG93blxyXG4gICAgICBsZXQgc291cmNlSWQgPSBhcGlPYmouc291cmNlUXVlc3Rpb25JZDtcclxuICAgICAgbGV0IGZpZWxkID0gYXBpT2JqLmZpZWxkOyAgICAgICAgLy8gVkQgMTNNQVkyNCAtIGR5bmFtaWMgZmllbGQgY2hhbmdlc1xyXG4gICAgICBpZihzb3VyY2VJZCl7XHJcbiAgICAgICAgLy8gLy8gVkQgMTBNYXkyNCBTdWJzY3JpYmUgZm9yIHRoZSBjaGFuZ2VzXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmNoYW5nZVNlcnZpY2UuY2hhbmdlQW5ub3VuY2VkJC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAoY2hhbmdlVmFsdWUpID0+IHtcclxuICAgICAgICAgICAgaWYoY2hhbmdlVmFsdWUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgaWYoY2hhbmdlVmFsdWUudmFsdWVPYmogIT0gdW5kZWZpbmVkICYmIGNoYW5nZVZhbHVlLmZyb21RdWVzdGlvbklkID09IGFwaU9iai5zb3VyY2VRdWVzdGlvbklkKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnY2hhbmdlcyBoYXBwZW4nKTtcclxuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMub3B0aW9ucy5tYXAoKG9iajogYW55KSA9PiAoeyAuLi5vYmosIGVkaXQ6IGZhbHNlIH0pKTtcclxuICAgICAgICAgICAgICAgIGxldCBpdGVtID0gY2hhbmdlVmFsdWUudmFsdWVPYmo7XHJcbiAgICAgICAgICAgICAgICBsZXQgdmFsaWRJdGVtID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAvLyBWRCAxM01BWTI0IC0gYmluZCBkeW5hbWljIGZpZWxkXHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLnRhYmxlRGF0YS5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZURhdGEuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgICAgICAgIC8vIFZEIDI2SnVuMjQgLSB0byBoYW5kbGUgbXVsdGlwbGUgb2JqZWN0c1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9iakVsZW1lbnRWYWx1ZSA9IHRoaXMuZGF0YVNlcnZpY2UuZ2V0VmFsdWUoZWxlbWVudCxmaWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2JqSXRlbVZhbHVlID0gdGhpcy5kYXRhU2VydmljZS5nZXRWYWx1ZShpdGVtLGZpZWxkKVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKG9iakVsZW1lbnRWYWx1ZSA9PSBvYmpJdGVtVmFsdWUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgIHZhbGlkSXRlbSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZih2YWxpZEl0ZW0pe1xyXG4gICAgICAgICAgICAgICAgICBpZih0aGlzLnRhYmxlRGF0YS5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IFsuLi50aGlzLnRhYmxlRGF0YSxpdGVtXTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXRUYWJsZURhdGFWYWx1ZSh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgIH1lbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlRGF0YS5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW1pdFRhYmxlRGF0YVZhbHVlKHRoaXMudGFibGVEYXRhKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZVNlcnZpY2UuY29uZmlybUNoYW5nZShhcGlPYmouc291cmNlUXVlc3Rpb25JZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnVwZGF0ZVBhZ2luYXRpb24oKTtcclxuICAgIC8vUlMgMDNGRUIyMDI1XHJcbiAgICAvL0hhbmRsZXMgZXJyb3JzIGR1cmluZyBtZXRhZGF0YSBwYXJzaW5nIGJ5IHNldHRpbmcgZGVmYXVsdCB2YWx1ZXMgdG8gZW5zdXJlIHRoZSB0YWJsZSBmdW5jdGlvbnMgcHJvcGVybHlcclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgY29uc29sZS5lcnJvcignRXJyb3IgcGFyc2luZyBmaWVsZHNNZXRhOicsIGVycm9yKTtcclxuICAgIHRoaXMuc2hvd0FkZFJvdyA9IHRydWU7XHJcbiAgICB0aGlzLnNob3dQYWdpbmF0aW9uID0gdHJ1ZTtcclxuICAgIHRoaXMuc2hvd0FjdGlvbnMgPSB0cnVlO1xyXG4gICAgdGhpcy5zaG93U2VhcmNoID0gdHJ1ZTtcclxuICAgIHRoaXMuaXRlbXNQZXJQYWdlID0gNTtcclxuICB9XHJcbiAgLy9SUyAwM0ZFQjIwMjVcclxuICAvLyBJbml0aWFsaXplIHNhdmVkIGRhdGFcclxuICBpZiAodGhpcy5xdWVzdGlvbj8uaW5wdXQpIHtcclxuICAgIHRoaXMuc2F2ZWREYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnF1ZXN0aW9uLmlucHV0KSk7XHJcbiAgfVxyXG4gICAgY29uc29sZS5sb2coJ3RhYmxlRGF0YScsIHRoaXMudGFibGVEYXRhKTtcclxuICAgIGNvbnNvbGUubG9nKCd0YWJsZUhlYWRlcicsIHRoaXMudGFibGVIZWFkZXIpO1xyXG4gICAgY29uc29sZS5sb2coJ3RhYmxlSW5mbycsIHRoaXMudGFibGVJbmZvKTtcclxuICB9XHJcbiAgLy9SUyAwM0ZFQjIwMjVcclxuICAvLyDihpIgRmlsdGVycyB0YWJsZSBkYXRhIGJhc2VkIG9uIHVzZXIgaW5wdXQgYW5kIHVwZGF0ZXMgcGFnaW5hdGlvbiBhY2NvcmRpbmdseS5cclxuICBzZWFyY2goKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuc2VhcmNoVGVybS50cmltKCkpIHtcclxuICAgICAgdGhpcy5maWx0ZXJlZERhdGEgPSBbLi4udGhpcy50YWJsZURhdGFdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3Qgc2VhcmNoVGVybUxvd2VyID0gdGhpcy5zZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWREYXRhID0gdGhpcy50YWJsZURhdGEuZmlsdGVyKGl0ZW0gPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRhYmxlSGVhZGVyLnNvbWUoaGVhZGVyID0+IHtcclxuICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5kYXRhU2VydmljZS5nZXRWYWx1ZShpdGVtLCBoZWFkZXIuYXBpTmFtZSk7XHJcbiAgICAgICAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm1Mb3dlcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICB0aGlzLnVwZGF0ZVBhZ2luYXRpb24oKTtcclxuICB9XHJcbi8vUlMgMDNGRUIyMDI1XHJcbi8vIENhbGN1bGF0ZXMgdG90YWwgcGFnZXMsIHVwZGF0ZXMgdGhlIHBhZ2UgbGlzdCwgYW5kIGVuc3VyZXMgdGhlIGN1cnJlbnQgcGFnZSBpcyB3aXRoaW4gdmFsaWQgYm91bmRzLlxyXG4gIHVwZGF0ZVBhZ2luYXRpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLnRvdGFsSXRlbXMgPSB0aGlzLmZpbHRlcmVkRGF0YS5sZW5ndGg7XHJcbiAgICBjb25zdCB0b3RhbFBhZ2VzID0gTWF0aC5jZWlsKHRoaXMudG90YWxJdGVtcyAvIHRoaXMuaXRlbXNQZXJQYWdlKTtcclxuICAgIHRoaXMucGFnZXMgPSBBcnJheS5mcm9tKHtsZW5ndGg6IHRvdGFsUGFnZXN9LCAoXywgaSkgPT4gaSArIDEpO1xyXG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2UgPiB0b3RhbFBhZ2VzKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0b3RhbFBhZ2VzIHx8IDE7XHJcbiAgfVxyXG4gIH1cclxuLy9SUyAwM0ZFQjIwMjVcclxuLy9SZXR1cm5zIGEgcGFnaW5hdGVkIHN1YnNldCBvZiBmaWx0ZXJlZERhdGEgYmFzZWQgb24gdGhlIGN1cnJlbnQgcGFnZSBhbmQgaXRlbXMgcGVyIHBhZ2VcclxuICBnZXQgcGFnaW5hdGVkRGF0YSgpOiBhbnlbXSB7XHJcbiAgICBjb25zdCBzdGFydEluZGV4ID0gKHRoaXMuY3VycmVudFBhZ2UgLSAxKSAqIHRoaXMuaXRlbXNQZXJQYWdlO1xyXG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWREYXRhLnNsaWNlKHN0YXJ0SW5kZXgsIHN0YXJ0SW5kZXggKyB0aGlzLml0ZW1zUGVyUGFnZSk7XHJcbiAgfVxyXG4vL1JTIDAzRkVCMjAyNVxyXG4vL1VwZGF0ZXMgY3VycmVudFBhZ2Ugd2hlbiB0aGUgdXNlciBzZWxlY3RzIGEgZGlmZmVyZW50IHBhZ2VcclxuICBzZXRQYWdlKHBhZ2U6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKHBhZ2UgPj0gMSAmJiBwYWdlIDw9IHRoaXMucGFnZXMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdlO1xyXG4gICAgfVxyXG4gIH1cclxuLy9SUyAwM0ZFQjIwMjVcclxuLy9SZXNldHMgdGFibGUgZGF0YSwgZmlsdGVycywgcGFnaW5hdGlvbiwgVUkgc2V0dGluZ3MsIGFuZCB1bnN1YnNjcmliZXMgZnJvbSBhbnkgc3Vic2NyaXB0aW9ucy5cclxuICBwcml2YXRlIHJlc2V0Q29tcG9uZW50U3RhdGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRhYmxlRGF0YSA9IFtdO1xyXG4gICAgdGhpcy5maWx0ZXJlZERhdGEgPSBbXTtcclxuICAgIHRoaXMudGFibGVIZWFkZXIgPSBbXTtcclxuICAgIHRoaXMub3B0aW9ucyA9IFtdO1xyXG4gICAgdGhpcy5zZWFyY2hUZXJtID0gJyc7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuICAgIHRoaXMuc2hvd0FkZFJvdyA9IHRydWU7XHJcbiAgICB0aGlzLnNob3dQYWdpbmF0aW9uID0gdHJ1ZTtcclxuICAgIHRoaXMuc2hvd0FjdGlvbnMgPSB0cnVlO1xyXG4gICAgdGhpcy5zaG93U2VhcmNoID0gdHJ1ZTtcclxuICAgIHRoaXMuaXRlbXNQZXJQYWdlID0gNTtcclxuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkUm93KCk6IHZvaWQge1xyXG4gICAgbGV0IG5ld0l0ZW0gPSB7fTtcclxuICAgICAgdGhpcy50YWJsZUhlYWRlci5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGlmKGl0ZW0uYXBpTmFtZSl7XHJcbiAgICAgICAgICBuZXdJdGVtW2l0ZW0uYXBpTmFtZV09IFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIC8vIGNvbnN0IHVwZGF0ZWRUYWJsZURhdGEgPSBbLi4udGhpcy50YWJsZURhdGEsIG5ld0l0ZW1dO1xyXG4gICAgLy8gdGhpcy50YWJsZURhdGEgPSB1cGRhdGVkVGFibGVEYXRhO1xyXG4gICAgLy8gdGhpcy5lbWl0VGFibGVEYXRhVmFsdWUodXBkYXRlZFRhYmxlRGF0YSk7XHJcbiAgICB0aGlzLnRhYmxlRGF0YS5wdXNoKG5ld0l0ZW0pO1xyXG4gICAgdGhpcy5maWx0ZXJlZERhdGEgPSBbLi4udGhpcy50YWJsZURhdGFdO1xyXG4gICAgdGhpcy51cGRhdGVQYWdpbmF0aW9uKCk7XHJcbiAgICB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLmVtaXRUYWJsZURhdGFWYWx1ZSh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVSYWRpbyhpdGVtOiBhbnksIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGl0ZW0udmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuZW1pdFRhYmxlRGF0YVZhbHVlKHRoaXMudGFibGVEYXRhKTtcclxuICB9XHJcbiAgLy8gVkQgMjNBdWcyNCBoYW5kbGUgIFR5cGVcclxuICAvLyB1cGRhdGVMYWJlbChyb3dJbmRleDogbnVtYmVyLCBsYWJlbDogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgLy8gICB0aGlzLnRhYmxlRGF0YVtyb3dJbmRleF1bbGFiZWxdID0gdmFsdWU7XHJcbiAgLy8gICB0aGlzLmVtaXRUYWJsZURhdGFWYWx1ZSh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgLy8gfVxyXG4gIC8vIE1vZGlmaWVkIHVwZGF0ZSBtZXRob2RzIHRvIHRyYWNrIGNoYW5nZXNcclxuICB1cGRhdGVMYWJlbChyb3dJbmRleDogbnVtYmVyLCBsYWJlbDogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnRhYmxlRGF0YVtyb3dJbmRleF1bbGFiZWxdID0gdmFsdWU7XHJcbiAgICB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzID0gdHJ1ZTtcclxuICAgIHRoaXMuZW1pdFRhYmxlRGF0YVZhbHVlKHRoaXMudGFibGVEYXRhKTtcclxuICB9XHJcbiAgLy9SUyAwM0ZFQjIwMjVcclxuICBkZWxldGVSb3cocm93SW5kZXg6IG51bWJlcil7XHJcbiAgICAvLyB0aGlzLnRhYmxlRGF0YS5zcGxpY2Uocm93SW5kZXgsIDEpO1xyXG4gICAgY29uc3QgYWN0dWFsSW5kZXggPSAodGhpcy5jdXJyZW50UGFnZSAtIDEpICogdGhpcy5pdGVtc1BlclBhZ2UgKyByb3dJbmRleDtcclxuICAgIHRoaXMudGFibGVEYXRhLnNwbGljZShhY3R1YWxJbmRleCwgMSk7XHJcbiAgICB0aGlzLmZpbHRlcmVkRGF0YSA9IFsuLi50aGlzLnRhYmxlRGF0YV07XHJcbiAgICB0aGlzLnVwZGF0ZVBhZ2luYXRpb24oKTtcclxuICAgIHRoaXMuaGFzVW5zYXZlZENoYW5nZXMgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuZW1pdFRhYmxlRGF0YVZhbHVlKHRoaXMudGFibGVEYXRhKTtcclxuICB9XHJcbiAgLy9SUyAwM0ZFQjIwMjVcclxuICAvLyBTYXZlcyB0aGUgY3VycmVudCB0YWJsZSBkYXRhIHN0YXRlLCByZXNldHMgdGhlIGhhc1Vuc2F2ZWRDaGFuZ2VzIGZsYWcsIGFuZCBlbWl0cyB0aGUgdXBkYXRlZCBkYXRhLlxyXG4gIHNhdmVUYWJsZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2F2ZWREYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnRhYmxlRGF0YSkpO1xyXG4gICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zYXZlVGFibGVEYXRhLmVtaXQodGhpcy50YWJsZURhdGEpO1xyXG4gIH1cclxuICAvL1JTIDAzRkVCMjAyNVxyXG4gIC8vICBSZXN0b3JlcyB0aGUgbGFzdCBzYXZlZCBzdGF0ZSBvZiB0aGUgdGFibGUgYW5kIHJlc2V0cyB0aGUgcGFnaW5hdGlvbiBhbmQgVUkgc3RhdGVcclxuICByZXZlcnRDaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy50YWJsZURhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuc2F2ZWREYXRhKSk7XHJcbiAgICB0aGlzLmZpbHRlcmVkRGF0YSA9IFsuLi50aGlzLnRhYmxlRGF0YV07XHJcbiAgICB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzID0gZmFsc2U7XHJcbiAgICB0aGlzLnVwZGF0ZVBhZ2luYXRpb24oKTtcclxuICAgIHRoaXMuZW1pdFRhYmxlRGF0YVZhbHVlKHRoaXMudGFibGVEYXRhKTtcclxuICB9XHJcbiAgZWRpdFJvdyhyb3dJbmRleDogbnVtYmVyKXtcclxuICAgIHZhciBhID0gMDtcclxuICAgIHRoaXMudGFibGVEYXRhLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgIGlmKGEgPT09IHJvd0luZGV4KXtcclxuICAgICAgICBlbGVtZW50LmVkaXQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGErKztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlTnVtYmVyKGl0ZW06IGFueSwgbGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZyl7XHJcbiAgICBpdGVtLnZhbHVlW2xhYmVsXSA9IHZhbHVlO1xyXG4gICAgdGhpcy5lbWl0VGFibGVEYXRhVmFsdWUodGhpcy50YWJsZURhdGEpO1xyXG4gIH1cclxuXHJcblxyXG4gIGVtaXRUYWJsZURhdGFWYWx1ZSh1cGRhdGVkVGFibGVEYXRhOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHVwZGF0ZWRUYWJsZURhdGEpO1xyXG4gIH1cclxuLy9SUyAwM0ZFQjIwMjVcclxuLy8gQ2xlYW5zIHVwIHJlc291cmNlcyBhbmQgcmVzZXRzIHRoZSBjb21wb25lbnQgc3RhdGUgd2hlbiB0aGUgY29tcG9uZW50IGlzIGRlc3Ryb3llZCB0byBwcmV2ZW50IG1lbW9yeSBsZWFrc1xyXG5uZ09uRGVzdHJveSgpIHtcclxuICB0aGlzLnJlc2V0Q29tcG9uZW50U3RhdGUoKTtcclxuICBjb25zb2xlLmxvZygnQ29tcG9uZW50IERlc3Ryb3llZCcpO1xyXG5cclxufVxyXG59IiwiPCEtLSBSUyAwM0ZFQjIwMjUgLS0+XHJcbjwhLS0gU2VhcmNoIEJhciAtLT5cclxuPCEtLSBTZWFyY2gsIFJldmVydCAmIFNhdmUgaW4gU2FtZSBMaW5lIC0tPlxyXG48ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0zXCI+XHJcbiAgPCEtLSBTZWFyY2ggQmFyIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJzZWFyY2gtY29udGFpbmVyIG1lLWF1dG9cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICA8aW5wdXQgXHJcbiAgICAgICAgdHlwZT1cInRleHRcIiBcclxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBzZWFyY2gtaW5wdXRcIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGVybVwiXHJcbiAgICAgICAgKGlucHV0KT1cInNlYXJjaCgpXCJcclxuICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiXHJcbiAgICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1pY29uXCI+XHJcbiAgICA8IS0tIFJTIDAzRkVCMjAyNSAtLT5cclxuICAgIDwhLS0gU2VhcmNoIGljb24gZm9yIHVzZXIgaW5wdXQgLS0+XHJcbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPlxyXG4gICAgICAgICAgPGNpcmNsZSBjeD1cIjExXCIgY3k9XCIxMVwiIHI9XCI4XCI+PC9jaXJjbGU+XHJcbiAgICAgICAgICA8bGluZSB4MT1cIjIxXCIgeTE9XCIyMVwiIHgyPVwiMTYuNjVcIiB5Mj1cIjE2LjY1XCI+PC9saW5lPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIEJ1dHRvbnMgLS0+XHJcbiAgPGRpdj5cclxuICAgIDwhLS0gUlMgMDNGRUIyMDI1IC0tPjwhLS0gQ2FuY2VsIGJ1dHRvbiAodmlzaWJsZSBvbmx5IHdoZW4gY2hhbmdlcyBhcmUgdW5zYXZlZCkgLS0+XHJcbiAgICA8YnV0dG9uIFxyXG4gICAgICBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5IG1lLTJcIiBcclxuICAgICAgKm5nSWY9XCJoYXNVbnNhdmVkQ2hhbmdlc1wiIFxyXG4gICAgICAoY2xpY2spPVwicmV2ZXJ0Q2hhbmdlcygpXCJcclxuICAgID5cclxuICAgICAgQ2FuY2VsXHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDwhLS0gU2F2ZSBidXR0b24gKGRpc2FibGVkIGlmIG5vIHVuc2F2ZWQgY2hhbmdlcykgLS0+PCEtLSBSUyAwM0ZFQjIwMjUgLS0+XHJcbiAgICA8YnV0dG9uIFxyXG4gICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIFxyXG4gICAgICBbZGlzYWJsZWRdPVwiIWhhc1Vuc2F2ZWRDaGFuZ2VzXCJcclxuICAgICAgKGNsaWNrKT1cInNhdmVUYWJsZSgpXCJcclxuICAgID5cclxuICAgICAgU2F2ZSBUYWJsZVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48IS0tIFRhYmxlIENvbnRhaW5lciAtLT5cclxuPGRpdiBjbGFzcz1cInRhYmxlLWNvbnRhaW5lclwiPlxyXG4gIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLXN0cmlwZWQgdGFibGUtYm9yZGVyZWRcIj5cclxuICAgIDx0aGVhZD5cclxuICAgICAgICA8IS0tIEhBIDI4REVDMjMgY2hhbmdlZCB0YWJsZSBoZWFkZXIgdmFsdWVzIGFuZCBjaGFuZ2VkIHRhYmxlIHNpemUgbG9naWMgdG8gZXZlbmx5IHZpc2libGUgLS0+XHJcbiAgICA8IS0tIDx0aD48aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgKGNoYW5nZSk9XCJzZWxlY3RBbGwoJGV2ZW50LnRhcmdldC5jaGVja2VkKVwiPjwvdGg+IC0tPlxyXG4gICAgICA8dHI+XHJcbiAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBoZWFkZXIgb2YgdGFibGVIZWFkZXJcIiBbc3R5bGUud2lkdGhdPVwiaGVhZGVyLndpZHRoIHx8ICdhdXRvJ1wiPlxyXG4gICAgICAgICAge3sgaGVhZGVyLmxhYmVsIH19XHJcbiAgICAgICAgPC90aD5cclxuICAgICAgICA8IS0tIEFjdGlvbnMgY29sdW1uIChvbmx5IGlmIHNob3dBY3Rpb25zIGlzIHRydWUpIC0tPjwhLS0gUlMgMDNGRUIyMDI1IC0tPlxyXG4gICAgICAgIDx0aCAqbmdJZj1cInNob3dBY3Rpb25zXCIgc3R5bGU9XCJ3aWR0aDogMTQwcHhcIiBjbGFzcz1cImFjdGlvbnMtY29sdW1uc1wiPkFjdGlvbnM8L3RoPlxyXG4gICAgICA8L3RyPlxyXG4gICAgPC90aGVhZD5cclxuICAgIDx0Ym9keT5cclxuICAgICAgPHRyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHBhZ2luYXRlZERhdGE7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGhlYWRlciBvZiB0YWJsZUhlYWRlclwiPlxyXG4gICAgICAgICAgPCEtLSBJbWFnZSB3aXRoIHRleHQgaW5wdXQgLS0+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyLmZsZFR5cGUgPT09ICdpbWFnZXRleHQnXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPGltZyBbc3JjXT1cIml0ZW0uaW1hZ2VTcmNcIiBbYWx0XT1cIml0ZW0uYWx0VGV4dFwiIHN0eWxlPVwid2lkdGg6IDM1cHg7IGhlaWdodDogMzJweDsgbWFyZ2luLXJpZ2h0OiA1cHg7XCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW1baGVhZGVyLmZpZWxkTmFtZV1cIiBcclxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZUxhYmVsKGksIGhlYWRlci5maWVsZE5hbWUsIGl0ZW1baGVhZGVyLmZpZWxkTmFtZV0pXCIgXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNoZS1saW5lLWlucHV0IHRhYmxlLWlucHV0XCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPCEtLSBJbWFnZSBvbmx5IC0tPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlci5mbGRUeXBlID09PSAnaW1hZ2UnXCI+XHJcbiAgICAgICAgICAgIDxpbWcgW3NyY109XCJpdGVtW2hlYWRlci5maWVsZE5hbWVdXCIgW2FsdF09XCJpdGVtLmFsdFRleHRcIiBzdHlsZT1cIndpZHRoOiAzNXB4OyBoZWlnaHQ6IDMycHg7XCI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8IS0tVkQgMjNBdWcyNCBoYW5kbGUgcmVhZE9ubHkgIC0tPlxyXG4gICAgICAgICAgPCEtLSBUZXh0IGlucHV0IC0tPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlci5mbGRUeXBlID09PSAnVGV4dCdcIj5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgXHJcbiAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImhlYWRlci5yZWFkT25seVwiIFxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXRlbS5lZGl0XCIgXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydlZGl0SW5wdXQnOiBpdGVtLmVkaXQgJiYgIWhlYWRlci5yZWFkT25seX1cIlxyXG4gICAgICAgICAgICAgIFtuZ01vZGVsXT1cIicnIHwgZ2V0VmFsdWU6IGl0ZW0gOiBoZWFkZXIuYXBpTmFtZVwiIFxyXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZUxhYmVsKGksIGhlYWRlci5hcGlOYW1lLCRldmVudClcIiBcclxuICAgICAgICAgICAgICBjbGFzcz1cInNoZS1saW5lLWlucHV0IHRhYmxlLWlucHV0XCI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8IS0tVkQgMjNBdWcyNCBoYW5kbGUgTnVtYmVyIFR5cGUgLS0+XHJcbiAgICAgICAgPCEtLSBOdW1iZXIgaW5wdXQgLS0+XHJcbiAgICAgICAgPCEtLSBWRCAyNkp1bjI0IC0gcGlwZSBjaGFuZ2UgdG8gaGFuZGxlIG11bHRpcGxlIG9iamVjdHMtLT5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXIuZmxkVHlwZSA9PT0gJ051bWJlcidcIj5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBcclxuICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiaGVhZGVyLnJlYWRPbmx5XCIgXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFpdGVtLmVkaXRcIiBcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2VkaXRJbnB1dCc6IGl0ZW0uZWRpdCAmJiAhaGVhZGVyLnJlYWRPbmx5fVwiXHJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwiJycgfCBnZXRWYWx1ZTogaXRlbSA6IGhlYWRlci5hcGlOYW1lXCIgXHJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlTGFiZWwoaSwgaGVhZGVyLmFwaU5hbWUsJGV2ZW50KVwiIFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwic2hlLWxpbmUtaW5wdXQgdGFibGUtaW5wdXRcIj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDwhLS0gUmFkaW8gaW5wdXQgLS0+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyLmZsZFR5cGUgPT09ICdyYWRpbydcIj5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYWRpb1wiIFxyXG4gICAgICAgICAgICAgIFtuYW1lXT1cIml0ZW0ubmFtZVwiIFxyXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cIml0ZW0udmFsdWUgPT0gaGVhZGVyLmZpZWxkTmFtZVwiICBcclxuICAgICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlUmFkaW8oaXRlbSwgaGVhZGVyLmZpZWxkTmFtZSlcIj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPCEtLSBBY3Rpb25zIGNvbHVtbiAtLT48IS0tIFJTIDAzRkVCMjAyNSAtLT5cclxuICAgICAgICA8dGQgKm5nSWY9XCJzaG93QWN0aW9uc1wiIGNsYXNzPVwiYWN0aW9ucy1jb2x1bW5cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWFyb3VuZFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMFwiIChjbGljayk9XCJlZGl0Um93KGkpXCI+XHJcbiAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAzQTlGNFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIgMjBoOVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2LjUgMy41YTIuMTIxIDIuMTIxIDAgMCAxIDMgM0w3IDE5bC00IDEgMS00WlwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwibTE1IDUgMyAzXCIgLz5cclxuICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGl0XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMFwiIChjbGljayk9XCJkZWxldGVSb3coaSlcIj5cclxuICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjRjQ0MzM2XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zIDZoMThcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk04IDZWNGEyIDIgMCAwIDEgMi0yaDRhMiAyIDAgMCAxIDIgMnYyXCIgLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJtMTAgMTEgMSA2XCIgLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJtMTQgMTEtMSA2XCIgLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNCA2bDEgMTRhMiAyIDAgMCAwIDIgMmgxMGEyIDIgMCAwIDAgMi0ybDEtMTRcIiAvPlxyXG4gICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVsZXRlXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC90cj5cclxuICAgIDwvdGJvZHk+XHJcbiAgPC90YWJsZT5cclxuPC9kaXY+XHJcblxyXG48IS0tIFBhZ2luYXRpb24gLS0+PCEtLSBSUyAwM0ZFQjIwMjUgLS0+XHJcbjxkaXYgKm5nSWY9XCJzaG93UGFnaW5hdGlvblwiIGNsYXNzPVwicGFnaW5hdGlvbi1jb250YWluZXJcIj5cclxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaXRlbXMtcGVyLXBhZ2VcIj5cclxuICAgICAgPHNwYW4+SXRlbXMgcGVyIHBhZ2U6PC9zcGFuPlxyXG4gICAgICA8c2VsZWN0IFsobmdNb2RlbCldPVwiaXRlbXNQZXJQYWdlXCIgKGNoYW5nZSk9XCJ1cGRhdGVQYWdpbmF0aW9uKClcIiBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtXCI+XHJcbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjVcIj41PC9vcHRpb24+XHJcbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjEwXCI+MTA8L29wdGlvbj5cclxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwiMjBcIj4yMDwvb3B0aW9uPlxyXG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCI1MFwiPjUwPC9vcHRpb24+XHJcbiAgICAgIDwvc2VsZWN0PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicGFnZS1pbmZvIG1zLTMgbWUtM1wiPlxyXG4gICAgICB7eygoY3VycmVudFBhZ2UgLSAxKSAqIGl0ZW1zUGVyUGFnZSArIDEpfX0gLSB7e01hdGgubWluKGN1cnJlbnRQYWdlICogaXRlbXNQZXJQYWdlLCB0b3RhbEl0ZW1zKX19IG9mIHt7dG90YWxJdGVtc319XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuYXYgYXJpYS1sYWJlbD1cIlRhYmxlIHBhZ2luYXRpb25cIj5cclxuICAgICAgPCEtLSBGaXJzdCBwYWdlIC0tPjwhLS0gUlMgMDNGRUIyMDI1IC0tPlxyXG4gICAgICA8dWwgY2xhc3M9XCJwYWdpbmF0aW9uIG1iLTBcIj5cclxuICAgICAgICA8bGkgY2xhc3M9XCJwYWdlLWl0ZW1cIiBbY2xhc3MuZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UgPT09IDFcIj5cclxuICAgICAgICAgIDxhIGNsYXNzPVwicGFnZS1saW5rXCIgKGNsaWNrKT1cInNldFBhZ2UoMSlcIj7CqzwvYT5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaSBjbGFzcz1cInBhZ2UtaXRlbVwiIFtjbGFzcy5kaXNhYmxlZF09XCJjdXJyZW50UGFnZSA9PT0gMVwiPlxyXG4gICAgICAgICAgPGEgY2xhc3M9XCJwYWdlLWxpbmtcIiAoY2xpY2spPVwic2V0UGFnZShjdXJyZW50UGFnZSAtIDEpXCI+4oC5PC9hPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPCEtLSBEeW5hbWljIHBhZ2luYXRpb24gLS0+PCEtLSBSUyAwM0ZFQjIwMjUgLS0+XHJcbiAgICAgICAgPGxpIGNsYXNzPVwicGFnZS1pdGVtXCIgKm5nRm9yPVwibGV0IHBhZ2Ugb2YgcGFnZXNcIiBbY2xhc3MuYWN0aXZlXT1cInBhZ2UgPT09IGN1cnJlbnRQYWdlXCI+XHJcbiAgICAgICAgICA8YSBjbGFzcz1cInBhZ2UtbGlua1wiIChjbGljayk9XCJzZXRQYWdlKHBhZ2UpXCI+e3twYWdlfX08L2E+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGkgY2xhc3M9XCJwYWdlLWl0ZW1cIiBbY2xhc3MuZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UgPT09IHBhZ2VzLmxlbmd0aFwiPlxyXG4gICAgICAgICAgPGEgY2xhc3M9XCJwYWdlLWxpbmtcIiAoY2xpY2spPVwic2V0UGFnZShjdXJyZW50UGFnZSArIDEpXCI+4oC6PC9hPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPCEtLSBMYXN0IHBhZ2UgLS0+XHJcbiAgICAgICAgPGxpIGNsYXNzPVwicGFnZS1pdGVtXCIgW2NsYXNzLmRpc2FibGVkXT1cImN1cnJlbnRQYWdlID09PSBwYWdlcy5sZW5ndGhcIj5cclxuICAgICAgICAgIDxhIGNsYXNzPVwicGFnZS1saW5rXCIgKGNsaWNrKT1cInNldFBhZ2UocGFnZXMubGVuZ3RoKVwiPsK7PC9hPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgIDwvdWw+XHJcbiAgICA8L25hdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjwhLS0gUlMgMDNGRUIyMDI1IC0tPlxyXG48IS0tIEFkZCBSb3cgQnV0dG9uIC0tPlxyXG48ZGl2ICpuZ0lmPVwic2hvd0FkZFJvd1wiICAoY2xpY2spPVwiYWRkUm93KClcIiBjbGFzcz1cImFkZFJvd0NsYXNzXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNpcmNsZS1idXR0b25cIj4rPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
347
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL2N1c3RvbS10YWJsZS9jdXN0b20tdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tLXRhYmxlL2N1c3RvbS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7OztBQW1CekcsTUFBTSxPQUFPLG9CQUFvQjtJQW9DWDtJQUFvQztJQUFrQztJQUFzQztJQW5DdkgsUUFBUSxDQUFVO0lBQ2pCLFdBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUN6RCxhQUFhLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFDckUsU0FBUyxDQUFlO0lBQ3hCLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDakIsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUNmLFlBQVksR0FBRyxFQUFFLENBQUMsQ0FBQyxpQ0FBaUM7SUFDdEQsY0FBYztJQUNkLG9KQUFvSjtJQUNwSixVQUFVLEdBQVksSUFBSSxDQUFDO0lBQzNCLGNBQWMsR0FBWSxJQUFJLENBQUM7SUFDL0IsV0FBVyxHQUFZLElBQUksQ0FBQztJQUM1QixVQUFVLEdBQVksSUFBSSxDQUFDO0lBQzNCLFlBQVksR0FBVyxDQUFDLENBQUM7SUFDdkIsYUFBYSxDQUFTO0lBQ3RCLFNBQVMsQ0FBUyxDQUFDLG9DQUFvQztJQUN2RCxPQUFPLENBQU07SUFDYixXQUFXLENBQU07SUFDakIsU0FBUyxDQUFTO0lBQ2xCLE1BQU0sQ0FBUztJQUNmLFNBQVMsR0FBWSxLQUFLLENBQUM7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aEMsU0FBUzsrQkFDRSxrQkFBa0I7c0tBTW5CLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQW1CRSxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuLy8gSEEgMTlERUMyMyBpbXBvcnRlZCB0cmFuc2xhdGlvbiBzZXJ2aWNlXHJcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaTE4bi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGFibGVXcmFwcGVyIH0gZnJvbSAnLi4vLi4vbW9kZWwvdGFibGVXcmFwcGVyJztcclxuaW1wb3J0IHsgU2FsZXNmb3JjZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zYWxlc2ZvcmNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBRdWVzdGlvbiB9IGZyb20gJy4uLy4uL3dyYXBwZXInO1xyXG5pbXBvcnQgeyBEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IEFQSU1ldGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2FwaW1ldGEnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ2hhbmdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NoYW5nZS5zZXJ2aWNlJztcclxuXHJcbmRlY2xhcmUgdmFyICQ6IGFueTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWN1c3RvbS10YWJsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2N1c3RvbS10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY3VzdG9tLXRhYmxlLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEN1c3RvbVRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIHF1ZXN0aW9uOiBRdWVzdGlvblxyXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgc2F2ZVRhYmxlRGF0YTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICB0YWJsZUluZm86IFRhYmxlV3JhcHBlcjtcclxuICB0YWJsZUhlYWRlciA9IFtdO1xyXG4gIHRhYmxlRGF0YSA9IFtdO1xyXG4gIGZpbHRlcmVkRGF0YSA9IFtdOyAvLyBOZXcgcHJvcGVydHkgZm9yIGZpbHRlcmVkIGRhdGFcclxuLy9SUyAwM0ZFQjIwMjVcclxuLy8gRGVmYXVsdCBVSSBjb25maWd1cmF0aW9ucyB0byBjb250cm9sIHJvdyBhZGRpdGlvbiwgcGFnaW5hdGlvbiwgYWN0aW9ucyBjb2x1bW4gdmlzaWJpbGl0eSwgc2VhcmNoIGZ1bmN0aW9uYWxpdHksIGFuZCB0aGUgbnVtYmVyIG9mIGl0ZW1zIHBlciBwYWdlLlxyXG5zaG93QWRkUm93OiBib29sZWFuID0gdHJ1ZTtcclxuc2hvd1BhZ2luYXRpb246IGJvb2xlYW4gPSB0cnVlO1xyXG5zaG93QWN0aW9uczogYm9vbGVhbiA9IHRydWU7XHJcbnNob3dTZWFyY2g6IGJvb2xlYW4gPSB0cnVlO1xyXG5pdGVtc1BlclBhZ2U6IG51bWJlciA9IDU7XHJcbiAgYWRkUm93Q29sU3BhbjogbnVtYmVyO1xyXG4gIHRhYmxlU2l6ZTogbnVtYmVyOyAvLyBIQSAyOERFQzIzIHRhYmxlIHNpemUgZGVjbGFyYXRpb25cclxuICBvYmpOYW1lOiBhbnk7XHJcbiAgZmlsdGVyTG9naWM6IGFueTtcclxuICBmaWVsZE1ldGE6IHN0cmluZztcclxuICBmaXJTdHI6IHN0cmluZztcclxuICBzZWFyY2hCb3g6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBhcGlNZXRhOiBzdHJpbmc7XHJcbiAgcHVibGljIG9wdGlvbnM6IHN0cmluZ1tdO1xyXG4gIGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBwdWJsaWMgbGFiZWxGaWVsZDogc3RyaW5nO1xyXG5cclxuICAvL1JTIDAzRkVCMjAyNVxyXG4gIC8vIE5ldyBwcm9wZXJ0aWVzIGZvciBzZWFyY2ggYW5kIHBhZ2luYXRpb25cclxuICBzZWFyY2hUZXJtOiBzdHJpbmcgPSAnJztcclxuICBjdXJyZW50UGFnZTogbnVtYmVyID0gMTtcclxuICB0b3RhbEl0ZW1zOiBudW1iZXIgPSAwO1xyXG4gIHBhZ2VzOiBudW1iZXJbXSA9IFtdO1xyXG4gIE1hdGggPSBNYXRoO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhbmdlU2VydmljZTogQ2hhbmdlU2VydmljZSxwdWJsaWMgaTE4blNlcnZpY2U6IEkxOG5TZXJ2aWNlLCBwcml2YXRlIHNmU2VydmljZTogU2FsZXNmb3JjZVNlcnZpY2UsIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlKSB7IH1cclxuICAvLyBSUyAwOURFQzI0IENoYW5nZWQga2V5c1xyXG4gIC8vIEFkZCBuZXcgcHJvcGVydGllcyBmb3Igc2F2ZSBmdW5jdGlvbmFsaXR5XHJcbiAgaGFzVW5zYXZlZENoYW5nZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzYXZlZERhdGE6IGFueVtdID0gW107XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gICAgLy8gdGhpcy50YWJsZURhdGEgPSBbXTtcclxuLy8gQ2xlYXIgYW55IGV4aXN0aW5nIGRhdGEgZmlyc3RcclxudGhpcy5yZXNldENvbXBvbmVudFN0YXRlKCk7XHJcbnNldFRpbWVvdXQoKCkgPT4gY29uc29sZS5sb2coJ0FmdGVyIHJlc2V0OicsIHRoaXMudGFibGVEYXRhKSwgMjAwMCk7XHJcbnRyeSB7XHJcbiAgY29uc3QgcGFyc2VkTWV0YSA9IEpTT04ucGFyc2UodGhpcy5xdWVzdGlvblsnZmllbGRzTWV0YSddKTtcclxuICBpZiAoIXBhcnNlZE1ldGEgfHwgIUFycmF5LmlzQXJyYXkocGFyc2VkTWV0YSkgfHwgcGFyc2VkTWV0YS5sZW5ndGggPT09IDApIHtcclxuICAgIGNvbnNvbGUud2FybignTm8gdmFsaWQgbWV0YWRhdGEgcHJvdmlkZWQnKTtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIC8vUlMgMDNGRUIyMDI1XHJcbiAgLy8gRXh0cmFjdHMgdGFibGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBkeW5hbWljYWxseSBmcm9tIG1ldGFkYXRhIGFuZCBhcHBsaWVzIHRoZW0sIGVuc3VyaW5nIGZsZXhpYmlsaXR5IGluIFVJIGN1c3RvbWl6YXRpb25cclxuICBpZiAocGFyc2VkTWV0YVswXT8udGFibGVDb25maWcpIHtcclxuICAgIGNvbnN0IGNvbmZpZyA9IHBhcnNlZE1ldGFbMF0udGFibGVDb25maWc7XHJcbiAgICB0aGlzLnNob3dBZGRSb3cgPSBjb25maWcuc2hvd0FkZFJvdyAhPT0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dQYWdpbmF0aW9uID0gY29uZmlnLnNob3dQYWdpbmF0aW9uICE9PSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0FjdGlvbnMgPSBjb25maWcuc2hvd0FjdGlvbnMgIT09IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93U2VhcmNoID0gY29uZmlnLnNob3dTZWFyY2ggIT09IGZhbHNlO1xyXG4gICAgdGhpcy5pdGVtc1BlclBhZ2UgPSBjb25maWcuaXRlbXNQZXJQYWdlIHx8IDU7XHJcbiAgICBcclxuICAgIC8vIFJlbW92ZSB0aGUgY29uZmlnIG9iamVjdCBmcm9tIGhlYWRlcnNcclxuICAgIHRoaXMudGFibGVIZWFkZXIgPSBwYXJzZWRNZXRhLnNsaWNlKDEpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICAvLyBJZiBubyBjb25maWcgb2JqZWN0IGZvdW5kLCB1c2UgYWxsIG9iamVjdHMgYXMgaGVhZGVyc1xyXG4gICAgdGhpcy50YWJsZUhlYWRlciA9IHBhcnNlZE1ldGE7XHJcbiAgfVxyXG5cclxuICAgIC8vIHRoaXMudGFibGVIZWFkZXIgPSBKU09OLnBhcnNlKHRoaXMucXVlc3Rpb25bJ2ZpZWxkc01ldGEnXSk7XHJcbiAgICB0aGlzLnRhYmxlU2l6ZSA9IDEwL3RoaXMudGFibGVIZWFkZXIubGVuZ3RoO1xyXG4vLyAxMkpVTjI0IC0gZGVmYXVsdCB0YWJsZSB2YWx1ZVxyXG4gICAgaWYodGhpcy5xdWVzdGlvbj8uaW5wdXQpe1xyXG4gICAgICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy5xdWVzdGlvbj8uaW5wdXQ7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZERhdGEgPSBbLi4udGhpcy50YWJsZURhdGFdO1xyXG4gICAgICB0aGlzLnVwZGF0ZVBhZ2luYXRpb24oKTtcclxuICAgIH1cclxuICAgIGlmKHRoaXMuYXBpTWV0YSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucyA9IFtdO1xyXG4gICAgICBsZXQgYXBpT2JqOiBBUElNZXRhID0gSlNPTi5wYXJzZSh0aGlzLmFwaU1ldGEpO1xyXG4gICAgICB0aGlzLmxhYmVsRmllbGQgPSBhcGlPYmouZmllbGQ7XHJcbiAgICAgIGlmKGFwaU9iai5lbmRwb2ludCl7XHJcbiAgICAgICAgdGhpcy5kYXRhU2VydmljZS5hcGlSZXNwb25zZShhcGlPYmouZW5kcG9pbnQpPy5zdWJzY3JpYmUoKGFwaVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICBsZXQgcmVzcG9uc2VzO1xyXG4gICAgICAgICAgaWYoYXBpT2JqLnZhcmlhYmxlKXtcclxuICAgICAgICAgICAgIC8vIFZEIDIyTWF5MjQgLSBoYW5kbGluZyBtdWx0aXBsZSBjaGlsZCBvYmplY3RzXHJcbiAgICAgICAgICAgIHJlc3BvbnNlcyA9ICB0aGlzLmRhdGFTZXJ2aWNlLmdldFZhbHVlKGFwaVJlc3BvbnNlLGFwaU9iai52YXJpYWJsZSk7XHJcbiAgICAgICAgICAgIGxldCByZXN1bHRzID0gW107XHJcbiAgICAgICAgICAgIC8vIEhBIDE5SkFOMjQgVG8gYXZvaWQgdW5kZWZpbmVkIGVycm9yIGluIGNvbnNvbGVcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNwb25zZXM/Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgdmFyIHJlc3AgPSByZXNwb25zZXNbaV07XHJcbiAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHJlc3ApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHJlc3VsdHM7XHJcbiAgICAgICAgICB9ZWxzZXsgIC8vIFZEIDE5SkFOMjQgLSBpZiByZXNwb25zZSBoYXMgdmFsdWUod2hpY2ggaXMgYXJyYXkpIG9ubHlcclxuICAgICAgICAgICAgcmVzcG9uc2VzID0gYXBpUmVzcG9uc2U7XHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHJlc3BvbnNlcztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMub3B0aW9ucy5tYXAoKG9iajogYW55KSA9PiAoeyAuLi5vYmosIGVkaXQ6IGZhbHNlIH0pKTtcclxuICAgICAgICAgIC8vIFJlZmVyZW5jZSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9Abmctc2VsZWN0L25nLXNlbGVjdFxyXG4gICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMub3B0aW9ucztcclxuICAgICAgICBjb25zb2xlLmxvZygndGFibGVEYXRhJywgdGhpcy50YWJsZURhdGEpO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICBcclxuICAgICAgLy8gVkQgTk9WMjMgLSBoYW5kbGUgdGhlIGRlcGVuZGVudCB1cGRhdGUgZm9yIGRyb3Bkb3duXHJcbiAgICAgIGxldCBzb3VyY2VJZCA9IGFwaU9iai5zb3VyY2VRdWVzdGlvbklkO1xyXG4gICAgICBsZXQgZmllbGQgPSBhcGlPYmouZmllbGQ7ICAgICAgICAvLyBWRCAxM01BWTI0IC0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzXHJcbiAgICAgIGlmKHNvdXJjZUlkKXtcclxuICAgICAgICAvLyAvLyBWRCAxME1heTI0IFN1YnNjcmliZSBmb3IgdGhlIGNoYW5nZXNcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuY2hhbmdlU2VydmljZS5jaGFuZ2VBbm5vdW5jZWQkLnN1YnNjcmliZShcclxuICAgICAgICAgIChjaGFuZ2VWYWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBpZihjaGFuZ2VWYWx1ZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICBpZihjaGFuZ2VWYWx1ZS52YWx1ZU9iaiAhPSB1bmRlZmluZWQgJiYgY2hhbmdlVmFsdWUuZnJvbVF1ZXN0aW9uSWQgPT0gYXBpT2JqLnNvdXJjZVF1ZXN0aW9uSWQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjaGFuZ2VzIGhhcHBlbicpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gdGhpcy5vcHRpb25zLm1hcCgob2JqOiBhbnkpID0+ICh7IC4uLm9iaiwgZWRpdDogZmFsc2UgfSkpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGl0ZW0gPSBjaGFuZ2VWYWx1ZS52YWx1ZU9iajtcclxuICAgICAgICAgICAgICAgIGxldCB2YWxpZEl0ZW0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgIC8vIFZEIDEzTUFZMjQgLSBiaW5kIGR5bmFtaWMgZmllbGRcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMudGFibGVEYXRhLmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlRGF0YS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgLy8gVkQgMjZKdW4yNCAtIHRvIGhhbmRsZSBtdWx0aXBsZSBvYmplY3RzXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2JqRWxlbWVudFZhbHVlID0gdGhpcy5kYXRhU2VydmljZS5nZXRWYWx1ZShlbGVtZW50LGZpZWxkKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBvYmpJdGVtVmFsdWUgPSB0aGlzLmRhdGFTZXJ2aWNlLmdldFZhbHVlKGl0ZW0sZmllbGQpXHJcbiAgICAgICAgICAgICAgICAgICAgaWYob2JqRWxlbWVudFZhbHVlID09IG9iakl0ZW1WYWx1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRJdGVtID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIGlmKHZhbGlkSXRlbSl7XHJcbiAgICAgICAgICAgICAgICAvLyAgIGlmKHRoaXMudGFibGVEYXRhLmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICAgICAgLy8gICAgIHRoaXMudGFibGVEYXRhID0gWy4uLnRoaXMudGFibGVEYXRhLGl0ZW1dO1xyXG4gICAgICAgICAgICAgICAgLy8gICAgIHRoaXMuZW1pdFRhYmxlRGF0YVZhbHVlKHRoaXMudGFibGVEYXRhKTtcclxuICAgICAgICAgICAgICAgIC8vICAgfWVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gICAgIHRoaXMudGFibGVEYXRhLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy5lbWl0VGFibGVEYXRhVmFsdWUodGhpcy50YWJsZURhdGEpO1xyXG4gICAgICAgICAgICAgICAgLy8gICB9XHJcbiAgICAgICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgICAgICAvL1JTIDE0RkVCMjAyNVxyXG4gICAgICAgICAgICAgICAgLy9VcGRhdGUgUGFnaW5hdGlvbiBiZWZvcmUgZW1pdFxyXG4gICAgICAgICAgICAgICAgaWYgKHZhbGlkSXRlbSkge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy50YWJsZURhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVEYXRhID0gWy4uLnRoaXMudGFibGVEYXRhLCBpdGVtXTtcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlRGF0YS5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBmaWx0ZXJlZERhdGEgYW5kIHBhZ2luYXRpb25cclxuICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZERhdGEgPSBbLi4udGhpcy50YWJsZURhdGFdO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVBhZ2luYXRpb24oKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0VGFibGVEYXRhVmFsdWUodGhpcy50YWJsZURhdGEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZVNlcnZpY2UuY29uZmlybUNoYW5nZShhcGlPYmouc291cmNlUXVlc3Rpb25JZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnVwZGF0ZVBhZ2luYXRpb24oKTtcclxuICAgIC8vUlMgMDNGRUIyMDI1XHJcbiAgICAvL0hhbmRsZXMgZXJyb3JzIGR1cmluZyBtZXRhZGF0YSBwYXJzaW5nIGJ5IHNldHRpbmcgZGVmYXVsdCB2YWx1ZXMgdG8gZW5zdXJlIHRoZSB0YWJsZSBmdW5jdGlvbnMgcHJvcGVybHlcclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgY29uc29sZS5lcnJvcignRXJyb3IgcGFyc2luZyBmaWVsZHNNZXRhOicsIGVycm9yKTtcclxuICAgIHRoaXMuc2hvd0FkZFJvdyA9IHRydWU7XHJcbiAgICB0aGlzLnNob3dQYWdpbmF0aW9uID0gdHJ1ZTtcclxuICAgIHRoaXMuc2hvd0FjdGlvbnMgPSB0cnVlO1xyXG4gICAgdGhpcy5zaG93U2VhcmNoID0gdHJ1ZTtcclxuICAgIHRoaXMuaXRlbXNQZXJQYWdlID0gNTtcclxuICB9XHJcbiAgLy9SUyAwM0ZFQjIwMjVcclxuICAvLyBJbml0aWFsaXplIHNhdmVkIGRhdGFcclxuICBpZiAodGhpcy5xdWVzdGlvbj8uaW5wdXQpIHtcclxuICAgIHRoaXMuc2F2ZWREYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnF1ZXN0aW9uLmlucHV0KSk7XHJcbiAgfVxyXG4gICAgY29uc29sZS5sb2coJ3RhYmxlRGF0YScsIHRoaXMudGFibGVEYXRhKTtcclxuICAgIGNvbnNvbGUubG9nKCd0YWJsZUhlYWRlcicsIHRoaXMudGFibGVIZWFkZXIpO1xyXG4gICAgY29uc29sZS5sb2coJ3RhYmxlSW5mbycsIHRoaXMudGFibGVJbmZvKTtcclxuICB9XHJcbiAgLy9SUyAwM0ZFQjIwMjVcclxuICAvLyDihpIgRmlsdGVycyB0YWJsZSBkYXRhIGJhc2VkIG9uIHVzZXIgaW5wdXQgYW5kIHVwZGF0ZXMgcGFnaW5hdGlvbiBhY2NvcmRpbmdseS5cclxuICBzZWFyY2goKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuc2VhcmNoVGVybS50cmltKCkpIHtcclxuICAgICAgdGhpcy5maWx0ZXJlZERhdGEgPSBbLi4udGhpcy50YWJsZURhdGFdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3Qgc2VhcmNoVGVybUxvd2VyID0gdGhpcy5zZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWREYXRhID0gdGhpcy50YWJsZURhdGEuZmlsdGVyKGl0ZW0gPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRhYmxlSGVhZGVyLnNvbWUoaGVhZGVyID0+IHtcclxuICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5kYXRhU2VydmljZS5nZXRWYWx1ZShpdGVtLCBoZWFkZXIuYXBpTmFtZSk7XHJcbiAgICAgICAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm1Mb3dlcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICB0aGlzLnVwZGF0ZVBhZ2luYXRpb24oKTtcclxuICB9XHJcbi8vUlMgMDNGRUIyMDI1XHJcbi8vIENhbGN1bGF0ZXMgdG90YWwgcGFnZXMsIHVwZGF0ZXMgdGhlIHBhZ2UgbGlzdCwgYW5kIGVuc3VyZXMgdGhlIGN1cnJlbnQgcGFnZSBpcyB3aXRoaW4gdmFsaWQgYm91bmRzLlxyXG4gIHVwZGF0ZVBhZ2luYXRpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLnRvdGFsSXRlbXMgPSB0aGlzLmZpbHRlcmVkRGF0YS5sZW5ndGg7XHJcbiAgICBjb25zdCB0b3RhbFBhZ2VzID0gTWF0aC5jZWlsKHRoaXMudG90YWxJdGVtcyAvIHRoaXMuaXRlbXNQZXJQYWdlKTtcclxuICAgIHRoaXMucGFnZXMgPSBBcnJheS5mcm9tKHtsZW5ndGg6IHRvdGFsUGFnZXN9LCAoXywgaSkgPT4gaSArIDEpO1xyXG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2UgPiB0b3RhbFBhZ2VzKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0b3RhbFBhZ2VzIHx8IDE7XHJcbiAgfVxyXG4gIH1cclxuLy9SUyAwM0ZFQjIwMjVcclxuLy9SZXR1cm5zIGEgcGFnaW5hdGVkIHN1YnNldCBvZiBmaWx0ZXJlZERhdGEgYmFzZWQgb24gdGhlIGN1cnJlbnQgcGFnZSBhbmQgaXRlbXMgcGVyIHBhZ2VcclxuICBnZXQgcGFnaW5hdGVkRGF0YSgpOiBhbnlbXSB7XHJcbiAgICBjb25zdCBzdGFydEluZGV4ID0gKHRoaXMuY3VycmVudFBhZ2UgLSAxKSAqIHRoaXMuaXRlbXNQZXJQYWdlO1xyXG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWREYXRhLnNsaWNlKHN0YXJ0SW5kZXgsIHN0YXJ0SW5kZXggKyB0aGlzLml0ZW1zUGVyUGFnZSk7XHJcbiAgfVxyXG4vL1JTIDAzRkVCMjAyNVxyXG4vL1VwZGF0ZXMgY3VycmVudFBhZ2Ugd2hlbiB0aGUgdXNlciBzZWxlY3RzIGEgZGlmZmVyZW50IHBhZ2VcclxuICBzZXRQYWdlKHBhZ2U6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKHBhZ2UgPj0gMSAmJiBwYWdlIDw9IHRoaXMucGFnZXMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdlO1xyXG4gICAgfVxyXG4gIH1cclxuLy9SUyAwM0ZFQjIwMjVcclxuLy9SZXNldHMgdGFibGUgZGF0YSwgZmlsdGVycywgcGFnaW5hdGlvbiwgVUkgc2V0dGluZ3MsIGFuZCB1bnN1YnNjcmliZXMgZnJvbSBhbnkgc3Vic2NyaXB0aW9ucy5cclxuICBwcml2YXRlIHJlc2V0Q29tcG9uZW50U3RhdGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRhYmxlRGF0YSA9IFtdO1xyXG4gICAgdGhpcy5maWx0ZXJlZERhdGEgPSBbXTtcclxuICAgIHRoaXMudGFibGVIZWFkZXIgPSBbXTtcclxuICAgIHRoaXMub3B0aW9ucyA9IFtdO1xyXG4gICAgdGhpcy5zZWFyY2hUZXJtID0gJyc7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuICAgIHRoaXMuc2hvd0FkZFJvdyA9IHRydWU7XHJcbiAgICB0aGlzLnNob3dQYWdpbmF0aW9uID0gdHJ1ZTtcclxuICAgIHRoaXMuc2hvd0FjdGlvbnMgPSB0cnVlO1xyXG4gICAgdGhpcy5zaG93U2VhcmNoID0gdHJ1ZTtcclxuICAgIHRoaXMuaXRlbXNQZXJQYWdlID0gNTtcclxuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkUm93KCk6IHZvaWQge1xyXG4gICAgbGV0IG5ld0l0ZW0gPSB7fTtcclxuICAgICAgdGhpcy50YWJsZUhlYWRlci5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGlmKGl0ZW0uYXBpTmFtZSl7XHJcbiAgICAgICAgICBuZXdJdGVtW2l0ZW0uYXBpTmFtZV09IFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIC8vIGNvbnN0IHVwZGF0ZWRUYWJsZURhdGEgPSBbLi4udGhpcy50YWJsZURhdGEsIG5ld0l0ZW1dO1xyXG4gICAgLy8gdGhpcy50YWJsZURhdGEgPSB1cGRhdGVkVGFibGVEYXRhO1xyXG4gICAgLy8gdGhpcy5lbWl0VGFibGVEYXRhVmFsdWUodXBkYXRlZFRhYmxlRGF0YSk7XHJcbiAgICB0aGlzLnRhYmxlRGF0YS5wdXNoKG5ld0l0ZW0pO1xyXG4gICAgdGhpcy5maWx0ZXJlZERhdGEgPSBbLi4udGhpcy50YWJsZURhdGFdO1xyXG4gICAgdGhpcy51cGRhdGVQYWdpbmF0aW9uKCk7XHJcbiAgICB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLmVtaXRUYWJsZURhdGFWYWx1ZSh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVSYWRpbyhpdGVtOiBhbnksIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGl0ZW0udmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuZW1pdFRhYmxlRGF0YVZhbHVlKHRoaXMudGFibGVEYXRhKTtcclxuICB9XHJcbiAgLy8gVkQgMjNBdWcyNCBoYW5kbGUgIFR5cGVcclxuICAvLyB1cGRhdGVMYWJlbChyb3dJbmRleDogbnVtYmVyLCBsYWJlbDogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgLy8gICB0aGlzLnRhYmxlRGF0YVtyb3dJbmRleF1bbGFiZWxdID0gdmFsdWU7XHJcbiAgLy8gICB0aGlzLmVtaXRUYWJsZURhdGFWYWx1ZSh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgLy8gfVxyXG4gIC8vIE1vZGlmaWVkIHVwZGF0ZSBtZXRob2RzIHRvIHRyYWNrIGNoYW5nZXNcclxuICB1cGRhdGVMYWJlbChyb3dJbmRleDogbnVtYmVyLCBsYWJlbDogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnRhYmxlRGF0YVtyb3dJbmRleF1bbGFiZWxdID0gdmFsdWU7XHJcbiAgICB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzID0gdHJ1ZTtcclxuICAgIHRoaXMuZW1pdFRhYmxlRGF0YVZhbHVlKHRoaXMudGFibGVEYXRhKTtcclxuICB9XHJcbiAgLy9SUyAwM0ZFQjIwMjVcclxuICBkZWxldGVSb3cocm93SW5kZXg6IG51bWJlcil7XHJcbiAgICAvLyB0aGlzLnRhYmxlRGF0YS5zcGxpY2Uocm93SW5kZXgsIDEpO1xyXG4gICAgY29uc3QgYWN0dWFsSW5kZXggPSAodGhpcy5jdXJyZW50UGFnZSAtIDEpICogdGhpcy5pdGVtc1BlclBhZ2UgKyByb3dJbmRleDtcclxuICAgIHRoaXMudGFibGVEYXRhLnNwbGljZShhY3R1YWxJbmRleCwgMSk7XHJcbiAgICB0aGlzLmZpbHRlcmVkRGF0YSA9IFsuLi50aGlzLnRhYmxlRGF0YV07XHJcbiAgICB0aGlzLnVwZGF0ZVBhZ2luYXRpb24oKTtcclxuICAgIHRoaXMuaGFzVW5zYXZlZENoYW5nZXMgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuZW1pdFRhYmxlRGF0YVZhbHVlKHRoaXMudGFibGVEYXRhKTtcclxuICB9XHJcbiAgLy9SUyAwM0ZFQjIwMjVcclxuICAvLyBTYXZlcyB0aGUgY3VycmVudCB0YWJsZSBkYXRhIHN0YXRlLCByZXNldHMgdGhlIGhhc1Vuc2F2ZWRDaGFuZ2VzIGZsYWcsIGFuZCBlbWl0cyB0aGUgdXBkYXRlZCBkYXRhLlxyXG4gIHNhdmVUYWJsZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2F2ZWREYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnRhYmxlRGF0YSkpO1xyXG4gICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zYXZlVGFibGVEYXRhLmVtaXQodGhpcy50YWJsZURhdGEpO1xyXG4gIH1cclxuICAvL1JTIDAzRkVCMjAyNVxyXG4gIC8vICBSZXN0b3JlcyB0aGUgbGFzdCBzYXZlZCBzdGF0ZSBvZiB0aGUgdGFibGUgYW5kIHJlc2V0cyB0aGUgcGFnaW5hdGlvbiBhbmQgVUkgc3RhdGVcclxuICByZXZlcnRDaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy50YWJsZURhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuc2F2ZWREYXRhKSk7XHJcbiAgICB0aGlzLmZpbHRlcmVkRGF0YSA9IFsuLi50aGlzLnRhYmxlRGF0YV07XHJcbiAgICB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzID0gZmFsc2U7XHJcbiAgICB0aGlzLnVwZGF0ZVBhZ2luYXRpb24oKTtcclxuICAgIHRoaXMuZW1pdFRhYmxlRGF0YVZhbHVlKHRoaXMudGFibGVEYXRhKTtcclxuICB9XHJcbiAgZWRpdFJvdyhyb3dJbmRleDogbnVtYmVyKXtcclxuICAgIHZhciBhID0gMDtcclxuICAgIHRoaXMudGFibGVEYXRhLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgIGlmKGEgPT09IHJvd0luZGV4KXtcclxuICAgICAgICBlbGVtZW50LmVkaXQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGErKztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlTnVtYmVyKGl0ZW06IGFueSwgbGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZyl7XHJcbiAgICBpdGVtLnZhbHVlW2xhYmVsXSA9IHZhbHVlO1xyXG4gICAgdGhpcy5lbWl0VGFibGVEYXRhVmFsdWUodGhpcy50YWJsZURhdGEpO1xyXG4gIH1cclxuXHJcblxyXG4gIGVtaXRUYWJsZURhdGFWYWx1ZSh1cGRhdGVkVGFibGVEYXRhOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHVwZGF0ZWRUYWJsZURhdGEpO1xyXG4gIH1cclxuLy9SUyAwM0ZFQjIwMjVcclxuLy8gQ2xlYW5zIHVwIHJlc291cmNlcyBhbmQgcmVzZXRzIHRoZSBjb21wb25lbnQgc3RhdGUgd2hlbiB0aGUgY29tcG9uZW50IGlzIGRlc3Ryb3llZCB0byBwcmV2ZW50IG1lbW9yeSBsZWFrc1xyXG5uZ09uRGVzdHJveSgpIHtcclxuICB0aGlzLnJlc2V0Q29tcG9uZW50U3RhdGUoKTtcclxuICBjb25zb2xlLmxvZygnQ29tcG9uZW50IERlc3Ryb3llZCcpO1xyXG5cclxufVxyXG59IiwiPCEtLSBSUyAwM0ZFQjIwMjUgLS0+XHJcbjwhLS0gU2VhcmNoIEJhciAtLT5cclxuPCEtLSBTZWFyY2gsIFJldmVydCAmIFNhdmUgaW4gU2FtZSBMaW5lIC0tPlxyXG48ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0zXCI+XHJcbiAgPCEtLSBTZWFyY2ggQmFyIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJzZWFyY2gtY29udGFpbmVyIG1lLWF1dG9cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICA8aW5wdXQgXHJcbiAgICAgICAgdHlwZT1cInRleHRcIiBcclxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBzZWFyY2gtaW5wdXRcIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGVybVwiXHJcbiAgICAgICAgKGlucHV0KT1cInNlYXJjaCgpXCJcclxuICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiXHJcbiAgICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1pY29uXCI+XHJcbiAgICA8IS0tIFJTIDAzRkVCMjAyNSAtLT5cclxuICAgIDwhLS0gU2VhcmNoIGljb24gZm9yIHVzZXIgaW5wdXQgLS0+XHJcbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPlxyXG4gICAgICAgICAgPGNpcmNsZSBjeD1cIjExXCIgY3k9XCIxMVwiIHI9XCI4XCI+PC9jaXJjbGU+XHJcbiAgICAgICAgICA8bGluZSB4MT1cIjIxXCIgeTE9XCIyMVwiIHgyPVwiMTYuNjVcIiB5Mj1cIjE2LjY1XCI+PC9saW5lPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIEJ1dHRvbnMgLS0+XHJcbiAgPGRpdj5cclxuICAgIDwhLS0gUlMgMDNGRUIyMDI1IC0tPjwhLS0gQ2FuY2VsIGJ1dHRvbiAodmlzaWJsZSBvbmx5IHdoZW4gY2hhbmdlcyBhcmUgdW5zYXZlZCkgLS0+XHJcbiAgICA8YnV0dG9uIFxyXG4gICAgICBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5IG1lLTJcIiBcclxuICAgICAgKm5nSWY9XCJoYXNVbnNhdmVkQ2hhbmdlc1wiIFxyXG4gICAgICAoY2xpY2spPVwicmV2ZXJ0Q2hhbmdlcygpXCJcclxuICAgID5cclxuICAgICAgQ2FuY2VsXHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDwhLS0gU2F2ZSBidXR0b24gKGRpc2FibGVkIGlmIG5vIHVuc2F2ZWQgY2hhbmdlcykgLS0+PCEtLSBSUyAwM0ZFQjIwMjUgLS0+XHJcbiAgICA8YnV0dG9uIFxyXG4gICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIFxyXG4gICAgICBbZGlzYWJsZWRdPVwiIWhhc1Vuc2F2ZWRDaGFuZ2VzXCJcclxuICAgICAgKGNsaWNrKT1cInNhdmVUYWJsZSgpXCJcclxuICAgID5cclxuICAgICAgU2F2ZSBUYWJsZVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48IS0tIFRhYmxlIENvbnRhaW5lciAtLT5cclxuPGRpdiBjbGFzcz1cInRhYmxlLWNvbnRhaW5lclwiPlxyXG4gIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLXN0cmlwZWQgdGFibGUtYm9yZGVyZWRcIj5cclxuICAgIDx0aGVhZD5cclxuICAgICAgICA8IS0tIEhBIDI4REVDMjMgY2hhbmdlZCB0YWJsZSBoZWFkZXIgdmFsdWVzIGFuZCBjaGFuZ2VkIHRhYmxlIHNpemUgbG9naWMgdG8gZXZlbmx5IHZpc2libGUgLS0+XHJcbiAgICA8IS0tIDx0aD48aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgKGNoYW5nZSk9XCJzZWxlY3RBbGwoJGV2ZW50LnRhcmdldC5jaGVja2VkKVwiPjwvdGg+IC0tPlxyXG4gICAgICA8dHI+XHJcbiAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBoZWFkZXIgb2YgdGFibGVIZWFkZXJcIiBbc3R5bGUud2lkdGhdPVwiaGVhZGVyLndpZHRoIHx8ICdhdXRvJ1wiPlxyXG4gICAgICAgICAge3sgaGVhZGVyLmxhYmVsIH19XHJcbiAgICAgICAgPC90aD5cclxuICAgICAgICA8IS0tIEFjdGlvbnMgY29sdW1uIChvbmx5IGlmIHNob3dBY3Rpb25zIGlzIHRydWUpIC0tPjwhLS0gUlMgMDNGRUIyMDI1IC0tPlxyXG4gICAgICAgIDx0aCAqbmdJZj1cInNob3dBY3Rpb25zXCIgc3R5bGU9XCJ3aWR0aDogMTQwcHhcIiBjbGFzcz1cImFjdGlvbnMtY29sdW1uc1wiPkFjdGlvbnM8L3RoPlxyXG4gICAgICA8L3RyPlxyXG4gICAgPC90aGVhZD5cclxuICAgIDx0Ym9keT5cclxuICAgICAgPHRyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHBhZ2luYXRlZERhdGE7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGhlYWRlciBvZiB0YWJsZUhlYWRlclwiPlxyXG4gICAgICAgICAgPCEtLSBJbWFnZSB3aXRoIHRleHQgaW5wdXQgLS0+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyLmZsZFR5cGUgPT09ICdpbWFnZXRleHQnXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPGltZyBbc3JjXT1cIml0ZW0uaW1hZ2VTcmNcIiBbYWx0XT1cIml0ZW0uYWx0VGV4dFwiIHN0eWxlPVwid2lkdGg6IDM1cHg7IGhlaWdodDogMzJweDsgbWFyZ2luLXJpZ2h0OiA1cHg7XCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW1baGVhZGVyLmZpZWxkTmFtZV1cIiBcclxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZUxhYmVsKGksIGhlYWRlci5maWVsZE5hbWUsIGl0ZW1baGVhZGVyLmZpZWxkTmFtZV0pXCIgXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNoZS1saW5lLWlucHV0IHRhYmxlLWlucHV0XCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPCEtLSBJbWFnZSBvbmx5IC0tPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlci5mbGRUeXBlID09PSAnaW1hZ2UnXCI+XHJcbiAgICAgICAgICAgIDxpbWcgW3NyY109XCJpdGVtW2hlYWRlci5maWVsZE5hbWVdXCIgW2FsdF09XCJpdGVtLmFsdFRleHRcIiBzdHlsZT1cIndpZHRoOiAzNXB4OyBoZWlnaHQ6IDMycHg7XCI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8IS0tVkQgMjNBdWcyNCBoYW5kbGUgcmVhZE9ubHkgIC0tPlxyXG4gICAgICAgICAgPCEtLSBUZXh0IGlucHV0IC0tPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlci5mbGRUeXBlID09PSAnVGV4dCdcIj5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgXHJcbiAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImhlYWRlci5yZWFkT25seVwiIFxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXRlbS5lZGl0XCIgXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydlZGl0SW5wdXQnOiBpdGVtLmVkaXQgJiYgIWhlYWRlci5yZWFkT25seX1cIlxyXG4gICAgICAgICAgICAgIFtuZ01vZGVsXT1cIicnIHwgZ2V0VmFsdWU6IGl0ZW0gOiBoZWFkZXIuYXBpTmFtZVwiIFxyXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZUxhYmVsKGksIGhlYWRlci5hcGlOYW1lLCRldmVudClcIiBcclxuICAgICAgICAgICAgICBjbGFzcz1cInNoZS1saW5lLWlucHV0IHRhYmxlLWlucHV0XCI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8IS0tVkQgMjNBdWcyNCBoYW5kbGUgTnVtYmVyIFR5cGUgLS0+XHJcbiAgICAgICAgPCEtLSBOdW1iZXIgaW5wdXQgLS0+XHJcbiAgICAgICAgPCEtLSBWRCAyNkp1bjI0IC0gcGlwZSBjaGFuZ2UgdG8gaGFuZGxlIG11bHRpcGxlIG9iamVjdHMtLT5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXIuZmxkVHlwZSA9PT0gJ051bWJlcidcIj5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBcclxuICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiaGVhZGVyLnJlYWRPbmx5XCIgXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFpdGVtLmVkaXRcIiBcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2VkaXRJbnB1dCc6IGl0ZW0uZWRpdCAmJiAhaGVhZGVyLnJlYWRPbmx5fVwiXHJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwiJycgfCBnZXRWYWx1ZTogaXRlbSA6IGhlYWRlci5hcGlOYW1lXCIgXHJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlTGFiZWwoaSwgaGVhZGVyLmFwaU5hbWUsJGV2ZW50KVwiIFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwic2hlLWxpbmUtaW5wdXQgdGFibGUtaW5wdXRcIj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDwhLS0gUmFkaW8gaW5wdXQgLS0+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyLmZsZFR5cGUgPT09ICdyYWRpbydcIj5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYWRpb1wiIFxyXG4gICAgICAgICAgICAgIFtuYW1lXT1cIml0ZW0ubmFtZVwiIFxyXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cIml0ZW0udmFsdWUgPT0gaGVhZGVyLmZpZWxkTmFtZVwiICBcclxuICAgICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlUmFkaW8oaXRlbSwgaGVhZGVyLmZpZWxkTmFtZSlcIj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPCEtLSBBY3Rpb25zIGNvbHVtbiAtLT48IS0tIFJTIDAzRkVCMjAyNSAtLT5cclxuICAgICAgICA8dGQgKm5nSWY9XCJzaG93QWN0aW9uc1wiIGNsYXNzPVwiYWN0aW9ucy1jb2x1bW5cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWFyb3VuZFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMFwiIChjbGljayk9XCJlZGl0Um93KGkpXCI+XHJcbiAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzAzQTlGNFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIgMjBoOVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2LjUgMy41YTIuMTIxIDIuMTIxIDAgMCAxIDMgM0w3IDE5bC00IDEgMS00WlwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwibTE1IDUgMyAzXCIgLz5cclxuICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGl0XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMFwiIChjbGljayk9XCJkZWxldGVSb3coaSlcIj5cclxuICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjRjQ0MzM2XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zIDZoMThcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk04IDZWNGEyIDIgMCAwIDEgMi0yaDRhMiAyIDAgMCAxIDIgMnYyXCIgLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJtMTAgMTEgMSA2XCIgLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJtMTQgMTEtMSA2XCIgLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNCA2bDEgMTRhMiAyIDAgMCAwIDIgMmgxMGEyIDIgMCAwIDAgMi0ybDEtMTRcIiAvPlxyXG4gICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVsZXRlXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC90cj5cclxuICAgIDwvdGJvZHk+XHJcbiAgPC90YWJsZT5cclxuPC9kaXY+XHJcblxyXG48IS0tIFBhZ2luYXRpb24gLS0+PCEtLSBSUyAwM0ZFQjIwMjUgLS0+XHJcbjxkaXYgKm5nSWY9XCJzaG93UGFnaW5hdGlvblwiIGNsYXNzPVwicGFnaW5hdGlvbi1jb250YWluZXJcIj5cclxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaXRlbXMtcGVyLXBhZ2VcIj5cclxuICAgICAgPHNwYW4+SXRlbXMgcGVyIHBhZ2U6PC9zcGFuPlxyXG4gICAgICA8c2VsZWN0IFsobmdNb2RlbCldPVwiaXRlbXNQZXJQYWdlXCIgKGNoYW5nZSk9XCJ1cGRhdGVQYWdpbmF0aW9uKClcIiBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtXCI+XHJcbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjVcIj41PC9vcHRpb24+XHJcbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjEwXCI+MTA8L29wdGlvbj5cclxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwiMjBcIj4yMDwvb3B0aW9uPlxyXG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCI1MFwiPjUwPC9vcHRpb24+XHJcbiAgICAgIDwvc2VsZWN0PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicGFnZS1pbmZvIG1zLTMgbWUtM1wiPlxyXG4gICAgICB7eygoY3VycmVudFBhZ2UgLSAxKSAqIGl0ZW1zUGVyUGFnZSArIDEpfX0gLSB7e01hdGgubWluKGN1cnJlbnRQYWdlICogaXRlbXNQZXJQYWdlLCB0b3RhbEl0ZW1zKX19IG9mIHt7dG90YWxJdGVtc319XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuYXYgYXJpYS1sYWJlbD1cIlRhYmxlIHBhZ2luYXRpb25cIj5cclxuICAgICAgPCEtLSBGaXJzdCBwYWdlIC0tPjwhLS0gUlMgMDNGRUIyMDI1IC0tPlxyXG4gICAgICA8dWwgY2xhc3M9XCJwYWdpbmF0aW9uIG1iLTBcIj5cclxuICAgICAgICA8bGkgY2xhc3M9XCJwYWdlLWl0ZW1cIiBbY2xhc3MuZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UgPT09IDFcIj5cclxuICAgICAgICAgIDxhIGNsYXNzPVwicGFnZS1saW5rXCIgKGNsaWNrKT1cInNldFBhZ2UoMSlcIj7CqzwvYT5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaSBjbGFzcz1cInBhZ2UtaXRlbVwiIFtjbGFzcy5kaXNhYmxlZF09XCJjdXJyZW50UGFnZSA9PT0gMVwiPlxyXG4gICAgICAgICAgPGEgY2xhc3M9XCJwYWdlLWxpbmtcIiAoY2xpY2spPVwic2V0UGFnZShjdXJyZW50UGFnZSAtIDEpXCI+4oC5PC9hPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPCEtLSBEeW5hbWljIHBhZ2luYXRpb24gLS0+PCEtLSBSUyAwM0ZFQjIwMjUgLS0+XHJcbiAgICAgICAgPGxpIGNsYXNzPVwicGFnZS1pdGVtXCIgKm5nRm9yPVwibGV0IHBhZ2Ugb2YgcGFnZXNcIiBbY2xhc3MuYWN0aXZlXT1cInBhZ2UgPT09IGN1cnJlbnRQYWdlXCI+XHJcbiAgICAgICAgICA8YSBjbGFzcz1cInBhZ2UtbGlua1wiIChjbGljayk9XCJzZXRQYWdlKHBhZ2UpXCI+e3twYWdlfX08L2E+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGkgY2xhc3M9XCJwYWdlLWl0ZW1cIiBbY2xhc3MuZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UgPT09IHBhZ2VzLmxlbmd0aFwiPlxyXG4gICAgICAgICAgPGEgY2xhc3M9XCJwYWdlLWxpbmtcIiAoY2xpY2spPVwic2V0UGFnZShjdXJyZW50UGFnZSArIDEpXCI+4oC6PC9hPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPCEtLSBMYXN0IHBhZ2UgLS0+XHJcbiAgICAgICAgPGxpIGNsYXNzPVwicGFnZS1pdGVtXCIgW2NsYXNzLmRpc2FibGVkXT1cImN1cnJlbnRQYWdlID09PSBwYWdlcy5sZW5ndGhcIj5cclxuICAgICAgICAgIDxhIGNsYXNzPVwicGFnZS1saW5rXCIgKGNsaWNrKT1cInNldFBhZ2UocGFnZXMubGVuZ3RoKVwiPsK7PC9hPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgIDwvdWw+XHJcbiAgICA8L25hdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjwhLS0gUlMgMDNGRUIyMDI1IC0tPlxyXG48IS0tIEFkZCBSb3cgQnV0dG9uIC0tPlxyXG48ZGl2ICpuZ0lmPVwic2hvd0FkZFJvd1wiICAoY2xpY2spPVwiYWRkUm93KClcIiBjbGFzcz1cImFkZFJvd0NsYXNzXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNpcmNsZS1idXR0b25cIj4rPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -40,6 +40,23 @@ export class SearchBoxComponent {
40
40
  this.route = route;
41
41
  this.i18nService = i18nService;
42
42
  }
43
+ // RS 14FEB2025
44
+ // Extract all string values from an object
45
+ flattenObjectValues(obj) {
46
+ let result = [];
47
+ for (const key in obj) {
48
+ if (obj.hasOwnProperty(key)) {
49
+ const value = obj[key];
50
+ if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
51
+ result.push(this.flattenObjectValues(value));
52
+ }
53
+ else if (value !== null && value !== undefined) {
54
+ result.push(String(value).toLowerCase());
55
+ }
56
+ }
57
+ }
58
+ return result.join(' ');
59
+ }
43
60
  ngOnInit() {
44
61
  // VD 03May- search changes
45
62
  if (this.apiMeta) {
@@ -101,21 +118,19 @@ export class SearchBoxComponent {
101
118
  response = apiResponse;
102
119
  }
103
120
  let results = [];
104
- let searchTerms = keyword.toLowerCase().split(" "); // Split input into words
121
+ let searchTerms = keyword.toLowerCase().split(" ");
105
122
  for (let i = 0; i < response.length; i++) {
106
123
  let obj = response[i];
107
- // Convert all object values to a single string for flexible search
108
- let combinedValues = Object.values(obj).join(" ").toLowerCase();
109
- // Check if all search terms exist in any order
124
+ // Flatten all values including nested objects
125
+ let combinedValues = this.flattenObjectValues(obj);
110
126
  let match = searchTerms.every(term => combinedValues.includes(term));
111
127
  if (match) {
112
- console.log('Matching entry:', obj);
113
128
  results.push(obj);
114
129
  }
115
130
  }
116
131
  this.noResult = results.length === 0;
117
132
  this.finalResults = results;
118
- this.cdr.detectChanges(); // Force UI update
133
+ this.cdr.detectChanges();
119
134
  });
120
135
  }
121
136
  };
@@ -135,11 +150,11 @@ export class SearchBoxComponent {
135
150
  this.resetComponentState();
136
151
  }
137
152
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchBoxComponent, deps: [{ token: i1.SalesforceService }, { token: i0.ChangeDetectorRef }, { token: i2.DataService }, { token: i3.ActivatedRoute }, { token: i0.ElementRef }, { token: i4.I18nService }], target: i0.ɵɵFactoryTarget.Component });
138
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SearchBoxComponent, selector: "lib-search-box", inputs: { placeHolderText: "placeHolderText", question: "question", apiMeta: "apiMeta", id: "id", readOnly: "readOnly", filterName: "filterName" }, outputs: { searchValueChange: "searchValueChange" }, viewQueries: [{ propertyName: "auto", first: true, predicate: ["auto"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- // VD 12Jun24 - readonly change-->\r\n<div id=\"autocomplete-input\"> <!-- SKS5NOV25 search icon -->\r\n <input #auto id=\"searchbox-style\"\r\n (blur)=\"clearList()\"\r\n [(ngModel)]=\"filterName\"\r\n type=\"text\"\r\n name=\"name\"\r\n [readOnly]=\"readOnly\"\r\n [placeholder]=\"placeHolderText\"\r\n style=\"margin: 0 !important; padding-right: 30px;\"\r\n class=\"searchInput she-line-input form-control\"\r\n (focusin)=\"getSourceDataLocal($event)\"\r\n (input)=\"getSourceDataLocal($event)\">\r\n <div id=\"selectList\" style=\"position: absolute;position: absolute;background: white;z-index: 2;\">\r\n <div *ngIf=\"finalResults.length > 0 && showSuggestion\"\r\n style=\"max-height: 100vh;border: 1px solid #d2d4d6;overflow: scroll;\"\r\n class=\"suggestions-container\">\r\n <!-- HA 20DEC23 Uncommented the logic -->\r\n <!-- VD 03May- search changes -->\r\n <div *ngFor=\"let item of finalResults\" (click)='clickItem(item)' class=\"hoover\">\r\n <!-- VD 26Jun24 - id condition removed -->\r\n <div class=\"grid-x align-middle\" style=\"padding: 1rem\">\r\n <div *ngIf=\"item.thumbnail\" class=\"cell shrink\" style=\"width: 60px; margin-right: 1.6rem;\">\r\n <img [src]=\"item.thumbnail\" style=\"width: 60px;\" alt=\"\">\r\n </div>\r\n <div class=\"cell auto\" style=\"text-align: left; padding-left: 20px;\">\r\n <!--// VD 26JUN24 - pipe changes -->\r\n <!-- RS 29JAN25 -->\r\n <h4 >{{ '' | getValue: item : SearchItem }}</h4>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- HA 20DEC23 For Commented this for future purpose -->\r\n <!-- <table class=\"table table-striped table-bordered\">\r\n <thead>\r\n <tr>\r\n <th>{{ 'firstName' | i18n:i18nService.currentLanguage }}</th>\r\n <th>{{ 'lastName' | i18n:i18nService.currentLanguage }}</th>\r\n <th>{{ 'division' | i18n:i18nService.currentLanguage }}</th>\r\n <th>{{ 'numberPlate' | i18n:i18nService.currentLanguage }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of finalResults\" (click)='clickItem(item)'>\r\n <td>{{ item.firstName }}</td>\r\n <td>{{ item.lastName }}</td>\r\n <td>{{ item.division }}</td>\r\n <td>{{ item.numberPlate }}</td>\r\n </tr>\r\n </tbody>\r\n </table> -->\r\n </div>\r\n</div>\r\n\r\n", styles: ["#searchbox-style{background-image:url('data:image/svg+xml;utf8,<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"%23434555\" stroke-opacity=\"0.65\" stroke-width=\"2\"/><path d=\"M20 20L17 17\" stroke=\"%23434555\" stroke-opacity=\"0.65\" stroke-width=\"2\" stroke-linecap=\"round\"/></svg>');background-position:right 5px center;background-repeat:no-repeat;background-size:24px;padding-right:35px}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i7.GetValuePipe, name: "getValue" }] });
153
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SearchBoxComponent, selector: "lib-search-box", inputs: { placeHolderText: "placeHolderText", question: "question", apiMeta: "apiMeta", id: "id", readOnly: "readOnly", filterName: "filterName" }, outputs: { searchValueChange: "searchValueChange" }, viewQueries: [{ propertyName: "auto", first: true, predicate: ["auto"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- // VD 12Jun24 - readonly change-->\r\n<div id=\"autocomplete-input\"> <!-- SKS5NOV25 search icon -->\r\n <input #auto id=\"searchbox-style\"\r\n (blur)=\"clearList()\"\r\n [(ngModel)]=\"filterName\"\r\n type=\"text\"\r\n name=\"name\"\r\n [readOnly]=\"readOnly\"\r\n [placeholder]=\"placeHolderText\"\r\n style=\"margin: 0 !important; padding-right: 30px;\"\r\n class=\"searchInput she-line-input form-control\"\r\n (focusin)=\"getSourceDataLocal($event)\"\r\n (input)=\"getSourceDataLocal($event)\">\r\n <div id=\"selectList\" style=\"position: absolute;position: absolute;background: white;z-index: 2;\">\r\n <div *ngIf=\"finalResults.length > 0 && showSuggestion\"\r\n style=\"max-height: 100vh;border: 1px solid #d2d4d6;overflow: scroll; min-width:100px\"\r\n class=\"suggestions-container\">\r\n <!-- HA 20DEC23 Uncommented the logic -->\r\n <!-- VD 03May- search changes -->\r\n <div *ngFor=\"let item of finalResults\" (click)='clickItem(item)' class=\"hoover\">\r\n <!-- VD 26Jun24 - id condition removed -->\r\n <div class=\"grid-x align-middle\" style=\"\">\r\n <div *ngIf=\"item.thumbnail\" class=\"cell shrink\" style=\"width: 60px; margin-right: 1.6rem;\">\r\n <img [src]=\"item.thumbnail\" style=\"width: 60px;\" alt=\"\">\r\n </div>\r\n <div class=\"cell auto\" style=\"text-align: left; padding:5px 8px 0 8px\">\r\n <!--// VD 26JUN24 - pipe changes -->\r\n <!-- RS 29JAN25 -->\r\n <h4 >{{ '' | getValue: item : SearchItem }}</h4>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- HA 20DEC23 For Commented this for future purpose -->\r\n <!-- <table class=\"table table-striped table-bordered\">\r\n <thead>\r\n <tr>\r\n <th>{{ 'firstName' | i18n:i18nService.currentLanguage }}</th>\r\n <th>{{ 'lastName' | i18n:i18nService.currentLanguage }}</th>\r\n <th>{{ 'division' | i18n:i18nService.currentLanguage }}</th>\r\n <th>{{ 'numberPlate' | i18n:i18nService.currentLanguage }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of finalResults\" (click)='clickItem(item)'>\r\n <td>{{ item.firstName }}</td>\r\n <td>{{ item.lastName }}</td>\r\n <td>{{ item.division }}</td>\r\n <td>{{ item.numberPlate }}</td>\r\n </tr>\r\n </tbody>\r\n </table> -->\r\n </div>\r\n</div>\r\n\r\n", styles: ["#searchbox-style{background-image:url('data:image/svg+xml;utf8,<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"%23434555\" stroke-opacity=\"0.65\" stroke-width=\"2\"/><path d=\"M20 20L17 17\" stroke=\"%23434555\" stroke-opacity=\"0.65\" stroke-width=\"2\" stroke-linecap=\"round\"/></svg>');background-position:right 5px center;background-repeat:no-repeat;background-size:24px;padding-right:35px}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i7.GetValuePipe, name: "getValue" }] });
139
154
  }
140
155
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchBoxComponent, decorators: [{
141
156
  type: Component,
142
- args: [{ selector: 'lib-search-box', template: "<!-- // VD 12Jun24 - readonly change-->\r\n<div id=\"autocomplete-input\"> <!-- SKS5NOV25 search icon -->\r\n <input #auto id=\"searchbox-style\"\r\n (blur)=\"clearList()\"\r\n [(ngModel)]=\"filterName\"\r\n type=\"text\"\r\n name=\"name\"\r\n [readOnly]=\"readOnly\"\r\n [placeholder]=\"placeHolderText\"\r\n style=\"margin: 0 !important; padding-right: 30px;\"\r\n class=\"searchInput she-line-input form-control\"\r\n (focusin)=\"getSourceDataLocal($event)\"\r\n (input)=\"getSourceDataLocal($event)\">\r\n <div id=\"selectList\" style=\"position: absolute;position: absolute;background: white;z-index: 2;\">\r\n <div *ngIf=\"finalResults.length > 0 && showSuggestion\"\r\n style=\"max-height: 100vh;border: 1px solid #d2d4d6;overflow: scroll;\"\r\n class=\"suggestions-container\">\r\n <!-- HA 20DEC23 Uncommented the logic -->\r\n <!-- VD 03May- search changes -->\r\n <div *ngFor=\"let item of finalResults\" (click)='clickItem(item)' class=\"hoover\">\r\n <!-- VD 26Jun24 - id condition removed -->\r\n <div class=\"grid-x align-middle\" style=\"padding: 1rem\">\r\n <div *ngIf=\"item.thumbnail\" class=\"cell shrink\" style=\"width: 60px; margin-right: 1.6rem;\">\r\n <img [src]=\"item.thumbnail\" style=\"width: 60px;\" alt=\"\">\r\n </div>\r\n <div class=\"cell auto\" style=\"text-align: left; padding-left: 20px;\">\r\n <!--// VD 26JUN24 - pipe changes -->\r\n <!-- RS 29JAN25 -->\r\n <h4 >{{ '' | getValue: item : SearchItem }}</h4>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- HA 20DEC23 For Commented this for future purpose -->\r\n <!-- <table class=\"table table-striped table-bordered\">\r\n <thead>\r\n <tr>\r\n <th>{{ 'firstName' | i18n:i18nService.currentLanguage }}</th>\r\n <th>{{ 'lastName' | i18n:i18nService.currentLanguage }}</th>\r\n <th>{{ 'division' | i18n:i18nService.currentLanguage }}</th>\r\n <th>{{ 'numberPlate' | i18n:i18nService.currentLanguage }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of finalResults\" (click)='clickItem(item)'>\r\n <td>{{ item.firstName }}</td>\r\n <td>{{ item.lastName }}</td>\r\n <td>{{ item.division }}</td>\r\n <td>{{ item.numberPlate }}</td>\r\n </tr>\r\n </tbody>\r\n </table> -->\r\n </div>\r\n</div>\r\n\r\n", styles: ["#searchbox-style{background-image:url('data:image/svg+xml;utf8,<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"%23434555\" stroke-opacity=\"0.65\" stroke-width=\"2\"/><path d=\"M20 20L17 17\" stroke=\"%23434555\" stroke-opacity=\"0.65\" stroke-width=\"2\" stroke-linecap=\"round\"/></svg>');background-position:right 5px center;background-repeat:no-repeat;background-size:24px;padding-right:35px}\n"] }]
157
+ args: [{ selector: 'lib-search-box', template: "<!-- // VD 12Jun24 - readonly change-->\r\n<div id=\"autocomplete-input\"> <!-- SKS5NOV25 search icon -->\r\n <input #auto id=\"searchbox-style\"\r\n (blur)=\"clearList()\"\r\n [(ngModel)]=\"filterName\"\r\n type=\"text\"\r\n name=\"name\"\r\n [readOnly]=\"readOnly\"\r\n [placeholder]=\"placeHolderText\"\r\n style=\"margin: 0 !important; padding-right: 30px;\"\r\n class=\"searchInput she-line-input form-control\"\r\n (focusin)=\"getSourceDataLocal($event)\"\r\n (input)=\"getSourceDataLocal($event)\">\r\n <div id=\"selectList\" style=\"position: absolute;position: absolute;background: white;z-index: 2;\">\r\n <div *ngIf=\"finalResults.length > 0 && showSuggestion\"\r\n style=\"max-height: 100vh;border: 1px solid #d2d4d6;overflow: scroll; min-width:100px\"\r\n class=\"suggestions-container\">\r\n <!-- HA 20DEC23 Uncommented the logic -->\r\n <!-- VD 03May- search changes -->\r\n <div *ngFor=\"let item of finalResults\" (click)='clickItem(item)' class=\"hoover\">\r\n <!-- VD 26Jun24 - id condition removed -->\r\n <div class=\"grid-x align-middle\" style=\"\">\r\n <div *ngIf=\"item.thumbnail\" class=\"cell shrink\" style=\"width: 60px; margin-right: 1.6rem;\">\r\n <img [src]=\"item.thumbnail\" style=\"width: 60px;\" alt=\"\">\r\n </div>\r\n <div class=\"cell auto\" style=\"text-align: left; padding:5px 8px 0 8px\">\r\n <!--// VD 26JUN24 - pipe changes -->\r\n <!-- RS 29JAN25 -->\r\n <h4 >{{ '' | getValue: item : SearchItem }}</h4>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- HA 20DEC23 For Commented this for future purpose -->\r\n <!-- <table class=\"table table-striped table-bordered\">\r\n <thead>\r\n <tr>\r\n <th>{{ 'firstName' | i18n:i18nService.currentLanguage }}</th>\r\n <th>{{ 'lastName' | i18n:i18nService.currentLanguage }}</th>\r\n <th>{{ 'division' | i18n:i18nService.currentLanguage }}</th>\r\n <th>{{ 'numberPlate' | i18n:i18nService.currentLanguage }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of finalResults\" (click)='clickItem(item)'>\r\n <td>{{ item.firstName }}</td>\r\n <td>{{ item.lastName }}</td>\r\n <td>{{ item.division }}</td>\r\n <td>{{ item.numberPlate }}</td>\r\n </tr>\r\n </tbody>\r\n </table> -->\r\n </div>\r\n</div>\r\n\r\n", styles: ["#searchbox-style{background-image:url('data:image/svg+xml;utf8,<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"%23434555\" stroke-opacity=\"0.65\" stroke-width=\"2\"/><path d=\"M20 20L17 17\" stroke=\"%23434555\" stroke-opacity=\"0.65\" stroke-width=\"2\" stroke-linecap=\"round\"/></svg>');background-position:right 5px center;background-repeat:no-repeat;background-size:24px;padding-right:35px}\n"] }]
143
158
  }], ctorParameters: () => [{ type: i1.SalesforceService }, { type: i0.ChangeDetectorRef }, { type: i2.DataService }, { type: i3.ActivatedRoute }, { type: i0.ElementRef }, { type: i4.I18nService }], propDecorators: { placeHolderText: [{
144
159
  type: Input
145
160
  }], auto: [{
@@ -158,4 +173,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
158
173
  }], filterName: [{
159
174
  type: Input
160
175
  }] } });
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2gtYm94L3NlYXJjaC1ib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoLWJveC9zZWFyY2gtYm94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBSVQsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBR1osU0FBUyxHQUVWLE1BQU0sZUFBZSxDQUFDO0FBU3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7O0FBVTFELE1BQU0sT0FBTyxrQkFBa0I7SUF3Qm5CO0lBQ0E7SUFDQTtJQUNBO0lBRUc7SUE1QkosZUFBZSxDQUFTO0lBQ2QsSUFBSSxDQUFDO0lBRWYsUUFBUSxDQUFDO0lBQ1QsT0FBTyxDQUFTO0lBQ2hCLEVBQUUsQ0FBUztJQUNYLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQywrQkFBK0I7SUFDaEQsaUJBQWlCLEdBQWdDLElBQUksWUFBWSxFQUFpQixDQUFDO0lBQzVGLE1BQU0sQ0FBSztJQUNYLFVBQVUsQ0FBTTtJQUVSLFVBQVUsQ0FBUyxDQUFDLHlDQUF5QztJQUMvRCxZQUFZLEdBQVUsRUFBRSxDQUFDO0lBQ3pCLGFBQWEsR0FBVyxFQUFFLENBQUM7SUFDM0IsU0FBUyxDQUFNO0lBQ2YsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUNuQixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDckIsRUFBRSxDQUFjO0lBQ2hCLElBQUksR0FBVyxLQUFLLENBQUM7SUFDckIsR0FBRyxHQUFXLEVBQUUsQ0FBQztJQUV6QixZQUNVLFNB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bkluaXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTYWxlc2ZvcmNlU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zYWxlc2ZvcmNlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFBhcmFtcyB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuLy8gVkQgMjNKQU4yNCByZW1vdmVkIGh0dHBDbGllbnQgaW1wb3J0IHVzZWQgc2VydmljZSBmaWxlIGZvciBjYWxsb3V0XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSXRlbXNMaXN0IH0gZnJvbSBcIkBuZy1zZWxlY3Qvbmctc2VsZWN0L2xpYi9pdGVtcy1saXN0XCI7XHJcbmltcG9ydCB7IENvbnNvbGVTZXJ2aWNlIH0gZnJvbSBcIkBuZy1zZWxlY3Qvbmctc2VsZWN0L2xpYi9jb25zb2xlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQVBJTWV0YSB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL2FwaW1ldGFcIjtcclxuaW1wb3J0IHsgQ2hhbmdlV3JhcHBlciB9IGZyb20gXCIuLi8uLi9tb2RlbC9jaGFuZ2VXcmFwcGVyXCI7XHJcbi8vIEhBIDE5REVDMjMgaW1wb3J0ZWQgdHJhbnNsYXRpb24gc2VydmljZVxyXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gXCIuLi8uLi9pMThuLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXNlYXJjaC1ib3gnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtYm94LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtYm94LmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VhcmNoQm94Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBwbGFjZUhvbGRlclRleHQ6IHN0cmluZztcclxuICBAVmlld0NoaWxkKCdhdXRvJykgYXV0bztcclxuXHJcbiAgQElucHV0KCkgcXVlc3Rpb247XHJcbiAgQElucHV0KCkgYXBpTWV0YTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGlkOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcmVhZE9ubHkgPSBmYWxzZTsgLy8gVkQgMTJKdW4yNCAtIHJlYWRvbmx5IGNoYW5nZVxyXG4gIEBPdXRwdXQoKSBzZWFyY2hWYWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPENoYW5nZVdyYXBwZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxDaGFuZ2VXcmFwcGVyPigpO1xyXG4gICBhcGlPYmo6YW55O1xyXG4gICBTZWFyY2hJdGVtOiBhbnk7XHJcblxyXG4gIEBJbnB1dCgpIGZpbHRlck5hbWU6IHN0cmluZzsgLy8gVkQgMjBBdWcgZGVmYXVsdCBmaWx0ZXIgdmFsdWUgYXMgaW5wdXRcclxuICBwdWJsaWMgZmluYWxSZXN1bHRzOiBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBzZWFyY2hLZXlXb3JkOiBzdHJpbmcgPSAnJztcclxuICBwdWJsaWMgbmV3UmVzdWx0OiBhbnk7XHJcbiAgcHVibGljIHNob3dSZXN1bHQgPSBmYWxzZTtcclxuICBwdWJsaWMgbm9SZXN1bHQgPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd1N1Z2dlc3Rpb24gPSB0cnVlO1xyXG4gIHByaXZhdGUgZWw6IEhUTUxFbGVtZW50O1xyXG4gIHByaXZhdGUgc2Vydjogc3RyaW5nID0gJ2FwaSc7XHJcbiAgcHJpdmF0ZSB0a246IHN0cmluZyA9ICcnO1xyXG4gIFxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBzZlNlcnZpY2U6IFNhbGVzZm9yY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIGVsOiBFbGVtZW50UmVmLFxyXG4gICAgICAgIHB1YmxpYyBpMThuU2VydmljZTogSTE4blNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuLy8gIFZEIDAzTWF5LSBzZWFyY2ggY2hhbmdlc1xyXG4gICAgaWYodGhpcy5hcGlNZXRhKXtcclxuICAgICAgbGV0IGFwaU9iajogQVBJTWV0YSA9IEpTT04ucGFyc2UodGhpcy5hcGlNZXRhKTtcclxuICAgICAgdGhpcy5TZWFyY2hJdGVtID0gYXBpT2JqLmZpZWxkO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy5yZXNldENvbXBvbmVudFN0YXRlKCk7XHJcblxyXG4gIH1cclxuLy8vL1JTIDAzRkVCMjAyNVxyXG4vLyBSZXNldHMgc3RhdGUgd2hlbiBmaWx0ZXJOYW1lIG9yIGFwaU1ldGEgY2hhbmdlcyB0byByZWZsZWN0IHVwZGF0ZWQgZGF0YVxyXG5uZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgaWYgKGNoYW5nZXNbJ2FwaU1ldGEnXSAmJiB0aGlzLmFwaU1ldGEpIHtcclxuICAgIHRoaXMuYXBpT2JqID0gSlNPTi5wYXJzZSh0aGlzLmFwaU1ldGEpO1xyXG4gICAgdGhpcy5TZWFyY2hJdGVtID0gdGhpcy5hcGlPYmo/LmZpZWxkO1xyXG4gIH1cclxufVxyXG4vL1JTIDAzRkVCMjAyNVxyXG4vLyBDbGVhcnMgc2VhcmNoLXJlbGF0ZWQgZGF0YSwgaW5jbHVkaW5nIHJlc3VsdHMsIHNlYXJjaCB0ZXJtLCBhbmQgc3VnZ2VzdGlvbnMuXHJcbnByaXZhdGUgcmVzZXRDb21wb25lbnRTdGF0ZSgpOiB2b2lkIHtcclxuICB0aGlzLmZpbmFsUmVzdWx0cyA9IFtdO1xyXG4gIHRoaXMuZmlsdGVyTmFtZSA9ICcnOyBcclxuICB0aGlzLnNlYXJjaEtleVdvcmQgPSAnJzsgIHRoaXMuc2hvd1N1Z2dlc3Rpb24gPSBmYWxzZTtcclxuICB0aGlzLm5vUmVzdWx0ID0gZmFsc2U7XHJcbn1cclxuICBjbGVhckxpc3QoKXtcclxuICAgIHNldFRpbWVvdXQoKCk9PiB7XHJcbiAgICAgIHRoaXMuZmluYWxSZXN1bHRzID0gW107XHJcbiAgICB9LCAxMDAwKTtcclxuICB9XHJcblxyXG4gIGdldFNvdXJjZURhdGFMb2NhbChldmVudDogYW55KSB7IC8vdG8gZ2V0IHJlc3VsdHMgbGlzdCBmcm9tIGJhY2tlbmQgQVBJIHdoZW5ldmVyIGtleSBpcyB1cCBhZnRlciB0aGUgZW50ZXJpbmcgYXRsZWFzdCBvbmUga2V5XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgaWYoZXZlbnQudGFyZ2V0LnZhbHVlLmxlbmd0aCA+IDIpe1xyXG4gICAgICB0aGlzLnNob3dTdWdnZXN0aW9uPXRydWU7XHJcbiAgICAgIHRoaXMuZmluYWxSZXN1bHRzPVtdO1xyXG4gICAgICB0aGlzLnNlYXJjaEtleVdvcmQgPSBldmVudC50YXJnZXQudmFsdWU7XHJcbiAgICAgIHRoaXMuc2hvd1Jlc3VsdCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmdldFNvdXJjZURhdGEoZXZlbnQudGFyZ2V0LnZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2hvd1N1Z2dlc3Rpb249ZmFsc2U7XHJcbiAgICAgIHRoaXMuZmluYWxSZXN1bHRzID0gW107XHJcbiAgICAgIHRoaXMubm9SZXN1bHQgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8gVkQgMDNNYXktIHNlYXJjaCBjaGFuZ2VzXHJcbiAgLy8gVkQgMzFOT1YyNCBudWxsIGNoZWNrXHJcbiAgLy8gUlMgMjlKQU4yNVxyXG4gIC8vTXVsdGktd29yZCBzZWFyY2ggYWNyb3NzIGFsbCBvYmplY3QgdmFsdWVzXHJcbiAgcHVibGljIGdldFNvdXJjZURhdGEgPSAoa2V5d29yZDogc3RyaW5nKSA9PiB7XHJcbiAgICBpZiAodGhpcy5hcGlNZXRhKSB7XHJcbiAgICAgIGxldCBhcGlPYmo6IEFQSU1ldGEgPSBKU09OLnBhcnNlKHRoaXMuYXBpTWV0YSk7XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLmRhdGFTZXJ2aWNlLmFwaVJlc3BvbnNlKGFwaU9iai5lbmRwb2ludCkuc3Vic2NyaWJlKChhcGlSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGxldCByZXNwb25zZTtcclxuICAgICAgICBpZiAoYXBpT2JqLnZhcmlhYmxlKSB7XHJcbiAgICAgICAgICByZXNwb25zZSA9IHRoaXMuZGF0YVNlcnZpY2UuZ2V0VmFsdWUoYXBpUmVzcG9uc2UsIGFwaU9iai52YXJpYWJsZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlc3BvbnNlID0gYXBpUmVzcG9uc2U7XHJcbiAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgIGxldCByZXN1bHRzID0gW107XHJcbiAgICAgICAgbGV0IHNlYXJjaFRlcm1zID0ga2V5d29yZC50b0xvd2VyQ2FzZSgpLnNwbGl0KFwiIFwiKTsgLy8gU3BsaXQgaW5wdXQgaW50byB3b3Jkc1xyXG4gIFxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzcG9uc2UubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBvYmogPSByZXNwb25zZVtpXTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgLy8gQ29udmVydCBhbGwgb2JqZWN0IHZhbHVlcyB0byBhIHNpbmdsZSBzdHJpbmcgZm9yIGZsZXhpYmxlIHNlYXJjaFxyXG4gICAgICAgICAgbGV0IGNvbWJpbmVkVmFsdWVzID0gT2JqZWN0LnZhbHVlcyhvYmopLmpvaW4oXCIgXCIpLnRvTG93ZXJDYXNlKCk7XHJcbiAgXHJcbiAgICAgICAgICAvLyBDaGVjayBpZiBhbGwgc2VhcmNoIHRlcm1zIGV4aXN0IGluIGFueSBvcmRlclxyXG4gICAgICAgICAgbGV0IG1hdGNoID0gc2VhcmNoVGVybXMuZXZlcnkodGVybSA9PiBjb21iaW5lZFZhbHVlcy5pbmNsdWRlcyh0ZXJtKSk7XHJcbiAgXHJcbiAgICAgICAgICBpZiAobWF0Y2gpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ01hdGNoaW5nIGVudHJ5OicsIG9iaik7XHJcbiAgICAgICAgICAgIHJlc3VsdHMucHVzaChvYmopO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICBcclxuICAgICAgICB0aGlzLm5vUmVzdWx0ID0gcmVzdWx0cy5sZW5ndGggPT09IDA7XHJcbiAgICAgICAgdGhpcy5maW5hbFJlc3VsdHMgPSByZXN1bHRzO1xyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTsgLy8gRm9yY2UgVUkgdXBkYXRlXHJcblxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9O1xyXG4gIFxyXG4gIHB1YmxpYyBjbGlja0l0ZW0oZXZlbnQpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKCdpbnNpZGUgY2xpY2tJdGVtIG9mICcgKyBldmVudC50YXJnZXQudmFsdWUpO1xyXG4gICAgbGV0IGFwaU9iajogQVBJTWV0YSA9IEpTT04ucGFyc2UodGhpcy5hcGlNZXRhKTtcclxuICAgIHRoaXMuZmlsdGVyTmFtZSA9IGV2ZW50W2FwaU9iai5maWVsZF07XHJcbiAgICBsZXQgY2hhbmdlID0gbmV3IENoYW5nZVdyYXBwZXIoKTsgLy8gQ2hhbmdlV3JhcHBlciA9IEpTT04ucGFyc2UoJ3t9Jyk7XHJcbiAgICBjaGFuZ2UuZnJvbVF1ZXN0aW9uSWQgPSB0aGlzLmlkO1xyXG4gICAgY2hhbmdlLnZhbHVlT2JqID0gZXZlbnQ7XHJcbiAgICBjaGFuZ2UuZmllbGQgPSBhcGlPYmouZmllbGQ7XHJcbiAgICB0aGlzLnNlYXJjaFZhbHVlQ2hhbmdlLmVtaXQoY2hhbmdlKTtcclxuICB9XHJcbiAgLy9SUyAwM0ZFQjIwMjVcclxuICAvLyBSZXNldHMgY29tcG9uZW50IHN0YXRlIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBkZXN0cm95ZWRcclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVzZXRDb21wb25lbnRTdGF0ZSgpOyAgfVxyXG4gIC8qXHJcbiAgcHVibGljIGdldFNvdXJjZURhdGEgPSAoa2V5d29yZDogc3RyaW5nKSA9PiB7XHJcbiAgICBpZih0aGlzLnNlcnYgPT0gXCJhcGlcIikge1xyXG4gICAgICB0aGlzLmRhdGFTZXJ2aWNlLmdldEFQSURhdGEoXHJcbiAgICAgICAgdGhpcy50a24sXHJcbiAgICAgICAgW1wiUXVlc3Rpb25Cb29rXCIsIFwicmVhZFwiLCB1dWlkXSxcclxuICAgICAgICB0aGlzLnN1Y2Nlc3NTb3VyY2VEYXRhLFxyXG4gICAgICAgIHRoaXMuZmFpbHVyZVNvdXJjZURhdGFcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2ZTZXJ2aWNlLnJlbW90ZUFjdGlvbihcclxuICAgICAgICBcIk54dENvbnRyb2xsZXIucHJvY2Vzc1wiLFxyXG4gICAgICAgIFtcIlF1ZXN0aW9uQm9va1wiLCBcInJlYWRcIiwgdXVpZF0sXHJcbiAgICAgICAgdGhpcy5zdWNjZXNzU291cmNlRGF0YSxcclxuICAgICAgICB0aGlzLmZhaWx1cmVTb3VyY2VEYXRhXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3VjY2Vzc1NvdXJjZURhdGEgPSAocmVzcG9uc2UpID0+IHtcclxuICAgIGxldCByZXN1bHRzPVtdO1xyXG4gICAgcmVzdWx0cz1yZXNwb25zZS5yZXN1bHRzO1xyXG4gICAgcmVzdWx0cy5wdXNoKHt1dWlkOiBudWxsLCBuYW1lOiBcIlwifSk7XHJcbiAgICB0aGlzLm5vUmVzdWx0ID0gIShyZXN1bHRzLmxlbmd0aCA+IDEpO1xyXG4gICAgdGhpcy5maW5hbFJlc3VsdHMgPSByZXN1bHRzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGZhaWx1cmVTb3VyY2VEYXRhID0gKHJlc3BvbnNlKSA9PiB7XHJcbiAgICBjb25zb2xlLmxvZyhcIkVycm9yIHJlYWRpbmcgdGhlIGRhdGEgZnJvbSBBUElcIik7XHJcbiAgfVxyXG4gICovXHJcbn1cclxuICAgICIsIjwhLS0gLy8gVkQgMTJKdW4yNCAtIHJlYWRvbmx5IGNoYW5nZS0tPlxyXG48ZGl2IGlkPVwiYXV0b2NvbXBsZXRlLWlucHV0XCI+IDwhLS0gU0tTNU5PVjI1IHNlYXJjaCBpY29uIC0tPlxyXG4gIDxpbnB1dCAjYXV0byBpZD1cInNlYXJjaGJveC1zdHlsZVwiXHJcbiAgICAgICAgICAoYmx1cik9XCJjbGVhckxpc3QoKVwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpbHRlck5hbWVcIlxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgbmFtZT1cIm5hbWVcIlxyXG4gICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcclxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZUhvbGRlclRleHRcIlxyXG4gICAgICAgICAgc3R5bGU9XCJtYXJnaW46IDAgIWltcG9ydGFudDsgcGFkZGluZy1yaWdodDogMzBweDtcIlxyXG4gICAgICAgICAgY2xhc3M9XCJzZWFyY2hJbnB1dCBzaGUtbGluZS1pbnB1dCBmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgKGZvY3VzaW4pPVwiZ2V0U291cmNlRGF0YUxvY2FsKCRldmVudClcIlxyXG4gICAgICAgICAgKGlucHV0KT1cImdldFNvdXJjZURhdGFMb2NhbCgkZXZlbnQpXCI+XHJcbiAgPGRpdiBpZD1cInNlbGVjdExpc3RcIiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTtwb3NpdGlvbjogYWJzb2x1dGU7YmFja2dyb3VuZDogd2hpdGU7ei1pbmRleDogMjtcIj5cclxuICA8ZGl2ICpuZ0lmPVwiZmluYWxSZXN1bHRzLmxlbmd0aCA+IDAgJiYgc2hvd1N1Z2dlc3Rpb25cIlxyXG4gICAgICBzdHlsZT1cIm1heC1oZWlnaHQ6IDEwMHZoO2JvcmRlcjogMXB4IHNvbGlkICNkMmQ0ZDY7b3ZlcmZsb3c6IHNjcm9sbDtcIlxyXG4gICAgICBjbGFzcz1cInN1Z2dlc3Rpb25zLWNvbnRhaW5lclwiPlxyXG4gICAgICA8IS0tIEhBIDIwREVDMjMgVW5jb21tZW50ZWQgdGhlIGxvZ2ljIC0tPlxyXG4gICAgICAgPCEtLSBWRCAwM01heS0gc2VhcmNoIGNoYW5nZXMgLS0+XHJcbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmluYWxSZXN1bHRzXCIgKGNsaWNrKT0nY2xpY2tJdGVtKGl0ZW0pJyBjbGFzcz1cImhvb3ZlclwiPlxyXG4gICAgICAgIDwhLS0gVkQgMjZKdW4yNCAtIGlkIGNvbmRpdGlvbiByZW1vdmVkIC0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQteCBhbGlnbi1taWRkbGVcIiBzdHlsZT1cInBhZGRpbmc6IDFyZW1cIj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS50aHVtYm5haWxcIiBjbGFzcz1cImNlbGwgc2hyaW5rXCIgc3R5bGU9XCJ3aWR0aDogNjBweDsgbWFyZ2luLXJpZ2h0OiAxLjZyZW07XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpdGVtLnRodW1ibmFpbFwiIHN0eWxlPVwid2lkdGg6IDYwcHg7XCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNlbGwgYXV0b1wiIHN0eWxlPVwidGV4dC1hbGlnbjogbGVmdDsgcGFkZGluZy1sZWZ0OiAyMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgPCEtLS8vIFZEIDI2SlVOMjQgLSBwaXBlIGNoYW5nZXMgLS0+XHJcbiAgICAgICAgICAgICAgICA8IS0tIFJTIDI5SkFOMjUgLS0+XHJcbiAgICAgICAgICAgICAgICA8aDQgPnt7ICcnIHwgZ2V0VmFsdWU6IGl0ZW0gOiBTZWFyY2hJdGVtICB9fTwvaDQ+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwhLS0gSEEgMjBERUMyMyBGb3IgQ29tbWVudGVkIHRoaXMgZm9yIGZ1dHVyZSBwdXJwb3NlIC0tPlxyXG4gICAgICA8IS0tIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLXN0cmlwZWQgdGFibGUtYm9yZGVyZWRcIj5cclxuICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgIDx0aD57eyAnZmlyc3ROYW1lJyB8IGkxOG46aTE4blNlcnZpY2UuY3VycmVudExhbmd1YWdlIH19PC90aD5cclxuICAgICAgICAgICAgICA8dGg+e3sgJ2xhc3ROYW1lJyB8IGkxOG46aTE4blNlcnZpY2UuY3VycmVudExhbmd1YWdlIH19PC90aD5cclxuICAgICAgICAgICAgICA8dGg+e3sgJ2RpdmlzaW9uJyB8IGkxOG46aTE4blNlcnZpY2UuY3VycmVudExhbmd1YWdlIH19PC90aD5cclxuICAgICAgICAgICAgICA8dGg+e3sgJ251bWJlclBsYXRlJyB8IGkxOG46aTE4blNlcnZpY2UuY3VycmVudExhbmd1YWdlIH19PC90aD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaW5hbFJlc3VsdHNcIiAoY2xpY2spPSdjbGlja0l0ZW0oaXRlbSknPlxyXG4gICAgICAgICAgICAgIDx0ZD57eyBpdGVtLmZpcnN0TmFtZSB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPnt7IGl0ZW0ubGFzdE5hbWUgfX08L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD57eyBpdGVtLmRpdmlzaW9uIH19PC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+e3sgaXRlbS5udW1iZXJQbGF0ZSB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvdGFibGU+IC0tPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbiJdfQ==
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2gtYm94L3NlYXJjaC1ib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoLWJveC9zZWFyY2gtYm94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBSVQsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBR1osU0FBUyxHQUVWLE1BQU0sZUFBZSxDQUFDO0FBU3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7O0FBVTFELE1BQU0sT0FBTyxrQkFBa0I7SUF3Qm5CO0lBQ0E7SUFDQTtJQUNBO0lBRUc7SUE1QkosZUFBZSxDQUFTO0lBQ2QsSUFBSSxDQUFDO0lBRWYsUUFBUSxDQUFDO0lBQ1QsT0FBTyxDQUFTO0lBQ2hCLEVBQUUsQ0FBUztJQUNYLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQywrQkFBK0I7SUFDaEQsaUJBQWlCLEdBQWdDLElBQUksWUFBWSxFQUFpQixDQUFDO0lBQzVGLE1BQU0sQ0FBSztJQUNYLFVBQVUsQ0FBTTtJQUVSLFVBQVUsQ0FBUyxDQUFDLHlDQUF5QztJQUMvRCxZQUFZLEdBQVUsRUFBRSxDQUFDO0lBQ3pCLGFBQWEsR0FBVyxFQUFFLENBQUM7SUFDM0IsU0FBUyxDQUFNO0lBQ2YsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUNuQixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDckIsRUFBRSxDQUFjO0lBQ2hCLElBQUksR0FBVyxLQUFLLENBQUM7SUFDckIsR0FBRyxHQUFXLEVBQUUsQ0FBQztJQUV6QixZQUNVLFNB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QUMsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUNELGNBQWM7SUFDZCx5REFBeUQ7SUFDekQsV0FBVztRQUNULElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQUUsQ0FBQzt3R0EvSXJCLGtCQUFrQjs0RkFBbEIsa0JBQWtCLGtYQy9CL0IsOG1GQXNEQTs7NEZEdkJhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxnQkFBZ0I7Z09BS2pCLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ2EsSUFBSTtzQkFBdEIsU0FBUzt1QkFBQyxNQUFNO2dCQUVSLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFJRSxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBJbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBFbGVtZW50UmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2FsZXNmb3JjZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc2FsZXNmb3JjZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBQYXJhbXMgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbi8vIFZEIDIzSkFOMjQgcmVtb3ZlZCBodHRwQ2xpZW50IGltcG9ydCB1c2VkIHNlcnZpY2UgZmlsZSBmb3IgY2FsbG91dFxyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEl0ZW1zTGlzdCB9IGZyb20gXCJAbmctc2VsZWN0L25nLXNlbGVjdC9saWIvaXRlbXMtbGlzdFwiO1xyXG5pbXBvcnQgeyBDb25zb2xlU2VydmljZSB9IGZyb20gXCJAbmctc2VsZWN0L25nLXNlbGVjdC9saWIvY29uc29sZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEFQSU1ldGEgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9hcGltZXRhXCI7XHJcbmltcG9ydCB7IENoYW5nZVdyYXBwZXIgfSBmcm9tIFwiLi4vLi4vbW9kZWwvY2hhbmdlV3JhcHBlclwiO1xyXG4vLyBIQSAxOURFQzIzIGltcG9ydGVkIHRyYW5zbGF0aW9uIHNlcnZpY2VcclxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vaTE4bi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1zZWFyY2gtYm94JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLWJveC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoLWJveC5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFNlYXJjaEJveENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgcGxhY2VIb2xkZXJUZXh0OiBzdHJpbmc7XHJcbiAgQFZpZXdDaGlsZCgnYXV0bycpIGF1dG87XHJcblxyXG4gIEBJbnB1dCgpIHF1ZXN0aW9uO1xyXG4gIEBJbnB1dCgpIGFwaU1ldGE6IHN0cmluZztcclxuICBASW5wdXQoKSBpZDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHJlYWRPbmx5ID0gZmFsc2U7IC8vIFZEIDEySnVuMjQgLSByZWFkb25seSBjaGFuZ2VcclxuICBAT3V0cHV0KCkgc2VhcmNoVmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDaGFuZ2VXcmFwcGVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8Q2hhbmdlV3JhcHBlcj4oKTtcclxuICAgYXBpT2JqOmFueTtcclxuICAgU2VhcmNoSXRlbTogYW55O1xyXG5cclxuICBASW5wdXQoKSBmaWx0ZXJOYW1lOiBzdHJpbmc7IC8vIFZEIDIwQXVnIGRlZmF1bHQgZmlsdGVyIHZhbHVlIGFzIGlucHV0XHJcbiAgcHVibGljIGZpbmFsUmVzdWx0czogYW55W10gPSBbXTtcclxuICBwdWJsaWMgc2VhcmNoS2V5V29yZDogc3RyaW5nID0gJyc7XHJcbiAgcHVibGljIG5ld1Jlc3VsdDogYW55O1xyXG4gIHB1YmxpYyBzaG93UmVzdWx0ID0gZmFsc2U7XHJcbiAgcHVibGljIG5vUmVzdWx0ID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dTdWdnZXN0aW9uID0gdHJ1ZTtcclxuICBwcml2YXRlIGVsOiBIVE1MRWxlbWVudDtcclxuICBwcml2YXRlIHNlcnY6IHN0cmluZyA9ICdhcGknO1xyXG4gIHByaXZhdGUgdGtuOiBzdHJpbmcgPSAnJztcclxuICBcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgc2ZTZXJ2aWNlOiBTYWxlc2ZvcmNlU2VydmljZSxcclxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBlbDogRWxlbWVudFJlZixcclxuICAgICAgICBwdWJsaWMgaTE4blNlcnZpY2U6IEkxOG5TZXJ2aWNlXHJcbiAgKSB7IH1cclxuICAvLyBSUyAxNEZFQjIwMjVcclxuICAvLyBFeHRyYWN0IGFsbCBzdHJpbmcgdmFsdWVzIGZyb20gYW4gb2JqZWN0XHJcbiAgcHJpdmF0ZSBmbGF0dGVuT2JqZWN0VmFsdWVzKG9iajogYW55KTogc3RyaW5nIHtcclxuICAgIGxldCByZXN1bHQ6IHN0cmluZ1tdID0gW107XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcclxuICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSBvYmpba2V5XTtcclxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuZmxhdHRlbk9iamVjdFZhbHVlcyh2YWx1ZSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgcmVzdWx0LnB1c2goU3RyaW5nKHZhbHVlKS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQuam9pbignICcpO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuLy8gIFZEIDAzTWF5LSBzZWFyY2ggY2hhbmdlc1xyXG4gICAgaWYodGhpcy5hcGlNZXRhKXtcclxuICAgICAgbGV0IGFwaU9iajogQVBJTWV0YSA9IEpTT04ucGFyc2UodGhpcy5hcGlNZXRhKTtcclxuICAgICAgdGhpcy5TZWFyY2hJdGVtID0gYXBpT2JqLmZpZWxkO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy5yZXNldENvbXBvbmVudFN0YXRlKCk7XHJcblxyXG4gIH1cclxuLy8vL1JTIDAzRkVCMjAyNVxyXG4vLyBSZXNldHMgc3RhdGUgd2hlbiBmaWx0ZXJOYW1lIG9yIGFwaU1ldGEgY2hhbmdlcyB0byByZWZsZWN0IHVwZGF0ZWQgZGF0YVxyXG5uZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgaWYgKGNoYW5nZXNbJ2FwaU1ldGEnXSAmJiB0aGlzLmFwaU1ldGEpIHtcclxuICAgIHRoaXMuYXBpT2JqID0gSlNPTi5wYXJzZSh0aGlzLmFwaU1ldGEpO1xyXG4gICAgdGhpcy5TZWFyY2hJdGVtID0gdGhpcy5hcGlPYmo/LmZpZWxkO1xyXG4gIH1cclxufVxyXG4vL1JTIDAzRkVCMjAyNVxyXG4vLyBDbGVhcnMgc2VhcmNoLXJlbGF0ZWQgZGF0YSwgaW5jbHVkaW5nIHJlc3VsdHMsIHNlYXJjaCB0ZXJtLCBhbmQgc3VnZ2VzdGlvbnMuXHJcbnByaXZhdGUgcmVzZXRDb21wb25lbnRTdGF0ZSgpOiB2b2lkIHtcclxuICB0aGlzLmZpbmFsUmVzdWx0cyA9IFtdO1xyXG4gIHRoaXMuZmlsdGVyTmFtZSA9ICcnOyBcclxuICB0aGlzLnNlYXJjaEtleVdvcmQgPSAnJzsgIHRoaXMuc2hvd1N1Z2dlc3Rpb24gPSBmYWxzZTtcclxuICB0aGlzLm5vUmVzdWx0ID0gZmFsc2U7XHJcbn1cclxuICBjbGVhckxpc3QoKXtcclxuICAgIHNldFRpbWVvdXQoKCk9PiB7XHJcbiAgICAgIHRoaXMuZmluYWxSZXN1bHRzID0gW107XHJcbiAgICB9LCAxMDAwKTtcclxuICB9XHJcblxyXG4gIGdldFNvdXJjZURhdGFMb2NhbChldmVudDogYW55KSB7IC8vdG8gZ2V0IHJlc3VsdHMgbGlzdCBmcm9tIGJhY2tlbmQgQVBJIHdoZW5ldmVyIGtleSBpcyB1cCBhZnRlciB0aGUgZW50ZXJpbmcgYXRsZWFzdCBvbmUga2V5XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgaWYoZXZlbnQudGFyZ2V0LnZhbHVlLmxlbmd0aCA+IDIpe1xyXG4gICAgICB0aGlzLnNob3dTdWdnZXN0aW9uPXRydWU7XHJcbiAgICAgIHRoaXMuZmluYWxSZXN1bHRzPVtdO1xyXG4gICAgICB0aGlzLnNlYXJjaEtleVdvcmQgPSBldmVudC50YXJnZXQudmFsdWU7XHJcbiAgICAgIHRoaXMuc2hvd1Jlc3VsdCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmdldFNvdXJjZURhdGEoZXZlbnQudGFyZ2V0LnZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2hvd1N1Z2dlc3Rpb249ZmFsc2U7XHJcbiAgICAgIHRoaXMuZmluYWxSZXN1bHRzID0gW107XHJcbiAgICAgIHRoaXMubm9SZXN1bHQgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8gVkQgMDNNYXktIHNlYXJjaCBjaGFuZ2VzXHJcbiAgLy8gVkQgMzFOT1YyNCBudWxsIGNoZWNrXHJcbiAgLy8gUlMgMjlKQU4yNVxyXG4gIC8vTXVsdGktd29yZCBzZWFyY2ggYWNyb3NzIGFsbCBvYmplY3QgdmFsdWVzXHJcbiAgcHVibGljIGdldFNvdXJjZURhdGEgPSAoa2V5d29yZDogc3RyaW5nKSA9PiB7XHJcbiAgICBpZiAodGhpcy5hcGlNZXRhKSB7XHJcbiAgICAgIGxldCBhcGlPYmo6IEFQSU1ldGEgPSBKU09OLnBhcnNlKHRoaXMuYXBpTWV0YSk7XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLmRhdGFTZXJ2aWNlLmFwaVJlc3BvbnNlKGFwaU9iai5lbmRwb2ludCkuc3Vic2NyaWJlKChhcGlSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGxldCByZXNwb25zZTtcclxuICAgICAgICBpZiAoYXBpT2JqLnZhcmlhYmxlKSB7XHJcbiAgICAgICAgICByZXNwb25zZSA9IHRoaXMuZGF0YVNlcnZpY2UuZ2V0VmFsdWUoYXBpUmVzcG9uc2UsIGFwaU9iai52YXJpYWJsZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlc3BvbnNlID0gYXBpUmVzcG9uc2U7XHJcbiAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgIGxldCByZXN1bHRzID0gW107XHJcbiAgICAgICAgbGV0IHNlYXJjaFRlcm1zID0ga2V5d29yZC50b0xvd2VyQ2FzZSgpLnNwbGl0KFwiIFwiKTtcclxuICBcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc3BvbnNlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQgb2JqID0gcmVzcG9uc2VbaV07XHJcbiAgICAgICAgICAvLyBGbGF0dGVuIGFsbCB2YWx1ZXMgaW5jbHVkaW5nIG5lc3RlZCBvYmplY3RzXHJcbiAgICAgICAgICBsZXQgY29tYmluZWRWYWx1ZXMgPSB0aGlzLmZsYXR0ZW5PYmplY3RWYWx1ZXMob2JqKTtcclxuICBcclxuICAgICAgICAgIGxldCBtYXRjaCA9IHNlYXJjaFRlcm1zLmV2ZXJ5KHRlcm0gPT4gY29tYmluZWRWYWx1ZXMuaW5jbHVkZXModGVybSkpO1xyXG4gIFxyXG4gICAgICAgICAgaWYgKG1hdGNoKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdHMucHVzaChvYmopO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICBcclxuICAgICAgICB0aGlzLm5vUmVzdWx0ID0gcmVzdWx0cy5sZW5ndGggPT09IDA7XHJcbiAgICAgICAgdGhpcy5maW5hbFJlc3VsdHMgPSByZXN1bHRzO1xyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfTtcclxuICBcclxuICBwdWJsaWMgY2xpY2tJdGVtKGV2ZW50KSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnaW5zaWRlIGNsaWNrSXRlbSBvZiAnICsgZXZlbnQudGFyZ2V0LnZhbHVlKTtcclxuICAgIGxldCBhcGlPYmo6IEFQSU1ldGEgPSBKU09OLnBhcnNlKHRoaXMuYXBpTWV0YSk7XHJcbiAgICB0aGlzLmZpbHRlck5hbWUgPSBldmVudFthcGlPYmouZmllbGRdO1xyXG4gICAgbGV0IGNoYW5nZSA9IG5ldyBDaGFuZ2VXcmFwcGVyKCk7IC8vIENoYW5nZVdyYXBwZXIgPSBKU09OLnBhcnNlKCd7fScpO1xyXG4gICAgY2hhbmdlLmZyb21RdWVzdGlvbklkID0gdGhpcy5pZDtcclxuICAgIGNoYW5nZS52YWx1ZU9iaiA9IGV2ZW50O1xyXG4gICAgY2hhbmdlLmZpZWxkID0gYXBpT2JqLmZpZWxkO1xyXG4gICAgdGhpcy5zZWFyY2hWYWx1ZUNoYW5nZS5lbWl0KGNoYW5nZSk7XHJcbiAgfVxyXG4gIC8vUlMgMDNGRUIyMDI1XHJcbiAgLy8gUmVzZXRzIGNvbXBvbmVudCBzdGF0ZSB3aGVuIHRoZSBjb21wb25lbnQgaXMgZGVzdHJveWVkXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlc2V0Q29tcG9uZW50U3RhdGUoKTsgIH1cclxuICAvKlxyXG4gIHB1YmxpYyBnZXRTb3VyY2VEYXRhID0gKGtleXdvcmQ6IHN0cmluZykgPT4ge1xyXG4gICAgaWYodGhpcy5zZXJ2ID09IFwiYXBpXCIpIHtcclxuICAgICAgdGhpcy5kYXRhU2VydmljZS5nZXRBUElEYXRhKFxyXG4gICAgICAgIHRoaXMudGtuLFxyXG4gICAgICAgIFtcIlF1ZXN0aW9uQm9va1wiLCBcInJlYWRcIiwgdXVpZF0sXHJcbiAgICAgICAgdGhpcy5zdWNjZXNzU291cmNlRGF0YSxcclxuICAgICAgICB0aGlzLmZhaWx1cmVTb3VyY2VEYXRhXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNmU2VydmljZS5yZW1vdGVBY3Rpb24oXHJcbiAgICAgICAgXCJOeHRDb250cm9sbGVyLnByb2Nlc3NcIixcclxuICAgICAgICBbXCJRdWVzdGlvbkJvb2tcIiwgXCJyZWFkXCIsIHV1aWRdLFxyXG4gICAgICAgIHRoaXMuc3VjY2Vzc1NvdXJjZURhdGEsXHJcbiAgICAgICAgdGhpcy5mYWlsdXJlU291cmNlRGF0YVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHN1Y2Nlc3NTb3VyY2VEYXRhID0gKHJlc3BvbnNlKSA9PiB7XHJcbiAgICBsZXQgcmVzdWx0cz1bXTtcclxuICAgIHJlc3VsdHM9cmVzcG9uc2UucmVzdWx0cztcclxuICAgIHJlc3VsdHMucHVzaCh7dXVpZDogbnVsbCwgbmFtZTogXCJcIn0pO1xyXG4gICAgdGhpcy5ub1Jlc3VsdCA9ICEocmVzdWx0cy5sZW5ndGggPiAxKTtcclxuICAgIHRoaXMuZmluYWxSZXN1bHRzID0gcmVzdWx0cztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBmYWlsdXJlU291cmNlRGF0YSA9IChyZXNwb25zZSkgPT4ge1xyXG4gICAgY29uc29sZS5sb2coXCJFcnJvciByZWFkaW5nIHRoZSBkYXRhIGZyb20gQVBJXCIpO1xyXG4gIH1cclxuICAqL1xyXG59XHJcbiAgICAiLCI8IS0tIC8vIFZEIDEySnVuMjQgLSByZWFkb25seSBjaGFuZ2UtLT5cclxuPGRpdiBpZD1cImF1dG9jb21wbGV0ZS1pbnB1dFwiPiA8IS0tIFNLUzVOT1YyNSBzZWFyY2ggaWNvbiAtLT5cclxuICA8aW5wdXQgI2F1dG8gaWQ9XCJzZWFyY2hib3gtc3R5bGVcIlxyXG4gICAgICAgICAgKGJsdXIpPVwiY2xlYXJMaXN0KClcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWx0ZXJOYW1lXCJcclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgIG5hbWU9XCJuYW1lXCJcclxuICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXHJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXJUZXh0XCJcclxuICAgICAgICAgIHN0eWxlPVwibWFyZ2luOiAwICFpbXBvcnRhbnQ7IHBhZGRpbmctcmlnaHQ6IDMwcHg7XCJcclxuICAgICAgICAgIGNsYXNzPVwic2VhcmNoSW5wdXQgc2hlLWxpbmUtaW5wdXQgZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgIChmb2N1c2luKT1cImdldFNvdXJjZURhdGFMb2NhbCgkZXZlbnQpXCJcclxuICAgICAgICAgIChpbnB1dCk9XCJnZXRTb3VyY2VEYXRhTG9jYWwoJGV2ZW50KVwiPlxyXG4gIDxkaXYgaWQ9XCJzZWxlY3RMaXN0XCIgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7cG9zaXRpb246IGFic29sdXRlO2JhY2tncm91bmQ6IHdoaXRlO3otaW5kZXg6IDI7XCI+XHJcbiAgPGRpdiAqbmdJZj1cImZpbmFsUmVzdWx0cy5sZW5ndGggPiAwICYmIHNob3dTdWdnZXN0aW9uXCJcclxuICAgIHN0eWxlPVwibWF4LWhlaWdodDogMTAwdmg7Ym9yZGVyOiAxcHggc29saWQgI2QyZDRkNjtvdmVyZmxvdzogc2Nyb2xsOyBtaW4td2lkdGg6MTAwcHhcIlxyXG4gICAgICAgY2xhc3M9XCJzdWdnZXN0aW9ucy1jb250YWluZXJcIj5cclxuICAgICAgPCEtLSBIQSAyMERFQzIzIFVuY29tbWVudGVkIHRoZSBsb2dpYyAtLT5cclxuICAgICAgIDwhLS0gVkQgMDNNYXktIHNlYXJjaCBjaGFuZ2VzIC0tPlxyXG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpbmFsUmVzdWx0c1wiIChjbGljayk9J2NsaWNrSXRlbShpdGVtKScgY2xhc3M9XCJob292ZXJcIj5cclxuICAgICAgICA8IS0tIFZEIDI2SnVuMjQgLSBpZCBjb25kaXRpb24gcmVtb3ZlZCAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkLXggYWxpZ24tbWlkZGxlXCIgc3R5bGU9XCJcIj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS50aHVtYm5haWxcIiBjbGFzcz1cImNlbGwgc2hyaW5rXCIgc3R5bGU9XCJ3aWR0aDogNjBweDsgbWFyZ2luLXJpZ2h0OiAxLjZyZW07XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpdGVtLnRodW1ibmFpbFwiIHN0eWxlPVwid2lkdGg6IDYwcHg7XCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNlbGwgYXV0b1wiIHN0eWxlPVwidGV4dC1hbGlnbjogbGVmdDsgcGFkZGluZzo1cHggOHB4IDAgOHB4XCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tLy8gVkQgMjZKVU4yNCAtIHBpcGUgY2hhbmdlcyAtLT5cclxuICAgICAgICAgICAgICAgIDwhLS0gUlMgMjlKQU4yNSAtLT5cclxuICAgICAgICAgICAgICAgIDxoNCA+e3sgJycgfCBnZXRWYWx1ZTogaXRlbSA6IFNlYXJjaEl0ZW0gIH19PC9oND5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLSBIQSAyMERFQzIzIEZvciBDb21tZW50ZWQgdGhpcyBmb3IgZnV0dXJlIHB1cnBvc2UgLS0+XHJcbiAgICAgIDwhLS0gPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtc3RyaXBlZCB0YWJsZS1ib3JkZXJlZFwiPlxyXG4gICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgPHRoPnt7ICdmaXJzdE5hbWUnIHwgaTE4bjppMThuU2VydmljZS5jdXJyZW50TGFuZ3VhZ2UgfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aD57eyAnbGFzdE5hbWUnIHwgaTE4bjppMThuU2VydmljZS5jdXJyZW50TGFuZ3VhZ2UgfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aD57eyAnZGl2aXNpb24nIHwgaTE4bjppMThuU2VydmljZS5jdXJyZW50TGFuZ3VhZ2UgfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aD57eyAnbnVtYmVyUGxhdGUnIHwgaTE4bjppMThuU2VydmljZS5jdXJyZW50TGFuZ3VhZ2UgfX08L3RoPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpbmFsUmVzdWx0c1wiIChjbGljayk9J2NsaWNrSXRlbShpdGVtKSc+XHJcbiAgICAgICAgICAgICAgPHRkPnt7IGl0ZW0uZmlyc3ROYW1lIH19PC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+e3sgaXRlbS5sYXN0TmFtZSB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPnt7IGl0ZW0uZGl2aXNpb24gfX08L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD57eyBpdGVtLm51bWJlclBsYXRlIH19PC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgPC90YWJsZT4gLS0+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuIl19
@@ -5020,15 +5020,28 @@ class CustomTableComponent {
5020
5020
  }
5021
5021
  });
5022
5022
  }
5023
+ // if(validItem){
5024
+ // if(this.tableData.length > 0){
5025
+ // this.tableData = [...this.tableData,item];
5026
+ // this.emitTableDataValue(this.tableData);
5027
+ // }else {
5028
+ // this.tableData.push(item);
5029
+ // this.emitTableDataValue(this.tableData);
5030
+ // }
5031
+ // }
5032
+ //RS 14FEB2025
5033
+ //Update Pagination before emit
5023
5034
  if (validItem) {
5024
5035
  if (this.tableData.length > 0) {
5025
5036
  this.tableData = [...this.tableData, item];
5026
- this.emitTableDataValue(this.tableData);
5027
5037
  }
5028
5038
  else {
5029
5039
  this.tableData.push(item);
5030
- this.emitTableDataValue(this.tableData);
5031
5040
  }
5041
+ // Update filteredData and pagination
5042
+ this.filteredData = [...this.tableData];
5043
+ this.updatePagination();
5044
+ this.emitTableDataValue(this.tableData);
5032
5045
  }
5033
5046
  }
5034
5047
  this.changeService.confirmChange(apiObj.sourceQuestionId);
@@ -8308,6 +8321,23 @@ class SearchBoxComponent {
8308
8321
  this.route = route;
8309
8322
  this.i18nService = i18nService;
8310
8323
  }
8324
+ // RS 14FEB2025
8325
+ // Extract all string values from an object
8326
+ flattenObjectValues(obj) {
8327
+ let result = [];
8328
+ for (const key in obj) {
8329
+ if (obj.hasOwnProperty(key)) {
8330
+ const value = obj[key];
8331
+ if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
8332
+ result.push(this.flattenObjectValues(value));
8333
+ }
8334
+ else if (value !== null && value !== undefined) {
8335
+ result.push(String(value).toLowerCase());
8336
+ }
8337
+ }
8338
+ }
8339
+ return result.join(' ');
8340
+ }
8311
8341
  ngOnInit() {
8312
8342
  // VD 03May- search changes
8313
8343
  if (this.apiMeta) {
@@ -8369,21 +8399,19 @@ class SearchBoxComponent {
8369
8399
  response = apiResponse;
8370
8400
  }
8371
8401
  let results = [];
8372
- let searchTerms = keyword.toLowerCase().split(" "); // Split input into words
8402
+ let searchTerms = keyword.toLowerCase().split(" ");
8373
8403
  for (let i = 0; i < response.length; i++) {
8374
8404
  let obj = response[i];
8375
- // Convert all object values to a single string for flexible search
8376
- let combinedValues = Object.values(obj).join(" ").toLowerCase();
8377
- // Check if all search terms exist in any order
8405
+ // Flatten all values including nested objects
8406
+ let combinedValues = this.flattenObjectValues(obj);
8378
8407
  let match = searchTerms.every(term => combinedValues.includes(term));
8379
8408
  if (match) {
8380
- console.log('Matching entry:', obj);
8381
8409
  results.push(obj);
8382
8410
  }
8383
8411
  }
8384
8412
  this.noResult = results.length === 0;
8385
8413
  this.finalResults = results;
8386
- this.cdr.detectChanges(); // Force UI update
8414
+ this.cdr.detectChanges();
8387
8415
  });
8388
8416
  }
8389
8417
  };
@@ -8403,11 +8431,11 @@ class SearchBoxComponent {
8403
8431
  this.resetComponentState();
8404
8432
  }
8405
8433
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchBoxComponent, deps: [{ token: SalesforceService }, { token: i0.ChangeDetectorRef }, { token: DataService }, { token: i1.ActivatedRoute }, { token: i0.ElementRef }, { token: I18nService }], target: i0.ɵɵFactoryTarget.Component });
8406
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SearchBoxComponent, selector: "lib-search-box", inputs: { placeHolderText: "placeHolderText", question: "question", apiMeta: "apiMeta", id: "id", readOnly: "readOnly", filterName: "filterName" }, outputs: { searchValueChange: "searchValueChange" }, viewQueries: [{ propertyName: "auto", first: true, predicate: ["auto"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- // VD 12Jun24 - readonly change-->\r\n<div id=\"autocomplete-input\"> <!-- SKS5NOV25 search icon -->\r\n <input #auto id=\"searchbox-style\"\r\n (blur)=\"clearList()\"\r\n [(ngModel)]=\"filterName\"\r\n type=\"text\"\r\n name=\"name\"\r\n [readOnly]=\"readOnly\"\r\n [placeholder]=\"placeHolderText\"\r\n style=\"margin: 0 !important; padding-right: 30px;\"\r\n class=\"searchInput she-line-input form-control\"\r\n (focusin)=\"getSourceDataLocal($event)\"\r\n (input)=\"getSourceDataLocal($event)\">\r\n <div id=\"selectList\" style=\"position: absolute;position: absolute;background: white;z-index: 2;\">\r\n <div *ngIf=\"finalResults.length > 0 && showSuggestion\"\r\n style=\"max-height: 100vh;border: 1px solid #d2d4d6;overflow: scroll;\"\r\n class=\"suggestions-container\">\r\n <!-- HA 20DEC23 Uncommented the logic -->\r\n <!-- VD 03May- search changes -->\r\n <div *ngFor=\"let item of finalResults\" (click)='clickItem(item)' class=\"hoover\">\r\n <!-- VD 26Jun24 - id condition removed -->\r\n <div class=\"grid-x align-middle\" style=\"padding: 1rem\">\r\n <div *ngIf=\"item.thumbnail\" class=\"cell shrink\" style=\"width: 60px; margin-right: 1.6rem;\">\r\n <img [src]=\"item.thumbnail\" style=\"width: 60px;\" alt=\"\">\r\n </div>\r\n <div class=\"cell auto\" style=\"text-align: left; padding-left: 20px;\">\r\n <!--// VD 26JUN24 - pipe changes -->\r\n <!-- RS 29JAN25 -->\r\n <h4 >{{ '' | getValue: item : SearchItem }}</h4>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- HA 20DEC23 For Commented this for future purpose -->\r\n <!-- <table class=\"table table-striped table-bordered\">\r\n <thead>\r\n <tr>\r\n <th>{{ 'firstName' | i18n:i18nService.currentLanguage }}</th>\r\n <th>{{ 'lastName' | i18n:i18nService.currentLanguage }}</th>\r\n <th>{{ 'division' | i18n:i18nService.currentLanguage }}</th>\r\n <th>{{ 'numberPlate' | i18n:i18nService.currentLanguage }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of finalResults\" (click)='clickItem(item)'>\r\n <td>{{ item.firstName }}</td>\r\n <td>{{ item.lastName }}</td>\r\n <td>{{ item.division }}</td>\r\n <td>{{ item.numberPlate }}</td>\r\n </tr>\r\n </tbody>\r\n </table> -->\r\n </div>\r\n</div>\r\n\r\n", styles: ["#searchbox-style{background-image:url('data:image/svg+xml;utf8,<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"%23434555\" stroke-opacity=\"0.65\" stroke-width=\"2\"/><path d=\"M20 20L17 17\" stroke=\"%23434555\" stroke-opacity=\"0.65\" stroke-width=\"2\" stroke-linecap=\"round\"/></svg>');background-position:right 5px center;background-repeat:no-repeat;background-size:24px;padding-right:35px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: GetValuePipe, name: "getValue" }] });
8434
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SearchBoxComponent, selector: "lib-search-box", inputs: { placeHolderText: "placeHolderText", question: "question", apiMeta: "apiMeta", id: "id", readOnly: "readOnly", filterName: "filterName" }, outputs: { searchValueChange: "searchValueChange" }, viewQueries: [{ propertyName: "auto", first: true, predicate: ["auto"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- // VD 12Jun24 - readonly change-->\r\n<div id=\"autocomplete-input\"> <!-- SKS5NOV25 search icon -->\r\n <input #auto id=\"searchbox-style\"\r\n (blur)=\"clearList()\"\r\n [(ngModel)]=\"filterName\"\r\n type=\"text\"\r\n name=\"name\"\r\n [readOnly]=\"readOnly\"\r\n [placeholder]=\"placeHolderText\"\r\n style=\"margin: 0 !important; padding-right: 30px;\"\r\n class=\"searchInput she-line-input form-control\"\r\n (focusin)=\"getSourceDataLocal($event)\"\r\n (input)=\"getSourceDataLocal($event)\">\r\n <div id=\"selectList\" style=\"position: absolute;position: absolute;background: white;z-index: 2;\">\r\n <div *ngIf=\"finalResults.length > 0 && showSuggestion\"\r\n style=\"max-height: 100vh;border: 1px solid #d2d4d6;overflow: scroll; min-width:100px\"\r\n class=\"suggestions-container\">\r\n <!-- HA 20DEC23 Uncommented the logic -->\r\n <!-- VD 03May- search changes -->\r\n <div *ngFor=\"let item of finalResults\" (click)='clickItem(item)' class=\"hoover\">\r\n <!-- VD 26Jun24 - id condition removed -->\r\n <div class=\"grid-x align-middle\" style=\"\">\r\n <div *ngIf=\"item.thumbnail\" class=\"cell shrink\" style=\"width: 60px; margin-right: 1.6rem;\">\r\n <img [src]=\"item.thumbnail\" style=\"width: 60px;\" alt=\"\">\r\n </div>\r\n <div class=\"cell auto\" style=\"text-align: left; padding:5px 8px 0 8px\">\r\n <!--// VD 26JUN24 - pipe changes -->\r\n <!-- RS 29JAN25 -->\r\n <h4 >{{ '' | getValue: item : SearchItem }}</h4>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- HA 20DEC23 For Commented this for future purpose -->\r\n <!-- <table class=\"table table-striped table-bordered\">\r\n <thead>\r\n <tr>\r\n <th>{{ 'firstName' | i18n:i18nService.currentLanguage }}</th>\r\n <th>{{ 'lastName' | i18n:i18nService.currentLanguage }}</th>\r\n <th>{{ 'division' | i18n:i18nService.currentLanguage }}</th>\r\n <th>{{ 'numberPlate' | i18n:i18nService.currentLanguage }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of finalResults\" (click)='clickItem(item)'>\r\n <td>{{ item.firstName }}</td>\r\n <td>{{ item.lastName }}</td>\r\n <td>{{ item.division }}</td>\r\n <td>{{ item.numberPlate }}</td>\r\n </tr>\r\n </tbody>\r\n </table> -->\r\n </div>\r\n</div>\r\n\r\n", styles: ["#searchbox-style{background-image:url('data:image/svg+xml;utf8,<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"%23434555\" stroke-opacity=\"0.65\" stroke-width=\"2\"/><path d=\"M20 20L17 17\" stroke=\"%23434555\" stroke-opacity=\"0.65\" stroke-width=\"2\" stroke-linecap=\"round\"/></svg>');background-position:right 5px center;background-repeat:no-repeat;background-size:24px;padding-right:35px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: GetValuePipe, name: "getValue" }] });
8407
8435
  }
8408
8436
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchBoxComponent, decorators: [{
8409
8437
  type: Component,
8410
- args: [{ selector: 'lib-search-box', template: "<!-- // VD 12Jun24 - readonly change-->\r\n<div id=\"autocomplete-input\"> <!-- SKS5NOV25 search icon -->\r\n <input #auto id=\"searchbox-style\"\r\n (blur)=\"clearList()\"\r\n [(ngModel)]=\"filterName\"\r\n type=\"text\"\r\n name=\"name\"\r\n [readOnly]=\"readOnly\"\r\n [placeholder]=\"placeHolderText\"\r\n style=\"margin: 0 !important; padding-right: 30px;\"\r\n class=\"searchInput she-line-input form-control\"\r\n (focusin)=\"getSourceDataLocal($event)\"\r\n (input)=\"getSourceDataLocal($event)\">\r\n <div id=\"selectList\" style=\"position: absolute;position: absolute;background: white;z-index: 2;\">\r\n <div *ngIf=\"finalResults.length > 0 && showSuggestion\"\r\n style=\"max-height: 100vh;border: 1px solid #d2d4d6;overflow: scroll;\"\r\n class=\"suggestions-container\">\r\n <!-- HA 20DEC23 Uncommented the logic -->\r\n <!-- VD 03May- search changes -->\r\n <div *ngFor=\"let item of finalResults\" (click)='clickItem(item)' class=\"hoover\">\r\n <!-- VD 26Jun24 - id condition removed -->\r\n <div class=\"grid-x align-middle\" style=\"padding: 1rem\">\r\n <div *ngIf=\"item.thumbnail\" class=\"cell shrink\" style=\"width: 60px; margin-right: 1.6rem;\">\r\n <img [src]=\"item.thumbnail\" style=\"width: 60px;\" alt=\"\">\r\n </div>\r\n <div class=\"cell auto\" style=\"text-align: left; padding-left: 20px;\">\r\n <!--// VD 26JUN24 - pipe changes -->\r\n <!-- RS 29JAN25 -->\r\n <h4 >{{ '' | getValue: item : SearchItem }}</h4>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- HA 20DEC23 For Commented this for future purpose -->\r\n <!-- <table class=\"table table-striped table-bordered\">\r\n <thead>\r\n <tr>\r\n <th>{{ 'firstName' | i18n:i18nService.currentLanguage }}</th>\r\n <th>{{ 'lastName' | i18n:i18nService.currentLanguage }}</th>\r\n <th>{{ 'division' | i18n:i18nService.currentLanguage }}</th>\r\n <th>{{ 'numberPlate' | i18n:i18nService.currentLanguage }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of finalResults\" (click)='clickItem(item)'>\r\n <td>{{ item.firstName }}</td>\r\n <td>{{ item.lastName }}</td>\r\n <td>{{ item.division }}</td>\r\n <td>{{ item.numberPlate }}</td>\r\n </tr>\r\n </tbody>\r\n </table> -->\r\n </div>\r\n</div>\r\n\r\n", styles: ["#searchbox-style{background-image:url('data:image/svg+xml;utf8,<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"%23434555\" stroke-opacity=\"0.65\" stroke-width=\"2\"/><path d=\"M20 20L17 17\" stroke=\"%23434555\" stroke-opacity=\"0.65\" stroke-width=\"2\" stroke-linecap=\"round\"/></svg>');background-position:right 5px center;background-repeat:no-repeat;background-size:24px;padding-right:35px}\n"] }]
8438
+ args: [{ selector: 'lib-search-box', template: "<!-- // VD 12Jun24 - readonly change-->\r\n<div id=\"autocomplete-input\"> <!-- SKS5NOV25 search icon -->\r\n <input #auto id=\"searchbox-style\"\r\n (blur)=\"clearList()\"\r\n [(ngModel)]=\"filterName\"\r\n type=\"text\"\r\n name=\"name\"\r\n [readOnly]=\"readOnly\"\r\n [placeholder]=\"placeHolderText\"\r\n style=\"margin: 0 !important; padding-right: 30px;\"\r\n class=\"searchInput she-line-input form-control\"\r\n (focusin)=\"getSourceDataLocal($event)\"\r\n (input)=\"getSourceDataLocal($event)\">\r\n <div id=\"selectList\" style=\"position: absolute;position: absolute;background: white;z-index: 2;\">\r\n <div *ngIf=\"finalResults.length > 0 && showSuggestion\"\r\n style=\"max-height: 100vh;border: 1px solid #d2d4d6;overflow: scroll; min-width:100px\"\r\n class=\"suggestions-container\">\r\n <!-- HA 20DEC23 Uncommented the logic -->\r\n <!-- VD 03May- search changes -->\r\n <div *ngFor=\"let item of finalResults\" (click)='clickItem(item)' class=\"hoover\">\r\n <!-- VD 26Jun24 - id condition removed -->\r\n <div class=\"grid-x align-middle\" style=\"\">\r\n <div *ngIf=\"item.thumbnail\" class=\"cell shrink\" style=\"width: 60px; margin-right: 1.6rem;\">\r\n <img [src]=\"item.thumbnail\" style=\"width: 60px;\" alt=\"\">\r\n </div>\r\n <div class=\"cell auto\" style=\"text-align: left; padding:5px 8px 0 8px\">\r\n <!--// VD 26JUN24 - pipe changes -->\r\n <!-- RS 29JAN25 -->\r\n <h4 >{{ '' | getValue: item : SearchItem }}</h4>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- HA 20DEC23 For Commented this for future purpose -->\r\n <!-- <table class=\"table table-striped table-bordered\">\r\n <thead>\r\n <tr>\r\n <th>{{ 'firstName' | i18n:i18nService.currentLanguage }}</th>\r\n <th>{{ 'lastName' | i18n:i18nService.currentLanguage }}</th>\r\n <th>{{ 'division' | i18n:i18nService.currentLanguage }}</th>\r\n <th>{{ 'numberPlate' | i18n:i18nService.currentLanguage }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of finalResults\" (click)='clickItem(item)'>\r\n <td>{{ item.firstName }}</td>\r\n <td>{{ item.lastName }}</td>\r\n <td>{{ item.division }}</td>\r\n <td>{{ item.numberPlate }}</td>\r\n </tr>\r\n </tbody>\r\n </table> -->\r\n </div>\r\n</div>\r\n\r\n", styles: ["#searchbox-style{background-image:url('data:image/svg+xml;utf8,<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"%23434555\" stroke-opacity=\"0.65\" stroke-width=\"2\"/><path d=\"M20 20L17 17\" stroke=\"%23434555\" stroke-opacity=\"0.65\" stroke-width=\"2\" stroke-linecap=\"round\"/></svg>');background-position:right 5px center;background-repeat:no-repeat;background-size:24px;padding-right:35px}\n"] }]
8411
8439
  }], ctorParameters: () => [{ type: SalesforceService }, { type: i0.ChangeDetectorRef }, { type: DataService }, { type: i1.ActivatedRoute }, { type: i0.ElementRef }, { type: I18nService }], propDecorators: { placeHolderText: [{
8412
8440
  type: Input
8413
8441
  }], auto: [{