awf-test-lib 0.0.86 → 0.0.89

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.
@@ -92,7 +92,7 @@ export class ContactComponent {
92
92
  phone: [phone !== 'null' ? phone : '', [Validators.required]],
93
93
  reason: ['', [Validators.required]],
94
94
  systems: [[], [Validators.required]],
95
- pms: [[], this.showPm ? [] : [Validators.required]],
95
+ pms: [[], this.showPm ? [] : []],
96
96
  message: ['', [Validators.required, Validators.minLength(15)]],
97
97
  });
98
98
  }
@@ -114,10 +114,10 @@ export class ContactComponent {
114
114
  }
115
115
  }
116
116
  ContactComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: ContactComponent, deps: [{ token: i1.FormBuilder }, { token: i2.MessageService }], target: i0.ɵɵFactoryTarget.Component });
117
- ContactComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.10", type: ContactComponent, selector: "awf-contact", inputs: { loading: "loading", submitted: "submitted", systems: "systems", selectedSystems: "selectedSystems", translate: "translate", reasons: "reasons" }, outputs: { sendForm: "sendForm" }, providers: [MessageService], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"translate && reasons \">\r\n <section class=\"pt-0\">\r\n <div class=\"app-section-header-img\">\r\n <div class=\"container pt-4\">\r\n <div class=\"\">\r\n <h2>{{translate.title}} </h2>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n <section class=\"py-5 background-light\">\r\n <div class=\"container px-lg-5\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-md-6\">\r\n <div class=\"container-contact100\">\r\n <div class=\"wrap-contact100\">\r\n <form [formGroup]=\"form\" *ngIf=\"form && systems && reasons\" class=\"contact100-form validate-form\">\r\n <span class=\"contact100-form-title\">{{translate.title}} </span>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderName}}</span> <span class=\"requis\">* </span>:\r\n <input [placeholder]=\"translate.placeholderName\" type=\"text\" pInputText formControlName=\"name\" [ngClass]=\"{ 'is-invalid': submitted && f.name.invalid }\">\r\n <div *ngIf=\"submitted && f.name.errors\">\r\n <div class=\"requis\" *ngIf=\"f.name.errors.required\">{{translate.requiredName}}</div>\r\n <div class=\"requis\" *ngIf=\"f.name.errors.minlength\">{{translate.requiredNameMin}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderEmail}}</span> <span class=\"requis\">*</span>:\r\n <input [placeholder]=\"translate.placeholderEmail\" type=\"text\" pInputText formControlName=\"email\" [ngClass]=\"{ 'is-invalid': submitted && f.email.invalid }\">\r\n <div *ngIf=\"submitted && f.email.errors\">\r\n <div class=\"requis\" *ngIf=\"f.email.errors.required\">{{translate.requiredEmail}}</div>\r\n <div class=\"requis\" *ngIf=\"f.email.errors.email\">{{translate.requiredEmailFormat}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderPhone}}</span> <span class=\"requis\">*</span>:\r\n <input [placeholder]=\"translate.placeholderPhone\" type=\"text\" pInputText formControlName=\"phone\" [ngClass]=\"{ 'is-invalid': submitted && f.phone.invalid }\" (keypress)=\"preventStringKeypress($event)\">\r\n <div *ngIf=\"submitted && f.phone.errors\">\r\n <div class=\"requis\" *ngIf=\"f.phone.errors.required\">{{translate.requiredPhone}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.RelatedSystems}}</span> <span class=\"requis\">*</span>:\r\n <p-dropdown (click)=\"selectPM(selectedSystem)\" [options]=\"systems\" [placeholder]=\"translate.selectSystem\" [(ngModel)]=\"selectedSystem\" [optionLabel]=\"'name'\" formControlName=\"systems\" optionDisabled=\"inactive\" [ngClass]=\"{ 'is-invalid': submitted && f.systems.invalid }\"></p-dropdown> \r\n <div class=\"requis\" *ngIf=\"!systemContainPm\">{{translate.noPmInSystems}}</div>\r\n <div *ngIf=\"submitted && f.systems.errors\">\r\n <div class=\"requis\" *ngIf=\"f.systems.errors.required\">{{translate.requiredSystem}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\" *ngIf=\"showPm\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.RelatedPMs}}</span> <span class=\"requis\">*</span>:\r\n <p-dropdown [options]=\"pmJobs\" [placeholder]=\"translate.selectPM\" [(ngModel)]=\"selectedPm\" [optionLabel]=\"'workorderNumber'\" formControlName=\"pms\" optionDisabled=\"inactive\" [ngClass]=\"{ 'is-invalid': submitted && f.pms.invalid }\"></p-dropdown> \r\n <div *ngIf=\"submitted && f.pms.errors\">\r\n <div class=\"requis\" *ngIf=\"f.pms.errors.required\">{{translate.requiredPM }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.reason}}</span> <span class=\"requis\">*</span>:\r\n <p-dropdown [options]=\"reasons\" [placeholder]=\"translate.selectReason\" [(ngModel)]=\"selectedReason\" optionLabel=\"name\" formControlName=\"reason\" optionDisabled=\"inactive\" [ngClass]=\"{ 'is-invalid': submitted && f.reason.invalid }\"></p-dropdown>\r\n <!-- <input [placeholder]=\"translate.reason\" type=\"text\" pInputText formControlName=\"reason\" [ngClass]=\"{ 'is-invalid': submitted && f.reason.invalid }\"> -->\r\n <div *ngIf=\"submitted && f.reason.errors\">\r\n <div class=\"requis\" *ngIf=\"f.reason.errors.required\">{{translate.reasonRequired}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderMessage}} </span> <span class=\"requis\">*</span>:\r\n <textarea pInputTextarea style=\" min-height:100px;height:100%;width:100%;\" [placeholder]=\"translate.placeholderMessage +'...'\" formControlName=\"message\" [ngClass]=\"{ 'is-invalid': submitted && f.message.errors }\"></textarea>\r\n <div *ngIf=\"submitted && f.message.errors\">\r\n <div class=\"requis\" *ngIf=\"f.message.errors.required\">{{translate.requiredMessage}}</div>\r\n <div class=\"requis\" *ngIf=\"f.message.errors.minlength\">{{translate.requiredMessageMin}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <br>\r\n <br>\r\n <div class=\"container-contact100-form-btn\">\r\n <div class=\"wrap-contact100-form-btn\">\r\n <div class=\"contact100-form-bgbtn\"></div>\r\n <button class=\"btn-warranty mt-3\" (click)=\"onSubmit()\" [disabled]=\"!systemContainPm\">\r\n {{translate.send}}\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6 contact\">\r\n <iframe src=\"https://maps.google.com/maps?q=283,%20Rue%20De%20la%20Miniere-BP34%20%2078533%20BUC%20%E2%80%93%20Cedex&amp;t=&amp;z=13&amp;ie=UTF8&amp;iwloc=&amp;output=embed\" width=\"100%\" height=\"250\" style=\"border:0;\" allowfullscreen=\"\" loading=\"lazy\"></iframe>\r\n <h6 class=\"fs-4 mt-3\"> {{translate.information}}</h6>\r\n <section class=\"mb-4\">\r\n <div class=\"\">\r\n <i class=\"pi pi-envelope\"></i><label> &nbsp; {{translate.emailText}}</label>\r\n <p class=\"\">{{translate.email}} </p>\r\n </div>\r\n <div class=\" mt-4\">\r\n <i class=\"pi pi-map\"></i><label> &nbsp; {{translate.addressText}}</label>\r\n <p class=\"\">{{translate.adress}}</p>\r\n <p class=\"\">{{translate.town}}</p>\r\n <p class=\"\">{{translate.country}}</p>\r\n </div>\r\n </section>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </section>\r\n</div>\r\n\r\n<p-toast position=\"top-center\"></p-toast>\r\n", styles: ["h1,h2,h3,h4,h5,h6,p,span,label,::placeholder{font-family:var(--font)}.app-section-header-img{background-image:url(/assets/img/GEPortal/contact.png);background-repeat:no-repeat;background-size:cover;background-position:center center;display:flex;align-items:center;height:237px}@media (max-width: var(--smallscreen)){.app-section-header-img{height:auto}}.app-section-header-img h2{font-size:48px;font-family:var(--font);font-weight:600;color:#fff;text-align:center}@media (max-width: var(--smallscreen)){.app-section-header-img h2{font-size:30px}}@media (max-width: var(--smallscreen)){.app-section-header-img{padding-left:15px;padding-right:15px}}@media (max-width: var(--tinyscreen)){.app-section-header-img{height:200px}}h2{font-weight:600}a:focus{outline:none!important}a:hover{text-decoration:none}input{outline:none;border:none}input.input100{height:62px;padding:0 20px 0 58px}input[type=number]{appearance:none;-webkit-appearance:none}input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none}textarea{outline:none;border:none}textarea.input100{min-height:199px;padding:19px 20px 0 23px}textarea:focus,input:focus{border-color:transparent!important}.container-contact100{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;padding:15px}.wrap-contact100{width:550px;background:transparent;padding:30px 0 80px}.contact100-form-title{display:block;font-family:var(--font);font-size:30px;color:#43383e;line-height:1.2;text-align:left;padding-bottom:35px}.wrap-input100{width:100%;position:relative;background-color:#fff;margin-bottom:17px}.label-input100{display:flex;justify-content:center;align-items:center;width:58px;height:62px;position:absolute;top:0;left:0;cursor:pointer;font-size:18px;color:#999}.input100{display:block;width:100%;background:transparent;font-size:15px;color:#43383e;line-height:1.2;padding:0 5px}@media (max-width: var(--smallscreen)){.contact iframe{width:auto}}.contact label{margin-left:10px;color:#a2a2a2;font-weight:700}.contact i{color:#a2a2a2;font-weight:700}.contact .social li{display:inline;padding:10px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.InputText, selector: "[pInputText]" }, { kind: "component", type: i5.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "directive", type: i6.InputTextarea, selector: "[pInputTextarea]", inputs: ["autoResize"], outputs: ["onResize"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i7.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "overlayDirection", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }] });
117
+ ContactComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.10", type: ContactComponent, selector: "awf-contact", inputs: { loading: "loading", submitted: "submitted", systems: "systems", selectedSystems: "selectedSystems", translate: "translate", reasons: "reasons" }, outputs: { sendForm: "sendForm" }, providers: [MessageService], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"translate && reasons \">\r\n <section class=\"pt-0\">\r\n <div class=\"app-section-header-img\">\r\n <div class=\"container pt-4\">\r\n <div class=\"\">\r\n <h2>{{translate.title}} </h2>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n <section class=\"py-5 background-light\">\r\n <div class=\"container px-lg-5\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-md-6\">\r\n <div class=\"container-contact100\">\r\n <div class=\"wrap-contact100\">\r\n <form [formGroup]=\"form\" *ngIf=\"form && systems && reasons\" class=\"contact100-form validate-form\">\r\n <span class=\"contact100-form-title\">{{translate.title}} </span>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderName}}</span> <span class=\"requis\">* </span>:\r\n <input [placeholder]=\"translate.placeholderName\" type=\"text\" pInputText formControlName=\"name\" [ngClass]=\"{ 'is-invalid': submitted && f.name.invalid }\">\r\n <div *ngIf=\"submitted && f.name.errors\">\r\n <div class=\"requis\" *ngIf=\"f.name.errors.required\">{{translate.requiredName}}</div>\r\n <div class=\"requis\" *ngIf=\"f.name.errors.minlength\">{{translate.requiredNameMin}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderEmail}}</span> <span class=\"requis\">*</span>:\r\n <input [placeholder]=\"translate.placeholderEmail\" type=\"text\" pInputText formControlName=\"email\" [ngClass]=\"{ 'is-invalid': submitted && f.email.invalid }\">\r\n <div *ngIf=\"submitted && f.email.errors\">\r\n <div class=\"requis\" *ngIf=\"f.email.errors.required\">{{translate.requiredEmail}}</div>\r\n <div class=\"requis\" *ngIf=\"f.email.errors.email\">{{translate.requiredEmailFormat}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderPhone}}</span> <span class=\"requis\">*</span>:\r\n <input [placeholder]=\"translate.placeholderPhone\" type=\"text\" pInputText formControlName=\"phone\" [ngClass]=\"{ 'is-invalid': submitted && f.phone.invalid }\" (keypress)=\"preventStringKeypress($event)\">\r\n <div *ngIf=\"submitted && f.phone.errors\">\r\n <div class=\"requis\" *ngIf=\"f.phone.errors.required\">{{translate.requiredPhone}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.RelatedSystems}}</span> <span class=\"requis\">*</span>:\r\n <p-dropdown (click)=\"selectPM(selectedSystem)\" [options]=\"systems\" [placeholder]=\"translate.selectSystem\" [(ngModel)]=\"selectedSystem\" [optionLabel]=\"'name'\" formControlName=\"systems\" optionDisabled=\"inactive\" [ngClass]=\"{ 'is-invalid': submitted && f.systems.invalid }\"></p-dropdown> \r\n <div class=\"requis\" *ngIf=\"!systemContainPm\">{{translate.noPmInSystems}}</div>\r\n <div *ngIf=\"submitted && f.systems.errors\">\r\n <div class=\"requis\" *ngIf=\"f.systems.errors.required\">{{translate.requiredSystem}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\" *ngIf=\"showPm\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.RelatedPMs}}</span>:\r\n <p-dropdown [options]=\"pmJobs\" [placeholder]=\"translate.selectPM\" [(ngModel)]=\"selectedPm\" [optionLabel]=\"'workorderNumber'\" formControlName=\"pms\" optionDisabled=\"inactive\" [ngClass]=\"{ 'is-invalid': submitted && f.pms.invalid }\"></p-dropdown> \r\n <!-- <div *ngIf=\"submitted && f.pms.errors\">\r\n <div class=\"requis\" *ngIf=\"f.pms.errors.required\">{{translate.requiredPM }}</div>\r\n </div>-->\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.reason}}</span> <span class=\"requis\">*</span>:\r\n <p-dropdown [options]=\"reasons\" [placeholder]=\"translate.selectReason\" [(ngModel)]=\"selectedReason\" optionLabel=\"name\" formControlName=\"reason\" optionDisabled=\"inactive\" [ngClass]=\"{ 'is-invalid': submitted && f.reason.invalid }\"></p-dropdown>\r\n <!-- <input [placeholder]=\"translate.reason\" type=\"text\" pInputText formControlName=\"reason\" [ngClass]=\"{ 'is-invalid': submitted && f.reason.invalid }\"> -->\r\n <div *ngIf=\"submitted && f.reason.errors\">\r\n <div class=\"requis\" *ngIf=\"f.reason.errors.required\">{{translate.reasonRequired}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderMessage}} </span> <span class=\"requis\">*</span>:\r\n <textarea pInputTextarea style=\" min-height:100px;height:100%;width:100%;\" [placeholder]=\"translate.placeholderMessage +'...'\" formControlName=\"message\" [ngClass]=\"{ 'is-invalid': submitted && f.message.errors }\"></textarea>\r\n <div *ngIf=\"submitted && f.message.errors\">\r\n <div class=\"requis\" *ngIf=\"f.message.errors.required\">{{translate.requiredMessage}}</div>\r\n <div class=\"requis\" *ngIf=\"f.message.errors.minlength\">{{translate.requiredMessageMin}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <br>\r\n <br>\r\n <div class=\"container-contact100-form-btn\">\r\n <div class=\"wrap-contact100-form-btn\">\r\n <div class=\"contact100-form-bgbtn\"></div>\r\n <button class=\"btn-warranty mt-3\" (click)=\"onSubmit()\" [disabled]=\"!systemContainPm\">\r\n {{translate.send}}\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6 contact\">\r\n <iframe src=\"https://maps.google.com/maps?q=283,%20Rue%20De%20la%20Miniere-BP34%20%2078533%20BUC%20%E2%80%93%20Cedex&amp;t=&amp;z=13&amp;ie=UTF8&amp;iwloc=&amp;output=embed\" width=\"100%\" height=\"250\" style=\"border:0;\" allowfullscreen=\"\" loading=\"lazy\"></iframe>\r\n <h6 class=\"fs-4 mt-3\"> {{translate.information}}</h6>\r\n <section class=\"mb-4\">\r\n <div class=\"\">\r\n <i class=\"pi pi-envelope\"></i><label> &nbsp; {{translate.emailText}}</label>\r\n <p class=\"\">{{translate.email}} </p>\r\n </div>\r\n <div class=\" mt-4\">\r\n <i class=\"pi pi-map\"></i><label> &nbsp; {{translate.addressText}}</label>\r\n <p class=\"\">{{translate.adress}}</p>\r\n <p class=\"\">{{translate.town}}</p>\r\n <p class=\"\">{{translate.country}}</p>\r\n </div>\r\n </section>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </section>\r\n</div>\r\n\r\n<p-toast position=\"top-center\"></p-toast>\r\n", styles: ["h1,h2,h3,h4,h5,h6,p,span,label,::placeholder{font-family:var(--font)}.app-section-header-img{background-image:url(/assets/img/GEPortal/contact.png);background-repeat:no-repeat;background-size:cover;background-position:center center;display:flex;align-items:center;height:237px}@media (max-width: var(--smallscreen)){.app-section-header-img{height:auto}}.app-section-header-img h2{font-size:48px;font-family:var(--font);font-weight:600;color:#fff;text-align:center}@media (max-width: var(--smallscreen)){.app-section-header-img h2{font-size:30px}}@media (max-width: var(--smallscreen)){.app-section-header-img{padding-left:15px;padding-right:15px}}@media (max-width: var(--tinyscreen)){.app-section-header-img{height:200px}}h2{font-weight:600}a:focus{outline:none!important}a:hover{text-decoration:none}input{outline:none;border:none}input.input100{height:62px;padding:0 20px 0 58px}input[type=number]{appearance:none;-webkit-appearance:none}input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none}textarea{outline:none;border:none}textarea.input100{min-height:199px;padding:19px 20px 0 23px}textarea:focus,input:focus{border-color:transparent!important}.container-contact100{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;padding:15px}.wrap-contact100{width:550px;background:transparent;padding:30px 0 80px}.contact100-form-title{display:block;font-family:var(--font);font-size:30px;color:#43383e;line-height:1.2;text-align:left;padding-bottom:35px}.wrap-input100{width:100%;position:relative;background-color:#fff;margin-bottom:17px}.label-input100{display:flex;justify-content:center;align-items:center;width:58px;height:62px;position:absolute;top:0;left:0;cursor:pointer;font-size:18px;color:#999}.input100{display:block;width:100%;background:transparent;font-size:15px;color:#43383e;line-height:1.2;padding:0 5px}@media (max-width: var(--smallscreen)){.contact iframe{width:auto}}.contact label{margin-left:10px;color:#a2a2a2;font-weight:700}.contact i{color:#a2a2a2;font-weight:700}.contact .social li{display:inline;padding:10px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.InputText, selector: "[pInputText]" }, { kind: "component", type: i5.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "directive", type: i6.InputTextarea, selector: "[pInputTextarea]", inputs: ["autoResize"], outputs: ["onResize"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i7.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "overlayDirection", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }] });
118
118
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: ContactComponent, decorators: [{
119
119
  type: Component,
120
- args: [{ selector: 'awf-contact', providers: [MessageService], template: "<div *ngIf=\"translate && reasons \">\r\n <section class=\"pt-0\">\r\n <div class=\"app-section-header-img\">\r\n <div class=\"container pt-4\">\r\n <div class=\"\">\r\n <h2>{{translate.title}} </h2>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n <section class=\"py-5 background-light\">\r\n <div class=\"container px-lg-5\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-md-6\">\r\n <div class=\"container-contact100\">\r\n <div class=\"wrap-contact100\">\r\n <form [formGroup]=\"form\" *ngIf=\"form && systems && reasons\" class=\"contact100-form validate-form\">\r\n <span class=\"contact100-form-title\">{{translate.title}} </span>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderName}}</span> <span class=\"requis\">* </span>:\r\n <input [placeholder]=\"translate.placeholderName\" type=\"text\" pInputText formControlName=\"name\" [ngClass]=\"{ 'is-invalid': submitted && f.name.invalid }\">\r\n <div *ngIf=\"submitted && f.name.errors\">\r\n <div class=\"requis\" *ngIf=\"f.name.errors.required\">{{translate.requiredName}}</div>\r\n <div class=\"requis\" *ngIf=\"f.name.errors.minlength\">{{translate.requiredNameMin}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderEmail}}</span> <span class=\"requis\">*</span>:\r\n <input [placeholder]=\"translate.placeholderEmail\" type=\"text\" pInputText formControlName=\"email\" [ngClass]=\"{ 'is-invalid': submitted && f.email.invalid }\">\r\n <div *ngIf=\"submitted && f.email.errors\">\r\n <div class=\"requis\" *ngIf=\"f.email.errors.required\">{{translate.requiredEmail}}</div>\r\n <div class=\"requis\" *ngIf=\"f.email.errors.email\">{{translate.requiredEmailFormat}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderPhone}}</span> <span class=\"requis\">*</span>:\r\n <input [placeholder]=\"translate.placeholderPhone\" type=\"text\" pInputText formControlName=\"phone\" [ngClass]=\"{ 'is-invalid': submitted && f.phone.invalid }\" (keypress)=\"preventStringKeypress($event)\">\r\n <div *ngIf=\"submitted && f.phone.errors\">\r\n <div class=\"requis\" *ngIf=\"f.phone.errors.required\">{{translate.requiredPhone}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.RelatedSystems}}</span> <span class=\"requis\">*</span>:\r\n <p-dropdown (click)=\"selectPM(selectedSystem)\" [options]=\"systems\" [placeholder]=\"translate.selectSystem\" [(ngModel)]=\"selectedSystem\" [optionLabel]=\"'name'\" formControlName=\"systems\" optionDisabled=\"inactive\" [ngClass]=\"{ 'is-invalid': submitted && f.systems.invalid }\"></p-dropdown> \r\n <div class=\"requis\" *ngIf=\"!systemContainPm\">{{translate.noPmInSystems}}</div>\r\n <div *ngIf=\"submitted && f.systems.errors\">\r\n <div class=\"requis\" *ngIf=\"f.systems.errors.required\">{{translate.requiredSystem}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\" *ngIf=\"showPm\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.RelatedPMs}}</span> <span class=\"requis\">*</span>:\r\n <p-dropdown [options]=\"pmJobs\" [placeholder]=\"translate.selectPM\" [(ngModel)]=\"selectedPm\" [optionLabel]=\"'workorderNumber'\" formControlName=\"pms\" optionDisabled=\"inactive\" [ngClass]=\"{ 'is-invalid': submitted && f.pms.invalid }\"></p-dropdown> \r\n <div *ngIf=\"submitted && f.pms.errors\">\r\n <div class=\"requis\" *ngIf=\"f.pms.errors.required\">{{translate.requiredPM }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.reason}}</span> <span class=\"requis\">*</span>:\r\n <p-dropdown [options]=\"reasons\" [placeholder]=\"translate.selectReason\" [(ngModel)]=\"selectedReason\" optionLabel=\"name\" formControlName=\"reason\" optionDisabled=\"inactive\" [ngClass]=\"{ 'is-invalid': submitted && f.reason.invalid }\"></p-dropdown>\r\n <!-- <input [placeholder]=\"translate.reason\" type=\"text\" pInputText formControlName=\"reason\" [ngClass]=\"{ 'is-invalid': submitted && f.reason.invalid }\"> -->\r\n <div *ngIf=\"submitted && f.reason.errors\">\r\n <div class=\"requis\" *ngIf=\"f.reason.errors.required\">{{translate.reasonRequired}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderMessage}} </span> <span class=\"requis\">*</span>:\r\n <textarea pInputTextarea style=\" min-height:100px;height:100%;width:100%;\" [placeholder]=\"translate.placeholderMessage +'...'\" formControlName=\"message\" [ngClass]=\"{ 'is-invalid': submitted && f.message.errors }\"></textarea>\r\n <div *ngIf=\"submitted && f.message.errors\">\r\n <div class=\"requis\" *ngIf=\"f.message.errors.required\">{{translate.requiredMessage}}</div>\r\n <div class=\"requis\" *ngIf=\"f.message.errors.minlength\">{{translate.requiredMessageMin}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <br>\r\n <br>\r\n <div class=\"container-contact100-form-btn\">\r\n <div class=\"wrap-contact100-form-btn\">\r\n <div class=\"contact100-form-bgbtn\"></div>\r\n <button class=\"btn-warranty mt-3\" (click)=\"onSubmit()\" [disabled]=\"!systemContainPm\">\r\n {{translate.send}}\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6 contact\">\r\n <iframe src=\"https://maps.google.com/maps?q=283,%20Rue%20De%20la%20Miniere-BP34%20%2078533%20BUC%20%E2%80%93%20Cedex&amp;t=&amp;z=13&amp;ie=UTF8&amp;iwloc=&amp;output=embed\" width=\"100%\" height=\"250\" style=\"border:0;\" allowfullscreen=\"\" loading=\"lazy\"></iframe>\r\n <h6 class=\"fs-4 mt-3\"> {{translate.information}}</h6>\r\n <section class=\"mb-4\">\r\n <div class=\"\">\r\n <i class=\"pi pi-envelope\"></i><label> &nbsp; {{translate.emailText}}</label>\r\n <p class=\"\">{{translate.email}} </p>\r\n </div>\r\n <div class=\" mt-4\">\r\n <i class=\"pi pi-map\"></i><label> &nbsp; {{translate.addressText}}</label>\r\n <p class=\"\">{{translate.adress}}</p>\r\n <p class=\"\">{{translate.town}}</p>\r\n <p class=\"\">{{translate.country}}</p>\r\n </div>\r\n </section>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </section>\r\n</div>\r\n\r\n<p-toast position=\"top-center\"></p-toast>\r\n", styles: ["h1,h2,h3,h4,h5,h6,p,span,label,::placeholder{font-family:var(--font)}.app-section-header-img{background-image:url(/assets/img/GEPortal/contact.png);background-repeat:no-repeat;background-size:cover;background-position:center center;display:flex;align-items:center;height:237px}@media (max-width: var(--smallscreen)){.app-section-header-img{height:auto}}.app-section-header-img h2{font-size:48px;font-family:var(--font);font-weight:600;color:#fff;text-align:center}@media (max-width: var(--smallscreen)){.app-section-header-img h2{font-size:30px}}@media (max-width: var(--smallscreen)){.app-section-header-img{padding-left:15px;padding-right:15px}}@media (max-width: var(--tinyscreen)){.app-section-header-img{height:200px}}h2{font-weight:600}a:focus{outline:none!important}a:hover{text-decoration:none}input{outline:none;border:none}input.input100{height:62px;padding:0 20px 0 58px}input[type=number]{appearance:none;-webkit-appearance:none}input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none}textarea{outline:none;border:none}textarea.input100{min-height:199px;padding:19px 20px 0 23px}textarea:focus,input:focus{border-color:transparent!important}.container-contact100{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;padding:15px}.wrap-contact100{width:550px;background:transparent;padding:30px 0 80px}.contact100-form-title{display:block;font-family:var(--font);font-size:30px;color:#43383e;line-height:1.2;text-align:left;padding-bottom:35px}.wrap-input100{width:100%;position:relative;background-color:#fff;margin-bottom:17px}.label-input100{display:flex;justify-content:center;align-items:center;width:58px;height:62px;position:absolute;top:0;left:0;cursor:pointer;font-size:18px;color:#999}.input100{display:block;width:100%;background:transparent;font-size:15px;color:#43383e;line-height:1.2;padding:0 5px}@media (max-width: var(--smallscreen)){.contact iframe{width:auto}}.contact label{margin-left:10px;color:#a2a2a2;font-weight:700}.contact i{color:#a2a2a2;font-weight:700}.contact .social li{display:inline;padding:10px}\n"] }]
120
+ args: [{ selector: 'awf-contact', providers: [MessageService], template: "<div *ngIf=\"translate && reasons \">\r\n <section class=\"pt-0\">\r\n <div class=\"app-section-header-img\">\r\n <div class=\"container pt-4\">\r\n <div class=\"\">\r\n <h2>{{translate.title}} </h2>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n <section class=\"py-5 background-light\">\r\n <div class=\"container px-lg-5\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-md-6\">\r\n <div class=\"container-contact100\">\r\n <div class=\"wrap-contact100\">\r\n <form [formGroup]=\"form\" *ngIf=\"form && systems && reasons\" class=\"contact100-form validate-form\">\r\n <span class=\"contact100-form-title\">{{translate.title}} </span>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderName}}</span> <span class=\"requis\">* </span>:\r\n <input [placeholder]=\"translate.placeholderName\" type=\"text\" pInputText formControlName=\"name\" [ngClass]=\"{ 'is-invalid': submitted && f.name.invalid }\">\r\n <div *ngIf=\"submitted && f.name.errors\">\r\n <div class=\"requis\" *ngIf=\"f.name.errors.required\">{{translate.requiredName}}</div>\r\n <div class=\"requis\" *ngIf=\"f.name.errors.minlength\">{{translate.requiredNameMin}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderEmail}}</span> <span class=\"requis\">*</span>:\r\n <input [placeholder]=\"translate.placeholderEmail\" type=\"text\" pInputText formControlName=\"email\" [ngClass]=\"{ 'is-invalid': submitted && f.email.invalid }\">\r\n <div *ngIf=\"submitted && f.email.errors\">\r\n <div class=\"requis\" *ngIf=\"f.email.errors.required\">{{translate.requiredEmail}}</div>\r\n <div class=\"requis\" *ngIf=\"f.email.errors.email\">{{translate.requiredEmailFormat}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderPhone}}</span> <span class=\"requis\">*</span>:\r\n <input [placeholder]=\"translate.placeholderPhone\" type=\"text\" pInputText formControlName=\"phone\" [ngClass]=\"{ 'is-invalid': submitted && f.phone.invalid }\" (keypress)=\"preventStringKeypress($event)\">\r\n <div *ngIf=\"submitted && f.phone.errors\">\r\n <div class=\"requis\" *ngIf=\"f.phone.errors.required\">{{translate.requiredPhone}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.RelatedSystems}}</span> <span class=\"requis\">*</span>:\r\n <p-dropdown (click)=\"selectPM(selectedSystem)\" [options]=\"systems\" [placeholder]=\"translate.selectSystem\" [(ngModel)]=\"selectedSystem\" [optionLabel]=\"'name'\" formControlName=\"systems\" optionDisabled=\"inactive\" [ngClass]=\"{ 'is-invalid': submitted && f.systems.invalid }\"></p-dropdown> \r\n <div class=\"requis\" *ngIf=\"!systemContainPm\">{{translate.noPmInSystems}}</div>\r\n <div *ngIf=\"submitted && f.systems.errors\">\r\n <div class=\"requis\" *ngIf=\"f.systems.errors.required\">{{translate.requiredSystem}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\" *ngIf=\"showPm\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.RelatedPMs}}</span>:\r\n <p-dropdown [options]=\"pmJobs\" [placeholder]=\"translate.selectPM\" [(ngModel)]=\"selectedPm\" [optionLabel]=\"'workorderNumber'\" formControlName=\"pms\" optionDisabled=\"inactive\" [ngClass]=\"{ 'is-invalid': submitted && f.pms.invalid }\"></p-dropdown> \r\n <!-- <div *ngIf=\"submitted && f.pms.errors\">\r\n <div class=\"requis\" *ngIf=\"f.pms.errors.required\">{{translate.requiredPM }}</div>\r\n </div>-->\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.reason}}</span> <span class=\"requis\">*</span>:\r\n <p-dropdown [options]=\"reasons\" [placeholder]=\"translate.selectReason\" [(ngModel)]=\"selectedReason\" optionLabel=\"name\" formControlName=\"reason\" optionDisabled=\"inactive\" [ngClass]=\"{ 'is-invalid': submitted && f.reason.invalid }\"></p-dropdown>\r\n <!-- <input [placeholder]=\"translate.reason\" type=\"text\" pInputText formControlName=\"reason\" [ngClass]=\"{ 'is-invalid': submitted && f.reason.invalid }\"> -->\r\n <div *ngIf=\"submitted && f.reason.errors\">\r\n <div class=\"requis\" *ngIf=\"f.reason.errors.required\">{{translate.reasonRequired}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderMessage}} </span> <span class=\"requis\">*</span>:\r\n <textarea pInputTextarea style=\" min-height:100px;height:100%;width:100%;\" [placeholder]=\"translate.placeholderMessage +'...'\" formControlName=\"message\" [ngClass]=\"{ 'is-invalid': submitted && f.message.errors }\"></textarea>\r\n <div *ngIf=\"submitted && f.message.errors\">\r\n <div class=\"requis\" *ngIf=\"f.message.errors.required\">{{translate.requiredMessage}}</div>\r\n <div class=\"requis\" *ngIf=\"f.message.errors.minlength\">{{translate.requiredMessageMin}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <br>\r\n <br>\r\n <div class=\"container-contact100-form-btn\">\r\n <div class=\"wrap-contact100-form-btn\">\r\n <div class=\"contact100-form-bgbtn\"></div>\r\n <button class=\"btn-warranty mt-3\" (click)=\"onSubmit()\" [disabled]=\"!systemContainPm\">\r\n {{translate.send}}\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6 contact\">\r\n <iframe src=\"https://maps.google.com/maps?q=283,%20Rue%20De%20la%20Miniere-BP34%20%2078533%20BUC%20%E2%80%93%20Cedex&amp;t=&amp;z=13&amp;ie=UTF8&amp;iwloc=&amp;output=embed\" width=\"100%\" height=\"250\" style=\"border:0;\" allowfullscreen=\"\" loading=\"lazy\"></iframe>\r\n <h6 class=\"fs-4 mt-3\"> {{translate.information}}</h6>\r\n <section class=\"mb-4\">\r\n <div class=\"\">\r\n <i class=\"pi pi-envelope\"></i><label> &nbsp; {{translate.emailText}}</label>\r\n <p class=\"\">{{translate.email}} </p>\r\n </div>\r\n <div class=\" mt-4\">\r\n <i class=\"pi pi-map\"></i><label> &nbsp; {{translate.addressText}}</label>\r\n <p class=\"\">{{translate.adress}}</p>\r\n <p class=\"\">{{translate.town}}</p>\r\n <p class=\"\">{{translate.country}}</p>\r\n </div>\r\n </section>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </section>\r\n</div>\r\n\r\n<p-toast position=\"top-center\"></p-toast>\r\n", styles: ["h1,h2,h3,h4,h5,h6,p,span,label,::placeholder{font-family:var(--font)}.app-section-header-img{background-image:url(/assets/img/GEPortal/contact.png);background-repeat:no-repeat;background-size:cover;background-position:center center;display:flex;align-items:center;height:237px}@media (max-width: var(--smallscreen)){.app-section-header-img{height:auto}}.app-section-header-img h2{font-size:48px;font-family:var(--font);font-weight:600;color:#fff;text-align:center}@media (max-width: var(--smallscreen)){.app-section-header-img h2{font-size:30px}}@media (max-width: var(--smallscreen)){.app-section-header-img{padding-left:15px;padding-right:15px}}@media (max-width: var(--tinyscreen)){.app-section-header-img{height:200px}}h2{font-weight:600}a:focus{outline:none!important}a:hover{text-decoration:none}input{outline:none;border:none}input.input100{height:62px;padding:0 20px 0 58px}input[type=number]{appearance:none;-webkit-appearance:none}input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none}textarea{outline:none;border:none}textarea.input100{min-height:199px;padding:19px 20px 0 23px}textarea:focus,input:focus{border-color:transparent!important}.container-contact100{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;padding:15px}.wrap-contact100{width:550px;background:transparent;padding:30px 0 80px}.contact100-form-title{display:block;font-family:var(--font);font-size:30px;color:#43383e;line-height:1.2;text-align:left;padding-bottom:35px}.wrap-input100{width:100%;position:relative;background-color:#fff;margin-bottom:17px}.label-input100{display:flex;justify-content:center;align-items:center;width:58px;height:62px;position:absolute;top:0;left:0;cursor:pointer;font-size:18px;color:#999}.input100{display:block;width:100%;background:transparent;font-size:15px;color:#43383e;line-height:1.2;padding:0 5px}@media (max-width: var(--smallscreen)){.contact iframe{width:auto}}.contact label{margin-left:10px;color:#a2a2a2;font-weight:700}.contact i{color:#a2a2a2;font-weight:700}.contact .social li{display:inline;padding:10px}\n"] }]
121
121
  }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.MessageService }]; }, propDecorators: { loading: [{
122
122
  type: Input
123
123
  }], submitted: [{
@@ -133,4 +133,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImpo
133
133
  }], sendForm: [{
134
134
  type: Output
135
135
  }] } });
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hd2YtdGVzdC1saWIvc3JjL2xpYi9zaGFyZWQvY29udGFjdC9jb250YWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F3Zi10ZXN0LWxpYi9zcmMvbGliL3NoYXJlZC9jb250YWN0L2NvbnRhY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQWEsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7OztBQVEzRCxNQUFNLE9BQU8sZ0JBQWdCO0lBaUIzQixZQUNZLFdBQXdCLEVBQ3hCLGNBQThCO1FBRDlCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQWpCakMsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLFlBQU8sR0FBYSxFQUFFLENBQUM7UUFDdkIsb0JBQWUsR0FBYSxFQUFFLENBQUM7UUFHOUIsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBTTNELG9CQUFlLEdBQUcsSUFBSSxDQUFFO1FBRXhCLFdBQU0sR0FBRyxLQUFLLENBQUU7SUFJYixDQUFDO0lBRUosV0FBVztRQUNULElBQUksQ0FBQyxP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QU0sR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDO2dCQUNwQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBRTthQUVyQjtTQUlGO0lBQ0gsQ0FBQzs7OEdBdklVLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLHFPQUZoQixDQUFDLGNBQWMsQ0FBQywrQ0NmN0IsKy9UQTJIQTs0RkQxR2EsZ0JBQWdCO2tCQU41QixTQUFTOytCQUNFLGFBQWEsYUFHWixDQUFDLGNBQWMsQ0FBQzsrSEFJbEIsT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT3V0cHV0LCBPbkNoYW5nZXMsIElucHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IERldGFpbGVkUG1Kb2IgfSBmcm9tICcuLi8uLi9tb2RlbHMvZGV0YWlsZWRQbUpvYi5tb2RlbCc7XHJcbmltcG9ydCB7IEV2ZW50U3RhdHVzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2V2ZW50U3RhdHVzJztcclxuaW1wb3J0IHsgUG1Kb2IgfSBmcm9tICcuLi8uLi9tb2RlbHMvcG1Kb2IubW9kZWwnO1xyXG5pbXBvcnQgeyBQbUpvYlN0YXR1cyB9IGZyb20gJy4uLy4uL21vZGVscy9wbUpvYlN0YXR1cyc7XHJcbmltcG9ydCB7IFJlYXNvbiB9IGZyb20gJy4uLy4uL21vZGVscy9yZWFzb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBSZWFzb25Db2RlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3JlYXNvbkNvZGUnO1xyXG5pbXBvcnQgeyBSZWFzb25Db250YWN0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3JlYXNvbkNvbnRhY3QnO1xyXG5pbXBvcnQgeyBTeXN0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvc3lzdGVtJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhd2YtY29udGFjdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbnRhY3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvbnRhY3QuY29tcG9uZW50LmNzcyddLFxyXG4gIHByb3ZpZGVyczogW01lc3NhZ2VTZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbnRhY3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG5cclxuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc3lzdGVtczogU3lzdGVtW10gPSBbXTtcclxuICBASW5wdXQoKSBzZWxlY3RlZFN5c3RlbXM6IFN5c3RlbVtdID0gW107XHJcbiAgQElucHV0KCkgdHJhbnNsYXRlITphbnk7XHJcbiAgQElucHV0KCkgcmVhc29ucyE6IFJlYXNvbltdO1xyXG4gIEBPdXRwdXQoKSBzZW5kRm9ybTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgZm9ybSE6IEZvcm1Hcm91cDtcclxuICBzZWxlY3RlZFJlYXNvbiE6IGFueTtcclxuICBzZWxlY3RlZFN5c3RlbSE6IFN5c3RlbTtcclxuICBzZWxlY3RlZFBtITogYW55O1xyXG4gIHBtSm9icyE6UG1Kb2JbXTtcclxuICBzeXN0ZW1Db250YWluUG0gPSB0cnVlIDtcclxuXHJcbiAgc2hvd1BtID0gZmFsc2UgO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcclxuICAgICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgIHRoaXMucmVhc29ucyA9IHRoaXMucmVhc29ucy5maWx0ZXIoeD0+ICh4LmNvZGU9PSBSZWFzb25Db2RlLlNESXx8IHguY29kZT09IFJlYXNvbkNvZGUuT1RIICkpO1xyXG4gICAgICB0aGlzLmxvYWRGb3JtKCk7XHJcbiAgfVxyXG5cclxuICAvLyBjb252ZW5pZW5jZSBnZXR0ZXIgZm9yIGVhc3kgYWNjZXNzIHRvIGZvcm0gZmllbGRzXHJcbiAgZ2V0IGYoKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHM7XHJcbiAgfVxyXG5cclxuICBwcmV2ZW50U3RyaW5nS2V5cHJlc3MoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgICBpc05hTihOdW1iZXIoU3RyaW5nLmZyb21DaGFyQ29kZShldmVudC5jaGFyQ29kZSkpKSB8fFxyXG4gICAgU3RyaW5nLmZyb21DaGFyQ29kZShldmVudC5jaGFyQ29kZSkgPT09ICcgJ1xyXG4gICAgICApIHtcclxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG4gIG9uU3VibWl0KCkge1xyXG4gICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xyXG5cclxuICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXHJcbiAgICAgICAgICAgIHN1bW1hcnk6ICdFcnJvcicsXHJcbiAgICAgICAgICAgIGRldGFpbDogJ1RoZSBmb3JtIGlzIGludmFsaWQnLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLmZvcm0udmFsdWUucG1zKVxyXG4gICAgbGV0IGRldGFpbGVkUG1Kb2IgPSB7IH0gYXMgRGV0YWlsZWRQbUpvYiA7XHJcbiAgICBkZXRhaWxlZFBtSm9iLm5hbWUgPSB0aGlzLmZvcm0udmFsdWUubmFtZTtcclxuICAgIGRldGFpbGVkUG1Kb2IucGhvbmUgPSB0aGlzLmZvcm0udmFsdWUucGhvbmU7XHJcbiAgICBkZXRhaWxlZFBtSm9iLmVtYWlsID0gdGhpcy5mb3JtLnZhbHVlLmVtYWlsO1xyXG4gICAgZGV0YWlsZWRQbUpvYi5yZWFzb24gPSB0aGlzLmZvcm0udmFsdWUucmVhc29uLm5hbWU7XHJcbiAgICBkZXRhaWxlZFBtSm9iLmNvbW1lbnQgPSB0aGlzLmZvcm0udmFsdWUubWVzc2FnZTtcclxuICAgIGlmKCB0aGlzLmZvcm0udmFsdWUucG1zICE9PSB1bmRlZmluZWQpe1xyXG4gICAgICBkZXRhaWxlZFBtSm9iLnBtSm9iID0gdGhpcy5mb3JtLnZhbHVlLnBtcztcclxuICAgIH1cclxuICAgIGRldGFpbGVkUG1Kb2Iuc3lzdGVtTmFtZSA9IHRoaXMuc2VsZWN0ZWRTeXN0ZW0ubmFtZSA7XHJcbiAgICBkZXRhaWxlZFBtSm9iLnN5c3RlbUlkID0gdGhpcy5zZWxlY3RlZFN5c3RlbS5zeXN0ZW1JZCA7XHJcbiAgICBkZXRhaWxlZFBtSm9iLnNpdGVOYW1lID0gdGhpcy5zZWxlY3RlZFN5c3RlbS5zaXRlTmFtZSA7XHJcbiAgICBkZXRhaWxlZFBtSm9iLnNpdGVDaXR5ID0gdGhpcy5zZWxlY3RlZFN5c3RlbS5zaXRlQ2l0eSA7XHJcbiAgICBkZXRhaWxlZFBtSm9iLnNpdGVQb3N0YWxDb2RlID10aGlzLnNlbGVjdGVkU3lzdGVtLnNpdGVQb3N0YWxDb2RlXHJcbiAgICBkZXRhaWxlZFBtSm9iLnRvVXBkYXRlID0gdHJ1ZSA7XHJcbiAgICBpZiggdGhpcy5mb3JtLnZhbHVlLnBtcyAhPT0gdW5kZWZpbmVkKVxyXG4gICAge1xyXG4gIGRldGFpbGVkUG1Kb2Iuc2VsZWN0ZWREYXRlID0gZGV0YWlsZWRQbUpvYi5wbUpvYi5zdGFydERhdGVUaW1lIDtcclxuXHJcbn1cclxuICAgIGRldGFpbGVkUG1Kb2IucmVhc29uQ29udGFjdCA9IFJlYXNvbkNvbnRhY3QuQ29udGFjdCA7XHJcbiAgICBkZXRhaWxlZFBtSm9iLmZ1dHVyZVN0YXR1cyA9IHRoaXMuc2xlY3RzRnV0dXJlU3RhdHVzKHRoaXMuZm9ybS52YWx1ZS5yZWFzb24uY29kZSkgXHJcbiAgICBjb25zb2xlLmxvZygpIFxyXG4gICAgdGhpcy5zZW5kRm9ybS5lbWl0KGRldGFpbGVkUG1Kb2IpO1xyXG4gIH1cclxuXHJcbiAgc2xlY3RzRnV0dXJlU3RhdHVzKHN0YXR1czphbnkpXHJcbiAge1xyXG4gICAgICBzd2l0Y2ggKHN0YXR1cykge1xyXG4gICAgICAgICAgY2FzZSBSZWFzb25Db2RlLk1QTSA6IHJldHVybiBQbUpvYlN0YXR1cy5XQUlUSU5HO1xyXG4gICAgICAgICAgY2FzZSBSZWFzb25Db2RlLlJQTSA6IHJldHVybiBQbUpvYlN0YXR1cy5SRVBPUlRFRDtcclxuICAgICAgICAgIGNhc2UgUmVhc29uQ29kZS5DUE0gOiByZXR1cm4gUG1Kb2JTdGF0dXMuQ0FOQ0VMTEVEO1xyXG4gICAgICAgICAgY2FzZSBSZWFzb25Db2RlLlNESSA6IHJldHVybiBQbUpvYlN0YXR1cy5ERVNJTlNUQUxMRUQ7XHJcbiAgICAgICAgICBjYXNlIFJlYXNvbkNvZGUuT1RIOiByZXR1cm4gUG1Kb2JTdGF0dXMuT1RIRVI7XHJcbiAgICAgICAgICBkZWZhdWx0IDogcmV0dXJuIFwiRXJyZXVyXCI7XHJcbiAgICAgIH1cclxuICB9IFxyXG5cclxuIFxyXG4gIGxvYWRGb3JtKCkge1xyXG4gICAgbGV0IG5hbWUgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCd1c2VyTmFtZScpIGFzIHN0cmluZyAgO1xyXG4gICAgbGV0IGVtYWlsID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnZW1haWwnKSBhcyBzdHJpbmc7XHJcbiAgICBsZXQgcGhvbmUgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdtb2JpbGVQaG9uZU51bWJlcicpIGFzIHN0cmluZztcclxuICAgICAgdGhpcy5mb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICAgbmFtZTogWyAgbmFtZSAhPT0gJ251bGwnID8gbmFtZSA6ICcnICwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDMpXV0sXHJcbiAgICAgICAgZW1haWw6IFsgZW1haWwhPT0gJ251bGwnID8gZW1haWwgIDogJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsXV0sXHJcbiAgICAgICAgcGhvbmU6IFsgcGhvbmUhPT0gJ251bGwnID8gcGhvbmUgIDogJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgcmVhc29uOiBbJycgLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgIHN5c3RlbXM6IFtbXSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICBwbXM6IFtbXSwgdGhpcy5zaG93UG0gPyBbXSA6W1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICBtZXNzYWdlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgxNSldXSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgc2VsZWN0UE0oc2VsZWN0ZWRTeXN0ZW06YW55KVxyXG4gIHtcclxuICAgIHRoaXMuc3lzdGVtQ29udGFpblBtID0gdHJ1ZSA7XHJcbiAgICBpZihzZWxlY3RlZFN5c3RlbSA9PT0gdW5kZWZpbmVkIClcclxuICAgIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAge1xyXG5cclxuXHJcbiAgICAgIGlmKHNlbGVjdGVkU3lzdGVtLnBtSm9icy5sZW5ndGggID09PSAwIClcclxuICAgICAge1xyXG4gICAgICAgIHRoaXMuc3lzdGVtQ29udGFpblBtID0gZmFsc2UgO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2VcclxuICAgICAge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTeXN0ZW0gPSBzZWxlY3RlZFN5c3RlbTtcclxuICAgICAgICB0aGlzLnBtSm9icyA9IHNlbGVjdGVkU3lzdGVtLnBtSm9icztcclxuICAgICAgICB0aGlzLnNob3dQbSA9IHRydWUgO1xyXG5cclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgIFxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG59XHJcblxyXG4iLCI8ZGl2ICpuZ0lmPVwidHJhbnNsYXRlICYmIHJlYXNvbnMgXCI+XHJcbiAgICA8c2VjdGlvbiBjbGFzcz1cInB0LTBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXNlY3Rpb24taGVhZGVyLWltZ1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyIHB0LTRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aDI+e3t0cmFuc2xhdGUudGl0bGV9fSA8L2gyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9zZWN0aW9uPlxyXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJweS01IGJhY2tncm91bmQtbGlnaHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyIHB4LWxnLTVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItY29udGFjdDEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcC1jb250YWN0MTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAqbmdJZj1cImZvcm0gJiYgc3lzdGVtcyAmJiByZWFzb25zXCIgY2xhc3M9XCJjb250YWN0MTAwLWZvcm0gdmFsaWRhdGUtZm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29udGFjdDEwMC1mb3JtLXRpdGxlXCI+e3t0cmFuc2xhdGUudGl0bGV9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZ3JpZCBwLWZsdWlkIHAtbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2wtMTIgcC1tZC0xMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0cmVcIj57e3RyYW5zbGF0ZS5wbGFjZWhvbGRlck5hbWV9fTwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJyZXF1aXNcIj4qIDwvc3Bhbj46XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0ZS5wbGFjZWhvbGRlck5hbWVcIiB0eXBlPVwidGV4dFwiIHBJbnB1dFRleHQgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZi5uYW1lLmludmFsaWQgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1Ym1pdHRlZCAmJiBmLm5hbWUuZXJyb3JzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlcXVpc1wiICpuZ0lmPVwiZi5uYW1lLmVycm9ycy5yZXF1aXJlZFwiPnt7dHJhbnNsYXRlLnJlcXVpcmVkTmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlcXVpc1wiICpuZ0lmPVwiZi5uYW1lLmVycm9ycy5taW5sZW5ndGhcIj57e3RyYW5zbGF0ZS5yZXF1aXJlZE5hbWVNaW59fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWdyaWQgcC1mbHVpZCBwLW10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY29sLTEyIHAtbWQtMTIgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdHJlXCI+e3t0cmFuc2xhdGUucGxhY2Vob2xkZXJFbWFpbH19PC9zcGFuPiA8c3BhbiBjbGFzcz1cInJlcXVpc1wiPio8L3NwYW4+OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGUucGxhY2Vob2xkZXJFbWFpbFwiIHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dCBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZi5lbWFpbC5pbnZhbGlkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgZi5lbWFpbC5lcnJvcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVxdWlzXCIgKm5nSWY9XCJmLmVtYWlsLmVycm9ycy5yZXF1aXJlZFwiPnt7dHJhbnNsYXRlLnJlcXVpcmVkRW1haWx9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1aXNcIiAqbmdJZj1cImYuZW1haWwuZXJyb3JzLmVtYWlsXCI+e3t0cmFuc2xhdGUucmVxdWlyZWRFbWFpbEZvcm1hdH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZ3JpZCBwLWZsdWlkIHAtbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2wtMTIgcC1tZC0xMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0cmVcIj57e3RyYW5zbGF0ZS5wbGFjZWhvbGRlclBob25lfX08L3NwYW4+IDxzcGFuIGNsYXNzPVwicmVxdWlzXCI+Kjwvc3Bhbj46XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0ZS5wbGFjZWhvbGRlclBob25lXCIgdHlwZT1cInRleHRcIiBwSW5wdXRUZXh0IGZvcm1Db250cm9sTmFtZT1cInBob25lXCIgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmLnBob25lLmludmFsaWQgfVwiIChrZXlwcmVzcyk9XCJwcmV2ZW50U3RyaW5nS2V5cHJlc3MoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1Ym1pdHRlZCAmJiBmLnBob25lLmVycm9yc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1aXNcIiAqbmdJZj1cImYucGhvbmUuZXJyb3JzLnJlcXVpcmVkXCI+e3t0cmFuc2xhdGUucmVxdWlyZWRQaG9uZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZ3JpZCBwLWZsdWlkIHAtbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2wtMTIgcC1tZC0xMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0cmVcIj57e3RyYW5zbGF0ZS5SZWxhdGVkU3lzdGVtc319PC9zcGFuPiA8c3BhbiBjbGFzcz1cInJlcXVpc1wiPio8L3NwYW4+OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtZHJvcGRvd24gKGNsaWNrKT1cInNlbGVjdFBNKHNlbGVjdGVkU3lzdGVtKVwiIFtvcHRpb25zXT1cInN5c3RlbXNcIiBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRlLnNlbGVjdFN5c3RlbVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRTeXN0ZW1cIiBbb3B0aW9uTGFiZWxdPVwiJ25hbWUnXCIgZm9ybUNvbnRyb2xOYW1lPVwic3lzdGVtc1wiICBvcHRpb25EaXNhYmxlZD1cImluYWN0aXZlXCIgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmLnN5c3RlbXMuaW52YWxpZCB9XCI+PC9wLWRyb3Bkb3duPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1aXNcIiAqbmdJZj1cIiFzeXN0ZW1Db250YWluUG1cIj57e3RyYW5zbGF0ZS5ub1BtSW5TeXN0ZW1zfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgZi5zeXN0ZW1zLmVycm9yc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1aXNcIiAqbmdJZj1cImYuc3lzdGVtcy5lcnJvcnMucmVxdWlyZWRcIj57e3RyYW5zbGF0ZS5yZXF1aXJlZFN5c3RlbX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZ3JpZCBwLWZsdWlkIHAtbXQtMlwiICpuZ0lmPVwic2hvd1BtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbC0xMiBwLW1kLTEyIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRyZVwiPnt7dHJhbnNsYXRlLlJlbGF0ZWRQTXN9fTwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJyZXF1aXNcIj4qPC9zcGFuPjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWRyb3Bkb3duICBbb3B0aW9uc109XCJwbUpvYnNcIiBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRlLnNlbGVjdFBNXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFBtXCIgW29wdGlvbkxhYmVsXT1cIid3b3Jrb3JkZXJOdW1iZXInXCIgZm9ybUNvbnRyb2xOYW1lPVwicG1zXCIgIG9wdGlvbkRpc2FibGVkPVwiaW5hY3RpdmVcIiBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGYucG1zLmludmFsaWQgfVwiPjwvcC1kcm9wZG93bj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3VibWl0dGVkICYmIGYucG1zLmVycm9yc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1aXNcIiAqbmdJZj1cImYucG1zLmVycm9ycy5yZXF1aXJlZFwiPnt7dHJhbnNsYXRlLnJlcXVpcmVkUE0gfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1ncmlkIHAtZmx1aWQgcC1tdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbC0xMiBwLW1kLTEyIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRyZVwiPnt7dHJhbnNsYXRlLnJlYXNvbn19PC9zcGFuPiA8c3BhbiBjbGFzcz1cInJlcXVpc1wiPio8L3NwYW4+OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtZHJvcGRvd24gW29wdGlvbnNdPVwicmVhc29uc1wiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGUuc2VsZWN0UmVhc29uXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFJlYXNvblwiIG9wdGlvbkxhYmVsPVwibmFtZVwiIGZvcm1Db250cm9sTmFtZT1cInJlYXNvblwiICBvcHRpb25EaXNhYmxlZD1cImluYWN0aXZlXCIgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmLnJlYXNvbi5pbnZhbGlkIH1cIj48L3AtZHJvcGRvd24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxpbnB1dCBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRlLnJlYXNvblwiIHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dCBmb3JtQ29udHJvbE5hbWU9XCJyZWFzb25cIiBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGYucmVhc29uLmludmFsaWQgfVwiPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgZi5yZWFzb24uZXJyb3JzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlcXVpc1wiICpuZ0lmPVwiZi5yZWFzb24uZXJyb3JzLnJlcXVpcmVkXCI+e3t0cmFuc2xhdGUucmVhc29uUmVxdWlyZWR9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWdyaWQgcC1mbHVpZCBwLW10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY29sLTEyIHAtbWQtMTIgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdHJlXCI+e3t0cmFuc2xhdGUucGxhY2Vob2xkZXJNZXNzYWdlfX0gPC9zcGFuPiA8c3BhbiBjbGFzcz1cInJlcXVpc1wiPio8L3NwYW4+OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIHBJbnB1dFRleHRhcmVhIHN0eWxlPVwiIG1pbi1oZWlnaHQ6MTAwcHg7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJTtcIiBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRlLnBsYWNlaG9sZGVyTWVzc2FnZSArJy4uLidcIiBmb3JtQ29udHJvbE5hbWU9XCJtZXNzYWdlXCIgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmLm1lc3NhZ2UuZXJyb3JzIH1cIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1Ym1pdHRlZCAmJiBmLm1lc3NhZ2UuZXJyb3JzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlcXVpc1wiICpuZ0lmPVwiZi5tZXNzYWdlLmVycm9ycy5yZXF1aXJlZFwiPnt7dHJhbnNsYXRlLnJlcXVpcmVkTWVzc2FnZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlcXVpc1wiICpuZ0lmPVwiZi5tZXNzYWdlLmVycm9ycy5taW5sZW5ndGhcIj57e3RyYW5zbGF0ZS5yZXF1aXJlZE1lc3NhZ2VNaW59fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1jb250YWN0MTAwLWZvcm0tYnRuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwLWNvbnRhY3QxMDAtZm9ybS1idG5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0MTAwLWZvcm0tYmdidG5cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4td2FycmFudHkgbXQtM1wiIChjbGljayk9XCJvblN1Ym1pdCgpXCIgW2Rpc2FibGVkXT1cIiFzeXN0ZW1Db250YWluUG1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3RyYW5zbGF0ZS5zZW5kfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgY29udGFjdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpZnJhbWUgc3JjPVwiaHR0cHM6Ly9tYXBzLmdvb2dsZS5jb20vbWFwcz9xPTI4MywlMjBSdWUlMjBEZSUyMGxhJTIwTWluaWVyZS1CUDM0JTIwJTIwNzg1MzMlMjBCVUMlMjAlRTIlODAlOTMlMjBDZWRleCZhbXA7dD0mYW1wO3o9MTMmYW1wO2llPVVURjgmYW1wO2l3bG9jPSZhbXA7b3V0cHV0PWVtYmVkXCIgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMjUwXCIgc3R5bGU9XCJib3JkZXI6MDtcIiBhbGxvd2Z1bGxzY3JlZW49XCJcIiBsb2FkaW5nPVwibGF6eVwiPjwvaWZyYW1lPlxyXG4gICAgICAgICAgICAgICAgICAgIDxoNiBjbGFzcz1cImZzLTQgbXQtM1wiPiB7e3RyYW5zbGF0ZS5pbmZvcm1hdGlvbn19PC9oNj5cclxuICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cIm1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1lbnZlbG9wZVwiPjwvaT48bGFiZWw+ICZuYnNwOyB7e3RyYW5zbGF0ZS5lbWFpbFRleHR9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIlwiPnt7dHJhbnNsYXRlLmVtYWlsfX0gPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLW1hcFwiPjwvaT48bGFiZWw+ICZuYnNwOyB7e3RyYW5zbGF0ZS5hZGRyZXNzVGV4dH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiXCI+e3t0cmFuc2xhdGUuYWRyZXNzfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIlwiPnt7dHJhbnNsYXRlLnRvd259fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiXCI+e3t0cmFuc2xhdGUuY291bnRyeX19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9zZWN0aW9uPlxyXG48L2Rpdj5cclxuXHJcbjxwLXRvYXN0IHBvc2l0aW9uPVwidG9wLWNlbnRlclwiPjwvcC10b2FzdD5cclxuIl19
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hd2YtdGVzdC1saWIvc3JjL2xpYi9zaGFyZWQvY29udGFjdC9jb250YWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F3Zi10ZXN0LWxpYi9zcmMvbGliL3NoYXJlZC9jb250YWN0L2NvbnRhY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQWEsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7OztBQVEzRCxNQUFNLE9BQU8sZ0JBQWdCO0lBaUIzQixZQUNZLFdBQXdCLEVBQ3hCLGNBQThCO1FBRDlCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQWpCakMsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLFlBQU8sR0FBYSxFQUFFLENBQUM7UUFDdkIsb0JBQWUsR0FBYSxFQUFFLENBQUM7UUFHOUIsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBTTNELG9CQUFlLEdBQUcsSUFBSSxDQUFFO1FBRXhCLFdBQU0sR0FBRyxLQUFLLENBQUU7SUFJYixDQUFDO0lBRUosV0FBVztRQUNULElBQUksQ0FBQyxP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QU0sQ0FBQztnQkFDcEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUU7YUFFckI7U0FJRjtJQUNILENBQUM7OzhHQXZJVSxnQkFBZ0I7a0dBQWhCLGdCQUFnQixxT0FGaEIsQ0FBQyxjQUFjLENBQUMsK0NDZjdCLHMrVEEySEE7NEZEMUdhLGdCQUFnQjtrQkFONUIsU0FBUzsrQkFDRSxhQUFhLGFBR1osQ0FBQyxjQUFjLENBQUM7K0hBSWxCLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE91dHB1dCwgT25DaGFuZ2VzLCBJbnB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBEZXRhaWxlZFBtSm9iIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2RldGFpbGVkUG1Kb2IubW9kZWwnO1xyXG5pbXBvcnQgeyBFdmVudFN0YXR1cyB9IGZyb20gJy4uLy4uL21vZGVscy9ldmVudFN0YXR1cyc7XHJcbmltcG9ydCB7IFBtSm9iIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3BtSm9iLm1vZGVsJztcclxuaW1wb3J0IHsgUG1Kb2JTdGF0dXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvcG1Kb2JTdGF0dXMnO1xyXG5pbXBvcnQgeyBSZWFzb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvcmVhc29uLm1vZGVsJztcclxuaW1wb3J0IHsgUmVhc29uQ29kZSB9IGZyb20gJy4uLy4uL21vZGVscy9yZWFzb25Db2RlJztcclxuaW1wb3J0IHsgUmVhc29uQ29udGFjdCB9IGZyb20gJy4uLy4uL21vZGVscy9yZWFzb25Db250YWN0JztcclxuaW1wb3J0IHsgU3lzdGVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3N5c3RlbSc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXdmLWNvbnRhY3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb250YWN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb250YWN0LmNvbXBvbmVudC5jc3MnXSxcclxuICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb250YWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuXHJcbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHN1Ym1pdHRlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHN5c3RlbXM6IFN5c3RlbVtdID0gW107XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRTeXN0ZW1zOiBTeXN0ZW1bXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHRyYW5zbGF0ZSE6YW55O1xyXG4gIEBJbnB1dCgpIHJlYXNvbnMhOiBSZWFzb25bXTtcclxuICBAT3V0cHV0KCkgc2VuZEZvcm06IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGZvcm0hOiBGb3JtR3JvdXA7XHJcbiAgc2VsZWN0ZWRSZWFzb24hOiBhbnk7XHJcbiAgc2VsZWN0ZWRTeXN0ZW0hOiBTeXN0ZW07XHJcbiAgc2VsZWN0ZWRQbSE6IGFueTtcclxuICBwbUpvYnMhOlBtSm9iW107XHJcbiAgc3lzdGVtQ29udGFpblBtID0gdHJ1ZSA7XHJcblxyXG4gIHNob3dQbSA9IGZhbHNlIDtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXHJcbiAgICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICkge31cclxuXHJcbiAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlYXNvbnMgPSB0aGlzLnJlYXNvbnMuZmlsdGVyKHg9PiAoeC5jb2RlPT0gUmVhc29uQ29kZS5TREl8fCB4LmNvZGU9PSBSZWFzb25Db2RlLk9USCApKTtcclxuICAgICAgdGhpcy5sb2FkRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgLy8gY29udmVuaWVuY2UgZ2V0dGVyIGZvciBlYXN5IGFjY2VzcyB0byBmb3JtIGZpZWxkc1xyXG4gIGdldCBmKCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzO1xyXG4gIH1cclxuXHJcbiAgcHJldmVudFN0cmluZ0tleXByZXNzKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgICAgaXNOYU4oTnVtYmVyKFN0cmluZy5mcm9tQ2hhckNvZGUoZXZlbnQuY2hhckNvZGUpKSkgfHxcclxuICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoZXZlbnQuY2hhckNvZGUpID09PSAnICdcclxuICAgICAgKSB7XHJcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB9XHJcbiAgfVxyXG5cclxuICBvblN1Ym1pdCgpIHtcclxuICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcclxuXHJcbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxyXG4gICAgICAgICAgICBzdW1tYXJ5OiAnRXJyb3InLFxyXG4gICAgICAgICAgICBkZXRhaWw6ICdUaGUgZm9ybSBpcyBpbnZhbGlkJyxcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc29sZS5sb2codGhpcy5mb3JtLnZhbHVlLnBtcylcclxuICAgIGxldCBkZXRhaWxlZFBtSm9iID0geyB9IGFzIERldGFpbGVkUG1Kb2IgO1xyXG4gICAgZGV0YWlsZWRQbUpvYi5uYW1lID0gdGhpcy5mb3JtLnZhbHVlLm5hbWU7XHJcbiAgICBkZXRhaWxlZFBtSm9iLnBob25lID0gdGhpcy5mb3JtLnZhbHVlLnBob25lO1xyXG4gICAgZGV0YWlsZWRQbUpvYi5lbWFpbCA9IHRoaXMuZm9ybS52YWx1ZS5lbWFpbDtcclxuICAgIGRldGFpbGVkUG1Kb2IucmVhc29uID0gdGhpcy5mb3JtLnZhbHVlLnJlYXNvbi5uYW1lO1xyXG4gICAgZGV0YWlsZWRQbUpvYi5jb21tZW50ID0gdGhpcy5mb3JtLnZhbHVlLm1lc3NhZ2U7XHJcbiAgICBpZiggdGhpcy5mb3JtLnZhbHVlLnBtcyAhPT0gdW5kZWZpbmVkKXtcclxuICAgICAgZGV0YWlsZWRQbUpvYi5wbUpvYiA9IHRoaXMuZm9ybS52YWx1ZS5wbXM7XHJcbiAgICB9XHJcbiAgICBkZXRhaWxlZFBtSm9iLnN5c3RlbU5hbWUgPSB0aGlzLnNlbGVjdGVkU3lzdGVtLm5hbWUgO1xyXG4gICAgZGV0YWlsZWRQbUpvYi5zeXN0ZW1JZCA9IHRoaXMuc2VsZWN0ZWRTeXN0ZW0uc3lzdGVtSWQgO1xyXG4gICAgZGV0YWlsZWRQbUpvYi5zaXRlTmFtZSA9IHRoaXMuc2VsZWN0ZWRTeXN0ZW0uc2l0ZU5hbWUgO1xyXG4gICAgZGV0YWlsZWRQbUpvYi5zaXRlQ2l0eSA9IHRoaXMuc2VsZWN0ZWRTeXN0ZW0uc2l0ZUNpdHkgO1xyXG4gICAgZGV0YWlsZWRQbUpvYi5zaXRlUG9zdGFsQ29kZSA9dGhpcy5zZWxlY3RlZFN5c3RlbS5zaXRlUG9zdGFsQ29kZVxyXG4gICAgZGV0YWlsZWRQbUpvYi50b1VwZGF0ZSA9IHRydWUgO1xyXG4gICAgaWYoIHRoaXMuZm9ybS52YWx1ZS5wbXMgIT09IHVuZGVmaW5lZClcclxuICAgIHtcclxuICBkZXRhaWxlZFBtSm9iLnNlbGVjdGVkRGF0ZSA9IGRldGFpbGVkUG1Kb2IucG1Kb2Iuc3RhcnREYXRlVGltZSA7XHJcblxyXG59XHJcbiAgICBkZXRhaWxlZFBtSm9iLnJlYXNvbkNvbnRhY3QgPSBSZWFzb25Db250YWN0LkNvbnRhY3QgO1xyXG4gICAgZGV0YWlsZWRQbUpvYi5mdXR1cmVTdGF0dXMgPSB0aGlzLnNsZWN0c0Z1dHVyZVN0YXR1cyh0aGlzLmZvcm0udmFsdWUucmVhc29uLmNvZGUpIFxyXG4gICAgY29uc29sZS5sb2coKSBcclxuICAgIHRoaXMuc2VuZEZvcm0uZW1pdChkZXRhaWxlZFBtSm9iKTtcclxuICB9XHJcblxyXG4gIHNsZWN0c0Z1dHVyZVN0YXR1cyhzdGF0dXM6YW55KVxyXG4gIHtcclxuICAgICAgc3dpdGNoIChzdGF0dXMpIHtcclxuICAgICAgICAgIGNhc2UgUmVhc29uQ29kZS5NUE0gOiByZXR1cm4gUG1Kb2JTdGF0dXMuV0FJVElORztcclxuICAgICAgICAgIGNhc2UgUmVhc29uQ29kZS5SUE0gOiByZXR1cm4gUG1Kb2JTdGF0dXMuUkVQT1JURUQ7XHJcbiAgICAgICAgICBjYXNlIFJlYXNvbkNvZGUuQ1BNIDogcmV0dXJuIFBtSm9iU3RhdHVzLkNBTkNFTExFRDtcclxuICAgICAgICAgIGNhc2UgUmVhc29uQ29kZS5TREkgOiByZXR1cm4gUG1Kb2JTdGF0dXMuREVTSU5TVEFMTEVEO1xyXG4gICAgICAgICAgY2FzZSBSZWFzb25Db2RlLk9USDogcmV0dXJuIFBtSm9iU3RhdHVzLk9USEVSO1xyXG4gICAgICAgICAgZGVmYXVsdCA6IHJldHVybiBcIkVycmV1clwiO1xyXG4gICAgICB9XHJcbiAgfSBcclxuXHJcbiBcclxuICBsb2FkRm9ybSgpIHtcclxuICAgIGxldCBuYW1lID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgndXNlck5hbWUnKSBhcyBzdHJpbmcgIDtcclxuICAgIGxldCBlbWFpbCA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2VtYWlsJykgYXMgc3RyaW5nO1xyXG4gICAgbGV0IHBob25lID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnbW9iaWxlUGhvbmVOdW1iZXInKSBhcyBzdHJpbmc7XHJcbiAgICAgIHRoaXMuZm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgIG5hbWU6IFsgIG5hbWUgIT09ICdudWxsJyA/IG5hbWUgOiAnJyAsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgzKV1dLFxyXG4gICAgICAgIGVtYWlsOiBbIGVtYWlsIT09ICdudWxsJyA/IGVtYWlsICA6ICcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF1dLFxyXG4gICAgICAgIHBob25lOiBbIHBob25lIT09ICdudWxsJyA/IHBob25lICA6ICcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgIHJlYXNvbjogWycnICwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICBzeXN0ZW1zOiBbW10sIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgcG1zOiBbW10sIHRoaXMuc2hvd1BtID8gW10gOltdXSxcclxuICAgICAgICBtZXNzYWdlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgxNSldXSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgc2VsZWN0UE0oc2VsZWN0ZWRTeXN0ZW06YW55KVxyXG4gIHtcclxuICAgIHRoaXMuc3lzdGVtQ29udGFpblBtID0gdHJ1ZSA7XHJcbiAgICBpZihzZWxlY3RlZFN5c3RlbSA9PT0gdW5kZWZpbmVkIClcclxuICAgIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAge1xyXG5cclxuXHJcbiAgICAgIGlmKHNlbGVjdGVkU3lzdGVtLnBtSm9icy5sZW5ndGggID09PSAwIClcclxuICAgICAge1xyXG4gICAgICAgIHRoaXMuc3lzdGVtQ29udGFpblBtID0gZmFsc2UgO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2VcclxuICAgICAge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTeXN0ZW0gPSBzZWxlY3RlZFN5c3RlbTtcclxuICAgICAgICB0aGlzLnBtSm9icyA9IHNlbGVjdGVkU3lzdGVtLnBtSm9icztcclxuICAgICAgICB0aGlzLnNob3dQbSA9IHRydWUgO1xyXG5cclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgIFxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG59XHJcblxyXG4iLCI8ZGl2ICpuZ0lmPVwidHJhbnNsYXRlICYmIHJlYXNvbnMgXCI+XHJcbiAgICA8c2VjdGlvbiBjbGFzcz1cInB0LTBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXNlY3Rpb24taGVhZGVyLWltZ1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyIHB0LTRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aDI+e3t0cmFuc2xhdGUudGl0bGV9fSA8L2gyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9zZWN0aW9uPlxyXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJweS01IGJhY2tncm91bmQtbGlnaHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyIHB4LWxnLTVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItY29udGFjdDEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcC1jb250YWN0MTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAqbmdJZj1cImZvcm0gJiYgc3lzdGVtcyAmJiByZWFzb25zXCIgY2xhc3M9XCJjb250YWN0MTAwLWZvcm0gdmFsaWRhdGUtZm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29udGFjdDEwMC1mb3JtLXRpdGxlXCI+e3t0cmFuc2xhdGUudGl0bGV9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZ3JpZCBwLWZsdWlkIHAtbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2wtMTIgcC1tZC0xMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0cmVcIj57e3RyYW5zbGF0ZS5wbGFjZWhvbGRlck5hbWV9fTwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJyZXF1aXNcIj4qIDwvc3Bhbj46XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0ZS5wbGFjZWhvbGRlck5hbWVcIiB0eXBlPVwidGV4dFwiIHBJbnB1dFRleHQgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZi5uYW1lLmludmFsaWQgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1Ym1pdHRlZCAmJiBmLm5hbWUuZXJyb3JzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlcXVpc1wiICpuZ0lmPVwiZi5uYW1lLmVycm9ycy5yZXF1aXJlZFwiPnt7dHJhbnNsYXRlLnJlcXVpcmVkTmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlcXVpc1wiICpuZ0lmPVwiZi5uYW1lLmVycm9ycy5taW5sZW5ndGhcIj57e3RyYW5zbGF0ZS5yZXF1aXJlZE5hbWVNaW59fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWdyaWQgcC1mbHVpZCBwLW10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY29sLTEyIHAtbWQtMTIgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdHJlXCI+e3t0cmFuc2xhdGUucGxhY2Vob2xkZXJFbWFpbH19PC9zcGFuPiA8c3BhbiBjbGFzcz1cInJlcXVpc1wiPio8L3NwYW4+OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGUucGxhY2Vob2xkZXJFbWFpbFwiIHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dCBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZi5lbWFpbC5pbnZhbGlkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgZi5lbWFpbC5lcnJvcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVxdWlzXCIgKm5nSWY9XCJmLmVtYWlsLmVycm9ycy5yZXF1aXJlZFwiPnt7dHJhbnNsYXRlLnJlcXVpcmVkRW1haWx9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1aXNcIiAqbmdJZj1cImYuZW1haWwuZXJyb3JzLmVtYWlsXCI+e3t0cmFuc2xhdGUucmVxdWlyZWRFbWFpbEZvcm1hdH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZ3JpZCBwLWZsdWlkIHAtbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2wtMTIgcC1tZC0xMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0cmVcIj57e3RyYW5zbGF0ZS5wbGFjZWhvbGRlclBob25lfX08L3NwYW4+IDxzcGFuIGNsYXNzPVwicmVxdWlzXCI+Kjwvc3Bhbj46XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0ZS5wbGFjZWhvbGRlclBob25lXCIgdHlwZT1cInRleHRcIiBwSW5wdXRUZXh0IGZvcm1Db250cm9sTmFtZT1cInBob25lXCIgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmLnBob25lLmludmFsaWQgfVwiIChrZXlwcmVzcyk9XCJwcmV2ZW50U3RyaW5nS2V5cHJlc3MoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1Ym1pdHRlZCAmJiBmLnBob25lLmVycm9yc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1aXNcIiAqbmdJZj1cImYucGhvbmUuZXJyb3JzLnJlcXVpcmVkXCI+e3t0cmFuc2xhdGUucmVxdWlyZWRQaG9uZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZ3JpZCBwLWZsdWlkIHAtbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2wtMTIgcC1tZC0xMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0cmVcIj57e3RyYW5zbGF0ZS5SZWxhdGVkU3lzdGVtc319PC9zcGFuPiA8c3BhbiBjbGFzcz1cInJlcXVpc1wiPio8L3NwYW4+OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtZHJvcGRvd24gKGNsaWNrKT1cInNlbGVjdFBNKHNlbGVjdGVkU3lzdGVtKVwiIFtvcHRpb25zXT1cInN5c3RlbXNcIiBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRlLnNlbGVjdFN5c3RlbVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRTeXN0ZW1cIiBbb3B0aW9uTGFiZWxdPVwiJ25hbWUnXCIgZm9ybUNvbnRyb2xOYW1lPVwic3lzdGVtc1wiICBvcHRpb25EaXNhYmxlZD1cImluYWN0aXZlXCIgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmLnN5c3RlbXMuaW52YWxpZCB9XCI+PC9wLWRyb3Bkb3duPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1aXNcIiAqbmdJZj1cIiFzeXN0ZW1Db250YWluUG1cIj57e3RyYW5zbGF0ZS5ub1BtSW5TeXN0ZW1zfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgZi5zeXN0ZW1zLmVycm9yc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1aXNcIiAqbmdJZj1cImYuc3lzdGVtcy5lcnJvcnMucmVxdWlyZWRcIj57e3RyYW5zbGF0ZS5yZXF1aXJlZFN5c3RlbX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZ3JpZCBwLWZsdWlkIHAtbXQtMlwiICpuZ0lmPVwic2hvd1BtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbC0xMiBwLW1kLTEyIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRyZVwiPnt7dHJhbnNsYXRlLlJlbGF0ZWRQTXN9fTwvc3Bhbj46XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1kcm9wZG93biAgW29wdGlvbnNdPVwicG1Kb2JzXCIgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0ZS5zZWxlY3RQTVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRQbVwiIFtvcHRpb25MYWJlbF09XCInd29ya29yZGVyTnVtYmVyJ1wiIGZvcm1Db250cm9sTmFtZT1cInBtc1wiICBvcHRpb25EaXNhYmxlZD1cImluYWN0aXZlXCIgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmLnBtcy5pbnZhbGlkIH1cIj48L3AtZHJvcGRvd24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgZi5wbXMuZXJyb3JzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlcXVpc1wiICpuZ0lmPVwiZi5wbXMuZXJyb3JzLnJlcXVpcmVkXCI+e3t0cmFuc2xhdGUucmVxdWlyZWRQTSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWdyaWQgcC1mbHVpZCBwLW10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY29sLTEyIHAtbWQtMTIgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdHJlXCI+e3t0cmFuc2xhdGUucmVhc29ufX08L3NwYW4+IDxzcGFuIGNsYXNzPVwicmVxdWlzXCI+Kjwvc3Bhbj46XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1kcm9wZG93biBbb3B0aW9uc109XCJyZWFzb25zXCIgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0ZS5zZWxlY3RSZWFzb25cIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkUmVhc29uXCIgb3B0aW9uTGFiZWw9XCJuYW1lXCIgZm9ybUNvbnRyb2xOYW1lPVwicmVhc29uXCIgIG9wdGlvbkRpc2FibGVkPVwiaW5hY3RpdmVcIiBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGYucmVhc29uLmludmFsaWQgfVwiPjwvcC1kcm9wZG93bj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGlucHV0IFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGUucmVhc29uXCIgdHlwZT1cInRleHRcIiBwSW5wdXRUZXh0IGZvcm1Db250cm9sTmFtZT1cInJlYXNvblwiIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZi5yZWFzb24uaW52YWxpZCB9XCI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1Ym1pdHRlZCAmJiBmLnJlYXNvbi5lcnJvcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVxdWlzXCIgKm5nSWY9XCJmLnJlYXNvbi5lcnJvcnMucmVxdWlyZWRcIj57e3RyYW5zbGF0ZS5yZWFzb25SZXF1aXJlZH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZ3JpZCBwLWZsdWlkIHAtbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2wtMTIgcC1tZC0xMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0cmVcIj57e3RyYW5zbGF0ZS5wbGFjZWhvbGRlck1lc3NhZ2V9fSA8L3NwYW4+IDxzcGFuIGNsYXNzPVwicmVxdWlzXCI+Kjwvc3Bhbj46XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgcElucHV0VGV4dGFyZWEgc3R5bGU9XCIgbWluLWhlaWdodDoxMDBweDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlO1wiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGUucGxhY2Vob2xkZXJNZXNzYWdlICsnLi4uJ1wiIGZvcm1Db250cm9sTmFtZT1cIm1lc3NhZ2VcIiBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGYubWVzc2FnZS5lcnJvcnMgfVwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3VibWl0dGVkICYmIGYubWVzc2FnZS5lcnJvcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVxdWlzXCIgKm5nSWY9XCJmLm1lc3NhZ2UuZXJyb3JzLnJlcXVpcmVkXCI+e3t0cmFuc2xhdGUucmVxdWlyZWRNZXNzYWdlfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVxdWlzXCIgKm5nSWY9XCJmLm1lc3NhZ2UuZXJyb3JzLm1pbmxlbmd0aFwiPnt7dHJhbnNsYXRlLnJlcXVpcmVkTWVzc2FnZU1pbn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWNvbnRhY3QxMDAtZm9ybS1idG5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXAtY29udGFjdDEwMC1mb3JtLWJ0blwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3QxMDAtZm9ybS1iZ2J0blwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi13YXJyYW50eSBtdC0zXCIgKGNsaWNrKT1cIm9uU3VibWl0KClcIiBbZGlzYWJsZWRdPVwiIXN5c3RlbUNvbnRhaW5QbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dHJhbnNsYXRlLnNlbmR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBjb250YWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlmcmFtZSBzcmM9XCJodHRwczovL21hcHMuZ29vZ2xlLmNvbS9tYXBzP3E9MjgzLCUyMFJ1ZSUyMERlJTIwbGElMjBNaW5pZXJlLUJQMzQlMjAlMjA3ODUzMyUyMEJVQyUyMCVFMiU4MCU5MyUyMENlZGV4JmFtcDt0PSZhbXA7ej0xMyZhbXA7aWU9VVRGOCZhbXA7aXdsb2M9JmFtcDtvdXRwdXQ9ZW1iZWRcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIyNTBcIiBzdHlsZT1cImJvcmRlcjowO1wiIGFsbG93ZnVsbHNjcmVlbj1cIlwiIGxvYWRpbmc9XCJsYXp5XCI+PC9pZnJhbWU+XHJcbiAgICAgICAgICAgICAgICAgICAgPGg2IGNsYXNzPVwiZnMtNCBtdC0zXCI+IHt7dHJhbnNsYXRlLmluZm9ybWF0aW9ufX08L2g2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwibWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWVudmVsb3BlXCI+PC9pPjxsYWJlbD4gJm5ic3A7IHt7dHJhbnNsYXRlLmVtYWlsVGV4dH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiXCI+e3t0cmFuc2xhdGUuZW1haWx9fSA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIG10LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktbWFwXCI+PC9pPjxsYWJlbD4gJm5ic3A7IHt7dHJhbnNsYXRlLmFkZHJlc3NUZXh0fX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJcIj57e3RyYW5zbGF0ZS5hZHJlc3N9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiXCI+e3t0cmFuc2xhdGUudG93bn19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJcIj57e3RyYW5zbGF0ZS5jb3VudHJ5fX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L3NlY3Rpb24+XHJcbjwvZGl2PlxyXG5cclxuPHAtdG9hc3QgcG9zaXRpb249XCJ0b3AtY2VudGVyXCI+PC9wLXRvYXN0PlxyXG4iXX0=
@@ -282,6 +282,12 @@ export class MaintenanceListComponent {
282
282
  PmJobListForUpdate.emailTypes = this.emailTypes;
283
283
  this.emitForUpdate.emit(PmJobListForUpdate);
284
284
  }
285
+ transformType(type) {
286
+ if (type == "Planned Maintenance") {
287
+ return "Maintenance planifiée";
288
+ }
289
+ return type;
290
+ }
285
291
  transformStatus(status) {
286
292
  switch (status) {
287
293
  case PmJobStatus.NEW: return this.status.new;
@@ -349,4 +355,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImpo
349
355
  }], sendForm: [{
350
356
  type: Output
351
357
  }] } });
352
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbnRlbmFuY2UtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hd2YtdGVzdC1saWIvc3JjL2xpYi9zaGFyZWQvbWFpbnRlbmFuY2UtbGlzdC9tYWludGVuYW5jZS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F3Zi10ZXN0LWxpYi9zcmMvbGliL3NoYXJlZC9tYWludGVuYW5jZS1saXN0L21haW50ZW5hbmNlLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBR1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUtsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBU3pELE1BQU0sT0FBTyx3QkFBd0I7SUEwQ2pDLFlBQ1ksY0FBOEI7UUFBOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBckNqQyxvQkFBZSxHQUFvQixFQUFFLENBQUM7UUFDdEMsZ0NBQTJCLEdBQW9CLEVBQUUsQ0FBQztRQUNsRCxjQUFTLEdBQW9CLEVBQUUsQ0FBQztRQUVoQyw2QkFBd0IsR0FBQyxLQUFLLENBQUM7UUFFOUIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3hD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QkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uRGVzdHJveSxcclxuICAgIE91dHB1dCxcclxuICAgIFZpZXdDaGlsZCxcclxuICAgIE9uQ2hhbmdlcyxcclxuICAgIFNpbXBsZUNoYW5nZXNcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVGFibGUgfSBmcm9tICdwcmltZW5nL3RhYmxlJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRGV0YWlsZWRQbUpvYiB9IGZyb20gJy4uLy4uL21vZGVscy9kZXRhaWxlZFBtSm9iLm1vZGVsJztcclxuaW1wb3J0IHsgQWx0ZXJuYXRpdmVEYXRlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FsdGVybmF0aXZlRGF0ZS5tb2RlbCc7XHJcbmltcG9ydCB7IEVtYWlsVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9lbWFpbFR5cGUnO1xyXG5pbXBvcnQgeyBFdmVudFN0YXR1cyB9IGZyb20gJy4uLy4uL21vZGVscy9ldmVudFN0YXR1cyc7XHJcbmltcG9ydCB7IFBtSm9iIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3BtSm9iLm1vZGVsJztcclxuaW1wb3J0IHsgUE1Hcm91cGVkSm9iIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3BNR3JvdXBlZEpvYi5tb2RlbCc7XHJcbmltcG9ydCB7IFBtSm9iU3RhdHVzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3BtSm9iU3RhdHVzJztcclxuaW1wb3J0IHsgUmVhc29uQ29udGFjdCB9IGZyb20gJy4uLy4uL21vZGVscy9yZWFzb25Db250YWN0JztcclxuaW1wb3J0IHsgU3RpbmdCb29sZWFuIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3N0aW5nQm9vbGVhbic7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2F3Zi1tYWludGVuYW5jZS1saXN0JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9tYWludGVuYW5jZS1saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL21haW50ZW5hbmNlLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW01lc3NhZ2VTZXJ2aWNlLCBDb25maXJtYXRpb25TZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1haW50ZW5hbmNlTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICAgIEBWaWV3Q2hpbGQoJ2R0JykgZHQ6IFRhYmxlIHwgdW5kZWZpbmVkO1xyXG4gICAgQFZpZXdDaGlsZCgnb3AnKSBvcDogYW55IHwgdW5kZWZpbmVkO1xyXG4gICAgQElucHV0KCkgdHJhbnNsYXRlOiBhbnk7XHJcbiAgICBASW5wdXQoKSByZWFzb25zOiBhbnk7XHJcbiAgICBASW5wdXQoKSBnbG9iYWx0cmFuc2xhdGU6IGFueTtcclxuICAgIEBJbnB1dCgpIG1haW50ZW5hbmNlTGlzdDogRGV0YWlsZWRQbUpvYltdID0gW107XHJcbiAgICBASW5wdXQoKSBtYWludGVuYW5jZUxpc3ROb3REaXNwbGF5ZWQ6IERldGFpbGVkUG1Kb2JbXSA9IFtdO1xyXG4gICAgQElucHV0KCkgcG1Kb2JMaXN0OiBEZXRhaWxlZFBtSm9iW10gPSBbXTtcclxuICAgIEBJbnB1dCgpIGlzQWxyZWFkeVNjaGVkdWxlZCE6IEJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBkaXNwbGF5Q29uZmlybWVkRGF0ZUluZm89ZmFsc2U7XHJcbiAgICBASW5wdXQoKSBhbHRlcm5hdGl2ZURhdGVzTGlzdCE6IGFueSA7XHJcbiAgICBAT3V0cHV0KCkgZW1pdEZvclVwZGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIGVtaXRGb3JBbHRlcm5hdGl2ZURhdGVzID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgc2VuZENvbnRhY3RNZUVtYWlsID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBASW5wdXQoKSBzdGF0dXM6IGFueTtcclxuICAgXHJcbiAgICBAT3V0cHV0KCkgc2VuZEZvcm06IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgbW9yZURhdGVzITpib29sZWFuO1xyXG4gICAgZGV0YWlsZWRQbUpvYkxpbmtlZExpc3QgOiBEZXRhaWxlZFBtSm9iW10gPSBbXTtcclxuICAgIHVwZGF0ZVBtU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xyXG4gICAgYWx0ZXJuYXRpdmVEYXRlc1N1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcclxuICAgIHNob3dEYXRlITogYm9vbGVhbjtcclxuICAgIG1haW50ZW5hbmNlU2VsZWN0ZWQhOiBEZXRhaWxlZFBtSm9iO1xyXG4gICAgc3RhcnREYXRlVGltZSE6IGFueTtcclxuICAgIGVuZERhdGVUaW1lITogYW55O1xyXG4gICAgc2VsZWN0ZWRXb3Jrb3JkZXJJZCE6IGFueTtcclxuICAgIGFsdGVybmF0aXZlRGF0ZSE6IEFsdGVybmF0aXZlRGF0ZSA7XHJcbiAgICBhbHRlcm5hdGl2ZURhdGVzU2VsZWN0ZWQ6IEFsdGVybmF0aXZlRGF0ZVtdID0gW107XHJcbiAgICBkaXNwbGF5Y29udGFjdFN1cHBvcnQgPSBmYWxzZTtcclxuICAgIGRpc3BsYXlDb25maXJtRGlhbG9nID0gZmFsc2U7XHJcbiAgICBkaXNwbGF5Q29uZmlybURpYWxvZ0NvbnRhY3QgPSBmYWxzZTtcclxuICAgIGRpc3BsYXlTaG93TGlua3MgID0gZmFsc2U7XHJcbiAgICBkaXNwbGF5QW5vdGhlckRhdGUgPSBmYWxzZTtcclxuICAgIGlzV2l0aExpbmtzID0gZmFsc2U7XHJcbiAgICBpc1Byb3Bvc2VkRGF0ZSA9IHRydWU7XHJcbiAgICBwbVNlbGVjdGVkU3RhdHVzITpzdHJpbmcgO1xyXG4gICAgZW1haWxUeXBlcyE6c3RyaW5nW107IFxyXG4gICAgYWxyZWFkeVNjaGVkdWxlZE1zZyAhOmJvb2xlYW47XHJcbiAgICByZWFzb25Db250YWN0PVwiXCI7XHJcbiAgICBjb250YWN0TWVSZXF1ZXN0ITpEZXRhaWxlZFBtSm9iIDtcclxuICAgIGZpcnN0ID0gMDtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlXHJcbiAgICApIHt9XHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5maXJzdCA9IDA7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJoZWxsb1wiKVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy51cGRhdGVQbVN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVBtU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmFsdGVybmF0aXZlRGF0ZXNTdWJzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5hbHRlcm5hdGl2ZURhdGVzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgYXBwbHlGaWx0ZXJHbG9iYWwoJGV2ZW50OiBhbnksIHN0cmluZ1ZhbDogYW55KSB7XHJcbiAgICAgICAgdGhpcy5kdD8uZmlsdGVyR2xvYmFsKFxyXG4gICAgICAgICAgICAoJGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSxcclxuICAgICAgICAgICAgc3RyaW5nVmFsXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBcclxuICAgIHNlbGVjdEVsZW1lbnQoZWxlbWVudDogRGV0YWlsZWRQbUpvYikge1xyXG4gICAgICAgIHRoaXMuYWx0ZXJuYXRpdmVEYXRlc0xpc3QgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuZW1haWxUeXBlcyA9W107XHJcbiAgICAgICAgaWYoZWxlbWVudClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMucG1TZWxlY3RlZFN0YXR1cyA9IGVsZW1lbnQuc3RhdHVzIDtcclxuICAgICAgICB9XHJcbiAgICAgICBcclxuICAgICAgICBpZihlbGVtZW50LnBtSm9iLmdyb3VwTGlzdClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNXaXRoTGlua3MgPSBlbGVtZW50LnBtSm9iLmdyb3VwTGlzdD8ubGVuZ3RoID4gMCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRXb3Jrb3JkZXJJZCA9IGVsZW1lbnQucG1Kb2Iud29ya29yZGVyTnVtYmVyO1xyXG4gICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZCA9IGVsZW1lbnQ7XHJcbiAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLldvcmtvcmRlck51bWJlclNlbGVjdGVkID0gdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLndvcmtvcmRlcklkIDtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmlzQWxyZWFkeVNjaGVkdWxlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmdldEFsdGVybmF0aXZlRGF0ZXMoZWxlbWVudC5wbUpvYik7IFxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnN0YXJ0RGF0ZVRpbWUgPSB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2Iuc3RhcnREYXRlVGltZTtcclxuICAgICAgICB0aGlzLmVuZERhdGVUaW1lID0gdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmVuZERhdGVUaW1lO1xyXG4gICAgICAgIHRoaXMuZ2V0TGlua2VkUG1Kb2IoKTtcclxuICAgIH1cclxuICAgIGdldEFsdGVybmF0aXZlRGF0ZXMocG1Kb2IgOiBQbUpvYiApICB7XHJcbiAgICAgICAgdGhpcy5lbWl0Rm9yQWx0ZXJuYXRpdmVEYXRlcy5lbWl0KHBtSm9iKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRMaW5rZWRQbUpvYigpXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5kZXRhaWxlZFBtSm9iTGlua2VkTGlzdCA9W107XHJcbiAgICAgICAgaWYodGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmdyb3VwTGlzdClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5ncm91cExpc3QuZm9yRWFjaCgobGlua2VkIDogUE1Hcm91cGVkSm9iICApICA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5tYWludGVuYW5jZUxpc3QuZm9yRWFjaCgoaXRlbSA6RGV0YWlsZWRQbUpvYiAgKSAgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGxpbmtlZC53b3Jrb3JkZXJJZCA9PT0gaXRlbS5wbUpvYi53b3Jrb3JkZXJJZClcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsZWRQbUpvYkxpbmtlZExpc3QucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpZiB0aGUgbGlua2VkIFBNIGluIHRoZSBvdGhlciBtYWludGVuYW5jZSBsaXN0IG5vdCBzZWxlY3RlZFxyXG4gICAgICAgIGlmKHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5ncm91cExpc3QgJiYgKHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5ncm91cExpc3QubGVuZ3RoICE9PSB0aGlzLmRldGFpbGVkUG1Kb2JMaW5rZWRMaXN0Lmxlbmd0aCkpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuZ3JvdXBMaXN0LmZvckVhY2goKGxpbmtlZCA6IFBNR3JvdXBlZEpvYiAgKSAgPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMubWFpbnRlbmFuY2VMaXN0Tm90RGlzcGxheWVkLmZvckVhY2goKGl0ZW0gOkRldGFpbGVkUG1Kb2IgICkgID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnRvVXBkYXRlID0gZmFsc2UgO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGxpbmtlZC53b3Jrb3JkZXJJZCA9PT0gaXRlbS5wbUpvYi53b3Jrb3JkZXJJZClcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsZWRQbUpvYkxpbmtlZExpc3QucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgY29uZmlybURpYWxvZygpIHtcclxuICAgICAgICB0aGlzLmlzUHJvcG9zZWREYXRlID0gdHJ1ZSA7XHJcbiAgICAgICAgdGhpcy5vcC5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29uZmlybURpYWxvZyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBcclxuXHJcbiAgICBjbG9zZUNvbmZpcm1EaWFsb2coY29uZmlybTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29uZmlybURpYWxvZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5mdXR1cmVTdGF0dXMgPSBQbUpvYlN0YXR1cy5BQ0NFUFRFRCA7XHJcbiAgICAgICAgaWYgKGNvbmZpcm0pIHtcclxuICAgICAgICAgICAgaWYoIXRoaXMuaXNQcm9wb3NlZERhdGUpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUFsdGVybmF0aXZlRGF0ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgeyAgXHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVByb3Bvc2VkRGF0ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZW1haWxUeXBlcy5wdXNoKEVtYWlsVHlwZS5BY2NlcHRlZF9DU0MpIDtcclxuICAgICAgICAgICAgdGhpcy5lbWFpbFR5cGVzLnB1c2goRW1haWxUeXBlLkFjY2VwdGVkX0NsaWVudHMpIDtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVQbUpvYigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjbG9zZUNvbmZpcm1EaWFsb2dDb250YWN0KGNvbmZpcm06IGFueSkge1xyXG4gICAgICAgIHRoaXMuZGlzcGxheUNvbmZpcm1EaWFsb2dDb250YWN0ID0gZmFsc2U7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKGNvbmZpcm0pIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZW1haWxUeXBlcyA9IFtdIGFzIHN0cmluZ1tdO1xyXG4gICAgICAgICAgICBpZih0aGlzLnJlYXNvbkNvbnRhY3QgPT09IFJlYXNvbkNvbnRhY3QuQ29udGFjdEZvcm1QbSApXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB0aGlzLmVtYWlsVHlwZXMucHVzaChFbWFpbFR5cGUuQ29udGFjdE1lX0NsaWVudHMpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbWFpbFR5cGVzLnB1c2goRW1haWxUeXBlLkNvbnRhY3RNZV9DU0MpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKHRoaXMucmVhc29uQ29udGFjdCA9PT0gUmVhc29uQ29udGFjdC5DYW5jZWxGb3JtUG0gKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuY3VzdG9tT2JqZWN0PSB7fTtcclxuICAgICAgICAgICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5jdXN0b21PYmplY3QuY3VzdG9tZXJXYWl0aW5nID1TdGluZ0Jvb2xlYW4uWUVTIDtcclxuICAgICAgICAgICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5mdXR1cmVTdGF0dXMgPSAgUG1Kb2JTdGF0dXMuV0FJVElORyA7ICBcclxuICAgICAgICAgICAgICAgIHRoaXMuZW1haWxUeXBlcy5wdXNoKEVtYWlsVHlwZS5DYW5jZWxQTV9DU0MpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbWFpbFR5cGVzLnB1c2goRW1haWxUeXBlLkNhbmNlbFBNX0NsaWVudHMpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5jdXN0b21PYmplY3Q9IHt9O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmN1c3RvbU9iamVjdC5jdXN0b21lcldhaXRpbmcgPVN0aW5nQm9vbGVhbi5ZRVM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQuZnV0dXJlU3RhdHVzID0gIFBtSm9iU3RhdHVzLldBSVRJTkcgOyAgXHJcbiAgICAgICAgICAgICAgICAgdGhpcy5lbWFpbFR5cGVzLnB1c2goRW1haWxUeXBlLlNlbmROZXdEYXRlc19DU0MpO1xyXG4gICAgICAgICAgICAgICAgIHRoaXMuZW1haWxUeXBlcy5wdXNoKEVtYWlsVHlwZS5TZW5kTmV3RGF0ZXNfQ2xpZW50cyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICB0aGlzLnVwZGF0ZUxpbmtlZFBNRm9ybUNvbnRhY3QoKTtcclxuXHJcbiAgICAgICAgICAgICB0aGlzLmNsb3NlQ29udGFjdFN1cHBvcnQodHJ1ZSkgO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlTGlua2VkUE1Gb3JtQ29udGFjdCgpXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5wbUpvYkxpc3QgPVtdO1xyXG4gICAgICAgIHRoaXMucG1Kb2JMaXN0LnB1c2godGhpcy5tYWludGVuYW5jZVNlbGVjdGVkKTtcclxuICAgICAgICBpZih0aGlzLmRldGFpbGVkUG1Kb2JMaW5rZWRMaXN0Lmxlbmd0aCA+MClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuZGV0YWlsZWRQbUpvYkxpbmtlZExpc3QuZm9yRWFjaCgoaXRlbTpEZXRhaWxlZFBtSm9iKSAgPT4ge1xyXG4gICAgICAgICAgICAgICAgaXRlbS5mdXR1cmVTdGF0dXMgPSAgaXRlbS5zdGF0dXMgO1xyXG4gICAgICAgICAgICAgICAgaXRlbS5zZWxlY3RlZERhdGUgPSBpdGVtLnBtSm9iLnN0YXJ0RGF0ZVRpbWU7XHJcbiAgICAgICAgICAgICAgICBpdGVtLldvcmtvcmRlck51bWJlclNlbGVjdGVkID0gIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi53b3Jrb3JkZXJJZCA7XHJcbiAgICAgICAgICAgICAgICAgaWYodGhpcy5yZWFzb25Db250YWN0ID09PSBSZWFzb25Db250YWN0Lk1vcmVEYXRlc0Zvcm1QbSAgfHx0aGlzLnJlYXNvbkNvbnRhY3QgPT09IFJlYXNvbkNvbnRhY3QuQ2FuY2VsRm9ybVBtIClcclxuICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5yZWFzb24gPSB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucmVhc29uO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucmVhc29uQ29udGFjdCA9IHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5yZWFzb25Db250YWN0O1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucG1Kb2IuY3VzdG9tT2JqZWN0PSB7fTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnBtSm9iLmN1c3RvbU9iamVjdC5jdXN0b21lcldhaXRpbmcgPVN0aW5nQm9vbGVhbi5ZRVMgO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uZnV0dXJlU3RhdHVzID0gIFBtSm9iU3RhdHVzLldBSVRJTkcgOyAgXHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMucG1Kb2JMaXN0LnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY2FsbEFwaVRvVXBkYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2VDb250YWN0U3VwcG9ydChldmVudCA6YW55KVxyXG4gICAge1xyXG4gICAgICAgIHRoaXMuZGlzcGxheWNvbnRhY3RTdXBwb3J0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0RhdGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5yZWFzb25Db250YWN0ID1cIlwiO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBwcm9wb3NlQW5vdGhlckRhdGUoKSB7XHJcbiAgICAgICAgdGhpcy5pc1Byb3Bvc2VkRGF0ZSA9IGZhbHNlIDtcclxuICAgICAgICB0aGlzLm9wLmhpZGUoKTtcclxuICAgICAgICB0aGlzLmRpc3BsYXlBbm90aGVyRGF0ZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgY29udGFjdFN1cHBvcnQoZnJvbU90aGVyRGF0ZSA6IGJvb2xlYW4pIHtcclxuICAgICBcclxuXHJcbiAgICAgICAgdGhpcy5vcC5oaWRlKCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5yZWFzb25Db250YWN0ID0gZnJvbU90aGVyRGF0ZSA/IFJlYXNvbkNvbnRhY3QuTW9yZURhdGVzRm9ybVBtIDogIFJlYXNvbkNvbnRhY3QuQ29udGFjdEZvcm1QbSA7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5Y29udGFjdFN1cHBvcnQgPSB0cnVlOyAgXHJcbiAgICB9XHJcblxyXG4gICAgc2hvd0xpbmtzKGVsZW1lbnQ/OmFueSlcclxuICAgIHtcclxuICAgICAgICBpZihlbGVtZW50KVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RFbGVtZW50KGVsZW1lbnQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5vcC5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5U2hvd0xpbmtzID0gdHJ1ZSA7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGNsb3NlU2hvd0xpbmtzKClcclxuICAgIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXlTaG93TGlua3MgPSBmYWxzZSA7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2VDb25maXJtZWREYXRlSW5mbygpIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXlDb25maXJtZWREYXRlSW5mbyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGFjY2VwdERhdGUoYWx0ZXJuYXRpdmVEYXRlczogQWx0ZXJuYXRpdmVEYXRlW10pXHJcbiAgICB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29uZmlybURpYWxvZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hbHRlcm5hdGl2ZURhdGVzU2VsZWN0ZWQgPSBhbHRlcm5hdGl2ZURhdGVzO1xyXG4gICAgICAgIHRoaXMuZmluZERhdGVzU2VsZWN0ZWQoKTtcclxuICAgIH1cclxuXHJcbiAgICBmaW5kRGF0ZXNTZWxlY3RlZCgpXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5hbHRlcm5hdGl2ZURhdGVzU2VsZWN0ZWQuZm9yRWFjaCgoYWx0ZXJuYXRpdmVEYXRlOiBBbHRlcm5hdGl2ZURhdGUpID0+IHtcclxuICAgICAgICAgICAgaWYoYWx0ZXJuYXRpdmVEYXRlLnNlbGVjdGVkPT09XCJZZXNcIilcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydERhdGVUaW1lID0gYWx0ZXJuYXRpdmVEYXRlLnN0YXJ0RGF0ZVRpbWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVuZERhdGVUaW1lID0gYWx0ZXJuYXRpdmVEYXRlLmVuZERhdGVUaW1lO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnNlbGVjdGVkRGF0ZSA9IGFsdGVybmF0aXZlRGF0ZS5zdGFydERhdGVUaW1lO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2VBbm90aGVyRGF0ZShldmVudDogYW55KSB7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5QW5vdGhlckRhdGUgPSBmYWxzZTtcclxuICAgICAgICBpZihldmVudD09PWZhbHNlKVxyXG4gICAgICAgIHtcclxuICAgICAgICB0aGlzLmFscmVhZHlTY2hlZHVsZWRNc2cgPSBmYWxzZSA7XHJcbiAgICAgICAgdGhpcy5vcC5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy5jb250YWN0U3VwcG9ydCh0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlUG1Kb2IoKSB7XHJcblxyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMucG1Kb2JMaXN0ID1bXTtcclxuICAgICAgICB0aGlzLnBtSm9iTGlzdC5wdXNoKHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZCk7XHJcbiAgICAgICAgaWYodGhpcy5kZXRhaWxlZFBtSm9iTGlua2VkTGlzdC5sZW5ndGggPjApXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLmRldGFpbGVkUG1Kb2JMaW5rZWRMaXN0LmZvckVhY2goKHBNSm9iOkRldGFpbGVkUG1Kb2IpICA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5wbUpvYkxpc3QucHVzaChwTUpvYik7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jYWxsQXBpVG9VcGRhdGUoKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgZWRpdFBtKClcclxuICAgIHtcclxuICAgICAgICB0aGlzLmFscmVhZHlTY2hlZHVsZWRNc2cgPSB0cnVlIDtcclxuICAgICAgICB0aGlzLm9wLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnJlYXNvbkNvbnRhY3QgPSAgIFJlYXNvbkNvbnRhY3QuQ2FuY2VsRm9ybVBtIDtcclxuICAgICAgICB0aGlzLnByZXBhcmVGb3JQb3B1cCgpIDtcclxuICAgICAgICB0aGlzLmRpc3BsYXljb250YWN0U3VwcG9ydCA9IHRydWU7XHJcbiAgICAgICAgXHJcbiAgICBcclxuICAgIH1cclxuXHJcbiAgICBwcmVwYXJlRm9yUG9wdXAoKVxyXG4gICAge1xyXG4gICAgICAgIGlmKHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5jdXN0b21lckFjY2VwdGVkID09PVwiWWVzXCIpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZVRpbWUgPSB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2Iuc3RhcnREYXRlVGltZTtcclxuICAgICAgICAgICAgdGhpcy5lbmREYXRlVGltZSA9IHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5lbmREYXRlVGltZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5hbHRlcm5hdGl2ZURhdGVzU2VsZWN0ZWQgPSB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuYWx0ZXJuYXRpdmVEYXRlcztcclxuICAgICAgICAgICAgdGhpcy5maW5kRGF0ZXNTZWxlY3RlZCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG5cclxuXHJcblxyXG4gICAgdXBkYXRlUHJvcG9zZWREYXRlKClcclxuICAgIHtcclxuICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuY3VzdG9tZXJBY2NlcHRlZCA9IFN0aW5nQm9vbGVhbi5ZRVM7XHJcbiAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmV2ZW50U3RhdHVzID0gRXZlbnRTdGF0dXMuQVNTSUdORURBTkM7XHJcbiAgICAgICAgdGhpcy5kZXRhaWxlZFBtSm9iTGlua2VkTGlzdC5mb3JFYWNoKChpdGVtIDpEZXRhaWxlZFBtSm9iICApICA9PiB7XHJcbiAgICAgICAgICAgIGl0ZW0ucG1Kb2IuY3VzdG9tZXJBY2NlcHRlZCA9IFN0aW5nQm9vbGVhbi5ZRVM7XHJcbiAgICAgICAgICAgIGl0ZW0ucG1Kb2IuZXZlbnRTdGF0dXMgPSBFdmVudFN0YXR1cy5BU1NJR05FREFOQztcclxuICAgICAgICAgICAgaXRlbS5mdXR1cmVTdGF0dXMgPSBQbUpvYlN0YXR1cy5BQ0NFUFRFRCA7XHJcbiAgICAgICAgICAgIGl0ZW0uV29ya29yZGVyTnVtYmVyU2VsZWN0ZWQgPSAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLndvcmtvcmRlcklkIDtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVBbHRlcm5hdGl2ZURhdGUoKVxyXG4gICAge1xyXG4gICAgICAgIHRoaXMuZmluZERhdGVzU2VsZWN0ZWQoKTtcclxuICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuYWx0ZXJuYXRpdmVEYXRlcyA9ICB0aGlzLmFsdGVybmF0aXZlRGF0ZXNTZWxlY3RlZCA7XHJcbiAgICAgICAgdGhpcy5kZXRhaWxlZFBtSm9iTGlua2VkTGlzdC5mb3JFYWNoKChpdGVtIDpEZXRhaWxlZFBtSm9iICApICA9PiB7XHJcbiAgICAgICAgICAgIGl0ZW0ucG1Kb2IuYWx0ZXJuYXRpdmVEYXRlcyA9ICB0aGlzLmFsdGVybmF0aXZlRGF0ZXNTZWxlY3RlZCA7XHJcbiAgICAgICAgICAgIGl0ZW0ucG1Kb2IuZXZlbnRTdGF0dXMgPSBFdmVudFN0YXR1cy5BU1NJR05FREFOQztcclxuICAgICAgICAgICAgaXRlbS5mdXR1cmVTdGF0dXMgPSBQbUpvYlN0YXR1cy5BQ0NFUFRFRCA7XHJcbiAgICAgICAgICAgIGl0ZW0uV29ya29yZGVyTnVtYmVyU2VsZWN0ZWQgPSAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLndvcmtvcmRlcklkIDtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmRpc3BsYXlBbm90aGVyRGF0ZSA9IGZhbHNlO1xyXG5cclxuICAgIH1cclxuXHJcblxyXG4gICAgc2VuZENvbnRhY3RNZUZvcm0oY29udGFjdE1lUmVxdWVzdDphbnkpXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5tb3JlRGF0ZXMgPSBmYWxzZTtcclxuICAgICAgICBpZiggY29udGFjdE1lUmVxdWVzdC5yZWFzb25Db250YWN0ID09PSBSZWFzb25Db250YWN0Lk1vcmVEYXRlc0Zvcm1QbSApXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLm1vcmVEYXRlcyA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG5cclxuICAgICAgICB0aGlzLmRpc3BsYXlDb25maXJtRGlhbG9nQ29udGFjdCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkID0gY29udGFjdE1lUmVxdWVzdCA7XHJcbiAgICB9XHJcblxyXG4gICAgY2FsbEFwaVRvVXBkYXRlKClcclxuICAgIHtcclxuXHJcbiAgICAgICBcclxuICAgICAgICBsZXQgUG1Kb2JMaXN0Rm9yVXBkYXRlID0ge30gYXMgYW55O1xyXG4gICAgICAgIFBtSm9iTGlzdEZvclVwZGF0ZS5wbUpvYkxpc3QgPSB0aGlzLnBtSm9iTGlzdDtcclxuICAgICAgICBQbUpvYkxpc3RGb3JVcGRhdGUuZW1haWxUeXBlcyA9IHRoaXMuZW1haWxUeXBlcztcclxuICAgICAgICB0aGlzLmVtaXRGb3JVcGRhdGUuZW1pdChQbUpvYkxpc3RGb3JVcGRhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRyYW5zZm9ybVN0YXR1cyhzdGF0dXM6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgc3dpdGNoIChzdGF0dXMpIHtcclxuICBcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5ORVcgOiByZXR1cm4gdGhpcy5zdGF0dXMubmV3O1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLkFDQ0VQVEVEIDogcmV0dXJuIHRoaXMuc3RhdHVzLmFjY2VwdGVkO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLkNMT1NFRCA6IHJldHVybiB0aGlzLnN0YXR1cy5jbG9zZWQ7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuTGF0ZSA6IHJldHVybiB0aGlzLnN0YXR1cy5sYXRlO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLk9QRU4gOiByZXR1cm4gdGhpcy5zdGF0dXMub3BlbjtcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5XQUlUSU5HIDogcmV0dXJuIHRoaXMuc3RhdHVzLndhaXRpbmc7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuRE9ORSA6IHJldHVybiB0aGlzLnN0YXR1cy5kb25lO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLlZBTElEQVRFRCA6IHJldHVybiB0aGlzLnN0YXR1cy52YWxpZGF0ZWQ7XHJcbiAgICAgICAgICAgIGRlZmF1bHQgOiByZXR1cm4gXCJFcnJldXJcIjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U3RhdHVzVG9vbHRpcChzdGF0dXM6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgc3dpdGNoIChzdGF0dXMpIHtcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5BQ0NFUFRFRCA6IHJldHVybiB0aGlzLnN0YXR1cy5hY2NlcHRlZFRvb2x0aXA7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuTkVXIDogcmV0dXJuIHRoaXMuc3RhdHVzLm5ld1Rvb2x0aXA7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuQ0xPU0VEIDogcmV0dXJuIHRoaXMuc3RhdHVzLmNsb3NlZFRvb2x0aXA7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuTGF0ZSA6IHJldHVybiB0aGlzLnN0YXR1cy5sYXRlVG9vbHRpcDtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuT1BFTiA6IHJldHVybiB0aGlzLnN0YXR1cy5vcGVuVG9vbHRpcDtcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5XQUlUSU5HIDogcmV0dXJuIHRoaXMuc3RhdHVzLndhaXRpbmdUb29sdGlwO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLkRPTkUgOiByZXR1cm4gdGhpcy5zdGF0dXMuZG9uZVRvb2x0aXA7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuVkFMSURBVEVEIDogcmV0dXJuIHRoaXMuc3RhdHVzLnZhbGlkYXRlZFRvb2x0aXA7XHJcbiAgICAgICAgICAgIGRlZmF1bHQgOiByZXR1cm4gXCJFcnJldXJcIjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG59XHJcbiIsIjxwLXRhYmxlICNkdCBbdmFsdWVdPVwibWFpbnRlbmFuY2VMaXN0XCIgcmVzcG9uc2l2ZUxheW91dD1cInN0YWNrXCIgW3Jvd3NdPVwiMTBcIiBbc2hvd0N1cnJlbnRQYWdlUmVwb3J0XT1cInRydWVcIiBbcm93c1BlclBhZ2VPcHRpb25zXT1cIls1LDEwLDI1LDUwXVwiIFtwYWdpbmF0b3JdPVwidHJ1ZVwiIFtnbG9iYWxGaWx0ZXJGaWVsZHNdPVwiWydzeXN0ZW1JZCcsJ3BtSm9iLmNhc2VJZCcsJ3N5c3RlbU5hbWUnLCdwbUpvYi53b3Jrb3JkZXJOdW1iZXInLCdwbUpvYi5zdGFydERhdGVUaW1lJywncG1Kb2IuZW5kRGF0ZVRpbWUnLCdwbUpvYi5jYXNlX3R5cGUnLCdwbUpvYi5jYXNlX2NhdGVnb3J5Jywnc3RhdHVzJ11cIlxyXG4gICAgW3Jvd0hvdmVyXT1cInRydWVcIiBkYXRhS2V5PVwiaWRcIiBbY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZV09XCJnbG9iYWx0cmFuc2xhdGUuY291bnRQYWdlc1wiIFtmaXJzdF09XCJmaXJzdFwiPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNhcHRpb25cIj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtaW5wdXQtaWNvbi1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXNlYXJjaFwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBwSW5wdXRUZXh0IHR5cGU9XCJ0ZXh0XCIgKGlucHV0KT1cImFwcGx5RmlsdGVyR2xvYmFsKCRldmVudCwgJ2NvbnRhaW5zJylcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJnbG9iYWx0cmFuc2xhdGUuc2VhcmNoXCIgLz5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIiBsZXQtY29sdW1ucz5cclxuICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgIDwhLS0gPHRoIHBTb3J0YWJsZUNvbHVtbj1cImNhc2VJZFwiPkNhc2UgSWQgPHAtc29ydEljb24gZmllbGQ9XCJjYXNlSWRcIj48L3Atc29ydEljb24+IC0tPlxyXG4gICAgICAgICAgICA8dGggcFNvcnRhYmxlQ29sdW1uPVwic3lzdGVtTmFtZVwiPnt7dHJhbnNsYXRlLm1haW50ZW5hbmNlTGlzdC5zeXN0ZW19fVxyXG4gICAgICAgICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJzeXN0ZW1OYW1lXCI+PC9wLXNvcnRJY29uPlxyXG4gICAgICAgICAgICAgICAgPHRoIHBTb3J0YWJsZUNvbHVtbj1cInJvb21cIj57e3RyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3Qucm9vbX19XHJcbiAgICAgICAgICAgICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJyb29tXCI+PC9wLXNvcnRJY29uPlxyXG4gICAgICAgICAgICAgICAgPHRoIHBTb3J0YWJsZUNvbHVtbj1cInN5c3RlbUlkXCI+U3lzdGVtIElkXHJcbiAgICAgICAgICAgICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJzeXN0ZW1JZFwiPjwvcC1zb3J0SWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8dGggcFNvcnRhYmxlQ29sdW1uPVwid29ya29yZGVyTnVtYmVyXCI+e3t0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0LndvcmtPcmRlcn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwid29ya29yZGVyTnVtYmVyXCI+PC9wLXNvcnRJY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggcFNvcnRhYmxlQ29sdW1uPVwic3RhcnREYXRlVGltZVwiPnt7dHJhbnNsYXRlLm1haW50ZW5hbmNlTGlzdC5zdGFydERhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJzdGFydERhdGVUaW1lXCI+PC9wLXNvcnRJY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBwU29ydGFibGVDb2x1bW49XCJjYXNlX3R5cGVcIj57e3RyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3QudHlwZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwiY2FzZV90eXBlXCI+PC9wLXNvcnRJY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHBTb3J0YWJsZUNvbHVtbj1cInN0YXR1c1wiPnt7dHJhbnNsYXRlLm1haW50ZW5hbmNlTGlzdC5zdGF0dXN9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwic3RhdHVzXCI+PC9wLXNvcnRJY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBwU29ydGFibGVDb2x1bW49XCJzdGF0dXNcIiA+e3t0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0Lk5ickxpbmtzfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJzdGF0dXNcIj48L3Atc29ydEljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4gQWN0aW9uPC90aD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LXByb2R1Y3QgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCI+XHJcbiAgICAgICAgPHRyPiAgIFxyXG4gICAgICAgICAgICA8dGQ+e3twcm9kdWN0LnN5c3RlbU5hbWUgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+e3twcm9kdWN0LnJvb20gfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+e3twcm9kdWN0LnN5c3RlbUlkIH19PC90ZD5cclxuICAgICAgICAgICAgPHRkPnt7cHJvZHVjdC5wbUpvYi53b3Jrb3JkZXJOdW1iZXIgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+e3twcm9kdWN0LnBtSm9iLnN0YXJ0RGF0ZVRpbWUgfCBkYXRlOiAnZGQgTU1NIHl5eXkgJyB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD57e3Byb2R1Y3QucG1Kb2IuY2FzZVR5cGUgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+PHNwYW4gW2NsYXNzXT1cIidwcm9kdWN0LXN0YXR1cyBzdGF0dXMtJyArIHByb2R1Y3Quc3RhdHVzXCIgW3BUb29sdGlwXT1cImdldFN0YXR1c1Rvb2x0aXAocHJvZHVjdC5zdGF0dXMpXCI+e3t0cmFuc2Zvcm1TdGF0dXMocHJvZHVjdC5zdGF0dXMpICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkICpuZ0lmPVwicHJvZHVjdC5wbUpvYi5ncm91cExpc3QgIT09IG51bGwgXCIgKGNsaWNrKT1cInNob3dMaW5rcyhwcm9kdWN0KVwiPiA8c3BhbiBjbGFzcz1cImNpcmNsZVwiPnt7cHJvZHVjdC5wbUpvYi5ncm91cExpc3QubGVuZ3RoIH19PC9zcGFuPiA8aSBjbGFzcz1cInBpIHBpLWxpbmtcIiBzdHlsZT1cImZvbnQtc2l6ZTogMXJlbVwiPjwvaT4gPC90ZD5cclxuICAgICAgICAgICAgPHRkICpuZ0lmPVwicHJvZHVjdC5wbUpvYi5ncm91cExpc3QgPT09bnVsbFwiIChjbGljayk9XCJzaG93TGlua3MocHJvZHVjdClcIj4gPHNwYW4gY2xhc3M9XCJjaXJjbGVsaW5rZWRcIj57e3Byb2R1Y3QucG1Kb2IuZ3JvdXBMaXN0Lmxlbmd0aCB9fTwvc3Bhbj4gPGkgY2xhc3M9XCJwaSBwaS1saW5rXCIgc3R5bGU9XCJmb250LXNpemU6IDFyZW1cIj48L2k+IDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIiBsYWJlbD1cIlwiIGljb249XCJwaSBwaS1jYWxlbmRhclwiIGNsYXNzPVwicC1idXR0b24tcm91bmRlZFwiICNhY3R1YWxUYXJnZXQgKGNsaWNrKT1cInNlbGVjdEVsZW1lbnQocHJvZHVjdClcIiAoY2xpY2spPVwib3AudG9nZ2xlKCRldmVudClcIiBbZGlzYWJsZWRdPVwiKChwcm9kdWN0LnN0YXR1cyA9PT0nbGF0ZScgIHx8IHByb2R1Y3Quc3RhdHVzID09PSdhY2NlcHRlZCcpICYmICFpc0FscmVhZHlTY2hlZHVsZWQpIHx8IHByb2R1Y3Quc3RhdHVzID09PSd3YWl0aW5nJ1wiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInN1bW1hcnlcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicC1kLWZsZXggcC1haS1jZW50ZXIgcC1qYy1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgIHt7Z2xvYmFsdHJhbnNsYXRlLmNvdW50fX0ge3ttYWludGVuYW5jZUxpc3QgPyBtYWludGVuYW5jZUxpc3QubGVuZ3RoIDogMCB9fSB7e2dsb2JhbHRyYW5zbGF0ZS5lbGVtZW50c319LlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuPC9wLXRhYmxlPlxyXG5cclxuPHAtdG9hc3QgcG9zaXRpb249XCJ0b3AtY2VudGVyXCI+PC9wLXRvYXN0PlxyXG48cC1vdmVybGF5UGFuZWwgI29wIFtkaXNtaXNzYWJsZV09XCJ0cnVlXCIgW3Nob3dDbG9zZUljb25dPVwiZmFsc2VcIiBbc2hvd1RyYW5zaXRpb25PcHRpb25zXT1cIicwbXMnXCIgW2hpZGVUcmFuc2l0aW9uT3B0aW9uc109XCInMG1zJ1wiPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPGJ1dHRvbiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiICpuZ0lmPVwiIWlzQWxyZWFkeVNjaGVkdWxlZFwiIGljb249XCJwaSBwaS10aHVtYnMtdXBcIiAoY2xpY2spPVwiY29uZmlybURpYWxvZygpXCIgW2xhYmVsXT1cInRyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3QuY29uZmlybURhdGVcIiBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tcmFpc2VkXCIgcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8aHIgKm5nSWY9XCIhaXNBbHJlYWR5U2NoZWR1bGVkXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiICpuZ0lmPVwiIWlzQWxyZWFkeVNjaGVkdWxlZCAmJiAoYWx0ZXJuYXRpdmVEYXRlc0xpc3QgIT09IG51bGwpIFwiIGljb249XCJwaSBwaS1jYWxlbmRhci1wbHVzXCIgKGNsaWNrKT1cInByb3Bvc2VBbm90aGVyRGF0ZSgpXCIgW2xhYmVsXT1cInRyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3QuY2hvb3NlQW5vdGhlckRhdGVcIiBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tcmFpc2VkXCIgcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIj48L2J1dHRvbj5cclxuICAgICAgICA8aHIgKm5nSWY9XCIhaXNBbHJlYWR5U2NoZWR1bGVkICYmIChhbHRlcm5hdGl2ZURhdGVzTGlzdCE9PW51bGwpIFwiPlxyXG4gICAgICAgIDxidXR0b24gc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiBpY29uPVwicGkgcGktcGhvbmVcIiAoY2xpY2spPVwiY29udGFjdFN1cHBvcnQoZmFsc2UpXCIgW2xhYmVsXT1cInRyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3QuY29udGFjdFN1cHBvclwiIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1yYWlzZWRcIiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDxociAqbmdJZj1cImlzV2l0aExpbmtzXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiIGljb249XCJwaSBwaS1saW5rXCIgKm5nSWY9XCJpc1dpdGhMaW5rc1wiIChjbGljayk9XCJzaG93TGlua3MoKVwiIFtsYWJlbF09XCJ0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0LnNob3dMaW5rc1wiIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1yYWlzZWRcIiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDxociAqbmdJZj1cImlzQWxyZWFkeVNjaGVkdWxlZCAmJiBwbVNlbGVjdGVkU3RhdHVzID09PSd2YWxpZGF0ZWQnXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiICpuZ0lmPVwiaXNBbHJlYWR5U2NoZWR1bGVkICYmIHBtU2VsZWN0ZWRTdGF0dXMgPT09J3ZhbGlkYXRlZCdcIiBpY29uPVwicGkgcGktcGVuY2lsXCIgKGNsaWNrKT1cImVkaXRQbSgpXCIgW2xhYmVsXT1cInRyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3QuY2FuY2VsXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXJhaXNlZFwiIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCI+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L3Atb3ZlcmxheVBhbmVsPlxyXG5cclxuPGRpdiAqbmdJZj1cImRpc3BsYXljb250YWN0U3VwcG9ydCBcIiA+XHJcbiAgICA8YXBwLWNvbnRhY3Qtc3VwcG9ydCBbcmVhc29uQ29udGFjdF09XCJyZWFzb25Db250YWN0XCIgKGNsb3NlQ29udGFjdFN1cHBvcnQpPVwiY2xvc2VDb250YWN0U3VwcG9ydCgkZXZlbnQpXCIgKHNlbmREZXRhaWxlZFBtKT1cInNlbmRDb250YWN0TWVGb3JtKCRldmVudClcIiBbZGV0YWlsZWRQbUpvYl0gPVwibWFpbnRlbmFuY2VTZWxlY3RlZFwiIFtnbG9iYWx0cmFuc2xhdGVdPVwiZ2xvYmFsdHJhbnNsYXRlXCIgIFtyZWFzb25zXT1cInJlYXNvbnNcIiBbdHJhbnNsYXRlXT1cInRyYW5zbGF0ZS5jb250YWN0U3VwcG9ydFwiIFtkaXNwbGF5Y29udGFjdFN1cHBvcnRdPVwiZGlzcGxheWNvbnRhY3RTdXBwb3J0XCIgW3Nob3dEYXRlXT1cInNob3dEYXRlXCIgPjwvYXBwLWNvbnRhY3Qtc3VwcG9ydD5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJkaXNwbGF5Q29uZmlybURpYWxvZ1wiPlxyXG4gICAgPGFwcC1jb25maXJtLWRpYWxvZyAgW2RldGFpbGVkUG1Kb2JMaW5rZWRMaXN0XT1cImRldGFpbGVkUG1Kb2JMaW5rZWRMaXN0XCIgICBbaXNQcm9wb3NlZERhdGVdPVwiaXNQcm9wb3NlZERhdGVcIiBbZ2xvYmFsdHJhbnNsYXRlXT1cImdsb2JhbHRyYW5zbGF0ZVwiIFt0cmFuc2xhdGVdPVwidHJhbnNsYXRlLmNvbmZpcm1EaWFsb2dcIlxyXG4gICAgICAgIFtzdGFydERhdGVUaW1lXT1cInN0YXJ0RGF0ZVRpbWVcIiBbZW5kRGF0ZVRpbWVdPVwiZW5kRGF0ZVRpbWVcIiBbZGlzcGxheUNvbmZpcm1EaWFsb2ddPVwiZGlzcGxheUNvbmZpcm1EaWFsb2dcIiAoY2xvc2VDb25maXJtRGlhbG9nKT1cImNsb3NlQ29uZmlybURpYWxvZygkZXZlbnQpXCI+XHJcbiAgICA8L2FwcC1jb25maXJtLWRpYWxvZz5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJkaXNwbGF5Q29uZmlybURpYWxvZ0NvbnRhY3RcIj5cclxuICAgIDxhcHAtY29uZmlybS1kaWFsb2ctY29udGFjdCAgW2RldGFpbGVkUG1Kb2JMaW5rZWRMaXN0XT1cImRldGFpbGVkUG1Kb2JMaW5rZWRMaXN0XCIgICAgW2dsb2JhbHRyYW5zbGF0ZV09XCJnbG9iYWx0cmFuc2xhdGVcIiBbdHJhbnNsYXRlXT1cInRyYW5zbGF0ZS5jb25maXJtRGlhbG9nQ29udGFjdFwiXHJcbiAgICAgICAgW3N0YXJ0RGF0ZVRpbWVdPVwic3RhcnREYXRlVGltZVwiIFtlbmREYXRlVGltZV09XCJlbmREYXRlVGltZVwiIFtkaXNwbGF5Q29uZmlybURpYWxvZ0NvbnRhY3RdPVwiZGlzcGxheUNvbmZpcm1EaWFsb2dDb250YWN0XCIgKGNsb3NlQ29uZmlybURpYWxvZ0NvbnRhY3QpPVwiY2xvc2VDb25maXJtRGlhbG9nQ29udGFjdCgkZXZlbnQpXCI+XHJcbiAgICA8L2FwcC1jb25maXJtLWRpYWxvZy1jb250YWN0ID5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJkaXNwbGF5Q29uZmlybWVkRGF0ZUluZm9cIj5cclxuICAgIDxhcHAtY29uZmlybWVkLWRhdGUtaW5mb3JtYXRpb24gW21vcmVEYXRlc109XCJtb3JlRGF0ZXNcIiBbZ2xvYmFsdHJhbnNsYXRlXT1cImdsb2JhbHRyYW5zbGF0ZVwiIFt0cmFuc2xhdGVdPVwidHJhbnNsYXRlLmNvbmZpcm1EYXRlSW5mb3JtYXRpb25cIiBbc3RhcnREYXRlVGltZV09XCJzdGFydERhdGVUaW1lXCIgW2VuZERhdGVUaW1lXT1cImVuZERhdGVUaW1lXCIgW2Rpc3BsYXlDb25maXJtZWREYXRlSW5mb109XCJkaXNwbGF5Q29uZmlybWVkRGF0ZUluZm9cIiAoY2xvc2VDb25maXJtZWREYXRlSW5mbyk9XCJjbG9zZUNvbmZpcm1lZERhdGVJbmZvKClcIj48L2FwcC1jb25maXJtZWQtZGF0ZS1pbmZvcm1hdGlvbj5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJkaXNwbGF5QW5vdGhlckRhdGUgJiYgYWx0ZXJuYXRpdmVEYXRlc0xpc3RcIj5cclxuICAgIDxhcHAtY2hvb3NlLWFub3RoZXItZGF0ZSBbZ2xvYmFsdHJhbnNsYXRlXT1cImdsb2JhbHRyYW5zbGF0ZVwiIFt0cmFuc2xhdGVdPVwidHJhbnNsYXRlLmNob29zZUFub3RoZXJEYXRlXCIgW2FsdGVybmF0aXZlRGF0ZXNMaXN0XT1cImFsdGVybmF0aXZlRGF0ZXNMaXN0XCIgW2Rpc3BsYXlBbm90aGVyRGF0ZV09XCJkaXNwbGF5QW5vdGhlckRhdGVcIiAoY2xvc2VBbm90aGVyRGF0ZSk9XCJjbG9zZUFub3RoZXJEYXRlKCRldmVudClcIiAoYWNjZXB0RGF0ZSk9XCJhY2NlcHREYXRlKCRldmVudClcIj5cclxuICAgIDwvYXBwLWNob29zZS1hbm90aGVyLWRhdGU+XHJcbjwvZGl2PlxyXG48ZGl2ICpuZ0lmPVwiZGlzcGxheVNob3dMaW5rcyAmJiBzZWxlY3RlZFdvcmtvcmRlcklkXCI+XHJcbiAgICA8YXBwLXNob3ctbGlua3MgW3N0YXR1c109XCJzdGF0dXNcIiBbc2VsZWN0ZWRXb3Jrb3JkZXJJZF09XCJzZWxlY3RlZFdvcmtvcmRlcklkXCIgW3RyYW5zbGF0ZV09XCJ0cmFuc2xhdGVcIiBbZ2xvYmFsdHJhbnNsYXRlXT1cImdsb2JhbHRyYW5zbGF0ZVwiIFtkaXNwbGF5U2hvd0xpbmtzXT1cImRpc3BsYXlTaG93TGlua3NcIiAoY2xvc2VTaG93TGlua3MpPVwiY2xvc2VTaG93TGlua3MoKVwiIFtkZXRhaWxlZFBtSm9iTGlua2VkTGlzdF09XCJkZXRhaWxlZFBtSm9iTGlua2VkTGlzdFwiPjwvYXBwLXNob3ctbGlua3M+XHJcbjwvZGl2PlxyXG5cclxuXHJcbiJdfQ==
358
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbnRlbmFuY2UtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hd2YtdGVzdC1saWIvc3JjL2xpYi9zaGFyZWQvbWFpbnRlbmFuY2UtbGlzdC9tYWludGVuYW5jZS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F3Zi10ZXN0LWxpYi9zcmMvbGliL3NoYXJlZC9tYWludGVuYW5jZS1saXN0L21haW50ZW5hbmNlLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBR1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUtsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBU3pELE1BQU0sT0FBTyx3QkFBd0I7SUEwQ2pDLFlBQ1ksY0FBOEI7UUFBOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBckNqQyxvQkFBZSxHQUFvQixFQUFFLENBQUM7UUFDdEMsZ0NBQTJCLEdBQW9CLEVBQUUsQ0FBQztRQUNsRCxjQUFTLEdBQW9CLEVBQUUsQ0FBQztRQUVoQyw2QkFBd0IsR0FBQyxLQUFLLENBQUM7UUFFOUIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3hD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LEtBQUs7Z0JBQ0ksYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyx1QkFBdUI7c0JBQWhDLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNFLE1BQU07c0JBQWQsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENvbXBvbmVudCxcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIElucHV0LFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgT3V0cHV0LFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgT25DaGFuZ2VzLFxyXG4gICAgU2ltcGxlQ2hhbmdlc1xyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlLCBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBEZXRhaWxlZFBtSm9iIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2RldGFpbGVkUG1Kb2IubW9kZWwnO1xyXG5pbXBvcnQgeyBBbHRlcm5hdGl2ZURhdGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvYWx0ZXJuYXRpdmVEYXRlLm1vZGVsJztcclxuaW1wb3J0IHsgRW1haWxUeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VtYWlsVHlwZSc7XHJcbmltcG9ydCB7IEV2ZW50U3RhdHVzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2V2ZW50U3RhdHVzJztcclxuaW1wb3J0IHsgUG1Kb2IgfSBmcm9tICcuLi8uLi9tb2RlbHMvcG1Kb2IubW9kZWwnO1xyXG5pbXBvcnQgeyBQTUdyb3VwZWRKb2IgfSBmcm9tICcuLi8uLi9tb2RlbHMvcE1Hcm91cGVkSm9iLm1vZGVsJztcclxuaW1wb3J0IHsgUG1Kb2JTdGF0dXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvcG1Kb2JTdGF0dXMnO1xyXG5pbXBvcnQgeyBSZWFzb25Db250YWN0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3JlYXNvbkNvbnRhY3QnO1xyXG5pbXBvcnQgeyBTdGluZ0Jvb2xlYW4gfSBmcm9tICcuLi8uLi9tb2RlbHMvc3RpbmdCb29sZWFuJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYXdmLW1haW50ZW5hbmNlLWxpc3QnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL21haW50ZW5hbmNlLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vbWFpbnRlbmFuY2UtbGlzdC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbTWVzc2FnZVNlcnZpY2UsIENvbmZpcm1hdGlvblNlcnZpY2VdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFpbnRlbmFuY2VMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gICAgQFZpZXdDaGlsZCgnZHQnKSBkdDogVGFibGUgfCB1bmRlZmluZWQ7XHJcbiAgICBAVmlld0NoaWxkKCdvcCcpIG9wOiBhbnkgfCB1bmRlZmluZWQ7XHJcbiAgICBASW5wdXQoKSB0cmFuc2xhdGU6IGFueTtcclxuICAgIEBJbnB1dCgpIHJlYXNvbnM6IGFueTtcclxuICAgIEBJbnB1dCgpIGdsb2JhbHRyYW5zbGF0ZTogYW55O1xyXG4gICAgQElucHV0KCkgbWFpbnRlbmFuY2VMaXN0OiBEZXRhaWxlZFBtSm9iW10gPSBbXTtcclxuICAgIEBJbnB1dCgpIG1haW50ZW5hbmNlTGlzdE5vdERpc3BsYXllZDogRGV0YWlsZWRQbUpvYltdID0gW107XHJcbiAgICBASW5wdXQoKSBwbUpvYkxpc3Q6IERldGFpbGVkUG1Kb2JbXSA9IFtdO1xyXG4gICAgQElucHV0KCkgaXNBbHJlYWR5U2NoZWR1bGVkITogQm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGRpc3BsYXlDb25maXJtZWREYXRlSW5mbz1mYWxzZTtcclxuICAgIEBJbnB1dCgpIGFsdGVybmF0aXZlRGF0ZXNMaXN0ITogYW55IDtcclxuICAgIEBPdXRwdXQoKSBlbWl0Rm9yVXBkYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgZW1pdEZvckFsdGVybmF0aXZlRGF0ZXMgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBzZW5kQ29udGFjdE1lRW1haWwgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBJbnB1dCgpIHN0YXR1czogYW55O1xyXG4gICBcclxuICAgIEBPdXRwdXQoKSBzZW5kRm9ybTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBtb3JlRGF0ZXMhOmJvb2xlYW47XHJcbiAgICBkZXRhaWxlZFBtSm9iTGlua2VkTGlzdCA6IERldGFpbGVkUG1Kb2JbXSA9IFtdO1xyXG4gICAgdXBkYXRlUG1TdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XHJcbiAgICBhbHRlcm5hdGl2ZURhdGVzU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xyXG4gICAgc2hvd0RhdGUhOiBib29sZWFuO1xyXG4gICAgbWFpbnRlbmFuY2VTZWxlY3RlZCE6IERldGFpbGVkUG1Kb2I7XHJcbiAgICBzdGFydERhdGVUaW1lITogYW55O1xyXG4gICAgZW5kRGF0ZVRpbWUhOiBhbnk7XHJcbiAgICBzZWxlY3RlZFdvcmtvcmRlcklkITogYW55O1xyXG4gICAgYWx0ZXJuYXRpdmVEYXRlITogQWx0ZXJuYXRpdmVEYXRlIDtcclxuICAgIGFsdGVybmF0aXZlRGF0ZXNTZWxlY3RlZDogQWx0ZXJuYXRpdmVEYXRlW10gPSBbXTtcclxuICAgIGRpc3BsYXljb250YWN0U3VwcG9ydCA9IGZhbHNlO1xyXG4gICAgZGlzcGxheUNvbmZpcm1EaWFsb2cgPSBmYWxzZTtcclxuICAgIGRpc3BsYXlDb25maXJtRGlhbG9nQ29udGFjdCA9IGZhbHNlO1xyXG4gICAgZGlzcGxheVNob3dMaW5rcyAgPSBmYWxzZTtcclxuICAgIGRpc3BsYXlBbm90aGVyRGF0ZSA9IGZhbHNlO1xyXG4gICAgaXNXaXRoTGlua3MgPSBmYWxzZTtcclxuICAgIGlzUHJvcG9zZWREYXRlID0gdHJ1ZTtcclxuICAgIHBtU2VsZWN0ZWRTdGF0dXMhOnN0cmluZyA7XHJcbiAgICBlbWFpbFR5cGVzITpzdHJpbmdbXTsgXHJcbiAgICBhbHJlYWR5U2NoZWR1bGVkTXNnICE6Ym9vbGVhbjtcclxuICAgIHJlYXNvbkNvbnRhY3Q9XCJcIjtcclxuICAgIGNvbnRhY3RNZVJlcXVlc3QhOkRldGFpbGVkUG1Kb2IgO1xyXG4gICAgZmlyc3QgPSAwO1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2VcclxuICAgICkge31cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZpcnN0ID0gMDtcclxuICAgICAgICBjb25zb2xlLmxvZyhcImhlbGxvXCIpXHJcblxyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnVwZGF0ZVBtU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUG1TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuYWx0ZXJuYXRpdmVEYXRlc1N1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLmFsdGVybmF0aXZlRGF0ZXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICBcclxuICAgIH1cclxuXHJcbiAgICBhcHBseUZpbHRlckdsb2JhbCgkZXZlbnQ6IGFueSwgc3RyaW5nVmFsOiBhbnkpIHtcclxuICAgICAgICB0aGlzLmR0Py5maWx0ZXJHbG9iYWwoXHJcbiAgICAgICAgICAgICgkZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlLFxyXG4gICAgICAgICAgICBzdHJpbmdWYWxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIFxyXG4gICAgc2VsZWN0RWxlbWVudChlbGVtZW50OiBEZXRhaWxlZFBtSm9iKSB7XHJcbiAgICAgICAgdGhpcy5hbHRlcm5hdGl2ZURhdGVzTGlzdCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5lbWFpbFR5cGVzID1bXTtcclxuICAgICAgICBpZihlbGVtZW50KVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5wbVNlbGVjdGVkU3RhdHVzID0gZWxlbWVudC5zdGF0dXMgO1xyXG4gICAgICAgIH1cclxuICAgICAgIFxyXG4gICAgICAgIGlmKGVsZW1lbnQucG1Kb2IuZ3JvdXBMaXN0KVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5pc1dpdGhMaW5rcyA9IGVsZW1lbnQucG1Kb2IuZ3JvdXBMaXN0Py5sZW5ndGggPiAwID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFdvcmtvcmRlcklkID0gZWxlbWVudC5wbUpvYi53b3Jrb3JkZXJOdW1iZXI7XHJcbiAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkID0gZWxlbWVudDtcclxuICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQuV29ya29yZGVyTnVtYmVyU2VsZWN0ZWQgPSB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2Iud29ya29yZGVySWQgO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuaXNBbHJlYWR5U2NoZWR1bGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0QWx0ZXJuYXRpdmVEYXRlcyhlbGVtZW50LnBtSm9iKTsgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc3RhcnREYXRlVGltZSA9IHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5zdGFydERhdGVUaW1lO1xyXG4gICAgICAgIHRoaXMuZW5kRGF0ZVRpbWUgPSB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuZW5kRGF0ZVRpbWU7XHJcbiAgICAgICAgdGhpcy5nZXRMaW5rZWRQbUpvYigpO1xyXG4gICAgfVxyXG4gICAgZ2V0QWx0ZXJuYXRpdmVEYXRlcyhwbUpvYiA6IFBtSm9iICkgIHtcclxuICAgICAgICB0aGlzLmVtaXRGb3JBbHRlcm5hdGl2ZURhdGVzLmVtaXQocG1Kb2IpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldExpbmtlZFBtSm9iKClcclxuICAgIHtcclxuICAgICAgICB0aGlzLmRldGFpbGVkUG1Kb2JMaW5rZWRMaXN0ID1bXTtcclxuICAgICAgICBpZih0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuZ3JvdXBMaXN0KVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmdyb3VwTGlzdC5mb3JFYWNoKChsaW5rZWQgOiBQTUdyb3VwZWRKb2IgICkgID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLm1haW50ZW5hbmNlTGlzdC5mb3JFYWNoKChpdGVtIDpEZXRhaWxlZFBtSm9iICApICA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYobGlua2VkLndvcmtvcmRlcklkID09PSBpdGVtLnBtSm9iLndvcmtvcmRlcklkKVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXRhaWxlZFBtSm9iTGlua2VkTGlzdC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGlmIHRoZSBsaW5rZWQgUE0gaW4gdGhlIG90aGVyIG1haW50ZW5hbmNlIGxpc3Qgbm90IHNlbGVjdGVkXHJcbiAgICAgICAgaWYodGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmdyb3VwTGlzdCAmJiAodGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmdyb3VwTGlzdC5sZW5ndGggIT09IHRoaXMuZGV0YWlsZWRQbUpvYkxpbmtlZExpc3QubGVuZ3RoKSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5ncm91cExpc3QuZm9yRWFjaCgobGlua2VkIDogUE1Hcm91cGVkSm9iICApICA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5tYWludGVuYW5jZUxpc3ROb3REaXNwbGF5ZWQuZm9yRWFjaCgoaXRlbSA6RGV0YWlsZWRQbUpvYiAgKSAgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udG9VcGRhdGUgPSBmYWxzZSA7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYobGlua2VkLndvcmtvcmRlcklkID09PSBpdGVtLnBtSm9iLndvcmtvcmRlcklkKVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXRhaWxlZFBtSm9iTGlua2VkTGlzdC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICBcclxuICAgIH1cclxuXHJcbiAgICBjb25maXJtRGlhbG9nKCkge1xyXG4gICAgICAgIHRoaXMuaXNQcm9wb3NlZERhdGUgPSB0cnVlIDtcclxuICAgICAgICB0aGlzLm9wLmhpZGUoKTtcclxuICAgICAgICB0aGlzLmRpc3BsYXlDb25maXJtRGlhbG9nID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIFxyXG5cclxuICAgIGNsb3NlQ29uZmlybURpYWxvZyhjb25maXJtOiBhbnkpIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXlDb25maXJtRGlhbG9nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLmZ1dHVyZVN0YXR1cyA9IFBtSm9iU3RhdHVzLkFDQ0VQVEVEIDtcclxuICAgICAgICBpZiAoY29uZmlybSkge1xyXG4gICAgICAgICAgICBpZighdGhpcy5pc1Byb3Bvc2VkRGF0ZSlcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQWx0ZXJuYXRpdmVEYXRlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB7ICBcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlUHJvcG9zZWREYXRlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5lbWFpbFR5cGVzLnB1c2goRW1haWxUeXBlLkFjY2VwdGVkX0NTQykgO1xyXG4gICAgICAgICAgICB0aGlzLmVtYWlsVHlwZXMucHVzaChFbWFpbFR5cGUuQWNjZXB0ZWRfQ2xpZW50cykgO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVBtSm9iKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlQ29uZmlybURpYWxvZ0NvbnRhY3QoY29uZmlybTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29uZmlybURpYWxvZ0NvbnRhY3QgPSBmYWxzZTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAoY29uZmlybSkge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5lbWFpbFR5cGVzID0gW10gYXMgc3RyaW5nW107XHJcbiAgICAgICAgICAgIGlmKHRoaXMucmVhc29uQ29udGFjdCA9PT0gUmVhc29uQ29udGFjdC5Db250YWN0Rm9ybVBtIClcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRoaXMuZW1haWxUeXBlcy5wdXNoKEVtYWlsVHlwZS5Db250YWN0TWVfQ2xpZW50cyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVtYWlsVHlwZXMucHVzaChFbWFpbFR5cGUuQ29udGFjdE1lX0NTQyk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYodGhpcy5yZWFzb25Db250YWN0ID09PSBSZWFzb25Db250YWN0LkNhbmNlbEZvcm1QbSApXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5jdXN0b21PYmplY3Q9IHt9O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmN1c3RvbU9iamVjdC5jdXN0b21lcldhaXRpbmcgPVN0aW5nQm9vbGVhbi5ZRVMgO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLmZ1dHVyZVN0YXR1cyA9ICBQbUpvYlN0YXR1cy5XQUlUSU5HIDsgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy5lbWFpbFR5cGVzLnB1c2goRW1haWxUeXBlLkNhbmNlbFBNX0NTQyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVtYWlsVHlwZXMucHVzaChFbWFpbFR5cGUuQ2FuY2VsUE1fQ2xpZW50cyk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmN1c3RvbU9iamVjdD0ge307XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuY3VzdG9tT2JqZWN0LmN1c3RvbWVyV2FpdGluZyA9U3RpbmdCb29sZWFuLllFUztcclxuICAgICAgICAgICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5mdXR1cmVTdGF0dXMgPSAgUG1Kb2JTdGF0dXMuV0FJVElORyA7ICBcclxuICAgICAgICAgICAgICAgICB0aGlzLmVtYWlsVHlwZXMucHVzaChFbWFpbFR5cGUuU2VuZE5ld0RhdGVzX0NTQyk7XHJcbiAgICAgICAgICAgICAgICAgdGhpcy5lbWFpbFR5cGVzLnB1c2goRW1haWxUeXBlLlNlbmROZXdEYXRlc19DbGllbnRzKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgIHRoaXMudXBkYXRlTGlua2VkUE1Gb3JtQ29udGFjdCgpO1xyXG5cclxuICAgICAgICAgICAgIHRoaXMuY2xvc2VDb250YWN0U3VwcG9ydCh0cnVlKSA7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVMaW5rZWRQTUZvcm1Db250YWN0KClcclxuICAgIHtcclxuICAgICAgICB0aGlzLnBtSm9iTGlzdCA9W107XHJcbiAgICAgICAgdGhpcy5wbUpvYkxpc3QucHVzaCh0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQpO1xyXG4gICAgICAgIGlmKHRoaXMuZGV0YWlsZWRQbUpvYkxpbmtlZExpc3QubGVuZ3RoID4wKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5kZXRhaWxlZFBtSm9iTGlua2VkTGlzdC5mb3JFYWNoKChpdGVtOkRldGFpbGVkUG1Kb2IpICA9PiB7XHJcbiAgICAgICAgICAgICAgICBpdGVtLmZ1dHVyZVN0YXR1cyA9ICBpdGVtLnN0YXR1cyA7XHJcbiAgICAgICAgICAgICAgICBpdGVtLnNlbGVjdGVkRGF0ZSA9IGl0ZW0ucG1Kb2Iuc3RhcnREYXRlVGltZTtcclxuICAgICAgICAgICAgICAgIGl0ZW0uV29ya29yZGVyTnVtYmVyU2VsZWN0ZWQgPSAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLndvcmtvcmRlcklkIDtcclxuICAgICAgICAgICAgICAgICBpZih0aGlzLnJlYXNvbkNvbnRhY3QgPT09IFJlYXNvbkNvbnRhY3QuTW9yZURhdGVzRm9ybVBtICB8fHRoaXMucmVhc29uQ29udGFjdCA9PT0gUmVhc29uQ29udGFjdC5DYW5jZWxGb3JtUG0gKVxyXG4gICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnJlYXNvbiA9IHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5yZWFzb247XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5yZWFzb25Db250YWN0ID0gdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnJlYXNvbkNvbnRhY3Q7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5wbUpvYi5jdXN0b21PYmplY3Q9IHt9O1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucG1Kb2IuY3VzdG9tT2JqZWN0LmN1c3RvbWVyV2FpdGluZyA9U3RpbmdCb29sZWFuLllFUyA7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5mdXR1cmVTdGF0dXMgPSAgUG1Kb2JTdGF0dXMuV0FJVElORyA7ICBcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5wbUpvYkxpc3QucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jYWxsQXBpVG9VcGRhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBjbG9zZUNvbnRhY3RTdXBwb3J0KGV2ZW50IDphbnkpXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5Y29udGFjdFN1cHBvcnQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zaG93RGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnJlYXNvbkNvbnRhY3QgPVwiXCI7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHByb3Bvc2VBbm90aGVyRGF0ZSgpIHtcclxuICAgICAgICB0aGlzLmlzUHJvcG9zZWREYXRlID0gZmFsc2UgO1xyXG4gICAgICAgIHRoaXMub3AuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMuZGlzcGxheUFub3RoZXJEYXRlID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBjb250YWN0U3VwcG9ydChmcm9tT3RoZXJEYXRlIDogYm9vbGVhbikge1xyXG4gICAgIFxyXG5cclxuICAgICAgICB0aGlzLm9wLmhpZGUoKTtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLnJlYXNvbkNvbnRhY3QgPSBmcm9tT3RoZXJEYXRlID8gUmVhc29uQ29udGFjdC5Nb3JlRGF0ZXNGb3JtUG0gOiAgUmVhc29uQ29udGFjdC5Db250YWN0Rm9ybVBtIDtcclxuICAgICAgICB0aGlzLmRpc3BsYXljb250YWN0U3VwcG9ydCA9IHRydWU7ICBcclxuICAgIH1cclxuXHJcbiAgICBzaG93TGlua3MoZWxlbWVudD86YW55KVxyXG4gICAge1xyXG4gICAgICAgIGlmKGVsZW1lbnQpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdEVsZW1lbnQoZWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm9wLmhpZGUoKTtcclxuICAgICAgICB0aGlzLmRpc3BsYXlTaG93TGlua3MgPSB0cnVlIDtcclxuICAgIH1cclxuICAgIFxyXG4gICAgY2xvc2VTaG93TGlua3MoKVxyXG4gICAge1xyXG4gICAgICAgIHRoaXMuZGlzcGxheVNob3dMaW5rcyA9IGZhbHNlIDtcclxuICAgIH1cclxuXHJcbiAgICBjbG9zZUNvbmZpcm1lZERhdGVJbmZvKCkge1xyXG4gICAgICAgIHRoaXMuZGlzcGxheUNvbmZpcm1lZERhdGVJbmZvID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgYWNjZXB0RGF0ZShhbHRlcm5hdGl2ZURhdGVzOiBBbHRlcm5hdGl2ZURhdGVbXSlcclxuICAgIHtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLmRpc3BsYXlDb25maXJtRGlhbG9nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFsdGVybmF0aXZlRGF0ZXNTZWxlY3RlZCA9IGFsdGVybmF0aXZlRGF0ZXM7XHJcbiAgICAgICAgdGhpcy5maW5kRGF0ZXNTZWxlY3RlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbmREYXRlc1NlbGVjdGVkKClcclxuICAgIHtcclxuICAgICAgICB0aGlzLmFsdGVybmF0aXZlRGF0ZXNTZWxlY3RlZC5mb3JFYWNoKChhbHRlcm5hdGl2ZURhdGU6IEFsdGVybmF0aXZlRGF0ZSkgPT4ge1xyXG4gICAgICAgICAgICBpZihhbHRlcm5hdGl2ZURhdGUuc2VsZWN0ZWQ9PT1cIlllc1wiKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZVRpbWUgPSBhbHRlcm5hdGl2ZURhdGUuc3RhcnREYXRlVGltZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZW5kRGF0ZVRpbWUgPSBhbHRlcm5hdGl2ZURhdGUuZW5kRGF0ZVRpbWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQuc2VsZWN0ZWREYXRlID0gYWx0ZXJuYXRpdmVEYXRlLnN0YXJ0RGF0ZVRpbWU7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjbG9zZUFub3RoZXJEYXRlKGV2ZW50OiBhbnkpIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXlBbm90aGVyRGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgIGlmKGV2ZW50PT09ZmFsc2UpXHJcbiAgICAgICAge1xyXG4gICAgICAgIHRoaXMuYWxyZWFkeVNjaGVkdWxlZE1zZyA9IGZhbHNlIDtcclxuICAgICAgICB0aGlzLm9wLmhpZGUoKTtcclxuICAgICAgICB0aGlzLmNvbnRhY3RTdXBwb3J0KHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVQbUpvYigpIHtcclxuXHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5wbUpvYkxpc3QgPVtdO1xyXG4gICAgICAgIHRoaXMucG1Kb2JMaXN0LnB1c2godGhpcy5tYWludGVuYW5jZVNlbGVjdGVkKTtcclxuICAgICAgICBpZih0aGlzLmRldGFpbGVkUG1Kb2JMaW5rZWRMaXN0Lmxlbmd0aCA+MClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuZGV0YWlsZWRQbUpvYkxpbmtlZExpc3QuZm9yRWFjaCgocE1Kb2I6RGV0YWlsZWRQbUpvYikgID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnBtSm9iTGlzdC5wdXNoKHBNSm9iKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNhbGxBcGlUb1VwZGF0ZSgpO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBlZGl0UG0oKVxyXG4gICAge1xyXG4gICAgICAgIHRoaXMuYWxyZWFkeVNjaGVkdWxlZE1zZyA9IHRydWUgO1xyXG4gICAgICAgIHRoaXMub3AuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMucmVhc29uQ29udGFjdCA9ICAgUmVhc29uQ29udGFjdC5DYW5jZWxGb3JtUG0gO1xyXG4gICAgICAgIHRoaXMucHJlcGFyZUZvclBvcHVwKCkgO1xyXG4gICAgICAgIHRoaXMuZGlzcGxheWNvbnRhY3RTdXBwb3J0ID0gdHJ1ZTtcclxuICAgICAgICBcclxuICAgIFxyXG4gICAgfVxyXG5cclxuICAgIHByZXBhcmVGb3JQb3B1cCgpXHJcbiAgICB7XHJcbiAgICAgICAgaWYodGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmN1c3RvbWVyQWNjZXB0ZWQgPT09XCJZZXNcIilcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnREYXRlVGltZSA9IHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5zdGFydERhdGVUaW1lO1xyXG4gICAgICAgICAgICB0aGlzLmVuZERhdGVUaW1lID0gdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmVuZERhdGVUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLmFsdGVybmF0aXZlRGF0ZXNTZWxlY3RlZCA9IHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5hbHRlcm5hdGl2ZURhdGVzO1xyXG4gICAgICAgICAgICB0aGlzLmZpbmREYXRlc1NlbGVjdGVkKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcblxyXG5cclxuXHJcbiAgICB1cGRhdGVQcm9wb3NlZERhdGUoKVxyXG4gICAge1xyXG4gICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5jdXN0b21lckFjY2VwdGVkID0gU3RpbmdCb29sZWFuLllFUztcclxuICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuZXZlbnRTdGF0dXMgPSBFdmVudFN0YXR1cy5BU1NJR05FREFOQztcclxuICAgICAgICB0aGlzLmRldGFpbGVkUG1Kb2JMaW5rZWRMaXN0LmZvckVhY2goKGl0ZW0gOkRldGFpbGVkUG1Kb2IgICkgID0+IHtcclxuICAgICAgICAgICAgaXRlbS5wbUpvYi5jdXN0b21lckFjY2VwdGVkID0gU3RpbmdCb29sZWFuLllFUztcclxuICAgICAgICAgICAgaXRlbS5wbUpvYi5ldmVudFN0YXR1cyA9IEV2ZW50U3RhdHVzLkFTU0lHTkVEQU5DO1xyXG4gICAgICAgICAgICBpdGVtLmZ1dHVyZVN0YXR1cyA9IFBtSm9iU3RhdHVzLkFDQ0VQVEVEIDtcclxuICAgICAgICAgICAgaXRlbS5Xb3Jrb3JkZXJOdW1iZXJTZWxlY3RlZCA9ICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2Iud29ya29yZGVySWQgO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUFsdGVybmF0aXZlRGF0ZSgpXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5maW5kRGF0ZXNTZWxlY3RlZCgpO1xyXG4gICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5hbHRlcm5hdGl2ZURhdGVzID0gIHRoaXMuYWx0ZXJuYXRpdmVEYXRlc1NlbGVjdGVkIDtcclxuICAgICAgICB0aGlzLmRldGFpbGVkUG1Kb2JMaW5rZWRMaXN0LmZvckVhY2goKGl0ZW0gOkRldGFpbGVkUG1Kb2IgICkgID0+IHtcclxuICAgICAgICAgICAgaXRlbS5wbUpvYi5hbHRlcm5hdGl2ZURhdGVzID0gIHRoaXMuYWx0ZXJuYXRpdmVEYXRlc1NlbGVjdGVkIDtcclxuICAgICAgICAgICAgaXRlbS5wbUpvYi5ldmVudFN0YXR1cyA9IEV2ZW50U3RhdHVzLkFTU0lHTkVEQU5DO1xyXG4gICAgICAgICAgICBpdGVtLmZ1dHVyZVN0YXR1cyA9IFBtSm9iU3RhdHVzLkFDQ0VQVEVEIDtcclxuICAgICAgICAgICAgaXRlbS5Xb3Jrb3JkZXJOdW1iZXJTZWxlY3RlZCA9ICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2Iud29ya29yZGVySWQgO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZGlzcGxheUFub3RoZXJEYXRlID0gZmFsc2U7XHJcblxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBzZW5kQ29udGFjdE1lRm9ybShjb250YWN0TWVSZXF1ZXN0OmFueSlcclxuICAgIHtcclxuICAgICAgICB0aGlzLm1vcmVEYXRlcyA9IGZhbHNlO1xyXG4gICAgICAgIGlmKCBjb250YWN0TWVSZXF1ZXN0LnJlYXNvbkNvbnRhY3QgPT09IFJlYXNvbkNvbnRhY3QuTW9yZURhdGVzRm9ybVBtIClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMubW9yZURhdGVzID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcblxyXG4gICAgICAgIHRoaXMuZGlzcGxheUNvbmZpcm1EaWFsb2dDb250YWN0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQgPSBjb250YWN0TWVSZXF1ZXN0IDtcclxuICAgIH1cclxuXHJcbiAgICBjYWxsQXBpVG9VcGRhdGUoKVxyXG4gICAge1xyXG5cclxuICAgICAgIFxyXG4gICAgICAgIGxldCBQbUpvYkxpc3RGb3JVcGRhdGUgPSB7fSBhcyBhbnk7XHJcbiAgICAgICAgUG1Kb2JMaXN0Rm9yVXBkYXRlLnBtSm9iTGlzdCA9IHRoaXMucG1Kb2JMaXN0O1xyXG4gICAgICAgIFBtSm9iTGlzdEZvclVwZGF0ZS5lbWFpbFR5cGVzID0gdGhpcy5lbWFpbFR5cGVzO1xyXG4gICAgICAgIHRoaXMuZW1pdEZvclVwZGF0ZS5lbWl0KFBtSm9iTGlzdEZvclVwZGF0ZSk7XHJcbiAgICB9XHJcbiAgICB0cmFuc2Zvcm1UeXBlKHR5cGUgOiBzdHJpbmcpIHtcclxuICAgICAgICBcclxuICAgICAgICBpZiggdHlwZSA9PVwiUGxhbm5lZCBNYWludGVuYW5jZVwiKXtcclxuICAgICAgICAgICAgcmV0dXJuIFwiTWFpbnRlbmFuY2UgcGxhbmlmacOpZVwiIDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHR5cGU7XHJcbiAgICB9XHJcbiAgICB0cmFuc2Zvcm1TdGF0dXMoc3RhdHVzOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7XHJcbiAgXHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuTkVXIDogcmV0dXJuIHRoaXMuc3RhdHVzLm5ldztcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5BQ0NFUFRFRCA6IHJldHVybiB0aGlzLnN0YXR1cy5hY2NlcHRlZDtcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5DTE9TRUQgOiByZXR1cm4gdGhpcy5zdGF0dXMuY2xvc2VkO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLkxhdGUgOiByZXR1cm4gdGhpcy5zdGF0dXMubGF0ZTtcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5PUEVOIDogcmV0dXJuIHRoaXMuc3RhdHVzLm9wZW47XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuV0FJVElORyA6IHJldHVybiB0aGlzLnN0YXR1cy53YWl0aW5nO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLkRPTkUgOiByZXR1cm4gdGhpcy5zdGF0dXMuZG9uZTtcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5WQUxJREFURUQgOiByZXR1cm4gdGhpcy5zdGF0dXMudmFsaWRhdGVkO1xyXG4gICAgICAgICAgICBkZWZhdWx0IDogcmV0dXJuIFwiRXJyZXVyXCI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldFN0YXR1c1Rvb2x0aXAoc3RhdHVzOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuQUNDRVBURUQgOiByZXR1cm4gdGhpcy5zdGF0dXMuYWNjZXB0ZWRUb29sdGlwO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLk5FVyA6IHJldHVybiB0aGlzLnN0YXR1cy5uZXdUb29sdGlwO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLkNMT1NFRCA6IHJldHVybiB0aGlzLnN0YXR1cy5jbG9zZWRUb29sdGlwO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLkxhdGUgOiByZXR1cm4gdGhpcy5zdGF0dXMubGF0ZVRvb2x0aXA7XHJcblxyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLk9QRU4gOiByZXR1cm4gdGhpcy5zdGF0dXMub3BlblRvb2x0aXA7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuV0FJVElORyA6IHJldHVybiB0aGlzLnN0YXR1cy53YWl0aW5nVG9vbHRpcDtcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5ET05FIDogcmV0dXJuIHRoaXMuc3RhdHVzLmRvbmVUb29sdGlwO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLlZBTElEQVRFRCA6IHJldHVybiB0aGlzLnN0YXR1cy52YWxpZGF0ZWRUb29sdGlwO1xyXG4gICAgICAgICAgICBkZWZhdWx0IDogcmV0dXJuIFwiRXJyZXVyXCI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxufVxyXG4iLCI8cC10YWJsZSAjZHQgW3ZhbHVlXT1cIm1haW50ZW5hbmNlTGlzdFwiIHJlc3BvbnNpdmVMYXlvdXQ9XCJzdGFja1wiIFtyb3dzXT1cIjEwXCIgW3Nob3dDdXJyZW50UGFnZVJlcG9ydF09XCJ0cnVlXCIgW3Jvd3NQZXJQYWdlT3B0aW9uc109XCJbNSwxMCwyNSw1MF1cIiBbcGFnaW5hdG9yXT1cInRydWVcIiBbZ2xvYmFsRmlsdGVyRmllbGRzXT1cIlsnc3lzdGVtSWQnLCdwbUpvYi5jYXNlSWQnLCdzeXN0ZW1OYW1lJywncG1Kb2Iud29ya29yZGVyTnVtYmVyJywncG1Kb2Iuc3RhcnREYXRlVGltZScsJ3BtSm9iLmVuZERhdGVUaW1lJywncG1Kb2IuY2FzZV90eXBlJywncG1Kb2IuY2FzZV9jYXRlZ29yeScsJ3N0YXR1cyddXCJcclxuICAgIFtyb3dIb3Zlcl09XCJ0cnVlXCIgZGF0YUtleT1cImlkXCIgW2N1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGVdPVwiZ2xvYmFsdHJhbnNsYXRlLmNvdW50UGFnZXNcIiBbZmlyc3RdPVwiZmlyc3RcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjYXB0aW9uXCI+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWlucHV0LWljb24tbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1zZWFyY2hcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgcElucHV0VGV4dCB0eXBlPVwidGV4dFwiIChpbnB1dCk9XCJhcHBseUZpbHRlckdsb2JhbCgkZXZlbnQsICdjb250YWlucycpXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZ2xvYmFsdHJhbnNsYXRlLnNlYXJjaFwiIC8+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCIgbGV0LWNvbHVtbnM+XHJcbiAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICA8IS0tIDx0aCBwU29ydGFibGVDb2x1bW49XCJjYXNlSWRcIj5DYXNlIElkIDxwLXNvcnRJY29uIGZpZWxkPVwiY2FzZUlkXCI+PC9wLXNvcnRJY29uPiAtLT5cclxuICAgICAgICAgICAgPHRoIHBTb3J0YWJsZUNvbHVtbj1cInN5c3RlbU5hbWVcIj57e3RyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3Quc3lzdGVtfX1cclxuICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwic3lzdGVtTmFtZVwiPjwvcC1zb3J0SWNvbj5cclxuICAgICAgICAgICAgICAgIDx0aCBwU29ydGFibGVDb2x1bW49XCJyb29tXCI+e3t0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0LnJvb219fVxyXG4gICAgICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwicm9vbVwiPjwvcC1zb3J0SWNvbj5cclxuICAgICAgICAgICAgICAgIDx0aCBwU29ydGFibGVDb2x1bW49XCJzeXN0ZW1JZFwiPlN5c3RlbSBJZFxyXG4gICAgICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwic3lzdGVtSWRcIj48L3Atc29ydEljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoIHBTb3J0YWJsZUNvbHVtbj1cIndvcmtvcmRlck51bWJlclwiPnt7dHJhbnNsYXRlLm1haW50ZW5hbmNlTGlzdC53b3JrT3JkZXJ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cIndvcmtvcmRlck51bWJlclwiPjwvcC1zb3J0SWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHBTb3J0YWJsZUNvbHVtbj1cInN0YXJ0RGF0ZVRpbWVcIj57e3RyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3Quc3RhcnREYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwic3RhcnREYXRlVGltZVwiPjwvcC1zb3J0SWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggcFNvcnRhYmxlQ29sdW1uPVwiY2FzZV90eXBlXCI+e3t0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0LnR5cGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cImNhc2VfdHlwZVwiPjwvcC1zb3J0SWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBwU29ydGFibGVDb2x1bW49XCJzdGF0dXNcIj57e3RyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3Quc3RhdHVzfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInN0YXR1c1wiPjwvcC1zb3J0SWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggcFNvcnRhYmxlQ29sdW1uPVwic3RhdHVzXCIgPnt7dHJhbnNsYXRlLm1haW50ZW5hbmNlTGlzdC5OYnJMaW5rc319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwic3RhdHVzXCI+PC9wLXNvcnRJY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+IEFjdGlvbjwvdGg+XHJcbiAgICAgICAgPC90cj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1wcm9kdWN0IGxldC1jb2x1bW5zPVwiY29sdW1uc1wiPlxyXG4gICAgICAgIDx0cj4gICBcclxuICAgICAgICAgICAgPHRkPnt7cHJvZHVjdC5zeXN0ZW1OYW1lIH19PC90ZD5cclxuICAgICAgICAgICAgPHRkPnt7cHJvZHVjdC5yb29tIH19PC90ZD5cclxuICAgICAgICAgICAgPHRkPnt7cHJvZHVjdC5zeXN0ZW1JZCB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD57e3Byb2R1Y3QucG1Kb2Iud29ya29yZGVyTnVtYmVyIH19PC90ZD5cclxuICAgICAgICAgICAgPHRkPnt7cHJvZHVjdC5wbUpvYi5zdGFydERhdGVUaW1lIHwgZGF0ZTogJ2RkIE1NTSB5eXl5ICcgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+e3twcm9kdWN0LnBtSm9iLmNhc2VUeXBlIH19PC90ZD5cclxuICAgICAgICAgICAgPHRkPjxzcGFuIFtjbGFzc109XCIncHJvZHVjdC1zdGF0dXMgc3RhdHVzLScgKyBwcm9kdWN0LnN0YXR1c1wiIFtwVG9vbHRpcF09XCJnZXRTdGF0dXNUb29sdGlwKHByb2R1Y3Quc3RhdHVzKVwiPnt7dHJhbnNmb3JtU3RhdHVzKHByb2R1Y3Quc3RhdHVzKSAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCAqbmdJZj1cInByb2R1Y3QucG1Kb2IuZ3JvdXBMaXN0ICE9PSBudWxsIFwiIChjbGljayk9XCJzaG93TGlua3MocHJvZHVjdClcIj4gPHNwYW4gY2xhc3M9XCJjaXJjbGVcIj57e3Byb2R1Y3QucG1Kb2IuZ3JvdXBMaXN0Lmxlbmd0aCB9fTwvc3Bhbj4gPGkgY2xhc3M9XCJwaSBwaS1saW5rXCIgc3R5bGU9XCJmb250LXNpemU6IDFyZW1cIj48L2k+IDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCAqbmdJZj1cInByb2R1Y3QucG1Kb2IuZ3JvdXBMaXN0ID09PW51bGxcIiAoY2xpY2spPVwic2hvd0xpbmtzKHByb2R1Y3QpXCI+IDxzcGFuIGNsYXNzPVwiY2lyY2xlbGlua2VkXCI+e3twcm9kdWN0LnBtSm9iLmdyb3VwTGlzdC5sZW5ndGggfX08L3NwYW4+IDxpIGNsYXNzPVwicGkgcGktbGlua1wiIHN0eWxlPVwiZm9udC1zaXplOiAxcmVtXCI+PC9pPiA8L3RkPlxyXG4gICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgbGFiZWw9XCJcIiBpY29uPVwicGkgcGktY2FsZW5kYXJcIiBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWRcIiAjYWN0dWFsVGFyZ2V0IChjbGljayk9XCJzZWxlY3RFbGVtZW50KHByb2R1Y3QpXCIgKGNsaWNrKT1cIm9wLnRvZ2dsZSgkZXZlbnQpXCIgW2Rpc2FibGVkXT1cIigocHJvZHVjdC5zdGF0dXMgPT09J2xhdGUnICB8fCBwcm9kdWN0LnN0YXR1cyA9PT0nYWNjZXB0ZWQnKSAmJiAhaXNBbHJlYWR5U2NoZWR1bGVkKSB8fCBwcm9kdWN0LnN0YXR1cyA9PT0nd2FpdGluZydcIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJzdW1tYXJ5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInAtZC1mbGV4IHAtYWktY2VudGVyIHAtamMtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICB7e2dsb2JhbHRyYW5zbGF0ZS5jb3VudH19IHt7bWFpbnRlbmFuY2VMaXN0ID8gbWFpbnRlbmFuY2VMaXN0Lmxlbmd0aCA6IDAgfX0ge3tnbG9iYWx0cmFuc2xhdGUuZWxlbWVudHN9fS5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbjwvcC10YWJsZT5cclxuXHJcbjxwLXRvYXN0IHBvc2l0aW9uPVwidG9wLWNlbnRlclwiPjwvcC10b2FzdD5cclxuPHAtb3ZlcmxheVBhbmVsICNvcCBbZGlzbWlzc2FibGVdPVwidHJ1ZVwiIFtzaG93Q2xvc2VJY29uXT1cImZhbHNlXCIgW3Nob3dUcmFuc2l0aW9uT3B0aW9uc109XCInMG1zJ1wiIFtoaWRlVHJhbnNpdGlvbk9wdGlvbnNdPVwiJzBtcydcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDxidXR0b24gc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiAqbmdJZj1cIiFpc0FscmVhZHlTY2hlZHVsZWRcIiBpY29uPVwicGkgcGktdGh1bWJzLXVwXCIgKGNsaWNrKT1cImNvbmZpcm1EaWFsb2coKVwiIFtsYWJlbF09XCJ0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0LmNvbmZpcm1EYXRlXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXJhaXNlZFwiIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCI+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGhyICpuZ0lmPVwiIWlzQWxyZWFkeVNjaGVkdWxlZFwiPlxyXG4gICAgICAgIDxidXR0b24gc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiAqbmdJZj1cIiFpc0FscmVhZHlTY2hlZHVsZWQgJiYgKGFsdGVybmF0aXZlRGF0ZXNMaXN0ICE9PSBudWxsKSBcIiBpY29uPVwicGkgcGktY2FsZW5kYXItcGx1c1wiIChjbGljayk9XCJwcm9wb3NlQW5vdGhlckRhdGUoKVwiIFtsYWJlbF09XCJ0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0LmNob29zZUFub3RoZXJEYXRlXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXJhaXNlZFwiIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCI+PC9idXR0b24+XHJcbiAgICAgICAgPGhyICpuZ0lmPVwiIWlzQWxyZWFkeVNjaGVkdWxlZCAmJiAoYWx0ZXJuYXRpdmVEYXRlc0xpc3QhPT1udWxsKSBcIj5cclxuICAgICAgICA8YnV0dG9uIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgaWNvbj1cInBpIHBpLXBob25lXCIgKGNsaWNrKT1cImNvbnRhY3RTdXBwb3J0KGZhbHNlKVwiIFtsYWJlbF09XCJ0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0LmNvbnRhY3RTdXBwb3JcIiBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tcmFpc2VkXCIgcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIj48L2J1dHRvbj5cclxuICAgICAgICA8aHIgKm5nSWY9XCJpc1dpdGhMaW5rc1wiPlxyXG4gICAgICAgIDxidXR0b24gc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiBpY29uPVwicGkgcGktbGlua1wiICpuZ0lmPVwiaXNXaXRoTGlua3NcIiAoY2xpY2spPVwic2hvd0xpbmtzKClcIiBbbGFiZWxdPVwidHJhbnNsYXRlLm1haW50ZW5hbmNlTGlzdC5zaG93TGlua3NcIiBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tcmFpc2VkXCIgcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIj48L2J1dHRvbj5cclxuICAgICAgICA8aHIgKm5nSWY9XCJpc0FscmVhZHlTY2hlZHVsZWQgJiYgcG1TZWxlY3RlZFN0YXR1cyA9PT0ndmFsaWRhdGVkJ1wiPlxyXG4gICAgICAgIDxidXR0b24gc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiAqbmdJZj1cImlzQWxyZWFkeVNjaGVkdWxlZCAmJiBwbVNlbGVjdGVkU3RhdHVzID09PSd2YWxpZGF0ZWQnXCIgaWNvbj1cInBpIHBpLXBlbmNpbFwiIChjbGljayk9XCJlZGl0UG0oKVwiIFtsYWJlbF09XCJ0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0LmNhbmNlbFwiIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1yYWlzZWRcIiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuPC9wLW92ZXJsYXlQYW5lbD5cclxuXHJcbjxkaXYgKm5nSWY9XCJkaXNwbGF5Y29udGFjdFN1cHBvcnQgXCIgPlxyXG4gICAgPGFwcC1jb250YWN0LXN1cHBvcnQgW3JlYXNvbkNvbnRhY3RdPVwicmVhc29uQ29udGFjdFwiIChjbG9zZUNvbnRhY3RTdXBwb3J0KT1cImNsb3NlQ29udGFjdFN1cHBvcnQoJGV2ZW50KVwiIChzZW5kRGV0YWlsZWRQbSk9XCJzZW5kQ29udGFjdE1lRm9ybSgkZXZlbnQpXCIgW2RldGFpbGVkUG1Kb2JdID1cIm1haW50ZW5hbmNlU2VsZWN0ZWRcIiBbZ2xvYmFsdHJhbnNsYXRlXT1cImdsb2JhbHRyYW5zbGF0ZVwiICBbcmVhc29uc109XCJyZWFzb25zXCIgW3RyYW5zbGF0ZV09XCJ0cmFuc2xhdGUuY29udGFjdFN1cHBvcnRcIiBbZGlzcGxheWNvbnRhY3RTdXBwb3J0XT1cImRpc3BsYXljb250YWN0U3VwcG9ydFwiIFtzaG93RGF0ZV09XCJzaG93RGF0ZVwiID48L2FwcC1jb250YWN0LXN1cHBvcnQ+XHJcbjwvZGl2PlxyXG48ZGl2ICpuZ0lmPVwiZGlzcGxheUNvbmZpcm1EaWFsb2dcIj5cclxuICAgIDxhcHAtY29uZmlybS1kaWFsb2cgIFtkZXRhaWxlZFBtSm9iTGlua2VkTGlzdF09XCJkZXRhaWxlZFBtSm9iTGlua2VkTGlzdFwiICAgW2lzUHJvcG9zZWREYXRlXT1cImlzUHJvcG9zZWREYXRlXCIgW2dsb2JhbHRyYW5zbGF0ZV09XCJnbG9iYWx0cmFuc2xhdGVcIiBbdHJhbnNsYXRlXT1cInRyYW5zbGF0ZS5jb25maXJtRGlhbG9nXCJcclxuICAgICAgICBbc3RhcnREYXRlVGltZV09XCJzdGFydERhdGVUaW1lXCIgW2VuZERhdGVUaW1lXT1cImVuZERhdGVUaW1lXCIgW2Rpc3BsYXlDb25maXJtRGlhbG9nXT1cImRpc3BsYXlDb25maXJtRGlhbG9nXCIgKGNsb3NlQ29uZmlybURpYWxvZyk9XCJjbG9zZUNvbmZpcm1EaWFsb2coJGV2ZW50KVwiPlxyXG4gICAgPC9hcHAtY29uZmlybS1kaWFsb2c+XHJcbjwvZGl2PlxyXG48ZGl2ICpuZ0lmPVwiZGlzcGxheUNvbmZpcm1EaWFsb2dDb250YWN0XCI+XHJcbiAgICA8YXBwLWNvbmZpcm0tZGlhbG9nLWNvbnRhY3QgIFtkZXRhaWxlZFBtSm9iTGlua2VkTGlzdF09XCJkZXRhaWxlZFBtSm9iTGlua2VkTGlzdFwiICAgIFtnbG9iYWx0cmFuc2xhdGVdPVwiZ2xvYmFsdHJhbnNsYXRlXCIgW3RyYW5zbGF0ZV09XCJ0cmFuc2xhdGUuY29uZmlybURpYWxvZ0NvbnRhY3RcIlxyXG4gICAgICAgIFtzdGFydERhdGVUaW1lXT1cInN0YXJ0RGF0ZVRpbWVcIiBbZW5kRGF0ZVRpbWVdPVwiZW5kRGF0ZVRpbWVcIiBbZGlzcGxheUNvbmZpcm1EaWFsb2dDb250YWN0XT1cImRpc3BsYXlDb25maXJtRGlhbG9nQ29udGFjdFwiIChjbG9zZUNvbmZpcm1EaWFsb2dDb250YWN0KT1cImNsb3NlQ29uZmlybURpYWxvZ0NvbnRhY3QoJGV2ZW50KVwiPlxyXG4gICAgPC9hcHAtY29uZmlybS1kaWFsb2ctY29udGFjdCA+XHJcbjwvZGl2PlxyXG48ZGl2ICpuZ0lmPVwiZGlzcGxheUNvbmZpcm1lZERhdGVJbmZvXCI+XHJcbiAgICA8YXBwLWNvbmZpcm1lZC1kYXRlLWluZm9ybWF0aW9uIFttb3JlRGF0ZXNdPVwibW9yZURhdGVzXCIgW2dsb2JhbHRyYW5zbGF0ZV09XCJnbG9iYWx0cmFuc2xhdGVcIiBbdHJhbnNsYXRlXT1cInRyYW5zbGF0ZS5jb25maXJtRGF0ZUluZm9ybWF0aW9uXCIgW3N0YXJ0RGF0ZVRpbWVdPVwic3RhcnREYXRlVGltZVwiIFtlbmREYXRlVGltZV09XCJlbmREYXRlVGltZVwiIFtkaXNwbGF5Q29uZmlybWVkRGF0ZUluZm9dPVwiZGlzcGxheUNvbmZpcm1lZERhdGVJbmZvXCIgKGNsb3NlQ29uZmlybWVkRGF0ZUluZm8pPVwiY2xvc2VDb25maXJtZWREYXRlSW5mbygpXCI+PC9hcHAtY29uZmlybWVkLWRhdGUtaW5mb3JtYXRpb24+XHJcbjwvZGl2PlxyXG48ZGl2ICpuZ0lmPVwiZGlzcGxheUFub3RoZXJEYXRlICYmIGFsdGVybmF0aXZlRGF0ZXNMaXN0XCI+XHJcbiAgICA8YXBwLWNob29zZS1hbm90aGVyLWRhdGUgW2dsb2JhbHRyYW5zbGF0ZV09XCJnbG9iYWx0cmFuc2xhdGVcIiBbdHJhbnNsYXRlXT1cInRyYW5zbGF0ZS5jaG9vc2VBbm90aGVyRGF0ZVwiIFthbHRlcm5hdGl2ZURhdGVzTGlzdF09XCJhbHRlcm5hdGl2ZURhdGVzTGlzdFwiIFtkaXNwbGF5QW5vdGhlckRhdGVdPVwiZGlzcGxheUFub3RoZXJEYXRlXCIgKGNsb3NlQW5vdGhlckRhdGUpPVwiY2xvc2VBbm90aGVyRGF0ZSgkZXZlbnQpXCIgKGFjY2VwdERhdGUpPVwiYWNjZXB0RGF0ZSgkZXZlbnQpXCI+XHJcbiAgICA8L2FwcC1jaG9vc2UtYW5vdGhlci1kYXRlPlxyXG48L2Rpdj5cclxuPGRpdiAqbmdJZj1cImRpc3BsYXlTaG93TGlua3MgJiYgc2VsZWN0ZWRXb3Jrb3JkZXJJZFwiPlxyXG4gICAgPGFwcC1zaG93LWxpbmtzIFtzdGF0dXNdPVwic3RhdHVzXCIgW3NlbGVjdGVkV29ya29yZGVySWRdPVwic2VsZWN0ZWRXb3Jrb3JkZXJJZFwiIFt0cmFuc2xhdGVdPVwidHJhbnNsYXRlXCIgW2dsb2JhbHRyYW5zbGF0ZV09XCJnbG9iYWx0cmFuc2xhdGVcIiBbZGlzcGxheVNob3dMaW5rc109XCJkaXNwbGF5U2hvd0xpbmtzXCIgKGNsb3NlU2hvd0xpbmtzKT1cImNsb3NlU2hvd0xpbmtzKClcIiBbZGV0YWlsZWRQbUpvYkxpbmtlZExpc3RdPVwiZGV0YWlsZWRQbUpvYkxpbmtlZExpc3RcIj48L2FwcC1zaG93LWxpbmtzPlxyXG48L2Rpdj5cclxuXHJcblxyXG4iXX0=