@cqa-lib/cqa-ui 1.0.82 → 1.0.84

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.
@@ -161,6 +161,11 @@ export class DynamicFilterComponent {
161
161
  showSelectAll: item.showSelectAll,
162
162
  selectAllLabel: item.selectAllLabel,
163
163
  selectedValue: item.selectedValue,
164
+ serverSearch: item.serverSearch,
165
+ hasMore: item.hasMore,
166
+ isLoading: item.isLoading,
167
+ onSearch: item.onSearch,
168
+ onLoadMore: item.onLoadMore,
164
169
  options: item.options || []
165
170
  };
166
171
  }
@@ -392,4 +397,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
392
397
  type: ViewChildren,
393
398
  args: [DynamicSelectFieldComponent]
394
399
  }] } });
395
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9maWx0ZXJzL2R5bmFtaWMtZmlsdGVyL2R5bmFtaWMtZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZmlsdGVycy9keW5hbWljLWZpbHRlci9keW5hbWljLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixZQUFZLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDbkosT0FBTyxFQUFlLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQzs7Ozs7Ozs7O0FBeUNsRyxNQUFNLE9BQU8sc0JBQXNCO0lBa0JqQyxZQUE2QixFQUFlO1FBQWYsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQWpCbkMsV0FBTSxHQUF3QixFQUFFLENBQUM7UUFDakMsVUFBSyxHQUF3QixFQUFFLENBQUM7UUFDaEMsb0JBQWUsR0FBWSxJQUFJLENBQUM7UUFDaEMsaUJBQVksR0FBZ0MsUUFBUSxDQUFDO1FBQ3BELG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFDekQsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUN6RCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDdkMsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFDN0QsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUV4RCxTQUFJLEdBQWMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEMsWUFBTyxH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SUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFO1lBQ3JCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNyRCxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxhQUFhLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDO1NBQ3hFO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzttSEFqV1Usc0JBQXNCO3VHQUF0QixzQkFBc0IseWJBZ0JuQiwyQkFBMkIscUVDN0QzQyxtdGpCQW9QTTsyRkR2TU8sc0JBQXNCO2tCQVBsQyxTQUFTOytCQUNFLG9CQUFvQixtQkFHYix1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTtrR0FHckIsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0ksY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFPb0MsZ0JBQWdCO3NCQUExRCxZQUFZO3VCQUFDLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGRyZW4sIFF1ZXJ5TGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXREYXRlcGlja2VySW5wdXRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgRHluYW1pY1NlbGVjdEZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vZHluYW1pYy1zZWxlY3QvZHluYW1pYy1zZWxlY3QtZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IER5bmFtaWNTZWxlY3RGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2R5bmFtaWMtc2VsZWN0L2R5bmFtaWMtc2VsZWN0LWZpZWxkLmNvbXBvbmVudCc7XG5cbnR5cGUgRmlsdGVyVHlwZSA9ICdzZWxlY3QnIHwgJ2RhdGUtcmFuZ2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtaWNGaWx0ZXJPcHRpb24ge1xuICBpZD86IG51bWJlciB8IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgdmFsdWU/OiBhbnk7XG4gIGxhYmVsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtaWNGaWx0ZXJJdGVtIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIHR5cGU6IEZpbHRlclR5cGU7XG4gIGtleTogc3RyaW5nO1xuICBvcHRpb25zPzogRHluYW1pY0ZpbHRlck9wdGlvbltdO1xuICBtdWx0aXBsZT86IGJvb2xlYW47XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgaGlkZGVuPzogYm9vbGVhbjtcbiAgc2VhcmNoYWJsZT86IGJvb2xlYW47XG4gIG9wdGlvblN0eWxlPzogJ2NoZWNrbWFyaycgfCAnY2hlY2tib3gnO1xuICBzaG93U2VsZWN0QWxsPzogYm9vbGVhbjtcbiAgc2VsZWN0QWxsTGFiZWw/OiBzdHJpbmc7XG4gIHNlbGVjdGVkVmFsdWU/OiBhbnkgfCBhbnlbXTtcbiAgc2VsZWN0ZWRTdGFydERhdGU/OiBEYXRlIHwgc3RyaW5nO1xuICBzZWxlY3RlZEVuZERhdGU/OiBEYXRlIHwgc3RyaW5nO1xuICBvbkRhdGVDaGFuZ2U/OiAodmFsdWU6IHsgc3RhcnQ6IERhdGUgfCBudWxsOyBlbmQ6IERhdGUgfCBudWxsIH0sIGV2ZW50PzogTWF0RGF0ZXBpY2tlcklucHV0RXZlbnQ8RGF0ZT4gfCBFdmVudCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEeW5hbWljRmlsdGVyVmFsdWVzIHtcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtZHluYW1pYy1maWx0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDogeyBjbGFzczogJ2NxYS11aS1yb290JyB9XG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBjb25maWc6IER5bmFtaWNGaWx0ZXJJdGVtW10gPSBbXTtcbiAgQElucHV0KCkgbW9kZWw6IER5bmFtaWNGaWx0ZXJWYWx1ZXMgPSB7fTtcbiAgQElucHV0KCkgc2hvd0ZpbHRlclBhbmVsOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgYnV0dG9uTGF5b3V0OiAnbGVmdCcgfCAncmlnaHQnIHwgJ2JvdHRvbScgPSAnYm90dG9tJztcbiAgQE91dHB1dCgpIGZpbHRlcnNBcHBsaWVkID0gbmV3IEV2ZW50RW1pdHRlcjxEeW5hbWljRmlsdGVyVmFsdWVzPigpO1xuICBAT3V0cHV0KCkgZmlsdGVyc0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPER5bmFtaWNGaWx0ZXJWYWx1ZXM+KCk7XG4gIEBPdXRwdXQoKSByZXNldEFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIG9uQXBwbHlGaWx0ZXJDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8RHluYW1pY0ZpbHRlclZhbHVlcz4oKTtcbiAgQE91dHB1dCgpIG9uUmVzZXRGaWx0ZXJDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBmb3JtOiBGb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHt9KTtcbiAgbWF4RGF0ZSA9IG5ldyBEYXRlKCk7XG4gIHNlYXJjaFRleHRCeUtleTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICBwcml2YXRlIHNlbGVjdE91dHNpZGVDbGVhbnVwID0gbmV3IE1hcDxhbnksICgpID0+IHZvaWQ+KCk7XG4gIGhhc1NlbGVjdGVkRmlsdGVycyA9IGZhbHNlO1xuICBAVmlld0NoaWxkcmVuKER5bmFtaWNTZWxlY3RGaWVsZENvbXBvbmVudCkgc2VsZWN0Q29tcG9uZW50cz86IFF1ZXJ5TGlzdDxEeW5hbWljU2VsZWN0RmllbGRDb21wb25lbnQ+O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZmI6IEZvcm1CdWlsZGVyKSB7XG4gICAgLy8gRW5zdXJlIG1heERhdGUgaXMgdGhlIGVuZCBvZiB0b2RheSwgc28gYW55IGZ1dHVyZSBkYXRlcyBhcmUgZGlzYWxsb3dlZFxuICAgIHRoaXMubWF4RGF0ZSA9IHRoaXMuZW5kT2ZEYXkobmV3IERhdGUoKSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2NvbmZpZyddIHx8IGNoYW5nZXNbJ21vZGVsJ10pIHtcbiAgICAgIHRoaXMuYnVpbGRGb3JtKCk7XG4gICAgfVxuICB9XG5cbiAgb25EYXRlQ2hhbmdlKGV2ZW50OiBNYXREYXRlcGlja2VySW5wdXRFdmVudDxEYXRlPiB8IEV2ZW50LCBrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaW52b2tlRGF0ZVJhbmdlQ2hhbmdlKGtleSwgZXZlbnQpO1xuICB9XG5cbiAgLy8gTkdYIERhdGVSYW5nZVBpY2tlciBpbnRlZ3JhdGlvblxuICBuZ3hEYXRlUmFuZ2VCeUtleTogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICBuZ3hSYW5nZXM6IGFueSA9IHt9OyAvLyBVc2luZyAnYW55JyB0byBhdm9pZCBEYXlqcyB0eXBlIG1pc21hdGNoIC0gbGlicmFyeSBhY2NlcHRzIERhdGUgb2JqZWN0cyBhdCBydW50aW1lXG4gIG5neExvY2FsZSA9IHsgY3VzdG9tUmFuZ2VMYWJlbDogJ0N1c3RvbSByYW5nZScgfTtcbiAgLy8gRGlzYWJsZSBhbGwgZGF0ZXMgYWZ0ZXIgdG9kYXkgaW4gdGhlIG5neCBkYXRlcGlja2VyXG4gIGRpc2FibGVGdXR1cmVEYXRlcyA9IChtOiBhbnkpOiBib29sZWFuID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZDogRGF0ZSA9IG0gJiYgdHlwZW9mIG0udG9EYXRlID09PSAnZnVuY3Rpb24nID8gbS50b0RhdGUoKSA6IG5ldyBEYXRlKG0pO1xuICAgICAgcmV0dXJuIGQuZ2V0VGltZSgpID4gdGhpcy5tYXhEYXRlLmdldFRpbWUoKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH07XG4gIG9uTmd4RGF0ZXNVcGRhdGVkKGU6IGFueSwga2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBncm91cCA9IHRoaXMuZ2V0RGF0ZUdyb3VwKGtleSk7XG4gICAgaWYgKCFncm91cCkgcmV0dXJuO1xuICAgIGNvbnN0IGNsYW1wID0gKGQ6IERhdGUgfCBudWxsKSA9PiAoZCAmJiBkLmdldFRpbWUoKSA+IHRoaXMubWF4RGF0ZS5nZXRUaW1lKCkgPyB0aGlzLm1heERhdGUgOiBkKTtcbiAgICBjb25zdCBzdGFydFJhdyA9IGU/LnN0YXJ0RGF0ZSA/ICh0eXBlb2YgZS5zdGFydERhdGUudG9EYXRlID09PSAnZnVuY3Rpb24nID8gZS5zdGFydERhdGUudG9EYXRlKCkgOiBuZXcgRGF0ZShlLnN0YXJ0RGF0ZSkpIDogbnVsbDtcbiAgICBjb25zdCBlbmRSYXcgPSBlPy5lbmREYXRlID8gKHR5cGVvZiBlLmVuZERhdGUudG9EYXRlID09PSAnZnVuY3Rpb24nID8gZS5lbmREYXRlLnRvRGF0ZSgpIDogbmV3IERhdGUoZS5lbmREYXRlKSkgOiBudWxsO1xuICAgIGNvbnN0IHN0YXJ0ID0gY2xhbXAoc3RhcnRSYXcpO1xuICAgIGNvbnN0IGVuZCA9IGNsYW1wKGVuZFJhdyk7XG4gICAgZ3JvdXAucGF0Y2hWYWx1ZSh7IHN0YXJ0LCBlbmQgfSwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XG4gICAgY29uc3Qgc2VyaWFsaXplZCA9IHRoaXMuc2VyaWFsaXplKCk7XG4gICAgdGhpcy5oYXNTZWxlY3RlZEZpbHRlcnMgPSBPYmplY3Qua2V5cyhzZXJpYWxpemVkKS5sZW5ndGggPiAwO1xuICAgIGlmIChzdGFydCAmJiBlbmQgJiYgZ3JvdXAudmFsaWQpIHtcbiAgICAgIHRoaXMuYXBwbHkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJzQ2hhbmdlZC5lbWl0KHNlcmlhbGl6ZWQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRGb3JtKCk6IHZvaWQge1xuICAgIGNvbnN0IGN0cmxzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgKHRoaXMuY29uZmlnIHx8IFtdKS5mb3JFYWNoKGMgPT4ge1xuICAgICAgaWYgKGMuaGlkZGVuKSByZXR1cm47XG4gICAgICBpZiAoYy50eXBlID09PSAnZGF0ZS1yYW5nZScpIHtcbiAgICAgICAgY29uc3QgaW5pdGlhbFJhbmdlID0gdGhpcy5nZXRJbml0aWFsRGF0ZVJhbmdlVmFsdWUoYyk7XG4gICAgICAgIGN0cmxzW2Mua2V5XSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICAgIHN0YXJ0OiBuZXcgRm9ybUNvbnRyb2woaW5pdGlhbFJhbmdlLnN0YXJ0KSxcbiAgICAgICAgICBlbmQ6IG5ldyBGb3JtQ29udHJvbChpbml0aWFsUmFuZ2UuZW5kKSxcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGluaXRpYWxpemUgbmd4IG1vZGVsIGRpc3BsYXlcbiAgICAgICAgdGhpcy5uZ3hEYXRlUmFuZ2VCeUtleVtjLmtleV0gPSB7XG4gICAgICAgICAgc3RhcnREYXRlOiBpbml0aWFsUmFuZ2Uuc3RhcnQgfHwgbnVsbCxcbiAgICAgICAgICBlbmREYXRlOiBpbml0aWFsUmFuZ2UuZW5kIHx8IG51bGxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGluaXRpYWwgPSB0aGlzLnJlc29sdmVJbml0aWFsU2VsZWN0VmFsdWUoYyk7XG4gICAgICAgIGlmIChjLm11bHRpcGxlKSB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBBcnJheS5pc0FycmF5KGluaXRpYWwpID8gaW5pdGlhbCA6IChpbml0aWFsICE9IG51bGwgPyBbaW5pdGlhbF0gOiBbXSk7XG4gICAgICAgICAgY3RybHNbYy5rZXldID0gbmV3IEZvcm1Db250cm9sKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjdHJsc1tjLmtleV0gPSBuZXcgRm9ybUNvbnRyb2wodGhpcy5jb2VyY2VUb1NpbmdsZVZhbHVlKGluaXRpYWwpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoY3RybHMpO1xuICAgIC8vIGluaXRpYWxpemUgYXBwbHkgYnV0dG9uIHN0YXRlIGJhc2VkIG9uIGluaXRpYWwgdmFsdWVzXG4gICAgdGhpcy5oYXNTZWxlY3RlZEZpbHRlcnMgPSBPYmplY3Qua2V5cyh0aGlzLnNlcmlhbGl6ZSgpKS5sZW5ndGggPiAwO1xuICAgIC8vIGJ1aWxkIGNvbW1vbiByYW5nZXMgZm9yIG5neCBkYXRlcGlja2VyXG4gICAgdGhpcy5uZ3hSYW5nZXMgPSB0aGlzLmJ1aWxkTmd4UmFuZ2VzKCk7XG4gICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3Qgc2VyaWFsaXplZCA9IHRoaXMuc2VyaWFsaXplKCk7XG4gICAgICB0aGlzLmhhc1NlbGVjdGVkRmlsdGVycyA9IE9iamVjdC5rZXlzKHNlcmlhbGl6ZWQpLmxlbmd0aCA+IDA7XG4gICAgICB0aGlzLmZpbHRlcnNDaGFuZ2VkLmVtaXQoc2VyaWFsaXplZCk7XG4gICAgfSk7XG4gIH1cblxuICBvblNlbGVjdE9wZW5lZENoYW5nZShvcGVuZWQ6IGJvb2xlYW4sIHNlbGVjdDogYW55KTogdm9pZCB7XG4gICAgaWYgKG9wZW5lZCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IG9uRG9jRG93biA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgcGFuZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY2RrLW92ZXJsYXktcGFuZSAubWF0LXNlbGVjdC1wYW5lbCcpIGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgICAgICAgICBjb25zdCB0YXJnZXQgPSBlLnRhcmdldCBhcyBOb2RlIHwgbnVsbDtcbiAgICAgICAgICBjb25zdCBvcmlnaW5FbCA9IChzZWxlY3Q/Ll9lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KSB8fCBudWxsO1xuICAgICAgICAgIGNvbnN0IGluc2lkZVBhbmVsID0gISEocGFuZWwgJiYgdGFyZ2V0ICYmIHBhbmVsLmNvbnRhaW5zKHRhcmdldCkpO1xuICAgICAgICAgIGNvbnN0IGluc2lkZU9yaWdpbiA9ICEhKG9yaWdpbkVsICYmIHRhcmdldCAmJiBvcmlnaW5FbC5jb250YWlucyh0YXJnZXQpKTtcbiAgICAgICAgICBpZiAoIWluc2lkZVBhbmVsICYmICFpbnNpZGVPcmlnaW4pIHtcbiAgICAgICAgICAgIHNlbGVjdC5jbG9zZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgb25Eb2NEb3duLCB0cnVlKTtcbiAgICAgICAgdGhpcy5zZWxlY3RPdXRzaWRlQ2xlYW51cC5zZXQoc2VsZWN0LCAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBvbkRvY0Rvd24sIHRydWUpKTtcbiAgICAgIH0sIDApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjbGVhbnVwID0gdGhpcy5zZWxlY3RPdXRzaWRlQ2xlYW51cC5nZXQoc2VsZWN0KTtcbiAgICAgIGlmIChjbGVhbnVwKSBjbGVhbnVwKCk7XG4gICAgICB0aGlzLnNlbGVjdE91dHNpZGVDbGVhbnVwLmRlbGV0ZShzZWxlY3QpO1xuICAgIH1cbiAgfVxuXG4gIG9uU2VhcmNoKGtleTogc3RyaW5nLCB0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFRleHRCeUtleVtrZXldID0gKHRleHQgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICBmaWx0ZXJlZE9wdGlvbnMoaXRlbTogRHluYW1pY0ZpbHRlckl0ZW0pOiBEeW5hbWljRmlsdGVyT3B0aW9uW10ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBpdGVtPy5vcHRpb25zIHx8IFtdO1xuICAgIGNvbnN0IHEgPSAodGhpcy5zZWFyY2hUZXh0QnlLZXlbaXRlbS5rZXldIHx8ICcnKS50cmltKCk7XG4gICAgaWYgKCFxKSByZXR1cm4gb3B0aW9ucztcbiAgICByZXR1cm4gb3B0aW9ucy5maWx0ZXIob3B0ID0+IHtcbiAgICAgIGNvbnN0IG5hbWUgPSAob3B0Lm5hbWUgPz8gb3B0LmxhYmVsID8/IFN0cmluZyhvcHQudmFsdWUgPz8gJycpKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgcmV0dXJuIG5hbWUuaW5jbHVkZXMocSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXREYXRlR3JvdXAoa2V5OiBzdHJpbmcpOiBGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KGtleSkgYXMgRm9ybUdyb3VwO1xuICB9XG5cbiAgZ2V0U2VsZWN0Q29uZmlnKGl0ZW06IER5bmFtaWNGaWx0ZXJJdGVtKTogRHluYW1pY1NlbGVjdEZpZWxkQ29uZmlnIHtcbiAgICByZXR1cm4ge1xuICAgICAga2V5OiBpdGVtLmtleSxcbiAgICAgIGxhYmVsOiBpdGVtLmxhYmVsLFxuICAgICAgcGxhY2Vob2xkZXI6IGl0ZW0ucGxhY2Vob2xkZXIsXG4gICAgICBkaXNhYmxlZDogaXRlbS5kaXNhYmxlZCxcbiAgICAgIG11bHRpcGxlOiBpdGVtLm11bHRpcGxlLFxuICAgICAgc2VhcmNoYWJsZTogaXRlbS5zZWFyY2hhYmxlLFxuICAgICAgb3B0aW9uU3R5bGU6IGl0ZW0ub3B0aW9uU3R5bGUsXG4gICAgICBzaG93U2VsZWN0QWxsOiBpdGVtLnNob3dTZWxlY3RBbGwsXG4gICAgICBzZWxlY3RBbGxMYWJlbDogaXRlbS5zZWxlY3RBbGxMYWJlbCxcbiAgICAgIHNlbGVjdGVkVmFsdWU6IGl0ZW0uc2VsZWN0ZWRWYWx1ZSxcbiAgICAgIG9wdGlvbnM6IGl0ZW0ub3B0aW9ucyB8fCBbXVxuICAgIH07XG4gIH1cblxuICBhcHBseSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlQWxsT3BlblNlbGVjdHMoKTtcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZXMgPSB0aGlzLnNlcmlhbGl6ZSgpO1xuICAgIHRoaXMuZmlsdGVyc0FwcGxpZWQuZW1pdChmaWx0ZXJWYWx1ZXMpO1xuICAgIHRoaXMub25BcHBseUZpbHRlckNsaWNrLmVtaXQoZmlsdGVyVmFsdWVzKTtcbiAgfVxuXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VBbGxPcGVuU2VsZWN0cygpO1xuICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybS5jb250cm9scykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgY29uc3QgY3RybCA9IHRoaXMuZm9ybS5nZXQoa2V5KTtcbiAgICAgIGlmIChjdHJsIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XG4gICAgICAgIGN0cmwuZ2V0KCdzdGFydCcpPy5zZXRWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgICBjdHJsLmdldCgnZW5kJyk/LnNldFZhbHVlKHVuZGVmaW5lZCk7XG4gICAgICAgIHRoaXMuaW52b2tlRGF0ZVJhbmdlQ2hhbmdlKGtleSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdHJsPy5zZXRWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMucmVzZXRBY3Rpb24uZW1pdCgpO1xuICAgIHRoaXMub25SZXNldEZpbHRlckNsaWNrLmVtaXQoKTtcbiAgICBjb25zdCBzZXJpYWxpemVkID0gdGhpcy5zZXJpYWxpemUoKTtcbiAgICB0aGlzLmhhc1NlbGVjdGVkRmlsdGVycyA9IE9iamVjdC5rZXlzKHNlcmlhbGl6ZWQpLmxlbmd0aCA+IDA7XG4gICAgdGhpcy5maWx0ZXJzQ2hhbmdlZC5lbWl0KHNlcmlhbGl6ZWQpO1xuICB9XG5cbiAgLyoqIENsb3NlIGFueSBvcGVuIE1hdFNlbGVjdCBwYW5lbHMgYmVmb3JlIHByaW1hcnkgYWN0aW9ucyB0byBhdm9pZCBkb3VibGUtY2xpY2sgaXNzdWVzICovXG4gIHByZXBhcmVQcmltYXJ5QWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VBbGxPcGVuU2VsZWN0cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZUFsbE9wZW5TZWxlY3RzKCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLnNlbGVjdENvbXBvbmVudHM/LmZvckVhY2goYyA9PiBjLmNsb3NlUGFuZWwoKSk7XG4gICAgfSBjYXRjaCB7fVxuICB9XG5cbiAgcHJpdmF0ZSBzZXJpYWxpemUoKTogRHluYW1pY0ZpbHRlclZhbHVlcyB7XG4gICAgY29uc3QgcmVzdWx0OiBEeW5hbWljRmlsdGVyVmFsdWVzID0ge307XG4gICAgKHRoaXMuY29uZmlnIHx8IFtdKS5mb3JFYWNoKGMgPT4ge1xuICAgICAgY29uc3QgY3RybCA9IHRoaXMuZm9ybS5nZXQoYy5rZXkpO1xuICAgICAgaWYgKCFjdHJsKSByZXR1cm47XG4gICAgICBsZXQgdmFsOiBhbnkgPSBjdHJsIGluc3RhbmNlb2YgRm9ybUdyb3VwID8gKGN0cmwgYXMgRm9ybUdyb3VwKS5nZXRSYXdWYWx1ZSgpIDogY3RybC52YWx1ZTtcbiAgICAgIGlmIChjLnR5cGUgPT09ICdkYXRlLXJhbmdlJykge1xuICAgICAgICBjb25zdCBzdGFydCA9IHZhbD8uc3RhcnQ7IGNvbnN0IGVuZCA9IHZhbD8uZW5kO1xuICAgICAgICBpZiAoc3RhcnQgfHwgZW5kKSByZXN1bHRbYy5rZXldID0geyBzdGFydCwgZW5kIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodmFsICE9PSB1bmRlZmluZWQgJiYgdmFsICE9PSBudWxsICYmIChBcnJheS5pc0FycmF5KHZhbCkgPyB2YWwubGVuZ3RoID4gMCA6IHZhbCAhPT0gJycpKSB7XG4gICAgICAgICAgcmVzdWx0W2Mua2V5XSA9IHZhbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVJbml0aWFsU2VsZWN0VmFsdWUoaXRlbTogRHluYW1pY0ZpbHRlckl0ZW0pOiBhbnkge1xuICAgIGlmICh0aGlzLm1vZGVsICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLm1vZGVsLCBpdGVtLmtleSkpIHtcbiAgICAgIHJldHVybiB0aGlzLm1vZGVsW2l0ZW0ua2V5XTtcbiAgICB9XG4gICAgaWYgKGl0ZW0uc2VsZWN0ZWRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gaXRlbS5zZWxlY3RlZFZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBjb2VyY2VUb1NpbmdsZVZhbHVlKHZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHZhbHVlLmxlbmd0aCA/IHZhbHVlWzBdIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGdldEluaXRpYWxEYXRlUmFuZ2VWYWx1ZShpdGVtOiBEeW5hbWljRmlsdGVySXRlbSk6IHsgc3RhcnQ6IERhdGUgfCBudWxsOyBlbmQ6IERhdGUgfCBudWxsIH0ge1xuICAgIGNvbnN0IG1vZGVsVmFsdWUgPSB0aGlzLm1vZGVsPy5baXRlbS5rZXldO1xuICAgIGNvbnN0IHN0YXJ0U291cmNlID0gbW9kZWxWYWx1ZT8uc3RhcnQgPz8gaXRlbS5zZWxlY3RlZFN0YXJ0RGF0ZSA/PyBudWxsO1xuICAgIGNvbnN0IGVuZFNvdXJjZSA9IG1vZGVsVmFsdWU/LmVuZCA/PyBpdGVtLnNlbGVjdGVkRW5kRGF0ZSA/PyBudWxsO1xuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5ub3JtYWxpemVEYXRlVmFsdWUoc3RhcnRTb3VyY2UpO1xuICAgIGNvbnN0IGVuZCA9IHRoaXMubm9ybWFsaXplRGF0ZVZhbHVlKGVuZFNvdXJjZSk7XG4gICAgY29uc3QgY2xhbXAgPSAoZDogRGF0ZSB8IG51bGwpID0+IChkICYmIGQuZ2V0VGltZSgpID4gdGhpcy5tYXhEYXRlLmdldFRpbWUoKSA/IHRoaXMubWF4RGF0ZSA6IGQpO1xuICAgIHJldHVybiB7IHN0YXJ0OiBjbGFtcChzdGFydCksIGVuZDogY2xhbXAoZW5kKSB9O1xuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVEYXRlVmFsdWUodmFsdWU6IGFueSk6IERhdGUgfCBudWxsIHtcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gbnVsbDtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlICYmICFpc05hTih2YWx1ZS5nZXRUaW1lKCkpKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IHBhcnNlZCA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICByZXR1cm4gaXNOYU4ocGFyc2VkLmdldFRpbWUoKSkgPyBudWxsIDogcGFyc2VkO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnZva2VEYXRlUmFuZ2VDaGFuZ2Uoa2V5OiBzdHJpbmcsIGV2ZW50PzogTWF0RGF0ZXBpY2tlcklucHV0RXZlbnQ8RGF0ZT4gfCBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGl0ZW0gPSAodGhpcy5jb25maWcgfHwgW10pLmZpbmQoY2ZnID0+IGNmZy5rZXkgPT09IGtleSk7XG4gICAgaWYgKCFpdGVtPy5vbkRhdGVDaGFuZ2UpIHJldHVybjtcbiAgICBjb25zdCBkYXRlR3JvdXAgPSB0aGlzLmdldERhdGVHcm91cChrZXkpO1xuICAgIGlmICghZGF0ZUdyb3VwKSByZXR1cm47XG4gICAgY29uc3QgeyBzdGFydCwgZW5kIH0gPSBkYXRlR3JvdXAuZ2V0UmF3VmFsdWUoKSB8fCB7fTtcbiAgICBpdGVtLm9uRGF0ZUNoYW5nZShcbiAgICAgIHtcbiAgICAgICAgc3RhcnQ6IHRoaXMubm9ybWFsaXplRGF0ZVZhbHVlKHN0YXJ0KSxcbiAgICAgICAgZW5kOiB0aGlzLm5vcm1hbGl6ZURhdGVWYWx1ZShlbmQpLFxuICAgICAgfSxcbiAgICAgIGV2ZW50XG4gICAgKTtcbiAgfVxuXG4gIC8vIE1hdCBkYXRlIHJhbmdlIHBpY2tlciBvdmVybGF5IHByZXNldCBoZWxwZXJzXG4gIGFwcGx5UHJlc2V0VG9Hcm91cChrZXk6IHN0cmluZywgcHJlc2V0S2V5OiAndG9kYXknIHwgJ2xhc3Q3ZGF5cycgfCAnbGFzdDMwZGF5cycgfCAnbGFzdDkwZGF5cycgfCAndGhpc21vbnRoJyB8ICdsYXN0bW9udGgnKTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZUdyb3VwID0gdGhpcy5nZXREYXRlR3JvdXAoa2V5KTtcbiAgICBpZiAoIWRhdGVHcm91cCkgcmV0dXJuO1xuICAgIGNvbnN0IHsgc3RhcnQsIGVuZCB9ID0gdGhpcy5nZXRQcmVzZXREYXRlcyhwcmVzZXRLZXkpO1xuICAgIGRhdGVHcm91cC5wYXRjaFZhbHVlKHsgc3RhcnQsIGVuZCB9KTtcbiAgICB0aGlzLmZpbHRlcnNDaGFuZ2VkLmVtaXQodGhpcy5zZXJpYWxpemUoKSk7XG4gICAgdGhpcy5pbnZva2VEYXRlUmFuZ2VDaGFuZ2Uoa2V5KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UHJlc2V0RGF0ZXMocHJlc2V0S2V5OiAndG9kYXknIHwgJ2xhc3Q3ZGF5cycgfCAnbGFzdDMwZGF5cycgfCAnbGFzdDkwZGF5cycgfCAndGhpc21vbnRoJyB8ICdsYXN0bW9udGgnKTogeyBzdGFydDogRGF0ZTsgZW5kOiBEYXRlIH0ge1xuICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBjbGFtcFRvRW5kT2ZUb2RheSA9IChkOiBEYXRlKSA9PiB7IGNvbnN0IG5kID0gbmV3IERhdGUoZCk7IG5kLnNldEhvdXJzKDIzLDU5LDU5LDk5OSk7IHJldHVybiBuZDsgfTtcbiAgICBzd2l0Y2ggKHByZXNldEtleSkge1xuICAgICAgY2FzZSAndG9kYXknOlxuICAgICAgICByZXR1cm4geyBzdGFydDogdG9kYXksIGVuZDogdG9kYXkgfTtcbiAgICAgIGNhc2UgJ2xhc3Q3ZGF5cyc6IHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZSgpOyBzdGFydC5zZXREYXRlKHN0YXJ0LmdldERhdGUoKSAtIDYpO1xuICAgICAgICByZXR1cm4geyBzdGFydCwgZW5kOiB0b2RheSB9O1xuICAgICAgfVxuICAgICAgY2FzZSAnbGFzdDMwZGF5cyc6IHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZSgpOyBzdGFydC5zZXREYXRlKHN0YXJ0LmdldERhdGUoKSAtIDI5KTtcbiAgICAgICAgcmV0dXJuIHsgc3RhcnQsIGVuZDogdG9kYXkgfTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2xhc3Q5MGRheXMnOiB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUoKTsgc3RhcnQuc2V0RGF0ZShzdGFydC5nZXREYXRlKCkgLSA4OSk7XG4gICAgICAgIHJldHVybiB7IHN0YXJ0LCBlbmQ6IHRvZGF5IH07XG4gICAgICB9XG4gICAgICBjYXNlICd0aGlzbW9udGgnOiB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUodG9kYXkuZ2V0RnVsbFllYXIoKSwgdG9kYXkuZ2V0TW9udGgoKSwgMSk7XG4gICAgICAgIHJldHVybiB7IHN0YXJ0LCBlbmQ6IHRvZGF5IH07XG4gICAgICB9XG4gICAgICBjYXNlICdsYXN0bW9udGgnOiB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUodG9kYXkuZ2V0RnVsbFllYXIoKSwgdG9kYXkuZ2V0TW9udGgoKSAtIDEsIDEpO1xuICAgICAgICBjb25zdCBlbmQgPSBuZXcgRGF0ZSh0b2RheS5nZXRGdWxsWWVhcigpLCB0b2RheS5nZXRNb250aCgpLCAwKTtcbiAgICAgICAgcmV0dXJuIHsgc3RhcnQsIGVuZDogY2xhbXBUb0VuZE9mVG9kYXkoZW5kKSB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBwcml2YXRlIHN0YXJ0T2ZEYXkoZDogRGF0ZSk6IERhdGUgeyBjb25zdCBuZCA9IG5ldyBEYXRlKGQpOyBuZC5zZXRIb3VycygwLDAsMCwwKTsgcmV0dXJuIG5kOyB9XG4gIHByaXZhdGUgZW5kT2ZEYXkoZDogRGF0ZSk6IERhdGUgeyBjb25zdCBuZCA9IG5ldyBEYXRlKGQpOyBuZC5zZXRIb3VycygyMyw1OSw1OSw5OTkpOyByZXR1cm4gbmQ7IH1cbiAgcHJpdmF0ZSBzdGFydE9mTW9udGgoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyKTogRGF0ZSB7IHJldHVybiBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSwgMCwwLDAsMCk7IH1cbiAgcHJpdmF0ZSBlbmRPZk1vbnRoKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlcik6IERhdGUgeyByZXR1cm4gbmV3IERhdGUoeWVhciwgbW9udGggKyAxLCAwLCAyMyw1OSw1OSw5OTkpOyB9XG4gIHByaXZhdGUgYnVpbGROZ3hSYW5nZXMoKTogUmVjb3JkPHN0cmluZywgW0RhdGUsIERhdGVdPiB7XG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IGxhc3Q3U3RhcnQgPSBuZXcgRGF0ZSgpOyBsYXN0N1N0YXJ0LnNldERhdGUobGFzdDdTdGFydC5nZXREYXRlKCkgLSA2KTtcbiAgICBjb25zdCBsYXN0MzBTdGFydCA9IG5ldyBEYXRlKCk7IGxhc3QzMFN0YXJ0LnNldERhdGUobGFzdDMwU3RhcnQuZ2V0RGF0ZSgpIC0gMjkpO1xuICAgIGNvbnN0IGxhc3Q5MFN0YXJ0ID0gbmV3IERhdGUoKTsgbGFzdDkwU3RhcnQuc2V0RGF0ZShsYXN0OTBTdGFydC5nZXREYXRlKCkgLSA4OSk7XG4gICAgY29uc3QgdGhpc01vbnRoU3RhcnQgPSB0aGlzLnN0YXJ0T2ZNb250aCh0b2RheS5nZXRGdWxsWWVhcigpLCB0b2RheS5nZXRNb250aCgpKTtcbiAgICBjb25zdCBsYXN0TW9udGhTdGFydCA9IHRoaXMuc3RhcnRPZk1vbnRoKHRvZGF5LmdldEZ1bGxZZWFyKCksIHRvZGF5LmdldE1vbnRoKCkgLSAxKTtcbiAgICBjb25zdCBsYXN0TW9udGhFbmQgPSB0aGlzLmVuZE9mTW9udGgodG9kYXkuZ2V0RnVsbFllYXIoKSwgdG9kYXkuZ2V0TW9udGgoKSAtIDEpO1xuICAgIHJldHVybiB7XG4gICAgICAnVG9kYXknOiBbdGhpcy5zdGFydE9mRGF5KHRvZGF5KSwgdGhpcy5lbmRPZkRheSh0b2RheSldLFxuICAgICAgJ0xhc3QgNyBEYXlzJzogW3RoaXMuc3RhcnRPZkRheShsYXN0N1N0YXJ0KSwgdGhpcy5lbmRPZkRheSh0b2RheSldLFxuICAgICAgJ0xhc3QgMzAgRGF5cyc6IFt0aGlzLnN0YXJ0T2ZEYXkobGFzdDMwU3RhcnQpLCB0aGlzLmVuZE9mRGF5KHRvZGF5KV0sXG4gICAgICAnTGFzdCA5MCBEYXlzJzogW3RoaXMuc3RhcnRPZkRheShsYXN0OTBTdGFydCksIHRoaXMuZW5kT2ZEYXkodG9kYXkpXSxcbiAgICAgICdUaGlzIE1vbnRoJzogW3RoaXMuc3RhcnRPZkRheSh0aGlzTW9udGhTdGFydCksIHRoaXMuZW5kT2ZEYXkodG9kYXkpXSxcbiAgICAgICdMYXN0IE1vbnRoJzogW3RoaXMuc3RhcnRPZkRheShsYXN0TW9udGhTdGFydCksIHRoaXMuZW5kT2ZEYXkobGFzdE1vbnRoRW5kKV0sXG4gICAgfTtcbiAgfVxuICBnZXREYXRlVmFsaWRhdGlvbkVycm9yKGtleTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgZGF0ZUdyb3VwID0gdGhpcy5nZXREYXRlR3JvdXAoa2V5KTtcbiAgICBpZiAoIWRhdGVHcm91cCkgcmV0dXJuIG51bGw7XG5cbiAgICBjb25zdCBzdGFydEN0cmwgPSBkYXRlR3JvdXAuY29udHJvbHNbJ3N0YXJ0J107XG4gICAgY29uc3QgZW5kQ3RybCA9IGRhdGVHcm91cC5jb250cm9sc1snZW5kJ107XG4gICAgY29uc3Qgc3RhcnRWYWwgPSBzdGFydEN0cmw/LnZhbHVlO1xuICAgIGNvbnN0IGVuZFZhbCA9IGVuZEN0cmw/LnZhbHVlO1xuICAgIGNvbnN0IHN0YXJ0UGFyc2VFcnIgPSBzdGFydEN0cmw/LmVycm9ycz8uWydtYXREYXRlcGlja2VyUGFyc2UnXT8udGV4dDtcbiAgICBjb25zdCBlbmRQYXJzZUVyciA9IGVuZEN0cmw/LmVycm9ycz8uWydtYXREYXRlcGlja2VyUGFyc2UnXT8udGV4dDtcblxuICAgIGlmICghc3RhcnRWYWwgJiYgIWVuZFZhbCAmJiAhc3RhcnRQYXJzZUVyciAmJiAhZW5kUGFyc2VFcnIpIHJldHVybiBudWxsO1xuXG4gICAgaWYgKHN0YXJ0UGFyc2VFcnIpIHJldHVybiBgSW52YWxpZCBzdGFydCBkYXRlIGZvcm1hdGA7XG4gICAgaWYgKGVuZFBhcnNlRXJyKSByZXR1cm4gYEludmFsaWQgZW5kIGRhdGUgZm9ybWF0YDtcblxuICAgIGlmIChzdGFydFZhbCAmJiAhZW5kVmFsKSByZXR1cm4gYFBsZWFzZSBzZWxlY3QgYW4gZW5kIGRhdGVgO1xuICAgIGlmICghc3RhcnRWYWwgJiYgZW5kVmFsKSByZXR1cm4gYFBsZWFzZSBzZWxlY3QgYSBzdGFydCBkYXRlYDtcblxuICAgIGlmIChkYXRlR3JvdXAuaGFzRXJyb3IoJ21hdFN0YXJ0RGF0ZUludmFsaWQnKSkgcmV0dXJuIGBTdGFydCBkYXRlIG11c3QgYmUgYmVmb3JlIGVuZCBkYXRlYDtcbiAgICBpZiAoZGF0ZUdyb3VwLmhhc0Vycm9yKCdtYXRFbmREYXRlSW52YWxpZCcpKSByZXR1cm4gYEVuZCBkYXRlIG11c3QgYmUgYWZ0ZXIgc3RhcnQgZGF0ZWA7XG5cbiAgICBpZiAoZGF0ZUdyb3VwLmludmFsaWQpIHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnPy5maW5kKGMgPT4gYy5rZXkgPT09IGtleSk7XG4gICAgICByZXR1cm4gY29uZmlnID8gYCR7Y29uZmlnLmxhYmVsfSBpcyBpbnZhbGlkYCA6ICdEYXRlIHJhbmdlIGlzIGludmFsaWQnO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gRHluYW1pYyBEYXRlIFBpY2tlciBJbnRlZ3JhdGlvbiBNZXRob2RzIHJlbW92ZWQgKGNvbXBvbmVudCBubyBsb25nZXIgdXNlZClcbn1cblxuXG4iLCI8ZGl2IGNsYXNzPVwiY3FhLXVpLXJvb3RcIj5cbiAgPGRpdiBjbGFzcz1cImNxYS1maWx0ZXIgY3FhLW1iLVsyOHB4XVwiICpuZ0lmPVwic2hvd0ZpbHRlclBhbmVsXCIgc3R5bGU9XCJoZWlnaHQ6IGF1dG87XCI+XG4gICAgPCEtLSBCb3R0b20gTGF5b3V0OiBDdXJyZW50IGRlc2lnbiB3aXRoIHNlbGVjdG9ycyBpbiBncmlkIGFuZCBidXR0b25zIGJlbG93IC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJidXR0b25MYXlvdXQgPT09ICdib3R0b20nXCI+XG4gICAgICA8Zm9ybSBjbGFzcz1cInRzLWZvcm0gY3FhLWdyaWQgbGc6Y3FhLWdyaWQtY29scy00IG1kOmNxYS1ncmlkLWNvbHMtMiBjcWEtZ2FwLTRcIiBbZm9ybUdyb3VwXT1cImZvcm1cIlxuICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCIoZmFsc2UpXCIgbm92YWxpZGF0ZT1cIm5vdmFsaWRhdGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYyBvZiBjb25maWdcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWMuaGlkZGVuXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBjdXMtcmFuZ2Utc2VsZWN0IGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTIgY3FhLWZsZXgtc2hyaW5rLTAgZmlsdGVyLXNlbGVjdG9yLXdpZHRoIGNxYS13LWZ1bGxcIj5cbiAgICAgICAgICAgICAgPCEtLSBTZWxlY3QgLS0+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjLnR5cGUgPT09ICdzZWxlY3QnXCI+XG4gICAgICAgICAgICAgICAgPGNxYS1keW5hbWljLXNlbGVjdCBbZm9ybV09XCJmb3JtXCIgW2NvbmZpZ109XCJnZXRTZWxlY3RDb25maWcoYylcIj48L2NxYS1keW5hbWljLXNlbGVjdD5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPCEtLSBEYXRlIFJhbmdlIC0tPiBcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImMudHlwZSA9PT0gJ2RhdGUtcmFuZ2UnXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tbGFiZWwgY3FhLXRleHQtWyMzNzQxNTFdIGNxYS10ZXh0LVsxNHB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLWJsb2NrIGNxYS1sZWFkaW5nLVsxLjRdXCI+e3tcbiAgICAgICAgICAgICAgICAgIGMubGFiZWwgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1hdC1kYXRlLWN1c3RvbVwiIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gICAgICAgICAgICAgICAgICA8bWF0LWRhdGUtcmFuZ2UtaW5wdXQgW3JhbmdlUGlja2VyXT1cInBpY2tlclwiIFtmb3JtR3JvdXBdPVwiZ2V0RGF0ZUdyb3VwKGMua2V5KVwiIFttYXhdPVwibWF4RGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0U3RhcnREYXRlIGZvcm1Db250cm9sTmFtZT1cInN0YXJ0XCIgW3BsYWNlaG9sZGVyXT1cImMucGxhY2Vob2xkZXIgfHwgJ1N0YXJ0IGRhdGUnXCIgW21heF09XCJtYXhEYXRlXCIgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwidHJ1ZVwiIChmb2N1cyk9XCJwaWNrZXIub3BlbigpXCIgKGNsaWNrKT1cInBpY2tlci5vcGVuKClcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0RW5kRGF0ZSBmb3JtQ29udHJvbE5hbWU9XCJlbmRcIiBbcGxhY2Vob2xkZXJdPVwiYy5wbGFjZWhvbGRlciB8fCAnRW5kIGRhdGUnXCIgW21heF09XCJtYXhEYXRlXCIgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwidHJ1ZVwiIChmb2N1cyk9XCJwaWNrZXIub3BlbigpXCIgKGNsaWNrKT1cInBpY2tlci5vcGVuKClcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9tYXQtZGF0ZS1yYW5nZS1pbnB1dD5cbiAgICAgICAgICAgICAgICAgIDxtYXQtZGF0ZS1yYW5nZS1waWNrZXIgI3BpY2tlciAoZGF0ZUNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoJGV2ZW50LCBjLmtleSlcIlxuICAgICAgICAgICAgICAgICAgICBbcGFuZWxDbGFzc109XCInY3RjLWRhdGUtcmFuZ2UtcGFuZWwnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlci1hY3Rpb25zIGNsYXNzPVwiY3RjLWRhdGUtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdGMtZGF0ZS1wcmVzZXRzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLW1iLTIgY3FhLWZvbnQtbWVkaXVtXCI+UXVpY2sgUHJlc2V0czwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInByZXNldC1idG4gdG9kYXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVByZXNldFRvR3JvdXAoYy5rZXksICd0b2RheScpOyBwaWNrZXIuY2xvc2UoKVwiPlRvZGF5PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicHJlc2V0LWJ0biBsYXN0N2RheXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVByZXNldFRvR3JvdXAoYy5rZXksICdsYXN0N2RheXMnKTsgcGlja2VyLmNsb3NlKClcIj5MYXN0IDcgZGF5czwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInByZXNldC1idG4gbGFzdDMwZGF5c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFwcGx5UHJlc2V0VG9Hcm91cChjLmtleSwgJ2xhc3QzMGRheXMnKTsgcGlja2VyLmNsb3NlKClcIj5MYXN0IDMwIGRheXM8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJwcmVzZXQtYnRuIGxhc3Q5MGRheXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVByZXNldFRvR3JvdXAoYy5rZXksICdsYXN0OTBkYXlzJyk7IHBpY2tlci5jbG9zZSgpXCI+TGFzdCA5MCBkYXlzPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicHJlc2V0LWJ0biB0aGlzbW9udGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVByZXNldFRvR3JvdXAoYy5rZXksICd0aGlzbW9udGgnKTsgcGlja2VyLmNsb3NlKClcIj5UaGlzIG1vbnRoPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicHJlc2V0LWJ0biBsYXN0bW9udGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVByZXNldFRvR3JvdXAoYy5rZXksICdsYXN0bW9udGgnKTsgcGlja2VyLmNsb3NlKClcIj5MYXN0IG1vbnRoPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZvbnQtbWVkaXVtIGNxYS1tYi0yIGNxYS1tdC1bMTBweF0gY3FhLXctZnVsbFwiPkN1c3RvbSBSYW5nZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiIWNxYS1iZy1bIzNmNTFiNV0gIWNxYS10ZXh0LXdoaXRlIGNxYS1wLTIgY3FhLWZvbnQtbWVkaXVtICFjcWEtbWItMiAhY3FhLW10LVsxMHB4XSBjcWEtdy1bY2FsYygxMDAlLTMycHgpXSAhY3FhLWFic29sdXRlIGNxYS1ib3R0b20tWzJweF1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIG1hdERhdGVwaWNrZXJBcHBseT5BcHBseTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1kYXRlcGlja2VyLWFjdGlvbnM+XG4gICAgICAgICAgICAgICAgICA8L21hdC1kYXRlLXJhbmdlLXBpY2tlcj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInBpY2tlci5vcGVuKClcIiBjbGFzcz1cImNxYS1jdXJzb3ItcG9pbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTUuMzMzOTggMS4zMzIwM1YzLjk5ODdcIiBzdHJva2U9XCIjMEEwQTBBXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuNjY2IDEuMzMyMDNWMy45OTg3XCIgc3Ryb2tlPVwiIzBBMEEwQVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMi42NjY3IDIuNjY3OTdIMy4zMzMzM0MyLjU5Njk1IDIuNjY3OTcgMiAzLjI2NDkyIDIgNC4wMDEzVjEzLjMzNDZDMiAxNC4wNzEgMi41OTY5NSAxNC42NjggMy4zMzMzMyAxNC42NjhIMTIuNjY2N0MxMy40MDMgMTQuNjY4IDE0IDE0LjA3MSAxNCAxMy4zMzQ2VjQuMDAxM0MxNCAzLjI2NDkyIDEzLjQwMyAyLjY2Nzk3IDEyLjY2NjcgMi42Njc5N1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzBBMEEwQVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMiA2LjY2Nzk3SDE0XCIgc3Ryb2tlPVwiIzBBMEEwQVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDwhLS0gU3BlY2lmaWMgdmFsaWRhdGlvbiBtZXNzYWdlcyAtLT5cbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZ2V0RGF0ZVZhbGlkYXRpb25FcnJvcihjLmtleSkgJiYgIXBpY2tlci5vcGVuZWRcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldERhdGVWYWxpZGF0aW9uRXJyb3IoYy5rZXkpIH19XG4gICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9mb3JtPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWp1c3RpZnktZW5kIGNxYS1pdGVtcy1zdHJldGNoIGNxYS1nYXAtMiBjcWEtbXQtNFwiPlxuICAgICAgICA8Y3FhLWJ1dHRvbiB2YXJpYW50PVwiZmlsbGVkXCIgKG1vdXNlZG93bik9XCJwcmVwYXJlUHJpbWFyeUFjdGlvbigpXCIgKGNsaWNrZWQpPVwiYXBwbHkoKVwiIFtkaXNhYmxlZF09XCIhaGFzU2VsZWN0ZWRGaWx0ZXJzXCI+QXBwbHkgRmlsdGVyPC9jcWEtYnV0dG9uPlxuICAgICAgICA8Y3FhLWJ1dHRvbiB2YXJpYW50PVwib3V0bGluZWRcIiAobW91c2Vkb3duKT1cInByZXBhcmVQcmltYXJ5QWN0aW9uKClcIiAoY2xpY2tlZCk9XCJyZXNldCgpXCI+UmVzZXQ8L2NxYS1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gUmlnaHQgTGF5b3V0OiBCdXR0b25zIG9uIGxlZnRtb3N0IHNpZGUsIHNlbGVjdG9ycyBvbiByaWdodG1vc3Qgc2lkZSAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYnV0dG9uTGF5b3V0ID09PSAncmlnaHQnXCI+XG4gICAgICA8Zm9ybSBjbGFzcz1cInRzLWZvcm0gY3FhLWZsZXggY3FhLWZsZXgtd3JhcCBjcWEtaXRlbXMtZW5kIGNxYS1qdXN0aWZ5LWJldHdlZW4gY3FhLWdhcC00XCIgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiKGZhbHNlKVwiIG5vdmFsaWRhdGU9XCJub3ZhbGlkYXRlXCIgc3R5bGU9XCJoZWlnaHQ6IGF1dG87XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtc3RyZXRjaCBjcWEtZ2FwLTIgY3FhLWZsZXgtc2hyaW5rLTAgY3FhLW9yZGVyLWZpcnN0IGNxYS1tci1hdXRvXCI+XG4gICAgICAgICAgPGNxYS1idXR0b24gdmFyaWFudD1cImZpbGxlZFwiIChjbGlja2VkKT1cImFwcGx5KClcIiBbZGlzYWJsZWRdPVwiIWhhc1NlbGVjdGVkRmlsdGVyc1wiPkFwcGx5IEZpbHRlcjwvY3FhLWJ1dHRvbj5cbiAgICAgICAgICA8Y3FhLWJ1dHRvbiB2YXJpYW50PVwib3V0bGluZWRcIiAoY2xpY2tlZCk9XCJyZXNldCgpXCI+UmVzZXQ8L2NxYS1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtd3JhcCBjcWEtaXRlbXMtZW5kIGNxYS1nYXAtNCBjcWEtZmxleC0xIGNxYS1qdXN0aWZ5LWVuZCBjcWEtb3JkZXItbGFzdCBjcWEtbWwtYXV0b1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGMgb2YgY29uZmlnXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjLmhpZGRlblwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMiBjcWEtZmxleC1zaHJpbmstMCBmaWx0ZXItc2VsZWN0b3Itd2lkdGhcIj5cbiAgICAgICAgICAgICAgPCEtLSBTZWxlY3QgLS0+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjLnR5cGUgPT09ICdzZWxlY3QnXCI+XG4gICAgICAgICAgICAgICAgPGNxYS1keW5hbWljLXNlbGVjdCBbZm9ybV09XCJmb3JtXCIgW2NvbmZpZ109XCJnZXRTZWxlY3RDb25maWcoYylcIj48L2NxYS1keW5hbWljLXNlbGVjdD5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPCEtLSBEYXRlIFJhbmdlIC0tPiBcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImMudHlwZSA9PT0gJ2RhdGUtcmFuZ2UnXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tbGFiZWwgY3FhLXRleHQtWyMzNzQxNTFdIGNxYS10ZXh0LVsxNHB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLWJsb2NrIGNxYS1sZWFkaW5nLVsxLjRdXCI+e3tcbiAgICAgICAgICAgICAgICAgIGMubGFiZWwgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1hdC1kYXRlLWN1c3RvbVwiIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gICAgICAgICAgICAgICAgICA8bWF0LWRhdGUtcmFuZ2UtaW5wdXQgW3JhbmdlUGlja2VyXT1cInBpY2tlclwiIFtmb3JtR3JvdXBdPVwiZ2V0RGF0ZUdyb3VwKGMua2V5KVwiIFttYXhdPVwibWF4RGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0U3RhcnREYXRlIGZvcm1Db250cm9sTmFtZT1cInN0YXJ0XCIgW3BsYWNlaG9sZGVyXT1cImMucGxhY2Vob2xkZXIgfHwgJ1N0YXJ0IGRhdGUnXCIgW21heF09XCJtYXhEYXRlXCIgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwidHJ1ZVwiIChmb2N1cyk9XCJwaWNrZXIub3BlbigpXCIgKGNsaWNrKT1cInBpY2tlci5vcGVuKClcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0RW5kRGF0ZSBmb3JtQ29udHJvbE5hbWU9XCJlbmRcIiBbcGxhY2Vob2xkZXJdPVwiYy5wbGFjZWhvbGRlciB8fCAnRW5kIGRhdGUnXCIgW21heF09XCJtYXhEYXRlXCIgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwidHJ1ZVwiIChmb2N1cyk9XCJwaWNrZXIub3BlbigpXCIgKGNsaWNrKT1cInBpY2tlci5vcGVuKClcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9tYXQtZGF0ZS1yYW5nZS1pbnB1dD5cbiAgICAgICAgICAgICAgICAgIDxtYXQtZGF0ZS1yYW5nZS1waWNrZXIgI3BpY2tlciAoZGF0ZUNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoJGV2ZW50LCBjLmtleSlcIlxuICAgICAgICAgICAgICAgICAgICBbcGFuZWxDbGFzc109XCInY3RjLWRhdGUtcmFuZ2UtcGFuZWwnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlci1hY3Rpb25zIGNsYXNzPVwiY3RjLWRhdGUtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdGMtZGF0ZS1wcmVzZXRzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLW1iLTIgY3FhLWZvbnQtbWVkaXVtXCI+UXVpY2sgUHJlc2V0czwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInByZXNldC1idG4gdG9kYXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVByZXNldFRvR3JvdXAoYy5rZXksICd0b2RheScpOyBwaWNrZXIuY2xvc2UoKVwiPlRvZGF5PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicHJlc2V0LWJ0biBsYXN0N2RheXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVByZXNldFRvR3JvdXAoYy5rZXksICdsYXN0N2RheXMnKTsgcGlja2VyLmNsb3NlKClcIj5MYXN0IDcgZGF5czwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInByZXNldC1idG4gbGFzdDMwZGF5c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFwcGx5UHJlc2V0VG9Hcm91cChjLmtleSwgJ2xhc3QzMGRheXMnKTsgcGlja2VyLmNsb3NlKClcIj5MYXN0IDMwIGRheXM8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJwcmVzZXQtYnRuIGxhc3Q5MGRheXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVByZXNldFRvR3JvdXAoYy5rZXksICdsYXN0OTBkYXlzJyk7IHBpY2tlci5jbG9zZSgpXCI+TGFzdCA5MCBkYXlzPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicHJlc2V0LWJ0biB0aGlzbW9udGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVByZXNldFRvR3JvdXAoYy5rZXksICd0aGlzbW9udGgnKTsgcGlja2VyLmNsb3NlKClcIj5UaGlzIG1vbnRoPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicHJlc2V0LWJ0biBsYXN0bW9udGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVByZXNldFRvR3JvdXAoYy5rZXksICdsYXN0bW9udGgnKTsgcGlja2VyLmNsb3NlKClcIj5MYXN0IG1vbnRoPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZvbnQtbWVkaXVtIGNxYS1tYi0yIGNxYS1tdC1bMTBweF0gY3FhLXctZnVsbFwiPkN1c3RvbSBSYW5nZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiIWNxYS1iZy1bIzNmNTFiNV0gIWNxYS10ZXh0LXdoaXRlIGNxYS1wLTIgY3FhLWZvbnQtbWVkaXVtICFjcWEtbWItMiAhY3FhLW10LVsxMHB4XSBjcWEtdy1bY2FsYygxMDAlLTMycHgpXSAhY3FhLWFic29sdXRlIGNxYS1ib3R0b20tWzJweF1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIG1hdERhdGVwaWNrZXJBcHBseT5BcHBseTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1kYXRlcGlja2VyLWFjdGlvbnM+XG4gICAgICAgICAgICAgICAgICA8L21hdC1kYXRlLXJhbmdlLXBpY2tlcj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInBpY2tlci5vcGVuKClcIiBjbGFzcz1cImNxYS1jdXJzb3ItcG9pbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTUuMzMzOTggMS4zMzIwM1YzLjk5ODdcIiBzdHJva2U9XCIjMEEwQTBBXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuNjY2IDEuMzMyMDNWMy45OTg3XCIgc3Ryb2tlPVwiIzBBMEEwQVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMi42NjY3IDIuNjY3OTdIMy4zMzMzM0MyLjU5Njk1IDIuNjY3OTcgMiAzLjI2NDkyIDIgNC4wMDEzVjEzLjMzNDZDMiAxNC4wNzEgMi41OTY5NSAxNC42NjggMy4zMzMzMyAxNC42NjhIMTIuNjY2N0MxMy40MDMgMTQuNjY4IDE0IDE0LjA3MSAxNCAxMy4zMzQ2VjQuMDAxM0MxNCAzLjI2NDkyIDEzLjQwMyAyLjY2Nzk3IDEyLjY2NjcgMi42Njc5N1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzBBMEEwQVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMiA2LjY2Nzk3SDE0XCIgc3Ryb2tlPVwiIzBBMEEwQVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDwhLS0gU3BlY2lmaWMgdmFsaWRhdGlvbiBtZXNzYWdlcyAtLT5cbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZ2V0RGF0ZVZhbGlkYXRpb25FcnJvcihjLmtleSkgJiYgIXBpY2tlci5vcGVuZWRcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldERhdGVWYWxpZGF0aW9uRXJyb3IoYy5rZXkpIH19XG4gICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZm9ybT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gTGVmdCBMYXlvdXQ6IFNlbGVjdG9ycyBvbiBsZWZ0bW9zdCBzaWRlLCBidXR0b25zIG9uIHJpZ2h0bW9zdCBzaWRlIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJidXR0b25MYXlvdXQgPT09ICdsZWZ0J1wiPlxuICAgICAgPGZvcm0gY2xhc3M9XCJ0cy1mb3JtIGNxYS1mbGV4IGNxYS1mbGV4LXdyYXAgY3FhLWl0ZW1zLWVuZCBjcWEtanVzdGlmeS1iZXR3ZWVuIGNxYS1nYXAtNFwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cIihmYWxzZSlcIiBub3ZhbGlkYXRlPVwibm92YWxpZGF0ZVwiIHN0eWxlPVwiaGVpZ2h0OiBhdXRvO1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtd3JhcCBjcWEtaXRlbXMtZW5kIGNxYS1nYXAtNCBjcWEtZmxleC0xIGNxYS1vcmRlci1maXJzdCBjcWEtbXItYXV0b1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGMgb2YgY29uZmlnXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjLmhpZGRlblwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMiBjcWEtZmxleC1zaHJpbmstMCBmaWx0ZXItc2VsZWN0b3Itd2lkdGhcIj5cbiAgICAgICAgICAgICAgPCEtLSBTZWxlY3QgLS0+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjLnR5cGUgPT09ICdzZWxlY3QnXCI+XG4gICAgICAgICAgICAgICAgPGNxYS1keW5hbWljLXNlbGVjdCBbZm9ybV09XCJmb3JtXCIgW2NvbmZpZ109XCJnZXRTZWxlY3RDb25maWcoYylcIj48L2NxYS1keW5hbWljLXNlbGVjdD5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPCEtLSBEYXRlIFJhbmdlIC0tPiBcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImMudHlwZSA9PT0gJ2RhdGUtcmFuZ2UnXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tbGFiZWwgY3FhLXRleHQtWyMzNzQxNTFdIGNxYS10ZXh0LVsxNHB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLWJsb2NrIGNxYS1sZWFkaW5nLVsxLjRdXCI+e3tcbiAgICAgICAgICAgICAgICAgIGMubGFiZWwgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1hdC1kYXRlLWN1c3RvbVwiIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gICAgICAgICAgICAgICAgICA8bWF0LWRhdGUtcmFuZ2UtaW5wdXQgW3JhbmdlUGlja2VyXT1cInBpY2tlclwiIFtmb3JtR3JvdXBdPVwiZ2V0RGF0ZUdyb3VwKGMua2V5KVwiIFttYXhdPVwibWF4RGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0U3RhcnREYXRlIGZvcm1Db250cm9sTmFtZT1cInN0YXJ0XCIgW3BsYWNlaG9sZGVyXT1cImMucGxhY2Vob2xkZXIgfHwgJ1N0YXJ0IGRhdGUnXCIgW21heF09XCJtYXhEYXRlXCIgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwidHJ1ZVwiIChmb2N1cyk9XCJwaWNrZXIub3BlbigpXCIgKGNsaWNrKT1cInBpY2tlci5vcGVuKClcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0RW5kRGF0ZSBmb3JtQ29udHJvbE5hbWU9XCJlbmRcIiBbcGxhY2Vob2xkZXJdPVwiYy5wbGFjZWhvbGRlciB8fCAnRW5kIGRhdGUnXCIgW21heF09XCJtYXhEYXRlXCIgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwidHJ1ZVwiIChmb2N1cyk9XCJwaWNrZXIub3BlbigpXCIgKGNsaWNrKT1cInBpY2tlci5vcGVuKClcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9tYXQtZGF0ZS1yYW5nZS1pbnB1dD5cbiAgICAgICAgICAgICAgICAgIDxtYXQtZGF0ZS1yYW5nZS1waWNrZXIgI3BpY2tlciAoZGF0ZUNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoJGV2ZW50LCBjLmtleSlcIlxuICAgICAgICAgICAgICAgICAgICBbcGFuZWxDbGFzc109XCInY3RjLWRhdGUtcmFuZ2UtcGFuZWwnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlci1hY3Rpb25zIGNsYXNzPVwiY3RjLWRhdGUtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdGMtZGF0ZS1wcmVzZXRzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLW1iLTIgY3FhLWZvbnQtbWVkaXVtXCI+UXVpY2sgUHJlc2V0czwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInByZXNldC1idG4gdG9kYXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVByZXNldFRvR3JvdXAoYy5rZXksICd0b2RheScpOyBwaWNrZXIuY2xvc2UoKVwiPlRvZGF5PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicHJlc2V0LWJ0biBsYXN0N2RheXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVByZXNldFRvR3JvdXAoYy5rZXksICdsYXN0N2RheXMnKTsgcGlja2VyLmNsb3NlKClcIj5MYXN0IDcgZGF5czwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInByZXNldC1idG4gbGFzdDMwZGF5c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFwcGx5UHJlc2V0VG9Hcm91cChjLmtleSwgJ2xhc3QzMGRheXMnKTsgcGlja2VyLmNsb3NlKClcIj5MYXN0IDMwIGRheXM8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJwcmVzZXQtYnRuIGxhc3Q5MGRheXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVByZXNldFRvR3JvdXAoYy5rZXksICdsYXN0OTBkYXlzJyk7IHBpY2tlci5jbG9zZSgpXCI+TGFzdCA5MCBkYXlzPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicHJlc2V0LWJ0biB0aGlzbW9udGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVByZXNldFRvR3JvdXAoYy5rZXksICd0aGlzbW9udGgnKTsgcGlja2VyLmNsb3NlKClcIj5UaGlzIG1vbnRoPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicHJlc2V0LWJ0biBsYXN0bW9udGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVByZXNldFRvR3JvdXAoYy5rZXksICdsYXN0bW9udGgnKTsgcGlja2VyLmNsb3NlKClcIj5MYXN0IG1vbnRoPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZvbnQtbWVkaXVtIGNxYS1tYi0yIGNxYS1tdC1bMTBweF0gY3FhLXctZnVsbFwiPkN1c3RvbSBSYW5nZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiIWNxYS1iZy1bIzNmNTFiNV0gIWNxYS10ZXh0LXdoaXRlIGNxYS1wLTIgY3FhLWZvbnQtbWVkaXVtICFjcWEtbWItMiAhY3FhLW10LVsxMHB4XSBjcWEtdy1bY2FsYygxMDAlLTMycHgpXSAhY3FhLWFic29sdXRlIGNxYS1ib3R0b20tWzJweF1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIG1hdERhdGVwaWNrZXJBcHBseT5BcHBseTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1kYXRlcGlja2VyLWFjdGlvbnM+XG4gICAgICAgICAgICAgICAgICA8L21hdC1kYXRlLXJhbmdlLXBpY2tlcj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInBpY2tlci5vcGVuKClcIiBjbGFzcz1cImNxYS1jdXJzb3ItcG9pbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTUuMzMzOTggMS4zMzIwM1YzLjk5ODdcIiBzdHJva2U9XCIjMEEwQTBBXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuNjY2IDEuMzMyMDNWMy45OTg3XCIgc3Ryb2tlPVwiIzBBMEEwQVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMi42NjY3IDIuNjY3OTdIMy4zMzMzM0MyLjU5Njk1IDIuNjY3OTcgMiAzLjI2NDkyIDIgNC4wMDEzVjEzLjMzNDZDMiAxNC4wNzEgMi41OTY5NSAxNC42NjggMy4zMzMzMyAxNC42NjhIMTIuNjY2N0MxMy40MDMgMTQuNjY4IDE0IDE0LjA3MSAxNCAxMy4zMzQ2VjQuMDAxM0MxNCAzLjI2NDkyIDEzLjQwMyAyLjY2Nzk3IDEyLjY2NjcgMi42Njc5N1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzBBMEEwQVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMiA2LjY2Nzk3SDE0XCIgc3Ryb2tlPVwiIzBBMEEwQVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDwhLS0gU3BlY2lmaWMgdmFsaWRhdGlvbiBtZXNzYWdlcyAtLT5cbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZ2V0RGF0ZVZhbGlkYXRpb25FcnJvcihjLmtleSkgJiYgIXBpY2tlci5vcGVuZWRcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldERhdGVWYWxpZGF0aW9uRXJyb3IoYy5rZXkpIH19XG4gICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1zdHJldGNoIGNxYS1nYXAtMiBjcWEtZmxleC1zaHJpbmstMCBjcWEtb3JkZXItbGFzdCBjcWEtbWwtYXV0b1wiPlxuICAgICAgICAgIDxjcWEtYnV0dG9uIHZhcmlhbnQ9XCJmaWxsZWRcIiAobW91c2Vkb3duKT1cInByZXBhcmVQcmltYXJ5QWN0aW9uKClcIiAoY2xpY2tlZCk9XCJhcHBseSgpXCIgW2Rpc2FibGVkXT1cIiFoYXNTZWxlY3RlZEZpbHRlcnNcIj5BcHBseSBGaWx0ZXI8L2NxYS1idXR0b24+XG4gICAgICAgICAgPGNxYS1idXR0b24gdmFyaWFudD1cIm91dGxpbmVkXCIgKG1vdXNlZG93bik9XCJwcmVwYXJlUHJpbWFyeUFjdGlvbigpXCIgKGNsaWNrZWQpPVwicmVzZXQoKVwiPlJlc2V0PC9jcWEtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZm9ybT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
400
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9maWx0ZXJzL2R5bmFtaWMtZmlsdGVyL2R5bmFtaWMtZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZmlsdGVycy9keW5hbWljLWZpbHRlci9keW5hbWljLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixZQUFZLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDbkosT0FBTyxFQUFlLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQzs7Ozs7Ozs7O0FBbURsRyxNQUFNLE9BQU8sc0JBQXNCO0lBa0JqQyxZQUE2QixFQUFlO1FBQWYsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQWpCbkMsV0FBTSxHQUF3QixFQUFFLENBQUM7UUFDakMsVUFBSyxHQUF3QixFQUFFLENBQUM7UUFDaEMsb0JBQWUsR0FBWSxJQUFJLENBQUM7UUFDaEMsaUJBQVksR0FBZ0MsUUFBUSxDQUFDO1FBQ3BELG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFDekQsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUN6RCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDdkMsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFDN0QsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUV4RCxTQUFJLEdBQWMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEMsWUFBTyxH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RSxPQUFPLDRCQUE0QixDQUFDO1FBRTdELElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQztZQUFFLE9BQU8sb0NBQW9DLENBQUM7UUFDM0YsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDO1lBQUUsT0FBTyxtQ0FBbUMsQ0FBQztRQUV4RixJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUU7WUFDckIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ3JELE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLGFBQWEsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUM7U0FDeEU7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7O21IQXRXVSxzQkFBc0I7dUdBQXRCLHNCQUFzQix5YkFnQm5CLDJCQUEyQixxRUN2RTNDLG10akJBb1BNOzJGRDdMTyxzQkFBc0I7a0JBUGxDLFNBQVM7K0JBQ0Usb0JBQW9CLG1CQUdiLHVCQUF1QixDQUFDLE1BQU0sUUFDekMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFO2tHQUdyQixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDSSxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQU9vQyxnQkFBZ0I7c0JBQTFELFlBQVk7dUJBQUMsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZHJlbiwgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdERhdGVwaWNrZXJJbnB1dEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBEeW5hbWljU2VsZWN0RmllbGRDb25maWcgfSBmcm9tICcuLi8uLi9keW5hbWljLXNlbGVjdC9keW5hbWljLXNlbGVjdC1maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHluYW1pY1NlbGVjdEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZHluYW1pYy1zZWxlY3QvZHluYW1pYy1zZWxlY3QtZmllbGQuY29tcG9uZW50JztcblxudHlwZSBGaWx0ZXJUeXBlID0gJ3NlbGVjdCcgfCAnZGF0ZS1yYW5nZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY0ZpbHRlck9wdGlvbiB7XG4gIGlkPzogbnVtYmVyIHwgc3RyaW5nO1xuICBuYW1lPzogc3RyaW5nO1xuICB2YWx1ZT86IGFueTtcbiAgbGFiZWw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY0ZpbHRlckl0ZW0ge1xuICBsYWJlbDogc3RyaW5nO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgdHlwZTogRmlsdGVyVHlwZTtcbiAga2V5OiBzdHJpbmc7XG4gIG9wdGlvbnM/OiBEeW5hbWljRmlsdGVyT3B0aW9uW107XG4gIG11bHRpcGxlPzogYm9vbGVhbjtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBoaWRkZW4/OiBib29sZWFuO1xuICBzZWFyY2hhYmxlPzogYm9vbGVhbjtcbiAgb3B0aW9uU3R5bGU/OiAnY2hlY2ttYXJrJyB8ICdjaGVja2JveCc7XG4gIHNob3dTZWxlY3RBbGw/OiBib29sZWFuO1xuICBzZWxlY3RBbGxMYWJlbD86IHN0cmluZztcbiAgc2VsZWN0ZWRWYWx1ZT86IGFueSB8IGFueVtdO1xuICAvLyBTZXJ2ZXItZHJpdmVuIHNlbGVjdCBzdXBwb3J0IChwYXNzdGhyb3VnaCB0byBjcWEtZHluYW1pYy1zZWxlY3QpXG4gIHNlcnZlclNlYXJjaD86IGJvb2xlYW47XG4gIC8qKiBNb3JlIHJlc3VsdHMgYXZhaWxhYmxlIHNlcnZlci1zaWRlIGZvciBpbmZpbml0ZSBzY3JvbGwgKi9cbiAgaGFzTW9yZT86IGJvb2xlYW47XG4gIC8qKiBFeHRlcm5hbCBsb2FkaW5nIHN0YXRlIGZvciBhc3luYyBmZXRjaGluZyAqL1xuICBpc0xvYWRpbmc/OiBib29sZWFuO1xuICAvKiogQ2FsbGJhY2sgd2hlbiBzZWFyY2ggdGV4dCBjaGFuZ2VzIChzZXJ2ZXIgbW9kZSkgKi9cbiAgb25TZWFyY2g/OiAocXVlcnk6IHN0cmluZykgPT4gdm9pZDtcbiAgLyoqIENhbGxiYWNrIHdoZW4gbW9yZSBkYXRhIGlzIHJlcXVlc3RlZCAoaW5maW5pdGUgc2Nyb2xsKSAqL1xuICBvbkxvYWRNb3JlPzogKHF1ZXJ5Pzogc3RyaW5nKSA9PiB2b2lkO1xuICBzZWxlY3RlZFN0YXJ0RGF0ZT86IERhdGUgfCBzdHJpbmc7XG4gIHNlbGVjdGVkRW5kRGF0ZT86IERhdGUgfCBzdHJpbmc7XG4gIG9uRGF0ZUNoYW5nZT86ICh2YWx1ZTogeyBzdGFydDogRGF0ZSB8IG51bGw7IGVuZDogRGF0ZSB8IG51bGwgfSwgZXZlbnQ/OiBNYXREYXRlcGlja2VySW5wdXRFdmVudDxEYXRlPiB8IEV2ZW50KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtaWNGaWx0ZXJWYWx1ZXMge1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1keW5hbWljLWZpbHRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH1cbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0ZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGNvbmZpZzogRHluYW1pY0ZpbHRlckl0ZW1bXSA9IFtdO1xuICBASW5wdXQoKSBtb2RlbDogRHluYW1pY0ZpbHRlclZhbHVlcyA9IHt9O1xuICBASW5wdXQoKSBzaG93RmlsdGVyUGFuZWw6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBidXR0b25MYXlvdXQ6ICdsZWZ0JyB8ICdyaWdodCcgfCAnYm90dG9tJyA9ICdib3R0b20nO1xuICBAT3V0cHV0KCkgZmlsdGVyc0FwcGxpZWQgPSBuZXcgRXZlbnRFbWl0dGVyPER5bmFtaWNGaWx0ZXJWYWx1ZXM+KCk7XG4gIEBPdXRwdXQoKSBmaWx0ZXJzQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RHluYW1pY0ZpbHRlclZhbHVlcz4oKTtcbiAgQE91dHB1dCgpIHJlc2V0QWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgb25BcHBseUZpbHRlckNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxEeW5hbWljRmlsdGVyVmFsdWVzPigpO1xuICBAT3V0cHV0KCkgb25SZXNldEZpbHRlckNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGZvcm06IEZvcm1Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe30pO1xuICBtYXhEYXRlID0gbmV3IERhdGUoKTtcbiAgc2VhcmNoVGV4dEJ5S2V5OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gIHByaXZhdGUgc2VsZWN0T3V0c2lkZUNsZWFudXAgPSBuZXcgTWFwPGFueSwgKCkgPT4gdm9pZD4oKTtcbiAgaGFzU2VsZWN0ZWRGaWx0ZXJzID0gZmFsc2U7XG4gIEBWaWV3Q2hpbGRyZW4oRHluYW1pY1NlbGVjdEZpZWxkQ29tcG9uZW50KSBzZWxlY3RDb21wb25lbnRzPzogUXVlcnlMaXN0PER5bmFtaWNTZWxlY3RGaWVsZENvbXBvbmVudD47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBmYjogRm9ybUJ1aWxkZXIpIHtcbiAgICAvLyBFbnN1cmUgbWF4RGF0ZSBpcyB0aGUgZW5kIG9mIHRvZGF5LCBzbyBhbnkgZnV0dXJlIGRhdGVzIGFyZSBkaXNhbGxvd2VkXG4gICAgdGhpcy5tYXhEYXRlID0gdGhpcy5lbmRPZkRheShuZXcgRGF0ZSgpKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snY29uZmlnJ10gfHwgY2hhbmdlc1snbW9kZWwnXSkge1xuICAgICAgdGhpcy5idWlsZEZvcm0oKTtcbiAgICB9XG4gIH1cblxuICBvbkRhdGVDaGFuZ2UoZXZlbnQ6IE1hdERhdGVwaWNrZXJJbnB1dEV2ZW50PERhdGU+IHwgRXZlbnQsIGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5pbnZva2VEYXRlUmFuZ2VDaGFuZ2Uoa2V5LCBldmVudCk7XG4gIH1cblxuICAvLyBOR1ggRGF0ZVJhbmdlUGlja2VyIGludGVncmF0aW9uXG4gIG5neERhdGVSYW5nZUJ5S2V5OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gIG5neFJhbmdlczogYW55ID0ge307IC8vIFVzaW5nICdhbnknIHRvIGF2b2lkIERheWpzIHR5cGUgbWlzbWF0Y2ggLSBsaWJyYXJ5IGFjY2VwdHMgRGF0ZSBvYmplY3RzIGF0IHJ1bnRpbWVcbiAgbmd4TG9jYWxlID0geyBjdXN0b21SYW5nZUxhYmVsOiAnQ3VzdG9tIHJhbmdlJyB9O1xuICAvLyBEaXNhYmxlIGFsbCBkYXRlcyBhZnRlciB0b2RheSBpbiB0aGUgbmd4IGRhdGVwaWNrZXJcbiAgZGlzYWJsZUZ1dHVyZURhdGVzID0gKG06IGFueSk6IGJvb2xlYW4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkOiBEYXRlID0gbSAmJiB0eXBlb2YgbS50b0RhdGUgPT09ICdmdW5jdGlvbicgPyBtLnRvRGF0ZSgpIDogbmV3IERhdGUobSk7XG4gICAgICByZXR1cm4gZC5nZXRUaW1lKCkgPiB0aGlzLm1heERhdGUuZ2V0VGltZSgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbiAgb25OZ3hEYXRlc1VwZGF0ZWQoZTogYW55LCBrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGdyb3VwID0gdGhpcy5nZXREYXRlR3JvdXAoa2V5KTtcbiAgICBpZiAoIWdyb3VwKSByZXR1cm47XG4gICAgY29uc3QgY2xhbXAgPSAoZDogRGF0ZSB8IG51bGwpID0+IChkICYmIGQuZ2V0VGltZSgpID4gdGhpcy5tYXhEYXRlLmdldFRpbWUoKSA/IHRoaXMubWF4RGF0ZSA6IGQpO1xuICAgIGNvbnN0IHN0YXJ0UmF3ID0gZT8uc3RhcnREYXRlID8gKHR5cGVvZiBlLnN0YXJ0RGF0ZS50b0RhdGUgPT09ICdmdW5jdGlvbicgPyBlLnN0YXJ0RGF0ZS50b0RhdGUoKSA6IG5ldyBEYXRlKGUuc3RhcnREYXRlKSkgOiBudWxsO1xuICAgIGNvbnN0IGVuZFJhdyA9IGU/LmVuZERhdGUgPyAodHlwZW9mIGUuZW5kRGF0ZS50b0RhdGUgPT09ICdmdW5jdGlvbicgPyBlLmVuZERhdGUudG9EYXRlKCkgOiBuZXcgRGF0ZShlLmVuZERhdGUpKSA6IG51bGw7XG4gICAgY29uc3Qgc3RhcnQgPSBjbGFtcChzdGFydFJhdyk7XG4gICAgY29uc3QgZW5kID0gY2xhbXAoZW5kUmF3KTtcbiAgICBncm91cC5wYXRjaFZhbHVlKHsgc3RhcnQsIGVuZCB9LCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcbiAgICBjb25zdCBzZXJpYWxpemVkID0gdGhpcy5zZXJpYWxpemUoKTtcbiAgICB0aGlzLmhhc1NlbGVjdGVkRmlsdGVycyA9IE9iamVjdC5rZXlzKHNlcmlhbGl6ZWQpLmxlbmd0aCA+IDA7XG4gICAgaWYgKHN0YXJ0ICYmIGVuZCAmJiBncm91cC52YWxpZCkge1xuICAgICAgdGhpcy5hcHBseSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcnNDaGFuZ2VkLmVtaXQoc2VyaWFsaXplZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEZvcm0oKTogdm9pZCB7XG4gICAgY29uc3QgY3RybHM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgICAodGhpcy5jb25maWcgfHwgW10pLmZvckVhY2goYyA9PiB7XG4gICAgICBpZiAoYy5oaWRkZW4pIHJldHVybjtcbiAgICAgIGlmIChjLnR5cGUgPT09ICdkYXRlLXJhbmdlJykge1xuICAgICAgICBjb25zdCBpbml0aWFsUmFuZ2UgPSB0aGlzLmdldEluaXRpYWxEYXRlUmFuZ2VWYWx1ZShjKTtcbiAgICAgICAgY3RybHNbYy5rZXldID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICAgICAgc3RhcnQ6IG5ldyBGb3JtQ29udHJvbChpbml0aWFsUmFuZ2Uuc3RhcnQpLFxuICAgICAgICAgIGVuZDogbmV3IEZvcm1Db250cm9sKGluaXRpYWxSYW5nZS5lbmQpLFxuICAgICAgICB9KTtcbiAgICAgICAgLy8gaW5pdGlhbGl6ZSBuZ3ggbW9kZWwgZGlzcGxheVxuICAgICAgICB0aGlzLm5neERhdGVSYW5nZUJ5S2V5W2Mua2V5XSA9IHtcbiAgICAgICAgICBzdGFydERhdGU6IGluaXRpYWxSYW5nZS5zdGFydCB8fCBudWxsLFxuICAgICAgICAgIGVuZERhdGU6IGluaXRpYWxSYW5nZS5lbmQgfHwgbnVsbFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgaW5pdGlhbCA9IHRoaXMucmVzb2x2ZUluaXRpYWxTZWxlY3RWYWx1ZShjKTtcbiAgICAgICAgaWYgKGMubXVsdGlwbGUpIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IEFycmF5LmlzQXJyYXkoaW5pdGlhbCkgPyBpbml0aWFsIDogKGluaXRpYWwgIT0gbnVsbCA/IFtpbml0aWFsXSA6IFtdKTtcbiAgICAgICAgICBjdHJsc1tjLmtleV0gPSBuZXcgRm9ybUNvbnRyb2wodmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGN0cmxzW2Mua2V5XSA9IG5ldyBGb3JtQ29udHJvbCh0aGlzLmNvZXJjZVRvU2luZ2xlVmFsdWUoaW5pdGlhbCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cChjdHJscyk7XG4gICAgLy8gaW5pdGlhbGl6ZSBhcHBseSBidXR0b24gc3RhdGUgYmFzZWQgb24gaW5pdGlhbCB2YWx1ZXNcbiAgICB0aGlzLmhhc1NlbGVjdGVkRmlsdGVycyA9IE9iamVjdC5rZXlzKHRoaXMuc2VyaWFsaXplKCkpLmxlbmd0aCA+IDA7XG4gICAgLy8gYnVpbGQgY29tbW9uIHJhbmdlcyBmb3Igbmd4IGRhdGVwaWNrZXJcbiAgICB0aGlzLm5neFJhbmdlcyA9IHRoaXMuYnVpbGROZ3hSYW5nZXMoKTtcbiAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBjb25zdCBzZXJpYWxpemVkID0gdGhpcy5zZXJpYWxpemUoKTtcbiAgICAgIHRoaXMuaGFzU2VsZWN0ZWRGaWx0ZXJzID0gT2JqZWN0LmtleXMoc2VyaWFsaXplZCkubGVuZ3RoID4gMDtcbiAgICAgIHRoaXMuZmlsdGVyc0NoYW5nZWQuZW1pdChzZXJpYWxpemVkKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uU2VsZWN0T3BlbmVkQ2hhbmdlKG9wZW5lZDogYm9vbGVhbiwgc2VsZWN0OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAob3BlbmVkKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3Qgb25Eb2NEb3duID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBwYW5lbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jZGstb3ZlcmxheS1wYW5lIC5tYXQtc2VsZWN0LXBhbmVsJykgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0IGFzIE5vZGUgfCBudWxsO1xuICAgICAgICAgIGNvbnN0IG9yaWdpbkVsID0gKHNlbGVjdD8uX2VsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpIHx8IG51bGw7XG4gICAgICAgICAgY29uc3QgaW5zaWRlUGFuZWwgPSAhIShwYW5lbCAmJiB0YXJnZXQgJiYgcGFuZWwuY29udGFpbnModGFyZ2V0KSk7XG4gICAgICAgICAgY29uc3QgaW5zaWRlT3JpZ2luID0gISEob3JpZ2luRWwgJiYgdGFyZ2V0ICYmIG9yaWdpbkVsLmNvbnRhaW5zKHRhcmdldCkpO1xuICAgICAgICAgIGlmICghaW5zaWRlUGFuZWwgJiYgIWluc2lkZU9yaWdpbikge1xuICAgICAgICAgICAgc2VsZWN0LmNsb3NlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBvbkRvY0Rvd24sIHRydWUpO1xuICAgICAgICB0aGlzLnNlbGVjdE91dHNpZGVDbGVhbnVwLnNldChzZWxlY3QsICgpID0+IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIG9uRG9jRG93biwgdHJ1ZSkpO1xuICAgICAgfSwgMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNsZWFudXAgPSB0aGlzLnNlbGVjdE91dHNpZGVDbGVhbnVwLmdldChzZWxlY3QpO1xuICAgICAgaWYgKGNsZWFudXApIGNsZWFudXAoKTtcbiAgICAgIHRoaXMuc2VsZWN0T3V0c2lkZUNsZWFudXAuZGVsZXRlKHNlbGVjdCk7XG4gICAgfVxuICB9XG5cbiAgb25TZWFyY2goa2V5OiBzdHJpbmcsIHRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVGV4dEJ5S2V5W2tleV0gPSAodGV4dCB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgfVxuXG4gIGZpbHRlcmVkT3B0aW9ucyhpdGVtOiBEeW5hbWljRmlsdGVySXRlbSk6IER5bmFtaWNGaWx0ZXJPcHRpb25bXSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGl0ZW0/Lm9wdGlvbnMgfHwgW107XG4gICAgY29uc3QgcSA9ICh0aGlzLnNlYXJjaFRleHRCeUtleVtpdGVtLmtleV0gfHwgJycpLnRyaW0oKTtcbiAgICBpZiAoIXEpIHJldHVybiBvcHRpb25zO1xuICAgIHJldHVybiBvcHRpb25zLmZpbHRlcihvcHQgPT4ge1xuICAgICAgY29uc3QgbmFtZSA9IChvcHQubmFtZSA/PyBvcHQubGFiZWwgPz8gU3RyaW5nKG9wdC52YWx1ZSA/PyAnJykpLnRvTG93ZXJDYXNlKCk7XG4gICAgICByZXR1cm4gbmFtZS5pbmNsdWRlcyhxKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldERhdGVHcm91cChrZXk6IHN0cmluZyk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoa2V5KSBhcyBGb3JtR3JvdXA7XG4gIH1cblxuICBnZXRTZWxlY3RDb25maWcoaXRlbTogRHluYW1pY0ZpbHRlckl0ZW0pOiBEeW5hbWljU2VsZWN0RmllbGRDb25maWcge1xuICAgIHJldHVybiB7XG4gICAgICBrZXk6IGl0ZW0ua2V5LFxuICAgICAgbGFiZWw6IGl0ZW0ubGFiZWwsXG4gICAgICBwbGFjZWhvbGRlcjogaXRlbS5wbGFjZWhvbGRlcixcbiAgICAgIGRpc2FibGVkOiBpdGVtLmRpc2FibGVkLFxuICAgICAgbXVsdGlwbGU6IGl0ZW0ubXVsdGlwbGUsXG4gICAgICBzZWFyY2hhYmxlOiBpdGVtLnNlYXJjaGFibGUsXG4gICAgICBvcHRpb25TdHlsZTogaXRlbS5vcHRpb25TdHlsZSxcbiAgICAgIHNob3dTZWxlY3RBbGw6IGl0ZW0uc2hvd1NlbGVjdEFsbCxcbiAgICAgIHNlbGVjdEFsbExhYmVsOiBpdGVtLnNlbGVjdEFsbExhYmVsLFxuICAgICAgc2VsZWN0ZWRWYWx1ZTogaXRlbS5zZWxlY3RlZFZhbHVlLFxuICAgICAgc2VydmVyU2VhcmNoOiBpdGVtLnNlcnZlclNlYXJjaCxcbiAgICAgIGhhc01vcmU6IGl0ZW0uaGFzTW9yZSxcbiAgICAgIGlzTG9hZGluZzogaXRlbS5pc0xvYWRpbmcsXG4gICAgICBvblNlYXJjaDogaXRlbS5vblNlYXJjaCxcbiAgICAgIG9uTG9hZE1vcmU6IGl0ZW0ub25Mb2FkTW9yZSxcbiAgICAgIG9wdGlvbnM6IGl0ZW0ub3B0aW9ucyB8fCBbXVxuICAgIH07XG4gIH1cblxuICBhcHBseSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlQWxsT3BlblNlbGVjdHMoKTtcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZXMgPSB0aGlzLnNlcmlhbGl6ZSgpO1xuICAgIHRoaXMuZmlsdGVyc0FwcGxpZWQuZW1pdChmaWx0ZXJWYWx1ZXMpO1xuICAgIHRoaXMub25BcHBseUZpbHRlckNsaWNrLmVtaXQoZmlsdGVyVmFsdWVzKTtcbiAgfVxuXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VBbGxPcGVuU2VsZWN0cygpO1xuICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybS5jb250cm9scykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgY29uc3QgY3RybCA9IHRoaXMuZm9ybS5nZXQoa2V5KTtcbiAgICAgIGlmIChjdHJsIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XG4gICAgICAgIGN0cmwuZ2V0KCdzdGFydCcpPy5zZXRWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgICBjdHJsLmdldCgnZW5kJyk/LnNldFZhbHVlKHVuZGVmaW5lZCk7XG4gICAgICAgIHRoaXMuaW52b2tlRGF0ZVJhbmdlQ2hhbmdlKGtleSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdHJsPy5zZXRWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMucmVzZXRBY3Rpb24uZW1pdCgpO1xuICAgIHRoaXMub25SZXNldEZpbHRlckNsaWNrLmVtaXQoKTtcbiAgICBjb25zdCBzZXJpYWxpemVkID0gdGhpcy5zZXJpYWxpemUoKTtcbiAgICB0aGlzLmhhc1NlbGVjdGVkRmlsdGVycyA9IE9iamVjdC5rZXlzKHNlcmlhbGl6ZWQpLmxlbmd0aCA+IDA7XG4gICAgdGhpcy5maWx0ZXJzQ2hhbmdlZC5lbWl0KHNlcmlhbGl6ZWQpO1xuICB9XG5cbiAgLyoqIENsb3NlIGFueSBvcGVuIE1hdFNlbGVjdCBwYW5lbHMgYmVmb3JlIHByaW1hcnkgYWN0aW9ucyB0byBhdm9pZCBkb3VibGUtY2xpY2sgaXNzdWVzICovXG4gIHByZXBhcmVQcmltYXJ5QWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VBbGxPcGVuU2VsZWN0cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZUFsbE9wZW5TZWxlY3RzKCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLnNlbGVjdENvbXBvbmVudHM/LmZvckVhY2goYyA9PiBjLmNsb3NlUGFuZWwoKSk7XG4gICAgfSBjYXRjaCB7fVxuICB9XG5cbiAgcHJpdmF0ZSBzZXJpYWxpemUoKTogRHluYW1pY0ZpbHRlclZhbHVlcyB7XG4gICAgY29uc3QgcmVzdWx0OiBEeW5hbWljRmlsdGVyVmFsdWVzID0ge307XG4gICAgKHRoaXMuY29uZmlnIHx8IFtdKS5mb3JFYWNoKGMgPT4ge1xuICAgICAgY29uc3QgY3RybCA9IHRoaXMuZm9ybS5nZXQoYy5rZXkpO1xuICAgICAgaWYgKCFjdHJsKSByZXR1cm47XG4gICAgICBsZXQgdmFsOiBhbnkgPSBjdHJsIGluc3RhbmNlb2YgRm9ybUdyb3VwID8gKGN0cmwgYXMgRm9ybUdyb3VwKS5nZXRSYXdWYWx1ZSgpIDogY3RybC52YWx1ZTtcbiAgICAgIGlmIChjLnR5cGUgPT09ICdkYXRlLXJhbmdlJykge1xuICAgICAgICBjb25zdCBzdGFydCA9IHZhbD8uc3RhcnQ7IGNvbnN0IGVuZCA9IHZhbD8uZW5kO1xuICAgICAgICBpZiAoc3RhcnQgfHwgZW5kKSByZXN1bHRbYy5rZXldID0geyBzdGFydCwgZW5kIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodmFsICE9PSB1bmRlZmluZWQgJiYgdmFsICE9PSBudWxsICYmIChBcnJheS5pc0FycmF5KHZhbCkgPyB2YWwubGVuZ3RoID4gMCA6IHZhbCAhPT0gJycpKSB7XG4gICAgICAgICAgcmVzdWx0W2Mua2V5XSA9IHZhbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVJbml0aWFsU2VsZWN0VmFsdWUoaXRlbTogRHluYW1pY0ZpbHRlckl0ZW0pOiBhbnkge1xuICAgIGlmICh0aGlzLm1vZGVsICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLm1vZGVsLCBpdGVtLmtleSkpIHtcbiAgICAgIHJldHVybiB0aGlzLm1vZGVsW2l0ZW0ua2V5XTtcbiAgICB9XG4gICAgaWYgKGl0ZW0uc2VsZWN0ZWRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gaXRlbS5zZWxlY3RlZFZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBjb2VyY2VUb1NpbmdsZVZhbHVlKHZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHZhbHVlLmxlbmd0aCA/IHZhbHVlWzBdIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGdldEluaXRpYWxEYXRlUmFuZ2VWYWx1ZShpdGVtOiBEeW5hbWljRmlsdGVySXRlbSk6IHsgc3RhcnQ6IERhdGUgfCBudWxsOyBlbmQ6IERhdGUgfCBudWxsIH0ge1xuICAgIGNvbnN0IG1vZGVsVmFsdWUgPSB0aGlzLm1vZGVsPy5baXRlbS5rZXldO1xuICAgIGNvbnN0IHN0YXJ0U291cmNlID0gbW9kZWxWYWx1ZT8uc3RhcnQgPz8gaXRlbS5zZWxlY3RlZFN0YXJ0RGF0ZSA/PyBudWxsO1xuICAgIGNvbnN0IGVuZFNvdXJjZSA9IG1vZGVsVmFsdWU/LmVuZCA/PyBpdGVtLnNlbGVjdGVkRW5kRGF0ZSA/PyBudWxsO1xuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5ub3JtYWxpemVEYXRlVmFsdWUoc3RhcnRTb3VyY2UpO1xuICAgIGNvbnN0IGVuZCA9IHRoaXMubm9ybWFsaXplRGF0ZVZhbHVlKGVuZFNvdXJjZSk7XG4gICAgY29uc3QgY2xhbXAgPSAoZDogRGF0ZSB8IG51bGwpID0+IChkICYmIGQuZ2V0VGltZSgpID4gdGhpcy5tYXhEYXRlLmdldFRpbWUoKSA/IHRoaXMubWF4RGF0ZSA6IGQpO1xuICAgIHJldHVybiB7IHN0YXJ0OiBjbGFtcChzdGFydCksIGVuZDogY2xhbXAoZW5kKSB9O1xuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVEYXRlVmFsdWUodmFsdWU6IGFueSk6IERhdGUgfCBudWxsIHtcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gbnVsbDtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlICYmICFpc05hTih2YWx1ZS5nZXRUaW1lKCkpKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IHBhcnNlZCA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICByZXR1cm4gaXNOYU4ocGFyc2VkLmdldFRpbWUoKSkgPyBudWxsIDogcGFyc2VkO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnZva2VEYXRlUmFuZ2VDaGFuZ2Uoa2V5OiBzdHJpbmcsIGV2ZW50PzogTWF0RGF0ZXBpY2tlcklucHV0RXZlbnQ8RGF0ZT4gfCBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGl0ZW0gPSAodGhpcy5jb25maWcgfHwgW10pLmZpbmQoY2ZnID0+IGNmZy5rZXkgPT09IGtleSk7XG4gICAgaWYgKCFpdGVtPy5vbkRhdGVDaGFuZ2UpIHJldHVybjtcbiAgICBjb25zdCBkYXRlR3JvdXAgPSB0aGlzLmdldERhdGVHcm91cChrZXkpO1xuICAgIGlmICghZGF0ZUdyb3VwKSByZXR1cm47XG4gICAgY29uc3QgeyBzdGFydCwgZW5kIH0gPSBkYXRlR3JvdXAuZ2V0UmF3VmFsdWUoKSB8fCB7fTtcbiAgICBpdGVtLm9uRGF0ZUNoYW5nZShcbiAgICAgIHtcbiAgICAgICAgc3RhcnQ6IHRoaXMubm9ybWFsaXplRGF0ZVZhbHVlKHN0YXJ0KSxcbiAgICAgICAgZW5kOiB0aGlzLm5vcm1hbGl6ZURhdGVWYWx1ZShlbmQpLFxuICAgICAgfSxcbiAgICAgIGV2ZW50XG4gICAgKTtcbiAgfVxuXG4gIC8vIE1hdCBkYXRlIHJhbmdlIHBpY2tlciBvdmVybGF5IHByZXNldCBoZWxwZXJzXG4gIGFwcGx5UHJlc2V0VG9Hcm91cChrZXk6IHN0cmluZywgcHJlc2V0S2V5OiAndG9kYXknIHwgJ2xhc3Q3ZGF5cycgfCAnbGFzdDMwZGF5cycgfCAnbGFzdDkwZGF5cycgfCAndGhpc21vbnRoJyB8ICdsYXN0bW9udGgnKTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZUdyb3VwID0gdGhpcy5nZXREYXRlR3JvdXAoa2V5KTtcbiAgICBpZiAoIWRhdGVHcm91cCkgcmV0dXJuO1xuICAgIGNvbnN0IHsgc3RhcnQsIGVuZCB9ID0gdGhpcy5nZXRQcmVzZXREYXRlcyhwcmVzZXRLZXkpO1xuICAgIGRhdGVHcm91cC5wYXRjaFZhbHVlKHsgc3RhcnQsIGVuZCB9KTtcbiAgICB0aGlzLmZpbHRlcnNDaGFuZ2VkLmVtaXQodGhpcy5zZXJpYWxpemUoKSk7XG4gICAgdGhpcy5pbnZva2VEYXRlUmFuZ2VDaGFuZ2Uoa2V5KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UHJlc2V0RGF0ZXMocHJlc2V0S2V5OiAndG9kYXknIHwgJ2xhc3Q3ZGF5cycgfCAnbGFzdDMwZGF5cycgfCAnbGFzdDkwZGF5cycgfCAndGhpc21vbnRoJyB8ICdsYXN0bW9udGgnKTogeyBzdGFydDogRGF0ZTsgZW5kOiBEYXRlIH0ge1xuICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBjbGFtcFRvRW5kT2ZUb2RheSA9IChkOiBEYXRlKSA9PiB7IGNvbnN0IG5kID0gbmV3IERhdGUoZCk7IG5kLnNldEhvdXJzKDIzLDU5LDU5LDk5OSk7IHJldHVybiBuZDsgfTtcbiAgICBzd2l0Y2ggKHByZXNldEtleSkge1xuICAgICAgY2FzZSAndG9kYXknOlxuICAgICAgICByZXR1cm4geyBzdGFydDogdG9kYXksIGVuZDogdG9kYXkgfTtcbiAgICAgIGNhc2UgJ2xhc3Q3ZGF5cyc6IHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZSgpOyBzdGFydC5zZXREYXRlKHN0YXJ0LmdldERhdGUoKSAtIDYpO1xuICAgICAgICByZXR1cm4geyBzdGFydCwgZW5kOiB0b2RheSB9O1xuICAgICAgfVxuICAgICAgY2FzZSAnbGFzdDMwZGF5cyc6IHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZSgpOyBzdGFydC5zZXREYXRlKHN0YXJ0LmdldERhdGUoKSAtIDI5KTtcbiAgICAgICAgcmV0dXJuIHsgc3RhcnQsIGVuZDogdG9kYXkgfTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2xhc3Q5MGRheXMnOiB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUoKTsgc3RhcnQuc2V0RGF0ZShzdGFydC5nZXREYXRlKCkgLSA4OSk7XG4gICAgICAgIHJldHVybiB7IHN0YXJ0LCBlbmQ6IHRvZGF5IH07XG4gICAgICB9XG4gICAgICBjYXNlICd0aGlzbW9udGgnOiB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUodG9kYXkuZ2V0RnVsbFllYXIoKSwgdG9kYXkuZ2V0TW9udGgoKSwgMSk7XG4gICAgICAgIHJldHVybiB7IHN0YXJ0LCBlbmQ6IHRvZGF5IH07XG4gICAgICB9XG4gICAgICBjYXNlICdsYXN0bW9udGgnOiB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUodG9kYXkuZ2V0RnVsbFllYXIoKSwgdG9kYXkuZ2V0TW9udGgoKSAtIDEsIDEpO1xuICAgICAgICBjb25zdCBlbmQgPSBuZXcgRGF0ZSh0b2RheS5nZXRGdWxsWWVhcigpLCB0b2RheS5nZXRNb250aCgpLCAwKTtcbiAgICAgICAgcmV0dXJuIHsgc3RhcnQsIGVuZDogY2xhbXBUb0VuZE9mVG9kYXkoZW5kKSB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBwcml2YXRlIHN0YXJ0T2ZEYXkoZDogRGF0ZSk6IERhdGUgeyBjb25zdCBuZCA9IG5ldyBEYXRlKGQpOyBuZC5zZXRIb3VycygwLDAsMCwwKTsgcmV0dXJuIG5kOyB9XG4gIHByaXZhdGUgZW5kT2ZEYXkoZDogRGF0ZSk6IERhdGUgeyBjb25zdCBuZCA9IG5ldyBEYXRlKGQpOyBuZC5zZXRIb3VycygyMyw1OSw1OSw5OTkpOyByZXR1cm4gbmQ7IH1cbiAgcHJpdmF0ZSBzdGFydE9mTW9udGgoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyKTogRGF0ZSB7IHJldHVybiBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSwgMCwwLDAsMCk7IH1cbiAgcHJpdmF0ZSBlbmRPZk1vbnRoKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlcik6IERhdGUgeyByZXR1cm4gbmV3IERhdGUoeWVhciwgbW9udGggKyAxLCAwLCAyMyw1OSw1OSw5OTkpOyB9XG4gIHByaXZhdGUgYnVpbGROZ3hSYW5nZXMoKTogUmVjb3JkPHN0cmluZywgW0RhdGUsIERhdGVdPiB7XG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IGxhc3Q3U3RhcnQgPSBuZXcgRGF0ZSgpOyBsYXN0N1N0YXJ0LnNldERhdGUobGFzdDdTdGFydC5nZXREYXRlKCkgLSA2KTtcbiAgICBjb25zdCBsYXN0MzBTdGFydCA9IG5ldyBEYXRlKCk7IGxhc3QzMFN0YXJ0LnNldERhdGUobGFzdDMwU3RhcnQuZ2V0RGF0ZSgpIC0gMjkpO1xuICAgIGNvbnN0IGxhc3Q5MFN0YXJ0ID0gbmV3IERhdGUoKTsgbGFzdDkwU3RhcnQuc2V0RGF0ZShsYXN0OTBTdGFydC5nZXREYXRlKCkgLSA4OSk7XG4gICAgY29uc3QgdGhpc01vbnRoU3RhcnQgPSB0aGlzLnN0YXJ0T2ZNb250aCh0b2RheS5nZXRGdWxsWWVhcigpLCB0b2RheS5nZXRNb250aCgpKTtcbiAgICBjb25zdCBsYXN0TW9udGhTdGFydCA9IHRoaXMuc3RhcnRPZk1vbnRoKHRvZGF5LmdldEZ1bGxZZWFyKCksIHRvZGF5LmdldE1vbnRoKCkgLSAxKTtcbiAgICBjb25zdCBsYXN0TW9udGhFbmQgPSB0aGlzLmVuZE9mTW9udGgodG9kYXkuZ2V0RnVsbFllYXIoKSwgdG9kYXkuZ2V0TW9udGgoKSAtIDEpO1xuICAgIHJldHVybiB7XG4gICAgICAnVG9kYXknOiBbdGhpcy5zdGFydE9mRGF5KHRvZGF5KSwgdGhpcy5lbmRPZkRheSh0b2RheSldLFxuICAgICAgJ0xhc3QgNyBEYXlzJzogW3RoaXMuc3RhcnRPZkRheShsYXN0N1N0YXJ0KSwgdGhpcy5lbmRPZkRheSh0b2RheSldLFxuICAgICAgJ0xhc3QgMzAgRGF5cyc6IFt0aGlzLnN0YXJ0T2ZEYXkobGFzdDMwU3RhcnQpLCB0aGlzLmVuZE9mRGF5KHRvZGF5KV0sXG4gICAgICAnTGFzdCA5MCBEYXlzJzogW3RoaXMuc3RhcnRPZkRheShsYXN0OTBTdGFydCksIHRoaXMuZW5kT2ZEYXkodG9kYXkpXSxcbiAgICAgICdUaGlzIE1vbnRoJzogW3RoaXMuc3RhcnRPZkRheSh0aGlzTW9udGhTdGFydCksIHRoaXMuZW5kT2ZEYXkodG9kYXkpXSxcbiAgICAgICdMYXN0IE1vbnRoJzogW3RoaXMuc3RhcnRPZkRheShsYXN0TW9udGhTdGFydCksIHRoaXMuZW5kT2ZEYXkobGFzdE1vbnRoRW5kKV0sXG4gICAgfTtcbiAgfVxuICBnZXREYXRlVmFsaWRhdGlvbkVycm9yKGtleTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgZGF0ZUdyb3VwID0gdGhpcy5nZXREYXRlR3JvdXAoa2V5KTtcbiAgICBpZiAoIWRhdGVHcm91cCkgcmV0dXJuIG51bGw7XG5cbiAgICBjb25zdCBzdGFydEN0cmwgPSBkYXRlR3JvdXAuY29udHJvbHNbJ3N0YXJ0J107XG4gICAgY29uc3QgZW5kQ3RybCA9IGRhdGVHcm91cC5jb250cm9sc1snZW5kJ107XG4gICAgY29uc3Qgc3RhcnRWYWwgPSBzdGFydEN0cmw/LnZhbHVlO1xuICAgIGNvbnN0IGVuZFZhbCA9IGVuZEN0cmw/LnZhbHVlO1xuICAgIGNvbnN0IHN0YXJ0UGFyc2VFcnIgPSBzdGFydEN0cmw/LmVycm9ycz8uWydtYXREYXRlcGlja2VyUGFyc2UnXT8udGV4dDtcbiAgICBjb25zdCBlbmRQYXJzZUVyciA9IGVuZEN0cmw/LmVycm9ycz8uWydtYXREYXRlcGlja2VyUGFyc2UnXT8udGV4dDtcblxuICAgIGlmICghc3RhcnRWYWwgJiYgIWVuZFZhbCAmJiAhc3RhcnRQYXJzZUVyciAmJiAhZW5kUGFyc2VFcnIpIHJldHVybiBudWxsO1xuXG4gICAgaWYgKHN0YXJ0UGFyc2VFcnIpIHJldHVybiBgSW52YWxpZCBzdGFydCBkYXRlIGZvcm1hdGA7XG4gICAgaWYgKGVuZFBhcnNlRXJyKSByZXR1cm4gYEludmFsaWQgZW5kIGRhdGUgZm9ybWF0YDtcblxuICAgIGlmIChzdGFydFZhbCAmJiAhZW5kVmFsKSByZXR1cm4gYFBsZWFzZSBzZWxlY3QgYW4gZW5kIGRhdGVgO1xuICAgIGlmICghc3RhcnRWYWwgJiYgZW5kVmFsKSByZXR1cm4gYFBsZWFzZSBzZWxlY3QgYSBzdGFydCBkYXRlYDtcblxuICAgIGlmIChkYXRlR3JvdXAuaGFzRXJyb3IoJ21hdFN0YXJ0RGF0ZUludmFsaWQnKSkgcmV0dXJuIGBTdGFydCBkYXRlIG11c3QgYmUgYmVmb3JlIGVuZCBkYXRlYDtcbiAgICBpZiAoZGF0ZUdyb3VwLmhhc0Vycm9yKCdtYXRFbmREYXRlSW52YWxpZCcpKSByZXR1cm4gYEVuZCBkYXRlIG11c3QgYmUgYWZ0ZXIgc3RhcnQgZGF0ZWA7XG5cbiAgICBpZiAoZGF0ZUdyb3VwLmludmFsaWQpIHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnPy5maW5kKGMgPT4gYy5rZXkgPT09IGtleSk7XG4gICAgICByZXR1cm4gY29uZmlnID8gYCR7Y29uZmlnLmxhYmVsfSBpcyBpbnZhbGlkYCA6ICdEYXRlIHJhbmdlIGlzIGludmFsaWQnO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gRHluYW1pYyBEYXRlIFBpY2tlciBJbnRlZ3JhdGlvbiBNZXRob2RzIHJlbW92ZWQgKGNvbXBvbmVudCBubyBsb25nZXIgdXNlZClcbn1cblxuXG4iLCI8ZGl2IGNsYXNzPVwiY3FhLXVpLXJvb3RcIj5cbiAgPGRpdiBjbGFzcz1cImNxYS1maWx0ZXIgY3FhLW1iLVsyOHB4XVwiICpuZ0lmPVwic2hvd0ZpbHRlclBhbmVsXCIgc3R5bGU9XCJoZWlnaHQ6IGF1dG87XCI+XG4gICAgPCEtLSBCb3R0b20gTGF5b3V0OiBDdXJyZW50IGRlc2lnbiB3aXRoIHNlbGVjdG9ycyBpbiBncmlkIGFuZCBidXR0b25zIGJlbG93IC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJidXR0b25MYXlvdXQgPT09ICdib3R0b20nXCI+XG4gICAgICA8Zm9ybSBjbGFzcz1cInRzLWZvcm0gY3FhLWdyaWQgbGc6Y3FhLWdyaWQtY29scy00IG1kOmNxYS1ncmlkLWNvbHMtMiBjcWEtZ2FwLTRcIiBbZm9ybUdyb3VwXT1cImZvcm1cIlxuICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCIoZmFsc2UpXCIgbm92YWxpZGF0ZT1cIm5vdmFsaWRhdGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYyBvZiBjb25maWdcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWMuaGlkZGVuXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBjdXMtcmFuZ2Utc2VsZWN0IGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTIgY3FhLWZsZXgtc2hyaW5rLTAgZmlsdGVyLXNlbGVjdG9yLXdpZHRoIGNxYS13LWZ1bGxcIj5cbiAgICAgICAgICAgICAgPCEtLSBTZWxlY3QgLS0+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjLnR5cGUgPT09ICdzZWxlY3QnXCI+XG4gICAgICAgICAgICAgICAgPGNxYS1keW5hbWljLXNlbGVjdCBbZm9ybV09XCJmb3JtXCIgW2NvbmZpZ109XCJnZXRTZWxlY3RDb25maWcoYylcIj48L2NxYS1keW5hbWljLXNlbGVjdD5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPCEtLSBEYXRlIFJhbmdlIC0tPiBcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImMudHlwZSA9PT0gJ2RhdGUtcmFuZ2UnXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tbGFiZWwgY3FhLXRleHQtWyMzNzQxNTFdIGNxYS10ZXh0LVsxNHB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLWJsb2NrIGNxYS1sZWFkaW5nLVsxLjRdXCI+e3tcbiAgICAgICAgICAgICAgICAgIGMubGFiZWwgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1hdC1kYXRlLWN1c3RvbVwiIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gICAgICAgICAgICAgICAgICA8bWF0LWRhdGUtcmFuZ2UtaW5wdXQgW3JhbmdlUGlja2VyXT1cInBpY2tlclwiIFtmb3JtR3JvdXBdPVwiZ2V0RGF0ZUdyb3VwKGMua2V5KVwiIFttYXhdPVwibWF4RGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0U3RhcnREYXRlIGZvcm1Db250cm9sTmFtZT1cInN0YXJ0XCIgW3BsYWNlaG9sZGVyXT1cImMucGxhY2Vob2xkZXIgfHwgJ1N0YXJ0IGRhdGUnXCIgW21heF09XCJtYXhEYXRlXCIgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwidHJ1ZVwiIChmb2N1cyk9XCJwaWNrZXIub3BlbigpXCIgKGNsaWNrKT1cInBpY2tlci5vcGVuKClcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0RW5kRGF0ZSBmb3JtQ29udHJvbE5hbWU9XCJlbmRcIiBbcGxhY2Vob2xkZXJdPVwiYy5wbGFjZWhvbGRlciB8fCAnRW5kIGRhdGUnXCIgW21heF09XCJtYXhEYXRlXCIgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwidHJ1ZVwiIChmb2N1cyk9XCJwaWNrZXIub3BlbigpXCIgKGNsaWNrKT1cInBpY2tlci5vcGVuKClcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9tYXQtZGF0ZS1yYW5nZS1pbnB1dD5cbiAgICAgICAgICAgICAgICAgIDxtYXQtZGF0ZS1yYW5nZS1waWNrZXIgI3BpY2tlciAoZGF0ZUNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoJGV2ZW50LCBjLmtleSlcIlxuICAgICAgICAgICAgICAgICAgICBbcGFuZWxDbGFzc109XCInY3RjLWRhdGUtcmFuZ2UtcGFuZWwnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlci1hY3Rpb25zIGNsYXNzPVwiY3RjLWRhdGUtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdGMtZGF0ZS1wcmVzZXRzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLW1iLTIgY3FhLWZvbnQtbWVkaXVtXCI+UXVpY2sgUHJlc2V0czwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInByZXNldC1idG4gdG9kYXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVByZXNldFRvR3JvdXAoYy5rZXksICd0b2RheScpOyBwaWNrZXIuY2xvc2UoKVwiPlRvZGF5PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicHJlc2V0LWJ0biBsYXN0N2RheXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVByZXNldFRvR3JvdXAoYy5rZXksICdsYXN0N2RheXMnKTsgcGlja2VyLmNsb3NlKClcIj5MYXN0IDcgZGF5czwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInByZXNldC1idG4gbGFzdDMwZGF5c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFwcGx5UHJlc2V0VG9Hcm91cChjLmtleSwgJ2xhc3QzMGRheXMnKTsgcGlja2VyLmNsb3NlKClcIj5MYXN0IDMwIGRheXM8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJwcmVzZXQtYnRuIGxhc3Q5MGRheXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVByZXNldFRvR3JvdXAoYy5rZXksICdsYXN0OTBkYXlzJyk7IHBpY2tlci5jbG9zZSgpXCI+TGFzdCA5MCBkYXlzPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicHJlc2V0LWJ0biB0aGlzbW9udGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVByZXNldFRvR3JvdXAoYy5rZXksICd0aGlzbW9udGgnKTsgcGlja2VyLmNsb3NlKClcIj5UaGlzIG1vbnRoPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicHJlc2V0LWJ0biBsYXN0bW9udGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVByZXNldFRvR3JvdXAoYy5rZXksICdsYXN0bW9udGgnKTsgcGlja2VyLmNsb3NlKClcIj5MYXN0IG1vbnRoPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZvbnQtbWVkaXVtIGNxYS1tYi0yIGNxYS1tdC1bMTBweF0gY3FhLXctZnVsbFwiPkN1c3RvbSBSYW5nZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiIWNxYS1iZy1bIzNmNTFiNV0gIWNxYS10ZXh0LXdoaXRlIGNxYS1wLTIgY3FhLWZvbnQtbWVkaXVtICFjcWEtbWItMiAhY3FhLW10LVsxMHB4XSBjcWEtdy1bY2FsYygxMDAlLTMycHgpXSAhY3FhLWFic29sdXRlIGNxYS1ib3R0b20tWzJweF1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIG1hdERhdGVwaWNrZXJBcHBseT5BcHBseTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1kYXRlcGlja2VyLWFjdGlvbnM+XG4gICAgICAgICAgICAgICAgICA8L21hdC1kYXRlLXJhbmdlLXBpY2tlcj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInBpY2tlci5vcGVuKClcIiBjbGFzcz1cImNxYS1jdXJzb3ItcG9pbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTUuMzMzOTggMS4zMzIwM1YzLjk5ODdcIiBzdHJva2U9XCIjMEEwQTBBXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuNjY2IDEuMzMyMDNWMy45OTg3XCIgc3Ryb2tlPVwiIzBBMEEwQVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMi42NjY3IDIuNjY3OTdIMy4zMzMzM0MyLjU5Njk1IDIuNjY3OTcgMiAzLjI2NDkyIDIgNC4wMDEzVjEzLjMzNDZDMiAxNC4wNzEgMi41OTY5NSAxNC42NjggMy4zMzMzMyAxNC42NjhIMTIuNjY2N0MxMy40MDMgMTQuNjY4IDE0IDE0LjA3MSAxNCAxMy4zMzQ2VjQuMDAxM0MxNCAzLjI2NDkyIDEzLjQwMyAyLjY2Nzk3IDEyLjY2NjcgMi42Njc5N1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzBBMEEwQVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMiA2LjY2Nzk3SDE0XCIgc3Ryb2tlPVwiIzBBMEEwQVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDwhLS0gU3BlY2lmaWMgdmFsaWRhdGlvbiBtZXNzYWdlcyAtLT5cbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZ2V0RGF0ZVZhbGlkYXRpb25FcnJvcihjLmtleSkgJiYgIXBpY2tlci5vcGVuZWRcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldERhdGVWYWxpZGF0aW9uRXJyb3IoYy5rZXkpIH19XG4gICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9mb3JtPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWp1c3RpZnktZW5kIGNxYS1pdGVtcy1zdHJldGNoIGNxYS1nYXAtMiBjcWEtbXQtNFwiPlxuICAgICAgICA8Y3FhLWJ1dHRvbiB2YXJpYW50PVwiZmlsbGVkXCIgKG1vdXNlZG93bik9XCJwcmVwYXJlUHJpbWFyeUFjdGlvbigpXCIgKGNsaWNrZWQpPVwiYXBwbHkoKVwiIFtkaXNhYmxlZF09XCIhaGFzU2VsZWN0ZWRGaWx0ZXJzXCI+QXBwbHkgRmlsdGVyPC9jcWEtYnV0dG9uPlxuICAgICAgICA8Y3FhLWJ1dHRvbiB2YXJpYW50PVwib3V0bGluZWRcIiAobW91c2Vkb3duKT1cInByZXBhcmVQcmltYXJ5QWN0aW9uKClcIiAoY2xpY2tlZCk9XCJyZXNldCgpXCI+UmVzZXQ8L2NxYS1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gUmlnaHQgTGF5b3V0OiBCdXR0b25zIG9uIGxlZnRtb3N0IHNpZGUsIHNlbGVjdG9ycyBvbiByaWdodG1vc3Qgc2lkZSAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYnV0dG9uTGF5b3V0ID09PSAncmlnaHQnXCI+XG4gICAgICA8Zm9ybSBjbGFzcz1cInRzLWZvcm0gY3FhLWZsZXggY3FhLWZsZXgtd3JhcCBjcWEtaXRlbXMtZW5kIGNxYS1qdXN0aWZ5LWJldHdlZW4gY3FhLWdhcC00XCIgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiKGZhbHNlKVwiIG5vdmFsaWRhdGU9XCJub3ZhbGlkYXRlXCIgc3R5bGU9XCJoZWlnaHQ6IGF1dG87XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtc3RyZXRjaCBjcWEtZ2FwLTIgY3FhLWZsZXgtc2hyaW5rLTAgY3FhLW9yZGVyLWZpcnN0IGNxYS1tci1hdXRvXCI+XG4gICAgICAgICAgPGNxYS1idXR0b24gdmFyaWFudD1cImZpbGxlZFwiIChjbGlja2VkKT1cImFwcGx5KClcIiBbZGlzYWJsZWRdPVwiIWhhc1NlbGVjdGVkRmlsdGVyc1wiPkFwcGx5IEZpbHRlcjwvY3FhLWJ1dHRvbj5cbiAgICAgICAgICA8Y3FhLWJ1dHRvbiB2YXJpYW50PVwib3V0bGluZWRcIiAoY2xpY2tlZCk9XCJyZXNldCgpXCI+UmVzZXQ8L2NxYS1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtd3JhcCBjcWEtaXRlbXMtZW5kIGNxYS1nYXAtNCBjcWEtZmxleC0xIGNxYS1qdXN0aWZ5LWVuZCBjcWEtb3JkZXItbGFzdCBjcWEtbWwtYXV0b1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGMgb2YgY29uZmlnXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjLmhpZGRlblwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMiBjcWEtZmxleC1zaHJpbmstMCBmaWx0ZXItc2VsZWN0b3Itd2lkdGhcIj5cbiAgICAgICAgICAgICAgPCEtLSBTZWxlY3QgLS0+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjLnR5cGUgPT09ICdzZWxlY3QnXCI+XG4gICAgICAgICAgICAgICAgPGNxYS1keW5hbWljLXNlbGVjdCBbZm9ybV09XCJmb3JtXCIgW2NvbmZpZ109XCJnZXRTZWxlY3RDb25maWcoYylcIj48L2NxYS1keW5hbWljLXNlbGVjdD5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPCEtLSBEYXRlIFJhbmdlIC0tPiBcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImMudHlwZSA9PT0gJ2RhdGUtcmFuZ2UnXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tbGFiZWwgY3FhLXRleHQtWyMzNzQxNTFdIGNxYS10ZXh0LVsxNHB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLWJsb2NrIGNxYS1sZWFkaW5nLVsxLjRdXCI+e3tcbiAgICAgICAgICAgICAgICAgIGMubGFiZWwgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1hdC1kYXRlLWN1c3RvbVwiIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gICAgICAgICAgICAgICAgICA8bWF0LWRhdGUtcmFuZ2UtaW5wdXQgW3JhbmdlUGlja2VyXT1cInBpY2tlclwiIFtmb3JtR3JvdXBdPVwiZ2V0RGF0ZUdyb3VwKGMua2V5KVwiIFttYXhdPVwibWF4RGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0U3RhcnREYXRlIGZvcm1Db250cm9sTmFtZT1cInN0YXJ0XCIgW3BsYWNlaG9sZGVyXT1cImMucGxhY2Vob2xkZXIgfHwgJ1N0YXJ0IGRhdGUnXCIgW21heF09XCJtYXhEYXRlXCIgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwidHJ1ZVwiIChmb2N1cyk9XCJwaWNrZXIub3BlbigpXCIgKGNsaWNrKT1cInBpY2tlci5vcGVuKClcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0RW5kRGF0ZSBmb3JtQ29udHJvbE5hbWU9XCJlbmRcIiBbcGxhY2Vob2xkZXJdPVwiYy5wbGFjZWhvbGRlciB8fCAnRW5kIGRhdGUnXCIgW21heF09XCJtYXhEYXRlXCIgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwidHJ1ZVwiIChmb2N1cyk9XCJwaWNrZXIub3BlbigpXCIgKGNsaWNrKT1cInBpY2tlci5vcGVuKClcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9tYXQtZGF0ZS1yYW5nZS1pbnB1dD5cbiAgICAgICAgICAgICAgICAgIDxtYXQtZGF0ZS1yYW5nZS1waWNrZXIgI3BpY2tlciAoZGF0ZUNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoJGV2ZW50LCBjLmtleSlcIlxuICAgICAgICAgICAgICAgICAgICBbcGFuZWxDbGFzc109XCInY3RjLWRhdGUtcmFuZ2UtcGFuZWwnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlci1hY3Rpb25zIGNsYXNzPVwiY3RjLWRhdGUtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdGMtZGF0ZS1wcmVzZXRzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLW1iLTIgY3FhLWZvbnQtbWVkaXVtXCI+UXVpY2sgUHJlc2V0czwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInByZXNldC1idG4gdG9kYXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVByZXNldFRvR3JvdXAoYy5rZXksICd0b2RheScpOyBwaWNrZXIuY2xvc2UoKVwiPlRvZGF5PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicHJlc2V0LWJ0biBsYXN0N2RheXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVByZXNldFRvR3JvdXAoYy5rZXksICdsYXN0N2RheXMnKTsgcGlja2VyLmNsb3NlKClcIj5MYXN0IDcgZGF5czwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInByZXNldC1idG4gbGFzdDMwZGF5c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFwcGx5UHJlc2V0VG9Hcm91cChjLmtleSwgJ2xhc3QzMGRheXMnKTsgcGlja2VyLmNsb3NlKClcIj5MYXN0IDMwIGRheXM8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJwcmVzZXQtYnRuIGxhc3Q5MGRheXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVByZXNldFRvR3JvdXAoYy5rZXksICdsYXN0OTBkYXlzJyk7IHBpY2tlci5jbG9zZSgpXCI+TGFzdCA5MCBkYXlzPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicHJlc2V0LWJ0biB0aGlzbW9udGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVByZXNldFRvR3JvdXAoYy5rZXksICd0aGlzbW9udGgnKTsgcGlja2VyLmNsb3NlKClcIj5UaGlzIG1vbnRoPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicHJlc2V0LWJ0biBsYXN0bW9udGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVByZXNldFRvR3JvdXAoYy5rZXksICdsYXN0bW9udGgnKTsgcGlja2VyLmNsb3NlKClcIj5MYXN0IG1vbnRoPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZvbnQtbWVkaXVtIGNxYS1tYi0yIGNxYS1tdC1bMTBweF0gY3FhLXctZnVsbFwiPkN1c3RvbSBSYW5nZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiIWNxYS1iZy1bIzNmNTFiNV0gIWNxYS10ZXh0LXdoaXRlIGNxYS1wLTIgY3FhLWZvbnQtbWVkaXVtICFjcWEtbWItMiAhY3FhLW10LVsxMHB4XSBjcWEtdy1bY2FsYygxMDAlLTMycHgpXSAhY3FhLWFic29sdXRlIGNxYS1ib3R0b20tWzJweF1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIG1hdERhdGVwaWNrZXJBcHBseT5BcHBseTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1kYXRlcGlja2VyLWFjdGlvbnM+XG4gICAgICAgICAgICAgICAgICA8L21hdC1kYXRlLXJhbmdlLXBpY2tlcj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInBpY2tlci5vcGVuKClcIiBjbGFzcz1cImNxYS1jdXJzb3ItcG9pbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTUuMzMzOTggMS4zMzIwM1YzLjk5ODdcIiBzdHJva2U9XCIjMEEwQTBBXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuNjY2IDEuMzMyMDNWMy45OTg3XCIgc3Ryb2tlPVwiIzBBMEEwQVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMi42NjY3IDIuNjY3OTdIMy4zMzMzM0MyLjU5Njk1IDIuNjY3OTcgMiAzLjI2NDkyIDIgNC4wMDEzVjEzLjMzNDZDMiAxNC4wNzEgMi41OTY5NSAxNC42NjggMy4zMzMzMyAxNC42NjhIMTIuNjY2N0MxMy40MDMgMTQuNjY4IDE0IDE0LjA3MSAxNCAxMy4zMzQ2VjQuMDAxM0MxNCAzLjI2NDkyIDEzLjQwMyAyLjY2Nzk3IDEyLjY2NjcgMi42Njc5N1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzBBMEEwQVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMiA2LjY2Nzk3SDE0XCIgc3Ryb2tlPVwiIzBBMEEwQVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDwhLS0gU3BlY2lmaWMgdmFsaWRhdGlvbiBtZXNzYWdlcyAtLT5cbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZ2V0RGF0ZVZhbGlkYXRpb25FcnJvcihjLmtleSkgJiYgIXBpY2tlci5vcGVuZWRcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldERhdGVWYWxpZGF0aW9uRXJyb3IoYy5rZXkpIH19XG4gICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZm9ybT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gTGVmdCBMYXlvdXQ6IFNlbGVjdG9ycyBvbiBsZWZ0bW9zdCBzaWRlLCBidXR0b25zIG9uIHJpZ2h0bW9zdCBzaWRlIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJidXR0b25MYXlvdXQgPT09ICdsZWZ0J1wiPlxuICAgICAgPGZvcm0gY2xhc3M9XCJ0cy1mb3JtIGNxYS1mbGV4IGNxYS1mbGV4LXdyYXAgY3FhLWl0ZW1zLWVuZCBjcWEtanVzdGlmeS1iZXR3ZWVuIGNxYS1nYXAtNFwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cIihmYWxzZSlcIiBub3ZhbGlkYXRlPVwibm92YWxpZGF0ZVwiIHN0eWxlPVwiaGVpZ2h0OiBhdXRvO1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtd3JhcCBjcWEtaXRlbXMtZW5kIGNxYS1nYXAtNCBjcWEtZmxleC0xIGNxYS1vcmRlci1maXJzdCBjcWEtbXItYXV0b1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGMgb2YgY29uZmlnXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjLmhpZGRlblwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMiBjcWEtZmxleC1zaHJpbmstMCBmaWx0ZXItc2VsZWN0b3Itd2lkdGhcIj5cbiAgICAgICAgICAgICAgPCEtLSBTZWxlY3QgLS0+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjLnR5cGUgPT09ICdzZWxlY3QnXCI+XG4gICAgICAgICAgICAgICAgPGNxYS1keW5hbWljLXNlbGVjdCBbZm9ybV09XCJmb3JtXCIgW2NvbmZpZ109XCJnZXRTZWxlY3RDb25maWcoYylcIj48L2NxYS1keW5hbWljLXNlbGVjdD5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPCEtLSBEYXRlIFJhbmdlIC0tPiBcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImMudHlwZSA9PT0gJ2RhdGUtcmFuZ2UnXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tbGFiZWwgY3FhLXRleHQtWyMzNzQxNTFdIGNxYS10ZXh0LVsxNHB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLWJsb2NrIGNxYS1sZWFkaW5nLVsxLjRdXCI+e3tcbiAgICAgICAgICAgICAgICAgIGMubGFiZWwgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1hdC1kYXRlLWN1c3RvbVwiIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gICAgICAgICAgICAgICAgICA8bWF0LWRhdGUtcmFuZ2UtaW5wdXQgW3JhbmdlUGlja2VyXT1cInBpY2tlclwiIFtmb3JtR3JvdXBdPVwiZ2V0RGF0ZUdyb3VwKGMua2V5KVwiIFttYXhdPVwibWF4RGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0U3RhcnREYXRlIGZvcm1Db250cm9sTmFtZT1cInN0YXJ0XCIgW3BsYWNlaG9sZGVyXT1cImMucGxhY2Vob2xkZXIgfHwgJ1N0YXJ0IGRhdGUnXCIgW21heF09XCJtYXhEYXRlXCIgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwidHJ1ZVwiIChmb2N1cyk9XCJwaWNrZXIub3BlbigpXCIgKGNsaWNrKT1cInBpY2tlci5vcGVuKClcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0RW5kRGF0ZSBmb3JtQ29udHJvbE5hbWU9XCJlbmRcIiBbcGxhY2Vob2xkZXJdPVwiYy5wbGFjZWhvbGRlciB8fCAnRW5kIGRhdGUnXCIgW21heF09XCJtYXhEYXRlXCIgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwidHJ1ZVwiIChmb2N1cyk9XCJwaWNrZXIub3BlbigpXCIgKGNsaWNrKT1cInBpY2tlci5vcGVuKClcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9tYXQtZGF0ZS1yYW5nZS1pbnB1dD5cbiAgICAgICAgICAgICAgICAgIDxtYXQtZGF0ZS1yYW5nZS1waWNrZXIgI3BpY2tlciAoZGF0ZUNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoJGV2ZW50LCBjLmtleSlcIlxuICAgICAgICAgICAgICAgICAgICBbcGFuZWxDbGFzc109XCInY3RjLWRhdGUtcmFuZ2UtcGFuZWwnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlci1hY3Rpb25zIGNsYXNzPVwiY3RjLWRhdGUtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdGMtZGF0ZS1wcmVzZXRzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLW1iLTIgY3FhLWZvbnQtbWVkaXVtXCI+UXVpY2sgUHJlc2V0czwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInByZXNldC1idG4gdG9kYXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVByZXNldFRvR3JvdXAoYy5rZXksICd0b2RheScpOyBwaWNrZXIuY2xvc2UoKVwiPlRvZGF5PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicHJlc2V0LWJ0biBsYXN0N2RheXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVByZXNldFRvR3JvdXAoYy5rZXksICdsYXN0N2RheXMnKTsgcGlja2VyLmNsb3NlKClcIj5MYXN0IDcgZGF5czwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInByZXNldC1idG4gbGFzdDMwZGF5c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFwcGx5UHJlc2V0VG9Hcm91cChjLmtleSwgJ2xhc3QzMGRheXMnKTsgcGlja2VyLmNsb3NlKClcIj5MYXN0IDMwIGRheXM8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJwcmVzZXQtYnRuIGxhc3Q5MGRheXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVByZXNldFRvR3JvdXAoYy5rZXksICdsYXN0OTBkYXlzJyk7IHBpY2tlci5jbG9zZSgpXCI+TGFzdCA5MCBkYXlzPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicHJlc2V0LWJ0biB0aGlzbW9udGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVByZXNldFRvR3JvdXAoYy5rZXksICd0aGlzbW9udGgnKTsgcGlja2VyLmNsb3NlKClcIj5UaGlzIG1vbnRoPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicHJlc2V0LWJ0biBsYXN0bW9udGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVByZXNldFRvR3JvdXAoYy5rZXksICdsYXN0bW9udGgnKTsgcGlja2VyLmNsb3NlKClcIj5MYXN0IG1vbnRoPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZvbnQtbWVkaXVtIGNxYS1tYi0yIGNxYS1tdC1bMTBweF0gY3FhLXctZnVsbFwiPkN1c3RvbSBSYW5nZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiIWNxYS1iZy1bIzNmNTFiNV0gIWNxYS10ZXh0LXdoaXRlIGNxYS1wLTIgY3FhLWZvbnQtbWVkaXVtICFjcWEtbWItMiAhY3FhLW10LVsxMHB4XSBjcWEtdy1bY2FsYygxMDAlLTMycHgpXSAhY3FhLWFic29sdXRlIGNxYS1ib3R0b20tWzJweF1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIG1hdERhdGVwaWNrZXJBcHBseT5BcHBseTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1kYXRlcGlja2VyLWFjdGlvbnM+XG4gICAgICAgICAgICAgICAgICA8L21hdC1kYXRlLXJhbmdlLXBpY2tlcj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInBpY2tlci5vcGVuKClcIiBjbGFzcz1cImNxYS1jdXJzb3ItcG9pbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTUuMzMzOTggMS4zMzIwM1YzLjk5ODdcIiBzdHJva2U9XCIjMEEwQTBBXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuNjY2IDEuMzMyMDNWMy45OTg3XCIgc3Ryb2tlPVwiIzBBMEEwQVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMi42NjY3IDIuNjY3OTdIMy4zMzMzM0MyLjU5Njk1IDIuNjY3OTcgMiAzLjI2NDkyIDIgNC4wMDEzVjEzLjMzNDZDMiAxNC4wNzEgMi41OTY5NSAxNC42NjggMy4zMzMzMyAxNC42NjhIMTIuNjY2N0MxMy40MDMgMTQuNjY4IDE0IDE0LjA3MSAxNCAxMy4zMzQ2VjQuMDAxM0MxNCAzLjI2NDkyIDEzLjQwMyAyLjY2Nzk3IDEyLjY2NjcgMi42Njc5N1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzBBMEEwQVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMiA2LjY2Nzk3SDE0XCIgc3Ryb2tlPVwiIzBBMEEwQVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDwhLS0gU3BlY2lmaWMgdmFsaWRhdGlvbiBtZXNzYWdlcyAtLT5cbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZ2V0RGF0ZVZhbGlkYXRpb25FcnJvcihjLmtleSkgJiYgIXBpY2tlci5vcGVuZWRcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldERhdGVWYWxpZGF0aW9uRXJyb3IoYy5rZXkpIH19XG4gICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1zdHJldGNoIGNxYS1nYXAtMiBjcWEtZmxleC1zaHJpbmstMCBjcWEtb3JkZXItbGFzdCBjcWEtbWwtYXV0b1wiPlxuICAgICAgICAgIDxjcWEtYnV0dG9uIHZhcmlhbnQ9XCJmaWxsZWRcIiAobW91c2Vkb3duKT1cInByZXBhcmVQcmltYXJ5QWN0aW9uKClcIiAoY2xpY2tlZCk9XCJhcHBseSgpXCIgW2Rpc2FibGVkXT1cIiFoYXNTZWxlY3RlZEZpbHRlcnNcIj5BcHBseSBGaWx0ZXI8L2NxYS1idXR0b24+XG4gICAgICAgICAgPGNxYS1idXR0b24gdmFyaWFudD1cIm91dGxpbmVkXCIgKG1vdXNlZG93bik9XCJwcmVwYXJlUHJpbWFyeUFjdGlvbigpXCIgKGNsaWNrZWQpPVwicmVzZXQoKVwiPlJlc2V0PC9jcWEtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZm9ybT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
@@ -2149,6 +2149,11 @@ class DynamicFilterComponent {
2149
2149
  showSelectAll: item.showSelectAll,
2150
2150
  selectAllLabel: item.selectAllLabel,
2151
2151
  selectedValue: item.selectedValue,
2152
+ serverSearch: item.serverSearch,
2153
+ hasMore: item.hasMore,
2154
+ isLoading: item.isLoading,
2155
+ onSearch: item.onSearch,
2156
+ onLoadMore: item.onLoadMore,
2152
2157
  options: item.options || []
2153
2158
  };
2154
2159
  }