@reusa/ngx-reusa-app-lib 0.0.1337 → 0.0.1339

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.
@@ -1023,7 +1023,7 @@ export class WeeklyCertEmployerComponentQe extends BasePage {
1023
1023
  }
1024
1024
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WeeklyCertEmployerComponentQe, [{
1025
1025
  type: Component,
1026
- args: [{ selector: 'app-weekly-cert-employer-qe', template: "<form [formGroup]=\"empForm\" #empFormDirective=\"ngForm\">\r\n <ion-grid>\r\n <ion-row *ngIf=\"!empToEdit?.isPartTimeEmployer\">\r\n <ion-col class=\"ion-padding\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"6\" sizeLg=\"6\" sizeXl=\"6\">\r\n <div class=\"p-fluid formgrid\">\r\n \r\n <div class=\"field\">\r\n <label for=\"wcEmpName\">Employer Name</label>\r\n <app-search-employer id=\"wcEmployerName\" [formControl]=\"wcEmpName\" (onFound)=\"setEmployer($event)\"\r\n [empType]=\"'REG'\"></app-search-employer>\r\n <app-error [class]=\"'app-grid'\" [field]='wcEmpName' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required', pattern: '%, <, >, ^, _, {, } are not allowed',\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\" *ngIf=\"isME()\">\r\n <label for=\"wcEmpState\">Country</label><br>\r\n <app-dropdown inputId=\"wcEmpCountry\" [options]=\"countryOptions\" optionLabel=\"text\" optionValue=\"value\"\r\n appendTo=\"body\" [formControl]=\"wcEmpCountry\" [autoDisplayFirst]=\"false\" inputId=\"wcEmpCountry\"></app-dropdown>\r\n <app-error [class]=\"'app-grid'\" [field]='wcEmpCountry' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <label for=\"wcEmpAddressLine1\">Street Address</label>\r\n <input id=\"wcEmpAddressLine1\" type=\"input\" pInputText [formControl]=\"wcEmpAddressLine1\" appStripInvisibleChars/>\r\n <app-error [class]=\"'app-grid'\" [field]='wcEmpAddressLine1' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required', pattern: 'only letters, numbers, spaces, commas, periods, apostrophes, hyphens, # and / allowed',\r\n maxlength: 'cannot exceed 40 characters'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <label for=\"wcEmpCity\">City</label>\r\n <input id=\"wcEmpCity\" type=\"input\" pInputText [formControl]=\"wcEmpCity\" appStripInvisibleChars/>\r\n <app-error [class]=\"'app-grid'\" [field]='wcEmpCity' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required', pattern: 'city name can only contain letters, spaces, and hyphens',\r\n maxlength: 'cannot exceed 30 characters'\r\n }\"></app-error>\r\n </div>\r\n \r\n <div *ngIf=\"isME()\">\r\n <ion-row>\r\n <ion-col style=\"padding: 0px;\">\r\n <div class=\"field\">\r\n <label for=\"wcEmpState\">State</label><br>\r\n <app-dropdown inputId=\"wcEmpState\" [options]=\"statesCombo\" optionLabel=\"text\" optionValue=\"value\"\r\n appendTo=\"body\" [formControl]=\"wcEmpState\" [autoDisplayFirst]=\"false\" inputId=\"wcEmpState\"></app-dropdown>\r\n <app-error [class]=\"'app-grid'\" [field]='wcEmpState' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n <ion-col size=\"1\"></ion-col>\r\n <ion-col style=\"padding: 0px;\">\r\n <div class=\"field\">\r\n <label for=\"wsZipCode\">Zip Code</label>\r\n <input id=\"wsZipCode\" type=\"input\" pInputText [formControl]=\"wsZipCode\" minlength=\"5\" maxlength=\"9\"\r\n appStripInvisibleChars />\r\n <app-error [class]=\"'app-grid'\" [field]='wsZipCode' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required',\r\n invalidLength: 'Zip code should be of 5 or 9 digits.',\r\n invalidNumber: 'Zip code should only have numbers.',\r\n invalidZipCode: 'please enter a valid zip code'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n\r\n <div *ngIf=\"!isME()\">\r\n <div class=\"field\">\r\n <label for=\"wcEmpState\">State</label><br>\r\n <app-dropdown inputId=\"wcEmpState\" [options]=\"statesCombo\" optionLabel=\"text\" optionValue=\"value\" appendTo=\"body\"\r\n [formControl]=\"wcEmpState\" [autoDisplayFirst]=\"false\" inputId=\"wcEmpState\"></app-dropdown>\r\n <app-error [class]=\"'app-grid'\" [field]='wcEmpState' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n <div class=\"field\">\r\n <label for=\"wsZipCode\">Zip Code</label>\r\n <input id=\"wsZipCode\" type=\"input\" pInputText [formControl]=\"wsZipCode\" minlength=\"5\" maxlength=\"9\"\r\n appStripInvisibleChars />\r\n <app-error [class]=\"'app-grid'\" [field]='wsZipCode' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required',\r\n invalidLength: 'Zip code should be of 5 or 9 digits.',\r\n invalidNumber: 'Zip code should only have numbers.',\r\n invalidZipCode: 'please enter a valid zip code'\r\n }\"></app-error>\r\n </div>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <label for=\"lastDayWorked\">Last day you worked</label>\r\n <p-calendar [iconAriaLabel]=\"'Last day worked'\" [showIcon]=\"true\" inputId=\"lastDayWorked\" appendTo=\"body\"\r\n [formControl]=\"lastDayWorked\" [minDate]=\"sunDate\" [maxDate]=\"satDate\"\r\n [defaultDate]=\"sunDate\" [selectOtherMonths]=\"true\" placeholder=\"mm/dd/yyyy\" dateFormat=\"mm/dd/yy\"\r\n [monthNavigator]=\"true\" [yearNavigator]=\"true\" yearRange=\"1901:2050\" (onInput)=\"dateInput($event)\"></p-calendar>\r\n <app-error [class]=\"'app-grid'\" [field]='lastDayWorked' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required',\r\n dateNotBetween: 'Date should be between ' + dynamicParam.sunday_date + ' and ' + dynamicParam.saturday_date + '.'\r\n }\"></app-error>\r\n </div>\r\n </div>\r\n </ion-col>\r\n <ion-col class=\"ion-padding\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"6\" sizeLg=\"6\" sizeXl=\"6\">\r\n <div class=\"p-fluid formgrid\">\r\n\r\n \r\n\r\n <div class=\"field\">\r\n <label for=\"wsPhoneNumber\">Phone No.</label>\r\n <p-inputMask inputId=\"wsPhoneNumber\" [formControl]=\"wsPhoneNumber\" mask=\"(999) 999-9999\"\r\n unmask=\"true\"></p-inputMask>\r\n <app-error [class]=\"'app-grid'\" [field]='wsPhoneNumber' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <label for=\"wcEmpStatus\">What's your employment status with this employer?</label>\r\n <app-dropdown inputId=\"wcEmpStatus\" [options]=\"employmentStatusOptionsAll\" optionLabel=\"text\"\r\n optionValue=\"value\" appendTo=\"body\" [formControl]=\"wcEmpStatus\" [autoDisplayFirst]=\"false\"\r\n inputId=\"wcEmpStatus1\"></app-dropdown><br />\r\n <app-error [class]=\"'app-grid'\" [field]='wcEmpStatus' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required', changeEmpStatus: 'If hours and earnings are both 0, employment status cannot be working-part time.' \r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\" *ngIf=\"wcEmpStatus.value == 'LWLO'\">\r\n <label for=\"haveReturnToWorkDate\">Do you know when you're returning to full-time work?</label>\r\n <p-selectButton [options]=\"yesNoOption\" [formControl]=\"haveReturnToWorkDate\" optionLabel=\"text\"\r\n optionValue=\"value\"></p-selectButton>\r\n <app-error [class]=\"'app-grid'\" [field]='haveReturnToWorkDate' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n <div class=\"field\" *ngIf=\"wcEmpStatus.value == 'LWLO' && haveReturnToWorkDate.value == 'Y'\">\r\n <label for=\"wcEmpLowRtwDate\">When?</label>\r\n <div style=\"display: flex;\">\r\n <p-calendar [showIcon]=\"true\" inputId=\"wcEmpLowRtwDate\" appendTo=\"body\" [formControl]=\"wcEmpLowRtwDate\"\r\n placeholder=\"mm/dd/yyyy\" [showOnFocus]=\"false\" (onInput)=\"dateInput($event)\"\r\n [iconAriaLabel]=\"'When?'\" [monthNavigator]=\"true\" [yearNavigator]=\"true\" yearRange=\"1901:2050\"></p-calendar>\r\n <app-overlay-info [overlayText]=\"'weeklies.v2.employment.rtw.info.popup.2155' | translate | trustHtml\"\r\n style=\"padding-left: 8px; padding-top:3px\"></app-overlay-info>\r\n </div>\r\n <app-error [class]=\"'app-grid'\" [field]='wcEmpLowRtwDate' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\" *ngIf=\"wcEmpStatus.value == 'RTWF'\">\r\n <label for=\"wcEmpRtwDate\">Return to work date</label>\r\n <p-calendar [showIcon]=\"true\" inputId=\"wcEmpRtwDate\" appendTo=\"body\" [formControl]=\"wcEmpRtwDate\"\r\n placeholder=\"mm/dd/yyyy\" [showOnFocus]=\"false\" (onInput)=\"dateInput($event)\" optionValue=\"value\"\r\n [iconAriaLabel]=\"'Return to work date'\" [monthNavigator]=\"true\" [yearNavigator]=\"true\" yearRange=\"1901:2050\"></p-calendar>\r\n <app-error [class]=\"'app-grid'\" [field]='wcEmpRtwDate' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\" *ngIf=\"wcEmpStatus.value == 'DCFI'\">\r\n <label\r\n for=\"dischargeDetail\">{{\"induction.confirm.employment.reason.separation.discharge\"|translate}}</label><br>\r\n <app-dropdown [options]=\"dischargeReasonOptionsAll\" [formControl]=\"discharged\" optionLabel=\"text\"\r\n appendTo=\"body\" [autoDisplayFirst]=\"false\" optionValue=\"value\" inputId=\"discharged1\"></app-dropdown>\r\n <app-error [class]=\"'app-grid'\" [field]='discharged' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\" *ngIf=\"wcEmpStatus.value == 'VOLQ'\">\r\n <label for=\"volQuitDetails\">{{\"induction.confirm.employment.reason.separation.quit\"|translate}}</label><br>\r\n <app-dropdown [options]=\"volQuitReasonOptionsAll\" [formControl]=\"voluntaryQuit\" optionLabel=\"text\"\r\n appendTo=\"body\" [autoDisplayFirst]=\"false\" optionValue=\"value\" inputId=\"voluntaryQuit1\"></app-dropdown>\r\n <app-error [class]=\"'app-grid'\" [field]='voluntaryQuit' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\" *ngIf=\"isMS() ? false : (wcEmpStatus.value == 'VOLQ' || wcEmpStatus.value =='SUSP' || wcEmpStatus.value =='DCFI')\">\r\n <label for=\"startDayWorked\">First day you worked</label>\r\n <p-calendar [iconAriaLabel]=\"'Start day worked'\" [showIcon]=\"true\" inputId=\"startDayWorked\" appendTo=\"body\"\r\n [formControl]=\"startDayWorked\" [maxDate]=\"maxStartDate\"\r\n [defaultDate]=\"sunDate\" [selectOtherMonths]=\"true\" placeholder=\"mm/dd/yyyy\" \r\n [monthNavigator]=\"true\" [yearNavigator]=\"true\" yearRange=\"1901:2050\" (onInput)=\"dateInput($event)\"></p-calendar>\r\n <app-error [class]=\"'app-grid'\" [field]='startDayWorked' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required',\r\n dateNotBetween: 'Date should be between ' + dynamicParam.sunday_date + ' and ' + dynamicParam.saturday_date + '.'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\" *ngIf=\"isMS() ? false : (wcEmpStatus.value == 'VOLQ' || wcEmpStatus.value =='SUSP' || wcEmpStatus.value =='DCFI' || wcEmpStatus.value =='STLO')\">\r\n <label for=\"jobTitle\">Job Title</label>\r\n <input id=\"jobTitle\" type=\"input\" pInputText [formControl]=\"jobTitle\" required appStripInvisibleChars/>\r\n <app-error [class]=\"'app-grid'\" [field]='jobTitle' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n </div>\r\n <input type=\"hidden\" [formControl]=\"hidEmpId\" />\r\n\r\n <div class=\"field\" *ngIf=\"!isME()\">\r\n <span (click)=\"setWageFlag($event)\" class=\"underline-blue\" style=\"cursor:pointer;\">\r\n <b>Earnings Calculator</b>\r\n </span>\r\n <div *ngIf=\"wageDialog\">\r\n <app-wage-calculator [dynamicParam]=\"dynamicParam\" [showCalculatorPopup]=\"true\" \r\n (grossEarningsChange)=\"updateGrossEarnings($event)\" (totalHoursChange)=\"updateTotalHours($event)\"\r\n (saveClicked)=\"onDialogSave($event)\" (cancelClicked)=\"onDialogCancel()\" [wageCalculatorSavedData]=\"wageCalculatorData\"></app-wage-calculator>\r\n </div>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <label for=\"wcEmpHoursWorked\">Hours worked</label><br/>\r\n <p-inputNumber inputId=\"wcEmpHoursWorked\" [formControl]=\"wcEmpHoursWorked\" maxlength=\"10\"\r\n mode=\"decimal\" [minFractionDigits]=\"1\" [maxFractionDigits]=\"2\"></p-inputNumber><br>\r\n <app-error [class]=\"'app-grid'\" [field]='wcEmpHoursWorked' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required', hoursPerWeekExceeded: 'total hours must not be greater than 168 for the week'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <label for=\"wsEmpAmtEarned\">Total Gross Earnings</label>\r\n <app-overlay-info [overlayText]=\"'weeklies.v2.employment.rtw.info.popup.1000' | translate | trustHtml\"\r\n style=\"padding-left: 8px; padding-top:3px\"></app-overlay-info><br/>\r\n <p-inputNumber inputId=\"wsEmpAmtEarned\" mode=\"currency\" currency=\"USD\" locale=\"en-US\"\r\n [formControl]=\"wsEmpAmtEarned\" maxlength=\"10\" placeholder=\"$0.00\"></p-inputNumber><br>\r\n <app-error [class]=\"'app-grid'\" [field]='wsEmpAmtEarned' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required', earningsNotZero: 'Gross Earnings cannot be zero.'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row *ngIf=\"empToEdit?.isPartTimeEmployer\">\r\n <ion-col class=\"ion-padding\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"6\" sizeLg=\"6\" sizeXl=\"6\">\r\n <div class=\"p-fluid formgrid\">\r\n <div class=\"field\">\r\n <b>{{wcEmpName.value}}</b>\r\n </div>\r\n <section hidden>\r\n <input type=\"hidden\" [formControl]=\"wcEmpName\" />\r\n <input type=\"hidden\" [formControl]=\"wcEmpAddressLine1\" />\r\n <input type=\"hidden\" [formControl]=\"wcEmpCity\" />\r\n <input type=\"hidden\" [formControl]=\"wcEmpState\" />\r\n <input type=\"hidden\" [formControl]=\"wsZipCode\" />\r\n <input type=\"hidden\" [formControl]=\"wsPhoneNumber\" />\r\n <input type=\"hidden\" [formControl]=\"hidEmpId\" />\r\n <input type=\"hidden\" [formControl]=\"isPartTimeEmployer\" />\r\n </section>\r\n <div class=\"field\">\r\n <label for=\"wcEmpStatus\">What's your employment status with this employer?</label>\r\n <app-dropdown inputId=\"wcEmpStatus\" [options]=\"employmentStatusOptionsAll\" optionLabel=\"text\"\r\n optionValue=\"value\" appendTo=\"body\" [formControl]=\"wcEmpStatus\" [autoDisplayFirst]=\"false\"\r\n inputId=\"wcEmpStatus2\"></app-dropdown><br />\r\n <app-error [class]=\"'app-grid'\" [field]='wcEmpStatus' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required', changeEmpStatus: 'If hours and earnings are both 0, employment status cannot be working-part time.'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\" *ngIf=\"wcEmpStatus.value == 'LWLO'\">\r\n <label for=\"haveReturnToWorkDate\">Do you know when you're returning to full-time work?</label>\r\n <p-selectButton [options]=\"yesNoOption\" [formControl]=\"haveReturnToWorkDate\" optionLabel=\"text\"\r\n optionValue=\"value\"></p-selectButton>\r\n <app-error [class]=\"'app-grid'\" [field]='haveReturnToWorkDate' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n <div class=\"field\" *ngIf=\"wcEmpStatus.value == 'LWLO' && haveReturnToWorkDate.value == 'Y'\">\r\n <label for=\"wcEmpLowRtwDate\">When?</label>\r\n <div style=\"display: flex;\">\r\n <p-calendar [showIcon]=\"true\" inputId=\"wcEmpLowRtwDate\" appendTo=\"body\" [formControl]=\"wcEmpLowRtwDate\"\r\n placeholder=\"mm/dd/yyyy\" [showOnFocus]=\"false\" (onInput)=\"dateInput($event)\"\r\n [iconAriaLabel]=\"'When?'\" [monthNavigator]=\"true\" [yearNavigator]=\"true\" yearRange=\"1901:2050\"></p-calendar>\r\n <app-overlay-info [overlayText]=\"'weeklies.v2.employment.rtw.info.popup.2050' | translate | trustHtml\"\r\n style=\"padding-left: 8px; padding-top:3px\"></app-overlay-info>\r\n </div>\r\n <app-error [class]=\"'app-grid'\" [field]='wcEmpLowRtwDate' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\" *ngIf=\"wcEmpStatus.value == 'RTWF'\">\r\n <label for=\"wcEmpRtwDate\">Return to work date</label>\r\n <p-calendar [showIcon]=\"true\" inputId=\"wcEmpRtwDate\" appendTo=\"body\" [formControl]=\"wcEmpRtwDate\"\r\n placeholder=\"mm/dd/yyyy\" [showOnFocus]=\"false\" (onInput)=\"dateInput($event)\" optionValue=\"value\"\r\n [iconAriaLabel]=\"'Return to work date'\" [monthNavigator]=\"true\" [yearNavigator]=\"true\" yearRange=\"1901:2050\"></p-calendar>\r\n <app-error [class]=\"'app-grid'\" [field]='wcEmpRtwDate' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\" *ngIf=\"wcEmpStatus.value == 'DCFI'\">\r\n <label\r\n for=\"dischargeDetail\">{{\"induction.confirm.employment.reason.separation.discharge\"|translate}}</label><br>\r\n <app-dropdown [options]=\"dischargeReasonOptionsAll\" [formControl]=\"discharged\" optionLabel=\"text\"\r\n appendTo=\"body\" [autoDisplayFirst]=\"false\" optionValue=\"value\" inputId=\"discharged2\"></app-dropdown>\r\n <app-error [class]=\"'app-grid'\" [field]='discharged' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\" *ngIf=\"wcEmpStatus.value == 'VOLQ'\">\r\n <label for=\"volQuitDetails\">{{\"induction.confirm.employment.reason.separation.quit\"|translate}}</label><br>\r\n <app-dropdown [options]=\"volQuitReasonOptionsAll\" [formControl]=\"voluntaryQuit\" optionLabel=\"text\"\r\n appendTo=\"body\" [autoDisplayFirst]=\"false\" optionValue=\"value\" inputId=\"voluntaryQuit2\"></app-dropdown>\r\n <app-error [class]=\"'app-grid'\" [field]='voluntaryQuit' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n\r\n\r\n <div class=\"field\" *ngIf=\"wcEmpStatus.value == 'VOLQ' || wcEmpStatus.value =='SUSP' || wcEmpStatus.value =='DCFI' || wcEmpStatus.value =='STLO'\">\r\n <label for=\"jobTitle\">Job Title</label>\r\n <input id=\"jobTitle\" type=\"input\" pInputText [formControl]=\"jobTitle\" appStripInvisibleChars/>\r\n <app-error [class]=\"'app-grid'\" [field]='jobTitle' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\" *ngIf=\"wcEmpStatus.value == 'VOLQ' || wcEmpStatus.value =='SUSP' || wcEmpStatus.value =='DCFI'\">\r\n <label for=\"startDayWorked\">First day you worked</label>\r\n <p-calendar [iconAriaLabel]=\"'Start day worked'\" [showIcon]=\"true\" inputId=\"startDayWorked\" appendTo=\"body\"\r\n [formControl]=\"startDayWorked\" [maxDate]=\"maxStartDate\"\r\n [defaultDate]=\"sunDate\" [selectOtherMonths]=\"true\" placeholder=\"mm/dd/yyyy\" [monthNavigator]=\"true\" [yearNavigator]=\"true\" yearRange=\"1901:2050\" (onInput)=\"dateInput($event)\"></p-calendar>\r\n <app-error [class]=\"'app-grid'\" [field]='startDayWorked' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required',\r\n dateNotBetween: 'Date should be between ' + dynamicParam.sunday_date + ' and ' + dynamicParam.saturday_date + '.'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <label for=\"lastDayWorked\">Last day you worked</label>\r\n <p-calendar [iconAriaLabel]=\"'Last day worked'\" [showIcon]=\"true\" inputId=\"lastDayWorked\" appendTo=\"body\"\r\n [formControl]=\"lastDayWorked\" [minDate]=\"sunDate\" [maxDate]=\"satDate\" dateFormat=\"mm/dd/yy\"\r\n [defaultDate]=\"sunDate\" [selectOtherMonths]=\"true\" placeholder=\"mm/dd/yyyy\" \r\n [monthNavigator]=\"true\" [yearNavigator]=\"true\" yearRange=\"1901:2050\" (onInput)=\"dateInput($event)\"></p-calendar>\r\n <app-error [class]=\"'app-grid'\" [field]='lastDayWorked' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required',\r\n dateNotBetween: 'Date should be between ' + dynamicParam.sunday_date + ' and ' + dynamicParam.saturday_date + '.'\r\n }\"></app-error>\r\n </div>\r\n \r\n <div class=\"field\" *ngIf=\"!isME()\">\r\n <span (click)=\"setWageFlag($event)\" class=\"underline-blue\" style=\"cursor:pointer;\">\r\n <b>Earnings Calculator</b>\r\n </span>\r\n <div *ngIf=\"wageDialog\">\r\n <app-wage-calculator [dynamicParam]=\"dynamicParam\" [showCalculatorPopup]=\"true\"\r\n (grossEarningsChange)=\"updateGrossEarnings($event)\" (totalHoursChange)=\"updateTotalHours($event)\"\r\n (saveClicked)=\"onDialogSave($event)\" (cancelClicked)=\"onDialogCancel()\"\r\n [wageCalculatorSavedData]=\"wageCalculatorData\"></app-wage-calculator>\r\n </div>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <label for=\"wcEmpHoursWorked\">Hours worked</label>\r\n <p-inputNumber inputId=\"wcEmpHoursWorked\" [formControl]=\"wcEmpHoursWorked\" maxlength=\"10\"\r\n mode=\"decimal\" [minFractionDigits]=\"1\" [maxFractionDigits]=\"2\"></p-inputNumber>\r\n <app-error [class]=\"'app-grid'\" [field]='wcEmpHoursWorked' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required', hoursPerWeekExceeded: 'total hours must not be greater than 168 for the week'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <label for=\"wsEmpAmtEarned\">Total Gross Earnings</label>\r\n <app-overlay-info [overlayText]=\"'weeklies.v2.employment.rtw.info.popup.1000' | translate | trustHtml\"\r\n style=\"padding-left: 8px; padding-top:3px\"></app-overlay-info>\r\n <p-inputNumber inputId=\"wsEmpAmtEarned\" mode=\"currency\" currency=\"USD\" locale=\"en-US\"\r\n [formControl]=\"wsEmpAmtEarned\" maxlength=\"10\" placeholder=\"$0.00\"></p-inputNumber>\r\n <app-error [class]=\"'app-grid'\" [field]='wsEmpAmtEarned' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required', earningsNotZero: 'Gross Earnings cannot be zero.'\r\n }\"></app-error>\r\n </div>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col class=\"ion-text-right\">\r\n <ion-button shape=\"round\" fill=\"outline\" (click)=\"close()\" type=\"reset\">Clear</ion-button>\r\n <ion-button shape=\"round\" (click)=\"isEditMode ? save() : add()\" type=\"submit\">\r\n {{ isEditMode ? 'Save' : 'Add' }}\r\n </ion-button>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n</form>", styles: [":host ::ng-deep .p-fluid .p-buttonset{display:inline-flex!important}.underline-blue{color:#4478aa;text-decoration:underline}\n"] }]
1026
+ args: [{ selector: 'app-weekly-cert-employer-qe', template: "<form [formGroup]=\"empForm\" #empFormDirective=\"ngForm\">\r\n <ion-grid>\r\n <ion-row *ngIf=\"!empToEdit?.isPartTimeEmployer\">\r\n <ion-col class=\"ion-padding\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"6\" sizeLg=\"6\" sizeXl=\"6\">\r\n <div class=\"p-fluid formgrid\">\r\n \r\n <div class=\"field\">\r\n <label for=\"wcEmpName\">Employer Name</label>\r\n <app-search-employer id=\"wcEmployerName\" [formControl]=\"wcEmpName\" (onFound)=\"setEmployer($event)\"\r\n [empType]=\"'REG'\"></app-search-employer>\r\n <app-error [class]=\"'app-grid'\" [field]='wcEmpName' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required', pattern: '%, <, >, ^, _, {, } are not allowed'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\" *ngIf=\"isME()\">\r\n <label for=\"wcEmpState\">Country</label><br>\r\n <app-dropdown inputId=\"wcEmpCountry\" [options]=\"countryOptions\" optionLabel=\"text\" optionValue=\"value\"\r\n appendTo=\"body\" [formControl]=\"wcEmpCountry\" [autoDisplayFirst]=\"false\" inputId=\"wcEmpCountry\"></app-dropdown>\r\n <app-error [class]=\"'app-grid'\" [field]='wcEmpCountry' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <label for=\"wcEmpAddressLine1\">Street Address</label>\r\n <input id=\"wcEmpAddressLine1\" type=\"input\" pInputText [formControl]=\"wcEmpAddressLine1\" appStripInvisibleChars/>\r\n <app-error [class]=\"'app-grid'\" [field]='wcEmpAddressLine1' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required', pattern: 'only letters, numbers, spaces, commas, periods, apostrophes, hyphens, # and / allowed',\r\n maxlength: 'cannot exceed 40 characters'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <label for=\"wcEmpCity\">City</label>\r\n <input id=\"wcEmpCity\" type=\"input\" pInputText [formControl]=\"wcEmpCity\" appStripInvisibleChars/>\r\n <app-error [class]=\"'app-grid'\" [field]='wcEmpCity' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required', pattern: 'city name can only contain letters, spaces, and hyphens',\r\n maxlength: 'cannot exceed 30 characters'\r\n }\"></app-error>\r\n </div>\r\n \r\n <div *ngIf=\"isME()\">\r\n <ion-row>\r\n <ion-col style=\"padding: 0px;\">\r\n <div class=\"field\">\r\n <label for=\"wcEmpState\">State</label><br>\r\n <app-dropdown inputId=\"wcEmpState\" [options]=\"statesCombo\" optionLabel=\"text\" optionValue=\"value\"\r\n appendTo=\"body\" [formControl]=\"wcEmpState\" [autoDisplayFirst]=\"false\" inputId=\"wcEmpState\"></app-dropdown>\r\n <app-error [class]=\"'app-grid'\" [field]='wcEmpState' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n <ion-col size=\"1\"></ion-col>\r\n <ion-col style=\"padding: 0px;\">\r\n <div class=\"field\">\r\n <label for=\"wsZipCode\">Zip Code</label>\r\n <input id=\"wsZipCode\" type=\"input\" pInputText [formControl]=\"wsZipCode\" minlength=\"5\" maxlength=\"9\"\r\n appStripInvisibleChars />\r\n <app-error [class]=\"'app-grid'\" [field]='wsZipCode' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required',\r\n invalidLength: 'Zip code should be of 5 or 9 digits.',\r\n invalidNumber: 'Zip code should only have numbers.',\r\n invalidZipCode: 'please enter a valid zip code'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n\r\n <div *ngIf=\"!isME()\">\r\n <div class=\"field\">\r\n <label for=\"wcEmpState\">State</label><br>\r\n <app-dropdown inputId=\"wcEmpState\" [options]=\"statesCombo\" optionLabel=\"text\" optionValue=\"value\" appendTo=\"body\"\r\n [formControl]=\"wcEmpState\" [autoDisplayFirst]=\"false\" inputId=\"wcEmpState\"></app-dropdown>\r\n <app-error [class]=\"'app-grid'\" [field]='wcEmpState' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n <div class=\"field\">\r\n <label for=\"wsZipCode\">Zip Code</label>\r\n <input id=\"wsZipCode\" type=\"input\" pInputText [formControl]=\"wsZipCode\" minlength=\"5\" maxlength=\"9\"\r\n appStripInvisibleChars />\r\n <app-error [class]=\"'app-grid'\" [field]='wsZipCode' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required',\r\n invalidLength: 'Zip code should be of 5 or 9 digits.',\r\n invalidNumber: 'Zip code should only have numbers.',\r\n invalidZipCode: 'please enter a valid zip code'\r\n }\"></app-error>\r\n </div>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <label for=\"lastDayWorked\">Last day you worked</label>\r\n <p-calendar [iconAriaLabel]=\"'Last day worked'\" [showIcon]=\"true\" inputId=\"lastDayWorked\" appendTo=\"body\"\r\n [formControl]=\"lastDayWorked\" [minDate]=\"sunDate\" [maxDate]=\"satDate\"\r\n [defaultDate]=\"sunDate\" [selectOtherMonths]=\"true\" placeholder=\"mm/dd/yyyy\" dateFormat=\"mm/dd/yy\"\r\n [monthNavigator]=\"true\" [yearNavigator]=\"true\" yearRange=\"1901:2050\" (onInput)=\"dateInput($event)\"></p-calendar>\r\n <app-error [class]=\"'app-grid'\" [field]='lastDayWorked' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required',\r\n dateNotBetween: 'Date should be between ' + dynamicParam.sunday_date + ' and ' + dynamicParam.saturday_date + '.'\r\n }\"></app-error>\r\n </div>\r\n </div>\r\n </ion-col>\r\n <ion-col class=\"ion-padding\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"6\" sizeLg=\"6\" sizeXl=\"6\">\r\n <div class=\"p-fluid formgrid\">\r\n\r\n \r\n\r\n <div class=\"field\">\r\n <label for=\"wsPhoneNumber\">Phone No.</label>\r\n <p-inputMask inputId=\"wsPhoneNumber\" [formControl]=\"wsPhoneNumber\" mask=\"(999) 999-9999\"\r\n unmask=\"true\"></p-inputMask>\r\n <app-error [class]=\"'app-grid'\" [field]='wsPhoneNumber' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <label for=\"wcEmpStatus\">What's your employment status with this employer?</label>\r\n <app-dropdown inputId=\"wcEmpStatus\" [options]=\"employmentStatusOptionsAll\" optionLabel=\"text\"\r\n optionValue=\"value\" appendTo=\"body\" [formControl]=\"wcEmpStatus\" [autoDisplayFirst]=\"false\"\r\n inputId=\"wcEmpStatus1\"></app-dropdown><br />\r\n <app-error [class]=\"'app-grid'\" [field]='wcEmpStatus' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required', changeEmpStatus: 'If hours and earnings are both 0, employment status cannot be working-part time.' \r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\" *ngIf=\"wcEmpStatus.value == 'LWLO'\">\r\n <label for=\"haveReturnToWorkDate\">Do you know when you're returning to full-time work?</label>\r\n <p-selectButton [options]=\"yesNoOption\" [formControl]=\"haveReturnToWorkDate\" optionLabel=\"text\"\r\n optionValue=\"value\"></p-selectButton>\r\n <app-error [class]=\"'app-grid'\" [field]='haveReturnToWorkDate' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n <div class=\"field\" *ngIf=\"wcEmpStatus.value == 'LWLO' && haveReturnToWorkDate.value == 'Y'\">\r\n <label for=\"wcEmpLowRtwDate\">When?</label>\r\n <div style=\"display: flex;\">\r\n <p-calendar [showIcon]=\"true\" inputId=\"wcEmpLowRtwDate\" appendTo=\"body\" [formControl]=\"wcEmpLowRtwDate\"\r\n placeholder=\"mm/dd/yyyy\" [showOnFocus]=\"false\" (onInput)=\"dateInput($event)\"\r\n [iconAriaLabel]=\"'When?'\" [monthNavigator]=\"true\" [yearNavigator]=\"true\" yearRange=\"1901:2050\"></p-calendar>\r\n <app-overlay-info [overlayText]=\"'weeklies.v2.employment.rtw.info.popup.2155' | translate | trustHtml\"\r\n style=\"padding-left: 8px; padding-top:3px\"></app-overlay-info>\r\n </div>\r\n <app-error [class]=\"'app-grid'\" [field]='wcEmpLowRtwDate' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\" *ngIf=\"wcEmpStatus.value == 'RTWF'\">\r\n <label for=\"wcEmpRtwDate\">Return to work date</label>\r\n <p-calendar [showIcon]=\"true\" inputId=\"wcEmpRtwDate\" appendTo=\"body\" [formControl]=\"wcEmpRtwDate\"\r\n placeholder=\"mm/dd/yyyy\" [showOnFocus]=\"false\" (onInput)=\"dateInput($event)\" optionValue=\"value\"\r\n [iconAriaLabel]=\"'Return to work date'\" [monthNavigator]=\"true\" [yearNavigator]=\"true\" yearRange=\"1901:2050\"></p-calendar>\r\n <app-error [class]=\"'app-grid'\" [field]='wcEmpRtwDate' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\" *ngIf=\"wcEmpStatus.value == 'DCFI'\">\r\n <label\r\n for=\"dischargeDetail\">{{\"induction.confirm.employment.reason.separation.discharge\"|translate}}</label><br>\r\n <app-dropdown [options]=\"dischargeReasonOptionsAll\" [formControl]=\"discharged\" optionLabel=\"text\"\r\n appendTo=\"body\" [autoDisplayFirst]=\"false\" optionValue=\"value\" inputId=\"discharged1\"></app-dropdown>\r\n <app-error [class]=\"'app-grid'\" [field]='discharged' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\" *ngIf=\"wcEmpStatus.value == 'VOLQ'\">\r\n <label for=\"volQuitDetails\">{{\"induction.confirm.employment.reason.separation.quit\"|translate}}</label><br>\r\n <app-dropdown [options]=\"volQuitReasonOptionsAll\" [formControl]=\"voluntaryQuit\" optionLabel=\"text\"\r\n appendTo=\"body\" [autoDisplayFirst]=\"false\" optionValue=\"value\" inputId=\"voluntaryQuit1\"></app-dropdown>\r\n <app-error [class]=\"'app-grid'\" [field]='voluntaryQuit' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\" *ngIf=\"isMS() ? false : (wcEmpStatus.value == 'VOLQ' || wcEmpStatus.value =='SUSP' || wcEmpStatus.value =='DCFI')\">\r\n <label for=\"startDayWorked\">First day you worked</label>\r\n <p-calendar [iconAriaLabel]=\"'Start day worked'\" [showIcon]=\"true\" inputId=\"startDayWorked\" appendTo=\"body\"\r\n [formControl]=\"startDayWorked\" [maxDate]=\"maxStartDate\"\r\n [defaultDate]=\"sunDate\" [selectOtherMonths]=\"true\" placeholder=\"mm/dd/yyyy\" \r\n [monthNavigator]=\"true\" [yearNavigator]=\"true\" yearRange=\"1901:2050\" (onInput)=\"dateInput($event)\"></p-calendar>\r\n <app-error [class]=\"'app-grid'\" [field]='startDayWorked' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required',\r\n dateNotBetween: 'Date should be between ' + dynamicParam.sunday_date + ' and ' + dynamicParam.saturday_date + '.'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\" *ngIf=\"isMS() ? false : (wcEmpStatus.value == 'VOLQ' || wcEmpStatus.value =='SUSP' || wcEmpStatus.value =='DCFI' || wcEmpStatus.value =='STLO')\">\r\n <label for=\"jobTitle\">Job Title</label>\r\n <input id=\"jobTitle\" type=\"input\" pInputText [formControl]=\"jobTitle\" required appStripInvisibleChars/>\r\n <app-error [class]=\"'app-grid'\" [field]='jobTitle' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n </div>\r\n <input type=\"hidden\" [formControl]=\"hidEmpId\" />\r\n\r\n <div class=\"field\" *ngIf=\"!isME()\">\r\n <span (click)=\"setWageFlag($event)\" class=\"underline-blue\" style=\"cursor:pointer;\">\r\n <b>Earnings Calculator</b>\r\n </span>\r\n <div *ngIf=\"wageDialog\">\r\n <app-wage-calculator [dynamicParam]=\"dynamicParam\" [showCalculatorPopup]=\"true\" \r\n (grossEarningsChange)=\"updateGrossEarnings($event)\" (totalHoursChange)=\"updateTotalHours($event)\"\r\n (saveClicked)=\"onDialogSave($event)\" (cancelClicked)=\"onDialogCancel()\" [wageCalculatorSavedData]=\"wageCalculatorData\"></app-wage-calculator>\r\n </div>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <label for=\"wcEmpHoursWorked\">Hours worked</label><br/>\r\n <p-inputNumber inputId=\"wcEmpHoursWorked\" [formControl]=\"wcEmpHoursWorked\" maxlength=\"10\"\r\n mode=\"decimal\" [minFractionDigits]=\"1\" [maxFractionDigits]=\"2\"></p-inputNumber><br>\r\n <app-error [class]=\"'app-grid'\" [field]='wcEmpHoursWorked' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required', hoursPerWeekExceeded: 'total hours must not be greater than 168 for the week'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <label for=\"wsEmpAmtEarned\">Total Gross Earnings</label>\r\n <app-overlay-info [overlayText]=\"'weeklies.v2.employment.rtw.info.popup.1000' | translate | trustHtml\"\r\n style=\"padding-left: 8px; padding-top:3px\"></app-overlay-info><br/>\r\n <p-inputNumber inputId=\"wsEmpAmtEarned\" mode=\"currency\" currency=\"USD\" locale=\"en-US\"\r\n [formControl]=\"wsEmpAmtEarned\" maxlength=\"10\" placeholder=\"$0.00\"></p-inputNumber><br>\r\n <app-error [class]=\"'app-grid'\" [field]='wsEmpAmtEarned' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required', earningsNotZero: 'Gross Earnings cannot be zero.'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row *ngIf=\"empToEdit?.isPartTimeEmployer\">\r\n <ion-col class=\"ion-padding\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"6\" sizeLg=\"6\" sizeXl=\"6\">\r\n <div class=\"p-fluid formgrid\">\r\n <div class=\"field\">\r\n <b>{{wcEmpName.value}}</b>\r\n </div>\r\n <section hidden>\r\n <input type=\"hidden\" [formControl]=\"wcEmpName\" />\r\n <input type=\"hidden\" [formControl]=\"wcEmpAddressLine1\" />\r\n <input type=\"hidden\" [formControl]=\"wcEmpCity\" />\r\n <input type=\"hidden\" [formControl]=\"wcEmpState\" />\r\n <input type=\"hidden\" [formControl]=\"wsZipCode\" />\r\n <input type=\"hidden\" [formControl]=\"wsPhoneNumber\" />\r\n <input type=\"hidden\" [formControl]=\"hidEmpId\" />\r\n <input type=\"hidden\" [formControl]=\"isPartTimeEmployer\" />\r\n </section>\r\n <div class=\"field\">\r\n <label for=\"wcEmpStatus\">What's your employment status with this employer?</label>\r\n <app-dropdown inputId=\"wcEmpStatus\" [options]=\"employmentStatusOptionsAll\" optionLabel=\"text\"\r\n optionValue=\"value\" appendTo=\"body\" [formControl]=\"wcEmpStatus\" [autoDisplayFirst]=\"false\"\r\n inputId=\"wcEmpStatus2\"></app-dropdown><br />\r\n <app-error [class]=\"'app-grid'\" [field]='wcEmpStatus' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required', changeEmpStatus: 'If hours and earnings are both 0, employment status cannot be working-part time.'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\" *ngIf=\"wcEmpStatus.value == 'LWLO'\">\r\n <label for=\"haveReturnToWorkDate\">Do you know when you're returning to full-time work?</label>\r\n <p-selectButton [options]=\"yesNoOption\" [formControl]=\"haveReturnToWorkDate\" optionLabel=\"text\"\r\n optionValue=\"value\"></p-selectButton>\r\n <app-error [class]=\"'app-grid'\" [field]='haveReturnToWorkDate' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n <div class=\"field\" *ngIf=\"wcEmpStatus.value == 'LWLO' && haveReturnToWorkDate.value == 'Y'\">\r\n <label for=\"wcEmpLowRtwDate\">When?</label>\r\n <div style=\"display: flex;\">\r\n <p-calendar [showIcon]=\"true\" inputId=\"wcEmpLowRtwDate\" appendTo=\"body\" [formControl]=\"wcEmpLowRtwDate\"\r\n placeholder=\"mm/dd/yyyy\" [showOnFocus]=\"false\" (onInput)=\"dateInput($event)\"\r\n [iconAriaLabel]=\"'When?'\" [monthNavigator]=\"true\" [yearNavigator]=\"true\" yearRange=\"1901:2050\"></p-calendar>\r\n <app-overlay-info [overlayText]=\"'weeklies.v2.employment.rtw.info.popup.2050' | translate | trustHtml\"\r\n style=\"padding-left: 8px; padding-top:3px\"></app-overlay-info>\r\n </div>\r\n <app-error [class]=\"'app-grid'\" [field]='wcEmpLowRtwDate' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\" *ngIf=\"wcEmpStatus.value == 'RTWF'\">\r\n <label for=\"wcEmpRtwDate\">Return to work date</label>\r\n <p-calendar [showIcon]=\"true\" inputId=\"wcEmpRtwDate\" appendTo=\"body\" [formControl]=\"wcEmpRtwDate\"\r\n placeholder=\"mm/dd/yyyy\" [showOnFocus]=\"false\" (onInput)=\"dateInput($event)\" optionValue=\"value\"\r\n [iconAriaLabel]=\"'Return to work date'\" [monthNavigator]=\"true\" [yearNavigator]=\"true\" yearRange=\"1901:2050\"></p-calendar>\r\n <app-error [class]=\"'app-grid'\" [field]='wcEmpRtwDate' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\" *ngIf=\"wcEmpStatus.value == 'DCFI'\">\r\n <label\r\n for=\"dischargeDetail\">{{\"induction.confirm.employment.reason.separation.discharge\"|translate}}</label><br>\r\n <app-dropdown [options]=\"dischargeReasonOptionsAll\" [formControl]=\"discharged\" optionLabel=\"text\"\r\n appendTo=\"body\" [autoDisplayFirst]=\"false\" optionValue=\"value\" inputId=\"discharged2\"></app-dropdown>\r\n <app-error [class]=\"'app-grid'\" [field]='discharged' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\" *ngIf=\"wcEmpStatus.value == 'VOLQ'\">\r\n <label for=\"volQuitDetails\">{{\"induction.confirm.employment.reason.separation.quit\"|translate}}</label><br>\r\n <app-dropdown [options]=\"volQuitReasonOptionsAll\" [formControl]=\"voluntaryQuit\" optionLabel=\"text\"\r\n appendTo=\"body\" [autoDisplayFirst]=\"false\" optionValue=\"value\" inputId=\"voluntaryQuit2\"></app-dropdown>\r\n <app-error [class]=\"'app-grid'\" [field]='voluntaryQuit' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n\r\n\r\n <div class=\"field\" *ngIf=\"wcEmpStatus.value == 'VOLQ' || wcEmpStatus.value =='SUSP' || wcEmpStatus.value =='DCFI' || wcEmpStatus.value =='STLO'\">\r\n <label for=\"jobTitle\">Job Title</label>\r\n <input id=\"jobTitle\" type=\"input\" pInputText [formControl]=\"jobTitle\" appStripInvisibleChars/>\r\n <app-error [class]=\"'app-grid'\" [field]='jobTitle' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\" *ngIf=\"wcEmpStatus.value == 'VOLQ' || wcEmpStatus.value =='SUSP' || wcEmpStatus.value =='DCFI'\">\r\n <label for=\"startDayWorked\">First day you worked</label>\r\n <p-calendar [iconAriaLabel]=\"'Start day worked'\" [showIcon]=\"true\" inputId=\"startDayWorked\" appendTo=\"body\"\r\n [formControl]=\"startDayWorked\" [maxDate]=\"maxStartDate\"\r\n [defaultDate]=\"sunDate\" [selectOtherMonths]=\"true\" placeholder=\"mm/dd/yyyy\" [monthNavigator]=\"true\" [yearNavigator]=\"true\" yearRange=\"1901:2050\" (onInput)=\"dateInput($event)\"></p-calendar>\r\n <app-error [class]=\"'app-grid'\" [field]='startDayWorked' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required',\r\n dateNotBetween: 'Date should be between ' + dynamicParam.sunday_date + ' and ' + dynamicParam.saturday_date + '.'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <label for=\"lastDayWorked\">Last day you worked</label>\r\n <p-calendar [iconAriaLabel]=\"'Last day worked'\" [showIcon]=\"true\" inputId=\"lastDayWorked\" appendTo=\"body\"\r\n [formControl]=\"lastDayWorked\" [minDate]=\"sunDate\" [maxDate]=\"satDate\" dateFormat=\"mm/dd/yy\"\r\n [defaultDate]=\"sunDate\" [selectOtherMonths]=\"true\" placeholder=\"mm/dd/yyyy\" \r\n [monthNavigator]=\"true\" [yearNavigator]=\"true\" yearRange=\"1901:2050\" (onInput)=\"dateInput($event)\"></p-calendar>\r\n <app-error [class]=\"'app-grid'\" [field]='lastDayWorked' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required',\r\n dateNotBetween: 'Date should be between ' + dynamicParam.sunday_date + ' and ' + dynamicParam.saturday_date + '.'\r\n }\"></app-error>\r\n </div>\r\n \r\n <div class=\"field\" *ngIf=\"!isME()\">\r\n <span (click)=\"setWageFlag($event)\" class=\"underline-blue\" style=\"cursor:pointer;\">\r\n <b>Earnings Calculator</b>\r\n </span>\r\n <div *ngIf=\"wageDialog\">\r\n <app-wage-calculator [dynamicParam]=\"dynamicParam\" [showCalculatorPopup]=\"true\"\r\n (grossEarningsChange)=\"updateGrossEarnings($event)\" (totalHoursChange)=\"updateTotalHours($event)\"\r\n (saveClicked)=\"onDialogSave($event)\" (cancelClicked)=\"onDialogCancel()\"\r\n [wageCalculatorSavedData]=\"wageCalculatorData\"></app-wage-calculator>\r\n </div>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <label for=\"wcEmpHoursWorked\">Hours worked</label>\r\n <p-inputNumber inputId=\"wcEmpHoursWorked\" [formControl]=\"wcEmpHoursWorked\" maxlength=\"10\"\r\n mode=\"decimal\" [minFractionDigits]=\"1\" [maxFractionDigits]=\"2\"></p-inputNumber>\r\n <app-error [class]=\"'app-grid'\" [field]='wcEmpHoursWorked' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required', hoursPerWeekExceeded: 'total hours must not be greater than 168 for the week'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <label for=\"wsEmpAmtEarned\">Total Gross Earnings</label>\r\n <app-overlay-info [overlayText]=\"'weeklies.v2.employment.rtw.info.popup.1000' | translate | trustHtml\"\r\n style=\"padding-left: 8px; padding-top:3px\"></app-overlay-info>\r\n <p-inputNumber inputId=\"wsEmpAmtEarned\" mode=\"currency\" currency=\"USD\" locale=\"en-US\"\r\n [formControl]=\"wsEmpAmtEarned\" maxlength=\"10\" placeholder=\"$0.00\"></p-inputNumber>\r\n <app-error [class]=\"'app-grid'\" [field]='wsEmpAmtEarned' [form]=\"empFormDirective\" [errDef]=\"{ \r\n required: 'required', earningsNotZero: 'Gross Earnings cannot be zero.'\r\n }\"></app-error>\r\n </div>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col class=\"ion-text-right\">\r\n <ion-button shape=\"round\" fill=\"outline\" (click)=\"close()\" type=\"reset\">Clear</ion-button>\r\n <ion-button shape=\"round\" (click)=\"isEditMode ? save() : add()\" type=\"submit\">\r\n {{ isEditMode ? 'Save' : 'Add' }}\r\n </ion-button>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n</form>", styles: [":host ::ng-deep .p-fluid .p-buttonset{display:inline-flex!important}.underline-blue{color:#4478aa;text-decoration:underline}\n"] }]
1027
1027
  }], () => [{ type: i1.UtilService }, { type: i2.UntypedFormBuilder }, { type: i3.ClaimService }], { empFormDirective: [{
1028
1028
  type: ViewChild,
1029
1029
  args: ['empFormDirective', { static: false }]
@@ -1037,4 +1037,4 @@ export class WeeklyCertEmployerComponentQe extends BasePage {
1037
1037
  type: Input
1038
1038
  }] }); })();
1039
1039
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(WeeklyCertEmployerComponentQe, { className: "WeeklyCertEmployerComponentQe", filePath: "lib\\components\\weekly-cert-employer\\weekly-cert-employer.component.ts", lineNumber: 17 }); })();
1040
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vla2x5LWNlcnQtZW1wbG95ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJldXNhLWFwcC1saWIvc3JjL2xpYi9jb21wb25lbnRzL3dlZWtseS1jZXJ0LWVtcGxveWVyL3dlZWtseS1jZXJ0LWVtcGxveWVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy93ZWVrbHktY2VydC1lbXBsb3llci93ZWVrbHktY2VydC1lbXBsb3llci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUErQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkgsT0FBTyxFQUFnRCxVQUFVLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RyxPQUFPLEVBQUUsaUJBQWlCLEVBQXdCLE1BQU0seUNBQXlDLENBQUM7QUFDbEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBR3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDTTdELDhCQUFrQyxnQkFBQTtJQUNOLHVCQUFPO0lBQUEsaUJBQVE7SUFBQSxxQkFBSSx1QkFBQSxvQkFBQTtJQU03QyxpQkFBTTs7OztJQUxpQyxlQUEwQjtJQUExQiwrQ0FBMEIsb0NBQUEsMkJBQUE7SUFFcEQsZUFBb0I7SUFBcEIseUJBQW9CO0lBQUMsMkNBQXNCLGFBQUEsc0NBQUE7Ozs7SUF1QjFELDJCQUFvQixj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eU9wQyxlQUFtQztZQUFuQyxzRkFBbUM7WUFtSnZDLGVBQ0Y7WUFERSxnRUFDRjs7O2lGRC9XSyw2QkFBNkI7Y0FMekMsU0FBUzsyQkFDRSw2QkFBNkI7d0dBT2hDLGdCQUFnQjtrQkFEdEIsU0FBUzttQkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFJaEQsT0FBTztrQkFETixNQUFNO1lBSVAsT0FBTztrQkFETixNQUFNO1lBSUEsU0FBUztrQkFEZixLQUFLO1lBSUMsWUFBWTtrQkFEbEIsS0FBSzs7a0ZBZEssNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlLCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCwgTmdGb3JtLCBWYWxpZGF0b3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENob2ljZXNNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9BZGRyZXNzQ29tcG9uZW50TW9kZWwnO1xuaW1wb3J0IHsgRW1wbG95ZXJJbmZvTW9kZWwsIEVtcGxveWVyU2VhcmNoUmVzdWx0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL0VtcGxveWVyRGV0YWlsU2VhcmNoUmVzdWx0JztcbmltcG9ydCB7IENvbWJvT3B0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3F1ZXN0aW9ubmFpcmUvQ29tYm9Nb2RlbCc7XG5pbXBvcnQgeyBDbGFpbVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jbGFpbXMvY2xhaW1zLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91dGlsL3V0aWwuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBWYWxpZGF0b3JzIH0gZnJvbSAnLi4vLi4vdmFsaWRhdGlvbnMvQXBwVmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBCYXNlUGFnZSB9IGZyb20gJy4uLy4uL3BhZ2VzL0Jhc2VQYWdlJztcbmltcG9ydCB7IFdhZ2VDYWxjdWxhdG9yTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvV2FnZUNhbGN1bGF0b3JNb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC13ZWVrbHktY2VydC1lbXBsb3llci1xZScsXG4gIHRlbXBsYXRlVXJsOiAnLi93ZWVrbHktY2VydC1lbXBsb3llci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dlZWtseS1jZXJ0LWVtcGxveWVyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFdlZWtseUNlcnRFbXBsb3llckNvbXBvbmVudFFlIGV4dGVuZHMgQmFzZVBhZ2UgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBWaWV3Q2hpbGQoJ2VtcEZvcm1EaXJlY3RpdmUnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcHVibGljIGVtcEZvcm1EaXJlY3RpdmU6IE5nRm9ybTtcblxuICBAT3V0cHV0KClcbiAgc3VjY2VzczogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2xvc2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlbXBUb0VkaXQgPSBuZXcgRW1wbG95ZXJJbmZvTW9kZWwoKTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZHluYW1pY1BhcmFtOiBhbnk7XG5cbiAgcHVibGljIHllc05vT3B0aW9uID0gQ29tYm9PcHRpb24uWUVTX05PO1xuXG4gIHB1YmxpYyBlbXBGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuICBwdWJsaWMgc3RhdGVzQ29tYm86IGFueSA9IFtdO1xuICBwdWJsaWMgY291bnRyeU9wdGlvbnMgPSBDb21ib09wdGlvbi5DT1VOVFJZO1xuICBwdWJsaWMgc2F0RGF0ZTogRGF0ZTtcbiAgcHVibGljIHN1bkRhdGU6IERhdGU7XG4gIHB1YmxpYyBtYXhTdGFydERhdGU6IERhdGU7XG5cbiAgcHVibGljIGlzRWRpdE1vZGU6IEJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHdhZ2VEaWFsb2c6IGJvb2xlYW47XG5cbiAgcHVibGljIGRpc2NoYXJnZVJlYXNvbk9wdGlvbnNBbGw6IENob2ljZXNNb2RlbFtdID0gW107XG4gIHB1YmxpYyB2b2xRdWl0UmVhc29uT3B0aW9uc0FsbDogQ2hvaWNlc01vZGVsW10gPSBbXTtcbiAgcHVibGljIGVtcGxveW1lbnRTdGF0dXNPcHRpb25zQWxsOiBDaG9pY2VzTW9kZWxbXSA9IFtdO1xuICB3YWdlQ2FsY3VsYXRvckRhdGEgOiBXYWdlQ2FsY3VsYXRvck1vZGVsID0gbmV3IFdhZ2VDYWxjdWxhdG9yTW9kZWwoKTtcblxuICB1c1ppcGNvZGVWYWxpZGF0aW9uczogVmFsaWRhdG9yRm5bXSA9IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBBcHBWYWxpZGF0b3JzLmlzVmFsaWRaaXBDb2RlXTtcbiAgY2FuYWRhWmlwY29kZVZhbGlkYXRpb25zOiBWYWxpZGF0b3JGbltdID0gW1ZhbGlkYXRvcnMucmVxdWlyZWQsIEFwcFZhbGlkYXRvcnMuaXNWYWxpZENhbmFkaWFuWmlwQ29kZV07XG5cbiAgY29uc3RydWN0b3IocHVibGljIHV0aWw6IFV0aWxTZXJ2aWNlLCBwdWJsaWMgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlciwgcHVibGljIGNzOiBDbGFpbVNlcnZpY2UpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5sb2FkTWFzdGVyRGF0YSgpO1xuICAgIHRoaXMuc2F0RGF0ZSA9IHRoaXMudXRpbC5nZXRFbnRlcmVkRGF0ZUZyb21TdHJpbmcodGhpcy5keW5hbWljUGFyYW0uc2F0dXJkYXlfZGF0ZSk7XG4gICAgdGhpcy5zdW5EYXRlID0gdGhpcy51dGlsLmdldEVudGVyZWREYXRlRnJvbVN0cmluZyh0aGlzLmR5bmFtaWNQYXJhbS5zdW5kYXlfZGF0ZSk7XG4gICAgdGhpcy5pbml0aWxpemVFbXBsb3llckluZm9yRm9ybSgpO1xuICAgIHRoaXMuaXNFZGl0TW9kZSA9ICEhdGhpcy5lbXBUb0VkaXQ7XG4gICAgdGhpcy53Y0VtcEhvdXJzV29ya2VkLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsID0+IHtcbiAgICAgIGlmKHZhbCl7XG4gICAgICAgIGlmKHZhbCA+IDE2OCl7XG4gICAgICAgICAgdGhpcy53Y0VtcEhvdXJzV29ya2VkLnNldEVycm9ycyh7IGhvdXJzUGVyV2Vla0V4Y2VlZGVkOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGxvYWRNYXN0ZXJEYXRhKCkge1xuICAgIHRoaXMuY3MubG9hZE1hc3RlckRhdGEoKTtcblxuICAgIHRoaXMuY3MuZ2V0UmVhc29uU2VwYXJhdGlvbigpLnN1YnNjcmliZShcbiAgICAgIHZhbHVlID0+IHtcbiAgICAgICAgdmFsdWUuZm9yRWFjaChhcnIgPT4gdGhpcy5lbXBsb3ltZW50U3RhdHVzT3B0aW9uc0FsbC5wdXNoKGFycikpO1xuICAgICAgfVxuICAgICk7XG5cbiAgICB0aGlzLmNzLmdldERpc2NoYXJnZVJlYXNvbnMoKS5zdWJzY3JpYmUoXG4gICAgICB2YWx1ZSA9PiB7XG4gICAgICAgIHZhbHVlLmZvckVhY2goYXJyID0+IHRoaXMuZGlzY2hhcmdlUmVhc29uT3B0aW9uc0FsbC5wdXNoKGFycikpO1xuICAgICAgfVxuICAgICk7XG5cbiAgICB0aGlzLmNzLmdldFF1aXRSZWFzb25zKCkuc3Vic2NyaWJlKFxuICAgICAgdmFsdWUgPT4ge1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKGFyciA9PiB0aGlzLnZvbFF1aXRSZWFzb25PcHRpb25zQWxsLnB1c2goYXJyKSk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGFkZCgpIHtcbiAgICAvL3RoaXMuc2V0VmFsaWRhdGlvbkZvckhvdXJzQW5kV2FnZXNPbkFjdGl2aXR5VHlwZSgpO1xuICAgIGlmICh0aGlzLmVtcEZvcm0udmFsaWQpIHtcbiAgICAgIHRoaXMuZW1wRm9ybS52YWx1ZS5pc1BhcnRUaW1lRW1wbG95ZXJFZGl0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5zdWNjZXNzLmVtaXQodGhpcy5lbXBGb3JtLnZhbHVlKTtcbiAgICAgIHRoaXMuaXNFZGl0TW9kZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHNhdmUoKSB7XG4gICAgLy90aGlzLnNldFZhbGlkYXRpb25Gb3JIb3Vyc0FuZFdhZ2VzT25BY3Rpdml0eVR5cGUoKTtcbiAgICBpZiAodGhpcy5lbXBGb3JtLnZhbGlkKSB7XG4gICAgICB0aGlzLmVtcEZvcm0udmFsdWUuaXNQYXJ0VGltZUVtcGxveWVyRWRpdGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuc3VjY2Vzcy5lbWl0KHRoaXMuZW1wRm9ybS52YWx1ZSk7XG4gICAgICB0aGlzLmluaXRpbGl6ZUVtcGxveWVySW5mb3JGb3JtKCk7XG4gICAgICB0aGlzLmlzRWRpdE1vZGUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIHRoaXMub25DbG9zZS5lbWl0KCk7XG4gIH1cblxuICBpbml0aWxpemVFbXBsb3llckluZm9yRm9ybSgpIHtcbiAgICBsZXQgZW1wSW5mbyA9IHRoaXMuZW1wVG9FZGl0ID8gdGhpcy5lbXBUb0VkaXQgOiBuZXcgRW1wbG95ZXJJbmZvTW9kZWwoKTtcbiAgICB0aGlzLmVtcEZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICdsYXN0RGF5V29ya2VkJzogW2VtcEluZm8ubGFzdERheVdvcmtlZCAhPSBudWxsID8gdGhpcy5nZXREYXRlKGVtcEluZm8ubGFzdERheVdvcmtlZCkgOiAnJywgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBBcHBWYWxpZGF0b3JzLmlzQmV0d2VlbkRhdGUodGhpcy5zdW5EYXRlLCB0aGlzLnNhdERhdGUpXSldLFxuICAgICAgJ2VtcGxveWVyTmFtZSc6IFtlbXBJbmZvLmVtcGxveWVyTmFtZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsVmFsaWRhdG9ycy5wYXR0ZXJuKC9eKD8hLipbJTw+XFxeX3t9XSlbQS1aYS16MC05XFxzXFwuLCYnKCkjIUA6JFxcL1xcXFxcXC1cXCs/XCJdKyQvKV1dLFxuICAgICAgJ2xpbmUxJzogW2VtcEluZm8ubGluZTEsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oL15bMC05QS1aYS16XFxzLCdcXC1cXC4jXFwvXSskLyksVmFsaWRhdG9ycy5tYXhMZW5ndGgoNDApXV0sXG4gICAgICAnbGluZTInOiBbZW1wSW5mby5saW5lMl0sXG4gICAgICAnY2l0eSc6IFtlbXBJbmZvLmNpdHksIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZCxWYWxpZGF0b3JzLnBhdHRlcm4oL14oPyEtKVtBLVphLXogLV0qJC8pLFZhbGlkYXRvcnMubWF4TGVuZ3RoKDMwKV0pXSxcbiAgICAgICdzdGF0ZSc6IFtlbXBJbmZvLnN0YXRlICE9IHVuZGVmaW5lZCA/IGVtcEluZm8uc3RhdGUgOiB0aGlzLnV0aWwuZ2V0U3RhdGUoKSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAnY291bnRyeSc6IFtlbXBJbmZvLmNvdW50cnldLFxuICAgICAgJ2dyb3NzRWFybmluZyc6IFtlbXBJbmZvLmdyb3NzRWFybmluZywgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSldLFxuICAgICAgJ3JlYXNvblNlcGFyYXRpb24nOiBbZW1wSW5mby5yZWFzb25TZXBhcmF0aW9uICE9IHVuZGVmaW5lZCA/IGVtcEluZm8ucmVhc29uU2VwYXJhdGlvbiA6ICcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICdoYXZlUmV0dXJuVG9Xb3JrRGF0ZSc6IFtlbXBJbmZvLmhhdmVSZXR1cm5Ub1dvcmtEYXRlXSxcbiAgICAgICdyZXR1cm5Ub1dvcmtEYXRlJzogW2VtcEluZm8ucmV0dXJuVG9Xb3JrRGF0ZV0sXG4gICAgICAndm9sdW50YXJ5UXVpdCc6IFtlbXBJbmZvLnZvbHVudGFyeVF1aXRdLFxuICAgICAgJ2Rpc2NoYXJnZWQnOiBbZW1wSW5mby5kaXNjaGFyZ2VkXSxcbiAgICAgICdob3Vyc1dvcmtlZEluV2Vlayc6IFtlbXBJbmZvLmhvdXJzV29ya2VkSW5XZWVrLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKV0sXG4gICAgICAnemlwJzogW2VtcEluZm8uemlwICE9IHVuZGVmaW5lZCA/IGVtcEluZm8uemlwIDogJycsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZCwgQXBwVmFsaWRhdG9ycy5pc1ZhbGlkWmlwQ29kZV0pXSxcbiAgICAgICdlbXBsb3llclBob25lJzogW2VtcEluZm8uZW1wbG95ZXJQaG9uZSAhPSB1bmRlZmluZWQgPyBlbXBJbmZvLmVtcGxveWVyUGhvbmUgOiAnJywgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSldLFxuICAgICAgJ2VtcGxveWVySWQnOiBbZW1wSW5mby5lbXBsb3llcklkXSxcbiAgICAgICd0ZW1wV2NFbXBsb3llcklkJzogW2VtcEluZm8udGVtcFdjRW1wbG95ZXJJZCA/IGVtcEluZm8udGVtcFdjRW1wbG95ZXJJZCA6IG5ldyBEYXRlKCkuZ2V0VGltZSgpXSxcbiAgICAgICdwb3RlbnRpYWxJc3N1ZUlkJzogW2VtcEluZm8ucG90ZW50aWFsSXNzdWVJZCA/IGVtcEluZm8ucG90ZW50aWFsSXNzdWVJZCA6IG51bGxdLFxuICAgICAgJ2lzUGFydFRpbWVFbXBsb3llcic6IFtlbXBJbmZvLmlzUGFydFRpbWVFbXBsb3llciA/IGVtcEluZm8uaXNQYXJ0VGltZUVtcGxveWVyIDogbnVsbF0sXG4gICAgICAnam9iVGl0bGUnOiBbZW1wSW5mby5qb2JUaXRsZSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTApXSxcbiAgICAgICdzdGFydERheVdvcmtlZCc6IFtlbXBJbmZvLnN0YXJ0RGF5V29ya2VkXVxuICAgIH0pO1xuXG4gICAgdGhpcy5sYXN0RGF5V29ya2VkLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsID0+IHtcbiAgICAgIGlmICh2YWwpIHtcbiAgICAgICAgdGhpcy5tYXhTdGFydERhdGUgPSBuZXcgRGF0ZSh2YWwpO1xuICAgICAgICBpZiAodGhpcy5zdGFydERheVdvcmtlZC52YWx1ZSkge1xuICAgICAgICAgIGxldCBzdGFydERhdGUgPSBuZXcgRGF0ZSh0aGlzLnN0YXJ0RGF5V29ya2VkLnZhbHVlKTtcbiAgICAgICAgICBpZiAoc3RhcnREYXRlID4gdGhpcy5tYXhTdGFydERhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnREYXlXb3JrZWQucGF0Y2hWYWx1ZShudWxsKTtcbiAgICAgICAgICAgIHRoaXMuc3RhcnREYXlXb3JrZWQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG5cbiAgICB0aGlzLndjRW1wU3RhdHVzLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsID0+IHtcbiAgICAgIHRoaXMuc2V0VmFsaWRhdGlvbkJhc2VkT25FbXBsb3ltZW50U3RhdHVzKHZhbCk7XG4gICAgfSk7XG5cbiAgICBpZiAoZW1wSW5mby5yZWFzb25TZXBhcmF0aW9uKSB7XG4gICAgICB0aGlzLnNldFZhbGlkYXRpb25CYXNlZE9uRW1wbG95bWVudFN0YXR1cyhlbXBJbmZvLnJlYXNvblNlcGFyYXRpb24pO1xuICAgIH1cbiAgICBpZiAodGhpcy5sYXN0RGF5V29ya2VkLnZhbHVlKSB7XG4gICAgICB0aGlzLm1heFN0YXJ0RGF0ZSA9IG5ldyBEYXRlKHRoaXMubGFzdERheVdvcmtlZC52YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYodGhpcy5pc01FKCkpeyAgXG4gICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy53Y0VtcENvdW50cnkpO1xuICAgICAgdGhpcy5zZXRaaXBDb2RlVmFsaWRhdGlvbkJhc2VkT25Db3VudHJ5KCk7XG4gICAgICB0aGlzLndjRW1wQ291bnRyeS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKGNvdW50cnkgPT4ge1xuICAgICAgICB0aGlzLmZpbHRlclN0YXRlKGNvdW50cnkpXG4gICAgICB9KTtcbiAgICAgIHRoaXMud2NFbXBDb3VudHJ5LnNldFZhbHVlKFwiVVNcIik7XG4gICAgfSBlbHNle1xuICAgICAgdGhpcy5zdGF0ZXNDb21ibyA9IENvbWJvT3B0aW9uLlVTX1NUQVRFUztcbiAgICB9ICAgIFxuICB9XG5cbiAgc2V0WmlwQ29kZVZhbGlkYXRpb25CYXNlZE9uQ291bnRyeSgpe1xuICAgIHRoaXMud2NFbXBDb3VudHJ5LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoYyA9PiB7XG4gICAgICBpZihjID09ICdVUycpe1xuICAgICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMud3NaaXBDb2RlKTtcbiAgICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy53c1ppcENvZGUsIHRoaXMudXNaaXBjb2RlVmFsaWRhdGlvbnMpO1xuICAgICAgfSBlbHNlIGlmKGMgPT0gJ0NBJyl7XG4gICAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy53c1ppcENvZGUpO1xuICAgICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLndzWmlwQ29kZSwgdGhpcy5jYW5hZGFaaXBjb2RlVmFsaWRhdGlvbnMpO1xuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBmaWx0ZXJTdGF0ZShldmVudCkge1xuICAgIGNvbnNvbGUubG9nKGV2ZW50LCB0aGlzLndjRW1wQ291bnRyeT8udmFsdWUpO1xuICAgIGxldCBjaG9pY2U6IGFueTtcbiAgICBpZiAodGhpcy53Y0VtcENvdW50cnk/LnZhbHVlID09PSAnVVMnKSB7XG4gICAgICBjb25zdCBjdXJyZW50U3RhdGUgPSBDb21ib09wdGlvbi5VU19TVEFURVMuZmluZChzdGF0ZSA9PiBzdGF0ZS52YWx1ZSA9PSB0aGlzLnV0aWwuZ2V0U3RhdGUoKSlcbiAgICAgIGNob2ljZSA9IFtjdXJyZW50U3RhdGUsIC4uLkNvbWJvT3B0aW9uLlVTX1NUQVRFUy5maWx0ZXIoc3RhdGUgPT4gc3RhdGUudmFsdWUgIT0gdGhpcy51dGlsLmdldFN0YXRlKCkpXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy53Y0VtcENvdW50cnk/LnZhbHVlID09PSAnQ0EnKSB7XG4gICAgICBjaG9pY2UgPSBDb21ib09wdGlvbi5DQV9TVEFURVM7XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZXNDb21ibyA9IGNob2ljZTtcbiAgfVxuXG4gIHVwZGF0ZUdyb3NzRWFybmluZ3MoZ3Jvc3NFYXJuaW5nczogbnVtYmVyKSB7XG4gICAgaWYoZ3Jvc3NFYXJuaW5ncyA9PT0gMCl7XG4gICAgICB0aGlzLmVtcEZvcm0uY29udHJvbHNbJ2dyb3NzRWFybmluZyddLnJlc2V0KCk7XG4gICAgfSBlbHNle1xuICAgICAgdGhpcy5lbXBGb3JtLnBhdGNoVmFsdWUoeyBncm9zc0Vhcm5pbmc6IGdyb3NzRWFybmluZ3MgfSk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlVG90YWxIb3Vycyh0b3RhbEhvdXJzOiBudW1iZXIpIHtcbiAgICBpZih0b3RhbEhvdXJzID09PSAwKXtcbiAgICAgIHRoaXMuZW1wRm9ybS5jb250cm9sc1snaG91cnNXb3JrZWRJbldlZWsnXS5yZXNldCgpO1xuICAgIH0gZWxzZXtcbiAgICB0aGlzLmVtcEZvcm0ucGF0Y2hWYWx1ZSh7aG91cnNXb3JrZWRJbldlZWsgOiB0b3RhbEhvdXJzfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGhhdmVSZXR1cm5Ub1dvcmtEYXRlKCkge1xuICAgIHJldHVybiB0aGlzLmVtcEZvcm0uY29udHJvbHNbJ2hhdmVSZXR1cm5Ub1dvcmtEYXRlJ107XG4gIH1cblxuICBnZXQgdm9sdW50YXJ5UXVpdCgpIHtcbiAgICByZXR1cm4gdGhpcy5lbXBGb3JtLmNvbnRyb2xzWyd2b2x1bnRhcnlRdWl0J107XG4gIH1cblxuICBnZXQgZGlzY2hhcmdlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5lbXBGb3JtLmNvbnRyb2xzWydkaXNjaGFyZ2VkJ107XG4gIH1cblxuICBnZXQgbGFzdERheVdvcmtlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5lbXBGb3JtLmNvbnRyb2xzWydsYXN0RGF5V29ya2VkJ107XG4gIH1cblxuICBnZXQgd2NFbXBOYW1lKCkge1xuICAgIHJldHVybiB0aGlzLmVtcEZvcm0uY29udHJvbHNbJ2VtcGxveWVyTmFtZSddO1xuICB9XG5cbiAgZ2V0IHdjRW1wQWRkcmVzc0xpbmUxKCkge1xuICAgIHJldHVybiB0aGlzLmVtcEZvcm0uY29udHJvbHNbJ2xpbmUxJ107XG4gIH1cblxuICBnZXQgd2NFbXBBZGRyZXNzTGluZTIoKSB7XG4gICAgcmV0dXJuIHRoaXMuZW1wRm9ybS5jb250cm9sc1snbGluZTInXTtcbiAgfVxuXG4gIGdldCB3Y0VtcENpdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuZW1wRm9ybS5jb250cm9sc1snY2l0eSddO1xuICB9XG5cbiAgZ2V0IHdjRW1wU3RhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZW1wRm9ybS5jb250cm9sc1snc3RhdGUnXTtcbiAgfVxuXG4gIGdldCB3Y0VtcENvdW50cnkoKXtcbiAgICByZXR1cm4gdGhpcy5lbXBGb3JtLmNvbnRyb2xzWydjb3VudHJ5J107XG4gIH1cblxuICBnZXQgd3NFbXBBbXRFYXJuZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZW1wRm9ybS5jb250cm9sc1snZ3Jvc3NFYXJuaW5nJ107XG4gIH1cblxuICBnZXQgd2NFbXBTdGF0dXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZW1wRm9ybS5jb250cm9sc1sncmVhc29uU2VwYXJhdGlvbiddO1xuICB9XG5cbiAgZ2V0IHdjRW1wTG93UnR3RGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5lbXBGb3JtLmNvbnRyb2xzWydyZXR1cm5Ub1dvcmtEYXRlJ107XG4gIH1cblxuICBnZXQgd2NFbXBSdHdEYXRlKCkge1xuICAgIHJldHVybiB0aGlzLmVtcEZvcm0uY29udHJvbHNbJ3JldHVyblRvV29ya0RhdGUnXTtcbiAgfVxuXG4gIGdldCB3Y0VtcFdvcmtlZEZvck1vcmVFbXBsb3llcigpIHtcbiAgICByZXR1cm4gdGhpcy5lbXBGb3JtLmNvbnRyb2xzWyd3Y0VtcFdvcmtlZEZvck1vcmVFbXBsb3llciddO1xuICB9XG5cbiAgZ2V0IHdjRW1wSG91cnNXb3JrZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZW1wRm9ybS5jb250cm9sc1snaG91cnNXb3JrZWRJbldlZWsnXTtcbiAgfVxuXG4gIGdldCB3c1ppcENvZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZW1wRm9ybS5jb250cm9sc1snemlwJ107XG4gIH1cblxuICBnZXQgd3NQaG9uZU51bWJlcigpIHtcbiAgICByZXR1cm4gdGhpcy5lbXBGb3JtLmNvbnRyb2xzWydlbXBsb3llclBob25lJ107XG4gIH1cblxuICBnZXQgaGlkRW1wSWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZW1wRm9ybS5jb250cm9sc1snZW1wbG95ZXJJZCddO1xuICB9XG5cbiAgZ2V0IGlzUGFydFRpbWVFbXBsb3llcigpIHtcbiAgICByZXR1cm4gdGhpcy5lbXBGb3JtLmNvbnRyb2xzWydpc1BhcnRUaW1lRW1wbG95ZXInXTtcbiAgfVxuXG4gIGdldCBqb2JUaXRsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5lbXBGb3JtLmNvbnRyb2xzWydqb2JUaXRsZSddO1xuICB9XG5cbiAgZ2V0IHN0YXJ0RGF5V29ya2VkKCkge1xuICAgIHJldHVybiB0aGlzLmVtcEZvcm0uY29udHJvbHNbJ3N0YXJ0RGF5V29ya2VkJ107XG4gIH1cblxuICBzZXRWYWxpZGF0aW9uRm9ySG91cnNBbmRXYWdlc09uQWN0aXZpdHlUeXBlKCl7XG4gICAgaWYodGhpcy5lbXBUb0VkaXQ/LmlzUGFydFRpbWVFbXBsb3llcil7XG4gICAgICBpZigodGhpcy53c0VtcEFtdEVhcm5lZC52YWx1ZSA9PT0gMC4wIHx8IHRoaXMud3NFbXBBbXRFYXJuZWQudmFsdWUgPT09IDApXG4gICAgICAgICYmICh0aGlzLndjRW1wSG91cnNXb3JrZWQudmFsdWUgPT09IDAuMCB8fCB0aGlzLndjRW1wSG91cnNXb3JrZWQudmFsdWUgPT09IDApXG4gICAgICAgICYmIHRoaXMud2NFbXBTdGF0dXMudmFsdWUgPT09ICdXUlBUJyl7XG4gICAgICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLndzRW1wQW10RWFybmVkKTtcbiAgICAgICAgICB0aGlzLndjRW1wU3RhdHVzLnNldEVycm9ycyh7J2NoYW5nZUVtcFN0YXR1cycgOiB0cnVlfSk7XG4gICAgICB9IGVsc2UgaWYoKHRoaXMud3NFbXBBbXRFYXJuZWQudmFsdWUgPT09IDAuMCB8fCB0aGlzLndzRW1wQW10RWFybmVkLnZhbHVlID09PSAwKVxuICAgICAgICAmJiAodGhpcy53Y0VtcEhvdXJzV29ya2VkLnZhbHVlID4gMC4wIHx8IHRoaXMud2NFbXBIb3Vyc1dvcmtlZC52YWx1ZSA+IDApXG4gICAgICAgICYmIHRoaXMud2NFbXBTdGF0dXMudmFsdWUgPT09ICdXUlBUJyl7XG4gICAgICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLndjRW1wU3RhdHVzKTtcbiAgICAgICAgICB0aGlzLndzRW1wQW10RWFybmVkLnNldEVycm9ycyh7J2Vhcm5pbmdzTm90WmVybyc6IHRydWV9KTtcbiAgICAgIH1lbHNlIGlmKCh0aGlzLndzRW1wQW10RWFybmVkLnZhbHVlID09PSAwLjAgfHwgdGhpcy53c0VtcEFtdEVhcm5lZC52YWx1ZSA9PT0gMClcbiAgICAgICAgJiYgKHRoaXMud2NFbXBIb3Vyc1dvcmtlZC52YWx1ZSA+IDAuMCB8fCB0aGlzLndjRW1wSG91cnNXb3JrZWQudmFsdWUgPiAwIHx8XG4gICAgICAgICAgdGhpcy53Y0VtcEhvdXJzV29ya2VkLnZhbHVlID09PSAwLjAgfHwgdGhpcy53Y0VtcEhvdXJzV29ya2VkLnZhbHVlID09PSAwKVxuICAgICAgICAmJiB0aGlzLndjRW1wU3RhdHVzLnZhbHVlICE9PSAnV1JQVCcpe1xuICAgICAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy53Y0VtcFN0YXR1cyk7XG4gICAgICAgICAgdGhpcy53c0VtcEFtdEVhcm5lZC5zZXRFcnJvcnMoeydlYXJuaW5nc05vdFplcm8nOiB0cnVlfSk7XG4gICAgICB9XG4gICAgfSBlbHNle1xuICAgICAgaWYoKHRoaXMud3NFbXBBbXRFYXJuZWQudmFsdWUgPT09IDAuMCB8fCB0aGlzLndzRW1wQW10RWFybmVkLnZhbHVlID09PSAwKVxuICAgICAgICAmJiAodGhpcy53Y0VtcEhvdXJzV29ya2VkLnZhbHVlID09PSAwLjAgfHwgdGhpcy53Y0VtcEhvdXJzV29ya2VkLnZhbHVlID09PSAwKVxuICAgICAgICAmJiB0aGlzLndjRW1wU3RhdHVzLnZhbHVlID09PSAnV1JQVCcpe1xuICAgICAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy53c0VtcEFtdEVhcm5lZCk7XG4gICAgICAgICAgdGhpcy53Y0VtcFN0YXR1cy5zZXRFcnJvcnMoeydjaGFuZ2VFbXBTdGF0dXMnIDogdHJ1ZX0pO1xuICAgICAgfVxuICAgICAgaWYoKHRoaXMud3NFbXBBbXRFYXJuZWQudmFsdWUgPT09IDAuMCB8fCB0aGlzLndzRW1wQW10RWFybmVkLnZhbHVlID09PSAwKVxuICAgICAgICAmJiAodGhpcy53Y0VtcEhvdXJzV29ya2VkLnZhbHVlID4gMC4wIHx8IHRoaXMud2NFbXBIb3Vyc1dvcmtlZC52YWx1ZSA+IDApXG4gICAgICAgICYmIHRoaXMud2NFbXBTdGF0dXMudmFsdWUgPT09ICdXUlBUJyl7XG4gICAgICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLndjRW1wU3RhdHVzKTtcbiAgICAgICAgICB0aGlzLndzRW1wQW10RWFybmVkLnNldEVycm9ycyh7J2Vhcm5pbmdzTm90WmVybyc6IHRydWV9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRWYWxpZGF0aW9uQmFzZWRPbkVtcGxveW1lbnRTdGF0dXModmFsOiBTdHJpbmcpIHtcbiAgICBpZiAodmFsICYmIHZhbCA9PSAnUlRXRicpIHtcbiAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLndjRW1wTG93UnR3RGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy53Y0VtcExvd1J0d0RhdGUpO1xuICAgIH1cblxuICAgIGlmICh2YWwgJiYgdmFsID09ICdMV0xPJykge1xuICAgICAgdGhpcy5qb2JUaXRsZS5jbGVhclZhbGlkYXRvcnM7XG4gICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy5oYXZlUmV0dXJuVG9Xb3JrRGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5oYXZlUmV0dXJuVG9Xb3JrRGF0ZSk7XG4gICAgfVxuXG4gICAgaWYgKHZhbCAmJiB2YWwgPT0gJ0RDRkknKSB7XG4gICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy5kaXNjaGFyZ2VkKTtcbiAgICAgIGlmKCF0aGlzLmlzTVMoKSl7XG4gICAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLmpvYlRpdGxlKTtcbiAgICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMuc3RhcnREYXlXb3JrZWQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuam9iVGl0bGUpO1xuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnN0YXJ0RGF5V29ya2VkKTtcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5kaXNjaGFyZ2VkKTtcbiAgICB9XG5cbiAgICBpZiAodmFsICYmIHZhbCA9PSAnVk9MUScpIHtcbiAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLnZvbHVudGFyeVF1aXQpO1xuICAgICAgaWYoIXRoaXMuaXNNUygpKXtcbiAgICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMuam9iVGl0bGUpO1xuICAgICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy5zdGFydERheVdvcmtlZCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5qb2JUaXRsZSk7XG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuc3RhcnREYXlXb3JrZWQpO1xuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnZvbHVudGFyeVF1aXQpO1xuICAgIH1cblxuICAgIGlmICh2YWwgJiYgdmFsID09ICdTVVNQJyAmJiAhdGhpcy5pc01TKCkpIHtcbiAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLmpvYlRpdGxlKTtcbiAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLnN0YXJ0RGF5V29ya2VkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmpvYlRpdGxlKTtcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5zdGFydERheVdvcmtlZCk7XG4gICAgfVxuXG4gICAgaWYgKHZhbCAmJiB2YWwgPT0gJ1NUTE8nJiYgIXRoaXMuaXNNUygpKSB7XG4gICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy5qb2JUaXRsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5qb2JUaXRsZSk7XG4gICAgfVxuICB9XG5cbiAgc2V0RW1wbG95ZXIoZW1wbG95ZXI6IEVtcGxveWVyU2VhcmNoUmVzdWx0KSB7XG4gICAgdGhpcy53Y0VtcE5hbWUuc2V0VmFsdWUoZW1wbG95ZXIuZW1wbG95ZXJOYW1lKTtcbiAgICB0aGlzLndjRW1wQWRkcmVzc0xpbmUxLnNldFZhbHVlKGVtcGxveWVyLmFkZHJlc3NMaW5lMSk7XG4gICAgdGhpcy53Y0VtcEFkZHJlc3NMaW5lMi5zZXRWYWx1ZShlbXBsb3llci5hZGRyZXNzTGluZTIpO1xuICAgIHRoaXMud2NFbXBDaXR5LnNldFZhbHVlKGVtcGxveWVyLmNpdHkpO1xuICAgIHRoaXMud2NFbXBTdGF0ZS5zZXRWYWx1ZShlbXBsb3llci5zdGF0ZS52YWx1ZSk7XG4gICAgaWYodGhpcy5pc01FKCkpe1xuICAgICAgdGhpcy53Y0VtcENvdW50cnkuc2V0VmFsdWUoZW1wbG95ZXIuY291bnRyeS52YWx1ZSk7XG4gICAgfVxuICAgIHRoaXMud3NaaXBDb2RlLnNldFZhbHVlKGVtcGxveWVyLnppcCk7XG4gICAgdGhpcy5oaWRFbXBJZC5zZXRWYWx1ZShlbXBsb3llci5lbXBsb3llcklkKTtcbiAgfVxuXG4gIGRhdGVJbnB1dChldmVudCkge1xuICAgIGxldCBjdXJyZW50VmFsdWU6IHN0cmluZyA9IGV2ZW50LnNyY0VsZW1lbnQudmFsdWU7XG4gICAgaWYgKGN1cnJlbnRWYWx1ZSkge1xuICAgICAgaWYgKGN1cnJlbnRWYWx1ZS5sZW5ndGggPT0gMiAmJiBjdXJyZW50VmFsdWUuY2hhckF0KDIpICE9ICcvJykge1xuICAgICAgICBldmVudC50YXJnZXQudmFsdWUgPSBjdXJyZW50VmFsdWUgKyBcIi9cIjtcbiAgICAgIH1cbiAgICAgIGlmIChjdXJyZW50VmFsdWUubGVuZ3RoID09IDUgJiYgY3VycmVudFZhbHVlLmNoYXJBdCg1KSAhPSAnLycpIHtcbiAgICAgICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gY3VycmVudFZhbHVlICsgXCIvXCI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0RGF0ZSh3c0RhdGUpOiBEYXRlIHtcbiAgICBpZighKHdzRGF0ZSBpbnN0YW5jZW9mIERhdGUpKXtcbiAgICAgIHJldHVybiB0aGlzLnV0aWwuZ2V0RW50ZXJlZERhdGUod3NEYXRlKTtcbiAgICB9XG4gICAgcmV0dXJuIHdzRGF0ZTtcbiAgfVxuXG4gIHNldFdhZ2VGbGFnKGV2ZW50OiBFdmVudCl7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLndhZ2VEaWFsb2cgPSB0cnVlO1xuICB9XG5cbiAgb25EaWFsb2dTYXZlKHdhZ2VDYWxjdWxhdG9yU2F2ZWREYXRhOiBXYWdlQ2FsY3VsYXRvck1vZGVsKXtcbiAgICB0aGlzLndhZ2VDYWxjdWxhdG9yRGF0YSA9IHdhZ2VDYWxjdWxhdG9yU2F2ZWREYXRhO1xuICAgIHRoaXMud2FnZURpYWxvZyA9IGZhbHNlO1xuICB9XG4gXG4gIG9uRGlhbG9nQ2FuY2VsKCl7XG4gICAgdGhpcy53YWdlRGlhbG9nID0gZmFsc2U7XG4gIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZW1wRm9ybVwiICNlbXBGb3JtRGlyZWN0aXZlPVwibmdGb3JtXCI+XHJcbiAgPGlvbi1ncmlkPlxyXG4gICAgPGlvbi1yb3cgKm5nSWY9XCIhZW1wVG9FZGl0Py5pc1BhcnRUaW1lRW1wbG95ZXJcIj5cclxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tcGFkZGluZ1wiIHNpemU9XCIxMlwiIHNpemVTbT1cIjEyXCIgc2l6ZVhzPVwiMTJcIiBzaXplTWQ9XCI2XCIgc2l6ZUxnPVwiNlwiIHNpemVYbD1cIjZcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicC1mbHVpZCBmb3JtZ3JpZFwiPlxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cIndjRW1wTmFtZVwiPkVtcGxveWVyIE5hbWU8L2xhYmVsPlxyXG4gICAgICAgICAgICA8YXBwLXNlYXJjaC1lbXBsb3llciBpZD1cIndjRW1wbG95ZXJOYW1lXCIgW2Zvcm1Db250cm9sXT1cIndjRW1wTmFtZVwiIChvbkZvdW5kKT1cInNldEVtcGxveWVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIFtlbXBUeXBlXT1cIidSRUcnXCI+PC9hcHAtc2VhcmNoLWVtcGxveWVyPlxyXG4gICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nd2NFbXBOYW1lJyBbZm9ybV09XCJlbXBGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCcsIHBhdHRlcm46ICclLCA8LCA+LCBeLCBfLCB7LCB9IGFyZSBub3QgYWxsb3dlZCcsXHJcbiAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCIgKm5nSWY9XCJpc01FKClcIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwid2NFbXBTdGF0ZVwiPkNvdW50cnk8L2xhYmVsPjxicj5cclxuICAgICAgICAgICAgICA8YXBwLWRyb3Bkb3duIGlucHV0SWQ9XCJ3Y0VtcENvdW50cnlcIiBbb3B0aW9uc109XCJjb3VudHJ5T3B0aW9uc1wiIG9wdGlvbkxhYmVsPVwidGV4dFwiIG9wdGlvblZhbHVlPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCIgW2Zvcm1Db250cm9sXT1cIndjRW1wQ291bnRyeVwiIFthdXRvRGlzcGxheUZpcnN0XT1cImZhbHNlXCIgaW5wdXRJZD1cIndjRW1wQ291bnRyeVwiPjwvYXBwLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSd3Y0VtcENvdW50cnknIFtmb3JtXT1cImVtcEZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJ1xyXG4gICAgICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJ3Y0VtcEFkZHJlc3NMaW5lMVwiPlN0cmVldCBBZGRyZXNzPC9sYWJlbD5cclxuICAgICAgICAgICAgPGlucHV0IGlkPVwid2NFbXBBZGRyZXNzTGluZTFcIiB0eXBlPVwiaW5wdXRcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbF09XCJ3Y0VtcEFkZHJlc3NMaW5lMVwiIGFwcFN0cmlwSW52aXNpYmxlQ2hhcnMvPlxyXG4gICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nd2NFbXBBZGRyZXNzTGluZTEnIFtmb3JtXT1cImVtcEZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJywgcGF0dGVybjogJ29ubHkgbGV0dGVycywgbnVtYmVycywgc3BhY2VzLCBjb21tYXMsIHBlcmlvZHMsIGFwb3N0cm9waGVzLCBoeXBoZW5zLCAjIGFuZCAvIGFsbG93ZWQnLFxyXG4gICAgICAgICAgICAgICAgbWF4bGVuZ3RoOiAnY2Fubm90IGV4Y2VlZCA0MCBjaGFyYWN0ZXJzJ1xyXG4gICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwid2NFbXBDaXR5XCI+Q2l0eTwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dCBpZD1cIndjRW1wQ2l0eVwiIHR5cGU9XCJpbnB1dFwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sXT1cIndjRW1wQ2l0eVwiIGFwcFN0cmlwSW52aXNpYmxlQ2hhcnMvPlxyXG4gICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nd2NFbXBDaXR5JyBbZm9ybV09XCJlbXBGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCcsIHBhdHRlcm46ICdjaXR5IG5hbWUgY2FuIG9ubHkgY29udGFpbiBsZXR0ZXJzLCBzcGFjZXMsIGFuZCBoeXBoZW5zJyxcclxuICAgICAgICAgICAgICAgIG1heGxlbmd0aDogJ2Nhbm5vdCBleGNlZWQgMzAgY2hhcmFjdGVycydcclxuICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImlzTUUoKVwiPlxyXG4gICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICA8aW9uLWNvbCBzdHlsZT1cInBhZGRpbmc6IDBweDtcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwid2NFbXBTdGF0ZVwiPlN0YXRlPC9sYWJlbD48YnI+XHJcbiAgICAgICAgICAgICAgICAgIDxhcHAtZHJvcGRvd24gaW5wdXRJZD1cIndjRW1wU3RhdGVcIiBbb3B0aW9uc109XCJzdGF0ZXNDb21ib1wiIG9wdGlvbkxhYmVsPVwidGV4dFwiIG9wdGlvblZhbHVlPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiIFtmb3JtQ29udHJvbF09XCJ3Y0VtcFN0YXRlXCIgW2F1dG9EaXNwbGF5Rmlyc3RdPVwiZmFsc2VcIiBpbnB1dElkPVwid2NFbXBTdGF0ZVwiPjwvYXBwLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nd2NFbXBTdGF0ZScgW2Zvcm1dPVwiZW1wRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiMVwiPjwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICA8aW9uLWNvbCBzdHlsZT1cInBhZGRpbmc6IDBweDtcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwid3NaaXBDb2RlXCI+WmlwIENvZGU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJ3c1ppcENvZGVcIiB0eXBlPVwiaW5wdXRcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbF09XCJ3c1ppcENvZGVcIiBtaW5sZW5ndGg9XCI1XCIgbWF4bGVuZ3RoPVwiOVwiXHJcbiAgICAgICAgICAgICAgICAgICAgYXBwU3RyaXBJbnZpc2libGVDaGFycyAvPlxyXG4gICAgICAgICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nd3NaaXBDb2RlJyBbZm9ybV09XCJlbXBGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52YWxpZExlbmd0aDogJ1ppcCBjb2RlIHNob3VsZCBiZSBvZiA1IG9yIDkgZGlnaXRzLicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmFsaWROdW1iZXI6ICdaaXAgY29kZSBzaG91bGQgb25seSBoYXZlIG51bWJlcnMuJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52YWxpZFppcENvZGU6ICdwbGVhc2UgZW50ZXIgYSB2YWxpZCB6aXAgY29kZSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFpc01FKClcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIndjRW1wU3RhdGVcIj5TdGF0ZTwvbGFiZWw+PGJyPlxyXG4gICAgICAgICAgICAgIDxhcHAtZHJvcGRvd24gaW5wdXRJZD1cIndjRW1wU3RhdGVcIiBbb3B0aW9uc109XCJzdGF0ZXNDb21ib1wiIG9wdGlvbkxhYmVsPVwidGV4dFwiIG9wdGlvblZhbHVlPVwidmFsdWVcIiBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cIndjRW1wU3RhdGVcIiBbYXV0b0Rpc3BsYXlGaXJzdF09XCJmYWxzZVwiIGlucHV0SWQ9XCJ3Y0VtcFN0YXRlXCI+PC9hcHAtZHJvcGRvd24+XHJcbiAgICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J3djRW1wU3RhdGUnIFtmb3JtXT1cImVtcEZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJ3c1ppcENvZGVcIj5aaXAgQ29kZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPGlucHV0IGlkPVwid3NaaXBDb2RlXCIgdHlwZT1cImlucHV0XCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xdPVwid3NaaXBDb2RlXCIgbWlubGVuZ3RoPVwiNVwiIG1heGxlbmd0aD1cIjlcIlxyXG4gICAgICAgICAgICAgICAgYXBwU3RyaXBJbnZpc2libGVDaGFycyAvPlxyXG4gICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSd3c1ppcENvZGUnIFtmb3JtXT1cImVtcEZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmFsaWRMZW5ndGg6ICdaaXAgY29kZSBzaG91bGQgYmUgb2YgNSBvciA5IGRpZ2l0cy4nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52YWxpZE51bWJlcjogJ1ppcCBjb2RlIHNob3VsZCBvbmx5IGhhdmUgbnVtYmVycy4nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52YWxpZFppcENvZGU6ICdwbGVhc2UgZW50ZXIgYSB2YWxpZCB6aXAgY29kZSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJsYXN0RGF5V29ya2VkXCI+TGFzdCBkYXkgeW91IHdvcmtlZDwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxwLWNhbGVuZGFyIFtpY29uQXJpYUxhYmVsXT1cIidMYXN0IGRheSB3b3JrZWQnXCIgW3Nob3dJY29uXT1cInRydWVcIiBpbnB1dElkPVwibGFzdERheVdvcmtlZFwiIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImxhc3REYXlXb3JrZWRcIiBbbWluRGF0ZV09XCJzdW5EYXRlXCIgW21heERhdGVdPVwic2F0RGF0ZVwiXHJcbiAgICAgICAgICAgICAgW2RlZmF1bHREYXRlXT1cInN1bkRhdGVcIiBbc2VsZWN0T3RoZXJNb250aHNdPVwidHJ1ZVwiIHBsYWNlaG9sZGVyPVwibW0vZGQveXl5eVwiIGRhdGVGb3JtYXQ9XCJtbS9kZC95eVwiXHJcbiAgICAgICAgICAgICAgW21vbnRoTmF2aWdhdG9yXT1cInRydWVcIiBbeWVhck5hdmlnYXRvcl09XCJ0cnVlXCIgeWVhclJhbmdlPVwiMTkwMToyMDUwXCIgKG9uSW5wdXQpPVwiZGF0ZUlucHV0KCRldmVudClcIj48L3AtY2FsZW5kYXI+XHJcbiAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSdsYXN0RGF5V29ya2VkJyBbZm9ybV09XCJlbXBGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCcsXHJcbiAgICAgICAgICAgICAgICBkYXRlTm90QmV0d2VlbjogJ0RhdGUgc2hvdWxkIGJlIGJldHdlZW4gJyArIGR5bmFtaWNQYXJhbS5zdW5kYXlfZGF0ZSArICcgYW5kICcgKyBkeW5hbWljUGFyYW0uc2F0dXJkYXlfZGF0ZSArICcuJ1xyXG4gICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2lvbi1jb2w+XHJcbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXBhZGRpbmdcIiBzaXplPVwiMTJcIiBzaXplU209XCIxMlwiIHNpemVYcz1cIjEyXCIgc2l6ZU1kPVwiNlwiIHNpemVMZz1cIjZcIiBzaXplWGw9XCI2XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInAtZmx1aWQgZm9ybWdyaWRcIj5cclxuXHJcbiAgICAgICAgICBcclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cIndzUGhvbmVOdW1iZXJcIj5QaG9uZSBOby48L2xhYmVsPlxyXG4gICAgICAgICAgICA8cC1pbnB1dE1hc2sgaW5wdXRJZD1cIndzUGhvbmVOdW1iZXJcIiBbZm9ybUNvbnRyb2xdPVwid3NQaG9uZU51bWJlclwiIG1hc2s9XCIoOTk5KSA5OTktOTk5OVwiXHJcbiAgICAgICAgICAgICAgdW5tYXNrPVwidHJ1ZVwiPjwvcC1pbnB1dE1hc2s+XHJcbiAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSd3c1Bob25lTnVtYmVyJyBbZm9ybV09XCJlbXBGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCdcclxuICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cIndjRW1wU3RhdHVzXCI+V2hhdCdzIHlvdXIgZW1wbG95bWVudCBzdGF0dXMgd2l0aCB0aGlzIGVtcGxveWVyPzwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxhcHAtZHJvcGRvd24gaW5wdXRJZD1cIndjRW1wU3RhdHVzXCIgW29wdGlvbnNdPVwiZW1wbG95bWVudFN0YXR1c09wdGlvbnNBbGxcIiBvcHRpb25MYWJlbD1cInRleHRcIlxyXG4gICAgICAgICAgICAgIG9wdGlvblZhbHVlPVwidmFsdWVcIiBhcHBlbmRUbz1cImJvZHlcIiBbZm9ybUNvbnRyb2xdPVwid2NFbXBTdGF0dXNcIiBbYXV0b0Rpc3BsYXlGaXJzdF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgaW5wdXRJZD1cIndjRW1wU3RhdHVzMVwiPjwvYXBwLWRyb3Bkb3duPjxiciAvPlxyXG4gICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nd2NFbXBTdGF0dXMnIFtmb3JtXT1cImVtcEZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJywgY2hhbmdlRW1wU3RhdHVzOiAnSWYgaG91cnMgYW5kIGVhcm5pbmdzIGFyZSBib3RoIDAsIGVtcGxveW1lbnQgc3RhdHVzIGNhbm5vdCBiZSB3b3JraW5nLXBhcnQgdGltZS4nIFxyXG4gICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiICpuZ0lmPVwid2NFbXBTdGF0dXMudmFsdWUgPT0gJ0xXTE8nXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJoYXZlUmV0dXJuVG9Xb3JrRGF0ZVwiPkRvIHlvdSBrbm93IHdoZW4geW91J3JlIHJldHVybmluZyB0byBmdWxsLXRpbWUgd29yaz88L2xhYmVsPlxyXG4gICAgICAgICAgICA8cC1zZWxlY3RCdXR0b24gW29wdGlvbnNdPVwieWVzTm9PcHRpb25cIiBbZm9ybUNvbnRyb2xdPVwiaGF2ZVJldHVyblRvV29ya0RhdGVcIiBvcHRpb25MYWJlbD1cInRleHRcIlxyXG4gICAgICAgICAgICAgIG9wdGlvblZhbHVlPVwidmFsdWVcIj48L3Atc2VsZWN0QnV0dG9uPlxyXG4gICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0naGF2ZVJldHVyblRvV29ya0RhdGUnIFtmb3JtXT1cImVtcEZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJ1xyXG4gICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCIgKm5nSWY9XCJ3Y0VtcFN0YXR1cy52YWx1ZSA9PSAnTFdMTycgJiYgaGF2ZVJldHVyblRvV29ya0RhdGUudmFsdWUgPT0gJ1knXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJ3Y0VtcExvd1J0d0RhdGVcIj5XaGVuPzwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgICAgICAgICAgIDxwLWNhbGVuZGFyIFtzaG93SWNvbl09XCJ0cnVlXCIgaW5wdXRJZD1cIndjRW1wTG93UnR3RGF0ZVwiIGFwcGVuZFRvPVwiYm9keVwiIFtmb3JtQ29udHJvbF09XCJ3Y0VtcExvd1J0d0RhdGVcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJtbS9kZC95eXl5XCIgW3Nob3dPbkZvY3VzXT1cImZhbHNlXCIgKG9uSW5wdXQpPVwiZGF0ZUlucHV0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgW2ljb25BcmlhTGFiZWxdPVwiJ1doZW4/J1wiIFttb250aE5hdmlnYXRvcl09XCJ0cnVlXCIgW3llYXJOYXZpZ2F0b3JdPVwidHJ1ZVwiIHllYXJSYW5nZT1cIjE5MDE6MjA1MFwiPjwvcC1jYWxlbmRhcj5cclxuICAgICAgICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwiJ3dlZWtsaWVzLnYyLmVtcGxveW1lbnQucnR3LmluZm8ucG9wdXAuMjE1NScgfCB0cmFuc2xhdGUgfCB0cnVzdEh0bWxcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDhweDsgcGFkZGluZy10b3A6M3B4XCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J3djRW1wTG93UnR3RGF0ZScgW2Zvcm1dPVwiZW1wRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnXHJcbiAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCIgKm5nSWY9XCJ3Y0VtcFN0YXR1cy52YWx1ZSA9PSAnUlRXRidcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cIndjRW1wUnR3RGF0ZVwiPlJldHVybiB0byB3b3JrIGRhdGU8L2xhYmVsPlxyXG4gICAgICAgICAgICA8cC1jYWxlbmRhciBbc2hvd0ljb25dPVwidHJ1ZVwiIGlucHV0SWQ9XCJ3Y0VtcFJ0d0RhdGVcIiBhcHBlbmRUbz1cImJvZHlcIiBbZm9ybUNvbnRyb2xdPVwid2NFbXBSdHdEYXRlXCJcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIm1tL2RkL3l5eXlcIiBbc2hvd09uRm9jdXNdPVwiZmFsc2VcIiAob25JbnB1dCk9XCJkYXRlSW5wdXQoJGV2ZW50KVwiIG9wdGlvblZhbHVlPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgIFtpY29uQXJpYUxhYmVsXT1cIidSZXR1cm4gdG8gd29yayBkYXRlJ1wiIFttb250aE5hdmlnYXRvcl09XCJ0cnVlXCIgW3llYXJOYXZpZ2F0b3JdPVwidHJ1ZVwiIHllYXJSYW5nZT1cIjE5MDE6MjA1MFwiPjwvcC1jYWxlbmRhcj5cclxuICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J3djRW1wUnR3RGF0ZScgW2Zvcm1dPVwiZW1wRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnXHJcbiAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCIgKm5nSWY9XCJ3Y0VtcFN0YXR1cy52YWx1ZSA9PSAnRENGSSdcIj5cclxuICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgZm9yPVwiZGlzY2hhcmdlRGV0YWlsXCI+e3tcImluZHVjdGlvbi5jb25maXJtLmVtcGxveW1lbnQucmVhc29uLnNlcGFyYXRpb24uZGlzY2hhcmdlXCJ8dHJhbnNsYXRlfX08L2xhYmVsPjxicj5cclxuICAgICAgICAgICAgPGFwcC1kcm9wZG93biBbb3B0aW9uc109XCJkaXNjaGFyZ2VSZWFzb25PcHRpb25zQWxsXCIgW2Zvcm1Db250cm9sXT1cImRpc2NoYXJnZWRcIiBvcHRpb25MYWJlbD1cInRleHRcIlxyXG4gICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiIFthdXRvRGlzcGxheUZpcnN0XT1cImZhbHNlXCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIGlucHV0SWQ9XCJkaXNjaGFyZ2VkMVwiPjwvYXBwLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nZGlzY2hhcmdlZCcgW2Zvcm1dPVwiZW1wRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnXHJcbiAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCIgKm5nSWY9XCJ3Y0VtcFN0YXR1cy52YWx1ZSA9PSAnVk9MUSdcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cInZvbFF1aXREZXRhaWxzXCI+e3tcImluZHVjdGlvbi5jb25maXJtLmVtcGxveW1lbnQucmVhc29uLnNlcGFyYXRpb24ucXVpdFwifHRyYW5zbGF0ZX19PC9sYWJlbD48YnI+XHJcbiAgICAgICAgICAgIDxhcHAtZHJvcGRvd24gW29wdGlvbnNdPVwidm9sUXVpdFJlYXNvbk9wdGlvbnNBbGxcIiBbZm9ybUNvbnRyb2xdPVwidm9sdW50YXJ5UXVpdFwiIG9wdGlvbkxhYmVsPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCIgW2F1dG9EaXNwbGF5Rmlyc3RdPVwiZmFsc2VcIiBvcHRpb25WYWx1ZT1cInZhbHVlXCIgaW5wdXRJZD1cInZvbHVudGFyeVF1aXQxXCI+PC9hcHAtZHJvcGRvd24+XHJcbiAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSd2b2x1bnRhcnlRdWl0JyBbZm9ybV09XCJlbXBGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCdcclxuICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiAqbmdJZj1cImlzTVMoKSA/IGZhbHNlIDogKHdjRW1wU3RhdHVzLnZhbHVlID09ICdWT0xRJyB8fCB3Y0VtcFN0YXR1cy52YWx1ZSA9PSdTVVNQJyB8fCB3Y0VtcFN0YXR1cy52YWx1ZSA9PSdEQ0ZJJylcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cInN0YXJ0RGF5V29ya2VkXCI+Rmlyc3QgZGF5IHlvdSB3b3JrZWQ8L2xhYmVsPlxyXG4gICAgICAgICAgICA8cC1jYWxlbmRhciBbaWNvbkFyaWFMYWJlbF09XCInU3RhcnQgZGF5IHdvcmtlZCdcIiBbc2hvd0ljb25dPVwidHJ1ZVwiIGlucHV0SWQ9XCJzdGFydERheVdvcmtlZFwiIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInN0YXJ0RGF5V29ya2VkXCIgW21heERhdGVdPVwibWF4U3RhcnREYXRlXCJcclxuICAgICAgICAgICAgICBbZGVmYXVsdERhdGVdPVwic3VuRGF0ZVwiIFtzZWxlY3RPdGhlck1vbnRoc109XCJ0cnVlXCIgcGxhY2Vob2xkZXI9XCJtbS9kZC95eXl5XCIgXHJcbiAgICAgICAgICAgICAgW21vbnRoTmF2aWdhdG9yXT1cInRydWVcIiBbeWVhck5hdmlnYXRvcl09XCJ0cnVlXCIgeWVhclJhbmdlPVwiMTkwMToyMDUwXCIgKG9uSW5wdXQpPVwiZGF0ZUlucHV0KCRldmVudClcIj48L3AtY2FsZW5kYXI+XHJcbiAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSdzdGFydERheVdvcmtlZCcgW2Zvcm1dPVwiZW1wRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnLFxyXG4gICAgICAgICAgICAgICAgZGF0ZU5vdEJldHdlZW46ICdEYXRlIHNob3VsZCBiZSBiZXR3ZWVuICcgKyBkeW5hbWljUGFyYW0uc3VuZGF5X2RhdGUgKyAnIGFuZCAnICsgZHluYW1pY1BhcmFtLnNhdHVyZGF5X2RhdGUgKyAnLidcclxuICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiAqbmdJZj1cImlzTVMoKSA/IGZhbHNlIDogKHdjRW1wU3RhdHVzLnZhbHVlID09ICdWT0xRJyB8fCB3Y0VtcFN0YXR1cy52YWx1ZSA9PSdTVVNQJyB8fCB3Y0VtcFN0YXR1cy52YWx1ZSA9PSdEQ0ZJJyB8fCB3Y0VtcFN0YXR1cy52YWx1ZSA9PSdTVExPJylcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cImpvYlRpdGxlXCI+Sm9iIFRpdGxlPC9sYWJlbD5cclxuICAgICAgICAgICAgPGlucHV0IGlkPVwiam9iVGl0bGVcIiB0eXBlPVwiaW5wdXRcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbF09XCJqb2JUaXRsZVwiIHJlcXVpcmVkIGFwcFN0cmlwSW52aXNpYmxlQ2hhcnMvPlxyXG4gICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nam9iVGl0bGUnIFtmb3JtXT1cImVtcEZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJ1xyXG4gICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgW2Zvcm1Db250cm9sXT1cImhpZEVtcElkXCIgLz5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCIgKm5nSWY9XCIhaXNNRSgpXCI+XHJcbiAgICAgICAgPHNwYW4gKGNsaWNrKT1cInNldFdhZ2VGbGFnKCRldmVudClcIiBjbGFzcz1cInVuZGVybGluZS1ibHVlXCIgc3R5bGU9XCJjdXJzb3I6cG9pbnRlcjtcIj5cclxuICAgICAgICAgIDxiPkVhcm5pbmdzIENhbGN1bGF0b3I8L2I+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwid2FnZURpYWxvZ1wiPlxyXG4gICAgICAgICAgICA8YXBwLXdhZ2UtY2FsY3VsYXRvciBbZHluYW1pY1BhcmFtXT1cImR5bmFtaWNQYXJhbVwiIFtzaG93Q2FsY3VsYXRvclBvcHVwXT1cInRydWVcIiBcclxuICAgICAgICAgICAgKGdyb3NzRWFybmluZ3NDaGFuZ2UpPVwidXBkYXRlR3Jvc3NFYXJuaW5ncygkZXZlbnQpXCIgKHRvdGFsSG91cnNDaGFuZ2UpPVwidXBkYXRlVG90YWxIb3VycygkZXZlbnQpXCJcclxuICAgICAgICAgICAgKHNhdmVDbGlja2VkKT1cIm9uRGlhbG9nU2F2ZSgkZXZlbnQpXCIgKGNhbmNlbENsaWNrZWQpPVwib25EaWFsb2dDYW5jZWwoKVwiIFt3YWdlQ2FsY3VsYXRvclNhdmVkRGF0YV09XCJ3YWdlQ2FsY3VsYXRvckRhdGFcIj48L2FwcC13YWdlLWNhbGN1bGF0b3I+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XHJcbiAgICAgICAgICA8bGFiZWwgZm9yPVwid2NFbXBIb3Vyc1dvcmtlZFwiPkhvdXJzIHdvcmtlZDwvbGFiZWw+PGJyLz5cclxuICAgICAgICAgIDxwLWlucHV0TnVtYmVyIGlucHV0SWQ9XCJ3Y0VtcEhvdXJzV29ya2VkXCIgW2Zvcm1Db250cm9sXT1cIndjRW1wSG91cnNXb3JrZWRcIiBtYXhsZW5ndGg9XCIxMFwiXHJcbiAgICAgICAgICBtb2RlPVwiZGVjaW1hbFwiIFttaW5GcmFjdGlvbkRpZ2l0c109XCIxXCIgW21heEZyYWN0aW9uRGlnaXRzXT1cIjJcIj48L3AtaW5wdXROdW1iZXI+PGJyPlxyXG4gICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J3djRW1wSG91cnNXb3JrZWQnIFtmb3JtXT1cImVtcEZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCcsIGhvdXJzUGVyV2Vla0V4Y2VlZGVkOiAndG90YWwgaG91cnMgbXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuIDE2OCBmb3IgdGhlIHdlZWsnXHJcbiAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XHJcbiAgICAgICAgICA8bGFiZWwgZm9yPVwid3NFbXBBbXRFYXJuZWRcIj5Ub3RhbCBHcm9zcyBFYXJuaW5nczwvbGFiZWw+XHJcbiAgICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwiJ3dlZWtsaWVzLnYyLmVtcGxveW1lbnQucnR3LmluZm8ucG9wdXAuMTAwMCcgfCB0cmFuc2xhdGUgfCB0cnVzdEh0bWxcIlxyXG4gICAgICAgICAgICBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4OyBwYWRkaW5nLXRvcDozcHhcIj48L2FwcC1vdmVybGF5LWluZm8+PGJyLz5cclxuICAgICAgICAgIDxwLWlucHV0TnVtYmVyIGlucHV0SWQ9XCJ3c0VtcEFtdEVhcm5lZFwiIG1vZGU9XCJjdXJyZW5jeVwiIGN1cnJlbmN5PVwiVVNEXCIgbG9jYWxlPVwiZW4tVVNcIlxyXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwid3NFbXBBbXRFYXJuZWRcIiBtYXhsZW5ndGg9XCIxMFwiIHBsYWNlaG9sZGVyPVwiJDAuMDBcIj48L3AtaW5wdXROdW1iZXI+PGJyPlxyXG4gICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J3dzRW1wQW10RWFybmVkJyBbZm9ybV09XCJlbXBGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnLCBlYXJuaW5nc05vdFplcm86ICdHcm9zcyBFYXJuaW5ncyBjYW5ub3QgYmUgemVyby4nXHJcbiAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9pb24tY29sPlxyXG4gICAgPC9pb24tcm93PlxyXG4gICAgPGlvbi1yb3cgKm5nSWY9XCJlbXBUb0VkaXQ/LmlzUGFydFRpbWVFbXBsb3llclwiPlxyXG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi1wYWRkaW5nXCIgc2l6ZT1cIjEyXCIgc2l6ZVNtPVwiMTJcIiBzaXplWHM9XCIxMlwiIHNpemVNZD1cIjZcIiBzaXplTGc9XCI2XCIgc2l6ZVhsPVwiNlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLWZsdWlkIGZvcm1ncmlkXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgICAgPGI+e3t3Y0VtcE5hbWUudmFsdWV9fTwvYj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPHNlY3Rpb24gaGlkZGVuPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIFtmb3JtQ29udHJvbF09XCJ3Y0VtcE5hbWVcIiAvPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIFtmb3JtQ29udHJvbF09XCJ3Y0VtcEFkZHJlc3NMaW5lMVwiIC8+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgW2Zvcm1Db250cm9sXT1cIndjRW1wQ2l0eVwiIC8+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgW2Zvcm1Db250cm9sXT1cIndjRW1wU3RhdGVcIiAvPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIFtmb3JtQ29udHJvbF09XCJ3c1ppcENvZGVcIiAvPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIFtmb3JtQ29udHJvbF09XCJ3c1Bob25lTnVtYmVyXCIgLz5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBbZm9ybUNvbnRyb2xdPVwiaGlkRW1wSWRcIiAvPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIFtmb3JtQ29udHJvbF09XCJpc1BhcnRUaW1lRW1wbG95ZXJcIiAvPlxyXG4gICAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJ3Y0VtcFN0YXR1c1wiPldoYXQncyB5b3VyIGVtcGxveW1lbnQgc3RhdHVzIHdpdGggdGhpcyBlbXBsb3llcj88L2xhYmVsPlxyXG4gICAgICAgICAgICA8YXBwLWRyb3Bkb3duIGlucHV0SWQ9XCJ3Y0VtcFN0YXR1c1wiIFtvcHRpb25zXT1cImVtcGxveW1lbnRTdGF0dXNPcHRpb25zQWxsXCIgb3B0aW9uTGFiZWw9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICBvcHRpb25WYWx1ZT1cInZhbHVlXCIgYXBwZW5kVG89XCJib2R5XCIgW2Zvcm1Db250cm9sXT1cIndjRW1wU3RhdHVzXCIgW2F1dG9EaXNwbGF5Rmlyc3RdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgIGlucHV0SWQ9XCJ3Y0VtcFN0YXR1czJcIj48L2FwcC1kcm9wZG93bj48YnIgLz5cclxuICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J3djRW1wU3RhdHVzJyBbZm9ybV09XCJlbXBGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJywgY2hhbmdlRW1wU3RhdHVzOiAnSWYgaG91cnMgYW5kIGVhcm5pbmdzIGFyZSBib3RoIDAsIGVtcGxveW1lbnQgc3RhdHVzIGNhbm5vdCBiZSB3b3JraW5nLXBhcnQgdGltZS4nXHJcbiAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiAqbmdJZj1cIndjRW1wU3RhdHVzLnZhbHVlID09ICdMV0xPJ1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwiaGF2ZVJldHVyblRvV29ya0RhdGVcIj5EbyB5b3Uga25vdyB3aGVuIHlvdSdyZSByZXR1cm5pbmcgdG8gZnVsbC10aW1lIHdvcms/PC9sYWJlbD5cclxuICAgICAgICAgICAgPHAtc2VsZWN0QnV0dG9uIFtvcHRpb25zXT1cInllc05vT3B0aW9uXCIgW2Zvcm1Db250cm9sXT1cImhhdmVSZXR1cm5Ub1dvcmtEYXRlXCIgb3B0aW9uTGFiZWw9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICBvcHRpb25WYWx1ZT1cInZhbHVlXCI+PC9wLXNlbGVjdEJ1dHRvbj5cclxuICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J2hhdmVSZXR1cm5Ub1dvcmtEYXRlJyBbZm9ybV09XCJlbXBGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJ1xyXG4gICAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiAqbmdJZj1cIndjRW1wU3RhdHVzLnZhbHVlID09ICdMV0xPJyAmJiBoYXZlUmV0dXJuVG9Xb3JrRGF0ZS52YWx1ZSA9PSAnWSdcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cIndjRW1wTG93UnR3RGF0ZVwiPldoZW4/PC9sYWJlbD5cclxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgICAgICAgPHAtY2FsZW5kYXIgW3Nob3dJY29uXT1cInRydWVcIiBpbnB1dElkPVwid2NFbXBMb3dSdHdEYXRlXCIgYXBwZW5kVG89XCJib2R5XCIgW2Zvcm1Db250cm9sXT1cIndjRW1wTG93UnR3RGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIm1tL2RkL3l5eXlcIiBbc2hvd09uRm9jdXNdPVwiZmFsc2VcIiAob25JbnB1dCk9XCJkYXRlSW5wdXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBbaWNvbkFyaWFMYWJlbF09XCInV2hlbj8nXCIgW21vbnRoTmF2aWdhdG9yXT1cInRydWVcIiBbeWVhck5hdmlnYXRvcl09XCJ0cnVlXCIgeWVhclJhbmdlPVwiMTkwMToyMDUwXCI+PC9wLWNhbGVuZGFyPlxyXG4gICAgICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCInd2Vla2xpZXMudjIuZW1wbG95bWVudC5ydHcuaW5mby5wb3B1cC4yMDUwJyB8IHRyYW5zbGF0ZSB8IHRydXN0SHRtbFwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4OyBwYWRkaW5nLXRvcDozcHhcIj48L2FwcC1vdmVybGF5LWluZm8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nd2NFbXBMb3dSdHdEYXRlJyBbZm9ybV09XCJlbXBGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJ1xyXG4gICAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCIgKm5nSWY9XCJ3Y0VtcFN0YXR1cy52YWx1ZSA9PSAnUlRXRidcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cIndjRW1wUnR3RGF0ZVwiPlJldHVybiB0byB3b3JrIGRhdGU8L2xhYmVsPlxyXG4gICAgICAgICAgICA8cC1jYWxlbmRhciBbc2hvd0ljb25dPVwidHJ1ZVwiIGlucHV0SWQ9XCJ3Y0VtcFJ0d0RhdGVcIiBhcHBlbmRUbz1cImJvZHlcIiBbZm9ybUNvbnRyb2xdPVwid2NFbXBSdHdEYXRlXCJcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIm1tL2RkL3l5eXlcIiBbc2hvd09uRm9jdXNdPVwiZmFsc2VcIiAob25JbnB1dCk9XCJkYXRlSW5wdXQoJGV2ZW50KVwiIG9wdGlvblZhbHVlPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgIFtpY29uQXJpYUxhYmVsXT1cIidSZXR1cm4gdG8gd29yayBkYXRlJ1wiIFttb250aE5hdmlnYXRvcl09XCJ0cnVlXCIgW3llYXJOYXZpZ2F0b3JdPVwidHJ1ZVwiIHllYXJSYW5nZT1cIjE5MDE6MjA1MFwiPjwvcC1jYWxlbmRhcj5cclxuICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J3djRW1wUnR3RGF0ZScgW2Zvcm1dPVwiZW1wRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCdcclxuICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiICpuZ0lmPVwid2NFbXBTdGF0dXMudmFsdWUgPT0gJ0RDRkknXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgIGZvcj1cImRpc2NoYXJnZURldGFpbFwiPnt7XCJpbmR1Y3Rpb24uY29uZmlybS5lbXBsb3ltZW50LnJlYXNvbi5zZXBhcmF0aW9uLmRpc2NoYXJnZVwifHRyYW5zbGF0ZX19PC9sYWJlbD48YnI+XHJcbiAgICAgICAgICAgIDxhcHAtZHJvcGRvd24gW29wdGlvbnNdPVwiZGlzY2hhcmdlUmVhc29uT3B0aW9uc0FsbFwiIFtmb3JtQ29udHJvbF09XCJkaXNjaGFyZ2VkXCIgb3B0aW9uTGFiZWw9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIiBbYXV0b0Rpc3BsYXlGaXJzdF09XCJmYWxzZVwiIG9wdGlvblZhbHVlPVwidmFsdWVcIiBpbnB1dElkPVwiZGlzY2hhcmdlZDJcIj48L2FwcC1kcm9wZG93bj5cclxuICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J2Rpc2NoYXJnZWQnIFtmb3JtXT1cImVtcEZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnXHJcbiAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiAqbmdJZj1cIndjRW1wU3RhdHVzLnZhbHVlID09ICdWT0xRJ1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwidm9sUXVpdERldGFpbHNcIj57e1wiaW5kdWN0aW9uLmNvbmZpcm0uZW1wbG95bWVudC5yZWFzb24uc2VwYXJhdGlvbi5xdWl0XCJ8dHJhbnNsYXRlfX08L2xhYmVsPjxicj5cclxuICAgICAgICAgICAgPGFwcC1kcm9wZG93biBbb3B0aW9uc109XCJ2b2xRdWl0UmVhc29uT3B0aW9uc0FsbFwiIFtmb3JtQ29udHJvbF09XCJ2b2x1bnRhcnlRdWl0XCIgb3B0aW9uTGFiZWw9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIiBbYXV0b0Rpc3BsYXlGaXJzdF09XCJmYWxzZVwiIG9wdGlvblZhbHVlPVwidmFsdWVcIiBpbnB1dElkPVwidm9sdW50YXJ5UXVpdDJcIj48L2FwcC1kcm9wZG93bj5cclxuICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J3ZvbHVudGFyeVF1aXQnIFtmb3JtXT1cImVtcEZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnXHJcbiAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCIgKm5nSWY9XCJ3Y0VtcFN0YXR1cy52YWx1ZSA9PSAnVk9MUScgfHwgd2NFbXBTdGF0dXMudmFsdWUgPT0nU1VTUCcgfHwgd2NFbXBTdGF0dXMudmFsdWUgPT0nRENGSScgfHwgd2NFbXBTdGF0dXMudmFsdWUgPT0nU1RMTydcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cImpvYlRpdGxlXCI+Sm9iIFRpdGxlPC9sYWJlbD5cclxuICAgICAgICAgICAgPGlucHV0IGlkPVwiam9iVGl0bGVcIiB0eXBlPVwiaW5wdXRcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbF09XCJqb2JUaXRsZVwiIGFwcFN0cmlwSW52aXNpYmxlQ2hhcnMvPlxyXG4gICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nam9iVGl0bGUnIFtmb3JtXT1cImVtcEZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnXHJcbiAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiAqbmdJZj1cIndjRW1wU3RhdHVzLnZhbHVlID09ICdWT0xRJyB8fCB3Y0VtcFN0YXR1cy52YWx1ZSA9PSdTVVNQJyB8fCB3Y0VtcFN0YXR1cy52YWx1ZSA9PSdEQ0ZJJ1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwic3RhcnREYXlXb3JrZWRcIj5GaXJzdCBkYXkgeW91IHdvcmtlZDwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxwLWNhbGVuZGFyIFtpY29uQXJpYUxhYmVsXT1cIidTdGFydCBkYXkgd29ya2VkJ1wiIFtzaG93SWNvbl09XCJ0cnVlXCIgaW5wdXRJZD1cInN0YXJ0RGF5V29ya2VkXCIgYXBwZW5kVG89XCJib2R5XCJcclxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwic3RhcnREYXlXb3JrZWRcIiBbbWF4RGF0ZV09XCJtYXhTdGFydERhdGVcIlxyXG4gICAgICAgICAgICAgIFtkZWZhdWx0RGF0ZV09XCJzdW5EYXRlXCIgW3NlbGVjdE90aGVyTW9udGhzXT1cInRydWVcIiBwbGFjZWhvbGRlcj1cIm1tL2RkL3l5eXlcIiBbbW9udGhOYXZpZ2F0b3JdPVwidHJ1ZVwiIFt5ZWFyTmF2aWdhdG9yXT1cInRydWVcIiB5ZWFyUmFuZ2U9XCIxOTAxOjIwNTBcIiAob25JbnB1dCk9XCJkYXRlSW5wdXQoJGV2ZW50KVwiPjwvcC1jYWxlbmRhcj5cclxuICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J3N0YXJ0RGF5V29ya2VkJyBbZm9ybV09XCJlbXBGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCcsXHJcbiAgICAgICAgICAgICAgICBkYXRlTm90QmV0d2VlbjogJ0RhdGUgc2hvdWxkIGJlIGJldHdlZW4gJyArIGR5bmFtaWNQYXJhbS5zdW5kYXlfZGF0ZSArICcgYW5kICcgKyBkeW5hbWljUGFyYW0uc2F0dXJkYXlfZGF0ZSArICcuJ1xyXG4gICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwibGFzdERheVdvcmtlZFwiPkxhc3QgZGF5IHlvdSB3b3JrZWQ8L2xhYmVsPlxyXG4gICAgICAgICAgICA8cC1jYWxlbmRhciBbaWNvbkFyaWFMYWJlbF09XCInTGFzdCBkYXkgd29ya2VkJ1wiIFtzaG93SWNvbl09XCJ0cnVlXCIgaW5wdXRJZD1cImxhc3REYXlXb3JrZWRcIiBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJsYXN0RGF5V29ya2VkXCIgW21pbkRhdGVdPVwic3VuRGF0ZVwiIFttYXhEYXRlXT1cInNhdERhdGVcIiBkYXRlRm9ybWF0PVwibW0vZGQveXlcIlxyXG4gICAgICAgICAgICAgIFtkZWZhdWx0RGF0ZV09XCJzdW5EYXRlXCIgW3NlbGVjdE90aGVyTW9udGhzXT1cInRydWVcIiBwbGFjZWhvbGRlcj1cIm1tL2RkL3l5eXlcIiBcclxuICAgICAgICAgICAgICBbbW9udGhOYXZpZ2F0b3JdPVwidHJ1ZVwiIFt5ZWFyTmF2aWdhdG9yXT1cInRydWVcIiB5ZWFyUmFuZ2U9XCIxOTAxOjIwNTBcIiAob25JbnB1dCk9XCJkYXRlSW5wdXQoJGV2ZW50KVwiPjwvcC1jYWxlbmRhcj5cclxuICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J2xhc3REYXlXb3JrZWQnIFtmb3JtXT1cImVtcEZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnLFxyXG4gICAgICAgICAgICAgICAgICBkYXRlTm90QmV0d2VlbjogJ0RhdGUgc2hvdWxkIGJlIGJldHdlZW4gJyArIGR5bmFtaWNQYXJhbS5zdW5kYXlfZGF0ZSArICcgYW5kICcgKyBkeW5hbWljUGFyYW0uc2F0dXJkYXlfZGF0ZSArICcuJ1xyXG4gICAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiICpuZ0lmPVwiIWlzTUUoKVwiPlxyXG4gICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwic2V0V2FnZUZsYWcoJGV2ZW50KVwiIGNsYXNzPVwidW5kZXJsaW5lLWJsdWVcIiBzdHlsZT1cImN1cnNvcjpwb2ludGVyO1wiPlxyXG4gICAgICAgICAgICAgIDxiPkVhcm5pbmdzIENhbGN1bGF0b3I8L2I+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIndhZ2VEaWFsb2dcIj5cclxuICAgICAgICAgICAgICA8YXBwLXdhZ2UtY2FsY3VsYXRvciBbZHluYW1pY1BhcmFtXT1cImR5bmFtaWNQYXJhbVwiIFtzaG93Q2FsY3VsYXRvclBvcHVwXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgKGdyb3NzRWFybmluZ3NDaGFuZ2UpPVwidXBkYXRlR3Jvc3NFYXJuaW5ncygkZXZlbnQpXCIgKHRvdGFsSG91cnNDaGFuZ2UpPVwidXBkYXRlVG90YWxIb3VycygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChzYXZlQ2xpY2tlZCk9XCJvbkRpYWxvZ1NhdmUoJGV2ZW50KVwiIChjYW5jZWxDbGlja2VkKT1cIm9uRGlhbG9nQ2FuY2VsKClcIlxyXG4gICAgICAgICAgICAgICAgW3dhZ2VDYWxjdWxhdG9yU2F2ZWREYXRhXT1cIndhZ2VDYWxjdWxhdG9yRGF0YVwiPjwvYXBwLXdhZ2UtY2FsY3VsYXRvcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cIndjRW1wSG91cnNXb3JrZWRcIj5Ib3VycyB3b3JrZWQ8L2xhYmVsPlxyXG4gICAgICAgICAgICA8cC1pbnB1dE51bWJlciBpbnB1dElkPVwid2NFbXBIb3Vyc1dvcmtlZFwiIFtmb3JtQ29udHJvbF09XCJ3Y0VtcEhvdXJzV29ya2VkXCIgbWF4bGVuZ3RoPVwiMTBcIlxyXG4gICAgICAgICAgICBtb2RlPVwiZGVjaW1hbFwiIFttaW5GcmFjdGlvbkRpZ2l0c109XCIxXCIgW21heEZyYWN0aW9uRGlnaXRzXT1cIjJcIj48L3AtaW5wdXROdW1iZXI+XHJcbiAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSd3Y0VtcEhvdXJzV29ya2VkJyBbZm9ybV09XCJlbXBGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJywgaG91cnNQZXJXZWVrRXhjZWVkZWQ6ICd0b3RhbCBob3VycyBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gMTY4IGZvciB0aGUgd2VlaydcclxuICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwid3NFbXBBbXRFYXJuZWRcIj5Ub3RhbCBHcm9zcyBFYXJuaW5nczwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCInd2Vla2xpZXMudjIuZW1wbG95bWVudC5ydHcuaW5mby5wb3B1cC4xMDAwJyB8IHRyYW5zbGF0ZSB8IHRydXN0SHRtbFwiXHJcbiAgICAgICAgICAgICAgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDhweDsgcGFkZGluZy10b3A6M3B4XCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG4gICAgICAgICAgICA8cC1pbnB1dE51bWJlciBpbnB1dElkPVwid3NFbXBBbXRFYXJuZWRcIiBtb2RlPVwiY3VycmVuY3lcIiBjdXJyZW5jeT1cIlVTRFwiIGxvY2FsZT1cImVuLVVTXCJcclxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwid3NFbXBBbXRFYXJuZWRcIiBtYXhsZW5ndGg9XCIxMFwiIHBsYWNlaG9sZGVyPVwiJDAuMDBcIj48L3AtaW5wdXROdW1iZXI+XHJcbiAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSd3c0VtcEFtdEVhcm5lZCcgW2Zvcm1dPVwiZW1wRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCcsIGVhcm5pbmdzTm90WmVybzogJ0dyb3NzIEVhcm5pbmdzIGNhbm5vdCBiZSB6ZXJvLidcclxuICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2lvbi1jb2w+XHJcbiAgICA8L2lvbi1yb3c+XHJcbiAgICA8aW9uLXJvdz5cclxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1yaWdodFwiPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiBmaWxsPVwib3V0bGluZVwiIChjbGljayk9XCJjbG9zZSgpXCIgdHlwZT1cInJlc2V0XCI+Q2xlYXI8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIChjbGljayk9XCJpc0VkaXRNb2RlID8gc2F2ZSgpIDogYWRkKClcIiB0eXBlPVwic3VibWl0XCI+XHJcbiAgICAgICAgICB7eyBpc0VkaXRNb2RlID8gJ1NhdmUnIDogJ0FkZCcgfX1cclxuICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgIDwvaW9uLWNvbD5cclxuICAgIDwvaW9uLXJvdz5cclxuICA8L2lvbi1ncmlkPlxyXG48L2Zvcm0+Il19
1040
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vla2x5LWNlcnQtZW1wbG95ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJldXNhLWFwcC1saWIvc3JjL2xpYi9jb21wb25lbnRzL3dlZWtseS1jZXJ0LWVtcGxveWVyL3dlZWtseS1jZXJ0LWVtcGxveWVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy93ZWVrbHktY2VydC1lbXBsb3llci93ZWVrbHktY2VydC1lbXBsb3llci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUErQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkgsT0FBTyxFQUFnRCxVQUFVLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RyxPQUFPLEVBQUUsaUJBQWlCLEVBQXdCLE1BQU0seUNBQXlDLENBQUM7QUFDbEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBR3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDTTdELDhCQUFrQyxnQkFBQTtJQUNOLHVCQUFPO0lBQUEsaUJBQVE7SUFBQSxxQkFBSSx1QkFBQSxvQkFBQTtJQU03QyxpQkFBTTs7OztJQUxpQyxlQUEwQjtJQUExQiwrQ0FBMEIsb0NBQUEsMkJBQUE7SUFFcEQsZUFBb0I7SUFBcEIseUJBQW9CO0lBQUMsMkNBQXNCLGFBQUEsc0NBQUE7Ozs7SUF1QjFELDJCQUFvQixj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eU9wQyxlQUFtQztZQUFuQyxzRkFBbUM7WUFtSnZDLGVBQ0Y7WUFERSxnRUFDRjs7O2lGRC9XSyw2QkFBNkI7Y0FMekMsU0FBUzsyQkFDRSw2QkFBNkI7d0dBT2hDLGdCQUFnQjtrQkFEdEIsU0FBUzttQkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFJaEQsT0FBTztrQkFETixNQUFNO1lBSVAsT0FBTztrQkFETixNQUFNO1lBSUEsU0FBUztrQkFEZixLQUFLO1lBSUMsWUFBWTtrQkFEbEIsS0FBSzs7a0ZBZEssNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlLCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCwgTmdGb3JtLCBWYWxpZGF0b3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENob2ljZXNNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9BZGRyZXNzQ29tcG9uZW50TW9kZWwnO1xuaW1wb3J0IHsgRW1wbG95ZXJJbmZvTW9kZWwsIEVtcGxveWVyU2VhcmNoUmVzdWx0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL0VtcGxveWVyRGV0YWlsU2VhcmNoUmVzdWx0JztcbmltcG9ydCB7IENvbWJvT3B0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3F1ZXN0aW9ubmFpcmUvQ29tYm9Nb2RlbCc7XG5pbXBvcnQgeyBDbGFpbVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jbGFpbXMvY2xhaW1zLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91dGlsL3V0aWwuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBWYWxpZGF0b3JzIH0gZnJvbSAnLi4vLi4vdmFsaWRhdGlvbnMvQXBwVmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBCYXNlUGFnZSB9IGZyb20gJy4uLy4uL3BhZ2VzL0Jhc2VQYWdlJztcbmltcG9ydCB7IFdhZ2VDYWxjdWxhdG9yTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvV2FnZUNhbGN1bGF0b3JNb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC13ZWVrbHktY2VydC1lbXBsb3llci1xZScsXG4gIHRlbXBsYXRlVXJsOiAnLi93ZWVrbHktY2VydC1lbXBsb3llci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dlZWtseS1jZXJ0LWVtcGxveWVyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFdlZWtseUNlcnRFbXBsb3llckNvbXBvbmVudFFlIGV4dGVuZHMgQmFzZVBhZ2UgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBWaWV3Q2hpbGQoJ2VtcEZvcm1EaXJlY3RpdmUnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcHVibGljIGVtcEZvcm1EaXJlY3RpdmU6IE5nRm9ybTtcblxuICBAT3V0cHV0KClcbiAgc3VjY2VzczogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2xvc2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlbXBUb0VkaXQgPSBuZXcgRW1wbG95ZXJJbmZvTW9kZWwoKTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZHluYW1pY1BhcmFtOiBhbnk7XG5cbiAgcHVibGljIHllc05vT3B0aW9uID0gQ29tYm9PcHRpb24uWUVTX05PO1xuXG4gIHB1YmxpYyBlbXBGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuICBwdWJsaWMgc3RhdGVzQ29tYm86IGFueSA9IFtdO1xuICBwdWJsaWMgY291bnRyeU9wdGlvbnMgPSBDb21ib09wdGlvbi5DT1VOVFJZO1xuICBwdWJsaWMgc2F0RGF0ZTogRGF0ZTtcbiAgcHVibGljIHN1bkRhdGU6IERhdGU7XG4gIHB1YmxpYyBtYXhTdGFydERhdGU6IERhdGU7XG5cbiAgcHVibGljIGlzRWRpdE1vZGU6IEJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHdhZ2VEaWFsb2c6IGJvb2xlYW47XG5cbiAgcHVibGljIGRpc2NoYXJnZVJlYXNvbk9wdGlvbnNBbGw6IENob2ljZXNNb2RlbFtdID0gW107XG4gIHB1YmxpYyB2b2xRdWl0UmVhc29uT3B0aW9uc0FsbDogQ2hvaWNlc01vZGVsW10gPSBbXTtcbiAgcHVibGljIGVtcGxveW1lbnRTdGF0dXNPcHRpb25zQWxsOiBDaG9pY2VzTW9kZWxbXSA9IFtdO1xuICB3YWdlQ2FsY3VsYXRvckRhdGEgOiBXYWdlQ2FsY3VsYXRvck1vZGVsID0gbmV3IFdhZ2VDYWxjdWxhdG9yTW9kZWwoKTtcblxuICB1c1ppcGNvZGVWYWxpZGF0aW9uczogVmFsaWRhdG9yRm5bXSA9IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBBcHBWYWxpZGF0b3JzLmlzVmFsaWRaaXBDb2RlXTtcbiAgY2FuYWRhWmlwY29kZVZhbGlkYXRpb25zOiBWYWxpZGF0b3JGbltdID0gW1ZhbGlkYXRvcnMucmVxdWlyZWQsIEFwcFZhbGlkYXRvcnMuaXNWYWxpZENhbmFkaWFuWmlwQ29kZV07XG5cbiAgY29uc3RydWN0b3IocHVibGljIHV0aWw6IFV0aWxTZXJ2aWNlLCBwdWJsaWMgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlciwgcHVibGljIGNzOiBDbGFpbVNlcnZpY2UpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5sb2FkTWFzdGVyRGF0YSgpO1xuICAgIHRoaXMuc2F0RGF0ZSA9IHRoaXMudXRpbC5nZXRFbnRlcmVkRGF0ZUZyb21TdHJpbmcodGhpcy5keW5hbWljUGFyYW0uc2F0dXJkYXlfZGF0ZSk7XG4gICAgdGhpcy5zdW5EYXRlID0gdGhpcy51dGlsLmdldEVudGVyZWREYXRlRnJvbVN0cmluZyh0aGlzLmR5bmFtaWNQYXJhbS5zdW5kYXlfZGF0ZSk7XG4gICAgdGhpcy5pbml0aWxpemVFbXBsb3llckluZm9yRm9ybSgpO1xuICAgIHRoaXMuaXNFZGl0TW9kZSA9ICEhdGhpcy5lbXBUb0VkaXQ7XG4gICAgdGhpcy53Y0VtcEhvdXJzV29ya2VkLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsID0+IHtcbiAgICAgIGlmKHZhbCl7XG4gICAgICAgIGlmKHZhbCA+IDE2OCl7XG4gICAgICAgICAgdGhpcy53Y0VtcEhvdXJzV29ya2VkLnNldEVycm9ycyh7IGhvdXJzUGVyV2Vla0V4Y2VlZGVkOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGxvYWRNYXN0ZXJEYXRhKCkge1xuICAgIHRoaXMuY3MubG9hZE1hc3RlckRhdGEoKTtcblxuICAgIHRoaXMuY3MuZ2V0UmVhc29uU2VwYXJhdGlvbigpLnN1YnNjcmliZShcbiAgICAgIHZhbHVlID0+IHtcbiAgICAgICAgdmFsdWUuZm9yRWFjaChhcnIgPT4gdGhpcy5lbXBsb3ltZW50U3RhdHVzT3B0aW9uc0FsbC5wdXNoKGFycikpO1xuICAgICAgfVxuICAgICk7XG5cbiAgICB0aGlzLmNzLmdldERpc2NoYXJnZVJlYXNvbnMoKS5zdWJzY3JpYmUoXG4gICAgICB2YWx1ZSA9PiB7XG4gICAgICAgIHZhbHVlLmZvckVhY2goYXJyID0+IHRoaXMuZGlzY2hhcmdlUmVhc29uT3B0aW9uc0FsbC5wdXNoKGFycikpO1xuICAgICAgfVxuICAgICk7XG5cbiAgICB0aGlzLmNzLmdldFF1aXRSZWFzb25zKCkuc3Vic2NyaWJlKFxuICAgICAgdmFsdWUgPT4ge1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKGFyciA9PiB0aGlzLnZvbFF1aXRSZWFzb25PcHRpb25zQWxsLnB1c2goYXJyKSk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGFkZCgpIHtcbiAgICAvL3RoaXMuc2V0VmFsaWRhdGlvbkZvckhvdXJzQW5kV2FnZXNPbkFjdGl2aXR5VHlwZSgpO1xuICAgIGlmICh0aGlzLmVtcEZvcm0udmFsaWQpIHtcbiAgICAgIHRoaXMuZW1wRm9ybS52YWx1ZS5pc1BhcnRUaW1lRW1wbG95ZXJFZGl0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5zdWNjZXNzLmVtaXQodGhpcy5lbXBGb3JtLnZhbHVlKTtcbiAgICAgIHRoaXMuaXNFZGl0TW9kZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHNhdmUoKSB7XG4gICAgLy90aGlzLnNldFZhbGlkYXRpb25Gb3JIb3Vyc0FuZFdhZ2VzT25BY3Rpdml0eVR5cGUoKTtcbiAgICBpZiAodGhpcy5lbXBGb3JtLnZhbGlkKSB7XG4gICAgICB0aGlzLmVtcEZvcm0udmFsdWUuaXNQYXJ0VGltZUVtcGxveWVyRWRpdGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuc3VjY2Vzcy5lbWl0KHRoaXMuZW1wRm9ybS52YWx1ZSk7XG4gICAgICB0aGlzLmluaXRpbGl6ZUVtcGxveWVySW5mb3JGb3JtKCk7XG4gICAgICB0aGlzLmlzRWRpdE1vZGUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIHRoaXMub25DbG9zZS5lbWl0KCk7XG4gIH1cblxuICBpbml0aWxpemVFbXBsb3llckluZm9yRm9ybSgpIHtcbiAgICBsZXQgZW1wSW5mbyA9IHRoaXMuZW1wVG9FZGl0ID8gdGhpcy5lbXBUb0VkaXQgOiBuZXcgRW1wbG95ZXJJbmZvTW9kZWwoKTtcbiAgICB0aGlzLmVtcEZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICdsYXN0RGF5V29ya2VkJzogW2VtcEluZm8ubGFzdERheVdvcmtlZCAhPSBudWxsID8gdGhpcy5nZXREYXRlKGVtcEluZm8ubGFzdERheVdvcmtlZCkgOiAnJywgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBBcHBWYWxpZGF0b3JzLmlzQmV0d2VlbkRhdGUodGhpcy5zdW5EYXRlLCB0aGlzLnNhdERhdGUpXSldLFxuICAgICAgJ2VtcGxveWVyTmFtZSc6IFtlbXBJbmZvLmVtcGxveWVyTmFtZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsVmFsaWRhdG9ycy5wYXR0ZXJuKC9eKD8hLipbJTw+XFxeX3t9XSlbQS1aYS16MC05XFxzXFwuLCYnKCkjIUA6JFxcL1xcXFxcXC1cXCs/XCJdKyQvKV1dLFxuICAgICAgJ2xpbmUxJzogW2VtcEluZm8ubGluZTEsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oL15bMC05QS1aYS16XFxzLCdcXC1cXC4jXFwvXSskLyksVmFsaWRhdG9ycy5tYXhMZW5ndGgoNDApXV0sXG4gICAgICAnbGluZTInOiBbZW1wSW5mby5saW5lMl0sXG4gICAgICAnY2l0eSc6IFtlbXBJbmZvLmNpdHksIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZCxWYWxpZGF0b3JzLnBhdHRlcm4oL14oPyEtKVtBLVphLXogLV0qJC8pLFZhbGlkYXRvcnMubWF4TGVuZ3RoKDMwKV0pXSxcbiAgICAgICdzdGF0ZSc6IFtlbXBJbmZvLnN0YXRlICE9IHVuZGVmaW5lZCA/IGVtcEluZm8uc3RhdGUgOiB0aGlzLnV0aWwuZ2V0U3RhdGUoKSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAnY291bnRyeSc6IFtlbXBJbmZvLmNvdW50cnldLFxuICAgICAgJ2dyb3NzRWFybmluZyc6IFtlbXBJbmZvLmdyb3NzRWFybmluZywgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSldLFxuICAgICAgJ3JlYXNvblNlcGFyYXRpb24nOiBbZW1wSW5mby5yZWFzb25TZXBhcmF0aW9uICE9IHVuZGVmaW5lZCA/IGVtcEluZm8ucmVhc29uU2VwYXJhdGlvbiA6ICcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICdoYXZlUmV0dXJuVG9Xb3JrRGF0ZSc6IFtlbXBJbmZvLmhhdmVSZXR1cm5Ub1dvcmtEYXRlXSxcbiAgICAgICdyZXR1cm5Ub1dvcmtEYXRlJzogW2VtcEluZm8ucmV0dXJuVG9Xb3JrRGF0ZV0sXG4gICAgICAndm9sdW50YXJ5UXVpdCc6IFtlbXBJbmZvLnZvbHVudGFyeVF1aXRdLFxuICAgICAgJ2Rpc2NoYXJnZWQnOiBbZW1wSW5mby5kaXNjaGFyZ2VkXSxcbiAgICAgICdob3Vyc1dvcmtlZEluV2Vlayc6IFtlbXBJbmZvLmhvdXJzV29ya2VkSW5XZWVrLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKV0sXG4gICAgICAnemlwJzogW2VtcEluZm8uemlwICE9IHVuZGVmaW5lZCA/IGVtcEluZm8uemlwIDogJycsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZCwgQXBwVmFsaWRhdG9ycy5pc1ZhbGlkWmlwQ29kZV0pXSxcbiAgICAgICdlbXBsb3llclBob25lJzogW2VtcEluZm8uZW1wbG95ZXJQaG9uZSAhPSB1bmRlZmluZWQgPyBlbXBJbmZvLmVtcGxveWVyUGhvbmUgOiAnJywgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSldLFxuICAgICAgJ2VtcGxveWVySWQnOiBbZW1wSW5mby5lbXBsb3llcklkXSxcbiAgICAgICd0ZW1wV2NFbXBsb3llcklkJzogW2VtcEluZm8udGVtcFdjRW1wbG95ZXJJZCA/IGVtcEluZm8udGVtcFdjRW1wbG95ZXJJZCA6IG5ldyBEYXRlKCkuZ2V0VGltZSgpXSxcbiAgICAgICdwb3RlbnRpYWxJc3N1ZUlkJzogW2VtcEluZm8ucG90ZW50aWFsSXNzdWVJZCA/IGVtcEluZm8ucG90ZW50aWFsSXNzdWVJZCA6IG51bGxdLFxuICAgICAgJ2lzUGFydFRpbWVFbXBsb3llcic6IFtlbXBJbmZvLmlzUGFydFRpbWVFbXBsb3llciA/IGVtcEluZm8uaXNQYXJ0VGltZUVtcGxveWVyIDogbnVsbF0sXG4gICAgICAnam9iVGl0bGUnOiBbZW1wSW5mby5qb2JUaXRsZSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTApXSxcbiAgICAgICdzdGFydERheVdvcmtlZCc6IFtlbXBJbmZvLnN0YXJ0RGF5V29ya2VkXVxuICAgIH0pO1xuXG4gICAgdGhpcy5sYXN0RGF5V29ya2VkLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsID0+IHtcbiAgICAgIGlmICh2YWwpIHtcbiAgICAgICAgdGhpcy5tYXhTdGFydERhdGUgPSBuZXcgRGF0ZSh2YWwpO1xuICAgICAgICBpZiAodGhpcy5zdGFydERheVdvcmtlZC52YWx1ZSkge1xuICAgICAgICAgIGxldCBzdGFydERhdGUgPSBuZXcgRGF0ZSh0aGlzLnN0YXJ0RGF5V29ya2VkLnZhbHVlKTtcbiAgICAgICAgICBpZiAoc3RhcnREYXRlID4gdGhpcy5tYXhTdGFydERhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnREYXlXb3JrZWQucGF0Y2hWYWx1ZShudWxsKTtcbiAgICAgICAgICAgIHRoaXMuc3RhcnREYXlXb3JrZWQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG5cbiAgICB0aGlzLndjRW1wU3RhdHVzLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsID0+IHtcbiAgICAgIHRoaXMuc2V0VmFsaWRhdGlvbkJhc2VkT25FbXBsb3ltZW50U3RhdHVzKHZhbCk7XG4gICAgfSk7XG5cbiAgICBpZiAoZW1wSW5mby5yZWFzb25TZXBhcmF0aW9uKSB7XG4gICAgICB0aGlzLnNldFZhbGlkYXRpb25CYXNlZE9uRW1wbG95bWVudFN0YXR1cyhlbXBJbmZvLnJlYXNvblNlcGFyYXRpb24pO1xuICAgIH1cbiAgICBpZiAodGhpcy5sYXN0RGF5V29ya2VkLnZhbHVlKSB7XG4gICAgICB0aGlzLm1heFN0YXJ0RGF0ZSA9IG5ldyBEYXRlKHRoaXMubGFzdERheVdvcmtlZC52YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYodGhpcy5pc01FKCkpeyAgXG4gICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy53Y0VtcENvdW50cnkpO1xuICAgICAgdGhpcy5zZXRaaXBDb2RlVmFsaWRhdGlvbkJhc2VkT25Db3VudHJ5KCk7XG4gICAgICB0aGlzLndjRW1wQ291bnRyeS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKGNvdW50cnkgPT4ge1xuICAgICAgICB0aGlzLmZpbHRlclN0YXRlKGNvdW50cnkpXG4gICAgICB9KTtcbiAgICAgIHRoaXMud2NFbXBDb3VudHJ5LnNldFZhbHVlKFwiVVNcIik7XG4gICAgfSBlbHNle1xuICAgICAgdGhpcy5zdGF0ZXNDb21ibyA9IENvbWJvT3B0aW9uLlVTX1NUQVRFUztcbiAgICB9ICAgIFxuICB9XG5cbiAgc2V0WmlwQ29kZVZhbGlkYXRpb25CYXNlZE9uQ291bnRyeSgpe1xuICAgIHRoaXMud2NFbXBDb3VudHJ5LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoYyA9PiB7XG4gICAgICBpZihjID09ICdVUycpe1xuICAgICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMud3NaaXBDb2RlKTtcbiAgICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy53c1ppcENvZGUsIHRoaXMudXNaaXBjb2RlVmFsaWRhdGlvbnMpO1xuICAgICAgfSBlbHNlIGlmKGMgPT0gJ0NBJyl7XG4gICAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy53c1ppcENvZGUpO1xuICAgICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLndzWmlwQ29kZSwgdGhpcy5jYW5hZGFaaXBjb2RlVmFsaWRhdGlvbnMpO1xuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBmaWx0ZXJTdGF0ZShldmVudCkge1xuICAgIGNvbnNvbGUubG9nKGV2ZW50LCB0aGlzLndjRW1wQ291bnRyeT8udmFsdWUpO1xuICAgIGxldCBjaG9pY2U6IGFueTtcbiAgICBpZiAodGhpcy53Y0VtcENvdW50cnk/LnZhbHVlID09PSAnVVMnKSB7XG4gICAgICBjb25zdCBjdXJyZW50U3RhdGUgPSBDb21ib09wdGlvbi5VU19TVEFURVMuZmluZChzdGF0ZSA9PiBzdGF0ZS52YWx1ZSA9PSB0aGlzLnV0aWwuZ2V0U3RhdGUoKSlcbiAgICAgIGNob2ljZSA9IFtjdXJyZW50U3RhdGUsIC4uLkNvbWJvT3B0aW9uLlVTX1NUQVRFUy5maWx0ZXIoc3RhdGUgPT4gc3RhdGUudmFsdWUgIT0gdGhpcy51dGlsLmdldFN0YXRlKCkpXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy53Y0VtcENvdW50cnk/LnZhbHVlID09PSAnQ0EnKSB7XG4gICAgICBjaG9pY2UgPSBDb21ib09wdGlvbi5DQV9TVEFURVM7XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZXNDb21ibyA9IGNob2ljZTtcbiAgfVxuXG4gIHVwZGF0ZUdyb3NzRWFybmluZ3MoZ3Jvc3NFYXJuaW5nczogbnVtYmVyKSB7XG4gICAgaWYoZ3Jvc3NFYXJuaW5ncyA9PT0gMCl7XG4gICAgICB0aGlzLmVtcEZvcm0uY29udHJvbHNbJ2dyb3NzRWFybmluZyddLnJlc2V0KCk7XG4gICAgfSBlbHNle1xuICAgICAgdGhpcy5lbXBGb3JtLnBhdGNoVmFsdWUoeyBncm9zc0Vhcm5pbmc6IGdyb3NzRWFybmluZ3MgfSk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlVG90YWxIb3Vycyh0b3RhbEhvdXJzOiBudW1iZXIpIHtcbiAgICBpZih0b3RhbEhvdXJzID09PSAwKXtcbiAgICAgIHRoaXMuZW1wRm9ybS5jb250cm9sc1snaG91cnNXb3JrZWRJbldlZWsnXS5yZXNldCgpO1xuICAgIH0gZWxzZXtcbiAgICB0aGlzLmVtcEZvcm0ucGF0Y2hWYWx1ZSh7aG91cnNXb3JrZWRJbldlZWsgOiB0b3RhbEhvdXJzfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGhhdmVSZXR1cm5Ub1dvcmtEYXRlKCkge1xuICAgIHJldHVybiB0aGlzLmVtcEZvcm0uY29udHJvbHNbJ2hhdmVSZXR1cm5Ub1dvcmtEYXRlJ107XG4gIH1cblxuICBnZXQgdm9sdW50YXJ5UXVpdCgpIHtcbiAgICByZXR1cm4gdGhpcy5lbXBGb3JtLmNvbnRyb2xzWyd2b2x1bnRhcnlRdWl0J107XG4gIH1cblxuICBnZXQgZGlzY2hhcmdlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5lbXBGb3JtLmNvbnRyb2xzWydkaXNjaGFyZ2VkJ107XG4gIH1cblxuICBnZXQgbGFzdERheVdvcmtlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5lbXBGb3JtLmNvbnRyb2xzWydsYXN0RGF5V29ya2VkJ107XG4gIH1cblxuICBnZXQgd2NFbXBOYW1lKCkge1xuICAgIHJldHVybiB0aGlzLmVtcEZvcm0uY29udHJvbHNbJ2VtcGxveWVyTmFtZSddO1xuICB9XG5cbiAgZ2V0IHdjRW1wQWRkcmVzc0xpbmUxKCkge1xuICAgIHJldHVybiB0aGlzLmVtcEZvcm0uY29udHJvbHNbJ2xpbmUxJ107XG4gIH1cblxuICBnZXQgd2NFbXBBZGRyZXNzTGluZTIoKSB7XG4gICAgcmV0dXJuIHRoaXMuZW1wRm9ybS5jb250cm9sc1snbGluZTInXTtcbiAgfVxuXG4gIGdldCB3Y0VtcENpdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuZW1wRm9ybS5jb250cm9sc1snY2l0eSddO1xuICB9XG5cbiAgZ2V0IHdjRW1wU3RhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZW1wRm9ybS5jb250cm9sc1snc3RhdGUnXTtcbiAgfVxuXG4gIGdldCB3Y0VtcENvdW50cnkoKXtcbiAgICByZXR1cm4gdGhpcy5lbXBGb3JtLmNvbnRyb2xzWydjb3VudHJ5J107XG4gIH1cblxuICBnZXQgd3NFbXBBbXRFYXJuZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZW1wRm9ybS5jb250cm9sc1snZ3Jvc3NFYXJuaW5nJ107XG4gIH1cblxuICBnZXQgd2NFbXBTdGF0dXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZW1wRm9ybS5jb250cm9sc1sncmVhc29uU2VwYXJhdGlvbiddO1xuICB9XG5cbiAgZ2V0IHdjRW1wTG93UnR3RGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5lbXBGb3JtLmNvbnRyb2xzWydyZXR1cm5Ub1dvcmtEYXRlJ107XG4gIH1cblxuICBnZXQgd2NFbXBSdHdEYXRlKCkge1xuICAgIHJldHVybiB0aGlzLmVtcEZvcm0uY29udHJvbHNbJ3JldHVyblRvV29ya0RhdGUnXTtcbiAgfVxuXG4gIGdldCB3Y0VtcFdvcmtlZEZvck1vcmVFbXBsb3llcigpIHtcbiAgICByZXR1cm4gdGhpcy5lbXBGb3JtLmNvbnRyb2xzWyd3Y0VtcFdvcmtlZEZvck1vcmVFbXBsb3llciddO1xuICB9XG5cbiAgZ2V0IHdjRW1wSG91cnNXb3JrZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZW1wRm9ybS5jb250cm9sc1snaG91cnNXb3JrZWRJbldlZWsnXTtcbiAgfVxuXG4gIGdldCB3c1ppcENvZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZW1wRm9ybS5jb250cm9sc1snemlwJ107XG4gIH1cblxuICBnZXQgd3NQaG9uZU51bWJlcigpIHtcbiAgICByZXR1cm4gdGhpcy5lbXBGb3JtLmNvbnRyb2xzWydlbXBsb3llclBob25lJ107XG4gIH1cblxuICBnZXQgaGlkRW1wSWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZW1wRm9ybS5jb250cm9sc1snZW1wbG95ZXJJZCddO1xuICB9XG5cbiAgZ2V0IGlzUGFydFRpbWVFbXBsb3llcigpIHtcbiAgICByZXR1cm4gdGhpcy5lbXBGb3JtLmNvbnRyb2xzWydpc1BhcnRUaW1lRW1wbG95ZXInXTtcbiAgfVxuXG4gIGdldCBqb2JUaXRsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5lbXBGb3JtLmNvbnRyb2xzWydqb2JUaXRsZSddO1xuICB9XG5cbiAgZ2V0IHN0YXJ0RGF5V29ya2VkKCkge1xuICAgIHJldHVybiB0aGlzLmVtcEZvcm0uY29udHJvbHNbJ3N0YXJ0RGF5V29ya2VkJ107XG4gIH1cblxuICBzZXRWYWxpZGF0aW9uRm9ySG91cnNBbmRXYWdlc09uQWN0aXZpdHlUeXBlKCl7XG4gICAgaWYodGhpcy5lbXBUb0VkaXQ/LmlzUGFydFRpbWVFbXBsb3llcil7XG4gICAgICBpZigodGhpcy53c0VtcEFtdEVhcm5lZC52YWx1ZSA9PT0gMC4wIHx8IHRoaXMud3NFbXBBbXRFYXJuZWQudmFsdWUgPT09IDApXG4gICAgICAgICYmICh0aGlzLndjRW1wSG91cnNXb3JrZWQudmFsdWUgPT09IDAuMCB8fCB0aGlzLndjRW1wSG91cnNXb3JrZWQudmFsdWUgPT09IDApXG4gICAgICAgICYmIHRoaXMud2NFbXBTdGF0dXMudmFsdWUgPT09ICdXUlBUJyl7XG4gICAgICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLndzRW1wQW10RWFybmVkKTtcbiAgICAgICAgICB0aGlzLndjRW1wU3RhdHVzLnNldEVycm9ycyh7J2NoYW5nZUVtcFN0YXR1cycgOiB0cnVlfSk7XG4gICAgICB9IGVsc2UgaWYoKHRoaXMud3NFbXBBbXRFYXJuZWQudmFsdWUgPT09IDAuMCB8fCB0aGlzLndzRW1wQW10RWFybmVkLnZhbHVlID09PSAwKVxuICAgICAgICAmJiAodGhpcy53Y0VtcEhvdXJzV29ya2VkLnZhbHVlID4gMC4wIHx8IHRoaXMud2NFbXBIb3Vyc1dvcmtlZC52YWx1ZSA+IDApXG4gICAgICAgICYmIHRoaXMud2NFbXBTdGF0dXMudmFsdWUgPT09ICdXUlBUJyl7XG4gICAgICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLndjRW1wU3RhdHVzKTtcbiAgICAgICAgICB0aGlzLndzRW1wQW10RWFybmVkLnNldEVycm9ycyh7J2Vhcm5pbmdzTm90WmVybyc6IHRydWV9KTtcbiAgICAgIH1lbHNlIGlmKCh0aGlzLndzRW1wQW10RWFybmVkLnZhbHVlID09PSAwLjAgfHwgdGhpcy53c0VtcEFtdEVhcm5lZC52YWx1ZSA9PT0gMClcbiAgICAgICAgJiYgKHRoaXMud2NFbXBIb3Vyc1dvcmtlZC52YWx1ZSA+IDAuMCB8fCB0aGlzLndjRW1wSG91cnNXb3JrZWQudmFsdWUgPiAwIHx8XG4gICAgICAgICAgdGhpcy53Y0VtcEhvdXJzV29ya2VkLnZhbHVlID09PSAwLjAgfHwgdGhpcy53Y0VtcEhvdXJzV29ya2VkLnZhbHVlID09PSAwKVxuICAgICAgICAmJiB0aGlzLndjRW1wU3RhdHVzLnZhbHVlICE9PSAnV1JQVCcpe1xuICAgICAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy53Y0VtcFN0YXR1cyk7XG4gICAgICAgICAgdGhpcy53c0VtcEFtdEVhcm5lZC5zZXRFcnJvcnMoeydlYXJuaW5nc05vdFplcm8nOiB0cnVlfSk7XG4gICAgICB9XG4gICAgfSBlbHNle1xuICAgICAgaWYoKHRoaXMud3NFbXBBbXRFYXJuZWQudmFsdWUgPT09IDAuMCB8fCB0aGlzLndzRW1wQW10RWFybmVkLnZhbHVlID09PSAwKVxuICAgICAgICAmJiAodGhpcy53Y0VtcEhvdXJzV29ya2VkLnZhbHVlID09PSAwLjAgfHwgdGhpcy53Y0VtcEhvdXJzV29ya2VkLnZhbHVlID09PSAwKVxuICAgICAgICAmJiB0aGlzLndjRW1wU3RhdHVzLnZhbHVlID09PSAnV1JQVCcpe1xuICAgICAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy53c0VtcEFtdEVhcm5lZCk7XG4gICAgICAgICAgdGhpcy53Y0VtcFN0YXR1cy5zZXRFcnJvcnMoeydjaGFuZ2VFbXBTdGF0dXMnIDogdHJ1ZX0pO1xuICAgICAgfVxuICAgICAgaWYoKHRoaXMud3NFbXBBbXRFYXJuZWQudmFsdWUgPT09IDAuMCB8fCB0aGlzLndzRW1wQW10RWFybmVkLnZhbHVlID09PSAwKVxuICAgICAgICAmJiAodGhpcy53Y0VtcEhvdXJzV29ya2VkLnZhbHVlID4gMC4wIHx8IHRoaXMud2NFbXBIb3Vyc1dvcmtlZC52YWx1ZSA+IDApXG4gICAgICAgICYmIHRoaXMud2NFbXBTdGF0dXMudmFsdWUgPT09ICdXUlBUJyl7XG4gICAgICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLndjRW1wU3RhdHVzKTtcbiAgICAgICAgICB0aGlzLndzRW1wQW10RWFybmVkLnNldEVycm9ycyh7J2Vhcm5pbmdzTm90WmVybyc6IHRydWV9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRWYWxpZGF0aW9uQmFzZWRPbkVtcGxveW1lbnRTdGF0dXModmFsOiBTdHJpbmcpIHtcbiAgICBpZiAodmFsICYmIHZhbCA9PSAnUlRXRicpIHtcbiAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLndjRW1wTG93UnR3RGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy53Y0VtcExvd1J0d0RhdGUpO1xuICAgIH1cblxuICAgIGlmICh2YWwgJiYgdmFsID09ICdMV0xPJykge1xuICAgICAgdGhpcy5qb2JUaXRsZS5jbGVhclZhbGlkYXRvcnM7XG4gICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy5oYXZlUmV0dXJuVG9Xb3JrRGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5oYXZlUmV0dXJuVG9Xb3JrRGF0ZSk7XG4gICAgfVxuXG4gICAgaWYgKHZhbCAmJiB2YWwgPT0gJ0RDRkknKSB7XG4gICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy5kaXNjaGFyZ2VkKTtcbiAgICAgIGlmKCF0aGlzLmlzTVMoKSl7XG4gICAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLmpvYlRpdGxlKTtcbiAgICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMuc3RhcnREYXlXb3JrZWQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuam9iVGl0bGUpO1xuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnN0YXJ0RGF5V29ya2VkKTtcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5kaXNjaGFyZ2VkKTtcbiAgICB9XG5cbiAgICBpZiAodmFsICYmIHZhbCA9PSAnVk9MUScpIHtcbiAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLnZvbHVudGFyeVF1aXQpO1xuICAgICAgaWYoIXRoaXMuaXNNUygpKXtcbiAgICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMuam9iVGl0bGUpO1xuICAgICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy5zdGFydERheVdvcmtlZCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5qb2JUaXRsZSk7XG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuc3RhcnREYXlXb3JrZWQpO1xuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnZvbHVudGFyeVF1aXQpO1xuICAgIH1cblxuICAgIGlmICh2YWwgJiYgdmFsID09ICdTVVNQJyAmJiAhdGhpcy5pc01TKCkpIHtcbiAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLmpvYlRpdGxlKTtcbiAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLnN0YXJ0RGF5V29ya2VkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmpvYlRpdGxlKTtcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5zdGFydERheVdvcmtlZCk7XG4gICAgfVxuXG4gICAgaWYgKHZhbCAmJiB2YWwgPT0gJ1NUTE8nJiYgIXRoaXMuaXNNUygpKSB7XG4gICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy5qb2JUaXRsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5qb2JUaXRsZSk7XG4gICAgfVxuICB9XG5cbiAgc2V0RW1wbG95ZXIoZW1wbG95ZXI6IEVtcGxveWVyU2VhcmNoUmVzdWx0KSB7XG4gICAgdGhpcy53Y0VtcE5hbWUuc2V0VmFsdWUoZW1wbG95ZXIuZW1wbG95ZXJOYW1lKTtcbiAgICB0aGlzLndjRW1wQWRkcmVzc0xpbmUxLnNldFZhbHVlKGVtcGxveWVyLmFkZHJlc3NMaW5lMSk7XG4gICAgdGhpcy53Y0VtcEFkZHJlc3NMaW5lMi5zZXRWYWx1ZShlbXBsb3llci5hZGRyZXNzTGluZTIpO1xuICAgIHRoaXMud2NFbXBDaXR5LnNldFZhbHVlKGVtcGxveWVyLmNpdHkpO1xuICAgIHRoaXMud2NFbXBTdGF0ZS5zZXRWYWx1ZShlbXBsb3llci5zdGF0ZS52YWx1ZSk7XG4gICAgaWYodGhpcy5pc01FKCkpe1xuICAgICAgdGhpcy53Y0VtcENvdW50cnkuc2V0VmFsdWUoZW1wbG95ZXIuY291bnRyeS52YWx1ZSk7XG4gICAgfVxuICAgIHRoaXMud3NaaXBDb2RlLnNldFZhbHVlKGVtcGxveWVyLnppcCk7XG4gICAgdGhpcy5oaWRFbXBJZC5zZXRWYWx1ZShlbXBsb3llci5lbXBsb3llcklkKTtcbiAgfVxuXG4gIGRhdGVJbnB1dChldmVudCkge1xuICAgIGxldCBjdXJyZW50VmFsdWU6IHN0cmluZyA9IGV2ZW50LnNyY0VsZW1lbnQudmFsdWU7XG4gICAgaWYgKGN1cnJlbnRWYWx1ZSkge1xuICAgICAgaWYgKGN1cnJlbnRWYWx1ZS5sZW5ndGggPT0gMiAmJiBjdXJyZW50VmFsdWUuY2hhckF0KDIpICE9ICcvJykge1xuICAgICAgICBldmVudC50YXJnZXQudmFsdWUgPSBjdXJyZW50VmFsdWUgKyBcIi9cIjtcbiAgICAgIH1cbiAgICAgIGlmIChjdXJyZW50VmFsdWUubGVuZ3RoID09IDUgJiYgY3VycmVudFZhbHVlLmNoYXJBdCg1KSAhPSAnLycpIHtcbiAgICAgICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gY3VycmVudFZhbHVlICsgXCIvXCI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0RGF0ZSh3c0RhdGUpOiBEYXRlIHtcbiAgICBpZighKHdzRGF0ZSBpbnN0YW5jZW9mIERhdGUpKXtcbiAgICAgIHJldHVybiB0aGlzLnV0aWwuZ2V0RW50ZXJlZERhdGUod3NEYXRlKTtcbiAgICB9XG4gICAgcmV0dXJuIHdzRGF0ZTtcbiAgfVxuXG4gIHNldFdhZ2VGbGFnKGV2ZW50OiBFdmVudCl7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLndhZ2VEaWFsb2cgPSB0cnVlO1xuICB9XG5cbiAgb25EaWFsb2dTYXZlKHdhZ2VDYWxjdWxhdG9yU2F2ZWREYXRhOiBXYWdlQ2FsY3VsYXRvck1vZGVsKXtcbiAgICB0aGlzLndhZ2VDYWxjdWxhdG9yRGF0YSA9IHdhZ2VDYWxjdWxhdG9yU2F2ZWREYXRhO1xuICAgIHRoaXMud2FnZURpYWxvZyA9IGZhbHNlO1xuICB9XG4gXG4gIG9uRGlhbG9nQ2FuY2VsKCl7XG4gICAgdGhpcy53YWdlRGlhbG9nID0gZmFsc2U7XG4gIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZW1wRm9ybVwiICNlbXBGb3JtRGlyZWN0aXZlPVwibmdGb3JtXCI+XHJcbiAgPGlvbi1ncmlkPlxyXG4gICAgPGlvbi1yb3cgKm5nSWY9XCIhZW1wVG9FZGl0Py5pc1BhcnRUaW1lRW1wbG95ZXJcIj5cclxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tcGFkZGluZ1wiIHNpemU9XCIxMlwiIHNpemVTbT1cIjEyXCIgc2l6ZVhzPVwiMTJcIiBzaXplTWQ9XCI2XCIgc2l6ZUxnPVwiNlwiIHNpemVYbD1cIjZcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicC1mbHVpZCBmb3JtZ3JpZFwiPlxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cIndjRW1wTmFtZVwiPkVtcGxveWVyIE5hbWU8L2xhYmVsPlxyXG4gICAgICAgICAgICA8YXBwLXNlYXJjaC1lbXBsb3llciBpZD1cIndjRW1wbG95ZXJOYW1lXCIgW2Zvcm1Db250cm9sXT1cIndjRW1wTmFtZVwiIChvbkZvdW5kKT1cInNldEVtcGxveWVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIFtlbXBUeXBlXT1cIidSRUcnXCI+PC9hcHAtc2VhcmNoLWVtcGxveWVyPlxyXG4gICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nd2NFbXBOYW1lJyBbZm9ybV09XCJlbXBGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCcsIHBhdHRlcm46ICclLCA8LCA+LCBeLCBfLCB7LCB9IGFyZSBub3QgYWxsb3dlZCdcclxuICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiAqbmdJZj1cImlzTUUoKVwiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJ3Y0VtcFN0YXRlXCI+Q291bnRyeTwvbGFiZWw+PGJyPlxyXG4gICAgICAgICAgICAgIDxhcHAtZHJvcGRvd24gaW5wdXRJZD1cIndjRW1wQ291bnRyeVwiIFtvcHRpb25zXT1cImNvdW50cnlPcHRpb25zXCIgb3B0aW9uTGFiZWw9XCJ0ZXh0XCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIiBbZm9ybUNvbnRyb2xdPVwid2NFbXBDb3VudHJ5XCIgW2F1dG9EaXNwbGF5Rmlyc3RdPVwiZmFsc2VcIiBpbnB1dElkPVwid2NFbXBDb3VudHJ5XCI+PC9hcHAtZHJvcGRvd24+XHJcbiAgICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J3djRW1wQ291bnRyeScgW2Zvcm1dPVwiZW1wRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnXHJcbiAgICAgICAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cIndjRW1wQWRkcmVzc0xpbmUxXCI+U3RyZWV0IEFkZHJlc3M8L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgaWQ9XCJ3Y0VtcEFkZHJlc3NMaW5lMVwiIHR5cGU9XCJpbnB1dFwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sXT1cIndjRW1wQWRkcmVzc0xpbmUxXCIgYXBwU3RyaXBJbnZpc2libGVDaGFycy8+XHJcbiAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSd3Y0VtcEFkZHJlc3NMaW5lMScgW2Zvcm1dPVwiZW1wRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnLCBwYXR0ZXJuOiAnb25seSBsZXR0ZXJzLCBudW1iZXJzLCBzcGFjZXMsIGNvbW1hcywgcGVyaW9kcywgYXBvc3Ryb3BoZXMsIGh5cGhlbnMsICMgYW5kIC8gYWxsb3dlZCcsXHJcbiAgICAgICAgICAgICAgICBtYXhsZW5ndGg6ICdjYW5ub3QgZXhjZWVkIDQwIGNoYXJhY3RlcnMnXHJcbiAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJ3Y0VtcENpdHlcIj5DaXR5PC9sYWJlbD5cclxuICAgICAgICAgICAgPGlucHV0IGlkPVwid2NFbXBDaXR5XCIgdHlwZT1cImlucHV0XCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xdPVwid2NFbXBDaXR5XCIgYXBwU3RyaXBJbnZpc2libGVDaGFycy8+XHJcbiAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSd3Y0VtcENpdHknIFtmb3JtXT1cImVtcEZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJywgcGF0dGVybjogJ2NpdHkgbmFtZSBjYW4gb25seSBjb250YWluIGxldHRlcnMsIHNwYWNlcywgYW5kIGh5cGhlbnMnLFxyXG4gICAgICAgICAgICAgICAgbWF4bGVuZ3RoOiAnY2Fubm90IGV4Y2VlZCAzMCBjaGFyYWN0ZXJzJ1xyXG4gICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNNRSgpXCI+XHJcbiAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgIDxpb24tY29sIHN0eWxlPVwicGFkZGluZzogMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJ3Y0VtcFN0YXRlXCI+U3RhdGU8L2xhYmVsPjxicj5cclxuICAgICAgICAgICAgICAgICAgPGFwcC1kcm9wZG93biBpbnB1dElkPVwid2NFbXBTdGF0ZVwiIFtvcHRpb25zXT1cInN0YXRlc0NvbWJvXCIgb3B0aW9uTGFiZWw9XCJ0ZXh0XCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCIgW2Zvcm1Db250cm9sXT1cIndjRW1wU3RhdGVcIiBbYXV0b0Rpc3BsYXlGaXJzdF09XCJmYWxzZVwiIGlucHV0SWQ9XCJ3Y0VtcFN0YXRlXCI+PC9hcHAtZHJvcGRvd24+XHJcbiAgICAgICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSd3Y0VtcFN0YXRlJyBbZm9ybV09XCJlbXBGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCIxXCI+PC9pb24tY29sPlxyXG4gICAgICAgICAgICAgIDxpb24tY29sIHN0eWxlPVwicGFkZGluZzogMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJ3c1ppcENvZGVcIj5aaXAgQ29kZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cIndzWmlwQ29kZVwiIHR5cGU9XCJpbnB1dFwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sXT1cIndzWmlwQ29kZVwiIG1pbmxlbmd0aD1cIjVcIiBtYXhsZW5ndGg9XCI5XCJcclxuICAgICAgICAgICAgICAgICAgICBhcHBTdHJpcEludmlzaWJsZUNoYXJzIC8+XHJcbiAgICAgICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSd3c1ppcENvZGUnIFtmb3JtXT1cImVtcEZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZhbGlkTGVuZ3RoOiAnWmlwIGNvZGUgc2hvdWxkIGJlIG9mIDUgb3IgOSBkaWdpdHMuJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52YWxpZE51bWJlcjogJ1ppcCBjb2RlIHNob3VsZCBvbmx5IGhhdmUgbnVtYmVycy4nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZhbGlkWmlwQ29kZTogJ3BsZWFzZSBlbnRlciBhIHZhbGlkIHppcCBjb2RlJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWlzTUUoKVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwid2NFbXBTdGF0ZVwiPlN0YXRlPC9sYWJlbD48YnI+XHJcbiAgICAgICAgICAgICAgPGFwcC1kcm9wZG93biBpbnB1dElkPVwid2NFbXBTdGF0ZVwiIFtvcHRpb25zXT1cInN0YXRlc0NvbWJvXCIgb3B0aW9uTGFiZWw9XCJ0ZXh0XCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwid2NFbXBTdGF0ZVwiIFthdXRvRGlzcGxheUZpcnN0XT1cImZhbHNlXCIgaW5wdXRJZD1cIndjRW1wU3RhdGVcIj48L2FwcC1kcm9wZG93bj5cclxuICAgICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nd2NFbXBTdGF0ZScgW2Zvcm1dPVwiZW1wRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIndzWmlwQ29kZVwiPlppcCBDb2RlPC9sYWJlbD5cclxuICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJ3c1ppcENvZGVcIiB0eXBlPVwiaW5wdXRcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbF09XCJ3c1ppcENvZGVcIiBtaW5sZW5ndGg9XCI1XCIgbWF4bGVuZ3RoPVwiOVwiXHJcbiAgICAgICAgICAgICAgICBhcHBTdHJpcEludmlzaWJsZUNoYXJzIC8+XHJcbiAgICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J3dzWmlwQ29kZScgW2Zvcm1dPVwiZW1wRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52YWxpZExlbmd0aDogJ1ppcCBjb2RlIHNob3VsZCBiZSBvZiA1IG9yIDkgZGlnaXRzLicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZhbGlkTnVtYmVyOiAnWmlwIGNvZGUgc2hvdWxkIG9ubHkgaGF2ZSBudW1iZXJzLicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZhbGlkWmlwQ29kZTogJ3BsZWFzZSBlbnRlciBhIHZhbGlkIHppcCBjb2RlJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cImxhc3REYXlXb3JrZWRcIj5MYXN0IGRheSB5b3Ugd29ya2VkPC9sYWJlbD5cclxuICAgICAgICAgICAgPHAtY2FsZW5kYXIgW2ljb25BcmlhTGFiZWxdPVwiJ0xhc3QgZGF5IHdvcmtlZCdcIiBbc2hvd0ljb25dPVwidHJ1ZVwiIGlucHV0SWQ9XCJsYXN0RGF5V29ya2VkXCIgYXBwZW5kVG89XCJib2R5XCJcclxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwibGFzdERheVdvcmtlZFwiIFttaW5EYXRlXT1cInN1bkRhdGVcIiBbbWF4RGF0ZV09XCJzYXREYXRlXCJcclxuICAgICAgICAgICAgICBbZGVmYXVsdERhdGVdPVwic3VuRGF0ZVwiIFtzZWxlY3RPdGhlck1vbnRoc109XCJ0cnVlXCIgcGxhY2Vob2xkZXI9XCJtbS9kZC95eXl5XCIgZGF0ZUZvcm1hdD1cIm1tL2RkL3l5XCJcclxuICAgICAgICAgICAgICBbbW9udGhOYXZpZ2F0b3JdPVwidHJ1ZVwiIFt5ZWFyTmF2aWdhdG9yXT1cInRydWVcIiB5ZWFyUmFuZ2U9XCIxOTAxOjIwNTBcIiAob25JbnB1dCk9XCJkYXRlSW5wdXQoJGV2ZW50KVwiPjwvcC1jYWxlbmRhcj5cclxuICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J2xhc3REYXlXb3JrZWQnIFtmb3JtXT1cImVtcEZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJyxcclxuICAgICAgICAgICAgICAgIGRhdGVOb3RCZXR3ZWVuOiAnRGF0ZSBzaG91bGQgYmUgYmV0d2VlbiAnICsgZHluYW1pY1BhcmFtLnN1bmRheV9kYXRlICsgJyBhbmQgJyArIGR5bmFtaWNQYXJhbS5zYXR1cmRheV9kYXRlICsgJy4nXHJcbiAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tcGFkZGluZ1wiIHNpemU9XCIxMlwiIHNpemVTbT1cIjEyXCIgc2l6ZVhzPVwiMTJcIiBzaXplTWQ9XCI2XCIgc2l6ZUxnPVwiNlwiIHNpemVYbD1cIjZcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicC1mbHVpZCBmb3JtZ3JpZFwiPlxyXG5cclxuICAgICAgICAgIFxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwid3NQaG9uZU51bWJlclwiPlBob25lIE5vLjwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxwLWlucHV0TWFzayBpbnB1dElkPVwid3NQaG9uZU51bWJlclwiIFtmb3JtQ29udHJvbF09XCJ3c1Bob25lTnVtYmVyXCIgbWFzaz1cIig5OTkpIDk5OS05OTk5XCJcclxuICAgICAgICAgICAgICB1bm1hc2s9XCJ0cnVlXCI+PC9wLWlucHV0TWFzaz5cclxuICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J3dzUGhvbmVOdW1iZXInIFtmb3JtXT1cImVtcEZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJ1xyXG4gICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwid2NFbXBTdGF0dXNcIj5XaGF0J3MgeW91ciBlbXBsb3ltZW50IHN0YXR1cyB3aXRoIHRoaXMgZW1wbG95ZXI/PC9sYWJlbD5cclxuICAgICAgICAgICAgPGFwcC1kcm9wZG93biBpbnB1dElkPVwid2NFbXBTdGF0dXNcIiBbb3B0aW9uc109XCJlbXBsb3ltZW50U3RhdHVzT3B0aW9uc0FsbFwiIG9wdGlvbkxhYmVsPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIGFwcGVuZFRvPVwiYm9keVwiIFtmb3JtQ29udHJvbF09XCJ3Y0VtcFN0YXR1c1wiIFthdXRvRGlzcGxheUZpcnN0XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICBpbnB1dElkPVwid2NFbXBTdGF0dXMxXCI+PC9hcHAtZHJvcGRvd24+PGJyIC8+XHJcbiAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSd3Y0VtcFN0YXR1cycgW2Zvcm1dPVwiZW1wRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnLCBjaGFuZ2VFbXBTdGF0dXM6ICdJZiBob3VycyBhbmQgZWFybmluZ3MgYXJlIGJvdGggMCwgZW1wbG95bWVudCBzdGF0dXMgY2Fubm90IGJlIHdvcmtpbmctcGFydCB0aW1lLicgXHJcbiAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCIgKm5nSWY9XCJ3Y0VtcFN0YXR1cy52YWx1ZSA9PSAnTFdMTydcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cImhhdmVSZXR1cm5Ub1dvcmtEYXRlXCI+RG8geW91IGtub3cgd2hlbiB5b3UncmUgcmV0dXJuaW5nIHRvIGZ1bGwtdGltZSB3b3JrPzwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxwLXNlbGVjdEJ1dHRvbiBbb3B0aW9uc109XCJ5ZXNOb09wdGlvblwiIFtmb3JtQ29udHJvbF09XCJoYXZlUmV0dXJuVG9Xb3JrRGF0ZVwiIG9wdGlvbkxhYmVsPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiPjwvcC1zZWxlY3RCdXR0b24+XHJcbiAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSdoYXZlUmV0dXJuVG9Xb3JrRGF0ZScgW2Zvcm1dPVwiZW1wRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnXHJcbiAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiAqbmdJZj1cIndjRW1wU3RhdHVzLnZhbHVlID09ICdMV0xPJyAmJiBoYXZlUmV0dXJuVG9Xb3JrRGF0ZS52YWx1ZSA9PSAnWSdcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cIndjRW1wTG93UnR3RGF0ZVwiPldoZW4/PC9sYWJlbD5cclxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgICAgICAgPHAtY2FsZW5kYXIgW3Nob3dJY29uXT1cInRydWVcIiBpbnB1dElkPVwid2NFbXBMb3dSdHdEYXRlXCIgYXBwZW5kVG89XCJib2R5XCIgW2Zvcm1Db250cm9sXT1cIndjRW1wTG93UnR3RGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIm1tL2RkL3l5eXlcIiBbc2hvd09uRm9jdXNdPVwiZmFsc2VcIiAob25JbnB1dCk9XCJkYXRlSW5wdXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBbaWNvbkFyaWFMYWJlbF09XCInV2hlbj8nXCIgW21vbnRoTmF2aWdhdG9yXT1cInRydWVcIiBbeWVhck5hdmlnYXRvcl09XCJ0cnVlXCIgeWVhclJhbmdlPVwiMTkwMToyMDUwXCI+PC9wLWNhbGVuZGFyPlxyXG4gICAgICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCInd2Vla2xpZXMudjIuZW1wbG95bWVudC5ydHcuaW5mby5wb3B1cC4yMTU1JyB8IHRyYW5zbGF0ZSB8IHRydXN0SHRtbFwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4OyBwYWRkaW5nLXRvcDozcHhcIj48L2FwcC1vdmVybGF5LWluZm8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nd2NFbXBMb3dSdHdEYXRlJyBbZm9ybV09XCJlbXBGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCdcclxuICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiAqbmdJZj1cIndjRW1wU3RhdHVzLnZhbHVlID09ICdSVFdGJ1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwid2NFbXBSdHdEYXRlXCI+UmV0dXJuIHRvIHdvcmsgZGF0ZTwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxwLWNhbGVuZGFyIFtzaG93SWNvbl09XCJ0cnVlXCIgaW5wdXRJZD1cIndjRW1wUnR3RGF0ZVwiIGFwcGVuZFRvPVwiYm9keVwiIFtmb3JtQ29udHJvbF09XCJ3Y0VtcFJ0d0RhdGVcIlxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwibW0vZGQveXl5eVwiIFtzaG93T25Gb2N1c109XCJmYWxzZVwiIChvbklucHV0KT1cImRhdGVJbnB1dCgkZXZlbnQpXCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgW2ljb25BcmlhTGFiZWxdPVwiJ1JldHVybiB0byB3b3JrIGRhdGUnXCIgW21vbnRoTmF2aWdhdG9yXT1cInRydWVcIiBbeWVhck5hdmlnYXRvcl09XCJ0cnVlXCIgeWVhclJhbmdlPVwiMTkwMToyMDUwXCI+PC9wLWNhbGVuZGFyPlxyXG4gICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nd2NFbXBSdHdEYXRlJyBbZm9ybV09XCJlbXBGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCdcclxuICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiAqbmdJZj1cIndjRW1wU3RhdHVzLnZhbHVlID09ICdEQ0ZJJ1wiPlxyXG4gICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICBmb3I9XCJkaXNjaGFyZ2VEZXRhaWxcIj57e1wiaW5kdWN0aW9uLmNvbmZpcm0uZW1wbG95bWVudC5yZWFzb24uc2VwYXJhdGlvbi5kaXNjaGFyZ2VcInx0cmFuc2xhdGV9fTwvbGFiZWw+PGJyPlxyXG4gICAgICAgICAgICA8YXBwLWRyb3Bkb3duIFtvcHRpb25zXT1cImRpc2NoYXJnZVJlYXNvbk9wdGlvbnNBbGxcIiBbZm9ybUNvbnRyb2xdPVwiZGlzY2hhcmdlZFwiIG9wdGlvbkxhYmVsPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCIgW2F1dG9EaXNwbGF5Rmlyc3RdPVwiZmFsc2VcIiBvcHRpb25WYWx1ZT1cInZhbHVlXCIgaW5wdXRJZD1cImRpc2NoYXJnZWQxXCI+PC9hcHAtZHJvcGRvd24+XHJcbiAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSdkaXNjaGFyZ2VkJyBbZm9ybV09XCJlbXBGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCdcclxuICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiAqbmdJZj1cIndjRW1wU3RhdHVzLnZhbHVlID09ICdWT0xRJ1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwidm9sUXVpdERldGFpbHNcIj57e1wiaW5kdWN0aW9uLmNvbmZpcm0uZW1wbG95bWVudC5yZWFzb24uc2VwYXJhdGlvbi5xdWl0XCJ8dHJhbnNsYXRlfX08L2xhYmVsPjxicj5cclxuICAgICAgICAgICAgPGFwcC1kcm9wZG93biBbb3B0aW9uc109XCJ2b2xRdWl0UmVhc29uT3B0aW9uc0FsbFwiIFtmb3JtQ29udHJvbF09XCJ2b2x1bnRhcnlRdWl0XCIgb3B0aW9uTGFiZWw9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIiBbYXV0b0Rpc3BsYXlGaXJzdF09XCJmYWxzZVwiIG9wdGlvblZhbHVlPVwidmFsdWVcIiBpbnB1dElkPVwidm9sdW50YXJ5UXVpdDFcIj48L2FwcC1kcm9wZG93bj5cclxuICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J3ZvbHVudGFyeVF1aXQnIFtmb3JtXT1cImVtcEZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJ1xyXG4gICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiICpuZ0lmPVwiaXNNUygpID8gZmFsc2UgOiAod2NFbXBTdGF0dXMudmFsdWUgPT0gJ1ZPTFEnIHx8IHdjRW1wU3RhdHVzLnZhbHVlID09J1NVU1AnIHx8IHdjRW1wU3RhdHVzLnZhbHVlID09J0RDRkknKVwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwic3RhcnREYXlXb3JrZWRcIj5GaXJzdCBkYXkgeW91IHdvcmtlZDwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxwLWNhbGVuZGFyIFtpY29uQXJpYUxhYmVsXT1cIidTdGFydCBkYXkgd29ya2VkJ1wiIFtzaG93SWNvbl09XCJ0cnVlXCIgaW5wdXRJZD1cInN0YXJ0RGF5V29ya2VkXCIgYXBwZW5kVG89XCJib2R5XCJcclxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwic3RhcnREYXlXb3JrZWRcIiBbbWF4RGF0ZV09XCJtYXhTdGFydERhdGVcIlxyXG4gICAgICAgICAgICAgIFtkZWZhdWx0RGF0ZV09XCJzdW5EYXRlXCIgW3NlbGVjdE90aGVyTW9udGhzXT1cInRydWVcIiBwbGFjZWhvbGRlcj1cIm1tL2RkL3l5eXlcIiBcclxuICAgICAgICAgICAgICBbbW9udGhOYXZpZ2F0b3JdPVwidHJ1ZVwiIFt5ZWFyTmF2aWdhdG9yXT1cInRydWVcIiB5ZWFyUmFuZ2U9XCIxOTAxOjIwNTBcIiAob25JbnB1dCk9XCJkYXRlSW5wdXQoJGV2ZW50KVwiPjwvcC1jYWxlbmRhcj5cclxuICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J3N0YXJ0RGF5V29ya2VkJyBbZm9ybV09XCJlbXBGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCcsXHJcbiAgICAgICAgICAgICAgICBkYXRlTm90QmV0d2VlbjogJ0RhdGUgc2hvdWxkIGJlIGJldHdlZW4gJyArIGR5bmFtaWNQYXJhbS5zdW5kYXlfZGF0ZSArICcgYW5kICcgKyBkeW5hbWljUGFyYW0uc2F0dXJkYXlfZGF0ZSArICcuJ1xyXG4gICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiICpuZ0lmPVwiaXNNUygpID8gZmFsc2UgOiAod2NFbXBTdGF0dXMudmFsdWUgPT0gJ1ZPTFEnIHx8IHdjRW1wU3RhdHVzLnZhbHVlID09J1NVU1AnIHx8IHdjRW1wU3RhdHVzLnZhbHVlID09J0RDRkknIHx8IHdjRW1wU3RhdHVzLnZhbHVlID09J1NUTE8nKVwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwiam9iVGl0bGVcIj5Kb2IgVGl0bGU8L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgaWQ9XCJqb2JUaXRsZVwiIHR5cGU9XCJpbnB1dFwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sXT1cImpvYlRpdGxlXCIgcmVxdWlyZWQgYXBwU3RyaXBJbnZpc2libGVDaGFycy8+XHJcbiAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSdqb2JUaXRsZScgW2Zvcm1dPVwiZW1wRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnXHJcbiAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBbZm9ybUNvbnRyb2xdPVwiaGlkRW1wSWRcIiAvPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiAqbmdJZj1cIiFpc01FKClcIj5cclxuICAgICAgICA8c3BhbiAoY2xpY2spPVwic2V0V2FnZUZsYWcoJGV2ZW50KVwiIGNsYXNzPVwidW5kZXJsaW5lLWJsdWVcIiBzdHlsZT1cImN1cnNvcjpwb2ludGVyO1wiPlxyXG4gICAgICAgICAgPGI+RWFybmluZ3MgQ2FsY3VsYXRvcjwvYj5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJ3YWdlRGlhbG9nXCI+XHJcbiAgICAgICAgICAgIDxhcHAtd2FnZS1jYWxjdWxhdG9yIFtkeW5hbWljUGFyYW1dPVwiZHluYW1pY1BhcmFtXCIgW3Nob3dDYWxjdWxhdG9yUG9wdXBdPVwidHJ1ZVwiIFxyXG4gICAgICAgICAgICAoZ3Jvc3NFYXJuaW5nc0NoYW5nZSk9XCJ1cGRhdGVHcm9zc0Vhcm5pbmdzKCRldmVudClcIiAodG90YWxIb3Vyc0NoYW5nZSk9XCJ1cGRhdGVUb3RhbEhvdXJzKCRldmVudClcIlxyXG4gICAgICAgICAgICAoc2F2ZUNsaWNrZWQpPVwib25EaWFsb2dTYXZlKCRldmVudClcIiAoY2FuY2VsQ2xpY2tlZCk9XCJvbkRpYWxvZ0NhbmNlbCgpXCIgW3dhZ2VDYWxjdWxhdG9yU2F2ZWREYXRhXT1cIndhZ2VDYWxjdWxhdG9yRGF0YVwiPjwvYXBwLXdhZ2UtY2FsY3VsYXRvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJ3Y0VtcEhvdXJzV29ya2VkXCI+SG91cnMgd29ya2VkPC9sYWJlbD48YnIvPlxyXG4gICAgICAgICAgPHAtaW5wdXROdW1iZXIgaW5wdXRJZD1cIndjRW1wSG91cnNXb3JrZWRcIiBbZm9ybUNvbnRyb2xdPVwid2NFbXBIb3Vyc1dvcmtlZFwiIG1heGxlbmd0aD1cIjEwXCJcclxuICAgICAgICAgIG1vZGU9XCJkZWNpbWFsXCIgW21pbkZyYWN0aW9uRGlnaXRzXT1cIjFcIiBbbWF4RnJhY3Rpb25EaWdpdHNdPVwiMlwiPjwvcC1pbnB1dE51bWJlcj48YnI+XHJcbiAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nd2NFbXBIb3Vyc1dvcmtlZCcgW2Zvcm1dPVwiZW1wRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJywgaG91cnNQZXJXZWVrRXhjZWVkZWQ6ICd0b3RhbCBob3VycyBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gMTY4IGZvciB0aGUgd2VlaydcclxuICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJ3c0VtcEFtdEVhcm5lZFwiPlRvdGFsIEdyb3NzIEVhcm5pbmdzPC9sYWJlbD5cclxuICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCInd2Vla2xpZXMudjIuZW1wbG95bWVudC5ydHcuaW5mby5wb3B1cC4xMDAwJyB8IHRyYW5zbGF0ZSB8IHRydXN0SHRtbFwiXHJcbiAgICAgICAgICAgIHN0eWxlPVwicGFkZGluZy1sZWZ0OiA4cHg7IHBhZGRpbmctdG9wOjNweFwiPjwvYXBwLW92ZXJsYXktaW5mbz48YnIvPlxyXG4gICAgICAgICAgPHAtaW5wdXROdW1iZXIgaW5wdXRJZD1cIndzRW1wQW10RWFybmVkXCIgbW9kZT1cImN1cnJlbmN5XCIgY3VycmVuY3k9XCJVU0RcIiBsb2NhbGU9XCJlbi1VU1wiXHJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJ3c0VtcEFtdEVhcm5lZFwiIG1heGxlbmd0aD1cIjEwXCIgcGxhY2Vob2xkZXI9XCIkMC4wMFwiPjwvcC1pbnB1dE51bWJlcj48YnI+XHJcbiAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nd3NFbXBBbXRFYXJuZWQnIFtmb3JtXT1cImVtcEZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCcsIGVhcm5pbmdzTm90WmVybzogJ0dyb3NzIEVhcm5pbmdzIGNhbm5vdCBiZSB6ZXJvLidcclxuICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2lvbi1jb2w+XHJcbiAgICA8L2lvbi1yb3c+XHJcbiAgICA8aW9uLXJvdyAqbmdJZj1cImVtcFRvRWRpdD8uaXNQYXJ0VGltZUVtcGxveWVyXCI+XHJcbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXBhZGRpbmdcIiBzaXplPVwiMTJcIiBzaXplU209XCIxMlwiIHNpemVYcz1cIjEyXCIgc2l6ZU1kPVwiNlwiIHNpemVMZz1cIjZcIiBzaXplWGw9XCI2XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInAtZmx1aWQgZm9ybWdyaWRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxyXG4gICAgICAgICAgICA8Yj57e3djRW1wTmFtZS52YWx1ZX19PC9iPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8c2VjdGlvbiBoaWRkZW4+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgW2Zvcm1Db250cm9sXT1cIndjRW1wTmFtZVwiIC8+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgW2Zvcm1Db250cm9sXT1cIndjRW1wQWRkcmVzc0xpbmUxXCIgLz5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBbZm9ybUNvbnRyb2xdPVwid2NFbXBDaXR5XCIgLz5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBbZm9ybUNvbnRyb2xdPVwid2NFbXBTdGF0ZVwiIC8+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgW2Zvcm1Db250cm9sXT1cIndzWmlwQ29kZVwiIC8+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgW2Zvcm1Db250cm9sXT1cIndzUGhvbmVOdW1iZXJcIiAvPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIFtmb3JtQ29udHJvbF09XCJoaWRFbXBJZFwiIC8+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgW2Zvcm1Db250cm9sXT1cImlzUGFydFRpbWVFbXBsb3llclwiIC8+XHJcbiAgICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cIndjRW1wU3RhdHVzXCI+V2hhdCdzIHlvdXIgZW1wbG95bWVudCBzdGF0dXMgd2l0aCB0aGlzIGVtcGxveWVyPzwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxhcHAtZHJvcGRvd24gaW5wdXRJZD1cIndjRW1wU3RhdHVzXCIgW29wdGlvbnNdPVwiZW1wbG95bWVudFN0YXR1c09wdGlvbnNBbGxcIiBvcHRpb25MYWJlbD1cInRleHRcIlxyXG4gICAgICAgICAgICAgIG9wdGlvblZhbHVlPVwidmFsdWVcIiBhcHBlbmRUbz1cImJvZHlcIiBbZm9ybUNvbnRyb2xdPVwid2NFbXBTdGF0dXNcIiBbYXV0b0Rpc3BsYXlGaXJzdF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgaW5wdXRJZD1cIndjRW1wU3RhdHVzMlwiPjwvYXBwLWRyb3Bkb3duPjxiciAvPlxyXG4gICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nd2NFbXBTdGF0dXMnIFtmb3JtXT1cImVtcEZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnLCBjaGFuZ2VFbXBTdGF0dXM6ICdJZiBob3VycyBhbmQgZWFybmluZ3MgYXJlIGJvdGggMCwgZW1wbG95bWVudCBzdGF0dXMgY2Fubm90IGJlIHdvcmtpbmctcGFydCB0aW1lLidcclxuICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiICpuZ0lmPVwid2NFbXBTdGF0dXMudmFsdWUgPT0gJ0xXTE8nXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJoYXZlUmV0dXJuVG9Xb3JrRGF0ZVwiPkRvIHlvdSBrbm93IHdoZW4geW91J3JlIHJldHVybmluZyB0byBmdWxsLXRpbWUgd29yaz88L2xhYmVsPlxyXG4gICAgICAgICAgICA8cC1zZWxlY3RCdXR0b24gW29wdGlvbnNdPVwieWVzTm9PcHRpb25cIiBbZm9ybUNvbnRyb2xdPVwiaGF2ZVJldHVyblRvV29ya0RhdGVcIiBvcHRpb25MYWJlbD1cInRleHRcIlxyXG4gICAgICAgICAgICAgIG9wdGlvblZhbHVlPVwidmFsdWVcIj48L3Atc2VsZWN0QnV0dG9uPlxyXG4gICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0naGF2ZVJldHVyblRvV29ya0RhdGUnIFtmb3JtXT1cImVtcEZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnXHJcbiAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiICpuZ0lmPVwid2NFbXBTdGF0dXMudmFsdWUgPT0gJ0xXTE8nICYmIGhhdmVSZXR1cm5Ub1dvcmtEYXRlLnZhbHVlID09ICdZJ1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwid2NFbXBMb3dSdHdEYXRlXCI+V2hlbj88L2xhYmVsPlxyXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cclxuICAgICAgICAgICAgICA8cC1jYWxlbmRhciBbc2hvd0ljb25dPVwidHJ1ZVwiIGlucHV0SWQ9XCJ3Y0VtcExvd1J0d0RhdGVcIiBhcHBlbmRUbz1cImJvZHlcIiBbZm9ybUNvbnRyb2xdPVwid2NFbXBMb3dSdHdEYXRlXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwibW0vZGQveXl5eVwiIFtzaG93T25Gb2N1c109XCJmYWxzZVwiIChvbklucHV0KT1cImRhdGVJbnB1dCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFtpY29uQXJpYUxhYmVsXT1cIidXaGVuPydcIiBbbW9udGhOYXZpZ2F0b3JdPVwidHJ1ZVwiIFt5ZWFyTmF2aWdhdG9yXT1cInRydWVcIiB5ZWFyUmFuZ2U9XCIxOTAxOjIwNTBcIj48L3AtY2FsZW5kYXI+XHJcbiAgICAgICAgICAgICAgPGFwcC1vdmVybGF5LWluZm8gW292ZXJsYXlUZXh0XT1cIid3ZWVrbGllcy52Mi5lbXBsb3ltZW50LnJ0dy5pbmZvLnBvcHVwLjIwNTAnIHwgdHJhbnNsYXRlIHwgdHJ1c3RIdG1sXCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwicGFkZGluZy1sZWZ0OiA4cHg7IHBhZGRpbmctdG9wOjNweFwiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSd3Y0VtcExvd1J0d0RhdGUnIFtmb3JtXT1cImVtcEZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnXHJcbiAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiAqbmdJZj1cIndjRW1wU3RhdHVzLnZhbHVlID09ICdSVFdGJ1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwid2NFbXBSdHdEYXRlXCI+UmV0dXJuIHRvIHdvcmsgZGF0ZTwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxwLWNhbGVuZGFyIFtzaG93SWNvbl09XCJ0cnVlXCIgaW5wdXRJZD1cIndjRW1wUnR3RGF0ZVwiIGFwcGVuZFRvPVwiYm9keVwiIFtmb3JtQ29udHJvbF09XCJ3Y0VtcFJ0d0RhdGVcIlxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwibW0vZGQveXl5eVwiIFtzaG93T25Gb2N1c109XCJmYWxzZVwiIChvbklucHV0KT1cImRhdGVJbnB1dCgkZXZlbnQpXCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgW2ljb25BcmlhTGFiZWxdPVwiJ1JldHVybiB0byB3b3JrIGRhdGUnXCIgW21vbnRoTmF2aWdhdG9yXT1cInRydWVcIiBbeWVhck5hdmlnYXRvcl09XCJ0cnVlXCIgeWVhclJhbmdlPVwiMTkwMToyMDUwXCI+PC9wLWNhbGVuZGFyPlxyXG4gICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nd2NFbXBSdHdEYXRlJyBbZm9ybV09XCJlbXBGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJ1xyXG4gICAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCIgKm5nSWY9XCJ3Y0VtcFN0YXR1cy52YWx1ZSA9PSAnRENGSSdcIj5cclxuICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgZm9yPVwiZGlzY2hhcmdlRGV0YWlsXCI+e3tcImluZHVjdGlvbi5jb25maXJtLmVtcGxveW1lbnQucmVhc29uLnNlcGFyYXRpb24uZGlzY2hhcmdlXCJ8dHJhbnNsYXRlfX08L2xhYmVsPjxicj5cclxuICAgICAgICAgICAgPGFwcC1kcm9wZG93biBbb3B0aW9uc109XCJkaXNjaGFyZ2VSZWFzb25PcHRpb25zQWxsXCIgW2Zvcm1Db250cm9sXT1cImRpc2NoYXJnZWRcIiBvcHRpb25MYWJlbD1cInRleHRcIlxyXG4gICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiIFthdXRvRGlzcGxheUZpcnN0XT1cImZhbHNlXCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIGlucHV0SWQ9XCJkaXNjaGFyZ2VkMlwiPjwvYXBwLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nZGlzY2hhcmdlZCcgW2Zvcm1dPVwiZW1wRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCdcclxuICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiICpuZ0lmPVwid2NFbXBTdGF0dXMudmFsdWUgPT0gJ1ZPTFEnXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJ2b2xRdWl0RGV0YWlsc1wiPnt7XCJpbmR1Y3Rpb24uY29uZmlybS5lbXBsb3ltZW50LnJlYXNvbi5zZXBhcmF0aW9uLnF1aXRcInx0cmFuc2xhdGV9fTwvbGFiZWw+PGJyPlxyXG4gICAgICAgICAgICA8YXBwLWRyb3Bkb3duIFtvcHRpb25zXT1cInZvbFF1aXRSZWFzb25PcHRpb25zQWxsXCIgW2Zvcm1Db250cm9sXT1cInZvbHVudGFyeVF1aXRcIiBvcHRpb25MYWJlbD1cInRleHRcIlxyXG4gICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiIFthdXRvRGlzcGxheUZpcnN0XT1cImZhbHNlXCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIGlucHV0SWQ9XCJ2b2x1bnRhcnlRdWl0MlwiPjwvYXBwLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0ndm9sdW50YXJ5UXVpdCcgW2Zvcm1dPVwiZW1wRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCdcclxuICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiAqbmdJZj1cIndjRW1wU3RhdHVzLnZhbHVlID09ICdWT0xRJyB8fCB3Y0VtcFN0YXR1cy52YWx1ZSA9PSdTVVNQJyB8fCB3Y0VtcFN0YXR1cy52YWx1ZSA9PSdEQ0ZJJyB8fCB3Y0VtcFN0YXR1cy52YWx1ZSA9PSdTVExPJ1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwiam9iVGl0bGVcIj5Kb2IgVGl0bGU8L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgaWQ9XCJqb2JUaXRsZVwiIHR5cGU9XCJpbnB1dFwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sXT1cImpvYlRpdGxlXCIgYXBwU3RyaXBJbnZpc2libGVDaGFycy8+XHJcbiAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSdqb2JUaXRsZScgW2Zvcm1dPVwiZW1wRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCdcclxuICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiICpuZ0lmPVwid2NFbXBTdGF0dXMudmFsdWUgPT0gJ1ZPTFEnIHx8IHdjRW1wU3RhdHVzLnZhbHVlID09J1NVU1AnIHx8IHdjRW1wU3RhdHVzLnZhbHVlID09J0RDRkknXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJzdGFydERheVdvcmtlZFwiPkZpcnN0IGRheSB5b3Ugd29ya2VkPC9sYWJlbD5cclxuICAgICAgICAgICAgPHAtY2FsZW5kYXIgW2ljb25BcmlhTGFiZWxdPVwiJ1N0YXJ0IGRheSB3b3JrZWQnXCIgW3Nob3dJY29uXT1cInRydWVcIiBpbnB1dElkPVwic3RhcnREYXlXb3JrZWRcIiBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJzdGFydERheVdvcmtlZFwiIFttYXhEYXRlXT1cIm1heFN0YXJ0RGF0ZVwiXHJcbiAgICAgICAgICAgICAgW2RlZmF1bHREYXRlXT1cInN1bkRhdGVcIiBbc2VsZWN0T3RoZXJNb250aHNdPVwidHJ1ZVwiIHBsYWNlaG9sZGVyPVwibW0vZGQveXl5eVwiIFttb250aE5hdmlnYXRvcl09XCJ0cnVlXCIgW3llYXJOYXZpZ2F0b3JdPVwidHJ1ZVwiIHllYXJSYW5nZT1cIjE5MDE6MjA1MFwiIChvbklucHV0KT1cImRhdGVJbnB1dCgkZXZlbnQpXCI+PC9wLWNhbGVuZGFyPlxyXG4gICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nc3RhcnREYXlXb3JrZWQnIFtmb3JtXT1cImVtcEZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJyxcclxuICAgICAgICAgICAgICAgIGRhdGVOb3RCZXR3ZWVuOiAnRGF0ZSBzaG91bGQgYmUgYmV0d2VlbiAnICsgZHluYW1pY1BhcmFtLnN1bmRheV9kYXRlICsgJyBhbmQgJyArIGR5bmFtaWNQYXJhbS5zYXR1cmRheV9kYXRlICsgJy4nXHJcbiAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJsYXN0RGF5V29ya2VkXCI+TGFzdCBkYXkgeW91IHdvcmtlZDwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxwLWNhbGVuZGFyIFtpY29uQXJpYUxhYmVsXT1cIidMYXN0IGRheSB3b3JrZWQnXCIgW3Nob3dJY29uXT1cInRydWVcIiBpbnB1dElkPVwibGFzdERheVdvcmtlZFwiIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImxhc3REYXlXb3JrZWRcIiBbbWluRGF0ZV09XCJzdW5EYXRlXCIgW21heERhdGVdPVwic2F0RGF0ZVwiIGRhdGVGb3JtYXQ9XCJtbS9kZC95eVwiXHJcbiAgICAgICAgICAgICAgW2RlZmF1bHREYXRlXT1cInN1bkRhdGVcIiBbc2VsZWN0T3RoZXJNb250aHNdPVwidHJ1ZVwiIHBsYWNlaG9sZGVyPVwibW0vZGQveXl5eVwiIFxyXG4gICAgICAgICAgICAgIFttb250aE5hdmlnYXRvcl09XCJ0cnVlXCIgW3llYXJOYXZpZ2F0b3JdPVwidHJ1ZVwiIHllYXJSYW5nZT1cIjE5MDE6MjA1MFwiIChvbklucHV0KT1cImRhdGVJbnB1dCgkZXZlbnQpXCI+PC9wLWNhbGVuZGFyPlxyXG4gICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nbGFzdERheVdvcmtlZCcgW2Zvcm1dPVwiZW1wRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCcsXHJcbiAgICAgICAgICAgICAgICAgIGRhdGVOb3RCZXR3ZWVuOiAnRGF0ZSBzaG91bGQgYmUgYmV0d2VlbiAnICsgZHluYW1pY1BhcmFtLnN1bmRheV9kYXRlICsgJyBhbmQgJyArIGR5bmFtaWNQYXJhbS5zYXR1cmRheV9kYXRlICsgJy4nXHJcbiAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCIgKm5nSWY9XCIhaXNNRSgpXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJzZXRXYWdlRmxhZygkZXZlbnQpXCIgY2xhc3M9XCJ1bmRlcmxpbmUtYmx1ZVwiIHN0eWxlPVwiY3Vyc29yOnBvaW50ZXI7XCI+XHJcbiAgICAgICAgICAgICAgPGI+RWFybmluZ3MgQ2FsY3VsYXRvcjwvYj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwid2FnZURpYWxvZ1wiPlxyXG4gICAgICAgICAgICAgIDxhcHAtd2FnZS1jYWxjdWxhdG9yIFtkeW5hbWljUGFyYW1dPVwiZHluYW1pY1BhcmFtXCIgW3Nob3dDYWxjdWxhdG9yUG9wdXBdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAoZ3Jvc3NFYXJuaW5nc0NoYW5nZSk9XCJ1cGRhdGVHcm9zc0Vhcm5pbmdzKCRldmVudClcIiAodG90YWxIb3Vyc0NoYW5nZSk9XCJ1cGRhdGVUb3RhbEhvdXJzKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgKHNhdmVDbGlja2VkKT1cIm9uRGlhbG9nU2F2ZSgkZXZlbnQpXCIgKGNhbmNlbENsaWNrZWQpPVwib25EaWFsb2dDYW5jZWwoKVwiXHJcbiAgICAgICAgICAgICAgICBbd2FnZUNhbGN1bGF0b3JTYXZlZERhdGFdPVwid2FnZUNhbGN1bGF0b3JEYXRhXCI+PC9hcHAtd2FnZS1jYWxjdWxhdG9yPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwid2NFbXBIb3Vyc1dvcmtlZFwiPkhvdXJzIHdvcmtlZDwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxwLWlucHV0TnVtYmVyIGlucHV0SWQ9XCJ3Y0VtcEhvdXJzV29ya2VkXCIgW2Zvcm1Db250cm9sXT1cIndjRW1wSG91cnNXb3JrZWRcIiBtYXhsZW5ndGg9XCIxMFwiXHJcbiAgICAgICAgICAgIG1vZGU9XCJkZWNpbWFsXCIgW21pbkZyYWN0aW9uRGlnaXRzXT1cIjFcIiBbbWF4RnJhY3Rpb25EaWdpdHNdPVwiMlwiPjwvcC1pbnB1dE51bWJlcj5cclxuICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J3djRW1wSG91cnNXb3JrZWQnIFtmb3JtXT1cImVtcEZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnLCBob3Vyc1BlcldlZWtFeGNlZWRlZDogJ3RvdGFsIGhvdXJzIG11c3Qgbm90IGJlIGdyZWF0ZXIgdGhhbiAxNjggZm9yIHRoZSB3ZWVrJ1xyXG4gICAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJ3c0VtcEFtdEVhcm5lZFwiPlRvdGFsIEdyb3NzIEVhcm5pbmdzPC9sYWJlbD5cclxuICAgICAgICAgICAgPGFwcC1vdmVybGF5LWluZm8gW292ZXJsYXlUZXh0XT1cIid3ZWVrbGllcy52Mi5lbXBsb3ltZW50LnJ0dy5pbmZvLnBvcHVwLjEwMDAnIHwgdHJhbnNsYXRlIHwgdHJ1c3RIdG1sXCJcclxuICAgICAgICAgICAgICBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4OyBwYWRkaW5nLXRvcDozcHhcIj48L2FwcC1vdmVybGF5LWluZm8+XHJcbiAgICAgICAgICAgIDxwLWlucHV0TnVtYmVyIGlucHV0SWQ9XCJ3c0VtcEFtdEVhcm5lZFwiIG1vZGU9XCJjdXJyZW5jeVwiIGN1cnJlbmN5PVwiVVNEXCIgbG9jYWxlPVwiZW4tVVNcIlxyXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJ3c0VtcEFtdEVhcm5lZFwiIG1heGxlbmd0aD1cIjEwXCIgcGxhY2Vob2xkZXI9XCIkMC4wMFwiPjwvcC1pbnB1dE51bWJlcj5cclxuICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J3dzRW1wQW10RWFybmVkJyBbZm9ybV09XCJlbXBGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJywgZWFybmluZ3NOb3RaZXJvOiAnR3Jvc3MgRWFybmluZ3MgY2Fubm90IGJlIHplcm8uJ1xyXG4gICAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvaW9uLWNvbD5cclxuICAgIDwvaW9uLXJvdz5cclxuICAgIDxpb24tcm93PlxyXG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LXJpZ2h0XCI+XHJcbiAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIGZpbGw9XCJvdXRsaW5lXCIgKGNsaWNrKT1cImNsb3NlKClcIiB0eXBlPVwicmVzZXRcIj5DbGVhcjwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgKGNsaWNrKT1cImlzRWRpdE1vZGUgPyBzYXZlKCkgOiBhZGQoKVwiIHR5cGU9XCJzdWJtaXRcIj5cclxuICAgICAgICAgIHt7IGlzRWRpdE1vZGUgPyAnU2F2ZScgOiAnQWRkJyB9fVxyXG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgPC9pb24tY29sPlxyXG4gICAgPC9pb24tcm93PlxyXG4gIDwvaW9uLWdyaWQ+XHJcbjwvZm9ybT4iXX0=