simpo-component-library 3.6.960 → 3.6.961

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.
@@ -165,19 +165,9 @@ export class VerifyComponent extends BaseSection {
165
165
  this.restService.getAppointmentPaymentStatus(orderId).subscribe((response) => {
166
166
  localStorage.removeItem("appointmentPaymentId");
167
167
  this.paymentStatus = 'SUCCESS';
168
- // setTimeout(() => {
169
- // this.router.navigate(['/profile']);
170
- // }, 3000);
171
- // Swal.fire({
172
- // icon: "success",
173
- // title: "Hurray",
174
- // text: "Payment Successful",
175
- // confirmButtonText: "See Details"
176
- // }).then((response) => {
177
- // if (response.isConfirmed) {
178
- // this.router.navigate(['/profile'], {queryParams: {tab: 'Scheme Passbook'}});
179
- // }
180
- // })
168
+ setTimeout(() => {
169
+ this.router.navigate(['/profile']);
170
+ }, 3000);
181
171
  }, (error) => {
182
172
  if (this.APPOINTMENT_API_COUNT >= this.MAX_API_COUNT) {
183
173
  // Swal.fire({
@@ -235,4 +225,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
235
225
  }], customClass: [{
236
226
  type: Input
237
227
  }] } });
238
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZ5LXBheW1lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvdmVyaWZ5LXBheW1lbnQvdmVyaWZ5LXBheW1lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvdmVyaWZ5LXBheW1lbnQvdmVyaWZ5LXBheW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFPekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRTlFLE9BQU8sV0FBVyxNQUFNLCtCQUErQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUNyRyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQztBQUN0SCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7OztBQWtCOUUsTUFBTSxPQUFPLGVBQWdCLFNBQVEsV0FBVztJQWE5QyxZQUNtQixXQUF3QixFQUN4QixNQUFjLEVBQ2QsY0FBcUMsRUFDckMsY0FBOEIsRUFDOUIsYUFBNEI7UUFFN0MsS0FBSyxFQUFFLENBQUM7UUFOUyxnQkFBVyxHQUFYLFdB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dCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3N0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBWZXJpZnlQYXltZW50Q29udGVudE1vZGVsLCBWZXJpZnlQYXltZW50U2VjdGlvbk1vZGFsLCBWZXJpZnlQYXltZW50U3R5bGVzTW9kZWwgfSBmcm9tICcuL3ZlcmlmeS1wYXltZW50Lm1vZGVsJztcbmltcG9ydCBTd2FsIGZyb20gJ3N3ZWV0YWxlcnQyJztcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi8uLi9zdHlsZXMvdXNlci5tb2RhbCc7XG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IFRvYXN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b2FzdCc7XG5pbXBvcnQgeyBCYWNrZ3JvdW5kRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2JhY2tncm91bmQtZGlyZWN0aXZlJztcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vLi4vLi4vc2VjdGlvbnMvQmFzZVNlY3Rpb24nO1xuaW1wb3J0IHsgSG92ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvaG92ZXItZWxlbWVudC1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSG92ZXJFbGVtZW50c0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvaG92ZXItZWxlbWVudHMvaG92ZXItZWxlbWVudHMuY29tcG9uZW50JztcbmltcG9ydCB7IERlbGV0ZUhvdmVyRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvZGVsZXRlLWhvdmVyLWVsZW1lbnQvZGVsZXRlLWhvdmVyLWVsZW1lbnQuY29tcG9uZW50JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2ltcG8tdmVyaWZ5LXBheW1lbnQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQmFja2dyb3VuZERpcmVjdGl2ZSxcbiAgICBIb3ZlckRpcmVjdGl2ZSxcbiAgICBUb2FzdE1vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSG92ZXJFbGVtZW50c0NvbXBvbmVudCxcbiAgICBEZWxldGVIb3ZlckVsZW1lbnRDb21wb25lbnQsXG4gICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlXG4gIF0sXG4gIHByb3ZpZGVyczogW01lc3NhZ2VTZXJ2aWNlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZlcmlmeS1wYXltZW50LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3ZlcmlmeS1wYXltZW50LmNvbXBvbmVudC5jc3MnXG59KVxuZXhwb3J0IGNsYXNzIFZlcmlmeUNvbXBvbmVudCBleHRlbmRzIEJhc2VTZWN0aW9uIGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKSBkYXRhPzogVmVyaWZ5UGF5bWVudFNlY3Rpb25Nb2RhbDtcbiAgQElucHV0KCkgcmVzcG9uc2VEYXRhOiBhbnk7XG4gIEBJbnB1dCgpIGVkaXQ/OiBib29sZWFuO1xuICBASW5wdXQoKSBpbmRleD86IG51bWJlcjtcbiAgQElucHV0KCkgZGVsZXRlPzogYm9vbGVhbjtcbiAgQElucHV0KCkgY3VzdG9tQ2xhc3M/OiBzdHJpbmc7XG4gIHN0eWxlcz86IFZlcmlmeVBheW1lbnRTdHlsZXNNb2RlbDtcbiAgY29udGVudD86IFZlcmlmeVBheW1lbnRDb250ZW50TW9kZWw7XG4gIHByaXZhdGUgdXNlckRldGFpbHM6IFVzZXIgfCBudWxsID0gbnVsbDtcbiAgcGF5bWVudFN0YXR1czogJ1NVQ0NFU1MnIHwgJ0ZBSUxFRCcgfCAnT05HT0lORycgPSAnT05HT0lORydcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc3RTZXJ2aWNlOiBSZXN0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ldmVudFNlcnZpY2U6IEV2ZW50c1NlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkaW5nVGV4dDogc3RyaW5nID0gXCJQbGVhc2Ugd2FpdC4uLlwiO1xuICBwcml2YXRlIEFQSV9DT1VOVDogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBNQVhfQVBJX0NPVU5UOiBudW1iZXIgPSAyMDtcbiAgcHJpdmF0ZSBQQVNTQk9PS19BUElfQ09VTlQ6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgQVBQT0lOVE1FTlRfQVBJX0NPVU5UOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIE1BWF9QQVNTQk9PS19BUElfQ09VTlQgPSAyMDtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRlbnQgPSB0aGlzLmRhdGE/LmNvbnRlbnQ7XG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLmRhdGE/LnN0eWxlcztcblxuICAgIHRoaXMudXNlckRldGFpbHMgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKSBhcyBVc2VyO1xuICAgIGlmICghdGhpcy51c2VyRGV0YWlscyAmJiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJSRVFVRVNUX0ZST01cIikgPT0gXCJVU0VSXCIpKSB7XG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5OiAnRXJyb3InLCBkZXRhaWw6ICdQbGVhc2UgbG9naW4gdG8gYWNjZXNzIHByb2ZpbGUnIH0pO1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvJ10pO1xuICAgIH1cblxuICAgIC8vIGlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIlJFUVVFU1RfRlJPTVwiKSA9PSBcIkVDT01NRVJDRVwiKVxuICAgIC8vICAgcmV0dXJuO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmxvYWRpbmdUZXh0ID0gJ1RoYW5rcyBmb3IgY2hvb3NpbmcgdXMnO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGluZ1RleHQgPSAnV2UgYXJlIHByb2Nlc3NpbmcgeW91ciBwYXltZW50cyc7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZ1RleHQgPSAnSG9sZCBPbi4uLic7XG4gICAgICAgIH0sIDMwMDApO1xuICAgICAgfSwgMzAwMCk7XG4gICAgfSwgMzAwMCk7XG5cbiAgICBjb25zdCBwYXNzQm9va09yZGVySWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInBhc3Nib29rT3JkZXJJZFwiKTtcbiAgICBjb25zdCBvcmRlcklkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJvcmRlcklkXCIpO1xuICAgIGNvbnN0IGFwcG9pbnRtZW50UGF5bWVudElkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJhcHBvaW50bWVudFBheW1lbnRJZFwiKTtcbiAgICBjb25zb2xlLmxvZygnY2FsbGluZyB2ZXJpZnkgcGF5bWVudCcpO1xuICAgIGlmIChwYXNzQm9va09yZGVySWQpIHtcbiAgICAgIHRoaXMuY2hlY2tQYXNzYm9va1BheW1lbnRTdGF0dXMoKTtcbiAgICB9XG4gICAgZWxzZSBpZiAob3JkZXJJZCkge1xuICAgICAgdGhpcy5jaGVja1BheW1lbnRTdGF0dXMoKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoYXBwb2ludG1lbnRQYXltZW50SWQpIHtcbiAgICAgIHRoaXMuY2hlY2tBcHBvaW50bWVudFBheW1lbnRTdGF0dXMoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgZ2V0SW1hZ2VVcmwoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudD8uaW1hZ2U/LnVybDtcbiAgfVxuICBnZXQgaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoIDwgNDc1O1xuICB9XG5cbiAgcHVibGljIGNoZWNrUGF5bWVudFN0YXR1cygpIHtcbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgXCJvcmRlcklkXCI6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwib3JkZXJJZFwiKVxuICAgIH1cbiAgICB0aGlzLkFQSV9DT1VOVCsrO1xuICAgIHRoaXMucmVzdFNlcnZpY2UuY2hlY2tQYXltZW50U3RhdHVzKHBheWxvYWQpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFwib3JkZXJJZFwiKTtcbiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFwiY2FydElkXCIpO1xuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJwYXltZW50Rm9yXCIpO1xuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5jbGVhclVzZXJDYXJ0KCk7XG4gICAgICB0aGlzLnBheW1lbnRTdGF0dXMgPSAnU1VDQ0VTUydcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3Byb2ZpbGUnXSk7XG4gICAgICB9LCAzMDAwKTtcbiAgICAgIC8vIFN3YWwuZmlyZSh7XG4gICAgICAvLyAgIGljb246IFwic3VjY2Vzc1wiLFxuICAgICAgLy8gICB0aXRsZTogXCJIdXJyYXlcIixcbiAgICAgIC8vICAgdGV4dDogXCJPcmRlciBwbGFjZWQgc3VjY2Vzc2Z1bGx5XCIsXG4gICAgICAvLyAgIGNvbmZpcm1CdXR0b25UZXh0OiBcIlNlZSBEZXRhaWxzXCJcbiAgICAgIC8vIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAvLyAgIGlmIChyZXNwb25zZS5pc0NvbmZpcm1lZCkge1xuICAgICAgLy8gICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3Byb2ZpbGUnXSk7XG4gICAgICAvLyAgIH1cbiAgICAgIC8vIH0pXG4gICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICBpZiAodGhpcy5BUElfQ09VTlQgPj0gdGhpcy5NQVhfQVBJX0NPVU5UKSB7XG4gICAgICAgIHRoaXMucGF5bWVudFN0YXR1cyA9ICdGQUlMRUQnXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLyddKTtcbiAgICAgICAgfSwgMzAwMCk7XG4gICAgICAgIC8vIFN3YWwuZmlyZSh7XG4gICAgICAgIC8vICAgaWNvbjogXCJlcnJvclwiLFxuICAgICAgICAvLyAgIHRpdGxlOiBcIlNvcnJ5XCIsXG4gICAgICAgIC8vICAgdGV4dDogXCJXZSBlbmNvdW50ZXJlZCBzb21lIGlzc3VlIHdoaWxlIHBsYWNpbmcgeW91ciBvcmRlclwiLFxuICAgICAgICAvLyAgIGNvbmZpcm1CdXR0b25UZXh0OiBcIkdvIFRvIEhvbWVcIlxuICAgICAgICAvLyB9KS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAvLyAgIGlmIChyZXNwb25zZS5pc0NvbmZpcm1lZCkge1xuICAgICAgICAvLyAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvJ10pO1xuICAgICAgICAvLyAgIH1cbiAgICAgICAgLy8gfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2hlY2tQYXltZW50U3RhdHVzKCk7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuICBwdWJsaWMgY2hlY2tQYXNzYm9va1BheW1lbnRTdGF0dXMoKSB7XG4gICAgY29uc3Qgb3JkZXJJZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwicGFzc2Jvb2tPcmRlcklkXCIpXG4gICAgdGhpcy5QQVNTQk9PS19BUElfQ09VTlQrKztcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFBhc3Nib29rT3JkZXJTdGF0dXMob3JkZXJJZCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJwYXNzYm9va09yZGVySWRcIik7XG4gICAgICB0aGlzLnBheW1lbnRTdGF0dXMgPSAnU1VDQ0VTUydcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3Byb2ZpbGUnXSk7XG4gICAgICB9LCAzMDAwKTtcbiAgICAgIC8vIFN3YWwuZmlyZSh7XG4gICAgICAvLyAgIGljb246IFwic3VjY2Vzc1wiLFxuICAgICAgLy8gICB0aXRsZTogXCJIdXJyYXlcIixcbiAgICAgIC8vICAgdGV4dDogXCJQYXltZW50IFN1Y2Nlc3NmdWxcIixcbiAgICAgIC8vICAgY29uZmlybUJ1dHRvblRleHQ6IFwiU2VlIERldGFpbHNcIlxuICAgICAgLy8gfSkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgIC8vICAgaWYgKHJlc3BvbnNlLmlzQ29uZmlybWVkKSB7XG4gICAgICAvLyAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcHJvZmlsZSddLCB7cXVlcnlQYXJhbXM6IHt0YWI6ICdTY2hlbWUgUGFzc2Jvb2snfX0pO1xuICAgICAgLy8gICB9XG4gICAgICAvLyB9KVxuXG4gICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICBpZiAodGhpcy5QQVNTQk9PS19BUElfQ09VTlQgPj0gdGhpcy5NQVhfUEFTU0JPT0tfQVBJX0NPVU5UKSB7XG4gICAgICAgIC8vIFN3YWwuZmlyZSh7XG4gICAgICAgIC8vICAgaWNvbjogXCJlcnJvclwiLFxuICAgICAgICAvLyAgIHRpdGxlOiBcIlNvcnJ5XCIsXG4gICAgICAgIC8vICAgdGV4dDogXCJXZSBlbmNvdW50ZXJlZCBzb21lIGlzc3VlIHdoaWxlIHBsYWNpbmcgeW91ciBvcmRlclwiLFxuICAgICAgICAvLyAgIGNvbmZpcm1CdXR0b25UZXh0OiBcIkdvIFRvIEhvbWVcIlxuICAgICAgICAvLyB9KS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAvLyAgIGlmIChyZXNwb25zZS5pc0NvbmZpcm1lZCkge1xuICAgICAgICAvLyAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvJ10pO1xuICAgICAgICAvLyAgIH1cbiAgICAgICAgLy8gfSlcbiAgICAgICAgdGhpcy5wYXltZW50U3RhdHVzID0gJ0ZBSUxFRCdcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvJ10pO1xuICAgICAgICB9LCAzMDAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2hlY2tQYXNzYm9va1BheW1lbnRTdGF0dXMoKTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG4gIHB1YmxpYyBjaGVja0FwcG9pbnRtZW50UGF5bWVudFN0YXR1cygpIHtcbiAgICBjb25zdCBvcmRlcklkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJhcHBvaW50bWVudFBheW1lbnRJZFwiKVxuICAgIHRoaXMuQVBQT0lOVE1FTlRfQVBJX0NPVU5UKys7XG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRBcHBvaW50bWVudFBheW1lbnRTdGF0dXMob3JkZXJJZCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJhcHBvaW50bWVudFBheW1lbnRJZFwiKTtcbiAgICAgIHRoaXMucGF5bWVudFN0YXR1cyA9ICdTVUNDRVNTJ1xuXG4gICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8vICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcHJvZmlsZSddKTtcbiAgICAgIC8vIH0sIDMwMDApO1xuICAgICAgLy8gU3dhbC5maXJlKHtcbiAgICAgIC8vICAgaWNvbjogXCJzdWNjZXNzXCIsXG4gICAgICAvLyAgIHRpdGxlOiBcIkh1cnJheVwiLFxuICAgICAgLy8gICB0ZXh0OiBcIlBheW1lbnQgU3VjY2Vzc2Z1bFwiLFxuICAgICAgLy8gICBjb25maXJtQnV0dG9uVGV4dDogXCJTZWUgRGV0YWlsc1wiXG4gICAgICAvLyB9KS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgLy8gICBpZiAocmVzcG9uc2UuaXNDb25maXJtZWQpIHtcbiAgICAgIC8vICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9wcm9maWxlJ10sIHtxdWVyeVBhcmFtczoge3RhYjogJ1NjaGVtZSBQYXNzYm9vayd9fSk7XG4gICAgICAvLyAgIH1cbiAgICAgIC8vIH0pXG5cbiAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgIGlmICh0aGlzLkFQUE9JTlRNRU5UX0FQSV9DT1VOVCA+PSB0aGlzLk1BWF9BUElfQ09VTlQpIHtcbiAgICAgICAgLy8gU3dhbC5maXJlKHtcbiAgICAgICAgLy8gICBpY29uOiBcImVycm9yXCIsXG4gICAgICAgIC8vICAgdGl0bGU6IFwiU29ycnlcIixcbiAgICAgICAgLy8gICB0ZXh0OiBcIldlIGVuY291bnRlcmVkIHNvbWUgaXNzdWUgd2hpbGUgcGxhY2luZyB5b3VyIG9yZGVyXCIsXG4gICAgICAgIC8vICAgY29uZmlybUJ1dHRvblRleHQ6IFwiR28gVG8gSG9tZVwiXG4gICAgICAgIC8vIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIC8vICAgaWYgKHJlc3BvbnNlLmlzQ29uZmlybWVkKSB7XG4gICAgICAgIC8vICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nXSk7XG4gICAgICAgIC8vICAgfVxuICAgICAgICAvLyB9KVxuICAgICAgICB0aGlzLnBheW1lbnRTdGF0dXMgPSAnRkFJTEVEJ1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nXSk7XG4gICAgICAgIH0sIDMwMDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jaGVja0FwcG9pbnRtZW50UGF5bWVudFN0YXR1cygpO1xuICAgICAgfVxuICAgIH0pXG4gIH1cbiAgZWRpdFNlY3Rpb24oKSB7XG5cbiAgICBpZiAod2luZG93LmlubmVyV2lkdGggPD0gNDc1KVxuICAgICAgcmV0dXJuO1xuXG4gICAgdGhpcy5fZXZlbnRTZXJ2aWNlLnRvZ2dsZUVkaXRvckV2ZW50LmVtaXQoZmFsc2UpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5fZXZlbnRTZXJ2aWNlLmVkaXRTZWN0aW9uLmVtaXQoeyBkYXRhOiB0aGlzLmRhdGEgfSk7XG4gICAgfSwgMTAwKTtcbiAgfVxufVxuIiwiPCEtLSA8cC10b2FzdCBwb3NpdGlvbj1cImJvdHRvbS1yaWdodFwiIFtiYXNlWkluZGV4XT1cIjEwMDAwMDAwMDAwXCIgW2F1dG9aSW5kZXhdPVwidHJ1ZVwiIFtzaG93VHJhbnNmb3JtT3B0aW9uc109XCJpc01vYmlsZSA/ICd0cmFuc2xhdGVZKC0xMDAlKScgOiAnJ1wiPjwvcC10b2FzdD5cbjxzZWN0aW9uIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHRvdGFsLWNvbnRhaW5lclwiIHN0eWxlPVwiaGVpZ2h0OiAxMDB2aDtcIiBbc2ltcG9CYWNrZ3JvdW5kXT1cInN0eWxlcz8uYmFja2dyb3VuZFwiIHNpbXBvSG92ZXIgKGhvdmVyaW5nKT1cInNob3dFZGl0VGFicygkZXZlbnQpXCIgW2F0dHIuc3R5bGVdPVwiY3VzdG9tQ2xhc3NcIj5cbiAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgb25lcnJvcj1cInRoaXMuc3JjPSdodHRwczovL2kucG9zdGltZy5jYy9oUFMySnBWMC9uby1pbWFnZS1hdmFpbGFibGUuanBnJ1wiICAgW3NyY109XCJnZXRJbWFnZVVybFwiIHN0eWxlPVwiaGVpZ2h0OiAyMDBweDsgd2lkdGg6IDIwMHB4O1wiIFthbHRdPVwiY29udGVudD8uaW1hZ2U/LmFsdFRleHRcIj5cbiAgICA8c3BhbiBjbGFzcz1cImZvbnQtYm9sZFwiPnt7bG9hZGluZ1RleHR9fTwvc3Bhbj5cblxuICAgIDxkaXYgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBlZGl0fVwiICpuZ0lmPVwic2hvd0VkaXRvcnNcIj5cbiAgICAgIDxzaW1wby1ob3Zlci1lbGVtZW50cyBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCIgW2VkaXRPcHRpb25zXT1cImVkaXRcIiBbaXNFY29tbWVyY2VdPVwidHJ1ZVwiPjwvc2ltcG8taG92ZXItZWxlbWVudHM+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInNob3dEZWxldGVcIiBbbmdDbGFzc109XCJ7J2hvdmVyX2VmZmVjdCc6IGRlbGV0ZX1cIj5cbiAgICAgIDxzaW1wby1kZWxldGUtaG92ZXItZWxlbWVudCBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCI+PC9zaW1wby1kZWxldGUtaG92ZXItZWxlbWVudD5cbiAgPC9kaXY+XG48L3NlY3Rpb24+IC0tPlxuPHNlY3Rpb24gKm5nSWY9XCJwYXltZW50U3RhdHVzID09PSAnU1VDQ0VTUydcIiBjbGFzcz1cIm1haW5fc2VjdGlvblwiPlxuICA8ZGl2IGNsYXNzPVwiaW1hZ2Vfc2VjdGlvblwiPlxuICAgIDxpbWcgYWx0PVwibG9hZGVyXCIgc3JjPVwiaHR0cHM6Ly9kMno5NDk3eHA4eGIxMi5jbG91ZGZyb250Lm5ldC9wcm9kLWltYWdlcy82ODg5OTZjMTc1NTkzNDkwODUyNzk2MjM3LXN1Y2Nlc3MuZ2lmXCI+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic3VjY2Vzc19oZWFkaW5nIGhlYWRpbmdcIj5cbiAgICBQYXltZW50IFN1Y2Nlc3NmdWxsXG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicGF5bWVudF9zdWJfdGV4dFwiPlxuICAgIFlvdXIgcGF5bWVudCBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgcHJvY2Vzc2VkLlxuICA8L2Rpdj5cbiAgPCEtLSA8ZGl2IGNsYXNzPVwicGxhbl9kZXNjcmlwdGlvblwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0aXRsZV92YWx1ZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBsYW5fdGl0bGVcIj5cbiAgICAgICAgU3Vic2NyaWJlZCBQbGFuXG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwbGFuX3ZhbHVlXCI+XG4gICAgICAgIHt7IHBsYW5OYW1lIHwgdGl0bGVjYXNlIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwidGl0bGVfdmFsdWVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwbGFuX3RpdGxlXCI+XG4gICAgICAgIEFtb3VudCBQYWlkXG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwbGFuX3ZhbHVlXCI+XG4gICAgICAgIDxzcGFuPuKCuTwvc3Bhbj48c3Bhbj57eyBwbGFuQW1vdW50IH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInRpdGxlX3ZhbHVlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicGxhbl90aXRsZVwiPlxuICAgICAgICBWYWxpZCB0aWxsXG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwbGFuX3ZhbHVlXCI+XG4gICAgICAgIHt7IHZhbGlkaXR5IHwgZGF0ZSB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PiAtLT5cbjwvc2VjdGlvbj5cbjxzZWN0aW9uICpuZ0lmPVwicGF5bWVudFN0YXR1cyA9PT0gJ0ZBSUxFRCdcIiBjbGFzcz1cIm1haW5fc2VjdGlvblwiPlxuICA8ZGl2IGNsYXNzPVwiaW1hZ2Vfc2VjdGlvblwiPlxuICAgIDxpbWcgYWx0PVwibG9hZGVyXCIgc3JjPVwiaHR0cHM6Ly9kMno5NDk3eHA4eGIxMi5jbG91ZGZyb250Lm5ldC9wcm9kLWltYWdlcy82NjM4NzhjMTc1NTkzNDkzMjU3M3BheW1lbnRmYWlsZWQuZ2lmXCI+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic3VjY2Vzc19oZWFkaW5nIGhlYWRpbmdcIj5cbiAgICBQYXltZW50IEZhaWxlZFxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInBheW1lbnRfc3ViX3RleHRcIj5cbiAgICBVbmZvcnR1bmF0ZWx5IFBheW1lbnQgd2FzIHJlamVjdGVkXG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicGF5bWVudF9taW5pbWFsX3RleHRcIj5cbiAgICBQYWdlIHdpbGwgYmUgYXV0b21hdGljYWxseSByZWRpcmVjdCB0byBob21lcGFnZVxuICA8L2Rpdj5cbiAgPCEtLSA8ZGl2IGNsYXNzPVwicGxhbl9kZXNjcmlwdGlvblwiPlxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZG9uZSgpXCI+RG9uZTwvYnV0dG9uPlxuICA8L2Rpdj4gLS0+XG48L3NlY3Rpb24+XG5cbjxzZWN0aW9uICpuZ0lmPVwicGF5bWVudFN0YXR1cyA9PT0gJ09OR09JTkcnXCIgY2xhc3M9XCJtYWluX3NlY3Rpb24gc3Bpbm5lclwiPlxuICA8ZGl2IGNsYXNzPVwicGF5bWVudC1vbmdvaW5nXCI+XG4gICAgPG1hdC1zcGlubmVyIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+PC9tYXQtc3Bpbm5lcj5cbiAgICA8cD57e2xvYWRpbmdUZXh0fX08L3A+XG4gIDwvZGl2PlxuPC9zZWN0aW9uPlxuIl19
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZ5LXBheW1lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvdmVyaWZ5LXBheW1lbnQvdmVyaWZ5LXBheW1lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvdmVyaWZ5LXBheW1lbnQvdmVyaWZ5LXBheW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFPekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRTlFLE9BQU8sV0FBVyxNQUFNLCtCQUErQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUNyRyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQztBQUN0SCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7OztBQWtCOUUsTUFBTSxPQUFPLGVBQWdCLFNBQVEsV0FBVztJQWE5QyxZQUNtQixXQUF3QixFQUN4QixNQUFjLEVBQ2QsY0FBcUMsRUFDckMsY0FBOEIsRUFDOUIsYUFBNEI7UUFFN0MsS0FBSyxFQUFFLENBQUM7UUFOUyxnQkFBVyxHQUFYLFdB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R0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDOUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ1gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1lBQ3ZDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDRCxXQUFXO1FBRVQsSUFBSSxNQUFNLENBQUMsVUFBVSxJQUFJLEdBQUc7WUFDMUIsT0FBTztRQUVULElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0QsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQzsrR0E1TVUsZUFBZTttR0FBZixlQUFlLHVNQUpmLENBQUMsY0FBYyxDQUFDLGlEQzlCN0IsNjdGQXlFQSx3K0JEakRJLFdBQVcsOEJBQ1gsWUFBWSxrSUFHWix3QkFBd0I7OzRGQU1mLGVBQWU7a0JBaEIzQixTQUFTOytCQUNFLHNCQUFzQixjQUNwQixJQUFJLFdBQ1A7d0JBQ1AsbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLFdBQVc7d0JBQ1gsWUFBWTt3QkFDWixzQkFBc0I7d0JBQ3RCLDJCQUEyQjt3QkFDM0Isd0JBQXdCO3FCQUN6QixhQUNVLENBQUMsY0FBYyxDQUFDO2tNQU1sQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3Jlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFZlcmlmeVBheW1lbnRDb250ZW50TW9kZWwsIFZlcmlmeVBheW1lbnRTZWN0aW9uTW9kYWwsIFZlcmlmeVBheW1lbnRTdHlsZXNNb2RlbCB9IGZyb20gJy4vdmVyaWZ5LXBheW1lbnQubW9kZWwnO1xuaW1wb3J0IFN3YWwgZnJvbSAnc3dlZXRhbGVydDInO1xuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4uLy4uL3N0eWxlcy91c2VyLm1vZGFsJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgVG9hc3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RvYXN0JztcbmltcG9ydCB7IEJhY2tncm91bmREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYmFja2dyb3VuZC1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlJztcbmltcG9ydCBCYXNlU2VjdGlvbiBmcm9tICcuLi8uLi8uLi9zZWN0aW9ucy9CYXNlU2VjdGlvbic7XG5pbXBvcnQgeyBIb3ZlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9ob3Zlci1lbGVtZW50LWRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBIb3ZlckVsZW1lbnRzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9ob3Zlci1lbGVtZW50cy9ob3Zlci1lbGVtZW50cy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGVsZXRlSG92ZXJFbGVtZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9kZWxldGUtaG92ZXItZWxlbWVudC9kZWxldGUtaG92ZXItZWxlbWVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzaW1wby12ZXJpZnktcGF5bWVudCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBCYWNrZ3JvdW5kRGlyZWN0aXZlLFxuICAgIEhvdmVyRGlyZWN0aXZlLFxuICAgIFRvYXN0TW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBIb3ZlckVsZW1lbnRzQ29tcG9uZW50LFxuICAgIERlbGV0ZUhvdmVyRWxlbWVudENvbXBvbmVudCxcbiAgICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGVcbiAgXSxcbiAgcHJvdmlkZXJzOiBbTWVzc2FnZVNlcnZpY2VdLFxuICB0ZW1wbGF0ZVVybDogJy4vdmVyaWZ5LXBheW1lbnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vdmVyaWZ5LXBheW1lbnQuY29tcG9uZW50LmNzcydcbn0pXG5leHBvcnQgY2xhc3MgVmVyaWZ5Q29tcG9uZW50IGV4dGVuZHMgQmFzZVNlY3Rpb24gaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIGRhdGE/OiBWZXJpZnlQYXltZW50U2VjdGlvbk1vZGFsO1xuICBASW5wdXQoKSByZXNwb25zZURhdGE6IGFueTtcbiAgQElucHV0KCkgZWRpdD86IGJvb2xlYW47XG4gIEBJbnB1dCgpIGluZGV4PzogbnVtYmVyO1xuICBASW5wdXQoKSBkZWxldGU/OiBib29sZWFuO1xuICBASW5wdXQoKSBjdXN0b21DbGFzcz86IHN0cmluZztcbiAgc3R5bGVzPzogVmVyaWZ5UGF5bWVudFN0eWxlc01vZGVsO1xuICBjb250ZW50PzogVmVyaWZ5UGF5bWVudENvbnRlbnRNb2RlbDtcbiAgcHJpdmF0ZSB1c2VyRGV0YWlsczogVXNlciB8IG51bGwgPSBudWxsO1xuICBwYXltZW50U3RhdHVzOiAnU1VDQ0VTUycgfCAnRkFJTEVEJyB8ICdPTkdPSU5HJyA9ICdPTkdPSU5HJ1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2V2ZW50U2VydmljZTogRXZlbnRzU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIGxvYWRpbmdUZXh0OiBzdHJpbmcgPSBcIlBsZWFzZSB3YWl0Li4uXCI7XG4gIHByaXZhdGUgQVBJX0NPVU5UOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIE1BWF9BUElfQ09VTlQ6IG51bWJlciA9IDIwO1xuICBwcml2YXRlIFBBU1NCT09LX0FQSV9DT1VOVDogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBBUFBPSU5UTUVOVF9BUElfQ09VTlQ6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgTUFYX1BBU1NCT09LX0FQSV9DT1VOVCA9IDIwO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY29udGVudCA9IHRoaXMuZGF0YT8uY29udGVudDtcbiAgICB0aGlzLnN0eWxlcyA9IHRoaXMuZGF0YT8uc3R5bGVzO1xuXG4gICAgdGhpcy51c2VyRGV0YWlscyA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpIGFzIFVzZXI7XG4gICAgaWYgKCF0aGlzLnVzZXJEZXRhaWxzICYmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIlJFUVVFU1RfRlJPTVwiKSA9PSBcIlVTRVJcIikpIHtcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdlcnJvcicsIHN1bW1hcnk6ICdFcnJvcicsIGRldGFpbDogJ1BsZWFzZSBsb2dpbiB0byBhY2Nlc3MgcHJvZmlsZScgfSk7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nXSk7XG4gICAgfVxuXG4gICAgLy8gaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiUkVRVUVTVF9GUk9NXCIpID09IFwiRUNPTU1FUkNFXCIpXG4gICAgLy8gICByZXR1cm47XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubG9hZGluZ1RleHQgPSAnVGhhbmtzIGZvciBjaG9vc2luZyB1cyc7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nVGV4dCA9ICdXZSBhcmUgcHJvY2Vzc2luZyB5b3VyIHBheW1lbnRzJztcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nVGV4dCA9ICdIb2xkIE9uLi4uJztcbiAgICAgICAgfSwgMzAwMCk7XG4gICAgICB9LCAzMDAwKTtcbiAgICB9LCAzMDAwKTtcblxuICAgIGNvbnN0IHBhc3NCb29rT3JkZXJJZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwicGFzc2Jvb2tPcmRlcklkXCIpO1xuICAgIGNvbnN0IG9yZGVySWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIm9yZGVySWRcIik7XG4gICAgY29uc3QgYXBwb2ludG1lbnRQYXltZW50SWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImFwcG9pbnRtZW50UGF5bWVudElkXCIpO1xuICAgIGNvbnNvbGUubG9nKCdjYWxsaW5nIHZlcmlmeSBwYXltZW50Jyk7XG4gICAgaWYgKHBhc3NCb29rT3JkZXJJZCkge1xuICAgICAgdGhpcy5jaGVja1Bhc3Nib29rUGF5bWVudFN0YXR1cygpO1xuICAgIH1cbiAgICBlbHNlIGlmIChvcmRlcklkKSB7XG4gICAgICB0aGlzLmNoZWNrUGF5bWVudFN0YXR1cygpO1xuICAgIH1cbiAgICBlbHNlIGlmIChhcHBvaW50bWVudFBheW1lbnRJZCkge1xuICAgICAgdGhpcy5jaGVja0FwcG9pbnRtZW50UGF5bWVudFN0YXR1cygpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBnZXRJbWFnZVVybCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZW50Py5pbWFnZT8udXJsO1xuICB9XG4gIGdldCBpc01vYmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gd2luZG93LmlubmVyV2lkdGggPCA0NzU7XG4gIH1cblxuICBwdWJsaWMgY2hlY2tQYXltZW50U3RhdHVzKCkge1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBcIm9yZGVySWRcIjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJvcmRlcklkXCIpXG4gICAgfVxuICAgIHRoaXMuQVBJX0NPVU5UKys7XG4gICAgdGhpcy5yZXN0U2VydmljZS5jaGVja1BheW1lbnRTdGF0dXMocGF5bG9hZCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJvcmRlcklkXCIpO1xuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJjYXJ0SWRcIik7XG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcInBheW1lbnRGb3JcIik7XG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmNsZWFyVXNlckNhcnQoKTtcbiAgICAgIHRoaXMucGF5bWVudFN0YXR1cyA9ICdTVUNDRVNTJ1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcHJvZmlsZSddKTtcbiAgICAgIH0sIDMwMDApO1xuICAgICAgLy8gU3dhbC5maXJlKHtcbiAgICAgIC8vICAgaWNvbjogXCJzdWNjZXNzXCIsXG4gICAgICAvLyAgIHRpdGxlOiBcIkh1cnJheVwiLFxuICAgICAgLy8gICB0ZXh0OiBcIk9yZGVyIHBsYWNlZCBzdWNjZXNzZnVsbHlcIixcbiAgICAgIC8vICAgY29uZmlybUJ1dHRvblRleHQ6IFwiU2VlIERldGFpbHNcIlxuICAgICAgLy8gfSkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgIC8vICAgaWYgKHJlc3BvbnNlLmlzQ29uZmlybWVkKSB7XG4gICAgICAvLyAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcHJvZmlsZSddKTtcbiAgICAgIC8vICAgfVxuICAgICAgLy8gfSlcbiAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgIGlmICh0aGlzLkFQSV9DT1VOVCA+PSB0aGlzLk1BWF9BUElfQ09VTlQpIHtcbiAgICAgICAgdGhpcy5wYXltZW50U3RhdHVzID0gJ0ZBSUxFRCdcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvJ10pO1xuICAgICAgICB9LCAzMDAwKTtcbiAgICAgICAgLy8gU3dhbC5maXJlKHtcbiAgICAgICAgLy8gICBpY29uOiBcImVycm9yXCIsXG4gICAgICAgIC8vICAgdGl0bGU6IFwiU29ycnlcIixcbiAgICAgICAgLy8gICB0ZXh0OiBcIldlIGVuY291bnRlcmVkIHNvbWUgaXNzdWUgd2hpbGUgcGxhY2luZyB5b3VyIG9yZGVyXCIsXG4gICAgICAgIC8vICAgY29uZmlybUJ1dHRvblRleHQ6IFwiR28gVG8gSG9tZVwiXG4gICAgICAgIC8vIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIC8vICAgaWYgKHJlc3BvbnNlLmlzQ29uZmlybWVkKSB7XG4gICAgICAgIC8vICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nXSk7XG4gICAgICAgIC8vICAgfVxuICAgICAgICAvLyB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jaGVja1BheW1lbnRTdGF0dXMoKTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG4gIHB1YmxpYyBjaGVja1Bhc3Nib29rUGF5bWVudFN0YXR1cygpIHtcbiAgICBjb25zdCBvcmRlcklkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJwYXNzYm9va09yZGVySWRcIilcbiAgICB0aGlzLlBBU1NCT09LX0FQSV9DT1VOVCsrO1xuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0UGFzc2Jvb2tPcmRlclN0YXR1cyhvcmRlcklkKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcInBhc3Nib29rT3JkZXJJZFwiKTtcbiAgICAgIHRoaXMucGF5bWVudFN0YXR1cyA9ICdTVUNDRVNTJ1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcHJvZmlsZSddKTtcbiAgICAgIH0sIDMwMDApO1xuICAgICAgLy8gU3dhbC5maXJlKHtcbiAgICAgIC8vICAgaWNvbjogXCJzdWNjZXNzXCIsXG4gICAgICAvLyAgIHRpdGxlOiBcIkh1cnJheVwiLFxuICAgICAgLy8gICB0ZXh0OiBcIlBheW1lbnQgU3VjY2Vzc2Z1bFwiLFxuICAgICAgLy8gICBjb25maXJtQnV0dG9uVGV4dDogXCJTZWUgRGV0YWlsc1wiXG4gICAgICAvLyB9KS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgLy8gICBpZiAocmVzcG9uc2UuaXNDb25maXJtZWQpIHtcbiAgICAgIC8vICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9wcm9maWxlJ10sIHtxdWVyeVBhcmFtczoge3RhYjogJ1NjaGVtZSBQYXNzYm9vayd9fSk7XG4gICAgICAvLyAgIH1cbiAgICAgIC8vIH0pXG5cbiAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgIGlmICh0aGlzLlBBU1NCT09LX0FQSV9DT1VOVCA+PSB0aGlzLk1BWF9QQVNTQk9PS19BUElfQ09VTlQpIHtcbiAgICAgICAgLy8gU3dhbC5maXJlKHtcbiAgICAgICAgLy8gICBpY29uOiBcImVycm9yXCIsXG4gICAgICAgIC8vICAgdGl0bGU6IFwiU29ycnlcIixcbiAgICAgICAgLy8gICB0ZXh0OiBcIldlIGVuY291bnRlcmVkIHNvbWUgaXNzdWUgd2hpbGUgcGxhY2luZyB5b3VyIG9yZGVyXCIsXG4gICAgICAgIC8vICAgY29uZmlybUJ1dHRvblRleHQ6IFwiR28gVG8gSG9tZVwiXG4gICAgICAgIC8vIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIC8vICAgaWYgKHJlc3BvbnNlLmlzQ29uZmlybWVkKSB7XG4gICAgICAgIC8vICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nXSk7XG4gICAgICAgIC8vICAgfVxuICAgICAgICAvLyB9KVxuICAgICAgICB0aGlzLnBheW1lbnRTdGF0dXMgPSAnRkFJTEVEJ1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nXSk7XG4gICAgICAgIH0sIDMwMDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jaGVja1Bhc3Nib29rUGF5bWVudFN0YXR1cygpO1xuICAgICAgfVxuICAgIH0pXG4gIH1cbiAgcHVibGljIGNoZWNrQXBwb2ludG1lbnRQYXltZW50U3RhdHVzKCkge1xuICAgIGNvbnN0IG9yZGVySWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImFwcG9pbnRtZW50UGF5bWVudElkXCIpXG4gICAgdGhpcy5BUFBPSU5UTUVOVF9BUElfQ09VTlQrKztcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldEFwcG9pbnRtZW50UGF5bWVudFN0YXR1cyhvcmRlcklkKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcImFwcG9pbnRtZW50UGF5bWVudElkXCIpO1xuICAgICAgdGhpcy5wYXltZW50U3RhdHVzID0gJ1NVQ0NFU1MnXG5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9wcm9maWxlJ10pO1xuICAgICAgfSwgMzAwMCk7XG5cbiAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgIGlmICh0aGlzLkFQUE9JTlRNRU5UX0FQSV9DT1VOVCA+PSB0aGlzLk1BWF9BUElfQ09VTlQpIHtcbiAgICAgICAgLy8gU3dhbC5maXJlKHtcbiAgICAgICAgLy8gICBpY29uOiBcImVycm9yXCIsXG4gICAgICAgIC8vICAgdGl0bGU6IFwiU29ycnlcIixcbiAgICAgICAgLy8gICB0ZXh0OiBcIldlIGVuY291bnRlcmVkIHNvbWUgaXNzdWUgd2hpbGUgcGxhY2luZyB5b3VyIG9yZGVyXCIsXG4gICAgICAgIC8vICAgY29uZmlybUJ1dHRvblRleHQ6IFwiR28gVG8gSG9tZVwiXG4gICAgICAgIC8vIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIC8vICAgaWYgKHJlc3BvbnNlLmlzQ29uZmlybWVkKSB7XG4gICAgICAgIC8vICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nXSk7XG4gICAgICAgIC8vICAgfVxuICAgICAgICAvLyB9KVxuICAgICAgICB0aGlzLnBheW1lbnRTdGF0dXMgPSAnRkFJTEVEJ1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nXSk7XG4gICAgICAgIH0sIDMwMDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jaGVja0FwcG9pbnRtZW50UGF5bWVudFN0YXR1cygpO1xuICAgICAgfVxuICAgIH0pXG4gIH1cbiAgZWRpdFNlY3Rpb24oKSB7XG5cbiAgICBpZiAod2luZG93LmlubmVyV2lkdGggPD0gNDc1KVxuICAgICAgcmV0dXJuO1xuXG4gICAgdGhpcy5fZXZlbnRTZXJ2aWNlLnRvZ2dsZUVkaXRvckV2ZW50LmVtaXQoZmFsc2UpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5fZXZlbnRTZXJ2aWNlLmVkaXRTZWN0aW9uLmVtaXQoeyBkYXRhOiB0aGlzLmRhdGEgfSk7XG4gICAgfSwgMTAwKTtcbiAgfVxufVxuIiwiPCEtLSA8cC10b2FzdCBwb3NpdGlvbj1cImJvdHRvbS1yaWdodFwiIFtiYXNlWkluZGV4XT1cIjEwMDAwMDAwMDAwXCIgW2F1dG9aSW5kZXhdPVwidHJ1ZVwiIFtzaG93VHJhbnNmb3JtT3B0aW9uc109XCJpc01vYmlsZSA/ICd0cmFuc2xhdGVZKC0xMDAlKScgOiAnJ1wiPjwvcC10b2FzdD5cbjxzZWN0aW9uIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHRvdGFsLWNvbnRhaW5lclwiIHN0eWxlPVwiaGVpZ2h0OiAxMDB2aDtcIiBbc2ltcG9CYWNrZ3JvdW5kXT1cInN0eWxlcz8uYmFja2dyb3VuZFwiIHNpbXBvSG92ZXIgKGhvdmVyaW5nKT1cInNob3dFZGl0VGFicygkZXZlbnQpXCIgW2F0dHIuc3R5bGVdPVwiY3VzdG9tQ2xhc3NcIj5cbiAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgb25lcnJvcj1cInRoaXMuc3JjPSdodHRwczovL2kucG9zdGltZy5jYy9oUFMySnBWMC9uby1pbWFnZS1hdmFpbGFibGUuanBnJ1wiICAgW3NyY109XCJnZXRJbWFnZVVybFwiIHN0eWxlPVwiaGVpZ2h0OiAyMDBweDsgd2lkdGg6IDIwMHB4O1wiIFthbHRdPVwiY29udGVudD8uaW1hZ2U/LmFsdFRleHRcIj5cbiAgICA8c3BhbiBjbGFzcz1cImZvbnQtYm9sZFwiPnt7bG9hZGluZ1RleHR9fTwvc3Bhbj5cblxuICAgIDxkaXYgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBlZGl0fVwiICpuZ0lmPVwic2hvd0VkaXRvcnNcIj5cbiAgICAgIDxzaW1wby1ob3Zlci1lbGVtZW50cyBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCIgW2VkaXRPcHRpb25zXT1cImVkaXRcIiBbaXNFY29tbWVyY2VdPVwidHJ1ZVwiPjwvc2ltcG8taG92ZXItZWxlbWVudHM+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInNob3dEZWxldGVcIiBbbmdDbGFzc109XCJ7J2hvdmVyX2VmZmVjdCc6IGRlbGV0ZX1cIj5cbiAgICAgIDxzaW1wby1kZWxldGUtaG92ZXItZWxlbWVudCBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCI+PC9zaW1wby1kZWxldGUtaG92ZXItZWxlbWVudD5cbiAgPC9kaXY+XG48L3NlY3Rpb24+IC0tPlxuPHNlY3Rpb24gKm5nSWY9XCJwYXltZW50U3RhdHVzID09PSAnU1VDQ0VTUydcIiBjbGFzcz1cIm1haW5fc2VjdGlvblwiPlxuICA8ZGl2IGNsYXNzPVwiaW1hZ2Vfc2VjdGlvblwiPlxuICAgIDxpbWcgYWx0PVwibG9hZGVyXCIgc3JjPVwiaHR0cHM6Ly9kMno5NDk3eHA4eGIxMi5jbG91ZGZyb250Lm5ldC9wcm9kLWltYWdlcy82ODg5OTZjMTc1NTkzNDkwODUyNzk2MjM3LXN1Y2Nlc3MuZ2lmXCI+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic3VjY2Vzc19oZWFkaW5nIGhlYWRpbmdcIj5cbiAgICBQYXltZW50IFN1Y2Nlc3NmdWxsXG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicGF5bWVudF9zdWJfdGV4dFwiPlxuICAgIFlvdXIgcGF5bWVudCBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgcHJvY2Vzc2VkLlxuICA8L2Rpdj5cbiAgPCEtLSA8ZGl2IGNsYXNzPVwicGxhbl9kZXNjcmlwdGlvblwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0aXRsZV92YWx1ZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBsYW5fdGl0bGVcIj5cbiAgICAgICAgU3Vic2NyaWJlZCBQbGFuXG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwbGFuX3ZhbHVlXCI+XG4gICAgICAgIHt7IHBsYW5OYW1lIHwgdGl0bGVjYXNlIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwidGl0bGVfdmFsdWVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwbGFuX3RpdGxlXCI+XG4gICAgICAgIEFtb3VudCBQYWlkXG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwbGFuX3ZhbHVlXCI+XG4gICAgICAgIDxzcGFuPuKCuTwvc3Bhbj48c3Bhbj57eyBwbGFuQW1vdW50IH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInRpdGxlX3ZhbHVlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicGxhbl90aXRsZVwiPlxuICAgICAgICBWYWxpZCB0aWxsXG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwbGFuX3ZhbHVlXCI+XG4gICAgICAgIHt7IHZhbGlkaXR5IHwgZGF0ZSB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PiAtLT5cbjwvc2VjdGlvbj5cbjxzZWN0aW9uICpuZ0lmPVwicGF5bWVudFN0YXR1cyA9PT0gJ0ZBSUxFRCdcIiBjbGFzcz1cIm1haW5fc2VjdGlvblwiPlxuICA8ZGl2IGNsYXNzPVwiaW1hZ2Vfc2VjdGlvblwiPlxuICAgIDxpbWcgYWx0PVwibG9hZGVyXCIgc3JjPVwiaHR0cHM6Ly9kMno5NDk3eHA4eGIxMi5jbG91ZGZyb250Lm5ldC9wcm9kLWltYWdlcy82NjM4NzhjMTc1NTkzNDkzMjU3M3BheW1lbnRmYWlsZWQuZ2lmXCI+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic3VjY2Vzc19oZWFkaW5nIGhlYWRpbmdcIj5cbiAgICBQYXltZW50IEZhaWxlZFxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInBheW1lbnRfc3ViX3RleHRcIj5cbiAgICBVbmZvcnR1bmF0ZWx5IFBheW1lbnQgd2FzIHJlamVjdGVkXG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicGF5bWVudF9taW5pbWFsX3RleHRcIj5cbiAgICBQYWdlIHdpbGwgYmUgYXV0b21hdGljYWxseSByZWRpcmVjdCB0byBob21lcGFnZVxuICA8L2Rpdj5cbiAgPCEtLSA8ZGl2IGNsYXNzPVwicGxhbl9kZXNjcmlwdGlvblwiPlxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZG9uZSgpXCI+RG9uZTwvYnV0dG9uPlxuICA8L2Rpdj4gLS0+XG48L3NlY3Rpb24+XG5cbjxzZWN0aW9uICpuZ0lmPVwicGF5bWVudFN0YXR1cyA9PT0gJ09OR09JTkcnXCIgY2xhc3M9XCJtYWluX3NlY3Rpb24gc3Bpbm5lclwiPlxuICA8ZGl2IGNsYXNzPVwicGF5bWVudC1vbmdvaW5nXCI+XG4gICAgPG1hdC1zcGlubmVyIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+PC9tYXQtc3Bpbm5lcj5cbiAgICA8cD57e2xvYWRpbmdUZXh0fX08L3A+XG4gIDwvZGl2PlxuPC9zZWN0aW9uPlxuIl19
@@ -134,6 +134,9 @@ export class MyBookingsComponent {
134
134
  paidLabel(b) {
135
135
  return b.totalCollectedAtBooking && b.totalCollectedAtBooking > 0 ? `₹${b.totalCollectedAtBooking}` : 'Nothing — free';
136
136
  }
137
+ servicePriceTotal(b) {
138
+ return (b.services ?? []).reduce((sum, s) => sum + (s.price || 0), 0);
139
+ }
137
140
  totalDue(b) {
138
141
  return (b.totalPayable ?? 0) + (b.homeVisitCharge ?? 0);
139
142
  }
@@ -167,10 +170,10 @@ export class MyBookingsComponent {
167
170
  });
168
171
  }
169
172
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MyBookingsComponent, deps: [{ token: i1.RestService }, { token: i2.StorageServiceService }, { token: i3.MessageService }], target: i0.ɵɵFactoryTarget.Component }); }
170
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MyBookingsComponent, isStandalone: true, selector: "simpo-my-bookings", providers: [MessageService], ngImport: i0, template: "<p-toast position=\"bottom-right\"></p-toast>\n\n<div class=\"mb-root\">\n <ng-container *ngIf=\"currentTab === 'LIST'\">\n <div class=\"mb-title\">My Bookings</div>\n\n <div class=\"mb-tabs\">\n <button type=\"button\" class=\"mb-tab\" [class.active]=\"profTab === 'upcoming'\" (click)=\"setProfTab('upcoming')\">Upcoming</button>\n <button type=\"button\" class=\"mb-tab\" [class.active]=\"profTab === 'past'\" (click)=\"setProfTab('past')\">Past</button>\n </div>\n\n <div class=\"mb-loading\" *ngIf=\"loading\">Loading your bookings\u2026</div>\n\n <div class=\"mb-rows\" *ngIf=\"!loading && !isEmpty\">\n <button type=\"button\" class=\"mb-row\" *ngFor=\"let b of rows\" (click)=\"viewBookingDetail(b)\">\n <div class=\"mb-row-stripe\" [ngClass]=\"b.mode === 'HOME_VISIT' ? 'stripe-home' : b.mode === 'VIDEO_CALL' ? 'stripe-video' : 'stripe-store'\"></div>\n <div class=\"mb-row-info\">\n <div class=\"mb-row-top\">\n <div class=\"mb-row-title\">{{title(b)}}</div>\n </div>\n <div class=\"mb-row-when\">{{when(b)}}</div>\n <div class=\"mb-row-detail\">{{detail(b)}}</div>\n </div>\n <div class=\"mb-row-end\">\n <span class=\"mb-status\" [ngClass]=\"statusClass(b.status)\">{{statusLabel(b.status)}}</span>\n </div>\n </button>\n </div>\n\n <div class=\"mb-empty\" *ngIf=\"isEmpty\">\n <mat-icon class=\"mb-empty-icon\">event_busy</mat-icon>\n <div class=\"mb-empty-title\">No {{profTab}} bookings yet.</div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"currentTab === 'DETAIL' && selected\">\n <button type=\"button\" class=\"mb-back\" (click)=\"backToList()\">\n <mat-icon>arrow_back</mat-icon> Back to My Bookings\n </button>\n\n <div class=\"mb-detail-card\">\n <div class=\"mb-detail-header\">\n <div class=\"mb-detail-title-row\">\n <div class=\"mb-detail-title\">{{title(selected)}}</div>\n <span class=\"mb-status\" [ngClass]=\"statusClass(selected.status)\">{{statusLabel(selected.status)}}</span>\n </div>\n <div class=\"mb-detail-when\">{{when(selected)}}</div>\n </div>\n\n <div class=\"mb-detail-rows\">\n <div class=\"mb-detail-row\" *ngIf=\"selected.services?.length\">\n <div class=\"mb-detail-k\">Services</div>\n <div class=\"mb-detail-v\">{{serviceNames(selected)}}</div>\n </div>\n <div class=\"mb-detail-row\" *ngIf=\"selected.productLines?.length\">\n <div class=\"mb-detail-k\">Products</div>\n <div class=\"mb-detail-v\">{{productNames(selected)}}</div>\n </div>\n <div class=\"mb-detail-row\" *ngIf=\"selected.customerDetail\">\n <div class=\"mb-detail-k\">Contact</div>\n <div class=\"mb-detail-v\">{{selected.customerDetail?.name}} \u00B7 {{selected.customerDetail?.phoneNumber}} \u00B7 {{selected.customerDetail?.email}}</div>\n </div>\n <div class=\"mb-detail-row\" *ngIf=\"selected.mode === 'HOME_VISIT' && selected.addressDetails\">\n <div class=\"mb-detail-k\">Address</div>\n <div class=\"mb-detail-v\">{{selected.addressDetails?.addressLine1}}, {{selected.addressDetails?.city}}, {{selected.addressDetails?.state}} {{selected.addressDetails?.zipCode}}</div>\n </div>\n <div class=\"mb-detail-row\">\n <div class=\"mb-detail-k\">Total</div>\n <div class=\"mb-detail-v\">\u20B9{{totalDue(selected)}}</div>\n </div>\n <div class=\"mb-detail-row\">\n <div class=\"mb-detail-k\">Paid</div>\n <div class=\"mb-detail-v\">{{paidLabel(selected)}}</div>\n </div>\n <div class=\"mb-detail-row\" *ngIf=\"pendingAmount(selected) > 0\">\n <div class=\"mb-detail-k\">Pending at appointment</div>\n <div class=\"mb-detail-v\">\u20B9{{pendingAmount(selected)}}</div>\n </div>\n </div>\n\n <div class=\"mb-video-link\" *ngIf=\"selected.mode === 'VIDEO_CALL' && selected.videoCallLink && selected.status !== 'CANCELLED'\">\n <mat-icon>videocam</mat-icon>\n <a [href]=\"selected.videoCallLink\" target=\"_blank\">{{selected.videoCallLink}}</a>\n </div>\n\n <ng-container *ngIf=\"canCancelSelected\">\n <div class=\"mb-policy\" *ngIf=\"cancellationPolicy\">\n <div class=\"mb-policy-title\">{{cancellationPolicy.title}}</div>\n <div class=\"mb-policy-text\">{{cancellationPolicy.policyDetails}}</div>\n </div>\n <button type=\"button\" class=\"mb-cancel-btn\" [disabled]=\"cancelling\" (click)=\"cancelBooking()\">\n {{cancelling ? 'Cancelling\u2026' : 'Cancel booking'}}\n </button>\n </ng-container>\n\n <div class=\"mb-cancelled-note\" *ngIf=\"selected.status === 'CANCELLED'\">This booking has been cancelled.</div>\n </div>\n </ng-container>\n</div>\n", styles: [".mb-root{display:flex;flex-direction:column;gap:16px;padding:4px 0 24px}.mb-title{font-size:20px;font-weight:600;color:#1b2436}.mb-tabs{display:flex;background:#f5f2ee;border-radius:8px;padding:4px;gap:4px;width:fit-content}.mb-tab{border:none;background:transparent;border-radius:6px;padding:8px 18px;font-size:13.5px;font-weight:500;color:#8a94a3;cursor:pointer}.mb-tab.active{background:#fff;color:#1b2436;font-weight:600;box-shadow:0 1px 3px #00000012}.mb-loading{font-size:13.5px;color:#8a94a3;padding:20px 0}.mb-rows{display:flex;flex-direction:column;gap:12px}.mb-row{border:1px solid #EEE9E3;border-radius:10px;padding:16px 18px;display:flex;align-items:flex-start;gap:14px;background:#fff;cursor:pointer;text-align:left;width:100%}.mb-row-stripe{width:3px;align-self:stretch;border-radius:999px;flex:none}.stripe-home{background:#16233a}.stripe-video{background:#7c3a11}.stripe-store{background:#8a94a3}.mb-row-info{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0}.mb-row-title{font-size:14.5px;font-weight:600;color:#1b2436}.mb-row-when{font-size:12.5px;color:#6b7688}.mb-row-detail{font-size:12px;color:#8a94a3}.mb-row-end{flex:none}.mb-status{font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;font-weight:600;border-radius:999px;padding:4px 9px;white-space:nowrap}.status-confirmed{background:#e8f4ee;color:#1e7a4b}.status-completed{background:#f2eee9;color:#8a7c6c}.status-cancelled{background:#fbedec;color:#b4432e}.status-pending{background:#fdf3e3;color:#b36b00}.mb-empty{display:flex;flex-direction:column;align-items:center;gap:10px;padding:50px 20px;text-align:center}.mb-empty-icon{font-size:40px!important;height:40px!important;width:40px!important;color:#c9b7a2!important}.mb-empty-title{font-size:14.5px;color:#8a94a3}.mb-back{display:flex;align-items:center;gap:6px;border:none;background:none;padding:0;cursor:pointer;font-size:12.5px;color:#7c3a11;margin-bottom:6px;width:fit-content}.mb-back mat-icon{font-size:16px!important;height:16px!important;width:16px!important}.mb-detail-card{border:1px solid #EEE9E3;border-radius:12px;padding:20px 22px;display:flex;flex-direction:column;gap:16px;background:#fff}.mb-detail-header{display:flex;flex-direction:column;gap:6px;padding-bottom:14px;border-bottom:1px solid #F0ECE7}.mb-detail-title-row{display:flex;align-items:center;gap:10px}.mb-detail-title{font-size:17px;font-weight:600;color:#1b2436}.mb-detail-when{font-size:13px;color:#6b7688}.mb-detail-rows{display:flex;flex-direction:column;gap:12px}.mb-detail-row{display:flex;justify-content:space-between;gap:16px;font-size:13px}.mb-detail-k{color:#8a94a3;flex:none}.mb-detail-v{color:#1b2436;font-weight:500;text-align:right}.mb-video-link{display:flex;align-items:center;gap:10px;padding:12px 14px;background:#f2f9f5;border-radius:8px;font-size:13px;color:#2c6a4b}.mb-video-link mat-icon{color:#1e7a4b!important;flex:none}.mb-policy{background:#fbfaf8;border:1px solid #EDE8E2;border-radius:8px;padding:12px 14px;display:flex;flex-direction:column;gap:4px}.mb-policy-title{font-size:12px;font-weight:600;color:#a08b72;text-transform:uppercase;letter-spacing:.06em}.mb-policy-text{font-size:12.5px;line-height:1.6;color:#5f6b7c}.mb-cancel-btn{height:46px;border:1.5px solid #E3CFC9;border-radius:8px;background:#fff;color:#b4432e;font-size:13.5px;font-weight:600;cursor:pointer}.mb-cancel-btn:disabled{opacity:.6;cursor:not-allowed}.mb-cancelled-note{font-size:13px;color:#b4432e;font-weight:600}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: ToastModule }, { kind: "component", type: i6.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }] }); }
173
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MyBookingsComponent, isStandalone: true, selector: "simpo-my-bookings", providers: [MessageService], ngImport: i0, template: "<p-toast position=\"bottom-right\"></p-toast>\n\n<div class=\"mb-root\">\n <ng-container *ngIf=\"currentTab === 'LIST'\">\n <div class=\"mb-title\">My Bookings</div>\n\n <div class=\"mb-tabs\">\n <button type=\"button\" class=\"mb-tab\" [class.active]=\"profTab === 'upcoming'\" (click)=\"setProfTab('upcoming')\">Upcoming</button>\n <button type=\"button\" class=\"mb-tab\" [class.active]=\"profTab === 'past'\" (click)=\"setProfTab('past')\">Past</button>\n </div>\n\n <div class=\"mb-loading\" *ngIf=\"loading\">Loading your bookings\u2026</div>\n\n <div class=\"mb-rows\" *ngIf=\"!loading && !isEmpty\">\n <button type=\"button\" class=\"mb-row\" *ngFor=\"let b of rows\" (click)=\"viewBookingDetail(b)\">\n <div class=\"mb-row-stripe\" [ngClass]=\"b.mode === 'HOME_VISIT' ? 'stripe-home' : b.mode === 'VIDEO_CALL' ? 'stripe-video' : 'stripe-store'\"></div>\n <div class=\"mb-row-info\">\n <div class=\"mb-row-top\">\n <div class=\"mb-row-title\">{{title(b)}}</div>\n </div>\n <div class=\"mb-row-when\">{{when(b)}}</div>\n <div class=\"mb-row-detail\">{{detail(b)}}</div>\n </div>\n <div class=\"mb-row-end\">\n <span class=\"mb-status\" [ngClass]=\"statusClass(b.status)\">{{statusLabel(b.status)}}</span>\n </div>\n </button>\n </div>\n\n <div class=\"mb-empty\" *ngIf=\"isEmpty\">\n <mat-icon class=\"mb-empty-icon\">event_busy</mat-icon>\n <div class=\"mb-empty-title\">No {{profTab}} bookings yet.</div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"currentTab === 'DETAIL' && selected\">\n <button type=\"button\" class=\"mb-back\" (click)=\"backToList()\">\n <mat-icon>arrow_back</mat-icon> Back to My Bookings\n </button>\n\n <div class=\"mb-detail-card\">\n <div class=\"mb-detail-header\">\n <div class=\"mb-detail-title-row\">\n <div class=\"mb-detail-title\">{{title(selected)}}</div>\n <span class=\"mb-status\" [ngClass]=\"statusClass(selected.status)\">{{statusLabel(selected.status)}}</span>\n </div>\n <div class=\"mb-detail-when\">{{when(selected)}}</div>\n </div>\n\n <div class=\"mb-detail-rows\">\n <div class=\"mb-detail-row\" *ngIf=\"selected.services?.length\">\n <div class=\"mb-detail-k\">Services</div>\n <div class=\"mb-detail-v\">{{serviceNames(selected)}}</div>\n </div>\n <div class=\"mb-detail-row\" *ngIf=\"selected.productLines?.length\">\n <div class=\"mb-detail-k\">Products</div>\n <div class=\"mb-detail-v\">{{productNames(selected)}}</div>\n </div>\n <div class=\"mb-detail-row\" *ngIf=\"selected.customerDetail\">\n <div class=\"mb-detail-k\">Contact</div>\n <div class=\"mb-detail-v\">{{selected.customerDetail?.name}} \u00B7 {{selected.customerDetail?.phoneNumber}} \u00B7 {{selected.customerDetail?.email}}</div>\n </div>\n <div class=\"mb-detail-row\" *ngIf=\"selected.mode === 'HOME_VISIT' && selected.addressDetails\">\n <div class=\"mb-detail-k\">Address</div>\n <div class=\"mb-detail-v\">{{selected.addressDetails?.addressLine1}}, {{selected.addressDetails?.city}}, {{selected.addressDetails?.state}} {{selected.addressDetails?.zipCode}}</div>\n </div>\n <div class=\"mb-detail-row\" *ngIf=\"servicePriceTotal(selected) > 0\">\n <div class=\"mb-detail-k\">Service price</div>\n <div class=\"mb-detail-v\">\u20B9{{servicePriceTotal(selected)}}</div>\n </div>\n <div class=\"mb-detail-row\" *ngIf=\"selected.homeVisitCharge\">\n <div class=\"mb-detail-k\">Home visit charge</div>\n <div class=\"mb-detail-v\">\u20B9{{selected.homeVisitCharge}}</div>\n </div>\n <div class=\"mb-detail-row\">\n <div class=\"mb-detail-k\">Total</div>\n <div class=\"mb-detail-v\">\u20B9{{totalDue(selected)}}</div>\n </div>\n <div class=\"mb-detail-row\">\n <div class=\"mb-detail-k\">Paid</div>\n <div class=\"mb-detail-v\">{{paidLabel(selected)}}</div>\n </div>\n <div class=\"mb-detail-row\" *ngIf=\"pendingAmount(selected) > 0\">\n <div class=\"mb-detail-k\">Pending at appointment</div>\n <div class=\"mb-detail-v\">\u20B9{{pendingAmount(selected)}}</div>\n </div>\n </div>\n\n <div class=\"mb-video-link\" *ngIf=\"selected.mode === 'VIDEO_CALL' && selected.videoCallLink && selected.status !== 'CANCELLED'\">\n <mat-icon>videocam</mat-icon>\n <a [href]=\"selected.videoCallLink\" target=\"_blank\">{{selected.videoCallLink}}</a>\n </div>\n\n <ng-container *ngIf=\"canCancelSelected\">\n <div class=\"mb-policy\" *ngIf=\"cancellationPolicy\">\n <div class=\"mb-policy-title\">{{cancellationPolicy.title}}</div>\n <div class=\"mb-policy-text\">{{cancellationPolicy.policyDetails}}</div>\n </div>\n <button type=\"button\" class=\"mb-cancel-btn\" [disabled]=\"cancelling\" (click)=\"cancelBooking()\">\n {{cancelling ? 'Cancelling\u2026' : 'Cancel booking'}}\n </button>\n </ng-container>\n\n <div class=\"mb-cancelled-note\" *ngIf=\"selected.status === 'CANCELLED'\">This booking has been cancelled.</div>\n </div>\n </ng-container>\n</div>\n", styles: [".mb-root{display:flex;flex-direction:column;gap:16px;padding:4px 0 24px}.mb-title{font-size:20px;font-weight:600;color:#1b2436}.mb-tabs{display:flex;background:#f5f2ee;border-radius:8px;padding:4px;gap:4px;width:fit-content}.mb-tab{border:none;background:transparent;border-radius:6px;padding:8px 18px;font-size:13.5px;font-weight:500;color:#8a94a3;cursor:pointer}.mb-tab.active{background:#fff;color:#1b2436;font-weight:600;box-shadow:0 1px 3px #00000012}.mb-loading{font-size:13.5px;color:#8a94a3;padding:20px 0}.mb-rows{display:flex;flex-direction:column;gap:12px}.mb-row{border:1px solid #EEE9E3;border-radius:10px;padding:16px 18px;display:flex;align-items:flex-start;gap:14px;background:#fff;cursor:pointer;text-align:left;width:100%}.mb-row-stripe{width:3px;align-self:stretch;border-radius:999px;flex:none}.stripe-home{background:#16233a}.stripe-video{background:#7c3a11}.stripe-store{background:#8a94a3}.mb-row-info{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0}.mb-row-title{font-size:14.5px;font-weight:600;color:#1b2436}.mb-row-when{font-size:12.5px;color:#6b7688}.mb-row-detail{font-size:12px;color:#8a94a3}.mb-row-end{flex:none}.mb-status{font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;font-weight:600;border-radius:999px;padding:4px 9px;white-space:nowrap}.status-confirmed{background:#e8f4ee;color:#1e7a4b}.status-completed{background:#f2eee9;color:#8a7c6c}.status-cancelled{background:#fbedec;color:#b4432e}.status-pending{background:#fdf3e3;color:#b36b00}.mb-empty{display:flex;flex-direction:column;align-items:center;gap:10px;padding:50px 20px;text-align:center}.mb-empty-icon{font-size:40px!important;height:40px!important;width:40px!important;color:#c9b7a2!important}.mb-empty-title{font-size:14.5px;color:#8a94a3}.mb-back{display:flex;align-items:center;gap:6px;border:none;background:none;padding:0;cursor:pointer;font-size:12.5px;color:#7c3a11;margin-bottom:6px;width:fit-content}.mb-back mat-icon{font-size:16px!important;height:16px!important;width:16px!important}.mb-detail-card{border:1px solid #EEE9E3;border-radius:12px;padding:20px 22px;display:flex;flex-direction:column;gap:16px;background:#fff}.mb-detail-header{display:flex;flex-direction:column;gap:6px;padding-bottom:14px;border-bottom:1px solid #F0ECE7}.mb-detail-title-row{display:flex;align-items:center;gap:10px}.mb-detail-title{font-size:17px;font-weight:600;color:#1b2436}.mb-detail-when{font-size:13px;color:#6b7688}.mb-detail-rows{display:flex;flex-direction:column;gap:12px}.mb-detail-row{display:flex;justify-content:space-between;gap:16px;font-size:13px}.mb-detail-k{color:#8a94a3;flex:none}.mb-detail-v{color:#1b2436;font-weight:500;text-align:right}.mb-video-link{display:flex;align-items:center;gap:10px;padding:12px 14px;background:#f2f9f5;border-radius:8px;font-size:13px;color:#2c6a4b}.mb-video-link mat-icon{color:#1e7a4b!important;flex:none}.mb-policy{background:#fbfaf8;border:1px solid #EDE8E2;border-radius:8px;padding:12px 14px;display:flex;flex-direction:column;gap:4px}.mb-policy-title{font-size:12px;font-weight:600;color:#a08b72;text-transform:uppercase;letter-spacing:.06em}.mb-policy-text{font-size:12.5px;line-height:1.6;color:#5f6b7c}.mb-cancel-btn{height:46px;border:1.5px solid #E3CFC9;border-radius:8px;background:#fff;color:#b4432e;font-size:13.5px;font-weight:600;cursor:pointer}.mb-cancel-btn:disabled{opacity:.6;cursor:not-allowed}.mb-cancelled-note{font-size:13px;color:#b4432e;font-weight:600}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: ToastModule }, { kind: "component", type: i6.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }] }); }
171
174
  }
172
175
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MyBookingsComponent, decorators: [{
173
176
  type: Component,
174
- args: [{ selector: 'simpo-my-bookings', standalone: true, imports: [CommonModule, MatIconModule, ToastModule], providers: [MessageService], template: "<p-toast position=\"bottom-right\"></p-toast>\n\n<div class=\"mb-root\">\n <ng-container *ngIf=\"currentTab === 'LIST'\">\n <div class=\"mb-title\">My Bookings</div>\n\n <div class=\"mb-tabs\">\n <button type=\"button\" class=\"mb-tab\" [class.active]=\"profTab === 'upcoming'\" (click)=\"setProfTab('upcoming')\">Upcoming</button>\n <button type=\"button\" class=\"mb-tab\" [class.active]=\"profTab === 'past'\" (click)=\"setProfTab('past')\">Past</button>\n </div>\n\n <div class=\"mb-loading\" *ngIf=\"loading\">Loading your bookings\u2026</div>\n\n <div class=\"mb-rows\" *ngIf=\"!loading && !isEmpty\">\n <button type=\"button\" class=\"mb-row\" *ngFor=\"let b of rows\" (click)=\"viewBookingDetail(b)\">\n <div class=\"mb-row-stripe\" [ngClass]=\"b.mode === 'HOME_VISIT' ? 'stripe-home' : b.mode === 'VIDEO_CALL' ? 'stripe-video' : 'stripe-store'\"></div>\n <div class=\"mb-row-info\">\n <div class=\"mb-row-top\">\n <div class=\"mb-row-title\">{{title(b)}}</div>\n </div>\n <div class=\"mb-row-when\">{{when(b)}}</div>\n <div class=\"mb-row-detail\">{{detail(b)}}</div>\n </div>\n <div class=\"mb-row-end\">\n <span class=\"mb-status\" [ngClass]=\"statusClass(b.status)\">{{statusLabel(b.status)}}</span>\n </div>\n </button>\n </div>\n\n <div class=\"mb-empty\" *ngIf=\"isEmpty\">\n <mat-icon class=\"mb-empty-icon\">event_busy</mat-icon>\n <div class=\"mb-empty-title\">No {{profTab}} bookings yet.</div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"currentTab === 'DETAIL' && selected\">\n <button type=\"button\" class=\"mb-back\" (click)=\"backToList()\">\n <mat-icon>arrow_back</mat-icon> Back to My Bookings\n </button>\n\n <div class=\"mb-detail-card\">\n <div class=\"mb-detail-header\">\n <div class=\"mb-detail-title-row\">\n <div class=\"mb-detail-title\">{{title(selected)}}</div>\n <span class=\"mb-status\" [ngClass]=\"statusClass(selected.status)\">{{statusLabel(selected.status)}}</span>\n </div>\n <div class=\"mb-detail-when\">{{when(selected)}}</div>\n </div>\n\n <div class=\"mb-detail-rows\">\n <div class=\"mb-detail-row\" *ngIf=\"selected.services?.length\">\n <div class=\"mb-detail-k\">Services</div>\n <div class=\"mb-detail-v\">{{serviceNames(selected)}}</div>\n </div>\n <div class=\"mb-detail-row\" *ngIf=\"selected.productLines?.length\">\n <div class=\"mb-detail-k\">Products</div>\n <div class=\"mb-detail-v\">{{productNames(selected)}}</div>\n </div>\n <div class=\"mb-detail-row\" *ngIf=\"selected.customerDetail\">\n <div class=\"mb-detail-k\">Contact</div>\n <div class=\"mb-detail-v\">{{selected.customerDetail?.name}} \u00B7 {{selected.customerDetail?.phoneNumber}} \u00B7 {{selected.customerDetail?.email}}</div>\n </div>\n <div class=\"mb-detail-row\" *ngIf=\"selected.mode === 'HOME_VISIT' && selected.addressDetails\">\n <div class=\"mb-detail-k\">Address</div>\n <div class=\"mb-detail-v\">{{selected.addressDetails?.addressLine1}}, {{selected.addressDetails?.city}}, {{selected.addressDetails?.state}} {{selected.addressDetails?.zipCode}}</div>\n </div>\n <div class=\"mb-detail-row\">\n <div class=\"mb-detail-k\">Total</div>\n <div class=\"mb-detail-v\">\u20B9{{totalDue(selected)}}</div>\n </div>\n <div class=\"mb-detail-row\">\n <div class=\"mb-detail-k\">Paid</div>\n <div class=\"mb-detail-v\">{{paidLabel(selected)}}</div>\n </div>\n <div class=\"mb-detail-row\" *ngIf=\"pendingAmount(selected) > 0\">\n <div class=\"mb-detail-k\">Pending at appointment</div>\n <div class=\"mb-detail-v\">\u20B9{{pendingAmount(selected)}}</div>\n </div>\n </div>\n\n <div class=\"mb-video-link\" *ngIf=\"selected.mode === 'VIDEO_CALL' && selected.videoCallLink && selected.status !== 'CANCELLED'\">\n <mat-icon>videocam</mat-icon>\n <a [href]=\"selected.videoCallLink\" target=\"_blank\">{{selected.videoCallLink}}</a>\n </div>\n\n <ng-container *ngIf=\"canCancelSelected\">\n <div class=\"mb-policy\" *ngIf=\"cancellationPolicy\">\n <div class=\"mb-policy-title\">{{cancellationPolicy.title}}</div>\n <div class=\"mb-policy-text\">{{cancellationPolicy.policyDetails}}</div>\n </div>\n <button type=\"button\" class=\"mb-cancel-btn\" [disabled]=\"cancelling\" (click)=\"cancelBooking()\">\n {{cancelling ? 'Cancelling\u2026' : 'Cancel booking'}}\n </button>\n </ng-container>\n\n <div class=\"mb-cancelled-note\" *ngIf=\"selected.status === 'CANCELLED'\">This booking has been cancelled.</div>\n </div>\n </ng-container>\n</div>\n", styles: [".mb-root{display:flex;flex-direction:column;gap:16px;padding:4px 0 24px}.mb-title{font-size:20px;font-weight:600;color:#1b2436}.mb-tabs{display:flex;background:#f5f2ee;border-radius:8px;padding:4px;gap:4px;width:fit-content}.mb-tab{border:none;background:transparent;border-radius:6px;padding:8px 18px;font-size:13.5px;font-weight:500;color:#8a94a3;cursor:pointer}.mb-tab.active{background:#fff;color:#1b2436;font-weight:600;box-shadow:0 1px 3px #00000012}.mb-loading{font-size:13.5px;color:#8a94a3;padding:20px 0}.mb-rows{display:flex;flex-direction:column;gap:12px}.mb-row{border:1px solid #EEE9E3;border-radius:10px;padding:16px 18px;display:flex;align-items:flex-start;gap:14px;background:#fff;cursor:pointer;text-align:left;width:100%}.mb-row-stripe{width:3px;align-self:stretch;border-radius:999px;flex:none}.stripe-home{background:#16233a}.stripe-video{background:#7c3a11}.stripe-store{background:#8a94a3}.mb-row-info{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0}.mb-row-title{font-size:14.5px;font-weight:600;color:#1b2436}.mb-row-when{font-size:12.5px;color:#6b7688}.mb-row-detail{font-size:12px;color:#8a94a3}.mb-row-end{flex:none}.mb-status{font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;font-weight:600;border-radius:999px;padding:4px 9px;white-space:nowrap}.status-confirmed{background:#e8f4ee;color:#1e7a4b}.status-completed{background:#f2eee9;color:#8a7c6c}.status-cancelled{background:#fbedec;color:#b4432e}.status-pending{background:#fdf3e3;color:#b36b00}.mb-empty{display:flex;flex-direction:column;align-items:center;gap:10px;padding:50px 20px;text-align:center}.mb-empty-icon{font-size:40px!important;height:40px!important;width:40px!important;color:#c9b7a2!important}.mb-empty-title{font-size:14.5px;color:#8a94a3}.mb-back{display:flex;align-items:center;gap:6px;border:none;background:none;padding:0;cursor:pointer;font-size:12.5px;color:#7c3a11;margin-bottom:6px;width:fit-content}.mb-back mat-icon{font-size:16px!important;height:16px!important;width:16px!important}.mb-detail-card{border:1px solid #EEE9E3;border-radius:12px;padding:20px 22px;display:flex;flex-direction:column;gap:16px;background:#fff}.mb-detail-header{display:flex;flex-direction:column;gap:6px;padding-bottom:14px;border-bottom:1px solid #F0ECE7}.mb-detail-title-row{display:flex;align-items:center;gap:10px}.mb-detail-title{font-size:17px;font-weight:600;color:#1b2436}.mb-detail-when{font-size:13px;color:#6b7688}.mb-detail-rows{display:flex;flex-direction:column;gap:12px}.mb-detail-row{display:flex;justify-content:space-between;gap:16px;font-size:13px}.mb-detail-k{color:#8a94a3;flex:none}.mb-detail-v{color:#1b2436;font-weight:500;text-align:right}.mb-video-link{display:flex;align-items:center;gap:10px;padding:12px 14px;background:#f2f9f5;border-radius:8px;font-size:13px;color:#2c6a4b}.mb-video-link mat-icon{color:#1e7a4b!important;flex:none}.mb-policy{background:#fbfaf8;border:1px solid #EDE8E2;border-radius:8px;padding:12px 14px;display:flex;flex-direction:column;gap:4px}.mb-policy-title{font-size:12px;font-weight:600;color:#a08b72;text-transform:uppercase;letter-spacing:.06em}.mb-policy-text{font-size:12.5px;line-height:1.6;color:#5f6b7c}.mb-cancel-btn{height:46px;border:1.5px solid #E3CFC9;border-radius:8px;background:#fff;color:#b4432e;font-size:13.5px;font-weight:600;cursor:pointer}.mb-cancel-btn:disabled{opacity:.6;cursor:not-allowed}.mb-cancelled-note{font-size:13px;color:#b4432e;font-weight:600}\n"] }]
177
+ args: [{ selector: 'simpo-my-bookings', standalone: true, imports: [CommonModule, MatIconModule, ToastModule], providers: [MessageService], template: "<p-toast position=\"bottom-right\"></p-toast>\n\n<div class=\"mb-root\">\n <ng-container *ngIf=\"currentTab === 'LIST'\">\n <div class=\"mb-title\">My Bookings</div>\n\n <div class=\"mb-tabs\">\n <button type=\"button\" class=\"mb-tab\" [class.active]=\"profTab === 'upcoming'\" (click)=\"setProfTab('upcoming')\">Upcoming</button>\n <button type=\"button\" class=\"mb-tab\" [class.active]=\"profTab === 'past'\" (click)=\"setProfTab('past')\">Past</button>\n </div>\n\n <div class=\"mb-loading\" *ngIf=\"loading\">Loading your bookings\u2026</div>\n\n <div class=\"mb-rows\" *ngIf=\"!loading && !isEmpty\">\n <button type=\"button\" class=\"mb-row\" *ngFor=\"let b of rows\" (click)=\"viewBookingDetail(b)\">\n <div class=\"mb-row-stripe\" [ngClass]=\"b.mode === 'HOME_VISIT' ? 'stripe-home' : b.mode === 'VIDEO_CALL' ? 'stripe-video' : 'stripe-store'\"></div>\n <div class=\"mb-row-info\">\n <div class=\"mb-row-top\">\n <div class=\"mb-row-title\">{{title(b)}}</div>\n </div>\n <div class=\"mb-row-when\">{{when(b)}}</div>\n <div class=\"mb-row-detail\">{{detail(b)}}</div>\n </div>\n <div class=\"mb-row-end\">\n <span class=\"mb-status\" [ngClass]=\"statusClass(b.status)\">{{statusLabel(b.status)}}</span>\n </div>\n </button>\n </div>\n\n <div class=\"mb-empty\" *ngIf=\"isEmpty\">\n <mat-icon class=\"mb-empty-icon\">event_busy</mat-icon>\n <div class=\"mb-empty-title\">No {{profTab}} bookings yet.</div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"currentTab === 'DETAIL' && selected\">\n <button type=\"button\" class=\"mb-back\" (click)=\"backToList()\">\n <mat-icon>arrow_back</mat-icon> Back to My Bookings\n </button>\n\n <div class=\"mb-detail-card\">\n <div class=\"mb-detail-header\">\n <div class=\"mb-detail-title-row\">\n <div class=\"mb-detail-title\">{{title(selected)}}</div>\n <span class=\"mb-status\" [ngClass]=\"statusClass(selected.status)\">{{statusLabel(selected.status)}}</span>\n </div>\n <div class=\"mb-detail-when\">{{when(selected)}}</div>\n </div>\n\n <div class=\"mb-detail-rows\">\n <div class=\"mb-detail-row\" *ngIf=\"selected.services?.length\">\n <div class=\"mb-detail-k\">Services</div>\n <div class=\"mb-detail-v\">{{serviceNames(selected)}}</div>\n </div>\n <div class=\"mb-detail-row\" *ngIf=\"selected.productLines?.length\">\n <div class=\"mb-detail-k\">Products</div>\n <div class=\"mb-detail-v\">{{productNames(selected)}}</div>\n </div>\n <div class=\"mb-detail-row\" *ngIf=\"selected.customerDetail\">\n <div class=\"mb-detail-k\">Contact</div>\n <div class=\"mb-detail-v\">{{selected.customerDetail?.name}} \u00B7 {{selected.customerDetail?.phoneNumber}} \u00B7 {{selected.customerDetail?.email}}</div>\n </div>\n <div class=\"mb-detail-row\" *ngIf=\"selected.mode === 'HOME_VISIT' && selected.addressDetails\">\n <div class=\"mb-detail-k\">Address</div>\n <div class=\"mb-detail-v\">{{selected.addressDetails?.addressLine1}}, {{selected.addressDetails?.city}}, {{selected.addressDetails?.state}} {{selected.addressDetails?.zipCode}}</div>\n </div>\n <div class=\"mb-detail-row\" *ngIf=\"servicePriceTotal(selected) > 0\">\n <div class=\"mb-detail-k\">Service price</div>\n <div class=\"mb-detail-v\">\u20B9{{servicePriceTotal(selected)}}</div>\n </div>\n <div class=\"mb-detail-row\" *ngIf=\"selected.homeVisitCharge\">\n <div class=\"mb-detail-k\">Home visit charge</div>\n <div class=\"mb-detail-v\">\u20B9{{selected.homeVisitCharge}}</div>\n </div>\n <div class=\"mb-detail-row\">\n <div class=\"mb-detail-k\">Total</div>\n <div class=\"mb-detail-v\">\u20B9{{totalDue(selected)}}</div>\n </div>\n <div class=\"mb-detail-row\">\n <div class=\"mb-detail-k\">Paid</div>\n <div class=\"mb-detail-v\">{{paidLabel(selected)}}</div>\n </div>\n <div class=\"mb-detail-row\" *ngIf=\"pendingAmount(selected) > 0\">\n <div class=\"mb-detail-k\">Pending at appointment</div>\n <div class=\"mb-detail-v\">\u20B9{{pendingAmount(selected)}}</div>\n </div>\n </div>\n\n <div class=\"mb-video-link\" *ngIf=\"selected.mode === 'VIDEO_CALL' && selected.videoCallLink && selected.status !== 'CANCELLED'\">\n <mat-icon>videocam</mat-icon>\n <a [href]=\"selected.videoCallLink\" target=\"_blank\">{{selected.videoCallLink}}</a>\n </div>\n\n <ng-container *ngIf=\"canCancelSelected\">\n <div class=\"mb-policy\" *ngIf=\"cancellationPolicy\">\n <div class=\"mb-policy-title\">{{cancellationPolicy.title}}</div>\n <div class=\"mb-policy-text\">{{cancellationPolicy.policyDetails}}</div>\n </div>\n <button type=\"button\" class=\"mb-cancel-btn\" [disabled]=\"cancelling\" (click)=\"cancelBooking()\">\n {{cancelling ? 'Cancelling\u2026' : 'Cancel booking'}}\n </button>\n </ng-container>\n\n <div class=\"mb-cancelled-note\" *ngIf=\"selected.status === 'CANCELLED'\">This booking has been cancelled.</div>\n </div>\n </ng-container>\n</div>\n", styles: [".mb-root{display:flex;flex-direction:column;gap:16px;padding:4px 0 24px}.mb-title{font-size:20px;font-weight:600;color:#1b2436}.mb-tabs{display:flex;background:#f5f2ee;border-radius:8px;padding:4px;gap:4px;width:fit-content}.mb-tab{border:none;background:transparent;border-radius:6px;padding:8px 18px;font-size:13.5px;font-weight:500;color:#8a94a3;cursor:pointer}.mb-tab.active{background:#fff;color:#1b2436;font-weight:600;box-shadow:0 1px 3px #00000012}.mb-loading{font-size:13.5px;color:#8a94a3;padding:20px 0}.mb-rows{display:flex;flex-direction:column;gap:12px}.mb-row{border:1px solid #EEE9E3;border-radius:10px;padding:16px 18px;display:flex;align-items:flex-start;gap:14px;background:#fff;cursor:pointer;text-align:left;width:100%}.mb-row-stripe{width:3px;align-self:stretch;border-radius:999px;flex:none}.stripe-home{background:#16233a}.stripe-video{background:#7c3a11}.stripe-store{background:#8a94a3}.mb-row-info{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0}.mb-row-title{font-size:14.5px;font-weight:600;color:#1b2436}.mb-row-when{font-size:12.5px;color:#6b7688}.mb-row-detail{font-size:12px;color:#8a94a3}.mb-row-end{flex:none}.mb-status{font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;font-weight:600;border-radius:999px;padding:4px 9px;white-space:nowrap}.status-confirmed{background:#e8f4ee;color:#1e7a4b}.status-completed{background:#f2eee9;color:#8a7c6c}.status-cancelled{background:#fbedec;color:#b4432e}.status-pending{background:#fdf3e3;color:#b36b00}.mb-empty{display:flex;flex-direction:column;align-items:center;gap:10px;padding:50px 20px;text-align:center}.mb-empty-icon{font-size:40px!important;height:40px!important;width:40px!important;color:#c9b7a2!important}.mb-empty-title{font-size:14.5px;color:#8a94a3}.mb-back{display:flex;align-items:center;gap:6px;border:none;background:none;padding:0;cursor:pointer;font-size:12.5px;color:#7c3a11;margin-bottom:6px;width:fit-content}.mb-back mat-icon{font-size:16px!important;height:16px!important;width:16px!important}.mb-detail-card{border:1px solid #EEE9E3;border-radius:12px;padding:20px 22px;display:flex;flex-direction:column;gap:16px;background:#fff}.mb-detail-header{display:flex;flex-direction:column;gap:6px;padding-bottom:14px;border-bottom:1px solid #F0ECE7}.mb-detail-title-row{display:flex;align-items:center;gap:10px}.mb-detail-title{font-size:17px;font-weight:600;color:#1b2436}.mb-detail-when{font-size:13px;color:#6b7688}.mb-detail-rows{display:flex;flex-direction:column;gap:12px}.mb-detail-row{display:flex;justify-content:space-between;gap:16px;font-size:13px}.mb-detail-k{color:#8a94a3;flex:none}.mb-detail-v{color:#1b2436;font-weight:500;text-align:right}.mb-video-link{display:flex;align-items:center;gap:10px;padding:12px 14px;background:#f2f9f5;border-radius:8px;font-size:13px;color:#2c6a4b}.mb-video-link mat-icon{color:#1e7a4b!important;flex:none}.mb-policy{background:#fbfaf8;border:1px solid #EDE8E2;border-radius:8px;padding:12px 14px;display:flex;flex-direction:column;gap:4px}.mb-policy-title{font-size:12px;font-weight:600;color:#a08b72;text-transform:uppercase;letter-spacing:.06em}.mb-policy-text{font-size:12.5px;line-height:1.6;color:#5f6b7c}.mb-cancel-btn{height:46px;border:1.5px solid #E3CFC9;border-radius:8px;background:#fff;color:#b4432e;font-size:13.5px;font-weight:600;cursor:pointer}.mb-cancel-btn:disabled{opacity:.6;cursor:not-allowed}.mb-cancelled-note{font-size:13px;color:#b4432e;font-weight:600}\n"] }]
175
178
  }], ctorParameters: () => [{ type: i1.RestService }, { type: i2.StorageServiceService }, { type: i3.MessageService }] });
176
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXktYm9va2luZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lbGVtZW50cy9teS1ib29raW5ncy9teS1ib29raW5ncy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL215LWJvb2tpbmdzL215LWJvb2tpbmdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQTBCNUM7Ozs7O0dBS0c7QUFTSCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLFlBQ21CLFdBQXdCLEVBQ3hCLGNBQXFDLEVBQ3JDLGNBQThCO1FBRjlCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQUNyQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFHakQsZUFBVSxHQUFzQixNQUFNLENBQUM7UUFDdkMsWUFBTyxHQUF3QixVQUFVLENBQUM7UUFDMUMsWUFBTyxHQUFHLElBQUksQ0FBQztRQUNmLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFWCxnQkFBVyxHQUFpQixFQUFFLENBQUM7UUFDdkMsYUFBUSxH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b20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgVG9hc3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RvYXN0JztcbmltcG9ydCB7IGZvcmtKb2luLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vLi4vZWNvbW1lcmNlL3N0eWxlcy91c2VyLm1vZGFsJztcblxuaW50ZXJmYWNlIEJvb2tpbmdSb3cge1xuICBncm91cElkOiBzdHJpbmc7XG4gIG1vZGU6ICdTVE9SRV9WSVNJVCcgfCAnSE9NRV9WSVNJVCcgfCAnVklERU9fQ0FMTCc7XG4gIGJvb2tpbmdEYXRlOiBzdHJpbmc7XG4gIHN0YXJ0VGltZT86IHN0cmluZztcbiAgZW5kVGltZT86IHN0cmluZztcbiAgc3RhdHVzOiAnUEVORElORycgfCAnQk9PS0VEJyB8ICdIT0xEJyB8ICdDT01QTEVURUQnIHwgJ0NBTkNFTExFRCc7XG4gIHN0b3JlTmFtZT86IHN0cmluZztcbiAgY3VzdG9tZXJEZXRhaWw/OiB7IG5hbWU6IHN0cmluZzsgcGhvbmVOdW1iZXI6IHN0cmluZzsgZW1haWw6IHN0cmluZyB9O1xuICBhZGRyZXNzRGV0YWlscz86IHsgcmVjZWl2ZXJOYW1lOiBzdHJpbmc7IHJlY2VpdmVyUGhvbmU6IHN0cmluZzsgYWRkcmVzc0xpbmUxOiBzdHJpbmc7IGFkZHJlc3NMaW5lMj86IHN0cmluZzsgY2l0eTogc3RyaW5nOyBzdGF0ZTogc3RyaW5nOyB6aXBDb2RlOiBzdHJpbmcgfTtcbiAgcHJvZHVjdExpbmVzPzogeyBpdGVtTmFtZTogc3RyaW5nOyBxdWFudGl0eTogbnVtYmVyIH1bXTtcbiAgLyoqIE5vdCBwYXJ0IG9mIHRoZSBHRVQgL2Jvb2tpbmcvZ3JvdXAvbXkgcmVzcG9uc2UgLSBzZXJ2aWNlcyBsaXZlIG9uIHRoZSBzZXBhcmF0ZVxuICAgKiBCb29raW5nRGV0YWlsIGNvbGxlY3Rpb24gKEZLJ2QgdmlhIHNlcnZpY2VMaW5lSWRzLCBub3QgZGVub3JtYWxpemVkIG9udG8gQm9va2luZ0dyb3VwKSwgc29cbiAgICogdGhpcyBpcyBmaWxsZWQgaW4gY2xpZW50LXNpZGUgYWZ0ZXIgbG9hZCgpIHZpYSBhIHBlci1yb3cgR0VUIC4uLi9saW5lcyBjYWxsLiAqL1xuICBzZXJ2aWNlcz86IHsgbmFtZTogc3RyaW5nOyBkdXJhdGlvbk1pbnV0ZXM6IG51bWJlcjsgcHJpY2U6IG51bWJlciB9W107XG4gIHZpZGVvQ2FsbExpbms/OiBzdHJpbmc7XG4gIHRvdGFsQ29sbGVjdGVkQXRCb29raW5nPzogbnVtYmVyO1xuICB0b3RhbFBheWFibGU/OiBudW1iZXI7XG4gIGhvbWVWaXNpdENoYXJnZT86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBcIk15IEJvb2tpbmdzXCIgLSBhIGN1c3RvbWVyJ3Mgb3duIGJvb2tpbmcgaGlzdG9yeSAoVXBjb21pbmcvUGFzdCksIGEgZGV0YWlsIHZpZXcgcGVyIGJvb2tpbmcsXG4gKiBhbmQgY2FuY2VsbGF0aW9uLiBUaGUgbGlzdCBlbmRwb2ludCByZXR1cm5zIGZ1bGwgQm9va2luZ0dyb3VwIHJlY29yZHMgLSBlbm91Z2ggZm9yXG4gKiBkYXRlL3N0YXR1cy9hZGRyZXNzL3Byb2R1Y3RzIC0gYnV0IHNlcnZpY2VzIGJvb2tlZCBhcmVuJ3Qgb24gdGhhdCByZWNvcmQgKHNlZSBCb29raW5nUm93LnNlcnZpY2VzXG4gKiBhYm92ZSksIHNvIGxvYWQoKSBpc3N1ZXMgb25lIGV4dHJhIEdFVCAuLi4vbGluZXMgY2FsbCBwZXIgcm93IHRvIGZpbGwgdGhlbSBpbi5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2ltcG8tbXktYm9va2luZ3MnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBUb2FzdE1vZHVsZV0sXG4gIHByb3ZpZGVyczogW01lc3NhZ2VTZXJ2aWNlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL215LWJvb2tpbmdzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL215LWJvb2tpbmdzLmNvbXBvbmVudC5jc3MnXG59KVxuZXhwb3J0IGNsYXNzIE15Qm9va2luZ3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc3RTZXJ2aWNlOiBSZXN0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICkgeyB9XG5cbiAgY3VycmVudFRhYjogJ0xJU1QnIHwgJ0RFVEFJTCcgPSAnTElTVCc7XG4gIHByb2ZUYWI6ICd1cGNvbWluZycgfCAncGFzdCcgPSAndXBjb21pbmcnO1xuICBsb2FkaW5nID0gdHJ1ZTtcbiAgY2FuY2VsbGluZyA9IGZhbHNlO1xuXG4gIHByaXZhdGUgYWxsQm9va2luZ3M6IEJvb2tpbmdSb3dbXSA9IFtdO1xuICB1cGNvbWluZzogQm9va2luZ1Jvd1tdID0gW107XG4gIHBhc3Q6IEJvb2tpbmdSb3dbXSA9IFtdO1xuICBzZWxlY3RlZDogQm9va2luZ1JvdyB8IG51bGwgPSBudWxsO1xuICBjYW5jZWxsYXRpb25Qb2xpY3k6IHsgdGl0bGU6IHN0cmluZzsgcG9saWN5RGV0YWlsczogc3RyaW5nIH0gfCBudWxsID0gbnVsbDtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmxvYWQoKTtcbiAgfVxuXG4gIGxvYWQoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICBjb25zdCBidXNpbmVzc0lkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2J1c2luZXNzSWQnKSA/PyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYklkJykgPz8gJyc7XG4gICAgY29uc3QgdXNlcklkID0gKHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpIGFzIFVzZXIpPy51c2VySWQgPz8gJyc7XG4gICAgaWYgKCFidXNpbmVzc0lkIHx8ICF1c2VySWQpIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldE15Qm9va2luZ3MoYnVzaW5lc3NJZCwgdXNlcklkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICB0aGlzLmFsbEJvb2tpbmdzID0gKHJlcyA/PyBbXSkgYXMgQm9va2luZ1Jvd1tdO1xuICAgICAgdGhpcy5zcGxpdEJvb2tpbmdzKCk7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMubG9hZFNlcnZpY2VMaW5lcygpO1xuICAgIH0sICgpID0+IHtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIH0pO1xuXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRDYW5jZWxsYXRpb25Qb2xpY3koYnVzaW5lc3NJZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgdGhpcy5jYW5jZWxsYXRpb25Qb2xpY3kgPSAocmVzID8/IFtdKVswXSA/PyBudWxsO1xuICAgIH0sICgpID0+IHtcbiAgICAgIC8vIE5vbi1mYXRhbCAtIHRoZSBkZXRhaWwgdmlldyBqdXN0IHdvbid0IHNob3cgYSBwb2xpY3kgbm90ZS5cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNVcGNvbWluZyhiOiBCb29raW5nUm93KTogYm9vbGVhbiB7XG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICAgIHRvZGF5LnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgIHJldHVybiAoYi5zdGF0dXMgPT09ICdIT0xEJyB8fCBiLnN0YXR1cyA9PT0gJ0JPT0tFRCcgfHwgYi5zdGF0dXMgPT09ICdQRU5ESU5HJykgJiYgbmV3IERhdGUoYi5ib29raW5nRGF0ZSkgPj0gdG9kYXk7XG4gIH1cblxuICBwcml2YXRlIHNwbGl0Qm9va2luZ3MoKSB7XG4gICAgdGhpcy51cGNvbWluZyA9IHRoaXMuYWxsQm9va2luZ3MuZmlsdGVyKChiKSA9PiB0aGlzLmlzVXBjb21pbmcoYikpO1xuICAgIHRoaXMucGFzdCA9IHRoaXMuYWxsQm9va2luZ3MuZmlsdGVyKChiKSA9PiAhdGhpcy5pc1VwY29taW5nKGIpKTtcbiAgfVxuXG4gIC8qKiBPbmUgYm9va2luZyBoaXN0b3J5IGxvYWQsIGJvdW5kZWQgdG8gdGhpcyBjdXN0b21lcidzIG93biBib29raW5ncyAtIGEgcGVyLXJvdyBjYWxsIGhlcmUgaXNcbiAgICogZmluZSwgdW5saWtlIGFuIHVuYm91bmRlZC9wYWdpbmF0ZWQgbGlzdC4gRmFpbHVyZXMgYXJlIHN3YWxsb3dlZCBwZXItcm93IChmYWxscyBiYWNrIHRvIG5vXG4gICAqIHNlcnZpY2UgbmFtZXMgZm9yIHRoYXQgcm93KSByYXRoZXIgdGhhbiBibG9ja2luZyB0aGUgd2hvbGUgcGFnZSBvbiBvbmUgYmFkIGdyb3VwLiAqL1xuICBwcml2YXRlIGxvYWRTZXJ2aWNlTGluZXMoKSB7XG4gICAgaWYgKCF0aGlzLmFsbEJvb2tpbmdzLmxlbmd0aCkgcmV0dXJuO1xuICAgIGZvcmtKb2luKFxuICAgICAgdGhpcy5hbGxCb29raW5ncy5tYXAoKGIpID0+XG4gICAgICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0R3JvdXBMaW5lcyhiLmdyb3VwSWQpLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZihbXSkpKVxuICAgICAgKVxuICAgICkuc3Vic2NyaWJlKChhbGxMaW5lczogYW55W10pID0+IHtcbiAgICAgIHRoaXMuYWxsQm9va2luZ3MuZm9yRWFjaCgoYiwgaSkgPT4ge1xuICAgICAgICBjb25zdCBsaW5lcyA9IGFsbExpbmVzW2ldID8/IFtdO1xuICAgICAgICBiLnNlcnZpY2VzID0gbGluZXMuZmxhdE1hcCgobDogYW55KSA9PiAobC5zZXJ2aWNlcyA/PyBbXSkubWFwKChzOiBhbnkpID0+ICh7XG4gICAgICAgICAgbmFtZTogcy5uYW1lLCBkdXJhdGlvbk1pbnV0ZXM6IHMuZHVyYXRpb25NaW51dGVzLCBwcmljZTogcy5wcmljZVxuICAgICAgICB9KSkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXQgcm93cygpOiBCb29raW5nUm93W10ge1xuICAgIHJldHVybiB0aGlzLnByb2ZUYWIgPT09ICd1cGNvbWluZycgPyB0aGlzLnVwY29taW5nIDogdGhpcy5wYXN0O1xuICB9XG4gIGdldCBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5sb2FkaW5nICYmIHRoaXMucm93cy5sZW5ndGggPT09IDA7XG4gIH1cblxuICBzZXRQcm9mVGFiKHRhYjogJ3VwY29taW5nJyB8ICdwYXN0Jykge1xuICAgIHRoaXMucHJvZlRhYiA9IHRhYjtcbiAgfVxuXG4gIHByb2R1Y3ROYW1lcyhiOiBCb29raW5nUm93KTogc3RyaW5nIHtcbiAgICByZXR1cm4gKGIucHJvZHVjdExpbmVzID8/IFtdKS5tYXAoKHApID0+IHAuaXRlbU5hbWUpLmZpbHRlcihCb29sZWFuKS5qb2luKCcsICcpO1xuICB9XG4gIHNlcnZpY2VOYW1lcyhiOiBCb29raW5nUm93KTogc3RyaW5nIHtcbiAgICByZXR1cm4gKGIuc2VydmljZXMgPz8gW10pLm1hcCgocykgPT4gcy5uYW1lKS5maWx0ZXIoQm9vbGVhbikuam9pbignLCAnKTtcbiAgfVxuICB0aXRsZShiOiBCb29raW5nUm93KTogc3RyaW5nIHtcbiAgICBjb25zdCBtb2RlTGFiZWwgPSBiLm1vZGUgPT09ICdIT01FX1ZJU0lUJyA/ICdIb21lIFZpc2l0JyA6IGIubW9kZSA9PT0gJ1ZJREVPX0NBTEwnID8gJ1ZpZGVvIENhbGwnIDogJ1N0b3JlIFZpc2l0JztcbiAgICBjb25zdCBpdGVtcyA9IFt0aGlzLnNlcnZpY2VOYW1lcyhiKSwgdGhpcy5wcm9kdWN0TmFtZXMoYildLmZpbHRlcihCb29sZWFuKS5qb2luKCcsICcpO1xuICAgIHJldHVybiBpdGVtcyA/IGAke21vZGVMYWJlbH0gwrcgJHtpdGVtc31gIDogbW9kZUxhYmVsO1xuICB9XG4gIHdoZW4oYjogQm9va2luZ1Jvdyk6IHN0cmluZyB7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGIuYm9va2luZ0RhdGUpLnRvTG9jYWxlRGF0ZVN0cmluZygnZW4tSU4nLCB7IHdlZWtkYXk6ICdzaG9ydCcsIGRheTogJ251bWVyaWMnLCBtb250aDogJ3Nob3J0JywgeWVhcjogJ251bWVyaWMnIH0pO1xuICAgIHJldHVybiBiLnN0YXJ0VGltZSA/IGAke2RhdGV9IMK3ICR7Yi5zdGFydFRpbWV9YCA6IGRhdGU7XG4gIH1cbiAgZGV0YWlsKGI6IEJvb2tpbmdSb3cpOiBzdHJpbmcge1xuICAgIGlmIChiLm1vZGUgPT09ICdIT01FX1ZJU0lUJyAmJiBiLmFkZHJlc3NEZXRhaWxzKSByZXR1cm4gYCR7Yi5hZGRyZXNzRGV0YWlscy5jaXR5fSwgJHtiLmFkZHJlc3NEZXRhaWxzLnN0YXRlfWA7XG4gICAgaWYgKGIubW9kZSA9PT0gJ1NUT1JFX1ZJU0lUJyAmJiBiLnN0b3JlTmFtZSkgcmV0dXJuIGIuc3RvcmVOYW1lO1xuICAgIHJldHVybiBiLmN1c3RvbWVyRGV0YWlsPy5uYW1lID8/ICcnO1xuICB9XG4gIHN0YXR1c0xhYmVsKHN0YXR1czogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoc3RhdHVzID09PSAnQ09NUExFVEVEJykgcmV0dXJuICdDb21wbGV0ZWQnO1xuICAgIGlmIChzdGF0dXMgPT09ICdDQU5DRUxMRUQnKSByZXR1cm4gJ0NhbmNlbGxlZCc7XG4gICAgaWYgKHN0YXR1cyA9PT0gJ0hPTEQnIHx8IHN0YXR1cyA9PT0gJ1BFTkRJTkcnKSByZXR1cm4gJ1BheW1lbnQgUGVuZGluZyc7XG4gICAgcmV0dXJuICdDb25maXJtZWQnO1xuICB9XG4gIHN0YXR1c0NsYXNzKHN0YXR1czogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoc3RhdHVzID09PSAnQ09NUExFVEVEJykgcmV0dXJuICdzdGF0dXMtY29tcGxldGVkJztcbiAgICBpZiAoc3RhdHVzID09PSAnQ0FOQ0VMTEVEJykgcmV0dXJuICdzdGF0dXMtY2FuY2VsbGVkJztcbiAgICBpZiAoc3RhdHVzID09PSAnSE9MRCcgfHwgc3RhdHVzID09PSAnUEVORElORycpIHJldHVybiAnc3RhdHVzLXBlbmRpbmcnO1xuICAgIHJldHVybiAnc3RhdHVzLWNvbmZpcm1lZCc7XG4gIH1cbiAgcGFpZExhYmVsKGI6IEJvb2tpbmdSb3cpOiBzdHJpbmcge1xuICAgIHJldHVybiBiLnRvdGFsQ29sbGVjdGVkQXRCb29raW5nICYmIGIudG90YWxDb2xsZWN0ZWRBdEJvb2tpbmcgPiAwID8gYOKCuSR7Yi50b3RhbENvbGxlY3RlZEF0Qm9va2luZ31gIDogJ05vdGhpbmcg4oCUIGZyZWUnO1xuICB9XG4gIHRvdGFsRHVlKGI6IEJvb2tpbmdSb3cpOiBudW1iZXIge1xuICAgIHJldHVybiAoYi50b3RhbFBheWFibGUgPz8gMCkgKyAoYi5ob21lVmlzaXRDaGFyZ2UgPz8gMCk7XG4gIH1cbiAgcGVuZGluZ0Ftb3VudChiOiBCb29raW5nUm93KTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5tYXgoMCwgdGhpcy50b3RhbER1ZShiKSAtIChiLnRvdGFsQ29sbGVjdGVkQXRCb29raW5nID8/IDApKTtcbiAgfVxuICBnZXQgY2FuQ2FuY2VsU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5zZWxlY3RlZCAmJiAodGhpcy5zZWxlY3RlZC5zdGF0dXMgPT09ICdIT0xEJyB8fCB0aGlzLnNlbGVjdGVkLnN0YXR1cyA9PT0gJ0JPT0tFRCcgfHwgdGhpcy5zZWxlY3RlZC5zdGF0dXMgPT09ICdQRU5ESU5HJyk7XG4gIH1cblxuICB2aWV3Qm9va2luZ0RldGFpbChiOiBCb29raW5nUm93KSB7XG4gICAgdGhpcy5zZWxlY3RlZCA9IGI7XG4gICAgdGhpcy5jdXJyZW50VGFiID0gJ0RFVEFJTCc7XG4gIH1cbiAgYmFja1RvTGlzdCgpIHtcbiAgICB0aGlzLmN1cnJlbnRUYWIgPSAnTElTVCc7XG4gICAgdGhpcy5zZWxlY3RlZCA9IG51bGw7XG4gIH1cblxuICBjYW5jZWxCb29raW5nKCkge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZCB8fCB0aGlzLmNhbmNlbGxpbmcpIHJldHVybjtcbiAgICB0aGlzLmNhbmNlbGxpbmcgPSB0cnVlO1xuICAgIHRoaXMucmVzdFNlcnZpY2UuY2FuY2VsQm9va2luZ0dyb3VwKHRoaXMuc2VsZWN0ZWQuZ3JvdXBJZCwgJ0NhbmNlbGxlZCBieSBjdXN0b21lcicpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmNhbmNlbGxpbmcgPSBmYWxzZTtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkKSB0aGlzLnNlbGVjdGVkLnN0YXR1cyA9ICdDQU5DRUxMRUQnO1xuICAgICAgdGhpcy5zcGxpdEJvb2tpbmdzKCk7XG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnc3VjY2VzcycsIHN1bW1hcnk6ICdCb29raW5nIGNhbmNlbGxlZCcgfSk7XG4gICAgfSwgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuY2FuY2VsbGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ2Vycm9yJywgc3VtbWFyeTogJ0Vycm9yJywgZGV0YWlsOiBlcnJvcj8uZXJyb3I/LmRldGFpbCA/PyAnQ291bGQgbm90IGNhbmNlbCB0aGlzIGJvb2tpbmcnIH0pO1xuICAgIH0pO1xuICB9XG59XG4iLCI8cC10b2FzdCBwb3NpdGlvbj1cImJvdHRvbS1yaWdodFwiPjwvcC10b2FzdD5cblxuPGRpdiBjbGFzcz1cIm1iLXJvb3RcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRUYWIgPT09ICdMSVNUJ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJtYi10aXRsZVwiPk15IEJvb2tpbmdzPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibWItdGFic1wiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtYi10YWJcIiBbY2xhc3MuYWN0aXZlXT1cInByb2ZUYWIgPT09ICd1cGNvbWluZydcIiAoY2xpY2spPVwic2V0UHJvZlRhYigndXBjb21pbmcnKVwiPlVwY29taW5nPC9idXR0b24+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm1iLXRhYlwiIFtjbGFzcy5hY3RpdmVdPVwicHJvZlRhYiA9PT0gJ3Bhc3QnXCIgKGNsaWNrKT1cInNldFByb2ZUYWIoJ3Bhc3QnKVwiPlBhc3Q8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJtYi1sb2FkaW5nXCIgKm5nSWY9XCJsb2FkaW5nXCI+TG9hZGluZyB5b3VyIGJvb2tpbmdz4oCmPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibWItcm93c1wiICpuZ0lmPVwiIWxvYWRpbmcgJiYgIWlzRW1wdHlcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibWItcm93XCIgKm5nRm9yPVwibGV0IGIgb2Ygcm93c1wiIChjbGljayk9XCJ2aWV3Qm9va2luZ0RldGFpbChiKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItcm93LXN0cmlwZVwiIFtuZ0NsYXNzXT1cImIubW9kZSA9PT0gJ0hPTUVfVklTSVQnID8gJ3N0cmlwZS1ob21lJyA6IGIubW9kZSA9PT0gJ1ZJREVPX0NBTEwnID8gJ3N0cmlwZS12aWRlbycgOiAnc3RyaXBlLXN0b3JlJ1wiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItcm93LWluZm9cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItcm93LXRvcFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLXJvdy10aXRsZVwiPnt7dGl0bGUoYil9fTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi1yb3ctd2hlblwiPnt7d2hlbihiKX19PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLXJvdy1kZXRhaWxcIj57e2RldGFpbChiKX19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItcm93LWVuZFwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWItc3RhdHVzXCIgW25nQ2xhc3NdPVwic3RhdHVzQ2xhc3MoYi5zdGF0dXMpXCI+e3tzdGF0dXNMYWJlbChiLnN0YXR1cyl9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJtYi1lbXB0eVwiICpuZ0lmPVwiaXNFbXB0eVwiPlxuICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWItZW1wdHktaWNvblwiPmV2ZW50X2J1c3k8L21hdC1pY29uPlxuICAgICAgPGRpdiBjbGFzcz1cIm1iLWVtcHR5LXRpdGxlXCI+Tm8ge3twcm9mVGFifX0gYm9va2luZ3MgeWV0LjwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudFRhYiA9PT0gJ0RFVEFJTCcgJiYgc2VsZWN0ZWRcIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm1iLWJhY2tcIiAoY2xpY2spPVwiYmFja1RvTGlzdCgpXCI+XG4gICAgICA8bWF0LWljb24+YXJyb3dfYmFjazwvbWF0LWljb24+IEJhY2sgdG8gTXkgQm9va2luZ3NcbiAgICA8L2J1dHRvbj5cblxuICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwtY2FyZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC1oZWFkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC10aXRsZS1yb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLXRpdGxlXCI+e3t0aXRsZShzZWxlY3RlZCl9fTwvZGl2PlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWItc3RhdHVzXCIgW25nQ2xhc3NdPVwic3RhdHVzQ2xhc3Moc2VsZWN0ZWQuc3RhdHVzKVwiPnt7c3RhdHVzTGFiZWwoc2VsZWN0ZWQuc3RhdHVzKX19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC13aGVuXCI+e3t3aGVuKHNlbGVjdGVkKX19PC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC1yb3dzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwtcm93XCIgKm5nSWY9XCJzZWxlY3RlZC5zZXJ2aWNlcz8ubGVuZ3RoXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC1rXCI+U2VydmljZXM8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLXZcIj57e3NlcnZpY2VOYW1lcyhzZWxlY3RlZCl9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC1yb3dcIiAqbmdJZj1cInNlbGVjdGVkLnByb2R1Y3RMaW5lcz8ubGVuZ3RoXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC1rXCI+UHJvZHVjdHM8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLXZcIj57e3Byb2R1Y3ROYW1lcyhzZWxlY3RlZCl9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC1yb3dcIiAqbmdJZj1cInNlbGVjdGVkLmN1c3RvbWVyRGV0YWlsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC1rXCI+Q29udGFjdDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwtdlwiPnt7c2VsZWN0ZWQuY3VzdG9tZXJEZXRhaWw/Lm5hbWV9fSDCtyB7e3NlbGVjdGVkLmN1c3RvbWVyRGV0YWlsPy5waG9uZU51bWJlcn19IMK3IHt7c2VsZWN0ZWQuY3VzdG9tZXJEZXRhaWw/LmVtYWlsfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwtcm93XCIgKm5nSWY9XCJzZWxlY3RlZC5tb2RlID09PSAnSE9NRV9WSVNJVCcgJiYgc2VsZWN0ZWQuYWRkcmVzc0RldGFpbHNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLWtcIj5BZGRyZXNzPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC12XCI+e3tzZWxlY3RlZC5hZGRyZXNzRGV0YWlscz8uYWRkcmVzc0xpbmUxfX0sIHt7c2VsZWN0ZWQuYWRkcmVzc0RldGFpbHM/LmNpdHl9fSwge3tzZWxlY3RlZC5hZGRyZXNzRGV0YWlscz8uc3RhdGV9fSB7e3NlbGVjdGVkLmFkZHJlc3NEZXRhaWxzPy56aXBDb2RlfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwtcm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC1rXCI+VG90YWw8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLXZcIj7igrl7e3RvdGFsRHVlKHNlbGVjdGVkKX19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLXJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwta1wiPlBhaWQ8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLXZcIj57e3BhaWRMYWJlbChzZWxlY3RlZCl9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC1yb3dcIiAqbmdJZj1cInBlbmRpbmdBbW91bnQoc2VsZWN0ZWQpID4gMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwta1wiPlBlbmRpbmcgYXQgYXBwb2ludG1lbnQ8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLXZcIj7igrl7e3BlbmRpbmdBbW91bnQoc2VsZWN0ZWQpfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm1iLXZpZGVvLWxpbmtcIiAqbmdJZj1cInNlbGVjdGVkLm1vZGUgPT09ICdWSURFT19DQUxMJyAmJiBzZWxlY3RlZC52aWRlb0NhbGxMaW5rICYmIHNlbGVjdGVkLnN0YXR1cyAhPT0gJ0NBTkNFTExFRCdcIj5cbiAgICAgICAgPG1hdC1pY29uPnZpZGVvY2FtPC9tYXQtaWNvbj5cbiAgICAgICAgPGEgW2hyZWZdPVwic2VsZWN0ZWQudmlkZW9DYWxsTGlua1wiIHRhcmdldD1cIl9ibGFua1wiPnt7c2VsZWN0ZWQudmlkZW9DYWxsTGlua319PC9hPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYW5DYW5jZWxTZWxlY3RlZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItcG9saWN5XCIgKm5nSWY9XCJjYW5jZWxsYXRpb25Qb2xpY3lcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItcG9saWN5LXRpdGxlXCI+e3tjYW5jZWxsYXRpb25Qb2xpY3kudGl0bGV9fTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi1wb2xpY3ktdGV4dFwiPnt7Y2FuY2VsbGF0aW9uUG9saWN5LnBvbGljeURldGFpbHN9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtYi1jYW5jZWwtYnRuXCIgW2Rpc2FibGVkXT1cImNhbmNlbGxpbmdcIiAoY2xpY2spPVwiY2FuY2VsQm9va2luZygpXCI+XG4gICAgICAgICAge3tjYW5jZWxsaW5nID8gJ0NhbmNlbGxpbmfigKYnIDogJ0NhbmNlbCBib29raW5nJ319XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYi1jYW5jZWxsZWQtbm90ZVwiICpuZ0lmPVwic2VsZWN0ZWQuc3RhdHVzID09PSAnQ0FOQ0VMTEVEJ1wiPlRoaXMgYm9va2luZyBoYXMgYmVlbiBjYW5jZWxsZWQuPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXktYm9va2luZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lbGVtZW50cy9teS1ib29raW5ncy9teS1ib29raW5ncy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL215LWJvb2tpbmdzL215LWJvb2tpbmdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQTBCNUM7Ozs7O0dBS0c7QUFTSCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLFlBQ21CLFdBQXdCLEVBQ3hCLGNBQXFDLEVBQ3JDLGNBQThCO1FBRjlCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQUNyQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFHakQsZUFBVSxHQUFzQixNQUFNLENBQUM7UUFDdkMsWUFBTyxHQUF3QixVQUFVLENBQUM7UUFDMUMsWUFBTyxHQUFHLElBQUksQ0FBQztRQUNmLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFWCxnQkFBVyxHQUFpQixFQUFFLENBQUM7UUFDdkMsYUFBUSxH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bEVZLFlBQVksNlZBQUUsYUFBYSxtTEFBRSxXQUFXOzs0RkFLdkMsbUJBQW1CO2tCQVIvQixTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLFdBQVcsQ0FBQyxhQUN4QyxDQUFDLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBUb2FzdE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9hc3QnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi8uLi9lY29tbWVyY2Uvc3R5bGVzL3VzZXIubW9kYWwnO1xuXG5pbnRlcmZhY2UgQm9va2luZ1JvdyB7XG4gIGdyb3VwSWQ6IHN0cmluZztcbiAgbW9kZTogJ1NUT1JFX1ZJU0lUJyB8ICdIT01FX1ZJU0lUJyB8ICdWSURFT19DQUxMJztcbiAgYm9va2luZ0RhdGU6IHN0cmluZztcbiAgc3RhcnRUaW1lPzogc3RyaW5nO1xuICBlbmRUaW1lPzogc3RyaW5nO1xuICBzdGF0dXM6ICdQRU5ESU5HJyB8ICdCT09LRUQnIHwgJ0hPTEQnIHwgJ0NPTVBMRVRFRCcgfCAnQ0FOQ0VMTEVEJztcbiAgc3RvcmVOYW1lPzogc3RyaW5nO1xuICBjdXN0b21lckRldGFpbD86IHsgbmFtZTogc3RyaW5nOyBwaG9uZU51bWJlcjogc3RyaW5nOyBlbWFpbDogc3RyaW5nIH07XG4gIGFkZHJlc3NEZXRhaWxzPzogeyByZWNlaXZlck5hbWU6IHN0cmluZzsgcmVjZWl2ZXJQaG9uZTogc3RyaW5nOyBhZGRyZXNzTGluZTE6IHN0cmluZzsgYWRkcmVzc0xpbmUyPzogc3RyaW5nOyBjaXR5OiBzdHJpbmc7IHN0YXRlOiBzdHJpbmc7IHppcENvZGU6IHN0cmluZyB9O1xuICBwcm9kdWN0TGluZXM/OiB7IGl0ZW1OYW1lOiBzdHJpbmc7IHF1YW50aXR5OiBudW1iZXIgfVtdO1xuICAvKiogTm90IHBhcnQgb2YgdGhlIEdFVCAvYm9va2luZy9ncm91cC9teSByZXNwb25zZSAtIHNlcnZpY2VzIGxpdmUgb24gdGhlIHNlcGFyYXRlXG4gICAqIEJvb2tpbmdEZXRhaWwgY29sbGVjdGlvbiAoRksnZCB2aWEgc2VydmljZUxpbmVJZHMsIG5vdCBkZW5vcm1hbGl6ZWQgb250byBCb29raW5nR3JvdXApLCBzb1xuICAgKiB0aGlzIGlzIGZpbGxlZCBpbiBjbGllbnQtc2lkZSBhZnRlciBsb2FkKCkgdmlhIGEgcGVyLXJvdyBHRVQgLi4uL2xpbmVzIGNhbGwuICovXG4gIHNlcnZpY2VzPzogeyBuYW1lOiBzdHJpbmc7IGR1cmF0aW9uTWludXRlczogbnVtYmVyOyBwcmljZTogbnVtYmVyIH1bXTtcbiAgdmlkZW9DYWxsTGluaz86IHN0cmluZztcbiAgdG90YWxDb2xsZWN0ZWRBdEJvb2tpbmc/OiBudW1iZXI7XG4gIHRvdGFsUGF5YWJsZT86IG51bWJlcjtcbiAgaG9tZVZpc2l0Q2hhcmdlPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFwiTXkgQm9va2luZ3NcIiAtIGEgY3VzdG9tZXIncyBvd24gYm9va2luZyBoaXN0b3J5IChVcGNvbWluZy9QYXN0KSwgYSBkZXRhaWwgdmlldyBwZXIgYm9va2luZyxcbiAqIGFuZCBjYW5jZWxsYXRpb24uIFRoZSBsaXN0IGVuZHBvaW50IHJldHVybnMgZnVsbCBCb29raW5nR3JvdXAgcmVjb3JkcyAtIGVub3VnaCBmb3JcbiAqIGRhdGUvc3RhdHVzL2FkZHJlc3MvcHJvZHVjdHMgLSBidXQgc2VydmljZXMgYm9va2VkIGFyZW4ndCBvbiB0aGF0IHJlY29yZCAoc2VlIEJvb2tpbmdSb3cuc2VydmljZXNcbiAqIGFib3ZlKSwgc28gbG9hZCgpIGlzc3VlcyBvbmUgZXh0cmEgR0VUIC4uLi9saW5lcyBjYWxsIHBlciByb3cgdG8gZmlsbCB0aGVtIGluLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzaW1wby1teS1ib29raW5ncycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdEljb25Nb2R1bGUsIFRvYXN0TW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbTWVzc2FnZVNlcnZpY2VdLFxuICB0ZW1wbGF0ZVVybDogJy4vbXktYm9va2luZ3MuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vbXktYm9va2luZ3MuY29tcG9uZW50LmNzcydcbn0pXG5leHBvcnQgY2xhc3MgTXlCb29raW5nc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcbiAgKSB7IH1cblxuICBjdXJyZW50VGFiOiAnTElTVCcgfCAnREVUQUlMJyA9ICdMSVNUJztcbiAgcHJvZlRhYjogJ3VwY29taW5nJyB8ICdwYXN0JyA9ICd1cGNvbWluZyc7XG4gIGxvYWRpbmcgPSB0cnVlO1xuICBjYW5jZWxsaW5nID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBhbGxCb29raW5nczogQm9va2luZ1Jvd1tdID0gW107XG4gIHVwY29taW5nOiBCb29raW5nUm93W10gPSBbXTtcbiAgcGFzdDogQm9va2luZ1Jvd1tdID0gW107XG4gIHNlbGVjdGVkOiBCb29raW5nUm93IHwgbnVsbCA9IG51bGw7XG4gIGNhbmNlbGxhdGlvblBvbGljeTogeyB0aXRsZTogc3RyaW5nOyBwb2xpY3lEZXRhaWxzOiBzdHJpbmcgfSB8IG51bGwgPSBudWxsO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubG9hZCgpO1xuICB9XG5cbiAgbG9hZCgpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIGNvbnN0IGJ1c2luZXNzSWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYnVzaW5lc3NJZCcpID8/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdiSWQnKSA/PyAnJztcbiAgICBjb25zdCB1c2VySWQgPSAodGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCkgYXMgVXNlcik/LnVzZXJJZCA/PyAnJztcbiAgICBpZiAoIWJ1c2luZXNzSWQgfHwgIXVzZXJJZCkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0TXlCb29raW5ncyhidXNpbmVzc0lkLCB1c2VySWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuYWxsQm9va2luZ3MgPSAocmVzID8/IFtdKSBhcyBCb29raW5nUm93W107XG4gICAgICB0aGlzLnNwbGl0Qm9va2luZ3MoKTtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5sb2FkU2VydmljZUxpbmVzKCk7XG4gICAgfSwgKCkgPT4ge1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldENhbmNlbGxhdGlvblBvbGljeShidXNpbmVzc0lkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICB0aGlzLmNhbmNlbGxhdGlvblBvbGljeSA9IChyZXMgPz8gW10pWzBdID8/IG51bGw7XG4gICAgfSwgKCkgPT4ge1xuICAgICAgLy8gTm9uLWZhdGFsIC0gdGhlIGRldGFpbCB2aWV3IGp1c3Qgd29uJ3Qgc2hvdyBhIHBvbGljeSBub3RlLlxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1VwY29taW5nKGI6IEJvb2tpbmdSb3cpOiBib29sZWFuIHtcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG4gICAgdG9kYXkuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgcmV0dXJuIChiLnN0YXR1cyA9PT0gJ0hPTEQnIHx8IGIuc3RhdHVzID09PSAnQk9PS0VEJyB8fCBiLnN0YXR1cyA9PT0gJ1BFTkRJTkcnKSAmJiBuZXcgRGF0ZShiLmJvb2tpbmdEYXRlKSA+PSB0b2RheTtcbiAgfVxuXG4gIHByaXZhdGUgc3BsaXRCb29raW5ncygpIHtcbiAgICB0aGlzLnVwY29taW5nID0gdGhpcy5hbGxCb29raW5ncy5maWx0ZXIoKGIpID0+IHRoaXMuaXNVcGNvbWluZyhiKSk7XG4gICAgdGhpcy5wYXN0ID0gdGhpcy5hbGxCb29raW5ncy5maWx0ZXIoKGIpID0+ICF0aGlzLmlzVXBjb21pbmcoYikpO1xuICB9XG5cbiAgLyoqIE9uZSBib29raW5nIGhpc3RvcnkgbG9hZCwgYm91bmRlZCB0byB0aGlzIGN1c3RvbWVyJ3Mgb3duIGJvb2tpbmdzIC0gYSBwZXItcm93IGNhbGwgaGVyZSBpc1xuICAgKiBmaW5lLCB1bmxpa2UgYW4gdW5ib3VuZGVkL3BhZ2luYXRlZCBsaXN0LiBGYWlsdXJlcyBhcmUgc3dhbGxvd2VkIHBlci1yb3cgKGZhbGxzIGJhY2sgdG8gbm9cbiAgICogc2VydmljZSBuYW1lcyBmb3IgdGhhdCByb3cpIHJhdGhlciB0aGFuIGJsb2NraW5nIHRoZSB3aG9sZSBwYWdlIG9uIG9uZSBiYWQgZ3JvdXAuICovXG4gIHByaXZhdGUgbG9hZFNlcnZpY2VMaW5lcygpIHtcbiAgICBpZiAoIXRoaXMuYWxsQm9va2luZ3MubGVuZ3RoKSByZXR1cm47XG4gICAgZm9ya0pvaW4oXG4gICAgICB0aGlzLmFsbEJvb2tpbmdzLm1hcCgoYikgPT5cbiAgICAgICAgdGhpcy5yZXN0U2VydmljZS5nZXRHcm91cExpbmVzKGIuZ3JvdXBJZCkucGlwZShjYXRjaEVycm9yKCgpID0+IG9mKFtdKSkpXG4gICAgICApXG4gICAgKS5zdWJzY3JpYmUoKGFsbExpbmVzOiBhbnlbXSkgPT4ge1xuICAgICAgdGhpcy5hbGxCb29raW5ncy5mb3JFYWNoKChiLCBpKSA9PiB7XG4gICAgICAgIGNvbnN0IGxpbmVzID0gYWxsTGluZXNbaV0gPz8gW107XG4gICAgICAgIGIuc2VydmljZXMgPSBsaW5lcy5mbGF0TWFwKChsOiBhbnkpID0+IChsLnNlcnZpY2VzID8/IFtdKS5tYXAoKHM6IGFueSkgPT4gKHtcbiAgICAgICAgICBuYW1lOiBzLm5hbWUsIGR1cmF0aW9uTWludXRlczogcy5kdXJhdGlvbk1pbnV0ZXMsIHByaWNlOiBzLnByaWNlXG4gICAgICAgIH0pKSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCByb3dzKCk6IEJvb2tpbmdSb3dbXSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZlRhYiA9PT0gJ3VwY29taW5nJyA/IHRoaXMudXBjb21pbmcgOiB0aGlzLnBhc3Q7XG4gIH1cbiAgZ2V0IGlzRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmxvYWRpbmcgJiYgdGhpcy5yb3dzLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIHNldFByb2ZUYWIodGFiOiAndXBjb21pbmcnIHwgJ3Bhc3QnKSB7XG4gICAgdGhpcy5wcm9mVGFiID0gdGFiO1xuICB9XG5cbiAgcHJvZHVjdE5hbWVzKGI6IEJvb2tpbmdSb3cpOiBzdHJpbmcge1xuICAgIHJldHVybiAoYi5wcm9kdWN0TGluZXMgPz8gW10pLm1hcCgocCkgPT4gcC5pdGVtTmFtZSkuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJywgJyk7XG4gIH1cbiAgc2VydmljZU5hbWVzKGI6IEJvb2tpbmdSb3cpOiBzdHJpbmcge1xuICAgIHJldHVybiAoYi5zZXJ2aWNlcyA/PyBbXSkubWFwKChzKSA9PiBzLm5hbWUpLmZpbHRlcihCb29sZWFuKS5qb2luKCcsICcpO1xuICB9XG4gIHRpdGxlKGI6IEJvb2tpbmdSb3cpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1vZGVMYWJlbCA9IGIubW9kZSA9PT0gJ0hPTUVfVklTSVQnID8gJ0hvbWUgVmlzaXQnIDogYi5tb2RlID09PSAnVklERU9fQ0FMTCcgPyAnVmlkZW8gQ2FsbCcgOiAnU3RvcmUgVmlzaXQnO1xuICAgIGNvbnN0IGl0ZW1zID0gW3RoaXMuc2VydmljZU5hbWVzKGIpLCB0aGlzLnByb2R1Y3ROYW1lcyhiKV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJywgJyk7XG4gICAgcmV0dXJuIGl0ZW1zID8gYCR7bW9kZUxhYmVsfSDCtyAke2l0ZW1zfWAgOiBtb2RlTGFiZWw7XG4gIH1cbiAgd2hlbihiOiBCb29raW5nUm93KTogc3RyaW5nIHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoYi5ib29raW5nRGF0ZSkudG9Mb2NhbGVEYXRlU3RyaW5nKCdlbi1JTicsIHsgd2Vla2RheTogJ3Nob3J0JywgZGF5OiAnbnVtZXJpYycsIG1vbnRoOiAnc2hvcnQnLCB5ZWFyOiAnbnVtZXJpYycgfSk7XG4gICAgcmV0dXJuIGIuc3RhcnRUaW1lID8gYCR7ZGF0ZX0gwrcgJHtiLnN0YXJ0VGltZX1gIDogZGF0ZTtcbiAgfVxuICBkZXRhaWwoYjogQm9va2luZ1Jvdyk6IHN0cmluZyB7XG4gICAgaWYgKGIubW9kZSA9PT0gJ0hPTUVfVklTSVQnICYmIGIuYWRkcmVzc0RldGFpbHMpIHJldHVybiBgJHtiLmFkZHJlc3NEZXRhaWxzLmNpdHl9LCAke2IuYWRkcmVzc0RldGFpbHMuc3RhdGV9YDtcbiAgICBpZiAoYi5tb2RlID09PSAnU1RPUkVfVklTSVQnICYmIGIuc3RvcmVOYW1lKSByZXR1cm4gYi5zdG9yZU5hbWU7XG4gICAgcmV0dXJuIGIuY3VzdG9tZXJEZXRhaWw/Lm5hbWUgPz8gJyc7XG4gIH1cbiAgc3RhdHVzTGFiZWwoc3RhdHVzOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChzdGF0dXMgPT09ICdDT01QTEVURUQnKSByZXR1cm4gJ0NvbXBsZXRlZCc7XG4gICAgaWYgKHN0YXR1cyA9PT0gJ0NBTkNFTExFRCcpIHJldHVybiAnQ2FuY2VsbGVkJztcbiAgICBpZiAoc3RhdHVzID09PSAnSE9MRCcgfHwgc3RhdHVzID09PSAnUEVORElORycpIHJldHVybiAnUGF5bWVudCBQZW5kaW5nJztcbiAgICByZXR1cm4gJ0NvbmZpcm1lZCc7XG4gIH1cbiAgc3RhdHVzQ2xhc3Moc3RhdHVzOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChzdGF0dXMgPT09ICdDT01QTEVURUQnKSByZXR1cm4gJ3N0YXR1cy1jb21wbGV0ZWQnO1xuICAgIGlmIChzdGF0dXMgPT09ICdDQU5DRUxMRUQnKSByZXR1cm4gJ3N0YXR1cy1jYW5jZWxsZWQnO1xuICAgIGlmIChzdGF0dXMgPT09ICdIT0xEJyB8fCBzdGF0dXMgPT09ICdQRU5ESU5HJykgcmV0dXJuICdzdGF0dXMtcGVuZGluZyc7XG4gICAgcmV0dXJuICdzdGF0dXMtY29uZmlybWVkJztcbiAgfVxuICBwYWlkTGFiZWwoYjogQm9va2luZ1Jvdyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGIudG90YWxDb2xsZWN0ZWRBdEJvb2tpbmcgJiYgYi50b3RhbENvbGxlY3RlZEF0Qm9va2luZyA+IDAgPyBg4oK5JHtiLnRvdGFsQ29sbGVjdGVkQXRCb29raW5nfWAgOiAnTm90aGluZyDigJQgZnJlZSc7XG4gIH1cbiAgc2VydmljZVByaWNlVG90YWwoYjogQm9va2luZ1Jvdyk6IG51bWJlciB7XG4gICAgcmV0dXJuIChiLnNlcnZpY2VzID8/IFtdKS5yZWR1Y2UoKHN1bSwgcykgPT4gc3VtICsgKHMucHJpY2UgfHwgMCksIDApO1xuICB9XG4gIHRvdGFsRHVlKGI6IEJvb2tpbmdSb3cpOiBudW1iZXIge1xuICAgIHJldHVybiAoYi50b3RhbFBheWFibGUgPz8gMCkgKyAoYi5ob21lVmlzaXRDaGFyZ2UgPz8gMCk7XG4gIH1cbiAgcGVuZGluZ0Ftb3VudChiOiBCb29raW5nUm93KTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5tYXgoMCwgdGhpcy50b3RhbER1ZShiKSAtIChiLnRvdGFsQ29sbGVjdGVkQXRCb29raW5nID8/IDApKTtcbiAgfVxuICBnZXQgY2FuQ2FuY2VsU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5zZWxlY3RlZCAmJiAodGhpcy5zZWxlY3RlZC5zdGF0dXMgPT09ICdIT0xEJyB8fCB0aGlzLnNlbGVjdGVkLnN0YXR1cyA9PT0gJ0JPT0tFRCcgfHwgdGhpcy5zZWxlY3RlZC5zdGF0dXMgPT09ICdQRU5ESU5HJyk7XG4gIH1cblxuICB2aWV3Qm9va2luZ0RldGFpbChiOiBCb29raW5nUm93KSB7XG4gICAgdGhpcy5zZWxlY3RlZCA9IGI7XG4gICAgdGhpcy5jdXJyZW50VGFiID0gJ0RFVEFJTCc7XG4gIH1cbiAgYmFja1RvTGlzdCgpIHtcbiAgICB0aGlzLmN1cnJlbnRUYWIgPSAnTElTVCc7XG4gICAgdGhpcy5zZWxlY3RlZCA9IG51bGw7XG4gIH1cblxuICBjYW5jZWxCb29raW5nKCkge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZCB8fCB0aGlzLmNhbmNlbGxpbmcpIHJldHVybjtcbiAgICB0aGlzLmNhbmNlbGxpbmcgPSB0cnVlO1xuICAgIHRoaXMucmVzdFNlcnZpY2UuY2FuY2VsQm9va2luZ0dyb3VwKHRoaXMuc2VsZWN0ZWQuZ3JvdXBJZCwgJ0NhbmNlbGxlZCBieSBjdXN0b21lcicpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmNhbmNlbGxpbmcgPSBmYWxzZTtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkKSB0aGlzLnNlbGVjdGVkLnN0YXR1cyA9ICdDQU5DRUxMRUQnO1xuICAgICAgdGhpcy5zcGxpdEJvb2tpbmdzKCk7XG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnc3VjY2VzcycsIHN1bW1hcnk6ICdCb29raW5nIGNhbmNlbGxlZCcgfSk7XG4gICAgfSwgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuY2FuY2VsbGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ2Vycm9yJywgc3VtbWFyeTogJ0Vycm9yJywgZGV0YWlsOiBlcnJvcj8uZXJyb3I/LmRldGFpbCA/PyAnQ291bGQgbm90IGNhbmNlbCB0aGlzIGJvb2tpbmcnIH0pO1xuICAgIH0pO1xuICB9XG59XG4iLCI8cC10b2FzdCBwb3NpdGlvbj1cImJvdHRvbS1yaWdodFwiPjwvcC10b2FzdD5cblxuPGRpdiBjbGFzcz1cIm1iLXJvb3RcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRUYWIgPT09ICdMSVNUJ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJtYi10aXRsZVwiPk15IEJvb2tpbmdzPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibWItdGFic1wiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtYi10YWJcIiBbY2xhc3MuYWN0aXZlXT1cInByb2ZUYWIgPT09ICd1cGNvbWluZydcIiAoY2xpY2spPVwic2V0UHJvZlRhYigndXBjb21pbmcnKVwiPlVwY29taW5nPC9idXR0b24+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm1iLXRhYlwiIFtjbGFzcy5hY3RpdmVdPVwicHJvZlRhYiA9PT0gJ3Bhc3QnXCIgKGNsaWNrKT1cInNldFByb2ZUYWIoJ3Bhc3QnKVwiPlBhc3Q8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJtYi1sb2FkaW5nXCIgKm5nSWY9XCJsb2FkaW5nXCI+TG9hZGluZyB5b3VyIGJvb2tpbmdz4oCmPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibWItcm93c1wiICpuZ0lmPVwiIWxvYWRpbmcgJiYgIWlzRW1wdHlcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibWItcm93XCIgKm5nRm9yPVwibGV0IGIgb2Ygcm93c1wiIChjbGljayk9XCJ2aWV3Qm9va2luZ0RldGFpbChiKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItcm93LXN0cmlwZVwiIFtuZ0NsYXNzXT1cImIubW9kZSA9PT0gJ0hPTUVfVklTSVQnID8gJ3N0cmlwZS1ob21lJyA6IGIubW9kZSA9PT0gJ1ZJREVPX0NBTEwnID8gJ3N0cmlwZS12aWRlbycgOiAnc3RyaXBlLXN0b3JlJ1wiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItcm93LWluZm9cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItcm93LXRvcFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLXJvdy10aXRsZVwiPnt7dGl0bGUoYil9fTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi1yb3ctd2hlblwiPnt7d2hlbihiKX19PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLXJvdy1kZXRhaWxcIj57e2RldGFpbChiKX19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItcm93LWVuZFwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWItc3RhdHVzXCIgW25nQ2xhc3NdPVwic3RhdHVzQ2xhc3MoYi5zdGF0dXMpXCI+e3tzdGF0dXNMYWJlbChiLnN0YXR1cyl9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJtYi1lbXB0eVwiICpuZ0lmPVwiaXNFbXB0eVwiPlxuICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWItZW1wdHktaWNvblwiPmV2ZW50X2J1c3k8L21hdC1pY29uPlxuICAgICAgPGRpdiBjbGFzcz1cIm1iLWVtcHR5LXRpdGxlXCI+Tm8ge3twcm9mVGFifX0gYm9va2luZ3MgeWV0LjwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudFRhYiA9PT0gJ0RFVEFJTCcgJiYgc2VsZWN0ZWRcIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm1iLWJhY2tcIiAoY2xpY2spPVwiYmFja1RvTGlzdCgpXCI+XG4gICAgICA8bWF0LWljb24+YXJyb3dfYmFjazwvbWF0LWljb24+IEJhY2sgdG8gTXkgQm9va2luZ3NcbiAgICA8L2J1dHRvbj5cblxuICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwtY2FyZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC1oZWFkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC10aXRsZS1yb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLXRpdGxlXCI+e3t0aXRsZShzZWxlY3RlZCl9fTwvZGl2PlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWItc3RhdHVzXCIgW25nQ2xhc3NdPVwic3RhdHVzQ2xhc3Moc2VsZWN0ZWQuc3RhdHVzKVwiPnt7c3RhdHVzTGFiZWwoc2VsZWN0ZWQuc3RhdHVzKX19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC13aGVuXCI+e3t3aGVuKHNlbGVjdGVkKX19PC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC1yb3dzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwtcm93XCIgKm5nSWY9XCJzZWxlY3RlZC5zZXJ2aWNlcz8ubGVuZ3RoXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC1rXCI+U2VydmljZXM8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLXZcIj57e3NlcnZpY2VOYW1lcyhzZWxlY3RlZCl9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC1yb3dcIiAqbmdJZj1cInNlbGVjdGVkLnByb2R1Y3RMaW5lcz8ubGVuZ3RoXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC1rXCI+UHJvZHVjdHM8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLXZcIj57e3Byb2R1Y3ROYW1lcyhzZWxlY3RlZCl9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC1yb3dcIiAqbmdJZj1cInNlbGVjdGVkLmN1c3RvbWVyRGV0YWlsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC1rXCI+Q29udGFjdDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwtdlwiPnt7c2VsZWN0ZWQuY3VzdG9tZXJEZXRhaWw/Lm5hbWV9fSDCtyB7e3NlbGVjdGVkLmN1c3RvbWVyRGV0YWlsPy5waG9uZU51bWJlcn19IMK3IHt7c2VsZWN0ZWQuY3VzdG9tZXJEZXRhaWw/LmVtYWlsfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwtcm93XCIgKm5nSWY9XCJzZWxlY3RlZC5tb2RlID09PSAnSE9NRV9WSVNJVCcgJiYgc2VsZWN0ZWQuYWRkcmVzc0RldGFpbHNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLWtcIj5BZGRyZXNzPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC12XCI+e3tzZWxlY3RlZC5hZGRyZXNzRGV0YWlscz8uYWRkcmVzc0xpbmUxfX0sIHt7c2VsZWN0ZWQuYWRkcmVzc0RldGFpbHM/LmNpdHl9fSwge3tzZWxlY3RlZC5hZGRyZXNzRGV0YWlscz8uc3RhdGV9fSB7e3NlbGVjdGVkLmFkZHJlc3NEZXRhaWxzPy56aXBDb2RlfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwtcm93XCIgKm5nSWY9XCJzZXJ2aWNlUHJpY2VUb3RhbChzZWxlY3RlZCkgPiAwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC1rXCI+U2VydmljZSBwcmljZTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwtdlwiPuKCuXt7c2VydmljZVByaWNlVG90YWwoc2VsZWN0ZWQpfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwtcm93XCIgKm5nSWY9XCJzZWxlY3RlZC5ob21lVmlzaXRDaGFyZ2VcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLWtcIj5Ib21lIHZpc2l0IGNoYXJnZTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwtdlwiPuKCuXt7c2VsZWN0ZWQuaG9tZVZpc2l0Q2hhcmdlfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwtcm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC1rXCI+VG90YWw8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLXZcIj7igrl7e3RvdGFsRHVlKHNlbGVjdGVkKX19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLXJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwta1wiPlBhaWQ8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLXZcIj57e3BhaWRMYWJlbChzZWxlY3RlZCl9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC1yb3dcIiAqbmdJZj1cInBlbmRpbmdBbW91bnQoc2VsZWN0ZWQpID4gMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwta1wiPlBlbmRpbmcgYXQgYXBwb2ludG1lbnQ8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLXZcIj7igrl7e3BlbmRpbmdBbW91bnQoc2VsZWN0ZWQpfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm1iLXZpZGVvLWxpbmtcIiAqbmdJZj1cInNlbGVjdGVkLm1vZGUgPT09ICdWSURFT19DQUxMJyAmJiBzZWxlY3RlZC52aWRlb0NhbGxMaW5rICYmIHNlbGVjdGVkLnN0YXR1cyAhPT0gJ0NBTkNFTExFRCdcIj5cbiAgICAgICAgPG1hdC1pY29uPnZpZGVvY2FtPC9tYXQtaWNvbj5cbiAgICAgICAgPGEgW2hyZWZdPVwic2VsZWN0ZWQudmlkZW9DYWxsTGlua1wiIHRhcmdldD1cIl9ibGFua1wiPnt7c2VsZWN0ZWQudmlkZW9DYWxsTGlua319PC9hPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYW5DYW5jZWxTZWxlY3RlZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItcG9saWN5XCIgKm5nSWY9XCJjYW5jZWxsYXRpb25Qb2xpY3lcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItcG9saWN5LXRpdGxlXCI+e3tjYW5jZWxsYXRpb25Qb2xpY3kudGl0bGV9fTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi1wb2xpY3ktdGV4dFwiPnt7Y2FuY2VsbGF0aW9uUG9saWN5LnBvbGljeURldGFpbHN9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtYi1jYW5jZWwtYnRuXCIgW2Rpc2FibGVkXT1cImNhbmNlbGxpbmdcIiAoY2xpY2spPVwiY2FuY2VsQm9va2luZygpXCI+XG4gICAgICAgICAge3tjYW5jZWxsaW5nID8gJ0NhbmNlbGxpbmfigKYnIDogJ0NhbmNlbCBib29raW5nJ319XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYi1jYW5jZWxsZWQtbm90ZVwiICpuZ0lmPVwic2VsZWN0ZWQuc3RhdHVzID09PSAnQ0FOQ0VMTEVEJ1wiPlRoaXMgYm9va2luZyBoYXMgYmVlbiBjYW5jZWxsZWQuPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=