@piserve-tech/form-submission 1.3.78 → 1.3.80

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.
Files changed (78) hide show
  1. package/README.md +24 -24
  2. package/esm2022/environment/environment.mjs +1 -1
  3. package/esm2022/form-fields/check-box-fields/check-box-fields.component.mjs +42 -31
  4. package/esm2022/form-fields/date-time-fields/date-time-fields.component.mjs +3 -3
  5. package/esm2022/form-fields/drop-down-fields/drop-down-fields.component.mjs +9 -9
  6. package/esm2022/form-fields/file-picker-fields/file-picker-fields.component.mjs +3 -3
  7. package/esm2022/form-fields/form-fields.module.mjs +1 -1
  8. package/esm2022/form-fields/location-fields/location-fields.component.mjs +3 -3
  9. package/esm2022/form-fields/mail-fields/mail-fields.component.mjs +3 -3
  10. package/esm2022/form-fields/mobile-fields/mobile-fields.component.mjs +3 -3
  11. package/esm2022/form-fields/number-fields/number-fields.component.mjs +3 -3
  12. package/esm2022/form-fields/password-fields/password-fields.component.mjs +3 -3
  13. package/esm2022/form-fields/radio-button-fields/radio-button-fields.component.mjs +18 -9
  14. package/esm2022/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.mjs +3 -3
  15. package/esm2022/form-fields/section-fields/section-fields.component.mjs +3 -3
  16. package/esm2022/form-fields/selection-matrix-fields/selection-matrix-fields.component.mjs +3 -3
  17. package/esm2022/form-fields/signature-fields/signature-fields.component.mjs +3 -3
  18. package/esm2022/form-fields/slider-fields/slider-fields.component.mjs +3 -3
  19. package/esm2022/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.mjs +3 -3
  20. package/esm2022/form-fields/text-area-fields/text-area-fields.component.mjs +3 -3
  21. package/esm2022/form-fields/text-fields/text-fields.component.mjs +3 -3
  22. package/esm2022/form-fields/toggle-switch-fields/toggle-switch-fields.component.mjs +3 -3
  23. package/esm2022/form-fields/url-fields/url-fields.component.mjs +3 -3
  24. package/esm2022/form-submission/form-submission.module.mjs +1 -1
  25. package/esm2022/form-submission/header/header.component.mjs +3 -3
  26. package/esm2022/form-submission/navigation-tabs/navigation-tabs.component.mjs +3 -3
  27. package/esm2022/form-submission/next-prev-navigation/next-prev-navigation.component.mjs +3 -3
  28. package/esm2022/form-submission/submission-container/submission-container.component.mjs +3 -3
  29. package/esm2022/form-submission/submit-form/submit-form.component.mjs +6 -6
  30. package/esm2022/lib/form-submission.component.mjs +3 -3
  31. package/esm2022/lib/form-submission.module.mjs +1 -1
  32. package/esm2022/lib/form-submission.service.mjs +1 -1
  33. package/esm2022/models/answer.model.mjs +1 -1
  34. package/esm2022/models/appearance.model.mjs +1 -1
  35. package/esm2022/models/attachment.model.mjs +1 -1
  36. package/esm2022/models/elementOptionAPI.model.mjs +1 -1
  37. package/esm2022/models/elementOptionAPIData.model.mjs +1 -1
  38. package/esm2022/models/elementOptionDB.model.mjs +1 -1
  39. package/esm2022/models/elementOptionDBCriteria.model.mjs +1 -1
  40. package/esm2022/models/enum/condition.enum.mjs +1 -1
  41. package/esm2022/models/enum/elementType .enum.mjs +1 -1
  42. package/esm2022/models/enum/entityType.enum.mjs +1 -1
  43. package/esm2022/models/formConfiguration.model.mjs +1 -1
  44. package/esm2022/models/formElement.model.mjs +1 -1
  45. package/esm2022/models/formElementType.model.mjs +1 -1
  46. package/esm2022/models/grid.model.mjs +1 -1
  47. package/esm2022/models/logic.model.mjs +1 -1
  48. package/esm2022/models/option.model.mjs +1 -1
  49. package/esm2022/models/page.model.mjs +1 -1
  50. package/esm2022/models/publicForm.model.mjs +1 -1
  51. package/esm2022/models/question.model.mjs +1 -1
  52. package/esm2022/models/questionAnswer.model.mjs +1 -1
  53. package/esm2022/models/questionGroup.model.mjs +1 -1
  54. package/esm2022/models/row.model.mjs +1 -1
  55. package/esm2022/models/section.model.mjs +1 -1
  56. package/esm2022/models/subForm.model.mjs +1 -1
  57. package/esm2022/models/submission.model.mjs +1 -1
  58. package/esm2022/models/terms&condition.model.mjs +1 -1
  59. package/esm2022/models/validation.model.mjs +1 -1
  60. package/esm2022/public-api.mjs +1 -1
  61. package/esm2022/question/form-elements/form-elements.component.mjs +3 -3
  62. package/esm2022/question/multiple-subform/multiple-subform.component.mjs +17 -11
  63. package/esm2022/question/question/question.component.mjs +3 -3
  64. package/esm2022/question/question-group/question-group.component.mjs +3 -3
  65. package/esm2022/question/recursive-logic/recursive-logic.component.mjs +3 -3
  66. package/esm2022/question/sub-form/sub-form.component.mjs +3 -3
  67. package/esm2022/services/countryService.mjs +1 -1
  68. package/esm2022/services/data.service.mjs +1 -1
  69. package/esm2022/services/form.service.mjs +1 -1
  70. package/esm2022/services/mapper.service.mjs +1 -1
  71. package/esm2022/services/recaptcha.service.mjs +13 -13
  72. package/esm2022/shared/shared.module.mjs +1 -1
  73. package/esm2022/sub-form/submission-modal/submission-modal.component.mjs +3 -3
  74. package/fesm2022/piserve-tech-form-submission.mjs +158 -132
  75. package/fesm2022/piserve-tech-form-submission.mjs.map +1 -1
  76. package/form-fields/check-box-fields/check-box-fields.component.d.ts +1 -1
  77. package/package.json +1 -1
  78. package/question/multiple-subform/multiple-subform.component.d.ts +4 -1
@@ -404,11 +404,11 @@ export class DateTimeFieldsComponent {
404
404
  return date;
405
405
  }
406
406
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateTimeFieldsComponent, deps: [{ token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Component }); }
407
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DateTimeFieldsComponent, selector: "lib-date-time-fields", inputs: { question: "question" }, providers: [DatePipe], viewQueries: [{ propertyName: "datepicker", first: true, predicate: ["datepickerYMD"], descendants: true }, { propertyName: "dateRangePicker", first: true, predicate: ["daterangepicker"], descendants: true }, { propertyName: "dateAndTimePicker", first: true, predicate: ["dateAndTimePicker"], descendants: true }], ngImport: i0, template: "<div class=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</label\n >&nbsp;\n <span class=\"text-danger\" *ngIf=\"required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <ng-container *ngIf=\"dateType === 'DATE_ONLY'\">\n <!-- Date only picker -->\n <div class=\"input-container\">\n <input\n class=\"form-control height\"\n #datepickerYMD=\"bsDatepicker\"\n bsDatepicker\n [minDate]=\"minDate ? minDate : undefined\"\n [maxDate]=\"maxDate ? maxDate : undefined\"\n [bsConfig]=\"{ dateInputFormat: format, containerClass: 'theme-custom' }\"\n [(ngModel)]=\"selectedDate\"\n (blur)=\"validateField()\"\n (ngModelChange)=\"validateField()\"\n [class.invalid]=\"validationFailed\"\n placeholder=\"Select date\"\n />\n <i\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n (click)=\"openDatePicker()\"\n ></i>\n </div>\n <div *ngIf=\"validationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"dateType === 'TIME_ONLY'\">\n <!-- Time picker -->\n\n\n<div class=\"input-container\">\n <input\n class=\"form-control height appearanceInput mt-3\"\n aria-label=\"Select time\"\n placeholder=\"Select time\"\n readonly\n [format]=\"timeFormat==='24'?24:12\"\n [ngxTimepicker]=\"fullTime3\"\n [(ngModel)]=\"selectedTime\"\n [max]=\"maxTime\"\n [min]=\"minTime\"\n (ngModelChange)=\"validateField()\"\n [class.invalid]=\"validationFailed\"\n />\n \n <i\n id=\"startDateIcon\"\n class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\n (click)=\"fullTime3.open()\"\n style=\"cursor: pointer;\"\n></i>\n <ngx-material-timepicker #fullTime3></ngx-material-timepicker>\n</div>\n <div *ngIf=\"validationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"dateType === 'DATE_AND_TIME'\">\n <!-- Date and time picker -->\n <div class=\"input-container\">\n <input\n #dateAndTimePicker=\"bsDatepicker\"\n type=\"text\"\n class=\"form-control height\"\n [minDate]=\"minDate ? minDate : undefined\"\n [maxDate]=\"maxDate ? maxDate : undefined\"\n [bsConfig]=\"{\n dateInputFormat: format, containerClass: 'theme-custom' \n }\"\n placeholder=\"Select date\"\n bsDatepicker\n [class.invalid]=\"validationFailed\"\n [(ngModel)]=\"selectedDateAndTime\"\n (blur)=\"validateField()\"\n (ngModelChange)=\"validateField()\"\n />\n <i\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n (click)=\"openDateAndTimePicker()\"\n ></i>\n </div>\n <div class=\"input-container\" *ngIf=\"selectedDateAndTime && selectedDateAndTime != null\">\n <input\n \n class=\"form-control height appearanceInput mt-3\"\n aria-label=\"Select time\"\n placeholder=\"Select time\"\n readonly\n [format]=\"timeFormat==='24'?24:12\"\n [ngxTimepicker]=\"fullTime4\"\n [(ngModel)]=\"selectedTime\"\n [max]=\"maxTime\"\n [min]=\"minTime\"\n (ngModelChange)=\"validateField()\"\n (focus)=\"closeDatepicker()\"\n [class.invalid]=\"timeValidationFailed\"\n />\n \n <i\n id=\"startDateIcon\"\n class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\n (click)=\"fullTime4.open()\"\n style=\"cursor: pointer;\"\n ></i>\n <ngx-material-timepicker #fullTime4></ngx-material-timepicker>\n </div>\n \n <div *ngIf=\"validationFailed || timeValidationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"dateType === 'DATE_RANGE'\">\n <!-- Date range picker -->\n <div class=\"input-container\">\n <input\n type=\"text\"\n class=\"form-control height\"\n #daterangepicker=\"bsDaterangepicker\"\n bsDaterangepicker\n placeholder=\"Select date\"\n [minDate]=\"minDate ? minDate : undefined\"\n [maxDate]=\"maxDate ? maxDate : undefined\"\n [bsConfig]=\"{\n rangeInputFormat: format,\n dateInputFormat: format, containerClass: 'theme-custom' \n }\"\n [(ngModel)]=\"selectedDateRange\"\n (blur)=\"validateField()\"\n (ngModelChange)=\"validateField()\"\n [class.invalid]=\"validationFailed\"\n />\n <i\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n (click)=\"openDateRangePicker()\"\n ></i>\n </div>\n <div *ngIf=\"validationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n </ng-container>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}.validationSvg{width:24px;height:24px;fill:none}:root{--library-font-family: Roboto, \"Helvetica Neue\", sans-serif;--library-font-size: 14px}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}.input-container{position:relative}.input-container .form-control{padding-right:30px}.input-container .calendar-icon,.clock-icon{position:absolute;top:50%;right:10px;transform:translateY(-50%);cursor:pointer}.appearanceInput{background-color:#fff}::ng-deep ngx-material-timepicker-content{--body-background-color: #fff;--button-color: #08bff6 !important;--dial-active-color: #fff;--dial-inactive-color: rgba(255, 255, 255, .5);--dial-background-color: #08bff6 !important;--dial-editable-active-color: #08bff6!important;--dial-editable-background-color: #fff;--clock-face-time-active-color: #fff;--clock-face-time-inactive-color: #6c6c6c;--clock-face-inner-time-inactive-color: #929292;--clock-face-time-disabled-color: #c5c5c5;--clock-face-background-color: #f0f0f0;--clock-hand-color: #08bff6 !important;position:relative;z-index:99999999}::ng-deep ngx-material-timepicker-container{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000052;z-index:99998}.theme-custom .bs-datepicker-head,.timepicker__header{background-color:#08bff6!important}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i3.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "directive", type: i3.BsDaterangepickerDirective, selector: "[bsDaterangepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isOpen", "bsValue", "bsConfig", "isDisabled", "minDate", "maxDate", "dateCustomClasses", "daysDisabled", "datesDisabled", "datesEnabled"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDaterangepicker"] }, { kind: "directive", type: i3.BsDaterangepickerInputDirective, selector: "input[bsDaterangepicker]" }, { kind: "component", type: i4.NgxMaterialTimepickerComponent, selector: "ngx-material-timepicker", inputs: ["cancelBtnTmpl", "editableHintTmpl", "confirmBtnTmpl", "ESC", "enableKeyboardInput", "preventOverlayClick", "disableAnimation", "appendToInput", "hoursOnly", "defaultTime", "timepickerClass", "theme", "min", "max", "ngxMaterialTimepickerTheme", "format", "minutesGap"], outputs: ["timeSet", "opened", "closed", "hourSelected", "timeChanged"] }, { kind: "directive", type: i4.TimepickerDirective, selector: "[ngxTimepicker]", inputs: ["format", "min", "max", "ngxTimepicker", "value", "disabled", "disableClick"] }], encapsulation: i0.ViewEncapsulation.None }); }
407
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DateTimeFieldsComponent, selector: "lib-date-time-fields", inputs: { question: "question" }, providers: [DatePipe], viewQueries: [{ propertyName: "datepicker", first: true, predicate: ["datepickerYMD"], descendants: true }, { propertyName: "dateRangePicker", first: true, predicate: ["daterangepicker"], descendants: true }, { propertyName: "dateAndTimePicker", first: true, predicate: ["dateAndTimePicker"], descendants: true }], ngImport: i0, template: "<div class=\"mb-5 px-3\">\r\n <div class=\"input-wrapper mb-2\">\r\n <div [innerHTML]=\"question.questionNumber\"></div>\r\n &nbsp;&nbsp; <label>{{ question.question }}</label\r\n >&nbsp;\r\n <span class=\"text-danger\" *ngIf=\"required\">*</span>\r\n <div\r\n class=\"svg-wrapper mb-2 hintIcon\"\r\n [attr.data-title]=\"hint\"\r\n *ngIf=\"hint\"\r\n >\r\n <svg\r\n class=\"hintSvg\"\r\n viewBox=\"0 0 30 30\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\r\n stroke=\"#323232\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\r\n stroke=\"#323232\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\r\n stroke=\"#323232\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"dateType === 'DATE_ONLY'\">\r\n <!-- Date only picker -->\r\n <div class=\"input-container\">\r\n <input\r\n class=\"form-control height\"\r\n #datepickerYMD=\"bsDatepicker\"\r\n bsDatepicker\r\n [minDate]=\"minDate ? minDate : undefined\"\r\n [maxDate]=\"maxDate ? maxDate : undefined\"\r\n [bsConfig]=\"{ dateInputFormat: format, containerClass: 'theme-custom' }\"\r\n [(ngModel)]=\"selectedDate\"\r\n (blur)=\"validateField()\"\r\n (ngModelChange)=\"validateField()\"\r\n [class.invalid]=\"validationFailed\"\r\n placeholder=\"Select date\"\r\n />\r\n <i\r\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\r\n (click)=\"openDatePicker()\"\r\n ></i>\r\n </div>\r\n <div *ngIf=\"validationFailed\" class=\"text-danger mt-2\">\r\n <svg\r\n class=\"validationSvg\"\r\n viewBox=\"0 0 24 24\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\r\n stroke=\"white\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\r\n fill=\"#FF0000\"\r\n stroke=\"#FF0000\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M12 12.75L12 7.75\"\r\n stroke=\"white\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\r\n </svg>\r\n {{ validationMessage }}\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"dateType === 'TIME_ONLY'\">\r\n <!-- Time picker -->\r\n\r\n\r\n<div class=\"input-container\">\r\n <input\r\n class=\"form-control height appearanceInput mt-3\"\r\n aria-label=\"Select time\"\r\n placeholder=\"Select time\"\r\n readonly\r\n [format]=\"timeFormat==='24'?24:12\"\r\n [ngxTimepicker]=\"fullTime3\"\r\n [(ngModel)]=\"selectedTime\"\r\n [max]=\"maxTime\"\r\n [min]=\"minTime\"\r\n (ngModelChange)=\"validateField()\"\r\n [class.invalid]=\"validationFailed\"\r\n />\r\n \r\n <i\r\n id=\"startDateIcon\"\r\n class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\r\n (click)=\"fullTime3.open()\"\r\n style=\"cursor: pointer;\"\r\n></i>\r\n <ngx-material-timepicker #fullTime3></ngx-material-timepicker>\r\n</div>\r\n <div *ngIf=\"validationFailed\" class=\"text-danger mt-2\">\r\n <svg\r\n class=\"validationSvg\"\r\n viewBox=\"0 0 24 24\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\r\n stroke=\"white\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\r\n fill=\"#FF0000\"\r\n stroke=\"#FF0000\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M12 12.75L12 7.75\"\r\n stroke=\"white\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\r\n </svg>\r\n {{ validationMessage }}\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"dateType === 'DATE_AND_TIME'\">\r\n <!-- Date and time picker -->\r\n <div class=\"input-container\">\r\n <input\r\n #dateAndTimePicker=\"bsDatepicker\"\r\n type=\"text\"\r\n class=\"form-control height\"\r\n [minDate]=\"minDate ? minDate : undefined\"\r\n [maxDate]=\"maxDate ? maxDate : undefined\"\r\n [bsConfig]=\"{\r\n dateInputFormat: format, containerClass: 'theme-custom' \r\n }\"\r\n placeholder=\"Select date\"\r\n bsDatepicker\r\n [class.invalid]=\"validationFailed\"\r\n [(ngModel)]=\"selectedDateAndTime\"\r\n (blur)=\"validateField()\"\r\n (ngModelChange)=\"validateField()\"\r\n />\r\n <i\r\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\r\n (click)=\"openDateAndTimePicker()\"\r\n ></i>\r\n </div>\r\n <div class=\"input-container\" *ngIf=\"selectedDateAndTime && selectedDateAndTime != null\">\r\n <input\r\n \r\n class=\"form-control height appearanceInput mt-3\"\r\n aria-label=\"Select time\"\r\n placeholder=\"Select time\"\r\n readonly\r\n [format]=\"timeFormat==='24'?24:12\"\r\n [ngxTimepicker]=\"fullTime4\"\r\n [(ngModel)]=\"selectedTime\"\r\n [max]=\"maxTime\"\r\n [min]=\"minTime\"\r\n (ngModelChange)=\"validateField()\"\r\n (focus)=\"closeDatepicker()\"\r\n [class.invalid]=\"timeValidationFailed\"\r\n />\r\n \r\n <i\r\n id=\"startDateIcon\"\r\n class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\r\n (click)=\"fullTime4.open()\"\r\n style=\"cursor: pointer;\"\r\n ></i>\r\n <ngx-material-timepicker #fullTime4></ngx-material-timepicker>\r\n </div>\r\n \r\n <div *ngIf=\"validationFailed || timeValidationFailed\" class=\"text-danger mt-2\">\r\n <svg\r\n class=\"validationSvg\"\r\n viewBox=\"0 0 24 24\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\r\n stroke=\"white\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\r\n fill=\"#FF0000\"\r\n stroke=\"#FF0000\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M12 12.75L12 7.75\"\r\n stroke=\"white\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\r\n </svg>\r\n {{ validationMessage }}\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"dateType === 'DATE_RANGE'\">\r\n <!-- Date range picker -->\r\n <div class=\"input-container\">\r\n <input\r\n type=\"text\"\r\n class=\"form-control height\"\r\n #daterangepicker=\"bsDaterangepicker\"\r\n bsDaterangepicker\r\n placeholder=\"Select date\"\r\n [minDate]=\"minDate ? minDate : undefined\"\r\n [maxDate]=\"maxDate ? maxDate : undefined\"\r\n [bsConfig]=\"{\r\n rangeInputFormat: format,\r\n dateInputFormat: format, containerClass: 'theme-custom' \r\n }\"\r\n [(ngModel)]=\"selectedDateRange\"\r\n (blur)=\"validateField()\"\r\n (ngModelChange)=\"validateField()\"\r\n [class.invalid]=\"validationFailed\"\r\n />\r\n <i\r\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\r\n (click)=\"openDateRangePicker()\"\r\n ></i>\r\n </div>\r\n <div *ngIf=\"validationFailed\" class=\"text-danger mt-2\">\r\n <svg\r\n class=\"validationSvg\"\r\n viewBox=\"0 0 24 24\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\r\n stroke=\"white\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\r\n fill=\"#FF0000\"\r\n stroke=\"#FF0000\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M12 12.75L12 7.75\"\r\n stroke=\"white\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\r\n </svg>\r\n {{ validationMessage }}\r\n </div>\r\n </ng-container>\r\n</div>\r\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}.validationSvg{width:24px;height:24px;fill:none}:root{--library-font-family: Roboto, \"Helvetica Neue\", sans-serif;--library-font-size: 14px}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}.input-container{position:relative}.input-container .form-control{padding-right:30px}.input-container .calendar-icon,.clock-icon{position:absolute;top:50%;right:10px;transform:translateY(-50%);cursor:pointer}.appearanceInput{background-color:#fff}::ng-deep ngx-material-timepicker-content{--body-background-color: #fff;--button-color: #08bff6 !important;--dial-active-color: #fff;--dial-inactive-color: rgba(255, 255, 255, .5);--dial-background-color: #08bff6 !important;--dial-editable-active-color: #08bff6!important;--dial-editable-background-color: #fff;--clock-face-time-active-color: #fff;--clock-face-time-inactive-color: #6c6c6c;--clock-face-inner-time-inactive-color: #929292;--clock-face-time-disabled-color: #c5c5c5;--clock-face-background-color: #f0f0f0;--clock-hand-color: #08bff6 !important;position:relative;z-index:99999999}::ng-deep ngx-material-timepicker-container{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000052;z-index:99998}.theme-custom .bs-datepicker-head,.timepicker__header{background-color:#08bff6!important}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i3.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "directive", type: i3.BsDaterangepickerDirective, selector: "[bsDaterangepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isOpen", "bsValue", "bsConfig", "isDisabled", "minDate", "maxDate", "dateCustomClasses", "daysDisabled", "datesDisabled", "datesEnabled"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDaterangepicker"] }, { kind: "directive", type: i3.BsDaterangepickerInputDirective, selector: "input[bsDaterangepicker]" }, { kind: "component", type: i4.NgxMaterialTimepickerComponent, selector: "ngx-material-timepicker", inputs: ["cancelBtnTmpl", "editableHintTmpl", "confirmBtnTmpl", "ESC", "enableKeyboardInput", "preventOverlayClick", "disableAnimation", "appendToInput", "hoursOnly", "defaultTime", "timepickerClass", "theme", "min", "max", "ngxMaterialTimepickerTheme", "format", "minutesGap"], outputs: ["timeSet", "opened", "closed", "hourSelected", "timeChanged"] }, { kind: "directive", type: i4.TimepickerDirective, selector: "[ngxTimepicker]", inputs: ["format", "min", "max", "ngxTimepicker", "value", "disabled", "disableClick"] }], encapsulation: i0.ViewEncapsulation.None }); }
408
408
  }
409
409
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateTimeFieldsComponent, decorators: [{
410
410
  type: Component,
411
- args: [{ selector: 'lib-date-time-fields', providers: [DatePipe], encapsulation: ViewEncapsulation.None, template: "<div class=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</label\n >&nbsp;\n <span class=\"text-danger\" *ngIf=\"required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <ng-container *ngIf=\"dateType === 'DATE_ONLY'\">\n <!-- Date only picker -->\n <div class=\"input-container\">\n <input\n class=\"form-control height\"\n #datepickerYMD=\"bsDatepicker\"\n bsDatepicker\n [minDate]=\"minDate ? minDate : undefined\"\n [maxDate]=\"maxDate ? maxDate : undefined\"\n [bsConfig]=\"{ dateInputFormat: format, containerClass: 'theme-custom' }\"\n [(ngModel)]=\"selectedDate\"\n (blur)=\"validateField()\"\n (ngModelChange)=\"validateField()\"\n [class.invalid]=\"validationFailed\"\n placeholder=\"Select date\"\n />\n <i\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n (click)=\"openDatePicker()\"\n ></i>\n </div>\n <div *ngIf=\"validationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"dateType === 'TIME_ONLY'\">\n <!-- Time picker -->\n\n\n<div class=\"input-container\">\n <input\n class=\"form-control height appearanceInput mt-3\"\n aria-label=\"Select time\"\n placeholder=\"Select time\"\n readonly\n [format]=\"timeFormat==='24'?24:12\"\n [ngxTimepicker]=\"fullTime3\"\n [(ngModel)]=\"selectedTime\"\n [max]=\"maxTime\"\n [min]=\"minTime\"\n (ngModelChange)=\"validateField()\"\n [class.invalid]=\"validationFailed\"\n />\n \n <i\n id=\"startDateIcon\"\n class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\n (click)=\"fullTime3.open()\"\n style=\"cursor: pointer;\"\n></i>\n <ngx-material-timepicker #fullTime3></ngx-material-timepicker>\n</div>\n <div *ngIf=\"validationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"dateType === 'DATE_AND_TIME'\">\n <!-- Date and time picker -->\n <div class=\"input-container\">\n <input\n #dateAndTimePicker=\"bsDatepicker\"\n type=\"text\"\n class=\"form-control height\"\n [minDate]=\"minDate ? minDate : undefined\"\n [maxDate]=\"maxDate ? maxDate : undefined\"\n [bsConfig]=\"{\n dateInputFormat: format, containerClass: 'theme-custom' \n }\"\n placeholder=\"Select date\"\n bsDatepicker\n [class.invalid]=\"validationFailed\"\n [(ngModel)]=\"selectedDateAndTime\"\n (blur)=\"validateField()\"\n (ngModelChange)=\"validateField()\"\n />\n <i\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n (click)=\"openDateAndTimePicker()\"\n ></i>\n </div>\n <div class=\"input-container\" *ngIf=\"selectedDateAndTime && selectedDateAndTime != null\">\n <input\n \n class=\"form-control height appearanceInput mt-3\"\n aria-label=\"Select time\"\n placeholder=\"Select time\"\n readonly\n [format]=\"timeFormat==='24'?24:12\"\n [ngxTimepicker]=\"fullTime4\"\n [(ngModel)]=\"selectedTime\"\n [max]=\"maxTime\"\n [min]=\"minTime\"\n (ngModelChange)=\"validateField()\"\n (focus)=\"closeDatepicker()\"\n [class.invalid]=\"timeValidationFailed\"\n />\n \n <i\n id=\"startDateIcon\"\n class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\n (click)=\"fullTime4.open()\"\n style=\"cursor: pointer;\"\n ></i>\n <ngx-material-timepicker #fullTime4></ngx-material-timepicker>\n </div>\n \n <div *ngIf=\"validationFailed || timeValidationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"dateType === 'DATE_RANGE'\">\n <!-- Date range picker -->\n <div class=\"input-container\">\n <input\n type=\"text\"\n class=\"form-control height\"\n #daterangepicker=\"bsDaterangepicker\"\n bsDaterangepicker\n placeholder=\"Select date\"\n [minDate]=\"minDate ? minDate : undefined\"\n [maxDate]=\"maxDate ? maxDate : undefined\"\n [bsConfig]=\"{\n rangeInputFormat: format,\n dateInputFormat: format, containerClass: 'theme-custom' \n }\"\n [(ngModel)]=\"selectedDateRange\"\n (blur)=\"validateField()\"\n (ngModelChange)=\"validateField()\"\n [class.invalid]=\"validationFailed\"\n />\n <i\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n (click)=\"openDateRangePicker()\"\n ></i>\n </div>\n <div *ngIf=\"validationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n </ng-container>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}.validationSvg{width:24px;height:24px;fill:none}:root{--library-font-family: Roboto, \"Helvetica Neue\", sans-serif;--library-font-size: 14px}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}.input-container{position:relative}.input-container .form-control{padding-right:30px}.input-container .calendar-icon,.clock-icon{position:absolute;top:50%;right:10px;transform:translateY(-50%);cursor:pointer}.appearanceInput{background-color:#fff}::ng-deep ngx-material-timepicker-content{--body-background-color: #fff;--button-color: #08bff6 !important;--dial-active-color: #fff;--dial-inactive-color: rgba(255, 255, 255, .5);--dial-background-color: #08bff6 !important;--dial-editable-active-color: #08bff6!important;--dial-editable-background-color: #fff;--clock-face-time-active-color: #fff;--clock-face-time-inactive-color: #6c6c6c;--clock-face-inner-time-inactive-color: #929292;--clock-face-time-disabled-color: #c5c5c5;--clock-face-background-color: #f0f0f0;--clock-hand-color: #08bff6 !important;position:relative;z-index:99999999}::ng-deep ngx-material-timepicker-container{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000052;z-index:99998}.theme-custom .bs-datepicker-head,.timepicker__header{background-color:#08bff6!important}\n"] }]
411
+ args: [{ selector: 'lib-date-time-fields', providers: [DatePipe], encapsulation: ViewEncapsulation.None, template: "<div class=\"mb-5 px-3\">\r\n <div class=\"input-wrapper mb-2\">\r\n <div [innerHTML]=\"question.questionNumber\"></div>\r\n &nbsp;&nbsp; <label>{{ question.question }}</label\r\n >&nbsp;\r\n <span class=\"text-danger\" *ngIf=\"required\">*</span>\r\n <div\r\n class=\"svg-wrapper mb-2 hintIcon\"\r\n [attr.data-title]=\"hint\"\r\n *ngIf=\"hint\"\r\n >\r\n <svg\r\n class=\"hintSvg\"\r\n viewBox=\"0 0 30 30\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\r\n stroke=\"#323232\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\r\n stroke=\"#323232\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\r\n stroke=\"#323232\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"dateType === 'DATE_ONLY'\">\r\n <!-- Date only picker -->\r\n <div class=\"input-container\">\r\n <input\r\n class=\"form-control height\"\r\n #datepickerYMD=\"bsDatepicker\"\r\n bsDatepicker\r\n [minDate]=\"minDate ? minDate : undefined\"\r\n [maxDate]=\"maxDate ? maxDate : undefined\"\r\n [bsConfig]=\"{ dateInputFormat: format, containerClass: 'theme-custom' }\"\r\n [(ngModel)]=\"selectedDate\"\r\n (blur)=\"validateField()\"\r\n (ngModelChange)=\"validateField()\"\r\n [class.invalid]=\"validationFailed\"\r\n placeholder=\"Select date\"\r\n />\r\n <i\r\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\r\n (click)=\"openDatePicker()\"\r\n ></i>\r\n </div>\r\n <div *ngIf=\"validationFailed\" class=\"text-danger mt-2\">\r\n <svg\r\n class=\"validationSvg\"\r\n viewBox=\"0 0 24 24\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\r\n stroke=\"white\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\r\n fill=\"#FF0000\"\r\n stroke=\"#FF0000\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M12 12.75L12 7.75\"\r\n stroke=\"white\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\r\n </svg>\r\n {{ validationMessage }}\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"dateType === 'TIME_ONLY'\">\r\n <!-- Time picker -->\r\n\r\n\r\n<div class=\"input-container\">\r\n <input\r\n class=\"form-control height appearanceInput mt-3\"\r\n aria-label=\"Select time\"\r\n placeholder=\"Select time\"\r\n readonly\r\n [format]=\"timeFormat==='24'?24:12\"\r\n [ngxTimepicker]=\"fullTime3\"\r\n [(ngModel)]=\"selectedTime\"\r\n [max]=\"maxTime\"\r\n [min]=\"minTime\"\r\n (ngModelChange)=\"validateField()\"\r\n [class.invalid]=\"validationFailed\"\r\n />\r\n \r\n <i\r\n id=\"startDateIcon\"\r\n class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\r\n (click)=\"fullTime3.open()\"\r\n style=\"cursor: pointer;\"\r\n></i>\r\n <ngx-material-timepicker #fullTime3></ngx-material-timepicker>\r\n</div>\r\n <div *ngIf=\"validationFailed\" class=\"text-danger mt-2\">\r\n <svg\r\n class=\"validationSvg\"\r\n viewBox=\"0 0 24 24\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\r\n stroke=\"white\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\r\n fill=\"#FF0000\"\r\n stroke=\"#FF0000\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M12 12.75L12 7.75\"\r\n stroke=\"white\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\r\n </svg>\r\n {{ validationMessage }}\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"dateType === 'DATE_AND_TIME'\">\r\n <!-- Date and time picker -->\r\n <div class=\"input-container\">\r\n <input\r\n #dateAndTimePicker=\"bsDatepicker\"\r\n type=\"text\"\r\n class=\"form-control height\"\r\n [minDate]=\"minDate ? minDate : undefined\"\r\n [maxDate]=\"maxDate ? maxDate : undefined\"\r\n [bsConfig]=\"{\r\n dateInputFormat: format, containerClass: 'theme-custom' \r\n }\"\r\n placeholder=\"Select date\"\r\n bsDatepicker\r\n [class.invalid]=\"validationFailed\"\r\n [(ngModel)]=\"selectedDateAndTime\"\r\n (blur)=\"validateField()\"\r\n (ngModelChange)=\"validateField()\"\r\n />\r\n <i\r\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\r\n (click)=\"openDateAndTimePicker()\"\r\n ></i>\r\n </div>\r\n <div class=\"input-container\" *ngIf=\"selectedDateAndTime && selectedDateAndTime != null\">\r\n <input\r\n \r\n class=\"form-control height appearanceInput mt-3\"\r\n aria-label=\"Select time\"\r\n placeholder=\"Select time\"\r\n readonly\r\n [format]=\"timeFormat==='24'?24:12\"\r\n [ngxTimepicker]=\"fullTime4\"\r\n [(ngModel)]=\"selectedTime\"\r\n [max]=\"maxTime\"\r\n [min]=\"minTime\"\r\n (ngModelChange)=\"validateField()\"\r\n (focus)=\"closeDatepicker()\"\r\n [class.invalid]=\"timeValidationFailed\"\r\n />\r\n \r\n <i\r\n id=\"startDateIcon\"\r\n class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\r\n (click)=\"fullTime4.open()\"\r\n style=\"cursor: pointer;\"\r\n ></i>\r\n <ngx-material-timepicker #fullTime4></ngx-material-timepicker>\r\n </div>\r\n \r\n <div *ngIf=\"validationFailed || timeValidationFailed\" class=\"text-danger mt-2\">\r\n <svg\r\n class=\"validationSvg\"\r\n viewBox=\"0 0 24 24\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\r\n stroke=\"white\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\r\n fill=\"#FF0000\"\r\n stroke=\"#FF0000\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M12 12.75L12 7.75\"\r\n stroke=\"white\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\r\n </svg>\r\n {{ validationMessage }}\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"dateType === 'DATE_RANGE'\">\r\n <!-- Date range picker -->\r\n <div class=\"input-container\">\r\n <input\r\n type=\"text\"\r\n class=\"form-control height\"\r\n #daterangepicker=\"bsDaterangepicker\"\r\n bsDaterangepicker\r\n placeholder=\"Select date\"\r\n [minDate]=\"minDate ? minDate : undefined\"\r\n [maxDate]=\"maxDate ? maxDate : undefined\"\r\n [bsConfig]=\"{\r\n rangeInputFormat: format,\r\n dateInputFormat: format, containerClass: 'theme-custom' \r\n }\"\r\n [(ngModel)]=\"selectedDateRange\"\r\n (blur)=\"validateField()\"\r\n (ngModelChange)=\"validateField()\"\r\n [class.invalid]=\"validationFailed\"\r\n />\r\n <i\r\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\r\n (click)=\"openDateRangePicker()\"\r\n ></i>\r\n </div>\r\n <div *ngIf=\"validationFailed\" class=\"text-danger mt-2\">\r\n <svg\r\n class=\"validationSvg\"\r\n viewBox=\"0 0 24 24\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\r\n stroke=\"white\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\r\n fill=\"#FF0000\"\r\n stroke=\"#FF0000\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M12 12.75L12 7.75\"\r\n stroke=\"white\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\r\n </svg>\r\n {{ validationMessage }}\r\n </div>\r\n </ng-container>\r\n</div>\r\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}.validationSvg{width:24px;height:24px;fill:none}:root{--library-font-family: Roboto, \"Helvetica Neue\", sans-serif;--library-font-size: 14px}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}.input-container{position:relative}.input-container .form-control{padding-right:30px}.input-container .calendar-icon,.clock-icon{position:absolute;top:50%;right:10px;transform:translateY(-50%);cursor:pointer}.appearanceInput{background-color:#fff}::ng-deep ngx-material-timepicker-content{--body-background-color: #fff;--button-color: #08bff6 !important;--dial-active-color: #fff;--dial-inactive-color: rgba(255, 255, 255, .5);--dial-background-color: #08bff6 !important;--dial-editable-active-color: #08bff6!important;--dial-editable-background-color: #fff;--clock-face-time-active-color: #fff;--clock-face-time-inactive-color: #6c6c6c;--clock-face-inner-time-inactive-color: #929292;--clock-face-time-disabled-color: #c5c5c5;--clock-face-background-color: #f0f0f0;--clock-hand-color: #08bff6 !important;position:relative;z-index:99999999}::ng-deep ngx-material-timepicker-container{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000052;z-index:99998}.theme-custom .bs-datepicker-head,.timepicker__header{background-color:#08bff6!important}\n"] }]
412
412
  }], ctorParameters: function () { return [{ type: i1.DatePipe }]; }, propDecorators: { question: [{
413
413
  type: Input
414
414
  }], datepicker: [{
@@ -421,4 +421,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
421
421
  type: ViewChild,
422
422
  args: ['dateAndTimePicker']
423
423
  }] } });
424
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLWZpZWxkcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL2Zvcm0tZmllbGRzL2RhdGUtdGltZS1maWVsZHMvZGF0ZS10aW1lLWZpZWxkcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL2Zvcm0tZmllbGRzL2RhdGUtdGltZS1maWVsZHMvZGF0ZS10aW1lLWZpZWxkcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFjL0UsTUFBTSxPQUFPLHVCQUF1QjtJQW9DbEMsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQW5DdEMsYUFBUSxHQUFnQztZQUN0QyxjQUFjLEVBQUUsY0FBYztZQUM5QixVQUFVLEVBQUUsSUFBSTtZQUNoQixnQkFBZ0IsRUFBRSxJQUFJO1lBQ3RCLGVBQWUsRUFBRSxLQUFLO1NBQ3ZCLENBQUM7UUFFTyxhQUFRLEdBQVEsRUFBRSxDQUFDO1FBQzVCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUNsQixVQUFLLEdBQVcsQ0FBQyxDQUFDO1FBQ2xCLFlBQU8sR0FBVyxFQUFFLENBQUM7UUFDckIsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQixhQUFRLEdBQVcsRUFBRSxDQUFDO1FBQ3RCLFdBQU0sR0FBVyxFQUFFLENBQUM7UUFDcEIsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLGtCQUFhLEdBQVcsRUFBRSxD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U0FDYjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzsrR0F0Y1UsdUJBQXVCO21HQUF2Qix1QkFBdUIsaUZBSHZCLENBQUMsUUFBUSxDQUFDLHFWQ1p2QixrbVZBcVRBOzs0RkR0U2EsdUJBQXVCO2tCQVBuQyxTQUFTOytCQUNFLHNCQUFzQixhQUdyQixDQUFDLFFBQVEsQ0FBQyxpQkFDTixpQkFBaUIsQ0FBQyxJQUFJOytGQVU1QixRQUFRO3NCQUFoQixLQUFLO2dCQXlCc0IsVUFBVTtzQkFBckMsU0FBUzt1QkFBQyxlQUFlO2dCQUNJLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCO2dCQUNJLGlCQUFpQjtzQkFBaEQsU0FBUzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBCc0RhdGVwaWNrZXJDb25maWcsXG4gIEJzRGF0ZXBpY2tlckRpcmVjdGl2ZSxcbn0gZnJvbSAnbmd4LWJvb3RzdHJhcC9kYXRlcGlja2VyJztcbmltcG9ydCB7IE5neE1hdGVyaWFsVGltZXBpY2tlckNvbXBvbmVudCB9IGZyb20gJ25neC1tYXRlcmlhbC10aW1lcGlja2VyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWRhdGUtdGltZS1maWVsZHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS10aW1lLWZpZWxkcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGUtdGltZS1maWVsZHMuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbRGF0ZVBpcGVdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIERhdGVUaW1lRmllbGRzQ29tcG9uZW50IHtcbiAgYnNDb25maWc6IFBhcnRpYWw8QnNEYXRlcGlja2VyQ29uZmlnPiA9IHtcbiAgICBjb250YWluZXJDbGFzczogJ3RoZW1lLWN1c3RvbScsXG4gICAgaXNBbmltYXRlZDogdHJ1ZSxcbiAgICBhZGFwdGl2ZVBvc2l0aW9uOiB0cnVlLFxuICAgIHNob3dXZWVrTnVtYmVyczogZmFsc2UsXG4gIH07XG5cbiAgQElucHV0KCkgcXVlc3Rpb246IGFueSA9IHt9O1xuICByZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBoaW50OiBzdHJpbmcgPSAnJztcbiAgY291bnQ6IG51bWJlciA9IDA7XG4gIG1pblRpbWU6IHN0cmluZyA9ICcnO1xuICBtYXhUaW1lOiBzdHJpbmcgPSAnJztcbiAgZGF0ZVR5cGU6IHN0cmluZyA9ICcnO1xuICBmb3JtYXQ6IHN0cmluZyA9ICcnO1xuICBEYXRlZm9ybWF0OiBzdHJpbmcgPSAnJztcbiAgdGltZUZvcm1hdDogc3RyaW5nID0gJyc7XG4gIG1pbkRhdGVPcHRpb246IHN0cmluZyA9ICcnO1xuICBtaW5EYXRlOiBEYXRlIHwgdW5kZWZpbmVkO1xuICBtYXhEYXRlT3B0aW9uOiBzdHJpbmcgPSAnJztcbiAgbWF4RGF0ZTogRGF0ZSB8IHVuZGVmaW5lZDtcbiAgdG9kYXlEYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgc2VsZWN0ZWREYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gIHNlbGVjdGVkVGltZTogc3RyaW5nID0gJyc7XG4gIHNlbGVjdGVkRGF0ZVJhbmdlOiBzdHJpbmcgPSAnJztcbiAgc2VsZWN0ZWREYXRlQW5kVGltZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuICB2YWxpZGF0aW9uRmFpbGVkITogYm9vbGVhbjtcbiAgdGltZVZhbGlkYXRpb25GYWlsZWQhOiBib29sZWFuO1xuICB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nID0gJyc7XG4gIG1heFRpbWVPcHRpb246IHN0cmluZyA9ICcnO1xuICBtaW5UaW1lT3B0aW9uOiBzdHJpbmcgPSAnJztcblxuICBAVmlld0NoaWxkKCdkYXRlcGlja2VyWU1EJykgZGF0ZXBpY2tlciE6IEJzRGF0ZXBpY2tlckRpcmVjdGl2ZTtcbiAgQFZpZXdDaGlsZCgnZGF0ZXJhbmdlcGlja2VyJykgZGF0ZVJhbmdlUGlja2VyITogQnNEYXRlcGlja2VyRGlyZWN0aXZlO1xuICBAVmlld0NoaWxkKCdkYXRlQW5kVGltZVBpY2tlcicpIGRhdGVBbmRUaW1lUGlja2VyITogQnNEYXRlcGlja2VyRGlyZWN0aXZlO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy52YWx1ZUFzc2lnbmVkKCk7XG4gIH1cblxuICB2YWx1ZUFzc2lnbmVkKCkge1xuXG4gICAgdGhpcy5jb3VudCA9IHRoaXMucXVlc3Rpb24uY291bnQ7XG4gICAgdGhpcy5yZXF1aXJlZCA9IHRoaXMucXVlc3Rpb24ucmVxdWlyZWQ7XG4gICAgdGhpcy5oaW50ID0gdGhpcy5xdWVzdGlvbi5oaW50O1xuICAgIHRoaXMuZGF0ZVR5cGUgPSB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50LmFwcGVhcmFuY2UuZGF0ZVR5cGU7XG4gICAgdGhpcy5taW5EYXRlT3B0aW9uID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC52YWxpZGF0aW9uLm1pbkRhdGVPcHRpb247XG4gICAgdGhpcy5EYXRlZm9ybWF0ID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC5hcHBlYXJhbmNlLmZvcm1hdC5yZXBsYWNlKC9ERC9nLCAnZGQnKTtcblxuXG4gICAgdGhpcy5taW5EYXRlID0gdGhpcy5nZXRNaW5EYXRlKCk7XG5cblxuICAgIHRoaXMubWF4RGF0ZU9wdGlvbiA9IHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQudmFsaWRhdGlvbi5tYXhEYXRlT3B0aW9uO1xuICAgIHRoaXMubWF4RGF0ZSA9IHRoaXMuZ2V0TWF4RGF0ZSgpO1xuICAgIHRoaXMuc2V0RGF0ZVRpbWVGb3JtYXQoKTtcbiAgICBpZiAodGhpcy5xdWVzdGlvbj8uYW5zd2VyICYmICh0aGlzLnF1ZXN0aW9uPy5hbnN3ZXIpLmxlbmd0aCA+IDApXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IHRoaXMucXVlc3Rpb24/LmFuc3dlcjtcbiAgICB0aGlzLnNlbGVjdGVkVGltZSA9IHRoaXMucXVlc3Rpb24uYW5zd2VyO1xuICAgIGlmICh0aGlzLnF1ZXN0aW9uPy5hbnN3ZXIgJiYgKHRoaXMucXVlc3Rpb24/LmFuc3dlcikubGVuZ3RoID4gMClcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlQW5kVGltZSA9IG5ldyBEYXRlKHRoaXMucXVlc3Rpb24uYW5zd2VyKTtcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlID0gdGhpcy5xdWVzdGlvbi5hbnN3ZXI7XG4gICAgdGhpcy5taW5UaW1lT3B0aW9uID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC52YWxpZGF0aW9uLm1pblRpbWVPcHRpb247XG4gICAgdGhpcy5tYXhUaW1lT3B0aW9uID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC52YWxpZGF0aW9uLm1heFRpbWVPcHRpb247XG4gICAgaWYgKHRoaXMuZGF0ZVR5cGUgIT09ICdEQVRFX0FORF9USU1FJykge1xuICAgICAgdGhpcy5taW5UaW1lID0gdGhpcy5nZXRNaW5UaW1lKCkudG9TdHJpbmcoKTtcbiAgICAgIHRoaXMubWF4VGltZSA9IHRoaXMuZ2V0TWF4VGltZSgpLnRvU3RyaW5nKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmRhdGVUeXBlID09PSAnREFURV9BTkRfVElNRScgJiYgdGhpcy5xdWVzdGlvbj8uYW5zd2VyKSB7XG4gICAgICBjb25zdCBkYXRlVGltZUFycmF5ID0gdGhpcy5xdWVzdGlvbi5hbnN3ZXJcbiAgICAgICAgPyB0aGlzLnF1ZXN0aW9uLmFuc3dlci5zcGxpdCgnLCcpXG4gICAgICAgIDogW107IC8vIEZhbGxiYWNrIHRvIGFuIGVtcHR5IGFycmF5IGlmIGB0aGlzLnF1ZXN0aW9uLmFuc3dlcmAgaXMgdW5kZWZpbmVkXG5cbiAgICAgIGlmIChkYXRlVGltZUFycmF5Lmxlbmd0aCA9PT0gMikge1xuICAgICAgICBjb25zdCBmZXRjaGVkRGF0ZSA9IGRhdGVUaW1lQXJyYXlbMF0udHJpbSgpO1xuICAgICAgICBjb25zdCBmZXRjaGVkVGltZSA9IGRhdGVUaW1lQXJyYXlbMV0udHJpbSgpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IGZldGNoZWREYXRlO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVGltZSA9IGZldGNoZWRUaW1lO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmb3JtYXR0ZWREYXRlID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5zZWxlY3RlZERhdGVBbmRUaW1lLCB0aGlzLkRhdGVmb3JtYXQpO1xuICAgICAgY29uc3QgZm9ybWF0dGVtaW5EYXRlID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5taW5EYXRlLCB0aGlzLkRhdGVmb3JtYXQpO1xuICAgICAgY29uc3QgZm9ybWF0dGVtYXhEYXRlID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5tYXhEYXRlLCB0aGlzLkRhdGVmb3JtYXQpO1xuXG4gICAgICBpZiAoZm9ybWF0dGVkRGF0ZSA9PT0gZm9ybWF0dGVtaW5EYXRlKSB7XG4gICAgICAgIHRoaXMubWluVGltZSA9IHRoaXMuZ2V0TWluVGltZSgpLnRvU3RyaW5nKCk7XG4gICAgICAgIGlmICh0aGlzLnRpbWVGb3JtYXQgPT09ICcxMicpIHtcbiAgICAgICAgICB0aGlzLm1heFRpbWUgPSAnMTI6MDAgcG0nO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubWF4VGltZSA9ICcyMzowMCc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChmb3JtYXR0ZWREYXRlID09PSBmb3JtYXR0ZW1heERhdGUpIHtcbiAgICAgICAgdGhpcy5tYXhUaW1lID0gdGhpcy5nZXRNYXhUaW1lKCkudG9TdHJpbmcoKTtcbiAgICAgICAgaWYgKHRoaXMudGltZUZvcm1hdCA9PT0gJzEyJykge1xuICAgICAgICAgIHRoaXMubWluVGltZSA9ICcxMjowMCBhbSc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5taW5UaW1lID0gJzAwOjAwJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGZvcm1hdHRlZERhdGUgIT09IGZvcm1hdHRlbWluRGF0ZSAmJiBmb3JtYXR0ZWREYXRlICE9PSBmb3JtYXR0ZW1heERhdGUpIHtcbiAgICAgICAgaWYgKHRoaXMudGltZUZvcm1hdCA9PT0gJzEyJykge1xuICAgICAgICAgIHRoaXMubWluVGltZSA9ICcxMjowMCBhbSc7XG4gICAgICAgICAgdGhpcy5tYXhUaW1lID0gJzEyOjAwIHBtJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm1pblRpbWUgPSAnMDA6MDAnO1xuICAgICAgICAgIHRoaXMubWF4VGltZSA9ICcyMzowMCc7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIH1cblxuXG4gICAgaWYgKCF0aGlzLm1pblRpbWUgfHwgdGhpcy5taW5UaW1lLmxlbmd0aCA9PT0gMCkge1xuICAgICAgaWYgKHRoaXMudGltZUZvcm1hdCA9PT0gJzEyJykge1xuICAgICAgICB0aGlzLm1pblRpbWUgPSAnMTI6MDAgYW0nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5taW5UaW1lID0gJzAwOjAwJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMubWF4VGltZSB8fCB0aGlzLm1heFRpbWUubGVuZ3RoID09PSAwKSB7XG4gICAgICBpZiAodGhpcy50aW1lRm9ybWF0ID09PSAnMTInKSB7XG4gICAgICAgIHRoaXMubWF4VGltZSA9ICcxMjowMCBwbSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm1heFRpbWUgPSAnMjM6MDAnO1xuICAgICAgfVxuICAgIH1cblxuXG5cbiAgfVxuXG4gIHNldERhdGVUaW1lRm9ybWF0KCkge1xuICAgIHN3aXRjaCAodGhpcy5kYXRlVHlwZSkge1xuICAgICAgY2FzZSAnREFURV9PTkxZJzpcbiAgICAgICAgdGhpcy5mb3JtYXQgPSB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50LmFwcGVhcmFuY2UuZm9ybWF0O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1RJTUVfT05MWSc6XG4gICAgICAgIHRoaXMudGltZUZvcm1hdCA9IHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQuYXBwZWFyYW5jZS50aW1lRm9ybWF0O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RBVEVfQU5EX1RJTUUnOlxuICAgICAgICB0aGlzLmZvcm1hdCA9IHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQuYXBwZWFyYW5jZS5mb3JtYXQ7XG4gICAgICAgIHRoaXMudGltZUZvcm1hdCA9IHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQuYXBwZWFyYW5jZS50aW1lRm9ybWF0O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RBVEVfUkFOR0UnOlxuICAgICAgICB0aGlzLmZvcm1hdCA9IHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQuYXBwZWFyYW5jZS5mb3JtYXQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5mb3JtYXQgPSAnREQvTU0vWVlZWSc7XG4gICAgfVxuICB9XG5cbiAgZ2V0TWluRGF0ZSgpOiBEYXRlIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5taW5EYXRlT3B0aW9uID09PSAnQ1VSUkVOVF9EQVRFJykge1xuICAgICAgcmV0dXJuIHRoaXMudG9kYXlEYXRlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5taW5EYXRlT3B0aW9uID09PSAnQ1VTVE9NJykge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQudmFsaWRhdGlvbi5taW5EYXRlKTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDsgLy8gUmV0dXJuIHVuZGVmaW5lZCBpZiBubyB2YWxpZCBvcHRpb25cbiAgfVxuXG4gIGdldE1heERhdGUoKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMubWF4RGF0ZU9wdGlvbiA9PT0gJ0NVUlJFTlRfREFURScpIHtcbiAgICAgIHJldHVybiB0aGlzLnRvZGF5RGF0ZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubWF4RGF0ZU9wdGlvbiA9PT0gJ0NVU1RPTScpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50LnZhbGlkYXRpb24ubWF4RGF0ZSk7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXRNaW5UaW1lKCkge1xuICAgIGlmICh0aGlzLm1pblRpbWVPcHRpb24pIHtcbiAgICAgIGNvbnN0IGZvcm1hdCA9IHRoaXMudGltZUZvcm1hdCA9PT0gJzI0JyA/ICdISDptbScgOiAnaGg6bW0gYSc7XG5cbiAgICAgIGlmICh0aGlzLm1pblRpbWVPcHRpb24gPT09ICdDVVJSRU5UX1RJTUUnKSB7XG4gICAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShub3csIGZvcm1hdCkgfHwgJyc7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMubWluVGltZU9wdGlvbiA9PT0gJ0NVU1RPTScpIHtcbiAgICAgICAgY29uc3QgY3VzdG9tVGltZSA9IHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQudmFsaWRhdGlvbi5taW5UaW1lO1xuICAgICAgICBjb25zdCBbaG91cnMsIG1pbnV0ZXNdID0gY3VzdG9tVGltZS5zcGxpdCgnOicpOyAvLyBTcGxpdCBieSBjb2xvbiB0byBnZXQgaG91cnMgYW5kIG1pbnV0ZXNcblxuICAgICAgICAvLyBDcmVhdGUgYSBEYXRlIG9iamVjdCB3aXRoIGEgZml4ZWQgZGF0ZSBhbmQgY3VzdG9tIHRpbWVcbiAgICAgICAgY29uc3QgY3VzdG9tRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGN1c3RvbURhdGUuc2V0SG91cnMocGFyc2VJbnQoaG91cnMsIDEwKSwgcGFyc2VJbnQobWludXRlcywgMTApLCAwLCAwKTsgLy8gU2V0IGhvdXJzIGFuZCBtaW51dGVzXG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGN1c3RvbURhdGUsIGZvcm1hdCkgfHwgJyc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIGEgZGVmYXVsdCByZXR1cm4gaWYgbm8gY29uZGl0aW9uIGlzIG1ldFxuICAgIHJldHVybiAnJztcbiAgfVxuXG5cbiAgZ2V0TWF4VGltZSgpIHtcbiAgICBpZiAodGhpcy5tYXhUaW1lT3B0aW9uKSB7XG4gICAgICBjb25zdCBmb3JtYXQgPSB0aGlzLnRpbWVGb3JtYXQgPT09ICcyNCcgPyAnSEg6bW0nIDogJ2hoOm1tIGEnO1xuICAgICAgaWYgKHRoaXMubWF4VGltZU9wdGlvbiA9PT0gJ0NVUlJFTlRfVElNRScpIHtcbiAgICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKG5vdywgZm9ybWF0KSB8fCAnJztcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHRoaXMubWF4VGltZU9wdGlvbiA9PT0gJ0NVU1RPTScpIHtcbiAgICAgICAgY29uc3QgY3VzdG9tVGltZSA9IHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQudmFsaWRhdGlvbi5tYXhUaW1lO1xuICAgICAgICBjb25zdCBbaG91cnMsIG1pbnV0ZXNdID0gY3VzdG9tVGltZS5zcGxpdCgnOicpOyAvLyBTcGxpdCBieSBjb2xvbiB0byBnZXQgaG91cnMgYW5kIG1pbnV0ZXNcblxuICAgICAgICAvLyBDcmVhdGUgYSBEYXRlIG9iamVjdCB3aXRoIGEgZml4ZWQgZGF0ZSBhbmQgY3VzdG9tIHRpbWVcbiAgICAgICAgY29uc3QgY3VzdG9tRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGN1c3RvbURhdGUuc2V0SG91cnMocGFyc2VJbnQoaG91cnMsIDEwKSwgcGFyc2VJbnQobWludXRlcywgMTApLCAwLCAwKTsgLy8gU2V0IGhvdXJzIGFuZCBtaW51dGVzXG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGN1c3RvbURhdGUsIGZvcm1hdCkgfHwgJyc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgb3BlbkRhdGVQaWNrZXIoKSB7ICAgIFxuICAgIHRoaXMuZGF0ZXBpY2tlci50b2dnbGUoKTtcbiAgfVxuXG4gIG9wZW5EYXRlUmFuZ2VQaWNrZXIoKSB7XG4gICAgdGhpcy5kYXRlUmFuZ2VQaWNrZXIudG9nZ2xlKCk7XG4gIH1cblxuICBvcGVuRGF0ZUFuZFRpbWVQaWNrZXIoKSB7XG4gICAgdGhpcy5kYXRlQW5kVGltZVBpY2tlci50b2dnbGUoKTtcbiAgfVxuXG4gIGNsb3NlRGF0ZXBpY2tlcigpIHtcbiAgICBpZiAodGhpcy5kYXRlQW5kVGltZVBpY2tlcikge1xuICAgICAgdGhpcy5kYXRlQW5kVGltZVBpY2tlci5oaWRlKCk7IC8vIENsb3NlIHRoZSBkYXRlcGlja2VyXG4gICAgfVxuICB9XG5cblxuXG5cbiAgdmFsaWRhdGVGaWVsZCgpIHtcbiAgICBpZiAodGhpcy5kYXRlVHlwZSA9PT0gJ0RBVEVfT05MWScpIHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZSkge1xuICAgICAgICB0aGlzLnF1ZXN0aW9uLmFuc3dlciA9IHRoaXMuZm9ybWF0RGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZS50b1N0cmluZygpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucXVlc3Rpb24uYW5zd2VyID0gJyc7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudmFsaWRhdGVEYXRlT25seSgpXG4gICAgfVxuICAgIGVsc2UgaWYgKHRoaXMuZGF0ZVR5cGUgPT09ICdUSU1FX09OTFknKSB7XG4gICAgICB0aGlzLnF1ZXN0aW9uLmFuc3dlciA9IFN0cmluZyh0aGlzLnNlbGVjdGVkVGltZSk7XG4gICAgICB0aGlzLnZhbGlkYXRlVGltZU9ubHkoKVxuICAgIH1cbiAgICBlbHNlIGlmICh0aGlzLmRhdGVUeXBlID09PSAnREFURV9BTkRfVElNRScpIHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZUFuZFRpbWUpIHtcbiAgICAgICAgdGhpcy5xdWVzdGlvbi5hbnN3ZXIgPSB0aGlzLmZvcm1hdERhdGUodGhpcy5zZWxlY3RlZERhdGVBbmRUaW1lLnRvU3RyaW5nKCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5xdWVzdGlvbi5hbnN3ZXIgPSAnJztcbiAgICAgIH1cblxuICAgICAgdGhpcy52YWxpZGF0ZURhdGVBbmRUaW1lKClcblxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMucXVlc3Rpb24uYW5zd2VyID0gdGhpcy5mb3JtYXREYXRlKHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UpO1xuICAgICAgdGhpcy52YWxpZGF0ZURhdGVSYW5nZSgpXG4gICAgfVxuICB9XG5cbiAgZm9ybWF0RGF0ZShkYXRlOiBzdHJpbmcgfCBEYXRlLCB0eXBlOiBzdHJpbmcgPSAnZGF0ZVRpbWUnKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHRoaXMuZGF0ZVR5cGUpIHtcbiAgICAgIGNhc2UgJ0RBVEVfT05MWSc6XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLnNlbGVjdGVkRGF0ZSwgdGhpcy5EYXRlZm9ybWF0KSB8fCAnJztcbiAgICAgIGNhc2UgJ0RBVEVfQU5EX1RJTUUnOlxuICAgICAgICBjb25zdCBmb3JtYXR0ZWREYXRlID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5zZWxlY3RlZERhdGVBbmRUaW1lLCB0aGlzLkRhdGVmb3JtYXQpO1xuICAgICAgICBjb25zdCBmb3JtYXR0ZW1pbkRhdGUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLm1pbkRhdGUsIHRoaXMuRGF0ZWZvcm1hdCk7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlbWF4RGF0ZSA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMubWF4RGF0ZSwgdGhpcy5EYXRlZm9ybWF0KTtcbiAgICAgICAgaWYgKGZvcm1hdHRlZERhdGUgPT09IGZvcm1hdHRlbWluRGF0ZSkge1xuICAgICAgICAgIHRoaXMubWluVGltZSA9IHRoaXMuZ2V0TWluVGltZSgpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgaWYgKHRoaXMudGltZUZvcm1hdCA9PT0gJzEyJykge1xuICAgICAgICAgICAgdGhpcy5tYXhUaW1lID0gJzEyOjAwIHBtJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tYXhUaW1lID0gJzIzOjAwJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZvcm1hdHRlZERhdGUgPT09IGZvcm1hdHRlbWF4RGF0ZSkge1xuICAgICAgICAgIHRoaXMubWF4VGltZSA9IHRoaXMuZ2V0TWF4VGltZSgpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgaWYgKHRoaXMudGltZUZvcm1hdCA9PT0gJzEyJykge1xuICAgICAgICAgICAgdGhpcy5taW5UaW1lID0gJzEyOjAwIGFtJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5taW5UaW1lID0gJzAwOjAwJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZvcm1hdHRlZERhdGUgIT09IGZvcm1hdHRlbWluRGF0ZSAmJiBmb3JtYXR0ZWREYXRlICE9PSBmb3JtYXR0ZW1heERhdGUpIHtcbiAgICAgICAgICBpZiAodGhpcy50aW1lRm9ybWF0ID09PSAnMTInKSB7XG4gICAgICAgICAgICB0aGlzLm1pblRpbWUgPSAnMTI6MDAgYW0nO1xuICAgICAgICAgICAgdGhpcy5tYXhUaW1lID0gJzEyOjAwIHBtJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5taW5UaW1lID0gJzAwOjAwJztcbiAgICAgICAgICAgIHRoaXMubWF4VGltZSA9ICcyMzowMCc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZFRpbWUgPSB0aGlzLnNlbGVjdGVkVGltZSB8fCAnJzsgIC8vIElmIHNlbGVjdGVkVGltZSBpcyBudWxsIG9yIHVuZGVmaW5lZCwgdXNlIGVtcHR5IHN0cmluZ1xuICAgICAgICBpZiAoZm9ybWF0dGVkRGF0ZSAmJiBmb3JtYXR0ZWRUaW1lKSB7XG4gICAgICAgICAgcmV0dXJuIGAke2Zvcm1hdHRlZERhdGV9LCR7Zm9ybWF0dGVkVGltZX1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIGNhc2UgJ0RBVEVfUkFOR0UnOlxuXG4gICAgICAgIGNvbnN0IGRhdGVzID0gZGF0ZSBhcyB1bmtub3duIGFzIERhdGVbXTtcblxuICAgICAgICAvLyBFbnN1cmUgZGF0ZXMgaXMgZGVmaW5lZCBhbmQgaXMgYW4gYXJyYXlcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0ZXMpICYmIGRhdGVzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZGF0ZXNbMF0sIHRoaXMuRGF0ZWZvcm1hdCk7XG4gICAgICAgICAgY29uc3QgZW5kID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZGF0ZXNbMV0sIHRoaXMuRGF0ZWZvcm1hdCk7XG4gICAgICAgICAgcmV0dXJuIGAke3N0YXJ0fSAtICR7ZW5kfWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJyc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZGF0ZSwgdGhpcy5EYXRlZm9ybWF0KSB8fCAnJztcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZURhdGVPbmx5KCkge1xuICAgIHRoaXMudmFsaWRhdGlvbkZhaWxlZCA9IGZhbHNlO1xuICAgIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2UgPSAnJztcbiAgICBpZiAodGhpcy5yZXF1aXJlZCAmJiAhdGhpcy5zZWxlY3RlZERhdGUpIHtcbiAgICAgIHRoaXMudmFsaWRhdGlvbkZhaWxlZCA9IHRydWU7XG4gICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlID0gJ1RoaXMgaXMgYSByZXF1aXJlZCBxdWVzdGlvbic7XG4gICAgICB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRpb24gPSBmYWxzZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRpb24gPSB0cnVlO1xuICAgIH1cbiAgfVxuICB2YWxpZGF0ZVRpbWVPbmx5KCkge1xuICAgIHRoaXMudmFsaWRhdGlvbkZhaWxlZCA9IGZhbHNlO1xuICAgIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2UgPSAnJztcbiAgICBpZiAodGhpcy5yZXF1aXJlZCAmJiAhdGhpcy5zZWxlY3RlZFRpbWUpIHtcbiAgICAgIHRoaXMudmFsaWRhdGlvbkZhaWxlZCA9IHRydWU7XG4gICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlID0gJ1RoaXMgaXMgYSByZXF1aXJlZCBxdWVzdGlvbic7O1xuICAgICAgdGhpcy5xdWVzdGlvbi52YWxpZGF0aW9uID0gZmFsc2U7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5xdWVzdGlvbi52YWxpZGF0aW9uID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgdmFsaWRhdGVEYXRlUmFuZ2UoKSB7XG4gICAgdGhpcy52YWxpZGF0aW9uRmFpbGVkID0gZmFsc2U7XG4gICAgdGhpcy52YWxpZGF0aW9uTWVzc2FnZSA9ICcnO1xuICAgIGlmICh0aGlzLnJlcXVpcmVkICYmICF0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlKSB7XG4gICAgICB0aGlzLnZhbGlkYXRpb25GYWlsZWQgPSB0cnVlO1xuICAgICAgdGhpcy52YWxpZGF0aW9uTWVzc2FnZSA9ICdUaGlzIGlzIGEgcmVxdWlyZWQgcXVlc3Rpb24nO1xuICAgICAgdGhpcy5xdWVzdGlvbi52YWxpZGF0aW9uID0gZmFsc2U7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5xdWVzdGlvbi52YWxpZGF0aW9uID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgdmFsaWRhdGVEYXRlQW5kVGltZSgpIHtcbiAgICB0aGlzLnZhbGlkYXRpb25GYWlsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnRpbWVWYWxpZGF0aW9uRmFpbGVkID0gZmFsc2U7XG4gICAgdGhpcy52YWxpZGF0aW9uTWVzc2FnZSA9ICcnO1xuICAgIGlmICh0aGlzLnJlcXVpcmVkICYmICF0aGlzLnNlbGVjdGVkRGF0ZUFuZFRpbWUpIHtcbiAgICAgIHRoaXMudmFsaWRhdGlvbkZhaWxlZCA9IHRydWU7XG4gICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlID0gJ1RoaXMgaXMgYSByZXF1aXJlZCBxdWVzdGlvbic7XG4gICAgICB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRpb24gPSBmYWxzZTtcbiAgICB9XG4gICAgZWxzZSBpZiAodGhpcy5yZXF1aXJlZCAmJiAhdGhpcy5zZWxlY3RlZFRpbWUpIHtcbiAgICAgIHRoaXMudGltZVZhbGlkYXRpb25GYWlsZWQgPSB0cnVlO1xuICAgICAgdGhpcy52YWxpZGF0aW9uTWVzc2FnZSA9ICdUaGlzIGlzIGEgcmVxdWlyZWQgcXVlc3Rpb24nO1xuICAgICAgdGhpcy5xdWVzdGlvbi52YWxpZGF0aW9uID0gZmFsc2U7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5xdWVzdGlvbi52YWxpZGF0aW9uID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBjb252ZXJ0VG9JU09EYXRlKFxuICAgIGRhdGVJbnB1dDogW251bWJlciwgbnVtYmVyLCBudW1iZXJdIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuICApOiBEYXRlIHwgbnVsbCB7XG5cblxuICAgIGlmICghZGF0ZUlucHV0KSB7XG5cblxuICAgICAgcmV0dXJuIG51bGw7IC8vIFJldHVybiBudWxsIGlmIGRhdGVJbnB1dCBpcyBudWxsLCB1bmRlZmluZWQsIG9yIGFueSBmYWxzeSB2YWx1ZVxuICAgIH1cblxuICAgIGxldCB5ZWFyLCBtb250aCwgZGF5O1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0ZUlucHV0KSkge1xuICAgICAgLy8gRXh0cmFjdCB5ZWFyLCBtb250aCwgYW5kIGRheSBmcm9tIGFycmF5IGlucHV0XG4gICAgICBbeWVhciwgbW9udGgsIGRheV0gPSBkYXRlSW5wdXQ7XG5cbiAgICAgIC8vIFZhbGlkYXRlIHRoZSBhcnJheSBmb3JtYXRcbiAgICAgIGlmIChcbiAgICAgICAgdHlwZW9mIHllYXIgIT09ICdudW1iZXInIHx8XG4gICAgICAgIHR5cGVvZiBtb250aCAhPT0gJ251bWJlcicgfHxcbiAgICAgICAgdHlwZW9mIGRheSAhPT0gJ251bWJlcicgfHxcbiAgICAgICAgaXNOYU4oeWVhcikgfHxcbiAgICAgICAgaXNOYU4obW9udGgpIHx8XG4gICAgICAgIGlzTmFOKGRheSkgfHxcbiAgICAgICAgIU51bWJlci5pc0ludGVnZXIoeWVhcikgfHxcbiAgICAgICAgIU51bWJlci5pc0ludGVnZXIobW9udGgpIHx8XG4gICAgICAgICFOdW1iZXIuaXNJbnRlZ2VyKGRheSkgfHxcbiAgICAgICAgbW9udGggPCAxIHx8XG4gICAgICAgIG1vbnRoID4gMTIgfHxcbiAgICAgICAgZGF5IDwgMSB8fFxuICAgICAgICBkYXkgPiAzMVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGRhdGVJbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIC8vIENoZWNrIGlmIHRoZSBzdHJpbmcgbWF0Y2hlcyB0aGUgWVlZWS1NTS1ERCBmb3JtYXRcbiAgICAgIGNvbnN0IGRhdGVQYXJ0cyA9IGRhdGVJbnB1dC5zcGxpdCgnLScpO1xuICAgICAgaWYgKGRhdGVQYXJ0cy5sZW5ndGggIT09IDMpIHJldHVybiBudWxsO1xuXG4gICAgICBbeWVhciwgbW9udGgsIGRheV0gPSBkYXRlUGFydHMubWFwKE51bWJlcik7XG5cbiAgICAgIC8vIFZhbGlkYXRlIHRoZSBwYXJzZWQgcGFydHNcbiAgICAgIGlmIChcbiAgICAgICAgaXNOYU4oeWVhcikgfHxcbiAgICAgICAgaXNOYU4obW9udGgpIHx8XG4gICAgICAgIGlzTmFOKGRheSkgfHxcbiAgICAgICAgIU51bWJlci5pc0ludGVnZXIoeWVhcikgfHxcbiAgICAgICAgIU51bWJlci5pc0ludGVnZXIobW9udGgpIHx8XG4gICAgICAgICFOdW1iZXIuaXNJbnRlZ2VyKGRheSkgfHxcbiAgICAgICAgbW9udGggPCAxIHx8XG4gICAgICAgIG1vbnRoID4gMTIgfHxcbiAgICAgICAgZGF5IDwgMSB8fFxuICAgICAgICBkYXkgPiAzMVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDsgLy8gVW5zdXBwb3J0ZWQgaW5wdXQgdHlwZVxuICAgIH1cblxuICAgIC8vIENyZWF0ZSBhIERhdGUgb2JqZWN0IChtb250aCBpcyAwLWJhc2VkLCBzbyBzdWJ0cmFjdCAxKVxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSk7XG5cbiAgICAvLyBWZXJpZnkgaWYgdGhlIERhdGUgb2JqZWN0IG1hdGNoZXMgdGhlIHByb3ZpZGVkIHllYXIsIG1vbnRoLCBhbmQgZGF5XG4gICAgaWYgKFxuICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpICE9PSB5ZWFyIHx8XG4gICAgICBkYXRlLmdldE1vbnRoKCkgIT09IG1vbnRoIC0gMSB8fFxuICAgICAgZGF0ZS5nZXREYXRlKCkgIT09IGRheVxuICAgICkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cblxufVxuIiwiPGRpdiAgY2xhc3M9XCJtYi01IHB4LTNcIj5cbiAgPGRpdiBjbGFzcz1cImlucHV0LXdyYXBwZXIgbWItMlwiPlxuICAgIDxkaXYgW2lubmVySFRNTF09XCJxdWVzdGlvbi5xdWVzdGlvbk51bWJlclwiPjwvZGl2PlxuICAgICZuYnNwOyZuYnNwOyA8bGFiZWw+e3sgcXVlc3Rpb24ucXVlc3Rpb24gfX08L2xhYmVsXG4gICAgPiZuYnNwO1xuICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIiAqbmdJZj1cInJlcXVpcmVkXCI+Kjwvc3Bhbj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInN2Zy13cmFwcGVyIG1iLTIgaGludEljb25cIlxuICAgICAgW2F0dHIuZGF0YS10aXRsZV09XCJoaW50XCJcbiAgICAgICpuZ0lmPVwiaGludFwiXG4gICAgPlxuICAgICAgPHN2Z1xuICAgICAgICBjbGFzcz1cImhpbnRTdmdcIlxuICAgICAgICB2aWV3Qm94PVwiMCAwIDMwIDMwXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICA+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgZD1cIk0xNSAyNi4yNVYyNi4yNUM4Ljc4NjI1IDI2LjI1IDMuNzUgMjEuMjEzOCAzLjc1IDE1VjE1QzMuNzUgOC43ODYyNSA4Ljc4NjI1IDMuNzUgMTUgMy43NVYzLjc1QzIxLjIxMzggMy43NSAyNi4yNSA4Ljc4NjI1IDI2LjI1IDE1VjE1QzI2LjI1IDIxLjIxMzggMjEuMjEzOCAyNi4yNSAxNSAyNi4yNVpcIlxuICAgICAgICAgIHN0cm9rZT1cIiMzMjMyMzJcIlxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNMTUgMTYuNTYyM1YxNi4yNDk4QzE1IDE1LjIyODUgMTUuNjMxMiAxNC42NzQ4IDE2LjI2MzcgMTQuMjQ5OEMxNi44ODEyIDEzLjgzMzUgMTcuNSAxMy4yOTEgMTcuNSAxMi4yOTFDMTcuNSAxMC45MDk4IDE2LjM4MTMgOS43OTEwMiAxNSA5Ljc5MTAyQzEzLjYxODcgOS43OTEwMiAxMi41IDEwLjkwOTggMTIuNSAxMi4yOTFcIlxuICAgICAgICAgIHN0cm9rZT1cIiMzMjMyMzJcIlxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNMTQuOTk4OCAyMEMxNC44MjYzIDIwIDE0LjY4NjMgMjAuMTQgMTQuNjg3NSAyMC4zMTI1QzE0LjY4NzUgMjAuNDg1IDE0LjgyNzUgMjAuNjI1IDE1IDIwLjYyNUMxNS4xNzI1IDIwLjYyNSAxNS4zMTI1IDIwLjQ4NSAxNS4zMTI1IDIwLjMxMjVDMTUuMzEyNSAyMC4xNCAxNS4xNzI1IDIwIDE0Ljk5ODggMjBcIlxuICAgICAgICAgIHN0cm9rZT1cIiMzMjMyMzJcIlxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0ZVR5cGUgPT09ICdEQVRFX09OTFknXCI+XG4gICAgPCEtLSBEYXRlIG9ubHkgcGlja2VyIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBoZWlnaHRcIlxuICAgICAgICAjZGF0ZXBpY2tlcllNRD1cImJzRGF0ZXBpY2tlclwiXG4gICAgICAgIGJzRGF0ZXBpY2tlclxuICAgICAgICBbbWluRGF0ZV09XCJtaW5EYXRlID8gbWluRGF0ZSA6IHVuZGVmaW5lZFwiXG4gICAgICAgIFttYXhEYXRlXT1cIm1heERhdGUgPyBtYXhEYXRlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgW2JzQ29uZmlnXT1cInsgZGF0ZUlucHV0Rm9ybWF0OiBmb3JtYXQsIGNvbnRhaW5lckNsYXNzOiAndGhlbWUtY3VzdG9tJyB9XCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZERhdGVcIlxuICAgICAgICAoYmx1cik9XCJ2YWxpZGF0ZUZpZWxkKClcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWxpZGF0ZUZpZWxkKClcIlxuICAgICAgICBbY2xhc3MuaW52YWxpZF09XCJ2YWxpZGF0aW9uRmFpbGVkXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgZGF0ZVwiXG4gICAgICAvPlxuICAgICAgPGlcbiAgICAgICAgY2xhc3M9XCJmYS1zb2xpZCBmYS1jYWxlbmRhci1kYXlzIGNhbGVuZGFyLWljb24gdGV4dC1wcmltYXJ5IGZzLTVcIlxuICAgICAgICAoY2xpY2spPVwib3BlbkRhdGVQaWNrZXIoKVwiXG4gICAgICA+PC9pPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJ2YWxpZGF0aW9uRmFpbGVkXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlciBtdC0yXCI+XG4gICAgICA8c3ZnXG4gICAgICAgIGNsYXNzPVwidmFsaWRhdGlvblN2Z1wiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgID5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBkPVwiTTEyLjAwMSAxNi43NUMxMi4xMzkgMTYuNzUgMTIuMjUxIDE2LjYzOCAxMi4yNSAxNi41QzEyLjI1IDE2LjM2MiAxMi4xMzggMTYuMjUgMTIgMTYuMjVDMTEuODYyIDE2LjI1IDExLjc1IDE2LjM2MiAxMS43NSAxNi41QzExLjc1IDE2LjYzOCAxMS44NjIgMTYuNzUgMTIuMDAxIDE2Ljc1XCJcbiAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgZD1cIk0xMiAyMUM3LjAyOSAyMSAzIDE2Ljk3MSAzIDEyQzMgNy4wMjkgNy4wMjkgMyAxMiAzQzE2Ljk3MSAzIDIxIDcuMDI5IDIxIDEyQzIxIDE2Ljk3MSAxNi45NzEgMjEgMTIgMjFaXCJcbiAgICAgICAgICBmaWxsPVwiI0ZGMDAwMFwiXG4gICAgICAgICAgc3Ryb2tlPVwiI0ZGMDAwMFwiXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZD1cIk0xMiAxMi43NUwxMiA3Ljc1XCJcbiAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTZcIiByPVwiMVwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICA8L3N2Zz5cbiAgICAgIHt7IHZhbGlkYXRpb25NZXNzYWdlIH19XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRlVHlwZSA9PT0gJ1RJTUVfT05MWSdcIj5cbiAgICA8IS0tIFRpbWUgcGlja2VyIC0tPlxuXG5cbjxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIj5cbiAgICAgIDxpbnB1dFxuICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgaGVpZ2h0IGFwcGVhcmFuY2VJbnB1dCBtdC0zXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJTZWxlY3QgdGltZVwiXG4gICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCB0aW1lXCJcbiAgICAgIHJlYWRvbmx5XG4gICAgICBbZm9ybWF0XT1cInRpbWVGb3JtYXQ9PT0nMjQnPzI0OjEyXCJcbiAgICAgIFtuZ3hUaW1lcGlja2VyXT1cImZ1bGxUaW1lM1wiXG4gICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVGltZVwiXG4gICAgICBbbWF4XT1cIm1heFRpbWVcIlxuICAgICAgW21pbl09XCJtaW5UaW1lXCJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbGlkYXRlRmllbGQoKVwiXG4gICAgICBbY2xhc3MuaW52YWxpZF09XCJ2YWxpZGF0aW9uRmFpbGVkXCJcbiAgLz5cbiAgXG4gIDxpXG4gIGlkPVwic3RhcnREYXRlSWNvblwiXG4gIGNsYXNzPVwiZmEtc29saWQgZmEtY2xvY2sgdGV4dC1wcmltYXJ5IGZzLTYgY2xvY2staWNvblwiXG4gIChjbGljayk9XCJmdWxsVGltZTMub3BlbigpXCJcbiAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCJcbj48L2k+XG4gIDxuZ3gtbWF0ZXJpYWwtdGltZXBpY2tlciAjZnVsbFRpbWUzPjwvbmd4LW1hdGVyaWFsLXRpbWVwaWNrZXI+XG48L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwidmFsaWRhdGlvbkZhaWxlZFwiIGNsYXNzPVwidGV4dC1kYW5nZXIgbXQtMlwiPlxuICAgICAgPHN2Z1xuICAgICAgICBjbGFzcz1cInZhbGlkYXRpb25TdmdcIlxuICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICA+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZD1cIk0xMi4wMDEgMTYuNzVDMTIuMTM5IDE2Ljc1IDEyLjI1MSAxNi42MzggMTIuMjUgMTYuNUMxMi4yNSAxNi4zNjIgMTIuMTM4IDE2LjI1IDEyIDE2LjI1QzExLjg2MiAxNi4yNSAxMS43NSAxNi4zNjIgMTEuNzUgMTYuNUMxMS43NSAxNi42MzggMTEuODYyIDE2Ljc1IDEyLjAwMSAxNi43NVwiXG4gICAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGQ9XCJNMTIgMjFDNy4wMjkgMjEgMyAxNi45NzEgMyAxMkMzIDcuMDI5IDcuMDI5IDMgMTIgM0MxNi45NzEgMyAyMSA3LjAyOSAyMSAxMkMyMSAxNi45NzEgMTYuOTcxIDIxIDEyIDIxWlwiXG4gICAgICAgICAgZmlsbD1cIiNGRjAwMDBcIlxuICAgICAgICAgIHN0cm9rZT1cIiNGRjAwMDBcIlxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNMTIgMTIuNzVMMTIgNy43NVwiXG4gICAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAvPlxuICAgICAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjE2XCIgcj1cIjFcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgPC9zdmc+XG4gICAgICB7eyB2YWxpZGF0aW9uTWVzc2FnZSB9fVxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0ZVR5cGUgPT09ICdEQVRFX0FORF9USU1FJ1wiPlxuICAgIDwhLS0gRGF0ZSBhbmQgdGltZSBwaWNrZXIgLS0+XG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiPlxuICAgICAgPGlucHV0XG4gICAgICAgICNkYXRlQW5kVGltZVBpY2tlcj1cImJzRGF0ZXBpY2tlclwiXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgaGVpZ2h0XCJcbiAgICAgICAgW21pbkRhdGVdPVwibWluRGF0ZSA/IG1pbkRhdGUgOiB1bmRlZmluZWRcIlxuICAgICAgICBbbWF4RGF0ZV09XCJtYXhEYXRlID8gbWF4RGF0ZSA6IHVuZGVmaW5lZFwiXG4gICAgICAgIFtic0NvbmZpZ109XCJ7XG4gICAgICAgICAgZGF0ZUlucHV0Rm9ybWF0OiBmb3JtYXQsIGNvbnRhaW5lckNsYXNzOiAndGhlbWUtY3VzdG9tJyBcbiAgICAgICAgfVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGRhdGVcIlxuICAgICAgICBic0RhdGVwaWNrZXJcbiAgICAgICAgW2NsYXNzLmludmFsaWRdPVwidmFsaWRhdGlvbkZhaWxlZFwiXG4gICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWREYXRlQW5kVGltZVwiXG4gICAgICAgIChibHVyKT1cInZhbGlkYXRlRmllbGQoKVwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbGlkYXRlRmllbGQoKVwiXG4gICAgICAvPlxuICAgICAgPGlcbiAgICAgICAgY2xhc3M9XCJmYS1zb2xpZCBmYS1jYWxlbmRhci1kYXlzIGNhbGVuZGFyLWljb24gdGV4dC1wcmltYXJ5IGZzLTVcIlxuICAgICAgICAoY2xpY2spPVwib3BlbkRhdGVBbmRUaW1lUGlja2VyKClcIlxuICAgICAgPjwvaT5cbiAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIiAqbmdJZj1cInNlbGVjdGVkRGF0ZUFuZFRpbWUgJiYgc2VsZWN0ZWREYXRlQW5kVGltZSAhPSBudWxsXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICBcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgaGVpZ2h0IGFwcGVhcmFuY2VJbnB1dCBtdC0zXCJcbiAgICAgICAgYXJpYS1sYWJlbD1cIlNlbGVjdCB0aW1lXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgdGltZVwiXG4gICAgICAgIHJlYWRvbmx5XG4gICAgICAgIFtmb3JtYXRdPVwidGltZUZvcm1hdD09PScyNCc/MjQ6MTJcIlxuICAgICAgICBbbmd4VGltZXBpY2tlcl09XCJmdWxsVGltZTRcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVGltZVwiXG4gICAgICAgIFttYXhdPVwibWF4VGltZVwiXG4gICAgICAgIFttaW5dPVwibWluVGltZVwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbGlkYXRlRmllbGQoKVwiXG4gICAgICAgIChmb2N1cyk9XCJjbG9zZURhdGVwaWNrZXIoKVwiXG4gICAgICAgIFtjbGFzcy5pbnZhbGlkXT1cInRpbWVWYWxpZGF0aW9uRmFpbGVkXCJcbiAgICAvPlxuICAgIFxuICAgIDxpXG4gICAgaWQ9XCJzdGFydERhdGVJY29uXCJcbiAgICBjbGFzcz1cImZhLXNvbGlkIGZhLWNsb2NrIHRleHQtcHJpbWFyeSBmcy02IGNsb2NrLWljb25cIlxuICAgIChjbGljayk9XCJmdWxsVGltZTQub3BlbigpXCJcbiAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIlxuICA+PC9pPlxuICAgIDxuZ3gtbWF0ZXJpYWwtdGltZXBpY2tlciAjZnVsbFRpbWU0Pjwvbmd4LW1hdGVyaWFsLXRpbWVwaWNrZXI+XG4gIDwvZGl2PlxuICAgXG4gICAgPGRpdiAqbmdJZj1cInZhbGlkYXRpb25GYWlsZWQgfHwgdGltZVZhbGlkYXRpb25GYWlsZWRcIiBjbGFzcz1cInRleHQtZGFuZ2VyIG10LTJcIj5cbiAgICAgIDxzdmdcbiAgICAgICAgY2xhc3M9XCJ2YWxpZGF0aW9uU3ZnXCJcbiAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNMTIuMDAxIDE2Ljc1QzEyLjEzOSAxNi43NSAxMi4yNTEgMTYuNjM4IDEyLjI1IDE2LjVDMTIuMjUgMTYuMzYyIDEyLjEzOCAxNi4yNSAxMiAxNi4yNUMxMS44NjIgMTYuMjUgMTEuNzUgMTYuMzYyIDExLjc1IDE2LjVDMTEuNzUgMTYuNjM4IDExLjg2MiAxNi43NSAxMi4wMDEgMTYuNzVcIlxuICAgICAgICAgIHN0cm9rZT1cIndoaXRlXCJcbiAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICBkPVwiTTEyIDIxQzcuMDI5IDIxIDMgMTYuOTcxIDMgMTJDMyA3LjAyOSA3LjAyOSAzIDEyIDNDMTYuOTcxIDMgMjEgNy4wMjkgMjEgMTJDMjEgMTYuOTcxIDE2Ljk3MSAyMSAxMiAyMVpcIlxuICAgICAgICAgIGZpbGw9XCIjRkYwMDAwXCJcbiAgICAgICAgICBzdHJva2U9XCIjRkYwMDAwXCJcbiAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBkPVwiTTEyIDEyLjc1TDEyIDcuNzVcIlxuICAgICAgICAgIHN0cm9rZT1cIndoaXRlXCJcbiAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxNlwiIHI9XCIxXCIgZmlsbD1cIndoaXRlXCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgICAge3sgdmFsaWRhdGlvbk1lc3NhZ2UgfX1cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGVUeXBlID09PSAnREFURV9SQU5HRSdcIj5cbiAgICA8IS0tIERhdGUgcmFuZ2UgcGlja2VyIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGhlaWdodFwiXG4gICAgICAgICNkYXRlcmFuZ2VwaWNrZXI9XCJic0RhdGVyYW5nZXBpY2tlclwiXG4gICAgICAgIGJzRGF0ZXJhbmdlcGlja2VyXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGRhdGVcIlxuICAgICAgICBbbWluRGF0ZV09XCJtaW5EYXRlID8gbWluRGF0ZSA6IHVuZGVmaW5lZFwiXG4gICAgICAgIFttYXhEYXRlXT1cIm1heERhdGUgPyBtYXhEYXRlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgW2JzQ29uZmlnXT1cIntcbiAgICAgICAgICByYW5nZUlucHV0Rm9ybWF0OiBmb3JtYXQsXG4gICAgICAgICAgZGF0ZUlucHV0Rm9ybWF0OiBmb3JtYXQsIGNvbnRhaW5lckNsYXNzOiAndGhlbWUtY3VzdG9tJyBcbiAgICAgICAgfVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWREYXRlUmFuZ2VcIlxuICAgICAgICAoYmx1cik9XCJ2YWxpZGF0ZUZpZWxkKClcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWxpZGF0ZUZpZWxkKClcIlxuICAgICAgICBbY2xhc3MuaW52YWxpZF09XCJ2YWxpZGF0aW9uRmFpbGVkXCJcbiAgICAgIC8+XG4gICAgICA8aVxuICAgICAgICBjbGFzcz1cImZhLXNvbGlkIGZhLWNhbGVuZGFyLWRheXMgY2FsZW5kYXItaWNvbiB0ZXh0LXByaW1hcnkgZnMtNVwiXG4gICAgICAgIChjbGljayk9XCJvcGVuRGF0ZVJhbmdlUGlja2VyKClcIlxuICAgICAgPjwvaT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwidmFsaWRhdGlvbkZhaWxlZFwiIGNsYXNzPVwidGV4dC1kYW5nZXIgbXQtMlwiPlxuICAgICAgPHN2Z1xuICAgICAgICBjbGFzcz1cInZhbGlkYXRpb25TdmdcIlxuICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICA+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZD1cIk0xMi4wMDEgMTYuNzVDMTIuMTM5IDE2Ljc1IDEyLjI1MSAxNi42MzggMTIuMjUgMTYuNUMxMi4yNSAxNi4zNjIgMTIuMTM4IDE2LjI1IDEyIDE2LjI1QzExLjg2MiAxNi4yNSAxMS43NSAxNi4zNjIgMTEuNzUgMTYuNUMxMS43NSAxNi42MzggMTEuODYyIDE2Ljc1IDEyLjAwMSAxNi43NVwiXG4gICAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGQ9XCJNMTIgMjFDNy4wMjkgMjEgMyAxNi45NzEgMyAxMkMzIDcuMDI5IDcuMDI5IDMgMTIgM0MxNi45NzEgMyAyMSA3LjAyOSAyMSAxMkMyMSAxNi45NzEgMTYuOTcxIDIxIDEyIDIxWlwiXG4gICAgICAgICAgZmlsbD1cIiNGRjAwMDBcIlxuICAgICAgICAgIHN0cm9rZT1cIiNGRjAwMDBcIlxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNMTIgMTIuNzVMMTIgNy43NVwiXG4gICAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAvPlxuICAgICAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjE2XCIgcj1cIjFcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgPC9zdmc+XG4gICAgICB7eyB2YWxpZGF0aW9uTWVzc2FnZSB9fVxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
424
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLWZpZWxkcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL2Zvcm0tZmllbGRzL2RhdGUtdGltZS1maWVsZHMvZGF0ZS10aW1lLWZpZWxkcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL2Zvcm0tZmllbGRzL2RhdGUtdGltZS1maWVsZHMvZGF0ZS10aW1lLWZpZWxkcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFjL0UsTUFBTSxPQUFPLHVCQUF1QjtJQW9DbEMsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQW5DdEMsYUFBUSxHQUFnQztZQUN0QyxjQUFjLEVBQUUsY0FBYztZQUM5QixVQUFVLEVBQUUsSUFBSTtZQUNoQixnQkFBZ0IsRUFBRSxJQUFJO1lBQ3RCLGVBQWUsRUFBRSxLQUFLO1NBQ3ZCLENBQUM7UUFFTyxhQUFRLEdBQVEsRUFBRSxDQUFDO1FBQzVCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUNsQixVQUFLLEdBQVcsQ0FBQyxDQUFDO1FBQ2xCLFlBQU8sR0FBVyxFQUFFLENBQUM7UUFDckIsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQixhQUFRLEdBQVcsRUFBRSxDQUFDO1FBQ3RCLFdBQU0sR0FBVyxFQUFFLENBQUM7UUFDcEIsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLGtCQUFhLEdBQVcsRUFBRSxD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U0FDYjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzsrR0F0Y1UsdUJBQXVCO21HQUF2Qix1QkFBdUIsaUZBSHZCLENBQUMsUUFBUSxDQUFDLHFWQ1p2Qiw0c1dBcVRBOzs0RkR0U2EsdUJBQXVCO2tCQVBuQyxTQUFTOytCQUNFLHNCQUFzQixhQUdyQixDQUFDLFFBQVEsQ0FBQyxpQkFDTixpQkFBaUIsQ0FBQyxJQUFJOytGQVU1QixRQUFRO3NCQUFoQixLQUFLO2dCQXlCc0IsVUFBVTtzQkFBckMsU0FBUzt1QkFBQyxlQUFlO2dCQUNJLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCO2dCQUNJLGlCQUFpQjtzQkFBaEQsU0FBUzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBCc0RhdGVwaWNrZXJDb25maWcsXHJcbiAgQnNEYXRlcGlja2VyRGlyZWN0aXZlLFxyXG59IGZyb20gJ25neC1ib290c3RyYXAvZGF0ZXBpY2tlcic7XHJcbmltcG9ydCB7IE5neE1hdGVyaWFsVGltZXBpY2tlckNvbXBvbmVudCB9IGZyb20gJ25neC1tYXRlcmlhbC10aW1lcGlja2VyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWRhdGUtdGltZS1maWVsZHMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLXRpbWUtZmllbGRzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kYXRlLXRpbWUtZmllbGRzLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbRGF0ZVBpcGVdLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGVUaW1lRmllbGRzQ29tcG9uZW50IHtcclxuICBic0NvbmZpZzogUGFydGlhbDxCc0RhdGVwaWNrZXJDb25maWc+ID0ge1xyXG4gICAgY29udGFpbmVyQ2xhc3M6ICd0aGVtZS1jdXN0b20nLFxyXG4gICAgaXNBbmltYXRlZDogdHJ1ZSxcclxuICAgIGFkYXB0aXZlUG9zaXRpb246IHRydWUsXHJcbiAgICBzaG93V2Vla051bWJlcnM6IGZhbHNlLFxyXG4gIH07XHJcblxyXG4gIEBJbnB1dCgpIHF1ZXN0aW9uOiBhbnkgPSB7fTtcclxuICByZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGhpbnQ6IHN0cmluZyA9ICcnO1xyXG4gIGNvdW50OiBudW1iZXIgPSAwO1xyXG4gIG1pblRpbWU6IHN0cmluZyA9ICcnO1xyXG4gIG1heFRpbWU6IHN0cmluZyA9ICcnO1xyXG4gIGRhdGVUeXBlOiBzdHJpbmcgPSAnJztcclxuICBmb3JtYXQ6IHN0cmluZyA9ICcnO1xyXG4gIERhdGVmb3JtYXQ6IHN0cmluZyA9ICcnO1xyXG4gIHRpbWVGb3JtYXQ6IHN0cmluZyA9ICcnO1xyXG4gIG1pbkRhdGVPcHRpb246IHN0cmluZyA9ICcnO1xyXG4gIG1pbkRhdGU6IERhdGUgfCB1bmRlZmluZWQ7XHJcbiAgbWF4RGF0ZU9wdGlvbjogc3RyaW5nID0gJyc7XHJcbiAgbWF4RGF0ZTogRGF0ZSB8IHVuZGVmaW5lZDtcclxuICB0b2RheURhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gIHNlbGVjdGVkRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xyXG4gIHNlbGVjdGVkVGltZTogc3RyaW5nID0gJyc7XHJcbiAgc2VsZWN0ZWREYXRlUmFuZ2U6IHN0cmluZyA9ICcnO1xyXG4gIHNlbGVjdGVkRGF0ZUFuZFRpbWU6IERhdGUgfCBudWxsID0gbnVsbDtcclxuICB2YWxpZGF0aW9uRmFpbGVkITogYm9vbGVhbjtcclxuICB0aW1lVmFsaWRhdGlvbkZhaWxlZCE6IGJvb2xlYW47XHJcbiAgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZyA9ICcnO1xyXG4gIG1heFRpbWVPcHRpb246IHN0cmluZyA9ICcnO1xyXG4gIG1pblRpbWVPcHRpb246IHN0cmluZyA9ICcnO1xyXG5cclxuICBAVmlld0NoaWxkKCdkYXRlcGlja2VyWU1EJykgZGF0ZXBpY2tlciE6IEJzRGF0ZXBpY2tlckRpcmVjdGl2ZTtcclxuICBAVmlld0NoaWxkKCdkYXRlcmFuZ2VwaWNrZXInKSBkYXRlUmFuZ2VQaWNrZXIhOiBCc0RhdGVwaWNrZXJEaXJlY3RpdmU7XHJcbiAgQFZpZXdDaGlsZCgnZGF0ZUFuZFRpbWVQaWNrZXInKSBkYXRlQW5kVGltZVBpY2tlciE6IEJzRGF0ZXBpY2tlckRpcmVjdGl2ZTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy52YWx1ZUFzc2lnbmVkKCk7XHJcbiAgfVxyXG5cclxuICB2YWx1ZUFzc2lnbmVkKCkge1xyXG5cclxuICAgIHRoaXMuY291bnQgPSB0aGlzLnF1ZXN0aW9uLmNvdW50O1xyXG4gICAgdGhpcy5yZXF1aXJlZCA9IHRoaXMucXVlc3Rpb24ucmVxdWlyZWQ7XHJcbiAgICB0aGlzLmhpbnQgPSB0aGlzLnF1ZXN0aW9uLmhpbnQ7XHJcbiAgICB0aGlzLmRhdGVUeXBlID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC5hcHBlYXJhbmNlLmRhdGVUeXBlO1xyXG4gICAgdGhpcy5taW5EYXRlT3B0aW9uID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC52YWxpZGF0aW9uLm1pbkRhdGVPcHRpb247XHJcbiAgICB0aGlzLkRhdGVmb3JtYXQgPSB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50LmFwcGVhcmFuY2UuZm9ybWF0LnJlcGxhY2UoL0REL2csICdkZCcpO1xyXG5cclxuXHJcbiAgICB0aGlzLm1pbkRhdGUgPSB0aGlzLmdldE1pbkRhdGUoKTtcclxuXHJcblxyXG4gICAgdGhpcy5tYXhEYXRlT3B0aW9uID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC52YWxpZGF0aW9uLm1heERhdGVPcHRpb247XHJcbiAgICB0aGlzLm1heERhdGUgPSB0aGlzLmdldE1heERhdGUoKTtcclxuICAgIHRoaXMuc2V0RGF0ZVRpbWVGb3JtYXQoKTtcclxuICAgIGlmICh0aGlzLnF1ZXN0aW9uPy5hbnN3ZXIgJiYgKHRoaXMucXVlc3Rpb24/LmFuc3dlcikubGVuZ3RoID4gMClcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSB0aGlzLnF1ZXN0aW9uPy5hbnN3ZXI7XHJcbiAgICB0aGlzLnNlbGVjdGVkVGltZSA9IHRoaXMucXVlc3Rpb24uYW5zd2VyO1xyXG4gICAgaWYgKHRoaXMucXVlc3Rpb24/LmFuc3dlciAmJiAodGhpcy5xdWVzdGlvbj8uYW5zd2VyKS5sZW5ndGggPiAwKVxyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZUFuZFRpbWUgPSBuZXcgRGF0ZSh0aGlzLnF1ZXN0aW9uLmFuc3dlcik7XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlID0gdGhpcy5xdWVzdGlvbi5hbnN3ZXI7XHJcbiAgICB0aGlzLm1pblRpbWVPcHRpb24gPSB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50LnZhbGlkYXRpb24ubWluVGltZU9wdGlvbjtcclxuICAgIHRoaXMubWF4VGltZU9wdGlvbiA9IHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQudmFsaWRhdGlvbi5tYXhUaW1lT3B0aW9uO1xyXG4gICAgaWYgKHRoaXMuZGF0ZVR5cGUgIT09ICdEQVRFX0FORF9USU1FJykge1xyXG4gICAgICB0aGlzLm1pblRpbWUgPSB0aGlzLmdldE1pblRpbWUoKS50b1N0cmluZygpO1xyXG4gICAgICB0aGlzLm1heFRpbWUgPSB0aGlzLmdldE1heFRpbWUoKS50b1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZGF0ZVR5cGUgPT09ICdEQVRFX0FORF9USU1FJyAmJiB0aGlzLnF1ZXN0aW9uPy5hbnN3ZXIpIHtcclxuICAgICAgY29uc3QgZGF0ZVRpbWVBcnJheSA9IHRoaXMucXVlc3Rpb24uYW5zd2VyXHJcbiAgICAgICAgPyB0aGlzLnF1ZXN0aW9uLmFuc3dlci5zcGxpdCgnLCcpXHJcbiAgICAgICAgOiBbXTsgLy8gRmFsbGJhY2sgdG8gYW4gZW1wdHkgYXJyYXkgaWYgYHRoaXMucXVlc3Rpb24uYW5zd2VyYCBpcyB1bmRlZmluZWRcclxuXHJcbiAgICAgIGlmIChkYXRlVGltZUFycmF5Lmxlbmd0aCA9PT0gMikge1xyXG4gICAgICAgIGNvbnN0IGZldGNoZWREYXRlID0gZGF0ZVRpbWVBcnJheVswXS50cmltKCk7XHJcbiAgICAgICAgY29uc3QgZmV0Y2hlZFRpbWUgPSBkYXRlVGltZUFycmF5WzFdLnRyaW0oKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IGZldGNoZWREYXRlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lID0gZmV0Y2hlZFRpbWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLnNlbGVjdGVkRGF0ZUFuZFRpbWUsIHRoaXMuRGF0ZWZvcm1hdCk7XHJcbiAgICAgIGNvbnN0IGZvcm1hdHRlbWluRGF0ZSA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMubWluRGF0ZSwgdGhpcy5EYXRlZm9ybWF0KTtcclxuICAgICAgY29uc3QgZm9ybWF0dGVtYXhEYXRlID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5tYXhEYXRlLCB0aGlzLkRhdGVmb3JtYXQpO1xyXG5cclxuICAgICAgaWYgKGZvcm1hdHRlZERhdGUgPT09IGZvcm1hdHRlbWluRGF0ZSkge1xyXG4gICAgICAgIHRoaXMubWluVGltZSA9IHRoaXMuZ2V0TWluVGltZSgpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgaWYgKHRoaXMudGltZUZvcm1hdCA9PT0gJzEyJykge1xyXG4gICAgICAgICAgdGhpcy5tYXhUaW1lID0gJzEyOjAwIHBtJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5tYXhUaW1lID0gJzIzOjAwJztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGZvcm1hdHRlZERhdGUgPT09IGZvcm1hdHRlbWF4RGF0ZSkge1xyXG4gICAgICAgIHRoaXMubWF4VGltZSA9IHRoaXMuZ2V0TWF4VGltZSgpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgaWYgKHRoaXMudGltZUZvcm1hdCA9PT0gJzEyJykge1xyXG4gICAgICAgICAgdGhpcy5taW5UaW1lID0gJzEyOjAwIGFtJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5taW5UaW1lID0gJzAwOjAwJztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGZvcm1hdHRlZERhdGUgIT09IGZvcm1hdHRlbWluRGF0ZSAmJiBmb3JtYXR0ZWREYXRlICE9PSBmb3JtYXR0ZW1heERhdGUpIHtcclxuICAgICAgICBpZiAodGhpcy50aW1lRm9ybWF0ID09PSAnMTInKSB7XHJcbiAgICAgICAgICB0aGlzLm1pblRpbWUgPSAnMTI6MDAgYW0nO1xyXG4gICAgICAgICAgdGhpcy5tYXhUaW1lID0gJzEyOjAwIHBtJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5taW5UaW1lID0gJzAwOjAwJztcclxuICAgICAgICAgIHRoaXMubWF4VGltZSA9ICcyMzowMCc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBpZiAoIXRoaXMubWluVGltZSB8fCB0aGlzLm1pblRpbWUubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIGlmICh0aGlzLnRpbWVGb3JtYXQgPT09ICcxMicpIHtcclxuICAgICAgICB0aGlzLm1pblRpbWUgPSAnMTI6MDAgYW0nO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubWluVGltZSA9ICcwMDowMCc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMubWF4VGltZSB8fCB0aGlzLm1heFRpbWUubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIGlmICh0aGlzLnRpbWVGb3JtYXQgPT09ICcxMicpIHtcclxuICAgICAgICB0aGlzLm1heFRpbWUgPSAnMTI6MDAgcG0nO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubWF4VGltZSA9ICcyMzowMCc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG5cclxuICB9XHJcblxyXG4gIHNldERhdGVUaW1lRm9ybWF0KCkge1xyXG4gICAgc3dpdGNoICh0aGlzLmRhdGVUeXBlKSB7XHJcbiAgICAgIGNhc2UgJ0RBVEVfT05MWSc6XHJcbiAgICAgICAgdGhpcy5mb3JtYXQgPSB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50LmFwcGVhcmFuY2UuZm9ybWF0O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdUSU1FX09OTFknOlxyXG4gICAgICAgIHRoaXMudGltZUZvcm1hdCA9IHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQuYXBwZWFyYW5jZS50aW1lRm9ybWF0O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdEQVRFX0FORF9USU1FJzpcclxuICAgICAgICB0aGlzLmZvcm1hdCA9IHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQuYXBwZWFyYW5jZS5mb3JtYXQ7XHJcbiAgICAgICAgdGhpcy50aW1lRm9ybWF0ID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC5hcHBlYXJhbmNlLnRpbWVGb3JtYXQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ0RBVEVfUkFOR0UnOlxyXG4gICAgICAgIHRoaXMuZm9ybWF0ID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC5hcHBlYXJhbmNlLmZvcm1hdDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLmZvcm1hdCA9ICdERC9NTS9ZWVlZJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldE1pbkRhdGUoKTogRGF0ZSB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAodGhpcy5taW5EYXRlT3B0aW9uID09PSAnQ1VSUkVOVF9EQVRFJykge1xyXG4gICAgICByZXR1cm4gdGhpcy50b2RheURhdGU7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMubWluRGF0ZU9wdGlvbiA9PT0gJ0NVU1RPTScpIHtcclxuICAgICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQudmFsaWRhdGlvbi5taW5EYXRlKTtcclxuICAgIH1cclxuICAgIHJldHVybiB1bmRlZmluZWQ7IC8vIFJldHVybiB1bmRlZmluZWQgaWYgbm8gdmFsaWQgb3B0aW9uXHJcbiAgfVxyXG5cclxuICBnZXRNYXhEYXRlKCk6IERhdGUgfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKHRoaXMubWF4RGF0ZU9wdGlvbiA9PT0gJ0NVUlJFTlRfREFURScpIHtcclxuICAgICAgcmV0dXJuIHRoaXMudG9kYXlEYXRlO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLm1heERhdGVPcHRpb24gPT09ICdDVVNUT00nKSB7XHJcbiAgICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50LnZhbGlkYXRpb24ubWF4RGF0ZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0TWluVGltZSgpIHtcclxuICAgIGlmICh0aGlzLm1pblRpbWVPcHRpb24pIHtcclxuICAgICAgY29uc3QgZm9ybWF0ID0gdGhpcy50aW1lRm9ybWF0ID09PSAnMjQnID8gJ0hIOm1tJyA6ICdoaDptbSBhJztcclxuXHJcbiAgICAgIGlmICh0aGlzLm1pblRpbWVPcHRpb24gPT09ICdDVVJSRU5UX1RJTUUnKSB7XHJcbiAgICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0obm93LCBmb3JtYXQpIHx8ICcnO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMubWluVGltZU9wdGlvbiA9PT0gJ0NVU1RPTScpIHtcclxuICAgICAgICBjb25zdCBjdXN0b21UaW1lID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC52YWxpZGF0aW9uLm1pblRpbWU7XHJcbiAgICAgICAgY29uc3QgW2hvdXJzLCBtaW51dGVzXSA9IGN1c3RvbVRpbWUuc3BsaXQoJzonKTsgLy8gU3BsaXQgYnkgY29sb24gdG8gZ2V0IGhvdXJzIGFuZCBtaW51dGVzXHJcblxyXG4gICAgICAgIC8vIENyZWF0ZSBhIERhdGUgb2JqZWN0IHdpdGggYSBmaXhlZCBkYXRlIGFuZCBjdXN0b20gdGltZVxyXG4gICAgICAgIGNvbnN0IGN1c3RvbURhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIGN1c3RvbURhdGUuc2V0SG91cnMocGFyc2VJbnQoaG91cnMsIDEwKSwgcGFyc2VJbnQobWludXRlcywgMTApLCAwLCAwKTsgLy8gU2V0IGhvdXJzIGFuZCBtaW51dGVzXHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShjdXN0b21EYXRlLCBmb3JtYXQpIHx8ICcnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRW5zdXJlIGEgZGVmYXVsdCByZXR1cm4gaWYgbm8gY29uZGl0aW9uIGlzIG1ldFxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldE1heFRpbWUoKSB7XHJcbiAgICBpZiAodGhpcy5tYXhUaW1lT3B0aW9uKSB7XHJcbiAgICAgIGNvbnN0IGZvcm1hdCA9IHRoaXMudGltZUZvcm1hdCA9PT0gJzI0JyA/ICdISDptbScgOiAnaGg6bW0gYSc7XHJcbiAgICAgIGlmICh0aGlzLm1heFRpbWVPcHRpb24gPT09ICdDVVJSRU5UX1RJTUUnKSB7XHJcbiAgICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0obm93LCBmb3JtYXQpIHx8ICcnO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMubWF4VGltZU9wdGlvbiA9PT0gJ0NVU1RPTScpIHtcclxuICAgICAgICBjb25zdCBjdXN0b21UaW1lID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC52YWxpZGF0aW9uLm1heFRpbWU7XHJcbiAgICAgICAgY29uc3QgW2hvdXJzLCBtaW51dGVzXSA9IGN1c3RvbVRpbWUuc3BsaXQoJzonKTsgLy8gU3BsaXQgYnkgY29sb24gdG8gZ2V0IGhvdXJzIGFuZCBtaW51dGVzXHJcblxyXG4gICAgICAgIC8vIENyZWF0ZSBhIERhdGUgb2JqZWN0IHdpdGggYSBmaXhlZCBkYXRlIGFuZCBjdXN0b20gdGltZVxyXG4gICAgICAgIGNvbnN0IGN1c3RvbURhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIGN1c3RvbURhdGUuc2V0SG91cnMocGFyc2VJbnQoaG91cnMsIDEwKSwgcGFyc2VJbnQobWludXRlcywgMTApLCAwLCAwKTsgLy8gU2V0IGhvdXJzIGFuZCBtaW51dGVzXHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShjdXN0b21EYXRlLCBmb3JtYXQpIHx8ICcnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgb3BlbkRhdGVQaWNrZXIoKSB7ICAgIFxyXG4gICAgdGhpcy5kYXRlcGlja2VyLnRvZ2dsZSgpO1xyXG4gIH1cclxuXHJcbiAgb3BlbkRhdGVSYW5nZVBpY2tlcigpIHtcclxuICAgIHRoaXMuZGF0ZVJhbmdlUGlja2VyLnRvZ2dsZSgpO1xyXG4gIH1cclxuXHJcbiAgb3BlbkRhdGVBbmRUaW1lUGlja2VyKCkge1xyXG4gICAgdGhpcy5kYXRlQW5kVGltZVBpY2tlci50b2dnbGUoKTtcclxuICB9XHJcblxyXG4gIGNsb3NlRGF0ZXBpY2tlcigpIHtcclxuICAgIGlmICh0aGlzLmRhdGVBbmRUaW1lUGlja2VyKSB7XHJcbiAgICAgIHRoaXMuZGF0ZUFuZFRpbWVQaWNrZXIuaGlkZSgpOyAvLyBDbG9zZSB0aGUgZGF0ZXBpY2tlclxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbiAgdmFsaWRhdGVGaWVsZCgpIHtcclxuICAgIGlmICh0aGlzLmRhdGVUeXBlID09PSAnREFURV9PTkxZJykge1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZERhdGUpIHtcclxuICAgICAgICB0aGlzLnF1ZXN0aW9uLmFuc3dlciA9IHRoaXMuZm9ybWF0RGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZS50b1N0cmluZygpKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnF1ZXN0aW9uLmFuc3dlciA9ICcnO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnZhbGlkYXRlRGF0ZU9ubHkoKVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5kYXRlVHlwZSA9PT0gJ1RJTUVfT05MWScpIHtcclxuICAgICAgdGhpcy5xdWVzdGlvbi5hbnN3ZXIgPSBTdHJpbmcodGhpcy5zZWxlY3RlZFRpbWUpO1xyXG4gICAgICB0aGlzLnZhbGlkYXRlVGltZU9ubHkoKVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5kYXRlVHlwZSA9PT0gJ0RBVEVfQU5EX1RJTUUnKSB7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZUFuZFRpbWUpIHtcclxuICAgICAgICB0aGlzLnF1ZXN0aW9uLmFuc3dlciA9IHRoaXMuZm9ybWF0RGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZUFuZFRpbWUudG9TdHJpbmcoKSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5xdWVzdGlvbi5hbnN3ZXIgPSAnJztcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy52YWxpZGF0ZURhdGVBbmRUaW1lKClcclxuXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5xdWVzdGlvbi5hbnN3ZXIgPSB0aGlzLmZvcm1hdERhdGUodGhpcy5zZWxlY3RlZERhdGVSYW5nZSk7XHJcbiAgICAgIHRoaXMudmFsaWRhdGVEYXRlUmFuZ2UoKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9ybWF0RGF0ZShkYXRlOiBzdHJpbmcgfCBEYXRlLCB0eXBlOiBzdHJpbmcgPSAnZGF0ZVRpbWUnKTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAodGhpcy5kYXRlVHlwZSkge1xyXG4gICAgICBjYXNlICdEQVRFX09OTFknOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLnNlbGVjdGVkRGF0ZSwgdGhpcy5EYXRlZm9ybWF0KSB8fCAnJztcclxuICAgICAgY2FzZSAnREFURV9BTkRfVElNRSc6XHJcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuc2VsZWN0ZWREYXRlQW5kVGltZSwgdGhpcy5EYXRlZm9ybWF0KTtcclxuICAgICAgICBjb25zdCBmb3JtYXR0ZW1pbkRhdGUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLm1pbkRhdGUsIHRoaXMuRGF0ZWZvcm1hdCk7XHJcbiAgICAgICAgY29uc3QgZm9ybWF0dGVtYXhEYXRlID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5tYXhEYXRlLCB0aGlzLkRhdGVmb3JtYXQpO1xyXG4gICAgICAgIGlmIChmb3JtYXR0ZWREYXRlID09PSBmb3JtYXR0ZW1pbkRhdGUpIHtcclxuICAgICAgICAgIHRoaXMubWluVGltZSA9IHRoaXMuZ2V0TWluVGltZSgpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICBpZiAodGhpcy50aW1lRm9ybWF0ID09PSAnMTInKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWF4VGltZSA9ICcxMjowMCBwbSc7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm1heFRpbWUgPSAnMjM6MDAnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZm9ybWF0dGVkRGF0ZSA9PT0gZm9ybWF0dGVtYXhEYXRlKSB7XHJcbiAgICAgICAgICB0aGlzLm1heFRpbWUgPSB0aGlzLmdldE1heFRpbWUoKS50b1N0cmluZygpO1xyXG4gICAgICAgICAgaWYgKHRoaXMudGltZUZvcm1hdCA9PT0gJzEyJykge1xyXG4gICAgICAgICAgICB0aGlzLm1pblRpbWUgPSAnMTI6MDAgYW0nO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5taW5UaW1lID0gJzAwOjAwJztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZvcm1hdHRlZERhdGUgIT09IGZvcm1hdHRlbWluRGF0ZSAmJiBmb3JtYXR0ZWREYXRlICE9PSBmb3JtYXR0ZW1heERhdGUpIHtcclxuICAgICAgICAgIGlmICh0aGlzLnRpbWVGb3JtYXQgPT09ICcxMicpIHtcclxuICAgICAgICAgICAgdGhpcy5taW5UaW1lID0gJzEyOjAwIGFtJztcclxuICAgICAgICAgICAgdGhpcy5tYXhUaW1lID0gJzEyOjAwIHBtJztcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubWluVGltZSA9ICcwMDowMCc7XHJcbiAgICAgICAgICAgIHRoaXMubWF4VGltZSA9ICcyMzowMCc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZFRpbWUgPSB0aGlzLnNlbGVjdGVkVGltZSB8fCAnJzsgIC8vIElmIHNlbGVjdGVkVGltZSBpcyBudWxsIG9yIHVuZGVmaW5lZCwgdXNlIGVtcHR5IHN0cmluZ1xyXG4gICAgICAgIGlmIChmb3JtYXR0ZWREYXRlICYmIGZvcm1hdHRlZFRpbWUpIHtcclxuICAgICAgICAgIHJldHVybiBgJHtmb3JtYXR0ZWREYXRlfSwke2Zvcm1hdHRlZFRpbWV9YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICBjYXNlICdEQVRFX1JBTkdFJzpcclxuXHJcbiAgICAgICAgY29uc3QgZGF0ZXMgPSBkYXRlIGFzIHVua25vd24gYXMgRGF0ZVtdO1xyXG5cclxuICAgICAgICAvLyBFbnN1cmUgZGF0ZXMgaXMgZGVmaW5lZCBhbmQgaXMgYW4gYXJyYXlcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRlcykgJiYgZGF0ZXMubGVuZ3RoID09PSAyKSB7XHJcbiAgICAgICAgICBjb25zdCBzdGFydCA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGVzWzBdLCB0aGlzLkRhdGVmb3JtYXQpO1xyXG4gICAgICAgICAgY29uc3QgZW5kID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZGF0ZXNbMV0sIHRoaXMuRGF0ZWZvcm1hdCk7XHJcbiAgICAgICAgICByZXR1cm4gYCR7c3RhcnR9IC0gJHtlbmR9YDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZGF0ZSwgdGhpcy5EYXRlZm9ybWF0KSB8fCAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHZhbGlkYXRlRGF0ZU9ubHkoKSB7XHJcbiAgICB0aGlzLnZhbGlkYXRpb25GYWlsZWQgPSBmYWxzZTtcclxuICAgIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2UgPSAnJztcclxuICAgIGlmICh0aGlzLnJlcXVpcmVkICYmICF0aGlzLnNlbGVjdGVkRGF0ZSkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25GYWlsZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlID0gJ1RoaXMgaXMgYSByZXF1aXJlZCBxdWVzdGlvbic7XHJcbiAgICAgIHRoaXMucXVlc3Rpb24udmFsaWRhdGlvbiA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMucXVlc3Rpb24udmFsaWRhdGlvbiA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHZhbGlkYXRlVGltZU9ubHkoKSB7XHJcbiAgICB0aGlzLnZhbGlkYXRpb25GYWlsZWQgPSBmYWxzZTtcclxuICAgIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2UgPSAnJztcclxuICAgIGlmICh0aGlzLnJlcXVpcmVkICYmICF0aGlzLnNlbGVjdGVkVGltZSkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25GYWlsZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlID0gJ1RoaXMgaXMgYSByZXF1aXJlZCBxdWVzdGlvbic7O1xyXG4gICAgICB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRpb24gPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRpb24gPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuICB2YWxpZGF0ZURhdGVSYW5nZSgpIHtcclxuICAgIHRoaXMudmFsaWRhdGlvbkZhaWxlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy52YWxpZGF0aW9uTWVzc2FnZSA9ICcnO1xyXG4gICAgaWYgKHRoaXMucmVxdWlyZWQgJiYgIXRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UpIHtcclxuICAgICAgdGhpcy52YWxpZGF0aW9uRmFpbGVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy52YWxpZGF0aW9uTWVzc2FnZSA9ICdUaGlzIGlzIGEgcmVxdWlyZWQgcXVlc3Rpb24nO1xyXG4gICAgICB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRpb24gPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRpb24gPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuICB2YWxpZGF0ZURhdGVBbmRUaW1lKCkge1xyXG4gICAgdGhpcy52YWxpZGF0aW9uRmFpbGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLnRpbWVWYWxpZGF0aW9uRmFpbGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlID0gJyc7XHJcbiAgICBpZiAodGhpcy5yZXF1aXJlZCAmJiAhdGhpcy5zZWxlY3RlZERhdGVBbmRUaW1lKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvbkZhaWxlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2UgPSAnVGhpcyBpcyBhIHJlcXVpcmVkIHF1ZXN0aW9uJztcclxuICAgICAgdGhpcy5xdWVzdGlvbi52YWxpZGF0aW9uID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLnJlcXVpcmVkICYmICF0aGlzLnNlbGVjdGVkVGltZSkge1xyXG4gICAgICB0aGlzLnRpbWVWYWxpZGF0aW9uRmFpbGVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy52YWxpZGF0aW9uTWVzc2FnZSA9ICdUaGlzIGlzIGEgcmVxdWlyZWQgcXVlc3Rpb24nO1xyXG4gICAgICB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRpb24gPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRpb24gPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29udmVydFRvSVNPRGF0ZShcclxuICAgIGRhdGVJbnB1dDogW251bWJlciwgbnVtYmVyLCBudW1iZXJdIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxyXG4gICk6IERhdGUgfCBudWxsIHtcclxuXHJcblxyXG4gICAgaWYgKCFkYXRlSW5wdXQpIHtcclxuXHJcblxyXG4gICAgICByZXR1cm4gbnVsbDsgLy8gUmV0dXJuIG51bGwgaWYgZGF0ZUlucHV0IGlzIG51bGwsIHVuZGVmaW5lZCwgb3IgYW55IGZhbHN5IHZhbHVlXHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHllYXIsIG1vbnRoLCBkYXk7XHJcblxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0ZUlucHV0KSkge1xyXG4gICAgICAvLyBFeHRyYWN0IHllYXIsIG1vbnRoLCBhbmQgZGF5IGZyb20gYXJyYXkgaW5wdXRcclxuICAgICAgW3llYXIsIG1vbnRoLCBkYXldID0gZGF0ZUlucHV0O1xyXG5cclxuICAgICAgLy8gVmFsaWRhdGUgdGhlIGFycmF5IGZvcm1hdFxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdHlwZW9mIHllYXIgIT09ICdudW1iZXInIHx8XHJcbiAgICAgICAgdHlwZW9mIG1vbnRoICE9PSAnbnVtYmVyJyB8fFxyXG4gICAgICAgIHR5cGVvZiBkYXkgIT09ICdudW1iZXInIHx8XHJcbiAgICAgICAgaXNOYU4oeWVhcikgfHxcclxuICAgICAgICBpc05hTihtb250aCkgfHxcclxuICAgICAgICBpc05hTihkYXkpIHx8XHJcbiAgICAgICAgIU51bWJlci5pc0ludGVnZXIoeWVhcikgfHxcclxuICAgICAgICAhTnVtYmVyLmlzSW50ZWdlcihtb250aCkgfHxcclxuICAgICAgICAhTnVtYmVyLmlzSW50ZWdlcihkYXkpIHx8XHJcbiAgICAgICAgbW9udGggPCAxIHx8XHJcbiAgICAgICAgbW9udGggPiAxMiB8fFxyXG4gICAgICAgIGRheSA8IDEgfHxcclxuICAgICAgICBkYXkgPiAzMVxyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZGF0ZUlucHV0ID09PSAnc3RyaW5nJykge1xyXG4gICAgICAvLyBDaGVjayBpZiB0aGUgc3RyaW5nIG1hdGNoZXMgdGhlIFlZWVktTU0tREQgZm9ybWF0XHJcbiAgICAgIGNvbnN0IGRhdGVQYXJ0cyA9IGRhdGVJbnB1dC5zcGxpdCgnLScpO1xyXG4gICAgICBpZiAoZGF0ZVBhcnRzLmxlbmd0aCAhPT0gMykgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICBbeWVhciwgbW9udGgsIGRheV0gPSBkYXRlUGFydHMubWFwKE51bWJlcik7XHJcblxyXG4gICAgICAvLyBWYWxpZGF0ZSB0aGUgcGFyc2VkIHBhcnRzXHJcbiAgICAgIGlmIChcclxuICAgICAgICBpc05hTih5ZWFyKSB8fFxyXG4gICAgICAgIGlzTmFOKG1vbnRoKSB8fFxyXG4gICAgICAgIGlzTmFOKGRheSkgfHxcclxuICAgICAgICAhTnVtYmVyLmlzSW50ZWdlcih5ZWFyKSB8fFxyXG4gICAgICAgICFOdW1iZXIuaXNJbnRlZ2VyKG1vbnRoKSB8fFxyXG4gICAgICAgICFOdW1iZXIuaXNJbnRlZ2VyKGRheSkgfHxcclxuICAgICAgICBtb250aCA8IDEgfHxcclxuICAgICAgICBtb250aCA+IDEyIHx8XHJcbiAgICAgICAgZGF5IDwgMSB8fFxyXG4gICAgICAgIGRheSA+IDMxXHJcbiAgICAgICkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gbnVsbDsgLy8gVW5zdXBwb3J0ZWQgaW5wdXQgdHlwZVxyXG4gICAgfVxyXG5cclxuICAgIC8vIENyZWF0ZSBhIERhdGUgb2JqZWN0IChtb250aCBpcyAwLWJhc2VkLCBzbyBzdWJ0cmFjdCAxKVxyXG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoIC0gMSwgZGF5KTtcclxuXHJcbiAgICAvLyBWZXJpZnkgaWYgdGhlIERhdGUgb2JqZWN0IG1hdGNoZXMgdGhlIHByb3ZpZGVkIHllYXIsIG1vbnRoLCBhbmQgZGF5XHJcbiAgICBpZiAoXHJcbiAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSAhPT0geWVhciB8fFxyXG4gICAgICBkYXRlLmdldE1vbnRoKCkgIT09IG1vbnRoIC0gMSB8fFxyXG4gICAgICBkYXRlLmdldERhdGUoKSAhPT0gZGF5XHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRhdGU7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2ICBjbGFzcz1cIm1iLTUgcHgtM1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJpbnB1dC13cmFwcGVyIG1iLTJcIj5cclxuICAgIDxkaXYgW2lubmVySFRNTF09XCJxdWVzdGlvbi5xdWVzdGlvbk51bWJlclwiPjwvZGl2PlxyXG4gICAgJm5ic3A7Jm5ic3A7IDxsYWJlbD57eyBxdWVzdGlvbi5xdWVzdGlvbiB9fTwvbGFiZWxcclxuICAgID4mbmJzcDtcclxuICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIiAqbmdJZj1cInJlcXVpcmVkXCI+Kjwvc3Bhbj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJzdmctd3JhcHBlciBtYi0yIGhpbnRJY29uXCJcclxuICAgICAgW2F0dHIuZGF0YS10aXRsZV09XCJoaW50XCJcclxuICAgICAgKm5nSWY9XCJoaW50XCJcclxuICAgID5cclxuICAgICAgPHN2Z1xyXG4gICAgICAgIGNsYXNzPVwiaGludFN2Z1wiXHJcbiAgICAgICAgdmlld0JveD1cIjAgMCAzMCAzMFwiXHJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgID5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgIGQ9XCJNMTUgMjYuMjVWMjYuMjVDOC43ODYyNSAyNi4yNSAzLjc1IDIxLjIxMzggMy43NSAxNVYxNUMzLjc1IDguNzg2MjUgOC43ODYyNSAzLjc1IDE1IDMuNzVWMy43NUMyMS4yMTM4IDMuNzUgMjYuMjUgOC43ODYyNSAyNi4yNSAxNVYxNUMyNi4yNSAyMS4yMTM4IDIxLjIxMzggMjYuMjUgMTUgMjYuMjVaXCJcclxuICAgICAgICAgIHN0cm9rZT1cIiMzMjMyMzJcIlxyXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGQ9XCJNMTUgMTYuNTYyM1YxNi4yNDk4QzE1IDE1LjIyODUgMTUuNjMxMiAxNC42NzQ4IDE2LjI2MzcgMTQuMjQ5OEMxNi44ODEyIDEzLjgzMzUgMTcuNSAxMy4yOTEgMTcuNSAxMi4yOTFDMTcuNSAxMC45MDk4IDE2LjM4MTMgOS43OTEwMiAxNSA5Ljc5MTAyQzEzLjYxODcgOS43OTEwMiAxMi41IDEwLjkwOTggMTIuNSAxMi4yOTFcIlxyXG4gICAgICAgICAgc3Ryb2tlPVwiIzMyMzIzMlwiXHJcbiAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgZD1cIk0xNC45OTg4IDIwQzE0LjgyNjMgMjAgMTQuNjg2MyAyMC4xNCAxNC42ODc1IDIwLjMxMjVDMTQuNjg3NSAyMC40ODUgMTQuODI3NSAyMC42MjUgMTUgMjAuNjI1QzE1LjE3MjUgMjAuNjI1IDE1LjMxMjUgMjAuNDg1IDE1LjMxMjUgMjAuMzEyNUMxNS4zMTI1IDIwLjE0IDE1LjE3MjUgMjAgMTQuOTk4OCAyMFwiXHJcbiAgICAgICAgICBzdHJva2U9XCIjMzIzMjMyXCJcclxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRlVHlwZSA9PT0gJ0RBVEVfT05MWSdcIj5cclxuICAgIDwhLS0gRGF0ZSBvbmx5IHBpY2tlciAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIj5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgaGVpZ2h0XCJcclxuICAgICAgICAjZGF0ZXBpY2tlcllNRD1cImJzRGF0ZXBpY2tlclwiXHJcbiAgICAgICAgYnNEYXRlcGlja2VyXHJcbiAgICAgICAgW21pbkRhdGVdPVwibWluRGF0ZSA/IG1pbkRhdGUgOiB1bmRlZmluZWRcIlxyXG4gICAgICAgIFttYXhEYXRlXT1cIm1heERhdGUgPyBtYXhEYXRlIDogdW5kZWZpbmVkXCJcclxuICAgICAgICBbYnNDb25maWddPVwieyBkYXRlSW5wdXRGb3JtYXQ6IGZvcm1hdCwgY29udGFpbmVyQ2xhc3M6ICd0aGVtZS1jdXN0b20nIH1cIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWREYXRlXCJcclxuICAgICAgICAoYmx1cik9XCJ2YWxpZGF0ZUZpZWxkKClcIlxyXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbGlkYXRlRmllbGQoKVwiXHJcbiAgICAgICAgW2NsYXNzLmludmFsaWRdPVwidmFsaWRhdGlvbkZhaWxlZFwiXHJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgZGF0ZVwiXHJcbiAgICAgIC8+XHJcbiAgICAgIDxpXHJcbiAgICAgICAgY2xhc3M9XCJmYS1zb2xpZCBmYS1jYWxlbmRhci1kYXlzIGNhbGVuZGFyLWljb24gdGV4dC1wcmltYXJ5IGZzLTVcIlxyXG4gICAgICAgIChjbGljayk9XCJvcGVuRGF0ZVBpY2tlcigpXCJcclxuICAgICAgPjwvaT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cInZhbGlkYXRpb25GYWlsZWRcIiBjbGFzcz1cInRleHQtZGFuZ2VyIG10LTJcIj5cclxuICAgICAgPHN2Z1xyXG4gICAgICAgIGNsYXNzPVwidmFsaWRhdGlvblN2Z1wiXHJcbiAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXHJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgID5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgZD1cIk0xMi4wMDEgMTYuNzVDMTIuMTM5IDE2Ljc1IDEyLjI1MSAxNi42MzggMTIuMjUgMTYuNUMxMi4yNSAxNi4zNjIgMTIuMTM4IDE2LjI1IDEyIDE2LjI1QzExLjg2MiAxNi4yNSAxMS43NSAxNi4zNjIgMTEuNzUgMTYuNUMxMS43NSAxNi42MzggMTEuODYyIDE2Ljc1IDEyLjAwMSAxNi43NVwiXHJcbiAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgIGQ9XCJNMTIgMjFDNy4wMjkgMjEgMyAxNi45NzEgMyAxMkMzIDcuMDI5IDcuMDI5IDMgMTIgM0MxNi45NzEgMyAyMSA3LjAyOSAyMSAxMkMyMSAxNi45NzEgMTYuOTcxIDIxIDEyIDIxWlwiXHJcbiAgICAgICAgICBmaWxsPVwiI0ZGMDAwMFwiXHJcbiAgICAgICAgICBzdHJva2U9XCIjRkYwMDAwXCJcclxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBkPVwiTTEyIDEyLjc1TDEyIDcuNzVcIlxyXG4gICAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxyXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxNlwiIHI9XCIxXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICAgIHt7IHZhbGlkYXRpb25NZXNzYWdlIH19XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGVUeXBlID09PSAnVElNRV9PTkxZJ1wiPlxyXG4gICAgPCEtLSBUaW1lIHBpY2tlciAtLT5cclxuXHJcblxyXG48ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBoZWlnaHQgYXBwZWFyYW5jZUlucHV0IG10LTNcIlxyXG4gICAgICBhcmlhLWxhYmVsPVwiU2VsZWN0IHRpbWVcIlxyXG4gICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCB0aW1lXCJcclxuICAgICAgcmVhZG9ubHlcclxuICAgICAgW2Zvcm1hdF09XCJ0aW1lRm9ybWF0PT09JzI0Jz8yNDoxMlwiXHJcbiAgICAgIFtuZ3hUaW1lcGlja2VyXT1cImZ1bGxUaW1lM1wiXHJcbiAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUaW1lXCJcclxuICAgICAgW21heF09XCJtYXhUaW1lXCJcclxuICAgICAgW21pbl09XCJtaW5UaW1lXCJcclxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsaWRhdGVGaWVsZCgpXCJcclxuICAgICAgW2NsYXNzLmludmFsaWRdPVwidmFsaWRhdGlvbkZhaWxlZFwiXHJcbiAgLz5cclxuICBcclxuICA8aVxyXG4gIGlkPVwic3RhcnREYXRlSWNvblwiXHJcbiAgY2xhc3M9XCJmYS1zb2xpZCBmYS1jbG9jayB0ZXh0LXByaW1hcnkgZnMtNiBjbG9jay1pY29uXCJcclxuICAoY2xpY2spPVwiZnVsbFRpbWUzLm9wZW4oKVwiXHJcbiAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCJcclxuPjwvaT5cclxuICA8bmd4LW1hdGVyaWFsLXRpbWVwaWNrZXIgI2Z1bGxUaW1lMz48L25neC1tYXRlcmlhbC10aW1lcGlja2VyPlxyXG48L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJ2YWxpZGF0aW9uRmFpbGVkXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlciBtdC0yXCI+XHJcbiAgICAgIDxzdmdcclxuICAgICAgICBjbGFzcz1cInZhbGlkYXRpb25TdmdcIlxyXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxyXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGQ9XCJNMTIuMDAxIDE2Ljc1QzEyLjEzOSAxNi43NSAxMi4yNTEgMTYuNjM4IDEyLjI1IDE2LjVDMTIuMjUgMTYuMzYyIDEyLjEzOCAxNi4yNSAxMiAxNi4yNUMxMS44NjIgMTYuMjUgMTEuNzUgMTYuMzYyIDExLjc1IDE2LjVDMTEuNzUgMTYuNjM4IDExLjg2MiAxNi43NSAxMi4wMDEgMTYuNzVcIlxyXG4gICAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxyXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICBkPVwiTTEyIDIxQzcuMDI5IDIxIDMgMTYuOTcxIDMgMTJDMyA3LjAyOSA3LjAyOSAzIDEyIDNDMTYuOTcxIDMgMjEgNy4wMjkgMjEgMTJDMjEgMTYuOTcxIDE2Ljk3MSAyMSAxMiAyMVpcIlxyXG4gICAgICAgICAgZmlsbD1cIiNGRjAwMDBcIlxyXG4gICAgICAgICAgc3Ryb2tlPVwiI0ZGMDAwMFwiXHJcbiAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgZD1cIk0xMiAxMi43NUwxMiA3Ljc1XCJcclxuICAgICAgICAgIHN0cm9rZT1cIndoaXRlXCJcclxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTZcIiByPVwiMVwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgICB7eyB2YWxpZGF0aW9uTWVzc2FnZSB9fVxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRlVHlwZSA9PT0gJ0RBVEVfQU5EX1RJTUUnXCI+XHJcbiAgICA8IS0tIERhdGUgYW5kIHRpbWUgcGlja2VyIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICAjZGF0ZUFuZFRpbWVQaWNrZXI9XCJic0RhdGVwaWNrZXJcIlxyXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBoZWlnaHRcIlxyXG4gICAgICAgIFttaW5EYXRlXT1cIm1pbkRhdGUgPyBtaW5EYXRlIDogdW5kZWZpbmVkXCJcclxuICAgICAgICBbbWF4RGF0ZV09XCJtYXhEYXRlID8gbWF4RGF0ZSA6IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgW2JzQ29uZmlnXT1cIntcclxuICAgICAgICAgIGRhdGVJbnB1dEZvcm1hdDogZm9ybWF0LCBjb250YWluZXJDbGFzczogJ3RoZW1lLWN1c3RvbScgXHJcbiAgICAgICAgfVwiXHJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgZGF0ZVwiXHJcbiAgICAgICAgYnNEYXRlcGlja2VyXHJcbiAgICAgICAgW2NsYXNzLmludmFsaWRdPVwidmFsaWRhdGlvbkZhaWxlZFwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZERhdGVBbmRUaW1lXCJcclxuICAgICAgICAoYmx1cik9XCJ2YWxpZGF0ZUZpZWxkKClcIlxyXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbGlkYXRlRmllbGQoKVwiXHJcbiAgICAgIC8+XHJcbiAgICAgIDxpXHJcbiAgICAgICAgY2xhc3M9XCJmYS1zb2xpZCBmYS1jYWxlbmRhci1kYXlzIGNhbGVuZGFyLWljb24gdGV4dC1wcmltYXJ5IGZzLTVcIlxyXG4gICAgICAgIChjbGljayk9XCJvcGVuRGF0ZUFuZFRpbWVQaWNrZXIoKVwiXHJcbiAgICAgID48L2k+XHJcbiAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiICpuZ0lmPVwic2VsZWN0ZWREYXRlQW5kVGltZSAmJiBzZWxlY3RlZERhdGVBbmRUaW1lICE9IG51bGxcIj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICBcclxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBoZWlnaHQgYXBwZWFyYW5jZUlucHV0IG10LTNcIlxyXG4gICAgICAgIGFyaWEtbGFiZWw9XCJTZWxlY3QgdGltZVwiXHJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgdGltZVwiXHJcbiAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICBbZm9ybWF0XT1cInRpbWVGb3JtYXQ9PT0nMjQnPzI0OjEyXCJcclxuICAgICAgICBbbmd4VGltZXBpY2tlcl09XCJmdWxsVGltZTRcIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUaW1lXCJcclxuICAgICAgICBbbWF4XT1cIm1heFRpbWVcIlxyXG4gICAgICAgIFttaW5dPVwibWluVGltZVwiXHJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsaWRhdGVGaWVsZCgpXCJcclxuICAgICAgICAoZm9jdXMpPVwiY2xvc2VEYXRlcGlja2VyKClcIlxyXG4gICAgICAgIFtjbGFzcy5pbnZhbGlkXT1cInRpbWVWYWxpZGF0aW9uRmFpbGVkXCJcclxuICAgIC8+XHJcbiAgICBcclxuICAgIDxpXHJcbiAgICBpZD1cInN0YXJ0RGF0ZUljb25cIlxyXG4gICAgY2xhc3M9XCJmYS1zb2xpZCBmYS1jbG9jayB0ZXh0LXByaW1hcnkgZnMtNiBjbG9jay1pY29uXCJcclxuICAgIChjbGljayk9XCJmdWxsVGltZTQub3BlbigpXCJcclxuICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiXHJcbiAgPjwvaT5cclxuICAgIDxuZ3gtbWF0ZXJpYWwtdGltZXBpY2tlciAjZnVsbFRpbWU0Pjwvbmd4LW1hdGVyaWFsLXRpbWVwaWNrZXI+XHJcbiAgPC9kaXY+XHJcbiAgIFxyXG4gICAgPGRpdiAqbmdJZj1cInZhbGlkYXRpb25GYWlsZWQgfHwgdGltZVZhbGlkYXRpb25GYWlsZWRcIiBjbGFzcz1cInRleHQtZGFuZ2VyIG10LTJcIj5cclxuICAgICAgPHN2Z1xyXG4gICAgICAgIGNsYXNzPVwidmFsaWRhdGlvblN2Z1wiXHJcbiAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXHJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgID5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgZD1cIk0xMi4wMDEgMTYuNzVDMTIuMTM5IDE2Ljc1IDEyLjI1MSAxNi42MzggMTIuMjUgMTYuNUMxMi4yNSAxNi4zNjIgMTIuMTM4IDE2LjI1IDEyIDE2LjI1QzExLjg2MiAxNi4yNSAxMS43NSAxNi4zNjIgMTEuNzUgMTYuNUMxMS43NSAxNi42MzggMTEuODYyIDE2Ljc1IDEyLjAwMSAxNi43NVwiXHJcbiAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgIGQ9XCJNMTIgMjFDNy4wMjkgMjEgMyAxNi45NzEgMyAxMkMzIDcuMDI5IDcuMDI5IDMgMTIgM0MxNi45NzEgMyAyMSA3LjAyOSAyMSAxMkMyMSAxNi45NzEgMTYuOTcxIDIxIDEyIDIxWlwiXHJcbiAgICAgICAgICBmaWxsPVwiI0ZGMDAwMFwiXHJcbiAgICAgICAgICBzdHJva2U9XCIjRkYwMDAwXCJcclxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBkPVwiTTEyIDEyLjc1TDEyIDcuNzVcIlxyXG4gICAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxyXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxNlwiIHI9XCIxXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICAgIHt7IHZhbGlkYXRpb25NZXNzYWdlIH19XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGVUeXBlID09PSAnREFURV9SQU5HRSdcIj5cclxuICAgIDwhLS0gRGF0ZSByYW5nZSBwaWNrZXIgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBoZWlnaHRcIlxyXG4gICAgICAgICNkYXRlcmFuZ2VwaWNrZXI9XCJic0RhdGVyYW5nZXBpY2tlclwiXHJcbiAgICAgICAgYnNEYXRlcmFuZ2VwaWNrZXJcclxuICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBkYXRlXCJcclxuICAgICAgICBbbWluRGF0ZV09XCJtaW5EYXRlID8gbWluRGF0ZSA6IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgW21heERhdGVdPVwibWF4RGF0ZSA/IG1heERhdGUgOiB1bmRlZmluZWRcIlxyXG4gICAgICAgIFtic0NvbmZpZ109XCJ7XHJcbiAgICAgICAgICByYW5nZUlucHV0Rm9ybWF0OiBmb3JtYXQsXHJcbiAgICAgICAgICBkYXRlSW5wdXRGb3JtYXQ6IGZvcm1hdCwgY29udGFpbmVyQ2xhc3M6ICd0aGVtZS1jdXN0b20nIFxyXG4gICAgICAgIH1cIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWREYXRlUmFuZ2VcIlxyXG4gICAgICAgIChibHVyKT1cInZhbGlkYXRlRmllbGQoKVwiXHJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsaWRhdGVGaWVsZCgpXCJcclxuICAgICAgICBbY2xhc3MuaW52YWxpZF09XCJ2YWxpZGF0aW9uRmFpbGVkXCJcclxuICAgICAgLz5cclxuICAgICAgPGlcclxuICAgICAgICBjbGFzcz1cImZhLXNvbGlkIGZhLWNhbGVuZGFyLWRheXMgY2FsZW5kYXItaWNvbiB0ZXh0LXByaW1hcnkgZnMtNVwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5EYXRlUmFuZ2VQaWNrZXIoKVwiXHJcbiAgICAgID48L2k+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJ2YWxpZGF0aW9uRmFpbGVkXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlciBtdC0yXCI+XHJcbiAgICAgIDxzdmdcclxuICAgICAgICBjbGFzcz1cInZhbGlkYXRpb25TdmdcIlxyXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxyXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGQ9XCJNMTIuMDAxIDE2Ljc1QzEyLjEzOSAxNi43NSAxMi4yNTEgMTYuNjM4IDEyLjI1IDE2LjVDMTIuMjUgMTYuMzYyIDEyLjEzOCAxNi4yNSAxMiAxNi4yNUMxMS44NjIgMTYuMjUgMTEuNzUgMTYuMzYyIDExLjc1IDE2LjVDMTEuNzUgMTYuNjM4IDExLjg2MiAxNi43NSAxMi4wMDEgMTYuNzVcIlxyXG4gICAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxyXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICBkPVwiTTEyIDIxQzcuMDI5IDIxIDMgMTYuOTcxIDMgMTJDMyA3LjAyOSA3LjAyOSAzIDEyIDNDMTYuOTcxIDMgMjEgNy4wMjkgMjEgMTJDMjEgMTYuOTcxIDE2Ljk3MSAyMSAxMiAyMVpcIlxyXG4gICAgICAgICAgZmlsbD1cIiNGRjAwMDBcIlxyXG4gICAgICAgICAgc3Ryb2tlPVwiI0ZGMDAwMFwiXHJcbiAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgZD1cIk0xMiAxMi43NUwxMiA3Ljc1XCJcclxuICAgICAgICAgIHN0cm9rZT1cIndoaXRlXCJcclxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTZcIiByPVwiMVwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgICB7eyB2YWxpZGF0aW9uTWVzc2FnZSB9fVxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvZGl2PlxyXG4iXX0=