iptdevs-design-system 3.1.4396 → 3.2.1
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.
- package/esm2020/lib/cod/cod-form/cod-form.component.mjs +34 -21
- package/esm2020/lib/cod/logic/calculate-quotes.service.mjs +73 -53
- package/esm2020/lib/cod/modal-referred/modal-referred.component.mjs +2 -2
- package/esm2020/lib/cod/steps/cod-form-step-five/cod-form-step-five.component.mjs +18 -24
- package/esm2020/lib/cod/steps/cod-form-step-four/cod-form-step-four.component.mjs +85 -76
- package/esm2020/lib/cod/steps/cod-form-step-one/cod-form-step-one.component.mjs +225 -92
- package/esm2020/lib/cod/steps/cod-form-step-three/cod-form-step-three.component.mjs +14 -18
- package/esm2020/lib/cod/steps/cod-form-step-two/cod-form-step-two.component.mjs +95 -70
- package/esm2020/lib/cod-self-managed/cod-form-self-managed/cod-self-managed.component.mjs +190 -22
- package/esm2020/lib/cod-self-managed/cod-self-managed.module.mjs +28 -4
- package/esm2020/lib/cod-self-managed/logic/calculate-quotes.service.mjs +99 -0
- package/esm2020/lib/cod-self-managed/logic/cod-self-managed-controls.mjs +16 -44
- package/esm2020/lib/cod-self-managed/logic/cod-self-managed-steps.mjs +1 -1
- package/esm2020/lib/cod-self-managed/steps/cod-form-step-four/cod-self-form-step-four.component.mjs +244 -7
- package/esm2020/lib/cod-self-managed/steps/cod-form-step-one/cod-self-form-step-one.component.mjs +102 -18
- package/esm2020/lib/cod-self-managed/steps/cod-form-step-three/cod-self-form-step-three.component.mjs +255 -7
- package/esm2020/lib/cod-self-managed/steps/cod-form-step-two/cod-self-form-step-two.component.mjs +144 -32
- package/esm2020/lib/components/atoms/button/button.component.mjs +2 -2
- package/esm2020/lib/components/atoms/datalist/datalist.component.mjs +26 -17
- package/esm2020/lib/components/atoms/input/input.component.mjs +2 -2
- package/esm2020/lib/components/atoms/level-button/level-button.component.mjs +2 -2
- package/esm2020/lib/components/atoms/loader/loader.component.mjs +2 -2
- package/esm2020/lib/components/atoms/select/select.component.mjs +10 -8
- package/esm2020/lib/components/components.module.mjs +54 -8
- package/esm2020/lib/components/forms/create-user-form/create-user-form.component.mjs +3 -3
- package/esm2020/lib/components/forms/update-user-form/update-user-form.component.mjs +843 -0
- package/esm2020/lib/components/molecules/card-course/card-course.component.mjs +95 -0
- package/esm2020/lib/components/molecules/card-select-course/card-select-course.component.mjs +52 -0
- package/esm2020/lib/components/molecules/sidenav/sidenav.component.mjs +5 -5
- package/esm2020/lib/core/core.module.mjs +9 -3
- package/esm2020/lib/core/models/academic/academic.component.mjs +1 -1
- package/esm2020/lib/core/models/announcement/announcement-user-rq.model.mjs +2 -0
- package/esm2020/lib/core/models/announcement/announcement-user-rs.model.mjs +3 -0
- package/esm2020/lib/core/models/attendance/attendance.interface.mjs +1 -1
- package/esm2020/lib/core/models/budget/budget.model.mjs +1 -1
- package/esm2020/lib/core/models/cod/cod-rq.model.mjs +1 -1
- package/esm2020/lib/core/models/commercial/commercial.model.mjs +1 -1
- package/esm2020/lib/core/models/course/course-rq.model.mjs +1 -1
- package/esm2020/lib/core/models/course/courses.model.mjs +1 -1
- package/esm2020/lib/core/models/epayco/epayco.interfaces.mjs +2 -0
- package/esm2020/lib/core/models/notes/INotesTemplate.mjs +1 -1
- package/esm2020/lib/core/models/notes/notes.interface.mjs +1 -1
- package/esm2020/lib/core/models/parameters/parameters-rs.model.mjs +1 -1
- package/esm2020/lib/core/models/payment/payment-rq.model.mjs +1 -1
- package/esm2020/lib/core/models/student/student.interface.mjs +1 -1
- package/esm2020/lib/core/models/terms/terms-rs.model.mjs +2 -0
- package/esm2020/lib/core/models/transfer/transfer.model.mjs +2 -0
- package/esm2020/lib/core/models/user/user-rq.model.mjs +1 -1
- package/esm2020/lib/core/models/user/user-rs.model.mjs +3 -1
- package/esm2020/lib/core/pipes/course-pipes/schedule-form.pipe.mjs +47 -0
- package/esm2020/lib/core/pipes/course-pipes/time-form.pipe.mjs +34 -0
- package/esm2020/lib/core/pipes/course-pipes/type-level.pipe.mjs +57 -0
- package/esm2020/lib/core/pipes/parameter-pipes/gender-display.pipe.mjs +22 -0
- package/esm2020/lib/core/pipes/pipe.module.mjs +37 -0
- package/esm2020/lib/core/services/academic-service/academic.service.mjs +64 -1
- package/esm2020/lib/core/services/announcement/announcement.service.mjs +57 -0
- package/esm2020/lib/core/services/attendance-service/attendance.service.mjs +31 -1
- package/esm2020/lib/core/services/budget-service/budget-service.mjs +297 -1
- package/esm2020/lib/core/services/certificate-service/certificate.service.mjs +21 -1
- package/esm2020/lib/core/services/commercial-service/comercial.service.mjs +95 -1
- package/esm2020/lib/core/services/course-service/course-service.model.mjs +96 -1
- package/esm2020/lib/core/services/ePayco/epayco.service.mjs +37 -0
- package/esm2020/lib/core/services/notes-service/notes.service.mjs +6 -1
- package/esm2020/lib/core/services/parameters-service/parameters.service.mjs +13 -1
- package/esm2020/lib/core/services/user-service/user-service.mjs +55 -1
- package/esm2020/public-api.mjs +13 -1
- package/fesm2015/iptdevs-design-system.mjs +4357 -1296
- package/fesm2015/iptdevs-design-system.mjs.map +1 -1
- package/fesm2020/iptdevs-design-system.mjs +7080 -4043
- package/fesm2020/iptdevs-design-system.mjs.map +1 -1
- package/lib/cod/cod-form/cod-form.component.d.ts +7 -2
- package/lib/cod/logic/calculate-quotes.service.d.ts +3 -0
- package/lib/cod/steps/cod-form-step-five/cod-form-step-five.component.d.ts +4 -4
- package/lib/cod/steps/cod-form-step-four/cod-form-step-four.component.d.ts +6 -9
- package/lib/cod/steps/cod-form-step-one/cod-form-step-one.component.d.ts +9 -7
- package/lib/cod/steps/cod-form-step-three/cod-form-step-three.component.d.ts +4 -4
- package/lib/cod/steps/cod-form-step-two/cod-form-step-two.component.d.ts +8 -5
- package/lib/cod-self-managed/cod-form-self-managed/cod-self-managed.component.d.ts +31 -7
- package/lib/cod-self-managed/cod-self-managed.module.d.ts +7 -1
- package/lib/cod-self-managed/logic/calculate-quotes.service.d.ts +16 -0
- package/lib/cod-self-managed/steps/cod-form-step-four/cod-self-form-step-four.component.d.ts +46 -2
- package/lib/cod-self-managed/steps/cod-form-step-one/cod-self-form-step-one.component.d.ts +17 -5
- package/lib/cod-self-managed/steps/cod-form-step-three/cod-self-form-step-three.component.d.ts +48 -3
- package/lib/cod-self-managed/steps/cod-form-step-two/cod-self-form-step-two.component.d.ts +43 -9
- package/lib/components/atoms/datalist/datalist.component.d.ts +7 -3
- package/lib/components/atoms/select/select.component.d.ts +2 -1
- package/lib/components/components.module.d.ts +14 -5
- package/lib/components/forms/update-user-form/update-user-form.component.d.ts +87 -0
- package/lib/components/molecules/card-course/card-course.component.d.ts +21 -0
- package/lib/components/molecules/card-select-course/card-select-course.component.d.ts +13 -0
- package/lib/core/models/academic/academic.component.d.ts +143 -1
- package/lib/core/models/announcement/announcement-user-rq.model.d.ts +12 -0
- package/lib/core/models/announcement/announcement-user-rs.model.d.ts +7 -0
- package/lib/core/models/attendance/attendance.interface.d.ts +146 -0
- package/lib/core/models/budget/budget.model.d.ts +554 -0
- package/lib/core/models/cod/cod-rq.model.d.ts +193 -0
- package/lib/core/models/commercial/commercial.model.d.ts +91 -0
- package/lib/core/models/course/course-rq.model.d.ts +296 -22
- package/lib/core/models/course/courses.model.d.ts +51 -0
- package/lib/core/models/epayco/epayco.interfaces.d.ts +6 -0
- package/lib/core/models/notes/INotesTemplate.d.ts +57 -0
- package/lib/core/models/notes/notes.interface.d.ts +13 -0
- package/lib/core/models/parameters/parameters-rs.model.d.ts +78 -1
- package/lib/core/models/payment/payment-rq.model.d.ts +168 -0
- package/lib/core/models/student/student.interface.d.ts +18 -0
- package/lib/core/models/terms/terms-rs.model.d.ts +435 -0
- package/lib/core/models/transfer/transfer.model.d.ts +89 -0
- package/lib/core/models/user/user-rq.model.d.ts +78 -0
- package/lib/core/models/user/user-rs.model.d.ts +11 -0
- package/lib/core/pipes/course-pipes/schedule-form.pipe.d.ts +7 -0
- package/lib/core/pipes/course-pipes/time-form.pipe.d.ts +9 -0
- package/lib/core/pipes/course-pipes/type-level.pipe.d.ts +7 -0
- package/lib/core/pipes/parameter-pipes/gender-display.pipe.d.ts +7 -0
- package/lib/core/pipes/pipe.module.d.ts +11 -0
- package/lib/core/services/academic-service/academic.service.d.ts +18 -3
- package/lib/core/services/announcement/announcement.service.d.ts +18 -0
- package/lib/core/services/attendance-service/attendance.service.d.ts +7 -1
- package/lib/core/services/budget-service/budget-service.d.ts +57 -3
- package/lib/core/services/certificate-service/certificate.service.d.ts +5 -0
- package/lib/core/services/commercial-service/comercial.service.d.ts +23 -2
- package/lib/core/services/course-service/course-service.model.d.ts +22 -1
- package/lib/core/services/ePayco/epayco.service.d.ts +17 -0
- package/lib/core/services/notes-service/notes.service.d.ts +2 -1
- package/lib/core/services/parameters-service/parameters.service.d.ts +3 -0
- package/lib/core/services/user-service/user-service.d.ts +12 -1
- package/package.json +1 -1
- package/public-api.d.ts +11 -0
|
@@ -4,19 +4,17 @@ import { CodFormControls } from '../../logic/cod-form-controls';
|
|
|
4
4
|
import { CodFormSteps } from '../../logic/cod-form-steps';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import * as i1 from "@angular/forms";
|
|
7
|
-
import * as i2 from "
|
|
8
|
-
import * as i3 from "
|
|
9
|
-
import * as i4 from "../../../components/atoms/
|
|
10
|
-
import * as i5 from "
|
|
11
|
-
import * as i6 from "
|
|
12
|
-
import * as i7 from "primeng/
|
|
13
|
-
import * as i8 from "
|
|
14
|
-
import * as i9 from "../../modal-referred/modal-referred.component";
|
|
7
|
+
import * as i2 from "@angular/common";
|
|
8
|
+
import * as i3 from "../../../components/atoms/input/input.component";
|
|
9
|
+
import * as i4 from "../../../components/atoms/select/select.component";
|
|
10
|
+
import * as i5 from "@angular/material/checkbox";
|
|
11
|
+
import * as i6 from "primeng/button";
|
|
12
|
+
import * as i7 from "primeng/inputtextarea";
|
|
13
|
+
import * as i8 from "../../modal-referred/modal-referred.component";
|
|
15
14
|
export class CodFormStepFiveComponent extends CodFormSteps {
|
|
16
|
-
constructor(fb
|
|
15
|
+
constructor(fb) {
|
|
17
16
|
super();
|
|
18
17
|
this.fb = fb;
|
|
19
|
-
this.parameterService = parameterService;
|
|
20
18
|
this.changeStepEvent = new EventEmitter();
|
|
21
19
|
this.action = new EventEmitter();
|
|
22
20
|
this.errorMessage = 'Faltan campos por llenar.';
|
|
@@ -53,15 +51,9 @@ export class CodFormStepFiveComponent extends CodFormSteps {
|
|
|
53
51
|
}
|
|
54
52
|
}
|
|
55
53
|
getParameters() {
|
|
56
|
-
this.
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
this.parameterService.getStudyReasons().subscribe((response) => {
|
|
60
|
-
this.studyReasons = response.data;
|
|
61
|
-
});
|
|
62
|
-
this.parameterService.getMulticulturalisms().subscribe((response) => {
|
|
63
|
-
this.multiculturalities = response.data;
|
|
64
|
-
});
|
|
54
|
+
this.marketingReasons = this.parametersAll?.mkReasons;
|
|
55
|
+
this.studyReasons = this.parametersAll?.studyReasons;
|
|
56
|
+
this.multiculturalities = this.parametersAll?.Multiculturalism;
|
|
65
57
|
}
|
|
66
58
|
initForm() {
|
|
67
59
|
this.codFormStepFive = this.fb.group({
|
|
@@ -215,12 +207,12 @@ export class CodFormStepFiveComponent extends CodFormSteps {
|
|
|
215
207
|
this.modalVisible = true;
|
|
216
208
|
}
|
|
217
209
|
}
|
|
218
|
-
CodFormStepFiveComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CodFormStepFiveComponent, deps: [{ token: i1.FormBuilder }
|
|
219
|
-
CodFormStepFiveComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: CodFormStepFiveComponent, selector: "app-cod-form-step-five", inputs: { userRole: "userRole", initialData: "initialData", isEditCod: "isEditCod", isRenovation: "isRenovation" }, outputs: { changeStepEvent: "changeStepEvent", action: "action" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<form autocomplete=\"off\" [formGroup]=\"codFormStepFive\" class=\"grid\">\n <div class=\"col-12 md:col-6\">\n <cod-modal-referred\n *ngIf=\"modalVisible\"\n [visibility]=\"modalVisible\"\n (userSelect)=\"referredUser($event)\"\n ></cod-modal-referred>\n\n <div class=\"container_referred flex flex-row justify-content-between align-items-end\">\n <div class=\"containe_select1\">\n <ipt-select\n [control]=\"codFormStepFive.controls['marketing_reasons']\"\n [initialValue]=\"codFormStepFive.controls['marketing_reasons'].value\"\n (eventSelect)=\"selectMarketingReasons($event)\"\n [data]=\"marketingReasons\"\n [defaultText]=\"'\u00BFC\u00F3mo se enter\u00F3 del programa?'\"\n ></ipt-select>\n </div>\n <p-button\n *ngIf=\"visbleReferred\"\n styleClass=\"p-button-sm w-max\"\n label=\"Cambiar Referido\"\n icon=\"pi pi-sync\"\n (onClick)=\"openModalReferred()\"\n ></p-button>\n </div>\n\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Discapacidad'\"\n [control]=\"codFormStepFive.controls['disability']\"\n ></ipt-input>\n </div>\n <div class=\"col-12 md:col-6\">\n <ipt-select\n [control]=\"codFormStepFive.controls['study_reasons']\"\n [initialValue]=\"codFormStepFive.controls['study_reasons'].value\"\n (eventSelect)=\"selectStudyReasons($event)\"\n [data]=\"studyReasons\"\n [defaultText]=\"'Motivo'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'R\u00E9gimen de salud'\"\n [control]=\"codFormStepFive.controls['health_regimen']\"\n ></ipt-input>\n </div>\n <div class=\"col-12\">\n <h3 *ngIf=\"visbleReferred\" class=\"referred_title\">Datos del referido</h3>\n <div *ngIf=\"visbleReferred\" class=\"referred_user_data\">\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Documento'\"\n [control]=\"codFormStepFive.controls['document_refers']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"codFormStepFive.controls['name_refers']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Tel\u00E9fono'\"\n [control]=\"codFormStepFive.controls['phone_refers']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Email'\"\n [control]=\"codFormStepFive.controls['email_refers']\"\n ></ipt-input>\n </div>\n <span class=\"p-float-label\">\n <textarea\n id=\"float-input\"\n rows=\"4\"\n cols=\"30\"\n pInputTextarea\n formControlName=\"observation\"\n ></textarea>\n <label for=\"float-input\">Observaciones</label>\n </span>\n <div class=\"flex flex-wrap justify-content-between gap-2\">\n <div\n *ngFor=\"let option of multiculturalities; index as i\"\n class=\"field-checkbox mt-4 flex align-items-center\"\n >\n <mat-checkbox\n [formControlName]=\"'multiculturalism' + '_' + (i + 1)\"\n class=\"example-margin\"\n ></mat-checkbox>\n <label [for]=\"option.code\">{{ option.name }}</label>\n </div>\n </div>\n </div>\n\n <div class=\"col-12 p-4 font-bold\">\n <p>\n * El estudiante o titular se comprometen a cancelar las cuotas\n establecidas en este contrato, los primeros 5 (cinco) d\u00EDas del mes. En\n caso de querer retirarse, deber\u00E1 informar por escrito 30 (treinta) d\u00EDas\n antes y cancelar lo correspondiente hasta la fecha definida de retiro,\n para poder obtener su paz y salvo.\n </p>\n <br /><br />\n <div class=\"flex gap-2\">\n <mat-checkbox\n formControlName=\"terms\"\n class=\"example-margin\"\n ></mat-checkbox>\n <!-- <p-checkbox [formControl]=\"getCheckboxControl()\"></p-checkbox> -->\n <!-- <ipt-checkbox [control]=\"codFormStepFive.controls['terms']\" [checkboxOption]=\"termsCheckboxStatus\"></ipt-checkbox> -->\n <p>\n DECLARO HABER LE\u00CDDO Y ACEPTO LOS T\u00C9RMINOS Y CONDICIONES DE LAS POL\u00CDTICAS\n ESTABLECIDAS EN LA INSTITUCI\u00D3N.\n </p>\n </div>\n </div>\n</form>\n\n<div class=\"flex mt-3 align-items-center gap-3\">\n <span\n *ngIf=\"\n (codFormStepFive.invalid && codFormStepFive.touched) ||\n (!termsCheckboxStatus && codFormStepFive.touched)\n \"\n class=\"\n text-red-500\n font-bold\n text-center\n mt-1\n py-2\n bg-red-100\n w-full\n border-round-xl\n \"\n >{{ errorMessage }}</span\n >\n <button\n type=\"submit\"\n [class]=\"isEditCod ? 'ml-auto yellow-300 p-button-sm' : 'ml-auto p-button-success p-button-sm'\"\n (click)=\"sendForm()\"\n pButton\n [label]=\"sendFormMsg\"\n icon=\"pi pi-check\"\n></button>\n</div>\n", styles: [":host ::ng-deep .p-button.p-button-sm{padding:.4rem!important}.yellow-300{background-color:var(--yellow-500)!important;color:#fff}@media screen and (min-width: 320px){.referred_user_data{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:.8rem;margin-bottom:2rem;border:1px solid #ced4da;border-radius:
|
|
210
|
+
CodFormStepFiveComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CodFormStepFiveComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
211
|
+
CodFormStepFiveComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: CodFormStepFiveComponent, selector: "app-cod-form-step-five", inputs: { userRole: "userRole", initialData: "initialData", isEditCod: "isEditCod", isRenovation: "isRenovation", parametersAll: "parametersAll" }, outputs: { changeStepEvent: "changeStepEvent", action: "action" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<form autocomplete=\"off\" [formGroup]=\"codFormStepFive\" class=\"grid\">\n <div class=\"col-12 md:col-6\">\n <cod-modal-referred\n *ngIf=\"modalVisible\"\n [visibility]=\"modalVisible\"\n (userSelect)=\"referredUser($event)\"\n ></cod-modal-referred>\n\n <div class=\"container_referred flex flex-row justify-content-between align-items-end\">\n <div class=\"containe_select1\">\n <ipt-select\n [control]=\"codFormStepFive.controls['marketing_reasons']\"\n [initialValue]=\"codFormStepFive.controls['marketing_reasons'].value\"\n (eventSelect)=\"selectMarketingReasons($event)\"\n [data]=\"marketingReasons\"\n [defaultText]=\"'\u00BFC\u00F3mo se enter\u00F3 del programa?'\"\n ></ipt-select>\n </div>\n <p-button\n *ngIf=\"visbleReferred\"\n styleClass=\"p-button-sm w-max\"\n label=\"Cambiar Referido\"\n icon=\"pi pi-sync\"\n (onClick)=\"openModalReferred()\"\n ></p-button>\n </div>\n\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Discapacidad'\"\n [control]=\"codFormStepFive.controls['disability']\"\n ></ipt-input>\n </div>\n <div class=\"col-12 md:col-6\">\n <ipt-select\n [control]=\"codFormStepFive.controls['study_reasons']\"\n [initialValue]=\"codFormStepFive.controls['study_reasons'].value\"\n (eventSelect)=\"selectStudyReasons($event)\"\n [data]=\"studyReasons\"\n [defaultText]=\"'Motivo'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'R\u00E9gimen de salud'\"\n [control]=\"codFormStepFive.controls['health_regimen']\"\n ></ipt-input>\n </div>\n <div class=\"col-12\">\n <h3 *ngIf=\"visbleReferred\" class=\"referred_title\">Datos del referido</h3>\n <div *ngIf=\"visbleReferred\" class=\"referred_user_data\">\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Documento'\"\n [control]=\"codFormStepFive.controls['document_refers']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"codFormStepFive.controls['name_refers']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Tel\u00E9fono'\"\n [control]=\"codFormStepFive.controls['phone_refers']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Email'\"\n [control]=\"codFormStepFive.controls['email_refers']\"\n ></ipt-input>\n </div>\n <span class=\"p-float-label\">\n <textarea\n id=\"float-input\"\n rows=\"4\"\n cols=\"30\"\n pInputTextarea\n formControlName=\"observation\"\n ></textarea>\n <label for=\"float-input\">Observaciones</label>\n </span>\n <div class=\"flex flex-wrap justify-content-between gap-2\">\n <div\n *ngFor=\"let option of multiculturalities; index as i\"\n class=\"field-checkbox mt-4 flex align-items-center\"\n >\n <mat-checkbox\n [formControlName]=\"'multiculturalism' + '_' + (i + 1)\"\n class=\"example-margin\"\n ></mat-checkbox>\n <label [for]=\"option.code\">{{ option.name }}</label>\n </div>\n </div>\n </div>\n\n <div class=\"col-12 p-4 font-bold\">\n <p>\n * El estudiante o titular se comprometen a cancelar las cuotas\n establecidas en este contrato, los primeros 5 (cinco) d\u00EDas del mes. En\n caso de querer retirarse, deber\u00E1 informar por escrito 30 (treinta) d\u00EDas\n antes y cancelar lo correspondiente hasta la fecha definida de retiro,\n para poder obtener su paz y salvo.\n </p>\n <br /><br />\n <div class=\"flex gap-2\">\n <mat-checkbox\n formControlName=\"terms\"\n class=\"example-margin\"\n ></mat-checkbox>\n <!-- <p-checkbox [formControl]=\"getCheckboxControl()\"></p-checkbox> -->\n <!-- <ipt-checkbox [control]=\"codFormStepFive.controls['terms']\" [checkboxOption]=\"termsCheckboxStatus\"></ipt-checkbox> -->\n <p>\n DECLARO HABER LE\u00CDDO Y ACEPTO LOS T\u00C9RMINOS Y CONDICIONES DE LAS POL\u00CDTICAS\n ESTABLECIDAS EN LA INSTITUCI\u00D3N.\n </p>\n </div>\n </div>\n</form>\n\n<div class=\"flex mt-3 align-items-center gap-3\">\n <span\n *ngIf=\"\n (codFormStepFive.invalid && codFormStepFive.touched) ||\n (!termsCheckboxStatus && codFormStepFive.touched)\n \"\n class=\"\n text-red-500\n font-bold\n text-center\n mt-1\n py-2\n bg-red-100\n w-full\n border-round-xl\n \"\n >{{ errorMessage }}</span\n >\n <button\n type=\"submit\"\n [class]=\"isEditCod ? 'ml-auto yellow-300 p-button-sm' : 'ml-auto p-button-success p-button-sm'\"\n (click)=\"sendForm()\"\n pButton\n [label]=\"sendFormMsg\"\n icon=\"pi pi-check\"\n></button>\n</div>\n", styles: [":host ::ng-deep .p-button.p-button-sm{padding:.4rem!important}.yellow-300{background-color:var(--yellow-500)!important;color:#fff}@media screen and (min-width: 320px){.referred_user_data{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:.8rem;margin-bottom:2rem;border:1px solid #ced4da;border-radius:3px;padding:.5rem}.referred_title{font-size:.8rem;font-weight:400;padding-left:1rem;color:#6c757d}.containe_select1{width:100%}}@media screen and (min-width: 768px){.referred_user_data{grid-template-columns:1fr 1fr}}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.InputComponent, selector: "ipt-input", inputs: ["inputType", "placeHolder", "validateText", "withPipe", "list", "iconUrl", "control", "prefix", "thousands", "decimal", "disabledSel"], outputs: ["dateSelected"] }, { kind: "component", type: i4.SelectComponent, selector: "ipt-select", inputs: ["isRequired", "data", "defaultText", "selectCode", "disabledSel", "initialValue", "label", "control"], outputs: ["eventSelect"] }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { 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: "directive", type: i6.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i6.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass", "ariaLabel"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i7.InputTextarea, selector: "[pInputTextarea]", inputs: ["autoResize"], outputs: ["onResize"] }, { kind: "component", type: i8.ModalReferredComponent, selector: "cod-modal-referred", inputs: ["visibility"], outputs: ["userSelect"] }] });
|
|
220
212
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CodFormStepFiveComponent, decorators: [{
|
|
221
213
|
type: Component,
|
|
222
|
-
args: [{ selector: 'app-cod-form-step-five', template: "<form autocomplete=\"off\" [formGroup]=\"codFormStepFive\" class=\"grid\">\n <div class=\"col-12 md:col-6\">\n <cod-modal-referred\n *ngIf=\"modalVisible\"\n [visibility]=\"modalVisible\"\n (userSelect)=\"referredUser($event)\"\n ></cod-modal-referred>\n\n <div class=\"container_referred flex flex-row justify-content-between align-items-end\">\n <div class=\"containe_select1\">\n <ipt-select\n [control]=\"codFormStepFive.controls['marketing_reasons']\"\n [initialValue]=\"codFormStepFive.controls['marketing_reasons'].value\"\n (eventSelect)=\"selectMarketingReasons($event)\"\n [data]=\"marketingReasons\"\n [defaultText]=\"'\u00BFC\u00F3mo se enter\u00F3 del programa?'\"\n ></ipt-select>\n </div>\n <p-button\n *ngIf=\"visbleReferred\"\n styleClass=\"p-button-sm w-max\"\n label=\"Cambiar Referido\"\n icon=\"pi pi-sync\"\n (onClick)=\"openModalReferred()\"\n ></p-button>\n </div>\n\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Discapacidad'\"\n [control]=\"codFormStepFive.controls['disability']\"\n ></ipt-input>\n </div>\n <div class=\"col-12 md:col-6\">\n <ipt-select\n [control]=\"codFormStepFive.controls['study_reasons']\"\n [initialValue]=\"codFormStepFive.controls['study_reasons'].value\"\n (eventSelect)=\"selectStudyReasons($event)\"\n [data]=\"studyReasons\"\n [defaultText]=\"'Motivo'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'R\u00E9gimen de salud'\"\n [control]=\"codFormStepFive.controls['health_regimen']\"\n ></ipt-input>\n </div>\n <div class=\"col-12\">\n <h3 *ngIf=\"visbleReferred\" class=\"referred_title\">Datos del referido</h3>\n <div *ngIf=\"visbleReferred\" class=\"referred_user_data\">\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Documento'\"\n [control]=\"codFormStepFive.controls['document_refers']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"codFormStepFive.controls['name_refers']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Tel\u00E9fono'\"\n [control]=\"codFormStepFive.controls['phone_refers']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Email'\"\n [control]=\"codFormStepFive.controls['email_refers']\"\n ></ipt-input>\n </div>\n <span class=\"p-float-label\">\n <textarea\n id=\"float-input\"\n rows=\"4\"\n cols=\"30\"\n pInputTextarea\n formControlName=\"observation\"\n ></textarea>\n <label for=\"float-input\">Observaciones</label>\n </span>\n <div class=\"flex flex-wrap justify-content-between gap-2\">\n <div\n *ngFor=\"let option of multiculturalities; index as i\"\n class=\"field-checkbox mt-4 flex align-items-center\"\n >\n <mat-checkbox\n [formControlName]=\"'multiculturalism' + '_' + (i + 1)\"\n class=\"example-margin\"\n ></mat-checkbox>\n <label [for]=\"option.code\">{{ option.name }}</label>\n </div>\n </div>\n </div>\n\n <div class=\"col-12 p-4 font-bold\">\n <p>\n * El estudiante o titular se comprometen a cancelar las cuotas\n establecidas en este contrato, los primeros 5 (cinco) d\u00EDas del mes. En\n caso de querer retirarse, deber\u00E1 informar por escrito 30 (treinta) d\u00EDas\n antes y cancelar lo correspondiente hasta la fecha definida de retiro,\n para poder obtener su paz y salvo.\n </p>\n <br /><br />\n <div class=\"flex gap-2\">\n <mat-checkbox\n formControlName=\"terms\"\n class=\"example-margin\"\n ></mat-checkbox>\n <!-- <p-checkbox [formControl]=\"getCheckboxControl()\"></p-checkbox> -->\n <!-- <ipt-checkbox [control]=\"codFormStepFive.controls['terms']\" [checkboxOption]=\"termsCheckboxStatus\"></ipt-checkbox> -->\n <p>\n DECLARO HABER LE\u00CDDO Y ACEPTO LOS T\u00C9RMINOS Y CONDICIONES DE LAS POL\u00CDTICAS\n ESTABLECIDAS EN LA INSTITUCI\u00D3N.\n </p>\n </div>\n </div>\n</form>\n\n<div class=\"flex mt-3 align-items-center gap-3\">\n <span\n *ngIf=\"\n (codFormStepFive.invalid && codFormStepFive.touched) ||\n (!termsCheckboxStatus && codFormStepFive.touched)\n \"\n class=\"\n text-red-500\n font-bold\n text-center\n mt-1\n py-2\n bg-red-100\n w-full\n border-round-xl\n \"\n >{{ errorMessage }}</span\n >\n <button\n type=\"submit\"\n [class]=\"isEditCod ? 'ml-auto yellow-300 p-button-sm' : 'ml-auto p-button-success p-button-sm'\"\n (click)=\"sendForm()\"\n pButton\n [label]=\"sendFormMsg\"\n icon=\"pi pi-check\"\n></button>\n</div>\n", styles: [":host ::ng-deep .p-button.p-button-sm{padding:.4rem!important}.yellow-300{background-color:var(--yellow-500)!important;color:#fff}@media screen and (min-width: 320px){.referred_user_data{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:.8rem;margin-bottom:2rem;border:1px solid #ced4da;border-radius:
|
|
223
|
-
}], ctorParameters: function () { return [{ type: i1.FormBuilder }
|
|
214
|
+
args: [{ selector: 'app-cod-form-step-five', template: "<form autocomplete=\"off\" [formGroup]=\"codFormStepFive\" class=\"grid\">\n <div class=\"col-12 md:col-6\">\n <cod-modal-referred\n *ngIf=\"modalVisible\"\n [visibility]=\"modalVisible\"\n (userSelect)=\"referredUser($event)\"\n ></cod-modal-referred>\n\n <div class=\"container_referred flex flex-row justify-content-between align-items-end\">\n <div class=\"containe_select1\">\n <ipt-select\n [control]=\"codFormStepFive.controls['marketing_reasons']\"\n [initialValue]=\"codFormStepFive.controls['marketing_reasons'].value\"\n (eventSelect)=\"selectMarketingReasons($event)\"\n [data]=\"marketingReasons\"\n [defaultText]=\"'\u00BFC\u00F3mo se enter\u00F3 del programa?'\"\n ></ipt-select>\n </div>\n <p-button\n *ngIf=\"visbleReferred\"\n styleClass=\"p-button-sm w-max\"\n label=\"Cambiar Referido\"\n icon=\"pi pi-sync\"\n (onClick)=\"openModalReferred()\"\n ></p-button>\n </div>\n\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Discapacidad'\"\n [control]=\"codFormStepFive.controls['disability']\"\n ></ipt-input>\n </div>\n <div class=\"col-12 md:col-6\">\n <ipt-select\n [control]=\"codFormStepFive.controls['study_reasons']\"\n [initialValue]=\"codFormStepFive.controls['study_reasons'].value\"\n (eventSelect)=\"selectStudyReasons($event)\"\n [data]=\"studyReasons\"\n [defaultText]=\"'Motivo'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'R\u00E9gimen de salud'\"\n [control]=\"codFormStepFive.controls['health_regimen']\"\n ></ipt-input>\n </div>\n <div class=\"col-12\">\n <h3 *ngIf=\"visbleReferred\" class=\"referred_title\">Datos del referido</h3>\n <div *ngIf=\"visbleReferred\" class=\"referred_user_data\">\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Documento'\"\n [control]=\"codFormStepFive.controls['document_refers']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"codFormStepFive.controls['name_refers']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Tel\u00E9fono'\"\n [control]=\"codFormStepFive.controls['phone_refers']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Email'\"\n [control]=\"codFormStepFive.controls['email_refers']\"\n ></ipt-input>\n </div>\n <span class=\"p-float-label\">\n <textarea\n id=\"float-input\"\n rows=\"4\"\n cols=\"30\"\n pInputTextarea\n formControlName=\"observation\"\n ></textarea>\n <label for=\"float-input\">Observaciones</label>\n </span>\n <div class=\"flex flex-wrap justify-content-between gap-2\">\n <div\n *ngFor=\"let option of multiculturalities; index as i\"\n class=\"field-checkbox mt-4 flex align-items-center\"\n >\n <mat-checkbox\n [formControlName]=\"'multiculturalism' + '_' + (i + 1)\"\n class=\"example-margin\"\n ></mat-checkbox>\n <label [for]=\"option.code\">{{ option.name }}</label>\n </div>\n </div>\n </div>\n\n <div class=\"col-12 p-4 font-bold\">\n <p>\n * El estudiante o titular se comprometen a cancelar las cuotas\n establecidas en este contrato, los primeros 5 (cinco) d\u00EDas del mes. En\n caso de querer retirarse, deber\u00E1 informar por escrito 30 (treinta) d\u00EDas\n antes y cancelar lo correspondiente hasta la fecha definida de retiro,\n para poder obtener su paz y salvo.\n </p>\n <br /><br />\n <div class=\"flex gap-2\">\n <mat-checkbox\n formControlName=\"terms\"\n class=\"example-margin\"\n ></mat-checkbox>\n <!-- <p-checkbox [formControl]=\"getCheckboxControl()\"></p-checkbox> -->\n <!-- <ipt-checkbox [control]=\"codFormStepFive.controls['terms']\" [checkboxOption]=\"termsCheckboxStatus\"></ipt-checkbox> -->\n <p>\n DECLARO HABER LE\u00CDDO Y ACEPTO LOS T\u00C9RMINOS Y CONDICIONES DE LAS POL\u00CDTICAS\n ESTABLECIDAS EN LA INSTITUCI\u00D3N.\n </p>\n </div>\n </div>\n</form>\n\n<div class=\"flex mt-3 align-items-center gap-3\">\n <span\n *ngIf=\"\n (codFormStepFive.invalid && codFormStepFive.touched) ||\n (!termsCheckboxStatus && codFormStepFive.touched)\n \"\n class=\"\n text-red-500\n font-bold\n text-center\n mt-1\n py-2\n bg-red-100\n w-full\n border-round-xl\n \"\n >{{ errorMessage }}</span\n >\n <button\n type=\"submit\"\n [class]=\"isEditCod ? 'ml-auto yellow-300 p-button-sm' : 'ml-auto p-button-success p-button-sm'\"\n (click)=\"sendForm()\"\n pButton\n [label]=\"sendFormMsg\"\n icon=\"pi pi-check\"\n></button>\n</div>\n", styles: [":host ::ng-deep .p-button.p-button-sm{padding:.4rem!important}.yellow-300{background-color:var(--yellow-500)!important;color:#fff}@media screen and (min-width: 320px){.referred_user_data{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:.8rem;margin-bottom:2rem;border:1px solid #ced4da;border-radius:3px;padding:.5rem}.referred_title{font-size:.8rem;font-weight:400;padding-left:1rem;color:#6c757d}.containe_select1{width:100%}}@media screen and (min-width: 768px){.referred_user_data{grid-template-columns:1fr 1fr}}\n"] }]
|
|
215
|
+
}], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { userRole: [{
|
|
224
216
|
type: Input
|
|
225
217
|
}], initialData: [{
|
|
226
218
|
type: Input
|
|
@@ -228,9 +220,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImpor
|
|
|
228
220
|
type: Input
|
|
229
221
|
}], isRenovation: [{
|
|
230
222
|
type: Input
|
|
223
|
+
}], parametersAll: [{
|
|
224
|
+
type: Input
|
|
231
225
|
}], changeStepEvent: [{
|
|
232
226
|
type: Output
|
|
233
227
|
}], action: [{
|
|
234
228
|
type: Output
|
|
235
229
|
}] } });
|
|
236
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLWZvcm0tc3RlcC1maXZlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2Rlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb2Qvc3RlcHMvY29kLWZvcm0tc3RlcC1maXZlL2NvZC1mb3JtLXN0ZXAtZml2ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29kL3N0ZXBzL2NvZC1mb3JtLXN0ZXAtZml2ZS9jb2QtZm9ybS1zdGVwLWZpdmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBd0QsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHbEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQXNCLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7O0FBTzlFLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxZQUFZO0lBcUJ4RCxZQUNVLEVBQWUsRUFDZixnQkFBa0M7UUFFMUMsS0FBSyxFQUFFLENBQUM7UUFIQSxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQWxCbEMsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzdDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBSzlDLGlCQUFZLEdBQVcsMkJBQTJCLENBQUM7UUFFbkQsd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBRXJDLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBQzlCLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBRWhDLDBCQUEwQjtRQUMxQixhQUFRLEdBQUcsSUFBSSxlQUFlLEVBQUUs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Q0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdELElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ25FO0lBQ0gsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7O3FIQS9OVSx3QkFBd0I7eUdBQXhCLHdCQUF3QixpU0NackMsMDJKQWtKQTsyRkR0SWEsd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNFLHdCQUF3QjtpSUFLekIsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFBhcmFtZXRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL3BhcmFtZXRlcnMtc2VydmljZS9wYXJhbWV0ZXJzLnNlcnZpY2UnO1xuaW1wb3J0IFN3YWwgZnJvbSAnc3dlZXRhbGVydDInO1xuaW1wb3J0IHsgQ29kRm9ybUNvbnRyb2xzIH0gZnJvbSAnLi4vLi4vbG9naWMvY29kLWZvcm0tY29udHJvbHMnO1xuaW1wb3J0IHsgQ29kRm9ybVN0ZXBzLCBsb2NhbFN0b3JhZ2VWYWx1ZXMgfSBmcm9tICcuLi8uLi9sb2dpYy9jb2QtZm9ybS1zdGVwcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jb2QtZm9ybS1zdGVwLWZpdmUnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29kLWZvcm0tc3RlcC1maXZlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29kLWZvcm0tc3RlcC1maXZlLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDb2RGb3JtU3RlcEZpdmVDb21wb25lbnQgZXh0ZW5kcyBDb2RGb3JtU3RlcHMgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSB1c2VyUm9sZSE6IG51bWJlcjtcbiAgQElucHV0KCkgaW5pdGlhbERhdGE/OiBhbnk7XG4gIEBJbnB1dCgpIGlzRWRpdENvZD86IGJvb2xlYW47XG4gIEBJbnB1dCgpIGlzUmVub3ZhdGlvbj86IGJvb2xlYW47XG4gIEBPdXRwdXQoKSBjaGFuZ2VTdGVwRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgQE91dHB1dCgpIGFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIGNvZEZvcm1TdGVwRml2ZSE6IEZvcm1Hcm91cDtcbiAgbWFya2V0aW5nUmVhc29uczogYW55O1xuICBzdHVkeVJlYXNvbnM6IGFueTtcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmcgPSAnRmFsdGFuIGNhbXBvcyBwb3IgbGxlbmFyLic7XG4gIHNlbmRGb3JtTXNnITogc3RyaW5nO1xuICB0ZXJtc0NoZWNrYm94U3RhdHVzOiBib29sZWFuID0gZmFsc2U7XG4gIG11bHRpY3VsdHVyYWxpdGllczogYW55O1xuICBtb2RhbFZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgdmlzYmxlUmVmZXJyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBDb250cm9scyBkZWwgZm9ybXVsYXJpb1xuICBjb250cm9scyA9IG5ldyBDb2RGb3JtQ29udHJvbHMoKS5jb250cm9sc1s0XTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHBhcmFtZXRlclNlcnZpY2U6IFBhcmFtZXRlclNlcnZpY2UsXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy5pbml0Rm9ybSgpO1xuICAgIHRoaXMuc3RhcnRMb2NhbFN0b3JhZ2VXb3JrKCk7XG4gICAgdGhpcy5nZXRQYXJhbWV0ZXJzKCk7XG4gICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ3Rlcm1zJ10udmFsdWVDaGFuZ2VzLnN1YnNjcmliZShjaGFuZ2VzID0+IHtcbiAgICAgIHRoaXMudGVybXNDaGVja2JveFN0YXR1cyA9IGNoYW5nZXM7XG4gICAgICBpZiAoIXRoaXMudGVybXNDaGVja2JveFN0YXR1cykgdGhpcy5lcnJvck1lc3NhZ2UgPSAnRGViZSBtYXJjYXIgbGEgY2FzaWxsYSBkZSB0w6lybWlub3MgeSBjb25kaWNpb25lcy4nXG4gICAgfSlcbiAgICAvLyBpZiAodGhpcy51c2VyUm9sZSA9PT0gMzAgfHwgdGhpcy51c2VyUm9sZSA9PT0gMzEgfHwgdGhpcy51c2VyUm9sZSA9PT0gMzIpIHRoaXMuc2VuZEZvcm1Nc2cgPSAnRWRpdGFyIENPRCc7XG4gICAgaWYgKHRoaXMudXNlclJvbGUgPT09IDMwIHx8IHRoaXMudXNlclJvbGUgPT09IDMxIHx8IHRoaXMudXNlclJvbGUgPT09IDMyIHx8XG4gICAgICAgIHRoaXMudXNlclJvbGUgPT09IDQwIHx8IHRoaXMudXNlclJvbGUgPT09IDQxIHx8IHRoaXMudXNlclJvbGUgPT09IDQyIHx8XG4gICAgICAgIHRoaXMudXNlclJvbGUgPT09IDUwIHx8IHRoaXMudXNlclJvbGUgPT09IDUxIHx8IHRoaXMudXNlclJvbGUgPT09IDUyIHx8XG4gICAgICAgIHRoaXMudXNlclJvbGUgPT09IDFcbiAgICAgICAgKSB0aGlzLmlzRWRpdENvZCA/IHRoaXMuc2VuZEZvcm1Nc2cgPSAnRWRpdGFyIENPRCcgOiB0aGlzLnNlbmRGb3JtTXNnID0gJ0NyZWFyIENPRCc7XG4gICAgaWYgKGNoYW5nZXNbJ2luaXRpYWxEYXRhJ10pIHtcbiAgICAgIGlmICh0aGlzLmluaXRpYWxEYXRhICE9IG51bGwpIHtcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbERhdGEuc3R1ZGVudCAhPSBudWxsIHx8IHRoaXMuaW5pdGlhbERhdGEgIT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMuc2V0RGF0YUZyb21QcmV2aXVzQ29kKCk7XG4gICAgICAgIH1lbHNle1xuICAgICAgICAgIHRoaXMuc2V0RGF0YUZyb21Vc2VySGlzdG9yeSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0UGFyYW1ldGVycygpIHtcbiAgICB0aGlzLnBhcmFtZXRlclNlcnZpY2UuZ2V0TWFya2V0aW5nUmVhc29ucygpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgIHRoaXMubWFya2V0aW5nUmVhc29ucyA9IHJlc3BvbnNlLmRhdGE7XG4gICAgfSk7XG4gICAgdGhpcy5wYXJhbWV0ZXJTZXJ2aWNlLmdldFN0dWR5UmVhc29ucygpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgIHRoaXMuc3R1ZHlSZWFzb25zID0gcmVzcG9uc2UuZGF0YTtcbiAgICB9KTtcbiAgICB0aGlzLnBhcmFtZXRlclNlcnZpY2UuZ2V0TXVsdGljdWx0dXJhbGlzbXMoKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICB0aGlzLm11bHRpY3VsdHVyYWxpdGllcyA9IHJlc3BvbnNlLmRhdGE7XG4gICAgfSk7XG4gIH1cblxuICBpbml0Rm9ybSgpIHtcbiAgICB0aGlzLmNvZEZvcm1TdGVwRml2ZSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgbWFya2V0aW5nX3JlYXNvbnM6ICBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBvYnNlcnZhdGlvbjogICAgICAgIFsnJ10sXG4gICAgICBzdHVkeV9yZWFzb25zOiAgICAgIFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHRlcm1zOiAgICAgICAgICAgICAgW2ZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgZGlzYWJpbGl0eTogICAgICAgICBbJyddLFxuICAgICAgbXVsdGljdWx0dXJhbGlzbV8xOiBbZmFsc2UsIFtdXSxcbiAgICAgIG11bHRpY3VsdHVyYWxpc21fMjogW2ZhbHNlLCBbXV0sXG4gICAgICBtdWx0aWN1bHR1cmFsaXNtXzM6IFtmYWxzZSwgW11dLFxuICAgICAgbXVsdGljdWx0dXJhbGlzbV80OiBbZmFsc2UsIFtdXSxcbiAgICAgIG11bHRpY3VsdHVyYWxpc21fNTogW2ZhbHNlLCBbXV0sXG4gICAgICBtdWx0aWN1bHR1cmFsaXNtXzY6IFtmYWxzZSwgW11dLFxuICAgICAgbXVsdGljdWx0dXJhbGlzbV83OiBbZmFsc2UsIFtdXSxcbiAgICAgIGhlYWx0aF9yZWdpbWVuOiAgICAgWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgY29kZV9yZWZlcnM6ICAgICAgICBbJyddLFxuICAgICAgY29kZV9jb2Q6ICAgICAgICAgICBbJyddLFxuICAgICAgZG9jdW1lbnRfcmVmZXJzOiAgICBbeyB2YWx1ZTogJycsIGRpc2FibGVkOiB0cnVlIH1dLFxuICAgICAgbmFtZV9yZWZlcnM6ICAgICAgICBbeyB2YWx1ZTogJycsIGRpc2FibGVkOiB0cnVlIH1dLFxuICAgICAgcGhvbmVfcmVmZXJzOiAgICAgICBbeyB2YWx1ZTogJycsIGRpc2FibGVkOiB0cnVlIH1dLFxuICAgICAgZW1haWxfcmVmZXJzOiAgICAgICBbeyB2YWx1ZTogJycsIGRpc2FibGVkOiB0cnVlIH1dLFxuICAgIH0pO1xuXG4gICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ21hcmtldGluZ19yZWFzb25zJ10udmFsdWVDaGFuZ2VzLnN1YnNjcmliZShjaGFuZ2UgPT4ge1xuICAgICAgaWYgKGNoYW5nZSA9PT0gJzEnKSB7XG4gICAgICAgIHRoaXMubW9kYWxWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ2NvZGVfcmVmZXJzJ10uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xuICAgICAgICB0aGlzLmNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1snY29kZV9yZWZlcnMnXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1snY29kZV9yZWZlcnMnXS5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ2NvZGVfcmVmZXJzJ10udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICB0aGlzLmNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1snY29kZV9yZWZlcnMnXS5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgdGhpcy5tb2RhbFZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy52aXNibGVSZWZlcnJlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBzdGFydExvY2FsU3RvcmFnZVdvcmsoKSB7XG4gICAgdGhpcy5jb250cm9scy5mb3JFYWNoKGNvbnRyb2wgPT4ge1xuICAgICAgbGV0IGxvY2FsU3RvcmFnZVZhbHVlOiBsb2NhbFN0b3JhZ2VWYWx1ZXMgPSB0aGlzLnJlYWRBbmRXcml0ZUxTKDUsIGNvbnRyb2wubmFtZSk7XG5cbiAgICAgIC8vIFNvbHVjacOzbiBhbCBidWcgZGVsIGNoZWNrYm94XG4gICAgICBpZiAobG9jYWxTdG9yYWdlVmFsdWUuY29udHJvbCA9PT0gJ3Rlcm1zJykge1xuICAgICAgICBsZXQgbmV4dFZhbHVlOiBib29sZWFuID0gbG9jYWxTdG9yYWdlVmFsdWUudmFsdWUgPT09ICd0cnVlJyA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ3Rlcm1zJ10uc2V0VmFsdWUobmV4dFZhbHVlKTtcbiAgICAgICAgdGhpcy50ZXJtc0NoZWNrYm94U3RhdHVzID0gbmV4dFZhbHVlO1xuICAgICAgfVxuICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy9cblxuICAgICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbY29udHJvbC5uYW1lXS5zZXRWYWx1ZShsb2NhbFN0b3JhZ2VWYWx1ZS52YWx1ZSk7XG4gICAgICB0aGlzLmxpc3RlbkZvcm1DaGFuZ2VzKDUsIGNvbnRyb2wubmFtZSwgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbY29udHJvbC5uYW1lXS52YWx1ZUNoYW5nZXMpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jb250cm9scy5maWx0ZXIoY29udHJvbCA9PiBjb250cm9sLmRlc2NyaXB0aW9uID09PSAnTXVsdGljdWx0dXJhbGlzbW8nKS5mb3JFYWNoKGNvbnRyb2wgPT4ge1xuICAgICAgbGV0IGxvY2FsU3RvcmFnZVZhbHVlOiBsb2NhbFN0b3JhZ2VWYWx1ZXMgPSB0aGlzLnJlYWRBbmRXcml0ZUxTKDUsIGNvbnRyb2wubmFtZSk7XG4gICAgICBsZXQgbmV4dFZhbHVlOiBib29sZWFuID0gbG9jYWxTdG9yYWdlVmFsdWUudmFsdWUgPT09ICd0cnVlJyA/IHRydWUgOiBmYWxzZTtcbiAgICAgIHRoaXMuY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzW2NvbnRyb2wubmFtZV0uc2V0VmFsdWUobmV4dFZhbHVlKTtcbiAgICB9KVxuICB9XG5cbiAgZ2V0Q2hlY2tib3hDb250cm9sKCk6IEZvcm1Db250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ3Rlcm1zJ10gYXMgRm9ybUNvbnRyb2w7XG4gIH1cblxuICBzZW5kRm9ybSgpIHtcbiAgICB0aGlzLmNvZEZvcm1TdGVwRml2ZS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgaWYgKHRoaXMuY29kRm9ybVN0ZXBGaXZlLmludmFsaWQgfHwgdGhpcy50ZXJtc0NoZWNrYm94U3RhdHVzID09PSBmYWxzZSkgcmV0dXJuO1xuICAgICAgaWYgKHRoaXMudXNlclJvbGUgPT0gMzAgfHwgdGhpcy51c2VyUm9sZSA9PSAzMSB8fCB0aGlzLnVzZXJSb2xlID09IDMyIHx8XG4gICAgICAgIHRoaXMudXNlclJvbGUgPT0gNDAgfHwgdGhpcy51c2VyUm9sZSA9PSA0MSB8fCB0aGlzLnVzZXJSb2xlID09IDQyIHx8XG4gICAgICAgIHRoaXMudXNlclJvbGUgPT0gNTAgfHwgdGhpcy51c2VyUm9sZSA9PSA1MSB8fCB0aGlzLnVzZXJSb2xlID09IDUyIHx8XG4gICAgICAgIHRoaXMudXNlclJvbGUgPT0gMSkgdGhpcy5pc0VkaXRDb2QgPyB0aGlzLmFjdGlvbi5lbWl0KCd1cGRhdGUnKSA6IHRoaXMuYWN0aW9uLmVtaXQoJ2NyZWF0ZScpO1xuXG4gIH1cblxuICBjbGVhblN0b3JhZ2UoKXtcbiAgICBzZXNzaW9uU3RvcmFnZS5jbGVhcigpO1xuICAgIHRoaXMuc3RhcnRMb2NhbFN0b3JhZ2VXb3JrKClcbiAgfVxuXG4gIC8vIEV2ZW50b3MgZGVsIHNlbGVjdFxuICBzZWxlY3RNYXJrZXRpbmdSZWFzb25zKG1hcmtldGluZ1JlYXNvbnM6IGFueSkge1xuICAgIGlmIChtYXJrZXRpbmdSZWFzb25zICE9PSAnwr9Dw7NtbyBzZSBlbnRlcsOzIGRlbCBwcm9ncmFtYT8nKSB7XG4gICAgICB0aGlzLmNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1snbWFya2V0aW5nX3JlYXNvbnMnXS5zZXRWYWx1ZShtYXJrZXRpbmdSZWFzb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ21hcmtldGluZ19yZWFzb25zJ10uc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0U3R1ZHlSZWFzb25zKHN0dWR5UmVhc29uczogYW55KSB7XG4gICAgaWYgKHN0dWR5UmVhc29ucyAhPT0gJ01vdGl2bycpIHtcbiAgICAgIHRoaXMuY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWydzdHVkeV9yZWFzb25zJ10uc2V0VmFsdWUoc3R1ZHlSZWFzb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ3N0dWR5X3JlYXNvbnMnXS5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG4gIH1cblxuICBzZXREYXRhRnJvbVByZXZpdXNDb2QoKSB7XG4gICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ21hcmtldGluZ19yZWFzb25zJ10uc2V0VmFsdWUodGhpcy5pbml0aWFsRGF0YS5hZGl0aW9uYWxfaW5mb3JtYXRpb24/Lm1hcmtldGluZ19yZWFzb25zKTtcbiAgICB0aGlzLmNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1snc3R1ZHlfcmVhc29ucyddLnNldFZhbHVlKHRoaXMuaW5pdGlhbERhdGEuYWRpdGlvbmFsX2luZm9ybWF0aW9uPy5zdHVkeV9yZWFzb25zKTtcbiAgICB0aGlzLmNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1snZGlzYWJpbGl0eSddLnNldFZhbHVlKHRoaXMuaW5pdGlhbERhdGEuYWRpdGlvbmFsX2luZm9ybWF0aW9uPy5kaXNhYmlsaXR5KTtcbiAgICB0aGlzLmNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1snaGVhbHRoX3JlZ2ltZW4nXS5zZXRWYWx1ZSh0aGlzLmluaXRpYWxEYXRhLmFkaXRpb25hbF9pbmZvcm1hdGlvbj8uaGVhbHRoX3JlZ2ltZW4pO1xuICAgIHRoaXMuY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWydvYnNlcnZhdGlvbiddLnNldFZhbHVlKHRoaXMuaW5pdGlhbERhdGEuYWRpdGlvbmFsX2luZm9ybWF0aW9uPy5vYnNlcnZhdGlvbik7XG4gICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ2NvZGVfcmVmZXJzJ10uc2V0VmFsdWUodGhpcy5pc1Jlbm92YXRpb24gPT09IGZhbHNlID8gdGhpcy5pbml0aWFsRGF0YS5jb2RfcmVmZXJyYWw/LnVzZXJfcmVmZXJyZWQuY29kZSA6IG51bGwpO1xuICAgIGlmICh0aGlzLmNvZEZvcm1TdGVwRml2ZS5nZXQoJ21hcmtldGluZ19yZWFzb25zJyk/LnZhbHVlID09IDEpIHtcbiAgICAgIHRoaXMudmlzYmxlUmVmZXJyZWQgPSB0cnVlO1xuICAgICAgLy8gdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ2NvZGVfcmVmZXJzJ10uc2V0VmFsdWUodGhpcy5pbml0aWFsRGF0YS5jb2RfcmVmZXJyYWw/LnVzZXJfcmVmZXJyZWQuY29kZSk7XG4gICAgICB0aGlzLmNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1snZG9jdW1lbnRfcmVmZXJzJ10uc2V0VmFsdWUodGhpcy5pbml0aWFsRGF0YS5jb2RfcmVmZXJyYWw/LnVzZXJfcmVmZXJyZWQuaWRfY2FyZCk7XG4gICAgICB0aGlzLmNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1snbmFtZV9yZWZlcnMnXS5zZXRWYWx1ZSh0aGlzLmluaXRpYWxEYXRhLmNvZF9yZWZlcnJhbD8udXNlcl9yZWZlcnJlZC5uYW1lKTtcbiAgICAgIHRoaXMuY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWydwaG9uZV9yZWZlcnMnXS5zZXRWYWx1ZSh0aGlzLmluaXRpYWxEYXRhLmNvZF9yZWZlcnJhbD8udXNlcl9yZWZlcnJlZC5waG9uZV9udW1iZXIpO1xuICAgICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ2VtYWlsX3JlZmVycyddLnNldFZhbHVlKHRoaXMuaW5pdGlhbERhdGEuY29kX3JlZmVycmFsPy51c2VyX3JlZmVycmVkLmVtYWlsKTtcbiAgICB9ZWxzZXtcbiAgICAgIHRoaXMudmlzYmxlUmVmZXJyZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWydjb2RlX3JlZmVycyddLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ2RvY3VtZW50X3JlZmVycyddLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ25hbWVfcmVmZXJzJ10uc2V0VmFsdWUobnVsbCk7XG4gICAgICB0aGlzLmNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1sncGhvbmVfcmVmZXJzJ10uc2V0VmFsdWUobnVsbCk7XG4gICAgICB0aGlzLmNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1snZW1haWxfcmVmZXJzJ10uc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuICAgIHRoaXMuY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWydjb2RlX2NvZCddLnNldFZhbHVlKHRoaXMuaW5pdGlhbERhdGEuY29kZSk7XG4gIH1cbiAgc2V0RGF0YUZyb21Vc2VySGlzdG9yeSgpIHtcbiAgICB0aGlzLmNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1snbWFya2V0aW5nX3JlYXNvbnMnXS5zZXRWYWx1ZShudWxsKTtcbiAgICB0aGlzLmNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1snc3R1ZHlfcmVhc29ucyddLnNldFZhbHVlKG51bGwpO1xuICAgIHRoaXMuY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWydkaXNhYmlsaXR5J10uc2V0VmFsdWUobnVsbCk7XG4gICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ2hlYWx0aF9yZWdpbWVuJ10uc2V0VmFsdWUobnVsbCk7XG4gICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ29ic2VydmF0aW9uJ10uc2V0VmFsdWUobnVsbCk7XG4gICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ2NvZGVfcmVmZXJzJ10uc2V0VmFsdWUobnVsbCk7XG4gICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ2NvZGVfY29kJ10uc2V0VmFsdWUobnVsbCk7XG4gIH1cblxuICBjbGVhbkNvbXBvbmVudCgpe1xuICAgIHRoaXMucmVzZXRMb2NhbFN0b3JhZ2UodGhpcy5jb250cm9scyk7XG4gICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUucmVzZXQoKTtcbiAgfVxuXG4gIHJlZmVycmVkVXNlcihkYXRhOiBhbnkpe1xuICAgIHRoaXMubW9kYWxWaXNpYmxlID0gZmFsc2U7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMudmlzYmxlUmVmZXJyZWQgPSB0cnVlO1xuICAgICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ2NvZGVfcmVmZXJzJ10uc2V0VmFsdWUoZGF0YVsnY29kZSddKTtcbiAgICAgIHRoaXMuY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWydkb2N1bWVudF9yZWZlcnMnXS5zZXRWYWx1ZShkYXRhWydpZF9jYXJkJ10pO1xuICAgICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ25hbWVfcmVmZXJzJ10uc2V0VmFsdWUoZGF0YVsnbmFtZSddKTtcbiAgICAgIHRoaXMuY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWydwaG9uZV9yZWZlcnMnXS5zZXRWYWx1ZShkYXRhWydwaG9uZV9udW1iZXInXSk7XG4gICAgICB0aGlzLmNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1snZW1haWxfcmVmZXJzJ10uc2V0VmFsdWUoZGF0YVsnZW1haWwnXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmlzYmxlUmVmZXJyZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWydjb2RlX3JlZmVycyddLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ2RvY3VtZW50X3JlZmVycyddLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ25hbWVfcmVmZXJzJ10uc2V0VmFsdWUobnVsbCk7XG4gICAgICB0aGlzLmNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1sncGhvbmVfcmVmZXJzJ10uc2V0VmFsdWUobnVsbCk7XG4gICAgICB0aGlzLmNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1snZW1haWxfcmVmZXJzJ10uc2V0VmFsdWUobnVsbCk7XG4gICAgICB0aGlzLmNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1snbWFya2V0aW5nX3JlYXNvbnMnXS5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG4gIH1cblxuICBvcGVuTW9kYWxSZWZlcnJlZCgpe1xuICAgIHRoaXMubW9kYWxWaXNpYmxlID0gdHJ1ZTtcbiAgfVxuXG5cbn1cbiIsIjxmb3JtIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFtmb3JtR3JvdXBdPVwiY29kRm9ybVN0ZXBGaXZlXCIgY2xhc3M9XCJncmlkXCI+XG4gIDxkaXYgY2xhc3M9XCJjb2wtMTIgbWQ6Y29sLTZcIj5cbiAgICA8Y29kLW1vZGFsLXJlZmVycmVkXG4gICAgKm5nSWY9XCJtb2RhbFZpc2libGVcIlxuICAgIFt2aXNpYmlsaXR5XT1cIm1vZGFsVmlzaWJsZVwiXG4gICAgKHVzZXJTZWxlY3QpPVwicmVmZXJyZWRVc2VyKCRldmVudClcIlxuICAgID48L2NvZC1tb2RhbC1yZWZlcnJlZD5cblxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJfcmVmZXJyZWQgZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1lbmRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZV9zZWxlY3QxXCI+XG4gICAgICAgIDxpcHQtc2VsZWN0XG4gICAgICAgICAgW2NvbnRyb2xdPVwiY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWydtYXJrZXRpbmdfcmVhc29ucyddXCJcbiAgICAgICAgICBbaW5pdGlhbFZhbHVlXT1cImNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1snbWFya2V0aW5nX3JlYXNvbnMnXS52YWx1ZVwiXG4gICAgICAgICAgKGV2ZW50U2VsZWN0KT1cInNlbGVjdE1hcmtldGluZ1JlYXNvbnMoJGV2ZW50KVwiXG4gICAgICAgICAgW2RhdGFdPVwibWFya2V0aW5nUmVhc29uc1wiXG4gICAgICAgICAgW2RlZmF1bHRUZXh0XT1cIifCv0PDs21vIHNlIGVudGVyw7MgZGVsIHByb2dyYW1hPydcIlxuICAgICAgICA+PC9pcHQtc2VsZWN0PlxuICAgICAgPC9kaXY+XG4gICAgICA8cC1idXR0b25cbiAgICAgICpuZ0lmPVwidmlzYmxlUmVmZXJyZWRcIlxuICAgICAgc3R5bGVDbGFzcz1cInAtYnV0dG9uLXNtIHctbWF4XCJcbiAgICAgIGxhYmVsPVwiQ2FtYmlhciBSZWZlcmlkb1wiXG4gICAgICBpY29uPVwicGkgcGktc3luY1wiXG4gICAgICAob25DbGljayk9XCJvcGVuTW9kYWxSZWZlcnJlZCgpXCJcbiAgICA+PC9wLWJ1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxpcHQtaW5wdXRcbiAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgIFtwbGFjZUhvbGRlcl09XCInRGlzY2FwYWNpZGFkJ1wiXG4gICAgICBbY29udHJvbF09XCJjb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ2Rpc2FiaWxpdHknXVwiXG4gICAgPjwvaXB0LWlucHV0PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNvbC0xMiBtZDpjb2wtNlwiPlxuICAgIDxpcHQtc2VsZWN0XG4gICAgICBbY29udHJvbF09XCJjb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ3N0dWR5X3JlYXNvbnMnXVwiXG4gICAgICBbaW5pdGlhbFZhbHVlXT1cImNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1snc3R1ZHlfcmVhc29ucyddLnZhbHVlXCJcbiAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RTdHVkeVJlYXNvbnMoJGV2ZW50KVwiXG4gICAgICBbZGF0YV09XCJzdHVkeVJlYXNvbnNcIlxuICAgICAgW2RlZmF1bHRUZXh0XT1cIidNb3Rpdm8nXCJcbiAgICA+PC9pcHQtc2VsZWN0PlxuICAgIDxpcHQtaW5wdXRcbiAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgIFtwbGFjZUhvbGRlcl09XCInUsOpZ2ltZW4gZGUgc2FsdWQnXCJcbiAgICAgIFtjb250cm9sXT1cImNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1snaGVhbHRoX3JlZ2ltZW4nXVwiXG4gICAgPjwvaXB0LWlucHV0PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgIDxoMyAqbmdJZj1cInZpc2JsZVJlZmVycmVkXCIgY2xhc3M9XCJyZWZlcnJlZF90aXRsZVwiPkRhdG9zIGRlbCByZWZlcmlkbzwvaDM+XG4gICAgPGRpdiAqbmdJZj1cInZpc2JsZVJlZmVycmVkXCIgY2xhc3M9XCJyZWZlcnJlZF91c2VyX2RhdGFcIj5cbiAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0RvY3VtZW50bydcIlxuICAgICAgICBbY29udHJvbF09XCJjb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ2RvY3VtZW50X3JlZmVycyddXCJcbiAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ05vbWJyZXMnXCJcbiAgICAgICAgW2NvbnRyb2xdPVwiY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWyduYW1lX3JlZmVycyddXCJcbiAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ1RlbMOpZm9ubydcIlxuICAgICAgICBbY29udHJvbF09XCJjb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ3Bob25lX3JlZmVycyddXCJcbiAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0VtYWlsJ1wiXG4gICAgICAgIFtjb250cm9sXT1cImNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1snZW1haWxfcmVmZXJzJ11cIlxuICAgICAgPjwvaXB0LWlucHV0PlxuICAgIDwvZGl2PlxuICAgIDxzcGFuIGNsYXNzPVwicC1mbG9hdC1sYWJlbFwiPlxuICAgICAgPHRleHRhcmVhXG4gICAgICAgIGlkPVwiZmxvYXQtaW5wdXRcIlxuICAgICAgICByb3dzPVwiNFwiXG4gICAgICAgIGNvbHM9XCIzMFwiXG4gICAgICAgIHBJbnB1dFRleHRhcmVhXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm9ic2VydmF0aW9uXCJcbiAgICAgID48L3RleHRhcmVhPlxuICAgICAgPGxhYmVsIGZvcj1cImZsb2F0LWlucHV0XCI+T2JzZXJ2YWNpb25lczwvbGFiZWw+XG4gICAgPC9zcGFuPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBnYXAtMlwiPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG11bHRpY3VsdHVyYWxpdGllczsgaW5kZXggYXMgaVwiXG4gICAgICAgIGNsYXNzPVwiZmllbGQtY2hlY2tib3ggbXQtNCBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIidtdWx0aWN1bHR1cmFsaXNtJyArICdfJyArIChpICsgMSlcIlxuICAgICAgICAgIGNsYXNzPVwiZXhhbXBsZS1tYXJnaW5cIlxuICAgICAgICA+PC9tYXQtY2hlY2tib3g+XG4gICAgICAgIDxsYWJlbCBbZm9yXT1cIm9wdGlvbi5jb2RlXCI+e3sgb3B0aW9uLm5hbWUgfX08L2xhYmVsPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJjb2wtMTIgcC00IGZvbnQtYm9sZFwiPlxuICAgIDxwPlxuICAgICAgKiBFbCBlc3R1ZGlhbnRlIG8gdGl0dWxhciBzZSBjb21wcm9tZXRlbiBhIGNhbmNlbGFyIGxhcyBjdW90YXNcbiAgICAgIGVzdGFibGVjaWRhcyBlbiBlc3RlIGNvbnRyYXRvLCBsb3MgcHJpbWVyb3MgNSAoY2luY28pIGTDrWFzIGRlbCBtZXMuIEVuXG4gICAgICBjYXNvIGRlIHF1ZXJlciByZXRpcmFyc2UsIGRlYmVyw6EgaW5mb3JtYXIgcG9yIGVzY3JpdG8gMzAgKHRyZWludGEpIGTDrWFzXG4gICAgICBhbnRlcyB5IGNhbmNlbGFyIGxvIGNvcnJlc3BvbmRpZW50ZSBoYXN0YSBsYSBmZWNoYSBkZWZpbmlkYSBkZSByZXRpcm8sXG4gICAgICBwYXJhIHBvZGVyIG9idGVuZXIgc3UgcGF6IHkgc2Fsdm8uXG4gICAgPC9wPlxuICAgIDxiciAvPjxiciAvPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0yXCI+XG4gICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRlcm1zXCJcbiAgICAgICAgY2xhc3M9XCJleGFtcGxlLW1hcmdpblwiXG4gICAgICA+PC9tYXQtY2hlY2tib3g+XG4gICAgICA8IS0tIDxwLWNoZWNrYm94IFtmb3JtQ29udHJvbF09XCJnZXRDaGVja2JveENvbnRyb2woKVwiPjwvcC1jaGVja2JveD4gLS0+XG4gICAgICA8IS0tIDxpcHQtY2hlY2tib3ggW2NvbnRyb2xdPVwiY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWyd0ZXJtcyddXCIgW2NoZWNrYm94T3B0aW9uXT1cInRlcm1zQ2hlY2tib3hTdGF0dXNcIj48L2lwdC1jaGVja2JveD4gLS0+XG4gICAgICA8cD5cbiAgICAgICAgREVDTEFSTyBIQUJFUiBMRcONRE8gWSBBQ0VQVE8gTE9TIFTDiVJNSU5PUyBZIENPTkRJQ0lPTkVTIERFIExBUyBQT0zDjVRJQ0FTXG4gICAgICAgIEVTVEFCTEVDSURBUyBFTiBMQSBJTlNUSVRVQ0nDk04uXG4gICAgICA8L3A+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9mb3JtPlxuXG48ZGl2IGNsYXNzPVwiZmxleCBtdC0zIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICA8c3BhblxuICAgICpuZ0lmPVwiXG4gICAgICAoY29kRm9ybVN0ZXBGaXZlLmludmFsaWQgJiYgY29kRm9ybVN0ZXBGaXZlLnRvdWNoZWQpIHx8XG4gICAgICAoIXRlcm1zQ2hlY2tib3hTdGF0dXMgJiYgY29kRm9ybVN0ZXBGaXZlLnRvdWNoZWQpXG4gICAgXCJcbiAgICBjbGFzcz1cIlxuICAgICAgdGV4dC1yZWQtNTAwXG4gICAgICBmb250LWJvbGRcbiAgICAgIHRleHQtY2VudGVyXG4gICAgICBtdC0xXG4gICAgICBweS0yXG4gICAgICBiZy1yZWQtMTAwXG4gICAgICB3LWZ1bGxcbiAgICAgIGJvcmRlci1yb3VuZC14bFxuICAgIFwiXG4gICAgPnt7IGVycm9yTWVzc2FnZSB9fTwvc3BhblxuICA+XG4gIDxidXR0b25cbiAgdHlwZT1cInN1Ym1pdFwiXG4gIFtjbGFzc109XCJpc0VkaXRDb2QgPyAnbWwtYXV0byB5ZWxsb3ctMzAwIHAtYnV0dG9uLXNtJyA6ICdtbC1hdXRvIHAtYnV0dG9uLXN1Y2Nlc3MgcC1idXR0b24tc20nXCJcbiAgKGNsaWNrKT1cInNlbmRGb3JtKClcIlxuICBwQnV0dG9uXG4gIFtsYWJlbF09XCJzZW5kRm9ybU1zZ1wiXG4gIGljb249XCJwaSBwaS1jaGVja1wiXG4+PC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
|
|
230
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLWZvcm0tc3RlcC1maXZlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2Rlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb2Qvc3RlcHMvY29kLWZvcm0tc3RlcC1maXZlL2NvZC1mb3JtLXN0ZXAtZml2ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29kL3N0ZXBzL2NvZC1mb3JtLXN0ZXAtZml2ZS9jb2QtZm9ybS1zdGVwLWZpdmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUF1QyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBc0IsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7OztBQVM5RSxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsWUFBWTtJQXNCeEQsWUFDVSxFQUFlO1FBRXZCLEtBQUssRUFBRSxDQUFDO1FBRkEsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQWpCZixvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDN0MsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFLOUMsaUJBQVksR0FBVywyQkFBMkIsQ0FBQztRQUVuRCx3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFFckMsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDOUIsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFFaEMsMEJBQTBCO1FBQzFCLGFBQVEsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQU03QyxDQUFDO0lBRUQs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UUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNJLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb2RGb3JtQ29udHJvbHMgfSBmcm9tICcuLi8uLi9sb2dpYy9jb2QtZm9ybS1jb250cm9scyc7XG5pbXBvcnQgeyBDb2RGb3JtU3RlcHMsIGxvY2FsU3RvcmFnZVZhbHVlcyB9IGZyb20gJy4uLy4uL2xvZ2ljL2NvZC1mb3JtLXN0ZXBzJztcbmltcG9ydCB7IElQYXJhbWV0ZXJzQWxsUnMgfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscy9wYXJhbWV0ZXJzL3BhcmFtZXRlcnMtcnMubW9kZWwnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jb2QtZm9ybS1zdGVwLWZpdmUnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29kLWZvcm0tc3RlcC1maXZlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29kLWZvcm0tc3RlcC1maXZlLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDb2RGb3JtU3RlcEZpdmVDb21wb25lbnQgZXh0ZW5kcyBDb2RGb3JtU3RlcHMgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSB1c2VyUm9sZSE6IG51bWJlcjtcbiAgQElucHV0KCkgaW5pdGlhbERhdGE/OiBhbnk7XG4gIEBJbnB1dCgpIGlzRWRpdENvZD86IGJvb2xlYW47XG4gIEBJbnB1dCgpIGlzUmVub3ZhdGlvbj86IGJvb2xlYW47XG4gIEBJbnB1dCgpIHBhcmFtZXRlcnNBbGw/OklQYXJhbWV0ZXJzQWxsUnM7XG4gIEBPdXRwdXQoKSBjaGFuZ2VTdGVwRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgQE91dHB1dCgpIGFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIGNvZEZvcm1TdGVwRml2ZSE6IEZvcm1Hcm91cDtcbiAgbWFya2V0aW5nUmVhc29uczogYW55O1xuICBzdHVkeVJlYXNvbnM6IGFueTtcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmcgPSAnRmFsdGFuIGNhbXBvcyBwb3IgbGxlbmFyLic7XG4gIHNlbmRGb3JtTXNnITogc3RyaW5nO1xuICB0ZXJtc0NoZWNrYm94U3RhdHVzOiBib29sZWFuID0gZmFsc2U7XG4gIG11bHRpY3VsdHVyYWxpdGllczogYW55O1xuICBtb2RhbFZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgdmlzYmxlUmVmZXJyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBDb250cm9scyBkZWwgZm9ybXVsYXJpb1xuICBjb250cm9scyA9IG5ldyBDb2RGb3JtQ29udHJvbHMoKS5jb250cm9sc1s0XTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRGb3JtKCk7XG4gICAgdGhpcy5zdGFydExvY2FsU3RvcmFnZVdvcmsoKTtcbiAgICB0aGlzLmdldFBhcmFtZXRlcnMoKTtcbiAgICB0aGlzLmNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1sndGVybXMnXS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKGNoYW5nZXMgPT4ge1xuICAgICAgdGhpcy50ZXJtc0NoZWNrYm94U3RhdHVzID0gY2hhbmdlcztcbiAgICAgIGlmICghdGhpcy50ZXJtc0NoZWNrYm94U3RhdHVzKSB0aGlzLmVycm9yTWVzc2FnZSA9ICdEZWJlIG1hcmNhciBsYSBjYXNpbGxhIGRlIHTDqXJtaW5vcyB5IGNvbmRpY2lvbmVzLidcbiAgICB9KVxuICAgIC8vIGlmICh0aGlzLnVzZXJSb2xlID09PSAzMCB8fCB0aGlzLnVzZXJSb2xlID09PSAzMSB8fCB0aGlzLnVzZXJSb2xlID09PSAzMikgdGhpcy5zZW5kRm9ybU1zZyA9ICdFZGl0YXIgQ09EJztcbiAgICBpZiAodGhpcy51c2VyUm9sZSA9PT0gMzAgfHwgdGhpcy51c2VyUm9sZSA9PT0gMzEgfHwgdGhpcy51c2VyUm9sZSA9PT0gMzIgfHxcbiAgICAgICAgdGhpcy51c2VyUm9sZSA9PT0gNDAgfHwgdGhpcy51c2VyUm9sZSA9PT0gNDEgfHwgdGhpcy51c2VyUm9sZSA9PT0gNDIgfHxcbiAgICAgICAgdGhpcy51c2VyUm9sZSA9PT0gNTAgfHwgdGhpcy51c2VyUm9sZSA9PT0gNTEgfHwgdGhpcy51c2VyUm9sZSA9PT0gNTIgfHxcbiAgICAgICAgdGhpcy51c2VyUm9sZSA9PT0gMVxuICAgICAgICApIHRoaXMuaXNFZGl0Q29kID8gdGhpcy5zZW5kRm9ybU1zZyA9ICdFZGl0YXIgQ09EJyA6IHRoaXMuc2VuZEZvcm1Nc2cgPSAnQ3JlYXIgQ09EJztcbiAgICBpZiAoY2hhbmdlc1snaW5pdGlhbERhdGEnXSkge1xuICAgICAgaWYgKHRoaXMuaW5pdGlhbERhdGEgIT0gbnVsbCkge1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsRGF0YS5zdHVkZW50ICE9IG51bGwgfHwgdGhpcy5pbml0aWFsRGF0YSAhPSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5zZXREYXRhRnJvbVByZXZpdXNDb2QoKTtcbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgdGhpcy5zZXREYXRhRnJvbVVzZXJIaXN0b3J5KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRQYXJhbWV0ZXJzKCkge1xuICAgIHRoaXMubWFya2V0aW5nUmVhc29ucyA9IHRoaXMucGFyYW1ldGVyc0FsbD8ubWtSZWFzb25zO1xuICAgIHRoaXMuc3R1ZHlSZWFzb25zID0gdGhpcy5wYXJhbWV0ZXJzQWxsPy5zdHVkeVJlYXNvbnM7XG4gICAgdGhpcy5tdWx0aWN1bHR1cmFsaXRpZXMgPSB0aGlzLnBhcmFtZXRlcnNBbGw/Lk11bHRpY3VsdHVyYWxpc207IFxuICB9XG5cbiAgaW5pdEZvcm0oKSB7XG4gICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUgPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIG1hcmtldGluZ19yZWFzb25zOiAgWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgb2JzZXJ2YXRpb246ICAgICAgICBbJyddLFxuICAgICAgc3R1ZHlfcmVhc29uczogICAgICBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICB0ZXJtczogICAgICAgICAgICAgIFtmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIGRpc2FiaWxpdHk6ICAgICAgICAgWycnXSxcbiAgICAgIG11bHRpY3VsdHVyYWxpc21fMTogW2ZhbHNlLCBbXV0sXG4gICAgICBtdWx0aWN1bHR1cmFsaXNtXzI6IFtmYWxzZSwgW11dLFxuICAgICAgbXVsdGljdWx0dXJhbGlzbV8zOiBbZmFsc2UsIFtdXSxcbiAgICAgIG11bHRpY3VsdHVyYWxpc21fNDogW2ZhbHNlLCBbXV0sXG4gICAgICBtdWx0aWN1bHR1cmFsaXNtXzU6IFtmYWxzZSwgW11dLFxuICAgICAgbXVsdGljdWx0dXJhbGlzbV82OiBbZmFsc2UsIFtdXSxcbiAgICAgIG11bHRpY3VsdHVyYWxpc21fNzogW2ZhbHNlLCBbXV0sXG4gICAgICBoZWFsdGhfcmVnaW1lbjogICAgIFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIGNvZGVfcmVmZXJzOiAgICAgICAgWycnXSxcbiAgICAgIGNvZGVfY29kOiAgICAgICAgICAgWycnXSxcbiAgICAgIGRvY3VtZW50X3JlZmVyczogICAgW3sgdmFsdWU6ICcnLCBkaXNhYmxlZDogdHJ1ZSB9XSxcbiAgICAgIG5hbWVfcmVmZXJzOiAgICAgICAgW3sgdmFsdWU6ICcnLCBkaXNhYmxlZDogdHJ1ZSB9XSxcbiAgICAgIHBob25lX3JlZmVyczogICAgICAgW3sgdmFsdWU6ICcnLCBkaXNhYmxlZDogdHJ1ZSB9XSxcbiAgICAgIGVtYWlsX3JlZmVyczogICAgICAgW3sgdmFsdWU6ICcnLCBkaXNhYmxlZDogdHJ1ZSB9XSxcbiAgICB9KTtcblxuICAgIHRoaXMuY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWydtYXJrZXRpbmdfcmVhc29ucyddLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoY2hhbmdlID0+IHtcbiAgICAgIGlmIChjaGFuZ2UgPT09ICcxJykge1xuICAgICAgICB0aGlzLm1vZGFsVmlzaWJsZSA9IHRydWU7XG4gICAgICAgIHRoaXMuY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWydjb2RlX3JlZmVycyddLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcbiAgICAgICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ2NvZGVfcmVmZXJzJ10udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ2NvZGVfcmVmZXJzJ10uY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgIHRoaXMuY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWydjb2RlX3JlZmVycyddLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ2NvZGVfcmVmZXJzJ10uc2V0VmFsdWUobnVsbCk7XG4gICAgICAgIHRoaXMubW9kYWxWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMudmlzYmxlUmVmZXJyZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgc3RhcnRMb2NhbFN0b3JhZ2VXb3JrKCkge1xuICAgIHRoaXMuY29udHJvbHMuZm9yRWFjaChjb250cm9sID0+IHtcbiAgICAgIGxldCBsb2NhbFN0b3JhZ2VWYWx1ZTogbG9jYWxTdG9yYWdlVmFsdWVzID0gdGhpcy5yZWFkQW5kV3JpdGVMUyg1LCBjb250cm9sLm5hbWUpO1xuXG4gICAgICAvLyBTb2x1Y2nDs24gYWwgYnVnIGRlbCBjaGVja2JveFxuICAgICAgaWYgKGxvY2FsU3RvcmFnZVZhbHVlLmNvbnRyb2wgPT09ICd0ZXJtcycpIHtcbiAgICAgICAgbGV0IG5leHRWYWx1ZTogYm9vbGVhbiA9IGxvY2FsU3RvcmFnZVZhbHVlLnZhbHVlID09PSAndHJ1ZScgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgIHRoaXMuY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWyd0ZXJtcyddLnNldFZhbHVlKG5leHRWYWx1ZSk7XG4gICAgICAgIHRoaXMudGVybXNDaGVja2JveFN0YXR1cyA9IG5leHRWYWx1ZTtcbiAgICAgIH1cbiAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vXG5cbiAgICAgIHRoaXMuY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzW2NvbnRyb2wubmFtZV0uc2V0VmFsdWUobG9jYWxTdG9yYWdlVmFsdWUudmFsdWUpO1xuICAgICAgdGhpcy5saXN0ZW5Gb3JtQ2hhbmdlcyg1LCBjb250cm9sLm5hbWUsIHRoaXMuY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzW2NvbnRyb2wubmFtZV0udmFsdWVDaGFuZ2VzKTtcbiAgICB9KTtcblxuICAgIHRoaXMuY29udHJvbHMuZmlsdGVyKGNvbnRyb2wgPT4gY29udHJvbC5kZXNjcmlwdGlvbiA9PT0gJ011bHRpY3VsdHVyYWxpc21vJykuZm9yRWFjaChjb250cm9sID0+IHtcbiAgICAgIGxldCBsb2NhbFN0b3JhZ2VWYWx1ZTogbG9jYWxTdG9yYWdlVmFsdWVzID0gdGhpcy5yZWFkQW5kV3JpdGVMUyg1LCBjb250cm9sLm5hbWUpO1xuICAgICAgbGV0IG5leHRWYWx1ZTogYm9vbGVhbiA9IGxvY2FsU3RvcmFnZVZhbHVlLnZhbHVlID09PSAndHJ1ZScgPyB0cnVlIDogZmFsc2U7XG4gICAgICB0aGlzLmNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1tjb250cm9sLm5hbWVdLnNldFZhbHVlKG5leHRWYWx1ZSk7XG4gICAgfSlcbiAgfVxuXG4gIGdldENoZWNrYm94Q29udHJvbCgpOiBGb3JtQ29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWyd0ZXJtcyddIGFzIEZvcm1Db250cm9sO1xuICB9XG5cbiAgc2VuZEZvcm0oKSB7XG4gICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgIGlmICh0aGlzLmNvZEZvcm1TdGVwRml2ZS5pbnZhbGlkIHx8IHRoaXMudGVybXNDaGVja2JveFN0YXR1cyA9PT0gZmFsc2UpIHJldHVybjtcbiAgICAgIGlmICh0aGlzLnVzZXJSb2xlID09IDMwIHx8IHRoaXMudXNlclJvbGUgPT0gMzEgfHwgdGhpcy51c2VyUm9sZSA9PSAzMiB8fFxuICAgICAgICB0aGlzLnVzZXJSb2xlID09IDQwIHx8IHRoaXMudXNlclJvbGUgPT0gNDEgfHwgdGhpcy51c2VyUm9sZSA9PSA0MiB8fFxuICAgICAgICB0aGlzLnVzZXJSb2xlID09IDUwIHx8IHRoaXMudXNlclJvbGUgPT0gNTEgfHwgdGhpcy51c2VyUm9sZSA9PSA1MiB8fFxuICAgICAgICB0aGlzLnVzZXJSb2xlID09IDEpIHRoaXMuaXNFZGl0Q29kID8gdGhpcy5hY3Rpb24uZW1pdCgndXBkYXRlJykgOiB0aGlzLmFjdGlvbi5lbWl0KCdjcmVhdGUnKTtcblxuICB9XG5cbiAgY2xlYW5TdG9yYWdlKCl7XG4gICAgc2Vzc2lvblN0b3JhZ2UuY2xlYXIoKTtcbiAgICB0aGlzLnN0YXJ0TG9jYWxTdG9yYWdlV29yaygpXG4gIH1cblxuICAvLyBFdmVudG9zIGRlbCBzZWxlY3RcbiAgc2VsZWN0TWFya2V0aW5nUmVhc29ucyhtYXJrZXRpbmdSZWFzb25zOiBhbnkpIHtcbiAgICBpZiAobWFya2V0aW5nUmVhc29ucyAhPT0gJ8K/Q8OzbW8gc2UgZW50ZXLDsyBkZWwgcHJvZ3JhbWE/Jykge1xuICAgICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ21hcmtldGluZ19yZWFzb25zJ10uc2V0VmFsdWUobWFya2V0aW5nUmVhc29ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWydtYXJrZXRpbmdfcmVhc29ucyddLnNldFZhbHVlKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFN0dWR5UmVhc29ucyhzdHVkeVJlYXNvbnM6IGFueSkge1xuICAgIGlmIChzdHVkeVJlYXNvbnMgIT09ICdNb3Rpdm8nKSB7XG4gICAgICB0aGlzLmNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1snc3R1ZHlfcmVhc29ucyddLnNldFZhbHVlKHN0dWR5UmVhc29ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWydzdHVkeV9yZWFzb25zJ10uc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgc2V0RGF0YUZyb21QcmV2aXVzQ29kKCkge1xuICAgIHRoaXMuY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWydtYXJrZXRpbmdfcmVhc29ucyddLnNldFZhbHVlKHRoaXMuaW5pdGlhbERhdGEuYWRpdGlvbmFsX2luZm9ybWF0aW9uPy5tYXJrZXRpbmdfcmVhc29ucyk7XG4gICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ3N0dWR5X3JlYXNvbnMnXS5zZXRWYWx1ZSh0aGlzLmluaXRpYWxEYXRhLmFkaXRpb25hbF9pbmZvcm1hdGlvbj8uc3R1ZHlfcmVhc29ucyk7XG4gICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ2Rpc2FiaWxpdHknXS5zZXRWYWx1ZSh0aGlzLmluaXRpYWxEYXRhLmFkaXRpb25hbF9pbmZvcm1hdGlvbj8uZGlzYWJpbGl0eSk7XG4gICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ2hlYWx0aF9yZWdpbWVuJ10uc2V0VmFsdWUodGhpcy5pbml0aWFsRGF0YS5hZGl0aW9uYWxfaW5mb3JtYXRpb24/LmhlYWx0aF9yZWdpbWVuKTtcbiAgICB0aGlzLmNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1snb2JzZXJ2YXRpb24nXS5zZXRWYWx1ZSh0aGlzLmluaXRpYWxEYXRhLmFkaXRpb25hbF9pbmZvcm1hdGlvbj8ub2JzZXJ2YXRpb24pO1xuICAgIHRoaXMuY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWydjb2RlX3JlZmVycyddLnNldFZhbHVlKHRoaXMuaXNSZW5vdmF0aW9uID09PSBmYWxzZSA/IHRoaXMuaW5pdGlhbERhdGEuY29kX3JlZmVycmFsPy51c2VyX3JlZmVycmVkLmNvZGUgOiBudWxsKTtcbiAgICBpZiAodGhpcy5jb2RGb3JtU3RlcEZpdmUuZ2V0KCdtYXJrZXRpbmdfcmVhc29ucycpPy52YWx1ZSA9PSAxKSB7XG4gICAgICB0aGlzLnZpc2JsZVJlZmVycmVkID0gdHJ1ZTtcbiAgICAgIC8vIHRoaXMuY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWydjb2RlX3JlZmVycyddLnNldFZhbHVlKHRoaXMuaW5pdGlhbERhdGEuY29kX3JlZmVycmFsPy51c2VyX3JlZmVycmVkLmNvZGUpO1xuICAgICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ2RvY3VtZW50X3JlZmVycyddLnNldFZhbHVlKHRoaXMuaW5pdGlhbERhdGEuY29kX3JlZmVycmFsPy51c2VyX3JlZmVycmVkLmlkX2NhcmQpO1xuICAgICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ25hbWVfcmVmZXJzJ10uc2V0VmFsdWUodGhpcy5pbml0aWFsRGF0YS5jb2RfcmVmZXJyYWw/LnVzZXJfcmVmZXJyZWQubmFtZSk7XG4gICAgICB0aGlzLmNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1sncGhvbmVfcmVmZXJzJ10uc2V0VmFsdWUodGhpcy5pbml0aWFsRGF0YS5jb2RfcmVmZXJyYWw/LnVzZXJfcmVmZXJyZWQucGhvbmVfbnVtYmVyKTtcbiAgICAgIHRoaXMuY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWydlbWFpbF9yZWZlcnMnXS5zZXRWYWx1ZSh0aGlzLmluaXRpYWxEYXRhLmNvZF9yZWZlcnJhbD8udXNlcl9yZWZlcnJlZC5lbWFpbCk7XG4gICAgfWVsc2V7XG4gICAgICB0aGlzLnZpc2JsZVJlZmVycmVkID0gZmFsc2U7XG4gICAgICB0aGlzLmNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1snY29kZV9yZWZlcnMnXS5zZXRWYWx1ZShudWxsKTtcbiAgICAgIHRoaXMuY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWydkb2N1bWVudF9yZWZlcnMnXS5zZXRWYWx1ZShudWxsKTtcbiAgICAgIHRoaXMuY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWyduYW1lX3JlZmVycyddLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ3Bob25lX3JlZmVycyddLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ2VtYWlsX3JlZmVycyddLnNldFZhbHVlKG51bGwpO1xuICAgIH1cbiAgICB0aGlzLmNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1snY29kZV9jb2QnXS5zZXRWYWx1ZSh0aGlzLmluaXRpYWxEYXRhLmNvZGUpO1xuICB9XG4gIHNldERhdGFGcm9tVXNlckhpc3RvcnkoKSB7XG4gICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ21hcmtldGluZ19yZWFzb25zJ10uc2V0VmFsdWUobnVsbCk7XG4gICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ3N0dWR5X3JlYXNvbnMnXS5zZXRWYWx1ZShudWxsKTtcbiAgICB0aGlzLmNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1snZGlzYWJpbGl0eSddLnNldFZhbHVlKG51bGwpO1xuICAgIHRoaXMuY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWydoZWFsdGhfcmVnaW1lbiddLnNldFZhbHVlKG51bGwpO1xuICAgIHRoaXMuY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWydvYnNlcnZhdGlvbiddLnNldFZhbHVlKG51bGwpO1xuICAgIHRoaXMuY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWydjb2RlX3JlZmVycyddLnNldFZhbHVlKG51bGwpO1xuICAgIHRoaXMuY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWydjb2RlX2NvZCddLnNldFZhbHVlKG51bGwpO1xuICB9XG5cbiAgY2xlYW5Db21wb25lbnQoKXtcbiAgICB0aGlzLnJlc2V0TG9jYWxTdG9yYWdlKHRoaXMuY29udHJvbHMpO1xuICAgIHRoaXMuY29kRm9ybVN0ZXBGaXZlLnJlc2V0KCk7XG4gIH1cblxuICByZWZlcnJlZFVzZXIoZGF0YTogYW55KXtcbiAgICB0aGlzLm1vZGFsVmlzaWJsZSA9IGZhbHNlO1xuICAgIGlmIChkYXRhKSB7XG4gICAgICB0aGlzLnZpc2JsZVJlZmVycmVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWydjb2RlX3JlZmVycyddLnNldFZhbHVlKGRhdGFbJ2NvZGUnXSk7XG4gICAgICB0aGlzLmNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1snZG9jdW1lbnRfcmVmZXJzJ10uc2V0VmFsdWUoZGF0YVsnaWRfY2FyZCddKTtcbiAgICAgIHRoaXMuY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWyduYW1lX3JlZmVycyddLnNldFZhbHVlKGRhdGFbJ25hbWUnXSk7XG4gICAgICB0aGlzLmNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1sncGhvbmVfcmVmZXJzJ10uc2V0VmFsdWUoZGF0YVsncGhvbmVfbnVtYmVyJ10pO1xuICAgICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ2VtYWlsX3JlZmVycyddLnNldFZhbHVlKGRhdGFbJ2VtYWlsJ10pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZpc2JsZVJlZmVycmVkID0gZmFsc2U7XG4gICAgICB0aGlzLmNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1snY29kZV9yZWZlcnMnXS5zZXRWYWx1ZShudWxsKTtcbiAgICAgIHRoaXMuY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWydkb2N1bWVudF9yZWZlcnMnXS5zZXRWYWx1ZShudWxsKTtcbiAgICAgIHRoaXMuY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWyduYW1lX3JlZmVycyddLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ3Bob25lX3JlZmVycyddLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ2VtYWlsX3JlZmVycyddLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy5jb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ21hcmtldGluZ19yZWFzb25zJ10uc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgb3Blbk1vZGFsUmVmZXJyZWQoKXtcbiAgICB0aGlzLm1vZGFsVmlzaWJsZSA9IHRydWU7XG4gIH1cblxuXG59XG4iLCI8Zm9ybSBhdXRvY29tcGxldGU9XCJvZmZcIiBbZm9ybUdyb3VwXT1cImNvZEZvcm1TdGVwRml2ZVwiIGNsYXNzPVwiZ3JpZFwiPlxuICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1kOmNvbC02XCI+XG4gICAgPGNvZC1tb2RhbC1yZWZlcnJlZFxuICAgICpuZ0lmPVwibW9kYWxWaXNpYmxlXCJcbiAgICBbdmlzaWJpbGl0eV09XCJtb2RhbFZpc2libGVcIlxuICAgICh1c2VyU2VsZWN0KT1cInJlZmVycmVkVXNlcigkZXZlbnQpXCJcbiAgICA+PC9jb2QtbW9kYWwtcmVmZXJyZWQ+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyX3JlZmVycmVkIGZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtZW5kXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVfc2VsZWN0MVwiPlxuICAgICAgICA8aXB0LXNlbGVjdFxuICAgICAgICAgIFtjb250cm9sXT1cImNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1snbWFya2V0aW5nX3JlYXNvbnMnXVwiXG4gICAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJjb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ21hcmtldGluZ19yZWFzb25zJ10udmFsdWVcIlxuICAgICAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RNYXJrZXRpbmdSZWFzb25zKCRldmVudClcIlxuICAgICAgICAgIFtkYXRhXT1cIm1hcmtldGluZ1JlYXNvbnNcIlxuICAgICAgICAgIFtkZWZhdWx0VGV4dF09XCInwr9Dw7NtbyBzZSBlbnRlcsOzIGRlbCBwcm9ncmFtYT8nXCJcbiAgICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgIDwvZGl2PlxuICAgICAgPHAtYnV0dG9uXG4gICAgICAqbmdJZj1cInZpc2JsZVJlZmVycmVkXCJcbiAgICAgIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1zbSB3LW1heFwiXG4gICAgICBsYWJlbD1cIkNhbWJpYXIgUmVmZXJpZG9cIlxuICAgICAgaWNvbj1cInBpIHBpLXN5bmNcIlxuICAgICAgKG9uQ2xpY2spPVwib3Blbk1vZGFsUmVmZXJyZWQoKVwiXG4gICAgPjwvcC1idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8aXB0LWlucHV0XG4gICAgICBbaW5wdXRUeXBlXT1cIid0ZXh0J1wiXG4gICAgICBbcGxhY2VIb2xkZXJdPVwiJ0Rpc2NhcGFjaWRhZCdcIlxuICAgICAgW2NvbnRyb2xdPVwiY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWydkaXNhYmlsaXR5J11cIlxuICAgID48L2lwdC1pbnB1dD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjb2wtMTIgbWQ6Y29sLTZcIj5cbiAgICA8aXB0LXNlbGVjdFxuICAgICAgW2NvbnRyb2xdPVwiY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWydzdHVkeV9yZWFzb25zJ11cIlxuICAgICAgW2luaXRpYWxWYWx1ZV09XCJjb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ3N0dWR5X3JlYXNvbnMnXS52YWx1ZVwiXG4gICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0U3R1ZHlSZWFzb25zKCRldmVudClcIlxuICAgICAgW2RhdGFdPVwic3R1ZHlSZWFzb25zXCJcbiAgICAgIFtkZWZhdWx0VGV4dF09XCInTW90aXZvJ1wiXG4gICAgPjwvaXB0LXNlbGVjdD5cbiAgICA8aXB0LWlucHV0XG4gICAgICBbaW5wdXRUeXBlXT1cIid0ZXh0J1wiXG4gICAgICBbcGxhY2VIb2xkZXJdPVwiJ1LDqWdpbWVuIGRlIHNhbHVkJ1wiXG4gICAgICBbY29udHJvbF09XCJjb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ2hlYWx0aF9yZWdpbWVuJ11cIlxuICAgID48L2lwdC1pbnB1dD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICA8aDMgKm5nSWY9XCJ2aXNibGVSZWZlcnJlZFwiIGNsYXNzPVwicmVmZXJyZWRfdGl0bGVcIj5EYXRvcyBkZWwgcmVmZXJpZG88L2gzPlxuICAgIDxkaXYgKm5nSWY9XCJ2aXNibGVSZWZlcnJlZFwiIGNsYXNzPVwicmVmZXJyZWRfdXNlcl9kYXRhXCI+XG4gICAgICA8aXB0LWlucHV0XG4gICAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidEb2N1bWVudG8nXCJcbiAgICAgICAgW2NvbnRyb2xdPVwiY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWydkb2N1bWVudF9yZWZlcnMnXVwiXG4gICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICA8aXB0LWlucHV0XG4gICAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidOb21icmVzJ1wiXG4gICAgICAgIFtjb250cm9sXT1cImNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1snbmFtZV9yZWZlcnMnXVwiXG4gICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICA8aXB0LWlucHV0XG4gICAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidUZWzDqWZvbm8nXCJcbiAgICAgICAgW2NvbnRyb2xdPVwiY29kRm9ybVN0ZXBGaXZlLmNvbnRyb2xzWydwaG9uZV9yZWZlcnMnXVwiXG4gICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICA8aXB0LWlucHV0XG4gICAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidFbWFpbCdcIlxuICAgICAgICBbY29udHJvbF09XCJjb2RGb3JtU3RlcEZpdmUuY29udHJvbHNbJ2VtYWlsX3JlZmVycyddXCJcbiAgICAgID48L2lwdC1pbnB1dD5cbiAgICA8L2Rpdj5cbiAgICA8c3BhbiBjbGFzcz1cInAtZmxvYXQtbGFiZWxcIj5cbiAgICAgIDx0ZXh0YXJlYVxuICAgICAgICBpZD1cImZsb2F0LWlucHV0XCJcbiAgICAgICAgcm93cz1cIjRcIlxuICAgICAgICBjb2xzPVwiMzBcIlxuICAgICAgICBwSW5wdXRUZXh0YXJlYVxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJvYnNlcnZhdGlvblwiXG4gICAgICA+PC90ZXh0YXJlYT5cbiAgICAgIDxsYWJlbCBmb3I9XCJmbG9hdC1pbnB1dFwiPk9ic2VydmFjaW9uZXM8L2xhYmVsPlxuICAgIDwvc3Bhbj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAganVzdGlmeS1jb250ZW50LWJldHdlZW4gZ2FwLTJcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBtdWx0aWN1bHR1cmFsaXRpZXM7IGluZGV4IGFzIGlcIlxuICAgICAgICBjbGFzcz1cImZpZWxkLWNoZWNrYm94IG10LTQgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgPlxuICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCInbXVsdGljdWx0dXJhbGlzbScgKyAnXycgKyAoaSArIDEpXCJcbiAgICAgICAgICBjbGFzcz1cImV4YW1wbGUtbWFyZ2luXCJcbiAgICAgICAgPjwvbWF0LWNoZWNrYm94PlxuICAgICAgICA8bGFiZWwgW2Zvcl09XCJvcHRpb24uY29kZVwiPnt7IG9wdGlvbi5uYW1lIH19PC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiY29sLTEyIHAtNCBmb250LWJvbGRcIj5cbiAgICA8cD5cbiAgICAgICogRWwgZXN0dWRpYW50ZSBvIHRpdHVsYXIgc2UgY29tcHJvbWV0ZW4gYSBjYW5jZWxhciBsYXMgY3VvdGFzXG4gICAgICBlc3RhYmxlY2lkYXMgZW4gZXN0ZSBjb250cmF0bywgbG9zIHByaW1lcm9zIDUgKGNpbmNvKSBkw61hcyBkZWwgbWVzLiBFblxuICAgICAgY2FzbyBkZSBxdWVyZXIgcmV0aXJhcnNlLCBkZWJlcsOhIGluZm9ybWFyIHBvciBlc2NyaXRvIDMwICh0cmVpbnRhKSBkw61hc1xuICAgICAgYW50ZXMgeSBjYW5jZWxhciBsbyBjb3JyZXNwb25kaWVudGUgaGFzdGEgbGEgZmVjaGEgZGVmaW5pZGEgZGUgcmV0aXJvLFxuICAgICAgcGFyYSBwb2RlciBvYnRlbmVyIHN1IHBheiB5IHNhbHZvLlxuICAgIDwvcD5cbiAgICA8YnIgLz48YnIgLz5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMlwiPlxuICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0ZXJtc1wiXG4gICAgICAgIGNsYXNzPVwiZXhhbXBsZS1tYXJnaW5cIlxuICAgICAgPjwvbWF0LWNoZWNrYm94PlxuICAgICAgPCEtLSA8cC1jaGVja2JveCBbZm9ybUNvbnRyb2xdPVwiZ2V0Q2hlY2tib3hDb250cm9sKClcIj48L3AtY2hlY2tib3g+IC0tPlxuICAgICAgPCEtLSA8aXB0LWNoZWNrYm94IFtjb250cm9sXT1cImNvZEZvcm1TdGVwRml2ZS5jb250cm9sc1sndGVybXMnXVwiIFtjaGVja2JveE9wdGlvbl09XCJ0ZXJtc0NoZWNrYm94U3RhdHVzXCI+PC9pcHQtY2hlY2tib3g+IC0tPlxuICAgICAgPHA+XG4gICAgICAgIERFQ0xBUk8gSEFCRVIgTEXDjURPIFkgQUNFUFRPIExPUyBUw4lSTUlOT1MgWSBDT05ESUNJT05FUyBERSBMQVMgUE9Mw41USUNBU1xuICAgICAgICBFU1RBQkxFQ0lEQVMgRU4gTEEgSU5TVElUVUNJw5NOLlxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZm9ybT5cblxuPGRpdiBjbGFzcz1cImZsZXggbXQtMyBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgPHNwYW5cbiAgICAqbmdJZj1cIlxuICAgICAgKGNvZEZvcm1TdGVwRml2ZS5pbnZhbGlkICYmIGNvZEZvcm1TdGVwRml2ZS50b3VjaGVkKSB8fFxuICAgICAgKCF0ZXJtc0NoZWNrYm94U3RhdHVzICYmIGNvZEZvcm1TdGVwRml2ZS50b3VjaGVkKVxuICAgIFwiXG4gICAgY2xhc3M9XCJcbiAgICAgIHRleHQtcmVkLTUwMFxuICAgICAgZm9udC1ib2xkXG4gICAgICB0ZXh0LWNlbnRlclxuICAgICAgbXQtMVxuICAgICAgcHktMlxuICAgICAgYmctcmVkLTEwMFxuICAgICAgdy1mdWxsXG4gICAgICBib3JkZXItcm91bmQteGxcbiAgICBcIlxuICAgID57eyBlcnJvck1lc3NhZ2UgfX08L3NwYW5cbiAgPlxuICA8YnV0dG9uXG4gIHR5cGU9XCJzdWJtaXRcIlxuICBbY2xhc3NdPVwiaXNFZGl0Q29kID8gJ21sLWF1dG8geWVsbG93LTMwMCBwLWJ1dHRvbi1zbScgOiAnbWwtYXV0byBwLWJ1dHRvbi1zdWNjZXNzIHAtYnV0dG9uLXNtJ1wiXG4gIChjbGljayk9XCJzZW5kRm9ybSgpXCJcbiAgcEJ1dHRvblxuICBbbGFiZWxdPVwic2VuZEZvcm1Nc2dcIlxuICBpY29uPVwicGkgcGktY2hlY2tcIlxuPjwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
|