@dereekb/dbx-form 9.24.43 → 9.24.45

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.
@@ -36,7 +36,7 @@ export class DbxScheduleSelectionCalendarSelectionToggleButtonComponent {
36
36
  case 'none':
37
37
  buttonDisplay = {
38
38
  icon: 'clear',
39
- text: 'Clear Selection'
39
+ text: 'Clear All'
40
40
  };
41
41
  break;
42
42
  }
@@ -68,4 +68,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
68
68
  }], ctorParameters: function () { return [{ type: i1.DbxPopoverService }, { type: i2.DbxCalendarScheduleSelectionStore }, { type: i0.Injector }]; }, propDecorators: { disabled: [{
69
69
  type: Input
70
70
  }] } });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLnRvZ2dsZS5idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vY2FsZW5kYXIvc3JjL2xpYi9jYWxlbmRhci5zY2hlZHVsZS5zZWxlY3Rpb24udG9nZ2xlLmJ1dHRvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7OztBQUl4Rjs7R0FFRztBQU9ILE1BQU0sT0FBTywwREFBMEQ7SUF3Q3JFLFlBQXFCLGNBQWlDLEVBQVcsaUNBQW9FLEVBQVcsUUFBa0I7UUFBN0ksbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQVcsc0NBQWlDLEdBQWpDLGlDQUFpQyxDQUFtQztRQUFXLGFBQVEsR0FBUixRQUFRLENBQVU7UUF2QzFKLGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBaUIsS0FBSyxDQUFDLENBQUM7UUFFdEQsbUJBQWMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDM0MsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDckIsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDakI7aUJBQU07Z0JBQ0wsT0FBTyxJQUFJLENBQUMsaUNBQWlDLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3pGO1FBQ0gsQ0FBQyxDQUFDLEVBQ0Ysb0JBQW9CLEVBQUUsRUFDdEIsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7UUFFTyxtQkFBYyxHQUFHLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQ3hGLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ1IsSUFBSSxhQUFzQyxDQUFDO1lBRTNDLFFBQVEsQ0FBQyxFQUFFO2dCQUNULEtBQUssS0FBSztvQkFDUixhQUFhLEdBQUc7d0JBQ2QsSUFBSSxFQUFFLFlBQVk7d0JBQ2xCLElBQUksRUFBRSxZQUFZO3FCQUNuQixDQUFDO29CQUNGLE1BQU07Z0JBQ1IsUUFBUTtnQkFDUixLQUFLLE1BQU07b0JBQ1QsYUFBYSxHQUFHO3dCQUNkLElBQUksRUFBRSxPQUFPO3dCQUNiLElBQUksRUFBRSxpQkFBaUI7cUJBQ3hCLENBQUM7b0JBQ0YsTUFBTTthQUNUO1lBRUQsT0FBTyxhQUFhLENBQUM7UUFDdkIsQ0FBQyxDQUFDLEVBQ0YsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7SUFFbUssQ0FBQztJQUV0SyxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMzRCxDQUFDO0lBRUQsSUFDSSxRQUFRLENBQUMsUUFBd0I7UUFDbkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEMsQ0FBQzs7d0pBckRVLDBEQUEwRDs0SUFBMUQsMERBQTBELGlJQUozRDs7R0FFVDs0RkFFVSwwREFBMEQ7a0JBTnRFLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHlEQUF5RDtvQkFDbkUsUUFBUSxFQUFFOztHQUVUO2lCQUNGOytLQW9ESyxRQUFRO3NCQURYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBJbnB1dCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYnhQb3BvdmVyU2VydmljZSB9IGZyb20gJ0BkZXJlZWtiL2RieC13ZWInO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBvZiwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlIH0gZnJvbSAnLi9jYWxlbmRhci5zY2hlZHVsZS5zZWxlY3Rpb24uc3RvcmUnO1xuaW1wb3J0IHsgRGJ4QnV0dG9uRGlzcGxheUNvbnRlbnQgfSBmcm9tICdAZGVyZWVrYi9kYngtY29yZSc7XG5pbXBvcnQgeyBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuXG4vKipcbiAqIFRvZ2dsZSBidXR0b24gZm9yIHNlbGVjdGluZyBhbmQgY2xlYXJpbmcgdGhlIGN1cnJlbnQgc2VsZWN0aW9uLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYngtc2NoZWR1bGUtc2VsZWN0aW9uLWNhbGVuZGFyLXNlbGVjdGlvbi10b2dnbGUtYnV0dG9uJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGJ4LWJ1dHRvbiBbZGlzYWJsZWRdPVwiZGlzYWJsZUJ1dHRvbiQgfCBhc3luY1wiIFtidXR0b25EaXNwbGF5XT1cImJ1dHRvbkRpc3BsYXkkIHwgYXN5bmNcIiBbcmFpc2VkXT1cInRydWVcIiAoYnV0dG9uQ2xpY2spPVwidG9nZ2xlU2VsZWN0aW9uKClcIj48L2RieC1idXR0b24+XG4gIGBcbn0pXG5leHBvcnQgY2xhc3MgRGJ4U2NoZWR1bGVTZWxlY3Rpb25DYWxlbmRhclNlbGVjdGlvblRvZ2dsZUJ1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX2Rpc2FibGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxib29sZWFuPj4oZmFsc2UpO1xuXG4gIHJlYWRvbmx5IGRpc2FibGVCdXR0b24kID0gdGhpcy5fZGlzYWJsZWQucGlwZShcbiAgICBzd2l0Y2hNYXAoKGRpc2FibGVkKSA9PiB7XG4gICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLm5leHRUb2dnbGVTZWxlY3Rpb24kLnBpcGUobWFwKCh4KSA9PiAheCkpO1xuICAgICAgfVxuICAgIH0pLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBidXR0b25EaXNwbGF5JCA9IHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLm5leHRUb2dnbGVTZWxlY3Rpb24kLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB7XG4gICAgICBsZXQgYnV0dG9uRGlzcGxheTogRGJ4QnV0dG9uRGlzcGxheUNvbnRlbnQ7XG5cbiAgICAgIHN3aXRjaCAoeCkge1xuICAgICAgICBjYXNlICdhbGwnOlxuICAgICAgICAgIGJ1dHRvbkRpc3BsYXkgPSB7XG4gICAgICAgICAgICBpY29uOiAnc2VsZWN0X2FsbCcsXG4gICAgICAgICAgICB0ZXh0OiAnU2VsZWN0IEFsbCdcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICBjYXNlICdub25lJzpcbiAgICAgICAgICBidXR0b25EaXNwbGF5ID0ge1xuICAgICAgICAgICAgaWNvbjogJ2NsZWFyJyxcbiAgICAgICAgICAgIHRleHQ6ICdDbGVhciBTZWxlY3Rpb24nXG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGJ1dHRvbkRpc3BsYXk7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBwb3BvdmVyU2VydmljZTogRGJ4UG9wb3ZlclNlcnZpY2UsIHJlYWRvbmx5IGRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZTogRGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLCByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IpIHt9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzYWJsZWQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHRvZ2dsZVNlbGVjdGlvbigpIHtcbiAgICB0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS50b2dnbGVTZWxlY3Rpb24oKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBkaXNhYmxlZChkaXNhYmxlZDogTWF5YmU8Ym9vbGVhbj4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZC5uZXh0KGRpc2FibGVkKTtcbiAgfVxufVxuIl19
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLnRvZ2dsZS5idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vY2FsZW5kYXIvc3JjL2xpYi9jYWxlbmRhci5zY2hlZHVsZS5zZWxlY3Rpb24udG9nZ2xlLmJ1dHRvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7OztBQUl4Rjs7R0FFRztBQU9ILE1BQU0sT0FBTywwREFBMEQ7SUF3Q3JFLFlBQXFCLGNBQWlDLEVBQVcsaUNBQW9FLEVBQVcsUUFBa0I7UUFBN0ksbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQVcsc0NBQWlDLEdBQWpDLGlDQUFpQyxDQUFtQztRQUFXLGFBQVEsR0FBUixRQUFRLENBQVU7UUF2QzFKLGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBaUIsS0FBSyxDQUFDLENBQUM7UUFFdEQsbUJBQWMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDM0MsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDckIsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDakI7aUJBQU07Z0JBQ0wsT0FBTyxJQUFJLENBQUMsaUNBQWlDLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3pGO1FBQ0gsQ0FBQyxDQUFDLEVBQ0Ysb0JBQW9CLEVBQUUsRUFDdEIsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7UUFFTyxtQkFBYyxHQUFHLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQ3hGLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ1IsSUFBSSxhQUFzQyxDQUFDO1lBRTNDLFFBQVEsQ0FBQyxFQUFFO2dCQUNULEtBQUssS0FBSztvQkFDUixhQUFhLEdBQUc7d0JBQ2QsSUFBSSxFQUFFLFlBQVk7d0JBQ2xCLElBQUksRUFBRSxZQUFZO3FCQUNuQixDQUFDO29CQUNGLE1BQU07Z0JBQ1IsUUFBUTtnQkFDUixLQUFLLE1BQU07b0JBQ1QsYUFBYSxHQUFHO3dCQUNkLElBQUksRUFBRSxPQUFPO3dCQUNiLElBQUksRUFBRSxXQUFXO3FCQUNsQixDQUFDO29CQUNGLE1BQU07YUFDVDtZQUVELE9BQU8sYUFBYSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxFQUNGLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO0lBRW1LLENBQUM7SUFFdEssV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsaUNBQWlDLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDM0QsQ0FBQztJQUVELElBQ0ksUUFBUSxDQUFDLFFBQXdCO1FBQ25DLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7O3dKQXJEVSwwREFBMEQ7NElBQTFELDBEQUEwRCxpSUFKM0Q7O0dBRVQ7NEZBRVUsMERBQTBEO2tCQU50RSxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx5REFBeUQ7b0JBQ25FLFFBQVEsRUFBRTs7R0FFVDtpQkFDRjsrS0FvREssUUFBUTtzQkFEWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RvciwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGJ4UG9wb3ZlclNlcnZpY2UgfSBmcm9tICdAZGVyZWVrYi9kYngtd2ViJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgb2YsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZSB9IGZyb20gJy4vY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLnN0b3JlJztcbmltcG9ydCB7IERieEJ1dHRvbkRpc3BsYXlDb250ZW50IH0gZnJvbSAnQGRlcmVla2IvZGJ4LWNvcmUnO1xuaW1wb3J0IHsgTWF5YmUgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcblxuLyoqXG4gKiBUb2dnbGUgYnV0dG9uIGZvciBzZWxlY3RpbmcgYW5kIGNsZWFyaW5nIHRoZSBjdXJyZW50IHNlbGVjdGlvbi5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGJ4LXNjaGVkdWxlLXNlbGVjdGlvbi1jYWxlbmRhci1zZWxlY3Rpb24tdG9nZ2xlLWJ1dHRvbicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRieC1idXR0b24gW2Rpc2FibGVkXT1cImRpc2FibGVCdXR0b24kIHwgYXN5bmNcIiBbYnV0dG9uRGlzcGxheV09XCJidXR0b25EaXNwbGF5JCB8IGFzeW5jXCIgW3JhaXNlZF09XCJ0cnVlXCIgKGJ1dHRvbkNsaWNrKT1cInRvZ2dsZVNlbGVjdGlvbigpXCI+PC9kYngtYnV0dG9uPlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJTZWxlY3Rpb25Ub2dnbGVCdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9kaXNhYmxlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8Ym9vbGVhbj4+KGZhbHNlKTtcblxuICByZWFkb25seSBkaXNhYmxlQnV0dG9uJCA9IHRoaXMuX2Rpc2FibGVkLnBpcGUoXG4gICAgc3dpdGNoTWFwKChkaXNhYmxlZCkgPT4ge1xuICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5uZXh0VG9nZ2xlU2VsZWN0aW9uJC5waXBlKG1hcCgoeCkgPT4gIXgpKTtcbiAgICAgIH1cbiAgICB9KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgYnV0dG9uRGlzcGxheSQgPSB0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5uZXh0VG9nZ2xlU2VsZWN0aW9uJC5waXBlKFxuICAgIG1hcCgoeCkgPT4ge1xuICAgICAgbGV0IGJ1dHRvbkRpc3BsYXk6IERieEJ1dHRvbkRpc3BsYXlDb250ZW50O1xuXG4gICAgICBzd2l0Y2ggKHgpIHtcbiAgICAgICAgY2FzZSAnYWxsJzpcbiAgICAgICAgICBidXR0b25EaXNwbGF5ID0ge1xuICAgICAgICAgICAgaWNvbjogJ3NlbGVjdF9hbGwnLFxuICAgICAgICAgICAgdGV4dDogJ1NlbGVjdCBBbGwnXG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgY2FzZSAnbm9uZSc6XG4gICAgICAgICAgYnV0dG9uRGlzcGxheSA9IHtcbiAgICAgICAgICAgIGljb246ICdjbGVhcicsXG4gICAgICAgICAgICB0ZXh0OiAnQ2xlYXIgQWxsJ1xuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBidXR0b25EaXNwbGF5O1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgcG9wb3ZlclNlcnZpY2U6IERieFBvcG92ZXJTZXJ2aWNlLCByZWFkb25seSBkYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmU6IERieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZSwgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc2FibGVkLmNvbXBsZXRlKCk7XG4gIH1cblxuICB0b2dnbGVTZWxlY3Rpb24oKSB7XG4gICAgdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUudG9nZ2xlU2VsZWN0aW9uKCk7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgZGlzYWJsZWQoZGlzYWJsZWQ6IE1heWJlPGJvb2xlYW4+KSB7XG4gICAgdGhpcy5fZGlzYWJsZWQubmV4dChkaXNhYmxlZCk7XG4gIH1cbn1cbiJdfQ==
@@ -35,7 +35,7 @@ export class DbxPickableListFieldItemListComponent extends AbstractDbxSelectionL
35
35
  }
36
36
  }
37
37
  DbxPickableListFieldItemListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxPickableListFieldItemListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
38
- DbxPickableListFieldItemListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxPickableListFieldItemListComponent, selector: "dbx-form-pickable-item-field-item-list", usesInheritance: true, ngImport: i0, template: "\n<dbx-list [state$]=\"state$\" [config]=\"config$ | async\" [disabled]=\"disabled\" [selectionMode]=\"selectionMode\">\n <ng-content top select=\"[top]\"></ng-content>\n <ng-content bottom select=\"[bottom]\"></ng-content>\n <ng-content empty select=\"[empty]\"></ng-content>\n</dbx-list>\n", isInline: true, dependencies: [{ kind: "component", type: i2.DbxListComponent, selector: "dbx-list", inputs: ["padded", "state$", "config", "disabled", "selectionMode"], outputs: ["contentScrolled"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] });
38
+ DbxPickableListFieldItemListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxPickableListFieldItemListComponent, selector: "dbx-form-pickable-item-field-item-list", usesInheritance: true, ngImport: i0, template: "\n<dbx-list [state$]=\"state$\" [config]=\"config$ | async\" [disabled]=\"disabled\" [selectionMode]=\"selectionMode\">\n <ng-content top select=\"[top]\"></ng-content>\n <ng-content bottom select=\"[bottom]\"></ng-content>\n <ng-content empty select=\"[empty]\"></ng-content>\n <ng-content emptyLoading select=\"[emptyLoading]\"></ng-content>\n</dbx-list>\n", isInline: true, dependencies: [{ kind: "component", type: i2.DbxListComponent, selector: "dbx-list", inputs: ["padded", "state$", "config", "disabled", "selectionMode"], outputs: ["contentScrolled"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] });
39
39
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxPickableListFieldItemListComponent, decorators: [{
40
40
  type: Component,
41
41
  args: [{
@@ -9,6 +9,7 @@ import { asObservableFromGetter, filterMaybe, skipFirstMaybe, SubscriptionObject
9
9
  import { DbxDateTimeValueMode, dbxDateRangeIsSameDateRangeFieldValue, dbxDateTimeInputValueParseFactory, dbxDateTimeOutputValueFactory } from './date.value';
10
10
  import { DbxDateTimeFieldMenuPresetsService } from './datetime.field.service';
11
11
  import { DateAdapter } from '@angular/material/core';
12
+ import { isAfter } from 'date-fns';
12
13
  import * as i0 from "@angular/core";
13
14
  import * as i1 from "./datetime.field.service";
14
15
  import * as i2 from "@angular/common";
@@ -136,6 +137,7 @@ export class DbxFixedDateRangeFieldComponent extends FieldType {
136
137
  }
137
138
  dateRangeSelectionForMode(mode) {
138
139
  const result = combineLatest([this.dateRangeInput$, this.limitDateTimeInstance$]).pipe(switchMap(([dateRangeInput, limitInstance]) => {
140
+ const hasDateRangeConfiguration = Boolean(dateRangeInput);
139
141
  const minMaxClamp = (dateRange) => limitInstance.clampDateRange(dateRange);
140
142
  if (mode === 'single') {
141
143
  // only use the start date.
@@ -148,6 +150,7 @@ export class DbxFixedDateRangeFieldComponent extends FieldType {
148
150
  // take the first date, then wait unless the date is outside of the range.
149
151
  return this.selectedDateRange$.pipe(scan((acc, nextDateRange) => {
150
152
  let result;
153
+ let pickType = 'start';
151
154
  if (nextDateRange && nextDateRange.start != null) {
152
155
  const { start: startOrNextDate, end } = nextDateRange;
153
156
  const potentialBoundary = dateRange({ ...dateRangeInput, date: startOrNextDate });
@@ -163,7 +166,43 @@ export class DbxFixedDateRangeFieldComponent extends FieldType {
163
166
  else {
164
167
  let range = undefined;
165
168
  let boundary = potentialBoundary;
166
- if (acc.boundary && isDateInDateRange(startOrNextDate, acc.boundary)) {
169
+ if (mode === 'normal') {
170
+ if (!hasDateRangeConfiguration) {
171
+ // if there is no configured range/boundary, then just set the pick type based on the last type
172
+ boundary = undefined;
173
+ pickType = acc.lastPickType === 'start' ? 'end' : 'start';
174
+ }
175
+ else {
176
+ // if the pick is outside the boundary, then consider it a start pick type.
177
+ pickType = acc.lastPickType === 'start' && acc.boundary && isDateInDateRange(startOrNextDate, acc.boundary) ? 'end' : 'start';
178
+ }
179
+ // assert the start exists from the previous click, otherwise clear it.
180
+ if (pickType === 'end') {
181
+ const lastStart = acc.lastDateRange?.start;
182
+ if (!lastStart || !isAfter(startOrNextDate, lastStart)) {
183
+ pickType = 'start';
184
+ }
185
+ }
186
+ // react based on how this
187
+ switch (pickType) {
188
+ case 'end':
189
+ // if we're picking the end then set the range.
190
+ range = {
191
+ start: acc.lastDateRange?.start,
192
+ end: startOrNextDate
193
+ };
194
+ boundary = range;
195
+ break;
196
+ case 'start':
197
+ // retain the boundary as potential boundary, and set our new range from the single date.
198
+ range = {
199
+ start: startOrNextDate,
200
+ end: startOrNextDate
201
+ };
202
+ break;
203
+ }
204
+ }
205
+ else if (acc.boundary && isDateInDateRange(startOrNextDate, acc.boundary)) {
167
206
  // if in the date range, uses the pick as the last date.
168
207
  range = {
169
208
  start: acc.boundary.start,
@@ -181,6 +220,7 @@ export class DbxFixedDateRangeFieldComponent extends FieldType {
181
220
  }
182
221
  }
183
222
  else {
223
+ // retain same boundary
184
224
  boundary = acc.boundary;
185
225
  }
186
226
  }
@@ -201,6 +241,7 @@ export class DbxFixedDateRangeFieldComponent extends FieldType {
201
241
  }
202
242
  if (result) {
203
243
  result = {
244
+ lastPickType: pickType,
204
245
  lastDateRange: result.lastDateRange,
205
246
  boundary: result.boundary ? minMaxClamp(result.boundary) : undefined,
206
247
  range: result.range ? minMaxClamp(result.range) : undefined
@@ -417,10 +458,11 @@ export class DbxFixedDateRangeFieldSelectionStrategy {
417
458
  return currentRange;
418
459
  }
419
460
  createPreview(activeDate, currentRange, event) {
420
- if (activeDate != null && this.dbxFixedDateRangeFieldComponent.currentSelectionMode !== 'single') {
461
+ const { currentSelectionMode } = this.dbxFixedDateRangeFieldComponent;
462
+ if (activeDate != null && currentSelectionMode !== 'single') {
421
463
  const latestBoundary = this.dbxFixedDateRangeFieldComponent.latestBoundary;
422
464
  const date = this.dateFromAdapterDate(activeDate);
423
- if (latestBoundary && isDateInDateRange(date, latestBoundary)) {
465
+ if (latestBoundary && (currentSelectionMode === 'normal' || isDateInDateRange(date, latestBoundary))) {
424
466
  const exampleDateRange = this._createDateRange(latestBoundary);
425
467
  return exampleDateRange;
426
468
  }
@@ -461,4 +503,4 @@ DbxFixedDateRangeFieldSelectionStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ mi
461
503
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFixedDateRangeFieldSelectionStrategy, decorators: [{
462
504
  type: Injectable
463
505
  }], ctorParameters: function () { return [{ type: i7.DateAdapter }, { type: DbxFixedDateRangeFieldComponent }]; } });
464
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4ZWRkYXRlcmFuZ2UuZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvdmFsdWUvZGF0ZS9maXhlZGRhdGVyYW5nZS5maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC92YWx1ZS9kYXRlL2ZpeGVkZGF0ZXJhbmdlLmZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBNEYsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVKLE9BQU8sRUFBRSxvQkFBb0IsRUFBaUMsOEJBQThCLEVBQUUscUJBQXFCLEVBQTZCLGtCQUFrQixFQUF3RCxTQUFTLEVBQUUsaUJBQWlCLEVBQUUseUJBQXlCLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoVyxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4TixPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQXFCLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFtQixXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNC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dUNBQXVDO3lJQUF2Qyx1Q0FBdUM7NEZBQXZDLHVDQUF1QztrQkFEbkQsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1heWJlLCBEZWNpc2lvbkZ1bmN0aW9uLCBNaWxsaXNlY29uZHMsIFRpbWV6b25lU3RyaW5nLCBEYXRlTW9udGgsIERheU9mTW9udGgsIFllYXJOdW1iZXIsIGlzTW9udGhEYXlTbGFzaERhdGUsIE1TX0lOX01JTlVURSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgZ3Vlc3NDdXJyZW50VGltZXpvbmUsIERhdGVUaW1lem9uZVV0Y05vcm1hbEluc3RhbmNlLCBkYXRlVGltZU1pbnV0ZURlY2lzaW9uRnVuY3Rpb24sIGRhdGVUaW1lem9uZVV0Y05vcm1hbCwgRGF0ZVJhbmdlSW5wdXQsIERhdGVSYW5nZSwgaXNTYW1lRGF0ZURheVJhbmdlLCBEYXRlUmFuZ2VXaXRoRGF0ZU9yU3RyaW5nVmFsdWUsIERhdGVUaW1lTWludXRlQ29uZmlnLCBkYXRlUmFuZ2UsIGlzRGF0ZUluRGF0ZVJhbmdlLCBjbGFtcERhdGVSYW5nZVRvRGF0ZVJhbmdlLCBpc1NhbWVEYXRlUmFuZ2UsIGlzU2FtZURhdGVEYXksIGxpbWl0RGF0ZVRpbWVJbnN0YW5jZSB9IGZyb20gJ0BkZXJlZWtiL2RhdGUnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCBzaGFyZVJlcGxheSwgbWFwLCBzdGFydFdpdGgsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBkZWJvdW5jZVRpbWUsIHRocm90dGxlVGltZSwgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBvZiwgY29tYmluZUxhdGVzdFdpdGgsIGZpbHRlciwgY29tYmluZUxhdGVzdCwgc2NhbiwgZmlyc3QsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdGFibGUsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L21hdGVyaWFsJztcbmltcG9ydCB7IEZpZWxkVHlwZUNvbmZpZywgRm9ybWx5RmllbGRQcm9wcyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgTWF0RGF0ZVJhbmdlU2VsZWN0aW9uU3RyYXRlZ3ksIE1BVF9EQVRFX1JBTkdFX1NFTEVDVElPTl9TVFJBVEVHWSwgRGF0ZVJhbmdlIGFzIERhdGVQaWNrZXJEYXRlUmFuZ2UsIE1hdENhbGVuZGFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBhc09ic2VydmFibGVGcm9tR2V0dGVyLCBmaWx0ZXJNYXliZSwgT2JzZXJ2YWJsZU9yVmFsdWVHZXR0ZXIsIHNraXBGaXJzdE1heWJlLCBTdWJzY3JpcHRpb25PYmplY3QsIHN3aXRjaE1hcE1heWJlRGVmYXVsdCB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgRGJ4RGF0ZVRpbWVWYWx1ZU1vZGUsIGRieERhdGVSYW5nZUlzU2FtZURhdGVSYW5nZUZpZWxkVmFsdWUsIGRieERhdGVUaW1lSW5wdXRWYWx1ZVBhcnNlRmFjdG9yeSwgZGJ4RGF0ZVRpbWVPdXRwdXRWYWx1ZUZhY3RvcnkgfSBmcm9tICcuL2RhdGUudmFsdWUnO1xuaW1wb3J0IHsgRGF0ZVRpbWVQcmVzZXRDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9kYXRldGltZSc7XG5pbXBvcnQgeyBEYnhEYXRlVGltZUZpZWxkTWVudVByZXNldHNTZXJ2aWNlIH0gZnJvbSAnLi9kYXRldGltZS5maWVsZC5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5cbmV4cG9ydCB0eXBlIERieEZpeGVkRGF0ZVJhbmdlRGF0ZVJhbmdlSW5wdXQgPSBPbWl0PERhdGVSYW5nZUlucHV0LCAnZGF0ZSc+O1xuXG5leHBvcnQgdHlwZSBEYnhGaXhlZERhdGVSYW5nZVBpY2tlckNvbmZpZ3VyYXRpb24gPSBPbWl0PERhdGVUaW1lTWludXRlQ29uZmlnLCAnZGF0ZSc+O1xuXG5leHBvcnQgdHlwZSBEYnhGaXhlZERhdGVSYW5nZVNlbGVjdGlvbk1vZGUgPSAnc2luZ2xlJyB8ICdhcmJpdHJhcnknIHwgJ2FyYml0cmFyeV9xdWljayc7XG5leHBvcnQgdHlwZSBEYnhGaXhlZERhdGVSYW5nZVBpY2tpbmcgPSAnc3RhcnQnIHwgJ2VuZCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4Rml4ZWREYXRlUmFuZ2VGaWVsZFByb3BzIGV4dGVuZHMgRm9ybWx5RmllbGRQcm9wcyB7XG4gIC8qKlxuICAgKiBEYXRlIHJhbmdlIGlucHV0IHRvIGJ1aWxkIHRoZSBkYXRlIHJhbmdlLlxuICAgKi9cbiAgZGF0ZVJhbmdlSW5wdXQ6IE9ic2VydmFibGVPclZhbHVlR2V0dGVyPERieEZpeGVkRGF0ZVJhbmdlRGF0ZVJhbmdlSW5wdXQ+O1xuXG4gIC8qKlxuICAgKiBTZWxlY3Rpb24gbW9kZSB0byB1c2Ugd2hlbiBwaWNraW5nIGRhdGVzIG9uIHRoZSBjYWxlbmRhci5cbiAgICovXG4gIHNlbGVjdGlvbk1vZGU/OiBNYXliZTxPYnNlcnZhYmxlT3JWYWx1ZUdldHRlcjxEYnhGaXhlZERhdGVSYW5nZVNlbGVjdGlvbk1vZGU+PjtcblxuICAvKipcbiAgICogVmFsdWUgbW9kZSBmb3IgdGhlIGRhdGVzIGluIHRoZSBvdXRwdXQgRGF0ZVJhbmdlLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byBEQVRFXG4gICAqL1xuICB2YWx1ZU1vZGU/OiBEYnhEYXRlVGltZVZhbHVlTW9kZTtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gcGFzcyB0aGUgZGF0ZSB2YWx1ZSBhcyBhIFVUQyBkYXRlLCBvciBhIGRhdGUgaW4gdGhlIGN1cnJlbnQgdGltZXpvbmUuXG4gICAqL1xuICBmdWxsRGF5SW5VVEM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gcGlja2VyIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHBpY2tlckNvbmZpZz86IE9ic2VydmFibGVPclZhbHVlR2V0dGVyPERieEZpeGVkRGF0ZVJhbmdlUGlja2VyQ29uZmlndXJhdGlvbj47XG5cbiAgLyoqXG4gICAqIChPcHRpb25hbCkgVGhlIGlucHV0IHRpbWV6b25lIHRvIGRlZmF1bHQgdG8uXG4gICAqXG4gICAqIElnbm9yZWQgaWYgZnVsbERheUluVVRDIGlzIHRydWUuXG4gICAqL1xuICB0aW1lem9uZT86IE1heWJlPE9ic2VydmFibGVPclZhbHVlR2V0dGVyPE1heWJlPFRpbWV6b25lU3RyaW5nPj4+O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBkaXNwbGF5IHRoZSB0aW1lem9uZS4gVHJ1ZSBieSBkZWZhdWx0LlxuICAgKi9cbiAgc2hvd1RpbWV6b25lPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ3VzdG9tIHByZXNldHMgdG8gc2hvdyBpbiB0aGUgZHJvcGRvd24uXG4gICAqL1xuICBwcmVzZXRzPzogT2JzZXJ2YWJsZU9yVmFsdWVHZXR0ZXI8RGF0ZVRpbWVQcmVzZXRDb25maWd1cmF0aW9uW10+O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBzaG93IHRoZSByYW5nZSBpbnB1dC4gRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICovXG4gIHNob3dSYW5nZUlucHV0PzogYm9vbGVhbjtcbn1cblxuZnVuY3Rpb24gZGJ4Rml4ZWREYXRlUmFuZ2VJbnB1dFZhbHVlRmFjdG9yeShtb2RlOiBEYnhEYXRlVGltZVZhbHVlTW9kZSwgdGltZXpvbmVJbnN0YW5jZTogTWF5YmU8RGF0ZVRpbWV6b25lVXRjTm9ybWFsSW5zdGFuY2U+KTogKGlucHV0OiBNYXliZTxEYXRlUmFuZ2VXaXRoRGF0ZU9yU3RyaW5nVmFsdWU+KSA9PiBNYXliZTxEYXRlUmFuZ2U+IHtcbiAgY29uc3QgZGF0ZUlucHV0VHJhbnNmb3JtZXIgPSBkYnhEYXRlVGltZUlucHV0VmFsdWVQYXJzZUZhY3RvcnkobW9kZSwgdGltZXpvbmVJbnN0YW5jZSk7XG5cbiAgcmV0dXJuICh5KSA9PiB7XG4gICAgbGV0IHJlc3VsdDogTWF5YmU8RGF0ZVJhbmdlPjtcblxuICAgIGlmICh5KSB7XG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIHN0YXJ0OiBkYXRlSW5wdXRUcmFuc2Zvcm1lcih5LnN0YXJ0KSBhcyBEYXRlLFxuICAgICAgICBlbmQ6IGRhdGVJbnB1dFRyYW5zZm9ybWVyKHkuZW5kKSBhcyBEYXRlXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGRieEZpeGVkRGF0ZVJhbmdlT3V0cHV0VmFsdWVGYWN0b3J5KG1vZGU6IERieERhdGVUaW1lVmFsdWVNb2RlLCB0aW1lem9uZUluc3RhbmNlOiBNYXliZTxEYXRlVGltZXpvbmVVdGNOb3JtYWxJbnN0YW5jZT4pOiAoZGF0ZTogTWF5YmU8RGF0ZVJhbmdlPikgPT4gTWF5YmU8RGF0ZVJhbmdlV2l0aERhdGVPclN0cmluZ1ZhbHVlPiB7XG4gIGNvbnN0IGRhdGVPdXRwdXRUcmFuc2Zvcm1lciA9IGRieERhdGVUaW1lT3V0cHV0VmFsdWVGYWN0b3J5KG1vZGUsIHRpbWV6b25lSW5zdGFuY2UpO1xuXG4gIHJldHVybiAoeSkgPT4ge1xuICAgIGxldCByZXN1bHQ6IE1heWJlPERhdGVSYW5nZT47XG5cbiAgICBpZiAoeSkge1xuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICBzdGFydDogZGF0ZU91dHB1dFRyYW5zZm9ybWVyKHkuc3RhcnQpIGFzIERhdGUsXG4gICAgICAgIGVuZDogZGF0ZU91dHB1dFRyYW5zZm9ybWVyKHkuZW5kKSBhcyBEYXRlXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59XG5cbmNvbnN0IFRJTUVfT1VUUFVUX1RIUk9UVExFX1RJTUU6IE1pbGxpc2Vjb25kcyA9IDEwO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpeGVkRGF0ZVJhbmdlU2NhbiB7XG4gIC8qKlxuICAgKiBUaGUgbGF0ZXN0IGRhdGUgcGFzc2VkLCBpZiBhcHBsaWNhYmxlLlxuICAgKi9cbiAgbGFzdERhdGVSYW5nZT86IE1heWJlPFBhcnRpYWw8RGF0ZVJhbmdlPj47XG4gIC8qKlxuICAgKiBUaGUgZ2VuZXJhdGVkIGJvdW5kYXJ5IHJhbmdlLlxuICAgKi9cbiAgYm91bmRhcnk/OiBEYXRlUmFuZ2U7XG4gIC8qKlxuICAgKiBOZXcgRGF0ZSBSYW5nZVxuICAgKi9cbiAgcmFuZ2U/OiBEYXRlUmFuZ2U7XG59XG5cbnR5cGUgU2VsZWN0ZWREYXRlRXZlbnRUeXBlID0gJ2NhbGVuZGFyJyB8ICdpbnB1dCc7XG5cbmludGVyZmFjZSBTZWxlY3RlZERhdGVFdmVudCB7XG4gIHR5cGU6IFNlbGVjdGVkRGF0ZUV2ZW50VHlwZTtcbiAgcmFuZ2U/OiBNYXliZTxQYXJ0aWFsPERhdGVSYW5nZT4+O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICdmaXhlZGRhdGVyYW5nZS5maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE1BVF9EQVRFX1JBTkdFX1NFTEVDVElPTl9TVFJBVEVHWSxcbiAgICAgIHVzZUNsYXNzOiBmb3J3YXJkUmVmKCgpID0+IERieEZpeGVkRGF0ZVJhbmdlRmllbGRTZWxlY3Rpb25TdHJhdGVneSlcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGJ4Rml4ZWREYXRlUmFuZ2VGaWVsZENvbXBvbmVudCBleHRlbmRzIEZpZWxkVHlwZTxGaWVsZFR5cGVDb25maWc8RGJ4Rml4ZWREYXRlUmFuZ2VGaWVsZFByb3BzPj4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX3N1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcblxuICBwcml2YXRlIF9pbnB1dFJhbmdlRm9ybVN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSBfaW5wdXRSYW5nZUZvcm1WYWx1ZVN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcblxuICBwcml2YXRlIF9kYXRlUmFuZ2VJbnB1dFN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSBfY3VycmVudFNlbGVjdGlvbk1vZGVTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX2xhdGVzdEJvdW5kYXJ5U3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcml2YXRlIF9kaXNhYmxlRW5kU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcml2YXRlIF9hY3RpdmVEYXRlU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuXG4gIHByaXZhdGUgX2N1cnJlbnREYXRlUmFuZ2VJbnB1dDogTWF5YmU8RGJ4Rml4ZWREYXRlUmFuZ2VEYXRlUmFuZ2VJbnB1dD4gPSB7fTtcbiAgcHJpdmF0ZSBfY3VycmVudFNlbGVjdGlvbk1vZGU6IERieEZpeGVkRGF0ZVJhbmdlU2VsZWN0aW9uTW9kZSA9ICdzaW5nbGUnO1xuICBwcml2YXRlIF9sYXRlc3RCb3VuZGFyeTogTWF5YmU8RGF0ZVJhbmdlPiA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfY29uZmlnID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxPYnNlcnZhYmxlPERieEZpeGVkRGF0ZVJhbmdlUGlja2VyQ29uZmlndXJhdGlvbj4+Pih1bmRlZmluZWQpO1xuICBwcml2YXRlIF9zZWxlY3Rpb25Nb2RlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxPYnNlcnZhYmxlPERieEZpeGVkRGF0ZVJhbmdlU2VsZWN0aW9uTW9kZT4+Pih1bmRlZmluZWQpO1xuICBwcml2YXRlIF9kYXRlUmFuZ2VJbnB1dCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8T2JzZXJ2YWJsZTxEYnhGaXhlZERhdGVSYW5nZURhdGVSYW5nZUlucHV0Pj4+KHVuZGVmaW5lZCk7XG5cbiAgcHJpdmF0ZSBfdGltZXpvbmUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPE9ic2VydmFibGU8TWF5YmU8VGltZXpvbmVTdHJpbmc+Pj4+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgX3ByZXNldHMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE9ic2VydmFibGU8RGF0ZVRpbWVQcmVzZXRDb25maWd1cmF0aW9uW10+PihvZihbXSkpO1xuXG4gIHByaXZhdGUgX3NlbGVjdGlvbkV2ZW50ID0gbmV3IFN1YmplY3Q8U2VsZWN0ZWREYXRlRXZlbnQ+KCk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkRGF0ZVJhbmdlJDogT2JzZXJ2YWJsZTxNYXliZTxQYXJ0aWFsPERhdGVSYW5nZT4+PiA9IHRoaXMuX3NlbGVjdGlvbkV2ZW50LnBpcGUobWFwKCh4KSA9PiB4LnJhbmdlKSk7XG5cbiAgcHJpdmF0ZSBfZm9ybUNvbnRyb2xPYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPEFic3RyYWN0Q29udHJvbDxNYXliZTxEYXRlUmFuZ2U+Pj4+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGZvcm1Db250cm9sJCA9IHRoaXMuX2Zvcm1Db250cm9sT2JzLnBpcGUoZmlsdGVyTWF5YmUoKSk7XG5cbiAgQFZpZXdDaGlsZChNYXRDYWxlbmRhcilcbiAgY2FsZW5kYXIhOiBNYXRDYWxlbmRhcjxEYXRlPjtcblxuICBAVmlld0NoaWxkKCdzdGFydERhdGVJbnB1dCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBzdGFydERhdGVJbnB1dEVsZW1lbnQhOiBFbGVtZW50UmVmO1xuXG4gIEBWaWV3Q2hpbGQoJ2VuZERhdGVJbnB1dCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBlbmREYXRlSW5wdXRFbGVtZW50ITogRWxlbWVudFJlZjtcblxuICBnZXQgY3VycmVudERhdGVSYW5nZUlucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50RGF0ZVJhbmdlSW5wdXQ7XG4gIH1cblxuICBnZXQgY3VycmVudFNlbGVjdGlvbk1vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRTZWxlY3Rpb25Nb2RlO1xuICB9XG5cbiAgZ2V0IGxhdGVzdEJvdW5kYXJ5KCkge1xuICAgIHJldHVybiB0aGlzLl9sYXRlc3RCb3VuZGFyeTtcbiAgfVxuXG4gIHJlYWRvbmx5IGNvbmZpZyQ6IE9ic2VydmFibGU8RGJ4Rml4ZWREYXRlUmFuZ2VQaWNrZXJDb25maWd1cmF0aW9uPiA9IHRoaXMuX2NvbmZpZy5waXBlKFxuICAgIGZpbHRlck1heWJlKCksXG4gICAgc3dpdGNoTWFwKCh4KSA9PiB4KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgbGltaXREYXRlVGltZUluc3RhbmNlJCA9IHRoaXMuY29uZmlnJC5waXBlKG1hcChsaW1pdERhdGVUaW1lSW5zdGFuY2UpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgc2VsZWN0aW9uTW9kZSQ6IE9ic2VydmFibGU8RGJ4Rml4ZWREYXRlUmFuZ2VTZWxlY3Rpb25Nb2RlPiA9IHRoaXMuX3NlbGVjdGlvbk1vZGUucGlwZShcbiAgICBzd2l0Y2hNYXBNYXliZURlZmF1bHQ8RGJ4Rml4ZWREYXRlUmFuZ2VTZWxlY3Rpb25Nb2RlPignc2luZ2xlJyksXG4gICAgbWFwKCh4KSA9PiB4ID8/ICdzaW5nbGUnKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZGF0ZVJhbmdlSW5wdXQkID0gdGhpcy5fZGF0ZVJhbmdlSW5wdXQucGlwZShzd2l0Y2hNYXBNYXliZURlZmF1bHQoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IHRpbWV6b25lJDogT2JzZXJ2YWJsZTxNYXliZTxUaW1lem9uZVN0cmluZz4+ID0gdGhpcy5fdGltZXpvbmUucGlwZShzd2l0Y2hNYXBNYXliZURlZmF1bHQoKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSkucGlwZShcbiAgICBtYXAoKGRlZmF1bHRUaW1lem9uZSkgPT4ge1xuICAgICAgcmV0dXJuIGRlZmF1bHRUaW1lem9uZSA/PyBndWVzc0N1cnJlbnRUaW1lem9uZSgpO1xuICAgIH0pLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSB0aW1lem9uZUluc3RhbmNlJDogT2JzZXJ2YWJsZTxNYXliZTxEYXRlVGltZXpvbmVVdGNOb3JtYWxJbnN0YW5jZT4+ID0gdGhpcy50aW1lem9uZSQucGlwZShcbiAgICBtYXAoKHRpbWV6b25lKSA9PiAodGltZXpvbmUgPyBkYXRlVGltZXpvbmVVdGNOb3JtYWwoeyB0aW1lem9uZSB9KSA6IHVuZGVmaW5lZCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgdmFsdWVJblN5c3RlbVRpbWV6b25lJDogT2JzZXJ2YWJsZTxNYXliZTxEYXRlUmFuZ2U+PiA9IHRoaXMuZm9ybUNvbnRyb2wkLnBpcGUoXG4gICAgbWFwKChjb250cm9sKSA9PiBjb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aDxNYXliZTxEYXRlUmFuZ2VXaXRoRGF0ZU9yU3RyaW5nVmFsdWU+Pihjb250cm9sLnZhbHVlKSwgc2hhcmVSZXBsYXkoMSkpKSxcbiAgICBjb21iaW5lTGF0ZXN0V2l0aCh0aGlzLnRpbWV6b25lSW5zdGFuY2UkKSxcbiAgICBzd2l0Y2hNYXAoKFt4LCB0aW1lem9uZUluc3RhbmNlXSkgPT4ge1xuICAgICAgcmV0dXJuIHgucGlwZShtYXAoZGJ4Rml4ZWREYXRlUmFuZ2VJbnB1dFZhbHVlRmFjdG9yeSh0aGlzLnZhbHVlTW9kZSwgdGltZXpvbmVJbnN0YW5jZSkpKTtcbiAgICB9KSxcbiAgICB0aHJvdHRsZVRpbWUoMjAsIHVuZGVmaW5lZCwgeyBsZWFkaW5nOiBmYWxzZSwgdHJhaWxpbmc6IHRydWUgfSksIC8vIHRocm90dGxlIGluY29taW5nIHZhbHVlcyBhbmQgdGltZXpvbmUgY2hhbmdlc1xuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkPE1heWJlPERhdGVSYW5nZT4+KGlzU2FtZURhdGVEYXlSYW5nZSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICBkYXRlUmFuZ2VTZWxlY3Rpb25Gb3JNb2RlKG1vZGU6IERieEZpeGVkRGF0ZVJhbmdlU2VsZWN0aW9uTW9kZSkge1xuICAgIGNvbnN0IHJlc3VsdDogT2JzZXJ2YWJsZTxNYXliZTxEYXRlUmFuZ2U+PiA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuZGF0ZVJhbmdlSW5wdXQkLCB0aGlzLmxpbWl0RGF0ZVRpbWVJbnN0YW5jZSRdKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChbZGF0ZVJhbmdlSW5wdXQsIGxpbWl0SW5zdGFuY2VdKSA9PiB7XG4gICAgICAgIGNvbnN0IG1pbk1heENsYW1wID0gKGRhdGVSYW5nZTogRGF0ZVJhbmdlKSA9PiBsaW1pdEluc3RhbmNlLmNsYW1wRGF0ZVJhbmdlKGRhdGVSYW5nZSk7XG5cbiAgICAgICAgaWYgKG1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgLy8gb25seSB1c2UgdGhlIHN0YXJ0IGRhdGUuXG4gICAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UkLnBpcGUoXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChpc1NhbWVEYXRlRGF5UmFuZ2UpLFxuICAgICAgICAgICAgbWFwKChpbnB1dERhdGVSYW5nZSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBkYXRlID0gaW5wdXREYXRlUmFuZ2U/LnN0YXJ0O1xuICAgICAgICAgICAgICByZXR1cm4gZGF0ZSA/IChtaW5NYXhDbGFtcChkYXRlUmFuZ2UoeyAuLi5kYXRlUmFuZ2VJbnB1dCwgZGF0ZSB9IGFzIERhdGVSYW5nZUlucHV0KSkgYXMgRGF0ZVJhbmdlKSA6IG51bGw7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gdGFrZSB0aGUgZmlyc3QgZGF0ZSwgdGhlbiB3YWl0IHVubGVzcyB0aGUgZGF0ZSBpcyBvdXRzaWRlIG9mIHRoZSByYW5nZS5cbiAgICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZERhdGVSYW5nZSQucGlwZShcbiAgICAgICAgICAgIHNjYW4oKGFjYzogRml4ZWREYXRlUmFuZ2VTY2FuLCBuZXh0RGF0ZVJhbmdlOiBNYXliZTxQYXJ0aWFsPERhdGVSYW5nZT4+KSA9PiB7XG4gICAgICAgICAgICAgIGxldCByZXN1bHQ6IEZpeGVkRGF0ZVJhbmdlU2NhbjtcblxuICAgICAgICAgICAgICBpZiAobmV4dERhdGVSYW5nZSAmJiBuZXh0RGF0ZVJhbmdlLnN0YXJ0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHN0YXJ0OiBzdGFydE9yTmV4dERhdGUsIGVuZCB9ID0gbmV4dERhdGVSYW5nZTtcbiAgICAgICAgICAgICAgICBjb25zdCBwb3RlbnRpYWxCb3VuZGFyeSA9IGRhdGVSYW5nZSh7IC4uLmRhdGVSYW5nZUlucHV0LCBkYXRlOiBzdGFydE9yTmV4dERhdGUgfSBhcyBEYXRlUmFuZ2VJbnB1dCk7XG5cbiAgICAgICAgICAgICAgICAvLyBvbmx5IGNvbWVzIHRocm91Z2ggd2hlbiBwYXNzZWQgYnkgdGhlIHRleHQgaW5wdXRzXG4gICAgICAgICAgICAgICAgaWYgKHN0YXJ0T3JOZXh0RGF0ZSAmJiBlbmQpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHJhbmdlID0gY2xhbXBEYXRlUmFuZ2VUb0RhdGVSYW5nZShuZXh0RGF0ZVJhbmdlLCBwb3RlbnRpYWxCb3VuZGFyeSkgYXMgRGF0ZVJhbmdlO1xuICAgICAgICAgICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgICAgICAgICBsYXN0RGF0ZVJhbmdlOiBuZXh0RGF0ZVJhbmdlLFxuICAgICAgICAgICAgICAgICAgICBib3VuZGFyeTogcmFuZ2UsXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlXG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBsZXQgcmFuZ2U6IE1heWJlPERhdGVSYW5nZT4gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICBsZXQgYm91bmRhcnk6IE1heWJlPERhdGVSYW5nZT4gPSBwb3RlbnRpYWxCb3VuZGFyeTtcblxuICAgICAgICAgICAgICAgICAgaWYgKGFjYy5ib3VuZGFyeSAmJiBpc0RhdGVJbkRhdGVSYW5nZShzdGFydE9yTmV4dERhdGUsIGFjYy5ib3VuZGFyeSkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgaW4gdGhlIGRhdGUgcmFuZ2UsIHVzZXMgdGhlIHBpY2sgYXMgdGhlIGxhc3QgZGF0ZS5cbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IGFjYy5ib3VuZGFyeS5zdGFydCxcbiAgICAgICAgICAgICAgICAgICAgICBlbmQ6IHN0YXJ0T3JOZXh0RGF0ZVxuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChtb2RlID09PSAnYXJiaXRyYXJ5X3F1aWNrJykge1xuICAgICAgICAgICAgICAgICAgICAgIC8vIG1vZGlmeSBib3VuZGFyeSB0byBtYXRjaCByYW5nZVxuICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1NhbWVEYXRlUmFuZ2UoYWNjLnJhbmdlLCByYW5nZSkgJiYgaXNTYW1lRGF0ZURheShyYW5nZS5lbmQsIHN0YXJ0T3JOZXh0RGF0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHdlIGNsaWNrZWQgb24gdGhlIGVuZCByYW5nZSwgdGhlbiBleHBhbmQgdGhlIGJvdW5kYXJ5IGFnYWluIHRvIHRoZSBmdWxsIHJhbmdlLlxuICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UgPSBkYXRlUmFuZ2UoeyAuLi5kYXRlUmFuZ2VJbnB1dCwgZGF0ZTogcmFuZ2Uuc3RhcnQgfSBhcyBEYXRlUmFuZ2VJbnB1dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3VuZGFyeSA9IHJhbmdlO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3VuZGFyeSA9IHJhbmdlO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBib3VuZGFyeSA9IGFjYy5ib3VuZGFyeTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtb2RlID09PSAnYXJiaXRyYXJ5X3F1aWNrJykge1xuICAgICAgICAgICAgICAgICAgICByYW5nZSA9IHBvdGVudGlhbEJvdW5kYXJ5O1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICAgICAgICAgIGxhc3REYXRlUmFuZ2U6IG5leHREYXRlUmFuZ2UsXG4gICAgICAgICAgICAgICAgICAgIGJvdW5kYXJ5LFxuICAgICAgICAgICAgICAgICAgICByYW5nZVxuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgICAgICAgbGFzdERhdGVSYW5nZTogbmV4dERhdGVSYW5nZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgICAgICAgbGFzdERhdGVSYW5nZTogcmVzdWx0Lmxhc3REYXRlUmFuZ2UsXG4gICAgICAgICAgICAgICAgICBib3VuZGFyeTogcmVzdWx0LmJvdW5kYXJ5ID8gKG1pbk1heENsYW1wKHJlc3VsdC5ib3VuZGFyeSkgYXMgRGF0ZVJhbmdlKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgIHJhbmdlOiByZXN1bHQucmFuZ2UgPyAobWluTWF4Q2xhbXAocmVzdWx0LnJhbmdlKSBhcyBEYXRlUmFuZ2UpIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9LCB7fSksXG4gICAgICAgICAgICBmaWx0ZXIoKHgpID0+ICF4Lmxhc3REYXRlUmFuZ2UgfHwgeC5yYW5nZSAhPSBudWxsKSwgLy8gcGFzcyB0aHJvdWdoIG51bGwvZGF0ZSBjbGVhcmluZ3Mgb3IgcmFuZ2VzXG4gICAgICAgICAgICBtYXAoKHgpID0+IHgucmFuZ2UgPz8gbnVsbCkgLy8gcmV0dXJuIHRoZSByYW5nZVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICByZWFkb25seSBmdWxsQm91bmRhcnkkOiBPYnNlcnZhYmxlPE1heWJlPERhdGVSYW5nZT4+ID0gdGhpcy5kYXRlUmFuZ2VTZWxlY3Rpb25Gb3JNb2RlKCdzaW5nbGUnKS5waXBlKHNoYXJlUmVwbGF5KDEpKTtcbiAgcmVhZG9ubHkgbGF0ZXN0Qm91bmRhcnkkOiBPYnNlcnZhYmxlPE1heWJlPERhdGVSYW5nZT4+ID0gdGhpcy5zZWxlY3Rpb25Nb2RlJC5waXBlKFxuICAgIHN3aXRjaE1hcCgobW9kZSkgPT4ge1xuICAgICAgaWYgKG1vZGUgPT09ICdhcmJpdHJhcnlfcXVpY2snKSB7XG4gICAgICAgIC8vIGluIGFyYml0cmFyeV9xdWljayBtb2RlLCB0aGUgbGF0ZXN0IHZhbHVlIGlzIHRoZSBib3VuZGFyeSwgc2luY2Ugd2UgYWx3YXlzIHNldCB0aGUgdmFsdWUgaW1tZWRpYXRlbHkuXG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlSW5TeXN0ZW1UaW1lem9uZSQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5mdWxsQm91bmRhcnkkO1xuICAgICAgfVxuICAgIH0pXG4gICk7XG5cbiAgLyoqXG4gICAqIEZvY3VzZXMgb24gdGhlIGRhdGUgYW55IHRpbWUgdGhlIHNlbGVjdGlvbiBldmVudCBmcm9tIHRoZSBwaWNrZXIgb2NjdXJlZCwgb3RoZXJ3aXNlIHVzZSB0aGUgc3lzdGVtIHZhbHVlXG4gICAqL1xuICByZWFkb25seSBjYWxlbmRhckZvY3VzRGF0ZSQ6IE9ic2VydmFibGU8RGF0ZT4gPSB0aGlzLl9zZWxlY3Rpb25FdmVudC5waXBlKHN0YXJ0V2l0aChudWxsKSkucGlwZShcbiAgICBzd2l0Y2hNYXAoKHNlbGVjdGlvbkV2ZW50KSA9PiB7XG4gICAgICBpZiAoc2VsZWN0aW9uRXZlbnQgJiYgc2VsZWN0aW9uRXZlbnQudHlwZSA9PT0gJ2NhbGVuZGFyJyAmJiBzZWxlY3Rpb25FdmVudC5yYW5nZT8uc3RhcnQpIHtcbiAgICAgICAgcmV0dXJuIG9mKHNlbGVjdGlvbkV2ZW50LnJhbmdlLnN0YXJ0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZ1bGxCb3VuZGFyeSQucGlwZShcbiAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgIG1hcCgoZnVsbEJvdW5kYXJ5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZnVsbEJvdW5kYXJ5Py5zdGFydCA/PyBzZWxlY3Rpb25FdmVudD8ucmFuZ2U/LnN0YXJ0O1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSksXG4gICAgZmlsdGVyTWF5YmUoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRhdGVSYW5nZVNlbGVjdGlvbiQ6IE9ic2VydmFibGU8TWF5YmU8RGF0ZVJhbmdlPj4gPSB0aGlzLnNlbGVjdGlvbk1vZGUkLnBpcGUoc3dpdGNoTWFwKChtb2RlKSA9PiB0aGlzLmRhdGVSYW5nZVNlbGVjdGlvbkZvck1vZGUobW9kZSkpKTtcblxuICByZWFkb25seSBjYWxlbmRhclNlbGVjdGlvbiQ6IE9ic2VydmFibGU8RGF0ZVBpY2tlckRhdGVSYW5nZTxEYXRlPiB8IG51bGw+ID0gdGhpcy52YWx1ZUluU3lzdGVtVGltZXpvbmUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiAoeCA/IG5ldyBEYXRlUGlja2VyRGF0ZVJhbmdlPERhdGU+KHguc3RhcnQsIHguZW5kKSA6IG51bGwpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGVuZERpc2FibGVkJCA9IHRoaXMuc2VsZWN0aW9uTW9kZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHggPT09ICdzaW5nbGUnKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgaW5wdXRSYW5nZUZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICBzdGFydDogbmV3IEZvcm1Db250cm9sPE1heWJlPERhdGU+PihudWxsKSxcbiAgICBlbmQ6IG5ldyBGb3JtQ29udHJvbDxNYXliZTxEYXRlPj4obnVsbClcbiAgfSk7XG5cbiAgZ2V0IGZpeGVkRGF0ZVJhbmdlRmllbGQoKTogRGJ4Rml4ZWREYXRlUmFuZ2VGaWVsZFByb3BzIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcztcbiAgfVxuXG4gIGdldCBzZWxlY3Rpb25Nb2RlKCkge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzLnNlbGVjdGlvbk1vZGU7XG4gIH1cblxuICBnZXQgdmFsdWVNb2RlKCk6IERieERhdGVUaW1lVmFsdWVNb2RlIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcy52YWx1ZU1vZGUgPz8gRGJ4RGF0ZVRpbWVWYWx1ZU1vZGUuREFURTtcbiAgfVxuXG4gIGdldCBkZXNjcmlwdGlvbigpOiBNYXliZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcy5kZXNjcmlwdGlvbjtcbiAgfVxuXG4gIGdldCB0aW1lem9uZSgpIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcy50aW1lem9uZTtcbiAgfVxuXG4gIGdldCBzaG93VGltZXpvbmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcHMuc2hvd1RpbWV6b25lID8/IHRydWU7XG4gIH1cblxuICBnZXQgcHJlc2V0cygpIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcy5wcmVzZXRzO1xuICB9XG5cbiAgZ2V0IHNob3dSYW5nZUlucHV0KCkge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzLnNob3dSYW5nZUlucHV0ID8/IHRydWU7XG4gIH1cblxuICByZWFkb25seSBtaW5NYXhSYW5nZSQgPSB0aGlzLmxpbWl0RGF0ZVRpbWVJbnN0YW5jZSQucGlwZShcbiAgICBjb21iaW5lTGF0ZXN0V2l0aCh0aW1lcihNU19JTl9NSU5VVEUpKSwgLy8gcmVmcmVzaCBldmVyeSBtaW51dGVcbiAgICBtYXAoKFt4XSkgPT4geC5kYXRlUmFuZ2UoKSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoaXNTYW1lRGF0ZURheVJhbmdlKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IG1pbiQgPSB0aGlzLm1pbk1heFJhbmdlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geD8uc3RhcnQgPz8gbnVsbCksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IG1heCQgPSB0aGlzLm1pbk1heFJhbmdlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geD8uZW5kID8/IG51bGwpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBwaWNrZXJGaWx0ZXIkOiBPYnNlcnZhYmxlPERlY2lzaW9uRnVuY3Rpb248RGF0ZSB8IG51bGw+PiA9IHRoaXMuY29uZmlnJC5waXBlKFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgbWFwKCh4KSA9PiB7XG4gICAgICBpZiAoeCkge1xuICAgICAgICBjb25zdCBmaWx0ZXIgPSBkYXRlVGltZU1pbnV0ZURlY2lzaW9uRnVuY3Rpb24oeCk7XG4gICAgICAgIHJldHVybiAoeDogRGF0ZSB8IG51bGwpID0+ICh4ICE9IG51bGwgPyBmaWx0ZXIoeCkgOiB0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAoKSA9PiB0cnVlO1xuICAgICAgfVxuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZGVmYXVsdFBpY2tlckZpbHRlcjogRGVjaXNpb25GdW5jdGlvbjxEYXRlIHwgbnVsbD4gPSAoKSA9PiB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZGJ4RGF0ZVRpbWVGaWVsZENvbmZpZ1NlcnZpY2U6IERieERhdGVUaW1lRmllbGRNZW51UHJlc2V0c1NlcnZpY2UpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fZm9ybUNvbnRyb2xPYnMubmV4dCh0aGlzLmZvcm1Db250cm9sKTtcblxuICAgIGNvbnN0IGRhdGVSYW5nZVNlbGVjdGlvbiA9IHRoaXMuZGF0ZVJhbmdlU2VsZWN0aW9uJC5waXBlKHNoYXJlUmVwbGF5KDEpKTtcblxuICAgIGNvbnN0IHNldElucHV0Rm9ybVZhbHVlID0gKHZhbHVlOiBNYXliZTxEYXRlUmFuZ2U+KSA9PiB7XG4gICAgICBpZiAoIWlzU2FtZURhdGVEYXlSYW5nZSh2YWx1ZSwgdGhpcy5pbnB1dFJhbmdlRm9ybS52YWx1ZSBhcyBQYXJ0aWFsPERhdGVSYW5nZT4pKSB7XG4gICAgICAgIHRoaXMuaW5wdXRSYW5nZUZvcm0uc2V0VmFsdWUoe1xuICAgICAgICAgIHN0YXJ0OiB2YWx1ZT8uc3RhcnQgPz8gbnVsbCxcbiAgICAgICAgICBlbmQ6IHZhbHVlPy5lbmQgPz8gbnVsbFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5fc3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMudmFsdWVJblN5c3RlbVRpbWV6b25lJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGNvbWJpbmVMYXRlc3RXaXRoKHRoaXMudGltZXpvbmVJbnN0YW5jZSQucGlwZShtYXAoKHRpbWV6b25lSW5zdGFuY2UpID0+IGRieEZpeGVkRGF0ZVJhbmdlT3V0cHV0VmFsdWVGYWN0b3J5KHRoaXMudmFsdWVNb2RlLCB0aW1lem9uZUluc3RhbmNlKSkpKSxcbiAgICAgICAgdGhyb3R0bGVUaW1lKFRJTUVfT1VUUFVUX1RIUk9UVExFX1RJTUUsIHVuZGVmaW5lZCwgeyBsZWFkaW5nOiBmYWxzZSwgdHJhaWxpbmc6IHRydWUgfSksXG4gICAgICAgIHN3aXRjaE1hcCgoW2N1cnJlbnRWYWx1ZSwgdmFsdWVGYWN0b3J5XSkgPT4ge1xuICAgICAgICAgIHJldHVybiBkYXRlUmFuZ2VTZWxlY3Rpb24ucGlwZShcbiAgICAgICAgICAgIHNraXBGaXJzdE1heWJlKCksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZDxNYXliZTxEYXRlUmFuZ2U+Pihpc1NhbWVEYXRlRGF5UmFuZ2UpLFxuICAgICAgICAgICAgbWFwKCh4KSA9PiBbeCwgY3VycmVudFZhbHVlLCB2YWx1ZUZhY3RvcnldIGFzIFt0eXBlb2YgeCwgdHlwZW9mIGN1cnJlbnRWYWx1ZSwgdHlwZW9mIHZhbHVlRmFjdG9yeV0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKFtyYXdWYWx1ZSwgY3VycmVudFZhbHVlLCB2YWx1ZUZhY3RvcnldKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gcmF3VmFsdWUgPyB2YWx1ZUZhY3RvcnkocmF3VmFsdWUpIDogbnVsbDtcbiAgICAgICAgY29uc3QgaXNTYW1lUmFuZ2UgPSBkYnhEYXRlUmFuZ2VJc1NhbWVEYXRlUmFuZ2VGaWVsZFZhbHVlKHZhbHVlLCBjdXJyZW50VmFsdWUpO1xuXG4gICAgICAgIGlmICghaXNTYW1lUmFuZ2UpIHtcbiAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgIH0gZWxzZSBpZiAocmF3VmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgaW5wdXQgdGV4dCBhZ2FpblxuICAgICAgICAgIHNldElucHV0Rm9ybVZhbHVlKHJhd1ZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlKSB7XG4gICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlLm5leHQoYXNPYnNlcnZhYmxlRnJvbUdldHRlcih0aGlzLnNlbGVjdGlvbk1vZGUpKTtcbiAgICB9XG5cbiAgICB0aGlzLl9jdXJyZW50U2VsZWN0aW9uTW9kZVN1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLnNlbGVjdGlvbk1vZGUkLnN1YnNjcmliZSgoeCkgPT4gKHRoaXMuX2N1cnJlbnRTZWxlY3Rpb25Nb2RlID0geCkpO1xuICAgIHRoaXMuX2RhdGVSYW5nZUlucHV0U3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMuZGF0ZVJhbmdlSW5wdXQkLnN1YnNjcmliZSgoeCkgPT4gKHRoaXMuX2N1cnJlbnREYXRlUmFuZ2VJbnB1dCA9IHgpKTtcblxuICAgIHRoaXMuX2lucHV0UmFuZ2VGb3JtU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMudmFsdWVJblN5c3RlbVRpbWV6b25lJC5zdWJzY3JpYmUoKHg6IE1heWJlPERhdGVSYW5nZT4pID0+IHtcbiAgICAgIHNldElucHV0Rm9ybVZhbHVlKHgpO1xuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuc2hvd1JhbmdlSW5wdXQpIHtcbiAgICAgIHRoaXMuX2lucHV0UmFuZ2VGb3JtVmFsdWVTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy52YWx1ZUluU3lzdGVtVGltZXpvbmUkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRocm90dGxlVGltZSgxMDApLCAvLyB0aHJvdHRsZSB0byBwcmV2ZW50IHRoZSB2YWx1ZSBmcm9tIGNoYW5naW5nIHRvbyBmYXN0XG4gICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlucHV0UmFuZ2VGb3JtLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoNTAwKSxcbiAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydFN0cmluZyA9IHRoaXMuc3RhcnREYXRlSW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ/LnZhbHVlO1xuICAgICAgICAgICAgICAgIGxldCB2YWxpZCA9IGlzTW9udGhEYXlTbGFzaERhdGUoc3RhcnRTdHJpbmcpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHZhbGlkICYmIHRoaXMuX2N1cnJlbnRTZWxlY3Rpb25Nb2RlICE9PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZW5kU3RyaW5nID0gdGhpcy5lbmREYXRlSW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ/LnZhbHVlO1xuICAgICAgICAgICAgICAgICAgdmFsaWQgPSBpc01vbnRoRGF5U2xhc2hEYXRlKGVuZFN0cmluZyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkOyAvLyBtdXN0IGJlIGEgdmFsaWQgdGV4dCBpbnB1dFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgbWFwKCh4KSA9PiB4IGFzIE1heWJlPFBhcnRpYWw8RGF0ZVJhbmdlPj4pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKGlzU2FtZURhdGVSYW5nZSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCh4OiBNYXliZTxQYXJ0aWFsPERhdGVSYW5nZT4+KSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRTZWxlY3Rpb25Nb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgdGhpcy5zZXREYXRlUmFuZ2UoeD8uc3RhcnQgPyB7IHN0YXJ0OiB4LnN0YXJ0IH0gOiBudWxsLCAnaW5wdXQnKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IHJhbmdlVG9TZXQ6IE1heWJlPFBhcnRpYWw8RGF0ZVJhbmdlPj4gPSB4O1xuXG4gICAgICAgICAgICBpZiAodGhpcy5fY3VycmVudFNlbGVjdGlvbk1vZGUgPT09ICdhcmJpdHJhcnlfcXVpY2snICYmIHRoaXMuX2xhdGVzdEJvdW5kYXJ5ICYmIHg/LnN0YXJ0ICYmIHg/LmVuZCkge1xuICAgICAgICAgICAgICBpZiAoIWlzRGF0ZUluRGF0ZVJhbmdlKHguc3RhcnQsIHRoaXMuX2xhdGVzdEJvdW5kYXJ5KSkge1xuICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBlbmQgZGF0ZSBpdCBvdXRzaWRlIG9mIHRoZSBjdXJyZW50IHJhbmdlIChpLmUuIGEgcmFuZ2Ugd2FzIHR5cGVkIGluIG9ubHkgdG8gdGhlIHN0YXJ0IGRhdGUpIHRoZW4gc2V0IHRoZSBlbmQgdG8gdGhlIGJvdW5kYXJ5IGVuZFxuICAgICAgICAgICAgICAgIGNvbnN0IGJvdW5kYXJ5ID0gZGF0ZVJhbmdlKHsgLi4udGhpcy5fY3VycmVudERhdGVSYW5nZUlucHV0LCBkYXRlOiB4LnN0YXJ0IH0gYXMgRGF0ZVJhbmdlSW5wdXQpO1xuICAgICAgICAgICAgICAgIHJhbmdlVG9TZXQgPSB7IHN0YXJ0OiB4LnN0YXJ0LCBlbmQ6IGJvdW5kYXJ5LmVuZCB9O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc2V0RGF0ZVJhbmdlKHJhbmdlVG9TZXQsICdpbnB1dCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5fbGF0ZXN0Qm91bmRhcnlTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5sYXRlc3RCb3VuZGFyeSQuc3Vic2NyaWJlKCh4KSA9PiAodGhpcy5fbGF0ZXN0Qm91bmRhcnkgPSB4KSk7XG4gICAgdGhpcy5fZGF0ZVJhbmdlSW5wdXQubmV4dChhc09ic2VydmFibGVGcm9tR2V0dGVyKHRoaXMuZml4ZWREYXRlUmFuZ2VGaWVsZC5kYXRlUmFuZ2VJbnB1dCkpO1xuXG4gICAgdGhpcy5fZGlzYWJsZUVuZFN1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLmVuZERpc2FibGVkJC5zdWJzY3JpYmUoKGRpc2FibGVkKSA9PiB7XG4gICAgICBjb25zdCBlbmQgPSB0aGlzLmlucHV0UmFuZ2VGb3JtLmdldCgnZW5kJyk7XG5cbiAgICAgIGlmIChlbmQpIHtcbiAgICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgICAgZW5kLmRpc2FibGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbmQuZW5hYmxlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IGlucHV0UGlja2VyQ29uZmlnID0gdGhpcy5maXhlZERhdGVSYW5nZUZpZWxkLnBpY2tlckNvbmZpZztcbiAgICB0aGlzLl9jb25maWcubmV4dChpbnB1dFBpY2tlckNvbmZpZyA/IGFzT2JzZXJ2YWJsZUZyb21HZXR0ZXIoaW5wdXRQaWNrZXJDb25maWcpIDogdW5kZWZpbmVkKTtcblxuICAgIC8vIFNldCBkZWZhdWx0IHRpbWV6b25lIGlmIHByb3ZpZGVkLlxuICAgIGlmICh0aGlzLnRpbWV6b25lICYmICF0aGlzLmZpeGVkRGF0ZVJhbmdlRmllbGQuZnVsbERheUluVVRDKSB7XG4gICAgICB0aGlzLl90aW1lem9uZS5uZXh0KGFzT2JzZXJ2YWJsZUZyb21HZXR0ZXIodGhpcy50aW1lem9uZSkpO1xuICAgIH1cblxuICAgIC8vIFdhdGNoIGZvciBkaXNhYmxlZCBjaGFuZ2VzIHNvIHdlIGNhbiBwcm9wb2dhdGUgdGhlbSBwcm9wZXJseS5cbiAgICB0aGlzLmZvcm1Db250cm9sLnJlZ2lzdGVyT25EaXNhYmxlZENoYW5nZSgoZGlzYWJsZWQpID0+IHtcbiAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICB0aGlzLmlucHV0UmFuZ2VGb3JtLmRpc2FibGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaW5wdXRSYW5nZUZvcm0uZW5hYmxlKCk7XG5cbiAgICAgICAgdGhpcy5lbmREaXNhYmxlZCQucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKGRpc2FibGVkKSA9PiB7XG4gICAgICAgICAgY29uc3QgZW5kID0gdGhpcy5pbnB1dFJhbmdlRm9ybS5nZXQoJ2VuZCcpO1xuXG4gICAgICAgICAgaWYgKGVuZCkge1xuICAgICAgICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgICAgICAgIGVuZC5kaXNhYmxlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBlbmQuZW5hYmxlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnByZXNldHMgIT0gbnVsbCkge1xuICAgICAgdGhpcy5fcHJlc2V0cy5uZXh0KGFzT2JzZXJ2YWJsZUZyb21HZXR0ZXIodGhpcy5wcmVzZXRzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3ByZXNldHMubmV4dCh0aGlzLmRieERhdGVUaW1lRmllbGRDb25maWdTZXJ2aWNlLmNvbmZpZ3VyYXRpb25zJCk7XG4gICAgfVxuXG4gICAgdGhpcy5fYWN0aXZlRGF0ZVN1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLmNhbGVuZGFyRm9jdXNEYXRlJC5zdWJzY3JpYmUoKHgpID0+IHtcbiAgICAgIHRoaXMuY2FsZW5kYXIuYWN0aXZlRGF0ZSA9IHg7XG4gICAgfSk7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIHRoaXMuX3N1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5faW5wdXRSYW5nZUZvcm1TdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX2lucHV0UmFuZ2VGb3JtVmFsdWVTdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX2RhdGVSYW5nZUlucHV0U3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLl9jdXJyZW50U2VsZWN0aW9uTW9kZVN1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fbGF0ZXN0Qm91bmRhcnlTdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX2Rpc2FibGVFbmRTdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX2FjdGl2ZURhdGVTdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX2NvbmZpZy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3NlbGVjdGlvbk1vZGUuY29tcGxldGUoKTtcbiAgICB0aGlzLl9kYXRlUmFuZ2VJbnB1dC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3RpbWV6b25lLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fcHJlc2V0cy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3NlbGVjdGlvbkV2ZW50LmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fZm9ybUNvbnRyb2xPYnMuY29tcGxldGUoKTtcbiAgfVxuXG4gIHNlbGVjdGVkQ2hhbmdlKGRhdGU6IE1heWJlPERhdGU+KTogdm9pZCB7XG4gICAgdGhpcy5zZXREYXRlUmFuZ2UoZGF0ZSA/IHsgc3RhcnQ6IGRhdGUgfSA6IG51bGwsICdjYWxlbmRhcicpO1xuICB9XG5cbiAgc2V0RGF0ZVJhbmdlKHJhbmdlOiBNYXliZTxQYXJ0aWFsPERhdGVSYW5nZT4+LCB0eXBlOiBTZWxlY3RlZERhdGVFdmVudFR5cGUpIHtcbiAgICB0aGlzLl9zZWxlY3Rpb25FdmVudC5uZXh0KHsgdHlwZSwgcmFuZ2UgfSk7XG4gIH1cblxuICBfY3JlYXRlRGF0ZVJhbmdlKGRhdGU6IE1heWJlPERhdGU+KTogTWF5YmU8RGF0ZVJhbmdlPiB7XG4gICAgcmV0dXJuIGRhdGUgPyBkYXRlUmFuZ2UoeyAuLi50aGlzLl9jdXJyZW50RGF0ZVJhbmdlSW5wdXQsIGRhdGUgfSBhcyBEYXRlUmFuZ2VJbnB1dCkgOiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERieEZpeGVkRGF0ZVJhbmdlRmllbGRTZWxlY3Rpb25TdHJhdGVneTxEPiBpbXBsZW1lbnRzIE1hdERhdGVSYW5nZVNlbGVjdGlvblN0cmF0ZWd5PEQ+IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZGF0ZUFkYXB0ZXI6IERhdGVBZGFwdGVyPEQ+LCByZWFkb25seSBkYnhGaXhlZERhdGVSYW5nZUZpZWxkQ29tcG9uZW50OiBEYnhGaXhlZERhdGVSYW5nZUZpZWxkQ29tcG9uZW50KSB7fVxuXG4gIHNlbGVjdGlvbkZpbmlzaGVkKGRhdGU6IEQgfCBudWxsLCBjdXJyZW50UmFuZ2U6IERhdGVQaWNrZXJEYXRlUmFuZ2U8RD4sIGV2ZW50OiBFdmVudCk6IERhdGVQaWNrZXJEYXRlUmFuZ2U8RD4ge1xuICAgIC8vIHVudXNlZFxuICAgIHJldHVybiBjdXJyZW50UmFuZ2U7XG4gIH1cblxuICBjcmVhdGVQcmV2aWV3KGFjdGl2ZURhdGU6IEQgfCBudWxsLCBjdXJyZW50UmFuZ2U6IERhdGVQaWNrZXJEYXRlUmFuZ2U8RD4sIGV2ZW50OiBFdmVudCk6IERhdGVQaWNrZXJEYXRlUmFuZ2U8RD4ge1xuICAgIGlmIChhY3RpdmVEYXRlICE9IG51bGwgJiYgdGhpcy5kYnhGaXhlZERhdGVSYW5nZUZpZWxkQ29tcG9uZW50LmN1cnJlbnRTZWxlY3Rpb25Nb2RlICE9PSAnc2luZ2xlJykge1xuICAgICAgY29uc3QgbGF0ZXN0Qm91bmRhcnkgPSB0aGlzLmRieEZpeGVkRGF0ZVJhbmdlRmllbGRDb21wb25lbnQubGF0ZXN0Qm91bmRhcnk7XG4gICAgICBjb25zdCBkYXRlID0gdGhpcy5kYXRlRnJvbUFkYXB0ZXJEYXRlKGFjdGl2ZURhdGUpO1xuXG4gICAgICBpZiAobGF0ZXN0Qm91bmRhcnkgJiYgaXNEYXRlSW5EYXRlUmFuZ2UoZGF0ZSwgbGF0ZXN0Qm91bmRhcnkpKSB7XG4gICAgICAgIGNvbnN0IGV4YW1wbGVEYXRlUmFuZ2UgPSB0aGlzLl9jcmVhdGVEYXRlUmFuZ2UobGF0ZXN0Qm91bmRhcnkpO1xuICAgICAgICByZXR1cm4gZXhhbXBsZURhdGVSYW5nZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRGF0ZVJhbmdlV2l0aERhdGUoYWN0aXZlRGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVEYXRlUmFuZ2VXaXRoRGF0ZShpbnB1dDogRCB8IG51bGwpOiBEYXRlUGlja2VyRGF0ZVJhbmdlPEQ+IHtcbiAgICBsZXQgZGF0ZVJhbmdlOiBNYXliZTxEYXRlUmFuZ2U+O1xuXG4gICAgaWYgKGlucHV0KSB7XG4gICAgICBjb25zdCBkYXRlID0gdGhpcy5kYXRlRnJvbUFkYXB0ZXJEYXRlKGlucHV0KTtcbiAgICAgIGRhdGVSYW5nZSA9IHRoaXMuZGJ4Rml4ZWREYXRlUmFuZ2VGaWVsZENvbXBvbmVudC5fY3JlYXRlRGF0ZVJhbmdlKGRhdGUpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9jcmVhdGVEYXRlUmFuZ2UoZGF0ZVJhbmdlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZURhdGVSYW5nZShpbnB1dDogTWF5YmU8RGF0ZVJhbmdlPik6IERhdGVQaWNrZXJEYXRlUmFuZ2U8RD4ge1xuICAgIGlmIChpbnB1dCkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlUGlja2VyRGF0ZVJhbmdlPEQ+KHRoaXMuYWRhcHRlckRhdGVGcm9tRGF0ZShpbnB1dC5zdGFydCksIHRoaXMuYWRhcHRlckRhdGVGcm9tRGF0ZShpbnB1dC5lbmQpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlUGlja2VyRGF0ZVJhbmdlPEQ+KG51bGwsIG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIGRhdGVGcm9tQWRhcHRlckRhdGUoaW5wdXQ6IEQpIHtcbiAgICBjb25zdCBkYXk6IERheU9mTW9udGggPSB0aGlzLl9kYXRlQWRhcHRlci5nZXREYXRlKGlucHV0KTtcbiAgICBjb25zdCBtb250aEluZGV4OiBEYXRlTW9udGggPSB0aGlzLl9kYXRlQWRhcHRlci5nZXRNb250aChpbnB1dCk7XG4gICAgY29uc3QgeWVhcjogWWVhck51bWJlciA9IHRoaXMuX2RhdGVBZGFwdGVyLmdldFllYXIoaW5wdXQpO1xuICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCBtb250aEluZGV4LCBkYXkpO1xuICB9XG5cbiAgYWRhcHRlckRhdGVGcm9tRGF0ZShkYXRlOiBEYXRlKTogRCB7XG4gICAgY29uc3QgZGF5OiBEYXlPZk1vbnRoID0gZGF0ZS5nZXREYXRlKCk7XG4gICAgY29uc3QgbW9udGhJbmRleDogRGF0ZU1vbnRoID0gZGF0ZS5nZXRNb250aCgpO1xuICAgIGNvbnN0IHllYXI6IFllYXJOdW1iZXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG5cbiAgICByZXR1cm4gdGhpcy5fZGF0ZUFkYXB0ZXIuY3JlYXRlRGF0ZSh5ZWFyLCBtb250aEluZGV4LCBkYXkpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZGJ4LWZpeGVkZGF0ZXJhbmdlLWZpZWxkXCI+XG4gIDxtYXQtY2FsZW5kYXIgI2NhbGVuZGFyVmlldyBbc2VsZWN0ZWRdPVwiY2FsZW5kYXJTZWxlY3Rpb24kIHwgYXN5bmNcIiBbZGF0ZUZpbHRlcl09XCIocGlja2VyRmlsdGVyJCB8IGFzeW5jKSB8fCBkZWZhdWx0UGlja2VyRmlsdGVyXCIgW21pbkRhdGVdPVwibWluJCB8IGFzeW5jXCIgW21heERhdGVdPVwibWF4JCB8IGFzeW5jXCIgKHNlbGVjdGVkQ2hhbmdlKT1cInNlbGVjdGVkQ2hhbmdlKCRldmVudClcIj48L21hdC1jYWxlbmRhcj5cbiAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZGJ4LWZpeGVkZGF0ZXJhbmdlLWZpZWxkLWlucHV0XCIgYXBwZWFyYW5jZT1cImZpbGxcIj5cbiAgICA8bWF0LWRhdGUtcmFuZ2UtaW5wdXQgKm5nSWY9XCJzaG93UmFuZ2VJbnB1dFwiIFtmb3JtR3JvdXBdPVwiaW5wdXRSYW5nZUZvcm1cIj5cbiAgICAgIDxpbnB1dCAjc3RhcnREYXRlSW5wdXQgbWF0U3RhcnREYXRlIGZvcm1Db250cm9sTmFtZT1cInN0YXJ0XCIgcGxhY2Vob2xkZXI9XCJTdGFydCBkYXRlXCIgLz5cbiAgICAgIDxpbnB1dCAjZW5kRGF0ZUlucHV0IFtuZ0NsYXNzXT1cIihlbmREaXNhYmxlZCQgfCBhc3luYykgPyAnZGJ4LWZpeGVkZGF0ZXJhbmdlLWZpZWxkLWlucHV0LWVuZCcgOiAnJ1wiIFthdHRyLnRhYmluZGV4XT1cIihlbmREaXNhYmxlZCQgfCBhc3luYykgPyAtMSA6IDBcIiBtYXRFbmREYXRlIGZvcm1Db250cm9sTmFtZT1cImVuZFwiIHBsYWNlaG9sZGVyPVwiRW5kIGRhdGVcIiAvPlxuICAgIDwvbWF0LWRhdGUtcmFuZ2UtaW5wdXQ+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKVwiPkRhdGUgcmFuZ2UgaXMgcmVxdWlyZWQ8L21hdC1lcnJvcj5cbjwvZGl2PlxuIl19
506
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4ZWRkYXRlcmFuZ2UuZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvdmFsdWUvZGF0ZS9maXhlZGRhdGVyYW5nZS5maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC92YWx1ZS9kYXRlL2ZpeGVkZGF0ZXJhbmdlLmZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBNEYsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVKLE9BQU8sRUFBRSxvQkFBb0IsRUFBaUMsOEJBQThCLEVBQUUscUJBQXFCLEVBQTZCLGtCQUFrQixFQUF3RCxTQUFTLEVBQUUsaUJBQWlCLEVBQUUseUJBQXlCLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoVyxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4TixPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQXFCLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFtQixXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNC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TSxHQUFHLEdBQWUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sVUFBVSxHQUFjLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QyxNQUFNLElBQUksR0FBZSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFNUMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzdELENBQUM7O3FJQXZEVSx1Q0FBdUM7eUlBQXZDLHVDQUF1Qzs0RkFBdkMsdUNBQXVDO2tCQURuRCxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWF5YmUsIERlY2lzaW9uRnVuY3Rpb24sIE1pbGxpc2Vjb25kcywgVGltZXpvbmVTdHJpbmcsIERhdGVNb250aCwgRGF5T2ZNb250aCwgWWVhck51bWJlciwgaXNNb250aERheVNsYXNoRGF0ZSwgTVNfSU5fTUlOVVRFIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBndWVzc0N1cnJlbnRUaW1lem9uZSwgRGF0ZVRpbWV6b25lVXRjTm9ybWFsSW5zdGFuY2UsIGRhdGVUaW1lTWludXRlRGVjaXNpb25GdW5jdGlvbiwgZGF0ZVRpbWV6b25lVXRjTm9ybWFsLCBEYXRlUmFuZ2VJbnB1dCwgRGF0ZVJhbmdlLCBpc1NhbWVEYXRlRGF5UmFuZ2UsIERhdGVSYW5nZVdpdGhEYXRlT3JTdHJpbmdWYWx1ZSwgRGF0ZVRpbWVNaW51dGVDb25maWcsIGRhdGVSYW5nZSwgaXNEYXRlSW5EYXRlUmFuZ2UsIGNsYW1wRGF0ZVJhbmdlVG9EYXRlUmFuZ2UsIGlzU2FtZURhdGVSYW5nZSwgaXNTYW1lRGF0ZURheSwgbGltaXREYXRlVGltZUluc3RhbmNlIH0gZnJvbSAnQGRlcmVla2IvZGF0ZSc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHNoYXJlUmVwbGF5LCBtYXAsIHN0YXJ0V2l0aCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGRlYm91bmNlVGltZSwgdGhyb3R0bGVUaW1lLCBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QsIG9mLCBjb21iaW5lTGF0ZXN0V2l0aCwgZmlsdGVyLCBjb21iaW5lTGF0ZXN0LCBzY2FuLCBmaXJzdCwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSAnQG5neC1mb3JtbHkvbWF0ZXJpYWwnO1xuaW1wb3J0IHsgRmllbGRUeXBlQ29uZmlnLCBGb3JtbHlGaWVsZFByb3BzIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBNYXREYXRlUmFuZ2VTZWxlY3Rpb25TdHJhdGVneSwgTUFUX0RBVEVfUkFOR0VfU0VMRUNUSU9OX1NUUkFURUdZLCBEYXRlUmFuZ2UgYXMgRGF0ZVBpY2tlckRhdGVSYW5nZSwgTWF0Q2FsZW5kYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IGFzT2JzZXJ2YWJsZUZyb21HZXR0ZXIsIGZpbHRlck1heWJlLCBPYnNlcnZhYmxlT3JWYWx1ZUdldHRlciwgc2tpcEZpcnN0TWF5YmUsIFN1YnNjcmlwdGlvbk9iamVjdCwgc3dpdGNoTWFwTWF5YmVEZWZhdWx0IH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBEYnhEYXRlVGltZVZhbHVlTW9kZSwgZGJ4RGF0ZVJhbmdlSXNTYW1lRGF0ZVJhbmdlRmllbGRWYWx1ZSwgZGJ4RGF0ZVRpbWVJbnB1dFZhbHVlUGFyc2VGYWN0b3J5LCBkYnhEYXRlVGltZU91dHB1dFZhbHVlRmFjdG9yeSB9IGZyb20gJy4vZGF0ZS52YWx1ZSc7XG5pbXBvcnQgeyBEYXRlVGltZVByZXNldENvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2RhdGV0aW1lJztcbmltcG9ydCB7IERieERhdGVUaW1lRmllbGRNZW51UHJlc2V0c1NlcnZpY2UgfSBmcm9tICcuL2RhdGV0aW1lLmZpZWxkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IGlzQWZ0ZXIsIGlzQmVmb3JlIH0gZnJvbSAnZGF0ZS1mbnMnO1xuXG5leHBvcnQgdHlwZSBEYnhGaXhlZERhdGVSYW5nZURhdGVSYW5nZUlucHV0ID0gT21pdDxEYXRlUmFuZ2VJbnB1dCwgJ2RhdGUnPjtcblxuZXhwb3J0IHR5cGUgRGJ4Rml4ZWREYXRlUmFuZ2VQaWNrZXJDb25maWd1cmF0aW9uID0gT21pdDxEYXRlVGltZU1pbnV0ZUNvbmZpZywgJ2RhdGUnPjtcblxuZXhwb3J0IHR5cGUgRGJ4Rml4ZWREYXRlUmFuZ2VTZWxlY3Rpb25Nb2RlID0gJ3NpbmdsZScgfCAnbm9ybWFsJyB8ICdhcmJpdHJhcnknIHwgJ2FyYml0cmFyeV9xdWljayc7XG5leHBvcnQgdHlwZSBEYnhGaXhlZERhdGVSYW5nZVBpY2tpbmcgPSAnc3RhcnQnIHwgJ2VuZCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4Rml4ZWREYXRlUmFuZ2VGaWVsZFByb3BzIGV4dGVuZHMgRm9ybWx5RmllbGRQcm9wcyB7XG4gIC8qKlxuICAgKiBEYXRlIHJhbmdlIGlucHV0IHRvIGJ1aWxkIHRoZSBkYXRlIHJhbmdlLlxuICAgKi9cbiAgZGF0ZVJhbmdlSW5wdXQ6IE9ic2VydmFibGVPclZhbHVlR2V0dGVyPERieEZpeGVkRGF0ZVJhbmdlRGF0ZVJhbmdlSW5wdXQ+O1xuXG4gIC8qKlxuICAgKiBTZWxlY3Rpb24gbW9kZSB0byB1c2Ugd2hlbiBwaWNraW5nIGRhdGVzIG9uIHRoZSBjYWxlbmRhci5cbiAgICovXG4gIHNlbGVjdGlvbk1vZGU/OiBNYXliZTxPYnNlcnZhYmxlT3JWYWx1ZUdldHRlcjxEYnhGaXhlZERhdGVSYW5nZVNlbGVjdGlvbk1vZGU+PjtcblxuICAvKipcbiAgICogVmFsdWUgbW9kZSBmb3IgdGhlIGRhdGVzIGluIHRoZSBvdXRwdXQgRGF0ZVJhbmdlLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byBEQVRFXG4gICAqL1xuICB2YWx1ZU1vZGU/OiBEYnhEYXRlVGltZVZhbHVlTW9kZTtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gcGFzcyB0aGUgZGF0ZSB2YWx1ZSBhcyBhIFVUQyBkYXRlLCBvciBhIGRhdGUgaW4gdGhlIGN1cnJlbnQgdGltZXpvbmUuXG4gICAqL1xuICBmdWxsRGF5SW5VVEM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gcGlja2VyIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHBpY2tlckNvbmZpZz86IE9ic2VydmFibGVPclZhbHVlR2V0dGVyPERieEZpeGVkRGF0ZVJhbmdlUGlja2VyQ29uZmlndXJhdGlvbj47XG5cbiAgLyoqXG4gICAqIChPcHRpb25hbCkgVGhlIGlucHV0IHRpbWV6b25lIHRvIGRlZmF1bHQgdG8uXG4gICAqXG4gICAqIElnbm9yZWQgaWYgZnVsbERheUluVVRDIGlzIHRydWUuXG4gICAqL1xuICB0aW1lem9uZT86IE1heWJlPE9ic2VydmFibGVPclZhbHVlR2V0dGVyPE1heWJlPFRpbWV6b25lU3RyaW5nPj4+O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBkaXNwbGF5IHRoZSB0aW1lem9uZS4gVHJ1ZSBieSBkZWZhdWx0LlxuICAgKi9cbiAgc2hvd1RpbWV6b25lPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ3VzdG9tIHByZXNldHMgdG8gc2hvdyBpbiB0aGUgZHJvcGRvd24uXG4gICAqL1xuICBwcmVzZXRzPzogT2JzZXJ2YWJsZU9yVmFsdWVHZXR0ZXI8RGF0ZVRpbWVQcmVzZXRDb25maWd1cmF0aW9uW10+O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBzaG93IHRoZSByYW5nZSBpbnB1dC4gRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICovXG4gIHNob3dSYW5nZUlucHV0PzogYm9vbGVhbjtcbn1cblxuZnVuY3Rpb24gZGJ4Rml4ZWREYXRlUmFuZ2VJbnB1dFZhbHVlRmFjdG9yeShtb2RlOiBEYnhEYXRlVGltZVZhbHVlTW9kZSwgdGltZXpvbmVJbnN0YW5jZTogTWF5YmU8RGF0ZVRpbWV6b25lVXRjTm9ybWFsSW5zdGFuY2U+KTogKGlucHV0OiBNYXliZTxEYXRlUmFuZ2VXaXRoRGF0ZU9yU3RyaW5nVmFsdWU+KSA9PiBNYXliZTxEYXRlUmFuZ2U+IHtcbiAgY29uc3QgZGF0ZUlucHV0VHJhbnNmb3JtZXIgPSBkYnhEYXRlVGltZUlucHV0VmFsdWVQYXJzZUZhY3RvcnkobW9kZSwgdGltZXpvbmVJbnN0YW5jZSk7XG5cbiAgcmV0dXJuICh5KSA9PiB7XG4gICAgbGV0IHJlc3VsdDogTWF5YmU8RGF0ZVJhbmdlPjtcblxuICAgIGlmICh5KSB7XG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIHN0YXJ0OiBkYXRlSW5wdXRUcmFuc2Zvcm1lcih5LnN0YXJ0KSBhcyBEYXRlLFxuICAgICAgICBlbmQ6IGRhdGVJbnB1dFRyYW5zZm9ybWVyKHkuZW5kKSBhcyBEYXRlXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGRieEZpeGVkRGF0ZVJhbmdlT3V0cHV0VmFsdWVGYWN0b3J5KG1vZGU6IERieERhdGVUaW1lVmFsdWVNb2RlLCB0aW1lem9uZUluc3RhbmNlOiBNYXliZTxEYXRlVGltZXpvbmVVdGNOb3JtYWxJbnN0YW5jZT4pOiAoZGF0ZTogTWF5YmU8RGF0ZVJhbmdlPikgPT4gTWF5YmU8RGF0ZVJhbmdlV2l0aERhdGVPclN0cmluZ1ZhbHVlPiB7XG4gIGNvbnN0IGRhdGVPdXRwdXRUcmFuc2Zvcm1lciA9IGRieERhdGVUaW1lT3V0cHV0VmFsdWVGYWN0b3J5KG1vZGUsIHRpbWV6b25lSW5zdGFuY2UpO1xuXG4gIHJldHVybiAoeSkgPT4ge1xuICAgIGxldCByZXN1bHQ6IE1heWJlPERhdGVSYW5nZT47XG5cbiAgICBpZiAoeSkge1xuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICBzdGFydDogZGF0ZU91dHB1dFRyYW5zZm9ybWVyKHkuc3RhcnQpIGFzIERhdGUsXG4gICAgICAgIGVuZDogZGF0ZU91dHB1dFRyYW5zZm9ybWVyKHkuZW5kKSBhcyBEYXRlXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59XG5cbmNvbnN0IFRJTUVfT1VUUFVUX1RIUk9UVExFX1RJTUU6IE1pbGxpc2Vjb25kcyA9IDEwO1xuXG5leHBvcnQgdHlwZSBGaXhlZERhdGVSYW5nZVNjYW5UeXBlID0gJ3N0YXJ0JyB8ICdlbmQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpeGVkRGF0ZVJhbmdlU2NhbiB7XG4gIC8qKlxuICAgKiBQaWNrZWQgdGhlIHN0YXJ0IG9yIGVuZCBvZiB0aGUgcmFuZ2Ugb24gdGhlIGxhc3QgcGljay5cbiAgICovXG4gIGxhc3RQaWNrVHlwZT86IE1heWJlPEZpeGVkRGF0ZVJhbmdlU2NhblR5cGU+O1xuICAvKipcbiAgICogVGhlIGxhdGVzdCBkYXRlIHBhc3NlZCwgaWYgYXBwbGljYWJsZS5cbiAgICovXG4gIGxhc3REYXRlUmFuZ2U/OiBNYXliZTxQYXJ0aWFsPERhdGVSYW5nZT4+O1xuICAvKipcbiAgICogVGhlIGdlbmVyYXRlZCBib3VuZGFyeSByYW5nZS5cbiAgICovXG4gIGJvdW5kYXJ5PzogRGF0ZVJhbmdlO1xuICAvKipcbiAgICogTmV3IERhdGUgUmFuZ2VcbiAgICovXG4gIHJhbmdlPzogRGF0ZVJhbmdlO1xufVxuXG50eXBlIFNlbGVjdGVkRGF0ZUV2ZW50VHlwZSA9ICdjYWxlbmRhcicgfCAnaW5wdXQnO1xuXG5pbnRlcmZhY2UgU2VsZWN0ZWREYXRlRXZlbnQge1xuICB0eXBlOiBTZWxlY3RlZERhdGVFdmVudFR5cGU7XG4gIHJhbmdlPzogTWF5YmU8UGFydGlhbDxEYXRlUmFuZ2U+Pjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnZml4ZWRkYXRlcmFuZ2UuZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBNQVRfREFURV9SQU5HRV9TRUxFQ1RJT05fU1RSQVRFR1ksXG4gICAgICB1c2VDbGFzczogZm9yd2FyZFJlZigoKSA9PiBEYnhGaXhlZERhdGVSYW5nZUZpZWxkU2VsZWN0aW9uU3RyYXRlZ3kpXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIERieEZpeGVkRGF0ZVJhbmdlRmllbGRDb21wb25lbnQgZXh0ZW5kcyBGaWVsZFR5cGU8RmllbGRUeXBlQ29uZmlnPERieEZpeGVkRGF0ZVJhbmdlRmllbGRQcm9wcz4+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9zdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG5cbiAgcHJpdmF0ZSBfaW5wdXRSYW5nZUZvcm1TdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX2lucHV0UmFuZ2VGb3JtVmFsdWVTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG5cbiAgcHJpdmF0ZSBfZGF0ZVJhbmdlSW5wdXRTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX2N1cnJlbnRTZWxlY3Rpb25Nb2RlU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcml2YXRlIF9sYXRlc3RCb3VuZGFyeVN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSBfZGlzYWJsZUVuZFN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSBfYWN0aXZlRGF0ZVN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcblxuICBwcml2YXRlIF9jdXJyZW50RGF0ZVJhbmdlSW5wdXQ6IE1heWJlPERieEZpeGVkRGF0ZVJhbmdlRGF0ZVJhbmdlSW5wdXQ+ID0ge307XG4gIHByaXZhdGUgX2N1cnJlbnRTZWxlY3Rpb25Nb2RlOiBEYnhGaXhlZERhdGVSYW5nZVNlbGVjdGlvbk1vZGUgPSAnc2luZ2xlJztcbiAgcHJpdmF0ZSBfbGF0ZXN0Qm91bmRhcnk6IE1heWJlPERhdGVSYW5nZT4gPSBudWxsO1xuXG4gIHByaXZhdGUgX2NvbmZpZyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8T2JzZXJ2YWJsZTxEYnhGaXhlZERhdGVSYW5nZVBpY2tlckNvbmZpZ3VyYXRpb24+Pj4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSBfc2VsZWN0aW9uTW9kZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8T2JzZXJ2YWJsZTxEYnhGaXhlZERhdGVSYW5nZVNlbGVjdGlvbk1vZGU+Pj4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSBfZGF0ZVJhbmdlSW5wdXQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPE9ic2VydmFibGU8RGJ4Rml4ZWREYXRlUmFuZ2VEYXRlUmFuZ2VJbnB1dD4+Pih1bmRlZmluZWQpO1xuXG4gIHByaXZhdGUgX3RpbWV6b25lID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxPYnNlcnZhYmxlPE1heWJlPFRpbWV6b25lU3RyaW5nPj4+Pih1bmRlZmluZWQpO1xuICBwcml2YXRlIF9wcmVzZXRzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxPYnNlcnZhYmxlPERhdGVUaW1lUHJlc2V0Q29uZmlndXJhdGlvbltdPj4ob2YoW10pKTtcblxuICBwcml2YXRlIF9zZWxlY3Rpb25FdmVudCA9IG5ldyBTdWJqZWN0PFNlbGVjdGVkRGF0ZUV2ZW50PigpO1xuICByZWFkb25seSBzZWxlY3RlZERhdGVSYW5nZSQ6IE9ic2VydmFibGU8TWF5YmU8UGFydGlhbDxEYXRlUmFuZ2U+Pj4gPSB0aGlzLl9zZWxlY3Rpb25FdmVudC5waXBlKG1hcCgoeCkgPT4geC5yYW5nZSkpO1xuXG4gIHByaXZhdGUgX2Zvcm1Db250cm9sT2JzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxBYnN0cmFjdENvbnRyb2w8TWF5YmU8RGF0ZVJhbmdlPj4+Pih1bmRlZmluZWQpO1xuICByZWFkb25seSBmb3JtQ29udHJvbCQgPSB0aGlzLl9mb3JtQ29udHJvbE9icy5waXBlKGZpbHRlck1heWJlKCkpO1xuXG4gIEBWaWV3Q2hpbGQoTWF0Q2FsZW5kYXIpXG4gIGNhbGVuZGFyITogTWF0Q2FsZW5kYXI8RGF0ZT47XG5cbiAgQFZpZXdDaGlsZCgnc3RhcnREYXRlSW5wdXQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgc3RhcnREYXRlSW5wdXRFbGVtZW50ITogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdlbmREYXRlSW5wdXQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgZW5kRGF0ZUlucHV0RWxlbWVudCE6IEVsZW1lbnRSZWY7XG5cbiAgZ2V0IGN1cnJlbnREYXRlUmFuZ2VJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudERhdGVSYW5nZUlucHV0O1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRTZWxlY3Rpb25Nb2RlKCkge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50U2VsZWN0aW9uTW9kZTtcbiAgfVxuXG4gIGdldCBsYXRlc3RCb3VuZGFyeSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbGF0ZXN0Qm91bmRhcnk7XG4gIH1cblxuICByZWFkb25seSBjb25maWckOiBPYnNlcnZhYmxlPERieEZpeGVkRGF0ZVJhbmdlUGlja2VyQ29uZmlndXJhdGlvbj4gPSB0aGlzLl9jb25maWcucGlwZShcbiAgICBmaWx0ZXJNYXliZSgpLFxuICAgIHN3aXRjaE1hcCgoeCkgPT4geCksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGxpbWl0RGF0ZVRpbWVJbnN0YW5jZSQgPSB0aGlzLmNvbmZpZyQucGlwZShtYXAobGltaXREYXRlVGltZUluc3RhbmNlKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IHNlbGVjdGlvbk1vZGUkOiBPYnNlcnZhYmxlPERieEZpeGVkRGF0ZVJhbmdlU2VsZWN0aW9uTW9kZT4gPSB0aGlzLl9zZWxlY3Rpb25Nb2RlLnBpcGUoXG4gICAgc3dpdGNoTWFwTWF5YmVEZWZhdWx0PERieEZpeGVkRGF0ZVJhbmdlU2VsZWN0aW9uTW9kZT4oJ3NpbmdsZScpLFxuICAgIG1hcCgoeCkgPT4geCA/PyAnc2luZ2xlJyksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRhdGVSYW5nZUlucHV0JCA9IHRoaXMuX2RhdGVSYW5nZUlucHV0LnBpcGUoc3dpdGNoTWFwTWF5YmVEZWZhdWx0KCksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSB0aW1lem9uZSQ6IE9ic2VydmFibGU8TWF5YmU8VGltZXpvbmVTdHJpbmc+PiA9IHRoaXMuX3RpbWV6b25lLnBpcGUoc3dpdGNoTWFwTWF5YmVEZWZhdWx0KCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnBpcGUoXG4gICAgbWFwKChkZWZhdWx0VGltZXpvbmUpID0+IHtcbiAgICAgIHJldHVybiBkZWZhdWx0VGltZXpvbmUgPz8gZ3Vlc3NDdXJyZW50VGltZXpvbmUoKTtcbiAgICB9KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgdGltZXpvbmVJbnN0YW5jZSQ6IE9ic2VydmFibGU8TWF5YmU8RGF0ZVRpbWV6b25lVXRjTm9ybWFsSW5zdGFuY2U+PiA9IHRoaXMudGltZXpvbmUkLnBpcGUoXG4gICAgbWFwKCh0aW1lem9uZSkgPT4gKHRpbWV6b25lID8gZGF0ZVRpbWV6b25lVXRjTm9ybWFsKHsgdGltZXpvbmUgfSkgOiB1bmRlZmluZWQpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHZhbHVlSW5TeXN0ZW1UaW1lem9uZSQ6IE9ic2VydmFibGU8TWF5YmU8RGF0ZVJhbmdlPj4gPSB0aGlzLmZvcm1Db250cm9sJC5waXBlKFxuICAgIG1hcCgoY29udHJvbCkgPT4gY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGg8TWF5YmU8RGF0ZVJhbmdlV2l0aERhdGVPclN0cmluZ1ZhbHVlPj4oY29udHJvbC52YWx1ZSksIHNoYXJlUmVwbGF5KDEpKSksXG4gICAgY29tYmluZUxhdGVzdFdpdGgodGhpcy50aW1lem9uZUluc3RhbmNlJCksXG4gICAgc3dpdGNoTWFwKChbeCwgdGltZXpvbmVJbnN0YW5jZV0pID0+IHtcbiAgICAgIHJldHVybiB4LnBpcGUobWFwKGRieEZpeGVkRGF0ZVJhbmdlSW5wdXRWYWx1ZUZhY3RvcnkodGhpcy52YWx1ZU1vZGUsIHRpbWV6b25lSW5zdGFuY2UpKSk7XG4gICAgfSksXG4gICAgdGhyb3R0bGVUaW1lKDIwLCB1bmRlZmluZWQsIHsgbGVhZGluZzogZmFsc2UsIHRyYWlsaW5nOiB0cnVlIH0pLCAvLyB0aHJvdHRsZSBpbmNvbWluZyB2YWx1ZXMgYW5kIHRpbWV6b25lIGNoYW5nZXNcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZDxNYXliZTxEYXRlUmFuZ2U+Pihpc1NhbWVEYXRlRGF5UmFuZ2UpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgZGF0ZVJhbmdlU2VsZWN0aW9uRm9yTW9kZShtb2RlOiBEYnhGaXhlZERhdGVSYW5nZVNlbGVjdGlvbk1vZGUpIHtcbiAgICBjb25zdCByZXN1bHQ6IE9ic2VydmFibGU8TWF5YmU8RGF0ZVJhbmdlPj4gPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmRhdGVSYW5nZUlucHV0JCwgdGhpcy5saW1pdERhdGVUaW1lSW5zdGFuY2UkXSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoW2RhdGVSYW5nZUlucHV0LCBsaW1pdEluc3RhbmNlXSkgPT4ge1xuICAgICAgICBjb25zdCBoYXNEYXRlUmFuZ2VDb25maWd1cmF0aW9uID0gQm9vbGVhbihkYXRlUmFuZ2VJbnB1dCk7XG4gICAgICAgIGNvbnN0IG1pbk1heENsYW1wID0gKGRhdGVSYW5nZTogRGF0ZVJhbmdlKSA9PiBsaW1pdEluc3RhbmNlLmNsYW1wRGF0ZVJhbmdlKGRhdGVSYW5nZSk7XG5cbiAgICAgICAgaWYgKG1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgLy8gb25seSB1c2UgdGhlIHN0YXJ0IGRhdGUuXG4gICAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UkLnBpcGUoXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChpc1NhbWVEYXRlRGF5UmFuZ2UpLFxuICAgICAgICAgICAgbWFwKChpbnB1dERhdGVSYW5nZSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBkYXRlID0gaW5wdXREYXRlUmFuZ2U/LnN0YXJ0O1xuICAgICAgICAgICAgICByZXR1cm4gZGF0ZSA/IChtaW5NYXhDbGFtcChkYXRlUmFuZ2UoeyAuLi5kYXRlUmFuZ2VJbnB1dCwgZGF0ZSB9IGFzIERhdGVSYW5nZUlucHV0KSkgYXMgRGF0ZVJhbmdlKSA6IG51bGw7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gdGFrZSB0aGUgZmlyc3QgZGF0ZSwgdGhlbiB3YWl0IHVubGVzcyB0aGUgZGF0ZSBpcyBvdXRzaWRlIG9mIHRoZSByYW5nZS5cbiAgICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZERhdGVSYW5nZSQucGlwZShcbiAgICAgICAgICAgIHNjYW4oKGFjYzogRml4ZWREYXRlUmFuZ2VTY2FuLCBuZXh0RGF0ZVJhbmdlOiBNYXliZTxQYXJ0aWFsPERhdGVSYW5nZT4+KSA9PiB7XG4gICAgICAgICAgICAgIGxldCByZXN1bHQ6IEZpeGVkRGF0ZVJhbmdlU2NhbjtcbiAgICAgICAgICAgICAgbGV0IHBpY2tUeXBlOiBNYXliZTxGaXhlZERhdGVSYW5nZVNjYW5UeXBlPiA9ICdzdGFydCc7XG5cbiAgICAgICAgICAgICAgaWYgKG5leHREYXRlUmFuZ2UgJiYgbmV4dERhdGVSYW5nZS5zdGFydCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBzdGFydDogc3RhcnRPck5leHREYXRlLCBlbmQgfSA9IG5leHREYXRlUmFuZ2U7XG4gICAgICAgICAgICAgICAgY29uc3QgcG90ZW50aWFsQm91bmRhcnkgPSBkYXRlUmFuZ2UoeyAuLi5kYXRlUmFuZ2VJbnB1dCwgZGF0ZTogc3RhcnRPck5leHREYXRlIH0gYXMgRGF0ZVJhbmdlSW5wdXQpO1xuXG4gICAgICAgICAgICAgICAgLy8gb25seSBjb21lcyB0aHJvdWdoIHdoZW4gcGFzc2VkIGJ5IHRoZSB0ZXh0IGlucHV0c1xuICAgICAgICAgICAgICAgIGlmIChzdGFydE9yTmV4dERhdGUgJiYgZW5kKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCByYW5nZSA9IGNsYW1wRGF0ZVJhbmdlVG9EYXRlUmFuZ2UobmV4dERhdGVSYW5nZSwgcG90ZW50aWFsQm91bmRhcnkpIGFzIERhdGVSYW5nZTtcbiAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgbGFzdERhdGVSYW5nZTogbmV4dERhdGVSYW5nZSxcbiAgICAgICAgICAgICAgICAgICAgYm91bmRhcnk6IHJhbmdlLFxuICAgICAgICAgICAgICAgICAgICByYW5nZVxuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgbGV0IHJhbmdlOiBNYXliZTxEYXRlUmFuZ2U+ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgbGV0IGJvdW5kYXJ5OiBNYXliZTxEYXRlUmFuZ2U+ID0gcG90ZW50aWFsQm91bmRhcnk7XG5cbiAgICAgICAgICAgICAgICAgIGlmIChtb2RlID09PSAnbm9ybWFsJykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc0RhdGVSYW5nZUNvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGVyZSBpcyBubyBjb25maWd1cmVkIHJhbmdlL2JvdW5kYXJ5LCB0aGVuIGp1c3Qgc2V0IHRoZSBwaWNrIHR5cGUgYmFzZWQgb24gdGhlIGxhc3QgdHlwZVxuICAgICAgICAgICAgICAgICAgICAgIGJvdW5kYXJ5ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgIHBpY2tUeXBlID0gYWNjLmxhc3RQaWNrVHlwZSA9PT0gJ3N0YXJ0JyA/ICdlbmQnIDogJ3N0YXJ0JztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgcGljayBpcyBvdXRzaWRlIHRoZSBib3VuZGFyeSwgdGhlbiBjb25zaWRlciBpdCBhIHN0YXJ0IHBpY2sgdHlwZS5cbiAgICAgICAgICAgICAgICAgICAgICBwaWNrVHlwZSA9IGFjYy5sYXN0UGlja1R5cGUgPT09ICdzdGFydCcgJiYgYWNjLmJvdW5kYXJ5ICYmIGlzRGF0ZUluRGF0ZVJhbmdlKHN0YXJ0T3JOZXh0RGF0ZSwgYWNjLmJvdW5kYXJ5KSA/ICdlbmQnIDogJ3N0YXJ0JztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIGFzc2VydCB0aGUgc3RhcnQgZXhpc3RzIGZyb20gdGhlIHByZXZpb3VzIGNsaWNrLCBvdGhlcndpc2UgY2xlYXIgaXQuXG4gICAgICAgICAgICAgICAgICAgIGlmIChwaWNrVHlwZSA9PT0gJ2VuZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0U3RhcnQgPSBhY2MubGFzdERhdGVSYW5nZT8uc3RhcnQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxhc3RTdGFydCB8fCAhaXNBZnRlcihzdGFydE9yTmV4dERhdGUsIGxhc3RTdGFydCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBpY2tUeXBlID0gJ3N0YXJ0JztcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyByZWFjdCBiYXNlZCBvbiBob3cgdGhpc1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHBpY2tUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHdlJ3JlIHBpY2tpbmcgdGhlIGVuZCB0aGVuIHNldCB0aGUgcmFuZ2UuXG4gICAgICAgICAgICAgICAgICAgICAgICByYW5nZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IGFjYy5sYXN0RGF0ZVJhbmdlPy5zdGFydCBhcyBEYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IHN0YXJ0T3JOZXh0RGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kYXJ5ID0gcmFuZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzdGFydCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyByZXRhaW4gdGhlIGJvdW5kYXJ5IGFzIHBvdGVudGlhbCBib3VuZGFyeSwgYW5kIHNldCBvdXIgbmV3IHJhbmdlIGZyb20gdGhlIHNpbmdsZSBkYXRlLlxuICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBzdGFydE9yTmV4dERhdGUgYXMgRGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBzdGFydE9yTmV4dERhdGUgYXMgRGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGFjYy5ib3VuZGFyeSAmJiBpc0RhdGVJbkRhdGVSYW5nZShzdGFydE9yTmV4dERhdGUsIGFjYy5ib3VuZGFyeSkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgaW4gdGhlIGRhdGUgcmFuZ2UsIHVzZXMgdGhlIHBpY2sgYXMgdGhlIGxhc3QgZGF0ZS5cbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IGFjYy5ib3VuZGFyeS5zdGFydCxcbiAgICAgICAgICAgICAgICAgICAgICBlbmQ6IHN0YXJ0T3JOZXh0RGF0ZVxuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChtb2RlID09PSAnYXJiaXRyYXJ5X3F1aWNrJykge1xuICAgICAgICAgICAgICAgICAgICAgIC8vIG1vZGlmeSBib3VuZGFyeSB0byBtYXRjaCByYW5nZVxuICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1NhbWVEYXRlUmFuZ2UoYWNjLnJhbmdlLCByYW5nZSkgJiYgaXNTYW1lRGF0ZURheShyYW5nZS5lbmQsIHN0YXJ0T3JOZXh0RGF0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHdlIGNsaWNrZWQgb24gdGhlIGVuZCByYW5nZSwgdGhlbiBleHBhbmQgdGhlIGJvdW5kYXJ5IGFnYWluIHRvIHRoZSBmdWxsIHJhbmdlLlxuICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UgPSBkYXRlUmFuZ2UoeyAuLi5kYXRlUmFuZ2VJbnB1dCwgZGF0ZTogcmFuZ2Uuc3RhcnQgfSBhcyBEYXRlUmFuZ2VJbnB1dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3VuZGFyeSA9IHJhbmdlO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3VuZGFyeSA9IHJhbmdlO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAvLyByZXRhaW4gc2FtZSBib3VuZGFyeVxuICAgICAgICAgICAgICAgICAgICAgIGJvdW5kYXJ5ID0gYWNjLmJvdW5kYXJ5O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1vZGUgPT09ICdhcmJpdHJhcnlfcXVpY2snKSB7XG4gICAgICAgICAgICAgICAgICAgIHJhbmdlID0gcG90ZW50aWFsQm91bmRhcnk7XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgbGFzdERhdGVSYW5nZTogbmV4dERhdGVSYW5nZSxcbiAgICAgICAgICAgICAgICAgICAgYm91bmRhcnksXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlXG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICAgICAgICBsYXN0RGF0ZVJhbmdlOiBuZXh0RGF0ZVJhbmdlXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICAgICAgICBsYXN0UGlja1R5cGU6IHBpY2tUeXBlLFxuICAgICAgICAgICAgICAgICAgbGFzdERhdGVSYW5nZTogcmVzdWx0Lmxhc3REYXRlUmFuZ2UsXG4gICAgICAgICAgICAgICAgICBib3VuZGFyeTogcmVzdWx0LmJvdW5kYXJ5ID8gKG1pbk1heENsYW1wKHJlc3VsdC5ib3VuZGFyeSkgYXMgRGF0ZVJhbmdlKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgIHJhbmdlOiByZXN1bHQucmFuZ2UgPyAobWluTWF4Q2xhbXAocmVzdWx0LnJhbmdlKSBhcyBEYXRlUmFuZ2UpIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9LCB7fSksXG4gICAgICAgICAgICBmaWx0ZXIoKHgpID0+ICF4Lmxhc3REYXRlUmFuZ2UgfHwgeC5yYW5nZSAhPSBudWxsKSwgLy8gcGFzcyB0aHJvdWdoIG51bGwvZGF0ZSBjbGVhcmluZ3Mgb3IgcmFuZ2VzXG4gICAgICAgICAgICBtYXAoKHgpID0+IHgucmFuZ2UgPz8gbnVsbCkgLy8gcmV0dXJuIHRoZSByYW5nZVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICByZWFkb25seSBmdWxsQm91bmRhcnkkOiBPYnNlcnZhYmxlPE1heWJlPERhdGVSYW5nZT4+ID0gdGhpcy5kYXRlUmFuZ2VTZWxlY3Rpb25Gb3JNb2RlKCdzaW5nbGUnKS5waXBlKHNoYXJlUmVwbGF5KDEpKTtcbiAgcmVhZG9ubHkgbGF0ZXN0Qm91bmRhcnkkOiBPYnNlcnZhYmxlPE1heWJlPERhdGVSYW5nZT4+ID0gdGhpcy5zZWxlY3Rpb25Nb2RlJC5waXBlKFxuICAgIHN3aXRjaE1hcCgobW9kZSkgPT4ge1xuICAgICAgaWYgKG1vZGUgPT09ICdhcmJpdHJhcnlfcXVpY2snKSB7XG4gICAgICAgIC8vIGluIGFyYml0cmFyeV9xdWljayBtb2RlLCB0aGUgbGF0ZXN0IHZhbHVlIGlzIHRoZSBib3VuZGFyeSwgc2luY2Ugd2UgYWx3YXlzIHNldCB0aGUgdmFsdWUgaW1tZWRpYXRlbHkuXG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlSW5TeXN0ZW1UaW1lem9uZSQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5mdWxsQm91bmRhcnkkO1xuICAgICAgfVxuICAgIH0pXG4gICk7XG5cbiAgLyoqXG4gICAqIEZvY3VzZXMgb24gdGhlIGRhdGUgYW55IHRpbWUgdGhlIHNlbGVjdGlvbiBldmVudCBmcm9tIHRoZSBwaWNrZXIgb2NjdXJlZCwgb3RoZXJ3aXNlIHVzZSB0aGUgc3lzdGVtIHZhbHVlXG4gICAqL1xuICByZWFkb25seSBjYWxlbmRhckZvY3VzRGF0ZSQ6IE9ic2VydmFibGU8RGF0ZT4gPSB0aGlzLl9zZWxlY3Rpb25FdmVudC5waXBlKHN0YXJ0V2l0aChudWxsKSkucGlwZShcbiAgICBzd2l0Y2hNYXAoKHNlbGVjdGlvbkV2ZW50KSA9PiB7XG4gICAgICBpZiAoc2VsZWN0aW9uRXZlbnQgJiYgc2VsZWN0aW9uRXZlbnQudHlwZSA9PT0gJ2NhbGVuZGFyJyAmJiBzZWxlY3Rpb25FdmVudC5yYW5nZT8uc3RhcnQpIHtcbiAgICAgICAgcmV0dXJuIG9mKHNlbGVjdGlvbkV2ZW50LnJhbmdlLnN0YXJ0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZ1bGxCb3VuZGFyeSQucGlwZShcbiAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgIG1hcCgoZnVsbEJvdW5kYXJ5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZnVsbEJvdW5kYXJ5Py5zdGFydCA/PyBzZWxlY3Rpb25FdmVudD8ucmFuZ2U/LnN0YXJ0O1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSksXG4gICAgZmlsdGVyTWF5YmUoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRhdGVSYW5nZVNlbGVjdGlvbiQ6IE9ic2VydmFibGU8TWF5YmU8RGF0ZVJhbmdlPj4gPSB0aGlzLnNlbGVjdGlvbk1vZGUkLnBpcGUoc3dpdGNoTWFwKChtb2RlKSA9PiB0aGlzLmRhdGVSYW5nZVNlbGVjdGlvbkZvck1vZGUobW9kZSkpKTtcblxuICByZWFkb25seSBjYWxlbmRhclNlbGVjdGlvbiQ6IE9ic2VydmFibGU8RGF0ZVBpY2tlckRhdGVSYW5nZTxEYXRlPiB8IG51bGw+ID0gdGhpcy52YWx1ZUluU3lzdGVtVGltZXpvbmUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiAoeCA/IG5ldyBEYXRlUGlja2VyRGF0ZVJhbmdlPERhdGU+KHguc3RhcnQsIHguZW5kKSA6IG51bGwpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGVuZERpc2FibGVkJCA9IHRoaXMuc2VsZWN0aW9uTW9kZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHggPT09ICdzaW5nbGUnKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgaW5wdXRSYW5nZUZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICBzdGFydDogbmV3IEZvcm1Db250cm9sPE1heWJlPERhdGU+PihudWxsKSxcbiAgICBlbmQ6IG5ldyBGb3JtQ29udHJvbDxNYXliZTxEYXRlPj4obnVsbClcbiAgfSk7XG5cbiAgZ2V0IGZpeGVkRGF0ZVJhbmdlRmllbGQoKTogRGJ4Rml4ZWREYXRlUmFuZ2VGaWVsZFByb3BzIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcztcbiAgfVxuXG4gIGdldCBzZWxlY3Rpb25Nb2RlKCkge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzLnNlbGVjdGlvbk1vZGU7XG4gIH1cblxuICBnZXQgdmFsdWVNb2RlKCk6IERieERhdGVUaW1lVmFsdWVNb2RlIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcy52YWx1ZU1vZGUgPz8gRGJ4RGF0ZVRpbWVWYWx1ZU1vZGUuREFURTtcbiAgfVxuXG4gIGdldCBkZXNjcmlwdGlvbigpOiBNYXliZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcy5kZXNjcmlwdGlvbjtcbiAgfVxuXG4gIGdldCB0aW1lem9uZSgpIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcy50aW1lem9uZTtcbiAgfVxuXG4gIGdldCBzaG93VGltZXpvbmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcHMuc2hvd1RpbWV6b25lID8/IHRydWU7XG4gIH1cblxuICBnZXQgcHJlc2V0cygpIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcy5wcmVzZXRzO1xuICB9XG5cbiAgZ2V0IHNob3dSYW5nZUlucHV0KCkge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzLnNob3dSYW5nZUlucHV0ID8/IHRydWU7XG4gIH1cblxuICByZWFkb25seSBtaW5NYXhSYW5nZSQgPSB0aGlzLmxpbWl0RGF0ZVRpbWVJbnN0YW5jZSQucGlwZShcbiAgICBjb21iaW5lTGF0ZXN0V2l0aCh0aW1lcihNU19JTl9NSU5VVEUpKSwgLy8gcmVmcmVzaCBldmVyeSBtaW51dGVcbiAgICBtYXAoKFt4XSkgPT4geC5kYXRlUmFuZ2UoKSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoaXNTYW1lRGF0ZURheVJhbmdlKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IG1pbiQgPSB0aGlzLm1pbk1heFJhbmdlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geD8uc3RhcnQgPz8gbnVsbCksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IG1heCQgPSB0aGlzLm1pbk1heFJhbmdlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geD8uZW5kID8/IG51bGwpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBwaWNrZXJGaWx0ZXIkOiBPYnNlcnZhYmxlPERlY2lzaW9uRnVuY3Rpb248RGF0ZSB8IG51bGw+PiA9IHRoaXMuY29uZmlnJC5waXBlKFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgbWFwKCh4KSA9PiB7XG4gICAgICBpZiAoeCkge1xuICAgICAgICBjb25zdCBmaWx0ZXIgPSBkYXRlVGltZU1pbnV0ZURlY2lzaW9uRnVuY3Rpb24oeCk7XG4gICAgICAgIHJldHVybiAoeDogRGF0ZSB8IG51bGwpID0+ICh4ICE9IG51bGwgPyBmaWx0ZXIoeCkgOiB0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAoKSA9PiB0cnVlO1xuICAgICAgfVxuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZGVmYXVsdFBpY2tlckZpbHRlcjogRGVjaXNpb25GdW5jdGlvbjxEYXRlIHwgbnVsbD4gPSAoKSA9PiB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZGJ4RGF0ZVRpbWVGaWVsZENvbmZpZ1NlcnZpY2U6IERieERhdGVUaW1lRmllbGRNZW51UHJlc2V0c1NlcnZpY2UpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fZm9ybUNvbnRyb2xPYnMubmV4dCh0aGlzLmZvcm1Db250cm9sKTtcblxuICAgIGNvbnN0IGRhdGVSYW5nZVNlbGVjdGlvbiA9IHRoaXMuZGF0ZVJhbmdlU2VsZWN0aW9uJC5waXBlKHNoYXJlUmVwbGF5KDEpKTtcblxuICAgIGNvbnN0IHNldElucHV0Rm9ybVZhbHVlID0gKHZhbHVlOiBNYXliZTxEYXRlUmFuZ2U+KSA9PiB7XG4gICAgICBpZiAoIWlzU2FtZURhdGVEYXlSYW5nZSh2YWx1ZSwgdGhpcy5pbnB1dFJhbmdlRm9ybS52YWx1ZSBhcyBQYXJ0aWFsPERhdGVSYW5nZT4pKSB7XG4gICAgICAgIHRoaXMuaW5wdXRSYW5nZUZvcm0uc2V0VmFsdWUoe1xuICAgICAgICAgIHN0YXJ0OiB2YWx1ZT8uc3RhcnQgPz8gbnVsbCxcbiAgICAgICAgICBlbmQ6IHZhbHVlPy5lbmQgPz8gbnVsbFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5fc3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMudmFsdWVJblN5c3RlbVRpbWV6b25lJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGNvbWJpbmVMYXRlc3RXaXRoKHRoaXMudGltZXpvbmVJbnN0YW5jZSQucGlwZShtYXAoKHRpbWV6b25lSW5zdGFuY2UpID0+IGRieEZpeGVkRGF0ZVJhbmdlT3V0cHV0VmFsdWVGYWN0b3J5KHRoaXMudmFsdWVNb2RlLCB0aW1lem9uZUluc3RhbmNlKSkpKSxcbiAgICAgICAgdGhyb3R0bGVUaW1lKFRJTUVfT1VUUFVUX1RIUk9UVExFX1RJTUUsIHVuZGVmaW5lZCwgeyBsZWFkaW5nOiBmYWxzZSwgdHJhaWxpbmc6IHRydWUgfSksXG4gICAgICAgIHN3aXRjaE1hcCgoW2N1cnJlbnRWYWx1ZSwgdmFsdWVGYWN0b3J5XSkgPT4ge1xuICAgICAgICAgIHJldHVybiBkYXRlUmFuZ2VTZWxlY3Rpb24ucGlwZShcbiAgICAgICAgICAgIHNraXBGaXJzdE1heWJlKCksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZDxNYXliZTxEYXRlUmFuZ2U+Pihpc1NhbWVEYXRlRGF5UmFuZ2UpLFxuICAgICAgICAgICAgbWFwKCh4KSA9PiBbeCwgY3VycmVudFZhbHVlLCB2YWx1ZUZhY3RvcnldIGFzIFt0eXBlb2YgeCwgdHlwZW9mIGN1cnJlbnRWYWx1ZSwgdHlwZW9mIHZhbHVlRmFjdG9yeV0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKFtyYXdWYWx1ZSwgY3VycmVudFZhbHVlLCB2YWx1ZUZhY3RvcnldKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gcmF3VmFsdWUgPyB2YWx1ZUZhY3RvcnkocmF3VmFsdWUpIDogbnVsbDtcbiAgICAgICAgY29uc3QgaXNTYW1lUmFuZ2UgPSBkYnhEYXRlUmFuZ2VJc1NhbWVEYXRlUmFuZ2VGaWVsZFZhbHVlKHZhbHVlLCBjdXJyZW50VmFsdWUpO1xuXG4gICAgICAgIGlmICghaXNTYW1lUmFuZ2UpIHtcbiAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgIH0gZWxzZSBpZiAocmF3VmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgaW5wdXQgdGV4dCBhZ2FpblxuICAgICAgICAgIHNldElucHV0Rm9ybVZhbHVlKHJhd1ZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlKSB7XG4gICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlLm5leHQoYXNPYnNlcnZhYmxlRnJvbUdldHRlcih0aGlzLnNlbGVjdGlvbk1vZGUpKTtcbiAgICB9XG5cbiAgICB0aGlzLl9jdXJyZW50U2VsZWN0aW9uTW9kZVN1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLnNlbGVjdGlvbk1vZGUkLnN1YnNjcmliZSgoeCkgPT4gKHRoaXMuX2N1cnJlbnRTZWxlY3Rpb25Nb2RlID0geCkpO1xuICAgIHRoaXMuX2RhdGVSYW5nZUlucHV0U3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMuZGF0ZVJhbmdlSW5wdXQkLnN1YnNjcmliZSgoeCkgPT4gKHRoaXMuX2N1cnJlbnREYXRlUmFuZ2VJbnB1dCA9IHgpKTtcblxuICAgIHRoaXMuX2lucHV0UmFuZ2VGb3JtU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMudmFsdWVJblN5c3RlbVRpbWV6b25lJC5zdWJzY3JpYmUoKHg6IE1heWJlPERhdGVSYW5nZT4pID0+IHtcbiAgICAgIHNldElucHV0Rm9ybVZhbHVlKHgpO1xuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuc2hvd1JhbmdlSW5wdXQpIHtcbiAgICAgIHRoaXMuX2lucHV0UmFuZ2VGb3JtVmFsdWVTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy52YWx1ZUluU3lzdGVtVGltZXpvbmUkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRocm90dGxlVGltZSgxMDApLCAvLyB0aHJvdHRsZSB0byBwcmV2ZW50IHRoZSB2YWx1ZSBmcm9tIGNoYW5naW5nIHRvbyBmYXN0XG4gICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlucHV0UmFuZ2VGb3JtLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoNTAwKSxcbiAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydFN0cmluZyA9IHRoaXMuc3RhcnREYXRlSW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ/LnZhbHVlO1xuICAgICAgICAgICAgICAgIGxldCB2YWxpZCA9IGlzTW9udGhEYXlTbGFzaERhdGUoc3RhcnRTdHJpbmcpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHZhbGlkICYmIHRoaXMuX2N1cnJlbnRTZWxlY3Rpb25Nb2RlICE9PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZW5kU3RyaW5nID0gdGhpcy5lbmREYXRlSW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ/LnZhbHVlO1xuICAgICAgICAgICAgICAgICAgdmFsaWQgPSBpc01vbnRoRGF5U2xhc2hEYXRlKGVuZFN0cmluZyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkOyAvLyBtdXN0IGJlIGEgdmFsaWQgdGV4dCBpbnB1dFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgbWFwKCh4KSA9PiB4IGFzIE1heWJlPFBhcnRpYWw8RGF0ZVJhbmdlPj4pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKGlzU2FtZURhdGVSYW5nZSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCh4OiBNYXliZTxQYXJ0aWFsPERhdGVSYW5nZT4+KSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRTZWxlY3Rpb25Nb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgdGhpcy5zZXREYXRlUmFuZ2UoeD8uc3RhcnQgPyB7IHN0YXJ0OiB4LnN0YXJ0IH0gOiBudWxsLCAnaW5wdXQnKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IHJhbmdlVG9TZXQ6IE1heWJlPFBhcnRpYWw8RGF0ZVJhbmdlPj4gPSB4O1xuXG4gICAgICAgICAgICBpZiAodGhpcy5fY3VycmVudFNlbGVjdGlvbk1vZGUgPT09ICdhcmJpdHJhcnlfcXVpY2snICYmIHRoaXMuX2xhdGVzdEJvdW5kYXJ5ICYmIHg/LnN0YXJ0ICYmIHg/LmVuZCkge1xuICAgICAgICAgICAgICBpZiAoIWlzRGF0ZUluRGF0ZVJhbmdlKHguc3RhcnQsIHRoaXMuX2xhdGVzdEJvdW5kYXJ5KSkge1xuICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBlbmQgZGF0ZSBpdCBvdXRzaWRlIG9mIHRoZSBjdXJyZW50IHJhbmdlIChpLmUuIGEgcmFuZ2Ugd2FzIHR5cGVkIGluIG9ubHkgdG8gdGhlIHN0YXJ0IGRhdGUpIHRoZW4gc2V0IHRoZSBlbmQgdG8gdGhlIGJvdW5kYXJ5IGVuZFxuICAgICAgICAgICAgICAgIGNvbnN0IGJvdW5kYXJ5ID0gZGF0ZVJhbmdlKHsgLi4udGhpcy5fY3VycmVudERhdGVSYW5nZUlucHV0LCBkYXRlOiB4LnN0YXJ0IH0gYXMgRGF0ZVJhbmdlSW5wdXQpO1xuICAgICAgICAgICAgICAgIHJhbmdlVG9TZXQgPSB7IHN0YXJ0OiB4LnN0YXJ0LCBlbmQ6IGJvdW5kYXJ5LmVuZCB9O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc2V0RGF0ZVJhbmdlKHJhbmdlVG9TZXQsICdpbnB1dCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5fbGF0ZXN0Qm91bmRhcnlTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5sYXRlc3RCb3VuZGFyeSQuc3Vic2NyaWJlKCh4KSA9PiAodGhpcy5fbGF0ZXN0Qm91bmRhcnkgPSB4KSk7XG4gICAgdGhpcy5fZGF0ZVJhbmdlSW5wdXQubmV4dChhc09ic2VydmFibGVGcm9tR2V0dGVyKHRoaXMuZml4ZWREYXRlUmFuZ2VGaWVsZC5kYXRlUmFuZ2VJbnB1dCkpO1xuXG4gICAgdGhpcy5fZGlzYWJsZUVuZFN1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLmVuZERpc2FibGVkJC5zdWJzY3JpYmUoKGRpc2FibGVkKSA9PiB7XG4gICAgICBjb25zdCBlbmQgPSB0aGlzLmlucHV0UmFuZ2VGb3JtLmdldCgnZW5kJyk7XG5cbiAgICAgIGlmIChlbmQpIHtcbiAgICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgICAgZW5kLmRpc2FibGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbmQuZW5hYmxlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IGlucHV0UGlja2VyQ29uZmlnID0gdGhpcy5maXhlZERhdGVSYW5nZUZpZWxkLnBpY2tlckNvbmZpZztcbiAgICB0aGlzLl9jb25maWcubmV4dChpbnB1dFBpY2tlckNvbmZpZyA/IGFzT2JzZXJ2YWJsZUZyb21HZXR0ZXIoaW5wdXRQaWNrZXJDb25maWcpIDogdW5kZWZpbmVkKTtcblxuICAgIC8vIFNldCBkZWZhdWx0IHRpbWV6b25lIGlmIHByb3ZpZGVkLlxuICAgIGlmICh0aGlzLnRpbWV6b25lICYmICF0aGlzLmZpeGVkRGF0ZVJhbmdlRmllbGQuZnVsbERheUluVVRDKSB7XG4gICAgICB0aGlzLl90aW1lem9uZS5uZXh0KGFzT2JzZXJ2YWJsZUZyb21HZXR0ZXIodGhpcy50aW1lem9uZSkpO1xuICAgIH1cblxuICAgIC8vIFdhdGNoIGZvciBkaXNhYmxlZCBjaGFuZ2VzIHNvIHdlIGNhbiBwcm9wb2dhdGUgdGhlbSBwcm9wZXJseS5cbiAgICB0aGlzLmZvcm1Db250cm9sLnJlZ2lzdGVyT25EaXNhYmxlZENoYW5nZSgoZGlzYWJsZWQpID0+IHtcbiAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICB0aGlzLmlucHV0UmFuZ2VGb3JtLmRpc2FibGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaW5wdXRSYW5nZUZvcm0uZW5hYmxlKCk7XG5cbiAgICAgICAgdGhpcy5lbmREaXNhYmxlZCQucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKGRpc2FibGVkKSA9PiB7XG4gICAgICAgICAgY29uc3QgZW5kID0gdGhpcy5pbnB1dFJhbmdlRm9ybS5nZXQoJ2VuZCcpO1xuXG4gICAgICAgICAgaWYgKGVuZCkge1xuICAgICAgICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgICAgICAgIGVuZC5kaXNhYmxlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBlbmQuZW5hYmxlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnByZXNldHMgIT0gbnVsbCkge1xuICAgICAgdGhpcy5fcHJlc2V0cy5uZXh0KGFzT2JzZXJ2YWJsZUZyb21HZXR0ZXIodGhpcy5wcmVzZXRzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3ByZXNldHMubmV4dCh0aGlzLmRieERhdGVUaW1lRmllbGRDb25maWdTZXJ2aWNlLmNvbmZpZ3VyYXRpb25zJCk7XG4gICAgfVxuXG4gICAgdGhpcy5fYWN0aXZlRGF0ZVN1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLmNhbGVuZGFyRm9jdXNEYXRlJC5zdWJzY3JpYmUoKHgpID0+IHtcbiAgICAgIHRoaXMuY2FsZW5kYXIuYWN0aXZlRGF0ZSA9IHg7XG4gICAgfSk7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIHRoaXMuX3N1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5faW5wdXRSYW5nZUZvcm1TdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX2lucHV0UmFuZ2VGb3JtVmFsdWVTdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX2RhdGVSYW5nZUlucHV0U3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLl9jdXJyZW50U2VsZWN0aW9uTW9kZVN1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fbGF0ZXN0Qm91bmRhcnlTdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX2Rpc2FibGVFbmRTdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX2FjdGl2ZURhdGVTdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX2NvbmZpZy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3NlbGVjdGlvbk1vZGUuY29tcGxldGUoKTtcbiAgICB0aGlzLl9kYXRlUmFuZ2VJbnB1dC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3RpbWV6b25lLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fcHJlc2V0cy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3NlbGVjdGlvbkV2ZW50LmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fZm9ybUNvbnRyb2xPYnMuY29tcGxldGUoKTtcbiAgfVxuXG4gIHNlbGVjdGVkQ2hhbmdlKGRhdGU6IE1heWJlPERhdGU+KTogdm9pZCB7XG4gICAgdGhpcy5zZXREYXRlUmFuZ2UoZGF0ZSA/IHsgc3RhcnQ6IGRhdGUgfSA6IG51bGwsICdjYWxlbmRhcicpO1xuICB9XG5cbiAgc2V0RGF0ZVJhbmdlKHJhbmdlOiBNYXliZTxQYXJ0aWFsPERhdGVSYW5nZT4+LCB0eXBlOiBTZWxlY3RlZERhdGVFdmVudFR5cGUpIHtcbiAgICB0aGlzLl9zZWxlY3Rpb25FdmVudC5uZXh0KHsgdHlwZSwgcmFuZ2UgfSk7XG4gIH1cblxuICBfY3JlYXRlRGF0ZVJhbmdlKGRhdGU6IE1heWJlPERhdGU+KTogTWF5YmU8RGF0ZVJhbmdlPiB7XG4gICAgcmV0dXJuIGRhdGUgPyBkYXRlUmFuZ2UoeyAuLi50aGlzLl9jdXJyZW50RGF0ZVJhbmdlSW5wdXQsIGRhdGUgfSBhcyBEYXRlUmFuZ2VJbnB1dCkgOiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERieEZpeGVkRGF0ZVJhbmdlRmllbGRTZWxlY3Rpb25TdHJhdGVneTxEPiBpbXBsZW1lbnRzIE1hdERhdGVSYW5nZVNlbGVjdGlvblN0cmF0ZWd5PEQ+IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZGF0ZUFkYXB0ZXI6IERhdGVBZGFwdGVyPEQ+LCByZWFkb25seSBkYnhGaXhlZERhdGVSYW5nZUZpZWxkQ29tcG9uZW50OiBEYnhGaXhlZERhdGVSYW5nZUZpZWxkQ29tcG9uZW50KSB7fVxuXG4gIHNlbGVjdGlvbkZpbmlzaGVkKGRhdGU6IEQgfCBudWxsLCBjdXJyZW50UmFuZ2U6IERhdGVQaWNrZXJEYXRlUmFuZ2U8RD4sIGV2ZW50OiBFdmVudCk6IERhdGVQaWNrZXJEYXRlUmFuZ2U8RD4ge1xuICAgIC8vIHVudXNlZFxuICAgIHJldHVybiBjdXJyZW50UmFuZ2U7XG4gIH1cblxuICBjcmVhdGVQcmV2aWV3KGFjdGl2ZURhdGU6IEQgfCBudWxsLCBjdXJyZW50UmFuZ2U6IERhdGVQaWNrZXJEYXRlUmFuZ2U8RD4sIGV2ZW50OiBFdmVudCk6IERhdGVQaWNrZXJEYXRlUmFuZ2U8RD4ge1xuICAgIGNvbnN0IHsgY3VycmVudFNlbGVjdGlvbk1vZGUgfSA9IHRoaXMuZGJ4Rml4ZWREYXRlUmFuZ2VGaWVsZENvbXBvbmVudDtcbiAgICBpZiAoYWN0aXZlRGF0ZSAhPSBudWxsICYmIGN1cnJlbnRTZWxlY3Rpb25Nb2RlICE9PSAnc2luZ2xlJykge1xuICAgICAgY29uc3QgbGF0ZXN0Qm91bmRhcnkgPSB0aGlzLmRieEZpeGVkRGF0ZVJhbmdlRmllbGRDb21wb25lbnQubGF0ZXN0Qm91bmRhcnk7XG4gICAgICBjb25zdCBkYXRlID0gdGhpcy5kYXRlRnJvbUFkYXB0ZXJEYXRlKGFjdGl2ZURhdGUpO1xuXG4gICAgICBpZiAobGF0ZXN0Qm91bmRhcnkgJiYgKGN1cnJlbnRTZWxlY3Rpb25Nb2RlID09PSAnbm9ybWFsJyB8fCBpc0RhdGVJbkRhdGVSYW5nZShkYXRlLCBsYXRlc3RCb3VuZGFyeSkpKSB7XG4gICAgICAgIGNvbnN0IGV4YW1wbGVEYXRlUmFuZ2UgPSB0aGlzLl9jcmVhdGVEYXRlUmFuZ2UobGF0ZXN0Qm91bmRhcnkpO1xuICAgICAgICByZXR1cm4gZXhhbXBsZURhdGVSYW5nZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRGF0ZVJhbmdlV2l0aERhdGUoYWN0aXZlRGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVEYXRlUmFuZ2VXaXRoRGF0ZShpbnB1dDogRCB8IG51bGwpOiBEYXRlUGlja2VyRGF0ZVJhbmdlPEQ+IHtcbiAgICBsZXQgZGF0ZVJhbmdlOiBNYXliZTxEYXRlUmFuZ2U+O1xuXG4gICAgaWYgKGlucHV0KSB7XG4gICAgICBjb25zdCBkYXRlID0gdGhpcy5kYXRlRnJvbUFkYXB0ZXJEYXRlKGlucHV0KTtcbiAgICAgIGRhdGVSYW5nZSA9IHRoaXMuZGJ4Rml4ZWREYXRlUmFuZ2VGaWVsZENvbXBvbmVudC5fY3JlYXRlRGF0ZVJhbmdlKGRhdGUpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9jcmVhdGVEYXRlUmFuZ2UoZGF0ZVJhbmdlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZURhdGVSYW5nZShpbnB1dDogTWF5YmU8RGF0ZVJhbmdlPik6IERhdGVQaWNrZXJEYXRlUmFuZ2U8RD4ge1xuICAgIGlmIChpbnB1dCkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlUGlja2VyRGF0ZVJhbmdlPEQ+KHRoaXMuYWRhcHRlckRhdGVGcm9tRGF0ZShpbnB1dC5zdGFydCksIHRoaXMuYWRhcHRlckRhdGVGcm9tRGF0ZShpbnB1dC5lbmQpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlUGlja2VyRGF0ZVJhbmdlPEQ+KG51bGwsIG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIGRhdGVGcm9tQWRhcHRlckRhdGUoaW5wdXQ6IEQpIHtcbiAgICBjb25zdCBkYXk6IERheU9mTW9udGggPSB0aGlzLl9kYXRlQWRhcHRlci5nZXREYXRlKGlucHV0KTtcbiAgICBjb25zdCBtb250aEluZGV4OiBEYXRlTW9udGggPSB0aGlzLl9kYXRlQWRhcHRlci5nZXRNb250aChpbnB1dCk7XG4gICAgY29uc3QgeWVhcjogWWVhck51bWJlciA9IHRoaXMuX2RhdGVBZGFwdGVyLmdldFllYXIoaW5wdXQpO1xuICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCBtb250aEluZGV4LCBkYXkpO1xuICB9XG5cbiAgYWRhcHRlckRhdGVGcm9tRGF0ZShkYXRlOiBEYXRlKTogRCB7XG4gICAgY29uc3QgZGF5OiBEYXlPZk1vbnRoID0gZGF0ZS5nZXREYXRlKCk7XG4gICAgY29uc3QgbW9udGhJbmRleDogRGF0ZU1vbnRoID0gZGF0ZS5nZXRNb250aCgpO1xuICAgIGNvbnN0IHllYXI6IFllYXJOdW1iZXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG5cbiAgICByZXR1cm4gdGhpcy5fZGF0ZUFkYXB0ZXIuY3JlYXRlRGF0ZSh5ZWFyLCBtb250aEluZGV4LCBkYXkpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZGJ4LWZpeGVkZGF0ZXJhbmdlLWZpZWxkXCI+XG4gIDxtYXQtY2FsZW5kYXIgI2NhbGVuZGFyVmlldyBbc2VsZWN0ZWRdPVwiY2FsZW5kYXJTZWxlY3Rpb24kIHwgYXN5bmNcIiBbZGF0ZUZpbHRlcl09XCIocGlja2VyRmlsdGVyJCB8IGFzeW5jKSB8fCBkZWZhdWx0UGlja2VyRmlsdGVyXCIgW21pbkRhdGVdPVwibWluJCB8IGFzeW5jXCIgW21heERhdGVdPVwibWF4JCB8IGFzeW5jXCIgKHNlbGVjdGVkQ2hhbmdlKT1cInNlbGVjdGVkQ2hhbmdlKCRldmVudClcIj48L21hdC1jYWxlbmRhcj5cbiAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZGJ4LWZpeGVkZGF0ZXJhbmdlLWZpZWxkLWlucHV0XCIgYXBwZWFyYW5jZT1cImZpbGxcIj5cbiAgICA8bWF0LWRhdGUtcmFuZ2UtaW5wdXQgKm5nSWY9XCJzaG93UmFuZ2VJbnB1dFwiIFtmb3JtR3JvdXBdPVwiaW5wdXRSYW5nZUZvcm1cIj5cbiAgICAgIDxpbnB1dCAjc3RhcnREYXRlSW5wdXQgbWF0U3RhcnREYXRlIGZvcm1Db250cm9sTmFtZT1cInN0YXJ0XCIgcGxhY2Vob2xkZXI9XCJTdGFydCBkYXRlXCIgLz5cbiAgICAgIDxpbnB1dCAjZW5kRGF0ZUlucHV0IFtuZ0NsYXNzXT1cIihlbmREaXNhYmxlZCQgfCBhc3luYykgPyAnZGJ4LWZpeGVkZGF0ZXJhbmdlLWZpZWxkLWlucHV0LWVuZCcgOiAnJ1wiIFthdHRyLnRhYmluZGV4XT1cIihlbmREaXNhYmxlZCQgfCBhc3luYykgPyAtMSA6IDBcIiBtYXRFbmREYXRlIGZvcm1Db250cm9sTmFtZT1cImVuZFwiIHBsYWNlaG9sZGVyPVwiRW5kIGRhdGVcIiAvPlxuICAgIDwvbWF0LWRhdGUtcmFuZ2UtaW5wdXQ+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKVwiPkRhdGUgcmFuZ2UgaXMgcmVxdWlyZWQ8L21hdC1lcnJvcj5cbjwvZGl2PlxuIl19
@@ -1127,7 +1127,7 @@ class DbxScheduleSelectionCalendarSelectionToggleButtonComponent {
1127
1127
  case 'none':
1128
1128
  buttonDisplay = {
1129
1129
  icon: 'clear',
1130
- text: 'Clear Selection'
1130
+ text: 'Clear All'
1131
1131
  };
1132
1132
  break;
1133
1133
  }